|
Обработка 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
|
Дык в автозаполнении весь запрос грузиться в тч неявки, и там есть и расчетный и кадровый доки, вот и анализируй их как хочешь.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |