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