Заказ клиента / Форма документа / Модуль формы

файл
#Область ОписаниеПеременных

&НаКлиенте
Перем КэшированныеЗначения;

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

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

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

	УстановитьУсловноеОформление();
	
	Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа.
		Возврат;
	КонецЕсли;

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

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

	СобытияФорм.ПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка);

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

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

&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)

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

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

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

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

&НаСервере
Процедура ПередЗаписьюНаКлиентеСервер()
	ВзаиморасчетыВызовСервера.ФормаПередЗаписьюНаКлиентеСервер(ЭтаФорма);
КонецПроцедуры

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

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

&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)

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

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

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

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

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

&НаКлиенте
Процедура КонтрагентПриИзменении(Элемент)
	
	Если ИспользуютсяДоговорыКонтрагентов Тогда
		КонтрагентПриИзмененииСервер();
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура СоглашениеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	РезультатВыбора = Неопределено;

	ОткрытьФорму("Обработка.СамообслуживаниеПартнеров.Форма.ВыборСоглашения",
	             Новый Структура("Партнер,Соглашение",Объект.Партнер,Объект.Соглашение),
	             ЭтаФорма,,,, Новый ОписаниеОповещения("СоглашениеНачалоВыбораЗавершение", ЭтотОбъект),
	             РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
	
КонецПроцедуры

&НаКлиенте
Процедура СоглашениеНачалоВыбораЗавершение(Результат, ДополнительныеПараметры) Экспорт
	
	РезультатВыбора = Результат;
	Если РезультатВыбора <> Неопределено И РезультатВыбора.Соглашение <> Объект.Соглашение Тогда
		СкладОпределенСоглашением  = ЗначениеЗаполнено(РезультатВыбора.Склад) И НЕ РезультатВыбора.ЭтоГруппаСкладов;
		СоглашениеПриИзмененииСервер(РезультатВыбора);
		Модифицированность = Истина;
	КонецЕсли;
	
	УправлениеДоступностью(ЭтаФорма);
	
КонецПроцедуры

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

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

&НаКлиенте
Процедура СоглашениеОчистка(Элемент, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	
КонецПроцедуры

&НаКлиенте
Процедура СкладОчистка(Элемент, СтандартнаяОбработка)
	СтандартнаяОбработка = Ложь;
КонецПроцедуры

&НаКлиенте
Процедура ДатаОтгрузкиПриИзменении(Элемент)
	ЗаполнитьОтобразитьЭтапыОплаты();
КонецПроцедуры

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

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

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

&НаКлиенте
Процедура АдресДоставкиПриИзменении(Элемент)
	
	ИменаРеквизитовАдресовДоставки = ДоставкаТоваровКлиентСервер.ИменаРеквизитовАдресовДоставки("АдресДоставки");
	
	ДоставкаТоваровКлиент.ПриИзмененииПредставленияАдреса(
		Элемент,
		Объект[ИменаРеквизитовАдресовДоставки.ИмяРеквизитаАдресаДоставки],
		Объект[ИменаРеквизитовАдресовДоставки.ИмяРеквизитаАдресаДоставкиЗначенияПолей]);
	
КонецПроцедуры

&НаКлиенте
Процедура АдресДоставкиОчистка(Элемент, СтандартнаяОбработка)
	
	АдресДоставкиПриИзменении(Элемент);
	
КонецПроцедуры

&НаКлиенте
Процедура АдресДоставкиНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	
	ИменаРеквизитовАдресовДоставки = ДоставкаТоваровКлиентСервер.ИменаРеквизитовАдресовДоставки("АдресДоставки");
	
	ДоставкаТоваровКлиент.ОткрытьФормуВыбораАдресаИОбработатьРезультат(
		Элемент,
		Объект,
		ИменаРеквизитовАдресовДоставки,
		СтандартнаяОбработка);

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

&НаКлиенте
Процедура АдресДоставкиОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	
	АдресДоставкиПриИзменении(Элемент);
	
	РеквизитыДоставки = ДоставкаТоваровКлиентСервер.ПолучитьПустуюСтруктуруРеквизитовДоставки();
	ЗаполнитьЗначенияСвойств(РеквизитыДоставки, Объект);
	ДоставкаТоваровКлиент.АдресДоставкиОбработкаВыбора(Элементы, РеквизитыДоставки, Элемент.Имя, ВыбранноеЗначение);
	ЗаполнитьЗначенияСвойств(Объект, РеквизитыДоставки);
	
	Модифицированность = Истина;
	
КонецПроцедуры

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

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

#Область ОбработчикиСобытийТабличнойЧастиТовары

&НаКлиенте
Процедура ТоварыПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
	
	Если НоваяСтрока Тогда
		Элементы.Товары.ТекущиеДанные.КодСтроки = 0;
	КонецЕсли;
	
КонецПроцедуры

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

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

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

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

&НаКлиенте
Процедура ТоварыПередУдалением(Элемент, Отказ)
	
	Отказ = Истина;
	
КонецПроцедуры

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

&НаКлиенте
Процедура ТоварыПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, ЭтоГруппа, Параметр)
	
	Отказ = Истина;

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

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

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

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

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

&НаКлиенте
Процедура ОтменитьВыделенныеСтрокиЗавершение(Результат, ДополнительныеПараметры) Экспорт
    
    ПричинаОтмены = Результат;
    Если Не ЗначениеЗаполнено(ПричинаОтмены) Тогда
        Возврат;
    КонецЕсли;
    
    ОтменитьВыделенныеСтрокиФрагмент(ПричинаОтмены);

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура РассчитатьСкидкиНаценки(Команда)
	
	РассчитатьСкидкиНаценкиКлиент();
	
КонецПроцедуры

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

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

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

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

&НаКлиенте
Процедура ОткрытьКарточкуТовара(Команда)
	
	ОткрытьКарточкуНоменклатуры();
	
КонецПроцедуры

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

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

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

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

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

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

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

&НаСервере
Процедура ПоместитьЭтапыОплатыВоВременноеХранилище(ИмяЭлемента)
	ВзаиморасчетыСервер.ПоместитьЭтапыОплатыВоВременноеХранилище(ЭтаФорма, ИмяЭлемента);
КонецПроцедуры

&НаСервере
Процедура ОтразитьИзмененияПравилОплаты(ИзмененныеРеквизиты)
	
	ВзаиморасчетыСервер.ЗагрузитьЭтапыОплатыИзВременногоХранилища(ЭтаФорма);
	ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, ИзмененныеРеквизиты, Истина);
	
КонецПроцедуры

&НаКлиенте
Процедура НадписьЭтапыОплатыНажатиеЗавершение(Результат, ДополнительныеПараметры) Экспорт
	Если Результат <> Неопределено Тогда
		ИзмененныеРеквизиты = Результат.СтарыеЗначенияИзмененныхРеквизитов;
		ОтразитьИзмененияПравилОплаты(ИзмененныеРеквизиты);
	КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура ИсторияИзменений(Команда)
	
	ОткрытьФорму("РегистрСведений.ВерсииОбъектов.Форма.ВыборХранимыхВерсий",
	             Новый Структура("Ссылка", Объект.Ссылка),
	             ЭтотОбъект);
	
КонецПроцедуры

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

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

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

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

&НаСервере
Процедура УстановитьУсловноеОформление()

	УсловноеОформление.Элементы.Очистить();

	//

	Элемент = УсловноеОформление.Элементы.Добавить();

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыНомерСтроки.Имя);

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыНоменклатураТипНоменклатуры.Имя);

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыНоменклатураАртикул.Имя);

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыНоменклатура.Имя);

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыХарактеристика.Имя);

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыУпаковка.Имя);

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыКоличествоУпаковок.Имя);

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЦена.Имя);

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСумма.Имя);

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСтавкаНДС.Имя);

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСуммаНДС.Имя);

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСуммаСНДС.Имя);

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыПроцентАвтоматическойСкидки.Имя);

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСуммаАвтоматическойСкидки.Имя);

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыПроцентРучнойСкидки.Имя);

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСуммаРучнойСкидки.Имя);

	ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Отменено");
	ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
	ОтборЭлемента.ПравоеЗначение = Истина;

	Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ЦветТекстаОтмененнойСтрокиДокумента);

	//

	Элемент = УсловноеОформление.Элементы.Добавить();

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыПричинаОтмены.Имя);

	ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
	ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;

	ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Отменено");
	ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
	ОтборЭлемента.ПравоеЗначение = Ложь;

	ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ПричинаОтмены");
	ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
	Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);

	//

	НоменклатураСервер.УстановитьУсловноеОформлениеХарактеристикНоменклатуры(ЭтаФорма);

	//

	Элемент = УсловноеОформление.Элементы.Добавить();

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЦена.Имя);

	ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Отменено");
	ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
	ОтборЭлемента.ПравоеЗначение = Истина;

	Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);

	//

	Элемент = УсловноеОформление.Элементы.Добавить();

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЦена.Имя);

	ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Отменено");
	ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
	ОтборЭлемента.ПравоеЗначение = Ложь;

	ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Цена");
	ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
	ОтборЭлемента.ПравоеЗначение = 0;

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

#Область Наборы

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

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

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

&НаСервере
Процедура ПриУдаленииКомплектующихНаСервере(ИмяТЧ, ДополнительныйПараметр)
	НаборыСервер.ПриУдаленииКомплектующих(ЭтаФорма, ИмяТЧ, ДополнительныйПараметр);
КонецПроцедуры

&НаСервере
Функция АдресНабораВоВременномХранилище(Параметры)
	
	Возврат НаборыСервер.АдресНабораВоВременномХранилище(ЭтаФорма, Параметры, "Товары");
	
КонецФункции

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

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

&НаКлиенте
Процедура ОткрытьКарточкуНабора()

	ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
	
	Если ТекущиеДанные <> Неопределено Тогда
		ПараметрыФормы = Новый Структура("Ключ", ТекущиеДанные.Номенклатура);
		ОткрытьФорму("Справочник.Номенклатура.Форма.ФормаЭлемента", ПараметрыФормы);
	КонецЕсли;

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

&НаСервере
Процедура ОсобыеУсловияПеревозкиПриИзмененииСервер()
	ДоставкаТоваров.ОсобыеУсловияПеревозкиПриИзменении(Элементы, Объект);
КонецПроцедуры

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

#Область Прочее

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

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

&НаСервере
Процедура СоглашениеПриИзмененииСервер(РезультатВыбора)

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

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

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

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

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

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

&НаКлиентеНаСервереБезКонтекста
Процедура РассчитатьИтоговыеПоказателиЗаказа(Форма, РассчитыватьЭтапыОплаты = Ложь)
	
	// Заполнение итогов по таблице "Товары"
	КоллекцияТовары = Форма.Объект.Товары;
	Форма.СуммаЗаказано     = ?(Форма.Объект.ТребуетсяЗалогЗаТару,
	    КоллекцияТовары.Итог("СуммаСНДС") - КоллекцияТовары.Итог("СуммаСНДСОтменено"),
	    КоллекцияТовары.Итог("СуммаСНДСБезВозвратнойТары") - КоллекцияТовары.Итог("СуммаСНДСОтмененоБезВозвратнойТары"));
	Форма.СуммаЗалогаЗаТару = ?(Форма.Объект.ТребуетсяЗалогЗаТару,(КоллекцияТовары.Итог("СуммаСНДС") - КоллекцияТовары.Итог("СуммаСНДСОтменено"))
			- (КоллекцияТовары.Итог("СуммаСНДСБезВозвратнойТары") - КоллекцияТовары.Итог("СуммаСНДСОтмененоБезВозвратнойТары")),0);
	Форма.СуммаНДСЗаказано  = ?(Форма.Объект.ТребуетсяЗалогЗаТару,
	    КоллекцияТовары.Итог("СуммаНДС") - КоллекцияТовары.Итог("СуммаНДСОтменено"),
	    КоллекцияТовары.Итог("СуммаНДСБезВозвратнойТары") - КоллекцияТовары.Итог("СуммаНДСОтмененоБезВозвратнойТары"));
	Форма.СуммаСкидки       = ?(Форма.Объект.ТребуетсяЗалогЗаТару,
	    КоллекцияТовары.Итог("СуммаАвтоматическойСкидки") - КоллекцияТовары.Итог("СуммаАвтоматическойСкидкиОтменено")
	    + КоллекцияТовары.Итог("СуммаРучнойСкидки") - КоллекцияТовары.Итог("СуммаРучнойСкидкиОтменено"),
		КоллекцияТовары.Итог("СуммаАвтоматическойСкидкиБезВозвратнойТары") - КоллекцияТовары.Итог("СуммаАвтоматическойСкидкиОтмененоБезВозвратнойТары")
		+ КоллекцияТовары.Итог("СуммаРучнойСкидкиБезВозвратнойТары") - КоллекцияТовары.Итог("СуммаРучнойСкидкиОтмененоБезВозвратнойТары"));
	Форма.СуммаОтменено     = ?(Форма.Объект.ТребуетсяЗалогЗаТару,
	    КоллекцияТовары.Итог("СуммаСНДСОтменено"),
	    КоллекцияТовары.Итог("СуммаСНДСОтмененоБезВозвратнойТары"));
	
	Если КоллекцияТовары.Итог("СуммаСНДСОтменено") = КоллекцияТовары.Итог("СуммаСНДС") Тогда
		Форма.ВсеСтрокиОтменены = Истина;
	Иначе
		Форма.ВсеСтрокиОтменены = Ложь;
	КонецЕсли;
	
	СуммаЗаказано     = КоллекцияТовары.Итог("Сумма") - КоллекцияТовары.Итог("СуммаОтменено");
	
	Если СуммаЗаказано > 0 Тогда
		Форма.ПроцентСкидки    = Форма.СуммаСкидки * 100 / (СуммаЗаказано + Форма.СуммаСкидки);
	ИначеЕсли Форма.СуммаСкидки > 0 Тогда
		Форма.ПроцентСкидки   = 100;
	Иначе
		Форма.ПроцентСкидки   = 0;
	КонецЕсли;
	
	Если РассчитыватьЭтапыОплаты Тогда
		
		РаспределеннаяСумма = 0;
		РаспределеннаяСуммаТара = 0;
		ПроцентТары = 0;
		КоличествоЭтапов = Форма.Объект.ЭтапыГрафикаОплаты.Количество();
		Для Каждого Этап Из Форма.Объект.ЭтапыГрафикаОплаты Цикл
			
			ПроцентТары = ПроцентТары + Этап.ПроцентЗалогаЗаТару;
			СуммаЭтапа          = Окр((Форма.СуммаЗаказано-Форма.СуммаЗалогаЗаТару) * Этап.ПроцентПлатежа / 100, 2, РежимОкругления.Окр15как20);
			СуммаТара          = Окр(Форма.СуммаЗалогаЗаТару * Этап.ПроцентЗалогаЗаТару / 100, 2, РежимОкругления.Окр15как20);
			Этап.СуммаПлатежа   = ?(Этап.НомерСтроки = КоличествоЭтапов, Форма.СуммаЗаказано - Форма.СуммаЗалогаЗаТару - РаспределеннаяСумма, СуммаЭтапа);
			Этап.СуммаЗалогаЗаТару   = ?(ПроцентТары = 100, Форма.СуммаЗалогаЗаТару - РаспределеннаяСуммаТара, СуммаТара);
			РаспределеннаяСумма = РаспределеннаяСумма + Этап.СуммаПлатежа;
			РаспределеннаяСуммаТара = РаспределеннаяСуммаТара + Этап.СуммаЗалогаЗаТару;
			
		КонецЦикла;
	КонецЕсли;
	
	// Заполнение итогов по этапам оплаты
	ПредыдущееЗначениеДаты = Дата(1,1,1);
	ПроцентПлатежейОбщий = 0;
	
	Форма.СуммаАвансаДоОбеспечения = 0;
	Форма.СуммаПредоплатыДоОтгрузки = 0;
	Форма.СуммаКредитаПослеОтгрузки = 0;
	Форма.ПроцентАвансаДоОбеспечения = 0;
	Форма.ПроцентПредоплатыДоОтгрузки = 0;
	Форма.ПроцентКредитаПослеОтгрузки = 0;
	
	СоответствиеВариантовОплаты = Новый Соответствие;
	СоответствиеВариантовОплаты.Вставить(ПредопределенноеЗначение("Перечисление.ВариантыКонтроляОплатыКлиентом.АвансДоОбеспечения"),
		Новый Структура("Сумма, Проценты", "СуммаАвансаДоОбеспечения", "ПроцентАвансаДоОбеспечения"));
	СоответствиеВариантовОплаты.Вставить(ПредопределенноеЗначение("Перечисление.ВариантыКонтроляОплатыКлиентом.ПредоплатаДоОтгрузки"),
		Новый Структура("Сумма, Проценты", "СуммаПредоплатыДоОтгрузки", "ПроцентПредоплатыДоОтгрузки"));
	СоответствиеВариантовОплаты.Вставить(ПредопределенноеЗначение("Перечисление.ВариантыКонтроляОплатыКлиентом.КредитСдвиг"),
		Новый Структура("Сумма, Проценты", "СуммаКредитаПослеОтгрузки", "ПроцентКредитаПослеОтгрузки"));
	
	Для Каждого ТекСтрока Из Форма.Объект.ЭтапыГрафикаОплаты Цикл
		ПроцентПлатежейОбщий = ПроцентПлатежейОбщий + ТекСтрока.ПроцентПлатежа;
		ТекСтрока.ПроцентЗаполненНеВерно = (ПроцентПлатежейОбщий > 100);
		ТекСтрока.ДатаЗаполненаНеВерно = (ПредыдущееЗначениеДаты > ТекСтрока.ДатаПлатежа);
		ПредыдущееЗначениеДаты = ТекСтрока.ДатаПлатежа;
		Если ПроцентПлатежейОбщий = 100 Тогда
			Форма.НомерСтрокиПолнойОплаты = ТекСтрока.НомерСтроки;
		КонецЕсли;
		ИменаЭлементов = СоответствиеВариантовОплаты[ТекСтрока.ВариантОплаты];
		Если ИменаЭлементов <> Неопределено Тогда
			Форма[ИменаЭлементов.Сумма] = Форма[ИменаЭлементов.Сумма] + ТекСтрока.СуммаПлатежа;
			Форма[ИменаЭлементов.Проценты] = Форма[ИменаЭлементов.Проценты] + ТекСтрока.ПроцентПлатежа;
		КонецЕсли;
	КонецЦикла;
	
	// Выбор страницы отображения НДС
	ОтображатьИтогСуммыНДС = УчетНДСУПКлиентСервер.ОтображатьНДСВИтогахДокументаПродажи(Форма.Объект.НалогообложениеНДС);
	
	Если ОтображатьИтогСуммыНДС Тогда
		Форма.Элементы.ГруппаСтраницыВсего.ТекущаяСтраница = Форма.Элементы.СтраницаВсегоСНДС;
	Иначе
		Форма.Элементы.ГруппаСтраницыВсего.ТекущаяСтраница = Форма.Элементы.СтраницаВсегоБезНДС;
	КонецЕсли;
	
КонецПроцедуры

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

&НаКлиентеНаСервереБезКонтекста
Функция ЗависимыеРеквизиты()
	
	Возврат Новый Структура("БезВозвратнойТары, ОтмененоБезВозвратнойТары, Отменено",
	                        "Сумма, СуммаСНДС, СуммаНДС, СуммаАвтоматическойСкидки, СуммаРучнойСкидки",
	                        "Сумма, СуммаСНДС, СуммаНДС, СуммаАвтоматическойСкидки, СуммаРучнойСкидки",
	                        "Сумма, СуммаСНДС, СуммаНДС, СуммаАвтоматическойСкидки, СуммаРучнойСкидки");
	
КонецФункции

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

&НаКлиентеНаСервереБезКонтекста
Процедура УправлениеДоступностью(Форма)

	ТаблицаТоваровНеПустая = Форма.Объект.Товары.Количество() > 0;
	
	Форма.Элементы.ТоварыОткрытьПодбор.Доступность = ЗначениеЗаполнено(Форма.Объект.Соглашение) 
	                                                 И ЗначениеЗаполнено(Форма.Объект.Склад);
	
	Форма.Элементы.СтраницыРассчитатьСкидки.ТекущаяСтраница = ?(Форма.Объект.СкидкиРассчитаны,
	                                                            Форма.Элементы.СтраницаСкидкиРассчитаны,
	                                                            Форма.Элементы.СтраницаСкидкиНеРассчитаны);
	
	Форма.Элементы.КорзинаПокупателяЦеныСуммыПоСоглашениям.Доступность = ЗначениеЗаполнено(Форма.Объект.Соглашение) 
	                                                                     И ЗначениеЗаполнено(Форма.Объект.Склад)
	                                                                     И Форма.Объект.Товары.Количество() > 0;
	
	Форма.Элементы.ТоварыСостояниеОбеспечения.Доступность = Форма.Объект.Товары.Количество() > 0;

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

&НаКлиенте
Процедура ОбработкаВыбораПодборНаКлиенте(ВыбранноеЗначение)
	
	ОбработкаВыбораПодборНаСервере(ВыбранноеЗначение);
	
	СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
	
КонецПроцедуры

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

&НаСервере
Процедура РассчитатьСкидкиБезПримененияКОбъекту()
	
	СтруктураПараметры = СкидкиНаценкиЗаполнениеСервер.НовыйПараметрыРассчитать();
	СтруктураПараметры.ПрименятьКОбъекту = Ложь;
	СтруктураПараметры.ТолькоПредварительныйРасчет = Ложь;
	СтруктураПараметры.ВосстанавливатьУправляемыеСкидки = Истина;
	
	ПримененныеСкидки = СкидкиНаценкиЗаполнениеСервер.Рассчитать(Объект, СтруктураПараметры);
	АдресПримененныхСкидокВоВременномХранилище = 
			ПоместитьВоВременноеХранилище(ПримененныеСкидки, УникальныйИдентификатор);
	
КонецПроцедуры

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

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

&НаКлиенте
Процедура ПрименитьИзмененияСкидокНаценокНаКлиенте(Отказ)
	
	РассчитатьСкидкиНаценкиНаСервере(СтруктураПараметровРасчетСкидок());
	
	ПоказатьОповещениеПользователя(
		НСтр("ru = 'Скидки (наценки)'"),
		,
		НСтр("ru = 'Скидки (наценки) рассчитаны'"),
		БиблиотекаКартинок.Информация32);
	
КонецПроцедуры

&НаКлиентеНаСервереБезКонтекста
Функция СтруктураПараметровРасчетСкидок()

	СтруктураВозврата = Новый Структура;
	СтруктураВозврата.Вставить("ПрименятьКОбъекту",                Истина);
	СтруктураВозврата.Вставить("ТолькоПредварительныйРасчет",      Ложь);
	СтруктураВозврата.Вставить("ВосстанавливатьУправляемыеСкидки", Истина);
	СтруктураВозврата.Вставить("УправляемыеСкидки",                Неопределено);

	Возврат СтруктураВозврата;
	
КонецФункции

&НаКлиенте
Процедура ОткрытьКарточкуНоменклатуры()

	ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
	
	Если ТекущиеДанные <> Неопределено Тогда
		ПараметрыФормы = Новый Структура("Ключ", ТекущиеДанные.Номенклатура);
		ОткрытьФорму("Справочник.Номенклатура.Форма.ФормаЭлемента", ПараметрыФормы);
	КонецЕсли;

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

&НаСервере
Процедура ОпределитьВидимостьРучныхСкидок(ТекущийОбъект)

	ЕстьРучныеСкидки = ЕстьРучныеСкидки(ТекущийОбъект);

	Элементы.ТоварыСуммаРучнойСкидки.Видимость = ЕстьРучныеСкидки;
	Элементы.ТоварыПроцентРучнойСкидки.Видимость = ЕстьРучныеСкидки;

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

&НаСервере
Процедура ЗаполнитьСлужебныеРеквизитыПоНоменклатуре()
	
	СтруктураХарактеристикиНоменклатуры = Новый Структура;
	СтруктураХарактеристикиНоменклатуры.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются", Новый Структура("Номенклатура", "ХарактеристикиИспользуются"));
	СтруктураХарактеристикиНоменклатуры.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
	СтруктураХарактеристикиНоменклатуры.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
	
	НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(Объект.Товары, СтруктураХарактеристикиНоменклатуры);
	
КонецПроцедуры

&НаСервере
Процедура ОбновитьПризнакБезВозвратнойТары()
	
	СтруктураДополнительныхДействий = Новый Структура;
	СтруктураДополнительныхДействий.Вставить("ЗаполнитьПризнакОтмененоБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
	МногооборотнаяТараСервер.ОбновитьПризнакБезВозвратнойТары(Объект.Товары, Объект.ВернутьМногооборотнуюТару, СтруктураДополнительныхДействий);
	
КонецПроцедуры

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

&НаСервере
Процедура ЗаполнитьНалогообложениеНДСПродажи()
	
	ПараметрыЗаполнения = Документы.ЗаказКлиента.ПараметрыЗаполненияНалогообложенияНДСПродажи(Объект);
	УчетНДСУП.ЗаполнитьНалогообложениеНДСПродажи(Объект.НалогообложениеНДС, ПараметрыЗаполнения, УчетНДСКэшированныеЗначенияПараметров);
	
КонецПроцедуры


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

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

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

&НаСервере
Функция АдресТаблицыДвиженийВХранилище()
	
	Возврат ОбеспечениеВДокументахСервер.АдресТаблицыДвиженийВХранилище(ЭтотОбъект);
	
КонецФункции

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

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