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

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

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


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