Метод объекта не обнаружен(СформироватьЗаголовокДокумента)ЗУП 8.2

1. AndrewUs 11 04.03.13 17:39 Сейчас в теме
Здравствуйте, у меня такая проблема уже была, но я так и не понял, как была она решена. Выкладываю код внешней печатной формы ... может подскажите как быть. Только начинаю писать в 1С, поэтому могу до чего-то не догонять ... вы уж простите.


Печатная форма (Модуль):


// Внешняя печатная форма для документа "Оплата праздничных и выходных дней организаций"
//
Функция Печать() Экспорт

ПечатьПриказа();

КонецФункции // Печать

Функция ПечатьПриказа()

ТабДокумент = Новый ТабличныйДокумент;
ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ОплатаПраздничныхИВыходныхДнейОрганизаций_­ПриказОРаботеВВыходные";

Макет = ПолучитьМакет("ПриказОРаботеВВыходные");
ОбластьМакетаШапкаДокумента = Макет.ПолучитьОбласть("ШапкаДокумента");
ОбластьМакетаШапка = Макет.ПолучитьОбласть("Шапка");
ОбластьМакетаСтрока = Макет.ПолучитьОбласть("Строка");
ОбластьМакетаПодвал = Макет.ПолучитьОбласть("Подвал");

ВыборкаДляШапкиДокумента = СформироватьЗапросДляШапкиДокумента().Выбрать();
//ВыборкаРаботники = СформироватьЗапросДляТабличнойЧасти().Выбрать();

// Подсчитываем количество страниц документа - для корректного разбиения на страницы
ВсегоСтрокДокумента = СсылкаНаОбъект.Начисления.Количество();

// Массив с двумя строками - для разбиения на страницы
ВыводимыеОбласти = Новый Массив();
ВыводимыеОбласти.Добавить(ОбластьМакетаСтрока);

// Выводим шапку документа
Пока ВыборкаДляШапкиДокумента.Следующий() Цикл
ОбластьМакетаШапкаДокумента.Параметры.Заполнить(ВыборкаДляШапкиДокумента);
ОбластьМакетаШапкаДокумента.Параметры.НазваниеОрганизации = СокрЛП(ОбластьМакетаШапкаДокумента.Параметры.НазваниеОрганизации);
КонецЦикла;
ТабДокумент.Вывести(ОбластьМакетаШапкаДокумента);
ТабДокумент.Вывести(ОбластьМакетаШапка);

// Выводим данные по строкам документа
ВыведеноСтраниц = 1; ВыведеноСтрок = 0;
ОбластьМакетаСтрока.Параметры.Предост = "Без предоставления";
ОбластьМакетаСтрока.Параметры.Согл = "Согласен";
Для каждого ВыборкаРаботники из СсылкаНаОбъект.Начисления Цикл

ОбластьМакетаСтрока.Параметры.Заполнить(ВыборкаРаботники);
ОбластьМакетаСтрока.Параметры.ТабельныйНомер = ВыборкаРаботники.Сотрудник.Код;
ОбластьМакетаСтрока.Параметры.Подразделение = ВыборкаРаботники.ПодразделениеОрганизации;
// Получим текущую Должность
СтруктураОтбораТекПоложения = Новый Структура;
СтруктураОтбораТекПоложения.Вставить("Сотрудник",ВыборкаРаботники.Сотрудник);
ОтборТекПоложения = РегистрыСведений.РаботникиОрганизаций.ПолучитьПоследнее(ВыборкаРаботники.ДатаВыхода,СтруктураОтбораТекПоложения);
Если (ОтборТекПоложения.ПериодЗавершения <> '00.00.0000 00:00:00') Тогда
Если ОтборТекПоложения.ПериодЗавершения <= НачалоДня(ВыборкаРаботники.ДатаВыхода) Тогда
ОбластьМакетаСтрока.Параметры.Должность = ОтборТекПоложения.ДолжностьЗавершения;
Иначе
ОбластьМакетаСтрока.Параметры.Должность = ОтборТекПоложения.Должность;
КонецЕсли;
Иначе
ОбластьМакетаСтрока.Параметры.Должность = ОтборТекПоложения.Должность;
КонецЕсли;


ВыведеноСтрок = ВыведеноСтрок + 1;
// Проверим, уместится ли строка на странице или надо открывать новую страницу
ВывестиПодвалЛиста = Не ФормированиеПечатныхФорм.ПроверитьВыводТабличногоДокумента(ТабДокумент, ВыводимыеОбласти);
// Конец документа
Если Не ВывестиПодвалЛиста и ВыведеноСтрок = ВсегоСтрокДокумента Тогда
ВыводимыеОбласти.Добавить(ОбластьМакетаПодвал);
ВывестиПодвалЛиста = Не ФормированиеПечатныхФорм.ПроверитьВыводТабличногоДокумента(ТабДокумент, ВыводимыеОбласти);
КонецЕсли;
// Новая страница
Если ВывестиПодвалЛиста Тогда
ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
ТабДокумент.Вывести(ОбластьМакетаШапка);
ВыведеноСтраниц = ВыведеноСтраниц + 1;
КонецЕсли;
ОбластьМакетаСтрока.Параметры.НомерСтроки = ВыведеноСтрок;
ТабДокумент.Вывести(ОбластьМакетаСтрока);
КонецЦикла;

// Дописываем до конца страницы
ВыводимыеОбласти = Новый Массив();
ВыводимыеОбласти.Добавить(ОбластьМакетаСтрока);
ВыводимыеОбласти.Добавить(ОбластьМакетаПодвал);
Для Сч = 1 По ОбластьМакетаСтрока.Параметры.Количество() Цикл
ОбластьМакетаСтрока.Параметры.Установить(Сч - 1,"");
КонецЦикла;
Пока ФормированиеПечатныхФорм.ПроверитьВыводТабличногоДокумента(ТабДокумент, ВыводимыеОбласти, Ложь) Цикл
ТабДокумент.Вывести(ОбластьМакетаСтрока);
КонецЦикла;

ОбластьМакетаПодвал.Параметры.Заполнить(ВыборкаДляШапкиДокумента); // Из запроса шапка документа.
ТабДокумент.Вывести(ОбластьМакетаПодвал);

Если ТабДокумент.ВысотаТаблицы > 0 Тогда
Возврат УниверсальныеМеханизмы.НапечататьДокумент(ТабДокумент, 1, Ложь, ОбщегоНазначения.СформироватьЗаголовокДокумента(СсылкаНаОбъект,"Приказ о работе в праздники и выходные"));
КонецЕсли;
//Возврат ТабДокумент;

КонецФункции

Функция СформироватьЗапросДляШапкиДокумента()

Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;

// Установим параметры запроса
Запрос.УстановитьПараметр("ДокументСсылка", СсылкаНаОбъект);
Запрос.УстановитьПараметр("ДатаДокумента", СсылкаНаОбъект.Дата);
Запрос.УстановитьПараметр("СтруктурнаяЕдиница",СсылкаНаОбъект.Организация);

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

Запрос.Текст =
"ВЫБРАТЬ
| ОтветственныеЛицаСрезПоследних.ДолжностьНаименование,
| ОтветственныеЛицаСрезПоследних.ОтветственноеЛицо КАК ОтветственноеЛицо,
| ЕСТЬNULL(ФИОФизЛицСрезПоследнихРуководитель.Фамилия + ВЫБОР
| КОГДА ПОДСТРОКА(ФИОФизЛицСрезПоследнихРуководитель.Имя, 1, 1) <> """"
| ТОГДА "" "" + ПОДСТРОКА(ФИОФизЛицСрезПоследнихРуководитель.Имя, 1, 1) + "".""
| ИНАЧЕ """"
| КОНЕЦ + ВЫБОР
| КОГДА ПОДСТРОКА(ФИОФизЛицСрезПоследнихРуководитель.Отчество, 1, 1) <> """"
| ТОГДА "" "" + ПОДСТРОКА(ФИОФизЛицСрезПоследнихРуководитель.Отчество, 1, 1) + "".""
| ИНАЧЕ """"
| КОНЕЦ, ОтветственныеЛицаСрезПоследних.ФизическоеЛицоНаименование) КАК ФИОРуководителя
|ПОМЕСТИТЬ ВТДанныеОтветственныхЛиц
|ИЗ
| ВТОтветственныеЛица КАК ОтветственныеЛицаСрезПоследних
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ФИОФизЛиц.СрезПоследних(
| &ДатаДокумента,
| ФизЛицо В
| (ВЫБРАТЬ
| ОтветственныеЛицаСрезПоследних.ФизическоеЛицо
| ИЗ
| ВТОтветственныеЛица КАК ОтветственныеЛицаСрезПоследних)) КАК ФИОФизЛицСрезПоследнихРуководитель
| ПО ОтветственныеЛицаСрезПоследних.ФизическоеЛицо = ФИОФизЛицСрезПоследнихРуководитель.ФизЛицо
|
|ИНДЕКСИРОВАТЬ ПО
| ОтветственноеЛицо";
Запрос.Выполнить();
// ---------------------------------------------------------------------------------------------

// Запрос для шапки документа
Запрос.Текст =
"ВЫБРАТЬ
| ОплатаПраздничныхИВыходныхДнейОрганизаций.Номер КАК НомерДок,
| ОплатаПраздничныхИВыходныхДнейОрганизаций.Дата КАК ДатаДок,
| ОплатаПраздничныхИВыходныхДнейОрганизаций.Организация КАК Организация,
| ВЫРАЗИТЬ(ОплатаПраздничныхИВыходныхДнейОрганизаций.Организация.НаименованиеПолное КАК СТРОКА(300)) КАК НазваниеОрганизации,
| ОплатаПраздничныхИВыходныхДнейОрганизаций.Организация.КодПоОКПО КАК КодПоОКПО,
| ОтветственныеЛицаОрганизацийСрезПоследнихРуководитель.ФИОРуководителя КАК ФИОРуководителя,
| ОтветственныеЛицаОрганизацийСрезПоследнихРуководитель.ДолжностьНаименование КАК ДолжностьРуководителя
|ИЗ
| Документ.ОплатаПраздничныхИВыходныхДнейОрганизаций КАК ОплатаПраздничныхИВыходныхДнейОрганизаций
| ЛЕВОЕ СОЕДИНЕНИЕ ВТДанныеОтветственныхЛиц КАК ОтветственныеЛицаОрганизацийСрезПоследнихРуководитель
| ПО (ОтветственныеЛицаОрганизацийСрезПоследнихРуководитель.ОтветственноеЛицо = ЗНАЧЕНИЕ(Перечисление.ОтветственныеЛицаОрганизаций.Руководитель))
|ГДЕ
| ОплатаПраздничныхИВыходныхДнейОрганизаций.Ссылка = &ДокументСсылка";

Возврат Запрос.Выполнить();

КонецФункции // СформироватьЗапросДляШапки()

//Функция СформироватьЗапросДляТабличнойЧасти()

// Запрос = Новый Запрос;
// Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;

// // Установим параметры запроса
// Запрос.УстановитьПараметр("ДокументСсылка", СсылкаНаОбъект);
// Запрос.УстановитьПараметр("ДатаДокумента", СсылкаНаОбъект.Дата);
// Запрос.УстановитьПараметр("Обособленное", СсылкаНаОбъект.Организация);
// Запрос.УстановитьПараметр("ФИОСокращенно", Истина);

// Запрос.Текст =
// "ВЫБРАТЬ РАЗЛИЧНЫЕ
// | ОплатаПраздничныхИВыходныхДнейОрганизацийНачисления.НомерСтроки,
// | ОплатаПраздничныхИВыходныхДнейОрганизацийНачисления.Сотрудник,
// | ОплатаПраздничныхИВыходныхДнейОрганизацийНачисления.Сотрудник.Код КАК ТабельныйНомер,
// | ОплатаПраздничныхИВыходныхДнейОрганизацийНачисления.Физлицо КАК Физлицо,
// | ОплатаПраздничныхИВыходныхДнейОрганизацийНачисления.ПодразделениеОрганизации,
// | ОплатаПраздничныхИВыходныхДнейОрганизацийНачисления.ПодразделениеОрганизации.Наименование КАК Подразделение,
// | ОплатаПраздничныхИВыходныхДнейОрганизацийНачисления.ДатаВыхода КАК ДатаВыхода
// |ИЗ
// | Документ.ОплатаПраздничныхИВыходныхДнейОрганизаций.Начисления КАК ОплатаПраздничныхИВыходныхДнейОрганизацийНачисления
// |ГДЕ
// | ОплатаПраздничныхИВыходныхДнейОрганизацийНачисления.Ссылка = &ДокументСсылка
// |УПОРЯДОЧИТЬ ПО
// | Физлицо";
// Возврат Запрос.Выполнить();

//КонецФункции // СформироватьЗапросДляТабличнойЧасти()
По теме из базы знаний
Найденные решения
8. deniseek77 86 04.03.13 18:09 Сейчас в теме
// Внешняя печатная форма для документа "Оплата праздничных и выходных дней организаций"
//
Функция Печать() Экспорт

ПечатьПриказа();

КонецФункции // Печать

Функция ПечатьПриказа()

ТабДокумент = Новый ТабличныйДокумент;
ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ОплатаПраздничныхИВыходныхДнейОрганизаций_­ПриказОРаботеВВыходные";

Макет = ПолучитьМакет("ПриказОРаботеВВыходные");
ОбластьМакетаШапкаДокумента = Макет.ПолучитьОбласть("ШапкаДокумента");
ОбластьМакетаШапка = Макет.ПолучитьОбласть("Шапка");
ОбластьМакетаСтрока = Макет.ПолучитьОбласть("Строка");
ОбластьМакетаПодвал = Макет.ПолучитьОбласть("Подвал");

ВыборкаДляШапкиДокумента = СформироватьЗапросДляШапкиДокумента().Выбрать();
//ВыборкаРаботники = СформироватьЗапросДляТабличнойЧасти().Выбрать();

// Подсчитываем количество страниц документа - для корректного разбиения на страницы
ВсегоСтрокДокумента = СсылкаНаОбъект.Начисления.Количество();

// Массив с двумя строками - для разбиения на страницы
ВыводимыеОбласти = Новый Массив();
ВыводимыеОбласти.Добавить(ОбластьМакетаСтрока);

// Выводим шапку документа
Пока ВыборкаДляШапкиДокумента.Следующий() Цикл
ОбластьМакетаШапкаДокумента.Параметры.Заполнить(ВыборкаДляШапкиДокумента);
ОбластьМакетаШапкаДокумента.Параметры.НазваниеОрганизации = СокрЛП(ОбластьМакетаШапкаДокумента.Параметры.НазваниеОрганизации);
КонецЦикла;
ТабДокумент.Вывести(ОбластьМакетаШапкаДокумента);
ТабДокумент.Вывести(ОбластьМакетаШапка);

// Выводим данные по строкам документа
ВыведеноСтраниц = 1; ВыведеноСтрок = 0;
ОбластьМакетаСтрока.Параметры.Предост = "Без предоставления";
ОбластьМакетаСтрока.Параметры.Согл = "Согласен";
Для каждого ВыборкаРаботники из СсылкаНаОбъект.Начисления Цикл

ОбластьМакетаСтрока.Параметры.Заполнить(ВыборкаРаботники);
ОбластьМакетаСтрока.Параметры.ТабельныйНомер = ВыборкаРаботники.Сотрудник.Код;
ОбластьМакетаСтрока.Параметры.Подразделение = ВыборкаРаботники.ПодразделениеОрганизации;
// Получим текущую Должность
СтруктураОтбораТекПоложения = Новый Структура;
СтруктураОтбораТекПоложения.Вставить("Сотрудник",ВыборкаРаботники.Сотрудник);
ОтборТекПоложения = РегистрыСведений.РаботникиОрганизаций.ПолучитьПоследнее(ВыборкаРаботники.ДатаВыхода,СтруктураОтбораТекПоложения);
Если (ОтборТекПоложения.ПериодЗавершения <> '00.00.0000 00:00:00') Тогда
Если ОтборТекПоложения.ПериодЗавершения <= НачалоДня(ВыборкаРаботники.ДатаВыхода) Тогда
ОбластьМакетаСтрока.Параметры.Должность = ОтборТекПоложения.ДолжностьЗавершения;
Иначе
ОбластьМакетаСтрока.Параметры.Должность = ОтборТекПоложения.Должность;
КонецЕсли;
Иначе
ОбластьМакетаСтрока.Параметры.Должность = ОтборТекПоложения.Должность;
КонецЕсли;


ВыведеноСтрок = ВыведеноСтрок + 1;
// Проверим, уместится ли строка на странице или надо открывать новую страницу
ВывестиПодвалЛиста = Не ФормированиеПечатныхФорм.ПроверитьВыводТабличногоДокумента(ТабДокумент, ВыводимыеОбласти);
// Конец документа
Если Не ВывестиПодвалЛиста и ВыведеноСтрок = ВсегоСтрокДокумента Тогда
ВыводимыеОбласти.Добавить(ОбластьМакетаПодвал);
ВывестиПодвалЛиста = Не ФормированиеПечатныхФорм.ПроверитьВыводТабличногоДокумента(ТабДокумент, ВыводимыеОбласти);
КонецЕсли;
// Новая страница
Если ВывестиПодвалЛиста Тогда
ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
ТабДокумент.Вывести(ОбластьМакетаШапка);
ВыведеноСтраниц = ВыведеноСтраниц + 1;
КонецЕсли;
ОбластьМакетаСтрока.Параметры.НомерСтроки = ВыведеноСтрок;
ТабДокумент.Вывести(ОбластьМакетаСтрока);
КонецЦикла;

// Дописываем до конца страницы
ВыводимыеОбласти = Новый Массив();
ВыводимыеОбласти.Добавить(ОбластьМакетаСтрока);
ВыводимыеОбласти.Добавить(ОбластьМакетаПодвал);
Для Сч = 1 По ОбластьМакетаСтрока.Параметры.Количество() Цикл
ОбластьМакетаСтрока.Параметры.Установить(Сч - 1,"");
КонецЦикла;
Пока ФормированиеПечатныхФорм.ПроверитьВыводТабличногоДокумента(ТабДокумент, ВыводимыеОбласти, Ложь) Цикл
ТабДокумент.Вывести(ОбластьМакетаСтрока);
КонецЦикла;

ОбластьМакетаПодвал.Параметры.Заполнить(ВыборкаДляШапкиДокумента); // Из запроса шапка документа.
ТабДокумент.Вывести(ОбластьМакетаПодвал);

Если ТабДокумент.ВысотаТаблицы > 0 Тогда
Возврат УниверсальныеМеханизмы.НапечататьДокумент(ТабДокумент, 1, Ложь, СформироватьЗаголовокДокумента(СсылкаНаОбъект,"Приказ о работе в праздники и выходные"));
КонецЕсли;
//Возврат ТабДокумент;

КонецФункции

Функция СформироватьЗапросДляШапкиДокумента()

Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;

// Установим параметры запроса
Запрос.УстановитьПараметр("ДокументСсылка", СсылкаНаОбъект);
Запрос.УстановитьПараметр("ДатаДокумента", СсылкаНаОбъект.Дата);
Запрос.УстановитьПараметр("СтруктурнаяЕдиница",СсылкаНаОбъект.Организация);

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

Запрос.Текст =
"ВЫБРАТЬ
| ОтветственныеЛицаСрезПоследних.ДолжностьНаименование,
| ОтветственныеЛицаСрезПоследних.ОтветственноеЛицо КАК ОтветственноеЛицо,
| ЕСТЬNULL(ФИОФизЛицСрезПоследнихРуководитель.Фамилия + ВЫБОР
| КОГДА ПОДСТРОКА(ФИОФизЛицСрезПоследнихРуководитель.Имя, 1, 1) <> """"
| ТОГДА "" "" + ПОДСТРОКА(ФИОФизЛицСрезПоследнихРуководитель.Имя, 1, 1) + "".""
| ИНАЧЕ """"
| КОНЕЦ + ВЫБОР
| КОГДА ПОДСТРОКА(ФИОФизЛицСрезПоследнихРуководитель.Отчество, 1, 1) <> """"
| ТОГДА "" "" + ПОДСТРОКА(ФИОФизЛицСрезПоследнихРуководитель.Отчество, 1, 1) + "".""
| ИНАЧЕ """"
| КОНЕЦ, ОтветственныеЛицаСрезПоследних.ФизическоеЛицоНаименование) КАК ФИОРуководителя
|ПОМЕСТИТЬ ВТДанныеОтветственныхЛиц
|ИЗ
| ВТОтветственныеЛица КАК ОтветственныеЛицаСрезПоследних
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ФИОФизЛиц.СрезПоследних(
| &ДатаДокумента,
| ФизЛицо В
| (ВЫБРАТЬ
| ОтветственныеЛицаСрезПоследних.ФизическоеЛицо
| ИЗ
| ВТОтветственныеЛица КАК ОтветственныеЛицаСрезПоследних)) КАК ФИОФизЛицСрезПоследнихРуководитель
| ПО ОтветственныеЛицаСрезПоследних.ФизическоеЛицо = ФИОФизЛицСрезПоследнихРуководитель.ФизЛицо
|
|ИНДЕКСИРОВАТЬ ПО
| ОтветственноеЛицо";
Запрос.Выполнить();
// ---------------------------------------------------------------------------------------------

// Запрос для шапки документа
Запрос.Текст =
"ВЫБРАТЬ
| ОплатаПраздничныхИВыходныхДнейОрганизаций.Номер КАК НомерДок,
| ОплатаПраздничныхИВыходныхДнейОрганизаций.Дата КАК ДатаДок,
| ОплатаПраздничныхИВыходныхДнейОрганизаций.Организация КАК Организация,
| ВЫРАЗИТЬ(ОплатаПраздничныхИВыходныхДнейОрганизаций.Организация.НаименованиеПолное КАК СТРОКА(300)) КАК НазваниеОрганизации,
| ОплатаПраздничныхИВыходныхДнейОрганизаций.Организация.КодПоОКПО КАК КодПоОКПО,
| ОтветственныеЛицаОрганизацийСрезПоследнихРуководитель.ФИОРуководителя КАК ФИОРуководителя,
| ОтветственныеЛицаОрганизацийСрезПоследнихРуководитель.ДолжностьНаименование КАК ДолжностьРуководителя
|ИЗ
| Документ.ОплатаПраздничныхИВыходныхДнейОрганизаций КАК ОплатаПраздничныхИВыходныхДнейОрганизаций
| ЛЕВОЕ СОЕДИНЕНИЕ ВТДанныеОтветственныхЛиц КАК ОтветственныеЛицаОрганизацийСрезПоследнихРуководитель
| ПО (ОтветственныеЛицаОрганизацийСрезПоследнихРуководитель.ОтветственноеЛицо = ЗНАЧЕНИЕ(Перечисление.ОтветственныеЛицаОрганизаций.Руководитель))
|ГДЕ
| ОплатаПраздничныхИВыходныхДнейОрганизаций.Ссылка = &ДокументСсылка";

Возврат Запрос.Выполнить();

КонецФункции // СформироватьЗапросДляШапки()

//Функция СформироватьЗапросДляТабличнойЧасти()

// Запрос = Новый Запрос;
// Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;

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

Функция СформироватьЗаголовокДокумента(ДокументОбъект, НазваниеДокумента = "")

Если ДокументОбъект = Неопределено Тогда
Возврат "";
Иначе
Возврат ?(НЕ ЗначениеЗаполнено(НазваниеДокумента), ДокументОбъект.Метаданные().Синоним, НазваниеДокумента) + " № " + ПолучитьНомерНаПечать(ДокументОбъект)
+ " от " + Формат(ДокументОбъект.Дата, "ДФ='дд ММММ гггг'") + " г.";
КонецЕсли;

КонецФункции // СформироватьЗаголовокДокумента()
derill; AndrewUs; +2 Ответить
9. deniseek77 86 04.03.13 18:10 Сейчас в теме
Вот, замените свой модуль в печатной форме на этот
10. AndrewUs 11 05.03.13 10:03 Сейчас в теме
(9) deniseek77, Спасибо большое, правда там одной функции не хватало :

Функция ПолучитьНомерНаПечать(Документ, МассивПрефиксов = Неопределено) Экспорт

Если Документ = Неопределено Тогда
Возврат 0;
КонецЕсли;

Номер = СокрЛП(Документ.Номер);

Возврат Номер;

КонецФункции // ПолучитьНомерНаПечать()
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. AndrewUs 11 04.03.13 17:41 Сейчас в теме
Прикрепляю файл печатной формы ...
Прикрепленные файлы:
ПриказОРаботеВвыходные.epf
3. Akuji 22 04.03.13 17:53 Сейчас в теме
5. deniseek77 86 04.03.13 17:56 Сейчас в теме
7. AndrewUs 11 04.03.13 18:00 Сейчас в теме
(5) deniseek77, Не, это не та тема, я просто с каталогом ошибся.
6. AndrewUs 11 04.03.13 17:59 Сейчас в теме
(3) Akuji, Там как раз не хватает функции "СформироватьЗаголовокДокумента". Я пробовал по аналогии работающего дока сделать, но не выходит, наверное, потому что опыта не хватает. Я постараюсь найти, но там мне помог один хороший человек, вписав нужную функцию.
4. deniseek77 86 04.03.13 17:56 Сейчас в теме
У вас нет такой функции...уберите ОбщегоНазначение. А в модурле печатной формы вставьте:

Функция СформироватьЗаголовокДокумента(ДокументОбъект, НазваниеДокумента = "") Экспорт

Если ДокументОбъект = Неопределено Тогда
Возврат "";
Иначе
Возврат ?(НЕ ЗначениеЗаполнено(НазваниеДокумента), ДокументОбъект.Метаданные().Синоним, НазваниеДокумента) + " № " + ПолучитьНомерНаПечать(ДокументОбъект)
+ " от " + Формат(ДокументОбъект.Дата, "ДФ='дд ММММ гггг'") + " г.";
КонецЕсли;

КонецФункции // СформироватьЗаголовокДокумента()
8. deniseek77 86 04.03.13 18:09 Сейчас в теме
// Внешняя печатная форма для документа "Оплата праздничных и выходных дней организаций"
//
Функция Печать() Экспорт

ПечатьПриказа();

КонецФункции // Печать

Функция ПечатьПриказа()

ТабДокумент = Новый ТабличныйДокумент;
ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ОплатаПраздничныхИВыходныхДнейОрганизаций_­ПриказОРаботеВВыходные";

Макет = ПолучитьМакет("ПриказОРаботеВВыходные");
ОбластьМакетаШапкаДокумента = Макет.ПолучитьОбласть("ШапкаДокумента");
ОбластьМакетаШапка = Макет.ПолучитьОбласть("Шапка");
ОбластьМакетаСтрока = Макет.ПолучитьОбласть("Строка");
ОбластьМакетаПодвал = Макет.ПолучитьОбласть("Подвал");

ВыборкаДляШапкиДокумента = СформироватьЗапросДляШапкиДокумента().Выбрать();
//ВыборкаРаботники = СформироватьЗапросДляТабличнойЧасти().Выбрать();

// Подсчитываем количество страниц документа - для корректного разбиения на страницы
ВсегоСтрокДокумента = СсылкаНаОбъект.Начисления.Количество();

// Массив с двумя строками - для разбиения на страницы
ВыводимыеОбласти = Новый Массив();
ВыводимыеОбласти.Добавить(ОбластьМакетаСтрока);

// Выводим шапку документа
Пока ВыборкаДляШапкиДокумента.Следующий() Цикл
ОбластьМакетаШапкаДокумента.Параметры.Заполнить(ВыборкаДляШапкиДокумента);
ОбластьМакетаШапкаДокумента.Параметры.НазваниеОрганизации = СокрЛП(ОбластьМакетаШапкаДокумента.Параметры.НазваниеОрганизации);
КонецЦикла;
ТабДокумент.Вывести(ОбластьМакетаШапкаДокумента);
ТабДокумент.Вывести(ОбластьМакетаШапка);

// Выводим данные по строкам документа
ВыведеноСтраниц = 1; ВыведеноСтрок = 0;
ОбластьМакетаСтрока.Параметры.Предост = "Без предоставления";
ОбластьМакетаСтрока.Параметры.Согл = "Согласен";
Для каждого ВыборкаРаботники из СсылкаНаОбъект.Начисления Цикл

ОбластьМакетаСтрока.Параметры.Заполнить(ВыборкаРаботники);
ОбластьМакетаСтрока.Параметры.ТабельныйНомер = ВыборкаРаботники.Сотрудник.Код;
ОбластьМакетаСтрока.Параметры.Подразделение = ВыборкаРаботники.ПодразделениеОрганизации;
// Получим текущую Должность
СтруктураОтбораТекПоложения = Новый Структура;
СтруктураОтбораТекПоложения.Вставить("Сотрудник",ВыборкаРаботники.Сотрудник);
ОтборТекПоложения = РегистрыСведений.РаботникиОрганизаций.ПолучитьПоследнее(ВыборкаРаботники.ДатаВыхода,СтруктураОтбораТекПоложения);
Если (ОтборТекПоложения.ПериодЗавершения <> '00.00.0000 00:00:00') Тогда
Если ОтборТекПоложения.ПериодЗавершения <= НачалоДня(ВыборкаРаботники.ДатаВыхода) Тогда
ОбластьМакетаСтрока.Параметры.Должность = ОтборТекПоложения.ДолжностьЗавершения;
Иначе
ОбластьМакетаСтрока.Параметры.Должность = ОтборТекПоложения.Должность;
КонецЕсли;
Иначе
ОбластьМакетаСтрока.Параметры.Должность = ОтборТекПоложения.Должность;
КонецЕсли;


ВыведеноСтрок = ВыведеноСтрок + 1;
// Проверим, уместится ли строка на странице или надо открывать новую страницу
ВывестиПодвалЛиста = Не ФормированиеПечатныхФорм.ПроверитьВыводТабличногоДокумента(ТабДокумент, ВыводимыеОбласти);
// Конец документа
Если Не ВывестиПодвалЛиста и ВыведеноСтрок = ВсегоСтрокДокумента Тогда
ВыводимыеОбласти.Добавить(ОбластьМакетаПодвал);
ВывестиПодвалЛиста = Не ФормированиеПечатныхФорм.ПроверитьВыводТабличногоДокумента(ТабДокумент, ВыводимыеОбласти);
КонецЕсли;
// Новая страница
Если ВывестиПодвалЛиста Тогда
ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
ТабДокумент.Вывести(ОбластьМакетаШапка);
ВыведеноСтраниц = ВыведеноСтраниц + 1;
КонецЕсли;
ОбластьМакетаСтрока.Параметры.НомерСтроки = ВыведеноСтрок;
ТабДокумент.Вывести(ОбластьМакетаСтрока);
КонецЦикла;

// Дописываем до конца страницы
ВыводимыеОбласти = Новый Массив();
ВыводимыеОбласти.Добавить(ОбластьМакетаСтрока);
ВыводимыеОбласти.Добавить(ОбластьМакетаПодвал);
Для Сч = 1 По ОбластьМакетаСтрока.Параметры.Количество() Цикл
ОбластьМакетаСтрока.Параметры.Установить(Сч - 1,"");
КонецЦикла;
Пока ФормированиеПечатныхФорм.ПроверитьВыводТабличногоДокумента(ТабДокумент, ВыводимыеОбласти, Ложь) Цикл
ТабДокумент.Вывести(ОбластьМакетаСтрока);
КонецЦикла;

ОбластьМакетаПодвал.Параметры.Заполнить(ВыборкаДляШапкиДокумента); // Из запроса шапка документа.
ТабДокумент.Вывести(ОбластьМакетаПодвал);

Если ТабДокумент.ВысотаТаблицы > 0 Тогда
Возврат УниверсальныеМеханизмы.НапечататьДокумент(ТабДокумент, 1, Ложь, СформироватьЗаголовокДокумента(СсылкаНаОбъект,"Приказ о работе в праздники и выходные"));
КонецЕсли;
//Возврат ТабДокумент;

КонецФункции

Функция СформироватьЗапросДляШапкиДокумента()

Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;

// Установим параметры запроса
Запрос.УстановитьПараметр("ДокументСсылка", СсылкаНаОбъект);
Запрос.УстановитьПараметр("ДатаДокумента", СсылкаНаОбъект.Дата);
Запрос.УстановитьПараметр("СтруктурнаяЕдиница",СсылкаНаОбъект.Организация);

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

Запрос.Текст =
"ВЫБРАТЬ
| ОтветственныеЛицаСрезПоследних.ДолжностьНаименование,
| ОтветственныеЛицаСрезПоследних.ОтветственноеЛицо КАК ОтветственноеЛицо,
| ЕСТЬNULL(ФИОФизЛицСрезПоследнихРуководитель.Фамилия + ВЫБОР
| КОГДА ПОДСТРОКА(ФИОФизЛицСрезПоследнихРуководитель.Имя, 1, 1) <> """"
| ТОГДА "" "" + ПОДСТРОКА(ФИОФизЛицСрезПоследнихРуководитель.Имя, 1, 1) + "".""
| ИНАЧЕ """"
| КОНЕЦ + ВЫБОР
| КОГДА ПОДСТРОКА(ФИОФизЛицСрезПоследнихРуководитель.Отчество, 1, 1) <> """"
| ТОГДА "" "" + ПОДСТРОКА(ФИОФизЛицСрезПоследнихРуководитель.Отчество, 1, 1) + "".""
| ИНАЧЕ """"
| КОНЕЦ, ОтветственныеЛицаСрезПоследних.ФизическоеЛицоНаименование) КАК ФИОРуководителя
|ПОМЕСТИТЬ ВТДанныеОтветственныхЛиц
|ИЗ
| ВТОтветственныеЛица КАК ОтветственныеЛицаСрезПоследних
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ФИОФизЛиц.СрезПоследних(
| &ДатаДокумента,
| ФизЛицо В
| (ВЫБРАТЬ
| ОтветственныеЛицаСрезПоследних.ФизическоеЛицо
| ИЗ
| ВТОтветственныеЛица КАК ОтветственныеЛицаСрезПоследних)) КАК ФИОФизЛицСрезПоследнихРуководитель
| ПО ОтветственныеЛицаСрезПоследних.ФизическоеЛицо = ФИОФизЛицСрезПоследнихРуководитель.ФизЛицо
|
|ИНДЕКСИРОВАТЬ ПО
| ОтветственноеЛицо";
Запрос.Выполнить();
// ---------------------------------------------------------------------------------------------

// Запрос для шапки документа
Запрос.Текст =
"ВЫБРАТЬ
| ОплатаПраздничныхИВыходныхДнейОрганизаций.Номер КАК НомерДок,
| ОплатаПраздничныхИВыходныхДнейОрганизаций.Дата КАК ДатаДок,
| ОплатаПраздничныхИВыходныхДнейОрганизаций.Организация КАК Организация,
| ВЫРАЗИТЬ(ОплатаПраздничныхИВыходныхДнейОрганизаций.Организация.НаименованиеПолное КАК СТРОКА(300)) КАК НазваниеОрганизации,
| ОплатаПраздничныхИВыходныхДнейОрганизаций.Организация.КодПоОКПО КАК КодПоОКПО,
| ОтветственныеЛицаОрганизацийСрезПоследнихРуководитель.ФИОРуководителя КАК ФИОРуководителя,
| ОтветственныеЛицаОрганизацийСрезПоследнихРуководитель.ДолжностьНаименование КАК ДолжностьРуководителя
|ИЗ
| Документ.ОплатаПраздничныхИВыходныхДнейОрганизаций КАК ОплатаПраздничныхИВыходныхДнейОрганизаций
| ЛЕВОЕ СОЕДИНЕНИЕ ВТДанныеОтветственныхЛиц КАК ОтветственныеЛицаОрганизацийСрезПоследнихРуководитель
| ПО (ОтветственныеЛицаОрганизацийСрезПоследнихРуководитель.ОтветственноеЛицо = ЗНАЧЕНИЕ(Перечисление.ОтветственныеЛицаОрганизаций.Руководитель))
|ГДЕ
| ОплатаПраздничныхИВыходныхДнейОрганизаций.Ссылка = &ДокументСсылка";

Возврат Запрос.Выполнить();

КонецФункции // СформироватьЗапросДляШапки()

//Функция СформироватьЗапросДляТабличнойЧасти()

// Запрос = Новый Запрос;
// Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;

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

Функция СформироватьЗаголовокДокумента(ДокументОбъект, НазваниеДокумента = "")

Если ДокументОбъект = Неопределено Тогда
Возврат "";
Иначе
Возврат ?(НЕ ЗначениеЗаполнено(НазваниеДокумента), ДокументОбъект.Метаданные().Синоним, НазваниеДокумента) + " № " + ПолучитьНомерНаПечать(ДокументОбъект)
+ " от " + Формат(ДокументОбъект.Дата, "ДФ='дд ММММ гггг'") + " г.";
КонецЕсли;

КонецФункции // СформироватьЗаголовокДокумента()
derill; AndrewUs; +2 Ответить
9. deniseek77 86 04.03.13 18:10 Сейчас в теме
Вот, замените свой модуль в печатной форме на этот
10. AndrewUs 11 05.03.13 10:03 Сейчас в теме
(9) deniseek77, Спасибо большое, правда там одной функции не хватало :

Функция ПолучитьНомерНаПечать(Документ, МассивПрефиксов = Неопределено) Экспорт

Если Документ = Неопределено Тогда
Возврат 0;
КонецЕсли;

Номер = СокрЛП(Документ.Номер);

Возврат Номер;

КонецФункции // ПолучитьНомерНаПечать()
11. Korona 05.03.13 11:42 Сейчас в теме
Перенеси процедуры СформироватьЗапросДляШапкиДокумента() и СформироватьЗапросДляТабличнойЧасти()
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот