Обмен документами в формате CommerceML по схеме поставщик-покупатель между 1С 7.7 <=> 7.7 (конфигурация «Торговля + Склад», ред. 9.2) и 1С 7.7 <=> 8.x (конфигурация «Управление торговлей, ред. 10.3»)

20.12.12

Учетные задачи - Оптовая торговля

Данная статья посвящена обмену документами в формате CommerceML по схеме поставщик-покупатель между конфигурациями «Торговля + склад, редакция 9.2» 1С 7.7 (далее ТиС) и «Управление торговлей, редакция 10.3» 1С 8.х (далее УТ 10.3).
Рассматривается выгрузка документов «Реализация ТМЦ», «Заказ поставщику» и, соответственно загрузка документов «Поступление ТМЦ» и «Заявка покупателя», сопоставление собственной номенклатуры – номенклатуре поставщиков на стороне покупателей и преобразование между форматами различных версий.

Скачать файлы

Наименование Файл Версия Размер
Файлы преобразования
.zip 3,67Kb
48
.zip 3,67Kb 48 Скачать
Примеры выгрузок
.zip 10,98Kb
29
.zip 10,98Kb 29 Скачать
Примеры преобразованных выгрузок
.zip 10,18Kb
17
.zip 10,18Kb 17 Скачать

Для кого предназначена данная статья

Данная статья посвящена обмену документами в формате CommerceML по схеме поставщик-покупатель между конфигурациями «Торговля + склад, редакция 9.2» 1С 7.7 (далее ТиС) и «Управление торговлей, редакция 10.3» 1С 8.х (далее УТ 10.3).

Рассматривается выгрузка документов «Реализация ТМЦ», «Заказ поставщику» и, соответственно загрузка документов «Поступление ТМЦ» и «Заявка покупателя», сопоставление собственной номенклатуры – номенклатуре поставщиков на стороне покупателей и преобразование между форматами различных версий.

Материал также будет интересен для тех, кто пытался настроить обмен не только между разными версиями 1С, но и в рамках одинаковых версий.

Сразу оговорюсь про некоторые границы статьи и темы, которые она затрагивает:

  1. Приведенная информация не касается конфигурации «Управление торговлей, версия 11» ­– обмен данными в формате CommerceML в ней на момент написания статьи (декабрь 2012 года) отсутствует
  2. Не рассматривается продажа в валюте, отличной от российского рубля
  3. Не рассматривается ситуация пересчета коэффициентов номенклатуры, т.е. считается, что товары у поставщика и покупателя измеряются в одинаковых единицах
  4. При установке соответствия между номенклатурой поставщика и собственной – следует задавать только взаимно-однозначное соответствие. Т.е. если поставщик разделяет товары «USB-Flash диск 4Gb, зеленый» и «USB-Flash диск 4Gb, красный» − то и на стороне покупателя это тоже должны быть разные товары (ТиС 9.2) или разные пары товар-характеристика (для УТ 10.3 если ведется учет по характеристикам)
  5. Не рассматривается правильная загрузка реквизитов документа, связанных с налоговым учетом, а именно флагов «Учитывать НДС», «НДС в сумме». В стандартных обработках загрузки они устанавливаются автоматически в 1, при этом их значение в загружаемых файлах игнорируется
  6. В обработках отсутствует выгрузка и загрузка информации о государственных таможенных декларациях, странах происхождения и т.п.
  7. Все исправления вносимые в конфигурацию являются необходимыми для корректного обмена, но, возможно, недостаточными для правильной работы всех возможностей обработок. Например, обработка загрузки в «УТ 10.3» при создании номенклатуры некорректно воссоздает иерархию источника
  8. В рамках данной статьи рассматривается только обмен товарами в следующих вариантах:
    • Реализация (поставщика) становится поступлением (у покупателя) для
      • ТиС => ТиС
      • ТиС => УТ
    • Заказ поставщику (покупателя) становится заявкой (у поставщика)
      • ТиС => ТиС
      • УТ => ТиС
  9. Не рассматривается обмен между двумя конфигурациями УТ

Формат обмена «Поставщик»-«Покупатель». Как это работает.

В конфигурациях ТиС 9.2 и УТ 10.3 существует возможность обмениваться документами между поставщиком и покупателем, а именно автоматизировать процесс заказа и внесения поступлений товара в программу.

Сопоставление номенклатуры осуществляется на стороне покупателя на этапе загрузки документов от поставщика. Пример того, как это работает, показан далее.

Версия 7.77.7 от поставщика к покупателю

Подготовительная работа

Для загрузки-выгрузки нам понадобятся – на каждой стороне:

  1. 1С 7.7 конфигурация «Торговля и склад, редакция 9.2»
  2. Внешняя компонента V7Plus для работы с форматом XML
  3. Одинаковые краткие наименования единиц измерения в справочнике «ОКЕИ» с обоих сторон

Также для обмена нам понадобится первоначальная настройка со стороны как поставщика так и покупателя.

