Вывод остатки отпусков в табличный документ (знатокам СКД и ЗУПа)

1. WalterFOX 23 28.06.22 19:32 Сейчас в теме
Коллеги, добрый день!

Необходимо программно получать табличный документ - результат выполнения отчета "Остатки отпусков " из ЗУПа.
(просьба не спрашивать, почему именно так и зачем)

Формирую по аналогии с отчетом, но табличный документ пустой.
Пожалуйста, подскажите, в чем ошибка.

Спасибо.




&НаСервере

Процедура ЗаполнитьНастройки(НастройкиОтчета,Сотрудник,ДатаОтчета)

ЭлементыОтбора = НастройкиОтчета.Отбор.Элементы;

Для Каждого ТекЭлемент Из ЭлементыОтбора Цикл
               Если ТекЭлемент.Использование Тогда

                              Продолжить;

               КонецЕсли;      

               Если СокрЛП(ТекЭлемент.ЛевоеЗначение) = "Сотрудник" Тогда

                              ТекЭлемент.Использование  = Истина;

         ТекЭлемент.ВидСравнения   = ВидСравненияКомпоновкиДанных.Равно;

         ТекЭлемент.ПравоеЗначение = Сотрудник;  

               КонецЕСли;

               Если СокрЛП(ТекЭлемент.ЛевоеЗначение) = "ТекущаяОрганизация" Тогда

                              ТекЭлемент.Использование  = Истина;

         ТекЭлемент.ВидСравнения   = ВидСравненияКомпоновкиДанных.Равно;

         ТекЭлемент.ПравоеЗначение = Справочники.Организации.НайтиПоНаименованию("ООО РОмашка"); 

               КонецЕСли;

КонецЦикла;

 

 

КонецПРоцедуры

 

 

&НаСервере

Функция СформироватьОтчетПООстаткуОтпуска(Сотрудник,ДатаОтчета)

              

               МассивСотрудников = Новый Массив;

    МассивСотрудников.Добавить(Сотрудник);

              

    // Заполняем регистр ЗаработанныеПраваНаОтпуска.

    ОстаткиОтпусков.РасчетЗаработанныхОтпусков(МассивСотрудников, ДатаОтчета);

               СтандартнаяОбработка = ложь;

              

               ДокументРезультат     = Новый ТабличныйДокумент;

              

               СхемаКомпоновкиДанных  = Отчеты.ОстаткиОтпусков.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");

               ВариантНастроек        = СхемаКомпоновкиДанных.ВариантыНастроек.ОстаткиОтпусков;

              

    КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных;

    КомпоновщикНастроек.Инициализировать(Новый

    ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));

    КомпоновщикНастроек.ЗагрузитьНастройки(ВариантНастроек.Настройки);

 

    НастройкиОтчета    = КомпоновщикНастроек.ПолучитьНастройки();

    ЗаполнитьНастройки(НастройкиОтчета,Сотрудник,ДатаОтчета);

              

              

              

              

               МакетКомпоновки = ЗарплатаКадрыОтчеты.МакетКомпоновкиДанных(СхемаКомпоновкиДанных, НастройкиОтчета, неопределено);

              

               // Создадим и инициализируем процессор компоновки.

               ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;

               ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , неопределено, Истина);

              

               ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;

               ПроцессорВывода.УстановитьДокумент(ДокументРезультат);

              

               // Обозначим начало вывода.

               ПроцессорВывода.Вывести(ПроцессорКомпоновки, Истина);

              

              

               Возврат ДокументРезультат;

              

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

  

  

 

&НаСервере

Процедура ПоказатьОстатокНаСервере()

Объект.Результат.Вывести(СформироватьОтчетПООстаткуОтпуска(Объект.Сотрудник,НачалоДня(ТекущаяДата())));

КонецПроцедуры
Показать
Прикрепленные файлы:
Вознаграждение за ответ
Показать полностью
Найденные решения
15. WalterFOX 23 05.07.22 15:46 Сейчас в теме +5 $m
(13) А как мне сформировать отчет программно, но! мне не нужно открывать форму, мне нужно сохранить Табличный Документ в PDF.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. WalterFOX 23 28.06.22 19:38 Сейчас в теме
обработка, если проверять, поменяйте название организации
Прикрепленные файлы:
ВыводНаФормуОстаткиОТпусков.epf
3. FatPanzer 28.06.22 20:15 Сейчас в теме
Мы не знатоки, поэтому на ваше оформление вопроса даже смотреть не будем...
4. CrazyBee 4 30.06.22 14:20 Сейчас в теме
Раз вывели сотрудника на отбор, то и организацию можно же просто на отбор
5. WalterFOX 23 30.06.22 16:59 Сейчас в теме
(4) Не понял. А сейчас как если смотреть на код?
6. пользователь 01.07.22 12:58
Сообщение было скрыто модератором.
...
7. пользователь 04.07.22 08:27
Сообщение было скрыто модератором.
...
8. laperuz 46 04.07.22 09:01 Сейчас в теме
(7)Как в подавляющем большинстве отчетов в ЗУП, нужно инициализировать общие источники данных.

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

вот это:
СтруктураОбъект = Новый Структура("СхемаКомпоновкиДанных", СхемаКомпоновкиДанных);
ЗарплатаКадрыОбщиеНаборыДанных.ЗаполнитьОбщиеИсточникиДанныхОтчета(СтруктураОбъект);
user1278383; +1 Ответить
14. WalterFOX 23 05.07.22 15:42 Сейчас в теме
(13)
(8)
СтруктураОбъект = Новый Структура("СхемаКомпоновкиДанных", СхемаКомпоновкиДанных);
ЗарплатаКадрыОбщиеНаборыДанных.ЗаполнитьОбщиеИсточникиДанныхОтчета(СтруктураОбъект);


Ничего не изменилось.
16. laperuz 46 05.07.22 16:49 Сейчас в теме
(14)Значит что-то не то делаете.
Вот с демо-базы скрин
Ну и отчет приложу на всякий.
Прикрепленные файлы:
ВыводНаФормуОстаткиОТпусков.epf
vladimir-89; platon-81; +2 Ответить
22. vladimir-89 25 05.01.24 00:23 Сейчас в теме
9. Kerdik 04.07.22 09:03 Сейчас в теме
наверное надо условие написать так:
Если ТекЭлемент.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ТекущаяОрганизация") Тогда
или хотя бы так:
Если СокрЛП(ТекЭлемент.ЛевоеЗначение) = "Текущая организация" Тогда
10. puzo50 04.07.22 11:19 Сейчас в теме
(8)
// Параметры:
//  Объект - отчет
//  ДополнительныеПоляПредставлений - Структура - где ключи - имена представлений запросов,
//										значения - массив с описанием дополнительных полей.
//
Процедура ЗаполнитьОбщиеИсточникиДанныхОтчета(Объект, ДополнительныеПоляПредставлений = Неопределено, ТолькоРазрешенные = Истина) Экспорт


чот не то вы написали. туда объект передаётся, ибо там дальше строка в этой процедуре
ЗаполнитьОбщиеЗапросы(Объект.СхемаКомпоновкиДанных.НаборыДанных, ТолькоРазрешенные);
11. laperuz 46 04.07.22 11:21 Сейчас в теме
(10)Объект там нужен только для того, чтобы из него получить СхемаКомпоновкиДанных. В чем проблема вместо объекта использовать структуру в конкретно этом случае?
12. puzo50 04.07.22 11:23 Сейчас в теме
(11) а, пожалуй да. погорячился. спасибо. как раз сижу не заполняется никак набор данных в "Статистика персонала"
13. Dmitry77 83 04.07.22 15:27 Сейчас в теме
Можно ещё програмно вызвать типовой отчёт. Задать нужные параметры и получить сразу результат. Из плюсов такого решения - работать будет независимо от изменений объектов конфигурации ( кроме имени типового отчёта).
15. WalterFOX 23 05.07.22 15:46 Сейчас в теме +5 $m
(13) А как мне сформировать отчет программно, но! мне не нужно открывать форму, мне нужно сохранить Табличный Документ в PDF.
17. laperuz 46 05.07.22 16:54 Сейчас в теме
(15)У вас итак он программно формируется, вам достаточно у сформированного табличного документа вызвать метод Записать(), в качестве 2 параметра указав ТипФайлаТабличногоДокумента.PDF
При этом на форму вообще необязательно реквизит выносить.
20. WalterFOX 23 06.07.22 10:45 Сейчас в теме
(17) Табличный документ у меня не формируется. Как сформировать. Пустой отчет получается.
18. Dmitry77 83 05.07.22 21:21 Сейчас в теме
(15)
Есть ещё способ рассылки отчёта по почте.
Настраиваете рассылку на e-mail для вашего отчёта. Параметры передаются в форме настройки, выбираете pdf и получаете отчёты на почте. Это вообще без программирования. По аналогии с рассылкой расчётных листов.
19. WalterFOX 23 06.07.22 10:44 Сейчас в теме
(18) сотрудник отправляет письмо на почту zup@romashka.ru , 1С забирает письмо, по адресу определяет сотрудника, формирует отчет остаток отпуска, сохраняет в PDF и отправляет на почту сотруднику.

Как сделать без программирования?
21. Dmitry77 83 06.07.22 20:37 Сейчас в теме
(19) никак. Надо парсить адрес и дату. По адресу отределять сотрудника. Подставлять в рассылку нужные параметры и отправлять на почту.

Механизм формирования письма для рассылки можно посмотреть в типовой.

Механизм разбора письма писать.

Ещё есть личный кабинет в 1с. Не помню есть ли там остатки отпусков.
Оставьте свое сообщение

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