Описание типов

1. obmailok 183 28.11.23 10:25 Сейчас в теме
Господа Академики!

Возник чисто академический вопрос. Пишу в надежде на коллективный разум, чтоб разобраться в ситуации.
Сразу оговорюсь, что никакого практического значения для меня эта ситуация не имеет.

Предистория:
Искал подписки на событие по событию и наткнулся на следующий факт.
В типовой конфигурации ЗУП 3.1 есть подписка ТарификацияОбработкаПолученияФормы, у которой источники указаны как "РегистрНакопленияМенеджер, РегистрСведенийМенеджер, ПланСчетовМенеджер, ДокументМенеджер, РегистрРасчетаМенеджер, БизнесПроцессМенеджер, РегистрБухгалтерииМенеджер, ПланВидовРасчетаМенеджер, ЗадачаМенеджер, ПланВидовХарактеристикМенеджер, СправочникМенеджер, ЖурналДокументовМенеджер" и событие "ОбработкаПолученияФормы".

Программа всё честно отрабатывает, т.е. указанные типы она понимает, но если программно обратится к типам источника, то увидим следующее:

Метаданные.ПодпискиНаСобытия.ТарификацияОбработкаПолученияФормы.Источник.Типы().Количество() = 0

Однако если посмотреть ЗначениеВСтрокуВнутр(Источник) или сериализировать его мы увидим, что типы всё-таки есть:

ЗначениеВСтрокуВнутр


Сериализация


И, что логично ID типов в обоих методах совпадают.
Но зная описание типов указанное в конфигураторе попытался сопоставить с ID типов, которые, как мне казалось, входят в состав источника подписки. Но не тут то было. Ни один ID сопоставить не удалось:

ID типов

Как итог я программно могу увидеть, что описание типов не пустое и все-таки содержит 12 типов, но что за типы ни получить, ни вычислить не могу. Робкие попытки типа:

Метаданные.ПодпискиНаСобытия.ТарификацияОбработкаПолученияФормы.Источник.СодержитТип(Тип("СправочникиМенеджер")) = Ложь
Метаданные.ПодпискиНаСобытия.ТарификацияОбработкаПолученияФормы.Источник.СодержитТип(Тип("СправочникСсылка.Валюты")) = Ложь


Тоже результатов не дало.

Есть идеи, как можно "выдернуть" типы из описания типов?
По теме из базы знаний
Найденные решения
12. obmailok 183 28.11.23 15:55 Сейчас в теме
(9)На текущий момент могу экспериментировать на 1С:Предприятие 8.3 (8.3.23.1782)

Вот, что удалось определить через конфигуратор:

71b5c8fd-60d6-4b3f-abd6-99e41a45d05c = ПланСчетовОбъект
b79f66ab-47ee-4cec-b6e3-ea940c8da45b = ХранилищеНастроекМенеджер
725c537f-a2e4-4714-85c4-77a4e36fb9eb = РегистрБухгалтерииНаборЗаписей
90639d75-0c70-4dce-994e-17840d13a3e3 = ПоследовательностьНаборЗаписей
c18ca26c-c18e-4da0-af61-fe6160d9ad11 = ПерерасчетНаборЗаписей
82faabf3-7f9b-4b2e-b499-98876415f270 = СправочникМенеджер
26dd1dee-252a-4942-b4b5-62ea44ed8030 = ДокументМенеджер
1aa09f48-f6d5-4999-a7f5-02a15794c795 = РегистрСведенийМенеджер
2d0abc8e-dede-4184-afd7-7ae8da588d47 = РегистрРасчетаМенеджер
0dee6ca3-50a1-4f94-8c34-e70eeb802d81 = РегистрНакопленияМенеджер
3ab47eda-6a5c-4590-9b08-0e633aa2f376 = РегистрБухгалтерииМенеджер
2066866d-9d38-47fe-a272-3cd416eb9c85 = ПланСчетовМенеджер
3caa9852-d921-4ba6-8259-e1f1fc0954ad = ПланОбменаМенеджер
7612de75-8b10-466a-b235-68572c605d92 = ПланВидовХарактеристикМенеджер
3eab4ff4-f2d1-4c96-831c-04711b093999 = ПланВидовРасчетаМенеджер
af88b718-20c1-40e7-8a15-d0da56108fe6 = ПеречислениеМенеджер
b63dd3d0-6d1b-4c66-bdb2-b065e282a777 = ОтчетМенеджер
6ba5b296-4aa6-4099-9087-821f2d1252d1 = ОбработкаМенеджер
5e268c17-8035-458f-8041-daf9b15d05c9 = ЗадачаМенеджер
38f1038d-8b0b-438b-bfbe-830a60a1153a = БизнесПроцессМенеджер
92e7f73f-bd66-4d9e-bc43-bae2acfadfd5 = ЖурналДокументовМенеджер

При этом типы:

БизнесПроцессОбъект
ДокументОбъект
ЗадачаОбъект
КонстантаМенеджерЗначения
ПланВидовРасчетаОбъект
ПланВидовХарактеристикОбъект
ПланОбменаОбъект
РегистрСведенийНаборЗаписей
РегистрНакопленияНаборЗаписей
РегистрРасчетаНаборЗаписей
СправочникОбъект

отработали штатно.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
4. Sashares 34 28.11.23 11:27 Сейчас в теме
(1)Я бы предложил заслать вопрос на лк.
Т.к. если в источнике типы указаны, а в коде их нет, то это похоже на ошибку платформы.
5. obmailok 183 28.11.23 11:54 Сейчас в теме
(4) Типы есть, платформа их понимает. Не отрабатывает метод ОТ.Типы()
Точнее отрабатывает, но выдает пустой массив.
6. Sashares 34 28.11.23 11:59 Сейчас в теме
2. starik-2005 3043 28.11.23 11:09 Сейчас в теме
Вот не надо так вопросы писать - только для того, чтобы это все прочитать, час надо времени...
3. obmailok 183 28.11.23 11:23 Сейчас в теме
7. DENSKR 15 28.11.23 13:43 Сейчас в теме
Вот в этой статье хорошо описаны форматы представления данных в базе, возможно почитав про ссылочные типы вы получите ответ на ваш академический вопрос! :-)
8. obmailok 183 28.11.23 14:35 Сейчас в теме
(7) Примерно в этой логике я и рассуждал. Но ни один из ID (например 0dee6ca3-50a1-4f94-8c34-e70eeb802d81) Воспроизвести не смог:
ЗначениеИзСтрокиВнутр("{""#"",f5c65050-3bbb-11d5-b988-0050bae0a95d,{""Pattern"",{""#"",0dee6ca3-50a1-4f94-8c34-e70eeb802d81}}}").Типы().Количество() = 0

Само же восстановление из строки дает
ЗначениеИзСтрокиВнутр("{""#"",f5c65050-3bbb-11d5-b988-0050bae0a95d,{""Pattern"",{""#"",0dee6ca3-50a1-4f94-8c34-e70eeb802d81}}}") - описание типов не содержащее значений.

Ни один же тип "менеджер" созданный программно не повторяет ID типов "менеджеров" из конфигуратора

Единственное, что остается это в метаданных, а не программно создать отдельные типы "менеджеры", исследовать и их ID считать константами. Хотелось как-то программно разобраться (повторить ID).
9. DENSKR 15 28.11.23 15:08 Сейчас в теме
(8) ЗУП 3.1 нет под рукой да и платформы почему то уверен разные у нас, но я смодулировал у себя ситуацию на 3х элементах (МенеджерыСправочников) в источнике подписки на событие возвращает корректное Количество(). Платформа 8.3.20.1914
Видимо что то на уровне платформы, вы пробовали выполнять те же действия на других релизах платформ, режимах совместимости?
12. obmailok 183 28.11.23 15:55 Сейчас в теме
(9)На текущий момент могу экспериментировать на 1С:Предприятие 8.3 (8.3.23.1782)

Вот, что удалось определить через конфигуратор:

71b5c8fd-60d6-4b3f-abd6-99e41a45d05c = ПланСчетовОбъект
b79f66ab-47ee-4cec-b6e3-ea940c8da45b = ХранилищеНастроекМенеджер
725c537f-a2e4-4714-85c4-77a4e36fb9eb = РегистрБухгалтерииНаборЗаписей
90639d75-0c70-4dce-994e-17840d13a3e3 = ПоследовательностьНаборЗаписей
c18ca26c-c18e-4da0-af61-fe6160d9ad11 = ПерерасчетНаборЗаписей
82faabf3-7f9b-4b2e-b499-98876415f270 = СправочникМенеджер
26dd1dee-252a-4942-b4b5-62ea44ed8030 = ДокументМенеджер
1aa09f48-f6d5-4999-a7f5-02a15794c795 = РегистрСведенийМенеджер
2d0abc8e-dede-4184-afd7-7ae8da588d47 = РегистрРасчетаМенеджер
0dee6ca3-50a1-4f94-8c34-e70eeb802d81 = РегистрНакопленияМенеджер
3ab47eda-6a5c-4590-9b08-0e633aa2f376 = РегистрБухгалтерииМенеджер
2066866d-9d38-47fe-a272-3cd416eb9c85 = ПланСчетовМенеджер
3caa9852-d921-4ba6-8259-e1f1fc0954ad = ПланОбменаМенеджер
7612de75-8b10-466a-b235-68572c605d92 = ПланВидовХарактеристикМенеджер
3eab4ff4-f2d1-4c96-831c-04711b093999 = ПланВидовРасчетаМенеджер
af88b718-20c1-40e7-8a15-d0da56108fe6 = ПеречислениеМенеджер
b63dd3d0-6d1b-4c66-bdb2-b065e282a777 = ОтчетМенеджер
6ba5b296-4aa6-4099-9087-821f2d1252d1 = ОбработкаМенеджер
5e268c17-8035-458f-8041-daf9b15d05c9 = ЗадачаМенеджер
38f1038d-8b0b-438b-bfbe-830a60a1153a = БизнесПроцессМенеджер
92e7f73f-bd66-4d9e-bc43-bae2acfadfd5 = ЖурналДокументовМенеджер

При этом типы:

БизнесПроцессОбъект
ДокументОбъект
ЗадачаОбъект
КонстантаМенеджерЗначения
ПланВидовРасчетаОбъект
ПланВидовХарактеристикОбъект
ПланОбменаОбъект
РегистрСведенийНаборЗаписей
РегистрНакопленияНаборЗаписей
РегистрРасчетаНаборЗаписей
СправочникОбъект

отработали штатно.
16. DENSKR 15 28.11.23 16:15 Сейчас в теме
(12) Так вопрос получается стоял в том чтобы получить ID типов?
19. SlavaKron 28.11.23 16:38 Сейчас в теме
(8) Это не тип менеджера, это тип "ВсеСсылки". Программно получить его описание можно как:
Документы.ТипВсеСсылки()
22. obmailok 183 28.11.23 16:40 Сейчас в теме
(19)

ЗначениеВСтрокуВнутр(Документы.ТипВсеСсылки()) =
"{"#",f5c65050-3bbb-11d5-b988-0050bae0a95d,
{"Pattern",
{"#",38bfd075-3e63-4aaa-a93e-94521380d579}
}
}"

и этот ID не соответствует 26dd1dee-252a-4942-b4b5-62ea44ed8030
10. soft_wind 28.11.23 15:11 Сейчас в теме
а такую коменду пробовали?
Метаданные.ПодпискиНаСобытия.ТарификацияОбработкаПолученияФормы.Источник.Типы();

у меня возвращает как раз массив типов!
13. obmailok 183 28.11.23 15:56 Сейчас в теме
(10)Массив и у меня возникает, только он пустой.
11. soft_wind 28.11.23 15:25 Сейчас в теме
(10) а понял, если указать группу ДокументМенеджер, СправочникМенеджер

то действительно массив типов пустой! прикольно!
14. obmailok 183 28.11.23 15:57 Сейчас в теме
(11)Немного повозился с ID. Результат в сообщении (12)
15. DENSKR 15 28.11.23 15:58 Сейчас в теме
(11) А какая у вас платформа?
Прикрепленные файлы:
18. obmailok 183 28.11.23 16:37 Сейчас в теме
(15)Не конкретный справочник или документ, а весь менеджер типа целиком.
21. DENSKR 15 28.11.23 16:40 Сейчас в теме
(18) Я о том что на моей платформе заполняется, а на вашей нет, прислал что у меня заполненный массив.
23. obmailok 183 28.11.23 16:43 Сейчас в теме
(21)В Вашей конфигурации всего 3 справочника и 3 документа?
24. DENSKR 15 28.11.23 17:20 Сейчас в теме
(23) А, менеджеры объектов напрямую не выбраны, но платформа о них знает, эти менеджеры объектов в выбранной группе ... Ну тут разработчики платформы ответят так: Ну галочку на каждом же не поставили :-)
17. soft_wind 28.11.23 16:31 Сейчас в теме
и что самое противное, платформа это все правильно отрабатывает!
а если вы захотите что-то перехватить и проверить свой тип
Метаданные.ПодпискиНаСобытия.....Источник.СодержитТип(...) - у вас ни чего не получится, получите - Ложь!.
20. obmailok 183 28.11.23 16:39 Сейчас в теме
(17)Вот я с теми же мыслями решил покопаться. Мало ли где такое описание типа попадется...
Зато теперь костыли можно придумать ))
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот