День добрый! Есть отчет для вывода расчета оплаты по путевым. То есть надо вставить разрыв страницы но как это сделать не знаю( Еще ко всему размер плавающий там в одном расчете может быть несколько работ.
Есть пример в своей конфигурации (расчетные листки) но там так мудрено написано что просто взять от туда механизм не получается.
Есть пример в своей конфигурации (расчетные листки) но там так мудрено написано что просто взять от туда механизм не получается.
Процедура СформироватьОтчет(ДокументРезультат, ПоказыватьЗаголовок = Ложь, ВысотаЗаголовка = 0, ТолькоЗаголовок = Ложь, ОчищатьТабличныйДокумент = Истина) Экспорт
Если НЕ ЗначениеЗаполнено(ДатаНач) Тогда
Сообщить("Не указана дата начала периода!", СтатусСообщения.Важное);
Возврат
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ДатаКон) Тогда
Сообщить("Не указана дата окончания периода!", СтатусСообщения.Важное);
Возврат
КонецЕсли;
Если ОчищатьТабличныйДокумент Тогда
ДокументРезультат.Очистить();
КонецЕсли;
Макет = ПолучитьМакет("Макет");
ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
ОбластьТаблица = Макет.ПолучитьОбласть("Таблица");
ОбластьИтого = Макет.ПолучитьОбласть("Итого");
ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
//Линия = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная, 1);
Запрос = Новый Запрос();
Запрос.Текст =
"ВЫБРАТЬ
| ПутевойТракторный.Дата КАК Дата,
| ПутевойТракторный.ФизЛицо,
| ПутевойТракторный.Трактор,
| ПутевойТракторный.Ссылка,
| ПутевойТракторный.Ответственный,
| ПутевойТракторный.НомерБланка,
| ПутевойТракторный.Выработка.(
| Ссылка,
| НомерСтроки,
| Подразделение,
| СпособОтражения,
| ТехнологическаяОперация,
| Количество,
| Дни,
| Часы,
| ВидРасчета,
| Расценка,
| НормаВыработки,
| НормаРасхода,
| Сумма,
| Расход,
| РаботаДвигателя,
| РасходФакт,
| ТипОперации,
| Прицеп
| )
|ИЗ
| Документ.ПутевойТракторный КАК ПутевойТракторный
|ГДЕ
| ПутевойТракторный.ФизЛицо = &Работник
| И ПутевойТракторный.Дата >= &ДатаНач
| И ПутевойТракторный.Дата <= &ДатаКон
|
|УПОРЯДОЧИТЬ ПО
| Дата" ;
Запрос.УстановитьПараметр("Работник", Работник);
Запрос.УстановитьПараметр("ДатаНач", ДатаНач);
Запрос.УстановитьПараметр("ДатаКон", ДатаКон);
Итог = Запрос.Выполнить();
Выборка = Итог.Выбрать();
ПОка Выборка.Следующий() ЦИкл
ОбластьШапка.Параметры.НомерЛиста = Выборка.НомерБланка;
ОбластьШапка.Параметры.Авто = Выборка.Трактор;
ОбластьШапка.Параметры.КодА = Выборка.Трактор.Код;
ОбластьШапка.Параметры.День = День(Выборка.Дата);
СтрокаДата = Формат(Выборка.Дата, "ДФ=ММММ");
ОтчетныйМесяцСклонение(СтрокаДата);
ОбластьШапка.Параметры.Месяц = НРег(СтрокаДата);
ОбластьШапка.Параметры.Год = Год(Выборка.Дата);
ОбластьШапка.Параметры.Сотрудник = Выборка.ФизЛицо.Код + " " + Выборка.ФизЛицо;
ДокументРезультат.Вывести(ОбластьШапка);
Запрос1 = Новый Запрос();
Запрос1.Текст =
"ВЫБРАТЬ
| ПутевойТракторныйВыработка.Ссылка,
| ПутевойТракторныйВыработка.НомерСтроки,
| ПутевойТракторныйВыработка.Подразделение,
| ПутевойТракторныйВыработка.СпособОтражения,
| ПутевойТракторныйВыработка.ТехнологическаяОперация,
| ПутевойТракторныйВыработка.Количество КАК Количество,
| ПутевойТракторныйВыработка.Дни КАК Дни,
| ПутевойТракторныйВыработка.Часы КАК Часы,
| ПутевойТракторныйВыработка.ВидРасчета,
| ПутевойТракторныйВыработка.Расценка,
| ПутевойТракторныйВыработка.НормаВыработки,
| ПутевойТракторныйВыработка.НормаРасхода,
| ПутевойТракторныйВыработка.Сумма КАК Сумма,
| ПутевойТракторныйВыработка.Расход КАК Расход,
| ПутевойТракторныйВыработка.РаботаДвигателя,
| ПутевойТракторныйВыработка.РасходФакт КАК РасходФакт,
| ПутевойТракторныйВыработка.ТипОперации,
| ПутевойТракторныйВыработка.Прицеп,
| ПутевойТракторный.Ссылка КАК Ссылка
|ИЗ
| Документ.ПутевойТракторный.Выработка КАК ПутевойТракторныйВыработка
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПутевойТракторный КАК ПутевойТракторный
| ПО ПутевойТракторныйВыработка.Ссылка = ПутевойТракторный.Ссылка
|ГДЕ
| ПутевойТракторныйВыработка.Ссылка = &Ссылка";
Запрос1.УстановитьПараметр("Ссылка", Выборка.Ссылка);
Итог1 = Запрос1.Выполнить().Выбрать();
Пока Итог1.Следующий() Цикл
//ТабРезультатЗапроса= Итог1.Выбрать();
ОбластьТаблица.Параметры.НомерПП = Итог1.НомерСтроки;
ОбластьТаблица.Параметры.СпособОтражения = Итог1.СпособОтражения;
ОбластьТаблица.Параметры.ТехОперация = Итог1.ТехнологическаяОперация;
ОбластьТаблица.Параметры.Кол = Итог1.Количество;
ОбластьТаблица.Параметры.ОтрДней = Итог1.Дни;
ОбластьТаблица.Параметры.ОтрЧасы = Итог1.Часы;
ОбластьТаблица.Параметры.ВидРасчета = Итог1.ВидРасчета.Код;
ОбластьТаблица.Параметры.Расценка = Итог1.Расценка;
ОбластьТаблица.Параметры.Сумма = Итог1.Сумма;
ОбластьТаблица.Параметры.РабДвиг = Итог1.РаботаДвигателя;
ОбластьТаблица.Параметры.НормВыраб = Итог1.НормаВыработки;
ОбластьТаблица.Параметры.НормРасх = Итог1.НормаРасхода;
ОбластьТаблица.Параметры.РасхНорм = Итог1.Расход;
ОбластьТаблица.Параметры.РасхФакт = Итог1.РасходФакт;
ДокументРезультат.Вывести(ОбластьТаблица);
КонецЦикла;
Запрос2 = Новый Запрос();
Запрос2.Текст =
"ВЫБРАТЬ
| ПутевойТракторныйВыработка.Ссылка,
| ПутевойТракторныйВыработка.Количество КАК Количество,
| ПутевойТракторныйВыработка.Дни КАК Дни,
| ПутевойТракторныйВыработка.Часы КАК Часы,
| ПутевойТракторныйВыработка.Сумма КАК Сумма,
| ПутевойТракторныйВыработка.Расход КАК Расход,
| ПутевойТракторныйВыработка.РасходФакт КАК РасходФакт,
| ПутевойТракторный.Ссылка КАК Ссылка
|ИЗ
| Документ.ПутевойТракторный.Выработка КАК ПутевойТракторныйВыработка
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПутевойТракторный КАК ПутевойТракторный
| ПО ПутевойТракторныйВыработка.Ссылка = ПутевойТракторный.Ссылка
|ГДЕ
| ПутевойТракторныйВыработка.Ссылка = &Ссылка
|ИТОГИ
| СУММА(Количество),
| СУММА(Дни),
| СУММА(Часы),
| СУММА(Сумма),
| СУММА(Расход),
| СУММА(РасходФакт)
|ПО
| ОБЩИЕ";
Запрос2.УстановитьПараметр("Ссылка", Выборка.Ссылка);
Итог2 = Запрос2.Выполнить().Выбрать();
Итог2.Следующий();
ОбластьИтого.Параметры.ИтогоКол = Итог2.Количество;
ОбластьИтого.Параметры.ИтогоДней = Итог2.Дни;
ОбластьИтого.Параметры.ИтогоЧасов = Итог2.Часы;
ОбластьИтого.Параметры.ИтогоСумма = Итог2.Сумма;
ОбластьИтого.Параметры.ИтогоРасНорм = Итог2.Расход;
ОбластьИтого.Параметры.ИтогоРасФакт = Итог2.РасходФакт;
ДокументРезультат.Вывести(ОбластьИтого);
ОбластьПодвал.Параметры.Ответственный = Выборка.Ответственный;
ДокументРезультат.Вывести(ОбластьПодвал);
//МассивОбластей = Новый Массив;
//МассивОбластей.Добавить(ОбластьШапка);
//МассивОбластей.Добавить(ОбластьТаблица);
//МассивОбластей.Добавить(ОбластьИтого);
//МассивОбластей.Добавить(ОбластьПодвал);
// Если ДокументРезультат.ПроверитьВывод(МассивОбластей) Тогда
// ДокументРезультат.ВывестиГоризонтальныйРазделительСтраниц();
// КонецЕсли
КонецЦикла;
КонецПроцедуры
ПоказатьПрикрепленные файлы:
По теме из базы знаний
- Фискальный регистратор из принтера чеков (COM и Windows принтеры)
- Добавление команд печати в свои документы в Бухгалтерии 3.0
- Параметризация печатных форм под контрагентов (подключаемое расширение)
- Произвольные / рассчитываемые параметры в шаблонах документов
- Как установка модуля AS WMS помогла подготовить товары и ускорить отгрузку заказов на маркетплейсы на 30%. Автоматизация склада интернет-магазина
Найденные решения
Всем спасибо получилось вставляю код может быть кому такой пример пригодится.
Процедура СформироватьОтчет(ДокументРезультат, ПоказыватьЗаголовок = Ложь, ВысотаЗаголовка = 0, ТолькоЗаголовок = Ложь, ОчищатьТабличныйДокумент = Истина) Экспорт
Если НЕ ЗначениеЗаполнено(ДатаНач) Тогда
Сообщить("Не указана дата начала периода!", СтатусСообщения.Важное);
Возврат
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ДатаКон) Тогда
Сообщить("Не указана дата окончания периода!", СтатусСообщения.Важное);
Возврат
КонецЕсли;
Если ОчищатьТабличныйДокумент Тогда
ДокументРезультат.Очистить();
КонецЕсли;
Макет = ПолучитьМакет("Макет");
ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
ОбластьТаблица = Макет.ПолучитьОбласть("Таблица");
ОбластьИтого = Макет.ПолучитьОбласть("Итого");
ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
//Линия = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная, 1);
Запрос = Новый Запрос();
Запрос.Текст =
"ВЫБРАТЬ
| ПутевойТракторный.Дата КАК Дата,
| ПутевойТракторный.ФизЛицо,
| ПутевойТракторный.Трактор,
| ПутевойТракторный.Ссылка,
| ПутевойТракторный.Ответственный,
| ПутевойТракторный.НомерБланка,
| ПутевойТракторный.Выработка.(
| Ссылка,
| НомерСтроки,
| Подразделение,
| СпособОтражения,
| ТехнологическаяОперация,
| Количество,
| Дни,
| Часы,
| ВидРасчета,
| Расценка,
| НормаВыработки,
| НормаРасхода,
| Сумма,
| Расход,
| РаботаДвигателя,
| РасходФакт,
| ТипОперации,
| Прицеп
| )
|ИЗ
| Документ.ПутевойТракторный КАК ПутевойТракторный
|ГДЕ
| ПутевойТракторный.ФизЛицо = &Работник
| И ПутевойТракторный.Дата >= &ДатаНач
| И ПутевойТракторный.Дата <= &ДатаКон
|
|УПОРЯДОЧИТЬ ПО
| Дата" ;
Запрос.УстановитьПараметр("Работник", Работник);
Запрос.УстановитьПараметр("ДатаНач", ДатаНач);
Запрос.УстановитьПараметр("ДатаКон", ДатаКон);
Итог = Запрос.Выполнить();
Выборка = Итог.Выбрать();
ПОка Выборка.Следующий() ЦИкл
ОбластьШапка.Параметры.НомерЛиста = Выборка.НомерБланка;
ОбластьШапка.Параметры.Авто = Выборка.Трактор;
ОбластьШапка.Параметры.КодА = Выборка.Трактор.Код;
ОбластьШапка.Параметры.День = День(Выборка.Дата);
СтрокаДата = Формат(Выборка.Дата, "ДФ=ММММ");
ОтчетныйМесяцСклонение(СтрокаДата);
ОбластьШапка.Параметры.Месяц = НРег(СтрокаДата);
ОбластьШапка.Параметры.Год = Год(Выборка.Дата);
ОбластьШапка.Параметры.Сотрудник = Выборка.ФизЛицо.Код + " " + Выборка.ФизЛицо;
//Перенести дальше, после проверки вывода
//ДокументРезультат.Вывести(ОбластьШапка);
Запрос1 = Новый Запрос();
Запрос1.Текст =
"ВЫБРАТЬ
| ПутевойТракторныйВыработка.Ссылка,
| ПутевойТракторныйВыработка.НомерСтроки,
| ПутевойТракторныйВыработка.Подразделение,
| ПутевойТракторныйВыработка.СпособОтражения,
| ПутевойТракторныйВыработка.ТехнологическаяОперация,
| ПутевойТракторныйВыработка.Количество КАК Количество,
| ПутевойТракторныйВыработка.Дни КАК Дни,
| ПутевойТракторныйВыработка.Часы КАК Часы,
| ПутевойТракторныйВыработка.ВидРасчета,
| ПутевойТракторныйВыработка.Расценка,
| ПутевойТракторныйВыработка.НормаВыработки,
| ПутевойТракторныйВыработка.НормаРасхода,
| ПутевойТракторныйВыработка.Сумма КАК Сумма,
| ПутевойТракторныйВыработка.Расход КАК Расход,
| ПутевойТракторныйВыработка.РаботаДвигателя,
| ПутевойТракторныйВыработка.РасходФакт КАК РасходФакт,
| ПутевойТракторныйВыработка.ТипОперации,
| ПутевойТракторныйВыработка.Прицеп,
| ПутевойТракторный.Ссылка КАК Ссылка
|ИЗ
| Документ.ПутевойТракторный.Выработка КАК ПутевойТракторныйВыработка
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПутевойТракторный КАК ПутевойТракторный
| ПО ПутевойТракторныйВыработка.Ссылка = ПутевойТракторный.Ссылка
|ГДЕ
| ПутевойТракторныйВыработка.Ссылка = &Ссылка";
Запрос1.УстановитьПараметр("Ссылка", Выборка.Ссылка);
Итог1 = Запрос1.Выполнить().Выбрать();
//Нужен промежуточный Табличный документ, собрать таблицу в нем
ТабДокТаблица = Новый ТабличныйДокумент;
Пока Итог1.Следующий() Цикл
ОбластьТаблица.Параметры.НомерПП = Итог1.НомерСтроки;
ОбластьТаблица.Параметры.СпособОтражения = Итог1.СпособОтражения;
ОбластьТаблица.Параметры.ТехОперация = Итог1.ТехнологическаяОперация;
ОбластьТаблица.Параметры.Кол = Итог1.Количество;
ОбластьТаблица.Параметры.ОтрДней = Итог1.Дни;
ОбластьТаблица.Параметры.ОтрЧасы = Итог1.Часы;
ОбластьТаблица.Параметры.ВидРасчета = Итог1.ВидРасчета.Код;
ОбластьТаблица.Параметры.Расценка = Итог1.Расценка;
ОбластьТаблица.Параметры.Сумма = Итог1.Сумма;
ОбластьТаблица.Параметры.РабДвиг = Итог1.РаботаДвигателя;
ОбластьТаблица.Параметры.НормВыраб = Итог1.НормаВыработки;
ОбластьТаблица.Параметры.НормРасх = Итог1.НормаРасхода;
ОбластьТаблица.Параметры.РасхНорм = Итог1.Расход;
ОбластьТаблица.Параметры.РасхФакт = Итог1.РасходФакт;
//Заменить на промежуточный Табличный документ
//ДокументРезультат.Вывести(ОбластьТаблица);
ТабДокТаблица.Вывести(ОбластьТаблица);
КонецЦикла;
Запрос2 = Новый Запрос();
Запрос2.Текст =
"ВЫБРАТЬ
| ПутевойТракторныйВыработка.Ссылка,
| ПутевойТракторныйВыработка.Количество КАК Количество,
| ПутевойТракторныйВыработка.Дни КАК Дни,
| ПутевойТракторныйВыработка.Часы КАК Часы,
| ПутевойТракторныйВыработка.Сумма КАК Сумма,
| ПутевойТракторныйВыработка.Расход КАК Расход,
| ПутевойТракторныйВыработка.РасходФакт КАК РасходФакт,
| ПутевойТракторный.Ссылка КАК Ссылка
|ИЗ
| Документ.ПутевойТракторный.Выработка КАК ПутевойТракторныйВыработка
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПутевойТракторный КАК ПутевойТракторный
| ПО ПутевойТракторныйВыработка.Ссылка = ПутевойТракторный.Ссылка
|ГДЕ
| ПутевойТракторныйВыработка.Ссылка = &Ссылка
|ИТОГИ
| СУММА(Количество),
| СУММА(Дни),
| СУММА(Часы),
| СУММА(Сумма),
| СУММА(Расход),
| СУММА(РасходФакт)
|ПО
| ОБЩИЕ";
Запрос2.УстановитьПараметр("Ссылка", Выборка.Ссылка);
Итог2 = Запрос2.Выполнить().Выбрать();
Итог2.Следующий();
ОбластьИтого.Параметры.ИтогоКол = Итог2.Количество;
ОбластьИтого.Параметры.ИтогоДней = Итог2.Дни;
ОбластьИтого.Параметры.ИтогоЧасов = Итог2.Часы;
ОбластьИтого.Параметры.ИтогоСумма = Итог2.Сумма;
ОбластьИтого.Параметры.ИтогоРасНорм = Итог2.Расход;
ОбластьИтого.Параметры.ИтогоРасФакт = Итог2.РасходФакт;
//Перенести дальше, после проверки вывода
//ДокументРезультат.Вывести(ОбластьИтого);
ОбластьПодвал.Параметры.Ответственный = Выборка.Ответственный;
//Перенести дальше, после проверки вывода
//ДокументРезультат.Вывести(ОбластьПодвал);
МассивОбластей = Новый Массив;
МассивОбластей.Добавить(ОбластьШапка);
МассивОбластей.Добавить(ТабДокТаблица); // < -- Проверяем не одну строку, а таблицу целиком
МассивОбластей.Добавить(ОбластьИтого);
МассивОбластей.Добавить(ОбластьПодвал);
Если (Не ДокументРезультат.ПроверитьВывод(МассивОбластей)) Тогда
// Или (Ном = КоличествоСтрок) Тогда
ДокументРезультат.ВывестиГоризонтальныйРазделительСтраниц();
МассивОбластей.Очистить();
КонецЕсли;
//После проверки выводим области в документ
ДокументРезультат.Вывести(ОбластьШапка);
ДокументРезультат.Вывести(ТабДокТаблица);
ДокументРезультат.Вывести(ОбластьИтого);
ДокументРезультат.Вывести(ОбластьПодвал);
ДокументРезультат.Автомасштаб = Истина;
КонецЦикла;
КонецПроцедуры
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(13) ну да. Проще говоря решается ручным выводом Процессора компоновки данных
Если совсем сложно будет выходить, можно ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент заменить на ПроцессорВыводаРезультатаКомпоновкиДанныхВТКоллекциюЗначений и руками вывести как печатную форму. Получится намного проще
ТабличныйДокумент.Очистить();
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки, Истина);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ТабличныйДокумент);
ПроцессорВывода.НачатьВывод();
Пока Не ПроцессорКомпоновкиДанных.Следующий() = НЕопределено Цикл
//тут в зависимости от структуры отчета проверяете вмещается или нет. Для этого используйте как раз ТабДокумент.ПроверитьВывод())
ПроцессорВывода .Вывестиэлемент(ПроцессорКомпоновкиДанных);
КонецЦикла;
ПоказатьЕсли совсем сложно будет выходить, можно ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент заменить на ПроцессорВыводаРезультатаКомпоновкиДанныхВТКоллекциюЗначений
Создай Макет и нарисуй отчет.
На форме создаем реквизит с типом ТабличныйДокумент и туда выводим результат.
Разрыв вставляется туда, куда нужно. Если нужно после табличной части, значит после и вставляется.
На форме создаем реквизит с типом ТабличныйДокумент и туда выводим результат.
Разрыв вставляется туда, куда нужно. Если нужно после табличной части, значит после и вставляется.
ТабДок.ВывестиГоризонтальныйРазделительСтраниц(); // Можно принудительно вставить разрывы страниц
(5) Пример
ОбластьМакета.Параметры.Количество = Количество;
ОбластьМакета.Параметры.СуммаСНДС = ВсегоСНДС;
ОбластьМакета.Параметры.СуммаБезНДС = ВсегоСНДС;
ОбластьМакета.Параметры.СуммаНДС = 0;
ОбластьМакета.Параметры.Цена = Цена;
ОбластьМакета.Параметры.ТоварНаименование = СокрЛП(ВыборкаСтрокТовары.ТоварНаименование);
ОбластьМакета.Параметры.КоррСчет = СокрЛП(ВыборкаСтрокТовары.СчетУчета);
ОбластьМакета.Параметры.НоменклатурныйНомер = ВыборкаСтрокТовары.ТоварКод;
МассивОбластей =Новый Массив;
МассивОбластей.Добавить(ОбластьМакета);
Если (Не ТабДокумент.ПроверитьВывод(МассивОбластей)) Тогда
// Или (Ном = КоличествоСтрок) Тогда
НомерСтраницы = НомерСтраницы + 1;
ЗаголовокТаблицы.Параметры.НомерСтраницы = "Страница " + НомерСтраницы;
ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
ТабДокумент.Вывести(ЗаголовокТаблицы);
МассивОбластей.Очистить();
КонецЕсли;
ТабДокумент.Вывести(ОбластьМакета);
Показать
(11)Проверку надо делать ДО вывода областей, т.е. собери все ДокументРезультат.Вывести() в одно место в конце, таблицу нужно будет выводить в отдельный ТабличныйДокумент, вновь созданный. Типа такого получится:
Текст кстати в коде очень трудно читать, расстановкой отступов я смотрю никто не заморачивался...
Процедура СформироватьОтчет(ДокументРезультат, ПоказыватьЗаголовок = Ложь, ВысотаЗаголовка = 0, ТолькоЗаголовок = Ложь, ОчищатьТабличныйДокумент = Истина) Экспорт
Если НЕ ЗначениеЗаполнено(ДатаНач) Тогда
Сообщить("Не указана дата начала периода!", СтатусСообщения.Важное);
Возврат
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ДатаКон) Тогда
Сообщить("Не указана дата окончания периода!", СтатусСообщения.Важное);
Возврат
КонецЕсли;
Если ОчищатьТабличныйДокумент Тогда
ДокументРезультат.Очистить();
КонецЕсли;
Макет = ПолучитьМакет("Макет");
ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
ОбластьТаблица = Макет.ПолучитьОбласть("Таблица");
ОбластьИтого = Макет.ПолучитьОбласть("Итого");
ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
//Линия = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная, 1);
Запрос = Новый Запрос();
Запрос.Текст =
"ВЫБРАТЬ
| ПутевойТракторный.Дата КАК Дата,
| ПутевойТракторный.ФизЛицо,
| ПутевойТракторный.Трактор,
| ПутевойТракторный.Ссылка,
| ПутевойТракторный.Ответственный,
| ПутевойТракторный.НомерБланка,
| ПутевойТракторный.Выработка.(
| Ссылка,
| НомерСтроки,
| Подразделение,
| СпособОтражения,
| ТехнологическаяОперация,
| Количество,
| Дни,
| Часы,
| ВидРасчета,
| Расценка,
| НормаВыработки,
| НормаРасхода,
| Сумма,
| Расход,
| РаботаДвигателя,
| РасходФакт,
| ТипОперации,
| Прицеп
| )
|ИЗ
| Документ.ПутевойТракторный КАК ПутевойТракторный
|ГДЕ
| ПутевойТракторный.ФизЛицо = &Работник
| И ПутевойТракторный.Дата >= &ДатаНач
| И ПутевойТракторный.Дата <= &ДатаКон
|
|УПОРЯДОЧИТЬ ПО
| Дата" ;
Запрос.УстановитьПараметр("Работник", Работник);
Запрос.УстановитьПараметр("ДатаНач", ДатаНач);
Запрос.УстановитьПараметр("ДатаКон", ДатаКон);
Итог = Запрос.Выполнить();
Выборка = Итог.Выбрать();
ПОка Выборка.Следующий() ЦИкл
ОбластьШапка.Параметры.НомерЛиста = Выборка.НомерБланка;
ОбластьШапка.Параметры.Авто = Выборка.Трактор;
ОбластьШапка.Параметры.КодА = Выборка.Трактор.Код;
ОбластьШапка.Параметры.День = День(Выборка.Дата);
СтрокаДата = Формат(Выборка.Дата, "ДФ=ММММ");
ОтчетныйМесяцСклонение(СтрокаДата);
ОбластьШапка.Параметры.Месяц = НРег(СтрокаДата);
ОбластьШапка.Параметры.Год = Год(Выборка.Дата);
ОбластьШапка.Параметры.Сотрудник = Выборка.ФизЛицо.Код + " " + Выборка.ФизЛицо;
//Перенести дальше, после проверки вывода
//ДокументРезультат.Вывести(ОбластьШапка);
Запрос1 = Новый Запрос();
Запрос1.Текст =
"ВЫБРАТЬ
| ПутевойТракторныйВыработка.Ссылка,
| ПутевойТракторныйВыработка.НомерСтроки,
| ПутевойТракторныйВыработка.Подразделение,
| ПутевойТракторныйВыработка.СпособОтражения,
| ПутевойТракторныйВыработка.ТехнологическаяОперация,
| ПутевойТракторныйВыработка.Количество КАК Количество,
| ПутевойТракторныйВыработка.Дни КАК Дни,
| ПутевойТракторныйВыработка.Часы КАК Часы,
| ПутевойТракторныйВыработка.ВидРасчета,
| ПутевойТракторныйВыработка.Расценка,
| ПутевойТракторныйВыработка.НормаВыработки,
| ПутевойТракторныйВыработка.НормаРасхода,
| ПутевойТракторныйВыработка.Сумма КАК Сумма,
| ПутевойТракторныйВыработка.Расход КАК Расход,
| ПутевойТракторныйВыработка.РаботаДвигателя,
| ПутевойТракторныйВыработка.РасходФакт КАК РасходФакт,
| ПутевойТракторныйВыработка.ТипОперации,
| ПутевойТракторныйВыработка.Прицеп,
| ПутевойТракторный.Ссылка КАК Ссылка
|ИЗ
| Документ.ПутевойТракторный.Выработка КАК ПутевойТракторныйВыработка
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПутевойТракторный КАК ПутевойТракторный
| ПО ПутевойТракторныйВыработка.Ссылка = ПутевойТракторный.Ссылка
|ГДЕ
| ПутевойТракторныйВыработка.Ссылка = &Ссылка";
Запрос1.УстановитьПараметр("Ссылка", Выборка.Ссылка);
Итог1 = Запрос1.Выполнить().Выбрать();
Пока Итог1.Следующий() Цикл
//ТабРезультатЗапроса= Итог1.Выбрать();
//Нужен промежуточный Табличный документ, собрать таблицу в нем
ТабДокТаблица = Новый ТабличныйДокумент;
ОбластьТаблица.Параметры.НомерПП = Итог1.НомерСтроки;
ОбластьТаблица.Параметры.СпособОтражения = Итог1.СпособОтражения;
ОбластьТаблица.Параметры.ТехОперация = Итог1.ТехнологическаяОперация;
ОбластьТаблица.Параметры.Кол = Итог1.Количество;
ОбластьТаблица.Параметры.ОтрДней = Итог1.Дни;
ОбластьТаблица.Параметры.ОтрЧасы = Итог1.Часы;
ОбластьТаблица.Параметры.ВидРасчета = Итог1.ВидРасчета.Код;
ОбластьТаблица.Параметры.Расценка = Итог1.Расценка;
ОбластьТаблица.Параметры.Сумма = Итог1.Сумма;
ОбластьТаблица.Параметры.РабДвиг = Итог1.РаботаДвигателя;
ОбластьТаблица.Параметры.НормВыраб = Итог1.НормаВыработки;
ОбластьТаблица.Параметры.НормРасх = Итог1.НормаРасхода;
ОбластьТаблица.Параметры.РасхНорм = Итог1.Расход;
ОбластьТаблица.Параметры.РасхФакт = Итог1.РасходФакт;
//Заменить на промежуточный Табличный документ
//ДокументРезультат.Вывести(ОбластьТаблица);
ТабДокТаблица.Вывести(ОбластьТаблица);
КонецЦикла;
Запрос2 = Новый Запрос();
Запрос2.Текст =
"ВЫБРАТЬ
| ПутевойТракторныйВыработка.Ссылка,
| ПутевойТракторныйВыработка.Количество КАК Количество,
| ПутевойТракторныйВыработка.Дни КАК Дни,
| ПутевойТракторныйВыработка.Часы КАК Часы,
| ПутевойТракторныйВыработка.Сумма КАК Сумма,
| ПутевойТракторныйВыработка.Расход КАК Расход,
| ПутевойТракторныйВыработка.РасходФакт КАК РасходФакт,
| ПутевойТракторный.Ссылка КАК Ссылка
|ИЗ
| Документ.ПутевойТракторный.Выработка КАК ПутевойТракторныйВыработка
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПутевойТракторный КАК ПутевойТракторный
| ПО ПутевойТракторныйВыработка.Ссылка = ПутевойТракторный.Ссылка
|ГДЕ
| ПутевойТракторныйВыработка.Ссылка = &Ссылка
|ИТОГИ
| СУММА(Количество),
| СУММА(Дни),
| СУММА(Часы),
| СУММА(Сумма),
| СУММА(Расход),
| СУММА(РасходФакт)
|ПО
| ОБЩИЕ";
Запрос2.УстановитьПараметр("Ссылка", Выборка.Ссылка);
Итог2 = Запрос2.Выполнить().Выбрать();
Итог2.Следующий();
ОбластьИтого.Параметры.ИтогоКол = Итог2.Количество;
ОбластьИтого.Параметры.ИтогоДней = Итог2.Дни;
ОбластьИтого.Параметры.ИтогоЧасов = Итог2.Часы;
ОбластьИтого.Параметры.ИтогоСумма = Итог2.Сумма;
ОбластьИтого.Параметры.ИтогоРасНорм = Итог2.Расход;
ОбластьИтого.Параметры.ИтогоРасФакт = Итог2.РасходФакт;
//Перенести дальше, после проверки вывода
//ДокументРезультат.Вывести(ОбластьИтого);
ОбластьПодвал.Параметры.Ответственный = Выборка.Ответственный;
//Перенести дальше, после проверки вывода
//ДокументРезультат.Вывести(ОбластьПодвал);
МассивОбластей = Новый Массив;
МассивОбластей.Добавить(ОбластьШапка);
МассивОбластей.Добавить(ТабДокТаблица); // < -- Проверяем не одну строку, а таблицу целиком
МассивОбластей.Добавить(ОбластьИтого);
МассивОбластей.Добавить(ОбластьПодвал);
Если ДокументРезультат.ПроверитьВывод(МассивОбластей) Тогда
ДокументРезультат.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли
//После проверки выводим области в документ
ДокументРезультат.Вывести(ОбластьШапка);
ДокументРезультат.Вывести(ТабДокТаблица);
ДокументРезультат.Вывести(ОбластьИтого);
ДокументРезультат.Вывести(ОбластьПодвал);
КонецЦикла;
КонецПроцедуры
ПоказатьТекст кстати в коде очень трудно читать, расстановкой отступов я смотрю никто не заморачивался...
Всем спасибо получилось вставляю код может быть кому такой пример пригодится.
Процедура СформироватьОтчет(ДокументРезультат, ПоказыватьЗаголовок = Ложь, ВысотаЗаголовка = 0, ТолькоЗаголовок = Ложь, ОчищатьТабличныйДокумент = Истина) Экспорт
Если НЕ ЗначениеЗаполнено(ДатаНач) Тогда
Сообщить("Не указана дата начала периода!", СтатусСообщения.Важное);
Возврат
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ДатаКон) Тогда
Сообщить("Не указана дата окончания периода!", СтатусСообщения.Важное);
Возврат
КонецЕсли;
Если ОчищатьТабличныйДокумент Тогда
ДокументРезультат.Очистить();
КонецЕсли;
Макет = ПолучитьМакет("Макет");
ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
ОбластьТаблица = Макет.ПолучитьОбласть("Таблица");
ОбластьИтого = Макет.ПолучитьОбласть("Итого");
ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
//Линия = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная, 1);
Запрос = Новый Запрос();
Запрос.Текст =
"ВЫБРАТЬ
| ПутевойТракторный.Дата КАК Дата,
| ПутевойТракторный.ФизЛицо,
| ПутевойТракторный.Трактор,
| ПутевойТракторный.Ссылка,
| ПутевойТракторный.Ответственный,
| ПутевойТракторный.НомерБланка,
| ПутевойТракторный.Выработка.(
| Ссылка,
| НомерСтроки,
| Подразделение,
| СпособОтражения,
| ТехнологическаяОперация,
| Количество,
| Дни,
| Часы,
| ВидРасчета,
| Расценка,
| НормаВыработки,
| НормаРасхода,
| Сумма,
| Расход,
| РаботаДвигателя,
| РасходФакт,
| ТипОперации,
| Прицеп
| )
|ИЗ
| Документ.ПутевойТракторный КАК ПутевойТракторный
|ГДЕ
| ПутевойТракторный.ФизЛицо = &Работник
| И ПутевойТракторный.Дата >= &ДатаНач
| И ПутевойТракторный.Дата <= &ДатаКон
|
|УПОРЯДОЧИТЬ ПО
| Дата" ;
Запрос.УстановитьПараметр("Работник", Работник);
Запрос.УстановитьПараметр("ДатаНач", ДатаНач);
Запрос.УстановитьПараметр("ДатаКон", ДатаКон);
Итог = Запрос.Выполнить();
Выборка = Итог.Выбрать();
ПОка Выборка.Следующий() ЦИкл
ОбластьШапка.Параметры.НомерЛиста = Выборка.НомерБланка;
ОбластьШапка.Параметры.Авто = Выборка.Трактор;
ОбластьШапка.Параметры.КодА = Выборка.Трактор.Код;
ОбластьШапка.Параметры.День = День(Выборка.Дата);
СтрокаДата = Формат(Выборка.Дата, "ДФ=ММММ");
ОтчетныйМесяцСклонение(СтрокаДата);
ОбластьШапка.Параметры.Месяц = НРег(СтрокаДата);
ОбластьШапка.Параметры.Год = Год(Выборка.Дата);
ОбластьШапка.Параметры.Сотрудник = Выборка.ФизЛицо.Код + " " + Выборка.ФизЛицо;
//Перенести дальше, после проверки вывода
//ДокументРезультат.Вывести(ОбластьШапка);
Запрос1 = Новый Запрос();
Запрос1.Текст =
"ВЫБРАТЬ
| ПутевойТракторныйВыработка.Ссылка,
| ПутевойТракторныйВыработка.НомерСтроки,
| ПутевойТракторныйВыработка.Подразделение,
| ПутевойТракторныйВыработка.СпособОтражения,
| ПутевойТракторныйВыработка.ТехнологическаяОперация,
| ПутевойТракторныйВыработка.Количество КАК Количество,
| ПутевойТракторныйВыработка.Дни КАК Дни,
| ПутевойТракторныйВыработка.Часы КАК Часы,
| ПутевойТракторныйВыработка.ВидРасчета,
| ПутевойТракторныйВыработка.Расценка,
| ПутевойТракторныйВыработка.НормаВыработки,
| ПутевойТракторныйВыработка.НормаРасхода,
| ПутевойТракторныйВыработка.Сумма КАК Сумма,
| ПутевойТракторныйВыработка.Расход КАК Расход,
| ПутевойТракторныйВыработка.РаботаДвигателя,
| ПутевойТракторныйВыработка.РасходФакт КАК РасходФакт,
| ПутевойТракторныйВыработка.ТипОперации,
| ПутевойТракторныйВыработка.Прицеп,
| ПутевойТракторный.Ссылка КАК Ссылка
|ИЗ
| Документ.ПутевойТракторный.Выработка КАК ПутевойТракторныйВыработка
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПутевойТракторный КАК ПутевойТракторный
| ПО ПутевойТракторныйВыработка.Ссылка = ПутевойТракторный.Ссылка
|ГДЕ
| ПутевойТракторныйВыработка.Ссылка = &Ссылка";
Запрос1.УстановитьПараметр("Ссылка", Выборка.Ссылка);
Итог1 = Запрос1.Выполнить().Выбрать();
//Нужен промежуточный Табличный документ, собрать таблицу в нем
ТабДокТаблица = Новый ТабличныйДокумент;
Пока Итог1.Следующий() Цикл
ОбластьТаблица.Параметры.НомерПП = Итог1.НомерСтроки;
ОбластьТаблица.Параметры.СпособОтражения = Итог1.СпособОтражения;
ОбластьТаблица.Параметры.ТехОперация = Итог1.ТехнологическаяОперация;
ОбластьТаблица.Параметры.Кол = Итог1.Количество;
ОбластьТаблица.Параметры.ОтрДней = Итог1.Дни;
ОбластьТаблица.Параметры.ОтрЧасы = Итог1.Часы;
ОбластьТаблица.Параметры.ВидРасчета = Итог1.ВидРасчета.Код;
ОбластьТаблица.Параметры.Расценка = Итог1.Расценка;
ОбластьТаблица.Параметры.Сумма = Итог1.Сумма;
ОбластьТаблица.Параметры.РабДвиг = Итог1.РаботаДвигателя;
ОбластьТаблица.Параметры.НормВыраб = Итог1.НормаВыработки;
ОбластьТаблица.Параметры.НормРасх = Итог1.НормаРасхода;
ОбластьТаблица.Параметры.РасхНорм = Итог1.Расход;
ОбластьТаблица.Параметры.РасхФакт = Итог1.РасходФакт;
//Заменить на промежуточный Табличный документ
//ДокументРезультат.Вывести(ОбластьТаблица);
ТабДокТаблица.Вывести(ОбластьТаблица);
КонецЦикла;
Запрос2 = Новый Запрос();
Запрос2.Текст =
"ВЫБРАТЬ
| ПутевойТракторныйВыработка.Ссылка,
| ПутевойТракторныйВыработка.Количество КАК Количество,
| ПутевойТракторныйВыработка.Дни КАК Дни,
| ПутевойТракторныйВыработка.Часы КАК Часы,
| ПутевойТракторныйВыработка.Сумма КАК Сумма,
| ПутевойТракторныйВыработка.Расход КАК Расход,
| ПутевойТракторныйВыработка.РасходФакт КАК РасходФакт,
| ПутевойТракторный.Ссылка КАК Ссылка
|ИЗ
| Документ.ПутевойТракторный.Выработка КАК ПутевойТракторныйВыработка
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПутевойТракторный КАК ПутевойТракторный
| ПО ПутевойТракторныйВыработка.Ссылка = ПутевойТракторный.Ссылка
|ГДЕ
| ПутевойТракторныйВыработка.Ссылка = &Ссылка
|ИТОГИ
| СУММА(Количество),
| СУММА(Дни),
| СУММА(Часы),
| СУММА(Сумма),
| СУММА(Расход),
| СУММА(РасходФакт)
|ПО
| ОБЩИЕ";
Запрос2.УстановитьПараметр("Ссылка", Выборка.Ссылка);
Итог2 = Запрос2.Выполнить().Выбрать();
Итог2.Следующий();
ОбластьИтого.Параметры.ИтогоКол = Итог2.Количество;
ОбластьИтого.Параметры.ИтогоДней = Итог2.Дни;
ОбластьИтого.Параметры.ИтогоЧасов = Итог2.Часы;
ОбластьИтого.Параметры.ИтогоСумма = Итог2.Сумма;
ОбластьИтого.Параметры.ИтогоРасНорм = Итог2.Расход;
ОбластьИтого.Параметры.ИтогоРасФакт = Итог2.РасходФакт;
//Перенести дальше, после проверки вывода
//ДокументРезультат.Вывести(ОбластьИтого);
ОбластьПодвал.Параметры.Ответственный = Выборка.Ответственный;
//Перенести дальше, после проверки вывода
//ДокументРезультат.Вывести(ОбластьПодвал);
МассивОбластей = Новый Массив;
МассивОбластей.Добавить(ОбластьШапка);
МассивОбластей.Добавить(ТабДокТаблица); // < -- Проверяем не одну строку, а таблицу целиком
МассивОбластей.Добавить(ОбластьИтого);
МассивОбластей.Добавить(ОбластьПодвал);
Если (Не ДокументРезультат.ПроверитьВывод(МассивОбластей)) Тогда
// Или (Ном = КоличествоСтрок) Тогда
ДокументРезультат.ВывестиГоризонтальныйРазделительСтраниц();
МассивОбластей.Очистить();
КонецЕсли;
//После проверки выводим области в документ
ДокументРезультат.Вывести(ОбластьШапка);
ДокументРезультат.Вывести(ТабДокТаблица);
ДокументРезультат.Вывести(ОбластьИтого);
ДокументРезультат.Вывести(ОбластьПодвал);
ДокументРезультат.Автомасштаб = Истина;
КонецЦикла;
КонецПроцедуры
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот