Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Произвольное условие (запрос) для разных документов          
Constantus Подменю пользователя
сообщение 22.05.20, 12:06
Сообщение #1

Ветеран
*******
Группа: Пользователи
Сообщений: 895
Спасибо сказали: 7 раз
Рейтинг: 6

Приветствую, Форумчане!
1с8.3.12, УФ, самопис

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

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

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

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

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


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

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


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


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


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

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



denis84 Подменю пользователя
сообщение 22.05.20, 12:32
Сообщение #2

Завсегдатай
****
Группа: Пользователи
Сообщений: 101
Из: Украина
Спасибо сказали: 28 раз
Рейтинг: 28

Constantus @ Сегодня, 13:06 * ,
Добрый день! Возможно такой пример Вас натолкнет на правильный путь:
Запрос = Новый Запрос; 
    Для каждого Объектконф Из Метаданные.Документы Цикл
                ТекстЗапрос =   "ВЫБРАТЬ
                        |   Док.Ссылка
                        |ИЗ
                        |   Документ." + Объектконф.Имя + " КАК Док";  
        
        Запрос.Текст = ТекстЗапрос;    
        РезультатЗапроса = Запрос.Выполнить().Выбрать();
        Пока РезультатЗапроса.Следующий() цикл
            
             Сообщить(РезультатЗапроса.Ссылка);
        КонецЦикла;

Constantus Подменю пользователя
сообщение 22.05.20, 13:17
Сообщение #3

Ветеран
*******
Группа: Пользователи
Сообщений: 895
Спасибо сказали: 7 раз
Рейтинг: 6

denis84 @ Сегодня, 16:32 * ,
Да, по такому пути пытаюсь идти

Vofka Подменю пользователя
сообщение 22.05.20, 13:19
Сообщение #4

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13268
Из: Киев
Спасибо сказали: 4062 раз
Рейтинг: 3202.8

Constantus, не очень понятно почему, если это текстовое поле, нельзя написать

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

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

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

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


?

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 06.06.20, 7:16
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!