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