Заметки КД 2.1: Как передать файл, динамически создаваемый в источнике, в справочник присоединенных файлов приемника

10.10.18

Интеграция - Перенос данных 1C

В БП 3.0 есть документ "Книга Продаж Для Передачи В ЭлектронномВиде" из которого выгружается XML файл. Задача: Нужно из БП 3.0 посредством правил обмена, вместе с документом книга продаж сформировать и перенести XML файл в базу приемник. В приемнике файл будет храниться в справочнике "Книга Продаж Присоединенные Файлы".

Первым делом, конечно, нужно создать и настроить ПКО для передачи самого документа "Книга продаж в электронном виде", но этого делать не буду, представим, что у Вас это уже настроено.

Приблизительно это выглядит вот так

Заходим в ПКО обработчик события "ПриВыгрузке".

P.S. изначально хотел писать код в "ПередВыгрузкой", но почему то экспортная процедура модуля объекта, не хотела отрабатывать, выдавало ошибку что метод не обнаружен.

Весь код обработчика:

Если Не Отказ И ЗначениеЗаполнено(Источник.ДанныеОтчета) Тогда
	
	ВыгружаемыеДанные = Источник.ВыгрузитьДокумент();
	
	РеквизитыФайла = Новый Структура("ВладелецФайла, Наименование, ФайлХранилище, Расширение, Автор, ДатаСоздания, Размер");
	РеквизитыФайла.ВладелецФайла = Источник.Ссылка;
	РеквизитыФайла.ДатаСоздания = ТекущаяДата();
	
	Для Каждого ФайлВыгрузки Из ВыгружаемыеДанные Цикл
		
		ИмяФайлаВыгрузки = СтрРазделить(ФайлВыгрузки.ИмяФайлаВыгрузки,".");
		РеквизитыФайла.Наименование = ИмяФайлаВыгрузки[0];
		РеквизитыФайла.Расширение = ИмяФайлаВыгрузки[1];
		РеквизитыФайла.Автор = Строка(Пользователи.ТекущийПользователь());
		
		ДвоичныеДанныеФайла = ПолучитьИзВременногоХранилища(ФайлВыгрузки.АдресФайлаВыгрузки);
		
		РеквизитыФайла.Размер = ДвоичныеДанныеФайла.Размер();
		
		РеквизитыФайла.ФайлХранилище = 
			Новый ХранилищеЗначения(ДвоичныеДанныеФайла);	
		
		ВыгрузитьПоПравилу(РеквизитыФайла,,,,"КнигаПродажПрисоединенныеФайлы");
		
	КонецЦикла;
	
КонецЕсли

В моём случае, Источник это выгружаемый Документ Объект, а значит у него доступны экспортные процедуры и функции модуля объекта.

В модуле объекта есть функция, которая формирует файл XML и возвращает массив структур, где содержится имя файла, и адрес временного хранилища.

ВыгружаемыеДанные = Источник.ВыгрузитьДокумент();

Далее мы создаем структуру "РеквизитыФайла", которая нам понадобится в ПКО для передачи в источник элемента справочника присоединенных файлов, и заполняем ее данными.

Структуру мы составляем по реквизитам Вашего справочника присоединенных файлов в базе приемнике.

РеквизитыФайла = Новый Структура("ВладелецФайла, Наименование, ФайлХранилище, Расширение, Автор, ДатаСоздания, Размер");
РеквизитыФайла.ВладелецФайла = Источник.Ссылка;
РеквизитыФайла.ДатаСоздания = ТекущаяДата();
	
Для Каждого ФайлВыгрузки Из ВыгружаемыеДанные Цикл
		
	ИмяФайлаВыгрузки = СтрРазделить(ФайлВыгрузки.ИмяФайлаВыгрузки,".");
	РеквизитыФайла.Наименование = ИмяФайлаВыгрузки[0];
	РеквизитыФайла.Расширение = ИмяФайлаВыгрузки[1];
	РеквизитыФайла.Автор = Строка(Пользователи.ТекущийПользователь());
		
	ДвоичныеДанныеФайла = ПолучитьИзВременногоХранилища(ФайлВыгрузки.АдресФайлаВыгрузки);
		
	РеквизитыФайла.Размер = ДвоичныеДанныеФайла.Размер();
		
	РеквизитыФайла.ФайлХранилище = 
		Новый ХранилищеЗначения(ДвоичныеДанныеФайла);	
	
	ВыгрузитьПоПравилу(РеквизитыФайла,,,,"КнигаПродажПрисоединенныеФайлы");
		
