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