Имя: Пароль:
1C
1С v8
Программная запись в значение свойства Номенклатуры
,
0 Евгений90
 
19.10.12
09:55
Пытаюсь программно записать определенное значение в свойство Номенклатуры
"Импортер"  - свойство планов видов характеристик
1 butterbean
 
19.10.12
09:56
похвально
2 Godofsin
 
19.10.12
09:56
молодец! Продолжай
3 Евгений90
 
19.10.12
10:02
Код не вставил  )) Делаю во внешней обработке. Для одной записи вроде разобрался, а вот чтобы для всех элементов группы в номенклатуре не выходит



Процедура КнопкаВыполнитьНажатие(Кнопка)
   
СпрЗначСвОб  = Справочники.ЗначенияСвойствОбъектов;    
свИмпортер = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Импортер");
сСпрЗначСвОб = СпрЗначСвОб.НайтиПоНаименованию("МоеЗначение");


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

Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
НаборЗаписейЗначенияСвойств = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьНаборЗаписей();

НовЗапись = НаборЗаписейЗначенияСвойств.Добавить();

НовЗапись.Объект   = Выборка.Номенклатура;
НовЗапись.Свойство = свИмпортер.Ссылка;
НовЗапись.Значение = сСпрЗначСвОб;
НаборЗаписейЗначенияСвойств.Записать();
КонецЦикла;    
   
КонецПроцедуры
4 Евгений90
 
19.10.12
10:03
На форме внешней обработке установил поле ввода "Товары", тип СправочникСсылка.Номенклатура,  настройку "Выбор групп и элементов" только группы
5 LAAry
 
19.10.12
10:05
СправочникНоменклатура.Родитель = &Товары И СправочникНоменклатура.ЭтоГруппа

Так ты устанавливаешь свойство только для групп?
6 Евгений90
 
19.10.12
10:07
Да, в справочнике Номенклатура есть группа "Товары". Я хочу чтобы для всех элементов этой группы для свойства "Импортер" установилось значение "МоеЗначение"
7 LAAry
 
19.10.12
10:07
СправочникНоменклатура.Ссылка В Иерархии(&Товары)
8 Infsams654
 
19.10.12
10:09
(3) все неправильно (см. в типовых как сделано). Набору записей установи отбор ...
9 Reset
 
19.10.12
10:13
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Запись=РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьМенеджерЗаписи();
Запись.Объект   = Выборка.Номенклатура;
Запись.Свойство = свИмпортер.Ссылка;
Запись.Значение = сСпрЗначСвОб;
Запись.Записать();

КонецЦикла;
10 Евгений90
 
19.10.12
10:13
СправочникНоменклатура.Ссылка В Иерархии(&Товары) Так пробовал никакой реакции

НаборЗаписейЗначенияСвойств.Отбор.Объект.Установить(Выборка);
Правильно? В скобках что писать? Как вставлять ссылку на чужой комментарий?
11 Reset
 
19.10.12
10:13
Можно создание записи вынести наружу цикла, можно все сделать в тарнзакции
12 Reset
 
19.10.12
10:14
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
|    СправочникНоменклатура.Ссылка КАК Номенклатура
|ИЗ
|    Справочник.Номенклатура КАК СправочникНоменклатура
|ГДЕ
|    СправочникНоменклатура.Ссылка в иерархии (&Товары) и не СправочникНоменклатура.ЭтоГруппа";
13 Reset
 
19.10.12
10:15
Запись.Свойство = свИмпортер.Ссылка;
==>
Запись.Свойство = свИмпортер;

скрпипастил криво
14 Reset
 
19.10.12
10:16
Осталось выяснить, что это "Товары"
Запрос.УстановитьПараметр("Товары", Товары);
15 Reset
 
19.10.12
10:16
должна быть ссылка на группу
16 Reset
 
19.10.12
10:18
Хотя бы
Справочники.Номенклатура.НайтиПоНаименованию("Товары")

или лучше по коду, т.к. кто-то стопудов гденибудь еще созадть с таки именем
17 Reset
 
19.10.12
10:18
создал с таким*
18 Reset
 
19.10.12
10:18
Шеф, вы на связи? Все понятно?
19 Reset
 
19.10.12
10:20
Ссылку на комментарий вставлять вот так: (номер)
20 Евгений90
 
19.10.12
10:26
Спасибо, все получилось )

Вот код


Процедура КнопкаВыполнитьНажатие(Кнопка)
   
СпрЗначСвОб  = Справочники.ЗначенияСвойствОбъектов;    
свИмпортер = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Импортер");
сСпрЗначСвОб = СпрЗначСвОб.НайтиПоНаименованию("МоеЗначение");


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


Пока Выборка.Следующий() Цикл
НовЗапись = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьМенеджерЗаписи();
НовЗапись.Объект   = Выборка.Номенклатура;
НовЗапись.Свойство = свИмпортер.Ссылка;
НовЗапись.Значение = сСпрЗначСвОб;
НовЗапись.Записать();
КонецЦикла;    
   
КонецПроцедуры
21 Reset
 
19.10.12
10:28
Молодец, только (13) учти
22 Reset
 
19.10.12
10:29
хотя для одноразового запуска пофиг
23 Евгений90
 
19.10.12
10:31
Только не совсем понимаю, почему в тексте запроса мы указали
|ГДЕ
|    СправочникНоменклатура.Ссылка В Иерархии(&Товары) И (почему здесь нужно НЕ??? Здесь "НЕ" означает что это наоборот не группа?) НЕ СправочникНоменклатура.ЭтоГруппа"
24 Reset
 
19.10.12
10:31
что бы в выборку НЕ попали группы.
У групп свойств нет, как правило
25 Евгений90
 
19.10.12
10:32
Ок, понял спасибо, а как ссылку на чужой комментарий вставить?
26 Reset
 
19.10.12
10:33
(25) см (19)
27 Евгений90
 
19.10.12
10:34
(26) Спасибо )
Программист всегда исправляет последнюю ошибку.