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

12.11.09

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

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
ЗаполнениеПринадлежностиВнешнихПечатныхФорм81 Вер.1.2
.epf 24,49Kb
129
129 Скачать (1 SM) Купить за 1 850 руб.

Для тех, кто не раз регистрировал внешние печатные формы и хотел бы ускорить процесс, этот материал может оказаться интересным. Остальным рекомендую изучить «Внешние печатные формы в восьмерке» //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

 

См. также

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

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

10000 руб.

02.09.2020    152956    836    398    

846

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

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP и т.д.). Поддерживаются управляемые и обычные формы. Может выполнять свертку сразу нескольких баз данных и выполнять их автоматически без непосредственного участия пользователя.

8400 руб.

20.08.2024    4613    30    16    

43

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

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

9360 руб.

17.05.2024    21018    60    43    

109

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

OneRPA - платформа роботизации рутинных операций, в основе которой лежит платформа 1С:Предприятие. Данная платформа позволяет использовать современные технологии роботизации, не теряя при этом наработки, которые были созданы в ходе автоматизации. При этом платформа роботизации сохраняет все преимущества платформы 1С: гибкость, кроссплатформенность, мобильный и Web доступ, простоту расширения. Ну и конечно же роботы создаются и сопровождаются простыми специалистами 1С, при этом не обязательно программистами. Self hosted версия

300000 руб.

03.03.2021    14304    12    27    

36

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

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

10000 руб.

10.11.2023    9505    35    10    

58

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

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

18000 руб.

06.10.2023    14227    36    7    

69

SALE! %

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

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

4800 3840 руб.

14.01.2013    185944    1127    0    

900

Инструментарий разработчика Программист 8.3.14 1С:Конвертация данных Россия Платные (руб)

Расширение для конфигурации “Конвертация данных 3”. Добавляет подсветку синтаксиса, детальную контекстную подсказку, глобальный поиск по коду.

15000 руб.

07.10.2021    16882    6    32    

42
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
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 178 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)));
			
			Отбор.Добавить("Ссылка."+ЛевоеЗначение);
			Отбор["Ссылка"+ЛевоеЗначение].Использование=Истина;
			Отбор["Ссылка"+ЛевоеЗначение].Значение=ПравоеЗначение;
			Отбор["Ссылка"+ЛевоеЗначение].ВидСравнения=ВидСр;
		КонецЦикла;	
		
		НоваяСтрока.НастройкиПостроителяДляОтбора = Новый ХранилищеЗначения(ПостроительОтчета.ПолучитьНастройки(Истина, Ложь, Ложь, Ложь, Ложь));
		
		НоваяСтрока.ПредставлениеОтбораПостроителя = СтрЗаменить(СтрокаТаблицыПринадлежности.ПредставлениеОтбораПостроителя,"~","");
	КонецЕсли;
Исключение
	Сообщить("Ошибка в параметрах авторегистрации (отборы)");
КонецПопытки
Показать


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


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