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