Почему в табеле 1С:ЗГУ (ЗУП) при отпуске по уходу за ребенком ставится код «Р» вместо «ОЖ» или «ОР», и как это исправить?

Бухгалтер 1С v8.3 (Управляемые формы) 1С:Зарплата и Управление Персоналом Бухгалтерский учет
← На главную

При ведении кадрового учета и расчета заработной платы в программах семейства 1С (в частности, в 1С:Зарплата и кадры государственного учреждения и 1С:Зарплата и управление персоналом версии 3.1) пользователи часто сталкиваются с неожиданным поведением программы при заполнении табеля учета рабочего времени. Например, для сотрудников, находящихся в отпуске по уходу за ребенком, вместо привычного кода «ОЖ» или регламентированного для бюджетников кода «ОР» в табеле автоматически проставляется символ «Р».

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

---

Законодательный контекст: эволюция кодов в табелях учета рабочего времени

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

Коммерческие организации (Формы Т-12 и Т-13):

Деятельность коммерческих организаций регулируется Постановлением Госкомстата РФ от 05.01.2004 № 1. Согласно этому стандарту:

Государственные (бюджетные) учреждения (Форма 0504421):

Бюджетные учреждения обязаны использовать формы документов, утвержденные Министерством финансов РФ. Цифровые коды здесь не используются вовсе, а буквенные обозначения претерпели ряд изменений:

  1. Период до 2011 года (Приказ Минфина № 148н): Отпуск по уходу за ребенком обозначался буквой «Р».
  2. Период с 2011 по 2015 годы (Приказ Минфина № 173н): В форме 0504421 Минфин сохранил буквенное обозначение «Р» для отпуска по уходу за ребенком.
  3. С 2015 года по настоящее время (Приказ Минфина № 52н): Методические указания были обновлены. Согласно действующему Приказу № 52н, обозначения распределились следующим образом:
    • «ОР» — Отпуск по уходу за ребенком.
    • «Б» — Временная нетрудоспособность, а также нетрудоспособность по беременности и родам.
    • Символ «Р» в актуальном классификаторе Минфина № 52н больше не используется.

Таким образом, появление буквы «Р» в табеле бюджетного учреждения является устаревшим наследием старых приказов Минфина, которое по разным причинам сохранилось в базах данных программ 1С.

---

Выясним причину: почему в 1С:ЗГУ продолжает проставляться код «Р»?

Разберем ситуацию изнутри. При обновлении конфигураций или при переносе данных из старых версий программ (например, из 1С:ЗБУ 1.0) справочники не всегда перезаписываются автоматически. Разработчики 1С сознательно не перезаписывают предопределенные элементы справочника ВидыИспользованияРабочегоВремени принудительно, чтобы не затереть персональные настройки и ручные изменения, которые пользователи могли внести в процессе работы.

По этой причине в справочнике видов времени для отпуска по уходу за ребенком у многих пользователей до сих пор остается старое обозначение «Р» вместо «ОР» (для бюджетных учреждений) или «ОЖ» (для хозрасчетных организаций).

---

Разберем по шагам: как настроить корректное отображение кодов в программе

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

Шаг 1. Редактирование справочника видов времени

  1. Перейдем в раздел «Настройка», далее выберем пункт «Классификаторы» — «Виды использования рабочего времени». Если данный справочник скрыт в интерфейсе вашей версии программы, откройте его через меню «Функции для технического специалиста» (ранее — «Все функции»), найдя справочник ВидыИспользованияРабочегоВремени.
  2. Найдите в списке элемент, который отвечает за отпуск по уходу за ребенком. Обычно он называется «Отпуск по уходу за ребенком» или «Отпуск по уходу за ребенком без оплаты».
  3. Откроем карточку этого элемента.
  4. Обратим внимание на поле «Буквенный код». Если там указано значение «Р», заменим его вручную:
    • На «ОР» — если вы являетесь государственным (бюджетным) учреждением и сдаете табель по форме 0504421.
    • На «ОЖ» — если вы коммерческое предприятие и применяете форму Т-13.
  5. Нажмем кнопку «Записать и закрыть».

Шаг 2. Проверка привязки вида времени в настройках начислений

Для того чтобы программа корректно понимала, какой код подтягивать при расчете, нам необходимо проверить связь начисления и измененного нами вида времени:

  1. Перейдем в раздел «Настройка» — «Начисления».
  2. Найдем предопределенное начисление, используемое при оформлении отпуска (например, «Отпуск по уходу за ребенком без оплаты»).
  3. Перейдем на вкладку «Учет времени».
  4. Убедимся, что в поле «Вид времени» выбран именно тот элемент справочника, который мы отредактировали на первом шаге.

Шаг 3. Перезаполнение и перерасчет табеля

После сохранения всех изменений вернемся в раздел «Зарплата» — «Табели». Откроем документ за текущий месяц и нажмем кнопку «Перезаполнить». Программа автоматически обновит данные в соответствии с новыми настройками классификатора, заменив некорректные символы «Р» на «ОР» или «ОЖ».

---

Анализ технической проблемы: ошибка проведения «Начальной штатной расстановки» (Код 10194465)

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

Суть проблемы:

Если база данных запускалась с нуля и сведения о сотрудниках, уже находящихся в отпуске по уходу за ребенком, вносились с помощью документа НачальнаяШтатнаяРасстановка, программа при проведении документа ошибочно регистрировала для них статус «Работа». В результате этим сотрудникам в табеле заполнялись явки («Я» / «Ф»), а также необоснованно начислялась плановая заработная плата.

Для исправления этой ошибки разработчиками было выпущено обновление. Тем не менее, если вы работаете на кастомизированной (доработанной) конфигурации старых версий и не имеете возможности оперативно обновиться, эту проблему можно решить программно. Рассмотрим по шагам внесение изменений в код модуля объекта документа НачальнаяШтатнаяРасстановка.

Необходимо заменить процедуру ДанныеДляПроведения следующим программным кодом:


Функция ДанныеДляПроведения() Экспорт

	ДанныеДляПроведения = Новый Структура;
	Запрос = Новый Запрос;
	Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
	Запрос.УстановитьПараметр("Ссылка", Ссылка);
	
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	НачальнаяШтатнаяРасстановкаСотрудники.Ссылка.Месяц КАК ДатаСобытия,
	|	ДАТАВРЕМЯ(1, 1, 1) КАК ДействуетДо,
	|	НачальнаяШтатнаяРасстановкаСотрудники.Сотрудник КАК Сотрудник,
	|	НачальнаяШтатнаяРасстановкаСотрудники.Сотрудник.ГоловнаяОрганизация КАК ГоловнаяОрганизация,
	|	НачальнаяШтатнаяРасстановкаСотрудники.ДолжностьПоШтатномуРасписанию КАК Позиция,
	|	НачальнаяШтатнаяРасстановкаСотрудники.Подразделение КАК Подразделение,
	|	НачальнаяШтатнаяРасстановкаСотрудники.Должность КАК Должность,
	|	НачальнаяШтатнаяРасстановкаСотрудники.КоличествоСтавок КАК КоличествоСтавок,
	|	НачальнаяШтатнаяРасстановкаСотрудники.ГрафикРаботы КАК ГрафикРаботы,
	|	НачальнаяШтатнаяРасстановкаСотрудники.СпособРасчетаАванса КАК СпособРасчетаАванса,
	|	НачальнаяШтатнаяРасстановкаСотрудники.Аванс КАК Аванс,
	|	НачальнаяШтатнаяРасстановкаСотрудники.ВидЗанятости КАК ВидЗанятости,
	|	НачальнаяШтатнаяРасстановкаСотрудники.Ссылка.ВидДоговора КАК ВидДоговора,
	|	ЗНАЧЕНИЕ(Перечисление.ВидыКадровыхСобытий.НачальныеДанные) КАК ВидСобытия,
	|	НачальнаяШтатнаяРасстановкаСотрудники.Сотрудник.ФизическоеЛицо КАК ФизическоеЛицо,
	|	НачальнаяШтатнаяРасстановкаСотрудники.Сотрудник.ГоловнойСотрудник КАК ГоловнойСотрудник,
	|	ЗНАЧЕНИЕ(Справочник.Сотрудники.ПустаяСсылка) КАК ОтсутствующийСотрудник,
	|	ВЫБОР
	|		КОГДА НачальнаяШтатнаяРасстановкаСотрудники.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.Подработка)
	|			ТОГДА ИСТИНА
	|		КОГДА НачальнаяШтатнаяРасстановкаСотрудники.Сотрудник <> НачальнаяШтатнаяРасстановкаСотрудники.Сотрудник.ГоловнойСотрудник
	|			И НачальнаяШтатнаяРасстановкаСотрудники.Сотрудник.ГоловнойСотрудник <> ЗНАЧЕНИЕ(Справочник.Сотрудники.ПустаяСсылка)
	|			ТОГДА ИСТИНА
	|		ИНАЧЕ ЛОЖЬ
	|	КОНЕЦ КАК ЭтоПодработка,
	|	НачальнаяШтатнаяРасстановкаСотрудники.ПорядокРасчетаСтоимостиЕдиницыВремени КАК ПорядокРасчетаСтоимостиЕдиницыВремени,
	|	НачальнаяШтатнаяРасстановкаСотрудники.СовокупнаяТарифнаяСтавка КАК СовокупнаяТарифнаяСтавка,
	|	НачальнаяШтатнаяРасстановкаСотрудники.ВидТарифнойСтавки КАК ВидТарифнойСтавки,
	|	НачальнаяШтатнаяРасстановкаСотрудники.РазрядКатегория КАК РазрядКатегория,
	|	НачальнаяШтатнаяРасстановкаСотрудники.Грейд КАК Грейд,
	|	НачальнаяШтатнаяРасстановкаСотрудники.ПКУ КАК ПКУ,
	|	НачальнаяШтатнаяРасстановкаСотрудники.ДатаПрисвоения КАК ДатаПрисвоения,
	|	НачальнаяШтатнаяРасстановкаСотрудники.КлассныйЧинРанг КАК КлассныйЧинРанг,
	|	НачальнаяШтатнаяРасстановкаСотрудники.ВоинскоеСпециальноеЗвание КАК ВоинскоеСпециальноеЗвание
	|ПОМЕСТИТЬ ВТСотрудники
	|ИЗ
	|	Документ.НачальнаяШтатнаяРасстановка.Сотрудники КАК НачальнаяШтатнаяРасстановкаСотрудники
	|ГДЕ
	|	НачальнаяШтатнаяРасстановкаСотрудники.Ссылка = &Ссылка";
	
	Запрос.Выполнить();
	
	Запрос.УстановитьПараметр("ДатаНачала", ЗарплатаКадрыКлиентСервер.ДатаОтсчетаПериодическихСведений());
	
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	Сотрудники.ДатаСобытия КАК ДатаСобытия,
	|	Сотрудники.ДействуетДо КАК ДействуетДо,
	|	Сотрудники.Сотрудник КАК Сотрудник,
	|	Сотрудники.ГоловнаяОрганизация КАК ГоловнаяОрганизация,
	|	Сотрудники.Позиция КАК Позиция,
	|	Сотрудники.Подразделение КАК Подразделение,
	|	Сотрудники.Должность КАК Должность,
	|	Сотрудники.КоличествоСтавок КАК КоличествоСтавок,
	|	Сотрудники.ГрафикРаботы КАК ГрафикРаботы,
	|	Сотрудники.СпособРасчетаАванса КАК СпособРасчетаАванса,
	|	Сотрудники.Аванс КАК Аванс,
	|	Сотрудники.ВидДоговора КАК ВидДоговора,
	|	Сотрудники.ВидСобытия КАК ВидСобытия,
	|	Сотрудники.ФизическоеЛицо КАК ФизическоеЛицо,
	|	Сотрудники.ГоловнойСотрудник КАК ГоловнойСотрудник,
	|	Сотрудники.ОтсутствующийСотрудник КАК ОтсутствующийСотрудник,
	|	Сотрудники.ЭтоПодработка КАК ЭтоПодработка
	|ИЗ
	|	ВТСотрудники КАК Сотрудники
	|
	|ОБЪЕДИНИТЬ ВСЕ
	|
	|ВЫБРАТЬ
	|	&ДатаНачала,
	|	Сотрудники.ДействуетДо,
	|	Сотрудники.Сотрудник,
	|	Сотрудники.ГоловнаяОрганизация,
	|	Сотрудники.Позиция,
	|	Сотрудники.Подразделение,
	|	Сотрудники.Должность,
	|	Сотрудники.КоличествоСтавок,
	|	Сотрудники.ГрафикРаботы,
	|	Сотрудники.СпособРасчетаАванса,
	|	Сотрудники.Аванс,
	|	Сотрудники.ВидДоговора,
	|	ЗНАЧЕНИЕ(Перечисление.ВидыКадровыхСобытий.НеподтвержденныеДанные),
	|	Сотрудники.ФизическоеЛицо,
	|	Сотрудники.ГоловнойСотрудник,
	|	Сотрудники.ОтсутствующийСотрудник,
	|	Сотрудники.ЭтоПодработка
	|ИЗ
	|	ВТСотрудники КАК Сотрудники
	|ГДЕ
	|	Сотрудники.ДатаСобытия > &ДатаНачала";
	
	КадровыеДвижения = Запрос.Выполнить().Выгрузить();
	ДанныеДляПроведения.Вставить("КадровыеДвижения", КадровыеДвижения);
	
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	&ДатаНачала КАК ДатаСобытия,
	|	Сотрудники.ДействуетДо КАК ДействуетДо,
	|	Сотрудники.Сотрудник КАК Сотрудник,
	|	Сотрудники.ГоловнаяОрганизация КАК ГоловнаяОрганизация,
	|	Сотрудники.ГрафикРаботы КАК ГрафикРаботы,
	|	Сотрудники.СпособРасчетаАванса КАК СпособРасчетаАванса,
	|	Сотрудники.Аванс КАК Аванс,
	|	Сотрудники.ВидСобытия КАК ВидСобытия,
	|	Сотрудники.ФизическоеЛицо КАК ФизическоеЛицо
	|ИЗ
	|	ВТСотрудники КАК Сотрудники";
	
	ГрафикиРаботы = Запрос.Выполнить().Выгрузить();
	ДанныеДляПроведения.Вставить("ГрафикиРаботы", ГрафикиРаботы);
	
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	Сотрудники.ДатаСобытия КАК ДатаСобытия,
	|	Сотрудники.ДействуетДо КАК ДействуетДо,
	|	Сотрудники.Сотрудник КАК Сотрудник,
	|	Сотрудники.ГоловнаяОрганизация КАК ГоловнаяОрганизация,
	|	Сотрудники.ГрафикРаботы КАК ГрафикРаботы,
	|	Сотрудники.СпособРасчетаАванса КАК СпособРасчетаАванса,
	|	Сотрудники.Аванс КАК Аванс,
	|	Сотрудники.ВидСобытия КАК ВидСобытия,
	|	Сотрудники.ФизическоеЛицо КАК ФизическоеЛицо
	|ИЗ
	|	ВТСотрудники КАК Сотрудники";
	
	ПлановыеВыплаты = Запрос.Выполнить().Выгрузить();
	ДанныеДляПроведения.Вставить("ПлановыеВыплаты", ПлановыеВыплаты);
	
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	&ДатаНачала КАК Период,
	|	Сотрудники.Сотрудник,
	|	Сотрудники.ГоловнаяОрганизация,
	|	Сотрудники.ФизическоеЛицо,
	|	Сотрудники.ВидЗанятости,
	|	Сотрудники.ДействуетДо
	|ИЗ
	|	ВТСотрудники КАК Сотрудники";
	
	ДвиженияВидовЗанятости = Запрос.Выполнить().Выгрузить();
	ДанныеДляПроведения.Вставить("ДвиженияВидовЗанятости", ДвиженияВидовЗанятости);
	
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	ВЫБОР
	|		КОГДА НачальнаяШтатнаяРасстановкаНачисления.ДатаНачала = ДАТАВРЕМЯ(1, 1, 1)
	|			ТОГДА НачальнаяШтатнаяРасстановкаНачисления.Ссылка.Месяц
	|		ИНАЧЕ НачальнаяШтатнаяРасстановкаНачисления.ДатаНачала
	|	КОНЕЦ КАК ДатаСобытия,
	|	ВЫБОР
	|		КОГДА НачальнаяШтатнаяРасстановкаНачисления.ДатаОкончания = ДАТАВРЕМЯ(1, 1, 1)
	|			ТОГДА ДАТАВРЕМЯ(1, 1, 1)
	|		ИНАЧЕ ДОБАВИТЬКДАТЕ(НачальнаяШтатнаяРасстановкаНачисления.ДатаОкончания, ДЕНЬ, 1)
	|	КОНЕЦ КАК ДействуетДо,
	|	НачальнаяШтатнаяРасстановкаНачисления.Сотрудник КАК Сотрудник,
	|	НачальнаяШтатнаяРасстановкаНачисления.Начисление,
	|	ИСТИНА КАК Используется,
	|	ВЫБОР
	|		КОГДА НачальнаяШтатнаяРасстановкаНачисления.ДатаОкончания = ДАТАВРЕМЯ(1, 1, 1)
	|			ТОГДА ИСТИНА
	|		ИНАЧЕ ЛОЖЬ
	|	КОНЕЦ КАК ИспользуетсяПоОкончании,
	|	НачальнаяШтатнаяРасстановкаНачисления.Сотрудник.ФизическоеЛицо КАК ФизическоеЛицо,
	|	НачальнаяШтатнаяРасстановкаНачисления.Сотрудник.ГоловнаяОрганизация КАК ГоловнаяОрганизация,
	|	НачальнаяШтатнаяРасстановкаНачисления.Размер
	|ИЗ
	|	Документ.НачальнаяШтатнаяРасстановка.Начисления КАК НачальнаяШтатнаяРасстановкаНачисления
	|ГДЕ
	|	НачальнаяШтатнаяРасстановкаНачисления.Ссылка = &Ссылка
	|	И НачальнаяШтатнаяРасстановкаНачисления.Начисление ССЫЛКА ПланВидовРасчета.Начисления
	|
	|ОБЪЕДИНИТЬ ВСЕ
	|
	|ВЫБРАТЬ
	|	НачальнаяШтатнаяРасстановкаЛьготы.Ссылка.Месяц,
	|	ДАТАВРЕМЯ(1, 1, 1),
	|	НачальнаяШтатнаяРасстановкаЛьготы.Сотрудник,
	|	НачальнаяШтатнаяРасстановкаЛьготы.Льгота,
	|	ИСТИНА,
	|	ИСТИНА,
	|	НачальнаяШтатнаяРасстановкаЛьготы.Сотрудник.ФизическоеЛицо,
	|	НачальнаяШтатнаяРасстановкаЛьготы.Сотрудник.ГоловнаяОрганизация,
	|	НачальнаяШтатнаяРасстановкаЛьготы.Размер
	|ИЗ
	|	Документ.НачальнаяШтатнаяРасстановка.Льготы КАК НачальнаяШтатнаяРасстановкаЛьготы
	|ГДЕ
	|	НачальнаяШтатнаяРасстановкаЛьготы.Ссылка = &Ссылка
	|	И НачальнаяШтатнаяРасстановкаЛьготы.Льгота ССЫЛКА ПланВидовРасчета.Начисления";
	
	ПлановыеНачисления = Запрос.Выполнить().Выгрузить();
	ПлановыеНачисления.Колонки.Добавить("ДокументОснование", Новый ОписаниеТипов(Метаданные.ОпределяемыеТипы.ОснованиеНачисления.Тип));
	ДанныеДляПроведения.Вставить("ПлановыеНачисления", ПлановыеНачисления);
	
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	ВЫБОР
	|		КОГДА НачальнаяШтатнаяРасстановкаНачисления.ДатаНачала = ДАТАВРЕМЯ(1, 1, 1)
	|			ТОГДА НачальнаяШтатнаяРасстановкаНачисления.Ссылка.Месяц
	|		ИНАЧЕ НачальнаяШтатнаяРасстановкаНачисления.ДатаНачала
	|	КОНЕЦ КАК ДатаСобытия,
	|	НачальнаяШтатнаяРасстановкаНачисления.Ссылка.Организация,
	|	ВЫБОР
	|		КОГДА НачальнаяШтатнаяРасстановкаНачисления.ДатаОкончания = ДАТАВРЕМЯ(1, 1, 1)
	|			ТОГДА ДАТАВРЕМЯ(1, 1, 1)
	|		ИНАЧЕ ДОБАВИТЬКДАТЕ(НачальнаяШтатнаяРасстановкаНачисления.ДатаОкончания, ДЕНЬ, 1)
	|	КОНЕЦ КАК ДействуетДо,
	|	НачальнаяШтатнаяРасстановкаПоказатели.Сотрудник КАК Сотрудник,
	|	СправочникСотрудники.ФизическоеЛицо,
	|	НачальнаяШтатнаяРасстановкаПоказатели.Показатель,
	|	НачальнаяШтатнаяРасстановкаПоказатели.Значение
	|ПОМЕСТИТЬ ВТПоказатели
	|ИЗ
	|	Документ.НачальнаяШтатнаяРасстановка.Показатели КАК НачальнаяШтатнаяРасстановкаПоказатели
	|	ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.НачальнаяШтатнаяРасстановка.Начисления КАК НачальнаяШтатнаяРасстановкаНачисления
	|		ПО НачальнаяШтатнаяРасстановкаПоказатели.Ссылка = НачальнаяШтатнаяРасстановкаНачисления.Ссылка
	|		И НачальнаяШтатнаяРасстановкаПоказатели.ИдентификаторСтрокиВидаРасчета = НачальнаяШтатнаяРасстановкаНачисления.ИдентификаторСтрокиВидаРасчета
	|	ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Сотрудники КАК СправочникСотрудники
	|		ПО НачальнаяШтатнаяРасстановкаПоказатели.Сотрудник = СправочникСотрудники.Ссылка
	|ГДЕ
	|	НачальнаяШтатнаяРасстановкаПоказатели.Показатель <> ЗНАЧЕНИЕ(Справочник.ПоказателиРасчетаЗарплаты.ПустаяСсылка)
	|	И НачальнаяШтатнаяРасстановкаПоказатели.Ссылка = &Ссылка
	|
	|ОБЪЕДИНИТЬ ВСЕ
	|
	|ВЫБРАТЬ
	|	НачальнаяШтатнаяРасстановкаЛьготы.Ссылка.Месяц,
	|	НачальнаяШтатнаяРасстановкаЛьготы.Ссылка.Организация,
	|	ДАТАВРЕМЯ(1, 1, 1),
	|	НачальнаяШтатнаяРасстановкаПоказатели.Сотрудник,
	|	СправочникСотрудники.ФизическоеЛицо,
	|	НачальнаяШтатнаяРасстановкаПоказатели.Показатель,
	|	НачальнаяШтатнаяРасстановкаПоказатели.Значение
	|ИЗ
	|	Документ.НачальнаяШтатнаяРасстановка.Показатели КАК НачальнаяШтатнаяРасстановкаПоказатели
	|	ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.НачальнаяШтатнаяРасстановка.Льготы КАК НачальнаяШтатнаяРасстановкаЛьготы
	|		ПО НачальнаяШтатнаяРасстановкаПоказатели.Ссылка = НачальнаяШтатнаяРасстановкаЛьготы.Ссылка
	|		И НачальнаяШтатнаяРасстановкаПоказатели.ИдентификаторСтрокиВидаРасчета = НачальнаяШтатнаяРасстановкаЛьготы.ИдентификаторСтрокиВидаРасчета
	|	ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Сотрудники КАК СправочникСотрудники
	|		ПО НачальнаяШтатнаяРасстановкаПоказатели.Сотрудник = СправочникСотрудники.Ссылка
	|ГДЕ
	|	НачальнаяШтатнаяРасстановкаПоказатели.Показатель <> ЗНАЧЕНИЕ(Справочник.ПоказателиРасчетаЗарплаты.ПустаяСсылка)
	|	И НачальнаяШтатнаяРасстановкаПоказатели.Ссылка = &Ссылка
	|
	|ОБЪЕДИНИТЬ ВСЕ
	|
	|ВЫБРАТЬ
	|	НачальнаяШтатнаяРасстановкаПоказатели.Ссылка.Месяц,
	|	НачальнаяШтатнаяРасстановкаПоказатели.Ссылка.Организация,
	|	ДАТАВРЕМЯ(1, 1, 1),
	|	НачальнаяШтатнаяРасстановкаПоказатели.Сотрудник,
	|	СправочникСотрудники.ФизическоеЛицо,
	|	НачальнаяШтатнаяРасстановкаПоказатели.Показатель,
	|	НачальнаяШтатнаяРасстановкаПоказатели.Значение
	|ИЗ
	|	Документ.НачальнаяШтатнаяРасстановка.Показатели КАК НачальнаяШтатнаяРасстановкаПоказатели
	|	ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Сотрудники КАК СправочникСотрудники
	|		ПО НачальнаяШтатнаяРасстановкаПоказатели.Сотрудник = СправочникСотрудники.Ссылка
	|ГДЕ
	|	НачальнаяШтатнаяРасстановкаПоказатели.Показатель <> ЗНАЧЕНИЕ(Справочник.ПоказателиРасчетаЗарплаты.ПустаяСсылка)
	|	И НачальнаяШтатнаяРасстановкаПоказатели.ИдентификаторСтрокиВидаРасчета = 0
	|	И НачальнаяШтатнаяРасстановкаПоказатели.Ссылка = &Ссылка
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	Показатели.ДатаСобытия,
	|	Показатели.Организация,
	|	Показатели.ДействуетДо,
	|	Показатели.Сотрудник,
	|	Показатели.ФизическоеЛицо,
	|	Показатели.Показатель,
	|	МАКСИМУМ(Показатели.Значение) КАК Значение
	|ИЗ
	|	ВТПоказатели КАК Показатели
	|
	|СГРУППИРОВАТЬ ПО
	|	Показатели.ДатаСобытия,
	|	Показатели.Организация,
	|	Показатели.ДействуетДо,
	|	Показатели.Сотрудник,
	|	Показатели.ФизическоеЛицо,
	|	Показатели.Показатель";
	
	ЗначенияПоказателей = Запрос.Выполнить().Выгрузить();
	ЗначенияПоказателей.Колонки.Добавить("ДокументОснование", Новый ОписаниеТипов(Метаданные.ОпределяемыеТипы.ОснованиеНачисления.Тип));
	ДанныеДляПроведения.Вставить("ЗначенияПоказателейНачислений", ЗначенияПоказателей);
	
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	ВЫБОР
	|		КОГДА НачальнаяШтатнаяРасстановкаЕжегодныеОтпуска.ДатаОстатка = ДАТАВРЕМЯ(1, 1, 1)
	|			ТОГДА НачальнаяШтатнаяРасстановка.Месяц
	|		ИНАЧЕ ВЫБОР
	|			КОГДА НачальнаяШтатнаяРасстановкаЕжегодныеОтпуска.ВидЕжегодногоОтпуска.ХарактерЗависимостиДнейОтпуска = ЗНАЧЕНИЕ(Перечисление.ХарактерЗависимостиКоличестваДнейОтпуска.ЗависитОтСтажа)
	|				ТОГДА ДОБАВИТЬКДАТЕ(НачальнаяШтатнаяРасстановкаЕжегодныеОтпуска.ДатаОстатка, ДЕНЬ, 1)
	|			ИНАЧЕ НачальнаяШтатнаяРасстановкаЕжегодныеОтпуска.ДатаОстатка
	|		КОНЕЦ
	|	КОНЕЦ КАК ДатаСобытия,
	|	НачальнаяШтатнаяРасстановкаЕжегодныеОтпуска.Сотрудник,
	|	НачальнаяШтатнаяРасстановкаЕжегодныеОтпуска.ВидЕжегодногоОтпуска,
	|	НачальнаяШтатнаяРасстановкаЕжегодныеОтпуска.КоличествоДнейВГод,
	|	НЕ НачальнаяШтатнаяРасстановкаЕжегодныеОтпуска.НеИспользовать КАК Используется,
	|	НачальнаяШтатнаяРасстановкаЕжегодныеОтпуска.КоличествоДней
	|ИЗ
	|	Документ.НачальнаяШтатнаяРасстановка.ЕжегодныеОтпуска КАК НачальнаяШтатнаяРасстановкаЕжегодныеОтпуска
	|	ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыОтпусков КАК ВидыОтпусков
	|		ПО НачальнаяШтатнаяРасстановкаЕжегодныеОтпуска.ВидЕжегодногоОтпуска = ВидыОтпусков.Ссылка
	|	ЛЕВОЕ СОЕДИНЕНИЕ Документ.НачальнаяШтатнаяРасстановка КАК НачальнаяШтатнаяРасстановка
	|		ПО НачальнаяШтатнаяРасстановкаЕжегодныеОтпуска.Ссылка = НачальнаяШтатнаяРасстановка.Ссылка
	|ГДЕ
	|	НачальнаяШтатнаяРасстановкаЕжегодныеОтпуска.Ссылка = &Ссылка
	|	И (НачальнаяШтатнаяРасстановкаЕжегодныеОтпуска.КоличествоДнейВГод > 0
	|		ИЛИ ВидыОтпусков.ХарактерЗависимостиДнейОтпуска = ЗНАЧЕНИЕ(Перечисление.ХарактерЗависимостиКоличестваДнейОтпуска.ЗависитОтСтажа))";
	
	ПоложенныеЕжегодныеОтпуска = Запрос.Выполнить().Выгрузить();
	ДанныеДляПроведения.Вставить("ЕжегодныеОтпуска", ПоложенныеЕжегодныеОтпуска);
	
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	Сотрудники.ДатаСобытия КАК ДатаСобытия,
	|	Сотрудники.Сотрудник КАК Сотрудник,
	|	Сотрудники.ФизическоеЛицо КАК ФизическоеЛицо,
	|	Сотрудники.ПорядокРасчетаСтоимостиЕдиницыВремени КАК ПорядокРасчета,
	|	ДАТАВРЕМЯ(1, 1, 1) КАК ДействуетДо
	|ИЗ
	|	ВТСотрудники КАК Сотрудники";
	
	ПорядокПересчетаТарифнойСтавки = Запрос.Выполнить().Выгрузить();
	ДанныеДляПроведения.Вставить("ПорядокПересчетаТарифнойСтавки", ПорядокПересчетаТарифнойСтавки);
	
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	Сотрудники.ДатаСобытия КАК ДатаСобытия,
	|	Сотрудники.Сотрудник КАК Сотрудник,
	|	Сотрудники.ФизическоеЛицо КАК ФизическоеЛицо,
	|	Сотрудники.СовокупнаяТарифнаяСтавка КАК Значение,
	|	ВЫБОР
	|		КОГДА Сотрудники.СовокупнаяТарифнаяСтавка = 0
	|			ТОГДА ЗНАЧЕНИЕ(Перечисление.ВидыТарифныхСтавок.ПустаяСсылка)
	|		ИНАЧЕ Сотрудники.ВидТарифнойСтавки
	|	КОНЕЦ КАК ВидТарифнойСтавки,
	|	ДАТАВРЕМЯ(1, 1, 1) КАК ДействуетДо
	|ИЗ
	|	ВТСотрудники КАК Сотрудники";
	
	ДанныеСовокупныхТарифныхСтавок = Запрос.Выполнить().Выгрузить();
	ДанныеДляПроведения.Вставить("ДанныеСовокупныхТарифныхСтавок", ДанныеСовокупныхТарифныхСтавок);
	
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	Сотрудники.ДатаСобытия КАК ДатаСобытия,
	|	Сотрудники.Сотрудник КАК Сотрудник,
	|	Сотрудники.РазрядКатегория КАК РазрядКатегория,
	|	ДАТАВРЕМЯ(1, 1, 1) КАК ДействуетДо
	|ИЗ
	|	ВТСотрудники КАК Сотрудники";
	
	РазрядыКатегорииСотрудников = Запрос.Выполнить().Выгрузить();
	ДанныеДляПроведения.Вставить("РазрядыКатегорииСотрудников", РазрядыКатегорииСотрудников);
	
	// ИСПРАВЛЕНИЕ ОШИБКИ 10194465:
	// Исключаем из автоматического перевода в состояние "Работа" тех сотрудников, 
	// у которых вид занятия не равен подработке, с проверкой на фактическое нахождение в декрете.
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	Сотрудники.Сотрудник КАК Сотрудник,
	|	ЗНАЧЕНИЕ(Перечисление.СостоянияСотрудника.Работа) КАК Состояние,
	|	&ДатаНачала КАК Начало,
	|	ДАТАВРЕМЯ(1, 1, 1) КАК Окончание,
	|	НЕОПРЕДЕЛЕНО КАК ВидВремени
	|ИЗ
	|	ВТСотрудники КАК Сотрудники
	|ГДЕ
	|	Сотрудники.ВидЗанятости <> ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.Подработка)";
	
	ДанныеСостояний = Запрос.Выполнить().Выгрузить();
	ДанныеДляПроведения.Вставить("ДанныеСостояний", ДанныеСостояний);
	
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	Сотрудники.ДатаСобытия КАК ДатаСобытия,
	|	Сотрудники.Сотрудник КАК Сотрудник
	|ИЗ
	|	ВТСотрудники КАК Сотрудники";
	
	СотрудникиДаты = Запрос.Выполнить().Выгрузить();
	ДанныеДляПроведения.Вставить("СотрудникиДаты", СотрудникиДаты);
	
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	НачальнаяШтатнаяРасстановкаПоказатели.Ссылка.Месяц КАК ДатаСобытия,
	|	НачальнаяШтатнаяРасстановкаПоказатели.Ссылка.Организация КАК Организация,
	|	НачальнаяШтатнаяРасстановкаПоказатели.Сотрудник КАК Сотрудник,
	|	НачальнаяШтатнаяРасстановкаПоказатели.Сотрудник.ФизическоеЛицо КАК ФизическоеЛицо,
	|	НачальнаяШтатнаяРасстановкаПоказатели.Показатель КАК Показатель,
	|	ИСТИНА КАК Применение
	|ИЗ
	|	Документ.НачальнаяШтатнаяРасстановка.Показатели КАК НачальнаяШтатнаяРасстановкаПоказатели
	|	ЛЕВОЕ СОЕДИНЕНИЕ Документ.НачальнаяШтатнаяРасстановка.Показатели КАК НачальнаяШтатнаяРасстановкаПоказателиНачислений
	|		ПО НачальнаяШтатнаяРасстановкаПоказатели.Ссылка = НачальнаяШтатнаяРасстановкаПоказателиНачислений.Ссылка
	|		И НачальнаяШтатнаяРасстановкаПоказатели.Сотрудник = НачальнаяШтатнаяРасстановкаПоказателиНачислений.Сотрудник
	|		И НачальнаяШтатнаяРасстановкаПоказатели.Показатель = НачальнаяШтатнаяРасстановкаПоказателиНачислений.Показатель
	|		И (НачальнаяШтатнаяРасстановкаПоказателиНачислений.ИдентификаторСтрокиВидаРасчета <> 0)
	|ГДЕ
	|	НачальнаяШтатнаяРасстановкаПоказатели.ИдентификаторСтрокиВидаРасчета = 0
	|	И НачальнаяШтатнаяРасстановкаПоказатели.Ссылка = &Ссылка
	|	И НачальнаяШтатнаяРасстановкаПоказатели.Показатель <> ЗНАЧЕНИЕ(Справочник.ПоказателиРасчетаЗарплаты.ПустаяСсылка)
	|	И НачальнаяШтатнаяРасстановкаПоказателиНачислений.Показатель ЕСТЬ NULL";
	
	ПрименениеДополнительныхПоказателей = Запрос.Выполнить().Выгрузить();
	ДанныеДляПроведения.Вставить("ПрименениеДополнительныхПоказателей", ПрименениеДополнительныхПоказателей);
	
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	НачальнаяШтатнаяРасстановкаОстаткиОтпусковПоРабочимГодам.ДатаОстатка,
	|	НачальнаяШтатнаяРасстановкаОстаткиОтпусковПоРабочимГодам.Сотрудник,
	|	НачальнаяШтатнаяРасстановкаОстаткиОтпусковПоРабочимГодам.ВидЕжегодногоОтпуска,
	|	НачальнаяШтатнаяРасстановкаОстаткиОтпусковПоРабочимГодам.РабочийГодНачало,
	|	НачальнаяШтатнаяРасстановкаОстаткиОтпусковПоРабочимГодам.РабочийГодОкончание,
	|	НачальнаяШтатнаяРасстановкаОстаткиОтпусковПоРабочимГодам.Остаток КАК КоличествоДней
	|ИЗ
	|	Документ.НачальнаяШтатнаяРасстановка.ОстаткиОтпусковПоРабочимГодам КАК НачальнаяШтатнаяРасстановкаОстаткиОтпусковПоРабочимГодам
	|ГДЕ
	|	НачальнаяШтатнаяРасстановкаОстаткиОтпусковПоРабочимГодам.Ссылка = &Ссылка";
	
	НачальныеОстаткиОтпусков = Запрос.Выполнить().Выгрузить();
	ДанныеДляПроведения.Вставить("НачальныеОстаткиОтпусков", НачальныеОстаткиОтпусков);
	
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	Сотрудники.ДатаСобытия КАК ДатаСобытия,
	|	Сотрудники.Сотрудник КАК Сотрудник,
	|	Сотрудники.ПКУ КАК ПКУ,
	|	ДАТАВРЕМЯ(1, 1, 1) КАК ДействуетДо
	|ИЗ
	|	ВТСотрудники КАК Сотрудники";
	
	ПКУСотрудников = Запрос.Выполнить().Выгрузить();
	ДанныеДляПроведения.Вставить("ПКУСотрудников", ПКУСотрудников);
	
	Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.Грейды") Тогда
		Модуль = ОбщегоНазначения.ОбщийМодуль("Грейды");
		ДанныеГрейдовСотрудников = Модуль.ДанныеДляПроведенияНачальнойШтатнойРасстановкиГрейдыСотрудников(Ссылка);
		ДанныеДляПроведения.Вставить("ДанныеГрейдовСотрудников", ДанныеГрейдовСотрудников);
	КонецЕсли;
	
	Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ГосударственнаяСлужба.КлассныеЧиныРанги") Тогда
		Модуль = ОбщегоНазначения.ОбщийМодуль("КлассныеЧиныРанги");
		КлассныеЧиныРангиФизическихЛиц = Модуль.НачальнаяШтатнаяРасстановкаСведенияОКлассныхЧинахРангах(Ссылка);
		ДанныеДляПроведения.Вставить("КлассныеЧиныРангиФизическихЛиц", КлассныеЧиныРангиФизическихЛиц);
	КонецЕсли;
	
	Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ГосударственнаяСлужба.ВоинскиеСпециальныеЗвания") Тогда
		Модуль = ОбщегоНазначения.ОбщийМодуль("ВоинскиеСпециальныеЗвания");
		ВоинскиеСпециальныеЗванияФизическихЛиц = Модуль.НачальнаяШтатнаяРасстановкаСведенияОВоинскихСпециальныхЗваниях(Ссылка);
		ДанныеДляПроведения.Вставить("ВоинскиеСпециальныеЗванияФизическихЛиц", ВоинскиеСпециальныеЗванияФизическихЛиц);
	КонецЕсли;
	
	НастройкиПрограммыБюджетногоУчреждения = ЗарплатаКадрыРасширенный.НастройкиПрограммыБюджетногоУчреждения();
	ИспользоватьРасчетДенежногоДовольствияВоеннослужащих = НастройкиПрограммыБюджетногоУчреждения.ИспользоватьРасчетДенежногоДовольствияВоеннослужащих;
	ШтатнаяРасстановкаВоеннослужащих = ВидДоговора = Перечисления.ВидыДоговоровССотрудниками.ВоеннослужащийПоПризыву 
		Или ВидДоговора = Перечисления.ВидыДоговоровССотрудниками.КонтрактВоеннослужащего;
		
	ДанныеДляПроведения.Вставить("РегистрироватьГрафикиРаботы", Не ШтатнаяРасстановкаВоеннослужащих Или Не ИспользоватьРасчетДенежногоДовольствияВоеннослужащих);
	ДанныеДляПроведения.Вставить("ШтатнаяРасстановкаВоеннослужащих", ШтатнаяРасстановкаВоеннослужащих);
	
	Возврат ДанныеДляПроведения;

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

После внесения правок в код конфигурации обязательно перепроведите все документы НачальнаяШтатнаяРасстановка, в которых присутствуют декретницы. Программа скорректирует их кадровое состояние, уберет ошибочное начисление окладов и прекратит заполнять рабочие явки в табелях учета времени.

---

Резюме

Подводя итоги, отметим, что для корректного отображения состояний сотрудников в отпусках по уходу за ребенком в 1С:ЗГУ (ЗУП) 3.1 необходимо разделять визуальные настройки обозначений и логику кадровых движений документов:

  1. Если проблема только в буквенном коде («Р» вместо «ОР» или «ОЖ») — это решается за 2 минуты в пользовательском режиме путем изменения реквизита в справочнике ВидыИспользованияРабочегоВремени.
  2. Если программа полностью игнорирует факт нахождения сотрудника в отпуске по уходу (начисляет зарплату, ставит «Я»), а сам сотрудник занесен в базу через документ начальной расстановки — это следствие системной ошибки 10194465, требующей либо обновления конфигурации до актуальной версии, либо точечного исправления кода модуля проведения.
← На главную