|
v7: в копилку приколов 🠗 (Волшебник 23.03.2015 12:39) | ☑ | ||
---|---|---|---|---|
0
e2e4
23.03.15
✎
11:26
|
вопрос на засыпку: что получим
сообщить(типзначения(группарасчетов.детскиепособия)); //или какая-то другая группа расчетов ??? (ответ - 100) ...сваял на скорую руку обработочку для сравнения состава групп расчетов - надо иногда...и долблюсь, пытаясь понять, почему на Колво1 = группа1.Количество(); - получаю ругань "...Значение не представляет агрегатный объект (Количество)". Однако отладчик при этом упорно показывает, что группа1 - это именно группа расчетов, а не текст. Если же тупо В КОДЕ написать перед этим: группа1 = группарасчетов.детскиепособия; - то все работает как надо, группа1 перебирается... |
|||
1
e2e4
23.03.15
✎
11:33
|
(0) ...в смысле, прикол-то в том, что ругань получаю выбрав группу1 из списка на форме; а если прописываю ее непосредственно в коде - все работает. При этом, отладчик никаких различий для переменной группа1 в этих двух случаях не показывает, и типзначения и так и этак - 100....
|
|||
2
Aloex
23.03.15
✎
11:34
|
Не смешно, закрывайте.
|
|||
3
e2e4
23.03.15
✎
11:38
|
(2) ладно, это надо ощутить, чтобы уржаться
...проще раз в N месяцев вручную в код повписывать сравниваемые группы, чем очередной прыщик на теле трупа (клюшек) изучать... |
|||
4
silent person
23.03.15
✎
11:44
|
а "группа 1" это что ?
|
|||
5
Herby
23.03.15
✎
11:45
|
(3) > ладно, это надо ощутить, чтобы уржаться
еще и грибочков не мешало бы... может группа1 на форме это реквизит неопределенного вида? и тогда это у вас в голове прыщик, а не в 7.7 |
|||
6
Spyke
23.03.15
✎
11:47
|
(3) Клюшки - наше все
|
|||
7
aka AMIGO
23.03.15
✎
11:47
|
(5) элемент списка на форме :)
|
|||
8
aka AMIGO
23.03.15
✎
11:47
|
+7 что туда запишешь - то и получишь :)
|
|||
9
e2e4
23.03.15
✎
11:48
|
(5)во, теперь по делу; итак: на форме два списка значений, которые при старте заполняются так:
Для сч = 1 По Метаданные.ГруппаРасчетов() Цикл ГрРасч = Метаданные.ГруппаРасчетов(сч); ГрРасч1.ДобавитьЗначение(ГрРасч); ГрРасч2.ДобавитьЗначение(ГрРасч); КонецЦикла; При выборе значения в списке, срабатывает такое: если ном = 1 тогда группа1 = ГрРасч1.ПолучитьЗначение(ГрРасч1.ТекущаяСтрока()); //группа1 = Метаданные.ГруппаРасчетов(ГрРасч1.ТекущаяСтрока()); иначе группа2 = ГрРасч2.ПолучитьЗначение(ГрРасч2.ТекущаяСтрока()); //группа2 = Метаданные.ГруппаРасчетов(ГрРасч2.ТекущаяСтрока()); конецесли; (в комментариях - попытался другим способом - получил то же самое) |
|||
10
e2e4
23.03.15
✎
11:49
|
(9) (ном - это в каком списке щелкнули, первом или втором)
|
|||
11
e2e4
23.03.15
✎
11:52
|
(9) типа вот так: https://yadi.sk/i/G7VXFZKjfT448
|
|||
12
dmpl
23.03.15
✎
11:53
|
(0) Вот такая вот она многоликая нетипизация в 7.7.
|
|||
13
e2e4
23.03.15
✎
11:53
|
(11) а далее жму Сформировать - и облом: https://yadi.sk/i/2IzRxxGWfT48N
|
|||
14
e2e4
23.03.15
✎
11:55
|
(13) несмотря на то, что в этот момент: https://yadi.sk/i/_Y1RvnYcfT4Cv
|
|||
15
e2e4
23.03.15
✎
12:01
|
(12) ага
то ли в принципе не существует типа "ГруппаРасчетов"? Но как тогда все работает, когда непосредственно в КОДЕ прописываю конкретную группу расчетов??? Ради интереса помучаюсь счас, попробую варианты не через списки значений на форме, а другими способами предоставить пользователю выбор групп... |
|||
16
dmpl
23.03.15
✎
12:02
|
(9) А с чего ты взял, что Метаданные.ГруппаРасчетов(сч) возвращает менеджер объекта (у которого есть метод Количество()), а не объект метаданных?
|
|||
17
dmpl
23.03.15
✎
12:23
|
В общем, попробуй ГрРасч = СоздатьОбъект(ГрРасч.ПолныйИдентификатор())
|
|||
18
e2e4
23.03.15
✎
12:29
|
(17) гм...наверно, ты имеешь в виду что то вроде МояНоваяПеременная = СоздатьОбъект(ГрРасч.ПолныйИдентификатор()), Где ГрРасч = Метаданные.ГруппаРасчетов(сч)
??? не катит: "Неудачная попытка создания объекта" ...насчет 16 не понял, честно. На всяк случай - это клюшки. |
|||
19
silent person
23.03.15
✎
12:34
|
не плоди переменных. работай прямо со списком, у меня все работет
Процедура ПриОткрытии() СписокГрупп.ДобавитьЗначение(ГруппаРасчетов.БазаРасчетаПремий,ГруппаРасчетов.БазаРасчетаПремий); СписокГрупп.ДобавитьЗначение(ГруппаРасчетов.БольничныеЛисты,ГруппаРасчетов.БольничныеЛисты); КонецПроцедуры // ПриОткрытии //====================================================================== Процедура КоличествоВР() Сообщить(СписокГрупп.ПолучитьЗначение(СписокГрупп.ТекущаяСтрока()).Количество()); КонецПроцедуры // КоличествоВР |
|||
20
dmpl
23.03.15
✎
12:37
|
(18) 1. Другими словами, идентификатор получается, но такой объект создать невозможно. В таком случае смотри документацию по группам расчета. Со справочниками, например, это работает, а платформы с компонентой расчета у меня под рукой нет, да и книжек тоже.
2. Работающий метод ПолныйИдентификатор() указывает на то, что возвращается не менеджер объекта (в терминах 8-ки что-то типа ГруппаРасчетаМенеджер), а именно объект метаданных (т.к. только у объекта этого типа есть метод ПолныйИдентификатор()) - в терминах 8-ки что-то типа ОбъектМетаданных:ГруппаРасчета. В общем, типы разные, поэтому и ошибка. |
|||
21
dmpl
23.03.15
✎
12:38
|
(19) Дык лень, наверное, все группы при открытии перечислять. Да и желание универсальности, наверное, присутствует.
|
|||
22
e2e4
23.03.15
✎
12:54
|
(20) хм: https://yadi.sk/i/ORgFW8fAfT8j5
(19)(21) вово |
|||
23
e2e4
23.03.15
✎
13:10
|
(22) ветку можно переименовать в "Как программно перебрать все группы расчетов?"...
...интересно, как?:) |
|||
24
dmpl
23.03.15
✎
13:26
|
(23) А тебе что надо? Небольшое яндексенье наводит на мысль, что работает такая конструкция:
Так что группы перебираются через тип Метаданные, а из метаданных вида расчета уже и объект создать можно при необходимости... |
|||
25
e2e4
23.03.15
✎
13:49
|
(24) не "Получить(ном)", а ПолучитьРасчет(сч). Мне нужно этим штатным методом перебрать все ВР, входящую в указанную пользователем группу. Т.е. типа так:
Колво1 = Метаданные.ГруппаРасчетов(ном1).Количество(); Для сч1 = 1 По Колво1 Цикл ВР1 = Метаданные.ГруппаРасчетов(ном1).ПолучитьРасчет(сч1); ... но это не работает точно так же, как и исходный вариант. |
|||
26
dmpl
23.03.15
✎
13:58
|
(25) Именно Получить() - не стоит забывать, что и ВидРасчета - это объект метаданных. И вернет он тоже объект метаданных. Но вот на основании этого объекта можно через СоздатьОбъект получить уже привычный вид расчета. Впрочем, возможно что объект получать и не надо...
|
|||
27
e2e4
23.03.15
✎
14:25
|
(26) суть задачи - перебрать все виды расчета, входящие в группу.
Чем в (24) ограничить "ном", чтобы не вылететь с ошибкой, если количество вр в группе неизвестно? ...Можно конечно зайти с тыла - и, перебирая ВСЕ виды расчета, существующие в конфе, проверять их на вхождение в группу через ВходитВГруппу(). Но хотелось пойти прямым путем, используя штатные, предназначенные вроде как именно для этой задачи, методы Количество() и ПолучитьРасчет(). |
|||
28
dmpl
23.03.15
✎
14:37
|
(27) У коллекции ссылок метаданных кроме метода Получить() есть еще и метод Количество().
|
|||
29
e2e4
23.03.15
✎
14:59
|
(28) работает:)
раньше я не работал практически с объектом Метаданные - век живи, век учись! спасибо ...но, осталась все же нерешенной задача - сохранить в некую переменную группа1 выбранное пользователем значение, так, чтобы результат был аналогичен группа1 = ГруппаРасчетов.<ИдентификаторВыбраннойГруппы> и чтобы можно было далее использовать штатные Количество() и ПолучитьРасчет(). Но это так... |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |