|
Обработка табл. части дока. обновление данных Владельца формы | ☑ | ||
---|---|---|---|---|
0
sdfqwe
09.12.19
✎
12:11
|
ЗУП 3.1 Документ. ТабельУчетаРабочегоВремени
Не могу увидеть и изменить данные владельца формы (ФормаДокумента). Код: &НаСервере Функция ПолучитьФИОСотра(Сотр) Возврат Сотр.Наименование; КонецФункции &НаСервере Функция ПолучитьВидыВремен() СтрОтв = Новый Структура; СтрОтв.Вставить("Явка", Справочники.ВидыИспользованияРабочегоВремени.Явка); СтрОтв.Вставить("Ночь", Справочники.ВидыИспользованияРабочегоВремени.РаботаНочныеЧасы); Возврат СтрОтв; КонецФункции &НаСервере Функция ПолучитьСписокСотровДока(ТаблДока) Сотры = ТаблДока.Выгрузить(); Сотры.Свернуть("Сотрудник"); Возврат Сотры.ВыгрузитьКолонку("Сотрудник"); КонецФункции &НаКлиенте Процедура ПослеЗакрытияВопросаВыполнитьУборку(Результат, Параметры) Экспорт Если Результат = КодВозвратаДиалога.Да Тогда ВылиИзменения = Ложь; ВидыВремени = ПолучитьВидыВремен(); Явка = ВидыВремени.Явка; Ночь = ВидыВремени.Ночь; ОбДока = ВладелецФормы.Объект; ДанныеОВремени = ОбДока.ДанныеОВремени; Сотры = ПолучитьСписокСотровДока(ДанныеОВремени); МассивНочных = Новый Массив; Отбор = Новый Структура; Для каждого СтрСотры из Сотры Цикл Отбор.Очистить(); Отбор.Вставить("Сотрудник", СтрСотры); НайдСтрокиВремСотра = ДанныеОВремени.НайтиСтроки(Отбор); МассивНочных.Очистить(); Для СчДней = 1 По 31 Цикл БылаДобавленаНочь = Ложь; Для каждого СтрНайдСтрокиВремСотра из НайдСтрокиВремСотра Цикл Если СтрНайдСтрокиВремСотра["ВидВремени"+Строка(СчДней)] = Ночь Тогда БылаДобавленаНочь = Истина; МассивНочных.Добавить(СтрНайдСтрокиВремСотра["Часов"+Строка(СчДней)]); КонецЕсли; КонецЦикла; Если НЕ БылаДобавленаНочь Тогда МассивНочных.Добавить(0); КонецЕсли; КонецЦикла; Для СчДней = 1 По 31 Цикл Для каждого СтрНайдСтрокиВремСотра из НайдСтрокиВремСотра Цикл Если СтрНайдСтрокиВремСотра["ВидВремени"+Строка(СчДней)] = Явка Тогда ЧасовЯвки = СтрНайдСтрокиВремСотра["Часов"+Строка(СчДней)]; Если ЧасовЯвки < МассивНочных[СчДней-1] Тогда Сообщить(ПолучитьФИОСотра(СтрСотры)+" на дне "+Строка(СчДней)+" имеет меньше Общих часов чем ночных. Вычитание по этому дню Не выполнено!"); Иначе РасчКолвоЧасов = ЧасовЯвки - МассивНочных[СчДней-1]; СтрНайдСтрокиВремСотра["Часов"+Строка(СчДней)] = РасчКолвоЧасов; СтрНайдСтрокиВремСотра["Время"+Строка(СчДней)+"Представление"] = "Я "+Строка(РасчКолвоЧасов); Если ЧасовЯвки <> РасчКолвоЧасов Тогда ВылиИзменения = Истина; КонецЕсли; КонецЕсли; КонецЕсли; КонецЦикла; КонецЦикла; КонецЦикла; Если ВылиИзменения Тогда КопироватьДанныеФормы(ОбДока, ВладелецФормы.Объект); ВладелецФормы.Прочитать(); ВладелецФормы.Модифицированность = Истина; КонецЕсли; ПоказатьПредупреждение(,"Готово",1); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт Оповещение = Новый ОписаниеОповещения("ПослеЗакрытияВопросаВыполнитьУборку", ЭтаФорма); ПоказатьВопрос(Оповещение, "Данные о времени будут изменены. Продолжить?", РежимДиалогаВопрос.ДаНет, 0); КонецПроцедуры /////// КопироватьДанныеФормы(ОбДока, ВладелецФормы.Объект); ВладелецФормы.Прочитать(); Не помогают. Туплю. |
|||
1
sdfqwe
09.12.19
✎
13:57
|
Убрал:
КопироватьДанныеФормы(ОбДока, ВладелецФормы.Объект); ВладелецФормы.Прочитать(); Вместо: СтрНайдСтрокиВремСотра["Часов"+Строка(СчДней)] = РасчКолвоЧасов; СтрНайдСтрокиВремСотра["Время"+Строка(СчДней)+"Представление"] = "Я "+Строка(РасчКолвоЧасов); Следующее: ВладелецФормы.Объект.ДанныеОВремени.Получить(ДанныеОВремени.Индекс(СтрНайдСтрокиВремСотра))["Часов"+Строка(СчДней)] = РасчКолвоЧасов; ВладелецФормы.Объект.ДанныеОВремени.Получить(ДанныеОВремени.Индекс(СтрНайдСтрокиВремСотра))["Время"+Строка(СчДней)+"Представление"] = "Я "+Строка(РасчКолвоЧасов); ....... Есть другие способы решения. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |