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

31.05.16

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

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

Скачать файл

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

Наименование По подписке [?] Купить один файл
Акт за поставщика для ПТУ
.epf 13,04Kb
19
19 Скачать (1 SM) Купить за 1 850 руб.

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

Функция Печать() Экспорт
	// упрощенно
	Таб = Новый ТабличныйДокумент;
	Таб.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
	Таб.АвтоМасштаб = Ложь;
	Таб.МасштабПечати = 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

См. также

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

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

18000 руб.

06.10.2023    13410    34    7    

67

SALE! 20%

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

Универсальная обработка для загрузки документов из Excel в 1С одним нажатием. Не требует указания параметров (номера колонок, номер первой строки таблицы и т.д.) и предварительной настройки. Просто выбираете файл Excel, документ 1С и нажимаете кнопку "Загрузить". Обработка сама находит таблицу в файле Excel, необходимые для загрузки данные в ней (номенклатура, количество, НДС, цена, сумма) и загружает ее в 1С. Вместе с номенклатурой может найти контрагента, номер и дату документа, штрих-коды, серии ГТД, страну и т.д. Распознает документы ЛЮБОЙ ФОРМЫ (УПД, ТОРГ-12, заказ, отчет комиссионера и т.д.). Не требует MS Office. Для поиска таблиц используются методы эвристического поиска. Загружает только то, что нужно, т.е. пропускает повторы шапки таблицы, заголовки, промежуточные итоги, подписи и т.д. Содержит модуль работы с электронной почтой и api-загрузчик отчетов о продажах маркетплейсов.

6000 5100 руб.

09.11.2016    229723    983    894    

985

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

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

14800 руб.

01.11.2012    92726    106    1    

115

Печатные формы Производство готовой продукции (работ, услуг) Бухгалтер Платформа 1С v8.3 Бухгалтерский учет Оперативный учет 1С:Бухгалтерия 3.0 Строительство Россия Бухгалтерский учет Платные (руб)

Откройте для себя заполнение КС-2 и КС-3 в "1С:Бухгалтерия 3.0". Вы получаете удобство, скорость и систему, чтобы заполнить, распечатать и сохранить формы КС-2 и КС-3 из документов "Оказание производственных услуг" или "Реализация товаров услуг". Вы можете заполнить дополнительную информацию о материалах из документов "Требование-накладная" и указать сведения, которые не предусмотрены типовой конфигурацией "1С:Бухгалтерия 3.0". Так же доступно множество настроек для формирования КС-2 и КС-3.

3600 руб.

13.02.2019    93138    428    44    

409

SALE! 50%

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

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

70000 35000 руб.

30.11.2022    13156    16    24    

22

Печатные формы Логистика, склад и ТМЦ Бухгалтер Платформа 1С v8.3 Бухгалтерский учет Оперативный учет Управляемые формы 1С:Комплексная автоматизация 2.х Транспорт, автопарки, такси Оптовая торговля, дистрибуция, логистика Россия Бухгалтерский учет Управленческий учет Платные (руб)

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

13200 руб.

27.06.2023    3238    9    1    

8

Печатные формы Взаиморасчеты Оптовая торговля Производство готовой продукции (работ, услуг) Акт сверки Бухгалтер Пользователь Оперативный учет Управляемые формы 1С:Управление торговлей 11 Россия Бухгалтерский учет Управленческий учет Платные (руб)

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

12000 руб.

13.03.2018    59036    200    76    

119
Оставьте свое сообщение