Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

КД 2.0 ERP 2.2 Заполнение доп реквизита элемента справочника

КД 2.0 ERP 2.2 Заполнение доп реквизита элемента справочника
Я
   Marik1274
 
28.02.18 - 08:46
Добрый день.
Подскажите как победить ошибку. Есть такой код (в После загрузке). При записи нового элемента справочника ДоговорыКонтрагентов выдает ошибку: Операция не может быть выполнена из-за несоответствия версии или отсутствия записи базы данных . Если это повторная загрузку, то существующий элемент правится корректно без ошибок. Уже делал промежуточную запись объекта в зависимости от ОбъектНайден, пытался искать ссылку по ГУИДу. Не помогает. Как вообще такие вещи решаются по феншую?

Сам код:

Если НЕ ПараметрыОбъекта["НаправлениеДеятельности"] = Неопределено Тогда 
    Если НЕ ПараметрыОбъекта["НаправлениеДеятельности"] = "" Тогда
        Объект.НаправлениеДеятельности = Справочники.НаправленияДеятельности.НайтиПоНаименованию(ПараметрыОбъекта["НаправлениеДеятельности"]);
    Иначе    
        Объект.НаправлениеДеятельности = Справочники.НаправленияДеятельности.ПустаяСсылка();
    КонецЕсли;    
Иначе    
    Объект.НаправлениеДеятельности = Справочники.НаправленияДеятельности.ПустаяСсылка();
КонецЕсли;

Объект.ПорядокРасчетов     = Перечисления.ПорядокРасчетов.ПоДоговорамКонтрагентов;
Объект.Статус    = Перечисления.СтатусыДоговоровКонтрагентов.Действует;

ДопРеквизит = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("НомерДоговораКонтрагента");
ЕстьСтроки = Объект.ДополнительныеРеквизиты.НайтиСтроки(Новый Структура("Свойство", ДопРеквизит));
    
ТЗ_Доп = Новый ТаблицаЗначений;
ТЗ_Доп.Колонки.Добавить("Свойство");
ТЗ_Доп.Колонки.Добавить("Значение");

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

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует