Как получить подчиненный элемент
Показывать по
10
20
40
сообщений
- 1
- 2
20.07.2009
11:52
#1
"платформа 7.7, пишу обработку для изменения подчинненого элемента-числа, т.е. этот элемент находится в подчиненном справочнике и метод ИспользоватьВладельца() не отображает искомый результат, посмотрите что не так, в чем мой косяк? Спасибо за критику.Процедура Выполнить(ПР)
СпрПР = СоздатьОбъект("Справочник.Квалификации");
СпрПР.ИспользоватьДату(РабочаяДата());
СпрПР.ИспользоватьВладельца(ПР);
СпрПР.ВыбратьЭлементы();
Сч = 0;
Пока СпрПР.ПолучитьЭлемент()= 1 Цикл
Бонус1 = СпрПР.Бонус;
Бонус2 = Бонус1*ВыбЧисло;
СпрПР.Бонус = Бонус2;
СпрПР.Записать();
Сч = Сч + 1;
Сообщить("счетчик"+Сч+"---"+СпрПР.Наименование+СпрПР.Бонус);
КонецЦикла;
КонецПроцедуры
////////////////////////////////////////////////////
ПР=СоздатьОбъект("Справочник.ПереченьРабот");
"
СпрПР = СоздатьОбъект("Справочник.Квалификации");
СпрПР.ИспользоватьДату(РабочаяДата());
СпрПР.ИспользоватьВладельца(ПР);
СпрПР.ВыбратьЭлементы();
Сч = 0;
Пока СпрПР.ПолучитьЭлемент()= 1 Цикл
Бонус1 = СпрПР.Бонус;
Бонус2 = Бонус1*ВыбЧисло;
СпрПР.Бонус = Бонус2;
СпрПР.Записать();
Сч = Сч + 1;
Сообщить("счетчик"+Сч+"---"+СпрПР.Наименование+СпрПР.Бонус);
КонецЦикла;
КонецПроцедуры
////////////////////////////////////////////////////
"
20.07.2009
12:46
#2
"А где позиционирование на элементе-владельце? И вообще, что чему подчинено?
Предположим, что справочник Квалификации является подчиненным справочнику ПереченьРабот. Тогда так:
ПереченьРабот=СоздатьОбъект("Справочник.ПереченьРабот");
Квалификации=СоздатьОбъект("Справочник.Квалификации");
ПереченьРабот.ВыбратьЭлементы();
Пока ПереченьРабот.ПолучитьЭлемент(1)=1 Цикл
Квалификации.ИспользоватьВладельца(ПереченьРабот.ТекущийЭлемент());
Пока Квалификации.ПолучитьЭлемент(1)=1 Цикл
...
КонецЦикла;
КонецЦикла
или, если элемент справочника ПереченьРабот какой то конкретный:
Квалификации=СоздатьОбъект("Справочник.Квалификации");
Квалификации.ИспользоватьВладельца(НужныйЭлементПереченяРабот);
Пока Квалификации.ПолучитьЭлемент(1)=1 Цикл
...
КонецЦикла;"
Предположим, что справочник Квалификации является подчиненным справочнику ПереченьРабот. Тогда так:
ПереченьРабот=СоздатьОбъект("Справочник.ПереченьРабот");
Квалификации=СоздатьОбъект("Справочник.Квалификации");
ПереченьРабот.ВыбратьЭлементы();
Пока ПереченьРабот.ПолучитьЭлемент(1)=1 Цикл
Квалификации.ИспользоватьВладельца(ПереченьРабот.ТекущийЭлемент());
Пока Квалификации.ПолучитьЭлемент(1)=1 Цикл
...
КонецЦикла;
КонецЦикла
или, если элемент справочника ПереченьРабот какой то конкретный:
Квалификации=СоздатьОбъект("Справочник.Квалификации");
Квалификации.ИспользоватьВладельца(НужныйЭлементПереченяРабот);
Пока Квалификации.ПолучитьЭлемент(1)=1 Цикл
...
КонецЦикла;"
20.07.2009
13:38
#3
мне ваш первый вариант очень помог ,но как дело касается квалификации то сразу вылетает ошибка , что элемент не выбран.
20.07.2009
13:40
#4
"По аналогии с " Квалификации.ИспользоватьВладельца(ПереченьРабот.ТекущийЭлемент());" используйте не просто Квалификации, а Квалификации.ТекущийЭлемент()"
20.07.2009
14:05
#5
бесполезно:
Пока Квалификации.ПолучитьЭлемент(1)=1 Цикл
{Обработка.ПересчетБонусов.Форма.Модуль(10)}: Не выбран элемент!
даже ч/з отладчик не видно поле"Владелец" остается пустым
Пока Квалификации.ПолучитьЭлемент(1)=1 Цикл
{Обработка.ПересчетБонусов.Форма.Модуль(10)}: Не выбран элемент!
даже ч/з отладчик не видно поле"Владелец" остается пустым
20.07.2009
14:05
#6
"
> ПереченьРабот=СоздатьОбъект("Справочник.ПереченьРабот");
> Квалификации=СоздатьОбъект("Справочник.Квалификации");
> ПереченьРабот.ВыбратьЭлементы();
> Пока ПереченьРабот.ПолучитьЭлемент(1)=1 Цикл
> Квалификации.ИспользоватьВладельца(ПереченьРабот.ТекущийЭлемент());
> Пока Квалификации.ПолучитьЭлемент(1)=1 Цикл
> ...
> КонецЦикла;
> КонецЦикла
>
выборка собьётся, если в подчиненном справочнике записывать!!!!
"
> ПереченьРабот=СоздатьОбъект("Справочник.ПереченьРабот");
> Квалификации=СоздатьОбъект("Справочник.Квалификации");
> ПереченьРабот.ВыбратьЭлементы();
> Пока ПереченьРабот.ПолучитьЭлемент(1)=1 Цикл
> Квалификации.ИспользоватьВладельца(ПереченьРабот.ТекущийЭлемент());
> Пока Квалификации.ПолучитьЭлемент(1)=1 Цикл
> ...
> КонецЦикла;
> КонецЦикла
>
выборка собьётся, если в подчиненном справочнике записывать!!!!
"
20.07.2009
14:07
#7
"А, ну правильно, я забыл написать Квалификации.ВыбратьЭлементы(); сорри 
Должно быть так:
ПереченьРабот=СоздатьОбъект("Справочник.ПереченьРабот");
Квалификации=СоздатьОбъект("Справочник.Квалификации");
ПереченьРабот.ВыбратьЭлементы();
Пока ПереченьРабот.ПолучитьЭлемент(1)=1 Цикл
Квалификации.ИспользоватьВладельца(ПереченьРабот.ТекущийЭлемент());
Квалификации.ВыбратьЭлементы();
Пока Квалификации.ПолучитьЭлемент(1)=1 Цикл
...
КонецЦикла;
КонецЦикла
P.S. Я не тестирую то что пишу сюда, если оно кажется мне слишком простым, бывают промахи :)"
Должно быть так:
ПереченьРабот=СоздатьОбъект("Справочник.ПереченьРабот");
Квалификации=СоздатьОбъект("Справочник.Квалификации");
ПереченьРабот.ВыбратьЭлементы();
Пока ПереченьРабот.ПолучитьЭлемент(1)=1 Цикл
Квалификации.ИспользоватьВладельца(ПереченьРабот.ТекущийЭлемент());
Квалификации.ВыбратьЭлементы();
Пока Квалификации.ПолучитьЭлемент(1)=1 Цикл
...
КонецЦикла;
КонецЦикла
P.S. Я не тестирую то что пишу сюда, если оно кажется мне слишком простым, бывают промахи :)"
20.07.2009
14:09
#8
"> А, ну правильно, я забыл написать Квалификации.ВыбратьЭлементы(); сорри 
> Должно быть так:
> ПереченьРабот=СоздатьОбъект("Справочник.ПереченьРабот");
> Квалификации=СоздатьОбъект("Справочник.Квалификации");
> ПереченьРабот.ВыбратьЭлементы();
> Пока ПереченьРабот.ПолучитьЭлемент(1)=1 Цикл
> Квалификации.ИспользоватьВладельца(ПереченьРабот.ТекущийЭлемент());
> Квалификации.ВыбратьЭлементы();
> Пока Квалификации.ПолучитьЭлемент(1)=1 Цикл
> ...
> КонецЦикла;
> КонецЦикла
>
> P.S. Я не тестирую то что пишу сюда, если оно кажется мне слишком простым, бывают промахи
всё равно собьётся, особенно, если справочник-владелец иерархический"
> Должно быть так:
> ПереченьРабот=СоздатьОбъект("Справочник.ПереченьРабот");
> Квалификации=СоздатьОбъект("Справочник.Квалификации");
> ПереченьРабот.ВыбратьЭлементы();
> Пока ПереченьРабот.ПолучитьЭлемент(1)=1 Цикл
> Квалификации.ИспользоватьВладельца(ПереченьРабот.ТекущийЭлемент());
> Квалификации.ВыбратьЭлементы();
> Пока Квалификации.ПолучитьЭлемент(1)=1 Цикл
> ...
> КонецЦикла;
> КонецЦикла
>
> P.S. Я не тестирую то что пишу сюда, если оно кажется мне слишком простым, бывают промахи
всё равно собьётся, особенно, если справочник-владелец иерархический"
- 1
- 2
Читают тему
(гостей: 1)