Created
May 28, 2019 14:19
-
-
Save FragsterAt/3cc9026407d96aa1258ce143fd8f34c3 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
&НаСервере | |
Процедура СоздатьДополнительныеКолонкиПланФакта(); | |
Если Не ЗначениеЗаполнено(_ДобавленныеРеквизитыПланФакт) Тогда | |
_ДобавленныеРеквизитыПланФакт = ОбщегоНазначенияУУСервер.СериализоватьЗначение(Новый Массив); | |
_ДобавленныеЭлементыПланФакт = ОбщегоНазначенияУУСервер.СериализоватьЗначение(Новый Массив); | |
КонецЕсли; | |
ДобавленныеЭлементыПланФакт = ОбщегоНазначенияУУСервер.ДесериализоватьЗначение(_ДобавленныеЭлементыПланФакт); | |
ДобавленныеРеквизитыПланФакт = ОбщегоНазначенияУУСервер.ДесериализоватьЗначение(_ДобавленныеРеквизитыПланФакт); | |
Для каждого Элемент Из ДобавленныеЭлементыПланФакт Цикл | |
Элементы.Удалить(Элементы[Элемент]); | |
КонецЦикла; | |
ДобавленныеЭлементыПланФакт.Очистить(); | |
Если ДобавленныеРеквизитыПланФакт.Количество() > 0 Тогда | |
ИзменитьРеквизиты(, ДобавленныеРеквизитыПланФакт); | |
КонецЕсли; | |
ДобавленныеРеквизитыПланФакт.Очистить(); | |
Для каждого СтрКПЭ Из Объект.КлючевыеПоказатели Цикл | |
ДобавленныеРеквизитыПланФакт.Добавить(Новый РеквизитФормы("План" + СтрКПЭ.НомерСтроки, Новый ОписаниеТипов("Число", | |
Новый КвалификаторыЧисла(15, 2, ДопустимыйЗнак.Любой)) | |
, "Объект.Пользователи", "План", Ложь) ); | |
ДобавленныеРеквизитыПланФакт.Добавить(Новый РеквизитФормы("Факт" + СтрКПЭ.НомерСтроки, Новый ОписаниеТипов("Число", | |
Новый КвалификаторыЧисла(15, 2, ДопустимыйЗнак.Любой)) | |
, "Объект.Пользователи", "Факт", Ложь) ); | |
ДобавленныеРеквизитыПланФакт.Добавить(Новый РеквизитФормы("ФактАвто" + СтрКПЭ.НомерСтроки, Новый ОписаниеТипов("Число", | |
Новый КвалификаторыЧисла(15, 2, ДопустимыйЗнак.Любой)) | |
, "Объект.Пользователи", "ФактАвто", Ложь) ); | |
ДобавленныеРеквизитыПланФакт.Добавить(Новый РеквизитФормы("ФактДельта" + СтрКПЭ.НомерСтроки, Новый ОписаниеТипов("Число", | |
Новый КвалификаторыЧисла(15, 2, ДопустимыйЗнак.Любой)) | |
, "Объект.Пользователи", "ФактДельта", Ложь) ); | |
ДобавленныеРеквизитыПланФакт.Добавить(Новый РеквизитФормы("Мотивация" + СтрКПЭ.НомерСтроки, Новый ОписаниеТипов("Число", | |
Новый КвалификаторыЧисла(10, 2, ДопустимыйЗнак.Любой)) | |
, "Объект.Пользователи", "Мотивация", Ложь) ); | |
ДобавленныеРеквизитыПланФакт.Добавить(Новый РеквизитФормы("УсловиеВыполнено" + СтрКПЭ.НомерСтроки, Новый ОписаниеТипов("Булево") | |
, "Объект.Пользователи", "УсловиеВыполнено", Ложь) ); | |
КонецЦикла; | |
ИзменитьРеквизиты(ДобавленныеРеквизитыПланФакт); | |
Для Сч = 0 По ДобавленныеРеквизитыПланФакт.Вграница() Цикл | |
ДобавленныеРеквизитыПланФакт[Сч] = ДобавленныеРеквизитыПланФакт[Сч].Путь + "." + ДобавленныеРеквизитыПланФакт[Сч].Имя; | |
КонецЦикла; | |
УсловноеОформление.Элементы.Очистить(); | |
Для каждого СтрКПЭ Из Объект.КлючевыеПоказатели Цикл | |
ГруппаКолонок = Элементы.Вставить("ГруппаПланФактСтроки" + СтрКПЭ.НомерСтроки, Тип("ГруппаФормы"), Элементы.Пользователи, Элементы.ПользователиМотивацияКВыплате); | |
ГруппаКолонок.Заголовок = СтрКПЭ.Заголовок; | |
ГруппаКолонок.Группировка = ГруппировкаКолонок.Вертикальная; | |
ГруппаКолонок.ОтображатьВШапке = Истина; | |
ГруппаКолонок.РастягиватьПоГоризонтали = Ложь; | |
ГруппаКолонок.Ширина = 35; | |
ГруппаКолонокПлан = Элементы.Вставить("ГруппаПланФактПлан" + СтрКПЭ.НомерСтроки, Тип("ГруппаФормы"), ГруппаКолонок); | |
ГруппаКолонокПлан.Группировка = ГруппировкаКолонок.Горизонтальная; | |
ГруппаКолонокПлан.ОтображатьВШапке = Ложь; | |
ГруппаКолонокПлан.РастягиватьПоГоризонтали = Ложь; | |
ГруппаПланФактФакт = Элементы.Вставить("ГруппаПланФактФакт" + СтрКПЭ.НомерСтроки, Тип("ГруппаФормы"), ГруппаКолонок); | |
ГруппаПланФактФакт.Группировка = ГруппировкаКолонок.Горизонтальная; | |
ГруппаПланФактФакт.ОтображатьВШапке = Ложь; | |
ГруппаПланФактФакт.РастягиватьПоГоризонтали = Ложь; | |
ДобавленныеЭлементыПланФакт.Добавить(ГруппаПланФактФакт.Имя); | |
ДобавленныеЭлементыПланФакт.Добавить(ГруппаКолонокПлан.Имя); | |
ДобавленныеЭлементыПланФакт.Добавить(ГруппаКолонок.Имя); | |
СоздатьПоле(ГруппаКолонокПлан, СтрКПЭ, "План", 12); | |
СоздатьПоле(ГруппаКолонокПлан, СтрКПЭ, "Факт", 12, , "Факт Учет"); | |
СоздатьПоле(ГруппаКолонокПлан, СтрКПЭ, "УсловиеВыполнено", 3, Истина, "Выполнено"); | |
СоздатьПоле(ГруппаПланФактФакт, СтрКПЭ, "ФактАвто", 12, Истина, "Факт Расч"); | |
СоздатьПоле(ГруппаПланФактФакт, СтрКПЭ, "ФактДельта", 12, , "Корр."); | |
СоздатьПоле(ГруппаПланФактФакт, СтрКПЭ, "Мотивация", 8); | |
Элементы["Факт"+СтрКПЭ.НомерСтроки].УстановитьДействие("ПриИзменении", "ФактПриИзменении"); | |
Элементы["ФактДельта"+СтрКПЭ.НомерСтроки].УстановитьДействие("ПриИзменении", "ФактДельтаПриИзменении"); | |
ЭлементОформления = УсловноеОформление.Элементы.Добавить(); | |
ЭлементОформления.Использование = Истина; | |
ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(ЭлементОформления.Отбор, "Объект.Пользователи.Факт" + СтрКПЭ.НомерСтроки | |
, ВидСравненияКомпоновкиДанных.НеРавно, Новый ПолеКомпоновкиДанных("Объект.Пользователи.ФактАвто" + СтрКПЭ.НомерСтроки)); | |
//ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); | |
//ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Пользователи.Факт" + СтрКПЭ.НомерСтроки); | |
//ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно; | |
//ЭлементОтбора.ПравоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Пользователи.ФактАвто" + СтрКПЭ.НомерСтроки);; | |
//ЭлементОтбора.Использование = Истина; | |
//ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ЦветФона", ЦветаСтиля.СобытиеОтказ); | |
ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ПросроченныеДанныеЦвет); | |
ЭлементОформления.Оформление.УстановитьЗначениеПараметра( | |
"Шрифт", Новый Шрифт(ШрифтыСтиля.ОбычныйШрифтТекста, , , Истина)); | |
ОформляемоеПоле = ЭлементОформления.Поля.Элементы.Добавить(); | |
ОформляемоеПоле.Использование = Истина; | |
ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных("Факт"+СтрКПЭ.НомерСтроки); | |
КонецЦикла; | |
ПеренестиПланФактВСводнуюТаблицу(Объект); | |
_ДобавленныеЭлементыПланФакт = ОбщегоНазначенияУУСервер.СериализоватьЗначение(ДобавленныеЭлементыПланФакт); | |
_ДобавленныеРеквизитыПланФакт = ОбщегоНазначенияУУСервер.СериализоватьЗначение(ДобавленныеРеквизитыПланФакт); | |
КонецПроцедуры | |
&НаКлиентеНаСервереБезКонтекста | |
Процедура ПеренестиСводнуюТаблицуВПланФакт(Объект) | |
Для каждого СтрПланФакт Из Объект.ПланФакт Цикл | |
СтрПланФакт.НужноУдалить = Истина; | |
КонецЦикла; | |
МассивПолей = Новый Массив; | |
МассивПолей.Добавить("План"); | |
МассивПолей.Добавить("Факт"); | |
МассивПолей.Добавить("ФактАвто"); | |
МассивПолей.Добавить("Мотивация"); | |
МассивПолей.Добавить("УсловиеВыполнено"); | |
Для каждого СтрПользователи Из Объект.Пользователи Цикл | |
СтрПользователи.МотивацияКВыплате = 0; | |
Для каждого СтрКПЭ Из Объект.КлючевыеПоказатели Цикл | |
ПараметрыОтбора = Новый Структура("Пользователь, УИД, КлючевойПоказатель", СтрПользователи.Пользователь, СтрКПЭ.УИД, СтрКПЭ.КлючевойПоказатель); | |
НайденныеСтроки = Объект.ПланФакт.НайтиСтроки(ПараметрыОтбора); | |
Если НайденныеСтроки.Количество() = 0 Тогда | |
СТрПланФакт = Объект.ПланФакт.Добавить(); | |
ЗаполнитьЗначенияСвойств(СтрПланФакт, ПараметрыОтбора); | |
КонецЕсли; | |
Для каждого СтрПланФакт Из НайденныеСтроки Цикл | |
СтрПланФакт.НужноУдалить = Ложь; | |
Для каждого Поле Из МассивПолей Цикл | |
СтрПланФакт[Поле] = СтрПользователи[Поле + СтрКПЭ.НомерСтроки]; | |
КонецЦикла; | |
Если МеньшеЛучше(СтрПланФакт.КлючевойПоказатель) Тогда | |
СтрПланФакт.УсловиеВыполнено = СтрПланФакт.Факт <= СтрПланФакт.План | |
Иначе | |
СтрПланФакт.УсловиеВыполнено = СтрПланФакт.Факт >= СтрПланФакт.План | |
КонецЕсли; | |
СтрПользователи["УсловиеВыполнено" + СтрКПЭ.НомерСтроки] = СтрПланФакт.УсловиеВыполнено; | |
Если СтрПланФакт.УсловиеВыполнено Тогда | |
СтрПользователи.МотивацияКВыплате = СтрПользователи.МотивацияКВыплате + СтрПользователи["Мотивация" + СтрКПЭ.НомерСтроки]; | |
КонецЕсли; | |
КонецЦикла; | |
КонецЦикла; | |
КонецЦикла; | |
НайденныеСтроки = Объект.ПланФакт.НайтиСтроки(Новый СТруктура("НужноУдалить", Истина)); | |
Для каждого СтрПланФакт Из НайденныеСтроки Цикл | |
Объект.ПланФакт.Удалить(СтрПланФакт); | |
КонецЦикла; | |
КонецПроцедуры | |
&НаСервереБезКонтекста | |
Функция МеньшеЛучше(КлючевойПоказатель) | |
Возврат КлючевойПоказатель.МеньшеЛучше | |
КонецФункции | |
Процедура СоздатьПоле(Знач ГруппаКолонок, Знач СтрКПЭ, Знач Путь, Знач Ширина, Знач ТолькоПросмотр = Ложь, Знач Заголовок = "") | |
Перем Поле; | |
Поле = Элементы.Добавить(Путь + СтрКПЭ.НомерСтроки, Тип("ПолеФормы"), ГруппаКолонок); | |
Поле.ПутьКДанным = "Объект.Пользователи." + Путь + СтрКПЭ.НомерСтроки; | |
Поле.ТолькоПросмотр = ТолькоПросмотр; | |
Поле.Вид = ВидПоляФормы.ПолеВвода; | |
Поле.Ширина = Ширина; | |
Поле.Заголовок = Заголовок; | |
Поле.РастягиватьПоГоризонтали = Ложь; | |
КонецПроцедуры |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment