Конвертация 2.0. Обмен данными между справочниками по сопоставлению артикулов с помощью регистра сведений (пример).

27.08.18

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

Пример обмена данными между справочниками по сопоставлению артикулов с помощью регистра сведений

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

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

Создадим Правило конвертации объекта (ПКО) для справочника Номенклатура, проверим создались ли нужные для нас Правила конвертации свойств (ПКС) и добавим Правило выгрузки данных. Так как нам не надо замещать наименование, то в ПКС Наименование установим флаг Не замещать значение свойств у существующих объектов. А в настройках ПКО Номенклатура снимем флаг Искать объект приемника по внутреннему идентификатору. Из-за того, что у нас сопоставление осуществляется по артикулу, а в приемнике и источнике код может совпадать, то для сохранения уникальности кода установим флаг Автоматически генерировать номер или код, если он не задан ПКС Код поставим флаг Отключить обработку правила).  В дальнейшем в обработчике Поля Поиска в  ПКО Номенклатура для поиска по регистру нам понадобится артикул, поэтому добавим его в поиск. Так как справочники иерархические необходимо проверить наличие поиска по свойству ЭтоГруппа  и Наименование.

Так как сопоставление осуществляется по артикулу, то исключим из выгрузки объекты у которых он отсутствует, при это выведем информационное сообщение. Для чего в ПКО Номенклатура в обработчике событий Перед выгрузкой запишем код:

Если Не Источник.ЭтоГруппа Тогда

       Если Не ЗначениеЗаполнено(Источник.Артикул) Тогда

             Сообщить("Для элемента: "+Источник.Наименование+" Код "+Источник.Код+" не заполнен артикул!!! Выгрузка не выполнена!!!Заполните артикул и повторите выгрузку!!!");

             Отказ = Истина;

       КонецЕсли;  

КонецЕсли;

Теперь нам нужно найти объект (точнее ссылку) по соответствию артикулов в базе приемнике. Это мы сделаем в том же ПКО в обработчике событий Поля поиска, запишем код:

Если Не СвойстваПоиска["ЭтоГруппа"] Тогда

       Если ЗначениеЗаполнено(СвойстваПоиска["Артикул"]) Тогда

             Запрос = Новый Запрос;

             Запрос.Текст =

             "ВЫБРАТЬ

             |      Номенклатура.Ссылка

             |ИЗ

             |      РегистрСведений.СоответствиеНоменклатуры КАК СоответствиеНоменклатуры

             |            ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура

             |            ПО СоответствиеНоменклатуры.АртикулПриемник = Номенклатура.Артикул

             |ГДЕ

             |      СоответствиеНоменклатуры.АртикулИсточник = &АртикулИсточник";

            

             Запрос.УстановитьПараметр("АртикулИсточник", СвойстваПоиска["Артикул"]);     

             РезультатЗапроса = Запрос.Выполнить();

             ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

             Если ВыборкаДетальныеЗаписи.Следующий() Тогда

                    СсылкаНаОбъект=ВыборкаДетальныеЗаписи.Ссылка;

             Иначе ПрекратитьПоиск = Истина;

             КонецЕсли;  

       КонецЕсли;

       Иначе СтрокаИменСвойствПоиска = "ЭтоГруппа, Наименование";

КонецЕсли;

Получается если в регистре сведений есть измерение для сопоставления (АртикулИсточник), а в Приемнике объект, артикул которого соответствует ресурсу данного измерения (АртикулПриемник), то ссылка на объект подставляется в результат поиска. А если соответствия не найдено, то создается новый объект.

Предусмотрим случай если мы передаем объект с артикулом соответствие на который не установлено в регистре сведений. Так как артикула нет в регистре, то каждый раз при передаче будет создаваться новый объект. Чтобы этого избежать необходимо программно создать запись в регистре сведений. Кроме того, чтобы исключить ситуацию, когда запись в регистре появилась, а объект в справочнике не записался (в силу разных причин) создадим транзакцию, внутри которой и поместим эти две записи. Запишем код:


Если Объект.ЭтоНовый() И ЗначениеЗаполнено(Объект.Артикул) Тогда

      

       //Для исключения возможности записи в Регистр без записи объекта, создадим транзакцию.

       //А внутри нее запишем и объект и набор записей регистра.

      

       НачатьТранзакцию();

      

       НаборЗаписей = РегистрыСведений.СоответствиеНоменклатуры.СоздатьНаборЗаписей();

       НаборЗаписей.Отбор.АртикулИсточник.Установить(Объект.Артикул);

       Запись = НаборЗаписей.Добавить();

      

       Запись.АртикулИсточник = Объект.Артикул;

       //Проверим уникальность артикула

       Если ЗначениеЗаполнено(Справочники.Номенклатура.НайтиПоРеквизиту("Артикул",Объект.Артикул)) Тогда

             Сообщить("Артикул объекта: "+ Объект.Наименование+ " не уникален!!!Артикул не перенесен.Задайте новое значение артикула и заполните соответствие номенклатуры!!!");

             Объект.Артикул  = "";

       КонецЕсли;

       Запись.АртикулПриемник = Объект.Артикул;

      

       Объект.Записать();

       НаборЗаписей.Записать();

      

       ЗафиксироватьТранзакцию();

      

       //Отменим повторную запись объекта

       ОбъектМодифицирован = Ложь;

      

КонецЕсли;

Сохраним изменения и сделаем обмен.

В соответствии с настройками:

  1. Номенклатура у которой не указан артикул не передалась.
  2. При при передаче артикула дублирующегося в Базе Приемнике – артикул не создался.

     

Конвертация справочник регистр сведений перенос данных обмен

См. также

SALE! 10%

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

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

55778 50200 руб.

04.08.2015    169447    352    281    

388

SALE! 20%

Перенос данных 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. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

27660 руб.

12.06.2017    144353    837    297    

432

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

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

35000 руб.

23.07.2020    54606    242    73    

196

SALE! 10%

Перенос данных 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 | Сэкономьте время - используйте готовое решение для перехода! | Перенос разработан в формате КД 2 (правила конвертации данных) | Переносятся все возможные виды документов, начальных остатков и нормативно-справочная информация| Можно опционально выгружать каждую пару "номенклатура+характеристика" как отдельную номенклатуру | Есть выгрузка настроек счетов учета и зарплатных данных из ERP / КА 2 | Можно проверить на вашем сервере перед покупкой

55778 50200 руб.

15.04.2019    73381    193    153    

130

SALE! 10%

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

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

53111 47800 руб.

03.12.2020    37726    103    69    

98

SALE! 10%

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

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

55778 50200 руб.

24.04.2015    196537    157    244    

287

Перенос данных 1C Программист Бухгалтер Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет НДФЛ ФОМС, ЕФС Платные (руб)

Обработки для быстрого перехода с конфигураций «КАМИН:Расчет заработной платы 3.0», «КАМИН:Зарплата для бизнеса 4.0» и «КАМИН:Зарплата 5.0» на конфигурацию «Зарплата и управление персоналом» версии 3.1.

12000 руб.

25.09.2016    82168    338    253    

287

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

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

35000 руб.

15.12.2021    25366    177    52    

135
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Drivingblind 235 11.02.20 06:16 Сейчас в теме
Может быть, я что-то еще не совсем понимаю в КД 2, но как дела обстоят с быстродействием данного алгоритма? Получается, для каждого элемента номенклатуры будет выполняться запрос к БД? Это ж крайне неоптимально, т.к. запросы в цикле.

Как вариант, можно в ПВД сразу исключить несопоставленные элементы и запросом проверять только оставшиеся. + можно попробовать данные регистра сопоставления выгрузить в таблицу значений и искать уже по ней, а не через запрос.
2. OpekunovOZON 22.06.23 13:31 Сейчас в теме
Спасибо за интересную статью. Просьба только указать где предполагается использовать последнюю часть кода. Я так понимаю в обработчике "После загрузки"
Оставьте свое сообщение