Зарплата и Управление Персоналом. Версия 2.5.17.8. Информация об ошибках

  Код ошибки: 10047117  
  Дата публикации: 03.03.2010 19:53:03  
  Дата последнего изменения: 03.03.2010 0:00:00  
  Описание: После расчета работника с комментарием в документе "Начисление зарплаты сотрудникам организаций" с операцией "Расчет начислений" у непроведенного документа остаются движения по регистру расчетов.  
  Способ обхода: Провести документ, затем отменить проведение (если нужно).  
  Планируется исправить в релизе: 2.5.21  
  Код ошибки: 10046731  
  Дата публикации: 03.03.2010 19:45:55  
  Дата последнего изменения: 03.03.2010 0:00:00  
  Описание: При работе конфигурации "Зарплата и управление персоналом" на релизе 8.1.13 технологической платформы "1С:Предприятие 8" и ниже, в документ "Начисление зарплаты" строки нельзя ввести вручную из-за сообщения об ошибке.  
  Планируется исправить в релизе: 2.5.21  
  Код ошибки: 10046507  
  Дата публикации: 03.03.2010 19:43:38  
  Дата последнего изменения: 03.03.2010 0:00:00  
  Описание: В документе "Начисление зарплаты" в табличной части "Погашение займов" не проставляется подразделение сотрудника, если на конец расчетного периода он значится уволенным.  
  Планируется исправить в релизе: 2.5.21  
  Код ошибки: 10046502  
  Дата публикации: 03.03.2010 19:43:24  
  Дата последнего изменения: 03.03.2010 0:00:00  
  Описание: При вводе в документе "Ввод постоянного начисления или удержания организаций" "Пособие по уходу за ребёнком до 1.5 лет" выдается сообщение об ошибке.  
  Исправлено в релизе: 2.5.21  
  Код ошибки: 10042191  
  Дата публикации: 03.03.2010 19:38:45  
  Дата последнего изменения: 03.03.2010 0:00:00  
  Описание: У создаваемого в рабочей ИБ вида расчета для начисления учебного отпуска не указываются вытесняющие расчеты.  
  Способ обхода: Повторить список вытесняющих расчетов, указанных в в.р. "Оплата отпуска по календарным дням".  
  Планируется исправить в релизе: 2.5.21  
  Код ошибки: 10039671  
  Дата публикации: 03.03.2010 19:38:02  
  Дата последнего изменения: 03.03.2010 0:00:00  
  Описание: Не автозаполняются периодические общефирменные показатели в документе "Начисление зарплаты сотрудникам".  
  Исправлено в релизе: 2.5.21  
  Код ошибки: 10038125  
  Дата публикации: 26.02.2010 12:18:16  
  Дата последнего изменения: 26.02.2010 0:00:00  
  Описание: При использовании учетной политики по НДФЛ "Стандартные вычеты применяются в пределах месячного дохода налогоплательщика", в том случае, когда общий доход за некоторый месяц оказался отрицательным, в документе "Начисления зарплаты" неверно определяется сумма стандартного вычета и может ошибочно не рассчитываться НДФЛ.  
  Код ошибки: 10047680  
  Дата публикации: 19.02.2010 17:31:18  
  Дата последнего изменения: 19.02.2010 0:00:00  
  Описание: Если назначить пользователю роли "Кадровик регл. данных" и "Пользователь", настроить доступ этого пользователя к данным некоторых физлиц и организаций, то при открытии формы редактирования данных медицинского страхования может выдаваться ложное сообщение об отсутствии доступа.  
  Исправлено в релизе: 2.5.21  
  Код ошибки: 10047051  
  Дата публикации: 19.02.2010 17:29:37  
  Дата последнего изменения: 19.02.2010 0:00:00  
  Описание: При ручном заполнении документа "Начисление зарплаты сотрудникам организаций", при выборе даты не подставляются показатели для расчета.  
  Исправлено в релизе: 2.5.21  
  Код ошибки: 10046870  
  Дата публикации: 19.02.2010 17:27:00  
  Дата последнего изменения: 19.02.2010 0:00:00  
  Описание: При серверном варианте программы, под пользователем, имеющим права "Расчетчик регламентированной зарплаты", при наличии ограничения доступа на уровне записей по физическим лицам, при попытке ввода показателей для расчета, например, из документа "Регистрация разовых начислений сотрудников организаций", появляется сообщение об ошибке построения запроса (256 таблиц).  
  Планируется исправить в релизе: 2.5.21  
  Код ошибки: 10046474  
  Дата публикации: 19.02.2010 17:26:17  
  Дата последнего изменения: 19.02.2010 0:00:00  
  Описание: Доступ к справочнику «Награды» предоставлен только роли «Полные права», у остальных ролей доступ полностью отсутствует.  
  Исправлено в релизе: 2.5.21  
  Код ошибки: 10043492  
  Дата публикации: 19.02.2010 17:25:59  
  Дата последнего изменения: 19.02.2010 0:00:00  
  Описание: Если база по НДФЛ у сотрудника за налоговый период получается отрицательной, то при исчислении НДФЛ ошибочно регистрируется отрицательный вычет с кодом 108/101.  
  Код ошибки: 10045012  
  Дата публикации: 05.02.2010 15:54:35  
  Дата последнего изменения: 05.02.2010 0:00:00  
  Описание: В некоторых случаях, при корректировке начислений прошлых периодов, комментарий расчета НДФЛ формируется неверно (документ "Начисление зарплаты работникам", команда "Рассчитать с комментарием").
НДФЛ при этом считается верно.
 
  Планируется исправить в релизе: 2.5.21  
  Код ошибки: 10046280  
  Дата публикации: 29.01.2010 17:49:06  
  Дата последнего изменения: 29.01.2010 0:00:00  
  Описание: Если сотруднице, уходящей в отпуск по уходу за ребенком? удержания назначали документом "Ввод постоянного начисления или удержания", то в табличной части удержаний документа "Отпуск по уходу за ребенком" окажется пустым поле "Основание удержания", отчего документ не сможет провестись.  
  Способ обхода: Недозаполненную строку из документа "Отпуск по уходу за ребенком" следует вычеркнуть и прекратить удержание вручную.  
  Исправлено в релизе: 2.5.21  
  Код ошибки: 10040290  
  Дата публикации: 26.01.2010 15:32:44  
  Дата последнего изменения: 26.01.2010 0:00:00  
  Описание: В документ "Сдельный наряд" не подбираются сотрудники, у которых внесен вид расчета со способом расчета "Сдельный заработок" как дополнительный не "основной" заработок.  
  Исправлено в релизе: 2.5.20  
  Код ошибки: 10041674  
  Дата публикации: 26.01.2010 15:31:00  
  Дата последнего изменения: 26.01.2010 0:00:00  
  Описание: В документе "Ввод сведений о плановых начислениях" не удается для одного сотрудника указать несколько периодов одного начисления.  
  Исправлено в релизе: 2.5.20  
  Код ошибки: 10044672  
  Дата публикации: 19.01.2010 10:57:45  
  Дата последнего изменения: 19.01.2010 0:00:00  
  Описание: Документ «КадровоеПеремещениеОрганизаций» при установленном флажке «Индексация заработка с коэффициентом:» и заполненном поле «КоэффициентИндексацииЗаработка» не делает движения по регистру сведений «КоэффициентИндексацииЗаработка» если не указана дата "по".  
  Исправлено в релизе: 2.5.20  
  Код ошибки: 10020129  
  Дата публикации: 19.01.2010 10:57:13  
  Дата последнего изменения: 19.01.2010 0:00:00  
  Описание: В случае, если в документах "Регистрация разовых начислений сотрудников", "Начисление отпуска сотрудникам организаций", "Начисление по больничному листу" и им подобных выполняется одновременно расчет начислений по районному коэффициенту и разовых начислений (например, премий), результат расчета начислений по районному коэффициенту не учитывает рассчитанные в этом же документе разовые начисления.  
  Исправлено в релизе: 2.5.20  
  Код ошибки: 10044637  
  Дата публикации: 19.01.2010 10:56:28  
  Дата последнего изменения: 19.01.2010 0:00:00  
  Описание: В колонку 10 ("Другие начисления") печатной формы "Т-60" попадает сумма отпуска по беременности и родам.  
  Исправлено в релизе: 2.5.20  
  Код ошибки: 10045450  
  Дата публикации: 19.01.2010 10:49:12  
  Дата последнего изменения: 19.01.2010 0:00:00  
  Описание: В случае, если документом "Ввод сведений о плановых начислениях" изменено основное начисление сотрудника, при заполнении документа "Начисление зарплаты" неверно проставляются даты окончания для записей доплаты за ночные и вечерние часы, которые вводятся на основании графика работы или табеля учета рабочего времени.
Если основное начисление изменяется как обычно - документом "Кадровое перемещение", то ошибки не возникает.
 
  Исправлено в релизе: 2.5.20  
  Код ошибки: 10045018  
  Дата публикации: 19.01.2010 10:46:47  
  Дата последнего изменения: 19.01.2010 0:00:00  
  Описание: Не изменяется ширина колонки с номером строки табличной части документа "Отражение зарплаты в регламентированном учете".  
  Исправлено в релизе: 2.5.20  
  Код ошибки: 10041438  
  Дата публикации: 19.01.2010 10:44:30  
  Дата последнего изменения: 19.01.2010 0:00:00  
  Описание: При работе с ограниченными правами доступа в "Журнале документов по выплате заработной платы" могут возникать сообщения об ошибках доступа.  
  Исправлено в релизе: 2.5.20  
  Код ошибки: 10040566  
  Дата публикации: 30.12.2009 16:06:07  
  Дата последнего изменения: 30.12.2009 0:00:00  
  Описание: Если заданы настройки отражения в бухучете для организации и подразделений, то в документе «Расчет ЕСН» на закладке «Дополнительные начисления» суммы дополнительных начислений могут многократно увеличиваться.  
  Способ обхода: Необходимо очистить отражение в бухучете для организации.  
  Исправлено в релизе: 2.5.19  
  Код ошибки: 10044640  
  Дата публикации: 30.12.2009 15:39:07  
  Дата последнего изменения: 30.12.2009 0:00:00  
  Описание: В документе "Расходный кассовый ордер" в графе, где должно проставляться только наименование организации, проставляется и юридический адрес, и телефон организации.  
  Исправлено в релизе: 2.5.20  
  Код ошибки: 10021977  
  Дата публикации: 30.12.2009 15:31:43  
  Дата последнего изменения: 30.12.2009 0:00:00  
  Описание: В печатной форме "Расчет среднего заработка" итоговая сумма не совпадает с суммой по колонке.  
  Исправлено в релизе: 2.5.20  
  Код ошибки: 10044486  
  Дата публикации: 30.12.2009 15:31:27  
  Дата последнего изменения: 30.12.2009 0:00:00  
  Описание: В документе "Сдельный наряд" при подборе сотрудника не проставляется его тариф, если дата документа - это любой день после дня увольнения.  
  Исправлено в релизе: 2.5.20  
  Код ошибки: 10040425  
  Дата публикации: 30.12.2009 15:31:07  
  Дата последнего изменения: 30.12.2009 0:00:00  
  Описание: Для работников с суммированным учетом времени, расчет начислений процентом от расчетной базы с периодом действия менее месяца проводится с учетом отработанных дней, а не часов.  
  Исправлено в релизе: 2.5.20  
  Код ошибки: 10038996  
  Дата публикации: 30.12.2009 15:30:34  
  Дата последнего изменения: 30.12.2009 0:00:00  
  Описание: При просмотре списка сотрудников при включенном показе полей "Аванс", "Банк", "Номер лицевого счета" при достаточно большом количестве сотрудников (не помещающемся на экран) , не всегда отображаются эти поля во время прокрутки списка, хотя в соответствующих регистрах сведений данные есть.  
  Исправлено в релизе: 2.5.20  
  Код ошибки: 10044531  
  Дата публикации: 30.12.2009 15:29:45  
  Дата последнего изменения: 30.12.2009 0:00:00  
  Описание: В документе "Регистрация разовых начислений работникам организаций" при заполнении внутрисменного вида расчета с произвольной формулой, в некоторых случаях появляется сообщение об ошибке.  
  Исправлено в релизе: 2.5.20  
  Код ошибки: 10038797  
  Дата публикации: 25.12.2009 15:12:40  
  Дата последнего изменения: 25.12.2009 0:00:00  
  Описание: При создании расчетного документа через обработку "Анализ неявок", некорректно определяется процент оплаты больничного.  
  Исправлено в релизе: 2.5.20  
  Код ошибки: 10039483  
  Дата публикации: 25.12.2009 15:09:39  
  Дата последнего изменения: 25.12.2009 0:00:00  
  Описание: В графе 14 формы Т-61 при расчете налога не учитываются льготы.  
  Исправлено в релизе: 2.5.20  
  Код ошибки: 10036172  
  Дата публикации: 25.12.2009 15:02:39  
  Дата последнего изменения: 25.12.2009 0:00:00  
  Описание: При отмене ранее примененных вычетов по НДФЛ, возникает ошибка проведения документа "Начисления зарплаты работникам организаций".  
  Исправлено в релизе: 2.5.20  
  Код ошибки: 10040500  
  Дата публикации: 25.12.2009 15:01:50  
  Дата последнего изменения: 25.12.2009 0:00:00  
  Описание: В списке ведущих начислений основного заработка после начального заполнения ИБ отсутствуют "Районный коэффициент" и "Северная надбавка".  
  Исправлено в релизе: 2.5.20  
  Код ошибки: 10040288  
  Дата публикации: 23.12.2009 17:27:47  
  Дата последнего изменения: 23.12.2009 0:00:00  
  Описание: При межрасчетных выплатах, если был указан предварительный учет удержаний, заранее удержанные суммы продолжают числиться как намеченные к выплате.  
  Исправлено в релизе: 2.5.20  
  Код ошибки: 10041355  
  Дата публикации: 23.12.2009 16:23:13  
  Дата последнего изменения: 23.12.2009 0:00:00  
  Описание: В документе "Начисление зарплаты работникам организаций" предупреждение о невозможности расчета за первую половину месяца не выдается, если документ не был записан.  
  Исправлено в релизе: 2.5.20  
  Код ошибки: 10043768  
  Дата публикации: 23.12.2009 16:20:37  
  Дата последнего изменения: 23.12.2009 0:00:00  
  Описание: Неправильный список ошибочных ведомостей при обновлении ИБ:
При обновлении, если есть ведомости с отрицательными суммами, то выдается список таких "ошибочных" ведомостей.
Этот выдаваемый список к ошибочным ведомостям не имеет никакого отношения.
 
  Исправлено в релизе: 2.5.20  
  Код ошибки: 10043804  
  Дата публикации: 23.12.2009 16:19:37  
  Дата последнего изменения: 23.12.2009 0:00:00  
  Описание: В документе "Оплата сверхурочных часов" не пересчитывается в часовую тарифная ставка из произвольной формулы - всегда получается 0.  
  Код ошибки: 10041774  
  Дата публикации: 23.12.2009 16:18:36  
  Дата последнего изменения: 23.12.2009 0:00:00  
  Описание: В отчете "Налоговая карточка 1-НДФЛ" неверно отражаются доходы, облагаемые по ставке 35% у налоговых резидентов РФ.  
  Исправлено в релизе: 2.5.20  
  Код ошибки: 10043471  
  Дата публикации: 23.12.2009 16:18:14  
  Дата последнего изменения: 23.12.2009 0:00:00  
  Описание: Попытка выполнить печать из обработки "Гупповая обработка справочников и документов" приводит к ошибке.  
  Исправлено в релизе: 2.5.20  
  Код ошибки: 10043822  
  Дата публикации: 23.12.2009 16:17:00  
  Дата последнего изменения: 23.12.2009 0:00:00  
  Описание: При создании сотрудника из обработки "Набор персонала" по заявке кандидата, возникает ошибка.  
  Исправлено в релизе: 2.5.20  
  Код ошибки: 10041964  
  Дата публикации: 23.12.2009 16:15:33  
  Дата последнего изменения: 23.12.2009 0:00:00  
  Описание: При создании документа "Начисление по больничному листу" с помощью обработки "Анализ неявок" созданнный документ не отражатся самостоятельно в учете.  
  Исправлено в релизе: 2.5.20  
  Код ошибки: 10042123  
  Дата публикации: 23.12.2009 16:13:16  
  Дата последнего изменения: 23.12.2009 0:00:00  
  Описание: При расчете б/л после увольнения сотрудника не заполняются данные о подразделении в строках пособий, о чем впоследствии документ сообщает при проведении.  
  Способ обхода: Перейти в т.ч. начислений, сделать видимой колонку подразделений. заполнить значения для всех строк.  
  Исправлено в релизе: 2.5.20  
  Код ошибки: 10042901  
  Дата публикации: 23.12.2009 16:11:57  
  Дата последнего изменения: 23.12.2009 0:00:00  
  Описание: Не получается изменить параметры отпуска по уходу документом "Изменение условий оплаты отпуска по уходу", если отпуск был оформлен до перехода с ЗиК 7.7 и данные об отпуске были зарегистрированы документом переноса.  
  Исправлено в релизе: 2.5.20  
  Код ошибки: 10043851  
  Дата публикации: 23.12.2009 16:09:24  
  Дата последнего изменения: 23.12.2009 0:00:00  
  Описание: В некоторых формах списков не работает или неверно работает кнопка "История отборов".  
  Исправлено в релизе: 2.5.20  
  Код ошибки: 10040628  
  Дата публикации: 23.12.2009 16:07:29  
  Дата последнего изменения: 23.12.2009 0:00:00  
  Описание: Не проводится документ "Перерасчет НДФЛ".  
  Способ исправления: Заменить функцию СформироватьЗапросПоНДФЛКЗачету() общего модуля НДФЛПерерасчетПереопределяемый следующим фрагментом:

Функция СформироватьЗапросПоНДФЛКЗачету(ЭтотОбъект)

Запрос = Новый Запрос;

// Установим параметры запроса
Запрос.УстановитьПараметр("ДокументСсылка", ЭтотОбъект.Ссылка);
Запрос.УстановитьПараметр("Организация", ЭтотОбъект.Организация);
Запрос.УстановитьПараметр("ПериодРегистрации", ЭтотОбъект.ПериодВзаиморасчетов);
Запрос.УстановитьПараметр("Ставка13", Перечисления.НДФЛСтавкиНалогообложенияРезидента.Ставка13);
Запрос.УстановитьПараметр("Ставка09", Перечисления.НДФЛСтавкиНалогообложенияРезидента.Ставка09);
Запрос.УстановитьПараметр("Ставка35", Перечисления.НДФЛСтавкиНалогообложенияРезидента.Ставка35);

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

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

КонецФункции // СформироватьЗапросПоНДФЛКЗачету
 
  Исправлено в релизе: 2.5.20  
  Код ошибки: 10040899  
  Дата публикации: 24.11.2009 15:48:42  
  Дата последнего изменения: 24.11.2009 0:00:00  
  Описание: В справку 2-НДФЛ в поле 1.2 "Наименование организации" не попадает сокращенное название организации, как это должно быть.  
  Исправлено в релизе: 2.5.19  
  Код ошибки: 00104744  
  Дата публикации: 24.11.2009 15:48:28  
  Дата последнего изменения: 24.11.2009 0:00:00  
  Описание: При формировании справки 2-НДФЛ для выдачи сотруднику в нее не попадает исчисленный НДФЛ за месяц выдачи справки.  
  Исправлено в релизе: 2.5.19  
  Код ошибки: 10041155  
  Дата публикации: 24.11.2009 15:48:12  
  Дата последнего изменения: 24.11.2009 0:00:00  
  Описание: При заполнении документа управленческого учета "Начисление зарплаты сотрудникам" с помощью кнопки "Подбор" не проставляются плановые начисления.  
  Исправлено в релизе: 2.5.19  
  Код ошибки: 10041084  
  Дата публикации: 20.11.2009 17:10:38  
  Дата последнего изменения: 20.11.2009 0:00:00  
  Описание: При заполнении документов списком работников, в отборе по сотрудникам нельзя выбрать группу, если режим отбора сотрудников установлен "В группе из списка" или "Не в группе из списка".  
  Способ обхода: Воспользоваться вводом по подстроке.  
  Исправлено в релизе: 2.5.20  
  Код ошибки: 10040841  
  Дата публикации: 20.11.2009 17:10:11  
  Дата последнего изменения: 20.11.2009 0:00:00  
  Описание: При попытке пересчитать документ "задним числом", в обработке перерасчетов выдается сообщение об ошибке.  
  Исправлено в релизе: 2.5.19  
  Код ошибки: 10040728  
  Дата публикации: 20.11.2009 17:09:47  
  Дата последнего изменения: 20.11.2009 0:00:00  
  Описание: Документ "Зарплата к выплате организации". Ввод на основании становится недоступен при наличии хотя бы одного платежного документа, даже если он не полностью оплачивает ведомость.  
  Исправлено в релизе: 2.5.19  
  Код ошибки: 10040533  
  Дата публикации: 17.11.2009 16:59:29  
  Дата последнего изменения: 17.11.2009 0:00:00  
  Описание: При заполнении документа "Выписка из банка на перечисление зарплаты" на основании документа "Платежное поручение (исходящее)" не учитываются суммы компенсации за задержку выплаты.  
  Исправлено в релизе: 2.5.19  
  Код ошибки: 10040744  
  Дата публикации: 17.11.2009 16:59:11  
  Дата последнего изменения: 17.11.2009 0:00:00  
  Описание: При попытке автоматически заполнить или рассчитать документ "НДФЛ: возврат налога" по организации, являющейся ПБОЮЛ, выдается сообщение об ошибке.  
  Способ исправления: Заменить функцию ПолучитьНДФЛКВозвратуФизЛицо() модуля документа
НДФЛВозвратНалога следующим фрагментом:

Функция ПолучитьНДФЛКВозвратуФизЛицо(ФизЛица = Неопределено)

Запрос = Новый Запрос;

Запрос.УстановитьПараметр("ГоловнаяОрганизация", ОбщегоНазначения.ГоловнаяОрганизация(Организация));
Запрос.УстановитьПараметр("ДатаДокумента", Дата);
Запрос.УстановитьПараметр("МесяцНалоговогоПериода", КонецМесяца(МесяцНалоговогоПериода));
Запрос.УстановитьПараметр("Ставка13", Перечисления.НДФЛСтавкиНалогообложенияРезидента.Ставка13);
Запрос.УстановитьПараметр("Ставка09", Перечисления.НДФЛСтавкиНалогообложенияРезидента.Ставка09);
Запрос.УстановитьПараметр("Ставка35", Перечисления.НДФЛСтавкиНалогообложенияРезидента.Ставка35);

Запрос.УстановитьПараметр("ПоВсемФизлицам", Физлица = Неопределено);
Запрос.УстановитьПараметр("Физлица", Физлица);

ТекстЗапроса =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| СальдоПоСтавкам.ДополнительноеПоле,
| СальдоПоСтавкам.ФизЛицо КАК ФизЛицо,
| ВЫБОР
| КОГДА СальдоПоСтавкам.СальдоПоСтавке13 < 0
| ТОГДА -СальдоПоСтавкам.СальдоПоСтавке13
| ИНАЧЕ 0
| КОНЕЦ КАК СуммаВозвратаПоСтавке13,
| ВЫБОР
| КОГДА СальдоПоСтавкам.СальдоПоСтавке09 < 0
| ТОГДА -СальдоПоСтавкам.СальдоПоСтавке09
| ИНАЧЕ 0
| КОНЕЦ КАК СуммаВозвратаПоСтавке09,
| ВЫБОР
| КОГДА СальдоПоСтавкам.СальдоПоСтавке35 < 0
| ТОГДА -СальдоПоСтавкам.СальдоПоСтавке35
| ИНАЧЕ 0
| КОНЕЦ КАК СуммаВозвратаПоСтавке35
|ИЗ
| (ВЫБРАТЬ
| НДФЛРасчетыСБюджетом.НомерСтроки КАК ДополнительноеПоле,
| НДФЛРасчетыСБюджетом.ФизЛицо КАК ФизЛицо,
| СУММА(ВЫБОР
| КОГДА НДФЛРасчетыСБюджетом.СтавкаНалогообложенияРезидента = &Ставка13
| ТОГДА ВЫБОР
| КОГДА НДФЛРасчетыСБюджетом.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
| ТОГДА НДФЛРасчетыСБюджетом.Налог
| ИНАЧЕ -НДФЛРасчетыСБюджетом.Налог
| КОНЕЦ
| ИНАЧЕ 0
| КОНЕЦ) КАК СальдоПоСтавке13,
| СУММА(ВЫБОР
| КОГДА НДФЛРасчетыСБюджетом.СтавкаНалогообложенияРезидента = &Ставка09
| ТОГДА ВЫБОР
| КОГДА НДФЛРасчетыСБюджетом.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
| ТОГДА НДФЛРасчетыСБюджетом.Налог
| ИНАЧЕ -НДФЛРасчетыСБюджетом.Налог
| КОНЕЦ
| ИНАЧЕ 0
| КОНЕЦ) КАК СальдоПоСтавке09,
| СУММА(ВЫБОР
| КОГДА НДФЛРасчетыСБюджетом.СтавкаНалогообложенияРезидента = &Ставка35
| ТОГДА ВЫБОР
| КОГДА НДФЛРасчетыСБюджетом.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
| ТОГДА НДФЛРасчетыСБюджетом.Налог
| ИНАЧЕ -НДФЛРасчетыСБюджетом.Налог
| КОНЕЦ
| ИНАЧЕ 0
| КОНЕЦ) КАК СальдоПоСтавке35
| ИЗ
| РегистрНакопления.НДФЛРасчетыСБюджетом КАК НДФЛРасчетыСБюджетом
| ГДЕ
| НДФЛРасчетыСБюджетом.МесяцНалоговогоПериода <= &МесяцНалоговогоПериода
| И НДФЛРасчетыСБюджетом.Организация = &ГоловнаяОрганизация
| И НДФЛРасчетыСБюджетом.Период <= &ДатаДокумента
| И (&ПоВсемФизлицам
| ИЛИ НДФЛРасчетыСБюджетом.ФизЛицо В (&Физлица))
|
| СГРУППИРОВАТЬ ПО
| НДФЛРасчетыСБюджетом.НомерСтроки,
| НДФЛРасчетыСБюджетом.ФизЛицо) КАК СальдоПоСтавкам
|ГДЕ
| (СальдоПоСтавкам.СальдоПоСтавке13 < 0
| ИЛИ СальдоПоСтавкам.СальдоПоСтавке09 < 0
| ИЛИ СальдоПоСтавкам.СальдоПоСтавке35 < 0)
|
|УПОРЯДОЧИТЬ ПО
| ФизЛицо";

ДополнительноеПоле = НДФЛВозвратНалогаПереопределяемый.ПолучитьДополнительноеПолеОписанияСтроки();
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "СальдоПоСтавкам.ДополнительноеПоле,", ДополнительноеПоле);
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "НДФЛРасчетыСБюджетом.НомерСтроки КАК ДополнительноеПоле,", ДополнительноеПоле);
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "НДФЛРасчетыСБюджетом.НомерСтроки,", ДополнительноеПоле);

Запрос.Текст = ТекстЗапроса;

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

КонецФункции
 
  Исправлено в релизе: 2.5.19  
  Код ошибки: 10039060  
  Дата публикации: 13.11.2009 15:19:22  
  Дата последнего изменения: 13.11.2009 0:00:00  
  Описание: Проблемы с производительностью при расчете документов "Зарплата к выплате организаций".  
  Исправлено в релизе: 2.5.19  
  Код ошибки: 10040289  
  Дата публикации: 13.11.2009 15:16:52  
  Дата последнего изменения: 13.11.2009 0:00:00  
  Описание: При заполнении формы Т-61:
1. В гр.12 (заработок) заполняется сумма заработка без учета заработка за день увольнения.
2. В гр.14 и 16 неверно рассчитывается сумма НДФЛ.
3. В гр.19 (причитается к выплате) расчет сумм производится без учета гр. 18 (задолженность за работником).
 
  Исправлено в релизе: 2.5.19  
  Код ошибки: 10039089  
  Дата публикации: 13.11.2009 15:15:03  
  Дата последнего изменения: 13.11.2009 0:00:00  
  Описание: В отчет "Статистика кадров организации" попадают уволенные сотрудники.  
  Способ обхода: Использовать отбор "Причина изменения состояния не равно Уволенные".  
  Исправлено в релизе: 2.5.19  
  Код ошибки: 10039005  
  Дата публикации: 13.11.2009 15:14:34  
  Дата последнего изменения: 13.11.2009 0:00:00  
  Описание: Документ "Зарплата к выплате организаций" по плановому авансу не заполняется по обособленным подразделениям.  
  Исправлено в релизе: 2.5.19  
  Код ошибки: 10040225  
  Дата публикации: 10.11.2009 15:48:53  
  Дата последнего изменения: 19.11.2009 0:00:00  
  Описание: Ошибка при печати формы Т-60 для отпуска, начинающегося сразу же после окончания предыдущего отпуска.  
  Способ обхода: В общем модуле ПроведениеРасчетовДополнительный заменить код функции

Функция СформироватьЗапросДляЗаполненияЗаписи(ДокументСсылка, ДвиженияДокумента)

Запрос = Новый Запрос;

Запрос.УстановитьПараметр("Регистратор", ДокументСсылка);
Запрос.УстановитьПараметр("ПериодРегистрации", ДокументСсылка.ПериодРегистрации);

// запрос получает записи, для которых нужно определить базу всех начислений
// запрос составлен исходя из того, что отпуск может быть зарегистрирован в текущем или в будущем периоде
// периоды записей вычисляются по следующему алгоритму:
// - временная таблица ПериодВременнойЗаписи состоит из двух частей:
// - 1 часть - "участок" в прошлом месяце
// - добавляется только тогда, когда отпуск находится в будущем периоде (не в периоде регистрации)
// и последний отпуск закончился до конца периода регистрации
// - начинается с момента следующего за последним отпуском, если этот момент в периоде регистрации
// или с начала периода регистрации, если отпуска не было вообще или он закончился не в периоде регистрации
// - заканчивается всегда концом периода регистрации
// - 2 часть - "участок" в текущем месяце
// - добавляется всегда, кроме случаев, когда отпуск начинается с 1-го числа
// - начинается с момента следующего за последним отпуском, если этот момент в текущем месяце
// или с начала месяца, если отпуска не было вообще или он закончился не в текущем месяце
// - заканчивается всегда моментом, предшествующим началу текущего отпуска

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

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

КонецФункции
 
  Исправлено в релизе: 2.5.19  
  Код ошибки: 10039088  
  Дата публикации: 03.11.2009 16:39:43  
  Дата последнего изменения: 03.11.2009 0:00:00  
  Описание: Невозможно отменить проведение документа "Платежное поручение исходящее", даже после отмены проведения документа "Выписка", введенного на его основании. Отмена проведения выполняется при установке пометки на удаление.  
  Исправлено в релизе: 2.5.19  
  Код ошибки: 10039426  
  Дата публикации: 03.11.2009 16:39:18  
  Дата последнего изменения: 03.11.2009 0:00:00  
  Описание: Неверно вводятся в документе "Начисление зарплаты" строки по отпуску по уходу за ребенком в месяц окончания отпуска - строка "Отпуск по уходу за ребенком без оплаты" ошибочно заканчивалась концом месяца, а не датой окончания отпуска.  
  Исправлено в релизе: 2.5.18  
  Код ошибки: 10039235  
  Дата публикации: 03.11.2009 16:38:57  
  Дата последнего изменения: 03.11.2009 0:00:00  
  Описание: При проведении документа "Табель" за вторую половину месяца при наличии табеля за первую половину месяца, выдается сообщение об ошибке и документ не проводится.  
  Исправлено в релизе: 2.5.18  
  Код ошибки: 10039396  
  Дата публикации: 03.11.2009 16:37:05  
  Дата последнего изменения: 03.11.2009 0:00:00  
  Описание: При выгрузке на диск одновременно нескольких печатных листов регламентированных отчетов из формы предварительного просмотра печатных листов, если в именах листов содержатся символы "/", "\", ":", "*", "?", "<", ">", "|" или символ кавычки """, листы могут выгрузиться в аналогичные по имени файлы, перезаписывая друг друга.  
  Способ обхода: Выгружать печатные листы на диск по одному, присваивая уникальное имя каждому файлу после выгрузки.  
  Исправлено в релизе: 2.5.19  
  Код ошибки: 10039547  
  Дата публикации: 03.11.2009 16:36:16  
  Дата последнего изменения: 03.11.2009 0:00:00  
  Описание: При обновлении на 2.5.17 не создаются движения в новом регистре "Зарплата за месяц" (упр.учет) по следующим документам:
КорректировкаЗаписейРегистровНакопления
ПриходныйКассовыйОрдер
ПереносДанных
ОтражениеВУчетеБухгалтерскихРасчетовСПерсоналом
 
  Исправлено в релизе: 2.5.18  
  Код ошибки: 10039544  
  Дата публикации: 03.11.2009 16:35:55  
  Дата последнего изменения: 03.11.2009 0:00:00  
  Описание: При обновлении на 2.5.17 не создаются движения в новом регистре "Зарплата за месяц организаций" (регл.учет) по следующим документам:
КорректировкаЗаписейРегистровНакопления
ПриходныйКассовыйОрдер
ПереносДанных
Сторнирование
 
  Исправлено в релизе: 2.5.18  
  Код ошибки: 10039332  
  Дата публикации: 03.11.2009 16:35:22  
  Дата последнего изменения: 03.11.2009 0:00:00  
  Описание: Изменилось поведение в межрасчетных выплат - они стали учитывать выплаченные авансы.
Такое поведение препятствует выплате отпускных в соответствии с ТК, а также командировочных.
 
  Исправлено в релизе: 2.5.18  
  Код ошибки: 10038915  
  Дата публикации: 03.11.2009 16:33:22  
  Дата последнего изменения: 03.11.2009 0:00:00  
  Описание: Отчет "Организационная структура" недоступен для ролей "Кадровик..." и "Расчетчик...".  
  Исправлено в релизе: 2.5.19  
  Код ошибки: 10039336  
  Дата публикации: 03.11.2009 16:33:01  
  Дата последнего изменения: 03.11.2009 0:00:00  
  Описание: При попытка разрешить редактирование номера документа "Передача СЗВ-4 в ПФР" выдается сообщение об ошибке.  
  Способ исправления: Разрешить редактирование номеров этого вида документов через меню Сервис - Служебные.  
  Исправлено в релизе: 2.5.19  
  Код ошибки: 10039211  
  Дата публикации: 27.10.2009 15:25:08  
  Дата последнего изменения: 27.10.2009 0:00:00  
  Описание: При проведении документа "Выписка из банка на перечисление зарплаты" в данных о выплате не заполнялось поле периода образования задолженности.  
  Исправлено в релизе: 2.5.18  
  Код ошибки: 10038825  
  Дата публикации: 23.10.2009 14:58:24  
  Дата последнего изменения: 23.10.2009 0:00:00  
  Описание: Данные по внутренним совместителям в табель по форме Т-13 не попадают.  
  Исправлено в релизе: 2.5.18  
  Код ошибки: 10038342  
  Дата публикации: 21.10.2009 15:46:42  
  Дата последнего изменения: 21.10.2009 0:00:00  
  Описание: Сформированный отчет "Расчетные листки организаций" не разбивается по страницам.  
  Исправлено в релизе: 2.5.18  
  Код ошибки: 10038798  
  Дата публикации: 21.10.2009 15:46:18  
  Дата последнего изменения: 21.10.2009 0:00:00  
  Описание: При формировании печатных форм "Т-60" и "Т-61" в некоторых случаях выдается сообщение об ошибке.  
  Исправлено в релизе: 2.5.18  
  Код ошибки: 10038746  
  Дата публикации: 21.10.2009 15:45:32  
  Дата последнего изменения: 21.10.2009 0:00:00  
  Описание: Если в ИБ версии 2.5.16 присутствуют первичные больничные, в которых были отсторнированы другие начисления, например, оплата по тарифным ставкам или отпуска, причем такие больничные не отражались в учете самостоятельно, а другими документами в конце месяца, то после обновления ИБ до версии 2.5.17 в движениях этих документов по регистру основных начислений пропадают сторно-записи.  
  Способ исправления: Заменить процедуру УточнитьВариантОбработкиЗаписиПриОтраженииВРеглУчетеВНаборахЗаписей()
модуля обработки ОбновлениеИнформационнойБазы следующим фрагментом:

Процедура УточнитьВариантОбработкиЗаписиПриОтраженииВРеглУчетеВНаборахЗаписей()

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ОсновныеНачисления.Регистратор КАК Регистратор
|ПОМЕСТИТЬ ВТРегистраторы
|ИЗ
| РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций КАК ОсновныеНачисления
|ГДЕ
| ОсновныеНачисления.ВариантОбработкиЗаписиПриОтраженииВРеглУчете В (ЗНАЧЕНИЕ(Перечисление.ВариантыОбработкиЗаписиПриОтраженииВРеглУчете.БольничныйТравмаНаПроизводстве), ЗНАЧЕНИЕ(Перечисление.ВариантыОбработкиЗаписиПриОтраженииВРеглУчете.ОтпускПоБеременностиИРодамПоУходуЗаРебенком), ЗНАЧЕНИЕ(Перечисление.ВариантыОбработкиЗаписиПриОтраженииВРеглУчете.БольничныйПрочий), ЗНАЧЕНИЕ(Перечисление.ВариантыОбработкиЗаписиПриОтраженииВРеглУчете.БольничныйОбщееЗаболевание))
| И ВЫБОР
| КОГДА ОсновныеНачисления.Регистратор ССЫЛКА Документ.НачислениеПоБольничномуЛисту
| ТОГДА ВЫБОР
| КОГДА (НЕ ОсновныеНачисления.Регистратор.ЯвляетсяПродолжениемБолезни)
| И ОсновныеНачисления.Регистратор.ПерерассчитываемыйДокумент = ЗНАЧЕНИЕ(Документ.НачислениеПоБольничномуЛисту.ПустаяСсылка)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ
| КОГДА ОсновныеНачисления.Регистратор ССЫЛКА Документ.Сторнирование
| И ОсновныеНачисления.СторнируемыйДокумент ССЫЛКА Документ.НачислениеПоБольничномуЛисту
| ТОГДА ВЫБОР
| КОГДА (НЕ ОсновныеНачисления.СторнируемыйДокумент.ЯвляетсяПродолжениемБолезни)
| И ОсновныеНачисления.СторнируемыйДокумент.ПерерассчитываемыйДокумент = ЗНАЧЕНИЕ(Документ.НачислениеПоБольничномуЛисту.ПустаяСсылка)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ
|
|ИНДЕКСИРОВАТЬ ПО
| Регистратор
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ОсновныеНачисления.ПериодРегистрации,
| ОсновныеНачисления.Регистратор КАК Регистратор,
| ОсновныеНачисления.НомерСтроки КАК НомерСтроки,
| ОсновныеНачисления.ВидРасчета,
| ОсновныеНачисления.ПериодДействия,
| ОсновныеНачисления.ПериодДействияНачало,
| ОсновныеНачисления.ПериодДействияКонец,
| ОсновныеНачисления.БазовыйПериодНачало,
| ОсновныеНачисления.БазовыйПериодКонец,
| ОсновныеНачисления.Активность,
| ОсновныеНачисления.Сторно,
| ОсновныеНачисления.Сотрудник,
| ОсновныеНачисления.ФизЛицо,
| ОсновныеНачисления.Организация,
| ОсновныеНачисления.Результат,
| ОсновныеНачисления.ОтработаноДней,
| ОсновныеНачисления.ОтработаноЧасов,
| ОсновныеНачисления.ОтработаноДнейПоПятидневке,
| ОсновныеНачисления.НормаДней,
| ОсновныеНачисления.НормаЧасов,
| ОсновныеНачисления.НормаДнейПоПятидневке,
| ОсновныеНачисления.ОплаченоДнейЧасов,
| ОсновныеНачисления.ОтработаноЧасовПоПятидневке,
| ОсновныеНачисления.НормаЧасовПоПятидневке,
| ОсновныеНачисления.ГрафикРаботы,
| ОсновныеНачисления.ГрафикРаботыНорма,
| ОсновныеНачисления.ВидУчетаВремени,
| ОсновныеНачисления.Показатель1,
| ОсновныеНачисления.Показатель2,
| ОсновныеНачисления.Показатель3,
| ОсновныеНачисления.Показатель4,
| ОсновныеНачисления.Показатель5,
| ОсновныеНачисления.Показатель6,
| ОсновныеНачисления.ДополнительныеДанные,
| ОсновныеНачисления.ПодразделениеОрганизации,
| ОсновныеНачисления.ПериодРасчетаСреднегоЗаработкаНачало,
| ОсновныеНачисления.ПериодРасчетаСреднегоЗаработкаОкончание,
| ОсновныеНачисления.ДатаНачалаСобытия,
| ОсновныеНачисления.ОбособленноеПодразделение,
| ОсновныеНачисления.Авторасчет,
| ВЫБОР
| КОГДА ОсновныеНачисления.ВариантОбработкиЗаписиПриОтраженииВРеглУчете = ЗНАЧЕНИЕ(Перечисление.ВариантыОбработкиЗаписиПриОтраженииВРеглУчете.БольничныйТравмаНаПроизводстве)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ВариантыОбработкиЗаписиПриОтраженииВРеглУчете.БольничныйТравмаНаПроизводствеНовыйСтраховойСлучай)
| КОГДА ОсновныеНачисления.ВариантОбработкиЗаписиПриОтраженииВРеглУчете = ЗНАЧЕНИЕ(Перечисление.ВариантыОбработкиЗаписиПриОтраженииВРеглУчете.ОтпускПоБеременностиИРодамПоУходуЗаРебенком)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ВариантыОбработкиЗаписиПриОтраженииВРеглУчете.ОтпускПоБеременностиИРодамПоУходуЗаРебенкомНовыйСтраховойСлучай)
| КОГДА ОсновныеНачисления.ВариантОбработкиЗаписиПриОтраженииВРеглУчете = ЗНАЧЕНИЕ(Перечисление.ВариантыОбработкиЗаписиПриОтраженииВРеглУчете.БольничныйПрочий)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ВариантыОбработкиЗаписиПриОтраженииВРеглУчете.БольничныйПрочийНовыйСтраховойСлучай)
| КОГДА ОсновныеНачисления.ВариантОбработкиЗаписиПриОтраженииВРеглУчете = ЗНАЧЕНИЕ(Перечисление.ВариантыОбработкиЗаписиПриОтраженииВРеглУчете.БольничныйОбщееЗаболевание)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ВариантыОбработкиЗаписиПриОтраженииВРеглУчете.БольничныйОбщееЗаболеваниеНовыйСтраховойСлучай)
| ИНАЧЕ ОсновныеНачисления.ВариантОбработкиЗаписиПриОтраженииВРеглУчете
| КОНЕЦ КАК ВариантОбработкиЗаписиПриОтраженииВРеглУчете,
| ОсновныеНачисления.ВариантАлгоритмаРасчета,
| ОсновныеНачисления.СторнируемыйДокумент,
| ОсновныеНачисления.РасчетнаяБазаЗаЕдиницуНормыВремени
|ИЗ
| РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций КАК ОсновныеНачисления
|ГДЕ
| ОсновныеНачисления.Регистратор В
| (ВЫБРАТЬ
| Регистраторы.Регистратор
| ИЗ
| ВТРегистраторы КАК Регистраторы)
|
|УПОРЯДОЧИТЬ ПО
| Регистратор,
| НомерСтроки";

ПереписатьНаборыЗаписейРегистраРасчетаПоРегистраторам(РегистрыРасчета.ОсновныеНачисленияРаботниковОрганизаций.СоздатьНаборЗаписей(), Запрос, "Обработка документов Начисление по б/л, часть II");

КонецПроцедуры
 
  Способ обхода: Перепровести такие б/л.  
  Исправлено в релизе: 2.5.18  
  Код ошибки: 10038119  
  Дата публикации: 21.10.2009 15:44:52  
  Дата последнего изменения: 21.10.2009 0:00:00  
  Описание: В отчете "Расчетные листки организации" не выводятся данные по уволенным сотрудникам.  
  Исправлено в релизе: 2.5.18  
  Код ошибки: 10038593  
  Дата публикации: 21.10.2009 15:44:36  
  Дата последнего изменения: 21.10.2009 0:00:00  
  Описание: Ошибка при создании начального образа плана обмена по организации возникает в случае наличия контрагента с договорами по нескольким организациям.  
  Исправлено в релизе: 2.5.18  
  Код ошибки: 10034595  
  Дата публикации: 21.10.2009 15:44:02  
  Дата последнего изменения: 21.10.2009 0:00:00  
  Описание: В документе "Сдельный наряд" в табличной части документа на закладке "Выполненные работы" подразделение организации подставляется не по организации-владельцу из шапки документа, а из установленной организации по умолчанию.  
  Исправлено в релизе: 2.5.18  
  Код ошибки: 10038685  
  Дата публикации: 21.10.2009 15:43:40  
  Дата последнего изменения: 21.10.2009 0:00:00  
  Описание: При использовании РИБ по организации, при записи договора нового контрагента выдается сообщение об ошибке.  
  Исправлено в релизе: 2.5.18  
  Код ошибки: 10038637  
  Дата публикации: 21.10.2009 15:43:24  
  Дата последнего изменения: 21.10.2009 0:00:00  
  Описание: При использовании в функции ОценитьПо() шкалы с дробными показателями в значениях или в размерах для числовых шкал, неверно строилась формула.  
  Исправлено в релизе: 2.5.18  
  Код ошибки: 10038697  
  Дата публикации: 21.10.2009 15:42:19  
  Дата последнего изменения: 21.10.2009 0:00:00  
  Описание: При заполнении документа "Табель учета рабочего времени" по подразделению, в него не попадают сотрудники подразделений, подчиненных указанному в документе.  
  Способ исправления: Заменить функцию Автозаполнение() модуля документа ТабельУчетаРабочегоВремениОрганизации
следующим фрагментом:

Функция Автозаполнение(Запрос = Неопределено, Сотрудник = Неопределено, ТекущаяСтрокаТабличнойЧасти = Неопределено) Экспорт

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

Если Запрос = Неопределено Тогда

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

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

Иначе

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

КонецЕсли;

ЗапросАвтоЗаполнения.УстановитьПараметр("ГоловнаяОрганизация", ОбщегоНазначения.ГоловнаяОрганизация(Организация));
ЗапросАвтоЗаполнения.УстановитьПараметр("ОбособленноеПодразделение", Организация);
ЗапросАвтоЗаполнения.УстановитьПараметр("Подразделение", ПодразделениеОрганизации);
ЗапросАвтоЗаполнения.УстановитьПараметр("НачалоМесяца", ДатаНачалаПериода);
ЗапросАвтоЗаполнения.УстановитьПараметр("КонецМесяца", ДатаОкончанияПериода);
ЗапросАвтоЗаполнения.УстановитьПараметр("Месяц", ПериодРегистрации);

ЗапросАвтоЗаполнения.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
ЗапросАвтоЗаполнения.Выполнить();

//ЗапросАвтоЗаполнения.УстановитьПараметр("ВидУчетаВремениПоДням", ВидУчетаВремениПоДням);
//ЗапросАвтоЗаполнения.УстановитьПараметр("ВидУчетаВремениПоЧасам", ВидУчетаВремениПоЧасам);
//ЗапросАвтоЗаполнения.УстановитьПараметр("ВидУчетаВремениПоВечернимЧасам", Перечисления.ВидыУчетаВремени.ПоВечернимЧасам);
//ЗапросАвтоЗаполнения.УстановитьПараметр("ВидУчетаВремениПоНочнымЧасам", Перечисления.ВидыУчетаВремени.ПоНочнымЧасам);

//ЗапросАвтоЗаполнения.УстановитьПараметр("КлассификаторЯ", Справочники.КлассификаторИспользованияРабочегоВремени.Работа);
//ЗапросАвтоЗаполнения.УстановитьПараметр("КлассификаторВЧ", КлассификаторВечернееВремя);
//ЗапросАвтоЗаполнения.УстановитьПараметр("КлассификаторНЧ", КлассификаторНочноеВремя);
//ЗапросАвтоЗаполнения.УстановитьПараметр("Выходной", Справочники.КлассификаторИспользованияРабочегоВремени.ВыходныеДни);

ЗапросАвтоЗаполнения.УстановитьПараметр("ДокументСсылка", Ссылка);

//ЗапросАвтоЗаполнения.УстановитьПараметр("СверхНормы", Перечисления.ВидыВремени.ОтработанноеСверхНормы);
//ЗапросАвтоЗаполнения.УстановитьПараметр("ПустойКлассификатор", Справочники.КлассификаторИспользованияРабочегоВремени.ПустаяСсылка());

//ЗапросАвтоЗаполнения.УстановитьПараметр("ПоДням", Перечисления.ВидыУчетаВремени.ПоДням);
//ЗапросАвтоЗаполнения.УстановитьПараметр("ПоЧасам", Перечисления.ВидыУчетаВремени.ПоЧасам);
//ЗапросАвтоЗаполнения.УстановитьПараметр("ПоВечерним", Перечисления.ВидыУчетаВремени.ПоВечернимЧасам);
//ЗапросАвтоЗаполнения.УстановитьПараметр("ПоНочным", Перечисления.ВидыУчетаВремени.ПоНочнымЧасам);

ВидыВремениУчитываемыеВВыходные = Новый Массив(2);
ВидыВремениУчитываемыеВВыходные[0] = Перечисления.ВидыВремени.ОтработанноеСверхНормы;
ВидыВремениУчитываемыеВВыходные[1] = Перечисления.ВидыВремени.ЦелодневноеНеотработанное;
ЗапросАвтоЗаполнения.УстановитьПараметр("ВидыВремениУчитываемыеВВыходные", ВидыВремениУчитываемыеВВыходные);
//ЗапросАвтоЗаполнения.УстановитьПараметр("ПустойГрафик", Справочники.ГрафикиРаботы.ПустаяСсылка());

ГодПериода = Формат(Год(ПериодРегистрации), "ЧГ=4");
МесяцПериода = Месяц(ПериодРегистрации);
ТекстЗапроса = "ВЫБРАТЬ
| ДатаТабеля
|
|ПОМЕСТИТЬ ВТДатыТабеля
| ИЗ (
| ВЫБРАТЬ
| ДАТАВРЕМЯ(" + ГодПериода + ", " + МесяцПериода + " , " + День(ДатаНачалаПериода) + ") КАК ДатаТабеля
| ";
Для НомерДня = День(ДатаНачалаПериода) + 1 По День(ДатаОкончанияПериода) Цикл
ТекстЗапроса = ТекстЗапроса +
"ОБЪЕДИНИТЬ ВСЕ
|ВЫБРАТЬ
| ДАТАВРЕМЯ(" + ГодПериода + ", " + МесяцПериода + " ," + НомерДня + ")
| ";
КонецЦикла;
ТекстЗапроса = ТекстЗапроса + ") КАК ДатыТабеля";
ЗапросАвтоЗаполнения.Текст = ТекстЗапроса;
ЗапросАвтоЗаполнения.Выполнить();

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

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

ЗапросАвтоЗаполнения.Выполнить();
КонецЕсли;


Если СпособВводаДанных = Перечисления.СпособыВводаДанныхОВремени.ВЦеломЗаПериод Тогда


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

ЗапросАвтоЗаполнения.Выполнить();

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


Иначе
// Заполнение с разбивкой по дням.

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

КонецЕсли;

ЗапросАвтоЗаполнения.Текст = ЗапросАвтоЗаполненияТекст;
РезультатЗапроса = ЗапросАвтоЗаполнения.Выполнить();

Если Сотрудник = Неопределено Тогда
ОтработанноеВремя.Очистить();
ОтработанноеВремяВЦеломЗаПериод.Очистить();
КонецЕсли;

Выборка = РезультатЗапроса.Выбрать();
СтрокаТекущегоУровняСообщений = "";
Если Выборка.Количество() > 0 Тогда

Если СпособВводаДанных = Перечисления.СпособыВводаДанныхОВремени.ПоДням Тогда
// по дням.

ВведенныеТабеляПоДнямПоСотруднику = Новый Соответствие;
Пока Выборка.СледующийПоЗначениюПоля("Сотрудник") Цикл

ВведенныеТабеляПоДнямПоСотруднику.Очистить();
Если ТекущаяСтрокаТабличнойЧасти = Неопределено Тогда
СтрокаРасшифровкиПоДням = ОтработанноеВремя.Добавить();
Иначе
СтрокаРасшифровкиПоДням = ТекущаяСтрокаТабличнойЧасти;
Для ИндексДня = 1 По 31 Цикл
ТекущаяСтрокаТабличнойЧасти["ПервыйВидВремени" + Строка(ИндексДня)] = КлассификаторПустаяСсылка;
ТекущаяСтрокаТабличнойЧасти["ВторойВидВремени" + Строка(ИндексДня)] = КлассификаторПустаяСсылка;
ТекущаяСтрокаТабличнойЧасти["ТретийВидВремени" + Строка(ИндексДня)] = КлассификаторПустаяСсылка;
ТекущаяСтрокаТабличнойЧасти["ЧетвертыйВидВремени" + Строка(ИндексДня)] = КлассификаторПустаяСсылка;
ТекущаяСтрокаТабличнойЧасти["ПервыйЧасов" + Строка(ИндексДня)] = 0;
ТекущаяСтрокаТабличнойЧасти["ВторойЧасов" + Строка(ИндексДня)] = 0;
ТекущаяСтрокаТабличнойЧасти["ТретийЧасов" + Строка(ИндексДня)] = 0;
ТекущаяСтрокаТабличнойЧасти["ЧетвертыйЧасов" + Строка(ИндексДня)] = 0;
КонецЦикла;
КонецЕсли;
СтрокаРасшифровкиПоДням.Сотрудник = Выборка.Сотрудник;
Если Выборка.День <> NULL Тогда

Пока Выборка.СледующийПоЗначениюПоля("День") Цикл

ИндексЯчейкиВТаблице = Выборка.День;
ИндексМассиваПриставок = 0;
Пока Выборка.Следующий() Цикл

Если ИндексМассиваПриставок > 3 Тогда
// На данный момент мы можем вводить только 4 вида времени в один день
Прервать;
КонецЕсли;
НазваниеЯчейкиВБазе = МассивПриставок[ИндексМассиваПриставок]+"ВидВремени"+Строка(ИндексЯчейкиВТаблице);
СтрокаРасшифровкиПоДням[НазваниеЯчейкиВБазе] = Выборка.БукваВидаВремени;
НазваниеЯчейкиВБазе = МассивПриставок[ИндексМассиваПриставок]+"Часов"+Строка(ИндексЯчейкиВТаблице);
СтрокаРасшифровкиПоДням[НазваниеЯчейкиВБазе] = Выборка.ОсновноеЗначение;

ИндексМассиваПриставок = ИндексМассиваПриставок + 1;



КонецЦикла;
КонецЦикла;
КонецЕсли;
КонецЦикла;
Иначе
// в целом за период
СписокСотрудниковСНехваткойВидовВремени = Новый Соответствие;
СписокДобавленныхКолонок = Новый Соответствие;
Пока Выборка.СледующийПоЗначениюПоля("Сотрудник") Цикл
КоличествоЗаписей = 1;
Если ТекущаяСтрокаТабличнойЧасти = Неопределено Тогда
СтрокаТабличнойЧасти = ОтработанноеВремяВЦеломЗаПериод.Добавить();

Иначе
СтрокаТабличнойЧасти = ТекущаяСтрокаТабличнойЧасти;
КонецЕсли;
// Очистка старых значений
Для ИндексТекущейЗаписи = КоличествоЗаписей По 6 Цикл
СтрокаТабличнойЧасти["ВидВремени"+Строка(ИндексТекущейЗаписи)] = Справочники.КлассификаторИспользованияРабочегоВремени.ПустаяСсылка();
СтрокаТабличнойЧасти["Дней" + Строка(ИндексТекущейЗаписи)] = 0;
СтрокаТабличнойЧасти["Часов" + Строка(ИндексТекущейЗаписи)] = 0;
КонецЦикла;
СтрокаТабличнойЧасти.Сотрудник = Выборка.Сотрудник;
Пока Выборка.Следующий() Цикл
Если Выборка.ВидВремени = NULL Тогда

Если КоличествоЗаписей < 7 Тогда

ЭлементСпискаКолонок = КолонкиСводногоТабеля.Найти(КлассификаторЯвка, "ВидВремени");
Если ЭлементСпискаКолонок = Неопределено Тогда
Если КолонкиСводногоТабеля.Количество() > 5 Тогда
СписокСотрудниковСНехваткойВидовВремени.Вставить(Выборка.Сотрудник,
"" + СписокСотрудниковСНехваткойВидовВремени.Получить(Выборка.Сотрудник) + ", " + КлассификаторЯвка);
ИндексКолонки = -1;
Иначе
КолонкиСводногоТабеля.Добавить().ВидВремени = КлассификаторЯвка;
СписокДобавленныхКолонок.Вставить(КлассификаторЯвка, "");
ИндексКолонки = КолонкиСводногоТабеля.Количество();
КонецЕсли;
Иначе
ИндексКолонки = КолонкиСводногоТабеля.Индекс(ЭлементСпискаКолонок) + 1;
КонецЕсли;

Если ИндексКолонки > -1 Тогда
СтрокаТабличнойЧасти["ВидВремени" + Строка(ИндексКолонки)] = КлассификаторЯвка;
СтрокаТабличнойЧасти["Дней" + Строка(ИндексКолонки)] = Выборка.Дней;
СтрокаТабличнойЧасти["Часов" + Строка(ИндексКолонки)] = Выборка.Часов;
КоличествоЗаписей = КоличествоЗаписей + 1;
КонецЕсли;
КонецЕсли;

Если КоличествоЗаписей < 7 И Выборка.ЧасовВечерних > 0 Тогда

ЭлементСпискаКолонок = КолонкиСводногоТабеля.Найти(КлассификаторВечерниеЧасы, "ВидВремени");
Если ЭлементСпискаКолонок = Неопределено Тогда
Если КолонкиСводногоТабеля.Количество() > 5 Тогда
СписокСотрудниковСНехваткойВидовВремени.Вставить(Выборка.Сотрудник,
"" + СписокСотрудниковСНехваткойВидовВремени.Получить(Выборка.Сотрудник) + ", " + КлассификаторВечерниеЧасы);
ИндексКолонки = -1;
Иначе
КолонкиСводногоТабеля.Добавить().ВидВремени = КлассификаторВечерниеЧасы;
СписокДобавленныхКолонок.Вставить(КлассификаторВечерниеЧасы, "");
ИндексКолонки = КолонкиСводногоТабеля.Количество();
КонецЕсли;
Иначе
ИндексКолонки = КолонкиСводногоТабеля.Индекс(ЭлементСпискаКолонок) + 1;
КонецЕсли;

Если ИндексКолонки > -1 Тогда
СтрокаТабличнойЧасти["ВидВремени"+Строка(ИндексКолонки)] = КлассификаторВечерниеЧасы;
СтрокаТабличнойЧасти["Часов" + Строка(ИндексКолонки)] = Выборка.ЧасовВечерних;
КоличествоЗаписей = КоличествоЗаписей + 1;
КонецЕсли;
КонецЕсли;

Если КоличествоЗаписей < 7 И Выборка.ЧасовНочных > 0 Тогда

ЭлементСпискаКолонок = КолонкиСводногоТабеля.Найти(КлассификаторНочныеЧасы, "ВидВремени");
Если ЭлементСпискаКолонок = Неопределено Тогда
Если КолонкиСводногоТабеля.Количество() > 5 Тогда
СписокСотрудниковСНехваткойВидовВремени.Вставить(Выборка.Сотрудник,
"" + СписокСотрудниковСНехваткойВидовВремени.Получить(Выборка.Сотрудник) + ", " + КлассификаторНочныеЧасы);
ИндексКолонки = -1;
Иначе
КолонкиСводногоТабеля.Добавить().ВидВремени = КлассификаторНочныеЧасы;
СписокДобавленныхКолонок.Вставить(КлассификаторНочныеЧасы, "");
ИндексКолонки = КолонкиСводногоТабеля.Количество();
КонецЕсли;
Иначе
ИндексКолонки = КолонкиСводногоТабеля.Индекс(ЭлементСпискаКолонок) + 1;
КонецЕсли;

Если ИндексКолонки > -1 Тогда
СтрокаТабличнойЧасти["ВидВремени"+Строка(ИндексКолонки)] = КлассификаторНочныеЧасы;
СтрокаТабличнойЧасти["Часов" + Строка(ИндексКолонки)] = Выборка.ЧасовНочных;
КоличествоЗаписей = КоличествоЗаписей + 1;
КонецЕсли;
КонецЕсли;
Иначе
Если КоличествоЗаписей < 7 Тогда

ЭлементСпискаКолонок = КолонкиСводногоТабеля.Найти(Выборка.ВидВремени, "ВидВремени");
Если ЭлементСпискаКолонок = Неопределено Тогда
Если КолонкиСводногоТабеля.Количество() > 5 Тогда
СписокСотрудниковСНехваткойВидовВремени.Вставить(Выборка.Сотрудник,
"" + СписокСотрудниковСНехваткойВидовВремени.Получить(Выборка.Сотрудник) + ", " + Выборка.ВидВремени);
ИндексКолонки = -1;
Иначе
КолонкиСводногоТабеля.Добавить().ВидВремени = Выборка.ВидВремени;
СписокДобавленныхКолонок.Вставить(Выборка.ВидВремени, "");
ИндексКолонки = КолонкиСводногоТабеля.Количество();
КонецЕсли;
Иначе
ИндексКолонки = КолонкиСводногоТабеля.Индекс(ЭлементСпискаКолонок) + 1;
КонецЕсли;

Если ИндексКолонки > -1 Тогда
СтрокаТабличнойЧасти["ВидВремени"+Строка(ИндексКолонки)] = Выборка.ВидВремени;
СтрокаТабличнойЧасти["Дней" + Строка(ИндексКолонки)] = Выборка.Дней;
СтрокаТабличнойЧасти["Часов" + Строка(ИндексКолонки)] = Выборка.Часов;
КоличествоЗаписей = КоличествоЗаписей + 1;
КонецЕсли;
КонецЕсли;


Если КоличествоЗаписей < 7 И Выборка.ЧасовВечерних > 0 Тогда

ЭлементСпискаКолонок = КолонкиСводногоТабеля.Найти(КлассификаторВечерниеЧасы, "ВидВремени");
Если ЭлементСпискаКолонок = Неопределено Тогда
Если КолонкиСводногоТабеля.Количество() > 5 Тогда
СписокСотрудниковСНехваткойВидовВремени.Вставить(Выборка.Сотрудник,
"" + СписокСотрудниковСНехваткойВидовВремени.Получить(Выборка.Сотрудник) + ", " + КлассификаторВечерниеЧасы);
ИндексКолонки = -1;
Иначе
КолонкиСводногоТабеля.Добавить().ВидВремени = КлассификаторВечерниеЧасы;
СписокДобавленныхКолонок.Вставить(КлассификаторВечерниеЧасы, "");
ИндексКолонки = КолонкиСводногоТабеля.Количество();
КонецЕсли;
Иначе
ИндексКолонки = КолонкиСводногоТабеля.Индекс(ЭлементСпискаКолонок) + 1;
КонецЕсли;

Если ИндексКолонки > -1 Тогда
СтрокаТабличнойЧасти["ВидВремени"+Строка(ИндексКолонки)] = КлассификаторВечерниеЧасы;
СтрокаТабличнойЧасти["Часов" + Строка(ИндексКолонки)] = СтрокаТабличнойЧасти["Часов" + Строка(ИндексКолонки)] + Выборка.ЧасовВечерних;
КоличествоЗаписей = КоличествоЗаписей + 1;
КонецЕсли;
КонецЕсли;

Если КоличествоЗаписей < 7 И Выборка.ЧасовНочных > 0 Тогда

ЭлементСпискаКолонок = КолонкиСводногоТабеля.Найти(КлассификаторНочныеЧасы, "ВидВремени");
Если ЭлементСпискаКолонок = Неопределено Тогда
Если КолонкиСводногоТабеля.Количество() > 5 Тогда
СписокСотрудниковСНехваткойВидовВремени.Вставить(Выборка.Сотрудник,
"" + СписокСотрудниковСНехваткойВидовВремени.Получить(Выборка.Сотрудник) + ", " + КлассификаторНочныеЧасы);
ИндексКолонки = -1;
Иначе
КолонкиСводногоТабеля.Добавить().ВидВремени = КлассификаторНочныеЧасы;
СписокДобавленныхКолонок.Вставить(КлассификаторНочныеЧасы, "");
ИндексКолонки = КолонкиСводногоТабеля.Количество();
КонецЕсли;
Иначе
ИндексКолонки = КолонкиСводногоТабеля.Индекс(ЭлементСпискаКолонок) + 1;
КонецЕсли;

Если ИндексКолонки > -1 Тогда
СтрокаТабличнойЧасти["ВидВремени"+Строка(ИндексКолонки)] = КлассификаторНочныеЧасы;
СтрокаТабличнойЧасти["Часов" + Строка(ИндексКолонки)] = СтрокаТабличнойЧасти["Часов" + Строка(ИндексКолонки)] + Выборка.ЧасовНочных;
КоличествоЗаписей = КоличествоЗаписей + 1;
КонецЕсли;
КонецЕсли;


КонецЕсли;
КонецЦикла;
КонецЦикла;


КоличествоДобавленныхКолонок = СписокДобавленныхКолонок.Количество();
Если КоличествоДобавленныхКолонок > 0 Тогда

УпорядочитьКолонкиСводногоТабеля();

#Если Клиент Тогда
СтрокаСообщения = "В табличную часть " +
?(КоличествоДобавленныхКолонок = 1,"добавлена колонка с видом времени: ", "добавлены колонки с видами времени: ");

СтрокаТекущегоУровняСообщений = ОбработкаКомментариев.ДобавитьСообщение(СтрокаСообщения, Перечисления.ВидыСообщений.ВажнаяИнформация, ,СтрокаВерхнегоУровняСообщений );

Для Каждого ЭлементСписка Из СписокДобавленныхКолонок Цикл
ОбработкаКомментариев.ДобавитьСообщение(ЭлементСписка.Ключ, Перечисления.ВидыСообщений.ПустаяСсылка(), , СтрокаТекущегоУровняСообщений);
КонецЦикла;

#КонецЕсли

КонецЕсли;

КоличествоСотрудниковВСпискеНехваткиВидовВремени = СписокСотрудниковСНехваткойВидовВремени.Количество();
Если КоличествоСотрудниковВСпискеНехваткиВидовВремени > 0 Тогда

#Если Клиент Тогда
СтрокаТекущегоУровняСообщений = ОбработкаКомментариев.ДобавитьСообщение("Указанным сотрудникам выведены не все виды времени:", Перечисления.ВидыСообщений.ВажнаяИнформация,,СтрокаВерхнегоУровняСообщений );
#Иначе
#КонецЕсли

КоличествоВыведенныхСотрудников = 0;
Для Каждого ЭлементСписка Из СписокСотрудниковСНехваткойВидовВремени Цикл
СтрокаСотрудника = "" + ЭлементСписка.Ключ + " (" + Сред(ЭлементСписка.Значение, 3) + ")";
#Если Клиент Тогда
ОбработкаКомментариев.ДобавитьСообщение(СтрокаСотрудника, Перечисления.ВидыСообщений.ПустаяСсылка(),, СтрокаТекущегоУровняСообщений);
#Иначе
#КонецЕсли
КоличествоВыведенныхСотрудников = КоличествоВыведенныхСотрудников + 1;
Если КоличествоВыведенныхСотрудников > 4 И КоличествоСотрудниковВСпискеНехваткиВидовВремени > 5 Тогда
#Если Клиент Тогда
ОбработкаКомментариев.ДобавитьСообщение(" и другие.", Перечисления.ВидыСообщений.ПустаяСсылка(),, СтрокаТекущегоУровняСообщений);
#Иначе
#КонецЕсли
Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецЕсли;

Выборка = ТабельУчетаРабочегоВремениОрганизацииПереопределяемый.СформироватьЗапросПоНезаполненнымСотрудникам(ЗапросАвтоЗаполнения).Выбрать();
Если Выборка.Количество() > 0 Тогда

КоличествоВыведенныхДокументов = 0;
#Если Клиент Тогда
СтрокаТекущегоУровняСообщений = ОбработкаКомментариев.ДобавитьСообщение("На следующих сотрудников уже введены документы учета отработанного времени в этом периоде:", Перечисления.ВидыСообщений.ВажнаяИнформация, ,СтрокаВерхнегоУровняСообщений );
#Иначе
#КонецЕсли
Пока Выборка.СледующийПоЗначениюПоля("Сотрудник") Цикл

Если КоличествоВыведенныхДокументов >= 4 Тогда
#Если Клиент Тогда
ОбработкаКомментариев.ДобавитьСообщение("и другие.", Перечисления.ВидыСообщений.ПустаяСсылка(),, СтрокаТекущегоУровняСообщений);
Прервать;
#Иначе
#КонецЕсли
КонецЕсли;

#Если Клиент Тогда
СтрокаУровняСотрудника = ОбработкаКомментариев.ДобавитьСообщение(Выборка.ПредставлениеСотрудника, Перечисления.ВидыСообщений.Информация,, СтрокаТекущегоУровняСообщений);
#Иначе
#КонецЕсли

Пока Выборка.Следующий() Цикл
Если КоличествоВыведенныхДокументов >= 4 Тогда
#Если Клиент Тогда
ОбработкаКомментариев.ДобавитьСообщение("и другие.", Перечисления.ВидыСообщений.ПустаяСсылка(),, СтрокаТекущегоУровняСообщений);
#Иначе
#КонецЕсли
Прервать;
КонецЕсли;
#Если Клиент Тогда
РасшифровкаКомментария = Новый Массив;

РасшифровкаКомментария.Добавить(Новый Структура("Представление, Расшифровка", Выборка.ПредставлениеДокумента, Выборка.ДокументОснование));
ОбработкаКомментариев.ДобавитьСообщение("", Перечисления.ВидыСообщений.ПустаяСсылка(), РасшифровкаКомментария, СтрокаУровняСотрудника);
#Иначе
#КонецЕсли
КоличествоВыведенныхДокументов = КоличествоВыведенныхДокументов + 1;

КонецЦикла;

КонецЦикла;

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

Если Выборка.Количество() > 0 Тогда
#Если Клиент Тогда
СтрокаТекущегоУровняСообщений = ОбработкаКомментариев.ДобавитьСообщение("Следующим сотрудникам введен сводный индивидуальный график и подневный табель по ним не может быть заполнен:", Перечисления.ВидыСообщений.ВажнаяИнформация, ,СтрокаВерхнегоУровняСообщений );
#Иначе
#КонецЕсли
КоличествоВыведенныхДокументов = 0;
Пока Выборка.СледующийПоЗначениюПоля("Регистратор") Цикл

Если КоличествоВыведенныхДокументов >= 4 Тогда
#Если Клиент Тогда
ОбработкаКомментариев.ДобавитьСообщение(" и другие.", Перечисления.ВидыСообщений.ПустаяСсылка(),, СтрокаТекущегоУровняСообщений);
#Иначе
#КонецЕсли
Прервать;
КонецЕсли;
#Если Клиент Тогда
РасшифровкаКомментария = Новый Массив;
РасшифровкаКомментария.Добавить(Новый Структура("Представление, Расшифровка", Выборка.ПредставлениеДокумента, Выборка.ВведенныйДокумент));
СтрокаУровняДокумента = ОбработкаКомментариев.ДобавитьСообщение("", Перечисления.ВидыСообщений.ПустаяСсылка(), РасшифровкаКомментария, СтрокаТекущегоУровняСообщений);
#Иначе
#КонецЕсли
Пока Выборка.Следующий() Цикл

Если КоличествоВыведенныхДокументов >= 4 Тогда
#Если Клиент Тогда
ОбработкаКомментариев.ДобавитьСообщение(" и другие.", Перечисления.ВидыСообщений.ПустаяСсылка(),, СтрокаУровняДокумента);
#Иначе
#КонецЕсли
Прервать;
КонецЕсли;
#Если Клиент Тогда
ОбработкаКомментариев.ДобавитьСообщение(Выборка.ПредставлениеСотрудника, Перечисления.ВидыСообщений.Информация,, СтрокаУровняДокумента);
#Иначе
#КонецЕсли
КонецЦикла;

КонецЦикла;

КонецЕсли;
КонецЕсли;
#Если Клиент Тогда
Если СтрокаТекущегоУровняСообщений <> "" Тогда
ОбработкаКомментариев.ПоказатьСообщения();
КонецЕсли;
#Иначе
#КонецЕсли
КонецФункции // Автозаполнение()
 
  Исправлено в релизе: 2.5.18  
  Код ошибки: 10038577  
  Дата публикации: 21.10.2009 15:41:32  
  Дата последнего изменения: 21.10.2009 0:00:00  
  Описание: При проверке программой CheckXML файла реестра ДСВ-3 выдается сообщение об ошибке.  
  Исправлено в релизе: 2.5.18  
  Код ошибки: 10038101  
  Дата публикации: 21.10.2009 15:41:08  
  Дата последнего изменения: 21.10.2009 0:00:00  
  Описание: Не выполняется контроль наличия свободных ставок в штатном расписании при проведении документов "Прием на работу в организацию" и "Кадровое перемещение организаций".  
  Исправлено в релизе: 2.5.18  
  Код ошибки: 10032396  
  Дата публикации: 20.10.2009 17:31:07  
  Дата последнего изменения: 20.10.2009 0:00:00  
  Описание: При попытке внести изменения в форме "Настройки пользователя" на закладке "Адреса и телефоны" (при смене "Типа" информации) выдается сообщение об ошибке.  
  Исправлено в релизе: 2.5.18  
  Код ошибки: 10032754  
  Дата публикации: 20.10.2009 17:30:03  
  Дата последнего изменения: 20.10.2009 0:00:00  
  Описание: В случае отсутствия файла v8cscadr.lst на диске, обновление конфигурации через интернет завершается с ошибкой.
В журнале регистрации появлялась запись:
"Ошибка при распаковке дистрибутива обновления: {Обработка.ОбновлениеКонфигурации(380)}: Ошибка при вызове конструктора (ЧтениеТекста): Файл не обнаружен 'C:\Documents and Settings\olga.antipova\Application Data\1C\1Cv81\v8cscadr.lst'
 
  Способ исправления: В модуле обработки ОбновлениеКонфигурации нужно

Текст = Новый ЧтениеТекста(ИмяФайла, КодировкаТекста.ANSI);
Стр = СокрЛП(Текст.ПрочитатьСтроку());
Возврат ДобавитьКонечныйРазделительПути(СтрЗаменить(Стр, "file://", ""));

изменить на

Если ФайлСуществует(ИмяФайла) Тогда
Текст = Новый ЧтениеТекста(ИмяФайла, КодировкаТекста.ANSI);
Стр = СокрЛП(Текст.ПрочитатьСтроку());
Возврат ДобавитьКонечныйРазделительПути(СтрЗаменить(Стр, "file://", ""));
Иначе
Возврат КаталогПрограммы() + "\tmplts";
КонецЕсли;
 
  Исправлено в релизе: 2.5.18  
  Код ошибки: 10038719  
  Дата публикации: 20.10.2009 17:29:19  
  Дата последнего изменения: 20.10.2009 0:00:00  
  Описание: Если у сотрудника был больничный, то в отчете "Лицевой счет Т-54" во всех месяцах после месяца начисления больничного в графе 34 отражаются месяцы оплаченного больничного.  
  Исправлено в релизе: 2.5.18  
  Код ошибки: 10038669  
  Дата публикации: 20.10.2009 17:25:12  
  Дата последнего изменения: 20.10.2009 0:00:00  
  Описание: Если пользователь неправильно задал пароль при обновлении конфигурации, то программа "молча" показывает сплеш и не выполняет обновление.  
  Исправлено в релизе: 2.5.18  
  Код ошибки: 10038323  
  Дата публикации: 15.10.2009 17:03:54  
  Дата последнего изменения: 15.10.2009 0:00:00  
  Описание: В отчете "Налоговая карточка 1-НДФЛ" не выводятся суммы доходов в разделах 4, 5 и 7.  
  Способ исправления: Заменить процедуру СформироватьКарточку1НДФЛ() модуля отчета
РегламентированнаяФорма1НДФЛ следующим фрагментом:

Процедура СформироватьКарточку1НДФЛ(ДокументРезультат, ФизЛицо, Год, Организация, ГоловнаяОрганизация, Уровень) Экспорт

Ответственный = Справочники.Пользователи.ПустаяСсылка();

Если НЕ ПервыйРаз тогда
ДокументРезультат.ВывестиГоризонтальныйРазделительСтраниц();
Иначе
ПервыйРаз = ложь;
КонецЕсли;

НалоговыйПериод = Год(Год);
Если НалоговыйПериод < 2009 Тогда
Макет = ПолучитьМакет("Форма1НДФЛ");
Иначе
Макет = ПолучитьМакет("Форма1НДФЛ_2009");
КонецЕсли;

//-----------------------------------------------------------------------------
// ЗАПОЛНЕНИЕ ФОРМЫ

// Переменные оформления
ЦветПодсветкиНеверноИсчисленногоНалога = Новый Цвет(0,0,255);
ЦветЧерный = Новый Цвет(0,0,0);

// Области-разделы
Раздел1 = Макет.ПолучитьОбласть("Раздел1");
Раздел2 = Макет.ПолучитьОбласть("Раздел2");
Раздел3 = Макет.ПолучитьОбласть("Раздел3");
Раздел4 = Макет.ПолучитьОбласть("Раздел4");
Раздел6 = Макет.ПолучитьОбласть("Раздел6");
Раздел7 = Макет.ПолучитьОбласть("Раздел7");
Раздел8 = Макет.ПолучитьОбласть("Раздел8");
Раздел9 = Макет.ПолучитьОбласть("Раздел9");
// Каждый вид доходов по ставке 35% должен отражаться в отдельном пятом разделе
МассивРазделов5 = Новый Массив;
// Добавим сразу в массив один раздел, т.к. даже если не будет доходов по ставке 35%, то все равно надо будет показать один пустой пятый раздел
МассивРазделов5.Добавить(Макет.ПолучитьОбласть("Раздел5"));

//-----------------------------------------------------------------------------
// РАЗДЕЛ 1 и 2

СтруктураОтбора = Новый Структура("ФизЛицо, Год, ГоловнаяОрганизация", ФизЛицо, НалоговыйПериод, ГоловнаяОрганизация);

ДанныеОФизЛицеОрганизации.Сбросить();

СписокРазличныхКодовСтандартныхВычетовФизЛицаЗаГод = ТаблицаРазличныхКодовСтандартныхВычетовФизЛиц.Скопировать(ТаблицаРазличныхКодовСтандартныхВычетовФизЛиц.НайтиСтроки(СтруктураОтбора)).ВыгрузитьКолонку("КодВычета");

Если ДанныеОФизЛицеОрганизации.НайтиСледующий(СтруктураОтбора) тогда

// Заполнение данных раздела 1
Раздел1.Параметры.ГодНП = "" + Формат(Год, "ЧГ=0; ДФ=yyyy");
Раздел1.Параметры.ИНН = "" + ДанныеОФизЛицеОрганизации.Организация_ИНН +"\" + ДанныеОФизЛицеОрганизации.Организация_КПП;
Раздел1.Параметры.КодИМНС = ДанныеОФизЛицеОрганизации.Организация_КодИМНС;
Раздел1.Параметры.КодОкато = ?(СводноПоКодамОКАТО,ДанныеОФизЛицеОрганизации.Организация_КодПоОКАТО,КодПоОКАТО);
Раздел1.Параметры.НазваниеОрганизации = ДанныеОФизЛицеОрганизации.Организация_Наименование;

// Заполнение данных раздела 2
Раздел2.Параметры.ИНН = ДанныеОФизЛицеОрганизации.ФизЛицо_ИНН;
Раздел2.Параметры.СтраховойНомерПФР = ДанныеОФизЛицеОрганизации.ФизЛицо_СтраховойНомерПФР;
Раздел2.Параметры.ФИО = ДанныеОФизЛицеОрганизации.ФизЛицо_ФИО;
Раздел2.Параметры.КодДокумента = ДанныеОФизЛицеОрганизации.ФизЛицо_КодДокументаУдЛичн;
Раздел2.Параметры.СерияНомерДокумента = ДанныеОФизЛицеОрганизации.ФизЛицо_СерияНомерДокументаУдЛичн;
Раздел2.Параметры.ДатаРождения = Формат(ДанныеОФизЛицеОрганизации.ФизЛицо_ДатаРождения, "ДФ=dd.MM.yyyy");
Раздел2.Параметры.КодСтраны = ДанныеОФизЛицеОрганизации.ФизЛицо_КодСтраны;
Раздел2.Параметры.СтранаПроживания = ДанныеОФизЛицеОрганизации.ФизЛицо_АдресКодСтраны;
Раздел2.Параметры.Индекс = ДанныеОФизЛицеОрганизации.ФизЛицо_АдресИндекс;
Раздел2.Параметры.Регион = ПроцедурыУправленияПерсоналом.ПолучитьКодРегионаРФИзКодаАдресногоЭлемента(ДанныеОФизЛицеОрганизации.ФизЛицо_АдресРегион);
Раздел2.Параметры.Район = ДанныеОФизЛицеОрганизации.ФизЛицо_АдресРайон;
Раздел2.Параметры.Город = ДанныеОФизЛицеОрганизации.ФизЛицо_АдресГород;
Раздел2.Параметры.НаселенныйПункт = ДанныеОФизЛицеОрганизации.ФизЛицо_АдресНаселенныйПункт;
Раздел2.Параметры.Улица = ДанныеОФизЛицеОрганизации.ФизЛицо_АдресУлица;
Раздел2.Параметры.Дом = ДанныеОФизЛицеОрганизации.ФизЛицо_АдресДом;
Раздел2.Параметры.Корпус = ДанныеОФизЛицеОрганизации.ФизЛицо_АдресКорпус;
Раздел2.Параметры.Квартира = ДанныеОФизЛицеОрганизации.ФизЛицо_АдресКвартира;
Раздел2.Параметры.Статус = ?(ДанныеОФизЛицеОрганизации.ФизЛицо_Резидент,1,2);
Раздел2.Параметры.ЕстьВычеты = ?(СписокРазличныхКодовСтандартныхВычетовФизЛицаЗаГод.Количество()>0, "1", "2");
ФизЛицо_Резидент = ДанныеОФизЛицеОрганизации.ФизЛицо_Резидент;

КонецЕсли;

//-----------------------------------------------------------------------------
// Расчет последнего отображаемого месяца для нарастающих цифр по последнему месяцу дохода или налога

ПоследнийМесяцДоходовИНалогов = 1;

// обходим налоги
ВыборкаНалогиПомесяцамПоСтавкам.Сбросить();

Если ВыборкаНалогиПомесяцамПоСтавкам.НайтиСледующий(ГоловнаяОрганизация, "ГоловнаяОрганизация") тогда
ВыборкаФизЛиц = ВыборкаНалогиПомесяцамПоСтавкам.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Если ВыборкаФизЛиц.НайтиСледующий(ФизЛицо, "ФизЛицо") тогда
ВыборкаГод = ВыборкаФизЛиц.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Если ВыборкаГод.НайтиСледующий(НалоговыйПериод, "Год") тогда


ВыборкаПоСтавкам = ВыборкаГод.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаПоСтавкам.Следующий() Цикл
ВыборкаМесяцев = ВыборкаПоСтавкам.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаМесяцев.Следующий() Цикл
ПоследнийМесяцДоходовИНалогов = Макс(ВыборкаМесяцев.Месяц, ПоследнийМесяцДоходовИНалогов);
КонецЦикла;
КонецЦикла;


КонецЕсли;
КонецЕсли;
КонецЕсли;

Если ПоследнийМесяцДоходовИНалогов <> 12 Тогда
// обходим доходы
ВыборкаДоходыПоМесяцамПоВидам.Сбросить();

Если ВыборкаДоходыПоМесяцамПоВидам.НайтиСледующий(ГоловнаяОрганизация, "ГоловнаяОрганизация") тогда
ВыборкаФизЛиц = ВыборкаДоходыПоМесяцамПоВидам.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Если ВыборкаФизЛиц.НайтиСледующий(ФизЛицо, "ФизЛицо") тогда
ВыборкаГод = ВыборкаФизЛиц.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Если ВыборкаГод.НайтиСледующий(НалоговыйПериод, "Год") тогда
ВыборкаДоходыПоМесяцамПоВидамВнутренняя = ВыборкаГод.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);


Пока ВыборкаДоходыПоМесяцамПоВидамВнутренняя.Следующий() Цикл
ВыборкаДоходовРаздела = ВыборкаДоходыПоМесяцамПоВидамВнутренняя.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаДоходовРаздела.Следующий() Цикл
ВыборкаМесяцев = ВыборкаДоходовРаздела.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаМесяцев.Следующий() Цикл
ПоследнийМесяцДоходовИНалогов = Макс(ВыборкаМесяцев.Месяц, ПоследнийМесяцДоходовИНалогов);
КонецЦикла;
КонецЦикла;
КонецЦикла;


КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;


//-----------------------------------------------------------------------------
// Заполнение данных раздела 3

// признак резидента РФ
ФизЛицо_Резидент = ДанныеОФизЛицеОрганизации.ФизЛицо_Резидент;

// Переменные - итоги
МесячныеДоходыБезВычетовРаздела3 = НовыйМассивЧисел(13);// сумма доходов по всем кодам доходов без вычетов помесячно (индекс первого месяца - 1)
МесячныеСтандартныеВычеты = НовыйМассивЧисел(13);// сумма стандартных вычетов по всем кодам вычетов помесячно

// Сальдо по расчетам на начало года свернутое по всем ставкам
СвернутоеСальдо = 0;
СоответствиеСальдоПоСтавкамНаНачалоГода = Новый Соответствие;
Пока ВыборкаСальдоРасчетовНаНачалоГода.НайтиСледующий(СтруктураОтбора) Цикл
СвернутоеСальдо = СвернутоеСальдо + ВыборкаСальдоРасчетовНаНачалоГода.Сальдо;
// заполним структуру сальд на начало года для расчета параметров 6 раздела
Если ФизЛицо_Резидент Тогда
СоответствиеСальдоПоСтавкамНаНачалоГода.Вставить(ВыборкаСальдоРасчетовНаНачалоГода.Ставка, ВыборкаСальдоРасчетовНаНачалоГода.Сальдо);
Иначе// для нерезидента всё положим на ставку 13
БылоСальдо = СоответствиеСальдоПоСтавкамНаНачалоГода.Получить(Перечисления.НДФЛСтавкиНалогообложенияРезидента.Ставка13);
СоответствиеСальдоПоСтавкамНаНачалоГода.Вставить(Перечисления.НДФЛСтавкиНалогообложенияРезидента.Ставка13, ?(БылоСальдо = Неопределено, 0, БылоСальдо) + ВыборкаСальдоРасчетовНаНачалоГода.Сальдо);
КонецЕсли;

КонецЦикла;
Если СвернутоеСальдо > 0 Тогда
Раздел3.Параметры["ДолгЗаНалогоплательщиком"] = СвернутоеСальдо;
Иначе
Раздел3.Параметры["ДолгЗаНалоговымАгентом"] = - СвернутоеСальдо;
КонецЕсли;

// Доходы с предыдущего месиа работы
Раздел3.Параметры.ДоходыПредыдущегоМестаРаботы = ДанныеОФизЛицеОрганизации.ФизЛицо_ДоходыПредыдущегоМестаРаботы;


// Доходы 13% (или все доходы нерезидента) по видам и по месяцам

// спозиционируемся на доходах раздела 3
ВыборкаДоходыПоМесяцамПоВидам.Сбросить();
Если ВыборкаДоходыПоМесяцамПоВидам.НайтиСледующий(ГоловнаяОрганизация, "ГоловнаяОрганизация") тогда
ВыборкаФизЛиц = ВыборкаДоходыПоМесяцамПоВидам.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Если ВыборкаФизЛиц.НайтиСледующий(ФизЛицо, "ФизЛицо") тогда
ВыборкаГод = ВыборкаФизЛиц.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Если ВыборкаГод.НайтиСледующий(НалоговыйПериод, "Год") тогда
ВыборкаДоходыПоМесяцамПоВидамВнутренняя = ВыборкаГод.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Если ВыборкаДоходыПоМесяцамПоВидамВнутренняя.НайтиСледующий(Новый Структура("ГоловнаяОрганизация, Год, ФизЛицо, Раздел", ГоловнаяОрганизация, НалоговыйПериод, ФизЛицо,"Раздел3")) тогда
// выберем доходы раздела
НомерДохода = 0;
ВыборкаДоходовРаздела = ВыборкаДоходыПоМесяцамПоВидамВнутренняя.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаДоходовРаздела.Следующий() Цикл
НомерДохода = НомерДохода + 1;

Если НомерДохода <= 10 Тогда
Раздел3.Параметры["КодДохода" + НомерДохода] = ВыборкаДоходовРаздела.КодДохода;// код дохода
Раздел3.Параметры["Доход" + НомерДохода + "_Итого"] = ВыборкаДоходовРаздела.СуммаДохода;// доход за год

ВыборкаМесяцев = ВыборкаДоходовРаздела.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаМесяцев.Следующий() Цикл
Месяц = ВыборкаМесяцев.Месяц;
Раздел3.Параметры["Доход" + НомерДохода + "_" + Месяц] = ВыборкаМесяцев.СуммаДохода;// доход за месяц по коду дохода
// собираем суммы доходов без вычетов по всем видам доходов
МесячныеДоходыБезВычетовРаздела3[Месяц] = МесячныеДоходыБезВычетовРаздела3[Месяц] + ВыборкаМесяцев.СуммаДохода - ВыборкаМесяцев.СуммаВычета;
КонецЦикла;
Иначе
Сообщить("Ошибка вывода данных (Раздел 3): форма не позволяет отразить более 10кодов дохода!");
КонецЕсли;

КонецЦикла;
КонецЕсли;

КонецЕсли;
КонецЕсли;
КонецЕсли;
// Вычеты к 13% доходам (или все вычеты нерезидента) по видам и по месяцам
НомерВычета = 0;
ВыборкаВычетыПоМесяцамПоВидам.Сбросить();
Если ВыборкаВычетыПоМесяцамПоВидам.НайтиСледующий(ГоловнаяОрганизация, "ГоловнаяОрганизация") тогда
ВыборкаФизЛиц = ВыборкаВычетыПоМесяцамПоВидам.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Если ВыборкаФизЛиц.НайтиСледующий(ФизЛицо, "ФизЛицо") тогда
ВыборкаГод = ВыборкаФизЛиц.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Если ВыборкаГод.НайтиСледующий(НалоговыйПериод, "Год") тогда
ВыборкаВычетыПоМесяцамПоВидамВнтреняя = ВыборкаГод.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

Пока ВыборкаВычетыПоМесяцамПоВидамВнтреняя.Следующий() Цикл
НомерВычета = НомерВычета + 1;
Если НомерВычета <= 5 Тогда
Раздел3.Параметры["КодВычета" + НомерВычета] = "Код "+ ВыборкаВычетыПоМесяцамПоВидамВнтреняя.КодВычета;// код вычета
Раздел3.Параметры["Вычет" + НомерВычета + "_Итого"] = ВыборкаВычетыПоМесяцамПоВидамВнтреняя.СуммаВычета;// вычет за год

ВыборкаМесяцев = ВыборкаВычетыПоМесяцамПоВидамВнтреняя.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаМесяцев.Следующий() Цикл
Месяц = ВыборкаМесяцев.Месяц;
Раздел3.Параметры["Вычет" + НомерВычета + "_" + Месяц] = ВыборкаМесяцев.СуммаВычета;// вычет за месяц по коду вычета
КонецЦикла;
Иначе
Сообщить("Ошибка вывода данных (раздел3): форма не позволяет отразить более 5 кодов вычетов!");
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецЕсли;

// Переносим в документ совокупные доходы без вычетов в разрезе месяцев и совокупный нарастающий доход без вычетов
НарастающийДоходБезВычетов = 0;
Для Месяц = 1 По ПоследнийМесяцДоходовИНалогов Цикл
Раздел3.Параметры["МДБезВ_" + Месяц] = МесячныеДоходыБезВычетовРаздела3[Месяц];
НарастающийДоходБезВычетов = НарастающийДоходБезВычетов + МесячныеДоходыБезВычетовРаздела3[Месяц];
Раздел3.Параметры["ГДБезВ_" + Месяц] = НарастающийДоходБезВычетов;
КонецЦикла;
Раздел3.Параметры["МДБезВ_Итого"] = НарастающийДоходБезВычетов;
Раздел3.Параметры["ГДБезВ_Итого"] = НарастающийДоходБезВычетов;

// Стандартные вычеты (коды 101-113)

СоответствиеВычетов = Новый Соответствие;
// выборка стандартных вычетов не имеет итогов

Пока ВыборкаСтандартныхВычетовФизЛица.НайтиСледующий(СтруктураОтбора) Цикл

Месяц = ВыборкаСтандартныхВычетовФизЛица.Месяц;

Если ЗначениеЗаполнено(ВыборкаСтандартныхВычетовФизЛица.КодВычета) Тогда
НомерВычета = ВыборкаСтандартныхВычетовФизЛица.НомерСтрокиВычета;
Если НомерВычета > 0 Тогда
СоответствиеВычетов.Вставить(НомерВычета, ?(СоответствиеВычетов[НомерВычета] = Неопределено, 0, СоответствиеВычетов[НомерВычета]) + ВыборкаСтандартныхВычетовФизЛица.ПримененныйВычет);
Раздел3.Параметры["СВычет" + НомерВычета + "_" + Месяц] = ВыборкаСтандартныхВычетовФизЛица.ПримененныйВычет;// вычет за месяц по коду вычета
// собираем суммы вычетов
МесячныеСтандартныеВычеты[Месяц] = МесячныеСтандартныеВычеты[Месяц] + ВыборкаСтандартныхВычетовФизЛица.ПримененныйВычет;
// Если право на вычет отличается от фактически предоставленного - отметим это
Если СводноПоКодамОКАТО И ВыборкаСтандартныхВычетовФизЛица.ПримененныйВычет <> ВыборкаСтандартныхВычетовФизЛица.РазмерВычета Тогда
Раздел3.Область("СВычет" + НомерВычета + "_" + Месяц).Примечание.Текст = "Фактическая сумма вычета не совпадает с правом на вычет:
| право на вычет = " + ПараметрВЧисло(ВыборкаСтандартныхВычетовФизЛица.РазмерВычета);
КонецЕсли;
Иначе
Сообщить("Ошибка вывода данных (раздел №3): указан непредусмотренный код стандартного налогового вычета - " + ВыборкаСтандартныхВычетовФизЛица.КодВычетаКод +"!");
КонецЕсли;
КонецЕсли;

КонецЦикла;

Для каждого Элемент Из СоответствиеВычетов Цикл
Если Не ЗначениеЗаполнено(Элемент.Значение) Тогда
Продолжить;
КонецЕсли;
НомерВычета = Элемент.Ключ;
Раздел3.Параметры["СВычет" + НомерВычета + "_Итого"] = Элемент.Значение;// вычет за год
КонецЦикла;

// Итоги по стандартным вычетам (коды 101-113) нарастающим итогом
НарастающиеСтандартныеВычеты = 0;
Для Месяц = 1 По ПоследнийМесяцДоходовИНалогов Цикл
НарастающиеСтандартныеВычеты = НарастающиеСтандартныеВычеты + МесячныеСтандартныеВычеты[Месяц];
Раздел3.Параметры["ГСВ_" + Месяц] = НарастающиеСтандартныеВычеты;
КонецЦикла;
Раздел3.Параметры["ГСВ_Итого"] = НарастающиеСтандартныеВычеты;

// Имущественные вычеты
// выборка имущественных вычетов сгруппирована по Месяц
НарастающиеИмущественныеВычеты = 0;
НарастающийВычетКод311 = 0;
НарастающийВычетКод312 = 0;
Пока ВыборкаИмущественныеВычеты.НайтиСледующий(СтруктураОтбора) Цикл
Месяц = ВыборкаИмущественныеВычеты.МесяцНП;
Если Месяц > ПоследнийМесяцДоходовИНалогов Тогда
Прервать
КонецЕсли;
НарастающиеИмущественныеВычеты = НарастающиеИмущественныеВычеты + ВыборкаИмущественныеВычеты.РазмерВычета;
МесячныеСтандартныеВычеты[Месяц] = МесячныеСтандартныеВычеты[Месяц] + ВыборкаИмущественныеВычеты.РазмерВычета;
Раздел3.Параметры["ГИВ_" + Месяц] = НарастающиеИмущественныеВычеты;
Если ВыборкаИмущественныеВычеты.КодВычетаИмущественный = Справочники.ВычетыНДФЛ.Код311 Тогда
Раздел3.Параметры["ИВычет1" + "_" + Месяц] = ВыборкаИмущественныеВычеты.РазмерВычета;// вычет за месяц по коду вычета
НарастающийВычетКод311 = НарастающийВычетКод311 + ВыборкаИмущественныеВычеты.РазмерВычета;
Иначе
Раздел3.Параметры["ИВычет2" + "_" + Месяц] = ВыборкаИмущественныеВычеты.РазмерВычета;// вычет за месяц по коду вычета
НарастающийВычетКод312 = НарастающийВычетКод312 + ВыборкаИмущественныеВычеты.РазмерВычета;
КонецЕсли;
КонецЦикла;
Раздел3.Параметры["ГИВ_Итого"] = НарастающиеИмущественныеВычеты;
Раздел3.Параметры["ИВычет1_Итого"] = НарастающийВычетКод311;
Раздел3.Параметры["ИВычет2_Итого"] = НарастающийВычетКод312;

// Налоговая база с начала года
НарастающаяНалоговаяБаза = 0;
Для Месяц = 1 По ПоследнийМесяцДоходовИНалогов Цикл
Если ФизЛицо_Резидент Тогда
НарастающаяНалоговаяБаза = НарастающаяНалоговаяБаза + МесячныеДоходыБезВычетовРаздела3[Месяц] - МесячныеСтандартныеВычеты[Месяц];
Раздел3.Параметры["НБаза_" + Месяц] = Макс(НарастающаяНалоговаяБаза,0);
Иначе
// Для нерезидента налоговая база показывается не нарастающим итогом
Раздел3.Параметры["НБаза_" + Месяц] = Макс(МесячныеДоходыБезВычетовРаздела3[Месяц],0);
КонецЕсли;
КонецЦикла;
Раздел3.Параметры["НБаза_Итого"] = Макс(НарастающаяНалоговаяБаза,0);

ЕстьВычетОдинарный = Ложь;
ЕстьВычетДвойной = Ложь;
ЕстьВычетУчетверенный = Ложь;
Для каждого Вычет Из СписокРазличныхКодовСтандартныхВычетовФизЛицаЗаГод Цикл
Если Не ЕстьВычетОдинарный Тогда
ЕстьВычетОдинарный = Вычет = Справочники.ВычетыНДФЛ.Код101
КонецЕсли;
Если Не ЕстьВычетДвойной Тогда
ЕстьВычетДвойной = Вычет = Справочники.ВычетыНДФЛ.Код102
Или Вычет = Справочники.ВычетыНДФЛ.Код106
Или Вычет = Справочники.ВычетыНДФЛ.Код111
КонецЕсли;

Если Не ЕстьВычетУчетверенный Тогда
ЕстьВычетУчетверенный = Вычет = Справочники.ВычетыНДФЛ.Код107
Или Вычет = Справочники.ВычетыНДФЛ.Код113
КонецЕсли;

КонецЦикла;
// Права на вычеты
Раздел3.Параметры.ПравоНаВычетОдинарный = ?(НалоговыйПериод > 2008, "1000 руб", "600 руб") + ?(ЕстьВычетОдинарный, " - V", "");
Раздел3.Параметры.ПравоНаВычетДвойной = ?(НалоговыйПериод > 2008, "2000 руб", "1200 руб") + ?(ЕстьВычетДвойной, " - V", "");
Раздел3.Параметры.ПравоНаВычетУчетверенный = ?(НалоговыйПериод > 2008, "4000 руб", "2400 руб") + ?(ЕстьВычетУчетверенный, " - V", "");
Раздел3.Параметры.ПравоНаВычет103 = "400 руб" + ?(СписокРазличныхКодовСтандартныхВычетовФизЛицаЗаГод.Найти(Справочники.ВычетыНДФЛ.Код103) <> Неопределено, " - V", "");
Раздел3.Параметры.ПравоНаВычет104 = "500 руб" + ?(СписокРазличныхКодовСтандартныхВычетовФизЛицаЗаГод.Найти(Справочники.ВычетыНДФЛ.Код104) <> Неопределено, " - V", "");
Раздел3.Параметры.ПравоНаВычет105 = "3000 руб" + ?(СписокРазличныхКодовСтандартныхВычетовФизЛицаЗаГод.Найти(Справочники.ВычетыНДФЛ.Код105) <> Неопределено, " - V", "");

//-----------------------------------------------------------------------------
// Раздел 4 - Дивиденды

// Переменные - итоги
// в принципе код доходов на дивиденды один (1010), но для универсальности заведем итоговые массивы
МесячныеДоходыРаздела4 = НовыйМассивЧисел(13);// сумма доходов по всем кодам доходов помесячно (индекс первого месяца - 1)
МесячныеВычетыРаздела4 = НовыйМассивЧисел(13);// сумма доходов по всем кодам доходов без вычетов помесячно (индекс первого месяца - 1)

// Соберем доходы и вычеты по всем видам доходов

// спозиционируемся на доходах раздела 4
ВыборкаДоходыПоМесяцамПоВидам.Сбросить();
Если ВыборкаДоходыПоМесяцамПоВидам.НайтиСледующий(ГоловнаяОрганизация, "ГоловнаяОрганизация") тогда
ВыборкаФизЛиц = ВыборкаДоходыПоМесяцамПоВидам.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Если ВыборкаФизЛиц.НайтиСледующий(ФизЛицо, "ФизЛицо") тогда
ВыборкаГод = ВыборкаФизЛиц.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Если ВыборкаГод.НайтиСледующий(НалоговыйПериод, "Год") тогда
ВыборкаДоходыПоМесяцамПоВидамВнутренняя = ВыборкаГод.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

Если ВыборкаДоходыПоМесяцамПоВидамВнутренняя.НайтиСледующий(Новый Структура("ГоловнаяОрганизация, Год, ФизЛицо, Раздел", ГоловнаяОрганизация, НалоговыйПериод, ФизЛицо,"Раздел4")) тогда
ВыборкаДоходовРаздела = ВыборкаДоходыПоМесяцамПоВидамВнутренняя.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаДоходовРаздела.Следующий() Цикл
ВыборкаМесяцев = ВыборкаДоходовРаздела.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаМесяцев.Следующий() Цикл
Месяц = ВыборкаМесяцев.Месяц;
МесячныеДоходыРаздела4[Месяц] = МесячныеДоходыРаздела4[Месяц] + ВыборкаМесяцев.СуммаДохода;
МесячныеВычетыРаздела4[Месяц] = МесячныеВычетыРаздела4[Месяц] + ВыборкаМесяцев.СуммаВычета;
КонецЦикла;
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;

// Выведем доходы и облагаемую базу
ИтогоДоходовРаздела4 = 0;
ИтогоНалоговаяБазаРаздела4 = 0;
Для М =1 По ПоследнийМесяцДоходовИНалогов Цикл
Раздел4.Параметры["Доход_" + М] = МесячныеДоходыРаздела4[М];
Раздел4.Параметры["НБаза_" + М] = Макс(МесячныеДоходыРаздела4[М] - МесячныеВычетыРаздела4[М],0);
ИтогоДоходовРаздела4 = ИтогоДоходовРаздела4 + МесячныеДоходыРаздела4[М];
ИтогоНалоговаяБазаРаздела4 = ИтогоНалоговаяБазаРаздела4 + МесячныеДоходыРаздела4[М] - МесячныеВычетыРаздела4[М];
КонецЦикла;
Раздел4.Параметры["Доход_Итого"] = ИтогоДоходовРаздела4;
Раздел4.Параметры["НБаза_Итого"] = ИтогоНалоговаяБазаРаздела4;


//-----------------------------------------------------------------------------
// Раздел 5 - Доходы по ставке 35%

// Отразим каждый код дохода в отдельном пятом разделе

// спозиционируемся на доходах раздела 5
ВыборкаДоходыПоМесяцамПоВидам.Сбросить();
Если ВыборкаДоходыПоМесяцамПоВидам.НайтиСледующий(ГоловнаяОрганизация, "ГоловнаяОрганизация") тогда
ВыборкаФизЛиц = ВыборкаДоходыПоМесяцамПоВидам.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Если ВыборкаФизЛиц.НайтиСледующий(ФизЛицо, "ФизЛицо") тогда
ВыборкаГод = ВыборкаФизЛиц.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Если ВыборкаГод.НайтиСледующий(НалоговыйПериод, "Год") тогда
ВыборкаДоходыПоМесяцамПоВидамВнутренняя = ВыборкаГод.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Если ВыборкаДоходыПоМесяцамПоВидамВнутренняя.НайтиСледующий(Новый Структура("ГоловнаяОрганизация, Год, ФизЛицо, Раздел", ГоловнаяОрганизация, НалоговыйПериод, ФизЛицо,"Раздел5")) тогда

НомерДохода = 0;

ВыборкаДоходовРаздела = ВыборкаДоходыПоМесяцамПоВидамВнутренняя.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаДоходовРаздела.Следующий() Цикл

НомерДохода = НомерДохода + 1;
Если НомерДохода > 1 Тогда // В массиве областей раздела 5 первый элемент всегда присутствует
МассивРазделов5.Добавить(Макет.ПолучитьОбласть("Раздел5"));
КонецЕсли;

ОбластьРаздела = МассивРазделов5[НомерДохода - 1];
ОбластьРаздела.Параметры["КодДохода"] = ВыборкаДоходовРаздела.КодДохода;
ОбластьРаздела.Параметры["Доход_Итого"] = ВыборкаДоходовРаздела.СуммаДохода;
ОбластьРаздела.Параметры["Вычет_Итого"] = ВыборкаДоходовРаздела.СуммаВычета;
ОбластьРаздела.Параметры["НБаза_Итого"] = ВыборкаДоходовРаздела.СуммаДохода - ВыборкаДоходовРаздела.СуммаВычета;

ВыборкаМесяцев = ВыборкаДоходовРаздела.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаМесяцев.Следующий() Цикл
Месяц = ВыборкаМесяцев.Месяц;
ОбластьРаздела.Параметры["Доход_" + Месяц] = ВыборкаМесяцев.СуммаДохода;
ОбластьРаздела.Параметры["Вычет_" + Месяц] = ВыборкаМесяцев.СуммаВычета;
ОбластьРаздела.Параметры["НБаза_" + Месяц] = Макс(ВыборкаМесяцев.СуммаДохода - ВыборкаМесяцев.СуммаВычета,0);
КонецЦикла;

КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
//-----------------------------------------------------------------------------
// Раздел 7 - Доходы, налогообложение которых осуществляется налоговыми органами

// Отразим суммы доходов

// спозиционируемся на доходах раздела 7
ВыборкаДоходыПоМесяцамПоВидам.Сбросить();
Если ВыборкаДоходыПоМесяцамПоВидам.НайтиСледующий(ГоловнаяОрганизация, "ГоловнаяОрганизация") тогда
ВыборкаФизЛиц = ВыборкаДоходыПоМесяцамПоВидам.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Если ВыборкаФизЛиц.НайтиСледующий(ФизЛицо, "ФизЛицо") тогда
ВыборкаГод = ВыборкаФизЛиц.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Если ВыборкаГод.НайтиСледующий(НалоговыйПериод, "Год") тогда
ВыборкаДоходыПоМесяцамПоВидамВнутренняя = ВыборкаГод.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Если ВыборкаДоходыПоМесяцамПоВидамВнутренняя.НайтиСледующий(Новый Структура("ГоловнаяОрганизация, Год, ФизЛицо, Раздел", ГоловнаяОрганизация, НалоговыйПериод, ФизЛицо,"Раздел7")) тогда
НомерДохода = 0;
ВыборкаДоходовРаздела = ВыборкаДоходыПоМесяцамПоВидамВнутренняя.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаДоходовРаздела.Следующий() Цикл
НомерДохода = НомерДохода + 1;

Если НомерДохода <=3 Тогда
Раздел7.Параметры["КодДохода"+НомерДохода] = ВыборкаДоходовРаздела.КодДохода;
Раздел7.Параметры["Доход" + НомерДохода + "_Итого"] = ВыборкаДоходовРаздела.СуммаДохода;

ВыборкаМесяцев = ВыборкаДоходовРаздела.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаМесяцев.Следующий() Цикл
Месяц = ВыборкаМесяцев.Месяц;
Раздел7.Параметры["Доход" + НомерДохода + "_" + Месяц] = ВыборкаМесяцев.СуммаДохода;
КонецЦикла;
Иначе
Сообщить("Ошибка вывода данных (Раздел 7): форма не позволяет отразить более 3 кодов дохода!");
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;

//-----------------------------------------------------------------------------
// Одновременный вывод налогов по разделам 3,4,5: Начисленный, удержанный, переданный на взыскание, возвращенный, сальдо

ВыборкаНалогиПомесяцамПоСтавкам.Сбросить();
Если ВыборкаНалогиПомесяцамПоСтавкам.НайтиСледующий(ГоловнаяОрганизация, "ГоловнаяОрганизация") тогда
ВыборкаФизЛиц = ВыборкаНалогиПомесяцамПоСтавкам.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Если ВыборкаФизЛиц.НайтиСледующий(ФизЛицо, "ФизЛицо") тогда
ВыборкаГод = ВыборкаФизЛиц.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Если ВыборкаГод.НайтиСледующий(НалоговыйПериод, "Год") тогда
ВыборкаНалогиПомесяцамПоСтавкамВнутренняя = ВыборкаГод.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

Пока ВыборкаНалогиПомесяцамПоСтавкамВнутренняя.НайтиСледующий(СтруктураОтбора) Цикл

// Начисленный и удержанный налог отражаем нарастающим итогом только в 3 разделе для резидентов
Раздел = ВыборкаНалогиПомесяцамПоСтавкамВнутренняя.Раздел;
Если Раздел = "Раздел3" Тогда
НомерРаздела = 3;
ОбластьРаздела = Раздел3;
СтавкаНалога = ?(ФизЛицо_Резидент, ПроцедурыУправленияПерсоналом.ЗначениеСтавкиНДФЛотСтавкиНалогообложенияРезидента(Перечисления.НДФЛСтавкиНалогообложенияРезидента.Ставка13), ПроцедурыУправленияПерсоналом.ЗначениеСтавкиНДФЛСНерезидента());
ИначеЕсли Раздел = "Раздел4" Тогда
НомерРаздела = 4;
ОбластьРаздела = Раздел4;
СтавкаНалога = ?(ФизЛицо_Резидент, ПроцедурыУправленияПерсоналом.ЗначениеСтавкиНДФЛотСтавкиНалогообложенияРезидента(Перечисления.НДФЛСтавкиНалогообложенияРезидента.Ставка09),ПроцедурыУправленияПерсоналом.ЗначениеСтавкиНДФЛСНерезидента(Справочники.ДоходыНДФЛ.Код1010,ДатаКонцаНП));
Иначе
НомерРаздела = 5;
ОбластьРаздела = МассивРазделов5[0]; // Все налоги покажем для первого 35% дохода
СтавкаНалога = ПроцедурыУправленияПерсоналом.ЗначениеСтавкиНДФЛотСтавкиНалогообложенияРезидента(Перечисления.НДФЛСтавкиНалогообложенияРезидента.Ставка35);
КонецЕсли;

// Переложим данные из выборки в массивы
НалогИсчисленный = НовыйМассивЧисел(13);
НалогУдержанный = НовыйМассивЧисел(13);
НалогИсчисленныйНарастающимИтогом = НовыйМассивЧисел(13);
НалогУдержанныйНарастающимИтогом = НовыйМассивЧисел(13);
НалогВозвращенный = НовыйМассивЧисел(13);
НалогВзысканный = НовыйМассивЧисел(13);
ВыборкаМесяцев = ВыборкаНалогиПомесяцамПоСтавкамВнутренняя.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаМесяцев.Следующий() Цикл
Месяц = ВыборкаМесяцев.Месяц;
НалогИсчисленный[Месяц] = ВыборкаМесяцев.Начислено;
НалогУдержанный[Месяц] = ВыборкаМесяцев.Удержано;
НалогИсчисленныйНарастающимИтогом[Месяц] = ВыборкаМесяцев.Начислено;
НалогУдержанныйНарастающимИтогом[Месяц] = ВыборкаМесяцев.Удержано;
НалогВзысканный[Месяц] = ВыборкаМесяцев.ПереданоНаВзыскание;
НалогВозвращенный[Месяц] = ВыборкаМесяцев.Возвращено;
КонецЦикла;

// для подсчета сальдо по расчетам необходимо всегда использовать
// даные нарастающим итогом
ПреобразоватьМассивВНарастающий(НалогИсчисленныйНарастающимИтогом);
ПреобразоватьМассивВНарастающий(НалогУдержанныйНарастающимИтогом);

// Если надо, преобразуем массивы в нарастающие
Если Раздел = "Раздел3" И ФизЛицо_Резидент Тогда
ПреобразоватьМассивВНарастающий(НалогИсчисленный);
ПреобразоватьМассивВНарастающий(НалогУдержанный);
ПреобразоватьМассивВНарастающий(НалогВзысканный);
ПреобразоватьМассивВНарастающий(НалогВозвращенный);
КонецЕсли;

// Вывод данных в карточку
Для М = 1 По ПоследнийМесяцДоходовИНалогов Цикл

ОбластьРаздела.Параметры["НИ_" + М] = НалогИсчисленный[М];

// Рассчитаем сумму налога от базы по ставке
НалогИсчисленныйПоБазе = Окр(ПараметрВЧисло(ОбластьРаздела.Параметры["НБаза_" + М]) * СтавкаНалога/100,0);

// Если налог исчислен неверно, то выделим цветом
Если СводноПоКодамОКАТО И НалогИсчисленный[М] <> НалогИсчисленныйПоБазе Тогда
ЦветТекстаЯчейки = ЦветПодсветкиНеверноИсчисленногоНалога;
ОбластьРаздела.Области["Р"+ НомерРаздела + "НИ_" + М].Примечание.Текст = "Неверно исчислена сумма налога:
| Налоговая база = " + ПараметрВЧисло(ОбластьРаздела.Параметры["НБаза_" + М]) + "
| Ставка налога = " + СтавкаНалога + "%
| Налог исчисленный = " + НалогИсчисленныйПоБазе;
Иначе
ЦветТекстаЯчейки = ЦветЧерный;
КонецЕсли;
ОбластьРаздела.Области["Р" + НомерРаздела + "НИ_" + М].ЦветТекста = ЦветТекстаЯчейки;


ОбластьРаздела.Параметры["НУ_" + М] = НалогУдержанный[М];
ОбластьРаздела.Параметры["Взыск_" + М] = НалогВзысканный[М];
ОбластьРаздела.Параметры["Возврат_" + М]= НалогВозвращенный[М];

Сальдо = НалогИсчисленныйНарастающимИтогом[М] - НалогУдержанныйНарастающимИтогом[М];
Если Сальдо > 0 Тогда
ОбластьРаздела.Параметры["ДолгНП_" + М] = Сальдо; // долг за налогоплательщиком
Иначе
ОбластьРаздела.Параметры["ДолгНА_" + М] = - Сальдо; // долг за налоговым агентом
КонецЕсли;
КонецЦикла;

// Итоги по строкам
ОбластьРаздела.Параметры["НИ_Итого"] = ВыборкаНалогиПомесяцамПоСтавкамВнутренняя.Начислено;
ОбластьРаздела.Параметры["НУ_Итого"] = ВыборкаНалогиПомесяцамПоСтавкамВнутренняя.Удержано;
ОбластьРаздела.Параметры["Взыск_Итого"] = ВыборкаНалогиПомесяцамПоСтавкамВнутренняя.ПереданоНаВзыскание;
ОбластьРаздела.Параметры["Возврат_Итого"] = ВыборкаНалогиПомесяцамПоСтавкамВнутренняя.Возвращено;
Сальдо = ВыборкаНалогиПомесяцамПоСтавкамВнутренняя.Начислено - ВыборкаНалогиПомесяцамПоСтавкамВнутренняя.Удержано;
Если Сальдо > 0 Тогда
ОбластьРаздела.Параметры["ДолгНП_Итого"] = Сальдо; // долг за налогоплательщиком
Иначе
ОбластьРаздела.Параметры["ДолгНА_Итого"] = - Сальдо; // долг за налоговым агентом
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецЕсли;
//-----------------------------------------------------------------------------
// Раздел 6

ИтогоНачислено = 0;
ИтогоУдержано = 0;
ИтогоПереданоНаВзыскание = 0;
ИтогоСальдо = 0;

Для Н = 1 по 3 Цикл

Если Н = 1 Тогда
СуффиксСтроки = "06";
ОбластьРаздела = Раздел4;
СальдоНаНачалоГода = СоответствиеСальдоПоСтавкамНаНачалоГода.Получить(Перечисления.НДФЛСтавкиНалогообложенияРезидента.Ставка09);
ИначеЕсли Н = 2 Тогда
СуффиксСтроки = ?(ФизЛицо_Резидент,"13","30");
ОбластьРаздела = Раздел3;
СальдоНаНачалоГода = СоответствиеСальдоПоСтавкамНаНачалоГода.Получить(Перечисления.НДФЛСтавкиНалогообложенияРезидента.Ставка13);
Иначе
СуффиксСтроки = "35";
ОбластьРаздела = МассивРазделов5[0];
СальдоНаНачалоГода = СоответствиеСальдоПоСтавкамНаНачалоГода.Получить(Перечисления.НДФЛСтавкиНалогообложенияРезидента.Ставка35);
КонецЕсли;

// Расчет параметров
НачисленоЗаГод = ПараметрВЧисло(ОбластьРаздела.Параметры["НИ_Итого"]);
УдержаноЗаГод = ПараметрВЧисло(ОбластьРаздела.Параметры["НУ_Итого"]);
ПереданоНаВзысканиеЗаГод = ПараметрВЧисло(ОбластьРаздела.Параметры["Взыск_Итого"]);
ВозвращеноЗаГод = ПараметрВЧисло(ОбластьРаздела.Параметры["Возврат_Итого"]);

СальдоНаКонецГода = ПараметрВЧисло(СальдоНаНачалоГода) + (НачисленоЗаГод - УдержаноЗаГод + ВозвращеноЗаГод) - ПереданоНаВзысканиеЗаГод;

// Переписываем в таблицу
Раздел6.Параметры["НИ_Ст" + СуффиксСтроки] = НачисленоЗаГод;
// в колонке удержано показываем за минусом возврата
Раздел6.Параметры["НУ_Ст" + СуффиксСтроки] = УдержаноЗаГод - ВозвращеноЗаГод;
Раздел6.Параметры["Взыск_Ст" + СуффиксСтроки] = ПереданоНаВзысканиеЗаГод;
Если СальдоНаКонецГода > 0 Тогда
Раздел6.Параметры["ДолгНП_Ст" + СуффиксСтроки] = СальдоНаКонецГода;
Иначе
Раздел6.Параметры["ДолгНА_Ст" + СуффиксСтроки] = - СальдоНаКонецГода;
КонецЕсли;

// Расчет итогов по строкам
ИтогоНачислено = ИтогоНачислено + НачисленоЗаГод;
ИтогоУдержано = ИтогоУдержано + УдержаноЗаГод - ВозвращеноЗаГод;
ИтогоПереданоНаВзыскание = ИтогоПереданоНаВзыскание + ПереданоНаВзысканиеЗаГод;
ИтогоСальдо = ИтогоСальдо + СальдоНаКонецГода;
КонецЦикла;

// вывод итогов по строкам раздела
Раздел6.Параметры["НИ_Итого"] = ИтогоНачислено;
Раздел6.Параметры["НУ_Итого"] = ИтогоУдержано;
Раздел6.Параметры["Взыск_Итого"] = ИтогоПереданоНаВзыскание;
Если ИтогоСальдо > 0 Тогда
Раздел6.Параметры["ДолгНП_Итого"] = ИтогоСальдо;
Иначе
Раздел6.Параметры["ДолгНА_Итого"] = - ИтогоСальдо;
КонецЕсли;

//-----------------------------------------------------------------------------
// Раздел 9
Раздел9.Параметры.ДатаПодписи = Формат(ДатаПодписи, "ДФ=dd.MM.yyyy");
Раздел9.Параметры.ФИООтветственного = ДанныеОФизЛицеОрганизации.Ответственный_ФИО;
Раздел9.Параметры.ДолжностьОтветственного = ДанныеОФизЛицеОрганизации.Ответственный_Должность;
Раздел9.Параметры.НомерСправкиВИМНС = Строка(ДанныеОПредоставленныхСправках.ВнешнийНомерСправкиВИМНС) + ?(ПустаяСтрока(ДанныеОПредоставленныхСправках.НомерСправкиВИМНС),"", " (" + ДанныеОПредоставленныхСправках.НомерСправкиВИМНС + ")") ;
Раздел9.Параметры.ДатаСправкиВИМНС = Формат(ДанныеОПредоставленныхСправках.ДатаСправкиВИМНС, "ДФ=dd.MM.yyyy");
Раздел9.Параметры.НомерСправкиДляФизЛица = Строка(ДанныеОПредоставленныхСправках.ВнешнийНомерСправкиДляФизЛица) + ?(ПустаяСтрока(ДанныеОПредоставленныхСправках.НомерСправкиДляФизЛица), "", " (" + ДанныеОПредоставленныхСправках.НомерСправкиДляФизЛица + ")");
Раздел9.Параметры.ДатаСправкиДляФизЛица = Формат(ДанныеОПредоставленныхСправках.ДатаСправкиДляФизЛица, "ДФ=dd.MM.yyyy");
Раздел9.Параметры.НомерСправкиНаВзыскание = Строка(ДанныеОПредоставленныхСправках.ВнешнийНомерСправкиНаВзыскание) + ?(ПустаяСтрока(ДанныеОПредоставленныхСправках.НомерСправкиНаВзыскание), "", " (" + ДанныеОПредоставленныхСправках.НомерСправкиНаВзыскание + ")");
Раздел9.Параметры.ДатаСправкиНаВзыскание = Формат(ДанныеОПредоставленныхСправках.ДатаСправкиНаВзыскание, "ДФ=dd.MM.yyyy");

//Раздел3.Показать();

//-----------------------------------------------------------------------------
// Вывод страниц документа
ДокументРезультат.Вывести(Раздел1);
ДокументРезультат.Вывести(Раздел2);
ДокументРезультат.ВывестиГоризонтальныйРазделительСтраниц();
ДокументРезультат.Вывести(Раздел3);
ДокументРезультат.ВывестиГоризонтальныйРазделительСтраниц();
ДокументРезультат.Вывести(Раздел4);
Для Каждого Раздел из МассивРазделов5 Цикл
ДокументРезультат.Вывести(Раздел);
КонецЦикла;
ДокументРезультат.ВывестиГоризонтальныйРазделительСтраниц();
ДокументРезультат.Вывести(Раздел6);
ДокументРезультат.Вывести(Раздел7);
ДокументРезультат.Вывести(Раздел8);
ДокументРезультат.Вывести(Раздел9);
ДокументРезультат.Область(1,1).Примечание.Текст = " ";
ДокументРезультат.Область(1,1).Примечание.Текст = "";

//Параметры документа
ДокументРезультат.Автомасштаб = Истина;
ДокументРезультат.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
ДокументРезультат.ТолькоПросмотр = Истина;

КонецПроцедуры
 
  Исправлено в релизе: 2.5.18  
  Код ошибки: 10033446  
  Дата публикации: 15.10.2009 16:28:57  
  Дата последнего изменения: 15.10.2009 0:00:00  
  Описание: В отчет "Свод начислений работников организации" нельзя сделать другую настройку, кроме как свод.  
  Исправлено в релизе: 2.5.18  
  Код ошибки: 10037739  
  Дата публикации: 15.10.2009 16:28:39  
  Дата последнего изменения: 15.10.2009 0:00:00  
  Описание: Если документ "Прием на работу в организацию" открывается только для просмотра, в нем остается доступной команда заполнения работниками, принятыми в компанию по упр.учету.  
  Исправлено в релизе: 2.5.18  
  Код ошибки: 10037645  
  Дата публикации: 15.10.2009 16:28:23  
  Дата последнего изменения: 15.10.2009 0:00:00  
  Описание: Если для пользователя с ролью "Расчетчик регламентированной зарплаты" установлены ограничения доступа на уровне записей к данным сотрудников таким образом, что у него нет доступа ко всем сотрудникам своей организации, то отчет "Сведения о среднесписочной численности работников" может показывать неполные данные, в то время как при формировании отчета должно выдаваться сообщение о недостаточности прав.  
  Исправлено в релизе: 2.5.18  
  Код ошибки: 10037995  
  Дата публикации: 15.10.2009 16:27:32  
  Дата последнего изменения: 15.10.2009 0:00:00  
  Описание: После подбора сотрудников в т.ч. документа "Прием на работу организации" командой "Подбор", не взводится обязательный флажок в колонке "Регистрировать увольнение отдельным документом", отчего при временном приеме на работу документ может не провестись с сообщением об ошибке.  
  Способ обхода: Для приема на временную работу всегда выставлять флажок "Регистрировать увольнение отдельным документом", даже если он не был взведен автоматически.  
  Исправлено в релизе: 2.5.18  
  Код ошибки: 10036015  
  Дата публикации: 15.10.2009 16:26:59  
  Дата последнего изменения: 15.10.2009 0:00:00  
  Описание: После исправления кадрового документа в обработке "Анализ неявок", исходное кадровое событие не показывается, отчего расчетный документ, оформленный по устаревшим кадровым данным, сопоставляется с исправленным кадровым событием.  
  Код ошибки: 10038241  
  Дата публикации: 15.10.2009 16:26:32  
  Дата последнего изменения: 15.10.2009 0:00:00  
  Описание: При эксплуатации программы в клиент-серверном варианте с использованием СУБД MS SQL, документ "Табель учета рабочего времени организации" не заполняется с сообщением об ошибке в том случае, когда в ИБ зарегистрировано досрочное прекращение отпуска по уходу за ребенком по сотруднику, попадающему в табель.  
  Способ исправления: Исправление только для версии 2.5.17.
Заменить функцию Автозаполнение() модуля документа ТабельУчетаРабочегоВремениОрганизации следующим фрагментом:

Функция Автозаполнение(Запрос = Неопределено, Сотрудник = Неопределено, ТекущаяСтрокаТабличнойЧасти = Неопределено) Экспорт

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

Если Запрос = Неопределено Тогда

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

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

Иначе

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

КонецЕсли;

ЗапросАвтоЗаполнения.УстановитьПараметр("ГоловнаяОрганизация", ОбщегоНазначения.ГоловнаяОрганизация(Организация));
ЗапросАвтоЗаполнения.УстановитьПараметр("ОбособленноеПодразделение", Организация);
ЗапросАвтоЗаполнения.УстановитьПараметр("Подразделение", ПодразделениеОрганизации);
ЗапросАвтоЗаполнения.УстановитьПараметр("НачалоМесяца", ДатаНачалаПериода);
ЗапросАвтоЗаполнения.УстановитьПараметр("КонецМесяца", ДатаОкончанияПериода);
ЗапросАвтоЗаполнения.УстановитьПараметр("Месяц", ПериодРегистрации);

ЗапросАвтоЗаполнения.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
ЗапросАвтоЗаполнения.Выполнить();

//ЗапросАвтоЗаполнения.УстановитьПараметр("ВидУчетаВремениПоДням", ВидУчетаВремениПоДням);
//ЗапросАвтоЗаполнения.УстановитьПараметр("ВидУчетаВремениПоЧасам", ВидУчетаВремениПоЧасам);
//ЗапросАвтоЗаполнения.УстановитьПараметр("ВидУчетаВремениПоВечернимЧасам", Перечисления.ВидыУчетаВремени.ПоВечернимЧасам);
//ЗапросАвтоЗаполнения.УстановитьПараметр("ВидУчетаВремениПоНочнымЧасам", Перечисления.ВидыУчетаВремени.ПоНочнымЧасам);

//ЗапросАвтоЗаполнения.УстановитьПараметр("КлассификаторЯ", Справочники.КлассификаторИспользованияРабочегоВремени.Работа);
//ЗапросАвтоЗаполнения.УстановитьПараметр("КлассификаторВЧ", КлассификаторВечернееВремя);
//ЗапросАвтоЗаполнения.УстановитьПараметр("КлассификаторНЧ", КлассификаторНочноеВремя);
//ЗапросАвтоЗаполнения.УстановитьПараметр("Выходной", Справочники.КлассификаторИспользованияРабочегоВремени.ВыходныеДни);

ЗапросАвтоЗаполнения.УстановитьПараметр("ДокументСсылка", Ссылка);

//ЗапросАвтоЗаполнения.УстановитьПараметр("СверхНормы", Перечисления.ВидыВремени.ОтработанноеСверхНормы);
//ЗапросАвтоЗаполнения.УстановитьПараметр("ПустойКлассификатор", Справочники.КлассификаторИспользованияРабочегоВремени.ПустаяСсылка());

//ЗапросАвтоЗаполнения.УстановитьПараметр("ПоДням", Перечисления.ВидыУчетаВремени.ПоДням);
//ЗапросАвтоЗаполнения.УстановитьПараметр("ПоЧасам", Перечисления.ВидыУчетаВремени.ПоЧасам);
//ЗапросАвтоЗаполнения.УстановитьПараметр("ПоВечерним", Перечисления.ВидыУчетаВремени.ПоВечернимЧасам);
//ЗапросАвтоЗаполнения.УстановитьПараметр("ПоНочным", Перечисления.ВидыУчетаВремени.ПоНочнымЧасам);

ВидыВремениУчитываемыеВВыходные = Новый Массив(2);
ВидыВремениУчитываемыеВВыходные[0] = Перечисления.ВидыВремени.ОтработанноеСверхНормы;
ВидыВремениУчитываемыеВВыходные[1] = Перечисления.ВидыВремени.ЦелодневноеНеотработанное;
ЗапросАвтоЗаполнения.УстановитьПараметр("ВидыВремениУчитываемыеВВыходные", ВидыВремениУчитываемыеВВыходные);
//ЗапросАвтоЗаполнения.УстановитьПараметр("ПустойГрафик", Справочники.ГрафикиРаботы.ПустаяСсылка());

