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