Добрый вечер всем. Прошу помощи. Как в конвертации данных прописать условие, чтоб данные перенеслись в группу по определённому имени?
Суть в чем, переношу данные из бухгалтерии 3.0 в документооборот, из друх баз бп. В ДО создала две папки в справочнике контрагентов, по именам организации, теперь надо как-то перенести данные правилом обмена, но где и как написать условие, что если организация одна, переносим в одноименную папку, если другая, то в другую.
Прошу помощи.
Суть в чем, переношу данные из бухгалтерии 3.0 в документооборот, из друх баз бп. В ДО создала две папки в справочнике контрагентов, по именам организации, теперь надо как-то перенести данные правилом обмена, но где и как написать условие, что если организация одна, переносим в одноименную папку, если другая, то в другую.
Прошу помощи.
По теме из базы знаний
- Сравнение ЛЮБЫХ данных ЛЮБЫХ баз (и РИБ, по правилам конвертаций) по контрольным суммам выбранных реквизитов, работающих на платформе 8.3
- Конвертация данных 2.1. Методика переноса остатков
- Эффективные приемы подбора персонала на "перегретом рынке"
- Добавляем в Конвертацию данных 2.1 средства для работы с GIT
- Перенос движений документа. КД 3.0
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(6) ну вам ведь нужно сперва узнать какой организации вы грузите данные. Обычно их разделяют префиксами организации. Посмотрите в КД, что есть в обработчиках. Если вы как то знаете откуда грузите, то уже без проблем можно подставить группу.
PS А если в базе источника будет несколько организаций?
PS А если в базе источника будет несколько организаций?
(3) В поля поиска включить код, так как префикс по умолчанию содержится там и он нам нужен для анализа
В обработке полей поиска можно
1. Использовать номер варианта поиска, с помощью запроса получить нужный код, оттуда взять префикс и проанализировать его.
Пример на основании исходного кода
Вывод - можно на этапе обработки полей поиска сделать анализ по префиксу.
В обработке полей поиска можно
1. Использовать номер варианта поиска, с помощью запроса получить нужный код, оттуда взять префикс и проанализировать его.
Пример на основании исходного кода
ОбщегоНазначенияКлиентСервер.Сообщитьпользователю("9 "+СвойстваПоиска["Артикул"]);
Если НомерВариантаПоиска = 1 Тогда
СтрокаИменСвойствПоиска = "Артикул,Наименование";
ИначеЕсли НомерВариантаПоиска = 2 Тогда
СтрокаИменСвойствПоиска = "Артикул";
ИначеЕсли НомерВариантаПоиска = 3 Тогда
СтрокаИменСвойствПоиска = "Наименование";
иначе
Запрос = новый запрос("");
Запрос.Установитьпараметр ("Код",сред(СвойстваПоиска["Код"],3))
КонецЕсли;
ПоказатьВывод - можно на этапе обработки полей поиска сделать анализ по префиксу.
если проще - сделать для бп1 правила обмена с выгрузкой в 1-у папку, для бп2 свои правила обмена с выгрузкой в другую , или при выгрузке передавать в параметр, например, ИНН организации, а после загрузки по нему сортировать
(16)вод код переноса в нужную папку с иерархией вставляется в ПКО Контрагенты ПослеЗагрузки
род = Объект;
Пока не род.Родитель = Справочники.Контрагенты.ПустаяСсылка() цикл
род = род.Родитель;
КонецЦикла;
мояПапка = Справочники.Контрагенты.НайтиПоКоду("папка нужной организации");
Если род = Объект тогда
Объект.Родитель = мояПапка;
Объект.Записать();
иначеЕсли не род = мояПапка тогда
об = род.ПолучитьОбъект();
об.Родитель = мояПапка;
об.Записать();
КонецЕсли;
для корректировки правил для второй базы достаточно открыть файл правил xml, найти там строку
мояПапка = Справочники.Контрагенты.НайтиПоКоду("папка нужной организации");
и изменить код папки на вторую организацию
род = Объект;
Пока не род.Родитель = Справочники.Контрагенты.ПустаяСсылка() цикл
род = род.Родитель;
КонецЦикла;
мояПапка = Справочники.Контрагенты.НайтиПоКоду("папка нужной организации");
Если род = Объект тогда
Объект.Родитель = мояПапка;
Объект.Записать();
иначеЕсли не род = мояПапка тогда
об = род.ПолучитьОбъект();
об.Родитель = мояПапка;
об.Записать();
КонецЕсли;
для корректировки правил для второй базы достаточно открыть файл правил xml, найти там строку
мояПапка = Справочники.Контрагенты.НайтиПоКоду("папка нужной организации");
и изменить код папки на вторую организацию
В конвертации данных на закладке Параметры добавить параметр "ЭтоОрганизацияНомер"
Перед выгрузкой данных заполняем этот параметр Если нашли организацияю по коду то ЭтоОрганизацияНомер = 1 - допустим...
Далее в обработчиках по контрагентам используем этот параметр ЭтоОрганизацияНомер для установки родителя
Перед выгрузкой данных заполняем этот параметр Если нашли организацияю по коду то ЭтоОрганизацияНомер = 1 - допустим...
Далее в обработчиках по контрагентам используем этот параметр ЭтоОрганизацияНомер для установки родителя
Стоит не забывать, что в источниках вполне себе может иметься иерархическая структура у контрагентов, либо надо опираться на допущение что ее нет и не должно быть никогда.
Потому что задача состоит не в том чтобы изменять родителя у ЛЮБОГО элемента справочника в приемнике, а в том чтобы изменять его только у корневых, то есть имеющих 0 уровень в иерархии.
Второй тупой вариант (кроме добавления группы в источнике) добавить доп реквизит для контрагентов, который можно сделать не видимым, с типом значения организация, и написать код в источнике заполняющий этот доп. реквизит, при сохранении нового элемента.
А уже в приемнике написать некую пост обработку которая после выполнения обмена распихивает по значению этого доп. реквизита элементы и группы которые попали в корень по группам которые нужны но отсутствуют в источниках.
Это чтобы не лезть в КД...
Потому что задача состоит не в том чтобы изменять родителя у ЛЮБОГО элемента справочника в приемнике, а в том чтобы изменять его только у корневых, то есть имеющих 0 уровень в иерархии.
Второй тупой вариант (кроме добавления группы в источнике) добавить доп реквизит для контрагентов, который можно сделать не видимым, с типом значения организация, и написать код в источнике заполняющий этот доп. реквизит, при сохранении нового элемента.
А уже в приемнике написать некую пост обработку которая после выполнения обмена распихивает по значению этого доп. реквизита элементы и группы которые попали в корень по группам которые нужны но отсутствуют в источниках.
Это чтобы не лезть в КД...
в каждом из правил жестко в "После Загрузки" пропишите
это проще всего
или, если хотите использовать одни правила, то задайте параметр "наименование организации" . при выгрузке присвойте ему значение, допустим, . назовите параметр "наименование_организации". а после загрузки
главное чтобы папка(вернее, группа) была создана в справочнике заранее
Объект.Родитель = Справочник.Контрагенты.НайтиПоНаименованию("Имя_соответствующей_папки")
это проще всего
или, если хотите использовать одни правила, то задайте параметр "наименование организации" . при выгрузке присвойте ему значение, допустим,
Значение = Справочник.организации.наименование
Если ПараметрыОбъекта["наименование_организации"] = "организация1" тогда
Объект.Родитель = Справочник.Контрагенты.НайтиПоНаименованию("Имя_соответствующей_папки")
иначе
Объект.Родитель = Справочник.Контрагенты.НайтиПоНаименованию("Имя_соответствующей_папки2")
КонецЕсли;
главное чтобы папка(вернее, группа) была создана в справочнике заранее
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот