Имя: Пароль:
1C
1С v8
Не получается программно создать элемент справочника НоменклатураГТД
, ,
0 толькодлявопросов
 
06.02.18
21:35
Пытаюсь программно создать и записать элемент справочника в УТ 10, но получаю ошибку "Ошибка при получении значения атрибута контекста (Наименование)"
    
    НовСпрГТД = Справочники.НоменклатураГТД.НайтиПоНаименованию(КодУКТВЭД);
    
    Если НовСпрГТД.Пустая() Тогда
    
        НовСпрГТД = Справочники.НоменклатураГТД.СоздатьЭлемент();
        
        НовСпрГТД.Наименование     = КодУКТВЭД;
        НовСпрГТД.КодУКТВЭД        = ПодобратьКлассификаторУКТВЭД(КодУКТВЭД);
        НовСпрГТД.КодУКТВЭД_Индекс = КодУКТВЭД;
        
        НовСпрГТД.Записать();
    
    КонецЕсли;
    
Ошибка на строке "НовСпрГТД.Записать();"
Отладчиком НовСпрГТД.Наименование заполнена, тип данных строка.
Единственная процедура в модуле НоменклатураГТД - ПередЗаписью(), там код доходит до конца и выходит из нее, и только потом выскакивает ошибка.
1 Лефмихалыч
 
06.02.18
21:40
в модуле объекта при/перед записью смотри, что происходит
2 толькодлявопросов
 
06.02.18
21:44
(1) Единственная процедура

    Процедура ПередЗаписью(Отказ)
    
        Если ОбменДанными.Загрузка = Истина Тогда
            Возврат;
        КонецЕсли;
    
        ОбновлениеИндексныхПолей();
    
        // не будем записывать дубли
        Если НЕ ОбменДанными.Загрузка Тогда
    
            Запрос = Новый Запрос();
            Запрос.УстановитьПараметр("КодУКТВЭД", КодУКТВЭД);
            Запрос.УстановитьПараметр("НомерГТД",  НомерГТД);
            Запрос.УстановитьПараметр("Владелец",  Владелец);
            Запрос.УстановитьПараметр("Ссылка",    Ссылка);
        
            Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1
                       |    НоменклатураГТД.Ссылка
                       |ИЗ
                       |    Справочник.НоменклатураГТД КАК НоменклатураГТД
                       |ГДЕ
                       |    НЕ НоменклатураГТД.Ссылка = &Ссылка
                       |    И НоменклатураГТД.КодУКТВЭД = &КодУКТВЭД
                       |    И НоменклатураГТД.НомерГТД = &НомерГТД
                       |    И НоменклатураГТД.Владелец = &Владелец";
                      
            Если НЕ Запрос.Выполнить().Пустой() Тогда
                Отказ = Истина;
                Сообщить(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку("Для номенклатуры %1 уже имеется запись в справочнике ""Номенклатура ГТД"" с такими же номером ГТД и Кодом УКТ ВЭД!", Владелец));
            КонецЕсли;                           
    
        КонецЕсли;
    
    КонецПроцедуры
3 толькодлявопросов
 
06.02.18
21:45
Отладчиком доходит до конца без ошибок
4 толькодлявопросов
 
06.02.18
21:45
ОбновлениеИндексныхПолей(); - лишее, прилипло, там нет
5 Лефмихалыч
 
06.02.18
21:48
кэш продуй
6 Cyberhawk
 
06.02.18
22:05
Покажи на картинке
7 толькодлявопросов
 
06.02.18
22:34
Сейчас из большой обработки вытянул это код в маленькую только для этой функции и стало показывать следующую ошибку:
    
    {Форма.Форма.Форма(30)}: Ошибка при вызове метода контекста (Записать)
    НовСпр.Записать();
    по причине:
    Значение поля "Номенклатура" не заполнено или заполнено неверно

Реквизита "Номенклатура" в справочнике НоменклатураГТД - вообще нет......!!
8 толькодлявопросов
 
06.02.18
22:38
(7) оно скорее всего владельца под "Номенклатурой" подразумевает
9 толькодлявопросов
 
06.02.18
22:41
(8) Хотя сейчас добавил владельца и в первой обработке - заработало, но ведь насколько я знаю НоменклатураГТД может быть одна и та же у нескольких Номенклатур
10 Доминошник
 
06.02.18
22:47
(0) Немного не по делу - но в УТ 10.3 два справочника:
Справочник.НомераГТД
Справочник.СерииНоменклатуры

В НомераГТД - уникальные номера
В СерииНоменклатуры - номер ГТД (из справочника НомераГТД), Страна происхождения и (обязательно) владелец - Номенклатура
11 толькодлявопросов
 
08.02.18
17:34
(10) ут для украины
12 azernot
 
08.02.18
18:06
Может подписки какие?
Сделай остановку по ошибке. И отлови, где именно он не может "наименование" получить
13 breezee
 
08.02.18
20:11
(12) Еще можно замером производительности
14 Михаил Козлов
 
08.02.18
20:41
У справочника номеров ГТД ОБЫЧНО нет наименования. А номер ГТД - это код элемента справочника.
Закон Брукера: Даже маленькая практика стоит большой теории.