Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Запись элемента справочника Номенклатура

Запись элемента справочника Номенклатура
Я
   егаис
 
15.07.21 - 10:17
БП 3
Не понимаю свой косяк.
Из обработки меняю реквизит в справочнике Номенклатура.

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

Если после этого провалиться в элемент справочника, реквизит установлен верный.
Если же по ссылке, например , перезаполнить ТЗ (Номенклатура.ВидНоменклатуры), то видим старое значение.
На какие грабли наступил?
   егаис
 
1 - 15.07.21 - 10:18
Если открыть элемент, принудительно записать по кнопке, то и через ссылку все становится ОК.
   Жан Пердежон
 
2 - 15.07.21 - 10:21
кэш,
запросом ТЗ заполняй
   acht
 
3 - 15.07.21 - 10:21
   егаис
 
4 - 15.07.21 - 10:22
(2) Запросом и заполняется
    МассивВидовСубконто = Новый Массив;
    МассивВидовСубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура);
    
    МассивИсключаемыхСчетов = Новый Массив;
    МассивИсключаемыхСчетов.Добавить(ПланыСчетов.Хозрасчетный.ГотоваяПродукция);
    МассивИсключаемыхСчетов.Добавить(ПланыСчетов.Хозрасчетный.СпецодеждаВЭксплуатации);
    МассивИсключаемыхСчетов.Добавить(ПланыСчетов.Хозрасчетный.СпецоснасткаВЭксплуатации);
    МассивИсключаемыхСчетов.Добавить(ПланыСчетов.Хозрасчетный.ВыручкаНеЕНВД);
    
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |    ХозрасчетныйОстаткиИОбороты.Счет КАК СчетОстатков,
        |    ХозрасчетныйОстаткиИОбороты.Счет КАК НовыйСчетУчета,
        |    ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Номенклатура,
        |    ХозрасчетныйОстаткиИОбороты.Субконто1.ВидНоменклатуры КАК ВидНоменклатуры,
        |    СУММА(ХозрасчетныйОстаткиИОбороты.КоличествоКонечныйОстаток) КАК Количество,
        |    СУММА(ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстаток) КАК Сумма,
        |    СУММА(ХозрасчетныйОстаткиИОбороты.СуммаНУКонечныйОстаток) КАК СуммаНУ,
        |    СУММА(ХозрасчетныйОстаткиИОбороты.СуммаПРКонечныйОстаток) КАК СуммаПР,
        |    СУММА(ХозрасчетныйОстаткиИОбороты.СуммаВРКонечныйОстаток) КАК СуммаВР
        |ИЗ
        |    РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(
        |            &Период,
        |            &Период,
        |            Период,
        |            ,
        |            НЕ Счет В (&МассивИсключаемыхСчетов)
        |                И НЕ Счет.Забалансовый,
        |            &ВидыСубконто,
        |            Организация = &Организация) КАК ХозрасчетныйОстаткиИОбороты
        |
        |СГРУППИРОВАТЬ ПО
        |    ХозрасчетныйОстаткиИОбороты.Счет,
        |    ХозрасчетныйОстаткиИОбороты.Субконто1";
    
    Запрос.УстановитьПараметр("Организация", Объект.Организация);
    Запрос.УстановитьПараметр("Период", КонецДня(Объект.ДатаОстатков));
    Запрос.УстановитьПараметр("ВидыСубконто", МассивВидовСубконто);
    Запрос.УстановитьПараметр("МассивИсключаемыхСчетов", МассивИсключаемыхСчетов);


или ты имеешь в виду ВидНоменклатуры как поле описать?
   1Сергей
 
5 - 15.07.21 - 10:22
что-то брешите. Не по ссылке наверно, а всё-таки другой экземпляр объекта?
   егаис
 
6 - 15.07.21 - 10:27
Нда, короче описал колонку в Запросе и вывел в тз не через точку, а из запроса.
Работает, спасибо
   1Сергей
 
7 - 15.07.21 - 10:27
(4) Причем тут этот запрос и реквизиты номенклатуры?
   егаис
 
8 - 15.07.21 - 10:29
(7) в запросе ВидНоменклатуры в дальнейшем используется как служебное поле. В ТЗ выводил через точку Номенклатура.Видноменклатуры. (6) решило
   1Сергей
 
9 - 15.07.21 - 10:33
а, понял. Соррян

Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.