Имя: Пароль:
1C
 
Обработка 1С. Анализ неявок.
0 Skif_asu
 
16.03.15
09:15
Необходимо создать обработку, весь процесс которой основывается на обработке "Анализ неявок". Необходимо проанализировать даты начала и конца отпуска на расчетном и кадровом документе, и если кадровик как-то изменил даты, обработка - скажет. В данной обработке две формы, , во второй форме, поля - кадровый и расчетный документ берутся из первой по ссылке. Через консоль пытался анализировать данные, но так как запрос строится на временных таблицах - запрос не выполняется. Где, вот здесь берутся данные.

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

Иначе зови специалиста
2 Skif_asu
 
16.03.15
09:22
Это понятно и так. Просто мало ли. Кто-то может быть встречался с этим. Чтобы разобраться с этим запросом, нужно книгу прочитать, ибо несилен. Джуниором только стал работать.
3 Serg_1960
 
16.03.15
09:28
(16) "Необходимо создать обработку, весь процесс которой основывается на обработке "Анализ неявок" - ну и добавь в на форму этой обработки кнопку типа "Проверить". Пусть она проверяет уже выбранные данные в таблице формы.
4 Serg_1960
 
16.03.15
09:29
Упс. Вместо (16) естественно (0) - обращение к ТС.
5 Serg_1960
 
16.03.15
09:31
(офф) оговорка по Фрейду "В НА форму" - меньше на ветке про Украину надо сидеть :))
6 Skif_asu
 
16.03.15
10:15
Тащем-то, ничего путного не узнал. Все очевидно. Как именно извлечь эти данные. Из какой строки, запроса.
7 ИУБиПовиц
 
16.03.15
10:49
Дык в автозаполнении весь запрос грузиться в тч неявки, и там есть и расчетный и кадровый доки, вот и анализируй их как хочешь.