Расширенная регистрация внешних печатных форм

12.11.09

Разработка - Инструментарий разработчика

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

Новое! Добавлена возможность выбора из имеющихся зарегистрированных печатных форм.
Новое! Добавлены настройки, ускоряющие ввод нескольких форм подряд. Достаточно давить на две кнопки "Заменить" и "Записать".

Скачать файлы

Наименование Файл Версия Размер
ЗаполнениеПринадлежностиВнешнихПечатныхФорм81 Вер.1.2
.epf 24,49Kb
129
.epf 24,49Kb 129 Скачать

Для тех, кто не раз регистрировал внешние печатные формы и хотел бы ускорить процесс, этот материал может оказаться интересным. Остальным рекомендую изучить «Внешние печатные формы в восьмерке» //infostart.ru/public/16952/

После того, как я придумал печатную форму с возможностью выбора лица для подписи //infostart.ru/public/60105, захотелось большего. Например, сделать одну форму для нескольких сходных по структуре документов. Сказано – сделано. Благо в печатной форме можно использовать «Дополнительные параметры». При регистрации достаточно для каждой строки таблицы «Принадлежность печатной формы» указать параметр, а в функции Печать() по этому параметру выбрать нужный алгоритм получения табличного документа.

	ИмяМакета = "";
Если ТипЗнч(ДополнительныеПараметры) = Тип("Структура") Тогда
ДополнительныеПараметры.Свойство("ПечатнаяФорма", ИмяМакета);
КонецЕсли;

Если ИмяМакета = "АктВал" Тогда
ТабДокумент = ПечатьАктаОбОказанииУслуг(Ложь);
ИначеЕсли ИмяМакета = "АктРуб" Тогда
ТабДокумент = ПечатьАктаОбОказанииУслуг(Истина);
Иначе
ТабДокумент = ПечатьАктаНашегоОбОказанииУслуг();
КонецЕсли;

Старая форма

Однако, если у вас не одна база и не одна печатная форма, то каждый раз добавлять строки в таблицу, прописывать Представление объекта, Заменяемую печатную форму и параметры покажется трудоемким и рутинным делом.

Но в 1С 8.1 УПП 1.2 есть возможность в печатной форме указать параметры авторегистрации! Увы, максимально, чего можно добиться, это автоматом добавлять в табличную часть уникальные объекты в первую колонку. К счастью, есть исходный код стандартной формы справочника «ВнешниеОбработки». Всё не так запущено. Добавить новые возможности авторегистрации не так уж и сложно. Удивительно, что это не сделали авторы конфигурации.

Поскольку речь идет не о полностью универсальной обработке для тиражирования в массы, то ограничимся минимумом. Условимся, что в макете «Параметры_Авторегистрации» регистрируемой печатной формы третья колонка – это «Заменяемая печатная форма», четвертая – «Дополнительные параметры». При этом параметры пишем в формате «имя параметра1=значение параметра1; имя параметра2=значение параметра2».

Макет авторегистрации

Сама обработка делается на раз-два. Создаем пустую обработку. Бросаем в формы форму «ФормаЭлемента» из справочника «ВнешниеОбработки» и … всё! Обработку можно использовать! Слава 1С! Правда новая форма будет делать то же самое, что и старая. Т.е. регистрировать внешние печатные формы «без наворотов».

Что ж, и нам есть работа. Правим процедуру «КоманднаяПанельФайлаИсточникаЗаменитьФайл». Добавим новые колонки:

ТаблицаПринадлежности = Новый ТаблицаЗначений;
ТаблицаПринадлежности.Колонки.Добавить("МетаданныеОбъекта");
ТаблицаПринадлежности.Колонки.Добавить("ТабличнаяЧастьИмя");
ТаблицаПринадлежности.Колонки.Добавить("ЗаменяемаяПечатнаяФорма");
ТаблицаПринадлежности.Колонки.Добавить("ДополнительныеПараметрыОбработки");

Выберем выберем значения из макета

ЗаменяемаяПечатнаяФорма           = Макет.Область(индекс, 3, индекс, 3).Текст;
ДополнительныеПараметрыОбработки = Макет.Область(индекс, 4, индекс, 4).Текст;

Дополним СтрокаТаблицыПринадлежности значениями Заменяемой печатной формы и Дополнительных параметров

СтрокаТаблицыПринадлежности.ЗаменяемаяПечатнаяФорма = ЗаменяемаяПечатнаяФорма;
СтрокаТаблицыПринадлежности.ДополнительныеПараметрыОбработки = ДополнительныеПараметрыОбработки;

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

//Позволяем добавлять одинаковые строки
//Если Принадлежность.НайтиСтроки(Новый Структура("МетаданныеОбъекта,ТабличнаяЧастьИмя", СтрокаТаблицыПринадлежности.МетаданныеОбъекта, СтрокаТаблицыПринадлежности.ТабличнаяЧастьИмя)).Количество() = 0 Тогда

Теперь самое интересное – заполнение «Дополнительных параметров». Выглядит страшно, заполняется просто.

//Добавляем колонки для заполнения заменяемой печатной формы и Дополнительных параметров
Попытка
НоваяСтрока.ЗаменяемаяПечатнаяФорма = СтрокаТаблицыПринадлежности.ЗаменяемаяПечатнаяФорма;

Если ЗначениеЗаполнено(СтрокаТаблицыПринадлежности.ДополнительныеПараметрыОбработки) Тогда
СтруктураПараметрыОбработки = Новый Структура;
ВремСтрока = СтрокаТаблицыПринадлежности.ДополнительныеПараметрыОбработки;
ВремСтрока = СтрЗаменить(ВремСтрока,";",Символы.ПС);
Для н=1 По СтрЧислоСтрок(ВремСтрока) Цикл
ВремПодстрока = СокрЛП(СтрПолучитьСтроку(ВремСтрока,н));
п = Найти(ВремПодстрока, "=");
Если (п > 2) и (п < СтрДлина(ВремПодстрока)) Тогда
СтруктураПараметрыОбработки.Вставить(СокрЛП(Сред(ВремПодстрока,1,п-1)), СокрЛП(Сред(ВремПодстрока,п+1)));
КонецЕсли;
КонецЦикла;
Если СтруктураПараметрыОбработки.Количество() > 0 Тогда
Попытка
ХранилищеПараметрыОбработки = Новый ХранилищеЗначения(СтруктураПараметрыОбработки);
НоваяСтрока.ДополнительныеПараметрыОбработки = ХранилищеПараметрыОбработки;
Исключение
//Предупреждение("" );
КонецПопытки;
КонецЕсли;
КонецЕсли;
Исключение
КонецПопытки;

Вот и все! Ах, да. В конце модуля надо добавить

ВидОбработки = Перечисления.ВидыДополнительныхВнешнихОбработок.ПечатнаяФорма

Теперь форма знает, что мы имеем дело не с какой-то обработкой, а с печатной формой.

Новая форма

Загружаем обработку «ЗаполнениеПринадлежностиВнешнихПечатныхФорм», из неё загружаем печатную форму с настроенными параметрами авторегистрации и получаем заполненную табличную часть с «Заменяемыми печатными формами» и «Дополнительными параметрами».

Конечно, здесь многое можно добавить. Например, разбирать параметры не только, как строковые значения, но и как числа, даты и более сложные типы. Флаг вам в руки!

Обновление от 09.11.09. Добавлена возможность не только создавать новые но и изменять старые зарегистрированные печатные формы. Теперь у поля "Код" появились кнопки "Выбор" и "Очистка". На выборе мы переходим в список печатных форм. На очистке возвращаемся к вводу новой печатной формы.

Процедура КодНачалоВыбора(Элемент, СтандартнаяОбработка)
//Выберем обработку из имеющихся для редактирования
СтандартнаяОбработка = Ложь;
ФормаВыбора = Справочники.ВнешниеОбработки.ПолучитьФормуВыбора("ФормаСписка",ЭтаФорма, ВидОбработки);
Результат = ФормаВыбора.ОткрытьМодально();
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
СправочникОбъект = Результат.ПолучитьОбъект();
КонецПроцедуры

