Версия для печати темы (https://pro1c.org.ua/index.php?s=7e82d48c965cc0e5890db83a8c6f486f&showtopic=67072)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование обычных форм 1С 8.2 и не интерфейсной логики _ Нетиповой отбор в форме списка документа

Автор: kserg2012 02.09.22, 12:22

Платформа 8.3.18
Управление торговлей для Украины", редакция 2.3.30.1 (обычные формы)

Есть форма списка документа ЗаказПокупателя.
На форме была добавлена новая колонка "Процент оплаты по заказу", которая заполняется по отдельному запросу в Процедура СписокПриПолученииДанных

Возникла необходимость сделать полноценный отбор по данной колонке, и как то не получается придумать что-то "дельное"...

Подскажите какие возможны варианты реализации такого отбора?
(с учётом того, что пользователь может задавать и другие условия через типовой механизм отборов формы)

Спасибо

Автор: alex1c 02.09.22, 14:48

kserg2012 @ Сегодня, 12:22 * ,

Ось приклад, у вашому випадку запитом отримуєте список документів і по ньому робите відбір.

Процедура ОбработатьУстановитьОтборПоНаличиюРН(Элемент)
    
    Для Каждого ЭлементКнопка Из ЭлементыФормы.ДействияФормы.Кнопки.ОтборПоНаличиюОргинала.Кнопки Цикл
        Если Элемент.Имя = ЭлементКнопка.Имя Тогда
            ЭлементКнопка.Пометка = Истина;
        Иначе
            ЭлементКнопка.Пометка = Ложь;
        КонецЕсли;
    КонецЦикла;
    
    НашОтбор = ЭтаФорма.Отбор.Ссылка;
    Если Элемент.Имя = "ВсеДокументы" Тогда
        НашОтбор.Использование = Ложь;
    Иначе
        Запрос = Новый Запрос;
        Запрос.Текст = ПолучитьТекстЗапроса(Элемент.Имя);
        СписокДокументов = Новый СписокЗначений;
        СписокДокументов.ЗагрузитьЗначения(Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка"));        
        
        НашОтбор.ВидСравнения = ВидСравнения.ВСписке;
        НашОтбор.Значение = СписокДокументов;
        НашОтбор.Использование = Истина;
    КонецЕсли;
    
КонецПроцедуры

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

Автор: Moloko 02.09.22, 18:12

kserg2012 @ Сегодня, 12:22 * ,
Отборы в стандартных списках в обычных формах строятся только по реквизитам, а ваша расчетная колонка им не является. Такие вопросы решаются путем написания отдельной обработки, в которой будет заполняться таблица документов согласно ваших условий.

Автор: alex1c 04.09.22, 19:36

Moloko @ 02.09.22, 18:12 * ,
Ну я це і мав на увазі. Запитом вибираєте по умові список документів і по ньому відбираєте.

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua