Имя: Пароль:
1C
1С v8
УТ 10.3 Заполнить свойства номенклатуры из ЕдиницыИзмерения
0 1СникомХочу Стать
 
19.02.20
15:18
Уважаемые эксперты! Прошу вашей помощи и сильно не пинать, так как пытаюсь учится:

сделал обработку, которая заполняет Свойство для элементов справочника Номенклатуры, а берёт обработка данные из значения справочника ЕдиницыИзмерения.Объем для конкретной номенклатуры.

Почему то обработка зависает, наверное запрос не оптимальный, но в КонсолиЗапросов я получаю и вижу все необходимые данные, где ошибка... Помогите плс

https://ibb.co/qxjHjBp
https://ibb.co/gdDjZKQ

----------------------------------------------------------

ОбъемМ3 = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоКоду("00158");
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    Номенклатура.ЕдиницаХраненияОстатков.Владелец.Ссылка,
    |    Номенклатура.ЕдиницаХраненияОстатков.Владелец.ЕдиницаХраненияОстатков,
    |    ЕдиницыИзмерения.Объем,
    |    ЗначенияСвойствОбъектов.Свойство,
    |    ЗначенияСвойствОбъектов.Значение
    |ИЗ
    |    Справочник.ЕдиницыИзмерения КАК ЕдиницыИзмерения
    |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура
    |        ПО ЕдиницыИзмерения.Владелец = Номенклатура.Ссылка,
    |    РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов";
    
    РезультатЗапроса = Запрос.Выполнить();
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        МенеджерЗаписи = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьМенеджерЗаписи();
        
        МенеджерЗаписи.Объект = ВыборкаДетальныеЗаписи.ЕдиницаХраненияОстатков.Владелец.Ссылка;
        МенеджерЗаписи.Свойство = ОбъемМ3 ;
        МенеджерЗаписи.Значение = ВыборкаДетальныеЗаписи.Объем;
        
        МенеджерЗаписи.Записать();  
    КонецЦикла;

-------------------------------------------------------------
1 shuhard
 
19.02.20
15:20
(0)[ Справочник.ЕдиницыИзмерения КАК ЕдиницыИзмерения
    |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура
    |        ПО ЕдиницыИзмерения.Владелец = Номенклатура.Ссылка,
    |    РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов]
декартово произведение
2 vicof
 
19.02.20
15:22
+(1) "ВыборкаДетальныеЗаписи.ЕдиницаХраненияОстатков.Владелец.Ссылка"
тяжелый запрос
Плюс нет отборов/соединений по объему
3 vicof
 
19.02.20
15:24
"Номенклатура.ЕдиницаХраненияОстатков.Владелец.ЕдиницаХраненияОстатков"
И что, у единицы хранения остатков владелец не номенклатура?
4 1СникомХочу Стать
 
19.02.20
15:30
подскажите пожалуйста как подправить запрос?
5 vicof
 
19.02.20
15:50
убрать лишние соединения
правильно соединить таблицы
сделать проверки на естьnull
6 1СникомХочу Стать
 
19.02.20
16:11
(5) Упростил запрос, отрабатывает быстро, но значение свойства Номенклатуры не заполняет...

----------------------------------------------------------------------
ОбъемМ3 = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоКоду("00158");
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    ЕдиницыИзмерения.Владелец КАК Номенклатура,
    |    ЕдиницыИзмерения.Объем
    |ИЗ
    |    Справочник.ЕдиницыИзмерения КАК ЕдиницыИзмерения
    |    ";
    
    РезультатЗапроса = Запрос.Выполнить();
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        МенеджерЗаписи = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьМенеджерЗаписи();
        
        МенеджерЗаписи.Объект = ВыборкаДетальныеЗаписи.Номенклатура;
        МенеджерЗаписи.Свойство = ОбъемМ3 ;
        МенеджерЗаписи.Значение = ВыборкаДетальныеЗаписи.Объем;
        
        МенеджерЗаписи.Записать();  
    КонецЦикла;
7 Homer
 
19.02.20
16:17
(6) не все можно записывать в значение. надо зайти в ПВХ и найти что то вот такое ДополнительныеРеквизитыИСведения и там добавить в тип
8 1СникомХочу Стать
 
19.02.20
16:36
(7) в УТ 10.3 помойму нет механизма ДополнительныеРеквизитыИСведения
9 Homer
 
19.02.20
16:43
у регистра ЗначенияСвойствОбъектов посмотри ресурс "значение" и выйдешь по нему к ПВХ.
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.