![]() |
|
Не переносятся некоторые справочники (НСИ) при типовом обмене через ED из ERP 2.4 в БП 3.0 | ☑ | ||
---|---|---|---|---|
0
happysan
08.04.19
✎
10:07
|
Всем привет!
Настраиваем синхронизацию двух типовых БД 1С: ERP 2.4 и БП 3.0 посредством типового универсального формата обмена ED. При отправке данных из БП в ERP добились полного переноса всех справочников (НСИ). В обратном же направлении не переносятся некоторые справочники, например, банковские счета, договоры и т. д. Через отладчик выяснилось, что эти справочники имеют режим выгрузки "ВыгружптьПоУсловию", но пока не удалось разобраться какое условие должно выполняться. Вроде как проверка должна проходить по регистрации объектов на узле плана обмена, но регистрация этих справочников фиксируется. буду благодарен конструктивным мыслям на этот счёт. |
|||
1
happysan
08.04.19
✎
11:55
|
Нашёл причину в запросе и закомментировал строчку одну:
ВЫБРАТЬ РАЗЛИЧНЫЕ ПланОбменаОсновнаяТаблица.Ссылка КАК Ссылка, ПланОбменаРазделыУчета.РазделУчета, ПланОбменаРазделыУчета.Выгружать ИЗ ПланОбмена.СинхронизацияДанныхЧерезУниверсальныйФормат КАК ПланОбменаОсновнаяТаблица ЛЕВОЕ СОЕДИНЕНИЕ ПланОбмена.СинхронизацияДанныхЧерезУниверсальныйФормат.РазделыУчета КАК ПланОбменаРазделыУчета ПО ПланОбменаОсновнаяТаблица.Ссылка = ПланОбменаРазделыУчета.Ссылка И (ПланОбменаРазделыУчета.РазделУчета = &СвойствоОбъекта_РазделУчета1 ИЛИ ПланОбменаРазделыУчета.РазделУчета = &СвойствоОбъекта_РазделУчета2 ИЛИ ПланОбменаРазделыУчета.РазделУчета = &СвойствоОбъекта_РазделУчета3) И ПланОбменаРазделыУчета.Выгружать ЛЕВОЕ СОЕДИНЕНИЕ ПланОбмена.СинхронизацияДанныхЧерезУниверсальныйФормат.Организации КАК СинхронизацияДанныхЧерезУниверсальныйФорматОрганизации ПО ПланОбменаОсновнаяТаблица.Ссылка = СинхронизацияДанныхЧерезУниверсальныйФорматОрганизации.Ссылка ГДЕ ((СинхронизацияДанныхЧерезУниверсальныйФорматОрганизации.Организация = &СвойствоОбъекта_Организация ИЛИ (ПланОбменаОсновнаяТаблица.ИспользоватьОтборПоОрганизациям = Ложь И (ПланОбменаОсновнаяТаблица.УправленческаяОрганизация <> &СвойствоОбъекта_Организация ИЛИ ПланОбменаОсновнаяТаблица.ВыгружатьУправленческуюОрганизацию = Истина ) ) ) И ПланОбменаОсновнаяТаблица.ВариантНастройки <> "ОбменУП2ЗУП3" ) // И ЕстьNULL(ПланОбменаРазделыУчета.Выгружать, ЛОЖЬ) И ПланОбменаОсновнаяТаблица.Ссылка <> &СинхронизацияДанныхЧерезУниверсальныйФорматЭтотУзе И НЕ ПланОбменаОсновнаяТаблица.ПометкаУдаления И (ПланОбменаОсновнаяТаблица.РежимВыгрузкиСправочников = ЗНАЧЕНИЕ(Перечисление.РежимыВыгрузкиОбъектовОбмена.ВыгружатьПоУсловию) ИЛИ ПланОбменаОсновнаяТаблица.РежимВыгрузкиСправочников = ЗНАЧЕНИЕ(Перечисление.РежимыВыгрузкиОбъектовОбмена.ВыгружатьВручную) ИЛИ ПланОбменаОсновнаяТаблица.РежимВыгрузкиСправочников = ЗНАЧЕНИЕ(Перечисление.РежимыВыгрузкиОбъектовОбмена.ПустаяСсылка)) |
|||
2
happysan
08.04.19
✎
11:58
|
В общем модуле "ОбменДаннымиСобытия":
Функция МассивУзловПоЗначениямСвойств(ЗначенияСвойств, Знач ТекстЗапроса, Знач ИмяПланаОбмена, Знач ИмяРеквизитаФлага, Знач Выгрузка = Ложь) Экспорт |
|||
3
happysan
08.04.19
✎
12:02
|
В этой функции формируется финальный текст запроса. Можно так же заполнить табличную часть "РазделыУчета" в плане обмена "СинхронизацияДанныхЧерезУниверсальныйФормат" для узла обмена. По умолчанию почему-то эта табличная часть пустая.
|
|||
4
happysan
08.04.19
✎
12:05
|
Скорее эту табличную часть придётся заполнить программно или сделать доступной для редактирования при настройке узла плана обмена.
|
|||
5
happysan
08.04.19
✎
12:06
|
Тихо сам с собою я веду беседу…
|
|||
6
happysan
08.04.19
✎
12:34
|
Либо изменять правила регистрации объектов в макете "ПравилаРегистрации" плана обмена "СинхронизацияДанныхЧерезУниверсальныйФормат". Можно вручную, а можно через КД 2.1.
|
|||
7
Alexor
08.04.19
✎
12:37
|
(6) Разве эти правила прочитаются в 2.1?
Вы не один, я наблюдаю :) |
|||
8
happysan
08.04.19
✎
13:41
|
(6) На сколько мне известно, правила регистрации пока можно только ваять в КД 2.1.
|
|||
9
happysan
08.04.19
✎
13:42
|
(7) На сколько мне известно, правила регистрации пока можно только ваять в КД 2.1.
|
|||
10
happysan
08.04.19
✎
14:21
|
Ещё информация: в модуле менеджера (попадаем туда из события "ПередЗаписью" объекта плана обмена "СинхронизацияДанныхЧерезУниверсальныйФормат") есть следующая функция, которая должна сама корректно заполнять разделы учёта, но она не всегда корректно отрабатывает, в отладчике увидите, например, если выбирать выгрузка только справочников, без документов и без отбора по разделам учёта:
Функция ПолучитьРазделыУчета(ВВидеСтруктуры, ИдентификаторНастройки = "") Экспорт РазделыУчета = Новый ТаблицаЗначений; РазделыУчета.Колонки.Добавить("РазделУчета"); РазделыУчета.Колонки.Добавить("Выгружать"); Если ИдентификаторНастройки = "ОбменУП2ЗУП3" Тогда Раздел = РазделыУчета.Добавить(); Раздел.РазделУчета = НСтр("ru = 'Зарплата'"); Раздел.Выгружать = Истина; Иначе Раздел = РазделыУчета.Добавить(); Раздел.РазделУчета = НСтр("ru = 'Ввод остатков'"); Раздел.Выгружать = Истина; Если НЕ Константы.УправлениеТорговлей.Получить() Тогда Раздел = РазделыУчета.Добавить(); Раздел.РазделУчета = НСтр("ru = 'Внеоборотные активы'"); Раздел.Выгружать = Истина; КонецЕсли; Раздел = РазделыУчета.Добавить(); Раздел.РазделУчета = НСтр("ru = 'Закупки'"); Раздел.Выгружать = Истина; Раздел = РазделыУчета.Добавить(); Раздел.РазделУчета = НСтр("ru = 'Казначейство'"); Раздел.Выгружать = Истина; Раздел = РазделыУчета.Добавить(); Раздел.РазделУчета = НСтр("ru = 'Продажи'"); Раздел.Выгружать = Истина; Если НЕ Константы.УправлениеТорговлей.Получить() Тогда Раздел = РазделыУчета.Добавить(); Раздел.РазделУчета = НСтр("ru = 'Производство'"); Раздел.Выгружать = Истина; КонецЕсли; Раздел = РазделыУчета.Добавить(); Раздел.РазделУчета = НСтр("ru = 'Склад'"); Раздел.Выгружать = Истина; КонецЕсли; Если ВВидеСтруктуры Тогда Возврат Новый Структура("РазделУчета, Выгружать", РазделыУчета.ВыгрузитьКолонку("РазделУчета"), РазделыУчета.ВыгрузитьКолонку("Выгружать")); Иначе Возврат РазделыУчета; КонецЕсли; КонецФункции |
|||
11
happysan
08.04.19
✎
14:36
|
Исходя из (10), самым милым вариантом является, на мой взгляд, закомментировать условие в модуле менеджера данного плана обмена в конце процедуры и перезаписать узел плана обмена (можно интерактивно) после обновления БД:
Процедура АктуализацияРеквизитовУзлаПланаОбмена(УзелПланаОбмена) Экспорт ........................................................................ ........................................................................ Если Не УзелПланаОбмена.ИспользоватьОтборПоРазделамУчета Тогда УзелПланаОбмена.РазделыУчета.Очистить(); //Если УзелПланаОбмена.РежимВыгрузкиДокументов <> Перечисления.РежимыВыгрузкиОбъектовОбмена.НеВыгружать Тогда // Условие закомментировано. РазделыУчета = ПолучитьРазделыУчета(Ложь, ВариантНастройки); УзелПланаОбмена.РазделыУчета.Загрузить(РазделыУчета); //КонецЕсли; КонецЕсли; КонецПроцедуры |
|||
12
happysan
08.04.19
✎
15:02
|
Но если бы выгружали сразу и документы, то не заметили бы косячок)))
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |