При интеграции старых конфигураций (таких как УТ 10.3 или УПП 1.3) с современным решением 1С:Клиент ЭДО разработчики часто сталкиваются с проблемой: документ успешно загружается в базу как объект, но в интерфейсе отсутствуют кнопки «Подписать» и «Отправить». Это происходит потому, что в современных редакциях Библиотеки электронных документов (БЭД) процесс ЭДО — это не просто запись в справочник, а сложная система связей в регистрах сведений, генерация транспортных контейнеров и привязка к GUID-идентификаторам оператора.
В данной статье мы разберем, как правильно инициировать процесс создания электронного документа на стороне сервера, чтобы он стал полноценным объектом ЭДО.
Проанализируем ситуацию: когда мы просто создаем документ ПроизвольныйЭлектронныйДокумент программно, система не создает записи в специализированных регистрах, таких как СостоянияПоОбъектамУчетаЭДО или СоставСегментовОбъектовЭДО. Без этих записей механизм ЭДО «не видит» документ как активный черновик, готовый к отправке. Кроме того, форма документа в 1С:Клиент ЭДО динамически настраивается в зависимости от статуса электронного обмена, который хранится вне самого объекта документа.
Чтобы решить эту задачу, нам необходимо использовать высокоуровневые методы программного интерфейса БЭД, которые берут на себя всю «черновую» работу по прописыванию связей.
Наиболее эффективным способом создания произвольного документа с прикрепленным PDF (или любым другим файлом) является использование метода ЭлектронныеДокументыЭДО.СоздатьДокументПоФайлу. Рассмотрим подробнее процесс подготовки параметров и вызова этого метода.
Для начала нам необходимо подготовить структуру параметров создания документа. Для этого воспользуемся вспомогательной функцией ИнтерфейсДокументовЭДОКлиентСервер.НовыеПараметрыСозданияДокументаПоФайлу(). Это гарантирует, что мы не пропустим ни одного важного поля, требуемого библиотекой.
// Подготовим основные параметры документа
ПараметрыСоздания = ИнтерфейсДокументовЭДОКлиентСервер.НовыеПараметрыСозданияДокументаПоФайлу();
ПараметрыСоздания.Организация = СсылкаНаОрганизацию;
ПараметрыСоздания.Контрагент = СсылкаНаКонтрагента;
ПараметрыСоздания.Договор = СсылкаНаДоговор; // Важно для определения настроек ЭДО
ПараметрыСоздания.ВидДокумента = Справочники.ВидыДокументовЭДО.НайтиПоНаименованию("Прочее");
ПараметрыСоздания.НомерДокумента = "АС-001";
ПараметрыСоздания.ДатаДокумента = ТекущаяДата();
ПараметрыСоздания.СуммаДокумента = 1500.00;
// Укажем объекты учета (основания), к которым привязан ЭД
// Массив может содержать ссылки на документы информационной базы
ПараметрыСоздания.ОбъектыУчета = Новый Массив;
ПараметрыСоздания.ОбъектыУчета.Добавить(СсылкаНаАктСверки);
// Определим маршрут подписания
ПараметрыСоздания.МаршрутПодписания = Справочники.МаршрутыПодписания.ОднойДоступнойПодписью;
ПараметрыСоздания.СоздатьНомерАвтоматически = Ложь;
Следующим шагом нам нужно подготовить описание самого файла, который будет отправлен контрагенту. Выясним, какие требования предъявляются к структуре описания файла. Нам понадобятся имя файла с расширением и сами двоичные данные.
// Формируем описание файла через стандартный механизм БЭД
ОписаниеФайла = РаботаСФайламиБЭД.НовоеОписаниеФайла();
ОписаниеФайла.ИмяФайла = "Акт_Сверки_№1.pdf";
ОписаниеФайла.ДвоичныеДанные = ПолучитьДвоичныеДанныеФайла(); // Функция получения данных из хранилища или диска
// Вызываем основной метод создания документа ЭДО
Результат = ЭлектронныеДокументыЭДО.СоздатьДокументПоФайлу(ПараметрыСоздания, ОписаниеФайла);
Если Результат.Успех Тогда
Сообщить("Электронный документ успешно создан: " + Результат.ЭлектронныйДокумент);
Иначе
// Разберем ошибки, если они возникли
Для Каждого Ошибка Из Результат.Ошибки Цикл
Сообщить("Ошибка: " + Ошибка.Описание);
КонецЦикла;
КонецЕсли;
Рассмотрим ситуацию, когда документ создается, но кнопки ЭДО в форме «Акта сверки» всё равно не появляются. Проанализируем причину: для корректного отображения команд ЭДО в формах объектов, тип ссылки документа-основания должен быть включен в Определяемый тип ОснованиеЭлектронногоДокументаЭДО (или аналогичный в вашей версии БЭД). Если вы работаете в конфигурации «Клиент ЭДО», проверьте, добавлены ли ваши загружаемые объекты в этот тип.
Также стоит помнить, что метод СоздатьДокументПоФайлу автоматически выполняет следующие действия:
ЭлектронныйДокументИсходящийЭДО (или аналогичном).Создание документа — это только первый этап. Если ваша задача предполагает полную автоматизацию без участия пользователя, документ необходимо подписать и отправить в очередь сообщений оператора. Выясним, как это сделать программно на сервере.
Внимание: программное подписание возможно только в том случае, если сертификат электронной подписи установлен на сервере 1С и для него задан пароль в настройках программы.
// Пример инициирования отправки
МассивДокументов = Новый Массив;
МассивДокументов.Добавить(Результат.ЭлектронныйДокумент);
// Выполняем подписание (если настроено)
// ПараметрыПодписания могут быть настроены индивидуально
ЭлектронныеДокументыЭДО.ПодписатьЭлектронныеДокументы(МассивДокументов);
// Отправляем документы в очередь оператора ЭДО
ЭлектронныеДокументыЭДО.ОтправитьЭлектронныеДокументы(МассивДокументов);
Проанализируем возможные причины неудачного создания документа. Чаще всего метод возвращает Успех = Ложь в следующих случаях:
МенеджерНастроекЭДО.НастройкаЭДОЗавершена().Используя предложенный подход с методом СоздатьДокументПоФайлу, мы обеспечиваем корректную работу всех механизмов БЭД, включая логирование действий, корректное отображение статусов и возможность интерактивной работы с документом после его программной загрузки.