Процедура КодОчистка(Элемент, СтандартнаяОбработка)
//Вернемся к вводу новой обработки
СтандартнаяОбработка = Ложь;
СправочникОбъект = Справочники.ВнешниеОбработки.СоздатьЭлемент();
ВидОбработки = Перечисления.ВидыДополнительныхВнешнихОбработок.ПечатнаяФорма;
Обновить();
КонецПроцедуры

 

Обновление от 09.11.12. Добавлены настройки, ускоряющие ввод нескольких форм подряд. Галка "Новый файл = новая запись" позволяет при загрузке нового файла обработки автоматически создавать новую запись.  Если отмечено "Чистить таблицу при смене файла", то при загрузке нового файла чистится таблица принадлежности,  актуально при погашнной "Новый файл = новая запись". "Авторегистрация" подавляет вопрос "Указанная внешняя печатная форма содержит параметры авторегистрации. Использовать их при регистрации?".

Чтобы не считать в уме, сколько же новых обработок было добавлено, на форме размещен счетчик "Добавленых новых", а в служебных сообщениях указывается что добавлено.

Следует учесть, что если во ВнешнихОбработках уже есть печатная форма с таким же именем файла, то она заменяется новой без создания новой записи. Счетчик меняться не будет.

Теперь всё ещё проще, достаточно давить на две кнопки " Заменить" и "Записать"!

Новая форма вер.1.2

 

См. также

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

Инструментарий разработчика Роли и права Запросы СКД Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

13000 руб.

02.09.2020    119918    656    389    

701

Infostart PrintWizard

Пакетная печать Печатные формы Инструментарий разработчика Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:Конвертация данных 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

Инструмент, позволяющий абсолютно по-новому взглянуть на процесс разработки печатных форм. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и "прозрачность" разработки, а также навести порядок в многообразии корпоративных печатных форм.

18000 руб.

06.10.2023    7008    20    6    

37

Infostart УДиФ: Управление данными и формами

Инструменты администратора БД Инструментарий разработчика Роли и права Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

10000 руб.

10.11.2023    3246    10    1    

31

SALE! 30%

PowerTools

Инструментарий разработчика Инструменты администратора БД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

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

3600 2520 руб.

14.01.2013    177341    1070    0    

846

Многопоточность. Универсальный «Менеджер потоков» 2.1

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Восстановление партий или взаиморасчетов, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

5000 руб.

07.02.2018    99204    239    97    

296

[ЕХТ] Фреймворк для Расширений 1С

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Платные (руб)

"Фреймворк для Расширений 1С" это универсальное и многофункциональное решение, упрощающее разработку и поддержку создаваемых Расширений. Поставляется в виде комплекта из нескольких Расширений с открытым исходным кодом. Работает в любых Конфигурациях в режиме Управляемого приложения с режимом совместимости 8.3.12 и выше без необходимости внесения изменений в Конфигурацию.

3000 руб.

27.08.2019    17914    6    8    

38

1С HTML Шаблоны / HTML Templates

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Быстрая и удобная обработка для работы с шаблонами HTML. Позволяет легко и быстро формировать код HTML.

2040 руб.

27.12.2017    27945    3    10    

14

Выполнение произвольного кода или запроса с параметрами через Web-сервис (замена COM-подключений)

Инструментарий разработчика Обмен между базами 1C Платформа 1С v8.3 Платные (руб)

В процессе работы в 1С часто возникает потребность получить данные из другой базы.  Обычно это делается через COM-соединение, и время выполнения запроса при этом оставляет желать лучшего. В данной публикации представлено универсальное решение, позволяющее практически моментально выполнить произвольный код или запрос с параметрами в другой информационной базе через Web-сервис.

2400 руб.

24.09.2019    23490    15    15    

