Обработка ПС_ЗагрузкаТабеляУчётаРабочегоВремениИзEXCEL.
- Редактируемое поле "Наименование подразделения", привязка OnChange. - Списки выбора "Подразделение" и "Наименование подразделения" из ПС_НастройкиЗагрузкиТабелей с фильтром по организации. - Автоподстановка наименования подразделения, если в РС для выбранного подразделения единственное значение. - Обратная загрузка: при изменении ключевых реквизитов формы (организация, подразделение, наименование подразделения, период регистрации) поиск ранее сохранённого табеля через ПС_ЗагруженныеТабеля (последняя редакция по дате загрузки) и подтверждение пользователя при наличии данных в форме. Заполнение ТЧ — заглушка, открывает найденный табель.
This commit is contained in:
+4
-1
@@ -583,6 +583,10 @@
|
|||||||
<dataPath xsi:type="form:DataPath">
|
<dataPath xsi:type="form:DataPath">
|
||||||
<segments>Объект.НаименованиеПодразделения</segments>
|
<segments>Объект.НаименованиеПодразделения</segments>
|
||||||
</dataPath>
|
</dataPath>
|
||||||
|
<handlers>
|
||||||
|
<event>OnChange</event>
|
||||||
|
<name>НаименованиеПодразделенияПриИзменении</name>
|
||||||
|
</handlers>
|
||||||
<extendedTooltip>
|
<extendedTooltip>
|
||||||
<name>НаименованиеПодразделенияРасширеннаяПодсказка</name>
|
<name>НаименованиеПодразделенияРасширеннаяПодсказка</name>
|
||||||
<id>1553</id>
|
<id>1553</id>
|
||||||
@@ -599,7 +603,6 @@
|
|||||||
<autoFill>true</autoFill>
|
<autoFill>true</autoFill>
|
||||||
</contextMenu>
|
</contextMenu>
|
||||||
<type>InputField</type>
|
<type>InputField</type>
|
||||||
<readOnly>false</readOnly>
|
|
||||||
<editMode>Enter</editMode>
|
<editMode>Enter</editMode>
|
||||||
<showInHeader>true</showInHeader>
|
<showInHeader>true</showInHeader>
|
||||||
<headerHorizontalAlign>Left</headerHorizontalAlign>
|
<headerHorizontalAlign>Left</headerHorizontalAlign>
|
||||||
|
|||||||
+128
-7
@@ -3309,21 +3309,26 @@
|
|||||||
|
|
||||||
|
|
||||||
&НаКлиенте
|
&НаКлиенте
|
||||||
Процедура ОрганизацияПриИзменении(Элемент)
|
Асинх Процедура ОрганизацияПриИзменении(Элемент)
|
||||||
|
Объект.Табель = "";
|
||||||
ЗаполнитьСписокВыбораПодразделений();
|
ЗаполнитьСписокВыбораПодразделений();
|
||||||
ОбновитьСписокЗагруженныхТабелей();
|
ОбновитьСписокЗагруженныхТабелей();
|
||||||
|
ПриИзмененииКлючевыхРеквизитов();
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
|
|
||||||
&НаКлиенте
|
&НаКлиенте
|
||||||
Процедура ПодразделениеПриИзменении(Элемент)
|
Асинх Процедура ПодразделениеПриИзменении(Элемент)
|
||||||
|
Объект.Табель = "";
|
||||||
ЗаполнитьСписокВыбораНаименованийПодразделений();
|
ЗаполнитьСписокВыбораНаименованийПодразделений();
|
||||||
|
ПриИзмененииКлючевыхРеквизитов();
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
|
|
||||||
&НаКлиенте
|
&НаКлиенте
|
||||||
Процедура НаименованиеПодразделенияПриИзменении(Элемент)
|
Асинх Процедура НаименованиеПодразделенияПриИзменении(Элемент)
|
||||||
// Редактируемое поле; дополнительной логики не требуется.
|
Объект.Табель = "";
|
||||||
|
ПриИзмененииКлючевыхРеквизитов();
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
|
|
||||||
@@ -3372,6 +3377,7 @@
|
|||||||
&НаСервере
|
&НаСервере
|
||||||
Процедура ЗаполнитьСписокВыбораНаименованийПодразделений()
|
Процедура ЗаполнитьСписокВыбораНаименованийПодразделений()
|
||||||
Элементы.НаименованиеПодразделения.СписокВыбора.Очистить();
|
Элементы.НаименованиеПодразделения.СписокВыбора.Очистить();
|
||||||
|
Объект.НаименованиеПодразделения = "";
|
||||||
|
|
||||||
Если НЕ ЗначениеЗаполнено(Объект.Организация)
|
Если НЕ ЗначениеЗаполнено(Объект.Организация)
|
||||||
ИЛИ НЕ ЗначениеЗаполнено(Объект.Подразделение) Тогда
|
ИЛИ НЕ ЗначениеЗаполнено(Объект.Подразделение) Тогда
|
||||||
@@ -3403,6 +3409,11 @@
|
|||||||
Выборка.НаименованиеПодразделенияПоТабелю,
|
Выборка.НаименованиеПодразделенияПоТабелю,
|
||||||
Выборка.НаименованиеПодразделенияПоТабелю);
|
Выборка.НаименованиеПодразделенияПоТабелю);
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
|
// Если в РС для выбранного подразделения только одно наименование — подставить сразу.
|
||||||
|
Если Элементы.НаименованиеПодразделения.СписокВыбора.Количество() = 1 Тогда
|
||||||
|
Объект.НаименованиеПодразделения = Элементы.НаименованиеПодразделения.СписокВыбора[0].Значение;
|
||||||
|
КонецЕсли;
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
|
|
||||||
@@ -3438,10 +3449,11 @@
|
|||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
&НаКлиенте
|
&НаКлиенте
|
||||||
Процедура ПериодРегистрацииПриИзменении()
|
Асинх Процедура ПериодРегистрацииПриИзменении()
|
||||||
УчетРабочегоВремениРасширенныйКлиентСервер.ТабельУстановитьПериодДокумента(ЭтаФорма);
|
УчетРабочегоВремениРасширенныйКлиентСервер.ТабельУстановитьПериодДокумента(ЭтаФорма);
|
||||||
ОчиститьДанные();
|
ОчиститьДанные();
|
||||||
КонецПроцедуры // авры()
|
ПриИзмененииКлючевыхРеквизитов();
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
|
||||||
&НаКлиенте
|
&НаКлиенте
|
||||||
@@ -3490,3 +3502,112 @@
|
|||||||
ОбновитьСписокЗагруженныхТабелей();
|
ОбновитьСписокЗагруженныхТабелей();
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
|
|
||||||
|
// Обратная загрузка данных из ранее сохранённого табеля (Задача 1).
|
||||||
|
// Диспетчер вызывается при изменении любого из четырёх ключевых реквизитов формы:
|
||||||
|
// Организация, Подразделение, НаименованиеПодразделения, ПериодРегистрации.
|
||||||
|
&НаКлиенте
|
||||||
|
Асинх Процедура ПриИзмененииКлючевыхРеквизитов()
|
||||||
|
Если НЕ КлючевыеРеквизитыЗаполнены() Тогда
|
||||||
|
Возврат;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
СсылкаНаТабель = Ждать НайтиСсылкуНаТабельАсинх();
|
||||||
|
Если НЕ ЗначениеЗаполнено(СсылкаНаТабель) Тогда
|
||||||
|
Возврат;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Объект.Табель = СсылкаНаТабель;
|
||||||
|
|
||||||
|
Если ЕстьДанныеВТабличныхЧастях() Тогда
|
||||||
|
Режим = РежимДиалогаВопрос.ДаНет;
|
||||||
|
ТекстВопроса = "Найден ранее загруженный табель за "
|
||||||
|
+ Формат(Объект.ПериодРегистрации, "ДФ='MMMM yyyy'")
|
||||||
|
+ " по " + Строка(Объект.Подразделение)
|
||||||
|
+ ". Подгрузить его данные в форму? Текущие данные будут заменены.";
|
||||||
|
Ответ = Ждать ВопросАсинх(ТекстВопроса, Режим);
|
||||||
|
Если Ответ <> КодВозвратаДиалога.Да Тогда
|
||||||
|
Возврат;
|
||||||
|
КонецЕсли;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
ЗагрузитьДанныеТабеляВФорму(СсылкаНаТабель);
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
&НаКлиенте
|
||||||
|
Функция КлючевыеРеквизитыЗаполнены()
|
||||||
|
Возврат ЗначениеЗаполнено(Объект.Организация)
|
||||||
|
И ЗначениеЗаполнено(Объект.Подразделение)
|
||||||
|
И НЕ ПустаяСтрока(Объект.НаименованиеПодразделения)
|
||||||
|
И ЗначениеЗаполнено(Объект.ПериодРегистрации);
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
&НаКлиенте
|
||||||
|
Функция ЕстьДанныеВТабличныхЧастях()
|
||||||
|
Возврат Объект.ТабличнаяЧастьСГЗ.Количество() > 0
|
||||||
|
ИЛИ Объект.ТабличнаяЧастьПД.Количество() > 0
|
||||||
|
ИЛИ Объект.ТабличнаяЧастьОМС.Количество() > 0;
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
// Заглушка Прохода А. Полная реализация заполнения ТЧ будет в Проходе Б.
|
||||||
|
&НаКлиенте
|
||||||
|
Асинх Процедура ЗагрузитьДанныеТабеляВФорму(СсылкаНаТабель)
|
||||||
|
Ждать ОткрытьЗначениеАсинх(СсылкаНаТабель);
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
// Серверная обёртка для вызова с клиента без контекста формы.
|
||||||
|
&НаСервереБезКонтекста
|
||||||
|
Функция НайтиСсылкуНаТабельНаСервере(Организация, Подразделение, НаименованиеПодразделения, ПериодРегистрации)
|
||||||
|
Возврат НайтиСсылкуНаТабель(Организация, Подразделение, НаименованиеПодразделения, ПериодРегистрации);
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
&НаКлиенте
|
||||||
|
Асинх Функция НайтиСсылкуНаТабельАсинх()
|
||||||
|
Возврат Ждать НайтиСсылкуНаТабельНаСервере(
|
||||||
|
Объект.Организация,
|
||||||
|
Объект.Подразделение,
|
||||||
|
Объект.НаименованиеПодразделения,
|
||||||
|
Объект.ПериодРегистрации);
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
// Поиск ссылки на табель по ключевым реквизитам.
|
||||||
|
// Источник: РС ПС_ЗагруженныеТабеля.СрезПоследних (последняя редакция по ДатаЗагрузки).
|
||||||
|
// Возвращает DocumentRef.ТабельУчетаРабочегоВремени или пустую ссылку.
|
||||||
|
&НаСервереБезКонтекста
|
||||||
|
Функция НайтиСсылкуНаТабель(Организация, Подразделение, НаименованиеПодразделения, ПериодРегистрации)
|
||||||
|
Если НЕ ЗначениеЗаполнено(Организация)
|
||||||
|
ИЛИ НЕ ЗначениеЗаполнено(Подразделение)
|
||||||
|
ИЛИ ПустаяСтрока(НаименованиеПодразделения)
|
||||||
|
ИЛИ НЕ ЗначениеЗаполнено(ПериодРегистрации) Тогда
|
||||||
|
Возврат Документы.ТабельУчетаРабочегоВремени.ПустаяСсылка();
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Запрос = Новый Запрос;
|
||||||
|
Запрос.Текст =
|
||||||
|
"ВЫБРАТЬ
|
||||||
|
| ПС_ЗагруженныеТабеляСрезПоследних.ТабельУчетаРабочегоВремени КАК ТабельУчетаРабочегоВремени
|
||||||
|
|ИЗ
|
||||||
|
| РегистрСведений.ПС_ЗагруженныеТабеля.СрезПоследних(
|
||||||
|
| &ПериодРегистрации,
|
||||||
|
| Организация = &Организация
|
||||||
|
| И НаименованиеПодразделенияПоТабелю = &НаименованиеПодразделения
|
||||||
|
| И ПериодВводаДанныхОВремени = &ПериодВводаДанныхОВремени
|
||||||
|
| И СтруктурноеПодразделение = &СтруктурноеПодразделение) КАК ПС_ЗагруженныеТабеляСрезПоследних
|
||||||
|
|УПОРЯДОЧИТЬ ПО
|
||||||
|
| ПС_ЗагруженныеТабеляСрезПоследних.ДатаЗагрузки УБЫВ";
|
||||||
|
Запрос.УстановитьПараметр("Организация", Организация);
|
||||||
|
Запрос.УстановитьПараметр("СтруктурноеПодразделение", Подразделение);
|
||||||
|
Запрос.УстановитьПараметр("НаименованиеПодразделения", НаименованиеПодразделения);
|
||||||
|
Запрос.УстановитьПараметр("ПериодВводаДанныхОВремени", Перечисления.ПериодыВводаДанныхОВремени.ТекущийМесяц);
|
||||||
|
Запрос.УстановитьПараметр("ПериодРегистрации", НачалоМесяца(ПериодРегистрации));
|
||||||
|
|
||||||
|
РезультатЗапроса = Запрос.Выполнить();
|
||||||
|
Если РезультатЗапроса.Пустой() Тогда
|
||||||
|
Возврат Документы.ТабельУчетаРабочегоВремени.ПустаяСсылка();
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Выборка = РезультатЗапроса.Выбрать();
|
||||||
|
Выборка.Следующий();
|
||||||
|
Возврат Выборка.ТабельУчетаРабочегоВремени;
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user