Установка определенного реквизита

1. shamal358 17.08.16 23:04 Сейчас в теме
Добрый вечер.
Есть УТ 11.2, Бухгалтерия 2.0 и Конвертация данных 2.0.

При обмене на основе Заказа клиенту в бухгалтерии создается договор контрагента.
При этом в договоре надо заполнить реквизит "Вид договора" с типом перечисление "ВидыДоговоровКонтрагентов". Соответственно, в УТ этого нет.
Данную проблему решил следующим способом: в пко "После загрузки" написал следующий код - Объект.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.СПокупателем; - и все работает.

Однако, в нете многие пишут, что лучше не пользоваться "После загрузки" и нашел другой вариант решения:
1. Создал ПКО: источник - строка, приемник - ПеречислениеСсылка.ВидыДоговоровКонтрагентов.
2. В ПКЗ данного ПКО добавил правило, где источник - "СПокупателем" (текст), а приемник - значение перечисления "СПокупателем".
3. В ПКО самого справочника добавил ПКС с приемником "ВидДоговора", правилом из пункта 1. И в "Перед выгрузкой" написал - Значение = "СПокупателем";

И при прочтении правил обмена получаю ошибку

Ссылка на несуществующий объект метаданных в правилах обмена
Объект = Строка
ОписаниеОшибки = Значение не является значением объектного типа (ПКО)
ПозицияМодуля = ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(1992)
КодСообщения = 11


Что я делаю нет так? Могу оставить первый вариант, но вот чисто спортивный интерес.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
4. alwiz3 18.08.16 09:01 Сейчас в теме
(1) А в нете есть объективное объяснение - почему лучше не пользоваться "После загрузки"? Если у меня over 9000 реквизитов заполняются не по выгруженным данным а предопределенными значениями в приемнике, смысл мне зас%рать ими файл выгрузки?
5. shamal358 18.08.16 09:34 Сейчас в теме
(4) alwiz3, нет. объективного не нашел. просто мнение людей прочитал и решил поискать другой способ.
6. demon_infernal 41 18.08.16 21:41 Сейчас в теме
(4) alwiz3, (5) shamal358,
если часть реквизитов заполнять в правилах путем Значение = ИмяПредопределенногоКакОноЗаданоВПриемнике, а другую часть заполнять в "ПослеЗагрузки" - то,имхо, не удобно, приходится переключаться между разными окнами в поисках "где же у меня этот реквизит заполняется", особенно если к таким правилам приходится обращаться раз в три года. Это человеческое объяснение.
А объективное - наличие любого кода, хотя бы одного символа, в обработчике "ПослеЗагрузки" автоматически приводит к дополнительной повторной записи загружаемого объекта, даже если в этом коде реквизиты объекта не менялись. Чтобы избежать этого, нужно использовать переменную ОбъектМодифицирован.
цитата из справки:
ОбъектМодифицирован – Булево. Флажок указывает на то, что в обработчике объект был изменен. По умолчанию содержит значение Истина. То есть обработка загрузки считает, что если выполнялся какой-либо обработчик, то объект мог быть модифицирован, и его необходимо записать в информационную базу. Параметр относится только к текущему обработчику. Если объект был изменен ранее, то при любом значении переменной ОбъектМодифицирован он будет записан. Только для платформы 1С:Предприятие 8.

Таким образом, заполняя реквизиты создаваемых объектов в ПКС в событии "ПередВыгрузкой", процесс загрузки может быть ускорен, иногда значительно.
dyuha; dicwork; alwiz3; +3 Ответить
7. shamal358 19.08.16 07:34 Сейчас в теме
(6) demon_infernal, спасибо за полезную информацию.

С перечислением все просто оказалось в принципе.
А как реализовывать момент, когда в приемнике справочник, отсутствующий в источнике. И значение заполняющееся в приемнике должно зависеть от какого то реквизита в источнике. Как быть в таком варианте?
9. alwiz3 19.08.16 08:27 Сейчас в теме
(7)
А как реализовывать момент, когда в приемнике справочник, отсутствующий в источнике. И значение заполняющееся в приемнике должно зависеть от какого то реквизита в источнике. Как быть в таком варианте?


Делать свое ПКД для этого реквизита и там вручную генерировать поля поиска этого справочника в приемнике.
10. shamal358 20.08.16 08:49 Сейчас в теме
(9) alwiz3, А вообще при настройке обмена какую книжку всегда лучше держать под рукой?
14. alwiz3 22.08.16 17:30 Сейчас в теме
(10) С литературой грустно все. Бояркин, Филатов как основы, остальное можно подсмотреть в типовых конвертациях.
11. dyuha 52 20.08.16 12:44 Сейчас в теме
(7) shamal358, Вот фрагмент кода. Здесь реквизит зависит от реквизитов источника, а вычисляется на стороне приемника.
	Если Источник.ВестиУчетПоСериям Тогда
		Выражение = "Справочники.ВидыНоменклатуры.НайтиПоНаименованию(""Товар импортный"",Истина)";
	Иначе
		Выражение = "Справочники.ВидыНоменклатуры.НайтиПоНаименованию(""Товар"",Истина)";
	КонецЕсли;
8. alwiz3 19.08.16 08:24 Сейчас в теме
(6)
если часть реквизитов заполнять в правилах путем Значение = ИмяПредопределенногоКакОноЗаданоВПриемнике, а другую часть заполнять в "ПослеЗагрузки" - то,имхо, не удобно, приходится переключаться между разными окнами в поисках "где же у меня этот реквизит заполняется"

Дело привычки. Тоже имхо.

А объективное - наличие любого кода, хотя бы одного символа, в обработчике "ПослеЗагрузки" автоматически приводит к дополнительной повторной записи загружаемого объекта, даже если в этом коде реквизиты объекта не менялись. Чтобы избежать этого, нужно использовать переменную ОбъектМодифицирован.

Согласен, аргумент. Про "ОбъектМодифицирован" все время забываю.
2. dyuha 52 18.08.16 03:39 Сейчас в теме
Первый пункт не нужен. Если приемник перечисление - сразу в ПКО перед выгрузкой пиши Значение = "СПокупателем". Источник пустой, приемник ВидДоговора.
3. shamal358 18.08.16 07:52 Сейчас в теме
(2) dyuha, на самом деле. спасибо.
12. shamal358 20.08.16 19:38 Сейчас в теме
Еще такой вопрос. Переношу сейчас документы Поступление товаров и услуг. По следующему плану:
Источник Приемник
Поступление ТИС Поступление ТИС
Заказ поставщику Договор контрагента

Причем договор нужно находить по номеру документа "Заказ поставщику" по реквизиту "Номер". То есть, в приемнике для каждого "Заказа поставщику" создается договор, и в реквизит "номер" договора записывается номер поставщику.

Подскажите как при обмене находить договор.
13. shamal358 20.08.16 22:03 Сейчас в теме
15. shamal358 24.08.16 16:34 Сейчас в теме
День добрый.

Решил ковырять правила стандартного обмена между УТ 11.2 и БП 2.0.

Возникла такая задача. На основе Заказов клиентов формируются договоры контрагентов. Все в принципе работает и нормально.
Но хочется чтобы при обмене в реквизит договора "Номер" попадало имя сделки из Заказа клиента.

Теперь. Для договора там создано ПКО с кучей параметров.


Подскажите в какую строну копать.
16. alwiz3 25.08.16 08:14 Сейчас в теме
(15) Заведи новое ПКС с приемником "Номер", и при вызове ПКО ДоговораКонтрагентов добавляй в структуру значение с ключом "Номер" чем тебе надо.
17. shamal358 25.08.16 16:50 Сейчас в теме
(16) alwiz3, Там проблема в чем.

Есть ПКО "ЗаказКлиентаВЗначенияСвойствОбъектов", которое записывает заказы клиентов в справочник Значения свойств объектов. Записывается туда наименование (представление документа Заказ клиенту) и владелец (ПВХ Свойства объектов).

В самом ПКО Договоры "ДоговорыКонтрагентов" источник пустой. И я так понимаю там по значениям из справочника ЗСО ищутся договора. Если не находится, то создается новый. И при создании само собой сделки там нет.

Можно использовать механизм такой в ПКО "ЗаказКлиентаВЗначенияСвойствОбъектов":
ПередатьОдинПараметрВПриемник("НомерСделкиПоЗаказу", Источник.Сделка.Наименование);


А в ПКО договора брать значение из параметра в обработчике После Загрузки. Но это не оптимальный вариант.
Оставьте свое сообщение

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