Конвертация данных по правилам - Если документ не найден, то заполняем реквизит.

1. user657734_YGREEN 28.02.18 15:35 Сейчас в теме
Добрый день. Подскажите пожалуйста. Как правильно написать правила обмена (Конвертация 2.0) таким образом:
Заполнить реквизит предопределенным значением, если объект (документ) не найден в базе-приемнике (и мы его создаем).
По теме из базы знаний
Найденные решения
12. maks_20 169 01.03.18 15:31 Сейчас в теме
(11)
Объект.Контрагент = "НеизвестныйПокупатель";
тут должна быть ссылка на контрагента по умолчанию, а не строка. При таком заполнении как сейчас ничего и не заполнится. Должно быть Объект.Контрагент = Справочники.Контрагенты.НайтиПоКоду("00002"); к примеру
user657734_YGREEN; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. leosoft 167 28.02.18 15:57 Сейчас в теме
Что-то не очень понятна проблема. Уточните Вы собираетесь на "Конвертации" 2.0 или 3.0 делать? О каком реквизите идет речь? Предопределенное значение где - в базе приемнике?
"Если не заполнен" - что конкретно не заполнено?
3. user657734_YGREEN 28.02.18 16:06 Сейчас в теме
(2) Конвертация 2.0
Реквизит - справочник, предопределенное значение в приемнике.

"Если не заполнен" - что конкретно не заполнено? - не правильно выразил мысль - Если документ найден, то этот реквизит не заполняем.

т.е. в источнике этого реквизита нет и мы его заполняем предопределенным реквизитом-приемника.
4. leosoft 167 28.02.18 16:30 Сейчас в теме
Может так получится
В ПКС в обработчике "Перед выгрузкой" пишем что-то вроде

Если ПустаяСсылка(Источник.<ИмяРеквизита>) = 1 Тогда
Значение = <Имя предопределенного элемента>
КонецЕсли
5. user657734_YGREEN 28.02.18 16:31 Сейчас в теме
(4)Спасибо, вечером попробую.
6. user657734_YGREEN 28.02.18 20:27 Сейчас в теме
(4)ничего не получилось, при выгрузке ошибка:

Ошибка в обработчике события ПередВыгрузкой (свойства)
ПКО = Заказ (Документ: Заказ )
ПКС = 266 (--> Контрагент)
Объект = Заказ оконный
СвойствоПриемника = Контрагент (СправочникСсылка.Контрагенты)
Обработчик = ПередВыгрузкойСвойства
ОписаниеОшибки = Ошибка компиляции при вычислении выражения или выполнении фрагмента кода: {(1,6)}: Процедура или функция с указанным именем не определена (ПустаяСсылка)
ПозицияМодуля = Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(10984)
КСообщенияОбОшибках = 55

Да и не могу понять как может обработчик "передВыгрузкой" может видеть, есть ли этот объект уже в приемнике.
7. leosoft 167 28.02.18 23:57 Сейчас в теме
В приемнике обработчик ничего не видит. На пустую ссылку мы проверяем данные источника.
8. leosoft 167 01.03.18 00:01 Сейчас в теме
Попробуйте более точно сформулировать задачу - по диагностике я понял, что Вы выгружаете
документы "Заказ", а у документа есть реквизит "Контрагент". Дальше что? Контрагента на пустую ссылку проверяем?
9. user657734_YGREEN 01.03.18 09:01 Сейчас в теме
(8) У документа источника, мы не берем реквизит "Контрагент", а просто нужно поставить его в приемник предопределенным элементом, если такого документа еще нет в базе-приемнике.
10. maks_20 169 01.03.18 09:18 Сейчас в теме
(9) все гораздо проще. В обработчике документа ПослеЗагрузки добавляете условие:
Если Не ОбъектНайден Тогда Объект.Контрагент = ВашПредопредКонтрагент; Объект.Записать(); КонецЕсли;
11. user657734_YGREEN 01.03.18 15:19 Сейчас в теме
(10)В обработчике "После загрузки"

Если Не ОбъектНайден Тогда
Объект.Контрагент = "НеизвестныйПокупатель";
Объект.Записать();
КонецЕсли;

- поле Контрагент не заполнилось.

Может, если есть обработчик "После загрузки", обязательно нужно присутствие на клиенте "правилоОбменаКорреспондента"
12. maks_20 169 01.03.18 15:31 Сейчас в теме
(11)
Объект.Контрагент = "НеизвестныйПокупатель";
тут должна быть ссылка на контрагента по умолчанию, а не строка. При таком заполнении как сейчас ничего и не заполнится. Должно быть Объект.Контрагент = Справочники.Контрагенты.НайтиПоКоду("00002"); к примеру
user657734_YGREEN; +1 Ответить
13. user657734_YGREEN 01.03.18 19:40 Сейчас в теме
(12) Спасибо большое, Максим, все получилось!
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот