1C 8.2.9.356, УТ 10.3.7.9. Не работает метод справочника "Уровень()"
17.12.2010
08:13
#1
"Начинаю постигать азы восьмерки, поэтому сильно прошу не пинать.
Не могу понять, в чем собственно дело, но почему то не работает метод СправочникаСсылки.Уровень()
Вот код (тут работает):
Справочник = Справочники.Номенклатура.ВыбратьИерархически(Группа);
Пока Справочник.Следующий() Цикл
Если Справочник.ЭтоГруппа Тогда
Продолжить;
КонецЕсли;
Цены = РегистрыСведений.ЦеныНоменклатуры.Выбрать(,ТекущаяДата(),Новый Структура("Номенклатура", Справочник.Ссылка));
Цена = 0;
Пока Цены.Следующий() Цикл
Если Цены.ТипЦен = ТипЦен Тогда
Цена = Цены.Цена;
КонецЕсли;
КонецЦикла;
Если Цена = 0 Тогда
Сообщить("У товара " + Справочник.Наименование + " не назначена цена. Пропущен...");
Продолжить;
КонецЕсли;
ОбработаноШтрихкодов = 0;
Если Справочник.Весовой = 0 Тогда
ШтрихКоды = РегистрыСведений.Штрихкоды.Выбрать(Новый Структура("Владелец", Справочник.Ссылка));
Пока ШтрихКоды.Следующий() Цикл
...
Родитель = Справочник.Родитель;
Если ЗначениеЗаполнено(Родитель) Тогда
Файл.УстановитьЗначениеПоля("GRUPPA" + (Родитель.Уровень() + 1), Число(СокрЛП(Родитель.Код)));
Родитель = Родитель.Родитель;
Если ЗначениеЗаполнено(Родитель) Тогда
Файл.УстановитьЗначениеПоля("GRUPPA" + (Родитель.Уровень() + 1), Число(СокрЛП(Родитель.Код)));
Родитель = Родитель.Родитель;
Если ЗначениеЗаполнено(Родитель) Тогда
Файл.УстановитьЗначениеПоля("GRUPPA" + (Родитель.Уровень() + 1), Число(СокрЛП(Родитель.Код)));
Родитель = Родитель.Родитель;
Если ЗначениеЗаполнено(Родитель) Тогда
Файл.УстановитьЗначениеПоля("GRUPPA" + (Родитель.Уровень() + 1), Число(СокрЛП(Родитель.Код)));
Родитель = Родитель.Родитель;
Если ЗначениеЗаполнено(Родитель) Тогда
Файл.УстановитьЗначениеПоля("GRUPPA" + (Родитель.Уровень() + 1), Число(СокрЛП(Родитель.Код)));
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
...
А вот тут почему то не работает:
Процедура ЗаполнитьПоля(Номенклатура, Цена, Отдел, ШтрихКод, Единица)
Товары = Товары_.Добавить();
Товары.Номенклатура = Номенклатура.Ссылка;
...
Номенклатура_ = Справочники.Номенклатура.ВыбратьИерархически();
Пока Номенклатура_.Следующий() Цикл
Если Не Номенклатура_.ЭтоГруппа Тогда
Продолжить;
КонецЕсли;
Если Номенклатура_.Ссылка = Номенклатура.Родитель Тогда
Родитель = Номенклатура_;
Если Родитель.Уровень() = 0 Тогда
Товары.Группа1 = Число(СокрЛП(Родитель.Код));
ИначеЕсли Родитель.Уровень() = 1 Тогда
Товары.Группа1 = Число(СокрЛП(Родитель.Родитель.Код));
Товары.Группа2 = Число(СокрЛП(Родитель.Код));
ИначеЕсли Родитель.Уровень() = 2 Тогда
...
вот в последнем варианте вообще ругается, говорит что метод "Уровень()" не обнаружен. В чем дело? Может еще чем дополнить вопрос или кто так уже догадался? "
Не могу понять, в чем собственно дело, но почему то не работает метод СправочникаСсылки.Уровень()
Вот код (тут работает):
Справочник = Справочники.Номенклатура.ВыбратьИерархически(Группа);
Пока Справочник.Следующий() Цикл
Если Справочник.ЭтоГруппа Тогда
Продолжить;
КонецЕсли;
Цены = РегистрыСведений.ЦеныНоменклатуры.Выбрать(,ТекущаяДата(),Новый Структура("Номенклатура", Справочник.Ссылка));
Цена = 0;
Пока Цены.Следующий() Цикл
Если Цены.ТипЦен = ТипЦен Тогда
Цена = Цены.Цена;
КонецЕсли;
КонецЦикла;
Если Цена = 0 Тогда
Сообщить("У товара " + Справочник.Наименование + " не назначена цена. Пропущен...");
Продолжить;
КонецЕсли;
ОбработаноШтрихкодов = 0;
Если Справочник.Весовой = 0 Тогда
ШтрихКоды = РегистрыСведений.Штрихкоды.Выбрать(Новый Структура("Владелец", Справочник.Ссылка));
Пока ШтрихКоды.Следующий() Цикл
...
Родитель = Справочник.Родитель;
Если ЗначениеЗаполнено(Родитель) Тогда
Файл.УстановитьЗначениеПоля("GRUPPA" + (Родитель.Уровень() + 1), Число(СокрЛП(Родитель.Код)));
Родитель = Родитель.Родитель;
Если ЗначениеЗаполнено(Родитель) Тогда
Файл.УстановитьЗначениеПоля("GRUPPA" + (Родитель.Уровень() + 1), Число(СокрЛП(Родитель.Код)));
Родитель = Родитель.Родитель;
Если ЗначениеЗаполнено(Родитель) Тогда
Файл.УстановитьЗначениеПоля("GRUPPA" + (Родитель.Уровень() + 1), Число(СокрЛП(Родитель.Код)));
Родитель = Родитель.Родитель;
Если ЗначениеЗаполнено(Родитель) Тогда
Файл.УстановитьЗначениеПоля("GRUPPA" + (Родитель.Уровень() + 1), Число(СокрЛП(Родитель.Код)));
Родитель = Родитель.Родитель;
Если ЗначениеЗаполнено(Родитель) Тогда
Файл.УстановитьЗначениеПоля("GRUPPA" + (Родитель.Уровень() + 1), Число(СокрЛП(Родитель.Код)));
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
...
А вот тут почему то не работает:
Процедура ЗаполнитьПоля(Номенклатура, Цена, Отдел, ШтрихКод, Единица)
Товары = Товары_.Добавить();
Товары.Номенклатура = Номенклатура.Ссылка;
...
Номенклатура_ = Справочники.Номенклатура.ВыбратьИерархически();
Пока Номенклатура_.Следующий() Цикл
Если Не Номенклатура_.ЭтоГруппа Тогда
Продолжить;
КонецЕсли;
Если Номенклатура_.Ссылка = Номенклатура.Родитель Тогда
Родитель = Номенклатура_;
Если Родитель.Уровень() = 0 Тогда
Товары.Группа1 = Число(СокрЛП(Родитель.Код));
ИначеЕсли Родитель.Уровень() = 1 Тогда
Товары.Группа1 = Число(СокрЛП(Родитель.Родитель.Код));
Товары.Группа2 = Число(СокрЛП(Родитель.Код));
ИначеЕсли Родитель.Уровень() = 2 Тогда
...
вот в последнем варианте вообще ругается, говорит что метод "Уровень()" не обнаружен. В чем дело? Может еще чем дополнить вопрос или кто так уже догадался? "
17.12.2010
09:34
#2
"А в каком модуле располагается эта процедура (ЗаполнитьПоля)? Надеюсь не в модуле справочника.
В крайнем случае - поставьте точку прерывания и посмотрите, чему равен Родитель до и после Родитель = Номенклатура_;, и чему равно Номенклатура_"
В крайнем случае - поставьте точку прерывания и посмотрите, чему равен Родитель до и после Родитель = Номенклатура_;, и чему равно Номенклатура_"
17.12.2010
09:48
#3
Это все процедуры в модуле формы внешней обработки.
Первый код выполняется в процедуре при нажатии кнопки на форме, а второй код, это часть процедуры, которая вызывается из процедуры при нажатии другой кнопки.
По точке прерывания Номенклатура_ имеет тип "СправочникСсылка.Номенклатура".
Первый код выполняется в процедуре при нажатии кнопки на форме, а второй код, это часть процедуры, которая вызывается из процедуры при нажатии другой кнопки.
По точке прерывания Номенклатура_ имеет тип "СправочникСсылка.Номенклатура".
17.12.2010
10:21
#4
А Родитель?
Если у вас есть элемент на форме с таким именем, но другим типом, то ваше присвоение работать не будет. Лучше вообще избегать использования возможных имен реквизитов в локальном контексте.
Если у вас есть элемент на форме с таким именем, но другим типом, то ваше присвоение работать не будет. Лучше вообще избегать использования возможных имен реквизитов в локальном контексте.
17.12.2010
11:21
#5
"Блин, ошибочка вышла. Родитель и Номенклатура_ имеют тип "СправочникВыборка.Номенклатура". Ладно, сделал вот так:
Родитель_ = Номенклатура.Родитель;
Если ЗначениеЗаполнено(Родитель_) Тогда
Если Родитель_.Уровень() = 0 Тогда
Товары.Группа1 = Число(СокрЛП(Родитель_.Код));
ИначеЕсли Родитель_.Уровень() = 1 Тогда
Товары.Группа1 = Число(СокрЛП(Родитель_.Родитель.Код));
Товары.Группа2 = Число(СокрЛП(Родитель_.Код));
ИначеЕсли Родитель_.Уровень() = 2 Тогда
Товары.Группа1 = Число(СокрЛП(Родитель_.Родитель.Родитель.Код));
Товары.Группа2 = Число(СокрЛП(Родитель_.Родитель.Код));
Товары.Группа3 = Число(СокрЛП(Родитель_.Код));
ИначеЕсли Родитель_.Уровень() = 3 Тогда
Товары.Группа1 = Число(СокрЛП(Родитель_.Родитель.Родитель.Родитель.Код));
Товары.Группа2 = Число(СокрЛП(Родитель_.Родитель.Родитель.Код));
Товары.Группа3 = Число(СокрЛП(Родитель_.Родитель.Код));
Товары.Группа4 = Число(СокрЛП(Родитель_.Код));
ИначеЕсли Родитель_.Уровень() = 4 Тогда
Товары.Группа1 = Число(СокрЛП(Родитель_.Родитель.Родитель.Родитель.Родитель.Код));
Товары.Группа2 = Число(СокрЛП(Родитель_.Родитель.Родитель.Родитель.Код));
Товары.Группа3 = Число(СокрЛП(Родитель_.Родитель.Родитель.Код));
Товары.Группа4 = Число(СокрЛП(Родитель_.Родитель.Код));
Товары.Группа5 = Число(СокрЛП(Родитель_.Код));
КонецЕсли;
КонецЕсли;
и черт возьми, ОНО ЗАРАБОТАЛО!!! Блин.. вчера сидел до 2-х часов ночи, и оно ни в какую(( хнык(( ну тут правда еще Родитель заменил на Родитель_. Хотя нигде такого реквизита не было... ппц.."
Родитель_ = Номенклатура.Родитель;
Если ЗначениеЗаполнено(Родитель_) Тогда
Если Родитель_.Уровень() = 0 Тогда
Товары.Группа1 = Число(СокрЛП(Родитель_.Код));
ИначеЕсли Родитель_.Уровень() = 1 Тогда
Товары.Группа1 = Число(СокрЛП(Родитель_.Родитель.Код));
Товары.Группа2 = Число(СокрЛП(Родитель_.Код));
ИначеЕсли Родитель_.Уровень() = 2 Тогда
Товары.Группа1 = Число(СокрЛП(Родитель_.Родитель.Родитель.Код));
Товары.Группа2 = Число(СокрЛП(Родитель_.Родитель.Код));
Товары.Группа3 = Число(СокрЛП(Родитель_.Код));
ИначеЕсли Родитель_.Уровень() = 3 Тогда
Товары.Группа1 = Число(СокрЛП(Родитель_.Родитель.Родитель.Родитель.Код));
Товары.Группа2 = Число(СокрЛП(Родитель_.Родитель.Родитель.Код));
Товары.Группа3 = Число(СокрЛП(Родитель_.Родитель.Код));
Товары.Группа4 = Число(СокрЛП(Родитель_.Код));
ИначеЕсли Родитель_.Уровень() = 4 Тогда
Товары.Группа1 = Число(СокрЛП(Родитель_.Родитель.Родитель.Родитель.Родитель.Код));
Товары.Группа2 = Число(СокрЛП(Родитель_.Родитель.Родитель.Родитель.Код));
Товары.Группа3 = Число(СокрЛП(Родитель_.Родитель.Родитель.Код));
Товары.Группа4 = Число(СокрЛП(Родитель_.Родитель.Код));
Товары.Группа5 = Число(СокрЛП(Родитель_.Код));
КонецЕсли;
КонецЕсли;
и черт возьми, ОНО ЗАРАБОТАЛО!!! Блин.. вчера сидел до 2-х часов ночи, и оно ни в какую(( хнык(( ну тут правда еще Родитель заменил на Родитель_. Хотя нигде такого реквизита не было... ппц.."
1С:Бухгалтерия сельскохозяйственного предприятия Редакция 1.6 (1.6.26.3), учет материаловНовый план счетов
Читают тему
(гостей: 1)