Имя: Пароль:
1C
 
1С Клиент ЭДО программное создание произвольных электронных документов
0 Trance_1C
 
17.07.24
06:02
Всем привет, внезапно прилетела задача загрузки в 1С клиент ЭДО акта сверки с прикрепленным pdf файлом из старой конфигурации УТ/УПП, с загрузкой проблем никаких не возникло т.к. работает обмен в план обмена был быстро добавлен документ, ПКО в правила и акт сверки загружается в произвольный документ с прикрепленным файлом все ок. После загрузки документ нельзя отправить по эдо, отсутствуют необходимые действия, часть реквизитов не отображаются в форме.
Как выяснилось позднее, этот документ при записи инициирует из клиентских модулей процесс ЭДО, прописывается в кучу регистров сведений создавая невероятные связи с гуидами без объектных привязок к данным в базе.
В общем вопрос к знатокам. Как правильно создать программно произвольный документ в ЭДО на сервере и запустить необходимые процессы ЭДО.
1 Trance_1C
 
17.07.24
05:59
немного вводных
Клиент ЭДО (базовая), редакция 2.9 (2.9.12.27)
Библиотеки
БиблиотекаЭлектронныхДокументов 1.9.12.27
КлиентЭДОБазовая                2.9.12.27
2 Trance_1C
 
17.07.24
06:06
В документации "БиблиотекаЭлектронныхДокументов 1.9.12.27" есть описание подключения произвольных документов к существующим документам в базе, чтобы можно было интерактивно создавать произольный эл. док на основании например счета.
3 Trance_1C
 
17.07.24
11:09
UP Москва просыпайся!
4 Garykom
 
17.07.24
12:05
https://forum.infostart.ru/forum9/topic256562/
как то так, код самому повторить нужный
5 Trance_1C
 
17.07.24
13:09
Спасибо, у меня документы уже созданы и заполнены, файл присоединен. При загрузке обмена создается произвольный документ, документ сообщение эдо со ссылкой на этот произвольный документ, и его присоединенный файл. Этот файл и отображается в форме произвольного документа при открытии. Проблема в том что не создается процесс эдо. Нужно вызвать какой-то метод чтобы стартовать этот процесс. Пока ищу в модулях.
6 Trance_1C
 
17.07.24
13:12
(4) в теме по ссылке открывают форму нового с параметрами, а у меня загрузка обмена на сервере, форму открывать некому.  Возможно придется создавать форму загруженного объекта и передавать ее в серверные методы интерфейса эдо, как вариант.
7 Trance_1C
 
19.07.24
06:39
Нашелся метод который решает мою проблему:
ЭлектронныеДокументыЭДО.СоздатьДокументПоФайлу(ПараметрыСозданияДокументаПоФайлу,ОписаниеФайла);


		  //  Структура - Новые параметры создания произвольного документа:
		  //  * Организация - Неопределено,ОпределяемыйТип.Организация - организация, от имени которой нужно отправить документ.
		  //  * Контрагент - Неопределено,ОпределяемыйТип.КонтрагентБЭД - контрагент, которому нужно отправить документ.
		  //  * Договор - Неопределено,ОпределяемыйТип.ДоговорСКонтрагентомЭДО - договор, по которому отправляется документ.
		  //  * ВидДокумента - СправочникСсылка.ВидыДокументовЭДО - вид электронного документа. Если не указан, то определяется автоматически.
		  //  * НомерДокумента - Строка - номер электронного документа.
		  //  * ДатаДокумента - Дата - дата электронного документа
		  //  * СуммаДокумента - Число - сумма по документу.
		  //  * ОбъектыУчета - Массив Из ОпределяемыйТип.ОснованияЭлектронныхДокументовЭДО - учетные объекты, которые нужно проставить в качестве основания.
		  //  * Подписанты - Массив из ОпределяемыйТип.Пользователь - подписанты электронного документа. Если не указаны, то заполняются из настроек. Если указаны, то устанавливается маршрут подписания См. МаршрутыПодписанияБЭД.МаршрутУказыватьПриСоздании.
		  //  * МаршрутПодписания - СправочникСсылка.МаршрутыПодписания
		  //  * СоздатьНомерАвтоматически - Булево 
		  ПараметрыСозданияДокументаПоФайлу = ИнтерфейсДокументовЭДОКлиентСервер.НовыеПараметрыСозданияДокументаПоФайлу();
		  ПараметрыСозданияДокументаПоФайлу.Организация = Организация;
		  ПараметрыСозданияДокументаПоФайлу.Контрагент = Контрагент;
		  ПараметрыСозданияДокументаПоФайлу.Договор = ДоговорКонтрагента;
		  ПараметрыСозданияДокументаПоФайлу.ВидДокумента = ВидДокумента;
		  ПараметрыСозданияДокументаПоФайлу.НомерДокумента = мНомер;
		  ПараметрыСозданияДокументаПоФайлу.ДатаДокумента = мДата;
		  ПараметрыСозданияДокументаПоФайлу.СуммаДокумента = СуммаДокумента;
		  ПараметрыСозданияДокументаПоФайлу.ОбъектыУчета = Новый Массив;
		  мПодписанты = Новый Массив;
		  мПодписанты.Добавить(Ответственный);
		  ПараметрыСозданияДокументаПоФайлу.Подписанты = мПодписанты;
		  ПараметрыСозданияДокументаПоФайлу.МаршрутПодписания = Справочники.МаршрутыПодписания.ОднойДоступнойПодписью;
		  ПараметрыСозданияДокументаПоФайлу.СоздатьНомерАвтоматически = Ложь;
		  
		  //  * ИмяФайла - Строка - имя файла.
		  //  * ДвоичныеДанные - ДвоичныеДанные - двоичные данные файла.
		  ОписаниеФайла = РаботаСФайламиБЭД.НовоеОписаниеФайла();
		  ОписаниеФайла.ИмяФайла = ИмяФайла + "." + Расширение;
		  ОписаниеФайла.ДвоичныеДанные = Файл.Получить();
		  
		  // Возвращаемое значение:
		  //  Структура:
		  //  * Успех - Булево
		  //  * Ошибки - Массив из См. НовоеОписаниеОшибкиФормирования
		  //  * ЭлектронныйДокумент - ДокументСсылка.ЭлектронныйДокументИсходящийЭДО
		  Результат = ЭлектронныеДокументыЭДО.СоздатьДокументПоФайлу(ПараметрыСозданияДокументаПоФайлу,ОписаниеФайла);
		              //ИнтерфейсДокументовЭДОВызовСервера.СоздатьЭлектронныйДокументПоФайлу(ПараметрыСоздания, ОписаниеФайла);

Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший