Как заполнить свойство программно

1. sasha-asn 28.01.20 10:36 Сейчас в теме
Здравствуйте уважаемые эксперты! Прошу вашей помощи, так как впал в тупик...

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

Написал запрос, он выводит то что мне надо. Теперь не могу понять как мне обработать результат запроса "ВЗЯТЬ данные из Номенклатура.Код и ВСТАВИТЬ их в ЗначенияСвойствОбъектов.Значение" ?

Прошу прощение, учусь программированию в 1с

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

Показать
Прикрепленные файлы:
По теме из базы знаний
Найденные решения
4. Teut_Vlad 192 28.01.20 10:45 Сейчас в теме
(2) всё правильно
КодДляСайта = ПланоВидовХарактеристик.СвойстваОбъектов.НайтиПоПаименованию("КодДляСайта ");
//ВашЗапрос
 Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
       МенеджерЗаписи = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьМенеджерЗаписи();
    
МенеджерЗаписи.Объект = ВыборкаДетальныеЗаписи.Ссылка;
МенеджерЗаписи.Свойство = КодДляСайта ;
МенеджерЗаписи.Значение = ВыборкаДетальныеЗаписи.Код;

МенеджерЗаписи.Записать();   
    КонецЦикла;

Показать
asterisk; sasha-asn; +2 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. sasha-asn 28.01.20 10:40 Сейчас в теме
Мне не понятно, если я в Обработку результата запихну Сообщить(РезультатЗапроса), поругается на тип данных, это логично так как выводится будет 4 колонки...
Может бы это сделать через РегистрСведенийМенеджерЗаписи.<имя> ? https://its.1c.ru/db/metod8dev/content/2486/hdoc
4. Teut_Vlad 192 28.01.20 10:45 Сейчас в теме
(2) всё правильно
КодДляСайта = ПланоВидовХарактеристик.СвойстваОбъектов.НайтиПоПаименованию("КодДляСайта ");
//ВашЗапрос
 Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
       МенеджерЗаписи = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьМенеджерЗаписи();
    
МенеджерЗаписи.Объект = ВыборкаДетальныеЗаписи.Ссылка;
МенеджерЗаписи.Свойство = КодДляСайта ;
МенеджерЗаписи.Значение = ВыборкаДетальныеЗаписи.Код;

МенеджерЗаписи.Записать();   
    КонецЦикла;

Показать
asterisk; sasha-asn; +2 Ответить
5. sasha-asn 28.01.20 10:59 Сейчас в теме
(4)
КодДляСайта = ПланоВидовХарактеристик.СвойстваОбъектов.НайтиПоПаименованию("КодДляСайта ");
//ВашЗапрос
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
МенеджерЗаписи = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьМенеджерЗаписи();

МенеджерЗаписи.Объект = ВыборкаДетальныеЗаписи.Ссылка;
МенеджерЗаписи.Свойство = КодДляСайта ;
МенеджерЗаписи.Значение = ВыборкаДетальныеЗаписи.Код;

МенеджерЗаписи.Записать();
КонецЦикла;


Спасибо, но почему то ошибка
Прикрепленные файлы:
6. Teut_Vlad 192 28.01.20 11:00 Сейчас в теме
(5)
ПланоВидовХарактеристик.СвойстваОбъектов.НайтиПоПаименованию("КодДляСайта ");

ПланоВидовХарактеристик.СвойстваОбъектов.НайтиПоКоду("00223");

А вообще поставьте точку останова, я не првоерял свой код на синтаксис ошибки)
sasha-asn; +1 Ответить
3. bugagashenka 203 28.01.20 10:42 Сейчас в теме
1. Добавить ГДЕ ЗначенияСвойствОбъектов.Значение Есть NULL
И
Номенклатура.Код Как Значение

Запрос Должен быть:

ВЫБРАТЬ
| Номенклатура.Ссылка Как объект,
| Номенклатура.Код Как Значение,
| &Свойство Как Свойство,
...

2. РС = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьМенеджерЗаписи();
ЗаполнитьЗначенияСвойств(РС, Выборка);
РС.Записать();
sasha-asn; Teut_Vlad; +2 Ответить
7. sasha-asn 28.01.20 11:37 Сейчас в теме
ВСЕМ ОГРОМНОЕ СПАСИБО! ДАЙ БОГ ВАМ ЗДОРОВЬЯ И ДЕНЕГ ПОБОЛЬШЕ!

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

Показать
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот