Группа компаний ведет торговую и производственную деятельность. Основной поставщик (производственная площадка) реализует готовую продукцию собственного производства и материалы (например необходимые для монтажа или ремонта данных изделий) нескольким торговым филиалам, которые в свою очередь осуществляют в УНФ розничную реализацию покупателям - физическим лицам.
Документы "Реализация" из самописной базы поставщика на платформе 1С:Предприятие 7.7 выгружается в XML универсального формата EnterpriseData 1.14, и затем он загружается в программу "1С: Управление нашей фирмой 3" в документ "Приходная накладная". Возможно поступление как собственных товаров, так и приемка на ответственное хранение с последующим снятием с товетственного хранения при наступлении момента розничной реализации в филиале.
Организации, контрагенты, договора выгружаются в составе реализаций. При выгрузке наименований убираются некорректные символы XML (если в момент записи XML происходит сбой, скорее всего в текстовые поля прокрались символы, не совместимые с форматом XML). Номенклатура выгружается отдельными объектами EnterpriseData 1.14 в самом начале XML-файла результатов выгрузки. Номенклатура должна загружаться раньше документов. Если номенклатуру дописать в конце того же файла XML, что и документы, поле "Единица измерения" в документах не заполнится и прийдется повторять эту же загрузку.
В связи с тем, что из 1С:Предприятие 7.7 выгружаются данные из восьми разных журналов документов с собственной нумерацией, а в 1С: Управление нашей фирмой 3 загружается всего один вид документов, на стороне 1С:Предприятие 7.7 управляем нумерацией приходных накладных УНФ. Поясню эту ситуацию примером кода выгрузки.
...
Процедура Сформировать()
...
Если лОбъект.Вид() = "РННИК_ХК" Тогда
ХмлУзел = ПолучитьХМЛРеализации_РННИК_ХК(ХмлДокумент,лОбъект);
ИначеЕсли лОбъект.Вид() = "РНТЦ_ХК" Тогда
ХмлУзел = ПолучитьХМЛРеализации_РНТЦ_ХК(ХмлДокумент,лОбъект);
ИначеЕсли лОбъект.Вид() = "РНМебОпт" Тогда
ХмлУзел = ПолучитьХМЛРеализации_РНМебОпт(ХмлДокумент,лОбъект);
ИначеЕсли лОбъект.Вид() = "ВНмаг" Тогда
ХмлУзел = ПолучитьХМЛРеализации_Внмаг(ХмлДокумент,лОбъект);
ИначеЕсли лОбъект.Вид() = "РНмат" Тогда
ХмлУзел = ПолучитьХМЛРеализации_РНмат(ХмлДокумент,лОбъект);
ИначеЕсли лОбъект.Вид() = "РН_Импорт" Тогда
ХмлУзел = ПолучитьХМЛРеализации_РН_Импорт (ХмлДокумент,лОбъект);
ИначеЕсли лОбъект.Вид() = "БракРасход" Тогда
ХмлУзел = ПолучитьХМЛРеализации_БракРасход (ХмлДокумент,лОбъект);
ИначеЕсли лОбъект.Вид() = "РасходФилина" Тогда
ХмлУзел = ПолучитьХМЛРеализации_РасходФилинаБух(ХмлДокумент,лОбъект);
КонецЕсли;
...
КонецПроцедуры
...
Функция ПолучитьХМЛРеализации_РННИК_ХК(пХмлДокумент,пДокРеализации)
лПрефикс = СокрЛП(пДокРеализации.Фирма.ПрефиксНомеровДокументов)+"Н";
лСписокУзловДляВыгрузки = ПолучитьХМЛРеализацииТоваровДляЗаполненияПоступления(пХмлДокумент,пДокРеализации,лПрефикс);
Возврат лСписокУзловДляВыгрузки;
КонецФункции
...
Функция ПолучитьХМЛРеализацииТоваровДляЗаполненияПоступления(пХмлДокумент,пДокРеализации)
...
лСтарыйНомерДок = пДокРеализации.НомерДок;
лНовыйНомерДок="";
Для Ном=1 По СтрДлина(лСтарыйНомерДок) Цикл
лТекущийСимвол = Сред(лСтарыйНомерДок,Ном,1);
лНовыйНомерДок = лНовыйНомерДок+?(Найти("0123454566789",лТекущийСимвол)>0,лТекущийСимвол,"");
КонецЦикла;
лНовыйНомерДок = СокрЛП(пПрефиксНомера)+лНовыйНомерДок;;
лСтруктураКлючевыеСвойства.ДобавитьЗначение(лНовыйНомерДок,"Номер");
...
ВыгрузитьПозициюНоменклатуры = 1;
лАртикул = пДокРеализации.Товары.Артикул;
Если СокрЛП(лАртикул)>"" Тогда
НомерСтрокиАртикула = 0;
ТабНоменклатурыУНФ.НайтиЗначение(лАртикул,НомерСтрокиАртикула,"Артикул");
Если НомерСтрокиАртикула>0 Тогда
лКодВПрограмме = ТабНоменклатурыУНФ.ПолучитьЗначение(НомерСтрокиАртикула,"КодВПрограмме");
лСсылкаНоменклатура = ТабНоменклатурыУНФ.ПолучитьЗначение(НомерСтрокиАртикула,"Ссылка");
ВыгрузитьПозициюНоменклатуры = 0;
КонецЕсли;
КонецЕсли;
Если ВыгрузитьПозициюНоменклатуры = 1 Тогда
ЭлементДляВыгрузки = пДокРеализации.Товары.ТекущийЭлемент();
Если СписокНоменклатурыДляВыгрузки.Принадлежит(ЭлементДляВыгрузки)=0 Тогда
СписокНоменклатурыДляВыгрузки.ДобавитьЗначение(ЭлементДляВыгрузки);
КонецЕсли;
КонецЕсли;
...
КонецФункции
Номер документа для загрузки в УНФ формируем в базе-источнике. В процессе формирования номера добавляем префикс журнала документов (8 видов приходных документов в источнике превращаются в одну приходную накладную. При этом берем номер как есть из источника и к нему добавляем префикс - две буквы для организации и одна буква для вида документа, затем тире и числовой номер), в результате файл XML будет содержать один объект поступления и все объекты номенклатуры табличной части к нему.
Под спойлером находится пример одного выгруженного файла единичного документа с номенклатурой, результат множественной выгрузки составляет несколько мегабайт.
XML-файл выгрузки EnterpriseData 1.14
<Message xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:msg="http://www.1c.ru/SSL/Exchange/Message" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<msg:Header>
<msg:Format>http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.14</msg:Format>
<msg:CreationDate>2023-08-30T22:19:33</msg:CreationDate>
<msg:Confirmation>
<msg:ExchangePlan>СинхронизацияДанныхЧерезУниверсальныйФормат</msg:ExchangePlan>
<msg:To>ЭД</msg:To>
<msg:From>ЦБ</msg:From>
<msg:MessageNo>0</msg:MessageNo>
<msg:ReceivedNo>0</msg:ReceivedNo>
</msg:Confirmation>
<msg:AvailableVersion>1.14</msg:AvailableVersion>
</msg:Header>
<Body xmlns="http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.14">
<Справочник.Номенклатура>
<КлючевыеСвойства>
<Ссылка>42727520-2020-2039-3138-3535354d4348</Ссылка>
<НаименованиеПолное>з-з НМК Тубаях Е.С. ИП г.Курск 24.07.23</НаименованиеПолное>
<КодВПрограмме>4/322629</КодВПрограмме>
<Артикул>009.000.00.40.2.000 </Артикул>
<Наименование>з-з НМК Тубаях Е.С. ИП г.Курск 24.07.23</Наименование>
<Группа>
<Ссылка>ec4e46c0-bdf9-11eb-0c98-fa163eafbe03</Ссылка>
<Наименование>Готовая продукция</Наименование>
<КодВПрограмме>НФ-00000033</КодВПрограмме>
</Группа>
</КлючевыеСвойства>
<ТипНоменклатуры>Товар</ТипНоменклатуры>
<ЕдиницаИзмерения>
<ДанныеКлассификатора>
<Код>796</Код>
<Наименование>шт</Наименование>
</ДанныеКлассификатора>
</ЕдиницаИзмерения>
<СтавкаНДС>НДС20</СтавкаНДС>
<Группа>
<Ссылка>ec4e46c0-bdf9-11eb-0c98-fa163eafbe03</Ссылка>
<Наименование>Готовая продукция</Наименование>
<КодВПрограмме>НФ-00000033</КодВПрограмме>
</Группа>
</Справочник.Номенклатура>
<Справочник.Номенклатура>
<КлючевыеСвойства>
<Ссылка>42727520-2020-2039-3138-3332374d4348</Ссылка>
<НаименованиеПолное>з-з НКМ Беспалов С.А. ИП г.Волгоград 17.07.23 17.0</НаименованиеПолное>
<КодВПрограмме>4/322483</КодВПрограмме>
<Артикул>124.000.00.ПС.ПС.0.2.000</Артикул>
<Наименование>з-з НКМ Беспалов С.А. ИП г.Волгоград 17.07.23 17.0</Наименование>
<Группа>
<Ссылка>ec4e46c0-bdf9-11eb-0c98-fa163eafbe03</Ссылка>
<Наименование>Готовая продукция</Наименование>
<КодВПрограмме>НФ-00000033</КодВПрограмме>
</Группа>
</КлючевыеСвойства>
<ТипНоменклатуры>Товар</ТипНоменклатуры>
<ЕдиницаИзмерения>
<ДанныеКлассификатора>
<Код>796</Код>
<Наименование>шт</Наименование>
</ДанныеКлассификатора>
</ЕдиницаИзмерения>
<СтавкаНДС>НДС20</СтавкаНДС>
<Группа>
<Ссылка>ec4e46c0-bdf9-11eb-0c98-fa163eafbe03</Ссылка>
<Наименование>Готовая продукция</Наименование>
<КодВПрограмме>НФ-00000033</КодВПрограмме>
</Группа>
</Справочник.Номенклатура>
<Документ.ПоступлениеТоваровУслуг>
<КлючевыеСвойства>
<Ссылка>4f753920-2020-3536-3232-3533384d4348</Ссылка>
<Дата>2023-08-30T00:00:00</Дата>
<Номер>ХКВ1234</Номер>
<Организация>
<Ссылка>42004620-2020-2020-2020-343432202020</Ссылка>
<Наименование>ТЦ "Мебель Черноземья" ООО</Наименование>
<ЮридическоеФизическоеЛицо>ЮридическоеЛицо</ЮридическоеФизическоеЛицо>
</Организация>
<Контрагент>
<Ссылка>42001320-2020-2020-2020-202032202020</Ссылка>
<Наименование>ООО Холдинговая Компания "Мебель Черноземья"</Наименование>
<ЮридическоеФизическоеЛицо>ЮридическоеЛицо</ЮридическоеФизическоеЛицо>
<СтранаРегистрации>
<Ссылка>ca513764-a7c2-11eb-8988-fa163eafbe03</Ссылка>
<ДанныеКлассификатора>
<Код>643</Код>
<Наименование>РОССИЯ</Наименование>
</ДанныеКлассификатора>
</СтранаРегистрации>
</Контрагент>
</КлючевыеСвойства>
<Товары>
<Строка>
<НомерСтрокиДокумента>1</НомерСтрокиДокумента>
<ДанныеНоменклатуры>
<Номенклатура>
<Ссылка>42727520-2020-2039-3138-3535354d4348</Ссылка>
<НаименованиеПолное>з-з НМК Тубаях Е.С. ИП г.Курск 24.07.23</НаименованиеПолное>
<КодВПрограмме>4/322629</КодВПрограмме>
<Артикул>009.000.00.40.2.000</Артикул>
<Наименование>з-з НМК Тубаях Е.С. ИП г.Курск 24.07.23</Наименование>
<Группа>
<Ссылка>ec4e46c0-bdf9-11eb-0c98-fa163eafbe03</Ссылка>
<Наименование>Готовая продукция</Наименование>
<КодВПрограмме>НФ-00000033</КодВПрограмме>
</Группа>
</Номенклатура>
</ДанныеНоменклатуры>
<ЕдиницаИзмерения>
<ДанныеКлассификатора>
<Код>796</Код>
<Наименование>шт</Наименование>
</ДанныеКлассификатора>
</ЕдиницаИзмерения>
<Количество>1</Количество>
<Сумма>2852</Сумма>
<Цена>2852</Цена>
<СтавкаНДС>БезНДС</СтавкаНДС>
</Строка>
<Строка>
<НомерСтрокиДокумента>2</НомерСтрокиДокумента>
<ДанныеНоменклатуры>
<Номенклатура>
<Ссылка>42727520-2020-2039-3138-3332374d4348</Ссылка>
<НаименованиеПолное>з-з НКМ Беспалов С.А. ИП г.Волгоград 17.07.23 17.0</НаименованиеПолное>
<КодВПрограмме>4/322483</КодВПрограмме>
<Артикул>124.000.00.ПС.ПС.0.2.000</Артикул>
<Наименование>з-з НКМ Беспалов С.А. ИП г.Волгоград 17.07.23 17.0</Наименование>
<Группа>
<Ссылка>ec4e46c0-bdf9-11eb-0c98-fa163eafbe03</Ссылка>
<Наименование>Готовая продукция</Наименование>
<КодВПрограмме>НФ-00000033</КодВПрограмме>
</Группа>
</Номенклатура>
</ДанныеНоменклатуры>
<ЕдиницаИзмерения>
<ДанныеКлассификатора>
<Код>796</Код>
<Наименование>шт</Наименование>
</ДанныеКлассификатора>
</ЕдиницаИзмерения>
<Количество>1</Количество>
<Сумма>107537</Сумма>
<Цена>107537</Цена>
<СтавкаНДС>БезНДС</СтавкаНДС>
</Строка>
</Товары>
<Валюта>
<Ссылка>d8e45ca2-a7c2-11eb-8988-fa163eafbe03</Ссылка>
<ДанныеКлассификатора>
<Код>643</Код>
<Наименование>руб.</Наименование>
</ДанныеКлассификатора>
</Валюта>
<ВидОперации>ПокупкаУПоставщика</ВидОперации>
<Подразделение>
<Ссылка>c55c4906-a7c2-11eb-8988-fa163eafbe03</Ссылка>
<Наименование>Основное подразделение</Наименование>
</Подразделение>
<ДанныеВзаиморасчетов>
<Договор>
<Ссылка>42999920-2020-2020-3137-3734344d4348</Ссылка>
<ВидДоговора>СПоставщиком</ВидДоговора>
<Организация>
<Ссылка>42004620-2020-2020-2020-343432202020</Ссылка>
<Наименование>ТЦ "Мебель Черноземья" ООО</Наименование>
<ЮридическоеФизическоеЛицо>ЮридическоеЛицо</ЮридическоеФизическоеЛицо>
</Организация>
<Контрагент>
<Ссылка>42001320-2020-2020-2020-202032202020</Ссылка>
<Наименование>ООО Холдинговая Компания "Мебель Черноземья"</Наименование>
<ЮридическоеФизическоеЛицо>ЮридическоеЛицо</ЮридическоеФизическоеЛицо>
<СтранаРегистрации>
<Ссылка>ca513764-a7c2-11eb-8988-fa163eafbe03</Ссылка>
<ДанныеКлассификатора>
<Код>643</Код>
<Наименование>РОССИЯ</Наименование>
</ДанныеКлассификатора>
</СтранаРегистрации>
</Контрагент>
<ВалютаВзаиморасчетов>
<Ссылка>d8e45ca2-a7c2-11eb-8988-fa163eafbe03</Ссылка>
<ДанныеКлассификатора>
<Код>643</Код>
<Наименование>руб.</Наименование>
</ДанныеКлассификатора>
</ВалютаВзаиморасчетов>
<РасчетыВУсловныхЕдиницах>false</РасчетыВУсловныхЕдиницах>
<Наименование>2</Наименование>
<Дата>2013-01-03</Дата>
</Договор>
<КурсВзаиморасчетов>1</КурсВзаиморасчетов>
<КратностьВзаиморасчетов>1</КратностьВзаиморасчетов>
</ДанныеВзаиморасчетов>
<СпособПогашенияЗадолженности>Автоматически</СпособПогашенияЗадолженности>
</Документ.ПоступлениеТоваровУслуг>
</Body>
</Message>
Возможна выгрузка как каждого отдельного выбранного документа (кнопка "Выгрузить"), так и массовая выгрузка всех подходящих документов за выбранный период (кнопка "Обработать период"). Результатный файл будет содержать все уникальные объекты документа приходной накладной и множество не объектов номенклатуры всех табличных частей без повторений.
Период анализа при массовой выгрузке документов выбираем не более недели.
В данной обработке предусмотрена синхронизация номенклатуры по артикулу. Дело в том, что у номенклатуры в нашем случае более одного места создания и требуется подставлять номенклатуру, созданную в УНФ в документы, выгружаемые из 1С 7.7. Перед началом выгрузки обработка считывает с диска файл номенклатуры (следующего формата) и подставляет ссылки (ГУИДы) и коды товаров, принадлежащие УНФ, непосредственно в файл выгрузки. Если товар по артикулу не найден в файле, тогда ГУИДы генерируются на лету в базе 1С:Предприятия 7.7.
Пример файла выгрузки номенклатуры из 1С:Управление нашей фирмой
Поля файла номенклатуры через точку с запытой - артикул; код в программе; ГУИД.
800.001.03;НФ-00001036;e9d1a608-1169-11ec-3e90-fa163eafbe03
072.001.00;НФ-00001030;f247e0f0-1163-11ec-3e90-fa163eafbe03
072.002.00;НФ-00001031;42e8d62a-1166-11ec-3e90-fa163eafbe03
010.012.03;НФ-00000767;04daef84-0a41-11ec-1f9f-fa163eafbe03
102.008.10;НФ-00000068;762e3efc-c518-11eb-c596-fa163eafbe03
102.008.11;НФ-00000087;cbb6c128-c9eb-11eb-5680-fa163eafbe03
101.008.10;НФ-00000076;b68294aa-c9c1-11eb-8b9c-fa163eafbe03
Протестировано на Управление нашей фирмой, редакция 3.0 (3.0.2.215).