Установка определенного реквизита
Добрый вечер.
Есть УТ 11.2, Бухгалтерия 2.0 и Конвертация данных 2.0.
При обмене на основе Заказа клиенту в бухгалтерии создается договор контрагента.
При этом в договоре надо заполнить реквизит "Вид договора" с типом перечисление "ВидыДоговоровКонтрагентов". Соответственно, в УТ этого нет.
Данную проблему решил следующим способом: в пко "После загрузки" написал следующий код - Объект.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.СПокупателем; - и все работает.
Однако, в нете многие пишут, что лучше не пользоваться "После загрузки" и нашел другой вариант решения:
1. Создал ПКО: источник - строка, приемник - ПеречислениеСсылка.ВидыДоговоровКонтрагентов.
2. В ПКЗ данного ПКО добавил правило, где источник - "СПокупателем" (текст), а приемник - значение перечисления "СПокупателем".
3. В ПКО самого справочника добавил ПКС с приемником "ВидДоговора", правилом из пункта 1. И в "Перед выгрузкой" написал - Значение = "СПокупателем";
И при прочтении правил обмена получаю ошибку
Ссылка на несуществующий объект метаданных в правилах обмена
Объект = Строка
ОписаниеОшибки = Значение не является значением объектного типа (ПКО)
ПозицияМодуля = ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(1992)
КодСообщения = 11
Что я делаю нет так? Могу оставить первый вариант, но вот чисто спортивный интерес.
Есть УТ 11.2, Бухгалтерия 2.0 и Конвертация данных 2.0.
При обмене на основе Заказа клиенту в бухгалтерии создается договор контрагента.
При этом в договоре надо заполнить реквизит "Вид договора" с типом перечисление "ВидыДоговоровКонтрагентов". Соответственно, в УТ этого нет.
Данную проблему решил следующим способом: в пко "После загрузки" написал следующий код - Объект.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.СПокупателем; - и все работает.
Однако, в нете многие пишут, что лучше не пользоваться "После загрузки" и нашел другой вариант решения:
1. Создал ПКО: источник - строка, приемник - ПеречислениеСсылка.ВидыДоговоровКонтрагентов.
2. В ПКЗ данного ПКО добавил правило, где источник - "СПокупателем" (текст), а приемник - значение перечисления "СПокупателем".
3. В ПКО самого справочника добавил ПКС с приемником "ВидДоговора", правилом из пункта 1. И в "Перед выгрузкой" написал - Значение = "СПокупателем";
И при прочтении правил обмена получаю ошибку
Ссылка на несуществующий объект метаданных в правилах обмена
Объект = Строка
ОписаниеОшибки = Значение не является значением объектного типа (ПКО)
ПозицияМодуля = ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(1992)
КодСообщения = 11
Что я делаю нет так? Могу оставить первый вариант, но вот чисто спортивный интерес.
По теме из базы знаний
- Установка значений реквизитов объектов c поддержкой выражений на встроенном языке для универсальной обработки подбора объектов.
- Автоматическое заполнение реквизитов документов/справочников при создании
- Отчет по дополнительным тарифам страховых взносов в ПФР для ЗКГУ 3.1.2 / 3.1.3 / 3.1.4 / 3.1.5
- Сравнение произвольных данных баз (и РИБ, по правилам конвертаций) по контрольным суммам выбранных реквизитов, работающих на платформе 8.3
- WEB-курс «Управляемое приложение» с 8 апреля по 20 марта 2025 г.
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(4) alwiz3, (5) shamal358,
если часть реквизитов заполнять в правилах путем Значение = ИмяПредопределенногоКакОноЗаданоВПриемнике, а другую часть заполнять в "ПослеЗагрузки" - то,имхо, не удобно, приходится переключаться между разными окнами в поисках "где же у меня этот реквизит заполняется", особенно если к таким правилам приходится обращаться раз в три года. Это человеческое объяснение.
А объективное - наличие любого кода, хотя бы одного символа, в обработчике "ПослеЗагрузки" автоматически приводит к дополнительной повторной записи загружаемого объекта, даже если в этом коде реквизиты объекта не менялись. Чтобы избежать этого, нужно использовать переменную ОбъектМодифицирован.
цитата из справки:
Таким образом, заполняя реквизиты создаваемых объектов в ПКС в событии "ПередВыгрузкой", процесс загрузки может быть ускорен, иногда значительно.
если часть реквизитов заполнять в правилах путем Значение = ИмяПредопределенногоКакОноЗаданоВПриемнике, а другую часть заполнять в "ПослеЗагрузки" - то,имхо, не удобно, приходится переключаться между разными окнами в поисках "где же у меня этот реквизит заполняется", особенно если к таким правилам приходится обращаться раз в три года. Это человеческое объяснение.
А объективное - наличие любого кода, хотя бы одного символа, в обработчике "ПослеЗагрузки" автоматически приводит к дополнительной повторной записи загружаемого объекта, даже если в этом коде реквизиты объекта не менялись. Чтобы избежать этого, нужно использовать переменную ОбъектМодифицирован.
цитата из справки:
ОбъектМодифицирован – Булево. Флажок указывает на то, что в обработчике объект был изменен. По умолчанию содержит значение Истина. То есть обработка загрузки считает, что если выполнялся какой-либо обработчик, то объект мог быть модифицирован, и его необходимо записать в информационную базу. Параметр относится только к текущему обработчику. Если объект был изменен ранее, то при любом значении переменной ОбъектМодифицирован он будет записан. Только для платформы 1С:Предприятие 8.
Таким образом, заполняя реквизиты создаваемых объектов в ПКС в событии "ПередВыгрузкой", процесс загрузки может быть ускорен, иногда значительно.
(6) demon_infernal, спасибо за полезную информацию.
С перечислением все просто оказалось в принципе.
А как реализовывать момент, когда в приемнике справочник, отсутствующий в источнике. И значение заполняющееся в приемнике должно зависеть от какого то реквизита в источнике. Как быть в таком варианте?
С перечислением все просто оказалось в принципе.
А как реализовывать момент, когда в приемнике справочник, отсутствующий в источнике. И значение заполняющееся в приемнике должно зависеть от какого то реквизита в источнике. Как быть в таком варианте?
(7)
Делать свое ПКД для этого реквизита и там вручную генерировать поля поиска этого справочника в приемнике.
А как реализовывать момент, когда в приемнике справочник, отсутствующий в источнике. И значение заполняющееся в приемнике должно зависеть от какого то реквизита в источнике. Как быть в таком варианте?
Делать свое ПКД для этого реквизита и там вручную генерировать поля поиска этого справочника в приемнике.
(7) shamal358, Вот фрагмент кода. Здесь реквизит зависит от реквизитов источника, а вычисляется на стороне приемника.
Если Источник.ВестиУчетПоСериям Тогда
Выражение = "Справочники.ВидыНоменклатуры.НайтиПоНаименованию(""Товар импортный"",Истина)";
Иначе
Выражение = "Справочники.ВидыНоменклатуры.НайтиПоНаименованию(""Товар"",Истина)";
КонецЕсли;
(6)
Дело привычки. Тоже имхо.
Согласен, аргумент. Про "ОбъектМодифицирован" все время забываю.
если часть реквизитов заполнять в правилах путем Значение = ИмяПредопределенногоКакОноЗаданоВПриемнике, а другую часть заполнять в "ПослеЗагрузки" - то,имхо, не удобно, приходится переключаться между разными окнами в поисках "где же у меня этот реквизит заполняется"
Дело привычки. Тоже имхо.
А объективное - наличие любого кода, хотя бы одного символа, в обработчике "ПослеЗагрузки" автоматически приводит к дополнительной повторной записи загружаемого объекта, даже если в этом коде реквизиты объекта не менялись. Чтобы избежать этого, нужно использовать переменную ОбъектМодифицирован.
Согласен, аргумент. Про "ОбъектМодифицирован" все время забываю.
Еще такой вопрос. Переношу сейчас документы Поступление товаров и услуг. По следующему плану:
Источник Приемник
Поступление ТИС Поступление ТИС
Заказ поставщику Договор контрагента
Причем договор нужно находить по номеру документа "Заказ поставщику" по реквизиту "Номер". То есть, в приемнике для каждого "Заказа поставщику" создается договор, и в реквизит "номер" договора записывается номер поставщику.
Подскажите как при обмене находить договор.
Источник Приемник
Поступление ТИС Поступление ТИС
Заказ поставщику Договор контрагента
Причем договор нужно находить по номеру документа "Заказ поставщику" по реквизиту "Номер". То есть, в приемнике для каждого "Заказа поставщику" создается договор, и в реквизит "номер" договора записывается номер поставщику.
Подскажите как при обмене находить договор.
День добрый.
Решил ковырять правила стандартного обмена между УТ 11.2 и БП 2.0.
Возникла такая задача. На основе Заказов клиентов формируются договоры контрагентов. Все в принципе работает и нормально.
Но хочется чтобы при обмене в реквизит договора "Номер" попадало имя сделки из Заказа клиента.
Теперь. Для договора там создано ПКО с кучей параметров.
Подскажите в какую строну копать.
Решил ковырять правила стандартного обмена между УТ 11.2 и БП 2.0.
Возникла такая задача. На основе Заказов клиентов формируются договоры контрагентов. Все в принципе работает и нормально.
Но хочется чтобы при обмене в реквизит договора "Номер" попадало имя сделки из Заказа клиента.
Теперь. Для договора там создано ПКО с кучей параметров.

Подскажите в какую строну копать.
(16) alwiz3, Там проблема в чем.
Есть ПКО "ЗаказКлиентаВЗначенияСвойствОбъектов", которое записывает заказы клиентов в справочник Значения свойств объектов. Записывается туда наименование (представление документа Заказ клиенту) и владелец (ПВХ Свойства объектов).
В самом ПКО Договоры "ДоговорыКонтрагентов" источник пустой. И я так понимаю там по значениям из справочника ЗСО ищутся договора. Если не находится, то создается новый. И при создании само собой сделки там нет.
Можно использовать механизм такой в ПКО "ЗаказКлиентаВЗначенияСвойствОбъектов":
А в ПКО договора брать значение из параметра в обработчике После Загрузки. Но это не оптимальный вариант.
Есть ПКО "ЗаказКлиентаВЗначенияСвойствОбъектов", которое записывает заказы клиентов в справочник Значения свойств объектов. Записывается туда наименование (представление документа Заказ клиенту) и владелец (ПВХ Свойства объектов).
В самом ПКО Договоры "ДоговорыКонтрагентов" источник пустой. И я так понимаю там по значениям из справочника ЗСО ищутся договора. Если не находится, то создается новый. И при создании само собой сделки там нет.
Можно использовать механизм такой в ПКО "ЗаказКлиентаВЗначенияСвойствОбъектов":
ПередатьОдинПараметрВПриемник("НомерСделкиПоЗаказу", Источник.Сделка.Наименование);
А в ПКО договора брать значение из параметра в обработчике После Загрузки. Но это не оптимальный вариант.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот