# 1С

Агент работает с любой конфигурацией на платформе 1С:Предприятие 8, где можно опубликовать стандартный интерфейс OData: типовой, доработанной или самописной. Код в базе для этого не нужен: агент читает схему опубликованных объектов, отбирает документы, берёт остатки и обороты регистров и, если есть права, создаёт и проводит документы.

Сценарии по типовым конфигурациям собраны на [странице интеграции](/integrations/onec).

## Что умеет агент

| Что нужно | Как подключается | Что даёт |
|---|---|---|
| Данные базы | Публикация OData, карточка «1С:Предприятие» в разделе «Интеграции» | справочники, документы, регистры, файлы, приложенные к документам, запись и проведение |
| Печатные формы, отчёты, события | Расширение конфигурации «Сам Решу» поверх той же публикации | УПД, ТОРГ-12, счёт и акт файлом, отчёты на СКД, сообщения базы о проведении и записи |
| База без адреса в интернете | Внутренний адрес публикации и приложение на компьютере в той же сети | то же, что выше, без открытия базы наружу |

### Файлы, приложенные к документам

Агент находит файлы, присоединённые к документу или элементу справочника (скан счёта, чек авансового отчёта, договор), и читает их содержимое. Где они лежат, он определяет по схеме вашей базы сам: у документа бывает свой справочник присоединённых файлов, а бывает общий справочник «Файлы» с версиями.

Чтобы чтение прошло, в составе OData и в правах пользователя должны быть все звенья: справочник карточек файлов, справочник версий (если он есть) и регистр, где хранятся сами данные файла. Если не хватает хотя бы одного, агент назовёт весь набор объектов, которые нужно открыть, а не только первый отказавший.

<TryPrompt prompt="Найди в @onec авансовые отчёты за октябрь и пришли список приложенных к ним чеков. Если какие-то файлы не читаются, назови, каких прав не хватает." />

## Что нужно заранее

Что должно быть готово до подключения:

- база на платформе 1С:Предприятие 8, опубликованная на веб-сервере IIS или Apache со стандартным интерфейсом OData; Конфигуратор нужен только для первой публикации;
- права администратора базы, чтобы включить объекты в состав OData и завести пользователя;
- адрес, по которому база открывается: из интернета по HTTPS или, для базы в офисе, внутренний адрес и приложение «Сам Решу» на компьютере в той же сети (ниже);
- для печатных форм, отчётов и событий: конфигурация на БСП, чтобы поставить расширение конфигурации.

## Шаги

### Опубликуйте базу с OData
В Конфигураторе: **Администрирование → Публикация на веб-сервере**, отметьте публикацию стандартного интерфейса OData и опубликуйте на IIS или Apache. Если база уже опубликована для веб-клиента, публикацию можно расширить, а не делать новую.

### Включите объекты в состав OData
В самой базе откройте **«Настройки стандартного интерфейса OData»**, вкладку **«Состав»**, отметьте нужные справочники, документы и регистры и запишите. Объект, которого нет в составе, агент не увидит, даже если права на него есть. Если вы вошли в базу администратором в браузере, это может сделать сам агент.

### Заведите отдельного пользователя 1С
Дайте ему право удалённого доступа к OData и только те права чтения или записи, которые нужны для работы. Агент видит ровно то, что разрешено этому пользователю.

### Подключите в «Интеграциях»
Откройте раздел **«Интеграции»**, карточку **«1С:Предприятие»** и заполните **«URL базы 1С»**, **«Имя пользователя»** и **«Пароль»**. В поле адреса подойдёт корень публикации, адрес OData или адрес из браузера. Несколько баз одного сервера подключаются отдельными карточками и различаются путём публикации.

<TryPrompt prompt="Прочитай состав OData моей базы @onec и перечисли, какие документы и регистры реально доступны. Ничего не меняй." />

### База в локальной сети

Если сервер 1С доступен только в офисе, публиковать базу в интернет не нужно.

### Установите приложение на компьютер в этой сети
Скачайте приложение на [странице загрузки](/download) и войдите в него. Компьютер должен открывать базу по внутреннему адресу.

### Укажите внутренний адрес публикации
В карточке «1С:Предприятие» в поле **«URL базы 1С»** подойдёт и внутренний HTTP-адрес. Под полем появится **«Запросы идут через ваш компьютер»**.

### Держите приложение открытым
Запросы к базе пойдут через приложение на этом компьютере из любого вашего чата. Пока приложение закрыто или компьютер выключен, агент до базы не достучится и скажет об этом.

События базы от компьютера не зависят: их отправляет сам сервер 1С, ему нужен только исходящий HTTPS. Подробнее о работе через компьютер: [«Приложения»](/help/apps).

### База в 1С:Фреш

В 1С:Фреш база уже опубликована, публиковать её самому не нужно. В поле **«URL базы 1С»** вставьте адрес базы из браузера: в нём есть номер области, и по нему различаются несколько баз одного аккаунта. Состав OData и пользователь подключения настраиваются в самой базе так же, как в шагах выше. Расширение конфигурации в модели сервиса даёт печать и отчёты, а события базы там недоступны.

## Какие права выдать

Видимость ограничена дважды: составом OData и правами роли пользователя. Агент различает эти два случая: объект не в составе означает, что его нужно включить на вкладке «Состав», отказ по правам означает, что нужно расширить роль.

- **Только чтение**: права на чтение нужных справочников, документов и регистров. С таким пользователем агент в базе ничего не изменит, даже если вы попросите.
- **Запись**: права на добавление и изменение нужных документов, а для проведения ещё и право проводить их. Созданный или изменённый документ остаётся непроведённым, пока агент не проведёт его отдельным действием.
- **Расширение конфигурации**: роль «Сам Решу: доступ агента» (`срш_ДоступАгента`) и право «Использование» на нужные отчёты.

В конфигурациях на БСП роль напрямую не выдаётся: добавьте её в профиль группы доступа (**Администрирование → Настройки пользователей и прав → Профили групп доступа**) и включите пользователя подключения в группу с этим профилем.

### Что делать после правки прав

Попросите агента повторить запрос. Переподключать интеграцию не нужно: право живёт у пользователя 1С, а не у пароля, поэтому пересохранённые логин и пароль ничего не открывают. Если вы ставили или обновляли расширение конфигурации, перезапустите программу, как предложит форма «Расширения». Если меняли публикацию на веб-сервере, перезапустите веб-сервер.

**Почему агент работает с базой по одному запросу**
Лицензия 1С даёт пользователю одно подключение: второй одновременный запрос рвёт первый. Поэтому агент обращается к базе последовательно, и большая выборка идёт дольше, чем в других сервисах. Если агент открывает веб-клиент в браузере, он тоже занимает лицензию, поэтому лишний раз страницу не перезагружает.

## Расширение конфигурации «Сам Решу»

Расширение добавляет то, чего нет в стандартном интерфейсе OData:

- **печатные формы** документов файлом PDF, XLSX или MXL, те же команды печати, что программа предлагает приложить к письму;
- **отчёты на СКД** файлом или таблицей для расчётов;
- **события базы**: проведение, отмена проведения, запись и удаление выбранных документов и справочников. По ним срабатывают [задачи](/help/tasks): «когда провели реализацию, пришли покупателю счёт».

Расширение ничего не меняет в объектах вашей конфигурации и работает в безопасном режиме. Нужна конфигурация на БСП.

### Скачайте файл .cfe
В карточке подключения 1С нажмите **«Скачать расширение конфигурации»**, либо откройте **Настройки → «Приложения» → «1С»** и нажмите **«Скачать .cfe»**. Рядом указан режим совместимости, с которого расширение подходит: проверьте, что у вашей конфигурации он не ниже.

### Добавьте в «Расширения»
Под пользователем с полными правами: **Администрирование → Печатные формы, отчеты и обработки → Расширения → Добавить из файла**. Оставьте флажок «Безопасный режим» и перезапустите программу.

### Опубликуйте HTTP-сервисы расширения
В той же публикации на веб-сервере включите публикацию HTTP-сервисов и сервисов расширений по умолчанию, затем перезапустите веб-сервер. Адрес у сервиса расширения общий с OData, отдельная учётная запись не нужна.

### Проверьте карточку подключения
В строке **«Печатные формы и отчёты»** должно стоять **«Установлено»** с номером версии. **«HTTP-сервис расширения конфигурации не найден»** означает, что расширение не опубликовано или после установки не перезапущен веб-сервер.

### События базы

Адрес приёма событий и секрет подписи «Сам Решу» записывает в базу сам при подключении, регламентное задание отправки включается само. О каких документах сообщать, агент задаёт под конкретную задачу с вашего согласия, пока список пуст, база ничего не отправляет.

Чтобы события доходили, серверу 1С нужен исходящий доступ в интернет по HTTPS к адресу приложения. В клиент-серверном варианте расширению нужен профиль безопасности с разрешённым привилегированным режимом и этим интернет-ресурсом. В модели сервиса (1С:Фреш и другие базы с разделением данных) печать и отчёты работают, а события недоступны.

| Что видно в карточке | Что это значит |
|---|---|
| «1С не смогла отправить события. Повтор отправки запланирован.» | временный сбой сети или приёма, база повторит сама |
| «1С заблокировала отправку событий…» | выключено регламентное задание или работа с внешними ресурсами |
| «1С остановила отправку событий после отказа приёмника…» | приём отказал, новые события пока не поступают |

## Ограничения

Создание документа, правка и проведение меняют вашу учётную базу, поэтому их проверяет [автопроверка действий](/help/trust). Обычная работа по вашей просьбе идёт сама, а рискованное и то, что подпадает под ваши правила «Сначала спрашивать», приходит в чат карточкой. В рабочей организации администратор может закрепить проведение документов за ролью.

Перед массовой правкой попросите сначала список без изменений и пилот на нескольких документах: [«Как агент меняет данные»](/help/trust).

### Что значит «исход неизвестен»

Иногда 1С не отвечает на запись или отвечает ошибкой сервера, а транзакция в базе при этом всё равно фиксируется: документ, прочитанный сразу после ошибки непроведённым, позже оказывается проведённым. Такой исход агент называет неизвестным: запись могла лечь.

Чтобы не создать второй документ и не провести дважды, агент:

- не повторяет такую запись вслепую;
- сначала читает документ заново: если он проведён, запись считается выполненной;
- повторяет только то, что точно не применилось;
- если проверить не удалось, прямо пишет «исход неизвестен» и продолжает остальные шаги.

Отдельного выключателя у этой защиты нет: повтор вслепую может задвоить документ или движения, и исправлять это пришлось бы руками. Правка задачи, ручной перезапуск или снятие паузы её не снимают, снимает только проверка самого документа.

**Что делать вам:** откройте документ в 1С и посмотрите, создан ли он и проведён ли, нет ли рядом дубля. Напишите агенту, что видите: «документ создан и проведён, иди дальше» или «документа нет, создай заново».

## Как отозвать доступ

- У нас: в карточке «1С:Предприятие» нажмите **«Отключить»**. Агенты перестают обращаться к базе.
- В 1С: отключите пользователя подключения или снимите у него право удалённого доступа к OData. Это закрывает доступ, даже если подключение у нас осталось.
- Расширение конфигурации удаляется в **Администрирование → Печатные формы, отчеты и обработки → Расширения**.

## Неполадки

- **Пустой ответ или объекта нет в схеме**: объект не включён в состав OData. Включите его на вкладке «Состав».
- **«Доступ запрещён правами 1С»**: у роли пользователя нет права на объект. Расширьте роль или профиль группы доступа, переподключать интеграцию не нужно.
- **Печатная форма в PDF не формируется на сервере под Linux**: на сервере 1С не хватает шрифтов, XLSX при этом формируется.
- **Отчёта нет в списке**: агент строит только отчёты на СКД, на которые у пользователя есть право «Использование».
- **Прочее**: [«Подключение сервисов»](/help/integrations) и [«Частые вопросы»](/help/faq).
