Имя: Пароль:
1C
1С v8
УНФ 1.6 реквизиты в карточке номенклатуры не заполняются
0 I_learn_1c
 
05.04.18
12:18
Добрый день всем... мучаюсь с чем-то банальным наверно.

В карточке есть свойства Высота и Ширина. Заполняю их в конфигураторе, в отладке видно что там числа стоят, открываю в предприятии - нули.

В форме элемента полей высота и ширина нет, подумала что доп.реквизиты. но в реквизитах номенклатуры они есть!

как заполнить их программно? может у кого то была такая проблема?
1 I_learn_1c
 
05.04.18
12:20
простейшая обработка вроде такой не меняет значение высоты. в режиме предприятия показывает 0.000 в поле Высота

    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    Номенклатура.Ссылка КАК Ссылка
    |ИЗ
    |    Справочник.Номенклатура КАК Номенклатура
    |ГДЕ
    |    Номенклатура.Артикул = &Артикул";
    
    Запрос.УстановитьПараметр("Артикул", "6405-cl153-aba01n-ct0403");
    
    РезультатЗапроса = Запрос.Выполнить();    
    Выборка = РезультатЗапроса.Выбрать();
    //ВсяНоменклатура=РезультатЗапроса.Выгрузить();
    
    Выборка.Следующий();
    ТекНом=Выборка.Ссылка.ПолучитьОбъект();
    ТекНом.Высота=12333;
    ТекНом.Записать();
2 shuhard
 
05.04.18
12:23
(0) а единицы измерения/упаковки в УНФ есть ?
3 I_learn_1c
 
05.04.18
12:26
(2) штуки. Причем если заполнить высоту и ширину в форме вручную - все норм
4 I_learn_1c
 
05.04.18
12:35
может как то дело в том что полей этих нет в конфигураторе на форме? получается нет пути к данным.. я запуталась уже
5 I_learn_1c
 
05.04.18
12:45
(4) если дополнительный реквизит (есть вообще реквизит высота) вот путаюсь еще тоже что это из карточки или дополнительный. Теперь больше думаю что дополнительный.. но все равно не работает

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

    ТекНом.Записать();
6 I_learn_1c
 
05.04.18
13:49
разобралась... вдруг кому пригодится напишу.
в общем это были дополнительные реквизиты а не из карточки. Но просто циклом перебрать таблицу ДополнительныеРеквизиты и позаполнять не прокатит. Нужно еще проверять создан ли конкретный реквизит в ней. В форме поля автоматом для всех выводятся, а данных нет для каких-то.
В итоге как-то так решила

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

    ТекНом.Записать();