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