Ошибка режима доступа к файлу базы данных (1Cv8.1CD)
Проявление ошибки режима доступа к файлу базы довольно частая ошибка, но имеет простые причины
Работоспособность системы
Нарушается, является критической ошибкой
Причины
Как правило, возникает при доступе к файловой базе:
- при открытии базы
- при обмене через com-соединение (например бухгалтерия-управление торговлей)
- при переходе на новый релиз (например БП2.0 — БП.30) в момент начала переноса данных
Возможные пути решения (в порядке уменьшения вероятности):
- Проверить флаг «только чтение»в свойства файла (должно быть снято)
- Проверить права доступа к файл для текущего пользователя или пользователя Сервера 1C (Вкладка Безопасность в свойствах)
- Проверить настройки антивируса (возможно установлены блокировки)
- Проверить не запущены ли скрытые процессы 1С (отсутствует окно, но в процессах есть 1cv8.exe, после того, как вы закрыли окно ошибки)
- Перезагрузить сервер/компьютер (возможно проблемы авторизации или другие временные)
Вы обязательно истратите слишком много, если захотите сэкономить на хорошей рекламе. Это подобно покупке билета на три четверти пути в Европу: вы потратили деньги, но туда не доехали.
|
|||
Razor
03.08.11 — 12:54 |
Добрый день!Буду признателен любым советам! Добавил IUSR в права на доступ к каталогу базы и bin, выполнил webinst.exe. Создал web-сервис в 1с и выбрал опубликовать на IIS в папке «c:/inetpub/wwwroot/web», на что 1с выдает ошибку — «ошибка ффайловой операции» или если создать каталог вручную — «ошибка доступа к файлу», как будто не хватает прав. В чем может быть проблема и можно ли опубликовать веб-сервис в другую папку, а потом в IIS создать виртуальный каталог и указать физический путь к этой директории. Я так понял, что 8.2 не создает файла *.1cws, а только файлы web.config и default.vrd, но как тогда указывать путь к веб-сервису? |
||
Razor
1 — 03.08.11 — 17:59 |
Наверх |
||
Razor
2 — 04.08.11 — 16:53 |
ап |
||
SeraFim
3 — 05.08.11 — 05:31 |
Все верно понял. насчет IIS не могу подсказать, не смог настроить, забил и настроил Апач. В default.vrd будет прописано имя файлика. доступ к нему будет через …/ws/*.1cws |
||
Razor
4 — 05.08.11 — 12:55 |
а не подскажешь какое-нибудь подробное описание по настроке апач для веб-сервисов |
||
Просто Лёха
5 — 05.08.11 — 13:04 |
(4) 1С предприятие руководство администратора |
||
sikuda
6 — 05.08.11 — 13:14 |
У меня на x64 не получилось. Все с правами ругуется. 7.0 работает. |
||
Razor
7 — 05.08.11 — 14:28 |
С правами для публикации я разобрался — нужно запускать 1с от имени администратора — все публикуется в любую папку, но как-либо обратиться не получается 7.0 — версия IIS? На какой оси запускал? |
||
Razor
8 — 05.08.11 — 14:33 |
(5) я читал его, но там двольно кратко описано, ничего про конфигурационный файл апача — то есть просто опубликовать |
||
Просто Лёха
9 — 05.08.11 — 14:56 |
(8) Да ладно, ничего про конфиг апача? Глава 14. Настройка веб-серверов для работы с 1С:Предприятием 2.2.2. Apache 2.2 Создать каталог, где будут располагаться файлы Web-сервисов. Добавить в конфигурационный файл Apache (conf/httpd.conf) регистрацию модуля обработки Web-сервисов системы 1С:Предприятие 8. LoadModule _1cws_module /opt/1C/v8.2/i386/wsap22.so Добавить в конфигурационный файл Apache регистрацию виртуальной директории доступа к Web-сервисам, например: Alias/ws/var/www <Location/ws> Allow from all DirectorySlash Off SetHandler 1cws-process </Location> Дать права пользователю, от лица которого запускается Apache, на каталог bin файлов конкретной версии системы 1C:Предприятие 8 (чтение и выполнение) и каталог информационной базы (чтение и запись). |
||
Razor
10 — 05.08.11 — 15:54 |
Точно, спаисбо, а как посмотреть пользователя под которым работает апач?? |
||
Просто Лёха
11 — 05.08.11 — 17:03 |
(10) Внимательно почитай: http://www.codenet.ru/webmast/apache/AMP/ |
||
Razor
12 — 08.08.11 — 13:10 |
Вроде бы получилось опубликовать на IIS 7.5, локально подключаюсь, ввожу ws ссылку http://localhost/web/ws/rooms.1cws?wsdl, прохожу авторизацию и после этого появляется ошибка: Ошибка при выполнении файловой операции ‘http://ab:xxxxxxx@localhost/web/ws/rooms.1cws?wsdl’ по причине: Ошибка работы с Интернет: внутренняя ошибка сервера (500). <soap:Envelope xmlns:soap=»http://schemas.xmlsoap.org/soap/envelope/»> <soap:Header/> <soap:Body> <soap:Fault> <faultcode>soap:Client</faultcode> <faultstring>Неверный аргумент. </faultstring> <detail>Неверный аргумент. </detail> </soap:Fault> </soap:Body> </soap:Envelope> С чем это может быть связано — неправильная структура самого web-сервиса?? |
||
sikuda
13 — 08.08.11 — 13:19 |
Это скорее всего ошибка в пакете XDTO, который у тебя идет входным параметром. Проверь пространство имен. |
||
Razor
14 — 08.08.11 — 13:22 |
Пространство имен должно совпадать с именем узла веб-сервера я так понял, то есть в моем случае — «http://localhost/web»? |
||
Razor 15 — 08.08.11 — 13:47 |
да, я правильно понял, спасибо |
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену… по-видимому, нам следует остановиться на чем-то одном из двух. |
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку «Обновить» в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Самая частая причина ошибки режима доступа к файлу базы данных (файл 1Cv8.1CD в версии 1C 8.3) — права доступа «только на чтение». Они устанавливаются автоматически при копировании файлов с DVD, CD-диска или иного внешнего носителя.
В результате 1C видит файл, но не может что-то записать в него или считать оттуда из-за отсутствия прав. Проблема с доступом «только для чтения» актуальна для Windows. В MacOS и Ubuntu другие проблемы — к примеру, ошибка появляется при отсутствии root-прав у пользователя.
Быстрые решения (от наиболее вероятного — к наименее):
- Убрать флажок «только для чтения» в Свойствах файла.
- Проверить права доступа пользователей: текущего и Сервера 1C (вкладка Безопасность).
- Открыть Диспетчер задач и завершить скрытые процессы 1cv8.exe.
- Проверить, не блокирует ли антивирус файлы или процессы.
- Перезагрузить компьютер и, если есть возможность, рабочий сервер.
Подробные инструкции:
- Решение для 1С на Windows
- Решение для Mac OS и Ubuntu
Решение ошибки на Windows
Если режим доступа к файлу БД был нарушен из-за копирования или переноса файлов, проблема решается в несколько кликов. Нужно зайти в свойства базы данных и снять галочку «только для чтения», чтобы 1С смог получить доступ к содержимому.
- Нажать правой кнопкой мыши на базе данных 1Cv8.1CD.
- В контекстном меню выбрать Свойства.
- В открывшемся окне перейти на вкладку Общие.
- Убрать галочку Только для чтения, сохранить изменения.
В 90% случаев эти действия помогают, поскольку ошибка из-за прав доступа при копировании — самая частая и самая безобидная. Ошибка режима доступа к файлам базы данных может возникать из-за других проблем с доступом или безопасностью.
- Проверить права доступа к базам данных для всех пользователей. Выделить папку или файлы — 1Cv8.1CD, 1Cv8.log и другие связанные с БД, если есть. Нажать по ним правой кнопкой мыши, перейти в Свойства -> Безопасность и выбрать Добавить -> Полные права для всех нужных пользователей. Если при подключении к БД не указывается пользователь, значит работа ведется под аккаунтом Гостя — ему необходимо установить полные права.
- Добавить файл 1Cv8.1CD или другую базу данных (разрешение *.1CD) в списки исключений антивирусов. Касперский и ряд других популярных антивирусных программ могут часто перепроверять этот файл, что приводит к сбоям при подключении.
- Ошибка может возникать, если база данных располагается на диске C://, если их несколько. Решение — перенести БД на диск D:// (буква диска может быть другой).
Сложный случай — с «плавающей ошибкой», когда она то возникает, то пропадает. Это значит, что к базе данных в это время подключается какая-то другая программа, поэтому запись или чтение ограничено. Исправить проблему не получится, если не найти, каким еще софтом используется программа.
Самый распространенный вариант — антивирусы регулярно сканируют файл на предмет угроз. Вариант хуже — на компьютере есть вирусы или другие нежелательные программы, использующие для каких-то целей базу данных.
Решение для Mac OS и Ubuntu
Ошибка с режимом доступа по сети к базе данных 1Cv8.1cd возникает и на MacOS/Ubuntu. Решение простое — если 1C запускать в режиме root, то проблемы с доступом к файлу БД не возникает.
Чтобы пользователь мог работать без root-прав, нужно:
- Сделать открытую папку в разделе /home.
- Дать полные права для этой папки для нужного пользователя или группы пользователей.
Для назначения прав можно воспользоваться командой %ГруппаПользователей ALL=NOPASSWD: /bin/mount, /bin/umount. Суть проблемы с правами аналогична Windows, только на Mac OS и Ubuntu сложнее организована система прав доступа к файлам.
Версия 1C 8.3.7.1845 и выше для Mac OS имеет статус бета-версии. В этой версии не поддерживается работа с информационной базой, если она расположена на сетевом ресурсе (подробнее). Иначе говоря, 1C работает только с локальными БД и не будет работать с сетевыми.
Ошибка доступа к файлу ‘…exec.lck’. 5(0x00000005): Отказано в доступе.
Описание ошибки:
Ошибка в конфигураторе базы 1С 8 при попытке сохранения изменений конфигурации:
Ошибка доступа к файлу ‘…exec.lck’. 5(0x00000005): Отказано в доступе.
А так же похожая ошибка:
Ошибка при выполнении операции с информационной базой
Ошибка доступа к файлу ‘…1Cv8.cgr.cfl’. 5(0x00000005):
Отказано в доступе.
Найденные решения:
Нажатие на изображении увеличит его
Подобная ошибка «Ошибка доступа к файлу. Отказано в доступе» часто встречается при попытке запустить сеанс работы с базой данной, если база файловая, и на каталог с базой не предоставлены права пользователю рабочего места.
Например попытка запуска сеанса работы с базой 1С в режиме 1С: Предприятие.
Будет сопровождаться ошибкой
Ошибка при выполнении операции с информационной базой
Ошибка режима доступа к файлу базы данных ‘D:1C Arhiv[каталог_базы]/1Cv8.1CD’
по причине:
Ошибка режима доступа к файлу базы данных ‘D:1C Arhiv[каталог_базы]/1Cv8.1CD’
Нажатие на изображении увеличит его
А при попытке открыть базу 1С 8 в режиме конфигуратор будет ожидать похожая ошибка:
Ошибка при выполнении операции с информационной базой
Ошибка доступа к файлу ‘D:1C Arhiv[каталог_базы]1Cv8.cgr.cfl’. 5(0x00000005): Отказано в доступе.
по причине:
Ошибка доступа к файлу ‘D:1C Arhivк[каталог_базы]1Cv8.cgr.cfl’. 5(0x00000005): Отказано в доступе.
Нажатие на изображении увеличит его
Если Вы встретили все вышеперечисленные формулировки ошибок (наименования фалов могут быть разными, как можно заметить), то скорее всего проблема заключается в нехватке прав пользователя на каталог базы 1С 8.
В данном случае было удивительно, что возникает нехватка прав, хотя получилось запустить базу в режиме конфигуратора и даже внести изменения в код конфигурации. Но вот после нажатия на кнопку «Обновить конфигурацию базы данных (F7)» и в процессе обновления возникала ошибка: «Ошибка доступа к файлу ‘…exec.lck’. 5(0x00000005): Отказано в доступе.»
Было сделано обращение к системному администратору сервера, т.к. он настраивал исходно права и обозначено требование проверить и права и предоставить их для каталога базы 1С, в которой ошибка возникала. Права были предоставлены и ошибка больше не возникала.
Если у Вас достаточно прав на рабочем месте или на сервере, то можно попробовать проверить и изменить настройку доступа к каталогу базы самостоятельно. Если прав нет, то обращаемся к системному администратору с указанием на причину того, что на каталог файловой базы 1С 8 не хватает прав у пользователя рабочего места.
Итак, правой кнопкой на каталоге с базой открываем контекстное меню и переходим в «Свойства»
В открывшемся окне переходим на вкладку «Безопасность». Проверяем для Вашего пользователя из списка «Группы и пользователи» наличие флажков в колонке «Запретить» списка «Разрешения для группы …». Если флажки есть, то их необходимо отключить. Для этого нажимаем кнопку «Изменить».
В открывшемся окне «Разрешения для группы» в списке «Группы и пользователи» выделяя строку с пользователем или группой и в таблице «Разрешения для группы …» ниже в колонке «Запретить» убираем все флажки. Нажимаем кнопку «ОК» в этой форме. И кнопкой «ОК» закрываем форму «Свойства». Пробуем запустить базу. Если нет других «хитрых» настроек прав доступа пользователей на сервере, то это должно помочь и база 1С 8 должна запуститься.
В остальных случаях, если указанное общее действие не помогло, то следует обратиться к системному администратору, объяснив, что … дословно «не хватает прав у пользователя(ей) на папку(каталог) базы 1С».
Оцените, помогло ли Вам предоставленное описание решения ошибки?
© www.azhur-c.ru 2014-2020. Все права защищены. Использование текстов и изображений с данной страницы без письменного разрешения владельца запрещено. При использовании материалов с данной страницы обязательно указание ссылки на данную страницу.
17-03-2022
Журавлев А.С.
(Сайт azhur-c.ru)
+10
Ошибка режима доступа к файлу & означает, что программа 1С находит файл 1cv8.1cd, но не может либо считать, либо записать данные в этот файл!
Способы решения:
Windows:
1. Не обходимо дать права доступа к файлам базы. Сделать доступ, чтоб файлы можно было по сети изменять и во вкладке безопасности пользователя не забудьте добавить — полные права.
Выделяем папку или файлы (у меня вот эти — 1Cv8.1CD,1Cv8.log и т.д.), жмем правой кнопкой мыши на них, свойства — безопасность, и для пользователя под которым подключаетесь к этим файлам устанавливаете полные права доступа. Если пользователя не указываете, значит вы подключаетесь по Гостем — установите для него полные права
2. Добавь 1Cv8.1CD в список исключений антивирусника, Каспер и другие антивирусы очень любят его перепроверять…
Linux:
Чуть сложнее дело обстоит в линуксе: сложнее организованы правила доступа к файлам, но и там есть несколько выходов. Например, если вы запускаете програму в режиме root & проблем не будет. Если вам нужно организовать работу для пользователя, но не давать ему права root, можете сделать открытую папку в разделе /home и дать на нее полные права для одного или группы пользователей (%ГруппаПользователей ALL=NOPASSWD: /bin/mount, /bin/umount).
|
|||
Valadis
19.08.13 — 14:06 |
Здраствуйте! |
||
eklmn 1 — 19.08.13 — 14:41 |
права на папку |
В данной статье я подробно опишу процесс организации веб- доступа к базам данных «1С:Предприятие» 8.3 на веб-сервере IIS (Internet Information Server), входящего в поставку Microsoft Windows Server. Для более старых версий «1С:Предприятие» (8.1 и 8.2) алгоритм публикации баз данных в целом аналогичен. Будет рассмотрен алгоритм настройки IIS для работы «1С:Предприятие», а также описан процесс публикации баз данных на веб-сервере как для 32-разрядного, так и для 64-разрядного модуля расширения веб-сервера.
0. Оглавление
- Что понадобится
- Установка веб-сервера IIS
- Установка компонент «1С:Предприятие»
- Настройка операционной системы
- Публикация базы данных на веб-сервере
- Настройка IIS для использования 32-разрядного модуля расширения веб-сервера
- Настройка IIS для использования 64-разрядного модуля расширения веб-сервера
- Подключение к опубликованной информационной базе через веб-браузер
- Подключение к опубликованной информационной базе через клиент «1С:Предприятия»
- Конфигурационные файлы виртуального каталога
- Файл default.vrd
- Файл web.config
1. Что понадобится
- Компьютер отвечающий минимальным системным требованиям для работы веб-сервера под управлением одной из операционных систем:
- Microsoft Windows Server 2012 (R2)
- Microsoft Windows Server 2008 (R2)
- Права локального администратора на данном компьютере.
- Дистрибутив для установки компонент «1С:Предприятие». Для настройки 64-разрядного модуля расширения веб-сервера, дистрибутив для установки 64-разрядного сервера «1С:Предприятие». В данном примере используется версия 8.3.4.389. Для более старых версий «1С:Предприятие» (8.1 и 8.2) алгоритм публикации баз данных в целом аналогичен.
2. Установка веб-сервера IIS
Устанавливаем веб-сервер Internet Information Server, который по умолчанию входит в поставку Microsoft Windows Server. При установке обязательно выбираем компоненты:
- Общие функции HTTP (Common HTTP Features)
- Статическое содержимое (Static Content)
- Документ по умолчанию (Default Document)
- Обзор каталогов (Directory Browsing)
- Ошибки HTTP (HTTP Errors)
- Разработка приложений (Application Development)
- ASP
- ASP.NET 3.5
- Расширяемость .NET 3.5 (.NET Extensibility 3.5)
- Расширения ISAPI (ISAPI Extensions)
- Фильтры ISAPI (ISAPI Filters)
- Исправление и диагностика (Health and Diagnostics)
- Ведение журнала HTTP (HTTP Logging)
- Монитор запросов (Request Monitor)
- Средства управления (Management Tools)
- Консоль управления IIS (IIS Management Console)
Подробно про процесс развертывания веб-сервера IIS я писал:
- В Microsoft Windows Server 2012 (R2) — здесь. IIS версии 8, после установки должны увидеть страницу Default Web Site вида:
- В Microsoft Windows Server 2008 (R2) — здесь. IIS версии 7, после установки должны увидеть страницу Default Web Site вида:
3. Установка компонент «1С:Предприятие»
На этот же сервер, где развернут веб-сервер IIS, устанавливаем «1С:Предприятие» (32-разрядные компоненты) обязательно выбрав при установке компоненты:
- 1С:Предприятие
- Модули расширения веб-сервера
Если планируется настроить 64-разрядный модуль расширения веб-сервера, то необходимо дополнительно запустить программу установки 64-разрядного сервера из соответствующей поставки «1С:Предприятие» и установить компоненту:
- Модуль расширения веб-сервера
4. Настройка операционной системы
Теперь необходимо установить необходимые права на ключевые папки, используемые при работе веб-доступа к базам данных «1С:Предприятие». Для каталога хранения файлов веб-сайтов, опубликованных на веб-сервере (по умолчанию C:inetpubwwwroot ) необходимо дать полные права группе «Пользователи» (Users). В принципе, этот шаг можно пропустить, но тогда для публикации или изменения публикации базы данных надо будет запускать «1С:Предприятие» от имени администратора. Для настройки безопасности данного каталога, кликаем по нему правой кнопкой мыши и в контекстном меню выбираем «Свойства» (Properties).
В открывшемся окне свойств, переходим на вкладку «Безопасность» (Security) и нажимаем кнопку «Изменить» (Edit…), для изменения действующих разрешений. Появится окно разрешений для данного каталога. В списке Групп или пользователей (Groups or user names) выделим группу «Пользователи» (Users) и в списке разрешений для выбранной группы установим флаг «Польный доступ» (Full control). Затем нажмем «Применить» (Apply) для записи изменений и закроем все окна при помощи кнопки «ОК».
Далее необходимо дать полные права на каталог с установленными файлами «1С:Предприятие» (по умолчанию C:Program Files (x86)1cv8 для 32-разрядного модуля расширения и C:Program Files1cv8 для 64-разрядного) группе IIS_IUSRS. Для этого выполняем аналогичные описанным выше действия, с той лишь разницей, что для того чтобы необходимая группа появилась в списке «Группы или пользователи» (Groups or user names) необходимо нажать расположенную под списком кнопку «Добавить» (Add..), а в окне выбора групп или пользователей нажать «Дополнительно» (Advanced…).
Затем нажимаем расположенную справа кнопку «Поиск» (Find Now), после чего выбираем необходимую группу IIS_IUSRS в таблице результатов поиска и нажимаем «ОК».
Группа IIS_IUSRS появится в списке групп или пользователей. Даем ей полные права на на выбранную директорию и нажимаем «Применить» (Apply) для сохранения изменений.
Ну и наконец, если публикация выполняется для файловой базы, необходимо также дать группе IIS_IUSRS полные права на каталог с расположенными файлами данной информационной базы.
5. Публикация базы данных на веб-сервере
Переходим к непосредственной публикации базы данных на веб-сервере. Для этого запускаем «1С:Предприятие» в режиме Конфигуратор для той базы, которую требуется опубликовать. Затем в меню выбираем «Администрирование» — «Публикация на веб-сервере…»
Откроется окно настройки свойств публикации на веб-сервере. Основные поля необходимые для публикации уже заполнены по умолчанию:
- Имя виртуального каталога — имя по которому будет происходить обращение к база данных на веб-сервере. Может состоять только из символов латинского алфавита.
- Веб сервер — выбирается из списка найденных на текущем компьютере веб-серверов. В нашем случае это Internet Information Services.
- Каталог — физическое расположение каталога, в котором будут располагаться файлы виртуального приложения.
- Соответствующими флагами можно указать типы клиентов для публикации, а также указать возможность публикации Web-сервисов. В расположенной ниже таблице можно отредактировать список Web-сервисов которые будут опубликованы, а также в столбце «Адрес» изменить синоним, по которому будет происходить обращение к данному Web-сервису.
- Также для веб-сервера IIS есть возможность указать необходимость выполнения аутентификации на веб-сервере средствами ОС, установив соответствующий флаг.
Выбрав необходимые настройки публикации нажимаем «Опубликовать».
Если публикация прошла без ошибок, увидим соответствующее сообщение.
Публикация на веб-сервере IIS всегда выполняется для веб-сайта по умолчанию и для пула приложения по умолчанию. Стоит иметь ввиду, что при выполнении публикации из конфигуратора будет зарегистрирован 32-разрядный модуль расширения веб-сервера, а используемый по умолчанию пул приложений — DefaultAppPool — без настройки работает только с 64-разрядными приложениями. Соответственно, дальнейшие действия зависят от разрядности модуля расширения веб-сервера, который планируется использовать. Для 32-разрядного модуля расширения веб-сервера, необходимо разрешить пулу приложений использовать 32-разрядные приложения, либо же зарегистрировать 64-разрядный модуль расширения веб-сервера. Об этом пойдет речь ниже
6. Настройка IIS для использования 32-разрядного модуля расширения веб-сервера
Запустим Диспетчер служб IIS (Internet Information Services (IIS) Manager). Сделать это можно из Диспетчера серверов (Server Manager) выбрав в меню пункт «Средства» (Tools) — «Диспетчер служб IIS» (Internet Information Services (IIS) Manager).
Здесь, развернув дерево в окне подключений, увидим, что для веб-сайта по умолчанию — Default Web Site — появился преобразованный в приложение виртуальный каталог с именем, которое мы задавали при публикации базы данных. Для завершения публикации осталось только разрешить 32-разрядные приложения для пула приложений по умолчанию. Для этого перейдем в дереве подключений на вкладку «Пулы приложений» (Application Pools).
В списке пулов приложений найдем пул с именем DefaultAppPool. Кликнем по нему правой кнопкой мыши и в контекстном меню выберем пункт «Дополнительные параметры» (Advanced Settings).
В открывшемся окне параметров пула приложения, в группе «Общие» (General) найдем пункт «Разрешены 32-разрядные приложения» (Enable 32-Bit Applications) и установим значение параметра равным True. Затем сохраним изменения нажав «ОК».
7. Настройка IIS для использования 64-разрядного модуля расширения веб-сервера
Зарегистрировать 64-разрядный модуль расширения веб-сервера можно с помощью утилиты webinst.exe соответствующей версии, расположенной в каталоге bin, каталога с установленной программой «1С:Предприятие», либо воспользоваться приведенным ниже способом.
Запустим Диспетчер служб IIS (Internet Information Services (IIS) Manager). Сделать это можно из Диспетчера серверов (Server Manager) выбрав в меню пункт «Средства» (Tools) — «Диспетчер служб IIS» (Internet Information Services (IIS) Manager).
Здесь, развернув дерево в окне подключений, увидим, что для веб-сайта по умолчанию — Default Web Site — появился преобразованный в приложение виртуальный каталог с именем, которым мы задавали при публикации базы данных. Для завершения публикации осталось только указать данному приложению использовать 64-разрядный обработчик запросов. Для этого откроем страницу настройки сопоставления обработчиков для данного виртуально каталога, выбрав пункт «Сопоставление обработчиков» (Handler Mappings) на начальной странице приложения.
В таблице сопоставлений обработчиков найдем обработчик «1С Web-service Extension». Откроем данный обработчик, кликнув 2 раза по соответствующей строке в таблице.
Отредактируем обработчик, заменив путь к исполняемой dll 32-разрядного модуля расширения веб-сервера, который выбран в данный момент, на путь к 64-разрядной версии библиотеки. В данном примере меняем путь c «C:Program Files (x86)1cv88.3.4.389binwsisapi.dll» на «C:Program Files1cv88.3.4.389binwsisapi.dll» воспользовавшись кнопкой выбора. Изменив путь нажимаем «ОК» для сохранения изменений.
8. Подключение к опубликованной информационной базе через веб-браузер
Ну вот вроде и все. Для подключений к только что опубликованной базе данных, запускаем Internet Explorer, и в строке адреса вводим путь вида http://localhost/<Имя публикации информационной базы>. В данном примере это http://localhost/DemoAccounting/.
К данной информационной базе также можно подключиться и с любого компьютера в сети, обратившись к веб-серверу по его внутреннему (или если прокинут порт 80, по внешнему) IP-адресу.
В этом случае, для корректной работы «1С:Предприятие», имя домена, на который идет обращение (или IP-адрес) должен быть добавлен в надежные узлы Internet Explorer, а также для него должны быть разрешены всплывающие окна. Подробнее про настройку Internet Explorer для работы веб-клиента «1С:Предприятие» читайте здесь.
9. Подключение к опубликованной информационной базе через клиент «1С:Предприятия»
К опубликованной на веб-сервере информационной базе можно подключиться и с помощью тонкого клиента «1С:Предприятия». Для подключения откроем окно запуска «1С:Предприятие» и нажмем кнопку «Добавить» для добавления информационной базы.
В окне добавления информационной базы/группы установим переключатель в «Добавление в список существующей информационной базы» и нажмем «Далее».
Введем имя базы данных, как она будет отображаться в списке информационных баз (должно быть уникальным для данного списка), тип расположения выберем «На веб-сервере» и нажмем «Далее».
Вводим строку адреса для подключения к информационной базе (без префикса /ru_RU/). Также здесь можно указать параметры прокси-сервера (если есть) и способ аутентификации на веб-сервере. Указав необходимые настройки снова жмем «Далее».
Указываем параметры запуска для информационной базы и нажимаем «Готово» для завершения работы мастера.
После чего данная информационная база появится в списке баз окна запуска «1С:Предприятие». Обратим внимание что режим запуска Конфигуратор недоступен для данного типа подключения. Нажимаем «1С:Предприятие» для подключения к информационной базе.
10. Конфигурационные файлы виртуального каталога
Рассмотрим подробнее структуру файлов, которые были созданы в процессе публикации. Если веб-доступ к опубликованной информационной базе по каким-то причинам не заработал, конфигурационные файлы можно отредактировать вручную, для достижения желаемого результата (конфигурационные файлы из данной статьи для 64-разрядного модуля расширения веб-сервера можно скачать здесь).
Перейдем в каталог, который мы указывали во время публикации базы данных. В нем увидим два файла:
- default.vrd
- web.config
Оба файла доступны для просмотра и редактирования с помощью любого текстового редактора, например программы «Блокнот» (Notepad). Рассмотрим структуру этих файлов подробнее.
10.1. Файл default.vrd
В файле default.vrd описываются опубликованные Web-сервисы (элемент <ws>), а также указывается имя виртуального приложения (атрибут base) и строка подключения к информационной базе «1С:Предприятие» (атрибут ib). В данном примере для файловой информационной базы, строка подключения будет следующей:
ib="File="C:1C_BASEDemoAccounting";"
Как видно из примера, если в строке подключения встречаются символы, недопустимые с точки зрения стандарта XML (http://www.w3.org/TR/xml11/), они должны быть заменены соответствующим образом.
В строке подключения можно указать логин и пароль пользователя. В этом случае, подключение к информационной базе будет выполняться от имени указанного пользователя. Например, для подключения от имени пользователя Продавец, строка подключения будет следующей:
ib="File="C:1C_BASEDemoAccounting";Usr=Продавец;Pwd=123;"
Для серверной информационной базы строка подключения будет иметь вид:
ib="Srvr="WIN2012"e;;Ref="e;Accounting"e;;"
Где WIN2012 — имя кластера серверов «1С:Предприятие», а Accounting — имя базы данных в кластере.
Подробнее про структуру данного файла можно почитать в книге «Руководство администратора» 2-е издание , Приложение 2, глава 3.12.
10.2. Файл web.config
Файл web.config — это файл, определяющий параметры для ASP.NET web-приложения. В каждом web-приложении должен быть файл web.config, находящийся в его корневом каталоге. Наш виртуальный каталог не является исключением. В текущем файле содержатся данные об обработчике «1С Web-service Extension», обрабатывающем запросы к данному приложению. Обработчик настроен таким образом, что все запросы передаются библиотеке wsisapi.dll, расположенной в каталоге bin, каталога с файлами «1С:Предприятие». В случае использования серверных информационных баз, версия библиотеки должна соответствовать версии кластера серверов «1С:Предприятия».
Данный обработчик можно найти (или добавить, если его нет) в Диспетчере служб IIS. Для этого необходимо выделить вкладку с текущим приложением и в окне свойств выбрать пункт «Сопоставления обработчиков» (Handler Mappings).
В таблице сопоставлений обработчиков увидим наш обработчик «1С Web-service Extension». Если такого обработчика в списке нет, его следует добавить выбрав в окне «Действия» (Actions) пункт «Добавление сопоставления сценария с подстановочными знаками» (Add Wildcard Script Map…).
При добавлении вводим имя обработчика и указываем путь к файлу wsisapi.dll. Данные параметры можно изменить и для действующего обработчика выбрав пункт «Изменить…» (Edit…) в окне списка действий.
Необходимо также убедиться, что для обработчика стоит флаг «Выполнение» (Execute) в окне изменений разрешений функции. Вызвать данное окно можно выбрав пункт «Изменение разрешений функции…» (Edit Feature Permissions…) в окне «Действия» (Actions).
Возникла необходимость взаимодействовать с 1C с мобильного клиента под Windows Phone 7/8. Самым простым способом взаимодействия показалось работа через web сервисы, поддерживаемые 1С.
С точки зрения публикации web сервиса особых сложностей нет. Шаги подробно описаны в статьях:
- http://habrahabr.ru/post/136684/
- http://howknow1c.ru/programmirovanie-1c/web-servisy-1s.html
- http://infostart.ru/public/86791/
- http://1cprogrammistu.ru/60-sozdanie-web-servisa-v-1s-predpriyatii.html
- http://www.basic.visual2000.ru/kolesov/pcmag/2006-1c/2006-05/web_1c.htm
- http://v8.1c.ru/overview/Term_000000286.htm
- http://1c-dn.com/forum/forum1/topic1184/
- http://fixin.com.ru/articles/1s_web_services/article.htm
- http://infostart.ru/public/327963/
Проблемы возникли с доступом к опубликованному web-сервису 1С. Под IIS 7.5 из под Windows 2008R2 после полудня танцев с бубном проблему решить не удалось. Были изучены статьи и ветки форумов:
- http://infostart.ru/public/75205/
- http://www.forum.mista.ru/topic.php?id=568905
- http://www.forum.mista.ru/topic.php?id=665708
- http://www.forum.mista.ru/topic.php?id=539933
- и т.д.
но счастье так и не наступило.
В результате решил, что стоит попробовать поднять web сервис на Apache, поскольку с ним у меня обычно все было несколько проще с настройкой. Итак, на другом порту (8080) на том-же сервере был поднят Apache 2.2.22. В 1С был создан ещё один web сервис и опубликован уже на Apache. С настройками по умолчанию он также не заработал. Разберем ошибки.
Web сервис был опубликован в 1С под именем wsApache.
Публикация web-сервиса 1С под Apache
Соответственно, в указанном при публикации каталоге появился файл default.vrd следующего содержания:
В httpd.conf 1С добавила следующие строчки:
# 1c publication
LoadModule _1cws_module "C:/Program Files (x86)/1cv82/8.2.17.153/bin/wsap22.dll"
Alias "/ws" "C:/inetpub/wwwroot/ws/"
<
Directory
"C:/inetpub/wwwroot/ws/">
AllowOverride All
Options None
Order allow,deny
Allow from all
SetHandler 1c-application
ManagedApplicationDescriptor "C:/inetpub/wwwroot/ws/default.vrd"
</
Directory
>
В целом, файлы/изменения создаваемые 1С почти рабочие. Теперь о проблемах.
Правильный линк на сервис
В некоторых статьях путь к web сервису указан как: http://имя_сервера:порт/имя_при_публикации/alias?wsdl.
В моем случае:
- Имя сервера: s-1s-1-hw
- Порт: 8080
- Имя при публикации: wsApache
- Alias из файла default.vrd: service.1cws
Соответственно, НЕПРАВИЛЬНАЯ ссылка на web сервис 1С такая: http://s-1c-1-hw:8080/wsApache/service.1cws?wsdl
Если использовать такой линк, то 1C 8.2 выдаст сообщение вида:
1C:Enterprise 8 application error:
HTTP: Not found Ошибка при работе с ресурсом /ws/service.1cws
Правильный вариант:
http://имя_сервера:порт/имя_при_публикации/ws/alias?wsdl.
Это обращение эквивалентно обращению по имени сервиса из default.vrd:
http://имя_сервера:порт/имя_при_публикации/ws/name?wsdl.
В моем случае:
- Name из файла default.vrd: Service
Соответственно, ПРАВИЛЬНЫЙ линк для доступа к web сервису 1С будет такой:
http://s-1c-1-hw:8080/wsApache/ws/service.1cws?wsdl
или такой
http://s-1c-1-hw:8080/wsApache/ws/service?wsdl
Если указать ссылку с суффиксом ?wsdl, то в веб браузере отобразиться XML файл с описанием опубликованного сервиса.
Если указать ссылку без суффикса ?wsdl, то при правильной настройке должна появится страница с гиперссылкой на опубликованный сервис:
http://s-1c-1-hw:8080/wsApache/ws/Service
Авторизация пользователя при обращении к web сервису 1С
Если попытаться получить доступ к web сервису опубликованному под Apache не исправляя файл default.vrd, то появиться стандартный диалог авторизации:
Диалог авторизации на web сервисе 1С
В тестовой базе был заведен тестовый пользователь IUSR с полными правами с пустым паролем. Если ввести в диалог в качестве логина этого пользователя, то авторизация пройдет успешно и отобразиться либо XML файл, либо ссылка на него (см. выше).
Можно исключить запрос авторизационной информации вбив логин и пароль прямо в файл default.vrd, что, конечно, не рекомендуется с точки зрения безопасности, но иногда необходимо.
Это все. В моем случае каких-то дополнительных правок конфиг файлов не потребовалось.
В некоторых статьях указывалось, что нужно убрать из httpd.conf опцию «Options None«. У меня работает в обоих вариантах, т.е. когда строка присутствует и когда она удалена.
Публикация web сервиса 1С на IIS 7.5
Как уже упоминал выше, с публикацией web сервиса на IIS 7.5 с первого раза у меня не задалось, хотя тонкий клиент запускается без проблем. Поскольку пароль в конфигурационном файле по соображениям безопасности меня не устраивал, вернулся к вопросу настройки IIS. Был опубликован web сервис с именем wsIIS и именем сервиса ServiceIIS и alias-ом serviceIIS.1cws. Галка в чекбоксе «Использовать аутентификацию операционной системы на веб-сервере» для простоты эксперимента была снята.
Публикация web сервиса 1С в IIS 7.5.
Корректная ссылка в моем случае: http://s-1c-1-hw/wsIIS/ws/ServiceIIS?wsdl. При попытке зайти из Chrome/IE получаем ошибку возвращенную IIS:
Ошибка HTTP 401.2 — Unauthorized
дабы избавиться от ошибки правим web.config сформированный 1С следующим образом:
<?
xml
version
=
"1.0"
encoding
=
"UTF-8"
?>
<
configuration
>
<
system.webServer
>
<
handlers
>
<
add
name
=
"1C Web-service Extension"
path
=
"*"
verb
=
"*"
modules
=
"IsapiModule"
scriptProcessor
=
"C:Program Files (x86)1cv82binwsisapi.dll"
resourceType
=
"Unspecified"
requireAccess
=
"None"
/>
</
handlers
>
<
security
>
<
authorization
>
<
add
accessType
=
"Allow"
users
=
"*"
/>
</
authorization
>
</
security
>
</
system.webServer
>
</
configuration
>
Эта правка эквивалента изменению через консоль управления IIS для нашего опубликованного приложения с именем wsIIS правил авторизации пользователя.
Настройки IIS 7.5 для доступа к web сервисам 1C
Добавление тегов security в web.config или правка правил авторизации в консоли IIS приводит к тому, что при обращении к сервису по указанной выше ссылке появляется запрос на авторизацию. Вводим нашего тестового пользователя IUSR без пароля и получаем нужный XML файл в ответе сервера.
Прописав в default.vrd логин и пароль пользователя, как было указано выше для Apache, уберем окно авторизации и сервис будет всегда авторизовываться под указанным пользователем. Как проходит авторизация можно посмотреть в логах 1C. Но вариант с прописыванием пользователя в конфигурационный файл — не наш путь, ибо не секьюрно.
Изменим настройки авторизации пользователя (в IIS проверка подлинности), чтобы использовалась Windows авторизация. Сменить можно в консоли управления IIS, либо в конфигурационном файле. Мне больше нравиться конфигурационный файл. так как проще переносить настройки при миграции на другой сервер.
Поскольку изменения секции web.config <authentication> заблокированы на уровне IIS в файле
%windir%system32inetsrvconfigapplicationHost.config
нужно зайти туда и сменить «Deny» на «Allow» для секции «authentication»:
<
sectionGroup
name
=
"authentication"
>
<
section
name
=
"anonymousAuthentication"
overrideModeDefault
=
"Allow"
/>
<
section
name
=
"basicAuthentication"
overrideModeDefault
=
"Allow"
/>
<
section
name
=
"clientCertificateMappingAuthentication"
overrideModeDefault
=
"Deny"
/>
<
section
name
=
"digestAuthentication"
overrideModeDefault
=
"Deny"
/>
<
section
name
=
"iisClientCertificateMappingAuthentication"
overrideModeDefault
=
"Deny"
/>
<
section
name
=
"windowsAuthentication"
overrideModeDefault
=
"Allow"
/>
</
sectionGroup
>
после чего РАБОЧИЙ web.config для опубликованного web сервиса 1С будет выглядеть следующим образом:
<?
xml
version
=
"1.0"
encoding
=
"UTF-8"
?>
<
configuration
>
<
system.webServer
>
<
handlers
>
<
add
name
=
"1C Web-service Extension"
path
=
"*"
verb
=
"*"
modules
=
"IsapiModule"
scriptProcessor
=
"C:Program Files (x86)1cv82binwsisapi.dll"
resourceType
=
"Unspecified"
requireAccess
=
"None"
/>
</
handlers
>
<
security
>
<
authorization
>
<
add
accessType
=
"Allow"
users
=
"*"
/>
</
authorization
>
<
authentication
>
<
windowsAuthentication
enabled
=
"true"
useKernelMode
=
"true"
>
<
providers
>
<
clear
/>
<
add
value
=
"Negotiate"
/>
<
add
value
=
"NTLM"
/>
</
providers
>
<
extendedProtection
tokenChecking
=
"Allow"
/>
</
windowsAuthentication
>
<
basicAuthentication
enabled
=
"false"
/>
<
anonymousAuthentication
enabled
=
"false"
/>
</
authentication
>
</
security
>
</
system.webServer
>
</
configuration
>
Эквивалент последней выполненной операции (настройка <authentication>) — публикация сервиса с включенной галкой в чекбоксе «Использовать аутентификацию операционной системы на веб-сервере». 1С при публикации меняет эту настройку не в web.config, а в настройках IIS через API. В любом случае изменения должны быть видны в консоли управления IIS:
Настройка аутентификации при публикации web сервиса 1С в IIS
На всякий случай для проверки настроек при публикации web сервиса имеет смысл в консоли управления IIS зайти в следующие разделы:
Публикация web сервиса 1С в IIS. Настройка через консоль.
После указанной выше настройки web.config, удаляем жестко прописанные логин и пароль из файла default.vrd. На всякий случай перегружаем IIS. Если для доменных пользователей прописаны корректные соответствия в учетных записях 1С, то авторизация пройдет прозрачно под доменными учетными записями, в чем можно будет убедиться посмотрев в логах авторизации 1С.
Здесь приводится ряд ошибок IIS (и способы их устранения) которые с высокой вероятностью могут возникнуть при публикации web сервиса 1С на IIS.
Доступ из Visual Studio 2012
Как подробно описано в статье на хабре, чтобы добавить ссылку на опубликованный web сервис 1С в Visual Studio для разработки клиента необходимо создать приложение (например, консольное), кликнуть правой кнопкой мышки на solution и выбрать пункт «Add Service Reference…». Следует обратить внимание на точное указание ссылки непосредственно на WSDL описание, т.е. без указания суффикса ?wsdl Visual Studio ничего не обнаружит.
Добавление reference к web службе 1С из Visual Stiudio.
Далее разрабатываем обычный клиент для web сервиса.
Удачи!!!
Ошибка получения объекта com: отказано в доступе.
Данная ошибка возникла при использовании библиотеки, например HASP, которая была зарегистрирована с помощью COM+. Такая регистрация помогает использовать 32 разрядные библиотеки на 64 разрядных серверах. Подробное описание действий по регистрации библиотек легко найти на просторах интернета.
После регистрации не всегда проходит все гладко по созданию COM объекта. Может возникнуть ошибка доступа к COM объекту, которая звучит примерно так:
Ошибка получения объекта COM: отказано в доступе.
Что бы избавиться от ошибки, откройте оснастку «Службы компонентов». Раскройте дерево служб и в ветке COM+ найди нужную службу, откройте её свойства (см. рисунок 1).
Рисунок 1. Свойства приложения COM+ |
В свойствах перейдите на вкладку Безопасность и для пункта «принудительная проверка доступа для приложений» снимите галочку (см. рисунок 2). Проверьте создание COM объекта.
Рисунок 2. Снятие принудительной проверки доступа для COM+ |
Если создание COM объекта не увенчалось успехом, попробуйте установить политику программных ограничений в неограниченный уровень (см. рисунок 3).
Рисунок 3. Неограниченный уровень политики программных ограничений |
Если требуется, чтобы приложение COM+ могли запускать пользователи сети, не проходящие проверку подлинности, роли приложения должны включать анонимного пользователя. В Microsoft Windows Vista® анонимный пользователь не включается по умолчанию в группу «Все». Этот тип пользователя можно добавить в мастере установки приложения COM+ при установке или создании нового приложения. В мастере на странице Добавление ролей приложения щелкните Добавить роль, введите «АНОНИМНЫЙ ВХОД» и нажмите кнопку ОК.