Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
18 апр 2024, 15:48

ВПФ из существующей в базе

Автор adv, 26 мар 2020, 13:17

0 Пользователей и 1 гость просматривают эту тему.

adv

Добрый день, первый раз пытаюсь сделать ВПФ (чтобы потом добавить в макет ещё один параметр и заполнять его из документа).Опыт работы в конфигураторе, мягко говоря, нулевой.
Конфа: ЗУП 3.1.13.76 (Демо)
Платформа: 8.3.16.1148
Делаю впф из существующей в базе: Выплаты-Ведомости в банк-в документ-Печать-Список Перечислений.
При этом при нажатии на новую команду: Выплаты-Ведомости в банк-в документ-Печать-Список Перечислений (внешняя печатная форма), выдаёт ошибку "Печатная форма недоступна".
Сможет кто объеснить в чём я делаю ошибку?(да-да, кроме того что выбрал это направление :D)

В обработке добавил макет "ПФ_MXL_СписокПеречисленийВнешний" и в модуле объекта у меня твориться это:
 
Функция ПолучитьНазначениеОбработки()
   Массив = Новый Массив;
   Массив.Добавить("Документ.ВедомостьНаВыплатуЗарплатыВБанк");
   
   Возврат Массив;
КонецФункции   
#Область ПрограммныйИнтерфейс

// Возвращает сведения о внешней обработке.
Функция СведенияОВнешнейОбработке() Экспорт
   ПараметрыРегистрации = Новый Структура;
   ПараметрыРегистрации.Вставить("Вид","ПечатнаяФорма");
   //МассивНазначений = Новый Массив;
   //МассивНазначений.Добавить("Документ.ВедомостьНаВыплатуЗарплатыПеречислением");
   //ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
   ПараметрыРегистрации.Вставить("Назначение", ПолучитьНазначениеОбработки());
   ПараметрыРегистрации.Вставить("Наименование","СписокПеречисленийВнешний");
   ПараметрыРегистрации.Вставить("Версия","1.0");
   ПараметрыРегистрации.Вставить("Информация","Список Перечислений (внешняя печатная форма)");
   ПараметрыРегистрации.Вставить("БезопасныйРежим",Истина);
   
   
   Команды = ПолучитьТаблицуКоманд();
   
   ДобавитьКоманду(Команды,"Список Перечислений (внешняя печатная форма)",
   "СписокПеречисленийВнешний",
   "ВызовСерверногоМетода",
   Ложь,
   "ПечатьMXL");
   
   ПараметрыРегистрации.Вставить("Команды",Команды);
   Возврат ПараметрыРегистрации;
   
КонецФункции


Функция ПолучитьТаблицуКоманд()
   
   Команды = Новый ТаблицаЗначений;
   Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
   Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
   Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));
   Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
   Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
   Возврат Команды;
КонецФункции

Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")
  НоваяКоманда = ТаблицаКоманд.Добавить();
  НоваяКоманда.Представление = Представление;
  НоваяКоманда.Идентификатор = Идентификатор;
  НоваяКоманда.Использование = Использование;
  НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
  НоваяКоманда.Модификатор = Модификатор;
КонецПроцедуры
#КонецОбласти   

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

   
#Область Печать

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

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

// Возвращает данные шапки документов для печати.
//
// Параметры:
//  Ведомости - Массив - документы, данные которых возвращаются (ДокументСсылка.ВедомостьНаВыплатуЗарплатыВБанк).
//
// Возвращаемое значение:
//  ВыборкаИзРезультатаЗапроса
//
Функция ВыборкаДляПечатиШапки(Ведомости) Экспорт
   Возврат ВедомостьНаВыплатуЗарплаты.ВыборкаДляПечатиШапкиПриВыплатеБезналично(
      Метаданные.Документы.ВедомостьНаВыплатуЗарплатыПеречислением.ПолноеИмя(),
      Ведомости)
КонецФункции

// Формирует запрос по табличной части документа.
//
// Параметры:
//  ДокументСсылка   - ссылка на документ.
//  ДатаДокумента   - дата документ.
//
// Возвращаемое значение:
//  Результат запроса
//
Функция ВыборкаДляПечатиТаблицы(Ведомости) Экспорт

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

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

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

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

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

adv

Цитата: adv от 26 мар 2020, 13:17
Добрый день, первый раз пытаюсь сделать ВПФ (чтобы потом добавить в макет ещё один параметр и заполнять его из документа).Опыт работы в конфигураторе, мягко говоря, нулевой.
Конфа: ЗУП 3.1.13.76 (Демо)
Платформа: 8.3.16.1148
Делаю впф из существующей в базе: Выплаты-Ведомости в банк-в документ-Печать-Список Перечислений.
При этом при нажатии на новую команду: Выплаты-Ведомости в банк-в документ-Печать-Список Перечислений (внешняя печатная форма), выдаёт ошибку "Печатная форма недоступна".
Сможет кто объеснить в чём я делаю ошибку?(да-да, кроме того что выбрал это направление :D)

В обработке добавил макет "ПФ_MXL_СписокПеречисленийВнешний" и в модуле объекта у меня твориться это:
 
Функция ПолучитьНазначениеОбработки()
   Массив = Новый Массив;
   Массив.Добавить("Документ.ВедомостьНаВыплатуЗарплатыВБанк");
   
   Возврат Массив;
КонецФункции   
#Область ПрограммныйИнтерфейс

// Возвращает сведения о внешней обработке.
Функция СведенияОВнешнейОбработке() Экспорт
   ПараметрыРегистрации = Новый Структура;
   ПараметрыРегистрации.Вставить("Вид","ПечатнаяФорма");
   //МассивНазначений = Новый Массив;
   //МассивНазначений.Добавить("Документ.ВедомостьНаВыплатуЗарплатыПеречислением");
   //ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
   ПараметрыРегистрации.Вставить("Назначение", ПолучитьНазначениеОбработки());
   ПараметрыРегистрации.Вставить("Наименование","СписокПеречисленийВнешний");
   ПараметрыРегистрации.Вставить("Версия","1.0");
   ПараметрыРегистрации.Вставить("Информация","Список Перечислений (внешняя печатная форма)");
   ПараметрыРегистрации.Вставить("БезопасныйРежим",Истина);
   
   
   Команды = ПолучитьТаблицуКоманд();
   
   ДобавитьКоманду(Команды,"Список Перечислений (внешняя печатная форма)",
   "СписокПеречисленийВнешний",
   "ВызовСерверногоМетода",
   Ложь,
   "ПечатьMXL");
   
   ПараметрыРегистрации.Вставить("Команды",Команды);
   Возврат ПараметрыРегистрации;
   
КонецФункции


Функция ПолучитьТаблицуКоманд()
   
   Команды = Новый ТаблицаЗначений;
   Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
   Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
   Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));
   Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
   Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
   Возврат Команды;
КонецФункции

Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")
  НоваяКоманда = ТаблицаКоманд.Добавить();
  НоваяКоманда.Представление = Представление;
  НоваяКоманда.Идентификатор = Идентификатор;
  НоваяКоманда.Использование = Использование;
  НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
  НоваяКоманда.Модификатор = Модификатор;
КонецПроцедуры
#КонецОбласти   

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

   
#Область Печать

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

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

// Возвращает данные шапки документов для печати.
//
// Параметры:
//  Ведомости - Массив - документы, данные которых возвращаются (ДокументСсылка.ВедомостьНаВыплатуЗарплатыВБанк).
//
// Возвращаемое значение:
//  ВыборкаИзРезультатаЗапроса
//
Функция ВыборкаДляПечатиШапки(Ведомости) Экспорт
   Возврат ВедомостьНаВыплатуЗарплаты.ВыборкаДляПечатиШапкиПриВыплатеБезналично(
      Метаданные.Документы.ВедомостьНаВыплатуЗарплатыПеречислением.ПолноеИмя(),
      Ведомости)
КонецФункции

// Формирует запрос по табличной части документа.
//
// Параметры:
//  ДокументСсылка   - ссылка на документ.
//  ДатаДокумента   - дата документ.
//
// Возвращаемое значение:
//  Результат запроса
//
Функция ВыборкаДляПечатиТаблицы(Ведомости) Экспорт

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

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

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

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

#КонецОбласти
Не актуально, спасибо.

Теги: ВПФ ЗУП 

Похожие темы (5)

Рейтинг@Mail.ru

Поиск