Поставщик

У основной фирмы должен быть задан идентификатор – на вкладке «Прочие».

Необходимо также завести элемент справочника «Каталоги номенклатуры», указать владельца – основную фирму, от имени которой будут производиться продажи.

Каталог товаров на стороне поставщика

Покупатель

На стороне покупателя также необходимо создать элемент справочника «Каталоги номенклатуры» с тем же идентификатором, но с владельцем каталога равным контрагенту – поставщику. Идентификаторы каталогов должны совпадать.

Также необходимо у контрагента-поставщика задать такой же идентификатор, как у фирмы продавца в базе поставщика.

Каталог товаров на стороне покупателя

Выгрузка

Выгрузка документа «Реализация» происходит очень просто – достаточно нажать в форме документа на кнопку «Действия» и выбрать «Выгрузить (отправить по электронной почте)».

Выгрузка реализации

Загрузка

Рассмотрим загрузку поступления товара у клиента на типовой конфигурации «Торговля + Склад» 7.70.970.

Для загрузки документа выберем меню «Сервис» - «Обмен данными в формате CommerceML» - «Просмотр и загрузка документа». Выберем файл, выгруженный поставщиком.

Загрузка документа

Сопоставление номенклатуры

Следующий этап – сопоставление номенклатуры.

Для этого выбираем «Просмотр каталога товаров».

На вкладке Фильтры выберем «Только не идентифицированные».

Сопоставление номенклатуры, рис.1

Затем отключим иерархию и перейдем на закладку «Основная».

  • Колонка «Ид.» - код товара в базе поставщика
  • Колонка «Наименование» - наименование товара в базе поставщика

Для сопоставление товара делаем двойной клик на строке.

Сопоставление товаров, рис.2

Есть 2 варианта действий:

  1. создать новый товар (с повторением иерархии источника)
  2. выбрать для номенклатуры поставщика аналогичный товар в собственной базе.

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

Загрузка для версии 8.x, а также выгрузка/загрузка заказа поставщику и заявки покупателя выглядит подобным образом.

Где почитать подробнее

Для 1С версии 7.7 подробнее об этом обмене можно почитать в официальном руководстве «Конфигурация Торговля+Склад, ред 9.2» в главе 7 – сервисные возможности. Также информация об этом обмене есть на дисках ИТС в разделе «Методическая поддержка 1С:Предприятия 7.7» / «Обмен данными в формате XML» / «Обмен коммерческой информацией в формате XML» / «Электронный обмен документами при проведении торговых операций».

По работе с этим форматом в 1С версии 8.1 не так много источников, и большинство из них описывает как с его помощью обновлять информацию на сайте. Однако краткое описание обмена есть в разделе ИТС «Методическая поддержка 1С:Предприятия 8» / «Разработчикам» / «Обмен данными, прикладные технологии» / «Обмен Поставщик-Покупатель».

Ложка дегтя

Однако так все должно работать в теории, но на практике все несколько иначе. Чтобы все работало как написано, необходимо внести изменения в конфигурацию. Начнем с конфигурации «Торговля + Склад, редакция 9.2»

«Торговля + Склад, ред. 9.2»

Исправление 1

При загрузке поступления товара некорректно загружается единица изменения, а именно поле «Единица» загружаемого документа «Поступление ТМЦ» для всех товаров заполняется одним и тем же значением.

Происходит это из-за того, что при поиске единицы для подстановки в документ используется флаг глобального описка, т.е. без учета номенклатуры-владельца.

Поэтому в обработке XMLЗагрузкаДокументовПоСхеме в функции Единица() необходимо в коде

Если СпрЕдиниц.НайтиПоРеквизиту("ОКЕИ",СпрКлассификаторЕдиниц.ТекущийЭлемент(), 1) = 0 Тогда 

поменять последний аргумент вызова функции с 1 на 0

Если СпрЕдиниц.НайтиПоРеквизиту("ОКЕИ",СпрКлассификаторЕдиниц.ТекущийЭлемент(), 0) = 0 Тогда 

Исправление 2

Если мы хотим выгрузить документ «Заказ поставщику», то при выгрузке мы должны выбрать каталог по которому идентифицировать товары. При этом, если какие-то товары из заказа не сопоставлены с товарами поставщика – то выгрузить документ будет невозможно.

Этот недостаток можно обойти – подобные товары на стороне покупателя можно выгружать с уникальным кодом, при этом у поставщика они будут загружаться как «не идентифицированные», но с названиями покупателя.

Однако, поскольку каталог товаров выгружается отдельно, а документ отдельно – надо чтобы идентификаторы товаров в каждой части выгрузки совпадали, иначе 1С при загрузке документа не сможет сопоставить товары и часть товаров будет с пустым наименованием.

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

Для этого необходимо внести следующие изменения в обработку XMLВыгрузкаДокументовПоСхеме:

Добавить в начало текста модуля хэш-функцию вида

Функция Хэш(СтрокаХэш, hash=0, M = 31, TABLE_SIZE = 18446744073709551616)
   
//TABLE_SIZE = 18446744073709551615; 64 бита
    //M = 31; Умножитель
   
ДлинаСтроки = СтрДлина(СтрокаХэш);
    Для
к=1 по ДлинаСтроки Цикл
       
hash = M * hash + КодСимв(Сред(СтрокаХэш,к,1));
    КонецЦикла;
    Возврат
hash%TABLE_SIZE;
КонецФункции

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

В коде функции ПолучитьИдТовараПоКаталогу() заменить строки

Если СпрАналоги.НайтиПоРеквизиту("Каталог", Каталог, 0) = 0 Тогда
    Предупреждение(
"Для товара " + Товар + " не задан аналог!");
    Возврат
"";
Иначе

на

Если СпрАналоги.НайтиПоРеквизиту("Каталог", Каталог, 0) = 0 Тогда
    Сообщить(
"Для товара " + Товар + " не задан аналог!");
    Возврат
Хэш(Товар.Наименование);
Иначе

«Управление торговлей, ред.  10.3»

В этой конфигурации с обменом в формате CommerceML все обстоит гораздо хуже.

Во-первых нельзя просто так загрузить документ от поставщика и при этом сразу сопоставить товары, так как по умолчанию при загрузке документа «Поступление ТМЦ» сделанные соответствия не записываются (для их сохранения в выгрузке должен присутствовать каталог) и при повторной загрузке вновь требуют сопоставления.

Во-вторых, загрузка прайс-листов и документов производится в 2 этапа. Первый – это сопоставление каталога товаров – этап на котором необходимо сопоставить все номенклатурные позиции поставщика – своим. При этом нельзя данную операцию сделать в несколько подходов – при очередной загрузке каталога вся прошлая информация затирается.

Исправление 1

Возможность загрузить документ, даже если не все позиции сопоставлены.

В обработке ЗагрузкаДанныхCommerceML → Формы → Форма

процедура «ВыполнитьЧтениеДанных» - закомментировать строку

ЭлементыФормы.КоманднаяПанельНижняя.Кнопки.СохранитьДанные.Доступность = РезультатТестирования;

процедура «ОбработкаОповещения» - закомментировать строку

ЭлементыФормы.КоманднаяПанельНижняя.Кнопки.СохранитьДанные.Доступность = НЕ ПриЗакрытииЕстьНесопоставленные;

Исправление 2

Следующее изменение позволяет не затирать все записи регистра сведений «Номенклатура контрагентов», а для каждой строки (не с точностью до контрагента, а с точностью до ключа контрагент-характеристика-номенклатура) в отдельности происходит перезапись данных.

ЗагрузкаДанныхCommerceML => Модуль объекта, в функции СохранитьКаталог()

Код

НаборЗаписей.Отбор.Контрагент.Установить(ИнформацияДокумента.Контрагент);
Для Каждого
СтрокаТаблицы Из СтрокиДокумента Цикл
   
ЗаписьРегистра = НаборЗаписей.Добавить();
   
ЗаписьРегистра.Контрагент = ИнформацияДокумента.Контрагент;
   
ЗаписьРегистра.Номенклатура = СтрокаТаблицы.Номенклатура;
   
ЗаписьРегистра.ХарактеристикаНоменклатуры =
       
СтрокаТаблицы.ХарактеристикаНоменклатуры;
   
ЗаписьРегистра.КодНоменклатурыКонтрагента = СтрокаТаблицы.Ид;
   
ЗаписьРегистра.НаименованиеНоменклатурыКонтрагента =
        ?(
ПустаяСтрока(СтрокаТаблицы.НаименованиеКраткое),
       
СтрокаТаблицы.Наименование,
       
СтрокаТаблицы.НаименованиеКраткое);
   
ЗаписьРегистра.АртикулНоменклатурыКонтрагента =
       
СтрокаТаблицы.Артикул;
   
ЗаписьРегистра.ШтрихКодНоменклатурыКонтрагента =
       
СтрокаТаблицы.ШтрихКод;
   
ЗаписьРегистра.ЕдиницаНоменклатурыКонтрагента =
       
СтрокаТаблицы.БазоваяЕдиницаИзмерения;
КонецЦикла;
Попытка
   
НаборЗаписей.Записать(ИСТИНА);
Исключение
   
ОписаниеОшибкиЗаписи = ОписаниеОшибки();
   
#Если клиент тогда
   
Сообщить("При записи каталога товаров произошла ошибка: " +
       
Символы.ПС + ОписаниеОшибкиЗаписи, СтатусСообщения.Важное);
   
#КонецЕсли
   
Возврат ЛОЖЬ;
КонецПопытки;

заменить на

Для Каждого СтрокаТаблицы Из СтрокиДокумента Цикл
    Если НЕ
