Внимание! Тема закрыта. Добавлять сообщения в закрытую тему запрещено.
Господа, знатоки БСП прошу помощи в таком вопросе. Пишу сейчас обработку для ут 10.3. Нужна четкая разбивка по организациям. В регистрах накопления, регистрах сведений. Хочется сделать разбивку универсальной. Знаю, что есть БСП функция, которая определяет наличие реквизита по имени. Но именами даже стандартная 1с пренебрегает, к примеру РегистрСведений КонтактнаяИнформация Организация находится в измерении Объект. Так что искать по имени гиблое дело. Выход - искать по типу.
Да и в некоторых Регистрах Накопления вместо Организации применяется измерение ДоговорыКонтрагентов, где в реквизитах присутствует организация.
А вот теперь собственно вопрос:
Нет ли в БСП функции, которая бы не по названию реквизита, а по типу значения определяла бы есть в метаданных реквизит с данным типом или нет. Желательно конечно, что бы возвращала в каком реквизите, но можно и истина-ложь. Не хочется изобретать велосипед, если это уже есть.
Да и в некоторых Регистрах Накопления вместо Организации применяется измерение ДоговорыКонтрагентов, где в реквизитах присутствует организация.
А вот теперь собственно вопрос:
Нет ли в БСП функции, которая бы не по названию реквизита, а по типу значения определяла бы есть в метаданных реквизит с данным типом или нет. Желательно конечно, что бы возвращала в каком реквизите, но можно и истина-ложь. Не хочется изобретать велосипед, если это уже есть.
По теме из базы знаний
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(5) Есть сомнения и в вашем понимании:
Функция ИменаРеквизитовПоТипу(МетаданныеОбъекта, Тип)
ИменаРеквизитов = Новый Массив; // Массив из Строка
Для Каждого Реквизит Из МетаданныеОбъекта.Реквизиты Цикл
Если Реквизит.Тип.СодержитТип(Тип) Тогда
ИменаРеквизитов.Добавить(Реквизит.Имя);
КонецЕсли;
КонецЦикла;
Возврат ИменаРеквизитов;
КонецФункции
Показать
(6) Похоже у вас немного другая версия БСП.
Функция ИменаРеквизитовПоТипу(Ссылка, Тип) Экспорт
Результат = "";
МетаданныеОбъекта = Ссылка.Метаданные();
Для Каждого Реквизит Из МетаданныеОбъекта.Реквизиты Цикл
Если Реквизит.Тип.СодержитТип(Тип) Тогда
Результат = Результат + ?(ПустаяСтрока(Результат), "", ", ") + Реквизит.Имя;
КонецЕсли;
КонецЦикла;
Возврат Результат;
КонецФункции
Показать
(11)
а) по разному отправлять параметры в функцию БСП
б) по разному обрабатывать возвращаемый результат функции БСП
Вместо того, чтобы самостоятельно написать 3 строчки в цикле. Да даже уже скопировать, а не написать.
PS. А потом попадется конфигурация без БСП.
надо это предусмотреть, чтобы работало во всех версиях.
Еще пара десяток лишних строчек, чтобы определить версию БСП, и в зависимости от этого:
а) по разному отправлять параметры в функцию БСП
б) по разному обрабатывать возвращаемый результат функции БСП
Вместо того, чтобы самостоятельно написать 3 строчки в цикле. Да даже уже скопировать, а не написать.
PS. А потом попадется конфигурация без БСП.
(14) В чем то вы правы. Но так не хочется изобретать велосипед. Кроме того использование конструкции Новый Массив здорово повышает время работы (проверено замером производительности).
Чтобы к вам прислушались не надо агрессии в форуме. У вас вежливо просят помощи, а вы про лень. Да пока мы с вами тут общались, я уже написал и отладил 500 строк кода.
Чтобы к вам прислушались не надо агрессии в форуме. У вас вежливо просят помощи, а вы про лень. Да пока мы с вами тут общались, я уже написал и отладил 500 строк кода.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот