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