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