Стаж работы на предприятии (количество лет, месяцев, дней) от даты приема до даты отчета

09.06.21

Учетные задачи - Зарплата

Доработка отчета "Личные данные сотрудников" путем настройки трех пользовательских полей системы компоновки данных, в режиме 1С:Предприятие. Конфигуратор не требуется. Конфигурации: ЗУП 3.1, ЗГУ 3.1, с 3.1.14. Проверял на ЗУП 3.1.17.171.

Постановка задачи

Сформировать список работающих по трудовому договору сотрудников, для каждого из них вывести ФИО, дату приема, должность и стаж работы на предприятии - количество лет, месяцев и дней, прошедших с даты приема.

Пример (на дату 08.06.2021)
Иванов Иван Иванович, принят 21.11.2019, стаж 1 год 6 месяцев 18 дней

Почему пришлось написать новую статью

Сначала я искал готовые решения на Инфостарте и других ресурсах. Нашел файлы самописных отчетов, и ни один из них меня не устроил.

Первый попавшийся отчет строился на регистре «ТекущиеКадровыеДанныеСотрудников» - закрыл эту статью сразу же.

Второй был построен грамотнее, показатели считались в запросе, и формулы были выложены в статье. Но вот с формулами там было что-то напутано, нужный мне результат не смог получить, рассчитывая по этим формулам вручную. Кроме того, статья была довольно старая, и нет гарантии, что заработает в актуальном релизе.

При этом мне известно, что типовой отчет "Личные данные сотрудников" уже умеет отделять работающих сотрудников от уволенных, а также не учитывает договора подряда.

Поэтому я решил, что будет правильнее доработать типовой готовый отчет, путем добавления трех пользовательских полей.

Настройку отчета можно будет сохранить, а если она «слетит» при очередном обновлении – так же легко можно будет и восстановить, так как формулы расчета сохранил у себя в файле и в этой статье.

Формулы расчета стажа на языке выражений СКД

Для решения задачи у нас есть следующие исходные данные

1. Дата, по состоянию на которую формируется отчет (это параметр отчета "Личные данные").

2. Дата приема сотрудника.

Я считаю, что эта дата всегда заполнена, так как в отчете есть предустановленный отбор по работающим сотрудникам по состоянию на дату отчета. Поэтому все дальнейшие формулы не учитывают проверку на пустую дату приема.

Первое, что нужно рассчитать – это количество полных месяцев с даты приема до даты отчета. В нашем примере (с 21.11.2019) получается 18 полных месяцев. Если прибавить 18 месяцев к дате приема, получаем 21.05.2021, что меньше даты отчета (08.06.2021).

В языке выражений СКД есть функция РазностьДат(), в нашем приемер она дает 19 месяцев между датами отчета и датой приема. Поэтому при расчеете нужно проверять: если к дате приема прибавляем разность дат и полученная дата больше даты отчета, нужно отнять один месяц.

Формула на языке выражений СКД будет выглядеть так:
 

ВЫБОР КОГДА НачалоПериода(ДобавитьКДате([Дата приема], "Месяц", РазностьДат([Дата приема], [Параметры.Дата], "МЕСЯЦ")), "ДЕНЬ") > НачалоПериода([Параметры.Дата], "ДЕНЬ") ТОГДА -1 ИНАЧЕ 0 КОНЕЦ + РазностьДат([Дата приема], [Параметры.Дата], "МЕСЯЦ")
 

Обратите внимание, что при сравнении дат обе приводятся к началу дня. Полученный показатель назову условно КолМесяцев, чтобы использовать его для пояснения алгоритма расчета в других формулах.

Теперь можно рассчитать количество полных лет, которые сотрудник отработал на предприятии: это количество полных месяцев, деленное на 12. От полученного числа нужно взять целую часть. Упрощенно формула выглядит так:

Цел(КолМесяцев/12)

Подставляем выражение расчета количества полных месяцев, получаем формулу расчета отработанных лет на языке выражений СКД:

Цел((ВЫБОР КОГДА НачалоПериода(ДобавитьКДате([Дата приема], "Месяц", РазностьДат([Дата приема], [Параметры.Дата], "МЕСЯЦ")), "ДЕНЬ") > НачалоПериода([Параметры.Дата], "ДЕНЬ") ТОГДА -1 ИНАЧЕ 0 КОНЕЦ + РазностьДат([Дата приема], [Параметры.Дата], "МЕСЯЦ"))/12)

Зная количество отработанных лет и количество полных месяцев стажа, легко рассчитать количество месяцев стажа, исключая отработанные годы: КолМесяцев-СтажЛет*12

Формула на языке СКД для количества месяцев стажа:

ВЫБОР КОГДА НачалоПериода(ДобавитьКДате([Дата приема], "Месяц", РазностьДат([Дата приема], [Параметры.Дата], "МЕСЯЦ")), "ДЕНЬ") > НачалоПериода([Параметры.Дата],"ДЕНЬ") ТОГДА -1 ИНАЧЕ 0 КОНЕЦ +РазностьДат([Дата приема], [Параметры.Дата], "МЕСЯЦ") - 12 * Цел((Выбор Когда НачалоПериода(ДобавитьКДате([Дата приема], "Месяц", РазностьДат([Дата приема], [Параметры.Дата], "МЕСЯЦ")), "ДЕНЬ") > НачалоПериода([Параметры.Дата], "ДЕНЬ") Тогда -1 Иначе 0 Конец + РазностьДат([Дата приема], [Параметры.Дата], "МЕСЯЦ")) / 12)

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

РазностьДат(ДобавитьКДате([Дата приема], "МЕСЯЦ", Выбор Когда НачалоПериода(ДобавитьКДате([Дата приема], "Месяц", РазностьДат([Дата приема], [Параметры.Дата], "МЕСЯЦ")), "ДЕНЬ") > НачалоПериода([Параметры.Дата], "ДЕНЬ") Тогда -1   Иначе 0 Конец + РазностьДат([Дата приема], [Параметры.Дата], "МЕСЯЦ")), [Параметры.Дата], "ДЕНЬ")

Доработка варианта отчета, сохранение варианта

 

Для доработки варианта отчета открываем раздел «Кадры» - «Кадровые отчеты» - «Личные данные сотрудников». На форме отчета есть кнопка «Еще» - нажимаем еще, выбираем «Прочее» - «Изменить вариант отчета».

 

 

Переходим на вкладку «Пользовательские поля», нажимаем кнопку «Добавить», тип поля – выражение, и создаем поле «Стаж работы на предприятии, лет». В заголовок пишем произвольный заголовок поля, в выражение детальных записей – формулу расчета количества лет, см. выше. Выражение итоговых записей не заполняем. Нажимаем кнопку ОК.

Точно так же добавляем поля расчета месяцев и дней.

 

В итоге мы добавили в отчет три пользовательских поля, нажимаем кнопку «Завершить редактирование». Но это еще не все, требуется добавить наши поля в список полей отчета.

 

 

Для добавления полей на форме отчета нужно нажать кнопку «Настройка» - откроется окно настройки, сразу же переключаемся в расширенный режим, и на вкладке «Поля и сортировки» добавляем только что созданные пользовательские поля – стаж работы на предприятии. Теперь можно нажать кнопку «Закрыть и сформировать».



 

Чтобы настройка отчета сохранилась для последующего использования, нужно сохранить вариант отчета – нажать маленькую кнопочку справа от кнопки «Настройка» и выбрать пункт «Сохранить вариант отчета».  Далее потребуется присвоить имя варианту отчета, я указал – «Личные данные сотрудников – стаж работы на предприятии».


 

После сохранения настройки отчет можно легко найти в списке кадровых отчетов:

 

Вступайте в нашу телеграмм-группу Инфостарт

Расчет стажа от даты приема

См. также

Зарплата Роли и права Системный администратор Бухгалтер 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Комплексная автоматизация 2.х Молдова Россия Казахстан Бухгалтерский учет Платные (руб)

Расширение позволяет максимально полно ограничить доступ пользователей к данным по заработной плате, а именно закрывает доступ к документам начисления и выплаты заработной платы, не позволяет просматривать бухгалтерские отчеты по счету учета зарплаты а также убирает зарплатные проводки из журнала проводок. Расширение запрещает просматривать платежные документы на выплату зарплаты, так же не доступны регламентные отчеты в ПФР и ИФНС. Расширение предлагает готовые настроенные профили "Бухгалтер без зарплаты", "Только просмотр без зарплаты".

5940 руб.

27.05.2021    48958    392    119    

300

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

Расширение для создания и настройки обмена с консолидированной базой ЗУП. Код разработки под определенные требования проекта.

84000 руб.

11.07.2025    1225    2    0    

1

SALE! 50%

Зарплата Регламентированный учет и отчетность Бухгалтер 1С:Предприятие 8 1С:Зарплата и кадры государственного учреждения 3 Здравоохранение, медицина, стоматология Россия Платные (руб)

Подсистема (расширение) конфигурации Зарплата и кадры государственного учреждения, редакция 3.1 для формирования формы №30 федерального статистического наблюдения "Сведения о медицинской организации" в редакции Приказов Росстата I) от 30.12.2020 №863, II) от 27.12.2022 N 985, III) от 25.12.2023 N 681 и IV) от 29.11.2025 №594.

18000 12600 руб.

26.10.2021    18605    23    13    

19

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

Обработки для быстрого перехода с конфигураций «КАМИН:Расчет зарплаты для бюджетных учреждений 3.5» и «КАМИН:Зарплата для бюджетных учреждений 5.5» на конфигурацию «Зарплата и кадры государственного учреждения».

12000 руб.

28.07.2016    66137    176    148    

144

Зарплата Производство готовой продукции (работ, услуг) Учет рабочего времени Рабочее место Бизнес-аналитик Пользователь Руководитель проекта 1С:Предприятие 8 1С:Управление торговлей 10 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Торговля и склад 7.7 Бытовые услуги, сервис Оптовая торговля, дистрибуция, логистика Электротехника и микроэлектроника Управленческий учет Платные (руб)

Модуль или расширение «Сервисный центр для 1С» позволяет принимать в ремонт оборудование (компьютеры, бытовая техника и т.п.), оформлять заявки инженеров на посещение клиентов и вести начисление заработной платы для сотрудников. Позволяет наладить автоматизированный учет в сервисном центре на уже существующей базе.

16800 руб.

01.11.2012    101977    121    1    

132

Зарплата Кадровый учет Бухгалтер 1С:Предприятие 8 1С:Управление нашей фирмой 3.0 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Предлагаем расширить возможности конфигурации 1С:УНФ 3.0 в части ведения кадрового учета. С помощью данного расширения в конфигурацию будут добавлены новые документы: "Отпуск" и "Командировка". Документы облегчат работу кадровика и расчетчика, а также повысят эффективность работы за счет оптимизации и упрощения процесса ведения учета.

43200 руб.

31.10.2024    2204    1    0    

1
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. dmit66 101 15.06.21 10:26 Сейчас в теме
А если сотрудник увольнялся и принимался вновь?
2. VinnieThePOOH 163 15.06.21 12:48 Сейчас в теме
(1) Физическое лицо будет то же самое, а сотрудник - другой, будет другой табельный номер, другая дата приема, другой элемент справочника сотрудников.

Расчет стажа выполняется в разрезе элементов справочника "Сотрудники" (а не справочника "Физические лица").

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

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

Задачу интерпретации отчета я не ставил.
3. Gaffer 85 09.09.21 22:40 Сейчас в теме
Дополню расчет лет стажа:
- корректный расчет по уволенным (если их будут выводить в отчет);
- округление до десятых долей года. Внимание, это НЕ МЕСЯЦЫ, а доли года!;
- корректный расчет в случае, когда сотрудник принимался и увольнялся в одном и том же месяце;

Выразить((Выбор
		Когда НачалоПериода(ДобавитьКДате([Дата приема], "Месяц", РазностьДат([Дата приема], [Параметры.Дата], "МЕСЯЦ")), "ДЕНЬ") > НачалоПериода([Параметры.Дата], "ДЕНЬ")
			Тогда -1
		Иначе 0
	Конец + РазностьДат([Дата приема], Выбор
			Когда [Дата увольнения] > ДатаВремя(1, 1, 1)
				Тогда [Дата увольнения]
			Иначе [Параметры.Дата]
		Конец, "МЕСЯЦ")) / 12 * Выбор
		Когда НачалоПериода([Дата приема], "месяц") = НачалоПериода([Дата увольнения], "месяц")
			Тогда 0
		Иначе 1
	Конец, "Число(3,1)")
Показать
АннаШ; user1488047; VinnieThePOOH; +3 Ответить
8. user1488047 10.02.22 16:51 Сейчас в теме
(3) Добрый день. А как можно сделать расчет, если сотрудник уволен 31 , а принят 1. Стаж берется с последней даты приема.
9. VinnieThePOOH 163 10.02.22 18:50 Сейчас в теме
(8) Это будет другой сотрудник.
4. dubovenko_m 64 19.11.21 12:33 Сейчас в теме
Спасибо. Хорошее решение. В последних релизах Прочие настройки спрятали - Настройки- Еще -Настройки для технического специалиста.
Прикрепленные файлы:
KirinaAS; VinnieThePOOH; +2 Ответить
5. RizhkovSergio 39 21.12.21 10:16 Сейчас в теме
От себя добавлю кому может пригодится тоже самое в запрос:
В запросе:
ВЫРАЗИТЬ(
       (ВЫБОР
			КОГДА НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(ВТ_.ДатаМин, МЕСЯЦ, РАЗНОСТЬДАТ(ВТ_.ДатаМин, ВТ_.ДатаМакс, МЕСЯЦ)), ДЕНЬ) > НАЧАЛОПЕРИОДА(ВТ_.ДатаМакс, ДЕНЬ)
				ТОГДА -1
			ИНАЧЕ 0
		КОНЕЦ + РАЗНОСТЬДАТ(ВТ_.ДатаМин, ВТ_.ДатаМакс, МЕСЯЦ)) / 12 - 0.5 КАК ЧИСЛО(15, 0)) КАК СтажЛет,

	ВЫБОР
		КОГДА НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(ВТ_.ДатаМин, МЕСЯЦ, РАЗНОСТЬДАТ(ВТ_.ДатаМин, ВТ_.ДатаМакс, МЕСЯЦ)), ДЕНЬ) > НАЧАЛОПЕРИОДА(ВТ_.ДатаМакс, ДЕНЬ)
			ТОГДА -1
		ИНАЧЕ 0
	КОНЕЦ + РАЗНОСТЬДАТ(ВТ_.ДатаМин, ВТ_.ДатаМакс, МЕСЯЦ) - 12 * (ВЫРАЗИТЬ((ВЫБОР
			КОГДА НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(ВТ_.ДатаМин, МЕСЯЦ, РАЗНОСТЬДАТ(ВТ_.ДатаМин, ВТ_.ДатаМакс, МЕСЯЦ)), ДЕНЬ) > НАЧАЛОПЕРИОДА(ВТ_.ДатаМакс, ДЕНЬ)
				ТОГДА -1
			ИНАЧЕ 0
		КОНЕЦ + РАЗНОСТЬДАТ(ВТ_.ДатаМин, ВТ_.ДатаМакс, МЕСЯЦ)) / 12 - 0.5 КАК ЧИСЛО(15, 0))) КАК СтажМесяцев,

	РАЗНОСТЬДАТ(ДОБАВИТЬКДАТЕ(ВТ_.ДатаМин, МЕСЯЦ, ВЫБОР
				КОГДА НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(ВТ_.ДатаМин, МЕСЯЦ, РАЗНОСТЬДАТ(ВТ_.ДатаМин, ВТ_.ДатаМакс, МЕСЯЦ)), ДЕНЬ) > НАЧАЛОПЕРИОДА(ВТ_.ДатаМакс, ДЕНЬ)
					ТОГДА -1
				ИНАЧЕ 0
			КОНЕЦ + РАЗНОСТЬДАТ(ВТ_.ДатаМин, ВТ_.ДатаМакс, МЕСЯЦ)), ВТ_.ДатаМакс, ДЕНЬ) КАК СтажДней
Показать
6. RizhkovSergio 39 21.12.21 11:58 Сейчас в теме
(5)

ВТ_Свод.ДатаПриема КАК ДатаПриема,
ВТ_Свод.ДатаУвольнения КАК ДатаУвольнения,
ВЫРАЗИТЬ(ВЫБОР
			КОГДА (ВЫБОР
					КОГДА НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(ВТ_Свод.ДатаПриема, МЕСЯЦ, РАЗНОСТЬДАТ(ВТ_Свод.ДатаПриема, ВЫБОР
										КОГДА ВТ_Свод.ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1)
											ТОГДА &ДатаСреза
										ИНАЧЕ ВТ_Свод.ДатаУвольнения
									КОНЕЦ, МЕСЯЦ)), ДЕНЬ) > НАЧАЛОПЕРИОДА(ВТ_Свод.ДатаУвольнения, ДЕНЬ)
						ТОГДА -1
					ИНАЧЕ 0
				КОНЕЦ + РАЗНОСТЬДАТ(ВТ_Свод.ДатаПриема, ВЫБОР
						КОГДА ВТ_Свод.ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1)
							ТОГДА &ДатаСреза
						ИНАЧЕ ВТ_Свод.ДатаУвольнения
					КОНЕЦ, МЕСЯЦ)) / 12 - 0.5 < 0
				ТОГДА 0
			ИНАЧЕ (ВЫБОР
					КОГДА НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(ВТ_Свод.ДатаПриема, МЕСЯЦ, РАЗНОСТЬДАТ(ВТ_Свод.ДатаПриема, ВЫБОР
										КОГДА ВТ_Свод.ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1)
											ТОГДА &ДатаСреза
										ИНАЧЕ ВТ_Свод.ДатаУвольнения
									КОНЕЦ, МЕСЯЦ)), ДЕНЬ) > НАЧАЛОПЕРИОДА(ВТ_Свод.ДатаУвольнения, ДЕНЬ)
						ТОГДА -1
					ИНАЧЕ 0
				КОНЕЦ + РАЗНОСТЬДАТ(ВТ_Свод.ДатаПриема, ВЫБОР
						КОГДА ВТ_Свод.ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1)
							ТОГДА &ДатаСреза
						ИНАЧЕ ВТ_Свод.ДатаУвольнения
					КОНЕЦ, МЕСЯЦ)) / 12 - 0.5
		КОНЕЦ КАК ЧИСЛО(15, 0)) КАК СтажЛет,

ВЫБОР
	КОГДА НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(ВТ_Свод.ДатаПриема, МЕСЯЦ, РАЗНОСТЬДАТ(ВТ_Свод.ДатаПриема, ВЫБОР
							КОГДА ВТ_Свод.ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1)
								ТОГДА &ДатаСреза
							ИНАЧЕ ВТ_Свод.ДатаУвольнения
						КОНЕЦ, МЕСЯЦ)), ДЕНЬ) > НАЧАЛОПЕРИОДА(ВЫБОР
					КОГДА ВТ_Свод.ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1)
						ТОГДА &ДатаСреза
					ИНАЧЕ ВТ_Свод.ДатаУвольнения
				КОНЕЦ, ДЕНЬ)
			ТОГДА -1
		ИНАЧЕ 0
	КОНЕЦ + РАЗНОСТЬДАТ(ВТ_Свод.ДатаПриема, ВЫБОР
			КОГДА ВТ_Свод.ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1)
				ТОГДА &ДатаСреза
			ИНАЧЕ ВТ_Свод.ДатаУвольнения
		КОНЕЦ, МЕСЯЦ) - 12 * (ВЫРАЗИТЬ(ВЫБОР
			КОГДА (ВЫБОР
					КОГДА НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(ВТ_Свод.ДатаПриема, МЕСЯЦ, РАЗНОСТЬДАТ(ВТ_Свод.ДатаПриема, ВЫБОР
										КОГДА ВТ_Свод.ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1)
											ТОГДА &ДатаСреза
										ИНАЧЕ ВТ_Свод.ДатаУвольнения
									КОНЕЦ, МЕСЯЦ)), ДЕНЬ) > НАЧАЛОПЕРИОДА(ВТ_Свод.ДатаУвольнения, ДЕНЬ)
						ТОГДА -1
					ИНАЧЕ 0
				КОНЕЦ + РАЗНОСТЬДАТ(ВТ_Свод.ДатаПриема, ВЫБОР
						КОГДА ВТ_Свод.ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1)
							ТОГДА &ДатаСреза
						ИНАЧЕ ВТ_Свод.ДатаУвольнения
					КОНЕЦ, МЕСЯЦ)) / 12 - 0.5 < 0
				ТОГДА 0
			ИНАЧЕ (ВЫБОР
					КОГДА НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(ВТ_Свод.ДатаПриема, МЕСЯЦ, РАЗНОСТЬДАТ(ВТ_Свод.ДатаПриема, ВЫБОР
										КОГДА ВТ_Свод.ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1)
											ТОГДА &ДатаСреза
										ИНАЧЕ ВТ_Свод.ДатаУвольнения
									КОНЕЦ, МЕСЯЦ)), ДЕНЬ) > НАЧАЛОПЕРИОДА(ВТ_Свод.ДатаУвольнения, ДЕНЬ)
						ТОГДА -1
					ИНАЧЕ 0
				КОНЕЦ + РАЗНОСТЬДАТ(ВТ_Свод.ДатаПриема, ВЫБОР
						КОГДА ВТ_Свод.ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1)
							ТОГДА &ДатаСреза
						ИНАЧЕ ВТ_Свод.ДатаУвольнения
					КОНЕЦ, МЕСЯЦ)) / 12 - 0.5
		КОНЕЦ КАК ЧИСЛО(15, 0))) КАК СтажМесяцев,

РАЗНОСТЬДАТ(ДОБАВИТЬКДАТЕ(ВТ_Свод.ДатаПриема, МЕСЯЦ, ВЫБОР
				КОГДА НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(ВТ_Свод.ДатаПриема, МЕСЯЦ, РАЗНОСТЬДАТ(ВТ_Свод.ДатаПриема, ВЫБОР
									КОГДА ВТ_Свод.ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1)
										ТОГДА &ДатаСреза
									ИНАЧЕ ВТ_Свод.ДатаУвольнения
								КОНЕЦ, МЕСЯЦ)), ДЕНЬ) > НАЧАЛОПЕРИОДА(ВЫБОР
							КОГДА ВТ_Свод.ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1)
								ТОГДА &ДатаСреза
							ИНАЧЕ ВТ_Свод.ДатаУвольнения
						КОНЕЦ, ДЕНЬ)
					ТОГДА -1
				ИНАЧЕ 0
			КОНЕЦ + РАЗНОСТЬДАТ(ВТ_Свод.ДатаПриема, ВЫБОР
					КОГДА ВТ_Свод.ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1)
						ТОГДА &ДатаСреза
					ИНАЧЕ ВТ_Свод.ДатаУвольнения
				КОНЕЦ, МЕСЯЦ)), ВЫБОР
			КОГДА ВТ_Свод.ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1)
				ТОГДА &ДатаСреза
			ИНАЧЕ ВТ_Свод.ДатаУвольнения
		КОНЕЦ, ДЕНЬ) КАК СтажДней
Показать
АннаШ; hellbe; user824528; Vinzor; +4 Ответить
7. user1731619 21.01.22 12:38 Сейчас в теме
Спасибо. У автора некорректно считается кол-во лет (16.10.2019 прием, увольнение -15.01.2020 = 1 год, ошибка). Помог комментарий, оставленный Gaffer
11. olga10121982 2 17.10.23 12:10 Сейчас в теме
(7) Подскажите пожалуйста, как вы исправили ошибку? не получается почему-то (можно в лс)
10. Nuzhnaya 23.01.23 15:17 Сейчас в теме
Спасибо большое!!!Очень помогло)
12. olga10121982 2 17.10.23 12:55 Сейчас в теме
Может кто поможет: Как вывести данные стаж месяц дни в одной колонке?
те в одной колонке 2 года 10 мес 5 дн
13. VinnieThePOOH 163 17.10.23 13:32 Сейчас в теме
(12) сгруппируйте колонки в настройке в одну. Вывод "вместе".
14. AneJIbcuH 39 13.04.24 08:31 Сейчас в теме
Все методы, если Дата начала и дата окончания в рамках одно месяца (и года), выдают ерунду
15. SOM4 30.10.24 12:59 Сейчас в теме
Уважаемый Владимир (@VinnieThePOOH), огромное спасибо за эту практическую статью!

Для меня Ваша статья -- первый опыт ощутить мощь СКД: у до этого имел дело с 1С7.7 более 10 лет назад. Учусь заново, так сказать. :)

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


Для числа лет:

Выбор
	Когда [Дата приема] <> ДатаВремя(1, 1, 1)
		Тогда Цел((Выбор
					Когда НачалоПериода(ДобавитьКДате([Дата приема], "Месяц", РазностьДат([Дата приема], [Параметры.Дата], "МЕСЯЦ")), "ДЕНЬ") > НачалоПериода([Параметры.Дата], "ДЕНЬ")
						Тогда -1
					Иначе 0
				Конец + РазностьДат([Дата приема], [Параметры.Дата], "МЕСЯЦ")) / 12)
	Иначе 0
Конец
Показать



Для числа месяцев:

Выбор
	Когда [Дата приема] <> ДатаВремя(1, 1, 1)
		Тогда Выбор
				Когда НачалоПериода(ДобавитьКДате([Дата приема], "Месяц", РазностьДат([Дата приема], [Параметры.Дата], "МЕСЯЦ")), "ДЕНЬ") > НачалоПериода([Параметры.Дата], "ДЕНЬ")
					Тогда -1
				Иначе 0
			Конец + РазностьДат([Дата приема], [Параметры.Дата], "МЕСЯЦ") - 12 * Цел((Выбор
					Когда НачалоПериода(ДобавитьКДате([Дата приема], "Месяц", РазностьДат([Дата приема], [Параметры.Дата], "МЕСЯЦ")), "ДЕНЬ") > НачалоПериода([Параметры.Дата], "ДЕНЬ")
						Тогда -1
					Иначе 0
				Конец + РазностьДат([Дата приема], [Параметры.Дата], "МЕСЯЦ")) / 12)
	Иначе 0
Конец
Показать



Для числа дней:

Выбор
	Когда [Дата приема] <> ДатаВремя(1, 1, 1)
		Тогда РазностьДат(ДобавитьКДате([Дата приема], "МЕСЯЦ", Выбор
						Когда НачалоПериода(ДобавитьКДате([Дата приема], "Месяц", РазностьДат([Дата приема], [Параметры.Дата], "МЕСЯЦ")), "ДЕНЬ") > НачалоПериода([Параметры.Дата], "ДЕНЬ")
							Тогда -1
						Иначе 0
					Конец + РазностьДат([Дата приема], [Параметры.Дата], "МЕСЯЦ")), [Параметры.Дата], "ДЕНЬ")
	Иначе 0
Конец
Показать



С уважением, Сергей Масленников
hasp_x; Banka86; +2 Ответить
16. mart-sha 296 02.11.24 14:06 Сейчас в теме
Спасибо за работу. Стал делать но увидел что фирма 1с добавила такие поля. Благодаря этой статье.
17. XelOla 19 07.08.25 08:51 Сейчас в теме
а по уволенным покажет стаж?
Нужно, сколько человек отработал с даты приема по дате увольнения.
Для отправки сообщения требуется регистрация/авторизация