This commit is contained in:
Компания 1С committed 2014-12-05 13:22:00 +03:00
1 parent b1d09ad9f4
commit 89042d6a6a
2187 files changed
+168153 -164014

No files matched your search

@@ -6,7 +6,7 @@
#Область СлужебныйПрограммныйИнтерфейс
////////////////////////////////////////////////////////////////////////////////
// Обработка результата выполнения
// Обработка результата выполнения.
// Формирует шаблон результата выполнения.
//
@@ -86,4 +86,200 @@
Результат.ОповещениеФорм.Добавить(ОповещениеФорм);
КонецПроцедуры
// Добавляет в оповещение для динамических списков типы из массива измененных объектов.
//
// Параметры:
// Результат - Структура - См. СтандартныеПодсистемыКлиент.ПоказатьРезультатВыполнения().
// ИмяТаблицы - Строка - Имя таблицы формы (дерева значений), в которой требуется развернуть узел.
// Идентификатор - Произвольный - Необязательный. Идентификатор строки дерева, которую требуется развернуть.
// Если указано "*", то будут развернуты все узлы верхнего уровня.
// Если указано Неопределено, то строки дерева развернуты не будут.
// Значение по умолчанию: "*".
// СПодчиненными - Булево - Необязательный. Раскрывать ли подчиненные узлы.
// Значение по умолчанию: Ложь (не раскрывать подчиненные узлы).
//
Процедура РазвернутьУзлыДерева(Результат, ИмяТаблицы, Идентификатор = "*", СПодчиненными = Ложь) Экспорт
Если Идентификатор = Неопределено Тогда
Возврат;
КонецЕсли;
Если Не Результат.Свойство("РазворачиваемыеУзлы") Тогда
Результат.Вставить("РазворачиваемыеУзлы", Новый Массив);
КонецЕсли;
РазворачиваемыйУзел = Новый Структура("ИмяТаблицы, Идентификатор, СПодчиненными");
РазворачиваемыйУзел.ИмяТаблицы = ИмяТаблицы;
РазворачиваемыйУзел.Идентификатор = Идентификатор;
РазворачиваемыйУзел.СПодчиненными = СПодчиненными;
Результат.РазворачиваемыеУзлы.Добавить(РазворачиваемыйУзел);
КонецПроцедуры
// Добавляет в структуру информацию, необходимую для вывода предупреждения.
//
// Параметры:
// Результат - Структура - См. СтандартныеПодсистемыКлиент.ПоказатьРезультатВыполнения().
// Текст - Строка - Текст предупреждения.
// ТекстОшибок - Строка - Необязательный. Тексты ошибок, которые при желании может просмотреть пользователь.
// Заголовок - Строка - Необязательный. Заголовок окна.
// ПутьКРеквизитуФормы - Строка - Необязательный. Путь к реквизиту формы, значение которого вызывало ошибку.
//
Процедура РезультатВыполненияДобавитьПредупреждение(Результат, Текст, ТекстОшибок = "", Заголовок = "", ПутьКРеквизитуФормы = "") Экспорт
ВыводПредупреждения = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Результат, "ВыводПредупреждения");
Если ВыводПредупреждения = Неопределено Тогда
ВыводПредупреждения = Новый Структура("Использование, Заголовок, Текст, ПутьКРеквизитуФормы, ТекстОшибок", Ложь);
Результат.Вставить("ВыводПредупреждения", ВыводПредупреждения);
КонецЕсли;
ВыводПредупреждения.Использование = Истина;
ВыводПредупреждения.Заголовок = Заголовок;
ВыводПредупреждения.Текст = Текст;
ВыводПредупреждения.ТекстОшибок = ТекстОшибок;
ВыводПредупреждения.ПутьКРеквизитуФормы = ПутьКРеквизитуФормы;
КонецПроцедуры
// Добавляет в структуру информацию, необходимую для вывода всплывающего оповещения.
//
// Параметры:
// Результат - Структура - См. СтандартныеПодсистемыКлиент.ПоказатьРезультатВыполнения().
// Заголовок - Строка - Заголовок оповещения.
// Текст - Строка - Текст оповещения.
// Ссылка - Строка - Навигационная ссылка для перехода к объекту конфигурации.
// Картинка - Картинка - Картинка оповещения.
//
Процедура ВывестиОповещение(Результат, Заголовок, Текст = "", Картинка = Неопределено, Ссылка = "") Экспорт
ВыводОповещения = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Результат, "ВыводОповещения");
Если ВыводОповещения = Неопределено Тогда
ВыводОповещения = Новый Структура("Использование, Заголовок, Ссылка, Текст, Картинка", Ложь);
Результат.Вставить("ВыводОповещения", ВыводОповещения);
КонецЕсли;
ВыводОповещения.Использование = Истина;
ВыводОповещения.Заголовок = Заголовок;
ВыводОповещения.Ссылка = Ссылка;
ВыводОповещения.Текст = Текст;
ВыводОповещения.Картинка = Картинка;
КонецПроцедуры
////////////////////////////////////////////////////////////////////////////////
// Табличный документ
// Вычисляет сумму выделенных ячеек и возвращает ее представление.
//
// Параметры:
// ТабличныйДокумент - ТабличныйДокумент - Таблица, для которой вычисляет сумма ячеек.
// ВыделенныеОбласти
// - Неопределено - При вызове с клиента этот параметр будет определен автоматически.
// - Массив - При вызове с сервера в этот параметр следует передавать области,
// предварительно вычисленные на клиенте
// при помощи функции ОтчетыКлиент.ВыделенныеОбласти(ТабличныйДокумент).
//
// Возвращаемое значение:
// Строка - Представление суммы выделенных ячеек.
//
// См. также:
// ОтчетыКлиент.ВыделенныеОбласти().
//
Функция СуммаЯчеек(ТабличныйДокумент, ВыделенныеОбласти) Экспорт
Если ВыделенныеОбласти = Неопределено Тогда
#Если Клиент Тогда
ВыделенныеОбласти = ТабличныйДокумент.ВыделенныеОбласти;
#Иначе
Возврат НСтр("ru = 'Не указано значение параметра ""ВыделенныеОбласти"".'");
#КонецЕсли
КонецЕсли;
#Если Клиент И Не ТолстыйКлиентОбычноеПриложение Тогда
КоличествоВыделенныхОбластей = ВыделенныеОбласти.Количество();
Если КоличествоВыделенныхОбластей = 0 Тогда
Возврат ""; // Нет ни одного числа.
ИначеЕсли КоличествоВыделенныхОбластей >= 100 Тогда
Возврат "<"; // Нужен вызов сервера.
КонецЕсли;
КоличествоВыделенныхЯчеек = 0;
#КонецЕсли
Сумма = Неопределено;
ПроверенныеЯчейки = Новый Соответствие;
Для Каждого ВыделеннаяОбласть Из ВыделенныеОбласти Цикл
#Если Клиент Тогда
Если ТипЗнч(ВыделеннаяОбласть) <> Тип("ОбластьЯчеекТабличногоДокумента") Тогда
Продолжить;
КонецЕсли;
#КонецЕсли
ВыделеннаяОбластьВерх = ВыделеннаяОбласть.Верх;
ВыделеннаяОбластьНиз = ВыделеннаяОбласть.Низ;
ВыделеннаяОбластьЛево = ВыделеннаяОбласть.Лево;
ВыделеннаяОбластьПраво = ВыделеннаяОбласть.Право;
Если ВыделеннаяОбластьВерх = 0 Тогда
ВыделеннаяОбластьВерх = 1;
КонецЕсли;
Если ВыделеннаяОбластьНиз = 0 Тогда
ВыделеннаяОбластьНиз = ТабличныйДокумент.ВысотаТаблицы;
КонецЕсли;
Если ВыделеннаяОбластьЛево = 0 Тогда
ВыделеннаяОбластьЛево = 1;
КонецЕсли;
Если ВыделеннаяОбластьПраво = 0 Тогда
ВыделеннаяОбластьПраво = ТабличныйДокумент.ШиринаТаблицы;
КонецЕсли;
Если ВыделеннаяОбласть.ТипОбласти = ТипОбластиЯчеекТабличногоДокумента.Колонки Тогда
ВыделеннаяОбластьВерх = ВыделеннаяОбласть.Низ;
ВыделеннаяОбластьНиз = ТабличныйДокумент.ВысотаТаблицы;
КонецЕсли;
ВыделеннаяОбластьВысота = ВыделеннаяОбластьНиз - ВыделеннаяОбластьВерх;
ВыделеннаяОбластьШирина = ВыделеннаяОбластьПраво - ВыделеннаяОбластьЛево;
#Если Клиент И Не ТолстыйКлиентОбычноеПриложение Тогда
КоличествоВыделенныхЯчеек = КоличествоВыделенныхЯчеек + ВыделеннаяОбластьШирина * ВыделеннаяОбластьВысота;
Если КоличествоВыделенныхЯчеек >= 1000 Тогда
Возврат "<"; // Нужен вызов сервера.
КонецЕсли;
#КонецЕсли
Для НомерКолонки = ВыделеннаяОбластьЛево По ВыделеннаяОбластьПраво Цикл
Для НомерСтроки = ВыделеннаяОбластьВерх По ВыделеннаяОбластьНиз Цикл
Ячейка = ТабличныйДокумент.Область(НомерСтроки, НомерКолонки, НомерСтроки, НомерКолонки);
Если ПроверенныеЯчейки.Получить(Ячейка.Имя) = Неопределено Тогда
ПроверенныеЯчейки.Вставить(Ячейка.Имя, Истина);
Иначе
Продолжить;
КонецЕсли;
Если Ячейка.Видимость = Истина Тогда
Если Ячейка.ТипОбласти <> ТипОбластиЯчеекТабличногоДокумента.Колонки
И Ячейка.СодержитЗначение И ТипЗнч(Ячейка.Значение) = Тип("Число") Тогда
Число = Ячейка.Значение;
ИначеЕсли ЗначениеЗаполнено(Ячейка.Текст) Тогда
Число = СтроковыеФункцииКлиентСервер.СтрокаВЧисло(Ячейка.Текст);
Иначе
Продолжить;
КонецЕсли;
Если ТипЗнч(Число) = Тип("Число") Тогда
Если Сумма = Неопределено Тогда
Сумма = Число;
Иначе
Сумма = Сумма + Число;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецЦикла;
Если Сумма = Неопределено Тогда
Возврат ""; // Нет ни одного числа.
КонецЕсли;
Возврат Формат(Сумма, "ЧН=0");
КонецФункции
#КонецОбласти