Удобный отбор в обработках и отчетах за 2 минуты.

Быстрая доработка отчетов и обработок (как универсальных, с диска ИТС, так и своих).

Очень часто, в универсальных обработках приходится делать отборы довольно c внушительным списком (будь то групповая обработка справочников и документов или универсальная выгрузка загрузка данных XML), что довольно утомительно.

Благодаря небольшой доработке можно упростить эту процедуру (если вы конечно мало-мальски владеете запросами) и не писать кучу маленьких обработок для каждого конкретного случая. Идею почерпнул из обработки регистрации изменений для обмена.

Как это работает?

Например: в групповой обработке справочников и документов нам необходимо обработать только тех контрагентов, по которым были продажи за последний месяц. 

В отборе устанавливается отбор по интересующему вас полю, делаете его активным (пометив эту строку) и нажимается кнопка «Получить запросом». Открывается окно куда можно конструктором или вручную написать текст запроса к регистру продаж, использововав, если необходимо, параметры. Выполнив запрос, по нажатию кнопки «Ок» отобранные элементы попадают в отбор. В запросе можеть быть  сколько угодно полей, главное чтоб присутсвовало поле с наименованием по которому собственно и делается отбор.

Как это сделать? (на примере всё той же групповой обработки справочников и документов)

В форме, в командной панели для отбора создаем кнопку, в тексте обработчика которой пишется лишь одна строка:

ПолучитьЗапросом(ЭлементыФормы.ТабличноеПолеОтбор);

Так же в модуле формы размещаем и саму процедуру, которую вызываем:

Процедура ПолучитьЗапросом(ЭлементФормыОтбор)

Если ЭлементФормыОтбор.ТекущаяСтрока = Неопределено Или Не ЗначениеЗаполнено(ЭлементФормыОтбор.ТекущаяСтрока.Представление) Тогда

Сообщить("Выделите строку нужного отбора!");

Возврат;

КонецЕсли;

// открываем форму выбора данных из запроса

ФормаЗапроса = ПолучитьФорму("ит_ФормаРезультатаЗапроса");

ФормаЗапроса.Представление = ЭлементФормыОтбор.ТекущаяСтрока.Представление;

РезультатОткрытияМодально = ФормаЗапроса.ОткрытьМодально();

Если НЕ (РезультатОткрытияМодально = Истина) Тогда

Возврат;

КонецЕсли;

СписокЗначений = Новый СписокЗначений; СписокЗначений.ЗагрузитьЗначения(ФормаЗапроса.РезультатТаблица.ВыгрузитьКолонку(ЭлементФормыОтбор.ТекущаяСтрока.Представление)); ЭлементФормыОтбор.ТекущаяСтрока.ВидСравнения = ВидСравнения.ВСписке; ЭлементФормыОтбор.ТекущаяСтрока.Значение = СписокЗначений;

КонецПроцедуры

и добавляем в обработку две формы: ит_ФормаРезультатаЗапроса и ит_ФормаПараметров

 Процедура и эти две формы находятся в прикрепленной обработке-шаблоне к данной публикации.

Аналогичным образом дорабатывается обработка ВыгрузкаЗагрузкаДанныхXML, и другие обработки где используется отбор построителя. 

6 Comments

  1. SANILLA

    Как раз понадобилось в отчёте сделать отбор интерактивно для пользователя, чтобы он мог выбрать необходимые элементы справочника для фильтрации результата запроса. Сейчас буду пробовать данный механизм, может что получится, потом отпишусь.

    Reply ↓
  2. AlexKoso

    суровые у тебя пользователи — запросы пишут 🙂

    Reply ↓
  3. AlexO

    (3) реальная путная вещь, как всегда, не оцененная на ис, в отличие от поделок типа Перенос идентичных.

    Reply ↓
  4. olezhe

    Автору:

    Здравствуйте. Оплатил, скачал, обработка работает но мою задачу не выполняет.

    Задача: Перенести справочник Номенклатура со свойствами и штрих-кодами в идентичную базу с отбором по списку номенклатуры. Допустим, по двум позициям, для начала.

    Проблема: Номенклатура выгружается в ХМL безо всяких свойств. Если поставить галку на Рег.Сведений ЗначенияСвойствОбъектов, отключается отбор и валится всё, в том числе всякое ненужное старьё из номенклатуры. Подозреваю, что и свойств там более, чем нужно.

    Вопрос: Как выгрузить только связанные свойства? штрих-коды? единицы измерения? что там ещё в номенклатуре по ссылкам.

    Reply ↓
  5. olezhe

    (4) olezhe, Извините, ошибся окошком.

    Reply ↓
  6. olezhe

    Мега-полезный совет. Отборы встраиваются теперь за 1 минуту в любую обработку!

    Reply ↓

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *