#Область ОписаниеПеременных
&НаКлиенте
Перем ПредыдущиеРеквизитыСтроки;
&НаКлиенте
Перем КэшированныеЗначения;
&НаКлиенте
Перем ТекущиеДанныеИдентификатор;
&НаКлиенте
Перем ПроверкаКонтрагентовПараметрыОбработчикаОжидания Экспорт;
&НаКлиенте
Перем ФормаДлительнойОперации Экспорт;
&НаКлиенте
Перем ПараметрыДляЗаписи Экспорт;
#КонецОбласти
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
УстановитьУсловноеОформление();
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(Объект, ЭтотОбъект);
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("Объект", Объект);
ДополнительныеПараметры.Вставить("ИмяЭлементаДляРазмещения", "ГруппаДополнительныеРеквизиты");
ДополнительныеПараметры.Вставить("ОтложеннаяИнициализация", Истина);
УправлениеСвойствами.ПриСозданииНаСервере(ЭтаФорма, ДополнительныеПараметры);
ОбщегоНазначенияУТ.НастроитьПодключаемоеОборудование(ЭтаФорма);
Справочники.Назначения.ФормаДокументаПриСозданииНаСервере(ЭтаФорма);
ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект);
ИспользоватьПартнеровКакКонтрагентов = ПолучитьФункциональнуюОпцию("ИспользоватьПартнеровКакКонтрагентов");
Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
ПриЧтенииСозданииНаСервере();
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
КонецЕсли;
Если Параметры.ЗаполнятьПоОрдеру
ИЛИ Параметры.ЗначенияЗаполнения.Свойство("ЗаполнятьПоОрдеру")
ИЛИ (ЗначениеЗаполнено(Параметры.Основание)
И ТипЗнч(Параметры.Основание) = Тип("Структура")
И Параметры.Основание.Свойство("ЗаполнятьПоОрдеру"))
Тогда
ПерезаполнитьПоПриемкеСервер(Ложь, Истина);
Модифицированность = Истина;
КонецЕсли;
Если КлиентскоеПриложение.ТекущийВариантИнтерфейса() = ВариантИнтерфейсаКлиентскогоПриложения.Версия8_2 Тогда
Элементы.ГруппаИтого.ЦветФона = Новый Цвет();
КонецЕсли;
УстановитьВидимость();
ПроверкаКонтрагентов.ПриСозданииНаСервереДокумент(ЭтотОбъект, Параметры);
ПроверкаКонтрагентовВызовСервераПереопределяемыйУТ.ФормаДокументаПриСозданииНаСервере(ЭтотОбъект);
УстановитьДоступностьКомандБуфераОбмена();
ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПриСозданииНаСервере(ЭтаФорма);
ПараметрыЭДОПриСоздании = ОбменСКонтрагентами.ПараметрыПриСозданииНаСервере_ФормаДокумента();
ПараметрыЭДОПриСоздании.Форма = ЭтотОбъект;
ПараметрыЭДОПриСоздании.ДокументСсылка = Объект.Ссылка;
ПараметрыЭДОПриСоздании.МестоРазмещенияКоманд = Элементы.ПодменюЭДО;
ПараметрыЭДОПриСоздании.КонтроллерСостояниеЭДО = Элементы.ДекорацияСостояниеЭДО;
ПараметрыЭДОПриСоздании.ГруппаСостояниеЭДО = Элементы.ГруппаСостояниеЭДО;
ОбменСКонтрагентами.ПриСозданииНаСервере_ФормаДокумента(ПараметрыЭДОПриСоздании);
Элементы.ДекорацияСостояниеЭДО.Видимость = ПолучитьФункциональнуюОпцию("ИспользоватьОбменЭД");
ИсправлениеДокументов.ПриСозданииНаСервере(ЭтаФорма, Элементы.СтрокаИсправление);
СобытияФорм.ПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка);
ПараметрыГиперссылки = РаботаСФайлами.ГиперссылкаФайлов();
ПараметрыГиперссылки.Размещение = "КоманднаяПанель";
РаботаСФайлами.ПриСозданииНаСервере(ЭтотОбъект, ПараметрыГиперссылки);
УчетОригиналовПервичныхДокументов.ПриСозданииНаСервере_ФормаДокумента(ЭтотОбъект);
УчетНДСУП.УстановитьВидимостьКомандыЗаполнитьСтавкуНДС(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
УправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
ДатыЗапретаИзменения.ОбъектПриЧтенииНаСервере(ЭтаФорма, ТекущийОбъект);
ПриЧтенииСозданииНаСервере();
УправлениеСвойствами.ПриЧтенииНаСервере(ЭтаФорма, ТекущийОбъект);
ИсправлениеДокументов.ПриЧтенииНаСервере(ЭтаФорма, Элементы.СтрокаИсправление);
СобытияФорм.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
ПараметрыЭДОПриСоздании = ОбменСКонтрагентами.ПараметрыПриЧтенииНаСервере_ФормаДокумента();
ПараметрыЭДОПриСоздании.Форма = ЭтотОбъект;
ПараметрыЭДОПриСоздании.ДокументСсылка = Объект.Ссылка;
ПараметрыЭДОПриСоздании.МестоРазмещенияКоманд = Элементы.ПодменюЭДО;
ПараметрыЭДОПриСоздании.КонтроллерСостояниеЭДО = Элементы.ДекорацияСостояниеЭДО;
ПараметрыЭДОПриСоздании.ГруппаСостояниеЭДО = Элементы.ГруппаСостояниеЭДО;
ОбменСКонтрагентами.ПриЧтенииНаСервере_ФормаДокумента(ПараметрыЭДОПриСоздании);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаВыбора(РезультатВыбора, ИсточникВыбора)
Если ИсточникВыбора.ИмяФормы = "Обработка.ПодборТоваровВДокументЗакупки.Форма.Форма" Тогда
ОбработкаВыбораПодборНаСервере(РезультатВыбора);
ИначеЕсли НоменклатураКлиент.ЭтоУказаниеСерий(ИсточникВыбора) Тогда
НоменклатураКлиент.ОбработатьУказаниеСерии(ЭтаФорма, ПараметрыУказанияСерий, РезультатВыбора);
КонецЕсли;
Если Окно <> Неопределено Тогда
Окно.Активизировать();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
УправлениеСвойствами.ОбработкаПроверкиЗаполнения(ЭтаФорма, Отказ, ПроверяемыеРеквизиты);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
СобытияФормКлиент.ПередЗаписью(ЭтотОбъект, Отказ, ПараметрыЗаписи);
Если НеВыполнятьПроверкуПередЗаписью Тогда
НеВыполнятьПроверкуПередЗаписью = Ложь;
Возврат;
КонецЕсли;
Если ПараметрыЗаписи.РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда
Отказ = Истина;
ОбщегоНазначенияУТКлиент.ЗаписатьОбъектПриНеобходимости(ЭтотОбъект, ПараметрыЗаписи,,Истина);
Возврат;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
УправлениеСвойствами.ПередЗаписьюНаСервере(ЭтаФорма, ТекущийОбъект);
ПроверкаКонтрагентов.ПередЗаписьюНаСервереДокумент(ЭтотОбъект, ТекущийОбъект);
МодификацияКонфигурацииПереопределяемый.ПередЗаписьюНаСервере(ЭтаФорма, Отказ, ТекущийОбъект, ПараметрыЗаписи);
ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПередЗаписьюНаСервере(ЭтаФорма, ТекущийОбъект, ПараметрыЗаписи);
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
ПараметрыЗаписи.Вставить("КлючиДокументаОповещение", РаботаСЖурналамиДокументовКлиент.ПолучитьПараметрыКлючаПоДокументу(
Объект.Ссылка, Объект.Дата, Объект.ХозяйственнаяОперация));
Оповестить("Запись_ПоступлениеТоваров", ПараметрыЗаписи, Объект.Ссылка);
ИсправлениеДокументовКлиент.ПослеЗаписи(Объект);
ОбменСКонтрагентамиКлиент.ПослеЗаписи_ФормаДокумента(ЭтаФорма, ПараметрыЗаписи);
МодификацияКонфигурацииКлиентПереопределяемый.ПослеЗаписи(ЭтаФорма, ПараметрыЗаписи);
ОбщегоНазначенияУТКлиент.ВыполнитьДействияПослеЗаписи(ЭтаФорма, Объект, ПараметрыЗаписи);
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда
МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент");
МодульПодключаемыеКомандыКлиент.ПослеЗаписи(ЭтотОбъект, Объект, ПараметрыЗаписи);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
УправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
УстановитьДоступностьЭлементовПоСтатусуСервер();
СтруктураНаименованийТабличныхЧастей = Новый Структура("Товары");
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре(СтруктураНаименованийТабличныхЧастей);
ПроверкаКонтрагентов.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект);
ПараметрыПослеЗаписи = ОбменСКонтрагентами.ПараметрыПослеЗаписиНаСервере();
ПараметрыПослеЗаписи.Форма = ЭтотОбъект;
ПараметрыПослеЗаписи.ДокументСсылка = Объект.Ссылка;
ПараметрыПослеЗаписи.КонтроллерСостояниеЭДО = Элементы.ДекорацияСостояниеЭДО;
ПараметрыПослеЗаписи.ГруппаСостояниеЭДО = Элементы.ГруппаСостояниеЭДО;
ОбменСКонтрагентами.ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи, ПараметрыПослеЗаписи);
ОбеспечениеВДокументахСервер.ПроверитьЗапуститьФоновоеЗаданиеРаспределенияЗапасов();
МодификацияКонфигурацииПереопределяемый.ПослеЗаписиНаСервере(ЭтаФорма, ТекущийОбъект, ПараметрыЗаписи);
СобытияФорм.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ПредыдущиеРеквизитыСтроки = Новый Структура("Номенклатура");
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
МенеджерОборудованияКлиент.НачатьПодключениеОборудованиеПриОткрытииФормы(Неопределено, ЭтаФорма, "СканерШтрихкода");
ПроверкаКонтрагентовКлиент.ПриОткрытииДокумент(ЭтотОбъект);
ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
ОбменСКонтрагентамиКлиент.ПриОткрытии(ЭтотОбъект);
РаботаСФайламиКлиент.ПриОткрытии(ЭтотОбъект, Отказ);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка)
ПринудительноЗакрытьФорму = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ПриЗакрытии()
МенеджерОборудованияКлиент.НачатьОтключениеОборудованиеПриЗакрытииФормы(Неопределено, ЭтаФорма);
КонецПроцедуры
&НаСервере
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
ПроверкаКонтрагентов.ПриЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура ГруппаСтраницыПриСменеСтраницы(Элемент, ТекущаяСтраница)
Если ТекущаяСтраница.Имя = Элементы.ГруппаДополнительно.Имя
И Не ЭтотОбъект.ПараметрыСвойств.ВыполненаОтложеннаяИнициализация Тогда
СвойстваВыполнитьОтложеннуюИнициализацию();
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СоглашениеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ЗакупкиКлиент.НачалоВыбораСоглашенияСПоставщиком(
Элемент,
СтандартнаяОбработка,
Объект.Партнер,
Объект.Соглашение,
Объект.Дата);
КонецПроцедуры
&НаКлиенте
Процедура ПартнерПриИзменении(Элемент)
Если Не ЗначениеЗаполнено(Объект.Партнер) Тогда
Объект.Соглашение = ПредопределенноеЗначение("Справочник.СоглашенияСПоставщиками.ПустаяСсылка");
ПартнерОчисткаСервер();
Возврат;
КонецЕсли;
ПриИзмененииПартнераСервер();
ДополнительныеПараметры = ДополнительныеПараметрыОбработкиЗавершения();
ДополнительныеПараметры.Элемент = Элемент;
ВопросПользователюПередЗаполнениемПоСоглашению(
Новый ОписаниеОповещения("ПартнерПриИзмененииВопросЗавершение", ЭтотОбъект, ДополнительныеПараметры));
КонецПроцедуры
&НаКлиенте
Процедура КонтрагентПриИзменении(Элемент)
КонтрагентПриИзмененииСервер();
ПроверкаКонтрагентовКлиент.ЗапуститьПроверкуКонтрагентовВДокументе(ЭтотОбъект, Элемент);
КонецПроцедуры
&НаКлиенте
Процедура ОрганизацияПриИзменении(Элемент)
ОрганизацияПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура СоглашениеПриИзменении(Элемент)
ВопросПользователюПередЗаполнениемПоСоглашению(
Новый ОписаниеОповещения("СоглашениеПриИзмененииВопросЗавершение", ЭтотОбъект));
КонецПроцедуры
&НаКлиенте
Процедура ДоговорСоздание(Элемент, СтандартнаяОбработка)
ЗакупкиКлиент.ОткрытьФормуСозданияДоговора(ЭтотОбъект, Элемент, "Объект.Договор", Объект.Партнер, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ДоговорПриИзменении(Элемент)
ПриИзмененииДоговораСервер(Истина);
КонецПроцедуры
&НаКлиенте
Процедура ХозяйственнаяОперацияПриИзменении(Элемент)
ПриИзмененииХозяйственнойОперацииСервер();
КонецПроцедуры
&НаКлиенте
Процедура ЦенаВключаетНДСПриИзменении(Элемент)
ЦенаВключаетНДСПриИзмененииСервер(КэшированныеЗначения);
КонецПроцедуры
&НаКлиенте
Процедура СкладПриИзменении(Элемент)
Если Склад <> Объект.Склад Тогда
ПриИзмененииСкладаСервер();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВидЦеныПоставщикаПриИзменении(Элемент)
Если Не ЗначениеЗаполнено(Объект.ВидЦеныПоставщика) Тогда
Возврат;
КонецЕсли;
ТекстВопроса = НСтр("ru='Перезаполнить цены по виду цены?'");
ОписаниеОповещения = Новый ОписаниеОповещения("ВидЦеныПоставщикаПриИзмененииВопросЗавершение", ЭтотОбъект);
ВариантыОтветов = Новый СписокЗначений;
ВариантыОтветов.Добавить(Истина, НСтр("ru='Перезаполнить'"));
ВариантыОтветов.Добавить(Ложь, НСтр("ru='Не перезаполнять'"));
ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, ВариантыОтветов);
КонецПроцедуры
&НаКлиенте
Процедура ВидЦеныПоставщикаПриИзмененииВопросЗавершение(ОтветНаВопрос, ДополнительныеПараметры) Экспорт
Если ОтветНаВопрос <> Неопределено
И ОтветНаВопрос Тогда
ЗаполнитьЦеныПоВидуЦеныПоставщика();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДатаПриИзменении(Элемент)
Если Не ВыбранаОперацияБезЦен(Объект.ХозяйственнаяОперация) Тогда
Оповещение = Новый ОписаниеОповещения("ДатаПриИзмененииЗавершение", ЭтотОбъект);
ЦеныПредприятияЗаполнениеКлиент.ЗадатьВопросПересчетаЦеныПриИзмененииДаты(Объект, Оповещение);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура МенеджерПриИзменении(Элемент)
ЗаполнитьПодчиненныеСвойстваПоСтатистике("Менеджер");
КонецПроцедуры
&НаКлиенте
Процедура НаправлениеДеятельностиПриИзменении(Элемент)
НаправлениеДеятельностиПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура НалогообложениеНДСПриИзменении(Элемент)
НалогообложениеНДСПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура ВидДеятельностиНДСОчистка(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
КонецПроцедуры
&НаКлиенте
Процедура ВалютаПриИзменении(Элемент)
Если НЕ ЗначениеЗаполнено(ВалютаДокумента) Тогда
ВалютаДокумента = Объект.Валюта;
Возврат;
КонецЕсли;
Если Не ЗначениеЗаполнено(Объект.Валюта) Тогда
Объект.Валюта = ВалютаДокумента;
Возврат;
КонецЕсли;
Если ВалютаДокумента <> Объект.Валюта
И Объект.Товары.Итог("Цена") > 0 Тогда
ТекстСообщения = НСтр("ru='Пересчитать суммы в документе в валюту ""%Валюта%""?'");
ТекстСообщения = СтрЗаменить(ТекстСообщения, "%Валюта%", Объект.Валюта);
Оповещение = Новый ОписаниеОповещения("ПересчитатьСуммыПриИзмененииВалюты", ЭтотОбъект);
ПоказатьВопрос(Оповещение, ТекстСообщения, РежимДиалогаВопрос.ДаНет);
Иначе
ВалютаДокумента = Объект.Валюта;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура РаспоряжениеПредставлениеОбработкаНавигационнойСсылки(Элемент,
НавигационнаяСсылкаФорматированнойСтроки,
СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если НавигационнаяСсылкаФорматированнойСтроки = "ОткрытьРаспоряжение" Тогда
ПоказатьЗначение(, Объект.Распоряжение)
Иначе
ОценкаПроизводительностиКлиент.ЗамерВремени("Документ.ПоступлениеТоваровНаСклад.Форма.ВыборРаспоряжения");
ПараметрыФормыВыбораРаспоряжения = Новый Структура;
ПараметрыФормыВыбораРаспоряжения.Вставить("Партнер", Объект.Партнер);
ПараметрыФормыВыбораРаспоряжения.Вставить("Контрагент", Объект.Контрагент);
ПараметрыФормыВыбораРаспоряжения.Вставить("Соглашение", Объект.Соглашение);
ПараметрыФормыВыбораРаспоряжения.Вставить("ХозяйственнаяОперация", Объект.ХозяйственнаяОперация);
ПараметрыФормыВыбораРаспоряжения.Вставить("Организация", Объект.Организация);
ПараметрыФормыВыбораРаспоряжения.Вставить("Договор", Объект.Договор);
ПараметрыФормыВыбораРаспоряжения.Вставить("Склад", Объект.Склад);
ОписаниеОповещения = Новый ОписаниеОповещения("РаспоряжениеВыборКлиент", ЭтотОбъект);
ОткрытьФорму("Документ.ПоступлениеТоваровНаСклад.Форма.ВыборРаспоряжения",
ПараметрыФормыВыбораРаспоряжения,
ЭтотОбъект,
,
,
,
ОписаниеОповещения,
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СтруктурнаяЕдиницаПриИзменении(Элемент)
АктуализироватьВидДеятельностиНДС();
КонецПроцедуры
&НаКлиенте
Процедура СтрокаИсправлениеОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
ИсправлениеДокументовКлиент.СтрокаИсправлениеОбработкаНавигационныйСсылки(
ЭтотОбъект, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ДекорацияСостояниеОригиналаНажатие()
УчетОригиналовПервичныхДокументовКлиент.ОткрытьМенюВыбораСостояния(ЭтотОбъект,Элементы.ДекорацияСостояниеОригинала);
КонецПроцедуры
&НаКлиенте
Процедура ДекорацияЭДОНажатие(Элемент, СтандартнаяОбработка)
ОбменСКонтрагентамиКлиент.СостояниеЭДОНажатие_ФормаДокумента(ЭтотОбъект, СтандартнаяОбработка);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыТовары
&НаКлиенте
Процедура ТоварыПередНачаломИзменения(Элемент, Отказ)
ЗаполнитьЗначенияСвойств(ПредыдущиеРеквизитыСтроки, Элементы.Товары.ТекущиеДанные);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПередУдалением(Элемент, Отказ)
НоменклатураКлиент.ОбновитьКешированныеЗначенияДляУчетаСерий(
Элемент, КэшированныеЗначения, ПараметрыУказанияСерий);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПослеУдаления(Элемент)
НеобходимоОбновитьСтатусыСерий = НоменклатураКлиент.НеобходимоОбновитьСтатусыСерий(
Элемент, КэшированныеЗначения, ПараметрыУказанияСерий, Истина);
Если НеобходимоОбновитьСтатусыСерий Тогда
ТоварыПослеУдаленияСервер(НеобходимоОбновитьСтатусыСерий, КэшированныеЗначения);
КонецЕсли;
Если НеобходимоОбновитьСтатусыСерий Тогда
НоменклатураКлиент.ОбновитьКешированныеЗначенияДляУчетаСерий(
Элемент, КэшированныеЗначения, ПараметрыУказанияСерий);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
НоменклатураКлиент.ОбновитьКешированныеЗначенияДляУчетаСерий(
Элемент, КэшированныеЗначения, ПараметрыУказанияСерий, Копирование);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
Если НоменклатураКлиент.НеобходимоОбновитьСтатусыСерий(
Элемент,КэшированныеЗначения,ПараметрыУказанияСерий) Тогда
ТекущаяСтрокаИдентификатор = ТекущиеДанные.ПолучитьИдентификатор();
ЗаполнитьСтатусыУказанияСерийПриОкончанииРедактированияСтрокиТЧ(ТекущаяСтрокаИдентификатор, КэшированныеЗначения);
НоменклатураКлиент.ОбновитьКешированныеЗначенияДляУчетаСерий(Элемент, КэшированныеЗначения, ПараметрыУказанияСерий);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
Если Элементы.Товары.ТекущиеДанные <> Неопределено Тогда
НоменклатураПартнеровКлиент.ПриВыбореНоменклатурыПартнера(Объект, Поле, "ТоварыНоменклатураПартнера", НСтр("ru = 'Поставщик'"));
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыНоменклатураПартнераПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
НоменклатураПартнеровКлиент.УстановитьПараметрыВыбораУпаковки(Элемент.ПараметрыВыбора, ТекущаяСтрока);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьНоменклатуруПоНоменклатуреПартнера");
СтруктураПересчетаСуммы = ПараметрыПересчетаСуммыНДСВСтрокеТЧ(ЭтаФорма);
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц");
СтруктураДействий.Вставить("ЗаполнитьЦенуЗакупки", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияЦеныЗакупкиВСтрокеТЧ(Объект));
ПараметрыЗаполненияСтавкиНДС = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект);
ПараметрыЗаполненияСтавкиНДС.УказаннаяСтавкаНДС = УказаннаяСтавкаНДС;
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", ПараметрыЗаполненияСтавкиНДС);
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются", Новый Структура("Номенклатура", "ХарактеристикиИспользуются"));
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
Если ПредыдущиеРеквизитыСтроки.Номенклатура <> ТекущаяСтрока.Номенклатура Тогда
СтруктураДействий = Новый Структура;
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтаФорма, СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
КонецЕсли;
ЗаполнитьЗначенияСвойств(ПредыдущиеРеквизитыСтроки, ТекущаяСтрока);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыНоменклатураПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураПересчетаСуммы = ПараметрыПересчетаСуммыНДСВСтрокеТЧ(ЭтаФорма);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПроверитьХарактеристикуПоВладельцу", ТекущаяСтрока.Характеристика);
СтруктураДействий.Вставить("ЗаполнитьНоменклатуруПартнераПоНоменклатуре", Объект.Партнер);
СтруктураДействий.Вставить("ПроверитьЗаполнитьУпаковкуПоВладельцу" , ТекущаяСтрока.Упаковка);
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц");
СтруктураДействий.Вставить("ЗаполнитьЦенуЗакупки", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияЦеныЗакупкиВСтрокеТЧ(Объект));
ПараметрыЗаполненияСтавкиНДС = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект);
ПараметрыЗаполненияСтавкиНДС.УказаннаяСтавкаНДС = УказаннаяСтавкаНДС;
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", ПараметрыЗаполненияСтавкиНДС);
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействий.Вставить("ПроверитьСериюРассчитатьСтатус", Новый Структура("ПараметрыУказанияСерий, Склад", ПараметрыУказанияСерий, Объект.Склад));
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтаФорма, СтруктураДействий);
СтруктураДействий.Вставить("НоменклатураПриИзмененииПереопределяемый", Новый Структура("ИмяФормы, ИмяТабличнойЧасти",
ЭтаФорма.ИмяФормы, "Товары"));
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
ЗаполнитьЗначенияСвойств(ПредыдущиеРеквизитыСтроки, ТекущаяСтрока);
КонецПроцедуры
&НаКлиенте
Функция ДополнительныеПараметрыОбработкиЗавершения()
Результат = Новый Структура;
Результат.Вставить("ТекущаяСтрока");
Результат.Вставить("Элемент");
Возврат Результат;
КонецФункции
&НаКлиенте
Процедура ТоварыХарактеристикаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
ДополнительныеПараметры = ДополнительныеПараметрыОбработкиЗавершения();
ДополнительныеПараметры.ТекущаяСтрока = ТекущаяСтрока;
ВыполнитьОбработкуОповещения(
Новый ОписаниеОповещения(
"ТоварыХарактеристикаПриИзмененииВопросПользователюЗавершение", ЭтотОбъект, ДополнительныеПараметры),
Истина);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыУпаковкаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураПересчетаСуммы = ПараметрыПересчетаСуммыНДСВСтрокеТЧ(ЭтаФорма);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьНоменклатуруПартнераПоНоменклатуре", Объект.Партнер);
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц");
Если ТекущаяСтрока.Количество > 0 Тогда
СтруктураДействий.Вставить("ПересчитатьЦенуЗаУпаковку", ТекущаяСтрока.Количество);
Иначе
СтруктураДействий.Вставить("ЗаполнитьЦенуЗакупки", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияЦеныЗакупкиВСтрокеТЧ(Объект));
КонецЕсли;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыКоличествоУпаковокПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, ЭтаФорма);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыЦенаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураПересчетаСуммы = ПараметрыПересчетаСуммыНДСВСтрокеТЧ(ЭтаФорма);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСтавкаНДСПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураПересчетаСуммы = ПараметрыПересчетаСуммыНДСВСтрокеТЧ(ЭтаФорма);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
УказаннаяСтавкаНДС = ТекущаяСтрока.СтавкаНДС;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСуммаНДСПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураПересчетаСуммы = ПараметрыПересчетаСуммыНДСВСтрокеТЧ(ЭтаФорма);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСуммаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураПересчетаСуммы = ПараметрыПересчетаСуммыНДСВСтрокеТЧ(ЭтаФорма);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьЦенуПоСумме");
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСерияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОткрытьПодборСерий(Элемент.ТекстРедактирования);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСерияПриИзменении(Элемент)
ВыбранноеЗначение = НоменклатураКлиентСервер.ВыбраннаяСерия();
ВыбранноеЗначение.Значение = Элементы.Товары.ТекущиеДанные.Серия;
ВыбранноеЗначение.ИдентификаторТекущейСтроки = Элементы.Товары.ТекущиеДанные.ПолучитьИдентификатор();
НоменклатураКлиент.ОбработатьУказаниеСерии(ЭтаФорма, ПараметрыУказанияСерий, ВыбранноеЗначение);
КонецПроцедуры
&НаСервере
Процедура ТоварыПослеУдаленияСервер(НеобходимоОбновитьСтатусыСерий, КэшированныеЗначения)
Если НеобходимоОбновитьСтатусыСерий Тогда
ЗаполнитьСтатусыУказанияСерийПриОкончанииРедактированияСтрокиТЧ(Неопределено, КэшированныеЗначения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПриАктивизацииЯчейки(Элемент)
Если Элемент.ТекущийЭлемент = Неопределено Тогда
Возврат;
ИначеЕсли Элемент.ТекущийЭлемент.Имя = Элементы.ТоварыНоменклатураПартнера.Имя Тогда
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
НоменклатураПартнеровКлиент.ЗаполнитьСписокВыбораНоменклатурыПартнера(
Объект.Партнер, ТекущиеДанные, Элементы.ТоварыНоменклатураПартнера.СписокВыбора);
НоменклатураПартнеровКлиент.УстановитьПараметрыВыбораУпаковки(
Элементы.ТоварыНоменклатураПартнера.ПараметрыВыбора, ТекущиеДанные);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыНоменклатураПартнераНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ЭлементФормы" , Элемент);
ДополнительныеПараметры.Вставить("ТекущаяСтрока", ТекущаяСтрока);
ОповещениеОЗакрытие = Новый ОписаниеОповещения("ОбработатьРезультатВыбораНоменклатурыПартнера", ЭтотОбъект, ДополнительныеПараметры);
НоменклатураПартнеровКлиент.ОткрытьФормуВыбораНоменклатурыПартнера(ЭтотОбъект, Объект.Партнер, ТекущаяСтрока, Элемент.Заголовок, ОповещениеОЗакрытие);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура Подключаемый_КомандаПанелиПрисоединенныхФайлов(Команда)
РаботаСФайламиКлиент.КомандаУправленияПрисоединеннымиФайлами(ЭтотОбъект, Команда);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПроверкаПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраПроверкаПеретаскивания(ЭтотОбъект, Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраПеретаскивание(ЭтотОбъект, Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраНажатие(Элемент, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраНажатие(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаСервере
Процедура ВыполнитьКомандуНаСервере(ПараметрыВыполнения)
ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, ПараметрыВыполнения, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПродолжитьВыполнениеКомандыНаСервере(ПараметрыВыполнения, ДополнительныеПараметры) Экспорт
ВыполнитьКомандуНаСервере(ПараметрыВыполнения);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
ПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуЭДО(Команда)
ЭлектронноеВзаимодействиеКлиент.ВыполнитьПодключаемуюКомандуЭДО(Команда, ЭтаФорма, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбработчикОжиданияЭДО()
ОбменСКонтрагентамиКлиент.ОбработчикОжиданияЭДО(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_СвойстваВыполнитьКоманду(ЭлементИлиКоманда, НавигационнаяСсылка = Неопределено, СтандартнаяОбработка = Неопределено)
УправлениеСвойствамиКлиент.ВыполнитьКоманду(ЭтотОбъект, ЭлементИлиКоманда, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуИнтеграции(Команда)
ИнтеграцияС1СДокументооборотБазоваяФункциональностьКлиент.ВыполнитьПодключаемуюКомандуИнтеграции(Команда, ЭтаФорма, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)
СобытияФормКлиент.ВыполнитьПереопределяемуюКоманду(ЭтаФорма, Команда);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьЦеныПоСоглашению(Команда)
ИмяТабличнойЧасти = "Товары";
ПредставлениеТабличнойЧасти = НСтр("ru='Товары'");
Если ЦеныПартнеровЗаполнениеКлиент.НеобходимоЗаполнениеЦенПоСоглашению(Объект, ИмяТабличнойЧасти, ПредставлениеТабличнойЧасти) Тогда
ТекстОшибки = "";
ЦеныРассчитаны = ЗаполнитьЦеныПоСоглашениюСервер(, ТекстОшибки);
ЗакупкиКлиент.ОповеститьОбОкончанииЗаполненияЦенПоСоглашению(ЦеныРассчитаны, ТекстОшибки);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПодобратьТовары(Команда)
ОценкаПроизводительностиКлиент.ЗамерВремени(
"Документ.ПоступлениеТоваровНаСклад.ФормаДокумента.Команда.ПодобратьТовары");
Отказ = Ложь;
ОперацияБезЦен = ВыбранаОперацияБезЦен(Объект.ХозяйственнаяОперация);
Если Не ОперацияБезЦен
И Не ЗначениеЗаполнено(Объект.Валюта) Тогда
ОчиститьСообщения();
СообщитьОбОшибкахОткрытияПодбора(Отказ);
КонецЕсли;
Если Отказ Тогда
Возврат;
КонецЕсли;
ОтборПоТипуНоменклатуры = Новый ФиксированныйМассив(НоменклатураКлиентСервер.ОтборПоТоваруМногооборотнойТаре(Ложь));
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Документ", Объект.Ссылка);
ПараметрыФормы.Вставить("Дата", Объект.Дата);
ПараметрыФормы.Вставить("Партнер", Объект.Партнер);
ПараметрыФормы.Вставить("Соглашение", Объект.Соглашение);
Если Не ОперацияБезЦен Тогда
ПараметрыФормы.Вставить("Валюта", Объект.Валюта);
ПараметрыФормы.Вставить("ЦенаВключаетНДС", Объект.ЦенаВключаетНДС);
КонецЕсли;
ПараметрыФормы.Вставить("ОтборПоТипуНоменклатуры", ОтборПоТипуНоменклатуры);
ПараметрыФормы.Вставить("СкрыватьКолонкуВидЦены", ОперацияБезЦен);
ПараметрыФормы.Вставить("СкрыватьКомандуЦеныНоменклатуры", ОперацияБезЦен);
ПараметрыФормы.Вставить("РежимПодбораБезСуммовыхПараметров", ОперацияБезЦен);
ПараметрыФормы.Вставить("РежимПодбораИспользоватьСкладыВТабличнойЧасти", Ложь);
ОткрытьФорму("Обработка.ПодборТоваровВДокументЗакупки.Форма", ПараметрыФормы, ЭтаФорма, УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьЦеныПоПоступлениям(Команда)
Если Не ЗначениеЗаполнено(Объект.Партнер) Тогда
ВызватьИсключение НСтр("ru = 'Для заполнения цен по последним поступлениям необходимо указать поставщика'");
КонецЕсли;
ЦеныЗаполнены = Ложь;
ЗаполнитьЦеныПоПоследнимПоступлениямСервер(ЦеныЗаполнены);
Если ЦеныЗаполнены Тогда
ПоказатьОповещениеПользователя(
НСтр("ru = 'Цены заполнены'"),
,
НСтр("ru= 'В строках документа заполнены цены'"),
БиблиотекаКартинок.Информация32);
Иначе
ПоказатьОповещениеПользователя(
НСтр("ru = 'Цены не заполнены'"),
,
НСтр("ru= 'Ни в одной строке цена не заполнена'"),
БиблиотекаКартинок.Информация32);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если УправлениеСвойствамиКлиент.ОбрабатыватьОповещения(ЭтаФорма, ИмяСобытия, Параметр) Тогда
ОбновитьЭлементыДополнительныхРеквизитов();
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
КонецЕсли;
Если Источник = "ПодключаемоеОборудование" И ВводДоступен() Тогда
Если ИмяСобытия = "ScanData" И МенеджерОборудованияУТКлиент.ЕстьНеобработанноеСобытие() Тогда
ОбработатьШтрихкоды(МенеджерОборудованияУТКлиент.ПреобразоватьДанныеСоСканераВМассив(Параметр));
КонецЕсли;
КонецЕсли;
Если Источник = "ПодключаемоеОборудование"
И ИмяСобытия = "НеизвестныеШтрихкоды"
И Параметр.ФормаВладелец = УникальныйИдентификатор Тогда
КэшированныеЗначения.Штрихкоды.Очистить();
ДанныеШтрихкодов = Новый Массив;
Для Каждого ПолученныйШтрихкод Из Параметр.ПолученыНовыеШтрихкоды Цикл
ДанныеШтрихкодов.Добавить(ПолученныйШтрихкод);
КонецЦикла;
Для Каждого ПолученныйШтрихкод Из Параметр.ЗарегистрированныеШтрихкоды Цикл
ДанныеШтрихкодов.Добавить(ПолученныйШтрихкод);
КонецЦикла;
ОбработатьШтрихкоды(ДанныеШтрихкодов);
КонецЕсли;
Если ИмяСобытия = "КопированиеСтрокВБуферОбмена" Тогда
УстановитьДоступностьКомандБуфераОбменаНаКлиенте();
КонецЕсли;
ПараметрыОповещения = ОбменСКонтрагентамиКлиент.ПараметрыОповещенияЭДО_ФормаДокумента();
ПараметрыОповещения.Форма = ЭтотОбъект;
ПараметрыОповещения.ДокументСсылка = Объект.Ссылка;
ПараметрыОповещения.КонтроллерСостояниеЭДО = Элементы.ДекорацияСостояниеЭДО;
ПараметрыОповещения.ГруппаСостояниеЭДО = Элементы.ГруппаСостояниеЭДО;
ОбменСКонтрагентамиКлиент.ОбработкаОповещения_ФормаДокумента(ИмяСобытия, Параметр, Источник, ПараметрыОповещения);
ИсправлениеДокументовКлиент.ОбработкаОповещения(ЭтаФорма, ИмяСобытия, Параметр, Источник);
СобытияФормКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия, Параметр, Источник);
РаботаСФайламиКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия);
УчетОригиналовПервичныхДокументовКлиент.ОбработчикОповещенияФормаДокумента(ИмяСобытия,ЭтотОбъект);
Если ИмяСобытия = "ПриИзмененииДоговора"
И Источник = ЭтотОбъект Тогда
Модифицированность = Истина;
Если ЗначениеЗаполнено(Объект.Ссылка) Тогда
Подключаемый_ПриИзменении_УстановитьДоступностьЭлементовПоСтатусуСервер(Элементы[Параметр]);
Иначе
ДоговорПриИзменении(Элементы[Параметр]);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПоискПоШтрихкодуВыполнить(Команда)
ОчиститьСообщения();
Оповещение = Новый ОписаниеОповещения("ПоискПоШтрихкодуЗавершение", ЭтотОбъект);
ШтрихкодированиеНоменклатурыКлиент.ПоказатьВводШтрихкода(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ПоказатьНоменклатуруПоставщика(Команда)
НоменклатураПартнеровКлиент.ПоказатьНоменклатуруПартнера(Объект.Партнер, Объект.Ссылка, Элементы.Товары.ТекущиеДанные, НСтр("ru = 'Поставщик'"));
КонецПроцедуры
&НаКлиенте
Процедура ПолучитьВес(Команда)
ТекущаяСтрока = МенеджерОборудованияУТКлиент.ТекущаяСтрока(ЭтаФорма);
Если ТекущаяСтрока = Неопределено Тогда
Возврат;
КонецЕсли;
МенеджерОборудованияКлиент.НачатьПолученияВесаСЭлектронныхВесов(
Новый ОписаниеОповещения("ПолучитьВесЗавершение", ЭтотОбъект, ТекущаяСтрока),
УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ПолучитьВесЗавершение(РезультатВыполнения, ТекущаяСтрока) Экспорт
Если РезультатВыполнения.Результат Тогда
ТекущаяСтрока.КоличествоУпаковок = РезультатВыполнения.Вес;
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, ЭтаФорма);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
Иначе
МенеджерОборудованияУТКлиент.СообщитьОбОшибке(РезультатВыполнения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьДанныеИзТСД(Команда)
МенеджерОборудованияКлиент.НачатьЗагрузкуДанныеИзТСД(
Новый ОписаниеОповещения("ЗагрузитьИзТСДЗавершение", ЭтотОбъект),
УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьИзТСДЗавершение(РезультатВыполнения, Параметры) Экспорт
Если РезультатВыполнения.Результат Тогда
ОбработатьШтрихкоды(РезультатВыполнения.ТаблицаТоваров);
Иначе
МенеджерОборудованияУТКлиент.СообщитьОбОшибке(РезультатВыполнения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ИзменитьКачествоНоменклатуры(Команда)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
ОчиститьСообщения();
Если ТекущаяСтрока = Неопределено Тогда
ТекстСообщения = НСтр("ru='Выберите строку табличной части'");
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения);
Возврат
КонецЕсли;
СтруктураПересчетаСуммы = ПараметрыПересчетаСуммыНДСВСтрокеТЧ(ЭтаФорма);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьНоменклатуруПартнераПоНоменклатуре", Объект.Партнер);
СтруктураДействий.Вставить("ПроверитьХарактеристикуПоВладельцу", ТекущаяСтрока.Характеристика);
СтруктураДействий.Вставить("ПроверитьУпаковкуПоВладельцу", ТекущаяСтрока.Упаковка);
СтруктураДействий.Вставить("ПроверитьЗаполнитьУпаковкуПоВладельцу", ТекущаяСтрока.Упаковка);
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц");
СтруктураДействий.Вставить("ЗаполнитьЦенуЗакупки", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияЦеныЗакупкиВСтрокеТЧ(Объект));
ПараметрыЗаполненияСтавкиНДС = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект);
ПараметрыЗаполненияСтавкиНДС.УказаннаяСтавкаНДС = УказаннаяСтавкаНДС;
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", ПараметрыЗаполненияСтавкиНДС);
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтаФорма, СтруктураДействий);
Если ЗначениеЗаполнено(ТекущаяСтрока.Характеристика) Тогда
СтруктураДействий.Вставить("ЗаполнитьХарактеристикуНекачественногоТовара", ТекущаяСтрока.Характеристика);
КонецЕсли;
Если ЗначениеЗаполнено(ТекущаяСтрока.Упаковка) Тогда
СтруктураДействий.Вставить("ЗаполнитьУпаковкуНекачественногоТовара", ТекущаяСтрока.Упаковка);
КонецЕсли;
ПараметрыПроверкиСерий = Новый Структура("Склад, ПараметрыУказанияСерий");
ПараметрыПроверкиСерий.ПараметрыУказанияСерий = ПараметрыУказанияСерий;
ПараметрыПроверкиСерий.Склад = Объект.Склад;
СтруктураДействий.Вставить("ПроверитьСериюРассчитатьСтатус", ПараметрыПроверкиСерий);
СкладыКлиент.ИзменитьКачество(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
КонецПроцедуры
&НаКлиенте
Процедура РазбитьСтрокуФакт(Команда)
ТаблицаФормы = Элементы.Товары;
ДанныеТаблицы = Объект.Товары;
Оповещение = Новый ОписаниеОповещения("РазбитьСтрокуФактЗавершение", ЭтотОбъект);
РаботаСТабличнымиЧастямиКлиент.РазбитьСтроку(ДанныеТаблицы, ТаблицаФормы, Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьНоменклатуруПоНоменклатуреПартнера(Команда)
Если Не ОбщегоНазначенияУТКлиент.ПроверитьНаличиеСтрокВСписке(Объект.Товары, "Товары") Тогда
Возврат;
КонецЕсли;
АдресТоваровВХранилище = ПоместитьТоварыВоВременноеХранилищеСервер("Товары");
ЗакупкиКлиент.ОткрытьФормуЗаполненияНоменклатурыПоставщика(
Новый ОписаниеОповещения("ЗаполнитьНоменклатуруПоНоменклатуреПартнераЗавершение", ЭтотОбъект),
АдресТоваровВХранилище,
ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьСерииПоДаннымПТиУ(Команда)
РезультатЗаполнения = ЗаполнитьСерииПоДаннымПТиУНаСервере();
НоменклатураКлиент.ОповеститьОПерезаполненииСерий(РезультатЗаполнения.ЕстьИзменения, РезультатЗаполнения.КоличествоИзначальноВерное);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьНоменклатуруПоНоменклатуреПартнераЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат <> Неопределено Тогда
ЗаполнитьТоварыИзВременногоХранилищаСервер(Результат);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УказатьСерии(Команда)
ОткрытьПодборСерий();
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьКоличествоВДокументе(Команда)
ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("АдресВоВременномХранилище", ПоместитьТабличнуюЧастьТоварыВоВременноеХранилищеДляПроверкиКоличества());
ПараметрыОткрытия.Вставить("ИмяТабличнойЧасти", "Товары");
ПараметрыОткрытия.Вставить("Ссылка", Объект.Ссылка);
ПараметрыОткрытия.Вставить("ПревышениеКоличестваТоваровРазрешено", Истина);
ПараметрыОткрытия.Вставить("ПараметрыУказанияСерий", ПараметрыУказанияСерий);
ПараметрыОткрытия.Вставить("Соглашение", Объект.Соглашение);
ВозвращаемыеПараметры = Неопределено;
ОткрытьФорму("ОбщаяФорма.ПроверкаЗаполненияДокументов", ПараметрыОткрытия,,,,, Новый ОписаниеОповещения("ПроверитьКоличествоВДокументеЗавершение", ЭтотОбъект), РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьКоличествоВДокументеЗавершение(Результат, ДополнительныеПараметры) Экспорт
ВозвращаемыеПараметры = Результат;
Если ВозвращаемыеПараметры <> Неопределено Тогда
ИзменитьТабличнуюЧастьПоРезультатамПроверки(
ВозвращаемыеПараметры,
?(КэшированныеЗначения = Неопределено, ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения(), КэшированныеЗначения));
Модифицированность = Истина;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВставитьСтроки(Команда)
КоличествоТоваровДоВставки = Объект.Товары.Количество();
ПолучитьСтрокиИзБуфераОбмена();
КоличествоВставленных = Объект.Товары.Количество() - КоличествоТоваровДоВставки;
РаботаСТабличнымиЧастямиКлиент.ОповеститьПользователяОВставкеСтрок(КоличествоВставленных);
КонецПроцедуры
&НаКлиенте
Процедура СкопироватьСтроки(Команда)
Если РаботаСТабличнымиЧастямиКлиент.ВыбранаСтрокаДляВыполненияКоманды(Элементы.Товары) Тогда
СкопироватьСтрокиНаСервере("Товары");
РаботаСТабличнымиЧастямиКлиент.ОповеститьПользователяОКопированииСтрок(Элементы.Товары.ВыделенныеСтроки.Количество());
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьИзВнешнегоФайла(Команда)
ПараметрыЗагрузки = РаботаСТабличнымиЧастямиКлиент.ПараметрыЗагрузкиНоменклатуры();
ПараметрыЗагрузки.Организация = Объект.Организация;
ПараметрыЗагрузки.ЗаполнятьНоменклатуруПартнера = Объект.Партнер;
ПараметрыЗагрузки.ЗагружатьЦены = Истина;
ПараметрыЗагрузки.ЗагружатьСуммы = Истина;
ПараметрыЗагрузки.ЦенаВключаетНДС = Объект.ЦенаВключаетНДС;
ПараметрыЗагрузки.НалогообложениеНДС = Объект.НалогообложениеНДС;
МассивТиповНоменклатуры = Новый Массив;
МассивТиповНоменклатуры.Добавить(ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Товар"));
ПараметрыЗагрузки.ПараметрыОтбора.Вставить("ТипНоменклатуры", МассивТиповНоменклатуры);
Оповещение = Новый ОписаниеОповещения("ЗагрузитьИзВнешнегоФайлаЗавершение", ЭтотОбъект, "Товары");
РаботаСТабличнымиЧастямиКлиент.ПоказатьФормуЗагрузкиНоменклатуры(ПараметрыЗагрузки, Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьИзВнешнегоФайлаЗавершение(АдресЗагруженныхДанных, ДополнительныеПараметры) Экспорт
Если ЗначениеЗаполнено(АдресЗагруженныхДанных) Тогда
ПолучитьЗагруженныеТоварыИзХранилища(АдресЗагруженныхДанных, ДополнительныеПараметры);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПровестиИЗакрыть(Команда)
ОбщегоНазначенияУТКлиент.ПровестиИЗакрыть(ЭтаФорма, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ЗаписатьДокумент(Команда)
ОбщегоНазначенияУТКлиент.Записать(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ПровестиДокумент(Команда)
ОбщегоНазначенияУТКлиент.Провести(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьЦеныВыделенныхСтрокПоВидуЦеныПоставщика(Команда)
ЗаполнитьЦеныПоВидуЦеныПоставщика(Истина);
КонецПроцедуры
&НаКлиенте
Процедура ПерезаполнитьПоПриемке(Команда)
ОчиститьСообщения();
Отказ = Ложь;
Если Не ЗначениеЗаполнено(Объект.Распоряжение) Тогда
ТекстСообщения = НСтр("ru = 'Поле ""Распоряжение"" не заполнено'");
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстСообщения, Объект.Распоряжение, "Объект.Распоряжение", , Отказ);
КонецЕсли;
Если Не ЗначениеЗаполнено(Объект.Склад) Тогда
ТекстСообщения = НСтр("ru = 'Поле ""Склад"" не заполнено'");
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстСообщения, Объект.Склад, "Объект.Склад", , Отказ);
КонецЕсли;
Если Отказ Тогда
Возврат;
КонецЕсли;
ЕстьПринятыеТовары = Ложь;
ЕстьИзменения = ПерезаполнитьПоПриемкеСервер(ЕстьПринятыеТовары);
ЗакупкиКлиент.ОповеститьОбОкончанииПерезаполненияТоваровПоПриемке(ЕстьИзменения, ЕстьПринятыеТовары);
Если ЕстьИзменения Тогда
Модифицированность = Истина;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьСтавкуНДС(Команда)
Если Объект.Товары.Количество() = 0 Тогда
ТекстПредупреждения = НСтр("ru = 'В список ""Товары"" не введено ни одной строки.'");
ПоказатьПредупреждение(, ТекстПредупреждения);
Возврат;
КонецЕсли;
ОповещениеОЗакрытии = Новый ОписаниеОповещения("ЗаполнитьСтавкуНДСЗавершение", ЭтотОбъект);
ПараметрыФормы = Новый Структура();
ПараметрыФормы.Вставить("ТипНалогообложенияНДС", Объект.НалогообложениеНДС);
ОткрытьФорму("Справочник.СтавкиНДС.ФормаВыбора", ПараметрыФормы,,,,, ОповещениеОЗакрытии);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
Процедура СвойстваВыполнитьОтложеннуюИнициализацию()
УправлениеСвойствами.ЗаполнитьДополнительныеРеквизитыВФорме(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьЗависимостиДополнительныхРеквизитов()
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПриИзмененииДополнительногоРеквизита(Элемент)
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыХарактеристикаПриИзмененииВопросПользователюЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Не Результат Тогда
Возврат;
КонецЕсли;
ТекущаяСтрока = ДополнительныеПараметры.ТекущаяСтрока;
СтруктураПересчетаСуммы = ПараметрыПересчетаСуммыНДСВСтрокеТЧ(ЭтаФорма);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьНоменклатуруПартнераПоНоменклатуре", Объект.Партнер);
СтруктураДействий.Вставить("ЗаполнитьЦенуЗакупки", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияЦеныЗакупкиВСтрокеТЧ(Объект));
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ХарактеристикаПриИзмененииПереопределяемый", Новый Структура("ИмяФормы, ИмяТабличнойЧасти",
ЭтаФорма.ИмяФормы, "Товары"));
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтаФорма, СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
КонецПроцедуры
&НаСервере
Процедура РаспоряжениеВыборСервер(ВыбранноеЗначение)
ИсключаемыеСвойства = "";
Если ТипЗнч(ВыбранноеЗначение.Распоряжение) = Тип("СправочникСсылка.ДоговорыКонтрагентов") Тогда
ИсключаемыеСвойства = "Склад, Валюта";
КонецЕсли;
ЗаполнитьЗначенияСвойств(Объект, ВыбранноеЗначение, , ИсключаемыеСвойства);
СкладыРаспоряжения = СкладыРаспоряжения(Истина);
Если ВыбранноеЗначение.ЭтоГруппаСкладов
И ЗначениеЗаполнено(Объект.Склад)
И СкладыРаспоряжения.Найти(Объект.Склад) = Неопределено Тогда
Объект.Склад = Справочники.Склады.ПустаяСсылка();
КонецЕсли;
ХозяйственнаяОперацияДоИзменения = Объект.ХозяйственнаяОперация;
ПриИзмененииХозяйственнойОперацииСервер(Ложь);
ПриИзмененииДоговораСервер(Ложь);
ПоказатьПредставлениеРаспоряжения();
УстановитьПараметрыВыбораРеквизитаСклад(СкладыРаспоряжения);
Если ТипЗнч(Объект.Распоряжение) <> Тип("СправочникСсылка.СоглашенияСПоставщиками") Тогда
ЗакупкиСервер.УстановитьДоступностьДоговора(Объект,
Элементы.Договор.Доступность,
Элементы.Договор.Видимость,
Объект.Договор);
КонецЕсли;
Если ТипЗнч(Объект.Распоряжение) = Тип("ДокументСсылка.ПриобретениеТоваровУслуг") Тогда
ЗаполнятьПоНакладной = Истина;
Иначе
ЗаполнятьПоНакладной = Ложь;
КонецЕсли;
ПарыОперацийРаздельнойЗакупки = ЗакупкиСервер.ПарыОперацийРаздельнойЗакупки(Ложь);
ХозяйственнаяОперацияПриемки = ПарыОперацийРаздельнойЗакупки.Получить(Объект.ХозяйственнаяОперация);
ДанныеЗаполнения = Новый Структура();
ДанныеЗаполнения.Вставить("ДокументОснование", Объект.Распоряжение);
ДанныеЗаполнения.Вставить("Склад", Объект.Склад);
ДанныеЗаполнения.Вставить("ЗаполнятьПоНакладной", ЗаполнятьПоНакладной);
ДанныеЗаполнения.Вставить("ХозяйственнаяОперацияПриемки", ХозяйственнаяОперацияПриемки);
Объект.Товары.Очистить();
Значение = ДанныеФормыВЗначение(Объект, Тип("ДокументОбъект.ПоступлениеТоваровНаСклад"));
Значение.Заполнить(ДанныеЗаполнения);
ЗначениеВДанныеФормы(Значение, Объект);
ВалютаДокумента = Объект.Валюта;
Склад = Объект.Склад;
СтруктураНаименованийТабличныхЧастей = Новый Структура("Товары");
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре(СтруктураНаименованийТабличныхЧастей);
ПараметрыУказанияСерий = Новый ФиксированнаяСтруктура(НоменклатураСервер.ПараметрыУказанияСерий(Объект, Документы.ПоступлениеТоваровНаСклад));
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
УстановитьВидимость();
РассчитатьИтоговыеПоказатели(ЭтаФорма);
КонецПроцедуры
&НаСервере
Процедура КонтрагентПриИзмененииСервер()
НаправлениеДеятельностиСтарое = Объект.НаправлениеДеятельности;
Если ЗначениеЗаполнено(Объект.Контрагент) Тогда
ЗаполнитьДоговорПоУмолчанию();
КонецЕсли;
Если ИспользоватьНаправленияДеятельности Тогда
НаправленияДеятельностиСервер.ЗаполнитьНаправлениеПоУмолчанию(Объект.НаправлениеДеятельности, Объект.Соглашение, Объект.Договор);
КонецЕсли;
НаправленияДеятельностиСервер.ПриИзмененииНаправленияДеятельности(ЭтотОбъект);
Если НаправлениеДеятельностиСтарое <> Объект.НаправлениеДеятельности Тогда
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
КонецЕсли;
ЗакупкиСервер.УстановитьДоступностьДоговора(
Объект,
Элементы.Договор.Доступность,
Элементы.Договор.Видимость,
Объект.Договор);
ЗаполнитьНалогообложениеНДСЗакупки();
АктуализироватьВидДеятельностиНДС();
ОчиститьРаспоряжение();
ОчиститьПараметрыВыбораПоляСклад();
Если Договор <> Объект.Договор Тогда
Договор = Объект.Договор;
Объект.ВариантПриемкиТоваров = ЗакупкиСервер.ПолучитьВариантПриемкиТоваров(Объект.Распоряжение, Объект.Договор);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОрганизацияПриИзмененииСервер()
НаправлениеДеятельностиСтарое = Объект.НаправлениеДеятельности;
Если ЗначениеЗаполнено(Объект.Организация) Тогда
ЗаполнитьДоговорПоУмолчанию();
Если ИспользоватьНаправленияДеятельности Тогда
НаправленияДеятельностиСервер.ЗаполнитьНаправлениеПоУмолчанию(Объект.НаправлениеДеятельности, Объект.Соглашение, Объект.Договор);
КонецЕсли;
КонецЕсли;
ЗакупкиСервер.УстановитьДоступностьДоговора(
Объект,
Элементы.Договор.Доступность,
Элементы.Договор.Видимость,
Объект.Договор);
ЗаполнитьПодчиненныеСвойстваПоСтатистике("Организация");
ОтветственныеЛицаСервер.ПриИзмененииСвязанныхРеквизитовДокумента(Объект);
НаправленияДеятельностиСервер.ПриИзмененииНаправленияДеятельности(ЭтотОбъект);
Если НаправлениеДеятельностиСтарое <> Объект.НаправлениеДеятельности Тогда
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
КонецЕсли;
ЗаполнитьНалогообложениеНДСЗакупки();
АктуализироватьВидДеятельностиНДС();
ОчиститьРаспоряжение();
ОчиститьПараметрыВыбораПоляСклад();
ОтветственныеЛицаСервер.УстановитьМенеджера(Объект, Объект.Распоряжение);
Если Договор <> Объект.Договор Тогда
Договор = Объект.Договор;
Объект.ВариантПриемкиТоваров = ЗакупкиСервер.ПолучитьВариантПриемкиТоваров(Объект.Распоряжение, Объект.Договор);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СоглашениеПриИзмененииВопросЗавершение(ОтветНаВопрос, ДополнительныеПараметры) Экспорт
ПересчитыватьЦены = ЗначениеЗаполнено(Объект.Соглашение)
И Объект.Товары.Количество() > 0
И ОтветНаВопрос;
ПриИзмененииСоглашенияСервер(ПересчитыватьЦены);
Если ЗначениеЗаполнено(Объект.Соглашение) Тогда
ЗакупкиКлиент.ОповеститьОбОкончанииЗаполненияУсловийЗакупок();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура РаспоряжениеВыборКлиент(ВыбранноеЗначение, Параметры) Экспорт
Если ВыбранноеЗначение <> Неопределено Тогда
Модифицированность = Истина;
Если Объект.Товары.Количество() > 0 Тогда
ТекстВопроса = НСтр("ru='Строки в списке Товары будут перезаполнены по выбранному распоряжению. Продолжить?'");
ПоказатьВопрос(Новый ОписаниеОповещения("РаспоряжениеВыборКлиентЗавершение",
ЭтотОбъект,
Новый Структура("ВыбранноеЗначение", ВыбранноеЗначение)),
ТекстВопроса,
РежимДиалогаВопрос.ДаНет);
Иначе
РаспоряжениеВыборКлиентВызовСервера(ВыбранноеЗначение);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура РаспоряжениеВыборКлиентЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
ВыбранноеЗначение = ДополнительныеПараметры.ВыбранноеЗначение;
ОтветНаВопрос = РезультатВопроса;
Если ОтветНаВопрос = КодВозвратаДиалога.Нет Тогда
Возврат;
КонецЕсли;
РаспоряжениеВыборКлиентВызовСервера(ВыбранноеЗначение);
КонецПроцедуры
&НаКлиенте
Процедура РаспоряжениеВыборКлиентВызовСервера(ВыбранноеЗначение)
РаспоряжениеВыборСервер(ВыбранноеЗначение);
Если ТипЗнч(Объект.Распоряжение) = Тип("СправочникСсылка.СоглашенияСПоставщиками") Тогда
Описаниеоповещения = Новый ОписаниеОповещения("СоглашениеПриИзмененииВопросЗавершение", ЭтотОбъект);
ВопросПользователюПередЗаполнениемПоСоглашению(Описаниеоповещения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПартнерПриИзмененииВопросЗавершение(ОтветНаВопрос, ДополнительныеПараметры) Экспорт
Если ЗначениеЗаполнено(Объект.Соглашение) Тогда
Если ОтветНаВопрос Тогда
ТекстОшибки = "";
ЦеныРассчитаны = ЗаполнитьЦеныПоСоглашениюСервер(Истина, ТекстОшибки);
ЗакупкиКлиент.ОповеститьОбОкончанииЗаполненияЦенПоСоглашению(ЦеныРассчитаны, ТекстОшибки);
КонецЕсли;
ЗакупкиКлиент.ОповеститьОбОкончанииЗаполненияУсловийЗакупокПоУмолчанию();
КонецЕсли;
ПроверкаКонтрагентовКлиент.ЗапуститьПроверкуКонтрагентовВДокументе(ЭтотОбъект, ДополнительныеПараметры.Элемент);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбработатьЗаписьОбъекта()
ОбщегоНазначенияУТКлиент.ОбработатьЗаписьОбъектаВФорме(ЭтаФорма, ПараметрыДляЗаписи);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьПодчиненныеСвойстваПоСтатистике(ИмяРеквизитаРодителя)
ЗаполнениеОбъектовПоСтатистике.ЗаполнитьПодчиненныеРеквизитыОбъекта(Объект, ИмяРеквизитаРодителя);
КонецПроцедуры
&НаСервере
Процедура УстановитьУсловноеОформление()
УсловноеОформление.Элементы.Очистить();
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыНоменклатураПартнера.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Партнер");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыНоменклатураПартнера.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Партнер");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.НезаполненноеПолеТаблицы);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<выберите поставщика>'"));
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
УчетНДСУП.УстановитьУсловноеОформлениеСуммНДСПоНалогообложениюЗакупки(ЭтаФорма);
ЦеныПредприятияЗаполнениеСервер.УстановитьУсловноеОформлениеЦенаВключаетНДС(ЭтаФорма);
НоменклатураСервер.УстановитьУсловноеОформлениеЕдиницИзмерения(ЭтаФорма);
НоменклатураСервер.УстановитьУсловноеОформлениеХарактеристикНоменклатуры(ЭтаФорма);
НоменклатураСервер.УстановитьУсловноеОформлениеНазначенияНоменклатуры(ЭтаФорма);
СкладыСервер.УстановитьУсловноеОформлениеСкладаВШапке(ЭтаФорма);
НоменклатураСервер.УстановитьУсловноеОформлениеСерийНоменклатуры(ЭтаФорма, Ложь);
НоменклатураСервер.УстановитьУсловноеОформлениеСтатусовУказанияСерий(ЭтаФорма, Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.РаспоряжениеПредставление.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Распоряжение");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.РезультатПроблемаЦвет);
НаправленияДеятельностиСервер.УстановитьУсловноеОформлениеНаправленияДеятельности(ЭтаФорма);
КонецПроцедуры
#Область ПриИзмененииРеквизитов
&НаСервере
Процедура ПриИзмененииПартнераСервер()
НаправлениеДеятельностиСтарое = Объект.НаправлениеДеятельности;
ДокументЗакупки = РеквизитФормыВЗначение("Объект");
ДокументЗакупки.ЗаполнитьУсловияЗакупокПоУмолчанию(Ложь);
ЗначениеВРеквизитФормы(ДокументЗакупки, "Объект");
ВалютаДокумента = Объект.Валюта;
ХозяйственнаяОперацияДоИзменения = Объект.ХозяйственнаяОперация;
ПриИзмененииХозяйственнойОперацииСервер(Ложь);
ПриИзмененииСкладаСервер();
НоменклатураПартнеровСервер.ЗаполнитьНоменклатуруПартнераПоНоменклатуреПриИзмененииПартнера(Объект.Товары, Объект.Партнер);
СтруктураНаименованийТабличныхЧастей = Новый Структура("Товары");
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре(СтруктураНаименованийТабличныхЧастей);
ОтветственныеЛицаСервер.ПриИзмененииСвязанныхРеквизитовДокумента(Объект);
Если ИспользоватьНаправленияДеятельности Тогда
НаправленияДеятельностиСервер.ЗаполнитьНаправлениеПоУмолчанию(Объект.НаправлениеДеятельности, Объект.Соглашение, Объект.Договор);
КонецЕсли;
НаправленияДеятельностиСервер.ПриИзмененииНаправленияДеятельности(ЭтотОбъект);
Если НаправлениеДеятельностиСтарое <> Объект.НаправлениеДеятельности Тогда
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
КонецЕсли;
ЗакупкиСервер.УстановитьДоступностьДоговора(
Объект,
Элементы.Договор.Доступность,
Элементы.Договор.Видимость,
Объект.Договор);
ОчиститьРаспоряжение();
ОчиститьПараметрыВыбораПоляСклад();
ОтветственныеЛицаСервер.ЗаполнитьСписокВыбораМенеджера(Элементы.Менеджер, Объект);
ОтветственныеЛицаСервер.УстановитьМенеджера(Объект, Объект.Распоряжение);
Если Договор <> Объект.Договор Тогда
Договор = Объект.Договор;
Объект.ВариантПриемкиТоваров = ЗакупкиСервер.ПолучитьВариантПриемкиТоваров(Объект.Распоряжение, Объект.Договор);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПартнерОчисткаСервер()
ОтветственныеЛицаСервер.ЗаполнитьСписокВыбораМенеджера(Элементы.Менеджер, Объект);
ОтветственныеЛицаСервер.УстановитьМенеджера(Объект, Объект.Распоряжение);
КонецПроцедуры
&НаСервере
Процедура ОчиститьРаспоряжение()
Если Не ЗначениеЗаполнено(Объект.Распоряжение) Тогда
Возврат;
КонецЕсли;
ИменаРеквизитов = "Партнер, Контрагент, ХозяйственнаяОперация, Организация";
Если ТипЗнч(Объект.Распоряжение) <> Тип("СправочникСсылка.СоглашенияСПоставщиками")
И ТипЗнч(Объект.Распоряжение) <> Тип("СправочникСсылка.ДоговорыКонтрагентов") Тогда
ИменаРеквизитов = ИменаРеквизитов + ", Соглашение, Договор";
КонецЕсли;
Если ТипЗнч(Объект.Распоряжение) <> Тип("СправочникСсылка.ДоговорыКонтрагентов") Тогда
ИменаРеквизитов = ИменаРеквизитов + ", Склад";
КонецЕсли;
РеквизитыРаспоряжения = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Объект.Распоряжение, ИменаРеквизитов);
Если Объект.Партнер <> РеквизитыРаспоряжения.Партнер
И ЗначениеЗаполнено(Объект.Партнер)
Или Объект.Контрагент <> РеквизитыРаспоряжения.Контрагент
И ЗначениеЗаполнено(РеквизитыРаспоряжения.Контрагент)
И ЗначениеЗаполнено(Объект.Контрагент)
Или Объект.Организация <> РеквизитыРаспоряжения.Организация
И ЗначениеЗаполнено(РеквизитыРаспоряжения.Организация)
И ЗначениеЗаполнено(Объект.Организация)
Или РеквизитыРаспоряжения.Свойство("Склад")
И Объект.Склад <> РеквизитыРаспоряжения.Склад
И ЗначениеЗаполнено(РеквизитыРаспоряжения.Склад)
И ЗначениеЗаполнено(Объект.Склад)
И ЗначениеНастроекПовтИсп.ИерархияГрупп(Объект.Склад).Найти(РеквизитыРаспоряжения.Склад) = Неопределено Тогда
Объект.Распоряжение = Неопределено;
КонецЕсли;
Если ЗначениеЗаполнено(Объект.Распоряжение) Тогда
Если ТипЗнч(Объект.Распоряжение) = Тип("СправочникСсылка.СоглашенияСПоставщиками") Тогда
ОсновнаяОперацияРаспоряжения = ЗакупкиСервер.ОсновнаяХозяйственнаяОперацияРаздельнойЗакупки(
РеквизитыРаспоряжения.ХозяйственнаяОперация);
Если (Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭСНеотфактурованнаяПоставка
Или Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭСПоступлениеИзТоваровВПути)
И ОсновнаяОперацияРаспоряжения <> Перечисления.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭС
Или (Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщикаНеотфактурованнаяПоставка
Или Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщикаПоступлениеИзТоваровВПути)
И ОсновнаяОперацияРаспоряжения <> Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщика
Или Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ЗакупкаПоИмпортуПоступлениеИзТоваровВПути
И ОсновнаяОперацияРаспоряжения <> Перечисления.ХозяйственныеОперации.ЗакупкаПоИмпорту Тогда
Объект.Распоряжение = Неопределено;
КонецЕсли;
Если Объект.Соглашение <> Объект.Распоряжение Тогда
Объект.Распоряжение = Неопределено;
КонецЕсли;
ИначеЕсли ТипЗнч(Объект.Распоряжение) = Тип("СправочникСсылка.ДоговорыКонтрагентов") Тогда
ПарыОперацийРаздельнойЗакупки = ЗакупкиСервер.ПарыОперацийРаздельнойЗакупки();
Если ПарыОперацийРаздельнойЗакупки.Получить(Объект.ХозяйственнаяОперация) <> РеквизитыРаспоряжения.ХозяйственнаяОперация Тогда
Объект.Распоряжение = Неопределено;
КонецЕсли;
Если Объект.Договор <> Объект.Распоряжение Тогда
Объект.Распоряжение = Неопределено;
КонецЕсли;
Иначе
Если Объект.Договор <> РеквизитыРаспоряжения.Договор
И ЗначениеЗаполнено(Объект.Договор)
Или Объект.Соглашение <> РеквизитыРаспоряжения.Соглашение
И ЗначениеЗаполнено(РеквизитыРаспоряжения.Соглашение) Тогда
Объект.Распоряжение = Неопределено;
КонецЕсли;
КонецЕсли;
КонецЕсли;
ПоказатьПредставлениеРаспоряжения();
КонецПроцедуры
&НаСервере
Процедура ОчиститьПараметрыВыбораПоляСклад()
Если ЗначениеЗаполнено(Объект.Распоряжение) Тогда
Возврат;
КонецЕсли;
Элементы.Склад.ПараметрыВыбора = Новый ФиксированныйМассив(Новый Массив);
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииСоглашенияСервер(ПересчитыватьЦены = Истина)
ЦенаВключаетНДС = Объект.ЦенаВключаетНДС;
НаправлениеДеятельностиСтарое = Объект.НаправлениеДеятельности;
Если ЗначениеЗаполнено(Объект.Соглашение) Тогда
УсловияЗакупок = ЗакупкиСервер.ПолучитьУсловияЗакупок(Объект.Соглашение, Истина, Истина);
ДокументЗакупки = РеквизитФормыВЗначение("Объект");
ДокументЗакупки.ЗаполнитьУсловияЗакупок(УсловияЗакупок);
ЗначениеВРеквизитФормы(ДокументЗакупки, "Объект");
ВалютаДокумента = Объект.Валюта;
Если ПересчитыватьЦены Тогда
СтруктураПересчетаСуммы = ПараметрыПересчетаСуммыНДСВСтрокеТЧ(ЭтаФорма);
ПараметрыЗаполнения = ЦеныПартнеровЗаполнениеСервер.НовыйПараметрыЗаполненияЗаполнитьЦены();
ПараметрыЗаполнения.Вставить("ПоляЗаполнения", "Цена, СтавкаНДС");
ПараметрыЗаполнения.Вставить("Дата", Объект.Дата);
ПараметрыЗаполнения.Вставить("Валюта", Объект.Валюта);
ПараметрыЗаполнения.Вставить("Соглашение", Объект.Соглашение);
ПараметрыЗаполнения.Вставить("НалогообложениеНДС", Объект.НалогообложениеНДС);
ПараметрыЗаполнения.Вставить("Организация", Объект.Организация);
ДействияСоСтроками = Новый Структура;
ДействияСоСтроками.Вставить("ПересчитатьСумму", "КоличествоУпаковок");
ДействияСоСтроками.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
ДействияСоСтроками.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
ЦеныПартнеровЗаполнениеСервер.ЗаполнитьЦены(Объект.Товары, Неопределено, ПараметрыЗаполнения, ДействияСоСтроками);
ИначеЕсли ЦенаВключаетНДС <> Объект.ЦенаВключаетНДС Тогда
СтруктураПересчетаСуммы = ПараметрыПересчетаСуммыНДСВТЧ(ЭтаФорма);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий, Неопределено);
КонецЕсли;
ПриИзмененииСкладаСервер();
ХозяйственнаяОперацияДоИзменения = Объект.ХозяйственнаяОперация;
ПриИзмененииХозяйственнойОперацииСервер(Ложь);
СтруктураНаименованийТабличныхЧастей = Новый Структура("Товары");
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре(СтруктураНаименованийТабличныхЧастей);
КонецЕсли;
ЗакупкиСервер.УстановитьДоступностьДоговора(Объект, Элементы.Договор.Доступность, Элементы.Договор.Видимость, Объект.Договор);
Если ИспользоватьНаправленияДеятельности Тогда
НаправленияДеятельностиСервер.ЗаполнитьНаправлениеПоУмолчанию(Объект.НаправлениеДеятельности, Объект.Соглашение, Объект.Договор);
КонецЕсли;
ОтветственныеЛицаСервер.ПриИзмененииСвязанныхРеквизитовДокумента(Объект);
НаправленияДеятельностиСервер.ПриИзмененииНаправленияДеятельности(ЭтотОбъект);
Если НаправлениеДеятельностиСтарое <> Объект.НаправлениеДеятельности Тогда
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
КонецЕсли;
ОчиститьРаспоряжение();
ОчиститьПараметрыВыбораПоляСклад();
Если Договор <> Объект.Договор Тогда
Договор = Объект.Договор;
Объект.ВариантПриемкиТоваров = ЗакупкиСервер.ПолучитьВариантПриемкиТоваров(Объект.Распоряжение, Объект.Договор);
КонецЕсли;
РассчитатьИтоговыеПоказатели(ЭтаФорма);
ОтветственныеЛицаСервер.ЗаполнитьСписокВыбораМенеджера(Элементы.Менеджер, Объект);
ОтветственныеЛицаСервер.УстановитьМенеджера(Объект, Объект.Распоряжение);
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииДоговораСервер(ОчищатьРаспоряжение)
НаправлениеДеятельностиСтарое = Объект.НаправлениеДеятельности;
Если ИспользоватьНаправленияДеятельности Тогда
НаправленияДеятельностиСервер.ЗаполнитьНаправлениеПоУмолчанию(Объект.НаправлениеДеятельности,
Объект.Соглашение, Объект.Договор);
КонецЕсли;
НаправленияДеятельностиСервер.ПриИзмененииНаправленияДеятельности(ЭтотОбъект);
Если НаправлениеДеятельностиСтарое <> Объект.НаправлениеДеятельности Тогда
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
КонецЕсли;
ЗаполнитьНалогообложениеНДСЗакупки();
Если ОчищатьРаспоряжение Тогда
ОчиститьРаспоряжение();
ОчиститьПараметрыВыбораПоляСклад();
КонецЕсли;
Если Договор <> Объект.Договор Тогда
Договор = Объект.Договор;
Объект.ВариантПриемкиТоваров = ЗакупкиСервер.ПолучитьВариантПриемкиТоваров(Объект.Распоряжение, Объект.Договор);
КонецЕсли;
СтруктураНаименованийТабличныхЧастей = Новый Структура("Товары");
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре(СтруктураНаименованийТабличныхЧастей);
ОтветственныеЛицаСервер.ЗаполнитьСписокВыбораМенеджера(Элементы.Менеджер, Объект);
ОтветственныеЛицаСервер.УстановитьМенеджера(Объект, Объект.Распоряжение);
УстановитьВидимость();
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииХозяйственнойОперацииСервер(ВызовПоКоманде = Истина)
Если Объект.ХозяйственнаяОперация <> ХозяйственнаяОперацияДоИзменения Тогда
Объект.Договор = Справочники.ДоговорыКонтрагентов.ПустаяСсылка();
КонецЕсли;
ЗаполнитьХозяйственнуюОперацияДоговора();
Если ВызовПоКоманде Тогда
Если ЗначениеЗаполнено(Объект.Соглашение)
И ЗначениеЗаполнено(Объект.ХозяйственнаяОперация) Тогда
ОперацияСоглашения = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Соглашение,
"ХозяйственнаяОперация");
ОсновнаяОперацияДокумента = ЗакупкиСервер.ОсновнаяХозяйственнаяОперацияРаздельнойЗакупки(
Объект.ХозяйственнаяОперация);
Объект.Соглашение = ?(ОперацияСоглашения = ОсновнаяОперацияДокумента,
Объект.Соглашение,
Справочники.СоглашенияСПоставщиками.ПустаяСсылка());
КонецЕсли;
ЗаполнитьДоговорПоУмолчанию();
ОчиститьРаспоряжение();
ОчиститьПараметрыВыбораПоляСклад();
КонецЕсли;
УстановитьВидимость();
ЗаполнитьНалогообложениеНДСЗакупки();
АктуализироватьВидДеятельностиНДС();
Если Договор <> Объект.Договор Тогда
Договор = Объект.Договор;
Объект.ВариантПриемкиТоваров = ЗакупкиСервер.ПолучитьВариантПриемкиТоваров(Объект.Распоряжение, Объект.Договор);
КонецЕсли;
ХозяйственнаяОперацияДоИзменения = Объект.ХозяйственнаяОперация;
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииСкладаСервер()
Склад = Объект.Склад;
ПодготовитьЗаполнитьУстановитьВидимостьСерий();
АктуализироватьВидДеятельностиНДС();
КонецПроцедуры
&НаСервере
Процедура ЦенаВключаетНДСПриИзмененииСервер(КэшированныеЗначения)
СтруктураПересчетаСуммы = ПараметрыПересчетаСуммыНДСВТЧ(ЭтаФорма);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказатели(ЭтаФорма);
КонецПроцедуры
&НаСервере
Функция ДатаПриИзмененииСервер(ПересчитыватьЦены)
Если ПересчитыватьЦены Тогда
ЦеныРассчитаны = ЗаполнитьЦеныПоСоглашениюСервер(Истина);
Иначе
ЦеныРассчитаны = Ложь;
КонецЕсли;
ЗаполнитьНалогообложениеНДСЗакупки();
АктуализироватьВидДеятельностиНДС();
ОтветственныеЛицаСервер.ПриИзмененииСвязанныхРеквизитовДокумента(Объект);
ПодготовитьЗаполнитьУстановитьВидимостьСерий();
Возврат ЦеныРассчитаны;
КонецФункции
&НаСервере
Процедура НаправлениеДеятельностиПриИзмененииСервер()
НаправленияДеятельностиСервер.ПриИзмененииНаправленияДеятельности(ЭтотОбъект);
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
КонецПроцедуры
&НаКлиенте
Процедура ПересчитатьСуммыПриИзмененииВалюты(ОтветНаВопрос, ДополнительныеПараметры) Экспорт
Если ОтветНаВопрос = КодВозвратаДиалога.Да Тогда
ПересчитатьСуммыПриИзмененииВалютыСервер(КэшированныеЗначения);
КонецЕсли;
ВалютаДокумента = Объект.Валюта;
КонецПроцедуры
&НаСервере
Процедура ПересчитатьСуммыПриИзмененииВалютыСервер(КэшированныеЗначения)
СтруктураПересчетаСуммы = ПараметрыПересчетаСуммыНДСВСтрокеТЧ(ЭтотОбъект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
БазоваяВалюта = ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(Объект.Организация);
ДатаДокумента = ?(ЗначениеЗаполнено(Объект.Дата), Объект.Дата, ТекущаяДатаСеанса());
СтруктураКурсовСтаройВалюты = РаботаСКурсамиВалютУТ.ПолучитьКурсВалюты(ВалютаДокумента, ДатаДокумента, БазоваяВалюта);
СтруктураКурсовНовойВалюты = РаботаСКурсамиВалютУТ.ПолучитьКурсВалюты(Объект.Валюта, ДатаДокумента, БазоваяВалюта);
Для Каждого ТекСтрока Из Объект.Товары Цикл
ТекСтрока.Цена = РаботаСКурсамиВалютУТКлиентСервер.ПересчитатьПоКурсу(
ТекСтрока.Цена,
СтруктураКурсовСтаройВалюты,
СтруктураКурсовНовойВалюты);
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий);
КонецПроцедуры
#КонецОбласти
#Область Ценообразование
&НаСервере
Функция ЗаполнитьЦеныПоСоглашениюСервер(ПоВсемСтрокам = Ложь, ТекстОшибки = "")
Если ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Соглашение, "ЦенаВключаетНДС") <> Объект.ЦенаВключаетНДС Тогда
ТекстОшибки =
НСтр("ru = 'Установленные значения полей ""Цена включает НДС"" в документе и соглашении разные.'");
Возврат Ложь;
КонецЕсли;
Если ПоВсемСтрокам Тогда
МассивСтрок = Неопределено;
Иначе
МассивСтрок = Новый Массив;
Для Каждого Строка Из Элементы.Товары.ВыделенныеСтроки Цикл
МассивСтрок.Добавить(Объект.Товары.НайтиПоИдентификатору(Строка));
КонецЦикла;
КонецЕсли;
СтруктураПересчетаСуммы = ПараметрыПересчетаСуммыНДСВСтрокеТЧ(ЭтаФорма);
ПараметрыЗаполнения = ЦеныПартнеровЗаполнениеСервер.НовыйПараметрыЗаполненияЗаполнитьЦены();
ПараметрыЗаполнения.Вставить("ПоляЗаполнения", "Цена");
ПараметрыЗаполнения.Вставить("Дата", Объект.Дата);
ПараметрыЗаполнения.Вставить("Валюта", Объект.Валюта);
ПараметрыЗаполнения.Вставить("Соглашение", Объект.Соглашение);
ПараметрыЗаполнения.Вставить("НалогообложениеНДС", Объект.НалогообложениеНДС);
ПараметрыЗаполнения.Вставить("Организация", Объект.Организация);
ДействияСоСтроками = Новый Структура;
ДействияСоСтроками.Вставить("ПересчитатьСумму", "КоличествоУпаковок");
ДействияСоСтроками.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
ДействияСоСтроками.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
ЦеныРассчитаны = ЦеныПартнеровЗаполнениеСервер.ЗаполнитьЦены(Объект.Товары, МассивСтрок, ПараметрыЗаполнения, ДействияСоСтроками);
Возврат ЦеныРассчитаны;
КонецФункции
&НаКлиенте
Процедура ЗаполнитьЦеныПоВидуЦеныПоставщика(ЗаполнитьВыделенныеСтроки = Ложь)
ИмяТабличнойЧасти = "Товары";
ПредставлениеТабличнойЧасти = НСтр("ru='Товары'");
ЗаполнитьЦены = ЦеныПартнеровЗаполнениеКлиент.НеобходимоЗаполнениеЦенПоВидуЦенПоставщика(Объект, ИмяТабличнойЧасти,
ПредставлениеТабличнойЧасти);
Если ЗаполнитьЦены Тогда
Если Не ЗначениеЗаполнено(Объект.ВидЦеныПоставщика) Тогда
ТекстПредупреждения = НСтр("ru='В документе не указан вид цены поставщика. Цены не могут быть заполнены'");
ПоказатьПредупреждение(, ТекстПредупреждения);
Иначе
ЦеныРассчитаны = ЗаполнитьЦеныВыделенныхСтрокПоВидуЦеныПоставщикаСервер(ЗаполнитьВыделенныеСтроки);
ЦеныПартнеровЗаполнениеКлиент.ОповеститьОбОкончанииЗаполненияЦенПоВидуЦеныПоставщика(ЦеныРассчитаны, Объект.ВидЦеныПоставщика);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ЗаполнитьЦеныВыделенныхСтрокПоВидуЦеныПоставщикаСервер(ЗаполнитьВыделенныеСтроки)
МассивСтрок = Неопределено;
Если ЗаполнитьВыделенныеСтроки Тогда
МассивСтрок = Новый Массив;
Для Каждого Строка Из Элементы.Товары.ВыделенныеСтроки Цикл
СтрокаТаблицы = Объект.Товары.НайтиПоИдентификатору(Строка);
МассивСтрок.Добавить(СтрокаТаблицы);
КонецЦикла;
КонецЕсли;
СтруктураПересчетаСуммы = ПараметрыПересчетаСуммыНДСВСтрокеТЧ(ЭтаФорма);
ПараметрыЗаполнения = ЦеныПартнеровЗаполнениеСервер.НовыйПараметрыЗаполненияЗаполнитьЦены();
ПараметрыЗаполнения.Вставить("ПоляЗаполнения", "Цена, СтавкаНДС");
ПараметрыЗаполнения.Вставить("Дата", Объект.Дата);
ПараметрыЗаполнения.Вставить("Валюта", Объект.Валюта);
ПараметрыЗаполнения.Вставить("ВидЦеныПоставщика", Объект.ВидЦеныПоставщика);
ПараметрыЗаполнения.Вставить("Организация", Объект.Организация);
ДействияСоСтроками = Новый Структура;
ДействияСоСтроками.Вставить("ПересчитатьСумму", "КоличествоУпаковок");
ДействияСоСтроками.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
ДействияСоСтроками.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
ЦеныРассчитаны = ЦеныПартнеровЗаполнениеСервер.ЗаполнитьЦены(Объект.Товары, МассивСтрок, ПараметрыЗаполнения, ДействияСоСтроками);
Возврат ЦеныРассчитаны;
КонецФункции
&НаСервере
Процедура ЗаполнитьЦеныПоПоследнимПоступлениямСервер(ЦеныЗаполнены)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ИсходнаяТаблица.НомерСтроки КАК НомерСтроки,
| ИсходнаяТаблица.Номенклатура КАК Номенклатура,
| ИсходнаяТаблица.Характеристика КАК Характеристика,
| ИсходнаяТаблица.Упаковка КАК Упаковка
|
|ПОМЕСТИТЬ ТаблицаТовары
|ИЗ
| &ИсходнаяТаблица КАК ИсходнаяТаблица
|
|ИНДЕКСИРОВАТЬ ПО
| Номенклатура,
| Характеристика
|;
|
|
|ВЫБРАТЬ
| ПриобретениеТоваровУслуг.Ссылка.МоментВремени КАК МоментВремени,
| ПриобретениеТоваровУслуг.Номенклатура КАК Номенклатура,
| ПриобретениеТоваровУслуг.Характеристика КАК Характеристика,
| ПриобретениеТоваровУслуг.Упаковка КАК Упаковка,
| ПриобретениеТоваровУслуг.ВидЦеныПоставщика КАК ВидЦеныПоставщика,
| ПриобретениеТоваровУслуг.Цена КАК Цена,
| ПриобретениеТоваровУслуг.Ссылка.Валюта КАК Валюта
|
|ПОМЕСТИТЬ ЦеныПоступлений
|ИЗ
| Документ.ПриобретениеТоваровУслуг.Товары КАК ПриобретениеТоваровУслуг
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ
| ТаблицаТовары
| ПО
| ПриобретениеТоваровУслуг.Номенклатура = ТаблицаТовары.Номенклатура
| И ПриобретениеТоваровУслуг.Характеристика = ТаблицаТовары.Характеристика
|ГДЕ
| ПриобретениеТоваровУслуг.Ссылка.Проведен
| И ПриобретениеТоваровУслуг.Ссылка.Партнер = &Партнер
| И ПриобретениеТоваровУслуг.Ссылка.Дата <= &Дата
|
|ИНДЕКСИРОВАТЬ ПО
| Номенклатура,
| Характеристика
|;
|
|
|ВЫБРАТЬ
| ЦеныПоступлений.Номенклатура КАК Номенклатура,
| ЦеныПоступлений.Характеристика КАК Характеристика,
| ЦеныПоступлений.Упаковка КАК Упаковка,
| ЦеныПоступлений.Цена КАК Цена,
| ЦеныПоступлений.ВидЦеныПоставщика КАК ВидЦеныПоставщика,
| ЦеныПоступлений.Валюта КАК Валюта
|
|ПОМЕСТИТЬ ЦеныПоследнихПоступлений
|ИЗ
| ЦеныПоступлений КАК ЦеныПоступлений
|
| ЛЕВОЕ СОЕДИНЕНИЕ
| ЦеныПоступлений КАК Отбор
| ПО
| ЦеныПоступлений.Номенклатура = Отбор.Номенклатура
| И ЦеныПоступлений.Характеристика = Отбор.Характеристика
| И ЦеныПоступлений.МоментВремени < Отбор.МоментВремени
|ГДЕ
| Отбор.МоментВремени ЕСТЬ NULL
|
|ИНДЕКСИРОВАТЬ ПО
| Номенклатура,
| Характеристика
|;
|
|
|ВЫБРАТЬ
| ТаблицаТовары.НомерСтроки КАК НомерСтроки,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.Упаковка КАК Упаковка,
| ЦеныПоследнихПоступлений.ВидЦеныПоставщика КАК ВидЦеныПоставщика,
| ВЫБОР
| КОГДА
| ТаблицаТовары.Упаковка <> ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
| ТОГДА
| &ТекстЗапросаКоэффициентУпаковки1
| ИНАЧЕ
| 1
| КОНЕЦ
| * ЦеныПоследнихПоступлений.Цена / ЕстьNULL(&ТекстЗапросаКоэффициентУпаковки2, 1)
| * ВЫБОР
| КОГДА &Валюта <> ЦеныПоследнихПоступлений.Валюта
| ТОГДА ВЫБОР
| КОГДА ЕСТЬNULL(КурсыВалютыЦены.КурсЗнаменатель, 0) > 0
| И ЕСТЬNULL(КурсыВалютыЦены.КурсЧислитель, 0) > 0
| И ЕСТЬNULL(КурсыВалюты.КурсЗнаменатель, 0) > 0
| И ЕСТЬNULL(КурсыВалюты.КурсЧислитель, 0) > 0
| ТОГДА
| (КурсыВалютыЦены.КурсЧислитель * КурсыВалюты.КурсЗнаменатель)
| / (КурсыВалюты.КурсЧислитель * КурсыВалютыЦены.КурсЗнаменатель)
| ИНАЧЕ 0
| КОНЕЦ
| ИНАЧЕ 1
| КОНЕЦ КАК Цена
|ИЗ
| ТаблицаТовары КАК ТаблицаТовары
|
| ЛЕВОЕ СОЕДИНЕНИЕ
| ЦеныПоследнихПоступлений КАК ЦеныПоследнихПоступлений
|
| ПО
| ТаблицаТовары.Номенклатура = ЦеныПоследнихПоступлений.Номенклатура
| И ТаблицаТовары.Характеристика = ЦеныПоследнихПоступлений.Характеристика
|
| ЛЕВОЕ СОЕДИНЕНИЕ
| РегистрСведений.ОтносительныеКурсыВалют.СрезПоследних(&Дата, БазоваяВалюта = &БазоваяВалюта) КАК КурсыВалютыЦены
| ПО
| ЦеныПоследнихПоступлений.Валюта = КурсыВалютыЦены.Валюта
|
| ЛЕВОЕ СОЕДИНЕНИЕ
| РегистрСведений.ОтносительныеКурсыВалют.СрезПоследних(&Дата, Валюта = &Валюта И БазоваяВалюта = &БазоваяВалюта) КАК КурсыВалюты
| ПО
| ИСТИНА";
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ТекстЗапросаКоэффициентУпаковки1",
Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
"ТаблицаТовары.Упаковка",
"ТаблицаТовары.Номенклатура"));
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ТекстЗапросаКоэффициентУпаковки2",
Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
"ЦеныПоследнихПоступлений.Упаковка",
"ЦеныПоследнихПоступлений.Номенклатура"));
Запрос.УстановитьПараметр("ИсходнаяТаблица", Объект.Товары.Выгрузить(,"НомерСтроки, Номенклатура, Характеристика, Упаковка"));
Запрос.УстановитьПараметр("Дата", ?(ЗначениеЗаполнено(Объект.Дата), Объект.Дата, ТекущаяДатаСеанса()));
Запрос.УстановитьПараметр("Валюта", Объект.Валюта);
Запрос.УстановитьПараметр("БазоваяВалюта", ЗначениеНастроекПовтИсп.БазоваяВалютаПоУмолчанию());
Запрос.УстановитьПараметр("Партнер", Объект.Партнер);
СтруктураПересчетаСуммы = ПараметрыПересчетаСуммыНДСВСтрокеТЧ(ЭтаФорма);
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
СтруктураДействий = Новый Структура();
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
ОбрабатываемыеСтроки = Новый Массив();
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
СтрокаТЧ = Объект.Товары[Выборка.НомерСтроки - 1];
СтрокаТЧ.Цена = Выборка.Цена;
ОбрабатываемыеСтроки.Добавить(СтрокаТЧ);
ЦеныЗаполнены = Истина;
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.Товары,
КэшированныеЗначения);
КонецПроцедуры
#КонецОбласти
#Область ПодборыИОбработкаПроверкиКоличества
&НаКлиенте
Процедура СообщитьОбОшибкахОткрытияПодбора(Отказ)
Если Не ЗначениеЗаполнено(Объект.Валюта) Тогда
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(НСтр("ru = 'Поле ""Валюта"" не заполнено'"), Объект.Ссылка, "Объект.Валюта",,Отказ);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьПодборСерий(Текст = "", ТекущиеДанные = Неопределено)
Если НоменклатураКлиент.ДляУказанияСерийНуженСерверныйВызов(ЭтаФорма, ПараметрыУказанияСерий, Текст, ТекущиеДанные)Тогда
Если ТекущиеДанные = Неопределено Тогда
ТекущиеДанныеИдентификатор = Элементы.Товары.ТекущиеДанные.ПолучитьИдентификатор();
Иначе
ТекущиеДанныеИдентификатор = ТекущиеДанные.ПолучитьИдентификатор();
КонецЕсли;
ПараметрыФормыУказанияСерий = ПараметрыФормыУказанияСерий(ТекущиеДанныеИдентификатор);
ЗначениеВозврата = Неопределено;
ОткрытьФорму(ПараметрыФормыУказанияСерий.ИмяФормы,ПараметрыФормыУказанияСерий,ЭтаФорма,,,, Новый ОписаниеОповещения("ОткрытьПодборСерийЗавершение", ЭтотОбъект, Новый Структура("ПараметрыФормыУказанияСерий", ПараметрыФормыУказанияСерий)), РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьПодборСерийЗавершение(Результат, ДополнительныеПараметры) Экспорт
ПараметрыФормыУказанияСерий = ДополнительныеПараметры.ПараметрыФормыУказанияСерий;
ЗначениеВозврата = Результат;
Если ЗначениеВозврата <> Неопределено Тогда
ОбработатьУказаниеСерийСервер(ПараметрыФормыУказанияСерий);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ШтрихкодыИТорговоеОборудование
&НаКлиенте
Процедура ОбработатьШтрихкоды(ДанныеШтрихкодов)
Если Не ШтрихкодированиеНоменклатурыКлиент.ШтрихкодыВалидны(ДанныеШтрихкодов) Тогда
Возврат;
КонецЕсли;
СтруктураДействийСДобавленнымиСтроками = Новый Структура;
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтаФорма, СтруктураДействийСДобавленнымиСтроками);
ПараметрыЗаполненияСтавкиНДС = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект);
ПараметрыЗаполненияСтавкиНДС.УказаннаяСтавкаНДС = УказаннаяСтавкаНДС;
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьСтавкуНДС", ПараметрыЗаполненияСтавкиНДС);
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьЦенуЗакупки", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияЦеныЗакупкиВСтрокеТЧ(Объект));
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействийСДобавленнымиСтроками, ЭтаФорма);
СтруктураДействийСИзмененнымиСтроками = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействийСИзмененнымиСтроками, ЭтаФорма);
СтруктураДействий = ШтрихкодированиеНоменклатурыКлиент.ПараметрыОбработкиШтрихкодов();
СтруктураДействий.Штрихкоды = ДанныеШтрихкодов;
СтруктураДействий.ТолькоТовары = Истина;
СтруктураДействий.СтруктураДействийСДобавленнымиСтроками = СтруктураДействийСДобавленнымиСтроками;
СтруктураДействий.СтруктураДействийСИзмененнымиСтроками = СтруктураДействийСИзмененнымиСтроками;
СтруктураДействий.ПараметрыУказанияСерий = ПараметрыУказанияСерий;
ОбработатьШтрихкодыСервер(СтруктураДействий,КэшированныеЗначения);
ШтрихкодированиеНоменклатурыКлиент.ОбработатьНеизвестныеШтрихкоды(СтруктураДействий,КэшированныеЗначения,ЭтаФорма);
Если ШтрихкодированиеНоменклатурыКлиент.НужноОткрытьФормуУказанияСерийПослеОбработкиШтрихкодов(СтруктураДействий) Тогда
ТекущиеДанныеИдентификатор = СтруктураДействий.МассивСтрокССериями[0];
ПодключитьОбработчикОжидания("ОткрытьПодборСерийПриСканированииШтрихкодаНоменклатуры",0.1,Истина);
КонецЕсли;
Если СтруктураДействий.ТекущаяСтрока <> Неопределено Тогда
Элементы.Товары.ТекущаяСтрока = СтруктураДействий.ТекущаяСтрока;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбработатьШтрихкодыСервер(СтруктураПараметровДействия,КэшированныеЗначения)
ШтрихкодированиеНоменклатурыСервер.ОбработатьШтрихкоды(ЭтаФорма,Объект,СтруктураПараметровДействия,КэшированныеЗначения);
КонецПроцедуры
#КонецОбласти
#Область Серии
&НаСервере
Процедура УстановитьВидимостьЭлементовСерий()
Элементы.ТоварыСтатусУказанияСерий.Видимость = ПараметрыУказанияСерий.ИспользоватьСерииНоменклатуры;
Элементы.ТоварыУказатьСерии.Видимость = ПараметрыУказанияСерий.ИспользоватьСерииНоменклатуры;
Элементы.ТоварыСерия.Видимость = ПараметрыУказанияСерий.УчитыватьСебестоимостьПоСериям;
КонецПроцедуры
&НаСервере
Процедура ОбработатьУказаниеСерийСервер(ПараметрыФормыУказанияСерий)
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ОбновлятьКоличествоТоваровПриРегистрацииСерий", Истина);
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, ЭтаФорма);
НоменклатураСервер.ОбработатьУказаниеСерий(Объект,ПараметрыУказанияСерий,ПараметрыФормыУказанияСерий,СтруктураДействий);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСтатусыУказанияСерийПриОкончанииРедактированияСтрокиТЧ(ТекущаяСтрокаИдентификатор, КэшированныеЗначения)
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерийПриОкончанииРедактированияСтрокиТЧ(Объект,
ПараметрыУказанияСерий, ТекущаяСтрокаИдентификатор, КэшированныеЗначения);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСтатусыУказанияСерийСервер()
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьПодборСерийПриСканированииШтрихкодаНоменклатуры()
Если ТекущиеДанныеИдентификатор = Неопределено Тогда
Возврат;
КонецЕсли;
ТекущиеДанные = Объект.Товары.НайтиПоИдентификатору(ТекущиеДанныеИдентификатор);
ОткрытьПодборСерий(,ТекущиеДанные);
КонецПроцедуры
&НаСервере
Процедура ПодготовитьЗаполнитьУстановитьВидимостьСерий()
ПараметрыУказанияСерий = Новый ФиксированнаяСтруктура(НоменклатураСервер.ПараметрыУказанияСерий(Объект, Документы.ПоступлениеТоваровНаСклад));
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
УстановитьВидимость();
КонецПроцедуры
&НаСервере
Функция ЗаполнитьСерииПоДаннымПТиУНаСервере()
ТаблицаТовары = Объект.Товары.Выгрузить();
ТаблицаТовары.Колонки.Добавить("Склад", Новый ОписаниеТипов("СправочникСсылка.Склады"));
ТаблицаТовары.ЗаполнитьЗначения(Объект.Склад, "Склад");
РезультатЗаполненияСерий = НоменклатураСервер.ЗаполнитьСерииПоДаннымТоваровУПартнеров(ТаблицаТовары, Объект, Ложь);
Если РезультатЗаполненияСерий.ЕстьИзменения Тогда
СтруктураДействий = Новый Структура();
СтруктураДействий.Вставить(
"ПересчитатьКоличествоУпаковок",
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.СтруктураПересчетаКоличестваУпаковок());
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(ТаблицаТовары, СтруктураДействий, Неопределено);
Объект.Товары.Загрузить(РезультатЗаполненияСерий.ТаблицаТовары);
НоменклатураСервер.ЗаполнитьСерииПоFEFO(Объект, ПараметрыУказанияСерий, Ложь);
КонецЕсли;
РезультатЗаполнения = Новый Структура("ЕстьИзменения, КоличествоИзначальноВерное");
ЗаполнитьЗначенияСвойств(РезультатЗаполнения, РезультатЗаполненияСерий);
Возврат РезультатЗаполнения;
КонецФункции
#КонецОбласти
#Область КонтрольНесогласованныхИзменений
&НаКлиенте
Процедура КонтрольНеСогласованныхИзмененийОбработатьСобытиеПриИзменении(Элемент)
Если Элемент.Имя = Элементы.Дата.Имя Тогда
ДатаПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = Элементы.Партнер.Имя Тогда
ПартнерПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = Элементы.Соглашение.Имя Тогда
СоглашениеПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = Элементы.Договор.Имя Тогда
ДоговорПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = Элементы.ЦенаВключаетНДС.Имя Тогда
ЦенаВключаетНДСПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = Элементы.НалогообложениеНДС.Имя Тогда
НалогообложениеНДСПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = Элементы.Организация.Имя Тогда
ОрганизацияПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = Элементы.Контрагент.Имя Тогда
КонтрагентПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = Элементы.Склад.Имя Тогда
СкладПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = Элементы.ТоварыНоменклатураПартнера.Имя Тогда
ТоварыНоменклатураПартнераПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = Элементы.ТоварыСерия.Имя Тогда
ТоварыСерияПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = Элементы.ТоварыКоличествоУпаковок.Имя Тогда
ТоварыКоличествоУпаковокПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = Элементы.ТоварыУпаковка.Имя Тогда
ТоварыУпаковкаПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = Элементы.ТоварыЦена.Имя Тогда
ТоварыЦенаПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = Элементы.ТоварыСумма.Имя Тогда
ТоварыСуммаПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = Элементы.ТоварыСтавкаНДС.Имя Тогда
ТоварыСтавкаНДСПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = Элементы.ТоварыСуммаНДС.Имя Тогда
ТоварыСуммаНДСПриИзменении(Элемент);
Иначе
ОбщегоНазначенияУТКлиент.КонтрольНеСогласованныхИзмененийВызватьИсключение(ЭтаФорма, Элемент);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КонтрольНеСогласованныхИзмененийОбработатьСобытиеКоманды(Команда)
Если Команда.Имя = Команды.ПоискПоШтрихкоду.Имя Тогда
ПоискПоШтрихкодуВыполнить(Команда);
ИначеЕсли Команда.Имя = Команды.ПолучитьВес.Имя Тогда
ПолучитьВес(Команда);
ИначеЕсли Команда.Имя = Команды.ЗагрузитьДанныеИзТСД.Имя Тогда
ЗагрузитьДанныеИзТСД(Команда);
ИначеЕсли Команда.Имя = Команды.ЗаполнитьЦеныПоСоглашению.Имя Тогда
ЗаполнитьЦеныПоСоглашению(Команда);
ИначеЕсли Команда.Имя = Команды.ЗаполнитьЦеныВыделенныхСтрокПоВидуЦеныПоставщика.Имя Тогда
ЗаполнитьЦеныВыделенныхСтрокПоВидуЦеныПоставщика(Команда);
ИначеЕсли Команда.Имя = Команды.ИзменитьКачество.Имя Тогда
ИзменитьКачествоНоменклатуры(Команда);
ИначеЕсли Команда.Имя = Команды.РазбитьСтрокуФакт.Имя Тогда
РазбитьСтрокуФакт(Команда);
ИначеЕсли Команда.Имя = Команды.ПодобратьТовары.Имя Тогда
ПодобратьТовары(Команда);
ИначеЕсли Команда.Имя = Команды.ЗаполнитьНоменклатуруПоНоменклатуреПартнера.Имя Тогда
ЗаполнитьНоменклатуруПоНоменклатуреПартнера(Команда);
Иначе
ОбщегоНазначенияУТКлиент.КонтрольНеСогласованныхИзмененийВызватьИсключение(ЭтаФорма, Команда);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КонтрольНеСогласованныхИзмененийОбработатьСобытиеНажатие(Элемент)
ОбщегоНазначенияУТКлиент.КонтрольНеСогласованныхИзмененийВызватьИсключение(ЭтаФорма, Элемент);
КонецПроцедуры
&НаКлиенте
Процедура КонтрольНеСогласованныхИзмененийОбработатьСобытиеПередНачаломИзменения(Элемент, Отказ)
ОбщегоНазначенияУТКлиент.КонтрольНеСогласованныхИзмененийВызватьИсключение(ЭтаФорма, Элемент);
КонецПроцедуры
&НаКлиенте
Процедура КонтрольНеСогласованныхИзмененийОбработатьСобытиеПередУдалением(Элемент, Отказ)
Если Элемент.Имя = Элементы.Товары.Имя Тогда
ТоварыПередУдалением(Элемент, Отказ);
Иначе
ОбщегоНазначенияУТКлиент.КонтрольНеСогласованныхИзмененийВызватьИсключение(ЭтаФорма, Элемент);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КонтрольНеСогласованныхИзмененийОбработатьСобытиеПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа)
ОбщегоНазначенияУТКлиент.КонтрольНеСогласованныхИзмененийВызватьИсключение(ЭтаФорма, Элемент);
КонецПроцедуры
#КонецОбласти
&НаКлиенте
Процедура Подключаемый_ПриИзменении_УстановитьДоступностьЭлементовПоСтатусуСервер(Элемент)
ОбщегоНазначенияУТКлиент.СохранитьЗначениеРеквизита(ЭтаФорма, Элемент);
Если ОбщегоНазначенияУТКлиент.ПриДействииСЭлементомЗависящимОтСтатуса(ЭтаФорма) Тогда
Возврат;
КонецЕсли;
Если СтруктураДействийКонтрольНеСогласованныхИзменений.ПриИзменении.Свойство(Элемент.Имя) Тогда
КонтрольНеСогласованныхИзмененийОбработатьСобытиеПриИзменении(Элемент);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_Нажатие_УстановитьДоступностьЭлементовПоСтатусуСервер(Элемент)
Если ОбщегоНазначенияУТКлиент.ПриДействииСЭлементомЗависящимОтСтатуса(ЭтаФорма) Тогда
Возврат;
КонецЕсли;
Если СтруктураДействийКонтрольНеСогласованныхИзменений.Нажатие.Свойство(Элемент.Имя) Тогда
КонтрольНеСогласованныхИзмененийОбработатьСобытиеНажатие(Элемент);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_Команда_УстановитьДоступностьЭлементовПоСтатусуСервер(Команда)
Если ОбщегоНазначенияУТКлиент.ПриДействииСЭлементомЗависящимОтСтатуса(ЭтаФорма) Тогда
Возврат;
КонецЕсли;
Если СтруктураДействийКонтрольНеСогласованныхИзменений.Команды.Свойство(Команда.Имя) Тогда
КонтрольНеСогласованныхИзмененийОбработатьСобытиеКоманды(Команда);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПередНачаломИзменения_УстановитьДоступностьЭлементовПоСтатусуСервер(Элемент, Отказ)
Если СтруктураДействийКонтрольНеСогласованныхИзменений = Неопределено Тогда
Возврат;
КонецЕсли;
ЗаполнитьЗначенияСвойств(СтруктураДействийКонтрольНеСогласованныхИзменений.ЗначенияРеквизитов[Элемент.Имя], Элемент.ТекущиеДанные);
Если СтруктураДействийКонтрольНеСогласованныхИзменений.ПередНачаломИзменения.Свойство(Элемент.Имя) Тогда
КонтрольНеСогласованныхИзмененийОбработатьСобытиеПередНачаломИзменения(Элемент, Отказ);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПередУдалением_УстановитьДоступностьЭлементовПоСтатусуСервер(Элемент, Отказ)
Если ОбщегоНазначенияУТКлиент.ПриДействииСЭлементомЗависящимОтСтатуса(ЭтаФорма) Тогда
Возврат;
КонецЕсли;
Имя = Элемент.Имя;
Если СтруктураДействийКонтрольНеСогласованныхИзменений.ПередУдалением.Свойство(Имя) Тогда
КонтрольНеСогласованныхИзмененийОбработатьСобытиеПередУдалением(Элемент, Отказ);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПередНачаломДобавления_УстановитьДоступностьЭлементовПоСтатусуСервер(Элемент, Отказ, Копирование, Родитель, Группа)
Если ОбщегоНазначенияУТКлиент.ПриДействииСЭлементомЗависящимОтСтатуса(ЭтаФорма) Тогда
Возврат;
КонецЕсли;
Имя = Элемент.Имя;
Если СтруктураДействийКонтрольНеСогласованныхИзменений.ПередНачаломДобавления.Свойство(Имя) Тогда
КонтрольНеСогласованныхИзмененийОбработатьСобытиеПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПриИзмененииРеквизитаЗависящегоОтСтатуса()
УстановитьДоступностьЭлементовПоСтатусуСервер();
ОбщегоНазначенияУТКлиент.ПослеИзмененияРеквизитаЗависящегоОтСтатуса(ЭтаФорма);
КонецПроцедуры
#Область РаботаСБуферомОбмена
&НаСервере
Процедура СкопироватьСтрокиНаСервере(ИмяТЧ)
РаботаСТабличнымиЧастями.СкопироватьСтрокиВБуферОбмена(Объект[ИмяТЧ], Элементы[ИмяТЧ].ВыделенныеСтроки);
КонецПроцедуры
&НаСервере
Процедура ПолучитьСтрокиИзБуфераОбмена()
ПараметрыОтбора = Новый Соответствие;
ПараметрыОтбора.Вставить("Номенклатура.ТипНоменклатуры", НоменклатураКлиентСервер.ОтборПоТоваруМногооборотнойТаре(Ложь));
Колонки = "Номенклатура,Характеристика,Упаковка,КоличествоУпаковок,Цена";
ТаблицаТоваров = РаботаСТабличнымиЧастями.СтрокиИзБуфераОбмена(ПараметрыОтбора, Колонки);
Если Не ЗначениеЗаполнено(ТаблицаТоваров) Тогда
Возврат;
КонецЕсли;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
ПараметрыЗаполненияСтавкиНДС = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект);
ПараметрыЗаполненияСтавкиНДС.УказаннаяСтавкаНДС = УказаннаяСтавкаНДС;
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", ПараметрыЗаполненияСтавкиНДС);
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, ЭтаФорма);
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтаФорма, СтруктураДействий);
ОбрабатываемыеСтроки = Новый Массив;
Для Каждого СтрокаТовара Из ТаблицаТоваров Цикл
ТекущаяСтрока = Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(ТекущаяСтрока, СтрокаТовара);
ОбрабатываемыеСтроки.Добавить(ТекущаяСтрока);
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.Товары);
СтруктураНаименованийТабличныхЧастей = Новый Структура("Товары");
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре(СтруктураНаименованийТабличныхЧастей);
ЗаполнитьСтатусыУказанияСерийСервер();
КонецПроцедуры
&НаСервере
Процедура УстановитьДоступностьКомандБуфераОбмена()
МассивЭлементов = Новый Массив();
МассивЭлементов.Добавить("ТоварыВставитьСтроки");
МассивЭлементов.Добавить("ТоварыКонтекстноеМенюВставитьСтроки");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, МассивЭлементов, "Доступность",
РаботаСТабличнымиЧастями.ЕстьСтрокиВБуфереОбмена());
КонецПроцедуры
&НаКлиенте
Процедура УстановитьДоступностьКомандБуфераОбменаНаКлиенте()
МассивЭлементов = Новый Массив();
МассивЭлементов.Добавить("ТоварыВставитьСтроки");
МассивЭлементов.Добавить("ТоварыКонтекстноеМенюВставитьСтроки");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, МассивЭлементов, "Доступность", Истина);
КонецПроцедуры
#КонецОбласти
&НаСервере
Процедура ЗаполнитьСлужебныеРеквизитыПоНоменклатуре(СтруктураНаименованийТабличныхЧастей)
ПараметрыЗаполненияРеквизитов = Новый Структура;
ПараметрыЗаполненияРеквизитов.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются",
Новый Структура("Номенклатура", "ХарактеристикиИспользуются"));
ПараметрыЗаполненияРеквизитов.Вставить("ЗаполнитьПризнакТипНоменклатуры",
Новый Структура("Номенклатура", "ТипНоменклатуры"));
ПараметрыЗаполненияРеквизитов.Вставить("ЗаполнитьПризнакАртикул",
Новый Структура("Номенклатура", "Артикул"));
Если СтруктураНаименованийТабличныхЧастей.Свойство("Товары") Тогда
НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(Объект.Товары, ПараметрыЗаполненияРеквизитов);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииСозданииНаСервере()
ИспользоватьСоглашенияСПоставщиками = ПолучитьФункциональнуюОпцию("ИспользоватьСоглашенияСПоставщиками");
ИспользоватьНаправленияДеятельности = ПолучитьФункциональнуюОпцию("ИспользоватьУчетЗатратПоНаправлениямДеятельности");
ИспользоватьКорректировкиПриобретений = ПолучитьФункциональнуюОпцию("ИспользоватьКорректировкиПриобретений");
ВалютаДокумента = Объект.Валюта;
Договор = Объект.Договор;
Склад = Объект.Склад;
ПараметрыУказанияСерий = Новый ФиксированнаяСтруктура(НоменклатураСервер.ПараметрыУказанияСерий(Объект, Документы.ПоступлениеТоваровНаСклад));
УстановитьВидимость();
УстановитьВидимостьЭлементовПоОперацииСервер();
Если ЗначениеЗаполнено(Объект.Распоряжение) Тогда
УстановитьПараметрыВыбораРеквизитаСклад(СкладыРаспоряжения());
КонецЕсли;
ПоказатьПредставлениеРаспоряжения();
УстановитьДоступностьЭлементовПоСтатусуСервер();
СтруктураНаименованийТабличныхЧастей = Новый Структура("Товары");
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре(СтруктураНаименованийТабличныхЧастей);
ДатаДокументаДоИзменения = Объект.Дата;
НаправленияДеятельностиСервер.ПриЧтенииСозданииНаСервере(ЭтотОбъект);
ПодготовитьЗаполнитьУстановитьВидимостьСерий();
Если ТипЗнч(Объект.Распоряжение) = Тип("СправочникСсылка.СоглашенияСПоставщиками") Тогда
ОперацияСоглашения = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Распоряжение, "ХозяйственнаяОперация");
ОперацииРаздельнойЗакупкиПоСоглашению = ЗакупкиСервер.ХозяйственныеОперацииПоОсновной(ОперацияСоглашения);
ОперацииДляДокумента = ЗакупкиСервер.ХозяйственныеОперацииРаздельнойЗакупки(ПолноеИмяДокумента(), Объект.Распоряжение);
ВсегоОпераций = ОперацииДляДокумента.Количество() - 1;
Для Индекс = 0 По ВсегоОпераций Цикл
ОперацияДокумента = ОперацииДляДокумента[ВсегоОпераций - Индекс];
Если ОперацииРаздельнойЗакупкиПоСоглашению.Найти(ОперацияДокумента) = Неопределено Тогда
ОперацииДляДокумента.Удалить(ВсегоОпераций - Индекс);
КонецЕсли;
КонецЦикла;
Элементы.ХозяйственнаяОперация.СписокВыбора.ЗагрузитьЗначения(ОперацииДляДокумента);
Иначе
Элементы.ХозяйственнаяОперация.СписокВыбора.ЗагрузитьЗначения(
ЗакупкиСервер.ХозяйственныеОперацииРаздельнойЗакупки(ПолноеИмяДокумента()));
КонецЕсли;
ХозяйственнаяОперацияДоИзменения = Объект.ХозяйственнаяОперация;
ЗаполнитьХозяйственнуюОперацияДоговора();
ОтветственныеЛицаСервер.ЗаполнитьСписокВыбораМенеджера(Элементы.Менеджер, Объект);
ЗакупкиСервер.УстановитьДоступностьДоговора(Объект, Элементы.Договор.Доступность, Элементы.Договор.Видимость, Объект.Договор);
ПараметрыЗаполнения = Документы.ПоступлениеТоваровНаСклад.ПараметрыЗаполненияНалогообложенияНДСЗакупки(Объект);
УчетНДСУП.ЗаполнитьСписокВыбораНалогообложенияНДСЗакупки(Элементы.НалогообложениеНДС,
Объект.НалогообложениеНДС,
ПараметрыЗаполнения,
УчетНДСКэшированныеЗначенияПараметров);
АктуализироватьВидДеятельностиНДС(Ложь);
РассчитатьИтоговыеПоказатели(ЭтаФорма);
ЗакупкиСервер.ЗаполнитьСписокВыбораНаименованиеВходящегоДокумента(ЭтотОбъект, Объект.Контрагент);
КонецПроцедуры
&НаСервере
Процедура ПоказатьПредставлениеРаспоряжения()
МассивСтрок = Новый Массив;
Если ЗначениеЗаполнено(Объект.Распоряжение) Тогда
РаспоряжениеПредставление = СтроковыеФункции.ФорматированнаяСтрока("<a href='ОткрытьРаспоряжение'>%1</a> <a href='ВыбратьРаспоряжение'>%2</a>",Строка(Объект.Распоряжение),НСтр("ru = 'Изменить'"));
Иначе
РаспоряжениеПредставление = СтроковыеФункции.ФорматированнаяСтрока("‹%1› <a href='ВыбратьРаспоряжение'>%2</a>",НСтр("ru = 'не выбрано'"),НСтр("ru = 'Выбрать'"));
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ПоместитьТоварыВоВременноеХранилищеСервер(ИмяКоллекции)
Возврат ЗакупкиСервер.ПоместитьТоварыВоВременноеХранилище(Объект[ИмяКоллекции]);
КонецФункции
&НаСервере
Процедура ЗаполнитьТоварыИзВременногоХранилищаСервер(АдресВоВременномХранилище)
ТаблицаТоваров = ПолучитьИзВременногоХранилища(АдресВоВременномХранилище);
ЗаполнитьСтавкуНДС = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект);
ЗаполнитьСтавкуНДС.УказаннаяСтавкаНДС = УказаннаяСтавкаНДС;
СтруктураПересчетаСуммы = ПараметрыПересчетаСуммыНДСВСтрокеТЧ(ЭтотОбъект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", ЗаполнитьСтавкуНДС);
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтотОбъект, СтруктураДействий);
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
ОбрабатываемыеСтроки = Новый Массив;
Для Каждого ТекСтрока Из ТаблицаТоваров Цикл
МассивСтрокКоллекции = Объект.Товары.НайтиСтроки(Новый Структура("НомерСтроки", ТекСтрока.НомерСтроки));
Если МассивСтрокКоллекции.Количество() <> 1 Тогда
Продолжить;
Иначе
СтрокаКоллекции = МассивСтрокКоллекции[0];
КонецЕсли;
ЗаполнитьЗначенияСвойств(СтрокаКоллекции, ТекСтрока, "Номенклатура, Характеристика, Упаковка");
ОбрабатываемыеСтроки.Добавить(СтрокаКоллекции);
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.Товары,
КэшированныеЗначения);
СтруктураНаименованийТабличныхЧастей = Новый Структура("Товары");
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре(СтруктураНаименованийТабличныхЧастей);
ЗаполнитьСтатусыУказанияСерийСервер();
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьДоговорПоУмолчанию()
ДопПараметры = ЗакупкиСервер.ДополнительныеПараметрыОтбораДоговоров();
ДопПараметры.ВалютаВзаиморасчетов = Объект.Валюта;
Объект.Договор = ЗакупкиСервер.ПолучитьДоговорПоУмолчанию(Объект, ХозяйственнаяОперацияДоговора, ДопПараметры);
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьЭлементовПоОперацииСервер()
НоменклатураСервер.УстановитьПараметрыВыбораНоменклатуры(Объект.ХозяйственнаяОперация, Элементы.ТоварыНоменклатура);
НоменклатураСервер.УстановитьПараметрыВыбораНоменклатуры(Объект.ХозяйственнаяОперация, Элементы.ТоварыНоменклатураПартнера);
КонецПроцедуры
&НаСервере
Процедура УстановитьПараметрыВыбораРеквизитаСклад(СкладыРаспоряжения)
ПолеФормы = Элементы.Склад;
ПараметрыВыбораПоля = Новый Массив;
Для Каждого ПараметрВыбора Из ПолеФормы.ПараметрыВыбора Цикл
Если Не ПараметрВыбора.Имя = "Отбор.Ссылка" Тогда
ПараметрыВыбораПоля.Добавить(ПараметрВыбора);
КонецЕсли;
КонецЦикла;
Если ЗначениеЗаполнено(СкладыРаспоряжения) Тогда
ДобавляемыйПараметрВыбора = Новый ПараметрВыбора("Отбор.Ссылка", СкладыРаспоряжения);
ПараметрыВыбораПоля.Добавить(ДобавляемыйПараметрВыбора);
КонецЕсли;
ПолеФормы.ПараметрыВыбора = Новый ФиксированныйМассив(ПараметрыВыбораПоля);
КонецПроцедуры
&НаСервере
Процедура ОбработкаВыбораПодборНаСервере(ВыбранноеЗначение)
ТаблицаТоваров = ПолучитьИзВременногоХранилища(ВыбранноеЗначение.АдресТоваровВХранилище);
ЗаполнитьСтавкуНДС = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект);
ЗаполнитьСтавкуНДС.УказаннаяСтавкаНДС = УказаннаяСтавкаНДС;
ЗаполнитьСтавкуНДС.УказаннаяСтавкаНДС = УказаннаяСтавкаНДС;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", ЗаполнитьСтавкуНДС);
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, ЭтотОбъект);
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтотОбъект, СтруктураДействий);
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
ОбрабатываемыеСтроки = Новый Массив();
Для Каждого СтрокаТовара Из ТаблицаТоваров Цикл
ТекущаяСтрока = Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(ТекущаяСтрока, СтрокаТовара, "НоменклатураПартнера, Номенклатура, Характеристика, Упаковка, Цена, КоличествоУпаковок");
ОбрабатываемыеСтроки.Добавить(ТекущаяСтрока);
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.Товары,
КэшированныеЗначения);
СтруктураНаименованийТабличныхЧастей = Новый Структура("Товары");
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре(СтруктураНаименованийТабличныхЧастей);
ЗаполнитьСтатусыУказанияСерийСервер();
КонецПроцедуры
&НаСервере
Процедура ОбновитьЭлементыДополнительныхРеквизитов()
УправлениеСвойствами.ОбновитьЭлементыДополнительныхРеквизитов(ЭтаФорма);
КонецПроцедуры
&НаСервере
Процедура ПолучитьЗагруженныеТоварыИзХранилища(АдресТоваровВХранилище, ИмяТЧ)
ТоварыИзХранилища = ПолучитьИзВременногоХранилища(АдресТоваровВХранилище);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьНоменклатуруПартнераПоНоменклатуре", Объект.Партнер);
ОбрабатываемыеСтроки = Новый Массив;
Если ИмяТЧ = "Товары" Тогда
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтотОбъект, СтруктураДействий);
КонецЕсли;
Для Каждого СтрокаТоваров Из ТоварыИзХранилища Цикл
ОбъектТЧТовары = Объект[ИмяТЧ];
СтрокаТЧТовары = ОбъектТЧТовары.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаТЧТовары, СтрокаТоваров);
Если ИмяТЧ = "Товары" Тогда
ОбрабатываемыеСтроки.Добавить(СтрокаТЧТовары);
КонецЕсли;
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект[ИмяТЧ]);
Если ИмяТЧ = "Товары" Тогда
ЗаполнитьСтатусыУказанияСерийСервер();
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, Форма)
СтруктураПересчетаСуммы = ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Форма);
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц");
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
КонецПроцедуры
&НаКлиенте
Процедура ВопросПользователюПередЗаполнениемПоСоглашению(ОписаниеОповещения)
Если Объект.Товары.Количество() = 0
Или Не ЗначениеЗаполнено(Объект.Соглашение)
Или ВыбранаОперацияБезЦен(Объект.ХозяйственнаяОперация) Тогда
ВыполнитьОбработкуОповещения(ОписаниеОповещения, Ложь);
Возврат;
КонецЕсли;
ВариантыОтветов = Новый СписокЗначений;
ВариантыОтветов.Добавить(Истина, НСтр("ru='Перезаполнить'"));
ВариантыОтветов.Добавить(Ложь, НСтр("ru='Не перезаполнять'"));
ПоказатьВопрос(ОписаниеОповещения,
НСтр("ru='Перезаполнить цены по соглашению?'"),
ВариантыОтветов);
КонецПроцедуры
&НаСервере
Функция ПоместитьТабличнуюЧастьТоварыВоВременноеХранилищеДляПроверкиКоличества()
ТабличнаяЧастьТовары = Объект.Товары.Выгрузить(,"Номенклатура, Характеристика, ХарактеристикиИспользуются, Упаковка, КоличествоУпаковок, Серия, СтатусУказанияСерий, СтатусУказанияСерийНаСкладах, СтатусУказанияСерийТоварыУПартнеров, ТипНоменклатуры");
ТабличнаяЧастьТовары.Свернуть("Номенклатура, Характеристика, ХарактеристикиИспользуются, Упаковка, Серия, СтатусУказанияСерий, СтатусУказанияСерийНаСкладах, СтатусУказанияСерийТоварыУПартнеров, ТипНоменклатуры", "КоличествоУпаковок");
АдресВоВременномХранилище = ПоместитьВоВременноеХранилище(ТабличнаяЧастьТовары, УникальныйИдентификатор);
Возврат АдресВоВременномХранилище;
КонецФункции
&НаСервере
Процедура ИзменитьТабличнуюЧастьПоРезультатамПроверки(ВозвращаемыеПараметры, КэшированныеЗначения)
ТаблицаТовары = ПолучитьИзВременногоХранилища(ВозвращаемыеПараметры.Товары);
ОбрабатываемыеСтроки = Новый Массив;
ОбрабатываемыеСтрокиНовые = Новый Массив;
УдаляемыеСтроки = Новый Массив;
Для Каждого СтрокаИсточник Из ТаблицаТовары Цикл
Отбор = Новый Структура("Номенклатура, Характеристика, Серия, СтатусУказанияСерий, Упаковка");
ЗаполнитьЗначенияСвойств(Отбор, СтрокаИсточник);
НайденныеСтроки = Объект.Товары.НайтиСтроки(Отбор);
Для Каждого СтрокаТЧ Из НайденныеСтроки Цикл
Если СтрокаИсточник.КоличествоУпаковок = 0 Тогда
Прервать;
КонецЕсли;
Если СтрокаТЧ.КоличествоУпаковок = 0
И СтрокаИсточник.КоличествоУпаковок < 0 Тогда
Продолжить;
КонецЕсли;
Если СтрокаИсточник.КоличествоУпаковок >= 0 Тогда
СтрокаТЧ.КоличествоУпаковок = СтрокаТЧ.КоличествоУпаковок + СтрокаИсточник.КоличествоУпаковок;
СтрокаИсточник.КоличествоУпаковок = 0;
Иначе
КоличествоКСписанию = -СтрокаИсточник.КоличествоУпаковок;
КоличествоВСтроке = СтрокаТЧ.КоличествоУпаковок;
Если КоличествоКСписанию > КоличествоВСтроке Тогда
СтрокаИсточник.КоличествоУпаковок = КоличествоВСтроке - КоличествоКСписанию;
СтрокаТЧ.КоличествоУпаковок = 0;
Иначе
СтрокаИсточник.КоличествоУпаковок = 0;
СтрокаТЧ.КоличествоУпаковок = КоличествоВСтроке - КоличествоКСписанию;
КонецЕсли;
КонецЕсли;
Если СтрокаТЧ.КоличествоУпаковок > 0 Тогда
ОбрабатываемыеСтроки.Добавить(СтрокаТЧ);
КонецЕсли;
КонецЦикла;
Если НайденныеСтроки.Количество() = 0 Тогда
СтрокаТЧ = Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаТЧ, СтрокаИсточник);
ОбрабатываемыеСтрокиНовые.Добавить(СтрокаТЧ);
КонецЕсли;
КонецЦикла;
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, ЭтотОбъект);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.Товары,
КэшированныеЗначения);
СтруктураДействий.Вставить("ЗаполнитьЦенуЗакупки", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияЦеныЗакупкиВСтрокеТЧ(Объект));
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект));
СтруктураДействий.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются", Новый Структура("Номенклатура", "ХарактеристикиИспользуются"));
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтрокиНовые,
СтруктураДействий,
Объект.Товары,
КэшированныеЗначения);
УсловиеОтбора = Новый Структура("КоличествоУпаковок", 0);
НайденныеСтроки = Объект.Товары.НайтиСтроки(УсловиеОтбора);
Для Каждого СтрокаТЧ Из НайденныеСтроки Цикл
УдаляемыеСтроки.Добавить(СтрокаТЧ);
КонецЦикла;
Для Каждого СтрокаТЧ Из УдаляемыеСтроки Цикл
Объект.Товары.Удалить(СтрокаТЧ);
КонецЦикла;
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект,ПараметрыУказанияСерий);
КонецПроцедуры
&НаСервере
Функция ПараметрыФормыУказанияСерий(ТекущиеДанныеИдентификатор)
Возврат НоменклатураСервер.ПараметрыФормыУказанияСерий(Объект, ПараметрыУказанияСерий, ТекущиеДанныеИдентификатор, ЭтаФорма);
КонецФункции
#Область РаботаСКонтрагентами
&НаКлиенте
Процедура Подключаемый_ПоказатьПредложениеИспользоватьПроверкуКонтрагентов()
ПроверкаКонтрагентовКлиент.ПредложитьВключитьПроверкуКонтрагентов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбработатьРезультатПроверкиКонтрагентов()
ПроверкаКонтрагентовКлиент.ОбработатьРезультатПроверкиКонтрагентовВДокументе(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ОтобразитьРезультатПроверкиКонтрагента() Экспорт
ПроверкаКонтрагентов.ОтобразитьРезультатПроверкиКонтрагентаВДокументе(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ПроверитьКонтрагентовФоновоеЗадание(ПараметрыФоновогоЗадания) Экспорт
ПроверкаКонтрагентов.ПроверитьКонтрагентовВДокументеФоновоеЗадание(ЭтотОбъект, ПараметрыФоновогоЗадания);
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьКонтрагентов(Команда)
ПроверкаКонтрагентовКлиент.ПроверитьКонтрагентовВДокументеПоКнопке(ЭтотОбъект);
КонецПроцедуры
#КонецОбласти
#Область Прочее
&НаСервере
Процедура ЗаполнитьХозяйственнуюОперацияДоговора()
ПарыОперацийРаздельнойЗакупки = ЗакупкиСервер.ПарыОперацийРаздельнойЗакупки();
ХозяйственнаяОперацияДоговора = ПарыОперацийРаздельнойЗакупки.Получить(Объект.ХозяйственнаяОперация);
ЭтоИмпорт = (ХозяйственнаяОперацияДоговора = Перечисления.ХозяйственныеОперации.ЗакупкаПоИмпортуТоварыВПути);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ЗакрытьФорму()
Если Открыта() Тогда
Закрыть();
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ПараметрыПересчетаСуммыНДСВТЧ(Форма)
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВТЧ(Форма.Объект);
Возврат СтруктураПересчетаСуммы;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Форма)
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Форма.Объект);
Возврат СтруктураПересчетаСуммы;
КонецФункции
&НаКлиенте
Процедура ДатаПриИзмененииЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
ПересчитыватьЦены = Ложь;
Если РезультатВопроса = Истина Тогда
ПересчитыватьЦены = Истина;
КонецЕсли;
ЦеныРассчитаны = ДатаПриИзмененииСервер(ПересчитыватьЦены);
ДатаДокументаДоИзменения = Объект.Дата;
Если ПересчитыватьЦены Тогда
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияЦенПоСоглашению(ЦеныРассчитаны);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПоискПоШтрихкодуЗавершение(ДанныхШтрихкода, ДополнительныеПараметры) Экспорт
ОбработатьШтрихкоды(ДанныхШтрихкода);
КонецПроцедуры
&НаКлиенте
Процедура РазбитьСтрокуФактЗавершение(НоваяСтрока, ДополнительныеПараметры) Экспорт
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
Если НоваяСтрока <> Неопределено Тогда
СтруктураПересчетаСуммы = ПараметрыПересчетаСуммыНДСВСтрокеТЧ(ЭтаФорма);
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, ЭтаФорма);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(НоваяСтрока, СтруктураДействий, КэшированныеЗначения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьСтавкуНДСЗавершение(СтавкаНДС, ДополнительныеПараметры) Экспорт
Если СтавкаНДС = Неопределено Тогда
Возврат;
КонецЕсли;
ЗаполнитьСтавкуНДСНаСервере(СтавкаНДС, КэшированныеЗначения);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСтавкуНДСНаСервере(СтавкаНДС, КэшированныеЗначения)
СтруктураПересчетаСуммы = ПараметрыПересчетаСуммыНДСВСтрокеТЧ(ЭтотОбъект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
ВыделенныеСтроки = РаботаСТабличнымиЧастямиКлиентСервер.ЭлементыКоллекции(
Объект.Товары, Элементы.Товары.ВыделенныеСтроки);
Для каждого СтрокаТабличнойЧасти Из ВыделенныеСтроки Цикл
СтрокаТабличнойЧасти.СтавкаНДС = СтавкаНДС;
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ВыделенныеСтроки,
СтруктураДействий,
Объект.Товары,
КэшированныеЗначения);
КонецПроцедуры
&НаСервере
Процедура УстановитьДоступностьЭлементовПоСтатусуСервер()
Если Не ПраваПользователяПовтИсп.ОтклонениеОтУсловийЗакупок() Тогда
МассивЭлементов = Новый Массив;
МассивЭлементов.Добавить("Партнер");
МассивЭлементов.Добавить("Соглашение");
МассивЭлементов.Добавить("Договор");
МассивЭлементов.Добавить("ЦенаВключаетНДС");
МассивЭлементов.Добавить("НалогообложениеНДС");
МассивЭлементов.Добавить("ВидДеятельностиНДС");
МассивЭлементов.Добавить("Организация");
МассивЭлементов.Добавить("Контрагент");
МассивЭлементов.Добавить("ХозяйственнаяОперация");
МассивЭлементов.Добавить("Менеджер");
МассивЭлементов.Добавить("Сделка");
МассивЭлементов.Добавить("Подразделение");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, МассивЭлементов, "ТолькоПросмотр", Истина);
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ПерезаполнитьПоПриемкеСервер(ЕстьПринятыеТовары = Ложь, ОчищатьЕслиНетПринятых = Ложь)
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействийСИзмененнымиСтроками = Новый Структура;
СтруктураДействийСИзмененнымиСтроками.Вставить("ПересчитатьСумму");
СтруктураДействийСИзмененнымиСтроками.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействийСИзмененнымиСтроками.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействийСДобавленнымиСтроками = Новый Структура;
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьЦенуЗакупки",
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияЦеныЗакупкиВСтрокеТЧ(Объект));
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьСтавкуНДС", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект));
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются",
Новый Структура("Номенклатура", "ХарактеристикиИспользуются"));
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакТипНоменклатуры",
Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакАртикул",
Новый Структура("Номенклатура", "Артикул"));
СтруктураДействийСДобавленнымиСтроками.Вставить("ПересчитатьСумму");
СтруктураДействийСДобавленнымиСтроками.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействийСДобавленнымиСтроками.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействийСДобавленнымиСтроками.Вставить("ПроверитьСериюРассчитатьСтатус",
Новый Структура("ПараметрыУказанияСерий, Склад",
ПараметрыУказанияСерий, Объект.Склад));
СтруктураДействийСДобавленнымиСтроками.Вставить("НоменклатураПриИзмененииПереопределяемый",
Новый Структура("ИмяФормы, ИмяТабличнойЧасти",
ЭтаФорма.ИмяФормы, "Товары"));
СкладЗаполнения = Объект.Склад;
МассивРаспоряжений = Новый Массив();
МассивРаспоряжений.Добавить(Объект.Распоряжение);
ВариантПриемкиТоваров = ?(Объект.ВариантПриемкиТоваров = Перечисления.ВариантыПриемкиТоваров.РазделенаТолькоПоНакладным,
Перечисления.ВариантыПриемкиТоваров.РазделенаПоЗаказамИНакладным,
Объект.ВариантПриемкиТоваров);
ПараметрыЗаполнения = ЗакупкиСервер.ПараметрыЗаполненияПоФактическойПриемке();
ПараметрыЗаполнения.ДокументПоступления = Объект.Ссылка;
ПараметрыЗаполнения.ДатаПоступления = Объект.Дата;
ПараметрыЗаполнения.СтруктураДействийСИзмененнымиСтроками = СтруктураДействийСИзмененнымиСтроками;
ПараметрыЗаполнения.СтруктураДействийСДобавленнымиСтроками = СтруктураДействийСДобавленнымиСтроками;
ПараметрыЗаполнения.Склад = СкладЗаполнения;
ПараметрыЗаполнения.МассивРаспоряжений = МассивРаспоряжений;
ПараметрыЗаполнения.Соглашение = Объект.Соглашение;
ПараметрыЗаполнения.Договор = Объект.Договор;
ПараметрыЗаполнения.ВариантПриемкиТоваров = ВариантПриемкиТоваров;
ЕстьИзменения = ЗакупкиСервер.ЗаполнитьТоварыПоФактическойПриемке(Объект.Товары,
ПараметрыЗаполнения,
ЕстьПринятыеТовары);
Если Не ЕстьПринятыеТовары
И ОчищатьЕслиНетПринятых Тогда
Объект.Товары.Очистить();
КонецЕсли;
ЗаполнитьСтатусыУказанияСерийСервер();
Возврат ЕстьИзменения;
КонецФункции
&НаСервере
Функция ПолноеИмяДокумента()
Возврат "Документ.ПоступлениеТоваровНаСклад";
КонецФункции
&НаСервере
Процедура УстановитьВидимость()
УстановитьВидимостьЭлементовСерий();
ОперацияБезЦен = ВыбранаОперацияБезЦен(Объект.ХозяйственнаяОперация);
Элементы.ГруппаВалютаВидЦены.Видимость = Не ОперацияБезЦен;
Элементы.ГруппаВалюта.Видимость = Не ОперацияБезЦен;
Элементы.ГруппаЦены.Видимость = Не ОперацияБезЦен;
Элементы.ТоварыЦена.Видимость = Не ОперацияБезЦен;
Элементы.ТоварыСумма.Видимость = Не ОперацияБезЦен;
Элементы.ТоварыСтавкаНДС.Видимость = Не ОперацияБезЦен;
Элементы.ТоварыСуммаНДС.Видимость = Не ОперацияБезЦен;
Элементы.ТоварыСуммаСНДС.Видимость = Не ОперацияБезЦен;
Элементы.ЦенаВключаетНДС.Видимость = Не ОперацияБезЦен;
Элементы.РегистрироватьЦеныПоставщика.Видимость = Не ОперацияБезЦен;
Элементы.ГруппаИтого.Видимость = Не ОперацияБезЦен;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ВыбранаОперацияБезЦен(ХозяйственнаяОперация)
Возврат ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭСПоступлениеИзТоваровВПути")
Или ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ЗакупкаПоИмпортуПоступлениеИзТоваровВПути")
Или ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ЗакупкаУПоставщикаПоступлениеИзТоваровВПути");
КонецФункции
&НаСервере
Функция СкладыРаспоряжения(ОчиститьСклад = Ложь)
СкладыРаспоряжения = Новый Массив;
Если ТипЗнч(Объект.Распоряжение) = Тип("ДокументСсылка.ЗаказПоставщику")
Или ТипЗнч(Объект.Распоряжение) = Тип("ДокументСсылка.ПриобретениеТоваровУслуг") Тогда
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТоварыКПоступлению.Склад КАК Склад
|ИЗ
| РегистрНакопления.ТоварыКПоступлению КАК ТоварыКПоступлению
|ГДЕ
| ТоварыКПоступлению.ДокументПоступления = &Распоряжение";
Запрос.УстановитьПараметр("Распоряжение", Объект.Распоряжение);
УстановитьПривилегированныйРежим(Истина);
Выборка = Запрос.Выполнить().Выбрать();
УстановитьПривилегированныйРежим(Ложь);
Пока Выборка.Следующий() Цикл
СкладыРаспоряжения.Добавить(Выборка.Склад);
КонецЦикла;
Если ОчиститьСклад
И ЗначениеЗаполнено(Объект.Склад)
И СкладыРаспоряжения.Найти(Объект.Склад) = Неопределено Тогда
Объект.Склад = Неопределено;
КонецЕсли;
КонецЕсли;
Возврат СкладыРаспоряжения;
КонецФункции
&НаСервере
Процедура ЗаполнитьНалогообложениеНДСЗакупки()
ПараметрыЗаполнения = Документы.ПоступлениеТоваровНаСклад.ПараметрыЗаполненияНалогообложенияНДСЗакупки(Объект);
УчетНДСУП.ЗаполнитьНалогообложениеНДСЗакупки(Объект.НалогообложениеНДС,
ПараметрыЗаполнения,
УчетНДСКэшированныеЗначенияПараметров);
УчетНДСУП.ЗаполнитьСписокВыбораНалогообложенияНДСЗакупки(Элементы.НалогообложениеНДС,
Объект.НалогообложениеНДС,
ПараметрыЗаполнения,
УчетНДСКэшированныеЗначенияПараметров);
НалогообложениеНДСПриИзмененииСервер();
КонецПроцедуры
&НаСервере
Процедура НалогообложениеНДСПриИзмененииСервер()
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("СкорректироватьСтавкуНДС", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект));
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий, КэшированныеЗначения);
СтруктураПересчетаСуммы = ПараметрыПересчетаСуммыНДСВТЧ(ЭтаФорма);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
КэшированныеЗначения.ОбработанныеСтроки,
СтруктураДействий,
Объект.Товары,
КэшированныеЗначения);
РассчитатьИтоговыеПоказатели(ЭтаФорма);
УчетНДСУП.УстановитьВидимостьКомандыЗаполнитьСтавкуНДС(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура АктуализироватьВидДеятельностиНДС(ЗаполнитьВидДеятельности = Истина)
ПараметрыЗаполнения = Документы.ПоступлениеТоваровНаСклад.ПараметрыЗаполненияВидаДеятельностиНДС(Объект);
Если ЗаполнитьВидДеятельности Тогда
ОперацияБезЦен = ВыбранаОперацияБезЦен(Объект.ХозяйственнаяОперация);
Если ОперацияБезЦен Тогда
Объект.ВидДеятельностиНДС = Неопределено;
КонецЕсли;
УчетНДСУП.ЗаполнитьВидДеятельностиНДС(Объект.ВидДеятельностиНДС, ПараметрыЗаполнения,
УчетНДСКэшированныеЗначенияПараметров);
КонецЕсли;
УчетНДСУП.ЗаполнитьСписокВыбораВидаДеятельностиНДС(Элементы.ВидДеятельностиНДС,
Объект.ВидДеятельностиНДС,
ПараметрыЗаполнения,
УчетНДСКэшированныеЗначенияПараметров);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура РассчитатьИтоговыеПоказатели(Форма)
ОперацияБезЦен = ВыбранаОперацияБезЦен(Форма.Объект.ХозяйственнаяОперация);
Если ОперацияБезЦен Тогда
Форма.Элементы.ГруппаИтого.Видимость = Ложь;
Иначе
Форма.Элементы.ГруппаИтого.Видимость = Истина;
Если УчетНДСУПКлиентСервер.ОтображатьНДСВИтогахДокументаЗакупки(Форма.Объект.НалогообложениеНДС) Тогда
Форма.Элементы.ГруппаСтраницыНДС.ТекущаяСтраница = Форма.Элементы.СтраницаСНДС;
Форма.Элементы.ГруппаСтраницыВсего.ТекущаяСтраница = Форма.Элементы.СтраницаВсегоСНДС;
Иначе
Форма.Элементы.ГруппаСтраницыНДС.ТекущаяСтраница = Форма.Элементы.СтраницаБезНДС;
Форма.Элементы.ГруппаСтраницыВсего.ТекущаяСтраница = Форма.Элементы.СтраницаВсегоБезНДС;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработатьРезультатВыбораНоменклатурыПартнера(ВыбранноеЗначение, ДополнительныеПараметры) Экспорт
Если ВыбранноеЗначение = Неопределено Тогда
Возврат;
КонецЕсли;
ДополнительныеПараметры.ТекущаяСтрока.НоменклатураПартнера = ВыбранноеЗначение;
ТоварыНоменклатураПартнераПриИзменении(ДополнительныеПараметры.ЭлементФормы);
КонецПроцедуры
#КонецОбласти
#КонецОбласти