ГодПериода = Формат(Год(ПериодРегистрации), "ЧГ=4");
МесяцПериода = Месяц(ПериодРегистрации);
ТекстЗапроса = "ВЫБРАТЬ
| ДатаТабеля
|
|ПОМЕСТИТЬ ВТДатыТабеля
| ИЗ (
| ВЫБРАТЬ
| ДАТАВРЕМЯ(" + ГодПериода + ", " + МесяцПериода + " , " + День(ДатаНачалаПериода) + ") КАК ДатаТабеля
| ";
Для НомерДня = День(ДатаНачалаПериода) + 1 По День(ДатаОкончанияПериода) Цикл
ТекстЗапроса = ТекстЗапроса +
"ОБЪЕДИНИТЬ ВСЕ
|ВЫБРАТЬ
| ДАТАВРЕМЯ(" + ГодПериода + ", " + МесяцПериода + " ," + НомерДня + ")
| ";
КонецЦикла;
ТекстЗапроса = ТекстЗапроса + ") КАК ДатыТабеля";
ЗапросАвтоЗаполнения.Текст = ТекстЗапроса;
ЗапросАвтоЗаполнения.Выполнить();

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

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

ЗапросАвтоЗаполнения.Выполнить();
КонецЕсли;


Если СпособВводаДанных = Перечисления.СпособыВводаДанныхОВремени.ВЦеломЗаПериод Тогда


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

ЗапросАвтоЗаполнения.Выполнить();

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


Иначе
// Заполнение с разбивкой по дням.

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

КонецЕсли;

ЗапросАвтоЗаполнения.Текст = ЗапросАвтоЗаполненияТекст;
РезультатЗапроса = ЗапросАвтоЗаполнения.Выполнить();

Если Сотрудник = Неопределено Тогда
ОтработанноеВремя.Очистить();
ОтработанноеВремяВЦеломЗаПериод.Очистить();
КонецЕсли;

Выборка = РезультатЗапроса.Выбрать();
СтрокаТекущегоУровняСообщений = "";
Если Выборка.Количество() > 0 Тогда

Если СпособВводаДанных = Перечисления.СпособыВводаДанныхОВремени.ПоДням Тогда
// по дням.

ВведенныеТабеляПоДнямПоСотруднику = Новый Соответствие;
Пока Выборка.СледующийПоЗначениюПоля("Сотрудник") Цикл

ВведенныеТабеляПоДнямПоСотруднику.Очистить();
Если ТекущаяСтрокаТабличнойЧасти = Неопределено Тогда
СтрокаРасшифровкиПоДням = ОтработанноеВремя.Добавить();
Иначе
СтрокаРасшифровкиПоДням = ТекущаяСтрокаТабличнойЧасти;
Для ИндексДня = 1 По 31 Цикл
ТекущаяСтрокаТабличнойЧасти["ПервыйВидВремени" + Строка(ИндексДня)] = КлассификаторПустаяСсылка;
ТекущаяСтрокаТабличнойЧасти["ВторойВидВремени" + Строка(ИндексДня)] = КлассификаторПустаяСсылка;
ТекущаяСтрокаТабличнойЧасти["ТретийВидВремени" + Строка(ИндексДня)] = КлассификаторПустаяСсылка;
ТекущаяСтрокаТабличнойЧасти["ЧетвертыйВидВремени" + Строка(ИндексДня)] = КлассификаторПустаяСсылка;
ТекущаяСтрокаТабличнойЧасти["ПервыйЧасов" + Строка(ИндексДня)] = 0;
ТекущаяСтрокаТабличнойЧасти["ВторойЧасов" + Строка(ИндексДня)] = 0;
ТекущаяСтрокаТабличнойЧасти["ТретийЧасов" + Строка(ИндексДня)] = 0;
ТекущаяСтрокаТабличнойЧасти["ЧетвертыйЧасов" + Строка(ИндексДня)] = 0;
КонецЦикла;
КонецЕсли;
СтрокаРасшифровкиПоДням.Сотрудник = Выборка.Сотрудник;
Если Выборка.День <> NULL Тогда

Пока Выборка.СледующийПоЗначениюПоля("День") Цикл

ИндексЯчейкиВТаблице = Выборка.День;
ИндексМассиваПриставок = 0;
Пока Выборка.Следующий() Цикл

Если ИндексМассиваПриставок > 3 Тогда
// На данный момент мы можем вводить только 4 вида времени в один день
Прервать;
КонецЕсли;
НазваниеЯчейкиВБазе = МассивПриставок[ИндексМассиваПриставок]+"ВидВремени"+Строка(ИндексЯчейкиВТаблице);
СтрокаРасшифровкиПоДням[НазваниеЯчейкиВБазе] = Выборка.БукваВидаВремени;
НазваниеЯчейкиВБазе = МассивПриставок[ИндексМассиваПриставок]+"Часов"+Строка(ИндексЯчейкиВТаблице);
СтрокаРасшифровкиПоДням[НазваниеЯчейкиВБазе] = Выборка.ОсновноеЗначение;

ИндексМассиваПриставок = ИндексМассиваПриставок + 1;



КонецЦикла;
КонецЦикла;
КонецЕсли;
КонецЦикла;
Иначе
// в целом за период
СписокСотрудниковСНехваткойВидовВремени = Новый Соответствие;
СписокДобавленныхКолонок = Новый Соответствие;
Пока Выборка.СледующийПоЗначениюПоля("Сотрудник") Цикл
КоличествоЗаписей = 1;
Если ТекущаяСтрокаТабличнойЧасти = Неопределено Тогда
СтрокаТабличнойЧасти = ОтработанноеВремяВЦеломЗаПериод.Добавить();

Иначе
СтрокаТабличнойЧасти = ТекущаяСтрокаТабличнойЧасти;
КонецЕсли;
// Очистка старых значений
Для ИндексТекущейЗаписи = КоличествоЗаписей По 6 Цикл
СтрокаТабличнойЧасти["ВидВремени"+Строка(ИндексТекущейЗаписи)] = Справочники.КлассификаторИспользованияРабочегоВремени.ПустаяСсылка();
СтрокаТабличнойЧасти["Дней" + Строка(ИндексТекущейЗаписи)] = 0;
СтрокаТабличнойЧасти["Часов" + Строка(ИндексТекущейЗаписи)] = 0;
КонецЦикла;
СтрокаТабличнойЧасти.Сотрудник = Выборка.Сотрудник;
Пока Выборка.Следующий() Цикл
Если Выборка.ВидВремени = NULL Тогда

Если КоличествоЗаписей < 7 Тогда

ЭлементСпискаКолонок = КолонкиСводногоТабеля.Найти(КлассификаторЯвка, "ВидВремени");
Если ЭлементСпискаКолонок = Неопределено Тогда
Если КолонкиСводногоТабеля.Количество() > 5 Тогда
СписокСотрудниковСНехваткойВидовВремени.Вставить(Выборка.Сотрудник,
"" + СписокСотрудниковСНехваткойВидовВремени.Получить(Выборка.Сотрудник) + ", " + КлассификаторЯвка);
ИндексКолонки = -1;
Иначе
КолонкиСводногоТабеля.Добавить().ВидВремени = КлассификаторЯвка;
СписокДобавленныхКолонок.Вставить(КлассификаторЯвка, "");
ИндексКолонки = КолонкиСводногоТабеля.Количество();
КонецЕсли;
Иначе
ИндексКолонки = КолонкиСводногоТабеля.Индекс(ЭлементСпискаКолонок) + 1;
КонецЕсли;

Если ИндексКолонки > -1 Тогда
СтрокаТабличнойЧасти["ВидВремени" + Строка(ИндексКолонки)] = КлассификаторЯвка;
СтрокаТабличнойЧасти["Дней" + Строка(ИндексКолонки)] = Выборка.Дней;
СтрокаТабличнойЧасти["Часов" + Строка(ИндексКолонки)] = Выборка.Часов;
КоличествоЗаписей = КоличествоЗаписей + 1;
КонецЕсли;
КонецЕсли;

Если КоличествоЗаписей < 7 И Выборка.ЧасовВечерних > 0 Тогда

ЭлементСпискаКолонок = КолонкиСводногоТабеля.Найти(КлассификаторВечерниеЧасы, "ВидВремени");
Если ЭлементСпискаКолонок = Неопределено Тогда
Если КолонкиСводногоТабеля.Количество() > 5 Тогда
СписокСотрудниковСНехваткойВидовВремени.Вставить(Выборка.Сотрудник,
"" + СписокСотрудниковСНехваткойВидовВремени.Получить(Выборка.Сотрудник) + ", " + КлассификаторВечерниеЧасы);
ИндексКолонки = -1;
Иначе
КолонкиСводногоТабеля.Добавить().ВидВремени = КлассификаторВечерниеЧасы;
СписокДобавленныхКолонок.Вставить(КлассификаторВечерниеЧасы, "");
ИндексКолонки = КолонкиСводногоТабеля.Количество();
КонецЕсли;
Иначе
ИндексКолонки = КолонкиСводногоТабеля.Индекс(ЭлементСпискаКолонок) + 1;
КонецЕсли;

Если ИндексКолонки > -1 Тогда
СтрокаТабличнойЧасти["ВидВремени"+Строка(ИндексКолонки)] = КлассификаторВечерниеЧасы;
СтрокаТабличнойЧасти["Часов" + Строка(ИндексКолонки)] = Выборка.ЧасовВечерних;
КоличествоЗаписей = КоличествоЗаписей + 1;
КонецЕсли;
КонецЕсли;

Если КоличествоЗаписей < 7 И Выборка.ЧасовНочных > 0 Тогда

ЭлементСпискаКолонок = КолонкиСводногоТабеля.Найти(КлассификаторНочныеЧасы, "ВидВремени");
Если ЭлементСпискаКолонок = Неопределено Тогда
Если КолонкиСводногоТабеля.Количество() > 5 Тогда
СписокСотрудниковСНехваткойВидовВремени.Вставить(Выборка.Сотрудник,
"" + СписокСотрудниковСНехваткойВидовВремени.Получить(Выборка.Сотрудник) + ", " + КлассификаторНочныеЧасы);
ИндексКолонки = -1;
Иначе
КолонкиСводногоТабеля.Добавить().ВидВремени = КлассификаторНочныеЧасы;
СписокДобавленныхКолонок.Вставить(КлассификаторНочныеЧасы, "");
ИндексКолонки = КолонкиСводногоТабеля.Количество();
КонецЕсли;
Иначе
ИндексКолонки = КолонкиСводногоТабеля.Индекс(ЭлементСпискаКолонок) + 1;
КонецЕсли;

Если ИндексКолонки > -1 Тогда
СтрокаТабличнойЧасти["ВидВремени"+Строка(ИндексКолонки)] = КлассификаторНочныеЧасы;
СтрокаТабличнойЧасти["Часов" + Строка(ИндексКолонки)] = Выборка.ЧасовНочных;
КоличествоЗаписей = КоличествоЗаписей + 1;
КонецЕсли;
КонецЕсли;
Иначе
Если КоличествоЗаписей < 7 Тогда

ЭлементСпискаКолонок = КолонкиСводногоТабеля.Найти(Выборка.ВидВремени, "ВидВремени");
Если ЭлементСпискаКолонок = Неопределено Тогда
Если КолонкиСводногоТабеля.Количество() > 5 Тогда
СписокСотрудниковСНехваткойВидовВремени.Вставить(Выборка.Сотрудник,
"" + СписокСотрудниковСНехваткойВидовВремени.Получить(Выборка.Сотрудник) + ", " + Выборка.ВидВремени);
ИндексКолонки = -1;
Иначе
КолонкиСводногоТабеля.Добавить().ВидВремени = Выборка.ВидВремени;
СписокДобавленныхКолонок.Вставить(Выборка.ВидВремени, "");
ИндексКолонки = КолонкиСводногоТабеля.Количество();
КонецЕсли;
Иначе
ИндексКолонки = КолонкиСводногоТабеля.Индекс(ЭлементСпискаКолонок) + 1;
КонецЕсли;

Если ИндексКолонки > -1 Тогда
СтрокаТабличнойЧасти["ВидВремени"+Строка(ИндексКолонки)] = Выборка.ВидВремени;
СтрокаТабличнойЧасти["Дней" + Строка(ИндексКолонки)] = Выборка.Дней;
СтрокаТабличнойЧасти["Часов" + Строка(ИндексКолонки)] = Выборка.Часов;
КоличествоЗаписей = КоличествоЗаписей + 1;
КонецЕсли;
КонецЕсли;


Если КоличествоЗаписей < 7 И Выборка.ЧасовВечерних > 0 Тогда

ЭлементСпискаКолонок = КолонкиСводногоТабеля.Найти(КлассификаторВечерниеЧасы, "ВидВремени");
Если ЭлементСпискаКолонок = Неопределено Тогда
Если КолонкиСводногоТабеля.Количество() > 5 Тогда
СписокСотрудниковСНехваткойВидовВремени.Вставить(Выборка.Сотрудник,
"" + СписокСотрудниковСНехваткойВидовВремени.Получить(Выборка.Сотрудник) + ", " + КлассификаторВечерниеЧасы);
ИндексКолонки = -1;
Иначе
КолонкиСводногоТабеля.Добавить().ВидВремени = КлассификаторВечерниеЧасы;
СписокДобавленныхКолонок.Вставить(КлассификаторВечерниеЧасы, "");
ИндексКолонки = КолонкиСводногоТабеля.Количество();
КонецЕсли;
Иначе
ИндексКолонки = КолонкиСводногоТабеля.Индекс(ЭлементСпискаКолонок) + 1;
КонецЕсли;

Если ИндексКолонки > -1 Тогда
СтрокаТабличнойЧасти["ВидВремени"+Строка(ИндексКолонки)] = КлассификаторВечерниеЧасы;
СтрокаТабличнойЧасти["Часов" + Строка(ИндексКолонки)] = СтрокаТабличнойЧасти["Часов" + Строка(ИндексКолонки)] + Выборка.ЧасовВечерних;
КоличествоЗаписей = КоличествоЗаписей + 1;
КонецЕсли;
КонецЕсли;

Если КоличествоЗаписей < 7 И Выборка.ЧасовНочных > 0 Тогда

ЭлементСпискаКолонок = КолонкиСводногоТабеля.Найти(КлассификаторНочныеЧасы, "ВидВремени");
Если ЭлементСпискаКолонок = Неопределено Тогда
Если КолонкиСводногоТабеля.Количество() > 5 Тогда
СписокСотрудниковСНехваткойВидовВремени.Вставить(Выборка.Сотрудник,
"" + СписокСотрудниковСНехваткойВидовВремени.Получить(Выборка.Сотрудник) + ", " + КлассификаторНочныеЧасы);
ИндексКолонки = -1;
Иначе
КолонкиСводногоТабеля.Добавить().ВидВремени = КлассификаторНочныеЧасы;
СписокДобавленныхКолонок.Вставить(КлассификаторНочныеЧасы, "");
ИндексКолонки = КолонкиСводногоТабеля.Количество();
КонецЕсли;
Иначе
ИндексКолонки = КолонкиСводногоТабеля.Индекс(ЭлементСпискаКолонок) + 1;
КонецЕсли;

Если ИндексКолонки > -1 Тогда
СтрокаТабличнойЧасти["ВидВремени"+Строка(ИндексКолонки)] = КлассификаторНочныеЧасы;
СтрокаТабличнойЧасти["Часов" + Строка(ИндексКолонки)] = СтрокаТабличнойЧасти["Часов" + Строка(ИндексКолонки)] + Выборка.ЧасовНочных;
КоличествоЗаписей = КоличествоЗаписей + 1;
КонецЕсли;
КонецЕсли;


КонецЕсли;
КонецЦикла;
КонецЦикла;


КоличествоДобавленныхКолонок = СписокДобавленныхКолонок.Количество();
Если КоличествоДобавленныхКолонок > 0 Тогда

УпорядочитьКолонкиСводногоТабеля();

#Если Клиент Тогда
СтрокаСообщения = "В табличную часть " +
?(КоличествоДобавленныхКолонок = 1,"добавлена колонка с видом времени: ", "добавлены колонки с видами времени: ");

СтрокаТекущегоУровняСообщений = ОбработкаКомментариев.ДобавитьСообщение(СтрокаСообщения, Перечисления.ВидыСообщений.ВажнаяИнформация, ,СтрокаВерхнегоУровняСообщений );

Для Каждого ЭлементСписка Из СписокДобавленныхКолонок Цикл
ОбработкаКомментариев.ДобавитьСообщение(ЭлементСписка.Ключ, Перечисления.ВидыСообщений.ПустаяСсылка(), , СтрокаТекущегоУровняСообщений);
КонецЦикла;

#КонецЕсли

КонецЕсли;

КоличествоСотрудниковВСпискеНехваткиВидовВремени = СписокСотрудниковСНехваткойВидовВремени.Количество();
Если КоличествоСотрудниковВСпискеНехваткиВидовВремени > 0 Тогда

#Если Клиент Тогда
СтрокаТекущегоУровняСообщений = ОбработкаКомментариев.ДобавитьСообщение("Указанным сотрудникам выведены не все виды времени:", Перечисления.ВидыСообщений.ВажнаяИнформация,,СтрокаВерхнегоУровняСообщений );
#Иначе
#КонецЕсли

КоличествоВыведенныхСотрудников = 0;
Для Каждого ЭлементСписка Из СписокСотрудниковСНехваткойВидовВремени Цикл
СтрокаСотрудника = "" + ЭлементСписка.Ключ + " (" + Сред(ЭлементСписка.Значение, 3) + ")";
#Если Клиент Тогда
ОбработкаКомментариев.ДобавитьСообщение(СтрокаСотрудника, Перечисления.ВидыСообщений.ПустаяСсылка(),, СтрокаТекущегоУровняСообщений);
#Иначе
#КонецЕсли
КоличествоВыведенныхСотрудников = КоличествоВыведенныхСотрудников + 1;
Если КоличествоВыведенныхСотрудников > 4 И КоличествоСотрудниковВСпискеНехваткиВидовВремени > 5 Тогда
#Если Клиент Тогда
ОбработкаКомментариев.ДобавитьСообщение(" и другие.", Перечисления.ВидыСообщений.ПустаяСсылка(),, СтрокаТекущегоУровняСообщений);
#Иначе
#КонецЕсли
Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецЕсли;

Выборка = ТабельУчетаРабочегоВремениОрганизацииПереопределяемый.СформироватьЗапросПоНезаполненнымСотрудникам(ЗапросАвтоЗаполнения).Выбрать();
Если Выборка.Количество() > 0 Тогда

КоличествоВыведенныхДокументов = 0;
#Если Клиент Тогда
СтрокаТекущегоУровняСообщений = ОбработкаКомментариев.ДобавитьСообщение("На следующих сотрудников уже введены документы учета отработанного времени в этом периоде:", Перечисления.ВидыСообщений.ВажнаяИнформация, ,СтрокаВерхнегоУровняСообщений );
#Иначе
#КонецЕсли
Пока Выборка.СледующийПоЗначениюПоля("Сотрудник") Цикл

Если КоличествоВыведенныхДокументов >= 4 Тогда
#Если Клиент Тогда
ОбработкаКомментариев.ДобавитьСообщение("и другие.", Перечисления.ВидыСообщений.ПустаяСсылка(),, СтрокаТекущегоУровняСообщений);
Прервать;
#Иначе
#КонецЕсли
КонецЕсли;

#Если Клиент Тогда
СтрокаУровняСотрудника = ОбработкаКомментариев.ДобавитьСообщение(Выборка.ПредставлениеСотрудника, Перечисления.ВидыСообщений.Информация,, СтрокаТекущегоУровняСообщений);
#Иначе
#КонецЕсли

Пока Выборка.Следующий() Цикл
Если КоличествоВыведенныхДокументов >= 4 Тогда
#Если Клиент Тогда
ОбработкаКомментариев.ДобавитьСообщение("и другие.", Перечисления.ВидыСообщений.ПустаяСсылка(),, СтрокаТекущегоУровняСообщений);
#Иначе
#КонецЕсли
Прервать;
КонецЕсли;
#Если Клиент Тогда
РасшифровкаКомментария = Новый Массив;

РасшифровкаКомментария.Добавить(Новый Структура("Представление, Расшифровка", Выборка.ПредставлениеДокумента, Выборка.ДокументОснование));
ОбработкаКомментариев.ДобавитьСообщение("", Перечисления.ВидыСообщений.ПустаяСсылка(), РасшифровкаКомментария, СтрокаУровняСотрудника);
#Иначе
#КонецЕсли
КоличествоВыведенныхДокументов = КоличествоВыведенныхДокументов + 1;

КонецЦикла;

КонецЦикла;

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

Если Выборка.Количество() > 0 Тогда
#Если Клиент Тогда
СтрокаТекущегоУровняСообщений = ОбработкаКомментариев.ДобавитьСообщение("Следующим сотрудникам введен сводный индивидуальный график и подневный табель по ним не может быть заполнен:", Перечисления.ВидыСообщений.ВажнаяИнформация, ,СтрокаВерхнегоУровняСообщений );
#Иначе
#КонецЕсли
КоличествоВыведенныхДокументов = 0;
Пока Выборка.СледующийПоЗначениюПоля("Регистратор") Цикл

Если КоличествоВыведенныхДокументов >= 4 Тогда
#Если Клиент Тогда
ОбработкаКомментариев.ДобавитьСообщение(" и другие.", Перечисления.ВидыСообщений.ПустаяСсылка(),, СтрокаТекущегоУровняСообщений);
#Иначе
#КонецЕсли
Прервать;
КонецЕсли;
#Если Клиент Тогда
РасшифровкаКомментария = Новый Массив;
РасшифровкаКомментария.Добавить(Новый Структура("Представление, Расшифровка", Выборка.ПредставлениеДокумента, Выборка.ВведенныйДокумент));
СтрокаУровняДокумента = ОбработкаКомментариев.ДобавитьСообщение("", Перечисления.ВидыСообщений.ПустаяСсылка(), РасшифровкаКомментария, СтрокаТекущегоУровняСообщений);
#Иначе
#КонецЕсли
Пока Выборка.Следующий() Цикл

Если КоличествоВыведенныхДокументов >= 4 Тогда
#Если Клиент Тогда
ОбработкаКомментариев.ДобавитьСообщение(" и другие.", Перечисления.ВидыСообщений.ПустаяСсылка(),, СтрокаУровняДокумента);
#Иначе
#КонецЕсли
Прервать;
КонецЕсли;
#Если Клиент Тогда
ОбработкаКомментариев.ДобавитьСообщение(Выборка.ПредставлениеСотрудника, Перечисления.ВидыСообщений.Информация,, СтрокаУровняДокумента);
#Иначе
#КонецЕсли
КонецЦикла;

КонецЦикла;

КонецЕсли;
КонецЕсли;
#Если Клиент Тогда
Если СтрокаТекущегоУровняСообщений <> "" Тогда
ОбработкаКомментариев.ПоказатьСообщения();
КонецЕсли;
#Иначе
#КонецЕсли
КонецФункции // Автозаполнение()
 
  Исправлено в релизе: 2.5.18  
  Код ошибки: 10037756  
  Дата публикации: 15.10.2009 16:25:26  
  Дата последнего изменения: 15.10.2009 0:00:00  
  Описание: При заполнении документов "Регистрация разовых начислений сотрудников организаций" и "Регистрация разовых удержаний сотрудников организаций" командой "Заполнить списком сотрудников", пропала возможность указать единое для всех начисление (удержание).  
  Исправлено в релизе: 2.5.18  
  Код ошибки: 10037835  
  Дата публикации: 15.10.2009 16:24:59  
  Дата последнего изменения: 15.10.2009 0:00:00  
  Описание: Если пользователю назначены роли "Кадровик регламентированных данных" и "Пользователь", при записи данных персонифицированного учета в форме "Подготовка данных СЗВ-4" выдается "мусорное" сообщение об ошибке, данные при этом сохраняются.  
  Исправлено в релизе: 2.5.18  
  Код ошибки: 10037415  
  Дата публикации: 15.10.2009 16:23:17  
  Дата последнего изменения: 15.10.2009 0:00:00  
  Описание: При заполнении документа "Ввод постоянного начисления или удержания организаций" командой "Заполнить списком сотрудников", в документ не попадают указанные в форме отбора сотрудников показатели начисления.  
  Исправлено в релизе: 2.5.18  
  Код ошибки: 10036185  
  Дата публикации: 15.10.2009 16:22:55  
  Дата последнего изменения: 15.10.2009 0:00:00  
  Описание: При использовании кассового метода учета управленческих затрат, в документе "Планируемые затраты на персонал" неверно определяется факт прошлого периода.  
  Код ошибки: 10037566  
  Дата публикации: 15.10.2009 16:21:54  
  Дата последнего изменения: 15.10.2009 0:00:00  
  Описание: При вводе документа "Увольнение" из списка сотрудников, не заполняется реквизит "Порядок расчета компенсации отпуска", из-за чего после указания даты увольнения не рассчитывается количество дней отпуска для компенсации/удержания.  
  Исправлено в релизе: 2.5.18  
  Код ошибки: 10037257  
  Дата публикации: 15.10.2009 16:21:26  
  Дата последнего изменения: 21.10.2009 0:00:00  
  Описание: В справке к документу "Отражение зарплаты в упр. учете" не отражена особенность распределения затрат кассовым методом  
  Исправлено в релизе: 2.5.18  
  Код ошибки: 10001662  
  Дата публикации: 05.08.2009 15:34:29  
  Дата последнего изменения: 05.08.2009 0:00:00  
  Описание: При сторнировании отпуска другими начислениями не изменяется фактическое количество дней отпуска для механизма остатков отпусков.  
  Исправлено в релизе: 2.5.19  
  Код ошибки: 10018214  
  Дата публикации: 07.04.2009 16:11:13  
  Дата последнего изменения: 07.04.2009 0:00:00  
  Описание: Если сотруднику ввести табель за первую половину месяца, то оплату по среднему заработку, которая положена сотруднику за дни из второй половины месяца, программа не считает, пока не ввести табель за этот период.  
  Исправлено в релизе: 2.5.21  
  Код ошибки: 10002714  
  Дата публикации: 26.09.2008 15:54:03  
  Дата последнего изменения: 26.09.2008 0:00:00  
  Описание: При обновлении с конфигурации с редакции 2.1. на 2.5 выдается сообщение об ошибке, когда в организации не поддерживается внутреннее совместительство и по физлицу, с которым заключен договор ГПХ на выполнение работ, зарегистрирован документ «Ввод процента деятельности ЕНВД».  
  Код ошибки: 10001643  
  Дата публикации: 05.08.2008 16:24:23  
  Дата последнего изменения: 05.08.2008 0:00:00  
  Описание: При отправке печатной формы документа по электронной почте в текст письма не попадают имеющиеся картинки.  
  Код ошибки: 10001302  
  Дата публикации: 29.07.2008 16:40:03  
  Дата последнего изменения: 29.07.2008 0:00:00  
  Описание: В отчете "Расчетная ведомость", построенном за несколько месяцев, в некоторых случаях неправильно отражаются итоги по показателям сальдо.  
  Код ошибки: 00103150  
  Дата публикации: 30.04.2008 16:04:59  
  Дата последнего изменения: 30.04.2008 0:00:00  
  Описание: Если в анкету, указанную в настройках программы как резюме кандидата, добавить вопросы из предопределенной группы вопросов о контактной информации физлица, то при создании физлица по ответам на такую анкету контактная информация из опроса не будет перенесена в данные физлица.  
  Код ошибки: 00094289  
  Дата публикации: 14.09.2007 10:02:29  
  Дата последнего изменения: 14.09.2007 0:00:00  
  Описание: В форме 2-НДФЛ работника, у которого по результатам перерасчета за прошлые налоговые периода был доудержан (зачтен) налог, не заполняются пп.5.6 или 5.7 раздела 5.  
  Код ошибки: 00076008  
  Дата публикации: 17.07.2007 16:03:29  
  Дата последнего изменения: 17.07.2007 0:00:00  
  Описание: Неверно исчисляются алименты с работника, отработавшего неполный рабочий месяц из-за прогулов.