Простая обработка не работает

Dzo

Active member
13.04.2009
38
0
#1
Прошу прощения, возможно где то уже было, если так то ткните..

Есть простая обработка (писал сам)

Процедура Сформировать()

Таб=СоздатьОбъект("Таблица");

СпрСН=СоздатьОбъект("Справочник.СвойстваНоменклатуры");
СпрВС=СоздатьОбъект("Справочник.ВидыСвойств");
СпрН=СоздатьОбъект("Справочник.Номенклатура");

СпрН.ВыбратьЭлементы();
Пока СпрН.ПолучитьЭлемент()=1 Цикл
Товар=СпрН.ТекущийЭлемент();
Если Товар.ЭтоГруппа()=1 Тогда
Продолжить
КонецЕсли;
СпрВС.ИспользоватьРодителя(Товар);
СпрВС.НайтиПоНаименованию("Производитель");
Производитель=СпрВС.ТекущийЭлемент();
СпрСН.ИспользоватьРодителя(Производитель);
Производ=СпрСН.ЗначениеСвойства;
Сообщить(Товар + " " + Производ);
КонецЦикла;
КонецПроцедуры
Нужно что бы отобразился товар и рядом соответствующий производитель.

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

1с7.7 ТиС
 

KiR

НЕ шибка опытный програмер)
11.09.2007
1 581
0
#2
ну во первых отладчик в руки и вперед! и каждую стоку смотреть
 

vbs

Well-known member
18.02.2007
1 708
1
#3
СпрСН.ИспользоватьРодителя(Производитель);
После этой строки вставь цикл выборки из справочника СпрСН
СпрСН.ВыбратьЭлементы();
Пока СпрСН.ПолучитьЭлемент() = 1 цикл
Производ=СпрСН.ЗначениеСвойства;
Сообщить(Товар + " " + Производ);
КонецЦикла
 
M

Max 1C

#4
1.Для выборки из подчиненного справочника нужно применять ИспользоватьВладельца(), ИспользоватьРодителя() применяется для выбора элементов внутри группы одного справочника
2.Справочник "СвойстваНоменклатуры" подчинен справочнику "Номенклатура"
3.Справочник "СвойстваНоменклатуры" не имеет ни кода, ни наименования=>ищем по реквизиту, или делаем выборку по реквизиту
4.При выводе сообщения необходимо либо явное преобразование товара в тип "Строка": Строка(Товар), т.к. за ним следует строковое выражение, либо вывод наименования Товар.Наименование
Рабочий код:

Процедура Сформировать()
Таб=СоздатьОбъект("Таблица");

СпрСН=СоздатьОбъект("Справочник.СвойстваНоменклатуры");
СпрВС=СоздатьОбъект("Справочник.ВидыСвойств");
СпрН=СоздатьОбъект("Справочник.Номенклатура");

//СпрВС.ИспользоватьРодителя(Товар);
//Выносим из цикла, т.к. вид свойства для всех товаров общий - производитель
СпрВС.НайтиПоНаименованию("Производитель",0,1);
Производитель=СпрВС.ТекущийЭлемент();

СпрН.ВыбратьЭлементы();
Пока СпрН.ПолучитьЭлемент()=1 Цикл
Товар=СпрН.ТекущийЭлемент();
Если Товар.ЭтоГруппа()=1 Тогда
Продолжить
КонецЕсли;

//СпрСН.ИспользоватьРодителя(Производитель);
//Производ=СпрСН.ЗначениеСвойства;
СпрСН.ИспользоватьВладельца(Товар);
СпрСН.ВыбратьЭлементыПоРеквизиту("ВидСвойства",Производитель,1,0);
Пока СпрСН.ПолучитьЭлемент()=1 Цикл
Производ=СпрСН.ЗначениеСвойства;
Сообщить(Товар.Наименование + " " + Производ);
КонецЦикла;
КонецЦикла;
КонецПроцедуры