Перенос общих функций в серверный модуль
Подготовка к переносу работы с табелем в сервис
This commit is contained in:
@@ -0,0 +1,561 @@
|
||||
// Серверные функции для работы с табелем учёта рабочего времени.
|
||||
// Перенесены из модуля формы обработки ПС_ЗагрузкаТабеляУчётаРабочегоВремениИзEXCEL.
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
// Поиск элементов справочника ВидыИспользованияРабочегоВремени по наименованию.
|
||||
// Используется как замена прямого обращения к реквизитам формы обработки.
|
||||
// Имена элементов зафиксированы в проекте и не подлежат изменению.
|
||||
|
||||
Функция ВидВремениЯвкаСГЗ()
|
||||
Возврат Справочники.ВидыИспользованияРабочегоВремени.НайтиПоНаименованию("Явка (СГЗ)", Истина);
|
||||
КонецФункции
|
||||
|
||||
Функция ВидВремениЯвкаПД()
|
||||
Возврат Справочники.ВидыИспользованияРабочегоВремени.НайтиПоНаименованию("Явка (ПД)", Истина);
|
||||
КонецФункции
|
||||
|
||||
Функция ВидВремениЯвкаОМС()
|
||||
Возврат Справочники.ВидыИспользованияРабочегоВремени.НайтиПоНаименованию("Явка (ОМС)", Истина);
|
||||
КонецФункции
|
||||
|
||||
Функция ВидВремениПраздникиСГЗ()
|
||||
Возврат Справочники.ВидыИспользованияРабочегоВремени.НайтиПоНаименованию("Праздники (СГЗ)", Истина);
|
||||
КонецФункции
|
||||
|
||||
Функция ВидВремениПраздникиПД()
|
||||
Возврат Справочники.ВидыИспользованияРабочегоВремени.НайтиПоНаименованию("Праздники (ПД)", Истина);
|
||||
КонецФункции
|
||||
|
||||
Функция ВидВремениПраздникиОМС()
|
||||
Возврат Справочники.ВидыИспользованияРабочегоВремени.НайтиПоНаименованию("Праздники (ОМС)", Истина);
|
||||
КонецФункции
|
||||
|
||||
Функция ВидВремениПраздникиБезПовышеннойОплатыСГЗ()
|
||||
Возврат Справочники.ВидыИспользованияРабочегоВремени.НайтиПоНаименованию("Праздники без повышенной оплаты (СГЗ)", Истина);
|
||||
КонецФункции
|
||||
|
||||
Функция ВидВремениПраздникиБезПовышеннойОплатыПД()
|
||||
Возврат Справочники.ВидыИспользованияРабочегоВремени.НайтиПоНаименованию("Праздники без повышенной оплаты (ПД)", Истина);
|
||||
КонецФункции
|
||||
|
||||
Функция ВидВремениПраздникиБезПовышеннойОплатыОМС()
|
||||
Возврат Справочники.ВидыИспользованияРабочегоВремени.НайтиПоНаименованию("Праздники без повышенной оплаты (ОМС)", Истина);
|
||||
КонецФункции
|
||||
|
||||
Функция ВидВремениРаботаНочныеЧасыСГЗ()
|
||||
Возврат Справочники.ВидыИспользованияРабочегоВремени.НайтиПоНаименованию("Работа ночные часы (СГЗ)", Истина);
|
||||
КонецФункции
|
||||
|
||||
Функция ВидВремениРаботаНочныеЧасыПД()
|
||||
Возврат Справочники.ВидыИспользованияРабочегоВремени.НайтиПоНаименованию("Работа ночные часы (ПД)", Истина);
|
||||
КонецФункции
|
||||
|
||||
Функция ВидВремениРаботаНочныеЧасыОМС()
|
||||
Возврат Справочники.ВидыИспользованияРабочегоВремени.НайтиПоНаименованию("Работа ночные часы (ОМС)", Истина);
|
||||
КонецФункции
|
||||
|
||||
Функция ВидВремениСверхурочныеСГЗ()
|
||||
Возврат Справочники.ВидыИспользованияРабочегоВремени.НайтиПоНаименованию("Сверхурочные (СГЗ)", Истина);
|
||||
КонецФункции
|
||||
|
||||
Функция ВидВремениСверхурочныеПД()
|
||||
Возврат Справочники.ВидыИспользованияРабочегоВремени.НайтиПоНаименованию("Сверхурочные (ПД)", Истина);
|
||||
КонецФункции
|
||||
|
||||
Функция ВидВремениСверхурочныеОМС()
|
||||
Возврат Справочники.ВидыИспользованияРабочегоВремени.НайтиПоНаименованию("Сверхурочные (ОМС)", Истина);
|
||||
КонецФункции
|
||||
|
||||
Функция ВидВремениСверхурочныеБезПовышеннойОплатыСГЗ()
|
||||
Возврат Справочники.ВидыИспользованияРабочегоВремени.НайтиПоНаименованию("Сверхурочные без повышенной оплаты (СГЗ)", Истина);
|
||||
КонецФункции
|
||||
|
||||
Функция ВидВремениСверхурочныеБезПовышеннойОплатыПД()
|
||||
Возврат Справочники.ВидыИспользованияРабочегоВремени.НайтиПоНаименованию("Сверхурочные без повышенной оплаты (ПД)", Истина);
|
||||
КонецФункции
|
||||
|
||||
Функция ВидВремениСверхурочныеБезПовышеннойОплатыОМС()
|
||||
Возврат Справочники.ВидыИспользованияРабочегоВремени.НайтиПоНаименованию("Сверхурочные без повышенной оплаты (ОМС)", Истина);
|
||||
КонецФункции
|
||||
|
||||
// Статьи финансирования — ищем предопределённые элементы.
|
||||
Функция СтатьяФинансированияСГЗ()
|
||||
Возврат Справочники.СтатьиФинансированияЗарплата.НайтиПоНаименованию("СГЗ", Истина);
|
||||
КонецФункции
|
||||
|
||||
Функция СтатьяФинансированияПД()
|
||||
Возврат Справочники.СтатьиФинансированияЗарплата.НайтиПоНаименованию("ПД", Истина);
|
||||
КонецФункции
|
||||
|
||||
Функция СтатьяФинансированияОМС()
|
||||
Возврат Справочники.СтатьиФинансированияЗарплата.НайтиПоНаименованию("ОМС", Истина);
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область ПолучениеВидовВремени
|
||||
|
||||
// Возвращает элемент справочника ВидыИспользованияРабочегоВремени для вида «Явка»
|
||||
// по текущей статье финансирования (СГЗ / ПД / ОМС).
|
||||
//
|
||||
// Параметры:
|
||||
// СтатьяФинансирования - CatalogRef.СтатьиФинансированияЗарплата
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// CatalogRef.ВидыИспользованияРабочегоВремени
|
||||
//
|
||||
Функция ВидВремениЯвка(СтатьяФинансирования) Экспорт
|
||||
Если СтатьяФинансирования = СтатьяФинансированияСГЗ() Тогда
|
||||
Возврат ВидВремениЯвкаСГЗ();
|
||||
ИначеЕсли СтатьяФинансирования = СтатьяФинансированияПД() Тогда
|
||||
Возврат ВидВремениЯвкаПД();
|
||||
ИначеЕсли СтатьяФинансирования = СтатьяФинансированияОМС() Тогда
|
||||
Возврат ВидВремениЯвкаОМС();
|
||||
КонецЕсли;
|
||||
КонецФункции
|
||||
|
||||
// Возвращает элемент справочника для вида «Болезнь».
|
||||
Функция ВидВремениБолезнь() Экспорт
|
||||
Возврат Справочники.ВидыИспользованияРабочегоВремени.Болезнь;
|
||||
КонецФункции
|
||||
|
||||
Функция ВидВремениВыходныеДни() Экспорт
|
||||
Возврат Справочники.ВидыИспользованияРабочегоВремени.ВыходныеДни;
|
||||
КонецФункции
|
||||
|
||||
Функция ВидВремениДополнительныйОтпуск() Экспорт
|
||||
Возврат Справочники.ВидыИспользованияРабочегоВремени.ДополнительныйОтпуск;
|
||||
КонецФункции
|
||||
|
||||
Функция ВидВремениКомандировка() Экспорт
|
||||
Возврат Справочники.ВидыИспользованияРабочегоВремени.Командировка;
|
||||
КонецФункции
|
||||
|
||||
Функция ВидВремениКормлениеРебенка() Экспорт
|
||||
Возврат Справочники.ВидыИспользованияРабочегоВремени.КормлениеРебенка;
|
||||
КонецФункции
|
||||
|
||||
Функция ВидВремениНеявкиПоНевыясненнымПричинам() Экспорт
|
||||
Возврат Справочники.ВидыИспользованияРабочегоВремени.НеявкиПоНевыясненнымПричинам;
|
||||
КонецФункции
|
||||
|
||||
Функция ВидВремениНеоплачиваемыйОтпускПоРазрешениюРаботодателя() Экспорт
|
||||
Возврат Справочники.ВидыИспользованияРабочегоВремени.НеоплачиваемыйОтпускПоРазрешениюРаботодателя;
|
||||
КонецФункции
|
||||
|
||||
Функция ВидВремениОтстранениеОтРаботыБезОплаты() Экспорт
|
||||
Возврат Справочники.ВидыИспользованияРабочегоВремени.ОтстранениеОтРаботыБезОплаты;
|
||||
КонецФункции
|
||||
|
||||
Функция ВидВремениОтстранениеОтРаботыСОплатой() Экспорт
|
||||
Возврат Справочники.ВидыИспользованияРабочегоВремени.ОтстранениеОтРаботыСОплатой;
|
||||
КонецФункции
|
||||
|
||||
Функция ВидВремениОплачиваемыеНерабочиеДни() Экспорт
|
||||
Возврат Справочники.ВидыИспользованияРабочегоВремени.ОплачиваемыеНерабочиеДни;
|
||||
КонецФункции
|
||||
|
||||
Функция ВидВремениОсновнойОтпуск() Экспорт
|
||||
Возврат Справочники.ВидыИспользованияРабочегоВремени.ОсновнойОтпуск;
|
||||
КонецФункции
|
||||
|
||||
Функция ВидВремениОтпускНаОбучение() Экспорт
|
||||
Возврат Справочники.ВидыИспользованияРабочегоВремени.ОтпускНаОбучение;
|
||||
КонецФункции
|
||||
|
||||
Функция ВидВремениОтпускПоБеременностиИРодам() Экспорт
|
||||
Возврат Справочники.ВидыИспользованияРабочегоВремени.ОтпускПоБеременностиИРодам;
|
||||
КонецФункции
|
||||
|
||||
Функция ВидВремениОтпускПоУходуЗаРебенком() Экспорт
|
||||
Возврат Справочники.ВидыИспользованияРабочегоВремени.ОтпускПоУходуЗаРебенком;
|
||||
КонецФункции
|
||||
|
||||
// В исходном коде модуля формы эта функция возвращает ОтпускПоУходуЗаРебенком —
|
||||
// копируем как есть (так зафиксировано в проекте).
|
||||
Функция ВидВремениДополнительныеВыходныеДниОплачиваемые() Экспорт
|
||||
Возврат Справочники.ВидыИспользованияРабочегоВремени.ОтпускПоУходуЗаРебенком;
|
||||
КонецФункции
|
||||
|
||||
Функция ВидВремениПовышениеКвалификации() Экспорт
|
||||
Возврат Справочники.ВидыИспользованияРабочегоВремени.ПовышениеКвалификации;
|
||||
КонецФункции
|
||||
|
||||
Функция ВидВремениПраздники(СтатьяФинансирования) Экспорт
|
||||
Если СтатьяФинансирования = СтатьяФинансированияСГЗ() Тогда
|
||||
Возврат ВидВремениПраздникиСГЗ();
|
||||
ИначеЕсли СтатьяФинансирования = СтатьяФинансированияПД() Тогда
|
||||
Возврат ВидВремениПраздникиПД();
|
||||
ИначеЕсли СтатьяФинансирования = СтатьяФинансированияОМС() Тогда
|
||||
Возврат ВидВремениПраздникиОМС();
|
||||
КонецЕсли;
|
||||
КонецФункции
|
||||
|
||||
Функция ВидВремениПраздникиБезПовышеннойОплаты(СтатьяФинансирования) Экспорт
|
||||
Если СтатьяФинансирования = СтатьяФинансированияСГЗ() Тогда
|
||||
Возврат ВидВремениПраздникиБезПовышеннойОплатыСГЗ();
|
||||
ИначеЕсли СтатьяФинансирования = СтатьяФинансированияПД() Тогда
|
||||
Возврат ВидВремениПраздникиБезПовышеннойОплатыПД();
|
||||
ИначеЕсли СтатьяФинансирования = СтатьяФинансированияОМС() Тогда
|
||||
Возврат ВидВремениПраздникиБезПовышеннойОплатыОМС();
|
||||
КонецЕсли;
|
||||
КонецФункции
|
||||
|
||||
Функция ВидВремениПрогулы() Экспорт
|
||||
Возврат Справочники.ВидыИспользованияРабочегоВремени.Прогулы;
|
||||
КонецФункции
|
||||
|
||||
Функция ВидВремениРаботаНочныеЧасы(СтатьяФинансирования) Экспорт
|
||||
Если СтатьяФинансирования = СтатьяФинансированияСГЗ() Тогда
|
||||
Возврат ВидВремениРаботаНочныеЧасыСГЗ();
|
||||
ИначеЕсли СтатьяФинансирования = СтатьяФинансированияПД() Тогда
|
||||
Возврат ВидВремениРаботаНочныеЧасыПД();
|
||||
ИначеЕсли СтатьяФинансирования = СтатьяФинансированияОМС() Тогда
|
||||
Возврат ВидВремениРаботаНочныеЧасыОМС();
|
||||
КонецЕсли;
|
||||
КонецФункции
|
||||
|
||||
Функция ВидВремениСверхурочные(СтатьяФинансирования) Экспорт
|
||||
Если СтатьяФинансирования = СтатьяФинансированияСГЗ() Тогда
|
||||
Возврат ВидВремениСверхурочныеСГЗ();
|
||||
ИначеЕсли СтатьяФинансирования = СтатьяФинансированияПД() Тогда
|
||||
Возврат ВидВремениСверхурочныеПД();
|
||||
ИначеЕсли СтатьяФинансирования = СтатьяФинансированияОМС() Тогда
|
||||
Возврат ВидВремениСверхурочныеОМС();
|
||||
КонецЕсли;
|
||||
КонецФункции
|
||||
|
||||
Функция ВидВремениСверхурочныеБезПовышеннойОплаты(СтатьяФинансирования) Экспорт
|
||||
Если СтатьяФинансирования = СтатьяФинансированияСГЗ() Тогда
|
||||
Возврат ВидВремениСверхурочныеБезПовышеннойОплатыСГЗ();
|
||||
ИначеЕсли СтатьяФинансирования = СтатьяФинансированияПД() Тогда
|
||||
Возврат ВидВремениСверхурочныеБезПовышеннойОплатыПД();
|
||||
ИначеЕсли СтатьяФинансирования = СтатьяФинансированияОМС() Тогда
|
||||
Возврат ВидВремениСверхурочныеБезПовышеннойОплатыОМС();
|
||||
КонецЕсли;
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область КлассификацияВидовВремени
|
||||
|
||||
// Возвращает код финансирования ("СГЗ"/"ПД"/"ОМС") для указанного вида времени.
|
||||
// Для неденежных видов (болезнь, отпуск и т.п.) возвращает Неопределено.
|
||||
Функция ФинансированиеПоВидуВремени(ВидВремени) Экспорт
|
||||
Если ВидВремени = ВидВремениЯвкаСГЗ()
|
||||
ИЛИ ВидВремени = ВидВремениРаботаНочныеЧасыСГЗ()
|
||||
ИЛИ ВидВремени = ВидВремениПраздникиСГЗ()
|
||||
ИЛИ ВидВремени = ВидВремениПраздникиБезПовышеннойОплатыСГЗ()
|
||||
ИЛИ ВидВремени = ВидВремениСверхурочныеСГЗ()
|
||||
ИЛИ ВидВремени = ВидВремениСверхурочныеБезПовышеннойОплатыСГЗ() Тогда
|
||||
Возврат "СГЗ";
|
||||
ИначеЕсли ВидВремени = ВидВремениЯвкаПД()
|
||||
ИЛИ ВидВремени = ВидВремениРаботаНочныеЧасыПД()
|
||||
ИЛИ ВидВремени = ВидВремениПраздникиПД()
|
||||
ИЛИ ВидВремени = ВидВремениПраздникиБезПовышеннойОплатыПД()
|
||||
ИЛИ ВидВремени = ВидВремениСверхурочныеПД()
|
||||
ИЛИ ВидВремени = ВидВремениСверхурочныеБезПовышеннойОплатыПД() Тогда
|
||||
Возврат "ПД";
|
||||
ИначеЕсли ВидВремени = ВидВремениЯвкаОМС()
|
||||
ИЛИ ВидВремени = ВидВремениРаботаНочныеЧасыОМС()
|
||||
ИЛИ ВидВремени = ВидВремениПраздникиОМС()
|
||||
ИЛИ ВидВремени = ВидВремениПраздникиБезПовышеннойОплатыОМС()
|
||||
ИЛИ ВидВремени = ВидВремениСверхурочныеОМС()
|
||||
ИЛИ ВидВремени = ВидВремениСверхурочныеБезПовышеннойОплатыОМС() Тогда
|
||||
Возврат "ОМС";
|
||||
Иначе
|
||||
Возврат Неопределено;
|
||||
КонецЕсли;
|
||||
КонецФункции
|
||||
|
||||
Функция ВидВремениЯвкаПринадлежитФинансированию(ВидВремени) Экспорт
|
||||
Возврат ВидВремени = ВидВремениЯвкаСГЗ()
|
||||
ИЛИ ВидВремени = ВидВремениЯвкаПД()
|
||||
ИЛИ ВидВремени = ВидВремениЯвкаОМС();
|
||||
КонецФункции
|
||||
|
||||
Функция ВидВремениПраздникиПринадлежит(ВидВремени) Экспорт
|
||||
Возврат ВидВремени = ВидВремениПраздникиСГЗ()
|
||||
ИЛИ ВидВремени = ВидВремениПраздникиПД()
|
||||
ИЛИ ВидВремени = ВидВремениПраздникиОМС()
|
||||
ИЛИ ВидВремени = ВидВремениПраздникиБезПовышеннойОплатыСГЗ()
|
||||
ИЛИ ВидВремени = ВидВремениПраздникиБезПовышеннойОплатыПД()
|
||||
ИЛИ ВидВремени = ВидВремениПраздникиБезПовышеннойОплатыОМС();
|
||||
КонецФункции
|
||||
|
||||
Функция ВидВремениНочныеПринадлежит(ВидВремени) Экспорт
|
||||
Возврат ВидВремени = ВидВремениРаботаНочныеЧасыСГЗ()
|
||||
ИЛИ ВидВремени = ВидВремениРаботаНочныеЧасыПД()
|
||||
ИЛИ ВидВремени = ВидВремениРаботаНочныеЧасыОМС();
|
||||
КонецФункции
|
||||
|
||||
Функция ВидВремениСверхурочныеПринадлежит(ВидВремени) Экспорт
|
||||
Возврат ВидВремени = ВидВремениСверхурочныеСГЗ()
|
||||
ИЛИ ВидВремени = ВидВремениСверхурочныеПД()
|
||||
ИЛИ ВидВремени = ВидВремениСверхурочныеОМС()
|
||||
ИЛИ ВидВремени = ВидВремениСверхурочныеБезПовышеннойОплатыСГЗ()
|
||||
ИЛИ ВидВремени = ВидВремениСверхурочныеБезПовышеннойОплатыПД()
|
||||
ИЛИ ВидВремени = ВидВремениСверхурочныеБезПовышеннойОплатыОМС()
|
||||
ИЛИ ВидВремени = ВидВремениКормлениеРебенка()
|
||||
ИЛИ ВидВремени = ВидВремениПовышениеКвалификации();
|
||||
КонецФункции
|
||||
|
||||
// Возвращает буквенное обозначение вида времени (для UI/Excel-формата).
|
||||
Функция БукваПоВидуВремени(ВидВремени) Экспорт
|
||||
Если ВидВремени = ВидВремениБолезнь() Тогда
|
||||
Возврат "Б";
|
||||
ИначеЕсли ВидВремени = ВидВремениВыходныеДни() Тогда
|
||||
Возврат "В";
|
||||
ИначеЕсли ВидВремени = ВидВремениОсновнойОтпуск() Тогда
|
||||
Возврат "О";
|
||||
ИначеЕсли ВидВремени = ВидВремениДополнительныйОтпуск() Тогда
|
||||
Возврат "ОД";
|
||||
ИначеЕсли ВидВремени = ВидВремениКомандировка() Тогда
|
||||
Возврат "К";
|
||||
ИначеЕсли ВидВремени = ВидВремениПрогулы() Тогда
|
||||
Возврат "П";
|
||||
ИначеЕсли ВидВремени = ВидВремениНеявкиПоНевыясненнымПричинам() Тогда
|
||||
Возврат "НН";
|
||||
ИначеЕсли ВидВремени = ВидВремениОтпускНаОбучение() Тогда
|
||||
Возврат "ОУ";
|
||||
ИначеЕсли ВидВремени = ВидВремениОтпускПоБеременностиИРодам() Тогда
|
||||
Возврат "Р";
|
||||
ИначеЕсли ВидВремени = ВидВремениОтпускПоУходуЗаРебенком() Тогда
|
||||
Возврат "ОР";
|
||||
ИначеЕсли ВидВремени = ВидВремениНеоплачиваемыйОтпускПоРазрешениюРаботодателя() Тогда
|
||||
Возврат "ОЗ";
|
||||
ИначеЕсли ВидВремени = ВидВремениОтстранениеОтРаботыБезОплаты() Тогда
|
||||
Возврат "НБ";
|
||||
ИначеЕсли ВидВремени = ВидВремениОтстранениеОтРаботыСОплатой() Тогда
|
||||
Возврат "НО";
|
||||
Иначе
|
||||
Возврат "";
|
||||
КонецЕсли;
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область ОбратноеПреобразование
|
||||
|
||||
// Классифицирует записи дня для обратной загрузки из табеля в ТЧ формы.
|
||||
//
|
||||
// Параметры:
|
||||
// ЗаписиДня - Массив из Структура (ключи "ВидВремени", "Часы")
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура с ключами "Основная", "Ночные", "Сверхурочные".
|
||||
// Каждое значение — Структура("Часы, Буква, ВидВремени") или Неопределено.
|
||||
//
|
||||
Функция КлассифицироватьДень(ЗаписиДня) Экспорт
|
||||
Результат = Новый Структура("Основная, Ночные, Сверхурочные", Неопределено, Неопределено, Неопределено);
|
||||
|
||||
ЧасыПраздничных = 0;
|
||||
ЧасыЯвки = 0;
|
||||
ЧасыНочных = 0;
|
||||
ЧасыСверхурочных = 0;
|
||||
ВидВремениПраздничных = Неопределено;
|
||||
ВидВремениЯвки = Неопределено;
|
||||
ВидВремениНочных = Неопределено;
|
||||
ВидВремениСверхурочных = Неопределено;
|
||||
ПервыйНеденежный = Неопределено;
|
||||
|
||||
Для Каждого Запись Из ЗаписиДня Цикл
|
||||
ВидВремени = Запись.ВидВремени;
|
||||
Часы = Запись.Часы;
|
||||
|
||||
Если ВидВремениЯвкаПринадлежитФинансированию(ВидВремени) Тогда
|
||||
ЧасыЯвки = ЧасыЯвки + Часы;
|
||||
Если ВидВремениЯвки = Неопределено Тогда
|
||||
ВидВремениЯвки = ВидВремени;
|
||||
КонецЕсли;
|
||||
ИначеЕсли ВидВремениПраздникиПринадлежит(ВидВремени) Тогда
|
||||
ЧасыПраздничных = ЧасыПраздничных + Часы;
|
||||
Если ВидВремениПраздничных = Неопределено Тогда
|
||||
ВидВремениПраздничных = ВидВремени;
|
||||
КонецЕсли;
|
||||
ИначеЕсли ВидВремениНочныеПринадлежит(ВидВремени) Тогда
|
||||
ЧасыНочных = ЧасыНочных + Часы;
|
||||
Если ВидВремениНочных = Неопределено Тогда
|
||||
ВидВремениНочных = ВидВремени;
|
||||
КонецЕсли;
|
||||
ИначеЕсли ВидВремениСверхурочныеПринадлежит(ВидВремени) Тогда
|
||||
ЧасыСверхурочных = ЧасыСверхурочных + Часы;
|
||||
Если ВидВремениСверхурочных = Неопределено Тогда
|
||||
ВидВремениСверхурочных = ВидВремени;
|
||||
КонецЕсли;
|
||||
ИначеЕсли ПервыйНеденежный = Неопределено Тогда
|
||||
ПервыйНеденежный = Новый Структура("Часы, Буква, ВидВремени", Часы, БукваПоВидуВремени(ВидВремени), ВидВремени);
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
Если ЧасыПраздничных > 0 Тогда
|
||||
Результат.Основная = Новый Структура("Часы, Буква, ВидВремени", ЧасыПраздничных, "РП", ВидВремениПраздничных);
|
||||
ИначеЕсли ЧасыЯвки > 0 Тогда
|
||||
Результат.Основная = Новый Структура("Часы, Буква, ВидВремени", ЧасыЯвки, "Ф", ВидВремениЯвки);
|
||||
ИначеЕсли ПервыйНеденежный <> Неопределено Тогда
|
||||
Результат.Основная = ПервыйНеденежный;
|
||||
КонецЕсли;
|
||||
|
||||
Если ЧасыНочных > 0 Тогда
|
||||
Результат.Ночные = Новый Структура("Часы, Буква, ВидВремени", ЧасыНочных, "Н", ВидВремениНочных);
|
||||
КонецЕсли;
|
||||
|
||||
Если ЧасыСверхурочных > 0 Тогда
|
||||
Результат.Сверхурочные = Новый Структура("Часы, Буква, ВидВремени", ЧасыСверхурочных, "С", ВидВремениСверхурочных);
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Результат;
|
||||
КонецФункции
|
||||
|
||||
// Возвращает Истина, если во всех 31 колонках ЧасовN строки значение <= 0.
|
||||
Функция СтрокаПустаяПоЧасам(СтрокаТЧ) Экспорт
|
||||
Для НомерДня = 1 По 31 Цикл
|
||||
Если СтрокаТЧ["Часов" + НомерДня] > 0 Тогда
|
||||
Возврат Ложь;
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
Возврат Истина;
|
||||
КонецФункции
|
||||
|
||||
// Группирует часы по буквенным кодам и формирует строку вида "Я 7, Б 10".
|
||||
Функция РассчитатьВремяИтог(СтрокаТЧ) Экспорт
|
||||
ГруппировкаЧасов = Новый Соответствие;
|
||||
Для НомерДня = 1 По 31 Цикл
|
||||
Часы = СтрокаТЧ["Часов" + НомерДня];
|
||||
Если Часы = 0 Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
Буква = СтрокаТЧ["Время" + НомерДня + "Буква"];
|
||||
Если Буква = "" Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
ТекущаяСумма = ГруппировкаЧасов[Буква];
|
||||
Если ТекущаяСумма = Неопределено Тогда
|
||||
ТекущаяСумма = 0;
|
||||
КонецЕсли;
|
||||
ГруппировкаЧасов.Вставить(Буква, ТекущаяСумма + Часы);
|
||||
КонецЦикла;
|
||||
|
||||
Результат = "";
|
||||
Для Каждого КЗ Из ГруппировкаЧасов Цикл
|
||||
Если Результат <> "" Тогда
|
||||
Результат = Результат + ", ";
|
||||
КонецЕсли;
|
||||
Результат = Результат + КЗ.Ключ + " " + Формат(КЗ.Значение, "ЧРД=.; ЧГ=");
|
||||
КонецЦикла;
|
||||
Возврат Результат;
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область Валидация
|
||||
|
||||
// Проверяет, есть ли в записях дня другие виды времени, отличные от указанного.
|
||||
Функция ЕстьНесовместимыеВидыВремени(Сотрудник, НомерДня, ТаблицаДня, ВидВремени) Экспорт
|
||||
НесовместимыеВидыВремениНайдены = Ложь;
|
||||
СписокНесовместимыхВидовВремени = "";
|
||||
Для каждого СтрокаТаблицыДня Из ТаблицаДня Цикл
|
||||
Если СтрокаТаблицыДня.ВидВремени <> ВидВремени Тогда
|
||||
Если СписокНесовместимыхВидовВремени = "" Тогда
|
||||
СписокНесовместимыхВидовВремени = Строка(СтрокаТаблицыДня.ВидВремени);
|
||||
Иначе
|
||||
СписокНесовместимыхВидовВремени = СписокНесовместимыхВидовВремени + ", " + Строка(СтрокаТаблицыДня.ВидВремени);
|
||||
КонецЕсли;
|
||||
НесовместимыеВидыВремениНайдены = Истина;
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
Возврат НесовместимыеВидыВремениНайдены;
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область ПоискСотрудников
|
||||
|
||||
// Возвращает табельный номер (поле Код) для указанного сотрудника.
|
||||
Функция ТабельныйНомерСотрудникаБД(Сотрудник) Экспорт
|
||||
Возврат Сотрудник.Код;
|
||||
КонецФункции
|
||||
|
||||
// Получает последнюю кадровую историю сотрудника.
|
||||
Функция КадровыеДанные(Сотрудник, ДатаПолученияКадровыхДанных) Экспорт
|
||||
СтруктураПоискаКадровыхДанных = Новый Структура("Сотрудник", Сотрудник);
|
||||
Возврат РегистрыСведений.КадроваяИсторияСотрудников.ПолучитьПоследнее(ДатаПолученияКадровыхДанных, СтруктураПоискаКадровыхДанных);
|
||||
КонецФункции
|
||||
|
||||
// Возвращает пустую структуру данных сотрудника (используется как фабрика).
|
||||
Функция СтруктураДанныхСотрудника() Экспорт
|
||||
Возврат Новый Структура("Сотрудник,Должность,НаименованиеДолжностиДляТабеля,ДолжностьПоШтатномуРасписанию,Подразделение,ВидЗанятости,КоличествоСтавок," +
|
||||
"ПредставлениеСотрудника,ПредставлениеДолжности,ПредставлениеПодразделения,Обработан",
|
||||
Справочники.Сотрудники.ПустаяСсылка(),
|
||||
Справочники.Должности.ПустаяСсылка(), "",
|
||||
Справочники.ШтатноеРасписание.ПустаяСсылка(),
|
||||
Справочники.ПодразделенияОрганизаций.ПустаяСсылка(),
|
||||
"",
|
||||
0,
|
||||
"", "", "",
|
||||
Ложь);
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область ФильтрацияСотрудников
|
||||
|
||||
// Проверяет, есть ли сотрудник в списке совместителей (по физическому лицу).
|
||||
Функция СотрудникВСпискеСовместителей(Сотрудник, СписокСовместителей) Экспорт
|
||||
Результат = Ложь;
|
||||
Попытка
|
||||
Если СписокСовместителей.Количество() > 0 Тогда
|
||||
Если Сотрудник.ФизическоеЛицо = СписокСовместителей[0].Сотрудник.ФизическоеЛицо Тогда
|
||||
Результат = Истина;
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
Исключение
|
||||
КонецПопытки;
|
||||
Возврат Результат;
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область ПоискТабеля
|
||||
|
||||
// Ищет ссылку на сохранённый табель по ключевым реквизитам через РС ПС_ЗагруженныеТабеля.
|
||||
// Возвращает последнюю по дате загрузки редакцию.
|
||||
Функция НайтиСсылкуНаТабель(Организация, Подразделение, НаименованиеПодразделения, ПериодРегистрации) Экспорт
|
||||
Если НЕ ЗначениеЗаполнено(Организация)
|
||||
ИЛИ НЕ ЗначениеЗаполнено(Подразделение)
|
||||
ИЛИ ПустаяСтрока(НаименованиеПодразделения)
|
||||
ИЛИ НЕ ЗначениеЗаполнено(ПериодРегистрации) Тогда
|
||||
Возврат Документы.ТабельУчетаРабочегоВремени.ПустаяСсылка();
|
||||
КонецЕсли;
|
||||
|
||||
Запрос = Новый Запрос;
|
||||
Запрос.Текст =
|
||||
"ВЫБРАТЬ
|
||||
| ПС_ЗагруженныеТабеляСрезПоследних.ТабельУчетаРабочегоВремени КАК ТабельУчетаРабочегоВремени
|
||||
|ИЗ
|
||||
| РегистрСведений.ПС_ЗагруженныеТабеля.СрезПоследних(
|
||||
| &ПериодРегистрации,
|
||||
| Организация = &Организация
|
||||
| И НаименованиеПодразделенияПоТабелю = &НаименованиеПодразделения
|
||||
| И ПериодВводаДанныхОВремени = &ПериодВводаДанныхОВремени
|
||||
| И СтруктурноеПодразделение = &СтруктурноеПодразделение) КАК ПС_ЗагруженныеТабеляСрезПоследних
|
||||
|УПОРЯДОЧИТЬ ПО
|
||||
| ПС_ЗагруженныеТабеляСрезПоследних.ДатаЗагрузки УБЫВ";
|
||||
Запрос.УстановитьПараметр("Организация", Организация);
|
||||
Запрос.УстановитьПараметр("СтруктурноеПодразделение", Подразделение);
|
||||
Запрос.УстановитьПараметр("НаименованиеПодразделения", НаименованиеПодразделения);
|
||||
Запрос.УстановитьПараметр("ПериодВводаДанныхОВремени", Перечисления.ПериодыВводаДанныхОВремени.ТекущийМесяц);
|
||||
Запрос.УстановитьПараметр("ПериодРегистрации", НачалоМесяца(ПериодРегистрации));
|
||||
|
||||
РезультатЗапроса = Запрос.Выполнить();
|
||||
Если РезультатЗапроса.Пустой() Тогда
|
||||
Возврат Документы.ТабельУчетаРабочегоВремени.ПустаяСсылка();
|
||||
КонецЕсли;
|
||||
|
||||
Выборка = РезультатЗапроса.Выбрать();
|
||||
Выборка.Следующий();
|
||||
Возврат Выборка.ТабельУчетаРабочегоВремени;
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="ce51cd3a-9b22-4c6a-9f49-7b3b1fa0f1aa">
|
||||
<name>ПС_ТабелиСервер</name>
|
||||
<server>true</server>
|
||||
<externalConnection>true</externalConnection>
|
||||
<clientOrdinaryApplication>true</clientOrdinaryApplication>
|
||||
<returnValuesReuse>DuringSession</returnValuesReuse>
|
||||
</mdclass:CommonModule>
|
||||
@@ -77,6 +77,7 @@
|
||||
<commonModules>CommonModule.УчетРабочегоВремениРасширенный</commonModules>
|
||||
<commonModules>CommonModule.ПС_ЗагрузкаДанныхИзExcel_Описание</commonModules>
|
||||
<commonModules>CommonModule.ПС_КартаДанных</commonModules>
|
||||
<commonModules>CommonModule.ПС_ТабелиСервер</commonModules>
|
||||
<catalogs>Catalog.Организации</catalogs>
|
||||
<catalogs>Catalog.ПодразделенияОрганизаций</catalogs>
|
||||
<catalogs>Catalog.Пользователи</catalogs>
|
||||
|
||||
+15
-56
@@ -3515,7 +3515,7 @@
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
СсылкаНаТабель = Ждать НайтиСсылкуНаТабельАсинх();
|
||||
СсылкаНаТабель = НайтиСсылкуНаТабельАсинх();
|
||||
Если НЕ ЗначениеЗаполнено(СсылкаНаТабель) Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
@@ -3555,7 +3555,7 @@
|
||||
// Проход Б: полная обратная загрузка данных табеля в табличные части формы.
|
||||
&НаКлиенте
|
||||
Асинх Процедура ЗагрузитьДанныеТабеляВФорму(СсылкаНаТабель)
|
||||
Ждать ЗаполнитьТабличныеЧастиИзТабеляНаСервере(СсылкаНаТабель);
|
||||
ЗаполнитьТабличныеЧастиИзТабеляНаСервере(СсылкаНаТабель);
|
||||
|
||||
ОпределитьВидимостьСтраниц();
|
||||
|
||||
@@ -3722,6 +3722,16 @@
|
||||
КонецЕсли;
|
||||
КонецФункции
|
||||
|
||||
&НаСервере
|
||||
Функция СтрокаПустаяПоЧасам(СтрокаТЧ)
|
||||
Для НомерДня = 1 По 31 Цикл
|
||||
Если СтрокаТЧ["Часов" + НомерДня] > 0 Тогда
|
||||
Возврат Ложь;
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
Возврат Истина;
|
||||
КонецФункции
|
||||
|
||||
&НаСервере
|
||||
Функция КлассифицироватьДень(ЗаписиДня)
|
||||
Результат = Новый Структура("Основная, Ночные, Сверхурочные", Неопределено, Неопределено, Неопределено);
|
||||
@@ -3784,16 +3794,6 @@
|
||||
Возврат Результат;
|
||||
КонецФункции
|
||||
|
||||
&НаСервере
|
||||
Функция СтрокаПустаяПоЧасам(СтрокаТЧ)
|
||||
Для НомерДня = 1 По 31 Цикл
|
||||
Если СтрокаТЧ["Часов" + НомерДня] > 0 Тогда
|
||||
Возврат Ложь;
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
Возврат Истина;
|
||||
КонецФункции
|
||||
|
||||
&НаСервере
|
||||
Функция ВидВремениЯвкаПринадлежитФинансированию(ВидВремени)
|
||||
Возврат ВидВремени = ВидВремениЯвкаСГЗ
|
||||
@@ -3895,57 +3895,16 @@
|
||||
// Серверная обёртка для вызова с клиента без контекста формы.
|
||||
&НаСервереБезКонтекста
|
||||
Функция НайтиСсылкуНаТабельНаСервере(Организация, Подразделение, НаименованиеПодразделения, ПериодРегистрации)
|
||||
Возврат НайтиСсылкуНаТабель(Организация, Подразделение, НаименованиеПодразделения, ПериодРегистрации);
|
||||
Возврат ПС_ТабелиСервер.НайтиСсылкуНаТабель(Организация, Подразделение, НаименованиеПодразделения, ПериодРегистрации);
|
||||
КонецФункции
|
||||
|
||||
&НаКлиенте
|
||||
Асинх Функция НайтиСсылкуНаТабельАсинх()
|
||||
Возврат Ждать НайтиСсылкуНаТабельНаСервере(
|
||||
Функция НайтиСсылкуНаТабельАсинх()
|
||||
Возврат НайтиСсылкуНаТабельНаСервере(
|
||||
Объект.Организация,
|
||||
Объект.Подразделение,
|
||||
Объект.НаименованиеПодразделения,
|
||||
Объект.ПериодРегистрации);
|
||||
КонецФункции
|
||||
|
||||
// Поиск ссылки на табель по ключевым реквизитам.
|
||||
// Источник: РС ПС_ЗагруженныеТабеля.СрезПоследних (последняя редакция по ДатаЗагрузки).
|
||||
// Возвращает DocumentRef.ТабельУчетаРабочегоВремени или пустую ссылку.
|
||||
&НаСервереБезКонтекста
|
||||
Функция НайтиСсылкуНаТабель(Организация, Подразделение, НаименованиеПодразделения, ПериодРегистрации)
|
||||
Если НЕ ЗначениеЗаполнено(Организация)
|
||||
ИЛИ НЕ ЗначениеЗаполнено(Подразделение)
|
||||
ИЛИ ПустаяСтрока(НаименованиеПодразделения)
|
||||
ИЛИ НЕ ЗначениеЗаполнено(ПериодРегистрации) Тогда
|
||||
Возврат Документы.ТабельУчетаРабочегоВремени.ПустаяСсылка();
|
||||
КонецЕсли;
|
||||
|
||||
Запрос = Новый Запрос;
|
||||
Запрос.Текст =
|
||||
"ВЫБРАТЬ
|
||||
| ПС_ЗагруженныеТабеляСрезПоследних.ТабельУчетаРабочегоВремени КАК ТабельУчетаРабочегоВремени
|
||||
|ИЗ
|
||||
| РегистрСведений.ПС_ЗагруженныеТабеля.СрезПоследних(
|
||||
| &ПериодРегистрации,
|
||||
| Организация = &Организация
|
||||
| И НаименованиеПодразделенияПоТабелю = &НаименованиеПодразделения
|
||||
| И ПериодВводаДанныхОВремени = &ПериодВводаДанныхОВремени
|
||||
| И СтруктурноеПодразделение = &СтруктурноеПодразделение) КАК ПС_ЗагруженныеТабеляСрезПоследних
|
||||
|УПОРЯДОЧИТЬ ПО
|
||||
| ПС_ЗагруженныеТабеляСрезПоследних.ДатаЗагрузки УБЫВ";
|
||||
Запрос.УстановитьПараметр("Организация", Организация);
|
||||
Запрос.УстановитьПараметр("СтруктурноеПодразделение", Подразделение);
|
||||
Запрос.УстановитьПараметр("НаименованиеПодразделения", НаименованиеПодразделения);
|
||||
Запрос.УстановитьПараметр("ПериодВводаДанныхОВремени", Перечисления.ПериодыВводаДанныхОВремени.ТекущийМесяц);
|
||||
Запрос.УстановитьПараметр("ПериодРегистрации", НачалоМесяца(ПериодРегистрации));
|
||||
|
||||
РезультатЗапроса = Запрос.Выполнить();
|
||||
Если РезультатЗапроса.Пустой() Тогда
|
||||
Возврат Документы.ТабельУчетаРабочегоВремени.ПустаяСсылка();
|
||||
КонецЕсли;
|
||||
|
||||
Выборка = РезультатЗапроса.Выбрать();
|
||||
Выборка.Следующий();
|
||||
Возврат Выборка.ТабельУчетаРабочегоВремени;
|
||||
КонецФункции
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user