Мой Best Practics. Красивый код в печатных формах

Публикация № 1261956

Разработка - Печать - Универсальные печатные формы

Внешняя печатная форма Красивый код шаблон

Мой Best Practics. Красивый код в печатных формах. Формирование печатных форм.

В процессе анализа своего старого кода иногда удивляешься: кто это написал? ну кто так пишет? Всегда хочется это все переделать и оптимизировать. 

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

Попытаюсь выложить здесь свой "дзен". Хочу поговорить про красоту кода во внешних печатных формах для библиотеки стандартных подсистем.

Версия БСП особо роли не играет. Стандарты написания внешних печатных форм 1С не меняет уже очень давно. Мне кажется еще с 8.0, независимо от типов форм: обычные или управляемые.

Итак, поехали.

Макет печатной формы.

Для себя я выработал несколько правил:

1. Если в печатной форме доступен только один макет - называю его так же как и имя внешней обработки.

2. В общем случае, когда в макете выводится некоторая коллекция - всегда определяю минимум 4 именованные области строк:

  • Заголовок - Область выше таблицы
  • Шапка - Шапка таблицы. Всегда выделяю отдельной областью. В случае чего позволит повторять шапку на каждой странице 
  • Строка - Строка коллекции
  • Подвал - Строки ниже таблицы

Если в таблице присутствуют итоги - добавляю 5ю область Итог. Имена областей практически во всех печатных формах одинаковые.

3. Имена полей всегда стараюсь писать без сокращений. К примеру, НоменклатураПоставщика вместо НомПост. Допускаю сокращение, если невозможно назвать поле без сокращений короче 30-35 символов.

4. Если заполнение ячейки = Параметр, то для полей, в которых должна выводиться дата желательно всегда задать формат значения в свойстве ячейки. В противном случае, а так же для полей с заполнением = шаблон формат даты придется задавать в коде.

Формирование табличного документа

Чаще всего формирование печатной формы выполняю в функции с именем СформироватьПечатнуюФорму, хотя никто не мешает назвать ее как угодно. Для унификации принял для себя такое правило.

В минимальном варианте в качестве параметров этой функции достаточно одного: МассивОбъектов. В своей конфигурации я много встречал кода других программистов, которые в качестве параметра этой функции передавали только одну ссылку. Я считаю это грубой ошибкой, поэтому хочу отдельно обратить на это внимание.

Функционально можно разделить функцию СформироватьПечатнуюФорму на несколько областей:

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

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

ТабличныйДокумент = Новый ТабличныйДокумент;

Макет = ПолучитьМакет("Макет");

ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");

ОбластьШапка = Макет.ПолучитьОбласть("Шапка");

ОбластьСтрока = Макет.ПолучитьОбласть("Строка");

ОбластьИтог = Макет.ПолучитьОбласть("Итог");

ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");

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

Запрос.

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

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

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

Всегда делаю как минимум один итог в запросе - по ссылке. Это нужно для формирования табличного документа из формы списка, когда выделено несколько объектов.

Заполнение табличного документа.

Запрос построен, теперь надо вывести данные в табличный документ.

Всегда использую замечательную команду ЗаполнитьЗначенияСвойств. Обращение к параметрам макета напрямую - только в исключительных случаях. Это позволит в случае чего быстрее вносить изменения в печатную форму. К примеру, в случае добавления новой колонки в отчете - достаточно просто добавить поле в запрос и в макет с таким же именем. Заполнение в этом случае дорабатывать не надо.

В минимальном варианте код обхода результата запроса примерно такой:

ВыборкаСсылка = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаСсылка.Следующий() Цикл
 ЗаполнитьЗначенияСвойств(ОбластьЗаголовок.Параметры, ВыборкаСсылка);
 ТабличныйДокумент.Вывести(ОбластьЗаголовок);
 ТабличныйДокумент.Вывести(ОбластьШапка);
 Выборка = ВыборкаСсылка.Выбрать();
 Пока Выборка.Следующий() Цикл
  ЗаполнитьЗначенияСвойств(ОбластьСтрока.Параметры, Выборка);
  ТабличныйДокумент.Вывести(ОбластьСтрока);
 КонецЦикла;
 ЗаполнитьЗначенияСвойств(ОбластьИтог.Параметры, ВыборкаСсылка);
 ТабличныйДокумент.Вывести(ОбластьИтог);
 ЗаполнитьЗначенияСвойств(ОбластьПодвал.Параметры, ВыборкаСсылка);
 ТабличныйДокумент.Вывести(ОбластьПодвал);
 ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЦикла;

// Ну и в конце формирования обязательно задаем параметры страницы
ТабличныйДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
ТабличныйДокумент.Автомасштаб = Истина;

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

Отладка.

Ну и в завершение пару слов про отладочную форму обработки.

Я использую следующие реквизиты формы:

  • Ссылка - ссылка на объект, для которого формируется печатная форма
  • ТабличныйДокумент - для просмотра сформированной формы
  • Команда формы Сформировать

На форму вывожу Ссылку и ТабличныйДокумент. Кнопку Сформировать в командную панель.

У формы устанавливаю свойство АвтоматическоеСохранениеДанныхВНастройках = Использовать, 

у кнопки "Сформировать" устанавливаю галочку КнопкаПоУмолчанию

У реквизита "ссылка" ставлю галочку "Сохранение"

Ну и код формы всегда одинаков:


&НаСервере
Процедура СформироватьНаСервере()
	МассивОбъектов = Новый Массив;
	МассивОбъектов.Добавить(Ссылка);
	ОбработкаОбъект = РеквизитФормыВЗначение("Объект");
	ТабличныйДокумент = ОбработкаОбъект.СформироватьПечатнуюФорму(МассивОбъектов);
КонецПроцедуры

&НаКлиенте
Процедура Сформировать(Команда)
	СформироватьНаСервере();
КонецПроцедуры

Заключение.

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

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

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

Наименование Файл Версия Размер
Мой Best Practics. Красивый код в печатных формах.: Шаблон печатной формы

.epf 9,64Kb
08.07.20
2
.epf 9,64Kb 2 Скачать

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. forseil 202 08.07.20 17:41 Сейчас в теме
Надо как в ЗУПе, обработку, к ней отчет на СКД, сбор запроса кусками, вот где красота
ubnkfl; Terve!R; Ta_Da; amd1986; +4 Ответить
2. Rustig 1532 08.07.20 18:17 Сейчас в теме
(0), (1)
я делаю так, когда вижу запрос кусками: для определенных входных параметров собираю через отладчик единый текст запроса, копирую в буфер, закрываю отладочный режим, копирую текст запроса тут же в модуль, комментирую, подписываю что за запрос.

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

При этом я храню исходный полный текст запроса и измененный текст запроса без кусков - оба могут пригодиться.

Вот бы был порядок, если разработчики вставляли полный текст запросов без сборки по кускам в определенных местах описания алгоритма, чтобы не тратить время на сборку....
andy_zhav; +1 Ответить
5. AlX0id 09.07.20 08:12 Сейчас в теме
(2)
Вот бы был порядок, если разработчики вставляли полный текст запросов без сборки по кускам в определенных местах описания алгоритма, чтобы не тратить время на сборку....

Так от хорошей жизни запрос кусками не собирают же ж.. Все варианты не вставишь.
Мне обычно помогает отладка отложенных объектов из инструментов разработчика в сложносочиненных запросах.
Aleksandr55555; +1 Ответить
3. kuzyara 1039 09.07.20 05:02 Сейчас в теме
Все описанное вроде бы очевидно, но спасибо за грамотное изложение.
Я ещё вот такой приёмчик использую: visualizing-code-to-fail-faster
pm74; Rustig; artbear; +3 Ответить
4. andy_zhav 182 09.07.20 07:57 Сейчас в теме
(3) да, это очевидно, но рассчитано на новичков. В последнее время часто вижу код, от которого волосы дыбом становятся. Это выводит меня из равновесия. Решил хоть так исправить это :-)
7. Di_Denis 191 21.07.20 17:56 Сейчас в теме
Я делаю так, последнее время
Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт

	// Печать накладной на приход.
	НужноПечататьМакет = УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "Накладная");
	Если НужноПечататьМакет Тогда
		УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
			КоллекцияПечатныхФорм,
			"Накладная",
			НСтр("ru = 'Накладная на приход товаров'"),
			ПечатнаяФормаПриходТоваров(МассивОбъектов, ОбъектыПечати),
			,
			"Документ.РЗ_АктОбмера.ПФ_MXL_НакладнаяНаПриходТовара");
	КонецЕсли;
	
	НужноПечататьМакет = УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "СортировочныйЛист");
	Если НужноПечататьМакет Тогда
		УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
			КоллекцияПечатныхФорм,
			"СортировочныйЛист",
			НСтр("ru = 'Сортировочный лист'"),
			ПечатнаяФормаСортировочныйЛист(МассивОбъектов, ОбъектыПечати),
			,
			"Документ.РЗ_АктОбмера.ПФ_MXL_СортировочныйЛист");
	КонецЕсли;

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

#Область СлужебныеПроцедурыИФункции

Функция ПечатнаяФормаПриходТоваров(МассивОбъектов, ОбъектыПечати)
	
	ТекстЗапроса = 
	"ВЫБРАТЬ
	|	РЗ_АктОбмера.Ссылка,
	|	РЗ_АктОбмера.Номер,
	|	РЗ_АктОбмера.Дата,
	|	РЗ_АктОбмера.Организация,
	|	РЗ_АктОбмера.Ответственный,
	|	РЗ_АктОбмера.Товары.(
	|		НомерСтроки,
	|		Номенклатура,
	|		Количество,
	|		Порода,
	|		Сорт,
	|		Длина,
	|		Диаметр,
	|		Объем
	|	),
	|	РЗ_АктОбмера.Контрагент,
	|	РЗ_АктОбмера.Заготовитель,
	|	РЗ_АктОбмера.Водитель,
	|	РЗ_АктОбмера.Транспорт,
	|	РЗ_АктОбмера.Грузоотправитель,
	|	РЗ_АктОбмера.ПринятыйОбъем,
	|	РЗ_АктОбмера.НомерНакладной,
	|	РЗ_АктОбмера.ДатаНакладной
	|ИЗ
	|	Документ.РЗ_АктОбмера КАК РЗ_АктОбмера
	|ГДЕ
	|	РЗ_АктОбмера.Ссылка В(&СписокДокументов)";
	
	Запрос = Новый Запрос(ТекстЗапроса);
	Запрос.УстановитьПараметр("СписокДокументов", МассивОбъектов);
	
	Шапка = Запрос.Выполнить().Выбрать();
	
	ТабличныйДокумент = Новый ТабличныйДокумент;
	ТабличныйДокумент.КлючПараметровПечати = "Накладная";
	
	Макет = УправлениеПечатью.МакетПечатнойФормы("Документ.РЗ_АктОбмера.ПФ_MXL_НакладнаяНаПриходТовара");
	
	Пока Шапка.Следующий() Цикл
		Если ТабличныйДокумент.ВысотаТаблицы > 0 Тогда
			ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
		КонецЕсли;
		
		НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
		
		ДанныеПечати = Новый Структура;
		
		ТекстЗаголовка = СформироватьЗаголовокДокумента(Шапка, НСтр("ru = 'Приходный ордер на товары'"));
		ДанныеПечати.Вставить("ТекстЗаголовка", ТекстЗаголовка);
		ДанныеПечати.Вставить("ОрганизацияПредставление", Шапка.Организация);
		ДанныеПечати.Вставить("ОтправительПредставление", Шапка.Грузоотправитель);
		ДанныеПечати.Вставить("ПолучательПредставление", Шапка.Контрагент);
		ДанныеПечати.Вставить("Заготовитель", Шапка.Заготовитель);
		ДанныеПечати.Вставить("Водитель", Шапка.Водитель);
		ДанныеПечати.Вставить("Транспорт", Шапка.Транспорт);
		ДанныеПечати.Вставить("Объем", Шапка.ПринятыйОбъем);
		
		ДанныеПечати.Вставить("Ответственный", Шапка.Ответственный);

		
		ТаблицаТовары = Шапка.Товары.Выгрузить();
		ДанныеПечати.Вставить("Количество", ТаблицаТовары.Итог("Количество"));
		
		МассивОбластейМакета = Новый Массив;
		МассивОбластейМакета.Добавить("Заголовок");
		МассивОбластейМакета.Добавить("ШапкаТаблицы");
		МассивОбластейМакета.Добавить("Строка");
		МассивОбластейМакета.Добавить("Подвал");
		МассивОбластейМакета.Добавить("Подписи");
		
		Для Каждого ИмяОбласти Из МассивОбластейМакета Цикл
			ОбластьМакета = Макет.ПолучитьОбласть(ИмяОбласти);
			Если ИмяОбласти <> "Строка" Тогда
				ЗаполнитьЗначенияСвойств(ОбластьМакета.Параметры, ДанныеПечати);
				ТабличныйДокумент.Вывести(ОбластьМакета);
			Иначе
				Для Каждого СтрокаТаблицы Из ТаблицаТовары Цикл
					ОбластьМакета.Параметры.Заполнить(СтрокаТаблицы);
					ОбластьМакета.Параметры.Номенклатура = "" + СтрокаТаблицы.Номенклатура + " ("+ РЗ_Лесозавод.ОпределитьХарактеристикуНоменклатуры(СтрокаТаблицы.Номенклатура,СтрокаТаблицы.Номенклатура.Порода,СтрокаТаблицы.Сорт,СтрокаТаблицы.Длина,СтрокаТаблицы.Диаметр,Ложь)+")";
					ТабличныйДокумент.Вывести(ОбластьМакета);
				КонецЦикла;
			КонецЕсли;
		КонецЦикла;

		УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, Шапка.Ссылка);
	
	КонецЦикла;
	
	Возврат ТабличныйДокумент;
	
	
КонецФункции

#КонецОбласти



