Кассы / Форма элемента / Модуль формы

файл

#Область ОбработчикиСобытийФормы

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа.
		Возврат;
	КонецЕсли;
	
	ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(Объект, ЭтотОбъект);
	
	ЗапретРедактированияРеквизитовОбъектов.ЗаблокироватьРеквизиты(ЭтаФорма);
	
	Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
		ПриЧтенииСозданииНаСервере();
	КонецЕсли;
	
	// ИнтеграцияС1СДокументооборотом
	ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПриСозданииНаСервере(ЭтаФорма);
	// Конец ИнтеграцияС1СДокументооборотом
	
	// Обработчик механизма "Свойства"
	ДополнительныеПараметры = Новый Структура;
	ДополнительныеПараметры.Вставить("Объект", Объект);
	ДополнительныеПараметры.Вставить("ИмяЭлементаДляРазмещения", "ГруппаДополнительныеРеквизиты");
	УправлениеСвойствами.ПриСозданииНаСервере(ЭтаФорма, ДополнительныеПараметры);
	
	СобытияФорм.ПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка);
	
	// СтандартныеПодсистемы.ПодключаемыеКоманды
	ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
	// Конец СтандартныеПодсистемы.ПодключаемыеКоманды

	ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект);
	
КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	
	// СтандартныеПодсистемы.Свойства
	УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
	// Конец СтандартныеПодсистемы.Свойства
	
	// СтандартныеПодсистемы.ПодключаемыеКоманды
	ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
	// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
	
КонецПроцедуры

&НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)
	
	Если ТипЗнч(ВыбранноеЗначение) = Тип("СписокЗначений") Тогда
		
		Объект.ПолучателиПлатежейПриПеремещенииДС.Очистить();
		Для каждого ПолучательПлатежа Из ВыбранноеЗначение Цикл
			Если ПолучательПлатежа.Значение.Пустая() Тогда
				Продолжить;
			КонецЕсли;
			СтрокаПолучательПлатежа = Объект.ПолучателиПлатежейПриПеремещенииДС.Добавить();
			СтрокаПолучательПлатежа.ПолучательПлатежа = ПолучательПлатежа.Значение;
		КонецЦикла;
		
		УправлениеЭлементамиФормы();
	КонецЕсли;
	
КонецПроцедуры

&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
	
	// СтандартныеПодсистемы.УправлениеДоступом
	УправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
	// Конец СтандартныеПодсистемы.УправлениеДоступом
	
	// СтандартныеПодсистемы.ПодключаемыеКоманды
	ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
	// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
	
	ПриЧтенииСозданииНаСервере();
	
	УправлениеСвойствами.ПриЧтенииНаСервере(ЭтаФорма, ТекущийОбъект);
	
	МодификацияКонфигурацииПереопределяемый.ПриЧтенииНаСервере(ЭтаФорма, ТекущийОбъект);
	
КонецПроцедуры

&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
	
	Если ПустаяСтрока(Объект.Наименование) Тогда
		Объект.Наименование = СформироватьАвтоНаименование(ЭтотОбъект);
	КонецЕсли;
	
	Если Не РазрешитьПлатежиБезУказанияРаспоряжений Тогда
		Объект.ПолучателиПлатежейПриПеремещенииДС.Очистить();
	КонецЕсли;
	
	Если Объект.ОперационнаяКасса И Не ЗначениеЗаполнено(Объект.ФизическоеЛицо) Тогда
		ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
			НСтр("ru='Поле ""Физическое лицо"" не заполнено'"),,
			"ФизическоеЛицо",
			,
			Отказ);
	КонецЕсли;

КонецПроцедуры

&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
	
	Если Не РазрешитьПлатежиБезУказанияРаспоряжений Тогда
		Элементы.РедактироватьСписокКассПолучателей.Заголовок = ПолучитьСписокКассПолучателей();
	КонецЕсли;
	
	// СтандартныеПодсистемы.УправлениеДоступом
	УправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
	// Конец СтандартныеПодсистемы.УправлениеДоступом
	
	ЗапретРедактированияРеквизитовОбъектов.ЗаблокироватьРеквизиты(ЭтаФорма);
	
	МодификацияКонфигурацииПереопределяемый.ПослеЗаписиНаСервере(ЭтаФорма, ТекущийОбъект, ПараметрыЗаписи);
	
КонецПроцедуры

&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
	
	Оповестить("Запись_Кассы", ПараметрыЗаписи, Объект.Ссылка);
	
	МодификацияКонфигурацииКлиентПереопределяемый.ПослеЗаписи(ЭтаФорма, ПараметрыЗаписи);
	
	ПодключаемыеКомандыКлиент.ПослеЗаписи(ЭтотОбъект, Объект, ПараметрыЗаписи);
	
КонецПроцедуры

&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
	
	// Обработчик механизма "Свойства"
	УправлениеСвойствами.ПередЗаписьюНаСервере(ЭтаФорма, ТекущийОбъект);
	
	МодификацияКонфигурацииПереопределяемый.ПередЗаписьюНаСервере(ЭтаФорма, Отказ, ТекущийОбъект, ПараметрыЗаписи);
	
	// ИнтеграцияС1СДокументооборотом
	ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПередЗаписьюНаСервере(ЭтаФорма, ТекущийОбъект, ПараметрыЗаписи);
	// Конец ИнтеграцияС1СДокументооборотом
	
КонецПроцедуры

&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
	
	// Обработчик механизма "Свойства"
	Если УправлениеСвойствамиКлиент.ОбрабатыватьОповещения(ЭтаФорма, ИмяСобытия, Параметр) Тогда
		ОбновитьЭлементыДополнительныхРеквизитов();
		УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
	КонецЕсли;
	
	
КонецПроцедуры

&НаСервере
Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
	
	// СтандартныеПодсистемы.Свойства
	УправлениеСвойствами.ОбработкаПроверкиЗаполнения(ЭтаФорма, Отказ, ПроверяемыеРеквизиты);
	// Конец СтандартныеПодсистемы.Свойства
	
	
КонецПроцедуры

&НаСервере
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
	
	Если Отказ Тогда
		Возврат;
	КонецЕсли;
	
	
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиСобытийЭлементовШапкиФормы

&НаКлиенте
Процедура ВладелецПриИзменении(Элемент)
	
	ВладелецПриИзмененииСервер();
	
	Объект.ПолучателиПлатежейПриПеремещенииДС.Очистить();
	СформироватьАвтоНаименование(ЭтотОбъект);
	
КонецПроцедуры

&НаКлиенте
Процедура ВалютаДенежныхСредствПриИзменении(Элемент)
	
	ВалютаДенежныхСредствПриИзмененииСервер();
	
КонецПроцедуры

&НаКлиенте
Процедура ПодразделениеПриИзменении(Элемент)
	
	СформироватьАвтоНаименование(ЭтотОбъект);
	
КонецПроцедуры

&НаКлиенте
Процедура ПризнакКассовойКнигиОбособленногоПодразделенияПриИзменении(Элемент)
	
	Объект.ЭтоКассаОбособленногоПодразделения = (ПризнакКассовойКнигиОбособленногоПодразделения = 1);
	
	Если Не Объект.ЭтоКассаОбособленногоПодразделения Тогда
		Объект.КассоваяКнига = Неопределено;
	КонецЕсли;
	
	ПризнакКассовойКнигиОбособленногоПодразделенияПриИзмененииСервер();
	
КонецПроцедуры

&НаКлиенте
Процедура ПризнакКассовойКнигиОбособленногоПодразделенияПриИзмененииСервер()
	
	УправлениеЭлементамиФормы();
	
КонецПроцедуры

&НаКлиенте
Процедура РазрешитьПлатежиБезУказанияРаспоряженийПриИзменении(Элемент)
	
	УправлениеЭлементамиФормы();
	
КонецПроцедуры

&НаКлиенте
Процедура ОперационнаяКассаПриИзменении(Элемент)
	
	УправлениеЭлементамиФормы();
	
КонецПроцедуры

&НаКлиенте
Процедура СписокКассПолучателейНажатие(Кнопка)
	
	Отказ = Ложь;
	
	Если НЕ ЗначениеЗаполнено(Объект.Владелец) Тогда
		ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
			НСтр("ru='Поле ""Организация"" не заполнено'"),,
			"Владелец",
			"Объект",
			Отказ);
	КонецЕсли;
	
	Если НЕ ЗначениеЗаполнено(Объект.ВалютаДенежныхСредств) Тогда
		ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
			НСтр("ru='Поле ""Валюта"" не заполнено'"),,
			"ВалютаДенежныхСредств",
			"Объект",
			Отказ);
	КонецЕсли;
	
	Если НЕ Отказ Тогда
		
		ПараметрыФормы = Новый Структура;
		ПараметрыФормы.Вставить("Касса", Объект.Ссылка);
		ПараметрыФормы.Вставить("Владелец", Объект.Владелец);
		ПараметрыФормы.Вставить("ВалютаДенежныхСредств", Объект.ВалютаДенежныхСредств);
		ПараметрыФормы.Вставить("СписокПолучателейПлатежей", Новый СписокЗначений);
		Для Каждого СтрокаПолучательПлатежа Из Объект.ПолучателиПлатежейПриПеремещенииДС Цикл
			ПараметрыФормы.СписокПолучателейПлатежей.Добавить(СтрокаПолучательПлатежа.ПолучательПлатежа)
		КонецЦикла;
		
		ОткрытьФорму("Справочник.Кассы.Форма.ФормаПолучателиПлатежейПриПеремещенииДС",
			ПараметрыФормы,
			ЭтаФорма,,,, Неопределено, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
	КонецЕсли;
	
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиКомандФормы

&НаКлиенте
Процедура Подключаемый_РазрешитьРедактированиеРеквизитовОбъекта(Команда)
	
	ОбщегоНазначенияУТКлиент.РазрешитьРедактированиеРеквизитовОбъекта(ЭтаФорма);
	
КонецПроцедуры

// ИнтеграцияС1СДокументооборотом
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуИнтеграции(Команда)
	
	ИнтеграцияС1СДокументооборотБазоваяФункциональностьКлиент.ВыполнитьПодключаемуюКомандуИнтеграции(Команда, ЭтаФорма, Объект);
	
КонецПроцедуры
// Конец ИнтеграцияС1СДокументооборотом

&НаКлиенте
Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)
	
	СобытияФормКлиент.ВыполнитьПереопределяемуюКоманду(ЭтаФорма, Команда);
	
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_СвойстваВыполнитьКоманду(ЭлементИлиКоманда, НавигационнаяСсылка = Неопределено, СтандартнаяОбработка = Неопределено)
	УправлениеСвойствамиКлиент.ВыполнитьКоманду(ЭтотОбъект, ЭлементИлиКоманда, СтандартнаяОбработка);
КонецПроцедуры

// СтандартныеПодсистемы.ПодключаемыеКоманды

&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
	ПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Объект);
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ПродолжитьВыполнениеКомандыНаСервере(ПараметрыВыполнения, ДополнительныеПараметры) Экспорт
	ВыполнитьКомандуНаСервере(ПараметрыВыполнения);
КонецПроцедуры

&НаСервере
Процедура ВыполнитьКомандуНаСервере(ПараметрыВыполнения)
	ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, ПараметрыВыполнения, Объект);
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
	ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры

// Конец СтандартныеПодсистемы.ПодключаемыеКоманды

#КонецОбласти

#Область СлужебныеПроцедурыИФункции

&НаСервере
Процедура ПриЧтенииСозданииНаСервере()
	
	ИспользоватьНесколькоКасс        = ПолучитьФункциональнуюОпцию("ИспользоватьНесколькоКасс");
	ИспользоватьНесколькоОрганизаций = ПолучитьФункциональнуюОпцию("ИспользоватьНесколькоОрганизаций");
	ЭтоБазоваяВерсия                 = ПолучитьФункциональнуюОпцию("БазоваяВерсия");
	
	ПризнакКассовойКнигиОбособленногоПодразделения = ?(Объект.ЭтоКассаОбособленногоПодразделения, 1, 0);
	
	РазрешитьПлатежиБезУказанияРаспоряжений = (Объект.ПолучателиПлатежейПриПеремещенииДС.Количество() > 0);
	
	УправлениеЭлементамиФормы();
	
	СформироватьАвтоНаименование(ЭтотОбъект);
	
	
КонецПроцедуры

&НаСервере
Процедура УправлениеЭлементамиФормы()
	
	Элементы.РазрешитьПлатежиБезУказанияРаспоряжений.Видимость          = ИспользоватьНесколькоКасс;
	Элементы.НадписьСписокКассПолучателей.Видимость                     = ИспользоватьНесколькоКасс;
	Элементы.РедактироватьСписокКассПолучателей.Видимость               = ИспользоватьНесколькоКасс;
	
	Элементы.НадписьСписокКассПолучателей.Доступность                   = РазрешитьПлатежиБезУказанияРаспоряжений;
	Элементы.РедактироватьСписокКассПолучателей.Доступность             = РазрешитьПлатежиБезУказанияРаспоряжений;
	
	Элементы.Владелец.Видимость                                         = ИспользоватьНесколькоОрганизаций;
	Элементы.РедактироватьСписокКассПолучателей.Заголовок               = ПолучитьСписокКассПолучателей();
	
	Элементы.КассоваяКнига.Доступность                                  = Объект.ЭтоКассаОбособленногоПодразделения;
	
	Элементы.ФизическоеЛицо.Видимость                                   = Объект.ОперационнаяКасса;
	
	Если ЭтоБазоваяВерсия Тогда
		Элементы.КассоваяКнига.Видимость = Ложь;
		Элементы.ПризнакКассовойКнигиОбособленногоПодразделения1.Видимость = Ложь;
		Элементы.ПризнакКассовойКнигиОбособленногоПодразделения2.Видимость = Ложь;
	КонецЕсли;
	
КонецПроцедуры

&НаКлиентеНаСервереБезКонтекста
Функция СформироватьАвтоНаименование(Форма)
	
	Объект = Форма.Объект;
	Форма.Элементы.Наименование.СписокВыбора.Очистить();
	
	СтрокаНаименования =
		СокрЛП(Объект.Владелец) + 
		?(ЗначениеЗаполнено(Объект.Подразделение), " - " + СокрЛП(Объект.Подразделение), "") + 
		" (" + Строка(Объект.ВалютаДенежныхСредств) + ")";
	СтрокаНаименования = Лев(СтрокаНаименования, 100);
	
	Форма.Элементы.Наименование.СписокВыбора.Добавить(СтрокаНаименования);
	
	Возврат СтрокаНаименования;

КонецФункции

&НаСервере
Функция ПолучитьСписокКассПолучателей()
	
	Если Объект.ПолучателиПлатежейПриПеремещенииДС.Количество() = 0 Тогда
		СписокКасс = НСтр("ru='<Указать кассы>'");
	Иначе
		
		ПолучателиПлатежа = ОбщегоНазначения.ВыгрузитьКолонку(Объект.ПолучателиПлатежейПриПеремещенииДС, "ПолучательПлатежа", Истина);
		НаименованиеПолучателейПлатежа = ОбщегоНазначения.ЗначениеРеквизитаОбъектов(ПолучателиПлатежа, "Наименование");
		
		СписокКасс = "";
		Для каждого СтрокаПолучательПлатежа Из НаименованиеПолучателейПлатежа Цикл
			СписокКасс = СписокКасс + ?(СписокКасс = "", "", ", ") + СтрокаПолучательПлатежа.Значение;
		КонецЦикла;
		
	КонецЕсли;
	
	Возврат СписокКасс;
	
КонецФункции

&НаСервере
Процедура ВалютаДенежныхСредствПриИзмененииСервер()
	
	Объект.ПолучателиПлатежейПриПеремещенииДС.Очистить();
	СформироватьАвтоНаименование(ЭтотОбъект);
	
	
КонецПроцедуры

&НаСервере
Процедура ОбновитьЭлементыДополнительныхРеквизитов()
	
	УправлениеСвойствами.ОбновитьЭлементыДополнительныхРеквизитов(ЭтаФорма);
	
КонецПроцедуры

// СтандартныеПодсистемы.Свойства
&НаКлиенте
Процедура ОбновитьЗависимостиДополнительныхРеквизитов()
	УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ПриИзмененииДополнительногоРеквизита(Элемент)
	УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры

&НаСервере
Процедура ВладелецПриИзмененииСервер()
	
	Если Не ЗначениеЗаполнено(Объект.ВалютаДенежныхСредств) Тогда
		Объект.ВалютаДенежныхСредств = ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(Объект.Владелец);
	КонецЕсли;
	
КонецПроцедуры

#КонецОбласти

Связанные материалы