|
КД 2.0 ERP 2.2 Заполнение доп реквизита элемента справочника | ☑ | ||
---|---|---|---|---|
0
Marik1274
28.02.18
✎
08:46
|
Добрый день.
Подскажите как победить ошибку. Есть такой код (в После загрузке). При записи нового элемента справочника ДоговорыКонтрагентов выдает ошибку: Операция не может быть выполнена из-за несоответствия версии или отсутствия записи базы данных . Если это повторная загрузку, то существующий элемент правится корректно без ошибок. Уже делал промежуточную запись объекта в зависимости от ОбъектНайден, пытался искать ссылку по ГУИДу. Не помогает. Как вообще такие вещи решаются по феншую? Сам код: Если НЕ ПараметрыОбъекта["НаправлениеДеятельности"] = Неопределено Тогда Если НЕ ПараметрыОбъекта["НаправлениеДеятельности"] = "" Тогда Объект.НаправлениеДеятельности = Справочники.НаправленияДеятельности.НайтиПоНаименованию(ПараметрыОбъекта["НаправлениеДеятельности"]); Иначе Объект.НаправлениеДеятельности = Справочники.НаправленияДеятельности.ПустаяСсылка(); КонецЕсли; Иначе Объект.НаправлениеДеятельности = Справочники.НаправленияДеятельности.ПустаяСсылка(); КонецЕсли; Объект.ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоДоговорамКонтрагентов; Объект.Статус = Перечисления.СтатусыДоговоровКонтрагентов.Действует; ДопРеквизит = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("НомерДоговораКонтрагента"); ЕстьСтроки = Объект.ДополнительныеРеквизиты.НайтиСтроки(Новый Структура("Свойство", ДопРеквизит)); ТЗ_Доп = Новый ТаблицаЗначений; ТЗ_Доп.Колонки.Добавить("Свойство"); ТЗ_Доп.Колонки.Добавить("Значение"); Если ЕстьСтроки.Количество() = 0 Тогда НовыйРеквизит = ТЗ_Доп.Добавить(); НовыйРеквизит.Свойство = ДопРеквизит; Если ПараметрыОбъекта["НомерДоговора"] <> Неопределено тогда НовыйРеквизит.Значение = ПараметрыОбъекта["НомерДоговора"]; КонецЕсли; КонецЕсли; ДопРеквизит = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("ОсновнойПроект"); ЕстьСтроки = Объект.ДополнительныеРеквизиты.НайтиСтроки(Новый Структура("Свойство", ДопРеквизит)); Если ЕстьСтроки.Количество() = 0 Тогда НовыйРеквизит = ТЗ_Доп.Добавить(); НовыйРеквизит.Свойство = ДопРеквизит; Если ПараметрыОбъекта["ПроектКод"] <> Неопределено тогда НовыйРеквизит.Значение = Справочники.Проекты.НайтиПоКоду(СокрЛП(ПараметрыОбъекта["ПроектКод"])); КонецЕсли; КонецЕсли; УправлениеСвойствами.ЗаписатьСвойстваУОбъекта(Объект.Ссылка, ТЗ_Доп); |
|||
1
Marik1274
28.02.18
✎
09:20
|
Апну
|
|||
2
xaozai
28.02.18
✎
09:22
|
"После загрузки" выполняется до записи объекта в базе.
УправлениеСвойствами.ЗаписатьСвойстваУОбъекта(Объект.Ссылка, ТЗ_Доп);//здесь, вероятно, будет ошибка, ибо ссылки объекта нет |
|||
3
Marik1274
28.02.18
✎
09:25
|
(2) Перед этой строкой я ставил: Объект.Записать();
не помогает.. |
|||
4
xaozai
28.02.18
✎
09:26
|
(3) Тогда предлагаю воспользоваться отладчиком.
|
|||
5
Marik1274
28.02.18
✎
09:29
|
(4) Так и сделаю. Просто интересен опыт других людей на эту тему.
|
|||
6
Йохохо
28.02.18
✎
09:39
|
на которой строке ошибка? на этой "УправлениеСвойствами.ЗаписатьСвойстваУОбъекта(Объект.Ссылка, ТЗ_Доп);" ?
|
|||
7
Marik1274
28.02.18
✎
09:44
|
(6) Если ее закоментить, то ошибки нет. Так что да, на ней.
|
|||
8
Йохохо
28.02.18
✎
09:45
|
УстановитьСсылкуНового?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |