роизвольное условие (запрос) для разных документов

1. Arkadag 22.05.20 13:12 Сейчас в теме
Приветствую, Форумчане!
1с8.3.12, УФ, самопис

В одном из документов есть вкладка с произвольным условием запрос в текстовом формате (упрощенный пример) Условие_ПроизвольноеУсловие:

Контекст.Подходит = Ложь;
Запрос = Новый Запрос;

Запрос.Текст =
"ВЫБРАТЬ
|    ЗаказМодельИКомплектация.Номенклатура КАК Номенклатура
|ИЗ
|    Документ.Заказ.МодельИКомплектация КАК ЗаказМодельИКомплектация
|ГДЕ
|    ЗаказМодельИКомплектация.Ссылка = &Ссылка";

Запрос.УстановитьПараметр("Ссылка", Контекст.Объект);

Если НЕ Запрос.Выполнить().Пустой() Тогда
    Контекст.Подходит = Истина;
КонецЕсли;
Показать



Запускается это в одном из модулей

    Контекст = Новый Структура("Объект, Акция, Подходит", Объект, Акция, Ложь);
        Попытка
            Выполнить(Акция.Условие_ПроизвольноеУсловие);
        Исключение
            ОписаниеОшибки = ОписаниеОшибки();
        КонецПопытки;



Всё это работает, но вот пришла беда.
Если посмотреть код, то это произвольное условие срабатывает жестко только на один тип документов "Заказ"
Документ.ЗАКАЗ.МодельИКомплектация КАК ЗаказМодельИКомплектация


Теперь решили эту гадость распространить и на другой документ "Консультации", т.е. каким-то волшебным способом этот текст произвольного условия должен превратиться в
Документ.КОНСУЛЬТАЦИИ.МодельИКомплектация КАК ЗаказМодельИКомплектация


Сможете посоветовать как можно программно это изменить?
Типа

Контекст = Новый Структура("Объект, Акция, Подходит, ДокументПоиска", Объект, Акция, Ложь, "Заказ"/"Консультации");
Документ.[ДокументПоиска].МодельИКомплектация КАК ЗаказМодельИКомплектация
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. SeiOkami 3448 22.05.20 13:22 Сейчас в теме
Можно запрос писать в таком формате

Запрос.Текст =
"ВЫБРАТЬ
|    МодельИКомплектация.Номенклатура КАК Номенклатура
|ИЗ
|    &ПолноеИмяИсточника КАК МодельИКомплектация
|ГДЕ
|    МодельИКомплектация.Ссылка = &Ссылка";


А в коде делать

ПолноеИмяИсточника = Метаданные.Документы[МойДокумент].ТабличныеЧасти.МодельИКомплектация.ПолноеИмя();
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ПолноеИмяИсточника", ПолноеИмяИсточника);


Таким образом конструктор запрос откроет. И ТЧ можно подкидывать любую.

Есть и другие методы, нужно по ситуации смотреть
alex-l19041; oleg-x; +2 Ответить
Оставьте свое сообщение

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