#Область ОписаниеПеременных
&НаКлиенте
Перем КэшированныеЗначения;
#КонецОбласти
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
УстановитьУсловноеОформление();
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(Объект, ЭтотОбъект);
Если ТребуетсяОткрытиеПечатнойФормы Тогда
Возврат;
КонецЕсли;
ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект);
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("Объект", Объект);
ДополнительныеПараметры.Вставить("ИмяЭлементаДляРазмещения", "ГруппаДополнительныеРеквизиты");
УправлениеСвойствами.ПриСозданииНаСервере(ЭтаФорма, ДополнительныеПараметры);
ИспользоватьРасширенныеВозможностиЗаказаКлиента = ПолучитьФункциональнуюОпцию("ИспользоватьРасширенныеВозможностиЗаказаКлиента");
ИспользоватьТиповыеСоглашенияСКлиентами = ПолучитьФункциональнуюОпцию("ИспользоватьТиповыеСоглашенияСКлиентами");
ИспользоватьИндивидуальныеСоглашенияСКлиентами = ПолучитьФункциональнуюОпцию("ИспользоватьИндивидуальныеСоглашенияСКлиентами");
ИспользоватьДоговорыСКлиентами = ПолучитьФункциональнуюОпцию("ИспользоватьДоговорыСКлиентами");
ОтклонениеОтУсловийПродаж = ПраваПользователяПовтИсп.ОтклонениеОтУсловийПродаж();
ИспользоватьОказаниеАгентскихУслугПриЗакупке = ПолучитьФункциональнуюОпцию("ИспользоватьОказаниеАгентскихУслугПриЗакупке");
ИспользуетсяЦенообразование25 = ЦенообразованиеВызовСервера.ИспользуетсяЦенообразование25();
РазрешеноСоздаватьВидыЦен = ПолучитьФункциональнуюОпцию("ИспользоватьНесколькоВидовЦен")
И ПравоДоступа("Добавление", Метаданные.Справочники.ВидыЦен);
ТолькоКомиссионныеПродажи25 = ПолучитьФункциональнуюОпцию("ТолькоКомиссионныеПродажи25");
ВыбиратьВерсиюКомиссионныхПродаж = ПолучитьФункциональнуюОпцию("ВыбиратьВерсиюКомиссионныхПродаж")
ИЛИ (ЗначениеЗаполнено(Объект.Ссылка) И НЕ Объект.КомиссионныеПродажи25);
ЗаполнитьСписокВыбораОпераций();
УстановитьВидимостьЗакладок();
Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
ПриИзмененииХозяйственнойОперацииСервер();
ПриЧтенииСозданииНаСервере();
КонецЕсли;
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию
ИЛИ Объект.КомиссионныеПродажи25 Тогда
НоваяСвязь = Новый СвязьПараметраВыбора("Отбор.КомиссионныеПродажи25", "Объект.КомиссионныеПродажи25");
МассивСвязиПараметровВыбора = Новый Массив();
МассивСвязиПараметровВыбора.Добавить(НоваяСвязь);
Элементы.Соглашение.СвязиПараметровВыбора = Новый ФиксированныйМассив(МассивСвязиПараметровВыбора);
КонецЕсли;
ЗначениеКопирования = Параметры.ЗначениеКопирования;
СкидкиНаценкиСервер.ПриСозданииНаСервереИсточниковДействияСкидок(ЭтотОбъект,
?(ЗначениеКопирования.Пустая(), Объект.Ссылка, ЗначениеКопирования));
Элементы.Соглашение.Видимость = Не Объект.Типовое И ИспользоватьТиповыеСоглашенияСКлиентами
И ИспользоватьИндивидуальныеСоглашенияСКлиентами;
Элементы.Соглашение.АвтоОтметкаНезаполненного = Не Объект.Типовое И ИспользоватьТиповыеСоглашенияСКлиентами
И ИспользоватьИндивидуальныеСоглашенияСКлиентами И НЕ ОтклонениеОтУсловийПродаж;
Элементы.СегментПартнеров.Видимость = Объект.Типовое И ИспользоватьСоглашенияСКлиентами;
Элементы.Партнер.Видимость = Не Объект.Типовое;
Элементы.Контрагент.Видимость = Не Объект.Типовое И ИспользоватьСоглашенияСКлиентами;
Элементы.Наименование.Видимость = ИспользоватьСоглашенияСКлиентами;
Элементы.ХозяйственнаяОперация.Видимость = ИспользоватьСоглашенияСКлиентами;
Элементы.КонтактноеЛицо.Видимость = ИспользоватьСоглашенияСКлиентами;
Элементы.ГруппаПериодДействия.Видимость = ИспользоватьСоглашенияСКлиентами;
Элементы.СегментНоменклатуры.Видимость = ИспользоватьСоглашенияСКлиентами;
Элементы.Организация.Видимость = ПолучитьФункциональнуюОпцию("ИспользоватьНесколькоОрганизаций");
Элементы.КонтактноеЛицо.Видимость = НЕ Объект.Типовое;
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы,
"ГруппаРежимаРасчетаДатыВозврата",
"Видимость",
ПолучитьФункциональнуюОпцию("ИспользоватьМногооборотнуюТару"),
Истина);
ПродажиСервер.УстановитьРежимВыбораГруппЭлементовСклада(Элементы.Склад);
ЭтоБазоваяВерсия = ПолучитьФункциональнуюОпцию("БазоваяВерсия");
Элементы.МинимальнаяСуммаЗаказа.Видимость = ИспользоватьРасширенныеВозможностиЗаказаКлиента;
Элементы.МинимальнаяСуммаЗаказаВалюта.Видимость = ИспользоватьРасширенныеВозможностиЗаказаКлиента;
Элементы.ЧастотаЗаказа.Видимость = ИспользоватьРасширенныеВозможностиЗаказаКлиента
И Не ЭтоБазоваяВерсия;
Элементы.ПериодПоставкиДекорация.Видимость = ИспользоватьРасширенныеВозможностиЗаказаКлиента
И Не ЭтоБазоваяВерсия;
Элементы.СдвигДатыПереходаПраваСобственности.Видимость = Объект.ВозможнаРеализацияБезПереходаПраваСобственности;
Элементы.СдвигДатыПереходаДекорация.Видимость = Объект.ВозможнаРеализацияБезПереходаПраваСобственности;
УстановитьЗаголовокФлагаДоступноВнешнимПользователям();
ВалютаРегламентированногоУчета = ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(Объект.Организация);
Элементы.ТоварыВидЦены.БыстрыйВыбор = Не ПолучитьФункциональнуюОпцию("ИспользоватьНесколькоВидовЦен");
ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПриСозданииНаСервере(ЭтаФорма);
Если Объект.Ссылка.Пустая() Тогда
ОбновитьДанныеПубликацииТорговыхПредложений();
КонецЕсли;
СобытияФорм.ПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка);
УстановитьВидимостьКомандВводНаОсновании();
УстановитьДоступностьКомандДляВнешнегоПользователя();
Если ИспользоватьНесколькоВидовЦен Тогда
ОбновитьИндивидуальныйВидЦеныПредставление();
ОбновитьФлажокИспользоватьОбщийВидЦены();
ОбновитьФлажокИспользоватьИндивидуальныйВидЦены();
НастроитьВидимостьДоступностьЭлементовНастройкиОбщегоВидаЦен(ЭтаФорма);
НастроитьВидимостьДоступностьЭлементовНастройкиИндивидуальногоВидаЦен(ЭтаФорма);
КонецЕсли;
ОбновитьПредставлениеУточнениеПроцентыСкидокНаценок();
ПараметрыГиперссылки = РаботаСФайлами.ГиперссылкаФайлов();
ПараметрыГиперссылки.Размещение = "КоманднаяПанель";
РаботаСФайлами.ПриСозданииНаСервере(ЭтотОбъект, ПараметрыГиперссылки);
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
УправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
Если ОбщегоНазначенияУТКлиентСервер.АвторизованВнешнийПользователь() Тогда
ТребуетсяОткрытиеПечатнойФормы = Истина;
Возврат;
КонецЕсли;
ПриЧтенииСозданииНаСервере();
УправлениеСвойствами.ПриЧтенииНаСервере(ЭтаФорма, ТекущийОбъект);
МодификацияКонфигурацииПереопределяемый.ПриЧтенииНаСервере(ЭтаФорма, ТекущийОбъект);
ОбновитьДанныеПубликацииТорговыхПредложений();
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
&НаСервере
Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
Если Объект.ДоступноВнешнимПользователям
И Не ИспользоватьНесколькоВидовЦен
И Не ЗначениеЗаполнено(Объект.ВидЦен) Тогда
Если Элементы.ИспользованиеПрайсЛиста.Доступность Тогда
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
НСтр("ru = 'Для соглашений, доступных внешним пользователям должны использоваться цены из Прайс-листа.'"), ,
"ИспользованиеПрайсЛиста",,Отказ);
Иначе
Если Не Объект.ЦенаВключаетНДС Тогда
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
НСтр("ru = 'Для соглашений, доступных внешним пользователям
|должны использоваться цены из Прайс-листа.
|Возможность указания цены из Прайс-листа будет доступна только при включенном флаге ""Цена включает НДС""'"), Объект.Ссылка,
"ЦенаВключаетНДС",
"Объект",Отказ);
Иначе
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
НСтр("ru = 'Для соглашений, доступных внешним пользователям
|должны использоваться цены из Прайс-листа.
|Возможность указания цены из Прайс-листа будет доступна только при выключенном флаге ""Цена включает НДС""'"), Объект.Ссылка,
"ЦенаВключаетНДС",
"Объект",Отказ);
КонецЕсли;
КонецЕсли;
КонецЕсли;
УправлениеСвойствами.ОбработкаПроверкиЗаполнения(ЭтаФорма, Отказ, ПроверяемыеРеквизиты);
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
УправлениеСвойствами.ПередЗаписьюНаСервере(ЭтаФорма, ТекущийОбъект);
МодификацияКонфигурацииПереопределяемый.ПередЗаписьюНаСервере(ЭтаФорма, Отказ, ТекущийОбъект, ПараметрыЗаписи);
ТорговыеПредложения.ПередЗаписьюНаСервере(ЭтаФорма, ТекущийОбъект, Объект.Организация, Элементы.Группа1СБизнесСеть, Отказ);
ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПередЗаписьюНаСервере(ЭтаФорма, ТекущийОбъект, ПараметрыЗаписи);
КонецПроцедуры
&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
УправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
УстановитьДоступностьЭлементовПоСтатусуСервер();
ЗаполнитьПризнакХарактеристикиИспользуются = Новый Структура("Номенклатура", "ХарактеристикиИспользуются");
НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(
Объект.Товары,
Новый Структура("ЗаполнитьПризнакХарактеристикиИспользуются", ЗаполнитьПризнакХарактеристикиИспользуются));
УстановитьЗаголовокФормы();
МодификацияКонфигурацииПереопределяемый.ПослеЗаписиНаСервере(ЭтаФорма, ТекущийОбъект, ПараметрыЗаписи);
ТорговыеПредложения.ПослеЗаписиНаСервере(ЭтаФорма, ТекущийОбъект, Объект.Организация, Элементы.Группа1СБизнесСеть);
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
Если ОбновитьИнтерфейс Тогда
ОбновитьИнтерфейс = Ложь;
ОбновитьИнтерфейс();
КонецЕсли;
МодификацияКонфигурацииКлиентПереопределяемый.ПослеЗаписи(ЭтаФорма, ПараметрыЗаписи);
ТорговыеПредложенияКлиент.ПослеЗаписи(ЭтаФорма, ПараметрыЗаписи);
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда
МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент");
МодульПодключаемыеКомандыКлиент.ПослеЗаписи(ЭтотОбъект, Объект, ПараметрыЗаписи);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
ОчиститьСкидкиНаценкиПоДоговоруКомиссии();
СкидкиНаценкиСервер.ПриЗаписиНаСервереИсточниковДействияСкидокНаценок(ТекущийОбъект, ЗначениеКопирования);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если УправлениеСвойствамиКлиент.ОбрабатыватьОповещения(ЭтаФорма, ИмяСобытия, Параметр) Тогда
ОбновитьЭлементыДополнительныхРеквизитов();
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
КонецЕсли;
Если ИмяСобытия = "ИзмененРеквизитЗависящийОтСтатуса"
И Параметр.УникальныйИдентификатор = УникальныйИдентификатор Тогда
Если Объект.Согласован Тогда
Объект.Согласован = Ложь;
КонецЕсли;
ПодключитьОбработчикОжидания("Подключаемый_ПриИзмененииРеквизитаЗависящегоОтСтатуса", 0.1, Истина);
ИначеЕсли ИмяСобытия = "Запись_ДействиеСкидокНаценок" И Параметр.Источник.Найти(Объект.Ссылка) <> Неопределено Тогда
ОбновитьДеревоСкидок();
ИначеЕсли ИмяСобытия = "ТорговыеПредложения_ИзменениеСинхронизации"
И (Параметр = Неопределено ИЛИ Параметр = Объект.Ссылка) Тогда
ОбновитьДанныеПубликацииТорговыхПредложений();
КонецЕсли;
РаботаСФайламиКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия);
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Если ТребуетсяОткрытиеПечатнойФормы Тогда
Отказ = Истина;
СамообслуживаниеКлиент.ПечатьСоглашениеСКлиентом(Объект.Ссылка);
Возврат;
КонецЕсли;
УстановитьВидимостьОплатаВВалюте();
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
РаботаСФайламиКлиент.ПриОткрытии(ЭтотОбъект, Отказ);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура СоглашениеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ПараметрыВыбораСоглашения = ПродажиКлиент.ПараметрыНачалаВыбораСоглашенияСКлиентом();
ПараметрыВыбораСоглашения.Элемент = Элемент;
ПараметрыВыбораСоглашения.Партнер = Объект.Партнер;
ПараметрыВыбораСоглашения.Документ = Объект.Соглашение;
ПараметрыВыбораСоглашения.ДатаДокумента = Объект.Дата;
ПараметрыВыбораСоглашения.ТолькоТиповые = Истина;
ПараметрыВыбораСоглашения.ДанныеФормыСтруктура = Объект;
ПараметрыВыбораСоглашения.КомиссионныеПродажи25 = Объект.КомиссионныеПродажи25;
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ПараметрыВыбораСоглашения", ПараметрыВыбораСоглашения);
ДополнительныеПараметры.Вставить("СтандартнаяОбработка", СтандартнаяОбработка);
ПродажиКлиент.НачалоВыбораСоглашенияСКлиентом(ПараметрыВыбораСоглашения, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ПартнерПриИзменении(Элемент)
Если Не ЗначениеЗаполнено (Объект.Партнер) Тогда
Объект.Соглашение = ПредопределенноеЗначение("Справочник.СоглашенияСКлиентами.ПустаяСсылка");
Возврат;
КонецЕсли;
ПриИзмененииПартнераСервер();
Если ЗначениеЗаполнено(Объект.Соглашение) Тогда
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияУсловийПродажПоУмолчанию();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СоглашениеПриИзменении(Элемент)
Если Не ЗначениеЗаполнено (Объект.Соглашение) Тогда
Возврат;
КонецЕсли;
ПриИзмененииСоглашенияСервер();
ОбновитьДеревоСкидок();
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияУсловийПродаж();
КонецПроцедуры
&НаКлиенте
Процедура ВалютаПриИзменении(Элемент)
Если ЦенообразованиеКлиент.НеобходимПересчетВВалюту(Объект, ВалютаДокумента) Тогда
ПриИзмененииВалютыСервер(Объект.Валюта);
ЦенообразованиеКлиент.ОповеститьОбОкончанииПересчетаСуммВВалюту(ВалютаДокумента, Объект.Валюта);
КонецЕсли;
ВалютаДокумента = Объект.Валюта;
Если Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПередачаНаКомиссию") Тогда
Объект.ВалютаВзаиморасчетов = Объект.Валюта;
ЗаполнитьОплатуВВалютеГруппуФинансовогоУчета(
Объект.Организация,
Объект.ВалютаВзаиморасчетов,
Объект.ОплатаВВалюте,
Объект.ГруппаФинансовогоУчета,
Объект.ИспользуютсяДоговорыКонтрагентов,
Объект.ХозяйственнаяОперация);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СтатусПриИзменении(Элемент)
СтатусДокумента = Объект.Статус;
Если Объект.Согласован И
Объект.Статус <> ПредопределенноеЗначение("Перечисление.СтатусыСоглашенийСКлиентами.Действует")
И Объект.Статус <> ПредопределенноеЗначение("Перечисление.СтатусыСоглашенийСКлиентами.Закрыто") Тогда
Объект.Согласован = Ложь;
КонецЕсли;
УстановитьДоступностьЭлементовПоСтатусуСервер();
КонецПроцедуры
&НаКлиенте
Процедура РегулярноеПриИзменении(Элемент)
ПриИзмененииРегулярностиСервер();
КонецПроцедуры
&НаКлиенте
Процедура ПериодПриИзменении(Элемент)
РассчитатьПериодДействияРегулярногоСоглашения();
ОписаниеРегулярныхУсловий = ОписаниеРегулярныхУсловий(Объект.КоличествоПериодов, Объект.Период, Объект.СуммаДокумента, ВалютаДокумента);
КонецПроцедуры
&НаКлиенте
Процедура КоличествоПериодовПриИзменении(Элемент)
РассчитатьПериодДействияРегулярногоСоглашения();
ОписаниеРегулярныхУсловий = ОписаниеРегулярныхУсловий(Объект.КоличествоПериодов, Объект.Период, Объект.СуммаДокумента, ВалютаДокумента);
КонецПроцедуры
&НаКлиенте
Процедура СуммаДокументаПриИзменении(Элемент)
ОписаниеРегулярныхУсловий = ОписаниеРегулярныхУсловий(Объект.КоличествоПериодов, Объект.Период, Объект.СуммаДокумента, ВалютаДокумента);
КонецПроцедуры
&НаКлиенте
Процедура ХозяйственнаяОперацияПриИзменении(Элемент)
ПриИзмененииХозяйственнойОперацииСервер();
КонецПроцедуры
&НаСервере
Процедура СпособРасчетаВознагражденияПриИзмененииСервер()
МассивЭлементов = Новый Массив();
МассивЭлементов.Добавить("ПроцентВознаграждения");
МассивЭлементов.Добавить("УдержатьВознаграждение");
Если Объект.СпособРасчетаВознаграждения = Перечисления.СпособыРасчетаКомиссионногоВознаграждения.НеРассчитывается Или
Не ЗначениеЗаполнено(Объект.СпособРасчетаВознаграждения) Тогда
Объект.ПроцентВознаграждения = Метаданные.Справочники.СоглашенияСКлиентами.Реквизиты.ПроцентВознаграждения.ЗначениеЗаполнения;
Объект.УдержатьВознаграждение = Метаданные.Справочники.СоглашенияСКлиентами.Реквизиты.УдержатьВознаграждение.ЗначениеЗаполнения;
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, МассивЭлементов, "Доступность", Ложь);
Иначе
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, МассивЭлементов, "Доступность", Истина);
КонецЕсли;
Если Объект.СпособРасчетаВознаграждения = Перечисления.СпособыРасчетаКомиссионногоВознаграждения.ПроизвольнаяСумма Тогда
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, "ПроцентВознаграждения", "Видимость", Ложь);
Иначе
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, "ПроцентВознаграждения", "Видимость", Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СпособРасчетаВознагражденияПриИзменении(Элемент)
СпособРасчетаВознагражденияПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура ДатаНачалаДействияПриИзменении(Элемент)
Если ЗначениеЗаполнено(Объект.ДатаНачалаДействия) Тогда
РассчитатьПериодДействияРегулярногоСоглашения();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ИспользуютсяДоговорыКонтрагентовПриИзменении(Элемент)
Объект.ИспользуютсяДоговорыКонтрагентов = Булево(ИспользуютсяДоговорыКонтрагентов);
ИспользуютсяДоговорыКонтрагентовПриИзмененииСервер();
ЗаполнитьПорядокРасчетов();
УстановитьВидимостьОплатаВВалюте();
КонецПроцедуры
&НаКлиенте
Процедура КомментарийНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ОбщегоНазначенияКлиент.ПоказатьФормуРедактированияКомментария(
Элемент.ТекстРедактирования,
ЭтотОбъект,
"Объект.Комментарий");
КонецПроцедуры
&НаКлиенте
Процедура ОграничиватьРучныеСкидкиПриИзменении(Элемент)
ОбновитьВидимостьЭлементовОграниченияРучныхСкидок(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ВозможнаРеализацияБезПереходаПраваСобственностиПриИзменении(Элемент)
Если НЕ Объект.ВозможнаРеализацияБезПереходаПраваСобственности Тогда
Объект.СрокПереходаПраваСобственности = 0;
КонецЕсли;
ОбновитьВидимостьСдвигаПереходаПраваСобственности(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ВозвращатьМногооборотнуюТаруПриИзменении(Элемент)
Если Не Объект.ВозвращатьМногооборотнуюТару Тогда
Объект.ТребуетсяЗалогЗаТару = Ложь;
КонецЕсли;
ОбновитьДоступностьЭлементовВозвратнойТары(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ДоступноВнешнимПользователямПриИзменении(Элемент)
ОбновитьДоступностьОбщегоВидаЦен();
ОбновитьДоступностьЭлементовПланыПродаж(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура СценарийПланированияПриИзменении(Элемент)
ОбновитьДоступностьЭлементовПланыПродаж(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ИспользуетсяВидЦеныПрайсЛистПриИзменении(Элемент)
Если ИспользованиеПрайсЛиста = 1 Тогда
Объект.ВидЦен = ВидЦенПрайсЛист;
Иначе
Объект.ВидЦен = Неопределено;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЦенаВключаетНДСПриИзменении(Элемент)
Если Не ИспользоватьНесколькоВидовЦен Тогда
УстановитьДоступностьИспользованияПрайсЛиста();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВариантОтображенияСкидокПриИзменении(Элемент)
ОбновитьДеревоСкидок();
КонецПроцедуры
&НаКлиенте
Процедура ДатаСрезаПриИзменении(Элемент)
ОбновитьДеревоСкидок();
КонецПроцедуры
&НаКлиенте
Процедура РазбиватьРасходныеОрдераПоРаспоряжениямПриИзменении(Элемент)
Объект.РазбиватьРасходныеОрдераПоРаспоряжениям = Булево(РазбиватьРасходныеОрдераПоРаспоряжениямЧисло);
КонецПроцедуры
&НаКлиенте
Процедура ВалютаВзаиморасчетовПриИзменении(Элемент)
ЗаполнитьОплатуВВалютеГруппуФинансовогоУчета(
Объект.Организация,
Объект.ВалютаВзаиморасчетов,
Объект.ОплатаВВалюте,
Объект.ГруппаФинансовогоУчета,
Объект.ИспользуютсяДоговорыКонтрагентов,
Объект.ХозяйственнаяОперация);
УстановитьВидимостьОплатаВВалюте();
КонецПроцедуры
&НаКлиенте
Процедура ОрганизацияПриИзменении(Элемент)
ВалютаРегламентированногоУчета = ЗначениеНастроекКлиентСерверПовтИсп.ВалютаРегламентированногоУчетаОрганизации(Объект.Организация);
УстановитьВидимостьОплатаВВалюте();
КонецПроцедуры
&НаКлиенте
Процедура ОплатаВВалютеПриИзменении(Элемент)
ЗаполнитьГруппуФинансовогоУчета(Объект.Организация, Объект.ВалютаВзаиморасчетов, Объект.ХозяйственнаяОперация, Объект.ГруппаФинансовогоУчета);
КонецПроцедуры
&НаКлиенте
Процедура ИспользоватьОбщийВидЦеныПриИзменении(Элемент)
ИспользоватьОбщийВидЦеныПриИзмененииНаКлиенте();
НастроитьВидимостьДоступностьЭлементовНастройкиОбщегоВидаЦен(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ИспользоватьИндивидуальныйВидЦеныПриИзменении(Элемент)
ИспользоватьИндивидуальныйВидЦеныПриИзмененииНаКлиенте();
НастроитьВидимостьДоступностьЭлементовНастройкиИндивидуальногоВидаЦен(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Функция ПараметрыПереходаПоГиперссылке(ИмяЭлемента, Гиперссылка = "")
Если ИмяЭлемента = "ГиперссылкаПерейтиПрайсЛист" Тогда
ВидыЦен = Новый Массив();
ВидыЦен.Добавить(Объект.ВидЦен);
ВидыЦен.Добавить(Объект.ИндивидуальныйВидЦены);
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("ВидыЦен", ВидыЦен);
ПараметрыПереходаПоГиперссылке = Новый Структура;
ПараметрыПереходаПоГиперссылке.Вставить("ИмяФормы", "Обработка.ПрайсЛист.Форма.Форма");
ПараметрыПереходаПоГиперссылке.Вставить("ПараметрыФормы",ПараметрыФормы);
ИначеЕсли ИмяЭлемента = "ГиперссылкаПерейтиИсторияИзмененияЦен" Тогда
ВидыЦен = Новый Массив();
ВидыЦен.Добавить(Объект.ВидЦен);
ВидыЦен.Добавить(Объект.ИндивидуальныйВидЦены);
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("ВидыЦен", ВидыЦен);
ПараметрыПереходаПоГиперссылке = Новый Структура;
Если ИспользуетсяЦенообразование25 Тогда
ПараметрыПереходаПоГиперссылке.Вставить("ИмяФормы", "РегистрСведений.ЦеныНоменклатуры25.Форма.ФормаСписка");
Иначе
ПараметрыПереходаПоГиперссылке.Вставить("ИмяФормы", "РегистрСведений.ЦеныНоменклатуры.Форма.ФормаСписка");
КонецЕсли;
ПараметрыПереходаПоГиперссылке.Вставить("ПараметрыФормы", ПараметрыФормы);
КонецЕсли;
Если Не ПараметрыПереходаПоГиперссылке.Свойство("РежимОткрытияОкнаФормы") Тогда
ПараметрыПереходаПоГиперссылке.Вставить("РежимОткрытияОкнаФормы", РежимОткрытияОкнаФормы.Независимый);
КонецЕсли;
ПараметрыПереходаПоГиперссылке.Вставить("ИмяЭлемента", ИмяЭлемента);
ПараметрыПереходаПоГиперссылке.Вставить("Гиперссылка", Гиперссылка);
Возврат ПараметрыПереходаПоГиперссылке
КонецФункции
&НаКлиенте
Процедура ГиперссылкаПерейтиПрайсЛистОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ПараметрыПереходаПоГиперссылке = ПараметрыПереходаПоГиперссылке(Элемент.Имя);
ГиперссылкаПерейтиСформироватьПараметрыИВопрос(ПараметрыПереходаПоГиперссылке);
КонецПроцедуры
&НаКлиенте
Процедура ГиперссылкаПерейтиИсторияИзмененияЦенОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ПараметрыПереходаПоГиперссылке = ПараметрыПереходаПоГиперссылке(Элемент.Имя);
ГиперссылкаПерейтиСформироватьПараметрыИВопрос(ПараметрыПереходаПоГиперссылке);
КонецПроцедуры
&НаКлиенте
Процедура ГиперссылкаПерейтиСформироватьПараметрыИВопрос(ПараметрыПереходаПоГиперссылке)
ОчиститьСообщения();
Если Не ЗначениеЗаполнено(Объект.Ссылка)
Или Модифицированность Тогда
ТекстВопроса = Нстр("ru = 'Данные еще не записаны.
|Переход к дополнительной информации возможен только после записи элемента.
|Записать элемент?'");
ПоказатьВопрос(Новый ОписаниеОповещения("ГиперссылкаПерейтиВопросЗавершение", ЭтотОбъект, ПараметрыПереходаПоГиперссылке), ТекстВопроса, РежимДиалогаВопрос.ДаНет);
Возврат;
КонецЕсли;
ГиперссылкаПерейти(ПараметрыПереходаПоГиперссылке);
КонецПроцедуры
&НаКлиенте
Процедура ГиперссылкаПерейтиВопросЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
Если РезультатВопроса <> КодВозвратаДиалога.Да Тогда
Возврат;
КонецЕсли;
Попытка
ЭлементЗаписан = Записать();
Исключение
Возврат;
КонецПопытки;
Если Не ЭлементЗаписан Тогда
Возврат;
КонецЕсли;
ПараметрыПереходаПоГиперссылке = ПараметрыПереходаПоГиперссылке(ДополнительныеПараметры.ИмяЭлемента,
ДополнительныеПараметры.Гиперссылка);
ГиперссылкаПерейти(ПараметрыПереходаПоГиперссылке);
КонецПроцедуры
&НаКлиенте
Процедура ГиперссылкаПерейти(ПараметрыПереходаПоГиперссылке)
Если ПараметрыПереходаПоГиперссылке.Свойство("ИмяФормы") Тогда
ОткрытьФорму(ПараметрыПереходаПоГиперссылке.ИмяФормы,
ПараметрыПереходаПоГиперссылке.ПараметрыФормы, , ЭтаФорма.УникальныйИдентификатор, , , ,
ПараметрыПереходаПоГиперссылке.РежимОткрытияОкнаФормы);
Иначе
ТекстИсключения = НСтр("ru = 'Не определено действие по гиперссылке.'");
ВызватьИсключение ТекстИсключения;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыТовары
&НаКлиенте
Процедура ТоварыВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
Если Поле = Элементы.ТоварыЦена Тогда
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
Если ЗначениеЗаполнено(ТекущиеДанные.ВидЦены) И НЕ Объект.Согласован Тогда
ОчиститьСообщения();
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
НСтр("ru='Для редактирования цены очистите вид цены'"),
Объект.Ссылка,
ОбщегоНазначенияКлиентСервер.ПутьКТабличнойЧасти("Объект.Товары", ТекущиеДанные.НомерСтроки, "ВидЦены"),);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыНоменклатураПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПроверитьХарактеристикуПоВладельцу", ТекущаяСтрока.Характеристика);
СтруктураДействий.Вставить("ПроверитьЗаполнитьУпаковкуПоВладельцу", ТекущаяСтрока.Упаковка);
СтруктураДействий.Вставить("НоменклатураПриИзмененииПереопределяемый", Новый Структура("ИмяФормы, ИмяТабличнойЧасти",
ЭтаФорма.ИмяФормы, "Товары"));
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыВидЦеныПриИзменении(Элемент)
Элементы.Товары.ТекущиеДанные.Цена = 0;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыСкидкиНаценки
&НаКлиенте
Процедура СкидкиНаценкиВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
Если ЗначениеЗаполнено(Элементы.СкидкиНаценки.ТекущиеДанные.Ссылка) Тогда
ПоказатьЗначение(Неопределено, Элементы.СкидкиНаценки.ТекущиеДанные.Ссылка);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СкидкиНаценкиПриАктивизацииСтроки(Элемент)
ПодключитьОбработчикОжидания("ОбновитьПредставлениеИспользованияСкидкиНаценки", 0.1, Истина);
КонецПроцедуры
&НаКлиенте
Процедура СкидкиНаценкиПередРазворачиванием(Элемент, Строка, Отказ)
СкидкиНаценкиКлиент.СохранитьПризнакРазвернутостиУзлаДереваВСписке(Строка, Элементы.СкидкиНаценки, РазвернутыеУзлыДерева, Истина);
КонецПроцедуры
&НаКлиенте
Процедура СкидкиНаценкиПередСворачиванием(Элемент, Строка, Отказ)
СкидкиНаценкиКлиент.СохранитьПризнакРазвернутостиУзлаДереваВСписке(Строка, Элементы.СкидкиНаценки, РазвернутыеУзлыДерева, Ложь);
КонецПроцедуры
&НаКлиенте
Процедура ИнформацияОДействииСкидокОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылка, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если НавигационнаяСсылка = "НастроитьСкидки" Тогда
ОткрытьФорму("Справочник.СкидкиНаценки.ФормаСписка", ,ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура Подключаемый_КомандаПанелиПрисоединенныхФайлов(Команда)
РаботаСФайламиКлиент.КомандаУправленияПрисоединеннымиФайлами(ЭтотОбъект, Команда);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПроверкаПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраПроверкаПеретаскивания(ЭтотОбъект, Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраПеретаскивание(ЭтотОбъект, Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраНажатие(Элемент, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраНажатие(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура УстановитьИнтервалВыполнить(Команда)
ОбщегоНазначенияУТКлиент.РедактироватьПериод(Объект,
Новый Структура("ДатаНачала, ДатаОкончания", "ДатаНачалаДействия", "ДатаОкончанияДействия"));
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьВидЦенВыделенныхСтрокТовары(Команда)
Если Объект.Товары.Количество() = 0 Тогда
ПоказатьПредупреждение(Неопределено, НСтр("ru='В документе не заполнен список ""Товары"". Вид цен не может быть заполнен'"));
Возврат;
КонецЕсли;
ПараметрыВыбораЦен = ЦеныПредприятияЗаполнениеКлиент.НовыйПараметрыЗаполненияВыбратьВидЦен();
ПараметрыВыбораЦен.ОписаниеОповещения =
Новый ОписаниеОповещения( "ЗаполнитьВидЦенВыделенныхСтрокТоварыЗавершение", ЭтотОбъект);
ПараметрыВыбораЦен.ЦенаВключаетНДС = Объект.ЦенаВключаетНДС;
ПараметрыВыбораЦен.ИспользоватьПриПродаже = Истина;
ЦеныПредприятияЗаполнениеКлиент.ВыбратьВидЦен(ПараметрыВыбораЦен);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьВидЦенВыделенныхСтрокТоварыЗавершение(ВидЦен, ДополнительныеПараметры) Экспорт
Если ЗначениеЗаполнено(ВидЦен) Тогда
ЗаполнитьВидЦенВыделенныхСтрокТоварыСервер(ВидЦен);
ПоказатьОповещениеПользователя(
НСтр("ru = 'Вид цен заполнен'"),
,
СтрЗаменить(НСтр("ru='Вид цен ""%ВидЦен%"" в таблице Товары заполнен.'"), "%ВидЦен%", ВидЦен),
БиблиотекаКартинок.Информация32);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьВидЦенВыделенныхСтрокЦеновыеГруппы(Команда)
Если Объект.ЦеновыеГруппы.Количество() = 0 Тогда
ПоказатьПредупреждение(Неопределено, НСтр("ru='В документе не заполнен список ""Ценовые группы"". Вид цен не может быть заполнен'"));
Возврат;
КонецЕсли;
ПараметрыВыбораЦен = ЦеныПредприятияЗаполнениеКлиент.НовыйПараметрыЗаполненияВыбратьВидЦен();
ПараметрыВыбораЦен.ОписаниеОповещения =
Новый ОписаниеОповещения( "ЗаполнитьВидЦенВыделенныхСтрокЦеновыеГруппыЗавершение", ЭтотОбъект);
ПараметрыВыбораЦен.ЦенаВключаетНДС = Объект.ЦенаВключаетНДС;
ПараметрыВыбораЦен.ИспользоватьПриПродаже = Истина;
ЦеныПредприятияЗаполнениеКлиент.ВыбратьВидЦен(ПараметрыВыбораЦен);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьВидЦенВыделенныхСтрокЦеновыеГруппыЗавершение(ВидЦен, ДополнительныеПараметры) Экспорт
Если ЗначениеЗаполнено(ВидЦен) Тогда
ЗаполнитьВидЦенВыделенныхСтрокЦеновыеГруппыСервер(ВидЦен);
ПоказатьОповещениеПользователя(
НСтр("ru = 'Вид цен заполнен'"),
,
СтрЗаменить(НСтр("ru='Вид цен ""%ВидЦен%"" в таблице Ценовые группы заполнен.'"),"%ВидЦен%",ВидЦен),
БиблиотекаКартинок.Информация32);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_СвойстваВыполнитьКоманду(ЭлементИлиКоманда, НавигационнаяСсылка = Неопределено, СтандартнаяОбработка = Неопределено)
УправлениеСвойствамиКлиент.ВыполнитьКоманду(ЭтотОбъект, ЭлементИлиКоманда, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ДобавитьТоварыПоОтбору(Команда)
ПараметрыФормы = Новый Структура("УникальныйИдентификатор", УникальныйИдентификатор);
АдресВоВременномХранилище = Неопределено;
ОткрытьФорму("Обработка.ПодборТоваровПоОтбору.Форма.Форма", ПараметрыФормы, ЭтаФорма,,,, Новый ОписаниеОповещения("ДобавитьТоварыПоОтборуЗавершение", ЭтотОбъект), РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура ДобавитьТоварыПоОтборуЗавершение(Результат, ДополнительныеПараметры) Экспорт
АдресВоВременномХранилище = Результат;
Если ЗначениеЗаполнено(АдресВоВременномХранилище) Тогда
ДобавитьТоварыПоОтборуНаСервере(АдресВоВременномХранилище);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура НадписьОплатаНажатие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Попытка
ЗаблокироватьДанныеФормыДляРедактирования();
Исключение
ПоказатьПредупреждение(Неопределено, КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
Возврат;
КонецПопытки;
ПараметрыФормы = Новый Структура();
ПараметрыФормы.Вставить("ФормаОплаты", Объект.ФормаОплаты);
ПараметрыФормы.Вставить("ПорядокРасчетов", ?(НЕ Объект.ИспользуютсяДоговорыКонтрагентов, Объект.ПорядокРасчетов, Неопределено));
ПараметрыФормы.Вставить("ДоступноВнешнимПользователям", Объект.ДоступноВнешнимПользователям);
ПараметрыФормы.Вставить("Календарь", Объект.Календарь);
ПараметрыФормы.Вставить("ХозяйственнаяОперация", Объект.ХозяйственнаяОперация);
ПараметрыФормы.Вставить("ТребуетсяЗалогЗаТару", Объект.ВозвращатьМногооборотнуюТару И Объект.ТребуетсяЗалогЗаТару);
ПараметрыФормы.Вставить("УникальныйИдентификатор", УникальныйИдентификатор);
ПараметрыФормы.Вставить("АдресВоВременномХранилище", ПоместитьВоВременноеХранилищеНаСервере());
ПараметрыОплаты = Неопределено;
ОткрытьФорму("Справочник.СоглашенияСКлиентами.Форма.ФормаОплаты", ПараметрыФормы, ЭтаФорма,,,, Новый ОписаниеОповещения("НадписьОплатаНажатиеЗавершение", ЭтотОбъект), РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура НадписьОплатаНажатиеЗавершение(Результат, ДополнительныеПараметры) Экспорт
ПараметрыОплаты = Результат;
Если ПараметрыОплаты <> Неопределено Тогда
Модифицированность = Истина;
Объект.Согласован = Ложь;
Объект.ФормаОплаты = ПараметрыОплаты.ФормаОплаты;
Объект.Календарь = ПараметрыОплаты.Календарь;
Объект.ЭтапыГрафикаОплаты.Очистить();
Если ЗначениеЗаполнено(ПараметрыОплаты.АдресВоВременномХранилище) Тогда
ЗаполнитьЭтапыОплатыИзВременногоХранилищаСервер(ПараметрыОплаты.АдресВоВременномХранилище);
КонецЕсли;
НадписьОплата = ЭтапыОплатыКлиентСервер.НадписьЭтапыОплатаДляСоглашений(ЭтаФорма);
УстановитьДоступностьЭлементовПоСтатусуСервер();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура РассчитыватьДатуВозвратаТарыПоКалендарюПриИзменении(Элемент)
Объект.РассчитыватьДатуВозвратаТарыПоКалендарю = Булево(РассчитыватьДатуВозвратаТарыПоКалендарю);
Элементы.КалендарьВозвратаТары.Доступность = Объект.РассчитыватьДатуВозвратаТарыПоКалендарю И Объект.ВозвращатьМногооборотнуюТару;
Элементы.КалендарьВозвратаТары.АвтоОтметкаНезаполненного = Объект.РассчитыватьДатуВозвратаТарыПоКалендарю;
Если Объект.РассчитыватьДатуВозвратаТарыПоКалендарю Тогда
ЗаполнитьПроизводственныйКалендарьНаСервере();
Иначе
Объект.КалендарьВозвратаТары = ПредопределенноеЗначение("Справочник.ПроизводственныеКалендари.ПустаяСсылка");
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуИнтеграции(Команда)
ИнтеграцияС1СДокументооборотБазоваяФункциональностьКлиент.ВыполнитьПодключаемуюКомандуИнтеграции(Команда, ЭтаФорма, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)
СобытияФормКлиент.ВыполнитьПереопределяемуюКоманду(ЭтаФорма, Команда);
КонецПроцедуры
&НаКлиенте
Процедура УточнениеПроцентыСкидокНаценокПредставлениеОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ВидВызова = "УточнениеПроцентовСкидокНаценок";
АдресВХранилище = ПоместитьВХранилищеСтрокиТабличнойЧасти(ВидВызова);
ДополнительныеПараметры = Новый Структура();
СтруктураПараметров = Новый Структура("АдресВХранилище, ВидВызова, ДополнительныеПараметры", АдресВХранилище, ВидВызова, ДополнительныеПараметры);
ОповещениеПослеУточнения = Новый ОписаниеОповещения("НастройкаУточненийЗавершение", ЭтотОбъект);
ОткрытьФорму("ОбщаяФорма.ФормаНастройкиУточненийПоЦеновымГруппам", СтруктураПараметров, ЭтаФорма,,,, ОповещениеПослеУточнения, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура НастройкаУточненийЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Не Результат = Неопределено Тогда
ЗаполнитьНастройкиУточнений(Результат);
Модифицированность = Истина;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьНастройкиУточнений(Параметры)
ВидВызова = Параметры.ВидВызова;
ДополнительныеПараметры = Параметры.ДополнительныеПараметры;
Если ДополнительныеПараметры.Количество() Тогда
ЗаполнитьЗначенияСвойств(Объект, ДополнительныеПараметры);
КонецЕсли;
ПереданнаяТаблица = ПолучитьИзВременногоХранилища(Параметры.АдресВХранилище);
Если ВидВызова = "УточнениеПроцентовСкидокНаценок" Тогда
ТекущаяТаблица = Объект.ЦеновыеГруппы;
ЗагрузитьТабличнуюЧасть(ПереданнаяТаблица, ТекущаяТаблица);
ОбновитьПредставлениеУточнениеПроцентыСкидокНаценок();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗагрузитьТабличнуюЧасть(ПереданнаяТаблица, ТекущаяТаблица)
ТекущаяТаблица.Очистить();
ТекущаяТаблица.Загрузить(ПереданнаяТаблица);
КонецПроцедуры
&НаСервере
Процедура ОбновитьПредставлениеУточнениеПроцентыСкидокНаценок()
Если Объект.ЦеновыеГруппы.Количество() = 0 Тогда
УточнениеПроцентовСкидокНаценокПредставление = Новый ФорматированнаяСтрока(НСтр("ru = 'Уточнить максимальные % скидок (наценок) по ценовым группам'"),,,,"Изменить");
Иначе
УточнениеПроцентовСкидокНаценокПредставление = Новый ФорматированнаяСтрока(НСтр("ru = 'Есть уточнения максимальных % скидок (наценок) по ценовым группам'"),,,,"Изменить");
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
Процедура УстановитьУсловноеОформление()
УсловноеОформление.Элементы.Очистить();
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ДатаНачалаДействия.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Регулярное");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ДатаНачалаДействия");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ДатаНачалаДействия.Имя);
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Регулярное");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ДатаНачалаДействия");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.СуммаСоглашения.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Регулярное");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.СуммаДокумента");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.СуммаСоглашения.Имя);
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Регулярное");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.СуммаДокумента");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.КоличествоПериодов.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Регулярное");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.КоличествоПериодов");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.КоличествоПериодов.Имя);
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Регулярное");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.КоличествоПериодов");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.Период.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Регулярное");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Период");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.Период.Имя);
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Регулярное");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Период");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.Организация.Имя);
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ДоступноВнешнимПользователям");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Организация");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.Организация.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ДоступноВнешнимПользователям");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Организация");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ВидЦен.Имя);
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ДоступноВнешнимПользователям");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ВидЦен");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ВидЦен.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ДоступноВнешнимПользователям");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ВидЦен");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ГрафикОплаты.Имя);
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ДоступноВнешнимПользователям");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ГрафикОплаты");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ГрафикОплаты.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ДоступноВнешнимПользователям");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ГрафикОплаты");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ВидПлана.Имя);
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ДоступноВнешнимПользователям");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ВидПлана");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ВидПлана.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ДоступноВнешнимПользователям");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ВидПлана");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Истина);
НоменклатураСервер.УстановитьУсловноеОформлениеЕдиницИзмерения(ЭтаФорма);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЦена.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ВидЦены");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
ЦеныПредприятияЗаполнениеСервер.УстановитьУсловноеОформлениеВидовЦен(ЭтаФорма);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЦена.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ВидЦены");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.НезаполненноеПолеТаблицы);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<Не используется>'"));
НоменклатураСервер.УстановитьУсловноеОформлениеХарактеристикНоменклатуры(ЭтаФорма);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЦена.Имя);
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ВидЦены");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Цена");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЦена.Имя);
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ВидЦены");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Цена");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ЦеновыеГруппыВидЦен.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ОграничиватьРучныеСкидки");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
СкидкиНаценкиСервер.УстановитьУсловноеОформлениеФормыИсточникаДействияСкидок(УсловноеОформление, Элементы);
КонецПроцедуры
#Область ПриИзмененииРеквизитов
&НаСервере
Процедура ПриИзмененииПартнераСервер()
Соглашение = Объект.Соглашение;
СправочникОбъект = РеквизитФормыВЗначение("Объект");
СправочникОбъект.ЗаполнитьУсловияПродажПоУмолчанию();
ЗначениеВРеквизитФормы(СправочникОбъект, "Объект");
Если Соглашение <> Объект.Соглашение Тогда
ПриИзмененииСоглашенияСервер(Ложь);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииСоглашенияСервер(ЗаполнитьУсловияПродаж = Истина)
Если ЗаполнитьУсловияПродаж Тогда
СправочникОбъект = РеквизитФормыВЗначение("Объект");
СправочникОбъект.ЗаполнитьУсловияПродажПоСоглашению();
Если Объект.Ссылка.Пустая() Тогда
ЗначениеКопирования = Объект.Соглашение;
Иначе
СправочникОбъект.ЗаполнитьСкидкиИНаценкиПоСоглашению();
КонецЕсли;
ЗначениеВРеквизитФормы(СправочникОбъект, "Объект");
КонецЕсли;
РассчитыватьДатуВозвратаТарыПоКалендарю = Число(Объект.РассчитыватьДатуВозвратаТарыПоКалендарю);
ИспользуютсяДоговорыКонтрагентов = Число(Объект.ИспользуютсяДоговорыКонтрагентов);
УстановитьВидимостьЭлементовПоРегулярностиСервер();
УстановитьВидимостьЭлементовПоОперацииСервер();
ОбновитьВидимостьЭлементовОграниченияРучныхСкидок(ЭтотОбъект);
ОбновитьДоступностьЭлементовВозвратнойТары(ЭтотОбъект);
ОбновитьВидимостьСдвигаПереходаПраваСобственности(ЭтотОбъект);
Если Не ИспользоватьНесколькоВидовЦен Тогда
ИспользованиеПрайсЛиста = ?(ЗначениеЗаполнено(Объект.ВидЦен), 1, 0);
УстановитьДоступностьИспользованияПрайсЛиста();
КонецЕсли;
ЗаполнитьПризнакХарактеристикиИспользуются = Новый Структура("Номенклатура", "ХарактеристикиИспользуются");
НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(
Объект.Товары,
Новый Структура("ЗаполнитьПризнакХарактеристикиИспользуются", ЗаполнитьПризнакХарактеристикиИспользуются));
НадписьОплата = ЭтапыОплатыКлиентСервер.НадписьЭтапыОплатаДляСоглашений(ЭтаФорма);
НастроитьЭлементыДоговорыКонтрагентовИПорядокРасчетов();
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииВалютыСервер(НоваяВалюта)
СтараяВалюта = ВалютаДокумента;
ДатаДокумента = ?(ЗначениеЗаполнено(Объект.Дата), Объект.Дата, ТекущаяДатаСеанса());
СтруктураКурсовСтаройВалюты = РаботаСКурсамиВалютУТ.ПолучитьКурсВалюты(СтараяВалюта, ДатаДокумента);
СтруктураКурсовНовойВалюты = РаботаСКурсамиВалютУТ.ПолучитьКурсВалюты(НоваяВалюта, ДатаДокумента);
Ценообразование.ПересчитатьСуммыВВалютуТовары(
Объект,
СтараяВалюта,
НоваяВалюта,
СтруктураКурсовСтаройВалюты,
СтруктураКурсовНовойВалюты,
Ложь);
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииРегулярностиСервер()
Если Объект.Регулярное Тогда
Объект.Период = Метаданные.Справочники.СоглашенияСКлиентами.Реквизиты.Период.ЗначениеЗаполнения;
Объект.КоличествоПериодов = Метаданные.Справочники.СоглашенияСКлиентами.Реквизиты.КоличествоПериодов.ЗначениеЗаполнения;
Объект.СуммаДокумента = Метаданные.Справочники.СоглашенияСКлиентами.Реквизиты.СуммаДокумента.ЗначениеЗаполнения;
КонецЕсли;
УстановитьВидимостьЭлементовПоРегулярностиСервер();
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииХозяйственнойОперацииСервер()
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию
Или Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи Тогда
Если ЗначениеЗаполнено(Объект.ГрафикОплаты) Тогда
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ГрафикиОплаты.ТолькоКредитныеЭтапы КАК ТолькоКредитныеЭтапы
|ИЗ
| Справочник.ГрафикиОплаты КАК ГрафикиОплаты
|ГДЕ
| ГрафикиОплаты.Ссылка = &ГрафикОплаты";
Запрос.УстановитьПараметр("ГрафикОплаты", Объект.ГрафикОплаты);
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Выборка.Следующий();
Если Не Выборка.ТолькоКредитныеЭтапы Тогда
Объект.ГрафикОплаты = Справочники.ГрафикиОплаты.ПустаяСсылка();
КонецЕсли;
КонецЕсли;
МассивУдаляемыхСтрок = Новый Массив;
Для Каждого СтрокаОплаты Из Объект.ЭтапыГрафикаОплаты Цикл
Если СтрокаОплаты.ВариантОплаты <> Перечисления.ВариантыКонтроляОплатыКлиентом.КредитСдвиг
И СтрокаОплаты.ВариантОплаты <> Перечисления.ВариантыКонтроляОплатыКлиентом.КредитПослеОтгрузки Тогда
МассивУдаляемыхСтрок.Добавить(СтрокаОплаты);
КонецЕсли;
КонецЦикла;
Для Каждого УдаляемаяСтрока Из МассивУдаляемыхСтрок Цикл
Объект.ЭтапыГрафикаОплаты.Удалить(УдаляемаяСтрока);
КонецЦикла;
КоличествоЭтапов = Объект.ЭтапыГрафикаОплаты.Количество();
Если КоличествоЭтапов =1 Тогда
Объект.ЭтапыГрафикаОплаты[0].ПроцентПлатежа = 100;
ИначеЕсли КоличествоЭтапов = 0
И Не ЗначениеЗаполнено(Объект.ГрафикОплаты)
И ПолучитьФункциональнуюОпцию("ИспользоватьУпрощеннуюСхемуОплатыВПродажах") Тогда
СтрокаЭтапа = Объект.ЭтапыГрафикаОплаты.Добавить();
СтрокаЭтапа.ВариантОплаты = Перечисления.ВариантыКонтроляОплатыКлиентом.КредитСдвиг;
СтрокаЭтапа.ВариантОтсчета = Перечисления.ВариантыОтсчетаДатыПлатежа.ОтДатыОтгрузки;
СтрокаЭтапа.ПроцентПлатежа = 100;
КонецЕсли;
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи Тогда
Объект.ДоступноВнешнимПользователям = Ложь;
ИспользуютсяДоговорыКонтрагентов = 1;
Объект.ИспользуютсяДоговорыКонтрагентов = Истина;
КонецЕсли;
Объект.ТребуетсяЗалогЗаТару = Ложь;
Объект.ОграничиватьРучныеСкидки = Ложь;
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи
И Объект.ВозвращатьМногооборотнуюТару Тогда
Объект.ВозвращатьМногооборотнуюТару = Ложь;
ОбновитьДоступностьЭлементовВозвратнойТары(ЭтотОбъект);
КонецЕсли;
Объект.ВалютаВзаиморасчетов = Объект.Валюта;
Объект.ПроцентРучнойСкидки = Метаданные.Справочники.СоглашенияСКлиентами.Реквизиты.ПроцентРучнойСкидки.ЗначениеЗаполнения;
Объект.ПроцентРучнойНаценки = Метаданные.Справочники.СоглашенияСКлиентами.Реквизиты.ПроцентРучнойНаценки.ЗначениеЗаполнения;
НадписьОплата = ЭтапыОплатыКлиентСервер.НадписьЭтапыОплатаДляСоглашений(ЭтаФорма);
Объект.ВозможнаРеализацияБезПереходаПраваСобственности = Ложь;
ЗаполнитьОплатуВВалютеГруппуФинансовогоУчета(Объект.Организация,
Объект.ВалютаВзаиморасчетов,
Объект.ОплатаВВалюте,
Объект.ГруппаФинансовогоУчета,
Объект.ИспользуютсяДоговорыКонтрагентов,
Объект.ХозяйственнаяОперация);
КонецЕсли;
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию Тогда
Если ТолькоКомиссионныеПродажи25 ИЛИ НЕ ВыбиратьВерсиюКомиссионныхПродаж Тогда
Объект.КомиссионныеПродажи25 = Истина;
КонецЕсли;
Если Объект.КомиссионныеПродажи25 Тогда
Объект.ДоступноВнешнимПользователям = Ложь;
ИспользуютсяДоговорыКонтрагентов = 1;
Объект.ИспользуютсяДоговорыКонтрагентов = Истина;
Объект.ВидЦен = Неопределено;
ОбновитьФлажокИспользоватьОбщийВидЦены();
НастроитьВидимостьДоступностьЭлементовНастройкиОбщегоВидаЦен(ЭтотОбъект);
Если ЗначениеЗаполнено(Объект.ИндивидуальныйВидЦены) Тогда
ОтключитьИндивидуальныйВидЦенСервер();
КонецЕсли;
ОбновитьФлажокИспользоватьИндивидуальныйВидЦены();
НастроитьВидимостьДоступностьЭлементовНастройкиИндивидуальногоВидаЦен(ЭтотОбъект);
КонецЕсли;
Если Объект.КомиссионныеПродажи25
И Объект.ВозвращатьМногооборотнуюТару Тогда
Объект.ВозвращатьМногооборотнуюТару = Ложь;
Объект.ТребуетсяЗалогЗаТару = Ложь;
ОбновитьДоступностьЭлементовВозвратнойТары(ЭтаФорма);
КонецЕсли;
Иначе
Объект.КомиссионныеПродажи25 = Ложь;
КонецЕсли;
Если Объект.ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию Тогда
Объект.СпособРасчетаВознаграждения = Метаданные.Справочники.СоглашенияСКлиентами.Реквизиты.СпособРасчетаВознаграждения.ЗначениеЗаполнения;
Объект.ПроцентВознаграждения = Метаданные.Справочники.СоглашенияСКлиентами.Реквизиты.ПроцентВознаграждения.ЗначениеЗаполнения;
Объект.УдержатьВознаграждение = Метаданные.Справочники.СоглашенияСКлиентами.Реквизиты.УдержатьВознаграждение.ЗначениеЗаполнения;
КонецЕсли;
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПоставкаПодПринципала Тогда
Объект.ОбеспечиватьЗаказыОбособленно = Истина;
ИспользуютсяДоговорыКонтрагентов = Истина;
Объект.ИспользуютсяДоговорыКонтрагентов = Истина;
КонецЕсли;
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию
ИЛИ Объект.КомиссионныеПродажи25 Тогда
НоваяСвязь = Новый СвязьПараметраВыбора("Отбор.КомиссионныеПродажи25", "Объект.КомиссионныеПродажи25");
МассивСвязиПараметровВыбора = Новый Массив();
МассивСвязиПараметровВыбора.Добавить(НоваяСвязь);
Элементы.Соглашение.СвязиПараметровВыбора = Новый ФиксированныйМассив(МассивСвязиПараметровВыбора);
Иначе
Элементы.Соглашение.СвязиПараметровВыбора = Новый ФиксированныйМассив(Новый Массив());
КонецЕсли;
Если Объект.ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.РеализацияКлиенту Тогда
Объект.СрокПереходаПраваСобственности = 0;
КонецЕсли;
УстановитьВидимостьЭлементовПоОперацииСервер();
НастроитьЭлементыДоговорыКонтрагентовИПорядокРасчетов();
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
&НаСервере
Процедура ИспользуютсяДоговорыКонтрагентовПриИзмененииСервер()
Если НЕ Объект.ИспользуютсяДоговорыКонтрагентов Тогда
Объект.ВалютаВзаиморасчетов = Объект.Валюта;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ИспользоватьОбщийВидЦеныПриИзмененииНаКлиенте()
Если НЕ ИспользоватьОбщийВидЦены Тогда
Объект.ВидЦен = ПредопределенноеЗначение("Справочник.ВидыЦен.ПустаяСсылка");
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ИспользоватьИндивидуальныйВидЦеныПриИзмененииНаКлиенте()
Если ИспользоватьИндивидуальныйВидЦены Тогда
Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
Возврат;
КонецЕсли;
РезультатОтключения = НайтиИндивидуальныйВидЦенСервер();
Иначе
Если Объект.ИндивидуальныйВидЦены.Пустая() Тогда
Возврат;
КонецЕсли;
РезультатОтключения = ОтключитьИндивидуальныйВидЦенСервер();
Если Не РезультатОтключения.Результат Тогда
ИспользоватьИндивидуальныйВидЦены = Истина;
ОчиститьСообщения();
ОбщегоНазначенияКлиент.СообщитьПользователю(
СтрШаблон(НСтр("ru='Возникла ошибка при отключении индивидуального прайс листа %1'"), РезультатОтключения.ОписаниеОшибки),
Объект.Ссылка,
);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ОтключитьИндивидуальныйВидЦенСервер()
РезультатОтключения = Справочники.ВидыЦен.ОтключитьИндивидуальныйВидЦен(Объект.ИндивидуальныйВидЦены);
Если РезультатОтключения.Результат Тогда
Объект.ИндивидуальныйВидЦены = Справочники.ВидыЦен.ПустаяСсылка();
ОбновитьИндивидуальныйВидЦеныПредставление();
КонецЕсли;
Возврат РезультатОтключения;
КонецФункции
&НаСервере
Функция НайтиИндивидуальныйВидЦенСервер()
РезультатПоиска = Справочники.ВидыЦен.НайтиИндивидуальныйВидЦенСервер(Объект.Ссылка);
Если РезультатПоиска.Результат Тогда
Объект.ИндивидуальныйВидЦены = РезультатПоиска.Ссылка;
ОбновитьИндивидуальныйВидЦеныПредставление();
КонецЕсли;
Возврат РезультатПоиска;
КонецФункции
#КонецОбласти
#Область Прочее
&НаСервере
Процедура ЗаполнитьСписокВыбораОпераций()
Если Не ПолучитьФункциональнуюОпциюФормы("ИспользоватьКомиссиюПриПродажах") Тогда
ЭлементСписка = Элементы.ХозяйственнаяОперация.СписокВыбора.НайтиПоЗначению(Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию);
Если ЭлементСписка <> Неопределено Тогда
Элементы.ХозяйственнаяОперация.СписокВыбора.Удалить(ЭлементСписка);
КонецЕсли;
КонецЕсли;
ИспользоватьПередачуНаОтветственноеХранение = ПолучитьФункциональнуюОпциюФормы(
"ИспользоватьПередачуНаОтветственноеХранениеСПравомПродажи");
Если Не ИспользоватьПередачуНаОтветственноеХранение Тогда
ЭлементСписка = Элементы.ХозяйственнаяОперация.СписокВыбора.НайтиПоЗначению(Перечисления.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи);
Если ЭлементСписка <> Неопределено Тогда
Элементы.ХозяйственнаяОперация.СписокВыбора.Удалить(ЭлементСписка);
КонецЕсли;
КонецЕсли;
Если Не ИспользоватьОказаниеАгентскихУслугПриЗакупке Тогда
ЭлементСписка = Элементы.ХозяйственнаяОперация.СписокВыбора.НайтиПоЗначению(
Перечисления.ХозяйственныеОперации.ПоставкаПодПринципала);
Если ЭлементСписка <> Неопределено Тогда
Элементы.ХозяйственнаяОперация.СписокВыбора.Удалить(ЭлементСписка);
КонецЕсли;
КонецЕсли;
ЕдинственнаяОперация = Элементы.ХозяйственнаяОперация.СписокВыбора.Количество() = 1;
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ХозяйственнаяОперация",
"ТолькоПросмотр",
ЕдинственнаяОперация И ЗначениеЗаполнено(Объект.ХозяйственнаяОперация));
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьЗакладок()
Элементы.СтраницаУточнениеПоЦеновымГруппам.Видимость = Не ИспользуетсяЦенообразование25;
Элементы.СтраницаУточнениеПоТоварам.Видимость = Не ИспользуетсяЦенообразование25;
Элементы.ГруппаУточнениеПроцентыСкидокНаценокПоЦеновымГруппам.Видимость = ИспользуетсяЦенообразование25;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ОбновитьДоступностьЭлементовПланыПродаж(Форма)
ЭлементыФормы = Форма.Элементы;
ЭлементыФормы.ВидПлана.Доступность = ЗначениеЗаполнено(Форма.Объект.СценарийПланирования);
ЭлементыФормы.СтраницыПланыЗакупок.ТекущаяСтраница = ЭлементыФормы.СтраницаПланыЗакупокВидимы;
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьДоступностьОбщегоВидаЦен()
ИспользоватьОбщийВидЦены = ЗначениеЗаполнено(Объект.ВидЦен) ИЛИ Объект.ДоступноВнешнимПользователям;
НастроитьВидимостьДоступностьЭлементовНастройкиОбщегоВидаЦен(ЭтаФорма);
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииСозданииНаСервере()
ВалютаДокумента = Объект.Валюта;
СтатусДокумента = Объект.Статус;
РассчитыватьДатуВозвратаТарыПоКалендарю = Число(Объект.РассчитыватьДатуВозвратаТарыПоКалендарю);
РазбиватьРасходныеОрдераПоРаспоряжениямЧисло = Число(Объект.РазбиватьРасходныеОрдераПоРаспоряжениям);
ИспользоватьЗаказыКлиентов = ПолучитьФункциональнуюОпцию("ИспользоватьЗаказыКлиентов");
ИспользоватьСоглашенияСКлиентами = ПолучитьФункциональнуюОпцию("ИспользоватьСоглашенияСКлиентами");
ИспользоватьНесколькоВидовЦен = ПолучитьФункциональнуюОпцию("ИспользоватьНесколькоВидовЦен");
ИспользоватьСкидкиНаценки = ПравоДоступа("Чтение", Метаданные.Справочники.СкидкиНаценки);
ВидимостьЭтаповОплаты = Не ПолучитьФункциональнуюОпцию("ИспользоватьГрафикиОплаты");
ИспользоватьДоговорыСКлиентами = ПолучитьФункциональнуюОпцию("ИспользоватьДоговорыСКлиентами");
ТолькоКомиссионныеПродажи25 = ПолучитьФункциональнуюОпцию("ТолькоКомиссионныеПродажи25");
ВыбиратьВерсиюКомиссионныхПродаж = ПолучитьФункциональнуюОпцию("ВыбиратьВерсиюКомиссионныхПродаж")
Или (ЗначениеЗаполнено(Объект.Ссылка) И Не Объект.КомиссионныеПродажи25);
Элементы.НадписьОплата.Видимость = ВидимостьЭтаповОплаты;
Элементы.ГрафикОплаты.Видимость = Не ВидимостьЭтаповОплаты;
Элементы.ГруппаОбщийВидЦены.Видимость = ИспользоватьНесколькоВидовЦен;
Элементы.ГруппаИндивидуальныйВидЦены.Видимость= ИспользоватьНесколькоВидовЦен;
Элементы.ИспользованиеПрайсЛиста.Видимость = Не ИспользоватьНесколькоВидовЦен;
Элементы.ГруппаСкидкиНаценки.Видимость = ИспользоватьСкидкиНаценки;
Элементы.УстановитьСтатусСкидки.Видимость = ПравоДоступа("Изменение", Метаданные.РегистрыСведений.ДействиеСкидокНаценок);
Элементы.СхемаКомиссии.Видимость = Не ТолькоКомиссионныеПродажи25 И ИспользоватьДоговорыСКлиентами И ВыбиратьВерсиюКомиссионныхПродаж;
УстановитьВидимостьЭлементовПоРегулярностиСервер();
УстановитьВидимостьЭлементовПоОперацииСервер();
УстановитьДоступностьЭлементовПоСтатусуСервер();
УстановитьВидимостьКоманд();
НастроитьСписокВыбораСхемыКомиссии();
ЗаполнитьПризнакХарактеристикиИспользуются = Новый Структура("Номенклатура", "ХарактеристикиИспользуются");
НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(Объект.Товары,
Новый Структура("ЗаполнитьПризнакХарактеристикиИспользуются", ЗаполнитьПризнакХарактеристикиИспользуются));
ИспользуютсяДоговорыКонтрагентов = Число(Объект.ИспользуютсяДоговорыКонтрагентов);
НадписьОплата = ЭтапыОплатыКлиентСервер.НадписьЭтапыОплатаДляСоглашений(ЭтаФорма);
Если Не ИспользоватьНесколькоВидовЦен Тогда
ВидЦенПрайсЛист = Справочники.ВидыЦен.ВидЦеныПоУмолчанию(Неопределено);
ИспользованиеПрайсЛиста = ?(ЗначениеЗаполнено(Объект.ВидЦен), 1, 0);
УстановитьДоступностьИспользованияПрайсЛиста();
КонецЕсли;
НастроитьЭлементыДоговорыКонтрагентовИПорядокРасчетов();
ОбновитьДоступностьЭлементовВозвратнойТары(ЭтаФорма);
ОбновитьДоступностьЭлементовПланыПродаж(ЭтаФорма);
СкладПриИзмененииНаСервере();
УстановитьЗаголовокФормы();
КонецПроцедуры
&НаСервере
Процедура УстановитьДоступностьЭлементовПоСтатусуСервер()
УстановитьПодписку = Ложь;
Если Объект.Статус = Перечисления.СтатусыСоглашенийСКлиентами.НеСогласовано Тогда
УстановитьПодписку = Ложь;
ИначеЕсли Объект.Статус = Перечисления.СтатусыСоглашенийСКлиентами.Закрыто Или
Объект.Статус = Перечисления.СтатусыСоглашенийСКлиентами.Действует Тогда
УстановитьПодписку = Объект.Согласован;
КонецЕсли;
МассивЭлементов = Новый Массив;
МассивЭлементов.Добавить("Дата");
МассивЭлементов.Добавить("Номер");
МассивЭлементов.Добавить("Партнер");
МассивЭлементов.Добавить("СегментПартнеров");
МассивЭлементов.Добавить("Соглашение");
МассивЭлементов.Добавить("Регулярное");
МассивЭлементов.Добавить("Период");
МассивЭлементов.Добавить("КоличествоПериодов");
МассивЭлементов.Добавить("СуммаСоглашения");
МассивЭлементов.Добавить("ДатаНачалаДействия");
МассивЭлементов.Добавить("ДатаОкончанияДействия");
МассивЭлементов.Добавить("Контрагент");
МассивЭлементов.Добавить("Организация");
МассивЭлементов.Добавить("Валюта");
МассивЭлементов.Добавить("ЦенаВключаетНДС");
МассивЭлементов.Добавить("ВидЦен");
МассивЭлементов.Добавить("ГрафикОплаты");
МассивЭлементов.Добавить("ОплатаВВалюте");
МассивЭлементов.Добавить("Склад");
МассивЭлементов.Добавить("СрокПоставки");
МассивЭлементов.Добавить("СегментНоменклатуры");
МассивЭлементов.Добавить("ХозяйственнаяОперация");
МассивЭлементов.Добавить("ПроцентРучнойСкидки");
МассивЭлементов.Добавить("ПроцентРучнойНаценки");
МассивЭлементов.Добавить("ОграничиватьРучныеСкидки");
МассивЭлементов.Добавить("ЦеновыеГруппы");
МассивЭлементов.Добавить("Товары");
МассивЭлементов.Добавить("ДоступноВнешнимПользователям");
МассивЭлементов.Добавить("ИспользуютсяДоговорыКонтрагентов");
МассивЭлементов.Добавить("ПорядокРасчетов");
МассивЭлементов.Добавить("ИспользуетсяВРаботеТорговыхПредставителей");
МассивЭлементов.Добавить("ВозвращатьМногооборотнуюТару");
МассивЭлементов.Добавить("СрокВозвратаМногооборотнойТары");
МассивЭлементов.Добавить("РассчитыватьДатуВозвратаТарыПоКалендарю");
МассивЭлементов.Добавить("ТребуетсяЗалогЗаТару");
МассивЭлементов.Добавить("УстановитьИнтервал");
МассивЭлементов.Добавить("ЦеновыеГруппыЗаполнитьВидЦенВыделенныхСтрокЦеновыеГруппы");
МассивЭлементов.Добавить("ТоварыЗаполнитьВидЦенВыделенныхСтрокТовары");
МассивЭлементов.Добавить("ТоварыДобавитьТоварыПоОтбору");
ОбщегоНазначенияУТ.УстановитьПодпискуНаСобытияИзмененияЭлементовФормы(ЭтаФорма, МассивЭлементов, УстановитьПодписку);
КонецПроцедуры
&НаСервере
Процедура УстановитьДоступностьИспользованияПрайсЛиста()
ПризнакНДСПрайсЛиста = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ВидЦенПрайсЛист, "ЦенаВключаетНДС");
Элементы.ИспользованиеПрайсЛиста.Доступность = (ПризнакНДСПрайсЛиста = Объект.ЦенаВключаетНДС);
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьЭлементовПоРегулярностиСервер()
МассивЭлементов = Новый Массив();
МассивЭлементов.Добавить("Период");
МассивЭлементов.Добавить("КоличествоПериодов");
МассивЭлементов.Добавить("ОписаниеРегулярныхУсловий");
МассивЭлементов.Добавить("СуммаСоглашения");
МассивЭлементов.Добавить("СуммаСоглашенияВалюта");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, МассивЭлементов, "Видимость", Объект.Регулярное);
Если Объект.Регулярное Тогда
ОписаниеРегулярныхУсловий = ОписаниеРегулярныхУсловий(Объект.КоличествоПериодов, Объект.Период, Объект.СуммаДокумента, ВалютаДокумента);
Иначе
ОписаниеРегулярныхУсловий = "";
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьЭлементовПоОперацииСервер()
Перем МассивВсехРеквизитов;
Перем МассивРеквизитовОперации;
Справочники.СоглашенияСКлиентами.ЗаполнитьИменаРеквизитовПоХозяйственнойОперации(
Объект.ХозяйственнаяОперация,
МассивВсехРеквизитов,
МассивРеквизитовОперации);
ДенежныеСредстваСервер.УстановитьВидимостьЭлементовПоМассиву(
Элементы,
МассивВсехРеквизитов,
МассивРеквизитовОперации);
МассивПараметров = Новый Массив;
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию
Или Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи Тогда
МассивПараметров.Добавить(Новый ПараметрВыбора("Отбор.ТолькоКредитныеЭтапы", Истина));
КонецЕсли;
Элементы.ГрафикОплаты.ПараметрыВыбора = Новый ФиксированныйМассив(МассивПараметров);
МассивЭлементов = Новый Массив;
МассивЭлементов.Добавить("СпособРасчетаВознаграждения");
МассивЭлементов.Добавить("ПроцентВознаграждение");
МассивЭлементов.Добавить("УдержатьВознаграждение");
Если НЕ ТолькоКомиссионныеПродажи25 И ПолучитьФункциональнуюОпцию("ИспользоватьДоговорыСКлиентами")
И ВыбиратьВерсиюКомиссионныхПродаж Тогда
МассивЭлементов.Добавить("СхемаКомиссии");
КонецЕсли;
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы,
МассивЭлементов,
"Видимость",
Объект.ХозяйственнаяОперация = ПеречислениеПередачаНаКомиссию());
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(
Элементы,
"ОписаниеКомиссионногоРасчетаДляОтчетаКомиссионера",
"Видимость",
Объект.КомиссионныеПродажи25
И Объект.ХозяйственнаяОперация = ПеречислениеПередачаНаКомиссию());
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(
Элементы,
"ГруппаВидЦенИспользованиеПрайсЛиста",
"Видимость",
НЕ (Объект.КомиссионныеПродажи25
И Объект.ХозяйственнаяОперация = ПеречислениеПередачаНаКомиссию()));
Элементы.ЦенаВключаетНДС.ОтображениеПредупрежденияПриРедактировании = ?( Объект.КомиссионныеПродажи25
И Объект.ХозяйственнаяОперация = ПеречислениеПередачаНаКомиссию(),
ОтображениеПредупрежденияПриРедактировании.НеОтображать, ОтображениеПредупрежденияПриРедактировании.Отображать);
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(
Элементы,
"ДоступноВнешнимПользователям",
"Видимость",
Объект.ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи);
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ВозможнаРеализацияБезПереходаПраваСобственности",
"Видимость",
Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РеализацияКлиенту
ИЛИ (Объект.ХозяйственнаяОперация = ПеречислениеПередачаНаКомиссию() И Объект.КомиссионныеПродажи25));
Если ИспользоватьСкидкиНаценки Тогда
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(
Элементы,
"ГруппаСкидкиНаценки",
"Видимость",
Объект.ХозяйственнаяОперация <> ПеречислениеПередачаНаКомиссию()
И Объект.ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи);
КонецЕсли;
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию Тогда
СпособРасчетаВознагражденияПриИзмененииСервер();
КонецЕсли;
НоменклатураСервер.УстановитьПараметрыВыбораНоменклатуры(Объект.ХозяйственнаяОперация, Элементы.ТоварыНоменклатура, Истина);
ОбновитьДоступностьЭлементовПланыПродаж(ЭтотОбъект);
ОбновитьВидимостьЭлементовОграниченияРучныхСкидок(ЭтотОбъект);
ОбновитьВидимостьСдвигаПереходаПраваСобственности(ЭтотОбъект);
Элементы.ВозвращатьМногооборотнуюТару.Доступность = (Не Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПоставкаПодПринципала)
И Не (Объект.ХозяйственнаяОперация = ПеречислениеПередачаНаКомиссию() И Объект.КомиссионныеПродажи25)
И Не (Объект.ХозяйственнаяОперация = ПеречислениеПередачаНаХранение());
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьКоманд()
МассивЭлементов = Новый Массив();
МассивЭлементов.Добавить("ФормаСкопировать");
МассивЭлементов.Добавить("ФормаУдалить");
МассивЭлементов.Добавить("ФормаУстановитьПометкуУдаления");
МассивЭлементов.Добавить("ФормаГруппаКнопок");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, МассивЭлементов, "Видимость", ПолучитьФункциональнуюОпцию("ИспользоватьСоглашенияСКлиентами"));
КонецПроцедуры
&НаСервере
Процедура УстановитьДоступностьКомандДляВнешнегоПользователя()
МассивЭлементов = Новый Массив();
МассивЭлементов.Добавить("ЦеновыеГруппыЗаполнитьВидЦенВыделенныхСтрокЦеновыеГруппы");
МассивЭлементов.Добавить("ТоварыЗаполнитьВидЦенВыделенныхСтрокТовары");
МассивЭлементов.Добавить("УстановитьИнтервал");
ДоступностьКоманд = ПравоДоступа("Изменение", Метаданные.Справочники.СоглашенияСКлиентами);
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, МассивЭлементов, "Видимость", ДоступностьКоманд);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьВидЦенВыделенныхСтрокТоварыСервер(ВидЦен)
Для Каждого ТекущаяСтрока Из Элементы.Товары.ВыделенныеСтроки Цикл
СтрокаТаблицы = Объект.Товары.НайтиПоИдентификатору(ТекущаяСтрока);
Если СтрокаТаблицы = Неопределено Тогда
Продолжить;
КонецЕсли;
СтрокаТаблицы.ВидЦены = ВидЦен;
Если СтрокаТаблицы.Цена <> 0 Тогда
СтрокаТаблицы.Цена = 0;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ОбновитьЭлементыДополнительныхРеквизитов()
УправлениеСвойствами.ОбновитьЭлементыДополнительныхРеквизитов(ЭтаФорма);
КонецПроцедуры
&НаСервере
Процедура ДобавитьТоварыПоОтборуНаСервере(АдресВоВременномХранилище)
ТаблицаТовары = ПолучитьИзВременногоХранилища(АдресВоВременномХранилище);
Для Каждого ТекСтрока Из ТаблицаТовары Цикл
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("Номенклатура", ТекСтрока.Номенклатура);
ПараметрыОтбора.Вставить("Характеристика", ТекСтрока.Характеристика);
НайденныеСтроки = Объект.Товары.НайтиСтроки(ПараметрыОтбора);
Если НайденныеСтроки.Количество() = 0 Тогда
НоваяСтрока = Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, ТекСтрока);
КонецЕсли;
КонецЦикла;
ЗаполнитьПризнакХарактеристикиИспользуются = Новый Структура("Номенклатура", "ХарактеристикиИспользуются");
НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(
Объект.Товары,
Новый Структура("ЗаполнитьПризнакХарактеристикиИспользуются", ЗаполнитьПризнакХарактеристикиИспользуются));
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьВидЦенВыделенныхСтрокЦеновыеГруппыСервер(ВидЦен)
Для Каждого ТекущаяСтрока Из Элементы.ЦеновыеГруппы.ВыделенныеСтроки Цикл
СтрокаТаблицы = Объект.ЦеновыеГруппы.НайтиПоИдентификатору(ТекущаяСтрока);
Если СтрокаТаблицы = Неопределено Тогда
Продолжить;
КонецЕсли;
СтрокаТаблицы.ВидЦен = ВидЦен;
КонецЦикла;
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ЗаполнитьГруппуФинансовогоУчета(Организация, ВалютаВзаиморасчетов, ХозяйственнаяОперация, ГруппаФинансовогоУчета)
ГруппаФинансовогоУчета = Справочники.ГруппыФинансовогоУчетаРасчетов.ПолучитьГруппуФинансовогоУчетаПоУмолчанию(Организация, ВалютаВзаиморасчетов, ХозяйственнаяОперация);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ОписаниеРегулярныхУсловий(КоличествоПериодов, Период, СуммаДокумента, ВалютаДокумента)
Если КоличествоПериодов = 0 Или Период = ПредопределенноеЗначение("Перечисление.Периодичность.ПустаяСсылка") Тогда
Возврат "";
КонецЕсли;
СоответствиеПериодов = Новый Соответствие;
ПредставлениеКоличестваПериодов = "";
ОстатокОтДеления10 = КоличествоПериодов % 10;
ОстатокОтДеления100 = КоличествоПериодов % 100;
ПериодСтрокой = Строка(Период);
СоответствиеПериодов.Вставить("День", НСтр("ru='каждый день'"));
СоответствиеПериодов.Вставить("Неделя", НСтр("ru='каждую неделю'"));
СоответствиеПериодов.Вставить("Декада", НСтр("ru='каждую декаду'"));
СоответствиеПериодов.Вставить("Месяц", НСтр("ru='каждый месяц'"));
СоответствиеПериодов.Вставить("Квартал", НСтр("ru='каждый квартал'"));
СоответствиеПериодов.Вставить("Полугодие", НСтр("ru='каждое полугодие'"));
СоответствиеПериодов.Вставить("Год", НСтр("ru='каждый год'"));
Если ОстатокОтДеления10 = 1
И КоличествоПериодов <> 11
И ОстатокОтДеления100 <> 11 Тогда
ПредставлениеКоличестваПериодов = Строка(КоличествоПериодов) + " " + НСтр("ru='периода.'");
Иначе
ПредставлениеКоличестваПериодов = Строка(КоличествоПериодов) + " " + НСтр("ru='периодов.'");
КонецЕсли;
ОписаниеРегулярныхУсловий = НСтр("ru='Поставки товаров должны осуществляться %ПериодСтрокой% на сумму %СуммаДокумента% %ВалютаДокумента% в течение %ПредставлениеКоличестваПериодов%'");
ОписаниеРегулярныхУсловий = СтрЗаменить(ОписаниеРегулярныхУсловий, "%ПредставлениеКоличестваПериодов%", ПредставлениеКоличестваПериодов);
ОписаниеРегулярныхУсловий = СтрЗаменить(ОписаниеРегулярныхУсловий, "%ПериодСтрокой%", СоответствиеПериодов.Получить(ПериодСтрокой));
ОписаниеРегулярныхУсловий = СтрЗаменить(ОписаниеРегулярныхУсловий, "%СуммаДокумента%", СуммаДокумента);
ОписаниеРегулярныхУсловий = СтрЗаменить(ОписаниеРегулярныхУсловий, "%ВалютаДокумента%", ВалютаДокумента);
Возврат ОписаниеРегулярныхУсловий;
КонецФункции
&НаКлиенте
Процедура РассчитатьПериодДействияРегулярногоСоглашения()
Если Объект.Регулярное И ЗначениеЗаполнено (Объект.Период) И
ЗначениеЗаполнено (Объект.КоличествоПериодов) Тогда
Если Не ЗначениеЗаполнено(Объект.ДатаНачалаДействия) И ЗначениеЗаполнено(Объект.Дата) Тогда
Объект.ДатаНачалаДействия = Объект.Дата;
КонецЕсли;
Если ЗначениеЗаполнено(Объект.ДатаНачалаДействия) Тогда
ДатаНачалаБлижайшегоПериода = ОбщегоНазначенияУТКлиентСервер.РассчитатьДатуНачалаБлижайшегоПериода(Объект.ДатаНачалаДействия, Объект.Период);
Объект.ДатаОкончанияДействия = ОбщегоНазначенияУТКлиентСервер.РассчитатьДатуОкончанияПериода(ДатаНачалаБлижайшегоПериода, Объект.Период, Объект.КоличествоПериодов);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ОбновитьВидимостьЭлементовОграниченияРучныхСкидок(Форма)
ОграничиватьРучныеСкидки = Форма.Объект.ОграничиватьРучныеСкидки
И (Форма.Объект.ХозяйственнаяОперация <> ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПередачаНаКомиссию")
Или Форма.Объект.ХозяйственнаяОперация <> ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи"));
МассивЭлементов = Новый Массив();
МассивЭлементов.Добавить("ПроцентРучнойСкидки");
МассивЭлементов.Добавить("ПроцентРучнойНаценки");
МассивЭлементов.Добавить("ЦеновыеГруппыПроцентРучнойСкидки");
МассивЭлементов.Добавить("ЦеновыеГруппыПроцентРучнойНаценки");
МассивЭлементов.Добавить("УточнениеПроцентовСкидокНаценокПредставление");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(
Форма.Элементы,
МассивЭлементов,
"Видимость",
ОграничиватьРучныеСкидки);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ОбновитьВидимостьСдвигаПереходаПраваСобственности(Форма)
МожетБытьСдвиг = Форма.Объект.ВозможнаРеализацияБезПереходаПраваСобственности
И Форма.Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.РеализацияКлиенту");
Форма.Элементы.СдвигДатыПереходаПраваСобственности.Видимость = МожетБытьСдвиг;
Форма.Элементы.СдвигДатыПереходаДекорация.Видимость = МожетБытьСдвиг;
КонецПроцедуры
&НаСервере
Функция ПоместитьВоВременноеХранилищеНаСервере()
Возврат ПоместитьВоВременноеХранилище(Объект.ЭтапыГрафикаОплаты.Выгрузить());
КонецФункции
&НаСервере
Процедура ЗаполнитьЭтапыОплатыИзВременногоХранилищаСервер(АдресВоВременномХранилище)
ЭтапыОплаты = ПолучитьИзВременногоХранилища(АдресВоВременномХранилище);
Для Каждого ТекСтрока Из ЭтапыОплаты Цикл
НоваяСтрока = Объект.ЭтапыГрафикаОплаты.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, ТекСтрока);
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура КонтактноеЛицоПриИзменении(Элемент)
Если Объект.КонтактноеЛицо.Пустая() Тогда
Возврат;
ИначеЕсли Не Объект.Партнер.Пустая() Тогда
Возврат;
КонецЕсли;
ПартнерИзменился = Ложь;
КонтактноеЛицоПриИзмененииСервер(ПартнерИзменился);
Если Не ПартнерИзменился Тогда
Возврат;
КонецЕсли;
Если Не ЗначениеЗаполнено (Объект.Партнер) Тогда
Объект.Соглашение = ПредопределенноеЗначение("Справочник.СоглашенияСКлиентами.ПустаяСсылка");
Иначе
Если ЗначениеЗаполнено(Объект.Соглашение) Тогда
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияУсловийПродажПоУмолчанию();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура КонтактноеЛицоПриИзмененииСервер(ПартнерИзменился)
ВладелецКонтактногоЛица = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.КонтактноеЛицо, "Владелец");
Если ВладелецКонтактногоЛица <> Объект.Партнер Тогда
Объект.Партнер = ВладелецКонтактногоЛица;
ПриИзмененииПартнераСервер();
ПартнерИзменился = Истина;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура НастроитьЭлементыДоговорыКонтрагентовИПорядокРасчетов()
ИспользоватьНесколькоВалют = ПолучитьФункциональнуюОпцию("ИспользоватьНесколькоВалют");
ТекстИспользуютсяДоговорыКонтрагентов = НСтр("ru = 'Требуется указание договора, порядок расчетов определяется в договоре'");
ДоступностьНеИспользованияДоговоров = Истина;
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи Тогда
ВидимостьПорядкаРасчетов = Ложь;
ДоступностьПорядкаРасчетов = Ложь;
ДоступностьНеИспользованияДоговоров = Ложь;
ТекстИспользуютсяДоговорыКонтрагентов = НСтр("ru = 'При передаче на хранение использование договора является обязательным'");
ИначеЕсли Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию
И Не Объект.КомиссионныеПродажи25 Тогда
ВидимостьПорядкаРасчетов = Ложь;
ДоступностьПорядкаРасчетов = Ложь;
ТекстИспользованияПередачиНаХранение = НСтр("ru='Договоры не используются, порядок расчетов по накладным'")
+ ?(ИспользоватьНесколькоВалют, ":", "");
ТекстНеИспользуютсяДоговорыКонтрагентов = ?(Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию,
НСтр("ru='Договоры не используются, порядок расчетов по отчетам по комиссии'"),
ТекстИспользованияПередачиНаХранение);
ИначеЕсли Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию
И Объект.КомиссионныеПродажи25 Тогда
ВидимостьПорядкаРасчетов = Ложь;
ДоступностьПорядкаРасчетов = Ложь;
ДоступностьНеИспользованияДоговоров = Ложь;
ТекстОбязательностиИспользоватьДоговор = НСтр("ru = 'При передаче на комиссию %1 использование договора является обязательным'");
ТекстИспользуютсяДоговорыКонтрагентов = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстОбязательностиИспользоватьДоговор,
КомиссионнаяТорговляСервер.ПостфиксСхемыКомиссии25());
ИначеЕсли Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПоставкаПодПринципала Тогда
ВидимостьПорядкаРасчетов = Ложь;
ДоступностьПорядкаРасчетов = Ложь;
ДоступностьНеИспользованияДоговоров = Ложь;
ТекстИспользуютсяДоговорыКонтрагентов = НСтр("ru = 'При поставке под принципала использование договора является обязательным'");
ИначеЕсли Не ИспользоватьЗаказыКлиентов Тогда
ВидимостьПорядкаРасчетов = Ложь;
ДоступностьПорядкаРасчетов = Ложь;
ТекстНеИспользуютсяДоговорыКонтрагентов = НСтр("ru='Договоры не используются, порядок расчетов по накладным'");
ИначеЕсли Объект.ИспользуютсяДоговорыКонтрагентов Тогда
ВидимостьПорядкаРасчетов = Истина;
ДоступностьПорядкаРасчетов = Ложь;
ТекстНеИспользуютсяДоговорыКонтрагентов = НСтр("ru='Договоры не используются, порядок расчетов:'");
Иначе
ВидимостьПорядкаРасчетов = Истина;
ДоступностьПорядкаРасчетов = Истина;
ТекстНеИспользуютсяДоговорыКонтрагентов = НСтр("ru='Договоры не используются, порядок расчетов:'");
КонецЕсли;
Элементы.ОтступПорядокРасчетов.Видимость = ИспользоватьНесколькоВалют
Или ВидимостьПорядкаРасчетов;
Элементы.ИспользуютсяДоговорыКонтрагентов.ТолькоПросмотр = Не ДоступностьНеИспользованияДоговоров;
Элементы.НеИспользуютсяДоговорыКонтрагентов.Видимость = ДоступностьНеИспользованияДоговоров;
Элементы.ПорядокРасчетов.Видимость = ВидимостьПорядкаРасчетов;
Элементы.ПорядокРасчетов.Доступность = ДоступностьПорядкаРасчетов;
Элементы.ИспользуютсяДоговорыКонтрагентов.СписокВыбора.Очистить();
Элементы.ИспользуютсяДоговорыКонтрагентов.СписокВыбора.Добавить(1, ТекстИспользуютсяДоговорыКонтрагентов);
Элементы.НеИспользуютсяДоговорыКонтрагентов.СписокВыбора.Очистить();
Элементы.НеИспользуютсяДоговорыКонтрагентов.СписокВыбора.Добавить(0, ТекстНеИспользуютсяДоговорыКонтрагентов);
Элементы.ОплатаВВалюте.Доступность = НЕ Объект.ИспользуютсяДоговорыКонтрагентов;
Элементы.ВалютаВзаиморасчетов.Доступность = НЕ Объект.ИспользуютсяДоговорыКонтрагентов
И НЕ Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию;
Элементы.ГруппаПорядокРасчетовОплата.Видимость = ДоступностьНеИспользованияДоговоров;
Если Объект.ИспользуютсяДоговорыКонтрагентов Тогда
Элементы.ГруппаФинансовогоУчета.Доступность = Ложь;
Элементы.ГруппаФинансовогоУчета.ПодсказкаВвода = НСтр("ru = '<задается в договоре>'");
Элементы.СтатьяДвиженияДенежныхСредств.Доступность = Ложь;
Элементы.СтатьяДвиженияДенежныхСредств.ПодсказкаВвода = НСтр("ru = '<задается в договоре>'");
Элементы.НаправлениеДеятельности.Доступность = Ложь;
Элементы.НаправлениеДеятельности.ПодсказкаВвода = НСтр("ru = '<задается в договоре>'");
Иначе
Элементы.ГруппаФинансовогоУчета.Доступность = Истина;
Элементы.ГруппаФинансовогоУчета.ПодсказкаВвода = "";
Элементы.СтатьяДвиженияДенежныхСредств.Доступность = Истина;
Элементы.СтатьяДвиженияДенежныхСредств.ПодсказкаВвода = "";
Элементы.НаправлениеДеятельности.Доступность = Истина;
Элементы.НаправлениеДеятельности.ПодсказкаВвода = "";
КонецЕсли;
Если Объект.ИспользуютсяДоговорыКонтрагентов Тогда
Объект.ОплатаВВалюте = ВзаиморасчетыСервер.ПолучитьОплатуВВалютеПоУмолчанию();
Объект.ВалютаВзаиморасчетов = Справочники.Валюты.ПустаяСсылка();
Объект.ГруппаФинансовогоУчета = Справочники.ГруппыФинансовогоУчетаРасчетов.ПустаяСсылка();
Объект.СтатьяДвиженияДенежныхСредств = Справочники.СтатьиДвиженияДенежныхСредств.ПустаяСсылка();
Объект.НаправлениеДеятельности = Справочники.НаправленияДеятельности.ПустаяСсылка();
КонецЕсли;
ПоставкаПодПринципала = Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПоставкаПодПринципала;
Элементы.ОбеспечиватьЗаказыОбособленно.Доступность = НЕ ПоставкаПодПринципала;
Элементы.ДоступноВнешнимПользователям.Видимость = ?(Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию
И Объект.КомиссионныеПродажи25, Ложь, Истина);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьПорядокРасчетов()
Если ИспользоватьДоговорыСКлиентами И Объект.ИспользуютсяДоговорыКонтрагентов Тогда
Объект.ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПустаяСсылка();
ИначеЕсли Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию
ИЛИ НЕ ИспользоватьЗаказыКлиентов Тогда
Объект.ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоНакладным;
ИначеЕсли НЕ ЗначениеЗаполнено(Объект.ПорядокРасчетов) Тогда
Объект.ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоЗаказам;
КонецЕсли;
НастроитьЭлементыДоговорыКонтрагентовИПорядокРасчетов();
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьПроизводственныйКалендарьНаСервере()
КалендарныеГрафики.ЗаполнитьПроизводственныйКалендарьВФорме(ЭтаФорма, "Объект.КалендарьВозвратаТары");
КонецПроцедуры
&НаСервере
Процедура ПостроитьДеревоСкидкиНаценки()
СкидкиНаценкиСервер.ПостроитьДеревоСкидкиНаценкиВФорме(
ЭтотОбъект,
?(ЗначениеКопирования.Пустая(),Объект.Ссылка, ЗначениеКопирования));
ИнформацияОКоличествеСкидок = СкидкиНаценкиСервер.ИнформацияОКоличествеСкидок(
?(ЗначениеКопирования.Пустая(),Объект.Ссылка, ЗначениеКопирования),
ДатаСреза);
ОбновитьИспользованиеСкидокНаценок(АктивизированнаяСкидкаНаценка);
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьКомандВводНаОсновании()
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтаФорма, Объект);
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ЗаполнитьОплатуВВалютеГруппуФинансовогоУчета(Организация, Валюта, ОплатаВВалюте, ГруппаФинансовогоУчета, ИспользуютсяДоговорыКонтрагентов, ХозяйственнаяОперация)
Если НЕ ИспользуютсяДоговорыКонтрагентов Тогда
ОплатаВВалюте = ВзаиморасчетыСервер.ПолучитьОплатуВВалютеПоУмолчанию();
КонецЕсли;
ЗаполнитьГруппуФинансовогоУчета(Организация, Валюта, ХозяйственнаяОперация, ГруппаФинансовогоУчета);
КонецПроцедуры
&НаСервере
Процедура ОбновитьФлажокИспользоватьОбщийВидЦены()
ИспользоватьОбщийВидЦены = ЗначениеЗаполнено(Объект.ВидЦен);
КонецПроцедуры
&НаСервере
Процедура ОбновитьФлажокИспользоватьИндивидуальныйВидЦены()
ИспользоватьИндивидуальныйВидЦены = ЗначениеЗаполнено(Объект.ИндивидуальныйВидЦены);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура НастроитьВидимостьДоступностьЭлементовНастройкиОбщегоВидаЦен(Форма)
Форма.Элементы.ВидЦен.Доступность = (Форма.ИспользоватьОбщийВидЦены И Не Форма.Элементы.ИспользоватьОбщийВидЦены.ТолькоПросмотр);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура НастроитьВидимостьДоступностьЭлементовНастройкиИндивидуальногоВидаЦен(Форма)
Форма.Элементы.ИндивидуальныйВидЦеныПредставление.Доступность = (Форма.ИспользоватьИндивидуальныйВидЦены
И Не Форма.Элементы.ИспользоватьИндивидуальныйВидЦены.ТолькоПросмотр)
И Форма.РазрешеноСоздаватьВидыЦен;
Форма.Элементы.ИспользоватьИндивидуальныйВидЦены.Доступность = Форма.РазрешеноСоздаватьВидыЦен;
КонецПроцедуры
&НаСервере
Функция ПоместитьВХранилищеСтрокиТабличнойЧасти(ВидВызова)
Если ВидВызова = "УточнениеПроцентовСкидокНаценок" Тогда
Таблица = Объект.ЦеновыеГруппы.Выгрузить(, "ЦеноваяГруппа, ПроцентРучнойСкидки, ПроцентРучнойНаценки");
КонецЕсли;
Возврат ПоместитьВоВременноеХранилище(Таблица, ЭтаФорма.УникальныйИдентификатор);
КонецФункции
&НаСервере
Процедура НастроитьСписокВыбораСхемыКомиссии()
СписокВыбора = Элементы.СхемаКомиссии.СписокВыбора;
СписокВыбора.Очистить();
СписокВыбора.Добавить(Ложь, КомиссионнаяТорговляСервер.ПостфиксСхемыКомиссии20());
СписокВыбора.Добавить(Истина, КомиссионнаяТорговляСервер.ПостфиксСхемыКомиссии25());
КонецПроцедуры
&НаКлиенте
Процедура УстановитьВидимостьОплатаВВалюте()
Элементы.ОплатаВВалюте.Видимость =
Объект.ВалютаВзаиморасчетов <> ВалютаРегламентированногоУчета
Или Объект.ОплатаВВалюте;
КонецПроцедуры
#КонецОбласти
#Область КонтрольНесогласованныхИзменений
&НаКлиенте
Процедура КонтрольНеСогласованныхИзмененийОбработатьСобытиеПриИзменении(Элемент)
Если Элемент.Имя = "Партнер" Тогда
ПартнерПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "Соглашение" Тогда
СоглашениеПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "Регулярное" Тогда
РегулярноеПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "Период" Тогда
ПериодПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "КоличествоПериодов" Тогда
КоличествоПериодовПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "СуммаСоглашения" Тогда
СуммаДокументаПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ДатаНачалаДействия" Тогда
ДатаНачалаДействияПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "Валюта" Тогда
ВалютаПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ЦенаВключаетНДС" Тогда
ЦенаВключаетНДСПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ОплатаВВалюте" Тогда
ОплатаВВалютеПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ХозяйственнаяОперация" Тогда
ХозяйственнаяОперацияПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ОграничиватьРучныеСкидки" Тогда
ОграничиватьРучныеСкидкиПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыНоменклатура" Тогда
ТоварыНоменклатураПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыВидЦены" Тогда
ТоварыВидЦеныПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ДоступноВнешнимПользователям" Тогда
ДоступноВнешнимПользователямПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ИспользуютсяДоговорыКонтрагентов" Тогда
ИспользуютсяДоговорыКонтрагентовПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ВозвращатьМногооборотнуюТару" Тогда
ВозвращатьМногооборотнуюТаруПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "РассчитыватьДатуВозвратаТарыПоКалендарю" Тогда
РассчитыватьДатуВозвратаТарыПоКалендарюПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "Склад" Тогда
СкладПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ВозможнаРеализацияБезПереходаПраваСобственности" Тогда
ВозможнаРеализацияБезПереходаПраваСобственностиПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "Организация" Тогда
ОрганизацияПриИзменении(Элемент);
Иначе
ОбщегоНазначенияУТКлиент.КонтрольНеСогласованныхИзмененийВызватьИсключение(ЭтаФорма, Элемент);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КонтрольНеСогласованныхИзмененийОбработатьСобытиеКоманды(Команда)
Если Команда.Имя = "УстановитьИнтервал" Тогда
УстановитьИнтервалВыполнить(Команда);
ИначеЕсли Команда.Имя = "ЗаполнитьВидЦенВыделенныхСтрокЦеновыеГруппы" Тогда
ЗаполнитьВидЦенВыделенныхСтрокЦеновыеГруппы(Команда);
ИначеЕсли Команда.Имя = "ЗаполнитьВидЦенВыделенныхСтрокТовары" Тогда
ЗаполнитьВидЦенВыделенныхСтрокТовары(Команда);
ИначеЕсли Команда.Имя = "ДобавитьТоварыПоОтбору" Тогда
ДобавитьТоварыПоОтбору(Команда);
Иначе
ОбщегоНазначенияУТКлиент.КонтрольНеСогласованныхИзмененийВызватьИсключение(ЭтаФорма, Команда);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КонтрольНеСогласованныхИзмененийОбработатьСобытиеПередНачаломИзменения(Элемент, Отказ)
ОбщегоНазначенияУТКлиент.КонтрольНеСогласованныхИзмененийВызватьИсключение(ЭтаФорма, Элемент);
КонецПроцедуры
&НаКлиенте
Процедура КонтрольНеСогласованныхИзмененийОбработатьСобытиеПередУдалением(Элемент, Отказ)
ОбщегоНазначенияУТКлиент.КонтрольНеСогласованныхИзмененийВызватьИсключение(ЭтаФорма, Элемент);
КонецПроцедуры
&НаКлиенте
Процедура КонтрольНеСогласованныхИзмененийОбработатьСобытиеПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа)
ОбщегоНазначенияУТКлиент.КонтрольНеСогласованныхИзмененийВызватьИсключение(ЭтаФорма, Элемент);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПриИзменении_УстановитьДоступностьЭлементовПоСтатусуСервер(Элемент)
Если ОбщегоНазначенияУТКлиент.ПриДействииСЭлементомЗависящимОтСтатуса(ЭтаФорма) Тогда
Возврат;
КонецЕсли;
Если СтруктураДействийКонтрольНеСогласованныхИзменений.ПриИзменении.Свойство(Элемент.Имя) Тогда
КонтрольНеСогласованныхИзмененийОбработатьСобытиеПриИзменении(Элемент);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_Команда_УстановитьДоступностьЭлементовПоСтатусуСервер(Команда)
Если ОбщегоНазначенияУТКлиент.ПриДействииСЭлементомЗависящимОтСтатуса(ЭтаФорма) Тогда
Возврат;
КонецЕсли;
Если СтруктураДействийКонтрольНеСогласованныхИзменений.Команды.Свойство(Команда.Имя) Тогда
КонтрольНеСогласованныхИзмененийОбработатьСобытиеКоманды(Команда);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПередНачаломИзменения_УстановитьДоступностьЭлементовПоСтатусуСервер(Элемент, Отказ)
Если ОбщегоНазначенияУТКлиент.ПриДействииСЭлементомЗависящимОтСтатуса(ЭтаФорма) Тогда
Возврат;
КонецЕсли;
Если СтруктураДействийКонтрольНеСогласованныхИзменений.ПередНачаломИзменения.Свойство(Элемент.Имя) Тогда
КонтрольНеСогласованныхИзмененийОбработатьСобытиеПередНачаломИзменения(Элемент, Отказ);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПередУдалением_УстановитьДоступностьЭлементовПоСтатусуСервер(Элемент, Отказ)
Если ОбщегоНазначенияУТКлиент.ПриДействииСЭлементомЗависящимОтСтатуса(ЭтаФорма) Тогда
Возврат;
КонецЕсли;
Имя = Элемент.Имя;
Если СтруктураДействийКонтрольНеСогласованныхИзменений.ПередУдалением.Свойство(Имя) Тогда
КонтрольНеСогласованныхИзмененийОбработатьСобытиеПередУдалением(Элемент, Отказ);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПередНачаломДобавления_УстановитьДоступностьЭлементовПоСтатусуСервер(Элемент, Отказ, Копирование, Родитель, Группа)
Если ОбщегоНазначенияУТКлиент.ПриДействииСЭлементомЗависящимОтСтатуса(ЭтаФорма) Тогда
Возврат;
КонецЕсли;
Имя = Элемент.Имя;
Если СтруктураДействийКонтрольНеСогласованныхИзменений.ПередНачаломДобавления.Свойство(Имя) Тогда
КонтрольНеСогласованныхИзмененийОбработатьСобытиеПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПриИзмененииРеквизитаЗависящегоОтСтатуса()
УстановитьДоступностьЭлементовПоСтатусуСервер();
ОбщегоНазначенияУТКлиент.ПослеИзмененияРеквизитаЗависящегоОтСтатуса(ЭтаФорма);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ОбновитьДоступностьЭлементовВозвратнойТары(Форма)
МассивЭлементов = Новый Массив();
МассивЭлементов.Добавить("РассчитыватьДатуВозвратаТарыПоКалендарю");
МассивЭлементов.Добавить("НеРассчитыватьДатуВозвратаТарыПоКалендарю");
МассивЭлементов.Добавить("СрокВозвратаМногооборотнойТары");
МассивЭлементов.Добавить("ТребуетсяЗалогЗаТару");
МассивЭлементов.Добавить("КалендарьВозвратаТары");
ВозвращатьМногооборотнуюТару = Форма.Объект.ВозвращатьМногооборотнуюТару;
Если Форма.Объект.ХозяйственнаяОперация = ПеречислениеПередачаНаКомиссию()
И Форма.Объект.КомиссионныеПродажи25 Тогда
ВозвращатьМногооборотнуюТару = Ложь;
КонецЕсли;
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(
Форма.Элементы,
МассивЭлементов,
"Доступность",
ВозвращатьМногооборотнуюТару);
Форма.Элементы.КалендарьВозвратаТары.Доступность = Форма.Объект.РассчитыватьДатуВозвратаТарыПоКалендарю
И Форма.Объект.ВозвращатьМногооборотнуюТару;
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПеречислениеПередачаНаКомиссию()
Возврат Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию;
КонецФункции
&НаСервереБезКонтекста
Функция ПеречислениеПередачаНаХранение()
Возврат Перечисления.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи;
КонецФункции
&НаКлиенте
Процедура ОбновитьПредставлениеИспользованияСкидкиНаценки()
ТекущиеДанные = Элементы.СкидкиНаценки.ТекущиеДанные;
СкидкаНаценка = ?(ТекущиеДанные = Неопределено ИЛИ ТекущиеДанные.ЭтоГруппа, Неопределено, ТекущиеДанные.Ссылка);
Если СкидкаНаценка <> АктивизированнаяСкидкаНаценка Тогда
ОбновитьИспользованиеСкидокНаценок(СкидкаНаценка);
АктивизированнаяСкидкаНаценка = ?(ТекущиеДанные = Неопределено, Неопределено, ТекущиеДанные.Ссылка);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбновитьИспользованиеСкидокНаценок(СкидкаНаценка)
ИспользованиеСкидкиНаценки = СкидкиНаценкиСервер.ИспользованиеСкидкиНаценки(СкидкаНаценка, ДатаСреза);
СкидкиНаценкиСервер.СформироватьИнформационнуюНадписьИспользованиеСкидокНаценок(ИнформацияОДействииСкидок,
ИспользованиеСкидкиНаценки,
"НастроитьСкидки");
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьДеревоСкидок()
ПостроитьДеревоСкидкиНаценки();
СкидкиНаценкиКлиент.РазвернутьДеревоСкидокРекурсивно(СкидкиНаценки, Элементы.СкидкиНаценки, РазвернутыеУзлыДерева);
СкидкиНаценкиКлиент.ПозиционироватьсяНаЗначениеВДереве(АктивизированнаяСкидкаНаценка, СкидкиНаценки, Элементы.СкидкиНаценки, "Ссылка");
КонецПроцедуры
&НаСервере
Процедура УстановитьЗаголовокФлагаДоступноВнешнимПользователям()
ВнешниеПользователиИспользуются = ПолучитьФункциональнуюОпцию("ИспользоватьВнешнихПользователей");
ОбменССайтомИспользуется = НастройкиСистемыЛокализация.ИспользоватьОбменССайтом();
Если ВнешниеПользователиИспользуются И ОбменССайтомИспользуется Тогда
Элементы.ДоступноВнешнимПользователям.Заголовок = НСтр("ru = 'Доступно внешним пользователям и для обмена с сайтом'");
ИначеЕсли ОбменССайтомИспользуется Тогда
Элементы.ДоступноВнешнимПользователям.Заголовок = НСтр("ru = 'Доступно для обмена с сайтом'");
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
ПодключаемыеКомандыКлиент.ВыполнитьКоманду(ЭтотОбъект, Команда, Объект);
КонецПроцедуры
&НаСервере
Процедура Подключаемый_ВыполнитьКомандуНаСервере(Контекст, Результат) Экспорт
ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, Контекст, Объект, Результат);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
#КонецОбласти
&НаКлиенте
Процедура ОбновитьЗависимостиДополнительныхРеквизитов()
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПриИзмененииДополнительногоРеквизита(Элемент)
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ИсторияДействияСкидкиНаценки(Команда)
СкидкиНаценкиКлиент.ОткрытьФормуИсторииИзмененияСтатуса(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура УстановитьСтатусДействует(Команда)
СкидкиНаценкиКлиент.ОткрытьФормуУстановкиСтатуса(
ЭтаФорма,
ПредопределенноеЗначение("Перечисление.СтатусыДействияСкидок.Действует"),
Объект.Ссылка);
КонецПроцедуры
&НаКлиенте
Процедура УстановитьСтатусНеДействует(Команда)
СкидкиНаценкиКлиент.ОткрытьФормуУстановкиСтатуса(
ЭтаФорма,
ПредопределенноеЗначение("Перечисление.СтатусыДействияСкидок.НеДействует"),
Объект.Ссылка);
КонецПроцедуры
&НаКлиенте
Процедура СкладПриИзменении(Элемент)
СкладПриИзмененииНаСервере();
КонецПроцедуры
&НаСервере
Процедура СкладПриИзмененииНаСервере()
РазбиватьРасходныеОрдераПоРаспоряжениямВидимость = Истина;
Если Не ПолучитьФункциональнуюОпцию("ИспользоватьОрдернуюСхемуПриОтгрузке") Тогда
РазбиватьРасходныеОрдераПоРаспоряжениямВидимость = Ложь;
ИначеЕсли ЗначениеЗаполнено(Объект.Склад) Тогда
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| Склады.Ссылка
|ИЗ
| Справочник.Склады КАК Склады
|ГДЕ
| ВЫБОР
| КОГДА ВЫРАЗИТЬ(&Склад КАК Справочник.Склады).ЭтоГруппа
| ТОГДА Склады.Ссылка В ИЕРАРХИИ (&Склад)
| ИНАЧЕ Склады.Ссылка = &Склад
| КОНЕЦ
| И Склады.ИспользоватьОрдернуюСхемуПриОтгрузке
| И Склады.ДатаНачалаОрдернойСхемыПриОтгрузке <= &ТекущаяДата";
Запрос.УстановитьПараметр("Склад", Объект.Склад);
Запрос.УстановитьПараметр("ТекущаяДата", ТекущаяДатаСеанса());
РазбиватьРасходныеОрдераПоРаспоряжениямВидимость = Не Запрос.Выполнить().Пустой();
КонецЕсли;
Элементы.РазбиватьРасходныеОрдераПоРаспоряжениям.Видимость = РазбиватьРасходныеОрдераПоРаспоряжениямВидимость;
Если Не РазбиватьРасходныеОрдераПоРаспоряжениямВидимость Тогда
Объект.РазбиватьРасходныеОрдераПоРаспоряжениям = Ложь;
РазбиватьРасходныеОрдераПоРаспоряжениямЧисло = 0;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьЗаголовокФормы()
Если Объект.Типовое Тогда
Если ЗначениеЗаполнено(Объект.Номер) И ЗначениеЗаполнено(Объект.Дата) И ИспользоватьСоглашенияСКлиентами Тогда
ТекстЗаголовка = НСтр("ru='Типовое соглашение об условиях продаж %Номер% от %Дата%'");
ТекстЗаголовка = СтрЗаменить(ТекстЗаголовка, "%Номер%", Объект.Номер);
ТекстЗаголовка = СтрЗаменить(ТекстЗаголовка, "%Дата%", Объект.Дата);
ИначеЕсли НЕ ИспользоватьСоглашенияСКлиентами Тогда
ТекстЗаголовка = Объект.Наименование;
Иначе
ТекстЗаголовка = НСтр("ru='Типовое соглашение об условиях продаж'");
КонецЕсли;
Иначе
Если ЗначениеЗаполнено(Объект.Номер) И ЗначениеЗаполнено(Объект.Дата) Тогда
ТекстЗаголовка = НСтр("ru='Индивидуальное соглашение об условиях продаж %Номер% от %Дата%'");
ТекстЗаголовка = СтрЗаменить(ТекстЗаголовка, "%Номер%", Объект.Номер);
ТекстЗаголовка = СтрЗаменить(ТекстЗаголовка, "%Дата%", Объект.Дата);
Иначе
ТекстЗаголовка = НСтр("ru='Индивидуальное соглашение об условиях продаж'");
КонецЕсли;
КонецЕсли;
Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
Шаблон = НСтр("ru='%1 (создание)'");
ТекстЗаголовка = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Шаблон, ТекстЗаголовка);
КонецЕсли;
ЭтаФорма.Заголовок = ТекстЗаголовка;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПриИзменении_ПубликоватьТорговыеПредложения(Элемент, СтандартнаяОбработка)
ТорговыеПредложенияКлиент.ПриИзмененииПубликоватьТорговыеПредложения(ЭтотОбъект, Объект, Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_Нажатие_ГиперссылкиТорговыхПредложений(Элемент, СтандартнаяОбработка)
ТорговыеПредложенияКлиент.ТорговыеПредложенияНажатиеГиперссылки(ЭтотОбъект, Объект, Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаСервере
Процедура ОбновитьДанныеПубликацииТорговыхПредложений()
ТорговыеПредложения.ИнициализацияЭлементовФормы(ЭтаФорма, Элементы.Группа1СБизнесСеть);
КонецПроцедуры
&НаСервере
Процедура ОбновитьИндивидуальныйВидЦеныПредставление()
Если ЗначениеЗаполнено(Объект.ИндивидуальныйВидЦены) Тогда
МассивТекстов = Новый Массив;
МассивТекстов.Добавить(Новый ФорматированнаяСтрока(НСтр("ru = 'Индивидуальный вид цены'")));
МассивТекстов.Добавить(" (");
МассивТекстов.Добавить(Новый ФорматированнаяСтрока(НСтр("ru = 'настроить'"),,,,"ОткрытьИВЦ"));
МассивТекстов.Добавить(")");
Иначе
МассивТекстов = Новый Массив;
МассивТекстов.Добавить(Новый ФорматированнаяСтрока(НСтр("ru = 'Индивидуальный вид цены (не настроен)'")));
МассивТекстов.Добавить(" (");
МассивТекстов.Добавить(Новый ФорматированнаяСтрока(НСтр("ru = 'настроить'"),,,,"СоздатьИВЦ"));
МассивТекстов.Добавить(")");
КонецЕсли;
ИндивидуальныйВидЦеныПредставление = Новый ФорматированнаяСтрока(МассивТекстов);
КонецПроцедуры
&НаКлиенте
Процедура ИндивидуальныйВидЦеныПредставлениеОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если НавигационнаяСсылкаФорматированнойСтроки = "СоздатьИВЦ" Тогда
Если Не ЗначениеЗаполнено(Объект.Ссылка)
Или Модифицированность Тогда
ТекстВопроса = Нстр("ru = 'Данные модифицированы.
|Настройка индивидуального прайс-листа возможна только после записи элемента.
|Записать элемент?'");
ПоказатьВопрос(Новый ОписаниеОповещения("СоздатьИВЦВопросЗавершение", ЭтотОбъект), ТекстВопроса, РежимДиалогаВопрос.ДаНет);
Возврат;
КонецЕсли;
СоздатьИВЦЗавершение();
ИначеЕсли НавигационнаяСсылкаФорматированнойСтроки = "ОткрытьИВЦ" Тогда
ПоказатьЗначение(Неопределено, Объект.ИндивидуальныйВидЦены);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СоздатьИВЦВопросЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
Если РезультатВопроса = КодВозвратаДиалога.Нет Тогда
Возврат;
КонецЕсли;
Попытка
ЭлементЗаписан = Записать();
Исключение
Возврат;
КонецПопытки;
Если Не ЭлементЗаписан Тогда
Возврат;
КонецЕсли;
СоздатьИВЦЗавершение();
КонецПроцедуры
&НаКлиенте
Процедура СоздатьИВЦЗавершение()
РезультатПереноса = СоздатьИПЛСервер();
Если РезультатПереноса.Результат Тогда
Прочитать();
ОбновитьИндивидуальныйВидЦеныПредставление();
ПоказатьЗначение(Неопределено, Объект.ИндивидуальныйВидЦены);
Иначе
ОчиститьСообщения();
ОбщегоНазначенияКлиент.СообщитьПользователю(
СтрШаблон(НСтр("ru='Возникла ошибка при создании индивидуального прайс листа %1'"), РезультатПереноса.ОписаниеОшибки),
Объект.Ссылка,
);
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция СоздатьИПЛСервер()
РезультатПереноса = УстановкаЦенСервер.СоздатьИПЛ(Объект.Ссылка, ТекущаяДатаСеанса());
Возврат РезультатПереноса;
КонецФункции
&НаСервере
Процедура ОчиститьСкидкиНаценкиПоДоговоруКомиссии()
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию
И ЗначениеЗаполнено(Объект.Ссылка)
И СкидкиНаценки.ПолучитьЭлементы().Количество() > 0 Тогда
НаборЗаписей = РегистрыСведений.ДействиеСкидокНаценок.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Источник.Установить(Объект.Ссылка);
НаборЗаписей.Прочитать();
НаборЗаписей.Очистить();
НаборЗаписей.Записать(Истина);
ПостроитьДеревоСкидкиНаценки();
КонецЕсли;
КонецПроцедуры
#КонецОбласти