КонецЦикла;

Тут стоит обратить внимание на строчки

ДвоичныеДанныеФайла = ПолучитьИзВременногоХранилища(ФайлВыгрузки.АдресФайлаВыгрузки);
		
РеквизитыФайла.Размер = ДвоичныеДанныеФайла.Размер();
		
РеквизитыФайла.ФайлХранилище = 
	Новый ХранилищеЗначения(ДвоичныеДанныеФайла);

Где мы получаем из временного хранилища двоичные данные, что бы получить размер, а потом записываем их в хранилище значений, уже непосредственно для передачи в справочник присоединенных файлов.

Последней строкой кода мы вызываем ПКО для передачи элемента справочника присоединенных файлов и передаем туда наши реквизиты файла

ВыгрузитьПоПравилу(РеквизитыФайла,,,,"КнигаПродажПрисоединенныеФайлы");

Само ПКО выглядит так. Источника нет, обработчики ничего не содержат.

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

А в ПКС каждого, в обработчике "ПередВыгрузкой" мы прописываем алгоритмы значений этих свойств, берем их из переданной структуры, а это Источник

У меня в конечной базе есть реквизит "ФайлХранилище" с типом Хранилище значений, в него мы передаем значение из структуры так же с типом хранилище значений, которое мы создавали программно выше.

На этом мой пример окончен.

 

В этой статье описан частный случай, но главное понять и подчеркнуть для себя, что Вам нужно для того что бы перенести файлы в Вашем случае.

Это:

1. Экспортная процедура по созданию файла.

2. Ссылка на временное хранилище файла в базе источнике или его двоичные данные.

3. Наименование файла.

Этого достаточно, чтобы у Вас все получилось.

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

Вступайте в нашу телеграмм-группу Инфостарт

Конвертация данных передача XML файла

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

SALE! 15%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист 1С:Предприятие 8 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Россия Платные (руб)

Правила в универсальном формате обмена для ERP 2.5, КА 2.5, УТ 11.5, БП 3.0, Розница, УНФ, для последних версий конфигураций. Ссылки на другие конфигурации в описании публикации. Правила совместимы со всеми другими версиями конфигураций новыми и старыми, поддерживающими обмен и синхронизацию в формате EnterpriseData. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

27633 руб.

12.06.2017    162534    983    324    

484

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист 1С:Предприятие 8 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Переносите справочную информацию, остатки и документы из УПП 1.3 в Бухгалтерию 3.0 с помощью готовых правил. Переносится более 50 видов документов. Простой интерфейс и понятные настройки.

42000 37800 руб.

15.12.2021    35259    261    67    

199

Перенос данных 1C Взаиморасчеты Оптовая торговля Логистика, склад и ТМЦ Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист 1С:Предприятие 8 1С:Управление торговлей 10 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Управленческий учет Платные (руб)

Можно проверить до покупки, оставьте заявку! Воспользовались более 268 компаний! Перенос данных из УТ 10.3 в УТ 11 | из УТ 10.3 в КА 2 | из УТ 10.3 в ERP. Решение для перехода с УТ 10.3. Можно перенести начальные остатки, нормативно-справочную информацию и все возможные документы. При выгрузке можно установить отбор по периоду, организациям и складам.

50200 руб.

24.04.2015    208951    176    253    

296

Внешние источники данных Кадровый учет Файловый обмен (TXT, XML, DBF), FTP Перенос данных 1C Программист 1С:Предприятие 8 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактическим удержаниям, НДФЛ, вычетам, страховым взносам из базы Парус 10 учреждений (далее Парус) в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (далее 1С) и начать с ней работать с любого месяца года.

85400 руб.

05.10.2022    14021    16    8    

17

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Программист 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из ERP в ЗУП 3 | из КА 2 в ЗУП | Готовые правила конвертации данных (КД 2) для переноса остатков, документов с движениями и справочной информации 3 | Есть перенос начальной задолженности по зарплате и начальной штатной расстановки на выбранную дату | Обороты за прошлые годы (данные для расчета среднего) переносятся свернуто в документ "Перенос данных" | Есть фильтр по организациям | Документы за текущий период переносятся сразу с движениями, поэтому не потребуется делать перерасчеты | Перенос можно проверить перед покупкой, обращайтесь!

55200 руб.

03.12.2020    46123    130    83    

120

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист 1С:Предприятие 8 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Управление производственным предприятием Россия Платные (руб)

Регулярный обмен, выгрузка, перенос из КА 1.1, УПП 1.3, УТ 10.3 для обмена с любыми конфигурациями, поддерживающими обмен в формате EnterpriseData (КД3) - БП 3.0, ERP, КА 2, УТ 11, Розница 3, УНФ 3 и другими. Правила для старых и доработанных конфигураций не требуют синхронного обновления и совместимы с новыми и будущими конфигурациями. Обмен по расписанию, через папку, FTP, почту.

27572 руб.

18.02.2016    205321    678    548    

564

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист 1С:Предприятие 8 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Платные (руб)

Перенос данных из КА 1.1 в КА 2 | из КА 1.1 в УТ 11 | Воспользовались более 367 компаний! | Переносятся все возможные виды документов, начальных остатков и вся справочная информация из "1С:КА 1.1" в "1С:КА 2.х" / "1С:УТ 11" | Разработан в формате КД 2 (правила конвертации данных) | Фильтр по организациям при выгрузке | Выбор разных алгоритмов выгрузки начальных остатков | Можно проверить перенос до покупки!

58000 руб.

04.12.2015    200443    263    356    

414
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. PerlAmutor 162 10.10.18 13:04 Сейчас в теме
(0)
Нужно из БП 3.0 посредством правил обмена, вместе с документом книга продаж сформировать и перенести XML файл в базу источник


А тут нет противоречия? Перенос вроде бы всегда идет из базы источника в базу приемник.

(0)
P.S. изначально хотел писать код в "ПередВыгрузкой", но почему то экспортная процедура модуля объекта, не хотела отрабатывать, выдавало ошибку что метод не обнаружен.

Очень странно. Если говорить о обработке УниверсальныйОбменДаннымиXML, то оба обработчика вызываются в пределах одной процедуры ВыгрузитьПоПравилу().

Спасибо за статью.
2. Viktor_Ermakov 402 10.10.18 13:24 Сейчас в теме
(1)
А тут нет противоречия? Перенос вроде бы всегда идет из базы источника в базу приемник.

Вы наверное не совсем поняли смысл: в источнике файл выгрузки XML не хранится, а формируется динамически в момент выгрузки, затем передается в приемник.

Очень странно. Если говорить о обработке УниверсальныйОбменДаннымиXML, то оба обработчика вызываются в пределах одной процедуры ВыгрузитьПоПравилу().

Да, это странно, но почему то у меня отработало именно так.
3. PerlAmutor 162 10.10.18 13:46 Сейчас в теме
(2)
Вы наверное не совсем поняли смысл: в источнике файл выгрузки XML не хранится, а формируется динамически в момент выгрузки, затем передается в приемник.


Ну вот Вы же сами написали "в приемник". А в тексте написано "в источник".
4. Viktor_Ermakov 402 10.10.18 13:48 Сейчас в теме
(3)
Ну вот Вы же сами написали "в приемник". А в тексте написано "в источник".

Еханый бабай)) теперь вкурил!) Спасибо, это опечатка, буду исправлять.
5. fancy 37 11.10.18 07:38 Сейчас в теме
Спасибо за статью, все подробно и понятно.
Еще наверное надо поправить в аннотации
В источнике приемнике файл будет храниться в справочнике "Книга Продаж Присоединенные Файлы".
6. Viktor_Ermakov 402 12.10.18 14:30 Сейчас в теме
(5)
Спасибо, замечание исправил.
7. Pavel_Vladivostok 58 12.07.24 05:53 Сейчас в теме
Отличный пример, я раньше сталкивался с выгрузкой присоединенных файлов из картинок номенклатуры, а сейчас предстоит настроить выгрузку печатных форм актов сверки в 1с эдо. Все зависимые от объекта данные, в которых есть ссылка на выгруженный объект я предпочитаю выгружать после выгрузки основного объекта в событиях ПВД а не пко, когда объект выгружается по регистрации в базе источнике. В ПКО объекты прилетают при выгрузке по ссылкам, и при использовании "ВыгрузитьПоПравилу" в событиях пко может привести к многократной выгрузки одних и тех же зависимых объектов, при загрузке такие объекты также многократно перезаполняются.
Для отправки сообщения требуется регистрация/авторизация