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

10.10.18

Интеграция - Обмен между базами 1C

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 

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

Это:

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

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

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

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

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

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

См. также

SALE! 20%

Перенос данных из УПП 1.3 в ERP 2 / УТ 11 / КА 2. Переносятся документы, справочная информация и остатки

Обмен между базами 1C Платформа 1С v8.3 1С:Управление производственным предприятием 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Перенос документов, начальных остатков и справочной информации из УПП 1.3 в ERP 2 | из УПП 1.3 в УТ 11 | из УПП в КА 2 | Правила конвертации (КД 2) в продаже с 2015 года, постоянно работаем над их развитием | Более 360 предприятий выполнили переход с использованием этого продукта! | Сэкономьте время - используйте готовое решение для перехода! | Позволяет перенести из УПП 1.3 в ERP / УТ 11 / КА 2 всю возможную информацию | В переносе есть фильтр по организации и множество других опциональных параметров выгрузки | Есть несколько алгоритмов выгрузки остатков на выбор

45650 36520 руб.

04.08.2015    159683    363    267    

345

SALE! 15%

[ED3] Обмен для ERP 2.5, КА 2.5, УТ 11.5 БП 3.0, Розница, УНФ и других с EnterpriseData (универсальный формат обмена), правила обмена

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 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. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

25080 22572 руб.

12.06.2017    134937    723    291    

388

SALE! 20%

Перенос данных из ERP 2 / КА 2 / УТ 11 в БП 3.0. Переносятся документы, начальные остатки и справочники

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

Перенос данных из ERP в БП 3 | из КА 2 в БП 3 | из УТ 11 в БП 3 | из ЕРП в БП 3 | В продаже с 2019г. | Воспользовались более 176 предприятий! | Сэкономьте время - используйте готовое решение для перехода! | Перенос разработан в формате КД 2 (правила конвертации данных) | Переносятся все возможные виды документов, начальных остатков и нормативно-справочная информация| Можно опционально выгружать каждую пару "номенклатура+характеристика" как отдельную номенклатуру | Есть выгрузка настроек счетов учета и зарплатных данных из ERP / КА 2 | Можно проверить на вашем сервере перед покупкой, обращайтесь!

34650 27720 руб.

15.04.2019    68418    178    138    

111

SALE! 20%

Перенос данных из ERP 2 / КА 2 в ЗУП 3. Переносятся остатки, документы и справочники

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

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

43450 34760 руб.

03.12.2020    34169    80    58    

78

SALE! 10%

Перенос данных из УТ 10.3 в УТ 11.5. Переносятся документы (обороты за период), справочная информация и остатки

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 Оперативный учет 1С:Управление торговлей 10 1С:Управление торговлей 11 Россия Управленческий учет Платные (руб)

Перенос данных из 1С:Управление торговлей 10.3 в 1С:Управление торговлей 11.5 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УТ 10.3 (10.3.87.x) и УТ 11.5 (11.5.16.x).

28000 25200 руб.

23.07.2020    46300    196    64    

158

SALE! 10%

Перенос данных из БП 3.0 в УТ 11 / КА 2 / ERP 2. Переносятся начальные остатки, документы и справочники

Обмен между базами 1C Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

В продаже с 2014г. | Воспользовались более 122 предприятий! | Перенос данных из БП 3.0 в УТ 11 | из БП 3.0 в КА 2 | из БП 3.0 в ERP | Сэкономьте свое время - используйте готовое решение для перехода! | Постоянно работаем над развитием переноса данных | Обновляем на новые релизы 1С | Есть фильтр выгрузки по организациям | Переносятся начальные остатки на выбранную дату, документы за период времени и вся возможная справочная информация | Перенос сделан на технологии КД 2 (правила конвертации данных)

50722 45650 руб.

31.10.2014    231408    124    327    

296

Перенос данных из Парус 10 в ЗГУ ред.3

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

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

60000 руб.

05.10.2022    9208    9    8    

10

SALE! 10%

Перенос данных из УПП 1.3 в БП 3.0. Переносятся документы (обороты за период), справочная информация и остатки

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

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УПП 1.3 (1.3.223.x) и БП 3.0 (3.0.149.x). Правила подходят для версии ПРОФ и КОРП.

28000 25200 руб.

15.12.2021    20251    132    38    

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


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

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

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

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

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

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

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


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

Еханый бабай)) теперь вкурил!) Спасибо, это опечатка, буду исправлять.
5. fancy 35 11.10.18 07:38 Сейчас в теме
Спасибо за статью, все подробно и понятно.
Еще наверное надо поправить в аннотации
В источнике приемнике файл будет храниться в справочнике "Книга Продаж Присоединенные Файлы".
6. Viktor_Ermakov 363 12.10.18 14:30 Сейчас в теме
(5)
Спасибо, замечание исправил.
Оставьте свое сообщение