Показать
8. andy_zhav 182 22.07.20 09:43 Сейчас в теме
(7) НужноПечататьМакет тоже использую. Но только для встроенных печатных форм. Во внешних печатных формах имеет смысл использовать только если имеется больше одного макета в обработке и больше одной команды печати.

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

Функция ПечатнаяФормаПриходТоваров(МассивОбъектов, ОбъектыПечати)
    
    ТекстЗапроса = 
    "ВЫБРАТЬ
    |    РЗ_АктОбмера.Ссылка КАК Ссылка,
    |    МАКСИМУМ(РЗ_АктОбмера.Номер) КАК Номер,
    |    МАКСИМУМ(РЗ_АктОбмера.Дата) КАК Дата,
    |    МАКСИМУМ(РЗ_АктОбмера.Организация) КАК ОрганизацияПредставление,
    |    МАКСИМУМ(РЗ_АктОбмера.Ответственный) КАК Ответственный,
    |    РЗ_АктОбмераТовары.НомерСтроки КАК НомерСтроки,
    |	 РЗ_АктОбмераТовары.Номенклатура КАК Номенклатура,
    |    СУММА(РЗ_АктОбмераТовары.Количество) КАК Количество,
    |    РЗ_АктОбмераТовары.Порода КАК Порода,
    |    РЗ_АктОбмераТовары.Сорт КАК Сорт,
    |    РЗ_АктОбмераТовары.Длина КАК Длина,
    |    РЗ_АктОбмераТовары.Диаметр КАК Диаметр,
    |    РЗ_АктОбмераТовары.Объем КАК Объем,
    |    МАКСИМУМ(РЗ_АктОбмера.Контрагент) КАК ПолучательПредставление,
    |    МАКСИМУМ(РЗ_АктОбмера.Заготовитель) КАК Заготовитель,
    |    МАКСИМУМ(РЗ_АктОбмера.Водитель) КАК Водитель,
    |    МАКСИМУМ(РЗ_АктОбмера.Транспорт) КАК Транспорт,
    |    МАКСИМУМ(РЗ_АктОбмера.Грузоотправитель) КАК ОтправительПредставление,
    |    МАКСИМУМ(РЗ_АктОбмера.ПринятыйОбъем) КАК Объем,
    |    МАКСИМУМ(РЗ_АктОбмера.НомерНакладной) КАК НомерНакладной,
    |    МАКСИМУМ(РЗ_АктОбмера.ДатаНакладной) КАК ДатаНакладной
    |ИЗ
    |	 Документ.РЗ_АктОбмера.Товары КАК РЗ_АктОбмераТовары
    |	 ЛЕВОЕ СОЕДИНЕНИЕ Документ.РЗ_АктОбмера КАК РЗ_АктОбмера
    |		 ПО АктОбмераТовары.Ссылка = РЗ_АктОбмера.Ссылка
    |ГДЕ
    |    РЗ_АктОбмераТовары.Ссылка В(&СписокДокументов)
    |ИТОГИ ПО
    |	Ссылка";
    
    Запрос = Новый Запрос(ТекстЗапроса);
    Запрос.УстановитьПараметр("СписокДокументов", МассивОбъектов);
    
    Шапка = Запрос.Выполнить().Выбрать();
    
    ТабличныйДокумент = Новый ТабличныйДокумент;
    ТабличныйДокумент.КлючПараметровПечати = "Накладная";
    
    Макет = УправлениеПечатью.МакетПечатнойФормы("Документ.РЗ_АктОбмера.ПФ_MXL_НакладнаяНаПриходТовара");
	
	ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
	ОбластьШапка = Макет.ПолучитьОбласть("ШапкаТаблицы");
	ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
	ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
	ОбластьПодписи = Макет.ПолучитьОбласть("Подписи");
	
	ВыборкаИтог = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
	Пока ВыборкаИтог.Следующий() Цикл
		ЗаполнитьЗначенияСвойств(ОбластьЗаголовок.Параметры, ВыборкаИтог);
		ТекстЗаголовка = СформироватьЗаголовокДокумента(ВыборкаИтог, НСтр("ru = 'Приходный ордер на товары'"));
		ОбластьЗаголовок.Параметры.ТекстЗаголовка = ТекстЗаголовка;
		ТабличныйДокумент.Вывести(ОбластьЗаголовок);
		ТабличныйДокумент.Вывести(ОбластьШапка);
		Выборка = ВыборкаИтог.Выбрать();
		Пока Выборка.Следующий() Цикл
			ЗаполнитьЗначенияСвойств(ОбластьСтрока.Параметры, Выборка);
            ОбластьСтрока.Параметры.Номенклатура = "" + Выборка.Номенклатура + " ("+ РЗ_Лесозавод.ОпределитьХарактеристикуНоменклатуры(Выборка.Номенклатура,Выборка.Порода,Выборка.Сорт,Выборка.Длина,Выборка.Диаметр,Ложь)+")";
			ТабличныйДокумент.Вывести(ОбластьСтрока);
		КонецЦикла;
		ЗаполнитьЗначенияСвойств(ОбластьПодвал.Параметры, ВыборкаИтог);
		ТабличныйДокумент.Вывести(ОбластьПодвал);
		ЗаполнитьЗначенияСвойств(ОбластьПодписи.Параметры, ВыборкаИтог);
		ТабличныйДокумент.Вывести(ОбластьПодвал);
		ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
	КонецЦикла;
    
    Возврат ТабличныйДокумент;
    
    
КонецФункции
Показать


Не уверен что это производительней, но в плане универсальности точно лучше.
9. Cyberhawk 120 31.07.20 18:28 Сейчас в теме
в одной транзакции обращения к базе данных
Это что такое?
10. andy_zhav 182 31.07.20 23:05 Сейчас в теме
(9)имею в виду одним запросом или пакетом запросов
Оставьте свое сообщение

См. также

Работа с релизами 1С и договорами ИТС Промо

WEB БСП (Библиотека стандартных подсистем) v8 1cv8.cf Абонемент ($m)

Работа с релизами 1С и партнерским кабинетом.

2 стартмани

15.08.2019    12907    38    RocKeR_13    13    

Внешняя компонента на C# для парсинга страниц через Phantom JS на сервере 1С х32,х64

Прочие инструменты разработчика WEB v8 1cv8.cf Абонемент ($m)

PhantomJS - это браузер без окна, используемый для автоматизации взаимодействия с веб-страницами. PhantomJS предоставляет JavaScript API, обеспечивающий автоматическую навигацию, снимки страницы, эмуляции поведение пользователя, что делает его распространенным инструментом, используемым для запуска модульных тестов на основе браузера в автономной системе, такой как среда непрерывной интеграции . PhantomJS основан на WebKit, что делает его похожей на Safari и Google Chrome средой просмотра. Это программное обеспечение с открытым исходным кодом, выпущенное под лицензией BSD.

1 стартмани

06.08.2020    757    0    DrZombi    7    

Не удаляются объекты, помеченные на удаление

БСП (Библиотека стандартных подсистем) Чистка базы v8 ERP2 БП3.0 УТ11 КА2 ЗУП3.x Абонемент ($m)

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

1 стартмани

31.07.2020    771    0    Maito    0    

Сужающийся поиск различий между базами

Поиск данных Универсальные обработки Прочие инструменты разработчика v8 v8::СКД 1cv8.cf Абонемент ($m)

Автоматизированный поиск различий в данных, сужающийся по времени.

1 стартмани

30.07.2020    701    1    Yashazz    0    

Мастер печатных форм v 3.1 Промо

Универсальные печатные формы v8 v8::УФ v8::СКД 1cv8.cf Абонемент ($m)

Создание печатных форм "с нуля" за несколько минут. Моментальная отладка. Не требует знания встроенного языка 1С.

8 стартмани

07.03.2014    90367    385    kser87    210    

Подготовка текста кода 1С для регистрации программы ЭВМ

Прочие инструменты разработчика v8 1cv8.cf Россия Абонемент ($m)

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

1 стартмани

21.07.2020    1326    0    uribur    3    

Загрузка адресного классификатора из БД ФИАС с поддержкой адресов по муниципальному делению

БСП (Библиотека стандартных подсистем) Классификаторы v8 Розница УНФ ERP2 БП3.0 УТ11 КА2 Россия Абонемент ($m)

Расширение позволяет загрузить адресный классификатор из БД ФИАС с поддержкой адресов по муниципальному делению. Для загрузки используется стандартный механизм, заложенный в БСП. Внимание! Для работы с новым форматом ФИАС с поддержкой адресов по муниципальному делению требуется БСП версии 3.0.1 и выше.

2 стартмани

19.07.2020    1247    0    Hitcher    0    

Консоль кода для управляемых форм

Прочие инструменты разработчика v8 v8::УФ 1cv8.cf Абонемент ($m)

Консоль кода для управляемых форма с подсказками и подсветкой синтаксиса.

1 стартмани

17.07.2020    7710    146    salexdv    193    

Печатная форма, сделанная как расширение конфигурации для БП 3.0. Новые возможности БСП Промо

Практика программирования Универсальные печатные формы v8 БП3.0 Абонемент ($m)

Печатные формы на внешних обработках скоро канут в лету. На смену им приходят ПФ, реализованные в виде расширений конфигурации. Не нашел на сайте примеров таких расширений. Привожу пример подобного расширения для БП 3.0.

1 стартмани

06.12.2017    25576    49    kwazi    6    

Обозреватель данных подсистем

Администрирование данных 1С БСП (Библиотека стандартных подсистем) Прочие инструменты разработчика v8 v8::УФ 1cv8.cf Абонемент ($m)

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

1 стартмани

15.07.2020    1445    0    sergbsv    1    

Сравнение результатов глобального поиска по текстам

Прочие инструменты разработчика v8 1cv8.cf Абонемент ($m)

Обработка позволяет сравнить между собой результаты двух глобальных поисков по текстам.

3 стартмани

15.07.2020    1234    0    Hitcher    2    

Шаблон отчета с обработкой данных

Прочие инструменты разработчика v8 1cv8.cf Россия Абонемент ($m)

Отчет с кнопкой программного вывода результата в таблицу значений (дерево значений).

1 стартмани

14.07.2020    1185    0    user1209971    0    

Настройка прав пользователей. БСП. Профиль доступа. Три клика. Промо

Информационная безопасность Сервисные утилиты БСП (Библиотека стандартных подсистем) v8 Розница УНФ БП3.0 УТ11 ЗУП3.x Абонемент ($m)

Простое и наглядное формирование профиля доступа с расширенными правами "EXPERT". Сопоставление ролей профилей конфигурации. Просмотр прав ролей. Управляемое приложение.

1 стартмани

06.03.2013    131898    810    StepByStep    83    

Загрузка классификатора банков с сайта РосБизнесКонсалтинг в конфигурациях, использующих БСП 3.1

БСП (Библиотека стандартных подсистем) Банковские операции WEB Классификаторы v8 v8::БУ 1cv8.cf Россия БУ Абонемент ($m)

Обработка позволяет скачать файл с сайта РосБизнесКонсалтинг  и обновить классификатор банков, используя стандартный интерактивный механизм обновления классификаторов, используемый в БСП 3.1. Не требует подключения к Интернет-поддержке от 1С.

1 стартмани

07.07.2020    1058    2    Hitcher    1    

Шаблонизатор

Прочие инструменты разработчика v8 v8::УФ 1cv8.cf Россия Абонемент ($m)

Создание программного кода для заполнения документа по указанному шаблону.

1 стартмани

06.07.2020    1268    2    Salimbek    0    

Дополнительная система формирования подписей и печатей. Располагает картинки под текстом

Универсальные печатные формы v8 1cv8.cf Россия Абонемент ($m)

Позволяет организовать дополнительную систему печатей и подписей в существующих печатных формах. Также умеет преобразовывать ячейки под картинками в объекты для правильного отображения картинок

7 стартмани

28.06.2020    1223    0    JackGamer_    2    

Конструктор внешних печатных форм NEW beta (обычные и управляемые приложения!) Промо

Универсальные печатные формы Инструментарий разработчика v8 1cv8.cf Абонемент ($m)

Версия NEW beta=) "Конструктор внешних печатных форм" максимально автоматизирует процесс создания внешних печатных форм на основе типовых. Создание внешней печатной формы займет от секунд до пары минут! Теперь и на управляемых приложениях =)

1 стартмани

18.11.2012    67359    276    SeiOkami    182    

Шаблон загрузки данных из табличного документа (Excel, Open Office, MXL, CSV) с использованием БСП для УФ

БСП (Библиотека стандартных подсистем) Загрузка и выгрузка в Excel v8 v8::УФ 1cv8.cf Абонемент ($m)

Обработка предназначена для организации собственного механизма обработки данных из табличного документа (Excel, Open Office, MXL, CSV). Для загрузки используются механизмы БСП.

2 стартмани

26.06.2020    1320    7    Hitcher    2    

Консоль выполнения кода в 1С (обычные и управляемые формы)

Прочие инструменты разработчика v8 v8::УФ 1cv8.cf Абонемент ($m)

Иногда возникает необходимость выполнить некоторые действия в 1С, ради которых не хочется писать внешнюю обработку на пару строк кода. Для таких действия предназначена "Консоль выполнения кода в 1С".

1 стартмани

19.06.2020    6725    56    Denr83    0    

Управление задачами: новая БСП и RLS для задач

Управление задачами Управление задачами Инструментарий разработчика Практика программирования Управление проектом SonarQube Групповая разработка Git (GitHub, GitLab, BitBucket) БСП (Библиотека стандартных подсистем) Конфигурирование 1С v8 Абонемент ($m)

Управление задачами: новая БСП и RLS (ограничение доступа на уровне записей) для задач. Релиз 1.0.5.001 Обновлена БСП до версии 3.0.3.184 режим совместимости 8.3.12 Новое расширение: которое изменяет основной стиль с желтого на серый с синем (BAS) Проект проверяется Sonar и BSL Language Server

1 стартмани

11.06.2020    1260    2    BlizD    0    

Отчёт по содержимому КД 2.0

Обмен данными 1С Обмен через XML Перенос данных из 1C8 в 1C8 Конфигурирование 1С Прочие инструменты разработчика v8 КД Абонемент ($m)

Просто отчёт по правилам конвертации - всё, что в них есть.

1 стартмани

05.06.2020    1568    6    Yashazz    4    

Тестирование отчетов

Прочие инструменты разработчика v8 1cv8.cf Россия Абонемент ($m)

Обработка "Тестирование отчетов" предназначена для тестирования списка отчетов путем их сравнения в модифицируемой базе и эталонной. Для сравнения используется механизм платформы 1С "Сравнить файлы". Отличие предлагаемого решения в удобстве использования для списка отчетов.

1 стартмани

29.05.2020    1211    0    keifaya    0    

PDF Extractor - извлекаем информацию из PDF с помощью Poppler

Прочие инструменты разработчика v8 1cv8.cf Абонемент ($m)

«Класс» - обёртка для упрощения использования возможностей Poppler из 1С. Позволяет просто извлекать информацию из PDF-файлов в виде изображений и текста.

1 стартмани

26.05.2020    2670    4    salexdv    7    

Спасение рядового Райана

Обработка документов Универсальные обработки Обработка справочников Прочие инструменты разработчика v8 1cv8.cf Абонемент ($m)

Бывало, что потратишь полчаса, набьёшь в документ кучу данных, а его потом не записать? И вся работа насмарку? Тогда прошу под кат.

1 стартмани

22.05.2020    2223    3    the1    2    

Шаблоны внешних отчетов и обработок для обычных и управляемых форм

Прочие инструменты разработчика v8 v8::УФ 1cv8.cf Абонемент ($m)

15 шаблонов внешних отчетов и обработок для обычных и управляемых форм.

1 стартмани

15.05.2020    2133    41    DNN13    0    

Метод восстановления битых ссылок в настройках СКД при консольно-конфигураторной разработке отчетов

Практика программирования Прочие инструменты разработчика v8 v8::СКД 1cv8.cf Абонемент ($m)

Для тех разработчиков, кто пользуется различными консолями СКД, бывает неудобен тот факт, что при необходимости дальнейшей разработки сложных отчетов уже в режиме Конфигуратора значения ссылочных объектов в настройках СКД приводятся к строковым значениям и не воспринимаются в дальнейшем в пользовательском режиме. Предложен метод, который поможет справиться с этой неприятностью в большинстве случаев.

1 стартмани

30.04.2020    3073    0    zaxarovsky    4    

Редактирование JSON в виде дерева

Прочие инструменты разработчика v8 Абонемент ($m)

Удобная обработка на 1с для редактирования и просмотра JSON. Замена онлайн сервисам просмотра и редактирования JSON. Релиз 1С, на котором выполнялось тестирование 8.3.15, но думаю будет работать и под более ранними.

1 стартмани

28.04.2020    3175    22    vladnet    12    

Контроль доработок конфигураций

Прочие инструменты разработчика v8 Абонемент ($m)

Конфигурация для отслеживания доработок типовых конфигураций, позволяет ускорить обновление модулей типовых релизов и находить потерянные при обновлении доработки. Имеет ряд уникальных функций, которые не предоставляет конфигуратор 1С.

5 стартмани

27.04.2020    2951    7    Serge R    8    

Подсистема "Редактор Markdown 1C"

Прочие инструменты разработчика v8 v8::УФ 1cv8.cf Абонемент ($m)

Подсистема для быстрого встраивания в форму редактора языка разметки markdown

2 стартмани

19.04.2020    3866    6    cprit    11    

Создание описания, добавления и чтения таблицы значений

Прочие инструменты разработчика v8 1cv8.cf Абонемент ($m)

Иногда приходится создавать Таблицу значения (ТЗ) с большим количеством полей, описывать ТЗ вручную достаточно долго. Для автоматизации этого процесса и написана данная обработка. Данная обработка нужна только программистам.

1 стартмани

16.04.2020    1936    1    Dmitry77    4    

Установка даты запрета изменения по расписанию

БСП (Библиотека стандартных подсистем) Роли и права v8 БП3.0 Абонемент ($m)

Внешняя обработка для установки даты запрета изменений по расписанию. Применяется для всех пользователей, кроме уже имеющихся в списке дат запрета.

1 стартмани

14.04.2020    2119    2    user1393353    0    

Отладка обработки заполнения

Прочие инструменты разработчика v8 1cv8.cf Россия Абонемент ($m)

Внешняя обработка, позволяющая отладить любую написанную вами обработку заполнения.

1 стартмани

12.04.2020    1998    5    ah7777777    0    

Быстрая функция поиска ссылки по УИД(GUID)

Поиск данных Прочие инструменты разработчика v8 1cv8.cf Россия Абонемент ($m)

Простая, а самое главное быстрая функция поиска ссылки на объект в информационной базе по УИД(GUID) через запрос.

1 стартмани

11.04.2020    6216    21    Kondratenko.as    27    

http сервис, возвращающий печатную форму

Печатные формы документов Прочие инструменты разработчика v8 УТ11 Россия Абонемент ($m)

Расширение, которое по get запросу в виде: http:///hs/WSPrint/Download/?UUID=&IDPF=&format= возвращает указанную печатную форму.

1 стартмани

09.04.2020    2289    4    user1350020    0    

Генератор штрихкодов. Формирование текста QR кода чека ККТ с проверкой на сайте ФНС

Практика программирования Сканер штрих-кода Фискальный регистратор БСП (Библиотека стандартных подсистем) v8 1cv8.cf Абонемент ($m)

Внешняя обработка. Позволяет генерировать штрих-коды разных типов. А также сформировать текст QR кода чека ККТ. Есть возможность проверить чек на корректность на сайте ФНС.

1 стартмани

02.04.2020    1701    4    viplelik    3    

Валидация данных

Прочие инструменты разработчика v8 1cv8.cf Абонемент ($m)

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

1 стартмани

01.04.2020    4619    2    relines    8    

Отладка шаблонов ограничений

Прочие инструменты разработчика v8 1cv8.cf Абонемент ($m)

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

1 стартмани

26.03.2020    3893    29    vadim1980    3    

Имена таблиц на сервере

Прочие инструменты разработчика v8 v8::УФ 1cv8.cf Абонемент ($m)

Обработка позволяющая удобно определить, в какой таблице на сервере баз данных находится той или иной объект 1С. Только для управляемого приложения! Тестировалось на платформе 1с 8.3.15.1565.

1 стартмани

19.03.2020    2413    0    alexyur    2    

Добавление контекстных дополнительных обработок в командную панель (немного практики по доработке БСП расширениями)

БСП (Библиотека стандартных подсистем) v8 УТ11 Абонемент ($m)

При добавлении контекстных дополнительных отчетов они не попадают в командную панель (КП), а открываются специальной командой из КП "Отчеты - Дополнительные отчеты..." Не всегда это удобно, и если контекстный отчет нужен для частого использования, то гораздо лучше, если бы он попадал сразу в подменю "Отчеты" на КП, а не требовал открытия дополнительной формы.

1 стартмани

18.03.2020    2434    0    work.sable    6    

Подготовка (исправление) XML схем

Прочие инструменты разработчика v8 Абонемент ($m)

Иногда, XML схемы не соответствуют стандарту w3.org и это грустно :-( . Скрипт публикации исправляет ошибки XML схем в автоматическом режиме.

1 стартмани

10.03.2020    2624    0    infosoft-v    3    

Внешний регламент для 1С

Прочие инструменты разработчика v8 Россия Абонемент ($m)

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

1 стартмани

05.03.2020    2980    6    moolex    6    

Шаблоны внешних обработок (БСП, управляемые формы)

Обработки Печать Универсальные функции БСП (Библиотека стандартных подсистем) v8 1cv8.cf Абонемент ($m)

Набор из шаблонов для создания внешних обработок вида: Внешняя печатная форма, Отчет на СКД, Схема СКД для сегмента, Внешняя обработка (Самостоятельная, Заполнение объектов, Создание связанных объектов). Предварительно наполнены базовым функционалом и некоторыми механизмами для отладки.

1 стартмани

01.03.2020    2633    23    riposte    2    

Пишем код в режиме предприятия на УФ

Прочие инструменты разработчика v8 v8::УФ 1cv8.cf Абонемент ($m)

Тестирование кода прямо в режиме предприятия. Изменение документов и справочников. Управляемые формы. Сохранение и форматирование кода.

1 стартмани

27.02.2020    2759    1    HAMAZ    9    

Шаблон для разработки внешних печатных форм с возможностью тестирования и отладки программного кода, печати непроведенных документов и открытия формы обработки перед печатью (на примере печати Расходной накладной)

Универсальные печатные формы Печатные формы документов v8 УТ11 Россия УУ Абонемент ($m)

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

3 стартмани

26.02.2020    1287    0    putnikvp    3    

Выполнение произвольного кода 1С на управляемых формах

Прочие инструменты разработчика v8 v8::УФ 1cv8.cf Россия Абонемент ($m)

Часто при работе в режиме предприятия необходимо выполнить какой-либо код. Для этого необходимо написать внешнюю обработку, а можно воспользоваться нашей обработкой для выполнения произвольного кода в режиме предприятия.

2 стартмани

18.02.2020    3452    15    seregapolygon    9