Имя: Пароль:
1C
1С v8
УПП 1.3.21.1, форма Т-13. Выводятся не все сотрудники из табеля. HELP!
0 Grusswelle
 
16.03.12
11:36
Сабж! Пока забираюсь в отладку - позырить чего там как откуда берётся, но, может, есть какая-нибудь простая внешняя печатная форма, например? Если есть - выручайте, скиньте на grusswelle@mail.ru, буду благодарен... Или куда чего курить?!

ЗЫ: Пока понятно только, что дело в настройках компоновщика данных отчёта УнифицированнаяФормаТ13. Продолжаю копать.
1 wPa
 
16.03.12
11:42
(0) Т-13 по жизни самый глючный отчет, сколько бы его не правили ) Возьмись и перепиши )
2 Grusswelle
 
16.03.12
11:42
(1) Смотрю, вот, разбираюсь как устроен, чего править...

ЗЫ: А ведь казалось бы...
3 wPa
 
16.03.12
11:47
(2) ну вкраце - может быть что угодно ) смотри РН рабочее время сотрудников, смотри проведены ли расчетные документы (к примеру отпуск кадры провели, а начисление не проведено - будет глюк в Т13), смотри заполнены ли графики работы, производственный календарь. В общем ..и сколько нам открытий чудных ))
4 Grusswelle
 
16.03.12
11:54
(3) Ошибка где-то в этом запросе (после его выполнения усекается множество сотрудников):

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

ИНДЕКСИРОВАТЬ ПО
   Сотрудник
;

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

ИНДЕКСИРОВАТЬ ПО
   Сотрудник
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ДАТАВРЕМЯ(2010, 1, 1) КАК ДатаТабеля,
   ДАТАВРЕМЯ(2010, 1, 1) КАК ПериодРегистрации
ПОМЕСТИТЬ ВТДатыТабеля
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   Сотрудники.Сотрудник КАК Сотрудник,
   Сотрудники.СотрудникНаименование КАК СотрудникНаименование,
   Сотрудники.Организация,
   Сотрудники.ПодразделениеОрганизации,
   Сотрудники.Должность,
   Сотрудники.ГрафикРаботы,
   ВТДатыТабеля.ДатаТабеля КАК ДатаТабеля,
   ВТДатыТабеля.ПериодРегистрации КАК ПериодРегистрации
ПОМЕСТИТЬ ВТСотрудникДата
ИЗ
   ВТСотрудники КАК Сотрудники
       ЛЕВОЕ СОЕДИНЕНИЕ ВТДатыТабеля КАК ВТДатыТабеля
       ПО (ВТДатыТабеля.ДатаТабеля = Сотрудники.ДатаСр)

ИНДЕКСИРОВАТЬ ПО
   Сотрудник,
   ДатаТабеля
;

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

ИНДЕКСИРОВАТЬ ПО
   Период,
   Сотрудник
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ПлановыеНачисления.ВидРасчета,
   ПлановыеНачисления.ВидРасчета.ОбозначениеВТабелеУчетаРабочегоВремени КАК КлассификаторВидаВремени,
   ДатыПолученияВР.ДатаТабеля КАК ДатаТабеля,
   ДатыПолученияВР.ПериодРегистрации КАК ПериодРегистрации,
   ДатыПолученияВР.Сотрудник КАК Сотрудник
ПОМЕСТИТЬ ВТПлановыеНачисленияСотрудников
ИЗ
   (ВЫБРАТЬ
       ДатыТабеля.ДатаТабеля КАК ДатаТабеля,
       ДатыТабеля.ПериодРегистрации КАК ПериодРегистрации,
       МАКСИМУМ(ПлановыеНачисления.Период) КАК Период,
       ПлановыеНачисления.Сотрудник КАК Сотрудник
   ИЗ
       ВТДатыТабеля КАК ДатыТабеля
           ЛЕВОЕ СОЕДИНЕНИЕ ВТНеобработанныеПлановыеНачисленияРаботниковОрганизаций КАК ПлановыеНачисления
           ПО (ПлановыеНачисления.Период <= ДатыТабеля.ДатаТабеля)
               И (ПлановыеНачисления.ПериодРегистрации = ДатыТабеля.ПериодРегистрации)
   
   СГРУППИРОВАТЬ ПО
       ДатыТабеля.ДатаТабеля,
       ДатыТабеля.ПериодРегистрации,
       ПлановыеНачисления.Сотрудник) КАК ДатыПолученияВР
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТНеобработанныеПлановыеНачисленияРаботниковОрганизаций КАК ПлановыеНачисления
       ПО ДатыПолученияВР.Период = ПлановыеНачисления.Период
           И ДатыПолученияВР.Сотрудник = ПлановыеНачисления.Сотрудник
           И ДатыПолученияВР.ПериодРегистрации = ПлановыеНачисления.ПериодРегистрации

ИНДЕКСИРОВАТЬ ПО
   Сотрудник,
   ДатаТабеля
;

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

СГРУППИРОВАТЬ ПО
   ФактическийПериодДействия.Сотрудник,
   ФактическийПериодДействия.ВидРасчета,
   ФактическийПериодДействия.ВидРасчета.ВидВремени,
   ФактическийПериодДействия.ГрафикРаботы,
   ФактическийПериодДействия.ПериодДействия,
   ФактическийПериодДействия.ПериодРегистрации,
   ФактическийПериодДействия.Сторно,
   ФактическийПериодДействия.ОтработаноЧасов,
   ГрафикиРаботыПоВидамВремени.Дата,
   ФактическийПериодДействия.ВидРасчета.ОбозначениеВТабелеУчетаРабочегоВремени,
   ФактическийПериодДействия.ВидРасчета.ОбозначениеВТабелеУчетаРабочегоВремени.РабочееВремя

ИНДЕКСИРОВАТЬ ПО
   Сотрудник,
   ВидРасчета,
   ГрафикРаботы
;

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

ИНДЕКСИРОВАТЬ ПО
   Сотрудник,
   ДатаТабеля,
   ПеречислениеВидВремени
;

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

СГРУППИРОВАТЬ ПО
   РабочееВремяРаботниковОрганизаций.Сотрудник,
   РабочееВремяРаботниковОрганизаций.ВидИспользованияРабочегоВремени,
   РабочееВремяРаботниковОрганизаций.Период,
   РабочееВремяРаботниковОрганизаций.ПериодРегистрации

ИНДЕКСИРОВАТЬ ПО
   Сотрудник,
   ДатаТабеля
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   Работники.Сотрудник КАК Сотрудник,
   Работники.Период КАК Период,
   Работники.ГрафикРаботы,
   Работники.ПериодЗавершения,
   Работники.ГрафикРаботыЗавершения
ПОМЕСТИТЬ ВТГрафикиРаботниковСрез
ИЗ
   РегистрСведений.РаботникиОрганизаций.СрезПоследних(
           &НачалоПериода,
           Сотрудник В
               (ВЫБРАТЬ
                   Сотрудники.Сотрудник
               ИЗ
                   ВТСотрудники КАК Сотрудники)) КАК Работники

ИНДЕКСИРОВАТЬ ПО
   Сотрудник,
   Период
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   Работники.Сотрудник КАК Сотрудник,
   &НачалоПериода КАК Период,
   ВЫБОР
       КОГДА Работники.ПериодЗавершения <= &НачалоПериода
               И Работники.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
           ТОГДА Работники.ГрафикРаботыЗавершения
       ИНАЧЕ Работники.ГрафикРаботы
   КОНЕЦ КАК ГрафикРаботы
ПОМЕСТИТЬ ВТГрафикиРаботников
ИЗ
   ВТГрафикиРаботниковСрез КАК Работники

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
   Работники.Сотрудник,
   Работники.ПериодЗавершения,
   Работники.ГрафикРаботыЗавершения
ИЗ
   ВТГрафикиРаботниковСрез КАК Работники
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизацийПроверка
       ПО (РаботникиОрганизацийПроверка.Сотрудник = Работники.Сотрудник)
           И (РаботникиОрганизацийПроверка.Период <= Работники.ПериодЗавершения)
           И (РаботникиОрганизацийПроверка.Период > Работники.Период)
ГДЕ
   Работники.ПериодЗавершения >= &НачалоПериода
   И Работники.ПериодЗавершения <= &КонецПериода
   И РаботникиОрганизацийПроверка.Сотрудник ЕСТЬ NULL

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ РАЗЛИЧНЫЕ
   РаботникиОрганизаций.Сотрудник,
   РаботникиОрганизаций.Период,
   РаботникиОрганизаций.ГрафикРаботы
ИЗ
   РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТСотрудники КАК ВТСотрудники
       ПО РаботникиОрганизаций.Сотрудник = ВТСотрудники.Сотрудник
ГДЕ
   РаботникиОрганизаций.Период > &НачалоПериода
   И РаботникиОрганизаций.Период <= &КонецПериода

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
   РаботникиОрганизаций.Сотрудник,
   РаботникиОрганизаций.ПериодЗавершения,
   РаботникиОрганизаций.ГрафикРаботыЗавершения
ИЗ
   РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТСотрудники КАК ВТСотрудники
       ПО РаботникиОрганизаций.Сотрудник = ВТСотрудники.Сотрудник
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизацийПроверка
       ПО (РаботникиОрганизацийПроверка.Сотрудник = РаботникиОрганизаций.Сотрудник)
           И (РаботникиОрганизацийПроверка.Период <= РаботникиОрганизаций.ПериодЗавершения)
           И (РаботникиОрганизацийПроверка.Период > РаботникиОрганизаций.Период)
ГДЕ
   РаботникиОрганизаций.Период > &НачалоПериода
   И РаботникиОрганизаций.Период <= &КонецПериода
   И РаботникиОрганизаций.ПериодЗавершения <= &КонецПериода
   И РаботникиОрганизаций.ПериодЗавершения > &НачалоПериода
   И РаботникиОрганизацийПроверка.Сотрудник ЕСТЬ NULL

ИНДЕКСИРОВАТЬ ПО
   Сотрудник,
   Период
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ГрафикиРаботыПоВидамВремени.ГрафикРаботы КАК ГрафикРаботы,
   ГрафикиРаботыПоВидамВремени.Дата КАК Дата,
   НАЧАЛОПЕРИОДА(ГрафикиРаботыПоВидамВремени.Дата, МЕСЯЦ) КАК ПериодРегистрации,
   ГрафикиРаботыПоВидамВремени.ОсновноеЗначение,
   ГрафикиРаботыПоВидамВремени.ВидУчетаВремени КАК ВидУчетаВремени,
   ГрафикиРаботыПоВидамВремени.Документ,
   ГрафикиРаботыПоВидамВремени.План КАК План
ПОМЕСТИТЬ ВТГрафикиРаботыПоВидамВремени
ИЗ
   РегистрСведений.ГрафикиРаботыПоВидамВремени КАК ГрафикиРаботыПоВидамВремени
ГДЕ
   ГрафикиРаботыПоВидамВремени.ГрафикРаботы В
           (ВЫБРАТЬ
               Сотрудники.Сотрудник
           ИЗ
               ВТСотрудники КАК Сотрудники
       
           ОБЪЕДИНИТЬ ВСЕ
       
           ВЫБРАТЬ
               ГрафикиРаботников.ГрафикРаботы
           ИЗ
               ВТГрафикиРаботников КАК ГрафикиРаботников)
   И ГрафикиРаботыПоВидамВремени.Дата МЕЖДУ &НачалоПериода И &КонецПериода
   И ГрафикиРаботыПоВидамВремени.ВидУчетаВремени <> ЗНАЧЕНИЕ(Перечисление.ВидыУчетаВремени.ПоДням)

ИНДЕКСИРОВАТЬ ПО
   ГрафикРаботы,
   Дата,
   ВидУчетаВремени,
   План
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ВТГрафикиРаботыПоВидамВремени.ГрафикРаботы,
   ВТГрафикиРаботыПоВидамВремени.Дата,
   ВТГрафикиРаботыПоВидамВремени.ПериодРегистрации,
   СУММА(ВТГрафикиРаботыПоВидамВремени.ОсновноеЗначение) КАК ОсновноеЗначение,
   ВТГрафикиРаботыПоВидамВремени.ВидУчетаВремени
ПОМЕСТИТЬ ВТГрафикиРаботыПоОсновнымНачислениям
ИЗ
   ВТГрафикиРаботыПоВидамВремени КАК ВТГрафикиРаботыПоВидамВремени

СГРУППИРОВАТЬ ПО
   ВТГрафикиРаботыПоВидамВремени.ГрафикРаботы,
   ВТГрафикиРаботыПоВидамВремени.ВидУчетаВремени,
   ВТГрафикиРаботыПоВидамВремени.ПериодРегистрации,
   ВТГрафикиРаботыПоВидамВремени.Дата
;

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

СГРУППИРОВАТЬ ПО
   Основной.Сотрудник,
   Основной.ГрафикРаботы,
   Основной.Период

ИНДЕКСИРОВАТЬ ПО
   Сотрудник,
   ПериодНачало
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   СостояниеРаботников.Сотрудник КАК Сотрудник,
   СостояниеРаботников.Период КАК Период,
   СостояниеРаботников.Состояние,
   СостояниеРаботников.ПериодЗавершения,
   СостояниеРаботников.СостояниеЗавершения
ПОМЕСТИТЬ ВТСостояниеРаботниковСрез
ИЗ
   РегистрСведений.СостояниеРаботниковОрганизаций.СрезПоследних(
           &НачалоПериода,
           Сотрудник В
               (ВЫБРАТЬ
                   Сотрудники.Сотрудник
               ИЗ
                   ВТСотрудники КАК Сотрудники)) КАК СостояниеРаботников

ИНДЕКСИРОВАТЬ ПО
   Сотрудник,
   Период
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   СостояниеРаботников.Сотрудник КАК Сотрудник,
   &НачалоПериода КАК Период,
   ВЫБОР
       КОГДА СостояниеРаботников.ПериодЗавершения <= &НачалоПериода
               И СостояниеРаботников.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
           ТОГДА СостояниеРаботников.СостояниеЗавершения
       ИНАЧЕ СостояниеРаботников.Состояние
   КОНЕЦ КАК Состояние
ПОМЕСТИТЬ ВТСостояниеРаботников
ИЗ
   ВТСостояниеРаботниковСрез КАК СостояниеРаботников

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
   СостояниеРаботников.Сотрудник,
   СостояниеРаботников.ПериодЗавершения,
   СостояниеРаботников.СостояниеЗавершения
ИЗ
   ВТСостояниеРаботниковСрез КАК СостояниеРаботников
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостояниеРаботниковОрганизаций КАК СостояниеРаботниковПроверка
       ПО (СостояниеРаботниковПроверка.Сотрудник = СостояниеРаботников.Сотрудник)
           И (СостояниеРаботниковПроверка.Период <= СостояниеРаботников.ПериодЗавершения)
           И (СостояниеРаботниковПроверка.Период > СостояниеРаботников.Период)
ГДЕ
   СостояниеРаботников.ПериодЗавершения >= &НачалоПериода
   И СостояниеРаботников.ПериодЗавершения <= &КонецПериода
   И СостояниеРаботниковПроверка.Сотрудник ЕСТЬ NULL

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
   СостояниеРаботников.Сотрудник,
   СостояниеРаботников.Период,
   СостояниеРаботников.Состояние
ИЗ
   РегистрСведений.СостояниеРаботниковОрганизаций КАК СостояниеРаботников
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТСотрудники КАК ВТСотрудники
       ПО СостояниеРаботников.Сотрудник = ВТСотрудники.Сотрудник
ГДЕ
   СостояниеРаботников.Период > &НачалоПериода
   И СостояниеРаботников.Период <= &КонецПериода

ОБЪЕДИНИТЬ ВСЕ

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

ОБЪЕДИНИТЬ ВСЕ

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

ИНДЕКСИРОВАТЬ ПО
   Сотрудник,
   Период
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   Основной.Сотрудник КАК Сотрудник,
   ВЫБОР
       КОГДА Основной.Состояние В (ЗНАЧЕНИЕ(Перечисление.СостоянияРаботникаОрганизации.Заболевание), ЗНАЧЕНИЕ(Перечисление.СостоянияРаботникаОрганизации.ТравмаНаПроизводстве), ЗНАЧЕНИЕ(Перечисление.СостоянияРаботникаОрганизации.ПоУходуЗаРебенком), ЗНАЧЕНИЕ(Перечисление.СостоянияРаботникаОрганизации.ПоУходуЗаВзрослым), ЗНАЧЕНИЕ(Перечисление.СостоянияРаботникаОрганизации.Карантин), ЗНАЧЕНИЕ(Перечисление.СостоянияРаботникаОрганизации.Протезирование), ЗНАЧЕНИЕ(Перечисление.СостоянияРаботникаОрганизации.ПособиеПриДолечивании))
           ТОГДА ЗНАЧЕНИЕ(Справочник.КлассификаторИспользованияРабочегоВремени.Болезнь)
       КОГДА Основной.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияРаботникаОрганизации.Командировка)
           ТОГДА ЗНАЧЕНИЕ(Справочник.КлассификаторИспользованияРабочегоВремени.Командировка)
       КОГДА Основной.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияРаботникаОрганизации.ОтпускЕжегодный)
           ТОГДА ЗНАЧЕНИЕ(Справочник.КлассификаторИспользованияРабочегоВремени.ОсновнойОтпуск)
       КОГДА Основной.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияРаботникаОрганизации.ОтпускУчебный)
           ТОГДА ЗНАЧЕНИЕ(Справочник.КлассификаторИспользованияРабочегоВремени.ОтпускНаОбучение)
       КОГДА Основной.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияРаботникаОрганизации.ОтпускУчебныйНеоплачиваемый)
           ТОГДА ЗНАЧЕНИЕ(Справочник.КлассификаторИспользованияРабочегоВремени.ОтпускНаОбучениеНеоплачиваемый)
       КОГДА Основной.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияРаботникаОрганизации.ОтпускБезСохраненияЗарплаты)
           ТОГДА ЗНАЧЕНИЕ(Справочник.КлассификаторИспользованияРабочегоВремени.НеоплачиваемыйОтпускПоРазрешениюРаботодателя)
       КОГДА Основной.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияРаботникаОрганизации.ОтпускПоБеременностиИРодам)
           ТОГДА ЗНАЧЕНИЕ(Справочник.КлассификаторИспользованияРабочегоВреме
5 wPa
 
16.03.12
11:57
см. РС плановые начисления, графики работы
6 Grusswelle
 
16.03.12
12:01
(5) ога
Основная теорема систематики: Новые системы плодят новые проблемы.