Подсистема ЭТРН и интеграция со СБИС (Упрощенный вариант)
https://www.fl.ru/projects/5509893/podsistema-etrn-i-integratsiya-so-sbis-uproschennyiy-variant.html
Если модуль будет внедряться программистом вручную с адаптацией под конкретную структуру базы, то городить сложные конструкции с определяемыми типами и жесткой изоляцией действительно избыточно. Это только замедлит разработку. Сделаем ТЗ более прямолинейным и классическим, сфокусировавшись на бизнес-логике и интеграции с API СБИС. Техническое задание: Подсистема ЭТРН и интеграция со СБИС (Упрощенный вариант) 1. Документ «Электронная транспортная накладная (ЭТРН)» Необходимо создать новый документ. Программист при разработке сам свяжет реквизиты с существующими справочниками базы (Организации, Контрагенты, Номенклатура и т.д.). Реквизиты шапки: • Организация (Справочник Организаций) — грузоотправитель. • Грузополучатель (Справочник Контрагентов). • Перевозчик (Справочник Контрагентов). • ДокументОснование (ДокументСсылка) — ссылка на документ отгрузки. • СтатусСБИС (Строка или Перечисление) — текущий статус в ЭДО (Черновик, Отправлен, Подписан перевозчиком, Завершен, Ошибка). • ИдентификаторДокументаСБИС (Строка) — GUID документа, возвращаемый API СБИС при отправке. Транспорт и водитель: • Автомобиль (Справочник ТС или Строка, если справочника нет). • Водитель (Справочник ФизЛиц/Сотрудников). • ТелефонВодителя (Строка). • ДанныеВУ (Строка) — серия и номер водительского удостоверения. Адреса и даты: • АдресПогрузки и АдресВыгрузки (Строки). • ДатаВремяПодачи и ДатаВремяУбытия (Дата/Время). Табличная часть «Грузы»: • Номенклатура (Справочник Номенклатуры или просто текстовое описание груза). • КоличествоМест (Число). • МассаБрутто (Число). 2. Интеграция со СБИС (REST API) Всю логику обмена вынести в отдельный Общий модуль, например ОбменСБИС_ЭТРН (Сервер). Взаимодействие осуществляется стандартными средствами 1С (HTTPСоединение, HTTPЗапрос, ЧтениеJSON, ЗаписьJSON). 2.1. Авторизация • Реализовать функцию получения токена (сессии) по логину/паролю или ключу API (в зависимости от настроек кабинета СБИС). • Токен и учетные данные хранить в регистре сведений или константах. 2.2. Формирование и отправка (Титул 1) • Реализовать экспортную процедуру ОтправитьЭТРН(ДокументСсылка). • Процедура должна собирать данные из документа 1С в структуру (JSON или XML, согласно актуальной спецификации API Saby для ЭТРН). • Вызов метода API СБИС для создания документа. Если отправка успешна — записать полученный ИдентификаторДокументаСБИС в документ 1С и сменить статус на «Отправлен». 2.3. Подписание (ЭЦП) • Вариант А (Простой): Использовать облачную подпись СБИС. 1С просто передает через API команду «Подписать», а физическое подписание происходит на стороне сервера СБИС (кнопкой в кабинете или автоматическим подписанием доверенным ключом). • Вариант Б (Локальный): Если ключи стоят строго на сервере 1С, реализовать подписание сформированного XML через средства криптографии 1С перед отправкой (это сложнее, требует настройки КриптоПро в 1С). Рекомендуется Вариант А. 2.4. Обновление статусов • Написать регламентное задание ОбновлениеСтатусовЭТРН (запуск каждые 15 минут). • Задание выбирает все документы ЭТРН со статусами «Отправлен», «В работе» и отправляет GET-запрос к API СБИС (метод получения статуса по ИдентификаторДокументаСБИС). • Если статус в СБИС изменился (например, Перевозчик подписал свой титул) — обновлять реквизит СтатусСБИС в документе 1С. 3. Интерфейс пользователя • Форма списка документов: Вывести колонки Контрагент, Перевозчик, Водитель и обязательно Статус СБИС. Сделать визуальное выделение цветом (например, зеленый — документооборот завершен). • Форма документа: o Кнопка «Отправить в СБИС» — инициирует сборку и отправку документа. o Кнопка «Обновить статус» — принудительный опрос API СБИС для текущего документа, не дожидаясь регламентного задания. • Журнал ошибок: Все неудачные ответы от API СБИС (400, 401, 500) выводить пользователю в понятном виде («СБИС вернул ошибку: Не заполнен гос. номер авто») и параллельно писать в стандартный Журнал регистрации 1С.