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