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