Внешняя обработка-каталог для быстрого создания и организации полезных процедур (8.2)

Обработка позволяет объединить функционал нескольких обработок в одной, с удобной навигацией и автоматическим сохранением значений параметров.

Во время поддержки баз часто накапливается множество мелких обработок, иногда даже состоящих из одной процедуры. В итоге в папке с обработками наступает бардак: уже не помнишь какая актуальна, или что делает файл внешняяобработка1.epf. Не говоря уже о том, как «долго» создавать обработку которая получает данные хитро-вывернутым способом и выводит результат в табличную часть.

 
Представленная обработка обладает следующими преимуществами:
  • Все хранится в одном файле
  • Позволяет вывести любую таблицу на форму одной строчкой
  • Легко добавляются описания к процедурам, всегда можно вспомнить, что делает процедура
  • Выводит данные как в виде текстового документа, так и в виде таблицы
  • Можно вывести несколько таблиц рядом во вкладках для сравнения
  • Автоматически сохраняет значения параметров
  • Для каждой хранит процедуры свои параметры
 
Пример использования.

Допустим нам надо создать простенькую обработку, которая выбирает леммы(слова) из документа и выводит их в виде, удобном для загрузки во flashscard программу и одновременно выводит таблицу значений с частотой использования леммы.
 
При создании обычной обработки нам нужно создать обработку, создать реквизиты, придумать и создать таблицу с реквизитами, создать форму, красиво расположить реквизиты и наконец реализовать алгоритм. Причем подготовительная часть занимает даже больше времени на создание, чем кодинг. Работать мышкой удобно, но медленно. 
 
При использовании представленной обработки, единственное подготовительное действие — это создание новой команды, все остальное делается кодом, не отрываясь от клавиатуры. Приступим. 
 
1. Создадим копию обработки, откроем и поменяем ей название, чтобы не перепутать с другими наборами процедур. Я делаю это один раз для каждой базы, в последствии этого шага не будет.
 название
 
2. Открываем форму и добавляем новую команду формы. Название этой команды обязательно должно начинаться с «тмп_». В данном случае «тмп_ВыгрузкаСловДляЗаучивания». В синониме пишем то, что будет отображаться в списке на форме при выполнении обработки.
Создание команды
 
3. Создаем процедуру для команды. Добавляемые реквизиты, так же как и с командами, должны иметь префикс «тмп_»
 
&НаКлиенте
Процедура тмп_ВыгрузкаСловДляЗаучивания(Команда)
ОчиститьРеквизиты(); // Процедура обязательна для каждой пользовательской команды. Она удаляет реквизиты предыдущей команды, а также сохраняет введенные значения.

ДобавитьРеквизитНаФорму("тмп_Документ",Новый ОписаниеТипов("ДокументСсылка.СписокСлов"),Команда.Имя);
ДобавитьРеквизитНаФорму("тмп_ЯзыкИсточник",Новый ОписаниеТипов("ПеречислениеСсылка.Языки"),Команда.Имя);
ДобавитьРеквизитНаФорму("тмп_ЯзыкПеревод",Новый ОписаниеТипов("ПеречислениеСсылка.Языки"),Команда.Имя);

Комментарий="Процедура выводит список слов для загрузки во флешкарт."; // Комментарий чтобы помнить для чего процедура
КонецПроцедуры
 
4. Все реквизиты у нас есть, реализуем алгоритм. Алгоритм реализуется в процедуре, название которой совпадает с названием процедуры команды формы, но с добавлением в конце слова «Сервер»:
 
&НаСервере
Процедура тмп_ВыгрузкаСловДляЗаучиванияСервер()
Запрос = Новый Запрос;
     // Дальше идет запрос
     РезультатЗапроса = Запрос.Выполнить();
     Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
          // Процедура выводит строку в табличный докумет, который называется лог
          // его можно использовать как для отладки, так и для получения результата.
ЗаписатьВЛог(""+Выборка[Строка(ЭтаФорма["тмп_ЯзыкИсточник"])]+Символы.Таб+Выборка[Строка(ЭтаФорма["тмп_ЯзыкПеревод"])]);
КонецЦикла;
// С помощью этой процедуры мы можем вывести любую произвольную таблицу значений на форму
ЗагрузитьТаблицуНаФорму(РезультатЗапроса.Выгрузить(),"Таблица1","Список слов");

КонецПроцедуры
 
Результат работы созданной процедуры:
 
Результат работы
 
 Результат в таблице
 
Описание процедур, используемых в пользовательских разработках

ОчиститьРеквизиты(); 

-Обязательна для использования процедура! Указывается первой строчкой в процедуре вызываемой командой формы. Она сохраняет и убирает реквизиты предыдущей используемой процедуры.

ЗагрузитьТаблицуНаФорму(ТабРез,НаправлениеВывода=»Таблица1″,ЗаголовокСтраницы=Неопределено);

Загружает прозивольную таблицу на форму.
 
Параметры:
ТабРез — таблица значений, которую надо вывести на форму.
НаправлениеВывода — строка. Может принимать значения «Таблица1″,»Таблица2″,»Таблица3». Используется если нужен одновременный вывод таблиц на форму.
ЗаголовокСтраницы — строк. Заголовок, который будет отображаться на форме.

ЗаписатьВЛог(ДобавляемаяСтрока);
 
Выводит текст в текстовый документ на форме.

Дополнительные советы

— Удобно для каждой базы сделать отдельный набор процедур. Например у нас есть база test. Мы для нее создаем копию и называем test.epf и там храним все мелкие процедуры-обработки. 
— Если доработок много — можно разделить по функционалу, каждый файл отвечает за свой функционал.
— Для более быстрого создания реквизитов и обращения к ним можно создать шаблоны. 

Leave a Comment

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