БСП поиск по типу

Внимание! Тема закрыта. Добавлять сообщения в закрытую тему запрещено.
1. Fox_65 1 31.07.24 16:42 Сейчас в теме
Господа, знатоки БСП прошу помощи в таком вопросе. Пишу сейчас обработку для ут 10.3. Нужна четкая разбивка по организациям. В регистрах накопления, регистрах сведений. Хочется сделать разбивку универсальной. Знаю, что есть БСП функция, которая определяет наличие реквизита по имени. Но именами даже стандартная 1с пренебрегает, к примеру РегистрСведений КонтактнаяИнформация Организация находится в измерении Объект. Так что искать по имени гиблое дело. Выход - искать по типу.
Да и в некоторых Регистрах Накопления вместо Организации применяется измерение ДоговорыКонтрагентов, где в реквизитах присутствует организация.
А вот теперь собственно вопрос:
Нет ли в БСП функции, которая бы не по названию реквизита, а по типу значения определяла бы есть в метаданных реквизит с данным типом или нет. Желательно конечно, что бы возвращала в каком реквизите, но можно и истина-ложь. Не хочется изобретать велосипед, если это уже есть.
По теме из базы знаний
Найденные решения
4. Fox_65 1 31.07.24 19:11 Сейчас в теме
Тема закрыта. Нашел в БСП ИменаРеквизитовПоТипу. Вполне устраивает для выполнения моих задач.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user2033930 31.07.24 18:30 Сейчас в теме
Три строчки в цикле написать лень?
5. Fox_65 1 01.08.24 11:54 Сейчас в теме
(2) Для Непонимающих поясню. Когда обрабатывается большая база три строчки в цикле могут вылиться в несколько часов ожидания.
6. Zevzm 01.08.24 12:02 Сейчас в теме
(5) Есть сомнения и в вашем понимании:
Функция ИменаРеквизитовПоТипу(МетаданныеОбъекта, Тип)
	
	ИменаРеквизитов = Новый Массив; // Массив из Строка
	
	Для Каждого Реквизит Из МетаданныеОбъекта.Реквизиты Цикл
		Если Реквизит.Тип.СодержитТип(Тип) Тогда
			ИменаРеквизитов.Добавить(Реквизит.Имя);
		КонецЕсли;
	КонецЦикла;
	
	Возврат ИменаРеквизитов;
	
КонецФункции
Показать
user1880116; user2033930; +2 Ответить
7. user2033930 01.08.24 12:12 Сейчас в теме
(6) Ой, что это? Неужто и в самом деле - "три строчки в цикле"??? )))
10. Fox_65 1 02.08.24 15:45 Сейчас в теме
Можно и одной строчкой комп обрушить. Даже из 1С.
Но похоже Вам просто заняться нечем. И наверно пообщаться не с кем. Да и эго сверх меры.
Поставлю вас в игнор, все равно полезной информации от Вас ноль.
16. пользователь 02.08.24 16:43
Сообщение было скрыто модератором.
...
18. пользователь 02.08.24 17:02
Сообщение было скрыто модератором.
...
19. пользователь 02.08.24 17:09
Сообщение было скрыто модератором.
...
27. пользователь 02.08.24 18:28
Сообщение было скрыто модератором.
...
20. пользователь 02.08.24 17:11
Сообщение было скрыто модератором.
...
8. Fox_65 1 02.08.24 15:33 Сейчас в теме
(6) Похоже у вас немного другая версия БСП.
Функция ИменаРеквизитовПоТипу(Ссылка, Тип) Экспорт
	
	Результат = "";
	МетаданныеОбъекта = Ссылка.Метаданные();
	
	Для Каждого Реквизит Из МетаданныеОбъекта.Реквизиты Цикл
		Если Реквизит.Тип.СодержитТип(Тип) Тогда
			Результат = Результат + ?(ПустаяСтрока(Результат), "", ", ") + Реквизит.Имя;
		КонецЕсли;
	КонецЦикла;
	
	Возврат Результат;
КонецФункции
Показать
9. user2033930 02.08.24 15:43 Сейчас в теме
(8) И в чем алгоритмически разница принципиальная? Точно те же самые три строчки в цикле...
11. Fox_65 1 02.08.24 16:00 Сейчас в теме
(6) Это функция их БСП? Если она изменилась, то надо это предусмотреть, чтобы работало во всех версиях.
12. Zevzm 02.08.24 16:03 Сейчас в теме
13. Fox_65 1 02.08.24 16:08 Сейчас в теме
(12) Ну что же поставлю проверку на тип получаемых данных. Массив или строка. Спасибо, что предупредили.
14. user2033930 02.08.24 16:09 Сейчас в теме
(11)
надо это предусмотреть, чтобы работало во всех версиях.
Еще пара десяток лишних строчек, чтобы определить версию БСП, и в зависимости от этого:
а) по разному отправлять параметры в функцию БСП
б) по разному обрабатывать возвращаемый результат функции БСП

Вместо того, чтобы самостоятельно написать 3 строчки в цикле. Да даже уже скопировать, а не написать.

PS. А потом попадется конфигурация без БСП.
user1880116; +1 Ответить
15. Fox_65 1 02.08.24 16:36 Сейчас в теме
(14) В чем то вы правы. Но так не хочется изобретать велосипед. Кроме того использование конструкции Новый Массив здорово повышает время работы (проверено замером производительности).
Чтобы к вам прислушались не надо агрессии в форуме. У вас вежливо просят помощи, а вы про лень. Да пока мы с вами тут общались, я уже написал и отладил 500 строк кода.
17. Zevzm 02.08.24 16:44 Сейчас в теме
(15) Ну а что мешает сделать свой регистр где хранить ОбъектМетаданных и его реквизиты, содержащие тип Организация, дальше функцией проверять наличие объекта в РС, функцию запихнуть в кэшируемая модуль. После обновлений перезаполнять РС.
21. user1880116 02.08.24 17:14 Сейчас в теме
(17)
что мешает сделать свой регистр
Метаданные в расширениях, например.
23. Zevzm 02.08.24 17:18 Сейчас в теме
(21) Мы такой бякой не занимались )
22. Fox_65 1 02.08.24 17:17 Сейчас в теме
(17) Ну я же не конфигурацию пишу, а обработку. Не стоит выходить за рамки задачи.
24. user1880116 02.08.24 17:20 Сейчас в теме
(22)
а обработку
Ты своей обработкой никак не сможешь запретить владельцам информационных баз устанавливать себе расширения, которые расширяют метаданные.
25. Fox_65 1 02.08.24 17:27 Сейчас в теме
(24) Так регистры в обработке не фиксированы, а заполняются при открытии. Неужели метаданные из расширения не подхватятся?
26. user2033930 02.08.24 17:40 Сейчас в теме
3. Fox_65 1 31.07.24 19:07 Сейчас в теме
Опять Вы? Флудить не надоело?
4. Fox_65 1 31.07.24 19:11 Сейчас в теме
Тема закрыта. Нашел в БСП ИменаРеквизитовПоТипу. Вполне устраивает для выполнения моих задач.
Оставьте свое сообщение

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