1C 8.2.9.356, УТ 10.3.7.9. Не работает метод справочника "Уровень()"

Новая тема
"Начинаю постигать азы восьмерки, поэтому сильно прошу не пинать.

Не могу понять, в чем собственно дело, но почему то не работает метод СправочникаСсылки.Уровень()

Вот код (тут работает):

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

А вот тут почему то не работает:

Процедура ЗаполнитьПоля(Номенклатура, Цена, Отдел, ШтрихКод, Единица)
 Товары = Товары_.Добавить();
 Товары.Номенклатура = Номенклатура.Ссылка;
 ...
 Номенклатура_ = Справочники.Номенклатура.ВыбратьИерархически();
 Пока Номенклатура_.Следующий() Цикл
   Если Не Номенклатура_.ЭтоГруппа Тогда
     Продолжить;
   КонецЕсли;
   Если Номенклатура_.Ссылка = Номенклатура.Родитель Тогда
     Родитель = Номенклатура_;
     Если Родитель.Уровень() = 0 Тогда
       Товары.Группа1 = Число(СокрЛП(Родитель.Код));
     ИначеЕсли Родитель.Уровень() = 1 Тогда
       Товары.Группа1 = Число(СокрЛП(Родитель.Родитель.Код));
       Товары.Группа2 = Число(СокрЛП(Родитель.Код));
     ИначеЕсли Родитель.Уровень() = 2 Тогда
     ...

вот в последнем варианте вообще ругается, говорит что метод "Уровень()" не обнаружен. В чем дело? Может еще чем дополнить вопрос или кто так уже догадался? "
"А в каком модуле располагается эта процедура (ЗаполнитьПоля)? Надеюсь не в модуле справочника.
В крайнем случае - поставьте точку прерывания и посмотрите, чему равен Родитель до и после Родитель = Номенклатура_;, и чему равно Номенклатура_"
Это все процедуры в модуле формы внешней обработки.
Первый код выполняется в процедуре при нажатии кнопки на форме, а второй код, это часть процедуры, которая вызывается из процедуры при нажатии другой кнопки.
По точке прерывания Номенклатура_ имеет тип "СправочникСсылка.Номенклатура".
А Родитель?
Если у вас есть элемент на форме с таким именем, но другим типом, то ваше присвоение работать не будет. Лучше вообще избегать использования возможных имен реквизитов в локальном контексте.
"Блин, ошибочка вышла. Родитель и Номенклатура_ имеют тип "СправочникВыборка.Номенклатура". Ладно, сделал вот так:

Родитель_ = Номенклатура.Родитель;
Если ЗначениеЗаполнено(Родитель_) Тогда
 Если Родитель_.Уровень() = 0 Тогда
   Товары.Группа1 = Число(СокрЛП(Родитель_.Код));
 ИначеЕсли Родитель_.Уровень() = 1 Тогда
   Товары.Группа1 = Число(СокрЛП(Родитель_.Родитель.Код));
   Товары.Группа2 = Число(СокрЛП(Родитель_.Код));
 ИначеЕсли Родитель_.Уровень() = 2 Тогда
   Товары.Группа1 = Число(СокрЛП(Родитель_.Родитель.Родитель.Код));
   Товары.Группа2 = Число(СокрЛП(Родитель_.Родитель.Код));
   Товары.Группа3 = Число(СокрЛП(Родитель_.Код));
 ИначеЕсли Родитель_.Уровень() = 3 Тогда
   Товары.Группа1 = Число(СокрЛП(Родитель_.Родитель.Родитель.Родитель.Код));
   Товары.Группа2 = Число(СокрЛП(Родитель_.Родитель.Родитель.Код));
   Товары.Группа3 = Число(СокрЛП(Родитель_.Родитель.Код));
   Товары.Группа4 = Число(СокрЛП(Родитель_.Код));
 ИначеЕсли Родитель_.Уровень() = 4 Тогда
   Товары.Группа1 = Число(СокрЛП(Родитель_.Родитель.Родитель.Родитель.Родитель.Код));
   Товары.Группа2 = Число(СокрЛП(Родитель_.Родитель.Родитель.Родитель.Код));
   Товары.Группа3 = Число(СокрЛП(Родитель_.Родитель.Родитель.Код));
   Товары.Группа4 = Число(СокрЛП(Родитель_.Родитель.Код));
   Товары.Группа5 = Число(СокрЛП(Родитель_.Код));
 КонецЕсли;
КонецЕсли;

и черт возьми, ОНО ЗАРАБОТАЛО!!! Блин.. вчера сидел до 2-х часов ночи, и оно ни в какую(( хнык(( ну тут правда еще Родитель заменил на Родитель_. Хотя нигде такого реквизита не было... ппц.."
Читают тему
(гостей: 1)

Быстрый переход