0
karpik666
27.08.14
✎
07:23
|
Как определить доступен ли вложенный отбор в отчете? К примеру, если использовать:
лДоступныеПоля = лОтборПостроителя.ПолучитьДоступныеПоля();
лДоступныеПоля.Найти("Подразделение");
То Возвращается неопределено, когда действительно этого отбора нет, но мне нужно узнать про отбор такого вида "Контрагент.МенеджерыПокупателя", если писать в таком виде
лДоступныеПоля.Найти("Контрагент.МенеджерыПокупателя")
то возвращается неопределено всегда, есть он или нет.
Если смотреть по отладчику, то нужное мне поле вообще находится по пути "Контрагент.Поля.МенеджерыПокупателя".
Очень нужна помощь по данному вопросу.
|
|
3
karpik666
27.08.14
✎
08:22
|
Кому интересно, добавил собственный велосипед в конфигурацию с блэк-джеком и ***, а именно функцию:
Если НЕ ПолеДоступноДляОтбора (лДоступныеПоля, "Контрагент.МенеджерыПокупателя") Тогда
Функция ПолеДоступноДляОтбора (лДоступныеПоля, Поле)
Если ПустаяСтрока(СокрЛП(Поле)) Тогда
Возврат Истина;
КонецЕсли;
Если Найти(Поле, ".") <> 0 Тогда
лПозицияТочки = Найти(Поле, ".");
лПолеПоиска = Лев(Поле, лПозицияТочки - 1);
Иначе
лПозицияТочки = СтрДлина(Поле);
лПолеПоиска = Поле;
КонецЕсли;
Если лДоступныеПоля.Найти(лПолеПоиска) <> Неопределено Тогда
Возврат ПолеДоступноДляОтбора(лДоступныеПоля [лПолеПоиска].Поля , Прав(Поле,СтрДлина(Поле) - лПозицияТочки));
Иначе
Возврат Ложь
КонецЕсли;
КонецФункции
Обрабатывает любое количество вложений в отбор
|
|