3_1_2_150
This commit is contained in:
1 parent
28f5f6c774
commit
ccbf98d8bf
1114 files changed
+74111
-42158
No files matched your search
@@ -25,7 +25,7 @@
|
||||
КонецФункции
|
||||
|
||||
// Конвертирует параметры запуска текущего сеанса в передаваемые параметры в скрипт
|
||||
// Например, на вход программа может быть запущена с ключем:
|
||||
// Например, на вход программа может быть запущена с ключом:
|
||||
// /C "ПараметрыЗапускаИзВнешнейОперации=/TestClient -TPort 48050 /C РежимОтладки;РежимОтладки"
|
||||
// Пробросит в скрипт следует "/TestClient -TPort 48050 /C РежимОтладки"
|
||||
//
|
||||
@@ -207,50 +207,76 @@
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Функции для работы с табличными документами.
|
||||
|
||||
// Формирует описание выделенных областей табличного документа.
|
||||
// Выполняет расчет и вывод показателей выделенных областей ячеек табличного документа.
|
||||
//
|
||||
// Параметры:
|
||||
// ТабличныйДокумент - ТабличныйДокумент - документ, значения ячеек которого участвуют в расчете.
|
||||
// Форма - ФормаКлиентскогоПриложения - форма, в которой выводятся значения расчетных показателей.
|
||||
// ИмяТабличногоДокумента - Строка - имя реквизита формы типа ТабличныйДокумент, показатели которого рассчитываются.
|
||||
// ТекущаяКоманда - Строка - имя команды расчета показателя, например, "РассчитатьСумму".
|
||||
// Определяет, какой показатель является основным.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура - содержит:
|
||||
// * ВыделенныеОбласти - Массив - содержит структуры со свойствами:
|
||||
// * Верх - Число - Номер строки верхней границы области.
|
||||
// * Низ - Число - Номер строки нижней границы области.
|
||||
// * Лево - Число - Номер колонки верхней границы области.
|
||||
// * Право - Число - Номер колонки нижней границы области.
|
||||
// * ТипОбласти - ТипОбластиЯчеекТабличногоДокумента - Колонки, Прямоугольник, Строки, Таблица.
|
||||
// * РассчитатьНаСервере - Булево - признак того, что расчет должен выполняться на сервере.
|
||||
//
|
||||
Функция ПараметрыРасчетаПоказателейЯчеек(ТабличныйДокумент) Экспорт
|
||||
ПараметрыРасчетаПоказателей = Новый Структура;
|
||||
ПараметрыРасчетаПоказателей.Вставить("ВыделенныеОбласти", Новый Массив);
|
||||
ПараметрыРасчетаПоказателей.Вставить("РассчитатьНаСервере", Ложь);
|
||||
Процедура РассчитатьПоказатели(Форма, ИмяТабличногоДокумента, ТекущаяКоманда = "") Экспорт
|
||||
|
||||
ВыделенныеОбласти = ПараметрыРасчетаПоказателей.ВыделенныеОбласти;
|
||||
Для Каждого ВыделеннаяОбласть Из ТабличныйДокумент.ВыделенныеОбласти Цикл
|
||||
Если ТипЗнч(ВыделеннаяОбласть) <> Тип("ОбластьЯчеекТабличногоДокумента") Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
ГраницыОбласти = Новый Структура("Верх, Низ, Лево, Право, ТипОбласти");
|
||||
ЗаполнитьЗначенияСвойств(ГраницыОбласти, ВыделеннаяОбласть);
|
||||
ВыделенныеОбласти.Добавить(ГраницыОбласти);
|
||||
КонецЦикла;
|
||||
Элементы = Форма.Элементы;
|
||||
ТабличныйДокумент = Форма[ИмяТабличногоДокумента];
|
||||
|
||||
ВыделеноВсе = Ложь;
|
||||
Если ВыделенныеОбласти.Количество() = 1 Тогда
|
||||
ВыделеннаяОбласть = ВыделенныеОбласти[0];
|
||||
ВыделеноВсе = Не Булево(
|
||||
ВыделеннаяОбласть.Верх
|
||||
+ ВыделеннаяОбласть.Низ
|
||||
+ ВыделеннаяОбласть.Лево
|
||||
+ ВыделеннаяОбласть.Право);
|
||||
Если Не ЗначениеЗаполнено(ТекущаяКоманда) Тогда
|
||||
ТекущаяКоманда = ТекущаяКомандаРасчетаПоказателей(Элементы);
|
||||
КонецЕсли;
|
||||
|
||||
ПараметрыРасчетаПоказателей.РассчитатьНаСервере = (ВыделеноВсе Или ВыделенныеОбласти.Количество() >= 100);
|
||||
// Расчет показателей.
|
||||
ПараметрыРасчета = ПараметрыРасчетаПоказателейЯчеек(ТабличныйДокумент);
|
||||
|
||||
Возврат ПараметрыРасчетаПоказателей;
|
||||
КонецФункции
|
||||
Если ПараметрыРасчета.РассчитатьНаСервере Тогда
|
||||
РасчетныеПоказатели = СтандартныеПодсистемыВызовСервера.РасчетныеПоказателиЯчеек(
|
||||
ТабличныйДокумент, ПараметрыРасчета.ВыделенныеОбласти);
|
||||
Иначе
|
||||
РасчетныеПоказатели = ОбщегоНазначенияСлужебныйКлиентСервер.РасчетныеПоказателиЯчеек(
|
||||
ТабличныйДокумент, ПараметрыРасчета.ВыделенныеОбласти);
|
||||
КонецЕсли;
|
||||
|
||||
// Установка значений показателей.
|
||||
ЗаполнитьЗначенияСвойств(Форма, РасчетныеПоказатели);
|
||||
|
||||
// Переключение и форматирование показателей.
|
||||
КомандыПоказателей = КомандыПоказателей();
|
||||
|
||||
Для Каждого Команда Из КомандыПоказателей Цикл
|
||||
ИзменитьСвойствоЭлементаРасчетаПоказателей(Элементы, Команда.Ключ, "Пометка", Ложь);
|
||||
|
||||
ЗначениеПоказателя = РасчетныеПоказатели[Команда.Значение];
|
||||
Элементы[Команда.Значение].ФорматРедактирования = ФорматРедактированияПоказателя(ЗначениеПоказателя);
|
||||
КонецЦикла;
|
||||
|
||||
ИзменитьСвойствоЭлементаРасчетаПоказателей(Элементы, ТекущаяКоманда, "Пометка", Истина);
|
||||
|
||||
// Вывод основного показателя.
|
||||
ТекущийПоказатель = КомандыПоказателей[ТекущаяКоманда];
|
||||
|
||||
Форма.Показатель = Форма[ТекущийПоказатель];
|
||||
Элементы.Показатель.ФорматРедактирования = Элементы[ТекущийПоказатель].ФорматРедактирования;
|
||||
|
||||
ИзменитьСвойствоЭлементаРасчетаПоказателей(
|
||||
Элементы, "КомандыВидовПоказателей", "Картинка", БиблиотекаКартинок[ТекущийПоказатель]);
|
||||
|
||||
// Кэширование состояния выбора показателей.
|
||||
Форма.ОсновнойПоказатель = ТекущаяКоманда;
|
||||
Форма.РазвернутьОбластьПоказателей = Элементы.РассчитатьВсеПоказатели.Пометка;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Управляет признаком видимости панели расчетных показателей.
|
||||
//
|
||||
// Параметры:
|
||||
// Видимость - Булево - Признак включения / выключения видимости панели показателей.
|
||||
// См. также Синтакс-помощник: ГруппаФормы.Видимость.
|
||||
//
|
||||
Процедура УстановитьВидимостьПанелиПоказателей(ЭлементыФормы, Видимость = Ложь) Экспорт
|
||||
|
||||
ЭлементыФормы.ОбластьПоказателей.Видимость = Видимость;
|
||||
ИзменитьСвойствоЭлементаРасчетаПоказателей(ЭлементыФормы, "РассчитатьВсеПоказатели", "Пометка", Видимость);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
@@ -503,7 +529,7 @@
|
||||
|по причине:
|
||||
|Метод НачатьПодключениеВнешнейКомпоненты вернул Ложь.'"),
|
||||
Контекст.Идентификатор,
|
||||
ПредставлениеМестоположенияКомпоненты(Контекст.Местоположение));
|
||||
Контекст.Местоположение);
|
||||
|
||||
ПодключитьКомпонентуОповеститьОбОшибке(ТекстОшибки, Контекст);
|
||||
КонецЕсли;
|
||||
@@ -554,7 +580,7 @@
|
||||
|по причине:
|
||||
|%3'"),
|
||||
Контекст.Идентификатор,
|
||||
ПредставлениеМестоположенияКомпоненты(Контекст.Местоположение),
|
||||
Контекст.Местоположение,
|
||||
КраткоеПредставлениеОшибки(ИнформацияОбОшибке));
|
||||
|
||||
ПодключитьКомпонентуОповеститьОбОшибке(ТекстОшибки, Контекст);
|
||||
@@ -586,7 +612,7 @@
|
||||
|по причине:
|
||||
|%3'"),
|
||||
Контекст.Идентификатор,
|
||||
ПредставлениеМестоположенияКомпоненты(Контекст.Местоположение),
|
||||
Контекст.Местоположение,
|
||||
ТекстОшибки);
|
||||
|
||||
КонецЕсли;
|
||||
@@ -615,7 +641,7 @@
|
||||
|%4'"),
|
||||
ИдентификаторОбъекта,
|
||||
Контекст.Идентификатор,
|
||||
ПредставлениеМестоположенияКомпоненты(Контекст.Местоположение),
|
||||
Контекст.Местоположение,
|
||||
ТекстОшибки);
|
||||
|
||||
КонецЕсли;
|
||||
@@ -644,19 +670,6 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Продолжение процедуры ПодключитьКомпоненту.
|
||||
Функция ПредставлениеМестоположенияКомпоненты(Местоположение)
|
||||
|
||||
Если СтрНачинаетсяС(Местоположение, "e1cib/") Тогда
|
||||
Возврат НСтр("ru = 'из хранилища внешних компонент'");
|
||||
Иначе
|
||||
Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'из макета ""%1""'"),
|
||||
Местоположение);
|
||||
КонецЕсли;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область УстановкаВнешнейКомпоненты
|
||||
@@ -709,7 +722,7 @@
|
||||
|по причине:
|
||||
|%3'"),
|
||||
Контекст.Идентификатор,
|
||||
ПредставлениеМестоположенияКомпоненты(Контекст.Местоположение),
|
||||
Контекст.Местоположение,
|
||||
КраткоеПредставлениеОшибки(ИнформацияОбОшибке));
|
||||
|
||||
Результат = РезультатУстановкиКомпоненты();
|
||||
@@ -894,8 +907,8 @@
|
||||
КонецЕсли;
|
||||
|
||||
ЖурналРегистрацииКлиент.ДобавитьСообщениеДляЖурналаРегистрации(
|
||||
НСтр("ru = 'Регистрация компоненты comcntr'", ОбщегоНазначенияКлиент.КодОсновногоЯзыка()),
|
||||
"Ошибка",
|
||||
НСтр("ru = 'Регистрация компоненты comcntr'", ОбщегоНазначенияКлиент.КодОсновногоЯзыка()),
|
||||
"Ошибка",
|
||||
ТекстСообщения,,
|
||||
Истина);
|
||||
|
||||
@@ -948,6 +961,147 @@
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область ТабличныйДокумент
|
||||
|
||||
Функция ТекущаяКомандаРасчетаПоказателей(ЭлементыФормы)
|
||||
|
||||
Перем ТекущаяКоманда;
|
||||
|
||||
КомандыПоказателей = КомандыПоказателей();
|
||||
Для Каждого Команда Из КомандыПоказателей Цикл
|
||||
|
||||
Если ЭлементыФормы[Команда.Ключ].Пометка Тогда
|
||||
|
||||
ТекущаяКоманда = Команда.Ключ;
|
||||
Прервать;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Если ТекущаяКоманда = Неопределено Тогда
|
||||
ТекущаяКоманда = "РассчитатьСумму";
|
||||
КонецЕсли;
|
||||
|
||||
Возврат ТекущаяКоманда;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Определяет соответствие между командами расчета показателей и показателями.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие - Ключ - имя команды, Значение - имя показателя.
|
||||
//
|
||||
Функция КомандыПоказателей()
|
||||
|
||||
КомандыПоказателей = Новый Соответствие();
|
||||
КомандыПоказателей.Вставить("РассчитатьСумму", "Сумма");
|
||||
КомандыПоказателей.Вставить("РассчитатьКоличество", "Количество");
|
||||
КомандыПоказателей.Вставить("РассчитатьСреднее", "Среднее");
|
||||
КомандыПоказателей.Вставить("РассчитатьМинимум", "Минимум");
|
||||
КомандыПоказателей.Вставить("РассчитатьМаксимум", "Максимум");
|
||||
|
||||
Возврат КомандыПоказателей;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Формирует описание выделенных областей табличного документа.
|
||||
//
|
||||
// Параметры:
|
||||
// ТабличныйДокумент - ТабличныйДокумент - документ, значения ячеек которого участвуют в расчете.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура - содержит:
|
||||
// * ВыделенныеОбласти - Массив - содержит структуры со свойствами:
|
||||
// * Верх - Число - Номер строки верхней границы области.
|
||||
// * Низ - Число - Номер строки нижней границы области.
|
||||
// * Лево - Число - Номер колонки верхней границы области.
|
||||
// * Право - Число - Номер колонки нижней границы области.
|
||||
// * ТипОбласти - ТипОбластиЯчеекТабличногоДокумента - Колонки, Прямоугольник, Строки, Таблица.
|
||||
// * РассчитатьНаСервере - Булево - признак того, что расчет должен выполняться на сервере.
|
||||
//
|
||||
Функция ПараметрыРасчетаПоказателейЯчеек(ТабличныйДокумент)
|
||||
|
||||
ПараметрыРасчетаПоказателей = Новый Структура;
|
||||
ПараметрыРасчетаПоказателей.Вставить("ВыделенныеОбласти", Новый Массив);
|
||||
ПараметрыРасчетаПоказателей.Вставить("РассчитатьНаСервере", Ложь);
|
||||
|
||||
ВыделенныеОбласти = ПараметрыРасчетаПоказателей.ВыделенныеОбласти;
|
||||
Для Каждого ВыделеннаяОбласть Из ТабличныйДокумент.ВыделенныеОбласти Цикл
|
||||
|
||||
Если ТипЗнч(ВыделеннаяОбласть) <> Тип("ОбластьЯчеекТабличногоДокумента") Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
ГраницыОбласти = Новый Структура("Верх, Низ, Лево, Право, ТипОбласти");
|
||||
ЗаполнитьЗначенияСвойств(ГраницыОбласти, ВыделеннаяОбласть);
|
||||
ВыделенныеОбласти.Добавить(ГраницыОбласти);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
ВыделеноВсе = Ложь;
|
||||
|
||||
Если ВыделенныеОбласти.Количество() = 1 Тогда
|
||||
|
||||
ВыделеннаяОбласть = ВыделенныеОбласти[0];
|
||||
ВыделеноВсе = Не Булево(
|
||||
ВыделеннаяОбласть.Верх
|
||||
+ ВыделеннаяОбласть.Низ
|
||||
+ ВыделеннаяОбласть.Лево
|
||||
+ ВыделеннаяОбласть.Право);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
ПараметрыРасчетаПоказателей.РассчитатьНаСервере = (ВыделеноВсе Или ВыделенныеОбласти.Количество() >= 100);
|
||||
|
||||
Возврат ПараметрыРасчетаПоказателей;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ФорматРедактированияПоказателя(ЗначениеПоказателя)
|
||||
|
||||
ШаблонФорматаРедактирования = "ЧДЦ=%1; ЧРГ=' '; ЧН=0";
|
||||
|
||||
ЗначениеДробнойЧасти = Макс(ЗначениеПоказателя, -ЗначениеПоказателя) % 1;
|
||||
РазрядностьДробнойЧасти = Мин(?(ЗначениеДробнойЧасти = 0, 0, СтрДлина(ЗначениеДробнойЧасти) - 2), 5);
|
||||
|
||||
ФорматРедактирования = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
ШаблонФорматаРедактирования, РазрядностьДробнойЧасти);
|
||||
|
||||
ПредставлениеПоказателя = Формат(ЗначениеПоказателя, ФорматРедактирования);
|
||||
|
||||
Пока РазрядностьДробнойЧасти > 0
|
||||
И СтрЗаканчиваетсяНа(ПредставлениеПоказателя, "0") Цикл
|
||||
|
||||
ПредставлениеПоказателя = Сред(ПредставлениеПоказателя, 1, СтрДлина(ПредставлениеПоказателя) - 1);
|
||||
РазрядностьДробнойЧасти = РазрядностьДробнойЧасти - 1;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
ШаблонФорматаРедактирования, РазрядностьДробнойЧасти);
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ИзменитьСвойствоЭлементаРасчетаПоказателей(ЭлементыФормы, ИмяЭлемента, ИмяСвойства, ЗначениеСвойства)
|
||||
|
||||
СписокИменЭлементов = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку("%1, %1%2", ИмяЭлемента, "Еще");
|
||||
ИменаЭлементов = СтрРазделить(СписокИменЭлементов, ", ", Ложь);
|
||||
|
||||
Для Каждого Имя Из ИменаЭлементов Цикл
|
||||
|
||||
НайденныйЭлемент = ЭлементыФормы.Найти(Имя);
|
||||
|
||||
Если НайденныйЭлемент <> Неопределено Тогда
|
||||
НайденныйЭлемент[ИмяСвойства] = ЗначениеСвойства;
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область УстаревшиеПроцедурыИФункции
|
||||
|
||||
#Область РасширениеДляРаботыСФайлами
|
||||
@@ -962,7 +1116,7 @@
|
||||
|
||||
ТекстСообщения = ДополнительныеПараметры.ТекстПредупреждения;
|
||||
Если ПустаяСтрока(ТекстСообщения) Тогда
|
||||
ТекстСообщения = НСтр("ru = 'Действие недоступно, так как не установлено расширение для веб-клиента 1С:Предприятие.'")
|
||||
ТекстСообщения = НСтр("ru = 'Действие недоступно, так как не установлено расширение для работы с 1С:Предприятием.'")
|
||||
КонецЕсли;
|
||||
ПоказатьПредупреждение(, ТекстСообщения);
|
||||
|
||||
|
||||
Reference in new issue
Block a user