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