Создание хранилища конфигурации

This commit is contained in:
2025-12-22 15:56:55 +03:00
commit 45c3a63eeb
23547 changed files with 7002312 additions and 0 deletions
@@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.20">
<SettingsStorage uuid="4f92a342-d268-481f-b9cc-fb7b264e3458">
<InternalInfo>
<xr:GeneratedType name="SettingsStorageManager.НастройкиОбработкиОценкаПроизводительности" category="Manager">
<xr:TypeId>64963fe4-3377-46d7-8317-6722b5ef05cb</xr:TypeId>
<xr:ValueId>25e055fb-ccb4-499f-bd53-053a49c25981</xr:ValueId>
</xr:GeneratedType>
</InternalInfo>
<Properties>
<Name>НастройкиОбработкиОценкаПроизводительности</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Настройки обработки оценка производительности</v8:content>
</v8:item>
</Synonym>
<Comment/>
<DefaultSaveForm/>
<DefaultLoadForm/>
<AuxiliarySaveForm/>
<AuxiliaryLoadForm/>
</Properties>
<ChildObjects/>
</SettingsStorage>
</MetaDataObject>
@@ -0,0 +1,40 @@
<?xml version="1.0" encoding="UTF-8"?>
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.20">
<SettingsStorage uuid="14512818-58b0-44cc-b00d-d37913c57aad">
<InternalInfo>
<xr:GeneratedType name="SettingsStorageManager.ХранилищеВариантовОтчетов" category="Manager">
<xr:TypeId>e7b45ef0-dd64-4bf4-ad7e-e773953e0441</xr:TypeId>
<xr:ValueId>223c7bbf-7abb-46b8-8323-63935852d02e</xr:ValueId>
</xr:GeneratedType>
</InternalInfo>
<Properties>
<Name>ХранилищеВариантовОтчетов</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Хранилище вариантов отчетов</v8:content>
</v8:item>
</Synonym>
<Comment/>
<DefaultSaveForm>SettingsStorage.ХранилищеВариантовОтчетов.Form.СохранениеВариантаОтчета</DefaultSaveForm>
<DefaultLoadForm>SettingsStorage.ХранилищеВариантовОтчетов.Form.ВыборВариантаОтчета</DefaultLoadForm>
<AuxiliarySaveForm/>
<AuxiliaryLoadForm/>
</Properties>
<ChildObjects>
<Form>БыстрыеНастройкиОтчета</Form>
<Form>ВыборВариантаОтчета</Form>
<Form>ВыборПоляОтчета</Form>
<Form>ВыборФинансовогоПериода</Form>
<Form>ВыборФинансовогоПериодаДень</Form>
<Form>ГруппаВыбранныхПолей</Form>
<Form>НастройкаПоля</Form>
<Form>ПанельДругихОтчетов</Form>
<Form>СохранениеВариантаОтчета</Form>
<Form>СохранениеВариантаОтчетаВФайл</Form>
<Form>УсловияОтборовОтчета</Form>
<Form>ФильтроватьПоПолю</Form>
<Form>ЭлементУсловногоОформленияОтчета</Form>
</ChildObjects>
</SettingsStorage>
</MetaDataObject>
@@ -0,0 +1,501 @@
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2023, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
#Область ОбработчикиСобытий
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
// Обработчик чтения настроек варианта отчета.
//
// Параметры:
// КлючОтчета - Строка - полное имя отчета с точкой.
// КлючВарианта - Строка - ключ варианта отчета.
// Настройки - Произвольный - настройки варианта отчета.
// ОписаниеНастроек - ОписаниеНастроек - дополнительное описание настроек.
// Пользователь - Строка - имя пользователя ИБ.
// Не используется, так как подсистема "Варианты отчетов" не разделяет варианты по авторам.
// Уникальность хранения и выборки гарантируется уникальностью пар ключей отчетов и вариантов.
//
// См. также:
// "ХранилищеНастроекМенеджер.<Имя хранилища>.ОбработкаЗагрузки" в синтакс-помощнике.
//
Процедура ОбработкаЗагрузки(КлючОтчета, КлючВарианта, Настройки, ОписаниеНастроек, Пользователь)
Если Не ВариантыОтчетовПовтИсп.ПравоЧтения() Тогда
Возврат;
КонецЕсли;
Если ТипЗнч(КлючОтчета) = Тип("Строка") Тогда
ОтчетИнформация = ВариантыОтчетов.ИнформацияОбОтчете(КлючОтчета, Истина);
ОтчетСсылка = ОтчетИнформация.Отчет;
Иначе
ОтчетСсылка = КлючОтчета;
КонецЕсли;
Запрос = Новый Запрос(
"ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1
| ВариантыОтчетов.Представление,
| ВариантыОтчетов.Настройки
|ИЗ
| Справочник.ВариантыОтчетов КАК ВариантыОтчетов
|ГДЕ
| ВариантыОтчетов.Отчет = &Отчет
| И ВариантыОтчетов.КлючВарианта = &КлючВарианта");
Запрос.УстановитьПараметр("Отчет", ОтчетСсылка);
Запрос.УстановитьПараметр("КлючВарианта", КлючВарианта);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Если ОписаниеНастроек = Неопределено Тогда
ОписаниеНастроек = Новый ОписаниеНастроек;
ОписаниеНастроек.КлючОбъекта = КлючОтчета;
ОписаниеНастроек.КлючНастроек = КлючВарианта;
ОписаниеНастроек.Пользователь = Пользователь;
КонецЕсли;
ОписаниеНастроек.Представление = Выборка.Представление;
Настройки = Выборка.Настройки.Получить();
КонецЕсли;
КонецПроцедуры
// Обработчик записи настроек варианта отчета.
//
// Параметры:
// КлючОтчета - Строка - полное имя отчета с точкой.
// КлючВарианта - Строка - ключ варианта отчета.
// Настройки - Произвольный - настройки варианта отчета.
// ОписаниеНастроек - ОписаниеНастроек - дополнительное описание настроек.
// Пользователь - Строка
// - Неопределено - имя пользователя ИБ.
// Не используется, так как подсистема "Варианты отчетов" не разделяет варианты по авторам.
// Уникальность хранения и выборки гарантируется уникальностью пар ключей отчетов и вариантов.
//
// См. также:
// "ХранилищеНастроекМенеджер.<Имя хранилища>.ОбработкаСохранения" в синтакс-помощнике.
//
Процедура ОбработкаСохранения(КлючОтчета, КлючВарианта, Настройки, ОписаниеНастроек, Пользователь)
Если Не ВариантыОтчетовПовтИсп.ПравоДобавления() Тогда
ВызватьИсключение НСтр("ru = 'Недостаточно прав для сохранения вариантов отчетов'");
КонецЕсли;
ОтчетИнформация = ВариантыОтчетов.ИнформацияОбОтчете(КлючОтчета, Истина);
Запрос = Новый Запрос(
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ВариантыОтчетов.Ссылка
|ИЗ
| Справочник.ВариантыОтчетов КАК ВариантыОтчетов
|ГДЕ
| ВариантыОтчетов.Отчет = &Отчет
| И ВариантыОтчетов.КлючВарианта = &КлючВарианта");
Запрос.УстановитьПараметр("Отчет", ОтчетИнформация.Отчет);
Запрос.УстановитьПараметр("КлючВарианта", КлючВарианта);
Выборка = Запрос.Выполнить().Выбрать();
Если Не Выборка.Следующий() Тогда
Возврат;
КонецЕсли;
СсылкаВарианта = Выборка.Ссылка;
НачатьТранзакцию();
Попытка
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить(Метаданные.Справочники.ВариантыОтчетов.ПолноеИмя());
ЭлементБлокировки.УстановитьЗначение("Ссылка", СсылкаВарианта);
Блокировка.Заблокировать();
ВариантОбъект = СсылкаВарианта.ПолучитьОбъект();
Если ТипЗнч(Настройки) = Тип("НастройкиКомпоновкиДанных") Тогда
Адрес = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Настройки.ДополнительныеСвойства, "Адрес");
Если ТипЗнч(Адрес) = Тип("Строка") И ЭтоАдресВременногоХранилища(Адрес) Тогда
НастройкиИзХранилища = ПолучитьИзВременногоХранилища(Адрес);
КонецЕсли;
Настройки.ДополнительныеСвойства.Удалить("Адрес");
Настройки = ?(НастройкиИзХранилища = Неопределено, Настройки, НастройкиИзХранилища);
Контекст = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Настройки.ДополнительныеСвойства, "КонтекстВарианта");
Если ЗначениеЗаполнено(Контекст) Тогда
ВариантОбъект.Контекст = Контекст;
КонецЕсли;
КонецЕсли;
ВариантОбъект.Настройки = Новый ХранилищеЗначения(Настройки);
Если ОписаниеНастроек <> Неопределено Тогда
ВариантОбъект.Наименование = ОписаниеНастроек.Представление;
КонецЕсли;
ВариантОбъект.Записать();
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ВызватьИсключение;
КонецПопытки;
КонецПроцедуры
// Обработчик получения описания настроек варианта отчета.
//
// Параметры:
// КлючОтчета - Строка - полное имя отчета с точкой.
// КлючВарианта - Строка - ключ варианта отчета.
// ОписаниеНастроек - ОписаниеНастроек - дополнительное описание настроек.
// Пользователь - Строка
// - Неопределено - имя пользователя ИБ.
// Не используется, так как подсистема "Варианты отчетов" не разделяет варианты по авторам.
// Уникальность хранения и выборки гарантируется уникальностью пар ключей отчетов и вариантов.
//
// См. также:
// "ХранилищеНастроекМенеджер.<Имя хранилища>.ОбработкаПолученияОписания" в синтакс-помощнике.
//
Процедура ОбработкаПолученияОписания(КлючОтчета, КлючВарианта, ОписаниеНастроек, Пользователь)
Если Не ВариантыОтчетовПовтИсп.ПравоЧтения() Тогда
Возврат;
КонецЕсли;
Если ТипЗнч(КлючОтчета) = Тип("Строка") Тогда
ОтчетИнформация = ВариантыОтчетов.ИнформацияОбОтчете(КлючОтчета, Истина);
ОтчетСсылка = ОтчетИнформация.Отчет;
Иначе
ОтчетСсылка = КлючОтчета;
КонецЕсли;
Если ОписаниеНастроек = Неопределено Тогда
ОписаниеНастроек = Новый ОписаниеНастроек;
КонецЕсли;
ОписаниеНастроек.КлючОбъекта = КлючОтчета;
ОписаниеНастроек.КлючНастроек = КлючВарианта;
Если ТипЗнч(Пользователь) = Тип("Строка") Тогда
ОписаниеНастроек.Пользователь = Пользователь;
КонецЕсли;
Запрос = Новый Запрос(
"ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1
| Варианты.Представление,
| Варианты.ПометкаУдаления,
| Варианты.Пользовательский
|ИЗ
| Справочник.ВариантыОтчетов КАК Варианты
|ГДЕ
| Варианты.Отчет = &Отчет
| И Варианты.КлючВарианта = &КлючВарианта");
Запрос.УстановитьПараметр("Отчет", ОтчетСсылка);
Запрос.УстановитьПараметр("КлючВарианта", КлючВарианта);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
ОписаниеНастроек.Представление = Выборка.Представление;
ОписаниеНастроек.ДополнительныеСвойства.Вставить("ПометкаУдаления", Выборка.ПометкаУдаления);
ОписаниеНастроек.ДополнительныеСвойства.Вставить("Пользовательский", Выборка.Пользовательский);
КонецЕсли;
КонецПроцедуры
// Обработчик установки описания настроек варианта отчета.
//
// Параметры:
// КлючОтчета - Строка - полное имя отчета с точкой.
// КлючВарианта - Строка - ключ варианта отчета.
// ОписаниеНастроек - ОписаниеНастроек - дополнительное описание настроек.
// Пользователь - Строка - имя пользователя ИБ.
// Не используется, так как подсистема "Варианты отчетов" не разделяет варианты по авторам.
// Уникальность хранения и выборки гарантируется уникальностью пар ключей отчетов и вариантов.
//
// См. также:
// "ХранилищеНастроекМенеджер.<Имя хранилища>.ОбработкаУстановкиОписания" в синтакс-помощнике.
//
Процедура ОбработкаУстановкиОписания(КлючОтчета, КлючВарианта, ОписаниеНастроек, Пользователь)
Если Не ВариантыОтчетовПовтИсп.ПравоДобавления() Тогда
ВызватьИсключение НСтр("ru = 'Недостаточно прав для сохранения вариантов отчетов'");
КонецЕсли;
Если ТипЗнч(КлючОтчета) = Тип("Строка") Тогда
ОтчетИнформация = ВариантыОтчетов.ИнформацияОбОтчете(КлючОтчета, Истина);
ОтчетСсылка = ОтчетИнформация.Отчет;
Иначе
ОтчетСсылка = КлючОтчета;
КонецЕсли;
Запрос = Новый Запрос(
"ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1
| Варианты.Ссылка
|ИЗ
| Справочник.ВариантыОтчетов КАК Варианты
|ГДЕ
| Варианты.Отчет = &Отчет
| И Варианты.КлючВарианта = &КлючВарианта");
Запрос.УстановитьПараметр("Отчет", ОтчетСсылка);
Запрос.УстановитьПараметр("КлючВарианта", КлючВарианта);
Выборка = Запрос.Выполнить().Выбрать();
Если Не Выборка.Следующий() Тогда
Возврат;
КонецЕсли;
СсылкаВарианта = Выборка.Ссылка;
НачатьТранзакцию();
Попытка
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить(Метаданные.Справочники.ВариантыОтчетов.ПолноеИмя());
ЭлементБлокировки.УстановитьЗначение("Ссылка", СсылкаВарианта);
Блокировка.Заблокировать();
ВариантОбъект = СсылкаВарианта.ПолучитьОбъект();
ВариантОбъект.Наименование = ОписаниеНастроек.Представление;
ВариантОбъект.Записать();
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ВызватьИсключение;
КонецПопытки;
КонецПроцедуры
#КонецЕсли
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
// АПК:361-выкл В инструкцию препроцессора обернута не вся функция, а только ее реализация, чтобы она всегда возвращала
// значение типа СписокЗначений
// Возвращает список вариантов отчета пользователя.
//
Функция ПолучитьСписок(КлючОтчета, Знач Пользователь = Неопределено) Экспорт // АПК:307 Является аналогом метода стандартного хранилища настроек
Список = Новый СписокЗначений;
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
ВариантыОтчетовАвтора = ВариантыОтчетовАвтора(КлючОтчета, Пользователь);
Если ВариантыОтчетовАвтора <> Неопределено Тогда
Для Каждого Строка Из ВариантыОтчетовАвтора Цикл
Список.Добавить(Строка.КлючВарианта, Строка.Наименование);
КонецЦикла;
КонецЕсли;
#КонецЕсли
Возврат Список;
КонецФункции
// АПК:361-вкл
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
// Параметры:
// КлючОтчета - СправочникСсылка.ИдентификаторыОбъектовМетаданных
// - СправочникСсылка.ИдентификаторыОбъектовРасширений
// - СправочникСсылка.ДополнительныеОтчетыИОбработки
// - Строка
// Автор - СправочникСсылка.Пользователи
// - СправочникСсылка.ВнешниеПользователи
// - УникальныйИдентификатор
//
// Возвращаемое значение:
// - Неопределено
// - ТаблицаЗначений:
// * КлючВарианта - Строка
// * Наименование - Строка
//
Функция ВариантыОтчетовАвтора(КлючОтчета, Автор)
Если ТипЗнч(КлючОтчета) = Тип("Строка") Тогда
ОтчетИнформация = ВариантыОтчетов.ИнформацияОбОтчете(КлючОтчета, Истина);
Отчет = ОтчетИнформация.Отчет;
Иначе
Отчет = КлючОтчета;
КонецЕсли;
Запрос = Новый Запрос(
"ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
| Варианты.КлючВарианта,
| Варианты.Наименование
|ИЗ
| Справочник.ВариантыОтчетов КАК Варианты
|ГДЕ
| Варианты.Отчет = &Отчет
| И Варианты.Автор = &Автор
| И Варианты.Автор.ИдентификаторПользователяИБ = &GUID
| И НЕ Варианты.ПометкаУдаления
| И Варианты.Пользовательский");
Запрос.УстановитьПараметр("Отчет", Отчет);
Если Автор = "" Тогда
Автор = Пользователи.СсылкаНеуказанногоПользователя();
ИначеЕсли Автор = Неопределено Тогда
Автор = Пользователи.АвторизованныйПользователь();
КонецЕсли;
Если ТипЗнч(Автор) = Тип("СправочникСсылка.Пользователи") Тогда
Запрос.УстановитьПараметр("Автор", Автор);
Запрос.Текст = СтрЗаменить(Запрос.Текст, "И Варианты.Автор.ИдентификаторПользователяИБ = &GUID", ""); // @query-part-1
Иначе
Если ТипЗнч(Автор) = Тип("УникальныйИдентификатор") Тогда
ИдентификаторПользователя = Автор;
Иначе
Если ТипЗнч(Автор) = Тип("Строка") Тогда
УстановитьПривилегированныйРежим(Истина);
ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоИмени(Автор);
УстановитьПривилегированныйРежим(Ложь);
Если ПользовательИБ = Неопределено Тогда
Возврат Неопределено;
КонецЕсли;
ИначеЕсли ТипЗнч(Автор) = Тип("ПользовательИнформационнойБазы") Тогда
ПользовательИБ = Автор;
Иначе
Возврат Неопределено;
КонецЕсли;
ИдентификаторПользователя = ПользовательИБ.УникальныйИдентификатор;
КонецЕсли;
Запрос.УстановитьПараметр("GUID", ИдентификаторПользователя);
Запрос.Текст = СтрЗаменить(Запрос.Текст, "И Варианты.Автор = &Автор", ""); // @query-part-1
КонецЕсли;
Возврат Запрос.Выполнить().Выгрузить();
КонецФункции
#КонецЕсли
Процедура Удалить(КлючОтчета, КлючВарианта, Знач Пользователь) Экспорт
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
ТекстЗапроса =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
| Варианты.Ссылка
|ИЗ
| Справочник.ВариантыОтчетов КАК Варианты
|ГДЕ
| Варианты.Отчет = &Отчет
| И Варианты.Автор = &Автор
| И Варианты.Автор.ИдентификаторПользователяИБ = &GUID
| И Варианты.КлючВарианта = &КлючВарианта
| И НЕ Варианты.ПометкаУдаления
| И Варианты.Пользовательский";
Запрос = Новый Запрос;
Если КлючОтчета = Неопределено Тогда
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "Варианты.Отчет = &Отчет", "ИСТИНА");
Иначе
ОтчетИнформация = ВариантыОтчетов.ИнформацияОбОтчете(КлючОтчета, Истина);
Запрос.УстановитьПараметр("Отчет", ОтчетИнформация.Отчет);
КонецЕсли;
Если КлючВарианта = Неопределено Тогда
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "И Варианты.КлючВарианта = &КлючВарианта", ""); // @query-part-1
Иначе
Запрос.УстановитьПараметр("КлючВарианта", КлючВарианта);
КонецЕсли;
Если Пользователь = "" Тогда
Пользователь = Пользователи.СсылкаНеуказанногоПользователя();
КонецЕсли;
Если Пользователь = Неопределено Тогда
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "И Варианты.Автор = &Автор", ""); // @query-part-1
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "И Варианты.Автор.ИдентификаторПользователяИБ = &GUID", ""); // @query-part-1
ИначеЕсли ТипЗнч(Пользователь) = Тип("СправочникСсылка.Пользователи") Тогда
Запрос.УстановитьПараметр("Автор", Пользователь);
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "И Варианты.Автор.ИдентификаторПользователяИБ = &GUID", ""); // @query-part-1
Иначе
Если ТипЗнч(Пользователь) = Тип("УникальныйИдентификатор") Тогда
ИдентификаторПользователя = Пользователь;
Иначе
Если ТипЗнч(Пользователь) = Тип("Строка") Тогда
УстановитьПривилегированныйРежим(Истина);
ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоИмени(Пользователь);
УстановитьПривилегированныйРежим(Ложь);
Если ПользовательИБ = Неопределено Тогда
Возврат;
КонецЕсли;
ИначеЕсли ТипЗнч(Пользователь) = Тип("ПользовательИнформационнойБазы") Тогда
ПользовательИБ = Пользователь;
Иначе
Возврат;
КонецЕсли;
ИдентификаторПользователя = ПользовательИБ.УникальныйИдентификатор;
КонецЕсли;
Запрос.УстановитьПараметр("GUID", ИдентификаторПользователя);
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "И Варианты.Автор = &Автор", "");
КонецЕсли;
Запрос.Текст = ТекстЗапроса;
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
ВариантОбъект = Выборка.Ссылка.ПолучитьОбъект();
ВариантОбъект.УстановитьПометкуУдаления(Истина);
КонецЦикла;
#КонецЕсли
КонецПроцедуры
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
// Параметры:
// ВариантыОтчета - см. ВариантыОтчетов.ИсходнаяТаблицаВариантовОтчетов
// ПолноеИмяОтчета - Строка
// ИмяОтчета - Строка
//
// Возвращаемое значение:
// Булево
//
Функция ДобавитьВариантыВнешнегоОтчета(ВариантыОтчета, ПолноеИмяОтчета, ИмяОтчета) Экспорт
Попытка
ОтчетОбъект = ОтчетыСервер.ОтчетОбъект(ПолноеИмяОтчета);
Исключение
ШаблонСообщения = НСтр("ru = 'Не удалось получить список предопределенных вариантов внешнего отчета ""%1"":%2%3'");
Сообщение = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
ШаблонСообщения, ИмяОтчета, Символы.ПС, ОбработкаОшибок.ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
ВариантыОтчетов.ЗаписатьВЖурнал(УровеньЖурналаРегистрации.Ошибка, Сообщение, ПолноеИмяОтчета);
Возврат Ложь;
КонецПопытки;
Если ОтчетОбъект.СхемаКомпоновкиДанных = Неопределено Тогда
Возврат Ложь;
КонецЕсли;
Для Каждого ВариантНастроекКД Из ОтчетОбъект.СхемаКомпоновкиДанных.ВариантыНастроек Цикл
Вариант = ВариантыОтчета.Добавить();
Вариант.Пользовательский = Ложь;
Вариант.Наименование = ВариантНастроекКД.Представление;
Вариант.КлючВарианта = ВариантНастроекКД.Имя;
Вариант.ТолькоДляАвтора = Ложь;
Вариант.АвторТекущийПользователь = Ложь;
Вариант.Порядок = 1;
Вариант.ИндексКартинки = 5;
КонецЦикла;
Возврат Истина;
КонецФункции
#КонецЕсли
#КонецОбласти
@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.20">
<Form uuid="077e2c42-bc3b-48bf-bbc2-41effe20f613">
<Properties>
<Name>БыстрыеНастройкиОтчета</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Быстрые настройки</v8:content>
</v8:item>
</Synonym>
<Comment/>
<FormType>Managed</FormType>
<IncludeHelpInContents>false</IncludeHelpInContents>
<UsePurposes>
<v8:Value xsi:type="app:ApplicationUsePurpose">PlatformApplication</v8:Value>
<v8:Value xsi:type="app:ApplicationUsePurpose">MobilePlatformApplication</v8:Value>
</UsePurposes>
</Properties>
</Form>
</MetaDataObject>
@@ -0,0 +1,555 @@
<?xml version="1.0" encoding="UTF-8"?>
<Form xmlns="http://v8.1c.ru/8.3/xcf/logform" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:dcscor="http://v8.1c.ru/8.1/data-composition-system/core" xmlns:dcssch="http://v8.1c.ru/8.1/data-composition-system/schema" xmlns:dcsset="http://v8.1c.ru/8.1/data-composition-system/settings" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.20">
<WindowOpeningMode>LockOwnerWindow</WindowOpeningMode>
<AutoTitle>false</AutoTitle>
<CommandBarLocation>Bottom</CommandBarLocation>
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1">
<HorizontalAlign>Right</HorizontalAlign>
<Autofill>false</Autofill>
</AutoCommandBar>
<Events>
<Event name="OnOpen">ПриОткрытии</Event>
<Event name="OnCreateAtServer">ПриСозданииНаСервере</Event>
</Events>
<ChildItems>
<Table name="БыстрыеНастройки" id="1">
<Representation>List</Representation>
<ChangeRowSet>false</ChangeRowSet>
<RowSelectionMode>Row</RowSelectionMode>
<Header>false</Header>
<HorizontalLines>false</HorizontalLines>
<VerticalLines>false</VerticalLines>
<UseAlternationRowColor>true</UseAlternationRowColor>
<AutoInsertNewRow>true</AutoInsertNewRow>
<EnableStartDrag>true</EnableStartDrag>
<EnableDrag>true</EnableDrag>
<DataPath>БыстрыеНастройки</DataPath>
<RowPictureDataPath>БыстрыеНастройки.КартинкаНастройки</RowPictureDataPath>
<RowsPicture>
<xr:Ref>CommonPicture.ПиктограммыНастроекОтчета</xr:Ref>
<xr:LoadTransparent>false</xr:LoadTransparent>
</RowsPicture>
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Быстрые настройки</v8:content>
</v8:item>
</Title>
<CommandSet>
<ExcludedCommand>Add</ExcludedCommand>
<ExcludedCommand>Change</ExcludedCommand>
<ExcludedCommand>Copy</ExcludedCommand>
<ExcludedCommand>CopyToClipboard</ExcludedCommand>
<ExcludedCommand>Delete</ExcludedCommand>
<ExcludedCommand>EndEdit</ExcludedCommand>
<ExcludedCommand>SelectAll</ExcludedCommand>
<ExcludedCommand>ShowMultipleSelection</ExcludedCommand>
<ExcludedCommand>ShowRowRearrangement</ExcludedCommand>
</CommandSet>
<SearchStringLocation>CommandBar</SearchStringLocation>
<RowFilter xsi:nil="true"/>
<ContextMenu name="БыстрыеНастройкиКонтекстноеМеню" id="2">
<ChildItems>
<ButtonGroup name="БыстрыеНастройкиКонтекстноеМенюГруппаПоиск" id="59">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Поиск</v8:content>
</v8:item>
</Title>
<ExtendedTooltip name="БыстрыеНастройкиКонтекстноеМенюГруппаПоискРасширеннаяПодсказка" id="60"/>
<ChildItems>
<Button name="БыстрыеНастройкиКонтекстноеМенюПоискПоТекущемуЗначению" id="61">
<Type>CommandBarButton</Type>
<CommandName>Form.Item.БыстрыеНастройки.StandardCommand.OutputList</CommandName>
<LocationInCommandBar>InCommandBarAndInAdditionalSubmenu</LocationInCommandBar>
<ExtendedTooltip name="БыстрыеНастройкиКонтекстноеМенюПоискПоТекущемуЗначениюРасширеннаяПодсказка" id="62"/>
</Button>
<Button name="БыстрыеНастройкиКонтекстноеМенюНайти" id="63">
<Type>CommandBarButton</Type>
<CommandName>Form.Item.БыстрыеНастройки.StandardCommand.Find</CommandName>
<LocationInCommandBar>InCommandBarAndInAdditionalSubmenu</LocationInCommandBar>
<ExtendedTooltip name="БыстрыеНастройкиКонтекстноеМенюНайтиРасширеннаяПодсказка" id="64"/>
</Button>
<Button name="БыстрыеНастройкиКонтекстноеМенюОтменитьПоиск" id="65">
<Type>CommandBarButton</Type>
<CommandName>Form.Item.БыстрыеНастройки.StandardCommand.CancelSearch</CommandName>
<LocationInCommandBar>InCommandBarAndInAdditionalSubmenu</LocationInCommandBar>
<ExtendedTooltip name="БыстрыеНастройкиКонтекстноеМенюОтменитьПоискРасширеннаяПодсказка" id="66"/>
</Button>
</ChildItems>
</ButtonGroup>
<ButtonGroup name="БыстрыеНастройкиКонтекстноеМенюГруппаПеремещение" id="77">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Перемещение</v8:content>
</v8:item>
</Title>
<Representation>Compact</Representation>
<ExtendedTooltip name="БыстрыеНастройкиКонтекстноеМенюГруппаПеремещениеРасширеннаяПодсказка" id="78"/>
<ChildItems>
<Button name="БыстрыеНастройкиКонтекстноеМенюПереместитьВверх" id="85">
<Type>CommandBarButton</Type>
<CommandName>Form.Item.БыстрыеНастройки.StandardCommand.MoveUp</CommandName>
<LocationInCommandBar>InCommandBarAndInAdditionalSubmenu</LocationInCommandBar>
<ExtendedTooltip name="БыстрыеНастройкиКонтекстноеМенюПереместитьВверхРасширеннаяПодсказка" id="86"/>
</Button>
<Button name="БыстрыеНастройкиКонтекстноеМенюПереместитьВниз" id="87">
<Type>CommandBarButton</Type>
<CommandName>Form.Item.БыстрыеНастройки.StandardCommand.MoveDown</CommandName>
<LocationInCommandBar>InCommandBarAndInAdditionalSubmenu</LocationInCommandBar>
<ExtendedTooltip name="БыстрыеНастройкиКонтекстноеМенюПереместитьВнизРасширеннаяПодсказка" id="88"/>
</Button>
</ChildItems>
</ButtonGroup>
<ButtonGroup name="БыстрыеНастройкиКонтекстноеМенюГруппаСортировка" id="79">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Сортировка</v8:content>
</v8:item>
</Title>
<Representation>Compact</Representation>
<ExtendedTooltip name="БыстрыеНастройкиКонтекстноеМенюГруппаСортировкаРасширеннаяПодсказка" id="80"/>
<ChildItems>
<Button name="БыстрыеНастройкиКонтекстноеМенюСортироватьСписокПоВозрастанию" id="89">
<Type>CommandBarButton</Type>
<CommandName>Form.Item.БыстрыеНастройки.StandardCommand.SortListAsc</CommandName>
<LocationInCommandBar>InCommandBarAndInAdditionalSubmenu</LocationInCommandBar>
<ExtendedTooltip name="БыстрыеНастройкиКонтекстноеМенюСортироватьСписокПоВозрастаниюРасширеннаяПодсказка" id="90"/>
</Button>
<Button name="БыстрыеНастройкиКонтекстноеМенюСортироватьСписокПоУбыванию" id="91">
<Type>CommandBarButton</Type>
<CommandName>Form.Item.БыстрыеНастройки.StandardCommand.SortListDesc</CommandName>
<LocationInCommandBar>InCommandBarAndInAdditionalSubmenu</LocationInCommandBar>
<ExtendedTooltip name="БыстрыеНастройкиКонтекстноеМенюСортироватьСписокПоУбываниюРасширеннаяПодсказка" id="92"/>
</Button>
</ChildItems>
</ButtonGroup>
<Button name="БыстрыеНастройкиКонтекстноеМенюВывестиСписок" id="73">
<Type>CommandBarButton</Type>
<CommandName>Form.Item.БыстрыеНастройки.StandardCommand.OutputList</CommandName>
<LocationInCommandBar>InCommandBarAndInAdditionalSubmenu</LocationInCommandBar>
<ExtendedTooltip name="БыстрыеНастройкиКонтекстноеМенюВывестиСписокРасширеннаяПодсказка" id="74"/>
</Button>
</ChildItems>
</ContextMenu>
<AutoCommandBar name="БыстрыеНастройкиКоманднаяПанель" id="3">
<ChildItems>
<ButtonGroup name="БыстрыеНастройкиГруппаИзменитьПометки" id="40">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Изменить пометки</v8:content>
</v8:item>
</Title>
<Representation>Compact</Representation>
<ExtendedTooltip name="БыстрыеНастройкиГруппаИзменитьПометкиРасширеннаяПодсказка" id="41"/>
<ChildItems>
<Button name="БыстрыеНастройкиУстановитьПометку" id="42">
<Type>CommandBarButton</Type>
<CommandName>Form.Command.УстановитьПометку</CommandName>
<LocationInCommandBar>InCommandBarAndInAdditionalSubmenu</LocationInCommandBar>
<ExtendedTooltip name="БыстрыеНастройкиУстановитьПометкуРасширеннаяПодсказка" id="43"/>
</Button>
<Button name="БыстрыеНастройкиСнятьПометку" id="44">
<Type>CommandBarButton</Type>
<CommandName>Form.Command.СнятьПометку</CommandName>
<LocationInCommandBar>InCommandBarAndInAdditionalSubmenu</LocationInCommandBar>
<ExtendedTooltip name="БыстрыеНастройкиСнятьПометкуРасширеннаяПодсказка" id="45"/>
</Button>
</ChildItems>
</ButtonGroup>
<ButtonGroup name="БыстрыеНастройкиГруппаПеремещение" id="75">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Перемещение</v8:content>
</v8:item>
</Title>
<Representation>Compact</Representation>
<ExtendedTooltip name="БыстрыеНастройкиГруппаПеремещениеРасширеннаяПодсказка" id="76"/>
<ChildItems>
<Button name="БыстрыеНастройкиПереместитьВверх" id="81">
<Type>CommandBarButton</Type>
<CommandName>Form.Item.БыстрыеНастройки.StandardCommand.MoveUp</CommandName>
<LocationInCommandBar>InCommandBarAndInAdditionalSubmenu</LocationInCommandBar>
<ExtendedTooltip name="БыстрыеНастройкиПереместитьВверхРасширеннаяПодсказка" id="82"/>
</Button>
<Button name="БыстрыеНастройкиПереместитьВниз" id="83">
<Type>CommandBarButton</Type>
<CommandName>Form.Item.БыстрыеНастройки.StandardCommand.MoveDown</CommandName>
<LocationInCommandBar>InCommandBarAndInAdditionalSubmenu</LocationInCommandBar>
<ExtendedTooltip name="БыстрыеНастройкиПереместитьВнизРасширеннаяПодсказка" id="84"/>
</Button>
</ChildItems>
</ButtonGroup>
</ChildItems>
</AutoCommandBar>
<ExtendedTooltip name="БыстрыеНастройкиРасширеннаяПодсказка" id="4"/>
<SearchStringAddition name="БыстрыеНастройкиСтрокаПоиска" id="5">
<AdditionSource>
<Item>БыстрыеНастройки</Item>
<Type>SearchStringRepresentation</Type>
</AdditionSource>
<ContextMenu name="БыстрыеНастройкиСтрокаПоискаКонтекстноеМеню" id="6"/>
<ExtendedTooltip name="БыстрыеНастройкиСтрокаПоискаРасширеннаяПодсказка" id="7"/>
</SearchStringAddition>
<ViewStatusAddition name="БыстрыеНастройкиСостояниеПросмотра" id="8">
<AdditionSource>
<Item>БыстрыеНастройки</Item>
<Type>ViewStatusRepresentation</Type>
</AdditionSource>
<ContextMenu name="БыстрыеНастройкиСостояниеПросмотраКонтекстноеМеню" id="9"/>
<ExtendedTooltip name="БыстрыеНастройкиСостояниеПросмотраРасширеннаяПодсказка" id="10"/>
</ViewStatusAddition>
<SearchControlAddition name="БыстрыеНастройкиУправлениеПоиском" id="11">
<AdditionSource>
<Item>БыстрыеНастройки</Item>
<Type>SearchControl</Type>
</AdditionSource>
<ContextMenu name="БыстрыеНастройкиУправлениеПоискомКонтекстноеМеню" id="12"/>
<ExtendedTooltip name="БыстрыеНастройкиУправлениеПоискомРасширеннаяПодсказка" id="13"/>
</SearchControlAddition>
<Events>
<Event name="Selection">БыстрыеНастройкиВыбор</Event>
<Event name="OnChange">БыстрыеНастройкиПриИзменении</Event>
</Events>
<ChildItems>
<ColumnGroup name="БыстрыеНастройкиГруппаНастройка" id="38">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Настройка</v8:content>
</v8:item>
</Title>
<Group>InCell</Group>
<ExtendedTooltip name="БыстрыеНастройкиГруппаНастройкаРасширеннаяПодсказка" id="39"/>
<ChildItems>
<CheckBoxField name="БыстрыеНастройкиПометка" id="14">
<DataPath>БыстрыеНастройки.Пометка</DataPath>
<TitleLocation>None</TitleLocation>
<EditMode>EnterOnInput</EditMode>
<CheckBoxType>Auto</CheckBoxType>
<ContextMenu name="БыстрыеНастройкиПометкаКонтекстноеМеню" id="15"/>
<ExtendedTooltip name="БыстрыеНастройкиПометкаРасширеннаяПодсказка" id="16"/>
<Events>
<Event name="OnChange">БыстрыеНастройкиПометкаПриИзменении</Event>
</Events>
</CheckBoxField>
<PictureField name="БыстрыеНастройкиКартинкаНастройки" id="56">
<DataPath>БыстрыеНастройки.КартинкаНастройки</DataPath>
<TitleLocation>None</TitleLocation>
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="БыстрыеНастройкиКартинкаНастройкиКонтекстноеМеню" id="57"/>
<ExtendedTooltip name="БыстрыеНастройкиКартинкаНастройкиРасширеннаяПодсказка" id="58"/>
</PictureField>
<InputField name="БыстрыеНастройкиЗаголовок" id="20">
<DataPath>БыстрыеНастройки.Заголовок</DataPath>
<ReadOnly>true</ReadOnly>
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Настройка</v8:content>
</v8:item>
</Title>
<EditMode>EnterOnInput</EditMode>
<Width>25</Width>
<ContextMenu name="БыстрыеНастройкиЗаголовокКонтекстноеМеню" id="21"/>
<ExtendedTooltip name="БыстрыеНастройкиЗаголовокРасширеннаяПодсказка" id="22"/>
</InputField>
</ChildItems>
</ColumnGroup>
<InputField name="БыстрыеНастройкиВидСравнения" id="93">
<DataPath>БыстрыеНастройки.ВидСравнения</DataPath>
<ReadOnly>true</ReadOnly>
<EditMode>EnterOnInput</EditMode>
<CellHyperlink>true</CellHyperlink>
<Width>12</Width>
<AutoMaxWidth>false</AutoMaxWidth>
<MaxWidth>12</MaxWidth>
<ContextMenu name="БыстрыеНастройкиВидСравненияКонтекстноеМеню" id="94"/>
<ExtendedTooltip name="БыстрыеНастройкиВидСравненияРасширеннаяПодсказка" id="95"/>
</InputField>
</ChildItems>
</Table>
<CheckBoxField name="ВыводитьЗаголовкиНастроек" id="106">
<DataPath>ВыводитьЗаголовкиНастроек</DataPath>
<TitleLocation>Right</TitleLocation>
<CheckBoxType>Auto</CheckBoxType>
<ContextMenu name="ВыводитьЗаголовкиНастроекКонтекстноеМеню" id="107"/>
<ExtendedTooltip name="ВыводитьЗаголовкиНастроекРасширеннаяПодсказка" id="108"/>
</CheckBoxField>
<UsualGroup name="КоманднаяПанель" id="96">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Командная панель</v8:content>
</v8:item>
</Title>
<Group>AlwaysHorizontal</Group>
<Behavior>Usual</Behavior>
<Representation>NormalSeparation</Representation>
<ShowTitle>false</ShowTitle>
<ExtendedTooltip name="КоманднаяПанельРасширеннаяПодсказка" id="97"/>
<ChildItems>
<UsualGroup name="ДополнительныеВозможности" id="109">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Дополнительные возможности</v8:content>
</v8:item>
</Title>
<VerticalStretch>true</VerticalStretch>
<Group>Vertical</Group>
<VerticalAlign>Center</VerticalAlign>
<Behavior>Usual</Behavior>
<Representation>None</Representation>
<ShowTitle>false</ShowTitle>
<ExtendedTooltip name="ДополнительныеВозможностиРасширеннаяПодсказка" id="110"/>
<ChildItems>
<Button name="ПерейтиКРасширеннымНастройкам" id="104">
<Type>Hyperlink</Type>
<CommandName>Form.Command.ПерейтиКРасширеннымНастройкам</CommandName>
<ExtendedTooltip name="ПерейтиКРасширеннымНастройкамРасширеннаяПодсказка" id="105"/>
</Button>
</ChildItems>
</UsualGroup>
<CommandBar name="КомандыОсновные" id="98">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Команды основные</v8:content>
</v8:item>
</Title>
<GroupVerticalAlign>Bottom</GroupVerticalAlign>
<HorizontalLocation>Right</HorizontalLocation>
<ExtendedTooltip name="КомандыОсновныеРасширеннаяПодсказка" id="99"/>
<ChildItems>
<Button name="Применить" id="100">
<Type>CommandBarButton</Type>
<DefaultButton>true</DefaultButton>
<CommandName>Form.Command.Применить</CommandName>
<ExtendedTooltip name="ПрименитьРасширеннаяПодсказка" id="101"/>
</Button>
<Button name="Отмена" id="102">
<Type>CommandBarButton</Type>
<CommandName>Form.StandardCommand.Cancel</CommandName>
<ExtendedTooltip name="ОтменаРасширеннаяПодсказка" id="103"/>
</Button>
</ChildItems>
</CommandBar>
</ChildItems>
</UsualGroup>
</ChildItems>
<Attributes>
<Attribute name="БыстрыеНастройки" id="1">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Быстрые настройки</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>v8:ValueTable</v8:Type>
</Type>
<Columns>
<Column name="Пометка" id="1">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Пометка</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>xs:boolean</v8:Type>
</Type>
</Column>
<Column name="Заголовок" id="6">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Заголовок</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>150</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Column>
<Column name="ИдентификаторПользовательскойНастройки" id="7">
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>150</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Column>
<Column name="ТипЗначения" id="10">
<Type>
<v8:Type>v8:TypeDescription</v8:Type>
</Type>
</Column>
<Column name="ТипНастройки" id="4">
<Type/>
</Column>
<Column name="КартинкаНастройки" id="8">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Картинка настройки</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>xs:decimal</v8:Type>
<v8:NumberQualifiers>
<v8:Digits>2</v8:Digits>
<v8:FractionDigits>0</v8:FractionDigits>
<v8:AllowedSign>Any</v8:AllowedSign>
</v8:NumberQualifiers>
</Type>
</Column>
<Column name="Порядок" id="2">
<Type>
<v8:Type>xs:decimal</v8:Type>
<v8:NumberQualifiers>
<v8:Digits>5</v8:Digits>
<v8:FractionDigits>0</v8:FractionDigits>
<v8:AllowedSign>Any</v8:AllowedSign>
</v8:NumberQualifiers>
</Type>
</Column>
<Column name="ВидСравнения" id="3">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Условие</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>dcsset:DataCompositionComparisonType</v8:Type>
</Type>
</Column>
<Column name="ДоступныеВидыСравнения" id="5">
<Type>
<v8:Type>v8:ValueListType</v8:Type>
</Type>
</Column>
</Columns>
</Attribute>
<Attribute name="КомпоновщикНастроек" id="2">
<Type>
<v8:Type>dcsset:SettingsComposer</v8:Type>
</Type>
</Attribute>
<Attribute name="НастройкиОтчета" id="3">
<Type/>
</Attribute>
<Attribute name="ВариантМодифицирован" id="4">
<Type>
<v8:Type>xs:boolean</v8:Type>
</Type>
</Attribute>
<Attribute name="КлючТекущегоВарианта" id="5">
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Attribute>
<Attribute name="ВыводитьЗаголовкиНастроек" id="6">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Выводить заголовки настроек</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>xs:boolean</v8:Type>
</Type>
</Attribute>
</Attributes>
<Commands>
<Command name="УстановитьПометку" id="1">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Установить пометку</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Включить в состав быстрых настроек</v8:content>
</v8:item>
</ToolTip>
<Picture>
<xr:Ref>StdPicture.CheckAll</xr:Ref>
<xr:LoadTransparent>true</xr:LoadTransparent>
</Picture>
<Action>УстановитьПометку</Action>
<Representation>Picture</Representation>
</Command>
<Command name="СнятьПометку" id="2">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Снять пометку</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Исключить из состава быстрых настроек</v8:content>
</v8:item>
</ToolTip>
<Picture>
<xr:Ref>StdPicture.UncheckAll</xr:Ref>
<xr:LoadTransparent>true</xr:LoadTransparent>
</Picture>
<Action>СнятьПометку</Action>
<Representation>Picture</Representation>
</Command>
<Command name="Применить" id="3">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Применить</v8:content>
</v8:item>
</Title>
<Action>Применить</Action>
</Command>
<Command name="ПерейтиКРасширеннымНастройкам" id="4">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Больше возможностей...</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Перейти к расширенным настройкам</v8:content>
</v8:item>
</ToolTip>
<Action>ПерейтиКРасширеннымНастройкам</Action>
</Command>
</Commands>
<Parameters>
<Parameter name="НастройкиОтчета">
<Type/>
</Parameter>
<Parameter name="КомпоновщикНастроек">
<Type>
<v8:Type>dcsset:SettingsComposer</v8:Type>
</Type>
</Parameter>
</Parameters>
</Form>
@@ -0,0 +1,669 @@
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2023, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
УстановитьУсловноеОформление();
ИнициализироватьДанныеФормы();
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ОбновитьЗаголовок();
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыБыстрыеНастройки
&НаКлиенте
Процедура БыстрыеНастройкиПриИзменении(Элемент)
ВариантМодифицирован = Истина;
КонецПроцедуры
&НаКлиенте
Процедура БыстрыеНастройкиВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
Если Элемент.ТекущийЭлемент = Элементы.БыстрыеНастройкиВидСравнения Тогда
ВыбратьВидСравнения(Элемент, СтандартнаяОбработка);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура БыстрыеНастройкиПометкаПриИзменении(Элемент)
Запись = Элементы.БыстрыеНастройки.ТекущиеДанные;
ИзменитьРежимОтображенияЭлементаНастроек(Запись);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура УстановитьПометку(Команда)
ИзменитьРежимОтображенияНастроек();
ВариантМодифицирован = Истина;
КонецПроцедуры
&НаКлиенте
Процедура СнятьПометку(Команда)
ИзменитьРежимОтображенияНастроек(Ложь);
ВариантМодифицирован = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ПерейтиКРасширеннымНастройкам(Команда)
НастройкиОтчета.ФормаНастроекРасширенныйРежим = 1;
ОписаниеНастроекОтчета = ОписаниеНастроекОтчета(НастройкиОтчета);
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("КлючВарианта", КлючТекущегоВарианта);
ПараметрыФормы.Вставить("Вариант", КомпоновщикНастроек.Настройки);
ПараметрыФормы.Вставить("ПользовательскиеНастройки", КомпоновщикНастроек.ПользовательскиеНастройки);
ПараметрыФормы.Вставить("НастройкиОтчета", НастройкиОтчета);
ПараметрыФормы.Вставить("ВариантНаименование", ОписаниеНастроекОтчета.Наименование);
ПараметрыФормы.Вставить("ИмяСтраницы", "СтраницаОтборы");
ПараметрыФормы.Вставить("СброситьПользовательскиеНастройки", Истина);
ОткрытьФорму(НастройкиОтчета.ПолноеИмя + ".ФормаНастроек", ПараметрыФормы, ВладелецФормы);
Закрыть();
КонецПроцедуры
&НаКлиенте
Процедура Применить(Команда)
СохранитьПорядокЭлементовНастроек();
Результат = Новый Структура;
Результат.Вставить("ИмяСобытия", ВариантыОтчетовСлужебныйКлиентСервер.ИмяСобытияИзмененияСоставаБыстрыхНастроек());
Результат.Вставить("КомпоновщикНастроекКД", КомпоновщикНастроек);
Результат.Вставить("ВариантМодифицирован", ВариантМодифицирован);
Результат.Вставить("СброситьПользовательскиеНастройки", ВариантМодифицирован);
Результат.Вставить("ПользовательскиеНастройкиМодифицированы", ВариантМодифицирован);
Результат.Вставить("ВыводитьЗаголовкиНастроек", ВыводитьЗаголовкиНастроек);
Закрыть(Результат);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
Процедура УстановитьУсловноеОформление()
УсловноеОформление.Элементы.Очистить();
//
Элемент = УсловноеОформление.Элементы.Добавить();
ГруппаОтбораЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбораЭлемента.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаОтбораЭлемента.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("БыстрыеНастройки.ТипНастройки");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно;
ОтборЭлемента.ПравоеЗначение = Тип("ЗначениеПараметраНастроекКомпоновкиДанных");
ОтборЭлемента = ГруппаОтбораЭлемента.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("БыстрыеНастройки.ТипНастройки");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно;
ОтборЭлемента.ПравоеЗначение = Тип("ЭлементОтбораКомпоновкиДанных");
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", "");
Элемент.Оформление.УстановитьЗначениеПараметра("Отображать", Ложь);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.БыстрыеНастройкиВидСравнения.Имя);
//
ЦветНедоступногоЗначения = Метаданные.ЭлементыСтиля.ТекстЗапрещеннойЯчейкиЦвет.Значение;
Элемент = УсловноеОформление.Элементы.Добавить();
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("БыстрыеНастройки.ТипНастройки");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Тип("ЗначениеПараметраНастроекКомпоновкиДанных");
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветНедоступногоЗначения);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.БыстрыеНастройкиВидСравнения.Имя);
КонецПроцедуры
#Область ИнициализацияДанныхФормы
&НаСервере
Процедура ИнициализироватьДанныеФормы()
ЗаполнитьЗначенияСвойств(ЭтотОбъект, Параметры, "НастройкиОтчета, КлючТекущегоВарианта, ВыводитьЗаголовкиНастроек");
КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(НастройкиОтчета.АдресСхемы));
КомпоновщикНастроек.ЗагрузитьНастройки(Параметры.КомпоновщикНастроек.ПолучитьНастройки());
ЗаполнитьБыстрыеНастройки();
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьБыстрыеНастройки()
СведенияОНастройках = ОтчетыСервер.СведенияОПользовательскихНастройках(КомпоновщикНастроек.Настройки);
Схема = ПолучитьИзВременногоХранилища(НастройкиОтчета.АдресСхемы);
ПорядокЭлементовНастроек = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(
КомпоновщикНастроек.Настройки.ДополнительныеСвойства, "ПорядокЭлементовНастроек", Новый Соответствие);
ПользовательскиеНастройки = КомпоновщикНастроек.ПользовательскиеНастройки.Элементы;
Для Каждого СведенияОНастройке Из СведенияОНастройках Цикл
ИдентификаторПользовательскойНастройки = СведенияОНастройке.Ключ;
ЭлементПользовательскихНастроек = ПользовательскиеНастройки.Найти(ИдентификаторПользовательскойНастройки);
Если ЭлементПользовательскихНастроек = Неопределено Тогда
Продолжить;
КонецЕсли;
Настройки = СведенияОНастройке.Значение.Настройки;
Если ТипЗнч(Настройки) <> Тип("НастройкиКомпоновкиДанных") Тогда
Настройки = КомпоновщикНастроек.Настройки;
КонецЕсли;
ОписаниеНастройки = СведенияОНастройке.Значение.ОписаниеНастройки;
ЭлементНастроек = СведенияОНастройке.Значение.ЭлементНастройки;
Если ПараметрСхемыВыключен(Схема, ЭлементНастроек) Тогда
Продолжить;
КонецЕсли;
ТипНастройки = ТипЗнч(ЭлементНастроек);
Если ТипНастройки = Тип("ОтборКомпоновкиДанных") Тогда
Продолжить;
КонецЕсли;
Запись = БыстрыеНастройки.Добавить();
Запись.Пометка = (ЭлементНастроек.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ);
Запись.Заголовок = ЗаголовокНастройки(ЭлементНастроек, ОписаниеНастройки, ТипНастройки, ЭлементПользовательскихНастроек);
Запись.ИдентификаторПользовательскойНастройки = ИдентификаторПользовательскойНастройки;
Запись.ТипНастройки = ТипНастройки;
Запись.КартинкаНастройки = КартинкаНастройки(ЭлементНастроек, ТипНастройки);
Если ОписаниеНастройки <> Неопределено Тогда
Запись.ТипЗначения = ОписаниеНастройки.ТипЗначения;
КонецЕсли;
УстановитьУсловиеФильтра(Запись, ОписаниеНастройки, ТипНастройки, ИдентификаторПользовательскойНастройки);
ПорядокЭлемента = ПорядокЭлементовНастроек[ИдентификаторПользовательскойНастройки];
Если ПорядокЭлемента <> Неопределено Тогда
Запись.Порядок = ПорядокЭлемента;
КонецЕсли;
КонецЦикла;
БыстрыеНастройки.Сортировать("Порядок");
НайденныеЗаписи = БыстрыеНастройки.НайтиСтроки(Новый Структура("Порядок", 0));
Если НайденныеЗаписи.Количество() = 0 Тогда
Возврат;
КонецЕсли;
Порядок = БыстрыеНастройки[БыстрыеНастройки.Количество() - 1].Порядок;
Для Каждого Запись Из НайденныеЗаписи Цикл
Порядок = Порядок + 1;
Запись.Порядок = Порядок;
КонецЦикла;
БыстрыеНастройки.Сортировать("Порядок");
КонецПроцедуры
// Параметры:
// Схема - СхемаКомпоновкиДанных
// ЭлементНастроек - ЗначениеПараметраНастроекКомпоновкиДанных
//
// Возвращаемое значение:
// Булево
//
&НаСервере
Функция ПараметрСхемыВыключен(Схема, ЭлементНастроек)
Если ТипЗнч(ЭлементНастроек) <> Тип("ЗначениеПараметраНастроекКомпоновкиДанных") Тогда
Возврат Ложь;
КонецЕсли;
ПараметрСхемы = Схема.Параметры.Найти(Строка(ЭлементНастроек.Параметр));
Если ПараметрСхемы = Неопределено Тогда
Возврат Ложь;
КонецЕсли;
Возврат ПараметрСхемы.ОграничениеИспользования;
КонецФункции
&НаСервере
Функция ЗаголовокНастройки(ЭлементНастроек, ОписаниеНастройки, ТипНастройки, ЭлементПользовательскихНастроек)
ЗначениеНастройки = ЗначениеНастройки(ЭлементНастроек, ОписаниеНастройки, ТипНастройки, ЭлементПользовательскихНастроек);
ПредставлениеНастройки = ПредставлениеНастройки(ЭлементНастроек, ОписаниеНастройки, ТипНастройки);
Если ЗначениеЗаполнено(ЗначениеНастройки)
И ЗначениеНастройки <> ПредставлениеНастройки Тогда
Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = '%1 (%2)'"), ЗначениеНастройки, ПредставлениеНастройки);
КонецЕсли;
Возврат ПредставлениеНастройки;
КонецФункции
&НаСервере
Функция ЗначениеНастройки(ЭлементНастроек, ОписаниеНастройки, ТипНастройки, ЭлементПользовательскихНастроек)
ЗначениеНастройки = Неопределено;
ИмяПоляНастройки = Неопределено;
Если ТипНастройки = Тип("ЗначениеПараметраНастроекКомпоновкиДанных")
И ТипЗнч(ЭлементПользовательскихНастроек.Значение) <> Тип("Булево") Тогда
ЗначениеНастройки = ЭлементПользовательскихНастроек.Значение;
ИмяПоляНастройки = Строка(ЭлементНастроек.Параметр);
ИначеЕсли ТипНастройки = Тип("ЭлементОтбораКомпоновкиДанных")
И Не (ТипЗнч(ЭлементПользовательскихНастроек.ПравоеЗначение) = Тип("Булево")
И ЗначениеЗаполнено(ЭлементНастроек.Представление)) Тогда
ЗначениеНастройки = ЭлементПользовательскихНастроек.ПравоеЗначение;
ИмяПоляНастройки = Строка(ЭлементНастроек.ЛевоеЗначение);
Иначе
Возврат ЗначениеНастройки;
КонецЕсли;
Если ОписаниеНастройки <> Неопределено
И ОписаниеНастройки.ДоступныеЗначения <> Неопределено Тогда
ДоступноеЗначение = ОписаниеНастройки.ДоступныеЗначения.НайтиПоЗначению(ЗначениеНастройки);
Если ДоступноеЗначение <> Неопределено
И ЗначениеЗаполнено(ДоступноеЗначение.Представление) Тогда
Возврат ДоступноеЗначение.Представление;
КонецЕсли;
КонецЕсли;
ДоступныеЗначения = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(
КомпоновщикНастроек.Настройки.ДополнительныеСвойства, "ДоступныеЗначения");
Если ИмяПоляНастройки = Неопределено
Или ТипЗнч(ДоступныеЗначения) <> Тип("Структура") Тогда
Возврат ЗначениеНастройки;
КонецЕсли;
Попытка
ДоступныеЗначенияНастройки = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(
ДоступныеЗначения, ИмяПоляНастройки, Новый СписокЗначений);
Исключение
Возврат ЗначениеНастройки;
КонецПопытки;
НайденноеЗначениеНастройки = ДоступныеЗначенияНастройки.НайтиПоЗначению(ЗначениеНастройки);
Если НайденноеЗначениеНастройки <> Неопределено
И ЗначениеЗаполнено(НайденноеЗначениеНастройки.Представление) Тогда
Возврат НайденноеЗначениеНастройки.Представление;
КонецЕсли;
Если Не ЗначениеЗаполнено(ЗначениеНастройки) Тогда
Возврат НСтр("ru = 'Не установлено'");
КонецЕсли;
Возврат Строка(ЗначениеНастройки);
КонецФункции
// Параметры:
// ЭлементНастроек - ЭлементОтбораКомпоновкиДанных
// - ПорядокКомпоновкиДанных
// - ЭлементПорядкаКомпоновкиДанных
// - УсловноеОформлениеКомпоновкиДанных
// - ЭлементУсловногоОформленияКомпоновкиДанных
// - ВыбранныеПоляКомпоновкиДанных
// ОписаниеНастройки - ДоступноеПолеКомпоновкиДанных
// - ДоступноеПолеОтбораКомпоновкиДанных
// ТипНастройки - Тип
//
// Возвращаемое значение:
// Строка
//
&НаСервере
Функция ПредставлениеНастройки(ЭлементНастроек, ОписаниеНастройки, ТипНастройки)
ПредставлениеНастройки = "";
Если ЗначениеЗаполнено(ЭлементНастроек.ПредставлениеПользовательскойНастройки) Тогда
ПредставлениеНастройки = ЭлементНастроек.ПредставлениеПользовательскойНастройки;
ИначеЕсли ТипНастройки = Тип("ЭлементОтбораКомпоновкиДанных")
И ЗначениеЗаполнено(ЭлементНастроек.Представление) Тогда
ПредставлениеНастройки = ЭлементНастроек.Представление;
ИначеЕсли ОписаниеНастройки <> Неопределено Тогда
ПредставлениеНастройки = ОписаниеНастройки.Заголовок;
ИначеЕсли ТипНастройки = Тип("НастройкиКомпоновкиДанных")
Или ТипНастройки = Тип("ГруппировкаКомпоновкиДанных")
Или ТипНастройки = Тип("ДиаграммаКомпоновкиДанных")
Или ТипНастройки = Тип("ГруппировкаДиаграммыКомпоновкиДанных")
Или ТипНастройки = Тип("ТаблицаКомпоновкиДанных")
Или ТипНастройки = Тип("ГруппировкаТаблицыКомпоновкиДанных") Тогда
ПредставлениеНастройки = ВариантыОтчетовСлужебный.ПредставлениеЭлементаСтруктуры(ЭлементНастроек);
ИначеЕсли ТипНастройки = Тип("КоллекцияЭлементовСтруктурыНастроекКомпоновкиДанных")
Или ТипНастройки = Тип("КоллекцияЭлементовСтруктурыТаблицыКомпоновкиДанных")
Или ТипНастройки = Тип("КоллекцияЭлементовСтруктурыДиаграммыКомпоновкиДанных") Тогда
ПредставлениеНастройки = ВариантыОтчетовСлужебный.ПредставлениеЭлементовСтруктуры(ЭлементНастроек);
ИначеЕсли ТипНастройки = Тип("ВыбранныеПоляКомпоновкиДанных") Тогда
ПредставлениеНастройки = ВариантыОтчетовСлужебный.ПредставлениеВыбранныхПолей(ЭлементНастроек);
ИначеЕсли ТипНастройки = Тип("ПорядокКомпоновкиДанных") Тогда
ПредставлениеНастройки = ВариантыОтчетовСлужебный.ПредставлениеСортировки(ЭлементНастроек);
ИначеЕсли ТипНастройки = Тип("ЭлементПорядкаКомпоновкиДанных") Тогда
ПредставлениеНастройки = ВариантыОтчетовСлужебный.ПредставлениеЭлементаСортировки(ЭлементНастроек);
ИначеЕсли ТипНастройки = Тип("УсловноеОформлениеКомпоновкиДанных") Тогда
ПредставлениеНастройки = ВариантыОтчетовСлужебный.ПредставлениеУсловногоОформления(ЭлементНастроек);
ИначеЕсли ТипНастройки = Тип("ЭлементУсловногоОформленияКомпоновкиДанных") Тогда
ПредставлениеНастройки = ОтчетыКлиентСервер.ПредставлениеЭлементаУсловногоОформления(
ЭлементНастроек, Неопределено, "");
КонецЕсли;
Возврат ПредставлениеНастройки;
КонецФункции
&НаСервере
Функция КартинкаНастройки(ЭлементНастроек, ТипНастройки)
КартинкаНастройки = -1;
Если ТипНастройки = Тип("ЗначениеПараметраНастроекКомпоновкиДанных")
Или ТипНастройки = Тип("ЭлементОтбораКомпоновкиДанных") Тогда
КартинкаНастройки = 17;
ИначеЕсли ТипНастройки = Тип("НастройкиКомпоновкиДанных") Тогда
КартинкаНастройки = 20;
ИначеЕсли ТипНастройки = Тип("ГруппировкаКомпоновкиДанных")
Или ТипНастройки = Тип("ГруппировкаДиаграммыКомпоновкиДанных")
Или ТипНастройки = Тип("ГруппировкаТаблицыКомпоновкиДанных") Тогда
КартинкаНастройки = 7;
ИначеЕсли ТипНастройки = Тип("КоллекцияЭлементовСтруктурыНастроекКомпоновкиДанных")
Или ТипНастройки = Тип("КоллекцияЭлементовСтруктурыТаблицыКомпоновкиДанных")
Или ТипНастройки = Тип("КоллекцияЭлементовСтруктурыДиаграммыКомпоновкиДанных") Тогда
КартинкаНастройки = 22;
ИначеЕсли ТипНастройки = Тип("ТаблицаКомпоновкиДанных") Тогда
КартинкаНастройки = 9;
ИначеЕсли ТипНастройки = Тип("ДиаграммаКомпоновкиДанных") Тогда
КартинкаНастройки = 11;
ИначеЕсли ТипНастройки = Тип("ВыбранныеПоляКомпоновкиДанных") Тогда
КартинкаНастройки = 18;
ИначеЕсли ТипНастройки = Тип("ПорядокКомпоновкиДанных")
Или ТипНастройки = Тип("ЭлементПорядкаКомпоновкиДанных") Тогда
КартинкаНастройки = 19;
ИначеЕсли ТипНастройки = Тип("УсловноеОформлениеКомпоновкиДанных")
Или ТипНастройки = Тип("ЭлементУсловногоОформления") Тогда
КартинкаНастройки = 20;
КонецЕсли;
Возврат КартинкаНастройки;
КонецФункции
&НаСервере
Процедура УстановитьУсловиеФильтра(Запись, ОписаниеНастройки, ТипНастройки, ИдентификаторПользовательскойНастройки)
Если ТипНастройки <> Тип("ЗначениеПараметраНастроекКомпоновкиДанных")
И ТипНастройки <> Тип("ЭлементОтбораКомпоновкиДанных") Тогда
Возврат;
КонецЕсли;
ЭлементПользовательскихНастроек = КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(
ИдентификаторПользовательскойНастройки);
Если ТипНастройки = Тип("ЭлементОтбораКомпоновкиДанных") Тогда
Запись.ВидСравнения = ЭлементПользовательскихНастроек.ВидСравнения;
КонецЕсли;
Если ОписаниеНастройки = Неопределено Тогда
Возврат;
КонецЕсли;
Если ТипНастройки = Тип("ЗначениеПараметраНастроекКомпоновкиДанных") Тогда
Если ОписаниеНастройки.ДоступенСписокЗначений Тогда
Запись.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
Иначе
Запись.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
КонецЕсли;
Возврат;
КонецЕсли;
ДоступныеУсловия = Запись.ДоступныеВидыСравнения;
Для Каждого Элемент Из ОписаниеНастройки.ДоступныеВидыСравнения Цикл
ЗаполнитьЗначенияСвойств(ДоступныеУсловия.Добавить(), Элемент);
КонецЦикла;
Если ДоступныеУсловия.НайтиПоЗначению(Запись.ВидСравнения) = Неопределено Тогда
Запись.ВидСравнения = ДоступныеУсловия[0].Значение;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ИзменениеРежимаОтображения
&НаКлиенте
Процедура ИзменитьРежимОтображенияНастроек(Пометка = Истина)
Для Каждого Запись Из БыстрыеНастройки Цикл
Запись.Пометка = Пометка;
ИзменитьРежимОтображенияЭлементаНастроек(Запись);
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ИзменитьРежимОтображенияЭлементаНастроек(Запись)
Настройки = КомпоновщикНастроек.ПользовательскиеНастройки;
ЭлементыНастроек = Настройки.ПолучитьОсновныеНастройкиПоИдентификаторуПользовательскойНастройки(
Запись.ИдентификаторПользовательскойНастройки);
ЭлементНастроек = ЭлементыНастроек[0];
Если Запись.Пометка Тогда
ЭлементНастроек.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ;
Иначе
ЭлементНастроек.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Обычный;
КонецЕсли;
ОбновитьЗаголовок();
КонецПроцедуры
#КонецОбласти
&НаКлиенте
Процедура ОбновитьЗаголовок()
КоличествоБыстрыхНастроек = 0;
Для Каждого Запись Из БыстрыеНастройки Цикл
Если Запись.Пометка Тогда
КоличествоБыстрыхНастроек = КоличествоБыстрыхНастроек + 1;
КонецЕсли;
КонецЦикла;
Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Быстрые настройки (%1 из %2)'"), КоличествоБыстрыхНастроек, БыстрыеНастройки.Количество());
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьВидСравнения(Элемент, СтандартнаяОбработка)
Запись = Элементы.БыстрыеНастройки.ТекущиеДанные;
Если Запись = Неопределено
Или Запись.ТипНастройки <> Тип("ЭлементОтбораКомпоновкиДанных") Тогда
Возврат;
КонецЕсли;
СтандартнаяОбработка = Ложь;
ПараметрыВыбора = Новый Структура("ИдентификаторЗаписи", Элементы.БыстрыеНастройки.ТекущаяСтрока);
ПоказатьВыборИзМеню(
Новый ОписаниеОповещения("ПослеВыбораВидаСравнения", ЭтотОбъект, ПараметрыВыбора),
Запись.ДоступныеВидыСравнения,
Элемент);
КонецПроцедуры
&НаКлиенте
Процедура ПослеВыбораВидаСравнения(ВыбранныйВидСравнения, ДополнительныеПараметры) Экспорт
Если ТипЗнч(ВыбранныйВидСравнения) <> Тип("ЭлементСпискаЗначений") Тогда
Возврат;
КонецЕсли;
Запись = БыстрыеНастройки.НайтиПоИдентификатору(ДополнительныеПараметры.ИдентификаторЗаписи);
Запись.ВидСравнения = ВыбранныйВидСравнения.Значение;
Настройки = КомпоновщикНастроек.ПользовательскиеНастройки;
ЭлементыНастроек = Настройки.ПолучитьОсновныеНастройкиПоИдентификаторуПользовательскойНастройки(
Запись.ИдентификаторПользовательскойНастройки);
ЭлементНастроек = ЭлементыНастроек[0];
ЭлементНастроек.ВидСравнения = ВыбранныйВидСравнения.Значение;
ВариантМодифицирован = Истина;
КонецПроцедуры
// Параметры:
// Описание - см. ВариантыОтчетов.НастройкиФормыОтчета
//
// Возвращаемое значение:
// см. ВариантыОтчетов.НастройкиФормыОтчета
//
&НаКлиентеНаСервереБезКонтекста
Функция ОписаниеНастроекОтчета(Описание)
Возврат Описание;
КонецФункции
&НаКлиенте
Процедура СохранитьПорядокЭлементовНастроек()
ПорядокЭлементовНастроек = Новый Соответствие;
Порядок = 0;
Для Каждого Запись Из БыстрыеНастройки Цикл
Порядок = Порядок + 1;
Запись.Порядок = Порядок;
ПорядокЭлементовНастроек.Вставить(Запись.ИдентификаторПользовательскойНастройки, Порядок);
КонецЦикла;
КомпоновщикНастроек.Настройки.ДополнительныеСвойства.Вставить("ПорядокЭлементовНастроек", ПорядокЭлементовНастроек);
КонецПроцедуры
#КонецОбласти
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<Help xmlns="http://v8.1c.ru/8.3/xcf/extrnprops" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.20">
<Page>ru</Page>
</Help>
@@ -0,0 +1,8 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta http-equiv="content-type" content="text/html;charset=utf-8"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link></head><body class="">Размещается в шапке отчетов.
<div>
<ul><li>В панель быстрых настроек выводятся, как правило, наиболее важные настройки: фильтры, оформление, группировки и т. д., некоторые из них могут быть обязательными для заполнения.</li>
<li>С помощью кнопки <img src="CommonPicture.Закрепить"></img> можно открыть быстрые настройки и изменить их состав с помощью флажков.</li>
<li>С помощью кнопок <img src="StdPicture.MoveUp"></img><img src="StdPicture.MoveDown"></img>настройки в панели можно менять местами.</li>
<li>С помощью кнопки <b>Больше возможностей</b> можно открыть <a href="CommonForm.ФормаНастроекОтчета/Help">Настройки отчета</a>.</li></ul><h3>См. также:</h3></div>
<div>
<ul><li><a href="CommonForm.ФормаОтчета/Help">Работа с отчетами</a>.</li></ul></div></body></html>
@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.20">
<Form uuid="57964dd6-4b0b-4590-bc44-de744cc423af">
<Properties>
<Name>ВыборВариантаОтчета</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Выбор варианта отчета</v8:content>
</v8:item>
</Synonym>
<Comment/>
<FormType>Managed</FormType>
<IncludeHelpInContents>false</IncludeHelpInContents>
<UsePurposes>
<v8:Value xsi:type="app:ApplicationUsePurpose">PlatformApplication</v8:Value>
<v8:Value xsi:type="app:ApplicationUsePurpose">MobilePlatformApplication</v8:Value>
</UsePurposes>
</Properties>
</Form>
</MetaDataObject>
@@ -0,0 +1,525 @@
<?xml version="1.0" encoding="UTF-8"?>
<Form xmlns="http://v8.1c.ru/8.3/xcf/logform" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:dcscor="http://v8.1c.ru/8.1/data-composition-system/core" xmlns:dcssch="http://v8.1c.ru/8.1/data-composition-system/schema" xmlns:dcsset="http://v8.1c.ru/8.1/data-composition-system/settings" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.20">
<WindowOpeningMode>LockOwnerWindow</WindowOpeningMode>
<AutoSaveDataInSettings>Use</AutoSaveDataInSettings>
<MobileDeviceCommandBarContent>
<xr:Item>
<xr:Presentation/>
<xr:CheckState>0</xr:CheckState>
<xr:Value xsi:type="xs:string">ОсновнаяКоманднаяПанель</xr:Value>
</xr:Item>
</MobileDeviceCommandBarContent>
<CommandSet>
<ExcludedCommand>Abort</ExcludedCommand>
<ExcludedCommand>Cancel</ExcludedCommand>
<ExcludedCommand>Close</ExcludedCommand>
<ExcludedCommand>Ignore</ExcludedCommand>
<ExcludedCommand>No</ExcludedCommand>
<ExcludedCommand>OK</ExcludedCommand>
<ExcludedCommand>RestoreValues</ExcludedCommand>
<ExcludedCommand>Retry</ExcludedCommand>
<ExcludedCommand>SaveValues</ExcludedCommand>
<ExcludedCommand>Yes</ExcludedCommand>
</CommandSet>
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1">
<Autofill>false</Autofill>
</AutoCommandBar>
<Events>
<Event name="NotificationProcessing">ОбработкаОповещения</Event>
<Event name="OnCreateAtServer">ПриСозданииНаСервере</Event>
<Event name="BeforeLoadDataFromSettingsAtServer">ПередЗагрузкойДанныхИзНастроекНаСервере</Event>
</Events>
<ChildItems>
<UsualGroup name="БыстрыеОтборы" id="22">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Быстрые фильтры</v8:content>
</v8:item>
</Title>
<Behavior>Usual</Behavior>
<Representation>None</Representation>
<ShowTitle>false</ShowTitle>
<ExtendedTooltip name="БыстрыеОтборыExtendedTooltip" id="31"/>
<ChildItems>
<InputField name="ОтборАвтор" id="56">
<DataPath>ОтборАвтор</DataPath>
<ClearButton>true</ClearButton>
<ContextMenu name="ОтборАвторКонтекстноеМеню" id="57"/>
<ExtendedTooltip name="ОтборАвторРасширеннаяПодсказка" id="58"/>
<Events>
<Event name="OnChange">ОтборАвторПриИзменении</Event>
</Events>
</InputField>
</ChildItems>
</UsualGroup>
<CommandBar name="ОсновнаяКоманднаяПанель" id="27">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Основная командная панель</v8:content>
</v8:item>
</Title>
<CommandSource>Form</CommandSource>
<ExtendedTooltip name="ОсновнаяКоманднаяПанельExtendedTooltip" id="33"/>
<ChildItems>
<Button name="Выбрать" id="6" DisplayImportance="VeryHigh">
<Type>CommandBarButton</Type>
<DefaultButton>true</DefaultButton>
<CommandName>Form.Item.ДеревоВариантовОтчета.StandardCommand.Choose</CommandName>
<ExtendedTooltip name="ВыбратьExtendedTooltip" id="34"/>
</Button>
<Button name="Изменить" id="7">
<Type>CommandBarButton</Type>
<CommandName>Form.Item.ДеревоВариантовОтчета.StandardCommand.Change</CommandName>
<ExtendedTooltip name="ИзменитьExtendedTooltip" id="35"/>
</Button>
<Button name="Удалить" id="15">
<Type>CommandBarButton</Type>
<CommandName>Form.Item.ДеревоВариантовОтчета.StandardCommand.Delete</CommandName>
<Picture>
<xr:Ref>StdPicture.MarkToDelete</xr:Ref>
<xr:LoadTransparent>true</xr:LoadTransparent>
</Picture>
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Пометить на удаление / Снять пометку</v8:content>
</v8:item>
</Title>
<ExtendedTooltip name="УдалитьExtendedTooltip" id="36"/>
</Button>
<Button name="ПоказыватьЛичныеВариантыОтчетовДругихАвторов" id="13">
<Type>CommandBarButton</Type>
<CommandName>Form.Command.ПоказыватьЛичныеВариантыОтчетовДругихАвторов</CommandName>
<ExtendedTooltip name="ПоказыватьЛичныеВариантыОтчетовДругихАвторовExtendedTooltip" id="37"/>
</Button>
<Button name="ФормаОбновить" id="28">
<Type>CommandBarButton</Type>
<CommandName>Form.Command.Обновить</CommandName>
<ExtendedTooltip name="ФормаОбновитьExtendedTooltip" id="38"/>
</Button>
<ButtonGroup name="КоманднаяПанельДерева" id="8">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Командная панель дерева</v8:content>
</v8:item>
</Title>
<CommandSource>Item.ДеревоВариантовОтчета</CommandSource>
<ExtendedTooltip name="КоманднаяПанельДереваExtendedTooltip" id="39"/>
</ButtonGroup>
</ChildItems>
</CommandBar>
<Table name="ДеревоВариантовОтчета" id="1">
<Representation>Tree</Representation>
<CommandBarLocation>None</CommandBarLocation>
<DefaultItem>true</DefaultItem>
<Height>9</Height>
<ChoiceMode>true</ChoiceMode>
<SelectionMode>SingleRow</SelectionMode>
<AutoInsertNewRow>true</AutoInsertNewRow>
<InitialTreeView>ExpandAllLevels</InitialTreeView>
<EnableStartDrag>true</EnableStartDrag>
<EnableDrag>true</EnableDrag>
<FileDragMode>AsFile</FileDragMode>
<DataPath>ДеревоВариантовОтчета</DataPath>
<RowPictureDataPath>ДеревоВариантовОтчета.ИндексКартинки</RowPictureDataPath>
<RowsPicture>
<xr:Ref>CommonPicture.ПиктограммыЭлементов</xr:Ref>
<xr:LoadTransparent>false</xr:LoadTransparent>
</RowsPicture>
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Дерево вариантов отчета</v8:content>
</v8:item>
</Title>
<CommandSet>
<ExcludedCommand>Add</ExcludedCommand>
<ExcludedCommand>Copy</ExcludedCommand>
<ExcludedCommand>EndEdit</ExcludedCommand>
<ExcludedCommand>HierarchicalList</ExcludedCommand>
<ExcludedCommand>List</ExcludedCommand>
<ExcludedCommand>MoveDown</ExcludedCommand>
<ExcludedCommand>MoveUp</ExcludedCommand>
<ExcludedCommand>Tree</ExcludedCommand>
</CommandSet>
<RefreshRequest>PullFromTop</RefreshRequest>
<CurrentRowUse>SelectionPresentationAndChoice</CurrentRowUse>
<ContextMenu name="ДеревоВариантовОтчетаКонтекстноеМеню" id="2">
<ChildItems>
<Button name="УдалитьКМ" id="16">
<Type>CommandBarButton</Type>
<CommandName>Form.Item.ДеревоВариантовОтчета.StandardCommand.Delete</CommandName>
<Picture>
<xr:Ref>StdPicture.MarkToDelete</xr:Ref>
<xr:LoadTransparent>true</xr:LoadTransparent>
</Picture>
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Пометить на удаление / Снять пометку</v8:content>
</v8:item>
</Title>
<ExtendedTooltip name="УдалитьКМExtendedTooltip" id="40"/>
</Button>
<Button name="ПоказыватьЛичныеВариантыОтчетовДругихАвторовКМ" id="14">
<Type>CommandBarButton</Type>
<CommandName>Form.Command.ПоказыватьЛичныеВариантыОтчетовДругихАвторов</CommandName>
<ExtendedTooltip name="ПоказыватьЛичныеВариантыОтчетовДругихАвторовКМExtendedTooltip" id="41"/>
</Button>
</ChildItems>
</ContextMenu>
<AutoCommandBar name="ДеревоВариантовОтчетаКоманднаяПанель" id="3">
<Autofill>false</Autofill>
</AutoCommandBar>
<ExtendedTooltip name="ДеревоВариантовОтчетаExtendedTooltip" id="42"/>
<SearchStringAddition name="ДеревоВариантовОтчетаSearchString" id="47">
<AdditionSource>
<Item>ДеревоВариантовОтчета</Item>
<Type>SearchStringRepresentation</Type>
</AdditionSource>
<ContextMenu name="ДеревоВариантовОтчетаSearchStringContextMenu" id="48"/>
<ExtendedTooltip name="ДеревоВариантовОтчетаSearchStringExtendedTooltip" id="49"/>
</SearchStringAddition>
<ViewStatusAddition name="ДеревоВариантовОтчетаViewStatus" id="50">
<AdditionSource>
<Item>ДеревоВариантовОтчета</Item>
<Type>ViewStatusRepresentation</Type>
</AdditionSource>
<ContextMenu name="ДеревоВариантовОтчетаViewStatusContextMenu" id="51"/>
<ExtendedTooltip name="ДеревоВариантовОтчетаViewStatusExtendedTooltip" id="52"/>
</ViewStatusAddition>
<SearchControlAddition name="ДеревоВариантовОтчетаSearchControl" id="53">
<AdditionSource>
<Item>ДеревоВариантовОтчета</Item>
<Type>SearchControl</Type>
</AdditionSource>
<ContextMenu name="ДеревоВариантовОтчетаSearchControlContextMenu" id="54"/>
<ExtendedTooltip name="ДеревоВариантовОтчетаSearchControlExtendedTooltip" id="55"/>
</SearchControlAddition>
<Events>
<Event name="ValueChoice">ДеревоВариантовОтчетаВыборЗначения</Event>
<Event name="Selection">ДеревоВариантовОтчетаВыбор</Event>
<Event name="BeforeAddRow">ДеревоВариантовОтчетаПередНачаломДобавления</Event>
<Event name="BeforeDeleteRow">ДеревоВариантовОтчетаПередУдалением</Event>
<Event name="OnActivateRow">ДеревоВариантовОтчетаПриАктивизацииСтроки</Event>
<Event name="BeforeRowChange">ДеревоВариантовОтчетаПередНачаломИзменения</Event>
<Event name="RefreshRequestProcessing">ДеревоВариантовОтчетаОбработкаЗапросаОбновления</Event>
</Events>
<ChildItems>
<InputField name="ДеревоВариантовОтчетаПредставление" id="4">
<DataPath>ДеревоВариантовОтчета.Наименование</DataPath>
<EditMode>EnterOnInput</EditMode>
<TextEdit>false</TextEdit>
<ContextMenu name="ДеревоВариантовОтчетаПредставлениеКонтекстноеМеню" id="5"/>
<ExtendedTooltip name="ДеревоВариантовОтчетаПредставлениеExtendedTooltip" id="43"/>
</InputField>
<PictureField name="ДеревоВариантовОтчетаКартинкаАвтора" id="29">
<DataPath>ДеревоВариантовОтчета.КартинкаАвтора</DataPath>
<TitleLocation>None</TitleLocation>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Доступен всем пользователям</v8:content>
</v8:item>
</ToolTip>
<EditMode>EnterOnInput</EditMode>
<HeaderPicture>
<xr:Ref>CommonPicture.ВариантыОтчетовДоступныеВсемПользователям</xr:Ref>
<xr:LoadTransparent>false</xr:LoadTransparent>
</HeaderPicture>
<Width>2</Width>
<HorizontalStretch>false</HorizontalStretch>
<VerticalStretch>false</VerticalStretch>
<ValuesPicture>
<xr:Ref>CommonPicture.ВариантыОтчетовДоступныеВсемПользователям</xr:Ref>
<xr:LoadTransparent>false</xr:LoadTransparent>
</ValuesPicture>
<FileDragMode>AsFile</FileDragMode>
<ContextMenu name="ДеревоВариантовОтчетаКартинкаАвтораКонтекстноеМеню" id="30"/>
<ExtendedTooltip name="ДеревоВариантовОтчетаКартинкаАвтораExtendedTooltip" id="44"/>
</PictureField>
<InputField name="ДеревоВариантовОтчетаАвтор" id="18">
<DataPath>ДеревоВариантовОтчета.Автор</DataPath>
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="ДеревоВариантовОтчетаАвторКонтекстноеМеню" id="19"/>
<ExtendedTooltip name="ДеревоВариантовОтчетаАвторExtendedTooltip" id="45"/>
</InputField>
</ChildItems>
</Table>
<InputField name="ВариантОписание" id="11">
<DataPath>ВариантОписание</DataPath>
<ReadOnly>true</ReadOnly>
<TitleLocation>Left</TitleLocation>
<Height>2</Height>
<HorizontalStretch>true</HorizontalStretch>
<VerticalStretch>false</VerticalStretch>
<MultiLine>true</MultiLine>
<ContextMenu name="ВариантОписаниеКонтекстноеМеню" id="12"/>
<ExtendedTooltip name="ВариантОписаниеExtendedTooltip" id="46"/>
</InputField>
</ChildItems>
<Attributes>
<Attribute name="ДеревоВариантовОтчета" id="1">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Дерево вариантов отчета</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>v8:ValueTree</v8:Type>
</Type>
<Columns>
<Column name="Наименование" id="1">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Наименование</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Column>
<Column name="Ссылка" id="2">
<Type>
<v8:Type>cfg:CatalogRef.ВариантыОтчетов</v8:Type>
</Type>
</Column>
<Column name="КлючВарианта" id="4">
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Column>
<Column name="Группа" id="3">
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Column>
<Column name="ИндексКартинки" id="5">
<Type>
<v8:Type>xs:decimal</v8:Type>
<v8:NumberQualifiers>
<v8:Digits>10</v8:Digits>
<v8:FractionDigits>0</v8:FractionDigits>
<v8:AllowedSign>Any</v8:AllowedSign>
</v8:NumberQualifiers>
</Type>
</Column>
<Column name="АвторТекущийПользователь" id="6">
<Type>
<v8:Type>xs:boolean</v8:Type>
</Type>
</Column>
<Column name="Автор" id="7">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Автор</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>cfg:CatalogRef.ВнешниеПользователи</v8:Type>
<v8:Type>cfg:CatalogRef.Пользователи</v8:Type>
</Type>
</Column>
<Column name="Описание" id="8">
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Column>
<Column name="СкрытОтбором" id="9">
<Type>
<v8:Type>xs:boolean</v8:Type>
</Type>
</Column>
<Column name="НомерГруппы" id="10">
<Type>
<v8:Type>xs:decimal</v8:Type>
<v8:NumberQualifiers>
<v8:Digits>1</v8:Digits>
<v8:FractionDigits>0</v8:FractionDigits>
<v8:AllowedSign>Any</v8:AllowedSign>
</v8:NumberQualifiers>
</Type>
</Column>
<Column name="Пользовательский" id="11">
<Type>
<v8:Type>xs:boolean</v8:Type>
</Type>
</Column>
<Column name="ПометкаУдаления" id="12">
<Type>
<v8:Type>xs:boolean</v8:Type>
</Type>
</Column>
<Column name="ВидимостьВПанелиОтчетов" id="13">
<Type>
<v8:Type>xs:boolean</v8:Type>
</Type>
</Column>
<Column name="КартинкаАвтора" id="14">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Картинка автора</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>xs:decimal</v8:Type>
<v8:NumberQualifiers>
<v8:Digits>1</v8:Digits>
<v8:FractionDigits>0</v8:FractionDigits>
<v8:AllowedSign>Any</v8:AllowedSign>
</v8:NumberQualifiers>
</Type>
</Column>
<Column name="ТолькоДляАвтора" id="15">
<Type>
<v8:Type>xs:boolean</v8:Type>
</Type>
</Column>
</Columns>
</Attribute>
<Attribute name="ТекущийПользователь" id="4">
<Type>
<v8:Type>cfg:CatalogRef.Пользователи</v8:Type>
</Type>
</Attribute>
<Attribute name="ОтчетИнформация" id="2">
<Type/>
</Attribute>
<Attribute name="ПолныеПраваНаВарианты" id="3">
<Type>
<v8:Type>xs:boolean</v8:Type>
</Type>
</Attribute>
<Attribute name="ВариантОписание" id="6">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Описание</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Attribute>
<Attribute name="ПоказыватьЛичныеВариантыОтчетовДругихАвторов" id="7">
<Type>
<v8:Type>xs:boolean</v8:Type>
</Type>
<Save>
<Field>ПоказыватьЛичныеВариантыОтчетовДругихАвторов</Field>
</Save>
</Attribute>
<Attribute name="КлючВарианта" id="8">
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Attribute>
<Attribute name="ОтборАвтор" id="9">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Автор</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>cfg:CatalogRef.ВнешниеПользователи</v8:Type>
<v8:Type>cfg:CatalogRef.Пользователи</v8:Type>
</Type>
</Attribute>
</Attributes>
<Commands>
<Command name="ПоказыватьЛичныеВариантыОтчетовДругихАвторов" id="1">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Показывать личные варианты отчетов других авторов</v8:content>
</v8:item>
</Title>
<Action>ПоказыватьЛичныеВариантыОтчетовДругихАвторов</Action>
<CurrentRowUse>DontUse</CurrentRowUse>
</Command>
<Command name="Выбрать" id="2">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Выбрать</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Выбрать</v8:content>
</v8:item>
</ToolTip>
<Picture>
<xr:Ref>StdPicture.ChooseValue</xr:Ref>
<xr:LoadTransparent>true</xr:LoadTransparent>
</Picture>
<Representation>TextPicture</Representation>
<CurrentRowUse>DontUse</CurrentRowUse>
</Command>
<Command name="Обновить" id="3">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Обновить</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Обновить</v8:content>
</v8:item>
</ToolTip>
<Shortcut>F5</Shortcut>
<Picture>
<xr:Ref>StdPicture.Refresh</xr:Ref>
<xr:LoadTransparent>true</xr:LoadTransparent>
</Picture>
<Action>Обновить</Action>
<CurrentRowUse>DontUse</CurrentRowUse>
</Command>
</Commands>
<Parameters>
<Parameter name="КлючОбъекта">
<Type/>
</Parameter>
<Parameter name="КлючТекущихНастроек">
<Type/>
</Parameter>
<Parameter name="СтандартныеНастройки">
<Type/>
</Parameter>
</Parameters>
</Form>
@@ -0,0 +1,400 @@
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2022, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
УстановитьУсловноеОформление();
КлючВарианта = Параметры.КлючТекущихНастроек;
ТекущийПользователь = Пользователи.АвторизованныйПользователь();
ОтчетИнформация = ВариантыОтчетов.ИнформацияОбОтчете(Параметры.КлючОбъекта);
Если Не ПустаяСтрока(ОтчетИнформация.ТекстОшибки) Тогда
ВызватьИсключение ОтчетИнформация.ТекстОшибки;
КонецЕсли;
ОтчетИнформация.Удалить("ОтчетМетаданные");
ОтчетИнформация.Удалить("ТекстОшибки");
ОтчетИнформация.Вставить("ОтчетПолноеИмя", Параметры.КлючОбъекта);
ОтчетИнформация = Новый ФиксированнаяСтруктура(ОтчетИнформация);
ПолныеПраваНаВарианты = ВариантыОтчетов.ПолныеПраваНаВарианты();
Если Не ПолныеПраваНаВарианты Тогда
Элементы.ПоказыватьЛичныеВариантыОтчетовДругихАвторов.Видимость = Ложь;
Элементы.ПоказыватьЛичныеВариантыОтчетовДругихАвторовКМ.Видимость = Ложь;
ПоказыватьЛичныеВариантыОтчетовДругихАвторов = Ложь;
КонецЕсли;
ЗаполнитьСписокВариантов();
НастроитьФормуДляМобильногоПриНеобходимости();
КонецПроцедуры
&НаСервере
Процедура ПередЗагрузкойДанныхИзНастроекНаСервере(Настройки)
Показывать = Настройки.Получить("ПоказыватьЛичныеВариантыОтчетовДругихАвторов");
Если Показывать <> ПоказыватьЛичныеВариантыОтчетовДругихАвторов Тогда
ПоказыватьЛичныеВариантыОтчетовДругихАвторов = Показывать;
Элементы.ПоказыватьЛичныеВариантыОтчетовДругихАвторов.Пометка = Показывать;
Элементы.ПоказыватьЛичныеВариантыОтчетовДругихАвторовКМ.Пометка = Показывать;
ЗаполнитьСписокВариантов();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если ИмяСобытия = ВариантыОтчетовКлиент.ИмяСобытияИзменениеВарианта()
Или ИмяСобытия = "Запись_НаборКонстант" Тогда
ЗаполнитьСписокВариантов();
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура ОтборАвторПриИзменении(Элемент)
ОтборВключен = ЗначениеЗаполнено(ОтборАвтор);
ГруппыИлиВарианты = ДеревоВариантовОтчета.ПолучитьЭлементы();
Для Каждого ГруппаИлиВариант Из ГруппыИлиВарианты Цикл
ЕстьВключенные = Неопределено;
ВложенныеВарианты = ГруппаИлиВариант.ПолучитьЭлементы();
Для Каждого Вариант Из ВложенныеВарианты Цикл
Вариант.СкрытОтбором = ОтборВключен И Вариант.Автор <> ОтборАвтор;
Если Не Вариант.СкрытОтбором Тогда
ЕстьВключенные = Истина;
ИначеЕсли ЕстьВключенные = Неопределено Тогда
ЕстьВключенные = Ложь;
КонецЕсли;
КонецЦикла;
Если ЕстьВключенные = Неопределено Тогда // Группа это вариант.
ГруппаИлиВариант.СкрытОтбором = ОтборВключен И ГруппаИлиВариант.Автор <> ОтборАвтор;
Иначе // Это группа.
ГруппаИлиВариант.СкрытОтбором = ЕстьВключенные;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыДеревоВариантовОтчета
&НаКлиенте
Процедура ДеревоВариантовОтчетаПриАктивизацииСтроки(Элемент)
Вариант = Элементы.ДеревоВариантовОтчета.ТекущиеДанные;
Если Вариант = Неопределено Тогда
Возврат;
КонецЕсли;
Если Не ЗначениеЗаполнено(Вариант.КлючВарианта) Тогда
ВариантОписание = "";
Иначе
ВариантОписание = Вариант.Описание;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДеревоВариантовОтчетаПередНачаломИзменения(Элемент, Отказ)
Отказ = Истина;
ОткрытьВариантДляИзменения();
КонецПроцедуры
&НаКлиенте
Процедура ДеревоВариантовОтчетаПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа)
Отказ = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ДеревоВариантовОтчетаПередУдалением(Элемент, Отказ)
Отказ = Истина;
Вариант = Элементы.ДеревоВариантовОтчета.ТекущиеДанные;
Если Вариант = Неопределено Или Не ЗначениеЗаполнено(Вариант.КлючВарианта) Тогда
Возврат;
КонецЕсли;
Если Вариант.ИндексКартинки = 4 Тогда
ТекстВопроса = НСтр("ru = 'Снять с ""%1"" пометку на удаление?'");
Иначе
ТекстВопроса = НСтр("ru = 'Пометить ""%1"" на удаление?'");
КонецЕсли;
ТекстВопроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстВопроса, Вариант.Наименование);
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("Вариант", Вариант);
Обработчик = Новый ОписаниеОповещения("ДеревоВариантовОтчетаПередУдалениемЗавершение", ЭтотОбъект, ДополнительныеПараметры);
ПоказатьВопрос(Обработчик, ТекстВопроса, РежимДиалогаВопрос.ДаНет, 60, КодВозвратаДиалога.Да);
КонецПроцедуры
&НаКлиенте
Процедура ДеревоВариантовОтчетаВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ВыбратьИЗакрыть();
КонецПроцедуры
&НаКлиенте
Процедура ДеревоВариантовОтчетаВыборЗначения(Элемент, Значение, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ВыбратьИЗакрыть();
КонецПроцедуры
&НаКлиенте
Процедура ДеревоВариантовОтчетаОбработкаЗапросаОбновления()
Элементы.ДеревоВариантовОтчета.Обновить();
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура ПоказыватьЛичныеВариантыОтчетовДругихАвторов(Команда)
ПоказыватьЛичныеВариантыОтчетовДругихАвторов = Не ПоказыватьЛичныеВариантыОтчетовДругихАвторов;
Элементы.ПоказыватьЛичныеВариантыОтчетовДругихАвторов.Пометка = ПоказыватьЛичныеВариантыОтчетовДругихАвторов;
Элементы.ПоказыватьЛичныеВариантыОтчетовДругихАвторовКМ.Пометка = ПоказыватьЛичныеВариантыОтчетовДругихАвторов;
ЗаполнитьСписокВариантов();
Для Каждого ГруппаДерева Из ДеревоВариантовОтчета.ПолучитьЭлементы() Цикл
Если ГруппаДерева.СкрытОтбором = Ложь Тогда
Элементы.ДеревоВариантовОтчета.Развернуть(ГруппаДерева.ПолучитьИдентификатор(), Истина);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура Обновить(Команда)
ЗаполнитьСписокВариантов();
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
Процедура УстановитьУсловноеОформление()
УсловноеОформление.Элементы.Очистить();
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ДеревоВариантовОтчета.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ДеревоВариантовОтчетаПредставление.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ДеревоВариантовОтчетаАвтор.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДеревоВариантовОтчета.СкрытОтбором");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
Элемент.Оформление.УстановитьЗначениеПараметра("Отображать", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ДеревоВариантовОтчетаПредставление.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ДеревоВариантовОтчетаАвтор.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДеревоВариантовОтчета.АвторТекущийПользователь");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
ЦветМоихВариантовОтчетов = Метаданные.ЭлементыСтиля.МоиВариантыОтчетовЦвет;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветМоихВариантовОтчетов.Значение);
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьИЗакрыть()
Вариант = Элементы.ДеревоВариантовОтчета.ТекущиеДанные;
Если Вариант = Неопределено Тогда
Возврат;
КонецЕсли;
Если Не ЗначениеЗаполнено(Вариант.КлючВарианта) Тогда
Возврат;
КонецЕсли;
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("КлючВарианта", Вариант.КлючВарианта);
Если Вариант.ИндексКартинки = 4 Тогда
ТекстВопроса = НСтр("ru = 'Выбранный вариант отчета помечен на удаление.
|Выбрать этот варианта отчета?'");
Обработчик = Новый ОписаниеОповещения("ВыбратьИЗакрытьЗавершение", ЭтотОбъект, ДополнительныеПараметры);
ПоказатьВопрос(Обработчик, ТекстВопроса, РежимДиалогаВопрос.ДаНет, 60);
Иначе
ВыбратьИЗакрытьЗавершение(КодВозвратаДиалога.Да, ДополнительныеПараметры);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьИЗакрытьЗавершение(Ответ, ДополнительныеПараметры) Экспорт
Если Ответ = КодВозвратаДиалога.Да Тогда
Закрыть(Новый ВыборНастроек(ДополнительныеПараметры.КлючВарианта));
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьВариантДляИзменения()
Вариант = Элементы.ДеревоВариантовОтчета.ТекущиеДанные;
Если Вариант = Неопределено Или Не ЗначениеЗаполнено(Вариант.Ссылка) Тогда
Возврат;
КонецЕсли;
Если Не ПравоИзмененияВарианта(Вариант, ПолныеПраваНаВарианты) Тогда
ТекстПредупреждения = НСтр("ru = 'Недостаточно прав для изменения варианта ""%1"".'");
ТекстПредупреждения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстПредупреждения, Вариант.Наименование);
ПоказатьПредупреждение(, ТекстПредупреждения);
Возврат;
КонецЕсли;
ВариантыОтчетовКлиент.ПоказатьНастройкиОтчета(Вариант.Ссылка);
КонецПроцедуры
// Обработчик оповещения вопроса.
//
// Параметры:
// Ответ - КодВозвратаДиалога
// ДополнительныеПараметры - Структура:
// * Вариант - ДанныеФормыЭлементДерева:
// ** Ссылка - СправочникСсылка.ВариантыОтчетов
// ** ИндексКартинки - Число
//
&НаКлиенте
Процедура ДеревоВариантовОтчетаПередУдалениемЗавершение(Ответ, ДополнительныеПараметры) Экспорт
Если Ответ = КодВозвратаДиалога.Да Тогда
УдалитьВариантНаСервере(ДополнительныеПараметры.Вариант.Ссылка, ДополнительныеПараметры.Вариант.ИндексКартинки);
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ПравоИзмененияВарианта(Вариант, ПолныеПраваНаВарианты)
Возврат ПолныеПраваНаВарианты Или Вариант.АвторТекущийПользователь;
КонецФункции
&НаСервере
Процедура ЗаполнитьСписокВариантов()
ТекущийКлючВарианта = КлючВарианта;
Если ЗначениеЗаполнено(Элементы.ДеревоВариантовОтчета.ТекущаяСтрока) Тогда
ТекущаяСтрокаДерева = ДеревоВариантовОтчета.НайтиПоИдентификатору(Элементы.ДеревоВариантовОтчета.ТекущаяСтрока);
Если ЗначениеЗаполнено(ТекущаяСтрокаДерева.КлючВарианта) Тогда
ТекущийКлючВарианта = ТекущаяСтрокаДерева.КлючВарианта;
КонецЕсли;
КонецЕсли;
ОтборОтчеты = Новый Массив;
ОтборОтчеты.Добавить(ОтчетИнформация.Отчет);
ПараметрыПоиска = Новый Структура("Отчеты,ПометкаУдаления,ТолькоЛичные",
ОтборОтчеты, Ложь, Не ПоказыватьЛичныеВариантыОтчетовДругихАвторов);
ТаблицаВариантов = ВариантыОтчетов.ТаблицаВариантовОтчетов(ПараметрыПоиска);
// Заполнить автовычисляемые колонки
ТаблицаВариантов.Колонки.Добавить("АвторТекущийПользователь", Новый ОписаниеТипов("Булево"));
ТаблицаВариантов.Колонки.Добавить("ИндексКартинки", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(1, 0, ДопустимыйЗнак.Любой)));
ТаблицаВариантов.Колонки.Добавить("Порядок", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(1, 0, ДопустимыйЗнак.Любой)));
Для каждого Вариант Из ТаблицаВариантов Цикл
Вариант.АвторТекущийПользователь = (Вариант.Автор = ТекущийПользователь);
Вариант.ИндексКартинки = ?(Вариант.ПометкаУдаления, 4, ?(Вариант.Пользовательский, 3, 5));
Вариант.Порядок = ?(Вариант.ПометкаУдаления, 3, 1);
КонецЦикла;
Если ОтчетИнформация.ТипОтчета = Перечисления.ТипыОтчетов.Внешний
И Не ХранилищаНастроек.ХранилищеВариантовОтчетов.ДобавитьВариантыВнешнегоОтчета(
ТаблицаВариантов, ОтчетИнформация.ОтчетПолноеИмя, ОтчетИнформация.ОтчетИмя) Тогда
Возврат;
КонецЕсли;
ТаблицаВариантов.Сортировать("Порядок ВОЗР, Наименование ВОЗР");
ДеревоВариантовОтчета.ПолучитьЭлементы().Очистить();
ГруппыДерева = Новый Соответствие;
ГруппыДерева.Вставить(1, ДеревоВариантовОтчета.ПолучитьЭлементы());
Для Каждого СведенияОВарианте Из ТаблицаВариантов Цикл
Если Не ЗначениеЗаполнено(СведенияОВарианте.КлючВарианта) Тогда
Продолжить;
КонецЕсли;
НаборСтрокДерева = ГруппыДерева.Получить(СведенияОВарианте.Порядок);
Если НаборСтрокДерева = Неопределено Тогда
ГруппаДерева = ДеревоВариантовОтчета.ПолучитьЭлементы().Добавить();
ГруппаДерева.НомерГруппы = СведенияОВарианте.Порядок;
Если СведенияОВарианте.Порядок = 3 Тогда
ГруппаДерева.Наименование = НСтр("ru = 'Помеченные на удаление'");
ГруппаДерева.ИндексКартинки = 1;
ГруппаДерева.КартинкаАвтора = -1;
КонецЕсли;
НаборСтрокДерева = ГруппаДерева.ПолучитьЭлементы();
ГруппыДерева.Вставить(СведенияОВарианте.Порядок, НаборСтрокДерева);
КонецЕсли;
Вариант = НаборСтрокДерева.Добавить();
ЗаполнитьЗначенияСвойств(Вариант, СведенияОВарианте);
Вариант.НомерГруппы = СведенияОВарианте.Порядок;
Если Вариант.КлючВарианта = ТекущийКлючВарианта Тогда
Элементы.ДеревоВариантовОтчета.ТекущаяСтрока = Вариант.ПолучитьИдентификатор();
КонецЕсли;
Вариант.КартинкаАвтора = ?(Вариант.ТолькоДляАвтора, -1, 0);
КонецЦикла;
КонецПроцедуры
&НаСервереБезКонтекста
Процедура УдалитьВариантНаСервере(ВариантыОтчетовСсылка, ИндексКартинки)
НачатьТранзакцию();
Попытка
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("Справочник.ВариантыОтчетов");
ЭлементБлокировки.УстановитьЗначение("Ссылка", ВариантыОтчетовСсылка);
Блокировка.Заблокировать();
ВариантОбъект = ВариантыОтчетовСсылка.ПолучитьОбъект();
ПометкаУдаления = Не ВариантОбъект.ПометкаУдаления;
Пользовательский = ВариантОбъект.Пользовательский;
ВариантОбъект.УстановитьПометкуУдаления(ПометкаУдаления);
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ВызватьИсключение;
КонецПопытки;
ИндексКартинки = ?(ПометкаУдаления, 4, ?(Пользовательский, 3, 5));
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции_МобильныйКлиент
&НаСервере
Процедура НастроитьФормуДляМобильногоПриНеобходимости()
Если Не МК_ПовтИсп.ЭтоМобильныйКлиент() Тогда
Возврат;
КонецЕсли;
Элементы.ПоказыватьЛичныеВариантыОтчетовДругихАвторов.ПоложениеВКоманднойПанели = ПоложениеКнопкиВКоманднойПанели.ВКоманднойПанели;
Элементы.Переместить(Элементы.ВариантОписание, ЭтаФорма, Элементы.ДеревоВариантовОтчета);
Элементы.ДеревоВариантовОтчета.Шапка = Ложь;
Элементы.ФормаОбновить.Видимость = Ложь;
КонецПроцедуры
#КонецОбласти
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<Help xmlns="http://v8.1c.ru/8.3/xcf/extrnprops" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.20">
<Page>ru</Page>
</Help>
@@ -0,0 +1,51 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html;charset=utf-8" http-equiv="content-type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 11.00.10570.1001"></meta></head><body>
<p>Предназначен для выбора <a href="Catalog.ВариантыОтчетов/Help">вариантов отчетов</a>. </p>
<p>Открывается из <a href="CommonForm.ФормаОтчета/Help">формы варианта отчета</a> по команде <strong>Еще - Варианты отчета - Выбрать</strong>.</p>
<p>Для выбора доступны:</p>
<ul><li>стандартные, предусмотренные в программе предопределенные варианты отчетов. По умолчанию являются общими и в списке отображаются со значком <img src="CommonPicture.ВариантыОтчетовДоступныеВсемПользователям" width="16" height="16"></img>;
</li>
<li>общие варианты отчетов, предоставленные другими пользователями в общий доступ. В списке они отображаются со значком <img src="CommonPicture.ВариантыОтчетовДоступныеВсемПользователям"></img>. Для выбора доступны варианты всех авторов;
</li>
<li>личные варианты отчетов, сохраненные ранее. Цветом отображаются варианты отчетов, автором которых является текущий пользователь.</li></ul><p>Список выбора может содержать три группы вариантов отчетов: </p>
<ul><li>используемые варианты отчетов (не выделяются в отдельную группу, расположены в начале списка);
</li>
<li><strong>Скрытые в панелях отчетов</strong> - в эту группу входят предопределенные общие отчеты, у которых выключен флажок <strong>По умолчанию виден в панели отчетов</strong>;
</li>
<li><strong>Помеченные на удаление</strong>. Группа всегда размещена внизу списка выбора. При выборе помеченного на удаление варианта программа выводит предупреждение.</li></ul><p>В списке выводится: </p>
<ul><li>
<div><strong>Наименование</strong> - полное наименование варианта отчета, которое выводится в списках.</div>
<div></div>
</li>
<li>
<div>Картинка <img src="CommonPicture.ВариантыОтчетовДоступныеВсемПользователям" width="16" height="16"></img> <strong>Доступен всем пользователям:</strong></div>
<ul><li>
<div>видна - вариант отчета доступен всем пользователям, </div>
</li>
<li>
<div>не видна - вариант отчета доступен только автору. Такие варианты отчетов также обозначаются цветом.</div></li></ul><div></div><a name="СтандартныеПодсистемы.Пользователи">
</a></li>
<li><a name="СтандартныеПодсистемы.Пользователи"><strong>Автор</strong> - полное имя </a><a href="Catalog.Пользователи.Form.ФормаЭлемента/Help">пользователя</a>, который является автором варианта отчета. </li>
<li>В нижней части списка выводится <strong>Описание</strong> - подробная информация о выбранном варианте отчета.</li></ul><h3>Выбор варианта отчета</h3>
<ul><li>
<div>Для того чтобы открыть вариант отчета, выделите его в списке, нажмите <strong>Выбрать</strong>.</div>
</li>
<li>
<div>При выборе помеченного на удаление варианта отчета программа выводит предупреждение.</div>
</li>
<li>
<div>Также можно воспользоваться двойным щелчком мыши.</div></li></ul><h3>Отбор</h3>
<ul><li>Если список вариантов отчетов большой, то с помощью отбора по автору можно быстро найти нужный вариант отчета.
<ul><a name="СтандартныеПодсистемы.Пользователи">
</a>
<li><a name="СтандартныеПодсистемы.Пользователи">В поле <strong>Автор </strong>выберите автора варианта отчета из списка </a><a href="Catalog.Пользователи/Help">пользователей</a>. </li></ul></li></ul><h3>Настройка варианта отчета</h3>
<ul><li>
<div>Выберите вариант отчета, нажмите <strong>Еще -</strong> <strong>Изменить</strong>, отредактируйте необходимые <a href="Catalog.ВариантыОтчетов.Form.ФормаЭлемента/Help">поля</a>. </div></li></ul><h3> Удаление варианта отчета</h3>
<ul><li>Пользовательский вариант отчета с помощью команды меню <strong>Еще</strong> можно <strong>Пометить на удаление</strong>. Также можно воспользоваться клавишей <strong>Del</strong>.
</li>
<li>Повторно выполните эту команду, для того чтобы <strong>Снять пометку удаления</strong>.
</li>
<li>Эта возможность недоступна для предопределенных вариантов отчетов.</li></ul><h3>Администратору/Ответственному за отчеты: </h3>
<ul><li>Обычно личные варианты отчетов других авторов скрыты. Но в редких случаях может потребоваться прямо из этого списка выбора сделать один из личных вариантов отчетов общедоступным или назначить его другому пользователю.
</li>
<li>Для того чтобы увидеть все варианты отчетов без исключения, нажмите кнопку <strong>Показывать личные варианты отчетов других авторов</strong>. Также можно включить аналогичный флажок в меню <strong>Еще</strong>.</li></ul><h3>См. также: </h3>
<ul><li><a href="v8help://frame/form_common">Работа с формами</a>.</li></ul></body></html>
@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.20">
<Form uuid="f5bb88eb-c239-4ae3-a297-dfbbd679e008">
<Properties>
<Name>ВыборПоляОтчета</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Выбор поля отчета</v8:content>
</v8:item>
</Synonym>
<Comment/>
<FormType>Managed</FormType>
<IncludeHelpInContents>false</IncludeHelpInContents>
<UsePurposes>
<v8:Value xsi:type="app:ApplicationUsePurpose">PlatformApplication</v8:Value>
<v8:Value xsi:type="app:ApplicationUsePurpose">MobilePlatformApplication</v8:Value>
</UsePurposes>
</Properties>
</Form>
</MetaDataObject>
@@ -0,0 +1,185 @@
<?xml version="1.0" encoding="UTF-8"?>
<Form xmlns="http://v8.1c.ru/8.3/xcf/logform" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:dcscor="http://v8.1c.ru/8.1/data-composition-system/core" xmlns:dcssch="http://v8.1c.ru/8.1/data-composition-system/schema" xmlns:dcsset="http://v8.1c.ru/8.1/data-composition-system/settings" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.20">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Выбор поля отчета</v8:content>
</v8:item>
</Title>
<WindowOpeningMode>LockOwnerWindow</WindowOpeningMode>
<AutoTitle>false</AutoTitle>
<AutoURL>false</AutoURL>
<AutoFillCheck>false</AutoFillCheck>
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1">
<Autofill>false</Autofill>
<ChildItems>
<Button name="Выбрать" id="26">
<Type>CommandBarButton</Type>
<DefaultButton>true</DefaultButton>
<CommandName>Form.Command.Выбрать</CommandName>
<ExtendedTooltip name="ВыбратьРасширеннаяПодсказка" id="27"/>
</Button>
<Button name="ДобавитьФормулу" id="96">
<Type>CommandBarButton</Type>
<CommandName>Form.Command.ДобавитьФормулу</CommandName>
<ExtendedTooltip name="ДобавитьФормулуРасширеннаяПодсказка" id="97"/>
</Button>
<Button name="ИзменитьФормулу" id="98">
<Type>CommandBarButton</Type>
<CommandName>Form.Command.ИзменитьФормулу</CommandName>
<ExtendedTooltip name="ИзменитьФормулуРасширеннаяПодсказка" id="99"/>
</Button>
<Button name="УдалитьФормулу" id="100">
<Type>CommandBarButton</Type>
<CommandName>Form.Command.УдалитьФормулу</CommandName>
<ExtendedTooltip name="УдалитьФормулуРасширеннаяПодсказка" id="101"/>
</Button>
</ChildItems>
</AutoCommandBar>
<Events>
<Event name="OnCreateAtServer">ПриСозданииНаСервере</Event>
</Events>
<ChildItems>
<UsualGroup name="ГруппаДоступныеПоля" id="94">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Доступные поля</v8:content>
</v8:item>
</Title>
<Group>Vertical</Group>
<Behavior>Usual</Behavior>
<Representation>None</Representation>
<ShowTitle>false</ShowTitle>
<ExtendedTooltip name="ГруппаДоступныеПоляРасширеннаяПодсказка" id="95"/>
</UsualGroup>
</ChildItems>
<Attributes>
<Attribute name="КомпоновщикНастроек" id="1">
<Type>
<v8:Type>dcsset:SettingsComposer</v8:Type>
</Type>
</Attribute>
<Attribute name="НастройкиОтчета" id="3">
<Type/>
</Attribute>
<Attribute name="ИмяКоллекцииПолей" id="4">
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Attribute>
<Attribute name="ИдентификаторЭлементаСтруктурыНастроек" id="5">
<Type/>
</Attribute>
<Attribute name="Режим" id="7">
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Attribute>
</Attributes>
<Commands>
<Command name="Выбрать" id="1">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Выбрать</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Выбрать</v8:content>
</v8:item>
</ToolTip>
<Action>Выбрать</Action>
<CurrentRowUse>DontUse</CurrentRowUse>
</Command>
<Command name="ДобавитьФормулу" id="2">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Добавить формулу</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Добавить новую формулу</v8:content>
</v8:item>
</ToolTip>
<Picture>
<xr:Ref>StdPicture.CreateListItem</xr:Ref>
<xr:LoadTransparent>true</xr:LoadTransparent>
</Picture>
<Action>ДобавитьФормулу</Action>
<Representation>Text</Representation>
</Command>
<Command name="ИзменитьФормулу" id="3">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Изменить формулу</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Изменить выбранную формулу</v8:content>
</v8:item>
</ToolTip>
<Picture>
<xr:Ref>StdPicture.Change</xr:Ref>
<xr:LoadTransparent>true</xr:LoadTransparent>
</Picture>
<Action>ИзменитьФормулу</Action>
<Representation>Picture</Representation>
</Command>
<Command name="УдалитьФормулу" id="4">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Удалить формулу</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Удалить выбранную формулу</v8:content>
</v8:item>
</ToolTip>
<Picture>
<xr:Ref>StdPicture.Delete</xr:Ref>
<xr:LoadTransparent>true</xr:LoadTransparent>
</Picture>
<Action>УдалитьФормулу</Action>
<Representation>Picture</Representation>
</Command>
</Commands>
<Parameters>
<Parameter name="КомпоновщикНастроек">
<Type>
<v8:Type>dcsset:SettingsComposer</v8:Type>
</Type>
</Parameter>
<Parameter name="Режим">
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Parameter>
<Parameter name="НастройкиОтчета">
<Type/>
</Parameter>
</Parameters>
</Form>
@@ -0,0 +1,698 @@
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2023, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ЗакрыватьПриВыборе = Ложь;
Инициализировать();
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыДоступныеПоля
#Область ПодключаемыйСписокПолей
&НаКлиенте
Процедура Подключаемый_СписокПолейПередРазворачиванием(Элемент, Строка, Отказ)
КонструкторФормулКлиент.СписокПолейПередРазворачиванием(ЭтотОбъект, Элемент, Строка, Отказ);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_РазвернутьТекущийЭлементСпискаПолей()
КонструкторФормулКлиент.РазвернутьТекущийЭлементСпискаПолей(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ЗаполнитьСписокДоступныхПолей(ПараметрыЗаполнения) Экспорт // АПК:78 процедура вызывается из общего модуля КонструкторФормулКлиент.
ЗаполнитьСписокДоступныхПолей(ПараметрыЗаполнения);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСписокДоступныхПолей(ПараметрыЗаполнения)
КонструкторФормул.ЗаполнитьСписокДоступныхПолей(ЭтотОбъект, ПараметрыЗаполнения);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_СписокПолейВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
ВыбратьИЗакрыть();
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_СписокПолейНачалоПеретаскивания(Элемент, ПараметрыПеретаскивания, Выполнение)
КонструкторФормулКлиент.СписокПолейНачалоПеретаскивания(ЭтотОбъект, Элемент, ПараметрыПеретаскивания, Выполнение);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_СписокПолейПриАктивизацииСтроки(Элемент)
ПодключитьОбработчикОжидания("СкрытьНеиспользуемыеКоманды", 0.1, Истина);
КонецПроцедуры
&НаКлиенте
Процедура СкрытьНеиспользуемыеКоманды()
ИменаКомандРедактированияФормул = ИменаКомандРедактированияФормул();
ИмяКомандыИсключение = "ДобавитьФормулу";
КомандыРедактированияФормул = Новый Массив;
Для Каждого Элемент Из Элементы.ДоступныеПоляКонтекстноеМеню.ПодчиненныеЭлементы Цикл // АПК:275 элемент добавляется программно.
Элемент.Видимость = ТипЗнч(Элемент) = Тип("КнопкаФормы")
И ИменаКомандРедактированияФормул.Найти(Элемент.ИмяКоманды) <> Неопределено;
Если Элемент.Видимость И Элемент.ИмяКоманды <> ИмяКомандыИсключение Тогда
КомандыРедактированияФормул.Добавить(Элемент);
КонецЕсли;
КонецЦикла;
Для Каждого ИмяКоманды Из ИменаКомандРедактированияФормул Цикл
Элемент = Элементы.Найти(ИмяКоманды);
Если Элемент <> Неопределено И Элемент.ИмяКоманды <> ИмяКомандыИсключение Тогда
КомандыРедактированияФормул.Добавить(Элемент);
КонецЕсли;
КонецЦикла;
ПолеСписка = СписокДоступныхПолей(ЭтотОбъект).Поле;
РедактированиеФормулыДоступно = РедактированиеФормулыДоступно(ПолеСписка.ТекущиеДанные);
Для Каждого Элемент Из КомандыРедактированияФормул Цикл
Элемент.Доступность = РедактированиеФормулыДоступно;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_СтрокаПоискаИзменениеТекстаРедактирования(Элемент, Текст, СтандартнаяОбработка)
КонструкторФормулКлиент.СтрокаПоискаИзменениеТекстаРедактирования(ЭтотОбъект, Элемент, Текст, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьПоискВСпискеПолей()
ВыполнитьПоискВСпискеПолей();
КонецПроцедуры
&НаСервере
Процедура ВыполнитьПоискВСпискеПолей()
КонструкторФормул.ВыполнитьПоискВСпискеПолей(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_СтрокаПоискаОчистка(Элемент, СтандартнаяОбработка)
КонструкторФормулКлиент.СтрокаПоискаОчистка(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаСервере
Процедура Подключаемый_ОбработчикКонструктораФормулСервер(Параметр, ДополнительныеПараметры)
КонструкторФормул.ОбработчикКонструктораФормул(ЭтотОбъект, Параметр, ДополнительныеПараметры);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбработчикКонструктораФормулКлиент(Параметр, ДополнительныеПараметры = Неопределено) Экспорт // АПК:78 Процедура вызывается из КонструкторФормулКлиент.НачатьПоискВСпискеПолей
КонструкторФормулКлиент.ОбработчикКонструктораФормул(ЭтотОбъект, Параметр, ДополнительныеПараметры);
Если ДополнительныеПараметры.ВыполнитьНаСервере Тогда
Подключаемый_ОбработчикКонструктораФормулСервер(Параметр, ДополнительныеПараметры);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_НачатьПоискВСпискеПолей()
КонструкторФормулКлиент.НачатьПоискВСпискеПолей(ЭтотОбъект);
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура Выбрать(Команда)
ВыбратьИЗакрыть();
КонецПроцедуры
&НаКлиенте
Процедура ДобавитьФормулу(Команда)
АктивизироватьГруппуФормул(Ложь);
ПараметрыРедактированияФормулы = КонструкторФормулКлиент.ПараметрыРедактированияФормулы();
ПараметрыРедактированияФормулы.Операнды = НастройкиОтчета.АдресСхемы;
ПараметрыРедактированияФормулы.ИмяКоллекцииСКДОперандов = ИмяКоллекцииПолей;
ПараметрыРедактированияФормулы.Наименование = НаименованиеНовогоПоля();
ПараметрыРедактированияФормулы.ДляЗапроса = Истина;
Обработчик = Новый ОписаниеОповещения("ПослеДобавленияФормулы", ЭтотОбъект);
КонструкторФормулКлиент.НачатьРедактированиеФормулы(ПараметрыРедактированияФормулы, Обработчик);
КонецПроцедуры
&НаКлиенте
Процедура ИзменитьФормулу(Команда)
ПолеСписка = СписокДоступныхПолей(ЭтотОбъект).Поле;
Строка = ПолеСписка.ТекущиеДанные;
Если Не РедактированиеФормулыДоступно(Строка) Тогда
Возврат;
КонецЕсли;
ВариантыОтчетовСлужебныйКлиент.ИзменитьФормулу(
ЭтотОбъект, КомпоновщикНастроек.Настройки, Строка.ПутьКДанным, ИмяКоллекцииПолей);
КонецПроцедуры
// Параметры:
// ОписаниеФормулы - ДоступноеПолеКомпоновкиДанных
// - Структура:
// * Формула - Строка
// * ПредставлениеФормулы - Строка
// * Наименование - Строка
// Формула - Структура:
// * Формула - ПользовательскоеПолеВыражениеКомпоновкиДанных
// * КоллекцияПолей - ДоступныеПоляКомпоновкиДанных
//
&НаКлиенте
Процедура ПослеИзмененияФормулы(ОписаниеФормулы, Формула) Экспорт
Если ТипЗнч(ОписаниеФормулы) <> Тип("Структура") Тогда
Возврат;
КонецЕсли;
ВариантыОтчетовСлужебныйКлиент.ПослеИзмененияФормулы(ОписаниеФормулы, Формула);
Список = Элементы.Найти("ДоступныеПоля");
Если Список = Неопределено Тогда
Возврат;
КонецЕсли;
Строка = Список.ТекущиеДанные;
Если Строка <> Неопределено Тогда
Строка.Заголовок = ОписаниеФормулы.Заголовок;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УдалитьФормулу(Команда)
ПолеСписка = СписокДоступныхПолей(ЭтотОбъект).Поле;
Строка = ПолеСписка.ТекущиеДанные;
Если Не РедактированиеФормулыДоступно(Строка) Тогда
Возврат;
КонецЕсли;
Формулы = КомпоновщикНастроек.Настройки.ПользовательскиеПоля.Элементы;
Формула = ВариантыОтчетовСлужебныйКлиентСервер.ФормулаПоПутиКДанным(КомпоновщикНастроек.Настройки, Строка.ПутьКДанным);
Формулы.Удалить(Формула);
ОбновитьКоллекцииПолей();
АктивизироватьГруппуФормул();
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
Процедура Инициализировать()
КомпоновщикНастроек = Параметры.КомпоновщикНастроек;
Режим = Параметры.Режим;
НастройкиОтчета = Параметры.НастройкиОтчета;
КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(НастройкиОтчета.АдресСхемы));
УстановитьИмяКоллекции();
УстановитьИдентификаторЭлементаСтруктурыНастроек();
ИнициализироватьСписокДоступныхПолей();
АктивизироватьДоступноеПоле();
КонецПроцедуры
&НаСервере
Процедура УстановитьИмяКоллекции()
Режимы = Новый Соответствие;
Режимы.Вставить("Отборы", "ДоступныеПоляОтбора");
Режимы.Вставить("ВыбранныеПоля", "ДоступныеПоляВыбора");
Режимы.Вставить("Сортировка", "ДоступныеПоляПорядка");
Режимы.Вставить("ПоляГруппировки", "ДоступныеПоляГруппировок");
Режимы.Вставить("СоставГруппировки", "ДоступныеПоляГруппировок");
Режимы.Вставить("СтруктураВарианта", "ДоступныеПоляГруппировок");
Режимы.Вставить("ПоляОформления", "УсловноеОформление.ДоступныеПоляПолей");
Режимы.Вставить("УсловияОформления", "УсловноеОформление.ДоступныеПоляОтбора");
ИмяКоллекцииПолей = Режимы[Режим];
Если ИмяКоллекцииПолей = Неопределено Тогда
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Некорректное значение параметра ""Режим"": ""%1"".'"), Строка(Режим));
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьИдентификаторЭлементаСтруктурыНастроек()
ИдентификаторЭлементаСтруктурыНастроек = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(
Параметры, "ИдентификаторЭлементаСтруктурыНастроек");
Если ИдентификаторЭлементаСтруктурыНастроек = Неопределено Тогда
Возврат;
КонецЕсли;
ЭлементСтруктурыНастроек = КомпоновщикНастроек.Настройки.ПолучитьОбъектПоИдентификатору(ИдентификаторЭлементаСтруктурыНастроек);
Если ТипЗнч(ЭлементСтруктурыНастроек) = Тип("КоллекцияЭлементовСтруктурыТаблицыКомпоновкиДанных")
Или ТипЗнч(ЭлементСтруктурыНастроек) = Тип("КоллекцияЭлементовСтруктурыДиаграммыКомпоновкиДанных")
Или ТипЗнч(ЭлементСтруктурыНастроек) = Тип("ТаблицаКомпоновкиДанных")
Или ТипЗнч(ЭлементСтруктурыНастроек) = Тип("ДиаграммаКомпоновкиДанных") Тогда
ИдентификаторЭлементаСтруктурыНастроек = Неопределено;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ИнициализироватьСписокДоступныхПолей()
// КонструкторФормул
ПараметрыДобавленияСпискаПолей = КонструкторФормул.ПараметрыДобавленияСпискаПолей();
ПараметрыДобавленияСпискаПолей.МестоРазмещенияСписка = МестоРазмещенияСписка(Элементы);
ПараметрыДобавленияСпискаПолей.КоллекцииПолей = КоллекцииПолей();
ПараметрыДобавленияСпискаПолей.ОбработчикиСписка.Вставить("Выбор", "Подключаемый_СписокПолейВыбор");
ПараметрыДобавленияСпискаПолей.ОбработчикиСписка.Вставить("ПриАктивизацииСтроки", "Подключаемый_СписокПолейПриАктивизацииСтроки");
ПараметрыДобавленияСпискаПолей.ИспользоватьФоновыйПоиск = Истина;
КонструкторФормул.ДобавитьСписокПолейНаФорму(ЭтотОбъект, ПараметрыДобавленияСпискаПолей);
// Конец КонструкторФормул
ДобавитьКомандыРедактированияФормулВКонтекстноеМеню();
КонецПроцедуры
&НаСервере
Процедура ДобавитьКомандыРедактированияФормулВКонтекстноеМеню()
ПолеСписка = СписокДоступныхПолей(ЭтотОбъект).Поле;
ИмяКоманднойПанелиРедактированияФормул = "КомандыРедактированияФормул";
ИменаКомандРедактированияФормул = ИменаКомандРедактированияФормул();
Для Каждого ИмяКоманды Из ИменаКомандРедактированияФормул Цикл
ИмяКнопки = "КонтекстноеМеню" + ИмяКоманднойПанелиРедактированияФормул + ИмяКоманды;
Кнопка = Элементы.Добавить(ИмяКнопки, Тип("КнопкаФормы"), ПолеСписка.КонтекстноеМеню);
Кнопка.ИмяКоманды = ИмяКоманды;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура АктивизироватьДоступноеПоле()
Поле = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Параметры, "ПолеКД");
Если Поле = Неопределено Тогда
Возврат;
КонецЕсли;
КоллекцияПолей = КоллекцияПолей(ЭтотОбъект);
ДоступноеПоле = КоллекцияПолей.НайтиПоле(Поле);
Если ДоступноеПоле = Неопределено Тогда
Возврат;
КонецЕсли;
ПолеДоступныхПолей = Элементы.ДоступныеПоля; // АПК:275 элементы формируются программно.
ДанныеДоступныхПолей = ЭтотОбъект[ПолеДоступныхПолей.ПутьКДанным].ПолучитьЭлементы();
Для Каждого Строка Из ДанныеДоступныхПолей Цикл
Если Строка.Поле = Поле Тогда
ПолеДоступныхПолей.ТекущаяСтрока = Строка.ПолучитьИдентификатор();
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьИЗакрыть()
ОчиститьСообщения();
ПолеСписка = СписокДоступныхПолей(ЭтотОбъект).Поле;
Если ТипЗнч(ПолеСписка.ТекущиеДанные) = Тип("ДанныеФормыЭлементДерева") И ПолеСписка.ТекущиеДанные.Папка Тогда
ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Выберите поле отчета, а не группу.'"));
Возврат;
ИначеЕсли ТипЗнч(ПолеСписка.ТекущиеДанные) <> Тип("ДанныеФормыЭлементДерева") Тогда
ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Выберите поле отчета.'"));
Возврат;
КонецЕсли;
ВыбранноеПоле = КонструкторФормулКлиент.ВыбранноеПолеВСпискеПолей(ЭтотОбъект);
ДоступноеПоле = Неопределено;
Родитель = ВыбранноеПоле.Родитель; // см. КонструкторФормулКлиент.ВыбранноеПолеВСпискеПолей
Если Родитель <> Неопределено
И Родитель.Имя = ИдентификаторГруппыФормул() Тогда
ДоступноеПоле = ВариантыОтчетовСлужебныйКлиентСервер.ФормулаПоПутиКДанным(
КомпоновщикНастроек.Настройки, ВыбранноеПоле.ПутьКДанным);
Если ТипЗнч(ДоступноеПоле) <> Тип("ПользовательскоеПолеВыражениеКомпоновкиДанных") Тогда
ДоступноеПоле = Неопределено;
КонецЕсли;
ИначеЕсли ИмяКоллекцииПолей = "ДоступныеПоляГруппировок"
И ВыбранноеПоле.Имя = "ДетальныеЗаписи" Тогда
ДоступноеПоле = "<>";
КонецЕсли;
Если ДоступноеПоле = Неопределено Тогда
КоллекцияПолей = КоллекцияПолей(ЭтотОбъект);
Поле = Новый ПолеКомпоновкиДанных(ВыбранноеПоле.ПутьКДанным);
ДоступноеПоле = КоллекцияПолей.НайтиПоле(Поле);
КонецЕсли;
ОповеститьОВыборе(ДоступноеПоле);
Закрыть(ДоступноеПоле);
КонецПроцедуры
&НаКлиенте
Процедура ПослеДобавленияФормулы(ОписаниеФормулы, ДополнительныеПараметры) Экспорт
Если ТипЗнч(ОписаниеФормулы) <> Тип("Структура")
Или Не ОписаниеФормулы.Свойство("Формула") Тогда
Возврат;
КонецЕсли;
ВариантыОтчетовСлужебныйКлиент.ДобавитьФормулу(КомпоновщикНастроек.Настройки, КоллекцияПолей(ЭтотОбъект), ОписаниеФормулы);
ОбновитьКоллекцииПолей();
АктивизироватьГруппуФормул();
КонецПроцедуры
&НаСервере
Процедура ОбновитьКоллекцииПолей()
КонструкторФормул.ОбновитьКоллекцииПолей(ЭтотОбъект, КоллекцииПолей());
КонецПроцедуры
&НаКлиенте
Функция НаименованиеНовогоПоля()
ЗаголовкиПолей = Новый Соответствие;
ПользовательскиеПоля = КомпоновщикНастроек.Настройки.ДоступныеПоляВыбора.Элементы.Найти(Новый ПолеКомпоновкиДанных("ПользовательскиеПоля"));
Если ПользовательскиеПоля = Неопределено Тогда
Возврат НСтр("ru = 'Поле 1'");
КонецЕсли;
Для Каждого Поле Из ПользовательскиеПоля.Элементы Цикл
ЗаголовкиПолей.Вставить(Поле.Заголовок, Истина);
КонецЦикла;
Для НомерПоля = 1 По 100 Цикл
НаименованиеПоля = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Поле %1'"), НомерПоля);
Если ЗаголовкиПолей[НаименованиеПоля] = Неопределено Тогда
Возврат НаименованиеПоля;
КонецЕсли;
КонецЦикла;
Возврат НСтр("ru = 'Поле'");
КонецФункции
#Область Общее
&НаКлиентеНаСервереБезКонтекста
Функция МестоРазмещенияСписка(Элементы)
Возврат Элементы.ГруппаДоступныеПоля;
КонецФункции
// Параметры:
// Форма - ФормаКлиентскогоПриложения
//
// Возвращаемое значение:
// Структура:
// * Поле - ТаблицаФормы:
// ** Имя - Строка
// ** Заголовок - Строка
// ** Поле - ОписаниеТипов
// ** ПутьКДанным - Строка
// ** ПредставлениеПутиКДанным - Строка
// ** Тип - ОписаниеТипов
// ** Картинка - Картинка
// ** Папка - Булево
// ** Таблица - Булево
// ** СвойНаборПолей - Булево
// ** Отступ - Строка
// ** СоответствуетОтбору - Булево
// ** ПодчиненныйЭлементСоответствуетОтбору - Булево
// * Данные - ДанныеФормыДерево:
// ** Имя - Строка
// ** Заголовок - Строка
// ** Поле - ОписаниеТипов
// ** ПутьКДанным - Строка
// ** ПредставлениеПутиКДанным - Строка
// ** Тип - ОписаниеТипов
// ** Картинка - Картинка
// ** Папка - Булево
// ** Таблица - Булево
// ** СвойНаборПолей - Булево
// ** Отступ - Строка
// ** СоответствуетОтбору - Булево
// ** ПодчиненныйЭлементСоответствуетОтбору - Булево
//
&НаКлиентеНаСервереБезКонтекста
Функция СписокДоступныхПолей(Форма)
СписокДоступныхПолей = Новый Структура("Поле, Данные");
МестоРазмещенияСписка = МестоРазмещенияСписка(Форма.Элементы);
Для Каждого Элемент Из МестоРазмещенияСписка.ПодчиненныеЭлементы Цикл
Если ТипЗнч(Элемент) = Тип("ТаблицаФормы") Тогда
СписокДоступныхПолей.Поле = Элемент;
СписокДоступныхПолей.Данные = Форма[Элемент.Имя];
Прервать;
КонецЕсли;
КонецЦикла;
Возврат СписокДоступныхПолей;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ИдентификаторГруппыФормул()
Возврат "ПользовательскиеПоля";
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ИменаКомандРедактированияФормул()
Возврат СтрРазделить("ДобавитьФормулу, ИзменитьФормулу, УдалитьФормулу", ", ", Ложь);
КонецФункции
// Параметры:
// ВыбранноеПоле - см. СписокДоступныхПолей.Поле
//
// Возвращаемое значение:
// Булево
//
&НаКлиентеНаСервереБезКонтекста
Функция РедактированиеФормулыДоступно(ВыбранноеПоле)
Если ТипЗнч(ВыбранноеПоле) <> Тип("ДанныеФормыЭлементДерева") Тогда
Возврат Ложь;
КонецЕсли;
Родитель = ВыбранноеПоле.ПолучитьРодителя();
Возврат Родитель <> Неопределено И Родитель.Имя = ИдентификаторГруппыФормул();
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция КоллекцияПолей(Форма)
Настройки = Форма.КомпоновщикНастроек.Настройки;
Если Форма.ИмяКоллекцииПолей = "ДоступныеПоляГруппировок" Тогда
Если Форма.ИдентификаторЭлементаСтруктурыНастроек = Неопределено Тогда
ЭлементСтруктурыНастроек = Настройки;
Иначе
ЭлементСтруктурыНастроек = Настройки.ПолучитьОбъектПоИдентификатору(
Форма.ИдентификаторЭлементаСтруктурыНастроек);
КонецЕсли;
Если ТипЗнч(ЭлементСтруктурыНастроек) = Тип("НастройкиКомпоновкиДанных") Тогда
Возврат ЭлементСтруктурыНастроек.ДоступныеПоляГруппировок;
Иначе
Возврат ЭлементСтруктурыНастроек.ПоляГруппировки.ДоступныеПоляПолейГруппировок;
КонецЕсли;
ИначеЕсли СтрНайти(Форма.ИмяКоллекцииПолей, ".") > 0 Тогда
ОписаниеИмениКоллекцииПолей = СтрРазделить(Форма.ИмяКоллекцииПолей, ".");
КоллекцияПолей = Настройки;
Для Каждого Элемент Из ОписаниеИмениКоллекцииПолей Цикл
КоллекцияПолей = КоллекцияПолей[Элемент];
КонецЦикла;
Возврат КоллекцияПолей;
КонецЕсли;
Возврат Настройки[Форма.ИмяКоллекцииПолей];
КонецФункции
&НаСервере
Функция КоллекцииПолей()
КоллекцииПолей = Новый Массив;
КоллекцииПолей.Добавить(КоллекцияПолей(ЭтотОбъект));
Если КомпоновщикНастроек.Настройки.ПользовательскиеПоля.Элементы.Количество() = 0 Тогда
КоллекцииПолей.Добавить(ДополнительноеПолеГруппыФормул());
КонецЕсли;
Если Режим = "СтруктураВарианта" Тогда
КоллекцииПолей.Добавить(ДополнительноеПолеДетальныхЗаписей());
КонецЕсли;
Возврат КоллекцииПолей;
КонецФункции
&НаСервере
Функция ДополнительноеПолеГруппыФормул()
ТаблицаПолей = КонструкторФормул.ТаблицаПолей();
Поле = ТаблицаПолей.Добавить();
Поле.Идентификатор = ИдентификаторГруппыФормул();
Поле.Представление = НСтр("ru = 'Формулы'");
Поле.Порядок = 99;
Возврат КонструкторФормул.КоллекцияПолей(ТаблицаПолей);
КонецФункции
&НаСервере
Функция ДополнительноеПолеДетальныхЗаписей()
ТаблицаПолей = КонструкторФормул.ТаблицаПолей();
Поле = ТаблицаПолей.Добавить();
Поле.Идентификатор = "ДетальныеЗаписи";
Поле.Представление = НСтр("ru = '<Детальные записи>'");
Возврат КонструкторФормул.КоллекцияПолей(ТаблицаПолей);
КонецФункции
&НаКлиенте
Функция ГруппаФормул()
Список = СписокДоступныхПолей(ЭтотОбъект).Данные;
Строки = Список.ПолучитьЭлементы();
Индекс = Строки.Количество() - 1;
Пока Индекс >= 0 Цикл
Строка = Строки[Индекс];
Если Строка.Имя = ИдентификаторГруппыФормул() Тогда
Возврат Строка;
КонецЕсли;
Индекс = Индекс - 1;
КонецЦикла;
Возврат Неопределено;
КонецФункции
&НаКлиенте
Процедура АктивизироватьГруппуФормул(РазвернутьФормулы = Истина)
ГруппаФормул = ГруппаФормул();
ПолеСписка = СписокДоступныхПолей(ЭтотОбъект).Поле;
ПолеСписка.ТекущаяСтрока = ГруппаФормул.ПолучитьИдентификатор();
ТекущийЭлемент = ПолеСписка;
Если РазвернутьФормулы Тогда
ПолеСписка.Развернуть(ГруппаФормул.ПолучитьИдентификатор());
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#КонецОбласти
@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.20">
<Form uuid="c888ccc1-9116-4b88-b950-aeabd54191c0">
<Properties>
<Name>ВыборФинансовогоПериода</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Выбор финансового периода</v8:content>
</v8:item>
</Synonym>
<Comment/>
<FormType>Managed</FormType>
<IncludeHelpInContents>false</IncludeHelpInContents>
<UsePurposes>
<v8:Value xsi:type="app:ApplicationUsePurpose">PlatformApplication</v8:Value>
</UsePurposes>
</Properties>
</Form>
</MetaDataObject>
@@ -0,0 +1,896 @@
<?xml version="1.0" encoding="UTF-8"?>
<Form xmlns="http://v8.1c.ru/8.3/xcf/logform" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:dcscor="http://v8.1c.ru/8.1/data-composition-system/core" xmlns:dcssch="http://v8.1c.ru/8.1/data-composition-system/schema" xmlns:dcsset="http://v8.1c.ru/8.1/data-composition-system/settings" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.20">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Выбор периода</v8:content>
</v8:item>
</Title>
<WindowOpeningMode>LockOwnerWindow</WindowOpeningMode>
<AutoTitle>false</AutoTitle>
<HorizontalAlign>Center</HorizontalAlign>
<CommandBarLocation>None</CommandBarLocation>
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1"/>
<Events>
<Event name="OnCreateAtServer">ПриСозданииНаСервере</Event>
</Events>
<ChildItems>
<UsualGroup name="ГруппаВыборГода" id="99">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Выбор года</v8:content>
</v8:item>
</Title>
<HorizontalStretch>true</HorizontalStretch>
<Group>Horizontal</Group>
<HorizontalAlign>Center</HorizontalAlign>
<Behavior>Usual</Behavior>
<Representation>None</Representation>
<ShowTitle>false</ShowTitle>
<ExtendedTooltip name="ГруппаВыборГодаРасширеннаяПодсказка" id="100"/>
<ChildItems>
<UsualGroup name="ПерейтиНаГодНазадВарианты" id="187">
<EnableContentChange>true</EnableContentChange>
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Перейти на год назад (варианты)</v8:content>
</v8:item>
</Title>
<Behavior>Usual</Behavior>
<Representation>None</Representation>
<ShowTitle>false</ShowTitle>
<ExtendedTooltip name="ПерейтиНаГодНазадВариантыРасширеннаяПодсказка" id="188"/>
<ChildItems>
<Button name="ПерейтиНаГодНазадДоступно" id="90">
<Type>UsualButton</Type>
<Width>6</Width>
<CommandName>Form.Command.ПерейтиНаГодНазад</CommandName>
<Font ref="style:LargeTextFont" kind="StyleItem"/>
<ShapeRepresentation>WhenActive</ShapeRepresentation>
<ExtendedTooltip name="ПерейтиНаГодНазадДоступноРасширеннаяПодсказка" id="91"/>
</Button>
<LabelDecoration name="ПерейтиНаГодНазадНедоступно" id="184">
<Visible>false</Visible>
<Width>6</Width>
<HorizontalStretch>false</HorizontalStretch>
<VerticalStretch>false</VerticalStretch>
<Font ref="style:LargeTextFont" kind="StyleItem"/>
<ContextMenu name="ПерейтиНаГодНазадНедоступноКонтекстноеМеню" id="185"/>
<ExtendedTooltip name="ПерейтиНаГодНазадНедоступноРасширеннаяПодсказка" id="186"/>
</LabelDecoration>
</ChildItems>
</UsualGroup>
<LabelField name="ДатаНачалаГода" id="92">
<DataPath>ДатаНачалаГода</DataPath>
<TitleLocation>None</TitleLocation>
<HorizontalAlign>Center</HorizontalAlign>
<Format>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>ДФ='yyyy "год"'</v8:content>
</v8:item>
</Format>
<ContextMenu name="ДатаНачалаГодаКонтекстноеМеню" id="93"/>
<ExtendedTooltip name="ДатаНачалаГодаРасширеннаяПодсказка" id="94"/>
</LabelField>
<Button name="ПерейтиНаГодВперед" id="95">
<Type>UsualButton</Type>
<Width>6</Width>
<CommandName>Form.Command.ПерейтиНаГодВперед</CommandName>
<Font ref="style:LargeTextFont" kind="StyleItem"/>
<ShapeRepresentation>WhenActive</ShapeRepresentation>
<ExtendedTooltip name="ПерейтиНаГодВпередРасширеннаяПодсказка" id="96"/>
</Button>
</ChildItems>
</UsualGroup>
<UsualGroup name="ГруппаВыборПериода" id="176">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Выбор периода</v8:content>
</v8:item>
</Title>
<Group>Horizontal</Group>
<Behavior>Usual</Behavior>
<Representation>None</Representation>
<ShowTitle>false</ShowTitle>
<ExtendedTooltip name="ГруппаВыборПериодаРасширеннаяПодсказка" id="177"/>
<ChildItems>
<UsualGroup name="Месяцы" id="178">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Месяцы</v8:content>
</v8:item>
</Title>
<HorizontalStretch>false</HorizontalStretch>
<Group>Vertical</Group>
<Behavior>Usual</Behavior>
<Representation>None</Representation>
<ShowTitle>false</ShowTitle>
<ExtendedTooltip name="МесяцыРасширеннаяПодсказка" id="179"/>
<ChildItems>
<UsualGroup name="Квартал1" id="150">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Квартал 1</v8:content>
</v8:item>
</Title>
<Group>Horizontal</Group>
<Behavior>Usual</Behavior>
<Representation>None</Representation>
<United>false</United>
<ShowTitle>false</ShowTitle>
<ExtendedTooltip name="Квартал1РасширеннаяПодсказка" id="151"/>
<ChildItems>
<Button name="ВыбратьМесяц1" id="101">
<Type>UsualButton</Type>
<HorizontalStretch>true</HorizontalStretch>
<CommandName>Form.Command.ВыбратьМесяц1</CommandName>
<ShapeRepresentation>WhenActive</ShapeRepresentation>
<ExtendedTooltip name="ВыбратьМесяц1РасширеннаяПодсказка" id="102"/>
</Button>
<Button name="ВыбратьМесяц2" id="103">
<Type>UsualButton</Type>
<HorizontalStretch>true</HorizontalStretch>
<CommandName>Form.Command.ВыбратьМесяц2</CommandName>
<ShapeRepresentation>WhenActive</ShapeRepresentation>
<ExtendedTooltip name="ВыбратьМесяц2РасширеннаяПодсказка" id="104"/>
</Button>
<Button name="ВыбратьМесяц3" id="105">
<Type>UsualButton</Type>
<HorizontalStretch>true</HorizontalStretch>
<CommandName>Form.Command.ВыбратьМесяц3</CommandName>
<ShapeRepresentation>WhenActive</ShapeRepresentation>
<ExtendedTooltip name="ВыбратьМесяц3РасширеннаяПодсказка" id="106"/>
</Button>
</ChildItems>
</UsualGroup>
<UsualGroup name="Квартал2" id="154">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Квартал 2</v8:content>
</v8:item>
</Title>
<Group>Horizontal</Group>
<Behavior>Usual</Behavior>
<Representation>None</Representation>
<United>false</United>
<ShowTitle>false</ShowTitle>
<ExtendedTooltip name="Квартал2РасширеннаяПодсказка" id="155"/>
<ChildItems>
<Button name="ВыбратьМесяц4" id="109">
<Type>UsualButton</Type>
<HorizontalStretch>true</HorizontalStretch>
<CommandName>Form.Command.ВыбратьМесяц4</CommandName>
<ShapeRepresentation>WhenActive</ShapeRepresentation>
<ExtendedTooltip name="ВыбратьМесяц4РасширеннаяПодсказка" id="110"/>
</Button>
<Button name="ВыбратьМесяц5" id="111">
<Type>UsualButton</Type>
<HorizontalStretch>true</HorizontalStretch>
<CommandName>Form.Command.ВыбратьМесяц5</CommandName>
<ShapeRepresentation>WhenActive</ShapeRepresentation>
<ExtendedTooltip name="ВыбратьМесяц5РасширеннаяПодсказка" id="112"/>
</Button>
<Button name="ВыбратьМесяц6" id="113">
<Type>UsualButton</Type>
<HorizontalStretch>true</HorizontalStretch>
<CommandName>Form.Command.ВыбратьМесяц6</CommandName>
<ShapeRepresentation>WhenActive</ShapeRepresentation>
<ExtendedTooltip name="ВыбратьМесяц6РасширеннаяПодсказка" id="114"/>
</Button>
</ChildItems>
</UsualGroup>
<UsualGroup name="Квартал3" id="158">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Квартал 3</v8:content>
</v8:item>
</Title>
<Group>Horizontal</Group>
<Behavior>Usual</Behavior>
<Representation>None</Representation>
<United>false</United>
<ShowTitle>false</ShowTitle>
<ExtendedTooltip name="Квартал3РасширеннаяПодсказка" id="159"/>
<ChildItems>
<Button name="ВыбратьМесяц7" id="117">
<Type>UsualButton</Type>
<HorizontalStretch>true</HorizontalStretch>
<CommandName>Form.Command.ВыбратьМесяц7</CommandName>
<ShapeRepresentation>WhenActive</ShapeRepresentation>
<ExtendedTooltip name="ВыбратьМесяц7РасширеннаяПодсказка" id="118"/>
</Button>
<Button name="ВыбратьМесяц8" id="119">
<Type>UsualButton</Type>
<HorizontalStretch>true</HorizontalStretch>
<CommandName>Form.Command.ВыбратьМесяц8</CommandName>
<ShapeRepresentation>WhenActive</ShapeRepresentation>
<ExtendedTooltip name="ВыбратьМесяц8РасширеннаяПодсказка" id="120"/>
</Button>
<Button name="ВыбратьМесяц9" id="121">
<Type>UsualButton</Type>
<HorizontalStretch>true</HorizontalStretch>
<CommandName>Form.Command.ВыбратьМесяц9</CommandName>
<ShapeRepresentation>WhenActive</ShapeRepresentation>
<ExtendedTooltip name="ВыбратьМесяц9РасширеннаяПодсказка" id="122"/>
</Button>
</ChildItems>
</UsualGroup>
<UsualGroup name="Квартал4" id="162">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Квартал 4</v8:content>
</v8:item>
</Title>
<Group>Horizontal</Group>
<Behavior>Usual</Behavior>
<Representation>None</Representation>
<United>false</United>
<ShowTitle>false</ShowTitle>
<ExtendedTooltip name="Квартал4РасширеннаяПодсказка" id="163"/>
<ChildItems>
<Button name="ВыбратьМесяц10" id="125">
<Type>UsualButton</Type>
<HorizontalStretch>true</HorizontalStretch>
<CommandName>Form.Command.ВыбратьМесяц10</CommandName>
<ShapeRepresentation>WhenActive</ShapeRepresentation>
<ExtendedTooltip name="ВыбратьМесяц10РасширеннаяПодсказка" id="126"/>
</Button>
<Button name="ВыбратьМесяц11" id="127">
<Type>UsualButton</Type>
<HorizontalStretch>true</HorizontalStretch>
<CommandName>Form.Command.ВыбратьМесяц11</CommandName>
<ShapeRepresentation>WhenActive</ShapeRepresentation>
<ExtendedTooltip name="ВыбратьМесяц11РасширеннаяПодсказка" id="128"/>
</Button>
<Button name="ВыбратьМесяц12" id="129">
<Type>UsualButton</Type>
<HorizontalStretch>true</HorizontalStretch>
<CommandName>Form.Command.ВыбратьМесяц12</CommandName>
<ShapeRepresentation>WhenActive</ShapeRepresentation>
<ExtendedTooltip name="ВыбратьМесяц12РасширеннаяПодсказка" id="130"/>
</Button>
</ChildItems>
</UsualGroup>
</ChildItems>
</UsualGroup>
<UsualGroup name="Кварталы" id="180">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Кварталы</v8:content>
</v8:item>
</Title>
<HorizontalStretch>false</HorizontalStretch>
<Group>Vertical</Group>
<Behavior>Usual</Behavior>
<Representation>StrongSeparation</Representation>
<ShowTitle>false</ShowTitle>
<ExtendedTooltip name="КварталыРасширеннаяПодсказка" id="181"/>
<ChildItems>
<Button name="ВыбратьКвартал1" id="107">
<Type>UsualButton</Type>
<HorizontalStretch>true</HorizontalStretch>
<CommandName>Form.Command.ВыбратьКвартал1</CommandName>
<BackColor>style:ИтогиФонГруппы</BackColor>
<ShapeRepresentation>WhenActive</ShapeRepresentation>
<ExtendedTooltip name="ВыбратьКвартал1РасширеннаяПодсказка" id="108"/>
</Button>
<Button name="ВыбратьКвартал2" id="115">
<Type>UsualButton</Type>
<HorizontalStretch>true</HorizontalStretch>
<CommandName>Form.Command.ВыбратьКвартал2</CommandName>
<BackColor>style:ИтогиФонГруппы</BackColor>
<ShapeRepresentation>WhenActive</ShapeRepresentation>
<ExtendedTooltip name="ВыбратьКвартал2РасширеннаяПодсказка" id="116"/>
</Button>
<Button name="ВыбратьКвартал3" id="123">
<Type>UsualButton</Type>
<HorizontalStretch>true</HorizontalStretch>
<CommandName>Form.Command.ВыбратьКвартал3</CommandName>
<BackColor>style:ИтогиФонГруппы</BackColor>
<ShapeRepresentation>WhenActive</ShapeRepresentation>
<ExtendedTooltip name="ВыбратьКвартал3РасширеннаяПодсказка" id="124"/>
</Button>
<Button name="ВыбратьКвартал4" id="131">
<Type>UsualButton</Type>
<HorizontalStretch>true</HorizontalStretch>
<CommandName>Form.Command.ВыбратьКвартал4</CommandName>
<BackColor>style:ИтогиФонГруппы</BackColor>
<ShapeRepresentation>WhenActive</ShapeRepresentation>
<ExtendedTooltip name="ВыбратьКвартал4РасширеннаяПодсказка" id="132"/>
</Button>
</ChildItems>
</UsualGroup>
<UsualGroup name="НарастающимИтогом" id="182">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Нарастающим итогом</v8:content>
</v8:item>
</Title>
<HorizontalStretch>false</HorizontalStretch>
<Group>Vertical</Group>
<Behavior>Usual</Behavior>
<Representation>StrongSeparation</Representation>
<ShowTitle>false</ShowTitle>
<ExtendedTooltip name="НарастающимИтогомРасширеннаяПодсказка" id="183"/>
<ChildItems>
<Button name="ВыбратьДень" id="174">
<Type>UsualButton</Type>
<HorizontalStretch>true</HorizontalStretch>
<CommandName>Form.Command.ВыбратьДень</CommandName>
<ShapeRepresentation>WhenActive</ShapeRepresentation>
<ExtendedTooltip name="ВыбратьДеньРасширеннаяПодсказка" id="175"/>
</Button>
<Button name="ВыбратьПолугодие" id="133">
<Type>UsualButton</Type>
<HorizontalStretch>true</HorizontalStretch>
<CommandName>Form.Command.ВыбратьПолугодие</CommandName>
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>полугодие</v8:content>
</v8:item>
</Title>
<ShapeRepresentation>WhenActive</ShapeRepresentation>
<ExtendedTooltip name="ВыбратьПолугодиеРасширеннаяПодсказка" id="134"/>
</Button>
<Button name="Выбрать9Месяцев" id="137">
<Type>UsualButton</Type>
<HorizontalStretch>true</HorizontalStretch>
<CommandName>Form.Command.Выбрать9Месяцев</CommandName>
<ShapeRepresentation>WhenActive</ShapeRepresentation>
<ExtendedTooltip name="Выбрать9МесяцевРасширеннаяПодсказка" id="138"/>
</Button>
<Button name="ВыбратьГод" id="139">
<Type>UsualButton</Type>
<HorizontalStretch>true</HorizontalStretch>
<CommandName>Form.Command.ВыбратьГод</CommandName>
<ShapeRepresentation>WhenActive</ShapeRepresentation>
<ExtendedTooltip name="ВыбратьГодРасширеннаяПодсказка" id="140"/>
</Button>
</ChildItems>
</UsualGroup>
</ChildItems>
</UsualGroup>
<UsualGroup name="ГруппаОчиститьПериод" id="193">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Очистить период</v8:content>
</v8:item>
</Title>
<Group>AlwaysHorizontal</Group>
<HorizontalAlign>Center</HorizontalAlign>
<Behavior>Usual</Behavior>
<Representation>None</Representation>
<ShowTitle>false</ShowTitle>
<ExtendedTooltip name="ГруппаОчиститьПериодРасширеннаяПодсказка" id="194"/>
<ChildItems>
<Button name="ОчиститьПериод" id="189">
<Type>UsualButton</Type>
<CommandName>Form.Command.ОчиститьПериод</CommandName>
<ShapeRepresentation>WhenActive</ShapeRepresentation>
<ExtendedTooltip name="ОчиститьПериодРасширеннаяПодсказка" id="190"/>
</Button>
<Button name="ПерейтиКСтандартномуВариантуПериода" id="195">
<Type>UsualButton</Type>
<CommandName>Form.Command.ПерейтиКСтандартномуВариантуПериода</CommandName>
<ShapeRepresentation>WhenActive</ShapeRepresentation>
<ExtendedTooltip name="ПерейтиКСтандартномуВариантуПериодаРасширеннаяПодсказка" id="196"/>
</Button>
</ChildItems>
</UsualGroup>
</ChildItems>
<Attributes>
<Attribute name="НачалоПериода" id="2">
<Type>
<v8:Type>xs:dateTime</v8:Type>
<v8:DateQualifiers>
<v8:DateFractions>Date</v8:DateFractions>
</v8:DateQualifiers>
</Type>
</Attribute>
<Attribute name="КонецПериода" id="3">
<Type>
<v8:Type>xs:dateTime</v8:Type>
<v8:DateQualifiers>
<v8:DateFractions>Date</v8:DateFractions>
</v8:DateQualifiers>
</Type>
</Attribute>
<Attribute name="ДатаНачалаГода" id="4">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Дата начала года</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>xs:dateTime</v8:Type>
<v8:DateQualifiers>
<v8:DateFractions>Date</v8:DateFractions>
</v8:DateQualifiers>
</Type>
</Attribute>
<Attribute name="ИмяТекущегоЭлемента" id="5">
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Attribute>
<Attribute name="ОграничениеСнизу" id="1">
<Type>
<v8:Type>xs:dateTime</v8:Type>
<v8:DateQualifiers>
<v8:DateFractions>Date</v8:DateFractions>
</v8:DateQualifiers>
</Type>
</Attribute>
<Attribute name="ВыбранныйГодОграничен" id="6">
<Type>
<v8:Type>xs:boolean</v8:Type>
</Type>
</Attribute>
<Attribute name="Период" id="7">
<Type>
<v8:Type>v8:StandardPeriod</v8:Type>
</Type>
</Attribute>
<Attribute name="ИмяКоманды" id="8">
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Attribute>
</Attributes>
<Commands>
<Command name="ПерейтиНаГодНазад" id="1">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>&lt;</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Перейти на год назад</v8:content>
</v8:item>
</ToolTip>
<Action>ПерейтиНаГодНазад</Action>
<CurrentRowUse>DontUse</CurrentRowUse>
</Command>
<Command name="ПерейтиНаГодВперед" id="2">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>&gt;</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Перейти на год вперед</v8:content>
</v8:item>
</ToolTip>
<Action>ПерейтиНаГодВперед</Action>
<CurrentRowUse>DontUse</CurrentRowUse>
</Command>
<Command name="ВыбратьМесяц1" id="3">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>январь</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Выбрать январь</v8:content>
</v8:item>
</ToolTip>
<Action>ВыбратьМесяц1</Action>
<CurrentRowUse>DontUse</CurrentRowUse>
</Command>
<Command name="ВыбратьМесяц2" id="4">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>февраль</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Выбрать февраль</v8:content>
</v8:item>
</ToolTip>
<Action>ВыбратьМесяц2</Action>
<CurrentRowUse>DontUse</CurrentRowUse>
</Command>
<Command name="ВыбратьМесяц3" id="5">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>март</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Выбрать март</v8:content>
</v8:item>
</ToolTip>
<Action>ВыбратьМесяц3</Action>
<CurrentRowUse>DontUse</CurrentRowUse>
</Command>
<Command name="ВыбратьМесяц4" id="6">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>апрель</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Выбрать апрель</v8:content>
</v8:item>
</ToolTip>
<Action>ВыбратьМесяц4</Action>
<CurrentRowUse>DontUse</CurrentRowUse>
</Command>
<Command name="ВыбратьМесяц5" id="7">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>май</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Выбрать май</v8:content>
</v8:item>
</ToolTip>
<Action>ВыбратьМесяц5</Action>
<CurrentRowUse>DontUse</CurrentRowUse>
</Command>
<Command name="ВыбратьМесяц6" id="8">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>июнь</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Выбрать июнь</v8:content>
</v8:item>
</ToolTip>
<Action>ВыбратьМесяц6</Action>
<CurrentRowUse>DontUse</CurrentRowUse>
</Command>
<Command name="ВыбратьМесяц7" id="9">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>июль</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Выбрать июль</v8:content>
</v8:item>
</ToolTip>
<Action>ВыбратьМесяц7</Action>
<CurrentRowUse>DontUse</CurrentRowUse>
</Command>
<Command name="ВыбратьМесяц8" id="10">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>август</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Выбрать август</v8:content>
</v8:item>
</ToolTip>
<Action>ВыбратьМесяц8</Action>
<CurrentRowUse>DontUse</CurrentRowUse>
</Command>
<Command name="ВыбратьМесяц9" id="11">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>сентябрь</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Выбрать сентябрь</v8:content>
</v8:item>
</ToolTip>
<Action>ВыбратьМесяц9</Action>
<CurrentRowUse>DontUse</CurrentRowUse>
</Command>
<Command name="ВыбратьМесяц10" id="12">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>октябрь</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Выбрать октябрь</v8:content>
</v8:item>
</ToolTip>
<Action>ВыбратьМесяц10</Action>
<CurrentRowUse>DontUse</CurrentRowUse>
</Command>
<Command name="ВыбратьМесяц11" id="13">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>ноябрь</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Выбрать ноябрь</v8:content>
</v8:item>
</ToolTip>
<Action>ВыбратьМесяц11</Action>
<CurrentRowUse>DontUse</CurrentRowUse>
</Command>
<Command name="ВыбратьМесяц12" id="14">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>декабрь</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Выбрать декабрь</v8:content>
</v8:item>
</ToolTip>
<Action>ВыбратьМесяц12</Action>
<CurrentRowUse>DontUse</CurrentRowUse>
</Command>
<Command name="ВыбратьКвартал1" id="15">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>1 квартал</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Выбрать 1 квартал</v8:content>
</v8:item>
</ToolTip>
<Action>ВыбратьКвартал1</Action>
<CurrentRowUse>DontUse</CurrentRowUse>
</Command>
<Command name="ВыбратьКвартал2" id="16">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>2 квартал</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Выбрать 2 квартал</v8:content>
</v8:item>
</ToolTip>
<Action>ВыбратьКвартал2</Action>
<CurrentRowUse>DontUse</CurrentRowUse>
</Command>
<Command name="ВыбратьКвартал3" id="17">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>3 квартал</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Выбрать 3 квартал</v8:content>
</v8:item>
</ToolTip>
<Action>ВыбратьКвартал3</Action>
<CurrentRowUse>DontUse</CurrentRowUse>
</Command>
<Command name="ВыбратьКвартал4" id="18">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>4 квартал</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Выбрать 4 квартал</v8:content>
</v8:item>
</ToolTip>
<Action>ВыбратьКвартал4</Action>
<CurrentRowUse>DontUse</CurrentRowUse>
</Command>
<Command name="ВыбратьПолугодие" id="19">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>полугодие</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Выбрать полугодие</v8:content>
</v8:item>
</ToolTip>
<Action>ВыбратьПолугодие</Action>
<CurrentRowUse>DontUse</CurrentRowUse>
</Command>
<Command name="Выбрать9Месяцев" id="21">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>9 месяцев</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Выбрать 9 месяцев</v8:content>
</v8:item>
</ToolTip>
<Action>Выбрать9Месяцев</Action>
<CurrentRowUse>DontUse</CurrentRowUse>
</Command>
<Command name="ВыбратьГод" id="22">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>год</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Выбрать год</v8:content>
</v8:item>
</ToolTip>
<Action>ВыбратьГод</Action>
<CurrentRowUse>DontUse</CurrentRowUse>
</Command>
<Command name="ВыбратьДень" id="23">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>день...</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Выбрать день</v8:content>
</v8:item>
</ToolTip>
<Action>ВыбратьДень</Action>
<CurrentRowUse>DontUse</CurrentRowUse>
</Command>
<Command name="ОчиститьПериод" id="20">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>за все время</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Очистить период</v8:content>
</v8:item>
</ToolTip>
<Action>ОчиститьПериод</Action>
</Command>
<Command name="ПерейтиКСтандартномуВариантуПериода" id="24">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Стандартный вариант</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Перейти к стандартному варианту периода</v8:content>
</v8:item>
</ToolTip>
<Action>ПерейтиКСтандартномуВариантуПериода</Action>
<Representation>Picture</Representation>
</Command>
</Commands>
<Parameters>
<Parameter name="НачалоПериода">
<Type>
<v8:Type>xs:dateTime</v8:Type>
<v8:DateQualifiers>
<v8:DateFractions>Date</v8:DateFractions>
</v8:DateQualifiers>
</Type>
</Parameter>
<Parameter name="КонецПериода">
<Type>
<v8:Type>xs:dateTime</v8:Type>
<v8:DateQualifiers>
<v8:DateFractions>Date</v8:DateFractions>
</v8:DateQualifiers>
</Type>
</Parameter>
<Parameter name="Кратность">
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Parameter>
<Parameter name="ОграничениеСнизу">
<Type>
<v8:Type>xs:dateTime</v8:Type>
<v8:DateQualifiers>
<v8:DateFractions>Date</v8:DateFractions>
</v8:DateQualifiers>
</Type>
</Parameter>
<Parameter name="Период">
<Type>
<v8:Type>v8:StandardPeriod</v8:Type>
</Type>
</Parameter>
<Parameter name="ИмяКоманды">
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Parameter>
</Parameters>
</Form>
@@ -0,0 +1,395 @@
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2023, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если ЗначениеЗаполнено(Параметры.Кратность) Тогда
Если Параметры.Кратность <> Перечисления.ДоступныеПериодыОтчета.День Тогда
Элементы.ВыбратьДень.Видимость = Ложь;
КонецЕсли;
КонецЕсли;
ЗаполнитьЗначенияСвойств(ЭтотОбъект, Параметры, "Период, НачалоПериода, КонецПериода, ОграничениеСнизу, ИмяКоманды");
ИнициализироватьСвойстваПериода();
ДатаНачалаГода = НачалоГода(КонецПериода);
НастроитьФормуПоОграничениюПериода(ЭтотОбъект);
// Определим имя активного периода
Если НачалоДня(НачалоПериода) = НачалоДня(КонецПериода) Тогда
ИмяТекущегоЭлемента = "ВыбратьДень";
ИначеЕсли НачалоМесяца(НачалоПериода) = НачалоМесяца(КонецПериода) Тогда
НомерМесяца = Месяц(НачалоПериода);
ИмяТекущегоЭлемента = "ВыбратьМесяц" + НомерМесяца;
ИначеЕсли НачалоКвартала(НачалоПериода) = НачалоКвартала(КонецПериода) Тогда
НомерМесяца = Месяц(НачалоПериода);
НомерКвартала = Цел((НомерМесяца + 3) / 3);
ИмяТекущегоЭлемента = "ВыбратьКвартал" + НомерКвартала;
ИначеЕсли НачалоГода(НачалоПериода) = НачалоГода(КонецПериода) Тогда
НомерМесяцаНачала = Месяц(НачалоПериода);
НомерМесяцаКонца = Месяц(КонецПериода);
Если НомерМесяцаНачала <= 3 И НомерМесяцаКонца <= 6 Тогда
ИмяТекущегоЭлемента = "ВыбратьПолугодие";
ИначеЕсли НомерМесяцаНачала <= 3 И НомерМесяцаКонца <= 9 Тогда
ИмяТекущегоЭлемента = "Выбрать9Месяцев";
Иначе
ИмяТекущегоЭлемента = "ВыбратьГод";
КонецЕсли;
Иначе
ИмяТекущегоЭлемента = "ВыбратьГод";
КонецЕсли;
ТекущийЭлемент = Элементы[ИмяТекущегоЭлемента];
УстановитьКартинкуПереходаКСтандартномуПериоду();
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура ОчиститьПериод(Команда)
НачалоПериода = Дата(1, 1, 1);
КонецПериода = Дата(1, 1, 1);
ВыполнитьВыборПериода();
КонецПроцедуры
&НаКлиенте
Процедура ПерейтиКСтандартномуВариантуПериода(Команда)
РезультатВыбора = Новый Структура("ВладелецФормы, ИмяКоманды");
ЗаполнитьЗначенияСвойств(РезультатВыбора, ЭтотОбъект);
РезультатВыбора.Вставить("ВариантПериода", ПредопределенноеЗначение("Перечисление.ВариантыПериода.Стандартный"));
РезультатВыбора.Вставить("Событие", Команда.Имя);
Закрыть(РезультатВыбора);
КонецПроцедуры
&НаКлиенте
Процедура ПерейтиНаГодНазад(Команда)
ДатаНачалаГода = НачалоГода(ДатаНачалаГода - 1);
НастроитьФормуПоОграничениюПериода(ЭтотОбъект);
ТекущийЭлемент = Элементы[ИмяТекущегоЭлемента];
КонецПроцедуры
&НаКлиенте
Процедура ПерейтиНаГодВперед(Команда)
ДатаНачалаГода = КонецГода(ДатаНачалаГода) + 1;
НастроитьФормуПоОграничениюПериода(ЭтотОбъект);
ТекущийЭлемент = Элементы[ИмяТекущегоЭлемента];
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьМесяц1(Команда)
ВыбратьМесяц(1);
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьМесяц2(Команда)
ВыбратьМесяц(2);
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьМесяц3(Команда)
ВыбратьМесяц(3);
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьМесяц4(Команда)
ВыбратьМесяц(4);
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьМесяц5(Команда)
ВыбратьМесяц(5);
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьМесяц6(Команда)
ВыбратьМесяц(6);
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьМесяц7(Команда)
ВыбратьМесяц(7);
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьМесяц8(Команда)
ВыбратьМесяц(8);
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьМесяц9(Команда)
ВыбратьМесяц(9);
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьМесяц10(Команда)
ВыбратьМесяц(10);
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьМесяц11(Команда)
ВыбратьМесяц(11);
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьМесяц12(Команда)
ВыбратьМесяц(12);
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьКвартал1(Команда)
ВыбратьКвартал(1);
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьКвартал2(Команда)
ВыбратьКвартал(2);
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьКвартал3(Команда)
ВыбратьКвартал(3);
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьКвартал4(Команда)
ВыбратьКвартал(4);
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьДень(Команда)
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("НачалоПериода", НачалоПериода);
ПараметрыФормы.Вставить("КонецПериода", КонецПериода);
ПараметрыФормы.Вставить("ОграничениеСнизу", ОграничениеСнизу);
ОписаниеОповещения = Новый ОписаниеОповещения("ВыбратьДеньЗавершение", ЭтотОбъект);
ОткрытьФорму(
"ХранилищеНастроек.ХранилищеВариантовОтчетов.Форма.ВыборФинансовогоПериодаДень",
ПараметрыФормы,
ЭтотОбъект,
,
,
,
ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьПолугодие(Команда)
НачалоПериода = ДатаНачалаГода;
КонецПериода = КонецМесяца(ДобавитьМесяц(НачалоПериода, 5));
ВыполнитьВыборПериода();
КонецПроцедуры
&НаКлиенте
Процедура Выбрать9Месяцев(Команда)
НачалоПериода = ДатаНачалаГода;
КонецПериода = Дата(Год(ДатаНачалаГода), 9 , 30);
ВыполнитьВыборПериода();
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьГод(Команда)
НачалоПериода = ДатаНачалаГода;
КонецПериода = КонецГода(ДатаНачалаГода);
ВыполнитьВыборПериода();
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
Процедура ИнициализироватьСвойстваПериода()
Если ЗначениеЗаполнено(Период.ДатаНачала) Тогда
НачалоПериода = Период.ДатаНачала;
КонецЕсли;
Если ЗначениеЗаполнено(Период.ДатаОкончания) Тогда
КонецПериода = Период.ДатаОкончания;
КонецЕсли;
Если Не ЗначениеЗаполнено(КонецПериода) Тогда
КонецПериода = КонецМесяца(ТекущаяДатаСеанса());
НачалоПериода = НачалоМесяца(КонецПериода);
КонецЕсли;
Если ОграничениеСнизу > КонецПериода Тогда
КонецПериода = КонецМесяца(ОграничениеСнизу);
НачалоПериода = НачалоМесяца(ОграничениеСнизу);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВыполнитьВыборПериода()
КонецПериода = КонецДня(КонецПериода);
Период.ДатаНачала = НачалоПериода;
Период.ДатаОкончания = КонецПериода;
РезультатВыбора = Новый Структура("ВладелецФормы, Период, НачалоПериода, КонецПериода");
ЗаполнитьЗначенияСвойств(РезультатВыбора, ЭтотОбъект);
Закрыть(РезультатВыбора);
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьМесяц(НомерМесяца)
НачалоПериода = Дата(Год(ДатаНачалаГода), НомерМесяца, 1);
КонецПериода = КонецМесяца(НачалоПериода);
ВыполнитьВыборПериода();
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьКвартал(НомерКвартала)
НачалоПериода = Дата(Год(ДатаНачалаГода), 1 + (НомерКвартала - 1) * 3, 1);
КонецПериода = КонецКвартала(НачалоПериода);
ВыполнитьВыборПериода();
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьДеньЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат <> Неопределено Тогда
НачалоПериода = Результат.НачалоПериода;
КонецПериода = Результат.КонецПериода;
ВыполнитьВыборПериода();
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура НастроитьФормуПоОграничениюПериода(Форма)
Если Не ЗначениеЗаполнено(Форма.ОграничениеСнизу) Тогда
Возврат;
КонецЕсли;
Если Форма.ОграничениеСнизу < Форма.ДатаНачалаГода
И Не Форма.ВыбранныйГодОграничен Тогда
Возврат;
КонецЕсли;
ПервыйГод = (НачалоГода(Форма.ОграничениеСнизу) = Форма.ДатаНачалаГода);
// Выбор года
Форма.ВыбранныйГодОграничен = ПервыйГод;
Форма.Элементы.ПерейтиНаГодНазадДоступно.Видимость = Не ПервыйГод;
Форма.Элементы.ПерейтиНаГодНазадНедоступно.Видимость = ПервыйГод; // картинка ВыборСтандартногоПериодаНедоступнаяКнопка
// Выбор квартала
МинимальныйКвартал = ?(Не ПервыйГод, 1, Месяц(КонецКвартала(Форма.ОграничениеСнизу)) / 3);
ИменаКварталыНарастающимИтогом = Новый Соответствие;
ИменаКварталыНарастающимИтогом.Вставить(2, "ВыбратьПолугодие");
ИменаКварталыНарастающимИтогом.Вставить(3, "Выбрать9Месяцев");
ИменаКварталыНарастающимИтогом.Вставить(4, "ВыбратьГод");
Для НомерКвартала = 1 По 4 Цикл
ВыбиратьКвартал = (НомерКвартала >= МинимальныйКвартал);
Форма.Элементы["ВыбратьКвартал" + НомерКвартала].Доступность = ВыбиратьКвартал;
ИмяНарастающимИтогом = ИменаКварталыНарастающимИтогом[НомерКвартала];
Если ИмяНарастающимИтогом <> Неопределено Тогда
Форма.Элементы[ИмяНарастающимИтогом].Доступность = ВыбиратьКвартал;
КонецЕсли;
КонецЦикла;
// Выбор месяца
МинимальныйМесяц = ?(Не ПервыйГод, 1, Месяц(Форма.ОграничениеСнизу));
Для НомерМесяца = 1 По 12 Цикл
Форма.Элементы["ВыбратьМесяц" + НомерМесяца].Доступность = (НомерМесяца >= МинимальныйМесяц);
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура УстановитьКартинкуПереходаКСтандартномуПериоду()
КартинкаПереходаКСтандартномуПериоду = БиблиотекаКартинок.Календарь;
Элементы.ПерейтиКСтандартномуВариантуПериода.Картинка = КартинкаПереходаКСтандартномуПериоду;
Элементы.ПерейтиКСтандартномуВариантуПериода.Отображение = ОтображениеКнопки.Картинка;
КонецПроцедуры
#КонецОбласти
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<Help xmlns="http://v8.1c.ru/8.3/xcf/extrnprops" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.20">
<Page>ru</Page>
</Help>
@@ -0,0 +1,10 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html;charset=utf-8" http-equiv="content-type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 10.00.9200.17028"></meta></head><body>
<h1>Выбор стандартного периода</h1>
<p>Форма предназначена для выбора периода:</p>
<ul><li>День,
</li><li>Месяц,
</li><li>Квартал,
</li><li>Полугодие,
</li><li>Девять месяцев,
</li><li>Год.</li></ul><p>Кнопка выбранного в настоящее время периода выделяется цветом.</p>
<p>Год выбирается с помощью стрелок в верхней части формы.</p></body></html>
@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.20">
<Form uuid="ff4d92a7-5fa3-4a46-a6f5-47c3952edb22">
<Properties>
<Name>ВыборФинансовогоПериодаДень</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Выбор финансового периода день</v8:content>
</v8:item>
</Synonym>
<Comment/>
<FormType>Managed</FormType>
<IncludeHelpInContents>false</IncludeHelpInContents>
<UsePurposes>
<v8:Value xsi:type="app:ApplicationUsePurpose">PlatformApplication</v8:Value>
<v8:Value xsi:type="app:ApplicationUsePurpose">MobilePlatformApplication</v8:Value>
</UsePurposes>
</Properties>
</Form>
</MetaDataObject>
@@ -0,0 +1,71 @@
<?xml version="1.0" encoding="UTF-8"?>
<Form xmlns="http://v8.1c.ru/8.3/xcf/logform" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:dcscor="http://v8.1c.ru/8.1/data-composition-system/core" xmlns:dcssch="http://v8.1c.ru/8.1/data-composition-system/schema" xmlns:dcsset="http://v8.1c.ru/8.1/data-composition-system/settings" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.20">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Выбор дня</v8:content>
</v8:item>
</Title>
<WindowOpeningMode>LockOwnerWindow</WindowOpeningMode>
<AutoTitle>false</AutoTitle>
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1">
<Autofill>false</Autofill>
</AutoCommandBar>
<Events>
<Event name="OnCreateAtServer">ПриСозданииНаСервере</Event>
</Events>
<ChildItems>
<CalendarField name="День" id="1">
<DataPath>День</DataPath>
<TitleLocation>None</TitleLocation>
<ShowMonthsPanel>true</ShowMonthsPanel>
<ContextMenu name="ДеньКонтекстноеМеню" id="2"/>
<ExtendedTooltip name="ДеньРасширеннаяПодсказка" id="3"/>
<Events>
<Event name="OnChange">ДеньПриИзменении</Event>
</Events>
</CalendarField>
</ChildItems>
<Attributes>
<Attribute name="День" id="1">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>День</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>xs:dateTime</v8:Type>
<v8:DateQualifiers>
<v8:DateFractions>Date</v8:DateFractions>
</v8:DateQualifiers>
</Type>
</Attribute>
</Attributes>
<Parameters>
<Parameter name="КонецПериода">
<Type>
<v8:Type>xs:dateTime</v8:Type>
<v8:DateQualifiers>
<v8:DateFractions>Date</v8:DateFractions>
</v8:DateQualifiers>
</Type>
</Parameter>
<Parameter name="НачалоПериода">
<Type>
<v8:Type>xs:dateTime</v8:Type>
<v8:DateQualifiers>
<v8:DateFractions>Date</v8:DateFractions>
</v8:DateQualifiers>
</Type>
</Parameter>
<Parameter name="ОграничениеСнизу">
<Type>
<v8:Type>xs:dateTime</v8:Type>
<v8:DateQualifiers>
<v8:DateFractions>Date</v8:DateFractions>
</v8:DateQualifiers>
</Type>
</Parameter>
</Parameters>
</Form>
@@ -0,0 +1,43 @@
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2023, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
НачалоПериода = Параметры.НачалоПериода;
КонецПериода = Параметры.КонецПериода;
Если НачалоДня(НачалоПериода) = НачалоДня(КонецПериода) Тогда
День = НачалоПериода;
Иначе
День = ТекущаяДатаСеанса();
КонецЕсли;
Если День < Параметры.ОграничениеСнизу Тогда
День = Параметры.ОграничениеСнизу;
КонецЕсли;
Элементы.День.НачалоПериодаОтображения = Параметры.ОграничениеСнизу;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура ДеньПриИзменении(Элемент)
РезультатВыбора = Новый Структура("НачалоПериода, КонецПериода", НачалоДня(День), КонецДня(День));
Закрыть(РезультатВыбора);
КонецПроцедуры
#КонецОбласти
@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.20">
<Form uuid="bb350b39-1f4d-460a-98c9-8d2308cf22f0">
<Properties>
<Name>ГруппаВыбранныхПолей</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Группа выбранных полей</v8:content>
</v8:item>
</Synonym>
<Comment/>
<FormType>Managed</FormType>
<IncludeHelpInContents>false</IncludeHelpInContents>
<UsePurposes>
<v8:Value xsi:type="app:ApplicationUsePurpose">PlatformApplication</v8:Value>
<v8:Value xsi:type="app:ApplicationUsePurpose">MobilePlatformApplication</v8:Value>
</UsePurposes>
</Properties>
</Form>
</MetaDataObject>
@@ -0,0 +1,162 @@
<?xml version="1.0" encoding="UTF-8"?>
<Form xmlns="http://v8.1c.ru/8.3/xcf/logform" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:dcscor="http://v8.1c.ru/8.1/data-composition-system/core" xmlns:dcssch="http://v8.1c.ru/8.1/data-composition-system/schema" xmlns:dcsset="http://v8.1c.ru/8.1/data-composition-system/settings" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.20">
<CommandBarLocation>Bottom</CommandBarLocation>
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1">
<HorizontalAlign>Right</HorizontalAlign>
<Autofill>false</Autofill>
<ChildItems>
<Button name="ФормаОК" id="7">
<Type>CommandBarButton</Type>
<DefaultButton>true</DefaultButton>
<CommandName>Form.Command.ОК</CommandName>
<ExtendedTooltip name="ФормаОКРасширеннаяПодсказка" id="8"/>
</Button>
<Button name="ФормаОтмена" id="9">
<Type>CommandBarButton</Type>
<CommandName>Form.StandardCommand.Cancel</CommandName>
<ExtendedTooltip name="ФормаОтменаРасширеннаяПодсказка" id="10"/>
</Button>
</ChildItems>
</AutoCommandBar>
<Events>
<Event name="OnCreateAtServer">ПриСозданииНаСервере</Event>
</Events>
<ChildItems>
<InputField name="ЗаголовокГруппы" id="1">
<DataPath>ЗаголовокГруппы</DataPath>
<ToolTipRepresentation>ShowBottom</ToolTipRepresentation>
<ContextMenu name="ЗаголовокГруппыКонтекстноеМеню" id="2"/>
<ExtendedTooltip name="ЗаголовокГруппыРасширеннаяПодсказка" id="3">
<Title formatted="false">
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Заголовок группы полей в отчете.</v8:content>
</v8:item>
</Title>
</ExtendedTooltip>
</InputField>
<RadioButtonField name="Расположение" id="4">
<DataPath>РасположениеГруппы</DataPath>
<RadioButtonType>Tumbler</RadioButtonType>
<ChoiceList>
<xr:Item>
<xr:Presentation/>
<xr:CheckState>0</xr:CheckState>
<xr:Value xsi:type="FormChoiceListDesTimeValue">
<Presentation>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Авто</v8:content>
</v8:item>
</Presentation>
<Value xsi:type="xs:string">Авто</Value>
</xr:Value>
</xr:Item>
<xr:Item>
<xr:Presentation/>
<xr:CheckState>0</xr:CheckState>
<xr:Value xsi:type="FormChoiceListDesTimeValue">
<Presentation>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Вертикально</v8:content>
</v8:item>
</Presentation>
<Value xsi:type="xs:string">Вертикально</Value>
</xr:Value>
</xr:Item>
<xr:Item>
<xr:Presentation/>
<xr:CheckState>0</xr:CheckState>
<xr:Value xsi:type="FormChoiceListDesTimeValue">
<Presentation>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Горизонтально</v8:content>
</v8:item>
</Presentation>
<Value xsi:type="xs:string">Горизонтально</Value>
</xr:Value>
</xr:Item>
<xr:Item>
<xr:Presentation/>
<xr:CheckState>0</xr:CheckState>
<xr:Value xsi:type="FormChoiceListDesTimeValue">
<Presentation>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Вместе</v8:content>
</v8:item>
</Presentation>
<Value xsi:type="xs:string">Вместе</Value>
</xr:Value>
</xr:Item>
<xr:Item>
<xr:Presentation/>
<xr:CheckState>0</xr:CheckState>
<xr:Value xsi:type="FormChoiceListDesTimeValue">
<Presentation>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Отдельная колонка</v8:content>
</v8:item>
</Presentation>
<Value xsi:type="xs:string">ОтдельнаяКолонка</Value>
</xr:Value>
</xr:Item>
</ChoiceList>
<ContextMenu name="РасположениеКонтекстноеМеню" id="5"/>
<ExtendedTooltip name="РасположениеРасширеннаяПодсказка" id="6"/>
</RadioButtonField>
</ChildItems>
<Attributes>
<Attribute name="ЗаголовокГруппы" id="1">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Заголовок</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Attribute>
<Attribute name="РасположениеГруппы" id="2">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Расположение</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Attribute>
</Attributes>
<Commands>
<Command name="ОК" id="1">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>ОК</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>ОК</v8:content>
</v8:item>
</ToolTip>
<Action>ОК</Action>
<CurrentRowUse>DontUse</CurrentRowUse>
</Command>
</Commands>
</Form>
@@ -0,0 +1,71 @@
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2023, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ОпределитьПоведениеВМобильномКлиенте();
Параметры.Свойство("ЗаголовокГруппы", ЗаголовокГруппы);
Расположение = Неопределено;
Если Не Параметры.Свойство("Расположение", Расположение) Тогда
ВызватьИсключение НСтр("ru = 'Не передан служебный параметр ""Расположение"".'");
КонецЕсли;
Если Расположение = РасположениеПоляКомпоновкиДанных.Авто Тогда
РасположениеГруппы = "Авто";
ИначеЕсли Расположение = РасположениеПоляКомпоновкиДанных.Вертикально Тогда
РасположениеГруппы = "Вертикально";
ИначеЕсли Расположение = РасположениеПоляКомпоновкиДанных.Вместе Тогда
РасположениеГруппы = "Вместе";
ИначеЕсли Расположение = РасположениеПоляКомпоновкиДанных.Горизонтально Тогда
РасположениеГруппы = "Горизонтально";
ИначеЕсли Расположение = РасположениеПоляКомпоновкиДанных.ОтдельнаяКолонка Тогда
РасположениеГруппы = "ОтдельнаяКолонка";
Иначе
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Некорректное значение параметра ""Расположение"": ""%1"".'"), Строка(Расположение));
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура ОК(Команда)
ВыбратьИЗакрыть();
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
Процедура ОпределитьПоведениеВМобильномКлиенте()
ЭтоМобильныйКлиент = ОбщегоНазначения.ЭтоМобильныйКлиент();
Если Не ЭтоМобильныйКлиент Тогда
Возврат;
КонецЕсли;
ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиФормы.Авто;
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьИЗакрыть()
РезультатВыбора = Новый Структура;
РезультатВыбора.Вставить("ЗаголовокГруппы", ЗаголовокГруппы);
РезультатВыбора.Вставить("Расположение", РасположениеПоляКомпоновкиДанных[РасположениеГруппы]);
ОповеститьОВыборе(РезультатВыбора);
Если Открыта() Тогда
Закрыть(РезультатВыбора);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.20">
<Form uuid="eaeb5aa8-8edf-4f74-8011-2d476f543bf6">
<Properties>
<Name>НастройкаПоля</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Настройка поля</v8:content>
</v8:item>
</Synonym>
<Comment/>
<FormType>Managed</FormType>
<IncludeHelpInContents>false</IncludeHelpInContents>
<UsePurposes>
<v8:Value xsi:type="app:ApplicationUsePurpose">PlatformApplication</v8:Value>
<v8:Value xsi:type="app:ApplicationUsePurpose">MobilePlatformApplication</v8:Value>
</UsePurposes>
</Properties>
</Form>
</MetaDataObject>
@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.20">
<Form uuid="b2f17ef1-3f6f-4029-b3e2-28d6b79c5b76">
<Properties>
<Name>ПанельДругихОтчетов</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Панель других отчетов</v8:content>
</v8:item>
</Synonym>
<Comment/>
<FormType>Managed</FormType>
<IncludeHelpInContents>false</IncludeHelpInContents>
<UsePurposes>
<v8:Value xsi:type="app:ApplicationUsePurpose">PlatformApplication</v8:Value>
<v8:Value xsi:type="app:ApplicationUsePurpose">MobilePlatformApplication</v8:Value>
</UsePurposes>
</Properties>
</Form>
</MetaDataObject>
@@ -0,0 +1,297 @@
<?xml version="1.0" encoding="UTF-8"?>
<Form xmlns="http://v8.1c.ru/8.3/xcf/logform" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:dcscor="http://v8.1c.ru/8.1/data-composition-system/core" xmlns:dcssch="http://v8.1c.ru/8.1/data-composition-system/schema" xmlns:dcsset="http://v8.1c.ru/8.1/data-composition-system/settings" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.20">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Другие отчеты</v8:content>
</v8:item>
</Title>
<AutoTitle>false</AutoTitle>
<Customizable>false</Customizable>
<VerticalScroll>useIfNecessary</VerticalScroll>
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1">
<Autofill>false</Autofill>
</AutoCommandBar>
<Events>
<Event name="OnCreateAtServer">ПриСозданииНаСервере</Event>
</Events>
<ChildItems>
<UsualGroup name="СтраницаДругиеОтчеты" id="1">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Страница другие отчеты</v8:content>
</v8:item>
</Title>
<Group>Vertical</Group>
<Behavior>Usual</Behavior>
<ShowTitle>false</ShowTitle>
<ExtendedTooltip name="СтраницаДругиеОтчетыРасширеннаяПодсказка" id="2"/>
<ChildItems>
<UsualGroup name="ГруппаДругиеВариантыОтчета" id="3">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Варианты отчета</v8:content>
</v8:item>
</Title>
<HorizontalStretch>true</HorizontalStretch>
<Group>Vertical</Group>
<Behavior>Usual</Behavior>
<Representation>NormalSeparation</Representation>
<ExtendedTooltip name="ГруппаДругиеВариантыОтчетаРасширеннаяПодсказка" id="4"/>
</UsualGroup>
</ChildItems>
</UsualGroup>
<UsualGroup name="ГруппаДругихОтчетовНет" id="19">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Группа других отчетов нет</v8:content>
</v8:item>
</Title>
<Group>AlwaysHorizontal</Group>
<Representation>None</Representation>
<ShowTitle>false</ShowTitle>
<ExtendedTooltip name="ГруппаДругихОтчетовНетРасширеннаяПодсказка" id="20"/>
<ChildItems>
<PictureDecoration name="КартинкаДругихОтчетовНет" id="21">
<Title formatted="false">
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Картинка других отчетов нет</v8:content>
</v8:item>
</Title>
<Picture>
<xr:Ref>StdPicture.Information</xr:Ref>
<xr:LoadTransparent>true</xr:LoadTransparent>
</Picture>
<ContextMenu name="КартинкаДругихОтчетовНетКонтекстноеМеню" id="22"/>
<ExtendedTooltip name="КартинкаДругихОтчетовНетРасширеннаяПодсказка" id="23"/>
</PictureDecoration>
<LabelDecoration name="НадписьДругихОтчетовНет" id="16">
<Title formatted="false">
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Других отчетов нет</v8:content>
</v8:item>
</Title>
<ContextMenu name="НадписьДругихОтчетовНетКонтекстноеМеню" id="17"/>
<ExtendedTooltip name="НадписьДругихОтчетовНетРасширеннаяПодсказка" id="18"/>
</LabelDecoration>
</ChildItems>
</UsualGroup>
<UsualGroup name="ГруппаПодвал" id="5">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Подвал</v8:content>
</v8:item>
</Title>
<VerticalStretch>false</VerticalStretch>
<Behavior>Usual</Behavior>
<Representation>NormalSeparation</Representation>
<ShowTitle>false</ShowTitle>
<ExtendedTooltip name="ГруппаПодвалРасширеннаяПодсказка" id="6"/>
<ChildItems>
<CheckBoxField name="ЗакрыватьПослеВыбора" id="7">
<DataPath>ЗакрыватьПослеВыбора</DataPath>
<TitleLocation>Right</TitleLocation>
<CheckBoxType>Auto</CheckBoxType>
<ContextMenu name="ЗакрыватьПослеВыбораКонтекстноеМеню" id="8"/>
<ExtendedTooltip name="ЗакрыватьПослеВыбораРасширеннаяПодсказка" id="9"/>
<Events>
<Event name="OnChange">ЗакрыватьЭтоОкноПослеПереходаКОтчетуПриИзменении</Event>
</Events>
</CheckBoxField>
<CommandBar name="ГруппаКоманднаяПанель" id="10">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Командная панель</v8:content>
</v8:item>
</Title>
<HorizontalLocation>Right</HorizontalLocation>
<CommandSource>Form</CommandSource>
<ExtendedTooltip name="ГруппаКоманднаяПанельРасширеннаяПодсказка" id="11"/>
<ChildItems>
<Button name="Закрыть" id="12">
<Type>CommandBarButton</Type>
<DefaultButton>true</DefaultButton>
<CommandName>Form.StandardCommand.Close</CommandName>
<ExtendedTooltip name="ЗакрытьРасширеннаяПодсказка" id="13"/>
</Button>
<Button name="ФормаСправка" id="14">
<Type>CommandBarButton</Type>
<CommandName>Form.StandardCommand.Help</CommandName>
<ExtendedTooltip name="ФормаСправкаРасширеннаяПодсказка" id="15"/>
</Button>
</ChildItems>
</CommandBar>
</ChildItems>
</UsualGroup>
</ChildItems>
<Attributes>
<Attribute name="ВариантСсылка" id="1">
<Type>
<v8:Type>cfg:CatalogRef.ВариантыОтчетов</v8:Type>
</Type>
</Attribute>
<Attribute name="ПодсистемаСсылка" id="2">
<Type>
<v8:Type>cfg:CatalogRef.ИдентификаторыОбъектовРасширений</v8:Type>
<v8:Type>cfg:CatalogRef.ИдентификаторыОбъектовМетаданных</v8:Type>
</Type>
</Attribute>
<Attribute name="ОтчетСсылка" id="3">
<Type>
<v8:Type>cfg:CatalogRef.ИдентификаторыОбъектовРасширений</v8:Type>
<v8:Type>cfg:CatalogRef.ДополнительныеОтчетыИОбработки</v8:Type>
<v8:Type>cfg:CatalogRef.ИдентификаторыОбъектовМетаданных</v8:Type>
</Type>
</Attribute>
<Attribute name="ГруппыПодсистем" id="4">
<Type>
<v8:Type>v8:ValueListType</v8:Type>
</Type>
<Settings xsi:type="v8:TypeDescription"/>
</Attribute>
<Attribute name="ЕстьДругиеОтчеты" id="5">
<Type>
<v8:Type>xs:boolean</v8:Type>
</Type>
</Attribute>
<Attribute name="ВариантыПанели" id="8">
<Type>
<v8:Type>v8:ValueTable</v8:Type>
</Type>
<Columns>
<Column name="Ссылка" id="1">
<Type>
<v8:Type>cfg:CatalogRef.ВариантыОтчетов</v8:Type>
</Type>
</Column>
<Column name="Отчет" id="2">
<Type>
<v8:Type>cfg:CatalogRef.ИдентификаторыОбъектовРасширений</v8:Type>
<v8:Type>xs:string</v8:Type>
<v8:Type>cfg:CatalogRef.ДополнительныеОтчетыИОбработки</v8:Type>
<v8:Type>cfg:CatalogRef.ИдентификаторыОбъектовМетаданных</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Column>
<Column name="Наименование" id="3">
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Column>
<Column name="Описание" id="4">
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Column>
<Column name="КлючВарианта" id="5">
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Column>
<Column name="НадписьИмя" id="7">
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Column>
<Column name="Автор" id="6">
<Type>
<v8:Type>cfg:CatalogRef.ВнешниеПользователи</v8:Type>
<v8:Type>cfg:CatalogRef.Пользователи</v8:Type>
</Type>
</Column>
<Column name="Дополнительный" id="8">
<Type>
<v8:Type>xs:boolean</v8:Type>
</Type>
</Column>
<Column name="ИмяОтчета" id="9">
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Column>
<Column name="ИмяГруппы" id="10">
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Column>
<Column name="Пользовательский" id="11">
<Type>
<v8:Type>xs:boolean</v8:Type>
</Type>
</Column>
</Columns>
</Attribute>
<Attribute name="ВариантыПанелиНомерЭлемента" id="9">
<Type>
<v8:Type>xs:decimal</v8:Type>
<v8:NumberQualifiers>
<v8:Digits>10</v8:Digits>
<v8:FractionDigits>0</v8:FractionDigits>
<v8:AllowedSign>Any</v8:AllowedSign>
</v8:NumberQualifiers>
</Type>
</Attribute>
<Attribute name="ВариантыПанелиКлючТекущегоВарианта" id="10">
<Type>
<v8:Type>xs:boolean</v8:Type>
</Type>
</Attribute>
<Attribute name="ЗакрыватьПослеВыбора" id="11">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Закрывать это окно после перехода к отчету</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>xs:boolean</v8:Type>
</Type>
</Attribute>
<Attribute name="ОтчетНаименование" id="12">
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Attribute>
<Attribute name="ВидимыеВарианты" id="6">
<Type/>
</Attribute>
</Attributes>
</Form>
@@ -0,0 +1,391 @@
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2023, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ЗаполнитьЗначенияСвойств(ЭтотОбъект, Параметры,
"ВариантСсылка, ОтчетСсылка, ПодсистемаСсылка, ОтчетНаименование, ВидимыеВарианты");
Если ВидимыеВарианты = Неопределено Тогда
ВидимыеВарианты = Новый ФиксированныйМассив(Новый Массив);
КонецЕсли;
Элементы.ГруппаДругиеВариантыОтчета.Заголовок = ОтчетНаименование
+ " (" + НСтр("ru = 'варианты отчета'") + "):";
ПрочитатьНастройкиЭтойФормы();
СтандартныеПодсистемыСервер.СброситьРазмерыИПоложениеОкна(ЭтотОбъект);
ЗаполнитьПанельОтчетов();
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура ЗакрыватьЭтоОкноПослеПереходаКОтчетуПриИзменении(Элемент)
СохранитьНастройкиЭтойФормы();
КонецПроцедуры
// Обработчик нажатия на гиперссылку.
//
// Параметры:
// Элемент - ДекорацияФормы
//
&НаКлиенте
Процедура Подключаемый_ВариантНажатие(Элемент)
Найденные = ВариантыПанели.НайтиСтроки(Новый Структура("НадписьИмя", Элемент.Имя));
Если Найденные.Количество() <> 1 Тогда
Возврат;
КонецЕсли;
Вариант = Найденные[0];
Если ЗначениеЗаполнено(ПодсистемаСсылка) Тогда
ПараметрыФормы = Новый Структура("Подсистема", ПодсистемаСсылка);
Иначе
ПараметрыФормы = Неопределено;
КонецЕсли;
ВариантыОтчетовКлиент.ОткрытьФормуОтчета(ВладелецФормы, Вариант, ПараметрыФормы);
Если ЗакрыватьПослеВыбора Тогда
Закрыть();
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
////////////////////////////////////////////////////////////////////////////////
// Вызов сервера, Сервер
&НаСервере
Процедура СохранитьНастройкиЭтойФормы()
НастройкиФормы = НастройкиПоУмолчанию();
ЗаполнитьЗначенияСвойств(НастройкиФормы, ЭтотОбъект);
ОбщегоНазначения.ХранилищеНастроекДанныхФормСохранить(
ВариантыОтчетовКлиентСервер.ПолноеИмяПодсистемы(),
"ПанельДругихОтчетов",
НастройкиФормы);
КонецПроцедуры
////////////////////////////////////////////////////////////////////////////////
// Сервер
&НаСервере
Процедура ПрочитатьНастройкиЭтойФормы()
НастройкиПоУмолчанию = НастройкиПоУмолчанию();
Элементы.ЗакрыватьПослеВыбора.Видимость = НастройкиПоУмолчанию.ПоказыватьФлажок;
НастройкиФормы = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить(
ВариантыОтчетовКлиентСервер.ПолноеИмяПодсистемы(),
"ПанельДругихОтчетов",
НастройкиПоУмолчанию);
ЗаполнитьЗначенияСвойств(ЭтотОбъект, НастройкиФормы);
КонецПроцедуры
&НаСервере
Функция НастройкиПоУмолчанию()
Возврат ВариантыОтчетов.ГлобальныеНастройки().ДругиеОтчеты;
КонецФункции
&НаСервере
Процедура ЗаполнитьПанельОтчетов()
ЕстьДругиеОтчеты = Ложь;
ТаблицаВывода = РеквизитФормыВЗначение("ВариантыПанели");
ТаблицаВывода.Колонки.Добавить("ЭлементНадоДобавить", Новый ОписаниеТипов("Булево"));
ТаблицаВывода.Колонки.Добавить("ЭлементНадоОставить", Новый ОписаниеТипов("Булево"));
ТаблицаВывода.Колонки.Добавить("Группа");
ОбщиеНастройки = ВариантыОтчетов.ОбщиеНастройкиПанели();
ПоказыватьПодсказки = ОбщиеНастройки.ПоказыватьПодсказки = 1;
ТаблицаВариантов = ДоступныеВариантыОтчетов();
Для Каждого СтрокаТаблицы Из ТаблицаВариантов Цикл
// Только другие варианты.
Если СтрокаТаблицы.Ссылка = ВариантСсылка Тогда
Продолжить;
КонецЕсли;
ЕстьДругиеОтчеты = Истина;
ВывестиГиперссылкуВПанель(ТаблицаВывода, СтрокаТаблицы, Элементы.ГруппаДругиеВариантыОтчета, ПоказыватьПодсказки);
КонецЦикла;
Элементы.ГруппаДругиеВариантыОтчета.Видимость = (ТаблицаВариантов.Количество() > 0);
Если ЗначениеЗаполнено(ПодсистемаСсылка) Тогда
Подсистемы = ПодсистемыРаздела(ПодсистемаСсылка);
ПараметрыПоиска = Новый Структура;
ПараметрыПоиска.Вставить("Подсистемы", Подсистемы);
ПараметрыПоиска.Вставить("ТолькоВидимыеВПанелиОтчетов", Истина);
ТаблицаВариантов = ВариантыОтчетов.ТаблицаВариантовОтчетов(ПараметрыПоиска);
НайденнаяКолонка = ТаблицаВариантов.Колонки.Найти("НаименованиеВарианта");
НайденнаяКолонка.Имя = "Наименование";
ТаблицаВариантов.Сортировать("Наименование");
// Удаление строк, соответствующих текущему (открытому сейчас) варианту.
Найденные = ТаблицаВариантов.НайтиСтроки(Новый Структура("Ссылка", ВариантСсылка));
Для Каждого СтрокаТаблицы Из Найденные Цикл
ТаблицаВариантов.Удалить(СтрокаТаблицы);
КонецЦикла;
ВсеПодсистемы = ВариантыОтчетовПовтИсп.ПодсистемыТекущегоПользователя().Дерево;
ВсеРазделы = ВсеПодсистемы.Строки[0].Строки;
// Обход подсистем и вывод найденных вариантов.
Для Каждого ТекущаяПодсистема Из Подсистемы Цикл
Найденные = ТаблицаВариантов.НайтиСтроки(Новый Структура("Подсистема", ТекущаяПодсистема));
Если Найденные.Количество() = 0 Тогда
Продолжить;
КонецЕсли;
НайденныеСтроки = ВсеРазделы.НайтиСтроки(Новый Структура("Ссылка", ТекущаяПодсистема));
Если НайденныеСтроки.Количество() = 0 Тогда
НаименованиеПодсистемы = Найденные[0].НаименованиеПодсистемы;
ИначеЕсли ТекущаяПодсистема = ПодсистемаСсылка Тогда
НаименованиеПодсистемы = НайденныеСтроки[0].ПолноеПредставление;
Иначе
НаименованиеПодсистемы = НайденныеСтроки[0].Представление;
КонецЕсли;
Группа = ОпределитьГруппуВывода(НаименованиеПодсистемы);
Для Каждого СтрокаТаблицы Из Найденные Цикл
ЕстьДругиеОтчеты = Истина;
ВывестиГиперссылкуВПанель(ТаблицаВывода, СтрокаТаблицы, Группа, ПоказыватьПодсказки);
КонецЦикла;
КонецЦикла;
КонецЕсли;
// ВариантыПанелиНомерЭлемента
НайденныеДляУдаления = ТаблицаВывода.НайтиСтроки(Новый Структура("ЭлементНадоОставить", Ложь));
Для Каждого СтрокаТаблицы Из НайденныеДляУдаления Цикл
ЭлементВарианта = Элементы.Найти(СтрокаТаблицы.НадписьИмя);
Если ЭлементВарианта <> Неопределено Тогда
Элементы.Удалить(ЭлементВарианта);
КонецЕсли;
ТаблицаВывода.Удалить(СтрокаТаблицы);
КонецЦикла;
ТаблицаВывода.Колонки.Удалить("ЭлементНадоОставить");
ТаблицаВывода.Колонки.Удалить("Группа");
ЗначениеВРеквизитФормы(ТаблицаВывода, "ВариантыПанели");
Элементы.ГруппаДругихОтчетовНет.Видимость = Не ЕстьДругиеОтчеты;
Элементы.ЗакрыватьПослеВыбора.Видимость = ЕстьДругиеОтчеты;
Если Не ЕстьДругиеОтчеты Тогда
Ширина = 25;
КонецЕсли;
КонецПроцедуры
// Возвращаемое значение:
// ТаблицаЗначений:
// * Ссылка - СправочникСсылка.ВариантыОтчетов
// * Отчет - СправочникСсылка.ИдентификаторыОбъектовМетаданных
// - СправочникСсылка.ИдентификаторыОбъектовРасширений
// - СправочникСсылка.ДополнительныеОтчетыИОбработки
// - Строка
// * КлючВарианта - Строка
// * Наименование - Строка
// * Описание - Строка
// * Автор - СправочникСсылка.ВнешниеПользователи
// - СправочникСсылка.Пользователи
// * Пользовательский - Булево
// * ТипОтчета - ПеречислениеСсылка.ТипыОтчетов
// * ИмяОтчета - Строка
//
&НаСервере
Функция ДоступныеВариантыОтчетов()
Запрос = Новый Запрос(
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ВариантыОтчетов.Ссылка КАК Ссылка,
| ВариантыОтчетов.Отчет КАК Отчет,
| ВариантыОтчетов.КлючВарианта КАК КлючВарианта,
| ВариантыОтчетов.Наименование КАК Наименование,
| ВЫБОР
| КОГДА ПОДСТРОКА(ВариантыОтчетов.Описание, 1, 1) = """"
| ТОГДА ВЫРАЗИТЬ(ВариантыОтчетов.ПредопределенныйВариант.Описание КАК СТРОКА(1000))
| ИНАЧЕ ВЫРАЗИТЬ(ВариантыОтчетов.Описание КАК СТРОКА(1000))
| КОНЕЦ КАК Описание,
| ВариантыОтчетов.Автор КАК Автор,
| ВариантыОтчетов.Пользовательский КАК Пользовательский,
| ВариантыОтчетов.ТипОтчета КАК ТипОтчета,
| &ИмяОтчета КАК ИмяОтчета
|ИЗ
| Справочник.ВариантыОтчетов КАК ВариантыОтчетов
|ГДЕ
| (ВариантыОтчетов.Ссылка В (&ВидимыеВарианты)
| ИЛИ ВариантыОтчетов.Отчет = &Отчет
| И НЕ ВариантыОтчетов.ПометкаУдаления
| И (НЕ ВариантыОтчетов.ТолькоДляАвтора
| ИЛИ ВариантыОтчетов.Автор = &ТекущийПользователь)
| И НЕ ВариантыОтчетов.ПредопределенныйВариант В (&ОтключенныеВариантыПрограммы)
| И ВариантыОтчетов.КлючВарианта <> """"
| И ВариантыОтчетов.Контекст = """")
|
|УПОРЯДОЧИТЬ ПО
| Наименование");
ИмяОтчета = "ВЫБОР
| КОГДА ТИПЗНАЧЕНИЯ(ВариантыОтчетов.Отчет) = ТИП(Справочник.ИдентификаторыОбъектовМетаданных)
| ТОГДА ВЫРАЗИТЬ(ВариантыОтчетов.Отчет КАК Справочник.ИдентификаторыОбъектовМетаданных).Имя
| КОГДА ТИПЗНАЧЕНИЯ(ВариантыОтчетов.Отчет) = ТИП(Справочник.ИдентификаторыОбъектовРасширений)
| ТОГДА ВЫРАЗИТЬ(ВариантыОтчетов.Отчет КАК Справочник.ИдентификаторыОбъектовРасширений).Имя
| ИНАЧЕ ВЫРАЗИТЬ(ВариантыОтчетов.Отчет КАК СТРОКА(150))
| КОНЕЦ";
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки") Тогда
МодульДополнительныеОтчетыИОбработки = ОбщегоНазначения.ОбщийМодуль("ДополнительныеОтчетыИОбработки");
ИмяТаблицыДополнительныеОтчеты = МодульДополнительныеОтчетыИОбработки.ИмяТаблицыДополнительныеОтчеты();
ИмяОтчета = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку("ВЫБОР
| КОГДА ТИПЗНАЧЕНИЯ(ВариантыОтчетов.Отчет) = ТИП(Справочник.ИдентификаторыОбъектовМетаданных)
| ТОГДА ВЫРАЗИТЬ(ВариантыОтчетов.Отчет КАК Справочник.ИдентификаторыОбъектовМетаданных).Имя
| КОГДА ТИПЗНАЧЕНИЯ(ВариантыОтчетов.Отчет) = ТИП(Справочник.ИдентификаторыОбъектовРасширений)
| ТОГДА ВЫРАЗИТЬ(ВариантыОтчетов.Отчет КАК Справочник.ИдентификаторыОбъектовРасширений).Имя
| КОГДА ТИПЗНАЧЕНИЯ(ВариантыОтчетов.Отчет) = ТИП(%1)
| ТОГДА ВЫРАЗИТЬ(ВариантыОтчетов.Отчет КАК %1).ИмяОбъекта
| ИНАЧЕ ВЫРАЗИТЬ(ВариантыОтчетов.Отчет КАК СТРОКА(150))
| КОНЕЦ", ИмяТаблицыДополнительныеОтчеты);
КонецЕсли;
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ИмяОтчета", ИмяОтчета);
Запрос.УстановитьПараметр("ВидимыеВарианты", ВидимыеВарианты);
Запрос.УстановитьПараметр("Отчет", ОтчетСсылка);
Запрос.УстановитьПараметр("ТекущийПользователь", Пользователи.АвторизованныйПользователь());
Запрос.УстановитьПараметр("ОтключенныеВариантыПрограммы", ВариантыОтчетовПовтИсп.ОтключенныеВариантыПрограммы());
Возврат Запрос.Выполнить().Выгрузить();
КонецФункции
// Создает элементы формы, ссылающиеся на вариант отчета.
//
// Параметры:
// ТаблицаВывода - ТаблицаЗначений:
// * ЭлементНадоДобавить - Булево
// * ЭлементНадоОставить - Булево
// * Группа - ГруппаФормы
// Вариант - СтрокаТаблицыЗначений:
// * Ссылка - СправочникСсылка.ВариантыОтчетов
// * ТипОтчета - ПеречислениеСсылка.ТипыОтчетов
// * Описание - Строка
// * Автор - СправочникСсылка.ВнешниеПользователи
// - СправочникСсылка.Пользователи
// Группа - ГруппаФормы
// - Неопределено
// - ПолеФормы
// - ТаблицаФормы
// - КнопкаФормы
// - ДекорацияФормы
// ПоказыватьПодсказки - Булево
//
&НаСервере
Процедура ВывестиГиперссылкуВПанель(ТаблицаВывода, Вариант, Группа, ПоказыватьПодсказки)
Найденные = ТаблицаВывода.НайтиСтроки(Новый Структура("Ссылка, Группа", Вариант.Ссылка, Группа.Имя));
Если Найденные.Количество() > 0 Тогда
СтрокаВывода = Найденные[0];
СтрокаВывода.ЭлементНадоОставить = Истина;
Возврат;
КонецЕсли;
СтрокаВывода = ТаблицаВывода.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаВывода, Вариант);
ВариантыПанелиНомерЭлемента = ВариантыПанелиНомерЭлемента + 1;
СтрокаВывода.НадписьИмя = "Вариант" + Формат(ВариантыПанелиНомерЭлемента, "ЧГ=");
СтрокаВывода.Дополнительный = (Вариант.ТипОтчета = Перечисления.ТипыОтчетов.Дополнительный);
СтрокаВывода.ИмяГруппы = Группа.Имя;
СтрокаВывода.ЭлементНадоОставить = Истина;
СтрокаВывода.Группа = Группа;
ЭлементыСтиля = Метаданные.ЭлементыСтиля;
// Добавление надписи-гиперссылки варианта отчета.
Надпись = Элементы.Вставить(СтрокаВывода.НадписьИмя, Тип("ДекорацияФормы"), СтрокаВывода.Группа); // ДекорацияФормы, РасширениеДекорацииФормыДляНадписи
Надпись.Вид = ВидДекорацииФормы.Надпись;
Надпись.Гиперссылка = Истина;
Надпись.РастягиватьПоГоризонтали = Истина;
Надпись.РастягиватьПоВертикали = Ложь;
Надпись.Высота = 1;
Надпись.ЦветТекста = ЭлементыСтиля.ГиперссылкаЦвет.Значение;
Надпись.Заголовок = СокрЛП(Строка(Вариант.Ссылка));
Надпись.АвтоМаксимальнаяШирина = Ложь;
Если ЗначениеЗаполнено(Вариант.Описание) Тогда
Надпись.Подсказка = СокрЛП(Вариант.Описание);
КонецЕсли;
Если ЗначениеЗаполнено(Вариант.Автор) Тогда
Надпись.Подсказка = СокрЛ(Надпись.Подсказка + Символы.ПС) + НСтр("ru = 'Автор:'") + " " + СокрЛП(Строка(Вариант.Автор));
КонецЕсли;
Если ПоказыватьПодсказки Тогда
Надпись.ОтображениеПодсказки = ОтображениеПодсказки.ОтображатьСнизу;
Надпись.РасширеннаяПодсказка.РастягиватьПоГоризонтали = Истина;
Надпись.РасширеннаяПодсказка.ЦветТекста = ЭлементыСтиля.ПоясняющийТекст.Значение;
КонецЕсли;
Надпись.УстановитьДействие("Нажатие", "Подключаемый_ВариантНажатие");
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПодсистемыРаздела(КорневойРаздел)
Результат = Новый Массив;
Результат.Добавить(КорневойРаздел);
ДеревоПодсистем = ВариантыОтчетовПовтИсп.ПодсистемыТекущегоПользователя().Дерево;
Найденные = ДеревоПодсистем.Строки.НайтиСтроки(Новый Структура("Ссылка", КорневойРаздел), Истина);
Индекс = 0;
Пока Индекс < Найденные.Количество() Цикл
КоллекцияСтрок = Найденные[Индекс].Строки;
Индекс = Индекс + 1;
Для Каждого СтрокаДерева Из КоллекцияСтрок Цикл
Результат.Добавить(СтрокаДерева.Ссылка);
Найденные.Добавить(СтрокаДерева);
КонецЦикла;
КонецЦикла;
Возврат Результат;
КонецФункции
&НаСервере
Функция ОпределитьГруппуВывода(ПодсистемаПредставление)
ЭлементСписка = ГруппыПодсистем.НайтиПоЗначению(ПодсистемаПредставление);
Если ЭлементСписка <> Неопределено Тогда
Возврат Элементы.Найти(ЭлементСписка.Представление);
КонецЕсли;
НомерГруппы = ГруппыПодсистем.Количество() + 1;
ДекорацияИмя = "ОтступПодсистемы_" + НомерГруппы;
ГруппаИмя = "ГруппаПодсистемы_" + НомерГруппы;
Если ЕстьДругиеОтчеты Тогда
Декорация = Элементы.Добавить(ДекорацияИмя, Тип("ДекорацияФормы"), Элементы.СтраницаДругиеОтчеты);
Декорация.Вид = ВидДекорацииФормы.Надпись;
Декорация.Заголовок = " ";
КонецЕсли;
Группа = Элементы.Добавить(ГруппаИмя, Тип("ГруппаФормы"), Элементы.СтраницаДругиеОтчеты);
Группа.Вид = ВидГруппыФормы.ОбычнаяГруппа;
Группа.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Вертикальная;
Группа.Заголовок = ПодсистемаПредставление;
Группа.ОтображатьЗаголовок = Истина;
Группа.Отображение = ОтображениеОбычнойГруппы.ОбычноеВыделение;
Группа.РастягиватьПоГоризонтали = Истина;
ГруппыПодсистем.Добавить(ПодсистемаПредставление, ГруппаИмя);
Возврат Группа;
КонецФункции
#КонецОбласти
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<Help xmlns="http://v8.1c.ru/8.3/xcf/extrnprops" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.20">
<Page>ru</Page>
</Help>
@@ -0,0 +1,8 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 11.00.10570.1001"></meta></head><body>
<p>Предназначена для перехода к близким по смыслу вариантам отчетов.</p>
<p>Открывается по команде <strong>Другие отчеты</strong> из подменю <img src="CommonPicture.ВыбратьВариантОтчета"></img> <strong>Варианты отчета</strong>.</p>
<p>В списке в виде ссылок выводятся близкие по смыслу варианты отчетов, если они имеются в программе. </p>
<p>Открывается список остальных вариантов отчетов данного раздела. Для перехода к нужному варианту отчета нажмите на соответствующую ссылку.</p>
<p>В нижней части окна по умолчанию включен флажок <strong>Закрывать это окно после перехода к отчету</strong>, для того чтобы окно не мешало работе с отчетом.</p>
<h3>См. также:</h3>
<ul><li><a href="CommonForm.ФормаОтчета/Help">Работа с отчетами</a>.</li></ul></body></html>
@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.20">
<Form uuid="364cbfe2-bc44-4387-aa7e-6b4aa086c9e9">
<Properties>
<Name>СохранениеВариантаОтчета</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Сохранение варианта отчета</v8:content>
</v8:item>
</Synonym>
<Comment/>
<FormType>Managed</FormType>
<IncludeHelpInContents>false</IncludeHelpInContents>
<UsePurposes>
<v8:Value xsi:type="app:ApplicationUsePurpose">PlatformApplication</v8:Value>
<v8:Value xsi:type="app:ApplicationUsePurpose">MobilePlatformApplication</v8:Value>
</UsePurposes>
</Properties>
</Form>
</MetaDataObject>
@@ -0,0 +1,991 @@
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2022, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
УстановитьУсловноеОформление();
ОпределитьПоведениеВМобильномКлиенте();
ПрототипКлюч = Параметры.КлючТекущихНастроек;
ОтчетИнформация = ВариантыОтчетов.ИнформацияОбОтчете(Параметры.КлючОбъекта, Истина);
Контекст = Новый Структура;
Контекст.Вставить("ТекущийПользователь", Пользователи.АвторизованныйПользователь());
Контекст.Вставить("ПолныеПраваНаВарианты", ВариантыОтчетов.ПолныеПраваНаВарианты());
Контекст.Вставить("ОтчетСсылка", ОтчетИнформация.Отчет);
Контекст.Вставить("ОтчетИмя", ОтчетИнформация.ОтчетИмя);
Контекст.Вставить("ТипОтчета", ОтчетИнформация.ТипОтчета);
Контекст.Вставить("ЭтоВнешний", ОтчетИнформация.ТипОтчета = Перечисления.ТипыОтчетов.Внешний);
Контекст.Вставить("ПоискПоНаименованию", Новый Соответствие);
ЗаполнитьСписокВариантов();
РегистрыСведений.НастройкиВариантовОтчетов.ПрочитатьНастройкиДоступностиВариантаОтчета(
ВариантСсылка, ПользователиВарианта, ИспользоватьГруппыПользователей, ИспользоватьВнешнихПользователей);
Элементы.Доступен.ТолькоПросмотр = Не Контекст.ПолныеПраваНаВарианты;
Если Контекст.ЭтоВнешний Тогда
Элементы.Назад.Видимость = Ложь;
Элементы.Далее.Видимость = Ложь;
Элементы.Доступен.Видимость = Ложь;
Элементы.ДекорацияЧтоБудетДальшеНовый.Заголовок = НСтр("ru = 'Будет сохранен новый вариант отчета.'");
Элементы.ДекорацияЧтоБудетДальшеПерезапись.Заголовок = НСтр("ru = 'Будет перезаписан существующий вариант отчета.'");
КонецЕсли;
// Настройка видимости по пользователям не используется.
Элементы.ПользователиВарианта.Видимость = Ложь;
СписокВыбора = Элементы.Доступен.СписокВыбора;
ЭлементВсем = СписокВыбора.НайтиПоЗначению("УказаннымПользователям");
ЭлементВсем.Представление = НСтр("ru = 'Всем сотрудникам'");
// Настройка размещения в разделах в пользовательском режиме не используется.
Элементы.Назад.Видимость = Ложь;
Элементы.Далее.Видимость = Ложь;
Элементы.ДекорацияЧтоБудетДальшеНовый.Заголовок = НСтр("ru = 'Будет сохранен новый вариант отчета.'");
Элементы.ДекорацияЧтоБудетДальшеПерезапись.Заголовок = НСтр("ru = 'Будет перезаписан существующий вариант отчета.'");
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда
МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер");
МодульМультиязычностьСервер.ПриСозданииНаСервере(ЭтотОбъект, Объект);
КонецЕсли;
Элементы.Описание.КнопкаВыбора = Не Элементы.Описание.КнопкаОткрытия;
ВариантыОтчетов.ОпределитьПоведениеСпискаПользователейВариантаОтчета(ЭтотОбъект);
ВариантыОтчетов.ВывестиПризнакУведомленияПользователейВариантаОтчета(Элементы.УведомитьПользователей);
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ТекущийЭлемент = Элементы.Наименование;
ВариантыОтчетовКлиент.ОформитьПользователейВариантаОтчета(ЭтотОбъект, Ложь);
ЭтоКонтекстныйВариантОтчета = ВладелецФормы.ИмяФормы = "ОбщаяФорма.ФормаОтчета"
И ЗначениеЗаполнено(ВладелецФормы.КонтекстВарианта);
Если ЭтоКонтекстныйВариантОтчета Тогда
Элементы.Назад.Видимость = Ложь;
Элементы.Далее.Видимость = Ложь;
ВариантыКонтекста = ВладелецФормы.ВариантыКонтекста;
ПодключитьОбработчикОжидания("ЗаполнитьСписокВариантовОтложенно", 0.1, Истина);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
Если Не ЗначениеЗаполнено(Объект.Наименование) Тогда
ОбщегоНазначения.СообщитьПользователю(
НСтр("ru = 'Поле ""Наименование"" не заполнено'"),, "Наименование");
Отказ = Истина;
ИначеЕсли ВариантыОтчетов.НаименованиеЗанято(Контекст.ОтчетСсылка, ВариантСсылка, Объект.Наименование) Тогда
ОбщегоНазначения.СообщитьПользователю(
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = '""%1"" занято, необходимо указать другое Наименование.'"),
Объект.Наименование),
,
"Наименование");
Отказ = Истина;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если Источник = ИмяФормы Тогда
Возврат;
КонецЕсли;
Если ИмяСобытия = ВариантыОтчетовКлиент.ИмяСобытияИзменениеВарианта()
Или ИмяСобытия = "Запись_НаборКонстант" Тогда
ЗаполнитьСписокВариантов();
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура НаименованиеПриИзменении(Элемент)
НаименованиеМодифицировано = Истина;
УстановитьСценарийСохраненияВарианта();
ВариантыОтчетовКлиент.ОформитьПользователейВариантаОтчета(ЭтотОбъект, Ложь);
КонецПроцедуры
&НаКлиенте
Процедура ДоступенПриИзменении(Элемент)
Объект.ТолькоДляАвтора = (Доступен = "ТолькоДляАвтора");
ВариантыОтчетовКлиент.ПроверитьПользователейВариантаОтчета(ЭтотОбъект);
ВариантыОтчетовКлиент.ОформитьПользователейВариантаОтчета(ЭтотОбъект, Ложь);
КонецПроцедуры
&НаКлиенте
Процедура ОписаниеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Оповещение = Новый ОписаниеОповещения("ОписаниеНачалоВыбораЗавершение", ЭтотОбъект);
ОбщегоНазначенияКлиент.ПоказатьФормуРедактированияМногострочногоТекста(
Оповещение, Элементы.Описание.ТекстРедактирования, НСтр("ru = 'Описание'"));
КонецПроцедуры
&НаКлиенте
Процедура ОписаниеПриИзменении(Элемент)
ОписаниеМодифицировано = Истина;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_Открытие(Элемент, СтандартнаяОбработка)
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда
МодульМультиязычностьКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("МультиязычностьКлиент");
МодульМультиязычностьКлиент.ПриОткрытии(ЭтотОбъект, Объект, Элемент, СтандартнаяОбработка);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыПользователиВарианта
&НаКлиенте
Процедура ПользователиВариантаПриИзменении(Элемент)
ВариантыОтчетовКлиент.ОформитьПользователейВариантаОтчета(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПользователиВариантаПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр)
Отказ = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ПользователиВариантаПередУдалением(Элемент, Отказ)
Если Не ИспользоватьГруппыПользователей
И Не ИспользоватьВнешнихПользователей Тогда
Отказ = Истина;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПользователиВариантаОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
ВариантыОтчетовКлиент.ПользователиВариантаОтчетаОбработкаВыбора(ЭтотОбъект, ВыбранноеЗначение, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ПользователиВариантаПометкаПриИзменении(Элемент)
ВариантыОтчетовКлиент.ОформитьПользователейВариантаОтчета(ЭтотОбъект);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыДеревоПодсистем
&НаКлиенте
Процедура ДеревоПодсистемИспользованиеПриИзменении(Элемент)
ВариантыОтчетовКлиент.ДеревоПодсистемИспользованиеПриИзменении(ЭтотОбъект, Элемент);
КонецПроцедуры
&НаКлиенте
Процедура ДеревоПодсистемВажностьПриИзменении(Элемент)
ВариантыОтчетовКлиент.ДеревоПодсистемВажностьПриИзменении(ЭтотОбъект, Элемент);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура ПодобратьПользователей(Команда)
ВариантыОтчетовКлиент.ПодобратьПользователейВариантаОтчета(ЭтотОбъект, ИспользоватьГруппыПользователей);
КонецПроцедуры
&НаКлиенте
Процедура ПодобратьГруппыВнешнихПользователей(Команда)
ВариантыОтчетовКлиент.ПодобратьПользователейВариантаОтчета(
ЭтотОбъект, Элементы.ПользователиВариантаГруппаПодобрать.Видимость, Истина);
КонецПроцедуры
&НаКлиенте
Процедура Назад(Команда)
ПерейтиНаСтраницу1();
КонецПроцедуры
&НаКлиенте
Процедура Далее(Команда)
Пакет = Новый Структура;
Пакет.Вставить("ПроверитьСтраницу1", Истина);
Пакет.Вставить("ПерейтиНаСтраницу2", Истина);
Пакет.Вставить("ЗаполнитьСтраницу2Сервер", Истина);
Пакет.Вставить("ПроверитьИЗаписатьСервер", Ложь);
Пакет.Вставить("ЗакрытьПослеЗаписи", Ложь);
Пакет.Вставить("ТекущийШаг", Неопределено);
ВыполнитьПакет(Неопределено, Пакет);
КонецПроцедуры
&НаКлиенте
Процедура Сохранить(Команда)
СохранитьИЗакрыть();
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
////////////////////////////////////////////////////////////////////////////////
// Клиент
&НаКлиенте
Процедура ВыполнитьПакет(Результат, Пакет) Экспорт
Если Не Пакет.Свойство("ВариантЭтоНовый") Тогда
Пакет.Вставить("ВариантЭтоНовый", Не ЗначениеЗаполнено(ВариантСсылка));
КонецЕсли;
Если Не ПродолжитьВыполнениеПакета(Результат, Пакет) Тогда
Возврат;
КонецЕсли;
// Выполнение следующего шага.
Если Пакет.ПроверитьСтраницу1 = Истина Тогда
// Наименование не введено.
Если Не ЗначениеЗаполнено(Объект.Наименование) Тогда
ТекстОшибки = НСтр("ru = 'Поле ""Наименование"" не заполнено'");
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстОшибки, , "Объект.Наименование");
Возврат;
КонецЕсли;
// Введено наименование существующего варианта отчета.
Если Не Пакет.ВариантЭтоНовый Тогда
Найденные = ВариантыОтчета.НайтиСтроки(Новый Структура("Ссылка", ВариантСсылка));
Вариант = Найденные[0];
Если Не ПравоЗаписиВарианта(Вариант, Контекст.ПолныеПраваНаВарианты) Тогда
ТекстОшибки = НСтр("ru = 'Недостаточно прав для изменения варианта ""%1"". Необходимо выбрать другой вариант или изменить Наименование.'");
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстОшибки, Объект.Наименование);
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстОшибки, , "Объект.Наименование");
Возврат;
КонецЕсли;
Если СпроситьОПерезаписиВариантаОтчета(Пакет, Вариант) Тогда
Возврат;
КонецЕсли;
КонецЕсли;
// Проверка завершена.
Пакет.ПроверитьСтраницу1 = Ложь;
КонецЕсли;
Если СпроситьОУведомленииПользователей(Пакет) Тогда
Возврат;
КонецЕсли;
Если Пакет.ПерейтиНаСтраницу2 = Истина Тогда
// Для внешних отчетов выполняются только проверки заполнения, без переключения страницы.
Если Не Контекст.ЭтоВнешний Тогда
Элементы.Страницы.ТекущаяСтраница = Элементы.Дополнительно;
Элементы.Назад.Доступность = Истина;
Элементы.Далее.Доступность = Ложь;
КонецЕсли;
// Переключение выполнено.
Пакет.ПерейтиНаСтраницу2 = Ложь;
КонецЕсли;
Если Пакет.ЗаполнитьСтраницу2Сервер = Истина
Или Пакет.ПроверитьИЗаписатьСервер = Истина Тогда
ВыполнитьПакетСервер(Пакет);
СтрокиДерева = ДеревоПодсистем.ПолучитьЭлементы();
Для Каждого СтрокаДерева Из СтрокиДерева Цикл
Элементы.ДеревоПодсистем.Развернуть(СтрокаДерева.ПолучитьИдентификатор(), Истина);
КонецЦикла;
Если Пакет.Отказ = Истина Тогда
ПерейтиНаСтраницу1();
Возврат;
КонецЕсли;
КонецЕсли;
Если Пакет.ЗакрытьПослеЗаписи = Истина Тогда
ВариантыОтчетовКлиент.ОбновитьОткрытыеФормы(, ИмяФормы);
Закрыть(Новый ВыборНастроек(ВариантКлючВарианта));
Пакет.ЗакрытьПослеЗаписи = Ложь;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция ПродолжитьВыполнениеПакета(Результат, Пакет)
ТекущийШаг = Пакет.ТекущийШаг;
Пакет.ТекущийШаг = Неопределено;
Если ТекущийШаг = "ВопросНаПерезапись" Тогда
Если Результат <> КодВозвратаДиалога.Да Тогда
Возврат Ложь;
КонецЕсли;
Пакет.Вставить("ВопросНаПерезаписьПройден", Истина);
ИначеЕсли ТекущийШаг = "ВопросОУведомленииПользователей" Тогда
Если Результат = КодВозвратаДиалога.Да Тогда
Пакет.Вставить("ВопросОУведомленииПользователейЗадан", Истина);
Иначе
УведомитьПользователей = Ложь;
КонецЕсли;
КонецЕсли;
Возврат Истина;
КонецФункции
&НаКлиенте
Функция СпроситьОПерезаписиВариантаОтчета(Пакет, Вариант)
Если Пакет.Свойство("ВопросНаПерезаписьПройден") Тогда
Возврат Ложь;
КонецЕсли;
Пакет.ТекущийШаг = "ВопросНаПерезапись";
Если Вариант.ПометкаУдаления = Истина Тогда
КнопкаПоУмолчанию = КодВозвратаДиалога.Нет;
ШаблонТекстаВопроса = НСтр("ru = 'Вариант отчета ""%1"" помечен на удаление.
|Заменить помеченный на удаление вариант отчета?'");
Иначе
КнопкаПоУмолчанию = КодВозвратаДиалога.Да;
ШаблонТекстаВопроса = НСтр("ru = 'Заменить ранее сохраненный вариант отчета ""%1""?'");
КонецЕсли;
ТекстВопроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонТекстаВопроса, Объект.Наименование);
Обработчик = Новый ОписаниеОповещения("ВыполнитьПакет", ЭтотОбъект, Пакет);
ПоказатьВопрос(Обработчик, ТекстВопроса, РежимДиалогаВопрос.ДаНет, 60, КнопкаПоУмолчанию);
Возврат Истина;
КонецФункции
&НаКлиенте
Функция СпроситьОУведомленииПользователей(Пакет)
Если Не УведомитьПользователей
Или Пакет.Свойство("ВопросОУведомленииПользователейЗадан") Тогда
Возврат Ложь;
КонецЕсли;
КоличествоПользователей = КоличествоПользователейВариантОтчета(ПользователиВарианта);
Если КоличествоПользователей < 10 Тогда
Возврат Ложь;
КонецЕсли;
Пакет.ТекущийШаг = "ВопросОУведомленииПользователей";
Обработчик = Новый ОписаниеОповещения("ВыполнитьПакет", ЭтотОбъект, Пакет);
ВариантыОтчетовСлужебныйКлиент.СпроситьОУведомленииПользователей(Обработчик, КоличествоПользователей);
Возврат Истина;
КонецФункции
&НаКлиенте
Процедура ПерейтиНаСтраницу1()
Элементы.Страницы.ТекущаяСтраница = Элементы.Основное;
Элементы.Назад.Доступность = Ложь;
Элементы.Далее.Заголовок = "";
Элементы.Далее.Доступность = Истина;
КонецПроцедуры
&НаКлиенте
Процедура СохранитьИЗакрыть()
СтраницаДополнительноЗаполнена = (Элементы.Страницы.ТекущаяСтраница = Элементы.Дополнительно);
Пакет = Новый Структура;
Пакет.Вставить("ПроверитьСтраницу1", Не СтраницаДополнительноЗаполнена);
Пакет.Вставить("ПерейтиНаСтраницу2", Не СтраницаДополнительноЗаполнена);
Пакет.Вставить("ЗаполнитьСтраницу2Сервер", Не СтраницаДополнительноЗаполнена);
Пакет.Вставить("ПроверитьИЗаписатьСервер", Истина);
Пакет.Вставить("ЗакрытьПослеЗаписи", Истина);
Пакет.Вставить("ТекущийШаг", Неопределено);
ВыполнитьПакет(Неопределено, Пакет);
КонецПроцедуры
&НаКлиенте
Процедура ОписаниеНачалоВыбораЗавершение(Знач ВведенныйТекст, Знач ДополнительныеПараметры) Экспорт
Если ВведенныйТекст = Неопределено Тогда
Возврат;
КонецЕсли;
Объект.Описание = ВведенныйТекст;
КонецПроцедуры
////////////////////////////////////////////////////////////////////////////////
// Клиент и сервер
// Возвращает признак наличия права изменения варианта отчета.
//
// Параметры:
// Вариант - ДанныеФормыКоллекция:
// * Ссылка - СправочникСсылка.ВариантыОтчетов
// ПолныеПраваНаВарианты - Булево
//
// Возвращаемое значение:
// Булево
//
&НаКлиентеНаСервереБезКонтекста
Функция ПравоНастройкиВарианта(Вариант, ПолныеПраваНаВарианты)
Возврат (ПолныеПраваНаВарианты Или Вариант.АвторТекущийПользователь) И ЗначениеЗаполнено(Вариант.Ссылка);
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ПравоЗаписиВарианта(Вариант, ПолныеПраваНаВарианты)
Возврат Вариант.Пользовательский И ПравоНастройкиВарианта(Вариант, ПолныеПраваНаВарианты);
КонецФункции
// Возвращает уникальное наименование варианта отчета.
//
// Параметры:
// Вариант - ДанныеФормыКоллекция:
// * Ссылка - СправочникСсылка.ВариантыОтчетов
// * Наименование - Строка
// ВариантыОтчета - ДанныеФормыКоллекция
//
// Возвращаемое значение:
// Строка
//
&НаКлиентеНаСервереБезКонтекста
Функция СформироватьСвободноеНаименование(Вариант, ВариантыОтчета)
ШаблонИмениВарианта = СокрЛП(Вариант.Наименование) + " - " + НСтр("ru = 'копия'");
СвободноеНаименование = ШаблонИмениВарианта;
Найденные = ВариантыОтчета.НайтиСтроки(Новый Структура("Наименование", СвободноеНаименование));
Если Найденные.Количество() = 0 Тогда
Возврат СвободноеНаименование;
КонецЕсли;
НомерВарианта = 1;
Пока Истина Цикл
НомерВарианта = НомерВарианта + 1;
СвободноеНаименование = ШаблонИмениВарианта +" (" + Формат(НомерВарианта, "") + ")";
Найденные = ВариантыОтчета.НайтиСтроки(Новый Структура("Наименование", СвободноеНаименование));
Если Найденные.Количество() = 0 Тогда
Возврат СвободноеНаименование;
КонецЕсли;
КонецЦикла;
Возврат ШаблонИмениВарианта;
КонецФункции
&НаКлиенте
Процедура ЗаполнитьСписокВариантовОтложенно()
Если ВариантыКонтекста.Количество() > 0 Тогда
ЗаполнитьСписокВариантов();
КонецЕсли;
КонецПроцедуры
////////////////////////////////////////////////////////////////////////////////
// Вызов сервера
&НаСервереБезКонтекста
Функция КоличествоПользователейВариантОтчета(ПользователиВарианта)
Возврат РегистрыСведений.НастройкиВариантовОтчетов.КоличествоПользователейВариантОтчета(ПользователиВарианта);
КонецФункции
&НаСервере
Процедура ВыполнитьПакетСервер(Пакет)
Пакет.Вставить("Отказ", Ложь);
Если Пакет.ЗаполнитьСтраницу2Сервер = Истина Тогда
Если Не Контекст.ЭтоВнешний Тогда
ПерезаполнитьСтраницуДополнительно(Пакет);
КонецЕсли;
Пакет.ЗаполнитьСтраницу2Сервер = Ложь;
КонецЕсли;
Если Пакет.ПроверитьИЗаписатьСервер = Истина Тогда
ПроверитьИЗаписатьВариантОтчета(Пакет);
Пакет.ПроверитьИЗаписатьСервер = Ложь;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПерезаполнитьСтраницуДополнительно(Пакет)
Если Пакет.ВариантЭтоНовый Тогда
ВариантОснование = ПрототипСсылка;
Иначе
ВариантОснование = ВариантСсылка;
КонецЕсли;
ДеревоПриемник = ВариантыОтчетов.ДеревоПодсистемСформировать(ЭтотОбъект, ВариантОснование);
ЗначениеВРеквизитФормы(ДеревоПриемник, "ДеревоПодсистем");
КонецПроцедуры
&НаСервере
Процедура ПроверитьИЗаписатьВариантОтчета(Пакет)
ЭтоНовыйВариантОтчета = Не ЗначениеЗаполнено(ВариантСсылка);
// Для записи в РС НастройкиВариантовОтчетов.
ЭлементВсеПользователи = ПользователиВарианта.НайтиПоЗначению(Справочники.РабочиеГруппы.ВсеПользователи);
Если Доступен = "УказаннымПользователям" Тогда
Если ЭлементВсеПользователи = Неопределено Тогда
ПользователиВарианта.Добавить(Справочники.РабочиеГруппы.ВсеПользователи,, Истина);
КонецЕсли;
Иначе
Если ЭлементВсеПользователи <> Неопределено Тогда
ПользователиВарианта.Удалить(ЭлементВсеПользователи);
КонецЕсли;
КонецЕсли;
НачатьТранзакцию();
Попытка
Блокировка = Новый БлокировкаДанных;
Если Не ЭтоНовыйВариантОтчета Тогда
ЭлементБлокировки = Блокировка.Добавить(Метаданные.Справочники.ВариантыОтчетов.ПолноеИмя());
ЭлементБлокировки.УстановитьЗначение("Ссылка", ВариантСсылка);
КонецЕсли;
Блокировка.Заблокировать();
Если ЭтоНовыйВариантОтчета И ВариантыОтчетов.НаименованиеЗанято(Контекст.ОтчетСсылка, ВариантСсылка, Объект.Наименование) Тогда
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = '""%1"" занято, необходимо указать другое наименование.'"), Объект.Наименование);
ОбщегоНазначения.СообщитьПользователю(ТекстОшибки, , "Объект.Наименование");
Пакет.Отказ = Истина;
ОтменитьТранзакцию();
Возврат;
КонецЕсли;
Если ЭтоНовыйВариантОтчета Тогда
ВариантОбъект = Справочники.ВариантыОтчетов.СоздатьЭлемент();
ВариантОбъект.Отчет = Контекст.ОтчетСсылка;
ВариантОбъект.ТипОтчета = Контекст.ТипОтчета;
ВариантОбъект.КлючВарианта = Строка(Новый УникальныйИдентификатор());
ВариантОбъект.Пользовательский = Истина;
ВариантОбъект.Автор = Контекст.ТекущийПользователь;
Если ПрототипПредопределенный Тогда
ВариантОбъект.Родитель = ПрототипСсылка;
ИначеЕсли ТипЗнч(ПрототипСсылка) = Тип("СправочникСсылка.ВариантыОтчетов") И Не ПрототипСсылка.Пустая() Тогда
ВариантОбъект.Родитель = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ПрототипСсылка, "Родитель");
Иначе
ВариантОбъект.ЗаполнитьРодителя();
КонецЕсли;
Иначе
ВариантОбъект = ВариантСсылка.ПолучитьОбъект();
КонецЕсли;
Если Контекст.ЭтоВнешний Тогда
ВариантОбъект.Размещение.Очистить();
Иначе
ДеревоПриемник = РеквизитФормыВЗначение("ДеревоПодсистем", Тип("ДеревоЗначений"));
Если ЭтоНовыйВариантОтчета Тогда
ИзмененныеРазделы = ДеревоПриемник.Строки.НайтиСтроки(Новый Структура("Использование", 1), Истина);
Иначе
ИзмененныеРазделы = ДеревоПриемник.Строки.НайтиСтроки(Новый Структура("Модифицированность", Истина), Истина);
КонецЕсли;
ВариантыОтчетов.ДеревоПодсистемЗаписать(ВариантОбъект, ИзмененныеРазделы);
КонецЕсли;
ВариантОбъект.Наименование = Объект.Наименование;
ВариантОбъект.Описание = Объект.Описание;
ВариантОбъект.ТолькоДляАвтора = Объект.ТолькоДляАвтора;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда
МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер");
МультиязычныеРеквизитыОбъекта = МодульМультиязычностьСервер.МультиязычныеРеквизитыОбъекта(ВариантОбъект.Ссылка);
Если МультиязычныеРеквизитыОбъекта.Количество() > 0 Тогда
НаборМультиязычныхРеквизитов = Новый Массив;
Для Каждого ОписаниеРеквизита Из МультиязычныеРеквизитыОбъекта Цикл
НаборМультиязычныхРеквизитов.Добавить(ОписаниеРеквизита.Ключ + "Язык1");
НаборМультиязычныхРеквизитов.Добавить(ОписаниеРеквизита.Ключ + "Язык2");
КонецЦикла;
СписокМультиязычныхРеквизитов = СтрСоединить(НаборМультиязычныхРеквизитов, ",");
ЗаполнитьЗначенияСвойств(ВариантОбъект, Объект, СписокМультиязычныхРеквизитов);
КонецЕсли;
Для каждого СтрокаТаблицы Из Объект.Представления Цикл
НоваяСтрока = ВариантОбъект.Представления.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаТаблицы);
КонецЦикла;
МодульМультиязычностьСервер.ПередЗаписьюНаСервере(ВариантОбъект);
КонецЕсли;
ВариантОбъект.ДополнительныеСвойства.Вставить("ПользователиВарианта", ПользователиВарианта);
ВариантОбъект.ДополнительныеСвойства.Вставить("УведомитьПользователей", УведомитьПользователей);
ВариантОбъект.Записать();
ВариантСсылка = ВариантОбъект.Ссылка;
ВариантКлючВарианта = ВариантОбъект.КлючВарианта;
Если СброситьНастройки Тогда
ВариантыОтчетов.СброситьПользовательскиеНастройки(ВариантОбъект.Ссылка);
КонецЕсли;
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ВызватьИсключение;
КонецПопытки;
КонецПроцедуры
////////////////////////////////////////////////////////////////////////////////
// Сервер
&НаСервере
Процедура ОпределитьПоведениеВМобильномКлиенте()
ЭтоМобильныйКлиент = ОбщегоНазначения.ЭтоМобильныйКлиент();
Если Не ЭтоМобильныйКлиент Тогда
Возврат;
КонецЕсли;
ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиФормы.Авто;
КонецПроцедуры
&НаСервере
Процедура УстановитьУсловноеОформление()
УсловноеОформление.Элементы.Очистить();
ВариантыОтчетов.УстановитьУсловноеОформлениеСпискаПользователейВариантаОтчета(ЭтотОбъект);
ВариантыОтчетов.УстановитьУсловноеОформлениеДереваПодсистем(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСписокВариантов()
ОтборОтчеты = Новый Массив;
ОтборОтчеты.Добавить(Контекст.ОтчетСсылка);
ПараметрыПоиска = Новый Структура("Отчеты, ТолькоЛичные, КлючВариантаБезУсловий",
ОтборОтчеты, Истина, ПрототипКлюч);
ТаблицаВариантов = ВариантыОтчетов.ТаблицаВариантовОтчетов(ПараметрыПоиска);
ОтчетыСервер.ДобавитьВариантыКонтекста(Контекст.ОтчетСсылка, ТаблицаВариантов, ВариантыКонтекста);
// Заполнить автовычисляемые колонки.
ВариантыОтчета.Загрузить(ТаблицаВариантов);
Для Каждого Вариант Из ВариантыОтчета Цикл
Вариант.АвторТекущийПользователь = (Вариант.Автор = Контекст.ТекущийПользователь);
Если Вариант.КлючВарианта = ПрототипКлюч Тогда
ПрототипСсылка = Вариант.Ссылка;
ПрототипПредопределенный = Не Вариант.Пользовательский;
КонецЕсли;
КонецЦикла;
Если Не ЗначениеЗаполнено(ПрототипСсылка) И ЗначениеЗаполнено(ПрототипКлюч) Тогда
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Отчет", ОтборОтчеты);
Запрос.УстановитьПараметр("КлючВарианта", ПрототипКлюч);
Запрос.Текст =
"ВЫБРАТЬ
| ВариантыОтчетов.Ссылка КАК Ссылка,
| ВариантыОтчетов.Пользовательский КАК Пользовательский
|ИЗ
| Справочник.ВариантыОтчетов КАК ВариантыОтчетов
|ГДЕ
| ВариантыОтчетов.Отчет В (&Отчет)
| И ВариантыОтчетов.КлючВарианта = &КлючВарианта";
УстановитьПривилегированныйРежим(Истина);
Выборка = Запрос.Выполнить().Выбрать();
УстановитьПривилегированныйРежим(Ложь);
Если Выборка.Следующий() Тогда
ПрототипСсылка = Выборка.Ссылка;
ПрототипПредопределенный = Не Выборка.Пользовательский;
КонецЕсли;
КонецЕсли;
Если Контекст.ЭтоВнешний
И Не ХранилищаНастроек.ХранилищеВариантовОтчетов.ДобавитьВариантыВнешнегоОтчета(
ВариантыОтчета, Контекст.ОтчетСсылка, Контекст.ОтчетИмя) Тогда
Возврат;
КонецЕсли;
УстановитьСценарийСохраненияВарианта();
КонецПроцедуры
&НаСервере
Процедура УстановитьСценарийСохраненияВарианта()
БудетЗаписанНовый = Ложь;
БудетПерезаписанСуществующий = Ложь;
ПерезаписьНевозможна = Ложь;
Если НаименованиеМодифицировано Тогда
Поиск = Новый Структура("Наименование", Объект.Наименование);
Иначе
Поиск = Новый Структура("КлючВарианта", ПрототипКлюч);
КонецЕсли;
НайденныеВарианты = ВариантыОтчета.НайтиСтроки(Поиск);
Если НайденныеВарианты.Количество() = 0 Тогда
БудетЗаписанНовый = Истина;
ВариантСсылка = Неопределено;
Если Не ОписаниеМодифицировано Тогда
Объект.Описание = "";
КонецЕсли;
Если Не Контекст.ПолныеПраваНаВарианты Тогда
Объект.ТолькоДляАвтора = Истина;
КонецЕсли;
Иначе
Вариант = НайденныеВарианты[0]; // ДанныеФормыЭлементКоллекции
ПравоЗаписиВарианта = ПравоЗаписиВарианта(Вариант, Контекст.ПолныеПраваНаВарианты);
ЗаполнитьПредставления(Вариант.Ссылка);
Если ПравоЗаписиВарианта Тогда
БудетПерезаписанСуществующий = Истина;
НаименованиеМодифицировано = Ложь;
Объект.Наименование = Вариант.Наименование;
ВариантСсылка = Вариант.Ссылка;
Если Контекст.ПолныеПраваНаВарианты Тогда
Объект.ТолькоДляАвтора = Вариант.ТолькоДляАвтора;
Иначе
Объект.ТолькоДляАвтора = Истина;
КонецЕсли;
Если Не ОписаниеМодифицировано Тогда
Объект.Описание = Вариант.Описание;
КонецЕсли;
Иначе
Если НаименованиеМодифицировано Тогда
ПерезаписьНевозможна = Истина;
Иначе
БудетЗаписанНовый = Истина;
Объект.Наименование = СформироватьСвободноеНаименование(Вариант, ВариантыОтчета);
КонецЕсли;
ВариантСсылка = Неопределено;
Объект.ТолькоДляАвтора = Истина;
Если Не ОписаниеМодифицировано Тогда
Объект.Описание = "";
КонецЕсли;
КонецЕсли;
КонецЕсли;
Доступен = ?(Объект.ТолькоДляАвтора, "ТолькоДляАвтора", "УказаннымПользователям");
Если БудетЗаписанНовый Тогда
Элементы.ЧтоБудетДальше.ТекущаяСтраница = Элементы.Новый;
Элементы.СброситьНастройки.Видимость = Ложь;
Элементы.Далее.Доступность = Истина;
Элементы.Сохранить.Доступность = Истина;
ИначеЕсли БудетПерезаписанСуществующий Тогда
Элементы.ЧтоБудетДальше.ТекущаяСтраница = Элементы.Перезапись;
Элементы.СброситьНастройки.Видимость = Истина;
Элементы.Далее.Доступность = Истина;
Элементы.Сохранить.Доступность = Истина;
ИначеЕсли ПерезаписьНевозможна Тогда
Элементы.ЧтоБудетДальше.ТекущаяСтраница = Элементы.ПерезаписьНевозможна;
Элементы.СброситьНастройки.Видимость = Ложь;
Элементы.Далее.Доступность = Ложь;
Элементы.Сохранить.Доступность = Ложь;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьПредставления(Вариант)
Запрос = Новый Запрос(
"ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1
| ВЫБОР
| КОГДА НЕ ИзКонфигурации.Наименование ЕСТЬ NULL
| ТОГДА ИзКонфигурации.Наименование
| КОГДА НЕ ИзРасширений.Наименование ЕСТЬ NULL
| ТОГДА ИзРасширений.Наименование
| ИНАЧЕ Пользовательские.Наименование
| КОНЕЦ КАК Наименование,
| ВЫБОР
| КОГДА НЕ ИзКонфигурации.НаименованиеЯзык1 ЕСТЬ NULL
| ТОГДА ИзКонфигурации.НаименованиеЯзык1
| КОГДА НЕ ИзРасширений.НаименованиеЯзык1 ЕСТЬ NULL
| ТОГДА ИзРасширений.НаименованиеЯзык1
| ИНАЧЕ Пользовательские.НаименованиеЯзык1
| КОНЕЦ КАК НаименованиеЯзык1,
| ВЫБОР
| КОГДА НЕ ИзКонфигурации.НаименованиеЯзык2 ЕСТЬ NULL
| ТОГДА ИзКонфигурации.НаименованиеЯзык2
| КОГДА НЕ ИзРасширений.НаименованиеЯзык2 ЕСТЬ NULL
| ТОГДА ИзРасширений.НаименованиеЯзык2
| ИНАЧЕ Пользовательские.НаименованиеЯзык2
| КОНЕЦ КАК НаименованиеЯзык2,
| ВЫБОР
| КОГДА ПОДСТРОКА(Пользовательские.Описание, 1, 1) <> """"
| ТОГДА Пользовательские.Описание
| КОГДА НЕ ИзКонфигурации.Описание ЕСТЬ NULL
| ТОГДА ИзКонфигурации.Описание
| КОГДА НЕ ИзРасширений.Описание ЕСТЬ NULL
| ТОГДА ИзРасширений.Описание
| ИНАЧЕ ВЫРАЗИТЬ("""" КАК СТРОКА(1000))
| КОНЕЦ КАК Описание,
| ВЫБОР
| КОГДА ПОДСТРОКА(Пользовательские.ОписаниеЯзык1, 1, 1) <> """"
| ТОГДА Пользовательские.ОписаниеЯзык1
| КОГДА НЕ ИзКонфигурации.ОписаниеЯзык1 ЕСТЬ NULL
| ТОГДА ИзКонфигурации.ОписаниеЯзык1
| КОГДА НЕ ИзРасширений.ОписаниеЯзык1 ЕСТЬ NULL
| ТОГДА ИзРасширений.ОписаниеЯзык1
| ИНАЧЕ ВЫРАЗИТЬ("""" КАК СТРОКА(1000))
| КОНЕЦ КАК ОписаниеЯзык1,
| ВЫБОР
| КОГДА ПОДСТРОКА(Пользовательские.ОписаниеЯзык2, 1, 1) <> """"
| ТОГДА Пользовательские.ОписаниеЯзык2
| КОГДА НЕ ИзКонфигурации.ОписаниеЯзык2 ЕСТЬ NULL
| ТОГДА ИзКонфигурации.ОписаниеЯзык2
| КОГДА НЕ ИзРасширений.ОписаниеЯзык2 ЕСТЬ NULL
| ТОГДА ИзРасширений.ОписаниеЯзык2
| ИНАЧЕ ВЫРАЗИТЬ("""" КАК СТРОКА(1000))
| КОНЕЦ КАК ОписаниеЯзык2
|ИЗ
| Справочник.ВариантыОтчетов КАК Пользовательские
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетов КАК ИзКонфигурации
| ПО ИзКонфигурации.Ссылка = Пользовательские.ПредопределенныйВариант
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетовРасширений КАК ИзРасширений
| ПО ИзРасширений.Ссылка = Пользовательские.ПредопределенныйВариант
|ГДЕ
| Пользовательские.Ссылка = &Вариант");
Запрос.УстановитьПараметр("Вариант", Вариант);
Выборка = Запрос.Выполнить().Выгрузить();
Если Выборка.Количество() = 0 Тогда
Возврат;
КонецЕсли;
ЗаполнитьЗначенияСвойств(Объект, Выборка[0]);
КонецПроцедуры
#КонецОбласти
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<Help xmlns="http://v8.1c.ru/8.3/xcf/extrnprops" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.20">
<Page>ru</Page>
</Help>
@@ -0,0 +1,49 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html;charset=utf-8" http-equiv="content-type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 11.00.10570.1001"></meta></head><body>
<p>Предназначена для сохранения <a href="Catalog.ВариантыОтчетов.Form.ФормаЭлемента/Help">варианта отчета</a>.</p>
<p>После того как настроен и сформирован <a href="CommonForm.ФормаОтчета/Help">отчет</a>, его можно сохранить в новом варианте отчета. Для этого необходимо воспользоваться кнопкой <img src="CommonPicture.ВыбратьВариантОтчета"></img> <strong>Варианты отчета - Сохранить как...</strong>, также можно воспользоваться аналогичной командой меню <strong>Еще</strong>.</p>
<h3>Список существующих вариантов</h3>
<ul><li>При сохранении варианта отчета выводится список всех существующих вариантов этого отчета - предопределенных и пользовательских.
<ul><li>Список включает:
<ul><li>стандартные, предусмотренные в программе предопределенные <a href="Catalog.ВариантыОтчетов/Help">варианты отчетов</a>. По умолчанию являются общими;
</li>
<li>общие варианты отчетов, предоставленные другими пользователями в общий доступ;
</li>
<li>личные варианты отчетов, сохраненные ранее. </li></ul></li>
<li>В списке также выводятся помеченные на удаление варианты отчетов.</li></ul></li>
<li>В списке можно <strong>Изменить</strong> существующие варианты отчетов с помощью соответствующей команды контекстного меню по правой кнопке мыши. У предопределенного варианта отчета можно изменить описание или настройки размещения, у пользовательского варианта можно изменить и наименование (при наличии прав доступа).
</li>
<li>Для того чтобы удалить существующий пользовательский вариант отчета, выделите его, нажмите на клавишу <strong>Del</strong> или выполните команду контекстного меню по правой кнопке мыши <strong>Пометить на удаление</strong>. Предопределенные варианты отчетов удалить невозможно.</li></ul><h3>Наименование варианта отчета</h3>
<ul dir="ltr"><li>Для сохранения нового варианта отчета необходимо ввести <strong>Наименование</strong>, которое не занято другим вариантом этого отчета. При сохранении контролируется уникальность наименований вариантов отчетов.
</li>
<li>При перезаписи варианта можно сохранить настройки в существующем варианте - по умолчанию выбран вариант отчета, в котором была выполнена команда <strong>Сохранить вариант</strong>. Для перезаписи можно выбрать любой личный вариант отчета из списка.
<ul><li>Варианты отчетов, в том числе и предопределенных, которые нельзя перезаписать, отображаются в списке существующих вариантов серым цветом. При сохранении таких вариантов отчетов программа в наименовании по умолчанию добавляет слово "-копия".</li>
<li>В случае если заменяемый вариант отчета был помечен на удаление, программой выводится предупреждение. Нажмите кнопку <strong>Да</strong>, для того чтобы подтвердить свой выбор.
</li>
<li>Для администраторов программы или ответственных за отчеты предусмотрена возможность перезаписи общих вариантов отчетов других авторов.</li></ul></li></ul><h3 style="font-size: 13.4399995803833px;">Назначение</h3>
<h3>
<ul style="font-size: 11.199999809265137px;"><li><span style="font-weight: normal;">При сохранении варианта отчета также нужно выбрать его </span>Назначение<span style="font-weight: normal;"> с помощью выпадающего списка:</span></li>
<ul><li style="font-weight: normal;"><b>Для компьютеров и планшетов</b> - удобно использовать для устройств с широким экраном, т.к. в них возможно отображение таблиц с большим количеством колонок. </li>
<li style="font-weight: normal;"><b>Для смартфонов (для мобильного клиента) </b>- оптимизировано для устройств с узким экраном.</li>
<li>Для любых устройств<span style="font-weight: normal;"> - одинаково удобно подходит для любых устройств. </span></li></ul></ul></h3>
<h3>Доступность</h3>
<ul><li>С помощью переключателя <strong>Доступен</strong> администратор варианта отчета может ограничить доступность варианта отчета:</li>
<ul><li><b>Только автору</b> - в таблице ниже с помощью кнопки <b>Подобрать</b> выберите автора отчета. </li>
<li><b>Всем</b>, в этом случае вариант отчета будет виден для всех или для конкретно выбранных пользователей. В таблице ниже с помощью кнопки <b>Подобрать</b> выберите из списка пользователя или группу пользователей. </li>
</ul><li>Для указанных пользователей отчет будет отображаться в панели отчетов, подменю и окне выбора варианта отчета. Остальным пользователям, имеющим права на отчет, он будет доступен из списка <b>Все отчеты</b>, а также в режиме настройки панели отчетов.</li></ul><h3>Описание отчета</h3>
<ul><li>
<div>Введите <b>Описание</b>, которое выводится под ссылкой в панели отчетов.</div></li></ul><h3>Сохранение варианта отчета</h3>
<p>Сохранить вариант отчета можно двумя способами: </p>
<ul><li>После определения основных параметров нажмите <strong>Сохранить</strong>, при этом будут использованы настройки по умолчанию и новый вариант отчета будет помещен в тот же раздел списка отчетов, что и исходный вариант.
</li>
<li>Нажмите <strong>Далее</strong>, для того чтобы изменить настройки размещения варианта отчета. </li></ul><h3>Размещение в панелях отчетов</h3>
<ul><li>Включите один или несколько флажков в колонке <strong>Раздел, группа</strong> для размещения варианта отчетов в разделах или группах программы. При размещении в разделе вариант отчета будет выводиться в верхней части панели отчетов раздела, без размещения в группах.
</li>
<li>
<div>В колонке <strong>Важность</strong> выберите способ выделения варианта отчета в группе: </div>
<ul><li>
<div><strong>Важный</strong> – вариант отчета будет выделен жирным шрифтом.</div>
</li>
<li>
<div><strong>См. также</strong> – вариант отчета будет выведен в отдельной группе внизу панели отчетов.</div></li></ul></li>
<li>Нажмите кнопку <strong>Сохранить</strong> для сохранения варианта отчета с выбранными настройками.</li></ul><h3>См. также: </h3>
<ul><li><a href="v8help://frame/form_common">Работа с формами</a>.</li></ul></body></html>
@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.20">
<Form uuid="7433b2a9-f634-4af7-ac85-6aa1280ea239">
<Properties>
<Name>СохранениеВариантаОтчетаВФайл</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Сохранение варианта отчета в файл</v8:content>
</v8:item>
</Synonym>
<Comment/>
<FormType>Managed</FormType>
<IncludeHelpInContents>false</IncludeHelpInContents>
<UsePurposes>
<v8:Value xsi:type="app:ApplicationUsePurpose">PlatformApplication</v8:Value>
<v8:Value xsi:type="app:ApplicationUsePurpose">MobilePlatformApplication</v8:Value>
</UsePurposes>
</Properties>
</Form>
</MetaDataObject>
@@ -0,0 +1,481 @@
<?xml version="1.0" encoding="UTF-8"?>
<Form xmlns="http://v8.1c.ru/8.3/xcf/logform" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:dcscor="http://v8.1c.ru/8.1/data-composition-system/core" xmlns:dcssch="http://v8.1c.ru/8.1/data-composition-system/schema" xmlns:dcsset="http://v8.1c.ru/8.1/data-composition-system/settings" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.20">
<WindowOpeningMode>LockOwnerWindow</WindowOpeningMode>
<AutoSaveDataInSettings>Use</AutoSaveDataInSettings>
<AutoTitle>false</AutoTitle>
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1">
<ChildItems>
<Button name="Сохранить" id="27">
<Type>CommandBarButton</Type>
<DefaultButton>true</DefaultButton>
<CommandName>Form.Command.Сохранить</CommandName>
<ExtendedTooltip name="СохранитьРасширеннаяПодсказка" id="28"/>
</Button>
</ChildItems>
</AutoCommandBar>
<Events>
<Event name="OnOpen">ПриОткрытии</Event>
<Event name="OnCreateAtServer">ПриСозданииНаСервере</Event>
</Events>
<ChildItems>
<Pages name="ВариантыСохранения" id="29">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Варианты сохранения</v8:content>
</v8:item>
</Title>
<PagesRepresentation>None</PagesRepresentation>
<ExtendedTooltip name="ВариантыСохраненияРасширеннаяПодсказка" id="30"/>
<ChildItems>
<Page name="ОдинВариантОтчета" id="31">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Один вариант отчета</v8:content>
</v8:item>
</Title>
<ExtendedTooltip name="ОдинВариантОтчетаРасширеннаяПодсказка" id="32"/>
<ChildItems>
<InputField name="ИмяФайла" id="1">
<DataPath>ИмяФайла</DataPath>
<AutoMaxWidth>false</AutoMaxWidth>
<HorizontalStretch>true</HorizontalStretch>
<ChoiceButton>true</ChoiceButton>
<ContextMenu name="ИмяФайлаКонтекстноеМеню" id="2"/>
<ExtendedTooltip name="ИмяФайлаРасширеннаяПодсказка" id="3"/>
<Events>
<Event name="OnChange">ИмяФайлаПриИзменении</Event>
<Event name="StartChoice">ИмяФайлаНачалоВыбора</Event>
</Events>
</InputField>
<Table name="ПользовательскиеНастройки" id="4">
<Representation>List</Representation>
<TitleLocation>Top</TitleLocation>
<ChangeRowOrder>false</ChangeRowOrder>
<Header>false</Header>
<HorizontalLines>false</HorizontalLines>
<VerticalLines>false</VerticalLines>
<AutoInsertNewRow>true</AutoInsertNewRow>
<DataPath>ПользовательскиеНастройки</DataPath>
<RowPictureDataPath>ПользовательскиеНастройки.Picture</RowPictureDataPath>
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Пользовательские настройки</v8:content>
</v8:item>
</Title>
<CommandSet>
<ExcludedCommand>Change</ExcludedCommand>
<ExcludedCommand>EndEdit</ExcludedCommand>
<ExcludedCommand>Pickup</ExcludedCommand>
</CommandSet>
<ContextMenu name="ПользовательскиеНастройкиКонтекстноеМеню" id="5"/>
<AutoCommandBar name="ПользовательскиеНастройкиКоманднаяПанель" id="6">
<Autofill>false</Autofill>
<ChildItems>
<ButtonGroup name="ПользовательскиеНастройкиГруппаИзменитьФлажки" id="75">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Изменить флажки</v8:content>
</v8:item>
</Title>
<Representation>Compact</Representation>
<ExtendedTooltip name="ПользовательскиеНастройкиГруппаИзменитьФлажкиРасширеннаяПодсказка" id="76"/>
<ChildItems>
<Button name="ПользовательскиеНастройкиУстановитьФлажки" id="23">
<Type>CommandBarButton</Type>
<CommandName>Form.Item.ПользовательскиеНастройки.StandardCommand.CheckAll</CommandName>
<LocationInCommandBar>InCommandBarAndInAdditionalSubmenu</LocationInCommandBar>
<ExtendedTooltip name="ПользовательскиеНастройкиУстановитьФлажкиРасширеннаяПодсказка" id="24"/>
</Button>
<Button name="ПользовательскиеНастройкиСнятьФлажки" id="25">
<Type>CommandBarButton</Type>
<CommandName>Form.Item.ПользовательскиеНастройки.StandardCommand.UncheckAll</CommandName>
<LocationInCommandBar>InCommandBarAndInAdditionalSubmenu</LocationInCommandBar>
<ExtendedTooltip name="ПользовательскиеНастройкиСнятьФлажкиРасширеннаяПодсказка" id="26"/>
</Button>
</ChildItems>
</ButtonGroup>
</ChildItems>
</AutoCommandBar>
<ExtendedTooltip name="ПользовательскиеНастройкиРасширеннаяПодсказка" id="7"/>
<SearchStringAddition name="ПользовательскиеНастройкиСтрокаПоиска" id="8">
<AdditionSource>
<Item>ПользовательскиеНастройки</Item>
<Type>SearchStringRepresentation</Type>
</AdditionSource>
<ContextMenu name="ПользовательскиеНастройкиСтрокаПоискаКонтекстноеМеню" id="9"/>
<ExtendedTooltip name="ПользовательскиеНастройкиСтрокаПоискаРасширеннаяПодсказка" id="10"/>
</SearchStringAddition>
<ViewStatusAddition name="ПользовательскиеНастройкиСостояниеПросмотра" id="11">
<AdditionSource>
<Item>ПользовательскиеНастройки</Item>
<Type>ViewStatusRepresentation</Type>
</AdditionSource>
<ContextMenu name="ПользовательскиеНастройкиСостояниеПросмотраКонтекстноеМеню" id="12"/>
<ExtendedTooltip name="ПользовательскиеНастройкиСостояниеПросмотраРасширеннаяПодсказка" id="13"/>
</ViewStatusAddition>
<SearchControlAddition name="ПользовательскиеНастройкиУправлениеПоиском" id="14">
<AdditionSource>
<Item>ПользовательскиеНастройки</Item>
<Type>SearchControl</Type>
</AdditionSource>
<ContextMenu name="ПользовательскиеНастройкиУправлениеПоискомКонтекстноеМеню" id="15"/>
<ExtendedTooltip name="ПользовательскиеНастройкиУправлениеПоискомРасширеннаяПодсказка" id="16"/>
</SearchControlAddition>
<Events>
<Event name="OnChange">ПользовательскиеНастройкиПриИзменении</Event>
</Events>
<ChildItems>
<CheckBoxField name="ПользовательскиеНастройкиПометка" id="20">
<DataPath>ПользовательскиеНастройки.Check</DataPath>
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Пометка</v8:content>
</v8:item>
</Title>
<EditMode>EnterOnInput</EditMode>
<CheckBoxType>Auto</CheckBoxType>
<ContextMenu name="ПользовательскиеНастройкиПометкаКонтекстноеМеню" id="21"/>
<ExtendedTooltip name="ПользовательскиеНастройкиПометкаРасширеннаяПодсказка" id="22"/>
</CheckBoxField>
<InputField name="ПользовательскиеНастройкиЗначение" id="17">
<DataPath>ПользовательскиеНастройки.Value</DataPath>
<ReadOnly>true</ReadOnly>
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Значение</v8:content>
</v8:item>
</Title>
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="ПользовательскиеНастройкиЗначениеКонтекстноеМеню" id="18"/>
<ExtendedTooltip name="ПользовательскиеНастройкиЗначениеРасширеннаяПодсказка" id="19"/>
</InputField>
</ChildItems>
</Table>
</ChildItems>
</Page>
<Page name="НесколькоВариантовОтчетов" id="33">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Несколько вариантов отчетов</v8:content>
</v8:item>
</Title>
<ExtendedTooltip name="НесколькоВариантовОтчетовРасширеннаяПодсказка" id="34"/>
<ChildItems>
<InputField name="ИмяКаталога" id="35">
<DataPath>ИмяКаталога</DataPath>
<HorizontalStretch>true</HorizontalStretch>
<ChoiceButton>true</ChoiceButton>
<ContextMenu name="ИмяКаталогаКонтекстноеМеню" id="36"/>
<ExtendedTooltip name="ИмяКаталогаРасширеннаяПодсказка" id="37"/>
<Events>
<Event name="OnChange">ИмяКаталогаПриИзменении</Event>
<Event name="StartChoice">КаталогНачалоВыбора</Event>
</Events>
</InputField>
<Table name="ОписаниеВариантовОтчетов" id="38">
<Representation>List</Representation>
<ChangeRowOrder>false</ChangeRowOrder>
<AutoInsertNewRow>true</AutoInsertNewRow>
<EnableStartDrag>true</EnableStartDrag>
<EnableDrag>true</EnableDrag>
<DataPath>ОписаниеВариантовОтчетов</DataPath>
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Описание вариантов отчетов</v8:content>
</v8:item>
</Title>
<CommandSet>
<ExcludedCommand>Add</ExcludedCommand>
<ExcludedCommand>Change</ExcludedCommand>
<ExcludedCommand>Copy</ExcludedCommand>
<ExcludedCommand>CopyToClipboard</ExcludedCommand>
<ExcludedCommand>EndEdit</ExcludedCommand>
<ExcludedCommand>MoveDown</ExcludedCommand>
<ExcludedCommand>MoveUp</ExcludedCommand>
<ExcludedCommand>ShowRowRearrangement</ExcludedCommand>
<ExcludedCommand>SortListAsc</ExcludedCommand>
<ExcludedCommand>SortListDesc</ExcludedCommand>
</CommandSet>
<RowFilter xsi:nil="true"/>
<ContextMenu name="ОписаниеВариантовОтчетовКонтекстноеМеню" id="39"/>
<AutoCommandBar name="ОписаниеВариантовОтчетовКоманднаяПанель" id="40">
<Autofill>false</Autofill>
</AutoCommandBar>
<ExtendedTooltip name="ОписаниеВариантовОтчетовРасширеннаяПодсказка" id="41"/>
<SearchStringAddition name="ОписаниеВариантовОтчетовСтрокаПоиска" id="42">
<AdditionSource>
<Item>ОписаниеВариантовОтчетов</Item>
<Type>SearchStringRepresentation</Type>
</AdditionSource>
<ContextMenu name="ОписаниеВариантовОтчетовСтрокаПоискаКонтекстноеМеню" id="43"/>
<ExtendedTooltip name="ОписаниеВариантовОтчетовСтрокаПоискаРасширеннаяПодсказка" id="44"/>
</SearchStringAddition>
<ViewStatusAddition name="ОписаниеВариантовОтчетовСостояниеПросмотра" id="45">
<AdditionSource>
<Item>ОписаниеВариантовОтчетов</Item>
<Type>ViewStatusRepresentation</Type>
</AdditionSource>
<ContextMenu name="ОписаниеВариантовОтчетовСостояниеПросмотраКонтекстноеМеню" id="46"/>
<ExtendedTooltip name="ОписаниеВариантовОтчетовСостояниеПросмотраРасширеннаяПодсказка" id="47"/>
</ViewStatusAddition>
<SearchControlAddition name="ОписаниеВариантовОтчетовУправлениеПоиском" id="48">
<AdditionSource>
<Item>ОписаниеВариантовОтчетов</Item>
<Type>SearchControl</Type>
</AdditionSource>
<ContextMenu name="ОписаниеВариантовОтчетовУправлениеПоискомКонтекстноеМеню" id="49"/>
<ExtendedTooltip name="ОписаниеВариантовОтчетовУправлениеПоискомРасширеннаяПодсказка" id="50"/>
</SearchControlAddition>
<Events>
<Event name="BeforeAddRow">ОписаниеВариантовОтчетовПередНачаломДобавления</Event>
<Event name="AfterDeleteRow">ОписаниеВариантовОтчетовПослеУдаления</Event>
</Events>
<ChildItems>
<InputField name="ОписаниеВариантовОтчетовСсылка" id="51">
<DataPath>ОписаниеВариантовОтчетов.Ссылка</DataPath>
<ReadOnly>true</ReadOnly>
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Вариант отчета</v8:content>
</v8:item>
</Title>
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="ОписаниеВариантовОтчетовСсылкаКонтекстноеМеню" id="52"/>
<ExtendedTooltip name="ОписаниеВариантовОтчетовСсылкаРасширеннаяПодсказка" id="53"/>
</InputField>
<InputField name="ОписаниеВариантовОтчетовИмяФайлаКраткое" id="72">
<DataPath>ОписаниеВариантовОтчетов.ИмяФайлаКраткое</DataPath>
<ReadOnly>true</ReadOnly>
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="ОписаниеВариантовОтчетовИмяФайлаКраткоеКонтекстноеМеню" id="73"/>
<ExtendedTooltip name="ОписаниеВариантовОтчетовИмяФайлаКраткоеРасширеннаяПодсказка" id="74"/>
</InputField>
</ChildItems>
</Table>
</ChildItems>
</Page>
</ChildItems>
</Pages>
</ChildItems>
<Attributes>
<Attribute name="ИмяФайла" id="1">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Имя файла</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
<Save>
<Field>ИмяФайла</Field>
</Save>
</Attribute>
<Attribute name="ПользовательскиеНастройки" id="2">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Настройки</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>v8:ValueListType</v8:Type>
</Type>
<Settings xsi:type="v8:TypeDescription">
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Settings>
</Attribute>
<Attribute name="ХранилищеПользовательскихНастроек" id="3">
<Type>
<v8:Type>v8:ValueTable</v8:Type>
</Type>
<Columns>
<Column name="КлючНастроек" id="1">
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Column>
<Column name="Настройки" id="2">
<Type/>
</Column>
</Columns>
</Attribute>
<Attribute name="ИмяКаталога" id="11">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Каталог</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Attribute>
<Attribute name="ОписаниеВариантовОтчетов" id="13">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Описание вариантов отчетов</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>v8:ValueTable</v8:Type>
</Type>
<Columns>
<Column name="Ссылка" id="3">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Ссылка</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>cfg:CatalogRef.ВариантыОтчетов</v8:Type>
</Type>
</Column>
<Column name="ИмяОтчета" id="4">
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Column>
<Column name="Настройки" id="5">
<Type/>
</Column>
<Column name="КлючВарианта" id="6">
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Column>
<Column name="ПредставлениеВарианта" id="7">
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Column>
<Column name="КлючПользовательскихНастроек" id="8">
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Column>
<Column name="ПредставлениеПользовательскихНастроек" id="9">
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Column>
<Column name="ИмяФайла" id="1">
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Column>
<Column name="ИмяФайлаКраткое" id="2">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Имя файла</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Column>
<Column name="АдресХранилищаАрхива" id="10">
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Column>
</Columns>
</Attribute>
<Attribute name="ИмяФайлаБезРасширения" id="14">
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Attribute>
<Attribute name="РасширениеАрхива" id="15">
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Attribute>
</Attributes>
<Commands>
<Command name="Сохранить" id="1">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Сохранить</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Сохранить</v8:content>
</v8:item>
</ToolTip>
<Action>Сохранить</Action>
</Command>
</Commands>
</Form>
@@ -0,0 +1,619 @@
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2023, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
РасширениеАрхива = ".zip";
ИмяФайлаБезРасширения = "ReportOptions";
ЗаполнитьОписаниеВариантовОтчетов();
ПрочитатьПользовательскиеНастройки();
УстановитьУсловноеОформление();
Если ОписаниеВариантовОтчетов.Количество() = 0 Тогда
Элементы.Сохранить.Доступность = Ложь;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Обработчик = Новый ОписаниеОповещения("ПослеУстановкиРасширенияРаботыСФайлами", ЭтотОбъект);
ФайловаяСистемаКлиент.ПодключитьРасширениеДляРаботыСФайлами(Обработчик, ТекстПредложения());
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура ИмяФайлаПриИзменении(Элемент)
Если Не ЗначениеЗаполнено(ИмяФайла) Тогда
Возврат;
КонецЕсли;
ПроверитьИмяФайла();
ПроверитьИмяКаталога();
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьИмяФайла()
Если ОписаниеВариантовОтчетов.Количество() > 1 Тогда
Возврат;
КонецЕсли;
ОписаниеИмениФайла = СтрРазделить(ИмяФайла, ПолучитьРазделительПути());
ИмяФайлаКраткое = ОписаниеИмениФайла[ОписаниеИмениФайла.ВГраница()];
Если НРег(ИмяФайлаКраткое) = РасширениеАрхива Тогда
ИмяФайлаКраткое = ИмяФайлаБезРасширения + РасширениеАрхива;
ОписаниеИмениФайла[ОписаниеИмениФайла.ВГраница()] = ИмяФайлаКраткое;
ИмяФайла = СтрСоединить(ОписаниеИмениФайла, ПолучитьРазделительПути());
ИначеЕсли Не СтрЗаканчиваетсяНа(НРег(ИмяФайлаКраткое), РасширениеАрхива) Тогда
ИмяФайлаКраткое = ИмяФайлаБезРасширения + РасширениеАрхива;
ОписаниеИмениФайла.Добавить(ИмяФайлаКраткое);
ИмяФайла = СтрСоединить(ОписаниеИмениФайла, ПолучитьРазделительПути());
Иначе
ИмяФайлаБезРасширения = СтрЗаменить(ИмяФайлаКраткое, РасширениеАрхива, "");
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьИмяКаталога()
Если СтрЗаканчиваетсяНа(НРег(ИмяФайла), РасширениеАрхива) Тогда
ОписаниеИмениФайла = СтрРазделить(ИмяФайла, ПолучитьРазделительПути());
ОписаниеИмениФайла.Удалить(ОписаниеИмениФайла.ВГраница());
ПутьККаталогу = СтрСоединить(ОписаниеИмениФайла, ПолучитьРазделительПути());
Иначе
ПутьККаталогу = ИмяФайла;
КонецЕсли;
ИмяФайлаПослеВыбораКаталога(ПутьККаталогу, Неопределено);
КонецПроцедуры
&НаКлиенте
Процедура ИмяФайлаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ВыбратьКаталог();
КонецПроцедуры
&НаКлиенте
Процедура ИмяКаталогаПриИзменении(Элемент)
ИмяКаталога = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(ИмяКаталога);
УстановитьИменаФайлов();
КонецПроцедуры
&НаКлиенте
Процедура КаталогНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ВыбратьКаталог();
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыПользовательскиеНастройки
&НаКлиенте
Процедура ПользовательскиеНастройкиПриИзменении(Элемент)
Если ОписаниеВариантовОтчетов.Количество() = 0 Тогда
Возврат;
КонецЕсли;
ТекущиеПользовательскиеНастройки = ПользовательскиеНастройки.НайтиПоЗначению(
ОписаниеВариантовОтчетов[0].КлючПользовательскихНастроек);
Если ТекущиеПользовательскиеНастройки <> Неопределено Тогда
ТекущиеПользовательскиеНастройки.Пометка = Истина;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыОписаниеВариантовОтчетов
&НаКлиенте
Процедура ОписаниеВариантовОтчетовПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр)
Отказ = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ОписаниеВариантовОтчетовПослеУдаления(Элемент)
УстановитьИменаФайлов();
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура Сохранить(Команда)
Если ОписаниеВариантовОтчетов.Количество() = 0 Тогда
Возврат;
КонецЕсли;
УпаковатьНастройкиВариантовОтчетов();
Если Не ЗначениеЗаполнено(ИмяФайла) Тогда
УстановитьИменаФайлов();
КонецЕсли;
Обработчик = Новый ОписаниеОповещения("УпаковатьНастройкиВариантаОтчетаЗавершение", ЭтотОбъект);
ПараметрыСохранения = ФайловаяСистемаКлиент.ПараметрыСохраненияФайла();
ПараметрыСохранения.ТекстПредложения = ТекстПредложения();
ПараметрыСохранения.Диалог.Фильтр = НСтр("ru = 'Архив (*.zip)|*.zip'");
ПараметрыСохранения.Диалог.Заголовок = НСтр("ru = 'Укажите файл'");
ПараметрыСохранения.Диалог.ПолноеИмяФайла = ИмяФайла;
Для Каждого ОписаниеВариантаОтчета Из ОписаниеВариантовОтчетов Цикл
ФайловаяСистемаКлиент.СохранитьФайл(
Обработчик, ОписаниеВариантаОтчета.АдресХранилищаАрхива, ОписаниеВариантаОтчета.ИмяФайла, ПараметрыСохранения);
КонецЦикла;
Закрыть();
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
Процедура УстановитьУсловноеОформление()
УсловноеОформление.Элементы.Очистить();
//
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ПользовательскиеНастройкиЗначение.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ПользовательскиеНастройки.Представление");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Содержит;
ОтборЭлемента.ПравоеЗначение = "[ЭтоТекущиеНастройки]";
ШрифтВажнойНадписи = Метаданные.ЭлементыСтиля.ВажнаяНадписьШрифт;
Элемент.Оформление.УстановитьЗначениеПараметра("Шрифт", ШрифтВажнойНадписи.Значение);
Если ОписаниеВариантовОтчетов.Количество() > 0 Тогда
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", ОписаниеВариантовОтчетов[0].ПредставлениеПользовательскихНастроек);
КонецЕсли;
//
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ПользовательскиеНастройкиПометка.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ПользовательскиеНастройки.Представление");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Содержит;
ОтборЭлемента.ПравоеЗначение = "[ЭтоТекущиеНастройки]";
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьОписаниеВариантовОтчетов()
Если Параметры.Свойство("ВыбранныеВариантыОтчетов") Тогда
ДанныеВариантовОтчетов = ОбщегоНазначения.ЗначенияРеквизитовОбъектов(
Параметры.ВыбранныеВариантыОтчетов, "Отчет, КлючВарианта, Представление, Настройки, ТипОтчета");
ПодсистемаДополнительныеОтчетыИОбработкиСуществует = ОбщегоНазначения.ПодсистемаСуществует(
"СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки");
МодульДополнительныеОтчетыИОбработки = Неопределено;
Если ПодсистемаДополнительныеОтчетыИОбработкиСуществует Тогда
МодульДополнительныеОтчетыИОбработки = ОбщегоНазначения.ОбщийМодуль("ДополнительныеОтчетыИОбработки");
КонецЕсли;
Для Каждого ДанныеВариантаОтчета Из ДанныеВариантовОтчетов Цикл
ЗаполнитьОписаниеВариантаОтчета(
ДанныеВариантаОтчета.Ключ,
ДанныеВариантаОтчета.Значение,
ПодсистемаДополнительныеОтчетыИОбработкиСуществует,
МодульДополнительныеОтчетыИОбработки);
КонецЦикла;
Иначе
ОписаниеВариантаОтчета = ОписаниеВариантовОтчетов.Добавить();
ЗаполнитьЗначенияСвойств(ОписаниеВариантаОтчета, Параметры);
КонецЕсли;
Если ОписаниеВариантовОтчетов.Количество() > 1 Тогда
Элементы.ВариантыСохранения.ТекущаяСтраница = Элементы.НесколькоВариантовОтчетов;
Заголовок = НСтр("ru = 'Сохранение вариантов отчетов в файл'");
ИначеЕсли ОписаниеВариантовОтчетов.Количество() = 1 Тогда
Элементы.ВариантыСохранения.ТекущаяСтраница = Элементы.ОдинВариантОтчета;
Заголовок = НСтр("ru = 'Сохранение варианта отчета в файл'");
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьОписаниеВариантаОтчета(ВариантОтчета, ДанныеВариантаОтчета,
ПодсистемаДополнительныеОтчетыИОбработкиСуществует, МодульДополнительныеОтчетыИОбработки)
Если ДанныеВариантаОтчета.ТипОтчета = Перечисления.ТипыОтчетов.Дополнительный
И Не ПодсистемаДополнительныеОтчетыИОбработкиСуществует Тогда
Возврат;
КонецЕсли;
ОписаниеВариантаОтчета = ОписаниеВариантовОтчетов.Добавить();
ОписаниеВариантаОтчета.Ссылка = ВариантОтчета;
Если ДанныеВариантаОтчета.ТипОтчета = Перечисления.ТипыОтчетов.Дополнительный Тогда
ОписаниеВариантаОтчета.ИмяОтчета = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
"ВнешнийОтчет.%1", ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ДанныеВариантаОтчета.Отчет, "ИмяОбъекта"));
Иначе
МетаданныеОтчета = ОбщегоНазначения.ОбъектМетаданныхПоИдентификатору(ДанныеВариантаОтчета.Отчет);
ОписаниеВариантаОтчета.ИмяОтчета = МетаданныеОтчета.ПолноеИмя();
КонецЕсли;
ОписаниеВариантаОтчета.КлючВарианта = ДанныеВариантаОтчета.КлючВарианта;
ОписаниеВариантаОтчета.ПредставлениеВарианта = ДанныеВариантаОтчета.Представление;
КлючОбъекта = ОписаниеВариантаОтчета.ИмяОтчета
+ "/" + ОписаниеВариантаОтчета.КлючВарианта
+ "/" + "КлючТекущихПользовательскихНастроек";
Отбор = Новый Структура("КлючОбъекта, Пользователь", КлючОбъекта, ИмяПользователя());
Выборка = ХранилищеСистемныхНастроек.Выбрать(Отбор);
Если Выборка.Следующий() Тогда
ОписаниеВариантаОтчета.КлючПользовательскихНастроек = Выборка.Настройки;
КонецЕсли;
ОписаниеВариантаОтчета.Настройки = ДанныеВариантаОтчета.Настройки.Получить();
Если ОписаниеВариантаОтчета.Настройки <> Неопределено Тогда
Возврат;
КонецЕсли;
Если ДанныеВариантаОтчета.ТипОтчета = Перечисления.ТипыОтчетов.Дополнительный Тогда
Отчет = МодульДополнительныеОтчетыИОбработки.ОбъектВнешнейОбработки(ДанныеВариантаОтчета.Отчет);
Иначе
Отчет = ОтчетыСервер.ОтчетОбъект(ОписаниеВариантаОтчета.ИмяОтчета);
КонецЕсли;
Если Отчет.СхемаКомпоновкиДанных = Неопределено Тогда
ОписаниеВариантовОтчетов.Удалить(ОписаниеВариантаОтчета);
ОбщегоНазначения.СообщитьПользователю(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Вариант отчета ""%1"" не предназначен для сохранения.'"), ДанныеВариантаОтчета.Представление));
Возврат;
КонецЕсли;
ОписаниеВариантаОтчета.Настройки =
Отчет.СхемаКомпоновкиДанных.ВариантыНастроек[ОписаниеВариантаОтчета.КлючВарианта].Настройки;
КонецПроцедуры
&НаСервере
Процедура ПрочитатьПользовательскиеНастройки()
Если ОписаниеВариантовОтчетов.Количество() <> 1 Тогда
Возврат;
КонецЕсли;
ОписаниеВариантаОтчета = ОписаниеВариантовОтчетов[0];
КлючОбъекта = ОписаниеВариантаОтчета.ИмяОтчета + "/" + ОписаниеВариантаОтчета.КлючВарианта;
Отбор = Новый Структура("КлючОбъекта, Пользователь", КлючОбъекта, ИмяПользователя());
Выборка = ХранилищеПользовательскихНастроекОтчетов.Выбрать(Отбор);
Пока Выборка.Следующий() Цикл
ПользовательскиеНастройки.Добавить(Выборка.КлючНастроек, Выборка.Представление);
ЗаполнитьЗначенияСвойств(ХранилищеПользовательскихНастроек.Добавить(), Выборка);
КонецЦикла;
ТекущиеПользовательскиеНастройки = ПользовательскиеНастройки.НайтиПоЗначению(ОписаниеВариантаОтчета.КлючПользовательскихНастроек);
Если ТекущиеПользовательскиеНастройки = Неопределено Тогда
Возврат;
КонецЕсли;
Если Не ЗначениеЗаполнено(ОписаниеВариантаОтчета.ПредставлениеПользовательскихНастроек) Тогда
ОписаниеВариантаОтчета.ПредставлениеПользовательскихНастроек = ТекущиеПользовательскиеНастройки.Представление;
КонецЕсли;
ТекущиеПользовательскиеНастройки.Пометка = Истина;
ТекущиеПользовательскиеНастройки.Представление = ТекущиеПользовательскиеНастройки.Представление + " [ЭтоТекущиеНастройки]";
Индекс = ПользовательскиеНастройки.Индекс(ТекущиеПользовательскиеНастройки);
Если Индекс > 0 Тогда
ПользовательскиеНастройки.Сдвинуть(ТекущиеПользовательскиеНастройки, -Индекс);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ИмяФайлаПослеВыбораКаталога(ПутьККаталогу, ДополнительныеПараметры) Экспорт
Если ЗначениеЗаполнено(ПутьККаталогу) Тогда
ИмяКаталога = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(ПутьККаталогу);
УстановитьИменаФайлов();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УпаковатьНастройкиВариантовОтчетов()
Для Каждого ОписаниеВариантаОтчета Из ОписаниеВариантовОтчетов Цикл
УпаковатьНастройкиВариантаОтчета(ОписаниеВариантаОтчета);
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура УпаковатьНастройкиВариантаОтчета(ОписаниеВариантаОтчета)
ИмяВременногоКаталога = ФайловаяСистема.СоздатьВременныйКаталог();
Если Не ЗначениеЗаполнено(ИмяВременногоКаталога) Тогда
Возврат;
КонецЕсли;
ИмяВременногоКаталога = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(ИмяВременногоКаталога);
ИмяФайлаАрхива = ПолучитьИмяВременногоФайла("zip");
Архив = Новый ЗаписьZipФайла(ИмяФайлаАрхива);
ДобавитьНастройкиВАрхив(Архив, ОписаниеВариантаОтчета.Настройки, ИмяВременногоКаталога, "Settings");
ДобавитьОписаниеНастроекВАрхив(Архив, ИмяВременногоКаталога, ОписаниеВариантаОтчета);
Счетчик = 0;
Поиск = Новый Структура("КлючНастроек");
Для Каждого ЭлементСписка Из ПользовательскиеНастройки Цикл
Если Не ЭлементСписка.Пометка Тогда
Продолжить;
КонецЕсли;
Счетчик = Счетчик + 1;
Поиск.КлючНастроек = ЭлементСписка.Значение;
НайденныеНастройки = ХранилищеПользовательскихНастроек.НайтиСтроки(Поиск);
ДобавитьНастройкиВАрхив(Архив, НайденныеНастройки[0].Настройки, ИмяВременногоКаталога, "UserSettings", Счетчик);
КонецЦикла;
Архив.Записать();
ДвоичныеДанные = Новый ДвоичныеДанные(ИмяФайлаАрхива);
ОписаниеВариантаОтчета.АдресХранилищаАрхива = ПоместитьВоВременноеХранилище(ДвоичныеДанные, Новый УникальныйИдентификатор);
ФайловаяСистема.УдалитьВременныйКаталог(ИмяВременногоКаталога);
ФайловаяСистема.УдалитьВременныйФайл(ИмяФайлаАрхива);
КонецПроцедуры
&НаКлиенте
Процедура УпаковатьНастройкиВариантаОтчетаЗавершение(Файлы, ДополнительныеПараметры) Экспорт
Если ТипЗнч(Файлы) <> Тип("Массив")
Или Файлы.Количество() = 0 Тогда
Возврат;
КонецЕсли;
Если ОписаниеВариантовОтчетов.Количество() = 1 Тогда
Пояснение = ИмяФайла;
Иначе
Пояснение = ИмяКаталога;
КонецЕсли;
ПоказатьОповещениеПользователя(НСтр("ru = 'Вариант отчета сохранен в файл'"),, Пояснение);
КонецПроцедуры
&НаСервере
Процедура ДобавитьНастройкиВАрхив(Архив, Настройки, ИмяВременногоКаталога, ТипНастроек, Суффикс = Неопределено)
ИмяФайлаНастроек = ИмяВременногоКаталога + ТипНастроек + ?(Суффикс = Неопределено, "", Суффикс) + ".xml";
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.ОткрытьФайл(ИмяФайлаНастроек);
СериализаторXDTO.ЗаписатьXML(ЗаписьXML, Настройки, НазначениеТипаXML.Явное);
ЗаписьXML.Закрыть();
Архив.Добавить(ИмяФайлаНастроек);
КонецПроцедуры
// Добавляет в zip-архив xml-файл описания настроек варианта отчета, со следующей спецификацией:
// <SettingsDescription ReportName="Отчет._ДемоФайлы">
// <Settings Key="50a4127a-7646-49b3-9d09-51681e6e16b9" Presentation="Демо: Версии файлов"/>
// <UserSettings Key="a61e745b-ac46-46d3-92a6-5bba4969b7d2" Presentation="Файлы > 100 Кб" isCurrent="true"/>
// <UserSettings Key="6895ac09-f02d-4b17-82b6-79dd76c7b2a3" Presentation="Файлы > 10 Мб" isCurrent="false"/>
// </SettingsDescription>
//
// Параметры:
// Архив - ЗаписьZipФайла - архив, в который упаковываются настройки варианта отчета и их описание.
// ИмяВременногоКаталога - Строка - имя временного каталога, содержащего xml-файлы настроек варианта отчета и их описание.
//
&НаСервере
Процедура ДобавитьОписаниеНастроекВАрхив(Архив, ИмяВременногоКаталога, ОписаниеВариантаОтчета)
ИмяФайлаОписанияНастроек = ИмяВременногоКаталога + "SettingsDescription.xml";
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.ОткрытьФайл(ИмяФайлаОписанияНастроек);
ЗаписьXML.ЗаписатьНачалоЭлемента("SettingsDescription");
ЗаписьXML.ЗаписатьАтрибут("ReportName", ОписаниеВариантаОтчета.ИмяОтчета);
ЗаписьXML.ЗаписатьНачалоЭлемента("Settings");
ЗаписьXML.ЗаписатьАтрибут("Key", ОписаниеВариантаОтчета.КлючВарианта);
ЗаписьXML.ЗаписатьАтрибут("Presentation", ОписаниеВариантаОтчета.ПредставлениеВарианта);
ЗаписьXML.ЗаписатьКонецЭлемента(); // <Settings>
Для Каждого ЭлементСписка Из ПользовательскиеНастройки Цикл
Если Не ЭлементСписка.Пометка Тогда
Продолжить;
КонецЕсли;
ПредставлениеНастройки = СокрЛП(СтрЗаменить(ЭлементСписка.Представление, "[ЭтоТекущиеНастройки]", ""));
Если ОписаниеВариантовОтчетов.Количество() > 0 Тогда
ЭтоТекущиеНастройки = ПредставлениеНастройки = ОписаниеВариантовОтчетов[0].ПредставлениеПользовательскихНастроек;
КонецЕсли;
ЗаписьXML.ЗаписатьНачалоЭлемента("UserSettings");
ЗаписьXML.ЗаписатьАтрибут("Key", ЭлементСписка.Значение);
ЗаписьXML.ЗаписатьАтрибут("Presentation", ПредставлениеНастройки);
ЗаписьXML.ЗаписатьАтрибут("isCurrent", XMLСтрока(ЭтоТекущиеНастройки));
ЗаписьXML.ЗаписатьКонецЭлемента(); // <UserSettings>
КонецЦикла;
ЗаписьXML.ЗаписатьКонецЭлемента(); // <SettingsDescription>
ЗаписьXML.Закрыть();
Архив.Добавить(ИмяФайлаОписанияНастроек);
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьКаталог()
ФайловаяСистемаКлиент.ВыбратьКаталог(Новый ОписаниеОповещения("ИмяФайлаПослеВыбораКаталога", ЭтотОбъект));
КонецПроцедуры
&НаКлиенте
Процедура ПослеУстановкиРасширенияРаботыСФайлами(РасширениеПодключено, ДополнительныеПараметры) Экспорт
Если РасширениеПодключено = Истина Тогда
Обработчик = Новый ОписаниеОповещения("ПослеПолученияКаталогаДокументов", ЭтотОбъект);
НачатьПолучениеКаталогаДокументов(Обработчик);
ИначеЕсли Не ЗначениеЗаполнено(ИмяФайла) Тогда
УстановитьИменаФайлов();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеПолученияКаталогаДокументов(ИмяКаталогаДокументов, ДополнительныеПараметры) Экспорт
Если Не ЗначениеЗаполнено(ИмяКаталогаДокументов) Тогда
Возврат;
КонецЕсли;
Если ОписаниеВариантовОтчетов.Количество() > 1 Тогда
ИмяКаталога = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку("%1ReportsOptions", ИмяКаталогаДокументов));
Иначе
ИмяКаталога = ИмяКаталогаДокументов;
КонецЕсли;
УстановитьИменаФайлов();
КонецПроцедуры
&НаКлиенте
Процедура УстановитьИменаФайлов()
КоличествоВариантовОтчетов = ОписаниеВариантовОтчетов.Количество();
Если КоличествоВариантовОтчетов = 0 Тогда
Возврат;
КонецЕсли;
Для НомерВариантаОтчета = 1 По КоличествоВариантовОтчетов Цикл
ОписаниеВариантаОтчета = ОписаниеВариантовОтчетов[НомерВариантаОтчета - 1];
ОписаниеВариантаОтчета.ИмяФайла = ИмяКаталога
+ ИмяФайлаБезРасширения
+ ?(ОписаниеВариантовОтчетов.Количество() = 1, "", НомерВариантаОтчета)
+ РасширениеАрхива;
ОписаниеВариантаОтчета.ИмяФайлаКраткое = СтрЗаменить(ОписаниеВариантаОтчета.ИмяФайла, ИмяКаталога, "");
КонецЦикла;
Если КоличествоВариантовОтчетов > 0 Тогда
ИмяФайла = ОписаниеВариантовОтчетов[0].ИмяФайла;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция ТекстПредложения()
Возврат НСтр("ru = 'Для сохранения варианта отчета в файл рекомендуется установить расширение для работы с 1С:Предприятием.'");
КонецФункции
#КонецОбласти
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<Help xmlns="http://v8.1c.ru/8.3/xcf/extrnprops" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.20">
<Page>ru</Page>
</Help>
@@ -0,0 +1,9 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta http-equiv="content-type" content="text/html;charset=utf-8"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link></head><body>Предназначена для сохранения текущего варианта отчета в архивный файл вместе с пользовательскими настройками.
<div><br></div>
<div>Открывается из окна варианта отчета с помощью команды <b>Еще - Варианты отчета - Сохранить в файл</b>. Для администратора в <a href="Catalog.ВариантыОтчетов/Help">списке всех отчетов</a> предусмотрена кнопка <img src="CommonPicture.СохранитьФайлКак"></img> <b>Сохранить в файл</b>. <br><div><br></div>
<div>Укажите путь к архивному файлу на компьютере. Вместе с вариантом отчета по умолчанию сохраняются и пользовательские настройки. Можно отменить сохранение всех или некоторых настроек с помощью флажков.</div>
<div><br></div>
<div>Данная возможность предназначена для обмена настройками вариантов отчетов между информационными базами идентичной структуры.</div></div>
<h3>См. также</h3>
<div>
<ul><li><a href="CommonForm.ФормаОтчета/Help">Работа с отчетами</a>.</li></ul></div></body></html>
@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.20">
<Form uuid="9f32e85c-2ed6-41db-b0ec-6d8596940e80">
<Properties>
<Name>УсловияОтборовОтчета</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Условия отборов отчета</v8:content>
</v8:item>
</Synonym>
<Comment/>
<FormType>Managed</FormType>
<IncludeHelpInContents>false</IncludeHelpInContents>
<UsePurposes>
<v8:Value xsi:type="app:ApplicationUsePurpose">PlatformApplication</v8:Value>
<v8:Value xsi:type="app:ApplicationUsePurpose">MobilePlatformApplication</v8:Value>
</UsePurposes>
</Properties>
</Form>
</MetaDataObject>
@@ -0,0 +1,282 @@
<?xml version="1.0" encoding="UTF-8"?>
<Form xmlns="http://v8.1c.ru/8.3/xcf/logform" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:dcscor="http://v8.1c.ru/8.1/data-composition-system/core" xmlns:dcssch="http://v8.1c.ru/8.1/data-composition-system/schema" xmlns:dcsset="http://v8.1c.ru/8.1/data-composition-system/settings" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.20">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Условия фильтров отчета</v8:content>
</v8:item>
</Title>
<WindowOpeningMode>LockOwnerWindow</WindowOpeningMode>
<AutoTitle>false</AutoTitle>
<AutoURL>false</AutoURL>
<AutoFillCheck>false</AutoFillCheck>
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1">
<Autofill>false</Autofill>
</AutoCommandBar>
<Events>
<Event name="OnCreateAtServer">ПриСозданииНаСервере</Event>
</Events>
<ChildItems>
<Table name="Отборы" id="28">
<Representation>Tree</Representation>
<CommandBarLocation>Top</CommandBarLocation>
<ChangeRowOrder>false</ChangeRowOrder>
<ChoiceMode>true</ChoiceMode>
<RowInputMode>AfterCurrentRow</RowInputMode>
<HorizontalScrollBar>DontUse</HorizontalScrollBar>
<AutoInsertNewRow>true</AutoInsertNewRow>
<AutoAddIncomplete>false</AutoAddIncomplete>
<AutoMarkIncomplete>false</AutoMarkIncomplete>
<SearchOnInput>DontUse</SearchOnInput>
<InitialTreeView>ExpandAllLevels</InitialTreeView>
<EnableStartDrag>true</EnableStartDrag>
<EnableDrag>true</EnableDrag>
<FileDragMode>AsFile</FileDragMode>
<DataPath>Отборы</DataPath>
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Фильтры</v8:content>
</v8:item>
</Title>
<CommandSet>
<ExcludedCommand>Change</ExcludedCommand>
<ExcludedCommand>Copy</ExcludedCommand>
<ExcludedCommand>CopyToClipboard</ExcludedCommand>
<ExcludedCommand>EndEdit</ExcludedCommand>
<ExcludedCommand>HierarchicalList</ExcludedCommand>
<ExcludedCommand>List</ExcludedCommand>
<ExcludedCommand>MoveDown</ExcludedCommand>
<ExcludedCommand>MoveUp</ExcludedCommand>
<ExcludedCommand>OutputList</ExcludedCommand>
<ExcludedCommand>SelectAll</ExcludedCommand>
<ExcludedCommand>SortListAsc</ExcludedCommand>
<ExcludedCommand>SortListDesc</ExcludedCommand>
<ExcludedCommand>Tree</ExcludedCommand>
</CommandSet>
<ContextMenu name="ОтборыКонтекстноеМеню" id="29">
<Autofill>false</Autofill>
</ContextMenu>
<AutoCommandBar name="ОтборыКоманднаяПанель" id="30">
<Autofill>false</Autofill>
</AutoCommandBar>
<ExtendedTooltip name="ОтборыРасширеннаяПодсказка" id="31"/>
<SearchStringAddition name="ОтборыСтрокаПоиска" id="32">
<AdditionSource>
<Item>Отборы</Item>
<Type>SearchStringRepresentation</Type>
</AdditionSource>
<ContextMenu name="ОтборыСтрокаПоискаКонтекстноеМеню" id="33"/>
<ExtendedTooltip name="ОтборыСтрокаПоискаРасширеннаяПодсказка" id="34"/>
</SearchStringAddition>
<ViewStatusAddition name="ОтборыСостояниеПросмотра" id="35">
<AdditionSource>
<Item>Отборы</Item>
<Type>ViewStatusRepresentation</Type>
</AdditionSource>
<ContextMenu name="ОтборыСостояниеПросмотраКонтекстноеМеню" id="36"/>
<ExtendedTooltip name="ОтборыСостояниеПросмотраРасширеннаяПодсказка" id="37"/>
</ViewStatusAddition>
<SearchControlAddition name="ОтборыУправлениеПоиском" id="38">
<AdditionSource>
<Item>Отборы</Item>
<Type>SearchControl</Type>
</AdditionSource>
<ContextMenu name="ОтборыУправлениеПоискомКонтекстноеМеню" id="39"/>
<ExtendedTooltip name="ОтборыУправлениеПоискомРасширеннаяПодсказка" id="40"/>
</SearchControlAddition>
<Events>
<Event name="OnActivateRow">ОтборыПриАктивизацииСтроки</Event>
</Events>
<ChildItems>
<InputField name="ОтборыПредставлениеПользовательскойНастройки" id="41">
<DataPath>Отборы.ПредставлениеПользовательскойНастройки</DataPath>
<ReadOnly>true</ReadOnly>
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="ОтборыПредставлениеПользовательскойНастройкиКонтекстноеМеню" id="42"/>
<ExtendedTooltip name="ОтборыПредставлениеПользовательскойНастройкиРасширеннаяПодсказка" id="43"/>
</InputField>
<InputField name="ОтборыВидСравнения" id="44">
<DataPath>Отборы.ВидСравнения</DataPath>
<EditMode>EnterOnInput</EditMode>
<ListChoiceMode>true</ListChoiceMode>
<ChooseType>false</ChooseType>
<ContextMenu name="ОтборыВидСравненияКонтекстноеМеню" id="45"/>
<ExtendedTooltip name="ОтборыВидСравненияРасширеннаяПодсказка" id="46"/>
</InputField>
</ChildItems>
</Table>
<CommandBar name="ГруппаКоманднаяПанель" id="47">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Командная панель</v8:content>
</v8:item>
</Title>
<HorizontalLocation>Right</HorizontalLocation>
<ExtendedTooltip name="ГруппаКоманднаяПанельРасширеннаяПодсказка" id="48"/>
<ChildItems>
<Button name="ФормаВыбрать" id="26">
<Type>CommandBarButton</Type>
<DefaultButton>true</DefaultButton>
<CommandName>Form.Command.Выбрать</CommandName>
<ExtendedTooltip name="ФормаВыбратьРасширеннаяПодсказка" id="27"/>
</Button>
<Button name="Отмена" id="49">
<Type>CommandBarButton</Type>
<CommandName>Form.StandardCommand.Cancel</CommandName>
<ExtendedTooltip name="ОтменаРасширеннаяПодсказка" id="50"/>
</Button>
<Button name="Справка" id="51">
<Type>CommandBarButton</Type>
<CommandName>Form.StandardCommand.Help</CommandName>
<ExtendedTooltip name="СправкаРасширеннаяПодсказка" id="52"/>
</Button>
</ChildItems>
</CommandBar>
</ChildItems>
<Attributes>
<Attribute name="КомпоновщикНастроек" id="1">
<Type>
<v8:Type>dcsset:SettingsComposer</v8:Type>
</Type>
</Attribute>
<Attribute name="НастройкиОтчета" id="3">
<Type/>
</Attribute>
<Attribute name="ИмяТаблицы" id="4">
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Attribute>
<Attribute name="ИдентификаторЭлементаСтруктурыНастроек" id="5">
<Type/>
</Attribute>
<Attribute name="Картинки" id="6">
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Attribute>
<Attribute name="Режим" id="7">
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Attribute>
<Attribute name="Отборы" id="8">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Фильтры</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>v8:ValueTree</v8:Type>
</Type>
<Columns>
<Column name="Идентификатор" id="1">
<Type/>
</Column>
<Column name="ПредставлениеПользовательскойНастройки" id="3">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Поле</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Column>
<Column name="ВидСравнения" id="7">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Условие</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>dcsset:DataCompositionComparisonType</v8:Type>
</Type>
</Column>
<Column name="ТипЗначения" id="2">
<Type>
<v8:Type>v8:TypeDescription</v8:Type>
</Type>
</Column>
<Column name="ИсходныйВидСравнения" id="4">
<Type>
<v8:Type>dcsset:DataCompositionComparisonType</v8:Type>
</Type>
</Column>
<Column name="ДоступныеВидыСравнения" id="5">
<Type>
<v8:Type>v8:ValueListType</v8:Type>
<v8:Type>v8:Null</v8:Type>
</Type>
</Column>
<Column name="Заголовок" id="6">
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Column>
<Column name="Представление" id="8">
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Column>
</Columns>
</Attribute>
</Attributes>
<Commands>
<Command name="Выбрать" id="1">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>ОК</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Выбрать</v8:content>
</v8:item>
</ToolTip>
<Action>Выбрать</Action>
<CurrentRowUse>DontUse</CurrentRowUse>
</Command>
</Commands>
<Parameters>
<Parameter name="КомпоновщикНастроек">
<Type>
<v8:Type>dcsset:SettingsComposer</v8:Type>
</Type>
</Parameter>
<Parameter name="НастройкиОтчета">
<Type/>
</Parameter>
</Parameters>
</Form>
@@ -0,0 +1,170 @@
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2022, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
УстановитьУсловноеОформление();
ЗакрыватьПриВыборе = Ложь;
ЗаполнитьЗначенияСвойств(ЭтотОбъект, Параметры, "НастройкиОтчета, КомпоновщикНастроек");
КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(НастройкиОтчета.АдресСхемы));
ТипФормыВладельца = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(
Параметры, "ТипФормыВладельца", ТипФормыОтчета.Основная);
ОбновитьОтборы(ТипФормыВладельца);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыОтборыТаблица
&НаКлиенте
Процедура ОтборыПриАктивизацииСтроки(Элемент)
Список = Элементы.ОтборыВидСравнения.СписокВыбора;
Список.Очистить();
Строка = Элемент.ТекущиеДанные;
Если Строка = Неопределено
Или Строка.ДоступныеВидыСравнения = Неопределено Тогда
Возврат;
КонецЕсли;
Для Каждого ВидыСравнения Из Строка.ДоступныеВидыСравнения Цикл
ЗаполнитьЗначенияСвойств(Список.Добавить(), ВидыСравнения);
КонецЦикла;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура Выбрать(Команда)
ВыбратьИЗакрыть();
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
Процедура УстановитьУсловноеОформление()
УсловноеОформление.Элементы.Очистить();
// ПредставлениеПользовательскойНастройки - НеЗаполнено.
// Представление - Заполнено.
//
Элемент = УсловноеОформление.Элементы.Добавить();
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Отборы.ПредставлениеПользовательскойНастройки");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Отборы.Представление");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", Новый ПолеКомпоновкиДанных("Отборы.Представление"));
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтборыПредставлениеПользовательскойНастройки.Имя);
// ПредставлениеПользовательскойНастройки - НеЗаполнено.
// Представление - НеЗаполнено.
// Заголовок - Заполнено.
//
Элемент = УсловноеОформление.Элементы.Добавить();
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Отборы.ПредставлениеПользовательскойНастройки");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Отборы.Представление");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Отборы.Заголовок");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", Новый ПолеКомпоновкиДанных("Отборы.Заголовок"));
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтборыПредставлениеПользовательскойНастройки.Имя);
КонецПроцедуры
&НаСервере
Процедура ОбновитьОтборы(ТипФормыВладельца)
Строки = Отборы.ПолучитьЭлементы();
ДопустимыеРежимыОтображения = Новый Массив;
ДопустимыеРежимыОтображения.Добавить(РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Авто);
ДопустимыеРежимыОтображения.Добавить(РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ);
Если ТипФормыВладельца = ТипФормыОтчета.Настройка Тогда
ДопустимыеРежимыОтображения.Добавить(РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Обычный);
КонецЕсли;
ПользовательскиеНастройки = КомпоновщикНастроек.ПользовательскиеНастройки;
Для Каждого ЭлементПользовательскойНастройки Из ПользовательскиеНастройки.Элементы Цикл
Если ТипЗнч(ЭлементПользовательскойНастройки) <> Тип("ЭлементОтбораКомпоновкиДанных")
Или ТипЗнч(ЭлементПользовательскойНастройки.ПравоеЗначение) = Тип("СтандартныйПериод") Тогда
Продолжить;
КонецЕсли;
ЭлементНастройки = ОтчетыКлиентСервер.ПолучитьОбъектПоПользовательскомуИдентификатору(
КомпоновщикНастроек.Настройки,
ЭлементПользовательскойНастройки.ИдентификаторПользовательскойНастройки,,
ПользовательскиеНастройки);
Если ДопустимыеРежимыОтображения.Найти(ЭлементНастройки.РежимОтображения) = Неопределено Тогда
Продолжить;
КонецЕсли;
ОписаниеНастройки = ОтчетыКлиентСервер.НайтиДоступнуюНастройку(КомпоновщикНастроек.Настройки, ЭлементНастройки);
Если ОписаниеНастройки = Неопределено Тогда
Продолжить;
КонецЕсли;
Строка = Строки.Добавить();
ЗаполнитьЗначенияСвойств(Строка, ОписаниеНастройки);
ЗаполнитьЗначенияСвойств(Строка, ЭлементНастройки, "Представление, ПредставлениеПользовательскойНастройки");
Строка.ВидСравнения = ЭлементПользовательскойНастройки.ВидСравнения;
ДоступныеВидыСравнения = ОписаниеНастройки.ДоступныеВидыСравнения;
Если ДоступныеВидыСравнения <> Неопределено
И ДоступныеВидыСравнения.Количество() > 0
И ДоступныеВидыСравнения.НайтиПоЗначению(Строка.ВидСравнения) = Неопределено Тогда
Строка.ВидСравнения = ДоступныеВидыСравнения[0].Значение;
КонецЕсли;
Строка.Идентификатор = ПользовательскиеНастройки.ПолучитьИдентификаторПоОбъекту(ЭлементПользовательскойНастройки);
Строка.ИсходныйВидСравнения = Строка.ВидСравнения;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьИЗакрыть()
УсловияОтборов = Новый Соответствие;
Строки = Отборы.ПолучитьЭлементы();
Для Каждого Строка Из Строки Цикл
Если Строка.ИсходныйВидСравнения <> Строка.ВидСравнения Тогда
УсловияОтборов.Вставить(Строка.Идентификатор, Строка.ВидСравнения);
КонецЕсли;
КонецЦикла;
Закрыть(УсловияОтборов);
КонецПроцедуры
#КонецОбласти
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<Help xmlns="http://v8.1c.ru/8.3/xcf/extrnprops" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.20">
<Page>ru</Page>
</Help>
@@ -0,0 +1,6 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16421"></meta></head><body>
<p>Открывается из <a href="CommonForm.ФормаОтчета/Help">варианта отчета</a> по команде <strong>Еще - Изменить условия отборов</strong>, а также из <a href="CommonForm.ФормаНастроекОтчета/Help">настроек варианта отчета</a> с помощью кнопки <img src="CommonPicture.Отборы"></img>.</p>
<p>В списке выводится:</p>
<ul><li><strong>Поле</strong> - поле отчета, по которому предусмотрен отбор;
</li><li><strong>Условие</strong> - выводится вид сравнения по данному полю. </li></ul><h3>Изменение условия</h3>
<ul><li>С помощью двойного щелчка мыши по условию открывается список, из которого можно выбрать новое условие для отбора по соответствующему полю. </li></ul></body></html>
@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.20">
<Form uuid="7adced5f-3a5f-419a-926c-0452aad86c86">
<Properties>
<Name>ФильтроватьПоПолю</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Фильтровать по полю</v8:content>
</v8:item>
</Synonym>
<Comment/>
<FormType>Managed</FormType>
<IncludeHelpInContents>false</IncludeHelpInContents>
<UsePurposes>
<v8:Value xsi:type="app:ApplicationUsePurpose">PlatformApplication</v8:Value>
<v8:Value xsi:type="app:ApplicationUsePurpose">MobilePlatformApplication</v8:Value>
</UsePurposes>
</Properties>
</Form>
</MetaDataObject>
@@ -0,0 +1,559 @@
<?xml version="1.0" encoding="UTF-8"?>
<Form xmlns="http://v8.1c.ru/8.3/xcf/logform" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:dcscor="http://v8.1c.ru/8.1/data-composition-system/core" xmlns:dcssch="http://v8.1c.ru/8.1/data-composition-system/schema" xmlns:dcsset="http://v8.1c.ru/8.1/data-composition-system/settings" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.20">
<WindowOpeningMode>LockOwnerWindow</WindowOpeningMode>
<AutoTitle>false</AutoTitle>
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1">
<HorizontalAlign>Right</HorizontalAlign>
<Autofill>false</Autofill>
</AutoCommandBar>
<Events>
<Event name="OnOpen">ПриОткрытии</Event>
<Event name="OnCreateAtServer">ПриСозданииНаСервере</Event>
</Events>
<ChildItems>
<UsualGroup name="ЭлементОтбора1" id="1">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Элемент отбора 1</v8:content>
</v8:item>
</Title>
<Behavior>Usual</Behavior>
<ShowTitle>false</ShowTitle>
<ExtendedTooltip name="ЭлементОтбора1РасширеннаяПодсказка" id="2"/>
<ChildItems>
<CheckBoxField name="Использование1" id="44">
<DataPath>Использование1</DataPath>
<Visible>false</Visible>
<TitleLocation>None</TitleLocation>
<CheckBoxType>Auto</CheckBoxType>
<ContextMenu name="Использование1КонтекстноеМеню" id="45"/>
<ExtendedTooltip name="Использование1РасширеннаяПодсказка" id="46"/>
</CheckBoxField>
<UsualGroup name="ГруппаЛевоеЗначение1" id="58">
<Visible>false</Visible>
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Левое значение 1</v8:content>
</v8:item>
</Title>
<Group>AlwaysHorizontal</Group>
<Behavior>Usual</Behavior>
<Representation>None</Representation>
<ShowTitle>false</ShowTitle>
<ExtendedTooltip name="ГруппаЛевоеЗначение1РасширеннаяПодсказка" id="59"/>
<ChildItems>
<InputField name="ЛевоеЗначение1" id="24">
<DataPath>ЛевоеЗначение1</DataPath>
<Visible>false</Visible>
<ReadOnly>true</ReadOnly>
<TitleLocation>None</TitleLocation>
<InputHint>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Поле</v8:content>
</v8:item>
</InputHint>
<ContextMenu name="ЛевоеЗначение1КонтекстноеМеню" id="25"/>
<ExtendedTooltip name="ЛевоеЗначение1РасширеннаяПодсказка" id="26"/>
</InputField>
<InputField name="ПредставлениеЛевогоЗначения1" id="60">
<DataPath>ПредставлениеЛевогоЗначения1</DataPath>
<ReadOnly>true</ReadOnly>
<TitleLocation>None</TitleLocation>
<InputHint>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Поле</v8:content>
</v8:item>
</InputHint>
<ContextMenu name="ПредставлениеЛевогоЗначения1КонтекстноеМеню" id="61"/>
<ExtendedTooltip name="ПредставлениеЛевогоЗначения1РасширеннаяПодсказка" id="62"/>
</InputField>
</ChildItems>
</UsualGroup>
<InputField name="ВидСравнения1" id="5">
<DataPath>ВидСравнения1</DataPath>
<TitleLocation>None</TitleLocation>
<Width>15</Width>
<AutoMaxWidth>false</AutoMaxWidth>
<MaxWidth>15</MaxWidth>
<ChoiceButton>false</ChoiceButton>
<ListChoiceMode>true</ListChoiceMode>
<InputHint>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Условие</v8:content>
</v8:item>
</InputHint>
<ContextMenu name="ВидСравнения1КонтекстноеМеню" id="6"/>
<ExtendedTooltip name="ВидСравнения1РасширеннаяПодсказка" id="7"/>
<Events>
<Event name="OnChange">ВидСравнения1ПриИзменении</Event>
</Events>
</InputField>
<InputField name="ПравоеЗначение1" id="8">
<DataPath>ПравоеЗначение1</DataPath>
<TitleLocation>None</TitleLocation>
<InputHint>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Значение</v8:content>
</v8:item>
</InputHint>
<ContextMenu name="ПравоеЗначение1КонтекстноеМеню" id="9"/>
<ExtendedTooltip name="ПравоеЗначение1РасширеннаяПодсказка" id="10"/>
<Events>
<Event name="StartChoice">ПравоеЗначение1НачалоВыбора</Event>
<Event name="ChoiceProcessing">ПравоеЗначение1ОбработкаВыбора</Event>
</Events>
</InputField>
</ChildItems>
</UsualGroup>
<UsualGroup name="Дополнительно" id="30">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Еще</v8:content>
</v8:item>
</Title>
<Group>AlwaysHorizontal</Group>
<Behavior>Usual</Behavior>
<ControlRepresentation>Picture</ControlRepresentation>
<Representation>None</Representation>
<ShowTitle>false</ShowTitle>
<ExtendedTooltip name="ДополнительноРасширеннаяПодсказка" id="31"/>
<ChildItems>
<CheckBoxField name="ИспользованиеГруппы" id="47">
<DataPath>ИспользованиеГруппы</DataPath>
<TitleLocation>None</TitleLocation>
<CheckBoxType>Auto</CheckBoxType>
<ContextMenu name="ИспользованиеГруппыКонтекстноеМеню" id="48"/>
<ExtendedTooltip name="ИспользованиеГруппыРасширеннаяПодсказка" id="49"/>
<Events>
<Event name="OnChange">ИспользованиеГруппыПриИзменении</Event>
</Events>
</CheckBoxField>
<InputField name="ТипГруппыЭлементовФильтра" id="17">
<DataPath>ТипГруппыЭлементовФильтра</DataPath>
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Условие</v8:content>
</v8:item>
</Title>
<Width>4</Width>
<HorizontalStretch>false</HorizontalStretch>
<ListChoiceMode>true</ListChoiceMode>
<ChoiceList>
<xr:Item>
<xr:Presentation/>
<xr:CheckState>0</xr:CheckState>
<xr:Value xsi:type="FormChoiceListDesTimeValue">
<Presentation>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>И</v8:content>
</v8:item>
</Presentation>
<Value xsi:type="xs:string">ГруппаИ</Value>
</xr:Value>
</xr:Item>
<xr:Item>
<xr:Presentation/>
<xr:CheckState>0</xr:CheckState>
<xr:Value xsi:type="FormChoiceListDesTimeValue">
<Presentation>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Или</v8:content>
</v8:item>
</Presentation>
<Value xsi:type="xs:string">ГруппаИли</Value>
</xr:Value>
</xr:Item>
</ChoiceList>
<DropListWidth>4</DropListWidth>
<ContextMenu name="ТипГруппыЭлементовФильтраКонтекстноеМеню" id="18"/>
<ExtendedTooltip name="ТипГруппыЭлементовФильтраРасширеннаяПодсказка" id="19"/>
<Events>
<Event name="OnChange">ТипГруппыЭлементовФильтраПриИзменении</Event>
</Events>
</InputField>
</ChildItems>
</UsualGroup>
<UsualGroup name="ЭлементОтбора2" id="3">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Элемент отбора 2</v8:content>
</v8:item>
</Title>
<Behavior>Usual</Behavior>
<ShowTitle>false</ShowTitle>
<ExtendedTooltip name="ЭлементОтбора2РасширеннаяПодсказка" id="4"/>
<ChildItems>
<UsualGroup name="ГруппаЛевоеЗначение2" id="63">
<Visible>false</Visible>
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Левое значение 2</v8:content>
</v8:item>
</Title>
<Group>AlwaysHorizontal</Group>
<Behavior>Usual</Behavior>
<Representation>None</Representation>
<ShowTitle>false</ShowTitle>
<ExtendedTooltip name="ГруппаЛевоеЗначение2РасширеннаяПодсказка" id="64"/>
<ChildItems>
<InputField name="ЛевоеЗначение2" id="27">
<DataPath>ЛевоеЗначение2</DataPath>
<Visible>false</Visible>
<ReadOnly>true</ReadOnly>
<TitleLocation>None</TitleLocation>
<InputHint>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Поле</v8:content>
</v8:item>
</InputHint>
<ContextMenu name="ЛевоеЗначение2КонтекстноеМеню" id="28"/>
<ExtendedTooltip name="ЛевоеЗначение2РасширеннаяПодсказка" id="29"/>
<Events>
<Event name="OnChange">ЛевоеЗначение2ПриИзменении</Event>
</Events>
</InputField>
<InputField name="ПредставлениеЛевогоЗначения2" id="65">
<DataPath>ПредставлениеЛевогоЗначения2</DataPath>
<ReadOnly>true</ReadOnly>
<TitleLocation>None</TitleLocation>
<InputHint>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Поле</v8:content>
</v8:item>
</InputHint>
<ContextMenu name="ПредставлениеЛевогоЗначения2КонтекстноеМеню" id="66"/>
<ExtendedTooltip name="ПредставлениеЛевогоЗначения2РасширеннаяПодсказка" id="67"/>
</InputField>
</ChildItems>
</UsualGroup>
<InputField name="ВидСравнения2" id="11">
<DataPath>ВидСравнения2</DataPath>
<TitleLocation>None</TitleLocation>
<Width>15</Width>
<AutoMaxWidth>false</AutoMaxWidth>
<MaxWidth>15</MaxWidth>
<ChoiceButton>false</ChoiceButton>
<ListChoiceMode>true</ListChoiceMode>
<InputHint>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Условие</v8:content>
</v8:item>
</InputHint>
<ContextMenu name="ВидСравнения2КонтекстноеМеню" id="12"/>
<ExtendedTooltip name="ВидСравнения2РасширеннаяПодсказка" id="13"/>
<Events>
<Event name="OnChange">ВидСравнения2ПриИзменении</Event>
</Events>
</InputField>
<InputField name="ПравоеЗначение2" id="14">
<DataPath>ПравоеЗначение2</DataPath>
<TitleLocation>None</TitleLocation>
<InputHint>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Значение</v8:content>
</v8:item>
</InputHint>
<ContextMenu name="ПравоеЗначение2КонтекстноеМеню" id="15"/>
<ExtendedTooltip name="ПравоеЗначение2РасширеннаяПодсказка" id="16"/>
<Events>
<Event name="OnChange">ПравоеЗначение2ПриИзменении</Event>
<Event name="StartChoice">ПравоеЗначение2НачалоВыбора</Event>
<Event name="ChoiceProcessing">ПравоеЗначение2ОбработкаВыбора</Event>
</Events>
</InputField>
</ChildItems>
</UsualGroup>
<UsualGroup name="КоманднаяПанель" id="68">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Командная панель</v8:content>
</v8:item>
</Title>
<GroupVerticalAlign>Bottom</GroupVerticalAlign>
<Group>AlwaysHorizontal</Group>
<Behavior>Usual</Behavior>
<Representation>NormalSeparation</Representation>
<ShowTitle>false</ShowTitle>
<ExtendedTooltip name="КоманднаяПанельРасширеннаяПодсказка" id="69"/>
<ChildItems>
<Button name="ПерейтиКРасширеннымНастройкам" id="72">
<Type>Hyperlink</Type>
<CommandName>Form.Command.ПерейтиКРасширеннымНастройкам</CommandName>
<ExtendedTooltip name="ПерейтиКРасширеннымНастройкамРасширеннаяПодсказка" id="73"/>
</Button>
<CommandBar name="КомандыОсновные" id="70">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Команды основные</v8:content>
</v8:item>
</Title>
<HorizontalLocation>Right</HorizontalLocation>
<ExtendedTooltip name="КомандыОсновныеРасширеннаяПодсказка" id="71"/>
<ChildItems>
<Button name="ПрименитьИСформировать" id="56" DisplayImportance="VeryHigh">
<Type>CommandBarButton</Type>
<Representation>Text</Representation>
<DefaultButton>true</DefaultButton>
<CommandName>Form.Command.ПрименитьИСформировать</CommandName>
<ExtendedTooltip name="ПрименитьИСформироватьРасширеннаяПодсказка" id="57"/>
</Button>
<Button name="Применить" id="54">
<Type>CommandBarButton</Type>
<CommandName>Form.Command.Применить</CommandName>
<ExtendedTooltip name="ПрименитьРасширеннаяПодсказка" id="55"/>
</Button>
<Button name="Отмена" id="52">
<Type>CommandBarButton</Type>
<CommandName>Form.StandardCommand.Cancel</CommandName>
<ExtendedTooltip name="ОтменаРасширеннаяПодсказка" id="53"/>
</Button>
</ChildItems>
</CommandBar>
</ChildItems>
</UsualGroup>
</ChildItems>
<Attributes>
<Attribute name="ВидСравнения1" id="1">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Вид сравнения 1</v8:content>
</v8:item>
</Title>
<Type/>
</Attribute>
<Attribute name="ПравоеЗначение1" id="2">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Правое значение 1</v8:content>
</v8:item>
</Title>
<Type/>
</Attribute>
<Attribute name="ВидСравнения2" id="3">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Вид сравнения 2</v8:content>
</v8:item>
</Title>
<Type/>
</Attribute>
<Attribute name="ПравоеЗначение2" id="4">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Правое значение 2</v8:content>
</v8:item>
</Title>
<Type/>
</Attribute>
<Attribute name="ТипГруппыЭлементовФильтра" id="5">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Тип группы элементов фильтра</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>50</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Attribute>
<Attribute name="ЛевоеЗначение1" id="6">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Левое значение 1</v8:content>
</v8:item>
</Title>
<Type/>
</Attribute>
<Attribute name="ЛевоеЗначение2" id="7">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Левое значение 2</v8:content>
</v8:item>
</Title>
<Type/>
</Attribute>
<Attribute name="Использование1" id="8">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Использование 1</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>xs:boolean</v8:Type>
</Type>
</Attribute>
<Attribute name="Использование2" id="9">
<Type>
<v8:Type>xs:boolean</v8:Type>
</Type>
</Attribute>
<Attribute name="КомпоновщикНастроек" id="10">
<Type>
<v8:Type>dcsset:SettingsComposer</v8:Type>
</Type>
</Attribute>
<Attribute name="СвойстваЗаголовка" id="11">
<Type/>
</Attribute>
<Attribute name="ПредставлениеЛевогоЗначения1" id="12">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Представление левого значения 1</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Attribute>
<Attribute name="ПредставлениеЛевогоЗначения2" id="13">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Представление левого значения 2</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Attribute>
<Attribute name="ТипЗначенияФильтра" id="14">
<Type>
<v8:Type>v8:TypeDescription</v8:Type>
</Type>
</Attribute>
<Attribute name="ДоступныеЗначения" id="15">
<Type>
<v8:Type>v8:ValueListType</v8:Type>
</Type>
<Settings xsi:type="v8:TypeDescription"/>
</Attribute>
<Attribute name="НастройкиОтчета" id="16">
<Type/>
</Attribute>
<Attribute name="КлючТекущегоВарианта" id="17">
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Attribute>
<Attribute name="ИспользованиеГруппы" id="18">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Использование группы</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>xs:boolean</v8:Type>
</Type>
</Attribute>
</Attributes>
<Commands>
<Command name="Применить" id="1">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Применить</v8:content>
</v8:item>
</Title>
<Action>Применить</Action>
</Command>
<Command name="ПрименитьИСформировать" id="2">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Применить и сформировать</v8:content>
</v8:item>
</Title>
<Picture>
<xr:Ref>StdPicture.GenerateReport</xr:Ref>
<xr:LoadTransparent>true</xr:LoadTransparent>
</Picture>
<Action>ПрименитьИСформировать</Action>
</Command>
<Command name="ПерейтиКРасширеннымНастройкам" id="3">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Больше возможностей...</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Перейти к расширенным настройкам фильтра</v8:content>
</v8:item>
</ToolTip>
<Action>ПерейтиКРасширеннымНастройкам</Action>
</Command>
</Commands>
<Parameters>
<Parameter name="СвойстваЗаголовка">
<Type/>
</Parameter>
<Parameter name="НастройкиОтчета">
<Type/>
</Parameter>
<Parameter name="КлючТекущегоВарианта">
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Parameter>
<Parameter name="ДанныеРасшифровки">
<Type/>
</Parameter>
<Parameter name="Ячейка">
<Type/>
</Parameter>
<Parameter name="КомпоновщикНастроек">
<Type>
<v8:Type>dcsset:SettingsComposer</v8:Type>
</Type>
</Parameter>
</Parameters>
</Form>
@@ -0,0 +1,677 @@
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2023, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ОпределитьПоведениеВМобильномКлиенте();
ЗаполнитьЗначенияСвойств(ЭтотОбъект, Параметры, "НастройкиОтчета, КомпоновщикНастроек, КлючТекущегоВарианта");
СвойстваЗаголовка = Параметры.СвойстваЗаголовка;
Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Фильтровать по полю: %1'"), СвойстваЗаголовка.Текст);
ИнициализироватьДанныеФормы();
УстановитьУсловноеОформление();
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ПривестиПравыеЗначенияКУсловию();
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура ТипГруппыЭлементовФильтраПриИзменении(Элемент)
ИспользованиеГруппы = Истина;
Использование2 = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ВидСравнения1ПриИзменении(Элемент)
ПривестиПравоеЗначениеКУсловию(1);
КонецПроцедуры
&НаКлиенте
Процедура ПравоеЗначение1НачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ПравоеЗначениеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ПравоеЗначение1ОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
ПравоеЗначениеОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
КонецПроцедуры
&НаКлиенте
Процедура ИспользованиеГруппыПриИзменении(Элемент)
Использование2 = ИспользованиеГруппы;
КонецПроцедуры
&НаКлиенте
Процедура ЛевоеЗначение2ПриИзменении(Элемент)
Если ЗначениеЗаполнено(ЛевоеЗначение2) Тогда
ИспользованиеГруппы = Истина;
Использование2 = Истина;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВидСравнения2ПриИзменении(Элемент)
ИспользованиеГруппы = Истина;
Использование2 = Истина;
ПривестиПравоеЗначениеКУсловию(2);
КонецПроцедуры
&НаКлиенте
Процедура ПравоеЗначение2ПриИзменении(Элемент)
ИспользованиеГруппы = Истина;
Использование2 = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ПравоеЗначение2НачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ПравоеЗначениеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ПравоеЗначение2ОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
ПравоеЗначениеОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура ПерейтиКРасширеннымНастройкам(Команда)
Настройки = КомпоновщикНастроек.Настройки.ПолучитьОбъектПоИдентификатору(СвойстваЗаголовка.ИдентификаторНастроек);
ГруппировкаФильтра = ВариантыОтчетовСлужебныйКлиентСервер.ГруппировкаФильтра(Настройки, СвойстваЗаголовка);
ИдентификаторГруппировкаФильтра = Настройки.ПолучитьИдентификаторПоОбъекту(ГруппировкаФильтра);
ПутьКЭлементуСтруктурыНастроек = ОтчетыКлиент.ПолныйПутьКЭлементуНастроек(
КомпоновщикНастроек.Настройки, ГруппировкаФильтра);
ОписаниеНастроекОтчета = ОписаниеНастроекОтчета(НастройкиОтчета);
Если ТипЗнч(ГруппировкаФильтра) = Тип("НастройкиКомпоновкиДанных") Тогда
ЗаголовокГруппировкаФильтра = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Фильтры отчета ""%1""'"),
ОписаниеНастроекОтчета.Наименование);
Иначе
ЗаголовокГруппировкаФильтра = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Фильтры группировки ""%1"" отчета ""%2""'"),
Строка(ГруппировкаФильтра.ПоляГруппировки),
ОписаниеНастроекОтчета.Наименование);
КонецЕсли;
ДобавитьФильтры();
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("КлючВарианта", КлючТекущегоВарианта);
ПараметрыФормы.Вставить("Вариант", КомпоновщикНастроек.Настройки);
ПараметрыФормы.Вставить("ПользовательскиеНастройки", КомпоновщикНастроек.ПользовательскиеНастройки);
ПараметрыФормы.Вставить("НастройкиОтчета", НастройкиОтчета);
ПараметрыФормы.Вставить("ВариантНаименование", ОписаниеНастроекОтчета.Наименование);
ПараметрыФормы.Вставить("ИдентификаторЭлементаСтруктурыНастроек", ИдентификаторГруппировкаФильтра);
ПараметрыФормы.Вставить("ПутьКЭлементуСтруктурыНастроек", ПутьКЭлементуСтруктурыНастроек);
ПараметрыФормы.Вставить("ТипЭлементаСтруктурыНастроек", Строка(ТипЗнч(ГруппировкаФильтра)));
ПараметрыФормы.Вставить("Заголовок", ЗаголовокГруппировкаФильтра);
ПараметрыФормы.Вставить("ИмяСтраницы", "СтраницаОтборы");
ПараметрыФормы.Вставить("ОтображатьСтраницы", Ложь);
ОткрытьФорму(НастройкиОтчета.ПолноеИмя + ".ФормаНастроек", ПараметрыФормы, ВладелецФормы);
Закрыть();
КонецПроцедуры
&НаКлиенте
Процедура ПрименитьИСформировать(Команда)
ПрименитьФильтры(Истина);
КонецПроцедуры
&НаКлиенте
Процедура Применить(Команда)
ПрименитьФильтры(Ложь);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
Процедура ОпределитьПоведениеВМобильномКлиенте()
ЭтоМобильныйКлиент = ОбщегоНазначения.ЭтоМобильныйКлиент();
Если Не ЭтоМобильныйКлиент Тогда
Возврат;
КонецЕсли;
ОсновныеКоманды = Элементы.КомандыОсновные.ПодчиненныеЭлементы;
Для НомерКоманды = 1 По ОсновныеКоманды.Количество() Цикл
Элементы.Переместить(ОсновныеКоманды[0], Элементы.ФормаКоманднаяПанель);
КонецЦикла;
Элементы.ПрименитьИСформировать.Отображение = ОтображениеКнопки.Картинка;
КонецПроцедуры
#Область ИнициализацияДанныхФормы
&НаСервере
Процедура УстановитьУсловноеОформление()
УсловноеОформление.Элементы.Очистить();
//
Элемент = УсловноеОформление.Элементы.Добавить();
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ПредставлениеЛевогоЗначения1");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", Новый ПолеКомпоновкиДанных("ЛевоеЗначение1"));
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ЛевоеЗначение1.Имя);
//
Элемент = УсловноеОформление.Элементы.Добавить();
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ПредставлениеЛевогоЗначения2");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", Новый ПолеКомпоновкиДанных("ЛевоеЗначение2"));
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ЛевоеЗначение2.Имя);
КонецПроцедуры
&НаСервере
Процедура ИнициализироватьДанныеФормы()
Фильтры = Неопределено;
ОписаниеФильтра = ОписаниеФильтра(КомпоновщикНастроек, СвойстваЗаголовка, Фильтры);
Если ОписаниеФильтра <> Неопределено Тогда
ТипЗначенияФильтра = ОписаниеФильтра.ТипЗначения;
КонецЕсли;
УстановитьЛевоеЗначение(СвойстваЗаголовка.Поле);
УстановитьДоступныеВидыСравнения(ОписаниеФильтра);
УстановитьПравоеЗначение(ОписаниеФильтра);
ТипГруппыЭлементовФильтра = Элементы.ТипГруппыЭлементовФильтра.СписокВыбора[0].Значение;
НайтиФильтры(Фильтры);
КонецПроцедуры
&НаСервере
Процедура УстановитьЛевоеЗначение(Поле)
Для НомерЭлемента = 1 По 2 Цикл
ИмяЭлемента = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
"ЛевоеЗначение%1", НомерЭлемента);
ЭтотОбъект[ИмяЭлемента] = Поле;
Элементы[ИмяЭлемента].ОграничениеТипа = Новый ОписаниеТипов("ПолеКомпоновкиДанных");
ИмяЭлемента = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
"ПредставлениеЛевогоЗначения%1", НомерЭлемента);
ЭтотОбъект[ИмяЭлемента] = СвойстваЗаголовка.Текст;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура УстановитьДоступныеВидыСравнения(ОписаниеФильтра)
Если ОписаниеФильтра = Неопределено Тогда
ВидыСравнения = ВидСравненияКомпоновкиДанных;
Иначе
ВидыСравнения = ОписаниеФильтра.ДоступныеВидыСравнения.ВыгрузитьЗначения();
КонецЕсли;
Для НомерЭлемента = 1 По 2 Цикл
ИмяЭлемента = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
"ВидСравнения%1", НомерЭлемента);
Элементы[ИмяЭлемента].ДоступныеТипы = Новый ОписаниеТипов("ВидСравненияКомпоновкиДанных");
Список = Элементы[ИмяЭлемента].СписокВыбора;
Для Каждого ТекущийВид Из ВидыСравнения Цикл
Список.Добавить(ТекущийВид);
КонецЦикла;
ЭтотОбъект[ИмяЭлемента] = Список[0].Значение;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура УстановитьПравоеЗначение(ОписаниеФильтра)
Если ОписаниеФильтра <> Неопределено
И ОписаниеФильтра.ДоступныеЗначения <> Неопределено Тогда
ДоступныеЗначения = ОписаниеФильтра.ДоступныеЗначения;
КонецЕсли;
Для НомерЭлемента = 1 По 2 Цикл
ИмяЭлемента = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
"ПравоеЗначение%1", НомерЭлемента);
ПолеПравогоЗначения = Элементы[ИмяЭлемента];
ПолеПравогоЗначения.СписокВыбора.Очистить();
Для Каждого ДоступноеЗначение Из ДоступныеЗначения Цикл
ЗаполнитьЗначенияСвойств(ПолеПравогоЗначения.СписокВыбора.Добавить(), ДоступноеЗначение);
КонецЦикла;
ПолеПравогоЗначения.РежимВыбораИзСписка = ПолеПравогоЗначения.СписокВыбора.Количество() > 0;
Условие = ЭтотОбъект[СтрШаблон("ВидСравнения%1", НомерЭлемента)];
ОпределитьДоступностьПоляПравогоЗначения(ПолеПравогоЗначения, Условие);
КонецЦикла;
ДоступныеТипы = ?(ОписаниеФильтра = Неопределено, Новый ОписаниеТипов("Неопределено"), ОписаниеФильтра.ТипЗначения);
ДанныеРасшифровки = ПолучитьИзВременногоХранилища(Параметры.ДанныеРасшифровки);
ЗначениеЯчейки = ВариантыОтчетовСлужебный.ЗначениеЯчейки(Параметры.Ячейка, ДоступныеТипы, ДанныеРасшифровки);
ПравоеЗначение1 = ЗначениеЯчейки.Значение;
КонецПроцедуры
// Параметры:
// Фильтр - ОтборКомпоновкиДанных
//
&НаСервере
Процедура НайтиФильтры(Фильтр)
Для Каждого Элемент Из Фильтр.Элементы Цикл
Если ТипЗнч(Элемент) = Тип("ГруппаЭлементовОтбораКомпоновкиДанных") Тогда
ИспользованиеГруппы = Элемент.Использование;
ЭлементыГруппы = Элемент.Элементы;
Если ЭлементыГруппы.Количество() <> 2
Или ЭлементыГруппы[0].ЛевоеЗначение <> ЛевоеЗначение1
Или ЭлементыГруппы[1].ЛевоеЗначение <> ЛевоеЗначение2 Тогда
Продолжить;
КонецЕсли;
УстановитьСвойстваФильтра(ЭлементыГруппы[0], 1);
УстановитьСвойстваФильтра(ЭлементыГруппы[1], 2);
ТипГруппыЭлементовФильтра = СтрЗаменить(Элемент.ТипГруппы, " ", "");
ИначеЕсли Элемент.ЛевоеЗначение = ЛевоеЗначение1 Тогда
УстановитьСвойстваФильтра(Элемент, 1);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура УстановитьСвойстваФильтра(Фильтр, НомерЭлемента)
Если Не Фильтр.ИСпользование Тогда
Возврат;
КонецЕсли;
ЭтотОбъект[СтрШаблон("Использование%1", НомерЭлемента)] = Фильтр.Использование;
ЭтотОбъект[СтрШаблон("ВидСравнения%1", НомерЭлемента)] = Фильтр.ВидСравнения;
ЭтотОбъект[СтрШаблон("ПравоеЗначение%1", НомерЭлемента)] = Фильтр.ПравоеЗначение;
КонецПроцедуры
#КонецОбласти
#Область ДобавлениеФильтра
&НаКлиенте
Процедура ДобавитьФильтры()
Фильтры = Фильтры(КомпоновщикНастроек, СвойстваЗаголовка);
УдалитьФильтры(Фильтры);
Если ИспользованиеГруппы Тогда
Группа = ГруппаФильтра(Фильтры);
ДобавитьФильтр(Группа, ЛевоеЗначение1, ВидСравнения1, ПравоеЗначение1);
ДобавитьФильтр(Группа, ЛевоеЗначение2, ВидСравнения2, ПравоеЗначение2, 1);
Иначе
ДобавитьФильтр(Фильтры, ЛевоеЗначение1, ВидСравнения1, ПравоеЗначение1);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УдалитьФильтры(Фильтры)
ФильтрыКУдалению = Новый Массив;
Для Каждого Элемент Из Фильтры.Элементы Цикл
Если ТипЗнч(Элемент) = Тип("ГруппаЭлементовОтбораКомпоновкиДанных") Тогда
ЭлементыГруппы = Элемент.Элементы;
Если ЭлементыГруппы.Количество() = 2
И ЭлементыГруппы[0].ЛевоеЗначение = ЛевоеЗначение1
И ЭлементыГруппы[1].ЛевоеЗначение = ЛевоеЗначение2 Тогда
ФильтрыКУдалению.Добавить(Элемент);
КонецЕсли;
ИначеЕсли Элемент.ЛевоеЗначение = ЛевоеЗначение1 Тогда
ФильтрыКУдалению.Добавить(Элемент);
КонецЕсли;
КонецЦикла;
Для Каждого Фильтр Из ФильтрыКУдалению Цикл
Фильтры.Элементы.Удалить(Фильтр);
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Функция ГруппаФильтра(Фильтр)
Группа = Фильтр.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
Группа.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных[ТипГруппыЭлементовФильтра];
Группа.Использование = ИспользованиеГруппы;
Возврат Группа;
КонецФункции
&НаКлиенте
Процедура ДобавитьФильтр(Фильтр, ЛевоеЗначение, ВидСравнения, ПравоеЗначение, Индекс = 0)
Элемент = Фильтр.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
Элемент.ЛевоеЗначение = ЛевоеЗначение;
Элемент.ВидСравнения = ВидСравнения;
Элемент.ПравоеЗначение = ПравоеЗначение;
Элемент.Использование = Истина;
КонецПроцедуры
#КонецОбласти
&НаКлиенте
Процедура ПривестиПравыеЗначенияКУсловию()
Для НомерЭлемента = 1 По 2 Цикл
ПривестиПравоеЗначениеКУсловию(НомерЭлемента);
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ПривестиПравоеЗначениеКУсловию(НомерЭлемента)
Условие = ЭтотОбъект[СтрШаблон("ВидСравнения%1", НомерЭлемента)];
ИмяПравогоЗначения = СтрШаблон("ПравоеЗначение%1", НомерЭлемента);
ПолеПравогоЗначения = Элементы[ИмяПравогоЗначения];
Если ОтчетыКлиентСервер.ЭтоВидСравненияСписка(Условие) Тогда
ПравоеЗначение = ОтчетыКлиентСервер.ЗначенияСписком(ЭтотОбъект[ИмяПравогоЗначения]);
ЭтотОбъект[ИмяПравогоЗначения] = ПравоеЗначение;
ЭтотОбъект[ИмяПравогоЗначения].ТипЗначения = ТипЗначенияФильтра;
УточнитьПравоеЗначение(ЭтотОбъект[ИмяПравогоЗначения]);
ПолеПравогоЗначения.ОграничениеТипа = Новый ОписаниеТипов("СписокЗначений");
ПолеПравогоЗначения.ВыбиратьТип = Ложь;
ПолеПравогоЗначения.РежимВыбораИзСписка = Ложь;
ПолеПравогоЗначения.КнопкаВыбора = Истина;
Иначе
Если ТипЗнч(ЭтотОбъект[ИмяПравогоЗначения]) = Тип("СписокЗначений") Тогда
Если ЭтотОбъект[ИмяПравогоЗначения].Количество() > 0 Тогда
ПравоеЗначение = ЭтотОбъект[ИмяПравогоЗначения][0].Значение;
Иначе
ПравоеЗначение = ТипЗначенияФильтра.ПривестиЗначение();
КонецЕсли;
ЭтотОбъект[ИмяПравогоЗначения] = ПравоеЗначение;
КонецЕсли;
ДоступныеТипы = ТипЗначенияФильтра.Типы();
ЭтоСтрока = ДоступныеТипы.Количество() = 1 И ДоступныеТипы.Найти(Тип("Строка")) <> Неопределено;
ОписаниеФильтра = ОписаниеФильтра(КомпоновщикНастроек, СвойстваЗаголовка);
ВыборГруппИЭлементов = ОтчетыКлиент.ЗначениеТипаИспользованиеГруппИЭлементов(
?(ОписаниеФильтра = Неопределено, Неопределено, ОписаниеФильтра.ВыборГруппИЭлементов), Условие);
ПолеПравогоЗначения.ОграничениеТипа = ТипЗначенияФильтра;
ПолеПравогоЗначения.ВыбиратьТип = (ДоступныеТипы.Количество() <> 1);
ПолеПравогоЗначения.РежимВыбораИзСписка = (ПолеПравогоЗначения.СписокВыбора.Количество() > 0);
ПолеПравогоЗначения.КнопкаВыбора = Не ЭтоСтрока И Не ПолеПравогоЗначения.РежимВыбораИзСписка;
ПолеПравогоЗначения.ВыборГруппИЭлементов = ОтчетыКлиентСервер.ЗначениеТипаГруппыИЭлементы(ВыборГруппИЭлементов, Условие);
КонецЕсли;
ОпределитьДоступностьПоляПравогоЗначения(ПолеПравогоЗначения, Условие);
КонецПроцедуры
&НаКлиенте
Процедура УточнитьПравоеЗначение(ПравоеЗначение)
Если ТипЗнч(ПравоеЗначение) <> Тип("СписокЗначений") Тогда
Возврат;
КонецЕсли;
Для Каждого Элемент Из ПравоеЗначение Цикл
ДоступноеЗначение = ДоступныеЗначения.НайтиПоЗначению(Элемент.Значение);
Если ДоступноеЗначение <> Неопределено Тогда
ЗаполнитьЗначенияСвойств(Элемент, ДоступноеЗначение);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ПравоеЗначениеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ПравоеЗначение = ЭтотОбъект[Элемент.Имя];
Если ТипЗнч(ПравоеЗначение) <> Тип("СписокЗначений") Тогда
Возврат;
КонецЕсли;
СтандартнаяОбработка = Ложь;
ОписаниеФильтра = ОписаниеФильтра(КомпоновщикНастроек, СвойстваЗаголовка);
Фильтр = Фильтр(КомпоновщикНастроек, СвойстваЗаголовка);
ПараметрыВыбора = ОтчетыКлиентСервер.ПараметрыВыбора(
КомпоновщикНастроек.Настройки, КомпоновщикНастроек.ПользовательскиеНастройки.Элементы, Фильтр);
ВыборГруппИЭлементов = ОтчетыКлиент.ЗначениеТипаИспользованиеГруппИЭлементов(
?(ОписаниеФильтра = Неопределено, Неопределено, ОписаниеФильтра.ВыборГруппИЭлементов), ВидСравнения);
ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("Отмеченные", ПравоеЗначение);
ПараметрыОткрытия.Вставить("ОписаниеТипов", ПравоеЗначение.ТипЗначения);
ПараметрыОткрытия.Вставить("ЗначенияДляВыбора", Элемент.СписокВыбора);
ПараметрыОткрытия.Вставить("ЗначенияДляВыбораЗаполнены", Элемент.СписокВыбора.Количество() > 0);
ПараметрыОткрытия.Вставить("ОграничиватьВыборУказаннымиЗначениями", ДоступныеЗначения.Количество() > 0);
ПараметрыОткрытия.Вставить("Представление", СвойстваЗаголовка.Текст);
ПараметрыОткрытия.Вставить("ПараметрыВыбора", Новый Массив(ПараметрыВыбора));
ПараметрыОткрытия.Вставить("ВыборГруппИЭлементов", ВыборГруппИЭлементов);
ПараметрыОткрытия.Вставить("БыстрыйВыбор", ?(ОписаниеФильтра = Неопределено, Ложь, ОписаниеФильтра.БыстрыйВыбор));
ОткрытьФорму("ОбщаяФорма.ВводЗначенийСпискомСФлажками", ПараметрыОткрытия, Элемент);
КонецПроцедуры
&НаКлиенте
Процедура ПравоеЗначениеОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
Если ТипЗнч(ВыбранноеЗначение) <> Тип("СписокЗначений") Тогда
Возврат;
КонецЕсли;
СтандартнаяОбработка = Ложь;
ПравоеЗначение = ЭтотОбъект[Элемент.Имя];
ПравоеЗначение.Очистить();
Для Каждого Элемент Из ВыбранноеЗначение Цикл
Если Элемент.Пометка Тогда
ЗаполнитьЗначенияСвойств(ПравоеЗначение.Добавить(), Элемент);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ПрименитьФильтры(ПереформироватьОтчет)
ДобавитьФильтры();
Результат = ВариантыОтчетовСлужебныйКлиент.РезультатКонтекстнойНастройки(
КомпоновщикНастроек, "Фильтровать", ВладелецФормы.УникальныйИдентификатор);
Если ПереформироватьОтчет Тогда
Результат.Переформировать = Истина;
КонецЕсли;
ОповеститьОВыборе(Результат);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция Фильтры(КомпоновщикНастроек, СвойстваЗаголовка)
Настройки = КомпоновщикНастроек.Настройки.ПолучитьОбъектПоИдентификатору(СвойстваЗаголовка.ИдентификаторНастроек);
Возврат ВариантыОтчетовСлужебныйКлиентСервер.ФильтрыРазделаОтчета(Настройки, СвойстваЗаголовка);
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция Фильтр(КомпоновщикНастроек, СвойстваЗаголовка)
Фильтры = Фильтры(КомпоновщикНастроек, СвойстваЗаголовка);
Возврат ВариантыОтчетовСлужебныйКлиентСервер.ФильтрРазделаОтчета(Фильтры, СвойстваЗаголовка.Поле);
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ОписаниеФильтра(КомпоновщикНастроек, СвойстваЗаголовка, Фильтры = Неопределено)
ОписаниеФильтра = Неопределено;
Если Фильтры = Неопределено Тогда
Фильтры = Фильтры(КомпоновщикНастроек, СвойстваЗаголовка);
КонецЕсли;
Если СвойстваЗаголовка.Поле <> Неопределено Тогда
ОписаниеФильтра = Фильтры.ДоступныеПоляОтбора.НайтиПоле(СвойстваЗаголовка.Поле);
КонецЕсли;
Возврат ОписаниеФильтра;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Процедура ОпределитьДоступностьПоляПравогоЗначения(Поле, Условие)
Поле.Доступность = Условие <> ВидСравненияКомпоновкиДанных.Заполнено
И Условие <> ВидСравненияКомпоновкиДанных.НеЗаполнено;
КонецПроцедуры
// Параметры:
// Описание - см. ВариантыОтчетов.НастройкиФормыОтчета
//
// Возвращаемое значение:
// см. ВариантыОтчетов.НастройкиФормыОтчета
//
&НаКлиентеНаСервереБезКонтекста
Функция ОписаниеНастроекОтчета(Описание)
Возврат Описание;
КонецФункции
#КонецОбласти
@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.20">
<Form uuid="f259b6b4-d582-429f-a16f-027a6bcb7438">
<Properties>
<Name>ЭлементУсловногоОформленияОтчета</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Элемент условного оформления отчета</v8:content>
</v8:item>
</Synonym>
<Comment/>
<FormType>Managed</FormType>
<IncludeHelpInContents>false</IncludeHelpInContents>
<UsePurposes>
<v8:Value xsi:type="app:ApplicationUsePurpose">PlatformApplication</v8:Value>
<v8:Value xsi:type="app:ApplicationUsePurpose">MobilePlatformApplication</v8:Value>
</UsePurposes>
</Properties>
</Form>
</MetaDataObject>
@@ -0,0 +1,995 @@
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2022, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
КомпоновщикНастроек = Параметры.КомпоновщикНастроек;
НастройкиОтчета = Параметры.НастройкиОтчета;
ИдентификаторЭлементаСтруктурыНастроек = Параметры.ИдентификаторЭлементаСтруктурыНастроек;
ИдентификаторКД = Параметры.ИдентификаторКД;
Наименование = Параметры.Наименование;
УстановитьЗаголовок();
ЭлементОформления = ЭлементОформленияИсходный();
Использование = ЭлементОформления.Использование;
Если ИдентификаторКД <> Неопределено Тогда
Наименование = ЭлементОформления.ПредставлениеПользовательскойНастройки;
НаименованиеПоУмолчанию = ОтчетыКлиентСервер.ПредставлениеЭлементаУсловногоОформления(
ЭлементОформления, Неопределено, "");
НаименованиеПереопределено = (Наименование <> "" И Наименование <> НаименованиеПоУмолчанию);
Элементы.Наименование.ПодсказкаВвода = НаименованиеПоУмолчанию;
Если Не НаименованиеПереопределено Тогда
Наименование = "";
Элементы.Наименование.КнопкаОчистки = Ложь;
КонецЕсли;
КонецЕсли;
ПроверитьПолеОформления(ЭлементОформления);
ПроверитьУсловие(ЭлементОформления);
Для Каждого ПолеФлажка Из Элементы.ВариантыИспользованияПометки.ПодчиненныеЭлементы Цикл
ИмяФлажка = ПолеФлажка.Имя;
ФлажкиОбластиОтображения.Добавить(ИмяФлажка);
Если ЭлементОформления[ИмяФлажка] = ИспользованиеУсловногоОформленияКомпоновкиДанных.Использовать Тогда
ЭтотОбъект[ИмяФлажка] = Истина;
КонецЕсли;
КонецЦикла;
ЗаполнитьСписокВыбораОформляемыхПолей(ЭлементОформления);
УстановитьВариантВыбораОформляемогоПоля(ЭлементОформления);
ЗакрыватьПриВыборе = Ложь;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура ВариантВыбораОформляемыхПолейПриИзменении(Элемент)
ПрименитьВариантВыбораОформляемогоПоля(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ОформляемоеПолеПриИзменении(Элемент)
Если Не ЗначениеЗаполнено(ОформляемоеПоле) Тогда
ВариантВыбораОформляемыхПолей = Элементы.ВариантВыбораОформляемыхПолей.СписокВыбора[0].Значение;
ПрименитьВариантВыбораОформляемогоПоля(ЭтотОбъект);
КонецЕсли;
ОбновитьНаименованиеПоУмолчанию();
КонецПроцедуры
&НаКлиенте
Процедура ОформляемоеПолеОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ИспользуемыеПоля = ИспользуемыеОформляемыеПоля(ЭтотОбъект);
Если ТипЗнч(ВыбранноеЗначение) = Тип("Строка")
И ВыбранноеЗначение <> ДополнительноеПоле() Тогда
Поле = Новый ПолеКомпоновкиДанных(ВыбранноеЗначение);
Оформление = Оформление(ЭтотОбъект);
ДоступноеПоле = Оформление.ДоступныеПоляПолей.НайтиПоле(Поле);
ИначеЕсли ТипЗнч(ВыбранноеЗначение) = Тип("ДоступноеПолеКомпоновкиДанных") Тогда
Поле = ВыбранноеЗначение.Поле;
ДоступноеПоле = ВыбранноеЗначение;
ИначеЕсли ТипЗнч(ВыбранноеЗначение) = Тип("ПользовательскоеПолеВыражениеКомпоновкиДанных") Тогда
ОбновитьСоставОписанияФормул(ВыбранноеЗначение);
Оформление = Оформление(ЭтотОбъект);
ДоступноеПоле = ВыбранноеЗначение;
ВариантыОтчетовСлужебныйКлиент.ДобавитьФормулу(КомпоновщикНастроек.Настройки, Оформление.ДоступныеПоляПолей, ДоступноеПоле);
Поле = ДоступноеПоле.Поле;
Иначе
ВыбратьОформляемоеПоле(Элемент, ВыбранноеЗначение, ИспользуемыеПоля);
Возврат;
КонецЕсли;
Если ИспользуемыеПоля.Количество() = 0 Тогда
ЭлементОформления = ЭлементОформления(КомпоновщикНастроек.Настройки);
ИспользуемоеПоле = ЭлементОформления.Поля.Элементы.Вставить(0);
ИспользуемоеПоле.Использование = Истина;
Иначе
ИспользуемоеПоле = ИспользуемыеПоля[0];
КонецЕсли;
ИспользуемоеПоле.Поле = Поле;
ДополнитьСписокВыбораОформляемыхПолей(ЭтотОбъект, Поле, ДоступноеПоле);
ОформляемоеПоле = Поле;
ОбновитьНаименованиеПоУмолчанию();
КонецПроцедуры
&НаКлиенте
Процедура НаименованиеПриИзменении(Элемент)
Если Наименование = "" Или Наименование = Элементы.Наименование.ПодсказкаВвода Тогда
ТребуетсяОбновлениеНаименованияПоУмолчанию = Истина;
ОбновитьНаименованиеПоУмолчаниюЕслиТребуется();
Элементы.Наименование.КнопкаОчистки = Ложь;
Иначе
Элементы.Наименование.КнопкаОчистки = Истина;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ИспользоватьВГруппировкеПриИзменении(Элемент)
ОбновитьНаименованиеПоУмолчанию();
КонецПроцедуры
&НаКлиенте
Процедура ИспользоватьВИерархическойГруппировкеПриИзменении(Элемент)
ОбновитьНаименованиеПоУмолчанию();
КонецПроцедуры
&НаКлиенте
Процедура ИспользоватьВОбщемИтогеПриИзменении(Элемент)
ОбновитьНаименованиеПоУмолчанию();
КонецПроцедуры
&НаКлиенте
Процедура ИспользоватьВЗаголовкеПолейПриИзменении(Элемент)
ОбновитьНаименованиеПоУмолчанию();
КонецПроцедуры
&НаКлиенте
Процедура ИспользоватьВЗаголовкеПриИзменении(Элемент)
ОбновитьНаименованиеПоУмолчанию();
КонецПроцедуры
&НаКлиенте
Процедура ИспользоватьВПараметрахПриИзменении(Элемент)
ОбновитьНаименованиеПоУмолчанию();
КонецПроцедуры
&НаКлиенте
Процедура ИспользоватьВОтбореПриИзменении(Элемент)
ОбновитьНаименованиеПоУмолчанию();
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыОформление
&НаКлиенте
Процедура ОформлениеПриИзменении(Элемент)
ОбновитьНаименованиеПоУмолчанию();
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыОтбор
&НаКлиенте
Процедура ОтборПриИзменении(Элемент)
ОбновитьНаименованиеПоУмолчанию();
КонецПроцедуры
&НаКлиенте
Процедура ОтборПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр)
ИзменитьПоле(Элемент, Отказ);
КонецПроцедуры
&НаКлиенте
Процедура ОтборПередНачаломИзменения(Элемент, Отказ)
Если Элемент.ТекущийЭлемент.Имя = Элементы.ОтборЛевоеЗначение.Имя Тогда
ИзменитьПоле(Элемент, Отказ, Ложь);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыОформляемыеПоля
&НаКлиенте
Процедура ОформляемыеПоляПриИзменении(Элемент)
ОбновитьНаименованиеПоУмолчанию();
КонецПроцедуры
&НаКлиенте
Процедура ОформляемыеПоляПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр)
ИзменитьПоле(Элемент, Отказ);
КонецПроцедуры
&НаКлиенте
Процедура ОформляемыеПоляПередНачаломИзменения(Элемент, Отказ)
ИзменитьПоле(Элемент, Отказ, Ложь);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура Выбрать(Команда)
ВыбратьИЗакрыть();
КонецПроцедуры
&НаКлиенте
Процедура Показывать_УстановитьПометки(Команда)
Для Каждого ЭлементСписка Из ФлажкиОбластиОтображения Цикл
ЭтотОбъект[ЭлементСписка.Значение] = Истина;
КонецЦикла;
ОбновитьНаименованиеПоУмолчанию();
КонецПроцедуры
&НаКлиенте
Процедура Показывать_СнятьПометки(Команда)
Для Каждого ЭлементСписка Из ФлажкиОбластиОтображения Цикл
ЭтотОбъект[ЭлементСписка.Значение] = Ложь;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ВставитьНаименованиеПоУмолчанию(Команда)
Наименование = НаименованиеПоУмолчанию;
Элементы.Наименование.КнопкаОчистки = Ложь;
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
Процедура УстановитьЗаголовок()
Если Параметры.Свойство("Заголовок") Тогда
Заголовок = Параметры.Заголовок;
КонецЕсли;
Если Не ЗначениеЗаполнено(Заголовок) Тогда
Заголовок = НСтр("ru = 'Оформление'");
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ЭлементОформленияИсходный()
Источник = Новый ИсточникДоступныхНастроекКомпоновкиДанных(НастройкиОтчета.АдресСхемы);
КомпоновщикНастроек.Инициализировать(Источник);
Оформление = КомпоновщикНастроек.Настройки.УсловноеОформление;
Если ИдентификаторКД = Неопределено Тогда // Новый элемент
ЭтоНовый = Истина;
ЭлементОформления = Оформление.Элементы.Вставить(0);
ЭлементОформления.Использование = Истина;
ЭлементОформления.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Обычный;
Элементы.Наименование.КнопкаОчистки = Ложь;
Иначе
ОформлениеИсточник = Оформление(ЭтотОбъект);
Если ОформлениеИсточник = Неопределено Тогда
ВызватьИсключение НСтр("ru = 'Не существует узел отчета.'");
КонецЕсли;
ЭлементОформленияИсточник = ОформлениеИсточник.ПолучитьОбъектПоИдентификатору(ИдентификаторКД);
Если ЭлементОформленияИсточник = Неопределено Тогда
ВызватьИсключение НСтр("ru = 'Не существует элемент условного оформления.'");
КонецЕсли;
ЭлементОформления = ОтчетыКлиентСервер.СкопироватьРекурсивно(Оформление, ЭлементОформленияИсточник, Оформление.Элементы, 0, Новый Соответствие);
КонецЕсли;
Возврат ЭлементОформления;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ЭлементОформления(Настройки)
Возврат Настройки.УсловноеОформление.Элементы[0];
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция Оформление(Форма)
Настройки = Форма.КомпоновщикНастроек.Настройки;
Если Форма.ИдентификаторЭлементаСтруктурыНастроек = Неопределено Тогда
Возврат Настройки.УсловноеОформление;
КонецЕсли;
ЭлементСтруктуры = Настройки.ПолучитьОбъектПоИдентификатору(Форма.ИдентификаторЭлементаСтруктурыНастроек);
Если ТипЗнч(ЭлементСтруктуры) = Тип("НастройкиВложенногоОбъектаКомпоновкиДанных") Тогда
Возврат ЭлементСтруктуры.Настройки.УсловноеОформление;
Иначе
Возврат ЭлементСтруктуры.УсловноеОформление;
КонецЕсли;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция НайденноеПолеОформления(Настройки, ИскомоеПоле)
ЭлементОформления = ЭлементОформления(Настройки);
Для Каждого Элемент Из ЭлементОформления.Поля.Элементы Цикл
Если Элемент.Поле = ИскомоеПоле Тогда
Возврат Элемент;
КонецЕсли;
КонецЦикла;
Возврат Неопределено;
КонецФункции
&НаСервере
Процедура ПроверитьПолеОформления(ЭлементОформления)
Если Не Параметры.Свойство("Поле")
Или ТипЗнч(Параметры.Поле) <> Тип("ПолеКомпоновкиДанных") Тогда
Возврат;
КонецЕсли;
ПолеОформления = НайденноеПолеОформления(КомпоновщикНастроек.Настройки, Параметры.Поле);
Если ПолеОформления = Неопределено Тогда
ПолеОформления = ЭлементОформления.Поля.Элементы.Добавить();
ПолеОформления.Поле = Параметры.Поле;
КонецЕсли;
ПолеОформления.Использование = Истина;
КонецПроцедуры
&НаСервере
Процедура ПроверитьУсловие(ЭлементОформления)
Условие = Неопределено;
Если Не Параметры.Свойство("Условие", Условие)
Или ТипЗнч(Условие) <> Тип("Структура") Тогда
Возврат;
КонецЕсли;
ЭлементОтбора = Неопределено;
Для Каждого Элемент Из ЭлементОформления.Отбор.Элементы Цикл
Если ТипЗнч(Элемент) = Тип("ЭлементОтбораКомпоновкиДанных")
И Элемент.ЛевоеЗначение = Условие.ЛевоеЗначение Тогда
ЭлементОтбора = Элемент;
Прервать;
КонецЕсли;
КонецЦикла;
Если ЭлементОтбора = Неопределено Тогда
ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Условие.ЛевоеЗначение;
КонецЕсли;
ЭлементОтбора.ВидСравнения = Условие.ВидСравнения;
ЭлементОтбора.ПравоеЗначение = Условие.ПравоеЗначение;
ЭлементОтбора.Использование = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьНаименованиеПоУмолчанию()
ТребуетсяОбновлениеНаименованияПоУмолчанию = Истина;
Если Наименование = "" Или Наименование = Элементы.Наименование.ПодсказкаВвода Тогда
ПодключитьОбработчикОжидания("ОбновитьНаименованиеПоУмолчаниюЕслиТребуется", 1, Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьНаименованиеПоУмолчаниюЕслиТребуется()
Если Не ТребуетсяОбновлениеНаименованияПоУмолчанию Тогда
Возврат;
КонецЕсли;
ТребуетсяОбновлениеНаименованияПоУмолчанию = Ложь;
ЭлементОформления = ЭлементОформления(КомпоновщикНастроек.Настройки);
НаименованиеПоУмолчанию = ОтчетыКлиентСервер.ПредставлениеЭлементаУсловногоОформления(ЭлементОформления, Неопределено, "");
Если Наименование = Элементы.Наименование.ПодсказкаВвода Тогда
Наименование = НаименованиеПоУмолчанию;
Элементы.Наименование.ПодсказкаВвода = НаименованиеПоУмолчанию;
ИначеЕсли Наименование = "" Тогда
Элементы.Наименование.ПодсказкаВвода = НаименованиеПоУмолчанию;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьИЗакрыть()
ОтключитьОбработчикОжидания("ОбновитьНаименованиеПоУмолчаниюЕслиТребуется");
ОбновитьНаименованиеПоУмолчаниюЕслиТребуется();
Если Наименование = "" Тогда
Наименование = НаименованиеПоУмолчанию;
КонецЕсли;
ЭлементОформления = ЭлементОформления(КомпоновщикНастроек.Настройки);
Если Наименование = НаименованиеПоУмолчанию Тогда
ЭлементОформления.ПредставлениеПользовательскойНастройки = "";
Иначе
ЭлементОформления.ПредставлениеПользовательскойНастройки = Наименование;
КонецЕсли;
Для Каждого ЭлементСписка Из ФлажкиОбластиОтображения Цикл
ИмяФлажка = ЭлементСписка.Значение;
Если ЭтотОбъект[ИмяФлажка] Тогда
ЭлементОформления[ИмяФлажка] = ИспользованиеУсловногоОформленияКомпоновкиДанных.Использовать;
Иначе
ЭлементОформления[ИмяФлажка] = ИспользованиеУсловногоОформленияКомпоновкиДанных.НеИспользовать;
КонецЕсли;
КонецЦикла;
УточнитьСоставОформляемыхПолей(ЭлементОформления);
ЭлементОформления.Использование = Использование;
ОписаниеФормул = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(НастройкиОтчета, "ОписаниеФормул", Новый Массив);
Результат = Новый Структура();
Результат.Вставить("ЭлементКД", ЭлементОформления);
Результат.Вставить("Наименование", Наименование);
Результат.Вставить("ОписаниеФормул", ОписаниеФормул);
ОповеститьОВыборе(Результат);
Закрыть(Результат);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСписокВыбораОформляемыхПолей(ЭлементОформления)
Список = Элементы.ОформляемоеПоле.СписокВыбора;
Оформление = Оформление(ЭтотОбъект);
ДоступныеПоля = Оформление.ДоступныеПоляПолей.Элементы;
Граница = Мин(19, ДоступныеПоля.Количество() - 1);
Для Индекс = 0 По Граница Цикл
ДоступноеПоле = ДоступныеПоля[Индекс];
Если Не ДоступноеПоле.Папка Тогда
КартинкаПоля = ВариантыОтчетовСлужебныйКлиентСервер.КартинкаПоля(ДоступноеПоле.ТипЗначения);
Список.Добавить(Строка(ДоступноеПоле.Поле), ДоступноеПоле.Заголовок,, КартинкаПоля);
КонецЕсли;
КонецЦикла;
ИспользуемыеПоля = ИспользуемыеОформляемыеПоля(ЭтотОбъект, ЭлементОформления);
Если ИспользуемыеПоля.Количество() > 0 Тогда
ИспользуемоеПоле = ИспользуемыеПоля[0].Поле;
ДоступноеПоле = Оформление.ДоступныеПоляПолей.НайтиПоле(ИспользуемоеПоле);
ДополнитьСписокВыбораОформляемыхПолей(ЭтотОбъект, ИспользуемоеПоле, ДоступноеПоле);
КонецЕсли;
ДобавитьДополнительноеПоле(Список);
КонецПроцедуры
&НаСервере
Процедура УстановитьВариантВыбораОформляемогоПоля(ЭлементОформления)
ИспользуемыеПоля = ИспользуемыеОформляемыеПоля(ЭтотОбъект, ЭлементОформления);
ВариантыВыбора = Элементы.ВариантВыбораОформляемыхПолей.СписокВыбора;
Если ИспользуемыеПоля.Количество() = 0 Тогда
ВариантВыбораОформляемыхПолей = ВариантыВыбора[0].Значение;
ИначеЕсли ИспользуемыеПоля.Количество() = 1 Тогда
ВариантВыбораОформляемыхПолей = ВариантыВыбора[1].Значение;
Иначе
ВариантВыбораОформляемыхПолей = ВариантыВыбора[2].Значение;
КонецЕсли;
ПрименитьВариантВыбораОформляемогоПоля(ЭтотОбъект, ЭлементОформления, ИспользуемыеПоля);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ИспользуемыеОформляемыеПоля(Форма, ЭлементОформления = Неопределено)
Если ЭлементОформления = Неопределено Тогда
ЭлементОформления = ЭлементОформления(Форма.КомпоновщикНастроек.Настройки);
КонецЕсли;
ИспользуемыеПоля = Новый Массив;
ОформляемыеПоля = ЭлементОформления.Поля.Элементы;
Для Каждого ОформляемоеПоле Из ОформляемыеПоля Цикл
Если ОформляемоеПоле.Использование Тогда
ИспользуемыеПоля.Добавить(ОформляемоеПоле);
КонецЕсли;
КонецЦикла;
Возврат ИспользуемыеПоля;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Процедура ПрименитьВариантВыбораОформляемогоПоля(Форма, ЭлементОформления = Неопределено, ИспользуемыеПоля = Неопределено)
Если ЭлементОформления = Неопределено Тогда
ЭлементОформления = ЭлементОформления(Форма.КомпоновщикНастроек.Настройки);
КонецЕсли;
Если ИспользуемыеПоля = Неопределено Тогда
ИспользуемыеПоля = ИспользуемыеОформляемыеПоля(Форма, ЭлементОформления);
КонецЕсли;
ЭлементыФормы = Форма.Элементы;
Вариант = Форма.ВариантВыбораОформляемыхПолей;
Варианты = ЭлементыФормы.ВариантВыбораОформляемыхПолей.СписокВыбора;
Если Вариант = Варианты[0].Значение Тогда
ЭлементыФормы.ОформляемыеПоляСтраницы.ТекущаяСтраница = ЭлементыФормы.СтраницаОформляемоеПоле;
ЭлементыФормы.ОформляемыеПоля.Видимость = Ложь;
Форма.ОформляемоеПоле = Неопределено;
ЭлементыФормы.ОформляемоеПоле.ТолькоПросмотр = Истина;
ИначеЕсли Вариант = Варианты[1].Значение Тогда
ЭлементыФормы.ОформляемыеПоляСтраницы.ТекущаяСтраница = ЭлементыФормы.СтраницаОформляемоеПоле;
ЭлементыФормы.ОформляемыеПоля.Видимость = Ложь;
Форма.ОформляемоеПоле = ?(ИспользуемыеПоля.Количество() = 0, Неопределено, ИспользуемыеПоля[0].Поле);
ЭлементыФормы.ОформляемоеПоле.ТолькоПросмотр = Ложь;
Иначе
ЭлементыФормы.ОформляемыеПоляСтраницы.ТекущаяСтраница = ЭлементыФормы.СтраницаКоманднаяПанель;
ЭлементыФормы.ОформляемыеПоля.Видимость = Истина;
Форма.ОформляемоеПоле = Неопределено;
ЭлементыФормы.ОформляемоеПоле.ТолькоПросмотр = Истина;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьОформляемоеПоле(Элемент, ВыбранноеЗначение, ИспользуемыеПоля)
Если ВыбранноеЗначение <> ДополнительноеПоле() Тогда
Возврат;
КонецЕсли;
Поле = ?(ИспользуемыеПоля.Количество() = 0, Неопределено, ИспользуемыеПоля[0].Поле);
ПараметрыВыбора = Новый Структура;
ПараметрыВыбора.Вставить("НастройкиОтчета", НастройкиОтчета);
ПараметрыВыбора.Вставить("КомпоновщикНастроек", КомпоновщикНастроек);
ПараметрыВыбора.Вставить("Режим", "ВыбранныеПоля");
ПараметрыВыбора.Вставить("ПолеКД", Поле);
ПараметрыВыбора.Вставить("ИдентификаторЭлементаСтруктурыНастроек", ИдентификаторЭлементаСтруктурыНастроек);
ОткрытьФорму("ХранилищеНастроек.ХранилищеВариантовОтчетов.Форма.ВыборПоляОтчета",
ПараметрыВыбора, Элемент, УникальныйИдентификатор);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ДополнитьСписокВыбораОформляемыхПолей(Форма, Поле, ДоступноеПоле)
ПолеСтрокой = Строка(Поле);
Список = Форма.Элементы.ОформляемоеПоле.СписокВыбора;
НайденноеПоле = Список.НайтиПоЗначению(ПолеСтрокой);
Если НайденноеПоле = Неопределено Тогда
ТипЗначенияПоля = Неопределено;
ЗаголовокПоля = ПолеСтрокой;
Если ДоступноеПоле <> Неопределено Тогда
ТипЗначенияПоля = ДоступноеПоле.ТипЗначения;
ЗаголовокПоля = ДоступноеПоле.Заголовок;
КонецЕсли;
КартинкаПоля = ВариантыОтчетовСлужебныйКлиентСервер.КартинкаПоля(ТипЗначенияПоля);
Список.Добавить(ПолеСтрокой, ЗаголовокПоля,, КартинкаПоля);
ИначеЕсли ДоступноеПоле <> Неопределено Тогда
НайденноеПоле.Представление = ДоступноеПоле.Заголовок;
КонецЕсли;
ДополнительноеПоле = Список.НайтиПоЗначению(ДополнительноеПоле());
Если ДополнительноеПоле <> Неопределено Тогда
Список.Удалить(ДополнительноеПоле);
КонецЕсли;
ДобавитьДополнительноеПоле(Список);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьДополнительноеПоле(Список)
Если Список.НайтиПоЗначению(ДополнительноеПоле()) <> Неопределено Тогда
Возврат;
КонецЕсли;
Список.СортироватьПоПредставлению();
Список.Добавить(ДополнительноеПоле(), НСтр("ru = 'Еще...'"),, БиблиотекаКартинок.Пустая);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ДополнительноеПоле()
Возврат "Еще";
КонецФункции
&НаКлиенте
Процедура УточнитьСоставОформляемыхПолей(ЭлементОформления)
Варианты = Элементы.ВариантВыбораОформляемыхПолей.СписокВыбора;
Если ВариантВыбораОформляемыхПолей = Варианты[2].Значение Тогда
Возврат;
КонецЕсли;
НачальныйИндекс = 1;
Если ВариантВыбораОформляемыхПолей = Варианты[0].Значение Тогда
НачальныйИндекс = 0;
КонецЕсли;
ИспользуемыеПоля = ИспользуемыеОформляемыеПоля(ЭтотОбъект, ЭлементОформления);
Поля = ЭлементОформления.Поля.Элементы;
Для Индекс = НачальныйИндекс По ИспользуемыеПоля.ВГраница() Цикл
Поля.Удалить(ИспользуемыеПоля[Индекс]);
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ИзменитьПоле(Элемент, Отказ, ЭтоДобавление = Истина)
Отказ = Истина;
ТекущаяЗаписьКоллекцииОформления = ТекущаяЗаписьКоллекцииОформления(Элемент, ЭтоДобавление);
ПараметрыВыбора = Новый Структура;
ПараметрыВыбора.Вставить("НастройкиОтчета", НастройкиОтчета);
ПараметрыВыбора.Вставить("КомпоновщикНастроек", КомпоновщикНастроек);
ПараметрыВыбора.Вставить("Режим", РежимВыбораПоля(Элемент));
ПараметрыВыбора.Вставить("ПолеКД", ТекущееПоле(ТекущаяЗаписьКоллекцииОформления));
ПараметрыВыбора.Вставить("ИдентификаторЭлементаСтруктурыНастроек", ИдентификаторЭлементаСтруктурыНастроек);
ДополнительныеПараметры = Новый Структура("Элемент, ТекущаяЗаписьКоллекцииОформления", Элемент, ТекущаяЗаписьКоллекцииОформления);
Обработчик = Новый ОписаниеОповещения("ПослеВыбораПоля", ЭтотОбъект, ДополнительныеПараметры);
ОткрытьФорму("ХранилищеНастроек.ХранилищеВариантовОтчетов.Форма.ВыборПоляОтчета",
ПараметрыВыбора, ЭтотОбъект, УникальныйИдентификатор,,, Обработчик);
КонецПроцедуры
// Параметры:
// ВыбранноеЗначение - ПользовательскоеПолеВыражениеКомпоновкиДанных
// - ДоступноеПолеКомпоновкиДанных
// - ДоступноеПолеОтбораКомпоновкиДанных
// ДополнительныеПараметры - Структура:
// * Элемент - ТаблицаФормы
// * ТекущаяЗаписьКоллекцииОформления - ЭлементОтбораКомпоновкиДанных
// - ОформляемоеПолеКомпоновкиДанных
// - Неопределено
//
&НаКлиенте
Процедура ПослеВыбораПоля(ВыбранноеЗначение, ДополнительныеПараметры) Экспорт
Если ВыбранноеЗначение = Неопределено Тогда
Возврат;
КонецЕсли;
ДоступныеПоля = ДоступныеПоля(ДополнительныеПараметры.Элемент);
Если ТипЗнч(ВыбранноеЗначение) = Тип("ПользовательскоеПолеВыражениеКомпоновкиДанных") Тогда
ОбновитьСоставОписанияФормул(ВыбранноеЗначение);
ВариантыОтчетовСлужебныйКлиент.ДобавитьФормулу(КомпоновщикНастроек.Настройки, ДоступныеПоля, ВыбранноеЗначение);
КонецЕсли;
Если ДоступныеПоля.НайтиПоле(ВыбранноеЗначение.Поле) = Неопределено Тогда
Возврат;
КонецЕсли;
ТекущаяЗаписьКоллекцииОформления = ДополнительныеПараметры.ТекущаяЗаписьКоллекцииОформления;
Если ДополнительныеПараметры.Элемент = Элементы.ОформляемыеПоля Тогда
ОбновитьПолеОформления(КомпоновщикНастроек.Настройки, ТекущаяЗаписьКоллекцииОформления, ВыбранноеЗначение.Поле);
Иначе
ОбновитьПолеУсловияОформления(КомпоновщикНастроек.Настройки, ТекущаяЗаписьКоллекцииОформления, ВыбранноеЗначение.Поле);
КонецЕсли;
ОбновитьНаименованиеПоУмолчанию();
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьПолеОформления(Настройки, ТекущееПоле, ВыбранноеПоле)
ЭлементОформления = ЭлементОформления(Настройки);
Если ТекущееПоле = Неопределено Тогда
ПолеОформления = НайденноеПолеОформления(Настройки, ВыбранноеПоле);
Если ПолеОформления = Неопределено Тогда
ПолеОформления = ЭлементОформления.Поля.Элементы.Добавить();
КонецЕсли;
Иначе
ПолеОформления = ТекущееПоле;
КонецЕсли;
ПолеОформления.Поле = ВыбранноеПоле;
ПолеОформления.Использование = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьПолеУсловияОформления(Настройки, ТекущееУсловие, ВыбранноеПоле)
ЭлементОформления = ЭлементОформления(Настройки);
Если ТекущееУсловие = Неопределено Тогда
Условие = НайденноеУсловиеОформления(Настройки, ВыбранноеПоле);
Если Условие = Неопределено Тогда
Условие = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
Элементы.Отбор.Развернуть(Элементы.Отбор.ТекущаяСтрока, Истина);
КонецЕсли;
Иначе
Условие = ТекущееУсловие;
КонецЕсли;
Условие.ЛевоеЗначение = ВыбранноеПоле;
Условие.Использование = Истина;
КонецПроцедуры
&НаКлиенте
Функция НайденноеУсловиеОформления(Настройки, ИскомоеПоле, Условия = Неопределено, НайденноеУсловие = Неопределено)
Если Условия = Неопределено Тогда
ЭлементОформления = ЭлементОформления(Настройки);
Условия = ЭлементОформления.Отбор;
КонецЕсли;
Для Каждого Элемент Из Условия.Элементы Цикл
Если ТипЗнч(Элемент) = Тип("ГруппаЭлементовОтбораКомпоновкиДанных") Тогда
НайденноеУсловиеОформления(Настройки, ИскомоеПоле, Элемент, НайденноеУсловие);
ИначеЕсли Элемент.ЛевоеЗначение = ИскомоеПоле Тогда
НайденноеУсловие = Элемент;
Прервать;
КонецЕсли;
КонецЦикла;
Возврат НайденноеУсловие;
КонецФункции
&НаКлиенте
Функция ТекущаяЗаписьКоллекцииОформления(Элемент, ЭтоДобавление)
Если ЭтоДобавление Тогда
Возврат Неопределено;
КонецЕсли;
Строка = Элемент.ТекущиеДанные;
Если Строка = Неопределено Тогда
Возврат Неопределено;
КонецЕсли;
Если Элемент = Элементы.ОформляемыеПоля Тогда
Возврат НайденноеПолеОформления(КомпоновщикНастроек.Настройки, Строка.Поле);
КонецЕсли;
Возврат НайденноеУсловиеОформления(КомпоновщикНастроек.Настройки, Строка.ЛевоеЗначение);
КонецФункции
&НаКлиенте
Функция ТекущееПоле(ТекущаяЗаписьКоллекцииОформления)
Если ТипЗнч(ТекущаяЗаписьКоллекцииОформления) = Тип("ОформляемоеПолеКомпоновкиДанных") Тогда
Возврат ТекущаяЗаписьКоллекцииОформления.Поле;
ИначеЕсли ТипЗнч(ТекущаяЗаписьКоллекцииОформления) = Тип("ЭлементОтбораКомпоновкиДанных") Тогда
Возврат ТекущаяЗаписьКоллекцииОформления.ЛевоеЗначение;
КонецЕсли;
Возврат Неопределено;
КонецФункции
&НаКлиенте
Функция РежимВыбораПоля(Элемент)
Если Элемент = Элементы.ОформляемыеПоля Тогда
Возврат "ПоляОформления";
КонецЕсли;
Возврат "УсловияОформления";
КонецФункции
&НаКлиенте
Функция ДоступныеПоля(Элемент)
Оформление = Оформление(ЭтотОбъект);
Если Элемент = Элементы.ОформляемыеПоля Тогда
Возврат Оформление.ДоступныеПоляПолей;
КонецЕсли;
Возврат Оформление.ДоступныеПоляОтбора;
КонецФункции
&НаКлиенте
Процедура ОбновитьСоставОписанияФормул(ОписаниеФормулы)
ОписаниеФормул = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(НастройкиОтчета, "ОписаниеФормул", Новый Массив);
Если ОписаниеФормул.Найти(ОписаниеФормулы) = Неопределено Тогда
ОписаниеФормул.Добавить(ОписаниеФормулы);
КонецЕсли;
НастройкиОтчета.Вставить("ОписаниеФормул", ОписаниеФормул);
КонецПроцедуры
#КонецОбласти
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<Help xmlns="http://v8.1c.ru/8.3/xcf/extrnprops" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.20">
<Page>ru</Page>
</Help>
@@ -0,0 +1,53 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html;charset=utf-8" http-equiv="content-type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 11.00.10570.1001"></meta></head><body>
<p>Открывается с помощью кнопки <strong>Добавить</strong> из вкладки <strong>Оформление</strong> <a href="CommonForm.ФормаНастроекОтчета/Help">настроек</a> варианта отчета или из контекстного меню по правой кнопки мыши по команде <b>Оформить - Еще</b>.</p>
<p>Для подтверждения настроек условного оформления нажмите кнопку <strong>ОК</strong>.</p>
<ul><li>С помощью переключателя выберите, где будет применяться условное оформление (если заполнить значения, то оформление выбранных здесь полей будет зависеть от значения другого поля, указанного в условии ниже):</li>
<ul><li><b>Всей строки</b>;</li>
<li><b>Поля</b> - из списка выберите поле, которое будет оформляться;</li>
<li><b>Полей</b> - с помощью кнопки <img src="StdPicture.CreateListItem"></img> добавьте в список поля, которые будут оформляться.</li>
<ul><li>при переходе из контекстного меню по правой кнопки мыши указываются поля, выбранные в отчете.</li></ul></ul></ul><ul><li>С помощью флажков можно включать или выключать различные параметры оформления.
</li>
<li>Параметры оформления можно менять с помощью инструментов форматирования, например, параметр <strong>Цвет фона</strong> можно изменить с помощью кнопки <img src="StdPicture.InputFieldSelect"></img>, открыв палитру цветов и выбрав нужный цвет вместо черного, который проставлен по умолчанию.</li></ul><h3>Условие</h3>
<ul><li>
<div>В разделе можно задать отбор, при котором данное условное оформление будет применяться. С помощью флажков можно включать или отключать отдельные отборы, менять их порядок.</div>
</li>
<li>С помощью кнопки <img src="StdPicture.CreateListItem"></img> можно добавить отбор.
</li>
<li>Для изменения настроек отборов отчета применяется таблица, состоящая из колонок: </li></ul><ul><li><strong>Поле</strong> - перечисление полей, по которым производится отбор (при переходе из контекстного меню по правой кнопки мыши указываются поля, выбранные в отчете);
</li>
<li><strong>Условие</strong> - выбор операции для отбора по каждому полю;
</li>
<li>Операции <strong>Равно</strong>, <strong>Не равно</strong>, <strong>В группе</strong>, <strong>Не в группе</strong> предполагают выбор одного значения (единичный отбор).
</li>
<li>Операции <strong>В списке</strong>, <strong>В группе из списка</strong>, <strong>Не в списке</strong>, <strong>Не в группе из списка</strong> предполагают выбор нескольких значений (множественный отбор).
</li>
<li>Для операций <strong>Заполнено</strong> и <strong>Не заполнено</strong> не требуется выбор значения.</li></ul><ul><li><strong>Значение</strong> - можно указать одно или несколько значений каждого поля для отбора в зависимости от операции.
<ul><li>Для ввода значения можно дважды щелкнуть мышью по полю. </li>
<li>Введите значение параметра с помощью кнопки <img src="StdPicture.InputFieldSelect"></img><strong>Выбрать</strong>. Включите флажки рядом с параметрами, по которым необходимо произвести отбор. Можно задействовать все параметры для отбора или часть, включая или выключая флажки.
</li>
<li>Для выбора нескольких значений предусмотрена кнопка <strong>Подбор</strong>. Откройте список, выберите несколько значений из списка. Включите флажки рядом с нужными для отбора параметрами. Введите значения параметров для отбора или выберите из списка.</li></ul></li></ul><h3>Заголовок</h3>
<div>Введите заголовок элемента условного оформления.</div>
<h3>Дополнительно</h3>
<p>Откройте раздел с помощью ссылки <b>Еще</b>, с помощью флажков укажите, где <strong>Показывать</strong> условное оформление:</p>
<ul><li>
<div>В группировке;</div>
</li>
<li>
<div>В иерархической группировке;</div>
</li>
<li>
<div>В общем итоге;</div>
</li>
<li>
<div>В заголовке полей;</div>
</li>
<li>
<div>В заголовке;</div>
</li>
<li>
<div>В параметрах;</div>
</li>
<li>
<div>В отборах.</div></li></ul><h3>См. также:</h3>
<ul><li>
<div><a href="CommonForm.ФормаОтчета/Help">Работа с отчетами</a>.</div></li></ul></body></html>