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