#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область СлужебныйПрограммныйИнтерфейс
Процедура ОпределитьНастройкиФормы(Форма, КлючВарианта, Настройки) Экспорт
Настройки.События.ПриСозданииНаСервере = Истина;
Настройки.События.ПередЗагрузкойВариантаНаСервере = Истина;
Настройки.События.ПриЗагрузкеВариантаНаСервере = Истина;
КонецПроцедуры
Процедура ПередЗагрузкойВариантаНаСервере(ЭтаФорма, НовыеНастройкиКД) Экспорт
Отчет = ЭтаФорма.Отчет;
КомпоновщикНастроекФормы = Отчет.КомпоновщикНастроек;
Если Не КомпоновщикНастроекФормы.Настройки.ДополнительныеСвойства.Свойство("КлючТекущегоВарианта") Тогда
КомпоновщикНастроекФормы.Настройки.ДополнительныеСвойства.Вставить("КлючТекущегоВарианта", ЭтаФорма.КлючТекущегоВарианта);
КонецЕсли;
НовыеНастройкиКД = КомпоновщикНастроекФормы.Настройки;
КонецПроцедуры
Процедура ПриЗагрузкеВариантаНаСервере(ЭтаФорма, НовыеНастройкиКД) Экспорт
Если ЭтаФорма.КлючТекущегоВарианта = "Расшифровка" Тогда
КомпоновщикНастроекФормы = ЭтаФорма.Отчет.КомпоновщикНастроек;
ФиксированныеНастройки = КомпоновщикНастроекФормы.ФиксированныеНастройки;
ИсточникДобавления = ФиксированныеНастройки.Структура;
МестоДобавления = КомпоновщикНастроекФормы.Настройки.Структура;
МестоДобавления.Очистить();
Пока ИсточникДобавления.Количество() Цикл
Группировка = ИсточникДобавления[0];
НоваяГруппировка = ФинансоваяОтчетностьСервер.НоваяГруппировка(МестоДобавления, Группировка.Имя,, Ложь);
Для каждого ПолеГруппировки Из Группировка.ПоляГруппировки.Элементы Цикл
ФинансоваяОтчетностьСервер.НовоеПолеГруппировки(
НоваяГруппировка,
Строка(ПолеГруппировки.Поле),
ПолеГруппировки.ТипГруппировки);
КонецЦикла;
МестоДобавления = НоваяГруппировка.Структура;
ИсточникДобавления = Группировка.Структура;
КонецЦикла;
Если ФиксированныеНастройки.Выбор.Элементы.Количество() > 0 Тогда
КомпоновкаДанныхКлиентСервер.СкопироватьЭлементы(КомпоновщикНастроекФормы.Настройки.Выбор, ФиксированныеНастройки.Выбор, Истина);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытий
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
Перем КоличествоДокументов;
СтандартнаяОбработка = Ложь;
ПользовательскиеНастройкиМодифицированы = Ложь;
УстановитьОбязательныеНастройки(ПользовательскиеНастройкиМодифицированы);
ВнешниеНаборы = НаборыДанных();
БюджетированиеСервер.ДополнитьСКДАналитикойПоВиду(СхемаКомпоновкиДанных, "СтатьяБюджетов");
БюджетированиеСервер.ДополнитьСКДВыражениямиПредставленияАналитики(СхемаКомпоновкиДанных,
"НаборыДанных.АналитикаОборотов.Поля",
"СтатьяБюджетов");
#Область ЗапускФоновогоОтраженияДокументовВБюджетировании
Период = БюджетированиеКлиентСервер.ЗначениеНастройкиСКД(КомпоновщикНастроек, "Период");
НачалоПериода = Период.ДатаНачала;
КонецПериода = Период.ДатаОкончания;
ДопСвойства = КомпоновщикНастроек.ПользовательскиеНастройки.ДополнительныеСвойства;
Если ДопСвойства.Свойство("КоличествоДокументовКОтражениюВБюджетировании") Тогда
ДопСвойства.Удалить("КоличествоДокументовКОтражениюВБюджетировании");
ПользовательскиеНастройкиМодифицированы = Истина;
КонецЕсли;
ЗапускатьФоновоеЗадание = Ложь;
Если РегистрыСведений.ЗаданияКОтражениюВБюджетировании.ТребуетсяОтражениеВБюджетированииДляОтчетаЗаПериод(
НачалоПериода, КонецПериода, КоличествоДокументов, ЗапускатьФоновоеЗадание) Тогда
Если ЗапускатьФоновоеЗадание Тогда
ФактическиеДанныеБюджетированияСервер.ОтразитьДокументыФоновымЗаданием(НачалоПериода, КонецПериода);
КонецЕсли;
ДопСвойства.Вставить("КоличествоДокументовКОтражениюВБюджетировании", КоличествоДокументов);
ДопСвойства.Вставить("НачалоПериода", НачалоПериода);
ДопСвойства.Вставить("КонецПериода", КонецПериода);
ДополнитьПараметрыПроверкиОтраженияДокументов(ДопСвойства, КомпоновщикНастроек);
КонецЕсли;
#КонецОбласти
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,
КомпоновщикНастроек.ПолучитьНастройки(),
ДанныеРасшифровки);
СкорректироватьСвязиНаборовДанныхМакетаКомпоновки(МакетКомпоновки);
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешниеНаборы, ДанныеРасшифровки, Истина);
ПроцессорВыводаВТабличныйДокумент = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВыводаВТабличныйДокумент.УстановитьДокумент(ДокументРезультат);
ПроцессорВыводаВТабличныйДокумент.Вывести(ПроцессорКомпоновкиДанных);
ФактическиеДанныеБюджетированияСервер.ВывестиАктуальностьОтраженияФактическихДанных(ДокументРезультат, ДопСвойства,
ЗапускатьФоновоеЗадание);
Если ПользовательскиеНастройкиМодифицированы Тогда
КомпоновщикНастроек.ПользовательскиеНастройки.ДополнительныеСвойства.Вставить("ПользовательскиеНастройкиМодифицированы", Истина);
КонецЕсли;
ОтчетПустой = ОтчетыСервер.ОтчетПустой(ЭтотОбъект, ПроцессорКомпоновкиДанных);
КомпоновщикНастроек.ПользовательскиеНастройки.ДополнительныеСвойства.Вставить("ОтчетПустой", ОтчетПустой);
КонецПроцедуры
Процедура СкорректироватьСвязиНаборовДанныхМакетаКомпоновки(МакетКомпоновки)
Для каждого СвязьНаборовДанных Из МакетКомпоновки.СвязиНаборовДанных Цикл
Если СвязьНаборовДанных.НаборДанныхИсточник = "АналитикаОборотов"
И СвязьНаборовДанных.НаборДанныхПриемник = "СтатьиБюджетов" Тогда
СвязьНаборовДанных.ТипСвязи = ТипСвязиНаборовДанныхКомпоновкиДанных.Внутренняя;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#Область ПолучениеДанныхОтчета
Функция НаборыДанных()
НастройкиОтчета = КомпоновщикНастроек.ПолучитьНастройки();
ПараметрыПолученияФакта = ПараметрыПолученияФактаПоНастройкамОтчета(НастройкиОтчета);
НаборыДанных = Новый Структура;
НаборыДанных.Вставить("ОборотыПлан", ОборотыПлан(НастройкиОтчета));
ОборотыФакт = ОборотыФакт(НастройкиОтчета, ПараметрыПолученияФакта);
НаборыДанных.Вставить("ОборотыФакт", ОборотыФакт);
СтруктураОтбора = Новый Структура("Сценарий", Справочники.Сценарии.ФактическиеДанные);
НаборыДанных.Вставить("ОборотыТолькоФакт", ОборотыФакт.Скопировать(СтруктураОтбора));
Возврат НаборыДанных;
КонецФункции
Функция ОборотыПлан(НастройкиОтчета)
СхемаКомпоновкиПлана = Отчеты.ОборотнаяВедомостьБюджетирования.ПолучитьМакет("ОборотыПлан");
Настройки = СхемаКомпоновкиПлана.НастройкиПоУмолчанию;
БюджетированиеСервер.ДополнитьСКДАналитикойПоВиду(СхемаКомпоновкиПлана, "СтатьяБюджетов");
Набор = СхемаКомпоновкиПлана.НаборыДанных.План;
ПараметрыВыражения = БюджетированиеСервер.ШаблонПараметровПоляАналитикиСУсловиемПоКоличествуВидовАналитики();
ПараметрыВыражения.ВыражениеКоличествоИспользуемыхАналитик = "ОборотыБюджетов.СтатьяБюджетов.КоличествоИспользуемыхАналитик";
ПараметрыВыражения.ВыражениеЗначенияАналитикиБезИндекса = "ОборотыБюджетов.Аналитика";
МаксимальноеКоличествоАналитик = БюджетированиеКлиентСервер.МаксимальноеКоличествоАналитик();
Для НомерАналитики = 1 По МаксимальноеКоличествоАналитик Цикл
Набор.Запрос = СтрЗаменить(Набор.Запрос, "&ВыражениеАналитика" + НомерАналитики,
БюджетированиеСервер.ТекстПоляАналитикиСУсловиемПоКоличествуВидовАналитики(ПараметрыВыражения, НомерАналитики));
КонецЦикла;
КомпоновкаДанныхКлиентСервер.ЗаполнитьЭлементы(Настройки.ПараметрыДанных, НастройкиОтчета.ПараметрыДанных);
КомпоновкаДанныхКлиентСервер.СкопироватьОтборКомпоновкиДанных(СхемаКомпоновкиПлана, Настройки, НастройкиОтчета);
Группировка = Настройки.Структура[0];
Если КомпоновкаДанныхКлиентСервер.ПолеИспользуется(НастройкиОтчета, "Регистратор", Истина) Тогда
ФинансоваяОтчетностьСервер.НовоеПолеГруппировки(Группировка, "Регистратор");
КонецЕсли;
Для каждого Периодичность Из Перечисления.Периодичность.УпорядоченныеПериодичности() Цикл
Если НЕ ЗначениеЗаполнено(Периодичность) Тогда
ПолеПериод = "Период";
Иначе
ПолеПериод = ФинансоваяОтчетностьКлиентСервер.СтрокиПериода(Периодичность).Период;
КонецЕсли;
Если КомпоновкаДанныхКлиентСервер.ПолеИспользуется(НастройкиОтчета, ПолеПериод, Истина) Тогда
ФинансоваяОтчетностьСервер.НовоеПолеГруппировки(Группировка, ПолеПериод);
КонецЕсли;
КонецЦикла;
Если КомпоновкаДанныхКлиентСервер.ПолеИспользуется(НастройкиОтчета, "ДатаАктуальности", Истина) Тогда
ФинансоваяОтчетностьСервер.НовоеПолеГруппировки(Группировка, "ДатаАктуальности");
КонецЕсли;
ВалютаОтчета = КомпоновкаДанныхКлиентСервер.ПолучитьПараметр(НастройкиОтчета, "Валюта").Значение;
ФункциональнаяВалюта = КомпоновкаДанныхКлиентСервер.ПолучитьПараметр(НастройкиОтчета, "ФункциональнаяВалюта").Значение;
Если ФункциональнаяВалюта = Перечисления.ВидыУчетаВФункциональнойВалюте.ВВалютеУпр Тогда
Если ВалютаОтчета = Константы.ВалютаУправленческогоУчета.Получить() Тогда
ВыражениеСуммы = "СуммаУпр";
Иначе
ВыражениеСуммы = "
|ВЫБОР
| КОГДА Валюта = &Валюта ТОГДА
| СуммаВВалюте
| ИНАЧЕ
| СуммаУпр * ОтносительныйКурсУпрУчет / ОтносительныйКурсБазоваяВалютаСценарияУпрУчет * ЕСТЬNULL(ПрогнозныйКурс, 1)
|КОНЕЦ
|";
КонецЕсли;
ИначеЕсли ФункциональнаяВалюта = Перечисления.ВидыУчетаВФункциональнойВалюте.ВВалютеРегл Тогда
ВыражениеСуммы = "
|ВЫБОР
| КОГДА ВалютаРегламентированногоУчета = &Валюта ТОГДА
| СуммаРегл
| ИНАЧЕ
| ВЫБОР
| КОГДА Валюта = &Валюта ТОГДА
| СуммаВВалюте
| ИНАЧЕ
| СуммаРегл / ОтносительныйКурсБазоваяВалютаСценарияРеглУчет * ЕСТЬNULL(ПрогнозныйКурс, 1)
| КОНЕЦ
|КОНЕЦ
|";
Иначе
ВыражениеСуммы = "0";
КонецЕсли;
Ресурсы = Новый Структура;
Ресурсы.Вставить("СуммаПлан", ВыражениеСуммы);
Ресурсы.Вставить("КоличествоПлан", "Количество");
Для каждого Ресурс Из Ресурсы Цикл
ФинансоваяОтчетностьСервер.НовыйВычисляемыйРесурс(СхемаКомпоновкиПлана, Ресурс.Ключ, Ресурс.Значение, "Сумма");
ФинансоваяОтчетностьСервер.НовоеПолеВыбора(Настройки, Ресурс.Ключ);
КонецЦикла;
План = ФинансоваяОтчетностьСервер.ВыгрузитьРезультатСКД(СхемаКомпоновкиПлана, Настройки);
Возврат План;
КонецФункции
Функция ОборотыФакт(НастройкиОтчета, ПараметрыПолученияФакта)
НеобходимостьПолученияФакта = Истина;
Если НастройкиОтчета.ДополнительныеСвойства.Свойство("КлючВарианта")
И НастройкиОтчета.ДополнительныеСвойства.КлючВарианта = "Расшифровка" Тогда
НеобходимостьПолученияФакта = НаличиеВНастройкахОтчетаСценарияФактическихДанных(НастройкиОтчета);
КонецЕсли;
Если НЕ НеобходимостьПолученияФакта Тогда
ФактПоСтатьямБюджетов = Новый ТаблицаЗначений;
НаборДанныхФакт = СхемаКомпоновкиДанных.НаборыДанных.ОборотыФакт;
Для каждого ПолеКомпоновки Из НаборДанныхФакт.Поля Цикл
ФактПоСтатьямБюджетов.Колонки.Добавить(Строка(ПолеКомпоновки.Поле), ПолеКомпоновки.ТипЗначения);
КонецЦикла;
Если ФактПоСтатьямБюджетов.Колонки.Найти("Сценарий") = Неопределено Тогда
ФактПоСтатьямБюджетов.Колонки.Добавить("Сценарий", Новый ОписаниеТипов("СправочникСсылка.Сценарии"));
КонецЕсли;
Иначе
КомпоновкаДанныхКлиентСервер.УдалитьОтбор(НастройкиОтчета.Отбор, "Сценарий");
ФактПоСтатьямБюджетов = БюджетированиеСервер.ФактПоСтатьямБюджетов(НастройкиОтчета, ПараметрыПолученияФакта);
Если ЗначениеЗаполнено(ПараметрыПолученияФакта.Периодичность) Тогда
ФактПоСтатьямБюджетов.Колонки["Период"].Имя = ФинансоваяОтчетностьКлиентСервер.СтрокиПериода(ПараметрыПолученияФакта.Периодичность).Период;
КонецЕсли;
Если ПараметрыПолученияФакта.ЕстьПериодичностьСекунда Тогда
ФактПоСтатьямБюджетов.Колонки["ПериодСекунда"].Имя = "ДатаАктуальности";
КонецЕсли;
НаборДанныхФакт = СхемаКомпоновкиДанных.НаборыДанных.ОборотыФакт;
Для каждого ПолеНабораДанных Из НаборДанныхФакт.Поля Цикл
Если ФактПоСтатьямБюджетов.Колонки.Найти(ПолеНабораДанных.Поле) <> Неопределено Тогда
Продолжить;
КонецЕсли;
ФактПоСтатьямБюджетов.Колонки.Добавить(ПолеНабораДанных.Поле, ПолеНабораДанных.ТипЗначения);
КонецЦикла;
КонецЕсли;
Возврат ФактПоСтатьямБюджетов;
КонецФункции
#КонецОбласти
#Область Прочее
Процедура ДополнитьПараметрыПроверкиОтраженияДокументов(ДопСвойства, КомпоновщикНастроек)
ИмяПоляКомпоновки = "СтатьяБюджетов";
ЭлементыОтбора = Новый Массив;
БюджетнаяОтчетностьРасчетКэшаСервер.НайтиОтборПоИмени(КомпоновщикНастроек.ПолучитьНастройки(), ИмяПоляКомпоновки, ЭлементыОтбора);
Если ЭлементыОтбора.Количество() = 1 Тогда
ЭлементОтбора = ЭлементыОтбора[0];
Если ЭлементОтбора.Использование
И ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно
И ЭлементОтбора.Родитель = Неопределено Тогда
ДопСвойства.Вставить("ПроверкаХранимыхПравилСтатьяБюджетов", ЭлементОтбора.ПравоеЗначение);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Функция НаличиеВНастройкахОтчетаСценарияФактическихДанных(НастройкиОтчета)
СхемаСценарииОтчета = ФинансоваяОтчетностьСервер.НоваяСхема();
НаборДанныхСценарии = КомпоновкаДанныхСервер.ДобавитьПустойНаборДанных(СхемаСценарииОтчета,
Тип("НаборДанныхЗапросСхемыКомпоновкиДанных"),
"Сценарии");
НаборДанныхСценарии.Запрос =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| Сценарии.Ссылка КАК Сценарий
|ИЗ
| Справочник.Сценарии КАК Сценарии
|ГДЕ
| Сценарии.Ссылка В (ЗНАЧЕНИЕ(Справочник.Сценарии.ФактическиеДанные), ЗНАЧЕНИЕ(Справочник.Сценарии.ИсполнениеБюджета))";
ФинансоваяОтчетностьСервер.НовоеПолеНабора(НаборДанныхСценарии, "Сценарий", "Сценарий",, Новый ОписаниеТипов("СправочникСсылка.Сценарии"));
НастройкиСценарии = Новый НастройкиКомпоновкиДанных;
КомпоновкаДанныхКлиентСервер.ДобавитьГруппировку(НастройкиСценарии);
КомпоновкаДанныхКлиентСервер.ДобавитьВыбранноеПоле(НастройкиСценарии, "Сценарий");
КомпоновкаДанныхКлиентСервер.СкопироватьОтборКомпоновкиДанных(СхемаСценарииОтчета, НастройкиСценарии, НастройкиОтчета);
Сценарии = ФинансоваяОтчетностьСервер.ВыгрузитьРезультатСКД(СхемаСценарииОтчета, НастройкиСценарии);
Возврат Сценарии.Количество() > 0;
КонецФункции
Функция ПараметрыПолученияФактаПоНастройкамОтчета(НастройкиОтчета)
Параметры = БюджетированиеСервер.ШаблонПараметровПолученияФакта();
Параметры.ВалютаОтчета = КомпоновкаДанныхКлиентСервер.ПолучитьПараметр(НастройкиОтчета, "Валюта").Значение;
Параметры.ФункциональнаяВалюта = КомпоновкаДанныхКлиентСервер.ПолучитьПараметр(НастройкиОтчета, "ФункциональнаяВалюта").Значение;
Параметры.Период = КомпоновкаДанныхКлиентСервер.ПолучитьПараметр(НастройкиОтчета, "Период").Значение;
Параметры.ПоОрганизациям = Истина;
Параметры.ПоПодразделениям = Истина;
Если КомпоновкаДанныхКлиентСервер.ПолеИспользуется(НастройкиОтчета, "Регистратор") Тогда
Параметры.ПоРегистратору = Истина;
КонецЕсли;
Периодичности = Новый Массив;
Для Каждого Периодичность Из Перечисления.Периодичность.УпорядоченныеПериодичности() Цикл
Если НЕ ЗначениеЗаполнено(Периодичность) Тогда
ПолеПериод = "Период";
Иначе
ПолеПериод = ФинансоваяОтчетностьКлиентСервер.СтрокиПериода(Периодичность).Период;
КонецЕсли;
Если КомпоновкаДанныхКлиентСервер.ПолеИспользуется(НастройкиОтчета, ПолеПериод) Тогда
Периодичности.Добавить(Периодичность);
КонецЕсли;
КонецЦикла;
Параметры.Периодичность = БюджетнаяОтчетностьКлиентСервер.МинимальнаяПериодичность(Периодичности);
ЕстьПериодичностьСекунда = КомпоновкаДанныхКлиентСервер.ПолеИспользуется(НастройкиОтчета,
"ДатаАктуальности",
Истина);
Параметры.Вставить("ЕстьПериодичностьСекунда", ЕстьПериодичностьСекунда);
Возврат Параметры;
КонецФункции
Процедура УстановитьОбязательныеНастройки(ПользовательскиеНастройкиМодифицированы)
ПараметрВалютаПользовательские = КомпоновкаДанныхКлиентСервер.ПолучитьПараметр(КомпоновщикНастроек, "Валюта");
ПараметрВалютаФиксированные = КомпоновкаДанныхКлиентСервер.ПолучитьПараметр(КомпоновщикНастроек.ФиксированныеНастройки, "Валюта");
ЕстьВалюта = ПараметрВалютаПользовательские <> Неопределено И ЗначениеЗаполнено(ПараметрВалютаПользовательские.Значение);
Если Не ЕстьВалюта Тогда
ЕстьВалюта = ПараметрВалютаФиксированные <> Неопределено И ЗначениеЗаполнено(ПараметрВалютаФиксированные.Значение);
КонецЕсли;
Если Не ЕстьВалюта Тогда
КомпоновкаДанныхКлиентСервер.УстановитьПараметр(
КомпоновщикНастроек, "Валюта", Константы.ВалютаУправленческогоУчета.Получить());
ПользовательскиеНастройкиМодифицированы = Истина;
Иначе
ИспользоватьНесколькоВалют = ПолучитьФункциональнуюОпцию("ИспользоватьНесколькоВалют");
Если НЕ ИспользоватьНесколькоВалют Тогда
ЗначениеВалюты = ?(ПараметрВалютаПользовательские = Неопределено, Неопределено, ПараметрВалютаПользовательские.Значение);
Если НЕ ЗначениеЗаполнено(ЗначениеВалюты) Тогда
ЗначениеВалюты = ?(ПараметрВалютаФиксированные = Неопределено, Неопределено, ПараметрВалютаФиксированные.Значение);
КонецЕсли;
ВалютаУпр = Константы.ВалютаУправленческогоУчета.Получить();
Если ЗначениеВалюты <> ВалютаУпр Тогда
КомпоновкаДанныхКлиентСервер.УстановитьПараметр(
КомпоновщикНастроек, "Валюта", ВалютаУпр);
ПользовательскиеНастройкиМодифицированы = Истина;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Процедура ПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка) Экспорт
Параметры = ЭтаФорма.Параметры;
Если Параметры.Свойство("ПараметрКоманды") Тогда
ЭтаФорма.ФормаПараметры.Отбор.Вставить("СтатьяБюджетов", Параметры.ПараметрКоманды);
КонецЕсли;
ИспользоватьНесколькоВалют = ПолучитьФункциональнуюОпцию("ИспользоватьНесколькоВалют");
Если НЕ ИспользоватьНесколькоВалют Тогда
ПараметрВалюта = СхемаКомпоновкиДанных.Параметры.Валюта;
ПараметрВалюта.ВключатьВДоступныеПоля = Ложь;
ПараметрВалюта.ОграничениеИспользования = Истина;
ОтчетыСервер.ПодключитьСхему(ЭтотОбъект, ЭтаФорма, СхемаКомпоновкиДанных, "");
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#КонецЕсли