ЗначениеЗаполнено(СтрокаТаблицы.Номенклатура)Тогда
        Продолжить;
    КонецЕсли;
   
НаборЗаписей.Очистить();
   
НаборЗаписей.Отбор.Контрагент.Установить(ИнформацияДокумента.Контрагент);
   
НаборЗаписей.Отбор.Номенклатура.Установить(СтрокаТаблицы.Номенклатура);
   
НаборЗаписей.Отбор.ХарактеристикаНоменклатуры.Установить(
       
СтрокаТаблицы.ХарактеристикаНоменклатуры);
   
ЗаписьРегистра = НаборЗаписей.Добавить();
   
ЗаписьРегистра.Контрагент = ИнформацияДокумента.Контрагент;
   
ЗаписьРегистра.Номенклатура = СтрокаТаблицы.Номенклатура;
   
ЗаписьРегистра.ХарактеристикаНоменклатуры =
       
СтрокаТаблицы.ХарактеристикаНоменклатуры;
   
ЗаписьРегистра.КодНоменклатурыКонтрагента = СтрокаТаблицы.Ид;
   
ЗаписьРегистра.НаименованиеНоменклатурыКонтрагента =
        ?(
ПустаяСтрока(СтрокаТаблицы.НаименованиеКраткое),
       
СтрокаТаблицы.Наименование, СтрокаТаблицы.НаименованиеКраткое);
   
ЗаписьРегистра.АртикулНоменклатурыКонтрагента = СтрокаТаблицы.Артикул;
   
ЗаписьРегистра.ШтрихКодНоменклатурыКонтрагента = СтрокаТаблицы.ШтрихКод;
   
ЗаписьРегистра.ЕдиницаНоменклатурыКонтрагента =
       
СтрокаТаблицы.БазоваяЕдиницаИзмерения;
    Попытка
       
НаборЗаписей.Записать(ИСТИНА);
    Исключение
       
ОписаниеОшибкиЗаписи = ОписаниеОшибки();
       
#Если клиент тогда
       
Сообщить("При записи каталога товаров произошла ошибка: " + Символы.ПС +
           
ОписаниеОшибкиЗаписи, СтатусСообщения.Важное);
       
#КонецЕсли
       
Возврат ЛОЖЬ;
    КонецПопытки;
КонецЦикла;

Между строчками

Для Каждого СтрокаТаблицы Из СтрокиДокумента Цикл
  
Ключ = Строка(СтрокаТаблицы.Номенклатура.УникальныйИдентификатор()) + «…»

вставить

Если НЕ ЗначениеЗаполнено(СтрокаТаблицы.Номенклатура)Тогда
    Продолжить;
КонецЕсли;

Это изменение позволяет записывать не весь каталог.

В функции СохранитьДанные() заменить

Если НЕ ТестированиеДанных(СтрокаСообщенияПользователю) Тогда

на

Если НЕ ТестированиеДанных(СтрокаСообщенияПользователю, Ложь) Тогда

в функции ТестированиеДанных() заменить

Функция ТестированиеДанных(СтрокаСообщенияПользователю) Экспорт

на

Функция ТестированиеДанных(СтрокаСообщенияПользователю, ПроверятьНоменклатуру = Истина) Экспорт

и

ЕстьНеопределенныеТовары = ЕстьНеопределенныеТовары ИЛИ НЕ ЗначениеЗаполнено(СтрокаТаблицы.Номенклатура);

заменить на

Если ПроверятьНоменклатуру Тогда
   
ЕстьНеопределенныеТовары = ЕстьНеопределенныеТовары ИЛИ
        НЕ
ЗначениеЗаполнено(СтрокаТаблицы.Номенклатура);
КонецЕсли;

и в тексте

ЕстьНеопределенныеЕдиницы = ЕстьНеопределенныеЕдиницы ИЛИ
   
ЗначениеНеОпределено(СтрокаТаблицы.БазоваяЕдиницаИзмерения);
ЕстьНеопределенныеТовары = ЕстьНеопределенныеТовары ИЛИ
    НЕ
ЗначениеЗаполнено(СтрокаТаблицы.Номенклатура);
ЕстьНеопределенныеКачестваТовара = ЕстьНеопределенныеКачестваТовара ИЛИ
   
ЗначениеНеПустаяСтрока(СтрокаТаблицы.Качество);

Закомментировать вторую строку

ЕстьНеопределенныеЕдиницы = ЕстьНеопределенныеЕдиницы ИЛИ
   
ЗначениеНеОпределено(СтрокаТаблицы.БазоваяЕдиницаИзмерения);
// ЕстьНеопределенныеТовары = ЕстьНеопределенныеТовары ИЛИ НЕ ЗначениеЗаполнено(СтрокаТаблицы.Номенклатура);
ЕстьНеопределенныеКачестваТовара = ЕстьНеопределенныеКачестваТовара ИЛИ
   
ЗначениеНеПустаяСтрока(СтрокаТаблицы.Качество);

Этими изменениями мы отключили проверку на несопоставленную номенклатуру и добавили возможность загружать документ с такой номенклатурой. В этом случае у нас заполнятся все колонки (сумма, количество и т.п.), кроме колонок «Номенклатура», «Характеристика номенклатуры», «Единица» и т.п. 

Форматы обмена CommerceML, взаимодействие 7.7 и 8.x

Если для взаимодействия двух 1С версий 7.7 никаких преобразований не требуется, то, в версии 8.x используется другая версия формата CommerceML, которая не совместима с предыдущей.

Поскольку оба формата являются подмножествами XML, то для преобразования между ними можно использовать преобразования XSLT.

Реализация 7.7 => Поступление 8.x

Выгруженная реализация выглядит следующим образом (указаны только основные поля):

  • Корневой XML-элемент – «КоммерческаяИнформация»
    В нее входят:
  • Каталог
    • Атрибут «Идентификатор» – идентификатор каталога из 1С
    • Атрибут «Наименование» – наименование каталога из 1С
    • Атрибут «Владелец» – идентификатор фирмы-владельца каталога
    • Атрибут «Единица» - единица для товаров каталога по умолчанию
    • Список групп – элементы «Группа»
      • Атрибут «Идентификатор» – собственный формат идентификатора (вида «ID__B___0___0___84___0___0___________24_____») для группы (вручную не задается – внутреннее представление 1С, не требует вмешательства)
      • Атрибут «ИдентификаторВКаталоге» - код группы в справочнике «Номенклатура»
      • Атрибут «Наименование» - наименование в справочнике 1С
      • Атрибут «Родитель» - идентификатор родительской группы в формате идентификатора группы (вида «ID__B___0___0___84___0___0___________24_____»)
  • Список товаров – элементы «Товар»
    • Атрибут «Идентификатор» – собственный формат идентификатора (вида «ID__B___0___0___84___0___0___________24_____») для товара
    • Атрибут «ИдентификаторВКаталоге» - код товара в справочнике «Номенклатура»
    • Атрибут «Наименование» - наименование в справочнике 1С
    • Атрибут «Родитель» - идентификатор родительской группы в формате идентификатора группы (вида «ID__B___0___0___84___0___0___________24_____»)
    • Атрибут «Единица» - краткое наименование единицы измерения товара
    • Документ - элемент
      • Атрибут «Дата» - дата документа вида "2012-12-21"
      • Атрибут «Номер» - номер документа
      • Атрибут «Время» - время документа вида «ЧЧ:ММ:СС»
      • Атрибут «Комментарий» - комментарий документа
      • Атрибут «ХозОпреация» - для реализации – «Sale»
      • Атрибут «Сумма» - сумма документа
      • Атрибут «Валюта» - краткое наименование валюты
      • Атрибут «Курс» - курс валюты документа
      • Атрибут «Кратность» - кратность валюты документа
      • Атрибут «СрокПлатежа» - значение реквизита документа «Оплата до» вида "2012-12-21"
      • Элемент «ПредприятиеВДокументе»
        • Атрибут «Контрагент» -идентификатор фирмы-продавца или контрагента-покупателя в 1С. Контрагент с таким идентификатором должен присутствовать в разделе «Контрагенты»
        • Атрибут «Роль» – Saler - продацец или Buyer – покупатель
  • Элемент «СуммаНалога», для НДС имеет вид (в данном примере ставка равна 0, так как это сумма НДС по документу): <СуммаНалога "AVT" Ставка="0" Сумма="3430.27" ВключенВСумму="1"/>
  • Элементы «ТоварнаяПозиция»
    • Атрибут «Каталог» - Идентификатор каталога
    • Атрибут «Товар» - код товара в справочнике номенклатура
    • Атрибут «Единица» - краткое наименование единицы измерения товара
    • Атрибут «Количество» - количество
    • Атрибут «Цена» - цена
    • Атрибут «Сумма» - сумма
    • Атрибут «Описание» - комментарий коменклатуры
    • Элемент «Сумма налога» вида <СуммаНалога "AVT" Ставка="18" Сумма="60.12" ВключенВСумму="1"/>
  • Элемент «Контрагент»
    • Атрибут «Идентификатор» - идентификатор фирмы/контрагента в 1С
    • Атрибут «Наименование» - официальное наименование в 1С
    • Атрибут «ОтображаемоеНаименование» - краткое наименование в 1С
    • Атрибут «Адрес» - адрес

Для того, чтобы этот документ загрузить в 1С 8.x необходимо преобразовать его к виду:

  • Корневой элемент «КоммерческаяИнформация»
  • Вложенный элемент «Документ»
    • Элемент «Номер» - копия атрибута «Номер» из не преобразованного файла
    • Элемент «Дата» - копия атрибута «Номер» из не преобразованного файла
    • Элемент «ХозОперация» - «Отпуск товара» для поступления
    • Элемент «Роль» - «Продавец»
    • Элемент «Валюта» - валюта документа (без точки – различные классификаторы валют в разных версиях 1С)
    • Элемент «Сумма» - сумма документа
    • Элемент «СрокПлатежа»
    • Элемент «Контрагенты»
      • Элемент – «Контрагент»
        • Элемент «Ид» - не используется, но должен быть уникальным. В приведенном примере копируется идентификатор контрагента из 7-ки.
        • Элемент «Наименование» - наименование контрагента
        • Элементы «ИНН» и «КПП» - по ним будет производится поиск контрагента
        • Элемент «Роль» - «Продавец» или «Покупатель»
  • Элемент «Время» - время документа
  • Элемент «Налоги»
  • Элемент «Товары» - табличная часть документа
    • Элементы «Товар»
      • Элемент «Ид» - код номенклатуры контрагента по регистру сведений. По нему идет поиск.
      • Элемент «ИдКлассификатора» - идентификатор классификатора товаров
      • Элемент «Наименование» - наименование товара
      • Элемент «БазоваяЕдиница» - краткое наименование базовой единицы измерения
      • Элемент «Группы»
        • Элемент «Ид» - идентификатор группы-родителя (по классификатору, в примере – код в 7-ке)
        • Элемент «ЦенаЗаЕдиницу»
        • Элемент «Количество»
        • Элемент «Сумма»
        • Элемент «Единица»
        • Элемент «Коэффициент»
        • Элемент «Налоги»
        • Элемент «Ставки налогов»
        • Элемент «ЗначениеРеквизитов»
        • Элемент «Комментарий»
  • Вложенный элемент «Классификатор» - это иерархия номенклатуры
    • Элемент «Ид» - идентификатор классификатора
    • Элемент «Наименование» - наименование классификатора
    • Элемент «Владелец»
      • Элемент «Ид» - идентификатор владельца классификатора – копируем из выгрузки 7-ки
      • Элемент «Наименование»
      • Элементы «ИНН» и «КПП»
  • Элемент «Группы»
    • Элемент «Группа»
      • Элемент «Ид» - код группы в справочнике номенклатуры 1С 7.7
      • Элемент «Наименование»
      • Элемент «Группы» - вложенные группы, аналогично элементу «Группы»
      • Вложенный элемент «Каталог» - это еще одна часть выгрузки – именно при сопоставлении каталога задаются соответствия между номенклатурой поставщика и собственной номенклатурой.
        • Элемент «Ид» - идентификатор каталога (берем из выгрузки из 1С 7.7)
        • Элемент «ИдКлассификатора» - идентификатор классификатора
        • Элемент «Владелец» - аналогично классификатору
        • Элемент «Товары»
          • Элемент «Товар»
            • Элемент «Ид» - код товара в базе 1С 7.7
            • Элемент «ИдКлассификатора» » - идентификатор классификатора
            • Элемент «Наименование»
            • Элемент «БазоваяЕдиница»
            • Элемент «Группы»
              • Элемент «Ид» - код группы-родителя в базе 1С 7.7
              • Элемент «СтавкиНалогов»
              • Элемент «ЗначенияРеквизитов»

Обратное преобразование в значительной части копирует преобразование из 7.7 в 8.x с точностью до наоборот. Единственное важное отличие – как определить на стороне поставщика по «Ид» товара – сопоставлен ли он на стороне покупателя и чей код числится в графе «Ид»? При выгрузке из УТ 10.3 для товаров, которые сопоставлены по регистру сведений «Номенклатура контрагентов» у товаров внутри элемента «Документ» идентификаторы будут начинаться со знака «*».

Для преобразования можно использовать любые процессоры XSLT, поддерживающие спецификацию 1.0, например xalan (Java) или Microsoft XSL Processor.

К статье прикреплены файлы для преобразования «Реализации» из 7.7 в «Поступление» в 8.x – Sale77to8x.xslt и «Заказа поставщику» из 8.x в «заявку покупателя» 7.7 – Order8xto77.xslt.

В файле Sale77to8x.xslt задаются 5 переменных, которые нужны для загрузки в 1С 8.x и которые отсутствуют в спецификации выгрузки из версии 7.7:

  • client_inn − ИНН покупателя
  • client_kpp − КПП покупателя
  • firm_inn − ИНН поставщика
  • firm_kpp − КПП поставщика
  • firm_vat − НДС в сумме - 1 или сверху – 0

В файле Order8xto77.xslt задаются следующие переменные, которые нужны для загрузки в 1С 7.7 и которые отсутствуют в спецификации выгрузки из версии 8.x:

  • supplier_GUID  – идентификатор поставщика
  • catalog_GUID  – идентификатор каталога поставщика

Я для преобразования использовал небольшую программу-переходник, написанную на C#, привожу пример кода по преобразованию XSLT. На вход преобразованию можно передавать параметры из кода, тогда в файлах XSLT надо поменять переменныена параметры.

Пример использования XSLT на языке C#

//Создаем объект для преобразования XML
var transform = new XslCompiledTransform();
//Загружаем правила из файла
transform.Load("имя файла преобразования");
//Заполняем список параметров для файла преобразования
var transformParams = new XsltArgumentList();
transformParams.AddParam("Параметр", "", "Значение параметра");
//Создаем класс-writer для записи результата в файл
var writer = XmlWriter.Create("имя выходного файла", xml_writer_settings);
//Задаем параметры для объекта, который будет осуществлять запись в XML
var xml_writer_settings = new XmlWriterSettings(){
    Encoding = Encoding.UTF8, //кодировка UTF-8
    Indent = true,              //отступы делать и делать их табуляцией
    IndentChars = "\t"
};
//Собственно преобразовываем
transform.Transform("имя выходного файла", transformParams, writer);
writer.Close();

Дополнительная информация

См. также

SALE! 20%

Автоматический заказ поставщику в 1С: загрузка прайсов и анализ цен поставщиков для УТ 10.3, УТ 11, КА2, УНФ, УПП, ERP, Розница 2

Бюджетирование и планирование Оптовая торговля Розничная торговля Логистика, склад и ТМЦ Анализ продаж Платформа 1С v7.7 Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Беларусь Украина Россия Казахстан Управленческий учет Платные (руб)

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

28500 22800 руб.

21.04.2017    90171    105    39    

190

АИС: Онлайн-кассы для 1С 7.7 (с поддержкой маркировки ЕГАИС, ТАБАКА, ОБУВИ, ЛЕКАРСТВ, ШИН, ОДЕЖДЫ, МОЛОКА, ВОДЫ и пр.) и Обмен с 1С 7.7 "Честный ЗНАК" (ГИСМТ, ЦРПТ, ЭДО)

Оптовая торговля Розничная торговля ККМ ЭДО и ОФД Обмен с ГосИС Оперативный учет 7.7 Бухгалтерский учет 7.7 1С:Бухгалтерия 7.7 1С:Комплексная 7.7 1С:Торговля и склад 7.7 Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Россия Платные (руб)

Подключение фискального регистратора к 1С 7.7 в режиме онлайн-кассы (в соответствии с 54-ФЗ). Поддержка крайних версий драйверов ККТ: ДТО 10 и ДТО 8 для Атол, 4.15, 5.16 для Штрих-М. Поддержка протоколов ФФД 1.0, 1.05, 1.1 и 1.2, развитые настройки для применения частичных оплат и авансов в оптовой и розничной торговле. Поддержка чеков коррекции всех версий. Поддержка розничной продажи маркированной продукции (ЕГАИС, табак, обувь, лекарства, шины, одежда, белье, парфюмерия, молочная продукция, вода и пр.). Вывод электронного чека (на е-майл, телефон) по требованию покупателя, поддерживаются комбинированные типы оплаты, режим эмуляции печати чека на ФР. **** Полный цикл работы из 1С 7.7 с маркировкой "Честный ЗНАК" (ГИСМТ, ЦРПТ) из 1С 7.7. ЭДО (табак, обувь, шины, одежда, молочная продукция, вода и прочие группы товаров) для розницы и опта (приемка и оптовая отгрузка маркированной продукции). Поддерживается как объемно-сортовой учет (ОСУ) так и поштучный (поэкземплярный) учет.

2000 руб.

28.03.2017    457801    4256    3461    

2428

АИС: Обмен с ФГИС Меркурий (Ветис.API) для всех* конфигураций 1С 7.7

Оптовая торговля Производство готовой продукции (работ, услуг) Розничная торговля Обмен с ГосИС Оперативный учет 7.7 Бухгалтерский учет 7.7 1С:Бухгалтерия 7.7 1С:Комплексная 7.7 1С:Торговля и склад 7.7 1С:Упрощенное налогообложение 7.7 Сельское хозяйство и рыболовство Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Рестораны, кафе и фаст-фуд Пищевая промышленность Россия Бухгалтерский учет Управленческий учет Платные (руб)

Полностью автоматизированный обмен между конфигурациями 1С 7.7 и ФГИС Меркурий через Ветис.API для всех видов деятельности (Опт, Розница, Производство). Для организации обмена с ФГИС Меркурий требуется минимальная доработка конфигураций (поддерживается "из коробки" 1С: "Торговля и склад ред. 9.2", 1С: "Комплексная ред. 4.5", 1С: "Бухгалтерия 7.7", 1С: "УСН 7.7", 1С Предприниматель, другие конфигурации по заказу, включая нетиповые и самописные). Модуль разработан таким образом, чтобы минимизировать затраты по внедрению в произвольную конфигурацию на базе 1С 7.7. Вы можете БЕСПЛАТНО скачать демо-версию без ограничения по функционалу и опробовать решение в полном объеме перед покупкой. В данном программном продукте реализованы все технические требования Россельхознадзора по обмену в формате 2.0 и 2.1. Решение прошло опытную эксплуатацию и тестирование на крупных объектах всех видов деятельности: Производство, Опт, Розница.

10000 руб.

21.11.2018    52703    139    105    

67

SALE! 10%

Перенос данных из 1С:Бухгалтерия 7.7 в БП 3.0. Переносятся остатки, документы и справочники

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

Перенос данных из 1С:Бухгалтерия 7.7 в БП 3.0 | Продукт является развитием и исправлением ошибок стандартной обработки для выгрузки данных из 1С Бухгалтерии 7.7 в Бухгалтерию 3.0 | Предоставляем техподдержку | Обновляем на новые релизы 1С | Перенос из 7.7 является сложным, и на рынке сложно найти специалистов 1С по "семерке" - наши сотрудники помогут вам выполнить переход в рамках техподдержки предлагаемого переноса данных!

50722 45650 руб.

26.05.2020    33909    10    67    

16

АИС: Обмен с ЕГАИС 4.0 для конфигураций 1С 7.7

Оптовая торговля Розничная торговля Обмен с ГосИС Оперативный учет 7.7 Бухгалтерский учет 7.7 1С:Бухгалтерия 7.7 1С:Комплексная 7.7 1С:Торговля и склад 7.7 Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Россия Бухгалтерский учет Управленческий учет Акцизы Платные (руб)

Полностью автоматизированный обмен между конфигурациями 1С 7.7 и универсальным транспортным модулем (УТМ) ЕГАИС для всех видов деятельности (Опт, Розница, Производство, Импорт). Для организации обмена с ЕГАИС требуется минимальная доработка конфигураций (поддерживается 1С: "Торговля и склад ред. 9.2", 1С: "Бухгалтерия 7.7", 1С: "УСН 7.7", другие конфигурации по заказу, включая нетиповые). В данном программном продукте реализованы все технические требования ФСРАР по обмену с УТМ ЕГАИС (включая отправку чеков розничных продаж в ЕГАИС - требование с 01.07.16). Поддержана фиксация чеков ЕГАИС на онлайн-кассах (в соответствии с 54-ФЗ). Поддержана версия 3 документооборота и поштучный (помарочный) учет. Поддержан эксперимент Татарстана по маркировке нефасованного (кегового) пива.

3000 руб.

13.12.2015    134698    159    400    

146

Обмен с ЕГАИС из 1С V7.7

Оптовая торговля Розничная торговля Обмен с ГосИС Оперативный учет 7.7 1С:Торговля и склад 7.7 Бухгалтерский учет Акцизы Платные (руб)

Дорогие друзья! Предлагаю Вашему вниманию обработку, предназначенную для обмена данными из Вашей учетной системы с ЕГАИС, через универсальный транспортный модуль (УТМ). В обработке реализован весь функционал обмена: - загрузка справочных данных по контрагентам, производителям, импортерам алкогольной продукции; - загрузка справочных данных по номенклатуре алкогольной продукции; - загрузка остатков; - помощник сопоставления справочных данных и запись их в базу данных; - загрузка приходных ТТН и справок Б от поставщиков, отправка по ним актов всех типов, создание по ним приходных документов; - выгрузка расходных ТТН покупателям; - управление Марками и ведение Регистра 3; Обработку возможно использовать автономно, не внося изменений в Вашу Учетную систему. Код открыт.

6000 руб.

13.11.2015    121207    169    2528    

232

Конфигурация "Информационный киоск". Обработки выгрузки товаров для ТиС 9.2, УТ 10.3, УТ 11 (обмен данными с любой конфигурацией 1С 7.7, 8.х)

Оптовая торговля Розничная торговля Обмен между базами 1C Сканер штрих-кода Платформа 1С v7.7 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv7 Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Рестораны, кафе и фаст-фуд Управленческий учет Платные (руб)

Конфигурация предназначена для организации offline доступа клиента (покупателя) к информации о товарах, услугах или дисконтных картах посредством сканирования штрих-кода. Основная цель – мгновенно предоставить наиболее актуальную информацию о цене, остатках, наименовании товара (услуги) или накоплениях, держателе, состоянии дисконтной карты.

1800 руб.

21.12.2014    59233    8    21    

20

Выгрузка данных из 1С 7.7. в формате EnterpriseData 1.6 (универсальный формат обмена) в конфигурации 8.3

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

Обработка позволяет выгружать данные из ТиС 7.7 в конфигурации 8.3 для сдачи отчетности, для переноса данных при переходе на 8.3, для организации обмена внутри компании при использовании разных версий 1С в структурных подразделениях или формирования отгрузочных накладных для клиентов.

6000 руб.

18.05.2020    22690    59    39    

35
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. potap@f58.ru 25.06.15 10:37 Сейчас в теме
Спасибо! Пригодилось!
2. zaliznyj 26.10.15 01:45 Сейчас в теме
Супер очень благодарен за подсказку переделал свою конфигурацию работает отлично
Оставьте свое сообщение