Занятие № 06. Курс «1С:Конвертация данных 2.1 – Профессиональная настройка правил обмена и типовые сценарии переноса данных»
Сложные преобразования при переносе данных
Изучите теорию модуля № 1:
- Глава 7. Конвертация “Один в несколько”
Выполните практические задания:
Отчеты по домашним заданиям размещайте по ссылкам, указанным выше. Отчеты, опубликованные на этой странице, удаляются без предупреждения.
Ваши вопросы по материалам данного занятия задавайте в комментарии ниже.
Общие вопросы по курсу, не связанные с конкретным занятием, задавайте на странице: http://kursy-po-1c.ru/data-conv/all-hw/convdata-common-qa/
Общие вопросы по курсу, не связанные с конкретным занятием, задавайте на странице: http://kursy-po-1c.ru/data-conv/all-hw/convdata-common-qa/
К сожалению, у Вас недостаточно прав для дальнейшего просмотра.
Если Вы приобрели курс, но еще не активировали токен — пожалуйста, активируйте доступ по инструкциям, высланным на Ваш email после покупки.
Если Вы не залогинены на сайте — залогиньтесь, вернитесь на эту страницу и обновите ее.
Если Вы залогинены, у Вас активирован токен доступа, но Вы все равно видите эту запись — напишите нам на e-mail поддержки.
Комментарии / обсуждение (113):
Комментарии закрыты
Добрый день!
Использую Конвертация данных, редакция 2.1 (2.1.8.2)
При выполнении настройки по видео 1.6.8 для загрузки документов с последующим проведением по команде формы из “ДопОбработки” столкнулся затруднениями в устранении двух ошибок.
В настройках конвертации за вкладке “Подключаемые обработки” добавил новую обработку из файла в соответствии с описанием из Видео. Внешняя обработка была создана ранее в конфигураторе базы приемника.
В ПКО документа для с обытия ПослеЗагрузки написал код для добавления в табличную часть ДопОбработки код
СтрТЧ = ДопОбработки.ДокументыДляПроведения.СписокДокументов.Добавить();
При загрузке в базе приемника появляется сообщение об ошибке
ИмяПКО = ВыбытиеТоваровСоСклада
ТипОбъекта = Выбытие товаров со склада
Объект = Выбытие товаров со склада 1 от 14.02.2007 13:05:19
Обработчик = ПослеЗагрузкиОбъекта
ОписаниеОшибки = Поле объекта не обнаружено (ДокументыДляПроведения)
“ДокументыДляПроведения” – название внешней обработки. Так она называется в конфигураторе и так она называется в списке подключаемых обработок в настройках конвертации..
При выводе отладочных сообщений, о “ДопОбработки” в результатах вижу, что это Тип Структура, количество элементов = 0.
КОД:
Сообщить(ТипЗнч(ДопОбработки));
Сообщить(“Элементы: ” + Строка(ДопОбработки.Количество()));
Начало загрузки: 21.06.2020 15:44:12
Структура
Элементы: 0
Подскажите что может служить препятствием для обращения к ДопОбработке в коде обработчиков правил?
В файле правил .xml обработка присутствует в двоичном виде.
В обработчике события ПослеЗагрузкиДанных конвертации уведомление об ошибке говорит об ошибке в имени формы. Код вставил из модуля обработки приемника
ОткрытьФорму(“ВнешняяОбработка.ДокументыДляПроведения.Форма.Форма”);
базу приемника открываю в толстом клиенте
При добравлении обработки на закладке “Подключаемые обработки” галку “Обработка используется при загрузке данных” поставили ?
Да. Использование обработки при загрузке установил. Обмен выполнял с использованием обработки универсального обмена V8Exchan83.epf
Приложите правила и обработку. Не забудьте заархивировать
При решении преподавателя примера 1.6.2, мы в передаваемых данных, передаем ссылку, которую “цепляет” документ ” Требование накладная” ; то есть,получается, эта ссылка равна UID ссылки документа источника?
Добрый день
Да, получается, что Уникальный идентификатор будет совпадать у исходного документа Выпуск и у итоговых документов Отчет производства за смену и Требование-Накладная
Здравствуйте. Помогите,пожалуйста, найти ошибку.
Задание 1.6.2
1. Добавляем ПКО ТребованиеНакладная с пустым источником(Снимаем поиск по идентификатору) к нему ПКС Дата Номер и ПКГС Материалы и в нем Номенклатура и Количество Отмечаем Галочки Получать из Входящих Данных
2. Добавляем ПКО ОтчетПроизводстваЗаСмену с пустым источником К нему ПКС Дата Номер ТребованиеНакладная (указываем в событии перед выгрузкой ИсходящиеДанные = Источник.ТребованиеНакладная;) и ПКГС Выпуск в нем Номенклатура и Количество
3. Добавляем ПВД Произвольным запросом, указываем ПКО ОтчетПроизводстваЗаСмену в событии перед обработкой
ВыборкаДанных.Колонки.Добавить("Дата");
ВыборкаДанных.Колонки.Добавить("Номер");
ВыборкаДанных.Колонки.Добавить("ТребованиеНакладная");
ВыборкаДанных.Колонки.Добавить("Выпуск");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ВыпускПродукцииВыпуск.ВидВыпуска,
| ВыпускПродукцииВыпуск.Номенклатура как Номенклатура,
| ВыпускПродукцииВыпуск.Количество как Количество ,
| ВыпускПродукцииВыпуск.Ссылка КАК Ссылка,
| ВыпускПродукцииВыпуск.Ссылка.Дата как Дата,
| ВыпускПродукцииВыпуск.Ссылка.Номер как Номер
|ИЗ
| Документ.ВыпускПродукции.Выпуск КАК ВыпускПродукцииВыпуск
|ИТОГИ ПО
| Ссылка";
РезультатЗапроса = Запрос.Выполнить();
ВыборкаСсылка = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаСсылка.Следующий() Цикл
// Вставить обработку выборки ВыборкаСсылка
СтрокаДанных = ВыборкаДанных.Добавить();
СтрокаДанных.Дата = ВыборкаСсылка.Дата;
СтрокаДанных.Номер = ВыборкаСсылка.Номер;
ТребованиеНакладная = Новый Структура;
СтрокаДанных.ТребованиеНакладная = ТребованиеНакладная;
Выпуск = Новый ТаблицаЗначений;
Выпуск.Колонки.Добавить("Номенклатура");
Выпуск.Колонки.Добавить("Количество");
СтрокаДанных.Выпуск = Выпуск;
Материалы = Новый ТаблицаЗначений;
Материалы.Колонки.Добавить("Номенклатура");
Материалы.Колонки.Добавить("Количество");
ВыборкаДетальныеЗаписи = ВыборкаСсылка.Выбрать();
ТребованиеНакладная.Вставить("Дата",ВыборкаСсылка.Дата);
ТребованиеНакладная.Вставить("Номер",ВыборкаСсылка.Номер);
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Если ВыборкаДетальныеЗаписи.ВидВыпуска = Перечисления.МатериалПродукция.Материал Тогда
СтрокаМатериалы = Материалы.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаМатериалы,ВыборкаДетальныеЗаписи);
иначе
СтрокаВыпуск = Выпуск.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаВыпуск,ВыборкаДетальныеЗаписи);
КонецЕсли;
КонецЦикла;
ТребованиеНакладная.Вставить("Материалы",Материалы);
СтрокаДанных.ТребованиеНакладная = ТребованиеНакладная;
КонецЦикла;
Если не переносить ПКГС Материалы тогда перенос работает кроме переноса таб части.
Если переносить выдает ошибки Ошибка получения свойства подчиненного объекта из входящих данных
ПКО = ТребованиеНакладная (:)
ПКС = 4 (–> Количество)
Объект = Структура (Структура)
СвойствоПриемника = Количество (Число)
ОписаниеОшибки = Поле объекта не обнаружено (Количество)
ПозицияМодуля = ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(8282)
КодСообщения = 67
Ошибка при выгрузке данных: {ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(1693)}: Ошибка получения свойства подчиненного объекта из входящих данных
ПКО = ТребованиеНакладная (:)
ПКС = 4 (–> Количество)
Объект = Структура (Структура)
СвойствоПриемника = Количество (Число)
ОписаниеОшибки = Поле объекта не обнаружено (Количество)
ПозицияМодуля = ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(8282)
КодСообщения = 67
Откройте конфигуратор исходной базы, создайте обработку, перенесите код вашего обработчика из ПВД в обработчик нажатия кнопки, сохраните. Поставьте точку останова на конце процедуры обработчика, запустите обработку в отладчике. Посмотрите что у Вас в ВыборкаДанных. Структура строки таблицы значений ВыборкаДанных должна совпадать со структурой документа ТребованиеНакладная. У Вас там явно не та структура. Должно быть примерно так
ВыборкаДанных.Колонки.Добавить("Дата");
ВыборкаДанных.Колонки.Добавить("Номер");
ВыборкаДанных.Колонки.Добавить("Материалы");
Потом при добавлении строки в эту таблицу значений, нужно в колонку Материалы присваивать таблицу значений с колонками Номенклатура и Количество, в которую добавлять материалы из ТЧ Выпуск
Здравствуйте.
Во внешней обработки отлаживала структуру.
Можно ли это сделать таким образом?
Структура ВыборкаДанных у меня соответствует документу ОтчетПроизводстваЗаСмену со следующими полями Дата, Номер, ТребованиеНакладная(Тип структура с полями Дата, номер, Материалы(Это таблица значений)) , Выпуск(Таблица значений).
Все переносится кроме табличной части Материалы.
А если переносить сначала ТребованиеНакладная то как передавать ссылку на него в документ ОтчетПроизводстваЗаСмену?
Решила помогло добавление в ПКО ТребованияНакладная проверки на структура из 7 занятия. В событии перед выгрузкой
отказ=истина;
КонецЕсли ;
Отлично. Вопрос закрываем ?
Наталья, добрый день
Попробуйте галочки “Получить из входящих данных” в этих ПКО везде снять и повторить.
Вы передаете эти структуры в качестве Источников, а программа пытается их получить из входящих данных, и поэтому возникает ошибка
В остальном Ваш алгоритм выглядит правильно
Здравствуйте, Ольга. Спасибо большое за ответ, данный вариант тоже заработал. Убрала галочки получать из входящих во всех ПКС к ПКО ТребованиеНакладная и В ПКС ТребованиеНакладная убрала ИсходящиеДанные = Источник.ТребованиеНакладная; и проверка ну на структуру.
Правильно ли я поняла, если мы в ПВД формируем набор данных для передачи в вызываемые ПКО объявляем как структура и более настроек никаких не делаем? Главное что бы совпадали имена везде.
Добрый день, Наталья
Да, в ПВД с произвольным алгоритмом можно собрать таблицу значений ВыборкаДанных так, чтобы совпадали поля и типы данных с тем, как настроены ПКО и ПКС. Дальше все само выгружается, передаваясь рекурсивно в ПКО, затем в ПКС и дальше в ПКО, указанные в ПКС. Если в ВыборкеДанных везде, где должны быть ссылочные данные, создать структуры с нужными именами и типами элементов, то они попадут “на вход” в ПКО и выгрузятся автоматически.
Исходящие-Входящие данные нужны, когда Вы выгружаете ссылку на объект, а нужно передать еще какие-то данные. А когда создаете произвольную ВыборкуДанных, то проще все сразу создать так, чтобы выгрузилось автоматически, и входящие данные не нужны
Здравствуйте, Ольга.
Спасибо большое, за подробный ответ.
…
(текст комментария доступен только участникам Мастер-группы)
Добрый день.
По задаче 1.6.2 предложено использовать два разных ПКО для переноса отчета производства за смену и требования-накладной из документа Выпуск продукции. Но в документе выпуск продукции поле Номенклатура составного типа, в этом поле могут быть как элементы справочника Продукция, так и элементы справочника Материалы.
Для ПКС Номенклатура в созданных ПКО явно не указали, по какому правилу выгружать эти поля. Как система подберет нужное правило, если для выгрузки в справочник Номенклатура были ранее созданы три разных ПКО?
Добрый день
Правило может быть подобрано автоматически из тех, что настроены, по реальному типу выгружаемого объекта.
Но можно и явно задать правила для обоих случаев, это будет более правильно. Для этого в ПКС Номенклатура При выгрузке нужно написать что-то вроде такого:
ИмяПКО = "ПродукцияНоменклатура";
ИначеЕсли ТипЗнч(Значение) = Тип("СправочникСсылка.Материалы") Тогда
ИмяПКО = "МатериалыНоменклатура";
КонецЕсли
Здравствуйте! В решение преподавателя в задании 1.6.1 и в ранних было создано поле Синхронизация в конечной базе и настроены правила для этого поля. НО если речь идет о типовых конфигурациях и вносить изменения не желательно то такой перенос надо делать использую доп. реквизиты? и будут ли в уроках настройки правил для доп. реквизитов?
Добрый день
В типовых конфигурациях везде есть регистры сведений, в которых хранится соответствие объектов в разных информационных базах. Те обмены, которые встроены в типовые конфигурации, сами используют эти регистры для поиска, ничего специального делать для этого не нужно, просто оставить в правилах поиск по уникальному идентификатору.
Если же создавать правила для использования в типовой конфигурации, но не со встроенным обменом, а через обработку Универсального обмена, то можно тоже использовать эти регистры соответствия, просто написать алгоритм для поиска там объекта и добавления туда записи соответствия, если ее еще нет.
В следующих модулях будет что-нибудь подобное рассмотрено с использованием этого регистра ?
В разделе Синхронизация есть видео Синхронизация по внешним данным. Там аналогичная задача рассматривается. Только регистр по-другому устроен.
Здравствуйте! Подскажите, пожалуйста, как при переносе документа организовать поиск по Дате без времени? Т.е. если не подходит поиск по УИН, а осуществляется поиск по Номеру и дате?
Добрый день.
Можно в ПКО в обработчике “Поля поиска” написать поиск запросом. Там в условиях указать, что Дата должна быть больше начала суток и меньше конца суток.
Если можно немного подробнее, как написать поиск запросом?
Об этом рассказано в видео 1.4.8 Синхронизация по внешним данным
Здравствуйте!
В ПВД использую Произвольный алгоритм для выгрузки контрагентов. В БД_Источник, у контрагента реквизит ЮрФизЛицо, в БД_Приёмник – это реквизит ВидКонтрагента.
В запросе указал псевдоним Контрагенты.ЮрФизЛицо КАК ВидКонтрагента. В общем это всё работало!
Дело дошло до договоров, подчинённых контрагентам.
В ПКО спр. Договоры, ПКС Владелец использует правила конвертации Контрагентов по произвольному алгоритму.
Тут и возникала ошибка в ПКО Контрагенты, поле ВидКонтрагента не обнаружено. Подскажите как правильно поступить? Не хотелось бы делать ещё одно ПКО для Контрагента.
Здравствуйте!
Тогда нужно в ПКС ВидКонтрагента в событии Перед выгрузкой написать ручное получение значения свойства. Скорее всего, Вам нужно ориентироваться на тип значения Источника. Если это ссылка на элемент справочника, то не выгружать это свойство. А если это выборка из результата запроса (или строка таблицы значений, в зависимости от того, как Вы формируете коллекцию ВыборкаДанных), то получить значение этого свойства вручную. То есть примерно так:
Отказ = Истина;
ИначеЕсли ТипЗнч(Источник) = ... Тогда
Значение = Источник.ВидКонтрагента;
КонецЕсли;
Относительно функции ВыгрузитьПоПравилу.
Я не понял, откуда мы в принципе о ней узнали, все ли экспортные функции обработки обмена можно использовать при написании кода и в каких обработчиках?
Если перед выгрузкой мы вызовем эту функцию, нужно ли в коде прописывать Отказ = Истина; ?
Код обработчиков выполняется в определенные моменты выгрузки и загрузки с помощью метода Выполнить(). Поэтому в этом выполняемом коде доступен весь контекст модуля обработки. Все функции можно использовать, а также все глобальные переменные, и все локальные, которые доступны в этом месте модуля обработки.
Можно посмотреть в модуле обработки, если там есть нужная функция, можно использовать ее в обработчике.
Если настроить ПВД, указать объект выборки и ПКО, а в событии Перед выгрузкой вызвать функцию ВыгрузитьПоПравилу() для выгрузки еще каких-то объектов, то выгружены будут и те, для которых вызывалась эта функция, и те, которые указаны в ПВД. Поэтому если нужно выгрузить объекты только с помощью этой функции, то да, нужно написать в этом обработчике Отказ = Истина;
Вроде, простой момент, но не понял принципа с приоритетами.
У добавленных правил по переносу сотрудников вместе с авто приоритеты 750 и 850, у старого – 150. Для родителя явно ПКО указано не было, и использовалось с максимальным приоритетом, т.е. 850.
В уроке сказано, что при выгрузке сначала обработка идет у правил с меньшим порядком.
Не понятна логика. В первом случае будто чем больше порядок, тем больше приоритет, во втором – обратная ситуация.
Здравствуйте!
Да, когда выполняются ПВД, то первым выполняется правило с наименьшим порядком, и далее по возрастанию. Потому что это именно порядок выполнения. А у ПКО это именно приоритет – то есть какое из правил используется “по умолчанию”. Поэтому, если ПКО не указано, используется то ПКО, у которого приоритет выше.
Здравствуйте. Написал решение к заданию в воскресенье. Появилась ссылка на видео в понедельник, ни моего решения ни ответа преподавателя нет. Не видно и остальных комментариев.
Доброго дня, Илья!
Задание 1.6.1 является необязательным. Решение здесь – http://курсы-по-1с.рф/1c-v8/convdata-intensive/startpage/homework-1-6-1-other/
Здравствуйте, в чем может быть проблема? При выгрузке правил ошибка:
Ошибка при выгрузке данных: {Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(9718)}: Ошибка при вызове метода контекста (Удалить): Значение индекса выходит за границы диапазона.
Проблема с ПВД: СотрудникиЛичноеСлужебноеАвто
Здравствуйте!
Какая-то ошибка в правилах, возможно, неправильно ПКО указали где-то. Прикрепите к комментарию правила в zip или rar архиве, я посмотрю
Вопрос по видео уроку 1.7.8.
На 5 минуте записи говориться о том, что после загрузки данных в конечную базу (т.е. в обработчике “После загрузки”) можно получать старые данные запросом из базы данных. Как так может быть, если новые данные уже были загружены в конечную базу, то где же могут храниться старые данные?
Здравствуйте!
Просто обработчик ПКО После загрузки выполняется до записи этого объекта в информационную базу. Поэтому по ссылке можно из информационной базы получить “старую” версию объекта. “Новая” версия – заполненный, но еще не записанный объект – находится в параметре Объект. Можно их сравнить и как-то изменить новую загружаемую версию
Помогите разобраться, пожалуйста.
При повторе примера из видео 1.7.7 “Конвертация одна строка в несколько”, а именно добавляю стоку для прочих услуг
Если ВыборкаТовары.ДопЗатраты > 0 Тогда
СтрокаТЧ = Услуги.Добавить();
СтрокаТЧ.Товар = “ПрочиеУслуги”;
СтрокаТЧ.Сумма = ВыборкаТовары.ДопЗатраты;
КонецЕсли;
при выгрузке получаю ошибку:
“Ошибка получения значения свойства объекта (по имени свойства источника)
ПКО = Номенклатура (Справочик: Товары)
ПКС = 2 (Код -> Код)
Объект = ПрочиеУслуги (Строка)
СвойствоПриемника = Код (Строка)
ОписаниеОшибки = Получение значения по индексу для значения не определено
…
Помогите разобраться, пожалуйста.
Здравствуйте!
Получается, что вместо товара передается строка “ПрочиеУслуги”, а выгружается она по такому ПКО, которому должна быть передана ссылка на Товар, чтобы из этой ссылки получить все свойства. Либо нужно для этой строки отдельное ПКО, которое умеет выгружать элемент справочника из строки, либо в эту строку табличной части записать не строковое значение, а хотя бы структуру, у которой будут все необходимые свойства (для которых в ПКО Номенклатура настроены ПКС)
Напомните, пожалуйста, как обращаться к структуре “Параметры” в Обработчике ПВД “Перед обработкой”.
Ранее создала ПКС с передачей в параметр. Пробовала Параметры.ВидВыпуска и Параметры[“ВидВыпуска”] – “Поле объекта не обнаружено (ВидВыпуска)”
Здравствуйте!
Обработчик ПВД перед обработкой выполняется даже раньше, чем ПКО и ПКС. Данные, переданные через ПКС с видом Передача в параметр, можно получить в обработчике ПКО После загрузки (или Поля поиска, если это ПКС отмечено флагом поиска) из соответствия ПараметрыОбъекта
ДЗ 1.6.2. Я использую функцию ВыгрузитьПоПравилу для создания документа Требование-накладная. Этот документ создается и выгружается в файл XML. Функция возвращает следующий узел XML (ТипЗнч = Строка), который совпадает с узлом ссылки в выгруженном документе Требование-Накладная.
2012-08-01T00:00:00
000000001
В моей версии КД, (Конвертация данных, редакция 2.1 (2.1.8.2)) параметр УзелСсылки доступен только в обработчике После Выгрузки, и присвоение ему возвращаемого значения не приводит к заполнению узла ссылки для свойства ТребованиеНакладная.
Подскажите, пожалуйста, как необходимо передать возвращаемое значение в узел ссылки выгружаемого свойства ТребованиеНакладная.
Присвоение Значение = Источник.Номер обработчике Перед Выгрузкой – это единственный способ, который я нашел для того, чтобы заставить обработчик После Выгрузки выполниться. Если не присвоить значение, но вызов обработчика После Выгрузки не выполняется.
Сам нашел вот такой способ.
В обработчик ПКС ТребованиеНакладная добавил код
УзелСсылки = ВыгрузитьПоПравилу(Источник,,,, “Выпуск_ТребованиеНакладная”);
ДобавитьПодчиненный(УзелСвойства, УзелСсылки);
ДобавитьПодчиненный(Приемник, УзелСвойства);
После этого свойство выгрузилось в файл обмена и успешно заполнилось в конечной базе. Мне в этом решении не нравится то, что я фактически вручную формирую узел свойства и вручную его записываю в файл обмена. Есть ли более понятное (следующему разработчику) решение?
Здравствуйте!
Вы все сделали правильно, но слишком сложно.
Вызов функции ВыгрузитьПоПравилу() – это как раз момент перехода из ПКС (для ссылочного типа) в ПКО (указанное в нем). Эта функция выгружает объект свойства согласно ПКО и возвращает узел ссылки, который будет присвоен в узел свойства. То есть то же самое, что Вы сделали вручную. Позвольте ПКС ТребованиеНакладная отработать автоматически. Для этого ему нужна та же информация, которую Вы сообщили функции ВыгрузитьПоПравилу() – указать ПКО и задать Источник (в ПКС это параметр Значение). И результат будет тот же.
Если нужно более подробно – пишите на странице вопросов по ДЗ.
Спасибо большое за объяснение. Теперь всё встало в моей голове на места. Действительно так гораздо проще и понятней.
ДЗ 1.6.1. Помогите, пожалуйста, решить загадку. Создал правила по этому ДЗ (ПВД НоменклатураМатериалыТоварыПродукция) и получил выгрузку. Загрузил в конечную. Вся номенклатура разложилась по группам, как положено. Но отчего же коды перенеслись в каждой группе одинаковые? В данных они все разные.
Здравствуйте!
Вы прибавляете к ним префикс, и получается слишком длинная строка, которая обрезается.
1. Особенность применения «Узел ссылки»
Не открывается видео под этим пунктом.
Доброго дня!
Видео Вам удалось скачать? Видео не отображается или после скачивания не открывается?
Видео-кодек TSCC у Вас установлен?
Сейчас скачивается. Спасибо.
Здравствуйте, в ходе решения ДЗ 1.6.2 у меня появились некоторые вопросы. На всякий случай привожу текст моего решения:
Здравствуйте,
1) Создал ПКО “ПереносВыпусков” c ПКС ТребованиеНакладная, Дата. Также создал ПКГС Выпуск с ПКС Номенклатура и количество. Установил автоматическую генерацию номера.
2) Создал ПВД “Перенос выпусков” с произвольным алгоритмом со следующим кодом в событии перед обработкой:
ВыборкаДанных = Новый ТаблицаЗначений;
ВыборкаДанных.Колонки.Добавить(“Ссылка”);
ВыборкаДанных.Колонки.Добавить(“Дата”);
ВыборкаДанных.Колонки.Добавить(“Выпуск”);
ВыборкаДанных.Колонки.Добавить(“ТребованиеНакладная”);
ВыборкаДанных.Колонки.Добавить(“Материалы”);
Запрос = Новый Запрос;
Запрос.Текст =
“ВЫБРАТЬ
| ВыпускПродукцииВыпуск.Ссылка КАК Ссылка,
| ВыпускПродукцииВыпуск.Ссылка.Дата КАК Дата,
| ВыпускПродукцииВыпуск.Номенклатура,
| ВыпускПродукцииВыпуск.Количество,
| ВыпускПродукцииВыпуск.ВидВыпуска
|ИЗ
| Документ.ВыпускПродукции.Выпуск КАК ВыпускПродукцииВыпуск
|ИТОГИ
| МАКСИМУМ(Дата)
|ПО
| Ссылка”;
РезультатЗапроса = Запрос.Выполнить();
ВыборкаСсылка = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаСсылка.Следующий() Цикл
Запись = ВыборкаДанных.Добавить();
Запись.Ссылка = ВыборкаСсылка.Ссылка;
Запись.Дата = ВыборкаСсылка.Дата;
Запись.ТребованиеНакладная = “1”;
Выпуск = Новый ТаблицаЗначений;
Выпуск.Колонки.Добавить(“Количество”);
Выпуск.Колонки.Добавить(“Номенклатура”);
Запись.Выпуск = Выпуск;
Материалы = Новый ТаблицаЗначений;
Материалы.Колонки.Добавить(“Количество”);
Материалы.Колонки.Добавить(“Номенклатура”);
Запись.Материалы = Материалы;
ВыборкаДетальныеЗаписи = ВыборкаСсылка.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Если ВыборкаДетальныеЗаписи.ВидВыпуска = Перечисления.МатериалПродукция.Продукция Тогда
ЗаписьТЧ = Выпуск.Добавить();
ЗаписьТЧ.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура;
ЗаписьТЧ.Количество = ВыборкаДетальныеЗаписи.Количество;
Иначе
ЗаписьТЧ = Материалы.Добавить();
ЗаписьТЧ.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура;
ЗаписьТЧ.Количество = ВыборкаДетальныеЗаписи.Количество;
КонецЕсли;
КонецЦикла;
КонецЦикла;
3) Создал ПКО ТребованиеНакладнаяВОтчетеПроизводства с ПКС Дата и ПКГС Материалы. Установил для них признак получать из входящих данных. Снял поиск по УИН включил автоматическую генерацию кода. Установил поиск по ПКС Дата по точному соответствию.
4) В ПКС ТребованиеНакладная ПКО “ПереносВыпусков” в событии перед выгрузкой следующий код:
ИсходящиеДанные = Новый Структура(“Дата,Материалы”,Источник.Дата,Источник.Материалы);
5) Выгрузил, загрузил данные. Убедился что все хорошо переносится.
С какими проблемами я столкнулся при решении. Конвертация упорно не хотела заходить в ПКО ТребованиеНакладнаяВОтчетеПроизводства пока я в произвольном алгоритме выгрузки не написал следующее: Запись.ТребованиеНакладная = “1”; Получается если в значении Источника у нас значится Неопределено, а Запись.ТребованиеНакладная = “1”;, судя по всему так и было ПКО не будет выполняться для ПКС что ли (Причем я пробовал просто даже написать Запись.ТребованиеНакладная = “”;, все равно КД не выполняла это правило)?
Затем встал у меня вопрос с синхронизацией – как синхронизировать Требование накладную? Синхронизацию по УИН естественно я снял так как у меня его вообще нету, ну и галочки поиска тоже решил не проставлять. Что получил в итоге? Требование у меня перенеслось, но как ссылка не проставилась в Отчет производства за смену, когда я проставил что поиск документа у меня пойдет по точному соответствию даты – то все прошло успешно. Получается что если у нас переносится объект с примитивными типами данных то галочки вообще все снимать можно (Допустим я одноразово буду переносить некоторые данные в чистую базу, то мне эти галочки вообще не нужны), а если нет (как в нашем случае в Отчете производства за смену переносилось Требование), то тогда если у нас отключен поиск по УИН, обязательно нужно включать поиск хотя бы поиск по 1 из полей. Просьба как-то тоже прокомментировать это умозаключение.
Здравствуйте!
ПКО для ТребованияНакладной не выполнялось, скорее всего, потому, что в ПКС в параметре Значение было пусто, а в этом случае конвертация этого значения не происходит. Можно в ПКС в событии Перед выгрузкой написать
Значение = 1;
И ПКО начнет выполняться. Или, как Вы правильно сделали, в формируемой таблице присвоить любое (но не пустое!) значение этому свойству.
Поле ЭтоГруппа нужно отмечать флагом поиска, чтобы корректно переносились группы справочников. В остальных случаях если не используется уникальный идентификатор и не отмечено ни одно поле поиска, то объекты загрузятся один раз правильно, а в последующие загрузки будут дублироваться. При этом на эти объекты потеряются ссылки из других объектов. Кроме того, из-за этого могут быть еще другие ошибки, если правила достаточно сложные. В реальной работе лучше отмечать хотя бы одно поле поиска для более стабильной работы обмена
Добрый день. Ранее в курсе было сказано, что если не указано пко в пкс, то подбирается пко по соответствию источник-приемник и с высшим приоритетом. У меня же в случае с уроком 1.7.2 (конвертация один в несколько часть 2) пко подбирается по соответствию только приемника и приоритета (т.е. из критериев подбора выкинут источник). И в видео уроке как полагаю тоже самое. Или я что-то не понимаю ?
Здравствуйте!
На самом деле при подборе правила учитывается только тип переданного объекта. То есть среди всех настроенных ПКО происходит поиск такого, где тип объекта-источника совпадает с типом выгружаемого объекта, и при этом максимальный приоритет.
В реальной работе лучше не надеяться на автоматический подбор правил, а указывать ПКО явно во всех ПКС для ссылочных типов
В 1.6.2 создаётся ВыборкаДанных и двумя ПКО переносится в два документа предполагая что поля приемников не пересекаются
Вопрос такой: если в двух документах приемниках есть ТЧ “Номенклатура” но в каждый документ надо переносить “свою” номенклатуру.
Ну или проще, надо создать два документа с разными датами. Например в исходной базе есть документ с реквизитами “ДатаНачала” и “ДатаОкончания” в конечной надо создать два документа и перенести “ДатаНачала” и “ДатаОкончания” в поле “Дата”
Тобишь можно ли произвольным алгоритмом (допустим все данные выбираются одним запросом) создать две (3,4,5) выборок данных (в которых поля могут называться одинаково, но содержать разные данные) и передать их в разные ПКО?
Здравствуйте!
Выборка, обход которой будет осуществляться автоматически, может быть создана только в отдельном ПВД. Но в любом месте процесса выгрузки можно сформировать Структуру с полями, именованными как свойства объекта, передать ее в подходящее ПКО, и она будет выгружена, как объект. В ДЗ 1.6.2 можно составить выборку данных, включив в нее все необходимые данные, а потом из каждой строки формировать произвольный объект с произвольными свойствами и табличными частями, и выгружать его по нужному ПКО. При этом сама строка выборки данных может выгружаться по правилу, указанному в ПВД.
ВыгрузитьПоПравилу(Источник,Приемник,ВходящиеДанные,ИсходящиеДанные,ИмяПКО,УзелСсылки, ТолькоПолучитьУзелСсылки,ПКО,ЭтоПравилоСГлобальнойВыгрузкойОбъектов,ВыборкаДляВыгрузкиДанных)
а если в одном ПВД для которого не указано ПКО сформировать таблицы ВыборкаДанных1,ВыборкаДанных2,ВыборкаДанных3 а потом в этом же ПВД
ВыгрузитьПоПравилу(,,,,”ПКО1″,,,,,ВыборкаДанных1);
ВыгрузитьПоПравилу(,,,,”ПКО2″,,,,,ВыборкаДанных2);
ВыгрузитьПоПравилу(,,,,”ПКО3″,,,,,ВыборкаДанных3);
Получилось
В ПВД “ПередОбработкой” указал
ВыгрузитьПоПравилу(ВыборкаДанных1,,,,”ИмяПКО_1″);
ВыгрузитьПоПравилу(ВыборкаДанных2,,,,”ИмяПКО_2″);
Отказ = 1;
Здравствуйте!
По этому ПВД должно выгрузиться 2 объекта, если в выборке данных находятся подходящие данные
Функция ВыгрузитьПоПравилу() выгружает только один объект, она не выполняет обход выборки. Так что так можно, но это должно быть в цикле по строкам выборки.
В цикле по строкам выборки не получилось. Сделал в цикле формирование “ВыборкаДанных” и сразу их в “Выгрузить по правилу”. Хоть и надо было по одному разу выгрузить но поэкспериментировать интересно было. Спасибо.
:)
На домашнем задании 1.6.2 у меня возник вопрос, который, наверное, надо было задать раньше. Вот мы переносим документы по ссылке и считаем, что в базе-приемнике такого УИД быть не может. По условиям задачи подразумевается, что пользователь не создаёт там документы самостоятельно? Или я не понимаю чего-то основополагающего?
Здравствуйте!
Если данные из базы-Источника впервые переносятся в базу, которая велась полностью отдельно от базы-Источника, то вероятность совпадения уникальных идентификаторов объектов в них исчезающе мала. Вероятность эта становится больше, если объекты с идентификаторами уже переносились, а независимое ведение базы-Приемника продолжается. Или если обе базы являются потомками одной.
Поэтому в типовых конфигурациях для синхронизации объектов используется регистр сведений “Соответствие объектов информационных баз”. Это самый оптимальный подход для сопоставления объектов.
Но в рамках решения домашнего задания можно считать, что синхронизация по идентификатору нас устраивает
Ольга, добрый день! У меня вопрос по реквизиту СтавкаНДС из табличной части. В видео 1.7.6, 1.7.7, 1.7.8 четко видно, что Ставка НДС переносится и проставляется только 1 раз (как 10%, так и 18), Например, если в ТЧ 2 товара со ставкой 18 % и этот документ первый из переносимых, то Ставка НДС заполняется только у первого товара, второй идет без ставки, в последующих документах – если должна быть ставка НДС 18 %, то она не проставляется вообще. В видео отчетливо это видно (лично мне казалось, что Евгений вот-вот скажет про эти ставки, он даже курсор туда ставит), но Евгений не акцентирует на этом внимание. Подскажите, как реализовать полный перенос всех ставок НДС в документы, не используя галку “Не запоминать выгруженные объекты” (с ним количество выгружаемых объектов знаичительно больше) у ПКО “СтавкиНДС”, ключ мне как-то не удалось придумать. Хочется выгрузить Ставки НДС 1 раз и потом везде где надо их подставлять.
Здравствуйте!
Дело в том, что в этих видео-уроках для ПКС СтавкиНДС использовалось ПКО СтавкиНДС, разработанное в видео-уроке 1.5.4. В этом ПКО происходило присвоение нужного значения параметру УзелСсылки. В этом случае ключ выгружаемых данных не поможет, это ПКО будет работать только с установленным флажком “Не запоминать выгруженные”.
Для конвертации в перечисление (для всех случаев, кроме прямого сопоставления значений перечислений в ПКЗ) не нужно создавать ПКО. В ПКС СтавкаНДС нужно написать
Если Источник.СтавкаНДС.Процент = 10 Тогда
Значение = “Ставка10”;
ИначеЕсли…
и так далее. В этом случае все будет перенесено корректно, и лишней информации в файл данных записано не будет
Ольга, спасибо огромное! Подкорректировала Ваш код до:
Значение = "Ставка10";
ИначеЕсли ОбъектКоллекции.СтавкаНДС.Процент = 18 Тогда
Значение = "Ставка18";
ИначеЕсли ОбъектКоллекции.СтавкаНДС.Процент = 0 Тогда
Значение = "БезНДС";
КонецЕсли;
в обработчике ПередВыгрузкой у ПКС СтавкаНДС, и все заработало.
Отлично :)
в решении задачи 1.6.2 использовал одну ссылку (УИД) с документа выпуск продукции для 2-вух документов в приемнике
пробовал на разных тестовых данных… загружалось нормально
по идее, таблицы разные, но допустимо ли такое на практике?
или нужно создать дополнительный реквизит в базе приемнике для поиска?
после просмотра решения, вопрос снят
Здравствуйте!
На практике лучше, конечно, записывать идентификаторы объектов в регистр сведений, и синхронизировать по этому регистру, как это сделано в типовых конфигурациях
Здравствуйте,
При решении задания 1.6.2 пытаюсь в одном ПВД заполнить ВыборкуДанных как таблицу значений
Причем колонка “ТребованиеНакладная” это тоже таблица значений, которая состоит из Даты, Номера, и таблицы значений “Материалы”
При переносе свойства “ТребованияНакладная” указано в явном виде правило.
При обмене возникает ошибка:
” Не найдено правило конвертации объектов
ТипОбъекта = Строка таблицы значений
Объект = СтрокаТаблицыЗначений
КодСообщения = 45″
Что я не так делаю, или нужно делать два ПВД?
Здравствуйте!
Помещайте в колонку ТребованиеНакладная не таблицы, а структуры с элементами Дата, Номер и Материалы. А вот Материалы это должна быть таблица значений
Спасибо ошибка ушла. У меня не было выбрано правило конвертации в ПВД.
Здраствуйте, возникли проблемы с выполнением задания 6.1
В общем создал я новое ПКО (для переноса групп) с пустым источником для справочника номенклатура. Убрал галочку “Искать объект приемника по вн. ид.”, установил авт. генерирование номера или кода.
Установил поиск по наименованию и ЭтоГруппа. Для наименования указал “Получать из входящих данных”, для ЭтоГруппа в “ПередВыгрузкой” установил Значение = Истина;
Ну и соответственно во всех ПКО для поля Родитель указываю это новое ПКО и в исходящие данные передаю наименование справочника.
При переносе при этом группы номенклатуры не создаются.
В чем может быть проблема? Может я не правильно задание, как его вообще надо выполнять?
Здравствуйте!
Нет, все правильно, только в ПКС Родитель нужно написать
Значение = 1;
Если в ПКС переменная Значение остается не заполненной, то ПКО не выполняется
Спасибо, помогло!
Хорошо )
Подскажите пожалуйста по настройкам конвертации, где я что пропустила?
В лекциях когда на вопрос: создать правила выгрузки данных, отвечаешь – да, тут же появляется всплывающее окошко выбора, где выбираешь нужные правила и жмешь внизу – создать правила выгрузки.
У меня же когда при создании ПКО идет вопрос создать правила выгрузки данных? Отвечаю – да. Но ничего не происходит.
Потом все равно вхожу вручную на закладку:Правила выгрузки Данных – и уже вручную открываю то окошко и создаю)
Здравствуйте!
Да, курс записывался на более старой версии КД, а в версиях 2.1.8.1 и 2.1.8.2 есть небольшая ошибка. Можете исправить: Общая форма “ПравилаОбмена”, в Процедуре СозданиеПравилВыгрузкиДанных() нужно “ИЛИ” заменить на “И”.
Здравствуйте.
В примере решения ДЗ 6.1 при переносе 3-х справочников в 1,преподаватель использует служебный реквизит “Синхронизация”. Не пойму откуда он взялся?
Здравствуйте!
Этот реквизит был добавлен в базу данных в процессе решения домашнего задания 1.5.1
Спасибо!
Как долго рассматривают ответы по дом.заданиям ?
…
(текст комментария доступен только участникам Мастер-группы)
Странно, но ДЗ 1.6.1 вроде не похоже на конвертацию “один в несколько”. Скорее наоборот – несколько в один. Это что – задание на сообразительность и проверку пройденного :) ?
Здравствуйте!
В пройденных видео-уроках уже есть вся информация, необходимая для выполнения этого задания. Если возникнут вопросы, задавайте их на странице http://xn—-1-bedvffifm4g.xn--p1ai/data-conv/all-hw/questions-on-homeworks/.
Вопрос по уроку 1.7.7. Повторяю все за преподавателем, но результат не тот. На вход ПКО “ПоступлениеТоваровУслуг” приходит корректно заполненная таблица значений “ВыборкаДанных” (ПВД с произвольным алгоритмом). У данной таблицы имеется колонка “Ссылка” – она заполнена. Количество строк в ТЗ соответствует количеству переносимых документов в исходной базе. Синхронизация документов происходит по внутреннему идентификатору. Однако на этапе выгрузки данных из базы-источника в файле выгруженных данных содержится только один документ. Ситуация меняется только если в настройках ПКО установить флаг “Не запоминать выгруженные объекты” или в обработчике “ПередВыгрузкой” ПКО установить: КлючВыгружаемыхДанных = Источник.Ссылка. В видеоматериалах же выгрузка происходит без каких-либо проблем. Подскажите, что я делаю не так.
Здравствуйте!
Возможно, Вы в каком-то ПКО, для которой выборка формируется произвольным способом, установили Объект-источник, а Евгений в видео-уроке не установил. Это могло бы дать описанный эффект. Если не найдете ошибку, прикрепите Ваши правила к комментарию в zip или rar архиве, я посмотрю
Да, так и есть. Спасибо.
:)
Если мое решение задачи 1.6.1 не принято, прошу сообщить.
Здравствуйте!
Отчет одобрен
Добрый вечер. Прокомментируйте пожалуйста вопрос 3 теста. Мы создали ПКО для справочника, но не указали его ни в одном ПВД. Будет ли происходить выгрузка по этому правилу? Если он не указан в ПКС, как может выгружаться?
Здравствуйте! Потому что существует еще автоматический подбор правил в процессе выгрузки. Это тоже нужно всегда учитывать.
Добрый вечер!!!
В уроке 1.7.8 был рассмотрен пример того чтобы не затирался номер счета если он задан вручную используя обработку v8exchange. А как быть если настроен типовой односторонний обмен (УТ 10.3 в БП 2.0, Обе базы типовые)? В БП в ТЧ документа (например РеализацииТоваровИУслуг) есть реквизит “Субконто” которое ссылается на ПВХ, в УТ его нет, поэтому бухгалтер заполняет его самостоятельно после загрузки из УТ. Но проблема в том что при повторной загрузке это субконто затирается. В таблице регистрации изменений для узла БП после отправки квитанции таблица не очищается. Ни после первого обмена, ни после второго. Вообщем совсем не очищается. Хотелось бы посоветоваться. Куда еще можно глянуть?
Здравствуйте!
В случае с субконто, Вы можете использовать схему, которая представлена в уроке. Вам нужно модифицировать правила обмена, дописать обработчик ПКО после загрузки.
Насчет очистки таблиц регистрации, найдите в модуле обработки ОбменДаннымиXML метод УдалитьРегистрациюИзменений() в процедуре ПроизвестиЧтениеДанных(). Регистрации удаляются там. Можно посмотреть в отладчике, что происходит при загрузке.
Да в этих документах есть возможность использования характеристики. А разве существует типовой обмен между этими базами или я что-то не то понимаю под словосочетанием типовой обмен. Я так понимаю это тот который присутствует в базе типовой но в УПП я такового не видем да и в БП не встречал.
СоответствиеОбъектовИнформационныхБаз – а о этом объекте где нибудь в курсе рассказывается?
Т.е. как я понял из Ваших слов необходимо создать ПВД для выгрузки характеристик и там каким-то образом описать привязку к номенклатуре, а если например у Номенклатуры нет характеристики.
Может существует возможность описать пример с такого рода переносом или видео урок и показать как используется СоответствиеОбъектовИнформационныхБаз или может где далее по курсу такое есть, прошел весь первый модуль, но похожего на свою задачу не нашел. Был бы очень признателен за помощь
Про типовые обмены рассказывается в 4-м модуле курса, и там же – про регистр СоответствиеОбъектовИнформационныхБаз.
Если у Номенклатуры нет характеристики – у конкретного элемента может не быть характеристик вообще? Или в конкретном документе не указана характеристика?
Схема решения этой задачи простая, а сложны тонкости, которые могут возникнуть. В первую очередь нужно решить, как данные должны выглядеть в приемнике. Например, какая номенклатура должна подставиться в документ, в котором не указана характеристика. Ведутся ли остатки по характеристикам в источнике? Может быть, нужно создать какую-то номенклатуру без характеристик. А может быть, придется писать механизм восстановления партионного учета. Все очень сильно зависит от задачи.
В источнике номенклатура может разбиваться на характеристики, а может быть и без характеристики, но если в принципе если в конкретном документе указана номенклатура без характеристики, то она же и должна попасть в документ в приемнике а не подставляться какая то другая. Т.е. есть некоторый однотипный товар, который различается только каким либо признаком, например воздушный шар одного размера различающийся только цветом и цвет это его характеристика, а в конечной базе этот шар должен разбиваться на столько номенклатур, сколько у него цветов. И еще в принципе если у номенклатуры есть характеристика, то в документе он всегда представлен с характеристикой, а если он в документе представлен без характеристики, то и у самой номенклатуры нет характеристики. Вопрос все так же актуален – как возможно синхронизировать объекты
И если можно очень бы хотелось пример по переносу одного объекта с характеристиками в несколько.
У меня совет все тот же, сделать ПВД для Характеристик. И ПКО Характеристика – Номенклатура. Каждая характеристика будет перенесена как одна номенклатура. Это не “Один в несколько”. Это “Один в один”. Синхронизацию настраивайте, как удобнее. Самый оптимальный вариант – по идентификатору через регистр. Для тех номенклатур, у которых нет характеристик, придется сделать отдельное ПВД, где их все собрать запросом. И ПКО Номенклатура – Номенклатура. Таким образом, это будет загрузка двух справочников в один. В курсе есть такие примеры. Если синхронизация будет настроена через регистр, то эта ситуация не вызовет проблем.
Спасибо! Будем пробовать.
:)
Добрый день! Проблемка такая, если с переносом Один в несколько все более-менее понятно, то не совсем понятно как сделать перенос из нескольких справочников в один, т.е пример с типовыми конфигурациями: УПП 1.3 и БП 2.0. В УПП есть справочник номенклатура и есть подчиненный ему справочник ХарактеристикаНоменклатуры ну и соответственно Номенклатура ведется в разрезе Характеристик. А вот в БП номенклатура в разрезе Характеристик не ведется. И вот соответственно вопрос как сделать перегрузку Двух справочников в один и самое главное по чем выполнять синхронизацию, ведь Наименование должно будет состоять из наименования характеристики и номенклатуры да и измениться оно может. Я так понял о обмене из нескольких в один говориться нигде не будет. Подскажите пожалуйста как настроить такого рода обмен.
Здравствуйте!
В этом случае, скорее всего, нужно настроить ПКО “ХарактеристикиНоменклатуры – Номенклатура”. Там прописать в ПКС Наименование что-то вроде
Значение = Источник.Владелец.Наименование + Источник.Наименование. Ну и для всех реквизитов, которые должны попасть из Номенклатуры в Номенклатуру, в ПКС писать Значение = Источник.Владелец.ИмяРеквизита.
Здесь будет сложность, если есть такие документы и регистры, где Номенклатура указывается без Характеристики. Там надо подумать, какой элемент должен туда подставиться в Источнике. А если указаны и Характеристика, и Номенклатура, то ПКС настраивается как “Харктеристика – Номенклатура”, и там указываем наше ПКО. Возможно, будут другие сложности, пишите, подскажу
Самый главный вопрос как настроить синхронизацию. С наименованием все в принципе понятно, а вот синхронизация.
Ведь по уникальному идентификатору не привязать и по наименованию тоже, тем более что наименование очень не надежный реквизит, а номенклатуры может быть до нескольких тысяч.
И вот еще что не понятно при конвертации происходит последовательный выбор элементов, т.е будет выбираться элемент справочника номенклатура, но в этом справочнике например 10 характеристик. Т.е по моему пониманию перенесется только одна характеристика которая будет первая, она сконвертируется по правилу “ХарактеристикиНоменклатуры – Номенклатура” а остальные характеристики получается остануться, номенклатуру как-то необходимо размножить до количества характеристик, если они будут присутствовать у номенклатуры. Т.е. не совсем понятно как из одного элемента справочника, создать несколько элементов для выгрузки.
А какой обмен используете? Универсальный, какой-то из типовых? Односторонний или двусторонний? Регулярный или однократный? Синхронизация зависит от этого.
Нужно настраивать ПВД для Характеристик, а не для Номенклатуры. И ПКО там указывать “Характеристики – Номенклатура”. И во всех документах и регистрах, где встречается Номенклатура и Характеристики настраивать ПКС “Характеристика – Номенклатура”
Необходим Односторонний-Регулярный обмен по перегрузке некоторых документов типа ВыпускПродукции и Реализации и т.д из УПП в БП соответственно перегружать Номенклатуру по этим документам тоже придется. Вот и не знаю к чему привязать синхронизацию.
Синхронизация определенно должна быть привязана к Характеристикам. Других вариантов я не вижу. Если это регулярный обмен, то самый лучший подход к Синхронизации – использование регистра сведений СоответствиеОбъектовИнформационныхБаз (в базе-приемнике). В него нужно записывать информацию о соответствии элемента Характеристик в базе-источнике и Номенклатуры в базе-приемнике, синхронизировать объекты по нему.
Если Вы используете типовой обмен, то система будет использовать этот регистр самостоятельно.
В Реализации и Выпуске указывается Характеристика?
Весь урок был понятен, пока не посмотрел ответ1. Что за “ИмяПредопределенногоЭлемента”? Где раньше мы это рассматривали? Вроде не рассматривали и вообще использование такой переменной является недокументированной возможностью?
Здравствуйте!
Да, в описании этого параметра, кажется, нет. Но вообще говоря, работая с конвертацией, мы очень часто пользуемся возможностями, которых нет в описании. Просто описание неполное, а код обработки вполне понятный, что позволяет аккуратно использовать весь контекст событий