#Область ОписаниеПеременных
&НаКлиенте
Перем ПредыдущиеРеквизитыСтроки;
&НаКлиенте
Перем КэшированныеЗначения;
&НаКлиенте
Перем ТекущиеДанныеИдентификатор;
&НаКлиенте
Перем ПроверкаКонтрагентовПараметрыОбработчикаОжидания Экспорт;
&НаКлиенте
Перем ФормаДлительнойОперации Экспорт;
&НаКлиенте
Перем ПараметрыДляЗаписи Экспорт;
#КонецОбласти
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
УстановитьУсловноеОформление();
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(Объект, ЭтотОбъект);
ИсправлениеДокументов.ПриСозданииНаСервере(ЭтаФорма, Элементы.СтрокаИсправление);
ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект);
ОбщегоНазначенияУТ.НастроитьПодключаемоеОборудование(ЭтаФорма);
Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
ПриЧтенииСозданииНаСервере();
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект,ПараметрыУказанияСерий);
Если Не ЗначениеЗаполнено(Объект.КодСпециальныхОбстоятельств) Тогда
ОбменСКонтрагентамиУТ.ОбновитьКодСпециальныхОбстоятельств(Объект);
КонецЕсли;
КонецЕсли;
Если КлиентскоеПриложение.ТекущийВариантИнтерфейса() = ВариантИнтерфейсаКлиентскогоПриложения.Версия8_2 Тогда
Элементы.ГруппаИтого.ЦветФона = Новый Цвет();
КонецЕсли;
УстановитьДоступностьКомандБуфераОбмена();
ОбновитьДоступностьЭлементовВозвратнойТары();
ВзаиморасчетыСервер.ФормаПриСозданииНаСервере(ЭтаФорма);
ЗакупкиСервер.УстановитьРежимВыбораГруппЭлементовСклада(Элементы.Склад);
ПроверкаКонтрагентов.ПриСозданииНаСервереДокумент(ЭтотОбъект, Параметры);
ПроверкаКонтрагентовВызовСервераПереопределяемыйУТ.ФормаДокументаПриСозданииНаСервере(ЭтотОбъект);
ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПриСозданииНаСервере(ЭтотОбъект);
ПараметрыЭДОПриСоздании = ОбменСКонтрагентами.ПараметрыПриСозданииНаСервере_ФормаДокумента();
ПараметрыЭДОПриСоздании.Форма = ЭтотОбъект;
ПараметрыЭДОПриСоздании.ДокументСсылка = Объект.Ссылка;
ПараметрыЭДОПриСоздании.КонтроллерСостояниеЭДО = Элементы.ДекорацияСостояниеЭДО;
ПараметрыЭДОПриСоздании.ГруппаСостояниеЭДО = Элементы.ГруппаСостояниеЭДО;
ПараметрыЭДОПриСоздании.МестоРазмещенияКоманд = Элементы.ПодменюЭДО;
ОбменСКонтрагентами.ПриСозданииНаСервере_ФормаДокумента(ПараметрыЭДОПриСоздании);
Элементы.ДекорацияСостояниеЭДО.Видимость = ПолучитьФункциональнуюОпцию("ИспользоватьОбменЭД");
Элементы.ГруппаСостояниеЭПД.Видимость = ПолучитьФункциональнуюОпцию("ИспользоватьОбменЭД");
СобытияФорм.ПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка);
Справочники.Назначения.ФормаДокументаПриСозданииНаСервере(ЭтаФорма);
ПараметрыГиперссылки = РаботаСФайлами.ГиперссылкаФайлов();
ПараметрыГиперссылки.Размещение = "КоманднаяПанель";
РаботаСФайлами.ПриСозданииНаСервере(ЭтотОбъект, ПараметрыГиперссылки);
УчетОригиналовПервичныхДокументов.ПриСозданииНаСервере_ФормаДокумента(ЭтотОбъект);
СервисДоставки.ПриСозданииНаСервере(ЭтаФорма);
Элементы.ГруппаСостояниеЭПД.Видимость = ОбменСГИСЭПДПереопределяемый.РазрешенаРаботаЭПД();
ОбновитьТекстЭПД();
УчетНДСУП.УстановитьВидимостьКомандыЗаполнитьСтавкуНДС(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)
Если ИсточникВыбора.ИмяФормы = "Обработка.ПодборТоваровВДокументЗакупки.Форма.Форма" Тогда
ОбработкаВыбораПодборНаСервере(ВыбранноеЗначение);
ПересчитатьСуммыВСтрокеРасшифровкиПлатежа();
РассчитатьИтоговыеПоказателиВозврата(ЭтаФорма);
ИначеЕсли ИсточникВыбора.ИмяФормы = "ОбщаяФорма.ПодборТоваровПоПоступлениям" Тогда
ОбработкаВыбораПодборПоПоступлениюСервер(ВыбранноеЗначение);
ПересчитатьСуммыВСтрокеРасшифровкиПлатежа();
РассчитатьИтоговыеПоказателиВозврата(ЭтаФорма);
ОбновитьИнформациюПоПоступлениям();
ИначеЕсли УчетНДСУПКлиент.ЗаконченоРедактированиеСчетаФактурыВыданного(ВыбранноеЗначение, ИсточникВыбора) Тогда
ОбновитьТекстДокументыНаОсновании();
ИначеЕсли УчетНДСУПКлиент.ЗаконченоРедактированиеСчетаФактурыПолученного(ВыбранноеЗначение, ИсточникВыбора) Тогда
ОбновитьТекстДокументыНаОсновании();
ИначеЕсли ИсточникВыбора.ИмяФормы = "Обработка.ПодборМногооборотнойТары.Форма.Форма" Тогда
ЗаполнитьМногооборотнуюТаруИзХранилищаСервер(ВыбранноеЗначение.АдресМногооборотнойТарыВХранилище);
ПересчитатьСуммыВСтрокеРасшифровкиПлатежа();
РассчитатьИтоговыеПоказателиВозврата(ЭтаФорма);
МногооборотнаяТараКлиент.ОповеститьПользователяОЗаполненииМногооборотнойТарой();
ИначеЕсли ИсточникВыбора.ИмяФормы = "Справочник.ВидыЗапасов.Форма.ФормаВводаВидовЗапасов" Тогда
ПолучитьВидыЗапасовИзХранилища(ВыбранноеЗначение);
ИначеЕсли ИсточникВыбора.ИмяФормы = "ОбщаяФорма.РеквизитыПечатиРеализации" Тогда
Если ВыбранноеЗначение <> Неопределено Тогда
Модифицированность = Истина;
ЗаполнитьЗначенияСвойств(Объект, ВыбранноеЗначение);
ОбновитьТекстДокументыНаОсновании();
КонецЕсли;
ИначеЕсли НоменклатураКлиент.ЭтоУказаниеСерий(ИсточникВыбора) Тогда
НоменклатураКлиент.ОбработатьУказаниеСерии(ЭтаФорма, ПараметрыУказанияСерий, ВыбранноеЗначение);
КонецЕсли;
Если Окно <> Неопределено Тогда
Окно.Активизировать();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
УправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
ДатыЗапретаИзменения.ОбъектПриЧтенииНаСервере(ЭтаФорма, ТекущийОбъект);
ВзаиморасчетыСервер.ФормаПриЧтенииНаСервере(ЭтаФорма);
ИсправлениеДокументов.ПриЧтенииНаСервере(ЭтаФорма, Элементы.СтрокаИсправление);
ПриЧтенииСозданииНаСервере();
СобытияФорм.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
ПараметрыЭДОПриСоздании = ОбменСКонтрагентами.ПараметрыПриЧтенииНаСервере_ФормаДокумента();
ПараметрыЭДОПриСоздании.Форма = ЭтотОбъект;
ПараметрыЭДОПриСоздании.ДокументСсылка = Объект.Ссылка;
ПараметрыЭДОПриСоздании.МестоРазмещенияКоманд = Элементы.ПодменюЭДО;
ПараметрыЭДОПриСоздании.КонтроллерСостояниеЭДО = Элементы.ДекорацияСостояниеЭДО;
ПараметрыЭДОПриСоздании.ГруппаСостояниеЭДО = Элементы.ГруппаСостояниеЭДО;
ОбменСКонтрагентами.ПриЧтенииНаСервере_ФормаДокумента(ПараметрыЭДОПриСоздании);
КонецПроцедуры
&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
УправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
МногооборотнаяТараСервер.ОбновитьПризнакБезВозвратнойТары(Объект.Товары, Объект.ВозвратПринятойМногооборотнойТары);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
РассчитатьИтоговыеПоказателиВозврата(ЭтаФорма);
ВзаиморасчетыСервер.ФормаПослеЗаписиНаСервере(ЭтаФорма, ТекущийОбъект.ДополнительныеСвойства);
РассчитатьИтоговыеПоказателиВозврата(ЭтаФорма);
ПроверкаКонтрагентов.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект);
ПараметрыПослеЗаписи = ОбменСКонтрагентами.ПараметрыПослеЗаписиНаСервере();
ПараметрыПослеЗаписи.Форма = ЭтотОбъект;
ПараметрыПослеЗаписи.ДокументСсылка = Объект.Ссылка;
ПараметрыПослеЗаписи.КонтроллерСостояниеЭДО = Элементы.ДекорацияСостояниеЭДО;
ПараметрыПослеЗаписи.ГруппаСостояниеЭДО = Элементы.ГруппаСостояниеЭДО;
ОбменСКонтрагентами.ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи, ПараметрыПослеЗаписи);
СобытияФорм.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
ОбеспечениеВДокументахСервер.ПроверитьЗапуститьФоновоеЗаданиеРаспределенияЗапасов();
КонецПроцедуры
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
СобытияФормКлиент.ПередЗаписью(ЭтотОбъект, Отказ, ПараметрыЗаписи);
Если НеВыполнятьПроверкуПередЗаписью Тогда
НеВыполнятьПроверкуПередЗаписью = Ложь;
Возврат;
КонецЕсли;
Если ПараметрыЗаписи.РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда
Отказ = Истина;
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ПараметрыЗаписи", ПараметрыЗаписи);
МногооборотнаяТараКлиент.ПредложитьПодобратьМногооборотнуюТару(
ЭтаФорма,
"Товары",
"Номенклатура,Характеристика,Количество,Склад",
Новый ОписаниеОповещения("ПередЗаписьюПредложитьПодобратьМногооборотнуюТаруЗавершение", ЭтотОбъект, ДополнительныеПараметры));
КонецЕсли;
ОбщегоНазначенияУТКлиент.ЗаписатьОбъектПриНеобходимости(ЭтотОбъект, ПараметрыЗаписи, Отказ);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗаписьюПредложитьПодобратьМногооборотнуюТаруЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если ЗначениеЗаполнено(Объект.ДокументПоступления) Тогда
Для каждого СтрокаТовара из Объект.Товары Цикл
Если НЕ ЗначениеЗаполнено(СтрокаТовара.ДокументПоступления) Тогда
СтрокаТовара.ДокументПоступления = Объект.ДокументПоступления;
КонецЕсли;
КонецЦикла;
КонецЕсли;
ОбщегоНазначенияУТКлиент.ЗаписатьОбъектПриНеобходимости(ЭтотОбъект, ДополнительныеПараметры.ПараметрыЗаписи,,Истина);
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ПредыдущиеРеквизитыСтроки = Новый Структура("Номенклатура");
ПроверкаКонтрагентовКлиент.ПриОткрытииДокумент(ЭтотОбъект);
ОбменСКонтрагентамиКлиент.ПриОткрытии(ЭтотОбъект);
МенеджерОборудованияКлиент.НачатьПодключениеОборудованиеПриОткрытииФормы(Неопределено, ЭтаФорма, "СканерШтрихкода");
ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
РаботаСФайламиКлиент.ПриОткрытии(ЭтотОбъект, Отказ);
ПодключитьОбработчикОжиданияПолучениеПеревозчиков();
КонецПроцедуры
&НаКлиенте
Процедура ПриЗакрытии()
МенеджерОборудованияКлиент.НачатьОтключениеОборудованиеПриЗакрытииФормы(Неопределено, ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если Источник = "ПодключаемоеОборудование" И ВводДоступен() Тогда
Если ИмяСобытия = "ScanData" И МенеджерОборудованияУТКлиент.ЕстьНеобработанноеСобытие() Тогда
ОбработатьШтрихкоды(МенеджерОборудованияУТКлиент.ПреобразоватьДанныеСоСканераВМассив(Параметр));
КонецЕсли;
КонецЕсли;
Если Источник = "ПодключаемоеОборудование"
И ИмяСобытия = "НеизвестныеШтрихкоды"
И Параметр.ФормаВладелец = УникальныйИдентификатор Тогда
КэшированныеЗначения.Штрихкоды.Очистить();
ДанныеШтрихкодов = Новый Массив;
Для Каждого ПолученныйШтрихкод Из Параметр.ПолученыНовыеШтрихкоды Цикл
ДанныеШтрихкодов.Добавить(ПолученныйШтрихкод);
КонецЦикла;
Для Каждого ПолученныйШтрихкод Из Параметр.ЗарегистрированныеШтрихкоды Цикл
ДанныеШтрихкодов.Добавить(ПолученныйШтрихкод);
КонецЦикла;
ОбработатьШтрихкоды(ДанныеШтрихкодов);
КонецЕсли;
Если ИмяСобытия = "Запись_СоглашенияСПоставщиками" Тогда
УстановитьДоступностьСоглашений();
КонецЕсли;
Если ИмяСобытия = "Запись_СчетФактураВыданный"
И ((Параметр.Свойство("ФормаВладелец") И Параметр.ФормаВладелец = УникальныйИдентификатор)
Или Параметр.Свойство("СписокОснований") И Параметр.СписокОснований.НайтиПоЗначению(Объект.Ссылка) <> Неопределено) Тогда
ОбновитьТекстДокументыНаОсновании();
КонецЕсли;
Если ИмяСобытия = "КопированиеСтрокВБуферОбмена" Тогда
УстановитьДоступностьКомандБуфераОбменаНаКлиенте();
КонецЕсли;
ПараметрыОповещения = ОбменСКонтрагентамиКлиент.ПараметрыОповещенияЭДО_ФормаДокумента();
ПараметрыОповещения.Форма = ЭтотОбъект;
ПараметрыОповещения.ДокументСсылка = Объект.Ссылка;
ПараметрыОповещения.КонтроллерСостояниеЭДО = Элементы.ДекорацияСостояниеЭДО;
ПараметрыОповещения.ГруппаСостояниеЭДО = Элементы.ГруппаСостояниеЭДО;
ОбменСКонтрагентамиКлиент.ОбработкаОповещения_ФормаДокумента(ИмяСобытия, Параметр, Источник, ПараметрыОповещения);
ПроверкаКонтрагентовКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия, Параметр, Источник);
ИсправлениеДокументовКлиент.ОбработкаОповещения(ЭтаФорма, ИмяСобытия, Параметр, Источник);
СобытияФормКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия, Параметр, Источник);
РаботаСФайламиКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия);
ОбработкаОповещенияЛокализация(ИмяСобытия, Параметр, Источник);
УчетОригиналовПервичныхДокументовКлиент.ОбработчикОповещенияФормаДокумента(ИмяСобытия,ЭтотОбъект);
Если ИмяСобытия = "ПриИзмененииДоговора"
И Источник = ЭтотОбъект Тогда
ДоговорПриИзменении(Элементы[Параметр]);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаНавигационнойСсылки(НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СобытияФормКлиент.ОбработкаНавигационнойСсылки(ЭтотОбъект, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
ПараметрыЗаписи.Вставить("КлючиДокументаОповещение", РаботаСЖурналамиДокументовКлиент.ПолучитьПараметрыКлючаПоДокументу(
Объект.Ссылка, Объект.Дата, Объект.ХозяйственнаяОперация));
Оповестить("Запись_ВозвратТоваровПоставщику", ПараметрыЗаписи, Объект.Ссылка);
ВзаиморасчетыКлиент.ФормаПослеЗаписи(ЭтаФорма);
МодификацияКонфигурацииКлиентПереопределяемый.ПослеЗаписи(ЭтаФорма, ПараметрыЗаписи);
ОбщегоНазначенияУТКлиент.ВыполнитьДействияПослеЗаписи(ЭтаФорма, Объект, ПараметрыЗаписи);
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда
МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент");
МодульПодключаемыеКомандыКлиент.ПослеЗаписи(ЭтотОбъект, Объект, ПараметрыЗаписи);
КонецЕсли;
СобытияФормКлиент.ПослеЗаписи(ЭтотОбъект, ПараметрыЗаписи);
КонецПроцедуры
&НаСервере
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
ПроверкаКонтрагентов.ПриЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект);
КонецПроцедуры
&НаКлиенте
Процедура СоглашениеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ЗакупкиКлиент.НачалоВыбораСоглашенияСПоставщиком(
Элемент,
СтандартнаяОбработка,
Объект.Партнер,
Объект.Соглашение,
Объект.Дата);
КонецПроцедуры
&НаКлиенте
Процедура ДоговорСоздание(Элемент, СтандартнаяОбработка)
ЗакупкиКлиент.ОткрытьФормуСозданияДоговора(ЭтотОбъект, Элемент, "Объект.Договор", Объект.Партнер, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ДоговорПриИзменении(Элемент)
ОснованиеИзменено = ОснованиеИзменено И ЗначениеЗаполнено(Объект.Основание);
ДоговорПриИзмененииСервер();
КонецПроцедуры
&НаСервере
Процедура ХозяйственнаяОперацияПриИзмененииСервер()
ХозяйственнаяОперацияДоговора = ПолучитьХозяйственнуюОперациюДоговора(Объект.ХозяйственнаяОперация);
ЗаполнитьДоговорПоУмолчанию();
ЗаполнитьНалогообложениеНДСЗакупки();
НалогообложениеНДСПриИзмененииСервер();
ОбновитьТекстДокументыНаОсновании();
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратТоваровКомитенту Тогда
Объект.ПредусмотренЗалогЗаТару = Ложь;
ВозвратПринятойМногооборотнойТарыПриИзмененииСервер();
КонецЕсли;
ОбновитьДоступностьЭлементовВозвратнойТары();
ВзаиморасчетыСервер.ПриИзмененииПараметровМеханизма(ЭтаФорма);
ОбменСКонтрагентамиУТ.ОбновитьКодСпециальныхОбстоятельств(Объект);
КонецПроцедуры
&НаКлиенте
Процедура ХозяйственнаяОперацияПриИзменении(Элемент)
ХозяйственнаяОперацияПриИзмененииСервер();
ПересчитатьСуммыВСтрокеРасшифровкиПлатежа();
РассчитатьИтоговыеПоказателиВозврата(ЭтаФорма);
УправлениеЭлементамиФормы();
КонецПроцедуры
&НаКлиенте
Процедура ОрганизацияПриИзменении(Элемент)
ОрганизацияПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура ПартнерПриИзменении(Элемент)
Если Не ЗначениеЗаполнено (Объект.Партнер) Тогда
ПартнерОчисткаСервер();
ДоставкаТоваровКлиентСервер.ОчиститьРеквизитыДоставки(Элементы,Объект);
Возврат;
КонецЕсли;
ПартнерПриИзмененииСервер();
ПересчитатьСуммыВСтрокеРасшифровкиПлатежа();
РассчитатьИтоговыеПоказателиВозврата(ЭтаФорма);
Если ЗначениеЗаполнено(Объект.Соглашение) Тогда
ЗакупкиКлиент.ОповеститьОбОкончанииЗаполненияУсловийЗакупокПоУмолчанию();
КонецЕсли;
ПроверкаКонтрагентовКлиент.ЗапуститьПроверкуКонтрагентовВДокументе(ЭтотОбъект, Элемент);
КонецПроцедуры
&НаКлиенте
Процедура СоглашениеПриИзменении(Элемент)
Соглашение = Объект.Соглашение;
СоглашениеПриИзмененииСервер();
Если Не ЗначениеЗаполнено(Объект.Соглашение) Тогда
Возврат;
КонецЕсли;
ПересчитатьСуммыВСтрокеРасшифровкиПлатежа();
РассчитатьИтоговыеПоказателиВозврата(ЭтаФорма);
ЗакупкиКлиент.ОповеститьОбОкончанииЗаполненияУсловийЗакупок();
КонецПроцедуры
&НаКлиенте
Процедура КонтрагентПриИзменении(Элемент)
КонтрагентПриИзмененииСервер();
ПроверкаКонтрагентовКлиент.ЗапуститьПроверкуКонтрагентовВДокументе(ЭтотОбъект, Элемент);
КонецПроцедуры
&НаКлиенте
Процедура НалогообложениеНДСПриИзменении(Элемент)
НалогообложениеНДСПриИзмененииСервер();
ПересчитатьСуммыВСтрокеРасшифровкиПлатежа();
РассчитатьИтоговыеПоказателиВозврата(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ЦенаВключаетНДСПриИзменении(Элемент)
ЦенаВключаетНДСПриИзмененииСервер(КэшированныеЗначения);
ПересчитатьСуммыВСтрокеРасшифровкиПлатежа();
РассчитатьИтоговыеПоказателиВозврата(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ВалютаПриИзменении(Элемент)
Если ЗначениеЗаполнено(Объект.Валюта) Тогда
ВалютаПриИзмененииСервер(
Объект.Валюта,
ЦенообразованиеКлиент.НеобходимПересчетВВалюту(Объект, ВалютаДокумента));
ЦенообразованиеКлиент.ОповеститьОбОкончанииПересчетаСуммВВалюту(ВалютаДокумента, Объект.Валюта);
КонецЕсли;
ВалютаДокумента = Объект.Валюта;
КонецПроцедуры
&НаКлиенте
Процедура СкладПриИзменении(Элемент)
СкладПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура ДатаПриИзменении(Элемент)
ДатаПриИзмененииСервер();
ПроверкаКонтрагентовКлиент.ЗапуститьПроверкуКонтрагентовВДокументе(ЭтотОбъект, Объект.Дата);
КонецПроцедуры
&НаКлиенте
Процедура НадписьЗаголовокПоступленийНажатие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОткрытьФорму(
"ОбщаяФорма.ПросмотрСпискаДокументов",
Новый Структура("СписокДокументов, Заголовок",
СписокПоступлений,
НСтр("ru='Приобретения от партнеров (%КоличествоДокументов%)'")
),
ЭтаФорма,,,, Неопределено, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура ВозвратПринятойМногооборотнойТарыПриИзменении(Элемент)
ВозвратПринятойМногооборотнойТарыПриИзмененииСервер();
ПересчитатьСуммыВСтрокеРасшифровкиПлатежа();
РассчитатьИтоговыеПоказателиВозврата(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура УменьшенДолгСтрокойНажатие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ПараметрыПроверки = РаботаСТабличнымиЧастямиКлиент.ПараметрыПроверкиЗаполнения();
ПараметрыПроверки.ПроверятьРаспроведенность = Ложь;
ПараметрыПроверки.ПроверяемыеРеквизиты.Вставить("Организация", НСтр("ru = 'Организация'"));
ПараметрыПроверки.ПроверяемыеРеквизиты.Вставить("Партнер", НСтр("ru = 'Поставщик'"));
ПараметрыПроверки.ПроверяемыеРеквизиты.Вставить("Контрагент", НСтр("ru = 'Контрагент'"));
ПараметрыПроверки.ПроверяемыеРеквизиты.Вставить("Валюта", НСтр("ru = 'Валюта'"));
ПараметрыПроверки.ПроверяемыеРеквизиты.Вставить("ХозяйственнаяОперация", НСтр("ru = 'Операция'"));
Оповещение = Новый ОписаниеОповещения("УменьшенДолгСтрокойНажатиеПослеПроверки", ЭтотОбъект);
РаботаСТабличнымиЧастямиКлиент.ПроверитьВозможностьЗаполнения(ЭтаФорма, Оповещение, ПараметрыПроверки);
КонецПроцедуры
&НаКлиенте
Процедура УменьшенДолгСтрокойНажатиеЗавершение(АдресПлатежейВХранилище, ДополнительныеПараметры) Экспорт
Если АдресПлатежейВХранилище <> Неопределено Тогда
Модифицированность = Истина;
ПолучитьРасшифровкуПлатежаИзХранилища(АдресПлатежейВХранилище);
РассчитатьИтоговыеПоказателиВозврата(ЭтаФорма);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПредусмотренЗалогЗаТаруПриИзменении(Элемент)
ПересчитатьСуммыВСтрокеРасшифровкиПлатежа();
РассчитатьИтоговыеПоказателиВозврата(ЭтаФорма);
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
ПроверкаКонтрагентов.ПередЗаписьюНаСервереДокумент(ЭтотОбъект, ТекущийОбъект);
ВзаиморасчетыСервер.ПередЗаписьюНаСервере(ЭтаФорма, ТекущийОбъект);
МодификацияКонфигурацииПереопределяемый.ПередЗаписьюНаСервере(ЭтаФорма, Отказ, ТекущийОбъект, ПараметрыЗаписи);
ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПередЗаписьюНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура НаправлениеДеятельностиПриИзменении(Элемент)
НаправлениеДеятельностиПриИзмененииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура АдресДоставкиПриИзменении(Элемент)
ОбработатьИзменениеАдреса(Элемент, "АдресДоставки");
КонецПроцедуры
&НаКлиенте
Процедура АдресДоставкиПеревозчикаПриИзменении(Элемент)
ОбработатьИзменениеАдреса(Элемент, "АдресДоставкиПеревозчика");
КонецПроцедуры
&НаКлиенте
Процедура АдресДоставкиОчистка(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ИменаРеквизитовАдресовДоставки = ДоставкаТоваровКлиентСервер.ИменаРеквизитовАдресовДоставки("АдресДоставки");
ДоставкаТоваровКлиент.ОчиститьПредставлениеАдреса(
Объект[ИменаРеквизитовАдресовДоставки.ИмяРеквизитаАдресаДоставки],
Объект[ИменаРеквизитовАдресовДоставки.ИмяРеквизитаАдресаДоставкиЗначенияПолей]);
КонецПроцедуры
&НаКлиенте
Процедура АдресДоставкиПеревозчикаОчистка(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ИменаРеквизитовАдресовДоставки = ДоставкаТоваровКлиентСервер.ИменаРеквизитовАдресовДоставки("АдресДоставкиПеревозчика");
ДоставкаТоваровКлиент.ОчиститьПредставлениеАдреса(
Объект[ИменаРеквизитовАдресовДоставки.ИмяРеквизитаАдресаДоставки],
Объект[ИменаРеквизитовАдресовДоставки.ИмяРеквизитаАдресаДоставкиЗначенияПолей]);
КонецПроцедуры
&НаКлиенте
Процедура АдресДоставкиНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ИменаРеквизитовАдресовДоставки = ДоставкаТоваровКлиентСервер.ИменаРеквизитовАдресовДоставки("АдресДоставки");
ДоставкаТоваровКлиент.ОткрытьФормуВыбораАдресаИОбработатьРезультат(
Элемент,
Объект,
ИменаРеквизитовАдресовДоставки,
СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура АдресДоставкиПеревозчикаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ИменаРеквизитовАдресовДоставки = ДоставкаТоваровКлиентСервер.ИменаРеквизитовАдресовДоставки("АдресДоставкиПеревозчика");
ДоставкаТоваровКлиент.ОткрытьФормуВыбораАдресаИОбработатьРезультат(
Элемент,
Объект,
ИменаРеквизитовАдресовДоставки,
СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура АдресДоставкиОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ИменаРеквизитовАдресовДоставки = ДоставкаТоваровКлиентСервер.ИменаРеквизитовАдресовДоставки("АдресДоставки");
ДоставкаТоваровКлиент.ПриИзмененииПредставленияАдреса(
Элемент,
Объект[ИменаРеквизитовАдресовДоставки.ИмяРеквизитаАдресаДоставки],
Объект[ИменаРеквизитовАдресовДоставки.ИмяРеквизитаАдресаДоставкиЗначение]);
ДоставкаТоваровКлиент.АдресДоставкиОбработкаВыбора(Элементы, Объект, Элемент.Имя, ВыбранноеЗначение);
Модифицированность = Истина;
КонецПроцедуры
&НаКлиенте
Процедура АдресДоставкиПеревозчикаОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ИменаРеквизитовАдресовДоставки = ДоставкаТоваровКлиентСервер.ИменаРеквизитовАдресовДоставки("АдресДоставкиПеревозчика");
ДоставкаТоваровКлиент.ПриИзмененииПредставленияАдреса(
Элемент,
Объект[ИменаРеквизитовАдресовДоставки.ИмяРеквизитаАдресаДоставки],
Объект[ИменаРеквизитовАдресовДоставки.ИмяРеквизитаАдресаДоставкиЗначение]);
ДоставкаТоваровКлиент.АдресДоставкиОбработкаВыбора(Элементы, Объект, Элемент.Имя, ВыбранноеЗначение);
Модифицированность = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ДекорацияЭДОНажатие(Элемент, СтандартнаяОбработка)
ОбменСКонтрагентамиКлиент.СостояниеЭДОНажатие_ФормаДокумента(ЭтотОбъект, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ТекстДокументыНаОснованииОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
ОчиститьСообщения();
ПараметрыРегистрации = ПараметрыРегистрацииСчетовФактур();
УчетНДСУПКлиент.ОбработкаНавигационнойСсылкиСчетаФактурыВыданные(ЭтаФорма, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка, ПараметрыРегистрации.Выданные);
УчетНДСУПКлиент.ОбработкаНавигационнойСсылкиСчетаФактурыПолученные(ЭтаФорма, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка, ПараметрыРегистрации.Полученные);
ТекстДокументыНаОснованииОбработкаНавигационнойСсылкиЛокализация(НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура СпособКомпенсацииПриИзменении(Элемент)
СпособКомпенсацииПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ДекорацияСостояниеОригиналаНажатие()
УчетОригиналовПервичныхДокументовКлиент.ОткрытьМенюВыбораСостояния(ЭтаФорма,Элементы.ДекорацияСостояниеОригинала);
КонецПроцедуры
&НаКлиенте
Процедура СтрокаИсправлениеОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
ИсправлениеДокументовКлиент.СтрокаИсправлениеОбработкаНавигационныйСсылки(
ЭтотОбъект, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ДекорацияЭПДНажатие(Элемент)
Если Объект.Ссылка.Пустая() Тогда
ТекстПредупреждения = НСтр("ru = 'Документ еще не записан. Открытие журнала ЭПД возможно только после записи документа.'");
ПоказатьПредупреждение(Неопределено, ТекстПредупреждения);
Возврат;
КонецЕсли;
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("ОтборДокументОснование", Объект.Ссылка);
ОткрытьФорму("Обработка.ЭлектронныеПеревозочныеДокументы.Форма.ФормаСпискаЭПД", ПараметрыОтбора);
КонецПроцедуры
&НаКлиенте
Процедура ДекорацияОформитьЭПДНажатие(Элемент, СтандартнаяОбработка)
Если Объект.Ссылка.Пустая() Тогда
ТекстПредупреждения = НСтр("ru = 'Документ еще не записан. Ввод ЭПД возможен только на основании записанных документов.'");
ПоказатьПредупреждение(Неопределено, ТекстПредупреждения);
Возврат;
КонецЕсли;
ПараметрыВызова = Новый Структура();
ПараметрыВызова.Вставить("Ссылка", Объект.Ссылка);
СписокДокументов = ОбменСГИСЭПДВызовСервераПереопределяемый.ТипыДокументовЭПД();
ОповещениеОЗакрытие = Новый ОписаниеОповещения("ОбработатьРезультатВыбораТипаДокумента",
ОбменСГИСЭПДКлиентПереопределяемый,
ПараметрыВызова);
ПоказатьВыборИзМеню(ОповещениеОЗакрытие,СписокДокументов, Элемент);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыТовары
&НаКлиенте
Процедура ТоварыПередУдалением(Элемент, Отказ)
НоменклатураКлиент.ОбновитьКешированныеЗначенияДляУчетаСерий(
Элемент,КэшированныеЗначения,ПараметрыУказанияСерий);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПослеУдаления(Элемент)
ПересчитатьСуммыВСтрокеРасшифровкиПлатежа();
РассчитатьИтоговыеПоказателиВозврата(ЭтаФорма);
Если НоменклатураКлиент.НеобходимоОбновитьСтатусыСерий(
Элемент,КэшированныеЗначения,ПараметрыУказанияСерий,Истина) Тогда
ЗаполнитьСтатусыУказанияСерийПриОкончанииРедактированияСтрокиТЧ(Неопределено, КэшированныеЗначения);
НоменклатураКлиент.ОбновитьКешированныеЗначенияДляУчетаСерий(
Элемент,КэшированныеЗначения,ПараметрыУказанияСерий);
КонецЕсли;
МногооборотнаяТараКлиент.ОбновитьСостояниеЗаполненияМногооборотнойТары(Объект.СостояниеЗаполненияМногооборотнойТары);
ТоварыПослеУдаленияСервер();
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПередНачаломИзменения(Элемент, Отказ)
ЗаполнитьЗначенияСвойств(ПредыдущиеРеквизитыСтроки, Элементы.Товары.ТекущиеДанные);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
РаботаСТабличнымиЧастямиКлиент.КэшироватьТекущуюСтроку(Элементы.Товары, ЭтотОбъект);
НоменклатураКлиент.ОбновитьКешированныеЗначенияДляУчетаСерий(Элемент, КэшированныеЗначения, ПараметрыУказанияСерий, Копирование);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
ПересчитатьСуммыВСтрокеРасшифровкиПлатежа();
РассчитатьИтоговыеПоказателиВозврата(ЭтаФорма);
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
Если НоменклатураКлиент.НеобходимоОбновитьСтатусыСерий(
Элемент,КэшированныеЗначения,ПараметрыУказанияСерий) Тогда
ТекущаяСтрокаИдентификатор = ТекущиеДанные.ПолучитьИдентификатор();
ЗаполнитьСтатусыУказанияСерийПриОкончанииРедактированияСтрокиТЧ(ТекущаяСтрокаИдентификатор, КэшированныеЗначения);
НоменклатураКлиент.ОбновитьКешированныеЗначенияДляУчетаСерий(Элемент,КэшированныеЗначения,ПараметрыУказанияСерий);
КонецЕсли;
Если Не ОтменаРедактирования Тогда
КэшСтроки = ?(НоваяСтрока, Неопределено, РаботаСТабличнымиЧастямиКлиентСервер.КэшСтроки(Элементы.Товары, ЭтотОбъект));
СкладыКлиент.ОбновитьТаблицуСкладов(ТаблицаСкладов, ТекущиеДанные, КэшСтроки, СкладГруппа, Ложь);
ВсегоСкладов = ТаблицаСкладов.Количество();
СкладыКлиентСервер.ОбновитьКартинкуГруппыСкладов(НадписьНесколькоСкладов, Элементы.КартинкаНесколькоСкладов, ВсегоСкладов);
КонецЕсли;
МногооборотнаяТараКлиент.ОбновитьСостояниеЗаполненияМногооборотнойТары(Объект.СостояниеЗаполненияМногооборотнойТары);
ДополнительныеПараметры = Новый Структура;
СобытияФормКлиент.ПриИзмененииЭлемента(ЭтотОбъект, Элементы.Товары, ДополнительныеПараметры);
Если ДополнительныеПараметры.Свойство("ТребуетсяСерверныйВызов") Тогда
ПодключитьОбработчикОжидания("ТоварыПриОкончанииРедактированияДляСерверногоВызова", 0.5, Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
НоменклатураПартнеровКлиент.ПриВыбореНоменклатурыПартнера(Объект, Поле, "ТоварыНоменклатураПартнера", НСтр("ru = 'Поставщик'"));
КонецПроцедуры
&НаКлиенте
Процедура ТоварыНоменклатураПартнераПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
НоменклатураПартнеровКлиент.УстановитьПараметрыВыбораУпаковки(Элемент.ПараметрыВыбора, ТекущаяСтрока);
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
ПараметрыЗаполнитьСтавкуНДС = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьНоменклатуруПоНоменклатуреПартнера");
СтруктураДействий.Вставить("ПроверитьХарактеристикуПоВладельцу", ТекущаяСтрока.Характеристика);
СтруктураДействий.Вставить("ПроверитьЗаполнитьСклад",
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(Объект, СкладГруппа));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействий.Вставить("ПроверитьЗаполнитьУпаковкуПоВладельцу", ТекущаяСтрока.Упаковка);
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", ПараметрыЗаполнитьСтавкуНДС);
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", Объект.ВозвратПринятойМногооборотнойТары);
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц");
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВозвратПринятойМногооборотнойТары);
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
ПакетнаяОбработкаТабличнойЧастиКлиентСерверЛокализация.ДополнитьСтруктуруДействийПриИзмененииЭлемента(ЭтотОбъект, "Номенклатура", СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
Если ПредыдущиеРеквизитыСтроки.Номенклатура <> ТекущаяСтрока.Номенклатура Тогда
СтруктураДействий = Новый Структура;
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтаФорма, СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
КонецЕсли;
ЗаполнитьЗначенияСвойств(ПредыдущиеРеквизитыСтроки, ТекущаяСтрока);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыУпаковкаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьНоменклатуруПартнераПоНоменклатуре", Объект.Партнер);
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц");
СтруктураДействий.Вставить("ПересчитатьЦенуЗаУпаковку", ТекущаяСтрока.Количество);
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
ПересчитатьСуммыВСтрокеРасшифровкиПлатежа();
КонецПроцедуры
&НаКлиенте
Процедура ТоварыНоменклатураПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
ПараметрыЗаполнитьСтавкуНДС = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьНоменклатуруПартнераПоНоменклатуре", Объект.Партнер);
СтруктураДействий.Вставить("ПроверитьХарактеристикуПоВладельцу", ТекущаяСтрока.Характеристика);
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействий.Вставить("ПроверитьЗаполнитьУпаковкуПоВладельцу", ТекущаяСтрока.Упаковка);
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц");
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", ПараметрыЗаполнитьСтавкуНДС);
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", Объект.ВозвратПринятойМногооборотнойТары);
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПроверитьСериюРассчитатьСтатус", Новый Структура("Склад, ПараметрыУказанияСерий", ТекущаяСтрока.Склад, ПараметрыУказанияСерий));
СтруктураДействий.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВозвратПринятойМногооборотнойТары);
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
СтруктураДействий.Вставить("ПроверитьЗаполнитьСклад",
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(Объект, СкладГруппа));
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтаФорма, СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиКлиентСерверЛокализация.ДополнитьСтруктуруДействийПриИзмененииЭлемента(ЭтотОбъект, "Номенклатура", СтруктураДействий);
СтруктураДействий.Вставить("НоменклатураПриИзмененииПереопределяемый", Новый Структура("ИмяФормы, ИмяТабличнойЧасти",
ЭтаФорма.ИмяФормы, "Товары"));
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
ЗаполнитьЗначенияСвойств(ПредыдущиеРеквизитыСтроки, ТекущаяСтрока);
ПересчитатьСуммыВСтрокеРасшифровкиПлатежа();
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСкладПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
ПроверитьСериюРассчитатьСтатус = Новый Структура("Склад, ПараметрыУказанияСерий",
ТекущаяСтрока.Склад, ПараметрыУказанияСерий);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПроверитьСериюРассчитатьСтатус", ПроверитьСериюРассчитатьСтатус);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыХарактеристикаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьНоменклатуруПартнераПоНоменклатуре", Объект.Партнер);
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтаФорма, СтруктураДействий);
СтруктураДействий.Вставить("ХарактеристикаПриИзмененииПереопределяемый", Новый Структура("ИмяФормы, ИмяТабличнойЧасти",
ЭтаФорма.ИмяФормы, "Товары"));
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
ПересчитатьСуммыВСтрокеРасшифровкиПлатежа();
КонецПроцедуры
&НаКлиенте
Процедура ТоварыКоличествоУпаковокПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, ЭтаФорма);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
ПересчитатьСуммыВСтрокеРасшифровкиПлатежа();
КонецПроцедуры
&НаКлиенте
Процедура ТоварыЦенаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
ПересчитатьСуммыВСтрокеРасшифровкиПлатежа();
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСтавкаНДСПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
ПересчитатьСуммыВСтрокеРасшифровкиПлатежа();
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСуммаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьЦенуСкидкуПоСуммеВЗакупках");
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
ПересчитатьСуммыВСтрокеРасшифровкиПлатежа();
КонецПроцедуры
&НаКлиенте
Процедура ТоварыДокументПоступленияПриИзменении(Элемент)
ОбновитьИнформациюПоПоступлениям();
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПриАктивизацииЯчейки(Элемент)
Если Элемент.ТекущийЭлемент = Неопределено Тогда
Возврат
ИначеЕсли Элемент.ТекущийЭлемент.Имя = "ТоварыНоменклатураПартнера" Тогда
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
НоменклатураПартнеровКлиент.ЗаполнитьСписокВыбораНоменклатурыПартнера(
Объект.Партнер, ТекущиеДанные, Элементы.ТоварыНоменклатураПартнера.СписокВыбора);
НоменклатураПартнеровКлиент.УстановитьПараметрыВыбораУпаковки(
Элементы.ТоварыНоменклатураПартнера.ПараметрыВыбора, ТекущиеДанные);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыНоменклатураПартнераНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ЭлементФормы" , Элемент);
ДополнительныеПараметры.Вставить("ТекущаяСтрока", ТекущаяСтрока);
ОповещениеОЗакрытие = Новый ОписаниеОповещения("ОбработатьРезультатВыбораНоменклатурыПартнера", ЭтотОбъект, ДополнительныеПараметры);
НоменклатураПартнеровКлиент.ОткрытьФормуВыбораНоменклатурыПартнера(ЭтотОбъект, Объект.Партнер, ТекущаяСтрока, Элемент.Заголовок, ОповещениеОЗакрытие);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаСервере
Процедура ВыполнитьКомандуНаСервере(ПараметрыВыполнения)
ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, ПараметрыВыполнения, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПродолжитьВыполнениеКомандыНаСервере(ПараметрыВыполнения, ДополнительныеПараметры) Экспорт
ВыполнитьКомандуНаСервере(ПараметрыВыполнения);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_КомандаПанелиПрисоединенныхФайлов(Команда)
РаботаСФайламиКлиент.КомандаУправленияПрисоединеннымиФайлами(ЭтотОбъект, Команда);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПроверкаПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраПроверкаПеретаскивания(ЭтотОбъект, Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраПеретаскивание(ЭтотОбъект, Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраНажатие(Элемент, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраНажатие(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура УказатьСерии(Команда)
ОткрытьПодборСерий();
КонецПроцедуры
&НаСервере
Функция ПараметрыФормыУказанияСерий(ТекущиеДанныеИдентификатор)
Возврат НоменклатураСервер.ПараметрыФормыУказанияСерий(Объект, ПараметрыУказанияСерий, ТекущиеДанныеИдентификатор, ЭтаФорма);
КонецФункции
&НаКлиенте
Процедура ОткрытьВидыЗапасов(Команда)
ПараметрыРедактированияВидовЗапасов = ПоместитьТоварыИВидыЗапасовВХранилище();
ФинансыКлиент.ОткрытьВидыЗапасов(ЭтотОбъект, ПараметрыРедактированияВидовЗапасов);
КонецПроцедуры
&НаКлиенте
Процедура ПодобратьТовары(Команда)
ОценкаПроизводительностиКлиент.НачатьЗамерВремени(Истина,
"Документ.ВозвратТоваровПоставщику.ФормаДокумента.Команда.ПодобратьТовары");
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Документ", Объект.Ссылка);
ПараметрыФормы.Вставить("Партнер", Объект.Партнер);
ПараметрыФормы.Вставить("Склад", Объект.Склад);
ПараметрыФормы.Вставить("Соглашение", Объект.Соглашение);
ПараметрыФормы.Вставить("ЦенаВключаетНДС", Объект.ЦенаВключаетНДС);
ПараметрыФормы.Вставить("Валюта", Объект.Валюта);
ПараметрыФормы.Вставить("Дата", Объект.Дата);
ПараметрыФормы.Вставить("РежимПодбораИспользоватьСкладыВТабличнойЧасти", Истина);
ПараметрыФормы.Вставить("ОтборПоТипуНоменклатуры", Новый ФиксированныйМассив(НоменклатураКлиентСервер.ОтборПоТоваруМногооборотнойТаре(Ложь)));
ПараметрыФормы.Вставить("СкрыватьРучныеСкидки", Истина);
ОткрытьФорму("Обработка.ПодборТоваровВДокументЗакупки.Форма", ПараметрыФормы, ЭтаФорма, УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ПодобратьТоварыПоПоступлениям(Команда)
ПодборТоваровПоПоступлениям();
КонецПроцедуры
&НаКлиенте
Процедура ПодборТоваровПоПоступлениям()
Отказ = Ложь;
ОчиститьСообщения();
Если НЕ ЗначениеЗаполнено(Объект.Валюта) Тогда
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
НСтр("ru = 'Поле ""Валюта"" не заполнено'"),
Объект.Ссылка, "Объект.Валюта",
,
Отказ);
КонецЕсли;
Если НЕ ЗначениеЗаполнено(Объект.НалогообложениеНДС) Тогда
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
НСтр("ru = 'Поле ""Налогообложение НДС"" не заполнено'"),
Объект.Ссылка, "Объект.НалогообложениеНДС",
,
Отказ);
КонецЕсли;
Если НЕ ЗначениеЗаполнено(Объект.Организация) Тогда
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
НСтр("ru = 'Поле ""Организация"" не заполнено'"),
Объект.Ссылка, "Объект.Организация",
,
Отказ);
КонецЕсли;
Если НЕ ЗначениеЗаполнено(Объект.Партнер) Тогда
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
НСтр("ru = 'Поле ""Клиент"" не заполнено'"),
Объект.Ссылка, "Объект.Партнер",
,
Отказ);
КонецЕсли;
Если НЕ ЗначениеЗаполнено(Объект.Контрагент) И НЕ ИспользоватьПартнеровКакКонтрагентов Тогда
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
НСтр("ru = 'Поле ""Контрагент"" не заполнено'"),
Объект.Ссылка, "Объект.Контрагент",
,
Отказ);
КонецЕсли;
Если Не Отказ Тогда
ПараметрыПодбора = Новый Структура;
ПараметрыПодбора.Вставить("ДокументВозврата", Объект.Ссылка);
ПараметрыПодбора.Вставить("Валюта", Объект.Валюта);
ПараметрыПодбора.Вставить("Дата", ?(ЗначениеЗаполнено(Объект.Дата), Объект.Дата, ОбщегоНазначенияКлиент.ДатаСеанса()));
ПараметрыПодбора.Вставить("НалогообложениеНДС", Объект.НалогообложениеНДС);
ПараметрыПодбора.Вставить("ЦенаВключаетНДС", Объект.ЦенаВключаетНДС);
ПараметрыПодбора.Вставить("Партнер", Объект.Партнер);
ПараметрыПодбора.Вставить("Соглашение", Объект.Соглашение);
ПараметрыПодбора.Вставить("Организация", Объект.Организация);
ПараметрыПодбора.Вставить("Контрагент", Объект.Контрагент);
ПараметрыПодбора.Вставить("ПоказыватьТовары", Истина);
ПараметрыПодбора.Вставить("ПоказыватьТару", Объект.ВозвратПринятойМногооборотнойТары);
ПараметрыПодбора.Вставить("НаправлениеДеятельности", Объект.НаправлениеДеятельности);
ОткрытьФорму(
"ОбщаяФорма.ПодборТоваровПоПоступлениям",
ПараметрыПодбора,
ЭтаФорма);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПоказатьНоменклатуруПоставщика(Команда)
НоменклатураПартнеровКлиент.ПоказатьНоменклатуруПартнера(Объект.Партнер, Объект.Ссылка, Элементы.Товары.ТекущиеДанные, НСтр("ru = 'Поставщик'"));
КонецПроцедуры
&НаКлиенте
Процедура ПерезаполнитьПоОтгрузке(Команда)
Если ПродажиКлиент.НеобходимоЗаполнениеТоваровПоОтгрузке(Объект.Проведен) Тогда
СостояниеОтгрузки = ПродажиВызовСервера.ПолучитьСостояниеФактическойОтгрузки(Объект.Ссылка);
Если СостояниеОтгрузки.ЕстьНесобранныеТовары Тогда
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("СостояниеОтгрузки", СостояниеОтгрузки);
ПродажиКлиент.ВопросОПерезаполненииОтгруженнымиТоварами(
Новый ОписаниеОповещения("ВопросОПерезаполненииОтгруженнымиТоварамиЗавершение", ЭтотОбъект, ДополнительныеПараметры),СостояниеОтгрузки.ЕстьОтгруженныеТовары);
Иначе
ПерезаполнитьПоОтгрузкеЗавершение(СостояниеОтгрузки);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПолучитьВес(Команда)
ТекущаяСтрока = МенеджерОборудованияУТКлиент.ТекущаяСтрока(ЭтаФорма);
Если ТекущаяСтрока = Неопределено Тогда
Возврат;
КонецЕсли;
МенеджерОборудованияКлиент.НачатьПолученияВесаСЭлектронныхВесов(
Новый ОписаниеОповещения("ПолучитьВесЗавершение", ЭтотОбъект, ТекущаяСтрока),
УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ПолучитьВесЗавершение(РезультатВыполнения, ТекущаяСтрока) Экспорт
Если РезультатВыполнения.Результат Тогда
ТекущаяСтрока.КоличествоУпаковок = РезультатВыполнения.Вес;
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, ЭтаФорма);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
ПересчитатьСуммыВСтрокеРасшифровкиПлатежа();
РассчитатьИтоговыеПоказателиВозврата(ЭтаФорма);
Иначе
МенеджерОборудованияУТКлиент.СообщитьОбОшибке(РезультатВыполнения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПоискПоШтрихкодуВыполнить(Команда)
ОчиститьСообщения();
Оповещение = Новый ОписаниеОповещения("ПоискПоШтрихкодуЗавершение", ЭтотОбъект);
ШтрихкодированиеНоменклатурыКлиент.ПоказатьВводШтрихкода(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьДанныеИзТСД(Команда)
МенеджерОборудованияКлиент.НачатьЗагрузкуДанныеИзТСД(
Новый ОписаниеОповещения("ЗагрузитьИзТСДЗавершение", ЭтотОбъект),
УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьИзТСДЗавершение(Результат, Параметры) Экспорт
Если Результат.Результат Тогда
ОбработатьШтрихкоды(Результат.ТаблицаТоваров);
Иначе
МенеджерОборудованияУТКлиент.СообщитьОбОшибке(Результат);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура РазбитьСтроку(Команда)
ТаблицаФормы = Элементы.Товары;
ДанныеТаблицы = Объект.Товары;
Оповещение = Новый ОписаниеОповещения("РазбитьСтрокуЗавершение", ЭтотОбъект);
РаботаСТабличнымиЧастямиКлиент.РазбитьСтроку(ДанныеТаблицы, ТаблицаФормы, Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ЗаписатьДокумент(Команда)
ОбщегоНазначенияУТКлиент.Записать(ЭтаФорма, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьНоменклатуруПоНоменклатуреПартнера(Команда)
Если Не ОбщегоНазначенияУТКлиент.ПроверитьНаличиеСтрокВСписке(Объект.Товары, "Товары") Тогда
Возврат;
КонецЕсли;
ОтборТипНоменклатуры = Новый Массив;
ОтборТипНоменклатуры.Добавить(ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Товар"));
ОтборТипНоменклатуры.Добавить(ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.МногооборотнаяТара"));
ЗакупкиКлиент.ОткрытьФормуЗаполненияНоменклатурыПоставщика(
Новый ОписаниеОповещения("ЗаполнитьНоменклатуруПоНоменклатуреПартнераЗавершение", ЭтотОбъект),
ПоместитьТоварыВоВременноеХранилищеСервер(),
ЭтаФорма,
ОтборТипНоменклатуры);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьНоменклатуруПоНоменклатуреПартнераЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат <> Неопределено Тогда
ЗаполнитьТоварыИзВременногоХранилищаСервер(Результат);
ПересчитатьСуммыВСтрокеРасшифровкиПлатежа();
РассчитатьИтоговыеПоказателиВозврата(ЭтаФорма);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьСерииПоFEFO(Команда)
Если ЕстьЗаполненныеСерииПоFEFO() Тогда
НоменклатураКлиент.ЗадатьВопросОПерезаполненииСерийПоFEFO(
Новый ОписаниеОповещения("ЗаполнитьСерииПоFEFOЗавершение", ЭтотОбъект));
Возврат;
КонецЕсли;
Если Не ЗаполнитьСерииПоFEFOСервер() Тогда
НоменклатураКлиент.ПредупредитьОбОтсутствииСтрокЗаполняемыхПоFEFO();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьСерииПоFEFOЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если НЕ Результат Тогда
Возврат;
КонецЕсли;
Если Не ЗаполнитьСерииПоFEFOСервер() Тогда
НоменклатураКлиент.ПредупредитьОбОтсутствииСтрокЗаполняемыхПоFEFO();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьПоступленияИЦены(Команда)
ЗаполнитьПоступленияИЦеныНаСервере();
ПересчитатьСуммыВСтрокеРасшифровкиПлатежа();
РассчитатьИтоговыеПоказателиВозврата(ЭтаФорма);
ОбновитьИнформациюПоПоступлениям();
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьСтавкуНДС(Команда)
Если Объект.Товары.Количество() = 0 Тогда
ТекстПредупреждения = НСтр("ru = 'В список ""Товары"" не введено ни одной строки.'");
ПоказатьПредупреждение(, ТекстПредупреждения);
Возврат;
КонецЕсли;
ОповещениеОЗакрытии = Новый ОписаниеОповещения("ЗаполнитьСтавкуНДСЗавершение", ЭтотОбъект);
ПараметрыФормы = Новый Структура();
ПараметрыФормы.Вставить("ТипНалогообложенияНДС", Объект.НалогообложениеНДС);
ОткрытьФорму("Справочник.СтавкиНДС.ФормаВыбора", ПараметрыФормы,,,,, ОповещениеОЗакрытии);
КонецПроцедуры
&НаКлиенте
Процедура ВставитьСтроки(Команда)
КоличествоТоваровДоВставки = Объект.Товары.Количество();
ПолучитьСтрокиИзБуфераОбмена();
ПересчитатьСуммыВСтрокеРасшифровкиПлатежа();
РассчитатьИтоговыеПоказателиВозврата(ЭтаФорма);
КоличествоВставленных = Объект.Товары.Количество()-КоличествоТоваровДоВставки;
РаботаСТабличнымиЧастямиКлиент.ОповеститьПользователяОВставкеСтрок(КоличествоВставленных);
КонецПроцедуры
&НаКлиенте
Процедура СкопироватьСтроки(Команда)
Если РаботаСТабличнымиЧастямиКлиент.ВыбранаСтрокаДляВыполненияКоманды(Элементы.Товары) Тогда
СкопироватьСтрокиНаСервере();
РаботаСТабличнымиЧастямиКлиент.ОповеститьПользователяОКопированииСтрок(Элементы.Товары.ВыделенныеСтроки.Количество());
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДополнитьМногооборотнойТарой(Команда)
МногооборотнаяТараКлиент.ПодобратьМногооборотнуюТару(
ЭтаФорма,
"Товары",
"Номенклатура,Характеристика,Количество");
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьИзВнешнегоФайла(Команда)
ПараметрыЗагрузки = РаботаСТабличнымиЧастямиКлиент.ПараметрыЗагрузкиНоменклатуры();
ПараметрыЗагрузки.Организация = Объект.Организация;
ПараметрыЗагрузки.ЗаполнятьНоменклатуруПартнера = Объект.Партнер;
ПараметрыЗагрузки.ЗагружатьЦены = Истина;
ПараметрыЗагрузки.ЦенаВключаетНДС = Объект.ЦенаВключаетНДС;
ПараметрыЗагрузки.НалогообложениеНДС = Объект.НалогообложениеНДС;
ПараметрыЗагрузки.ДатаЗаполнения = Объект.Дата;
ПараметрыЗагрузки.ЭтоВозвратнаяТара = Объект.ВозвратПринятойМногооборотнойТары;
ПараметрыЗагрузки.ПараметрыОтбора.Вставить("ТипНоменклатуры",
НоменклатураКлиентСервер.ОтборПоТоваруМногооборотнойТаре(Ложь));
Оповещение = Новый ОписаниеОповещения("ЗагрузитьИзВнешнегоФайлаЗавершение", ЭтотОбъект);
РаботаСТабличнымиЧастямиКлиент.ПоказатьФормуЗагрузкиНоменклатуры(ПараметрыЗагрузки, Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура РеквизитыПечати(Элемент)
ОткрытьРеквизитыПечатиРеализации();
КонецПроцедуры
&НаКлиенте
Процедура ПровестиДокумент(Команда)
ОбщегоНазначенияУТКлиент.Провести(ЭтаФорма, Истина);
КонецПроцедуры
&НаКлиенте
Процедура УстановитьПометкуУдаленияДокумента(Команда)
ОбщегоНазначенияУТКлиент.УстановитьПометкуУдаленияДокумента(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ПровестиИЗакрыть(Команда)
ОбщегоНазначенияУТКлиент.ПровестиИЗакрыть(ЭтаФорма, Истина);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуИнтеграции(Команда)
ИнтеграцияС1СДокументооборотБазоваяФункциональностьКлиент.ВыполнитьПодключаемуюКомандуИнтеграции(Команда, ЭтотОбъект, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)
СобытияФормКлиент.ВыполнитьПереопределяемуюКоманду(ЭтаФорма, Команда);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуЭДО(Команда)
ЭлектронноеВзаимодействиеКлиент.ВыполнитьПодключаемуюКомандуЭДО(Команда, ЭтаФорма, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбработчикОжиданияЭДО()
ОбменСКонтрагентамиКлиент.ОбработчикОжиданияЭДО(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПроверитьВыполнениеЗаданияИС()
СоответствиеТребованиямГИСМТКлиент.ПроверитьВыполнениеЗадания(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьИзВнешнегоФайлаЗавершение(АдресЗагруженныхДанных, ДополнительныеПараметры) Экспорт
Если ЗначениеЗаполнено(АдресЗагруженныхДанных) Тогда
ПолучитьЗагруженныеТоварыИзХранилища(АдресЗагруженныхДанных);
ПересчитатьСуммыВСтрокеРасшифровкиПлатежа();
РассчитатьИтоговыеПоказателиВозврата(ЭтаФорма);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервереБезКонтекста
Функция ДанныеВыбораСкладов(Склад)
Запрос = Новый Запрос(
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| Склады.Ссылка КАК Ссылка
|ИЗ
| Справочник.Склады КАК Склады
|ГДЕ
| Склады.Ссылка В ИЕРАРХИИ(&ГруппаСкладов)
| И Склады.ЭтоГруппа = ЛОЖЬ
| И Склады.ВыборГруппы <> ЗНАЧЕНИЕ(Перечисление.ВыборГруппыСкладов.Запретить)");
Запрос.УстановитьПараметр("ГруппаСкладов", Склад);
МассивСкладов = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");
Возврат МассивСкладов;
КонецФункции
&НаСервере
Процедура УстановитьПараметрыВыбораТоварыСклад()
Элементы.ТоварыСклад.ПараметрыВыбора = Новый ФиксированныйМассив(Новый Массив);
ДанныеВыбораСкладов = ДанныеВыбораСкладов(Объект.Склад);
ОбщегоНазначенияУТКлиентСервер.ДобавитьПараметрВыбора(Элементы.ТоварыСклад, "Ссылка", ДанныеВыбораСкладов);
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииСкладаВТабличнойЧастиСервер()
СкладыСервер.ПриИзмененииСкладаВТабличнойЧасти(Объект.Товары, ТаблицаСкладов, СкладГруппа, Ложь);
ВсегоСкладов = ТаблицаСкладов.Количество();
СкладыКлиентСервер.ОбновитьКартинкуГруппыСкладов(НадписьНесколькоСкладов, Элементы.КартинкаНесколькоСкладов, ВсегоСкладов);
КонецПроцедуры
&НаСервере
Процедура УстановитьУсловноеОформление()
УсловноеОформление.Элементы.Очистить();
УчетНДСУП.УстановитьУсловноеОформлениеСуммНДСПоНалогообложениюПродажи(ЭтаФорма);
ЦеныПредприятияЗаполнениеСервер.УстановитьУсловноеОформлениеЦенаВключаетНДС(ЭтаФорма);
НоменклатураСервер.УстановитьУсловноеОформлениеЕдиницИзмерения(ЭтаФорма);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыНоменклатураПартнера.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Партнер");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.НезаполненноеПолеТаблицы);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<выберите поставщика>'"));
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
НоменклатураСервер.УстановитьУсловноеОформлениеХарактеристикНоменклатуры(ЭтаФорма);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСуммаНДС.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСуммаСНДС.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ХозяйственнаяОперация");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ХозяйственныеОперации.ВозвратТоваровКомитенту;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЦена.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Цена");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ХозяйственнаяОперация");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ХозяйственныеОперации.ВозвратТоваровКомитенту;
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ТипыНоменклатуры.МногооборотнаяТара;
ГруппаОтбора2 = ГруппаОтбора1.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора2.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаОтбора2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ТипыНоменклатуры.МногооборотнаяТара;
ГруппаОтбора3 = ГруппаОтбора2.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора3.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ОтборЭлемента = ГруппаОтбора3.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ВозвратПринятойМногооборотнойТары");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
ОтборЭлемента = ГруппаОтбора3.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ПредусмотренЗалогЗаТару");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСумма.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Сумма");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ХозяйственнаяОперация");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ХозяйственныеОперации.ВозвратТоваровКомитенту;
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ТипыНоменклатуры.МногооборотнаяТара;
ГруппаОтбора2 = ГруппаОтбора1.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора2.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаОтбора2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ТипыНоменклатуры.МногооборотнаяТара;
ГруппаОтбора3 = ГруппаОтбора2.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора3.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ОтборЭлемента = ГруппаОтбора3.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ВозвратПринятойМногооборотнойТары");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
ОтборЭлемента = ГруппаОтбора3.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ПредусмотренЗалогЗаТару");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.Договор.Имя);
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Соглашение");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Договор");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.Договор.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Соглашение");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Договор");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСтавкаНДС.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ТипыНоменклатуры.МногооборотнаяТара;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ВозвратПринятойМногооборотнойТары");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
НоменклатураСервер.УстановитьУсловноеОформлениеСерийНоменклатуры(ЭтаФорма, "СерииПриПланированииОтгрузкиУказываютсяВТЧТовары");
НоменклатураСервер.УстановитьУсловноеОформлениеСтатусовУказанияСерий(ЭтаФорма, Ложь);
НоменклатураСервер.УстановитьУсловноеОформлениеНазначенияНоменклатуры(ЭтаФорма);
НаправленияДеятельностиСервер.УстановитьУсловноеОформлениеНаправленияДеятельности(ЭтаФорма);
СкладыСервер.УстановитьУсловноеОформлениеСкладаВТЧ(ЭтаФорма);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСклад.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
СписокЗначений = Новый СписокЗначений;
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.Товар);
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.МногооборотнаяТара);
ОтборЭлемента.ПравоеЗначение = СписокЗначений;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Склад");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Истина);
КонецПроцедуры
#Область ПриИзмененииРеквизитов
&НаКлиенте
Процедура ТоварыПриОкончанииРедактированияДляСерверногоВызова()
ТоварыПриОкончанииРедактированияНаСервере();
КонецПроцедуры
&НаСервере
Процедура ТоварыПриОкончанииРедактированияНаСервере()
СобытияФорм.ПриИзмененииЭлемента(ЭтотОбъект, "Товары");
КонецПроцедуры
&НаСервере
Процедура ПартнерПриИзмененииСервер()
СтараяВалюта = ВалютаДокумента;
ДокументЗакупки = РеквизитФормыВЗначение("Объект");
ДокументЗакупки.ЗаполнитьУсловияЗакупокПоУмолчанию();
ОтветственныеЛицаСервер.ЗаполнитьСписокВыбораМенеджера(Элементы.Менеджер, ДокументЗакупки);
ОтветственныеЛицаСервер.УстановитьМенеджера(
ДокументЗакупки, ПродажиСервер.ДокументОснование(ДокументЗакупки, "ДокументПоступления, Товары.ДокументПоступления"));
ЗначениеВРеквизитФормы(ДокументЗакупки, "Объект");
УстановитьДоступностьСоглашений();
Соглашение = Объект.Соглашение;
СкладГруппа = Справочники.Склады.ЭтоГруппаИСкладыИспользуютсяВТЧДокументовЗакупки(Объект.Склад);
СкладПриИзмененииСервер();
Если ЗначениеЗаполнено(Объект.Соглашение) Тогда
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратТоваровКомитенту Тогда
Объект.ВозвратПринятойМногооборотнойТары = Ложь;
Объект.ПредусмотренЗалогЗаТару = Ложь;
КонецЕсли;
ОбновитьДоступностьЭлементовВозвратнойТары();
ВалютаДокумента = Объект.Валюта;
ХозяйственнаяОперацияДоговора = ПолучитьХозяйственнуюОперациюДоговора(Объект.ХозяйственнаяОперация);
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВТЧ(Объект);
ПараметрыЗаполнитьСтавкуНДС = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", ПараметрыЗаполнитьСтавкуНДС);
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", Объект.ВозвратПринятойМногооборотнойТары);
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВозвратПринятойМногооборотнойТары);
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий, Неопределено);
ВыполнитьПересчетСуммДокументаСервер(СтараяВалюта, ВалютаДокумента);
УстановитьТекущуюСтраницуСуммПодвала();
КонецЕсли;
НоменклатураПартнеровСервер.ЗаполнитьНоменклатуруПартнераПоНоменклатуреПриИзмененииПартнера(Объект.Товары, Объект.Партнер);
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
СкладПриИзмененииСервер();
ОбновитьТекстДокументыНаОсновании();
ЗаполнитьОснованиеДляПечати();
ЗакупкиСервер.УстановитьДоступностьДоговора(Объект, Элементы.Договор.Доступность, Элементы.Договор.Видимость, Объект.Договор);
СпособМестоДоставкиПеревозчикПриИзмененииСервер("Партнер");
ОтветственныеЛицаСервер.ПриИзмененииСвязанныхРеквизитовДокумента(Объект);
ОбновитьИнформациюПоПоступлениям();
ПродажиСервер.ПартнерПриИзменении(Объект);
Если ИспользоватьНаправленияДеятельности Тогда
НаправленияДеятельностиСервер.ЗаполнитьНаправлениеПоУмолчанию(Объект.НаправлениеДеятельности, Объект.Соглашение, Объект.Договор);
КонецЕсли;
НаправленияДеятельностиСервер.ПриИзмененииНаправленияДеятельности(ЭтотОбъект);
МассивРеквизитов = Новый Массив;
МассивРеквизитов.Добавить("Валюта");
МассивРеквизитов.Добавить("Партнер");
МассивРеквизитов.Добавить("Договор");
МассивРеквизитов.Добавить("НаправлениеДеятельности");
МассивРеквизитов.Добавить("Контрагент");
МассивРеквизитов.Добавить("Организация");
МассивРеквизитов.Добавить("Соглашение");
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, МассивРеквизитов);
КонецПроцедуры
&НаСервере
Процедура ПартнерОчисткаСервер()
ОтветственныеЛицаСервер.ЗаполнитьСписокВыбораМенеджера(Элементы.Менеджер, Объект);
ОтветственныеЛицаСервер.УстановитьМенеджера(
Объект, ЗакупкиСервер.ДокументОснование(Объект, "ДокументПоступления, Товары.ДокументПоступления"));
КонецПроцедуры
&НаСервере
Процедура СоглашениеПриИзмененииСервер()
ЗакупкиСервер.УстановитьДоступностьДоговора(Объект, Элементы.Договор.Доступность, Элементы.Договор.Видимость, Объект.Договор);
ОтветственныеЛицаСервер.ЗаполнитьСписокВыбораМенеджера(Элементы.Менеджер, Объект);
Если Не ЗначениеЗаполнено(Объект.Соглашение) Тогда
ОтветственныеЛицаСервер.УстановитьМенеджера(
Объект, ЗакупкиСервер.ДокументОснование(Объект, "ДокументПоступления, Товары.ДокументПоступления"));
Возврат;
КонецЕсли;
СтараяВалюта = ВалютаДокумента;
ДокументЗакупки = РеквизитФормыВЗначение("Объект");
ДокументЗакупки.ЗаполнитьУсловияЗакупокПоСоглашению();
ОтветственныеЛицаСервер.УстановитьМенеджера(
ДокументЗакупки, ЗакупкиСервер.ДокументОснование(ДокументЗакупки, "ДокументПоступления, Товары.ДокументПоступления"));
ЗначениеВРеквизитФормы(ДокументЗакупки, "Объект");
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратТоваровКомитенту Тогда
Объект.ВозвратПринятойМногооборотнойТары = Ложь;
Объект.ПредусмотренЗалогЗаТару = Ложь;
КонецЕсли;
ОбновитьДоступностьЭлементовВозвратнойТары();
ВалютаДокумента = Объект.Валюта;
ХозяйственнаяОперацияДоговора = ПолучитьХозяйственнуюОперациюДоговора(Объект.ХозяйственнаяОперация);
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВТЧ(Объект);
ПараметрыЗаполнитьСтавкуНДС = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", ПараметрыЗаполнитьСтавкуНДС);
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", Объект.ВозвратПринятойМногооборотнойТары);
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВозвратПринятойМногооборотнойТары);
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий, Неопределено);
ВыполнитьПересчетСуммДокументаСервер(СтараяВалюта, ВалютаДокумента);
УстановитьТекущуюСтраницуСуммПодвала();
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
СкладГруппа = Справочники.Склады.ЭтоГруппаИСкладыИспользуютсяВТЧДокументовЗакупки(Объект.Склад);
СкладПриИзмененииСервер();
ОбновитьТекстДокументыНаОсновании();
ЗаполнитьОснованиеДляПечати();
ОтветственныеЛицаСервер.ПриИзмененииСвязанныхРеквизитовДокумента(Объект);
МногооборотнаяТараСервер.ОбновитьПризнакБезВозвратнойТары(Объект.Товары, Объект.ВозвратПринятойМногооборотнойТары);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
РассчитатьИтоговыеПоказателиВозврата(ЭтаФорма);
ЗаполнитьСписокВыбораОпераций();
Если ИспользоватьНаправленияДеятельности Тогда
НаправленияДеятельностиСервер.ЗаполнитьНаправлениеПоУмолчанию(Объект.НаправлениеДеятельности, Объект.Соглашение, Объект.Договор);
КонецЕсли;
НаправленияДеятельностиСервер.ПриИзмененииНаправленияДеятельности(ЭтотОбъект);
МассивРеквизитов = Новый Массив;
МассивРеквизитов.Добавить("Валюта");
МассивРеквизитов.Добавить("Партнер");
МассивРеквизитов.Добавить("НаправлениеДеятельности");
МассивРеквизитов.Добавить("Организация");
МассивРеквизитов.Добавить("Соглашение");
МассивРеквизитов.Добавить("ХозяйственнаяОперация");
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, МассивРеквизитов);
КонецПроцедуры
&НаСервере
Процедура ВалютаПриИзмененииСервер(НоваяВалюта, ПересчитатьСуммы)
ЗаполнитьДоговорПоУмолчанию();
Если ПересчитатьСуммы Тогда
СтараяВалюта = ВалютаДокумента;
ВыполнитьПересчетСуммДокументаСервер(СтараяВалюта, НоваяВалюта);
КонецЕсли;
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, "Валюта");
Объект.ОплатаВВалюте = ВзаиморасчетыСервер.ПолучитьОплатуВВалютеПоУмолчанию();
КонецПроцедуры
&НаСервере
Процедура ЦенаВключаетНДСПриИзмененииСервер(КэшированныеЗначения)
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий, КэшированныеЗначения);
КонецПроцедуры
&НаСервере
Процедура СкладПриИзмененииСервер()
Склад = Объект.Склад;
СкладГруппа = Справочники.Склады.ЭтоГруппаИСкладыИспользуютсяВТЧДокументовЗакупки(Объект.Склад);
УстановитьПараметрыВыбораТоварыСклад();
СкладыСервер.ЗаполнитьСкладыВТабличнойЧасти(Объект.Склад, СкладГруппа, Объект.Товары, Истина);
ОрдернаяСхемаПриОтгрузке = СкладыСервер.ИспользоватьОрдернуюСхемуПриОтгрузке(Склад, Объект.Дата);
ЗаполнитьУстановитьВидимостьСерийДоступностьПерезаполнитьПоОтгрузке();
Элементы.ГруппаКартинкаИНадписьНесколькоСкладов.Видимость = СкладГруппа;
ПриИзмененииСкладаВТабличнойЧастиСервер();
КонецПроцедуры
&НаСервере
Процедура НалогообложениеНДСПриИзмененииСервер()
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
СтруктураДействий = Новый Структура;
ПараметрыЗаполненияСтавкиНДС = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект, Ложь, Объект.ВозвратПринятойМногооборотнойТары);
Если ЗначениеЗаполнено(Объект.ДокументПоступления) Тогда
ПараметрыЗаполненияСтавкиНДС.Дата = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.ДокументПоступления, "Дата");
КонецЕсли;
СтруктураДействий.Вставить("СкорректироватьСтавкуНДС", ПараметрыЗаполненияСтавкиНДС);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий, КэшированныеЗначения);
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
КэшированныеЗначения.ОбработанныеСтроки,
СтруктураДействий,
Объект.Товары,
Неопределено);
УстановитьТекущуюСтраницуСуммПодвала();
УчетНДСУП.УстановитьВидимостьКомандыЗаполнитьСтавкуНДС(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ДатаПриИзмененииСервер()
ОтветственныеЛицаСервер.ПриИзмененииСвязанныхРеквизитовДокумента(Объект);
ОрдернаяСхемаПриОтгрузке = СкладыСервер.ИспользоватьОрдернуюСхемуПриОтгрузке(Склад, Объект.Дата);
ЗаполнитьНалогообложениеНДСЗакупки();
НалогообложениеНДСПриИзмененииСервер();
ЗаполнитьУстановитьВидимостьСерийДоступностьПерезаполнитьПоОтгрузке();
ОбновитьТекстДокументыНаОсновании();
КонецПроцедуры
&НаСервере
Процедура ОрганизацияПриИзмененииСервер()
ЗакупкиСервер.УстановитьДоступностьДоговора(Объект, Элементы.Договор.Доступность, Элементы.Договор.Видимость, Объект.Договор);
Если ЗначениеЗаполнено(Объект.Организация) Тогда
ЗаполнитьНалогообложениеНДСЗакупки();
НалогообложениеНДСПриИзмененииСервер();
ЗаполнитьДоговорПоУмолчанию();
Если ИспользоватьНаправленияДеятельности Тогда
НаправленияДеятельностиСервер.ЗаполнитьНаправлениеПоУмолчанию(Объект.НаправлениеДеятельности, Объект.Соглашение, Объект.Договор);
КонецЕсли;
ДенежныеСредстваСервер.ПроверитьЗаполнитьБанковскийСчетОрганизацииПоВладельцу(Объект.Организация, Объект.БанковскийСчетОрганизации, , Объект.НаправлениеДеятельности);
ОбновитьТекстДокументыНаОсновании();
КонецЕсли;
ОтветственныеЛицаСервер.ПриИзмененииСвязанныхРеквизитовДокумента(Объект);
ОтветственныеЛицаСервер.УстановитьМенеджера(
Объект, ЗакупкиСервер.ДокументОснование(Объект, "ДокументПоступления, Товары.ДокументПоступления"));
НаправленияДеятельностиСервер.ПриИзмененииНаправленияДеятельности(ЭтотОбъект);
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, "Организация");
КонецПроцедуры
&НаСервере
Процедура ДоговорПриИзмененииСервер()
ЗакупкиВызовСервера.ЗаполнитьБанковскиеСчетаПоДоговору(Объект.Договор, Объект.БанковскийСчетОрганизации, Объект.БанковскийСчетКонтрагента);
ЗаполнитьОснованиеДляПечати();
Если ЗначениеЗаполнено(Объект.Договор) Тогда
Объект.ОплатаВВалюте = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Договор,"ОплатаВВалюте");
КонецЕсли;
Если ИспользоватьНаправленияДеятельности Тогда
НаправленияДеятельностиСервер.ЗаполнитьНаправлениеПоУмолчанию(Объект.НаправлениеДеятельности, Объект.Соглашение, Объект.Договор);
КонецЕсли;
НаправленияДеятельностиСервер.ПриИзмененииНаправленияДеятельности(ЭтотОбъект);
ЗаполнитьНалогообложениеНДСЗакупки();
НалогообложениеНДСПриИзмененииСервер();
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, "Договор");
ОтветственныеЛицаСервер.ЗаполнитьСписокВыбораМенеджера(Элементы.Менеджер, Объект);
ОтветственныеЛицаСервер.УстановитьМенеджера(
Объект, ЗакупкиСервер.ДокументОснование(Объект, "ДокументПоступления, Товары.ДокументПоступления"));
КонецПроцедуры
&НаСервере
Процедура КонтрагентПриИзмененииСервер()
ЗакупкиСервер.УстановитьДоступностьДоговора(Объект, Элементы.Договор.Доступность, Элементы.Договор.Видимость, Объект.Договор);
Если ЗначениеЗаполнено(Объект.Контрагент) Тогда
ЗаполнитьДоговорПоУмолчанию();
Если Не ЗначениеЗаполнено(Объект.БанковскийСчетКонтрагента) Тогда
Объект.БанковскийСчетКонтрагента = ПолучитьБанковскийСчетКонтрагентаПоУмолчаниюСервер(Объект.Контрагент);
КонецЕсли;
КонецЕсли;
ПродажиСервер.ПартнерПриИзменении(Объект);
Если ИспользоватьНаправленияДеятельности Тогда
НаправленияДеятельностиСервер.ЗаполнитьНаправлениеПоУмолчанию(Объект.НаправлениеДеятельности, Объект.Соглашение, Объект.Договор);
КонецЕсли;
НаправленияДеятельностиСервер.ПриИзмененииНаправленияДеятельности(ЭтотОбъект);
ЗаполнитьНалогообложениеНДСЗакупки();
НалогообложениеНДСПриИзмененииСервер();
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, "Контрагент");
КонецПроцедуры
&НаСервере
Процедура НаправлениеДеятельностиПриИзмененииНаСервере()
НаправленияДеятельностиСервер.ПриИзмененииНаправленияДеятельности(ЭтотОбъект);
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, "НаправлениеДеятельности");
КонецПроцедуры
#КонецОбласти
#Область ПодборыИОбработкаПроверкиКоличества
&НаКлиенте
Процедура ПроверитьКоличествоВДокументеКлиент()
ВыгруженаТолькоНеМаркируемаяПродукция = Ложь;
ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("АдресВоВременномХранилище", ПоместитьТабличнуюЧастьТоварыВоВременноеХранилищеДляПроверкиКоличества(ВыгруженаТолькоНеМаркируемаяПродукция));
ПараметрыОткрытия.Вставить("ИмяТабличнойЧасти", "Товары");
ПараметрыОткрытия.Вставить("Ссылка", Объект.Ссылка);
ПараметрыОткрытия.Вставить("ПревышениеКоличестваТоваровРазрешено", Истина);
ПараметрыОткрытия.Вставить("ПараметрыУказанияСерий", ПараметрыУказанияСерий);
ПараметрыОткрытия.Вставить("Склад", Объект.Склад);
ПараметрыОткрытия.Вставить("ВыгруженаТолькоНеМаркируемаяПродукция", ВыгруженаТолькоНеМаркируемаяПродукция);
ОткрытьФорму("ОбщаяФорма.ПроверкаЗаполненияДокументов", ПараметрыОткрытия,,,,, Новый ОписаниеОповещения("ПроверитьКоличествоВДокументеЗавершение", ЭтотОбъект), РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаСервере
Функция ПоместитьТабличнуюЧастьТоварыВоВременноеХранилищеДляПроверкиКоличества(ВыгруженаТолькоНеМаркируемаяПродукция = Ложь)
ТабличнаяЧастьТовары = Объект.Товары.Выгрузить();
Если ТабличнаяЧастьТовары.Колонки.Найти("МаркируемаяПродукция") <> Неопределено Тогда
НомерТекущейСтроки = ТабличнаяЧастьТовары.Количество()-1;
Пока НомерТекущейСтроки >= 0 Цикл
Если ТабличнаяЧастьТовары[НомерТекущейСтроки].МаркируемаяПродукция Тогда
ТабличнаяЧастьТовары.Удалить(НомерТекущейСтроки);
ВыгруженаТолькоНеМаркируемаяПродукция = Истина;
КонецЕсли;
НомерТекущейСтроки = НомерТекущейСтроки - 1;
КонецЦикла;
КонецЕсли;
ТабличнаяЧастьТовары.Свернуть("Номенклатура, Характеристика, ХарактеристикиИспользуются, Склад, Упаковка, Серия, СтатусУказанияСерий, ТипНоменклатуры", "КоличествоУпаковок");
АдресВоВременномХранилище = ПоместитьВоВременноеХранилище(ТабличнаяЧастьТовары, УникальныйИдентификатор);
Возврат АдресВоВременномХранилище;
КонецФункции
&НаСервере
Процедура ИзменитьТабличнуюЧастьПоРезультатамПроверки(ВозвращаемыеПараметры, КэшированныеЗначения)
ТаблицаТовары = ПолучитьИзВременногоХранилища(ВозвращаемыеПараметры.Товары);
ПараметрыЗаполнитьСтавкуНДС = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект);
ОбрабатываемыеСтроки = Новый Массив;
ОбрабатываемыеСтрокиНовые = Новый Массив;
УдаляемыеСтроки = Новый Массив;
Для Каждого СтрокаИсточник Из ТаблицаТовары Цикл
Отбор = Новый Структура("Номенклатура, Характеристика, Серия, ХарактеристикиИспользуются, Склад, Упаковка");
ЗаполнитьЗначенияСвойств(Отбор, СтрокаИсточник);
НайденныеСтроки = Объект.Товары.НайтиСтроки(Отбор);
Для Каждого СтрокаТЧ Из НайденныеСтроки Цикл
Если СтрокаИсточник.КоличествоУпаковок = 0 Тогда
Прервать;
КонецЕсли;
Если СтрокаИсточник.КоличествоУпаковок >= 0 Тогда
СтрокаТЧ.КоличествоУпаковок = СтрокаТЧ.КоличествоУпаковок + СтрокаИсточник.КоличествоУпаковок;
СтрокаИсточник.КоличествоУпаковок = 0;
Иначе
КоличествоКСписанию = -СтрокаИсточник.КоличествоУпаковок;
КоличествоВСтроке = СтрокаТЧ.КоличествоУпаковок;
Если КоличествоКСписанию > КоличествоВСтроке Тогда
СтрокаИсточник.КоличествоУпаковок = КоличествоВСтроке - КоличествоКСписанию;
СтрокаТЧ.КоличествоУпаковок = 0;
Иначе
СтрокаИсточник.КоличествоУпаковок = 0;
СтрокаТЧ.КоличествоУпаковок = КоличествоВСтроке - КоличествоКСписанию;
КонецЕсли;
КонецЕсли;
Если СтрокаТЧ.КоличествоУпаковок = 0 Тогда
УдаляемыеСтроки.Добавить(СтрокаТЧ);
Иначе
ОбрабатываемыеСтроки.Добавить(СтрокаТЧ);
КонецЕсли;
КонецЦикла;
Если НайденныеСтроки.Количество() = 0 Тогда
СтрокаТЧ = Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаТЧ, СтрокаИсточник);
ОбрабатываемыеСтрокиНовые.Добавить(СтрокаТЧ);
КонецЕсли;
КонецЦикла;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействий.Вставить("ЗаполнитьНоменклатуруПартнераПоНоменклатуре", Объект.Партнер);
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", ПараметрыЗаполнитьСтавкуНДС);
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", Объект.ВозвратПринятойМногооборотнойТары);
СтруктураДействий.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВозвратПринятойМногооборотнойТары);
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, ЭтотОбъект);
ПакетнаяОбработкаТабличнойЧастиКлиентСерверЛокализация.ДополнитьСтруктуруДействийПриИзмененииЭлемента(ЭтотОбъект, "Номенклатура", СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтрокиНовые,
СтруктураДействий,
Объект.Товары,
КэшированныеЗначения);
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, ЭтотОбъект);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.Товары,
КэшированныеЗначения);
Для Каждого СтрокаТЧ Из УдаляемыеСтроки Цикл
Объект.Товары.Удалить(СтрокаТЧ);
КонецЦикла;
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект,ПараметрыУказанияСерий);
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьКоличествоВДокументе(Команда)
ПроверитьКоличествоВДокументеКлиент();
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьКоличествоВДокументеЗавершение(Результат, ДополнительныеПараметры) Экспорт
ВозвращаемыеПараметры = Результат;
Если ВозвращаемыеПараметры <> Неопределено Тогда
ИзменитьТабличнуюЧастьПоРезультатамПроверки(ВозвращаемыеПараметры, ?(КэшированныеЗначения = Неопределено, ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения(), КэшированныеЗначения));
Модифицированность = Истина;
ПересчитатьСуммыВСтрокеРасшифровкиПлатежа();
РассчитатьИтоговыеПоказателиВозврата(ЭтаФорма);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбработкаВыбораПодборНаСервере(ВыбранноеЗначение)
ТаблицаТоваров = ПолучитьИзВременногоХранилища(ВыбранноеЗначение.АдресТоваровВХранилище);
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
ПараметрыЗаполнитьСтавкуНДС = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", ПараметрыЗаполнитьСтавкуНДС);
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", Объект.ВозвратПринятойМногооборотнойТары);
СтруктураДействий.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВозвратПринятойМногооборотнойТары);
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтотОбъект, СтруктураДействий);
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, ЭтотОбъект);
ПакетнаяОбработкаТабличнойЧастиКлиентСерверЛокализация.ДополнитьСтруктуруДействийПриИзмененииЭлемента(ЭтотОбъект, "Номенклатура", СтруктураДействий);
ОбрабатываемыеСтроки = Новый Массив();
Для каждого СтрокаТовара Из ТаблицаТоваров Цикл
ТекущаяСтрока = Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(ТекущаяСтрока, СтрокаТовара,
"НоменклатураПартнера,
|Номенклатура,
|Характеристика,
|ХарактеристикиИспользуются,
|Упаковка,
|Склад,
|Цена,
|КоличествоУпаковок");
ОбрабатываемыеСтроки.Добавить(ТекущаяСтрока);
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.Товары,
КэшированныеЗначения);
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект,ПараметрыУказанияСерий);
МногооборотнаяТараСервер.ОбновитьСостояниеЗаполненияМногооборотнойТары(Объект.СостояниеЗаполненияМногооборотнойТары);
ПриИзмененииСкладаВТабличнойЧастиСервер();
КонецПроцедуры
&НаСервере
Процедура ОбработкаВыбораПодборПоПоступлениюСервер(ВыбранноеЗначение)
СтруктураВозвращаемыхЗначений = ПолучитьИзВременногоХранилища(ВыбранноеЗначение.АдресТоваровВХранилище);
ТаблицаТоваров = СтруктураВозвращаемыхЗначений.Товары;
ПараметрыЗаполнитьСтавкуНДС = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействий.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВозвратПринятойМногооборотнойТары);
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
ПакетнаяОбработкаТабличнойЧастиКлиентСерверЛокализация.ДополнитьСтруктуруДействийПриИзмененииЭлемента(ЭтотОбъект, "Номенклатура", СтруктураДействий);
ОбрабатываемыеСтроки = Новый Массив;
Для каждого СтрокаТовара Из ТаблицаТоваров Цикл
ТекущаяСтрока = Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(ТекущаяСтрока, СтрокаТовара);
ОбрабатываемыеСтроки.Добавить(ТекущаяСтрока);
Если ЗначениеЗаполнено(Объект.Склад) Тогда
Если Не СкладГруппа Тогда
ТекущаяСтрока.Склад = Объект.Склад;
ИначеЕсли Не ТекущаяСтрока.Склад.ПринадлежитЭлементу(Объект.Склад) Тогда
ТекущаяСтрока.Склад = Справочники.Склады.ПустаяСсылка();
КонецЕсли;
Иначе
ТекущаяСтрока.Склад = Справочники.Склады.ПустаяСсылка();
КонецЕсли;
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.Товары);
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект,ПараметрыУказанияСерий);
МногооборотнаяТараСервер.ОбновитьСостояниеЗаполненияМногооборотнойТары(Объект.СостояниеЗаполненияМногооборотнойТары);
ПриИзмененииСкладаВТабличнойЧастиСервер();
КонецПроцедуры
#КонецОбласти
#Область ШтрихкодыИТорговоеОборудование
&НаКлиенте
Процедура ОбработатьШтрихкоды(ДанныеШтрихкодов)
Если Не ШтрихкодированиеНоменклатурыКлиент.ШтрихкодыВалидны(ДанныеШтрихкодов) Тогда
Возврат;
КонецЕсли;
ПараметрыЗаполнитьСтавкуНДС = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект);
СтруктураДействийСДобавленнымиСтроками = Новый Структура;
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьНоменклатуруПартнераПоНоменклатуре", Объект.Партнер);
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьСтавкуНДС", ПараметрыЗаполнитьСтавкуНДС);
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", Объект.ВозвратПринятойМногооборотнойТары);
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВозвратПринятойМногооборотнойТары);
СтруктураДействийСДобавленнымиСтроками.Вставить("ПроверитьЗаполнитьСклад",
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(Объект, СкладГруппа));
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтаФорма, СтруктураДействийСДобавленнымиСтроками);
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействийСДобавленнымиСтроками, ЭтаФорма);
СтруктураДействийСИзмененнымиСтроками = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействийСИзмененнымиСтроками, ЭтаФорма);
СтруктураДействий = ШтрихкодированиеНоменклатурыКлиент.ПараметрыОбработкиШтрихкодов();
СтруктураДействий.Штрихкоды = ДанныеШтрихкодов;
СтруктураДействий.СтруктураДействийСДобавленнымиСтроками = СтруктураДействийСДобавленнымиСтроками;
СтруктураДействий.СтруктураДействийСИзмененнымиСтроками = СтруктураДействийСИзмененнымиСтроками;
СтруктураДействий.ПараметрыУказанияСерий = ПараметрыУказанияСерий;
СтруктураДействий.ТолькоТовары = Истина;
СтруктураДействий.ИзменятьКоличество = Истина;
ОбработатьШтрихкодыСервер(СтруктураДействий,КэшированныеЗначения);
ШтрихкодированиеНоменклатурыКлиент.ОбработатьНеизвестныеШтрихкоды(СтруктураДействий,КэшированныеЗначения,ЭтаФорма);
Если ШтрихкодированиеНоменклатурыКлиент.НужноОткрытьФормуУказанияСерийПослеОбработкиШтрихкодов(СтруктураДействий) Тогда
ТекущиеДанныеИдентификатор = СтруктураДействий.МассивСтрокССериями[0];
ПодключитьОбработчикОжидания("ОткрытьПодборСерийПриСканированииШтрихкодаНоменклатуры",0.1,Истина);
КонецЕсли;
ПересчитатьСуммыВСтрокеРасшифровкиПлатежа();
РассчитатьИтоговыеПоказателиВозврата(ЭтаФорма);
Если СтруктураДействий.ТекущаяСтрока <> Неопределено Тогда
Элементы.Товары.ТекущаяСтрока = СтруктураДействий.ТекущаяСтрока;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбработатьШтрихкодыСервер(СтруктураПараметровДействия,КэшированныеЗначения)
ШтрихкодированиеНоменклатурыСервер.ОбработатьШтрихкоды(ЭтаФорма,Объект,СтруктураПараметровДействия,КэшированныеЗначения);
КонецПроцедуры
#КонецОбласти
#Область Серии
&НаСервере
Процедура УстановитьВидимостьЭлементовСерий ()
Элементы.ТоварыСтатусУказанияСерий.Видимость = ПараметрыУказанияСерий.ИспользоватьСерииНоменклатуры;
Элементы.ТоварыУказатьСерии.Видимость = ПараметрыУказанияСерий.ИспользоватьСерииНоменклатуры;
Элементы.ТоварыЗаполнитьСерииПоFEFO.Видимость = ПараметрыУказанияСерий.ИспользоватьСерииНоменклатуры;
Элементы.ТоварыСерия.Видимость = ПараметрыУказанияСерий.ИспользоватьСерииНоменклатуры;
КонецПроцедуры
&НаСервере
Процедура ОбработатьУказаниеСерийСервер(ПараметрыФормыУказанияСерий)
НоменклатураСервер.ОбработатьУказаниеСерий(Объект,ПараметрыУказанияСерий,ПараметрыФормыУказанияСерий);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСтатусыУказанияСерийПриОкончанииРедактированияСтрокиТЧ(ТекущаяСтрокаИдентификатор, КэшированныеЗначения)
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерийПриОкончанииРедактированияСтрокиТЧ(Объект,
ПараметрыУказанияСерий, ТекущаяСтрокаИдентификатор, КэшированныеЗначения);
КонецПроцедуры
&НаСервере
Функция ЗаполнитьСерииПоFEFOСервер()
Если НоменклатураСервер.ЕстьСтрокиСЗаполняемымиПоFEFOСериями(Объект.Товары) Тогда
НоменклатураСервер.ЗаполнитьСерииПоFEFO(Объект,ПараметрыУказанияСерий);
Возврат Истина;
Иначе
Возврат Ложь;
КонецЕсли;
КонецФункции
&НаСервере
Функция ЕстьЗаполненныеСерииПоFEFO()
Возврат НоменклатураСервер.ЕстьСтрокиСЗаполненнымиПоFEFOСериями(Объект.Товары);
КонецФункции
&НаКлиенте
Процедура ОткрытьПодборСерийПриСканированииШтрихкодаНоменклатуры()
Если ТекущиеДанныеИдентификатор = Неопределено Тогда
Возврат;
КонецЕсли;
ТекущиеДанные = Объект.Товары.НайтиПоИдентификатору(ТекущиеДанныеИдентификатор);
ОткрытьПодборСерий(,ТекущиеДанные);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ПолучитьХозяйственнуюОперациюДоговора(ХозяйственнаяОперация)
Если ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ВозвратТоваровПоставщику") Тогда
Возврат ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ЗакупкаУПоставщика");
ИначеЕсли ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ВозвратТоваровКомитенту") Тогда
Возврат ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПриемНаКомиссию");
Иначе
Возврат ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПустаяСсылка");
КонецЕсли;
КонецФункции
&НаСервере
Процедура ЗаполнитьДоговорПоУмолчанию()
ХозяйственныеОперацииДоговора = Новый Массив;
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратТоваровПоставщику Тогда
ХозяйственныеОперацииДоговора.Добавить(Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщика);
ХозяйственныеОперацииДоговора.Добавить(Перечисления.ХозяйственныеОперации.ЗакупкаПоИмпорту);
ИначеЕсли Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратТоваровКомитенту Тогда
ХозяйственныеОперацииДоговора.Добавить(Перечисления.ХозяйственныеОперации.ПриемНаКомиссию);
КонецЕсли;
Если ИспользоватьНаправленияДеятельности Тогда
ДопПараметры = ЗакупкиСервер.ДополнительныеПараметрыОтбораДоговоров();
ДопПараметры.ВалютаВзаиморасчетов = Объект.Валюта;
ДопПараметры.НаправлениеДеятельности = Объект.НаправлениеДеятельности;
Договор = ЗакупкиСервер.ПолучитьДоговорПоУмолчанию(Объект, ХозяйственныеОперацииДоговора, ДопПараметры);
Иначе
ДопПараметры = ЗакупкиСервер.ДополнительныеПараметрыОтбораДоговоров();
ДопПараметры.ВалютаВзаиморасчетов = Объект.Валюта;
Договор = ЗакупкиСервер.ПолучитьДоговорПоУмолчанию(Объект, ХозяйственныеОперацииДоговора, ДопПараметры);
КонецЕсли;
Если Договор <> Объект.Договор Тогда
Объект.Договор = Договор;
ЗакупкиВызовСервера.ЗаполнитьБанковскиеСчетаПоДоговору(Объект.Договор, Объект.БанковскийСчетОрганизации, Объект.БанковскийСчетКонтрагента);
КонецЕсли;
ЗаполнитьОснованиеДляПечати();
КонецПроцедуры
&НаСервере
Процедура ПолучитьРасшифровкуПлатежаИзХранилища(АдресПлатежейВХранилище)
Объект.РасшифровкаПлатежа.Загрузить(ПолучитьИзВременногоХранилища(АдресПлатежейВХранилище));
ВзаиморасчетыСервер.ОбновитьРаспределеннуюСуммаРасшифровки(ЭтаФорма);
КонецПроцедуры
&НаСервере
Функция ПоместитьТоварыИВидыЗапасовВХранилище()
Возврат ЗапасыСервер.ПоместитьТоварыИВидыЗапасовВХранилище(ЭтотОбъект);
КонецФункции
&НаСервере
Процедура ПолучитьВидыЗапасовИзХранилища(ВыбранноеЗначение)
ЗапасыСервер.ОбработатьВводВидовЗапасовВручную(ВыбранноеЗначение, ЭтаФорма);
КонецПроцедуры
&НаСервере
Процедура ВыполнитьПересчетСуммДокументаСервер(СтараяВалюта, НоваяВалюта)
Если СтараяВалюта <> НоваяВалюта Тогда
ДатаДокумента = ?(ЗначениеЗаполнено(Объект.Дата), Объект.Дата,ТекущаяДатаСеанса());
ВалютаРегламентированногоУчета = ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(Объект.Организация);
СтруктурыКурсов = ВзаиморасчетыСервер.КурсыВалютДляПересчета(ЭтаФорма, СтараяВалюта, НоваяВалюта, ВалютаРегламентированногоУчета, ДатаДокумента);
СтруктураКурсовСтаройВалюты = СтруктурыКурсов.СтруктураКурсовСтаройВалюты;
СтруктураКурсовНовойВалюты = СтруктурыКурсов.СтруктураКурсовНовойВалюты;
Ценообразование.ПересчитатьСуммыТабличнойЧастиВВалюту(
Объект.Товары,
Объект.ЦенаВключаетНДС,
СтараяВалюта,
НоваяВалюта,
СтруктураКурсовСтаройВалюты,
СтруктураКурсовНовойВалюты);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
КонецЕсли;
СуммаТоваров = ?(Объект.ПредусмотренЗалогЗаТару ИЛИ Не Объект.ВозвратПринятойМногооборотнойТары,
Объект.Товары.Итог("СуммаСНДС"),
Объект.Товары.Итог("СуммаСНДСБезВозвратнойТары"));
ВзаиморасчетыСервер.ПересчитатьСуммыВВалютуРасшифровкаПлатежа(Объект, СуммаТоваров);
РассчитатьИтоговыеПоказателиВозврата(ЭтаФорма);
КонецПроцедуры
&НаСервере
Процедура УправлениеЭлементамиФормы()
ЕстьВзаиморасчеты = (Объект.ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.ВозвратТоваровКомитенту);
МассивЭлементов = Новый Массив();
МассивЭлементов.Добавить("УменьшенДолгСтрокой");
МассивЭлементов.Добавить("СуммаКомпенсации");
МассивЭлементов.Добавить("ВалютаКомпенсации");
МассивЭлементов.Добавить("СпособКомпенсации");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(
Элементы,
МассивЭлементов,
"Видимость",
ЕстьВзаиморасчеты);
КонецПроцедуры
&НаСервере
Процедура УстановитьТекущуюСтраницуСуммПодвала()
ОтображатьИтогСуммыНДС = УчетНДСУПКлиентСервер.ОтображатьНДСВИтогахДокументаПродажи(Объект.НалогообложениеНДС);
Если ОтображатьИтогСуммыНДС Тогда
Элементы.ГруппаСтраницыНДС.ТекущаяСтраница = Элементы.СтраницаСНДС;
Элементы.ГруппаСтраницыВсего.ТекущаяСтраница = Элементы.СтраницаВсегоСНДС;
Иначе
Элементы.ГруппаСтраницыНДС.ТекущаяСтраница = Элементы.СтраницаБезНДС;
Элементы.ГруппаСтраницыВсего.ТекущаяСтраница = Элементы.СтраницаВсегоБезНДС;
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ЗаполнитьПоОтгрузкеСервер(СостояниеОтгрузки, ЗаполнятьНесобраннымиТоварами=Ложь)
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
ПараметрыЗаполнитьСтавкуНДС = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект);
СтруктураДействийСИзмененнымиСтроками = Новый Структура;
СтруктураДействийСИзмененнымиСтроками.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействийСИзмененнымиСтроками.Вставить("ПересчитатьСумму");
СтруктураДействийСИзмененнымиСтроками.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействийСИзмененнымиСтроками.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
СтруктураДействийСДобавленнымиСтроками = Новый Структура;
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьНоменклатуруПартнераПоНоменклатуре", Объект.Партнер);
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьСтавкуНДС", ПараметрыЗаполнитьСтавкуНДС);
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", Объект.ВозвратПринятойМногооборотнойТары);
СтруктураДействийСДобавленнымиСтроками.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействийСДобавленнымиСтроками.Вставить("ПересчитатьСумму");
СтруктураДействийСДобавленнымиСтроками.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВозвратПринятойМногооборотнойТары);
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
СтруктураПараметров = ПродажиСервер.СтруктураДокументаДляЗаполненияПоФактическойОтгрузке();
ЗаполнитьЗначенияСвойств(СтруктураПараметров, Объект);
ЗаполнитьЗначенияСвойств(СтруктураПараметров, СостояниеОтгрузки);
СтруктураПараметров.СтруктураДействийСИзмененнымиСтроками = СтруктураДействийСИзмененнымиСтроками;
СтруктураПараметров.СтруктураДействийСДобавленнымиСтроками = СтруктураДействийСДобавленнымиСтроками;
СтруктураПараметров.ЗаполнятьНесобраннымиТоварами = ЗаполнятьНесобраннымиТоварами;
СтруктураПараметров.ДополнятьСтроки = Истина;
СтруктураПараметров.ПараметрыУказанияСерий = НоменклатураСервер.ПараметрыУказанияСерий(Объект, Документы.ВозвратТоваровПоставщику);
ЕстьИзменения = ПродажиСервер.ЗаполнитьПоФактическойОтгрузке(Объект, СтруктураПараметров);
Если ЕстьИзменения Тогда
ВозвратТоваровПоставщикуЛокализация.ЗаполнитьКешШтрихкодовУпаковок(ЭтотОбъект);
КонецЕсли;
СобытияФорм.ПриИзмененииЭлемента(ЭтотОбъект, "Товары");
Возврат ЕстьИзменения;
КонецФункции
&НаСервере
Функция ПоместитьТоварыВоВременноеХранилищеСервер()
Возврат ЗакупкиСервер.ПоместитьТоварыВоВременноеХранилище(Объект.Товары);
КонецФункции
&НаСервере
Процедура ЗаполнитьТоварыИзВременногоХранилищаСервер(АдресВоВременномХранилище)
ТаблицаТоваров = ПолучитьИзВременногоХранилища(АдресВоВременномХранилище);
ПараметрыЗаполнитьСтавкуНДС = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект);
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
СтруктураДействий = Новый Структура;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", ПараметрыЗаполнитьСтавкуНДС);
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", Объект.ВозвратПринятойМногооборотнойТары);
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВозвратПринятойМногооборотнойТары);
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
ОбрабатываемыеСтроки = Новый Массив();
Для каждого ТекСтрока Из ТаблицаТоваров Цикл
МассивСтрокКоллекции = Объект.Товары.НайтиСтроки(Новый Структура("НомерСтроки", ТекСтрока.НомерСтроки));
Если МассивСтрокКоллекции.Количество() <> 1 Тогда
Продолжить;
Иначе
СтрокаКоллекции = МассивСтрокКоллекции[0];
КонецЕсли;
ЗаполнитьЗначенияСвойств(СтрокаКоллекции, ТекСтрока, "Номенклатура, Характеристика, Упаковка");
ОбрабатываемыеСтроки.Добавить(СтрокаКоллекции);
СтруктураДействий.Вставить("ПроверитьЗаполнитьСклад",
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(Объект, СкладГруппа));
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.Товары,
КэшированныеЗначения);
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
ПриИзмененииСкладаВТабличнойЧастиСервер();
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииСозданииНаСервере()
ИспользоватьПартнеровКакКонтрагентов = ПолучитьФункциональнуюОпцию("ИспользоватьПартнеровКакКонтрагентов");
ИспользоватьНаправленияДеятельности = ПолучитьФункциональнуюОпцию("ИспользоватьУчетЗатратПоНаправлениямДеятельности");
ИспользоватьЗаданияНаПеревозкуДляУчетаДоставкиПеревозчиками = ПолучитьФункциональнуюОпцию("ИспользоватьЗаданияНаПеревозкуДляУчетаДоставкиПеревозчиками");
УстановитьДоступностьСоглашений();
УправлениеСвязямиПараметровВыбораРеквизитовФормы();
ЗаполнитьСписокВыбораОпераций(Ложь);
ОтветственныеЛицаСервер.ЗаполнитьСписокВыбораМенеджера(Элементы.Менеджер, Объект);
ХозяйственнаяОперацияДоговора = ПолучитьХозяйственнуюОперациюДоговора(Объект.ХозяйственнаяОперация);
СкладГруппа = Справочники.Склады.ЭтоГруппаИСкладыИспользуютсяВТЧДокументовЗакупки(Объект.Склад);
Склад = Объект.Склад;
УстановитьПараметрыВыбораТоварыСклад();
Соглашение = Объект.Соглашение;
ВалютаДокумента = Объект.Валюта;
УправлениеЭлементамиФормы();
УстановитьТекущуюСтраницуСуммПодвала();
ПараметрыУказанияСерий = Новый ФиксированнаяСтруктура(НоменклатураСервер.ПараметрыУказанияСерий(Объект, Документы.ВозвратТоваровПоставщику));
УстановитьВидимостьЭлементовСерий();
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
МногооборотнаяТараСервер.ОбновитьПризнакБезВозвратнойТары(Объект.Товары, Объект.ВозвратПринятойМногооборотнойТары);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
СкладПриИзмененииСервер();
ЗакупкиСервер.УстановитьДоступностьДоговора(Объект, Элементы.Договор.Доступность, Элементы.Договор.Видимость);
Элементы.ГруппаКартинкаИНадписьНесколькоСкладов.Видимость = СкладГруппа;
ОбновитьТекстДокументыНаОсновании();
ТаблицаОснованийДляПечати.Загрузить(Документы.ВозвратТоваровПоставщику.ТаблицаОснованийДляПечати(Объект));
Если ПравоДоступа("Изменение", Метаданные.Документы.ВозвратТоваровПоставщику) И ЗначениеЗаполнено(Объект.Основание) Тогда
Если ЗначениеЗаполнено(Объект.Основание) Тогда
СтруктураОснования = Документы.ВозвратТоваровПоставщику.СтруктураОснованияДляПечати(Объект);
ОснованиеИзменено = (СокрЛП(Объект.Основание) <> СтруктураОснования.Основание)
ИЛИ (СокрЛП(Объект.ОснованиеНомер) <> СтруктураОснования.ОснованиеНомер)
ИЛИ (Объект.ОснованиеДата <> СтруктураОснования.ОснованиеДата);
КонецЕсли;
Иначе
ОснованиеИзменено = Ложь;
КонецЕсли;
ОбновитьИнформациюПоПоступлениям();
РассчитатьИтоговыеПоказателиВозврата(ЭтаФорма);
ДанныеПоФоновомуЗаданию = ДоставкаТоваров.ПриЧтенииСозданииРаспоряженийНаСервере(Элементы, Объект,,,,Истина);
ТекущийСпособДоставки = Объект.СпособДоставки;
ОбновитьДоступностьЭлементовВозвратнойТары();
НаправленияДеятельностиСервер.ПриЧтенииСозданииНаСервере(ЭтотОбъект);
РаботаСТабличнымиЧастями.ИнициализироватьКэшСтрок(Элементы.Товары);
ПараметрыЗаполнения = Документы.ВозвратТоваровПоставщику.ПараметрыЗаполненияНалогообложенияНДСЗакупки(Объект);
УчетНДСУП.ЗаполнитьСписокВыбораНалогообложенияНДСЗакупки(Элементы.НалогообложениеНДС, Объект.НалогообложениеНДС, ПараметрыЗаполнения, УчетНДСКэшированныеЗначенияПараметров);
ПриИзмененииСкладаВТабличнойЧастиСервер();
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПолучитьБанковскийСчетКонтрагентаПоУмолчаниюСервер(Контрагент)
Возврат ЗначениеНастроекПовтИсп.ПолучитьБанковскийСчетКонтрагентаПоУмолчанию(Контрагент);
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, Форма)
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Форма.Объект);
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц");
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
КонецПроцедуры
&НаСервере
Процедура ОбновитьИнформациюПоПоступлениям()
ЗакупкиСервер.ОбновитьИнформациюПоПоступлениямВФорме(
СписокПоступлений,
Объект.ДокументПоступления,
НадписьЗаголовокПоступления,
Элементы,
Элементы.ТоварыДокументПоступления,
Объект.Товары,
"ДокументПоступления");
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьПоступленияИЦеныНаСервере()
ЗакупкиСервер.ЗаполнитьПоступленияИЦены(Объект, "Товары");
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
КонецПроцедуры
&НаСервере
Процедура УстановитьДоступностьСоглашений()
Если ЗначениеЗаполнено(Объект.Партнер) Тогда
КоличествоСоглашенийСПоставшиком = ЗакупкиВызовСервера.ПолучитьКоличествоСоглашенийСПоставщиком(Объект.Партнер);
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "Соглашение", "Видимость", КоличествоСоглашенийСПоставшиком > 0);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УправлениеСвязямиПараметровВыбораРеквизитовФормы()
Если ЗначениеЗаполнено(Объект.ДокументПоступления) Тогда
РеквизитыПоступления = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(
Объект.ДокументПоступления, "ХозяйственнаяОперация, Партнер");
Если РеквизитыПоступления.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ЗакупкаЧерезПодотчетноеЛицо Тогда
НовыеСвязи = Новый Массив;
Если ЗначениеЗаполнено(РеквизитыПоступления.Партнер) Тогда
Режим = РежимИзмененияСвязанногоЗначения.Очищать;
Иначе
Режим = РежимИзмененияСвязанногоЗначения.НеИзменять;
КонецЕсли;
НовыеСвязи.Добавить(Новый СвязьПараметраВыбора("Отбор.Договор", "Объект.Договор", Режим));
НовыеСвязи.Добавить(Новый СвязьПараметраВыбора("Отбор.Партнер", "Объект.Партнер", Режим));
НовыеСвязи.Добавить(Новый СвязьПараметраВыбора("Отбор.Контрагент", "Объект.Контрагент", Режим));
НовыеСвязи.Добавить(Новый СвязьПараметраВыбора("Отбор.Соглашение", "Объект.Соглашение", Режим));
НовыеСвязи.Добавить(Новый СвязьПараметраВыбора("Отбор.Организация", "Объект.Организация", РежимИзмененияСвязанногоЗначения.Очищать));
Элементы.ТоварыДокументПоступления.СвязиПараметровВыбора = Новый ФиксированныйМассив(НовыеСвязи);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КонтактноеЛицоПриИзменении(Элемент)
Если Объект.КонтактноеЛицо.Пустая() Тогда
Возврат;
ИначеЕсли Не Объект.Партнер.Пустая() Тогда
Возврат;
КонецЕсли;
ПартнерИзменился = Ложь;
КонтактноеЛицоПриИзмененииСервер(ПартнерИзменился);
Если Не ПартнерИзменился Тогда
Возврат;
КонецЕсли;
Если Не ЗначениеЗаполнено (Объект.Партнер) Тогда
ДоставкаТоваровКлиентСервер.ОчиститьРеквизитыДоставки(Элементы,Объект);
КонецЕсли;
ПересчитатьСуммыВСтрокеРасшифровкиПлатежа();
РассчитатьИтоговыеПоказателиВозврата(ЭтаФорма);
Если ЗначениеЗаполнено(Объект.Соглашение) Тогда
ЗакупкиКлиент.ОповеститьОбОкончанииЗаполненияУсловийЗакупокПоУмолчанию();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура КонтактноеЛицоПриИзмененииСервер(ПартнерИзменился)
ВладелецКонтактногоЛица = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.КонтактноеЛицо, "Владелец");
Если ВладелецКонтактногоЛица <> Объект.Партнер Тогда
Объект.Партнер = ВладелецКонтактногоЛица;
ПартнерПриИзмененииСервер();
ПартнерИзменился = Истина;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьМногооборотнуюТаруИзХранилищаСервер(АдресТарыВХранилище)
ПараметрыЗаполнитьСтавкуНДС = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект);
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействийИзмененныеСтроки = Новый Структура;
СтруктураДействийИзмененныеСтроки.Вставить("ПересчитатьКоличествоУпаковок");
СтруктураДействийИзмененныеСтроки.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействийИзмененныеСтроки.Вставить("ПересчитатьСумму");
СтруктураДействийИзмененныеСтроки.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействийИзмененныеСтроки.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВозвратПринятойМногооборотнойТары);
СтруктураДействийИзмененныеСтроки.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
СтруктураДействийДобавленныеСтроки = ОбщегоНазначенияКлиентСервер.СкопироватьСтруктуру(СтруктураДействийИзмененныеСтроки);
СтруктураДействийДобавленныеСтроки.Вставить("ПроверитьЗаполнитьСклад",
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(Объект, СкладГруппа));
СтруктураДействийДобавленныеСтроки.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействийДобавленныеСтроки.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействийДобавленныеСтроки.Вставить("ЗаполнитьСтавкуНДС", ПараметрыЗаполнитьСтавкуНДС);
СтруктураДействийДобавленныеСтроки.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", Объект.ВозвратПринятойМногооборотнойТары);
СтруктураДействийДобавленныеСтроки.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВозвратПринятойМногооборотнойТары);
СтруктураДействийДобавленныеСтроки.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
МногооборотнаяТараСервер.ЗаполнитьМногооборотнуюТаруИзХранилища(
Объект,
АдресТарыВХранилище,
"Товары",
"Номенклатура,Характеристика",
СтруктураДействийИзмененныеСтроки,
СтруктураДействийДобавленныеСтроки);
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
ОбновитьИнформациюПоПоступлениям();
КонецПроцедуры
&НаСервере
Процедура ВозвратПринятойМногооборотнойТарыПриИзмененииСервер()
Если Не Объект.ВозвратПринятойМногооборотнойТары Тогда
Объект.ПредусмотренЗалогЗаТару = Ложь;
КонецЕсли;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", Объект.ВозвратПринятойМногооборотнойТары);
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВТЧ(Объект);
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВозвратПринятойМногооборотнойТары);
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий, Неопределено);
ОбновитьДоступностьЭлементовВозвратнойТары();
КонецПроцедуры
&НаСервере
Процедура ОбновитьДоступностьЭлементовВозвратнойТары()
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ПредусмотренЗалогЗаТару",
"Видимость",
Объект.ВозвратПринятойМногооборотнойТары
И Объект.ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.ВозвратТоваровКомитенту);
КонецПроцедуры
&НаСервере
Процедура ПолучитьЗагруженныеТоварыИзХранилища(АдресТоваровВХранилище)
ТоварыИзХранилища = ПолучитьИзВременногоХранилища(АдресТоваровВХранилище);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПроверитьЗаполнитьСклад",
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(Объект, СкладГруппа));
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", Объект.ВозвратПринятойМногооборотнойТары);
СтруктураДействий.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВозвратПринятойМногооборотнойТары);
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтаФорма, СтруктураДействий);
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, ЭтаФорма);
ПакетнаяОбработкаТабличнойЧастиКлиентСерверЛокализация.ДополнитьСтруктуруДействийПриИзмененииЭлемента(ЭтотОбъект, "Номенклатура", СтруктураДействий);
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
ОбрабатываемыеСтроки = Новый Массив();
Для Каждого СтрокаТоваров Из ТоварыИзХранилища Цикл
СтрокаТЧТовары = Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаТЧТовары, СтрокаТоваров);
ОбрабатываемыеСтроки.Добавить(СтрокаТЧТовары);
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.Товары,
КэшированныеЗначения);
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект,ПараметрыУказанияСерий);
МногооборотнаяТараСервер.ОбновитьСостояниеЗаполненияМногооборотнойТары(Объект.СостояниеЗаполненияМногооборотнойТары);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьУстановитьВидимостьСерийДоступностьПерезаполнитьПоОтгрузке()
Элементы.ТоварыПерезаполнитьПоОтгрузке.Доступность = ОрдернаяСхемаПриОтгрузке;
ПараметрыУказанияСерий = Новый ФиксированнаяСтруктура(НоменклатураСервер.ПараметрыУказанияСерий(Объект, Документы.ВозвратТоваровПоставщику));
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект,ПараметрыУказанияСерий);
УстановитьВидимостьЭлементовСерий();
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСерияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОткрытьПодборСерий(Элемент.ТекстРедактирования);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСерияПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
ВыбранноеЗначение = НоменклатураКлиентСервер.ВыбраннаяСерия();
ВыбранноеЗначение.Значение = ТекущаяСтрока.Серия;
ВыбранноеЗначение.ИдентификаторТекущейСтроки = ТекущаяСтрока.ПолучитьИдентификатор();
НоменклатураКлиент.ОбработатьУказаниеСерии(ЭтаФорма, ПараметрыУказанияСерий, ВыбранноеЗначение);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьПодборСерий(Текст = "", ТекущиеДанные = Неопределено)
Если НоменклатураКлиент.ДляУказанияСерийНуженСерверныйВызов(ЭтаФорма,ПараметрыУказанияСерий,Текст, ТекущиеДанные)Тогда
Если Не Элементы.ТоварыУказатьСерии.Доступность Тогда
Возврат;
КонецЕсли;
Если ТекущиеДанные = Неопределено Тогда
ТекущиеДанныеИдентификатор = Элементы.Товары.ТекущиеДанные.ПолучитьИдентификатор();
Иначе
ТекущиеДанныеИдентификатор = ТекущиеДанные.ПолучитьИдентификатор();
КонецЕсли;
ПараметрыФормыУказанияСерий = ПараметрыФормыУказанияСерий(ТекущиеДанныеИдентификатор);
ЗначениеВозврата = Неопределено;
ОткрытьФорму(ПараметрыФормыУказанияСерий.ИмяФормы,ПараметрыФормыУказанияСерий,ЭтаФорма,,,, Новый ОписаниеОповещения("ОткрытьПодборСерийЗавершение", ЭтотОбъект, Новый Структура("ПараметрыФормыУказанияСерий", ПараметрыФормыУказанияСерий)), РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьПодборСерийЗавершение(Результат, ДополнительныеПараметры) Экспорт
ПараметрыФормыУказанияСерий = ДополнительныеПараметры.ПараметрыФормыУказанияСерий;
ЗначениеВозврата = Результат;
Если ЗначениеВозврата <> Неопределено Тогда
ОбработатьУказаниеСерийСервер(ПараметрыФормыУказанияСерий);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область РаботаСБуферомОбмена
&НаСервере
Процедура СкопироватьСтрокиНаСервере()
РаботаСТабличнымиЧастями.СкопироватьСтрокиВБуферОбмена(Объект.Товары, Элементы.Товары.ВыделенныеСтроки);
КонецПроцедуры
&НаСервере
Процедура ПолучитьСтрокиИзБуфераОбмена()
ПараметрыОтбора = Новый Соответствие;
ПараметрыОтбора.Вставить("Номенклатура.ТипНоменклатуры", НоменклатураКлиентСервер.ОтборПоТоваруМногооборотнойТаре(Ложь));
Колонки = "Номенклатура,Характеристика,Упаковка,КоличествоУпаковок,Цена,ДокументПоступления,Склад";
ТаблицаТоваров = РаботаСТабличнымиЧастями.СтрокиИзБуфераОбмена(ПараметрыОтбора, Колонки);
Если Не ЗначениеЗаполнено(ТаблицаТоваров) Тогда
Возврат;
КонецЕсли;
ПараметрыЗаполнитьСтавкуНДС = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", ПараметрыЗаполнитьСтавкуНДС);
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", Объект.ВозвратПринятойМногооборотнойТары);
СтруктураДействий.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВозвратПринятойМногооборотнойТары);
СтруктураДействий.Вставить("ПроверитьЗаполнитьСклад",
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(Объект, СкладГруппа));
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, ЭтаФорма);
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтаФорма, СтруктураДействий);
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
ОбрабатываемыеСтроки = Новый Массив();
ПакетнаяОбработкаТабличнойЧастиКлиентСерверЛокализация.ДополнитьСтруктуруДействийПриИзмененииЭлемента(ЭтотОбъект, "Номенклатура", СтруктураДействий);
Для каждого СтрокаТовара Из ТаблицаТоваров Цикл
ТекущаяСтрока = Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(ТекущаяСтрока, СтрокаТовара);
ОбрабатываемыеСтроки.Добавить(ТекущаяСтрока);
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.Товары,
КэшированныеЗначения);
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект,ПараметрыУказанияСерий);
МногооборотнаяТараСервер.ОбновитьСостояниеЗаполненияМногооборотнойТары(Объект.СостояниеЗаполненияМногооборотнойТары);
ПриИзмененииСкладаВТабличнойЧастиСервер();
КонецПроцедуры
&НаСервере
Процедура УстановитьДоступностьКомандБуфераОбмена()
МассивЭлементов = Новый Массив();
МассивЭлементов.Добавить("ТоварыВставитьСтроки");
МассивЭлементов.Добавить("ТоварыКонтекстноеМенюВставитьСтроки");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, МассивЭлементов, "Доступность",
РаботаСТабличнымиЧастями.ЕстьСтрокиВБуфереОбмена());
КонецПроцедуры
&НаКлиенте
Процедура УстановитьДоступностьКомандБуфераОбменаНаКлиенте()
МассивЭлементов = Новый Массив();
МассивЭлементов.Добавить("ТоварыВставитьСтроки");
МассивЭлементов.Добавить("ТоварыКонтекстноеМенюВставитьСтроки");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, МассивЭлементов, "Доступность", Истина);
КонецПроцедуры
#КонецОбласти
#Область РаботаСКонтрагентами
&НаКлиенте
Процедура Подключаемый_ПоказатьПредложениеИспользоватьПроверкуКонтрагентов()
ПроверкаКонтрагентовКлиент.ПредложитьВключитьПроверкуКонтрагентов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбработатьРезультатПроверкиКонтрагентов()
ПроверкаКонтрагентовКлиент.ОбработатьРезультатПроверкиКонтрагентовВДокументе(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ОтобразитьРезультатПроверкиКонтрагента() Экспорт
ПроверкаКонтрагентов.ОтобразитьРезультатПроверкиКонтрагентаВДокументе(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ПроверитьКонтрагентовФоновоеЗадание(ПараметрыФоновогоЗадания) Экспорт
ПроверкаКонтрагентов.ПроверитьКонтрагентовВДокументеФоновоеЗадание(ЭтотОбъект, ПараметрыФоновогоЗадания);
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьКонтрагентов(Команда)
ПроверкаКонтрагентовКлиент.ПроверитьКонтрагентовВДокументеПоКнопке(ЭтотОбъект);
КонецПроцедуры
#КонецОбласти
#Область Прочее
&НаСервере
Процедура ТоварыПослеУдаленияСервер()
ОбновитьИнформациюПоПоступлениям();
СобытияФорм.ПриИзмененииЭлемента(ЭтотОбъект, "Товары");
ПриИзмененииСкладаВТабличнойЧастиСервер();
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ЗакрытьФорму()
Если Открыта() Тогда
Закрыть();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСлужебныеРеквизитыПоНоменклатуре()
ПараметрыЗаполненияРеквизитов = Новый Структура;
ПараметрыЗаполненияРеквизитов.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются",
Новый Структура("Номенклатура", "ХарактеристикиИспользуются"));
ПараметрыЗаполненияРеквизитов.Вставить("ЗаполнитьПризнакТипНоменклатуры",
Новый Структура("Номенклатура", "ТипНоменклатуры"));
ПараметрыЗаполненияРеквизитов.Вставить("ЗаполнитьПризнакАртикул",
Новый Структура("Номенклатура", "Артикул"));
НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(Объект.Товары,ПараметрыЗаполненияРеквизитов);
КонецПроцедуры
&НаКлиенте
Процедура ПересчитатьСуммыВСтрокеРасшифровкиПлатежа()
СуммаТоваров = ?(Объект.ПредусмотренЗалогЗаТару ИЛИ Не Объект.ВозвратПринятойМногооборотнойТары,
Объект.Товары.Итог("СуммаСНДС"),
Объект.Товары.Итог("СуммаСНДСБезВозвратнойТары"));
ФинансыКлиентСервер.ПересчитатьСуммыВСтрокеРасшифровкиПлатежа(Объект, СуммаТоваров);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ЗависимыеРеквизиты()
Возврат Новый Структура("БезВозвратнойТары", "СуммаСНДС");
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Процедура РассчитатьИтоговыеПоказателиВозврата(Форма)
Форма.СуммаВсего = ?(Форма.Объект.ПредусмотренЗалогЗаТару ИЛИ Не Форма.Объект.ВозвратПринятойМногооборотнойТары,
Форма.Объект.Товары.Итог("СуммаСНДС"),
Форма.Объект.Товары.Итог("СуммаСНДСБезВозвратнойТары"));
Форма.СуммаЗалогаЗаТару = Форма.Объект.Товары.Итог("СуммаСНДС") - Форма.Объект.Товары.Итог("СуммаСНДСБезВозвратнойТары");
Форма.СуммаКомпенсации = Форма.СуммаВсего - Форма.РаспределеннаяСуммаРасшифровки;
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(
Форма.Элементы,
"СпособКомпенсации",
"Доступность",
Форма.СуммаКомпенсации <> 0);
Форма.УменьшенДолгСтрокой = НСтр("ru='Уменьшен долг перед поставщиком:'") + " " + Формат(Форма.РаспределеннаяСуммаРасшифровки, "ЧДЦ=2; ЧН=0,00")
+ " " + Форма.Объект.Валюта;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьРеквизитыПечатиРеализации()
Попытка
ЗаблокироватьДанныеФормыДляРедактирования();
Исключение
ПоказатьПредупреждение(Неопределено, КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
Возврат;
КонецПопытки;
СтруктураПараметров = Новый Структура();
СтруктураПараметров.Вставить("АдресДоставки", Объект.АдресДоставки);
СтруктураПараметров.Вставить("АдресДоставкиЗначение", Объект.АдресДоставкиЗначение);
СтруктураПараметров.Вставить("АдресДоставкиЗначенияПолей", Объект.АдресДоставкиЗначенияПолей);
СтруктураПараметров.Вставить("БанковскийСчетГрузоотправителя", Объект.БанковскийСчетГрузоотправителя);
СтруктураПараметров.Вставить("БанковскийСчетГрузополучателя", Объект.БанковскийСчетГрузополучателя);
СтруктураПараметров.Вставить("БанковскийСчетКонтрагента", Объект.БанковскийСчетКонтрагента);
СтруктураПараметров.Вставить("Грузоотправитель", Объект.Грузоотправитель);
СтруктураПараметров.Вставить("Грузополучатель", Объект.Грузополучатель);
СтруктураПараметров.Вставить("ДоверенностьВыдана", Объект.ДоверенностьВыдана);
СтруктураПараметров.Вставить("ДоверенностьДата", Объект.ДоверенностьДата);
СтруктураПараметров.Вставить("ДоверенностьЛицо", Объект.ДоверенностьЛицо);
СтруктураПараметров.Вставить("ДоверенностьНомер", Объект.ДоверенностьНомер);
СтруктураПараметров.Вставить("Договор", Объект.Договор);
СтруктураПараметров.Вставить("Основание", Объект.Основание);
СтруктураПараметров.Вставить("ОснованиеДата", Объект.ОснованиеДата);
СтруктураПараметров.Вставить("ОснованиеНомер", Объект.ОснованиеНомер);
СтруктураПараметров.Вставить("Отпустил", Объект.Отпустил);
СтруктураПараметров.Вставить("ОтпустилДолжность", Объект.ОтпустилДолжность);
СтруктураПараметров.Вставить("Партнер", Объект.Партнер);
СтруктураПараметров.Вставить("ХозяйственнаяОперация", Объект.ХозяйственнаяОперация);
СтруктураПараметров.Вставить("Контрагент", Объект.Контрагент);
СтруктураПараметров.Вставить("ТолькоПросмотр", ТолькоПросмотр);
СтруктураПараметров.Вставить("ТипОбъекта", "ВозвратТоваровПоставщику");
СтруктураПараметров.Вставить("БанковскийСчетОрганизации", Объект.БанковскийСчетОрганизации);
СтруктураПараметров.Вставить("Организация", Объект.Организация);
СтруктураПараметров.Вставить("Дата", Объект.Дата);
СтруктураПараметров.Вставить("Руководитель", Объект.Руководитель);
СтруктураПараметров.Вставить("ГлавныйБухгалтер", Объект.ГлавныйБухгалтер);
СтруктураПараметров.Вставить("ТаблицаОснованийДляПечати", ТаблицаОснованийДляПечати);
СтруктураПараметров.Вставить("КодСпециальныхОбстоятельств", Объект.КодСпециальныхОбстоятельств);
ОткрытьФорму("ОбщаяФорма.РеквизитыПечатиРеализации", СтруктураПараметров, ЭтаФорма,,,, Неопределено, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьОснованиеДляПечати()
Если Не ОснованиеИзменено Тогда
СтруктураОснования = Документы.ВозвратТоваровПоставщику.СтруктураОснованияДляПечати(Объект);
ЗаполнитьЗначенияСвойств(Объект, СтруктураОснования);
КонецЕсли;
ТаблицаОснованийДляПечати.Загрузить(Документы.ВозвратТоваровПоставщику.ТаблицаОснованийДляПечати(Объект));
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьНалогообложениеНДСЗакупки()
ПараметрыЗаполнения = Документы.ВозвратТоваровПоставщику.ПараметрыЗаполненияНалогообложенияНДСЗакупки(Объект);
УчетНДСУП.ЗаполнитьНалогообложениеНДСЗакупки(Объект.НалогообложениеНДС, ПараметрыЗаполнения, УчетНДСКэшированныеЗначенияПараметров);
УчетНДСУП.ЗаполнитьСписокВыбораНалогообложенияНДСЗакупки(Элементы.НалогообложениеНДС, Объект.НалогообложениеНДС, ПараметрыЗаполнения, УчетНДСКэшированныеЗначенияПараметров);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСписокВыбораОпераций(УстановитьОперацию = Истина)
Если Не ПолучитьФункциональнуюОпциюФормы("ИспользоватьКомиссиюПриЗакупках") Тогда
ЭлементСписка = Элементы.ХозяйственнаяОперация.СписокВыбора.НайтиПоЗначению(Перечисления.ХозяйственныеОперации.ВозвратТоваровКомитенту);
Если ЭлементСписка <> Неопределено Тогда
Элементы.ХозяйственнаяОперация.СписокВыбора.Удалить(ЭлементСписка);
КонецЕсли;
КонецЕсли;
ЕдинственнаяОперация = Элементы.ХозяйственнаяОперация.СписокВыбора.Количество() = 1;
Если УстановитьОперацию И ЕдинственнаяОперация И Не ЗначениеЗаполнено(Объект.ХозяйственнаяОперация) Тогда
Объект.ХозяйственнаяОперация = Элементы.ХозяйственнаяОперация.СписокВыбора[0].Значение;
ХозяйственнаяОперацияПриИзмененииСервер();
КонецЕсли;
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ХозяйственнаяОперация",
"ТолькоПросмотр",
ЕдинственнаяОперация И ЗначениеЗаполнено(Объект.ХозяйственнаяОперация));
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
ПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
&НаСервере
Функция ПараметрыРегистрацииСчетовФактур()
Результат = Новый Структура;
Результат.Вставить("Выданные", Документы.ВозвратТоваровПоставщику.ПараметрыРегистрацииСчетовФактурВыданных(Объект));
Результат.Вставить("Полученные", Документы.ВозвратТоваровПоставщику.ПараметрыРегистрацииСчетовФактурПолученных(Объект));
Возврат Результат;
КонецФункции
&НаСервере
Процедура ОбновитьТекстДокументыНаОсновании()
ТекстыПоляДокументыНаОсновании.Очистить();
ОбновитьТекстСчетаФактурыВыданные();
ОбновитьТекстДокументыНаОснованииЛокализация();
ОбщегоНазначенияУТКлиентСервер.ОбновитьТекстДокументыНаОсновании(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ОбработатьРезультатВыбораНоменклатурыПартнера(ВыбранноеЗначение, ДополнительныеПараметры) Экспорт
Если ВыбранноеЗначение = Неопределено Тогда
Возврат;
КонецЕсли;
ДополнительныеПараметры.ТекущаяСтрока.НоменклатураПартнера = ВыбранноеЗначение;
ТоварыНоменклатураПартнераПриИзменении(ДополнительныеПараметры.ЭлементФормы);
КонецПроцедуры
#КонецОбласти
&НаКлиенте
Процедура УменьшенДолгСтрокойНажатиеПослеПроверки(Результат, ДополнительныеПараметры) Экспорт
Оповещение = Новый ОписаниеОповещения("УменьшенДолгСтрокойНажатиеЗавершение", ЭтотОбъект);
ПоместитьРасшифровкуПлатежаВоВременноеХранилище();
ВзаиморасчетыКлиент.ВзаиморасчетыПоВозвратуТоваров(ЭтаФорма, Элементы.УменьшенДолгСтрокой, Оповещение);
КонецПроцедуры
&НаСервере
Процедура ПоместитьРасшифровкуПлатежаВоВременноеХранилище()
ВзаиморасчетыСервер.ПоместитьРасшифровкуПлатежаВоВременноеХранилище(ЭтаФорма, "УменьшенДолгСтрокой");
КонецПроцедуры
&НаКлиенте
Процедура ВопросОПерезаполненииОтгруженнымиТоварамиЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Не Результат.Перезаполнить Тогда
Возврат;
КонецЕсли;
ПерезаполнитьПоОтгрузкеЗавершение(ДополнительныеПараметры.СостояниеОтгрузки, Результат.ЗаполнятьНесобраннымиТоварами);
КонецПроцедуры
&НаКлиенте
Процедура ПерезаполнитьПоОтгрузкеЗавершение(СостояниеОтгрузки, ЗаполнятьНесобраннымиТоварами = Ложь)
ЕстьИзменения = ЗаполнитьПоОтгрузкеСервер(СостояниеОтгрузки, ЗаполнятьНесобраннымиТоварами);
ПересчитатьСуммыВСтрокеРасшифровкиПлатежа();
РассчитатьИтоговыеПоказателиВозврата(ЭтаФорма);
ПродажиКлиент.ОповеститьОбОкончанииПерезаполненияТоваровПоОтгрузке(ЕстьИзменения,
СостояниеОтгрузки.ЕстьОтгруженныеТовары Или СостояниеОтгрузки.ЕстьНесобранныеТовары);
КонецПроцедуры
&НаКлиенте
Процедура ПоискПоШтрихкодуЗавершение(ДанныхШтрихкода, ДополнительныеПараметры) Экспорт
ОбработатьШтрихкоды(ДанныхШтрихкода);
КонецПроцедуры
&НаКлиенте
Процедура РазбитьСтрокуЗавершение(НоваяСтрока, ДополнительныеПараметры) Экспорт
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
Если НоваяСтрока <> Неопределено Тогда
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, ЭтаФорма);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(НоваяСтрока, СтруктураДействий, КэшированныеЗначения);
ПересчитатьСуммыВСтрокеРасшифровкиПлатежа();
РассчитатьИтоговыеПоказателиВозврата(ЭтаФорма);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьСтавкуНДСЗавершение(СтавкаНДС, ДополнительныеПараметры) Экспорт
Если СтавкаНДС = Неопределено Тогда
Возврат;
КонецЕсли;
ЗаполнитьСтавкуНДСНаСервере(СтавкаНДС, КэшированныеЗначения);
ПересчитатьСуммыВСтрокеРасшифровкиПлатежа();
РассчитатьИтоговыеПоказателиВозврата(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСтавкуНДСНаСервере(СтавкаНДС, КэшированныеЗначения)
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
ВыделенныеСтроки = РаботаСТабличнымиЧастямиКлиентСервер.ЭлементыКоллекции(
Объект.Товары, Элементы.Товары.ВыделенныеСтроки);
СтрокиНаУдаление = Новый Массив;
Для каждого СтрокаТабличнойЧасти Из ВыделенныеСтроки Цикл
Если Объект.ВозвратПринятойМногооборотнойТары
И СтрокаТабличнойЧасти.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.МногооборотнаяТара Тогда
СтрокиНаУдаление.Добавить(СтрокаТабличнойЧасти);
Продолжить;
КонецЕсли;
СтрокаТабличнойЧасти.СтавкаНДС = СтавкаНДС;
КонецЦикла;
Для каждого СтрокаНаУдаление Из СтрокиНаУдаление Цикл
ВыделенныеСтроки.Удалить(ВыделенныеСтроки.Найти(СтрокаНаУдаление));
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ВыделенныеСтроки,
СтруктураДействий,
Объект.Товары,
КэшированныеЗначения);
КонецПроцедуры
#Область ОбработчикиСобытийДоставка
&НаКлиенте
Процедура ДекорацияСервисДоставкиСоздатьНажатие(Элемент)
СервисДоставкиКлиентПереопределяемый.ОткрытьФормуНовогоЗаказаНаДоставку(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ДекорацияСервисДоставкиСписокЗаказовНажатие(Элемент)
СервисДоставкиКлиент.ОткрытьФормуСервисаДоставкиИзОснования(ЭтотОбъект, Объект.Ссылка);
КонецПроцедуры
&НаКлиенте
Процедура ДекорацияСервисДоставкиДобавитьВЗаказНаДоставкуНажатие(Элемент)
СервисДоставкиКлиент.ОткрытьФормуСервисаДоставкиИзОснования(ЭтотОбъект, Объект.Ссылка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ДекорацияСервисДоставкиОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("Форма", ЭтотОбъект);
ПараметрыОткрытия.Вставить("ДокументОснование", Объект.Ссылка);
СервисДоставкиКлиент.ОткрытьФормуПодчиненныхЗаказовНаДоставку(ПараметрыОткрытия);
КонецПроцедуры
&НаКлиенте
Процедура СпособМестоДоставкиПеревозчикПриИзменении(Элемент)
СпособМестоДоставкиПеревозчикПриИзмененииСервер(Элемент.Имя);
КонецПроцедуры
&НаКлиенте
Процедура ОсобыеУсловияПеревозкиПриИзменении(Элемент)
ОсобыеУсловияПеревозкиПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура ДополнитьИнформациюПоДоставкеКонтактами(Команда)
ДополнитьИнформациюПоДоставкеКонтактамиСервер();
КонецПроцедуры
&НаСервере
Процедура ОсобыеУсловияПеревозкиПриИзмененииСервер()
ДоставкаТоваров.ОсобыеУсловияПеревозкиПриИзменении(Элементы, Объект);
КонецПроцедуры
&НаСервере
Процедура ДополнитьИнформациюПоДоставкеКонтактамиСервер()
ДоставкаТоваров.ДополнитьИнформациюПоДоставкеКонтактами(Объект);
КонецПроцедуры
&НаСервере
Процедура СпособМестоДоставкиПеревозчикПриИзмененииСервер(ЭлементИмя)
ОбновитьТекстДокументыНаОсновании();
ДоставкаТоваров.ЗаполнитьРеквизитыДоставки(Элементы, ЭлементИмя, Объект);
КонецПроцедуры
#КонецОбласти
&НаКлиенте
Процедура Подключаемый_ОбработатьЗаписьОбъекта()
ОбщегоНазначенияУТКлиент.ОбработатьЗаписьОбъектаВФорме(ЭтотОбъект, ПараметрыДляЗаписи);
КонецПроцедуры
&НаСервере
Процедура ОбновитьТекстСчетаФактурыВыданные()
ПараметрыРегистрацииВыданныхСФ = Документы.ВозвратТоваровПоставщику.ПараметрыРегистрацииСчетовФактурВыданных(Объект);
ПараметрыРегистрацииПолученныхСФ = Документы.ВозвратТоваровПоставщику.ПараметрыРегистрацииСчетовФактурПолученных(Объект);
СчетФактураНаОсновании = УчетНДСУП.СчетаФактурыОбщиеНаОсновании(ПараметрыРегистрацииВыданныхСФ, ПараметрыРегистрацииПолученныхСФ);
ТекстСчетаФактурыВыданные = ПродажиСервер.СформироватьПредставлениеКомандФормированияСчетаФактурыНаОсновании(Объект.Ссылка, СчетФактураНаОсновании);
ТекстыПоляДокументыНаОсновании.Добавить(ТекстСчетаФактурыВыданные);
КонецПроцедуры
&НаСервере
Процедура СпособКомпенсацииПриИзмененииСервер()
ВзаиморасчетыСервер.ПриИзмененииПараметровМеханизма(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ПодключитьОбработчикОжиданияПолучениеПеревозчиков()
Если ДанныеПоФоновомуЗаданию.Свойство("ИдентификаторЗадания") Тогда
ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);
ПараметрыОжидания.ВыводитьОкноОжидания = Ложь;
ОповещениеОЗавершении = Новый ОписаниеОповещения("ОбновитьСписокПеревозчиковОповещение", ЭтотОбъект);
ДлительныеОперацииКлиент.ОжидатьЗавершение(
ДанныеПоФоновомуЗаданию, ОповещениеОЗавершении, ПараметрыОжидания);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьСписокПеревозчиковОповещение(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
Если Результат.Статус = "Выполнено" Тогда
ДоставкаТоваровКлиент.ОбновитьСписокПеревозчиков(Элементы.ПеревозчикПартнер.СписокВыбора, Результат);
ОбновитьОтображениеДанных(Элементы.ПеревозчикПартнер);
ДанныеПоФоновомуЗаданию = Новый Структура;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработатьИзменениеАдреса(Элемент, ИмяРеквизитаАдреса)
ИменаРеквизитов = ДоставкаТоваровКлиентСервер.ИменаРеквизитовАдресовДоставки(ИмяРеквизитаАдреса);
Если ПустаяСтрока(Объект[ИменаРеквизитов.ИмяРеквизитаАдресаДоставки]) Тогда
ДоставкаТоваровКлиент.ОчиститьПредставлениеАдреса(
Объект[ИменаРеквизитов.ИмяРеквизитаАдресаДоставки],
Объект[ИменаРеквизитов.ИмяРеквизитаАдресаДоставкиЗначенияПолей],
Объект[ИменаРеквизитов.ИмяРеквизитаАдресаДоставкиЗначение]);
Иначе
ДоставкаТоваровКлиент.ПриИзмененииПредставленияАдреса(
Элемент,
Объект[ИменаРеквизитов.ИмяРеквизитаАдресаДоставки],
Объект[ИменаРеквизитов.ИмяРеквизитаАдресаДоставкиЗначение]);
АдресДоставкиПриИзмененииНаСервере(
Объект[ИменаРеквизитов.ИмяРеквизитаАдресаДоставки],
Объект[ИменаРеквизитов.ИмяРеквизитаАдресаДоставкиЗначение],
Объект[ИменаРеквизитов.ИмяРеквизитаАдресаДоставкиЗначенияПолей]);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура АдресДоставкиПриИзмененииНаСервере(Адрес, АдресЗначение, АдресЗначенияПолей)
АдресВСвободнойФорме = УправлениеКонтактнойИнформацией.АдресВведенВСвободнойФорме(АдресЗначение);
Если НЕ АдресВСвободнойФорме Тогда
ДанныеСтраны = УправлениеКонтактнойИнформацией.СтранаАдресаКонтактнойИнформации(АдресЗначение);
НоваяСтруктураАдреса = УправлениеКонтактнойИнформацией.СведенияОбАдресе();
НоваяСтруктураАдреса.Представление = Адрес;
НоваяСтруктураАдреса.Страна = ДанныеСтраны.Наименование;
НоваяСтруктураАдреса.КодСтраны = ДанныеСтраны.Код;
АдресЗначение = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияВJSON(
НоваяСтруктураАдреса,
Перечисления.ТипыКонтактнойИнформации.Адрес);
УстановитьТипАдресаВСвободнойФорме(АдресЗначение);
КонецЕсли;
АдресЗначенияПолей = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияВXML(
АдресЗначение,
Адрес,
Перечисления.ТипыКонтактнойИнформации.Адрес);
КонецПроцедуры
&НаСервереБезКонтекста
Процедура УстановитьТипАдресаВСвободнойФорме(АдресДоставкиЗначение)
СтрокаЗаменяемыйТип = """addressType"": ""Административно-территориальный""";
СтрокаСвободныйТип = """addressType"": ""ВСвободнойФорме""";
АдресДоставкиЗначение = СтрЗаменить(АдресДоставкиЗначение, СтрокаЗаменяемыйТип, СтрокаСвободныйТип);
КонецПроцедуры
#КонецОбласти
#Область Локализация
&НаКлиенте
Процедура ОбработкаОповещенияЛокализация(ИмяСобытия, Параметр, Источник)
Если ТранспортнаяНакладнаяКлиент.ЭтоОповещениеЗаписиТранспортнойНакладной(ЭтотОбъект, ИмяСобытия, Параметр, Источник) Тогда
ОбновитьТекстДокументыНаОсновании();
КонецЕсли;
Если ИмяСобытия = "ПроверитьКоличествоВДокументе"
И ТипЗнч(Источник) = Тип("ФормаКлиентскогоПриложения")
И Источник.УникальныйИдентификатор = УникальныйИдентификатор Тогда
ПроверитьКоличествоВДокументеКлиент();
КонецЕсли;
Если ИмяСобытия = "Запись_ДокументыЭПД" Тогда
ОбновитьТекстЭПД();
КонецЕсли;
Возврат;
КонецПроцедуры
&НаСервере
Процедура ОбновитьТекстЭПД()
Если Элементы.ГруппаСостояниеЭПД.Видимость Тогда
КоличествоЭПД = ОбменСГИСЭПДПереопределяемый.КоличествоЭлектронныхДокументов(Объект.Ссылка);
Элементы.ДекорацияЭПД.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку("ЭПД (%1)", КоличествоЭПД);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбновитьТекстДокументыНаОснованииЛокализация()
ТекстТТН = Документы.ТранспортнаяНакладная.ТекстТТН(ЭтотОбъект);
ТекстыПоляДокументыНаОсновании.Добавить(ТекстТТН);
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура ТекстДокументыНаОснованииОбработкаНавигационнойСсылкиЛокализация(НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
ТранспортнаяНакладнаяКлиент.ОбработкаНавигационнойСсылки(ЭтотОбъект, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка);
Возврат;
КонецПроцедуры
#КонецОбласти