Печать личной карточки формы Т-2 в ЗУП 3.1 с разбивкой отпусков по рабочим годам

28.09.21

Учетные задачи - Кадровый учет

При предоставлении отпуска за несколько периодов работы в форме Т2 печатается, сколько дней отпуска за какой период.

Скачать файл

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

Наименование По подписке [?] Купить один файл
Печать личной карточки формы Т-2 в ЗУП 3.1 с разбивкой отпусков по рабочим годам: (варианты 1 и 2)
.zip 53,58Kb
25
25 Скачать (2 SM) Купить за 2 150 руб.

В связи с наличием определенного интереса к данной разработке (высказанного иногда, к сожалению, в невежливой форме без  учета регулярных переработок в основной конфигурации) выкладываю доработанный отчет для текущих версий конфигурации и платформы. Отчет тестировался на ЗУП 3.1 (3.1.18.189) платформа 8.3.18.1483. 

Стандартный отчет (личная карточка Т2) может в качестве периода указывать 2 года (Рис.1). В разработанном отчете данные выводятся отдельно по каждому рабочему году (Рис.2). Для расчета используются те же функции и процедуры, что и при расчете отпуска, поэтому при вычислениях учитываются праздники.

За основу взят стандартный отчет для формы Т2, но периоды в 2 года разбиваются по годам (если это удается). 

По сравнению с предыдущим отчетом (2018 года) добавлено:

1. Учет возможности разбиения отпуска больничным.

2. Учет сдвига начала и окончания рабочего года, за который дается отпуск.

Анализ работы отчета в течении 3 лет показал, что, к сожалению, отчет дает правильные цифры приблизительно в 90 % случаев.

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

К публикации приложены 2 варианта отчета:

Вариант 1 - основной - остатки отпусков рассчитываются на 5 лет вперед (как в основной конфигурации).

Вариант 2 - иногда помогает в случае, когда вариант 1 дает неправильный результат - остатки отпусков рассчитываются на дату, предыдущую указанной.    

Отчет ЗУП 3.1 Личная карточка Т2

См. также

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

Групповое формирование и печать Дополнительных соглашений для 1С: Зарплата и управление персоналом ПРОФ и КОРП + 8 печатных форм: Индексация заработной платы, Удаленная работа и предупреждение о COVID-19, Выход из удаленной работы, Кадровый перевод, Кадровый перевод списком, Назначение индивидуальной системы начислений, Переименование филиала, Приказ "Совмещение должностей", Приказ "Совмещение исполнения обязанностей" Что нового: 1.В печатных формах убран весь красный цвет текста 2. В печатных формах в шапках сделано заполнение названия организации, руководителя и основания действия руководителя 3. В печатных формах в подвале сделано заполнение реквизитов организации 4. Добавлена возможность печатать доп соглашения по документу "Изменение плановых начислений"

21600 руб.

24.03.2023    5361    3    0    

5

Загрузка и выгрузка в Excel Зарплата Кадровый учет Бухгалтер Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Платные (руб)

Обработка позволяет загрузить из структурированного файла данные по физическим лицам, сотрудникам. Предусмотрено создание документов "Прием на работу". Данные загружаются не только в справочники и документы, но и в регистры сведений. Обработка разработана для конфигураций "Зарплата и Управление Персоналом, редакция 3.1"/"Зарплата и кадры государственного учреждения, редакция 3.1" на платформе 8.3.

6000 руб.

15.07.2015    65529    99    49    

103

Кадровый учет Бухгалтер Платформа 1С v8.3 1С:Зарплата и Управление Персоналом 3.x Аудит и бухгалтерские услуги, юриспруденция Россия Платные (руб)

Печать из ЗУП уведомления о трудовой деятельности для безвизового иностранного гражданина. С 7 января 2024 года безвизовые иностранцы должны уведомлять по утвержденной форме территориальный орган МВД России о ведении трудовой деятельности. Расширение позволит выполнить распечатку уведомления напрямую из программы ЗУП 3.1

3600 руб.

22.02.2024    1122    1    0    

3

Зарплата Кадровый учет Корректировка данных Бухгалтер Пользователь Сложные периодические расчеты 8.3.14 1С:ERP Управление предприятием 2 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Абонемент ($m)

Поддержание базы ЗУП 3.1 в порядке требует знания, внимание и инструменты. Предлагаю свой набор инструментов, для применения которых не нужны сильные знания аналитика или разработчика. Работает всё умно и безопасно.

3 стартмани

17.04.2023    4627    59    Vinzor    6    

25

Зарплата Кадровый учет Загрузка и выгрузка в Excel Бухгалтер Пользователь Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Платные (руб)

Обработка больше предназначена как основа для своей разработки, чем как универсальное решение. Но можно использовать и как готовое решение для небольшой организации. Переносит данные из файла Excel в ЗУП, по аналогии как данные переносятся из ЗУП 2.5.

7200 руб.

19.01.2023    6673    4    4    

5
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. user1027406 15.07.20 16:37 Сейчас в теме
Добрый день! Отчет не работает в релизе 3-1-10-470! Поправьте, пожалуйста! Спасибо!
2. vikhrov53 99 15.07.20 18:40 Сейчас в теме
Согласно правилам Инфостарта разработчик, представивший публикацию за Startmoney, не обязан сопровождать ее.
На момент публикации отчет был работоспособен для указанной конфигурации и платформы.
За прошедшие почти 2 года программа была существенна переработана и используется сейчас в расширении.
К сожалению, на оформление и тестирование программы в форме отчета нет времени. Могу лишь подсказать, что в связи с изменением основной конфигурации вместо "РабочееМесто.." надо использовать "Работа...".
WhiteOwl; +1 Ответить
3. user1543540 13.07.21 17:03 Сейчас в теме
Добрый день. На текущий момент отчет работает?
4. vikhrov53 99 14.07.21 10:10 Сейчас в теме
Смотрите комментарий 2.
5. JinAir7460 24.09.21 13:36 Сейчас в теме
вот код человека, который просит 2 стартмани за нерабочую обработку:


&НаСервере
Функция ОбработкаДанныхЗаполнения(ДанныеЗаполненияПоСотруднику, ТекСотрудник)

Инд = 0;

ДанныеЗаполненияПоСотруднику_New = ДанныеЗаполненияПоСотруднику.СкопироватьКолонки();

Пока Инд < ДанныеЗаполненияПоСотруднику.Количество() Цикл
ЭлемМассива = ДанныеЗаполненияПоСотруднику[Инд];

Если ((ЭлемМассива.ВидОтпуска <> "Ежегодный") И (ЭлемМассива.ВидОтпуска <> "Основной отпуск")) ИЛИ ((ЭлемМассива.РабочийГодПо - ЭлемМассива.РабочийГодС) < 2*364*24*60*60) Тогда
НоваяСтрока = ДанныеЗаполненияПоСотруднику_New.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, ЭлемМассива);

Иначе //разбивка по годам

МассивОтпПоГодам = ПодготовитьМассивОтпПоГодам(ЭлемМассива, ТекСотрудник);

Для каждого ЭлПоГодам Из МассивОтпПоГодам Цикл

НоваяСтрока = ДанныеЗаполненияПоСотруднику_New.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, ЭлемМассива);
ЗаполнитьЗначенияСвойств(НоваяСтрока, ЭлПоГодам);

КонецЦикла;

КонецЕсли;
Инд = Инд + 1;

КонецЦикла;

Возврат ДанныеЗаполненияПоСотруднику_New;

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

&НаСервере
Функция ПодготовитьМассивОтпПоГодам(СтруктПарам, ТекСотрудник)

МассивОтпПоГодам = Новый Массив;

Если типЗнч(СтруктПарам.ДатаС) = Тип("Дата") Тогда
ДатаС = СтруктПарам.ДатаС;
Иначе
ДатаС = Дата(Сред(СтруктПарам.ДатаС,7,4)+Сред(СтруктПарам.ДатаС,4,2)+Сред(СтруктПарам.ДатаС,0,2));
КонецЕсли;

Если типЗнч(СтруктПарам.ДатаПо) = Тип("Дата") Тогда
ДатаПо = СтруктПарам.ДатаПо;
Иначе
ДатаПо = Дата(Сред(СтруктПарам.ДатаПо,7,4)+Сред(СтруктПарам.ДатаПо,4,2)+Сред(СтруктПарам.ДатаПо,0,2));
КонецЕсли;


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

//поиск док отпуска

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

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

Если Выборка.Следующий() Тогда
НужДок = Выборка.Ссылка;
Иначе //Док отпуск не найден - печатаем как есть
МассивОтпПоГодам.Добавить(СтруктПарам);
Возврат МассивОтпПоГодам;
КонецЕсли;

массивРегистр = Новый Массив;
массиврегистр.Добавить(НужДок);
СтруктураПараметров.Текущийрегистратор = МассивРегистр;

ДатаОстатков = СтруктураПараметров.ДатаНачала;
Если ДатаОстатков = Дата(1, 1, 1) Тогда
ДатаОстатков = СтруктураПараметров.ДатаКомпенсации;
КонецЕсли;

ОписаниеВидаОтпуска = ОстаткиОтпусков.ОписаниеВидаОтпуска(СтруктураПараметров.ВидОтпуска, ОстаткиОтпусков.ОтпускСотрудникаВРабочихДняхПоДоговору(СтруктураПараметров.Сотрудник, ДатаОстатков));
ЕжегодныйОтпуск = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(СтруктураПараметров.ВидОтпуска, "ОтпускЯвляетсяЕжегодным");

КоличествоДнейОтпуска = УчетРабочегоВремениРасширенный.ДлительностьИнтервала(
СтруктураПараметров.Сотрудник,
СтруктураПараметров.ДатаНачала,
СтруктураПараметров.ДатаОкончания,
ОписаниеВидаОтпуска.СпособРасчетаПоКалендарнымДням,
ОписаниеВидаОтпуска.ЕжегодныйОтпуск);

РасходуетсяДней = КоличествоДнейОтпуска + СтруктураПараметров.КоличествоДнейКомпенсации;

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

// Остатков отпуска на текущий момент не хватает, необходимо посчитать "будущие" остатки.
// Чтобы не получить бесконечную итерацию, устанавливаем максимальную дату "заглядывания в будущее".
// 1. получаем остатки на максимальную дату.
МаксимальнаяДата = Дата(Год(ТекущаяДатаСеанса()) + 5, Месяц(ТекущаяДатаСеанса()), День(ТекущаяДатаСеанса()));

ПараметрыВызова.ДатаОстатков = МаксимальнаяДата;

ПараметрыВызова.ВидыОтпусков = СтруктураПараметров.ВидОтпуска;
ПараметрыВызова.ИсключаемыеРегистраторы = СтруктураПараметров.ТекущийРегистратор;

ОстаткиОтпусковСотрудника = ОстаткиОтпусков.ОстаткиОтпусков(ПараметрыВызова);
КолвоРабГодов = ОстаткиОтпусковСотрудника.Количество();

НужноДнейотпуска = СтруктПарам.ДнейОтпуска;

ТекДатаНачала = СтруктураПараметров.ДатаНачала;
Инд = 0;
Пока НужноДнейотпуска > 0 Цикл
Если Инд > КолвоРабГодов - 1 Тогда
Сообщить("Нет рабочих годов для отпуска.");
Прервать;
КонецЕсли;
ТекСтр = ОстаткиОтпусковСотрудника[Инд];

НовСтрукт = Новый Структура;
НовСтрукт.Вставить("РабочийГодС", ТекСтр.РабочийГодДатаНачала);
НовСтрукт.Вставить("РабочийГодПо", ТекСтр.РабочийГодДатаОкончания);

ДнейОтпуска = ТекСтр.Дни;

Если НужноДнейОтпуска <= ДнейОтпуска Тогда
НовДнейотпуска = НужноДнейотпуска;
Иначе
НовДнейотпуска = Днейотпуска;
КонецЕсли;
НовСтрукт.Вставить("ДнейОтпуска",НовДнейотпуска);

НужноДнейотпуска = НужноДнейотпуска - НовДнейОтпуска;

НовСтрукт.Вставить("ДатаС", ТекДатаНачала);

НовДатаОкончания = ОстаткиОтпусковВызовСервера.ДатаОкончанияЕжегодногоОтпуска(СтруктураПараметров.Сотрудник, ТекДатаНачала, НовДнейОтпуска, ИСТИНА);
НовСтрукт.Вставить("ДатаПо", НовДатаОкончания);
ТекДатаНачала = НачалоДня(НовДатаОкончания + 24*60*60);

МассивОтпПоГодам.Добавить(НовСтрукт);

Инд = Инд + 1;
КонецЦикла;

Возврат МассивОтпПоГодам;

КонецФункции
6. JinAir7460 24.09.21 13:38 Сейчас в теме
как-будто мне в монитор насрали его кодом
7. user1543540 12.01.22 11:30 Сейчас в теме
Добрый день. Отчет не формирует, грит что прав нет над базой данных. Хотя, права у меня усеченные, не спорю.( но как у сотрудника кадровой службы прав достаточно). Отчет нужно дорабатывать? Или у системного администратора доп права попросить?
1С:Предприятие 8.3 (8.3.18.1334)
8. vikhrov53 99 13.01.22 10:59 Сейчас в теме
(7)Если у Вас работает стандартный отчет "Личная карточка (Т2)", то по идее должен работать и этот отчет. В моей системе все кадровики работают с профилем "Старший кадровик". Если не хватает прав, я обычно добавляю пользователю профиль с режимом ПРОСМОТРА (чтения) необходимых данных.
9. user1543540 13.01.22 14:16 Сейчас в теме
Спасибо. IT-к помог.
Первый вариант не подошел, второй более на правду похож.
Сотрудник оформил отпуск на 32 дня (4+28). В первом варианте отчет показал (28+4). Во втором как надо! (4 оставшиеся дня за один период, и 28 (новых) за второй)


Хотелось бы формировать не всю карточку Т2. А только ту часть, которая касается отпусков. Т.к саму карточку печатаем при приеме на работу. А данные отпусков вписываем в течении трудовой деятельности руками.
С этого года хотим печатать приложение с отпусками отдельно.
10. user1543540 29.08.22 09:03 Сейчас в теме
Добрый день. Подскажите, в чем может быть ошибка (только у некоторых сотрудников)

" В настройку отчета внесены критичные изменения. Отчет не будет сформирован. Индекс находится за границами массива"

Хотя, никаких настроек не делала. У большинства сотрудников все формирует, а у некоторых пишет эту ошибку.
11. vikhrov53 99 29.08.22 10:45 Сейчас в теме
Обычно такое сообщение выскакивает после обновления конфигурации, но я проверил на версии ЗУП 3.1.23.63 оба варианта работают. Иногда помогает очистка параметров пользователя. Для этого надо записать параметры базы (кластер серверов, имя инф. базы) в перечне инф. баз (с помощью кнопки "изменить"), затем удалить базу из списка, а затем добавить вновь эту базу с записанными ранее параметрами.
Оставьте свое сообщение