3_1_5_192

This commit is contained in:
Компания 1С committed 2021-09-16 13:14:00 +03:00
1 parent ebd39458e4
commit 8e46accf22
72 files changed
+1407 -670

No files matched your search

@@ -219,7 +219,7 @@
// ИмяТабличногоДокумента - Строка - имя реквизита формы типа ТабличныйДокумент, показатели которого рассчитываются.
// ТекущаяКоманда - Строка - имя команды расчета показателя, например, "РассчитатьСумму".
// Определяет, какой показатель является основным.
// МинимальноеКоличество - Число
// МинимальноеКоличество - Число
//
Процедура РассчитатьПоказатели(Форма, ИмяТабличногоДокумента, ТекущаяКоманда = "", МинимальноеКоличество = 0) Экспорт
@@ -231,43 +231,38 @@
ТекущаяКоманда = ТекущаяКомандаРасчетаПоказателей(Элементы);
КонецЕсли;
// Расчет показателей.
РасчетныеПоказатели = ОбщегоНазначенияКлиентСервер.РасчетныеПоказателиЯчеек(
ТабличныйДокумент, ПолеТабличногоДокумента);
ПараметрыРасчета = ОбщегоНазначенияКлиентСервер.ПараметрыРасчетаПоказателейЯчеек(ПолеТабличногоДокумента);
// Установка значений показателей.
ЗаполнитьЗначенияСвойств(Форма, РасчетныеПоказатели);
// Переключение и форматирование показателей.
КомандыПоказателей = КомандыПоказателей();
Для Каждого Команда Из КомандыПоказателей Цикл
ИзменитьСвойствоЭлементаРасчетаПоказателей(Элементы, Команда.Ключ, "Пометка", Ложь);
Если ПараметрыРасчета.РассчитатьНаСервере Тогда
ДлительнаяОперация = СтандартныеПодсистемыВызовСервера.РасчетныеПоказателиЯчеек(
ТабличныйДокумент, ПараметрыРасчета.ВыделенныеОбласти, Форма.УникальныйИдентификатор);
Если ДлительнаяОперация = Неопределено Тогда
Возврат;
КонецЕсли;
ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(Форма);
ПараметрыОжидания.ФормаВладелец = Форма;
ПараметрыОжидания.ВыводитьОкноОжидания = Ложь;
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("Форма", Форма);
ДополнительныеПараметры.Вставить("ТекущаяКоманда", ТекущаяКоманда);
ДополнительныеПараметры.Вставить("МинимальноеКоличество", МинимальноеКоличество);
ОповещениеОЗавершении = Новый ОписаниеОповещения("ПродолжитьРасчетПоказателей", ЭтотОбъект, ДополнительныеПараметры);
ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация, ОповещениеОЗавершении, ПараметрыОжидания);
Иначе
РасчетныеПоказатели = ОбщегоНазначенияКлиентСервер.РасчетныеПоказателиЯчеек(
ТабличныйДокумент, ПолеТабличногоДокумента, ПараметрыРасчета);
ЗавершитьРасчетПоказателей(Форма, ТекущаяКоманда, МинимальноеКоличество, РасчетныеПоказатели);
ЗначениеПоказателя = РасчетныеПоказатели[Команда.Значение];
Элементы[Команда.Значение].ФорматРедактирования = ФорматРедактированияПоказателя(ЗначениеПоказателя);
КонецЦикла;
ИзменитьСвойствоЭлементаРасчетаПоказателей(Элементы, ТекущаяКоманда, "Пометка", Истина);
// Вывод основного показателя.
ТекущийПоказатель = КомандыПоказателей[ТекущаяКоманда];
Если РасчетныеПоказатели.Количество >= МинимальноеКоличество Тогда
Форма.Показатель = Форма[ТекущийПоказатель];
Элементы.Показатель.ФорматРедактирования = Элементы[ТекущийПоказатель].ФорматРедактирования;
КонецЕсли;
ИзменитьСвойствоЭлементаРасчетаПоказателей(
Элементы, "КомандыВидовПоказателей", "Картинка", БиблиотекаКартинок[ТекущийПоказатель]);
ИзменитьСвойствоЭлементаРасчетаПоказателей(
Элементы, "ВыбратьПоказатель", "Картинка", БиблиотекаКартинок[ТекущийПоказатель]);
// Кэширование состояния выбора показателей.
Форма.ОсновнойПоказатель = ТекущаяКоманда;
Форма.РазвернутьОбластьПоказателей = Элементы.РассчитатьВсеПоказатели.Пометка;
КонецПроцедуры
// Управляет признаком видимости панели расчетных показателей.
@@ -994,6 +989,65 @@
#Область ТабличныйДокумент
Процедура ПродолжитьРасчетПоказателей(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
Если Результат.Статус = "Ошибка" Тогда
ВызватьИсключение Результат.КраткоеПредставлениеОшибки;
КонецЕсли;
Если Результат.Статус <> "Выполнено" Тогда
Возврат;
КонецЕсли;
РасчетныеПоказатели = ПолучитьИзВременногоХранилища(Результат.АдресРезультата);
ЗавершитьРасчетПоказателей(
ДополнительныеПараметры.Форма,
ДополнительныеПараметры.ТекущаяКоманда,
ДополнительныеПараметры.МинимальноеКоличество,
РасчетныеПоказатели);
КонецПроцедуры
Процедура ЗавершитьРасчетПоказателей(Форма, ТекущаяКоманда, МинимальноеКоличество, РасчетныеПоказатели)
Элементы = Форма.Элементы;
ЗаполнитьЗначенияСвойств(Форма, РасчетныеПоказатели);
КомандыПоказателей = КомандыПоказателей();
Для Каждого Команда Из КомандыПоказателей Цикл
ИзменитьСвойствоЭлементаРасчетаПоказателей(Элементы, Команда.Ключ, "Пометка", Ложь);
ЗначениеПоказателя = РасчетныеПоказатели[Команда.Значение];
Элементы[Команда.Значение].ФорматРедактирования = ФорматРедактированияПоказателя(ЗначениеПоказателя);
КонецЦикла;
ИзменитьСвойствоЭлементаРасчетаПоказателей(Элементы, ТекущаяКоманда, "Пометка", Истина);
ТекущийПоказатель = КомандыПоказателей[ТекущаяКоманда];
Если РасчетныеПоказатели.Количество >= МинимальноеКоличество Тогда
Форма.Показатель = Форма[ТекущийПоказатель];
Элементы.Показатель.ФорматРедактирования = Элементы[ТекущийПоказатель].ФорматРедактирования;
КонецЕсли;
ИзменитьСвойствоЭлементаРасчетаПоказателей(
Элементы, "КомандыВидовПоказателей", "Картинка", БиблиотекаКартинок[ТекущийПоказатель]);
ИзменитьСвойствоЭлементаРасчетаПоказателей(
Элементы, "ВыбратьПоказатель", "Картинка", БиблиотекаКартинок[ТекущийПоказатель]);
Форма.ОсновнойПоказатель = ТекущаяКоманда;
Форма.РазвернутьОбластьПоказателей = Элементы.РассчитатьВсеПоказатели.Пометка;
КонецПроцедуры
Функция ТекущаяКомандаРасчетаПоказателей(ЭлементыФормы)
Перем ТекущаяКоманда;