Удобный отбор в обработках и отчетах за 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 не будет опубликован. Обязательные поля помечены *