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