Массовая обработка объектов, заданных текстовыми списками

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

Поэтому приходится дописывать, если это нужно.

Привожу пример, как я доработал универсальный подбор и обработку объектов.

 

Добавление списка справочников

Я добавил кнопку «Установить значение отбора», которая добавляет в текущую строку отбора список наименований:

 

После загрузки список выглядит так:

 

Код кнопки:

Процедура КоманднаяПанельПостроительОтчетаУстановитьЗначение(Кнопка)

       М = ВосстановитьЗначение("Список");

       С = Новый СписокЗначений();

       С.ЗагрузитьЗначения(М);

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

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

 

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

 

Сам список я формирую с помощью другой своей обработки – превращение таблицы в ссылки:

 

Добавление списка документов в обработку подбора и обработки

Также я добавил кнопку «Ввести список документов», если хочу обработать список документов разного типа:

 

Например, у меня есть такой список документов:

 

Я копирую его в виде текста в буфер обмена, нажимаю кнопку «Ввести список документов» и копирую туда этот список:

Нажимаю «ОК» и документы добавляются в список. При этом о не найденных документах будет выдано сообщение:

 

Чтобы обработать документы, нужно в поле «Объект поиска» выбрать любой вид документа и дальше выполнять обработку произвольного алгоритма, например, такую:

Код кнопки:

Процедура КоманднаяПанельПостроительОтчетаВвеситСписокДокументов(Кнопка)

       ТекстСписок = "";

       Если НЕ ВвестиЗначение(ТекстСписок, "Введите список документов - каждый документ с новой строки") Тогда

             Возврат;

       КонецЕсли;

       ТекстСписок = СтрЗаменить(ТекстСписок, Символ(182), Символы.ПС);

      

       НайденныеОбъекты = Новый ТаблицаЗначений();

       НайденныеОбъекты.Колонки.Добавить("Объект");

 

       Т = Новый ТекстовыйДокумент();

       Т.УстановитьТекст(ТекстСписок);

       Для Инд = 1 По Т.КоличествоСтрок() Цикл

             ПредставлениеДокумента = СокрЛП(Т.ПолучитьСтроку(Инд));

             Если ПредставлениеДокумента = "" Тогда

                    Продолжить;

             КонецЕсли;

             ТекСсылка = ВернутьСсылкуДокумента(ПредставлениеДокумента);

             Если НЕ ЗначениеЗаполнено(ТекСсылка) Тогда

                    Сообщить("Не найдена ссылка" + ПредставлениеДокумента);

                    Продолжить;

             КонецЕсли;

             НСтр = НайденныеОбъекты.Добавить();

             НСтр.Объект  = ТекСсылка;

       КонецЦикла;

      

 

       ЭлементыФормы.НайденныеОбъекты.СоздатьКолонки();

       ЭлементыФормы.Панель.ТекущаяСтраница = ЭлементыФормы.Панель.Страницы.Получить(1);

      

       МассивТипов  = Новый Массив;

       МассивТипов.Добавить(Тип("Булево"));

 

       НайденныеОбъекты.Колонки.Добавить("Пометка", Новый ОписаниеТипов(МассивТипов));

       ЭлементыФормы.НайденныеОбъекты.Колонки["Объект"].ДанныеФлажка = "Пометка";

       ЭлементыФормы.НайденныеОбъекты.Колонки["Объект"].РежимРедактирования = РежимРедактированияКолонки.Непосредственно;

 

       Для каждого Строка из НайденныеОбъекты Цикл

             Строка.Пометка = Истина;

       КонецЦикла;

      

       ЭлементыФормы.Панель.Страницы.Обработки.Доступность = истина;

 

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

 

Состав пакета

В пакет для скачивания выкладываю модифицированную типовую обработку подбора и обработки объектов и обработку по превращению таблицы в ссылки.

Замечания

Также можно доработать и обработку «Консоль запросов», чтобы добавлять во временную таблицу выбранные объекты, затем соединять их с нужными и выполнять любой программный код. Оставляю это на вашу реализацию.

 

 

Скачать