Зарплата и кадры бюджетного учреждения. Версия 1.0.10.3. Информация об ошибках |
|||||
Код ошибки: | 10059147 | ||||
Дата публикации: | 14.07.2010 17:16:40 | ||||
Дата последнего изменения: | 14.07.2010 0:00:00 | ||||
Описание: | Распределение НДФЛ по источникам не учитывает источники финансирования премий. | ||||
Способ исправления: | В модуле набора записей регистра расчета БУДополнительныеНачисления, в процедуре СоздатьДвиженияПоНДФЛ, в тексте запроса заменить строку Начисления.ПериодРегистрации КАК ПериодРегистрации, на НАЧАЛОПЕРИОДА(Начисления.ПериодРегистрации, МЕСЯЦ) КАК ПериодРегистрации, |
||||
Способ обхода: | Устанавливать дату документа "премия" первым числом месяца расчетного периода. | ||||
Исправлено в релизе: | 1.0.15 | ||||
Код ошибки: | 10058022 | ||||
Дата публикации: | 01.07.2010 15:50:15 | ||||
Дата последнего изменения: | 01.07.2010 0:00:00 | ||||
Описание: | В документе "Начисления по больничным листам" при распределении по источникам не учитываются источники финансирования по внутреннему совместительству: при наличии внутреннего совместительства, при начислении по больничному листу вся сумма распределяется на источники финансирования по основному месту работы. | ||||
Исправлено в релизе: | 1.0.14 | ||||
Код ошибки: | 10055573 | ||||
Дата публикации: | 08.06.2010 15:20:42 | ||||
Дата последнего изменения: | 08.06.2010 0:00:00 | ||||
Описание: | В документе "Зарплата к выплате организаций", при выплате "Пособия по больничным листам", предварительный учет удержаний применяется и к оплате отпуска по беременности и родам. | ||||
Исправлено в релизе: | 1.0.14 | ||||
Код ошибки: | 10054868 | ||||
Дата публикации: | 04.06.2010 17:43:10 | ||||
Дата последнего изменения: | 04.06.2010 0:00:00 | ||||
Описание: | Отчет "Свод начисленной зарплаты" неправильно группирует дополнительные начисления по месяцам при включенном отборе по статье финансирования: при наличии дополнительных начислений с разными датами начала внутри одного месяца: происходит задвоение группировок по такому месяцу. | ||||
Исправлено в релизе: | 1.0.14 | ||||
Код ошибки: | 10055656 | ||||
Дата публикации: | 04.06.2010 17:40:51 | ||||
Дата последнего изменения: | 04.06.2010 0:00:00 | ||||
Описание: | В отчете "Табель рабочего времени" не отображаются часы отклонений, как требуется Инструкцией по бюджетному учету, а только их буквенные обозначения. | ||||
Код ошибки: | 10052870 | ||||
Дата публикации: | 04.06.2010 17:39:57 | ||||
Дата последнего изменения: | 04.06.2010 0:00:00 | ||||
Описание: | В документе "Отражение зарплаты в бухучете" при формировани отражения страховых взносов не учитываются скидки. | ||||
Исправлено в релизе: | 1.0.14 | ||||
Код ошибки: | 10052461 | ||||
Дата публикации: | 04.06.2010 17:38:50 | ||||
Дата последнего изменения: | 29.06.2010 0:00:00 | ||||
Описание: | При обмене с ББУ в бухгалтерию не передается информация о договоре ГПХ. | ||||
Планируется исправить в релизе: | 1.0.15 | ||||
Код ошибки: | 10055203 | ||||
Дата публикации: | 01.06.2010 17:12:25 | ||||
Дата последнего изменения: | 01.06.2010 0:00:00 | ||||
Описание: | В документе "Перенос задолженности сотрудников организаций" устарела справка. | ||||
Исправлено в релизе: | 1.0.14 | ||||
Код ошибки: | 10055099 | ||||
Дата публикации: | 01.06.2010 17:12:09 | ||||
Дата последнего изменения: | 01.06.2010 0:00:00 | ||||
Описание: | В документе "Регистрация разовых удержаний" не заполняется показатель ОВЗ в удержаниях. | ||||
Код ошибки: | 10054998 | ||||
Дата публикации: | 01.06.2010 17:11:29 | ||||
Дата последнего изменения: | 01.06.2010 0:00:00 | ||||
Описание: | Не рассчитываются начисления военнослужащего за период с даты освобождения должности по дату исключения из списков части. | ||||
Способ обхода: | В модуле документа ПриказОбИсключенииИзСписковЧасти в процедуре ДобавитьСтрокуВДвиженияПоРегистрамСведений в строках 759 и 808 заменить ВыборкаПоРаботникиОрганизации.ГрафикРаботыЗавершения на ВыборкаПоРаботникиОрганизации.ПрежнийГрафик |
||||
Исправлено в релизе: | 1.0.14 | ||||
Код ошибки: | 10051076 | ||||
Дата публикации: | 14.05.2010 15:27:26 | ||||
Дата последнего изменения: | 14.05.2010 0:00:00 | ||||
Описание: | В документе "Начисление зарплаты" отрицательный НДФЛ не распределяется по источникам финансирования в случае отсутствия удержанных налогов с начала года. | ||||
Исправлено в релизе: | 1.0.12 | ||||
Код ошибки: | 10050251 | ||||
Дата публикации: | 14.05.2010 15:24:45 | ||||
Дата последнего изменения: | 14.05.2010 0:00:00 | ||||
Описание: | В документе "Отражение зарплаты в бухучете" при печати в колонке "Операция" всегда проставляется КОСГУ дебетовой части проводки, а не КОСГУ назначения платежа (в соответствии с экономическим смыслом операции). | ||||
Исправлено в релизе: | 1.0.13 | ||||
Код ошибки: | 10049429 | ||||
Дата публикации: | 14.05.2010 15:24:28 | ||||
Дата последнего изменения: | 14.05.2010 0:00:00 | ||||
Описание: | В документе "Начисление по больничному листу" распределение начислений по источникам всегда производится по базовым начислениям, независимо от настройки вида расчета. | ||||
Исправлено в релизе: | 1.0.13 | ||||
Код ошибки: | 10052728 | ||||
Дата публикации: | 27.04.2010 16:37:20 | ||||
Дата последнего изменения: | 27.04.2010 0:00:00 | ||||
Описание: | В формах списка и выбора документов "Зарплата к выплате" не работает отбор по значению в текущей колонке для КОСГУ и статьи финансирования. | ||||
Исправлено в релизе: | 1.0.13 | ||||
Код ошибки: | 10052066 | ||||
Дата публикации: | 27.04.2010 16:36:58 | ||||
Дата последнего изменения: | 12.05.2010 0:00:00 | ||||
Описание: | При проведении документов "Премии" и "Начисление единовременных пособий за счет ФСС" по обособленному подразделению с выделенным балансом неправильно заполняются регистры накопления "Взаиморасчеты с сотрудниками" и "Зарплата за месяц организаций": движения проводизводятся по головной организации. В результате эти начисления не попадают в расчетные листки, расчетные ведомости и в расчет зарплаты к выплате по обособленному подразделению с выделенным балансом. |
||||
Исправлено в релизе: | 1.0.13 | ||||
Код ошибки: | 10052621 | ||||
Дата публикации: | 27.04.2010 16:34:09 | ||||
Дата последнего изменения: | 27.04.2010 0:00:00 | ||||
Описание: | При расчете НДФЛ не работает настройка учета вычетов "Стандартные вычеты применяются в пределах месячного дохода налогоплательщика". | ||||
Исправлено в релизе: | 1.0.13 | ||||
Код ошибки: | 10052157 | ||||
Дата публикации: | 20.04.2010 17:25:51 | ||||
Дата последнего изменения: | 20.04.2010 0:00:00 | ||||
Описание: | В документе "Регистрация разовых удержаний" при нажатии на кнопку "распределить по источникам" очищается распределение сторно-записей. | ||||
Исправлено в релизе: | 1.0.13 | ||||
Код ошибки: | 10052175 | ||||
Дата публикации: | 20.04.2010 17:25:37 | ||||
Дата последнего изменения: | 20.04.2010 0:00:00 | ||||
Описание: | В документе "Регистрация разовых удержаний" при попытке редактирования распределения по источникам возникает ошибка: {ОбщийМодуль.ОтражениеВУчетеКлиент(125)}: Ошибка при вызове метода контекста (НайтиСтроки): Несоответствие типов (параметр номер '1') СтрокиОтражения = ТЧпоИФ.НайтиСтроки(КлючРасчета); |
||||
Исправлено в релизе: | 1.0.13 | ||||
Код ошибки: | 10051736 | ||||
Дата публикации: | 20.04.2010 17:21:32 | ||||
Дата последнего изменения: | 20.04.2010 0:00:00 | ||||
Описание: | При распределении по источникам финансирования сторнированных начислений, вид дохода страховых взносов берется по текущему состоянию вида расчета. Правильное поведение: вид дохода должен быть таким, как у сторнируемого расчета. |
||||
Исправлено в релизе: | 1.0.13 | ||||
Код ошибки: | 10051412 | ||||
Дата публикации: | 19.04.2010 15:55:24 | ||||
Дата последнего изменения: | 19.04.2010 0:00:00 | ||||
Описание: | В печатной форме 0504403 не заполняется кассир, хотя в регистре сведений «Ответственные лица» он указан. | ||||
Исправлено в релизе: | 1.0.13 | ||||
Код ошибки: | 10051944 | ||||
Дата публикации: | 19.04.2010 15:55:02 | ||||
Дата последнего изменения: | 19.04.2010 0:00:00 | ||||
Описание: | В формах списка и выбора документа "Приходный кассовый ордер" присутствует лишняя колонка "Вид операции". | ||||
Исправлено в релизе: | 1.0.13 | ||||
Код ошибки: | 10051487 | ||||
Дата публикации: | 19.04.2010 15:54:26 | ||||
Дата последнего изменения: | 19.04.2010 0:00:00 | ||||
Описание: | Документ "Начисление зарплаты работникам" позволяет регистрировать единовременные пособия за счет ФСС, но при проведении документа не создает движений в регистрах "Расчеты по страховым взносам" и "Пособия социальному страхованию". В результате сумма в 4-ФСС неправильная. Ожидаемое поведение: для ввода таких пособий используется специализиваронный документ "Начисление единовременных пособий за счет ФСС". |
||||
Исправлено в релизе: | 1.0.13 | ||||
Код ошибки: | 10051948 | ||||
Дата публикации: | 19.04.2010 15:54:09 | ||||
Дата последнего изменения: | 19.04.2010 0:00:00 | ||||
Описание: | Регистр сведений "Шаблоны проводок" недоступен в интерфейсе. | ||||
Исправлено в релизе: | 1.0.13 | ||||
Код ошибки: | 10049657 | ||||
Дата публикации: | 19.04.2010 15:53:56 | ||||
Дата последнего изменения: | 19.04.2010 0:00:00 | ||||
Описание: | В некоторых случаях неверно регистрируется отражение в учете дополнительных начислений. В регистр "Отражение дополнительных начислений в бухучете сотрудников" всегда пишется 1 число месяца периода регистрации документа. Должна же писаться дата внутри месяца периода регистрации,зависящая от даты документа, с учетом дат приема и/или увольнения сотрудника. |
||||
Исправлено в релизе: | 1.0.13 | ||||
Код ошибки: | 10046577 | ||||
Дата публикации: | 13.04.2010 16:49:26 | ||||
Дата последнего изменения: | 13.04.2010 0:00:00 | ||||
Описание: | При заполнении начислений в кадровом перемещении не учитываются действующие плановые начисления. | ||||
Исправлено в релизе: | 1.0.13 | ||||
Код ошибки: | 10051158 | ||||
Дата публикации: | 09.04.2010 20:45:47 | ||||
Дата последнего изменения: | 09.04.2010 0:00:00 | ||||
Описание: | В документе "Регистрация разовых начислений" для частично облагаемых НДФЛ начислений с произвольной формулой расчета, например, материальной помощи, автоматически не проставляется код вычета 503 и не рассчитывается сумма вычета. | ||||
Исправлено в релизе: | 1.0.12 | ||||
Код ошибки: | 10050995 | ||||
Дата публикации: | 09.04.2010 20:42:59 | ||||
Дата последнего изменения: | 09.04.2010 0:00:00 | ||||
Описание: | Неправильная проводка при печати реестра депонированных сумм: кредит счета печатается 201.04 (касса), а должно быть 304.02 (депонент). | ||||
Исправлено в релизе: | 1.0.13 | ||||
Код ошибки: | 10050474 | ||||
Дата публикации: | 09.04.2010 20:04:03 | ||||
Дата последнего изменения: | 09.04.2010 0:00:00 | ||||
Описание: | В расчетных документах информирование об ошибках распределения по источникам ограничивается первой ошибочной строкой. Ожидается, что информационное сообщение об ошибках будет содержать информацию о всех строках документа, в которых есть проблемы |
||||
Исправлено в релизе: | 1.0.12 | ||||
Код ошибки: | 10046763 | ||||
Дата публикации: | 09.04.2010 20:03:42 | ||||
Дата последнего изменения: | 09.04.2010 0:00:00 | ||||
Описание: | Нет возможности отсторнировать документы по госслужащим: "Сохраняемое денежное содержание", "Расчет при увольнении госслужащего", "Начисление отпуска госслужащим". | ||||
Исправлено в релизе: | 1.0.12 | ||||
Код ошибки: | 10050119 | ||||
Дата публикации: | 29.03.2010 16:26:03 | ||||
Дата последнего изменения: | 29.03.2010 0:00:00 | ||||
Описание: | Документы "Оплата праздничных и выходных дней" и "Оплата сверхурочных часов" не учитывают данные по распределению основного заработка, введенные документом "Ежемесячные сведения о бухучете зарплаты". | ||||
Исправлено в релизе: | 1.0.12 | ||||
Код ошибки: | 10050018 | ||||
Дата публикации: | 29.03.2010 16:25:52 | ||||
Дата последнего изменения: | 29.03.2010 0:00:00 | ||||
Описание: | При заполнении начислений в кадровых документах неверно учитывается сведения о районном коэффициенте подразделения, обособленного подразделения и организации. | ||||
Исправлено в релизе: | 1.0.12 | ||||
Код ошибки: | 10046747 | ||||
Дата публикации: | 29.03.2010 16:25:36 | ||||
Дата последнего изменения: | 29.03.2010 0:00:00 | ||||
Описание: | В обработке "Анализ неявок" не удается ввести документы-начисления на основании документа "Отпуска организаций" с отпусками гос.служащих. | ||||
Исправлено в релизе: | 1.0.12 | ||||
Код ошибки: | 10046819 | ||||
Дата публикации: | 23.03.2010 17:13:12 | ||||
Дата последнего изменения: | 23.03.2010 0:00:00 | ||||
Описание: | Ведомость в кассу. При выводе срока оплаты не учитываются выходные дни. | ||||
Исправлено в релизе: | 1.0.12 | ||||
Код ошибки: | 10047676 | ||||
Дата публикации: | 19.03.2010 16:07:55 | ||||
Дата последнего изменения: | 19.03.2010 0:00:00 | ||||
Описание: | В документ "Ежемесячные сведения о бухучете зарплаты" не получается добавить военнослужащего, предлагается выбор только из числа сотрудников - гражданских лиц. | ||||
Исправлено в релизе: | 1.0.12 | ||||
Код ошибки: | 10048048 | ||||
Дата публикации: | 15.03.2010 19:05:48 | ||||
Дата последнего изменения: | 15.03.2010 0:00:00 | ||||
Описание: | Договор ГПХ проводит в бухучет плановых начислений только при наличии всех частей отражения (КОГСУ, статьи финансирования и статьи расходов.) Между тем, бухучет плановых начислений позволяет указывать не все три реквизита. Поэтому проверка на заполненность всех трех полей избыточна. |
||||
Исправлено в релизе: | 1.0.12 | ||||
Код ошибки: | 10049147 | ||||
Дата публикации: | 15.03.2010 18:52:56 | ||||
Дата последнего изменения: | 15.03.2010 0:00:00 | ||||
Описание: | При формировании проводок по страховым взносам не учитывается скидка к доходам. | ||||
Исправлено в релизе: | 1.0.12 | ||||
Код ошибки: | 10048162 | ||||
Дата публикации: | 15.03.2010 18:47:41 | ||||
Дата последнего изменения: | 15.03.2010 0:00:00 | ||||
Описание: | Зарплата к выплате: проблемы при повторной выплате с характером, требующим документа-основания: Выплачиваем по характеру выплаты, требующем документа-основания (напр, премии, разовые начисления), с предварительным учетом удержания. При повторной выплате по этому же документу в суммы к выплате попадут предварительно удержанные (отложенные) суммы. |
||||
Исправлено в релизе: | 1.0.12 | ||||
Код ошибки: | 10047439 | ||||
Дата публикации: | 15.03.2010 18:47:21 | ||||
Дата последнего изменения: | 15.03.2010 0:00:00 | ||||
Описание: | Добавлены виды операций по удержанию добровольных страховых взносов и по страховым взносам на дополнительное пенсионное обеспечение членов летных экипажей. | ||||
Исправлено в релизе: | 1.0.12 | ||||
Код ошибки: | 10046997 | ||||
Дата публикации: | 15.03.2010 18:46:48 | ||||
Дата последнего изменения: | 15.03.2010 0:00:00 | ||||
Описание: | Документ "Начисление отпуска", полученный копированием рассчитанного документа, после смены работника и проведения помещает в движения старого сотрудника. | ||||
Исправлено в релизе: | 1.0.12 | ||||
Код ошибки: | 10048029 | ||||
Дата публикации: | 15.03.2010 18:43:33 | ||||
Дата последнего изменения: | 15.03.2010 0:00:00 | ||||
Описание: | При автоматическом заполнении документа "Начисление страховых взносов" не рассчитывается скидка по материальной помощи. | ||||
Исправлено в релизе: | 1.0.12 | ||||
Код ошибки: | 10047861 | ||||
Дата публикации: | 15.03.2010 18:42:54 | ||||
Дата последнего изменения: | 15.03.2010 0:00:00 | ||||
Описание: | Материальная помощь с видом дохода "Облагается ЕСН, взносами в ПФР частично согласно пп. 15 п.1 ст. 238 НК РФ (материальная помощь)" в отчетах "Авансы по ЕСН" и "Декларация по ЕСН" попадает не только в строку 1100, предназначенную для этого вида дохода по ЕСН, но и в строки 1200 и 1300, в которые должны попадать другие данные по ст.2 и ст.3 гр.245. | ||||
Исправлено в релизе: | 1.0.12 | ||||
Код ошибки: | 10047270 | ||||
Дата публикации: | 15.03.2010 18:41:27 | ||||
Дата последнего изменения: | 15.03.2010 0:00:00 | ||||
Описание: | В документе "Начисление зарплаты" при смене операции не очищаются табличные части по источникам финансирования. | ||||
Исправлено в релизе: | 1.0.12 | ||||
Код ошибки: | 10044399 | ||||
Дата публикации: | 15.03.2010 18:41:13 | ||||
Дата последнего изменения: | 15.03.2010 0:00:00 | ||||
Описание: | Документ "Начисление зарплаты работникам" неправильно формирует доходы работника при наличии НДФЛ к зачету и отсутствии налога по статье: был НДФЛ к зачету по какой-то статье. В очередной расчет з/п этот НДФЛ зачтен быть не может ввиду отсутствия налога по статье. Но при формировании взаиморасчетов положенный к зачету налог считается зачитываемым и добавляется в доходы работника. |
||||
Исправлено в релизе: | 1.0.12 | ||||
Код ошибки: | 10048745 | ||||
Дата публикации: | 10.03.2010 17:00:25 | ||||
Дата последнего изменения: | 10.03.2010 0:00:00 | ||||
Описание: | В документе-исправлении больничного сторнированные начисления исправляемого документа распределяются так же, как и начисления самого документа. Если с момента расчета исправляемого документа произошли изменения, влияющие на отражение (в т.ч. в настройке среднего заработка), то распределение сторно-записей будет не таким, как в оригинале. |
||||
Исправлено в релизе: | 1.0.12 | ||||
Код ошибки: | 10048036 | ||||
Дата публикации: | 03.03.2010 20:42:02 | ||||
Дата последнего изменения: | 03.03.2010 0:00:00 | ||||
Описание: | При проведении документа "Начисление зарплаты" не регистрируются в учете по НДФЛ рассчитанные вычеты на детей и имущественные вычеты. | ||||
Способ исправления: | Заменить модуль документа НачислениеЗарплатыРаботникамОрганизаций следующим фрагментом: ////////////////////////////////////////////////////////////////////////////////// //// ПЕРЕМЕННЫЕ МОДУЛЯ // Хранит соответствие доходов и положенных по ним вычетов Перем мСоответствиеДоходовИВычетов; // Хранит информацию о видах расчета ПВР Дополнительные начисления Перем мИнформацияОВидахРасчетаДоп; //////////////////////////////////////////////////////////////////////////////// // ЭКСПОРТНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ #Если Клиент Тогда // Заполняет показатели // Функция ЗаполнитьПоказатели(ТекущийСотрудник, Источник) Экспорт Если ТекущийСотрудник = Неопределено Тогда Возврат Ложь; КонецЕсли; Если Начисления.Количество() = 0 И ДополнительныеНачисления.Количество() = 0 И Удержания.Количество() = 0 Тогда Возврат Ложь; КонецЕсли; ТЗНачисления = Начисления.Выгрузить(,"Сотрудник,ВидРасчета"); ТЗДопНачисления = ДополнительныеНачисления.Выгрузить(,"Сотрудник,ВидРасчета"); ТЗУдержания = Удержания.Выгрузить(,"ФизЛицо,ВидРасчета"); Запрос = Новый Запрос; Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц; Запрос.УстановитьПараметр("Начисления",ТЗНачисления); Запрос.УстановитьПараметр("ДопНачисления",ТЗДопНачисления); Запрос.УстановитьПараметр("Удержания",ТЗУдержания); Запрос.УстановитьПараметр("ПарамДата",НачалоМесяца(ПериодНачисленияДатаНачала)); Запрос.УстановитьПараметр("ПарамГоловнаяОрганизация",ОбщегоНазначения.ГоловнаяОрганизация(Организация)); // получим временную таблицу с сотрудниками и видами расчетов Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | Начисления.ВидРасчета КАК ВидРасчета, | Начисления.Сотрудник |ПОМЕСТИТЬ ВТНачисления |ИЗ | &Начисления КАК Начисления | |ИНДЕКСИРОВАТЬ ПО | ВидРасчета"; Запрос.Выполнить(); Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | Начисления.ВидРасчета КАК ВидРасчета, | Начисления.Сотрудник |ПОМЕСТИТЬ ВТДопНачисления |ИЗ | &ДопНачисления КАК Начисления | |ИНДЕКСИРОВАТЬ ПО | ВидРасчета"; Запрос.Выполнить(); Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | Удержания.ВидРасчета, | Удержания.ФизЛицо КАК ФизЛицо |ПОМЕСТИТЬ ВТУдержания |ИЗ | &Удержания КАК Удержания | |ИНДЕКСИРОВАТЬ ПО | ФизЛицо"; Запрос.Выполнить(); Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | СотрудникиОрганизаций.Ссылка КАК Сотрудник, | СотрудникиОрганизаций.ВидДоговора, | СотрудникиОрганизаций.Физлицо, | СотрудникиОрганизаций.ВидЗанятости КАК ВидЗанятости |ПОМЕСТИТЬ ВТСотрудники |ИЗ | Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций |ГДЕ | СотрудникиОрганизаций.Организация = &ПарамГоловнаяОрганизация | И СотрудникиОрганизаций.Физлицо В | (ВЫБРАТЬ | Удержания.ФизЛицо КАК ФизЛицо | ИЗ | ВТУдержания КАК Удержания) | И СотрудникиОрганизаций.ВидЗанятости <> ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.ВнутреннееСовместительство) | |ИНДЕКСИРОВАТЬ ПО | Сотрудник"; Запрос.Выполнить(); Запрос.Текст = "ВЫБРАТЬ | РаботникиОсновноеМесто.Сотрудник КАК Сотрудник, | СотрудникиОрганизаций.Физлицо КАК Физлицо, | СотрудникиОрганизаций.ВидЗанятости КАК ВидЗанятости |ПОМЕСТИТЬ ВТДанныеОРаботниках |ИЗ | РегистрСведений.РаботникиОрганизаций.СрезПоследних( | &ПарамДата, | Сотрудник В | (ВЫБРАТЬ | Сотрудники.Сотрудник | ИЗ | ВТСотрудники КАК Сотрудники)) КАК РаботникиОсновноеМесто | ЛЕВОЕ СОЕДИНЕНИЕ ВТСотрудники КАК СотрудникиОрганизаций | ПО РаботникиОсновноеМесто.Сотрудник = СотрудникиОрганизаций.Сотрудник |ГДЕ | ВЫБОР | КОГДА РаботникиОсновноеМесто.ПериодЗавершения <= &ПарамДата | И РаботникиОсновноеМесто.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | ТОГДА РаботникиОсновноеМесто.ПричинаИзмененияСостоянияЗавершения | ИНАЧЕ РаботникиОсновноеМесто.ПричинаИзмененияСостояния | КОНЕЦ <> ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение) | |ИНДЕКСИРОВАТЬ ПО | ВидЗанятости, | Физлицо"; Запрос.Выполнить(); Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | Показатели.Показатель КАК Показатель, | Показатели.Показатель.ВидПоказателя КАК ВидПоказателя, | Начисления.Сотрудник КАК Сотрудник |ИЗ | ВТНачисления КАК Начисления | ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовРасчета.ОсновныеНачисленияОрганизаций.Показатели КАК Показатели | ПО Начисления.ВидРасчета = Показатели.Ссылка | И ((НЕ Показатели.Показатель.Предопределенный)) | И (Показатели.Показатель.ВозможностьИзменения <> ЗНАЧЕНИЕ(Перечисление.ИзменениеПоказателейСхемМотивации.НеИзменяется)) | И (Показатели.Показатель.ВозможностьИзменения <> ЗНАЧЕНИЕ(Перечисление.ИзменениеПоказателейСхемМотивации.ПустаяСсылка)) | И (Показатели.Показатель.ТипПоказателя <> ЗНАЧЕНИЕ(Перечисление.ТипыПоказателейСхемМотивации.ОценочнаяШкалаЧисловая)) | И (Показатели.Показатель.ТипПоказателя <> ЗНАЧЕНИЕ(Перечисление.ТипыПоказателейСхемМотивации.ОценочнаяШкалаПроцентная)) | И (Показатели.Показатель.ТипПоказателя <> ЗНАЧЕНИЕ(Перечисление.ТипыПоказателейСхемМотивации.ТарифныйРазряд)) |ГДЕ | Показатели.Показатель ЕСТЬ НЕ NULL | |ОБЪЕДИНИТЬ | |ВЫБРАТЬ РАЗЛИЧНЫЕ | Показатели.Показатель, | Показатели.Показатель.ВидПоказателя, | ДопНачисления.Сотрудник |ИЗ | ВТДопНачисления КАК ДопНачисления | ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовРасчета.ДополнительныеНачисленияОрганизаций.Показатели КАК Показатели | ПО ДопНачисления.ВидРасчета = Показатели.Ссылка | И ((НЕ Показатели.Показатель.Предопределенный)) | И (Показатели.Показатель.ВозможностьИзменения <> ЗНАЧЕНИЕ(Перечисление.ИзменениеПоказателейСхемМотивации.НеИзменяется)) | И (Показатели.Показатель.ВозможностьИзменения <> ЗНАЧЕНИЕ(Перечисление.ИзменениеПоказателейСхемМотивации.ПустаяСсылка)) | И (Показатели.Показатель.ТипПоказателя <> ЗНАЧЕНИЕ(Перечисление.ТипыПоказателейСхемМотивации.ОценочнаяШкалаЧисловая)) | И (Показатели.Показатель.ТипПоказателя <> ЗНАЧЕНИЕ(Перечисление.ТипыПоказателейСхемМотивации.ОценочнаяШкалаПроцентная)) | И (Показатели.Показатель.ТипПоказателя <> ЗНАЧЕНИЕ(Перечисление.ТипыПоказателейСхемМотивации.ТарифныйРазряд)) |ГДЕ | Показатели.Показатель ЕСТЬ НЕ NULL | |ОБЪЕДИНИТЬ | |ВЫБРАТЬ РАЗЛИЧНЫЕ | Показатели.Показатель, | Показатели.Показатель.ВидПоказателя, | Сотрудники.Сотрудник |ИЗ | ВТУдержания КАК Удержания | ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовРасчета.УдержанияОрганизаций.Показатели КАК Показатели | ПО Удержания.ВидРасчета = Показатели.Ссылка | И ((НЕ Показатели.Показатель.Предопределенный)) | И (Показатели.Показатель.ВозможностьИзменения <> ЗНАЧЕНИЕ(Перечисление.ИзменениеПоказателейСхемМотивации.НеИзменяется)) | И (Показатели.Показатель.ВозможностьИзменения <> ЗНАЧЕНИЕ(Перечисление.ИзменениеПоказателейСхемМотивации.ПустаяСсылка)) | И (Показатели.Показатель.ТипПоказателя <> ЗНАЧЕНИЕ(Перечисление.ТипыПоказателейСхемМотивации.ОценочнаяШкалаЧисловая)) | И (Показатели.Показатель.ТипПоказателя <> ЗНАЧЕНИЕ(Перечисление.ТипыПоказателейСхемМотивации.ОценочнаяШкалаПроцентная)) | И (Показатели.Показатель.ТипПоказателя <> ЗНАЧЕНИЕ(Перечисление.ТипыПоказателейСхемМотивации.ТарифныйРазряд)) | ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | СписокСотрудников.Сотрудник КАК Сотрудник, | СписокСотрудников.Физлицо КАК Физлицо | ИЗ | (ВЫБРАТЬ | МАКСИМУМ(РаботникиОсновноеМесто.Сотрудник) КАК Сотрудник, | РаботникиОсновноеМесто.Физлицо КАК Физлицо, | 1 КАК Приоритет | ИЗ | ВТДанныеОРаботниках КАК РаботникиОсновноеМесто | ГДЕ | РаботникиОсновноеМесто.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.ОсновноеМестоРаботы) | | СГРУППИРОВАТЬ ПО | РаботникиОсновноеМесто.Физлицо | | ОБЪЕДИНИТЬ | | ВЫБРАТЬ | МАКСИМУМ(РаботникиСовместительство.Сотрудник), | РаботникиСовместительство.Физлицо, | 2 | ИЗ | ВТДанныеОРаботниках КАК РаботникиСовместительство | ГДЕ | РаботникиСовместительство.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.Совместительство) | | СГРУППИРОВАТЬ ПО | РаботникиСовместительство.Физлицо | | ОБЪЕДИНИТЬ | | ВЫБРАТЬ | МАКСИМУМ(СотрудникиДУ.Сотрудник), | СотрудникиДУ.Физлицо, | ВЫБОР | КОГДА СотрудникиДУ.ВидДоговора = ЗНАЧЕНИЕ(Перечисление.ВидыДоговоровСФизЛицами.ТрудовойДоговор) | ТОГДА 4 | ИНАЧЕ 5 | КОНЕЦ | ИЗ | ВТСотрудники КАК СотрудникиДУ | | СГРУППИРОВАТЬ ПО | СотрудникиДУ.Физлицо, | ВЫБОР | КОГДА СотрудникиДУ.ВидДоговора = ЗНАЧЕНИЕ(Перечисление.ВидыДоговоровСФизЛицами.ТрудовойДоговор) | ТОГДА 4 | ИНАЧЕ 5 | КОНЕЦ) КАК СписокСотрудников | ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | СписокФизическихЛиц.Физлицо КАК Физлицо, | МИНИМУМ(СписокФизическихЛиц.Приоритет) КАК Приоритет | ИЗ | (ВЫБРАТЬ | РаботникиОсновноеМесто.Физлицо КАК Физлицо, | 1 КАК Приоритет | ИЗ | ВТДанныеОРаботниках КАК РаботникиОсновноеМесто | ГДЕ | РаботникиОсновноеМесто.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.ОсновноеМестоРаботы) | | ОБЪЕДИНИТЬ | | ВЫБРАТЬ | РаботникиСовместительство.Физлицо, | 2 | ИЗ | ВТДанныеОРаботниках КАК РаботникиСовместительство | ГДЕ | РаботникиСовместительство.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.Совместительство) | | ОБЪЕДИНИТЬ | | ВЫБРАТЬ | СотрудникиДУ.Физлицо, | ВЫБОР | КОГДА СотрудникиДУ.ВидДоговора = ЗНАЧЕНИЕ(Перечисление.ВидыДоговоровСФизЛицами.ТрудовойДоговор) | ТОГДА 4 | ИНАЧЕ 5 | КОНЕЦ | ИЗ | ВТСотрудники КАК СотрудникиДУ) КАК СписокФизическихЛиц | | СГРУППИРОВАТЬ ПО | СписокФизическихЛиц.Физлицо) КАК СписокФизическихЛиц | ПО СписокСотрудников.Физлицо = СписокФизическихЛиц.Физлицо | И СписокСотрудников.Приоритет = СписокФизическихЛиц.Приоритет) КАК Сотрудники | ПО Удержания.ФизЛицо = Сотрудники.Физлицо |ГДЕ | Показатели.Показатель ЕСТЬ НЕ NULL | И Сотрудники.Сотрудник ЕСТЬ НЕ NULL "; Результат = Запрос.Выполнить(); Если Результат.Пустой() Тогда Возврат Ложь; Иначе ТаблицаЗапроса = Результат.Выгрузить(); Показатели = ТаблицаЗапроса.ВыгрузитьКолонку("Показатель"); Сотрудники = ТаблицаЗапроса.ВыгрузитьКолонку("Сотрудник"); ФормаВводаПоказателей = РегистрыСведений.ЗначенияПоказателейСхемМотивации.ПолучитьФорму("ФормаВводаЗначенийПоказателей"); ФормаВводаПоказателей.Организация = Организация; ФормаВводаПоказателей.ПериодДействия = НачалоМесяца(ПериодНачисленияДатаНачала); ФормаВводаПоказателей.мИсточник = Источник; ФормаВводаПоказателей.ФормаАвтозаполнение(ТаблицаЗапроса, Сотрудники, Показатели); ФормаВводаПоказателей.мСотрудникДляОткрытия = ТекущийСотрудник; ФормаВводаПоказателей.Открыть(); Возврат Истина; КонецЕсли; КонецФункции //ЗаполнитьПоказатели // Функция заполняет табличный документ "РасчетныйЛисток" // // Параметры: // ФизЛицо - элемент справочника "ФизическиеЛица" // // Возвращаемое значение: // Табличный документ с заполненным расчетным листком // Функция ЗаполнитьТаблицуРасчетногоЛистка(ФизЛицо) Экспорт ЗапросРЛ = Новый Запрос; ЗапросРЛ.УстановитьПараметр("ПериодРегистрации", ПериодРегистрации); ЗапросРЛ.УстановитьПараметр("КонецПериодаРегистрации", КонецМесяца(ПериодРегистрации)); ЗапросРЛ.УстановитьПараметр("Расход", ВидДвиженияНакопления.Расход); ЗапросРЛ.УстановитьПараметр("Организация", Организация); ЗапросРЛ.УстановитьПараметр("ГоловнаяОрганизация", ОбщегоНазначения.ГоловнаяОрганизация(Организация)); ЗапросРЛ.УстановитьПараметр("Работник", ФизЛицо); ЗапросРЛ.УстановитьПараметр("Ссылка", Ссылка); Авансы = Новый Массив; Авансы.Добавить(Перечисления.ХарактерВыплатыЗарплаты.АвансЗаПервуюПоловинуМесяца); Авансы.Добавить(Перечисления.ХарактерВыплатыЗарплаты.ПлановыйАванс); ЗапросРЛ.УстановитьПараметр("Аванс", Авансы); //из запроса исключаем данные по регистратору - этот документ, если документ проведен и модифицирован ИсключитьДанныеПоРегистратору = Проведен И Модифицированность() И ПериодНачисления <> Перечисления.ПериодНачисленияЗарплаты.ПерваяПоловинаТекущегоМесяца; ЗапросРЛ.УстановитьПараметр("ПоВсемРегистраторам", Не ИсключитьДанныеПоРегистратору); //добавляем данные в расчетный листок из документа, если он не проведен или проведен и модифицирован ДобавитьДанныеИзДокумента = Модифицированность() Или Не Проведен Или ПериодНачисления = Перечисления.ПериодНачисленияЗарплаты.ПерваяПоловинаТекущегоМесяца; Если ДобавитьДанныеИзДокумента И ПериодНачисления = Перечисления.ПериодНачисленияЗарплаты.ПерваяПоловинаТекущегоМесяца Тогда Запрос = Новый Запрос; Запрос.УстановитьПараметр("Работник",ФизЛицо); Запрос.УстановитьПараметр("Организация",Организация); Запрос.УстановитьПараметр("ПериодРегистрации",ПериодРегистрации); Запрос.Текст = "ВЫБРАТЬ | НачислениеЗарплатыРаботникамОрганизацийНачисления.Ссылка |ИЗ | Документ.НачислениеЗарплатыРаботникамОрганизаций.Начисления КАК НачислениеЗарплатыРаботникамОрганизацийНачисления |ГДЕ | НачислениеЗарплатыРаботникамОрганизацийНачисления.Физлицо = &Работник | И НачислениеЗарплатыРаботникамОрганизацийНачисления.Ссылка.ПериодРегистрации = &ПериодРегистрации | И НачислениеЗарплатыРаботникамОрганизацийНачисления.Ссылка.ПериодНачисления = ЗНАЧЕНИЕ(Перечисление.ПериодНачисленияЗарплаты.ТекущийМесяц) | И НачислениеЗарплатыРаботникамОрганизацийНачисления.Ссылка.Проведен | И НачислениеЗарплатыРаботникамОрганизацийНачисления.Ссылка.Организация = &Организация"; ДобавитьДанныеИзДокумента = Запрос.Выполнить().Пустой(); КонецЕсли; ТекстЗапроса = "ВЫБРАТЬ | НачисленияУдержания.ВидДвижения КАК ВидДвижения, | НачисленияУдержания.НомерСтроки КАК НомерСтроки, | НачисленияУдержания.Сотрудник КАК Сотрудник, | НачисленияУдержания.ВидРасчета КАК ВидРасчета, | НачисленияУдержания.ПорядокВидаРасчета КАК ПорядокВидаРасчета, | НачисленияУдержания.ПериодДействияНачало КАК ПериодДействияНачало, | НачисленияУдержания.ПериодДействияКонец КАК ПериодДействияКонец, | НачисленияУдержания.ОтработаноДней КАК ОтработаноДней, | НачисленияУдержания.ОтработаноЧасов КАК ОтработаноЧасов, | НачисленияУдержания.ОплаченоДней КАК ОплаченоДней, | НачисленияУдержания.ОплаченоЧасов КАК ОплаченоЧасов, | НачисленияУдержания.Начисления КАК Начисления, | НачисленияУдержания.Удержания КАК Удержания, | Сальдо.СуммаВзаиморасчетовНачальныйОстаток КАК СуммаВзаиморасчетовНачальныйОстаток, | Сальдо.СуммаВзаиморасчетовКонечныйОстаток КАК СуммаВзаиморасчетовКонечныйОстаток, | НачисленияУдержания.Регистратор, | ПРЕДСТАВЛЕНИЕ(НачисленияУдержания.Регистратор) КАК ОписаниеРегистратора |ИЗ | (ВЫБРАТЬ | ВЫБОР | КОГДА ОсновныеНачисленияРаботниковОрганизации.ВидРасчета.ЯвляетсяДоходомВНатуральнойФорме | ТОГДА 6 | ИНАЧЕ 1 | КОНЕЦ КАК ВидДвижения, | ОсновныеНачисленияРаботниковОрганизации.Регистратор КАК Регистратор, | ОсновныеНачисленияРаботниковОрганизации.ОбособленноеПодразделение КАК Организация, | ОсновныеНачисленияРаботниковОрганизации.ПериодРегистрации КАК ПериодРегистрации, | ОсновныеНачисленияРаботниковОрганизации.ФизЛицо КАК ФизЛицо, | ОсновныеНачисленияРаботниковОрганизации.Сотрудник КАК Сотрудник, | ОсновныеНачисленияРаботниковОрганизации.ВидРасчета.Наименование + ВЫБОР | КОГДА ЕСТЬNULL(ОсновныеНачисленияРаботниковОрганизации.Сотрудник.ВидЗанятости, ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.ПустаяСсылка)) = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.ВнутреннееСовместительство) | И ОсновныеНачисленияРаботниковОрганизации.Сотрудник.ВидДоговора = ЗНАЧЕНИЕ(Перечисление.ВидыДоговоровСФизЛицами.ТрудовойДоговор) | ТОГДА "" (по внутр. совмест-ву)"" | ИНАЧЕ """" | КОНЕЦ КАК ВидРасчета, | ""А"" + ОсновныеНачисленияРаботниковОрганизации.ВидРасчета.Код КАК ПорядокВидаРасчета, | ОсновныеНачисленияРаботниковОрганизации.НомерСтроки КАК НомерСтроки, | ОсновныеНачисленияРаботниковОрганизации.ПериодДействияНачало КАК ПериодДействияНачало, | ОсновныеНачисленияРаботниковОрганизации.ПериодДействияКонец КАК ПериодДействияКонец, | ОсновныеНачисленияРаботниковОрганизации.ОтработаноДней КАК ОтработаноДней, | ОсновныеНачисленияРаботниковОрганизации.ОтработаноЧасов КАК ОтработаноЧасов, | ВЫБОР | КОГДА ОсновныеНачисленияРаботниковОрганизации.ВидУчетаВремени = ЗНАЧЕНИЕ(Перечисление.ВидыУчетаВремени.ПоДням) | ТОГДА ОсновныеНачисленияРаботниковОрганизации.ОплаченоДнейЧасов | ИНАЧЕ 0 | КОНЕЦ КАК ОплаченоДней, | ВЫБОР | КОГДА ОсновныеНачисленияРаботниковОрганизации.ВидУчетаВремени <> ЗНАЧЕНИЕ(Перечисление.ВидыУчетаВремени.ПоДням) | ТОГДА ОсновныеНачисленияРаботниковОрганизации.ОплаченоДнейЧасов | ИНАЧЕ 0 | КОНЕЦ КАК ОплаченоЧасов, | ОсновныеНачисленияРаботниковОрганизации.Результат КАК Начисления, | 0 КАК Удержания | ИЗ | РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций КАК ОсновныеНачисленияРаботниковОрганизации | ГДЕ | ОсновныеНачисленияРаботниковОрганизации.ПериодРегистрации МЕЖДУ &ПериодРегистрации И &КонецПериодаРегистрации | И ОсновныеНачисленияРаботниковОрганизации.ОбособленноеПодразделение = &Организация | И ОсновныеНачисленияРаботниковОрганизации.ФизЛицо = &Работник | И (&ПоВсемРегистраторам | ИЛИ ОсновныеНачисленияРаботниковОрганизации.Регистратор <> &Ссылка) | | ОБЪЕДИНИТЬ ВСЕ | | ВЫБРАТЬ | ВЫБОР | КОГДА ДополнительныеНачисленияРаботниковОрганизации.ВидРасчета.ЯвляетсяДоходомВНатуральнойФорме | ТОГДА 7 | ИНАЧЕ 2 | КОНЕЦ, | ДополнительныеНачисленияРаботниковОрганизации.Регистратор, | ДополнительныеНачисленияРаботниковОрганизации.ОбособленноеПодразделение, | НАЧАЛОПЕРИОДА(ДополнительныеНачисленияРаботниковОрганизации.ПериодРегистрации, МЕСЯЦ), | ДополнительныеНачисленияРаботниковОрганизации.ФизЛицо, | ДополнительныеНачисленияРаботниковОрганизации.Сотрудник, | ДополнительныеНачисленияРаботниковОрганизации.ВидРасчета.Наименование + ВЫБОР | КОГДА ЕСТЬNULL(ДополнительныеНачисленияРаботниковОрганизации.Сотрудник.ВидЗанятости, ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.ПустаяСсылка)) = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.ВнутреннееСовместительство) | И ДополнительныеНачисленияРаботниковОрганизации.Сотрудник.ВидДоговора = ЗНАЧЕНИЕ(Перечисление.ВидыДоговоровСФизЛицами.ТрудовойДоговор) | ТОГДА "" (по внутр. совмест-ву)"" | ИНАЧЕ """" | КОНЕЦ, | ""Б"" + ДополнительныеНачисленияРаботниковОрганизации.ВидРасчета.Код, | NULL, | ДополнительныеНачисленияРаботниковОрганизации.ПериодРегистрации, | ДополнительныеНачисленияРаботниковОрганизации.ПериодРегистрации, | NULL, | NULL, | ВЫБОР | КОГДА ДополнительныеНачисленияРаботниковОрганизации.ВидУчетаВремени = ЗНАЧЕНИЕ(Перечисление.ВидыУчетаВремени.ПоДням) | ТОГДА ДополнительныеНачисленияРаботниковОрганизации.ОплаченоДнейЧасов | ИНАЧЕ 0 | КОНЕЦ, | ВЫБОР | КОГДА ДополнительныеНачисленияРаботниковОрганизации.ВидУчетаВремени <> ЗНАЧЕНИЕ(Перечисление.ВидыУчетаВремени.ПоДням) | ТОГДА ДополнительныеНачисленияРаботниковОрганизации.ОплаченоДнейЧасов | ИНАЧЕ 0 | КОНЕЦ, | ДополнительныеНачисленияРаботниковОрганизации.Результат, | 0 | ИЗ | РегистрРасчета.ДополнительныеНачисленияРаботниковОрганизаций КАК ДополнительныеНачисленияРаботниковОрганизации | ГДЕ | ДополнительныеНачисленияРаботниковОрганизации.ПериодРегистрации МЕЖДУ &ПериодРегистрации И &КонецПериодаРегистрации | И ДополнительныеНачисленияРаботниковОрганизации.ОбособленноеПодразделение = &Организация | И ДополнительныеНачисленияРаботниковОрганизации.ФизЛицо = &Работник | И (&ПоВсемРегистраторам | ИЛИ ДополнительныеНачисленияРаботниковОрганизации.Регистратор <> &Ссылка) | | ОБЪЕДИНИТЬ ВСЕ | | ВЫБРАТЬ | 4, | УдержанияРаботниковОрганизации.Регистратор, | УдержанияРаботниковОрганизации.ОбособленноеПодразделение, | УдержанияРаботниковОрганизации.ПериодРегистрации, | УдержанияРаботниковОрганизации.ФизЛицо, | NULL, | УдержанияРаботниковОрганизации.ВидРасчета.Наименование, | ""А"" + УдержанияРаботниковОрганизации.ВидРасчета.Код, | NULL, | УдержанияРаботниковОрганизации.БазовыйПериодНачало, | УдержанияРаботниковОрганизации.БазовыйПериодКонец, | NULL, | NULL, | NULL, | NULL, | 0, | УдержанияРаботниковОрганизации.Результат | ИЗ | РегистрРасчета.УдержанияРаботниковОрганизаций КАК УдержанияРаботниковОрганизации | ГДЕ | УдержанияРаботниковОрганизации.ПериодРегистрации МЕЖДУ &ПериодРегистрации И &КонецПериодаРегистрации | И УдержанияРаботниковОрганизации.ОбособленноеПодразделение = &Организация | И УдержанияРаботниковОрганизации.ФизЛицо = &Работник | И (&ПоВсемРегистраторам | ИЛИ УдержанияРаботниковОрганизации.Регистратор <> &Ссылка) | | ОБЪЕДИНИТЬ ВСЕ | | ВЫБРАТЬ | 3, | НДФЛРасчетыСБюджетом.Регистратор, | НДФЛРасчетыСБюджетом.ОбособленноеПодразделение, | НАЧАЛОПЕРИОДА(НДФЛРасчетыСБюджетом.Период, МЕСЯЦ), | НДФЛРасчетыСБюджетом.ФизЛицо, | NULL, | ""НДФЛ исчисленный "" + ВЫБОР | КОГДА НДФЛРасчетыСБюджетом.СтавкаНалогообложенияРезидента = ЗНАЧЕНИЕ(Перечисление.НДФЛСтавкиНалогообложенияРезидента.Ставка13) | ТОГДА ""по ставке 13(30)%"" | КОГДА НДФЛРасчетыСБюджетом.СтавкаНалогообложенияРезидента = ЗНАЧЕНИЕ(Перечисление.НДФЛСтавкиНалогообложенияРезидента.Ставка09) | ТОГДА ""по дивидендам"" | ИНАЧЕ ""по ставке 35%"" | КОНЕЦ, | ""Б"", | NULL, | НАЧАЛОПЕРИОДА(НДФЛРасчетыСБюджетом.МесяцНалоговогоПериода, МЕСЯЦ), | КОНЕЦПЕРИОДА(НДФЛРасчетыСБюджетом.МесяцНалоговогоПериода, МЕСЯЦ), | NULL, | NULL, | NULL, | NULL, | 0, | СУММА(НДФЛРасчетыСБюджетом.Налог) | ИЗ | РегистрНакопления.НДФЛРасчетыСБюджетом КАК НДФЛРасчетыСБюджетом | ГДЕ | НДФЛРасчетыСБюджетом.ВидСтроки = ЗНАЧЕНИЕ(Перечисление.НДФЛРасчетыСБюджетомВидСтроки.Начисление) | И НДФЛРасчетыСБюджетом.ИсчисленоИзЗарплаты | И НДФЛРасчетыСБюджетом.Период МЕЖДУ &ПериодРегистрации И &КонецПериодаРегистрации | И НДФЛРасчетыСБюджетом.ОбособленноеПодразделение = &Организация | И НДФЛРасчетыСБюджетом.ФизЛицо = &Работник | И (&ПоВсемРегистраторам | ИЛИ НДФЛРасчетыСБюджетом.Регистратор <> &Ссылка) | | СГРУППИРОВАТЬ ПО | НДФЛРасчетыСБюджетом.ОбособленноеПодразделение, | НДФЛРасчетыСБюджетом.СтавкаНалогообложенияРезидента, | НАЧАЛОПЕРИОДА(НДФЛРасчетыСБюджетом.Период, МЕСЯЦ), | НАЧАЛОПЕРИОДА(НДФЛРасчетыСБюджетом.МесяцНалоговогоПериода, МЕСЯЦ), | КОНЕЦПЕРИОДА(НДФЛРасчетыСБюджетом.МесяцНалоговогоПериода, МЕСЯЦ), | НДФЛРасчетыСБюджетом.ФизЛицо, | НДФЛРасчетыСБюджетом.Регистратор | | ОБЪЕДИНИТЬ ВСЕ | | ВЫБРАТЬ | 8, | Взаиморасчеты.Регистратор, | Взаиморасчеты.Организация, | НАЧАЛОПЕРИОДА(Взаиморасчеты.Период, МЕСЯЦ), | Взаиморасчеты.Физлицо, | NULL, | ВЫБОР | КОГДА Взаиморасчеты.СпособВыплаты = ЗНАЧЕНИЕ(Перечисление.СпособыВыплатыЗарплаты.ЧерезКассу) | ТОГДА ""Через кассу "" | КОГДА Взаиморасчеты.СпособВыплаты = ЗНАЧЕНИЕ(Перечисление.СпособыВыплатыЗарплаты.ЧерезБанк) | ТОГДА ""Перечислено в банк "" | ИНАЧЕ ""Способ выплаты не указан "" | КОНЕЦ + ВЫБОР | КОГДА Взаиморасчеты.ХарактерВыплаты В (&Аванс) | ТОГДА ""(аванс)"" | КОГДА Взаиморасчеты.ХарактерВыплаты = ЗНАЧЕНИЕ(Перечисление.ХарактерВыплатыЗарплаты.Зарплата) | ТОГДА ""(под расчет)"" | КОГДА Взаиморасчеты.ХарактерВыплаты = ЗНАЧЕНИЕ(Перечисление.ХарактерВыплатыЗарплаты.ПустаяСсылка) | И Взаиморасчеты.СуммаВзаиморасчетов > 0 | ТОГДА ""(не указано)"" | КОГДА Взаиморасчеты.ХарактерВыплаты = ЗНАЧЕНИЕ(Перечисление.ХарактерВыплатыЗарплаты.ПустаяСсылка) | И Взаиморасчеты.СуммаВзаиморасчетов < 0 | ТОГДА ""(погашено задолженности)"" | ИНАЧЕ ""(межрасчет)"" | КОНЕЦ, | ""Г"", | NULL, | НАЧАЛОПЕРИОДА(Взаиморасчеты.ПериодВзаиморасчетов, МЕСЯЦ), | КОНЕЦПЕРИОДА(Взаиморасчеты.ПериодВзаиморасчетов, МЕСЯЦ), | NULL, | NULL, | NULL, | NULL, | 0, | СУММА(Взаиморасчеты.СуммаВзаиморасчетов) | ИЗ | РегистрНакопления.ВзаиморасчетыСРаботникамиОрганизаций КАК Взаиморасчеты | ГДЕ | Взаиморасчеты.ВидДвижения = &Расход | И Взаиморасчеты.СуммаВзаиморасчетов <> 0 | И Взаиморасчеты.Период МЕЖДУ &ПериодРегистрации И &КонецПериодаРегистрации | И Взаиморасчеты.Организация = &Организация | И Взаиморасчеты.Физлицо = &Работник | И (&ПоВсемРегистраторам | ИЛИ Взаиморасчеты.Регистратор <> &Ссылка) | | СГРУППИРОВАТЬ ПО | Взаиморасчеты.Организация, | Взаиморасчеты.Физлицо, | ВЫБОР | КОГДА Взаиморасчеты.СпособВыплаты = ЗНАЧЕНИЕ(Перечисление.СпособыВыплатыЗарплаты.ЧерезКассу) | ТОГДА ""Через кассу "" | КОГДА Взаиморасчеты.СпособВыплаты = ЗНАЧЕНИЕ(Перечисление.СпособыВыплатыЗарплаты.ЧерезБанк) | ТОГДА ""Перечислено в банк "" | ИНАЧЕ ""Способ выплаты не указан "" | КОНЕЦ + ВЫБОР | КОГДА Взаиморасчеты.ХарактерВыплаты В (&Аванс) | ТОГДА ""(аванс)"" | КОГДА Взаиморасчеты.ХарактерВыплаты = ЗНАЧЕНИЕ(Перечисление.ХарактерВыплатыЗарплаты.Зарплата) | ТОГДА ""(под расчет)"" | КОГДА Взаиморасчеты.ХарактерВыплаты = ЗНАЧЕНИЕ(Перечисление.ХарактерВыплатыЗарплаты.ПустаяСсылка) | И Взаиморасчеты.СуммаВзаиморасчетов > 0 | ТОГДА ""(не указано)"" | КОГДА Взаиморасчеты.ХарактерВыплаты = ЗНАЧЕНИЕ(Перечисление.ХарактерВыплатыЗарплаты.ПустаяСсылка) | И Взаиморасчеты.СуммаВзаиморасчетов < 0 | ТОГДА ""(погашено задолженности)"" | ИНАЧЕ ""(межрасчет)"" | КОНЕЦ, | НАЧАЛОПЕРИОДА(Взаиморасчеты.Период, МЕСЯЦ), | НАЧАЛОПЕРИОДА(Взаиморасчеты.ПериодВзаиморасчетов, МЕСЯЦ), | КОНЕЦПЕРИОДА(Взаиморасчеты.ПериодВзаиморасчетов, МЕСЯЦ), | Взаиморасчеты.Регистратор) КАК НачисленияУдержания | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | СУММА(Сальдо.СуммаВзаиморасчетовНачальныйОстаток) КАК СуммаВзаиморасчетовНачальныйОстаток, | СУММА(Сальдо.СуммаВзаиморасчетовКонечныйОстаток) КАК СуммаВзаиморасчетовКонечныйОстаток | ИЗ | (ВЫБРАТЬ | ВзаиморасчетыСРаботникамиОрганизацииОстаткиИОбороты.СуммаВзаиморасчетовНачальныйОстаток КАК СуммаВзаиморасчетовНачальныйОстаток, | ВзаиморасчетыСРаботникамиОрганизацииОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток КАК СуммаВзаиморасчетовКонечныйОстаток | ИЗ | РегистрНакопления.ВзаиморасчетыСРаботникамиОрганизаций.ОстаткиИОбороты( | &ПериодРегистрации, | &КонецПериодаРегистрации, | Месяц, | , | Организация = &Организация | И ФизЛицо = &Работник) КАК ВзаиморасчетыСРаботникамиОрганизацииОстаткиИОбороты | | ОБЪЕДИНИТЬ ВСЕ | | ВЫБРАТЬ | НДФЛКЗачету.СуммаНДФЛКЗачетуНачальныйОстаток, | НДФЛКЗачету.СуммаНДФЛКЗачетуКонечныйОстаток | ИЗ | РегистрНакопления.НДФЛКЗачету.ОстаткиИОбороты( | &ПериодРегистрации, | &КонецПериодаРегистрации, | Месяц, | , | Организация = &Организация | И ФизЛицо = &Работник) КАК НДФЛКЗачету) КАК Сальдо) КАК Сальдо | ПО (ИСТИНА) | |УПОРЯДОЧИТЬ ПО | ВидДвижения, | ПорядокВидаРасчета, | ВидРасчета, | ПериодДействияНачало"; ЗапросРЛ.Текст = ТекстЗапроса; РезультатЗапроса = ЗапросРЛ.Выполнить(); Макет = ПолучитьМакет("РасчетныйЛисток"); ОбластьЗаголовокТЧ = Макет.ПолучитьОбласть("Заголовок"); ОбластьНачисленоУдержано = Макет.ПолучитьОбласть("НачисленоУдержано"); ОбластьНатурДоходыВыплаты = Макет.ПолучитьОбласть("НатурДоходыВыплаты"); ОбластьВсего = Макет.ПолучитьОбласть("Всего"); ОбластьНатуральныеДоходы = Макет.ПолучитьОбласть("НатуральныеДоходы"); ОбластьПодвал = Макет.ПолучитьОбласть("Подвал"); КолонкаНачислено = 2; КолонкаПериодНачислено = 3; КолонкаОтработаноДней = 5; КолонкаОтработаноЧасов = 6; КолонкаОплаченоДней = 7; КолонкаОплаченоЧасов = 8; КолонкаСуммаНачислено = 9; КолонкаУдержано = 11; КолонкаПериодУдержано = 14; КолонкаСуммаУдержано = 16; Линия = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная, 1); НеНайденыЗаписиВЗапросе = Истина; // В этот табличный документ будет собираться данные для РЛ ВременныйТабличныйДокумент = Новый ТабличныйДокумент; ФИОФизлица = Физлицо.Наименование; Если ДобавитьДанныеИзДокумента Тогда //к результату запроса необходимо добавить данные из табличных полей документа СтруктураПоиска = Новый Структура("ФизЛицо",ФизЛицо); ТаблицаРезультатовЗапроса = РезультатЗапроса.Выгрузить(); СуммаНаНачалоПериода = 0; СуммаНаКонецПериода = 0; Если ТаблицаРезультатовЗапроса.Количество()>0 Тогда СуммаНаНачалоПериода = ТаблицаРезультатовЗапроса[0].СуммаВзаиморасчетовНачальныйОстаток; Если НЕ ЗначениеЗаполнено(СуммаНаНачалоПериода) Тогда СуммаНаНачалоПериода = 0; КонецЕсли; СуммаНаКонецПериода = СуммаНаНачалоПериода; Иначе ТЗ = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | СУММА(Сальдо.СуммаВзаиморасчетовНачальныйОстаток) КАК СуммаВзаиморасчетовНачальныйОстаток, | СУММА(Сальдо.СуммаВзаиморасчетовКонечныйОстаток) КАК СуммаВзаиморасчетовКонечныйОстаток |ИЗ | (ВЫБРАТЬ | ВзаиморасчетыСРаботникамиОрганизацииОстаткиИОбороты.СуммаВзаиморасчетовНачальныйОстаток КАК СуммаВзаиморасчетовНачальныйОстаток, | ВзаиморасчетыСРаботникамиОрганизацииОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток КАК СуммаВзаиморасчетовКонечныйОстаток | ИЗ | РегистрНакопления.ВзаиморасчетыСРаботникамиОрганизаций.ОстаткиИОбороты( | &ПериодРегистрации, | &КонецПериодаРегистрации, | , | , | Организация = &Организация | И ФизЛицо = &Работник) КАК ВзаиморасчетыСРаботникамиОрганизацииОстаткиИОбороты | | ОБЪЕДИНИТЬ ВСЕ | | ВЫБРАТЬ | НДФЛКЗачету.СуммаНДФЛКЗачетуНачальныйОстаток, | НДФЛКЗачету.СуммаНДФЛКЗачетуКонечныйОстаток | ИЗ | РегистрНакопления.НДФЛКЗачету.ОстаткиИОбороты( | &ПериодРегистрации, | &КонецПериодаРегистрации, | , | , | Организация = &Организация | И ФизЛицо = &Работник) КАК НДФЛКЗачету) КАК Сальдо"; Запрос = Новый Запрос(ТЗ); Запрос.УстановитьПараметр("Работник", ФизЛицо); Запрос.УстановитьПараметр("Организация", Организация); Запрос.УстановитьПараметр("ПериодРегистрации", ПериодРегистрации); Запрос.УстановитьПараметр("КонецПериодаРегистрации", КонецМесяца(ПериодРегистрации)); РезультатЗапроса = Запрос.Выполнить(); Если НЕ РезультатЗапроса.Пустой() тогда Выборка = РезультатЗапроса.Выбрать(); Если Выборка.Следующий() тогда СуммаНаНачалоПериода = ?(Выборка.СуммаВзаиморасчетовНачальныйОстаток = NULL, 0, Выборка.СуммаВзаиморасчетовНачальныйОстаток); СуммаНаКонецПериода = ?(Выборка.СуммаВзаиморасчетовКонечныйОстаток = NULL, 0, Выборка.СуммаВзаиморасчетовКонечныйОстаток); СуммаНаКонецПериода = ?(Проведен, СуммаНаНачалоПериода, СуммаНаКонецПериода); Иначе СуммаНаНачалоПериода = 0; СуммаНаКонецПериода = 0; КонецЕсли; Иначе СуммаНаНачалоПериода = 0; СуммаНаКонецПериода = 0; КонецЕсли; КонецЕсли; ТекстПериода = Формат(ПериодРегистрации, "ДФ = 'ММММ гггг ''г.'''"); // Очистим временный табличный документ ВременныйТабличныйДокумент.Очистить(); ВременныйТабличныйДокумент.Вывести(ОбластьЗаголовокТЧ); ВременныйТабличныйДокумент.Вывести(ОбластьНачисленоУдержано); ВысотаТаблицы = ВременныйТабличныйДокумент.ВысотаТаблицы + 1; ВсегоНачисления = 0; КоличествоНачислений = 0; ВсегоУдержания = 0; КоличествоУдержаний = 0; ИтогиНачисленийИУдержанийВыведены = Ложь; Запрос = Новый Запрос(); Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц; Запрос.УстановитьПараметр("парамФизЛицо", Физлицо); ТекстЗапроса = "ВЫБРАТЬ | ОсновныеНачисления.Сотрудник, | ОсновныеНачисления.ВидРасчета, | ОсновныеНачисления.ДатаНачала, | ОсновныеНачисления.ДатаОкончания, | ОсновныеНачисления.Результат, | ОсновныеНачисления.ОтработаноДней, | ОсновныеНачисления.ОтработаноЧасов, | ОсновныеНачисления.ОплаченоДнейЧасов |ПОМЕСТИТЬ ВТ_ОсновныеНачисления |ИЗ | &ОсновныеНачисления КАК ОсновныеНачисления |ГДЕ | ОсновныеНачисления.Физлицо = &парамФизЛицо"; Запрос.УстановитьПараметр("ОсновныеНачисления", Начисления); Запрос.Текст = ТекстЗапроса; Запрос.Выполнить(); ТекстЗапроса = "ВЫБРАТЬ | ДополнительныеНачисления.Сотрудник, | ДополнительныеНачисления.ВидРасчета, | ДополнительныеНачисления.ДатаНачала, | ДополнительныеНачисления.ДатаОкончания, | ДополнительныеНачисления.Результат, | ДополнительныеНачисления.ОплаченоДнейЧасов |ПОМЕСТИТЬ ВТ_ДополнительныеНачисления |ИЗ | &ДополнительныеНачисления КАК ДополнительныеНачисления |ГДЕ | ДополнительныеНачисления.Физлицо = &парамФизЛицо"; Запрос.УстановитьПараметр("ДополнительныеНачисления", ДополнительныеНачисления); Запрос.Текст = ТекстЗапроса; Запрос.Выполнить(); ТекстЗапроса = "ВЫБРАТЬ | ДоговорыНаВыполнениеРабот.Сотрудник, | ДоговорыНаВыполнениеРабот.ВидРасчета, | ДоговорыНаВыполнениеРабот.ДатаНачала, | ДоговорыНаВыполнениеРабот.ДатаОкончания, | ДоговорыНаВыполнениеРабот.Результат |ПОМЕСТИТЬ ВТ_ДоговорыНаВыполнениеРабот |ИЗ | &ДоговорыНаВыполнениеРабот КАК ДоговорыНаВыполнениеРабот |ГДЕ | ДоговорыНаВыполнениеРабот.Физлицо = &парамФизЛицо"; Запрос.УстановитьПараметр("ДоговорыНаВыполнениеРабот", ДоговорыНаВыполнениеРабот); Запрос.Текст = ТекстЗапроса; Запрос.Выполнить(); ТекстЗапроса = "ВЫБРАТЬ | Удержания.Физлицо, | Удержания.ВидРасчета, | Удержания.ДатаНачала, | Удержания.ДатаОкончания, | Удержания.Результат |ПОМЕСТИТЬ ВТ_Удержания |ИЗ | &Удержания КАК Удержания |ГДЕ | Удержания.Физлицо = &парамФизЛицо"; Запрос.УстановитьПараметр("Удержания", Удержания); Запрос.Текст = ТекстЗапроса; Запрос.Выполнить(); ТекстЗапроса = "ВЫБРАТЬ | НДФЛ.Физлицо, | НДФЛ.Налог, | НДФЛ.МесяцНалоговогоПериода |ПОМЕСТИТЬ ВТ_НДФЛ |ИЗ | &НДФЛ КАК НДФЛ |ГДЕ | НДФЛ.Физлицо = &парамФизЛицо"; Запрос.УстановитьПараметр("НДФЛ", НДФЛ); Запрос.Текст = ТекстЗапроса; Запрос.Выполнить(); ТекстЗапросаНачисления = "ВЫБРАТЬ | ""Начисления"" КАК Таблица, | НачислениеЗарплатыРаботникамОрганизацийНачисления.Сотрудник КАК Сотрудник, | НачислениеЗарплатыРаботникамОрганизацийНачисления.ВидРасчета, | ЕСТЬNULL(НачислениеЗарплатыРаботникамОрганизацийНачисления.ВидРасчета.Наименование, ""<не указано>"") КАК ВидРасчетаНаименование, | ЕСТЬNULL(НачислениеЗарплатыРаботникамОрганизацийНачисления.ВидРасчета.Код, ""Я"") КАК ВидРасчетаКод, | ЕСТЬNULL(НачислениеЗарплатыРаботникамОрганизацийНачисления.ВидРасчета.ЯвляетсяДоходомВНатуральнойФорме, ЛОЖЬ) КАК ЯвляетсяДоходомВНатуральнойФорме, | НачислениеЗарплатыРаботникамОрганизацийНачисления.ВидРасчета.СпособРасчета КАК ВидРасчетаСпособРасчета, | НачислениеЗарплатыРаботникамОрганизацийНачисления.ВидРасчета.ВидВремени, | ВЫБОР | КОГДА НачислениеЗарплатыРаботникамОрганизацийНачисления.Сотрудник.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.ВнутреннееСовместительство) | ТОГДА "" (по внутр. совмест-ву)"" | ИНАЧЕ """" | КОНЕЦ КАК ВидЗанятости, | НачислениеЗарплатыРаботникамОрганизацийНачисления.ДатаНачала, | НачислениеЗарплатыРаботникамОрганизацийНачисления.ДатаОкончания, | СУММА(НачислениеЗарплатыРаботникамОрганизацийНачисления.Результат) КАК Результат, | СУММА(НачислениеЗарплатыРаботникамОрганизацийНачисления.ОтработаноДней) КАК ОтработаноДней, | СУММА(НачислениеЗарплатыРаботникамОрганизацийНачисления.ОтработаноЧасов) КАК ОтработаноЧасов, | СУММА(НачислениеЗарплатыРаботникамОрганизацийНачисления.ОплаченоДнейЧасов) КАК ОплаченоДнейЧасов, | NULL КАК МесяцНалоговогоПериода, | NULL КАК ПогашеноЗайма, | NULL КАК МатериальнаяВыгода, | NULL КАК НалогНаМатериальнуюВыгоду, | NULL КАК СтавкаНалогообложенияМатвыгоды |ИЗ | ВТ_ОсновныеНачисления КАК НачислениеЗарплатыРаботникамОрганизацийНачисления | |СГРУППИРОВАТЬ ПО | НачислениеЗарплатыРаботникамОрганизацийНачисления.Сотрудник, | НачислениеЗарплатыРаботникамОрганизацийНачисления.ВидРасчета, | НачислениеЗарплатыРаботникамОрганизацийНачисления.ДатаНачала, | НачислениеЗарплатыРаботникамОрганизацийНачисления.ДатаОкончания, | ВЫБОР | КОГДА НачислениеЗарплатыРаботникамОрганизацийНачисления.Сотрудник.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.ВнутреннееСовместительство) | ТОГДА "" (по внутр. совмест-ву)"" | ИНАЧЕ """" | КОНЕЦ, | НачислениеЗарплатыРаботникамОрганизацийНачисления.ВидРасчета.СпособРасчета, | НачислениеЗарплатыРаботникамОрганизацийНачисления.ВидРасчета.ВидВремени, | ЕСТЬNULL(НачислениеЗарплатыРаботникамОрганизацийНачисления.ВидРасчета.Наименование, ""<не указано>""), | ЕСТЬNULL(НачислениеЗарплатыРаботникамОрганизацийНачисления.ВидРасчета.Код, ""Я""), | ЕСТЬNULL(НачислениеЗарплатыРаботникамОрганизацийНачисления.ВидРасчета.ЯвляетсяДоходомВНатуральнойФорме, ЛОЖЬ) | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | ""ДополнительныеНачисления"", | НачислениеЗарплатыРаботникамОрганизацийДополнительныеНачисления.Сотрудник, | НачислениеЗарплатыРаботникамОрганизацийДополнительныеНачисления.ВидРасчета, | ЕСТЬNULL(НачислениеЗарплатыРаботникамОрганизацийДополнительныеНачисления.ВидРасчета.Наименование, ""<не указано>""), | ЕСТЬNULL(НачислениеЗарплатыРаботникамОрганизацийДополнительныеНачисления.ВидРасчета.Код, ""Я""), | ЕСТЬNULL(НачислениеЗарплатыРаботникамОрганизацийДополнительныеНачисления.ВидРасчета.ЯвляетсяДоходомВНатуральнойФорме, ЛОЖЬ), | НачислениеЗарплатыРаботникамОрганизацийДополнительныеНачисления.ВидРасчета.СпособРасчета, | NULL, | ВЫБОР | КОГДА НачислениеЗарплатыРаботникамОрганизацийДополнительныеНачисления.Сотрудник.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.ВнутреннееСовместительство) | ТОГДА "" (по внутр. совмест-ву)"" | ИНАЧЕ """" | КОНЕЦ, | НачислениеЗарплатыРаботникамОрганизацийДополнительныеНачисления.ДатаНачала, | НачислениеЗарплатыРаботникамОрганизацийДополнительныеНачисления.ДатаОкончания, | СУММА(НачислениеЗарплатыРаботникамОрганизацийДополнительныеНачисления.Результат), | 0, | 0, | СУММА(НачислениеЗарплатыРаботникамОрганизацийДополнительныеНачисления.ОплаченоДнейЧасов), | NULL, | NULL, | NULL, | NULL, | NULL |ИЗ | ВТ_ДополнительныеНачисления КАК НачислениеЗарплатыРаботникамОрганизацийДополнительныеНачисления | |СГРУППИРОВАТЬ ПО | НачислениеЗарплатыРаботникамОрганизацийДополнительныеНачисления.ДатаНачала, | НачислениеЗарплатыРаботникамОрганизацийДополнительныеНачисления.ВидРасчета, | НачислениеЗарплатыРаботникамОрганизацийДополнительныеНачисления.Сотрудник, | НачислениеЗарплатыРаботникамОрганизацийДополнительныеНачисления.ДатаОкончания, | НачислениеЗарплатыРаботникамОрганизацийДополнительныеНачисления.ВидРасчета.СпособРасчета, | ВЫБОР | КОГДА НачислениеЗарплатыРаботникамОрганизацийДополнительныеНачисления.Сотрудник.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.ВнутреннееСовместительство) | ТОГДА "" (по внутр. совмест-ву)"" | ИНАЧЕ """" | КОНЕЦ, | ЕСТЬNULL(НачислениеЗарплатыРаботникамОрганизацийДополнительныеНачисления.ВидРасчета.Наименование, ""<не указано>""), | ЕСТЬNULL(НачислениеЗарплатыРаботникамОрганизацийДополнительныеНачисления.ВидРасчета.ЯвляетсяДоходомВНатуральнойФорме, ЛОЖЬ), | ЕСТЬNULL(НачислениеЗарплатыРаботникамОрганизацийДополнительныеНачисления.ВидРасчета.Код, ""Я"") | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | ""ДоговорыНаВыполнениеРабот"", | НачислениеЗарплатыРаботникамОрганизацийДоговорыНаВыполнениеРабот.Сотрудник, | НачислениеЗарплатыРаботникамОрганизацийДоговорыНаВыполнениеРабот.ВидРасчета, | ЕСТЬNULL(НачислениеЗарплатыРаботникамОрганизацийДоговорыНаВыполнениеРабот.ВидРасчета.Наименование, ""<не указано>""), | ЕСТЬNULL(НачислениеЗарплатыРаботникамОрганизацийДоговорыНаВыполнениеРабот.ВидРасчета.Код, ""Я""), | ЕСТЬNULL(НачислениеЗарплатыРаботникамОрганизацийДоговорыНаВыполнениеРабот.ВидРасчета.ЯвляетсяДоходомВНатуральнойФорме, ЛОЖЬ), | НачислениеЗарплатыРаботникамОрганизацийДоговорыНаВыполнениеРабот.ВидРасчета.СпособРасчета, | NULL, | ВЫБОР | КОГДА НачислениеЗарплатыРаботникамОрганизацийДоговорыНаВыполнениеРабот.Сотрудник.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.ВнутреннееСовместительство) | ТОГДА "" (по внутр. совмест-ву)"" | ИНАЧЕ """" | КОНЕЦ, | НачислениеЗарплатыРаботникамОрганизацийДоговорыНаВыполнениеРабот.ДатаНачала, | НачислениеЗарплатыРаботникамОрганизацийДоговорыНаВыполнениеРабот.ДатаОкончания, | СУММА(НачислениеЗарплатыРаботникамОрганизацийДоговорыНаВыполнениеРабот.Результат), | 0, | 0, | 0, | NULL, | NULL, | NULL, | NULL, | NULL |ИЗ | ВТ_ДоговорыНаВыполнениеРабот КАК НачислениеЗарплатыРаботникамОрганизацийДоговорыНаВыполнениеРабот | |СГРУППИРОВАТЬ ПО | НачислениеЗарплатыРаботникамОрганизацийДоговорыНаВыполнениеРабот.ДатаОкончания, | НачислениеЗарплатыРаботникамОрганизацийДоговорыНаВыполнениеРабот.ВидРасчета, | НачислениеЗарплатыРаботникамОрганизацийДоговорыНаВыполнениеРабот.ДатаНачала, | НачислениеЗарплатыРаботникамОрганизацийДоговорыНаВыполнениеРабот.Сотрудник, | НачислениеЗарплатыРаботникамОрганизацийДоговорыНаВыполнениеРабот.ВидРасчета.СпособРасчета, | ВЫБОР | КОГДА НачислениеЗарплатыРаботникамОрганизацийДоговорыНаВыполнениеРабот.Сотрудник.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.ВнутреннееСовместительство) | ТОГДА "" (по внутр. совмест-ву)"" | ИНАЧЕ """" | КОНЕЦ, | ЕСТЬNULL(НачислениеЗарплатыРаботникамОрганизацийДоговорыНаВыполнениеРабот.ВидРасчета.Наименование, ""<не указано>""), | ЕСТЬNULL(НачислениеЗарплатыРаботникамОрганизацийДоговорыНаВыполнениеРабот.ВидРасчета.ЯвляетсяДоходомВНатуральнойФорме, ЛОЖЬ), | ЕСТЬNULL(НачислениеЗарплатыРаботникамОрганизацийДоговорыНаВыполнениеРабот.ВидРасчета.Код, ""Я"") | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | ""Удержания"", | НачислениеЗарплатыРаботникамОрганизацийУдержания.ФизЛицо, | НачислениеЗарплатыРаботникамОрганизацийУдержания.ВидРасчета, | ЕСТЬNULL(НачислениеЗарплатыРаботникамОрганизацийУдержания.ВидРасчета.Наименование, ""<не указано>""), | ЕСТЬNULL(НачислениеЗарплатыРаботникамОрганизацийУдержания.ВидРасчета.Код, ""Я""), | ЛОЖЬ, | NULL, | NULL, | NULL, | НачислениеЗарплатыРаботникамОрганизацийУдержания.ДатаНачала, | НачислениеЗарплатыРаботникамОрганизацийУдержания.ДатаОкончания, | СУММА(НачислениеЗарплатыРаботникамОрганизацийУдержания.Результат), | 0, | 0, | 0, | NULL, | NULL, | NULL, | NULL, | NULL |ИЗ | ВТ_Удержания КАК НачислениеЗарплатыРаботникамОрганизацийУдержания | |СГРУППИРОВАТЬ ПО | НачислениеЗарплатыРаботникамОрганизацийУдержания.ФизЛицо, | НачислениеЗарплатыРаботникамОрганизацийУдержания.ВидРасчета, | НачислениеЗарплатыРаботникамОрганизацийУдержания.ДатаНачала, | НачислениеЗарплатыРаботникамОрганизацийУдержания.ДатаОкончания, | ЕСТЬNULL(НачислениеЗарплатыРаботникамОрганизацийУдержания.ВидРасчета.Наименование, ""<не указано>""), | ЕСТЬNULL(НачислениеЗарплатыРаботникамОрганизацийУдержания.ВидРасчета.Код, ""Я"") | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | ""НДФЛ"", | НачислениеЗарплатыРаботникамОрганизацийНДФЛ.ФизЛицо, | NULL, | NULL, | NULL, | NULL, | NULL, | NULL, | NULL, | NULL, | NULL, | НачислениеЗарплатыРаботникамОрганизацийНДФЛ.Налог, | NULL, | NULL, | NULL, | НачислениеЗарплатыРаботникамОрганизацийНДФЛ.МесяцНалоговогоПериода, | NULL, | NULL, | NULL, | NULL |ИЗ | ВТ_НДФЛ КАК НачислениеЗарплатыРаботникамОрганизацийНДФЛ | |УПОРЯДОЧИТЬ ПО | Сотрудник, | Таблица"; Запрос.Текст = ТекстЗапросаНачисления; Запрос.УстановитьПараметр("Ссылка", Ссылка); Запрос.УстановитьПараметр("парамФизЛицо", Физлицо); ВыборкаЗапросаПоСотрудникам = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией); Пока ВыборкаЗапросаПоСотрудникам.Следующий() Цикл Если ВыборкаЗапросаПоСотрудникам.Таблица = "Начисления" тогда ВидУчетаВремени = ПроведениеРасчетов.ПолучитьВидУчетаВремени(ВыборкаЗапросаПоСотрудникам.ВидРасчетаСпособРасчета, ВыборкаЗапросаПоСотрудникам.ВидРасчетаВидВремени); СтрокаТаблицы = ТаблицаРезультатовЗапроса.Добавить(); СтрокаТаблицы.ВидДвижения = ?(ВыборкаЗапросаПоСотрудникам.ЯвляетсяДоходомВНатуральнойФорме,6,1); СтрокаТаблицы.ВидРасчета = ВыборкаЗапросаПоСотрудникам.ВидРасчетаНаименование + ВыборкаЗапросаПоСотрудникам.ВидЗанятости; СтрокаТаблицы.ПорядокВидаРасчета = "А" + ВыборкаЗапросаПоСотрудникам.ВидРасчетаКод; СтрокаТаблицы.ПериодДействияНачало = ВыборкаЗапросаПоСотрудникам.ДатаНачала; СтрокаТаблицы.ПериодДействияКонец = КонецДня(ВыборкаЗапросаПоСотрудникам.ДатаОкончания); СтрокаТаблицы.ОтработаноДней = ВыборкаЗапросаПоСотрудникам.ОтработаноДней; СтрокаТаблицы.ОтработаноЧасов = ВыборкаЗапросаПоСотрудникам.ОтработаноЧасов; СтрокаТаблицы.ОплаченоДней = ?(ВидУчетаВремени = Перечисления.ВидыУчетаВремени.ПоДням, ВыборкаЗапросаПоСотрудникам.ОплаченоДнейЧасов, 0); СтрокаТаблицы.ОплаченоЧасов = ?(ВидУчетаВремени <> Перечисления.ВидыУчетаВремени.ПоДням, ВыборкаЗапросаПоСотрудникам.ОплаченоДнейЧасов, 0); СтрокаТаблицы.Начисления = ВыборкаЗапросаПоСотрудникам.Результат; СтрокаТаблицы.Удержания = 0; СтрокаТаблицы.Регистратор = Неопределено; ИначеЕсли ВыборкаЗапросаПоСотрудникам.Таблица = "ДополнительныеНачисления" тогда ВидУчетаВремени = ПроведениеРасчетов.ПолучитьВидУчетаВремени(ВыборкаЗапросаПоСотрудникам.ВидРасчетаСпособРасчета, Неопределено); СтрокаТаблицы = ТаблицаРезультатовЗапроса.Добавить(); СтрокаТаблицы.ВидДвижения = ?(ВыборкаЗапросаПоСотрудникам.ЯвляетсяДоходомВНатуральнойФорме,7,2); СтрокаТаблицы.ВидРасчета = ВыборкаЗапросаПоСотрудникам.ВидРасчетаНаименование + ВыборкаЗапросаПоСотрудникам.ВидЗанятости; СтрокаТаблицы.ПорядокВидаРасчета = "А" + ВыборкаЗапросаПоСотрудникам.ВидРасчетаКод; СтрокаТаблицы.ПериодДействияНачало = ПериодРегистрации; СтрокаТаблицы.ПериодДействияКонец = ПериодРегистрации; СтрокаТаблицы.ОтработаноДней = 0; СтрокаТаблицы.ОтработаноЧасов = 0; СтрокаТаблицы.ОплаченоДней = ?(ВидУчетаВремени = Перечисления.ВидыУчетаВремени.ПоДням, ВыборкаЗапросаПоСотрудникам.ОплаченоДнейЧасов, 0); СтрокаТаблицы.ОплаченоЧасов = ?(ВидУчетаВремени <> Перечисления.ВидыУчетаВремени.ПоДням, ВыборкаЗапросаПоСотрудникам.ОплаченоДнейЧасов, 0); СтрокаТаблицы.Начисления = ВыборкаЗапросаПоСотрудникам.Результат; СтрокаТаблицы.Удержания = 0; СтрокаТаблицы.Регистратор = Неопределено; ИначеЕсли ВыборкаЗапросаПоСотрудникам.Таблица = "ДоговорыНаВыполнениеРабот" тогда СтрокаТаблицы = ТаблицаРезультатовЗапроса.Добавить(); СтрокаТаблицы.ВидДвижения = ?(ВыборкаЗапросаПоСотрудникам.ЯвляетсяДоходомВНатуральнойФорме,7,2); СтрокаТаблицы.ВидРасчета = ВыборкаЗапросаПоСотрудникам.ВидРасчетаНаименование; СтрокаТаблицы.ПорядокВидаРасчета = "А" + ВыборкаЗапросаПоСотрудникам.ВидРасчетаКод; СтрокаТаблицы.ПериодДействияНачало = ВыборкаЗапросаПоСотрудникам.ДатаНачала; СтрокаТаблицы.ПериодДействияКонец = КонецДня(ВыборкаЗапросаПоСотрудникам.ДатаОкончания); СтрокаТаблицы.ОтработаноДней = 0; СтрокаТаблицы.ОтработаноЧасов = 0; СтрокаТаблицы.ОплаченоДней = 0; СтрокаТаблицы.ОплаченоЧасов = 0; СтрокаТаблицы.Начисления = ВыборкаЗапросаПоСотрудникам.Результат; СтрокаТаблицы.Удержания = 0; СтрокаТаблицы.Регистратор = Неопределено; ИначеЕсли ВыборкаЗапросаПоСотрудникам.Таблица = "НДФЛ" тогда СтрокаТаблицы = ТаблицаРезультатовЗапроса.Добавить(); СтрокаТаблицы.ВидДвижения = 3; СтрокаТаблицы.ВидРасчета = "НДФЛ исчисленный по ставке 13(30)%"; СтрокаТаблицы.ПорядокВидаРасчета = "Б"; СтрокаТаблицы.ПериодДействияНачало = ВыборкаЗапросаПоСотрудникам.МесяцНалоговогоПериода; СтрокаТаблицы.ПериодДействияКонец = КонецДня(КонецМесяца(ВыборкаЗапросаПоСотрудникам.МесяцНалоговогоПериода)); СтрокаТаблицы.ОтработаноДней = 0; СтрокаТаблицы.ОтработаноЧасов = 0; СтрокаТаблицы.ОплаченоДней = 0; СтрокаТаблицы.ОплаченоЧасов = 0; СтрокаТаблицы.Начисления = 0; СтрокаТаблицы.Удержания = ВыборкаЗапросаПоСотрудникам.Результат; СтрокаТаблицы.Регистратор = Неопределено; ИначеЕсли ВыборкаЗапросаПоСотрудникам.Таблица = "Удержания" тогда СтрокаТаблицы = ТаблицаРезультатовЗапроса.Добавить(); СтрокаТаблицы.ВидДвижения = 4; СтрокаТаблицы.ВидРасчета = ВыборкаЗапросаПоСотрудникам.ВидРасчетаНаименование; СтрокаТаблицы.ПорядокВидаРасчета = "А" + ВыборкаЗапросаПоСотрудникам.ВидРасчетаКод; СтрокаТаблицы.ПериодДействияНачало = ВыборкаЗапросаПоСотрудникам.ДатаНачала; СтрокаТаблицы.ПериодДействияКонец = КонецДня(ВыборкаЗапросаПоСотрудникам.ДатаОкончания); СтрокаТаблицы.ОтработаноДней = 0; СтрокаТаблицы.ОтработаноЧасов = 0; СтрокаТаблицы.ОплаченоДней = 0; СтрокаТаблицы.ОплаченоЧасов = 0; СтрокаТаблицы.Начисления = 0; СтрокаТаблицы.Удержания = ВыборкаЗапросаПоСотрудникам.Результат; СтрокаТаблицы.Регистратор = Неопределено; КонецЕсли; КонецЦикла; ТаблицаРезультатовЗапроса.Сортировать("ВидДвижения, ПорядокВидаРасчета, ВидРасчета, ПериодДействияНачало"); Для Каждого СтрокаТаблицы Из ТаблицаРезультатовЗапроса Цикл Если ЗначениеЗаполнено(СтрокаТаблицы.ПериодДействияКонец) Тогда ДатаОкончанияПериода = СтрокаТаблицы.ПериодДействияКонец Иначе ДатаОкончанияПериода = КонецМесяца(СтрокаТаблицы.ПериодДействияНачало); КонецЕсли; Если СтрокаТаблицы.ВидДвижения < 3 Тогда НомерСтроки = ВысотаТаблицы + КоличествоНачислений; ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаНачислено).Текст = СтрокаТаблицы.ВидРасчета; Если СтрокаТаблицы.Регистратор <> Неопределено Тогда ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаНачислено).Примечание.Текст = СтрокаТаблицы.ОписаниеРегистратора; КонецЕсли; ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаНачислено).РазмещениеТекста = ТипРазмещенияТекстаТабличногоДокумента.Переносить; ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаПериодНачислено, НомерСтроки, КолонкаПериодНачислено).Текст = УправлениеОтчетами.ОписаниеПериода(СтрокаТаблицы.ПериодДействияНачало, ДатаОкончанияПериода); ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаПериодНачислено, НомерСтроки, КолонкаПериодНачислено).РазмещениеТекста = ТипРазмещенияТекстаТабличногоДокумента.Переносить; ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаПериодНачислено, НомерСтроки, КолонкаПериодНачислено).ГоризонтальноеПоложение = ГоризонтальноеПоложение.Право; ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаПериодНачислено, НомерСтроки, КолонкаОтработаноДней - 1).Объединить(); ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаОтработаноДней).Текст = СтрокаТаблицы.ОтработаноДней; ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаОтработаноЧасов).Текст = СтрокаТаблицы.ОтработаноЧасов; ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаОплаченоДней).Текст = СтрокаТаблицы.ОплаченоДней; ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаОплаченоЧасов).Текст = СтрокаТаблицы.ОплаченоЧасов; ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаСуммаНачислено, НомерСтроки, КолонкаСуммаНачислено).Текст = Формат(СтрокаТаблицы.Начисления,"ЧЦ=15; ЧДЦ=2"); ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаСуммаНачислено, НомерСтроки, КолонкаСуммаНачислено).ГоризонтальноеПоложение = ГоризонтальноеПоложение.Право; ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаСуммаНачислено, НомерСтроки, КолонкаУдержано - 1).Объединить(); ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаУдержано , НомерСтроки, КолонкаПериодУдержано - 1).Объединить(); ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаПериодУдержано, НомерСтроки, КолонкаСуммаУдержано - 1).Объединить(); ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаСуммаУдержано, НомерСтроки, КолонкаСуммаУдержано + 1).Объединить(); ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаСуммаУдержано, НомерСтроки, КолонкаСуммаУдержано + 1).ГраницаСправа = Линия; ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаСуммаУдержано, НомерСтроки, КолонкаСуммаУдержано + 1).ГраницаСнизу = Линия; КоличествоНачислений = КоличествоНачислений + 1; ВсегоНачисления = ВсегоНачисления + СтрокаТаблицы.Начисления; СуммаНаКонецПериода = СуммаНаКонецПериода + СтрокаТаблицы.Начисления; ИначеЕсли СтрокаТаблицы.ВидДвижения < 6 Тогда НомерСтроки = ВысотаТаблицы + КоличествоУдержаний; ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаУдержано , НомерСтроки, КолонкаУдержано).Текст = СтрокаТаблицы.ВидРасчета; Если СтрокаТаблицы.Регистратор <> Неопределено Тогда ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаУдержано , НомерСтроки, КолонкаУдержано).Примечание.Текст = СтрокаТаблицы.ОписаниеРегистратора; КонецЕсли; ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаУдержано , НомерСтроки, КолонкаУдержано).РазмещениеТекста = ТипРазмещенияТекстаТабличногоДокумента.Переносить; ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаУдержано , НомерСтроки, КолонкаУдержано).ГоризонтальноеПоложение = ГоризонтальноеПоложение.Лево; ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаУдержано , НомерСтроки, КолонкаПериодУдержано - 1).Объединить(); ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаПериодУдержано, НомерСтроки, КолонкаПериодУдержано).Текст = УправлениеОтчетами.ОписаниеПериода(СтрокаТаблицы.ПериодДействияНачало, ДатаОкончанияПериода); ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаПериодУдержано, НомерСтроки, КолонкаПериодУдержано).ГоризонтальноеПоложение = ГоризонтальноеПоложение.Право; ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаПериодУдержано, НомерСтроки, КолонкаПериодУдержано).РазмещениеТекста = ТипРазмещенияТекстаТабличногоДокумента.Переносить; ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаПериодУдержано, НомерСтроки, КолонкаСуммаУдержано - 1).Объединить(); ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаСуммаУдержано, НомерСтроки, КолонкаСуммаУдержано).Текст = Формат(СтрокаТаблицы.Удержания,"ЧЦ=15; ЧДЦ=2"); ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаСуммаУдержано, НомерСтроки, КолонкаСуммаУдержано).ГоризонтальноеПоложение = ГоризонтальноеПоложение.Право; ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаСуммаУдержано, НомерСтроки, КолонкаСуммаУдержано + 1).Объединить(); ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаСуммаУдержано, НомерСтроки, КолонкаСуммаУдержано + 1).ГраницаСправа = Линия; ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаСуммаУдержано, НомерСтроки, КолонкаСуммаУдержано + 1).ГраницаСнизу = Линия; КоличествоУдержаний = КоличествоУдержаний + 1; ВсегоУдержания = ВсегоУдержания + СтрокаТаблицы.Удержания; СуммаНаКонецПериода = СуммаНаКонецПериода - СтрокаТаблицы.Удержания; Иначе // подведем итоги раздела начислений и удержаний // начнем раздел доходов в натуральной форме и выплат Если Не ИтогиНачисленийИУдержанийВыведены Тогда КолвоРасчетов = Макс(КоличествоНачислений,КоличествоУдержаний); Если КолвоРасчетов > 0 Тогда РасчертитьРасчетныйЛисток(ВременныйТабличныйДокумент,ВысотаТаблицы,КолвоРасчетов) КонецЕсли; ОбластьВсего.Параметры.ВсегоНачисления = ВсегоНачисления; ОбластьВсего.Параметры.ВсегоУдержания = ВсегоУдержания; ВременныйТабличныйДокумент.Вывести(ОбластьВсего); ИтогиНачисленийИУдержанийВыведены = Не ИтогиНачисленийИУдержанийВыведены; ВременныйТабличныйДокумент.Вывести(ОбластьНатурДоходыВыплаты); ВысотаТаблицы = ВременныйТабличныйДокумент.ВысотаТаблицы + 1; ВсегоНачисления = 0; КоличествоНачислений = 0; ВсегоУдержания = 0; КоличествоУдержаний = 0; КонецЕсли; Если СтрокаТаблицы.ВидДвижения < 8 Тогда НомерСтроки = ВысотаТаблицы + КоличествоНачислений; ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаНачислено).Текст = СтрокаТаблицы.ВидРасчета; Если СтрокаТаблицы.Регистратор <> Неопределено Тогда ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаНачислено).Примечание.Текст = СтрокаТаблицы.ОписаниеРегистратора; КонецЕсли; ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаНачислено).РазмещениеТекста = ТипРазмещенияТекстаТабличногоДокумента.Переносить; ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаПериодНачислено, НомерСтроки, КолонкаПериодНачислено).Текст = УправлениеОтчетами.ОписаниеПериода(СтрокаТаблицы.ПериодДействияНачало, ДатаОкончанияПериода); ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаПериодНачислено, НомерСтроки, КолонкаПериодНачислено).РазмещениеТекста = ТипРазмещенияТекстаТабличногоДокумента.Переносить; ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаПериодНачислено, НомерСтроки, КолонкаПериодНачислено).ГоризонтальноеПоложение = ГоризонтальноеПоложение.Право; ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаПериодНачислено, НомерСтроки, КолонкаОтработаноДней - 1).Объединить(); ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаОтработаноДней).Текст = СтрокаТаблицы.ОтработаноДней; ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаОтработаноЧасов).Текст = СтрокаТаблицы.ОтработаноЧасов; ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаОплаченоДней).Текст = СтрокаТаблицы.ОплаченоДней; ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаОплаченоЧасов).Текст = СтрокаТаблицы.ОплаченоЧасов; ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаСуммаНачислено, НомерСтроки, КолонкаСуммаНачислено).Текст = Формат(СтрокаТаблицы.Начисления,"ЧЦ=15; ЧДЦ=2"); ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаСуммаНачислено, НомерСтроки, КолонкаСуммаНачислено).ГоризонтальноеПоложение = ГоризонтальноеПоложение.Право; ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаСуммаНачислено, НомерСтроки, КолонкаУдержано - 1).Объединить(); КоличествоНачислений = КоличествоНачислений + 1; ВсегоНачисления = ВсегоНачисления + СтрокаТаблицы.Начисления; //СуммаНаКонецПериода = СуммаНаКонецПериода + СтрокаТаблицы.Начисления; Иначе // остались выплаты НомерСтроки = ВысотаТаблицы + КоличествоУдержаний; ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаУдержано , НомерСтроки, КолонкаУдержано).Текст = СтрокаТаблицы.ВидРасчета; Если СтрокаТаблицы.Регистратор <> Неопределено Тогда ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаУдержано , НомерСтроки, КолонкаУдержано).Примечание.Текст = СтрокаТаблицы.ОписаниеРегистратора; КонецЕсли; ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаУдержано , НомерСтроки, КолонкаУдержано).РазмещениеТекста = ТипРазмещенияТекстаТабличногоДокумента.Переносить; ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаУдержано , НомерСтроки, КолонкаУдержано).ГоризонтальноеПоложение = ГоризонтальноеПоложение.Лево; ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаУдержано , НомерСтроки, КолонкаПериодУдержано - 1).Объединить(); ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаПериодУдержано, НомерСтроки, КолонкаПериодУдержано).Текст = УправлениеОтчетами.ОписаниеПериода(СтрокаТаблицы.ПериодДействияНачало, ДатаОкончанияПериода); ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаПериодУдержано, НомерСтроки, КолонкаПериодУдержано).ГоризонтальноеПоложение = ГоризонтальноеПоложение.Право; ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаПериодУдержано, НомерСтроки, КолонкаПериодУдержано).РазмещениеТекста = ТипРазмещенияТекстаТабличногоДокумента.Переносить; ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаПериодУдержано, НомерСтроки, КолонкаСуммаУдержано - 1).Объединить(); ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаСуммаУдержано, НомерСтроки, КолонкаСуммаУдержано).Текст = Формат(СтрокаТаблицы.Удержания,"ЧЦ=15; ЧДЦ=2"); ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаСуммаУдержано, НомерСтроки, КолонкаСуммаУдержано).ГоризонтальноеПоложение = ГоризонтальноеПоложение.Право; ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаСуммаУдержано, НомерСтроки, КолонкаСуммаУдержано + 1).Объединить(); КоличествоУдержаний = КоличествоУдержаний + 1; ВсегоУдержания = ВсегоУдержания + СтрокаТаблицы.Удержания; СуммаНаКонецПериода = СуммаНаКонецПериода - СтрокаТаблицы.Удержания; КонецЕсли; КонецЕсли; КонецЦикла; // расчертим линиями низ расчетного листками КолвоРасчетов = Макс(КоличествоНачислений,КоличествоУдержаний); Если КолвоРасчетов > 0 Тогда РасчертитьРасчетныйЛисток(ВременныйТабличныйДокумент,ВысотаТаблицы,КолвоРасчетов) КонецЕсли; Если Не ИтогиНачисленийИУдержанийВыведены Тогда // есть только начисления и удержания ОбластьВсего.Параметры.ВсегоНачисления = ВсегоНачисления; ОбластьВсего.Параметры.ВсегоУдержания = ВсегоУдержания; ВременныйТабличныйДокумент.Вывести(ОбластьВсего); ИначеЕсли КолвоРасчетов > 0 Тогда // остались итоги по натуральным доходам и выплатам ОбластьНатуральныеДоходы.Параметры.ВсегоНачисления = ВсегоНачисления; ОбластьНатуральныеДоходы.Параметры.ВсегоУдержания = ВсегоУдержания; ВременныйТабличныйДокумент.Вывести(ОбластьНатуральныеДоходы); КонецЕсли; Если СуммаНаНачалоПериода >= 0 Тогда ОбластьПодвал.Параметры.ТекстДолгНаНачалоПериода = ОбщегоНазначения.ПреобразоватьСтрокуИнтерфейса("Долг за организацией на начало месяца: "); ОбластьПодвал.Параметры.СуммаДолгНаНачалоПериода = СуммаНаНачалоПериода; Иначе ОбластьПодвал.Параметры.ТекстДолгНаНачалоПериода = "Долг за работником на начало месяца: "; ОбластьПодвал.Параметры.СуммаДолгНаНачалоПериода = 0 - СуммаНаНачалоПериода; КонецЕсли; Если СуммаНаКонецПериода >= 0 Тогда ОбластьПодвал.Параметры.ТекстДолгНаКонецПериода = ОбщегоНазначения.ПреобразоватьСтрокуИнтерфейса("Долг за организацией на конец месяца: "); ОбластьПодвал.Параметры.СуммаДолгНаКонецПериода = СуммаНаКонецПериода; Иначе ОбластьПодвал.Параметры.ТекстДолгНаКонецПериода = "Долг за работником на конец месяца: "; ОбластьПодвал.Параметры.СуммаДолгНаКонецПериода = 0 - СуммаНаКонецПериода; КонецЕсли; ВременныйТабличныйДокумент.Вывести(ОбластьПодвал); Иначе //выводим в отчет только данные запроса Выборка = РезультатЗапроса.Выбрать(); Если Выборка.Количество() = 0 Тогда //нет данных в запросе Возврат ВременныйТабличныйДокумент; КонецЕсли; ТекстПериода = Формат(ПериодРегистрации, "ДФ = 'ММММ гггг ''г.'''"); // Очистим временный табличный документ ВременныйТабличныйДокумент.Очистить(); ВременныйТабличныйДокумент.Вывести(ОбластьЗаголовокТЧ); ВременныйТабличныйДокумент.Вывести(ОбластьНачисленоУдержано); ВысотаТаблицы = ВременныйТабличныйДокумент.ВысотаТаблицы + 1; ВсегоНачисления = 0; КоличествоНачислений = 0; ВсегоУдержания = 0; КоличествоУдержаний = 0; ИтогиНачисленийИУдержанийВыведены = Ложь; Пока Выборка.Следующий() Цикл Если ЗначениеЗаполнено(Выборка.ПериодДействияКонец) Тогда ДатаОкончанияПериода = Выборка.ПериодДействияКонец; Иначе ДатаОкончанияПериода = КонецМесяца(Выборка.ПериодДействияНачало); КонецЕсли; Если Выборка.ВидДвижения < 3 Тогда НомерСтроки = ВысотаТаблицы + КоличествоНачислений; ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаНачислено).Текст = Выборка.ВидРасчета; Если Выборка.Регистратор <> Ссылка Тогда ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаНачислено).Примечание.Текст = Выборка.Регистратор; КонецЕсли; ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаНачислено).РазмещениеТекста = ТипРазмещенияТекстаТабличногоДокумента.Переносить; ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаПериодНачислено, НомерСтроки, КолонкаПериодНачислено).Текст = УправлениеОтчетами.ОписаниеПериода(Выборка.ПериодДействияНачало, ДатаОкончанияПериода); ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаПериодНачислено, НомерСтроки, КолонкаПериодНачислено).РазмещениеТекста = ТипРазмещенияТекстаТабличногоДокумента.Переносить; ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаПериодНачислено, НомерСтроки, КолонкаПериодНачислено).ГоризонтальноеПоложение = ГоризонтальноеПоложение.Право; ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаПериодНачислено, НомерСтроки, КолонкаОтработаноДней - 1).Объединить(); ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаОтработаноДней).Текст = Выборка.ОтработаноДней; ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаОтработаноЧасов).Текст = Выборка.ОтработаноЧасов; ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаОплаченоДней).Текст = Выборка.ОплаченоДней; ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаОплаченоЧасов).Текст = Выборка.ОплаченоЧасов; ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаСуммаНачислено, НомерСтроки, КолонкаСуммаНачислено).Текст = Формат(Выборка.Начисления,"ЧЦ=15; ЧДЦ=2"); ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаСуммаНачислено, НомерСтроки, КолонкаСуммаНачислено).ГоризонтальноеПоложение = ГоризонтальноеПоложение.Право; ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаСуммаНачислено, НомерСтроки, КолонкаУдержано - 1).Объединить(); ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаУдержано , НомерСтроки, КолонкаПериодУдержано - 1).Объединить(); ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаПериодУдержано, НомерСтроки, КолонкаСуммаУдержано - 1).Объединить(); ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаСуммаУдержано, НомерСтроки, КолонкаСуммаУдержано + 1).Объединить(); ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаСуммаУдержано, НомерСтроки, КолонкаСуммаУдержано + 1).ГраницаСправа = Линия; ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаСуммаУдержано, НомерСтроки, КолонкаСуммаУдержано + 1).ГраницаСнизу = Линия; КоличествоНачислений = КоличествоНачислений + 1; ВсегоНачисления = ВсегоНачисления + Выборка.Начисления; ИначеЕсли Выборка.ВидДвижения < 6 Тогда НомерСтроки = ВысотаТаблицы + КоличествоУдержаний; ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаУдержано , НомерСтроки, КолонкаУдержано).Текст = Выборка.ВидРасчета; Если Выборка.Регистратор <> Ссылка Тогда ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаУдержано , НомерСтроки, КолонкаУдержано).Примечание.Текст = Выборка.Регистратор; КонецЕсли; ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаУдержано , НомерСтроки, КолонкаУдержано).РазмещениеТекста = ТипРазмещенияТекстаТабличногоДокумента.Переносить; ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаУдержано , НомерСтроки, КолонкаУдержано).ГоризонтальноеПоложение = ГоризонтальноеПоложение.Лево; ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаУдержано , НомерСтроки, КолонкаПериодУдержано - 1).Объединить(); ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаПериодУдержано, НомерСтроки, КолонкаПериодУдержано).Текст = УправлениеОтчетами.ОписаниеПериода(Выборка.ПериодДействияНачало, ДатаОкончанияПериода); ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаПериодУдержано, НомерСтроки, КолонкаПериодУдержано).ГоризонтальноеПоложение = ГоризонтальноеПоложение.Право; ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаПериодУдержано, НомерСтроки, КолонкаПериодУдержано).РазмещениеТекста = ТипРазмещенияТекстаТабличногоДокумента.Переносить; ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаПериодУдержано, НомерСтроки, КолонкаСуммаУдержано - 1).Объединить(); ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаСуммаУдержано, НомерСтроки, КолонкаСуммаУдержано).Текст = Формат(Выборка.Удержания,"ЧЦ=15; ЧДЦ=2"); ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаСуммаУдержано, НомерСтроки, КолонкаСуммаУдержано).ГоризонтальноеПоложение = ГоризонтальноеПоложение.Право; ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаСуммаУдержано, НомерСтроки, КолонкаСуммаУдержано + 1).Объединить(); ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаСуммаУдержано, НомерСтроки, КолонкаСуммаУдержано + 1).ГраницаСправа = Линия; ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаСуммаУдержано, НомерСтроки, КолонкаСуммаУдержано + 1).ГраницаСнизу = Линия; КоличествоУдержаний = КоличествоУдержаний + 1; ВсегоУдержания = ВсегоУдержания + Выборка.Удержания; Иначе // подведем итоги раздела начислений и удержаний // начнем раздел доходов в натуральной форме и выплат Если Не ИтогиНачисленийИУдержанийВыведены Тогда КолвоРасчетов = Макс(КоличествоНачислений,КоличествоУдержаний); Если КолвоРасчетов > 0 Тогда РасчертитьРасчетныйЛисток(ВременныйТабличныйДокумент,ВысотаТаблицы,КолвоРасчетов) КонецЕсли; ОбластьВсего.Параметры.ВсегоНачисления = ВсегоНачисления; ОбластьВсего.Параметры.ВсегоУдержания = ВсегоУдержания; ВременныйТабличныйДокумент.Вывести(ОбластьВсего); ИтогиНачисленийИУдержанийВыведены = Не ИтогиНачисленийИУдержанийВыведены; ВременныйТабличныйДокумент.Вывести(ОбластьНатурДоходыВыплаты); ВысотаТаблицы = ВременныйТабличныйДокумент.ВысотаТаблицы + 1; ВсегоНачисления = 0; КоличествоНачислений = 0; ВсегоУдержания = 0; КоличествоУдержаний = 0; КонецЕсли; Если Выборка.ВидДвижения < 8 Тогда НомерСтроки = ВысотаТаблицы + КоличествоНачислений; ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаНачислено).Текст = Выборка.ВидРасчета; Если Выборка.Регистратор <> Ссылка Тогда ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаНачислено).Примечание.Текст = Выборка.Регистратор; КонецЕсли; ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаНачислено).РазмещениеТекста = ТипРазмещенияТекстаТабличногоДокумента.Переносить; ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаПериодНачислено, НомерСтроки, КолонкаПериодНачислено).Текст = УправлениеОтчетами.ОписаниеПериода(Выборка.ПериодДействияНачало, ДатаОкончанияПериода); ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаПериодНачислено, НомерСтроки, КолонкаПериодНачислено).РазмещениеТекста = ТипРазмещенияТекстаТабличногоДокумента.Переносить; ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаПериодНачислено, НомерСтроки, КолонкаПериодНачислено).ГоризонтальноеПоложение = ГоризонтальноеПоложение.Право; ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаПериодНачислено, НомерСтроки, КолонкаОтработаноДней - 1).Объединить(); ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаОтработаноДней).Текст = Выборка.ОтработаноДней; ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаОтработаноЧасов).Текст = Выборка.ОтработаноЧасов; ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаОплаченоДней).Текст = Выборка.ОплаченоДней; ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаОплаченоЧасов).Текст = Выборка.ОплаченоЧасов; ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаСуммаНачислено, НомерСтроки, КолонкаСуммаНачислено).Текст = Формат(Выборка.Начисления,"ЧЦ=15; ЧДЦ=2"); ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаСуммаНачислено, НомерСтроки, КолонкаСуммаНачислено).ГоризонтальноеПоложение = ГоризонтальноеПоложение.Право; ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаСуммаНачислено, НомерСтроки, КолонкаУдержано - 1).Объединить(); КоличествоНачислений = КоличествоНачислений + 1; ВсегоНачисления = ВсегоНачисления + Выборка.Начисления; Иначе // остались выплаты НомерСтроки = ВысотаТаблицы + КоличествоУдержаний; ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаУдержано , НомерСтроки, КолонкаУдержано).Текст = Выборка.ВидРасчета; Если Выборка.Регистратор <> Ссылка Тогда ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаУдержано , НомерСтроки, КолонкаУдержано).Примечание.Текст = Выборка.Регистратор; КонецЕсли; ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаУдержано , НомерСтроки, КолонкаУдержано).РазмещениеТекста = ТипРазмещенияТекстаТабличногоДокумента.Переносить; ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаУдержано , НомерСтроки, КолонкаУдержано).ГоризонтальноеПоложение = ГоризонтальноеПоложение.Лево; ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаУдержано , НомерСтроки, КолонкаПериодУдержано - 1).Объединить(); ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаПериодУдержано, НомерСтроки, КолонкаПериодУдержано).Текст = УправлениеОтчетами.ОписаниеПериода(Выборка.ПериодДействияНачало, ДатаОкончанияПериода); ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаПериодУдержано, НомерСтроки, КолонкаПериодУдержано).ГоризонтальноеПоложение = ГоризонтальноеПоложение.Право; ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаПериодУдержано, НомерСтроки, КолонкаПериодУдержано).РазмещениеТекста = ТипРазмещенияТекстаТабличногоДокумента.Переносить; ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаПериодУдержано, НомерСтроки, КолонкаСуммаУдержано - 1).Объединить(); ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаСуммаУдержано, НомерСтроки, КолонкаСуммаУдержано).Текст = Формат(Выборка.Удержания,"ЧЦ=15; ЧДЦ=2"); ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаСуммаУдержано, НомерСтроки, КолонкаСуммаУдержано).ГоризонтальноеПоложение = ГоризонтальноеПоложение.Право; ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаСуммаУдержано, НомерСтроки, КолонкаСуммаУдержано + 1).Объединить(); КоличествоУдержаний = КоличествоУдержаний + 1; ВсегоУдержания = ВсегоУдержания + Выборка.Удержания; ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаСуммаУдержано, НомерСтроки, КолонкаСуммаУдержано + 1).ГраницаСправа = Линия; ВременныйТабличныйДокумент.Область(НомерСтроки, КолонкаСуммаУдержано, НомерСтроки, КолонкаСуммаУдержано + 1).ГраницаСнизу = Линия; КонецЕсли; КонецЕсли; КонецЦикла; // Данные для подвала СуммаНаНачалоПериода = Выборка.СуммаВзаиморасчетовНачальныйОстаток; СуммаНаКонецПериода = Выборка.СуммаВзаиморасчетовКонечныйОстаток; // расчертим линиями низ расчетного листками КолвоРасчетов = Макс(КоличествоНачислений,КоличествоУдержаний); Если КолвоРасчетов > 0 Тогда РасчертитьРасчетныйЛисток(ВременныйТабличныйДокумент,ВысотаТаблицы,КолвоРасчетов) КонецЕсли; Если Не ИтогиНачисленийИУдержанийВыведены Тогда // есть только начисления и удержания ОбластьВсего.Параметры.ВсегоНачисления = ВсегоНачисления; ОбластьВсего.Параметры.ВсегоУдержания = ВсегоУдержания; ВременныйТабличныйДокумент.Вывести(ОбластьВсего); ИначеЕсли КолвоРасчетов > 0 Тогда // остались итоги по натуральным доходам и выплатам ОбластьНатуральныеДоходы.Параметры.ВсегоНачисления = ВсегоНачисления; ОбластьНатуральныеДоходы.Параметры.ВсегоУдержания = ВсегоУдержания; ВременныйТабличныйДокумент.Вывести(ОбластьНатуральныеДоходы); КонецЕсли; Если СуммаНаНачалоПериода = NULL Тогда ОбластьПодвал.Параметры.ТекстДолгНаНачалоПериода = ОбщегоНазначения.ПреобразоватьСтрокуИнтерфейса("Долг за организацией на начало месяца: "); ОбластьПодвал.Параметры.СуммаДолгНаНачалоПериода = 0; Иначе Если СуммаНаНачалоПериода >= 0 Тогда ОбластьПодвал.Параметры.ТекстДолгНаНачалоПериода = ОбщегоНазначения.ПреобразоватьСтрокуИнтерфейса("Долг за организацией на начало месяца: "); ОбластьПодвал.Параметры.СуммаДолгНаНачалоПериода = СуммаНаНачалоПериода; Иначе ОбластьПодвал.Параметры.ТекстДолгНаНачалоПериода = "Долг за работником на начало месяца: "; ОбластьПодвал.Параметры.СуммаДолгНаНачалоПериода = 0 - СуммаНаНачалоПериода; КонецЕсли; КонецЕсли; Если СуммаНаКонецПериода = NULL Тогда ОбластьПодвал.Параметры.ТекстДолгНаКонецПериода = "Долг за работником на конец месяца: "; ОбластьПодвал.Параметры.СуммаДолгНаКонецПериода = 0; Иначе Если СуммаНаКонецПериода >= 0 Тогда ОбластьПодвал.Параметры.ТекстДолгНаКонецПериода = ОбщегоНазначения.ПреобразоватьСтрокуИнтерфейса("Долг за организацией на конец месяца: "); ОбластьПодвал.Параметры.СуммаДолгНаКонецПериода = СуммаНаКонецПериода; Иначе ОбластьПодвал.Параметры.ТекстДолгНаКонецПериода = "Долг за работником на конец месяца: "; ОбластьПодвал.Параметры.СуммаДолгНаКонецПериода = 0 - СуммаНаКонецПериода; КонецЕсли; КонецЕсли; ВременныйТабличныйДокумент.Вывести(ОбластьПодвал); КонецЕсли; Возврат ВременныйТабличныйДокумент; КонецФункции //ЗаполнитьТаблицуРасчетногоЛистка() #КонецЕсли // Выполняет автоматическое заполнение документа по данным документа и переданным параметрам // // Параметры: // ПостроительЗапроса - построитель запроса, который используется для ограничения состава физлиц // по которым выполняется заполнение документа // // Возвращаемое значение: // Логическое - удалось ли выполнить автоматическое заполнение документа // Функция Автозаполнение(Запрос = Неопределено, РежимЗаполнения = Неопределено) Экспорт ОчиститьТЧ(); Возврат ВыполнитьАвтозаполнение(ПериодНачисленияДатаНачала, ПериодНачисленияДатаОкончания, Запрос,,,, РежимЗаполнения); КонецФункции // Автозаполнение() // Выполняет автоматическое заполнение документа по данным документа и переданным параметрам // // Параметры: // ПериодЗаполнения - период (дата - начало месяца) за который необходимо выполнить автозаполнение // ПостроительЗапроса - построитель запроса, который используется для ограничения состава физлиц // по которым выполняется заполнение документа // ПерерассчитываемыйДокумент - перерассчитываемый документ для автозаполнения документа // по перерассчитываемому начислению зарплаты // Физлица - массив физлиц перерасчета // РежимЗаполнения - строка, полнота заполнения по сотрудникам: по всем сотрудникам, // по военнослужащим, по гражданским лицам. // // Возвращаемое значение: // Логическое - удалось ли выполнить автоматическое заполнение документа // Функция ВыполнитьАвтозаполнение(НачалоПериодаЗаполнения, ОкончаниеПериодаЗаполнения, Запрос = Неопределено, ЭтоПерерасчет = Ложь, СписокФизЛиц = Неопределено, МассивСотрудники = Неопределено, РежимЗаполнения = Неопределено) Экспорт РасчетЗарплатыОрганизацииПоОтветственным = ПроцедурыУправленияПерсоналом.ЗначениеУчетнойПолитикиПоПерсоналуОрганизации(глЗначениеПеременной("глУчетнаяПолитикаПоПерсоналуОрганизации"), Организация, "РасчетЗарплатыОрганизацииПоОтветственным"); ГоловнаяОрганизация = ОбщегоНазначения.ГоловнаяОрганизация(Организация); // готовим объект Запрос и // определяем тексты условий ПоВсемПодразделениямОрганизации и УсловиеНаПодразделение. Если Запрос = Неопределено Тогда Запрос = Новый Запрос; Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц; Если ЗначениеЗаполнено(ПодразделениеОрганизации) Тогда ПоВсемПодразделениямОрганизации = Ложь; Запрос.УстановитьПараметр("парамПодразделение", ПодразделениеОрганизации); ТекстЗапросаПоПодразделениям = "ВЫБРАТЬ | ПодразделенияОрганизаций.Ссылка КАК Подразделение |ПОМЕСТИТЬ ВТПодразделенияОтбора |ИЗ | Справочник.ПодразделенияОрганизаций КАК ПодразделенияОрганизаций |ГДЕ | ПодразделенияОрганизаций.Ссылка В ИЕРАРХИИ(&парамПодразделение) | |ИНДЕКСИРОВАТЬ ПО | Подразделение"; Иначе // подготовим временную таблицу с подразделениями ПоВсемПодразделениямОрганизации = Истина; ТекстЗапросаПоПодразделениям = "ВЫБРАТЬ | НЕОПРЕДЕЛЕНО КАК Подразделение |ПОМЕСТИТЬ ВТПодразделенияОтбора"; КонецЕсли; Если МассивСотрудники = Неопределено Тогда Если ЗначениеЗаполнено(Ответственный) И РасчетЗарплатыОрганизацииПоОтветственным Тогда ПоВсемПодразделениямОрганизации = Ложь; Запрос.УстановитьПараметр("парамПользователь", Ответственный); Запрос.УстановитьПараметр("парамНачало", НачалоПериодаЗаполнения); ТекстЗапросаПоПодразделениям = "ВЫБРАТЬ | ПодразделенияОрганизаций.Ссылка КАК Подразделение |ПОМЕСТИТЬ ВТПодразделенияОтбора |ИЗ | Справочник.ПодразделенияОрганизаций КАК ПодразделенияОрганизаций |ГДЕ | ПодразделенияОрганизаций.Ссылка В ИЕРАРХИИ | (ВЫБРАТЬ РАЗЛИЧНЫЕ | Расчетчики.ПодразделениеОрганизации | ИЗ | РегистрСведений.РасчетчикиЗарплатыОрганизаций.СрезПоследних(&парамНачало) КАК Расчетчики | ГДЕ | Расчетчики.Пользователь = &парамПользователь) | |ИНДЕКСИРОВАТЬ ПО | Подразделение"; КонецЕсли; Если РасчетЗарплатыОрганизацииПоОтветственным И ЗначениеЗаполнено(Ответственный) Тогда // Проверим ответственного - является ли он расчетчиком вообще и для заданного // подразделения (если оно задано) Запрос.УстановитьПараметр("парамПользователь" , Ответственный); Запрос.УстановитьПараметр("парамНачало" , НачалоПериодаЗаполнения); Если ПодразделениеОрганизации.Пустая() Тогда Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1 | Расчетчики.ПодразделениеОрганизации |ИЗ | РегистрСведений.РасчетчикиЗарплатыОрганизаций.СрезПоследних(&парамНачало, ) КАК Расчетчики |ГДЕ | Расчетчики.Пользователь = &парамПользователь"; Если Запрос.Выполнить().Пустой() Тогда ОбщегоНазначения.ОшибкаРасчета("Ответственный за этот документ не является расчетчиком ни одного из подразделений учреждения"); Возврат Ложь; КонецЕсли; Иначе Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1 | Подразделения.Ссылка |ИЗ | Справочник.ПодразделенияОрганизаций КАК Подразделения |ГДЕ | Подразделения.Ссылка В ИЕРАРХИИ(&парамПодразделение) | И Подразделения.Ссылка В ИЕРАРХИИ | (ВЫБРАТЬ РАЗЛИЧНЫЕ | Расчетчики.ПодразделениеОрганизации | ИЗ | РегистрСведений.РасчетчикиЗарплатыОрганизаций.СрезПоследних(&парамНачало) КАК Расчетчики | ГДЕ | Расчетчики.Пользователь = &парамПользователь)"; Запрос.УстановитьПараметр("парамПодразделение" , ПодразделениеОрганизации); Если Запрос.Выполнить().Пустой() Тогда ОбщегоНазначения.ОшибкаРасчета("Ответственный за этот документ не является расчетчиком для выбранного подразделения"); Возврат Ложь; КонецЕсли; КонецЕсли; КонецЕсли; Запрос.УстановитьПараметр("ФизЛица", СписокФизЛиц); Запрос.УстановитьПараметр("ПоВсемФизЛицам", СписокФизЛиц = Неопределено); Запрос.УстановитьПараметр("парамОрганизация", Организация); Запрос.УстановитьПараметр("парамГоловнаяОрганизация",ГоловнаяОрганизация); Запрос.УстановитьПараметр("парамНачало", НачалоПериодаЗаполнения); Запрос.УстановитьПараметр("парамКонец", КонецДня(ОкончаниеПериодаЗаполнения)); ВидыДоговоровВоеннослужащих = Новый Массив; ВидыДоговоровВоеннослужащих.Добавить(Перечисления.ВидыДоговоровСФизЛицами.ВоеннаяСлужбаПоКонтракту); ВидыДоговоровВоеннослужащих.Добавить(Перечисления.ВидыДоговоровСФизЛицами.ВоеннаяСлужбаПоПризыву); Запрос.УстановитьПараметр("ВидыДоговоровВоеннослужащих", ВидыДоговоровВоеннослужащих); Если РежимЗаполнения = "ДействиеЗаполнитьПоВоеннослужащим" Тогда УсловиеНаФизлица1 = "Сотрудник.ВидДоговора В (&ВидыДоговоровВоеннослужащих)"; УсловиеНаФизлица2 = "РаботникиОрганизации.Сотрудник.ВидДоговора В (&ВидыДоговоровВоеннослужащих)"; УсловиеНаФизлица3 = "Работники.Сотрудник.ВидДоговора В (&ВидыДоговоровВоеннослужащих)"; УсловиеНаФизлица4 = "ДоговорНаВыполнениеРаботСФизЛицом.Сотрудник.ВидДоговора В (&ВидыДоговоровВоеннослужащих)"; ИначеЕсли РежимЗаполнения = "ДействиеЗаполнитьПоГражданскимЛицам" Тогда УсловиеНаФизлица1 = "Сотрудник.ВидДоговора НЕ В (&ВидыДоговоровВоеннослужащих)"; УсловиеНаФизлица2 = "РаботникиОрганизации.Сотрудник.ВидДоговора НЕ В (&ВидыДоговоровВоеннослужащих)"; УсловиеНаФизлица3 = "Работники.Сотрудник.ВидДоговора НЕ В (&ВидыДоговоровВоеннослужащих)"; УсловиеНаФизлица4 = "ДоговорНаВыполнениеРаботСФизЛицом.Сотрудник.ВидДоговора НЕ В (&ВидыДоговоровВоеннослужащих)"; Иначе УсловиеНаФизлица1 = "&ПоВсемФизЛицам ИЛИ Сотрудник.ФизЛицо В (&ФизЛица)"; УсловиеНаФизлица2 = "&ПоВсемФизЛицам ИЛИ РаботникиОрганизации.Сотрудник.ФизЛицо В (&ФизЛица)"; УсловиеНаФизлица3 = "&ПоВсемФизЛицам ИЛИ Работники.Сотрудник.ФизЛицо В (&ФизЛица)"; УсловиеНаФизлица4 = "&ПоВсемФизЛицам ИЛИ ДоговорНаВыполнениеРаботСФизЛицом.ФизЛицо В (&ФизЛица)"; КонецЕсли; ТекстЗапросаПоСпискуРаботников = "ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ | РаботникиОрганизации.Сотрудник КАК Сотрудник, | РаботникиОрганизации.Сотрудник.Физлицо КАК Физлицо |ПОМЕСТИТЬ ВТСписокРаботников |ИЗ | РегистрСведений.РаботникиОрганизаций.СрезПоследних( | &парамНачало, | Организация = &парамГоловнаяОрганизация | И (" + УсловиеНаФизлица1+ ")) КАК РаботникиОрганизации |ГДЕ | ВЫБОР | КОГДА РаботникиОрганизации.ПериодЗавершения <= &парамНачало | И РаботникиОрганизации.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | ТОГДА РаботникиОрганизации.ПричинаИзмененияСостоянияЗавершения | ИНАЧЕ РаботникиОрганизации.ПричинаИзмененияСостояния | КОНЕЦ <> ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение) | И ВЫБОР | КОГДА РаботникиОрганизации.ПериодЗавершения <= &парамНачало | И РаботникиОрганизации.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | ТОГДА РаботникиОрганизации.ОбособленноеПодразделениеЗавершения | ИНАЧЕ РаботникиОрганизации.ОбособленноеПодразделение | КОНЕЦ = &парамОрганизация | И ВЫБОР | КОГДА &ПоВсемПодразделениям | ТОГДА ИСТИНА | КОГДА РаботникиОрганизации.ПериодЗавершения <= &парамНачало | И РаботникиОрганизации.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | ТОГДА РаботникиОрганизации.ПодразделениеОрганизацииЗавершения В | (ВЫБРАТЬ | Подразделения.Подразделение | ИЗ | ВТПодразделенияОтбора КАК Подразделения) | ИНАЧЕ РаботникиОрганизации.ПодразделениеОрганизации В | (ВЫБРАТЬ | Подразделения.Подразделение | ИЗ | ВТПодразделенияОтбора КАК Подразделения) | КОНЕЦ | |ОБЪЕДИНИТЬ | |ВЫБРАТЬ РАЗЛИЧНЫЕ | РаботникиОрганизации.Сотрудник, | РаботникиОрганизации.Сотрудник.Физлицо |ИЗ | РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизации |ГДЕ | РаботникиОрганизации.Период > &парамНачало | И РаботникиОрганизации.Период <= &парамКонец | И РаботникиОрганизации.Организация = &парамГоловнаяОрганизация | И (" + УсловиеНаФизлица2+ ") | И РаботникиОрганизации.ОбособленноеПодразделение = &парамОрганизация | И (&ПоВсемПодразделениям | ИЛИ РаботникиОрганизации.ПодразделениеОрганизации В | (ВЫБРАТЬ | Подразделения.Подразделение | ИЗ | ВТПодразделенияОтбора КАК Подразделения)) | |ОБЪЕДИНИТЬ | |ВЫБРАТЬ РАЗЛИЧНЫЕ | Работники.Сотрудник, | Работники.Сотрудник.Физлицо |ИЗ | РегистрСведений.РаботникиОрганизаций КАК Работники | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций КАК ПериодыПерекрытия | ПО Работники.Сотрудник = ПериодыПерекрытия.Сотрудник | И (ПериодыПерекрытия.Период <= Работники.ПериодЗавершения) | И (ПериодыПерекрытия.Период > Работники.Период) | И (ПериодыПерекрытия.Организация = &парамГоловнаяОрганизация) |ГДЕ | Работники.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | И Работники.ПериодЗавершения > &парамНачало | И Работники.ПериодЗавершения <= &парамКонец | И Работники.Организация = &парамГоловнаяОрганизация | И Работники.ОбособленноеПодразделениеЗавершения = &парамОрганизация | И (" + УсловиеНаФизлица3+ ") | И (&ПоВсемПодразделениям | ИЛИ Работники.ПодразделениеОрганизацииЗавершения В | (ВЫБРАТЬ | Подразделения.Подразделение | ИЗ | ВТПодразделенияОтбора КАК Подразделения)) | И ПериодыПерекрытия.Период ЕСТЬ NULL | |ОБЪЕДИНИТЬ | |ВЫБРАТЬ РАЗЛИЧНЫЕ | ДоговорНаВыполнениеРаботСФизЛицом.Сотрудник, | ДоговорНаВыполнениеРаботСФизЛицом.Сотрудник.Физлицо |ИЗ | Документ.ДоговорНаВыполнениеРаботСФизЛицом КАК ДоговорНаВыполнениеРаботСФизЛицом |ГДЕ | ДоговорНаВыполнениеРаботСФизЛицом.ДатаНачала <= &парамКонец | И ДоговорНаВыполнениеРаботСФизЛицом.ДатаОкончания >= &парамНачало | И ДоговорНаВыполнениеРаботСФизЛицом.Проведен | И ДоговорНаВыполнениеРаботСФизЛицом.Организация = &парамОрганизация | И (" + УсловиеНаФизлица4+ ") | И (&ПоВсемПодразделениям | ИЛИ ДоговорНаВыполнениеРаботСФизЛицом.ПодразделениеОрганизации В | (ВЫБРАТЬ | Подразделения.Подразделение | ИЗ | ВТПодразделенияОтбора КАК Подразделения)) | |ИНДЕКСИРОВАТЬ ПО | Сотрудник"; Иначе Запрос.УстановитьПараметр("Сотрудники", МассивСотрудники); ТекстЗапросаПоСпискуРаботников = "ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ | СотрудникиОрганизаций.Ссылка КАК Сотрудник, | СотрудникиОрганизаций.Физлицо |ПОМЕСТИТЬ ВТСписокРаботников |ИЗ | Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций |ГДЕ | СотрудникиОрганизаций.Ссылка В(&Сотрудники) | |ИНДЕКСИРОВАТЬ ПО | Сотрудник"; КонецЕсли; // создаем временную таблицу с подразделениями Запрос.Текст = ТекстЗапросаПоПодразделениям; Запрос.УстановитьПараметр("ПоВсемПодразделениям", ПоВсемПодразделениямОрганизации); Запрос.Выполнить(); // создаем временную таблицу ВТСписокРаботников с сотрудниками, отобранными по подразделению или из переданного списка // // Поля: // Сотрудник // Физлицо // Запрос.Текст = ТекстЗапросаПоСпискуРаботников; Запрос.Выполнить(); Иначе // создаем временную таблицу ВТСписокРаботников с сотрудниками, отобранными по критериям пользователя // // Поля: // Сотрудник // Физлицо // Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц; Запрос.Выполнить(); // объявим временную таблицу - она должна присутствовать, но использоваться не будет Запрос.Текст = "ВЫБРАТЬ | НЕОПРЕДЕЛЕНО КАК Подразделение |ПОМЕСТИТЬ ВТПодразделенияОтбора"; Запрос.Выполнить(); Запрос.УстановитьПараметр("ПоВсемПодразделениям", Истина); КонецЕсли; // Установим параметры запроса Запрос.УстановитьПараметр("парамПериодРегистрации" , ПериодРегистрации); Запрос.УстановитьПараметр("парамНачало" , НачалоПериодаЗаполнения); Запрос.УстановитьПараметр("парамКонец" , КонецДня(ОкончаниеПериодаЗаполнения)); Запрос.УстановитьПараметр("парамОрганизация" , Организация); Запрос.УстановитьПараметр("парамГоловнаяОрганизация", ГоловнаяОрганизация); Запрос.УстановитьПараметр("парамПодразделение" , ПодразделениеОрганизации); Запрос.УстановитьПараметр("парамРегистратор" , Ссылка); Запрос.УстановитьПараметр("парамНачалоМесяца" , НачалоМесяца(НачалоПериодаЗаполнения)); Запрос.УстановитьПараметр("парамДатаВалютногоУчета" , НачалоМесяца(НачалоПериодаЗаполнения)); Запрос.УстановитьПараметр("парамВалютаРегламентУчета" , Константы.ВалютаРегламентированногоУчета.Получить()); Запрос.УстановитьПараметр("парамМассивСпособовРасчетовБезВалюты" , ПроведениеРасчетовПереопределяемый.ПолучитьСписокСпособовРасчетаНеТребующихУказанияВалюты()); Запрос.УстановитьПараметр("Год",Год(НачалоПериодаЗаполнения)); Запрос.УстановитьПараметр("ЭтоПерерасчет", ЭтоПерерасчет); СпособыРасчетаОтСтажа = Новый Массив; СпособыРасчетаОтСтажа.Добавить(Перечисления.СпособыРасчетаОплатыТруда.ОтСтажаПоМесячнойТарифнойСтавкеПоЧасам); СпособыРасчетаОтСтажа.Добавить(Перечисления.СпособыРасчетаОплатыТруда.ОтСтажаПоМесячнойТарифнойСтавкеПоДням); СпособыРасчетаОтСтажа.Добавить(Перечисления.СпособыРасчетаОплатыТруда.ОтСтажаПоДневнойТарифнойСтавке); СпособыРасчетаОтСтажа.Добавить(Перечисления.СпособыРасчетаОплатыТруда.ОтСтажаПоЧасовойТарифнойСтавке); СпособыРасчетаОтСтажа.Добавить(Перечисления.СпособыРасчетаОплатыТруда.ОтСтажаПроцентом); СпособыРасчетаОтСтажа.Добавить(Перечисления.СпособыРасчетаОплатыТруда.СевернаяНадбавка); Запрос.УстановитьПараметр("СпособыРасчетаОтСтажа", СпособыРасчетаОтСтажа); Если Ссылка.Пустая() Тогда СcылкаОбъекта = Документы.НачислениеЗарплатыРаботникамОрганизаций.ПолучитьСсылку(); УстановитьСсылкуНового(СcылкаОбъекта); Иначе СcылкаОбъекта = Ссылка; КонецЕсли; Запрос.УстановитьПараметр("Ссылка", СcылкаОбъекта); //ТаблицаДвиженийРаботниковТекст //Описание: // Выбирает список работников, отвечающих условиям отбора, числящихся на начало месяца и их движения за месяц. Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | &парамНачало КАК Период, | РаботникиОрганизации.Сотрудник КАК Сотрудник, | ИСТИНА КАК Подходит, | ВЫБОР | КОГДА РаботникиОрганизации.ПериодЗавершения <= &парамНачало | И РаботникиОрганизации.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | ТОГДА РаботникиОрганизации.ПодразделениеОрганизацииЗавершения | ИНАЧЕ РаботникиОрганизации.ПодразделениеОрганизации | КОНЕЦ КАК ПодразделениеОрганизации, | ВЫБОР | КОГДА РаботникиОрганизации.ПериодЗавершения <= &парамНачало | И РаботникиОрганизации.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | ТОГДА РаботникиОрганизации.ГрафикРаботыЗавершения | ИНАЧЕ РаботникиОрганизации.ГрафикРаботы | КОНЕЦ КАК ГрафикРаботы, | ВЫБОР | КОГДА РаботникиОрганизации.ПериодЗавершения <= &парамНачало | И РаботникиОрганизации.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | ТОГДА РаботникиОрганизации.ДолжностьЗавершения | ИНАЧЕ РаботникиОрганизации.Должность | КОНЕЦ КАК Должность |ПОМЕСТИТЬ ВТДвиженияРаботников |ИЗ | РегистрСведений.РаботникиОрганизаций.СрезПоследних( | &парамНачало, | Сотрудник В | (ВЫБРАТЬ | ВТСписокРаботников.Сотрудник | ИЗ | ВТСписокРаботников КАК ВТСписокРаботников)) КАК РаботникиОрганизации |ГДЕ | ВЫБОР | КОГДА РаботникиОрганизации.ПериодЗавершения <= &парамНачало | И РаботникиОрганизации.ПериодЗавершения <> ДАТАВРЕМЯ(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 | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | &парамНачало, | ДоговорникиОрганизаций.Ссылка, | ИСТИНА, | NULL, | NULL, | NULL |ИЗ | ВТСписокРаботников КАК СписокРаботников | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.СотрудникиОрганизаций КАК ДоговорникиОрганизаций | ПО СписокРаботников.Сотрудник = ДоговорникиОрганизаций.Ссылка |ГДЕ | ДоговорникиОрганизаций.ВидДоговора = ЗНАЧЕНИЕ(Перечисление.ВидыДоговоровСФизЛицами.Подряда) | ИЛИ ДоговорникиОрганизаций.ВидДоговора = ЗНАЧЕНИЕ(Перечисление.ВидыДоговоровСФизЛицами.Авторский) | |ИНДЕКСИРОВАТЬ ПО | Сотрудник"; Запрос.Выполнить(); // таблица ВТЗначенияПоказателей // // Поля: // Сотрудник // Показатель - введенный пользователем показатель // Значение - значение показателя // Валюта // Запрос.Текст = "ВЫБРАТЬ | Работники.Сотрудник КАК Сотрудник, | Работники.ПодразделениеОрганизации КАК ПодразделениеОрганизации, | ЗначенияПоказателейСхемМотивации.Показатель КАК Показатель, | ЗначенияПоказателейСхемМотивации.Валюта, | ЗначенияПоказателейСхемМотивации.Значение |ПОМЕСТИТЬ ВТЗначенияПоказателей |ИЗ | ВТДвиженияРаботников КАК Работники | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | Ежемесячно.Подразделение КАК Подразделение, | Ежемесячно.Показатель КАК Показатель, | Ежемесячно.Валюта КАК Валюта, | Ежемесячно.Значение КАК Значение, | Ежемесячно.Сотрудник КАК Сотрудник | ИЗ | РегистрСведений.ЗначенияПоказателейСхемМотивации КАК Ежемесячно | ГДЕ | Ежемесячно.Значение ЕСТЬ НЕ NULL | И Ежемесячно.Организация = &парамОрганизация | И Ежемесячно.ПериодДействия >= &парамНачало | И Ежемесячно.ПериодДействия <= &парамКонец | | ОБЪЕДИНИТЬ | | ВЫБРАТЬ | ПериодическиеЗначенияПоказателейСхемМотивацииСрезПоследних.Подразделение, | ПериодическиеЗначенияПоказателейСхемМотивацииСрезПоследних.Показатель, | ПериодическиеЗначенияПоказателейСхемМотивацииСрезПоследних.Валюта, | ПериодическиеЗначенияПоказателейСхемМотивацииСрезПоследних.Значение, | NULL | ИЗ | РегистрСведений.ПериодическиеЗначенияПоказателейСхемМотивации.СрезПоследних(&парамКонец, Организация = &парамОрганизация) КАК ПериодическиеЗначенияПоказателейСхемМотивацииСрезПоследних) КАК ЗначенияПоказателейСхемМотивации | ПО (ВЫБОР | КОГДА ЗначенияПоказателейСхемМотивации.Показатель.ВидПоказателя = ЗНАЧЕНИЕ(Перечисление.ВидыПоказателейСхемМотивации.Индивидуальный) | ИЛИ ЗначенияПоказателейСхемМотивации.Показатель.ВидПоказателя ЕСТЬ NULL | ТОГДА Работники.Сотрудник = ЗначенияПоказателейСхемМотивации.Сотрудник | КОГДА ЗначенияПоказателейСхемМотивации.Показатель.ВидПоказателя = ЗНАЧЕНИЕ(Перечисление.ВидыПоказателейСхемМотивации.ПоПодразделению) | ТОГДА Работники.ПодразделениеОрганизации = ЗначенияПоказателейСхемМотивации.Подразделение | ИНАЧЕ ИСТИНА | КОНЕЦ) | |ИНДЕКСИРОВАТЬ ПО | Показатель |"; Запрос.Выполнить(); // создание временных таблиц для последующего использования: // ЗначенияПоказателей // НеЗапрашиваемыеПриКадровыхПеремещениях // ВводимыеВПлановыхНачисленияхПоказатели // РаботникиИНачисления Если ВидОперации = Перечисления.ВидыОперацийНачислениеЗарплатыРаботникамОрганизаций.ПолныйРасчет ИЛИ ВидОперации = Перечисления.ВидыОперацийНачислениеЗарплатыРаботникамОрганизаций.РасчетНачислений ИЛИ ВидОперации = Перечисления.ВидыОперацийНачислениеЗарплатыРаботникамОрганизаций.РасчетУдержаний ИЛИ ВидОперации = Перечисления.ВидыОперацийНачислениеЗарплатыРаботникамОрганизаций.РасчетНДФЛ Тогда // таблица НеЗапрашиваемыеПриКадровыхПеремещениях // выбираем показатели, которые не спрашиваем у пользователя в кадровых документах, а также все "тарифные ставки" и их в.р.; // значения этих показателей будем искать в данных о плановых начислениях, но, возможно, при других видах расчета // // Поля: // Ссылка - вид расчета // Показатель // НомерСтроки - номер строки показателя // ЭтоТарифнаяСтавка - признак того. что Показатель является тарифной ставкой // Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | ОсновныеНачисленияОрганизацийПоказатели.Показатель КАК Показатель, | ОсновныеНачисленияОрганизацийПоказатели.Показатель.ВозможностьИзменения, | ОсновныеНачисленияОрганизацийПоказатели.НомерСтроки КАК НомерСтроки, | ОсновныеНачисленияОрганизацийПоказатели.Ссылка КАК Ссылка, | ВЫБОР | КОГДА ОсновныеНачисленияОрганизацийПоказатели.Показатель = ЗНАЧЕНИЕ(Справочник.ПоказателиСхемМотивации.ТарифнаяСтавкаМесячная) | ТОГДА ИСТИНА | КОГДА ОсновныеНачисленияОрганизацийПоказатели.Показатель = ЗНАЧЕНИЕ(Справочник.ПоказателиСхемМотивации.ТарифнаяСтавкаДневная) | ТОГДА ИСТИНА | КОГДА ОсновныеНачисленияОрганизацийПоказатели.Показатель = ЗНАЧЕНИЕ(Справочник.ПоказателиСхемМотивации.ТарифнаяСтавкаЧасовая) | ТОГДА ИСТИНА | КОГДА ОсновныеНачисленияОрганизацийПоказатели.Показатель.ТарифнаяСтавка | ТОГДА ИСТИНА | ИНАЧЕ ЛОЖЬ | КОНЕЦ КАК ЭтоТарифнаяСтавка |ПОМЕСТИТЬ ВТНеЗапрашиваемыеПриКадровыхПеремещениях |ИЗ | ПланВидовРасчета.ОсновныеНачисленияОрганизаций.Показатели КАК ОсновныеНачисленияОрганизацийПоказатели |ГДЕ | ((НЕ ОсновныеНачисленияОрганизацийПоказатели.ЗапрашиватьПриКадровыхПеремещениях) | ИЛИ ОсновныеНачисленияОрганизацийПоказатели.Показатель = ЗНАЧЕНИЕ(Справочник.ПоказателиСхемМотивации.ТарифнаяСтавкаМесячная) | ИЛИ ОсновныеНачисленияОрганизацийПоказатели.Показатель = ЗНАЧЕНИЕ(Справочник.ПоказателиСхемМотивации.ТарифнаяСтавкаДневная) | ИЛИ ОсновныеНачисленияОрганизацийПоказатели.Показатель = ЗНАЧЕНИЕ(Справочник.ПоказателиСхемМотивации.ТарифнаяСтавкаЧасовая) | ИЛИ ОсновныеНачисленияОрганизацийПоказатели.Показатель.ТарифнаяСтавка) | И ОсновныеНачисленияОрганизацийПоказатели.Показатель.ВозможностьИзменения <> ЗНАЧЕНИЕ(Перечисление.ИзменениеПоказателейСхемМотивации.Ежемесячно) | |ОБЪЕДИНИТЬ | |ВЫБРАТЬ | ДополнительныеНачисленияОрганизацийПоказатели.Показатель, | ДополнительныеНачисленияОрганизацийПоказатели.Показатель.ВозможностьИзменения, | ДополнительныеНачисленияОрганизацийПоказатели.НомерСтроки, | ДополнительныеНачисленияОрганизацийПоказатели.Ссылка, | ВЫБОР | КОГДА ДополнительныеНачисленияОрганизацийПоказатели.Показатель = ЗНАЧЕНИЕ(Справочник.ПоказателиСхемМотивации.ТарифнаяСтавкаМесячная) | ТОГДА ИСТИНА | КОГДА ДополнительныеНачисленияОрганизацийПоказатели.Показатель = ЗНАЧЕНИЕ(Справочник.ПоказателиСхемМотивации.ТарифнаяСтавкаДневная) | ТОГДА ИСТИНА | КОГДА ДополнительныеНачисленияОрганизацийПоказатели.Показатель = ЗНАЧЕНИЕ(Справочник.ПоказателиСхемМотивации.ТарифнаяСтавкаЧасовая) | ТОГДА ИСТИНА | КОГДА ДополнительныеНачисленияОрганизацийПоказатели.Показатель.ТарифнаяСтавка | ТОГДА ИСТИНА | ИНАЧЕ ЛОЖЬ | КОНЕЦ |ИЗ | ПланВидовРасчета.ДополнительныеНачисленияОрганизаций.Показатели КАК ДополнительныеНачисленияОрганизацийПоказатели |ГДЕ | ((НЕ ДополнительныеНачисленияОрганизацийПоказатели.ЗапрашиватьПриКадровыхПеремещениях) | ИЛИ ДополнительныеНачисленияОрганизацийПоказатели.Показатель = ЗНАЧЕНИЕ(Справочник.ПоказателиСхемМотивации.ТарифнаяСтавкаМесячная) | ИЛИ ДополнительныеНачисленияОрганизацийПоказатели.Показатель = ЗНАЧЕНИЕ(Справочник.ПоказателиСхемМотивации.ТарифнаяСтавкаДневная) | ИЛИ ДополнительныеНачисленияОрганизацийПоказатели.Показатель = ЗНАЧЕНИЕ(Справочник.ПоказателиСхемМотивации.ТарифнаяСтавкаЧасовая) | ИЛИ ДополнительныеНачисленияОрганизацийПоказатели.Показатель.ТарифнаяСтавка) | И ДополнительныеНачисленияОрганизацийПоказатели.Показатель.ВозможностьИзменения <> ЗНАЧЕНИЕ(Перечисление.ИзменениеПоказателейСхемМотивации.Ежемесячно) | |ОБЪЕДИНИТЬ | |ВЫБРАТЬ | УдержанияОрганизацийПоказатели.Показатель, | УдержанияОрганизацийПоказатели.Показатель.ВозможностьИзменения, | УдержанияОрганизацийПоказатели.НомерСтроки, | УдержанияОрганизацийПоказатели.Ссылка, | ВЫБОР | КОГДА УдержанияОрганизацийПоказатели.Показатель = ЗНАЧЕНИЕ(Справочник.ПоказателиСхемМотивации.ТарифнаяСтавкаМесячная) | ТОГДА ИСТИНА | КОГДА УдержанияОрганизацийПоказатели.Показатель = ЗНАЧЕНИЕ(Справочник.ПоказателиСхемМотивации.ТарифнаяСтавкаДневная) | ТОГДА ИСТИНА | КОГДА УдержанияОрганизацийПоказатели.Показатель = ЗНАЧЕНИЕ(Справочник.ПоказателиСхемМотивации.ТарифнаяСтавкаЧасовая) | ТОГДА ИСТИНА | КОГДА УдержанияОрганизацийПоказатели.Показатель.ТарифнаяСтавка | ТОГДА ИСТИНА | ИНАЧЕ ЛОЖЬ | КОНЕЦ |ИЗ | ПланВидовРасчета.УдержанияОрганизаций.Показатели КАК УдержанияОрганизацийПоказатели |ГДЕ | ((НЕ УдержанияОрганизацийПоказатели.ЗапрашиватьПриКадровыхПеремещениях) | ИЛИ УдержанияОрганизацийПоказатели.Показатель = ЗНАЧЕНИЕ(Справочник.ПоказателиСхемМотивации.ТарифнаяСтавкаМесячная) | ИЛИ УдержанияОрганизацийПоказатели.Показатель = ЗНАЧЕНИЕ(Справочник.ПоказателиСхемМотивации.ТарифнаяСтавкаДневная) | ИЛИ УдержанияОрганизацийПоказатели.Показатель = ЗНАЧЕНИЕ(Справочник.ПоказателиСхемМотивации.ТарифнаяСтавкаЧасовая) | ИЛИ УдержанияОрганизацийПоказатели.Показатель.ТарифнаяСтавка) | И УдержанияОрганизацийПоказатели.Показатель.ВозможностьИзменения <> ЗНАЧЕНИЕ(Перечисление.ИзменениеПоказателейСхемМотивации.Ежемесячно) | |ИНДЕКСИРОВАТЬ ПО | Показатель"; Запрос.Выполнить(); // таблица ВводимыеВПлановыхНачисленияхПоказатели // виды расчета и показатели, значения которых находятся при этих в.р. в данных о плановых начислениях // // Поля: // Ссылка - вид расчета // Показатель // НомерСтроки - номер строки показателя // Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ | ОсновныеНачисленияОрганизаций.Ссылка КАК Ссылка, | ВЫБОР | КОГДА ОсновныеНачисленияОрганизаций.СпособРасчета В (ЗНАЧЕНИЕ(Перечисление.СпособыРасчетаОплатыТруда.ПоМесячнойТарифнойСтавкеПоДням), ЗНАЧЕНИЕ(Перечисление.СпособыРасчетаОплатыТруда.ПоМесячнойТарифнойСтавкеПоЧасам)) | ТОГДА ЗНАЧЕНИЕ(Справочник.ПоказателиСхемМотивации.ТарифнаяСтавкаМесячная) | КОГДА ОсновныеНачисленияОрганизаций.СпособРасчета В (ЗНАЧЕНИЕ(Перечисление.СпособыРасчетаОплатыТруда.ПоЧасовойТарифнойСтавке), ЗНАЧЕНИЕ(Перечисление.СпособыРасчетаОплатыТруда.СдельныйЗаработок)) | ТОГДА ЗНАЧЕНИЕ(Справочник.ПоказателиСхемМотивации.ТарифнаяСтавкаЧасовая) | ИНАЧЕ ЗНАЧЕНИЕ(Справочник.ПоказателиСхемМотивации.ТарифнаяСтавкаДневная) | КОНЕЦ КАК Показатель, | 1 КАК НомерСтроки, | ИСТИНА КАК ЭтоТарифнаяСтавка |ПОМЕСТИТЬ ВТВводимыеВПлановыхНачисленияхПоказатели |ИЗ | ПланВидовРасчета.ОсновныеНачисленияОрганизаций КАК ОсновныеНачисленияОрганизаций |ГДЕ | ОсновныеНачисленияОрганизаций.СпособРасчета В (ЗНАЧЕНИЕ(Перечисление.СпособыРасчетаОплатыТруда.ПоМесячнойТарифнойСтавкеПоДням), ЗНАЧЕНИЕ(Перечисление.СпособыРасчетаОплатыТруда.ПоМесячнойТарифнойСтавкеПоЧасам), ЗНАЧЕНИЕ(Перечисление.СпособыРасчетаОплатыТруда.ПоЧасовойТарифнойСтавке), ЗНАЧЕНИЕ(Перечисление.СпособыРасчетаОплатыТруда.СдельныйЗаработок), ЗНАЧЕНИЕ(Перечисление.СпособыРасчетаОплатыТруда.ПоДневнойТарифнойСтавке)) | И ОсновныеНачисленияОрганизаций.ЗачетОтработанногоВремени | |ОБЪЕДИНИТЬ | |ВЫБРАТЬ РАЗЛИЧНЫЕ | ОсновныеНачисленияОрганизацийПоказатели.Ссылка, | ОсновныеНачисленияОрганизацийПоказатели.Показатель, | ОсновныеНачисленияОрганизацийПоказатели.НомерСтроки, | ИСТИНА |ИЗ | ПланВидовРасчета.ОсновныеНачисленияОрганизаций.Показатели КАК ОсновныеНачисленияОрганизацийПоказатели |ГДЕ | (ОсновныеНачисленияОрганизацийПоказатели.Ссылка.ЗачетОтработанногоВремени | И ОсновныеНачисленияОрганизацийПоказатели.Показатель.ТарифнаяСтавка | И (НЕ ОсновныеНачисленияОрганизацийПоказатели.Показатель.Предопределенный) | ИЛИ (ОсновныеНачисленияОрганизацийПоказатели.Показатель = ЗНАЧЕНИЕ(Справочник.ПоказателиСхемМотивации.ТарифнаяСтавкаДневная) | ИЛИ ОсновныеНачисленияОрганизацийПоказатели.Показатель = ЗНАЧЕНИЕ(Справочник.ПоказателиСхемМотивации.ТарифнаяСтавкаМесячная) | ИЛИ ОсновныеНачисленияОрганизацийПоказатели.Показатель = ЗНАЧЕНИЕ(Справочник.ПоказателиСхемМотивации.ТарифнаяСтавкаЧасовая))) | |ОБЪЕДИНИТЬ | |ВЫБРАТЬ РАЗЛИЧНЫЕ | ОсновныеНачисленияОрганизацийПоказатели.Ссылка, | ОсновныеНачисленияОрганизацийПоказатели.Показатель, | ОсновныеНачисленияОрганизацийПоказатели.НомерСтроки, | ЛОЖЬ |ИЗ | ПланВидовРасчета.ОсновныеНачисленияОрганизаций.Показатели КАК ОсновныеНачисленияОрганизацийПоказатели |ГДЕ | ОсновныеНачисленияОрганизацийПоказатели.Показатель В | (ВЫБРАТЬ | ВТНеЗапрашиваемыеПриКадровыхПеремещениях.Показатель | ИЗ | ВТНеЗапрашиваемыеПриКадровыхПеремещениях) | И (НЕ ОсновныеНачисленияОрганизацийПоказатели.Показатель.ТарифнаяСтавка) | |ИНДЕКСИРОВАТЬ ПО | Ссылка"; Запрос.Выполнить(); // РаботникиИНачисления // Таблица движений работников с добавленными сведениями об их плановых начислениях // // Поля: // Сотрудник // ВидРасчета - плановое начисление // Показатель1,...,6 - размеры показателей // СпособРасчета - способ расчета начисления // ГрафикРаботы - график сотрудника // ВидГрафика, СуммированныйУчетРабочегоВремени, ДлительностьРабочейНедели - реквизиты графика сотрудника // // Описание: // // 1. // 2. // Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | Работники.Сотрудник КАК Сотрудник, | Работники.Сотрудник.Наименование КАК СотрудникНаименование, | Работники.Сотрудник.Физлицо КАК Физлицо, | ВЫБОР | КОГДА Работники.Период >= НачисленияРаботниковОрганизации.Период | ИЛИ НачисленияРаботниковОрганизации.Период ЕСТЬ NULL | ТОГДА Работники.Период | ИНАЧЕ НачисленияРаботниковОрганизации.Период | КОНЕЦ КАК Период, | Работники.Подходит, | Работники.Период КАК ПериодРаботники, | НачисленияРаботниковОрганизации.Период КАК ПериодНачисления, | НачисленияРаботниковОрганизации.ОсновноеНачисление, | НачисленияРаботниковОрганизации.ВидРасчета, | НачисленияРаботниковОрганизации.ВидРасчета.НачисляетсяВЦеломЗаМесяц КАК НачисляетсяВЦеломЗаМесяц, | НачисленияРаботниковОрганизации.ВидРасчета.Наименование, | НачисленияРаботниковОрганизации.ВидРасчета.ВидСтажа, | НачисленияРаботниковОрганизации.ВидРасчета.ТребуетВводаТарифногоРазряда, | НачисленияРаботниковОрганизации.ВидРасчета.КоэффициентСтажа, | НачисленияРаботниковОрганизации.ВидРасчета.СпособРасчета КАК СпособРасчета, | ВЫБОР | КОГДА НачисленияРаботниковОрганизации.ВидРасчета ССЫЛКА ПланВидовРасчета.ОсновныеНачисленияОрганизаций | ТОГДА НачисленияРаботниковОрганизации.ВидРасчета.ВидВремени | ИНАЧЕ NULL | КОНЕЦ КАК ВидВремени, | НачисленияРаботниковОрганизации.Действие КАК Действие, | ВЫБОР | КОГДА НачисленияРаботниковОрганизации.ВидРасчета.КодДоходаНДФЛ = ЗНАЧЕНИЕ(Справочник.ДоходыНДФЛ.Код2761) | ТОГДА ЗНАЧЕНИЕ(Справочник.ВычетыНДФЛ.Код506) | КОГДА НачисленияРаботниковОрганизации.ВидРасчета.КодДоходаНДФЛ = ЗНАЧЕНИЕ(Справочник.ДоходыНДФЛ.Код2720) | ТОГДА ЗНАЧЕНИЕ(Справочник.ВычетыНДФЛ.Код501) | КОГДА НачисленияРаботниковОрганизации.ВидРасчета.КодДоходаНДФЛ = ЗНАЧЕНИЕ(Справочник.ДоходыНДФЛ.Код2730) | ТОГДА ЗНАЧЕНИЕ(Справочник.ВычетыНДФЛ.Код502) | КОГДА НачисленияРаботниковОрганизации.ВидРасчета.КодДоходаНДФЛ = ЗНАЧЕНИЕ(Справочник.ДоходыНДФЛ.Код2760) | ТОГДА ЗНАЧЕНИЕ(Справочник.ВычетыНДФЛ.Код503) | КОГДА НачисленияРаботниковОрганизации.ВидРасчета.КодДоходаНДФЛ = ЗНАЧЕНИЕ(Справочник.ДоходыНДФЛ.Код2770) | ТОГДА ЗНАЧЕНИЕ(Справочник.ВычетыНДФЛ.Код504) | КОГДА НачисленияРаботниковОрганизации.ВидРасчета.КодДоходаНДФЛ = ЗНАЧЕНИЕ(Справочник.ДоходыНДФЛ.Код2790) | ТОГДА ЗНАЧЕНИЕ(Справочник.ВычетыНДФЛ.Код507) | ИНАЧЕ ЗНАЧЕНИЕ(Справочник.ВычетыНДФЛ.ПустаяСсылка) | КОНЕЦ КАК КодВычета, | ВЫБОР | КОГДА НачисленияРаботниковОрганизации.ВидРасчета.ТребуетВводаТарифногоРазряда | ИЛИ НачисленияРаботниковОрганизации.ВидРасчета.ПроизвольнаяФормулаРасчета | И (НачисленияРаботниковОрганизации.ТарифныйРазряд1 <> ЗНАЧЕНИЕ(Справочник.ТарифныеРазряды.ПустаяСсылка) | И НачисленияРаботниковОрганизации.ТарифныйРазряд1 ЕСТЬ НЕ NULL ) | ТОГДА ТарифныеСтавки1.Размер | ИНАЧЕ НачисленияРаботниковОрганизации.Показатель1 | КОНЕЦ КАК Показатель1, | ВЫБОР | КОГДА НачисленияРаботниковОрганизации.ВидРасчета.ПроизвольнаяФормулаРасчета | И НачисленияРаботниковОрганизации.ТарифныйРазряд2 <> ЗНАЧЕНИЕ(Справочник.ТарифныеРазряды.ПустаяСсылка) | И НачисленияРаботниковОрганизации.ТарифныйРазряд2 ЕСТЬ НЕ NULL | ТОГДА ТарифныеСтавки2.Размер | ИНАЧЕ НачисленияРаботниковОрганизации.Показатель2 | КОНЕЦ КАК Показатель2, | ВЫБОР | КОГДА НачисленияРаботниковОрганизации.ВидРасчета.ПроизвольнаяФормулаРасчета | И НачисленияРаботниковОрганизации.ТарифныйРазряд3 <> ЗНАЧЕНИЕ(Справочник.ТарифныеРазряды.ПустаяСсылка) | И НачисленияРаботниковОрганизации.ТарифныйРазряд3 ЕСТЬ НЕ NULL | ТОГДА ТарифныеСтавки3.Размер | ИНАЧЕ НачисленияРаботниковОрганизации.Показатель3 | КОНЕЦ КАК Показатель3, | ВЫБОР | КОГДА НачисленияРаботниковОрганизации.ВидРасчета.ПроизвольнаяФормулаРасчета | И НачисленияРаботниковОрганизации.ТарифныйРазряд4 <> ЗНАЧЕНИЕ(Справочник.ТарифныеРазряды.ПустаяСсылка) | И НачисленияРаботниковОрганизации.ТарифныйРазряд4 ЕСТЬ НЕ NULL | ТОГДА ТарифныеСтавки4.Размер | ИНАЧЕ НачисленияРаботниковОрганизации.Показатель4 | КОНЕЦ КАК Показатель4, | ВЫБОР | КОГДА НачисленияРаботниковОрганизации.ВидРасчета.ПроизвольнаяФормулаРасчета | И НачисленияРаботниковОрганизации.ТарифныйРазряд5 <> ЗНАЧЕНИЕ(Справочник.ТарифныеРазряды.ПустаяСсылка) | И НачисленияРаботниковОрганизации.ТарифныйРазряд5 ЕСТЬ НЕ NULL | ТОГДА ТарифныеСтавки5.Размер | ИНАЧЕ НачисленияРаботниковОрганизации.Показатель5 | КОНЕЦ КАК Показатель5, | ВЫБОР | КОГДА НачисленияРаботниковОрганизации.ВидРасчета.ПроизвольнаяФормулаРасчета | И НачисленияРаботниковОрганизации.ТарифныйРазряд6 <> ЗНАЧЕНИЕ(Справочник.ТарифныеРазряды.ПустаяСсылка) | И НачисленияРаботниковОрганизации.ТарифныйРазряд6 ЕСТЬ НЕ NULL | ТОГДА ТарифныеСтавки6.Размер | ИНАЧЕ НачисленияРаботниковОрганизации.Показатель6 | КОНЕЦ КАК Показатель6, | ВЫБОР | КОГДА НачисленияРаботниковОрганизации.ВидРасчета.ТребуетВводаТарифногоРазряда | ТОГДА ТарифныеСтавки1.Валюта | ИНАЧЕ НачисленияРаботниковОрганизации.Валюта1 | КОНЕЦ КАК Валюта1, | ВЫБОР | КОГДА НачисленияРаботниковОрганизации.ВидРасчета.ТребуетВводаТарифногоРазряда | ТОГДА ТарифныеСтавки2.Валюта | ИНАЧЕ НачисленияРаботниковОрганизации.Валюта2 | КОНЕЦ КАК Валюта2, | ВЫБОР | КОГДА НачисленияРаботниковОрганизации.ВидРасчета.ТребуетВводаТарифногоРазряда | ТОГДА ТарифныеСтавки3.Валюта | ИНАЧЕ НачисленияРаботниковОрганизации.Валюта3 | КОНЕЦ КАК Валюта3, | ВЫБОР | КОГДА НачисленияРаботниковОрганизации.ВидРасчета.ТребуетВводаТарифногоРазряда | ТОГДА ТарифныеСтавки4.Валюта | ИНАЧЕ НачисленияРаботниковОрганизации.Валюта4 | КОНЕЦ КАК Валюта4, | ВЫБОР | КОГДА НачисленияРаботниковОрганизации.ВидРасчета.ТребуетВводаТарифногоРазряда | ТОГДА ТарифныеСтавки5.Валюта | ИНАЧЕ НачисленияРаботниковОрганизации.Валюта5 | КОНЕЦ КАК Валюта5, | ВЫБОР | КОГДА НачисленияРаботниковОрганизации.ВидРасчета.ТребуетВводаТарифногоРазряда | ТОГДА ТарифныеСтавки6.Валюта | ИНАЧЕ НачисленияРаботниковОрганизации.Валюта6 | КОНЕЦ КАК Валюта6, | НачисленияРаботниковОрганизации.ДатаНачалаСобытия КАК ДатаНачалаСобытия, | Работники.ПодразделениеОрганизации КАК ПодразделениеОрганизации, | Работники.ГрафикРаботы КАК ГрафикРаботы, | ЕСТЬNULL(Работники.ГрафикРаботы.СуммированныйУчетРабочегоВремени, ЛОЖЬ) КАК СуммированныйУчетРабочегоВремени, | ЕСТЬNULL(ВЫБОР | КОГДА Работники.ГрафикРаботы.СокращенноеРабочееВремя | И Работники.ГрафикРаботы.ГрафикПолногоРабочегоВремени <> ЗНАЧЕНИЕ(Справочник.ГрафикиРаботы.ПустаяСсылка) | ТОГДА Работники.ГрафикРаботы.ГрафикПолногоРабочегоВремени.ДлительностьРабочейНедели | ИНАЧЕ Работники.ГрафикРаботы.ДлительностьРабочейНедели | КОНЕЦ, 0) КАК ДлительностьРабочейНедели, | Работники.ГрафикРаботы.ВидГрафика КАК ВидГрафика, | Работники.Должность КАК Должность |ПОМЕСТИТЬ ВТРаботникиИНачисления |ИЗ | ВТДвиженияРаботников КАК Работники | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | &парамНачало КАК Период, | ВЫБОР | КОГДА НачисленияРаботниковОрганизации.ВидРасчетаИзмерение.Код ЕСТЬ NULL | ТОГДА ИСТИНА | ИНАЧЕ ЛОЖЬ | КОНЕЦ КАК ОсновноеНачисление, | ВЫБОР | КОГДА НачисленияРаботниковОрганизации.ПериодЗавершения <= &парамНачало | И НачисленияРаботниковОрганизации.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | ТОГДА ВЫБОР | КОГДА НачисленияРаботниковОрганизации.ДействиеЗавершения = ЗНАЧЕНИЕ(Перечисление.ВидыДействияСНачислением.Прекратить) | ТОГДА НачисленияРаботниковОрганизации.ВидРасчета | ИНАЧЕ НачисленияРаботниковОрганизации.ВидРасчетаЗавершения | КОНЕЦ | ИНАЧЕ НачисленияРаботниковОрганизации.ВидРасчета | КОНЕЦ КАК ВидРасчета, | ВЫБОР | КОГДА НачисленияРаботниковОрганизации.ПериодЗавершения <= &парамНачало | И НачисленияРаботниковОрганизации.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | ТОГДА НачисленияРаботниковОрганизации.ДействиеЗавершения | ИНАЧЕ НачисленияРаботниковОрганизации.Действие | КОНЕЦ КАК Действие, | ВЫБОР | КОГДА НачисленияРаботниковОрганизации.ПериодЗавершения <= &парамНачало | И НачисленияРаботниковОрганизации.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | ТОГДА НачисленияРаботниковОрганизации.Показатель1Завершения | ИНАЧЕ НачисленияРаботниковОрганизации.Показатель1 | КОНЕЦ КАК Показатель1, | ВЫБОР | КОГДА НачисленияРаботниковОрганизации.ПериодЗавершения <= &парамНачало | И НачисленияРаботниковОрганизации.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | ТОГДА НачисленияРаботниковОрганизации.Показатель2Завершения | ИНАЧЕ НачисленияРаботниковОрганизации.Показатель2 | КОНЕЦ КАК Показатель2, | ВЫБОР | КОГДА НачисленияРаботниковОрганизации.ПериодЗавершения <= &парамНачало | И НачисленияРаботниковОрганизации.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | ТОГДА НачисленияРаботниковОрганизации.Показатель3Завершения | ИНАЧЕ НачисленияРаботниковОрганизации.Показатель3 | КОНЕЦ КАК Показатель3, | ВЫБОР | КОГДА НачисленияРаботниковОрганизации.ПериодЗавершения <= &парамНачало | И НачисленияРаботниковОрганизации.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | ТОГДА НачисленияРаботниковОрганизации.Показатель4Завершения | ИНАЧЕ НачисленияРаботниковОрганизации.Показатель4 | КОНЕЦ КАК Показатель4, | ВЫБОР | КОГДА НачисленияРаботниковОрганизации.ПериодЗавершения <= &парамНачало | И НачисленияРаботниковОрганизации.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | ТОГДА НачисленияРаботниковОрганизации.Показатель5Завершения | ИНАЧЕ НачисленияРаботниковОрганизации.Показатель5 | КОНЕЦ КАК Показатель5, | ВЫБОР | КОГДА НачисленияРаботниковОрганизации.ПериодЗавершения <= &парамНачало | И НачисленияРаботниковОрганизации.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | ТОГДА НачисленияРаботниковОрганизации.Показатель6Завершения | ИНАЧЕ НачисленияРаботниковОрганизации.Показатель6 | КОНЕЦ КАК Показатель6, | ВЫБОР | КОГДА НачисленияРаботниковОрганизации.ПериодЗавершения <= &парамНачало | И НачисленияРаботниковОрганизации.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | ТОГДА НачисленияРаботниковОрганизации.Валюта1Завершения | ИНАЧЕ НачисленияРаботниковОрганизации.Валюта1 | КОНЕЦ КАК Валюта1, | ВЫБОР | КОГДА НачисленияРаботниковОрганизации.ПериодЗавершения <= &парамНачало | И НачисленияРаботниковОрганизации.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | ТОГДА НачисленияРаботниковОрганизации.Валюта2Завершения | ИНАЧЕ НачисленияРаботниковОрганизации.Валюта2 | КОНЕЦ КАК Валюта2, | ВЫБОР | КОГДА НачисленияРаботниковОрганизации.ПериодЗавершения <= &парамНачало | И НачисленияРаботниковОрганизации.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | ТОГДА НачисленияРаботниковОрганизации.Валюта3Завершения | ИНАЧЕ НачисленияРаботниковОрганизации.Валюта3 | КОНЕЦ КАК Валюта3, | ВЫБОР | КОГДА НачисленияРаботниковОрганизации.ПериодЗавершения <= &парамНачало | И НачисленияРаботниковОрганизации.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | ТОГДА НачисленияРаботниковОрганизации.Валюта4Завершения | ИНАЧЕ НачисленияРаботниковОрганизации.Валюта4 | КОНЕЦ КАК Валюта4, | ВЫБОР | КОГДА НачисленияРаботниковОрганизации.ПериодЗавершения <= &парамНачало | И НачисленияРаботниковОрганизации.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | ТОГДА НачисленияРаботниковОрганизации.Валюта5Завершения | ИНАЧЕ НачисленияРаботниковОрганизации.Валюта5 | КОНЕЦ КАК Валюта5, | ВЫБОР | КОГДА НачисленияРаботниковОрганизации.ПериодЗавершения <= &парамНачало | И НачисленияРаботниковОрганизации.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | ТОГДА НачисленияРаботниковОрганизации.Валюта6Завершения | ИНАЧЕ НачисленияРаботниковОрганизации.Валюта6 | КОНЕЦ КАК Валюта6, | НачисленияРаботниковОрганизации.Сотрудник КАК Сотрудник, | НачисленияРаботниковОрганизации.ДатаНачалаСобытия КАК ДатаНачалаСобытия, | ВЫБОР | КОГДА НачисленияРаботниковОрганизации.ПериодЗавершения <= &парамНачало | И НачисленияРаботниковОрганизации.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | ТОГДА НачисленияРаботниковОрганизации.ТарифныйРазряд1Завершения | ИНАЧЕ НачисленияРаботниковОрганизации.ТарифныйРазряд1 | КОНЕЦ КАК ТарифныйРазряд1, | ВЫБОР | КОГДА НачисленияРаботниковОрганизации.ПериодЗавершения <= &парамНачало | И НачисленияРаботниковОрганизации.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | ТОГДА НачисленияРаботниковОрганизации.ТарифныйРазряд2Завершения | ИНАЧЕ НачисленияРаботниковОрганизации.ТарифныйРазряд2 | КОНЕЦ КАК ТарифныйРазряд2, | ВЫБОР | КОГДА НачисленияРаботниковОрганизации.ПериодЗавершения <= &парамНачало | И НачисленияРаботниковОрганизации.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | ТОГДА НачисленияРаботниковОрганизации.ТарифныйРазряд3Завершения | ИНАЧЕ НачисленияРаботниковОрганизации.ТарифныйРазряд3 | КОНЕЦ КАК ТарифныйРазряд3, | ВЫБОР | КОГДА НачисленияРаботниковОрганизации.ПериодЗавершения <= &парамНачало | И НачисленияРаботниковОрганизации.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | ТОГДА НачисленияРаботниковОрганизации.ТарифныйРазряд4Завершения | ИНАЧЕ НачисленияРаботниковОрганизации.ТарифныйРазряд4 | КОНЕЦ КАК ТарифныйРазряд4, | ВЫБОР | КОГДА НачисленияРаботниковОрганизации.ПериодЗавершения <= &парамНачало | И НачисленияРаботниковОрганизации.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | ТОГДА НачисленияРаботниковОрганизации.ТарифныйРазряд5Завершения | ИНАЧЕ НачисленияРаботниковОрганизации.ТарифныйРазряд5 | КОНЕЦ КАК ТарифныйРазряд5, | ВЫБОР | КОГДА НачисленияРаботниковОрганизации.ПериодЗавершения <= &парамНачало | И НачисленияРаботниковОрганизации.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | ТОГДА НачисленияРаботниковОрганизации.ТарифныйРазряд6Завершения | ИНАЧЕ НачисленияРаботниковОрганизации.ТарифныйРазряд6 | КОНЕЦ КАК ТарифныйРазряд6 | ИЗ | РегистрСведений.ПлановыеНачисленияРаботниковОрганизаций.СрезПоследних( | &парамНачало, | ДокументОснование = ЗНАЧЕНИЕ(Документ.ДоговорНаВыполнениеРаботСФизЛицом.ПустаяСсылка) | И Сотрудник В | (ВЫБРАТЬ | Работники.Сотрудник | ИЗ | ВТСписокРаботников КАК Работники)) КАК НачисленияРаботниковОрганизации | ГДЕ | ВЫБОР | КОГДА НачисленияРаботниковОрганизации.ПериодЗавершения <= &парамНачало | И НачисленияРаботниковОрганизации.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | ТОГДА НачисленияРаботниковОрганизации.ДействиеЗавершения | ИНАЧЕ НачисленияРаботниковОрганизации.Действие | КОНЕЦ <> ЗНАЧЕНИЕ(Перечисление.ВидыДействияСНачислением.Прекратить) | | ОБЪЕДИНИТЬ ВСЕ | | ВЫБРАТЬ | НачисленияРаботниковОрганизации.Период, | ВЫБОР | КОГДА НачисленияРаботниковОрганизации.ВидРасчетаИзмерение.Код ЕСТЬ NULL | ТОГДА ИСТИНА | ИНАЧЕ ЛОЖЬ | КОНЕЦ, | НачисленияРаботниковОрганизации.ВидРасчета, | НачисленияРаботниковОрганизации.Действие, | НачисленияРаботниковОрганизации.Показатель1, | НачисленияРаботниковОрганизации.Показатель2, | НачисленияРаботниковОрганизации.Показатель3, | НачисленияРаботниковОрганизации.Показатель4, | НачисленияРаботниковОрганизации.Показатель5, | НачисленияРаботниковОрганизации.Показатель6, | НачисленияРаботниковОрганизации.Валюта1, | НачисленияРаботниковОрганизации.Валюта2, | НачисленияРаботниковОрганизации.Валюта3, | НачисленияРаботниковОрганизации.Валюта4, | НачисленияРаботниковОрганизации.Валюта5, | НачисленияРаботниковОрганизации.Валюта6, | НачисленияРаботниковОрганизации.Сотрудник, | НачисленияРаботниковОрганизации.ДатаНачалаСобытия, | НачисленияРаботниковОрганизации.ТарифныйРазряд1, | НачисленияРаботниковОрганизации.ТарифныйРазряд2, | НачисленияРаботниковОрганизации.ТарифныйРазряд3, | НачисленияРаботниковОрганизации.ТарифныйРазряд4, | НачисленияРаботниковОрганизации.ТарифныйРазряд5, | НачисленияРаботниковОрганизации.ТарифныйРазряд6 | ИЗ | РегистрСведений.ПлановыеНачисленияРаботниковОрганизаций КАК НачисленияРаботниковОрганизации | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТСписокРаботников КАК ТаблицаДвиженийРаботников | ПО НачисленияРаботниковОрганизации.Сотрудник = ТаблицаДвиженийРаботников.Сотрудник | ГДЕ | НачисленияРаботниковОрганизации.Период > &парамНачало | И НачисленияРаботниковОрганизации.Период <= &парамКонец | И НачисленияРаботниковОрганизации.Организация = &парамГоловнаяОрганизация | И НачисленияРаботниковОрганизации.ДокументОснование = ЗНАЧЕНИЕ(Документ.ДоговорНаВыполнениеРаботСФизЛицом.ПустаяСсылка) | | ОБЪЕДИНИТЬ ВСЕ | | ВЫБРАТЬ | НачисленияРаботниковОрганизации.ПериодЗавершения, | ВЫБОР | КОГДА НачисленияРаботниковОрганизации.ВидРасчетаИзмерение.Код ЕСТЬ NULL | ТОГДА ИСТИНА | ИНАЧЕ ЛОЖЬ | КОНЕЦ, | ВЫБОР | КОГДА НачисленияРаботниковОрганизации.ДействиеЗавершения = ЗНАЧЕНИЕ(Перечисление.ВидыДействияСНачислением.Прекратить) | ТОГДА НачисленияРаботниковОрганизации.ВидРасчета | ИНАЧЕ НачисленияРаботниковОрганизации.ВидРасчетаЗавершения | КОНЕЦ, | НачисленияРаботниковОрганизации.ДействиеЗавершения, | НачисленияРаботниковОрганизации.Показатель1Завершения, | НачисленияРаботниковОрганизации.Показатель2Завершения, | НачисленияРаботниковОрганизации.Показатель3Завершения, | НачисленияРаботниковОрганизации.Показатель4Завершения, | НачисленияРаботниковОрганизации.Показатель5Завершения, | НачисленияРаботниковОрганизации.Показатель6Завершения, | НачисленияРаботниковОрганизации.Валюта1Завершения, | НачисленияРаботниковОрганизации.Валюта2Завершения, | НачисленияРаботниковОрганизации.Валюта3Завершения, | НачисленияРаботниковОрганизации.Валюта4Завершения, | НачисленияРаботниковОрганизации.Валюта5Завершения, | НачисленияРаботниковОрганизации.Валюта6Завершения, | НачисленияРаботниковОрганизации.Сотрудник, | НачисленияРаботниковОрганизации.ДатаНачалаСобытия, | НачисленияРаботниковОрганизации.ТарифныйРазряд1Завершения, | НачисленияРаботниковОрганизации.ТарифныйРазряд2Завершения, | НачисленияРаботниковОрганизации.ТарифныйРазряд3Завершения, | НачисленияРаботниковОрганизации.ТарифныйРазряд4Завершения, | НачисленияРаботниковОрганизации.ТарифныйРазряд5Завершения, | НачисленияРаботниковОрганизации.ТарифныйРазряд6Завершения | ИЗ | РегистрСведений.ПлановыеНачисленияРаботниковОрганизаций КАК НачисленияРаботниковОрганизации | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТСписокРаботников КАК ТаблицаДвиженийРаботников | ПО НачисленияРаботниковОрганизации.Сотрудник = ТаблицаДвиженийРаботников.Сотрудник | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПлановыеНачисленияРаботниковОрганизаций КАК НачисленияРаботниковПроверка | ПО НачисленияРаботниковОрганизации.Сотрудник = НачисленияРаботниковПроверка.Сотрудник | И НачисленияРаботниковОрганизации.ВидРасчетаИзмерение = НачисленияРаботниковПроверка.ВидРасчетаИзмерение | И НачисленияРаботниковОрганизации.ДокументОснование = НачисленияРаботниковПроверка.ДокументОснование | И (НачисленияРаботниковПроверка.Период > НачисленияРаботниковОрганизации.Период) | И (НачисленияРаботниковПроверка.Период <= НачисленияРаботниковОрганизации.ПериодЗавершения) | ГДЕ | НачисленияРаботниковОрганизации.ПериодЗавершения >= &парамНачало | И НачисленияРаботниковОрганизации.ПериодЗавершения <= &парамКонец | И НачисленияРаботниковОрганизации.Организация = &парамГоловнаяОрганизация | И НачисленияРаботниковОрганизации.ДокументОснование = ЗНАЧЕНИЕ(Документ.ДоговорНаВыполнениеРаботСФизЛицом.ПустаяСсылка) | И НачисленияРаботниковПроверка.Сотрудник ЕСТЬ NULL | | ОБЪЕДИНИТЬ ВСЕ | | ВЫБРАТЬ | ВЫБОР | КОГДА ОкладыПоВоинскимИСпециальнымЗваниямСрезПоследних.Период >= &парамНачало | ТОГДА ОкладыПоВоинскимИСпециальнымЗваниямСрезПоследних.Период | ИНАЧЕ &парамНачало | КОНЕЦ, | ЛОЖЬ, | ОсновныеНачисленияОрганизаций.Ссылка, | ЗНАЧЕНИЕ(Перечисление.ВидыДействияСНачислением.Начать), | ОкладыПоВоинскимИСпециальнымЗваниямСрезПоследних.Размер, | NULL, | NULL, | NULL, | NULL, | NULL, | ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка), | NULL, | NULL, | NULL, | NULL, | NULL, | ТаблицаДвиженийРаботников.Сотрудник, | NULL, | NULL, | NULL, | NULL, | NULL, | NULL, | NULL | ИЗ | РегистрСведений.ВоинскиеИСпециальныеЗвания.СрезПоследних( | &парамНачало, | ФизЛицо В | (ВЫБРАТЬ | Работники.ФизЛицо | ИЗ | ВТСписокРаботников КАК Работники)) КАК ВоинскиеИСпециальныеЗванияСрезПоследних | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТСписокРаботников КАК ТаблицаДвиженийРаботников | ПО ВоинскиеИСпециальныеЗванияСрезПоследних.ФизЛицо = ТаблицаДвиженийРаботников.ФизЛицо | И (ТаблицаДвиженийРаботников.Сотрудник.ВидДоговора = ЗНАЧЕНИЕ(Перечисление.ВидыДоговоровСФизЛицами.ВоеннаяСлужбаПоКонтракту)) | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ОкладыПоВоинскимИСпециальнымЗваниям.СрезПоследних(&парамНачало, ) КАК ОкладыПоВоинскимИСпециальнымЗваниямСрезПоследних | ПО ВоинскиеИСпециальныеЗванияСрезПоследних.Звание = ОкладыПоВоинскимИСпециальнымЗваниямСрезПоследних.Звание | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РАЗЛИЧНЫЕ | ОсновныеНачисленияОрганизаций.Ссылка КАК Ссылка | ИЗ | ПланВидовРасчета.ОсновныеНачисленияОрганизаций КАК ОсновныеНачисленияОрганизаций | ГДЕ | ОсновныеНачисленияОрганизаций.ОтношениеКДенежномуСодержанию = ЗНАЧЕНИЕ(Перечисление.ОтношениеКДенежномуСодержанию.ОВЗ)) КАК ОсновныеНачисленияОрганизаций | ПО (ИСТИНА) | | ОБЪЕДИНИТЬ ВСЕ | | ВЫБРАТЬ | ВоинскиеИСпециальныеЗвания.Период, | ЛОЖЬ, | ОсновныеНачисленияОрганизаций.Ссылка, | ЗНАЧЕНИЕ(Перечисление.ВидыДействияСНачислением.Начать), | ОкладыПоВоинскимИСпециальнымЗваниямСрезПоследних.Размер, | NULL, | NULL, | NULL, | NULL, | NULL, | ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка), | NULL, | NULL, | NULL, | NULL, | NULL, | ТаблицаДвиженийРаботников.Сотрудник, | NULL, | NULL, | NULL, | NULL, | NULL, | NULL, | NULL | ИЗ | РегистрСведений.ВоинскиеИСпециальныеЗвания КАК ВоинскиеИСпециальныеЗвания | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТСписокРаботников КАК ТаблицаДвиженийРаботников | ПО ВоинскиеИСпециальныеЗвания.ФизЛицо = ТаблицаДвиженийРаботников.ФизЛицо | И (ТаблицаДвиженийРаботников.Сотрудник.ВидДоговора = ЗНАЧЕНИЕ(Перечисление.ВидыДоговоровСФизЛицами.ВоеннаяСлужбаПоКонтракту)) | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ОкладыПоВоинскимИСпециальнымЗваниям.СрезПоследних(&парамНачало, ) КАК ОкладыПоВоинскимИСпециальнымЗваниямСрезПоследних | ПО ВоинскиеИСпециальныеЗвания.Звание = ОкладыПоВоинскимИСпециальнымЗваниямСрезПоследних.Звание | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РАЗЛИЧНЫЕ | ОсновныеНачисленияОрганизаций.Ссылка КАК Ссылка | ИЗ | ПланВидовРасчета.ОсновныеНачисленияОрганизаций КАК ОсновныеНачисленияОрганизаций | ГДЕ | ОсновныеНачисленияОрганизаций.ОтношениеКДенежномуСодержанию = ЗНАЧЕНИЕ(Перечисление.ОтношениеКДенежномуСодержанию.ОВЗ)) КАК ОсновныеНачисленияОрганизаций | ПО (ИСТИНА) | ГДЕ | ВоинскиеИСпециальныеЗвания.Период > &парамНачало | И ВоинскиеИСпециальныеЗвания.Период <= &парамКонец | | ОБЪЕДИНИТЬ ВСЕ | | ВЫБРАТЬ | ВЫБОР | КОГДА ОкладыПоКласснымЧинамДипломатическимРангамСрезПоследних.Период >= &парамНачало | ТОГДА ОкладыПоКласснымЧинамДипломатическимРангамСрезПоследних.Период | ИНАЧЕ &парамНачало | КОНЕЦ, | ЛОЖЬ, | ОсновныеНачисленияОрганизаций.Ссылка, | ЗНАЧЕНИЕ(Перечисление.ВидыДействияСНачислением.Начать), | ОкладыПоКласснымЧинамДипломатическимРангамСрезПоследних.Размер, | NULL, | NULL, | NULL, | NULL, | NULL, | ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка), | NULL, | NULL, | NULL, | NULL, | NULL, | ТаблицаДвиженийРаботников.Сотрудник, | NULL, | NULL, | NULL, | NULL, | NULL, | NULL, | NULL | ИЗ | РегистрСведений.КлассныеЧиныДипломатическиеРангиФизлиц.СрезПоследних( | &парамНачало, | ФизЛицо В | (ВЫБРАТЬ | Работники.ФизЛицо | ИЗ | ВТСписокРаботников КАК Работники)) КАК КлассныеЧиныДипломатическиеРангиФизлицСрезПоследних | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТСписокРаботников КАК ТаблицаДвиженийРаботников | ПО КлассныеЧиныДипломатическиеРангиФизлицСрезПоследних.ФизЛицо = ТаблицаДвиженийРаботников.ФизЛицо | И (ТаблицаДвиженийРаботников.Сотрудник.ВидДоговора = ЗНАЧЕНИЕ(Перечисление.ВидыДоговоровСФизЛицами.ГосударственнаяСлужба)) | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ОкладыПоКласснымЧинамДипломатическимРангам.СрезПоследних(&парамНачало, ) КАК ОкладыПоКласснымЧинамДипломатическимРангамСрезПоследних | ПО КлассныеЧиныДипломатическиеРангиФизлицСрезПоследних.КлассныйЧин = ОкладыПоКласснымЧинамДипломатическимРангамСрезПоследних.КлассныйЧин | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РАЗЛИЧНЫЕ | ОсновныеНачисленияОрганизаций.Ссылка КАК Ссылка | ИЗ | ПланВидовРасчета.ОсновныеНачисленияОрганизаций КАК ОсновныеНачисленияОрганизаций | ГДЕ | ОсновныеНачисленияОрганизаций.ОтношениеКДенежномуСодержанию = ЗНАЧЕНИЕ(Перечисление.ОтношениеКДенежномуСодержанию.ОкладЗаКлассныйЧин)) КАК ОсновныеНачисленияОрганизаций | ПО (ИСТИНА) | | ОБЪЕДИНИТЬ ВСЕ | | ВЫБРАТЬ | КлассныеЧиныДипломатическиеРангиФизлиц.Период, | ЛОЖЬ, | ОсновныеНачисленияОрганизаций.Ссылка, | ЗНАЧЕНИЕ(Перечисление.ВидыДействияСНачислением.Начать), | ОкладыПоКласснымЧинамДипломатическимРангамСрезПоследних.Размер, | NULL, | NULL, | NULL, | NULL, | NULL, | ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка), | NULL, | NULL, | NULL, | NULL, | NULL, | ТаблицаДвиженийРаботников.Сотрудник, | NULL, | NULL, | NULL, | NULL, | NULL, | NULL, | NULL | ИЗ | РегистрСведений.КлассныеЧиныДипломатическиеРангиФизлиц КАК КлассныеЧиныДипломатическиеРангиФизлиц | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТСписокРаботников КАК ТаблицаДвиженийРаботников | ПО КлассныеЧиныДипломатическиеРангиФизлиц.ФизЛицо = ТаблицаДвиженийРаботников.ФизЛицо | И (ТаблицаДвиженийРаботников.Сотрудник.ВидДоговора = ЗНАЧЕНИЕ(Перечисление.ВидыДоговоровСФизЛицами.ГосударственнаяСлужба)) | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ОкладыПоКласснымЧинамДипломатическимРангам.СрезПоследних(&парамНачало, ) КАК ОкладыПоКласснымЧинамДипломатическимРангамСрезПоследних | ПО КлассныеЧиныДипломатическиеРангиФизлиц.КлассныйЧин = ОкладыПоКласснымЧинамДипломатическимРангамСрезПоследних.КлассныйЧин | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РАЗЛИЧНЫЕ | ОсновныеНачисленияОрганизаций.Ссылка КАК Ссылка | ИЗ | ПланВидовРасчета.ОсновныеНачисленияОрганизаций КАК ОсновныеНачисленияОрганизаций | ГДЕ | ОсновныеНачисленияОрганизаций.ОтношениеКДенежномуСодержанию = ЗНАЧЕНИЕ(Перечисление.ОтношениеКДенежномуСодержанию.ОкладЗаКлассныйЧин)) КАК ОсновныеНачисленияОрганизаций | ПО (ИСТИНА) | ГДЕ | КлассныеЧиныДипломатическиеРангиФизлиц.Период > &парамНачало | И КлассныеЧиныДипломатическиеРангиФизлиц.Период <= &парамКонец | ) КАК НачисленияРаботниковОрганизации | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РазмерТарифныхСтавок.СрезПоследних(&парамКонец, ) КАК ТарифныеСтавки1 | ПО НачисленияРаботниковОрганизации.ТарифныйРазряд1 = ТарифныеСтавки1.ТарифныйРазряд | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РазмерТарифныхСтавок.СрезПоследних(&парамКонец, ) КАК ТарифныеСтавки2 | ПО НачисленияРаботниковОрганизации.ТарифныйРазряд2 = ТарифныеСтавки2.ТарифныйРазряд | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РазмерТарифныхСтавок.СрезПоследних(&парамКонец, ) КАК ТарифныеСтавки3 | ПО НачисленияРаботниковОрганизации.ТарифныйРазряд3 = ТарифныеСтавки3.ТарифныйРазряд | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РазмерТарифныхСтавок.СрезПоследних(&парамКонец, ) КАК ТарифныеСтавки4 | ПО НачисленияРаботниковОрганизации.ТарифныйРазряд4 = ТарифныеСтавки4.ТарифныйРазряд | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РазмерТарифныхСтавок.СрезПоследних(&парамКонец, ) КАК ТарифныеСтавки5 | ПО НачисленияРаботниковОрганизации.ТарифныйРазряд5 = ТарифныеСтавки5.ТарифныйРазряд | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РазмерТарифныхСтавок.СрезПоследних(&парамКонец, ) КАК ТарифныеСтавки6 | ПО НачисленияРаботниковОрганизации.ТарифныйРазряд6 = ТарифныеСтавки6.ТарифныйРазряд | ПО Работники.Сотрудник = НачисленияРаботниковОрганизации.Сотрудник | |ИНДЕКСИРОВАТЬ ПО | Сотрудник |"; Запрос.Выполнить(); //получим все невводимые показатели Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | СписокНачислений.Сотрудник КАК Сотрудник, | СписокНачислений.Период, | СписокНачислений.ПериодРаботники, | СписокНачислений.ПериодНачисления, | ВводимыеПоказатели.Показатель КАК Показатель, | ВЫБОР | КОГДА ВводимыеПоказатели.НомерСтроки = 1 | ТОГДА СписокНачислений.Показатель1 | КОГДА ВводимыеПоказатели.НомерСтроки = 2 | ТОГДА СписокНачислений.Показатель2 | КОГДА ВводимыеПоказатели.НомерСтроки = 3 | ТОГДА СписокНачислений.Показатель3 | КОГДА ВводимыеПоказатели.НомерСтроки = 4 | ТОГДА СписокНачислений.Показатель4 | КОГДА ВводимыеПоказатели.НомерСтроки = 5 | ТОГДА СписокНачислений.Показатель5 | КОГДА ВводимыеПоказатели.НомерСтроки = 6 | ТОГДА СписокНачислений.Показатель6 | КОНЕЦ КАК ЗначениеПоказателя |ПОМЕСТИТЬ ВТЗначенияВводимыхКадровыхПоказателей |ИЗ | ВТРаботникиИНачисления КАК СписокНачислений | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТВводимыеВПлановыхНачисленияхПоказатели КАК ВводимыеПоказатели | ПО СписокНачислений.ВидРасчета = ВводимыеПоказатели.Ссылка | |"; Запрос.Выполнить(); КонецЕсли; // таблица Показатели // видам начислений приписываются введенные пользователями для каждого сотрудника значения показателей // // Поля: // ВидРасчета // Сотрудник // Показатель1,2,...,6 - значения соответствующих показателей // Валюта // Если ВидОперации = Перечисления.ВидыОперацийНачислениеЗарплатыРаботникамОрганизаций.ПолныйРасчет Тогда Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | ПоказателиВидовРасчета.Ссылка КАК ВидРасчета, | ПоказателиВидовРасчета.Показатель1.ТипПоказателя КАК ТипПоказателя1, | ПоказателиВидовРасчета.Показатель2.ТипПоказателя КАК ТипПоказателя2, | ПоказателиВидовРасчета.Показатель3.ТипПоказателя КАК ТипПоказателя3, | ПоказателиВидовРасчета.Показатель4.ТипПоказателя КАК ТипПоказателя4, | ПоказателиВидовРасчета.Показатель5.ТипПоказателя КАК ТипПоказателя5, | ПоказателиВидовРасчета.Показатель6.ТипПоказателя КАК ТипПоказателя6, | ПоказателиВидовРасчета.Показатель1 КАК Показатель1, | ПоказателиВидовРасчета.Показатель2 КАК Показатель2, | ПоказателиВидовРасчета.Показатель3 КАК Показатель3, | ПоказателиВидовРасчета.Показатель4 КАК Показатель4, | ПоказателиВидовРасчета.Показатель5 КАК Показатель5, | ПоказателиВидовРасчета.Показатель6 КАК Показатель6, | ПоказателиВидовРасчета.Показатель1.ВозможностьИзменения КАК ВозможностьИзменения1, | ПоказателиВидовРасчета.Показатель2.ВозможностьИзменения КАК ВозможностьИзменения2, | ПоказателиВидовРасчета.Показатель3.ВозможностьИзменения КАК ВозможностьИзменения3, | ПоказателиВидовРасчета.Показатель4.ВозможностьИзменения КАК ВозможностьИзменения4, | ПоказателиВидовРасчета.Показатель5.ВозможностьИзменения КАК ВозможностьИзменения5, | ПоказателиВидовРасчета.Показатель6.ВозможностьИзменения КАК ВозможностьИзменения6 |ПОМЕСТИТЬ ВТПоказателиИВР |ИЗ | (ВЫБРАТЬ РАЗЛИЧНЫЕ | ОсновныеНачисленияОрганизаций.Ссылка КАК Ссылка, | Показатели1.Показатель КАК Показатель1, | Показатели2.Показатель КАК Показатель2, | Показатели3.Показатель КАК Показатель3, | Показатели4.Показатель КАК Показатель4, | Показатели5.Показатель КАК Показатель5, | Показатели6.Показатель КАК Показатель6 | ИЗ | ПланВидовРасчета.ОсновныеНачисленияОрганизаций КАК ОсновныеНачисленияОрганизаций | ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовРасчета.ОсновныеНачисленияОрганизаций.Показатели КАК Показатели1 | ПО ОсновныеНачисленияОрганизаций.Ссылка = Показатели1.Ссылка | И (Показатели1.НомерСтроки = 1) | ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовРасчета.ОсновныеНачисленияОрганизаций.Показатели КАК Показатели2 | ПО ОсновныеНачисленияОрганизаций.Ссылка = Показатели2.Ссылка | И (Показатели2.НомерСтроки = 2) | ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовРасчета.ОсновныеНачисленияОрганизаций.Показатели КАК Показатели3 | ПО ОсновныеНачисленияОрганизаций.Ссылка = Показатели3.Ссылка | И (Показатели3.НомерСтроки = 3) | ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовРасчета.ОсновныеНачисленияОрганизаций.Показатели КАК Показатели4 | ПО ОсновныеНачисленияОрганизаций.Ссылка = Показатели4.Ссылка | И (Показатели4.НомерСтроки = 4) | ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовРасчета.ОсновныеНачисленияОрганизаций.Показатели КАК Показатели5 | ПО ОсновныеНачисленияОрганизаций.Ссылка = Показатели5.Ссылка | И (Показатели5.НомерСтроки = 5) | ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовРасчета.ОсновныеНачисленияОрганизаций.Показатели КАК Показатели6 | ПО ОсновныеНачисленияОрганизаций.Ссылка = Показатели6.Ссылка | И (Показатели6.НомерСтроки = 6) | | ОБЪЕДИНИТЬ | | ВЫБРАТЬ РАЗЛИЧНЫЕ | ДополнительныеНачисленияОрганизаций.Ссылка, | Показатели1.Показатель, | Показатели2.Показатель, | Показатели3.Показатель, | Показатели4.Показатель, | Показатели5.Показатель, | Показатели6.Показатель | ИЗ | ПланВидовРасчета.ДополнительныеНачисленияОрганизаций КАК ДополнительныеНачисленияОрганизаций | ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовРасчета.ДополнительныеНачисленияОрганизаций.Показатели КАК Показатели1 | ПО ДополнительныеНачисленияОрганизаций.Ссылка = Показатели1.Ссылка | И (Показатели1.НомерСтроки = 1) | ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовРасчета.ДополнительныеНачисленияОрганизаций.Показатели КАК Показатели2 | ПО ДополнительныеНачисленияОрганизаций.Ссылка = Показатели2.Ссылка | И (Показатели2.НомерСтроки = 2) | ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовРасчета.ДополнительныеНачисленияОрганизаций.Показатели КАК Показатели3 | ПО ДополнительныеНачисленияОрганизаций.Ссылка = Показатели3.Ссылка | И (Показатели3.НомерСтроки = 3) | ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовРасчета.ДополнительныеНачисленияОрганизаций.Показатели КАК Показатели4 | ПО ДополнительныеНачисленияОрганизаций.Ссылка = Показатели4.Ссылка | И (Показатели4.НомерСтроки = 4) | ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовРасчета.ДополнительныеНачисленияОрганизаций.Показатели КАК Показатели5 | ПО ДополнительныеНачисленияОрганизаций.Ссылка = Показатели5.Ссылка | И (Показатели5.НомерСтроки = 5) | ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовРасчета.ДополнительныеНачисленияОрганизаций.Показатели КАК Показатели6 | ПО ДополнительныеНачисленияОрганизаций.Ссылка = Показатели6.Ссылка | И (Показатели6.НомерСтроки = 6) | | ОБЪЕДИНИТЬ | | ВЫБРАТЬ РАЗЛИЧНЫЕ | УдержанияОрганизаций.Ссылка, | Показатели1.Показатель, | Показатели2.Показатель, | Показатели3.Показатель, | Показатели4.Показатель, | Показатели5.Показатель, | Показатели6.Показатель | ИЗ | ПланВидовРасчета.УдержанияОрганизаций КАК УдержанияОрганизаций | ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовРасчета.УдержанияОрганизаций.Показатели КАК Показатели1 | ПО УдержанияОрганизаций.Ссылка = Показатели1.Ссылка | И (Показатели1.НомерСтроки = 1) | ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовРасчета.УдержанияОрганизаций.Показатели КАК Показатели2 | ПО УдержанияОрганизаций.Ссылка = Показатели2.Ссылка | И (Показатели2.НомерСтроки = 2) | ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовРасчета.УдержанияОрганизаций.Показатели КАК Показатели3 | ПО УдержанияОрганизаций.Ссылка = Показатели3.Ссылка | И (Показатели3.НомерСтроки = 3) | ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовРасчета.УдержанияОрганизаций.Показатели КАК Показатели4 | ПО УдержанияОрганизаций.Ссылка = Показатели4.Ссылка | И (Показатели4.НомерСтроки = 4) | ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовРасчета.УдержанияОрганизаций.Показатели КАК Показатели5 | ПО УдержанияОрганизаций.Ссылка = Показатели5.Ссылка | И (Показатели5.НомерСтроки = 5) | ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовРасчета.УдержанияОрганизаций.Показатели КАК Показатели6 | ПО УдержанияОрганизаций.Ссылка = Показатели6.Ссылка | И (Показатели6.НомерСтроки = 6)) КАК ПоказателиВидовРасчета | |ИНДЕКСИРОВАТЬ ПО | Показатель1, | Показатель2, | Показатель3, | Показатель4, | Показатель5, | Показатель6 |"; Запрос.Выполнить(); ИначеЕсли ВидОперации = Перечисления.ВидыОперацийНачислениеЗарплатыРаботникамОрганизаций.РасчетНачислений Тогда Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | ПоказателиВидовРасчета.Ссылка КАК ВидРасчета, | ПоказателиВидовРасчета.Показатель1.ТипПоказателя КАК ТипПоказателя1, | ПоказателиВидовРасчета.Показатель2.ТипПоказателя КАК ТипПоказателя2, | ПоказателиВидовРасчета.Показатель3.ТипПоказателя КАК ТипПоказателя3, | ПоказателиВидовРасчета.Показатель4.ТипПоказателя КАК ТипПоказателя4, | ПоказателиВидовРасчета.Показатель5.ТипПоказателя КАК ТипПоказателя5, | ПоказателиВидовРасчета.Показатель6.ТипПоказателя КАК ТипПоказателя6, | ПоказателиВидовРасчета.Показатель1 КАК Показатель1, | ПоказателиВидовРасчета.Показатель2 КАК Показатель2, | ПоказателиВидовРасчета.Показатель3 КАК Показатель3, | ПоказателиВидовРасчета.Показатель4 КАК Показатель4, | ПоказателиВидовРасчета.Показатель5 КАК Показатель5, | ПоказателиВидовРасчета.Показатель6 КАК Показатель6, | ПоказателиВидовРасчета.Показатель1.ВозможностьИзменения КАК ВозможностьИзменения1, | ПоказателиВидовРасчета.Показатель2.ВозможностьИзменения КАК ВозможностьИзменения2, | ПоказателиВидовРасчета.Показатель3.ВозможностьИзменения КАК ВозможностьИзменения3, | ПоказателиВидовРасчета.Показатель4.ВозможностьИзменения КАК ВозможностьИзменения4, | ПоказателиВидовРасчета.Показатель5.ВозможностьИзменения КАК ВозможностьИзменения5, | ПоказателиВидовРасчета.Показатель6.ВозможностьИзменения КАК ВозможностьИзменения6 |ПОМЕСТИТЬ ВТПоказателиИВР |ИЗ | (ВЫБРАТЬ РАЗЛИЧНЫЕ | ОсновныеНачисленияОрганизаций.Ссылка КАК Ссылка, | Показатели1.Показатель КАК Показатель1, | Показатели2.Показатель КАК Показатель2, | Показатели3.Показатель КАК Показатель3, | Показатели4.Показатель КАК Показатель4, | Показатели5.Показатель КАК Показатель5, | Показатели6.Показатель КАК Показатель6 | ИЗ | ПланВидовРасчета.ОсновныеНачисленияОрганизаций КАК ОсновныеНачисленияОрганизаций | ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовРасчета.ОсновныеНачисленияОрганизаций.Показатели КАК Показатели1 | ПО ОсновныеНачисленияОрганизаций.Ссылка = Показатели1.Ссылка | И (Показатели1.НомерСтроки = 1) | ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовРасчета.ОсновныеНачисленияОрганизаций.Показатели КАК Показатели2 | ПО ОсновныеНачисленияОрганизаций.Ссылка = Показатели2.Ссылка | И (Показатели2.НомерСтроки = 2) | ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовРасчета.ОсновныеНачисленияОрганизаций.Показатели КАК Показатели3 | ПО ОсновныеНачисленияОрганизаций.Ссылка = Показатели3.Ссылка | И (Показатели3.НомерСтроки = 3) | ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовРасчета.ОсновныеНачисленияОрганизаций.Показатели КАК Показатели4 | ПО ОсновныеНачисленияОрганизаций.Ссылка = Показатели4.Ссылка | И (Показатели4.НомерСтроки = 4) | ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовРасчета.ОсновныеНачисленияОрганизаций.Показатели КАК Показатели5 | ПО ОсновныеНачисленияОрганизаций.Ссылка = Показатели5.Ссылка | И (Показатели5.НомерСтроки = 5) | ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовРасчета.ОсновныеНачисленияОрганизаций.Показатели КАК Показатели6 | ПО ОсновныеНачисленияОрганизаций.Ссылка = Показатели6.Ссылка | И (Показатели6.НомерСтроки = 6) | | ОБЪЕДИНИТЬ | | ВЫБРАТЬ РАЗЛИЧНЫЕ | ДополнительныеНачисленияОрганизаций.Ссылка, | Показатели1.Показатель, | Показатели2.Показатель, | Показатели3.Показатель, | Показатели4.Показатель, | Показатели5.Показатель, | Показатели6.Показатель | ИЗ | ПланВидовРасчета.ДополнительныеНачисленияОрганизаций КАК ДополнительныеНачисленияОрганизаций | ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовРасчета.ДополнительныеНачисленияОрганизаций.Показатели КАК Показатели1 | ПО ДополнительныеНачисленияОрганизаций.Ссылка = Показатели1.Ссылка | И (Показатели1.НомерСтроки = 1) | ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовРасчета.ДополнительныеНачисленияОрганизаций.Показатели КАК Показатели2 | ПО ДополнительныеНачисленияОрганизаций.Ссылка = Показатели2.Ссылка | И (Показатели2.НомерСтроки = 2) | ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовРасчета.ДополнительныеНачисленияОрганизаций.Показатели КАК Показатели3 | ПО ДополнительныеНачисленияОрганизаций.Ссылка = Показатели3.Ссылка | И (Показатели3.НомерСтроки = 3) | ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовРасчета.ДополнительныеНачисленияОрганизаций.Показатели КАК Показатели4 | ПО ДополнительныеНачисленияОрганизаций.Ссылка = Показатели4.Ссылка | И (Показатели4.НомерСтроки = 4) | ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовРасчета.ДополнительныеНачисленияОрганизаций.Показатели КАК Показатели5 | ПО ДополнительныеНачисленияОрганизаций.Ссылка = Показатели5.Ссылка | И (Показатели5.НомерСтроки = 5) | ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовРасчета.ДополнительныеНачисленияОрганизаций.Показатели КАК Показатели6 | ПО ДополнительныеНачисленияОрганизаций.Ссылка = Показатели6.Ссылка | И (Показатели6.НомерСтроки = 6) |) КАК ПоказателиВидовРасчета | |ИНДЕКСИРОВАТЬ ПО | Показатель1, | Показатель2, | Показатель3, | Показатель4, | Показатель5, | Показатель6 |"; Запрос.Выполнить(); Иначе Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | ПоказателиВидовРасчета.Ссылка КАК ВидРасчета, | ПоказателиВидовРасчета.Показатель1.ТипПоказателя КАК ТипПоказателя1, | ПоказателиВидовРасчета.Показатель2.ТипПоказателя КАК ТипПоказателя2, | ПоказателиВидовРасчета.Показатель3.ТипПоказателя КАК ТипПоказателя3, | ПоказателиВидовРасчета.Показатель4.ТипПоказателя КАК ТипПоказателя4, | ПоказателиВидовРасчета.Показатель5.ТипПоказателя КАК ТипПоказателя5, | ПоказателиВидовРасчета.Показатель6.ТипПоказателя КАК ТипПоказателя6, | ПоказателиВидовРасчета.Показатель1 КАК Показатель1, | ПоказателиВидовРасчета.Показатель2 КАК Показатель2, | ПоказателиВидовРасчета.Показатель3 КАК Показатель3, | ПоказателиВидовРасчета.Показатель4 КАК Показатель4, | ПоказателиВидовРасчета.Показатель5 КАК Показатель5, | ПоказателиВидовРасчета.Показатель6 КАК Показатель6, | ПоказателиВидовРасчета.Показатель1.ВозможностьИзменения КАК ВозможностьИзменения1, | ПоказателиВидовРасчета.Показатель2.ВозможностьИзменения КАК ВозможностьИзменения2, | ПоказателиВидовРасчета.Показатель3.ВозможностьИзменения КАК ВозможностьИзменения3, | ПоказателиВидовРасчета.Показатель4.ВозможностьИзменения КАК ВозможностьИзменения4, | ПоказателиВидовРасчета.Показатель5.ВозможностьИзменения КАК ВозможностьИзменения5, | ПоказателиВидовРасчета.Показатель6.ВозможностьИзменения КАК ВозможностьИзменения6 |ПОМЕСТИТЬ ВТПоказателиИВР |ИЗ | (ВЫБРАТЬ РАЗЛИЧНЫЕ | УдержанияОрганизаций.Ссылка КАК Ссылка, | Показатели1.Показатель КАК Показатель1, | Показатели2.Показатель КАК Показатель2, | Показатели3.Показатель КАК Показатель3, | Показатели4.Показатель КАК Показатель4, | Показатели5.Показатель КАК Показатель5, | Показатели6.Показатель КАК Показатель6 | ИЗ | ПланВидовРасчета.УдержанияОрганизаций КАК УдержанияОрганизаций | ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовРасчета.УдержанияОрганизаций.Показатели КАК Показатели1 | ПО УдержанияОрганизаций.Ссылка = Показатели1.Ссылка | И (Показатели1.НомерСтроки = 1) | ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовРасчета.УдержанияОрганизаций.Показатели КАК Показатели2 | ПО УдержанияОрганизаций.Ссылка = Показатели2.Ссылка | И (Показатели2.НомерСтроки = 2) | ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовРасчета.УдержанияОрганизаций.Показатели КАК Показатели3 | ПО УдержанияОрганизаций.Ссылка = Показатели3.Ссылка | И (Показатели3.НомерСтроки = 3) | ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовРасчета.УдержанияОрганизаций.Показатели КАК Показатели4 | ПО УдержанияОрганизаций.Ссылка = Показатели4.Ссылка | И (Показатели4.НомерСтроки = 4) | ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовРасчета.УдержанияОрганизаций.Показатели КАК Показатели5 | ПО УдержанияОрганизаций.Ссылка = Показатели5.Ссылка | И (Показатели5.НомерСтроки = 5) | ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовРасчета.УдержанияОрганизаций.Показатели КАК Показатели6 | ПО УдержанияОрганизаций.Ссылка = Показатели6.Ссылка | И (Показатели6.НомерСтроки = 6)) КАК ПоказателиВидовРасчета | |ИНДЕКСИРОВАТЬ ПО | Показатель1, | Показатель2, | Показатель3, | Показатель4, | Показатель5, | Показатель6"; Запрос.Выполнить(); КонецЕсли; Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ | ВложеныйЗапрос.ВидРасчета КАК ВидРасчета, | ВложеныйЗапрос.Сотрудник КАК Сотрудник, | ВложеныйЗапрос.ПодразделениеОрганизации КАК ПодразделениеОрганизации, | МАКСИМУМ(ВложеныйЗапрос.ТипПоказателя1) КАК ТипПоказателя1, | МАКСИМУМ(ВложеныйЗапрос.ВозможностьИзменения1) КАК ВозможностьИзменения1, | МАКСИМУМ(ВложеныйЗапрос.Показатель1) КАК Показатель1, | МАКСИМУМ(ВложеныйЗапрос.ТипПоказателя2) КАК ТипПоказателя2, | МАКСИМУМ(ВложеныйЗапрос.ВозможностьИзменения2) КАК ВозможностьИзменения2, | МАКСИМУМ(ВложеныйЗапрос.Показатель2) КАК Показатель2, | МАКСИМУМ(ВложеныйЗапрос.ТипПоказателя3) КАК ТипПоказателя3, | МАКСИМУМ(ВложеныйЗапрос.ВозможностьИзменения3) КАК ВозможностьИзменения3, | МАКСИМУМ(ВложеныйЗапрос.Показатель3) КАК Показатель3, | МАКСИМУМ(ВложеныйЗапрос.ТипПоказателя4) КАК ТипПоказателя4, | МАКСИМУМ(ВложеныйЗапрос.ВозможностьИзменения4) КАК ВозможностьИзменения4, | МАКСИМУМ(ВложеныйЗапрос.Показатель4) КАК Показатель4, | МАКСИМУМ(ВложеныйЗапрос.ТипПоказателя5) КАК ТипПоказателя5, | МАКСИМУМ(ВложеныйЗапрос.ВозможностьИзменения5) КАК ВозможностьИзменения5, | МАКСИМУМ(ВложеныйЗапрос.Показатель5) КАК Показатель5, | МАКСИМУМ(ВложеныйЗапрос.ТипПоказателя6) КАК ТипПоказателя6, | МАКСИМУМ(ВложеныйЗапрос.ВозможностьИзменения6) КАК ВозможностьИзменения6, | МАКСИМУМ(ВложеныйЗапрос.Показатель6) КАК Показатель6, | МАКСИМУМ(ВложеныйЗапрос.Валюта1) КАК Валюта1, | МАКСИМУМ(ВложеныйЗапрос.Валюта2) КАК Валюта2, | МАКСИМУМ(ВложеныйЗапрос.Валюта3) КАК Валюта3, | МАКСИМУМ(ВложеныйЗапрос.Валюта4) КАК Валюта4, | МАКСИМУМ(ВложеныйЗапрос.Валюта5) КАК Валюта5, | МАКСИМУМ(ВложеныйЗапрос.Валюта6) КАК Валюта6 |ПОМЕСТИТЬ ВТПоказатели |ИЗ | (ВЫБРАТЬ РАЗЛИЧНЫЕ | ПоказателиИВР.ВидРасчета КАК ВидРасчета, | ЗначенияПоказателей1.Сотрудник КАК Сотрудник, | ЗначенияПоказателей1.ПодразделениеОрганизации КАК ПодразделениеОрганизации, | ПоказателиИВР.ТипПоказателя1 КАК ТипПоказателя1, | ПоказателиИВР.ВозможностьИзменения1 КАК ВозможностьИзменения1, | ЗначенияПоказателей1.Значение КАК Показатель1, | NULL КАК ТипПоказателя2, | NULL КАК ВозможностьИзменения2, | NULL КАК Показатель2, | NULL КАК ТипПоказателя3, | NULL КАК ВозможностьИзменения3, | NULL КАК Показатель3, | NULL КАК ТипПоказателя4, | NULL КАК ВозможностьИзменения4, | NULL КАК Показатель4, | NULL КАК ТипПоказателя5, | NULL КАК ВозможностьИзменения5, | NULL КАК Показатель5, | NULL КАК ТипПоказателя6, | NULL КАК ВозможностьИзменения6, | NULL КАК Показатель6, | ЗначенияПоказателей1.Валюта КАК Валюта1, | NULL КАК Валюта2, | NULL КАК Валюта3, | NULL КАК Валюта4, | NULL КАК Валюта5, | NULL КАК Валюта6 | ИЗ | ВТПоказателиИВР КАК ПоказателиИВР | ЛЕВОЕ СОЕДИНЕНИЕ ВТЗначенияПоказателей КАК ЗначенияПоказателей1 | ПО ПоказателиИВР.Показатель1 = ЗначенияПоказателей1.Показатель | | ОБЪЕДИНИТЬ | | ВЫБРАТЬ РАЗЛИЧНЫЕ | ПоказателиИВР.ВидРасчета, | ЗначенияПоказателей2.Сотрудник, | ЗначенияПоказателей2.ПодразделениеОрганизации, | NULL, | NULL, | NULL, | ПоказателиИВР.ТипПоказателя2, | ПоказателиИВР.ВозможностьИзменения2, | ЗначенияПоказателей2.Значение, | NULL, | NULL, | NULL, | NULL, | NULL, | NULL, | NULL, | NULL, | NULL, | NULL, | NULL, | NULL, | NULL, | ЗначенияПоказателей2.Валюта, | NULL, | NULL, | NULL, | NULL | ИЗ | ВТПоказателиИВР КАК ПоказателиИВР | ЛЕВОЕ СОЕДИНЕНИЕ ВТЗначенияПоказателей КАК ЗначенияПоказателей2 | ПО ПоказателиИВР.Показатель2 = ЗначенияПоказателей2.Показатель | | ОБЪЕДИНИТЬ | | ВЫБРАТЬ РАЗЛИЧНЫЕ | ПоказателиИВР.ВидРасчета, | ЗначенияПоказателей3.Сотрудник, | ЗначенияПоказателей3.ПодразделениеОрганизации, | NULL, | NULL, | NULL, | NULL, | NULL, | NULL, | ПоказателиИВР.ТипПоказателя3, | ПоказателиИВР.ВозможностьИзменения3, | ЗначенияПоказателей3.Значение, | NULL, | NULL, | NULL, | NULL, | NULL, | NULL, | NULL, | NULL, | NULL, | NULL, | NULL, | ЗначенияПоказателей3.Валюта, | NULL, | NULL, | NULL | ИЗ | ВТПоказателиИВР КАК ПоказателиИВР | ЛЕВОЕ СОЕДИНЕНИЕ ВТЗначенияПоказателей КАК ЗначенияПоказателей3 | ПО ПоказателиИВР.Показатель3 = ЗначенияПоказателей3.Показатель | | ОБЪЕДИНИТЬ | | ВЫБРАТЬ РАЗЛИЧНЫЕ | ПоказателиИВР.ВидРасчета, | ЗначенияПоказателей4.Сотрудник, | ЗначенияПоказателей4.ПодразделениеОрганизации, | NULL, | NULL, | NULL, | NULL, | NULL, | NULL, | NULL, | NULL, | NULL, | ПоказателиИВР.ТипПоказателя4, | ПоказателиИВР.ВозможностьИзменения4, | ЗначенияПоказателей4.Значение, | NULL, | NULL, | NULL, | NULL, | NULL, | NULL, | NULL, | NULL, | NULL, | ЗначенияПоказателей4.Валюта, | NULL, | NULL | ИЗ | ВТПоказателиИВР КАК ПоказателиИВР | ЛЕВОЕ СОЕДИНЕНИЕ ВТЗначенияПоказателей КАК ЗначенияПоказателей4 | ПО ПоказателиИВР.Показатель4 = ЗначенияПоказателей4.Показатель | | ОБЪЕДИНИТЬ | | ВЫБРАТЬ РАЗЛИЧНЫЕ | ПоказателиИВР.ВидРасчета, | ЗначенияПоказателей5.Сотрудник, | ЗначенияПоказателей5.ПодразделениеОрганизации, | NULL, | NULL, | NULL, | NULL, | NULL, | NULL, | NULL, | NULL, | NULL, | NULL, | NULL, | NULL, | ПоказателиИВР.ТипПоказателя5, | ПоказателиИВР.ВозможностьИзменения5, | ЗначенияПоказателей5.Значение, | NULL, | NULL, | NULL, | NULL, | NULL, | NULL, | NULL, | ЗначенияПоказателей5.Валюта, | NULL | ИЗ | ВТПоказателиИВР КАК ПоказателиИВР | ЛЕВОЕ СОЕДИНЕНИЕ ВТЗначенияПоказателей КАК ЗначенияПоказателей5 | ПО ПоказателиИВР.Показатель5 = ЗначенияПоказателей5.Показатель | | ОБЪЕДИНИТЬ | | ВЫБРАТЬ РАЗЛИЧНЫЕ | ПоказателиИВР.ВидРасчета, | ЗначенияПоказателей6.Сотрудник, | ЗначенияПоказателей6.ПодразделениеОрганизации, | NULL, | NULL, | NULL, | NULL, | NULL, | NULL, | NULL, | NULL, | NULL, | NULL, | NULL, | NULL, | NULL, | NULL, | NULL, | ПоказателиИВР.ТипПоказателя6, | ПоказателиИВР.ВозможностьИзменения6, | ЗначенияПоказателей6.Значение, | NULL, | NULL, | NULL, | NULL, | NULL, | ЗначенияПоказателей6.Валюта | ИЗ | ВТПоказателиИВР КАК ПоказателиИВР | ЛЕВОЕ СОЕДИНЕНИЕ ВТЗначенияПоказателей КАК ЗначенияПоказателей6 | ПО ПоказателиИВР.Показатель6 = ЗначенияПоказателей6.Показатель) КАК ВложеныйЗапрос |ГДЕ | (ВложеныйЗапрос.Показатель1 <> 0 | ИЛИ ВложеныйЗапрос.Показатель2 <> 0 | ИЛИ ВложеныйЗапрос.Показатель3 <> 0 | ИЛИ ВложеныйЗапрос.Показатель4 <> 0 | ИЛИ ВложеныйЗапрос.Показатель5 <> 0 | ИЛИ ВложеныйЗапрос.Показатель6 <> 0) | |СГРУППИРОВАТЬ ПО | ВложеныйЗапрос.ВидРасчета, | ВложеныйЗапрос.Сотрудник, | ВложеныйЗапрос.ПодразделениеОрганизации | |ИНДЕКСИРОВАТЬ ПО | Сотрудник, | ПодразделениеОрганизации, | ВидРасчета |"; Запрос.Выполнить(); МассивВалютСНезаданнымКурсом = Новый Соответствие; // АВТОЗАПОЛНЕНИЕ ТЧ "Начисления", "ДополнительныеНачисления" и "ДоговорыНаВыполнениеРабот" Если ВидОперации = Перечисления.ВидыОперацийНачислениеЗарплатыРаботникамОрганизаций.ПолныйРасчет ИЛИ ВидОперации = Перечисления.ВидыОперацийНачислениеЗарплатыРаботникамОрганизаций.РасчетНачислений ИЛИ ВидОперации = Перечисления.ВидыОперацийНачислениеЗарплатыРаботникамОрганизаций.РасчетНДФЛ Тогда // таблица ОсновныеНачисления // выборка сведений об уже выполненных начислениях за отработанное время - для выбрасывания // ранее "обслуженных" работников // Поля: // Сотрудник, // ПодразделениеОрганизации // Если ПериодНачисления = Перечисления.ПериодНачисленияЗарплаты.ПерваяПоловинаТекущегоМесяца Тогда Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ | ЗарплатаЗаПервуюПоловинуМесяца.Сотрудник КАК Сотрудник, | ТаблицаДвиженийРаботников.ПодразделениеОрганизации |ПОМЕСТИТЬ ВТОсновныеНачисления |ИЗ | РегистрНакопления.ЗарплатаЗаПервуюПоловинуМесяца КАК ЗарплатаЗаПервуюПоловинуМесяца | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТДвиженияРаботников КАК ТаблицаДвиженийРаботников | ПО ЗарплатаЗаПервуюПоловинуМесяца.Сотрудник = ТаблицаДвиженийРаботников.Сотрудник |ГДЕ | ЗарплатаЗаПервуюПоловинуМесяца.Организация = &парамОрганизация | И ЗарплатаЗаПервуюПоловинуМесяца.Регистратор <> &парамРегистратор | И НАЧАЛОПЕРИОДА(ЗарплатаЗаПервуюПоловинуМесяца.Период, МЕСЯЦ) = &парамНачалоМесяца | |ИНДЕКСИРОВАТЬ ПО | Сотрудник"; Запрос.Выполнить(); Иначе Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ | ОсновныеНачисления.Сотрудник КАК Сотрудник, | ОсновныеНачисления.ПодразделениеОрганизации КАК ПодразделениеОрганизации |ПОМЕСТИТЬ ВТОсновныеНачисления |ИЗ | РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций КАК ОсновныеНачисления | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТДвиженияРаботников КАК ТаблицаДвиженийРаботников | ПО ОсновныеНачисления.Сотрудник = ТаблицаДвиженийРаботников.Сотрудник |ГДЕ | ОсновныеНачисления.ПериодРегистрации = &парамПериодРегистрации | И ОсновныеНачисления.ПериодДействияКонец <= &парамКонец | И ОсновныеНачисления.ПериодДействияНачало >= &парамНачало | И ОсновныеНачисления.Организация = &парамГоловнаяОрганизация | И (ОсновныеНачисления.ВидРасчета.ЗачетОтработанногоВремени | И ОсновныеНачисления.ВидРасчета.ЗачетНормыВремени | ИЛИ ОсновныеНачисления.ВидРасчета = ЗНАЧЕНИЕ(ПланВидовРасчета.ОсновныеНачисленияОрганизаций.ОтпускПоУходуЗаРебенкомБезОплаты)) | И (НЕ ОсновныеНачисления.Сторно) | И ОсновныеНачисления.Регистратор <> &парамРегистратор | И ОсновныеНачисления.ОбособленноеПодразделение = &парамОрганизация | |ИНДЕКСИРОВАТЬ ПО | Сотрудник"; Запрос.Выполнить(); КонецЕсли; // НормаВремениПоСводнымИндивидуальнымГрафикам // Сотрудники, для которых введены сводные данные об их графике // // Поля: // Сотрудник // ЧасовЗаМесяц - указанное пользователем значение // Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ | СписокРаботников.Сотрудник КАК Сотрудник, | СводныеИндивидуальныеГрафики.Часов КАК ЧасовЗаМесяц |ПОМЕСТИТЬ ВТНормаВремениПоСводнымИндивидуальнымГрафикам |ИЗ | ВТСписокРаботников КАК СписокРаботников | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СводныеИндивидуальныеГрафики КАК СводныеИндивидуальныеГрафики | ПО СписокРаботников.Сотрудник = СводныеИндивидуальныеГрафики.Сотрудник | И (СводныеИндивидуальныеГрафики.Месяц = &парамНачалоМесяца) |ГДЕ | СводныеИндивидуальныеГрафики.Сотрудник ЕСТЬ НЕ NULL | |ИНДЕКСИРОВАТЬ ПО | Сотрудник"; Запрос.Выполнить(); // НормаВремениПоЕжедневнымИндивидуальнымГрафикам // Таблица сотрудников и нормы времени в часах, введенной индивидуальными графиками // // Поля: // Сотрудник, // ЧасовЗаМесяц - суммируем все часы рабочего времени // // Описание: // // выбираем данные из рег-ра ГрафикиРаботыПоВидамВремени, // введенные доками ВводИндивидуальныхГрафиков, т.е. по строкам с выставленным флажком План Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | СписокРаботников.Сотрудник КАК Сотрудник, | СУММА(ГрафикиРаботыПоВидамВремени.ДополнительноеЗначение) КАК ЧасовЗаМесяц |ПОМЕСТИТЬ ВТНормаВремениПоЕжедневнымИндивидуальнымГрафикам |ИЗ | ВТСписокРаботников КАК СписокРаботников | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ГрафикиРаботыПоВидамВремени КАК ГрафикиРаботыПоВидамВремени | ПО СписокРаботников.Сотрудник = ГрафикиРаботыПоВидамВремени.ГрафикРаботы | И (ГрафикиРаботыПоВидамВремени.ВидУчетаВремени = ЗНАЧЕНИЕ(Перечисление.ВидыУчетаВремени.ПоДням)) | И (ГрафикиРаботыПоВидамВремени.Месяц = &парамНачалоМесяца) | И (ГрафикиРаботыПоВидамВремени.План) |ГДЕ | ГрафикиРаботыПоВидамВремени.ГрафикРаботы ЕСТЬ НЕ NULL | |СГРУППИРОВАТЬ ПО | СписокРаботников.Сотрудник | |ИНДЕКСИРОВАТЬ ПО | Сотрудник"; Запрос.Выполнить(); // НормаВремениПоОбщимГрафикам // Таблица сотрудников и нормы времени в часах по общим графикам // // Поля: // Сотрудник, // ЧасовЗаМесяц - суммируем все часы рабочего времени // // Описание: // // выбираем данные из рег-ра ГрафикиРаботыПоВидамВремени для общих графиков Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | СписокРаботников.Сотрудник КАК Сотрудник, | СписокРаботников.ГрафикРаботы, | СУММА(ГрафикиРаботыПоВидамВремени.ДополнительноеЗначение) КАК ЧасовЗаМесяц |ПОМЕСТИТЬ ВТНормаВремениПоОбщимГрафикам |ИЗ | (ВЫБРАТЬ РАЗЛИЧНЫЕ | СписокРаботников.Сотрудник КАК Сотрудник, | ВЫБОР | КОГДА СписокРаботников.ГрафикРаботы.СокращенноеРабочееВремя | И СписокРаботников.ГрафикРаботы.ГрафикПолногоРабочегоВремени <> ЗНАЧЕНИЕ(Справочник.ГрафикиРаботы.ПустаяСсылка) | ТОГДА СписокРаботников.ГрафикРаботы.ГрафикПолногоРабочегоВремени | ИНАЧЕ СписокРаботников.ГрафикРаботы | КОНЕЦ КАК ГрафикРаботыНорма, | СписокРаботников.ГрафикРаботы КАК ГрафикРаботы | ИЗ | ВТДвиженияРаботников КАК СписокРаботников) КАК СписокРаботников | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ГрафикиРаботыПоВидамВремени КАК ГрафикиРаботыПоВидамВремени | ПО (ГрафикиРаботыПоВидамВремени.ВидУчетаВремени = ЗНАЧЕНИЕ(Перечисление.ВидыУчетаВремени.ПоДням)) | И (ГрафикиРаботыПоВидамВремени.Месяц = &парамНачалоМесяца) | И (ГрафикиРаботыПоВидамВремени.План) | И СписокРаботников.ГрафикРаботыНорма = ГрафикиРаботыПоВидамВремени.ГрафикРаботы |ГДЕ | ГрафикиРаботыПоВидамВремени.ГрафикРаботы ЕСТЬ НЕ NULL | |СГРУППИРОВАТЬ ПО | СписокРаботников.Сотрудник, | СписокРаботников.ГрафикРаботы | |ИНДЕКСИРОВАТЬ ПО | Сотрудник"; Запрос.Выполнить(); Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | ДатыСтажа.Сотрудник КАК Сотрудник, | ДатыСтажа.Физлицо, | ДатыСтажа.ПериодРаботники, | ДатыСтажа.ПериодСеверногоСтажа КАК ДатаРегистрацииСеверногоСтажа, | СведенияОСтажеРаботыНаСевере.ПорядокНачисленияСеверныхНадбавок, | СведенияОСтажеРаботыНаСевере.НачальныйПроцентСевернойНадбавки, | СведенияОСтажеРаботыНаСевере.СеверныйСтажМесяцев, | СведенияОСтажеРаботыНаСевере.СеверныйСтажДней |ПОМЕСТИТЬ ВТДанныеОСеверномСтаже |ИЗ | (ВЫБРАТЬ | СписокНачислений.Сотрудник КАК Сотрудник, | СписокНачислений.Физлицо КАК Физлицо, | СписокНачислений.ПериодРаботники КАК ПериодРаботники, | МАКСИМУМ(СведенияОСтажеРаботыНаСевере.Период) КАК ПериодСеверногоСтажа | ИЗ | ВТРаботникиИНачисления КАК СписокНачислений | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СведенияОСтажеРаботыНаСевере КАК СведенияОСтажеРаботыНаСевере | ПО СписокНачислений.Физлицо = СведенияОСтажеРаботыНаСевере.ФизЛицо | И СписокНачислений.ПериодРаботники >= СведенияОСтажеРаботыНаСевере.Период | | СГРУППИРОВАТЬ ПО | СписокНачислений.Сотрудник, | СписокНачислений.Физлицо, | СписокНачислений.ПериодРаботники) КАК ДатыСтажа | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СведенияОСтажеРаботыНаСевере КАК СведенияОСтажеРаботыНаСевере | ПО ДатыСтажа.Физлицо = СведенияОСтажеРаботыНаСевере.ФизЛицо | И ДатыСтажа.ПериодСеверногоСтажа = СведенияОСтажеРаботыНаСевере.Период | |ИНДЕКСИРОВАТЬ ПО | Сотрудник"; Запрос.Выполнить(); // РаботникиИНачисленияПоСхемамМотивации // Таблица движений работников и сведениями об их плановых начислениях // с добавленными значениями показателей, как введенными пользователями для расчета, так и // выбранными из строк плановых начислений, содержащих тарифные ставки по "основным" начислениям работника // // Поля: // Сотрудник // ВидРасчета - плановое начисление // Показатель1,...,6 - размеры показателей // СпособРасчета - способ расчета начисления // ОкладТариф - размер трифной ставки, если начисление ее содержит // ГрафикРаботы - график сотрудника // ВидГрафика, СуммированныйУчетРабочегоВремени, ДлительностьРабочейНедели - реквизиты графика сотрудника // // Описание: // // 1. // 2. // Запрос.Текст = "ВЫБРАТЬ | СписокНачислений.Сотрудник КАК Сотрудник, | СписокНачислений.СотрудникНаименование, | СписокНачислений.Физлицо, | СписокНачислений.ПодразделениеОрганизации, | СписокНачислений.Подходит, | СписокНачислений.Период, | СписокНачислений.ПериодРаботники, | СписокНачислений.ПериодНачисления, | СписокНачислений.ОсновноеНачисление, | СписокНачислений.ВидРасчета, | СписокНачислений.ВидРасчетаНаименование, | СписокНачислений.ВидРасчетаКоэффициентСтажа, | СписокНачислений.ВидРасчетаВидСтажа, | СписокНачислений.ВидРасчетаТребуетВводаТарифногоРазряда, | СписокНачислений.СпособРасчета, | СписокНачислений.НачисляетсяВЦеломЗаМесяц, | СписокНачислений.ВидВремени, | СписокНачислений.Действие, | СписокНачислений.КодВычета, | СписокНачислений.ДатаНачалаСобытия, | СписокНачислений.ГрафикРаботы, | СписокНачислений.СуммированныйУчетРабочегоВремени, | СписокНачислений.ДлительностьРабочейНедели, | СписокНачислений.ВидГрафика, | ВЫБОР КОГДА СписокНачислений.Валюта1 ЕСТЬ NULL ИЛИ СписокНачислений.Валюта1 = Значение(Справочник.Валюты.ПустаяСсылка) ТОГДА ПоказателиВведенныеПриРасчете.Валюта1 ИНАЧЕ СписокНачислений.Валюта1 КОНЕЦ КАК Валюта1, | ВЫБОР КОГДА СписокНачислений.Валюта2 ЕСТЬ NULL ИЛИ СписокНачислений.Валюта2 = Значение(Справочник.Валюты.ПустаяСсылка) ТОГДА ПоказателиВведенныеПриРасчете.Валюта2 ИНАЧЕ СписокНачислений.Валюта2 КОНЕЦ КАК Валюта2, | ВЫБОР КОГДА СписокНачислений.Валюта3 ЕСТЬ NULL ИЛИ СписокНачислений.Валюта3 = Значение(Справочник.Валюты.ПустаяСсылка) ТОГДА ПоказателиВведенныеПриРасчете.Валюта3 ИНАЧЕ СписокНачислений.Валюта3 КОНЕЦ КАК Валюта3, | ВЫБОР КОГДА СписокНачислений.Валюта4 ЕСТЬ NULL ИЛИ СписокНачислений.Валюта4 = Значение(Справочник.Валюты.ПустаяСсылка) ТОГДА ПоказателиВведенныеПриРасчете.Валюта4 ИНАЧЕ СписокНачислений.Валюта4 КОНЕЦ КАК Валюта4, | ВЫБОР КОГДА СписокНачислений.Валюта5 ЕСТЬ NULL ИЛИ СписокНачислений.Валюта5 = Значение(Справочник.Валюты.ПустаяСсылка) ТОГДА ПоказателиВведенныеПриРасчете.Валюта5 ИНАЧЕ СписокНачислений.Валюта5 КОНЕЦ КАК Валюта5, | ВЫБОР КОГДА СписокНачислений.Валюта6 ЕСТЬ NULL ИЛИ СписокНачислений.Валюта6 = Значение(Справочник.Валюты.ПустаяСсылка) ТОГДА ПоказателиВведенныеПриРасчете.Валюта6 ИНАЧЕ СписокНачислений.Валюта6 КОНЕЦ КАК Валюта6, | ВЫБОР КОГДА СписокНачислений.Валюта1 ЕСТЬ NULL ИЛИ СписокНачислений.Валюта1 = Значение(Справочник.Валюты.ПустаяСсылка) ТОГДА | ВЫБОР КОГДА ПоказателиВведенныеПриРасчете.Валюта1 В (&парамВалютаРегламентУчета, ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)) ТОГДА 1 ИНАЧЕ ПВалюты1.Курс КОНЕЦ | ИНАЧЕ | ВЫБОР КОГДА СписокНачислений.Валюта1 В (&парамВалютаРегламентУчета, ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)) ТОГДА 1 ИНАЧЕ Валюты1.Курс КОНЕЦ | КОНЕЦ КАК КурсВалюты1, | ВЫБОР КОГДА СписокНачислений.Валюта2 ЕСТЬ NULL ТОГДА | ВЫБОР КОГДА ПоказателиВведенныеПриРасчете.Валюта2 В (&парамВалютаРегламентУчета, ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)) ТОГДА 1 ИНАЧЕ ПВалюты2.Курс КОНЕЦ | ИНАЧЕ | ВЫБОР КОГДА СписокНачислений.Валюта2 В (&парамВалютаРегламентУчета, ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)) ТОГДА 1 ИНАЧЕ Валюты2.Курс КОНЕЦ | КОНЕЦ КАК КурсВалюты2, | ВЫБОР КОГДА СписокНачислений.Валюта3 ЕСТЬ NULL ТОГДА | ВЫБОР КОГДА ПоказателиВведенныеПриРасчете.Валюта3 В (&парамВалютаРегламентУчета, ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)) ТОГДА 1 ИНАЧЕ ПВалюты3.Курс КОНЕЦ | ИНАЧЕ | ВЫБОР КОГДА СписокНачислений.Валюта3 В (&парамВалютаРегламентУчета, ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)) ТОГДА 1 ИНАЧЕ Валюты3.Курс КОНЕЦ | КОНЕЦ КАК КурсВалюты3, | ВЫБОР КОГДА СписокНачислений.Валюта4 ЕСТЬ NULL ТОГДА | ВЫБОР КОГДА ПоказателиВведенныеПриРасчете.Валюта4 В (&парамВалютаРегламентУчета, ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)) ТОГДА 1 ИНАЧЕ ПВалюты4.Курс КОНЕЦ | ИНАЧЕ | ВЫБОР КОГДА СписокНачислений.Валюта4 В (&парамВалютаРегламентУчета, ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)) ТОГДА 1 ИНАЧЕ Валюты4.Курс КОНЕЦ | КОНЕЦ КАК КурсВалюты4, | ВЫБОР КОГДА СписокНачислений.Валюта5 ЕСТЬ NULL ТОГДА | ВЫБОР КОГДА ПоказателиВведенныеПриРасчете.Валюта5 В (&парамВалютаРегламентУчета, ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)) ТОГДА 1 ИНАЧЕ ПВалюты5.Курс КОНЕЦ | ИНАЧЕ | ВЫБОР КОГДА СписокНачислений.Валюта5 В (&парамВалютаРегламентУчета, ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)) ТОГДА 1 ИНАЧЕ Валюты5.Курс КОНЕЦ | КОНЕЦ КАК КурсВалюты5, | ВЫБОР КОГДА СписокНачислений.Валюта6 ЕСТЬ NULL ТОГДА | ВЫБОР КОГДА ПоказателиВведенныеПриРасчете.Валюта6 В (&парамВалютаРегламентУчета, ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)) ТОГДА 1 ИНАЧЕ ПВалюты6.Курс КОНЕЦ | ИНАЧЕ | ВЫБОР КОГДА СписокНачислений.Валюта6 В (&парамВалютаРегламентУчета, ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)) ТОГДА 1 ИНАЧЕ Валюты6.Курс КОНЕЦ | КОНЕЦ КАК КурсВалюты6, | ВЫБОР | КОГДА СписокНачислений.Показатель1 ЕСТЬ NULL | И ПоказателиВведенныеПриРасчете.Показатель1 ЕСТЬ NULL | ТОГДА 0 | КОГДА ПоказателиВведенныеПриРасчете.Показатель1 ЕСТЬ НЕ NULL | ИЛИ (ЗначенияВводимыхКадровыхПоказателей.ПоказательВозможностьИзменения = ЗНАЧЕНИЕ(Перечисление.ИзменениеПоказателейСхемМотивации.Ежемесячно) | ИЛИ ЗначенияВводимыхКадровыхПоказателей.ПоказательВозможностьИзменения = ЗНАЧЕНИЕ(Перечисление.ИзменениеПоказателейСхемМотивации.Периодически)) | И ЗначенияВводимыхКадровыхПоказателей.НомерСтроки = 1 | ТОГДА | ВЫБОР | КОГДА ПоказателиВведенныеПриРасчете.Валюта1 В (&парамВалютаРегламентУчета, ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)) | ТОГДА ПоказателиВведенныеПриРасчете.Показатель1 | ИНАЧЕ ПоказателиВведенныеПриРасчете.Показатель1 * ЕСТЬNULL(ПВалюты1.Курс / ПВалюты1.Кратность, 0) | КОНЕЦ | КОГДА (СписокНачислений.Показатель1 = 0 | ИЛИ СписокНачислений.Показатель1 ЕСТЬ NULL ) | И ЗначенияВводимыхКадровыхПоказателей.Показатель ЕСТЬ НЕ NULL | И (ЗначенияВводимыхКадровыхПоказателей.Показатель <> ЗНАЧЕНИЕ(Справочник.ПоказателиСхемМотивации.ПустаяСсылка) | И ЗначенияВводимыхКадровыхПоказателей.НомерСтроки = 1 | ИЛИ ЗначенияВводимыхКадровыхПоказателей.ЭтоТарифнаяСтавка | И ЗначенияВводимыхКадровыхПоказателей.НомерСтроки = 1) | ТОГДА ЗначенияВводимыхКадровыхПоказателей.ЗначениеПоказателя | КОГДА СписокНачислений.Показатель1 ЕСТЬ NULL | ТОГДА 0 | КОГДА СписокНачислений.СпособРасчета В (&парамМассивСпособовРасчетовБезВалюты) | ТОГДА СписокНачислений.Показатель1 | КОГДА СписокНачислений.Валюта1 В (&парамВалютаРегламентУчета, ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)) | ТОГДА СписокНачислений.Показатель1 | ИНАЧЕ СписокНачислений.Показатель1 * ЕСТЬNULL(Валюты1.Курс / Валюты1.Кратность, 0) | КОНЕЦ КАК Показатель1, | ВЫБОР | КОГДА СписокНачислений.Показатель2 ЕСТЬ NULL | И ПоказателиВведенныеПриРасчете.Показатель2 ЕСТЬ НЕ NULL | И (ЗначенияВводимыхКадровыхПоказателей.Показатель ЕСТЬ NULL | ИЛИ ЗначенияВводимыхКадровыхПоказателей.НомерСтроки <> 2) | ТОГДА 0 | КОГДА ПоказателиВведенныеПриРасчете.Показатель2 ЕСТЬ НЕ NULL | ИЛИ (ЗначенияВводимыхКадровыхПоказателей.ПоказательВозможностьИзменения = ЗНАЧЕНИЕ(Перечисление.ИзменениеПоказателейСхемМотивации.Ежемесячно) | ИЛИ ЗначенияВводимыхКадровыхПоказателей.ПоказательВозможностьИзменения = ЗНАЧЕНИЕ(Перечисление.ИзменениеПоказателейСхемМотивации.Периодически)) | И ЗначенияВводимыхКадровыхПоказателей.НомерСтроки = 2 | ТОГДА | ВЫБОР | КОГДА ПоказателиВведенныеПриРасчете.Валюта2 В (&парамВалютаРегламентУчета, ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)) | ТОГДА ПоказателиВведенныеПриРасчете.Показатель2 | ИНАЧЕ ПоказателиВведенныеПриРасчете.Показатель2 * ЕСТЬNULL(ПВалюты2.Курс / ПВалюты2.Кратность, 0) | КОНЕЦ | КОГДА (СписокНачислений.Показатель2 = 0 | ИЛИ СписокНачислений.Показатель2 ЕСТЬ NULL ) | И ЗначенияВводимыхКадровыхПоказателей.Показатель ЕСТЬ НЕ NULL | И (ЗначенияВводимыхКадровыхПоказателей.Показатель <> ЗНАЧЕНИЕ(Справочник.ПоказателиСхемМотивации.ПустаяСсылка) | И ЗначенияВводимыхКадровыхПоказателей.НомерСтроки = 2 | ИЛИ ЗначенияВводимыхКадровыхПоказателей.ЭтоТарифнаяСтавка | И ЗначенияВводимыхКадровыхПоказателей.НомерСтроки = 2) | ТОГДА ЗначенияВводимыхКадровыхПоказателей.ЗначениеПоказателя | КОГДА СписокНачислений.Показатель2 ЕСТЬ NULL | ТОГДА 0 | КОГДА СписокНачислений.СпособРасчета В (&парамМассивСпособовРасчетовБезВалюты) | ТОГДА СписокНачислений.Показатель2 | КОГДА СписокНачислений.Валюта2 В (&парамВалютаРегламентУчета, ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)) | ТОГДА СписокНачислений.Показатель2 | ИНАЧЕ СписокНачислений.Показатель2 * ЕСТЬNULL(Валюты2.Курс / Валюты2.Кратность, 0) | КОНЕЦ КАК Показатель2, | ВЫБОР | КОГДА СписокНачислений.Показатель3 ЕСТЬ NULL | И ПоказателиВведенныеПриРасчете.Показатель3 ЕСТЬ НЕ NULL | И (ЗначенияВводимыхКадровыхПоказателей.Показатель ЕСТЬ NULL | ИЛИ ЗначенияВводимыхКадровыхПоказателей.НомерСтроки <> 3) | ТОГДА 0 | КОГДА ПоказателиВведенныеПриРасчете.Показатель3 ЕСТЬ НЕ NULL | ИЛИ (ЗначенияВводимыхКадровыхПоказателей.ПоказательВозможностьИзменения = ЗНАЧЕНИЕ(Перечисление.ИзменениеПоказателейСхемМотивации.Ежемесячно) | ИЛИ ЗначенияВводимыхКадровыхПоказателей.ПоказательВозможностьИзменения = ЗНАЧЕНИЕ(Перечисление.ИзменениеПоказателейСхемМотивации.Периодически)) | И ЗначенияВводимыхКадровыхПоказателей.НомерСтроки = 3 | ТОГДА | ВЫБОР | КОГДА ПоказателиВведенныеПриРасчете.Валюта3 В (&парамВалютаРегламентУчета, ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)) | ТОГДА ПоказателиВведенныеПриРасчете.Показатель3 | ИНАЧЕ ПоказателиВведенныеПриРасчете.Показатель3 * ЕСТЬNULL(ПВалюты3.Курс / ПВалюты3.Кратность, 0) | КОНЕЦ | КОГДА СписокНачислений.Показатель3 = 0 | И ЗначенияВводимыхКадровыхПоказателей.Показатель ЕСТЬ НЕ NULL | И (ЗначенияВводимыхКадровыхПоказателей.Показатель <> ЗНАЧЕНИЕ(Справочник.ПоказателиСхемМотивации.ПустаяСсылка) | И ЗначенияВводимыхКадровыхПоказателей.НомерСтроки = 3 | ИЛИ ЗначенияВводимыхКадровыхПоказателей.ЭтоТарифнаяСтавка | И ЗначенияВводимыхКадровыхПоказателей.НомерСтроки = 3) | ТОГДА ЗначенияВводимыхКадровыхПоказателей.ЗначениеПоказателя | КОГДА СписокНачислений.Показатель3 ЕСТЬ NULL | ТОГДА 0 | КОГДА СписокНачислений.СпособРасчета В (&парамМассивСпособовРасчетовБезВалюты) | ТОГДА СписокНачислений.Показатель3 | КОГДА СписокНачислений.Валюта3 В (&парамВалютаРегламентУчета, ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)) | ТОГДА СписокНачислений.Показатель3 | ИНАЧЕ СписокНачислений.Показатель3 * ЕСТЬNULL(Валюты3.Курс / Валюты3.Кратность, 0) | КОНЕЦ КАК Показатель3, | ВЫБОР | КОГДА СписокНачислений.Показатель4 ЕСТЬ NULL | И ПоказателиВведенныеПриРасчете.Показатель4 ЕСТЬ НЕ NULL | И (ЗначенияВводимыхКадровыхПоказателей.Показатель ЕСТЬ NULL | ИЛИ ЗначенияВводимыхКадровыхПоказателей.НомерСтроки <> 4) | ТОГДА 0 | КОГДА ПоказателиВведенныеПриРасчете.Показатель4 ЕСТЬ НЕ NULL | ИЛИ (ЗначенияВводимыхКадровыхПоказателей.ПоказательВозможностьИзменения = ЗНАЧЕНИЕ(Перечисление.ИзменениеПоказателейСхемМотивации.Ежемесячно) | ИЛИ ЗначенияВводимыхКадровыхПоказателей.ПоказательВозможностьИзменения = ЗНАЧЕНИЕ(Перечисление.ИзменениеПоказателейСхемМотивации.Периодически)) | И ЗначенияВводимыхКадровыхПоказателей.НомерСтроки = 4 | ТОГДА ПоказателиВведенныеПриРасчете.Показатель4 | КОГДА СписокНачислений.Показатель4 = 0 | И ЗначенияВводимыхКадровыхПоказателей.Показатель ЕСТЬ НЕ NULL | И (ЗначенияВводимыхКадровыхПоказателей.Показатель <> ЗНАЧЕНИЕ(Справочник.ПоказателиСхемМотивации.ПустаяСсылка) | И ЗначенияВводимыхКадровыхПоказателей.НомерСтроки = 4 | ИЛИ ЗначенияВводимыхКадровыхПоказателей.ЭтоТарифнаяСтавка | И ЗначенияВводимыхКадровыхПоказателей.НомерСтроки = 4) | ТОГДА ЗначенияВводимыхКадровыхПоказателей.ЗначениеПоказателя | КОГДА СписокНачислений.Показатель4 ЕСТЬ NULL | ТОГДА 0 | КОГДА СписокНачислений.СпособРасчета В (&парамМассивСпособовРасчетовБезВалюты) | ТОГДА | ВЫБОР | КОГДА ПоказателиВведенныеПриРасчете.Валюта4 В (&парамВалютаРегламентУчета, ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)) | ТОГДА ПоказателиВведенныеПриРасчете.Показатель4 | ИНАЧЕ ПоказателиВведенныеПриРасчете.Показатель4 * ЕСТЬNULL(ПВалюты3.Курс / ПВалюты4.Кратность, 0) | КОНЕЦ | КОГДА СписокНачислений.Валюта4 В (&парамВалютаРегламентУчета, ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)) | ТОГДА СписокНачислений.Показатель4 | ИНАЧЕ СписокНачислений.Показатель4 * ЕСТЬNULL(Валюты4.Курс / Валюты4.Кратность, 0) | КОНЕЦ КАК Показатель4, | ВЫБОР | КОГДА СписокНачислений.Показатель5 ЕСТЬ NULL | И ПоказателиВведенныеПриРасчете.Показатель5 ЕСТЬ НЕ NULL | И (ЗначенияВводимыхКадровыхПоказателей.Показатель ЕСТЬ NULL | ИЛИ ЗначенияВводимыхКадровыхПоказателей.НомерСтроки <> 5) | ТОГДА 0 | КОГДА ПоказателиВведенныеПриРасчете.Показатель5 ЕСТЬ НЕ NULL | ИЛИ (ЗначенияВводимыхКадровыхПоказателей.ПоказательВозможностьИзменения = ЗНАЧЕНИЕ(Перечисление.ИзменениеПоказателейСхемМотивации.Ежемесячно) | ИЛИ ЗначенияВводимыхКадровыхПоказателей.ПоказательВозможностьИзменения = ЗНАЧЕНИЕ(Перечисление.ИзменениеПоказателейСхемМотивации.Периодически)) | И ЗначенияВводимыхКадровыхПоказателей.НомерСтроки = 5 | ТОГДА | ВЫБОР | КОГДА ПоказателиВведенныеПриРасчете.Валюта5 В (&парамВалютаРегламентУчета, ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)) | ТОГДА ПоказателиВведенныеПриРасчете.Показатель5 | ИНАЧЕ ПоказателиВведенныеПриРасчете.Показатель5 * ЕСТЬNULL(ПВалюты5.Курс / ПВалюты5.Кратность, 0) | КОНЕЦ | КОГДА СписокНачислений.Показатель5 = 0 | И ЗначенияВводимыхКадровыхПоказателей.Показатель ЕСТЬ НЕ NULL | И (ЗначенияВводимыхКадровыхПоказателей.Показатель <> ЗНАЧЕНИЕ(Справочник.ПоказателиСхемМотивации.ПустаяСсылка) | И ЗначенияВводимыхКадровыхПоказателей.НомерСтроки = 5 | ИЛИ ЗначенияВводимыхКадровыхПоказателей.ЭтоТарифнаяСтавка | И ЗначенияВводимыхКадровыхПоказателей.НомерСтроки = 5) | ТОГДА ЗначенияВводимыхКадровыхПоказателей.ЗначениеПоказателя | КОГДА СписокНачислений.Показатель5 ЕСТЬ NULL | ТОГДА 0 | КОГДА СписокНачислений.СпособРасчета В (&парамМассивСпособовРасчетовБезВалюты) | ТОГДА СписокНачислений.Показатель5 | КОГДА СписокНачислений.Валюта5 В (&парамВалютаРегламентУчета, ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)) | ТОГДА СписокНачислений.Показатель5 | ИНАЧЕ СписокНачислений.Показатель5 * ЕСТЬNULL(Валюты5.Курс / Валюты5.Кратность, 0) | КОНЕЦ КАК Показатель5, | ВЫБОР | КОГДА СписокНачислений.Показатель6 ЕСТЬ NULL | И ПоказателиВведенныеПриРасчете.Показатель6 ЕСТЬ НЕ NULL | И (ЗначенияВводимыхКадровыхПоказателей.Показатель ЕСТЬ NULL | ИЛИ ЗначенияВводимыхКадровыхПоказателей.НомерСтроки <> 6) | ТОГДА 0 | КОГДА ПоказателиВведенныеПриРасчете.Показатель6 ЕСТЬ НЕ NULL | ИЛИ (ЗначенияВводимыхКадровыхПоказателей.ПоказательВозможностьИзменения = ЗНАЧЕНИЕ(Перечисление.ИзменениеПоказателейСхемМотивации.Ежемесячно) | ИЛИ ЗначенияВводимыхКадровыхПоказателей.ПоказательВозможностьИзменения = ЗНАЧЕНИЕ(Перечисление.ИзменениеПоказателейСхемМотивации.Периодически)) | И ЗначенияВводимыхКадровыхПоказателей.НомерСтроки = 6 | ТОГДА | ВЫБОР | КОГДА ПоказателиВведенныеПриРасчете.Валюта6 В (&парамВалютаРегламентУчета, ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)) | ТОГДА ПоказателиВведенныеПриРасчете.Показатель6 | ИНАЧЕ ПоказателиВведенныеПриРасчете.Показатель6 * ЕСТЬNULL(ПВалюты3.Курс / ПВалюты6.Кратность, 0) | КОНЕЦ | КОГДА СписокНачислений.Показатель6 = 0 | И ЗначенияВводимыхКадровыхПоказателей.Показатель ЕСТЬ НЕ NULL | И (ЗначенияВводимыхКадровыхПоказателей.Показатель <> ЗНАЧЕНИЕ(Справочник.ПоказателиСхемМотивации.ПустаяСсылка) | И ЗначенияВводимыхКадровыхПоказателей.НомерСтроки = 6 | ИЛИ ЗначенияВводимыхКадровыхПоказателей.ЭтоТарифнаяСтавка | И ЗначенияВводимыхКадровыхПоказателей.НомерСтроки = 6) | ТОГДА ЗначенияВводимыхКадровыхПоказателей.ЗначениеПоказателя | КОГДА СписокНачислений.Показатель6 ЕСТЬ NULL | ТОГДА 0 | КОГДА СписокНачислений.СпособРасчета В (&парамМассивСпособовРасчетовБезВалюты) | ТОГДА СписокНачислений.Показатель6 | КОГДА СписокНачислений.Валюта6 В (&парамВалютаРегламентУчета, ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)) | ТОГДА СписокНачислений.Показатель6 | ИНАЧЕ СписокНачислений.Показатель6 * ЕСТЬNULL(Валюты6.Курс / Валюты6.Кратность, 0) | КОНЕЦ КАК Показатель6, | ПоказательТарифнойСтавки.Показатель КАК ВидТарифнойСтавки, | ВЫБОР | КОГДА ПоказательТарифнойСтавки.НомерСтроки = 1 | ТОГДА ВЫБОР | КОГДА ПоказателиВведенныеПриРасчете.Показатель1 ЕСТЬ НЕ NULL | ТОГДА ПоказателиВведенныеПриРасчете.Показатель1 | КОГДА СписокНачислений.Показатель1 = 0 | И (ЗначенияВводимыхКадровыхПоказателей.Показатель <> ЗНАЧЕНИЕ(Справочник.ПоказателиСхемМотивации.ПустаяСсылка) | И ЗначенияВводимыхКадровыхПоказателей.НомерСтроки = 1 | ИЛИ ЗначенияВводимыхКадровыхПоказателей.ЭтоТарифнаяСтавка) | ТОГДА ЗначенияВводимыхКадровыхПоказателей.ЗначениеПоказателя | КОГДА СписокНачислений.Показатель1 ЕСТЬ NULL | ТОГДА 0 | КОГДА СписокНачислений.СпособРасчета В (&парамМассивСпособовРасчетовБезВалюты) | ТОГДА СписокНачислений.Показатель1 | КОГДА СписокНачислений.Валюта1 В (&парамВалютаРегламентУчета, ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)) | ТОГДА СписокНачислений.Показатель1 | ИНАЧЕ СписокНачислений.Показатель1 * ЕСТЬNULL(Валюты1.Курс / Валюты1.Кратность, 0) | КОНЕЦ | КОГДА ПоказательТарифнойСтавки.НомерСтроки = 2 | ТОГДА ВЫБОР | КОГДА ПоказателиВведенныеПриРасчете.Показатель2 ЕСТЬ НЕ NULL | ТОГДА ПоказателиВведенныеПриРасчете.Показатель2 | КОГДА СписокНачислений.Показатель2 = 0 | И (ЗначенияВводимыхКадровыхПоказателей.Показатель <> ЗНАЧЕНИЕ(Справочник.ПоказателиСхемМотивации.ПустаяСсылка) | И ЗначенияВводимыхКадровыхПоказателей.НомерСтроки = 2 | ИЛИ ЗначенияВводимыхКадровыхПоказателей.ЭтоТарифнаяСтавка) | ТОГДА ЗначенияВводимыхКадровыхПоказателей.ЗначениеПоказателя | КОГДА СписокНачислений.Показатель2 ЕСТЬ NULL | ТОГДА 0 | КОГДА СписокНачислений.СпособРасчета В (&парамМассивСпособовРасчетовБезВалюты) | ТОГДА СписокНачислений.Показатель2 | КОГДА СписокНачислений.Валюта2 В (&парамВалютаРегламентУчета, ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)) | ТОГДА СписокНачислений.Показатель2 | ИНАЧЕ СписокНачислений.Показатель2 * ЕСТЬNULL(Валюты2.Курс / Валюты2.Кратность, 0) | КОНЕЦ | КОГДА ПоказательТарифнойСтавки.НомерСтроки = 3 | ТОГДА ВЫБОР | КОГДА ПоказателиВведенныеПриРасчете.Показатель3 ЕСТЬ НЕ NULL | ТОГДА ПоказателиВведенныеПриРасчете.Показатель3 | КОГДА СписокНачислений.Показатель3 = 0 | И (ЗначенияВводимыхКадровыхПоказателей.Показатель <> ЗНАЧЕНИЕ(Справочник.ПоказателиСхемМотивации.ПустаяСсылка) | И ЗначенияВводимыхКадровыхПоказателей.НомерСтроки = 3 | ИЛИ ЗначенияВводимыхКадровыхПоказателей.ЭтоТарифнаяСтавка) | ТОГДА ЗначенияВводимыхКадровыхПоказателей.ЗначениеПоказателя | КОГДА СписокНачислений.Показатель3 ЕСТЬ NULL | ТОГДА 0 | КОГДА СписокНачислений.СпособРасчета В (&парамМассивСпособовРасчетовБезВалюты) | ТОГДА СписокНачислений.Показатель3 | КОГДА СписокНачислений.Валюта3 В (&парамВалютаРегламентУчета, ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)) | ТОГДА СписокНачислений.Показатель3 | ИНАЧЕ СписокНачислений.Показатель3 * ЕСТЬNULL(Валюты3.Курс / Валюты3.Кратность, 0) | КОНЕЦ | КОГДА ПоказательТарифнойСтавки.НомерСтроки = 4 | ТОГДА ВЫБОР | КОГДА ПоказателиВведенныеПриРасчете.Показатель4 ЕСТЬ НЕ NULL | ТОГДА ПоказателиВведенныеПриРасчете.Показатель4 | КОГДА СписокНачислений.Показатель4 = 0 | И (ЗначенияВводимыхКадровыхПоказателей.Показатель <> ЗНАЧЕНИЕ(Справочник.ПоказателиСхемМотивации.ПустаяСсылка) | И ЗначенияВводимыхКадровыхПоказателей.НомерСтроки = 4 | ИЛИ ЗначенияВводимыхКадровыхПоказателей.ЭтоТарифнаяСтавка) | ТОГДА ЗначенияВводимыхКадровыхПоказателей.ЗначениеПоказателя | КОГДА СписокНачислений.Показатель4 ЕСТЬ NULL | ТОГДА 0 | КОГДА СписокНачислений.СпособРасчета В (&парамМассивСпособовРасчетовБезВалюты) | ТОГДА СписокНачислений.Показатель4 | КОГДА СписокНачислений.Валюта4 В (&парамВалютаРегламентУчета, ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)) | ТОГДА СписокНачислений.Показатель4 | ИНАЧЕ СписокНачислений.Показатель4 * ЕСТЬNULL(Валюты4.Курс / Валюты4.Кратность, 0) | КОНЕЦ | КОГДА ПоказательТарифнойСтавки.НомерСтроки = 5 | ТОГДА ВЫБОР | КОГДА ПоказателиВведенныеПриРасчете.Показатель5 ЕСТЬ НЕ NULL | ТОГДА ПоказателиВведенныеПриРасчете.Показатель5 | КОГДА СписокНачислений.Показатель5 = 0 | И (ЗначенияВводимыхКадровыхПоказателей.Показатель <> ЗНАЧЕНИЕ(Справочник.ПоказателиСхемМотивации.ПустаяСсылка) | И ЗначенияВводимыхКадровыхПоказателей.НомерСтроки = 5 | ИЛИ ЗначенияВводимыхКадровыхПоказателей.ЭтоТарифнаяСтавка) | ТОГДА ЗначенияВводимыхКадровыхПоказателей.ЗначениеПоказателя | КОГДА СписокНачислений.Показатель5 ЕСТЬ NULL | ТОГДА 0 | КОГДА СписокНачислений.СпособРасчета В (&парамМассивСпособовРасчетовБезВалюты) | ТОГДА СписокНачислений.Показатель5 | КОГДА СписокНачислений.Валюта5 В (&парамВалютаРегламентУчета, ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)) | ТОГДА СписокНачислений.Показатель5 | ИНАЧЕ СписокНачислений.Показатель5 * ЕСТЬNULL(Валюты5.Курс / Валюты5.Кратность, 0) | КОНЕЦ | КОГДА ПоказательТарифнойСтавки.НомерСтроки = 6 | ТОГДА ВЫБОР | КОГДА ПоказателиВведенныеПриРасчете.Показатель6 ЕСТЬ НЕ NULL | ТОГДА ПоказателиВведенныеПриРасчете.Показатель6 | КОГДА СписокНачислений.Показатель6 = 0 | И (ЗначенияВводимыхКадровыхПоказателей.Показатель <> ЗНАЧЕНИЕ(Справочник.ПоказателиСхемМотивации.ПустаяСсылка) | И ЗначенияВводимыхКадровыхПоказателей.НомерСтроки = 6 | ИЛИ ЗначенияВводимыхКадровыхПоказателей.ЭтоТарифнаяСтавка) | ТОГДА ЗначенияВводимыхКадровыхПоказателей.ЗначениеПоказателя | КОГДА СписокНачислений.Показатель6 ЕСТЬ NULL | ТОГДА 0 | КОГДА СписокНачислений.СпособРасчета В (&парамМассивСпособовРасчетовБезВалюты) | ТОГДА СписокНачислений.Показатель6 | КОГДА СписокНачислений.Валюта6 В (&парамВалютаРегламентУчета, ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)) | ТОГДА СписокНачислений.Показатель6 | ИНАЧЕ СписокНачислений.Показатель6 * ЕСТЬNULL(Валюты6.Курс / Валюты6.Кратность, 0) | КОНЕЦ | ИНАЧЕ 0 | КОНЕЦ КАК ОкладТариф |ПОМЕСТИТЬ ВТРаботникиИНачисленияПоСхемамМотивации |ИЗ | ВТРаботникиИНачисления КАК СписокНачислений | ЛЕВОЕ СОЕДИНЕНИЕ ВТПоказатели КАК ПоказателиВведенныеПриРасчете | ПО СписокНачислений.ВидРасчета = ПоказателиВведенныеПриРасчете.ВидРасчета | И (СписокНачислений.Сотрудник = ПоказателиВведенныеПриРасчете.Сотрудник | ) | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РАЗЛИЧНЫЕ | НеВводимыеПоказатели.Ссылка КАК Ссылка, | НеВводимыеПоказатели.НомерСтроки КАК НомерСтроки, | НеВводимыеПоказатели.Показатель КАК Показатель, | НеВводимыеПоказатели.ПоказательВозможностьИзменения КАК ПоказательВозможностьИзменения, | НеВводимыеПоказатели.ЭтоТарифнаяСтавка КАК ЭтоТарифнаяСтавка, | СУММА(ЗначенияВводимыхКадровыхПоказателей.ЗначениеПоказателя) КАК ЗначениеПоказателя, | ЗначенияВводимыхКадровыхПоказателей.Сотрудник КАК Сотрудник, | ЗначенияВводимыхКадровыхПоказателей.Период, | ЗначенияВводимыхКадровыхПоказателей.ПериодРаботники, | ЗначенияВводимыхКадровыхПоказателей.ПериодНачисления | ИЗ | ВТНеЗапрашиваемыеПриКадровыхПеремещениях КАК НеВводимыеПоказатели | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТЗначенияВводимыхКадровыхПоказателей КАК ЗначенияВводимыхКадровыхПоказателей | ПО НеВводимыеПоказатели.Показатель = ЗначенияВводимыхКадровыхПоказателей.Показатель | ГДЕ | ЗначенияВводимыхКадровыхПоказателей.ЗначениеПоказателя <> 0 | | СГРУППИРОВАТЬ ПО | НеВводимыеПоказатели.Ссылка, | НеВводимыеПоказатели.НомерСтроки, | НеВводимыеПоказатели.Показатель, | НеВводимыеПоказатели.ПоказательВозможностьИзменения, | НеВводимыеПоказатели.ЭтоТарифнаяСтавка, | ЗначенияВводимыхКадровыхПоказателей.Сотрудник, | ЗначенияВводимыхКадровыхПоказателей.Период, | ЗначенияВводимыхКадровыхПоказателей.ПериодРаботники, | ЗначенияВводимыхКадровыхПоказателей.ПериодНачисления | ) КАК ЗначенияВводимыхКадровыхПоказателей | ПО СписокНачислений.Сотрудник = ЗначенияВводимыхКадровыхПоказателей.Сотрудник | И КОНЕЦПЕРИОДА(СписокНачислений.Период, МЕСЯЦ) = КОНЕЦПЕРИОДА(ЗначенияВводимыхКадровыхПоказателей.Период, МЕСЯЦ) | И СписокНачислений.ВидРасчета = ЗначенияВводимыхКадровыхПоказателей.Ссылка | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалютДляРасчетовСПерсоналом КАК ПВалюты1 | ПО (ПВалюты1.Период = &парамДатаВалютногоУчета) | И ПоказателиВведенныеПриРасчете.Валюта1 = ПВалюты1.Валюта | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалютДляРасчетовСПерсоналом КАК ПВалюты2 | ПО (ПВалюты2.Период = &парамДатаВалютногоУчета) | И ПоказателиВведенныеПриРасчете.Валюта2 = ПВалюты2.Валюта | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалютДляРасчетовСПерсоналом КАК ПВалюты3 | ПО (ПВалюты3.Период = &парамДатаВалютногоУчета) | И ПоказателиВведенныеПриРасчете.Валюта3 = ПВалюты3.Валюта | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалютДляРасчетовСПерсоналом КАК ПВалюты4 | ПО (ПВалюты4.Период = &парамДатаВалютногоУчета) | И ПоказателиВведенныеПриРасчете.Валюта4 = ПВалюты4.Валюта | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалютДляРасчетовСПерсоналом КАК ПВалюты5 | ПО (ПВалюты5.Период = &парамДатаВалютногоУчета) | И ПоказателиВведенныеПриРасчете.Валюта5 = ПВалюты5.Валюта | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалютДляРасчетовСПерсоналом КАК ПВалюты6 | ПО (ПВалюты6.Период = &парамДатаВалютногоУчета) | И ПоказателиВведенныеПриРасчете.Валюта6 = ПВалюты6.Валюта | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалютДляРасчетовСПерсоналом КАК Валюты1 | ПО (Валюты1.Период = &парамДатаВалютногоУчета) | И СписокНачислений.Валюта1 = Валюты1.Валюта | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалютДляРасчетовСПерсоналом КАК Валюты2 | ПО (Валюты2.Период = &парамДатаВалютногоУчета) | И СписокНачислений.Валюта2 = Валюты2.Валюта | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалютДляРасчетовСПерсоналом КАК Валюты3 | ПО (Валюты3.Период = &парамДатаВалютногоУчета) | И СписокНачислений.Валюта3 = Валюты3.Валюта | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалютДляРасчетовСПерсоналом КАК Валюты4 | ПО (Валюты4.Период = &парамДатаВалютногоУчета) | И СписокНачислений.Валюта4 = Валюты4.Валюта | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалютДляРасчетовСПерсоналом КАК Валюты5 | ПО (Валюты5.Период = &парамДатаВалютногоУчета) | И СписокНачислений.Валюта5 = Валюты5.Валюта | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалютДляРасчетовСПерсоналом КАК Валюты6 | ПО (Валюты6.Период = &парамДатаВалютногоУчета) | И СписокНачислений.Валюта6 = Валюты6.Валюта | ЛЕВОЕ СОЕДИНЕНИЕ ВТВводимыеВПлановыхНачисленияхПоказатели КАК ПоказательТарифнойСтавки | ПО СписокНачислений.ВидРасчета = ПоказательТарифнойСтавки.Ссылка | И (ПоказательТарифнойСтавки.Показатель В (ЗНАЧЕНИЕ(Справочник.ПоказателиСхемМотивации.ТарифнаяСтавкаМесячная), ЗНАЧЕНИЕ(Справочник.ПоказателиСхемМотивации.ТарифнаяСтавкаЧасовая), ЗНАЧЕНИЕ(Справочник.ПоказателиСхемМотивации.ТарифнаяСтавкаДневная))) |ГДЕ | ВЫБОР | КОГДА СписокНачислений.Подходит | ТОГДА (НЕ СписокНачислений.ВидРасчета ЕСТЬ NULL ) | ИНАЧЕ ИСТИНА | КОНЕЦ | |ИНДЕКСИРОВАТЬ ПО | Сотрудник |"; Запрос.Выполнить(); ЗапросПризнаковАвтоНачисленийПоТабелю = Новый Запрос; ЗапросПризнаковАвтоНачисленийПоТабелю.Текст = "ВЫБРАТЬ | ВЫБОР | КОГДА 1 В | (ВЫБРАТЬ ПЕРВЫЕ 1 | 1 | ИЗ | ПланВидовРасчета.ОсновныеНачисленияОрганизаций КАК ОсновныеНачисленияОрганизаций | ГДЕ | ОсновныеНачисленияОрганизаций.АвтоНачислятьПоТабелю | И ОсновныеНачисленияОрганизаций.ОбозначениеВТабелеУчетаРабочегоВремени = ЗНАЧЕНИЕ(Справочник.КлассификаторИспользованияРабочегоВремени.РаботаНочныеЧасы)) | ТОГДА ИСТИНА | ИНАЧЕ ЛОЖЬ | КОНЕЦ КАК АвтоНачислятьПоТабелюНочные, | ВЫБОР | КОГДА 1 В | (ВЫБРАТЬ ПЕРВЫЕ 1 | 1 | ИЗ | ПланВидовРасчета.ОсновныеНачисленияОрганизаций КАК ОсновныеНачисленияОрганизаций | ГДЕ | ОсновныеНачисленияОрганизаций.АвтоНачислятьПоТабелю | И ОсновныеНачисленияОрганизаций.ОбозначениеВТабелеУчетаРабочегоВремени = ЗНАЧЕНИЕ(Справочник.КлассификаторИспользованияРабочегоВремени.РаботаВечерниеЧасы)) | ТОГДА ИСТИНА | ИНАЧЕ ЛОЖЬ | КОНЕЦ КАК АвтоНачислятьПоТабелюВечерние"; ВыборкаПризнаковАвтоначисления = ЗапросПризнаковАвтоНачисленийПоТабелю.Выполнить().Выбрать(); ВыборкаПризнаковАвтоначисления.Следующий(); // ДанныеПроизводственногоКалендаряЗаМесяц // Данные производственного календаря за месяц // // Поля: // ЧислоРабочихДней, // ЧислоПредпраздничныхДней // // Описание: // // выбираем данные из рег-ра РегламентированныйПроизводственныйКалендарь за месяц, в который сотрудник работал Запрос.Текст = "ВЫБРАТЬ | МЕСЯЦ(РегламентированныйПроизводственныйКалендарь.ДатаКалендаря) КАК МесяцКалендаря, | СУММА(ВЫБОР | КОГДА РегламентированныйПроизводственныйКалендарь.ВидДня = ЗНАЧЕНИЕ(Перечисление.ВидыДнейПроизводственногоКалендаря.Рабочий) | ТОГДА 1 | ИНАЧЕ 0 | КОНЕЦ) КАК ЧислоРабочихДней, | СУММА(ВЫБОР | КОГДА РегламентированныйПроизводственныйКалендарь.ВидДня = ЗНАЧЕНИЕ(Перечисление.ВидыДнейПроизводственногоКалендаря.Предпраздничный) | ТОГДА 1 | ИНАЧЕ 0 | КОНЕЦ) КАК ЧислоПредпраздничныхДней |ПОМЕСТИТЬ ВТДанныеПроизводственногоКалендаряЗаМесяц |ИЗ | РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь |ГДЕ | РегламентированныйПроизводственныйКалендарь.Год = &Год | |СГРУППИРОВАТЬ ПО | МЕСЯЦ(РегламентированныйПроизводственныйКалендарь.ДатаКалендаря)"; Запрос.Выполнить(); //Основной текст запроса ОсновнойТекстЗапроса = "ВЫБРАТЬ РАЗЛИЧНЫЕ | ДвиженияРаботников.Сотрудник КАК Сотрудник, | ДвиженияРаботников.Период КАК Период, | ВЫБОР | КОГДА 1 В | (ВЫБРАТЬ ПЕРВЫЕ 1 | 1 | ИЗ | РегистрСведений.ГрафикиРаботыПоВидамВремени КАК ГрафикиРаботы | ГДЕ | ГрафикиРаботы.Месяц = НАЧАЛОПЕРИОДА(ДвиженияРаботников.Период, МЕСЯЦ) | И ГрафикиРаботы.ГрафикРаботы = ДвиженияРаботников.Сотрудник) | ТОГДА ИСТИНА | ИНАЧЕ ЛОЖЬ | КОНЕЦ КАК ЕстьИндГрафик, | ВЫБОР | КОГДА 1 В | (ВЫБРАТЬ ПЕРВЫЕ 1 | 1 | ИЗ | РегистрСведений.СводныеИндивидуальныеГрафики КАК СводныеИндивидуальныеГрафики | ГДЕ | СводныеИндивидуальныеГрафики.Месяц = НАЧАЛОПЕРИОДА(ДвиженияРаботников.Период, МЕСЯЦ) | И СводныеИндивидуальныеГрафики.Сотрудник = ДвиженияРаботников.Сотрудник) | ТОГДА ИСТИНА | ИНАЧЕ ЛОЖЬ | КОНЕЦ КАК ЕстьИндСводнГрафик, | ВЫБОР | КОГДА 1 В | (ВЫБРАТЬ ПЕРВЫЕ 1 | 1 | ИЗ | РегистрНакопления.РабочееВремяРаботниковОрганизаций КАК РабочееВремяРаботниковОрганизаций | ГДЕ | РабочееВремяРаботниковОрганизаций.Период = НАЧАЛОПЕРИОДА(ДвиженияРаботников.Период, МЕСЯЦ) | И РабочееВремяРаботниковОрганизаций.Сотрудник = ДвиженияРаботников.Сотрудник) | ТОГДА ИСТИНА | ИНАЧЕ ЛОЖЬ | КОНЕЦ КАК ЕстьСводнТабель,"; Если ВыборкаПризнаковАвтоначисления.АвтоНачислятьПоТабелюНочные Тогда ОсновнойТекстЗапроса = ОсновнойТекстЗапроса + " | ВЫБОР | КОГДА 1 В | (ВЫБРАТЬ ПЕРВЫЕ 1 | 1 | ИЗ | РегистрСведений.ГрафикиРаботыПоВидамВремени КАК ГрафикиРаботы | ГДЕ | ГрафикиРаботы.Месяц = НАЧАЛОПЕРИОДА(ДвиженияРаботников.Период, МЕСЯЦ) | И ГрафикиРаботы.ГрафикРаботы = ДвиженияРаботников.Сотрудник | И ГрафикиРаботы.ВидУчетаВремени = ЗНАЧЕНИЕ(Перечисление.ВидыУчетаВремени.ПоНочнымЧасам) | И ГрафикиРаботы.ОсновноеЗначение <> 0) | ТОГДА ИСТИНА | ИНАЧЕ ЛОЖЬ | КОНЕЦ КАК ЕстьНочныеИндГрафик, | ВЫБОР | КОГДА 1 В | (ВЫБРАТЬ ПЕРВЫЕ 1 | 1 | ИЗ | РегистрСведений.СводныеИндивидуальныеГрафики КАК СводныеИндивидуальныеГрафики | ГДЕ | СводныеИндивидуальныеГрафики.Месяц = НАЧАЛОПЕРИОДА(ДвиженияРаботников.Период, МЕСЯЦ) | И СводныеИндивидуальныеГрафики.Сотрудник = ДвиженияРаботников.Сотрудник | И СводныеИндивидуальныеГрафики.ЧасовНочных <> 0) | ТОГДА ИСТИНА | ИНАЧЕ ЛОЖЬ | КОНЕЦ КАК ЕстьНочныеИндСводнГрафик, | ВЫБОР | КОГДА 1 В | (ВЫБРАТЬ ПЕРВЫЕ 1 | 1 | ИЗ | РегистрНакопления.РабочееВремяРаботниковОрганизаций КАК РабочееВремяРаботниковОрганизаций | ГДЕ | РабочееВремяРаботниковОрганизаций.Период = НАЧАЛОПЕРИОДА(ДвиженияРаботников.Период, МЕСЯЦ) | И РабочееВремяРаботниковОрганизаций.Сотрудник = ДвиженияРаботников.Сотрудник | И РабочееВремяРаботниковОрганизаций.ВидИспользованияРабочегоВремени = ЗНАЧЕНИЕ(Справочник.КлассификаторИспользованияРабочегоВремени.РаботаНочныеЧасы) | И РабочееВремяРаботниковОрганизаций.Часов <> 0) | ТОГДА ИСТИНА | ИНАЧЕ ЛОЖЬ | КОНЕЦ КАК ЕстьНочныеСводнТабель, | ВЫБОР | КОГДА 1 В | (ВЫБРАТЬ ПЕРВЫЕ 1 | 1 | ИЗ | РегистрСведений.ГрафикиРаботыПоВидамВремени КАК ГрафикиРаботы | ГДЕ | ГрафикиРаботы.Месяц = НАЧАЛОПЕРИОДА(ДвиженияРаботников.Период, МЕСЯЦ) | И ГрафикиРаботы.ГрафикРаботы = ДвиженияРаботников.ГрафикРаботы | И ГрафикиРаботы.ВидУчетаВремени = ЗНАЧЕНИЕ(Перечисление.ВидыУчетаВремени.ПоНочнымЧасам) | И ГрафикиРаботы.ОсновноеЗначение <> 0) | ТОГДА ИСТИНА | ИНАЧЕ ЛОЖЬ | КОНЕЦ КАК ЕстьНочныеОбщГрафик,"; Иначе ОсновнойТекстЗапроса = ОсновнойТекстЗапроса + " | ЛОЖЬ КАК ЕстьНочныеИндГрафик, | ЛОЖЬ КАК ЕстьНочныеИндСводнГрафик, | ЛОЖЬ КАК ЕстьНочныеСводнТабель, | ЛОЖЬ КАК ЕстьНочныеОбщГрафик,"; КонецЕсли; Если ВыборкаПризнаковАвтоначисления.АвтоНачислятьПоТабелюВечерние Тогда ОсновнойТекстЗапроса = ОсновнойТекстЗапроса + " | ВЫБОР | КОГДА 1 В | (ВЫБРАТЬ ПЕРВЫЕ 1 | 1 | ИЗ | РегистрСведений.ГрафикиРаботыПоВидамВремени КАК ГрафикиРаботы | ГДЕ | ГрафикиРаботы.Месяц = НАЧАЛОПЕРИОДА(ДвиженияРаботников.Период, МЕСЯЦ) | И ГрафикиРаботы.ГрафикРаботы = ДвиженияРаботников.Сотрудник | И ГрафикиРаботы.ВидУчетаВремени = ЗНАЧЕНИЕ(Перечисление.ВидыУчетаВремени.ПоВечернимЧасам) | И ГрафикиРаботы.ОсновноеЗначение <> 0) | ТОГДА ИСТИНА | ИНАЧЕ ЛОЖЬ | КОНЕЦ КАК ЕстьВечерниеИндГрафик, | ВЫБОР | КОГДА 1 В | (ВЫБРАТЬ ПЕРВЫЕ 1 | 1 | ИЗ | РегистрСведений.СводныеИндивидуальныеГрафики КАК СводныеИндивидуальныеГрафики | ГДЕ | СводныеИндивидуальныеГрафики.Месяц = НАЧАЛОПЕРИОДА(ДвиженияРаботников.Период, МЕСЯЦ) | И СводныеИндивидуальныеГрафики.Сотрудник = ДвиженияРаботников.Сотрудник | И СводныеИндивидуальныеГрафики.ЧасовВечерних <> 0) | ТОГДА ИСТИНА | ИНАЧЕ ЛОЖЬ | КОНЕЦ КАК ЕстьВечерниеИндСводнГрафик, | ВЫБОР | КОГДА 1 В | (ВЫБРАТЬ ПЕРВЫЕ 1 | 1 | ИЗ | РегистрНакопления.РабочееВремяРаботниковОрганизаций КАК РабочееВремяРаботниковОрганизаций | ГДЕ | РабочееВремяРаботниковОрганизаций.Период = НАЧАЛОПЕРИОДА(ДвиженияРаботников.Период, МЕСЯЦ) | И РабочееВремяРаботниковОрганизаций.Сотрудник = ДвиженияРаботников.Сотрудник | И РабочееВремяРаботниковОрганизаций.ВидИспользованияРабочегоВремени = ЗНАЧЕНИЕ(Справочник.КлассификаторИспользованияРабочегоВремени.РаботаВечерниеЧасы) | И РабочееВремяРаботниковОрганизаций.Часов <> 0) | ТОГДА ИСТИНА | ИНАЧЕ ЛОЖЬ | КОНЕЦ КАК ЕстьВечерниеСводнТабель, | ВЫБОР | КОГДА 1 В | (ВЫБРАТЬ ПЕРВЫЕ 1 | 1 | ИЗ | РегистрСведений.ГрафикиРаботыПоВидамВремени КАК ГрафикиРаботы | ГДЕ | ГрафикиРаботы.Месяц = НАЧАЛОПЕРИОДА(ДвиженияРаботников.Период, МЕСЯЦ) | И ГрафикиРаботы.ГрафикРаботы = ДвиженияРаботников.ГрафикРаботы | И ГрафикиРаботы.ВидУчетаВремени = ЗНАЧЕНИЕ(Перечисление.ВидыУчетаВремени.ПоВечернимЧасам) | И ГрафикиРаботы.ОсновноеЗначение <> 0) | ТОГДА ИСТИНА | ИНАЧЕ ЛОЖЬ | КОНЕЦ КАК ЕстьВечерниеОбщГрафик"; Иначе ОсновнойТекстЗапроса = ОсновнойТекстЗапроса + " | ЛОЖЬ КАК ЕстьВечерниеИндГрафик, | ЛОЖЬ КАК ЕстьВечерниеИндСводнГрафик, | ЛОЖЬ КАК ЕстьВечерниеСводнТабель, | ЛОЖЬ КАК ЕстьВечерниеОбщГрафик"; КонецЕсли; ОсновнойТекстЗапроса = ОсновнойТекстЗапроса + " |ПОМЕСТИТЬ ВТСведенияОНочныхВечерних |ИЗ | ВТДвиженияРаботников КАК ДвиженияРаботников | |ИНДЕКСИРОВАТЬ ПО | Сотрудник |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | СписокНачислений.Сотрудник КАК Сотрудник, | СписокНачислений.СотрудникНаименование КАК СотрудникНаименование, | СписокНачислений.Физлицо КАК Физлицо, | СписокНачислений.ПодразделениеОрганизации, | СписокНачислений.Подходит, | СписокНачислений.Период, | СписокНачислений.ПериодРаботники КАК ПериодРаботники, | СписокНачислений.ПериодНачисления КАК ПериодНачисления, | СписокНачислений.ОсновноеНачисление КАК ОсновноеНачисление, | СписокНачислений.ВидРасчета КАК ВидРасчета, | СписокНачислений.ВидРасчетаНаименование, | ЕСТЬNULL(СписокНачислений.ВидРасчетаТребуетВводаТарифногоРазряда, ЛОЖЬ) КАК ТребуетВводаТарифногоРазряда, | СписокНачислений.СпособРасчета, | ЕСТЬNULL(СписокНачислений.НачисляетсяВЦеломЗаМесяц, ЛОЖЬ) КАК НачисляетсяВЦеломЗаМесяц, | СписокНачислений.ВидВремени, | СписокНачислений.Действие, | СписокНачислений.КодВычета, | СписокНачислений.ДатаНачалаСобытия, | СписокНачислений.ГрафикРаботы, | СписокНачислений.СуммированныйУчетРабочегоВремени, | СписокНачислений.Валюта1, | СписокНачислений.Валюта2, | СписокНачислений.Валюта3, | СписокНачислений.Валюта4, | СписокНачислений.Валюта5, | СписокНачислений.Валюта6, | СписокНачислений.КурсВалюты1, | СписокНачислений.КурсВалюты2, | СписокНачислений.КурсВалюты3, | СписокНачислений.КурсВалюты4, | СписокНачислений.КурсВалюты5, | СписокНачислений.КурсВалюты6, | СписокНачислений.ВидТарифнойСтавки, | ВЫБОР | КОГДА СписокНачислений.ВидТарифнойСтавки = ЗНАЧЕНИЕ(Справочник.ПоказателиСхемМотивации.ТарифнаяСтавкаЧасовая) | ТОГДА СписокНачислений.ОкладТариф | КОГДА СписокНачислений.ВидТарифнойСтавки = ЗНАЧЕНИЕ(Справочник.ПоказателиСхемМотивации.ТарифнаяСтавкаМесячная) | ТОГДА ВЫРАЗИТЬ(ВЫБОР | КОГДА ЕСТЬNULL(ВариантыВстроенныхАлгоритмовРасчетаЗарплаты.ПорядокПересчетаМесячнойСтавкиВЧасовую, ЗНАЧЕНИЕ(Перечисление.ПорядкиПересчетаМесячнойСтавкиВЧасовую.ПоСреднемуКоличествуЧасовВМесяце)) = ЗНАЧЕНИЕ(Перечисление.ПорядкиПересчетаМесячнойСтавкиВЧасовую.ПоСреднемуКоличествуЧасовВМесяце) | ТОГДА ВЫБОР | КОГДА ЕСТЬNULL(ДанныеПроизводственногоКалендаря.ЧислоРабочихДней, 0) = 0 | ТОГДА 0 | КОГДА СписокНачислений.ДлительностьРабочейНедели = 0 | ТОГДА 0 | ИНАЧЕ СписокНачислений.ОкладТариф / (СписокНачислений.ДлительностьРабочейНедели / 5 * (ЕСТЬNULL(ДанныеПроизводственногоКалендаря.ЧислоРабочихДней, 0) + ЕСТЬNULL(ДанныеПроизводственногоКалендаря.ЧислоПредпраздничныхДней, 0)) - ЕСТЬNULL(ДанныеПроизводственногоКалендаря.ЧислоПредпраздничныхДней, 0)) * 12 | КОНЕЦ | КОГДА ЕСТЬNULL(ВариантыВстроенныхАлгоритмовРасчетаЗарплаты.ПорядокПересчетаМесячнойСтавкиВЧасовую, ЗНАЧЕНИЕ(Перечисление.ПорядкиПересчетаМесячнойСтавкиВЧасовую.ПоСреднемуКоличествуЧасовВМесяце)) = ЗНАЧЕНИЕ(Перечисление.ПорядкиПересчетаМесячнойСтавкиВЧасовую.ПоМесячнойНормеПоПроизводственномуКалендарю) | ТОГДА ВЫБОР | КОГДА ЕСТЬNULL(ДанныеПроизводственногоКалендаряЗаМесяц.ЧислоРабочихДней, 0) = 0 | ТОГДА 0 | КОГДА СписокНачислений.ДлительностьРабочейНедели = 0 | ТОГДА 0 | ИНАЧЕ СписокНачислений.ОкладТариф / (СписокНачислений.ДлительностьРабочейНедели / 5 * (ЕСТЬNULL(ДанныеПроизводственногоКалендаряЗаМесяц.ЧислоРабочихДней, 0) + ЕСТЬNULL(ДанныеПроизводственногоКалендаряЗаМесяц.ЧислоПредпраздничныхДней, 0)) - ЕСТЬNULL(ДанныеПроизводственногоКалендаряЗаМесяц.ЧислоПредпраздничныхДней, 0)) | КОНЕЦ | КОГДА ВЫБОР | КОГДА НормаВремениПоСводнымИндивидуальнымГрафикам.Сотрудник ЕСТЬ НЕ NULL | ТОГДА НормаВремениПоСводнымИндивидуальнымГрафикам.ЧасовЗаМесяц | КОГДА НормаВремениПоЕжедневнымИндивидуальнымГрафикам.Сотрудник ЕСТЬ НЕ NULL | ТОГДА НормаВремениПоЕжедневнымИндивидуальнымГрафикам.ЧасовЗаМесяц | ИНАЧЕ ЕСТЬNULL(НормаВремениПоОбщимГрафикам.ЧасовЗаМесяц, 0) | КОНЕЦ = 0 | ТОГДА 0 | ИНАЧЕ СписокНачислений.ОкладТариф / ВЫБОР | КОГДА НормаВремениПоСводнымИндивидуальнымГрафикам.Сотрудник ЕСТЬ НЕ NULL | ТОГДА НормаВремениПоСводнымИндивидуальнымГрафикам.ЧасовЗаМесяц | КОГДА НормаВремениПоЕжедневнымИндивидуальнымГрафикам.Сотрудник ЕСТЬ НЕ NULL | ТОГДА НормаВремениПоЕжедневнымИндивидуальнымГрафикам.ЧасовЗаМесяц | ИНАЧЕ ЕСТЬNULL(НормаВремениПоОбщимГрафикам.ЧасовЗаМесяц, 0) | КОНЕЦ | КОНЕЦ КАК ЧИСЛО(15, 3)) | КОГДА СписокНачислений.ВидТарифнойСтавки = ЗНАЧЕНИЕ(Справочник.ПоказателиСхемМотивации.ТарифнаяСтавкаДневная) | ТОГДА ВЫРАЗИТЬ(ВЫБОР | КОГДА СписокНачислений.ДлительностьРабочейНедели = 0 | ТОГДА 0 | ИНАЧЕ СписокНачислений.ОкладТариф / СписокНачислений.ДлительностьРабочейНедели * ВЫБОР | КОГДА СписокНачислений.ВидГрафика = ЗНАЧЕНИЕ(Перечисление.ВидыРабочихГрафиков.Шестидневка) | ТОГДА 6 | ИНАЧЕ 5 | КОНЕЦ | КОНЕЦ КАК ЧИСЛО(15, 3)) | ИНАЧЕ 0 | КОНЕЦ КАК ЧасоваяТарифнаяСтавка, | СписокНачислений.Показатель1, | СписокНачислений.Показатель2, | СписокНачислений.Показатель3, | СписокНачислений.Показатель4, | СписокНачислений.Показатель5, | СписокНачислений.Показатель6, | СведенияОСтажеРаботыНаСевере.ДатаРегистрацииСеверногоСтажа, | СведенияОСтажеРаботыНаСевере.ПорядокНачисленияСеверныхНадбавок, | СведенияОСтажеРаботыНаСевере.НачальныйПроцентСевернойНадбавки, | СведенияОСтажеРаботыНаСевере.СеверныйСтажМесяцев, | СведенияОСтажеРаботыНаСевере.СеверныйСтажДней, | СписокНачислений.ВидРасчетаВидСтажа, | ШкалаКоэффициентовСтажа.Величина КАК КоэффициентСтажа, | ШкалаСледКоэффициентовСтажа.Величина КАК СледКоэффициентСтажа, | ВЫБОР | КОГДА (НЕ ШкалаСледКоэффициентовСтажа.Величина ЕСТЬ NULL ) | ТОГДА ВЫБОР | КОГДА ДЕНЬ(Стажи.ДатаОтсчета) > Стажи.РазмерДней | ТОГДА ДЕНЬ(Стажи.ДатаОтсчета) - Стажи.РазмерДней | ИНАЧЕ ДЕНЬ(ДОБАВИТЬКДАТЕ(&парамНачало, ДЕНЬ, -1)) - (Стажи.РазмерДней - ДЕНЬ(Стажи.ДатаОтсчета)) | КОНЕЦ | КОНЕЦ КАК ДеньСменыКоэффициентаСтажа, | ВЫБОР | КОГДА &ЭтоПерерасчет | ТОГДА ЛОЖЬ | КОГДА ОсновныеНачисления.Сотрудник ЕСТЬ NULL | ТОГДА ЛОЖЬ | ИНАЧЕ ИСТИНА | КОНЕЦ КАК УжеПроведен, | ВЫБОР | КОГДА СведенияОНочныхВечерних.ЕстьИндГрафик | ТОГДА СведенияОНочныхВечерних.ЕстьНочныеИндГрафик | КОГДА СведенияОНочныхВечерних.ЕстьСводнТабель | ТОГДА СведенияОНочныхВечерних.ЕстьНочныеСводнТабель | КОГДА СведенияОНочныхВечерних.ЕстьИндСводнГрафик | ТОГДА СведенияОНочныхВечерних.ЕстьНочныеИндСводнГрафик | ИНАЧЕ СведенияОНочныхВечерних.ЕстьНочныеОбщГрафик | КОНЕЦ КАК ЕстьНочные, | ВЫБОР | КОГДА СведенияОНочныхВечерних.ЕстьИндГрафик | ТОГДА СведенияОНочныхВечерних.ЕстьВечерниеИндГрафик | КОГДА СведенияОНочныхВечерних.ЕстьСводнТабель | ТОГДА СведенияОНочныхВечерних.ЕстьВечерниеСводнТабель | КОГДА СведенияОНочныхВечерних.ЕстьИндСводнГрафик | ТОГДА СведенияОНочныхВечерних.ЕстьВечерниеИндСводнГрафик | ИНАЧЕ СведенияОНочныхВечерних.ЕстьВечерниеОбщГрафик | КОНЕЦ КАК ЕстьВечерние |ИЗ | ВТРаботникиИНачисленияПоСхемамМотивации КАК СписокНачислений | ЛЕВОЕ СОЕДИНЕНИЕ ВТДанныеОСеверномСтаже КАК СведенияОСтажеРаботыНаСевере | ПО СписокНачислений.Сотрудник = СведенияОСтажеРаботыНаСевере.Сотрудник | И СписокНачислений.ПериодРаботники = СведенияОСтажеРаботыНаСевере.ПериодРаботники | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ФизическиеЛица.Стажи КАК Стажи | ПО СписокНачислений.ВидРасчетаВидСтажа = Стажи.ВидСтажа | И СписокНачислений.Физлицо = Стажи.Ссылка | И (СписокНачислений.СпособРасчета В (&СпособыРасчетаОтСтажа)) | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ШкалаКоэффициентовСтажа КАК ШкалаКоэффициентовСтажа | ПО СписокНачислений.ВидРасчетаКоэффициентСтажа = ШкалаКоэффициентовСтажа.КоэффициентСтажа | И (СписокНачислений.СпособРасчета В (&СпособыРасчетаОтСтажа)) | И (Стажи.РазмерМесяцев + РАЗНОСТЬДАТ(Стажи.ДатаОтсчета, ДОБАВИТЬКДАТЕ(&парамНачало, ДЕНЬ, Стажи.РазмерДней), МЕСЯЦ) - ВЫБОР | КОГДА ДЕНЬ(Стажи.ДатаОтсчета) > ДЕНЬ(ДОБАВИТЬКДАТЕ(&парамНачало, ДЕНЬ, Стажи.РазмерДней)) | ТОГДА 1 | ИНАЧЕ 0 | КОНЕЦ >= ШкалаКоэффициентовСтажа.СтажС) | И (Стажи.РазмерМесяцев + РАЗНОСТЬДАТ(Стажи.ДатаОтсчета, ДОБАВИТЬКДАТЕ(&парамНачало, ДЕНЬ, Стажи.РазмерДней), МЕСЯЦ) - ВЫБОР | КОГДА ДЕНЬ(Стажи.ДатаОтсчета) > ДЕНЬ(ДОБАВИТЬКДАТЕ(&парамНачало, ДЕНЬ, Стажи.РазмерДней)) | ТОГДА 1 | ИНАЧЕ 0 | КОНЕЦ < ВЫБОР | КОГДА ШкалаКоэффициентовСтажа.СтажПо = 0 | ТОГДА 999999 | ИНАЧЕ ШкалаКоэффициентовСтажа.СтажПо | КОНЕЦ) | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ШкалаКоэффициентовСтажа КАК ШкалаСледКоэффициентовСтажа | ПО СписокНачислений.ВидРасчетаКоэффициентСтажа = ШкалаСледКоэффициентовСтажа.КоэффициентСтажа | И (СписокНачислений.СпособРасчета В (&СпособыРасчетаОтСтажа)) | И (Стажи.РазмерМесяцев + РАЗНОСТЬДАТ(Стажи.ДатаОтсчета, ДОБАВИТЬКДАТЕ(&парамНачало, ДЕНЬ, Стажи.РазмерДней), МЕСЯЦ) - ВЫБОР | КОГДА ДЕНЬ(Стажи.ДатаОтсчета) >= ДЕНЬ(ДОБАВИТЬКДАТЕ(&парамНачало, ДЕНЬ, Стажи.РазмерДней)) | ТОГДА 1 | ИНАЧЕ 0 | КОНЕЦ = ШкалаКоэффициентовСтажа.СтажПо - 1) | И (ШкалаСледКоэффициентовСтажа.НомерСтрокиШкалы = ШкалаКоэффициентовСтажа.НомерСтрокиШкалы + 1) | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | СУММА(ВЫБОР | КОГДА РегламентированныйПроизводственныйКалендарь.ВидДня = ЗНАЧЕНИЕ(Перечисление.ВидыДнейПроизводственногоКалендаря.Рабочий) | ТОГДА 1 | ИНАЧЕ 0 | КОНЕЦ) КАК ЧислоРабочихДней, | СУММА(ВЫБОР | КОГДА РегламентированныйПроизводственныйКалендарь.ВидДня = ЗНАЧЕНИЕ(Перечисление.ВидыДнейПроизводственногоКалендаря.Предпраздничный) | ТОГДА 1 | ИНАЧЕ 0 | КОНЕЦ) КАК ЧислоПредпраздничныхДней | ИЗ | РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь | ГДЕ | РегламентированныйПроизводственныйКалендарь.Год = &Год) КАК ДанныеПроизводственногоКалендаря | ПО (ИСТИНА) | ЛЕВОЕ СОЕДИНЕНИЕ ВТДанныеПроизводственногоКалендаряЗаМесяц КАК ДанныеПроизводственногоКалендаряЗаМесяц | ПО МЕСЯЦ(СписокНачислений.Период) = ДанныеПроизводственногоКалендаряЗаМесяц.МесяцКалендаря | ЛЕВОЕ СОЕДИНЕНИЕ ВТНормаВремениПоСводнымИндивидуальнымГрафикам КАК НормаВремениПоСводнымИндивидуальнымГрафикам | ПО СписокНачислений.Сотрудник = НормаВремениПоСводнымИндивидуальнымГрафикам.Сотрудник | ЛЕВОЕ СОЕДИНЕНИЕ ВТНормаВремениПоЕжедневнымИндивидуальнымГрафикам КАК НормаВремениПоЕжедневнымИндивидуальнымГрафикам | ПО СписокНачислений.Сотрудник = НормаВремениПоЕжедневнымИндивидуальнымГрафикам.Сотрудник | ЛЕВОЕ СОЕДИНЕНИЕ ВТНормаВремениПоОбщимГрафикам КАК НормаВремениПоОбщимГрафикам | ПО СписокНачислений.Сотрудник = НормаВремениПоОбщимГрафикам.Сотрудник | И СписокНачислений.ГрафикРаботы = НормаВремениПоОбщимГрафикам.ГрафикРаботы | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ВариантыВстроенныхАлгоритмовРасчетаЗарплаты КАК ВариантыВстроенныхАлгоритмовРасчетаЗарплаты | ПО (ИСТИНА) | ЛЕВОЕ СОЕДИНЕНИЕ ВТОсновныеНачисления КАК ОсновныеНачисления | ПО СписокНачислений.Сотрудник = ОсновныеНачисления.Сотрудник | И СписокНачислений.ПодразделениеОрганизации = ОсновныеНачисления.ПодразделениеОрганизации | ЛЕВОЕ СОЕДИНЕНИЕ ВТСведенияОНочныхВечерних КАК СведенияОНочныхВечерних | ПО СписокНачислений.Сотрудник = СведенияОНочныхВечерних.Сотрудник | И СписокНачислений.ПериодРаботники = СведенияОНочныхВечерних.Период | |УПОРЯДОЧИТЬ ПО | СотрудникНаименование, | Сотрудник, | ПериодРаботники, | ПериодНачисления, | ОсновноеНачисление УБЫВ, | ВидРасчета"; Запрос.Текст = ОсновнойТекстЗапроса; РезультатЗапроса = Запрос.Выполнить(); НачисленияВыборка = РезультатЗапроса.Выбрать(); ТЗНачисления = СформироватьТаблицуНачислений(НачисленияВыборка, ОкончаниеПериодаЗаполнения, РезультатЗапроса.Выгрузить(), МассивВалютСНезаданнымКурсом); Если МассивВалютСНезаданнымКурсом.Количество() > 0 Тогда ТЗНачисления.Очистить(); КонецЕсли; // для заполнения табличной части НДФЛ РаботникиДляРасчетаНДФЛ = Новый Соответствие; ТипОсновныхНачислений = Тип("ПланВидовРасчетаСсылка.ОсновныеНачисленияОрганизаций"); НаборЗаписейДляПроверки = РегистрыРасчета.ОсновныеНачисленияРаботниковОрганизаций.СоздатьНаборЗаписей(); НаборЗаписейДляПроверки.Отбор.Регистратор.Значение = СcылкаОбъекта; СтрокаПолейОсновныхНачислений = "Сотрудник,Физлицо,ВидРасчета,Показатель1,Показатель2,Показатель3,Показатель4,Показатель5,Показатель6,ДатаНачала,ДатаОкончания,ПодразделениеОрганизации"; СтрокаПолейДополнительныхНачислений = "Сотрудник,Физлицо,ВидРасчета,Показатель1,Показатель2,Показатель3,Показатель4,Показатель5,Показатель6,,КодВычета,ДатаНачала,ДатаОкончания,ПодразделениеОрганизации"; Для Каждого НачислениеИзТаблицыЗначений Из ТЗНачисления Цикл РаботникиДляРасчетаНДФЛ.Вставить(НачислениеИзТаблицыЗначений.Физлицо, 0); Если ВидОперации <> Перечисления.ВидыОперацийНачислениеЗарплатыРаботникамОрганизаций.РасчетНДФЛ Тогда Если ТипЗнч(НачислениеИзТаблицыЗначений.ВидРасчета) = ТипОсновныхНачислений Тогда НоваяСтрока = Начисления.Добавить(); ЗаполнитьЗначенияСвойств(НоваяСтрока,НачислениеИзТаблицыЗначений,СтрокаПолейОсновныхНачислений); //Сотрудник,ВидРасчета,Размер,Показатель2,Показатель3,ДатаНачала,ДатаОкончания,ПодразделениеОрганизации НоваяСтрока.Авторасчет = Истина; НоваяСтрока.ДатаНачалаСобытия = ?(ЗначениеЗаполнено(НачислениеИзТаблицыЗначений.ДатаНачалаСобытия),НачислениеИзТаблицыЗначений.ДатаНачалаСобытия,НачислениеИзТаблицыЗначений.ДатаНачала); Если НоваяСтрока.ВидРасчета = ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.ПособиеПоУходуЗаРебенкомДо1_5Лет Тогда НоваяСтрока.ПериодРасчетаСреднегоЗаработкаНачало = ДобавитьМесяц(НачалоМесяца(НоваяСтрока.ДатаНачалаСобытия), -12); НоваяСтрока.ПериодРасчетаСреднегоЗаработкаОкончание = НачалоМесяца(НоваяСтрока.ДатаНачалаСобытия) - 1; КонецЕсли; Движение = НаборЗаписейДляПроверки.Добавить(); // свойства Движение.ПериодРегистрации = ПериодРегистрации; Движение.ВидРасчета = НачислениеИзТаблицыЗначений.ВидРасчета; Движение.ПериодДействияНачало = НачислениеИзТаблицыЗначений.ДатаНачала; Движение.ПериодДействияКонец = НачислениеИзТаблицыЗначений.ДатаОкончания; // измерения Движение.Сотрудник = НачислениеИзТаблицыЗначений.Сотрудник; Движение.Физлицо = НачислениеИзТаблицыЗначений.Физлицо; Движение.Организация = ГоловнаяОрганизация; // реквизиты поддержки графика Движение.ГрафикРаботы = НачислениеИзТаблицыЗначений.ГрафикРаботы; Движение.ВидУчетаВремени = ПроведениеРасчетов.ПолучитьВидУчетаВремени(НачислениеИзТаблицыЗначений.СпособРасчета, НачислениеИзТаблицыЗначений.ВидВремени, НачислениеИзТаблицыЗначений.СуммированныйУчетРабочегоВремени); Движение.ДатаНачалаСобытия = НачислениеИзТаблицыЗначений.ДатаНачала; Движение.Авторасчет = Истина; Иначе НоваяСтрока = ДополнительныеНачисления.Добавить(); НоваяСтрока.Авторасчет = Истина; ЗаполнитьЗначенияСвойств(НоваяСтрока,НачислениеИзТаблицыЗначений,СтрокаПолейДополнительныхНачислений); //Сотрудник,ВидРасчета,Размер,КодВычета,ДатаНачала,ДатаОкончания,ПодразделениеОрганизации КонецЕсли; КонецЕсли; КонецЦикла; // выполним удаление строк табличной части, которые соответствуют полностью вытесняемым видам расчета // проверку выполним через фактический период действия Если ВидОперации <> Перечисления.ВидыОперацийНачислениеЗарплатыРаботникамОрганизаций.РасчетНДФЛ Тогда НачатьТранзакцию(); НаборЗаписейДляПроверки.ОбменДанными.Загрузка = Истина; НаборЗаписейДляПроверки.Записать(Истина, Ложь, Истина, Ложь); ЗапросПроверки = Новый Запрос( "ВЫБРАТЬ | Начисления.Сотрудник, | Начисления.ВидРасчета, | Начисления.ДатаНачала, | Начисления.ДатаОкончания, | Начисления.НомерСтроки |ПОМЕСТИТЬ ВТНачисления |ИЗ &парамНачисления КАК Начисления |ИНДЕКСИРОВАТЬ ПО Сотрудник, ВидРасчета; | |ВЫБРАТЬ РАЗЛИЧНЫЕ | Начисления.НомерСтроки КАК НомерСтроки |ИЗ | РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций КАК ОсновныеНачисленияРаботниковОрганизации | ЛЕВОЕ СОЕДИНЕНИЕ РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций.ФактическийПериодДействия(Регистратор = &парамСсылка) КАК ОсновныеНачисленияРаботниковОрганизацииФактическийПериодДействия | ПО ОсновныеНачисленияРаботниковОрганизации.НомерСтроки = ОсновныеНачисленияРаботниковОрганизацииФактическийПериодДействия.НомерСтроки | И ОсновныеНачисленияРаботниковОрганизации.Регистратор = ОсновныеНачисленияРаботниковОрганизацииФактическийПериодДействия.Регистратор | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТНачисления КАК Начисления | ПО (Начисления.Сотрудник = ОсновныеНачисленияРаботниковОрганизации.Сотрудник) | И (Начисления.ВидРасчета = ОсновныеНачисленияРаботниковОрганизации.ВидРасчета) | И (Начисления.ДатаНачала = ОсновныеНачисленияРаботниковОрганизации.ПериодДействияНачало) | И (КОНЕЦПЕРИОДА(Начисления.ДатаОкончания, День) = КОНЕЦПЕРИОДА(ОсновныеНачисленияРаботниковОрганизации.ПериодДействияКонец, День)) |ГДЕ | ОсновныеНачисленияРаботниковОрганизации.Регистратор = &парамСсылка | И ОсновныеНачисленияРаботниковОрганизацииФактическийПериодДействия.Регистратор ЕСТЬ NULL | |УПОРЯДОЧИТЬ ПО | НомерСтроки УБЫВ"); ЗапросПроверки.УстановитьПараметр("парамСсылка", СcылкаОбъекта); ЗапросПроверки.УстановитьПараметр("парамНачисления", Начисления.Выгрузить()); СтрокиКУдалению = ЗапросПроверки.Выполнить().Выгрузить(); // удалим проверочный набор записей НаборЗаписейДляПроверки.Очистить(); НаборЗаписейДляПроверки.Записать(Истина, Ложь, Истина, Ложь); ЗафиксироватьТранзакцию(); Для Каждого СтрокаТЗ Из СтрокиКУдалению Цикл Начисления.Удалить(СтрокаТЗ.НомерСтроки - 1); КонецЦикла; КонецЕсли; // конец удаления строк табличной части, которые соответствуют полностью вытесняемым видам расчета // работающие по договорам подряда ОсновнойТекстЗапроса = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | СписокНачислений.Сотрудник КАК Сотрудник, | СписокНачислений.СотрудникФизлицо КАК Физлицо, | СписокНачислений.СотрудникНаименование КАК СотрудникНаименование, | СписокНачислений.ВидРасчета КАК ВидРасчета, | СписокНачислений.ПериодНачисления КАК ДатаНачала, | ЕСТЬNULL(СписокНачислений.ДатаОкончания, &парамКонец) КАК ДатаОкончания, | СписокНачислений.ДокументОснование КАК ДокументОснование, | СписокНачислений.Подходит, | СписокНачислений.ВидРасчета.Наименование КАК ВидРасчетаНаименование, | СписокНачислений.ДокументОснование.ПодразделениеОрганизации КАК ПодразделениеОрганизации, | СписокНачислений.ДокументОснование.КодВычета КАК КодВычета, | ВЫБОР | КОГДА СписокНачислений.Показатель1 ЕСТЬ NULL | ТОГДА 0 | КОГДА СписокНачислений.Валюта1 В (&парамВалютаРегламентУчета, ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)) | ТОГДА СписокНачислений.Показатель1 | ИНАЧЕ СписокНачислений.Показатель1 * ЕСТЬNULL(Валюты1.Курс / Валюты1.Кратность, 0) | КОНЕЦ КАК Размер, | ВЫБОР | КОГДА СписокНачислений.Показатель1 ЕСТЬ NULL | ТОГДА 0 | КОГДА СписокНачислений.Валюта1 В (&парамВалютаРегламентУчета, ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)) | ТОГДА СписокНачислений.Показатель1 | ИНАЧЕ СписокНачислений.Показатель1 * ЕСТЬNULL(Валюты1.Курс / Валюты1.Кратность, 0) | КОНЕЦ КАК Результат, | ВЫБОР | КОГДА СписокНачислений.Показатель1 ЕСТЬ NULL | ТОГДА 0 | КОГДА СписокНачислений.ДокументОснование.КодВычета <> ЗНАЧЕНИЕ(Справочник.ВычетыНДФЛ.Код405) | ТОГДА 0 | КОГДА СписокНачислений.Валюта1 В (&парамВалютаРегламентУчета, ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)) | ТОГДА СписокНачислений.Показатель1 * ЕСТЬNULL(СведенияОСкидках.НормативЗатрат, 0) / 100 | ИНАЧЕ СписокНачислений.Показатель1 * ЕСТЬNULL(Валюты1.Курс / Валюты1.Кратность, 0) * ЕСТЬNULL(СведенияОСкидках.НормативЗатрат, 0) / 100 | КОНЕЦ КАК СуммаВычета |ИЗ | (ВЫБРАТЬ | Работники.Сотрудник КАК Сотрудник, | Работники.Сотрудник.Физлицо КАК СотрудникФизлицо, | Работники.Сотрудник.Наименование КАК СотрудникНаименование, | НачисленияРаботниковОрганизации.ДокументОснование КАК ДокументОснование, | НачисленияРаботниковОрганизации.ВидРасчета КАК ВидРасчета, | Работники.Подходит КАК Подходит, | НачисленияРаботниковОрганизации.Период КАК ПериодНачисления, | МИНИМУМ(ДатыОкончанияНачисленияРаботниковОрганизации.ДатаОкончания) КАК ДатаОкончания, | НачисленияРаботниковОрганизации.Показатель1 КАК Показатель1, | НачисленияРаботниковОрганизации.Валюта1 КАК Валюта1 | ИЗ | ВТДвиженияРаботников КАК Работники | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | НачисленияРаботниковОрганизации.Период КАК Период, | НачисленияРаботниковОрганизации.ВидРасчетаИзмерение КАК ВидРасчета, | ВЫБОР | КОГДА НачисленияРаботниковОрганизации.ПериодЗавершения <= &парамНачало | И НачисленияРаботниковОрганизации.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | ТОГДА НачисленияРаботниковОрганизации.Показатель1Завершения | ИНАЧЕ НачисленияРаботниковОрганизации.Показатель1 | КОНЕЦ КАК Показатель1, | ВЫБОР | КОГДА НачисленияРаботниковОрганизации.ПериодЗавершения <= &парамНачало | И НачисленияРаботниковОрганизации.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | ТОГДА НачисленияРаботниковОрганизации.Валюта1Завершения | ИНАЧЕ НачисленияРаботниковОрганизации.Валюта1 | КОНЕЦ КАК Валюта1, | НачисленияРаботниковОрганизации.ДокументОснование КАК ДокументОснование, | НачисленияРаботниковОрганизации.Сотрудник КАК Сотрудник | ИЗ | РегистрСведений.ПлановыеНачисленияРаботниковОрганизаций.СрезПоследних( | &парамНачало, | ДокументОснование <> ЗНАЧЕНИЕ(Документ.ДоговорНаВыполнениеРаботСФизЛицом.ПустаяСсылка) | И Сотрудник В | (ВЫБРАТЬ РАЗЛИЧНЫЕ | ДвиженияРаботников.Сотрудник | ИЗ | ВТСписокРаботников КАК ДвиженияРаботников)) КАК НачисленияРаботниковОрганизации | ГДЕ | ВЫБОР | КОГДА НачисленияРаботниковОрганизации.ПериодЗавершения <= &парамНачало | И НачисленияРаботниковОрганизации.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | ТОГДА НачисленияРаботниковОрганизации.ДействиеЗавершения | ИНАЧЕ НачисленияРаботниковОрганизации.Действие | КОНЕЦ <> ЗНАЧЕНИЕ(Перечисление.ВидыДействияСНачислением.Прекратить) | | ОБЪЕДИНИТЬ ВСЕ | | ВЫБРАТЬ | НачисленияРаботниковОрганизации.Период, | НачисленияРаботниковОрганизации.ВидРасчетаИзмерение, | НачисленияРаботниковОрганизации.Показатель1, | НачисленияРаботниковОрганизации.Валюта1, | НачисленияРаботниковОрганизации.ДокументОснование, | НачисленияРаботниковОрганизации.Сотрудник | ИЗ | РегистрСведений.ПлановыеНачисленияРаботниковОрганизаций КАК НачисленияРаботниковОрганизации | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТСписокРаботников КАК ТаблицаДвиженийРаботников | ПО НачисленияРаботниковОрганизации.Сотрудник = ТаблицаДвиженийРаботников.Сотрудник | ГДЕ | НачисленияРаботниковОрганизации.Период > &парамНачало | И НачисленияРаботниковОрганизации.Период <= &парамКонец | И НачисленияРаботниковОрганизации.ДокументОснование <> ЗНАЧЕНИЕ(Документ.ДоговорНаВыполнениеРаботСФизЛицом.ПустаяСсылка) | И НачисленияРаботниковОрганизации.Действие <> ЗНАЧЕНИЕ(Перечисление.ВидыДействияСНачислением.Прекратить) | | ОБЪЕДИНИТЬ ВСЕ | | ВЫБРАТЬ | НачисленияРаботниковОрганизации.ПериодЗавершения, | НачисленияРаботниковОрганизации.ВидРасчетаИзмерение, | НачисленияРаботниковОрганизации.Показатель1Завершения, | НачисленияРаботниковОрганизации.Валюта1Завершения, | НачисленияРаботниковОрганизации.ДокументОснование, | НачисленияРаботниковОрганизации.Сотрудник | ИЗ | РегистрСведений.ПлановыеНачисленияРаботниковОрганизаций КАК НачисленияРаботниковОрганизации | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТСписокРаботников КАК ТаблицаДвиженийРаботников | ПО НачисленияРаботниковОрганизации.Сотрудник = ТаблицаДвиженийРаботников.Сотрудник | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПлановыеНачисленияРаботниковОрганизаций КАК НачисленияРаботниковПроверка | ПО НачисленияРаботниковОрганизации.Сотрудник = НачисленияРаботниковПроверка.Сотрудник | И НачисленияРаботниковОрганизации.ВидРасчетаИзмерение = НачисленияРаботниковПроверка.ВидРасчетаИзмерение | И НачисленияРаботниковОрганизации.ДокументОснование = НачисленияРаботниковПроверка.ДокументОснование | И (НачисленияРаботниковПроверка.Период > НачисленияРаботниковОрганизации.Период) | И (НачисленияРаботниковПроверка.Период <= НачисленияРаботниковОрганизации.ПериодЗавершения) | ГДЕ | НачисленияРаботниковОрганизации.ПериодЗавершения МЕЖДУ &парамНачало И &парамКонец | И НачисленияРаботниковОрганизации.ДокументОснование <> ЗНАЧЕНИЕ(Документ.ДоговорНаВыполнениеРаботСФизЛицом.ПустаяСсылка) | И НачисленияРаботниковОрганизации.ДействиеЗавершения <> ЗНАЧЕНИЕ(Перечисление.ВидыДействияСНачислением.Прекратить) | И НачисленияРаботниковПроверка.Сотрудник ЕСТЬ NULL ) КАК НачисленияРаботниковОрганизации | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | ДОБАВИТЬКДАТЕ(НачисленияРаботниковОрганизации.Период, ДЕНЬ, -1) КАК ДатаОкончания, | НачисленияРаботниковОрганизации.ВидРасчетаИзмерение КАК ВидРасчетаИзмерение, | НачисленияРаботниковОрганизации.ДокументОснование КАК ДокументОснование, | НачисленияРаботниковОрганизации.Сотрудник КАК Сотрудник | ИЗ | РегистрСведений.ПлановыеНачисленияРаботниковОрганизаций КАК НачисленияРаботниковОрганизации | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТСписокРаботников КАК ТаблицаДвиженийРаботников | ПО НачисленияРаботниковОрганизации.Сотрудник = ТаблицаДвиженийРаботников.Сотрудник | ГДЕ | НачисленияРаботниковОрганизации.Период >= &парамНачало | И НачисленияРаботниковОрганизации.ДокументОснование <> ЗНАЧЕНИЕ(Документ.ДоговорНаВыполнениеРаботСФизЛицом.ПустаяСсылка) | И НачисленияРаботниковОрганизации.Действие <> ЗНАЧЕНИЕ(Перечисление.ВидыДействияСНачислением.Начать) | | ОБЪЕДИНИТЬ ВСЕ | | ВЫБРАТЬ | ВЫБОР | КОГДА ДОБАВИТЬКДАТЕ(НачисленияРаботниковОрганизации.ПериодЗавершения, ДЕНЬ, -1) > &парамКонец | ТОГДА &парамКонец | ИНАЧЕ ДОБАВИТЬКДАТЕ(НачисленияРаботниковОрганизации.ПериодЗавершения, ДЕНЬ, -1) | КОНЕЦ, | НачисленияРаботниковОрганизации.ВидРасчетаИзмерение, | НачисленияРаботниковОрганизации.ДокументОснование, | НачисленияРаботниковОрганизации.Сотрудник | ИЗ | РегистрСведений.ПлановыеНачисленияРаботниковОрганизаций КАК НачисленияРаботниковОрганизации | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТДвиженияРаботников КАК ТаблицаДвиженийРаботников | ПО НачисленияРаботниковОрганизации.Сотрудник = ТаблицаДвиженийРаботников.Сотрудник | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПлановыеНачисленияРаботниковОрганизаций КАК НачисленияРаботниковПроверка | ПО НачисленияРаботниковОрганизации.Сотрудник = НачисленияРаботниковПроверка.Сотрудник | И НачисленияРаботниковОрганизации.ВидРасчетаИзмерение = НачисленияРаботниковПроверка.ВидРасчетаИзмерение | И НачисленияРаботниковОрганизации.ДокументОснование = НачисленияРаботниковПроверка.ДокументОснование | И (НачисленияРаботниковПроверка.Период > НачисленияРаботниковОрганизации.Период) | И (НачисленияРаботниковПроверка.Период <= НачисленияРаботниковОрганизации.ПериодЗавершения) | ГДЕ | НачисленияРаботниковОрганизации.ПериодЗавершения >= &парамНачало | И НачисленияРаботниковОрганизации.ДокументОснование <> ЗНАЧЕНИЕ(Документ.ДоговорНаВыполнениеРаботСФизЛицом.ПустаяСсылка) | И НачисленияРаботниковОрганизации.ДействиеЗавершения <> ЗНАЧЕНИЕ(Перечисление.ВидыДействияСНачислением.Начать) | И НачисленияРаботниковПроверка.Сотрудник ЕСТЬ NULL ) КАК ДатыОкончанияНачисленияРаботниковОрганизации | ПО НачисленияРаботниковОрганизации.Сотрудник = ДатыОкончанияНачисленияРаботниковОрганизации.Сотрудник | И НачисленияРаботниковОрганизации.ВидРасчета = ДатыОкончанияНачисленияРаботниковОрганизации.ВидРасчетаИзмерение | И НачисленияРаботниковОрганизации.ДокументОснование = ДатыОкончанияНачисленияРаботниковОрганизации.ДокументОснование | И НачисленияРаботниковОрганизации.Период <= ДатыОкончанияНачисленияРаботниковОрганизации.ДатаОкончания | ПО (Работники.Подходит) | И Работники.Сотрудник = НачисленияРаботниковОрганизации.Сотрудник | | СГРУППИРОВАТЬ ПО | Работники.Сотрудник, | Работники.Сотрудник.Физлицо, | Работники.Сотрудник.Наименование, | Работники.Подходит, | НачисленияРаботниковОрганизации.ДокументОснование, | НачисленияРаботниковОрганизации.ВидРасчета, | НачисленияРаботниковОрганизации.Период, | НачисленияРаботниковОрганизации.Показатель1, | НачисленияРаботниковОрганизации.Валюта1) КАК СписокНачислений | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалютДляРасчетовСПерсоналом КАК Валюты1 | ПО (Валюты1.Период = &парамДатаВалютногоУчета) | И СписокНачислений.Валюта1 = Валюты1.Валюта | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РАЗЛИЧНЫЕ | ОсновныеНачисления.Сотрудник КАК Сотрудник, | ОсновныеНачисления.ПериодРегистрации КАК ПериодРегистрации, | ОсновныеНачисления.ДокументОснование КАК ДокументОснование | ИЗ | РегистрРасчета.ДополнительныеНачисленияРаботниковОрганизаций КАК ОсновныеНачисления | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТСписокРаботников КАК ТаблицаДвиженийРаботников | ПО ОсновныеНачисления.Сотрудник = ТаблицаДвиженийРаботников.Сотрудник | ГДЕ | ОсновныеНачисления.ПериодРегистрации = &парамПериодРегистрации | И ОсновныеНачисления.ДокументОснование <> ЗНАЧЕНИЕ(Документ.ДоговорНаВыполнениеРаботСФизЛицом.ПустаяСсылка) | И ОсновныеНачисления.Регистратор <> &парамРегистратор | И (НЕ ОсновныеНачисления.Сторно) | И ОсновныеНачисления.ОбособленноеПодразделение = &парамОрганизация) КАК ОсновныеНачисления | ПО СписокНачислений.Сотрудник = ОсновныеНачисления.Сотрудник | И СписокНачислений.ДокументОснование = ОсновныеНачисления.ДокументОснование | И СписокНачислений.ПериодНачисления = ОсновныеНачисления.ПериодРегистрации | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НДФЛВычетыПоДоходам.СрезПоследних(&парамНачало, ) КАК СведенияОСкидках | ПО СписокНачислений.ВидРасчета.КодДоходаНДФЛ = СведенияОСкидках.КодДохода |ГДЕ | СписокНачислений.Подходит | И ВЫБОР | КОГДА СписокНачислений.ДокументОснование ЕСТЬ NULL | ТОГДА ЛОЖЬ | КОГДА СписокНачислений.ДокументОснование.Организация = &парамОрганизация | ТОГДА ИСТИНА | ИНАЧЕ ЛОЖЬ | КОНЕЦ | И ВЫБОР | КОГДА &ЭтоПерерасчет | ТОГДА ИСТИНА | КОГДА ОсновныеНачисления.Сотрудник ЕСТЬ NULL | ТОГДА ИСТИНА | ИНАЧЕ ЛОЖЬ | КОНЕЦ | |УПОРЯДОЧИТЬ ПО | СотрудникНаименование, | ДокументОснование, | ДатаНачала"; Запрос.Текст = ОсновнойТекстЗапроса; РезультатЗапроса = Запрос.Выполнить(); Если МассивСотрудники = Неопределено Тогда ДоговорыНаВыполнениеРабот.Загрузить(РезультатЗапроса.Выгрузить()); Для каждого СтрокаТЧ Из ДоговорыНаВыполнениеРабот Цикл РаботникиДляРасчетаНДФЛ.Вставить(СтрокаТЧ.Физлицо, 0); КонецЦикла; ЗаполнитьОтражениеДоговоров(); Иначе Выборка = РезультатЗапроса.Выбрать(); Пока Выборка.Следующий() Цикл НоваяСтрока = ДоговорыНаВыполнениеРабот.Добавить(); ЗаполнитьЗначенияСвойств(НоваяСтрока,Выборка); ЗаполнитьОтражениеДоговора(НоваяСтрока); РаботникиДляРасчетаНДФЛ.Вставить(НоваяСтрока.Физлицо, 0); КонецЦикла; КонецЕсли; // Очистим необходимость перезаполнения по заполненным работникам Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | СписокРаботников.Сотрудник |ИЗ | ВТСписокРаботников КАК СписокРаботников"; ПроведениеРасчетов.УдалитьСведенияОПерезаполненииДокумента(Ссылка,Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Сотрудник")); КонецЕсли; // АВТОЗАПОЛНЕНИЕ ТЧ "Удержания" Если (ВидОперации = Перечисления.ВидыОперацийНачислениеЗарплатыРаботникамОрганизаций.ПолныйРасчет И Не ЗначениеЗаполнено(ПерерассчитываемыйДокумент)) ИЛИ ВидОперации = Перечисления.ВидыОперацийНачислениеЗарплатыРаботникамОрганизаций.РасчетУдержаний Тогда ТекстЗапросаУдержаний = "ВЫБРАТЬ | УдержанияРаботниковОрганизации.Физлицо КАК Физлицо, | УдержанияРаботниковОрганизации.Период КАК Период, | УдержанияРаботниковОрганизации.ВидРасчета КАК ВидРасчета, | УдержанияРаботниковОрганизации.Действие КАК Действие, | УдержанияРаботниковОрганизации.ДокументОснование КАК ДокументОснование, | УдержанияРаботниковОрганизации.Валюта1 КАК Валюта1, | УдержанияРаботниковОрганизации.Валюта2 КАК Валюта2, | УдержанияРаботниковОрганизации.Валюта3 КАК Валюта3, | УдержанияРаботниковОрганизации.Валюта4 КАК Валюта4, | УдержанияРаботниковОрганизации.Валюта5 КАК Валюта5, | УдержанияРаботниковОрганизации.Валюта6 КАК Валюта6, | ВЫБОР | КОГДА УдержанияРаботниковОрганизации.Валюта1 В (&парамВалютаРегламентУчета, ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)) | ТОГДА 1 | ИНАЧЕ Валюты1.Курс | КОНЕЦ КАК КурсВалюты1, | ВЫБОР | КОГДА УдержанияРаботниковОрганизации.Валюта2 В (&парамВалютаРегламентУчета, ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)) | ТОГДА 1 | ИНАЧЕ Валюты2.Курс | КОНЕЦ КАК КурсВалюты2, | ВЫБОР | КОГДА УдержанияРаботниковОрганизации.Валюта3 В (&парамВалютаРегламентУчета, ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)) | ТОГДА 1 | ИНАЧЕ Валюты3.Курс | КОНЕЦ КАК КурсВалюты3, | ВЫБОР | КОГДА УдержанияРаботниковОрганизации.Валюта4 В (&парамВалютаРегламентУчета, ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)) | ТОГДА 1 | ИНАЧЕ Валюты4.Курс | КОНЕЦ КАК КурсВалюты4, | ВЫБОР | КОГДА УдержанияРаботниковОрганизации.Валюта5 В (&парамВалютаРегламентУчета, ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)) | ТОГДА 1 | ИНАЧЕ Валюты5.Курс | КОНЕЦ КАК КурсВалюты5, | ВЫБОР | КОГДА УдержанияРаботниковОрганизации.Валюта6 В (&парамВалютаРегламентУчета, ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)) | ТОГДА 1 | ИНАЧЕ Валюты6.Курс | КОНЕЦ КАК КурсВалюты6, | ВЫБОР | КОГДА Показатели.Показатель1 ЕСТЬ НЕ NULL | И Показатели.Показатель1 <> 0 | ИЛИ ЗначенияВводимыхКадровыхПоказателей.ПоказательВозможностьИзменения = ЗНАЧЕНИЕ(Перечисление.ИзменениеПоказателейСхемМотивации.Ежемесячно) | ТОГДА Показатели.Показатель1 | КОГДА УдержанияРаботниковОрганизации.Показатель1 ЕСТЬ NULL | ИЛИ УдержанияРаботниковОрганизации.Показатель1 = 0 | И ЗначенияВводимыхКадровыхПоказателей.Показатель <> ЗНАЧЕНИЕ(Справочник.ПоказателиСхемМотивации.ПустаяСсылка) | И ЗначенияВводимыхКадровыхПоказателей.Показатель ЕСТЬ НЕ NULL | И ЗначенияВводимыхКадровыхПоказателей.НомерСтроки = 1 | ТОГДА ЗначенияВводимыхКадровыхПоказателей.ЗначениеПоказателя | ИНАЧЕ ВЫБОР | КОГДА УдержанияРаботниковОрганизации.Показатель1 ЕСТЬ NULL | ТОГДА 0 | КОГДА УдержанияРаботниковОрганизации.ВидРасчета.СпособРасчета В (&парамМассивСпособовРасчетовБезВалюты) | ИЛИ УдержанияРаботниковОрганизации.Валюта1 В (&парамВалютаРегламентУчета, ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)) | ТОГДА УдержанияРаботниковОрганизации.Показатель1 | ИНАЧЕ УдержанияРаботниковОрганизации.Показатель1 * ЕСТЬNULL(Валюты1.Курс / Валюты1.Кратность, 0) | КОНЕЦ | КОНЕЦ КАК Показатель1, | ВЫБОР | КОГДА Показатели.Показатель2 ЕСТЬ НЕ NULL | И Показатели.Показатель2 <> 0 | ИЛИ ЗначенияВводимыхКадровыхПоказателей.ПоказательВозможностьИзменения = ЗНАЧЕНИЕ(Перечисление.ИзменениеПоказателейСхемМотивации.Ежемесячно) | ТОГДА Показатели.Показатель2 | КОГДА УдержанияРаботниковОрганизации.Показатель2 ЕСТЬ NULL | ИЛИ УдержанияРаботниковОрганизации.Показатель2 = 0 | И ЗначенияВводимыхКадровыхПоказателей.Показатель <> ЗНАЧЕНИЕ(Справочник.ПоказателиСхемМотивации.ПустаяСсылка) | И ЗначенияВводимыхКадровыхПоказателей.Показатель ЕСТЬ НЕ NULL | И ЗначенияВводимыхКадровыхПоказателей.НомерСтроки = 2 | ТОГДА ЗначенияВводимыхКадровыхПоказателей.ЗначениеПоказателя | ИНАЧЕ ВЫБОР | КОГДА УдержанияРаботниковОрганизации.Показатель2 ЕСТЬ NULL | ТОГДА 0 | КОГДА УдержанияРаботниковОрганизации.ВидРасчета.СпособРасчета В (&парамМассивСпособовРасчетовБезВалюты) | ИЛИ УдержанияРаботниковОрганизации.Валюта2 В (&парамВалютаРегламентУчета, ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)) | ТОГДА УдержанияРаботниковОрганизации.Показатель2 | ИНАЧЕ УдержанияРаботниковОрганизации.Показатель2 * ЕСТЬNULL(Валюты2.Курс / Валюты2.Кратность, 0) | КОНЕЦ | КОНЕЦ КАК Показатель2, | ВЫБОР | КОГДА Показатели.Показатель3 ЕСТЬ НЕ NULL | И Показатели.Показатель3 <> 0 | ИЛИ ЗначенияВводимыхКадровыхПоказателей.ПоказательВозможностьИзменения = ЗНАЧЕНИЕ(Перечисление.ИзменениеПоказателейСхемМотивации.Ежемесячно) | ТОГДА Показатели.Показатель3 | КОГДА УдержанияРаботниковОрганизации.Показатель3 ЕСТЬ NULL | ИЛИ УдержанияРаботниковОрганизации.Показатель3 = 0 | И ЗначенияВводимыхКадровыхПоказателей.Показатель <> ЗНАЧЕНИЕ(Справочник.ПоказателиСхемМотивации.ПустаяСсылка) | И ЗначенияВводимыхКадровыхПоказателей.Показатель ЕСТЬ НЕ NULL | И ЗначенияВводимыхКадровыхПоказателей.НомерСтроки = 3 | ТОГДА ЗначенияВводимыхКадровыхПоказателей.ЗначениеПоказателя | ИНАЧЕ ВЫБОР | КОГДА УдержанияРаботниковОрганизации.Показатель3 ЕСТЬ NULL | ТОГДА 0 | КОГДА УдержанияРаботниковОрганизации.ВидРасчета.СпособРасчета В (&парамМассивСпособовРасчетовБезВалюты) | ИЛИ УдержанияРаботниковОрганизации.Валюта3 В (&парамВалютаРегламентУчета, ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)) | ТОГДА УдержанияРаботниковОрганизации.Показатель3 | ИНАЧЕ УдержанияРаботниковОрганизации.Показатель3 * ЕСТЬNULL(Валюты3.Курс / Валюты3.Кратность, 0) | КОНЕЦ | КОНЕЦ КАК Показатель3, | ВЫБОР | КОГДА Показатели.Показатель4 ЕСТЬ НЕ NULL | И Показатели.Показатель4 <> 0 | ИЛИ ЗначенияВводимыхКадровыхПоказателей.ПоказательВозможностьИзменения = ЗНАЧЕНИЕ(Перечисление.ИзменениеПоказателейСхемМотивации.Ежемесячно) | ТОГДА Показатели.Показатель4 | КОГДА УдержанияРаботниковОрганизации.Показатель4 ЕСТЬ NULL | ИЛИ УдержанияРаботниковОрганизации.Показатель4 = 0 | И ЗначенияВводимыхКадровыхПоказателей.Показатель <> ЗНАЧЕНИЕ(Справочник.ПоказателиСхемМотивации.ПустаяСсылка) | И ЗначенияВводимыхКадровыхПоказателей.Показатель ЕСТЬ НЕ NULL | И ЗначенияВводимыхКадровыхПоказателей.НомерСтроки = 4 | ТОГДА ЗначенияВводимыхКадровыхПоказателей.ЗначениеПоказателя | ИНАЧЕ ВЫБОР | КОГДА УдержанияРаботниковОрганизации.Показатель4 ЕСТЬ NULL | ТОГДА 0 | КОГДА УдержанияРаботниковОрганизации.ВидРасчета.СпособРасчета В (&парамМассивСпособовРасчетовБезВалюты) | ИЛИ УдержанияРаботниковОрганизации.Валюта4 В (&парамВалютаРегламентУчета, ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)) | ТОГДА УдержанияРаботниковОрганизации.Показатель4 | ИНАЧЕ УдержанияРаботниковОрганизации.Показатель4 * ЕСТЬNULL(Валюты4.Курс / Валюты4.Кратность, 0) | КОНЕЦ | КОНЕЦ КАК Показатель4, | ВЫБОР | КОГДА Показатели.Показатель5 ЕСТЬ НЕ NULL | И Показатели.Показатель5 <> 0 | ИЛИ ЗначенияВводимыхКадровыхПоказателей.ПоказательВозможностьИзменения = ЗНАЧЕНИЕ(Перечисление.ИзменениеПоказателейСхемМотивации.Ежемесячно) | ТОГДА Показатели.Показатель5 | КОГДА УдержанияРаботниковОрганизации.Показатель5 ЕСТЬ NULL | ИЛИ УдержанияРаботниковОрганизации.Показатель5 = 0 | И ЗначенияВводимыхКадровыхПоказателей.Показатель <> ЗНАЧЕНИЕ(Справочник.ПоказателиСхемМотивации.ПустаяСсылка) | И ЗначенияВводимыхКадровыхПоказателей.Показатель ЕСТЬ НЕ NULL | И ЗначенияВводимыхКадровыхПоказателей.НомерСтроки = 5 | ТОГДА ЗначенияВводимыхКадровыхПоказателей.ЗначениеПоказателя | ИНАЧЕ ВЫБОР | КОГДА УдержанияРаботниковОрганизации.Показатель5 ЕСТЬ NULL | ТОГДА 0 | КОГДА УдержанияРаботниковОрганизации.ВидРасчета.СпособРасчета В (&парамМассивСпособовРасчетовБезВалюты) | ИЛИ УдержанияРаботниковОрганизации.Валюта5 В (&парамВалютаРегламентУчета, ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)) | ТОГДА УдержанияРаботниковОрганизации.Показатель5 | ИНАЧЕ УдержанияРаботниковОрганизации.Показатель5 * ЕСТЬNULL(Валюты5.Курс / Валюты5.Кратность, 0) | КОНЕЦ | КОНЕЦ КАК Показатель5, | ВЫБОР | КОГДА Показатели.Показатель6 ЕСТЬ НЕ NULL | И Показатели.Показатель6 <> 0 | ИЛИ ЗначенияВводимыхКадровыхПоказателей.ПоказательВозможностьИзменения = ЗНАЧЕНИЕ(Перечисление.ИзменениеПоказателейСхемМотивации.Ежемесячно) | ТОГДА Показатели.Показатель6 | КОГДА УдержанияРаботниковОрганизации.Показатель6 ЕСТЬ NULL | ИЛИ УдержанияРаботниковОрганизации.Показатель6 = 0 | И ЗначенияВводимыхКадровыхПоказателей.Показатель <> ЗНАЧЕНИЕ(Справочник.ПоказателиСхемМотивации.ПустаяСсылка) | И ЗначенияВводимыхКадровыхПоказателей.Показатель ЕСТЬ НЕ NULL | И ЗначенияВводимыхКадровыхПоказателей.НомерСтроки = 6 | ТОГДА ЗначенияВводимыхКадровыхПоказателей.ЗначениеПоказателя | ИНАЧЕ ВЫБОР | КОГДА УдержанияРаботниковОрганизации.Показатель6 ЕСТЬ NULL | ТОГДА 0 | КОГДА УдержанияРаботниковОрганизации.ВидРасчета.СпособРасчета В (&парамМассивСпособовРасчетовБезВалюты) | ИЛИ УдержанияРаботниковОрганизации.Валюта6 В (&парамВалютаРегламентУчета, ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)) | ТОГДА УдержанияРаботниковОрганизации.Показатель6 | ИНАЧЕ УдержанияРаботниковОрганизации.Показатель6 * ЕСТЬNULL(Валюты6.Курс / Валюты6.Кратность, 0) | КОНЕЦ | КОНЕЦ КАК Показатель6, | УдержанияРаботниковОрганизации.Физлицо.Наименование КАК ФизлицоНаименование |ИЗ | (ВЫБРАТЬ | &парамНачало КАК Период, | УдержанияРаботниковОрганизации.ВидРасчета КАК ВидРасчета, | ВЫБОР | КОГДА УдержанияРаботниковОрганизации.ПериодЗавершения <= &парамНачало | И УдержанияРаботниковОрганизации.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | ТОГДА УдержанияРаботниковОрганизации.ДействиеЗавершения | ИНАЧЕ УдержанияРаботниковОрганизации.Действие | КОНЕЦ КАК Действие, | УдержанияРаботниковОрганизации.ДокументОснование КАК ДокументОснование, | ВЫБОР | КОГДА УдержанияРаботниковОрганизации.ПериодЗавершения <= &парамНачало | И УдержанияРаботниковОрганизации.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | ТОГДА УдержанияРаботниковОрганизации.Показатель1Завершения | ИНАЧЕ УдержанияРаботниковОрганизации.Показатель1 | КОНЕЦ КАК Показатель1, | ВЫБОР | КОГДА УдержанияРаботниковОрганизации.ПериодЗавершения <= &парамНачало | И УдержанияРаботниковОрганизации.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | ТОГДА УдержанияРаботниковОрганизации.Показатель2Завершения | ИНАЧЕ УдержанияРаботниковОрганизации.Показатель2 | КОНЕЦ КАК Показатель2, | ВЫБОР | КОГДА УдержанияРаботниковОрганизации.ПериодЗавершения <= &парамНачало | И УдержанияРаботниковОрганизации.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | ТОГДА УдержанияРаботниковОрганизации.Показатель3Завершения | ИНАЧЕ УдержанияРаботниковОрганизации.Показатель3 | КОНЕЦ КАК Показатель3, | ВЫБОР | КОГДА УдержанияРаботниковОрганизации.ПериодЗавершения <= &парамНачало | И УдержанияРаботниковОрганизации.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | ТОГДА УдержанияРаботниковОрганизации.Показатель4Завершения | ИНАЧЕ УдержанияРаботниковОрганизации.Показатель4 | КОНЕЦ КАК Показатель4, | ВЫБОР | КОГДА УдержанияРаботниковОрганизации.ПериодЗавершения <= &парамНачало | И УдержанияРаботниковОрганизации.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | ТОГДА УдержанияРаботниковОрганизации.Показатель5Завершения | ИНАЧЕ УдержанияРаботниковОрганизации.Показатель5 | КОНЕЦ КАК Показатель5, | ВЫБОР | КОГДА УдержанияРаботниковОрганизации.ПериодЗавершения <= &парамНачало | И УдержанияРаботниковОрганизации.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | ТОГДА УдержанияРаботниковОрганизации.Показатель6Завершения | ИНАЧЕ УдержанияРаботниковОрганизации.Показатель6 | КОНЕЦ КАК Показатель6, | ВЫБОР | КОГДА УдержанияРаботниковОрганизации.ПериодЗавершения <= &парамНачало | И УдержанияРаботниковОрганизации.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | ТОГДА УдержанияРаботниковОрганизации.Валюта1Завершения | ИНАЧЕ УдержанияРаботниковОрганизации.Валюта1 | КОНЕЦ КАК Валюта1, | ВЫБОР | КОГДА УдержанияРаботниковОрганизации.ПериодЗавершения <= &парамНачало | И УдержанияРаботниковОрганизации.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | ТОГДА УдержанияРаботниковОрганизации.Валюта2Завершения | ИНАЧЕ УдержанияРаботниковОрганизации.Валюта2 | КОНЕЦ КАК Валюта2, | ВЫБОР | КОГДА УдержанияРаботниковОрганизации.ПериодЗавершения <= &парамНачало | И УдержанияРаботниковОрганизации.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | ТОГДА УдержанияРаботниковОрганизации.Валюта3Завершения | ИНАЧЕ УдержанияРаботниковОрганизации.Валюта3 | КОНЕЦ КАК Валюта3, | ВЫБОР | КОГДА УдержанияРаботниковОрганизации.ПериодЗавершения <= &парамНачало | И УдержанияРаботниковОрганизации.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | ТОГДА УдержанияРаботниковОрганизации.Валюта4Завершения | ИНАЧЕ УдержанияРаботниковОрганизации.Валюта4 | КОНЕЦ КАК Валюта4, | ВЫБОР | КОГДА УдержанияРаботниковОрганизации.ПериодЗавершения <= &парамНачало | И УдержанияРаботниковОрганизации.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | ТОГДА УдержанияРаботниковОрганизации.Валюта5Завершения | ИНАЧЕ УдержанияРаботниковОрганизации.Валюта5 | КОНЕЦ КАК Валюта5, | ВЫБОР | КОГДА УдержанияРаботниковОрганизации.ПериодЗавершения <= &парамНачало | И УдержанияРаботниковОрганизации.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | ТОГДА УдержанияРаботниковОрганизации.Валюта6Завершения | ИНАЧЕ УдержанияРаботниковОрганизации.Валюта6 | КОНЕЦ КАК Валюта6, | УдержанияРаботниковОрганизации.ФизЛицо КАК Физлицо | ИЗ | РегистрСведений.ПлановыеУдержанияРаботниковОрганизаций.СрезПоследних( | &парамНачало, | Организация = &парамГоловнаяОрганизация | И ФизЛицо В | (ВЫБРАТЬ | СписокРаботников.ФизЛицо | ИЗ | ВТСписокРаботников КАК СписокРаботников)) КАК УдержанияРаботниковОрганизации | ГДЕ | УдержанияРаботниковОрганизации.Действие <> ЗНАЧЕНИЕ(Перечисление.ВидыДействияСНачислением.Прекратить) | | ОБЪЕДИНИТЬ ВСЕ | | ВЫБРАТЬ | УдержанияРаботниковОрганизации.Период, | УдержанияРаботниковОрганизации.ВидРасчета, | УдержанияРаботниковОрганизации.Действие, | УдержанияРаботниковОрганизации.ДокументОснование, | УдержанияРаботниковОрганизации.Показатель1, | УдержанияРаботниковОрганизации.Показатель2, | УдержанияРаботниковОрганизации.Показатель3, | УдержанияРаботниковОрганизации.Показатель4, | УдержанияРаботниковОрганизации.Показатель5, | УдержанияРаботниковОрганизации.Показатель6, | УдержанияРаботниковОрганизации.Валюта1, | УдержанияРаботниковОрганизации.Валюта2, | УдержанияРаботниковОрганизации.Валюта3, | УдержанияРаботниковОрганизации.Валюта4, | УдержанияРаботниковОрганизации.Валюта5, | УдержанияРаботниковОрганизации.Валюта6, | УдержанияРаботниковОрганизации.ФизЛицо | ИЗ | РегистрСведений.ПлановыеУдержанияРаботниковОрганизаций КАК УдержанияРаботниковОрганизации | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТСписокРаботников КАК СписокРаботников | ПО УдержанияРаботниковОрганизации.ФизЛицо = СписокРаботников.Физлицо | ГДЕ | УдержанияРаботниковОрганизации.Период > &парамНачало | И УдержанияРаботниковОрганизации.Период <= &парамКонец | И УдержанияРаботниковОрганизации.Организация = &парамГоловнаяОрганизация | | ОБЪЕДИНИТЬ ВСЕ | | ВЫБРАТЬ | УдержанияРаботниковОрганизации.ПериодЗавершения, | УдержанияРаботниковОрганизации.ВидРасчета, | УдержанияРаботниковОрганизации.ДействиеЗавершения, | УдержанияРаботниковОрганизации.ДокументОснование, | УдержанияРаботниковОрганизации.Показатель1Завершения, | УдержанияРаботниковОрганизации.Показатель2Завершения, | УдержанияРаботниковОрганизации.Показатель3Завершения, | УдержанияРаботниковОрганизации.Показатель4Завершения, | УдержанияРаботниковОрганизации.Показатель5Завершения, | УдержанияРаботниковОрганизации.Показатель6Завершения, | УдержанияРаботниковОрганизации.Валюта1Завершения, | УдержанияРаботниковОрганизации.Валюта2Завершения, | УдержанияРаботниковОрганизации.Валюта3Завершения, | УдержанияРаботниковОрганизации.Валюта4Завершения, | УдержанияРаботниковОрганизации.Валюта5Завершения, | УдержанияРаботниковОрганизации.Валюта6Завершения, | УдержанияРаботниковОрганизации.ФизЛицо | ИЗ | РегистрСведений.ПлановыеУдержанияРаботниковОрганизаций КАК УдержанияРаботниковОрганизации | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТСписокРаботников КАК СписокРаботников | ПО УдержанияРаботниковОрганизации.ФизЛицо = СписокРаботников.Физлицо | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПлановыеУдержанияРаботниковОрганизаций КАК УдержанияРаботниковОрганизацииПроверка | ПО (УдержанияРаботниковОрганизацииПроверка.Организация = УдержанияРаботниковОрганизации.Организация) | И (УдержанияРаботниковОрганизацииПроверка.ФизЛицо = УдержанияРаботниковОрганизации.ФизЛицо) | И (УдержанияРаботниковОрганизацииПроверка.ВидРасчета = УдержанияРаботниковОрганизации.ВидРасчета) | И (УдержанияРаботниковОрганизацииПроверка.ДокументОснование = УдержанияРаботниковОрганизации.ДокументОснование) | И (УдержанияРаботниковОрганизацииПроверка.Период > УдержанияРаботниковОрганизации.Период) | И (УдержанияРаботниковОрганизацииПроверка.Период <= УдержанияРаботниковОрганизации.ПериодЗавершения) | ГДЕ | УдержанияРаботниковОрганизации.ПериодЗавершения >= &парамНачало | И УдержанияРаботниковОрганизации.ПериодЗавершения <= &парамКонец | И УдержанияРаботниковОрганизации.Организация = &парамГоловнаяОрганизация | И УдержанияРаботниковОрганизацииПроверка.ФизЛицо ЕСТЬ NULL ) КАК УдержанияРаботниковОрганизации | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалютДляРасчетовСПерсоналом КАК Валюты1 | ПО (Валюты1.Период = &парамДатаВалютногоУчета) | И УдержанияРаботниковОрганизации.Валюта1 = Валюты1.Валюта | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалютДляРасчетовСПерсоналом КАК Валюты2 | ПО (Валюты2.Период = &парамДатаВалютногоУчета) | И УдержанияРаботниковОрганизации.Валюта2 = Валюты2.Валюта | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалютДляРасчетовСПерсоналом КАК Валюты3 | ПО (Валюты3.Период = &парамДатаВалютногоУчета) | И УдержанияРаботниковОрганизации.Валюта3 = Валюты3.Валюта | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалютДляРасчетовСПерсоналом КАК Валюты4 | ПО (Валюты4.Период = &парамДатаВалютногоУчета) | И УдержанияРаботниковОрганизации.Валюта4 = Валюты4.Валюта | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалютДляРасчетовСПерсоналом КАК Валюты5 | ПО (Валюты5.Период = &парамДатаВалютногоУчета) | И УдержанияРаботниковОрганизации.Валюта5 = Валюты5.Валюта | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалютДляРасчетовСПерсоналом КАК Валюты6 | ПО (Валюты6.Период = &парамДатаВалютногоУчета) | И УдержанияРаботниковОрганизации.Валюта6 = Валюты6.Валюта | ЛЕВОЕ СОЕДИНЕНИЕ ВТПоказатели КАК Показатели | ПО УдержанияРаботниковОрганизации.Физлицо = Показатели.Сотрудник.Физлицо | И УдержанияРаботниковОрганизации.ВидРасчета = Показатели.ВидРасчета | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РАЗЛИЧНЫЕ | НеВводимыеПоказатели.Ссылка КАК Ссылка, | НеВводимыеПоказатели.НомерСтроки КАК НомерСтроки, | НеВводимыеПоказатели.Показатель КАК Показатель, | НеВводимыеПоказатели.Показатель.ВозможностьИзменения КАК ПоказательВозможностьИзменения, | СУММА(ЗначенияВводимыхКадровыхПоказателей.ЗначениеПоказателя) КАК ЗначениеПоказателя, | ЗначенияВводимыхКадровыхПоказателей.Сотрудник.ФизЛицо КАК ФизЛицо, | ЗначенияВводимыхКадровыхПоказателей.Период КАК Период | ИЗ | ВТНеЗапрашиваемыеПриКадровыхПеремещениях КАК НеВводимыеПоказатели | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТЗначенияВводимыхКадровыхПоказателей КАК ЗначенияВводимыхКадровыхПоказателей | ПО НеВводимыеПоказатели.Показатель = ЗначенияВводимыхКадровыхПоказателей.Показатель | ГДЕ | ЗначенияВводимыхКадровыхПоказателей.ЗначениеПоказателя <> 0 | | СГРУППИРОВАТЬ ПО | НеВводимыеПоказатели.Ссылка, | НеВводимыеПоказатели.НомерСтроки, | НеВводимыеПоказатели.Показатель, | НеВводимыеПоказатели.Показатель.ВозможностьИзменения, | ЗначенияВводимыхКадровыхПоказателей.Сотрудник.ФизЛицо, | ЗначенияВводимыхКадровыхПоказателей.Период) КАК ЗначенияВводимыхКадровыхПоказателей | ПО УдержанияРаботниковОрганизации.Физлицо = ЗначенияВводимыхКадровыхПоказателей.ФизЛицо | И (КОНЕЦПЕРИОДА(УдержанияРаботниковОрганизации.Период, МЕСЯЦ) = КОНЕЦПЕРИОДА(ЗначенияВводимыхКадровыхПоказателей.Период, МЕСЯЦ)) | И УдержанияРаботниковОрганизации.ВидРасчета = ЗначенияВводимыхКадровыхПоказателей.Ссылка"; // если не перерасчет - проверяем проведенность в расчетном периоде Если Не ЭтоПерерасчет Тогда ТекстЗапросаУдержаний = ТекстЗапросаУдержаний + " | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РАЗЛИЧНЫЕ | УдержанияРаботников.ФизЛицо КАК ФизЛицо, | УдержанияРаботников.ВидРасчета КАК ВидРасчета, | УдержанияРаботников.ДокументОснование КАК ДокументОснование | ИЗ | РегистрРасчета.УдержанияРаботниковОрганизаций КАК УдержанияРаботников | ГДЕ | УдержанияРаботников.ПериодРегистрации = &парамПериодРегистрации | И УдержанияРаботников.ФизЛицо В | (ВЫБРАТЬ | СписокРаботников.Физлицо | ИЗ | ВТСписокРаботников КАК СписокРаботников) | И УдержанияРаботников.ОбособленноеПодразделение = &парамОрганизация | И УдержанияРаботников.Регистратор <> &парамРегистратор | И НАЧАЛОПЕРИОДА(УдержанияРаботников.БазовыйПериодНачало, МЕСЯЦ) = &парамПериодРегистрации) КАК ЗарегистрированныеУдержанияРаботников | ПО УдержанияРаботниковОрганизации.Физлицо = ЗарегистрированныеУдержанияРаботников.ФизЛицо | И УдержанияРаботниковОрганизации.ВидРасчета = ЗарегистрированныеУдержанияРаботников.ВидРасчета | И (ЗарегистрированныеУдержанияРаботников.ДокументОснование = ВЫБОР | КОГДА УдержанияРаботниковОрганизации.ДокументОснование ССЫЛКА Документ.ИсполнительныйЛист | ТОГДА УдержанияРаботниковОрганизации.ДокументОснование | ИНАЧЕ ЗНАЧЕНИЕ(Документ.ИсполнительныйЛист.ПустаяСсылка) | КОНЕЦ) |ГДЕ | ЗарегистрированныеУдержанияРаботников.ФизЛицо ЕСТЬ NULL "; КонецЕсли; ТекстЗапросаУдержаний = ТекстЗапросаУдержаний + " | |УПОРЯДОЧИТЬ ПО | ФизлицоНаименование, | Физлицо, | ДокументОснование, | ВидРасчета, | УдержанияРаботниковОрганизации.Период"; Запрос.Текст = ТекстЗапросаУдержаний; УдержанияВыборка = Запрос.Выполнить().Выбрать(); ТЗУдержания = СформироватьТаблицуУдержаний(УдержанияВыборка, ОкончаниеПериодаЗаполнения, МассивВалютСНезаданнымКурсом); Если МассивВалютСНезаданнымКурсом.Количество() > 0 Тогда ТЗУдержания.Очистить(); КонецЕсли; СтруктураПоиска = Новый Структура("Сторно,ФизЛицо,ВидРасчета,ДокументОснование,ДатаНачала", Ложь); Для каждого СтрокаУдержания Из ТЗУдержания Цикл ЗаполнитьЗначенияСвойств(СтруктураПоиска,СтрокаУдержания); Если Удержания.НайтиСтроки(СтруктураПоиска).Количество() = 0 Тогда ЗаполнитьЗначенияСвойств(Удержания.Добавить(),СтрокаУдержания) КонецЕсли; КонецЦикла; КонецЕсли; Если МассивВалютСНезаданнымКурсом.Количество() > 0 Тогда МассивРасшифровки = Новый Массив; МассивРасшифровки.Добавить("ОткрытьФормуСписка"); МассивРасшифровки.Добавить("РегистрыСведений.КурсыВалютДляРасчетовСПерсоналом"); Расшифровки = Новый Массив; Расшифровки.Добавить(Новый Структура("Представление,Расшифровка", "Заполните курс валют" + " ", МассивРасшифровки)); Для Каждого КлючЗначение Из МассивВалютСНезаданнымКурсом Цикл ОбщегоНазначения.ВывестиИнформациюОбОшибке("Для расчетного периода не задан курс валюты " + КлючЗначение.Ключ,,,Перечисления.ВидыСообщений.Ошибка, Расшифровки); КонецЦикла; Возврат Ложь; КонецЕсли; // АВТОЗАПОЛНЕНИЕ ТЧ "НДФЛ" Если ВидОперации = Перечисления.ВидыОперацийНачислениеЗарплатыРаботникамОрганизаций.ПолныйРасчет ИЛИ ВидОперации = Перечисления.ВидыОперацийНачислениеЗарплатыРаботникамОрганизаций.РасчетНДФЛ Тогда Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ | НДФЛСведенияОДоходах.ФизЛицо |ИЗ | РегистрНакопления.НДФЛСведенияОДоходах КАК НДФЛСведенияОДоходах |ГДЕ | НДФЛСведенияОДоходах.ФизЛицо В | (ВЫБРАТЬ | СписокРаботников.Физлицо | ИЗ | ВТСписокРаботников КАК СписокРаботников) | И НДФЛСведенияОДоходах.ПериодРегистрации = &парамПериодРегистрации | И НДФЛСведенияОДоходах.ОбособленноеПодразделение = &парамОрганизация | И НДФЛСведенияОДоходах.Регистратор <> &Ссылка"; Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл РаботникиДляРасчетаНДФЛ.Вставить(Выборка.Физлицо, 0); КонецЦикла; // заполним НДФЛ СтруктураПоиска = Новый Структура("ФизЛицо,МесяцНалоговогоПериода"); Для Каждого Элемент Из РаботникиДляРасчетаНДФЛ Цикл СтруктураПоиска.ФизЛицо = Элемент.Ключ; СтруктураПоиска.МесяцНалоговогоПериода = НачалоМесяца(ПериодРегистрации); Если НДФЛ.НайтиСтроки(СтруктураПоиска).Количество() = 0 Тогда ЗаполнитьЗначенияСвойств(НДФЛ.Добавить(),СтруктураПоиска) КонецЕсли; КонецЦикла; КонецЕсли; Возврат Истина; КонецФункции Функция ПолучитьДокументыРасчетаЗаВесьМесяц() Экспорт Если ПериодНачисления = Перечисления.ПериодНачисленияЗарплаты.ПерваяПоловинаТекущегоМесяца Тогда // проверим, можно ли произвести расчет - поищем "мешающие" документы Запрос = Новый Запрос; Запрос.УстановитьПараметр("Ссылка",Ссылка); Запрос.УстановитьПараметр("ПериодРегистрации",ПериодРегистрации); Запрос.УстановитьПараметр("СотрудникиОснНачислений", Начисления.ВыгрузитьКолонку("Сотрудник")); Запрос.УстановитьПараметр("СотрудникиДопНачислений", ДополнительныеНачисления.ВыгрузитьКолонку("Сотрудник")); Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | НачислениеЗарплатыРаботникамОрганизацийНачисления.Ссылка, | ПРЕДСТАВЛЕНИЕ(НачислениеЗарплатыРаботникамОрганизацийНачисления.Ссылка) КАК Представление |ИЗ | Документ.НачислениеЗарплатыРаботникамОрганизаций.Начисления КАК НачислениеЗарплатыРаботникамОрганизацийНачисления |ГДЕ | НачислениеЗарплатыРаботникамОрганизацийНачисления.Ссылка.ПериодРегистрации = &ПериодРегистрации | И НачислениеЗарплатыРаботникамОрганизацийНачисления.Ссылка.ПериодНачисления = ЗНАЧЕНИЕ(Перечисление.ПериодНачисленияЗарплаты.ТекущийМесяц) | И НачислениеЗарплатыРаботникамОрганизацийНачисления.Ссылка <> &Ссылка | И НачислениеЗарплатыРаботникамОрганизацийНачисления.Ссылка.Проведен | И НачислениеЗарплатыРаботникамОрганизацийНачисления.Сотрудник В(&СотрудникиОснНачислений) | |ОБЪЕДИНИТЬ | |ВЫБРАТЬ РАЗЛИЧНЫЕ | НачислениеЗарплатыРаботникамОрганизацийДополнительныеНачисления.Ссылка, | ПРЕДСТАВЛЕНИЕ(НачислениеЗарплатыРаботникамОрганизацийДополнительныеНачисления.Ссылка) |ИЗ | Документ.НачислениеЗарплатыРаботникамОрганизаций.ДополнительныеНачисления КАК НачислениеЗарплатыРаботникамОрганизацийДополнительныеНачисления |ГДЕ | НачислениеЗарплатыРаботникамОрганизацийДополнительныеНачисления.Ссылка.ПериодРегистрации = &ПериодРегистрации | И НачислениеЗарплатыРаботникамОрганизацийДополнительныеНачисления.Ссылка.ПериодНачисления = ЗНАЧЕНИЕ(Перечисление.ПериодНачисленияЗарплаты.ТекущийМесяц) | И НачислениеЗарплатыРаботникамОрганизацийДополнительныеНачисления.Ссылка <> &Ссылка | И НачислениеЗарплатыРаботникамОрганизацийДополнительныеНачисления.Ссылка.Проведен | И НачислениеЗарплатыРаботникамОрганизацийДополнительныеНачисления.Сотрудник В(&СотрудникиДопНачислений)"; Возврат Запрос.Выполнить().Выгрузить() Иначе Возврат Новый Массив КонецЕсли; КонецФункции // Заполняет документ-исправление по переданному списку сотрудников // Процедура ЗаполнитьПоПерерассчитываемомуДокументу(ИсходныйДокумент, Знач Сотрудники = Неопределено) Экспорт ПерерассчитываемыйДокумент = ИсходныйДокумент.Ссылка; Если ТипЗнч(ПерерассчитываемыйДокумент) = Тип("ДокументСсылка.НачислениеЗарплатыРаботникамОрганизаций") Тогда // выполним заполнение по всем табличным частям документа // и получим список сотрудников для перезаполнения Запрос = Новый Запрос; Запрос.УстановитьПараметр("ПерерассчитываемыйДокумент", ПерерассчитываемыйДокумент); Запрос.УстановитьПараметр("ПериодРегистрации", ПериодРегистрации); Запрос.УстановитьПараметр("Сотрудники", Сотрудники); Запрос.УстановитьПараметр("ПоВсемСотрудникам", Сотрудники = Неопределено); Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц; Если Сотрудники = "ПоДаннымПерерасчета" Тогда Исправления = ПроведениеРасчетов.ПолучитьДокументИсправление(ПерерассчитываемыйДокумент, "КритерийОтбора"); Запрос.УстановитьПараметр("Исправления", Исправления); Запрос.Текст = "ВЫБРАТЬ | НачислениеЗарплатыРаботникамОрганизацийНачисления.Сотрудник КАК Сотрудник |ПОМЕСТИТЬ ВТСотрудникиИсправлений |ИЗ | Документ.НачислениеЗарплатыРаботникамОрганизаций.Начисления КАК НачислениеЗарплатыРаботникамОрганизацийНачисления |ГДЕ | НачислениеЗарплатыРаботникамОрганизацийНачисления.Ссылка В(&Исправления) | И НачислениеЗарплатыРаботникамОрганизацийНачисления.Сторно | И НачислениеЗарплатыРаботникамОрганизацийНачисления.СторнируемыйДокумент = &ПерерассчитываемыйДокумент | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | НачислениеЗарплатыРаботникамОрганизацийДополнительныеНачисления.Сотрудник |ИЗ | Документ.НачислениеЗарплатыРаботникамОрганизаций.ДополнительныеНачисления КАК НачислениеЗарплатыРаботникамОрганизацийДополнительныеНачисления |ГДЕ | НачислениеЗарплатыРаботникамОрганизацийДополнительныеНачисления.Ссылка В(&Исправления) | И НачислениеЗарплатыРаботникамОрганизацийДополнительныеНачисления.Сторно | И НачислениеЗарплатыРаботникамОрганизацийДополнительныеНачисления.СторнируемыйДокумент = &ПерерассчитываемыйДокумент | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | НачислениеЗарплатыРаботникамОрганизацийДоговорыНаВыполнениеРабот.Сотрудник |ИЗ | Документ.НачислениеЗарплатыРаботникамОрганизаций.ДоговорыНаВыполнениеРабот КАК НачислениеЗарплатыРаботникамОрганизацийДоговорыНаВыполнениеРабот |ГДЕ | НачислениеЗарплатыРаботникамОрганизацийДоговорыНаВыполнениеРабот.Ссылка В(&Исправления) | И НачислениеЗарплатыРаботникамОрганизацийДоговорыНаВыполнениеРабот.Сторно | И НачислениеЗарплатыРаботникамОрганизацийДоговорыНаВыполнениеРабот.СторнируемыйДокумент = &ПерерассчитываемыйДокумент | |ИНДЕКСИРОВАТЬ ПО | Сотрудник"; Запрос.Выполнить(); Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | СотрудникиОрганизаций.Сотрудник, | СотрудникиОрганизаций.Физлицо КАК Физлицо |ПОМЕСТИТЬ ВТФизлицаПерерасчета |ИЗ | Документ.НачислениеЗарплатыРаботникамОрганизаций.Начисления КАК СотрудникиОрганизаций |ГДЕ | СотрудникиОрганизаций.Ссылка = &ПерерассчитываемыйДокумент | И СотрудникиОрганизаций.Физлицо В | (ВЫБРАТЬ | Перерасчет.ФизЛицо | ИЗ | РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций.ПерерасчетОсновныхНачислений КАК Перерасчет | ГДЕ | Перерасчет.ОбъектПерерасчета = &ПерерассчитываемыйДокумент | | ОБЪЕДИНИТЬ ВСЕ | | ВЫБРАТЬ | ЗаполнениеПлановыхНачислений.Сотрудник.Физлицо | ИЗ | РегистрСведений.ЗаполнениеПлановыхНачислений КАК ЗаполнениеПлановыхНачислений | ГДЕ | ЗаполнениеПлановыхНачислений.ОбъектЗаполнения = &ПерерассчитываемыйДокумент) | И (НЕ СотрудникиОрганизаций.Сотрудник В | (ВЫБРАТЬ | Начисления.Сотрудник | ИЗ | ВТСотрудникиИсправлений КАК Начисления)) | |ОБЪЕДИНИТЬ | |ВЫБРАТЬ РАЗЛИЧНЫЕ | СотрудникиОрганизаций.Сотрудник, | СотрудникиОрганизаций.Физлицо |ИЗ | Документ.НачислениеЗарплатыРаботникамОрганизаций.ДополнительныеНачисления КАК СотрудникиОрганизаций |ГДЕ | СотрудникиОрганизаций.Ссылка = &ПерерассчитываемыйДокумент | И СотрудникиОрганизаций.Физлицо В | (ВЫБРАТЬ | Перерасчет.ФизЛицо | ИЗ | РегистрРасчета.ДополнительныеНачисленияРаботниковОрганизаций.ПерерасчетДополнительныхНачислений КАК Перерасчет | ГДЕ | Перерасчет.ОбъектПерерасчета = &ПерерассчитываемыйДокумент | | ОБЪЕДИНИТЬ ВСЕ | | ВЫБРАТЬ | ЗаполнениеПлановыхНачислений.Сотрудник.Физлицо | ИЗ | РегистрСведений.ЗаполнениеПлановыхНачислений КАК ЗаполнениеПлановыхНачислений | ГДЕ | ЗаполнениеПлановыхНачислений.ОбъектЗаполнения = &ПерерассчитываемыйДокумент) | И (НЕ СотрудникиОрганизаций.Сотрудник В | (ВЫБРАТЬ | Начисления.Сотрудник | ИЗ | ВТСотрудникиИсправлений КАК Начисления)) | |ИНДЕКСИРОВАТЬ ПО | Физлицо"; Запрос.Выполнить(); Запрос.Текст = "ВЫБРАТЬ | СотрудникиОрганизаций.Сотрудник |ИЗ | ВТФизлицаПерерасчета КАК СотрудникиОрганизаций"; Сотрудники = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Сотрудник"); Запрос.УстановитьПараметр("Сотрудники", Сотрудники); ИначеЕсли Сотрудники <> Неопределено Тогда Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | СотрудникиОрганизаций.Физлицо КАК Физлицо |ПОМЕСТИТЬ ВТФизлицаПерерасчета |ИЗ | Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций |ГДЕ | СотрудникиОрганизаций.Ссылка В(&Сотрудники) | |ИНДЕКСИРОВАТЬ ПО | Физлицо"; Запрос.Выполнить(); Иначе Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | НЕОПРЕДЕЛЕНО КАК Физлицо |ПОМЕСТИТЬ ВТФизлицаПерерасчета"; Запрос.Выполнить(); КонецЕсли; Запрос.Текст = "ВЫБРАТЬ | Начисления.Сотрудник, | Начисления.Физлицо, | Начисления.ВидРасчета, | Начисления.ДатаНачала, | Начисления.ДатаОкончания, | Начисления.Показатель1, | Начисления.Показатель2, | Начисления.Показатель3, | Начисления.Показатель4, | Начисления.Показатель5, | Начисления.Показатель6, | Начисления.ПодразделениеОрганизации, | -Начисления.Результат - ЕСТЬNULL(СУММА(СторноНачисления.Результат), 0) КАК Результат, | -Начисления.ОплаченоДнейЧасов - ЕСТЬNULL(СУММА(СторноНачисления.ОплаченоДнейЧасов), 0) КАК ОплаченоДнейЧасов, | -Начисления.ОтработаноДней - ЕСТЬNULL(СУММА(СторноНачисления.ОтработаноДней), 0) КАК ОтработаноДней, | -Начисления.ОтработаноЧасов - ЕСТЬNULL(СУММА(СторноНачисления.ОтработаноЧасов), 0) КАК ОтработаноЧасов, | -Начисления.ОтработаноДнейПоПятидневке - ЕСТЬNULL(СУММА(СторноНачисления.ОтработаноДнейПоПятидневке), 0) КАК ОтработаноДнейПоПятидневке, | -Начисления.ОтработаноЧасовПоПятидневке - ЕСТЬNULL(СУММА(СторноНачисления.ОтработаноЧасовПоПятидневке), 0) КАК ОтработаноЧасовПоПятидневке, | -Начисления.НормаДней - ЕСТЬNULL(СУММА(СторноНачисления.НормаДней), 0) КАК НормаДней, | -Начисления.НормаЧасов - ЕСТЬNULL(СУММА(СторноНачисления.НормаЧасов), 0) КАК НормаЧасов, | -Начисления.НормаДнейПоПятидневке - ЕСТЬNULL(СУММА(СторноНачисления.НормаДнейПоПятидневке), 0) КАК НормаДнейПоПятидневке, | -Начисления.НормаЧасовПоПятидневке - ЕСТЬNULL(СУММА(СторноНачисления.НормаЧасовПоПятидневке), 0) КАК НормаЧасовПоПятидневке, | Начисления.ПериодРасчетаСреднегоЗаработкаНачало, | Начисления.ПериодРасчетаСреднегоЗаработкаОкончание, | Начисления.ДатаНачалаСобытия, | ИСТИНА КАК Сторно, | &ПерерассчитываемыйДокумент КАК СторнируемыйДокумент |ИЗ | Документ.НачислениеЗарплатыРаботникамОрганизаций.Начисления КАК Начисления | ЛЕВОЕ СОЕДИНЕНИЕ РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций КАК СторноНачисления | ПО Начисления.Сотрудник = СторноНачисления.Сотрудник | И Начисления.ВидРасчета = СторноНачисления.ВидРасчета | И (СторноНачисления.ПериодДействияНачало МЕЖДУ Начисления.ДатаНачала И Начисления.ДатаОкончания) | И (СторноНачисления.ПериодДействияКонец МЕЖДУ Начисления.ДатаНачала И Начисления.ДатаОкончания) | И (СторноНачисления.ПериодРегистрации > Начисления.Ссылка.ПериодРегистрации) | И (СторноНачисления.ПериодРегистрации <= &ПериодРегистрации) | И (СторноНачисления.СторнируемыйДокумент = Начисления.Ссылка) |ГДЕ | Начисления.Ссылка = &ПерерассчитываемыйДокумент | И (НЕ Начисления.Сторно) | И (&ПоВсемСотрудникам | ИЛИ Начисления.Сотрудник В (&Сотрудники)) | И Начисления.Ссылка.Проведен | |СГРУППИРОВАТЬ ПО | Начисления.Сотрудник, | Начисления.Физлицо, | Начисления.ВидРасчета, | Начисления.ДатаНачала, | Начисления.ДатаОкончания, | Начисления.Показатель1, | Начисления.Показатель2, | Начисления.Показатель3, | Начисления.Показатель4, | Начисления.Показатель5, | Начисления.Показатель6, | Начисления.ПодразделениеОрганизации, | Начисления.ПериодРасчетаСреднегоЗаработкаНачало, | Начисления.ПериодРасчетаСреднегоЗаработкаОкончание, | Начисления.ДатаНачалаСобытия, | Начисления.Результат, | Начисления.ОплаченоДнейЧасов, | Начисления.ОтработаноДней, | Начисления.ОтработаноЧасов, | Начисления.ОтработаноДнейПоПятидневке, | Начисления.ОтработаноЧасовПоПятидневке, | Начисления.НормаДней, | Начисления.НормаЧасов, | Начисления.НормаДнейПоПятидневке, | Начисления.НормаЧасовПоПятидневке"; Выборка = Запрос.Выполнить().Выбрать(); Сотрудники = Новый Массив; Пока Выборка.Следующий() Цикл // сторно-строка ЗаполнитьЗначенияСвойств(Начисления.Добавить(), Выборка); Если Сотрудники.Найти(Выборка.Сотрудник) = Неопределено Тогда Сотрудники.Добавить(Выборка.Сотрудник); КонецЕсли; КонецЦикла; // выполним запрос к ДополнительныеНачисления Запрос.Текст = "ВЫБРАТЬ | Начисления.Сотрудник, | Начисления.Физлицо, | Начисления.ВидРасчета, | Начисления.ДатаНачала, | Начисления.ДатаОкончания, | Начисления.Показатель1, | Начисления.Показатель2, | Начисления.Показатель3, | Начисления.Показатель4, | Начисления.Показатель5, | Начисления.Показатель6, | -Начисления.Результат КАК Результат, | Начисления.ПодразделениеОрганизации, | Начисления.КодВычета, | ВЫБОР | КОГДА Начисления.КодВычета = ЗНАЧЕНИЕ(Справочник.ВычетыНДФЛ.МатпомощьПриРожденииРебенка) | ТОГДА Начисления.СуммаВычета | ИНАЧЕ -Начисления.СуммаВычета | КОНЕЦ КАК СуммаВычета, | Начисления.СуммаВычета КАК ИсходнаяСуммаВычета, | ИСТИНА КАК Сторно, | &ПерерассчитываемыйДокумент КАК СторнируемыйДокумент, | Начисления.ДатаНачалаСобытия, | Начисления.ПериодРасчетаСреднегоЗаработкаОкончание, | Начисления.ПериодРасчетаСреднегоЗаработкаНачало, | -Начисления.ОплаченоДнейЧасов КАК ОплаченоДнейЧасов |ИЗ | Документ.НачислениеЗарплатыРаботникамОрганизаций.ДополнительныеНачисления КАК Начисления |ГДЕ | Начисления.Ссылка = &ПерерассчитываемыйДокумент | И (НЕ Начисления.Сторно) | И (&ПоВсемСотрудникам | ИЛИ Начисления.Сотрудник В (&Сотрудники)) | И Начисления.Ссылка.Проведен"; Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл // сторно-строка ЗаполнитьЗначенияСвойств(ДополнительныеНачисления.Добавить(), Выборка); // обычная строка ОбычнаяСтрока = ДополнительныеНачисления.Добавить(); ЗаполнитьЗначенияСвойств(ОбычнаяСтрока,Выборка); ОбычнаяСтрока.Сторно = Ложь; ОбычнаяСтрока.Результат = -ОбычнаяСтрока.Результат; ОбычнаяСтрока.ОплаченоДнейЧасов = -ОбычнаяСтрока.ОплаченоДнейЧасов; ОбычнаяСтрока.СуммаВычета = Выборка.ИсходнаяСуммаВычета; ОбычнаяСтрока.СторнируемыйДокумент = Неопределено; Если Сотрудники.Найти(Выборка.Сотрудник) = Неопределено Тогда Сотрудники.Добавить(Выборка.Сотрудник); КонецЕсли; КонецЦикла; // выполним запрос к ДоговорыНаВыполнениеРабот Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ | ДоговорыНаВыполнениеРабот.Сотрудник, | ДоговорыНаВыполнениеРабот.Физлицо, | ДоговорыНаВыполнениеРабот.ВидРасчета, | ДоговорыНаВыполнениеРабот.ДатаНачала, | ДоговорыНаВыполнениеРабот.ДатаОкончания, | ДоговорыНаВыполнениеРабот.Размер, | ДоговорыНаВыполнениеРабот.ПодразделениеОрганизации, | ДоговорыНаВыполнениеРабот.КодВычета, | -ДоговорыНаВыполнениеРабот.СуммаВычета КАК СуммаВычета, | -ДоговорыНаВыполнениеРабот.Результат КАК Результат, | ИСТИНА КАК Сторно, | &ПерерассчитываемыйДокумент КАК СторнируемыйДокумент, | ДоговорыНаВыполнениеРабот.ДокументОснование, | ДоговорыНаВыполнениеРабот.КОСГУ, | ДоговорыНаВыполнениеРабот.СтатьяФинансирования, | ДоговорыНаВыполнениеРабот.СтатьяРасходов |ИЗ | Документ.НачислениеЗарплатыРаботникамОрганизаций.ДоговорыНаВыполнениеРабот КАК ДоговорыНаВыполнениеРабот |ГДЕ | ДоговорыНаВыполнениеРабот.Ссылка = &ПерерассчитываемыйДокумент | И (НЕ ДоговорыНаВыполнениеРабот.Сторно) | И (&ПоВсемСотрудникам | ИЛИ ДоговорыНаВыполнениеРабот.Сотрудник В (&Сотрудники)) | И ДоговорыНаВыполнениеРабот.Ссылка.Проведен"; Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл // сторно-строка ЗаполнитьЗначенияСвойств(ДоговорыНаВыполнениеРабот.Добавить(), Выборка); Если Сотрудники.Найти(Выборка.Сотрудник) = Неопределено Тогда Сотрудники.Добавить(Выборка.Сотрудник); КонецЕсли; КонецЦикла; // Таблицы отражения ОтражениеВУчете.ЗаполнитьТЧОтраженияПоПерерассчитываемымСотрудникам(НачисленияПоИФ, ПерерассчитываемыйДокумент.НачисленияПоИФ, Сотрудники); ОтражениеВУчете.ЗаполнитьТЧОтраженияПоПерерассчитываемымСотрудникам(ДополнительныеНачисленияПоИФ, ПерерассчитываемыйДокумент.ДополнительныеНачисленияПоИФ, Сотрудники); ЗапросПериод = Новый Запрос; ЗапросПериод.Текст = "ВЫБРАТЬ | НачислениеЗарплатыРаботникамОрганизаций.ПериодНачисленияДатаНачала, | НачислениеЗарплатыРаботникамОрганизаций.ПериодНачисленияДатаОкончания, | НачислениеЗарплатыРаботникамОрганизаций.Организация, | НачислениеЗарплатыРаботникамОрганизаций.ПодразделениеОрганизации, | НачислениеЗарплатыРаботникамОрганизаций.ВидОперации |ИЗ | Документ.НачислениеЗарплатыРаботникамОрганизаций КАК НачислениеЗарплатыРаботникамОрганизаций |ГДЕ | НачислениеЗарплатыРаботникамОрганизаций.Ссылка = &ПерерассчитываемыйДокумент"; ЗапросПериод.УстановитьПараметр("ПерерассчитываемыйДокумент", ПерерассчитываемыйДокумент); Выборка = ЗапросПериод.Выполнить().Выбрать(); Выборка.Следующий(); ПериодНачисления = Перечисления.ПериодНачисленияЗарплаты.ПрошлыйПериод; ЗаполнитьЗначенияСвойств(ЭтотОбъект,Выборка); Иначе ЗапросПериод = Новый Запрос; ЗапросПериод.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1 | ОсновныеНачисленияРаботниковОрганизаций.ПериодРегистрации |ПОМЕСТИТЬ ВТПериод |ИЗ | РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций КАК ОсновныеНачисленияРаботниковОрганизаций |ГДЕ | ОсновныеНачисленияРаботниковОрганизаций.Регистратор = &ПерерассчитываемыйДокумент | |ОБЪЕДИНИТЬ | |ВЫБРАТЬ ПЕРВЫЕ 1 | НАЧАЛОПЕРИОДА(ДополнительныеНачисленияРаботниковОрганизаций.ПериодРегистрации, МЕСЯЦ) |ИЗ | РегистрРасчета.ДополнительныеНачисленияРаботниковОрганизаций КАК ДополнительныеНачисленияРаботниковОрганизаций |ГДЕ | ДополнительныеНачисленияРаботниковОрганизаций.Регистратор = &ПерерассчитываемыйДокумент | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ПереносДанных.Организация, | ПрошлыйПериод.ПериодРегистрации КАК ПериодНачисленияДатаНачала, | КОНЕЦПЕРИОДА(ПрошлыйПериод.ПериодРегистрации, МЕСЯЦ) КАК ПериодНачисленияДатаОкончания |ИЗ | Документ.ПереносДанных КАК ПереносДанных | ЛЕВОЕ СОЕДИНЕНИЕ ВТПериод КАК ПрошлыйПериод | ПО (ИСТИНА) |ГДЕ | ПереносДанных.Ссылка = &ПерерассчитываемыйДокумент"; ЗапросПериод.УстановитьПараметр("ПерерассчитываемыйДокумент", ПерерассчитываемыйДокумент); Выборка = ЗапросПериод.Выполнить().Выбрать(); Выборка.Следующий(); ЗаполнитьЗначенияСвойств(ЭтотОбъект,Выборка); ВидОперации = Перечисления.ВидыОперацийНачислениеЗарплатыРаботникамОрганизаций.ПолныйРасчет; ПериодНачисления = Перечисления.ПериодНачисленияЗарплаты.ПрошлыйПериод; Запрос = Новый Запрос; Запрос.УстановитьПараметр("ПерерассчитываемыйДокумент", ПерерассчитываемыйДокумент); Запрос.УстановитьПараметр("ПериодРегистрации", ПериодРегистрации); Запрос.УстановитьПараметр("Сотрудники", Сотрудники); Запрос.УстановитьПараметр("ПоВсемСотрудникам", Сотрудники = Неопределено); Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц; // временная таблица ВТФизлицаПерерасчета Если Сотрудники <> Неопределено Тогда ЗапросТекст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | СотрудникиОрганизаций.Физлицо КАК Физлицо |ПОМЕСТИТЬ ВТФизлицаПерерасчета |ИЗ | Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций |ГДЕ | СотрудникиОрганизаций.Ссылка В(&Сотрудники) | |ИНДЕКСИРОВАТЬ ПО | Физлицо"; Иначе ЗапросТекст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | НЕОПРЕДЕЛЕНО КАК Физлицо |ПОМЕСТИТЬ ВТФизлицаПерерасчета"; КонецЕсли; Запрос.Текст = ЗапросТекст; Запрос.Выполнить(); Запрос.Текст = "ВЫБРАТЬ | Начисления.Сотрудник, | Начисления.ФизЛицо, | Начисления.ВидРасчета, | Начисления.ПериодДействияНачало КАК ДатаНачала, | Начисления.ПериодДействияКонец КАК ДатаОкончания, | Начисления.Показатель1, | Начисления.Показатель2, | Начисления.Показатель3, | Начисления.Показатель4, | Начисления.Показатель5, | Начисления.Показатель6, | Начисления.ПодразделениеОрганизации, | -Начисления.Результат - ЕСТЬNULL(СУММА(СторноНачисления.Результат), 0) КАК Результат, | -Начисления.ОплаченоДнейЧасов - ЕСТЬNULL(СУММА(СторноНачисления.ОплаченоДнейЧасов), 0) КАК ОплаченоДнейЧасов, | -Начисления.ОтработаноДней - ЕСТЬNULL(СУММА(СторноНачисления.ОтработаноДней), 0) КАК ОтработаноДней, | -Начисления.ОтработаноЧасов - ЕСТЬNULL(СУММА(СторноНачисления.ОтработаноЧасов), 0) КАК ОтработаноЧасов, | -Начисления.ОтработаноДнейПоПятидневке - ЕСТЬNULL(СУММА(СторноНачисления.ОтработаноДнейПоПятидневке), 0) КАК ОтработаноДнейПоПятидневке, | -Начисления.ОтработаноЧасовПоПятидневке - ЕСТЬNULL(СУММА(СторноНачисления.ОтработаноЧасовПоПятидневке), 0) КАК ОтработаноЧасовПоПятидневке, | -Начисления.НормаДней - ЕСТЬNULL(СУММА(СторноНачисления.НормаДней), 0) КАК НормаДней, | -Начисления.НормаЧасов - ЕСТЬNULL(СУММА(СторноНачисления.НормаЧасов), 0) КАК НормаЧасов, | -Начисления.НормаДнейПоПятидневке - ЕСТЬNULL(СУММА(СторноНачисления.НормаДнейПоПятидневке), 0) КАК НормаДнейПоПятидневке, | -Начисления.НормаЧасовПоПятидневке - ЕСТЬNULL(СУММА(СторноНачисления.НормаЧасовПоПятидневке), 0) КАК НормаЧасовПоПятидневке, | Начисления.ПериодРасчетаСреднегоЗаработкаНачало, | Начисления.ПериодРасчетаСреднегоЗаработкаОкончание, | Начисления.ДатаНачалаСобытия, | ИСТИНА КАК Сторно, | Начисления.Регистратор КАК СторнируемыйДокумент |ИЗ | РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций КАК Начисления | ЛЕВОЕ СОЕДИНЕНИЕ РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций КАК СторноНачисления | ПО Начисления.Сотрудник = СторноНачисления.Сотрудник | И Начисления.ВидРасчета = СторноНачисления.ВидРасчета | И (СторноНачисления.ПериодДействияНачало МЕЖДУ Начисления.ПериодДействияНачало И Начисления.ПериодДействияКонец) | И (СторноНачисления.ПериодДействияКонец МЕЖДУ Начисления.ПериодДействияНачало И Начисления.ПериодДействияКонец) | И (СторноНачисления.ПериодРегистрации > Начисления.ПериодРегистрации) | И (СторноНачисления.ПериодРегистрации <= &ПериодРегистрации) | И (СторноНачисления.СторнируемыйДокумент = Начисления.Регистратор) |ГДЕ | Начисления.Регистратор = &ПерерассчитываемыйДокумент | И (НЕ Начисления.Сторно) | И (&ПоВсемСотрудникам | ИЛИ Начисления.Сотрудник В (&Сотрудники)) | |СГРУППИРОВАТЬ ПО | Начисления.Регистратор, | Начисления.Сотрудник, | Начисления.ФизЛицо, | Начисления.ВидРасчета, | Начисления.ПериодДействияНачало, | Начисления.ПериодДействияКонец, | Начисления.Показатель1, | Начисления.Показатель2, | Начисления.Показатель3, | Начисления.Показатель4, | Начисления.Показатель5, | Начисления.Показатель6, | Начисления.ПодразделениеОрганизации, | Начисления.ПериодРасчетаСреднегоЗаработкаНачало, | Начисления.ПериодРасчетаСреднегоЗаработкаОкончание, | Начисления.ДатаНачалаСобытия, | Начисления.Результат, | Начисления.ОплаченоДнейЧасов, | Начисления.ОтработаноДней, | Начисления.ОтработаноЧасов, | Начисления.ОтработаноДнейПоПятидневке, | Начисления.ОтработаноЧасовПоПятидневке, | Начисления.НормаДней, | Начисления.НормаЧасов, | Начисления.НормаДнейПоПятидневке, | Начисления.НормаЧасовПоПятидневке"; Выборка = Запрос.Выполнить().Выбрать(); Сотрудники = Новый Массив; Пока Выборка.Следующий() Цикл // сторно-строка ЗаполнитьЗначенияСвойств(Начисления.Добавить(), Выборка); Если Сотрудники.Найти(Выборка.Сотрудник) = Неопределено Тогда Сотрудники.Добавить(Выборка.Сотрудник); КонецЕсли; КонецЦикла; Запрос.Текст = "ВЫБРАТЬ | Соответствие.КодВычета, | Соответствие.КодДохода |ПОМЕСТИТЬ ВТСоответствиеДоходовИВычетов |ИЗ | &ТаблицаСоответствияДоходовИВычетов КАК Соответствие"; Запрос.УстановитьПараметр("ТаблицаСоответствияДоходовИВычетов",ПроведениеРасчетов.ПолучитьТаблицуСоответствияДоходовИВычетов()); Запрос.Выполнить(); // выполним запрос к ДополнительныеНачисления Запрос.Текст = "ВЫБРАТЬ | ДополнительныеНачисления.Регистратор КАК Регистратор, | ДополнительныеНачисления.Сотрудник КАК Сотрудник, | ДополнительныеНачисления.ФизЛицо, | ДополнительныеНачисления.ВидРасчета КАК ВидРасчета, | ДополнительныеНачисления.БазовыйПериодНачало КАК ДатаНачала, | ДополнительныеНачисления.БазовыйПериодКонец КАК ДатаОкончания, | ДополнительныеНачисления.Показатель1, | ДополнительныеНачисления.Показатель2, | ДополнительныеНачисления.Показатель3, | ДополнительныеНачисления.Показатель4, | ДополнительныеНачисления.Показатель5, | ДополнительныеНачисления.Показатель6, | ДополнительныеНачисления.ПодразделениеОрганизации, | ДополнительныеНачисления.Результат, | ДополнительныеНачисления.ОплаченоДнейЧасов, | ДополнительныеНачисления.СкидкаПриНалогообложении КАК СуммаВычета, | ДополнительныеНачисления.ПериодРасчетаСреднегоЗаработкаНачало, | ДополнительныеНачисления.ПериодРасчетаСреднегоЗаработкаОкончание, | ДополнительныеНачисления.ДатаНачалаСобытия, | ДополнительныеНачисления.ДокументОснование, | ВЫБОР | КОГДА ДополнительныеНачисления.ДокументОснование = ЗНАЧЕНИЕ(Документ.ДоговорНаВыполнениеРаботСФизЛицом.ПустаяСсылка) | ТОГДА СоответствиеДоходовИВычетов.КодВычета | ИНАЧЕ ДополнительныеНачисления.ДокументОснование.КодВычета | КОНЕЦ КАК КодВычета |ПОМЕСТИТЬ ВТСтрокиДополнительныхНачислений |ИЗ | РегистрРасчета.ДополнительныеНачисленияРаботниковОрганизаций КАК ДополнительныеНачисления | ЛЕВОЕ СОЕДИНЕНИЕ ВТСоответствиеДоходовИВычетов КАК СоответствиеДоходовИВычетов | ПО ДополнительныеНачисления.ВидРасчета.КодДоходаНДФЛ = СоответствиеДоходовИВычетов.КодДохода |ГДЕ | (НЕ ДополнительныеНачисления.Сторно) | И ДополнительныеНачисления.Регистратор = &ПерерассчитываемыйДокумент | И (&ПоВсемСотрудникам | ИЛИ ДополнительныеНачисления.Сотрудник В (&Сотрудники)) | |ИНДЕКСИРОВАТЬ ПО | ВидРасчета"; Запрос.Выполнить(); Запрос.Текст = "ВЫБРАТЬ | Начисления.Сотрудник, | Начисления.Физлицо, | Начисления.ВидРасчета, | Начисления.ДатаНачала, | Начисления.ДатаОкончания, | Начисления.Показатель1, | Начисления.Показатель2, | Начисления.Показатель3, | Начисления.Показатель4, | Начисления.Показатель5, | Начисления.Показатель6, | -Начисления.Результат КАК Результат, | Начисления.ПодразделениеОрганизации, | Начисления.КодВычета, | ВЫБОР | КОГДА Начисления.КодВычета = ЗНАЧЕНИЕ(Справочник.ВычетыНДФЛ.МатпомощьПриРожденииРебенка) | ТОГДА Начисления.СуммаВычета | ИНАЧЕ -Начисления.СуммаВычета | КОНЕЦ КАК СуммаВычета, | Начисления.СуммаВычета КАК ИсходнаяСуммаВычета, | ИСТИНА КАК Сторно, | Начисления.Регистратор КАК СторнируемыйДокумент, | Начисления.ДатаНачалаСобытия, | Начисления.ПериодРасчетаСреднегоЗаработкаОкончание, | Начисления.ПериодРасчетаСреднегоЗаработкаНачало, | -Начисления.ОплаченоДнейЧасов КАК ОплаченоДнейЧасов |ИЗ | ВТСтрокиДополнительныхНачислений КАК Начисления |ГДЕ | Начисления.ДокументОснование = ЗНАЧЕНИЕ(Документ.ДоговорНаВыполнениеРаботСФизЛицом.ПустаяСсылка)"; Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл // сторно-строка ЗаполнитьЗначенияСвойств(ДополнительныеНачисления.Добавить(), Выборка); // обычная строка ОбычнаяСтрока = ДополнительныеНачисления.Добавить(); ЗаполнитьЗначенияСвойств(ОбычнаяСтрока,Выборка); ОбычнаяСтрока.Сторно = Ложь; ОбычнаяСтрока.Результат = -ОбычнаяСтрока.Результат; ОбычнаяСтрока.ОплаченоДнейЧасов = -ОбычнаяСтрока.ОплаченоДнейЧасов; ОбычнаяСтрока.СуммаВычета = Выборка.ИсходнаяСуммаВычета; ОбычнаяСтрока.СторнируемыйДокумент = Неопределено; Если Сотрудники.Найти(Выборка.Сотрудник) = Неопределено Тогда Сотрудники.Добавить(Выборка.Сотрудник); КонецЕсли; КонецЦикла; // выполним запрос к ДоговорыНаВыполнениеРабот Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ | ДоговорыНаВыполнениеРабот.Сотрудник, | ДоговорыНаВыполнениеРабот.Физлицо, | ДоговорыНаВыполнениеРабот.ВидРасчета, | ДоговорыНаВыполнениеРабот.ДатаНачала, | ДоговорыНаВыполнениеРабот.ДатаОкончания, | ДоговорыНаВыполнениеРабот.Результат КАК Размер, | ДоговорыНаВыполнениеРабот.ПодразделениеОрганизации, | ДоговорыНаВыполнениеРабот.КодВычета, | -ДоговорыНаВыполнениеРабот.СуммаВычета КАК СуммаВычета, | -ДоговорыНаВыполнениеРабот.Результат КАК Результат, | ИСТИНА КАК Сторно, | ДоговорыНаВыполнениеРабот.Регистратор КАК СторнируемыйДокумент, | ДоговорыНаВыполнениеРабот.ДокументОснование |ИЗ | ВТСтрокиДополнительныхНачислений КАК ДоговорыНаВыполнениеРабот |ГДЕ | ДоговорыНаВыполнениеРабот.ДокументОснование <> ЗНАЧЕНИЕ(Документ.ДоговорНаВыполнениеРаботСФизЛицом.ПустаяСсылка)"; Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл // сторно-строка ЗаполнитьЗначенияСвойств(ДоговорыНаВыполнениеРабот.Добавить(), Выборка); Если Сотрудники.Найти(Выборка.Сотрудник) = Неопределено Тогда Сотрудники.Добавить(Выборка.Сотрудник); КонецЕсли; КонецЦикла; ЗаполнитьОтражениеДоговоров(); КонецЕсли; ВыполнитьАвтозаполнение(ПериодНачисленияДатаНачала, ПериодНачисленияДатаОкончания, , Истина, , Сотрудники); КонецПроцедуры // ЗаполнитьПоПерерассчитываемомуДокументу() // Процедура выполняет автозаполнение табличных частей только по переданным сотрудникам, // остальные строки табличных частей документа остаются нетронутыми. // // Параметры: МассивСотрудников - Массив сотрудников организации, по которым нужно сделать перезаполнение документа. Процедура ВыполнитьПерезаполнениеДокумента(МассивСотрудников, МассивФизЛиц) Экспорт // сохраним табличные данные в таблицы значений ТаблицаНачисления = Начисления.Выгрузить(); ТаблицаДополнительныеНачисления = ДополнительныеНачисления.Выгрузить(); ТаблицаДоговорыНаВыполнениеРабот = ДоговорыНаВыполнениеРабот.Выгрузить(); ТаблицаУдержания = Удержания.Выгрузить(); ТаблицаНДФЛ = НДФЛ.Выгрузить(); // Удалим из таблиц сотрудников которых нужно перезаполнить. // Удаляем из таблицы начисления ИндексСтроки = ТаблицаНачисления.Количество()-1; Пока ИндексСтроки >= 0 Цикл Если МассивСотрудников.Найти(ТаблицаНачисления[ИндексСтроки].Сотрудник) <> Неопределено Тогда ТаблицаНачисления.Удалить(ИндексСтроки); КонецЕсли; ИндексСтроки = ИндексСтроки - 1; КонецЦикла; // Удаляем из таблицы дополнительные начисления ИндексСтроки = ТаблицаДополнительныеНачисления.Количество() - 1; Пока ИндексСтроки >=0 Цикл Если МассивСотрудников.Найти(ТаблицаДополнительныеНачисления[ИндексСтроки].Сотрудник) <> Неопределено Тогда ТаблицаДополнительныеНачисления.Удалить(ИндексСтроки); КонецЕсли; ИндексСтроки = ИндексСтроки - 1; КонецЦикла; // Удаляем из таблицы договоры на выполнение работ ИндексСтроки = ТаблицаДоговорыНаВыполнениеРабот.Количество() - 1; Пока ИндексСтроки >=0 Цикл Если МассивСотрудников.Найти(ТаблицаДоговорыНаВыполнениеРабот[ИндексСтроки].Сотрудник) <> Неопределено Тогда ТаблицаДоговорыНаВыполнениеРабот.Удалить(ИндексСтроки); КонецЕсли; ИндексСтроки = ИндексСтроки - 1; КонецЦикла; // Удаляем из таблицы Удержания. ИндексСтроки = ТаблицаУдержания.Количество() - 1; Пока ИндексСтроки >=0 Цикл Если МассивФизЛиц.Найти(ТаблицаУдержания[ИндексСтроки].ФизЛицо) <> Неопределено Тогда ТаблицаУдержания.Удалить(ИндексСтроки); КонецЕсли; ИндексСтроки = ИндексСтроки - 1; КонецЦикла; // Удаляем из таблицы НДФЛ ИндексСтроки = ТаблицаНДФЛ.Количество() - 1; Пока ИндексСтроки >=0 Цикл Если МассивФизЛиц.Найти(ТаблицаНДФЛ[ИндексСтроки].ФизЛицо) <> Неопределено Тогда ТаблицаНДФЛ.Удалить(ИндексСтроки); КонецЕсли; ИндексСтроки = ИндексСтроки - 1; КонецЦикла; //Очищаем таблицы документа ОчиститьТЧ(); // Выполняем автозаполенение и расчет ВыполнитьАвтоЗаполнение(ПериодНачисленияДатаНачала,ПериодНачисленияДатаОкончания,,,,МассивСотрудников); Записать(); РассчитатьВсе(); //Добавляем в документ сотрудников из временных таблиц значений ДописатьСтрокиИзТаблицыВТаблицу(ТаблицаНачисления, Начисления); ДописатьСтрокиИзТаблицыВТаблицу(ТаблицаДополнительныеНачисления, ДополнительныеНачисления); ДописатьСтрокиИзТаблицыВТаблицу(ТаблицаНДФЛ, НДФЛ); ДописатьСтрокиИзТаблицыВТаблицу(ТаблицаУдержания, Удержания); Если Проведен Тогда Записать(РежимЗаписиДокумента.Проведение); Иначе Записать(); КонецЕсли; // удалять записи о перезаполнении из регистра не будем - они были удалены при автозаполнении КонецПроцедуры // ВыполнитьПерезаполнениеПоВыбраннымСотрудникам() // Процедура рассчитывает ресурсы для начислений // и заполняет реквизит Результат соотвтествующих табличных частей документа // Функция РассчитатьНачисления(ШапкаДокумента = Неопределено, ВыборкаПоНачислениям = Неопределено, ВыборкаПоДопНачислениям = Неопределено, Физлицо = Неопределено, КомментироватьРасчет = Ложь) Экспорт //массивы для хранения индексов строк табличных частей, //используются для расчета по одному сотруднику Если Физлицо = Неопределено Тогда МассивИндексыСтрокНачисления = Неопределено; МассивИндексыСтрокДополнительныеНачисления = Неопределено; Иначе МассивИндексыСтрокНачисления = Новый Массив(); МассивИндексыСтрокДополнительныеНачисления = Новый Массив(); КонецЕсли; Отказ = Ложь; Если ШапкаДокумента = Неопределено Тогда // Перечитаем объект и соберем данные для заполнения наборов записей регистров НачатьТранзакцию(); Прочитать(); ШапкаДокумента = ПолучитьШапкуДокумента(); ВыборкаПоНачислениям = СформироватьЗапросПоНачисления(ШапкаДокумента, ?(Физлицо = Неопределено, Неопределено, Начисления.НайтиСтроки(Новый Структура("ФизЛицо", Физлицо)))).Выбрать(); ВыборкаПоДопНачислениям = СформироватьЗапросПоДопНачисления(ШапкаДокумента, ?(Физлицо = Неопределено, Неопределено, ДополнительныеНачисления.НайтиСтроки(Новый Структура("ФизЛицо", Физлицо)))).Выбрать(); ЗафиксироватьТранзакцию(); КонецЕсли; // Создадим рабочие наборы записей НаборОсновныеНачисления = РегистрыРасчета.ОсновныеНачисленияРаботниковОрганизаций.СоздатьНаборЗаписей(); НаборОсновныеНачисления.Отбор.Регистратор.Значение = Ссылка; НаборДопНачисления = РегистрыРасчета.ДополнительныеНачисленияРаботниковОрганизаций.СоздатьНаборЗаписей(); НаборДопНачисления.Отбор.Регистратор.Значение = Ссылка; НаборРасчетСреднего = РегистрыРасчета.РасчетСреднегоЗаработка.СоздатьНаборЗаписей(); НаборРасчетСреднего.Отбор.Регистратор.Значение = Ссылка; ЗаписиДоходовНДФЛ = РегистрыНакопления.НДФЛСведенияОДоходах.СоздатьНаборЗаписей(); ЗаписиДоходовНДФЛ.Отбор.Регистратор.Значение = Ссылка; // Если встретим почасовое отклонение, то записываем движения в регистр ВнутрисменноеВремяРаботниковОрганизаций НаборЗаписейРабочееВремя = РегистрыНакопления.ВнутрисменноеВремяРаботниковОрганизаций.СоздатьНаборЗаписей(); НаборЗаписейРабочееВремя.Отбор.Регистратор.Значение = Ссылка; Пока ВыборкаПоНачислениям.Следующий() Цикл ПроверитьЗаполнениеСтрокиНачисления(ВыборкаПоНачислениям, Отказ); Если НЕ Отказ Тогда // Заполним записи в наборах записей регистров ДобавитьСтрокуОсновныхНачислений(ВыборкаПоНачислениям, ШапкаДокумента, НаборОсновныеНачисления); ДобавитьСтрокуРабочегоВремени(ВыборкаПоНачислениям, ШапкаДокумента, НаборЗаписейРабочееВремя); Если НЕ (Физлицо = Неопределено) Тогда МассивИндексыСтрокНачисления.Добавить(ВыборкаПоНачислениям.НомерСтроки-1); КонецЕсли; КонецЕсли; КонецЦикла; мСоответствиеДоходовИВычетов = ПроведениеРасчетов.ПолучитьСоответствиеДоходовИВычетов(); Пока ВыборкаПоДопНачислениям.Следующий() Цикл ПроверитьЗаполнениеСтрокиДопНачисления(ВыборкаПоДопНачислениям, Отказ); Если НЕ Отказ Тогда // Заполним записи в наборах записей регистров ДобавитьСтрокуДопНачислений(ВыборкаПоДопНачислениям, ШапкаДокумента, НаборДопНачисления); Если НЕ Физлицо = Неопределено Тогда МассивИндексыСтрокДополнительныеНачисления.Добавить(ВыборкаПоДопНачислениям.НомерСтроки-1); КонецЕсли; КонецЕсли; КонецЦикла; Если Отказ Тогда // Удаляем движения Для Каждого Набор Из Движения Цикл Если ТипЗнч(Набор)=Тип("РегистрРасчетаНаборЗаписей.ОсновныеНачисленияРаботниковОрганизаций") Тогда // Удаляем движения Набор.Очистить(); Набор.Записать(Истина, Ложь, Истина, Ложь); ИначеЕсли ТипЗнч(Набор)=Тип("РегистрРасчетаНаборЗаписей.ДополнительныеНачисленияРаботниковОрганизаций") или ТипЗнч(Набор)=Тип("РегистрНакопленияНаборЗаписей.ВнутрисменноеВремяРаботниковОрганизаций") или ТипЗнч(Набор)=Тип("РегистрРасчетаНаборЗаписей.РасчетСреднегоЗаработка") Тогда // Удаляем движения Набор.Очистить(); Набор.Записать(); КонецЕсли; КонецЦикла; Возврат Не Отказ; КонецЕсли; НаборЗаписейРабочееВремя.Записать(); // Получим дополнительные записи, имеющие признак сторно, которые необходимо добавить // в текущий набор для того, чтобы в результате сохранения получился максимальный // фактический период действия ТаблицаСторноЗаписей = НаборОсновныеНачисления.ПолучитьДополнение(); ТаблицаСторноЗаписей.Колонки.Удалить("СторнируемыйДокумент"); ТаблицаСторноЗаписей.Колонки.Регистратор.Имя = "СторнируемыйДокумент"; ИндексПоследнейСтроки = ШапкаДокумента.НачисленияКоличествоСтрок; Для каждого СтрокаСторно Из ТаблицаСторноЗаписей Цикл // Заполним записи в наборе записей регистра // и в табличной части ДобавитьСтрокуСторно(НаборОсновныеНачисления, Начисления, СтрокаСторно); Если Не Физлицо = Неопределено Тогда //добавим в массив строк новые строки сторно МассивИндексыСтрокНачисления.Добавить(ИндексПоследнейСтроки); //индекс начинается с нуля, а номер строки с 1 ИндексПоследнейСтроки = ИндексПоследнейСтроки +1; КонецЕсли; КонецЦикла; ПроведениеРасчетовПереопределяемый.РассчитатьЗаписиРегистраРасчета("ОсновныеНачисленияРаботниковОрганизаций", НаборОсновныеНачисления, ЗаписиДоходовНДФЛ, НаборРасчетСреднего, ШапкаДокумента.ГоловнаяОрганизация, ШапкаДокумента.ОбособленноеПодразделение, Начисления, Ложь, МассивИндексыСтрокНачисления, Физлицо, КомментироватьРасчет); ПроведениеРасчетовПереопределяемый.РассчитатьЗаписиРегистраРасчета("ДополнительныеНачисленияРаботниковОрганизаций", НаборДопНачисления, ЗаписиДоходовНДФЛ, НаборРасчетСреднего, ШапкаДокумента.ГоловнаяОрганизация, ШапкаДокумента.ОбособленноеПодразделение, ДополнительныеНачисления, Ложь, МассивИндексыСтрокДополнительныеНачисления, Физлицо, КомментироватьРасчет); ПроведениеРасчетов.СкорректироватьНормируемыеВычетыПоНДФЛ(ЭтотОбъект); /////////////// // Распределяем начисления по источникам финансирования НаборОсновныеНачисления.Записать(Истина, Ложь, Истина, Ложь); НаборДопНачисления.Записать(Истина, Ложь, Истина, Ложь); РаспределитьНачисленияПоИФ(); // Конец распределения начислений по источникам финансирования /////////////// Если КомментироватьРасчет Тогда // Удаляем движения, но для комментирования расчета НДФЛ оставляем движения по начислениям Для Каждого Набор Из Движения Цикл Если ТипЗнч(Набор)=Тип("РегистрРасчетаНаборЗаписей.ОсновныеНачисленияРаботниковОрганизаций") Тогда Если ВидОперации <> Перечисления.ВидыОперацийНачислениеЗарплатыРаботникамОрганизаций.ПолныйРасчет Тогда // Удаляем движения Набор.Очистить(); Набор.Записать(Истина, Ложь, Истина, Ложь); КонецЕсли; ИначеЕсли ТипЗнч(Набор)=Тип("РегистрНакопленияНаборЗаписей.ВнутрисменноеВремяРаботниковОрганизаций") или ТипЗнч(Набор)=Тип("РегистрРасчетаНаборЗаписей.РасчетСреднегоЗаработка") Тогда // Удаляем движения Набор.Очистить(); Набор.Записать(); ИначеЕсли ТипЗнч(Набор)=Тип("РегистрРасчетаНаборЗаписей.ДополнительныеНачисленияРаботниковОрганизаций") Тогда Если ВидОперации <> Перечисления.ВидыОперацийНачислениеЗарплатыРаботникамОрганизаций.ПолныйРасчет Тогда // Удаляем движения Набор.Очистить(); Набор.Записать(); КонецЕсли; КонецЕсли; КонецЦикла; Иначе // Удаляем движения Для Каждого Набор Из Движения Цикл Если ТипЗнч(Набор)=Тип("РегистрРасчетаНаборЗаписей.ОсновныеНачисленияРаботниковОрганизаций") Тогда // Удаляем движения Набор.Очистить(); Набор.Записать(Истина, Ложь, Истина, Ложь); ИначеЕсли ТипЗнч(Набор)=Тип("РегистрРасчетаНаборЗаписей.ДополнительныеНачисленияРаботниковОрганизаций") или ТипЗнч(Набор)=Тип("РегистрНакопленияНаборЗаписей.ВнутрисменноеВремяРаботниковОрганизаций") или ТипЗнч(Набор)=Тип("РегистрРасчетаНаборЗаписей.РасчетСреднегоЗаработка") Тогда // Удаляем движения Набор.Очистить(); Набор.Записать(); КонецЕсли; КонецЦикла; КонецЕсли; Возврат Не Отказ; КонецФункции // РассчитатьНачисления() // Процедура рассчитывает НДФЛ // и заполняет реквизиты табличной части // Процедура РассчитатьНДФЛ(Физлицо = Неопределено, КомментироватьРасчет = Ложь) Экспорт // Получим реквизиты шапки из запроса ШапкаДокумента = ПолучитьШапкуДокумента(); Отказ = Ложь; ВыборкаПоНачислениям = СформироватьЗапросПоНачисления(ШапкаДокумента, ?(Физлицо = Неопределено, Неопределено, Начисления.НайтиСтроки(Новый Структура("ФизЛицо", Физлицо)))).Выбрать(); Пока ВыборкаПоНачислениям.Следующий() Цикл ПроверитьЗаполнениеСтрокиНачисления(ВыборкаПоНачислениям, Отказ); КонецЦикла; Если Отказ Тогда Возврат; КонецЕсли; НаборНДФЛСведенияОДоходах = Движения.НДФЛСведенияОДоходах; // Сохраним движения по регистру доходов ТаблицаДоходов = НаборНДФЛСведенияОДоходах.Выгрузить(); // сформируем и запишем доходы НДФЛ по начислениям документа НаборНДФЛСведенияОДоходах.Очистить(); СформироватьДоходыПоКодамНДФЛ(ШапкаДокумента, НаборНДФЛСведенияОДоходах); // по начислениям // запишем доходы НДФЛ по начислениям документа НаборНДФЛСведенияОДоходах.Записать(); // Составим текст запроса для выбора списка физлиц, по которым надо считать НДФЛ Если НЕ (Физлицо = Неопределено) Тогда СписокФизлицТекст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | Работники.Физлицо КАК Физлицо |ИЗ | Документ.НачислениеЗарплатыРаботникамОрганизаций.НДФЛ КАК Работники | |ГДЕ | Работники.Ссылка = &парамРегистратор и Работники.Физлицо = &парамФизлицо"; ДополнительныеПараметрыЗапросаНДФЛ = Новый Структура; ДополнительныеПараметрыЗапросаНДФЛ.Вставить("парамФизлицо", Физлицо); Иначе СписокФизлицТекст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | Работники.Физлицо КАК Физлицо |ИЗ | Документ.НачислениеЗарплатыРаботникамОрганизаций.НДФЛ КАК Работники | |ГДЕ | Работники.Ссылка = &парамРегистратор"; ДополнительныеПараметрыЗапросаНДФЛ = Неопределено; КонецЕсли; // получение результата НДФЛ по ставке 13 процентов // для него передается Организация, период и ссылка на регистратор ВыборкаПодразделений = ""; ДанныеНДФЛ = ПроведениеРасчетов.ПолучитьДанныеНДФЛПоРегистратору(Неопределено, Неопределено, ПериодРегистрации, Организация, ШапкаДокумента.ГоловнаяОрганизация, Ссылка, СписокФизлицТекст, ДополнительныеПараметрыЗапросаНДФЛ, , КомментироватьРасчет, ВыборкаПодразделений); Если ДанныеНДФЛ <> Неопределено Тогда Если НЕ (Физлицо = Неопределено) Тогда // считаем одно физлицо ФизлицаСписок = Новый СписокЗначений; ФизлицаСписок.Добавить(Физлицо); Иначе // считаем всех ФизлицаСписок = НеОпределено; КонецЕсли; ЗаполнитьНаборЗаписейПоДаннымНДФЛ(, ДанныеНДФЛ, ШапкаДокумента, ,ФизлицаСписок, КомментироватьРасчет, ВыборкаПодразделений); КонецЕсли; /////////////// // Распределяем НДФЛ по источникам финансирования РаспределитьНДФЛПоИФ(ШапкаДокумента, Физлицо); // Конец распределения удержаний по источникам финансирования /////////////// // Восстановим состояние регистра доходов НаборНДФЛСведенияОДоходах.Загрузить(ТаблицаДоходов); НаборНДФЛСведенияОДоходах.Записать(); КонецПроцедуры // РассчитатьНДФЛ // Процедура рассчитывает ресурсы удержаний и заполняет // реквизиты Результат табличной части документа // Процедура РассчитатьУдержания(ШапкаДокумента = Неопределено, ВыборкаПоУдержаниям = Неопределено, Физлицо = Неопределено, КомментироватьРасчет = Ложь) Экспорт Отказ = Ложь; Если Физлицо = Неопределено Тогда МассивИндексыСтрокУдержания = Неопределено; Иначе МассивИндексыСтрокУдержания = Новый Массив(); КонецЕсли; Если ШапкаДокумента = Неопределено Тогда // Перечитаем объект и соберем данные для заполнения наборов записей регистров НачатьТранзакцию(); Прочитать(); ШапкаДокумента = ПолучитьШапкуДокумента(); ВыборкаПоУдержаниям = СформироватьЗапросПоУдержания(ШапкаДокумента, ?(Физлицо = Неопределено, Неопределено, Удержания.НайтиСтроки(Новый Структура("ФизЛицо", Физлицо)))).Выбрать(); ЗафиксироватьТранзакцию(); КонецЕсли; НаборУдержания = РегистрыРасчета.УдержанияРаботниковОрганизаций.СоздатьНаборЗаписей(); НаборУдержания.Отбор.Регистратор.Значение = Ссылка; НаборНДФЛРасчетыСБюджетом = РегистрыНакопления.НДФЛРасчетыСБюджетом.СоздатьНаборЗаписей(); НаборНДФЛРасчетыСБюджетом.Отбор.Регистратор.Значение = Ссылка; НаборОсновныеНачисления = РегистрыРасчета.ОсновныеНачисленияРаботниковОрганизаций.СоздатьНаборЗаписей(); НаборОсновныеНачисления.Отбор.Регистратор.Значение = Ссылка; НаборДопНачисления = РегистрыРасчета.ДополнительныеНачисленияРаботниковОрганизаций.СоздатьНаборЗаписей(); НаборДопНачисления.Отбор.Регистратор.Значение = Ссылка; // сформируем движения основных начислений по данным табличной части ВыборкаПоНачислениям = СформироватьЗапросПоНачисления(ШапкаДокумента, ?(Физлицо = Неопределено, Неопределено, Начисления.НайтиСтроки(Новый Структура("ФизЛицо", Физлицо)))).Выбрать(); Пока ВыборкаПоНачислениям.Следующий() Цикл ПроверитьЗаполнениеСтрокиНачисления(ВыборкаПоНачислениям, Отказ); Если НЕ Отказ Тогда ДобавитьСтрокуОсновныхНачислений(ВыборкаПоНачислениям, ШапкаДокумента, НаборОсновныеНачисления); КонецЕсли; КонецЦикла; мСоответствиеДоходовИВычетов = ПроведениеРасчетов.ПолучитьСоответствиеДоходовИВычетов(); ВыборкаПоДоговорам = СформироватьЗапросПоДоговорам(ШапкаДокумента).Выбрать(); Пока ВыборкаПоДоговорам.Следующий() Цикл ПроверитьЗаполнениеСтрокиДоговора(ВыборкаПоДоговорам, Отказ); Если НЕ Отказ Тогда ДобавитьСтрокуДоговора(ВыборкаПоДоговорам, ШапкаДокумента, НаборДопНачисления); КонецЕсли; КонецЦикла; // сформируем движения дополнительных начислений по данным табличной части ВыборкаПоДопНачислениям = СформироватьЗапросПоДопНачисления(ШапкаДокумента, ?(Физлицо = Неопределено, Неопределено, ДополнительныеНачисления.НайтиСтроки(Новый Структура("ФизЛицо", Физлицо)))).Выбрать(); Пока ВыборкаПоДопНачислениям.Следующий() Цикл ПроверитьЗаполнениеСтрокиДопНачисления(ВыборкаПоДопНачислениям, Отказ); Если НЕ Отказ Тогда ДобавитьСтрокуДопНачислений(ВыборкаПоДопНачислениям, ШапкаДокумента, НаборДопНачисления); КонецЕсли; КонецЦикла; // сформируем движения НДФЛ по данным табличной части ПроверитьЗаполнениеНДФЛ(Отказ, ОбщегоНазначения.ПредставлениеДокументаПриПроведении(Ссылка)); ЗаполнитьНаборЗаписейНДФЛПоНачислениям(ШапкаДокумента, НаборНДФЛРасчетыСБюджетом); // сформируем движения удержаний по данным табличной части без записи (запись делается процедурой РассчитатьЗаписиРегистраРасчета) Пока ВыборкаПоУдержаниям.Следующий() Цикл ПроверитьЗаполнениеСтрокиУдержания(ВыборкаПоУдержаниям, Отказ); Если НЕ Отказ Тогда ДобавитьСтрокуУдержаний(ВыборкаПоУдержаниям, ШапкаДокумента, НаборУдержания); Если НЕ Физлицо = Неопределено Тогда МассивИндексыСтрокУдержания.Добавить(ВыборкаПоУдержаниям.НомерСтроки - 1); КонецЕсли; КонецЕсли; КонецЦикла; Если Отказ Тогда Возврат; КонецЕсли; // перед тем как начать расчет, сформированные движения надо записать - // по ним чуть позже будем получать дополнительные данные для расчетов Для Каждого Набор Из Движения Цикл ПроверяемыйТип = ТипЗнч(Набор); Если ПроверяемыйТип = Тип("РегистрРасчетаНаборЗаписей.ОсновныеНачисленияРаботниковОрганизаций") Тогда НаборОсновныеНачисления.Записать(Истина, Ложь, Истина, Ложь); ИначеЕсли ПроверяемыйТип = Тип("РегистрРасчетаНаборЗаписей.ДополнительныеНачисленияРаботниковОрганизаций") Тогда НаборДопНачисления.Записать(); ИначеЕсли ПроверяемыйТип = Тип("РегистрНакопленияНаборЗаписей.НДФЛРасчетыСБюджетом") Тогда НаборНДФЛРасчетыСБюджетом.Записать(); КонецЕсли; КонецЦикла; // удержания - в последнюю очередь ПроведениеРасчетовПереопределяемый.РассчитатьЗаписиРегистраРасчета("УдержанияРаботниковОрганизаций", НаборУдержания, , , ШапкаДокумента.ГоловнаяОрганизация, ШапкаДокумента.ОбособленноеПодразделение, Удержания, , МассивИндексыСтрокУдержания, Физлицо, КомментироватьРасчет); /////////////// // Распределяем удержания по источникам финансирования НаборУдержания.Записать(Истина, Ложь, Истина, Ложь); РаспределитьУдержанияПоИФ(ШапкаДокумента, ФизЛицо); // Конец распределения удержаний по источникам финансирования /////////////// // Удаляем движения Для Каждого Набор Из Движения Цикл ПроверяемыйТип = ТипЗнч(Набор); Если ПроверяемыйТип = Тип("РегистрРасчетаНаборЗаписей.ОсновныеНачисленияРаботниковОрганизаций") Тогда НаборОсновныеНачисления.Очистить(); НаборОсновныеНачисления.Записать(Истина, Ложь, Истина, Ложь); ИначеЕсли ПроверяемыйТип = Тип("РегистрРасчетаНаборЗаписей.ДополнительныеНачисленияРаботниковОрганизаций") Тогда НаборДопНачисления.Очистить(); НаборДопНачисления.Записать(); ИначеЕсли ПроверяемыйТип = Тип("РегистрНакопленияНаборЗаписей.НДФЛРасчетыСБюджетом") Тогда НаборНДФЛРасчетыСБюджетом.Очистить(); НаборНДФЛРасчетыСБюджетом.Записать(); ИначеЕсли ПроверяемыйТип = Тип("РегистрРасчетаНаборЗаписей.УдержанияРаботниковОрганизаций") Тогда НаборУдержания.Очистить(); НаборУдержания.Записать(); КонецЕсли; КонецЦикла; КонецПроцедуры // РассчитатьУдержания() // Процедура рассчитывает ресурсы всех наборов записей и заполняет // реквизиты Результат всех табличных частей документа // Процедура РассчитатьВсе(Физлицо = Неопределено, КомментироватьРасчет = Ложь) Экспорт // Перечитаем объект и соберем данные для заполнения наборов записей регистров Если КомментироватьРасчет Тогда // удаление промежуточных движений выполняется не так как при "нормальном" расчете НачатьТранзакцию(); Прочитать(); ШапкаДокумента = ПолучитьШапкуДокумента(); ВыборкаПоНачислениям = СформироватьЗапросПоНачисления(ШапкаДокумента, ?(Физлицо = Неопределено, Неопределено, Начисления.НайтиСтроки(Новый Структура("ФизЛицо", Физлицо)))).Выбрать(); ВыборкаПоДопНачислениям = СформироватьЗапросПоДопНачисления(ШапкаДокумента, ?(Физлицо = Неопределено, Неопределено, ДополнительныеНачисления.НайтиСтроки(Новый Структура("ФизЛицо", Физлицо)))).Выбрать(); ВыборкаПоУдержаниям = СформироватьЗапросПоУдержания(ШапкаДокумента, ?(Физлицо = Неопределено, Неопределено, Удержания.НайтиСтроки(Новый Структура("ФизЛицо", Физлицо)))).Выбрать(); НачисленияРассчитаны = РассчитатьНачисления(ШапкаДокумента, ВыборкаПоНачислениям, ВыборкаПоДопНачислениям, Физлицо, КомментироватьРасчет); Если НачисленияРассчитаны Тогда Записать(); // для расчета НДФЛ нужно записать результаты расчета начислений РассчитатьНДФЛ(Физлицо, КомментироватьРасчет); Записать(); // для расчета удержаний нужно записать результаты расчета НДФЛ РассчитатьУдержания(ШапкаДокумента, ВыборкаПоУдержаниям, Физлицо, КомментироватьРасчет); КонецЕсли; // Удаляем движения по начислениям - ранее они не удалялисьь для комментирования // расчета НДФЛ и удержаний Для Каждого Набор Из Движения Цикл Если ТипЗнч(Набор)=Тип("РегистрРасчетаНаборЗаписей.ОсновныеНачисленияРаботниковОрганизаций") Тогда // Удаляем движения Набор.Очистить(); Набор.Записать(Истина, Ложь, Истина, Ложь); ИначеЕсли ТипЗнч(Набор)=Тип("РегистрРасчетаНаборЗаписей.ДополнительныеНачисленияРаботниковОрганизаций") Тогда // Удаляем движения Набор.Очистить(); Набор.Записать(); КонецЕсли; КонецЦикла; ЗафиксироватьТранзакцию(); Иначе НачатьТранзакцию(); Прочитать(); ШапкаДокумента = ПолучитьШапкуДокумента(); ВыборкаПоНачислениям = СформироватьЗапросПоНачисления(ШапкаДокумента, ?(Физлицо = Неопределено, Неопределено, Начисления.НайтиСтроки(Новый Структура("ФизЛицо", Физлицо)))).Выбрать(); ВыборкаПоДопНачислениям = СформироватьЗапросПоДопНачисления(ШапкаДокумента, ?(Физлицо = Неопределено, Неопределено, ДополнительныеНачисления.НайтиСтроки(Новый Структура("ФизЛицо", Физлицо)))).Выбрать(); ВыборкаПоУдержаниям = СформироватьЗапросПоУдержания(ШапкаДокумента, ?(Физлицо = Неопределено, Неопределено, Удержания.НайтиСтроки(Новый Структура("ФизЛицо", Физлицо)))).Выбрать(); ЗафиксироватьТранзакцию(); НачисленияРассчитаны = РассчитатьНачисления(ШапкаДокумента, ВыборкаПоНачислениям, ВыборкаПоДопНачислениям,Физлицо); Если НачисленияРассчитаны Тогда Записать(); // для расчета НДФЛ нужно записать результаты расчета начислений РассчитатьНДФЛ(Физлицо); Записать(); // для расчета удержаний нужно записать результаты расчета НДФЛ РассчитатьУдержания(ШапкаДокумента, ВыборкаПоУдержаниям, Физлицо); КонецЕсли; КонецЕсли; КонецПроцедуры // Рассчитать() // Выполняет перерасчет по заданному списку физлиц // Если передан пустой список физлиц - перерасчет не проводится // Если в качестве списка физлиц передан не массив, а Неопределено - перерасчет по всем физлицам // регистратора по которым требуется перерасчет // // Параметры // Физлица - список значений - ссылки на физлиц // Возвращаемое значение // Нет // Процедура Перерассчитать(Физлица = Неопределено) Экспорт // проверим можно ли что-то делать с документом ОписаниеПричиныОтказа = ""; Если ПроведениеРасчетов.ДокументНельзяИзменятьЗаднимЧислом(Ссылка, ОписаниеПричиныОтказа) Тогда ВызватьИсключение(ОписаниеПричиныОтказа); КонецЕсли; Если Не ПроведениеРасчетов.НеобходимостьПерерасчета(Ссылка) Тогда Возврат КонецЕсли; // получим список перерассчитываемых физлиц ФизлицаСписок = Новый СписокЗначений; Если Физлица = Неопределено Тогда // таблица ФизлицаДляПерерасчета // Список физлиц по которым необходимо выполнить перерасчет // Поля: // ФизЛицо // Описание: // Получает список неповторяющихся физлиц по которым есть записи // перерасчета в одной из таблиц перерасчета - по основным или дополнительным начислениям // ФизлицаДляПерерасчетаТекст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | Перерасчет.ФизЛицо |ИЗ | (ВЫБРАТЬ | Перерасчет.ФизЛицо | ИЗ | РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций.ПерерасчетОсновныхНачислений КАК Перерасчет | ГДЕ | Перерасчет.ОбъектПерерасчета = &парамРегистратор | | ОБЪЕДИНИТЬ ВСЕ | | ВЫБРАТЬ | Перерасчет.ФизЛицо | ИЗ | РегистрРасчета.ДополнительныеНачисленияРаботниковОрганизаций.ПерерасчетДополнительныхНачислений КАК Перерасчет | ГДЕ | Перерасчет.ОбъектПерерасчета = &парамРегистратор) КАК Перерасчет"; Запрос = Новый Запрос(ФизлицаДляПерерасчетаТекст); Запрос.УстановитьПараметр("парамРегистратор", Ссылка); ФизлицаСписок.ЗагрузитьЗначения(Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("ФизЛицо")); Иначе ФизлицаСписок = Физлица; КонецЕсли; // если не перерассчитываем никого - возврат Если ФизлицаСписок.Количество()=0 Тогда Возврат КонецЕсли; // текст выбора списка физлиц для перерасчета НДФЛ СписокФизЛицДляРасчетаНДФЛТекст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | ФизическиеЛица.Ссылка КАК Физлицо |ИЗ | Справочник.ФизическиеЛица КАК ФизическиеЛица | |ГДЕ | ФизическиеЛица.Ссылка В(&парамФизлицаПерерасчета)"; ДополнительныеПараметрыЗапросаНДФЛ = Новый Структура; ДополнительныеПараметрыЗапросаНДФЛ.Вставить("парамФизлицаПерерасчета", ФизлицаСписок); // читаем все данные НачатьТранзакцию(); Прочитать(); ШапкаДокумента = ПолучитьШапкуДокумента(); Движения.ОсновныеНачисленияРаботниковОрганизаций.Прочитать(); Движения.ДополнительныеНачисленияРаботниковОрганизаций.Прочитать(); Движения.УдержанияРаботниковОрганизаций.Прочитать(); Движения.НДФЛСведенияОДоходах.Прочитать(); Движения.ВзаиморасчетыСРаботникамиОрганизаций.Прочитать(); Движения.НДФЛРасчетыСБюджетом.Прочитать(); ЗафиксироватьТранзакцию(); //////////////////////////////////////////////////////////////////////// // Основные, дополнительные начисления и сведения о доходах НДФЛ // сначала удалим сведения о доходах НДФЛ по перерассчитываемым физлицам НДФЛСведенияОДоходах = Движения.НДФЛСведенияОДоходах; ПоследнееДвижение = НДФЛСведенияОДоходах.Количество()-1; Для Сч = 0 По ПоследнееДвижение Цикл // удалим записи по всем физлицам полученного списка // обходим в обратном порядке Если ФизлицаСписок.НайтиПоЗначению(НДФЛСведенияОДоходах[ПоследнееДвижение - Сч].Физлицо) <> Неопределено Тогда НДФЛСведенияОДоходах.Удалить(ПоследнееДвижение - Сч); КонецЕсли; КонецЦикла; // перерассчитываем записи начислений // при этом передаем не только набор записей регистра расчета, но и набор записей регистра // накопления со сведениями об отработанном времени // а также таблицу значений в которую будет заполнять движения для НДФЛСведенияОДоходах ДвиженияНДФЛСведенияОДоходах = Движения.НДФЛСведенияОДоходах.Выгрузить();// фактически - создаем структуру таблицы значений ПроведениеРасчетовПереопределяемый.ПереРассчитатьЗаписиРегистраРасчета("ОсновныеНачисленияРаботниковОрганизаций", Движения.ОсновныеНачисленияРаботниковОрганизаций, Физлица, ДвиженияНДФЛСведенияОДоходах, Движения.РасчетСреднегоЗаработка, ШапкаДокумента.ГоловнаяОрганизация, ШапкаДокумента.ОбособленноеПодразделение, Начисления); // запишем без выполнения пересчета фактического периода действия Движения.ОсновныеНачисленияРаботниковОрганизаций.Записать(Истина, Истина); ПроведениеРасчетовПереопределяемый.ПереРассчитатьЗаписиРегистраРасчета("ДополнительныеНачисленияРаботниковОрганизаций", Движения.ДополнительныеНачисленияРаботниковОрганизаций, Физлица, ДвиженияНДФЛСведенияОДоходах, Движения.РасчетСреднегоЗаработка, ШапкаДокумента.ГоловнаяОрганизация, ШапкаДокумента.ОбособленноеПодразделение); // запишем набор Движения.ДополнительныеНачисленияРаботниковОрганизаций.Записать(Истина, Истина); ДополнительныеНачисления.Очистить(); Для каждого СтрокаДвижения Из Движения.ДополнительныеНачисленияРаботниковОрганизаций Цикл Если Не ЗначениеЗаполнено(СтрокаДвижения.ДокументОснование) Тогда СтрокаНачисления = ДополнительныеНачисления.Добавить(); ЗаполнитьЗначенияСвойств(СтрокаНачисления,СтрокаДвижения); СтрокаНачисления.ДатаНачала = СтрокаДвижения.БазовыйПериодНачало; СтрокаНачисления.ДатаОкончания = СтрокаДвижения.БазовыйПериодКонец; КонецЕсли; КонецЦикла; // запишем движения по доходам НДФЛ, которые формируются при ПереРассчитатьЗаписиРегистраРасчета ПроведениеРасчетов.СвернутьДвиженияНДФЛСведенияОДоходах(ДвиженияНДФЛСведенияОДоходах); Движения.НДФЛСведенияОДоходах.Загрузить(ДвиженияНДФЛСведенияОДоходах); Движения.НДФЛСведенияОДоходах.Записать(); //////////////////////////////////////////////////////////////////////// // НДФЛ Расчеты с бюджетом // перезаполним данные по исчисленному НДФЛ // сначала удалим сведения об исчисленном НДФЛ по перерассчитываемым физлицам ДвиженияНДФЛРасчетыСБюджетом = Движения.НДФЛРасчетыСБюджетом; ПоследнееДвижение = ДвиженияНДФЛРасчетыСБюджетом.Количество()-1; Для Сч = 0 По ПоследнееДвижение Цикл // удалим записи по всем физлицам полученного списка // обходим в обратном порядке Если ФизлицаСписок.НайтиПоЗначению(ДвиженияНДФЛРасчетыСБюджетом[ПоследнееДвижение - Сч].Физлицо) <> Неопределено Тогда ДвиженияНДФЛРасчетыСБюджетом.Удалить(ПоследнееДвижение - Сч); КонецЕсли; КонецЦикла; // перезаполним данные по исчисленному НДФЛ в табличной части // сначала удалим сведения об исчисленном НДФЛ по перерассчитываемым физлицам // удаляем строки после получения данных для расчета НДФЛ!! ПоследнееДвижение = НДФЛ.Количество()-1; Для Сч = 0 По ПоследнееДвижение Цикл // удалим записи по всем физлицам полученного списка // обходим в обратном порядке Если ФизлицаСписок.НайтиПоЗначению(НДФЛ[ПоследнееДвижение - Сч].Физлицо) <> Неопределено Тогда НДФЛ.Удалить(ПоследнееДвижение - Сч); КонецЕсли; КонецЦикла; // получение результата НДФЛ по ставке 13 процентов // для него передается Организация, период, ссылка на регистратор и список физлиц ВыборкаПодразделений = ""; ДанныеНДФЛ = ПроведениеРасчетов.ПолучитьДанныеНДФЛПоРегистратору(Неопределено, Неопределено, ПериодРегистрации, Организация, ШапкаДокумента.ГоловнаяОрганизация, Ссылка, СписокФизЛицДляРасчетаНДФЛТекст, ДополнительныеПараметрыЗапросаНДФЛ, Истина, , ВыборкаПодразделений); Если ДанныеНДФЛ <> Неопределено Тогда ЗаполнитьНаборЗаписейПоДаннымНДФЛ(Движения.НДФЛРасчетыСБюджетом, ДанныеНДФЛ, ШапкаДокумента, Истина, ФизлицаСписок, , ВыборкаПодразделений); КонецЕсли; Движения.НДФЛРасчетыСБюджетом.Записать(); // Распределяем НДФЛ по источникам финансирования РаспределитьНДФЛПоИФ(ШапкаДокумента, Физлица); //////////////////////////////////////////////////////////////////////// // удержания работников // в конце - перерасчет удержаний, так как им могут понадобиться данные расчета НДФЛ ПроведениеРасчетовПереопределяемый.ПереРассчитатьЗаписиРегистраРасчета("УдержанияРаботниковОрганизаций", Движения.УдержанияРаботниковОрганизаций, Физлица, , , ШапкаДокумента.ГоловнаяОрганизация, ШапкаДокумента.ОбособленноеПодразделение, Удержания); // запишем Движения.УдержанияРаботниковОрганизаций.Записать(Истина, Истина); // записываем документ перед вызовом процедур, использующих данные таблиц документа Записать(); //////////////////////////////////////////////////////////////////////// // взаиморасчеты с работниками // сначала удалим сведения о взаиморасчетах с работниками ВзаиморасчетыСРаботникамиОрганизаций = Движения.ВзаиморасчетыСРаботникамиОрганизаций; ПоследнееДвижение = ВзаиморасчетыСРаботникамиОрганизаций.Количество()-1; Для Сч = 0 По ПоследнееДвижение Цикл // удалим записи по всем физлицам полученного списка // обходим в обратном порядке Если ФизлицаСписок.НайтиПоЗначению(ВзаиморасчетыСРаботникамиОрганизаций[ПоследнееДвижение - Сч].Физлицо) <> Неопределено Тогда ВзаиморасчетыСРаботникамиОрганизаций.Удалить(ПоследнееДвижение - Сч); КонецЕсли; КонецЦикла; // теперь сформируем начисления к выплате по начислениям документа для перерассчитываемых работников СформироватьВзаиморасчетыСРаботниками(Истина, Физлица); Движения.ВзаиморасчетыСРаботникамиОрганизаций.Записать(); //////////////////////////////////////////////////////////////////////// // Удалим записи перерасчета по которым выполнен перерасчет ПроведениеРасчетов.УдалитьСведенияОПерерасчетеДокумента(Ссылка); КонецПроцедуры // Перерассчитать() Процедура ОчиститьТЧ() Экспорт Начисления.Очистить(); ДополнительныеНачисления.Очистить(); ДоговорыНаВыполнениеРабот.Очистить(); Удержания.Очистить(); НДФЛ.Очистить(); НачисленияПоИФ.Очистить(); ДополнительныеНачисленияПоИФ.Очистить(); УдержанияПоИФ.Очистить(); НДФЛПоИФ.Очистить(); КонецПроцедуры // ОчиститьТЧ() ///////// // Распределяет начисления документа по источникам финансирования // Процедура РаспределитьНачисленияПоИсточникамФинансирования() Экспорт // Получаем шапку документа ШапкаДокумента = ПолучитьШапкуДокумента(); // получаем начисления документа ВыборкаПоНачислениямОсн = СформироватьЗапросПоНачисления(ШапкаДокумента).Выбрать(); ВыборкаПоНачислениямДоп = СформироватьЗапросПоДопНачисления(ШапкаДокумента).Выбрать(); Отказ = Ложь; // Заголовок для сообщений об ошибках проведения. Заголовок = ОбщегоНазначения.ПредставлениеДокументаПриПроведении(Ссылка); // проверяем заполнения реквизитов шапки ПроверитьЗаполнениеШапки(ШапкаДокумента, Отказ, Заголовок); // проверяем заполнение начислений ПроверитьЗаполнениеНачислений(ШапкаДокумента, ВыборкаПоНачислениямОсн, Отказ, Заголовок); ПроверитьЗаполнениеДополнительныхНачислений(ШапкаДокумента, ВыборкаПоНачислениямДоп, Отказ, Заголовок); Если Отказ Тогда Возврат КонецЕсли; // Создаем набор записей регистра расчета НаборЗаписейОсн = РегистрыРасчета.ОсновныеНачисленияРаботниковОрганизаций.СоздатьНаборЗаписей(); НаборЗаписейОсн.Отбор.Регистратор.Установить(Ссылка); НаборЗаписейДоп = РегистрыРасчета.ДополнительныеНачисленияРаботниковОрганизаций.СоздатьНаборЗаписей(); НаборЗаписейДоп.Отбор.Регистратор.Установить(Ссылка); // создаем движения по начислениям ЗаполнитьДвижениеПоОсновнымНачислениям(НаборЗаписейОсн, ШапкаДокумента, ВыборкаПоНачислениямОсн, Истина); ЗаполнитьДвижениеПоДополнительнымНачислениям(НаборЗаписейДоп, ШапкаДокумента, ВыборкаПоНачислениямДоп, Истина); // Сохраняем набор записей //НаборЗаписейОсн.Записать(); //НаборЗаписейДоп.Записать(); НаборЗаписейОсн.Записать(Истина, Ложь, Истина, Ложь); НаборЗаписейДоп.Записать(Истина, Ложь, Истина, Ложь); // Распределяем движения документа РаспределитьНачисленияПоИФ(); ЗаполнитьОтражениеДоговоров(ШапкаДокумента); // Чистим за собой НаборЗаписейОсн.Очистить(); НаборЗаписейОсн.Записать(Истина, Ложь, Истина, Ложь); НаборЗаписейДоп.Очистить(); НаборЗаписейДоп.Записать(); КонецПроцедуры Процедура ЗаполнитьОтражениеДоговора(Договор) Экспорт ШапкаДокумента = ПолучитьШапкуДокумента(); Строки = Новый Массив(); Строки.Добавить(Договор); // Выгружаем строку ТЧ в таблицу значений ТаблицаДоговоров = ДоговорыНаВыполнениеРабот.Выгрузить(Строки); // Заполняем таблицу отражением по настройкам ОтражениеВУчете.ЗаполнитьНачисленияИсточникамиФинансирования( ТаблицаДоговоров, "ДатаНачала", Новый Структура("ОбособленноеПодразделение",ШапкаДокумента.ОбособленноеПодразделение)); Если ЗначениеЗаполнено(Договор.ДокументОснование) Тогда ЗаполнитьЗначенияСвойств(Договор, Договор.ДокументОснование.ПолучитьОбъект(), "КОСГУ, СтатьяФинансирования, СтатьяРасходов"); Иначе Договор.КОСГУ = Справочники.КОСГУ.ПустаяСсылка(); Договор.СтатьяФинансирования = Справочники.СтатьиФинансирования.ПустаяСсылка(); Договор.СтатьяРасходов = Справочники.СтатьиРасходов.ПустаяСсылка(); КонецЕсли; Настройка = ТаблицаДоговоров.Найти(Договор.НомерСтроки, "НомерСтроки"); Если НЕ ЗначениеЗаполнено(Договор.КОСГУ) Тогда Договор.КОСГУ = Настройка.КОСГУ КонецЕсли; Если НЕ ЗначениеЗаполнено(Договор.СтатьяФинансирования) Тогда Договор.СтатьяФинансирования = Настройка.СтатьяФинансирования КонецЕсли; Если НЕ ЗначениеЗаполнено(Договор.СтатьяРасходов) Тогда Договор.СтатьяРасходов = Настройка.СтатьяРасходов КонецЕсли; КонецПроцедуры // Процедура распределяет существующий НДФЛ документа по источникам финансирования // Процедура РаспределитьНДФЛПоИсточникамФинансирования() Экспорт // Получим реквизиты шапки из запроса ШапкаДокумента = ПолучитьШапкуДокумента(); Отказ = Ложь; // Заголовок для сообщений об ошибках проведения. Заголовок = ОбщегоНазначения.ПредставлениеДокументаПриПроведении(Ссылка); // проверяем заполнения реквизитов шапки ПроверитьЗаполнениеШапки(ШапкаДокумента, Отказ, Заголовок); // проверяем заполнение начислений ПроверитьЗаполнениеНДФЛ(Отказ, Заголовок); Если Отказ Тогда Возврат КонецЕсли; НаборНДФЛСведенияОДоходах = Движения.НДФЛСведенияОДоходах; // Сохраним движения по регистру доходов ТаблицаДоходов = НаборНДФЛСведенияОДоходах.Выгрузить(); // сформируем и запишем доходы НДФЛ по начислениям документа НаборНДФЛСведенияОДоходах.Очистить(); СформироватьДоходыПоКодамНДФЛ(ШапкаДокумента, НаборНДФЛСведенияОДоходах); // по начислениям НаборНДФЛСведенияОДоходах.Записать(); // Определим распределение НДФЛ по ИФ РаспределитьНДФЛПоИФ(ШапкаДокумента); // Восстановим состояние регистра доходов НаборНДФЛСведенияОДоходах.Загрузить(ТаблицаДоходов); НаборНДФЛСведенияОДоходах.Записать(); КонецПроцедуры // РаспределитьНДФЛПоИсточникамФинансирования // Распределяет начисления документа по источникам финансирования // Процедура РаспределитьУдержанияПоИсточникамФинансирования() Экспорт // Получаем шапку документа ШапкаДокумента = ПолучитьШапкуДокумента(); // получаем начисления документа ВыборкаПоУдержаниям = СформироватьЗапросПоУдержания(ШапкаДокумента).Выбрать(); Отказ = Ложь; // Заголовок для сообщений об ошибках проведения. Заголовок = ОбщегоНазначения.ПредставлениеДокументаПриПроведении(Ссылка); // проверяем заполнения реквизитов шапки ПроверитьЗаполнениеШапки(ШапкаДокумента, Отказ, Заголовок); // проверяем заполнение начислений ПроверитьЗаполнениеУдержаний(ШапкаДокумента, ВыборкаПоУдержаниям, Отказ, Заголовок); Если Отказ Тогда Возврат КонецЕсли; // Создаем набор записей регистра расчета НаборЗаписей = РегистрыРасчета.УдержанияРаботниковОрганизаций.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Регистратор.Установить(Ссылка); // создаем движения по удержаниям ЗаполнитьДвижениеПоУдержаниям(НаборЗаписей, ШапкаДокумента, ВыборкаПоУдержаниям, Истина); // Сохраняем набор записей НаборЗаписей.Записать(); // Распределяем удержания документа РаспределитьУдержанияПоИФ(ШапкаДокумента); // Чистим за собой НаборЗаписей.Очистить(); НаборЗаписей.Записать(); КонецПроцедуры Процедура РаспределитьПоИсточникамФинансирования() Экспорт РаспределитьНачисленияПоИсточникамФинансирования(); РаспределитьНДФЛПоИсточникамФинансирования(); РаспределитьУдержанияПоИсточникамФинансирования(); КонецПроцедуры ///////// // Возвращает ключ связи основного начисления с его распределением // в виде структуры с полями связи // // Параметры: // СтрокаНачисления - строка начисления // // Возвращаемое значение: // Структура // Функция ПолучитьКлючОтраженияНачисления(СтрокаНачисления) Экспорт Ключ = Новый Структура( "Сотрудник, |ФизЛицо, |ВидРасчета, |ПериодДействияНачало, |ПериодДействияКонец, |ПодразделениеОрганизации, |Сторно"); Если ЗначениеЗаполнено(СтрокаНачисления) Тогда Ключ.Сотрудник = СтрокаНачисления.Сотрудник; Ключ.ФизЛицо = СтрокаНачисления.ФизЛицо; Ключ.ВидРасчета = СтрокаНачисления.ВидРасчета; Ключ.ПериодДействияНачало = СтрокаНачисления.ДатаНачала; Ключ.ПериодДействияКонец = КонецДня(СтрокаНачисления.ДатаОкончания); Ключ.ПодразделениеОрганизации = СтрокаНачисления.ПодразделениеОрганизации; Ключ.Сторно = СтрокаНачисления.Сторно; Иначе Ключ.Сотрудник = Справочники.СотрудникиОрганизаций.ПустаяСсылка(); Ключ.ФизЛицо = Справочники.ФизическиеЛица.ПустаяСсылка(); Ключ.ВидРасчета = ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.ПустаяСсылка(); Ключ.ПериодДействияНачало = '00010101'; Ключ.ПериодДействияКонец = '00010101'; Ключ.ПодразделениеОрганизации = ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.ПустаяСсылка(); Ключ.Сторно = Неопределено; КонецЕсли; Возврат Ключ КонецФункции // Возвращает ключ связи основного начисления с его распределением // в виде структуры с полями связи // // Параметры: // СтрокаНачисления - строка начисления // // Возвращаемое значение: // Структура // Функция ПолучитьКлючОтраженияДополнительногоНачисления(СтрокаНачисления) Экспорт Ключ = Новый Структура( "Сотрудник, |ФизЛицо, |ВидРасчета, //|БазовыйПериодНачало, //|БазовыйПериодКонец, |ПодразделениеОрганизации, |Сторно"); Если ЗначениеЗаполнено(СтрокаНачисления) Тогда Ключ.Сотрудник = СтрокаНачисления.Сотрудник; Ключ.ФизЛицо = СтрокаНачисления.ФизЛицо; Ключ.ВидРасчета = СтрокаНачисления.ВидРасчета; //Ключ.БазовыйПериодНачало = СтрокаНачисления.ДатаНачала; //Ключ.БазовыйПериодКонец = ?(Не ЗначениеЗаполнено(СтрокаНачисления.ДатаОкончания), СтрокаНачисления.ДатаОкончания, КонецДня(СтрокаНачисления.ДатаОкончания)); Ключ.ПодразделениеОрганизации = СтрокаНачисления.ПодразделениеОрганизации; Ключ.Сторно = СтрокаНачисления.Сторно; Иначе Ключ.Сотрудник = Справочники.СотрудникиОрганизаций.ПустаяСсылка(); Ключ.ФизЛицо = Справочники.ФизическиеЛица.ПустаяСсылка(); Ключ.ВидРасчета = ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.ПустаяСсылка(); //Ключ.БазовыйПериодНачало = '00010101'; //Ключ.БазовыйПериодКонец = '00010101'; Ключ.ПодразделениеОрганизации = ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.ПустаяСсылка(); Ключ.Сторно = Неопределено; КонецЕсли; Возврат Ключ КонецФункции // Возвращает ключ связи НДФЛ с его отражением // в виде структуры с полями связи // // Параметры: // СтрокаНачисления - строка начисления // // Возвращаемое значение: // Структура // Функция ПолучитьКлючОтраженияНДФЛ(СтрокаУдержания) Экспорт Ключ = Новый Структура( "ФизЛицо, |МесяцНалоговогоПериода"); Если ЗначениеЗаполнено(СтрокаУдержания) Тогда Ключ.ФизЛицо = СтрокаУдержания.ФизЛицо; Ключ.МесяцНалоговогоПериода = СтрокаУдержания.МесяцНалоговогоПериода; Иначе Ключ.ФизЛицо = Справочники.ФизическиеЛица.ПустаяСсылка(); Ключ.МесяцНалоговогоПериода = '00010101'; КонецЕсли; Возврат Ключ КонецФункции // Возвращает ключ связи удержания с его отражением // в виде структуры с полями связи // // Параметры: // СтрокаНачисления - строка начисления // // Возвращаемое значение: // Структура // Функция ПолучитьКлючОтраженияУдержания(СтрокаУдержания) Экспорт Ключ = Новый Структура( "ФизЛицо, |ВидРасчета, |Сторно"); Если ЗначениеЗаполнено(СтрокаУдержания) Тогда Ключ.ФизЛицо = СтрокаУдержания.ФизЛицо; Ключ.ВидРасчета = СтрокаУдержания.ВидРасчета; Ключ.Сторно = СтрокаУдержания.Сторно; Иначе Ключ.ФизЛицо = Справочники.ФизическиеЛица.ПустаяСсылка(); Ключ.ВидРасчета = ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.ПустаяСсылка(); Ключ.Сторно = Неопределено; КонецЕсли; Возврат Ключ КонецФункции // Возвращает данные начисления // // Параметры: // СтрокаНачисления - строка ТЧ Начисления // Функция ПолучитьДанныеНачисления(СтрокаНачисления) Экспорт Строки = Новый Массив(); Строки.Добавить(СтрокаНачисления); Возврат СформироватьЗапросПоНачисления(ПолучитьШапкуДокумента(), Строки).Выгрузить()[0]; КонецФункции // Возвращает данные начисления // // Параметры: // СтрокаНачисления - строка ТЧ Начисления // Функция ПолучитьДанныеДополнительногоНачисления(СтрокаНачисления) Экспорт Строки = Новый Массив(); Строки.Добавить(СтрокаНачисления); Возврат СформироватьЗапросПоДопНачисления(ПолучитьШапкуДокумента(), Строки).Выгрузить()[0]; КонецФункции // Возвращает данные удержания // // Параметры: // СтрокаНачисления - строка ТЧ Начисления // Функция ПолучитьДанныеУдержания(СтрокаУдержания) Экспорт Строки = Новый Массив(); Строки.Добавить(СтрокаУдержания); Возврат СформироватьЗапросПоУдержания(ПолучитьШапкуДокумента(), Строки).Выгрузить()[0]; КонецФункции // Возвращает данные удержания // // Параметры: // СтрокаНачисления - строка ТЧ Начисления // Функция ПолучитьДанныеНДФЛ(СтрокаНДФЛ) Экспорт ДанныеНДФЛ = Новый Структура( "НомерСтроки, |ФизЛицо, |МесяцНалоговогоПериода, |СтавкаНалогообложенияРезидента"); ЗаполнитьЗначенияСвойств(ДанныеНДФЛ, СтрокаНДФЛ); СтавкаНалогообложенияРезидента = Перечисления.НДФЛСтавкиНалогообложенияРезидента.Ставка13; Возврат ДанныеНДФЛ; КонецФункции //////////////////////////////////////////////////////////////////////////////// // ПРОЦЕДУРЫ И ФУНКЦИИ ОБЩЕГО НАЗНАЧЕНИЯ //Выполняет автоматическое заполнение показателей в строке // Процедура ЗаполнитьПоказателиСтроки(Сотрудник, ВидРасчета, НомерСтроки, Подразделение = Неопределено, ГоловнаяОрганизация, ИмяТЧ = "", ДатаНачала) Экспорт Запрос = Новый Запрос; Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц; Запрос.УстановитьПараметр("парамНачало" , НачалоМесяца(ДатаНачала)); Запрос.УстановитьПараметр("парамКонец" , КонецДня(ПериодНачисленияДатаОкончания)); Запрос.УстановитьПараметр("парамОрганизация" , Организация); Запрос.УстановитьПараметр("парамГоловнаяОрганизация", ГоловнаяОрганизация); Запрос.УстановитьПараметр("парамПодразделение" , Подразделение); Запрос.УстановитьПараметр("ВидРасчета",ВидРасчета); Запрос.УстановитьПараметр("Сотрудник",Сотрудник); Запрос.УстановитьПараметр("Организация",Организация); Запрос.УстановитьПараметр("Подразделение",Подразделение); Запрос.УстановитьПараметр("ПарамДатаОкончания",ПериодНачисленияДатаНачала); Запрос.УстановитьПараметр("парамДатаВалютногоУчета" , НачалоМесяца(ПериодНачисленияДатаНачала)); Запрос.УстановитьПараметр("парамВалютаРегламентУчета" , Константы.ВалютаРегламентированногоУчета.Получить()); Запрос.УстановитьПараметр("парамПериодРегистрации" , ДатаНачала); Если ИмяТЧ = "Начисления" Тогда ИмяТаблицыВР = "ОсновныеНачисленияОрганизаций"; Запрос.УстановитьПараметр("ФизЛицо",Сотрудник.ФизЛицо); ИначеЕсли ИмяТЧ = "ДополнительныеНачисления" Тогда ИмяТаблицыВР = "ДополнительныеНачисленияОрганизаций"; Запрос.УстановитьПараметр("ФизЛицо",Сотрудник.ФизЛицо); ИначеЕсли ИмяТЧ = "УдержанияОрганизаций" Тогда ИмяТаблицыВР = "УдержанияОрганизаций"; Запрос.УстановитьПараметр("ФизЛицо",Сотрудник); КонецЕсли; Запрос.Текст = " |ВЫБРАТЬ | ВР.Показатель КАК Показатель, | ВР.НомерСтроки, | ВР.Ссылка |ПОМЕСТИТЬ ВТПоказатели |ИЗ | ПланВидовРасчета."+ИмяТаблицыВР+".Показатели КАК ВР |ГДЕ | ВР.Ссылка = &ВидРасчета | И ВР.Ссылка.ПроизвольнаяФормулаРасчета | |ОБЪЕДИНИТЬ | |ВЫБРАТЬ | ВЫБОР | КОГДА ВР.СпособРасчета В (ЗНАЧЕНИЕ(Перечисление.СпособыРасчетаОплатыТруда.ПоМесячнойТарифнойСтавкеПоДням), ЗНАЧЕНИЕ(Перечисление.СпособыРасчетаОплатыТруда.ПоМесячнойТарифнойСтавкеПоЧасам)) | ТОГДА ЗНАЧЕНИЕ(Справочник.ПоказателиСхемМотивации.ТарифнаяСтавкаМесячная) | КОГДА ВР.СпособРасчета В (ЗНАЧЕНИЕ(Перечисление.СпособыРасчетаОплатыТруда.ПоЧасовойТарифнойСтавке), ЗНАЧЕНИЕ(Перечисление.СпособыРасчетаОплатыТруда.СдельныйЗаработок)) | ТОГДА ЗНАЧЕНИЕ(Справочник.ПоказателиСхемМотивации.ТарифнаяСтавкаЧасовая) | КОГДА ВР.СпособРасчета = ЗНАЧЕНИЕ(Перечисление.СпособыРасчетаОплатыТруда.ПоДневнойТарифнойСтавке) | ТОГДА ЗНАЧЕНИЕ(Справочник.ПоказателиСхемМотивации.ТарифнаяСтавкаДневная) | ИНАЧЕ Значение(Справочник.ПоказателиСхемМотивации.ПустаяСсылка) | КОНЕЦ КАК Показатель, | 1, | ВР.Ссылка |ИЗ | ПланВидовРасчета."+ИмяТаблицыВР+" КАК ВР |ГДЕ | ВР.Ссылка = &ВидРасчета | И НЕ ВР.ПроизвольнаяФормулаРасчета; |ВЫБРАТЬ | ОсновныеНачисленияОрганизацийПоказатели.Ссылка, | МАКСИМУМ(ВЫБОР | КОГДА ОсновныеНачисленияОрганизацийПоказатели.НомерСтроки = 1 | ТОГДА ОсновныеНачисленияОрганизацийПоказатели.Показатель | ИНАЧЕ NULL | КОНЕЦ) КАК Показатель1, | МАКСИМУМ(ВЫБОР | КОГДА ОсновныеНачисленияОрганизацийПоказатели.НомерСтроки = 2 | ТОГДА ОсновныеНачисленияОрганизацийПоказатели.Показатель | ИНАЧЕ NULL | КОНЕЦ) КАК Показатель2, | МАКСИМУМ(ВЫБОР | КОГДА ОсновныеНачисленияОрганизацийПоказатели.НомерСтроки = 3 | ТОГДА ОсновныеНачисленияОрганизацийПоказатели.Показатель | ИНАЧЕ NULL | КОНЕЦ) КАК Показатель3, | МАКСИМУМ(ВЫБОР | КОГДА ОсновныеНачисленияОрганизацийПоказатели.НомерСтроки = 4 | ТОГДА ОсновныеНачисленияОрганизацийПоказатели.Показатель | ИНАЧЕ NULL | КОНЕЦ) КАК Показатель4, | МАКСИМУМ(ВЫБОР | КОГДА ОсновныеНачисленияОрганизацийПоказатели.НомерСтроки = 5 | ТОГДА ОсновныеНачисленияОрганизацийПоказатели.Показатель | ИНАЧЕ NULL | КОНЕЦ) КАК Показатель5, | МАКСИМУМ(ВЫБОР | КОГДА ОсновныеНачисленияОрганизацийПоказатели.НомерСтроки = 6 | ТОГДА ОсновныеНачисленияОрганизацийПоказатели.Показатель | ИНАЧЕ NULL | КОНЕЦ) КАК Показатель6 |ПОМЕСТИТЬ ВТОсновныеНачисленияОрганизацийПоказатели |ИЗ | ПланВидовРасчета.ОсновныеНачисленияОрганизаций.Показатели КАК ОсновныеНачисленияОрганизацийПоказатели |ГДЕ | ОсновныеНачисленияОрганизацийПоказатели.Показатель В (ВЫБРАТЬ Показатель ИЗ ВТПоказатели) | |СГРУППИРОВАТЬ ПО | ОсновныеНачисленияОрганизацийПоказатели.Ссылка |ИНДЕКСИРОВАТЬ ПО | Ссылка; |ВЫБРАТЬ | УдержанияОрганизацийПоказатели.Ссылка, | МАКСИМУМ(ВЫБОР | КОГДА УдержанияОрганизацийПоказатели.НомерСтроки = 1 | ТОГДА УдержанияОрганизацийПоказатели.Показатель | ИНАЧЕ NULL | КОНЕЦ) КАК Показатель1, | МАКСИМУМ(ВЫБОР | КОГДА УдержанияОрганизацийПоказатели.НомерСтроки = 2 | ТОГДА УдержанияОрганизацийПоказатели.Показатель | ИНАЧЕ NULL | КОНЕЦ) КАК Показатель2, | МАКСИМУМ(ВЫБОР | КОГДА УдержанияОрганизацийПоказатели.НомерСтроки = 3 | ТОГДА УдержанияОрганизацийПоказатели.Показатель | ИНАЧЕ NULL | КОНЕЦ) КАК Показатель3, | МАКСИМУМ(ВЫБОР | КОГДА УдержанияОрганизацийПоказатели.НомерСтроки = 4 | ТОГДА УдержанияОрганизацийПоказатели.Показатель | ИНАЧЕ NULL | КОНЕЦ) КАК Показатель4, | МАКСИМУМ(ВЫБОР | КОГДА УдержанияОрганизацийПоказатели.НомерСтроки = 5 | ТОГДА УдержанияОрганизацийПоказатели.Показатель | ИНАЧЕ NULL | КОНЕЦ) КАК Показатель5, | МАКСИМУМ(ВЫБОР | КОГДА УдержанияОрганизацийПоказатели.НомерСтроки = 6 | ТОГДА УдержанияОрганизацийПоказатели.Показатель | ИНАЧЕ NULL | КОНЕЦ) КАК Показатель6 |ПОМЕСТИТЬ ВТУдержанияОрганизацийПоказатели |ИЗ | ПланВидовРасчета.УдержанияОрганизаций.Показатели КАК УдержанияОрганизацийПоказатели |ГДЕ | УдержанияОрганизацийПоказатели.Показатель В (ВЫБРАТЬ Показатель ИЗ ВТПоказатели) | |СГРУППИРОВАТЬ ПО | УдержанияОрганизацийПоказатели.Ссылка |ИНДЕКСИРОВАТЬ ПО | Ссылка |; | | |ВЫБРАТЬ | ОсновныеНачисленияОрганизацийПоказатели.Показатель КАК Показатель, | ОсновныеНачисленияОрганизацийПоказатели.Показатель.ВозможностьИзменения, | ОсновныеНачисленияОрганизацийПоказатели.НомерСтроки КАК НомерСтроки, | ОсновныеНачисленияОрганизацийПоказатели.Ссылка КАК Ссылка, | ВЫБОР | КОГДА ОсновныеНачисленияОрганизацийПоказатели.Показатель = ЗНАЧЕНИЕ(Справочник.ПоказателиСхемМотивации.ТарифнаяСтавкаМесячная) | ТОГДА ИСТИНА | КОГДА ОсновныеНачисленияОрганизацийПоказатели.Показатель = ЗНАЧЕНИЕ(Справочник.ПоказателиСхемМотивации.ТарифнаяСтавкаДневная) | ТОГДА ИСТИНА | КОГДА ОсновныеНачисленияОрганизацийПоказатели.Показатель = ЗНАЧЕНИЕ(Справочник.ПоказателиСхемМотивации.ТарифнаяСтавкаЧасовая) | ТОГДА ИСТИНА | КОГДА ОсновныеНачисленияОрганизацийПоказатели.Показатель.ТарифнаяСтавка | ТОГДА ИСТИНА | ИНАЧЕ ЛОЖЬ | КОНЕЦ КАК ЭтоТарифнаяСтавка |ПОМЕСТИТЬ ВТНеЗапрашиваемыеПриКадровыхПеремещениях |ИЗ | ПланВидовРасчета.ОсновныеНачисленияОрганизаций.Показатели КАК ОсновныеНачисленияОрганизацийПоказатели |ГДЕ | ОсновныеНачисленияОрганизацийПоказатели.Ссылка = &ВидРасчета | И ((НЕ ОсновныеНачисленияОрганизацийПоказатели.ЗапрашиватьПриКадровыхПеремещениях) | ИЛИ ОсновныеНачисленияОрганизацийПоказатели.Показатель = ЗНАЧЕНИЕ(Справочник.ПоказателиСхемМотивации.ТарифнаяСтавкаМесячная) | ИЛИ ОсновныеНачисленияОрганизацийПоказатели.Показатель = ЗНАЧЕНИЕ(Справочник.ПоказателиСхемМотивации.ТарифнаяСтавкаДневная) | ИЛИ ОсновныеНачисленияОрганизацийПоказатели.Показатель = ЗНАЧЕНИЕ(Справочник.ПоказателиСхемМотивации.ТарифнаяСтавкаЧасовая) | ИЛИ ОсновныеНачисленияОрганизацийПоказатели.Показатель.ТарифнаяСтавка) | И ОсновныеНачисленияОрганизацийПоказатели.Показатель.ВозможностьИзменения <> ЗНАЧЕНИЕ(Перечисление.ИзменениеПоказателейСхемМотивации.Ежемесячно) | |ОБЪЕДИНИТЬ | |ВЫБРАТЬ | ДополнительныеНачисленияОрганизацийПоказатели.Показатель, | ДополнительныеНачисленияОрганизацийПоказатели.Показатель.ВозможностьИзменения, | ДополнительныеНачисленияОрганизацийПоказатели.НомерСтроки, | ДополнительныеНачисленияОрганизацийПоказатели.Ссылка, | ВЫБОР | КОГДА ДополнительныеНачисленияОрганизацийПоказатели.Показатель = ЗНАЧЕНИЕ(Справочник.ПоказателиСхемМотивации.ТарифнаяСтавкаМесячная) | ТОГДА ИСТИНА | КОГДА ДополнительныеНачисленияОрганизацийПоказатели.Показатель = ЗНАЧЕНИЕ(Справочник.ПоказателиСхемМотивации.ТарифнаяСтавкаДневная) | ТОГДА ИСТИНА | КОГДА ДополнительныеНачисленияОрганизацийПоказатели.Показатель = ЗНАЧЕНИЕ(Справочник.ПоказателиСхемМотивации.ТарифнаяСтавкаЧасовая) | ТОГДА ИСТИНА | КОГДА ДополнительныеНачисленияОрганизацийПоказатели.Показатель.ТарифнаяСтавка | ТОГДА ИСТИНА | ИНАЧЕ ЛОЖЬ | КОНЕЦ |ИЗ | ПланВидовРасчета.ДополнительныеНачисленияОрганизаций.Показатели КАК ДополнительныеНачисленияОрганизацийПоказатели |ГДЕ | ДополнительныеНачисленияОрганизацийПоказатели.Ссылка = &ВидРасчета | И ((НЕ ДополнительныеНачисленияОрганизацийПоказатели.ЗапрашиватьПриКадровыхПеремещениях) | ИЛИ ДополнительныеНачисленияОрганизацийПоказатели.Показатель = ЗНАЧЕНИЕ(Справочник.ПоказателиСхемМотивации.ТарифнаяСтавкаМесячная) | ИЛИ ДополнительныеНачисленияОрганизацийПоказатели.Показатель = ЗНАЧЕНИЕ(Справочник.ПоказателиСхемМотивации.ТарифнаяСтавкаДневная) | ИЛИ ДополнительныеНачисленияОрганизацийПоказатели.Показатель = ЗНАЧЕНИЕ(Справочник.ПоказателиСхемМотивации.ТарифнаяСтавкаЧасовая) | ИЛИ ДополнительныеНачисленияОрганизацийПоказатели.Показатель.ТарифнаяСтавка) | И ДополнительныеНачисленияОрганизацийПоказатели.Показатель.ВозможностьИзменения <> ЗНАЧЕНИЕ(Перечисление.ИзменениеПоказателейСхемМотивации.Ежемесячно) | |ОБЪЕДИНИТЬ | |ВЫБРАТЬ | УдержанияОрганизацийПоказатели.Показатель, | УдержанияОрганизацийПоказатели.Показатель.ВозможностьИзменения, | УдержанияОрганизацийПоказатели.НомерСтроки, | УдержанияОрганизацийПоказатели.Ссылка, | ВЫБОР | КОГДА УдержанияОрганизацийПоказатели.Показатель = ЗНАЧЕНИЕ(Справочник.ПоказателиСхемМотивации.ТарифнаяСтавкаМесячная) | ТОГДА ИСТИНА | КОГДА УдержанияОрганизацийПоказатели.Показатель = ЗНАЧЕНИЕ(Справочник.ПоказателиСхемМотивации.ТарифнаяСтавкаДневная) | ТОГДА ИСТИНА | КОГДА УдержанияОрганизацийПоказатели.Показатель = ЗНАЧЕНИЕ(Справочник.ПоказателиСхемМотивации.ТарифнаяСтавкаЧасовая) | ТОГДА ИСТИНА | КОГДА УдержанияОрганизацийПоказатели.Показатель.ТарифнаяСтавка | ТОГДА ИСТИНА | ИНАЧЕ ЛОЖЬ | КОНЕЦ |ИЗ | ПланВидовРасчета.УдержанияОрганизаций.Показатели КАК УдержанияОрганизацийПоказатели |ГДЕ | УдержанияОрганизацийПоказатели.Ссылка = &ВидРасчета | И ((НЕ УдержанияОрганизацийПоказатели.ЗапрашиватьПриКадровыхПеремещениях) | ИЛИ УдержанияОрганизацийПоказатели.Показатель = ЗНАЧЕНИЕ(Справочник.ПоказателиСхемМотивации.ТарифнаяСтавкаМесячная) | ИЛИ УдержанияОрганизацийПоказатели.Показатель = ЗНАЧЕНИЕ(Справочник.ПоказателиСхемМотивации.ТарифнаяСтавкаДневная) | ИЛИ УдержанияОрганизацийПоказатели.Показатель = ЗНАЧЕНИЕ(Справочник.ПоказателиСхемМотивации.ТарифнаяСтавкаЧасовая) | ИЛИ УдержанияОрганизацийПоказатели.Показатель.ТарифнаяСтавка) | И УдержанияОрганизацийПоказатели.Показатель.ВозможностьИзменения <> ЗНАЧЕНИЕ(Перечисление.ИзменениеПоказателейСхемМотивации.Ежемесячно) | |ИНДЕКСИРОВАТЬ ПО | Показатель |; |ВЫБРАТЬ РАЗЛИЧНЫЕ | ОсновныеНачисленияОрганизаций.Ссылка КАК Ссылка, | ВЫБОР | КОГДА ОсновныеНачисленияОрганизаций.СпособРасчета В (ЗНАЧЕНИЕ(Перечисление.СпособыРасчетаОплатыТруда.ПоМесячнойТарифнойСтавкеПоДням), ЗНАЧЕНИЕ(Перечисление.СпособыРасчетаОплатыТруда.ПоМесячнойТарифнойСтавкеПоЧасам)) | ТОГДА ЗНАЧЕНИЕ(Справочник.ПоказателиСхемМотивации.ТарифнаяСтавкаМесячная) | КОГДА ОсновныеНачисленияОрганизаций.СпособРасчета В (ЗНАЧЕНИЕ(Перечисление.СпособыРасчетаОплатыТруда.ПоЧасовойТарифнойСтавке), ЗНАЧЕНИЕ(Перечисление.СпособыРасчетаОплатыТруда.СдельныйЗаработок)) | ТОГДА ЗНАЧЕНИЕ(Справочник.ПоказателиСхемМотивации.ТарифнаяСтавкаЧасовая) | ИНАЧЕ ЗНАЧЕНИЕ(Справочник.ПоказателиСхемМотивации.ТарифнаяСтавкаДневная) | КОНЕЦ КАК Показатель, | 1 КАК НомерСтроки, | ИСТИНА КАК ЭтоТарифнаяСтавка |ПОМЕСТИТЬ ВТВводимыеВПлановыхНачисленияхПоказатели |ИЗ | ПланВидовРасчета.ОсновныеНачисленияОрганизаций КАК ОсновныеНачисленияОрганизаций | ЛЕВОЕ СОЕДИНЕНИЕ( | ВЫБРАТЬ | Показатели.ЭтоТарифнаяСтавка | ИЗ | ВТНеЗапрашиваемыеПриКадровыхПеремещениях КАК Показатели | ГДЕ | Показатели.ЭтоТарифнаяСтавка) КАК ТекущиеПоказатели | ПО ТекущиеПоказатели.ЭтоТарифнаяСтавка |ГДЕ | ОсновныеНачисленияОрганизаций.СпособРасчета В (ЗНАЧЕНИЕ(Перечисление.СпособыРасчетаОплатыТруда.ПоМесячнойТарифнойСтавкеПоДням), ЗНАЧЕНИЕ(Перечисление.СпособыРасчетаОплатыТруда.ПоМесячнойТарифнойСтавкеПоЧасам), ЗНАЧЕНИЕ(Перечисление.СпособыРасчетаОплатыТруда.ПоЧасовойТарифнойСтавке), ЗНАЧЕНИЕ(Перечисление.СпособыРасчетаОплатыТруда.СдельныйЗаработок), ЗНАЧЕНИЕ(Перечисление.СпособыРасчетаОплатыТруда.ПоДневнойТарифнойСтавке)) | И ОсновныеНачисленияОрганизаций.ЗачетОтработанногоВремени | И ТекущиеПоказатели.ЭтоТарифнаяСтавка ЕСТЬ НЕ NULL | |ОБЪЕДИНИТЬ | |ВЫБРАТЬ РАЗЛИЧНЫЕ | ВР.Ссылка, | Значение(Справочник.ПоказателиСхемМотивации.ПустаяСсылка), | 1, | Ложь |ИЗ | ПланВидовРасчета."+ИмяТаблицыВР+" КАК ВР |ГДЕ | ВР.Ссылка = &ВидРасчета | И НЕ ВР.ПроизвольнаяФормулаРасчета | |ОБЪЕДИНИТЬ | |ВЫБРАТЬ РАЗЛИЧНЫЕ | ОсновныеНачисленияОрганизацийПоказатели.Ссылка, | ОсновныеНачисленияОрганизацийПоказатели.Показатель, | ОсновныеНачисленияОрганизацийПоказатели.НомерСтроки, | ИСТИНА |ИЗ | ПланВидовРасчета.ОсновныеНачисленияОрганизаций.Показатели КАК ОсновныеНачисленияОрганизацийПоказатели |ГДЕ | ОсновныеНачисленияОрганизацийПоказатели.Ссылка.ЗачетОтработанногоВремени | И ОсновныеНачисленияОрганизацийПоказатели.Показатель.ТарифнаяСтавка | И (НЕ ОсновныеНачисленияОрганизацийПоказатели.Показатель.Предопределенный) | |ОБЪЕДИНИТЬ | |ВЫБРАТЬ РАЗЛИЧНЫЕ | ОсновныеНачисленияОрганизацийПоказатели.Ссылка, | ОсновныеНачисленияОрганизацийПоказатели.Показатель, | ОсновныеНачисленияОрганизацийПоказатели.НомерСтроки, | ЛОЖЬ |ИЗ | ПланВидовРасчета.ОсновныеНачисленияОрганизаций.Показатели КАК ОсновныеНачисленияОрганизацийПоказатели |ГДЕ | ОсновныеНачисленияОрганизацийПоказатели.Показатель В | (ВЫБРАТЬ | ВТНеЗапрашиваемыеПриКадровыхПеремещениях.Показатель | ИЗ | ВТНеЗапрашиваемыеПриКадровыхПеремещениях) | И (НЕ ОсновныеНачисленияОрганизацийПоказатели.Показатель.ТарифнаяСтавка) | |ИНДЕКСИРОВАТЬ ПО | Ссылка | |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ | Начисления.ВидРасчета КАК ВидРасчета, | ВЫБОР | КОГДА Начисления.ВидРасчета.СпособРасчета В (ЗНАЧЕНИЕ(Перечисление.СпособыРасчетаОплатыТруда.ПоМесячнойТарифнойСтавкеПоДням), ЗНАЧЕНИЕ(Перечисление.СпособыРасчетаОплатыТруда.ПоМесячнойТарифнойСтавкеПоЧасам)) | ТОГДА ЗНАЧЕНИЕ(Справочник.ПоказателиСхемМотивации.ТарифнаяСтавкаМесячная) | КОГДА Начисления.ВидРасчета.СпособРасчета В (ЗНАЧЕНИЕ(Перечисление.СпособыРасчетаОплатыТруда.ПоЧасовойТарифнойСтавке), ЗНАЧЕНИЕ(Перечисление.СпособыРасчетаОплатыТруда.СдельныйЗаработок)) | ТОГДА ЗНАЧЕНИЕ(Справочник.ПоказателиСхемМотивации.ТарифнаяСтавкаЧасовая) | КОГДА Начисления.ВидРасчета.СпособРасчета = ЗНАЧЕНИЕ(Перечисление.СпособыРасчетаОплатыТруда.ПоДневнойТарифнойСтавке) | ТОГДА ЗНАЧЕНИЕ(Справочник.ПоказателиСхемМотивации.ТарифнаяСтавкаДневная) | ИНАЧЕ ОсновныеНачисленияОрганизацийПоказатели.Показатель1 | КОНЕЦ КАК ППоказатель1, | ОсновныеНачисленияОрганизацийПоказатели.Показатель2 КАК ППоказатель2, | ОсновныеНачисленияОрганизацийПоказатели.Показатель3 КАК ППоказатель3, | ОсновныеНачисленияОрганизацийПоказатели.Показатель4 КАК ППоказатель4, | ОсновныеНачисленияОрганизацийПоказатели.Показатель5 КАК ППоказатель5, | ОсновныеНачисленияОрганизацийПоказатели.Показатель6 КАК ППоказатель6, | ВЫБОР | КОГДА Начисления.ВидРасчета.ПроизвольнаяФормулаРасчета ТОГДА | ВЫБОР | КОГДА ОсновныеНачисленияОрганизацийПоказатели.Показатель1.ТипПоказателя = Значение(Перечисление.ТипыПоказателейСхемМотивации.ТарифныйРазряд) | ТОГДА ТарифныеРазряды1.Размер | ИНАЧЕ Начисления.Показатель1 | КОНЕЦ | КОГДА Начисления.ВидРасчета.ТребуетВводаТарифногоРазряда | ТОГДА ТарифныеРазряды1.Размер | ИНАЧЕ Начисления.Показатель1 | КОНЕЦ КАК Показатель1, | ВЫБОР КОГДА ОсновныеНачисленияОрганизацийПоказатели.Показатель2.ТипПоказателя = Значение(Перечисление.ТипыПоказателейСхемМотивации.ТарифныйРазряд) | ТОГДА ТарифныеРазряды2.Размер | ИНАЧЕ Начисления.Показатель2 | КОНЕЦ КАК Показатель2, | ВЫБОР КОГДА ОсновныеНачисленияОрганизацийПоказатели.Показатель3.ТипПоказателя = Значение(Перечисление.ТипыПоказателейСхемМотивации.ТарифныйРазряд) | ТОГДА ТарифныеРазряды3.Размер | ИНАЧЕ Начисления.Показатель3 | КОНЕЦ КАК Показатель3, | ВЫБОР КОГДА ОсновныеНачисленияОрганизацийПоказатели.Показатель4.ТипПоказателя = Значение(Перечисление.ТипыПоказателейСхемМотивации.ТарифныйРазряд) | ТОГДА ТарифныеРазряды4.Размер | ИНАЧЕ Начисления.Показатель4 | КОНЕЦ КАК Показатель4, | ВЫБОР КОГДА ОсновныеНачисленияОрганизацийПоказатели.Показатель5.ТипПоказателя = Значение(Перечисление.ТипыПоказателейСхемМотивации.ТарифныйРазряд) | ТОГДА ТарифныеРазряды5.Размер | ИНАЧЕ Начисления.Показатель5 | КОНЕЦ КАК Показатель5, | ВЫБОР КОГДА ОсновныеНачисленияОрганизацийПоказатели.Показатель6.ТипПоказателя = Значение(Перечисление.ТипыПоказателейСхемМотивации.ТарифныйРазряд) | ТОГДА ТарифныеРазряды6.Размер | ИНАЧЕ Начисления.Показатель6 | КОНЕЦ КАК Показатель6, | Начисления.Валюта1, | Начисления.Валюта2, | Начисления.Валюта3, | Начисления.Валюта4, | Начисления.Валюта5, | Начисления.Валюта6 |ПОМЕСТИТЬ ВТПлановые6 |ИЗ | РегистрСведений.ПлановыеНачисленияРаботниковОрганизаций.СрезПоследних( | &ПарамПериодРегистрации, | Организация = &ПарамОрганизация"; Если ИмяТЧ = "УдержанияОрганизаций" Тогда Запрос.Текст = Запрос.Текст + " | И Сотрудник.ФизЛицо = &Сотрудник"; Иначе Запрос.Текст = Запрос.Текст + " | И Сотрудник = &Сотрудник"; КонецЕсли; Запрос.Текст = Запрос.Текст + " | И ВидРасчета В | (ВЫБРАТЬ | ВТВводимыеВПлановыхНачисленияхПоказатели.Ссылка | ИЗ | ВТВводимыеВПлановыхНачисленияхПоказатели)) КАК Начисления | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РазмерТарифныхСтавок.СрезПоследних(&ПарамДатаОкончания, ) КАК ТарифныеРазряды1 | ПО Начисления.ТарифныйРазряд1 = ТарифныеРазряды1.ТарифныйРазряд | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РазмерТарифныхСтавок.СрезПоследних(&ПарамДатаОкончания, ) КАК ТарифныеРазряды2 | ПО Начисления.ТарифныйРазряд2 = ТарифныеРазряды2.ТарифныйРазряд | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РазмерТарифныхСтавок.СрезПоследних(&ПарамДатаОкончания, ) КАК ТарифныеРазряды3 | ПО Начисления.ТарифныйРазряд3 = ТарифныеРазряды3.ТарифныйРазряд | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РазмерТарифныхСтавок.СрезПоследних(&ПарамДатаОкончания, ) КАК ТарифныеРазряды4 | ПО Начисления.ТарифныйРазряд4 = ТарифныеРазряды4.ТарифныйРазряд | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РазмерТарифныхСтавок.СрезПоследних(&ПарамДатаОкончания, ) КАК ТарифныеРазряды5 | ПО Начисления.ТарифныйРазряд5 = ТарифныеРазряды5.ТарифныйРазряд | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РазмерТарифныхСтавок.СрезПоследних(&ПарамДатаОкончания, ) КАК ТарифныеРазряды6 | ПО Начисления.ТарифныйРазряд6 = ТарифныеРазряды6.ТарифныйРазряд | | ЛЕВОЕ СОЕДИНЕНИЕ ВТОсновныеНачисленияОрганизацийПоказатели КАК ОсновныеНачисленияОрганизацийПоказатели | ПО Начисления.ВидРасчета = ОсновныеНачисленияОрганизацийПоказатели.Ссылка |ГДЕ | Начисления.Показатель1 <>0 Или Начисления.Показатель2 <>0 Или Начисления.Показатель3 <>0 Или Начисления.Показатель4 <>0 Или Начисления.Показатель5 <>0 Или Начисления.Показатель6 <>0 | ИЛИ Начисления.ТарифныйРазряд1 <> Значение(Справочник.ТарифныеРазряды.ПустаяСсылка) ИЛИ Начисления.ТарифныйРазряд2 <> Значение(Справочник.ТарифныеРазряды.ПустаяСсылка) ИЛИ Начисления.ТарифныйРазряд3 <> Значение(Справочник.ТарифныеРазряды.ПустаяСсылка) | ИЛИ Начисления.ТарифныйРазряд4 <> Значение(Справочник.ТарифныеРазряды.ПустаяСсылка) ИЛИ Начисления.ТарифныйРазряд5 <> Значение(Справочник.ТарифныеРазряды.ПустаяСсылка) ИЛИ Начисления.ТарифныйРазряд6 <> Значение(Справочник.ТарифныеРазряды.ПустаяСсылка) | |ОБЪЕДИНИТЬ | |ВЫБРАТЬ | ПлановыеУдержанияРаботниковОрганизацийСрезПоследних.ВидРасчета, | УдержанияОрганизацийПоказатели.Показатель1 КАК ППоказатель1, | УдержанияОрганизацийПоказатели.Показатель2 КАК ППоказатель2, | УдержанияОрганизацийПоказатели.Показатель3 КАК ППоказатель3, | УдержанияОрганизацийПоказатели.Показатель4 КАК ППоказатель4, | УдержанияОрганизацийПоказатели.Показатель5 КАК ППоказатель5, | УдержанияОрганизацийПоказатели.Показатель6 КАК ППоказатель6, | ПлановыеУдержанияРаботниковОрганизацийСрезПоследних.Показатель1, | ПлановыеУдержанияРаботниковОрганизацийСрезПоследних.Показатель2, | ПлановыеУдержанияРаботниковОрганизацийСрезПоследних.Показатель3, | ПлановыеУдержанияРаботниковОрганизацийСрезПоследних.Показатель4, | ПлановыеУдержанияРаботниковОрганизацийСрезПоследних.Показатель5, | ПлановыеУдержанияРаботниковОрганизацийСрезПоследних.Показатель6, | ПлановыеУдержанияРаботниковОрганизацийСрезПоследних.Валюта1, | ПлановыеУдержанияРаботниковОрганизацийСрезПоследних.Валюта2, | ПлановыеУдержанияРаботниковОрганизацийСрезПоследних.Валюта3, | ПлановыеУдержанияРаботниковОрганизацийСрезПоследних.Валюта4, | ПлановыеУдержанияРаботниковОрганизацийСрезПоследних.Валюта5, | ПлановыеУдержанияРаботниковОрганизацийСрезПоследних.Валюта6 |ИЗ | РегистрСведений.ПлановыеУдержанияРаботниковОрганизаций.СрезПоследних( | &ПарамПериодРегистрации, | Организация = &ПарамОрганизация | И ФизЛицо = &ФизЛицо | И ВидРасчета В | (ВЫБРАТЬ | ВТВводимыеВПлановыхНачисленияхПоказатели.Ссылка | ИЗ | ВТВводимыеВПлановыхНачисленияхПоказатели)) КАК ПлановыеУдержанияРаботниковОрганизацийСрезПоследних | ЛЕВОЕ СОЕДИНЕНИЕ ВТУдержанияОрганизацийПоказатели КАК УдержанияОрганизацийПоказатели | ПО ПлановыеУдержанияРаботниковОрганизацийСрезПоследних.ВидРасчета = УдержанияОрганизацийПоказатели.Ссылка | |ГДЕ | ПлановыеУдержанияРаботниковОрганизацийСрезПоследних.Показатель1 <>0 Или ПлановыеУдержанияРаботниковОрганизацийСрезПоследних.Показатель2 <>0 Или ПлановыеУдержанияРаботниковОрганизацийСрезПоследних.Показатель3 <>0 Или ПлановыеУдержанияРаботниковОрганизацийСрезПоследних.Показатель4 <>0 Или ПлановыеУдержанияРаботниковОрганизацийСрезПоследних.Показатель5 <>0 Или ПлановыеУдержанияРаботниковОрганизацийСрезПоследних.Показатель6 <>0 | |; |ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ | Плановые.ВидРасчета КАК ВидРасчета, | Плановые.ППоказатель1 КАК ППоказатель, | Плановые.Показатель1 КАК Показатель, | Плановые.Валюта1 КАК Валюта |ПОМЕСТИТЬ ВТПлановые |ИЗ ВТПлановые6 КАК Плановые |ГДЕ Плановые.Показатель1 <> 0 | |ОБЪЕДИНИТЬ | |ВЫБРАТЬ | Плановые.ВидРасчета КАК ВидРасчета, | Плановые.ППоказатель2 КАК ППоказатель, | Плановые.Показатель2 КАК Показатель, | Плановые.Валюта2 КАК Валюта |ИЗ ВТПлановые6 КАК Плановые |ГДЕ Плановые.Показатель2 <> 0 | |ОБЪЕДИНИТЬ | |ВЫБРАТЬ | Плановые.ВидРасчета КАК ВидРасчета, | Плановые.ППоказатель3 КАК ППоказатель, | Плановые.Показатель3 КАК Показатель, | Плановые.Валюта3 КАК Валюта |ИЗ ВТПлановые6 КАК Плановые |ГДЕ Плановые.Показатель3 <> 0 | |ОБЪЕДИНИТЬ | |ВЫБРАТЬ | Плановые.ВидРасчета КАК ВидРасчета, | Плановые.ППоказатель4 КАК ППоказатель, | Плановые.Показатель4 КАК Показатель, | Плановые.Валюта4 КАК Валюта |ИЗ ВТПлановые6 КАК Плановые |ГДЕ Плановые.Показатель4 <> 0 | |ОБЪЕДИНИТЬ | |ВЫБРАТЬ | Плановые.ВидРасчета КАК ВидРасчета, | Плановые.ППоказатель5 КАК ППоказатель, | Плановые.Показатель5 КАК Показатель, | Плановые.Валюта5 КАК Валюта |ИЗ ВТПлановые6 КАК Плановые |ГДЕ Плановые.Показатель5 <> 0 | |ОБЪЕДИНИТЬ | |ВЫБРАТЬ | Плановые.ВидРасчета КАК ВидРасчета, | Плановые.ППоказатель6 КАК ППоказатель, | Плановые.Показатель6 КАК Показатель, | Плановые.Валюта6 КАК Валюта |ИЗ ВТПлановые6 КАК Плановые |ГДЕ Плановые.Показатель6 <> 0 | |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ЗначенияПоказателейСхемМотивации.Показатель КАК Показатель, | ЗначенияПоказателейСхемМотивации.Валюта, | ВЫБОР | КОГДА ЗначенияПоказателейСхемМотивации.Показатель.ТипПоказателя = ЗНАЧЕНИЕ(Перечисление.ТипыПоказателейСхемМотивации.Денежный) | И (НЕ ЗначенияПоказателейСхемМотивации.Валюта В (&парамВалютаРегламентУчета, ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка))) | ТОГДА ЗначенияПоказателейСхемМотивации.Значение * ЕСТЬNULL(Валюты.Курс / Валюты.Кратность, 0) | ИНАЧЕ ЗначенияПоказателейСхемМотивации.Значение | КОНЕЦ КАК Значение |ПОМЕСТИТЬ ВТЗначенияПоказателей |ИЗ | (ВЫБРАТЬ | Ежемесячно.Показатель КАК Показатель, | Ежемесячно.Валюта КАК Валюта, | Ежемесячно.Значение КАК Значение | ИЗ | РегистрСведений.ЗначенияПоказателейСхемМотивации КАК Ежемесячно | ГДЕ | Ежемесячно.Значение ЕСТЬ НЕ NULL | И Ежемесячно.Организация = &парамОрганизация | И Ежемесячно.ПериодДействия >= &парамНачало | И Ежемесячно.ПериодДействия <= &парамКонец | И Ежемесячно.Показатель В | (ВЫБРАТЬ | ВТПоказатели.Показатель | ИЗ | ВТПоказатели) | И ВЫБОР | КОГДА Ежемесячно.Показатель.ВидПоказателя = ЗНАЧЕНИЕ(Перечисление.ВидыПоказателейСхемМотивации.ПоПодразделению) | ТОГДА Ежемесячно.Подразделение = &Подразделение | КОГДА Ежемесячно.Показатель.ВидПоказателя = ЗНАЧЕНИЕ(Перечисление.ВидыПоказателейСхемМотивации.Индивидуальный)"; Если ИмяТЧ = "УдержанияОрганизаций" Тогда Запрос.Текст = Запрос.Текст + " | ТОГДА Ежемесячно.Сотрудник.ФизЛицо = &Сотрудник"; Иначе Запрос.Текст = Запрос.Текст + " | ТОГДА Ежемесячно.Сотрудник = &Сотрудник"; КонецЕсли; Запрос.Текст = Запрос.Текст + " | ИНАЧЕ ИСТИНА | КОНЕЦ | | ОБЪЕДИНИТЬ | | ВЫБРАТЬ | ПериодическиеЗначенияПоказателейСхемМотивацииСрезПоследних.Показатель, | ПериодическиеЗначенияПоказателейСхемМотивацииСрезПоследних.Валюта, | ПериодическиеЗначенияПоказателейСхемМотивацииСрезПоследних.Значение | ИЗ | РегистрСведений.ПериодическиеЗначенияПоказателейСхемМотивации.СрезПоследних( | &парамКонец, | Показатель В | (ВЫБРАТЬ | ВТПоказатели.Показатель | ИЗ | ВТПоказатели)) КАК ПериодическиеЗначенияПоказателейСхемМотивацииСрезПоследних | ГДЕ | ВЫБОР | КОГДА ПериодическиеЗначенияПоказателейСхемМотивацииСрезПоследних.Показатель.ВидПоказателя = ЗНАЧЕНИЕ(Перечисление.ВидыПоказателейСхемМотивации.ПоПодразделению) | ТОГДА ПериодическиеЗначенияПоказателейСхемМотивацииСрезПоследних.Подразделение = &Подразделение | КОГДА ПериодическиеЗначенияПоказателейСхемМотивацииСрезПоследних.Показатель.ВидПоказателя = ЗНАЧЕНИЕ(Перечисление.ВидыПоказателейСхемМотивации.Общий) | ТОГДА ПериодическиеЗначенияПоказателейСхемМотивацииСрезПоследних.Организация = &парамОрганизация | ИНАЧЕ ИСТИНА | КОНЕЦ | | ОБЪЕДИНИТЬ | | ВЫБРАТЬ | Плановые.ППоказатель, | Плановые.Валюта, | Плановые.Показатель | ИЗ | ВТПлановые КАК Плановые) КАК ЗначенияПоказателейСхемМотивации | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалютДляРасчетовСПерсоналом КАК Валюты | ПО (Валюты.Период = &парамДатаВалютногоУчета) | И ЗначенияПоказателейСхемМотивации.Валюта = Валюты.Валюта | |ГДЕ ЗначенияПоказателейСхемМотивации.Значение <> 0 | |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | Сумма(ЗначенияПоказателей1.Значение) КАК Показатель1, | Сумма(ЗначенияПоказателей2.Значение) КАК Показатель2, | Сумма(ЗначенияПоказателей3.Значение) КАК Показатель3, | Сумма(ЗначенияПоказателей4.Значение) КАК Показатель4, | Сумма(ЗначенияПоказателей5.Значение) КАК Показатель5, | Сумма(ЗначенияПоказателей6.Значение) КАК Показатель6 |ИЗ | ВТПоказатели КАК Показатели | ЛЕВОЕ СОЕДИНЕНИЕ ВТЗначенияПоказателей КАК ЗначенияПоказателей1 | ПО (ЗначенияПоказателей1.Показатель = Показатели.Показатель ИЛИ ЗначенияПоказателей1.Показатель = Значение(Справочник.ПоказателиСхемМотивации.ПустаяСсылка) ИЛИ ЗначенияПоказателей1.Показатель ЕСТЬ NULL) | И (Показатели.НомерСтроки = 1) | ЛЕВОЕ СОЕДИНЕНИЕ ВТЗначенияПоказателей КАК ЗначенияПоказателей2 | ПО (ЗначенияПоказателей2.Показатель = Показатели.Показатель) | И (Показатели.НомерСтроки = 2) | ЛЕВОЕ СОЕДИНЕНИЕ ВТЗначенияПоказателей КАК ЗначенияПоказателей3 | ПО (ЗначенияПоказателей3.Показатель = Показатели.Показатель) | И (Показатели.НомерСтроки = 3) | ЛЕВОЕ СОЕДИНЕНИЕ ВТЗначенияПоказателей КАК ЗначенияПоказателей4 | ПО (ЗначенияПоказателей4.Показатель = Показатели.Показатель) | И (Показатели.НомерСтроки = 4) | ЛЕВОЕ СОЕДИНЕНИЕ ВТЗначенияПоказателей КАК ЗначенияПоказателей5 | ПО (ЗначенияПоказателей5.Показатель = Показатели.Показатель) | И (Показатели.НомерСтроки = 5) | ЛЕВОЕ СОЕДИНЕНИЕ ВТЗначенияПоказателей КАК ЗначенияПоказателей6 | ПО (ЗначенияПоказателей6.Показатель = Показатели.Показатель) | И (Показатели.НомерСтроки = 6) |ГДЕ ЗначенияПоказателей1.Значение <> 0 ИЛИ ЗначенияПоказателей2.Значение <> 0 ИЛИ ЗначенияПоказателей3.Значение <> 0 ИЛИ ЗначенияПоказателей4.Значение <> 0 ИЛИ ЗначенияПоказателей5.Значение <> 0 ИЛИ ЗначенияПоказателей6.Значение <> 0 |"; Выборка = Запрос.Выполнить().Выбрать(); Если Выборка.Следующий() Тогда НомерСтроки = НомерСтроки - 1; Если ИмяТЧ = "Начисления" Тогда Для СчПоказателя = 1 По 6 Цикл Начисления[НомерСтроки]["Показатель"+СчПоказателя] = Выборка["Показатель"+СчПоказателя]; КонецЦикла; ИначеЕсли ИмяТЧ = "ДополнительныеНачисления" Тогда Для СчПоказателя = 1 По 6 Цикл ДополнительныеНачисления[НомерСтроки]["Показатель"+СчПоказателя] = Выборка["Показатель"+СчПоказателя]; КонецЦикла; ИначеЕсли ИмяТЧ = "УдержанияОрганизаций" Тогда Для СчПоказателя = 1 По 6 Цикл Удержания[НомерСтроки]["Показатель"+СчПоказателя] = Выборка["Показатель"+СчПоказателя]; КонецЦикла; КонецЕсли; КонецЕсли; КонецПроцедуры //ЗаполнитьПоказателиСтроки // Выполняет формирование таблицы значений для загрузки ее в табличную часть Начисления // Параметры: // Начисления - выборка результатат запроса // ПериодЗаполнения - дата периода для которого выполняем заполнение документа // // Возвращаемое значение: // таблица значений // Функция СформироватьТаблицуНачислений(Начисления, ОкончаниеПериодаЗаполнения, ВремТЗНачисления, МассивВалютСНезаданнымКурсом) ТЗНачисления = Новый ТаблицаЗначений(); ТЗНачисления.Колонки.Добавить("Сотрудник"); ТЗНачисления.Колонки.Добавить("Физлицо"); ТЗНачисления.Колонки.Добавить("ВидРасчета"); ТЗНачисления.Колонки.Добавить("КодВычета"); ТЗНачисления.Колонки.Добавить("Основное"); // Признак основного начисления ТЗНачисления.Колонки.Добавить("Показатель1"); ТЗНачисления.Колонки.Добавить("Показатель2"); ТЗНачисления.Колонки.Добавить("Показатель3"); ТЗНачисления.Колонки.Добавить("Показатель4"); ТЗНачисления.Колонки.Добавить("Показатель5"); ТЗНачисления.Колонки.Добавить("Показатель6"); ТЗНачисления.Колонки.Добавить("Размер"); ТЗНачисления.Колонки.Добавить("ДатаНачала", ОбщегоНазначения.ПолучитьОписаниеТиповДаты(ЧастиДаты.ДатаВремя)); ТЗНачисления.Колонки.Добавить("ДатаНачалаСобытия", ОбщегоНазначения.ПолучитьОписаниеТиповДаты(ЧастиДаты.ДатаВремя)); ТЗНачисления.Колонки.Добавить("ДатаОкончания", ОбщегоНазначения.ПолучитьОписаниеТиповДаты(ЧастиДаты.ДатаВремя)); ТЗНачисления.Колонки.Добавить("ПодразделениеОрганизации"); // для заполнения графика и вида учета времени ТЗНачисления.Колонки.Добавить("ГрафикРаботы"); ТЗНачисления.Колонки.Добавить("СуммированныйУчетРабочегоВремени"); ТЗНачисления.Колонки.Добавить("СпособРасчета"); ТЗНачисления.Колонки.Добавить("ВидВремени"); // Массив незакрытых строк таблицы значений, т.е. тех, которым не проставлена дата окончания НезакрытыеСтроки = Новый Массив; // Текущие значения полей выборки для отслеживания изменения работника и даты назначения ТекущийСотрудник = Справочники.СотрудникиОрганизаций.ПустаяСсылка(); ТекущаяДатаНазначения = '00010101'; ТекущаяЧасоваяСтавкаОсновногоНачисления = 0; // признаки того, что вечерние или ночные часы введены по плановым начислениям ЕстьПлановаяДоплатаЗаНочные = Ложь; ЕстьПлановаяДоплатаЗаВечерние = Ложь; СтрокиНачисленийТекущегоНазначения = Новый Массив; СтрокиВечернихТекущегоНазначения = Новый Массив; СтрокиНочныхТекущегоНазначения = Новый Массив; ДоплатыЗаНочныеВечерниеЧасы = ПолучитьДоплатыЗаНочныеВечерние(); ДоплатаЗаНочные = ДоплатыЗаНочныеВечерниеЧасы.ДоплатаЗаНочныеЧасы; ДоплатаЗаВечерние = ДоплатыЗаНочныеВечерниеЧасы.ДоплатаЗаВечерниеЧасы; ПроцентДоплатыЗаНочныеЧасы = ДоплатыЗаНочныеВечерниеЧасы.ПроцентДоплатыЗаНочныеЧасы; ПроцентДоплатыЗаВечерниеЧасы = ДоплатыЗаНочныеВечерниеЧасы.ПроцентДоплатыЗаВечерниеЧасы; Пока Начисления.Следующий() Цикл Если Начисления.Сотрудник <> ТекущийСотрудник Тогда // закрываем незакрытые строки начислений предыдущего работника концом месяца ЗакрытьСтроки(ТЗНачисления, НезакрытыеСтроки, ОкончаниеПериодаЗаполнения); Если ЕстьПлановаяДоплатаЗаНочные Тогда // удаляем те строки ночных часов, которые введены на основании табеля Для Каждого Строка Из СтрокиНочныхТекущегоНазначения Цикл ТЗНачисления.Удалить(Строка); КонецЦикла; КонецЕсли; Если ЕстьПлановаяДоплатаЗаВечерние Тогда // удаляем те строки вечерних часов, которые введены на основании табеля Для Каждого Строка Из СтрокиВечернихТекущегоНазначения Цикл ТЗНачисления.Удалить(Строка); КонецЦикла; КонецЕсли; // меняется текущий работник и дата его движения ТекущийСотрудник = Начисления.Сотрудник; ТекущаяДатаНазначения = Начисления.ПериодРаботники; ТекущаяЧасоваяСтавкаОсновногоНачисления = 0; СтрокиНачисленийТекущегоНазначения.Очистить(); СтрокиВечернихТекущегоНазначения.Очистить(); СтрокиНочныхТекущегоНазначения.Очистить(); ЕстьПлановаяДоплатаЗаНочные = Ложь; ЕстьПлановаяДоплатаЗаВечерние = Ложь; ИначеЕсли Начисления.ПериодРаботники <> ТекущаяДатаНазначения И (Начисления.НачисляетсяВЦеломЗаМесяц = Null Или (НЕ Начисления.НачисляетсяВЦеломЗаМесяц)) Тогда Для каждого СтрокаТекущегоНазначения Из СтрокиНачисленийТекущегоНазначения Цикл ИндексСтроки = 0; Для каждого СтрокаМассива Из НезакрытыеСтроки Цикл Если СтрокаМассива = СтрокаТекущегоНазначения Тогда НезакрытыеСтроки.Удалить(ИндексСтроки); Прервать; Иначе ИндексСтроки = ИндексСтроки + 1; КонецЕсли; КонецЦикла; КонецЦикла; // закрываем все строки предыдущего назначения датой предшествующей новому назначению ЗакрытьСтроки(ТЗНачисления, СтрокиНачисленийТекущегоНазначения, Начисления.ПериодРаботники - 1); // меняется текущая дата движения работника ТекущаяДатаНазначения = Начисления.ПериодРаботники; КонецЕсли; Если НЕ Начисления.Подходит ИЛИ Начисления.УжеПроведен Тогда // пропускаем такие записи: они уже введена другими документами или соответствуют окончанию назначения работника Продолжить; КонецЕсли; Если Начисления.Действие <> Перечисления.ВидыДействияСНачислением.Прекратить И НЕ Начисления.ТребуетВводаТарифногоРазряда Тогда Для Сч = 1 По 6 Цикл Если ЗначениеЗаполнено(Начисления["Валюта"+Сч]) И (Начисления["КурсВалюты"+Сч] = NULL ИЛИ Начисления["КурсВалюты"+Сч] = 0) Тогда МассивВалютСНезаданнымКурсом[Начисления["Валюта"+ Сч]] = Истина; КонецЕсли; КонецЦикла; КонецЕсли; // Расчет размера начисления // для вечерних и ночных часов размер в регистре плановых начислений сожержит процент оплаты от тарифа/оклада Если Начисления.ВидРасчета = ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.ДоплатаЗаВечерниеЧасы ИЛИ Начисления.ВидРасчета = ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.ДоплатаЗаНочныеЧасы Тогда Показатель1 = Начисления.Показатель1 / 100 * ТекущаяЧасоваяСтавкаОсновногоНачисления; Показатель2 = 0; Показатель3 = 0; Показатель4 = 0; Показатель5 = 0; Показатель6 = 0; Иначе // расчета не требуется Показатель1 = Начисления.Показатель1; Показатель2 = Начисления.Показатель2; Показатель3 = Начисления.Показатель3; Показатель4 = Начисления.Показатель4; Показатель5 = Начисления.Показатель5; Показатель6 = Начисления.Показатель6; КонецЕсли; // признак того, что вечерние и/или ночные часы введены по плановым начислениям Если Начисления.ВидРасчета = ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.ДоплатаЗаВечерниеЧасы Тогда ЕстьПлановаяДоплатаЗаВечерние = Истина; // удалим строки с веченими начислениями, введенными на основании графика, из // всех массивос строк Для Каждого Строка Из СтрокиВечернихТекущегоНазначения Цикл Для Счетчик = 0 По НезакрытыеСтроки.ВГраница() Цикл Если ТЗНачисления.Индекс(НезакрытыеСтроки[Счетчик]) = ТЗНачисления.Индекс(Строка) Тогда // нашли строку с вечерними, введенными на основании графика НезакрытыеСтроки.Удалить(Счетчик); Прервать; КонецЕсли; КонецЦикла; Для Счетчик = 0 По СтрокиНачисленийТекущегоНазначения.ВГраница() Цикл Если ТЗНачисления.Индекс(СтрокиНачисленийТекущегоНазначения[Счетчик]) = ТЗНачисления.Индекс(Строка) Тогда // нашли строку с вечерними, введенными на основании графика СтрокиНачисленийТекущегоНазначения.Удалить(Счетчик); Прервать; КонецЕсли; КонецЦикла; ТЗНачисления.Удалить(Строка); КонецЦикла; СтрокиВечернихТекущегоНазначения.Очистить(); КонецЕсли; Если Начисления.ВидРасчета = ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.ДоплатаЗаНочныеЧасы Тогда ЕстьПлановаяДоплатаЗаНочные = Истина; // удалим строки с ночными начислениями, введенными на основании графика, из // всех массивос строк Для Каждого Строка Из СтрокиНочныхТекущегоНазначения Цикл Для Счетчик = 0 По НезакрытыеСтроки.ВГраница() Цикл Если ТЗНачисления.Индекс(НезакрытыеСтроки[Счетчик]) = ТЗНачисления.Индекс(Строка) Тогда // нашли строку с вечерними, введенными на основании графика НезакрытыеСтроки.Удалить(Счетчик); Прервать; КонецЕсли; КонецЦикла; Для Счетчик = 0 По СтрокиНачисленийТекущегоНазначения.ВГраница() Цикл Если ТЗНачисления.Индекс(СтрокиНачисленийТекущегоНазначения[Счетчик]) = ТЗНачисления.Индекс(Строка) Тогда // нашли строку с вечерними, введенными на основании графика СтрокиНачисленийТекущегоНазначения.Удалить(Счетчик); Прервать; КонецЕсли; КонецЦикла; ТЗНачисления.Удалить(Строка); КонецЦикла; СтрокиНочныхТекущегоНазначения.Очистить(); КонецЕсли; // Сохраним размер основного начисления для расчета размера оплаты ночных и вечерних часов // (основное начисление в выборке должно идти раньше других видов расчета) Если Начисления.ОсновноеНачисление и Начисления.ВидРасчета <> Неопределено Тогда ТекущаяЧасоваяСтавкаОсновногоНачисления = Начисления.ЧасоваяТарифнаяСтавка; КонецЕсли; // Найдем такой же вид расчета среди незакрытых строк с целью завершения его действия Строки = Новый Массив; НайтиСредиНезакрытых(НезакрытыеСтроки, Начисления.ОсновноеНачисление, Начисления.ВидРасчета, Строки); ПрерватьОбход = Ложь; Если Строки.Количество() > 0 Тогда // нашли Для каждого Строка Из Строки Цикл Если Строка.ДатаНачала = Начисления.Период Тогда Если Начисления.Действие = Перечисления.ВидыДействияСНачислением.Прекратить Тогда ИндексСтроки = НезакрытыеСтроки.Найти(Строка); НезакрытыеСтроки.Удалить(ИндексСтроки); ИндексСтроки = 0; Для каждого СтрокаМассива Из СтрокиНачисленийТекущегоНазначения Цикл Если СтрокаМассива = Строка Тогда СтрокиНачисленийТекущегоНазначения.Удалить(ИндексСтроки); Прервать; Иначе ИндексСтроки = ИндексСтроки + 1; КонецЕсли; КонецЦикла; ТЗНачисления.Удалить(Строка); Иначе // если дата та же - новую строку в формируемую таблицу значений не вводим, а меняем данные // и оставляем строку "незакрытой" Строка.ВидРасчета = Начисления.ВидРасчета;// вид расчета необходимо переопределять для основного начисления Строка.ПодразделениеОрганизации = Начисления.ПодразделениеОрганизации; Строка.СпособРасчета = Начисления.СпособРасчета; Строка.ГрафикРаботы = Начисления.ГрафикРаботы; Строка.ДатаНачалаСобытия = Начисления.ДатаНачалаСобытия; Строка.СуммированныйУчетРабочегоВремени = Начисления.СуммированныйУчетРабочегоВремени; Строка.Показатель1 = Показатель1; Строка.Показатель2 = Показатель2; Строка.Показатель3 = Показатель3; Строка.Показатель4 = Показатель4; Строка.Показатель5 = Показатель5; Строка.Показатель6 = Показатель6; Если Начисления.ОсновноеНачисление Тогда // если это ОсновноеНачисление, то нужно подменить данные и в тех строках // ночных и вечерних, которые введены не основании графика Для Каждого Строка Из СтрокиВечернихТекущегоНазначения Цикл Для Каждого НезакрытаяСтрока Из НезакрытыеСтроки Цикл Если ТЗНачисления.Индекс(НезакрытаяСтрока) = ТЗНачисления.Индекс(Строка) Тогда // нашли строку с вечерними, введенными на основании графика Строка.Показатель1 = (Начисления.ЧасоваяТарифнаяСтавка * ПроцентДоплатыЗаВечерниеЧасы) / 100; КонецЕсли; КонецЦикла; КонецЦикла; Для Каждого Строка Из СтрокиНочныхТекущегоНазначения Цикл Для Каждого НезакрытаяСтрока Из НезакрытыеСтроки Цикл Если ТЗНачисления.Индекс(НезакрытаяСтрока) = ТЗНачисления.Индекс(Строка) Тогда // нашли строку с ночными, введенными на основании графика Строка.Показатель1 = (Начисления.ЧасоваяТарифнаяСтавка * ПроцентДоплатыЗаНочныеЧасы) / 100; КонецЕсли; КонецЦикла; КонецЦикла; КонецЕсли; КонецЕсли; ПрерватьОбход = Истина; ИначеЕсли Начисления.НачисляетсяВЦеломЗаМесяц = Null Или (НЕ Начисления.НачисляетсяВЦеломЗаМесяц) Тогда Если (Не ЗначениеЗаполнено(Строка.ДатаОкончания) Или Строка.ДатаОкончания > Начисления.Период-1) И Начисления.Период <> НачалоМесяца(Строка.ДатаНачала) Тогда Строка.ДатаОкончания = Начисления.Период-1; ИначеЕсли Начисления.Период = НачалоМесяца(Строка.ДатаНачала) Тогда Строка.ДатаОкончания = ОкончаниеПериодаЗаполнения; КонецЕсли; ИндексСтроки = НезакрытыеСтроки.Найти(Строка); НезакрытыеСтроки.Удалить(ИндексСтроки); Если Начисления.ОсновноеНачисление Тогда // если это ОсновноеНачисление, то нужно закрыть и те строки // ночных и вечерних, которые введены не основании графика Для Каждого СтрокаДоплаты Из СтрокиВечернихТекущегоНазначения Цикл Для Каждого НезакрытаяСтрока Из НезакрытыеСтроки Цикл Если ТЗНачисления.Индекс(НезакрытаяСтрока) = ТЗНачисления.Индекс(СтрокаДоплаты) Тогда // нашли строку с вечерними, введенными на основании графика Если (Не ЗначениеЗаполнено(СтрокаДоплаты.ДатаОкончания) Или СтрокаДоплаты.ДатаОкончания > Начисления.Период-1) И Начисления.Период <> НачалоМесяца(СтрокаДоплаты.ДатаНачала) Тогда СтрокаДоплаты.ДатаОкончания = Начисления.Период-1; ИначеЕсли Начисления.Период = НачалоМесяца(СтрокаДоплаты.ДатаНачала) Тогда СтрокаДоплаты.ДатаОкончания = ОкончаниеПериодаЗаполнения; КонецЕсли; ИндексСтроки = НезакрытыеСтроки.Найти(СтрокаДоплаты); НезакрытыеСтроки.Удалить(ИндексСтроки); КонецЕсли; КонецЦикла; КонецЦикла; Для Каждого СтрокаДоплаты Из СтрокиНочныхТекущегоНазначения Цикл Для Каждого НезакрытаяСтрока Из НезакрытыеСтроки Цикл Если ТЗНачисления.Индекс(НезакрытаяСтрока) = ТЗНачисления.Индекс(СтрокаДоплаты) Тогда // нашли строку с ночными, введенными на основании графика Если (Не ЗначениеЗаполнено(СтрокаДоплаты.ДатаОкончания) Или СтрокаДоплаты.ДатаОкончания > Начисления.Период-1) И Начисления.Период <> НачалоМесяца(СтрокаДоплаты.ДатаНачала) Тогда СтрокаДоплаты.ДатаОкончания = Начисления.Период-1; ИначеЕсли Начисления.Период = НачалоМесяца(СтрокаДоплаты.ДатаНачала) Тогда СтрокаДоплаты.ДатаОкончания = ОкончаниеПериодаЗаполнения; КонецЕсли; ИндексСтроки = НезакрытыеСтроки.Найти(СтрокаДоплаты); НезакрытыеСтроки.Удалить(ИндексСтроки); КонецЕсли; КонецЦикла; КонецЦикла; КонецЕсли; ИначеЕсли Начисления.ПериодНачисления = Начисления.Период Тогда Строка.ДатаОкончания = ОкончаниеПериодаЗаполнения; // удаляем из массива незакрытых - если пользователем был изменен размер начисления Если Начисления.Действие = Перечисления.ВидыДействияСНачислением.Изменить Тогда ИндексСтроки = НезакрытыеСтроки.Найти(Строка); НезакрытыеСтроки.Удалить(ИндексСтроки); КонецЕсли; Если Начисления.ОсновноеНачисление Тогда // если это ОсновноеНачисление, то нужно закрыть и те строки // ночных и вечерних, которые введены не основании графика Для Каждого СтрокаДоплаты Из СтрокиВечернихТекущегоНазначения Цикл Для Каждого НезакрытаяСтрока Из НезакрытыеСтроки Цикл Если ТЗНачисления.Индекс(НезакрытаяСтрока) = ТЗНачисления.Индекс(СтрокаДоплаты) Тогда // нашли строку с вечерними, введенными на основании графика СтрокаДоплаты.ДатаОкончания = ОкончаниеПериодаЗаполнения; // удаляем из массива незакрытых - если пользователем был изменен размер начисления Если Начисления.Действие = Перечисления.ВидыДействияСНачислением.Изменить Тогда ИндексСтроки = НезакрытыеСтроки.Найти(СтрокаДоплаты); НезакрытыеСтроки.Удалить(ИндексСтроки); КонецЕсли; КонецЕсли; КонецЦикла; КонецЦикла; Для Каждого СтрокаДоплаты Из СтрокиНочныхТекущегоНазначения Цикл Для Каждого НезакрытаяСтрока Из НезакрытыеСтроки Цикл Если ТЗНачисления.Индекс(НезакрытаяСтрока) = ТЗНачисления.Индекс(СтрокаДоплаты) Тогда // нашли строку с ночными, введенными на основании графика СтрокаДоплаты.ДатаОкончания = ОкончаниеПериодаЗаполнения; // удаляем из массива незакрытых - если пользователем был изменен размер начисления Если Начисления.Действие = Перечисления.ВидыДействияСНачислением.Изменить Тогда ИндексСтроки = НезакрытыеСтроки.Найти(СтрокаДоплаты); НезакрытыеСтроки.Удалить(ИндексСтроки); КонецЕсли; КонецЕсли; КонецЦикла; КонецЦикла; КонецЕсли; Иначе ПрерватьОбход = Истина; КонецЕсли; КонецЦикла; КонецЕсли; Если ПрерватьОбход Или Начисления.Действие = Перечисления.ВидыДействияСНачислением.Прекратить Тогда Продолжить; ИначеЕсли Начисления.НачисляетсяВЦеломЗаМесяц Тогда // проверем не введено ли данное начисление уже СтрокаПоиска= Новый Структура; СтрокаПоиска.Вставить("Сотрудник", Начисления.Сотрудник); СтрокаПоиска.Вставить("ВидРасчета", Начисления.ВидРасчета); НайденныеСтроки = ТЗНачисления.НайтиСтроки(СтрокаПоиска); Если НайденныеСтроки.Количество() > 0 Тогда Продолжить; КонецЕсли; КонецЕсли; // Добавим новую строку начислений НоваяСтрока = ТЗНачисления.Добавить(); НоваяСтрока.Сотрудник = Начисления.Сотрудник; НоваяСтрока.Физлицо = Начисления.Физлицо; НоваяСтрока.ВидРасчета = Начисления.ВидРасчета; НоваяСтрока.КодВычета = Начисления.КодВычета; Если ПроведениеРасчетов.ЭтоРасчетСеверныхНадбавок(Начисления.СпособРасчета) И Начисления.ДатаРегистрацииСеверногоСтажа <> Null Тогда // получим массив процентов северных надбавок с датами их действия для нашего периода ПроцентыСевернойНадбавки = ПроведениеРасчетов.ПолучитьПроцентыСевернойНадбавкиЗаПериод( Начисления.ДатаРегистрацииСеверногоСтажа, Начисления.ПорядокНачисленияСеверныхНадбавок, Начисления.НачальныйПроцентСевернойНадбавки, Начисления.СеверныйСтажМесяцев, Начисления.СеверныйСтажДней, Начисления.Период, ОкончаниеПериодаЗаполнения); НоваяСтрока.Показатель1 = ПроцентыСевернойНадбавки[0].Процент; ИначеЕсли ПроведениеРасчетов.ЭтоРасчетОтСтажа(Начисления.СпособРасчета) Тогда Если Начисления.КоэффициентСтажа = Null Тогда КоэффициентСтажа = 0; ОбщегоНазначения.КомментарийРасчета("Для " + Начисления.СотрудникНаименование + ", вид расчета """ + Начисления.ВидРасчетаНаименование+ """ не подобран размер начисления в зависимости от стажа """ + Начисления.ВидРасчетаВидСтажа + """ Размер принят равным нулю.", , Начисления.ФизЛицо, Начисления.ФизЛицо, Перечисления.ВидыСообщений.Ошибка); Иначе КоэффициентСтажа = Начисления.КоэффициентСтажа; КонецЕсли; НоваяСтрока.Показатель1 = КоэффициентСтажа; Иначе НоваяСтрока.Показатель1 = Показатель1; НоваяСтрока.Показатель2 = Показатель2; НоваяСтрока.Показатель3 = Показатель3; НоваяСтрока.Показатель4 = Показатель4; НоваяСтрока.Показатель5 = Показатель5; НоваяСтрока.Показатель6 = Показатель6; КонецЕсли; НоваяСтрока.Основное = Начисления.ОсновноеНачисление; НоваяСтрока.ДатаНачала = Начисления.Период; НоваяСтрока.ДатаНачалаСобытия = Начисления.ДатаНачалаСобытия; Если Начисления.НачисляетсяВЦеломЗаМесяц Тогда НоваяСтрока.ДатаОкончания = ОкончаниеПериодаЗаполнения; КонецЕсли; НоваяСтрока.ПодразделениеОрганизации = Начисления.ПодразделениеОрганизации; НоваяСтрока.СпособРасчета = Начисления.СпособРасчета; НоваяСтрока.ВидВремени = Начисления.ВидВремени; НоваяСтрока.ГрафикРаботы = Начисления.ГрафикРаботы; НоваяСтрока.СуммированныйУчетРабочегоВремени = Начисления.СуммированныйУчетРабочегоВремени; Если Не Начисления.НачисляетсяВЦеломЗаМесяц Тогда НезакрытыеСтроки.Добавить(НоваяСтрока); СтрокиНачисленийТекущегоНазначения.Добавить(НоваяСтрока); КонецЕсли; // Добавим начисления по ночным и вечерним, если требуется и если это - основной вид расчета Если Начисления.ОсновноеНачисление И Начисления.ЕстьНочные И НЕ ЕстьПлановаяДоплатаЗаНочные Тогда НоваяСтрока = ТЗНачисления.Добавить(); НоваяСтрока.Сотрудник = Начисления.Сотрудник; НоваяСтрока.Физлицо = Начисления.Физлицо; НоваяСтрока.ВидРасчета = ДоплатаЗаНочные; НоваяСтрока.Показатель1 = (Начисления.ЧасоваяТарифнаяСтавка * ПроцентДоплатыЗаНочныеЧасы) / 100; НоваяСтрока.Основное = Ложь; НоваяСтрока.ДатаНачала = Начисления.Период; НоваяСтрока.ПодразделениеОрганизации = Начисления.ПодразделениеОрганизации; НоваяСтрока.СпособРасчета = Перечисления.СпособыРасчетаОплатыТруда.ДоплатаЗаНочныеЧасы; НоваяСтрока.ВидВремени = Перечисления.ВидыУчетаВремени.ПоНочнымЧасам; НоваяСтрока.ГрафикРаботы = Начисления.ГрафикРаботы; НоваяСтрока.СуммированныйУчетРабочегоВремени = Начисления.СуммированныйУчетРабочегоВремени; НезакрытыеСтроки.Добавить(НоваяСтрока); СтрокиНачисленийТекущегоНазначения.Добавить(НоваяСтрока); СтрокиНочныхТекущегоНазначения.Добавить(НоваяСтрока); КонецЕсли; Если Начисления.ОсновноеНачисление И Начисления.ЕстьВечерние И НЕ ЕстьПлановаяДоплатаЗаВечерние Тогда НоваяСтрока = ТЗНачисления.Добавить(); НоваяСтрока.Сотрудник = Начисления.Сотрудник; НоваяСтрока.Физлицо = Начисления.Физлицо; НоваяСтрока.ВидРасчета = ДоплатаЗаВечерние; НоваяСтрока.Показатель1 = (Начисления.ЧасоваяТарифнаяСтавка * ПроцентДоплатыЗаВечерниеЧасы) / 100; НоваяСтрока.Основное = Ложь; НоваяСтрока.ДатаНачала = Начисления.Период; НоваяСтрока.ПодразделениеОрганизации = Начисления.ПодразделениеОрганизации; НоваяСтрока.СпособРасчета = Перечисления.СпособыРасчетаОплатыТруда.ДоплатаЗаВечерниеЧасы; НоваяСтрока.ВидВремени = Перечисления.ВидыУчетаВремени.ПоВечернимЧасам; НоваяСтрока.ГрафикРаботы = Начисления.ГрафикРаботы; НоваяСтрока.СуммированныйУчетРабочегоВремени = Начисления.СуммированныйУчетРабочегоВремени; НезакрытыеСтроки.Добавить(НоваяСтрока); СтрокиНачисленийТекущегоНазначения.Добавить(НоваяСтрока); СтрокиВечернихТекущегоНазначения.Добавить(НоваяСтрока); КонецЕсли; Если Начисления.ВидРасчета = ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.ДоплатаЗаВечерниеЧасы ИЛИ Начисления.ВидРасчета = ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.ДоплатаЗаНочныеЧасы ИЛИ Начисления.ВидРасчета = ДоплатаЗаНочные ИЛИ Начисления.ВидРасчета = ДоплатаЗаВечерние Тогда СтрокаДоплаты = НоваяСтрока; Отбор = Новый Структура(); Отбор.Вставить("Сотрудник", Начисления.Сотрудник); Отбор.Вставить("Физлицо", Начисления.Физлицо); Отбор.Вставить("ОсновноеНачисление", Истина); Строки = ВремТЗНачисления.НайтиСтроки(Отбор); ОтборДоплаты = Новый Структура(); ОтборДоплаты.Вставить("Сотрудник", Начисления.Сотрудник); ОтборДоплаты.Вставить("Физлицо", Начисления.Физлицо); ОтборДоплаты.Вставить("ВидРасчета", Начисления.ВидРасчета); СтрокиДоплаты = ВремТЗНачисления.НайтиСтроки(ОтборДоплаты); Если Строки.Количество() > 1 И СтрокиДоплаты.Количество() < 2 Тогда КоличествоСтрок = Строки.Количество(); НомерСтр = 0; ДатаНачала = СтрокаДоплаты.ДатаНачала; Для Каждого СтрокаТЗНачисления Из Строки Цикл НомерСтр = НомерСтр + 1; Если НомерСтр > 1 Тогда Если ДатаНачала >= СтрокаТЗНачисления.Период Тогда ИндексСтрокиНезакрытые = НезакрытыеСтроки.Найти(СтрокаДоплаты); НезакрытыеСтроки.Удалить(ИндексСтрокиНезакрытые); ИндексСтрокиТекНазнач = СтрокиНачисленийТекущегоНазначения.Найти(СтрокаДоплаты); СтрокиНачисленийТекущегоНазначения.Удалить(ИндексСтрокиТекНазнач); ИндексСтроки = ТЗНачисления.Найти(СтрокаДоплаты); ТЗНачисления.Удалить(ИндексСтроки); ИначеЕсли НомерСтр = 2 Тогда // если не удаляем строку доплаты, то "закроем" ее (ставим дату окончания) СтрокаДоплаты.ДатаОкончания = СтрокаТЗНачисления.Период - 1; ИндексСтрокиНезакрытые = НезакрытыеСтроки.Найти(СтрокаДоплаты); НезакрытыеСтроки.Удалить(ИндексСтрокиНезакрытые); КонецЕсли; СтрокаДоплаты = ТЗНачисления.Добавить(); СтрокаДоплаты.Сотрудник = СтрокаТЗНачисления.Сотрудник; СтрокаДоплаты.Физлицо = СтрокаТЗНачисления.Физлицо; СтрокаДоплаты.ВидРасчета = Начисления.ВидРасчета; СтрокаДоплаты.КодВычета = Начисления.КодВычета; СтрокаДоплаты.Показатель1 = Начисления.Показатель1 / 100 * СтрокаТЗНачисления.ЧасоваяТарифнаяСтавка; СтрокаДоплаты.Основное = Начисления.ОсновноеНачисление; СтрокаДоплаты.ДатаНачала = СтрокаТЗНачисления.Период; СтрокаДоплаты.ДатаНачалаСобытия = СтрокаТЗНачисления.ДатаНачалаСобытия; СтрокаДоплаты.ПодразделениеОрганизации = СтрокаТЗНачисления.ПодразделениеОрганизации; СтрокаДоплаты.СпособРасчета = Начисления.СпособРасчета; СтрокаДоплаты.ВидВремени = Начисления.ВидВремени; СтрокаДоплаты.ГрафикРаботы = Начисления.ГрафикРаботы; СтрокаДоплаты.СуммированныйУчетРабочегоВремени = Начисления.СуммированныйУчетРабочегоВремени; ДатаНачала = СтрокаДоплаты.ДатаНачала; НезакрытыеСтроки.Добавить(СтрокаДоплаты); СтрокиНачисленийТекущегоНазначения.Добавить(СтрокаДоплаты); КонецЕсли; КонецЦикла; ИначеЕсли Строки.Количество() > 1 Тогда Для Каждого СтрокаТЗДопНачисления Из СтрокиДоплаты Цикл Если СтрокаТЗДопНачисления.Период = НоваяСтрока.ДатаНачала Тогда Для Каждого СтрокаТЗНачисления Из Строки Цикл Если СтрокаТЗНачисления.Период = НоваяСтрока.ДатаНачала Тогда НоваяСтрока.Показатель1 = Начисления.Показатель1 / 100 * СтрокаТЗНачисления.ЧасоваяТарифнаяСтавка; КонецЕсли; КонецЦикла; КонецЕсли; КонецЦикла; КонецЕсли; КонецЕсли; Если ПроведениеРасчетов.ЭтоРасчетОтСтажа(Начисления.СпособРасчета) И Начисления.ДеньСменыКоэффициентаСтажа <> Null Тогда // установим дату окончания предыдущего расчета от стажа Если День(КонецМесяца(Начисления.Период)) >= Начисления.ДеньСменыКоэффициентаСтажа Тогда ДатаСменыКоэффициентаСтажа = Дата(Год(Начисления.Период), Месяц(Начисления.Период), Начисления.ДеньСменыКоэффициентаСтажа) - 1; Если ДатаСменыКоэффициентаСтажа > НоваяСтрока.ДатаНачала Тогда НоваяСтрока.ДатаОкончания = ДатаСменыКоэффициентаСтажа; // ... и введем еще один ДопНоваяСтрока = ТЗНачисления.Добавить(); ДопНоваяСтрока.Сотрудник = Начисления.Сотрудник; ДопНоваяСтрока.Физлицо = Начисления.Физлицо; ДопНоваяСтрока.ВидРасчета = Начисления.ВидРасчета; ДопНоваяСтрока.КодВычета = Начисления.КодВычета; ДопНоваяСтрока.Показатель1 = Начисления.СледКоэффициентСтажа; ДопНоваяСтрока.Основное = Начисления.ОсновноеНачисление; ДопНоваяСтрока.ДатаНачала = ДатаСменыКоэффициентаСтажа + 1; ДопНоваяСтрока.ДатаНачалаСобытия = Начисления.ДатаНачалаСобытия; ДопНоваяСтрока.ПодразделениеОрганизации = Начисления.ПодразделениеОрганизации; ДопНоваяСтрока.СпособРасчета = Начисления.СпособРасчета; ДопНоваяСтрока.ГрафикРаботы = Начисления.ГрафикРаботы; ДопНоваяСтрока.СуммированныйУчетРабочегоВремени = Начисления.СуммированныйУчетРабочегоВремени; НезакрытыеСтроки.Добавить(ДопНоваяСтрока); СтрокиНачисленийТекущегоНазначения.Добавить(ДопНоваяСтрока); Иначе // период записи начиался после дня изменения коэффициента стажа - запишем в ту же запись новое значение НоваяСтрока.Показатель1 = Начисления.СледКоэффициентСтажа; КонецЕсли; КонецЕсли; ИначеЕсли ПроведениеРасчетов.ЭтоРасчетСеверныхНадбавок(Начисления.СпособРасчета) И Начисления.ДатаРегистрацииСеверногоСтажа <> Null Тогда Если ПроцентыСевернойНадбавки.Количество() > 1 Тогда Если ПроцентыСевернойНадбавки[0].Процент <= 0 Тогда НоваяСтрока.ДатаНачала = Дата(Год(Начисления.Период), Месяц(Начисления.Период), День(ПроцентыСевернойНадбавки[1].Период)); НоваяСтрока.Показатель1 = ПроцентыСевернойНадбавки[1].Процент; Иначе // установим дату окончания предыдущего расчета от стажа НоваяСтрока.ДатаОкончания = Дата(Год(Начисления.Период), Месяц(Начисления.Период), День(ПроцентыСевернойНадбавки[1].Период)) - 1; // ... и введем дополнительную // предполагаем, что в течение одного расчетного периода (месяца) не может произойти несколько // изменений процента северной надбавки ДопНоваяСтрока = ТЗНачисления.Добавить(); ДопНоваяСтрока.Сотрудник = Начисления.Сотрудник; ДопНоваяСтрока.Физлицо = Начисления.Физлицо; ДопНоваяСтрока.ВидРасчета = Начисления.ВидРасчета; ДопНоваяСтрока.КодВычета = Начисления.КодВычета; ДопНоваяСтрока.Показатель1 = ПроцентыСевернойНадбавки[1].Процент; ДопНоваяСтрока.Основное = Начисления.ОсновноеНачисление; ДопНоваяСтрока.ДатаНачала = Дата(Год(Начисления.Период), Месяц(Начисления.Период), День(ПроцентыСевернойНадбавки[1].Период)); ДопНоваяСтрока.ДатаНачалаСобытия = Начисления.ДатаНачалаСобытия; ДопНоваяСтрока.ПодразделениеОрганизации = Начисления.ПодразделениеОрганизации; ДопНоваяСтрока.СпособРасчета = Начисления.СпособРасчета; ДопНоваяСтрока.ГрафикРаботы = Начисления.ГрафикРаботы; ДопНоваяСтрока.СуммированныйУчетРабочегоВремени = Начисления.СуммированныйУчетРабочегоВремени; НезакрытыеСтроки.Добавить(ДопНоваяСтрока); СтрокиНачисленийТекущегоНазначения.Добавить(ДопНоваяСтрока); КонецЕсли; КонецЕсли; КонецЕсли; КонецЦикла; // закрываем незакрытые строки по последнему работнику концом месяца ЗакрытьСтроки(ТЗНачисления, НезакрытыеСтроки, ОкончаниеПериодаЗаполнения); Возврат ТЗНачисления; КонецФункции // Выполняет формирование таблицы значений для загрузки ее в табличную часть Удержания // Параметры: // Удержания - выборка результатат запроса // ПериодЗаполнения - дата периода для которого выполняем заполнение документа // // Возвращаемое значение: // таблица значений // Функция СформироватьТаблицуУдержаний(Удержания, ОкончаниеПериодаЗаполнения, МассивВалютСНезаданнымКурсом) ТЗУдержания = Новый ТаблицаЗначений(); ТЗУдержания.Колонки.Добавить("Физлицо"); ТЗУдержания.Колонки.Добавить("ВидРасчета"); ТЗУдержания.Колонки.Добавить("Показатель1"); ТЗУдержания.Колонки.Добавить("Показатель2"); ТЗУдержания.Колонки.Добавить("Показатель3"); ТЗУдержания.Колонки.Добавить("Показатель4"); ТЗУдержания.Колонки.Добавить("Показатель5"); ТЗУдержания.Колонки.Добавить("Показатель6"); ТЗУдержания.Колонки.Добавить("ДатаНачала", ОбщегоНазначения.ПолучитьОписаниеТиповДаты(ЧастиДаты.ДатаВремя)); ТЗУдержания.Колонки.Добавить("ДатаОкончания", ОбщегоНазначения.ПолучитьОписаниеТиповДаты(ЧастиДаты.ДатаВремя)); ТЗУдержания.Колонки.Добавить("ДокументОснование"); ТЗУдержания.Колонки.Добавить("Авторасчет"); // Массив незакрытых строк таблицы значений, т.е. тех, которым не проставлена дата окончания НезакрытыеСтроки = Новый Массив; ТекущееФизлицо = Справочники.ФизическиеЛица.ПустаяСсылка(); Пока Удержания.Следующий() Цикл Для Сч = 1 По 6 Цикл Если ЗначениеЗаполнено(Удержания["Валюта"+Сч]) И (Удержания["КурсВалюты"+Сч] = NULL ИЛИ Удержания["КурсВалюты"+Сч] = 0) Тогда МассивВалютСНезаданнымКурсом[Удержания["Валюта"+ Сч]] = Истина; КонецЕсли; КонецЦикла; Если Удержания.Физлицо <> ТекущееФизлицо Тогда // закрываем строки концом месяца ЗакрытьСтроки(ТЗУдержания, НезакрытыеСтроки, ОкончаниеПериодаЗаполнения); ТекущееФизлицо = Удержания.Физлицо; Иначе // найдем такой же вид расчета по тому же основанию среди незакрытых строк Строка = Неопределено; ИндексСтроки = Неопределено; НайтиСредиНезакрытыхУдержаний(НезакрытыеСтроки, Удержания.ВидРасчета, Удержания.ДокументОснование, Строка, ИндексСтроки); Если Строка <> Неопределено Тогда // нашли Если Строка.ДатаНачала = Удержания.Период Тогда // если дата та же - меняем данные // не вводим новую строку в формируемую таблицу значений // и оставляем "незакрытой" Строка.Показатель1 = Удержания.Показатель1; Строка.Показатель2 = Удержания.Показатель2; Строка.Показатель3 = Удержания.Показатель3; Строка.Показатель4 = Удержания.Показатель4; Строка.Показатель5 = Удержания.Показатель5; Строка.Показатель6 = Удержания.Показатель6; Продолжить; Иначе // иначе - "закрываем" строку и удаляем из массива незакрытых Строка.ДатаОкончания = Удержания.Период-1; НезакрытыеСтроки.Удалить(ИндексСтроки); КонецЕсли; КонецЕсли; КонецЕсли; Если Удержания.Действие = Перечисления.ВидыДействияСНачислением.Прекратить Тогда Продолжить; КонецЕсли; НоваяСтрока = ТЗУдержания.Добавить(); НоваяСтрока.Физлицо = Удержания.Физлицо; НоваяСтрока.ВидРасчета = Удержания.ВидРасчета; НоваяСтрока.Показатель1 = Удержания.Показатель1; НоваяСтрока.Показатель2 = Удержания.Показатель2; НоваяСтрока.Показатель3 = Удержания.Показатель3; НоваяСтрока.Показатель4 = Удержания.Показатель4; НоваяСтрока.Показатель5 = Удержания.Показатель5; НоваяСтрока.Показатель6 = Удержания.Показатель6; НоваяСтрока.ДатаНачала = Удержания.Период; НоваяСтрока.ДокументОснование = Удержания.ДокументОснование; НоваяСтрока.Авторасчет = Истина; НезакрытыеСтроки.Добавить(НоваяСтрока); КонецЦикла; // закрываем строки концом месяца ЗакрытьСтроки(ТЗУдержания, НезакрытыеСтроки, ОкончаниеПериодаЗаполнения); Возврат ТЗУдержания; КонецФункции // СформироватьТаблицуУдержаний() // процедура дописывать строки в таблицуИсточник из таблицы Приемник. // Обе таблицы должны иметь одинаковую структуру колонок, иначе возникнет ошибка. Процедура ДописатьСтрокиИзТаблицыВТаблицу(ТаблицаИсточник, ТаблицаПриемник) Для Каждого СтрокаТаблицыИсточника Из ТаблицаИсточник Цикл ЗаполнитьЗначенияСвойств(ТаблицаПриемник.Добавить(), СтрокаТаблицыИсточника); КонецЦикла; КонецПроцедуры // ДописатьСтрокиИзТаблицыВТаблицу() // Заполняет набор записей по переданным данным расчета НДФЛ // // Параметры: // НаборЗаписей - набор записей регистра НДФЛРасчетыСБюджетом // ДанныеНДФЛ - таблица значений - данные расчета НДФЛ // // Возвращаемое значение: // Нет // Процедура ЗаполнитьНаборЗаписейПоДаннымНДФЛ(НаборЗаписей, ДанныеНДФЛ, ВыборкаПоШапкеДокумента, Перерасчет = Ложь, ФизлицаСписок = Неопределено, КомментироватьРасчет = Ложь, ВыборкаПодразделений) УжеИсчислили = 0; УжеПрименилиЛичный = 0; УжеПрименилиДетский = 0; УжеПрименилиДетскийДвойные = 0; УжеПрименилиДетскийИнвалидов = 0; УжеПрименилиДетскийИнвалидовДвойные = 0; УжеПрименилиДетскийДвойныеВторые = 0; УжеПрименилиДетскийИнвалидовДвойныеВторые = 0; ТекущееФизлицо = Справочники.ФизическиеЛица.ПустаяСсылка(); ТекущийГод = 0; СтруктураПоиска = Новый Структура("Физлицо, МесяцНалоговогоПериода"); // строим соответствие физлиц, по которым считается НДФЛ и индексов их строк табличной части НДФЛ РаботникиДляРасчетаНДФЛ = Новый Соответствие; РасчетПоФизлицу = Ложь; Если ФизлицаСписок <> Неопределено И Не Перерасчет Тогда // расчет по одному физлицу РасчетПоФизлицу = Истина; РаботникиДляРасчетаНДФЛ.Вставить(ФизлицаСписок[0].Значение); СтруктураПоиска = Новый Структура("ФизЛицо", ФизлицаСписок[0].Значение); // запоминаем позицию физлица в табличной части ИндексСтрокиТаблицыНДФЛ = НеОпределено; МассивСтрок = НДФЛ.НайтиСтроки(СтруктураПоиска); Для Каждого СтрокаТабличнойЧасти Из МассивСтрок Цикл Если ИндексСтрокиТаблицыНДФЛ = НеОпределено Тогда ИндексСтрокиТаблицыНДФЛ = СтрокаТабличнойЧасти.НомерСтроки - 1; КонецЕсли; НДФЛ.Удалить(СтрокаТабличнойЧасти); КонецЦикла; Если ИндексСтрокиТаблицыНДФЛ = НеОпределено Тогда ИндексСтрокиТаблицыНДФЛ = 0; КонецЕсли; ИначеЕсли ФизлицаСписок <> Неопределено И Перерасчет Тогда // это перерасчет Для Каждого ЭлементСписка Из ФизлицаСписок Цикл РаботникиДляРасчетаНДФЛ.Вставить(ЭлементСписка.Значение); КонецЦикла; Иначе //расчет всего документа Для Каждого Строка Из НДФЛ Цикл РаботникиДляРасчетаНДФЛ.Вставить(Строка.Физлицо); КонецЦикла; // очистим результаты расчета НДФЛ, которые находятся в табличной части документа НДФЛ.Очистить(); КонецЕсли; Если КомментироватьРасчет Тогда КомментарийНДФЛ = ОбщегоНазначения.КомментарийРасчета("Расчет НДФЛ"); КонецЕсли; СтруктураПоискаПодразделения = Новый Структура("Физлицо,Период"); Пока ДанныеНДФЛ.Следующий() Цикл Если ТекущееФизлицо <> ДанныеНДФЛ.ФизЛицо ИЛИ ТекущийГод <> Год(ДанныеНДФЛ.Период) Тогда УжеИсчислили = 0; // уже примененные вычеты УжеПрименилиДетский = 0; УжеПрименилиДетскийДвойные = 0; УжеПрименилиДетскийИнвалидов = 0; УжеПрименилиДетскийИнвалидовДвойные = 0; УжеПрименилиДетскийДвойныеВторые = 0; УжеПрименилиДетскийИнвалидовДвойныеВторые = 0; УжеПрименилиЛичный = 0; УжеПрименили312 = 0; УжеПрименили311 = 0; // текущие физлицо и год периода ТекущееФизлицо = ДанныеНДФЛ.ФизЛицо; ТекущийГод = Год(ДанныеНДФЛ.Период); КонецЕсли; Если ДанныеНДФЛ.Резидент Тогда НалогИсчисленный = ДанныеНДФЛ.НалогИсчисленный - УжеИсчислили; Иначе НалогИсчисленный = ДанныеНДФЛ.НалогИсчисленный; КонецЕсли; // ранее примененные вычеты текущего месяца РанееПримененныеДетскиеТМ = ДанныеНДФЛ.РанееПримененныеВычетыДетскиеЗаМесяц; РанееПримененныеДетскиеИнвалидовТМ = ДанныеНДФЛ.РанееПримененныеВычетыДетскиеИнвалидовЗаМесяц; РанееПримененныеДетскиеДвойныеТМ = ДанныеНДФЛ.РанееПримененныеВычетыДетскиеДвойныеЗаМесяц; РанееПримененныеДетскиеИнвалидовДвойныеТМ = ДанныеНДФЛ.РанееПримененныеВычетыДетскиеИнвалидовДвойныеЗаМесяц; РанееПримененныеДетскиеДвойныеВторыеТМ = ДанныеНДФЛ.РанееПримененныеВычетыДетскиеДвойныеВторыеЗаМесяц; РанееПримененныеДетскиеИнвалидовДвойныеВторыеТМ = ДанныеНДФЛ.РанееПримененныеВычетыДетскиеИнвалидовДвойныеВторыеЗаМесяц; РанееПримененныеЛичныеТМ = ДанныеНДФЛ.РанееПримененныеВычетыЛичныеЗаМесяц; РанееПримененные312ТМ = ДанныеНДФЛ.РанееПримененныеВычеты312ЗаМесяц; РанееПримененные311ТМ = ДанныеНДФЛ.РанееПримененныеВычеты311ЗаМесяц; // отрицательный, примененный за месяц вычет, который нужно перераспределить КПерераспределению = 0; // первый проход ВычетыПримененныеДетский = ДанныеНДФЛ.ПримененныеВычетыДетские - ДанныеНДФЛ.РанееПримененныеВычетыДетские - УжеПрименилиДетский; ВычетыПримененныеДетскийИнвалидов = ДанныеНДФЛ.ПримененныеВычетыДетскиеИнвалидов - ДанныеНДФЛ.РанееПримененныеВычетыДетскиеИнвалидов - УжеПрименилиДетскийИнвалидов; ВычетыПримененныеДетскийДвойные = ДанныеНДФЛ.ПримененныеВычетыДетскиеДвойные - ДанныеНДФЛ.РанееПримененныеВычетыДетскиеДвойные - УжеПрименилиДетскийДвойные; ВычетыПримененныеДетскийИнвалидовДвойные = ДанныеНДФЛ.ПримененныеВычетыДетскиеИнвалидовДвойные - ДанныеНДФЛ.РанееПримененныеВычетыДетскиеИнвалидовДвойные - УжеПрименилиДетскийИнвалидовДвойные; ВычетыПримененныеДетскийДвойныеВторые = ДанныеНДФЛ.ПримененныеВычетыДетскиеДвойныеВторые - ДанныеНДФЛ.РанееПримененныеВычетыДетскиеДвойныеВторые - УжеПрименилиДетскийДвойныеВторые; ВычетыПримененныеДетскийИнвалидовДвойныеВторые = ДанныеНДФЛ.ПримененныеВычетыДетскиеИнвалидовДвойныеВторые - ДанныеНДФЛ.РанееПримененныеВычетыДетскиеИнвалидовДвойныеВторые - УжеПрименилиДетскийИнвалидовДвойныеВторые; ВычетыПримененныеЛичный = ДанныеНДФЛ.ПримененныеВычетыЛичные - ДанныеНДФЛ.РанееПримененныеВычетыЛичные - УжеПрименилиЛичный; ВычетыПримененные312 = ДанныеНДФЛ.ПримененныеВычеты312 - ДанныеНДФЛ.РанееПримененныеВычеты312 - УжеПрименили312; ВычетыПримененные311 = ДанныеНДФЛ.ПримененныеВычеты311 - ДанныеНДФЛ.РанееПримененныеВычеты311 - УжеПрименили311; // рассчитаем сумму вычетов, которую нужно перераспеределить во избежание применения // отрицательных вычетов за месяц КПерераспределению = Мин(ВычетыПримененныеДетскийИнвалидов + ДанныеНДФЛ.РанееПримененныеВычетыДетскиеИнвалидовЗаМесяц, 0) + Мин(ВычетыПримененныеДетскийИнвалидовДвойные + ДанныеНДФЛ.РанееПримененныеВычетыДетскиеИнвалидовДвойныеЗаМесяц, 0) + Мин(ВычетыПримененныеДетскийДвойные + ДанныеНДФЛ.РанееПримененныеВычетыДетскиеДвойныеЗаМесяц, 0) + Мин(ВычетыПримененныеДетскийИнвалидовДвойныеВторые + ДанныеНДФЛ.РанееПримененныеВычетыДетскиеИнвалидовДвойныеВторыеЗаМесяц, 0) + Мин(ВычетыПримененныеДетскийДвойныеВторые + ДанныеНДФЛ.РанееПримененныеВычетыДетскиеДвойныеВторыеЗаМесяц, 0) + Мин(ВычетыПримененныеЛичный + ДанныеНДФЛ.РанееПримененныеВычетыЛичныеЗаМесяц, 0) + Мин(ВычетыПримененные312 + ДанныеНДФЛ.РанееПримененныеВычеты312ЗаМесяц, 0) + Мин(ВычетыПримененные311 + ДанныеНДФЛ.РанееПримененныеВычеты311ЗаМесяц, 0); // если нужно - второй проход для перераспеределения примененных вычетов Если КПерераспределению < 0 Тогда ВычетыПримененныеДетский = Макс(ДанныеНДФЛ.ПримененныеВычетыДетские - ДанныеНДФЛ.РанееПримененныеВычетыДетские - УжеПрименилиДетский + КПерераспределению, -ДанныеНДФЛ.РанееПримененныеВычетыДетскиеЗаМесяц); Перераспределено = ВычетыПримененныеДетский - (ДанныеНДФЛ.ПримененныеВычетыДетские - ДанныеНДФЛ.РанееПримененныеВычетыДетские - УжеПрименилиДетский); КПерераспределению = КПерераспределению - Перераспределено; ВычетыПримененныеДетскийДвойные = Макс(ДанныеНДФЛ.ПримененныеВычетыДетскиеДвойные - ДанныеНДФЛ.РанееПримененныеВычетыДетскиеДвойные - УжеПрименилиДетскийДвойные + КПерераспределению, -ДанныеНДФЛ.РанееПримененныеВычетыДетскиеДвойныеЗаМесяц); Перераспределено = ВычетыПримененныеДетскийДвойные - (ДанныеНДФЛ.ПримененныеВычетыДетскиеДвойные - ДанныеНДФЛ.РанееПримененныеВычетыДетскиеДвойные - УжеПрименилиДетскийДвойные); КПерераспределению = КПерераспределению - Перераспределено; ВычетыПримененныеДетскийДвойныеВторые = Макс(ДанныеНДФЛ.ПримененныеВычетыДетскиеДвойныеВторые - ДанныеНДФЛ.РанееПримененныеВычетыДетскиеДвойныеВторые - УжеПрименилиДетскийДвойныеВторые + КПерераспределению, -ДанныеНДФЛ.РанееПримененныеВычетыДетскиеДвойныеВторыеЗаМесяц); Перераспределено = ВычетыПримененныеДетскийДвойныеВторые - (ДанныеНДФЛ.ПримененныеВычетыДетскиеДвойныеВторые - ДанныеНДФЛ.РанееПримененныеВычетыДетскиеДвойныеВторые - УжеПрименилиДетскийДвойныеВторые); КПерераспределению = КПерераспределению - Перераспределено; ВычетыПримененныеДетскийИнвалидов = Макс(ДанныеНДФЛ.ПримененныеВычетыДетскиеИнвалидов - ДанныеНДФЛ.РанееПримененныеВычетыДетскиеИнвалидов - УжеПрименилиДетскийИнвалидов + КПерераспределению, -ДанныеНДФЛ.РанееПримененныеВычетыДетскиеИнвалидовЗаМесяц); Перераспределено = ВычетыПримененныеДетскийИнвалидов - (ДанныеНДФЛ.ПримененныеВычетыДетскиеИнвалидов - ДанныеНДФЛ.РанееПримененныеВычетыДетскиеИнвалидов - УжеПрименилиДетскийИнвалидов); КПерераспределению = КПерераспределению - Перераспределено; ВычетыПримененныеДетскийИнвалидовДвойные = Макс(ДанныеНДФЛ.ПримененныеВычетыДетскиеИнвалидовДвойные - ДанныеНДФЛ.РанееПримененныеВычетыДетскиеИнвалидовДвойные - УжеПрименилиДетскийИнвалидовДвойные + КПерераспределению, -ДанныеНДФЛ.РанееПримененныеВычетыДетскиеИнвалидовДвойныеЗаМесяц); Перераспределено = ВычетыПримененныеДетскийИнвалидовДвойные - (ДанныеНДФЛ.ПримененныеВычетыДетскиеИнвалидовДвойные - ДанныеНДФЛ.РанееПримененныеВычетыДетскиеИнвалидовДвойные - УжеПрименилиДетскийИнвалидовДвойные); КПерераспределению = КПерераспределению - Перераспределено; ВычетыПримененныеДетскийИнвалидовДвойныеВторые = Макс(ДанныеНДФЛ.ПримененныеВычетыДетскиеИнвалидовДвойныеВторые - ДанныеНДФЛ.РанееПримененныеВычетыДетскиеИнвалидовДвойныеВторые - УжеПрименилиДетскийИнвалидовДвойныеВторые + КПерераспределению, -ДанныеНДФЛ.РанееПримененныеВычетыДетскиеИнвалидовДвойныеВторыеЗаМесяц); Перераспределено = ВычетыПримененныеДетскийИнвалидовДвойныеВторые - (ДанныеНДФЛ.ПримененныеВычетыДетскиеИнвалидовДвойныеВторые - ДанныеНДФЛ.РанееПримененныеВычетыДетскиеИнвалидовДвойныеВторые - УжеПрименилиДетскийИнвалидовДвойныеВторые); КПерераспределению = КПерераспределению - Перераспределено; ВычетыПримененныеЛичный = Макс(ДанныеНДФЛ.ПримененныеВычетыЛичные - ДанныеНДФЛ.РанееПримененныеВычетыЛичные - УжеПрименилиЛичный + КПерераспределению, -ДанныеНДФЛ.РанееПримененныеВычетыЛичныеЗаМесяц); Перераспределено = ВычетыПримененныеЛичный - (ДанныеНДФЛ.ПримененныеВычетыЛичные - ДанныеНДФЛ.РанееПримененныеВычетыЛичные - УжеПрименилиЛичный); КПерераспределению = КПерераспределению - Перераспределено; ВычетыПримененные312 = Макс(ДанныеНДФЛ.ПримененныеВычеты312 - ДанныеНДФЛ.РанееПримененныеВычеты312 - УжеПрименили312 + КПерераспределению, -ДанныеНДФЛ.РанееПримененныеВычеты312ЗаМесяц); Перераспределено = ВычетыПримененные312 - (ДанныеНДФЛ.ПримененныеВычеты312 - ДанныеНДФЛ.РанееПримененныеВычеты312 - УжеПрименили312); КПерераспределению = КПерераспределению - Перераспределено; ВычетыПримененные311 = Макс(ДанныеНДФЛ.ПримененныеВычеты311 - ДанныеНДФЛ.РанееПримененныеВычеты311 - УжеПрименили311 + КПерераспределению, -ДанныеНДФЛ.РанееПримененныеВычеты311ЗаМесяц); Перераспределено = ВычетыПримененные311 - (ДанныеНДФЛ.ПримененныеВычеты311 - ДанныеНДФЛ.РанееПримененныеВычеты311 - УжеПрименили311); КПерераспределению = КПерераспределению - Перераспределено; КонецЕсли; Если НалогИсчисленный = 0 и ВычетыПримененныеЛичный = 0 и ВычетыПримененныеДетский = 0 и ВычетыПримененныеДетскийДвойные = 0 и ВычетыПримененныеДетскийИнвалидов = 0 и ВычетыПримененныеДетскийИнвалидовДвойные = 0 и ВычетыПримененныеДетскийДвойныеВторые = 0 и ВычетыПримененныеДетскийИнвалидовДвойныеВторые = 0 и ВычетыПримененные312 = 0 и ВычетыПримененные311 = 0 Тогда Продолжить; КонецЕсли; Если КомментироватьРасчет Тогда КомментарийМесяца = ОбщегоНазначения.КомментарийРасчета("Результат расчета за " + Формат(ДанныеНДФЛ.Период, "ДФ=ММММ") + ": " + НалогИсчисленный, КомментарийНДФЛ); Если ДанныеНДФЛ.Резидент Тогда ОбщегоНазначения.КомментарийРасчета("Статус: резидент РФ", КомментарийМесяца); Иначе ОбщегоНазначения.КомментарийРасчета("Статус: не является резидентом РФ", КомментарийМесяца,,, Перечисления.ВидыСообщений.ВажнаяИнформация); КонецЕсли; КомментарийДохода = ОбщегоНазначения.КомментарийРасчета("Доход за период, всего: " + ДанныеНДФЛ.ДоходЗаМесяц, КомментарийМесяца,,,, Ложь); ДоходыПоВидамРасчетов = ДанныеНДФЛ.Выбрать(); Пока ДоходыПоВидамРасчетов.Следующий() Цикл ОбщегоНазначения.КомментарийРасчета("По виду расчета " + ДоходыПоВидамРасчетов.ВидРасчетаНаименование + " " + ДоходыПоВидамРасчетов.ДоходЗаМесяцПоВидамРасчета, КомментарийДохода); КонецЦикла; Если ДанныеНДФЛ.ДоходЗаМесяцПоВидамРасчета <> ДанныеНДФЛ.ДоходЗаМесяц Тогда ОбщегоНазначения.КомментарийРасчета("Прочие начисления: " + (ДанныеНДФЛ.ДоходЗаМесяц - ДанныеНДФЛ.ДоходЗаМесяцПоВидамРасчета), КомментарийДохода); КонецЕсли; Если ДанныеНДФЛ.ВычетЗаМесяц + ВычетыПримененныеЛичный + ВычетыПримененныеДетский + ВычетыПримененныеДетскийДвойные + ВычетыПримененныеДетскийДвойныеВторые + ВычетыПримененныеДетскийИнвалидов + ВычетыПримененныеДетскийИнвалидовДвойные + ВычетыПримененныеДетскийИнвалидовДвойныеВторые + ВычетыПримененные312 + ВычетыПримененные311 <> 0 Тогда КомментарийВычетов = ОбщегоНазначения.КомментарийРасчета("Примененные вычеты, всего: " + (ДанныеНДФЛ.ВычетЗаМесяц + ВычетыПримененныеЛичный + ВычетыПримененныеДетский + ВычетыПримененныеДетскийДвойные + ВычетыПримененныеДетскийДвойныеВторые + ВычетыПримененныеДетскийИнвалидов + ВычетыПримененныеДетскийИнвалидовДвойные + ВычетыПримененныеДетскийИнвалидовДвойныеВторые + ВычетыПримененные312 + ВычетыПримененные311), КомментарийМесяца); Если ВычетыПримененныеЛичный <> 0 Тогда ОбщегоНазначения.КомментарийРасчета("Примененный личный вычет: " + ВычетыПримененныеЛичный, КомментарийВычетов); КонецЕсли; Если ВычетыПримененныеДетский <> 0 Тогда ОбщегоНазначения.КомментарийРасчета("Примененный вычет на детей: " + ВычетыПримененныеДетский, КомментарийВычетов); КонецЕсли; Если ВычетыПримененныеДетскийДвойные + ВычетыПримененныеДетскийДвойныеВторые <> 0 Тогда ОбщегоНазначения.КомментарийРасчета("Примененный вычет на детей (двойной): " + (ВычетыПримененныеДетскийДвойные + ВычетыПримененныеДетскийДвойныеВторые), КомментарийВычетов); КонецЕсли; Если ВычетыПримененныеДетскийИнвалидов <> 0 Тогда ОбщегоНазначения.КомментарийРасчета("Примененный вычет на детей-инвалидов: " + ВычетыПримененныеДетскийИнвалидов, КомментарийВычетов); КонецЕсли; Если ВычетыПримененныеДетскийИнвалидовДвойные + ВычетыПримененныеДетскийИнвалидовДвойныеВторые <> 0 Тогда ОбщегоНазначения.КомментарийРасчета("Примененный вычет на детей-инвалидов (двойной): " + ВычетыПримененныеДетскийИнвалидовДвойные + ВычетыПримененныеДетскийИнвалидовДвойныеВторые, КомментарийВычетов); КонецЕсли; Если ВычетыПримененные312 <> 0 Тогда ОбщегоНазначения.КомментарийРасчета("Вычеты на погашение процентов по ипотеке: " + ВычетыПримененные312, КомментарийВычетов); КонецЕсли; Если ВычетыПримененные311 <> 0 Тогда ОбщегоНазначения.КомментарийРасчета("Вычеты по расходам на строительство: " + ВычетыПримененные311, КомментарийВычетов); КонецЕсли; ОбщегоНазначения.КомментарийРасчета("Облагаемый доход нарастающим итогом за год: " + ДанныеНДФЛ.ОблагаемыйДоходЗаГод, КомментарийМесяца); Если ДанныеНДФЛ.РанееНалогИсчисленный <> 0 Тогда ОбщегоНазначения.КомментарийРасчета("Исчисленный ранее налог нарастающим итогом за год: " + ДанныеНДФЛ.РанееНалогИсчисленный, КомментарийМесяца); КонецЕсли; Иначе ОбщегоНазначения.КомментарийРасчета("Вычеты не применялись", КомментарийМесяца,,, Перечисления.ВидыСообщений.ВажнаяИнформация); КонецЕсли; Если ДанныеНДФЛ.ВычетЗаМесяц <> 0 Тогда ОбщегоНазначения.КомментарийРасчета("Вычеты по доходам: " + ДанныеНДФЛ.ВычетЗаМесяц, КомментарийМесяца); КонецЕсли; КонецЕсли; // Если передан набор записей - заполняем и его Если НаборЗаписей <> Неопределено Тогда // зарегистрируем в регистре Движение = НаборЗаписей.Добавить(); // Свойства Движение.ВидДвижения = ВидДвиженияНакопления.Приход; Движение.Период = КонецМесяца(ПериодРегистрации); // Измерения Движение.Организация = ВыборкаПоШапкеДокумента.ГоловнаяОрганизация; Движение.ФизЛицо = ДанныеНДФЛ.ФизЛицо; Движение.МесяцНалоговогоПериода = ДанныеНДФЛ.Период; Движение.СтавкаНалогообложенияРезидента = Перечисления.НДФЛСтавкиНалогообложенияРезидента.Ставка13; // Ресурсы Движение.Налог = НалогИсчисленный; // Реквизиты Движение.ВидСтроки = Перечисления.НДФЛРасчетыСБюджетомВидСтроки.Начисление; Движение.ОбособленноеПодразделение = ВыборкаПоШапкеДокумента.ОбособленноеПодразделение; Движение.ИсчисленоИзЗарплаты = Истина; КонецЕсли; // Ниже - заполняем табличную часть документа Если Перерасчет Тогда СтруктураПоиска.Физлицо = ДанныеНДФЛ.ФизЛицо; СтруктураПоиска.МесяцНалоговогоПериода = ДанныеНДФЛ.Период; Строки = НДФЛ.НайтиСтроки(СтруктураПоиска); Если Строки.Количество() > 0 Тогда СтрокаНДФЛ = Строки[0]; Иначе СтрокаНДФЛ = НДФЛ.Добавить(); КонецЕсли; Иначе Если РасчетПоФизлицу Тогда СтрокаНДФЛ = НДФЛ.Вставить(ИндексСтрокиТаблицыНДФЛ); ИндексСтрокиТаблицыНДФЛ = ИндексСтрокиТаблицыНДФЛ+1; Иначе СтрокаНДФЛ = НДФЛ.Добавить(); КонецЕсли; КонецЕсли; РаботникиДляРасчетаНДФЛ.Удалить(ДанныеНДФЛ.ФизЛицо); СтрокаНДФЛ.ФизЛицо = ДанныеНДФЛ.ФизЛицо; СтрокаНДФЛ.Налог = НалогИсчисленный; СтрокаНДФЛ.ПримененныйВычетЛичный = ВычетыПримененныеЛичный; СтрокаНДФЛ.ПримененныйВычетНаДетей = ВычетыПримененныеДетский; СтрокаНДФЛ.ПримененныйВычетНаДетейДвойной = ВычетыПримененныеДетскийДвойные; СтрокаНДФЛ.ПримененныйВычетНаДетейИнвалидов = ВычетыПримененныеДетскийИнвалидов; СтрокаНДФЛ.ПримененныйВычетНаДетейИнвалидовДвойной = ВычетыПримененныеДетскийИнвалидовДвойные; СтрокаНДФЛ.ПримененныйВычетНаДетейДвойнойВторой = ВычетыПримененныеДетскийДвойныеВторые; СтрокаНДФЛ.ПримененныйВычетНаДетейИнвалидовДвойнойВторой = ВычетыПримененныеДетскийИнвалидовДвойныеВторые; СтрокаНДФЛ.ПримененныйВычетИмущественныйРасход = ВычетыПримененные311; СтрокаНДФЛ.ПримененныйВычетИмущественныйПроцентыПоКредитам = ВычетыПримененные312; СтрокаНДФЛ.МесяцНалоговогоПериода = ДанныеНДФЛ.Период; // Запомним суммы для следующей итерации УжеИсчислили = УжеИсчислили + НалогИсчисленный; УжеПрименилиЛичный = УжеПрименилиЛичный + ВычетыПримененныеЛичный; УжеПрименилиДетский = УжеПрименилиДетский + ВычетыПримененныеДетский; УжеПрименилиДетскийДвойные = УжеПрименилиДетскийДвойные + ВычетыПримененныеДетскийДвойные; УжеПрименилиДетскийИнвалидов = УжеПрименилиДетскийИнвалидов + ВычетыПримененныеДетскийИнвалидов; УжеПрименилиДетскийИнвалидовДвойные = УжеПрименилиДетскийИнвалидовДвойные + ВычетыПримененныеДетскийИнвалидовДвойные; УжеПрименилиДетскийДвойныеВторые = УжеПрименилиДетскийДвойныеВторые + ВычетыПримененныеДетскийДвойныеВторые; УжеПрименилиДетскийИнвалидовДвойныеВторые = УжеПрименилиДетскийИнвалидовДвойныеВторые + ВычетыПримененныеДетскийИнвалидовДвойныеВторые; УжеПрименили312 = УжеПрименили312 + ВычетыПримененные312; УжеПрименили311 = УжеПрименили311 + ВычетыПримененные311; КонецЦикла; // заполним НДФЛ Для Каждого Элемент Из РаботникиДляРасчетаНДФЛ Цикл НоваяСтрока = НДФЛ.Добавить(); НоваяСтрока.ФизЛицо = Элемент.Ключ; НоваяСтрока.МесяцНалоговогоПериода = НачалоМесяца(ПериодРегистрации); КонецЦикла; КонецПроцедуры // ЗаполнитьНаборЗаписейПоДаннымНДФЛ() // Закрытие строк - ввод значения ДатаОкончания для тех строк у которых не нулевое // значение Размер и удаление тех, у кого ВидРасчета - неопределено или ДатаНачала > даты закрытия // Параметры: // ТЗ - таблица значений // НезакрытыеСтроки - массив незакрытых строк таблицы значений ТЗ // ДатаОкончания - дата, которую нужно проставить в качестве "закрывающей" // // Возвращаемое зеначение: // нет // Процедура ЗакрытьСтроки(ТЗ, НезакрытыеСтроки, ДатаОкончания) Для Каждого Строка Из НезакрытыеСтроки Цикл Если Строка.ВидРасчета = Неопределено ИЛИ Строка.ДатаНачала > ДатаОкончания Тогда ТЗ.Удалить(Строка); ИначеЕсли Строка.ДатаОкончания = '00010101' или Строка.ДатаОкончания > ДатаОкончания Тогда Строка.ДатаОкончания = ДатаОкончания; КонецЕсли; КонецЦикла; НезакрытыеСтроки.Очистить(); КонецПроцедуры // ЗакрытьСтроки() // Найти строку в массиве строк по переданному виду расчета или по признаку "Основное" // Найденная строка и ее индекс возвращаются через переданные параметры Строка и ИндексСтроки // Параметры: // НезакрытыеСтроки - массив строк таблицы значений // ПоискОсновного - признак поиска основного начисления // ВидРасчета - вид расчета ссылка // Строка - в этот параметр будет возвращена строка, начальное значение - Неопределено // ИндексСтроки - в этот параметр будет возвращен индекс строки, начальное значение - Неопределено // // Возвращаемое зеначение: // нет // Процедура НайтиСредиНезакрытых(НезакрытыеСтроки, ПоискОсновного, ВидРасчета, Строки) Количество = НезакрытыеСтроки.Количество(); Для Сч = 1 По Количество Цикл Индекс = Количество - Сч; Если (ПоискОсновного И НезакрытыеСтроки[Индекс].Основное) ИЛИ (НЕ ПоискОсновного И НезакрытыеСтроки[Индекс].ВидРасчета = ВидРасчета) Тогда Строки.Добавить(НезакрытыеСтроки[Индекс]); КонецЕсли; КонецЦикла; КонецПроцедуры // НайтиСредиНезакрытых() // Нйти строку в массиве строк по переданному виду расчета и основанию (ссылка на документ) // Найденная строка и ее индекс возвращаются через переданные параметры Строка и ИндексСтроки // Параметры: // НезакрытыеСтроки - массив строк таблицы значений // ВидРасчета - вид расчета ссылка // ДокументОснование - документ ссылка // Строка - в этот параметр будет возвращена строка, начальное значение - Неопределено // ИндексСтроки - в этот параметр будет возвращен индекс строки, начальное значение - Неопределено // // Возвращаемое зеначение: // нет // Процедура НайтиСредиНезакрытыхУдержаний(НезакрытыеСтроки, ВидРасчета, ДокументОснование, Строка, ИндексСтроки) Для Индекс = 0 По НезакрытыеСтроки.ВГраница() Цикл Если НезакрытыеСтроки[Индекс].ВидРасчета = ВидРасчета И НезакрытыеСтроки[Индекс].ДокументОснование = ДокументОснование Тогда ИндексСтроки = Индекс; Строка = НезакрытыеСтроки[Индекс]; КонецЕсли; КонецЦикла; КонецПроцедуры // НайтиСредиНезакрытыхУдержаний() // Добавляет строку сторно начислений в движения и табличную часть документа Процедура ДобавитьСтрокуСторно(Движения, ТабличнаяЧасть, Строка) СтрокаСохраняемыхРеквизитов = "Сотрудник,ФизЛицо,Организация,ВидРасчета,ДатаНачалаСобытия," + "ОбособленноеПодразделение,ПодразделениеОрганизации,Показатель1,Показатель2,Показатель3,Показатель4,Показатель5,Показатель6,ВидУчетаВремени,ГрафикРаботы,ГрафикРаботыНорма," + "ПериодРасчетаСреднегоЗаработкаНачало,ПериодРасчетаСреднегоЗаработкаОкончание,СторнируемыйДокумент"; // новая запись движений Движение = Движения.Добавить(); ЗаполнитьЗначенияСвойств(Движение,Строка,СтрокаСохраняемыхРеквизитов); // Свойства Движение.ПериодРегистрации = Строка.ПериодРегистрацииСторно; Движение.ПериодДействияНачало = Строка.ПериодДействияНачалоСторно; Движение.ПериодДействияКонец = Строка.ПериодДействияКонецСторно; Движение.БазовыйПериодНачало = Строка.БазовыйПериодНачало; Движение.БазовыйПериодКонец = Строка.БазовыйПериодКонец; Движение.Сторно = Истина; Движение.Авторасчет = Истина; СтрокаСохраняемыхРеквизитов = "Сотрудник,ФизЛицо,ВидРасчета,ДатаНачалаСобытия," + "ПодразделениеОрганизации,Показатель1,Показатель2,Показатель3,Показатель4,Показатель5,Показатель6," + "ПериодРасчетаСреднегоЗаработкаНачало,ПериодРасчетаСреднегоЗаработкаОкончание,СторнируемыйДокумент"; // новая строка табличной части СтрокаТабличнойЧасти = ТабличнаяЧасть.Добавить(); ЗаполнитьЗначенияСвойств(СтрокаТабличнойЧасти,Строка,СтрокаСохраняемыхРеквизитов); СтрокаТабличнойЧасти.ДатаНачала = Строка.ПериодДействияНачалоСторно; СтрокаТабличнойЧасти.ДатаОкончания = Строка.ПериодДействияКонецСторно; СтрокаТабличнойЧасти.Сторно = Истина; СтрокаТабличнойЧасти.Авторасчет = Истина; КонецПроцедуры Процедура РаспределитьНачисленияПоИФ() // Распределяем по ИФ Отражение = ОтражениеВУчете.РаспределитьРасчетыПоИсточникамФинансирования( Ссылка, "ОсновныеНачисленияРаботниковОрганизаций, |ДополнительныеНачисленияРаботниковОрганизаций"); // сохраняем основные ОтражениеВУчете.ЗаполнитьТЧПоНаборуЗаписей( НачисленияПоИФ, Отражение.БУОсновныеНачисления); // сохраняем дополнительные ОтражениеВУчете.ЗаполнитьТЧПоНаборуЗаписей( ДополнительныеНачисленияПоИФ, Отражение.БУДополнительныеНачисления); // Очищаем движения Отражение.БУОсновныеНачисления.Очистить(); Отражение.БУОсновныеНачисления.Записать(); Отражение.БУДополнительныеНачисления.Очистить(); Отражение.БУДополнительныеНачисления.Записать(); ///////////////////////////////////////////////// // Распределяем вычеты дополнительных начислений ОтражениеВУчете.РаспределитьВычетыДопНачислений(ДополнительныеНачисления, ДополнительныеНачисленияПоИФ, КонецГода(ПериодРегистрации)) КонецПроцедуры //РаспределитьНачисленияПоИФ Процедура ЗаполнитьОтражениеДоговоров(ШапкаДокумента = Неопределено) Если ШапкаДокумента = Неопределено Тогда ШапкаДокумента = ПолучитьШапкуДокумента(); КонецЕсли; // Выгружаем ТЧ в таблицу значений ТаблицаДоговоров = ДоговорыНаВыполнениеРабот.Выгрузить(); // Заполняем таблицу отражением по настройкам ОтражениеВУчете.ЗаполнитьНачисленияИсточникамиФинансирования( ТаблицаДоговоров, "ДатаНачала", Новый Структура("ОбособленноеПодразделение", ШапкаДокумента.ОбособленноеПодразделение)); // Получаем источники из договоров Запрос = Новый Запрос; Запрос.УстановитьПараметр("Договоры", ДоговорыНаВыполнениеРабот.ВыгрузитьКолонку("ДокументОснование")); Запрос.Текст = "ВЫБРАТЬ | ДоговорНаВыполнениеРаботСФизЛицом.Ссылка КАК Договор, | ДоговорНаВыполнениеРаботСФизЛицом.КОСГУ КАК КОСГУ, | ДоговорНаВыполнениеРаботСФизЛицом.СтатьяФинансирования КАК СтатьяФинансирования, | ДоговорНаВыполнениеРаботСФизЛицом.СтатьяРасходов КАК СтатьяРасходов |ИЗ | Документ.ДоговорНаВыполнениеРаботСФизЛицом КАК ДоговорНаВыполнениеРаботСФизЛицом |ГДЕ | ДоговорНаВыполнениеРаботСФизЛицом.Ссылка В(&Договоры)"; ВыборкаДоговоров = Запрос.Выполнить().Выбрать(); СтруктураПоиска = Новый Структура("Договор"); Для Каждого Договор Из ДоговорыНаВыполнениеРабот Цикл СтруктураПоиска.Договор = Договор.ДокументОснование; ВыборкаДоговоров.Сбросить(); Если ВыборкаДоговоров.НайтиСледующий(СтруктураПоиска) Тогда ЗаполнитьЗначенияСвойств(Договор, ВыборкаДоговоров, "КОСГУ, СтатьяФинансирования, СтатьяРасходов"); Иначе Договор.КОСГУ = Справочники.КОСГУ.ПустаяСсылка(); Договор.СтатьяФинансирования = Справочники.СтатьиФинансирования.ПустаяСсылка(); Договор.СтатьяРасходов = Справочники.СтатьиРасходов.ПустаяСсылка(); КонецЕсли; Настройка = ТаблицаДоговоров.Найти(Договор.НомерСтроки, "НомерСтроки"); Если НЕ ЗначениеЗаполнено(Договор.КОСГУ) Тогда Договор.КОСГУ = Настройка.КОСГУ КонецЕсли; Если НЕ ЗначениеЗаполнено(Договор.СтатьяФинансирования) Тогда Договор.СтатьяФинансирования = Настройка.СтатьяФинансирования КонецЕсли; Если НЕ ЗначениеЗаполнено(Договор.СтатьяРасходов) Тогда Договор.СтатьяРасходов = Настройка.СтатьяРасходов КонецЕсли; КонецЦикла; КонецПроцедуры // Распределяет исчисленный НДФЛ по источникам финансирования // // Параметры: // ШапкаДокумента - спозиционированная выборка по шапке документа // Физлицо - ссылка на физлицо, для которого производится расчет, // или массив физлиц для расчета // необязателен, если не указан - расчет производится // для всего документа // Процедура РаспределитьНДФЛПоИФ(ШапкаДокумента, Физлицо = Неопределено) /////////////////////////////////////////////////////////// // Сначала распределим положительные НДФЛ Запрос = Новый Запрос; Запрос.УстановитьПараметр("Организация", ШапкаДокумента.ГоловнаяОрганизация); Запрос.УстановитьПараметр("Регистратор", Ссылка); Запрос.УстановитьПараметр("ПериодРегистрации", ПериодРегистрации); Запрос.УстановитьПараметр("ПоВсемФизлицам", Физлицо = Неопределено); Запрос.УстановитьПараметр("Физлица", Физлицо); Запрос.УстановитьПараметр("ТЧНДФЛ", НДФЛ); Запрос.Текст = "ВЫБРАТЬ | ТЧНДФЛ.ФизЛицо КАК ФизЛицо, | ЗНАЧЕНИЕ(Перечисление.НДФЛСтавкиНалогообложенияРезидента.Ставка13) КАК Ставка, | ТЧНДФЛ.МесяцНалоговогоПериода КАК МесяцНалоговогоПериода, | ТЧНДФЛ.Налог |ПОМЕСТИТЬ ВТНДФЛТекущегоМесяца |ИЗ | &ТЧНДФЛ КАК ТЧНДФЛ |ГДЕ | ТЧНДФЛ.Налог >= 0 | И (&ПоВсемФизлицам | ИЛИ ТЧНДФЛ.ФизЛицо В (&Физлица)) | |ИНДЕКСИРОВАТЬ ПО | МесяцНалоговогоПериода, | ФизЛицо |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | НДФЛСведенияОДоходах.ФизЛицо КАК ФизЛицо, | НДФЛСведенияОДоходах.КодДохода.СтавкаНалогообложенияРезидента КАК Ставка, | НАЧАЛОПЕРИОДА(НДФЛСведенияОДоходах.Период, МЕСЯЦ) КАК МесяцНалоговогоПериода, | НДФЛСведенияОДоходах.ПодразделениеОрганизации КАК Подразделение, | НДФЛСведенияОДоходах.СтатьяФинансирования, | НДФЛСведенияОДоходах.КОСГУ, | СУММА(НДФЛСведенияОДоходах.СуммаДохода) - СУММА(НДФЛСведенияОДоходах.СуммаВычета) КАК Сумма |ПОМЕСТИТЬ ВТДоходыПоИФ |ИЗ | РегистрНакопления.НДФЛСведенияОДоходах КАК НДФЛСведенияОДоходах |ГДЕ | (НАЧАЛОПЕРИОДА(НДФЛСведенияОДоходах.Период, МЕСЯЦ), НДФЛСведенияОДоходах.ФизЛицо) В | (ВЫБРАТЬ | ВТНДФЛТекущегоМесяца.МесяцНалоговогоПериода, | ВТНДФЛТекущегоМесяца.ФизЛицо | ИЗ | ВТНДФЛТекущегоМесяца) | И НДФЛСведенияОДоходах.ПериодРегистрации <= &ПериодРегистрации | И НДФЛСведенияОДоходах.Организация = &Организация | |СГРУППИРОВАТЬ ПО | НДФЛСведенияОДоходах.ФизЛицо, | НДФЛСведенияОДоходах.КодДохода.СтавкаНалогообложенияРезидента, | НДФЛСведенияОДоходах.ПодразделениеОрганизации, | НДФЛСведенияОДоходах.СтатьяФинансирования, | НДФЛСведенияОДоходах.КОСГУ, | НАЧАЛОПЕРИОДА(НДФЛСведенияОДоходах.Период, МЕСЯЦ) | |ИНДЕКСИРОВАТЬ ПО | Ставка, | МесяцНалоговогоПериода, | ФизЛицо |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | Доходы.ФизЛицо КАК ФизЛицо, | Доходы.Ставка КАК Ставка, | Доходы.МесяцНалоговогоПериода КАК МесяцНалоговогоПериода, | СУММА(Доходы.Сумма) КАК Сумма |ПОМЕСТИТЬ ВТДоходы |ИЗ | ВТДоходыПоИФ КАК Доходы | |СГРУППИРОВАТЬ ПО | Доходы.ФизЛицо, | Доходы.Ставка, | Доходы.МесяцНалоговогоПериода | |ИНДЕКСИРОВАТЬ ПО | Ставка, | МесяцНалоговогоПериода, | ФизЛицо |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | НДФЛРасчетыСБюджетом.ФизЛицо КАК ФизЛицо, | НДФЛРасчетыСБюджетом.СтавкаНалогообложенияРезидента КАК Ставка, | НДФЛРасчетыСБюджетом.МесяцНалоговогоПериода КАК МесяцНалоговогоПериода, | НДФЛРасчетыСБюджетом.ПодразделениеОрганизации КАК Подразделение, | НДФЛРасчетыСБюджетом.СтатьяФинансирования КАК СтатьяФинансирования, | НДФЛРасчетыСБюджетом.КОСГУ КАК КОСГУ, | СУММА(НДФЛРасчетыСБюджетом.Налог) КАК Сумма |ПОМЕСТИТЬ ВТНалогиПоИФ |ИЗ | РегистрНакопления.НДФЛРасчетыСБюджетом КАК НДФЛРасчетыСБюджетом |ГДЕ | НДФЛРасчетыСБюджетом.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) | И (НДФЛРасчетыСБюджетом.МесяцНалоговогоПериода, НДФЛРасчетыСБюджетом.ФизЛицо) В | (ВЫБРАТЬ | ВТНДФЛТекущегоМесяца.МесяцНалоговогоПериода, | ВТНДФЛТекущегоМесяца.ФизЛицо | ИЗ | ВТНДФЛТекущегоМесяца) | И НАЧАЛОПЕРИОДА(НДФЛРасчетыСБюджетом.Период, МЕСЯЦ) <= &ПериодРегистрации | И НДФЛРасчетыСБюджетом.Регистратор <> &Регистратор | И НДФЛРасчетыСБюджетом.Организация = &Организация | |СГРУППИРОВАТЬ ПО | НДФЛРасчетыСБюджетом.ФизЛицо, | НДФЛРасчетыСБюджетом.СтавкаНалогообложенияРезидента, | НДФЛРасчетыСБюджетом.МесяцНалоговогоПериода, | НДФЛРасчетыСБюджетом.ПодразделениеОрганизации, | НДФЛРасчетыСБюджетом.СтатьяФинансирования, | НДФЛРасчетыСБюджетом.КОСГУ | |ИНДЕКСИРОВАТЬ ПО | Ставка, | МесяцНалоговогоПериода, | ФизЛицо |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | НДФЛ.ФизЛицо КАК ФизЛицо, | НДФЛ.Ставка КАК Ставка, | НДФЛ.МесяцНалоговогоПериода КАК МесяцНалоговогоПериода, | СУММА(НДФЛ.Сумма) КАК Сумма |ПОМЕСТИТЬ ВТНалоги |ИЗ | (ВЫБРАТЬ | НДФЛПрошлыхПериодов.ФизЛицо КАК ФизЛицо, | НДФЛПрошлыхПериодов.Ставка КАК Ставка, | НДФЛПрошлыхПериодов.МесяцНалоговогоПериода КАК МесяцНалоговогоПериода, | НДФЛПрошлыхПериодов.Сумма КАК Сумма | ИЗ | ВТНалогиПоИФ КАК НДФЛПрошлыхПериодов | | ОБЪЕДИНИТЬ ВСЕ | | ВЫБРАТЬ | НДФЛТекущегоМесяца.ФизЛицо, | НДФЛТекущегоМесяца.Ставка, | НДФЛТекущегоМесяца.МесяцНалоговогоПериода, | НДФЛТекущегоМесяца.Налог | ИЗ | ВТНДФЛТекущегоМесяца КАК НДФЛТекущегоМесяца) КАК НДФЛ | |СГРУППИРОВАТЬ ПО | НДФЛ.ФизЛицо, | НДФЛ.Ставка, | НДФЛ.МесяцНалоговогоПериода | |ИНДЕКСИРОВАТЬ ПО | Ставка, | МесяцНалоговогоПериода, | ФизЛицо |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ДоходыПоИФ.ФизЛицо КАК ФизЛицо, | ДоходыПоИФ.Ставка КАК СтавкаНалогообложенияРезидента, | ДоходыПоИФ.МесяцНалоговогоПериода КАК МесяцНалоговогоПериода, | ДоходыПоИФ.Подразделение КАК ПодразделениеОрганизации, | ДоходыПоИФ.СтатьяФинансирования, | ДоходыПоИФ.КОСГУ, | ВЫБОР | КОГДА Доходы.Сумма <> 0 | ТОГДА ДоходыПоИФ.Сумма / Доходы.Сумма * ЕСТЬNULL(Налоги.Сумма, 0) - ЕСТЬNULL(НалогиПоИФ.Сумма, 0) | ИНАЧЕ 0 | КОНЕЦ КАК Налог |ИЗ | ВТДоходыПоИФ КАК ДоходыПоИФ | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТДоходы КАК Доходы | ПО ДоходыПоИФ.ФизЛицо = Доходы.ФизЛицо | И ДоходыПоИФ.Ставка = Доходы.Ставка | И ДоходыПоИФ.МесяцНалоговогоПериода = Доходы.МесяцНалоговогоПериода | ЛЕВОЕ СОЕДИНЕНИЕ ВТНалоги КАК Налоги | ПО ДоходыПоИФ.ФизЛицо = Налоги.ФизЛицо | И ДоходыПоИФ.Ставка = Налоги.Ставка | И ДоходыПоИФ.МесяцНалоговогоПериода = Налоги.МесяцНалоговогоПериода | ЛЕВОЕ СОЕДИНЕНИЕ ВТНалогиПоИФ КАК НалогиПоИФ | ПО ДоходыПоИФ.ФизЛицо = НалогиПоИФ.ФизЛицо | И ДоходыПоИФ.Ставка = НалогиПоИФ.Ставка | И ДоходыПоИФ.МесяцНалоговогоПериода = НалогиПоИФ.МесяцНалоговогоПериода | И ДоходыПоИФ.Подразделение = НалогиПоИФ.Подразделение | И ДоходыПоИФ.СтатьяФинансирования = НалогиПоИФ.СтатьяФинансирования | И ДоходыПоИФ.КОСГУ = НалогиПоИФ.КОСГУ | |УПОРЯДОЧИТЬ ПО | ФизЛицо, | СтавкаНалогообложенияРезидента, | МесяцНалоговогоПериода"; Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); // Забываем старое распределение Если Физлицо = Неопределено Тогда НДФЛПоИФ.Очистить(); ИначеЕсли ТипЗнч(Физлицо) = Тип("СправочникСсылка.ФизическиеЛица") Тогда СтрокиФизлица = НДФЛПоИФ.НайтиСтроки(Новый Структура("ФизЛицо", Физлицо)); Для Каждого СтрокаТЧ Из СтрокиФизлица Цикл НДФЛПоИФ.Удалить(СтрокаТЧ); КонецЦикла; ИначеЕсли ТипЗнч(Физлицо) = Тип("Массив") Тогда Для каждого ОчередноеФизлицо Из Физлицо Цикл СтрокиФизлица = НДФЛПоИФ.НайтиСтроки(Новый Структура("ФизЛицо", ОчередноеФизлицо)); Для Каждого СтрокаТЧ Из СтрокиФизлица Цикл НДФЛПоИФ.Удалить(СтрокаТЧ); КонецЦикла; КонецЦикла; КонецЕсли; СтрокаДляПогрешности = Неопределено; Погрешность = 0; ТекущийНДФЛ = Новый Структура("ФизЛицо, СтавкаНалогообложенияРезидента, МесяцНалоговогоПериода"); Пока Выборка.Следующий() Цикл Если ТекущийНДФЛ.ФизЛицо <> Выборка.ФизЛицо ИЛИ ТекущийНДФЛ.СтавкаНалогообложенияРезидента <> Выборка.СтавкаНалогообложенияРезидента ИЛИ ТекущийНДФЛ.МесяцНалоговогоПериода <> Выборка.МесяцНалоговогоПериода Тогда УчестьПогрешностьРаспределенияНДФЛПоИФ(СтрокаДляПогрешности, Погрешность, ТекущийНДФЛ, Выборка); СтрокаДляПогрешности = Неопределено; Погрешность = 0; ЗаполнитьЗначенияСвойств(ТекущийНДФЛ, Выборка); КонецЕсли; Если Выборка.Налог > 1 ИЛИ Выборка.Налог < -1 Тогда СтрокаТЧ = НДФЛПоИФ.Добавить(); ЗаполнитьЗначенияСвойств(СтрокаТЧ, Выборка); Если СтрокаДляПогрешности = Неопределено Тогда СтрокаДляПогрешности = СтрокаТЧ; Иначе Если СтрокаДляПогрешности.Налог <= СтрокаТЧ.Налог Тогда СтрокаДляПогрешности = СтрокаТЧ; КонецЕсли; КонецЕсли; // в погрешность помещаем потерянное при округлении Погрешность = Погрешность + (Выборка.Налог - СтрокаТЧ.Налог); Иначе // в погрешность помещаем всю сумму - она меньше рубля, в налог даже не стали класть Погрешность = Погрешность + Выборка.Налог; КонецЕсли; КонецЦикла; Выборка.Сбросить(); Если ЗначениеЗаполнено(СтрокаДляПогрешности) Или Выборка.НайтиСледующий(ТекущийНДФЛ) Тогда УчестьПогрешностьРаспределенияНДФЛПоИФ(СтрокаДляПогрешности, Погрешность, ТекущийНДФЛ, Выборка); КонецЕсли; /////////////////////////////////////////////////////////// // Теперь распределим отрицательные НДФЛ (которые к зачету) Запрос = Новый Запрос; Запрос.УстановитьПараметр("Организация", ШапкаДокумента.ГоловнаяОрганизация); Запрос.УстановитьПараметр("Регистратор", Ссылка); Запрос.УстановитьПараметр("ПериодРегистрации", ПериодРегистрации); Запрос.УстановитьПараметр("ПоВсемФизлицам", Физлицо = Неопределено); Запрос.УстановитьПараметр("Физлица", Физлицо); Запрос.УстановитьПараметр("ТЧНДФЛ", НДФЛ); Запрос.УстановитьПараметр("ПодразделениеОрганизации", ПодразделениеОрганизации); Запрос.УстановитьПараметр("СтатьяФинансирования", Организация.СтатьяФинансирования); Запрос.УстановитьПараметр("КОСГУ", Справочники.КОСГУ.КОСГУ211); Запрос.Текст = "ВЫБРАТЬ | ТЧНДФЛ.ФизЛицо КАК ФизЛицо, | ЗНАЧЕНИЕ(Перечисление.НДФЛСтавкиНалогообложенияРезидента.Ставка13) КАК СтавкаНалогообложенияРезидента, | ТЧНДФЛ.МесяцНалоговогоПериода КАК МесяцНалоговогоПериода, | &ПодразделениеОрганизации КАК ПодразделениеОрганизации, | &СтатьяФинансирования КАК СтатьяФинансирования, | &КОСГУ КАК КОСГУ, | ТЧНДФЛ.Налог |ПОМЕСТИТЬ ВТНДФЛТекущегоМесяца |ИЗ | &ТЧНДФЛ КАК ТЧНДФЛ |ГДЕ | ТЧНДФЛ.Налог < 0 | И (&ПоВсемФизлицам | ИЛИ ТЧНДФЛ.ФизЛицо В (&Физлица)) | |ИНДЕКСИРОВАТЬ ПО | МесяцНалоговогоПериода, | ФизЛицо |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | НДФЛРасчетыСБюджетом.ФизЛицо КАК ФизЛицо, | НДФЛРасчетыСБюджетом.СтавкаНалогообложенияРезидента КАК СтавкаНалогообложенияРезидента, | НДФЛРасчетыСБюджетом.МесяцНалоговогоПериода КАК МесяцНалоговогоПериода, | НДФЛРасчетыСБюджетом.ПодразделениеОрганизации КАК ПодразделениеОрганизации, | НДФЛРасчетыСБюджетом.СтатьяФинансирования КАК СтатьяФинансирования, | НДФЛРасчетыСБюджетом.КОСГУ КАК КОСГУ, | СУММА(НДФЛРасчетыСБюджетом.Налог) КАК Сумма |ПОМЕСТИТЬ ВТНалогиПоИФ |ИЗ | РегистрНакопления.НДФЛРасчетыСБюджетом КАК НДФЛРасчетыСБюджетом |ГДЕ | НДФЛРасчетыСБюджетом.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) | И НДФЛРасчетыСБюджетом.ФизЛицо В | (ВЫБРАТЬ | ВТНДФЛТекущегоМесяца.ФизЛицо | ИЗ | ВТНДФЛТекущегоМесяца) | И НАЧАЛОПЕРИОДА(НДФЛРасчетыСБюджетом.Период, МЕСЯЦ) <= &ПериодРегистрации | И НДФЛРасчетыСБюджетом.Регистратор <> &Регистратор | И НДФЛРасчетыСБюджетом.Организация = &Организация | |СГРУППИРОВАТЬ ПО | НДФЛРасчетыСБюджетом.ФизЛицо, | НДФЛРасчетыСБюджетом.СтавкаНалогообложенияРезидента, | НДФЛРасчетыСБюджетом.МесяцНалоговогоПериода, | НДФЛРасчетыСБюджетом.ПодразделениеОрганизации, | НДФЛРасчетыСБюджетом.СтатьяФинансирования, | НДФЛРасчетыСБюджетом.КОСГУ | |ИНДЕКСИРОВАТЬ ПО | ПодразделениеОрганизации, | МесяцНалоговогоПериода, | ФизЛицо |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | НДФЛ.ФизЛицо КАК ФизЛицо, | НДФЛ.СтавкаНалогообложенияРезидента КАК СтавкаНалогообложенияРезидента, | НДФЛ.МесяцНалоговогоПериода КАК МесяцНалоговогоПериода, | ЕСТЬNULL(НалогиПоИФ.ПодразделениеОрганизации, НДФЛ.ПодразделениеОрганизации) КАК ПодразделениеОрганизации, | ЕСТЬNULL(НалогиПоИФ.СтатьяФинансирования, НДФЛ.СтатьяФинансирования) КАК СтатьяФинансирования, | ЕСТЬNULL(НалогиПоИФ.КОСГУ, НДФЛ.КОСГУ) КАК КОСГУ, | СУММА(ЕСТЬNULL(НалогиПоИФ.Сумма, 0)) КАК Сумма |ИЗ | ВТНДФЛТекущегоМесяца КАК НДФЛ | ЛЕВОЕ СОЕДИНЕНИЕ ВТНалогиПоИФ КАК НалогиПоИФ | ПО (НалогиПоИФ.ФизЛицо = НДФЛ.ФизЛицо) | И (НалогиПоИФ.СтавкаНалогообложенияРезидента = НДФЛ.СтавкаНалогообложенияРезидента) | И (НалогиПоИФ.МесяцНалоговогоПериода <= НДФЛ.МесяцНалоговогоПериода) | |СГРУППИРОВАТЬ ПО | НДФЛ.ФизЛицо, | НДФЛ.СтавкаНалогообложенияРезидента, | НДФЛ.МесяцНалоговогоПериода, | ЕСТЬNULL(НалогиПоИФ.ПодразделениеОрганизации, НДФЛ.ПодразделениеОрганизации), | ЕСТЬNULL(НалогиПоИФ.СтатьяФинансирования, НДФЛ.СтатьяФинансирования), | ЕСТЬNULL(НалогиПоИФ.КОСГУ, НДФЛ.КОСГУ)"; ДанныеУчета = Запрос.Выполнить().Выгрузить(); ПараметрыОтбораБазы = Новый Структура("ФизЛицо, СтавкаНалогообложенияРезидента, МесяцНалоговогоПериода"); Для Каждого СтрокаНДФЛ Из НДФЛ Цикл ЗаполнитьЗначенияСвойств(ПараметрыОтбораБазы, СтрокаНДФЛ); ПараметрыОтбораБазы.СтавкаНалогообложенияРезидента = Перечисления.НДФЛСтавкиНалогообложенияРезидента.Ставка13; База = ДанныеУчета.Скопировать(ПараметрыОтбораБазы); Коэффициенты = База.ВыгрузитьКолонку("Сумма"); РаспределенныеРезультаты = ОбщегоНазначения.РаспределитьПропорционально(СтрокаНДФЛ.Налог, Коэффициенты, 0); Если РаспределенныеРезультаты <> Неопределено Тогда Для Н = 0 По РаспределенныеРезультаты.Количество() - 1 Цикл СтрокаТЧ = НДФЛПоИФ.Добавить(); ЗаполнитьЗначенияСвойств(СтрокаТЧ, СтрокаНДФЛ); ЗаполнитьЗначенияСвойств(СтрокаТЧ, База[Н]); СтрокаТЧ["Налог"] = РаспределенныеРезультаты[Н]; КонецЦикла; КонецЕсли; КонецЦикла; КонецПроцедуры //РаспределитьНДФЛПоИФ Процедура УчестьПогрешностьРаспределенияНДФЛПоИФ(СтрокаДляПогрешности, Знач Погрешность, ТекущийНДФЛ, Выборка) Если ЗначениеЗаполнено(СтрокаДляПогрешности) Тогда СтрокаДляПогрешности.Налог = СтрокаДляПогрешности.Налог + Погрешность; Иначе Погрешность = Окр(Погрешность, 0); Если Погрешность <> 0 Тогда СтрокаДляПогрешности = НДФЛПоИФ.Добавить(); ЗаполнитьЗначенияСвойств(СтрокаДляПогрешности, Выборка); // Ключевые поля берем по текущему НДФЛ ЗаполнитьЗначенияСвойств(СтрокаДляПогрешности, ТекущийНДФЛ); СтрокаДляПогрешности.Налог = Погрешность; КонецЕсли КонецЕсли; КонецПроцедуры Процедура РаспределитьУдержанияПоИФ(ШапкаДокумента, Физлицо = Неопределено) // переносим отражение начислений в регистры ОбщиеПоля = Новый Структура( "ПериодРегистрации, |Организация, |ОбособленноеПодразделение", ШапкаДокумента.ПериодРегистрации, ШапкаДокумента.ГоловнаяОрганизация, ШапкаДокумента.ОбособленноеПодразделение); Если Физлицо = Неопределено Тогда Отбор = Неопределено Иначе Отбор = Новый Структура("ФизЛицо", ФизЛицо) КонецЕсли; Движения.БУОсновныеНачисления.мВыполнятьДвиженияПоЕСН = Ложь; Движения.БУДополнительныеНачисления.мВыполнятьДвиженияПоЕСН = Ложь; ОтражениеВУчете.ЗаполнитьНаборЗаписейПоТЧ(Движения.БУОсновныеНачисления, НачисленияПоИФ, ОбщиеПоля, Отбор); ОтражениеВУчете.ЗаполнитьНаборЗаписейПоТЧ(Движения.БУДополнительныеНачисления, ДополнительныеНачисленияПоИФ, ОбщиеПоля, Отбор); ОтражениеВУчете.ЗаполнитьНаборЗаписейПоТЧ(Движения.БУДополнительныеНачисления, СформироватьЗапросПоДоговорам(ШапкаДокумента).Выгрузить(), ОбщиеПоля, Отбор); Движения.БУОсновныеНачисления.Записать(); Движения.БУДополнительныеНачисления.Записать(); // Теперь можно распределять // Распределяем по ИФ Отражение = ОтражениеВУчете.РаспределитьРасчетыПоИсточникамФинансирования( Ссылка, "УдержанияРаботниковОрганизаций"); // сохраняем удержания ОтражениеВУчете.ЗаполнитьТЧПоНаборуЗаписей( УдержанияПоИФ, Отражение.БУУдержания); // Очищаем движения удержаний Движения.БУУдержания.Очистить(); Движения.БУУдержания.Записать(); // Очищаем движения начислений Движения.БУОсновныеНачисления.Очистить(); Движения.БУДополнительныеНачисления.Очистить(); Движения.БУОсновныеНачисления.Записать(); Движения.БУДополнительныеНачисления.Записать(); Движения.БУОсновныеНачисления.мВыполнятьДвиженияПоЕСН = Истина; Движения.БУДополнительныеНачисления.мВыполнятьДвиженияПоЕСН = Истина; КонецПроцедуры //РаспределитьУдержанияПоИФ #Если Клиент Тогда // Расчерчивает разделы расчетного листка линиями // // Параметры // ВременныйТабличныйДокумент - Табличный документ с уже выведенными строками расчетного листка // СтрокПропустить - целое число уже обработанных ранее строк т.д. // СтрокРасчертить - целое число строк т.д., которым требуется указать границы // Процедура РасчертитьРасчетныйЛисток(ВременныйТабличныйДокумент,СтрокПропустить,СтрокРасчертить) Линия = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная, 1); Для Сч = 0 По СтрокРасчертить - 1 Цикл НомерСтроки = СтрокПропустить + Сч; Для Ссч = 2 По 17 Цикл Если Ссч = 4 ИЛИ Ссч = 10 ИЛИ Ссч = 13 ИЛИ Ссч = 15 Тогда Продолжить КонецЕсли; ВременныйТабличныйДокумент.Область(НомерСтроки, Ссч).ГраницаСлева = Линия; КонецЦикла; ВременныйТабличныйДокумент.Область(НомерСтроки, 15).ГраницаСправа = Линия; ВременныйТабличныйДокумент.Область(НомерСтроки, 2, НомерСтроки, 15).ГраницаСнизу = Линия; КонецЦикла; КонецПроцедуры // РасчертитьРасчетныйЛисток() #КонецЕсли Функция ПолучитьИнформациюОВидахРасчетаДоп() Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ДополнительныеНачисленияОрганизаций.Ссылка КАК ВидРасчета, | ДополнительныеНачисленияОрганизаций.СпособРасчета КАК СпособРасчета, | ДополнительныеНачисленияОрганизаций.КодДоходаНДФЛ КАК КодДоходаНДФЛ |ИЗ | ПланВидовРасчета.ДополнительныеНачисленияОрганизаций КАК ДополнительныеНачисленияОрганизаций"; Возврат Запрос.Выполнить().Выгрузить(); КонецФункции Функция ПолучитьДоплатыЗаНочныеВечерние() Запрос = Новый Запрос; Запрос.УстановитьПараметр("Организация", Организация); Запрос.Текст = "ВЫБРАТЬ | ВЫБОР | КОГДА 1 В | (ВЫБРАТЬ ПЕРВЫЕ 1 | 1 | ИЗ | ПланВидовРасчета.ОсновныеНачисленияОрганизаций КАК ОсновныеНачисленияОрганизаций | ГДЕ | ОсновныеНачисленияОрганизаций.АвтоНачислятьПоТабелю | И ОсновныеНачисленияОрганизаций.ОбозначениеВТабелеУчетаРабочегоВремени = ЗНАЧЕНИЕ(Справочник.КлассификаторИспользованияРабочегоВремени.РаботаНочныеЧасы)) | ТОГДА ИСТИНА | ИНАЧЕ ЛОЖЬ | КОНЕЦ КАК АвтоНачислятьПоТабелюНочные, | ВЫБОР | КОГДА 1 В | (ВЫБРАТЬ ПЕРВЫЕ 1 | 1 | ИЗ | ПланВидовРасчета.ОсновныеНачисленияОрганизаций КАК ОсновныеНачисленияОрганизаций | ГДЕ | ОсновныеНачисленияОрганизаций.АвтоНачислятьПоТабелю | И ОсновныеНачисленияОрганизаций.ОбозначениеВТабелеУчетаРабочегоВремени = ЗНАЧЕНИЕ(Справочник.КлассификаторИспользованияРабочегоВремени.РаботаВечерниеЧасы)) | ТОГДА ИСТИНА | ИНАЧЕ ЛОЖЬ | КОНЕЦ КАК АвтоНачислятьПоТабелюВечерние |ПОМЕСТИТЬ ПризнакиАвтоначисления |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ОсновныеНачисленияОрганизаций.Ссылка, | ОсновныеНачисленияОрганизаций.ОбозначениеВТабелеУчетаРабочегоВремени |ПОМЕСТИТЬ НачисленияСПризнаком |ИЗ | ПланВидовРасчета.ОсновныеНачисленияОрганизаций КАК ОсновныеНачисленияОрганизаций |ГДЕ | ОсновныеНачисленияОрганизаций.АвтоНачислятьПоТабелю | И ОсновныеНачисленияОрганизаций.ОбозначениеВТабелеУчетаРабочегоВремени В (ЗНАЧЕНИЕ(Справочник.КлассификаторИспользованияРабочегоВремени.РаботаНочныеЧасы), ЗНАЧЕНИЕ(Справочник.КлассификаторИспользованияРабочегоВремени.РаботаВечерниеЧасы)) |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ВЫБОР | КОГДА ПризнакиАвтоначисления.АвтоНачислятьПоТабелюНочные | ТОГДА НочныеНачисленияСПризнаком.Ссылка | ИНАЧЕ ЗНАЧЕНИЕ(ПланВидовРасчета.ОсновныеНачисленияОрганизаций.ДоплатаЗаНочныеЧасы) | КОНЕЦ КАК ДоплатаЗаНочныеЧасы, | ВЫБОР | КОГДА ПризнакиАвтоначисления.АвтоНачислятьПоТабелюВечерние | ТОГДА ВечерниеНачисленияСПризнаком.Ссылка | ИНАЧЕ ЗНАЧЕНИЕ(ПланВидовРасчета.ОсновныеНачисленияОрганизаций.ДоплатаЗаВечерниеЧасы) | КОНЕЦ КАК ДоплатаЗаВечерниеЧасы, | ЕСТЬNULL(УчетнаяПолитикаПоРасчетуЗарплатыОрганизаций.ПроцентДоплатыЗаРаботуВНочноеВремя, 20) КАК ПроцентДоплатыЗаНочныеЧасы, | ЕСТЬNULL(УчетнаяПолитикаПоРасчетуЗарплатыОрганизаций.ПроцентДоплатыЗаРаботуВВечернееВремя, 10) КАК ПроцентДоплатыЗаВечерниеЧасы |ИЗ | ПризнакиАвтоначисления КАК ПризнакиАвтоначисления | ЛЕВОЕ СОЕДИНЕНИЕ НачисленияСПризнаком КАК НочныеНачисленияСПризнаком | ПО (НочныеНачисленияСПризнаком.ОбозначениеВТабелеУчетаРабочегоВремени = ЗНАЧЕНИЕ(Справочник.КлассификаторИспользованияРабочегоВремени.РаботаНочныеЧасы)) | ЛЕВОЕ СОЕДИНЕНИЕ НачисленияСПризнаком КАК ВечерниеНачисленияСПризнаком | ПО (ВечерниеНачисленияСПризнаком.ОбозначениеВТабелеУчетаРабочегоВремени = ЗНАЧЕНИЕ(Справочник.КлассификаторИспользованияРабочегоВремени.РаботаВечерниеЧасы)) | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.УчетнаяПолитикаПоРасчетуЗарплатыОрганизаций КАК УчетнаяПолитикаПоРасчетуЗарплатыОрганизаций | ПО (УчетнаяПолитикаПоРасчетуЗарплатыОрганизаций.Организация = &Организация)"; Выборка = Запрос.Выполнить().Выбрать(); Выборка.Следующий(); Возврат Выборка; КонецФункции //////////////////////////////////////////////////////////////////////////////// // ПРОЦЕДУРЫ И ФУНКЦИИ ДЛЯ ОБЕСПЕЧЕНИЯ ПРОВЕДЕНИЯ ДОКУМЕНТА // По начислениям документа формируем движения по НДФЛРасчетыСБюджетом // // Параметры: // ШапкаДокумента - выборка по данным шапки документа // НаборЗаписей - набор записей для НДФЛРасчетыСБюджетом // // Возвращаемое значение: // Нет. // Процедура ЗаполнитьНаборЗаписейНДФЛПоНачислениям(ШапкаДокумента, НаборЗаписей, Физлица = Неопределено) // получим реквизиты табличной части НДФЛПоИФ ВыборкаПоНДФЛ = СформироватьЗапросПоНДФЛ(Физлица).Выбрать(); Пока ВыборкаПоНДФЛ.Следующий() Цикл // Заполним записи в наборах записей регистров ДобавитьСтрокуНДФЛ(ВыборкаПоНДФЛ, ШапкаДокумента, НаборЗаписей); КонецЦикла; КонецПроцедуры //ЗаполнитьНаборЗаписейНДФЛПоНачислениям Функция ПолучитьШапкуДокумента() ШапкаДокумента = Новый Структура( "Ссылка, |Дата, |ПериодРегистрации, |Организация, |ГоловнаяОрганизация, |ОбособленноеПодразделение, |ЭтоРасчетПервойПоловиныМесяца, |НачисленияКоличествоСтрок, |ПерерассчитываемыйДокумент, |ПериодПерерасчета, |ОрганизацияПерерасчета"); ШапкаДокумента.Ссылка = Ссылка; ШапкаДокумента.Дата = Дата; ШапкаДокумента.ПериодРегистрации = ПериодРегистрации; ШапкаДокумента.Организация = Организация; ШапкаДокумента.ГоловнаяОрганизация = ОбщегоНазначения.ГоловнаяОрганизация(Организация); ШапкаДокумента.ОбособленноеПодразделение = Организация; ШапкаДокумента.ЭтоРасчетПервойПоловиныМесяца = ЭтотОбъект.ПериодНачисления = Перечисления.ПериодНачисленияЗарплаты.ПерваяПоловинаТекущегоМесяца; ШапкаДокумента.ПерерассчитываемыйДокумент = ПерерассчитываемыйДокумент; Если НЕ ЗначениеЗаполнено(ПерерассчитываемыйДокумент) Тогда ШапкаДокумента.ПериодПерерасчета = null; ШапкаДокумента.ОрганизацияПерерасчета = null; Иначе Запрос = Новый Запрос; // Установим параметры запроса Запрос.УстановитьПараметр("ПерерассчитываемыйДокумент" , ПерерассчитываемыйДокумент); Запрос.Текст = "ВЫБРАТЬ | НачислениеЗарплатыРаботникамОрганизаций.ПерерассчитываемыйДокумент.ПериодРегистрации КАК ПериодПерерасчета, | НачислениеЗарплатыРаботникамОрганизаций.ПерерассчитываемыйДокумент.Организация КАК ОрганизацияПерерасчета |ИЗ | Документ.НачислениеЗарплатыРаботникамОрганизаций КАК НачислениеЗарплатыРаботникамОрганизаций |ГДЕ | НачислениеЗарплатыРаботникамОрганизаций.Ссылка = &ПерерассчитываемыйДокумент"; ВыборкаПоПерерасчету = Запрос.Выполнить().Выбрать(); ВыборкаПоПерерасчету.Следующий(); ШапкаДокумента.ПериодПерерасчета = ВыборкаПоПерерасчету.ПериодПерерасчета; ШапкаДокумента.ОрганизацияПерерасчета = ВыборкаПоПерерасчету.ОрганизацияПерерасчета; КонецЕсли; Возврат(ШапкаДокумента) КонецФункции //ПолучитьШапкуДокумента // Формирует запрос по вычетам по таблице "НДФЛ" документа // // Параметры: // нет // Возвращаемое значение: // Результат запроса. // Функция ПодготовитьЗапросПоНДФЛВычеты(ШапкаДокумента, Физлица = Неопределено) Запрос = Новый Запрос; Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц; // Установим параметры запроса Запрос.УстановитьПараметр("ДокументСсылка", Ссылка); Запрос.УстановитьПараметр("ПоВсемФизлицам", Физлица = Неопределено); Запрос.УстановитьПараметр("Физлица", Физлица); Запрос.УстановитьПараметр("парамОрганизация", ШапкаДокумента.ГоловнаяОрганизация); Запрос.УстановитьПараметр("парамОбособленноеПодразделение", ШапкаДокумента.ОбособленноеПодразделение); // Временная таблица ПодразделенияРаботников // Поля: // Физлицо // Период // ПодразделениеОрганизации // УжеУволен // ДатаДвижения // // Описание: // список подразделений в которых работают физлица по трудовым договорам по состоянию на конец месяца налогового периода // Временная таблица ПодразделенияДоговорников // Поля: // Физлицо // Период // ПодразделениеОрганизации // ДатаНачала // // Описание: // список подразделений в которых работают физлица по договорам ГПХ по состоянию на конец месяца налогового периода // Основной запрос // // Описание: // как правило, используется подразделение по данным кадрового учета работающих по трудовым договорам // подразделение по договору ГПХ берется в следующих случаях: // - сотрудник никогда не имел трудовых отношений с нашей организацией // - на конец месяца сотрудник уже уволен со всех мест работы в нашей организации, // но после даты увольнения с ним заключен договор ГПХ Запрос.Текст = "ВЫБРАТЬ | СтрокиНДФЛ.НомерСтроки, | СтрокиНДФЛ.МесяцНалоговогоПериода КАК МесяцНалоговогоПериода, | СтрокиНДФЛ.ФизЛицо КАК ФизЛицо, | СтрокиНДФЛ.ПримененныйВычетЛичный, | СтрокиНДФЛ.ПримененныйВычетНаДетей, | СтрокиНДФЛ.ПримененныйВычетНаДетейДвойной, | СтрокиНДФЛ.ПримененныйВычетНаДетейДвойнойВторой, | СтрокиНДФЛ.ПримененныйВычетНаДетейИнвалидов, | СтрокиНДФЛ.ПримененныйВычетНаДетейИнвалидовДвойной, | СтрокиНДФЛ.ПримененныйВычетНаДетейИнвалидовДвойнойВторой, | СтрокиНДФЛ.ПримененныйВычетИмущественныйРасход, | СтрокиНДФЛ.ПримененныйВычетИмущественныйПроцентыПоКредитам, | СтрокиНДФЛ.Ссылка |ПОМЕСТИТЬ ВТСтрокиНДФЛ |ИЗ | Документ.НачислениеЗарплатыРаботникамОрганизаций.НДФЛ КАК СтрокиНДФЛ |ГДЕ | СтрокиНДФЛ.Ссылка = &ДокументСсылка | И (&ПоВсемФизлицам | ИЛИ СтрокиНДФЛ.ФизЛицо В (&Физлица)) | И (СтрокиНДФЛ.ПримененныйВычетЛичный <> 0 | ИЛИ СтрокиНДФЛ.ПримененныйВычетНаДетей <> 0 | ИЛИ СтрокиНДФЛ.ПримененныйВычетНаДетейДвойной <> 0 | ИЛИ СтрокиНДФЛ.ПримененныйВычетНаДетейДвойнойВторой <> 0 | ИЛИ СтрокиНДФЛ.ПримененныйВычетНаДетейИнвалидов <> 0 | ИЛИ СтрокиНДФЛ.ПримененныйВычетНаДетейИнвалидовДвойной <> 0 | ИЛИ СтрокиНДФЛ.ПримененныйВычетНаДетейИнвалидовДвойнойВторой <> 0 | ИЛИ СтрокиНДФЛ.ПримененныйВычетИмущественныйРасход <> 0 | ИЛИ СтрокиНДФЛ.ПримененныйВычетИмущественныйПроцентыПоКредитам <> 0) | |ИНДЕКСИРОВАТЬ ПО | ФизЛицо, | МесяцНалоговогоПериода |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | Периоды.Физлицо КАК Физлицо, | Периоды.Период КАК Период, | РаботникиОрганизаций.Сотрудник КАК Сотрудник |ПОМЕСТИТЬ ВТПоследниеСотрудники |ИЗ | (ВЫБРАТЬ | Периоды.ФизЛицо КАК Физлицо, | Периоды.МесяцНалоговогоПериода КАК Период, | МАКСИМУМ(РаботникиОрганизаций.Период) КАК ДатаРегистра, | РаботникиОрганизаций.Организация КАК Организация | ИЗ | ВТСтрокиНДФЛ КАК Периоды | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций | ПО (КОНЕЦПЕРИОДА(Периоды.МесяцНалоговогоПериода, МЕСЯЦ) >= РаботникиОрганизаций.Период) | И Периоды.ФизЛицо = РаботникиОрганизаций.Сотрудник.Физлицо | ГДЕ | РаботникиОрганизаций.Организация = &парамОрганизация | И РаботникиОрганизаций.Сотрудник.ВидЗанятости <> ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.ВнутреннееСовместительство) | И ВЫБОР | КОГДА КОНЕЦПЕРИОДА(Периоды.МесяцНалоговогоПериода, МЕСЯЦ) >= РаботникиОрганизаций.ПериодЗавершения | И РаботникиОрганизаций.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | ТОГДА РаботникиОрганизаций.ПричинаИзмененияСостоянияЗавершения | ИНАЧЕ РаботникиОрганизаций.ПричинаИзмененияСостояния | КОНЕЦ <> ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение) | | СГРУППИРОВАТЬ ПО | Периоды.ФизЛицо, | Периоды.МесяцНалоговогоПериода, | РаботникиОрганизаций.Организация) КАК Периоды | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций | ПО Периоды.Физлицо = РаботникиОрганизаций.Сотрудник.Физлицо | И Периоды.ДатаРегистра = РаботникиОрганизаций.Период | И Периоды.Организация = РаботникиОрганизаций.Организация | И (ВЫБОР | КОГДА КОНЕЦПЕРИОДА(Периоды.Период, МЕСЯЦ) >= РаботникиОрганизаций.ПериодЗавершения | И РаботникиОрганизаций.ПериодЗавершения <> ДАТАВРЕМЯ(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 | ТОГДА ПодразделенияДоговорников.ПодразделениеОрганизации | ИНАЧЕ ЕСТЬNULL(ПодразделенияРаботников.ПодразделениеОрганизации, ПодразделенияДоговорников.ПодразделениеОрганизации) | КОНЕЦ КАК ПодразделениеОрганизации |ПОМЕСТИТЬ ВТВычетыСПодразделениями |ИЗ | ВТСтрокиНДФЛ КАК СтрокиНДФЛ | ЛЕВОЕ СОЕДИНЕНИЕ ВТПодразделенияРаботников КАК ПодразделенияРаботников | ПО СтрокиНДФЛ.МесяцНалоговогоПериода = ПодразделенияРаботников.Период | И СтрокиНДФЛ.ФизЛицо = ПодразделенияРаботников.Физлицо | ЛЕВОЕ СОЕДИНЕНИЕ ВТПодразделенияДоговорников КАК ПодразделенияДоговорников | ПО СтрокиНДФЛ.МесяцНалоговогоПериода = ПодразделенияДоговорников.Период | И СтрокиНДФЛ.ФизЛицо = ПодразделенияДоговорников.Физлицо | |ИНДЕКСИРОВАТЬ ПО | НомерСтроки"; Запрос.Выполнить(); Возврат Запрос; КонецФункции // ПодготовитьЗапросПоНДФЛВычеты() Функция СформироватьЗапросПоНДФЛВычеты(Запрос) Запрос.Текст = "ВЫБРАТЬ | СтрокиНДФЛ.НомерСтроки, | СтрокиНДФЛ.МесяцНалоговогоПериода КАК МесяцНалоговогоПериода, | СтрокиНДФЛ.ПримененныйВычетНаДетей, | СтрокиНДФЛ.ПримененныйВычетНаДетейДвойной, | СтрокиНДФЛ.ПримененныйВычетНаДетейДвойнойВторой, | СтрокиНДФЛ.ПримененныйВычетНаДетейИнвалидов, | СтрокиНДФЛ.ПримененныйВычетНаДетейИнвалидовДвойной, | СтрокиНДФЛ.ПримененныйВычетНаДетейИнвалидовДвойнойВторой, | СтрокиНДФЛ.ПримененныйВычетИмущественныйРасход, | СтрокиНДФЛ.ПримененныйВычетИмущественныйПроцентыПоКредитам, | СтрокиНДФЛ.ФизЛицо КАК ФизЛицо, | СтрокиНДФЛ.ПодразделениеОрганизации |ИЗ | ВТВычетыСПодразделениями КАК СтрокиНДФЛ | |УПОРЯДОЧИТЬ ПО | ФизЛицо, | МесяцНалоговогоПериода"; Возврат Запрос.Выполнить(); КонецФункции // СформироватьЗапросПоНДФЛВычеты() Функция СформироватьЗапросПоЛичнымВычетам(Запрос) Запрос.Текст = "ВЫБРАТЬ | СтрокиНДФЛ.НомерСтроки, | СтрокиНДФЛ.МесяцНалоговогоПериода КАК МесяцНалоговогоПериода, | ВЫБОР | КОГДА СтрокиНДФЛ.Ссылка.Организация.ГоловнаяОрганизация = ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка) | ТОГДА СтрокиНДФЛ.Ссылка.Организация | ИНАЧЕ СтрокиНДФЛ.Ссылка.Организация.ГоловнаяОрганизация | КОНЕЦ КАК ГоловнаяОрганизация, | СтрокиНДФЛ.ПримененныйВычетЛичный, | СтрокиНДФЛ.ФизЛицо КАК ФизЛицо, | СтрокиНДФЛ.ПодразделениеОрганизации |ПОМЕСТИТЬ ВТДанныеДокумента |ИЗ | ВТВычетыСПодразделениями КАК СтрокиНДФЛ |ГДЕ | СтрокиНДФЛ.ПримененныйВычетЛичный <> 0 | |ИНДЕКСИРОВАТЬ ПО | ФизЛицо, | МесяцНалоговогоПериода |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ДатыРегистра.НомерСтроки КАК НомерСтроки, | ВычетыФизлиц.КодВычетаЛичный КАК КодВычетаЛичный |ПОМЕСТИТЬ ВТКодыЛичныхВычетов |ИЗ | (ВЫБРАТЬ РАЗЛИЧНЫЕ | МАКСИМУМ(ВычетыФизлиц.Период) КАК ПериодСреза, | Периоды.ФизЛицо КАК ФизЛицо, | Периоды.НомерСтроки КАК НомерСтроки | ИЗ | ВТДанныеДокумента КАК Периоды | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НДФЛСтандартныеВычетыФизлиц КАК ВычетыФизлиц | ПО Периоды.МесяцНалоговогоПериода >= ВычетыФизлиц.Период | И Периоды.ФизЛицо = ВычетыФизлиц.Физлицо | ГДЕ | Периоды.ПримененныйВычетЛичный <> 0 | И ВычетыФизлиц.КодВычетаЛичный <> ЗНАЧЕНИЕ(Справочник.ВычетыНДФЛ.ПустаяСсылка) | | СГРУППИРОВАТЬ ПО | Периоды.ФизЛицо, | Периоды.НомерСтроки) КАК ДатыРегистра | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НДФЛСтандартныеВычетыФизлиц КАК ВычетыФизлиц | ПО ДатыРегистра.ФизЛицо = ВычетыФизлиц.Физлицо | И ДатыРегистра.ПериодСреза = ВычетыФизлиц.Период |ГДЕ | ВычетыФизлиц.КодВычетаЛичный ЕСТЬ НЕ NULL | |ИНДЕКСИРОВАТЬ ПО | НомерСтроки |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ДанныеДокумента.ГоловнаяОрганизация, | ДанныеДокумента.ФизЛицо КАК ФизЛицо, | ГОД(ДанныеДокумента.МесяцНалоговогоПериода) КАК НалоговыйПериод, | СУММА(ДанныеДокумента.ПримененныйВычетЛичный) КАК ПримененныйВычетСторно, | МАКСИМУМ(ДанныеДокумента.МесяцНалоговогоПериода) КАК МаксимальныйМесяцНалоговогоПериода |ПОМЕСТИТЬ ВТОтрицательныеВычетыЗаГод |ИЗ | ВТДанныеДокумента КАК ДанныеДокумента | ЛЕВОЕ СОЕДИНЕНИЕ ВТКодыЛичныхВычетов КАК ВычетыФизлиц | ПО ДанныеДокумента.НомерСтроки = ВычетыФизлиц.НомерСтроки |ГДЕ | ВычетыФизлиц.КодВычетаЛичный ЕСТЬ NULL | |СГРУППИРОВАТЬ ПО | ДанныеДокумента.ФизЛицо, | ДанныеДокумента.ГоловнаяОрганизация, | ГОД(ДанныеДокумента.МесяцНалоговогоПериода) | |ИМЕЮЩИЕ | СУММА(ДанныеДокумента.ПримененныйВычетЛичный) < 0 | |ИНДЕКСИРОВАТЬ ПО | ФизЛицо, | НалоговыйПериод |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ДанныеДокумента.ФизЛицо КАК ФизЛицо, | ДанныеДокумента.НалоговыйПериод КАК НалоговыйПериод, | НДФЛПредоставленныеСтандартныеВычетыФизЛиц.КодВычета, | СУММА(НДФЛПредоставленныеСтандартныеВычетыФизЛиц.ПримененныйВычет) КАК РанееПримененныйВычет |ПОМЕСТИТЬ ВТУжеПредоставленныеВычеты |ИЗ | ВТОтрицательныеВычетыЗаГод КАК ДанныеДокумента | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.НДФЛПредоставленныеСтандартныеВычетыФизЛиц КАК НДФЛПредоставленныеСтандартныеВычетыФизЛиц | ПО ДанныеДокумента.ФизЛицо = НДФЛПредоставленныеСтандартныеВычетыФизЛиц.ФизЛицо | И ДанныеДокумента.ГоловнаяОрганизация = НДФЛПредоставленныеСтандартныеВычетыФизЛиц.Организация | И (НДФЛПредоставленныеСтандартныеВычетыФизЛиц.МесяцНалоговогоПериода МЕЖДУ НАЧАЛОПЕРИОДА(ДанныеДокумента.МаксимальныйМесяцНалоговогоПериода, ГОД) И КОНЕЦПЕРИОДА(ДанныеДокумента.МаксимальныйМесяцНалоговогоПериода, МЕСЯЦ)) |ГДЕ | НДФЛПредоставленныеСтандартныеВычетыФизЛиц.КодВычета В (ЗНАЧЕНИЕ(Справочник.ВычетыНДФЛ.Код103), ЗНАЧЕНИЕ(Справочник.ВычетыНДФЛ.Код104), ЗНАЧЕНИЕ(Справочник.ВычетыНДФЛ.Код105)) | И НДФЛПредоставленныеСтандартныеВычетыФизЛиц.Регистратор <> &ДокументСсылка | |СГРУППИРОВАТЬ ПО | ДанныеДокумента.ФизЛицо, | ДанныеДокумента.НалоговыйПериод, | ДанныеДокумента.ПримененныйВычетСторно, | НДФЛПредоставленныеСтандартныеВычетыФизЛиц.КодВычета | |ИНДЕКСИРОВАТЬ ПО | ФизЛицо, | НалоговыйПериод |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ДанныеДокумента.ФизЛицо КАК ФизЛицо, | ДанныеДокумента.НалоговыйПериод КАК НалоговыйПериод |ПОМЕСТИТЬ ВТЕстьРанееПредоставленныеВычеты |ИЗ | ВТОтрицательныеВычетыЗаГод КАК ДанныеДокумента | ЛЕВОЕ СОЕДИНЕНИЕ ВТУжеПредоставленныеВычеты КАК СтандартныеВычеты | ПО ДанныеДокумента.ФизЛицо = СтандартныеВычеты.ФизЛицо | И ДанныеДокумента.НалоговыйПериод = СтандартныеВычеты.НалоговыйПериод | |СГРУППИРОВАТЬ ПО | ДанныеДокумента.ФизЛицо, | ДанныеДокумента.НалоговыйПериод, | ДанныеДокумента.ПримененныйВычетСторно | |ИМЕЮЩИЕ | СУММА(СтандартныеВычеты.РанееПримененныйВычет) >= -ДанныеДокумента.ПримененныйВычетСторно | |ИНДЕКСИРОВАТЬ ПО | ФизЛицо, | НалоговыйПериод |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | СтрокиНДФЛ.НомерСтроки КАК НомерСтроки, | СтрокиНДФЛ.ПримененныйВычетЛичный |ИЗ | ВТДанныеДокумента КАК СтрокиНДФЛ | ЛЕВОЕ СОЕДИНЕНИЕ ВТКодыЛичныхВычетов КАК ВычетыФизлиц | ПО СтрокиНДФЛ.НомерСтроки = ВычетыФизлиц.НомерСтроки | ЛЕВОЕ СОЕДИНЕНИЕ ВТЕстьРанееПредоставленныеВычеты КАК СторнируемыеВычеты | ПО СтрокиНДФЛ.ФизЛицо = СторнируемыеВычеты.ФизЛицо | И (ГОД(СтрокиНДФЛ.МесяцНалоговогоПериода) = СторнируемыеВычеты.НалоговыйПериод) |ГДЕ | СторнируемыеВычеты.ФизЛицо ЕСТЬ NULL | И ВычетыФизлиц.КодВычетаЛичный ЕСТЬ NULL | И СтрокиНДФЛ.ФизЛицо <> ЗНАЧЕНИЕ(Справочник.ФизическиеЛица.ПустаяСсылка) | |УПОРЯДОЧИТЬ ПО | НомерСтроки |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | СтрокиНДФЛ.НомерСтроки КАК НомерСтроки, | СтрокиНДФЛ.МесяцНалоговогоПериода КАК МесяцНалоговогоПериода, | СтрокиНДФЛ.ПримененныйВычетЛичный, | ВычетыФизлиц.КодВычетаЛичный КАК КодВычетаЛичный, | СтрокиНДФЛ.ФизЛицо, | СтрокиНДФЛ.ПодразделениеОрганизации |ИЗ | ВТДанныеДокумента КАК СтрокиНДФЛ | ЛЕВОЕ СОЕДИНЕНИЕ ВТКодыЛичныхВычетов КАК ВычетыФизлиц | ПО СтрокиНДФЛ.НомерСтроки = ВычетыФизлиц.НомерСтроки |ГДЕ | ВычетыФизлиц.КодВычетаЛичный ЕСТЬ НЕ NULL | |УПОРЯДОЧИТЬ ПО | НомерСтроки |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | СторнируемыеВычеты.ФизЛицо КАК ФизЛицо, | СторнируемыеВычеты.НалоговыйПериод КАК НалоговыйПериод, | СтрокиНДФЛ.МесяцНалоговогоПериода КАК МесяцНалоговогоПериода, | СУММА(СтрокиНДФЛ.ПримененныйВычетЛичный) КАК ПримененныйВычетЛичный, | СтрокиНДФЛ.ПодразделениеОрганизации |ИЗ | ВТЕстьРанееПредоставленныеВычеты КАК СторнируемыеВычеты | ЛЕВОЕ СОЕДИНЕНИЕ ВТДанныеДокумента КАК СтрокиНДФЛ | ПО (ГОД(СтрокиНДФЛ.МесяцНалоговогоПериода) = СторнируемыеВычеты.НалоговыйПериод) | И СторнируемыеВычеты.ФизЛицо = СтрокиНДФЛ.ФизЛицо | |СГРУППИРОВАТЬ ПО | СторнируемыеВычеты.ФизЛицо, | СтрокиНДФЛ.МесяцНалоговогоПериода, | СторнируемыеВычеты.НалоговыйПериод, | СтрокиНДФЛ.ПодразделениеОрганизации | |УПОРЯДОЧИТЬ ПО | ФизЛицо, | НалоговыйПериод, | МесяцНалоговогоПериода |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ВТУжеПредоставленныеВычеты.ФизЛицо КАК ФизЛицо, | ВТУжеПредоставленныеВычеты.НалоговыйПериод КАК НалоговыйПериод, | ВТУжеПредоставленныеВычеты.КодВычета, | ВТУжеПредоставленныеВычеты.РанееПримененныйВычет |ИЗ | ВТУжеПредоставленныеВычеты КАК ВТУжеПредоставленныеВычеты | |УПОРЯДОЧИТЬ ПО | ФизЛицо, | НалоговыйПериод"; Возврат Запрос.ВыполнитьПакет(); КонецФункции // СформироватьЗапросПоЛичнымВычетам() // Вычисляет разницу между начислениями и удержаниями работника и формирует // движения по взаиморасчетам с работниками // // Параметры: // Перерасчет - признак проведения перерасчетов, по умолчанию - Ложь // Физлица - список физлиц, по которым производится расчет, по умолчанию - отсутствует // // Возвращаемое значение: // Нет // Процедура СформироватьВычетыПоНДФЛ(ШапкаДокумента, Физлица = Неопределено, Отказ = Ложь, Заголовок = "") // подготовим временную таблицу с данными т.ч. НДФЛ по вычетам и // подразделением сотрудника для указанных в строках месяцев Запрос = ПодготовитьЗапросПоНДФЛВычеты(ШапкаДокумента, Физлица); //////////////////////////////////////////////////////////////////////// // личный вычет по НДФЛ МассивРезультатов = СформироватьЗапросПоЛичнымВычетам(Запрос); СтрокиБезКодов = МассивРезультатов[5]; Если Не СтрокиБезКодов.Пустой() Тогда // обнаружены недопустимые данные Отказ = Истина; ВыборкаПоНДФЛ = СтрокиБезКодов.Выбрать(); Пока ВыборкаПоНДФЛ.Следующий() Цикл Если ВыборкаПоНДФЛ.ПримененныйВычетЛичный > 0 Тогда ОбщегоНазначения.СообщитьОбОшибке("В строке номер """+ СокрЛП(ВыборкаПоНДФЛ.НомерСтроки) + """ табл. части ""НДФЛ"": для указанного физического лица не зарегистрировано право на предоставление личного вычета!", Отказ, Заголовок); Иначе ОбщегоНазначения.СообщитьОбОшибке("В строке номер """+ СокрЛП(ВыборкаПоНДФЛ.НомерСтроки) + """ табл. части ""НДФЛ"": для указанного физического лица сторнируется не начисленная ранее сумма личного вычета!", Отказ, Заголовок); КонецЕсли; КонецЦикла; КонецЕсли; Если НЕ Отказ Тогда ТаблицаРаспределения = Новый ТаблицаЗначений; ТаблицаРаспределения.Колонки.Добавить("ПодразделениеОрганизации"); ТаблицаРаспределения.Колонки.Добавить("Налог"); СтруктураПоиска = Новый Структура("Физлицо, МесяцНалоговогоПериода"); // получим реквизиты табличных частей ДанныеПоНДФЛ = СформироватьЗапросПоНДФЛ(Физлица).Выгрузить(); ВыборкаПоНДФЛВычеты = СформироватьЗапросПоНДФЛВычеты(Запрос).Выбрать(); Пока ВыборкаПоНДФЛВычеты.Следующий() Цикл ТекущееПодразделение = ВыборкаПоНДФЛВычеты.ПодразделениеОрганизации; ЗаполнитьЗначенияСвойств(СтруктураПоиска, ВыборкаПоНДФЛВычеты); // Физлицо, МесяцНалоговогоПериода СтрокиРаспределения = ДанныеПоНДФЛ.НайтиСтроки(СтруктураПоиска); ТаблицаРаспределения.Очистить(); Для каждого СтрокаРезультата Из СтрокиРаспределения Цикл ЗаполнитьЗначенияСвойств(ТаблицаРаспределения.Добавить(),СтрокаРезультата); // Налог, ПодразделениеОрганизации КонецЦикла; МассивКоэффициентов = ТаблицаРаспределения.ВыгрузитьКолонку("Налог"); // Заполним записи в наборах записей регистров Если ВыборкаПоНДФЛВычеты.ПримененныйВычетНаДетей <> 0 Тогда РаспределитьВычет(ВыборкаПоНДФЛВычеты, ШапкаДокумента, Истина, ВыборкаПоНДФЛВычеты.ПримененныйВычетНаДетей, Справочники.ВычетыНДФЛ.Код101, ТаблицаРаспределения, МассивКоэффициентов, ТекущееПодразделение); КонецЕсли; Если ВыборкаПоНДФЛВычеты.ПримененныйВычетНаДетейДвойной <> 0 Тогда РаспределитьВычет(ВыборкаПоНДФЛВычеты, ШапкаДокумента, Истина, ВыборкаПоНДФЛВычеты.ПримененныйВычетНаДетейДвойной, Справочники.ВычетыНДФЛ.Код102, ТаблицаРаспределения, МассивКоэффициентов, ТекущееПодразделение); КонецЕсли; Если ВыборкаПоНДФЛВычеты.ПримененныйВычетНаДетейДвойнойВторой <> 0 Тогда РаспределитьВычет(ВыборкаПоНДФЛВычеты, ШапкаДокумента, Истина, ВыборкаПоНДФЛВычеты.ПримененныйВычетНаДетейДвойнойВторой, Справочники.ВычетыНДФЛ.Код111, ТаблицаРаспределения, МассивКоэффициентов, ТекущееПодразделение); КонецЕсли; Если ВыборкаПоНДФЛВычеты.ПримененныйВычетНаДетейИнвалидов <> 0 Тогда РаспределитьВычет(ВыборкаПоНДФЛВычеты, ШапкаДокумента, Истина, ВыборкаПоНДФЛВычеты.ПримененныйВычетНаДетейИнвалидов, Справочники.ВычетыНДФЛ.Код106, ТаблицаРаспределения, МассивКоэффициентов, ТекущееПодразделение); КонецЕсли; Если ВыборкаПоНДФЛВычеты.ПримененныйВычетНаДетейИнвалидовДвойной <> 0 Тогда РаспределитьВычет(ВыборкаПоНДФЛВычеты, ШапкаДокумента, Истина, ВыборкаПоНДФЛВычеты.ПримененныйВычетНаДетейИнвалидовДвойной, Справочники.ВычетыНДФЛ.Код107, ТаблицаРаспределения, МассивКоэффициентов, ТекущееПодразделение); КонецЕсли; Если ВыборкаПоНДФЛВычеты.ПримененныйВычетНаДетейИнвалидовДвойнойВторой <> 0 Тогда РаспределитьВычет(ВыборкаПоНДФЛВычеты, ШапкаДокумента, Истина, ВыборкаПоНДФЛВычеты.ПримененныйВычетНаДетейИнвалидовДвойнойВторой, Справочники.ВычетыНДФЛ.Код113, ТаблицаРаспределения, МассивКоэффициентов, ТекущееПодразделение); КонецЕсли; Если ВыборкаПоНДФЛВычеты.ПримененныйВычетИмущественныйРасход <> 0 Тогда РаспределитьВычет(ВыборкаПоНДФЛВычеты, ШапкаДокумента, Ложь, ВыборкаПоНДФЛВычеты.ПримененныйВычетИмущественныйРасход, Справочники.ВычетыНДФЛ.Код311, ТаблицаРаспределения, МассивКоэффициентов, ТекущееПодразделение); КонецЕсли; Если ВыборкаПоНДФЛВычеты.ПримененныйВычетИмущественныйПроцентыПоКредитам <> 0 Тогда РаспределитьВычет(ВыборкаПоНДФЛВычеты, ШапкаДокумента, Ложь, ВыборкаПоНДФЛВычеты.ПримененныйВычетИмущественныйПроцентыПоКредитам, Справочники.ВычетыНДФЛ.Код312, ТаблицаРаспределения, МассивКоэффициентов, ТекущееПодразделение); КонецЕсли; КонецЦикла; ВыборкаПоНДФЛВычеты = МассивРезультатов[6].Выбрать(); Пока ВыборкаПоНДФЛВычеты.Следующий() Цикл ЗаполнитьЗначенияСвойств(СтруктураПоиска, ВыборкаПоНДФЛВычеты); // Физлицо, МесяцНалоговогоПериода СтрокиРаспределения = ДанныеПоНДФЛ.НайтиСтроки(СтруктураПоиска); ТаблицаРаспределения.Очистить(); Для каждого СтрокаРезультата Из СтрокиРаспределения Цикл ЗаполнитьЗначенияСвойств(ТаблицаРаспределения.Добавить(),СтрокаРезультата); // Налог, ПодразделениеОрганизации КонецЦикла; МассивКоэффициентов = ТаблицаРаспределения.ВыгрузитьКолонку("Налог"); // Заполним записи в наборах записей регистров РаспределитьВычет(ВыборкаПоНДФЛВычеты, ШапкаДокумента, Истина, ВыборкаПоНДФЛВычеты.ПримененныйВычетЛичный, ВыборкаПоНДФЛВычеты.КодВычетаЛичный, ТаблицаРаспределения, МассивКоэффициентов, ВыборкаПоНДФЛВычеты.ПодразделениеОрганизации); КонецЦикла; ВыборкаПоНДФЛ = МассивРезультатов[7].Выбрать(); ТаблицаВычетов = МассивРезультатов[8].Выгрузить(); СтруктураПоискаВычетов = Новый Структура("ФизЛицо","НалоговыйПериод"); Пока ВыборкаПоНДФЛ.СледующийПоЗначениюПоля("ФизЛицо") Цикл Пока ВыборкаПоНДФЛ.СледующийПоЗначениюПоля("НалоговыйПериод") Цикл ЗаполнитьЗначенияСвойств(СтруктураПоискаВычетов,ВыборкаПоНДФЛ); СтрокиВычетов = ТаблицаВычетов.НайтиСтроки(СтруктураПоискаВычетов); Пока ВыборкаПоНДФЛ.Следующий() Цикл // по месяцам ОстатокВычета = ВыборкаПоНДФЛ.ПримененныйВычетЛичный; ЗаполнитьЗначенияСвойств(СтруктураПоиска, ВыборкаПоНДФЛ); // Физлицо, МесяцНалоговогоПериода СтрокиРаспределения = ДанныеПоНДФЛ.НайтиСтроки(СтруктураПоиска); ТаблицаРаспределения.Очистить(); Для каждого СтрокаРезультата Из СтрокиРаспределения Цикл ЗаполнитьЗначенияСвойств(ТаблицаРаспределения.Добавить(),СтрокаРезультата); // Налог, ПодразделениеОрганизации КонецЦикла; МассивКоэффициентов = ТаблицаРаспределения.ВыгрузитьКолонку("Налог"); Пока (ОстатокВычета < 0) И (СтрокиВычетов.Количество()) Цикл СуммаВычета = -Мин(-ВыборкаПоНДФЛ.ПримененныйВычетЛичный, СтрокиВычетов[0].РанееПримененныйВычет); РаспределитьВычет(ВыборкаПоНДФЛ, ШапкаДокумента, Истина, СуммаВычета, СтрокиВычетов[0].КодВычета, ТаблицаРаспределения, МассивКоэффициентов, ВыборкаПоНДФЛ.ПодразделениеОрганизации); ОстатокВычета = ОстатокВычета - СуммаВычета; СтрокиВычетов[0].РанееПримененныйВычет = СтрокиВычетов[0].РанееПримененныйВычет + СуммаВычета; Если СтрокиВычетов[0].РанееПримененныйВычет = 0 Тогда СтрокиВычетов.Удалить(0) КонецЕсли; КонецЦикла; КонецЦикла; КонецЦикла; КонецЦикла; КонецЕсли; КонецПроцедуры // СформироватьВычетыПоНДФЛ() Процедура РаспределитьВычет(ВыборкаПоНДФЛВычеты, ШапкаДокумента, ЭтоСтандартныйВычет, ПримененныйВычет, КодВычета, ТаблицаРаспределения, МассивКоэффициентов, ПодразделениеПоУмолчанию) МассивСуммВычета = ОбщегоНазначения.РаспределитьПропорционально(ПримененныйВычет,МассивКоэффициентов); Если МассивСуммВычета = Неопределено Тогда ДобавитьСтрокуВычетовПоНДФЛ(ВыборкаПоНДФЛВычеты, ШапкаДокумента, ЭтоСтандартныйВычет, КодВычета, ПримененныйВычет, ПодразделениеПоУмолчанию); Иначе Для каждого СтрокаТЗ Из ТаблицаРаспределения Цикл ДобавитьСтрокуВычетовПоНДФЛ(ВыборкаПоНДФЛВычеты, ШапкаДокумента, ЭтоСтандартныйВычет, КодВычета, МассивСуммВычета[ТаблицаРаспределения.Индекс(СтрокаТЗ)], СтрокаТЗ.ПодразделениеОрганизации); КонецЦикла; КонецЕсли; КонецПроцедуры Процедура СформироватьПособияПоУходу(НаборПособияПоУходуЗаРебенкомДоПолутораЛет, НаборЗаработкиПолучателей, ФизЛица = Неопределено) Запрос = Новый Запрос; Запрос.УстановитьПараметр("Ссылка",Ссылка); Запрос.УстановитьПараметр("ФизЛица",ФизЛица); Запрос.УстановитьПараметр("ПоВсемФизЛицам",ФизЛица = Неопределено); Если ПериодРегистрации < ПроведениеРасчетов.ДатаЗаменыЕСНСтраховымиВзносами() Тогда Запрос.Текст = "ВЫБРАТЬ | ОсновныеНачисления.Ссылка, | СУММА(ВЫБОР | КОГДА ОсновныеНачисления.Результат = 0 | ТОГДА 0 | КОГДА ОсновныеНачисления.Показатель2 = 0 | ТОГДА 0 | КОГДА ОсновныеНачисления.Показатель3 = 0 | ТОГДА 0 | КОГДА ОсновныеНачисления.Показатель2 = ОсновныеНачисления.Показатель3 | ТОГДА 1 | ИНАЧЕ ВЫБОР | КОГДА (ВЫРАЗИТЬ(ОсновныеНачисления.Показатель1 * 0.4 * (ВЫРАЗИТЬ(РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(ОсновныеНачисления.ДатаНачала, ГОД), ДОБАВИТЬКДАТЕ(КОНЕЦПЕРИОДА(ОсновныеНачисления.ДатаОкончания, ГОД), СЕКУНДА, 1), ДЕНЬ) / 12 КАК ЧИСЛО(15, 2))) КАК ЧИСЛО(15, 2))) > (ВЫРАЗИТЬ(6000 * ВЫБОР | КОГДА ОсновныеНачисления.ПодразделениеОрганизации.КодПоОКАТО <> """" | И ОсновныеНачисления.ПодразделениеОрганизации.РайонныйКоэффициентРФ > 1 | ТОГДА ОсновныеНачисления.ПодразделениеОрганизации.РайонныйКоэффициентРФ | КОГДА ОсновныеНачисления.Ссылка.Организация.РайонныйКоэффициентРФ > 1 | ТОГДА ОсновныеНачисления.Ссылка.Организация.РайонныйКоэффициентРФ | ИНАЧЕ 1 | КОНЕЦ КАК ЧИСЛО(15, 2))) | ТОГДА ВЫРАЗИТЬ(6000 * ВЫБОР | КОГДА ОсновныеНачисления.ПодразделениеОрганизации.КодПоОКАТО <> """" | И ОсновныеНачисления.ПодразделениеОрганизации.РайонныйКоэффициентРФ > 1 | ТОГДА ОсновныеНачисления.ПодразделениеОрганизации.РайонныйКоэффициентРФ | КОГДА ОсновныеНачисления.Ссылка.Организация.РайонныйКоэффициентРФ > 1 | ТОГДА ОсновныеНачисления.Ссылка.Организация.РайонныйКоэффициентРФ | ИНАЧЕ 1 | КОНЕЦ КАК ЧИСЛО(15, 2)) | КОГДА (ВЫРАЗИТЬ(ОсновныеНачисления.Показатель1 * 0.4 * (ВЫРАЗИТЬ(РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(ОсновныеНачисления.ДатаНачала, ГОД), ДОБАВИТЬКДАТЕ(КОНЕЦПЕРИОДА(ОсновныеНачисления.ДатаОкончания, ГОД), СЕКУНДА, 1), ДЕНЬ) / 12 КАК ЧИСЛО(15, 2))) КАК ЧИСЛО(15, 2))) < (ВЫРАЗИТЬ(1500 * ВЫБОР | КОГДА ОсновныеНачисления.ПодразделениеОрганизации.КодПоОКАТО <> """" | И ОсновныеНачисления.ПодразделениеОрганизации.РайонныйКоэффициентРФ > 1 | ТОГДА ОсновныеНачисления.ПодразделениеОрганизации.РайонныйКоэффициентРФ | КОГДА ОсновныеНачисления.Ссылка.Организация.РайонныйКоэффициентРФ > 1 | ТОГДА ОсновныеНачисления.Ссылка.Организация.РайонныйКоэффициентРФ | ИНАЧЕ 1 | КОНЕЦ КАК ЧИСЛО(15, 2))) | ТОГДА ВЫРАЗИТЬ(1500 * ВЫБОР | КОГДА ОсновныеНачисления.ПодразделениеОрганизации.КодПоОКАТО <> """" | И ОсновныеНачисления.ПодразделениеОрганизации.РайонныйКоэффициентРФ > 1 | ТОГДА ОсновныеНачисления.ПодразделениеОрганизации.РайонныйКоэффициентРФ | КОГДА ОсновныеНачисления.Ссылка.Организация.РайонныйКоэффициентРФ > 1 | ТОГДА ОсновныеНачисления.Ссылка.Организация.РайонныйКоэффициентРФ | ИНАЧЕ 1 | КОНЕЦ КАК ЧИСЛО(15, 2)) | ИНАЧЕ ВЫРАЗИТЬ(ОсновныеНачисления.Показатель1 * 0.4 * (ВЫРАЗИТЬ(РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(ОсновныеНачисления.ДатаНачала, ГОД), ДОБАВИТЬКДАТЕ(КОНЕЦПЕРИОДА(ОсновныеНачисления.ДатаОкончания, ГОД), СЕКУНДА, 1), ДЕНЬ) / 12 КАК ЧИСЛО(15, 2))) КАК ЧИСЛО(15, 2)) | КОНЕЦ * ВЫБОР | КОГДА ОсновныеНачисления.ДатаНачала = НАЧАЛОПЕРИОДА(ОсновныеНачисления.ДатаНачала, МЕСЯЦ) | И ОсновныеНачисления.ДатаОкончания = КОНЕЦПЕРИОДА(ОсновныеНачисления.ДатаНачала, МЕСЯЦ) | ТОГДА 1 | ИНАЧЕ РАЗНОСТЬДАТ(ОсновныеНачисления.ДатаНачала, ДОБАВИТЬКДАТЕ(ОсновныеНачисления.ДатаОкончания, СЕКУНДА, 1), ДЕНЬ) / РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(ОсновныеНачисления.ДатаНачала, МЕСЯЦ), ДОБАВИТЬКДАТЕ(КОНЕЦПЕРИОДА(ОсновныеНачисления.ДатаНачала, МЕСЯЦ), СЕКУНДА, 1), ДЕНЬ) | КОНЕЦ * ВЫБОР | КОГДА ОсновныеНачисления.Сторно | ТОГДА -1 | ИНАЧЕ 1 | КОНЕЦ / ОсновныеНачисления.Результат | КОНЕЦ) КАК ДоляПособияНаПервогоРебенка, | ОсновныеНачисления.ДатаНачала КАК ДатаНачала, | ОсновныеНачисления.ДатаОкончания КАК ДатаОкончания, | ОсновныеНачисления.Сотрудник КАК Сотрудник, | ОсновныеНачисления.Сторно КАК Сторно |ПОМЕСТИТЬ РасчетПособийПоУходуЗаПервымРебенком |ИЗ | Документ.НачислениеЗарплатыРаботникамОрганизаций.Начисления КАК ОсновныеНачисления |ГДЕ | ОсновныеНачисления.ВидРасчета.ВидПособияСоциальногоСтрахования = ЗНАЧЕНИЕ(Перечисление.ВидыПособийСоциальногоСтрахования.ПоУходуЗаРебенкомДоПолутораЛет) | И ОсновныеНачисления.Ссылка = &Ссылка | И (&ПоВсемФизЛицам | ИЛИ ОсновныеНачисления.Физлицо В (&Физлица)) | |СГРУППИРОВАТЬ ПО | ОсновныеНачисления.ДатаНачала, | ОсновныеНачисления.Ссылка, | ОсновныеНачисления.ДатаОкончания, | ОсновныеНачисления.Сотрудник, | ОсновныеНачисления.Сторно | |ИНДЕКСИРОВАТЬ ПО | Сотрудник, | ДатаНачала, | ДатаОкончания, | Сторно |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ОсновныеНачисления.Ссылка, | ОсновныеНачисления.Ссылка.Организация КАК Организация, | ОсновныеНачисления.Сотрудник КАК Сотрудник, | ОсновныеНачисления.ПериодДействияНачало КАК ПериодДействияНачало, | НАЧАЛОПЕРИОДА(ОсновныеНачисления.ПериодДействияКонец, ДЕНЬ) КАК ПериодДействияКонец, | ОсновныеНачисления.Сторно КАК Сторно, | ОсновныеНачисления.Результат, | ОсновныеНачисления.СтатьяФинансирования.ПодпадаетПодЕНВД КАК ОблагаетсяЕНВД, | КОНЕЦПЕРИОДА(ОсновныеНачисления.Ссылка.ПериодРегистрации, МЕСЯЦ) КАК Период |ПОМЕСТИТЬ ВТОтражениеВУчете |ИЗ | Документ.НачислениеЗарплатыРаботникамОрганизаций.НачисленияПоИФ КАК ОсновныеНачисления |ГДЕ | ОсновныеНачисления.ВидРасчета.ВидПособияСоциальногоСтрахования = ЗНАЧЕНИЕ(Перечисление.ВидыПособийСоциальногоСтрахования.ПоУходуЗаРебенкомДоПолутораЛет) | И ОсновныеНачисления.Ссылка = &Ссылка | И (&ПоВсемФизЛицам | ИЛИ ОсновныеНачисления.Физлицо В (&Физлица)) | |ИНДЕКСИРОВАТЬ ПО | Сотрудник, | ПериодДействияНачало, | ПериодДействияКонец, | Сторно |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ОсновныеНачисления.Организация КАК Организация, | ОсновныеНачисления.ОблагаетсяЕНВД, | ИСТИНА КАК УходЗаПервымРебенком, | ОсновныеНачисления.Сотрудник.Физлицо КАК Физлицо, | МАКСИМУМ(ВЫБОР | КОГДА ОсновныеНачисления.Сторно | ТОГДА -1 | ИНАЧЕ 1 | КОНЕЦ) КАК СтраховыеСлучаи, | СУММА(ВЫРАЗИТЬ(ОсновныеНачисления.Результат * РасчетПособийПоУходуЗаПервымРебенком.ДоляПособияНаПервогоРебенка КАК ЧИСЛО(15, 2))) КАК СуммаВсего, | ОсновныеНачисления.Сотрудник, | ОсновныеНачисления.ПериодДействияНачало КАК ДатаСтраховогоСлучая, | ОсновныеНачисления.Сторно, | ОсновныеНачисления.Период |ИЗ | ВТОтражениеВУчете КАК ОсновныеНачисления | ЛЕВОЕ СОЕДИНЕНИЕ РасчетПособийПоУходуЗаПервымРебенком КАК РасчетПособийПоУходуЗаПервымРебенком | ПО ОсновныеНачисления.Сотрудник = РасчетПособийПоУходуЗаПервымРебенком.Сотрудник | И ОсновныеНачисления.ПериодДействияНачало = РасчетПособийПоУходуЗаПервымРебенком.ДатаНачала | И ОсновныеНачисления.ПериодДействияКонец = РасчетПособийПоУходуЗаПервымРебенком.ДатаОкончания | И ОсновныеНачисления.Сторно = РасчетПособийПоУходуЗаПервымРебенком.Сторно |ГДЕ | РасчетПособийПоУходуЗаПервымРебенком.ДоляПособияНаПервогоРебенка <> 0 | |СГРУППИРОВАТЬ ПО | ОсновныеНачисления.Сторно, | ОсновныеНачисления.Сотрудник, | ОсновныеНачисления.Сотрудник.Физлицо, | ОсновныеНачисления.ОблагаетсяЕНВД, | ОсновныеНачисления.Организация, | ОсновныеНачисления.ПериодДействияНачало, | ОсновныеНачисления.Период | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | ОсновныеНачисления.Организация, | ОсновныеНачисления.ОблагаетсяЕНВД, | ЛОЖЬ, | ОсновныеНачисления.Сотрудник.Физлицо, | МАКСИМУМ(ВЫБОР | КОГДА ОсновныеНачисления.Сторно | ТОГДА -1 | ИНАЧЕ 1 | КОНЕЦ), | СУММА(ОсновныеНачисления.Результат - (ВЫРАЗИТЬ(ОсновныеНачисления.Результат * РасчетПособийПоУходуЗаПервымРебенком.ДоляПособияНаПервогоРебенка КАК ЧИСЛО(15, 2)))), | ОсновныеНачисления.Сотрудник, | ОсновныеНачисления.ПериодДействияНачало, | ОсновныеНачисления.Сторно, | ОсновныеНачисления.Период |ИЗ | ВТОтражениеВУчете КАК ОсновныеНачисления | ЛЕВОЕ СОЕДИНЕНИЕ РасчетПособийПоУходуЗаПервымРебенком КАК РасчетПособийПоУходуЗаПервымРебенком | ПО ОсновныеНачисления.Сотрудник = РасчетПособийПоУходуЗаПервымРебенком.Сотрудник | И ОсновныеНачисления.ПериодДействияНачало = РасчетПособийПоУходуЗаПервымРебенком.ДатаНачала | И ОсновныеНачисления.ПериодДействияКонец = РасчетПособийПоУходуЗаПервымРебенком.ДатаОкончания | И ОсновныеНачисления.Сторно = РасчетПособийПоУходуЗаПервымРебенком.Сторно |ГДЕ | РасчетПособийПоУходуЗаПервымРебенком.ДоляПособияНаПервогоРебенка <> 1 | |СГРУППИРОВАТЬ ПО | ОсновныеНачисления.Сторно, | ОсновныеНачисления.Сотрудник, | ОсновныеНачисления.Сотрудник.Физлицо, | ОсновныеНачисления.ОблагаетсяЕНВД, | ОсновныеНачисления.Организация, | ОсновныеНачисления.ПериодДействияНачало, | ОсновныеНачисления.Период"; Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл ЗаполнитьЗначенияСвойств(НаборПособияПоУходуЗаРебенкомДоПолутораЛет.Добавить(),Выборка); КонецЦикла; Запрос.Текст = "ВЫБРАТЬ | ПолучателиПособийПоУходу.Ссылка, | ПолучателиПособийПоУходу.Сотрудник КАК Сотрудник, | ПолучателиПособийПоУходу.Физлицо, | ПолучателиПособийПоУходу.ВидРасчета, | ПолучателиПособийПоУходу.ДатаНачала КАК ДатаНачала, | ПолучателиПособийПоУходу.ДатаОкончания КАК ДатаОкончания, | ПолучателиПособийПоУходу.Результат, | ПолучателиПособийПоУходу.Сторно КАК Сторно, | ПолучателиПособийПоУходу.Показатель1 КАК РазмерСреднегоЗаработка |ПОМЕСТИТЬ ВТНачисления |ИЗ | Документ.НачислениеЗарплатыРаботникамОрганизаций.Начисления КАК ПолучателиПособийПоУходу |ГДЕ | ПолучателиПособийПоУходу.ВидРасчета.ВидПособияСоциальногоСтрахования = ЗНАЧЕНИЕ(Перечисление.ВидыПособийСоциальногоСтрахования.ПоУходуЗаРебенкомДоПолутораЛет) | И ПолучателиПособийПоУходу.Ссылка = &Ссылка | И (&ПоВсемФизЛицам | ИЛИ ПолучателиПособийПоУходу.Физлицо В (&Физлица)) | |ИНДЕКСИРОВАТЬ ПО | Сотрудник, | ДатаНачала, | ДатаОкончания, | Сторно |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ РАЗЛИЧНЫЕ | ПолучателиПособийПоУходу.Сотрудник КАК Сотрудник, | ПолучателиПособийПоУходу.ДатаНачала КАК ДатаНачала, | ПолучателиПособийПоУходу.ДатаОкончания КАК ДатаОкончания |ПОМЕСТИТЬ ВТОтсторнированныеПособия |ИЗ | ВТНачисления КАК ПолучателиПособийПоУходу | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТНачисления КАК СторноСтроки | ПО ПолучателиПособийПоУходу.Сторно <> СторноСтроки.Сторно | И ПолучателиПособийПоУходу.Сотрудник = СторноСтроки.Сотрудник | И ПолучателиПособийПоУходу.ВидРасчета = СторноСтроки.ВидРасчета | И ПолучателиПособийПоУходу.ДатаНачала = СторноСтроки.ДатаНачала | И ПолучателиПособийПоУходу.ДатаОкончания = СторноСтроки.ДатаОкончания | И (ПолучателиПособийПоУходу.Результат = -СторноСтроки.Результат) | |ИНДЕКСИРОВАТЬ ПО | Сотрудник, | ДатаНачала, | ДатаОкончания |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ПоИФ.Сотрудник КАК Сотрудник, | ПоИФ.ПериодДействияНачало КАК ПериодДействияНачало, | НАЧАЛОПЕРИОДА(ПоИФ.ПериодДействияКонец, ДЕНЬ) КАК ПериодДействияКонец, | ПоИФ.Сторно КАК Сторно, | СУММА(ВЫБОР | КОГДА ПоИФ.СтатьяФинансирования.ПодпадаетПодЕНВД | ТОГДА ПоИФ.Результат | ИНАЧЕ 0 | КОНЕЦ) КАК ЕНВД, | СУММА(ВЫБОР | КОГДА ПоИФ.СтатьяФинансирования.ПодпадаетПодЕНВД | ТОГДА 0 | ИНАЧЕ ПоИФ.Результат | КОНЕЦ) КАК НеЕНВД |ПОМЕСТИТЬ ВТДанныеОбОтражении |ИЗ | Документ.НачислениеЗарплатыРаботникамОрганизаций.НачисленияПоИФ КАК ПоИФ | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТНачисления КАК ВТНачисления | ПО ПоИФ.Сотрудник = ВТНачисления.Сотрудник | И ПоИФ.ПериодДействияНачало = ВТНачисления.ДатаНачала | И (НАЧАЛОПЕРИОДА(ПоИФ.ПериодДействияКонец, ДЕНЬ) = ВТНачисления.ДатаОкончания) | И ПоИФ.ВидРасчета = ВТНачисления.ВидРасчета | И ПоИФ.Сторно = ВТНачисления.Сторно |ГДЕ | ПоИФ.Ссылка = &Ссылка | |СГРУППИРОВАТЬ ПО | ПоИФ.Сотрудник, | ПоИФ.ПериодДействияНачало, | ПоИФ.ПериодДействияКонец, | ПоИФ.Сторно | |ИНДЕКСИРОВАТЬ ПО | Сотрудник, | ПериодДействияНачало, | ПериодДействияКонец, | Сторно |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | Начисления.Ссылка.ПериодРегистрации КАК Период, | Начисления.Ссылка.Организация КАК Организация, | Начисления.Физлицо, | ИСТИНА КАК ОблагаетсяЕНВД, | Начисления.Ссылка КАК ДокументОснование, | МАКСИМУМ(Начисления.РазмерСреднегоЗаработка) КАК РазмерСреднегоЗаработка, | МАКСИМУМ(Начисления.Сотрудник) КАК Сотрудник |ИЗ | ВТНачисления КАК Начисления | ЛЕВОЕ СОЕДИНЕНИЕ ВТОтсторнированныеПособия КАК ОтсторнированныеПособия | ПО Начисления.Сотрудник = ОтсторнированныеПособия.Сотрудник | И Начисления.ДатаНачала = ОтсторнированныеПособия.ДатаНачала | И Начисления.ДатаОкончания = ОтсторнированныеПособия.ДатаОкончания | ЛЕВОЕ СОЕДИНЕНИЕ ВТДанныеОбОтражении КАК ДанныеОбОтражении | ПО Начисления.Сотрудник = ДанныеОбОтражении.Сотрудник | И Начисления.ДатаНачала = ДанныеОбОтражении.ПериодДействияНачало | И Начисления.ДатаОкончания = ДанныеОбОтражении.ПериодДействияКонец | И Начисления.Сторно = ДанныеОбОтражении.Сторно |ГДЕ | ОтсторнированныеПособия.Сотрудник ЕСТЬ NULL | И ДанныеОбОтражении.ЕНВД <> 0 | |СГРУППИРОВАТЬ ПО | Начисления.Ссылка.ПериодРегистрации, | Начисления.Ссылка.Организация, | Начисления.Ссылка, | Начисления.Физлицо | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | Начисления.Ссылка.ПериодРегистрации, | Начисления.Ссылка.Организация, | Начисления.Физлицо, | ЛОЖЬ, | Начисления.Ссылка, | МАКСИМУМ(Начисления.РазмерСреднегоЗаработка), | МАКСИМУМ(Начисления.Сотрудник) |ИЗ | ВТНачисления КАК Начисления | ЛЕВОЕ СОЕДИНЕНИЕ ВТОтсторнированныеПособия КАК ОтсторнированныеПособия | ПО Начисления.Сотрудник = ОтсторнированныеПособия.Сотрудник | И Начисления.ДатаНачала = ОтсторнированныеПособия.ДатаНачала | И Начисления.ДатаОкончания = ОтсторнированныеПособия.ДатаОкончания | ЛЕВОЕ СОЕДИНЕНИЕ ВТДанныеОбОтражении КАК ДанныеОбОтражении | ПО Начисления.Сотрудник = ДанныеОбОтражении.Сотрудник | И Начисления.ДатаНачала = ДанныеОбОтражении.ПериодДействияНачало | И Начисления.ДатаОкончания = ДанныеОбОтражении.ПериодДействияКонец | И Начисления.Сторно = ДанныеОбОтражении.Сторно |ГДЕ | ОтсторнированныеПособия.Сотрудник ЕСТЬ NULL | И ДанныеОбОтражении.НеЕНВД <> 0 | |СГРУППИРОВАТЬ ПО | Начисления.Ссылка.ПериодРегистрации, | Начисления.Ссылка.Организация, | Начисления.Ссылка, | Начисления.Физлицо"; Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл ЗаполнитьЗначенияСвойств(НаборЗаработкиПолучателей.Добавить(),Выборка); КонецЦикла; Иначе Запрос.Текст = "ВЫБРАТЬ | ОсновныеНачисления.НомерСтроки КАК НомерСтроки, | НАЧАЛОПЕРИОДА(ОсновныеНачисления.ДатаНачала, МЕСЯЦ) КАК ПериодДействия, | ОсновныеНачисления.ДатаНачала, | ОсновныеНачисления.ДатаОкончания, | ОсновныеНачисления.Сотрудник КАК Сотрудник, | ОсновныеНачисления.Показатель1, | ОсновныеНачисления.Показатель2, | ОсновныеНачисления.Показатель3, | ОсновныеНачисления.Сторно, | ОсновныеНачисления.Результат, | ОсновныеНачисления.ДополнительныйРезультат, | ВЫБОР | КОГДА ОсновныеНачисления.ПодразделениеОрганизации.КодПоОКАТО <> """" | ТОГДА ВЫБОР | КОГДА ОсновныеНачисления.ПодразделениеОрганизации.РайонныйКоэффициентРФ > 1 | ТОГДА ОсновныеНачисления.ПодразделениеОрганизации.РайонныйКоэффициентРФ | ИНАЧЕ 1 | КОНЕЦ | КОГДА ОсновныеНачисления.Ссылка.Организация.РайонныйКоэффициентРФ > 1 | ТОГДА ОсновныеНачисления.Ссылка.Организация.РайонныйКоэффициентРФ | ИНАЧЕ 1 | КОНЕЦ КАК РайонныйКоэффициентРФ, | ВЫРАЗИТЬ(ОсновныеНачисления.Показатель1 * 0.4 * 30.4 КАК ЧИСЛО(15, 2)) КАК МесячноеПособие |ПОМЕСТИТЬ ВТЗаписиПособийПоУходу |ИЗ | Документ.НачислениеЗарплатыРаботникамОрганизаций.Начисления КАК ОсновныеНачисления |ГДЕ | ОсновныеНачисления.ВидРасчета.ВидПособияСоциальногоСтрахования = ЗНАЧЕНИЕ(Перечисление.ВидыПособийСоциальногоСтрахования.ПоУходуЗаРебенкомДоПолутораЛет) | И ОсновныеНачисления.Ссылка = &Ссылка | И (&ПоВсемФизЛицам | ИЛИ ОсновныеНачисления.Физлицо В (&Физлица)) | |ИНДЕКСИРОВАТЬ ПО | НомерСтроки |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ОсновныеНачисления.НомерСтроки КАК НомерСтроки, | ВЫБОР | КОГДА ОсновныеНачисления.Результат = 0 | ТОГДА 0 | КОГДА ОсновныеНачисления.Показатель2 = 0 | ТОГДА 0 | КОГДА ОсновныеНачисления.Показатель3 = 0 | ТОГДА 0 | КОГДА ОсновныеНачисления.Показатель2 = ОсновныеНачисления.Показатель3 | ТОГДА 1 | ИНАЧЕ ВЫБОР | КОГДА ОсновныеНачисления.МесячноеПособие > (ВЫРАЗИТЬ(МаксимумПособияПоУходуЗаРебенкомДоПолутораЛет.Размер / 12 КАК ЧИСЛО(15, 2))) | ТОГДА ВЫРАЗИТЬ(МаксимумПособияПоУходуЗаРебенкомДоПолутораЛет.Размер / 12 КАК ЧИСЛО(15, 2)) | КОГДА ОсновныеНачисления.МесячноеПособие < (ВЫРАЗИТЬ(МинимумПособияПоУходуЗаПервымРебенкомДоПолутораЛет.Размер * ОсновныеНачисления.РайонныйКоэффициентРФ КАК ЧИСЛО(15, 2))) | ТОГДА ВЫРАЗИТЬ(МинимумПособияПоУходуЗаПервымРебенкомДоПолутораЛет.Размер * ОсновныеНачисления.РайонныйКоэффициентРФ КАК ЧИСЛО(15, 2)) | ИНАЧЕ ОсновныеНачисления.МесячноеПособие | КОНЕЦ * ВЫБОР | КОГДА ОсновныеНачисления.ДатаНачала = ОсновныеНачисления.ПериодДействия | И ОсновныеНачисления.ДатаОкончания = КОНЕЦПЕРИОДА(ОсновныеНачисления.ПериодДействия, МЕСЯЦ) | ТОГДА 1 | ИНАЧЕ РАЗНОСТЬДАТ(ОсновныеНачисления.ДатаНачала, ДОБАВИТЬКДАТЕ(ОсновныеНачисления.ДатаОкончания, СЕКУНДА, 1), ДЕНЬ) / РАЗНОСТЬДАТ(ОсновныеНачисления.ПериодДействия, ДОБАВИТЬКДАТЕ(КОНЕЦПЕРИОДА(ОсновныеНачисления.ПериодДействия, МЕСЯЦ), СЕКУНДА, 1), ДЕНЬ) | КОНЕЦ * ВЫБОР | КОГДА ОсновныеНачисления.Сторно | ТОГДА -1 | ИНАЧЕ 1 | КОНЕЦ / ОсновныеНачисления.Результат | КОНЕЦ КАК ДоляПособияНаПервогоРебенка, | ОсновныеНачисления.ДатаНачала КАК ДатаНачала, | ОсновныеНачисления.ДатаОкончания КАК ДатаОкончания, | ОсновныеНачисления.Сотрудник КАК Сотрудник, | ОсновныеНачисления.Сторно КАК Сторно, | ВЫБОР | КОГДА ОсновныеНачисления.Результат = 0 | ТОГДА 0 | ИНАЧЕ ОсновныеНачисления.ДополнительныйРезультат / ОсновныеНачисления.Результат | КОНЕЦ КАК КоэффициентДопРезультата |ПОМЕСТИТЬ РасчетПособийПоУходуЗаПервымРебенком |ИЗ | ВТЗаписиПособийПоУходу КАК ОсновныеНачисления | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | ЗаписиПособийПоУходу.НомерСтроки КАК НомерСтроки, | ГосударственныеПособия.ВидПособия КАК ВидПособия, | МАКСИМУМ(ГосударственныеПособия.Период) КАК ДатаИзмененияРазмераПособия | ИЗ | ВТЗаписиПособийПоУходу КАК ЗаписиПособийПоУходу | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ГосударственныеПособия КАК ГосударственныеПособия | ПО ЗаписиПособийПоУходу.ПериодДействия >= ГосударственныеПособия.Период | ГДЕ | ГосударственныеПособия.ВидПособия = ЗНАЧЕНИЕ(Перечисление.РазмерыГосударственныхПособий.МинимумПособияПоУходуЗаПервымРебенкомДоПолутораЛет) | | СГРУППИРОВАТЬ ПО | ЗаписиПособийПоУходу.НомерСтроки, | ГосударственныеПособия.ВидПособия) КАК ДатыИзРегистраМинимум | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ГосударственныеПособия КАК МинимумПособияПоУходуЗаПервымРебенкомДоПолутораЛет | ПО ДатыИзРегистраМинимум.ВидПособия = МинимумПособияПоУходуЗаПервымРебенкомДоПолутораЛет.ВидПособия | И ДатыИзРегистраМинимум.ДатаИзмененияРазмераПособия = МинимумПособияПоУходуЗаПервымРебенкомДоПолутораЛет.Период | ПО ОсновныеНачисления.НомерСтроки = ДатыИзРегистраМинимум.НомерСтроки | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | ЗаписиПособийПоУходу.НомерСтроки КАК НомерСтроки, | МАКСИМУМ(ГосударственныеПособия.Период) КАК ДатаИзмененияРазмераПособия | ИЗ | ВТЗаписиПособийПоУходу КАК ЗаписиПособийПоУходу | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПредельнаяВеличинаБазыСтраховыхВзносов КАК ГосударственныеПособия | ПО ЗаписиПособийПоУходу.ПериодДействия >= ГосударственныеПособия.Период | | СГРУППИРОВАТЬ ПО | ЗаписиПособийПоУходу.НомерСтроки) КАК ДатыИзРегистраМаксимум | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПредельнаяВеличинаБазыСтраховыхВзносов КАК МаксимумПособияПоУходуЗаРебенкомДоПолутораЛет | ПО ДатыИзРегистраМаксимум.ДатаИзмененияРазмераПособия = МаксимумПособияПоУходуЗаРебенкомДоПолутораЛет.Период | ПО ОсновныеНачисления.НомерСтроки = ДатыИзРегистраМаксимум.НомерСтроки | |ИНДЕКСИРОВАТЬ ПО | Сотрудник, | ДатаНачала, | ДатаОкончания, | Сторно |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ОсновныеНачисления.Ссылка, | ОсновныеНачисления.Ссылка.Организация КАК Организация, | ОсновныеНачисления.Сотрудник КАК Сотрудник, | ОсновныеНачисления.ПериодДействияНачало КАК ПериодДействияНачало, | НАЧАЛОПЕРИОДА(ОсновныеНачисления.ПериодДействияКонец, ДЕНЬ) КАК ПериодДействияКонец, | ОсновныеНачисления.Сторно КАК Сторно, | СУММА(ОсновныеНачисления.Результат) КАК Результат, | ОсновныеНачисления.СтатьяФинансирования.ПодпадаетПодЕНВД КАК ОблагаетсяЕНВД, | КОНЕЦПЕРИОДА(ОсновныеНачисления.Ссылка.ПериодРегистрации, МЕСЯЦ) КАК Период |ПОМЕСТИТЬ ВТОтражениеВУчете |ИЗ | Документ.НачислениеЗарплатыРаботникамОрганизаций.НачисленияПоИФ КАК ОсновныеНачисления |ГДЕ | ОсновныеНачисления.ВидРасчета.ВидПособияСоциальногоСтрахования = ЗНАЧЕНИЕ(Перечисление.ВидыПособийСоциальногоСтрахования.ПоУходуЗаРебенкомДоПолутораЛет) | И ОсновныеНачисления.Ссылка = &Ссылка | И (&ПоВсемФизЛицам | ИЛИ ОсновныеНачисления.Физлицо В (&Физлица)) | |СГРУППИРОВАТЬ ПО | ОсновныеНачисления.Ссылка, | ОсновныеНачисления.Ссылка.Организация, | ОсновныеНачисления.Сотрудник, | ОсновныеНачисления.Сторно, | ОсновныеНачисления.СтатьяФинансирования.ПодпадаетПодЕНВД, | ОсновныеНачисления.ПериодДействияНачало, | НАЧАЛОПЕРИОДА(ОсновныеНачисления.ПериодДействияКонец, ДЕНЬ), | КОНЕЦПЕРИОДА(ОсновныеНачисления.Ссылка.ПериодРегистрации, МЕСЯЦ) | |ИНДЕКСИРОВАТЬ ПО | Сотрудник, | ПериодДействияНачало, | ПериодДействияКонец, | Сторно |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ОсновныеНачисления.Организация КАК Организация, | ОсновныеНачисления.ОблагаетсяЕНВД, | ИСТИНА КАК УходЗаПервымРебенком, | ВЫБОР | КОГДА ОсновныеНачисления.Сотрудник.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.Совместительство) | ТОГДА ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.Совместительство) | ИНАЧЕ ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.ПустаяСсылка) | КОНЕЦ КАК ВидЗанятости, | ОсновныеНачисления.Сотрудник.Физлицо КАК Физлицо, | МАКСИМУМ(ВЫБОР | КОГДА ОсновныеНачисления.Сторно | ТОГДА -1 | ИНАЧЕ 1 | КОНЕЦ) КАК СтраховыеСлучаи, | СУММА(ВЫРАЗИТЬ(ОсновныеНачисления.Результат * РасчетПособийПоУходуЗаПервымРебенком.ДоляПособияНаПервогоРебенка КАК ЧИСЛО(15, 2))) КАК СуммаВсего, | СУММА(ВЫРАЗИТЬ(ОсновныеНачисления.Результат * РасчетПособийПоУходуЗаПервымРебенком.ДоляПособияНаПервогоРебенка КАК ЧИСЛО(15, 2))) * РасчетПособийПоУходуЗаПервымРебенком.КоэффициентДопРезультата КАК СуммаСверхНорм, | ОсновныеНачисления.Сотрудник, | ОсновныеНачисления.ПериодДействияНачало КАК ДатаСтраховогоСлучая, | ОсновныеНачисления.Сторно, | ОсновныеНачисления.Период |ИЗ | ВТОтражениеВУчете КАК ОсновныеНачисления | ЛЕВОЕ СОЕДИНЕНИЕ РасчетПособийПоУходуЗаПервымРебенком КАК РасчетПособийПоУходуЗаПервымРебенком | ПО ОсновныеНачисления.Сотрудник = РасчетПособийПоУходуЗаПервымРебенком.Сотрудник | И ОсновныеНачисления.ПериодДействияНачало = РасчетПособийПоУходуЗаПервымРебенком.ДатаНачала | И ОсновныеНачисления.ПериодДействияКонец = РасчетПособийПоУходуЗаПервымРебенком.ДатаОкончания | И ОсновныеНачисления.Сторно = РасчетПособийПоУходуЗаПервымРебенком.Сторно |ГДЕ | РасчетПособийПоУходуЗаПервымРебенком.ДоляПособияНаПервогоРебенка <> 0 | |СГРУППИРОВАТЬ ПО | ОсновныеНачисления.Сторно, | РасчетПособийПоУходуЗаПервымРебенком.КоэффициентДопРезультата, | ОсновныеНачисления.Сотрудник, | ОсновныеНачисления.Сотрудник.Физлицо, | ОсновныеНачисления.ОблагаетсяЕНВД, | ОсновныеНачисления.Организация, | ОсновныеНачисления.ПериодДействияНачало, | ОсновныеНачисления.Период, | ВЫБОР | КОГДА ОсновныеНачисления.Сотрудник.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.Совместительство) | ТОГДА ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.Совместительство) | ИНАЧЕ ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.ПустаяСсылка) | КОНЕЦ | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | ОсновныеНачисления.Организация, | ОсновныеНачисления.ОблагаетсяЕНВД, | ЛОЖЬ, | ВЫБОР | КОГДА ОсновныеНачисления.Сотрудник.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.Совместительство) | ТОГДА ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.Совместительство) | ИНАЧЕ ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.ПустаяСсылка) | КОНЕЦ, | ОсновныеНачисления.Сотрудник.Физлицо, | МАКСИМУМ(ВЫБОР | КОГДА ОсновныеНачисления.Сторно | ТОГДА -1 | ИНАЧЕ 1 | КОНЕЦ), | СУММА(ОсновныеНачисления.Результат - (ВЫРАЗИТЬ(ОсновныеНачисления.Результат * РасчетПособийПоУходуЗаПервымРебенком.ДоляПособияНаПервогоРебенка КАК ЧИСЛО(15, 2)))), | СУММА(ОсновныеНачисления.Результат - (ВЫРАЗИТЬ(ОсновныеНачисления.Результат * РасчетПособийПоУходуЗаПервымРебенком.ДоляПособияНаПервогоРебенка КАК ЧИСЛО(15, 2)))) * РасчетПособийПоУходуЗаПервымРебенком.КоэффициентДопРезультата, | ОсновныеНачисления.Сотрудник, | ОсновныеНачисления.ПериодДействияНачало, | ОсновныеНачисления.Сторно, | ОсновныеНачисления.Период |ИЗ | ВТОтражениеВУчете КАК ОсновныеНачисления | ЛЕВОЕ СОЕДИНЕНИЕ РасчетПособийПоУходуЗаПервымРебенком КАК РасчетПособийПоУходуЗаПервымРебенком | ПО ОсновныеНачисления.Сотрудник = РасчетПособийПоУходуЗаПервымРебенком.Сотрудник | И ОсновныеНачисления.ПериодДействияНачало = РасчетПособийПоУходуЗаПервымРебенком.ДатаНачала | И ОсновныеНачисления.ПериодДействияКонец = РасчетПособийПоУходуЗаПервымРебенком.ДатаОкончания | И ОсновныеНачисления.Сторно = РасчетПособийПоУходуЗаПервымРебенком.Сторно |ГДЕ | РасчетПособийПоУходуЗаПервымРебенком.ДоляПособияНаПервогоРебенка <> 1 | |СГРУППИРОВАТЬ ПО | ОсновныеНачисления.Сторно, | РасчетПособийПоУходуЗаПервымРебенком.КоэффициентДопРезультата, | ОсновныеНачисления.Сотрудник, | ОсновныеНачисления.Сотрудник.Физлицо, | ОсновныеНачисления.ОблагаетсяЕНВД, | ОсновныеНачисления.Организация, | ОсновныеНачисления.ПериодДействияНачало, | ОсновныеНачисления.Период, | ВЫБОР | КОГДА ОсновныеНачисления.Сотрудник.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.Совместительство) | ТОГДА ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.Совместительство) | ИНАЧЕ ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.ПустаяСсылка) | КОНЕЦ"; Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл ЗаполнитьЗначенияСвойств(НаборПособияПоУходуЗаРебенкомДоПолутораЛет.Добавить(),Выборка); КонецЦикла; КонецЕсли; КонецПроцедуры // Формирует запрос по таблице "Начисления" документа // // Параметры: // ШапкаДокумента // // Возвращаемое значение: // Результат запроса. // Функция СформироватьЗапросПоНачисления(ШапкаДокумента, СтрокиНачисления = Неопределено) Запрос = Новый Запрос; Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц; // Установим параметры запроса Запрос.УстановитьПараметр("ДокументСсылка", Ссылка); Запрос.УстановитьПараметр("ГоловнаяОрганизация", ШапкаДокумента.ГоловнаяОрганизация); // Помещаем ТЧ Начисления во временную таблицу ВТОсновныеНачисления ОбработкаТабличныхЧастейДополнительный.ПоместитьТабЧастьВЗапрос(Запрос, Начисления, "Начисления", СтрокиНачисления); Запрос.Текст = Запрос.Текст + "ВЫБРАТЬ | &ДокументСсылка КАК Ссылка, | СтрокиДокумента.НомерСтроки, | СтрокиДокумента.Сотрудник КАК Сотрудник, | СтрокиДокумента.Физлицо, | СтрокиДокумента.ВидРасчета, | НАЧАЛОПЕРИОДА(СтрокиДокумента.ДатаНачала, МЕСЯЦ) КАК ПериодДействия, | СтрокиДокумента.ДатаНачала, | СтрокиДокумента.ДатаОкончания, | СтрокиДокумента.Показатель1, | СтрокиДокумента.Показатель2, | СтрокиДокумента.Показатель3, | СтрокиДокумента.Показатель4, | СтрокиДокумента.Показатель5, | СтрокиДокумента.Показатель6, | СтрокиДокумента.Результат, | СтрокиДокумента.ДополнительныйРезультат, | СтрокиДокумента.ПодразделениеОрганизации, | СтрокиДокумента.ОтработаноДней, | СтрокиДокумента.ОтработаноЧасов, | СтрокиДокумента.ОтработаноДнейПоПятидневке, | СтрокиДокумента.НормаДней, | СтрокиДокумента.НормаЧасов, | СтрокиДокумента.НормаДнейПоПятидневке, | СтрокиДокумента.ПериодРасчетаСреднегоЗаработкаНачало, | СтрокиДокумента.ПериодРасчетаСреднегоЗаработкаОкончание, | СтрокиДокумента.ДатаНачалаСобытия, | СтрокиДокумента.Сторно, | СтрокиДокумента.Авторасчет, | СтрокиДокумента.ОплачиватьЧасов, | СтрокиДокумента.ОплаченоДнейЧасов, | СтрокиДокумента.ОтработаноЧасовПоПятидневке, | СтрокиДокумента.НормаЧасовПоПятидневке, | СтрокиДокумента.СторнируемыйДокумент, | СтрокиДокумента.РасчетнаяБазаЗаЕдиницуНормыВремени |ПОМЕСТИТЬ ВТСтрокиНачислений |ИЗ | ВТНачисления КАК СтрокиДокумента | |ИНДЕКСИРОВАТЬ ПО | Сотрудник"; Запрос.Выполнить(); // ВТГрафикиСотрудников // таблица содержит номера строк документа с данными о графике указанного // в этой строке сотрудника из рег-ра сведений РаботникиОрганизации // // Поля: // НомерСтроки // ГрафикРаботы // ГрафикПолногоРабочегоВремени // СуммированныйУчетРабочегоВремени // Запрос.Текст = "ВЫБРАТЬ | ПоследниеДаты.НомерСтроки КАК НомерСтроки, | ВЫБОР | КОГДА РаботникиОрганизации.ПериодЗавершения <= ПоследниеДаты.ДатаНачалаСобытия | И РаботникиОрганизации.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | ТОГДА РаботникиОрганизации.ГрафикРаботыЗавершения | ИНАЧЕ РаботникиОрганизации.ГрафикРаботы | КОНЕЦ КАК ГрафикРаботы, | ВЫБОР | КОГДА РаботникиОрганизации.ПериодЗавершения <= ПоследниеДаты.ДатаНачалаСобытия | И РаботникиОрганизации.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | ТОГДА РаботникиОрганизации.ГрафикРаботыЗавершения.ГрафикПолногоРабочегоВремени | ИНАЧЕ РаботникиОрганизации.ГрафикРаботы.ГрафикПолногоРабочегоВремени | КОНЕЦ КАК ГрафикПолногоРабочегоВремени, | ВЫБОР | КОГДА РаботникиОрганизации.ПериодЗавершения <= ПоследниеДаты.ДатаНачалаСобытия | И РаботникиОрганизации.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | ТОГДА РаботникиОрганизации.ГрафикРаботыЗавершения.СуммированныйУчетРабочегоВремени | ИНАЧЕ РаботникиОрганизации.ГрафикРаботы.СуммированныйУчетРабочегоВремени | КОНЕЦ КАК СуммированныйУчетРабочегоВремени |ПОМЕСТИТЬ ВТГрафикиСотрудников |ИЗ | (ВЫБРАТЬ | МАКСИМУМ(РаботникиОрганизации.Период) КАК МаксПериод, | СтрокиНачисления.НомерСтроки КАК НомерСтроки, | СтрокиНачисления.Сотрудник КАК Сотрудник, | СтрокиНачисления.ДатаНачалаСобытия КАК ДатаНачалаСобытия | ИЗ | ВТСтрокиНачислений КАК СтрокиНачисления | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизации | ПО СтрокиНачисления.ДатаНачалаСобытия >= РаботникиОрганизации.Период | И СтрокиНачисления.Сотрудник = РаботникиОрганизации.Сотрудник | | СГРУППИРОВАТЬ ПО | СтрокиНачисления.НомерСтроки, | СтрокиНачисления.Сотрудник, | СтрокиНачисления.ДатаНачалаСобытия) КАК ПоследниеДаты | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизации | ПО ПоследниеДаты.МаксПериод = РаботникиОрганизации.Период | И ПоследниеДаты.Сотрудник = РаботникиОрганизации.Сотрудник | |ИНДЕКСИРОВАТЬ ПО | НомерСтроки"; Запрос.Выполнить(); // ВТДанныеИндивидуальныхГрафиковИТабелей // таблица содержит номера строк документа с сотрудниками, для которых введены // подробные документы использования времени: инд.графики и/или табели // // Поля: // НомерСтроки // План // Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | СтрокиНачисления.НомерСтроки КАК НомерСтроки, | ГрафикиРаботыПоВидамВремени.План КАК План |ПОМЕСТИТЬ ВТДанныеИндивидуальныхГрафиковИТабелей |ИЗ | ВТСтрокиНачислений КАК СтрокиНачисления | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ГрафикиРаботыПоВидамВремени КАК ГрафикиРаботыПоВидамВремени | ПО СтрокиНачисления.Сотрудник = ГрафикиРаботыПоВидамВремени.ГрафикРаботы | И СтрокиНачисления.ПериодДействия = ГрафикиРаботыПоВидамВремени.Месяц |ГДЕ | ГрафикиРаботыПоВидамВремени.ГрафикРаботы ЕСТЬ НЕ NULL | |ИНДЕКСИРОВАТЬ ПО | План"; Запрос.Выполнить(); // СводныеИндивидуальныеГрафикиРаботы // таблица содержит номера строк документа с сотрудниками, для которых введены сводные // данные об их графике // // Поля: // НомерСтроки // Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | СписокРаботников.НомерСтроки КАК НомерСтроки |ПОМЕСТИТЬ ВТСводныеИндивидуальныеГрафикиРаботы |ИЗ | ВТСтрокиНачислений КАК СписокРаботников | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СводныеИндивидуальныеГрафики КАК СводныеИндивидуальныеГрафики | ПО СписокРаботников.Сотрудник = СводныеИндивидуальныеГрафики.Сотрудник | И СписокРаботников.ПериодДействия = СводныеИндивидуальныеГрафики.Месяц |ГДЕ | СводныеИндивидуальныеГрафики.Сотрудник ЕСТЬ НЕ NULL | |ИНДЕКСИРОВАТЬ ПО | НомерСтроки"; Запрос.Выполнить(); // Основной запрос // Сотрудники, для которых введены сводные данные об их графике // // Поля: // НомерСтроки // Запрос.Текст = "ВЫБРАТЬ | СтрокиНачисления.Сотрудник КАК Сотрудник, | СтрокиНачисления.Сотрудник.Физлицо КАК Физлицо, | СтрокиНачисления.ВидРасчета КАК ВидРасчета, | СтрокиНачисления.ВидРасчета.ЗачетОтработанногоВремени КАК ЗачетОтработанногоВремени, | СтрокиНачисления.ВидРасчета.ЗачетНормыВремени КАК ЗачетНормыВремени, | СтрокиНачисления.ВидРасчета.СпособРасчета КАК СпособРасчета, | СтрокиНачисления.ВидРасчета.ВидВремени КАК ВидВремени, | СтрокиНачисления.ДатаНачала КАК ПериодДействияНачало, | ВЫБОР | КОГДА СтрокиНачисления.ДатаОкончания = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | ТОГДА ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | ИНАЧЕ КОНЕЦПЕРИОДА(СтрокиНачисления.ДатаОкончания, ДЕНЬ) | КОНЕЦ КАК ПериодДействияКонец, | ВЫБОР | КОГДА СтрокиНачисления.ВидРасчета.ПериодДействияБазовый | ТОГДА ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | КОГДА СтрокиНачисления.ДатаНачала = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | ТОГДА ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | ИНАЧЕ НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(СтрокиНачисления.ДатаНачала, МЕСЯЦ, -1), МЕСЯЦ) | КОНЕЦ КАК БазовыйПериодНачало, | ВЫБОР | КОГДА СтрокиНачисления.ВидРасчета.ПериодДействияБазовый | ТОГДА ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | КОГДА СтрокиНачисления.ДатаОкончания = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | ТОГДА ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | ИНАЧЕ КОНЕЦПЕРИОДА(ДОБАВИТЬКДАТЕ(СтрокиНачисления.ДатаОкончания, МЕСЯЦ, -1), МЕСЯЦ) | КОНЕЦ КАК БазовыйПериодКонец, | СтрокиНачисления.НомерСтроки КАК НомерСтроки, | СтрокиНачисления.Показатель1 КАК Показатель1, | СтрокиНачисления.Показатель2 КАК Показатель2, | СтрокиНачисления.Показатель3 КАК Показатель3, | СтрокиНачисления.Показатель4 КАК Показатель4, | СтрокиНачисления.Показатель5 КАК Показатель5, | СтрокиНачисления.Показатель6 КАК Показатель6, | СтрокиНачисления.Результат КАК Результат, | СтрокиНачисления.ДополнительныйРезультат КАК ДополнительныйРезультат, | СтрокиНачисления.ПодразделениеОрганизации КАК ПодразделениеОрганизации, | СтрокиНачисления.Сторно КАК Сторно, | СтрокиНачисления.ОтработаноДней КАК ОтработаноДней, | СтрокиНачисления.ОтработаноЧасов КАК ОтработаноЧасов, | СтрокиНачисления.ОтработаноДнейПоПятидневке КАК ОтработаноДнейПоПятидневке, | СтрокиНачисления.ОтработаноЧасовПоПятидневке КАК ОтработаноЧасовПоПятидневке, | СтрокиНачисления.НормаДней КАК НормаДней, | СтрокиНачисления.НормаЧасов КАК НормаЧасов, | СтрокиНачисления.НормаДнейПоПятидневке КАК НормаДнейПоПятидневке, | СтрокиНачисления.НормаЧасовПоПятидневке КАК НормаЧасовПоПятидневке, | СтрокиНачисления.ПериодРасчетаСреднегоЗаработкаНачало КАК ПериодРасчетаСреднегоЗаработкаНачало, | СтрокиНачисления.ПериодРасчетаСреднегоЗаработкаОкончание КАК ПериодРасчетаСреднегоЗаработкаОкончание, | СтрокиНачисления.ДатаНачалаСобытия КАК ДатаНачалаСобытия, | СтрокиНачисления.Авторасчет КАК Авторасчет, | СтрокиНачисления.ОплаченоДнейЧасов КАК ОплаченоДнейЧасов, | ВЫБОР | КОГДА ГрафикРаботыПоСотруднику.НомерСтроки ЕСТЬ NULL | ТОГДА РаботникиОрганизации.ГрафикРаботы | ИНАЧЕ СтрокиНачисления.Сотрудник | КОНЕЦ КАК ГрафикРаботы, | ВЫБОР // если введен табель, но нет индивидуального графика, то норму времени надо считать по данным ""общего графика"" | КОГДА ТабелиУчетаВремениПоСотруднику.НомерСтроки ЕСТЬ НЕ NULL | И ИндивидуальныеГрафикиРаботы.НомерСтроки ЕСТЬ NULL | И СводныеИндивидуальныеГрафикиРаботы.НомерСтроки ЕСТЬ NULL | ТОГДА РаботникиОрганизации.ГрафикРаботы // если у работника сокращенное рабочее время, а норма времени определяется по полному графику // и введен индивидуальный график, то норму времени надо считать по-прежнему по данным ""общего графика"" | КОГДА РаботникиОрганизации.ГрафикПолногоРабочегоВремени <> ЗНАЧЕНИЕ(Справочник.ГрафикиРаботы.ПустаяСсылка) | И (ИндивидуальныеГрафикиРаботы.НомерСтроки ЕСТЬ НЕ NULL | ИЛИ СводныеИндивидуальныеГрафикиРаботы.НомерСтроки ЕСТЬ НЕ NULL ) | ТОГДА РаботникиОрганизации.ГрафикПолногоРабочегоВремени | КОНЕЦ КАК ГрафикРаботыНорма, | ЕСТЬNULL(РаботникиОрганизации.СуммированныйУчетРабочегоВремени, ЛОЖЬ) КАК СуммированныйУчетРабочегоВремени, | СтрокиНачисления.ОплачиватьЧасов, | СтрокиНачисления.ВидРасчета.ОбозначениеВТабелеУчетаРабочегоВремени КАК ВидИспользованияРабочегоВремени, | ВЫБОР | КОГДА СтрокиНачисления.ВидРасчета.ВидВремени В (ЗНАЧЕНИЕ(Перечисление.ВидыВремени.ЧасовоеНеотработанное)) | ТОГДА ИСТИНА | ИНАЧЕ ЛОЖЬ | КОНЕЦ КАК ЯвляетсяПочасовымОтклонением, | ВЫБОР | КОГДА СтрокиНачисления.Сотрудник.Организация = &ГоловнаяОрганизация | ТОГДА ЛОЖЬ | ИНАЧЕ ИСТИНА | КОНЕЦ КАК ОшибкаНеСоответствиеСотрудникаИОрганизации, | ВЫБОР | КОГДА СтрокиНачисления.Сторно | ТОГДА СтрокиНачисления.СторнируемыйДокумент | ИНАЧЕ НЕОПРЕДЕЛЕНО | КОНЕЦ КАК СторнируемыйДокумент, | СтрокиНачисления.РасчетнаяБазаЗаЕдиницуНормыВремени |ИЗ | ВТСтрокиНачислений КАК СтрокиНачисления | ЛЕВОЕ СОЕДИНЕНИЕ ВТГрафикиСотрудников КАК РаботникиОрганизации | ПО СтрокиНачисления.НомерСтроки = РаботникиОрганизации.НомерСтроки | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РАЗЛИЧНЫЕ | СтрокиНачисления.НомерСтроки КАК НомерСтроки | ИЗ | ВТДанныеИндивидуальныхГрафиковИТабелей КАК СтрокиНачисления) КАК ГрафикРаботыПоСотруднику | ПО СтрокиНачисления.НомерСтроки = ГрафикРаботыПоСотруднику.НомерСтроки | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РАЗЛИЧНЫЕ | СтрокиНачисления.НомерСтроки КАК НомерСтроки | ИЗ | ВТДанныеИндивидуальныхГрафиковИТабелей КАК СтрокиНачисления | ГДЕ | (НЕ СтрокиНачисления.План)) КАК ТабелиУчетаВремениПоСотруднику | ПО СтрокиНачисления.НомерСтроки = ТабелиУчетаВремениПоСотруднику.НомерСтроки | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РАЗЛИЧНЫЕ | СтрокиНачисления.НомерСтроки КАК НомерСтроки | ИЗ | ВТДанныеИндивидуальныхГрафиковИТабелей КАК СтрокиНачисления | ГДЕ | СтрокиНачисления.План) КАК ИндивидуальныеГрафикиРаботы | ПО СтрокиНачисления.НомерСтроки = ИндивидуальныеГрафикиРаботы.НомерСтроки | ЛЕВОЕ СОЕДИНЕНИЕ ВТСводныеИндивидуальныеГрафикиРаботы КАК СводныеИндивидуальныеГрафикиРаботы | ПО СтрокиНачисления.НомерСтроки = СводныеИндивидуальныеГрафикиРаботы.НомерСтроки | |УПОРЯДОЧИТЬ ПО | НомерСтроки"; Возврат Запрос.Выполнить(); КонецФункции // СформироватьЗапросПоНачисления() // Формирует запрос по таблице "ДополнительныеНачисления" документа // // Параметры: // ШапкаДокумента // // Возвращаемое значение: // Результат запроса. // Функция СформироватьЗапросПоДопНачисления(ШапкаДокумента, СтрокиНачисления = Неопределено) Запрос = Новый Запрос; // Установим параметры запроса Запрос.УстановитьПараметр("ДокументСсылка", Ссылка); Запрос.УстановитьПараметр("ГоловнаяОрганизация", ШапкаДокумента.ГоловнаяОрганизация); Запрос.УстановитьПараметр("ДатаНалоговогоПериода", КонецГода(ПериодРегистрации)); // Помещаем ТЧ Начисления во временную таблицу ВТОсновныеНачисления ОбработкаТабличныхЧастейДополнительный.ПоместитьТабЧастьВЗапрос(Запрос, ДополнительныеНачисления, "ДополнительныеНачисления", СтрокиНачисления); Запрос.Текст = Запрос.Текст + "ВЫБРАТЬ | НЕОПРЕДЕЛЕНО КАК ДокументОснование, | СтрокиНачисления.ВидРасчета, | СтрокиНачисления.КодВычета КАК КодВычета, | СтрокиНачисления.ВидРасчета.КодДоходаНДФЛ КАК КодДоходаНДФЛ, | СтрокиНачисления.СуммаВычета, | ВЫБОР | КОГДА СтрокиНачисления.КодВычета = ЗНАЧЕНИЕ(Справочник.ВычетыНДФЛ.МатпомощьПриРожденииРебенка) | ТОГДА ВЫБОР | КОГДА СтрокиНачисления.Результат < СтрокиНачисления.СуммаВычета * ВычетПоМатпомощиПриРождении.НормативЗатрат | ТОГДА СтрокиНачисления.Результат | ИНАЧЕ СтрокиНачисления.СуммаВычета * ВычетПоМатпомощиПриРождении.НормативЗатрат | КОНЕЦ | КОГДА СтрокиНачисления.КодВычета = ЗНАЧЕНИЕ(Справочник.ВычетыНДФЛ.Код404) | ТОГДА СтрокиНачисления.СуммаВычета | КОГДА СтрокиНачисления.КодВычета = ЗНАЧЕНИЕ(Справочник.ВычетыНДФЛ.Код405) | ТОГДА СтрокиНачисления.СуммаВычета | ИНАЧЕ 0 | КОНЕЦ КАК СкидкаПриНалогообложении, | СтрокиНачисления.ВидРасчета.СпособРасчета КАК СпособРасчета, | СтрокиНачисления.НомерСтроки КАК НомерСтроки, | СтрокиНачисления.Показатель1, | СтрокиНачисления.Показатель2, | СтрокиНачисления.Показатель3, | СтрокиНачисления.Показатель4, | СтрокиНачисления.Показатель5, | СтрокиНачисления.Показатель6, | СтрокиНачисления.Результат, | СтрокиНачисления.ПодразделениеОрганизации, | СтрокиНачисления.Сторно, | СтрокиНачисления.Сотрудник, | СтрокиНачисления.Сотрудник.Физлицо КАК Физлицо, | СтрокиНачисления.ДатаНачала КАК БазовыйПериодНачало, | СтрокиНачисления.ДатаОкончания КАК БазовыйПериодКонец, | СтрокиНачисления.ВидРасчета.ЧислоМесяцев КАК ЧислоМесяцев, | СтрокиНачисления.Авторасчет, | СтрокиНачисления.ОплаченоДнейЧасов КАК ОплаченоДнейЧасов, | СтрокиНачисления.ПериодРасчетаСреднегоЗаработкаНачало, | СтрокиНачисления.ПериодРасчетаСреднегоЗаработкаОкончание, | СтрокиНачисления.ДатаНачалаСобытия, | ЕСТЬNULL(ВЫБОР | КОГДА РаботникиОрганизации.ПериодЗавершения <= СтрокиНачисления.ДатаНачалаСобытия | И РаботникиОрганизации.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | ТОГДА РаботникиОрганизации.ГрафикРаботыЗавершения.СуммированныйУчетРабочегоВремени | ИНАЧЕ РаботникиОрганизации.ГрафикРаботы.СуммированныйУчетРабочегоВремени | КОНЕЦ, ЛОЖЬ) КАК СуммированныйУчетРабочегоВремени, | ВЫБОР | КОГДА СтрокиНачисления.Сотрудник.Организация = &ГоловнаяОрганизация | ТОГДА ЛОЖЬ | ИНАЧЕ ИСТИНА | КОНЕЦ КАК ОшибкаНеСоответствиеСотрудникаИОрганизации, | ВЫБОР | КОГДА СтрокиНачисления.Сторно | ТОГДА СтрокиНачисления.СторнируемыйДокумент | ИНАЧЕ НЕОПРЕДЕЛЕНО | КОНЕЦ КАК СторнируемыйДокумент |ИЗ | ВТДополнительныеНачисления КАК СтрокиНачисления | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | МАКСИМУМ(РаботникиОрганизации.Период) КАК МаксПериод, | СтрокиНачисления.НомерСтроки КАК НомерСтроки | ИЗ | ВТДополнительныеНачисления КАК СтрокиНачисления | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизации | ПО (РаботникиОрганизации.Период <= СтрокиНачисления.ДатаНачалаСобытия) | И СтрокиНачисления.Сотрудник = РаботникиОрганизации.Сотрудник | | СГРУППИРОВАТЬ ПО | СтрокиНачисления.НомерСтроки) КАК ПоследниеДаты | ПО СтрокиНачисления.НомерСтроки = ПоследниеДаты.НомерСтроки | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизации | ПО (РаботникиОрганизации.Период = ПоследниеДаты.МаксПериод) | И СтрокиНачисления.Сотрудник = РаботникиОрганизации.Сотрудник | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НДФЛВычетыПоДоходам.СрезПоследних(&ДатаНалоговогоПериода, КодДохода = ЗНАЧЕНИЕ(Справочник.ДоходыНДФЛ.МатпомощьПриРожденииРебенка)) КАК ВычетПоМатпомощиПриРождении | ПО СтрокиНачисления.ВидРасчета.КодДоходаНДФЛ = ВычетПоМатпомощиПриРождении.КодДохода | |УПОРЯДОЧИТЬ ПО | НомерСтроки"; Возврат Запрос.Выполнить(); КонецФункции // СформироватьЗапросПоДопНачисления() // Формирует запрос по таблице "ДоговорыНаВыполнениеРабот" документа // // Параметры: // ШапкаДокумента // // Возвращаемое значение: // Результат запроса. // Функция СформироватьЗапросПоДоговорам(ШапкаДокумента, Физлицо = Неопределено) // Определяем режим расчета соцстраха Если ПериодРегистрации < ПроведениеРасчетов.ДатаЗаменыЕСНСтраховымиВзносами() Тогда Возврат СформироватьЗапросПоДоговорам2009(ШапкаДокумента, Физлицо) Иначе Возврат СформироватьЗапросПоДоговорам2010(ШапкаДокумента, Физлицо) КонецЕсли; КонецФункции // СформироватьЗапросПоДоговорам() // Формирует запрос по таблице "ДоговорыНаВыполнениеРабот" документа // // Параметры: // ШапкаДокумента // // Возвращаемое значение: // Результат запроса. // Функция СформироватьЗапросПоДоговорам2009(ШапкаДокумента, Физлицо = Неопределено) Запрос = Новый Запрос; // Установим параметры запроса Запрос.УстановитьПараметр("ДокументСсылка", Ссылка); Запрос.УстановитьПараметр("ГоловнаяОрганизация", ШапкаДокумента.ГоловнаяОрганизация); Запрос.УстановитьПараметр("ДатаОкончания", КонецМесяца(ПериодРегистрации)); Запрос.УстановитьПараметр("ПоВсемФизлицам", Физлицо = Неопределено); Запрос.УстановитьПараметр("Физлицо", Физлицо); Запрос.Текст = "ВЫБРАТЬ | СтрокиНачисления.ДокументОснование, | СтрокиНачисления.ВидРасчета, | СтрокиНачисления.КодВычета КАК КодВычета, | СтрокиНачисления.СуммаВычета КАК СкидкаПриНалогообложении, | СтрокиНачисления.ВидРасчета.СпособРасчета КАК СпособРасчета, | СтрокиНачисления.ВидРасчета.КодДоходаНДФЛ КАК КодДоходаНДФЛ, | СтрокиНачисления.НомерСтроки КАК НомерСтроки, | СтрокиНачисления.Размер, | СтрокиНачисления.Результат КАК Результат, | СтрокиНачисления.ПодразделениеОрганизации, | СтрокиНачисления.Сторно, | СтрокиНачисления.Сотрудник, | СтрокиНачисления.Сотрудник.Физлицо КАК Физлицо, | СтрокиНачисления.ДатаНачала КАК БазовыйПериодНачало, | СтрокиНачисления.ДатаОкончания КАК БазовыйПериодКонец, | 0 КАК ЧислоМесяцев, | ЛОЖЬ КАК Авторасчет, | ВЫБОР | КОГДА СтрокиНачисления.Сотрудник.Организация = &ГоловнаяОрганизация | ТОГДА ЛОЖЬ | ИНАЧЕ ИСТИНА | КОНЕЦ КАК ОшибкаНеСоответствиеСотрудникаИОрганизации, | ВЫБОР | КОГДА СтрокиНачисления.Сторно | ТОГДА СтрокиНачисления.СторнируемыйДокумент | ИНАЧЕ НЕОПРЕДЕЛЕНО | КОНЕЦ КАК СторнируемыйДокумент, | СтрокиНачисления.КОСГУ, | СтрокиНачисления.СтатьяФинансирования, | СтрокиНачисления.СтатьяРасходов, | ВЫБОР | КОГДА СтрокиНачисления.ДокументОснование.ВидДоговора = ЗНАЧЕНИЕ(Перечисление.ВидыДоговоровСФизЛицами.Авторский) | ТОГДА ЗНАЧЕНИЕ(Справочник.ДоходыЕСН.ДоговораАвторские) | КОГДА СтрокиНачисления.ДокументОснование.ВидДоговора = ЗНАЧЕНИЕ(Перечисление.ВидыДоговоровСФизЛицами.Подряда) | ТОГДА ЗНАЧЕНИЕ(Справочник.ДоходыЕСН.ДоговораГПХ) | ИНАЧЕ ЗНАЧЕНИЕ(Справочник.ДоходыЕСН.ОблагаетсяЦеликом) | КОНЕЦ КАК КодДоходаЕСН |ИЗ | Документ.НачислениеЗарплатыРаботникамОрганизаций.ДоговорыНаВыполнениеРабот КАК СтрокиНачисления |ГДЕ | СтрокиНачисления.Ссылка = &ДокументСсылка | И (&ПоВсемФизлицам | ИЛИ СтрокиНачисления.Сотрудник.Физлицо = &Физлицо) | |УПОРЯДОЧИТЬ ПО | НомерСтроки"; Возврат Запрос.Выполнить(); КонецФункции // СформироватьЗапросПоДоговорам() // Формирует запрос по таблице "ДоговорыНаВыполнениеРабот" документа // // Параметры: // ШапкаДокумента // // Возвращаемое значение: // Результат запроса. // Функция СформироватьЗапросПоДоговорам2010(ШапкаДокумента, Физлицо = Неопределено) Запрос = Новый Запрос; // Установим параметры запроса Запрос.УстановитьПараметр("ДокументСсылка", Ссылка); Запрос.УстановитьПараметр("ГоловнаяОрганизация", ШапкаДокумента.ГоловнаяОрганизация); Запрос.УстановитьПараметр("ДатаОкончания", КонецМесяца(ПериодРегистрации)); Запрос.УстановитьПараметр("ПоВсемФизлицам", Физлицо = Неопределено); Запрос.УстановитьПараметр("Физлицо", Физлицо); Запрос.Текст = "ВЫБРАТЬ | СтрокиНачисления.ДокументОснование, | СтрокиНачисления.ВидРасчета, | СтрокиНачисления.КодВычета КАК КодВычета, | СтрокиНачисления.СуммаВычета КАК СкидкаПриНалогообложении, | СтрокиНачисления.ВидРасчета.СпособРасчета КАК СпособРасчета, | СтрокиНачисления.ВидРасчета.КодДоходаНДФЛ КАК КодДоходаНДФЛ, | СтрокиНачисления.НомерСтроки КАК НомерСтроки, | СтрокиНачисления.Размер, | СтрокиНачисления.Результат КАК Результат, | СтрокиНачисления.ПодразделениеОрганизации, | СтрокиНачисления.Сторно, | СтрокиНачисления.Сотрудник, | СтрокиНачисления.Сотрудник.Физлицо КАК Физлицо, | СтрокиНачисления.ДатаНачала КАК БазовыйПериодНачало, | СтрокиНачисления.ДатаОкончания КАК БазовыйПериодКонец, | 0 КАК ЧислоМесяцев, | ЛОЖЬ КАК Авторасчет, | ВЫБОР | КОГДА СтрокиНачисления.Сотрудник.Организация = &ГоловнаяОрганизация | ТОГДА ЛОЖЬ | ИНАЧЕ ИСТИНА | КОНЕЦ КАК ОшибкаНеСоответствиеСотрудникаИОрганизации, | ВЫБОР | КОГДА СтрокиНачисления.Сторно | ТОГДА СтрокиНачисления.СторнируемыйДокумент | ИНАЧЕ НЕОПРЕДЕЛЕНО | КОНЕЦ КАК СторнируемыйДокумент, | СтрокиНачисления.КОСГУ, | СтрокиНачисления.СтатьяФинансирования, | СтрокиНачисления.СтатьяРасходов, | СтрокиНачисления.ВидРасчета.КодДоходаСтраховыеВзносы КАК КодДоходаЕСН |ИЗ | Документ.НачислениеЗарплатыРаботникамОрганизаций.ДоговорыНаВыполнениеРабот КАК СтрокиНачисления |ГДЕ | СтрокиНачисления.Ссылка = &ДокументСсылка | И (&ПоВсемФизлицам | ИЛИ СтрокиНачисления.Сотрудник.Физлицо = &Физлицо) | |УПОРЯДОЧИТЬ ПО | НомерСтроки"; Возврат Запрос.Выполнить(); КонецФункции // СформироватьЗапросПоДоговорам() // Формирует запрос по таблице "Удержания" документа // // Параметры: // нет // // Возвращаемое значение: // Результат запроса. // Функция СформироватьЗапросПоУдержания(ШапкаДокумента, СтрокиУдержаний = Неопределено) Запрос = Новый Запрос; // Установим параметры запроса Запрос.УстановитьПараметр("ДокументСсылка", Ссылка); Запрос.УстановитьПараметр("ПериодРегистрации", ПериодРегистрации); Запрос.УстановитьПараметр("КонецПериодаРегистрации", КонецМесяца(ПериодРегистрации)); Запрос.УстановитьПараметр("ГоловнаяОрганизация", ШапкаДокумента.ГоловнаяОрганизация); Запрос.УстановитьПараметр("ПриемНаРаботу", Перечисления.ПричиныИзмененияСостояния.ПриемНаРаботу); Запрос.УстановитьПараметр("ЗаВесьПериод", Перечисления.ПорядокРасчетаБазы.ЗаВесьПериод); Запрос.УстановитьПараметр("ПриПриемеНаРаботу", Перечисления.ПорядокРасчетаБазы.ПриПриемеНаРаботу); Запрос.УстановитьПараметр("ПриУвольнении", Перечисления.ПорядокРасчетаБазы.ПриУвольнении); // Помещаем ТЧ Удержания во временную таблицу ВТУдержания ОбработкаТабличныхЧастейДополнительный.ПоместитьТабЧастьВЗапрос(Запрос, Удержания, "Удержания", СтрокиУдержаний); Запрос.Текст = Запрос.Текст + "ВЫБРАТЬ | &ГоловнаяОрганизация КАК Организация, | СтрокиУдержания.ФизЛицо, | СтрокиУдержания.ВидРасчета, | СтрокиУдержания.ДатаНачала, | СтрокиУдержания.ДатаОкончания, | СтрокиУдержания.ДатаНачала КАК БазовыйПериодНачало, | ВЫБОР | КОГДА СтрокиУдержания.ДатаОкончания = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | ТОГДА СтрокиУдержания.ДатаОкончания | ИНАЧЕ КОНЕЦПЕРИОДА(СтрокиУдержания.ДатаОкончания, ДЕНЬ) | КОНЕЦ КАК БазовыйПериодКонец, | СтрокиУдержания.НомерСтроки КАК НомерСтроки, | СтрокиУдержания.ДокументОснование, | СтрокиУдержания.Показатель1, | СтрокиУдержания.Показатель2, | СтрокиУдержания.Показатель3, | СтрокиУдержания.Показатель4, | СтрокиУдержания.Показатель5, | СтрокиУдержания.Показатель6, | СтрокиУдержания.Результат, | СтрокиУдержания.Сторно, | СтрокиУдержания.ВидРасчета.СпособРасчета КАК СпособРасчета, | СтрокиУдержания.Авторасчет КАК Авторасчет, | СтрокиУдержания.ПериодРасчетаСреднегоЗаработкаНачало, | СтрокиУдержания.ПериодРасчетаСреднегоЗаработкаОкончание, | СтрокиУдержания.ДатаНачалаСобытия"; Если ПериодНачисления = Перечисления.ПериодНачисленияЗарплаты.ПерваяПоловинаТекущегоМесяца Тогда Запрос.Текст = Запрос.Текст + ", | &ПриУвольнении КАК ПорядокРасчетаБазы"; ИначеЕсли ПериодНачисления = Перечисления.ПериодНачисленияЗарплаты.ВтораяПоловинаТекущегоМесяца Тогда Запрос.Текст = Запрос.Текст + ", | &ПриПриемеНаРаботу КАК ПорядокРасчетаБазы"; Иначе Запрос.Текст = Запрос.Текст + ", | ВЫБОР | КОГДА СтрокиУдержания.ДатаНачала > &ПериодРегистрации | И ПринятыеВТекущемМесяце.Период ЕСТЬ НЕ NULL | ТОГДА &ПриПриемеНаРаботу | КОГДА СтрокиУдержания.ДатаОкончания = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | ТОГДА &ЗаВесьПериод | КОГДА КОНЕЦПЕРИОДА(СтрокиУдержания.ДатаОкончания, ДЕНЬ) < &КонецПериодаРегистрации | И УволенныеВТекущемМесяце.Период ЕСТЬ НЕ NULL | ТОГДА &ПриУвольнении | ИНАЧЕ &ЗаВесьПериод | КОНЕЦ КАК ПорядокРасчетаБазы"; КонецЕсли; Запрос.Текст = Запрос.Текст + " |ИЗ | ВТУдержания КАК СтрокиУдержания"; Если ПериодНачисления <> Перечисления.ПериодНачисленияЗарплаты.ПерваяПоловинаТекущегоМесяца И ПериодНачисления <> Перечисления.ПериодНачисленияЗарплаты.ВтораяПоловинаТекущегоМесяца Тогда Запрос.Текст = Запрос.Текст + " | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | СтрокиУдержания.НомерСтроки КАК НомерСтроки, | МАКСИМУМ(РаботникиОрганизаций.Период) КАК Период | ИЗ | ВТУдержания КАК СтрокиУдержания | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций | ПО СтрокиУдержания.ФизЛицо = РаботникиОрганизаций.Сотрудник.Физлицо | ГДЕ | СтрокиУдержания.ДатаНачала > &ПериодРегистрации | И РаботникиОрганизаций.Организация = &ГоловнаяОрганизация | И РаботникиОрганизаций.Период > &ПериодРегистрации | И РаботникиОрганизаций.Период <= &КонецПериодаРегистрации | И РаботникиОрганизаций.ПричинаИзмененияСостояния = &ПриемНаРаботу | И РаботникиОрганизаций.Сотрудник.ВидЗанятости <> ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.ВнутреннееСовместительство) | | СГРУППИРОВАТЬ ПО | СтрокиУдержания.НомерСтроки | | ОБЪЕДИНИТЬ | | ВЫБРАТЬ | СтрокиУдержания.НомерСтроки, | ОтпускПоУходуЗаРебенком.ДатаОкончания | ИЗ | ВТУдержания КАК СтрокиУдержания | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ОтпускПоУходуЗаРебенком КАК ОтпускПоУходуЗаРебенком | ПО СтрокиУдержания.ФизЛицо = ОтпускПоУходуЗаРебенком.Физлицо | И (ОтпускПоУходуЗаРебенком.ДатаОкончания > &ПериодРегистрации) | И (ОтпускПоУходуЗаРебенком.ДатаОкончания < &КонецПериодаРегистрации) | И (ОтпускПоУходуЗаРебенком.Проведен) | И СтрокиУдержания.ДатаНачала <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | И СтрокиУдержания.ДатаНачала > &ПериодРегистрации) КАК ПринятыеВТекущемМесяце | ПО СтрокиУдержания.НомерСтроки = ПринятыеВТекущемМесяце.НомерСтроки | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | УволенныеВТекущемМесяцеОбъединение.НомерСтроки КАК НомерСтроки, | МИНИМУМ(УволенныеВТекущемМесяцеОбъединение.Период) КАК Период | ИЗ | (ВЫБРАТЬ | СтрокиУдержания.НомерСтроки КАК НомерСтроки, | МИНИМУМ(РаботникиОрганизаций.Период) КАК Период | ИЗ | ВТУдержания КАК СтрокиУдержания | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций | ПО СтрокиУдержания.ФизЛицо = РаботникиОрганизаций.Сотрудник.Физлицо | ГДЕ | СтрокиУдержания.ДатаОкончания <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | И СтрокиУдержания.ДатаОкончания < &КонецПериодаРегистрации | И РаботникиОрганизаций.Организация = &ГоловнаяОрганизация | И РаботникиОрганизаций.Период >= &ПериодРегистрации | И РаботникиОрганизаций.Период < &КонецПериодаРегистрации | И РаботникиОрганизаций.ПричинаИзмененияСостояния = ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение) | И РаботникиОрганизаций.Сотрудник.ВидЗанятости <> ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.ВнутреннееСовместительство) | | СГРУППИРОВАТЬ ПО | СтрокиУдержания.НомерСтроки | | ОБЪЕДИНИТЬ | | ВЫБРАТЬ | СтрокиУдержания.НомерСтроки, | МИНИМУМ(Работники.Период) | ИЗ | ВТУдержания КАК СтрокиУдержания | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций КАК Работники | ПО СтрокиУдержания.ФизЛицо = Работники.Сотрудник.Физлицо | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций КАК ПериодыПерекрытия | ПО (ПериодыПерекрытия.Период <= Работники.ПериодЗавершения) | И (ПериодыПерекрытия.Период > Работники.Период) | И (ПериодыПерекрытия.Сотрудник = Работники.Сотрудник) | И (ПериодыПерекрытия.Организация = &ГоловнаяОрганизация) | И (ПериодыПерекрытия.Сотрудник.ВидЗанятости <> ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.ВнутреннееСовместительство)) | ГДЕ | Работники.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | И Работники.Организация = &ГоловнаяОрганизация | И Работники.ПериодЗавершения >= &ПериодРегистрации | И Работники.ПериодЗавершения < &КонецПериодаРегистрации | И Работники.ПричинаИзмененияСостоянияЗавершения = ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение) | И Работники.Сотрудник.ВидЗанятости <> ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.ВнутреннееСовместительство) | И ПериодыПерекрытия.Период ЕСТЬ NULL | И СтрокиУдержания.ДатаОкончания <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | И СтрокиУдержания.ДатаОкончания < &КонецПериодаРегистрации | | СГРУППИРОВАТЬ ПО | СтрокиУдержания.НомерСтроки | | ОБЪЕДИНИТЬ | | ВЫБРАТЬ | СтрокиУдержания.НомерСтроки, | ОтпускПоУходуЗаРебенком.ДатаНачала | ИЗ | ВТУдержания КАК СтрокиУдержания | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ОтпускПоУходуЗаРебенком КАК ОтпускПоУходуЗаРебенком | ПО СтрокиУдержания.ФизЛицо = ОтпускПоУходуЗаРебенком.Физлицо | И (ОтпускПоУходуЗаРебенком.ДатаНачала > &ПериодРегистрации) | И (ОтпускПоУходуЗаРебенком.ДатаНачала < &КонецПериодаРегистрации) | И (ОтпускПоУходуЗаРебенком.Проведен) | И СтрокиУдержания.ДатаОкончания <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | И СтрокиУдержания.ДатаОкончания < &КонецПериодаРегистрации) КАК УволенныеВТекущемМесяцеОбъединение | | СГРУППИРОВАТЬ ПО | УволенныеВТекущемМесяцеОбъединение.НомерСтроки) КАК УволенныеВТекущемМесяце | ПО СтрокиУдержания.НомерСтроки = УволенныеВТекущемМесяце.НомерСтроки"; КонецЕсли; Запрос.Текст = Запрос.Текст + " | |УПОРЯДОЧИТЬ ПО | НомерСтроки"; Возврат Запрос.Выполнить(); КонецФункции // СформироватьЗапросПоУдержания() // Формирует запрос по таблице "НДФЛПоИФ" документа // // Параметры: // Физлица - массив физлиц, для которых читаются данные // Возвращаемое значение: // Результат запроса. // Функция СформироватьЗапросПоНДФЛ(Физлица = Неопределено) Запрос = Новый Запрос; // Установим параметры запроса Запрос.УстановитьПараметр("ДокументСсылка", Ссылка); Запрос.УстановитьПараметр("ПоВсемФизлицам", Физлица = Неопределено); Запрос.УстановитьПараметр("Физлица", Физлица); Запрос.Текст = "ВЫБРАТЬ | НДФЛпоИФ.ФизЛицо КАК ФизЛицо, | НДФЛпоИФ.МесяцНалоговогоПериода КАК МесяцНалоговогоПериода, | НДФЛпоИФ.СтавкаНалогообложенияРезидента КАК СтавкаНалогообложенияРезидента, | НДФЛпоИФ.ПодразделениеОрганизации КАК ПодразделениеОрганизации, | НДФЛпоИФ.СтатьяФинансирования КАК СтатьяФинансирования, | НДФЛпоИФ.КОСГУ КАК КОСГУ, | СУММА(НДФЛпоИФ.Налог) КАК Налог |ИЗ | Документ.НачислениеЗарплатыРаботникамОрганизаций.НДФЛПоИФ КАК НДФЛпоИФ |ГДЕ | НДФЛпоИФ.Ссылка = &ДокументСсылка | И (&ПоВсемФизлицам | ИЛИ НДФЛпоИФ.ФизЛицо В (&Физлица)) | |СГРУППИРОВАТЬ ПО | НДФЛпоИФ.ФизЛицо, | НДФЛпоИФ.МесяцНалоговогоПериода, | НДФЛпоИФ.СтавкаНалогообложенияРезидента, | НДФЛпоИФ.ПодразделениеОрганизации, | НДФЛпоИФ.СтатьяФинансирования, | НДФЛпоИФ.КОСГУ | |УПОРЯДОЧИТЬ ПО | ФизЛицо, | МесяцНалоговогоПериода, | СтавкаНалогообложенияРезидента, | ПодразделениеОрганизации, | СтатьяФинансирования, | КОСГУ"; Возврат Запрос.Выполнить(); КонецФункции // СформироватьЗапросПоНДФЛ() // Формирует запрос по таблице "НДФЛ" документа // // Параметры: // нет // Возвращаемое значение: // Результат запроса. // Функция СформироватьЗапросПоНДФЛудержанный() Запрос = Новый Запрос; // Установим параметры запроса Запрос.УстановитьПараметр("ДокументСсылка", Ссылка); Запрос.Текст = "ВЫБРАТЬ | СтрокиНДФЛ.ФизЛицо КАК ФизЛицо, | СтрокиНДФЛ.СтавкаНалогообложенияРезидента КАК СтавкаНалогообложенияРезидента, | СтрокиНДФЛ.СтатьяФинансирования КАК СтатьяФинансирования, | СтрокиНДФЛ.КОСГУ КАК КОСГУ, | СУММА(СтрокиНДФЛ.Налог) КАК Налог |ИЗ | Документ.НачислениеЗарплатыРаботникамОрганизаций.НДФЛПоИФ КАК СтрокиНДФЛ |ГДЕ | СтрокиНДФЛ.Ссылка = &ДокументСсылка | |СГРУППИРОВАТЬ ПО | СтрокиНДФЛ.ФизЛицо, | СтрокиНДФЛ.СтавкаНалогообложенияРезидента, | СтрокиНДФЛ.СтатьяФинансирования, | СтрокиНДФЛ.КОСГУ | |УПОРЯДОЧИТЬ ПО | ФизЛицо, | СтавкаНалогообложенияРезидента, | СтатьяФинансирования, | КОСГУ"; Возврат Запрос.Выполнить(); КонецФункции // СформироватьЗапросПоНДФЛудержанный() // Формирует запрос по таблице "НДФЛ" документа для расчета сумм НДФЛ к зачету // // Параметры: // нет // Возвращаемое значение: // Результат запроса. // Функция СформироватьЗапросПоНДФЛКЗачету() Запрос = Новый Запрос; // Установим параметры запроса Запрос.УстановитьПараметр("ДокументСсылка", Ссылка); Запрос.УстановитьПараметр("Организация", Организация); Запрос.УстановитьПараметр("ПериодРегистрации", КонецМесяца(ПериодРегистрации)+1); Запрос.Текст = "ВЫБРАТЬ | СУММА(СтрокиНДФЛ.Налог) КАК Налог, | ВЫБОР | КОГДА ЕСТЬNULL(НДФЛКЗачету.СуммаНДФЛКЗачетуОстаток, 0) + ЕСТЬNULL(СуммыУчтенныеДокументом.СуммаНДФЛКЗачету, 0) > ВЫБОР | КОГДА СУММА(СтрокиНДФЛ.Налог) > 0 | ТОГДА СУММА(СтрокиНДФЛ.Налог) | ИНАЧЕ 0 | КОНЕЦ | ТОГДА СУММА(СтрокиНДФЛ.Налог) | ИНАЧЕ ЕСТЬNULL(НДФЛКЗачету.СуммаНДФЛКЗачетуОстаток, 0) + ЕСТЬNULL(СуммыУчтенныеДокументом.СуммаНДФЛКЗачету, 0) | КОНЕЦ КАК НДФЛКЗачетуУчтено, | СтрокиНДФЛ.ФизЛицо, | ЗНАЧЕНИЕ(Перечисление.НДФЛСтавкиНалогообложенияРезидента.Ставка13) КАК СтавкаНалогообложенияРезидента, | СтрокиНДФЛ.СтатьяФинансирования, | СтрокиНДФЛ.КОСГУ |ИЗ | Документ.НачислениеЗарплатыРаботникамОрганизаций.НДФЛПоИФ КАК СтрокиНДФЛ | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.НДФЛКЗачету.Остатки( | &ПериодРегистрации, | Физлицо В | (ВЫБРАТЬ РАЗЛИЧНЫЕ | Документ.НачислениеЗарплатыРаботникамОрганизаций.НДФЛПоИф.ФизЛицо | ИЗ | Документ.НачислениеЗарплатыРаботникамОрганизаций.НДФЛПоИф | ГДЕ | Документ.НачислениеЗарплатыРаботникамОрганизаций.НДФЛПоИф.Ссылка = &ДокументСсылка) | И Организация = &Организация | И СтавкаНалогообложенияРезидента = ЗНАЧЕНИЕ(Перечисление.НДФЛСтавкиНалогообложенияРезидента.Ставка13)) КАК НДФЛКЗачету | ПО (НДФЛКЗачету.ФизЛицо = СтрокиНДФЛ.ФизЛицо) | И (НДФЛКЗачету.СтатьяФинансирования = СтрокиНДФЛ.СтатьяФинансирования) | И (НДФЛКЗачету.КОСГУ = СтрокиНДФЛ.КОСГУ) | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | НДФЛКЗачету.ФизЛицо КАК ФизЛицо, | НДФЛКЗачету.СтатьяФинансирования КАК СтатьяФинансирования, | НДФЛКЗачету.КОСГУ КАК КОСГУ, | СУММА(НДФЛКЗачету.СуммаНДФЛКЗачету) КАК СуммаНДФЛКЗачету | ИЗ | РегистрНакопления.НДФЛКЗачету КАК НДФЛКЗачету | ГДЕ | НДФЛКЗачету.ФизЛицо В | (ВЫБРАТЬ РАЗЛИЧНЫЕ | Документ.НачислениеЗарплатыРаботникамОрганизаций.НДФЛПоИф.ФизЛицо | ИЗ | Документ.НачислениеЗарплатыРаботникамОрганизаций.НДФЛПоИф | ГДЕ | Документ.НачислениеЗарплатыРаботникамОрганизаций.НДФЛПоИф.Ссылка = &ДокументСсылка) | И НДФЛКЗачету.Организация = &Организация | И НДФЛКЗачету.СтавкаНалогообложенияРезидента = ЗНАЧЕНИЕ(Перечисление.НДФЛСтавкиНалогообложенияРезидента.Ставка13) | И НДФЛКЗачету.Регистратор = &ДокументСсылка | И НДФЛКЗачету.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) | | СГРУППИРОВАТЬ ПО | НДФЛКЗачету.ФизЛицо, | НДФЛКЗачету.СтатьяФинансирования, | НДФЛКЗачету.КОСГУ) КАК СуммыУчтенныеДокументом | ПО (СуммыУчтенныеДокументом.ФизЛицо = СтрокиНДФЛ.ФизЛицо) | И (СуммыУчтенныеДокументом.СтатьяФинансирования = СтрокиНДФЛ.СтатьяФинансирования) | И (СуммыУчтенныеДокументом.КОСГУ = СтрокиНДФЛ.КОСГУ) |ГДЕ | СтрокиНДФЛ.Ссылка = &ДокументСсылка | |СГРУППИРОВАТЬ ПО | СтрокиНДФЛ.ФизЛицо, | СтрокиНДФЛ.СтатьяФинансирования, | СтрокиНДФЛ.КОСГУ, | НДФЛКЗачету.СуммаНДФЛКЗачетуОстаток, | СуммыУчтенныеДокументом.СуммаНДФЛКЗачету | |ИМЕЮЩИЕ | (СУММА(СтрокиНДФЛ.Налог) < 0 | ИЛИ ВЫБОР | КОГДА ЕСТЬNULL(НДФЛКЗачету.СуммаНДФЛКЗачетуОстаток, 0) + ЕСТЬNULL(СуммыУчтенныеДокументом.СуммаНДФЛКЗачету, 0) > ВЫБОР | КОГДА СУММА(СтрокиНДФЛ.Налог) > 0 | ТОГДА СУММА(СтрокиНДФЛ.Налог) | ИНАЧЕ 0 | КОНЕЦ | ТОГДА СУММА(СтрокиНДФЛ.Налог) | ИНАЧЕ ЕСТЬNULL(НДФЛКЗачету.СуммаНДФЛКЗачетуОстаток, 0) + ЕСТЬNULL(СуммыУчтенныеДокументом.СуммаНДФЛКЗачету, 0) | КОНЕЦ <> 0)"; Возврат Запрос.Выполнить(); КонецФункции // СформироватьЗапросПоНДФЛКЗачету // Проверяет правильность заполнения шапки документа. // Если какой-то из реквизитов шапки, влияющий на проведение, не заполнен или // заполнен некорректно, то выставляется флаг отказа в проведении. // Проверка выполняется по выборке из результата запроса по шапке, // все проверяемые реквизиты должны быть включены в шапку. // // Параметры: // ШапкаДокумента - шапка документа, // Отказ - флаг отказа в проведении. // Процедура ПроверитьЗаполнениеШапки(ШапкаДокумента, Отказ, Заголовок = "") // Организация Если НЕ ЗначениеЗаполнено(ШапкаДокумента.ГоловнаяОрганизация) Тогда ОбщегоНазначения.СообщитьОбОшибке("Не указано учреждение, по которому начисляется зарплата!", Отказ, Заголовок); КонецЕсли; // соответствие периодов документа и перерассчитываемого документа Если ШапкаДокумента.ПериодПерерасчета <> null и ШапкаДокумента.ПериодРегистрации <= ШапкаДокумента.ПериодПерерасчета Тогда ОбщегоНазначения.СообщитьОбОшибке("Период документа должен быть больше периода перерассчитываемого документа!", Отказ, Заголовок); КонецЕсли; // соответствие организаций документа и перерассчитываемого документа Если ШапкаДокумента.ОрганизацияПерерасчета <> null и ШапкаДокумента.ОбособленноеПодразделение <> ШапкаДокумента.ОрганизацияПерерасчета Тогда ОбщегоНазначения.СообщитьОбОшибке("Организация, заданная для документа, должна совпадать с организацией перерассчитываемого документа!", Отказ, Заголовок); КонецЕсли; КонецПроцедуры // ПроверитьЗаполнениеШапки() Процедура ПроверитьЗаполнениеНачислений(ВыборкаПоШапкеДокумента, ВыборкаПоНачислениям, Отказ, Заголовок, ПроверятьОтражение = Ложь) // Позиционируем выборку в начало. ВыборкаПоНачислениям.Сбросить(); // Проверяем начисления Пока ВыборкаПоНачислениям.Следующий() Цикл // проверим очередную строку табличной части ПроверитьЗаполнениеСтрокиНачисления(ВыборкаПоНачислениям, Отказ, Заголовок, ПроверятьОтражение); КонецЦикла; КонецПроцедуры // Проверяет правильность заполнения реквизитов в строке ТЧ "Начисления" документа. // Если какой-то из реквизитов, влияющий на проведение, не заполнен или // заполнен некорректно, то выставляется флаг отказа в проведении. // Проверка выполняется по выборке из результата запроса к ТЧ документа, // все проверяемые реквизиты должны быть включены в выборку. // // Параметры: // ВыборкаПоСтрокамДокумента - спозиционированная на определеной строке выборка // из результата запроса к ТЧ документа, // Отказ - флаг отказа в проведении. // Процедура ПроверитьЗаполнениеСтрокиНачисления(ВыборкаПоСтрокамДокумента, Отказ, Заголовок = "", ПроверятьОтражение = Ложь) СтрокаНачалаСообщенияОбОшибке = "В строке номер """+ СокрЛП(ВыборкаПоСтрокамДокумента.НомерСтроки) + """ табл. части ""Начисления"": "; // Сотрудник Если НЕ ЗначениеЗаполнено(ВыборкаПоСтрокамДокумента.Сотрудник) Тогда ОбщегоНазначения.СообщитьОбОшибке(СтрокаНачалаСообщенияОбОшибке + "не выбран сотрудник!", Отказ, Заголовок); КонецЕсли; // Организация сотрудника должна совпадать с организацией документа Если ВыборкаПоСтрокамДокумента.ОшибкаНеСоответствиеСотрудникаИОрганизации Тогда ОбщегоНазначения.СообщитьОбОшибке(СтрокаНачалаСообщенияОбОшибке + "указанный сотрудник оформлен на другое учреждение!", Отказ, Заголовок); КонецЕсли; // ВидРасчета Если НЕ ЗначениеЗаполнено(ВыборкаПоСтрокамДокумента.ВидРасчета) Тогда ОбщегоНазначения.СообщитьОбОшибке(СтрокаНачалаСообщенияОбОшибке + "не указан вид расчета!", Отказ, Заголовок); КонецЕсли; // Дата начала Если НЕ ЗначениеЗаполнено(ВыборкаПоСтрокамДокумента.ПериодДействияНачало) Тогда ОбщегоНазначения.СообщитьОбОшибке(СтрокаНачалаСообщенияОбОшибке + "не указана дата начала начисления!", Отказ, Заголовок); КонецЕсли; // Дата окончания Если Не ЗначениеЗаполнено(ВыборкаПоСтрокамДокумента.ПериодДействияКонец) Тогда ОбщегоНазначения.СообщитьОбОшибке(СтрокаНачалаСообщенияОбОшибке + "не указана дата окончания начисления!", Отказ, Заголовок); КонецЕсли; // Проверка соответствия Даты начала и Даты окончания Если ЗначениеЗаполнено(ВыборкаПоСтрокамДокумента.ПериодДействияКонец) и ЗначениеЗаполнено(ВыборкаПоСтрокамДокумента.ПериодДействияНачало) Тогда Если ВыборкаПоСтрокамДокумента.ПериодДействияКонец < ВыборкаПоСтрокамДокумента.ПериодДействияНачало Тогда ОбщегоНазначения.СообщитьОбОшибке(СтрокаНачалаСообщенияОбОшибке + "дата окончания начисления не должна быть меньше даты начала!", Отказ, Заголовок); ИначеЕсли НачалоМесяца(ВыборкаПоСтрокамДокумента.ПериодДействияКонец) <> НачалоМесяца(ВыборкаПоСтрокамДокумента.ПериодДействияНачало) Тогда ОбщегоНазначения.СообщитьОбОшибке(СтрокаНачалаСообщенияОбОшибке + "даты начала и окончания начисления должны принадлежать одному месяцу!", Отказ, Заголовок); КонецЕсли; КонецЕсли; // Дата начала события Если НЕ ЗначениеЗаполнено(ВыборкаПоСтрокамДокумента.ДатаНачалаСобытия) Тогда ОбщегоНазначения.СообщитьОбОшибке(СтрокаНачалаСообщенияОбОшибке + "не указана дата начала события!", Отказ, Заголовок); КонецЕсли; Если ВыборкаПоСтрокамДокумента.ЯвляетсяПочасовымОтклонением Тогда // ВидИспользованияРабочегоВремени Если НЕ ЗначениеЗаполнено(ВыборкаПоСтрокамДокумента.ВидИспользованияРабочегоВремени) Тогда ОбщегоНазначения.СообщитьОбОшибке(СтрокаНачалаСообщенияОбОшибке + "не указан учет времени для вида расчета!", Отказ, Заголовок); КонецЕсли; // ОплачиватьЧасов Если ВыборкаПоСтрокамДокумента.ОплачиватьЧасов <= 0 Или ВыборкаПоСтрокамДокумента.ОплачиватьЧасов > 24 Тогда ОбщегоНазначения.СообщитьОбОшибке(СтрокаНачалаСообщенияОбОшибке + "количество оплачиваемых часов должно быть положительным и не превышать 24!", Отказ, Заголовок); КонецЕсли; КонецЕсли; // Проверка отражения Если НЕ Отказ И ПроверятьОтражение Тогда КлючНачисления = Новый Структура( "Сотрудник, |ВидРасчета, |ДатаНачала, |ДатаОкончания, |ПодразделениеОрганизации, |Сторно"); ЗаполнитьЗначенияСвойств(КлючНачисления, Начисления[ВыборкаПоСтрокамДокумента.НомерСтроки-1]); КлючОтражения = ПолучитьКлючОтраженияНачисления(Начисления[ВыборкаПоСтрокамДокумента.НомерСтроки-1]); ДополнительныеПроверки = Новый Структура(); ДополнительныеПроверки.Вставить("ВидРасчета", "не указан вид расчета!"); ДополнительныеПроверки.Вставить("ПериодДействияНачало", "не указана дата начала начисления!"); ДополнительныеПроверки.Вставить("ПериодДействияКонец", "не указана дата окончания начисления!"); ОтражениеВУчете.ПроверитьЗаполнениеОтраженияРасчета( ОтражениеВУчете.СоздатьСтруктуруПроверяемыхКолонокОтраженияРасчета(ПериодРегистрации), НачисленияПоИФ, КлючОтражения, СтрокаНачалаСообщенияОбОшибке + "в распределении по источникам ", Отказ, Заголовок); Если НЕ Отказ Тогда ОтражениеВУчете.СообщитьОбОшибкеНеравенстваСумм( ОтражениеВУчете.СравнитьСуммыОтраженияИРасчета( Начисления, КлючНачисления, НачисленияПоИФ, КлючОтражения), СтрокаНачалаСообщенияОбОшибке, Отказ, Заголовок); КонецЕсли; КонецЕсли; КонецПроцедуры // ПроверитьЗаполнениеСтрокиНачисления() // Проверяет правильность заполнения основных начислений документа. // Если какой-то из реквизитов ТЧ, влияющий на проведение не заполнен или // заполнен не корректно, то выставляется флаг отказа в проведении. // Проверка выполняется по выборке из результата запроса по начислениям, // Все проверяемые реквизиты должны быть включены в выборку по начислениям. // // Параметры: // ВыборкаПоНачислениям - выборка из результата запроса по по начислениям, // Отказ - флаг отказа в проведении, // Заголовок - Заголовок для сообщений об ошибках проведения. // Процедура ПроверитьЗаполнениеДополнительныхНачислений(ВыборкаПоШапкеДокумента, ВыборкаПоНачислениям, Отказ, Заголовок, ПроверятьОтражение = Ложь) // Подготовим таблицу инфрмации о дополнительных видах расчета Если ПроверятьОтражение Тогда мИнформацияОВидахРасчетаДоп = ПолучитьИнформациюОВидахРасчетаДоп(); КонецЕсли; // Позиционируем выборку в начало. ВыборкаПоНачислениям.Сбросить(); // Проверяем начисления Пока ВыборкаПоНачислениям.Следующий() Цикл // проверим очередную строку табличной части ПроверитьЗаполнениеСтрокиДопНачисления(ВыборкаПоНачислениям, Отказ, Заголовок, ПроверятьОтражение); КонецЦикла; КонецПроцедуры // Проверяет правильность заполнения реквизитов в строке ТЧ "ДополнительныеНачисления" документа. // Если какой-то из реквизитов, влияющий на проведение, не заполнен или // заполнен некорректно, то выставляется флаг отказа в проведении. // Проверка выполняется по выборке из результата запроса к ТЧ документа, // все проверяемые реквизиты должны быть включены в выборку. // // Параметры: // ВыборкаПоСтрокамДокумента - спозиционированная на определеной строке выборка // из результата запроса к ТЧ документа, // Отказ - флаг отказа в проведении. // Процедура ПроверитьЗаполнениеСтрокиДопНачисления(ВыборкаПоСтрокамДокумента, Отказ, Заголовок = "", ПроверятьОтражение = Ложь) СтрокаНачалаСообщенияОбОшибке = "В строке номер """+ СокрЛП(ВыборкаПоСтрокамДокумента.НомерСтроки) + """ табл. части ""Доп. начисления"": "; // Сотрудник Если НЕ ЗначениеЗаполнено(ВыборкаПоСтрокамДокумента.Сотрудник) Тогда ОбщегоНазначения.СообщитьОбОшибке(СтрокаНачалаСообщенияОбОшибке + "не выбран сотрудник!", Отказ, Заголовок); КонецЕсли; // Организация сотрудника должна совпадать с организацией документа Если ВыборкаПоСтрокамДокумента.ОшибкаНеСоответствиеСотрудникаИОрганизации Тогда ОбщегоНазначения.СообщитьОбОшибке(СтрокаНачалаСообщенияОбОшибке + "указанный сотрудник оформлен на другое учреждение!", Отказ, Заголовок); КонецЕсли; // ВидРасчета Если НЕ ЗначениеЗаполнено(ВыборкаПоСтрокамДокумента.ВидРасчета) Тогда ОбщегоНазначения.СообщитьОбОшибке(СтрокаНачалаСообщенияОбОшибке + "не указан вид расчета!", Отказ, Заголовок); ИначеЕсли ВыборкаПоСтрокамДокумента.Авторасчет Тогда Если ВыборкаПоСтрокамДокумента.СпособРасчета = Перечисления.СпособыРасчетаОплатыТруда.Процентом Или ВыборкаПоСтрокамДокумента.СпособРасчета = Перечисления.СпособыРасчетаОплатыТруда.СевернаяНадбавка Или ВыборкаПоСтрокамДокумента.СпособРасчета = Перечисления.СпособыРасчетаОплатыТруда.ОтСтажаПроцентом Тогда // Дата начала Если НЕ ЗначениеЗаполнено(ВыборкаПоСтрокамДокумента.БазовыйПериодНачало) Тогда ОбщегоНазначения.СообщитьОбОшибке(СтрокаНачалаСообщенияОбОшибке + "не указана дата начала базового периода начисления!", Отказ, Заголовок); КонецЕсли; // Дата окончания Если НЕ ЗначениеЗаполнено(ВыборкаПоСтрокамДокумента.БазовыйПериодКонец) Тогда ОбщегоНазначения.СообщитьОбОшибке(СтрокаНачалаСообщенияОбОшибке + "не указана дата окончания базового периода начисления!", Отказ, Заголовок); КонецЕсли; ИначеЕсли ВыборкаПоСтрокамДокумента.СпособРасчета = Перечисления.СпособыРасчетаОплатыТруда.ПоСреднемуЗаработку Или ВыборкаПоСтрокамДокумента.СпособРасчета = Перечисления.СпособыРасчетаОплатыТруда.ПоСреднемуЗаработкуДляОтпускаПоКалендарнымДням Или ВыборкаПоСтрокамДокумента.СпособРасчета = Перечисления.СпособыРасчетаОплатыТруда.ПоСреднемуЗаработкуДляОтпускаПоШестидневке Тогда // Дата начала события Если НЕ ЗначениеЗаполнено(ВыборкаПоСтрокамДокумента.ДатаНачалаСобытия) Тогда ОбщегоНазначения.СообщитьОбОшибке(СтрокаНачалаСообщенияОбОшибке + "не указана дата начала события!", Отказ, Заголовок); КонецЕсли; // Дата начала Если НЕ ЗначениеЗаполнено(ВыборкаПоСтрокамДокумента.ПериодРасчетаСреднегоЗаработкаНачало) Тогда ОбщегоНазначения.СообщитьОбОшибке(СтрокаНачалаСообщенияОбОшибке + "не указана дата начала расчетного периода для исчисления среднего заработка!", Отказ, Заголовок); КонецЕсли; // Дата окончания Если НЕ ЗначениеЗаполнено(ВыборкаПоСтрокамДокумента.ПериодРасчетаСреднегоЗаработкаОкончание) Тогда ОбщегоНазначения.СообщитьОбОшибке(СтрокаНачалаСообщенияОбОшибке + "не указана дата окончания расчетного периода для исчисления среднего заработка!", Отказ, Заголовок); КонецЕсли; КонецЕсли; КонецЕсли; // Проверка на сумму вычета Если ВыборкаПоСтрокамДокумента.СуммаВычета <> 0 И Не ПроведениеРасчетов.ВычетСоответствуетДоходу(ВыборкаПоСтрокамДокумента.КодДоходаНДФЛ, ВыборкаПоСтрокамДокумента.КодВычета, мСоответствиеДоходовИВычетов) Тогда ОбщегоНазначения.СообщитьОбОшибке(СтрокаНачалаСообщенияОбОшибке + "указанный код вычета не предусмотрен для кода дохода (" + ?(ЗначениеЗаполнено(ВыборкаПоСтрокамДокумента.КодДоходаНДФЛ), СокрЛП(ВыборкаПоСтрокамДокумента.КодДоходаНДФЛ), "не указан") + "), с которым будет зарегистрировано в учете по НДФЛ начисление """ + ?(ЗначениеЗаполнено(ВыборкаПоСтрокамДокумента.ВидРасчета), ВыборкаПоСтрокамДокумента.ВидРасчета, "<не указано>") + """!", Отказ, Заголовок); КонецЕсли; // Проверка отражения Если НЕ Отказ И ПроверятьОтражение Тогда СтрокаНачалаСообщенияОбОшибке = СтрокаНачалаСообщенияОбОшибке + "в распределении по источникам "; КлючНачисления = Новый Структура( "Сотрудник, |ВидРасчета, |ДатаНачала, |ДатаОкончания, |Сторно"); ЗаполнитьЗначенияСвойств(КлючНачисления, ДополнительныеНачисления[ВыборкаПоСтрокамДокумента.НомерСтроки-1]); КлючОтражения = ПолучитьКлючОтраженияДополнительногоНачисления(ДополнительныеНачисления[ВыборкаПоСтрокамДокумента.НомерСтроки-1]); ОтражениеВУчете.ПроверитьЗаполнениеОтраженияРасчета( ОтражениеВУчете.СоздатьСтруктуруПроверяемыхКолонокОтраженияРасчета(ПериодРегистрации), ДополнительныеНачисленияПоИФ, КлючОтражения, СтрокаНачалаСообщенияОбОшибке, Отказ, Заголовок); // Проверка на сумму вычета СтрокиОтраженияРасчета = ДополнительныеНачисленияПоИФ.НайтиСтроки(КлючОтражения); Для Каждого СтрокаТЧпоИФ Из СтрокиОтраженияРасчета Цикл Если СтрокаТЧпоИФ.СуммаВычета <> 0 Тогда ИнформацияОВидеРасчета = мИнформацияОВидахРасчетаДоп.Найти(СтрокаТЧпоИФ.ВидРасчета, "ВидРасчета"); Если Не ПроведениеРасчетов.ВычетСоответствуетДоходу(ИнформацияОВидеРасчета.КодДоходаНДФЛ, СтрокаТЧпоИФ.КодВычета, мСоответствиеДоходовИВычетов) Тогда ОбщегоНазначения.СообщитьОбОшибке( СтрокаНачалаСообщенияОбОшибке + "указанный код вычета (" + ?(ЗначениеЗаполнено(СтрокаТЧпоИФ.КодВычета), СокрЛП(СтрокаТЧпоИФ.КодВычета), "не указан") +") не предусмотрен для кода дохода (" + ?(ЗначениеЗаполнено(ИнформацияОВидеРасчета.КодДоходаНДФЛ), СокрЛП(ИнформацияОВидеРасчета.КодДоходаНДФЛ), "не указан") + "), с которым будет зарегистрировано в учете по НДФЛ начисление """ + ?(ЗначениеЗаполнено(СтрокаТЧпоИФ.ВидРасчета), СтрокаТЧпоИФ.ВидРасчета, "<не указано>") + """!", Отказ, Заголовок); КонецЕсли; КонецЕсли; КонецЦикла; // Проверка соответствия сумм Если НЕ Отказ Тогда ОтражениеВУчете.СообщитьОбОшибкеНеравенстваСумм( ОтражениеВУчете.СравнитьСуммыОтраженияИРасчета( ДополнительныеНачисления, КлючНачисления, ДополнительныеНачисленияПоИФ, КлючОтражения), СтрокаНачалаСообщенияОбОшибке, Отказ, Заголовок); КонецЕсли; КонецЕсли; КонецПроцедуры // ПроверитьЗаполнениеСтрокиДопНачисления() // Проверяет правильность заполнения основных начислений документа. // Если какой-то из реквизитов ТЧ, влияющий на проведение не заполнен или // заполнен не корректно, то выставляется флаг отказа в проведении. // Проверка выполняется по выборке из результата запроса по начислениям, // Все проверяемые реквизиты должны быть включены в выборку по начислениям. // // Параметры: // ВыборкаПоНачислениям - выборка из результата запроса по по начислениям, // Отказ - флаг отказа в проведении, // Заголовок - Заголовок для сообщений об ошибках проведения. // Процедура ПроверитьЗаполнениеДоговоров(ВыборкаПоШапкеДокумента, ВыборкаПоДоговорам, Отказ, Заголовок, ПроверятьОтражение = Ложь) // Позиционируем выборку в начало. ВыборкаПоДоговорам.Сбросить(); // Проверяем начисления Пока ВыборкаПоДоговорам.Следующий() Цикл // проверим очередную строку табличной части ПроверитьЗаполнениеСтрокиДоговора(ВыборкаПоДоговорам, Отказ, Заголовок, ПроверятьОтражение); КонецЦикла; КонецПроцедуры // Проверяет правильность заполнения реквизитов в строке ТЧ "ДоговорыНаВыполнениеРабот" документа. // Если какой-то из реквизитов, влияющий на проведение, не заполнен или // заполнен некорректно, то выставляется флаг отказа в проведении. // Проверка выполняется по выборке из результата запроса к ТЧ документа, // все проверяемые реквизиты должны быть включены в выборку. // // Параметры: // ВыборкаПоСтрокамДокумента - спозиционированная на определеной строке выборка // из результата запроса к ТЧ документа, // Отказ - флаг отказа в проведении. // Процедура ПроверитьЗаполнениеСтрокиДоговора(ВыборкаПоСтрокамДокумента, Отказ, Заголовок = "", ПроверятьОтражение = Ложь) СтрокаНачалаСообщенияОбОшибке = "В строке номер """+ СокрЛП(ВыборкаПоСтрокамДокумента.НомерСтроки) + """ табл. части ""Договора"": "; // Сотрудник Если НЕ ЗначениеЗаполнено(ВыборкаПоСтрокамДокумента.Сотрудник) Тогда ОбщегоНазначения.СообщитьОбОшибке(СтрокаНачалаСообщенияОбОшибке + "не выбран сотрудник!", Отказ, Заголовок); КонецЕсли; // Организация сотрудника должна совпадать с организацией документа Если ВыборкаПоСтрокамДокумента.ОшибкаНеСоответствиеСотрудникаИОрганизации Тогда ОбщегоНазначения.СообщитьОбОшибке(СтрокаНачалаСообщенияОбОшибке + "указанный сотрудник оформлен на другое учреждение!", Отказ, Заголовок); КонецЕсли; // ВидРасчета Если НЕ ЗначениеЗаполнено(ВыборкаПоСтрокамДокумента.ВидРасчета) Тогда ОбщегоНазначения.СообщитьОбОшибке(СтрокаНачалаСообщенияОбОшибке + "не указан вид расчета!", Отказ, Заголовок); ИначеЕсли ВыборкаПоСтрокамДокумента.СпособРасчета = Перечисления.СпособыРасчетаОплатыТруда.Процентом Тогда // Дата начала Если НЕ ЗначениеЗаполнено(ВыборкаПоСтрокамДокумента.БазовыйПериодНачало) Тогда ОбщегоНазначения.СообщитьОбОшибке(СтрокаНачалаСообщенияОбОшибке + "не указана дата начала базового периода начисления!", Отказ, Заголовок); КонецЕсли; // Дата окончания Если НЕ ЗначениеЗаполнено(ВыборкаПоСтрокамДокумента.БазовыйПериодКонец) Тогда ОбщегоНазначения.СообщитьОбОшибке(СтрокаНачалаСообщенияОбОшибке + "не указана дата окончания базового периода начисления!", Отказ, Заголовок); КонецЕсли; КонецЕсли; // ДокументОснование Если НЕ ЗначениеЗаполнено(ВыборкаПоСтрокамДокумента.ДокументОснование) Тогда ОбщегоНазначения.СообщитьОбОшибке(СтрокаНачалаСообщенияОбОшибке + "не указан договор-основание!", Отказ, Заголовок); КонецЕсли; // Проверка на сумму вычета Если ВыборкаПоСтрокамДокумента.СкидкаПриНалогообложении <> 0 И Не ПроведениеРасчетов.ВычетСоответствуетДоходу(ВыборкаПоСтрокамДокумента.КодДоходаНДФЛ, ВыборкаПоСтрокамДокумента.КодВычета, мСоответствиеДоходовИВычетов) Тогда ОбщегоНазначения.СообщитьОбОшибке(СтрокаНачалаСообщенияОбОшибке + "указанный код вычета не предусмотрен для кода дохода (" + ?(ЗначениеЗаполнено(ВыборкаПоСтрокамДокумента.КодДоходаНДФЛ), СокрЛП(ВыборкаПоСтрокамДокумента.КодДоходаНДФЛ), "не указан") + "), с которым будет зарегистрировано в учете по НДФЛ начисление """ + ?(ЗначениеЗаполнено(ВыборкаПоСтрокамДокумента.ВидРасчета), ВыборкаПоСтрокамДокумента.ВидРасчета, "<не указано>") + """!", Отказ, Заголовок); КонецЕсли; // Проверка отражения Если НЕ Отказ И ПроверятьОтражение Тогда СтрокаНачалаСообщенияОбОшибке = СтрокаНачалаСообщенияОбОшибке + "в распределении по источникам "; // КОСГУ Если НЕ ЗначениеЗаполнено(ВыборкаПоСтрокамДокумента.КОСГУ) Тогда ОбщегоНазначения.СообщитьОбОшибке(СтрокаНачалаСообщенияОбОшибке + "не указан КОСГУ!", Отказ, Заголовок); КонецЕсли; // Статья финансирования Если НЕ ЗначениеЗаполнено(ВыборкаПоСтрокамДокумента.СтатьяФинансирования) Тогда ОбщегоНазначения.СообщитьОбОшибке(СтрокаНачалаСообщенияОбОшибке + "не указана статья финансирования!", Отказ, Заголовок); КонецЕсли; // Статья расходов Если НЕ ЗначениеЗаполнено(ВыборкаПоСтрокамДокумента.СтатьяРасходов) Тогда ОбщегоНазначения.СообщитьОбОшибке(СтрокаНачалаСообщенияОбОшибке + "не указана статья расходов!", Отказ, Заголовок); КонецЕсли; КонецЕсли; КонецПроцедуры // ПроверитьЗаполнениеСтрокиДоговора() // Проверяет правильность заполнения реквизитов в ТЧ "НДФЛ" документа. // Если какой-то из реквизитов, влияющий на проведение, не заполнен или // заполнен некорректно, то выставляется флаг отказа в проведении. // Проверка выполняется по ТЧ документа // // Параметры: // Отказ - флаг отказа в проведении. // Заголовок - текст заголовка документв // Процедура ПроверитьЗаполнениеНДФЛ(Отказ, Заголовок = "", ПроверятьОтражение = Ложь) Для Каждого СтрокаНДФЛ Из НДФЛ Цикл ПроверитьЗаполнениеСтрокаНДФЛ(СтрокаНДФЛ, Отказ, Заголовок, ПроверятьОтражение) КонецЦикла; КонецПроцедуры // ПроверитьЗаполнениеНДФЛ() // Проверяет правильность заполнения реквизитов в строке ТЧ "НДФЛ" документа. // // Параметры: // ВыборкаПоСтрокамДокумента - спозиционированная на определеной строке выборка // из результата запроса к ТЧ документа, // Отказ - флаг отказа в проведении. // Процедура ПроверитьЗаполнениеСтрокаНДФЛ(СтрокаНДФЛ, Отказ, Заголовок = "", ПроверятьОтражение = Ложь) СтрокаНачалаСообщенияОбОшибке = "В строке номер """+ СокрЛП(СтрокаНДФЛ.НомерСтроки) + """ табл. части ""НДФЛ"": "; // ФизЛицо Если НЕ ЗначениеЗаполнено(СтрокаНДФЛ.ФизЛицо) Тогда ОбщегоНазначения.СообщитьОбОшибке(СтрокаНачалаСообщенияОбОшибке + "не выбрано физическое лицо!", Отказ, Заголовок); КонецЕсли; // месяц налогового периода Если НЕ ЗначениеЗаполнено(СтрокаНДФЛ.МесяцНалоговогоПериода) Тогда ОбщегоНазначения.СообщитьОбОшибке(СтрокаНачалаСообщенияОбОшибке + "не задан месяц налогового периода!", Отказ, Заголовок); КонецЕсли; // Проверка отражения Если НЕ Отказ И ПроверятьОтражение Тогда КлючНДФЛ = Новый Структура( "ФизЛицо, |МесяцНалоговогоПериода"); ЗаполнитьЗначенияСвойств(КлючНДФЛ, СтрокаНДФЛ); КлючОтражения = ПолучитьКлючОтраженияНДФЛ(СтрокаНДФЛ); ОтражениеВУчете.ПроверитьЗаполнениеОтраженияРасчета( ОтражениеВУчете.СоздатьСтруктуруПроверяемыхКолонокОтраженияРасчета(ПериодРегистрации, Новый Структура("СтавкаНалогообложенияРезидента", "не указана ставка налогообложения!")), НДФЛпоИФ, КлючОтражения, СтрокаНачалаСообщенияОбОшибке + "в распределении по источникам ", Отказ, Заголовок); Если НЕ Отказ Тогда ОтражениеВУчете.СообщитьОбОшибкеНеравенстваСумм( ОтражениеВУчете.СравнитьСуммыОтраженияИРасчета( НДФЛ, КлючНДФЛ, НДФЛпоИФ, КлючОтражения, "Налог"), СтрокаНачалаСообщенияОбОшибке, Отказ, Заголовок); КонецЕсли; КонецЕсли; КонецПроцедуры // ПроверитьЗаполнениеСтрокаНДФЛ() // Проверяет правильность заполнения удержаний документа. // Если какой-то из реквизитов ТЧ, влияющий на проведение не заполнен или // заполнен не корректно, то выставляется флаг отказа в проведении. // Проверка выполняется по выборке из результата запроса по начислениям, // Все проверяемые реквизиты должны быть включены в выборку по начислениям. // // Параметры: // ВыборкаПоНачислениям - выборка из результата запроса по по начислениям, // Отказ - флаг отказа в проведении, // Заголовок - Заголовок для сообщений об ошибках проведения. // Процедура ПроверитьЗаполнениеУдержаний(ВыборкаПоШапкеДокумента, ВыборкаПоУдержаниям, Отказ, Заголовок, ПроверятьОтражение = Ложь) // Позиционируем выборку в начало. ВыборкаПоУдержаниям.Сбросить(); // Проверяем начисления Пока ВыборкаПоУдержаниям.Следующий() Цикл // проверим очередную строку табличной части ПроверитьЗаполнениеСтрокиУдержания(ВыборкаПоУдержаниям, Отказ, Заголовок, ПроверятьОтражение); КонецЦикла; КонецПроцедуры // Проверяет правильность заполнения реквизитов в строке ТЧ "Удержания" документа. // Если какой-то из реквизитов, влияющий на проведение, не заполнен или // заполнен некорректно, то выставляется флаг отказа в проведении. // Проверка выполняется по выборке из результата запроса к ТЧ документа, // все проверяемые реквизиты должны быть включены в выборку. // // Параметры: // ВыборкаПоСтрокамДокумента - спозиционированная на определеной строке выборка // из результата запроса к ТЧ документа, // Отказ - флаг отказа в проведении. // Процедура ПроверитьЗаполнениеСтрокиУдержания(ВыборкаПоСтрокамДокумента, Отказ, Заголовок = "", ПроверятьОтражение = Ложь) СтрокаНачалаСообщенияОбОшибке = "В строке номер """+ СокрЛП(ВыборкаПоСтрокамДокумента.НомерСтроки) + """ табл. части ""Удержания"": "; // ФизЛицо Если НЕ ЗначениеЗаполнено(ВыборкаПоСтрокамДокумента.ФизЛицо) Тогда ОбщегоНазначения.СообщитьОбОшибке(СтрокаНачалаСообщенияОбОшибке + "не выбрано физическое лицо!", Отказ, Заголовок); КонецЕсли; // ВидРасчета Если НЕ ЗначениеЗаполнено(ВыборкаПоСтрокамДокумента.ВидРасчета) Тогда ОбщегоНазначения.СообщитьОбОшибке(СтрокаНачалаСообщенияОбОшибке + "не указан вид расчета!", Отказ, Заголовок); ИначеЕсли ВыборкаПоСтрокамДокумента.СпособРасчета <> Перечисления.СпособыРасчетаОплатыТруда.УдержаниеФиксированнойСуммой и ВыборкаПоСтрокамДокумента.СпособРасчета <> Перечисления.СпособыРасчетаОплатыТруда.ИсполнительныйЛистФиксСуммойДоПредела Тогда // Дата начала Если НЕ ЗначениеЗаполнено(ВыборкаПоСтрокамДокумента.ДатаНачала) Тогда ОбщегоНазначения.СообщитьОбОшибке(СтрокаНачалаСообщенияОбОшибке + "не указана дата начала удержания!", Отказ, Заголовок); КонецЕсли; // Дата окончания Если НЕ ЗначениеЗаполнено(ВыборкаПоСтрокамДокумента.ДатаОкончания) Тогда ОбщегоНазначения.СообщитьОбОшибке(СтрокаНачалаСообщенияОбОшибке + "не указана дата окончания удержания!", Отказ, Заголовок); КонецЕсли; КонецЕсли; // Проверка отражения Если НЕ Отказ И ПроверятьОтражение Тогда КлючРасчета = Новый Структура( "ФизЛицо, |ВидРасчета, |Сторно"); ЗаполнитьЗначенияСвойств(КлючРасчета, Удержания[ВыборкаПоСтрокамДокумента.НомерСтроки-1]); КлючОтражения = ПолучитьКлючОтраженияУдержания(Удержания[ВыборкаПоСтрокамДокумента.НомерСтроки-1]); ОтражениеВУчете.ПроверитьЗаполнениеОтраженияРасчета( ОтражениеВУчете.СоздатьСтруктуруПроверяемыхКолонокОтраженияРасчета(ПериодРегистрации), УдержанияПоИФ, КлючОтражения, СтрокаНачалаСообщенияОбОшибке + "в распределении по источникам ", Отказ, Заголовок); Если НЕ Отказ Тогда ОтражениеВУчете.СообщитьОбОшибкеНеравенстваСумм( ОтражениеВУчете.СравнитьСуммыОтраженияИРасчета( Удержания, КлючРасчета, УдержанияПоИФ, КлючОтражения), СтрокаНачалаСообщенияОбОшибке, Отказ, Заголовок); КонецЕсли; КонецЕсли; КонецПроцедуры // ПроверитьЗаполнениеСтрокиУдержания() // Формирует записи регистра "УдержанияРаботниковОрганизаций" по данным документа // Процедура ЗаполнитьДвижениеПоУдержаниям(НаборЗаписей, ШапкаДокумента, ВыборкаПоУдержаниям = Неопределено, Исправления = Истина) // получим реквизиты табличной части Если ВыборкаПоУдержаниям = Неопределено Тогда ВыборкаПоУдержаниям = СформироватьЗапросПоУдержания(ШапкаДокумента).Выбрать(); Иначе ВыборкаПоУдержаниям.Сбросить(); КонецЕсли; // Заполним записи в наборах записей регистров Пока ВыборкаПоУдержаниям.Следующий() Цикл Если Исправления ИЛИ НЕ ВыборкаПоУдержаниям.Сторно Тогда ДобавитьСтрокуУдержаний(ВыборкаПоУдержаниям, ШапкаДокумента, НаборЗаписей); КонецЕсли; КонецЦикла; КонецПроцедуры // По строке выборок из результатов запроса по документу формируем движения по регистрам // // Параметры: // ВыборкаПоСтрокамДокумента - спозиционированная на определеной строке выборка // из результата запроса к ТЧ документа, // НаборЗаписей - набор записей для УдержанияРаботниковОрганизации // Возвращаемое значение: // Нет. // Процедура ДобавитьСтрокуУдержаний(ВыборкаПоСтрокамДокумента, ШапкаДокумента, НаборЗаписей) Движение = НаборЗаписей.Добавить(); ЗаполнитьЗначенияСвойств(Движение,ШапкаДокумента); // ПериодРегистрации, ОбособленноеПодразделение ЗаполнитьЗначенияСвойств(Движение,ВыборкаПоСтрокамДокумента); // БазовыйПериодНачало, БазовыйПериодКонец, ВидРасчета, Сторно // ФизЛицо, Организация, // Результат, Размер, ДокументОснование, Авторасчет, ПорядокРасчетаБазы // ДатаНачалаСобытия,ПериодРасчетаСреднегоЗаработкаНачало,ПериодРасчетаСреднегоЗаработкаОкончание, КонецПроцедуры // ДобавитьСтрокуУдержаний // По строке выборок из результатов запроса по документу формируем движения по регистрам вычетов по НДФЛ // // Параметры: // ВыборкаПоСтрокамДокумента - спозиционированная на определеной строке выборка // из результата запроса к ТЧ документа, // ШапкаДокумента - выборка по данным шапки документа // // Возвращаемое значение: // Нет. // Процедура ДобавитьСтрокуВычетовПоНДФЛ(ВыборкаПоСтрокамДокумента, ВыборкаПоШапкеДокумента, ЭтоСтандартныйВычет, КодВычета, ПримененныйВычет, ТекущееПодразделениеФизлица) Если ЭтоСтандартныйВычет Тогда Движение = Движения.НДФЛПредоставленныеСтандартныеВычетыФизЛиц.Добавить(); // Свойства Движение.Период = КонецМесяца(ВыборкаПоШапкеДокумента.ПериодРегистрации); // Измерения Движение.МесяцНалоговогоПериода = ВыборкаПоСтрокамДокумента.МесяцНалоговогоПериода; Движение.КодВычета = КодВычета; // Ресурсы Движение.ПримененныйВычет = ПримененныйВычет; Иначе Движение = Движения.НДФЛИмущественныеВычетыФизлиц.Добавить(); // Свойства Движение.Период = КонецМесяца(ВыборкаПоСтрокамДокумента.МесяцНалоговогоПериода); Движение.ВидДвижения = ВидДвиженияНакопления.Расход; Движение.Год = Год(ВыборкаПоСтрокамДокумента.МесяцНалоговогоПериода); Движение.КодВычетаИмущественный = КодВычета; // Ресурсы Движение.Размер = ПримененныйВычет; КонецЕсли; // Измерения Движение.Организация = ВыборкаПоШапкеДокумента.ГоловнаяОрганизация; Движение.ФизЛицо = ВыборкаПоСтрокамДокумента.ФизЛицо; // Реквизиты Движение.ОбособленноеПодразделение = ВыборкаПоШапкеДокумента.ОбособленноеПодразделение; Движение.ПодразделениеОрганизации = ТекущееПодразделениеФизлица; КонецПроцедуры // ДобавитьСтрокуНДФЛВычеты // По строке выборок из результатов запроса по документу формируем движения по регистрам // // Параметры: // ВыборкаПоСтрокамДокумента - спозиционированная на определеной строке выборка // из результата запроса к ТЧ документа, // ШапкаДокумента - выборка по данным шапки документа // НаборЗаписей - набор записей для НДФЛРасчетыСБюджетом // // Возвращаемое значение: // Нет. // Процедура ДобавитьСтрокуНДФЛ(ВыборкаПоСтрокамДокумента, ШапкаДокумента, НаборЗаписей) Движение = НаборЗаписей.Добавить(); // Свойства Движение.Период = КонецМесяца(ПериодРегистрации); Движение.ВидДвижения = ВидДвиженияНакопления.Приход; // Измерения Движение.Организация = ШапкаДокумента.ГоловнаяОрганизация; Движение.ФизЛицо = ВыборкаПоСтрокамДокумента.ФизЛицо; Движение.МесяцНалоговогоПериода = ВыборкаПоСтрокамДокумента.МесяцНалоговогоПериода; Движение.СтавкаНалогообложенияРезидента = ВыборкаПоСтрокамДокумента.СтавкаНалогообложенияРезидента; Движение.СтатьяФинансирования = ВыборкаПоСтрокамДокумента.СтатьяФинансирования; Движение.КОСГУ = ВыборкаПоСтрокамДокумента.КОСГУ; // Ресурсы Движение.Налог = ВыборкаПоСтрокамДокумента.Налог; // Реквизиты Движение.ВидСтроки = Перечисления.НДФЛРасчетыСБюджетомВидСтроки.Начисление; Движение.ОбособленноеПодразделение = ШапкаДокумента.ОбособленноеПодразделение; Движение.ИсчисленоИзЗарплаты = Истина; Движение.ПодразделениеОрганизации = ВыборкаПоСтрокамДокумента.ПодразделениеОрганизации; КонецПроцедуры // ДобавитьСтрокуНДФЛПоИФ // По строке выборок из результатов запроса по документу формируем движения по регистрам // // Параметры: // ВыборкаСуммКУдержанию - спозиционированная на определеной строке выборка по удержанию НДФЛ // ШапкаДокумента - выборка по данным шапки документа // ВыборкаПоНДФЛ - выборка по НДФЛ документа // ВыборкаПоНДФЛКЗачету - выборка по НДФЛ к зачету // // Возвращаемое значение: // Нет. // Процедура ДобавитьСтрокуНДФЛудержанный(ВыборкаСуммКУдержанию, ШапкаДокумента, ВыборкаПоНДФЛКЗачету) СтруктураПоиска = Новый Структура("ФизЛицо, СтавкаНалогообложенияРезидента, СтатьяФинансирования, КОСГУ"); ЗаполнитьЗначенияСвойств(СтруктураПоиска, ВыборкаСуммКУдержанию); // Получим реквизиты табличной части НДФЛПоИФ, // соотв. текущей строке удержанного НДФЛ в порядке месяцев налогового периода ТЗНДФЛ = ЭтотОбъект.НДФЛПоИФ.Выгрузить(СтруктураПоиска); ТЗНДФЛ.Сортировать("МесяцНалоговогоПериода"); ОсталосьРаспределить = ВыборкаСуммКУдержанию.Налог; // положительная сумма исчисленного налога // учтем возможный зачет образовавшейся ранее переплаты налога ВыборкаПоНДФЛКЗачету.Сбросить(); Если ВыборкаПоНДФЛКЗачету.НайтиСледующий(СтруктураПоиска) Тогда ОсталосьРаспределить = ОсталосьРаспределить - ВыборкаПоНДФЛКЗачету.НДФЛКЗачетуУчтено; КонецЕсли; // распределим получившуюся сумму налога к удержанию по месяцам налогового периода //ВыборкаПоНДФЛ.Сбросить(); // Пока ВыборкаПоНДФЛ.НайтиСледующий(СтруктураПоиска) Цикл Для Каждого СтрокаНДФЛ Из ТЗНДФЛ Цикл Если ОсталосьРаспределить > 0 И СтрокаНДФЛ.Налог > 0 Тогда // расчет суммы удерживаемого налога ПогашаемаяСумма = Мин(СтрокаНДФЛ.Налог, ОсталосьРаспределить); ОсталосьРаспределить = ОсталосьРаспределить - ПогашаемаяСумма; Движение = Движения.НДФЛРасчетыСБюджетом.Добавить(); // Свойства Движение.Период = КонецМесяца(ПериодРегистрации); Движение.ВидДвижения = ВидДвиженияНакопления.Расход; // Измерения Движение.ФизЛицо = СтрокаНДФЛ.ФизЛицо; Движение.Организация = ШапкаДокумента.ГоловнаяОрганизация; Движение.МесяцНалоговогоПериода = СтрокаНДФЛ.МесяцНалоговогоПериода; Движение.СтавкаНалогообложенияРезидента = Перечисления.НДФЛСтавкиНалогообложенияРезидента.Ставка13; Движение.СтатьяФинансирования = СтрокаНДФЛ.СтатьяФинансирования; Движение.КОСГУ = СтрокаНДФЛ.КОСГУ; // Ресурсы Движение.Налог = ПогашаемаяСумма; // Реквизиты Движение.ВидСтроки = Перечисления.НДФЛРасчетыСБюджетомВидСтроки.Удержание; Движение.ОбособленноеПодразделение = ШапкаДокумента.ОбособленноеПодразделение; КонецЕсли; КонецЦикла; КонецПроцедуры // ДобавитьСтрокуНДФЛудержанный // По строке выборок из результатов запроса по документу формируем движения по регистрам // // Параметры: // ВыборкаПоСтрокамДокумента - спозиционированная на определеной строке выборка // из результата запроса к ТЧ документа, // ШапкаДокумента - выборка по данным шапки документа // НаборЗаписей - набор записей для НДФЛРасчетыСБюджетом // // Возвращаемое значение: // Нет. // Процедура ДобавитьСтрокуНДФЛКЗачету(ВыборкаПоСтрокамДокумента, ШапкаДокумента) // Определяем вид движения по НДФЛКЗачету Если ВыборкаПоСтрокамДокумента.Налог < 0 Тогда // Налог по документу отрицательный - добавляем в "зачтено" ВидДвижения = ВидДвиженияНакопления.Приход; Сумма = - ВыборкаПоСтрокамДокумента.Налог ИначеЕсли ВыборкаПоСтрокамДокумента.НДФЛКЗачетуУчтено <> 0 Тогда // Учитываем ранее зачтенное - убираем из "зачтено" ВидДвижения = ВидДвиженияНакопления.Расход; Сумма = ВыборкаПоСтрокамДокумента.НДФЛКЗачетуУчтено Иначе // Ни отрицательных налогов, ни использования ранее зачтенных // Никаких движений по зачету НДФЛ делать не надо Возврат; КонецЕсли; Движение = Движения.НДФЛКЗачету.Добавить(); // Свойства Движение.Период = КонецМесяца(ПериодРегистрации); Движение.ВидДвижения = ВидДвижения; // Измерения Движение.ФизЛицо = ВыборкаПоСтрокамДокумента.ФизЛицо; Движение.Организация = ШапкаДокумента.ОбособленноеПодразделение; Движение.СтавкаНалогообложенияРезидента = ВыборкаПоСтрокамДокумента.СтавкаНалогообложенияРезидента; Движение.СтатьяФинансирования = ВыборкаПоСтрокамДокумента.СтатьяФинансирования; Движение.КОСГУ = ВыборкаПоСтрокамДокумента.КОСГУ; // Ресурсы Движение.СуммаНДФЛКЗачету = Сумма; КонецПроцедуры // ДобавитьСтрокуНДФЛКЗачету // Формирует записи регистра "ОсновныеНачисленияРаботниковОрганизаций" по данным документа // Процедура ЗаполнитьДвижениеПоОсновнымНачислениям(НаборЗаписей, ШапкаДокумента, ВыборкаПоНачислениям = Неопределено, Исправления = Истина) // получим реквизиты табличной части Если ВыборкаПоНачислениям = Неопределено Тогда ВыборкаПоНачислениям = СформироватьЗапросПоНачисления(ШапкаДокумента).Выбрать(); Иначе ВыборкаПоНачислениям.Сбросить(); КонецЕсли; // Заполним записи в наборах записей регистров Пока ВыборкаПоНачислениям.Следующий() Цикл Если Исправления ИЛИ НЕ (ВыборкаПоНачислениям.Сторно И ВыборкаПоНачислениям.СторнируемыйДокумент = ПерерассчитываемыйДокумент) Тогда ДобавитьСтрокуОсновныхНачислений(ВыборкаПоНачислениям, ШапкаДокумента, НаборЗаписей); КонецЕсли; КонецЦикла; КонецПроцедуры // По строке выборок из результатов запроса по документу формируем движения по регистру // // Параметры: // ВыборкаПоСтрокамДокумента - спозиционированная на определеной строке выборка // из результата запроса к ТЧ документа, // Возвращаемое значение: // Нет. // Процедура ДобавитьСтрокуОсновныхНачислений(ВыборкаПоСтрокамДокумента, ШапкаДокумента, НаборЗаписей) Движение = НаборЗаписей.Добавить(); // Свойства Движение.ПериодРегистрации = ПериодРегистрации; Движение.ПериодДействияНачало = ВыборкаПоСтрокамДокумента.ПериодДействияНачало; Движение.ПериодДействияКонец = ВыборкаПоСтрокамДокумента.ПериодДействияКонец; Движение.БазовыйПериодНачало = ВыборкаПоСтрокамДокумента.БазовыйПериодНачало; Движение.БазовыйПериодКонец = ВыборкаПоСтрокамДокумента.БазовыйПериодКонец; Движение.ВидРасчета = ВыборкаПоСтрокамДокумента.ВидРасчета; Движение.Сторно = ВыборкаПоСтрокамДокумента.Сторно; // Измерения Движение.Сотрудник = ВыборкаПоСтрокамДокумента.Сотрудник; Движение.ФизЛицо = ВыборкаПоСтрокамДокумента.ФизЛицо; Движение.Организация = ШапкаДокумента.ГоловнаяОрганизация; // Ресурсы Движение.Результат = ВыборкаПоСтрокамДокумента.Результат; Движение.ДополнительныйРезультат = ВыборкаПоСтрокамДокумента.ДополнительныйРезультат; // ресурсы по отработанному времени Если ВыборкаПоСтрокамДокумента.ЗачетОтработанногоВремени Тогда Движение.ОтработаноДней = ВыборкаПоСтрокамДокумента.ОтработаноДней; Движение.ОтработаноЧасов = ВыборкаПоСтрокамДокумента.ОтработаноЧасов; Движение.ОтработаноДнейПоПятидневке = ВыборкаПоСтрокамДокумента.ОтработаноДнейПоПятидневке; Движение.ОтработаноЧасовПоПятидневке= ВыборкаПоСтрокамДокумента.ОтработаноЧасовПоПятидневке; КонецЕсли; // ресурсы по норме времени Если ВыборкаПоСтрокамДокумента.ЗачетНормыВремени Тогда Движение.НормаДней = ВыборкаПоСтрокамДокумента.НормаДней; Движение.НормаЧасов = ВыборкаПоСтрокамДокумента.НормаЧасов; Движение.НормаДнейПоПятидневке = ВыборкаПоСтрокамДокумента.НормаДнейПоПятидневке; Движение.НормаЧасовПоПятидневке = ВыборкаПоСтрокамДокумента.НормаЧасовПоПятидневке; КонецЕсли; Движение.ОплаченоДнейЧасов = ВыборкаПоСтрокамДокумента.ОплаченоДнейЧасов; // Реквизиты Движение.ГрафикРаботы = ВыборкаПоСтрокамДокумента.ГрафикРаботы; Движение.ГрафикРаботыНорма = ВыборкаПоСтрокамДокумента.ГрафикРаботыНорма; Для Сч = 1 По 6 Цикл Движение["Показатель"+Сч] = ВыборкаПоСтрокамДокумента["Показатель"+Сч]; КонецЦикла; Движение.ВидУчетаВремени = ПроведениеРасчетов.ПолучитьВидУчетаВремени(ВыборкаПоСтрокамДокумента.СпособРасчета, ВыборкаПоСтрокамДокумента.ВидВремени, ВыборкаПоСтрокамДокумента.СуммированныйУчетРабочегоВремени, ВыборкаПоСтрокамДокумента.ВидИспользованияРабочегоВремени, ВыборкаПоСтрокамДокумента.ВидРасчета.Показатели); Движение.ПодразделениеОрганизации = ВыборкаПоСтрокамДокумента.ПодразделениеОрганизации; Движение.ОбособленноеПодразделение = ШапкаДокумента.ОбособленноеПодразделение; Движение.ПериодРасчетаСреднегоЗаработкаНачало = ВыборкаПоСтрокамДокумента.ПериодРасчетаСреднегоЗаработкаНачало; Движение.ПериодРасчетаСреднегоЗаработкаОкончание = ВыборкаПоСтрокамДокумента.ПериодРасчетаСреднегоЗаработкаОкончание; Движение.ДатаНачалаСобытия = ВыборкаПоСтрокамДокумента.ДатаНачалаСобытия; Движение.Авторасчет = ВыборкаПоСтрокамДокумента.Авторасчет; Движение.СторнируемыйДокумент = ВыборкаПоСтрокамДокумента.СторнируемыйДокумент; Движение.РасчетнаяБазаЗаЕдиницуНормыВремени = ВыборкаПоСтрокамДокумента.РасчетнаяБазаЗаЕдиницуНормыВремени; КонецПроцедуры // ДобавитьСтрокуОсновныхНачислений() // Формирует записи регистра "ДополнительныеНачисленияРаботниковОрганизаций" по данным документа // Процедура ЗаполнитьДвижениеПоДополнительнымНачислениям(НаборЗаписей, ШапкаДокумента, ВыборкаПоНачислениям = Неопределено, Исправления = Истина) // получим реквизиты табличной части Если ВыборкаПоНачислениям = Неопределено Тогда ВыборкаПоНачислениям = СформироватьЗапросПоДопНачисления(ШапкаДокумента).Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Иначе ВыборкаПоНачислениям.Сбросить(); КонецЕсли; // Заполним записи в наборах записей регистров Пока ВыборкаПоНачислениям.Следующий() Цикл Если Исправления ИЛИ НЕ ВыборкаПоНачислениям.Сторно Тогда ДобавитьСтрокуДопНачислений(ВыборкаПоНачислениям, ШапкаДокумента, НаборЗаписей); КонецЕсли; КонецЦикла; КонецПроцедуры // По строке выборок из результатов запроса по документу формируем движения по регистру // // Параметры: // ВыборкаПоСтрокамДокумента - спозиционированная на определеной строке выборка // из результата запроса к ТЧ документа, // Возвращаемое значение: // Нет. // Процедура ДобавитьСтрокуДопНачислений(ВыборкаПоСтрокамДокумента, ШапкаДокумента, НаборЗаписей) Движение = НаборЗаписей.Добавить(); ЗаполнитьЗначенияСвойств(Движение,ВыборкаПоСтрокамДокумента); // БазовыйПериодНачало, БазовыйПериодКонец, ВидРасчета, Сторно // Сотрудник, ФизЛицо, Результат, СкидкаПриНалогообложении // Размер,ЧислоМесяцев,ПодразделениеОрганизации, // Авторасчет,ДокументОснование,ДатаНачалаСобытия, // ПериодРасчетаСреднегоЗаработкаНачало,ПериодРасчетаСреднегоЗаработкаОкончание,СторнируемыйДокумент Движение.ВидУчетаВремени = ПроведениеРасчетов.ПолучитьВидУчетаВремени(ВыборкаПоСтрокамДокумента.СпособРасчета, Неопределено, ВыборкаПоСтрокамДокумента.СуммированныйУчетРабочегоВремени); Движение.ПериодРегистрации = ?(ВыборкаПоСтрокамДокумента.БазовыйПериодНачало > КонецМесяца(ПериодРегистрации), ПериодРегистрации, Макс(ПериодРегистрации, ВыборкаПоСтрокамДокумента.БазовыйПериодНачало)); Движение.Организация = ШапкаДокумента.ГоловнаяОрганизация; Движение.ОбособленноеПодразделение = ШапкаДокумента.ОбособленноеПодразделение; КонецПроцедуры // ДобавитьСтрокуДопНачислений // По строке выборок из результатов запроса по документу формируем движения по регистру // // Параметры: // ВыборкаПоСтрокамДокумента - спозиционированная на определеной строке выборка // из результата запроса к ТЧ документа, // Возвращаемое значение: // Нет. // Процедура ДобавитьСтрокуДоговора(ВыборкаПоСтрокамДокумента, ШапкаДокумента, НаборЗаписей) Движение = НаборЗаписей.Добавить(); ЗаполнитьЗначенияСвойств(Движение,ВыборкаПоСтрокамДокумента); // БазовыйПериодНачало, БазовыйПериодКонец, ВидРасчета, Сторно // Сотрудник, ФизЛицо, Результат, СкидкаПриНалогообложении // Размер,ЧислоМесяцев,ПодразделениеОрганизации, // Авторасчет,ДокументОснование,ДатаНачалаСобытия, // ПериодРасчетаСреднегоЗаработкаНачало,ПериодРасчетаСреднегоЗаработкаОкончание,СторнируемыйДокумент Движение.ПериодРегистрации = ?(ВыборкаПоСтрокамДокумента.БазовыйПериодНачало > КонецМесяца(ПериодРегистрации), ПериодРегистрации, Макс(ПериодРегистрации, ВыборкаПоСтрокамДокумента.БазовыйПериодНачало)); Движение.Организация = ШапкаДокумента.ГоловнаяОрганизация; Движение.ОбособленноеПодразделение = ШапкаДокумента.ОбособленноеПодразделение; КонецПроцедуры // ДобавитьСтрокуДоговора // По выборке из результатов запроса по документу формируем движения по регистру // // Параметры: // ШапкаДокумента - спозиционированная на определеной строке выборка // из результата запроса к документу // Возвращаемое значение: // Нет. // Процедура ДобавитьСтрокуРабочегоВремени(ВыборкаПоНачислениям, ШапкаДокумента, НаборЗаписей) Если ВыборкаПоНачислениям.ЯвляетсяПочасовымОтклонением Тогда Движение = НаборЗаписей.Добавить(); // Свойства Движение.Период = ВыборкаПоНачислениям.ПериодДействияНачало; // Измерения Движение.Сотрудник = ВыборкаПоНачислениям.Сотрудник; Движение.Организация = ШапкаДокумента.ГоловнаяОрганизация; Движение.ВидИспользованияРабочегоВремени = ВыборкаПоНачислениям.ВидИспользованияРабочегоВремени; // Ресурсы Движение.Часов = ВыборкаПоНачислениям.ОплачиватьЧасов; КонецЕсли; КонецПроцедуры // ДобавитьСтрокуРабочегоВремени() // получает доходы НДФЛ по табличным частям с доходами // Параметры: // ШапкаДокумента - спозиционированная выборка по шапке документа // НаборЗаписей - таблица значений или набор записей рег-ра - "приемник" сведений о доходах // Процедура СформироватьДоходыПоКодамНДФЛ(ШапкаДокумента, НаборЗаписей) Запрос = Новый Запрос; // Установим параметры запроса Запрос.УстановитьПараметр("парамСсылка" , Ссылка); Запрос.УстановитьПараметр("ДатаНалоговогоПериода", КонецГода(ПериодРегистрации)); КодОплатыТрудаПоНДФЛ = Новый Массив; КодОплатыТрудаПоНДФЛ.Добавить(Справочники.ДоходыНДФЛ.КодДоходаПоУмолчанию); КодОплатыТрудаПоНДФЛ.Добавить(Справочники.ДоходыНДФЛ.Код2012); Запрос.УстановитьПараметр("КодОплатыТрудаПоНДФЛ", КодОплатыТрудаПоНДФЛ); Запрос.Текст = "ВЫБРАТЬ | Доходы.СтатьяФинансирования, | Доходы.КОСГУ, | Доходы.Физлицо, | Доходы.КодДохода, | Доходы.КодВычета, | Доходы.Период, | СУММА(Доходы.СуммаДохода) КАК СуммаДохода, | СУММА(Доходы.СуммаВычета) КАК СуммаВычета, | СУММА(Доходы.КоличествоДетей) КАК КоличествоДетей, | Доходы.ПодразделениеОрганизации, | Доходы.ВидРасчета |ИЗ | (ВЫБРАТЬ | Основные.Сотрудник.Физлицо КАК Физлицо, | Основные.ВидРасчета.КодДоходаНДФЛ КАК КодДохода, | ВЫБОР | КОГДА Основные.ВидРасчета.КодДоходаНДФЛ В (&КодОплатыТрудаПоНДФЛ) | ТОГДА Основные.ПериодДействияНачало | ИНАЧЕ Основные.Ссылка.ПериодРегистрации | КОНЕЦ КАК Период, | Основные.СтатьяФинансирования КАК СтатьяФинансирования, | Основные.КОСГУ КАК КОСГУ, | Основные.Результат КАК СуммаДохода, | 0 КАК СуммаВычета, | NULL КАК КодВычета, | Основные.ПодразделениеОрганизации КАК ПодразделениеОрганизации, | 0 КАК КоличествоДетей, | Основные.ВидРасчета КАК ВидРасчета | ИЗ | Документ.НачислениеЗарплатыРаботникамОрганизаций.НачисленияПоИФ КАК Основные | ГДЕ | Основные.Ссылка = &парамСсылка | И Основные.ВидРасчета.КодДоходаНДФЛ <> ЗНАЧЕНИЕ(Справочник.ДоходыНДФЛ.ПустаяСсылка) | И Основные.Результат <> 0 | И (НЕ(Основные.Сотрудник.ВидДоговора = ЗНАЧЕНИЕ(Перечисление.ВидыДоговоровСФизЛицами.ВоеннаяСлужбаПоПризыву) | И Основные.ВидРасчета.ОтношениеКДенежномуСодержанию <> ЗНАЧЕНИЕ(Перечисление.ОтношениеКДенежномуСодержанию.ПустаяСсылка))) | | ОБЪЕДИНИТЬ ВСЕ | | ВЫБРАТЬ | Дополнительные.Сотрудник.Физлицо, | Дополнительные.ВидРасчета.КодДоходаНДФЛ, | Дополнительные.Ссылка.ПериодРегистрации, | Дополнительные.СтатьяФинансирования, | Дополнительные.КОСГУ, | Дополнительные.Результат, | Дополнительные.СуммаВычета, | Дополнительные.КодВычета, | Дополнительные.ПодразделениеОрганизации, | Дополнительные.КоличествоДетей, | Дополнительные.ВидРасчета | ИЗ | Документ.НачислениеЗарплатыРаботникамОрганизаций.ДополнительныеНачисленияПоИФ КАК Дополнительные | ГДЕ | Дополнительные.Ссылка = &парамСсылка | И Дополнительные.ВидРасчета.КодДоходаНДФЛ <> ЗНАЧЕНИЕ(Справочник.ДоходыНДФЛ.ПустаяСсылка) | И Дополнительные.Результат <> 0 | И (НЕ(Дополнительные.Сотрудник.ВидДоговора = ЗНАЧЕНИЕ(Перечисление.ВидыДоговоровСФизЛицами.ВоеннаяСлужбаПоПризыву) | И Дополнительные.ВидРасчета.ОтношениеКДенежномуСодержанию <> ЗНАЧЕНИЕ(Перечисление.ОтношениеКДенежномуСодержанию.ПустаяСсылка))) | | ОБЪЕДИНИТЬ ВСЕ | | ВЫБРАТЬ | ДоговорыНаВыполнениеРабот.Сотрудник.Физлицо, | ДоговорыНаВыполнениеРабот.ВидРасчета.КодДоходаНДФЛ, | ДоговорыНаВыполнениеРабот.Ссылка.ПериодРегистрации, | ДоговорыНаВыполнениеРабот.СтатьяФинансирования, | ДоговорыНаВыполнениеРабот.КОСГУ, | ДоговорыНаВыполнениеРабот.Результат, | ДоговорыНаВыполнениеРабот.СуммаВычета, | ДоговорыНаВыполнениеРабот.КодВычета, | ДоговорыНаВыполнениеРабот.ПодразделениеОрганизации, | 0, | ДоговорыНаВыполнениеРабот.ВидРасчета | ИЗ | Документ.НачислениеЗарплатыРаботникамОрганизаций.ДоговорыНаВыполнениеРабот КАК ДоговорыНаВыполнениеРабот | ГДЕ | ДоговорыНаВыполнениеРабот.Ссылка = &парамСсылка | И ДоговорыНаВыполнениеРабот.ВидРасчета.КодДоходаНДФЛ <> ЗНАЧЕНИЕ(Справочник.ДоходыНДФЛ.ПустаяСсылка) | И ДоговорыНаВыполнениеРабот.Результат <> 0 | И (НЕ(ДоговорыНаВыполнениеРабот.Сотрудник.ВидДоговора = ЗНАЧЕНИЕ(Перечисление.ВидыДоговоровСФизЛицами.ВоеннаяСлужбаПоПризыву) | И ДоговорыНаВыполнениеРабот.ВидРасчета.ОтношениеКДенежномуСодержанию <> ЗНАЧЕНИЕ(Перечисление.ОтношениеКДенежномуСодержанию.ПустаяСсылка)))) КАК Доходы | |СГРУППИРОВАТЬ ПО | Доходы.Физлицо, | Доходы.Период, | Доходы.КодДохода, | Доходы.КодВычета, | Доходы.ПодразделениеОрганизации, | Доходы.СтатьяФинансирования, | Доходы.КОСГУ, | Доходы.ВидРасчета | |УПОРЯДОЧИТЬ ПО | Физлицо.Наименование"; ДоходыПоКодам = Запрос.Выполнить().Выбрать(); // сформируем движения НДФЛСведенияОДоходах Пока ДоходыПоКодам.Следующий() Цикл Движение = НаборЗаписей.Добавить(); // свойства Движение.Период = ДоходыПоКодам.Период; // измерения Движение.Организация = ШапкаДокумента.ГоловнаяОрганизация; Движение.Физлицо = ДоходыПоКодам.Физлицо; Движение.КодДохода = ДоходыПоКодам.КодДохода; Движение.ПериодРегистрации = ПериодРегистрации; Движение.СтатьяФинансирования = ДоходыПоКодам.СтатьяФинансирования; Движение.КОСГУ = ДоходыПоКодам.КОСГУ; // ресурсы Движение.СуммаДохода = ДоходыПоКодам.СуммаДохода; Движение.СуммаВычета = ДоходыПоКодам.СуммаВычета; // реквизиты Движение.ОбособленноеПодразделение = ШапкаДокумента.ОбособленноеПодразделение; Движение.КодВычета = ДоходыПоКодам.КодВычета; Движение.КоличествоДетей = ДоходыПоКодам.КоличествоДетей; Движение.ИсчисленоИзЗарплаты = Истина; Движение.ПодразделениеОрганизации = ДоходыПоКодам.ПодразделениеОрганизации; Движение.ВидРасчета = ДоходыПоКодам.ВидРасчета; КонецЦикла; КонецПроцедуры // СформироватьДоходыПоКодамНДФЛ() // Вычисляет разницу между начислениями и удержаниями работника и формирует // движения по взаиморасчетам с работниками // // Параметры: // Перерасчет - признак проведения перерасчетов, по умолчанию - Ложь // Физлица - список физлиц, по которым производится расчет, по умолчанию - отсутствует // // Возвращаемое значение: // Нет // Процедура СформироватьВзаиморасчетыСРаботниками(Перерасчет = Ложь, Физлица = Неопределено) НачислениеЗарплатыСервис.СформироватьВзаиморасчетыСРаботникамиПоПериодуНачисления(ЭтотОбъект, Перерасчет, Физлица); КонецПроцедуры // СформироватьВзаиморасчетыСРаботниками() Процедура ПриКопировании(ОбъектКопирования) ПерерассчитываемыйДокумент = Неопределено КонецПроцедуры //////////////////////////////////////////////////////////////////////////////// // ПРОЦЕДУРЫ - ОБРАБОТЧИКИ СОБЫТИЙ Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения) Если ОбменДанными.Загрузка Тогда Возврат; КонецЕсли; Если ВидОперации = Перечисления.ВидыОперацийНачислениеЗарплатыРаботникамОрганизаций.ПолныйРасчет Или ВидОперации = Перечисления.ВидыОперацийНачислениеЗарплатыРаботникамОрганизаций.РасчетНачислений Тогда МассивТЧ = Новый Массив(); МассивТЧ.Добавить(Начисления); МассивТЧ.Добавить(ДополнительныеНачисления); КраткийСоставДокумента = ПроцедурыУправленияПерсоналом.ЗаполнитьКраткийСоставДокумента(МассивТЧ); Если ПустаяСтрока(КраткийСоставДокумента) Тогда МассивТЧ = Новый Массив(); МассивТЧ.Добавить(ДоговорыНаВыполнениеРабот); МассивТЧ.Добавить(НДФЛ); КраткийСоставДокумента = ПроцедурыУправленияПерсоналом.ЗаполнитьКраткийСоставДокумента(МассивТЧ, "Физлицо"); КонецЕсли; Если ПустаяСтрока(КраткийСоставДокумента) Тогда МассивТЧ = Новый Массив(); МассивТЧ.Добавить(Удержания); КраткийСоставДокумента = ПроцедурыУправленияПерсоналом.ЗаполнитьКраткийСоставДокумента(МассивТЧ, "Физлицо"); КонецЕсли; ИначеЕсли ВидОперации = Перечисления.ВидыОперацийНачислениеЗарплатыРаботникамОрганизаций.РасчетНДФЛ Тогда МассивТЧ = Новый Массив(); МассивТЧ.Добавить(НДФЛ); КраткийСоставДокумента = ПроцедурыУправленияПерсоналом.ЗаполнитьКраткийСоставДокумента(МассивТЧ, "Физлицо"); ИначеЕсли ВидОперации = Перечисления.ВидыОперацийНачислениеЗарплатыРаботникамОрганизаций.РасчетУдержаний Тогда МассивТЧ = Новый Массив(); МассивТЧ.Добавить(Удержания); КраткийСоставДокумента = ПроцедурыУправленияПерсоналом.ЗаполнитьКраткийСоставДокумента(МассивТЧ, "Физлицо"); КонецЕсли; КонецПроцедуры // ПередЗаписью() Процедура ПриЗаписи(Отказ) Если ПометкаУдаления Тогда Запрос = Новый Запрос; Запрос.УстановитьПараметр("Ссылка", Ссылка); Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | 1 |ИЗ | РегистрСведений.ЗаполнениеПлановыхНачислений КАК ЗаполнениеПлановыхНачислений |ГДЕ | ЗаполнениеПлановыхНачислений.ОбъектЗаполнения = &Ссылка"; Если Не Запрос.Выполнить().Пустой() Тогда // удаляем запись о перезаполнении из регистра НаборЗаписей = РегистрыСведений.ЗаполнениеПлановыхНачислений.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.ОбъектЗаполнения.Установить(Ссылка); НаборЗаписей.Записать(); КонецЕсли; КонецЕсли; КонецПроцедуры Процедура ОбработкаПроведения(Отказ, Режим) ПроизводныеДвижения = Новый Массив; Если ПериодРегистрации < ПроведениеРасчетов.ДатаЗаменыЕСНСтраховымиВзносами() Тогда ПроизводныеДвижения.Добавить(Движения.ЕСНСведенияОДоходах); Иначе ПроизводныеДвижения.Добавить(Движения.СтраховыеВзносыСведенияОДоходах); КонецЕсли; Для Каждого Набор Из Движения Цикл Набор.Очистить(); Если ПроизводныеДвижения.Найти(Набор) <> Неопределено Тогда Набор.Записать(); КонецЕсли; КонецЦикла; // Подготовим таблицу соответствия доходов и вычетов мСоответствиеДоходовИВычетов = ПроведениеРасчетов.ПолучитьСоответствиеДоходовИВычетов(); // Получим реквизиты шапки ШапкаДокумента = ПолучитьШапкуДокумента(); // Заголовок для сообщений об ошибках проведения. Заголовок = ОбщегоНазначения.ПредставлениеДокументаПриПроведении(Ссылка); //Надо позвать проверку заполнения реквизитов шапки ПроверитьЗаполнениеШапки(ШапкаДокумента, Отказ, Заголовок); Если НЕ Отказ Тогда // получим реквизиты табличных частей документа ВыборкаПоНачислениямОсн = СформироватьЗапросПоНачисления(ШапкаДокумента).Выбрать(); ВыборкаПоНачислениямДоп = СформироватьЗапросПоДопНачисления(ШапкаДокумента).Выбрать(); РезультатЗапросаПоДоговорам = СформироватьЗапросПоДоговорам(ШапкаДокумента); ВыборкаПоДоговорам = РезультатЗапросаПоДоговорам.Выбрать(); ВыборкаПоУдержаниям = СформироватьЗапросПоУдержания(ШапкаДокумента).Выбрать(); // проверяем заполнение начислений ПроверитьЗаполнениеНачислений(ШапкаДокумента, ВыборкаПоНачислениямОсн, Отказ, Заголовок, Истина); ПроверитьЗаполнениеДополнительныхНачислений(ШапкаДокумента, ВыборкаПоНачислениямДоп, Отказ, Заголовок, Истина); ПроверитьЗаполнениеДоговоров(ШапкаДокумента, ВыборкаПоДоговорам, Отказ, Заголовок, Истина); ПроверитьЗаполнениеУдержаний(ШапкаДокумента, ВыборкаПоУдержаниям, Отказ, Заголовок, Истина); ПроверитьЗаполнениеНДФЛ(Отказ, Заголовок, Истина); КонецЕсли; // Движения стоит добавлять, если в проведении еще не отказано (отказ =ложь) Если НЕ Отказ Тогда Если ШапкаДокумента.ЭтоРасчетПервойПоловиныМесяца Тогда // взаиморасчеты с работниками СформироватьВзаиморасчетыСРаботниками(); Иначе Движения.ОсновныеНачисленияРаботниковОрганизаций.мВыполнятьВспомогательныеРасчеты = Истина; ОбщиеПоляДляБУ = Новый Структура( "ПериодРегистрации, |Организация, |ОбособленноеПодразделение", ШапкаДокумента.ПериодРегистрации, ШапкаДокумента.ГоловнаяОрганизация, ШапкаДокумента.ОбособленноеПодразделение); //////////////////////////////////////////////////////////////////////// // основные Начисления ВыборкаПоНачислениямОсн.Сбросить(); Пока ВыборкаПоНачислениямОсн.Следующий() Цикл // Заполним записи в наборах записей регистров ДобавитьСтрокуОсновныхНачислений(ВыборкаПоНачислениямОсн, ШапкаДокумента, Движения.ОсновныеНачисленияРаботниковОрганизаций); ДобавитьСтрокуРабочегоВремени(ВыборкаПоНачислениямОсн, ШапкаДокумента, Движения.ВнутрисменноеВремяРаботниковОрганизаций); КонецЦикла; // переносим отражение в регистр ОтражениеВУчете.ЗаполнитьНаборЗаписейПоТЧ(Движения.БУОсновныеНачисления, НачисленияПоИФ, ОбщиеПоляДляБУ); //////////////////////////////////////////////////////////////////////// // дополнительные Начисления ВыборкаПоНачислениямДоп.Сбросить(); Пока ВыборкаПоНачислениямДоп.Следующий() Цикл // Заполним записи в наборе записей регистра ДобавитьСтрокуДопНачислений(ВыборкаПоНачислениямДоп, ШапкаДокумента, Движения.ДополнительныеНачисленияРаботниковОрганизаций); КонецЦикла; ПроведениеРасчетов.ДобавитьДвиженияПериодическихВыплат(Движения, Ссылка); // переносим отражение в регистр ОтражениеВУчете.ЗаполнитьНаборЗаписейПоТЧ(Движения.БУДополнительныеНачисления, ДополнительныеНачисленияПоИФ, ОбщиеПоляДляБУ); //////////////////////////////////////////////////////////////////////// // ДоговорыНаВыполнениеРабот // получим реквизиты табличной части ВыборкаПоДоговорам.Сбросить(); Пока ВыборкаПоДоговорам.Следующий() Цикл // Заполним записи в наборе записей регистра ДобавитьСтрокуДоговора(ВыборкаПоДоговорам, ШапкаДокумента, Движения.ДополнительныеНачисленияРаботниковОрганизаций); КонецЦикла; // переносим отражение в регистр ОтражениеВУчете.ЗаполнитьНаборЗаписейПоТЧ(Движения.БУДополнительныеНачисления, РезультатЗапросаПоДоговорам.Выгрузить(), ОбщиеПоляДляБУ); //////////////////////////////////////////////////////////////////////// // удержания // получим реквизиты табличной части ВыборкаПоУдержаниям.Сбросить(); Пока ВыборкаПоУдержаниям.Следующий() Цикл // Заполним записи в наборе записей регистра ДобавитьСтрокуУдержаний(ВыборкаПоУдержаниям, ШапкаДокумента, Движения.УдержанияРаботниковОрганизаций); КонецЦикла; // переносим отражение в регистр ОтражениеВУчете.ЗаполнитьНаборЗаписейПоТЧ(Движения.БУУдержания, УдержанияПоИФ, ОбщиеПоляДляБУ); //////////////////////////////////////////////////////////////////////// // НДФЛ // НДФЛ Вычеты (предоставленные и имущественные) СформироватьВычетыПоНДФЛ(ШапкаДокумента, , Отказ, Заголовок); //////////////////////////////////////////////////////////////////////// // исчисленный НДФЛ // НДФЛ расчеты с бюджетом ЗаполнитьНаборЗаписейНДФЛПоНачислениям(ШапкаДокумента, Движения.НДФЛРасчетыСБюджетом); // НДФЛ к зачету // получим реквизиты табличной части ВыборкаПоНДФЛКЗачету = СформироватьЗапросПоНДФЛКЗачету().Выбрать(); Пока ВыборкаПоНДФЛКЗачету.Следующий() Цикл // Заполним записи в наборах записей регистров ДобавитьСтрокуНДФЛКЗачету(ВыборкаПоНДФЛКЗачету, ШапкаДокумента); КонецЦикла; //////////////////////////////////////////////////////////////////////// // удержанный НДФЛ // посмотрим в учетную политику УпрощенныйУчетНДФЛ = ПроцедурыУправленияПерсоналом.ЗначениеУчетнойПолитикиПоПерсоналуОрганизации(глЗначениеПеременной("глУчетнаяПолитикаПоПерсоналуОрганизации"), Организация, "УпрощенныйУчетНДФЛ"); Если УпрощенныйУчетНДФЛ Тогда ВыборкаПоНДФЛуд = СформироватьЗапросПоНДФЛудержанный().Выбрать(); Пока ВыборкаПоНДФЛуд.Следующий() Цикл // Заполним записи в наборах записей регистров ДобавитьСтрокуНДФЛудержанный(ВыборкаПоНДФЛуд, ШапкаДокумента, ВыборкаПоНДФЛКЗачету); КонецЦикла; КонецЕсли; //////////////////////////////////////////////////////////////////////// // доходы НДФЛ // сформируем доходы НДФЛ по начислениям документа СформироватьДоходыПоКодамНДФЛ(ШапкаДокумента, Движения.НДФЛСведенияОДоходах); //////////////////////////////////////////////////////////////////////// // взаиморасчеты с работниками // сформируем начисления к выплате по начислениям документа СформироватьВзаиморасчетыСРаботниками(); //////////////////////////////////////////////////////////////////////// // Пособия по социальному страхованию СформироватьПособияПоУходу(Движения.ПособияПоУходуЗаРебенкомДоПолутораЛет, Движения.ЗаработкиПолучателейПособияПоУходуЗаРебенкомДоПолутораЛет); ОписаниеДокумента = Новый Структура("Ссылка, ПериодРегистрации, ОбособленноеПодразделение, Сотрудник, ВидЗанятости", Ссылка, ПериодРегистрации, Организация); Движения.ПособияСоциальномуСтрахованию.Загрузить(ПроведениеРасчетовДополнительный.СформироватьПрочиеПособияПоСоциальномуСтрахованию(ОписаниеДокумента)); // выполним удаление перерасчетов и перезаполнений исправленного документа Если ЗначениеЗаполнено(ПерерассчитываемыйДокумент) Тогда ПроведениеРасчетов.УдалитьСведенияОПерерасчетеДокумента(Ссылка, Истина); // Только по исправленным документам ПроведениеРасчетов.УдалитьСведенияОПерезаполненииДокумента(Ссылка, Неопределено, Истина); // Только по исправленным документам и только сотрудников нашего документа КонецЕсли; КонецЕсли; КонецЕсли; КонецПроцедуры Процедура ОбработкаУдаленияПроведения(Отказ) Движения.ОсновныеНачисленияРаботниковОрганизаций.мВыполнятьВспомогательныеРасчеты = Истина; Для Каждого Набор Из Движения Цикл Набор.Очистить(); Набор.Записать(); КонецЦикла КонецПроцедуры // ОбработкаУдаленияПроведения() |
||||
Исправлено в релизе: | 1.0.11 | ||||
Код ошибки: | 10048380 | ||||
Дата публикации: | 03.03.2010 18:56:32 | ||||
Дата последнего изменения: | 03.03.2010 0:00:00 | ||||
Описание: | В документе "Отражение зарплаты в бухучете" в некоторых случаях взносы по страхованию от НС и ПЗ в случае отсутствия базы могут распределяться некорректно. | ||||
Исправлено в релизе: | 1.0.11 | ||||
Код ошибки: | 10047705 | ||||
Дата публикации: | 19.02.2010 17:25:06 | ||||
Дата последнего изменения: | 15.03.2010 0:00:00 | ||||
Описание: | В документах "Начисление по больничному листу", "Начисление отпуска" при ручном изменении сумм начисленного пособия не происходит изменения сумм отражения в учете. Это приводит к тому, что распределение не совпадает с расчетом, что препятствуюет проведению документа. | ||||
Исправлено в релизе: | 1.0.12 | ||||
Код ошибки: | 10041035 | ||||
Дата публикации: | 11.02.2010 20:52:49 | ||||
Дата последнего изменения: | 11.02.2010 0:00:00 | ||||
Описание: | В случае, если сотрудник уволен, а потом принят сразу следующим днем, предоставляется двойной вычет на ребенка. | ||||
Исправлено в релизе: | 1.0.11 | ||||