УТ 10.3 Заполнить свойства номенклатуры программно

1. sasha-asn 27.01.20 16:00 Сейчас в теме
Здравствуйте уважаемые эксперты, не могу понять почему не срабатывает обработка которую я написал. Подскажите пожалуйста!

Я написал запрос, в консоли запросов он выводит те поля с которыми я работаю. Теперь я хочу в обработке их Сообщить(); и далее заполнить каждое свойство номенклатуры по принципу ЗначенияСвойствОбъектов.Значение = Номенклатура.Код

ВОПРОС №1: Почему у меня не выводится каждая позиция с 4 полями через Сообщить() ?
ВОПРОС №2: Если не выводить сообщением 4 поля, как задать для номенклатуры обработкой результата ЗначенияСвойствОбъектов.Значение = Номенклатура.Код ?


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

    Выборка = Запрос.Выполнить().Выбрать();
    Пока Выборка.Следующий() Цикл
        Сообщить(Выборка);
    КонецЦикла;
Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. succub1_5 89 27.01.20 16:06 Сейчас в теме
(1)
ВОПРОС №1: Почему у меня не выводится каждая позиция с 4 полями через Сообщить() ?
- Потому что конкретное свойство хочешь задать, только неправильно
*Свойство - ссылка, а в параметр передаешь Строку

ВОПРОС №2: Если не выводить сообщением 4 поля, как задать для номенклатуры обработкой результата ЗначенияСвойствОбъектов.Значение = Номенклатура.Код ?
- берешь объект по ссылке спр. номенклатура, циклом проходишь по свойствам, находишь нужное, заполняешь значение.
sasha-asn; +1 Ответить
2. sasha-asn 27.01.20 16:01 Сейчас в теме
запрос выводит данные, а обработка нет... Почему так?
Прикрепленные файлы:
4. succub1_5 89 27.01.20 16:07 Сейчас в теме
(2) в консоли запросов автоматом тип параметра определяется.
sasha-asn; +1 Ответить
5. Hellhackee 27.01.20 16:08 Сейчас в теме
Пока Выборка.Следующий() Цикл
Сообщить(Выборка.ссылка);
Сообщить(Выборка.Код);
КонецЦикла;
и тд.
7. sasha-asn 27.01.20 16:12 Сейчас в теме
(5) не работает как Вы предложили
	Запрос = Новый Запрос;
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	Номенклатура.Ссылка,
	|	Номенклатура.Код,
	|	ЗначенияСвойствОбъектов.Свойство,
	|	ЗначенияСвойствОбъектов.Значение
	|ИЗ
	|	Справочник.Номенклатура КАК Номенклатура,
	|	РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
	|ГДЕ
	|	ЗначенияСвойствОбъектов.Свойство = &Свойство";
	Запрос.УстановитьПараметр("Свойство", "КодДляСайта");
	//Вывести результат запроса
	Выборка = Запрос.Выполнить().Выбрать();
	
Пока Выборка.Следующий() Цикл
Сообщить(Выборка.ссылка);
Сообщить(Выборка.Код);
КонецЦикла;
Показать
6. kniga888 27.01.20 16:09 Сейчас в теме
1) не может преобразовать строку выборки из результата запроса к типу строка.
2) непонятно
у тебя, скорее всего, неправильный запрос, если только ты не хочешь получить соединение всех элементов справочника Номенклатура со всеми записями регистра сведений ЗначенияСвойствОбъектов
8. sasha-asn 27.01.20 16:15 Сейчас в теме
(6) 2) Да вы правы, я хочу соединить поля и вывести их, ну а после как я это пойму, я бы тоже самое проделал но установил бы значение (ЗначенияСвойствОбъектов.Значение = Номенклатура.Код).

Немогу понять почему, даже так не срабатывает?

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

Пока Выборка.Следующий() Цикл
Сообщить(Выборка.ссылка);
Сообщить(Выборка.Код);
КонецЦикла;


Попробуйте так.
10. sasha-asn 27.01.20 16:19 Сейчас в теме
(9) тогда, ошибка:

{ВнешняяОбработка.ЗаполнениеСвойстваКодИзКода.Форма.Форма.Форма(21,39)}: Переменная не определена (ПланВидовХарактеристик)
Запрос.УстановитьПараметр("Свойство", <<?>>ПланВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("КодДляСайта")); (Проверка: Толстый клиент (обычное приложение))
11. Hellhackee 27.01.20 16:20 Сейчас в теме
(10) ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("КодДляСайта"))
12. sasha-asn 27.01.20 16:22 Сейчас в теме
(11) Для УТ10.3 не работает видимо... Ничего не произошло

Процедура КнопкаВыполнитьНажатие(Кнопка)
	ЗаполнениеСвойстваКодИзКода();	
КонецПроцедуры

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

Пока Выборка.Следующий() Цикл
Сообщить(Выборка.ссылка);
Сообщить(Выборка.Код);
КонецЦикла;

	
КонецФункции
Показать
14. Hellhackee 27.01.20 16:29 Сейчас в теме
(12) Попробуйте по коду найти. Откройте этот план видов характеристик, найдите нужный элемент, откройте, скопируйте код. Затем поправьте ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоКоду("00000000004") - вместо 00000000004 напишите свой код.
15. sasha-asn 27.01.20 16:38 Сейчас в теме
(14) ужасный день, почему не работает...

Процедура КнопкаВыполнитьНажатие(Кнопка)
	ЗаполнениеСвойстваКодИзКода();	
КонецПроцедуры

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

Пока Выборка.Следующий() Цикл
Сообщить(Выборка.ссылка);
Сообщить(Выборка.Код);
КонецЦикла;
	
КонецФункции
Показать
Прикрепленные файлы:
ЗаполнениеСвойстваКодИзКода.epf
13. d.batovskiy 27.01.20 16:22 Сейчас в теме
(11)Да торопился и не дописал
16. sasha-asn 28.01.20 11:35 Сейчас в теме
всем спасибо огромное! Если кому то понадобится
	КодДляСайта = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоКоду("00223");
	Запрос = Новый Запрос;
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	Номенклатура.Ссылка,
	|	Номенклатура.Код,
	|	ЗначенияСвойствОбъектов.Свойство,
	|	ЗначенияСвойствОбъектов.Значение
	|ИЗ
	|	Справочник.Номенклатура КАК Номенклатура
	|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
	|		ПО Номенклатура.Ссылка = ЗначенияСвойствОбъектов.Объект
	|ГДЕ ЗначенияСвойствОбъектов.Значение Есть NULL";
	
	РезультатЗапроса = Запрос.Выполнить();
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
		МенеджерЗаписи = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьМенеджерЗаписи();
		
		МенеджерЗаписи.Объект = ВыборкаДетальныеЗаписи.Ссылка;
		МенеджерЗаписи.Свойство = КодДляСайта ;
		МенеджерЗаписи.Значение = ВыборкаДетальныеЗаписи.Код;
		
		МенеджерЗаписи.Записать();   
	КонецЦикла;
Показать
Оставьте свое сообщение

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