Имя: Пароль:
1C
1С v8
8.3 Типовой обмен между конфигурациями
0 jamesgold
 
27.09.22
13:24
Добрый день, прошу помочь!

Между двумя конфигурациями Розница 2.3 и Бухгалтерия предприятия 3.0 настроен типовой обмен. При синхронизации в БП попадают элементы справочников с реквизитом ЭтоГруппа = Истина,  т.е. папки в которых хранятся элементы справочника.
Каким образом можно исключить такие группы при обмене, только при настройке новых правил в конфигурации Конвертация данных или есть другие варианты?
1 CepeLLlka
 
27.09.22
13:38
(0)А что оставлять в поле "Родитель" выгружаемых элементов, которые НЕ ЭтоГруппа, но имеют не пустое значение поля "Родитель"?
2 jamesgold
 
27.09.22
13:40
(1) Без родителя
3 AlvlSpb
 
27.09.22
13:45
(0) "Каким образом можно исключить такие группы при обмене"© Ошибочное решение. Но вам виднее.
1. Корректировать правила регистрации
2. Ручной мониторинг зарегистрированных элементов на наличие групп и снятие с регистрации таковых
4 jamesgold
 
27.09.22
13:47
(3) 1. Корректировать правила регистрации - изменить правила можно только в в конфигурации Конвертация данных?
5 AlvlSpb
 
27.09.22
13:48
(2) Нет. Будет НЕ без родителя, а Объект не обнаружен или опять же менять правила регистрации и указывать в них отсутствие родителя
6 AlvlSpb
 
27.09.22
13:49
(4) Если есть понимание как делаются правила, такое простое можно попробовать сделать в редакторе хмл. Но если понятия нет, лучше не браться
7 jamesgold
 
27.09.22
13:55
(6) Получается типовой механизм для изменения правил регистрации, только Конвертация данных, так?
8 jamesgold
 
27.09.22
13:55
Руками каждый раз снимать группы не вариант
9 AlvlSpb
 
27.09.22
14:00
(7) Именно. Однако обращаю внимание, что, скорей всего, задействован Универсальный формат обмена, а значит корректировать стандартные правила придется после каждого обновления программы.
Проще и правильней структуру справочника Номенклатура в обеих программах синхронизировать (вместе с группами). А если уж кому-то надо без иерархии в БП, групповой обработкой удалять родителя из элемента уже после обмена. Но все это ИМХО
10 jamesgold
 
27.09.22
14:06
(9) Если в БП передавать группы, возникает ошибка при обмене, БП ругается на незаполненные реквизиты у элементов с типом группа.
11 AlvlSpb
 
27.09.22
14:12
(10) А заполнить незаполненные реквизиты не вариант?
12 jamesgold
 
27.09.22
15:53
(11) Эти реквизиты должны быть не заполнены
13 MaxS
 
27.09.22
17:16
(9) Если универсальный формат обмена, то правила исправляются расширением.
Найти ПОД для справочника в базе источника или в базе приемника. Если группа, то ИспользованиеПКО.Очистить(); и не будет выгружаться или загружаться
Это xml (кд2) правила нужно править в КД каждый раз.
14 Доминошник
 
27.09.22
17:25
Как то (10) и (12) противоречат друг другу...
15 jamesgold
 
27.09.22
18:27
(14) Все правильно у групп эти реквизиты в базе источник не должны быть заполнены, но если так выгрузить то в базе приемник будет ошибка, он требует заполнение этих реквизитов.
16 jamesgold
 
27.09.22
18:29
(13) Очень интересно, может быть есть ссылка на рабочий пример?
17 dimm7310
 
28.09.22
08:40
(0) 1. нужно менять правила регистрации (в КД2) 2. Изменять правила обмена на стороне приемника - найти обработчик для номенклатуры (в общем модуле МенеджеробменаЧерезУниверсальныйФормат) "ПередЗаписьюПолученныхДанных" (ПКО_Справочник_Номенклатура_Получение_ПередЗаписьюПолученныхДанных - это полное наименование обработчика для БП3 у вас может быть немного другое) или "ОтложеннаяОбработка_Номенклатура", думаю проще подправить "ОтложеннаяОбработка_Номенклатура" - и прописать в нем родитель = пустая ссылка. Должно прокатить
18 withoutname
 
28.09.22
08:47
(0) не понял, надо запретить переносить все элементы в определенной папке?
А что если в настройке обмена поставить переносить не всю НСИ, а только которая используется в документах?
19 Serg_1960
 
28.09.22
08:54
(18) Автору,  насколько я его понял, нужно чтобы не мигрировали группы, а только элементы справочника с очищенными ссылками на группы. Т.е. вариант миграции данных между иерархическим справочником и простым/обычный/без иерархии справочником.
20 Serg_1960
 
28.09.22
08:58
(15) "он требует заполнение этих реквизитов" - возможно, вероятно некорректное исправление правил обмена: в реквизит устанавливается значение NULL, а нужно - пустая ссылка справочника.
21 jamesgold
 
28.09.22
10:23
(17) Какая может быть логика если делать доработки на базе источнике? Мне нужно не только в родителе сделать пустую ссылку но и не передавать сами группы. Если делать это в расширении какое это должно быть событие?
22 withoutname
 
28.09.22
11:43
в КД2 в ПКО Номенклатура ПередВыгрузкой

Отказ = Источник.ЭтоГруппа();

В ПКС Родитель ПередВыгрузкой

Отказ = Истина;
23 jamesgold
 
28.09.22
14:16
(22) Спасибо, попробую!
24 jamesgold
 
28.09.22
14:23
25 withoutname
 
28.09.22
15:37
(24) в первой картинке не там, надо в Правило конвертиции объекта
https://i.imgur.com/GMpYkrk.png
26 jamesgold
 
29.09.22
17:25
Исправил обработчик с учетом (25)
Сохранил из КД2 новые правила обмена в файл, пытаюсь теперь по этим правилам получить новые данные:

1. Пытаюсь получить файл данных в обработке выгрузки "V8Exchan83ed1" получаю ошибку:
https://ibb.co/89CgVD7

Ошибка в обработчике события ПередВыгрузкойДанных (конвертация)
    Обработчик             =  ПередВыгрузкойДанных (конвертация)
    ОписаниеОшибки         =  Ошибка компиляции при вычислении выражения или выполнении фрагмента кода: {<Неизвестный модуль>(1,62)}: Переменная не определена (УзелДляОбмена)
    ПозицияМодуля          =  ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(12458)
    КодСообщения           =  62

2. Сделал тестовый обмен в папку из исходной конфигурации, при создании синхронизации загрузил новые правила из КД2, также получаю ошибку, текст в журнале регистрации: "Ошибка, Отправка данных; Объектов обработано: 2"

Оба этих способа получения файла с данными не работают.

Первоначальные правила обмена, которые менял в КД2 с у четом моего задания, получал из текущего рабочего обмена в рабочей конфигурации вот так:
https://ibb.co/Fm00MsD
27 withoutname
 
29.09.22
17:56
(26) 1. странное слово какое то "конвертация", выложи сами правила файлом
2. файл брал "ExchangeRules.xml"?
28 jamesgold
 
29.09.22
18:00
(27) 2. файл брал "ExchangeRules.xml" - да
29 jamesgold
 
29.09.22
18:03
30 AlvlSpb
 
29.09.22
18:34
(28) Странно. Хочешь изменить порядок РЕГИСТРАЦИИ объекта (исключить из регистрации группы), а изменяешь правила КОНВЕРТАЦИИ. Не смущает?
31 jamesgold
 
29.09.22
18:46
Делаю по этому гайду (22)
32 jamesgold
 
29.09.22
19:09
(30) Примерно такой же подход по моему вопросу применяют вот здесь:
https://infostart.ru/1c/articles/690292/
33 withoutname
 
29.09.22
19:22
(29) хм, странно, а пришли весь текст ошибки
34 jamesgold
 
29.09.22
21:01
(33) Это весь тест ошибки в журнале регистрации при использовании стандартного обмена "Ошибка, Отправка данных; Объектов обработано: 2"
35 jamesgold
 
29.09.22
21:02
(33) Если грузить обработкой "V8Exchan83ed1" то такой текст:

Ошибка в обработчике события ПередВыгрузкойДанных (конвертация)
    Обработчик             =  ПередВыгрузкойДанных (конвертация)
    ОписаниеОшибки         =  Ошибка компиляции при вычислении выражения или выполнении фрагмента кода: {<Неизвестный модуль>(1,62)}: Переменная не определена (УзелДляОбмена)
    ПозицияМодуля          =  ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(12458)
    КодСообщения           =  62
36 jamesgold
 
29.09.22
21:08
37 withoutname
 
30.09.22
08:21
(34) я про эту ошибку https://ibb.co/89CgVD7

(35) название обработки странное у тебя, должна так называться "V8Exchan83.epf"
или вообще встроенной "Универсальный обмен данными XML"

кстати, а ты выбираешь узел обмена в этой обработке? (хз, но может влияет)
38 Serg_1960
 
30.09.22
08:57
Автору русским же языком написана ошибка - "Переменная не определена (УзелДляОбмена)" - надо гуглить.
Короче: если взять за основу типовые правила обмена между конфигурациями и использовать их в универсальном обмене данными, то нужно инициализировать переменную "УзелДляОбмена" с типом "ПланОбменаСсылка.НаименованиеПланаОбменаОткудаВзятыПравила". Можно, например, на форме обработки создать реквизит с таким наименованием и типом.
39 Serg_1960
 
30.09.22
09:15
(37) Имхо, штатные правила обмена типовых планов обмена используют "УзелДляОбмена", а универсальный обмен данными XML - "УзелОбмена" и "СсылкаНаУзелОбмена".
40 jamesgold
 
30.09.22
12:04
(38) Добавил реквизит в обработку "УзелДляОбмена", установил ему значение нужного узла, ошибка ушла но появился целый ряд других:
https://ibb.co/4RckT8w
41 jamesgold
 
30.09.22
13:11
(37) Таже ошибка с этой обработкой "V8Exchan83.epf".