Акт выполненных работ за поставщика для документа Поступление товаров и услуг для Бухгалтерия предприятия 2.0 (2.0.65.30) с оптимизацией для пакетной печати

31.05.16

Задачи пользователя - Пакетная печать

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

Файлы

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

Наименование Скачано Купить файл
Акт за поставщика для ПТУ
.epf 13,04Kb ver:1.0.0.0
19 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

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

Функция Печать() Экспорт
	// упрощенно
	Таб = Новый ТабличныйДокумент;
	Таб.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
	Таб.АвтоМасштаб = Ложь;
	Таб.МасштабПечати = 100;	
	
	
	Таб.ИмяПараметровПечати = "Акт_за_поставщика_ВПФ";
	Таб.ПолеСлева  = 10;
	Таб.ПолеСправа = 10;
	Таб.ПолеСверху = 10;
	Таб.ПолеСнизу  = 10;
	
	Запрос = Новый Запрос;
	Запрос.УстановитьПараметр("ДокСсылка", СсылкаНаОбъект);
	Запрос.Текст =
	"ВЫБРАТЬ
	|	Док.Номер,
	|	Док.Дата,
	|	ЕСТЬNULL(Док.Контрагент.НаименованиеПолное, ""<НЕ ЗАПОЛНЕН>"") КАК Исполнитель,
	|	ЕСТЬNULL(Док.Организация.НаименованиеПолное, ""<НЕ ЗАПОЛНЕН>"") КАК Заказчик,
	|	Док.СуммаДокумента
	|ИЗ
	|	Документ.ПоступлениеТоваровУслуг КАК Док
	|ГДЕ
	|	Док.Ссылка = &ДокСсылка
	|	И Док.Проведен
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	ТЧДок.НомерСтроки КАК НомерСтроки,
	|	ВЫРАЗИТЬ(ТЧДок.Содержание КАК СТРОКА(1000)) КАК Товар,
	|	ТЧДок.Цена,
	|	ТЧДок.Сумма КАК Сумма,
	|	ТЧДок.СуммаНДС КАК СуммаНДС,
	|	ТЧДок.Количество КАК Количество,
	|	ЕСТЬNULL(ТЧДок.Номенклатура.БазоваяЕдиницаИзмерения.НаименованиеПолное, ""<НЕ УКАЗАНА>"") КАК ЕдиницаИзмерения,
	|	ВЫБОР
	|		КОГДА ТЧДок.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.БезНДС)
	|			ТОГДА 0
	|		ИНАЧЕ 1
	|	КОНЕЦ КАК ПометкаНДС
	|ИЗ
	|	Документ.ПоступлениеТоваровУслуг.Услуги КАК ТЧДок
	|ГДЕ
	|	ТЧДок.Ссылка = &ДокСсылка
	|
	|УПОРЯДОЧИТЬ ПО
	|	НомерСтроки
	|ИТОГИ
	|	МАКСИМУМ(НомерСтроки),
	|	СУММА(Сумма),
	|	СУММА(СуммаНДС),
	|	СУММА(Количество),
	|	МАКСИМУМ(ПометкаНДС)
	|ПО
	|	ОБЩИЕ";
	РезультатПакетногоЗапроса = Запрос.ВыполнитьПакет();
	РезультатШапкаДокумента = РезультатПакетногоЗапроса[0];
	РезультатТЧДокумента = РезультатПакетногоЗапроса[1];
	Если РезультатШапкаДокумента.Пустой() Тогда
		Сообщить("Ошибка при печати документа "+СсылкаНаОбъект+". Возможно, документ не проведен или помечен на удаление", СтатусСообщения.Важное);
		Возврат Таб;
	КонецЕсли;	
	Если РезультатТЧДокумента.Пустой() Тогда
		Сообщить("Ошибка при печати документа "+СсылкаНаОбъект+". Документ АКТ должен содержать хотя бы одну услугу (таб. часть 'Услуги')", СтатусСообщения.Важное);
		Возврат Таб;
	КонецЕсли;	
	
	Макет = ПолучитьМакет("Акт");
	ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
    ВыборкаШапкаДокумента = РезультатШапкаДокумента.Выбрать();
	ВыборкаШапкаДокумента.Следующий();
	ОбластьЗаголовок.Параметры.ТекстЗаголовка = "Акт № "+
	ОбщегоНазначения.ПолучитьНомерНаПечать(СсылкаНаОбъект)+
	" от "+Формат(ВыборкаШапкаДокумента.Дата, "ДЛФ=DD");
	Таб.Вывести(ОбластьЗаголовок);
	
	ОбластьИсполнитель = Макет.ПолучитьОбласть("Поставщик");
	ОбластьИсполнитель.Параметры.ПредставлениеПоставщика = ВыборкаШапкаДокумента.Исполнитель; // Исполнитель
	Таб.Вывести(ОбластьИсполнитель);
	
	ОбластьЗаказчик = Макет.ПолучитьОбласть("Покупатель");
	ОбластьЗаказчик.Параметры.ПредставлениеПолучателя = ВыборкаШапкаДокумента.Заказчик; // Заказчик
	Таб.Вывести(ОбластьЗаказчик);
	
	ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
	Таб.Вывести(ОбластьШапкаТаблицы);
	
	ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
	ВыборкаИтоги = РезультатТЧДокумента.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
	ВыборкаИтоги.Следующий();
	
	Выборка = ВыборкаИтоги.Выбрать();
	Пока Выборка.Следующий() Цикл
		Если НЕ Таб.ПроверитьВывод(ОбластьСтрока) Тогда
			Таб.ВывестиГоризонтальныйРазделительСтраниц();
		КонецЕсли;
		ОбластьСтрока.Параметры.Заполнить(Выборка);
		Таб.Вывести(ОбластьСтрока);
	КонецЦикла;
	
	ОбластьИтого = Макет.ПолучитьОбласть("Итого");
	ОбластьИтого.Параметры.Всего = ""+ Формат(ВыборкаШапкаДокумента.СуммаДокумента, "ЧЦ=15; ЧДЦ=2");	
	Таб.Вывести(ОбластьИтого);
	
	ОбластьИтогоНДС = Макет.ПолучитьОбласть("ИтогоНДС");	
	Если ВыборкаИтоги.ПометкаНДС = 0 Тогда
		ОбластьИтогоНДС.Параметры.НДС = "Без НДС"; // В документе по всем строкам установлено БезНДС
	Иначе
		ОбластьИтогоНДС.Параметры.НДС = "В том числе НДС";
		ОбластьИтогоНДС.Параметры.ВсегоНДС = ""+ Формат(ВыборкаИтоги.СуммаНДС, "ЧЦ=15; ЧДЦ=2");
	КонецЕсли;	
	Таб.Вывести(ОбластьИтогоНДС);
	
	ОбластьСуммаПрописью = Макет.ПолучитьОбласть("СуммаПрописью");
	ОбластьСуммаПрописью.Параметры.ИтоговаяСтрока = "Всего оказано услуг "+ВыборкаИтоги.Количество+" на сумму "+
	Формат(ВыборкаШапкаДокумента.СуммаДокумента, "ЧЦ=15; ЧДЦ=2")+" руб.";
	ОбластьСуммаПрописью.Параметры.СуммаПрописью = ""+ПолучитьДеньгиПрописью(ВыборкаШапкаДокумента.СуммаДокумента);
	Таб.Вывести(ОбластьСуммаПрописью);
	
	ОбластьПодписи = Макет.ПолучитьОбласть("Подписи");
	ОбластьПодписи.Параметры.ДолжностьИНазваниеОрганизации = ""+ВыборкаШапкаДокумента.Исполнитель;
	Таб.Вывести(ОбластьПодписи);
	
	Возврат Таб;
	
КонецФункции

Функция ПолучитьДеньгиПрописью(парСумма)
	ФормСтрока = "Л = ru_RU; ДП = Истина";
	ПарПредмета="рубль, рубля, рублей, м, копейка, копейки, копеек, ж, 2";    
	Возврат ЧислоПрописью(парСумма, ФормСтрока, ПарПредмета);
КонецФункции

Исходный документ ПТУ для тестирования, где все строки табличной части услуги без НДС:

 

Внешний вид печатной формы акта и документ для тестирования следующие (без НДС):

 

 

Буду рад замечаниям и предложениям тех, кто тоже занялся оптимизацией запросов и кода.

P.S. Подобные задачи стали возникать в связи с трудоустройством в г. Москва, где приходится обрабатывать большие объемы данных, и требуется оптимизация.

Вступайте в нашу телеграмм-группу Инфостарт

ВПФ Акт выполненных работ Бухгалтерия предприятия 2.0 оптимизация запросов пакетная печать как сделать ВПФ пакетный запрос печатная форма Акт акт за поставщика БП 2.0 Бухгалтерия 2.0.65

См. также

SALE! 50%

Производство готовой продукции (работ, услуг) Учет доходов и расходов Бухгалтер Пользователь 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Управление холдингом 1С:Комплексная автоматизация 2.х Бухгалтерский учет Управленческий учет Платные (руб)

Данный отчет показывает себестоимость выпущенной продукции с разузлованием полуфабрикатов любых уровней, входящих в ее состав, до статей затрат и материалов. Отчет работает независимо от метода оценки стоимости товаров и подходит для любых производственных компаний с многопередельным производством. Отчет можно использовать как в типовой 1С:ERP, так и в отраслевых решениях на ее базе (например, 1С:ERP Управление птицеводческим предприятием и т.д.). Отчет подходит для анализа затрат на гособоронзаказы ГОЗ.

96600 48300 руб.

08.12.2021    34327    51    77    

55

SALE! 50%

Производство готовой продукции (работ, услуг) Учет доходов и расходов Бухгалтер Пользователь 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Управление холдингом 1С:Комплексная автоматизация 2.х Бухгалтерский учет Налоговый учет Платные (руб)

Данный отчет показывает себестоимость реализованной продукции в разузлованном виде, как с выделением входящих в нее полуфабрикатов любых уровней, так и свернутый до статей затрат и материалов, видов работ. Отчет работает независимо от метода оценки стоимости товаров и подходит для любых производственных компаний с многопередельным производством. Отчет можно использовать как в типовой 1С:ERP, так и в отраслевых решениях на ее базе (например, 1С:ERP Управление птицеводческим предприятием, Молокозавод и т.д.).Отчет подходит для анализа затрат на гособоронзаказы ГОЗ.

96600 48300 руб.

30.11.2022    31395    44    35    

44

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

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

22570 руб.

06.10.2023    34500    87    35    

111

Печатные формы НДС 22% 1С 8.3 1С:Управление торговлей 10 1С:Управление производственным предприятием Бухгалтерский учет Налоговый учет Платные (руб)

Решение для работы с новой графой 5б в УПД и Счете-фактуре с 01.01.2026 года для конфигураций 1С:УТ 10.3, 1С:УПП 1.3 и 1С:КА 1.1. Обеспечивает корректную печать универсальных передаточных документов и счетов-фактур в соответствии с изменениями в статье 169 НК РФ, заполняет обязательные поля - порядковый номер и дату авансового счета-фактуры при зачете предоплаты. Подключается как внешняя печатная форма в конфигурацию 1С, поддерживает все стандартные требования и имеет открытый исходный код для адаптации под ваши бизнес-процессы.

6100 руб.

19.12.2025    3262    31    23    

32

Зарплата Производство готовой продукции (работ, услуг) Учет рабочего времени Рабочее место Бизнес-аналитик Пользователь Руководитель проекта 1С:Предприятие 8 1С:Управление торговлей 10 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Торговля и склад 7.7 Бытовые услуги, сервис Оптовая торговля, дистрибуция, логистика Электротехника и микроэлектроника Управленческий учет Платные (руб)

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

18800 руб.

01.11.2012    103837    127    1    

136

Рабочее место Производство готовой продукции (работ, услуг) Перенос данных 1C Пользователь 1С:Предприятие 8 1С:Управление производственным предприятием 1С:Документооборот 1С:Комплексная автоматизация 2.х 1С:КА 1С:ДО Платные (руб)

Продукт "Интеграция с 1С:Документооборот" позволяет использовать функции программы "1С:Документооборот 8" напрямую из учетной системы (1С:УПП; 1С:КА, 1С:УТ 10.3, 1С:БГУ 1.0, 1С:ЗБУ 1.0, 1С:УПП для Казахстана и отраслевых решений, разработанных на их основе) на платформе "1С:Предприятие 8": выполнять и ставить задачи, просматривать документы, скан-копии и прочие файлы, штрих-кодировать документы отправлять письма, вести учет рабочего времени - не входя в "1С:Документооборот 8", работая в одной программе, что значительно сокращает время и делает работу более комфортной и эффективной. Продукт прошел сертификацию 1С-Совместимо

157473 руб.

11.06.2015    61497    38    20    

48

Печатные формы Учет рабочего времени Учет ОС и НМА Бухгалтер 1С:Предприятие 8 1С:ERP Управление предприятием 2 1C:ERP Транспорт, автопарки, такси Оптовая торговля, дистрибуция, логистика Россия Бухгалтерский учет Управленческий учет Платные (руб)

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

25620 руб.

23.07.2025    3671    11    0    

10
Для отправки сообщения требуется регистрация/авторизация