Замучали пользователи тем, что частенько им необходимо в отборе использовать большущий список данных (например, список контрагентов). Такой список может быть очень большим и забивать его очень долго. Сохранение настроек не всегда подходит, т.к. данные могут менятся. Поэтому после небольших размышлений пришла в голову идея написать данную обработку.
Т.к. в большинстве случаев (у нас) используются отчеты на базе "Универсального отчета", то данная возможность по умолчанию используется именно в нем, чтобы можно ее было использовать в любом таком отчете. Но, заглядывая вперед, было предусмотрено, что это может потребоваться не только в отчетах на базе "Универсального отчета". Поэтому это можно прикрутить к любому отчету (при желании).
Как работает данная штука:
В форму передается построитель отчета. При открытии проверяется, какие поля есть в отборе. Проверяются уже добавленные, а не все возможные. Если поле в отборе не указано, то оно и не отработается. Проверка заключается в следующем: можно использовать ссылки на элементы справочника, а также другие значения (кроме ссылок на документы). Например, можно использовать ссылку на элементы справочника номенклатуры, можно использовать реквизит "Наименование" и т.п. В случае, если поле отбора является ссылкой на элемент справочника, то поиск значений ведется по коду. Во всех остальных случая в список добавляется значение из файла.
Для заполнения необходимо указать:
- какое поле отбора будет заполняться
- какой вид поля будет использоваться (в случае составных типов полей в поле отбора)
- при помощи какого приложения будет происходить загрузка (можно грузить из mxl или из xls)
- имя файла, из которого будет вестить загрузка
- начальную строку, с которой будет происходить чтение данных
- номер колонки, из которой будут браться данные
Для предварительного просмотра списка можно использовать кнопку "Загрузить из файла (предварительный просмотр результата)"
Для загрузки списка в поле отбора необходимо нажать кнопку "Занести значения"
Для встраивания в конфигурацию необходимо:
- открыть прилагаемую обработку
- скопировать форму "ФормаЗагрузкиИзФайлаДляОтбораВОтчетах" в общие формы (чтобы можно было использовать не только в "Универсальном отчете")
Чтобы можно было использовать данную возможность в "Универсальном отчете" (и в отчетах, построенных на его базе), нужно:
- открыть форму "ФормаНастройка" универсального отчета
- в процедуре "ПриОткрытии" в конце вставить следующий код:
//Для панели 1 НоваяКнопка = ЭлементыФормы.ОсновныеДействияФормы.Кнопки.Вставить(0,"НовыйРазделитель", ТипКнопкиКоманднойПанели.Разделитель); НоваяКнопка = ЭлементыФормы.ОсновныеДействияФормы.Кнопки.Вставить(0,"ДействиеЗагрузитьИзФайла", ТипКнопкиКоманднойПанели.Действие, "Загрузка значений", Новый Действие("ОсновныеДействияФормыДействиеЗагрузитьИзФайла")); НоваяКнопка.Отображение = ОтображениеКнопкиКоманднойПанели.Авто; НоваяКнопка.Картинка = БиблиотекаКартинок.ДополнительныеПоляОтчета; НоваяКнопка.Подсказка = "Загрузка значений из файла для отбора в отчетах"; НоваяКнопка.Пояснение = "Загрузка значений из файла для отбора в отчетах"; //Для панели 2 НоваяКнопка = ЭлементыФормы.ОсновныеДействияФормы1.Кнопки.Вставить(0,"НовыйРазделитель", ТипКнопкиКоманднойПанели.Разделитель); НоваяКнопка = ЭлементыФормы.ОсновныеДействияФормы1.Кнопки.Вставить(0,"ДействиеЗагрузитьИзФайла", ТипКнопкиКоманднойПанели.Действие, "Загрузка значений", Новый Действие("ОсновныеДействияФормыДействиеЗагрузитьИзФайла")); НоваяКнопка.Отображение = ОтображениеКнопкиКоманднойПанели.Авто; НоваяКнопка.Картинка = БиблиотекаКартинок.ДополнительныеПоляОтчета; НоваяКнопка.Подсказка = "Загрузка значений из файла для отбора в отчетах"; НоваяКнопка.Пояснение = "Загрузка значений из файла для отбора в отчетах"; //Для панели 3 НоваяКнопка = ЭлементыФормы.ОсновныеДействияФормы2.Кнопки.Вставить(0,"НовыйРазделитель", ТипКнопкиКоманднойПанели.Разделитель); НоваяКнопка = ЭлементыФормы.ОсновныеДействияФормы2.Кнопки.Вставить(0,"ДействиеЗагрузитьИзФайла", ТипКнопкиКоманднойПанели.Действие, "Загрузка значений", Новый Действие("ОсновныеДействияФормыДействиеЗагрузитьИзФайла")); НоваяКнопка.Отображение = ОтображениеКнопкиКоманднойПанели.Авто; НоваяКнопка.Картинка = БиблиотекаКартинок.ДополнительныеПоляОтчета; НоваяКнопка.Подсказка = "Загрузка значений из файла для отбора в отчетах"; НоваяКнопка.Пояснение = "Загрузка значений из файла для отбора в отчетах";
- добавить процедуру "ОсновныеДействияФормыДействиеЗагрузитьИзФайла"
Процедура ОсновныеДействияФормыДействиеЗагрузитьИзФайла(Кнопка) ФормаЗагрузки = ПолучитьОбщуюФорму("ФормаЗагрузкиИзФайлаДляОтбораВОтчетах"); ФормаЗагрузки.ПостроительОтчета = ЭтотОбъект.ПостроительОтчета; ФормаЗагрузки.ОткрытьМодально(); КонецПроцедуры
Код открыт, так что можете допилить под себя
За код сильно не пинайте. Все делалось в ходе экспериментов.