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

Публикация № 1261956 Дата создания: 08.07.20 16:40

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Запрос.

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

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

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

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

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

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

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

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

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

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

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

Отладка.

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

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

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

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

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

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

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

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


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

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

Заключение.

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

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

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

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

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

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

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

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

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

Вот бы был порядок, если разработчики вставляли полный текст запросов без сборки по кускам в определенных местах описания алгоритма, чтобы не тратить время на сборку....
3. kuzyara 1158 09.07.20 05:02 Сейчас в теме
Все описанное вроде бы очевидно, но спасибо за грамотное изложение.
Я ещё вот такой приёмчик использую: visualizing-code-to-fail-faster
vano-ekt; SpartakM; Alexsur; YPermitin; pm74; Rustig; artbear; +7 Ответить 1
4. andy_zhav 195 09.07.20 07:57 Сейчас в теме
(3) да, это очевидно, но рассчитано на новичков. В последнее время часто вижу код, от которого волосы дыбом становятся. Это выводит меня из равновесия. Решил хоть так исправить это :-)
5. AlX0id 09.07.20 08:12 Сейчас в теме
(2)
Вот бы был порядок, если разработчики вставляли полный текст запросов без сборки по кускам в определенных местах описания алгоритма, чтобы не тратить время на сборку....

Так от хорошей жизни запрос кусками не собирают же ж.. Все варианты не вставишь.
Мне обычно помогает отладка отложенных объектов из инструментов разработчика в сложносочиненных запросах.
Риник; Aleksandr55555; +2 Ответить
7. Di_Denis 321 21.07.20 17:56 Сейчас в теме
Я делаю так, последнее время
Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт

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

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

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

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

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

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

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



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

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

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


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

См. также

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

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

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

1 стартмани

05.03.2020    6568    8    moolex    11    

Проверка кода расширения (Все аннотации) на наличие изменений в основной конфигурации V 2.0

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

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

1 стартмани

28.06.2021    2244    15    con-men    4    

Просмотр и редактирование условного оформления открытой формы на БСП

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

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

1 стартмани

03.06.2021    1058    3    Foster13    3    

Шаблоны кода (управляемые формы)

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

Шаблоны кода на управляемых формах.

2 стартмани

22.05.2021    2218    3    Rustig    16    

Подсистема "Показатели объектов" Промо

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

Если вашим пользователям нужно вывести в динамический список разные показатели, которые нельзя напрямую получить из таблиц ссылочных объектов, и вы не хотите изменять структуру справочников или документов - тогда эта подсистема для вас. С помощью нее вы сможете в пользовательском режиме создать свой показатель, который будет рассчитываться по формуле или с помощью запроса. Этот показатель вы сможете вывести в динамический список, как любую другую характеристику объекта. Также можно будет настроить отбор или условное оформление с использованием созданного показателя.

2 стартмани

06.03.2021    4902    5    pila86    16    

Конструктор процедур для создания дополнительных реквизитов и сведений для Бухгалтерии 3.0

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

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

2 стартмани

22.04.2021    3731    4    roma_semenov79    0    

Однопальцевое преобразование "одинэсного" запроса в запрос на SQL

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

Обработка предназначена для преобразования "одинэсных" запросов в запросы на SQL средствами встроенного языка. Разработка не претендует на то, чтобы на 100% повторить то, что разработчики видят при трассировке запросов в инструментах вроде Profiler. Но во многих случаях результат преобразования можно будет без дополнительной ручной обработки выполнить, например, в Managment studio. Актуальные ограничения и проблемы преобразователя описаны в статье. Работает с версией платформы не ниже 8.3.10.

2 стартмани

17.04.2021    1844    3    kser87    9    

Отладка обработок с плюшками

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

Расширение для отладки внешних отчетов и обработок. Плюшки - отключение “отвлекающего” функционала, мешающего процессу разработки.

1 стартмани

14.04.2021    2441    6    pparshin    1    

FormCodeGenerator Программная доработка форм. Часть 2 (Режим работы "Режим сравнения форм") на примере ERP 2.5 Промо

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

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

5 стартмани

21.12.2020    6754    21    huxuxuya    11    

Универсальный "сравниватель" объектов

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

Сравнение реквизитов и табличных частей двух объектов 1С (справочники, документы), чтобы увидеть разницу в значениях.

1 стартмани

03.03.2021    2359    12    pyrkin_vanya    13    

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

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

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

1 стартмани

24.02.2021    3182    6    xl_yaz    12    

Генератор кода схемы компоновки данных (СКД)

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

Формирование кода для программного создания схемы компоновки данных (СКД)

1 стартмани

04.02.2021    6468    49    Sergspectr    35    

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

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

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

2 стартмани

15.08.2019    18847    56    RocKeR_13    37    

Универсальная печатная форма для справочника и документа по своему шаблону, сделанному в ms word: Кадровые, Торговые, Делопроизводственные, Бухгалтерские, Управляющие

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

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

5 стартмани

02.02.2021    3106    50    user1479207    11    

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

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

Обработка предназначена для выполнения произвольного кода в режиме 1С:Предприятие для управляемых форм. Поддерживаются: конструктор запросов, расцветка кода, синтаксические подсказки, параметры, дерево текстов и запись в файл. Минимальная версия платформы - 8.3.14.1565.

1 стартмани

26.01.2021    2785    20    Reaper_1C    2    

DT2CF - Экстрактор конфигурации из дампа информационной базы

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

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

10 стартмани

21.12.2020    3061    5    SerVer1C    5    

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

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

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

1 стартмани

06.12.2017    31273    56    kwazi    6    

FormCodeGenerator Программная доработка форм. Часть 1 (Режим работы "Палитра")

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

Данная публикация является описанием функционирования обработки "FormCodeGenerator " в режиме генерирования кода "на лету", без особых заморочек, данный режим идеально подходит для того что бы запустить, потыкать и забыть :)

1 стартмани

14.12.2020    5121    76    huxuxuya    9    

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

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

Позволяет "посмотреть" все "подписки на события" и "глобальные команды" и при необходимости "отфильтровать" их по нужному объекту в конфигурации - "Документу" или "Справочнику". Поможет понять, где ещё может "обрабатываться" объект...

1 стартмани

23.11.2020    2314    3    AnryMc    5    

Шаблон расширения с функцией сохранения настроек

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

Удобный механизм для быстрого создания сохраняемых настроек в расширении.

1 стартмани

20.11.2020    1715    0    pm74    1    

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

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

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

1 стартмани

06.03.2013    142383    1715    StepByStep    85    

Расширение для создания собственных подсистем БСП

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

В этой статье поделюсь некоторыми изысканиями о внутреннем устройстве стандартной подсистемы "Обновление версии ИБ" и расскажу, как разработать свою подсистему, в которой будет работать отчёт с описанием изменений.

1 стартмани

20.11.2020    5955    11    stas_ganiev    4    

Подготовка к 1С:Совместимо. Инструментарий в помощь программисту

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

Инструментарий в помощь программисту для подготовки конфигурации к сертификации 1С:Совместимо.

1 стартмани

16.11.2020    2367    3    BrainAttack    0    

Быстрый отбор по первой букве в любом списке

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

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

2 стартмани

15.11.2020    3562    4    the1    20    

Консоль Программиста 8.3. Управляемые формы, тонкий/толстый клиент Промо

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

Обработка в помощь программисту - тестировщику. Консоль позволяет выполнять код 1С на встроенном языка, по сути является универсальной внешней обработкой

2 стартмани

22.08.2013    48437    642    hmanubis    67    

БСП - рабочие примеры асинхронного запуска функций и процедур

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

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

2 стартмани

02.11.2020    6519    19    quazare    2    

Работа с формулой-шаблоном

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

"Работа с формулой-шаблоном" - внешняя обработка, в которой для "Идентификаторы объектов метаданных"/"Идентификаторы объектов расширений" рекурсивно строится дерево реквизитов/стандартных реквизитов, дополнительных реквизитов/сведений и можно с их помощью, используя операторов и функций слева с помощью перетаскивания мышью, построить формулу, которую потом применять к элементам справочника/документа и т.д. (например - задавать шаблоны наименований, имен файлов и т.п).

3 стартмани

02.11.2020    2358    4    kn    0    

Новый взгляд на старое. Внешняя печатная форма – НАСТРАИВАЕМАЯ

Универсальные печатные формы Печатные формы документов Оптовая торговля v8 ERP2 УТ11 КА2 Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Россия УУ Абонемент ($m)

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

2 стартмани

21.10.2020    4158    20    user1209971    12    

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

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

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

1 стартмани

18.11.2012    72678    1974    SeiOkami    183    

Шаблон ВПФ (внешней печатной формы) для вывода в Word

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

Шаблон для разработки ВПФ для БСП версии 3.1. Основные возможности: 1. Описание требуемых для вывода данных при помощи СКД. 2. Вывод в документ средствами БСП (не используется COM-соединение с word) 3. Реализована форма для тестирования без подключения обработки к БСП и без помещения документа-макета в обработку.

1 стартмани

10.10.2020    3361    9    Gladkov_Anton    4    

Просмотр структуры базы в СУБД, в том числе расширений

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

Структура таблиц базы данных с учётом расширений.

1 стартмани

29.09.2020    6839    65    Yashazz    10    

Предварительный просмотр PDF с помощью PDF.js на WebKit

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

Один из вариантов отображение pdf файла в поле формы вида "ПолеHTMLДокумента".

1 стартмани

25.09.2020    6112    23    samvani    15    

Отладочная форма для внешней печатной формы

Универсальные печатные формы v8 Розница УНФ ERP2 ЗКГУ3.0 БП3.0 УТ11 КА2 ЗУП3.x Абонемент ($m)

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

1 стартмани

22.09.2020    2737    11    LamerSoft    0    

Генератор внешних печатных форм

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

Генератор печатных форм - инструмент для создания внешних печатных форм в режиме предприятия с минимальным написанием кода

3 стартмани

18.09.2020    4448    17    andy_zhav    7    

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

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

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

1 стартмани

05.09.2020    4166    7    Ivon    0    

[FREE] Универсальная команда печати элемента (карточки справочника)

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

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

1 стартмани

03.09.2020    2562    0    pridecom    0    

Визуальный html WYSIWYG редактор без сторонних библиотек на управляемых формах

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

Простой и удобный html редактор без сторонних библиотек.

1 стартмани

31.08.2020    6594    10    ivanov660    12    

Простой почтовый клиент (Моя почта)

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

Почтовый клиент (Моя почта) на основе БСП.

2 стартмани

27.08.2020    3490    7    m_aster    1    

Генератор кода COM-обмена

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

Обработка предназначена для автоматического создания кода для загрузки данных из другой базы 1С через COM-соединение.

1 стартмани

20.08.2020    3412    11    ManyakRus    4    

Оптимизация пакетной печати из 1С в MS Word

Пакетная печать Производительность и оптимизация (HighLoad) MS Office БСП (Библиотека стандартных подсистем) v8 ЗУП3.x Абонемент ($m)

Опыт оптимизации пакетной печати из 1С ЗУП 3.1 в MS Word. Об осторожности использования БСП. Внешние обработки: до и после оптимизации.

1 стартмани

14.08.2020    4102    1    info1i    5    

Шаблоны выполнения длительных операций (процедур и функций) без блокировки пользовательского интерфейса

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

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

1 стартмани

11.08.2020    3022    36    Hitcher    8    

Проверка ведения учета (универсальная)

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

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

2 стартмани

11.08.2020    4387    17    vozhd    2    

Внешняя компонента на 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    5381    4    DrZombi    7    

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

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

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

1 стартмани

21.07.2020    3557    2    uribur    5    

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

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

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

1 стартмани

17.07.2020    22244    339    salexdv    296    

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

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

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

1 стартмани

06.07.2020    3771    5    Salimbek    0