31
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. natnat3 14.02.12 14:35 Сейчас в теме
Спасибо, только сегодня задумалась над этой темой, и бах, случайно поподается на глаза.
2. BoryaMbi 25 18.02.13 11:48 Сейчас в теме
Благодарю! СУПЕР! Отличная ИДЕЯ. Как все гениальное - простая и лаконичная.
Огромный комплимент автору за публикацию.
Малое количество плюсов говорит о том, что реально не много людей пишет внешних печатных форм и обработок, которым требуется расширенная регистрация.
3. BoryaMbi 25 18.02.13 11:50 Сейчас в теме
Хотел также спросить есть ли реализация автоматической регистрации печатной формы по шаблону при открытии формы обработки?
4. Alex Y 177 20.02.13 10:12 Сейчас в теме
(3) BoryaMbi, спасибо за отзыв. Не совсем понял вопрос. Если можно, опишите подробнее идею.
5. KeyMaster 89 26.08.13 16:25 Сейчас в теме
Здравствуйте.
Простым конвертирование для платформы 8.2 не удается воспользоваться обработкой на конфигурации БП. Есть у Вас вариант для платформы 8.2?
6. SlavaVNL 8 15.05.15 02:58 Сейчас в теме
Большое спасибо за идею. Но у Вас не описано как в параметры регистрации добавить отбор.
Вечер раздумий, и на свежую голову родилось. Основная загвоздка в добавлении отбора (там построитель с которым я не дружу).

		
Попытка 
	Если ЗначениеЗаполнено(СтрокаТаблицыПринадлежности.ПредставлениеОтбораПостроителя) Тогда
		СтруктураОтбор = Новый Структура;
		ВремСтрока = СтрокаТаблицыПринадлежности.ПредставлениеОтбораПостроителя;
		ВремСтрока = СтрЗаменить(ВремСтрока,";",Символы.ПС);
		
		Если Метаданные.Документы.Содержит(МетаданныеОбъекта) Тогда
			Типп = "Документ.";
		ИначеЕсли Метаданные.Справочники.Содержит(МетаданныеОбъекта) Тогда
			Типп = "Справочник.";
		КонецЕсли;
		
		ИмяТаблицы     = Типп + МетаданныеОбъекта.Имя;
		СинонимТаблицы = МетаданныеОбъекта.Синоним;
		
		ПостроительОтчета = УниверсальныеМеханизмы.ИнициализироватьПостроительДопПечатныхФорм(ИмяТаблицы, СинонимТаблицы);
		Отбор=ПостроительОтчета.Отбор;
		
		Для н=1 По СтрЧислоСтрок(ВремСтрока) Цикл
			ВремПодСтрока = СтрЗаменить(ВремСтрока,"~",Символы.ПС);
			
			ЛевоеЗначение=СокрЛП(СтрПолучитьСтроку(ВремПодСтрока,1));
			ВидСр=Вычислить("ВидСравнения."+СокрЛП(СтрПолучитьСтроку(ВремПодСтрока,2)));
			ПравоеЗначение=Вычислить(СокрЛП(СтрПолучитьСтроку(ВремПодСтрока,3)));
			
			Отбор.Добавить("Ссылка."+ЛевоеЗначение);
			Отбор["Ссылка"+ЛевоеЗначение].Использование=Истина;
			Отбор["Ссылка"+ЛевоеЗначение].Значение=ПравоеЗначение;
			Отбор["Ссылка"+ЛевоеЗначение].ВидСравнения=ВидСр;
		КонецЦикла;	
		
		НоваяСтрока.НастройкиПостроителяДляОтбора = Новый ХранилищеЗначения(ПостроительОтчета.ПолучитьНастройки(Истина, Ложь, Ложь, Ложь, Ложь));
		
		НоваяСтрока.ПредставлениеОтбораПостроителя = СтрЗаменить(СтрокаТаблицыПринадлежности.ПредставлениеОтбораПостроителя,"~","");
	КонецЕсли;
Исключение
	Сообщить("Ошибка в параметрах авторегистрации (отборы)");
КонецПопытки
Показать


В параметр авторегистрации пишем строку такого формата:
ВидОперации~Равно~Перечисления.ВидыОперацийСервисноеОбслуживание.Шиномонтаж


По коду будет видно, как там что.
Оставьте свое сообщение