#Область ОписаниеПеременных
&НаКлиенте
Перем ПредыдущиеРеквизитыСтроки;
&НаКлиенте
Перем КэшированныеЗначения;
&НаКлиенте
Перем ТекущиеДанныеИдентификатор;
&НаКлиенте
Перем ПроверкаКонтрагентовПараметрыОбработчикаОжидания Экспорт;
&НаКлиенте
Перем ФормаДлительнойОперации Экспорт;
&НаКлиенте
Перем ПараметрыДляЗаписи Экспорт;
#КонецОбласти
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
УстановитьУсловноеОформление();
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(Объект, ЭтотОбъект);
ИсправлениеДокументов.ПриСозданииНаСервере(ЭтотОбъект, Элементы.СтрокаИсправление);
Если КлиентскоеПриложение.ТекущийВариантИнтерфейса() = ВариантИнтерфейсаКлиентскогоПриложения.Версия8_2 Тогда
Элементы.ГруппаИтого.ЦветФона = Новый Цвет();
КонецЕсли;
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("Объект", Объект);
ДополнительныеПараметры.Вставить("ИмяЭлементаДляРазмещения", "ГруппаДополнительныеРеквизиты");
ДополнительныеПараметры.Вставить("ОтложеннаяИнициализация", Истина);
УправлениеСвойствами.ПриСозданииНаСервере(ЭтотОбъект, ДополнительныеПараметры);
ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект);
Справочники.Назначения.ФормаДокументаПриСозданииНаСервере(ЭтотОбъект);
ОбщегоНазначенияУТ.НастроитьПодключаемоеОборудование(ЭтотОбъект);
Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
ПриЧтенииСозданииНаСервере();
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
КонецЕсли;
УстановитьДоступностьКомандБуфераОбмена();
ПроверкаКонтрагентов.ПриСозданииНаСервереДокумент(ЭтотОбъект, Параметры);
ПроверкаКонтрагентовВызовСервераПереопределяемыйУТ.ФормаДокументаПриСозданииНаСервере(ЭтотОбъект);
ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПриСозданииНаСервере(ЭтотОбъект);
СобытияФорм.ПриСозданииНаСервере(ЭтотОбъект, Отказ, СтандартнаяОбработка);
ПараметрыГиперссылки = РаботаСФайлами.ГиперссылкаФайлов();
ПараметрыГиперссылки.Размещение = "КоманднаяПанель";
РаботаСФайлами.ПриСозданииНаСервере(ЭтотОбъект, ПараметрыГиперссылки);
ВзаиморасчетыСервер.ФормаПриСозданииНаСервере(ЭтотОбъект);
УчетОригиналовПервичныхДокументов.ПриСозданииНаСервере_ФормаДокумента(ЭтотОбъект);
УчетНДСУП.УстановитьВидимостьКомандыЗаполнитьСтавкуНДС(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ПредыдущиеРеквизитыСтроки = Новый Структура("Номенклатура");
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
ПроверкаКонтрагентовКлиент.ПриОткрытииДокумент(ЭтотОбъект);
МенеджерОборудованияКлиент.НачатьПодключениеОборудованиеПриОткрытииФормы(Неопределено, ЭтотОбъект, "СканерШтрихкода");
ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
РаботаСФайламиКлиент.ПриОткрытии(ЭтотОбъект, Отказ);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
ПринудительноЗакрытьФорму = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ПриЗакрытии()
МенеджерОборудованияКлиент.НачатьОтключениеОборудованиеПриЗакрытииФормы(Неопределено, ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаВыбора(РезультатВыбора, ИсточникВыбора)
Если ИсточникВыбора.ИмяФормы = "Обработка.ПодборТоваровВДокументЗакупки.Форма.Форма" Тогда
ОбработкаВыбораПодборНаСервере(РезультатВыбора);
ИначеЕсли ИсточникВыбора.ИмяФормы = "Обработка.ПодборТоваровПринятыхНаОтветственноеХранение.Форма.Форма" Тогда
ЦеныРассчитаны = Ложь;
ОбработкаВыбораПодборПринятыхНаОтветственноеХранениеСервер(РезультатВыбора, ЦеныРассчитаны);
ЗакупкиКлиент.ОповеститьОбОкончанииЗаполненияЦенПоСоглашению(ЦеныРассчитаны);
ИначеЕсли УчетНДСУПКлиент.ЗаконченоРедактированиеСчетаФактурыПолученного(РезультатВыбора, ИсточникВыбора) Тогда
НастроитьПредставлениеСчетаФактуры();
ИначеЕсли ИсточникВыбора.ИмяФормы = "Справочник.ВидыЗапасов.Форма.ФормаВводаВидовЗапасов" Тогда
ПолучитьВидыЗапасовИзХранилища(РезультатВыбора);
ИначеЕсли НоменклатураКлиент.ЭтоУказаниеСерий(ИсточникВыбора) Тогда
НоменклатураКлиент.ОбработатьУказаниеСерии(ЭтотОбъект, ПараметрыУказанияСерий, РезультатВыбора);
КонецЕсли;
Если Окно <> Неопределено Тогда
Окно.Активизировать();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если УправлениеСвойствамиКлиент.ОбрабатыватьОповещения(ЭтотОбъект, ИмяСобытия, Параметр) Тогда
ОбновитьЭлементыДополнительныхРеквизитов();
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
КонецЕсли;
Если Источник = "ПодключаемоеОборудование"
И ВводДоступен() Тогда
Если ИмяСобытия = "ScanData"
И МенеджерОборудованияУТКлиент.ЕстьНеобработанноеСобытие() Тогда
ОбработатьШтрихкоды(МенеджерОборудованияУТКлиент.ПреобразоватьДанныеСоСканераВМассив(Параметр));
КонецЕсли;
КонецЕсли;
Если Источник = "ПодключаемоеОборудование"
И ИмяСобытия = "НеизвестныеШтрихкоды"
И Параметр.ФормаВладелец = УникальныйИдентификатор Тогда
ДанныеШтрихкодов = Новый Массив;
КэшированныеЗначения.Штрихкоды.Очистить();
Для Каждого ПолученныйШтрихкод Из Параметр.ПолученыНовыеШтрихкоды Цикл
ДанныеШтрихкодов.Добавить(ПолученныйШтрихкод);
КонецЦикла;
Для Каждого ПолученныйШтрихкод Из Параметр.ЗарегистрированныеШтрихкоды Цикл
ДанныеШтрихкодов.Добавить(ПолученныйШтрихкод);
КонецЦикла;
ОбработатьШтрихкоды(ДанныеШтрихкодов);
КонецЕсли;
Если ИмяСобытия = "Запись_СоглашенияСПоставщиками" Тогда
УстановитьВидимостьСоглашений(Элементы, Объект);
КонецЕсли;
Если ИмяСобытия = "КопированиеСтрокВБуферОбмена" Тогда
УстановитьДоступностьКомандБуфераОбменаНаКлиенте();
КонецЕсли;
Если ВзаиморасчетыКлиент.НуженВызовОбработкиОповещения(ЭтотОбъект, ИмяСобытия, Параметр) Тогда
ИзмененаОплатаСервер(ИмяСобытия, Параметр, Источник);
КонецЕсли;
ПроверкаКонтрагентовКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия, Параметр, Источник);
ИсправлениеДокументовКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия, Параметр, Источник);
СобытияФормКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия, Параметр, Источник);
РаботаСФайламиКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия);
УчетОригиналовПервичныхДокументовКлиент.ОбработчикОповещенияФормаДокумента(ИмяСобытия,ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаНавигационнойСсылки(НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СобытияФормКлиент.ОбработкаНавигационнойСсылки(ЭтотОбъект, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка);
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
УправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
ДатыЗапретаИзменения.ОбъектПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
УправлениеСвойствами.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
ИсправлениеДокументов.ПриЧтенииНаСервере(ЭтотОбъект, Элементы.СтрокаИсправление);
ПриЧтенииСозданииНаСервере();
СобытияФорм.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
ВзаиморасчетыСервер.ФормаПриЧтенииНаСервере(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
Если НеВыполнятьПроверкуПередЗаписью Тогда
НеВыполнятьПроверкуПередЗаписью = Ложь;
Возврат;
КонецЕсли;
Если ПараметрыЗаписи.РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда
Отказ = Истина;
ОбщегоНазначенияУТКлиент.ЗаписатьОбъектПриНеобходимости(ЭтотОбъект, ПараметрыЗаписи,,Истина);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
УправлениеСвойствами.ПередЗаписьюНаСервере(ЭтотОбъект, ТекущийОбъект);
ПроверкаКонтрагентов.ПередЗаписьюНаСервереДокумент(ЭтотОбъект, ТекущийОбъект);
ВзаиморасчетыСервер.ПередЗаписьюНаСервере(ЭтотОбъект, ТекущийОбъект);
МодификацияКонфигурацииПереопределяемый.ПередЗаписьюНаСервере(ЭтотОбъект, Отказ, ТекущийОбъект, ПараметрыЗаписи);
ТекстЗапроса =
"ВЫБРАТЬ
| ДокументТовары.Номенклатура КАК Номенклатура,
| ДокументТовары.Склад КАК Склад,
| ДокументТовары.Подразделение КАК Подразделение,
| ДокументТовары.Договор КАК Договор
|ПОМЕСТИТЬ ВТТовары
|ИЗ
| &Товары КАК ДокументТовары
|;
|
|
|ВЫБРАТЬ
| ДокументТовары.Номенклатура КАК Номенклатура
|ИЗ
| ВТТовары КАК ДокументТовары
|ГДЕ
| ВЫРАЗИТЬ(ДокументТовары.Номенклатура КАК
| Справочник.Номенклатура).ОсобенностьУчета = ЗНАЧЕНИЕ(Перечисление.ОсобенностиУчетаНоменклатуры.ПодконтрольнаяПродукцияВЕТИС)
| ИЛИ ВЫРАЗИТЬ(ДокументТовары.Номенклатура КАК
| Справочник.Номенклатура).ОсобенностьУчета = ЗНАЧЕНИЕ(Перечисление.ОсобенностиУчетаНоменклатуры.МолочнаяПродукцияПодконтрольнаяВЕТИС)
|;
|
|
|ВЫБРАТЬ
| СУММА(ТаблицаМестХранения.МестХранения) КАК КоличествоМестХранения
|ИЗ
| (
| ВЫБРАТЬ
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ДокументТовары.Склад) КАК МестХранения
| ИЗ
| ВТТовары КАК ДокументТовары
| ГДЕ
| НЕ ДокументТовары.Склад = ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ДокументТовары.Подразделение) КАК МестХранения
| ИЗ
| ВТТовары КАК ДокументТовары
| ГДЕ
| НЕ ДокументТовары.Подразделение = ЗНАЧЕНИЕ(Справочник.СтруктураПредприятия.ПустаяСсылка)
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ДокументТовары.Договор) КАК МестХранения
| ИЗ
| ВТТовары КАК ДокументТовары
| ГДЕ
| НЕ ДокументТовары.Договор = ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагентов.ПустаяСсылка)
| ) КАК ТаблицаМестХранения
|ИМЕЮЩИЕ
| СУММА(ТаблицаМестХранения.МестХранения) > 1";
Запрос = Новый Запрос();
Запрос.Текст = ТекстЗапроса;
Запрос.УстановитьПараметр("Товары", Объект.Товары.Выгрузить());
Результат = Запрос.ВыполнитьПакет();
ЕстьПродукцияВЕТИС = Не Результат[1].Пустой();
БольшеОдногоМестаХранения = Не Результат[2].Пустой();
Если ЕстьПродукцияВЕТИС
И БольшеОдногоМестаХранения Тогда
ТекстСообщения = НСтр("ru = 'Имеется номенклатура с типом ""Подконтрольная продукция ВЕТИС"" и указаны разные места хранения.
|При использовании номенклатуры с таким типом, по всем строкам табличной части ""Товары"" должно указываться одно и тоже место хранения.'");
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения,,,,Отказ);
КонецЕсли;
ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПередЗаписьюНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
КонецПроцедуры
&НаСервере
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
ПроверкаКонтрагентов.ПриЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект);
КонецПроцедуры
&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
УправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
НастроитьФорму();
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
ЗаполнитьПредставлениеМестаХранения();
НастроитьПредставлениеСчетаФактуры();
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
ПроверкаКонтрагентов.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект);
ВзаиморасчетыСервер.ФормаПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект.ДополнительныеСвойства);
СобытияФорм.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
ПараметрыЗаписи.Вставить("КлючиДокументаОповещение", РаботаСЖурналамиДокументовКлиент.ПолучитьПараметрыКлючаПоДокументу(
Объект.Ссылка, Объект.Дата, Объект.ХозяйственнаяОперация));
Оповестить("Запись_ВыкупПринятыхНаХранениеТоваров", ПараметрыЗаписи, Объект.Ссылка);
ВзаиморасчетыКлиент.ФормаПослеЗаписи(ЭтотОбъект);
МодификацияКонфигурацииКлиентПереопределяемый.ПослеЗаписи(ЭтотОбъект, ПараметрыЗаписи);
ОбщегоНазначенияУТКлиент.ВыполнитьДействияПослеЗаписи(ЭтотОбъект, Объект, ПараметрыЗаписи);
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда
МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент");
МодульПодключаемыеКомандыКлиент.ПослеЗаписи(ЭтотОбъект, Объект, ПараметрыЗаписи);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
УправлениеСвойствами.ОбработкаПроверкиЗаполнения(ЭтотОбъект, Отказ, ПроверяемыеРеквизиты);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура ГруппаСтраницыПриСменеСтраницы(Элемент, ТекущаяСтраница)
Если ТекущаяСтраница.Имя = "ГруппаДополнительно"
И Не ЭтотОбъект.ПараметрыСвойств.ВыполненаОтложеннаяИнициализация Тогда
СвойстваВыполнитьОтложеннуюИнициализацию();
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДатаПриИзменении(Элемент)
Оповещение = Новый ОписаниеОповещения("ДатаПриИзмененииЗавершение", ЭтотОбъект);
ЦеныПредприятияЗаполнениеКлиент.ЗадатьВопросПересчетаЦеныПриИзмененииДаты(Объект, Оповещение);
ЗаполнитьНалогообложениеНДСЗакупки();
НалогообложениеНДСПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура ДатаПриИзмененииЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
Перем ЦеныРассчитаны;
Если Не РезультатВопроса = КодВозвратаДиалога.Отмена Тогда
ДатаПриИзмененииСервер(РезультатВопроса, ЦеныРассчитаны);
КонецЕсли;
ДатаДокументаДоИзменения = Объект.Дата;
Если РезультатВопроса = Истина Тогда
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияЦенПоСоглашению(ЦеныРассчитаны);
КонецЕсли;
ПроверкаКонтрагентовКлиент.ЗапуститьПроверкуКонтрагентовВДокументе(ЭтотОбъект, Объект.Дата);
КонецПроцедуры
&НаКлиенте
Функция ДополнительныеПараметрыОбработкиЗавершения()
Результат = Новый Структура;
Результат.Вставить("Элемент");
Возврат Результат;
КонецФункции
&НаКлиенте
Процедура ПартнерПриИзменении(Элемент)
Если Не ЗначениеЗаполнено(Объект.Партнер) Тогда
Объект.Соглашение = ПредопределенноеЗначение("Справочник.СоглашенияСПоставщиками.ПустаяСсылка");
Возврат;
КонецЕсли;
ПриИзмененииПартнераСервер();
ДополнительныеПараметры = ДополнительныеПараметрыОбработкиЗавершения();
ДополнительныеПараметры.Элемент = Элемент;
ОписаниеОповещения = Новый ОписаниеОповещения("ПартнерПриИзмененииВопросЗавершение", ЭтотОбъект,
ДополнительныеПараметры);
ВопросПользователюПередЗаполнениемЦенПоСоглашению(ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура ПартнерПриИзмененииВопросЗавершение(ОтветНаВопрос, ДополнительныеПараметры) Экспорт
Если ЗначениеЗаполнено(Объект.Соглашение) Тогда
Если ОтветНаВопрос Тогда
ТекстОшибки = "";
ЦеныРассчитаны = ЗаполнитьЦеныПоСоглашениюСервер(Истина, ТекстОшибки);
ЗакупкиКлиент.ОповеститьОбОкончанииЗаполненияЦенПоСоглашению(ЦеныРассчитаны, ТекстОшибки);
Иначе
ЗакупкиКлиент.ОповеститьОбОкончанииЗаполненияУсловийЗакупокПоУмолчанию();
КонецЕсли;
КонецЕсли;
ПроверкаКонтрагентовКлиент.ЗапуститьПроверкуКонтрагентовВДокументе(ЭтотОбъект, ДополнительныеПараметры.Элемент);
КонецПроцедуры
&НаКлиенте
Процедура КонтрагентПриИзменении(Элемент)
КонтрагентПриИзмененииСервер();
ПроверкаКонтрагентовКлиент.ЗапуститьПроверкуКонтрагентовВДокументе(ЭтотОбъект, Элемент);
КонецПроцедуры
&НаКлиенте
Процедура СоглашениеПриИзменении(Элемент)
ОписаниеОповещения = Новый ОписаниеОповещения("СоглашениеПриИзмененииВопросЗавершение", ЭтотОбъект);
ВопросПользователюПередЗаполнениемЦенПоСоглашению(ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура СоглашениеПриИзмененииВопросЗавершение(ОтветНаВопрос, ДополнительныеПараметры) Экспорт
Перем ЦеныРассчитаны;
ПересчитыватьЦены = ЗначениеЗаполнено(Объект.Соглашение)
И Объект.Товары.Количество() > 0
И ОтветНаВопрос;
ПриИзмененииСоглашенияСервер(ПересчитыватьЦены, ЦеныРассчитаны);
Если ЗначениеЗаполнено(Объект.Соглашение) Тогда
ЗакупкиКлиент.ОповеститьОбОкончанииЗаполненияУсловийЗакупок();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СоглашениеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ДополнительныйОтбор = Новый Структура("ХозяйственнаяОперация",
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПриемНаХранениеСПравомПродажи"));
ЗакупкиКлиент.НачалоВыбораСоглашенияСПоставщиком(Элемент, СтандартнаяОбработка, Объект.Партнер, Объект.Соглашение,
Объект.Дата, ДополнительныйОтбор);
КонецПроцедуры
&НаКлиенте
Процедура НадписьВалютыНажатие(Элемент, СтандартнаяОбработка)
Оповещение = Новый ОписаниеОповещения("НадписьВалютыНажатиеЗавершение", ЭтотОбъект);
ВзаиморасчетыКлиент.ВалютыИКурсДокументаНажатие(ЭтотОбъект, Элемент, СтандартнаяОбработка, Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура НадписьВалютыНажатиеЗавершение(РезультатЗакрытия, ДополнительныеПараметры) Экспорт
Если РезультатЗакрытия = Неопределено Тогда
Возврат;
КонецЕсли;
Если ТипЗнч(РезультатЗакрытия) = Тип("Структура") Тогда
ИзмененныеРеквизиты = РезультатЗакрытия.СтарыеЗначенияИзмененныхРеквизитов;
Если ИзмененныеРеквизиты.Количество() > 0 Тогда
НадписьВалютыНажатиеЗавершениеСервер(РезультатЗакрытия);
Если РезультатЗакрытия.НеобходимПересчетСуммДокумента Тогда
ЦенообразованиеКлиент.ОповеститьОбОкончанииПересчетаСуммВВалюту(ВалютаДокумента, Объект.Валюта);
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура НадписьЭтапыОплатыНажатие(Элемент, СтандартнаяОбработка)
ВзаиморасчетыКлиент.НадписьЭтапыОплатыНажатие(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ОрганизацияПриИзменении(Элемент)
ОрганизацияПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура ДоговорПриИзменении(Элемент)
ДоговорПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура ВидЦеныПоставщикаПриИзменении(Элемент)
Если Не ЗначениеЗаполнено(Объект.ВидЦеныПоставщика) Тогда
Возврат;
КонецЕсли;
ТекстВопроса = НСтр("ru='Перезаполнить цены по виду цены?'");
ОписаниеОповещения = Новый ОписаниеОповещения("ВидЦеныПоставщикаПриИзмененииВопросЗавершение", ЭтотОбъект);
ВариантыОтветов = Новый СписокЗначений;
ВариантыОтветов.Добавить(Истина, НСтр("ru='Перезаполнить'"));
ВариантыОтветов.Добавить(Ложь, НСтр("ru='Не перезаполнять'"));
ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, ВариантыОтветов);
КонецПроцедуры
&НаКлиенте
Процедура ВидЦеныПоставщикаПриИзмененииВопросЗавершение(ОтветНаВопрос, ДополнительныеПараметры) Экспорт
Если ОтветНаВопрос <> Неопределено
И ОтветНаВопрос Тогда
ЗаполнитьЦеныПоВидуЦеныПоставщика();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура МенеджерПриИзменении(Элемент)
ЗаполнитьПодчиненныеСвойстваПоСтатистике("Менеджер");
КонецПроцедуры
&НаКлиенте
Процедура НаправлениеДеятельностиПриИзменении(Элемент)
НаправлениеДеятельностиПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура НалогообложениеНДСПриИзменении(Элемент)
НалогообложениеНДСПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура ЦенаВключаетНДСПриИзменении(Элемент)
ЦенаВключаетНДСПриИзмененииСервер(КэшированныеЗначения);
КонецПроцедуры
&НаКлиенте
Процедура ТекстСчетФактураОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылка, СтандартнаяОбработка)
ПараметрыРегистрации = УчетНДСУПКлиентСервер.ПараметрыРегистрацииСчетовФактурПолученных();
ЗаполнитьЗначенияСвойств(ПараметрыРегистрации, Объект, "Ссылка, Дата, Организация, Контрагент, НалогообложениеНДС");
УчетНДСУПКлиент.ОбработкаНавигационнойСсылкиСчетаФактурыПолученные(ЭтотОбъект, НавигационнаяСсылка, СтандартнаяОбработка,
ПараметрыРегистрации);
КонецПроцедуры
&НаКлиенте
Процедура ВыкупПодДеятельностьОчистка(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
КонецПроцедуры
&НаКлиенте
Процедура ПодразделениеПриИзменении(Элемент)
АктуализироватьВыкупПодДеятельность();
КонецПроцедуры
&НаКлиенте
Процедура ХозяйственнаяОперацияПриИзменении(Элемент)
Если Объект.ХозяйственнаяОперация = ХозяйственнаяОперацияДоИзменения Тогда
Возврат;
КонецЕсли;
ХозяйственнаяОперацияДоговора = ХозяйственнаяОперацияДоговора(Объект.ХозяйственнаяОперация);
ПриИзмененииХозяйственнойОперацииСервер();
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ДекорацияСостояниеОригиналаНажатие()
УчетОригиналовПервичныхДокументовКлиент.ОткрытьМенюВыбораСостояния(ЭтотОбъект,Элементы.ДекорацияСостояниеОригинала);
КонецПроцедуры
&НаКлиенте
Процедура СтрокаИсправлениеОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
ИсправлениеДокументовКлиент.СтрокаИсправлениеОбработкаНавигационныйСсылки(
ЭтотОбъект, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыТовары
&НаКлиенте
Процедура ТоварыВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
Если Элементы.Товары.ТекущиеДанные <> Неопределено Тогда
НоменклатураПартнеровКлиент.ПриВыбореНоменклатурыПартнера(
Объект, Поле, "ТоварыНоменклатураПартнера", Элементы.Партнер.Заголовок);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПриАктивизацииЯчейки(Элемент)
Если Элемент.ТекущийЭлемент = Неопределено Тогда
Возврат;
ИначеЕсли Элемент.ТекущийЭлемент.Имя = "ТоварыНоменклатураПартнера" Тогда
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
НоменклатураПартнеровКлиент.ЗаполнитьСписокВыбораНоменклатурыПартнера(
Объект.Партнер, ТекущиеДанные, Элементы.ТоварыНоменклатураПартнера.СписокВыбора);
НоменклатураПартнеровКлиент.УстановитьПараметрыВыбораУпаковки(
Элементы.ТоварыНоменклатураПартнера.ПараметрыВыбора, ТекущиеДанные);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПередНачаломИзменения(Элемент, Отказ)
ЗаполнитьЗначенияСвойств(ПредыдущиеРеквизитыСтроки, Элементы.Товары.ТекущиеДанные);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПередУдалением(Элемент, Отказ)
НоменклатураКлиент.ОбновитьКешированныеЗначенияДляУчетаСерий(Элемент, КэшированныеЗначения, ПараметрыУказанияСерий);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
НоменклатураКлиент.ОбновитьКешированныеЗначенияДляУчетаСерий(Элемент, КэшированныеЗначения, ПараметрыУказанияСерий,
Копирование);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
Если НоменклатураКлиент.НеобходимоОбновитьСтатусыСерий(Элемент, КэшированныеЗначения, ПараметрыУказанияСерий) Тогда
ТекущаяСтрокаИдентификатор = ТекущиеДанные.ПолучитьИдентификатор();
ЗаполнитьСтатусыУказанияСерийПриОкончанииРедактированияСтрокиТЧ(ТекущаяСтрокаИдентификатор, КэшированныеЗначения);
НоменклатураКлиент.ОбновитьКешированныеЗначенияДляУчетаСерий(Элемент,КэшированныеЗначения,ПараметрыУказанияСерий);
КонецЕсли;
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПослеУдаления(Элемент)
Если НоменклатураКлиент.НеобходимоОбновитьСтатусыСерий(Элемент, КэшированныеЗначения, ПараметрыУказанияСерий, Истина) Тогда
ЗаполнитьСтатусыУказанияСерийПриОкончанииРедактированияСтрокиТЧ(Неопределено, КэшированныеЗначения);
НоменклатураКлиент.ОбновитьКешированныеЗначенияДляУчетаСерий(Элемент, КэшированныеЗначения, ПараметрыУказанияСерий);
КонецЕсли;
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыНоменклатураПартнераПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
НоменклатураПартнеровКлиент.УстановитьПараметрыВыбораУпаковки(Элемент.ПараметрыВыбора, ТекущаяСтрока);
ЗаполнитьПризнакАртикул = Новый Структура("Номенклатура", "Артикул");
ЗаполнитьПризнакТипНоменклатуры = Новый Структура("Номенклатура", "ТипНоменклатуры");
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьНоменклатуруПоНоменклатуреПартнера");
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", ЗаполнитьПризнакАртикул);
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", ЗаполнитьПризнакТипНоменклатуры);
СтруктураДействий.Вставить("ПроверитьХарактеристикуПоВладельцу", ТекущаяСтрока.Характеристика);
СтруктураДействий.Вставить("ПроверитьЗаполнитьУпаковкуПоВладельцу", ТекущаяСтрока.Упаковка);
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект));
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, ЭтотОбъект);
ЗаполнитьСтруктураДействийПриДобавленииСтроки(ЭтотОбъект, СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
Если ПредыдущиеРеквизитыСтроки.Номенклатура <> ТекущаяСтрока.Номенклатура Тогда
СтруктураДействий = Новый Структура;
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтотОбъект, СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
КонецЕсли;
ЗаполнитьЗначенияСвойств(ПредыдущиеРеквизитыСтроки, ТекущаяСтрока);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыНоменклатураПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
ЗаполнитьПризнакАртикул = Новый Структура("Номенклатура", "Артикул");
ЗаполнитьПризнакТипНоменклатуры = Новый Структура("Номенклатура", "ТипНоменклатуры");
ПроверитьСериюРассчитатьСтатус = Новый Структура("Склад, ПараметрыУказанияСерий",
Неопределено, ПараметрыУказанияСерий);
НоменклатураПриИзмененииПереопределяемый = Новый Структура("ИмяФормы, ИмяТабличнойЧасти",
ИмяФормы, "Товары");
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьНоменклатуруПартнераПоНоменклатуре", Объект.Партнер);
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", ЗаполнитьПризнакАртикул);
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", ЗаполнитьПризнакТипНоменклатуры);
СтруктураДействий.Вставить("ПроверитьХарактеристикуПоВладельцу", ТекущаяСтрока.Характеристика);
СтруктураДействий.Вставить("ПроверитьЗаполнитьУпаковкуПоВладельцу", ТекущаяСтрока.Упаковка);
СтруктураДействий.Вставить("ПроверитьСериюРассчитатьСтатус", ПроверитьСериюРассчитатьСтатус);
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект));
СтруктураДействий.Вставить("НоменклатураПриИзмененииПереопределяемый", НоменклатураПриИзмененииПереопределяемый);
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, ЭтотОбъект);
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтотОбъект, СтруктураДействий);
ЗаполнитьСтруктураДействийПриДобавленииСтроки(ЭтотОбъект, СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
ЗаполнитьЗначенияСвойств(ПредыдущиеРеквизитыСтроки, ТекущаяСтрока);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыХарактеристикаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
ХарактеристикаПриИзмененииПереопределяемый = Новый Структура("ИмяФормы, ИмяТабличнойЧасти",
ИмяФормы, "Товары");
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьНоменклатуруПартнераПоНоменклатуре", Объект.Партнер);
СтруктураДействий.Вставить("ХарактеристикаПриИзмененииПереопределяемый", ХарактеристикаПриИзмененииПереопределяемый);
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтотОбъект, СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСерияПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
ВыбранноеЗначение = НоменклатураКлиентСервер.ВыбраннаяСерия();
ВыбранноеЗначение.Значение = ТекущаяСтрока.Серия;
ВыбранноеЗначение.ИдентификаторТекущейСтроки = ТекущаяСтрока.ПолучитьИдентификатор();
НоменклатураКлиент.ОбработатьУказаниеСерии(ЭтотОбъект, ПараметрыУказанияСерий, ВыбранноеЗначение)
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСерияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОткрытьПодборСерий(Элемент.ТекстРедактирования);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыУпаковкаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьНоменклатуруПартнераПоНоменклатуре", Объект.Партнер);
СтруктураДействий.Вставить("ПересчитатьЦенуЗаУпаковку", ТекущаяСтрока.Количество);
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, ЭтотОбъект);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыКоличествоУпаковокПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, ЭтотОбъект);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыЦенаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураПересчетаСуммы = ПараметрыПересчетаСуммыНДСВСтрокеТЧ(ЭтотОбъект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетов");
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСуммаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураПересчетаСуммы = ПараметрыПересчетаСуммыНДСВСтрокеТЧ(ЭтотОбъект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьЦенуПоСумме");
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетов");
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСуммаВзаиморасчетовПриИзменении(Элемент)
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
Если ТекущиеДанные <> Неопределено Тогда
ТекущиеДанные.СуммаНДСВзаиморасчетов = 0;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСуммаНДСПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураПересчетаСуммы = ПараметрыПересчетаСуммыНДСВСтрокеТЧ(ЭтотОбъект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетов");
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСтавкаНДСПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураПересчетаСуммы = ПараметрыПересчетаСуммыНДСВСтрокеТЧ(ЭтотОбъект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетов");
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыТипМестаХраненияПриИзменении(Элемент)
МестаХранения = МестаХранения();
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
Если (ТекущиеДанные.ТипМестаХранения = МестаХранения.Склад
И Не ЗначениеЗаполнено(ТекущиеДанные.Склад))
Или (ТекущиеДанные.ТипМестаХранения = МестаХранения.Подразделение
И Не ЗначениеЗаполнено(ТекущиеДанные.Подразделение))
Или (ТекущиеДанные.ТипМестаХранения = МестаХранения.ДоговорКонтрагента
И Не ЗначениеЗаполнено(ТекущиеДанные.Договор))
Или Не ЗначениеЗаполнено(ТекущиеДанные.ТипМестаХранения) Тогда
ЗначенияПоУмолчанию = Новый Структура("Склад, Подразделение, Договор, Хранитель, Контрагент,
|ПредставлениеМестаХранения");
ЗаполнитьЗначенияСвойств(ТекущиеДанные, ЗначенияПоУмолчанию);
КонецЕсли;
ЗаполнитьСтатусыУказанияСерийСервер();
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПредставлениеМестаХраненияПриИзменении(Элемент)
ПроверитьСериюРассчитатьСтатус = Новый Структура("Склад, ПараметрыУказанияСерий",
Неопределено, ПараметрыУказанияСерий);
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураДействий = Новый Структура("ПроверитьСериюРассчитатьСтатус", ПроверитьСериюРассчитатьСтатус);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПредставлениеМестаХраненияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
МестаХранения = МестаХранения();
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
Если ТекущиеДанные.ТипМестаХранения = МестаХранения.Склад Тогда
ИмяФормыОткрытия = "Справочник.Склады.Форма.ФормаВыбора";
ПараметрыФормы = ПараметрыВыбораСклада();
ИначеЕсли ТекущиеДанные.ТипМестаХранения = МестаХранения.Подразделение Тогда
ИмяФормыОткрытия = "Справочник.СтруктураПредприятия.Форма.ФормаВыбора";
ПараметрыФормы = ПараметрыВыбораПодразделения();
ИначеЕсли ТекущиеДанные.ТипМестаХранения = МестаХранения.ДоговорКонтрагента Тогда
ИмяФормыОткрытия = "Справочник.ДоговорыКонтрагентов.Форма.ФормаВыбора";
ПараметрыФормы = ПараметрыВыбораДоговора(
ТекущиеДанные.Хранитель, ТекущиеДанные.Контрагент, Объект.ХозяйственнаяОперация, ИспользоватьВвозТоваровИзТаможенногоСоюза);
КонецЕсли;
ОткрытьФормуВыбораМестаХранения(ИмяФормыОткрытия, ПараметрыФормы, ТекущиеДанные);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПредставлениеМестаХраненияОткрытие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
МестаХранения = МестаХранения();
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
Если ТекущиеДанные.ТипМестаХранения = МестаХранения.Склад Тогда
МестоХранения = ТекущиеДанные.Склад;
ИначеЕсли ТекущиеДанные.ТипМестаХранения = МестаХранения.Подразделение Тогда
МестоХранения = ТекущиеДанные.Подразделение;
ИначеЕсли ТекущиеДанные.ТипМестаХранения = МестаХранения.ДоговорКонтрагента Тогда
МестоХранения = ТекущиеДанные.Договор;
КонецЕсли;
ПоказатьЗначение(, МестоХранения);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПредставлениеМестаХраненияОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
ЗаполнитьМестоХранения(ВыбранноеЗначение, ТекущиеДанные);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПредставлениеМестаХраненияАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
МестаХранения = МестаХранения();
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
Если ТекущиеДанные.ТипМестаХранения = МестаХранения.Склад Тогда
ТипДанныхВыбора = Тип("СправочникСсылка.Склады");
ПараметрыВыбораДанных = ПараметрыВыбораСклада(Ложь);
ИначеЕсли ТекущиеДанные.ТипМестаХранения = МестаХранения.Подразделение Тогда
ТипДанныхВыбора = Тип("СправочникСсылка.СтруктураПредприятия");
ПараметрыВыбораДанных = ПараметрыВыбораПодразделения();
ИначеЕсли ТекущиеДанные.ТипМестаХранения = МестаХранения.ДоговорКонтрагента Тогда
ТипДанныхВыбора = Тип("СправочникСсылка.ДоговорыКонтрагентов");
ПараметрыВыбораДанных = ПараметрыВыбораДоговора(
ТекущиеДанные.Хранитель, ТекущиеДанные.Контрагент, Объект.ХозяйственнаяОперация, ИспользоватьВвозТоваровИзТаможенногоСоюза);
Иначе
Возврат;
КонецЕсли;
ПараметрыВыбораДанных.Вставить("СтрокаПоиска", Текст);
ПараметрыВыбораДанных.Вставить("ВыборГруппИЭлементов",
ПредопределенноеЗначение("ИспользованиеГруппИЭлементов.Элементы"));
ДанныеВыбора = ПолучитьДанныеВыбора(ТипДанныхВыбора, ПараметрыВыбораДанных);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыНоменклатураПартнераНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ЭлементФормы" , Элемент);
ДополнительныеПараметры.Вставить("ТекущаяСтрока", ТекущаяСтрока);
ОповещениеОЗакрытие = Новый ОписаниеОповещения("ОбработатьРезультатВыбораНоменклатурыПартнера", ЭтотОбъект, ДополнительныеПараметры);
НоменклатураПартнеровКлиент.ОткрытьФормуВыбораНоменклатурыПартнера(ЭтотОбъект, Объект.Партнер, ТекущаяСтрока, Элемент.Заголовок, ОповещениеОЗакрытие);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаСервере
Процедура ВыполнитьКомандуНаСервере(ПараметрыВыполнения)
ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, ПараметрыВыполнения, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПродолжитьВыполнениеКомандыНаСервере(ПараметрыВыполнения, ДополнительныеПараметры) Экспорт
ВыполнитьКомандуНаСервере(ПараметрыВыполнения);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_КомандаПанелиПрисоединенныхФайлов(Команда)
РаботаСФайламиКлиент.КомандаУправленияПрисоединеннымиФайлами(ЭтотОбъект, Команда);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПроверкаПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраПроверкаПеретаскивания(ЭтотОбъект, Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраПеретаскивание(ЭтотОбъект, Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраНажатие(Элемент, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраНажатие(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ПровестиИЗакрыть(Команда)
ОбщегоНазначенияУТКлиент.ПровестиИЗакрыть(ЭтотОбъект, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ЗаписатьДокумент(Команда)
ОбщегоНазначенияУТКлиент.Записать(ЭтотОбъект, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ПровестиДокумент(Команда)
ОбщегоНазначенияУТКлиент.Провести(ЭтотОбъект, Истина);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
ПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_СвойстваВыполнитьКоманду(ЭлементИлиКоманда, НавигационнаяСсылка = Неопределено, СтандартнаяОбработка = Неопределено)
УправлениеСвойствамиКлиент.ВыполнитьКоманду(ЭтотОбъект, ЭлементИлиКоманда, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуИнтеграции(Команда)
ИнтеграцияС1СДокументооборотБазоваяФункциональностьКлиент.ВыполнитьПодключаемуюКомандуИнтеграции(Команда, ЭтотОбъект, Объект);
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьКонтрагентов(Команда)
ПроверкаКонтрагентовКлиент.ПроверитьКонтрагентовВДокументеПоКнопке(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьВидыЗапасов(Команда)
ПараметрыРедактированияВидовЗапасов = ПоместитьТоварыИВидыЗапасовВХранилище();
ФинансыКлиент.ОткрытьВидыЗапасов(ЭтотОбъект, ПараметрыРедактированияВидовЗапасов);
КонецПроцедуры
&НаКлиенте
Процедура ЗачетОплаты(Команда)
ПоместитьРасшифровкуПлатежаВоВременноеХранилище();
ВзаиморасчетыКлиент.ЗачетОплаты(ЭтотОбъект, Элементы.ЗачетОплатыФорма);
КонецПроцедуры
&НаКлиенте
Процедура ДекорацияСостояниеРасчетовНажатие(Элемент, СтандартнаяОбработка)
ВзаиморасчетыКлиент.РасчетыНажатие(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецПроцедуры
#Область ОбработчикиКомандТаблицыФормыТовары
&НаКлиенте
Процедура СкопироватьСтроки(Команда)
Если РаботаСТабличнымиЧастямиКлиент.ВыбранаСтрокаДляВыполненияКоманды(Элементы.Товары) Тогда
СкопироватьСтрокиНаСервере();
РаботаСТабличнымиЧастямиКлиент.ОповеститьПользователяОКопированииСтрок(Элементы.Товары.ВыделенныеСтроки.Количество());
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВставитьСтроки(Команда)
КоличествоТоваровДоВставки = Объект.Товары.Количество();
ПолучитьСтрокиИзБуфераОбмена();
КоличествоВставленных = Объект.Товары.Количество() - КоличествоТоваровДоВставки;
РаботаСТабличнымиЧастямиКлиент.ОповеститьПользователяОВставкеСтрок(КоличествоВставленных);
КонецПроцедуры
&НаКлиенте
Процедура РазбитьСтроку(Команда)
ТаблицаФормы = Элементы.Товары;
ДанныеТаблицы = Объект.Товары;
Оповещение = Новый ОписаниеОповещения("РазбитьСтрокуЗавершение", ЭтотОбъект);
РаботаСТабличнымиЧастямиКлиент.РазбитьСтроку(ДанныеТаблицы, ТаблицаФормы, Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура РазбитьСтрокуЗавершение(НоваяСтрока, ДополнительныеПараметры) Экспорт
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
Если НоваяСтрока <> Неопределено Тогда
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, ЭтотОбъект);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(НоваяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПоказатьНоменклатуруПоставщика(Команда)
НоменклатураПартнеровКлиент.ПоказатьНоменклатуруПартнера(
Объект.Партнер, Объект.Ссылка, Элементы.Товары.ТекущиеДанные, Элементы.Партнер.Заголовок);
КонецПроцедуры
&НаКлиенте
Процедура ПоискПоШтрихкодуВыполнить(Команда)
ОчиститьСообщения();
Оповещение = Новый ОписаниеОповещения("ПоискПоШтрихкодуЗавершение", ЭтотОбъект);
ШтрихкодированиеНоменклатурыКлиент.ПоказатьВводШтрихкода(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ПоискПоШтрихкодуЗавершение(ДанныхШтрихкода, ДополнительныеПараметры) Экспорт
ОбработатьШтрихкоды(ДанныхШтрихкода);
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьДанныеИзТСД(Команда)
Оповещение = Новый ОписаниеОповещения("ЗагрузитьИзТСДЗавершение", ЭтотОбъект);
МенеджерОборудованияКлиент.НачатьЗагрузкуДанныеИзТСД(Оповещение, УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьИзТСДЗавершение(Результат, Параметры) Экспорт
Если Результат.Результат Тогда
ОбработатьШтрихкоды(Результат.ТаблицаТоваров);
Иначе
МенеджерОборудованияУТКлиент.СообщитьОбОшибке(Результат);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПолучитьВес(Команда)
ТекущаяСтрока = МенеджерОборудованияУТКлиент.ТекущаяСтрока(ЭтотОбъект);
Если ТекущаяСтрока = Неопределено Тогда
Возврат;
КонецЕсли;
Оповещение = Новый ОписаниеОповещения("ПолучитьВесЗавершение", ЭтотОбъект, ТекущаяСтрока);
МенеджерОборудованияКлиент.НачатьПолученияВесаСЭлектронныхВесов(Оповещение, УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ПолучитьВесЗавершение(РезультатВыполнения, ТекущаяСтрока) Экспорт
Если РезультатВыполнения.Результат Тогда
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, ЭтотОбъект);
ТекущаяСтрока.КоличествоУпаковок = РезультатВыполнения.Вес;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, ЭтотОбъект);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
Иначе
МенеджерОборудованияУТКлиент.СообщитьОбОшибке(РезультатВыполнения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьКоличествоВДокументе(Команда)
ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("Ссылка", Объект.Ссылка);
ПараметрыОткрытия.Вставить("ИмяТабличнойЧасти", "Товары");
ПараметрыОткрытия.Вставить("ПараметрыУказанияСерий", ПараметрыУказанияСерий);
ПараметрыОткрытия.Вставить("ПревышениеКоличестваТоваровРазрешено", Истина);
ПараметрыОткрытия.Вставить("АдресВоВременномХранилище",
ПоместитьТабличнуюЧастьТоварыВоВременноеХранилищеДляПроверкиКоличества());
ОписаниеОповещения = Новый ОписаниеОповещения("ПроверитьКоличествоВДокументеЗавершение", ЭтотОбъект);
ОткрытьФорму("ОбщаяФорма.ПроверкаЗаполненияДокументов", ПараметрыОткрытия, , , , , ОписаниеОповещения,
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьКоличествоВДокументеЗавершение(Результат, ДополнительныеПараметры) Экспорт
ВозвращаемыеПараметры = Результат;
Если ВозвращаемыеПараметры <> Неопределено Тогда
Модифицированность = Истина;
КэшированныеЗначения = ?(КэшированныеЗначения = Неопределено,
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения(),
КэшированныеЗначения);
ИзменитьТабличнуюЧастьПоРезультатамПроверки(ВозвращаемыеПараметры, КэшированныеЗначения);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УказатьСерии(Команда)
ОткрытьПодборСерий();
КонецПроцедуры
&НаКлиенте
Процедура ПодобратьТовары(Команда)
ОценкаПроизводительностиКлиент.НачатьЗамерВремени(Истина,
"Документ.ВыкупПринятыхНаХранениеТоваров.Форма.ФормаДокумента.ПодобратьТовары");
ОтборПоТипуНоменклатуры = Новый ФиксированныйМассив(НоменклатураКлиентСервер.ОтборПоТоваруМногооборотнойТаре(Ложь));
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Документ", Объект.Ссылка);
ПараметрыФормы.Вставить("Партнер", Объект.Партнер);
ПараметрыФормы.Вставить("Соглашение", Объект.Соглашение);
ПараметрыФормы.Вставить("ЦенаВключаетНДС", Объект.ЦенаВключаетНДС);
ПараметрыФормы.Вставить("Валюта", Объект.Валюта);
ПараметрыФормы.Вставить("Дата", Объект.Дата);
ПараметрыФормы.Вставить("ОтборПоТипуНоменклатуры", ОтборПоТипуНоменклатуры);
ПараметрыФормы.Вставить("РежимПодбораИсключитьГруппыДоступныеВЗаказах", Истина);
ПараметрыФормы.Вставить("СкрыватьРучныеСкидки", Истина);
ОткрытьФорму("Обработка.ПодборТоваровВДокументЗакупки.Форма", ПараметрыФормы, ЭтотОбъект, УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ПодобратьТоварыПринятыеНаОтветственноеХранение(Команда)
ПодоборТоваровПринятыхНаОтветственноеХранение();
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьНоменклатуруПоНоменклатуреПартнера(Команда)
Если Не ОбщегоНазначенияУТКлиент.ПроверитьНаличиеСтрокВСписке(Объект.Товары, "Товары") Тогда
Возврат;
КонецЕсли;
ОтборТипНоменклатуры = Новый Массив;
ОтборТипНоменклатуры.Добавить(ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Товар"));
ОтборТипНоменклатуры.Добавить(ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.МногооборотнаяТара"));
Оповещение = Новый ОписаниеОповещения("ЗаполнитьНоменклатуруПоНоменклатуреПартнераЗавершение", ЭтотОбъект);
ЗакупкиКлиент.ОткрытьФормуЗаполненияНоменклатурыПоставщика(Оповещение, ПоместитьТоварыВоВременноеХранилищеСервер(),
ЭтотОбъект, ОтборТипНоменклатуры);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьНоменклатуруПоНоменклатуреПартнераЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат <> Неопределено Тогда
ЗаполнитьТоварыИзВременногоХранилищаСервер(Результат);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьИзВнешнегоФайла(Команда)
ПараметрыЗагрузки = РаботаСТабличнымиЧастямиКлиент.ПараметрыЗагрузкиНоменклатуры();
ПараметрыЗагрузки.Организация = Объект.Организация;
ПараметрыЗагрузки.ЗаполнятьНоменклатуруПартнера = Объект.Партнер;
ПараметрыЗагрузки.ЗагружатьЦены = Истина;
ПараметрыЗагрузки.ЗагружатьСуммы = Истина;
ПараметрыЗагрузки.ЦенаВключаетНДС = Объект.ЦенаВключаетНДС;
ПараметрыЗагрузки.НалогообложениеНДС = Объект.НалогообложениеНДС;
ПараметрыЗагрузки.ДатаЗаполнения = Объект.Дата;
ПараметрыЗагрузки.ПараметрыОтбора.Вставить("ТипНоменклатуры",
НоменклатураКлиентСервер.ОтборПоТоваруМногооборотнойТаре(Ложь));
Оповещение = Новый ОписаниеОповещения("ЗагрузитьИзВнешнегоФайлаЗавершение", ЭтотОбъект);
РаботаСТабличнымиЧастямиКлиент.ПоказатьФормуЗагрузкиНоменклатуры(ПараметрыЗагрузки, Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьИзВнешнегоФайлаЗавершение(АдресЗагруженныхДанных, ДополнительныеПараметры) Экспорт
Если ЗначениеЗаполнено(АдресЗагруженныхДанных) Тогда
ПолучитьЗагруженныеТоварыИзХранилища(АдресЗагруженныхДанных);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьЦеныПоСоглашению(Команда)
Если ЦеныПартнеровЗаполнениеКлиент.НеобходимоЗаполнениеЦенПоСоглашению(Объект, "Товары", НСтр("ru='Товары'")) Тогда
ТекстОшибки = "";
ЦеныРассчитаны = ЗаполнитьЦеныПоСоглашениюСервер(, ТекстОшибки);
ЗакупкиКлиент.ОповеститьОбОкончанииЗаполненияЦенПоСоглашению(ЦеныРассчитаны, ТекстОшибки);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьЦеныВыделенныхСтрокПоВидуЦенПоставщика(Команда)
ЗаполнитьЦеныПоВидуЦеныПоставщика(Истина);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьСтавкуНДС(Команда)
Если Объект.Товары.Количество() = 0 Тогда
ТекстПредупреждения = НСтр("ru = 'В список ""Товары"" не введено ни одной строки.'");
ПоказатьПредупреждение(, ТекстПредупреждения);
Возврат;
КонецЕсли;
ОповещениеОЗакрытии = Новый ОписаниеОповещения("ЗаполнитьСтавкуНДСЗавершение", ЭтотОбъект);
ПараметрыФормы = Новый Структура();
ПараметрыФормы.Вставить("ТипНалогообложенияНДС", Объект.НалогообложениеНДС);
ОткрытьФорму("Справочник.СтавкиНДС.ФормаВыбора", ПараметрыФормы,,,,, ОповещениеОЗакрытии);
КонецПроцедуры
#КонецОбласти
&НаКлиенте
Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)
СобытияФормКлиент.ВыполнитьПереопределяемуюКоманду(ЭтотОбъект, Команда);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#Область ПриИзмененииРеквизитов
&НаСервере
Процедура ДатаПриИзмененииСервер(ПересчитыватьЦены, ЦеныРассчитаны)
Если ПересчитыватьЦены Тогда
ЦеныРассчитаны = ЗаполнитьЦеныПоСоглашениюСервер(Истина);
Иначе
ЦеныРассчитаны = Ложь;
КонецЕсли;
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтотОбъект,"Дата");
ДатаПлатежа = ЗакупкиСервер.ПолучитьПоследнююДатуПоГрафику(Объект.Дата, Объект.Соглашение);
Если Не ЗначениеЗаполнено(ДатаПлатежа) Тогда
Если Не ЗначениеЗаполнено(ДатаДокументаДоИзменения) Тогда
ДатаДокументаДоИзменения = Объект.Дата;
КонецЕсли;
СдвигДат = (НачалоДня(Объект.Дата) - НачалоДня(ДатаДокументаДоИзменения)) / 86400;
Если СдвигДат > 0 Тогда
Объект.ДатаПлатежа = Объект.Дата + СдвигДат * 86400;
Иначе
Объект.ДатаПлатежа = Объект.Дата;
КонецЕсли;
Иначе
Объект.ДатаПлатежа = ДатаПлатежа;
КонецЕсли;
ПодготовитьЗаполнитьУстановитьВидимостьСерий();
АктуализироватьВыкупПодДеятельность(Истина);
ОтветственныеЛицаСервер.ПриИзмененииСвязанныхРеквизитовДокумента(Объект);
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииПартнераСервер()
СтараяВалюта = ВалютаДокумента;
ДокументЗакупки = РеквизитФормыВЗначение("Объект");
НаправлениедеятельностиСтарое = Объект.НаправлениеДеятельности;
ДокументЗакупки.ЗаполнитьУсловияЗакупокПоУмолчанию(Ложь);
ЗначениеВРеквизитФормы(ДокументЗакупки, "Объект");
Если ЗначениеЗаполнено(Объект.Соглашение) Тогда
ВалютаДокумента = Объект.Валюта;
КонецЕсли;
Если Договор <> Объект.Договор Тогда
Договор = Объект.Договор;
КонецЕсли;
МассивРеквизитов = Новый Массив;
МассивРеквизитов.Добавить("Валюта");
МассивРеквизитов.Добавить("ВалютаВзаиморасчетов");
МассивРеквизитов.Добавить("Партнер");
МассивРеквизитов.Добавить("НаправлениеДеятельности");
МассивРеквизитов.Добавить("Организация");
МассивРеквизитов.Добавить("Соглашение");
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтотОбъект, МассивРеквизитов);
ОтветственныеЛицаСервер.ЗаполнитьМенеджера(Объект);
ЗаполнитьПодчиненныеСвойстваПоСтатистике("Контрагент");
УстановитьВидимостьСоглашений(Элементы, Объект);
ВыполнитьПересчетСуммДокументаСервер(СтараяВалюта, ВалютаДокумента);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
НастроитьПредставлениеСчетаФактуры();
ОтветственныеЛицаСервер.ПриИзмененииСвязанныхРеквизитовДокумента(Объект);
НоменклатураПартнеровСервер.ЗаполнитьНоменклатуруПартнераПоНоменклатуреПриИзмененииПартнера(Объект.Товары, Объект.Партнер);
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
Если НаправлениедеятельностиСтарое <> Объект.НаправлениеДеятельности Тогда
НаправленияДеятельностиСервер.ПриИзмененииНаправленияДеятельности(ЭтотОбъект);
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура КонтрагентПриИзмененииСервер()
НаправлениедеятельностиСтарое = Объект.НаправлениеДеятельности;
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтотОбъект, "Контрагент");
ЗаполнитьПодчиненныеСвойстваПоСтатистике("Контрагент");
Если ЗначениеЗаполнено(Объект.Контрагент) Тогда
ЗаполнитьДоговорПоУмолчанию();
КонецЕсли;
Если НаправлениедеятельностиСтарое <> Объект.НаправлениеДеятельности Тогда
НаправленияДеятельностиСервер.ПриИзмененииНаправленияДеятельности(ЭтотОбъект);
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
КонецЕсли;
АктуализироватьВыкупПодДеятельность(Истина);
ЗаполнитьНалогообложениеНДСЗакупки();
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииСоглашенияСервер(ПересчитыватьЦены = Истина, ЦеныРассчитаны = Ложь)
Если Не ЗначениеЗаполнено(Объект.Соглашение) Тогда
Возврат;
КонецЕсли;
СтараяВалюта = ВалютаДокумента;
ЦенаВключаетНДС = Объект.ЦенаВключаетНДС;
ДокументЗакупки = РеквизитФормыВЗначение("Объект");
НаправлениедеятельностиСтарое = Объект.НаправлениеДеятельности;
УсловияЗакупок = ЗакупкиСервер.ПолучитьУсловияЗакупок(ДокументЗакупки.Соглашение);
ДокументЗакупки.ЗаполнитьУсловияЗакупок(УсловияЗакупок);
ЗначениеВРеквизитФормы(ДокументЗакупки, "Объект");
ВалютаДокумента = Объект.Валюта;
МассивРеквизитов = Новый Массив;
МассивРеквизитов.Добавить("Валюта");
МассивРеквизитов.Добавить("ВалютаВзаиморасчетов");
МассивРеквизитов.Добавить("Партнер");
МассивРеквизитов.Добавить("НаправлениеДеятельности");
МассивРеквизитов.Добавить("Организация");
МассивРеквизитов.Добавить("Соглашение");
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтотОбъект, МассивРеквизитов);
СтруктураДействий = Новый Структура;
Если ПересчитыватьЦены Тогда
СтруктураПересчетаСуммы = ПараметрыПересчетаСуммыНДСВСтрокеТЧ(ЭтотОбъект);
ПараметрыЗаполнения = ЦеныПартнеровЗаполнениеСервер.НовыйПараметрыЗаполненияЗаполнитьЦены();
ПараметрыЗаполнения.Вставить("ПоляЗаполнения", "Цена, СтавкаНДС");
ПараметрыЗаполнения.Вставить("Дата", Объект.Дата);
ПараметрыЗаполнения.Вставить("Организация", Объект.Организация);
ПараметрыЗаполнения.Вставить("Валюта", Объект.Валюта);
ПараметрыЗаполнения.Вставить("Соглашение", Объект.Соглашение);
ПараметрыЗаполнения.Вставить("НалогообложениеНДС", Объект.НалогообложениеНДС);
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетов");
ЦеныРассчитаны = ЦеныПартнеровЗаполнениеСервер.ЗаполнитьЦены(Объект.Товары, Неопределено, ПараметрыЗаполнения, СтруктураДействий);
ИначеЕсли ЦенаВключаетНДС <> Объект.ЦенаВключаетНДС Тогда
СтруктураПересчетаСуммы = ПараметрыПересчетаСуммыНДСВТЧ(ЭтотОбъект);
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
КонецЕсли;
Если Договор <> Объект.Договор Тогда
Договор = Объект.Договор;
КонецЕсли;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий, Неопределено);
ВыполнитьПересчетСуммДокументаСервер(СтараяВалюта, ВалютаДокумента);
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
ОтветственныеЛицаСервер.ПриИзмененииСвязанныхРеквизитовДокумента(Объект);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
НастроитьПредставлениеСчетаФактуры();
Если НаправлениедеятельностиСтарое <> Объект.НаправлениеДеятельности Тогда
НаправленияДеятельностиСервер.ПриИзмененииНаправленияДеятельности(ЭтотОбъект);
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
КонецЕсли;
ОтветственныеЛицаСервер.ЗаполнитьМенеджера(Объект);
КонецПроцедуры
&НаСервере
Процедура ОрганизацияПриИзмененииСервер()
НаправлениедеятельностиСтарое = Объект.НаправлениеДеятельности;
ВалютаРегламентированногоУчета = ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(Объект.Организация);
Если ЗначениеЗаполнено(Объект.Организация) Тогда
ЗаполнитьДоговорПоУмолчанию();
Если НаправлениедеятельностиСтарое <> Объект.НаправлениеДеятельности Тогда
НаправленияДеятельностиСервер.ПриИзмененииНаправленияДеятельности(ЭтотОбъект);
КонецЕсли;
АктуализироватьВыкупПодДеятельность(Истина);
ЗаполнитьНалогообложениеНДСЗакупки();
НалогообложениеНДСПриИзмененииСервер();
НастроитьПредставлениеСчетаФактуры();
ДенежныеСредстваСервер.ПроверитьЗаполнитьБанковскийСчетОрганизацииПоВладельцу(Объект.Организация,
Объект.БанковскийСчетОрганизации, Неопределено, Объект.НаправлениеДеятельности);
КонецЕсли;
ЗаполнитьПодчиненныеСвойстваПоСтатистике("Организация");
ОтветственныеЛицаСервер.ПриИзмененииСвязанныхРеквизитовДокумента(Объект);
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтотОбъект, "Организация");
Если НаправлениедеятельностиСтарое <> Объект.НаправлениеДеятельности Тогда
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ДоговорПриИзмененииСервер()
Договор = Объект.Договор;
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтотОбъект, "Договор");
Если ИспользоватьНаправленияДеятельности Тогда
НаправленияДеятельностиСервер.ЗаполнитьНаправлениеПоУмолчанию(Объект.НаправлениеДеятельности, Объект.Соглашение,
Объект.Договор);
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
КонецЕсли;
АктуализироватьВыкупПодДеятельность(Истина);
ЗаполнитьНалогообложениеНДСЗакупки();
ЗакупкиВызовСервера.ЗаполнитьБанковскиеСчетаПоДоговору(Объект.Договор, Объект.БанковскийСчетОрганизации,
Объект.БанковскийСчетКонтрагента);
ВзаиморасчетыСервер.ПриИзмененииПараметровМеханизма(ЭтотОбъект);
ОтветственныеЛицаСервер.ЗаполнитьМенеджера(Объект);
КонецПроцедуры
&НаСервере
Процедура НадписьВалютыНажатиеЗавершениеСервер(РезультатЗакрытия)
ИзмененныеРеквизиты = РезультатЗакрытия.СтарыеЗначенияИзмененныхРеквизитов;
Если ИзмененныеРеквизиты.Свойство("Валюта") Тогда
Если РезультатЗакрытия.НеобходимПересчетСуммДокумента Тогда
ВалютаПриИзмененииСервер(Объект.Валюта);
КонецЕсли;
ВалютаДокумента = Объект.Валюта;
КонецЕсли;
Если ИзмененныеРеквизиты.Свойство("ВалютаВзаиморасчетов") Тогда
ЗаполнитьДоговорПоУмолчанию();
КонецЕсли;
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтотОбъект, ИзмененныеРеквизиты, Истина);
КонецПроцедуры
&НаСервере
Процедура ВалютаПриИзмененииСервер(НоваяВалюта)
СтараяВалюта = ВалютаДокумента;
ДатаДокумента = ?(ЗначениеЗаполнено(Объект.Дата), Объект.Дата, ТекущаяДатаСеанса());
СтруктурыКурсов = ВзаиморасчетыСервер.КурсыВалютДляПересчета(ЭтотОбъект, СтараяВалюта, НоваяВалюта, ВалютаРегламентированногоУчета, ДатаДокумента);
СтруктураКурсовСтаройВалюты = СтруктурыКурсов.СтруктураКурсовСтаройВалюты;
СтруктураКурсовНовойВалюты = СтруктурыКурсов.СтруктураКурсовНовойВалюты;
ПараметрыПересчета = Ценообразование.ПараметрыПересчетаСуммТаблицыВВалюту(Объект.ЦенаВключаетНДС, СтараяВалюта, НоваяВалюта);
ПараметрыПересчета.СтруктураКурсовСтаройВалюты = СтруктураКурсовСтаройВалюты;
ПараметрыПересчета.СтруктураКурсовНовойВалюты = СтруктураКурсовНовойВалюты;
Ценообразование.ПересчитатьСуммыТаблицыВВалюту(Объект.Товары, ПараметрыПересчета);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура НаправлениеДеятельностиПриИзмененииСервер()
НаправленияДеятельностиСервер.ПриИзмененииНаправленияДеятельности(ЭтотОбъект);
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
АктуализироватьВыкупПодДеятельность();
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтотОбъект, "НаправлениеДеятельности");
КонецПроцедуры
&НаСервере
Процедура НалогообложениеНДСПриИзмененииСервер()
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("СкорректироватьСтавкуНДС", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект));
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий, КэшированныеЗначения);
СтруктураПересчетаСуммы = ПараметрыПересчетаСуммыНДСВТЧ(ЭтотОбъект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетов");
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
КэшированныеЗначения.ОбработанныеСтроки,
СтруктураДействий,
Объект.Товары,
Неопределено);
НастроитьПредставлениеСчетаФактуры();
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
УчетНДСУП.УстановитьВидимостьКомандыЗаполнитьСтавкуНДС(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ЦенаВключаетНДСПриИзмененииСервер(КэшированныеЗначения)
СтруктураПересчетаСуммы = ПараметрыПересчетаСуммыНДСВТЧ(ЭтотОбъект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииХозяйственнойОперацииСервер()
ЗаполнитьДоговорПоУмолчанию();
ЗаполнитьСписокВыбораТоварыТипМестаХранения();
НастроитьФорму();
ХозяйственнаяОперацияДоИзменения = Объект.ХозяйственнаяОперация;
КонецПроцедуры
#КонецОбласти
#Область РаботаСКонтрагентами
&НаКлиенте
Процедура Подключаемый_ПоказатьПредложениеИспользоватьПроверкуКонтрагентов()
ПроверкаКонтрагентовКлиент.ПредложитьВключитьПроверкуКонтрагентов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбработатьРезультатПроверкиКонтрагентов()
ПроверкаКонтрагентовКлиент.ОбработатьРезультатПроверкиКонтрагентовВДокументе(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ОтобразитьРезультатПроверкиКонтрагента() Экспорт
ПроверкаКонтрагентов.ОтобразитьРезультатПроверкиКонтрагентаВДокументе(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ПроверитьКонтрагентовФоновоеЗадание(ПараметрыФоновогоЗадания) Экспорт
ПроверкаКонтрагентов.ПроверитьКонтрагентовВДокументеФоновоеЗадание(ЭтотОбъект, ПараметрыФоновогоЗадания);
КонецПроцедуры
#КонецОбласти
#Область ВидыЗапасов
&НаСервере
Процедура ПолучитьВидыЗапасовИзХранилища(ВыбранноеЗначение)
ЗапасыСервер.ОбработатьВводВидовЗапасовВручную(ВыбранноеЗначение, ЭтотОбъект);
КонецПроцедуры
&НаСервере
Функция ПоместитьТоварыИВидыЗапасовВХранилище()
Возврат ЗапасыСервер.ПоместитьТоварыИВидыЗапасовВХранилище(ЭтотОбъект);
КонецФункции
#КонецОбласти
#Область РаботаСБуферомОбмена
&НаКлиенте
Процедура УстановитьДоступностьКомандБуфераОбменаНаКлиенте()
МассивЭлементов = Новый Массив();
МассивЭлементов.Добавить("ТоварыВставитьСтроки");
МассивЭлементов.Добавить("ТоварыКонтекстноеМенюВставитьСтроки");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, МассивЭлементов, "Доступность", Истина);
КонецПроцедуры
&НаСервере
Процедура УстановитьДоступностьКомандБуфераОбмена()
МассивЭлементов = Новый Массив();
МассивЭлементов.Добавить("ТоварыВставитьСтроки");
МассивЭлементов.Добавить("ТоварыКонтекстноеМенюВставитьСтроки");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, МассивЭлементов, "Доступность",
РаботаСТабличнымиЧастями.ЕстьСтрокиВБуфереОбмена());
КонецПроцедуры
&НаСервере
Процедура СкопироватьСтрокиНаСервере()
РаботаСТабличнымиЧастями.СкопироватьСтрокиВБуферОбмена(Объект.Товары, Элементы.Товары.ВыделенныеСтроки);
КонецПроцедуры
&НаСервере
Процедура ПолучитьСтрокиИзБуфераОбмена()
ПараметрыОтбора = Новый Соответствие;
ПараметрыОтбора.Вставить("Номенклатура.ТипНоменклатуры", НоменклатураКлиентСервер.ОтборПоТоваруМногооборотнойТаре(Ложь));
Колонки = "Номенклатура,Характеристика,Упаковка,КоличествоУпаковок,Цена";
ТаблицаТоваров = РаботаСТабличнымиЧастями.СтрокиИзБуфераОбмена(ПараметрыОтбора, Колонки);
Если Не ЗначениеЗаполнено(ТаблицаТоваров) Тогда
Возврат;
КонецЕсли;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект));
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, ЭтотОбъект);
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтотОбъект, СтруктураДействий);
ДобавитьВСтруктуруДействияИнициализациюМестаХранения(СтруктураДействий);
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
ОбрабатываемыеСтроки = Новый Массив();
Для Каждого СтрокаТовара Из ТаблицаТоваров Цикл
ТекущаяСтрока = Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(ТекущаяСтрока, СтрокаТовара);
ОбрабатываемыеСтроки.Добавить(ТекущаяСтрока);
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.Товары,
КэшированныеЗначения);
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
ЗаполнитьПредставлениеМестаХранения();
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ИзмененаОплатаСервер(ИмяСобытия, Параметр, Источник)
ВзаиморасчетыСервер.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия, Параметр);
КонецПроцедуры
#КонецОбласти
#Область ШтрихкодыИТорговоеОборудование
&НаКлиенте
Процедура ОбработатьШтрихкоды(ДанныеШтрихкодов)
Если Не ШтрихкодированиеНоменклатурыКлиент.ШтрихкодыВалидны(ДанныеШтрихкодов) Тогда
Возврат;
КонецЕсли;
ЗаполнитьПризнакАртикул = Новый Структура("Номенклатура", "Артикул");
ЗаполнитьПризнакТипНоменклатуры = Новый Структура("Номенклатура", "ТипНоменклатуры");
СтруктураДействийСДобавленнымиСтроками = Новый Структура;
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакАртикул", ЗаполнитьПризнакАртикул);
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакТипНоменклатуры", ЗаполнитьПризнакТипНоменклатуры);
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьСтавкуНДС", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект));
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьНоменклатуруПартнераПоНоменклатуре", Объект.Партнер);
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтотОбъект,
СтруктураДействийСДобавленнымиСтроками);
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействийСДобавленнымиСтроками, ЭтотОбъект);
ДобавитьВСтруктуруДействияИнициализациюМестаХранения(СтруктураДействийСДобавленнымиСтроками);
СтруктураДействийСИзмененнымиСтроками = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействийСИзмененнымиСтроками, ЭтотОбъект);
СтруктураДействий = ШтрихкодированиеНоменклатурыКлиент.ПараметрыОбработкиШтрихкодов();
СтруктураДействий.Штрихкоды = ДанныеШтрихкодов;
СтруктураДействий.СтруктураДействийСДобавленнымиСтроками = СтруктураДействийСДобавленнымиСтроками;
СтруктураДействий.СтруктураДействийСИзмененнымиСтроками = СтруктураДействийСИзмененнымиСтроками;
СтруктураДействий.ПараметрыУказанияСерий = ПараметрыУказанияСерий;
СтруктураДействий.ТолькоТовары = Истина;
СтруктураДействий.ИзменятьКоличество = Истина;
ОбработатьШтрихкодыСервер(СтруктураДействий, КэшированныеЗначения);
ШтрихкодированиеНоменклатурыКлиент.ОбработатьНеизвестныеШтрихкоды(СтруктураДействий, КэшированныеЗначения, ЭтотОбъект);
Если ШтрихкодированиеНоменклатурыКлиент.НужноОткрытьФормуУказанияСерийПослеОбработкиШтрихкодов(СтруктураДействий) Тогда
ТекущиеДанныеИдентификатор = СтруктураДействий.МассивСтрокССериями[0];
ПодключитьОбработчикОжидания("ОткрытьПодборСерийПриСканированииШтрихкодаНоменклатуры", 0.1, Истина);
КонецЕсли;
Если СтруктураДействий.ТекущаяСтрока <> Неопределено Тогда
Элементы.Товары.ТекущаяСтрока = СтруктураДействий.ТекущаяСтрока;
КонецЕсли;
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ОбработатьШтрихкодыСервер(СтруктураПараметровДействия,КэшированныеЗначения)
ШтрихкодированиеНоменклатурыСервер.ОбработатьШтрихкоды(ЭтотОбъект, Объект, СтруктураПараметровДействия,
КэшированныеЗначения);
КонецПроцедуры
#КонецОбласти
#Область ПодборыИОбработкаПроверкиКоличества
&НаСервере
Процедура ОбработкаВыбораПодборНаСервере(ВыбранноеЗначение)
ТаблицаТоваров = ПолучитьИзВременногоХранилища(ВыбранноеЗначение.АдресТоваровВХранилище);
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
ОбрабатываемыеСтроки = Новый Массив();
СписокСвойств = "НоменклатураПартнера, Номенклатура, Характеристика, ХарактеристикиИспользуются, Упаковка, Цена,
|КоличествоУпаковок";
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект));
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтотОбъект, СтруктураДействий);
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, ЭтотОбъект);
ДобавитьВСтруктуруДействияИнициализациюМестаХранения(СтруктураДействий);
Для Каждого СтрокаТовара Из ТаблицаТоваров Цикл
ТекущаяСтрока = Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(ТекущаяСтрока, СтрокаТовара, СписокСвойств);
ОбрабатываемыеСтроки.Добавить(ТекущаяСтрока);
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.Товары,
КэшированныеЗначения);
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ОбработкаВыбораПодборПринятыхНаОтветственноеХранениеСервер(ВыбранноеЗначение, ЦеныРассчитаны)
МассивСтрок = Новый Массив;
ТаблицаТоваров = ПолучитьИзВременногоХранилища(ВыбранноеЗначение.АдресТоваровВХранилище);
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
ПараметрыЗаполненияЦен = ЦеныПартнеровЗаполнениеСервер.НовыйПараметрыЗаполненияЗаполнитьЦены();
ПараметрыЗаполненияЦен.Вставить("ПоляЗаполнения", "Цена, СтавкаНДС");
ПараметрыЗаполненияЦен.Вставить("Дата", Объект.Дата);
ПараметрыЗаполненияЦен.Вставить("Организация", Объект.Организация);
ПараметрыЗаполненияЦен.Вставить("Валюта", Объект.Валюта);
ПараметрыЗаполненияЦен.Вставить("Соглашение", Объект.Соглашение);
ПараметрыЗаполненияЦен.Вставить("ВидЦеныПоставщика", Объект.ВидЦеныПоставщика);
ПараметрыЗаполненияЦен.Вставить("НалогообложениеНДС", Объект.НалогообложениеНДС);
СтруктураПересчетаСуммы = ПараметрыПересчетаСуммыНДСВСтрокеТЧ(ЭтотОбъект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьКоличествоУпаковок");
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект));
МестаХранения = МестаХранения();
МестаХранения.Вставить("Договор", ПредопределенноеЗначение("Перечисление.ТипыМестХранения.ДоговорКонтрагента"));
Для Каждого СтрокаТовара Из ТаблицаТоваров Цикл
Если ТипЗнч(СтрокаТовара.МестоХранения) = Тип("СправочникСсылка.Склады") Тогда
МестоХраненияИмя = "Склад";
ИначеЕсли ТипЗнч(СтрокаТовара.МестоХранения) = Тип("СправочникСсылка.СтруктураПредприятия") Тогда
МестоХраненияИмя = "Подразделение";
ИначеЕсли ТипЗнч(СтрокаТовара.МестоХранения) = Тип("СправочникСсылка.ДоговорыКонтрагентов") Тогда
МестоХраненияИмя = "Договор";
КонецЕсли;
ПоискТоваров = Новый Структура();
ПоискТоваров.Вставить("Номенклатура", СтрокаТовара.Номенклатура);
ПоискТоваров.Вставить("Характеристика", СтрокаТовара.Характеристика);
ПоискТоваров.Вставить("Назначение", СтрокаТовара.Назначение);
Если Не СтрокаТовара.РазныйУчетСерий Тогда
ПоискТоваров.Вставить("Серия", СтрокаТовара.Серия);
КонецЕсли;
ПоискТоваров.Вставить(МестоХраненияИмя, СтрокаТовара.МестоХранения);
ПоискТоваров.Вставить("Хранитель", СтрокаТовара.Хранитель);
СтрокиТоваров = Объект.Товары.НайтиСтроки(ПоискТоваров);
Если СтрокиТоваров.Количество() = 0 Тогда
ТекущаяСтрока = Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(ТекущаяСтрока, СтрокаТовара);
ТекущаяСтрока.ТипМестаХранения = МестаХранения[МестоХраненияИмя];
ТекущаяСтрока[МестоХраненияИмя] = СтрокаТовара.МестоХранения;
ИначеЕсли СтрокиТоваров.Количество() = 1 Тогда
ТекущаяСтрока = СтрокиТоваров[0];
ИначеЕсли СтрокиТоваров.Количество() > 1 Тогда
Для Каждого СтрокаКУдалению Из СтрокиТоваров Цикл
Объект.Товары.Удалить(СтрокаКУдалению);
КонецЦикла;
ТекущаяСтрока = Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(ТекущаяСтрока, СтрокаТовара);
ТекущаяСтрока.ТипМестаХранения = МестаХранения[МестоХраненияИмя];
ТекущаяСтрока[МестоХраненияИмя] = СтрокаТовара.МестоХранения;
КонецЕсли;
ТекущаяСтрока.Количество = СтрокаТовара.КоличествоПодобрано;
МассивСтрок.Добавить(ТекущаяСтрока);
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
МассивСтрок,
СтруктураДействий,
Объект.Товары,
КэшированныеЗначения);
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
ЗаполнитьПредставлениеМестаХранения(Истина);
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
СтруктураДействийРасчетаЦен = Новый Структура;
СтруктураДействийРасчетаЦен.Вставить("ПересчитатьСумму");
СтруктураДействийРасчетаЦен.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействийРасчетаЦен.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействийРасчетаЦен.Вставить("ОчиститьСуммуВзаиморасчетов");
ЦеныРассчитаны = ЦеныПартнеровЗаполнениеСервер.ЗаполнитьЦены(Объект.Товары,
МассивСтрок,
ПараметрыЗаполненияЦен,
СтруктураДействийРасчетаЦен);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Функция ПоместитьТабличнуюЧастьТоварыВоВременноеХранилищеДляПроверкиКоличества()
ТабличнаяЧастьТовары = Объект.Товары.Выгрузить(,"Номенклатура, Характеристика, ХарактеристикиИспользуются, Упаковка,
|КоличествоУпаковок, Серия, СтатусУказанияСерий, ТипНоменклатуры, Склад");
ТабличнаяЧастьТовары.Свернуть("Номенклатура, Характеристика, ХарактеристикиИспользуются, Упаковка, Серия,
|СтатусУказанияСерий, ТипНоменклатуры, Склад", "КоличествоУпаковок");
АдресВоВременномХранилище = ПоместитьВоВременноеХранилище(ТабличнаяЧастьТовары, УникальныйИдентификатор);
Возврат АдресВоВременномХранилище;
КонецФункции
&НаСервере
Процедура ИзменитьТабличнуюЧастьПоРезультатамПроверки(ВозвращаемыеПараметры, КэшированныеЗначения)
ТаблицаТовары = ПолучитьИзВременногоХранилища(ВозвращаемыеПараметры.Товары);
УдаляемыеСтроки = Новый Массив;
ОбрабатываемыеСтроки = Новый Массив;
ОбрабатываемыеСтрокиНовые = Новый Массив;
Для Каждого СтрокаИсточник Из ТаблицаТовары Цикл
Отбор = Новый Структура("Номенклатура, Характеристика, Серия, СтатусУказанияСерий, Упаковка");
ЗаполнитьЗначенияСвойств(Отбор, СтрокаИсточник);
НайденныеСтроки = Объект.Товары.НайтиСтроки(Отбор);
Для Каждого СтрокаТЧ Из НайденныеСтроки Цикл
Если СтрокаИсточник.КоличествоУпаковок = 0 Тогда
Прервать;
КонецЕсли;
Если СтрокаТЧ.КоличествоУпаковок = 0
И СтрокаИсточник.КоличествоУпаковок < 0 Тогда
Продолжить;
КонецЕсли;
Если СтрокаИсточник.КоличествоУпаковок > 0 Тогда
СтрокаТЧ.КоличествоУпаковок = СтрокаТЧ.КоличествоУпаковок + СтрокаИсточник.КоличествоУпаковок;
СтрокаИсточник.КоличествоУпаковок = 0;
Иначе
КоличествоКСписанию = -СтрокаИсточник.КоличествоУпаковок;
КоличествоВСтроке = СтрокаТЧ.КоличествоУпаковок;
Если КоличествоКСписанию > КоличествоВСтроке Тогда
СтрокаИсточник.КоличествоУпаковок = КоличествоВСтроке - КоличествоКСписанию;
СтрокаТЧ.КоличествоУпаковок = 0;
Иначе
СтрокаИсточник.КоличествоУпаковок = 0;
СтрокаТЧ.КоличествоУпаковок = КоличествоВСтроке - КоличествоКСписанию;
КонецЕсли;
КонецЕсли;
Если СтрокаТЧ.КоличествоУпаковок > 0 Тогда
ОбрабатываемыеСтроки.Добавить(СтрокаТЧ);
КонецЕсли;
КонецЦикла;
Если НайденныеСтроки.Количество() = 0 Тогда
СтрокаТЧ = Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаТЧ, СтрокаИсточник);
ОбрабатываемыеСтрокиНовые.Добавить(СтрокаТЧ);
КонецЕсли;
КонецЦикла;
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, ЭтотОбъект);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.Товары,
КэшированныеЗначения);
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект));
СтруктураДействий.Вставить("ЗаполнитьНоменклатуруПартнераПоНоменклатуре", Объект.Партнер);
ДобавитьВСтруктуруДействияИнициализациюМестаХранения(СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтрокиНовые,
СтруктураДействий,
Объект.Товары,
КэшированныеЗначения);
УсловиеОтбора = Новый Структура("КоличествоУпаковок", 0);
НайденныеСтроки = Объект.Товары.НайтиСтроки(УсловиеОтбора);
Для Каждого СтрокаТЧ Из НайденныеСтроки Цикл
УдаляемыеСтроки.Добавить(СтрокаТЧ);
КонецЦикла;
Для Каждого СтрокаТЧ Из УдаляемыеСтроки Цикл
Объект.Товары.Удалить(СтрокаТЧ);
КонецЦикла;
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
КонецПроцедуры
#КонецОбласти
#Область Серии
&НаСервере
Процедура ПодготовитьЗаполнитьУстановитьВидимостьСерий()
СтруктураПараметровУказанияСерий = НоменклатураСервер.ПараметрыУказанияСерий(Объект,
Документы.ВыкупПринятыхНаХранениеТоваров);
ПараметрыУказанияСерий = Новый ФиксированнаяСтруктура(СтруктураПараметровУказанияСерий);
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
УстановитьВидимостьЭлементовСерий();
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьЭлементовСерий()
Элементы.ТоварыСтатусУказанияСерий.Видимость = ПараметрыУказанияСерий.ИспользоватьСерииНоменклатуры;
Элементы.ТоварыУказатьСерии.Видимость = ПараметрыУказанияСерий.ИспользоватьСерииНоменклатуры;
Элементы.ТоварыСерия.Видимость = ПараметрыУказанияСерий.УчитыватьСебестоимостьПоСериям;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьПодборСерийПриСканированииШтрихкодаНоменклатуры()
Если ТекущиеДанныеИдентификатор = Неопределено Тогда
Возврат;
КонецЕсли;
ТекущиеДанные = Объект.Товары.НайтиПоИдентификатору(ТекущиеДанныеИдентификатор);
ОткрытьПодборСерий(, ТекущиеДанные);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьПодборСерий(Текст = "", ТекущиеДанные = Неопределено)
НуженСерверныйВызов = НоменклатураКлиент.ДляУказанияСерийНуженСерверныйВызов(ЭтотОбъект,
ПараметрыУказанияСерий,
Текст,
ТекущиеДанные);
Если НуженСерверныйВызов Тогда
Если ТекущиеДанные = Неопределено Тогда
ТекущиеДанныеИдентификатор = Элементы.Товары.ТекущиеДанные.ПолучитьИдентификатор();
Иначе
ТекущиеДанныеИдентификатор = ТекущиеДанные.ПолучитьИдентификатор();
КонецЕсли;
ПараметрыФормыУказанияСерий = ПараметрыФормыУказанияСерий(ТекущиеДанныеИдентификатор);
ДополнительныеПараметры = Новый Структура("ПараметрыФормыУказанияСерий", ПараметрыФормыУказанияСерий);
ОписаниеОповещения = Новый ОписаниеОповещения("ОткрытьПодборСерийЗавершение", ЭтотОбъект,
ДополнительныеПараметры);
ОткрытьФорму(ПараметрыФормыУказанияСерий.ИмяФормы, ПараметрыФормыУказанияСерий, ЭтотОбъект, , , , ОписаниеОповещения,
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьПодборСерийЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат <> Неопределено Тогда
ОбработатьУказаниеСерийСервер(ДополнительныеПараметры.ПараметрыФормыУказанияСерий);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбработатьУказаниеСерийСервер(ПараметрыФормыУказанияСерий)
НоменклатураСервер.ОбработатьУказаниеСерий(Объект, ПараметрыУказанияСерий, ПараметрыФормыУказанияСерий);
КонецПроцедуры
&НаСервере
Функция ПараметрыФормыУказанияСерий(ТекущиеДанныеИдентификатор)
Возврат НоменклатураСервер.ПараметрыФормыУказанияСерий(Объект, ПараметрыУказанияСерий, ТекущиеДанныеИдентификатор,
ЭтотОбъект);
КонецФункции
&НаСервере
Процедура ЗаполнитьСтатусыУказанияСерийПриОкончанииРедактированияСтрокиТЧ(ТекущаяСтрокаИдентификатор, КэшированныеЗначения)
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерийПриОкончанииРедактированияСтрокиТЧ(Объект, ПараметрыУказанияСерий,
ТекущаяСтрокаИдентификатор, КэшированныеЗначения);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСтатусыУказанияСерийСервер()
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
КонецПроцедуры
#КонецОбласти
#Область ЦенообразованиеИСкидки
&НаСервере
Функция ЗаполнитьЦеныПоСоглашениюСервер(ПоВсемСтрокам = Ложь, ТекстОшибки = "")
Если ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Соглашение, "ЦенаВключаетНДС") <> Объект.ЦенаВключаетНДС Тогда
ТекстОшибки =
НСтр("ru = 'Установленные значения полей ""Цена включает НДС"" в документе и соглашении разные.'");
Возврат Ложь;
КонецЕсли;
Если ПоВсемСтрокам Тогда
МассивСтрок = Неопределено;
Иначе
МассивСтрок = Новый Массив;
Для Каждого Строка Из Элементы.Товары.ВыделенныеСтроки Цикл
МассивСтрок.Добавить(Объект.Товары.НайтиПоИдентификатору(Строка));
КонецЦикла;
КонецЕсли;
СтруктураПересчетаСуммы = ПараметрыПересчетаСуммыНДСВСтрокеТЧ(ЭтотОбъект);
ПараметрыЗаполнения = ЦеныПартнеровЗаполнениеСервер.НовыйПараметрыЗаполненияЗаполнитьЦены();
ПараметрыЗаполнения.Вставить("ПоляЗаполнения", "Цена");
ПараметрыЗаполнения.Вставить("Дата", Объект.Дата);
ПараметрыЗаполнения.Вставить("Организация", Объект.Организация);
ПараметрыЗаполнения.Вставить("Валюта", Объект.Валюта);
ПараметрыЗаполнения.Вставить("Соглашение", Объект.Соглашение);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетов");
ЦеныРассчитаны = ЦеныПартнеровЗаполнениеСервер.ЗаполнитьЦены(Объект.Товары, МассивСтрок, ПараметрыЗаполнения,
СтруктураДействий);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
Возврат ЦеныРассчитаны;
КонецФункции
&НаКлиенте
Процедура ЗаполнитьЦеныПоВидуЦеныПоставщика(ЗаполнитьВыделенныеСтроки = Ложь)
ИмяТабличнойЧасти = "Товары";
ПредставлениеТабличнойЧасти = НСтр("ru='Товары'");
ЗаполнитьЦены = ЦеныПартнеровЗаполнениеКлиент.НеобходимоЗаполнениеЦенПоВидуЦенПоставщика(Объект, ИмяТабличнойЧасти,
ПредставлениеТабличнойЧасти);
Если ЗаполнитьЦены Тогда
Если Не ЗначениеЗаполнено(Объект.ВидЦеныПоставщика) Тогда
ТекстПредупреждения = НСтр("ru='В документе не указан вид цены поставщика. Цены не могут быть заполнены'");
ПоказатьПредупреждение(, ТекстПредупреждения);
Иначе
ЦеныРассчитаны = ЗаполнитьЦеныВыделенныхСтрокПоВидуЦеныПоставщикаСервер(ЗаполнитьВыделенныеСтроки);
ЦеныПартнеровЗаполнениеКлиент.ОповеститьОбОкончанииЗаполненияЦенПоВидуЦеныПоставщика(ЦеныРассчитаны, Объект.ВидЦеныПоставщика);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ЗаполнитьЦеныВыделенныхСтрокПоВидуЦеныПоставщикаСервер(ЗаполнитьВыделенныеСтроки)
МассивСтрок = Новый Массив;
Для Каждого Строка Из Элементы.Товары.ВыделенныеСтроки Цикл
СтрокаТаблицы = Объект.Товары.НайтиПоИдентификатору(Строка);
МассивСтрок.Добавить(СтрокаТаблицы);
КонецЦикла;
СтруктураПересчетаСуммы = ПараметрыПересчетаСуммыНДСВСтрокеТЧ(ЭтотОбъект);
ПараметрыЗаполнения = ЦеныПартнеровЗаполнениеСервер.НовыйПараметрыЗаполненияЗаполнитьЦены();
ПараметрыЗаполнения.Вставить("ПоляЗаполнения", "Цена, СтавкаНДС");
ПараметрыЗаполнения.Вставить("Дата", Объект.Дата);
ПараметрыЗаполнения.Вставить("Валюта", Объект.Валюта);
ПараметрыЗаполнения.Вставить("ВидЦеныПоставщика", Объект.ВидЦеныПоставщика);
ПараметрыЗаполнения.Вставить("Организация", Объект.Организация);
ПараметрыЗаполнения.Вставить("НалогообложениеНДС", Объект.НалогообложениеНДС);
ДействияСоСтроками = Новый Структура;
ДействияСоСтроками.Вставить("ПересчитатьСумму", "КоличествоУпаковок");
ДействияСоСтроками.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
ДействияСоСтроками.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
ДействияСоСтроками.Вставить("ОчиститьСуммуВзаиморасчетов");
ЦеныРассчитаны = ЦеныПартнеровЗаполнениеСервер.ЗаполнитьЦены(Объект.Товары, МассивСтрок, ПараметрыЗаполнения, ДействияСоСтроками);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
Возврат ЦеныРассчитаны;
КонецФункции
#КонецОбласти
#Область ХозяйственныеОперации
&НаСервере
Процедура НастроитьФорму()
МассивЭлементов = Новый Массив;
МассивЭлементов.Добавить("ТоварыЗаполнитьНоменклатуруПоНоменклатуреПартнера");
МассивЭлементов.Добавить("ГруппаТоварыЦены");
МассивЭлементов.Добавить("ТоварыТипМестаХранения");
ВидимостьЭлементов = Истина;
Элементы.Партнер.Заголовок = ПартнерыИКонтрагенты.ЗаголовокРеквизитаПартнерВЗависимостиОтХозяйственнойОперации(
Объект.ХозяйственнаяОперация, Истина);
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВыкупПринятыхНаХранениеТоваров Тогда
АвтоЗаголовок = Истина;
Заголовок = "";
Элементы.ТоварыПодобратьТоварыПринятыеНаОтветственноеХранение.Заголовок =
НСтр("ru = 'Подобрать товары, принятые на ответственное хранение'");
ВидимостьЭлементов = Истина;
ИначеЕсли Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПоставкаПодПринципала Тогда
АвтоЗаголовок = Истина;
Заголовок = "";
Элементы.ТоварыПодобратьТоварыПринятыеНаОтветственноеХранение.Заголовок =
НСтр("ru = 'Подобрать товары, принятые на ответственное хранение'");
ВидимостьЭлементов = Ложь;
КонецЕсли;
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(
Элементы, МассивЭлементов, "Видимость", ВидимостьЭлементов);
УстановитьВидимостьСоглашений(Элементы, Объект);
НастроитьПараметрыВыбораЭлементов();
КонецПроцедуры
&НаСервере
Процедура НастроитьПараметрыВыбораЭлементов()
ПараметрыВыбораПартнер = Новый Массив;
ПараметрыВыбораГФУ = Новый Массив;
ПараметрыВыбораДоговор = Новый Массив;
ПараметрыВыбораДоговор.Добавить(Новый ПараметрВыбора("Отбор.ПометкаУдаления", Ложь));
ПараметрыВыбораДоговор.Добавить(Новый ПараметрВыбора("Отбор.ХозяйственнаяОперация", ХозяйственнаяОперацияДоговора));
ПараметрыВыбораДоговор.Добавить(
Новый ПараметрВыбора("Отбор.Статус", Перечисления.СтатусыДоговоровКонтрагентов.Действует));
СвязиПараметровВыбораДоговор = Новый Массив;
СвязиПараметровВыбораДоговор.Добавить(
Новый СвязьПараметраВыбора(
"Отбор.ВалютаВзаиморасчетов", "Объект.ВалютаВзаиморасчетов", РежимИзмененияСвязанногоЗначения.Очищать));
СвязиПараметровВыбораДоговор.Добавить(
Новый СвязьПараметраВыбора(
"Отбор.Контрагент", "Объект.Контрагент", РежимИзмененияСвязанногоЗначения.Очищать));
СвязиПараметровВыбораДоговор.Добавить(
Новый СвязьПараметраВыбора(
"Отбор.Организация", "Объект.Организация", РежимИзмененияСвязанногоЗначения.Очищать));
СвязиПараметровВыбораДоговор.Добавить(
Новый СвязьПараметраВыбора(
"Партнер", "Объект.Партнер", РежимИзмененияСвязанногоЗначения.Очищать));
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВыкупПринятыхНаХранениеТоваров Тогда
ПараметрыВыбораПартнер.Добавить(Новый ПараметрВыбора("Отбор.Поставщик", Истина));
ПараметрыВыбораГФУ.Добавить(Новый ПараметрВыбора("Отбор.РасчетыСПоставщиками", Истина));
ПараметрыВыбораДоговор.Добавить(
Новый ПараметрВыбора("Отбор.ТипДоговора", Перечисления.ТипыДоговоров.СПоклажедателем));
СвязиПараметровВыбораДоговор.Добавить(
Новый СвязьПараметраВыбора(
"Соглашение", "Объект.Соглашение", РежимИзмененияСвязанногоЗначения.НеИзменять));
ИначеЕсли Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПоставкаПодПринципала Тогда
ПараметрыВыбораПартнер.Добавить(Новый ПараметрВыбора("Отбор.Клиент", Истина));
ПараметрыВыбораГФУ.Добавить(Новый ПараметрВыбора("Отбор.РасчетыСПоставщиками", Истина));
ПараметрыВыбораДоговор.Добавить(
Новый ПараметрВыбора("Отбор.ТипДоговора", Перечисления.ТипыДоговоров.СКомитентомНаЗакупку));
СвязиПараметровВыбораДоговор.Добавить(
Новый СвязьПараметраВыбора(
"Соглашение", "Объект.Соглашение", РежимИзмененияСвязанногоЗначения.НеИзменять));
КонецЕсли;
Элементы.Партнер.ПараметрыВыбора = Новый ФиксированныйМассив(ПараметрыВыбораПартнер);
Элементы.Договор.ПараметрыВыбора = Новый ФиксированныйМассив(ПараметрыВыбораДоговор);
Элементы.Договор.СвязиПараметровВыбора = Новый ФиксированныйМассив(СвязиПараметровВыбораДоговор);
Элементы.ГруппаФинансовогоУчета.ПараметрыВыбора = Новый ФиксированныйМассив(ПараметрыВыбораГФУ);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ХозяйственнаяОперацияДоговора(ХозяйственнаяОперацияДокумента)
ХозОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПустаяСсылка");
Если ХозяйственнаяОперацияДокумента =
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ВыкупПринятыхНаХранениеТоваров") Тогда
ХозОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПриемНаХранениеСПравомПродажи");
ИначеЕсли ХозяйственнаяОперацияДокумента =
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПоставкаПодПринципала") Тогда
ХозОперация = ХозяйственнаяОперацияДокумента;
КонецЕсли;
Возврат ХозОперация;
КонецФункции
#КонецОбласти
#Область Прочее
&НаКлиенте
Процедура Подключаемый_ЗакрытьФорму()
Если Открыта() Тогда
Закрыть();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьУсловноеОформление()
УсловноеОформление.Элементы.Очистить();
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыНоменклатураПартнера.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Партнер");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.НезаполненноеПолеТаблицы);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<выберите поставщика>'"));
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
НоменклатураСервер.УстановитьУсловноеОформлениеХарактеристикНоменклатуры(ЭтотОбъект);
НоменклатураСервер.УстановитьУсловноеОформлениеНазначенияНоменклатуры(ЭтотОбъект);
НоменклатураСервер.УстановитьУсловноеОформлениеСерийНоменклатуры(ЭтотОбъект, Ложь);
НоменклатураСервер.УстановитьУсловноеОформлениеСтатусовУказанияСерий(ЭтотОбъект, Истина);
НоменклатураСервер.УстановитьУсловноеОформлениеЕдиницИзмерения(ЭтотОбъект);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЦена.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Цена");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСумма.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Сумма");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыПредставлениеМестаХранения.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипМестаХранения");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.НезаполненноеПолеТаблицы);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<выберите операцию>'"));
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыПредставлениеМестаХранения.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипМестаХранения");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ПредставлениеМестаХранения");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыТипМестаХранения.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипМестаХранения");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ТипыМестХранения.Склад;
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = 'Выкуп товаров, хранящихся на складе'"));
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыТипМестаХранения.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипМестаХранения");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ТипыМестХранения.Подразделение;
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = 'Выкуп товаров, переданных в производство'"));
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыТипМестаХранения.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипМестаХранения");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ТипыМестХранения.ДоговорКонтрагента;
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = 'Выкуп товаров, переданных на хранение'"));
УчетНДСУП.УстановитьУсловноеОформлениеСуммНДСПоНалогообложениюЗакупки(ЭтотОбъект);
ЦеныПредприятияЗаполнениеСервер.УстановитьУсловноеОформлениеЦенаВключаетНДС(ЭтотОбъект);
ЗапасыСервер.УстановитьУсловноеОформлениеПодразделенияДляВидовЗапасов(ЭтотОбъект);
НаправленияДеятельностиСервер.УстановитьУсловноеОформлениеНаправленияДеятельности(ЭтотОбъект);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыНоменклатураПартнера.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ХозяйственнаяОперация");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ХозяйственныеОперации.ПоставкаПодПринципала;
Элемент.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииСозданииНаСервере()
ИспользоватьПроизводство = ПолучитьФункциональнуюОпцию("ИспользоватьПроизводство");
ИспользоватьНесколькоСкладов = ПолучитьФункциональнуюОпцию("ИспользоватьНесколькоСкладов");
ИспользоватьВвозТоваровИзТаможенногоСоюза = ПолучитьФункциональнуюОпцию("ИспользоватьВвозТоваровИзТаможенногоСоюза");
ИспользоватьНаправленияДеятельности = ПолучитьФункциональнуюОпцию("ИспользоватьУчетДоходовПоНаправлениямДеятельности");
ВалютаДокумента = Объект.Валюта;
Договор = Объект.Договор;
ДатаДокументаДоИзменения = Объект.Дата;
ВалютаРегламентированногоУчета = ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(Объект.Организация);
СкладПоУмолчанию = ОбщегоНазначенияУТ.ПолучитьПроверитьСкладПоУмолчанию();
ПодразделениеПоУмолчанию = ЗначениеНастроекПовтИсп.ПолучитьПодразделениеДиспетчерПоУмолчанию(
Неопределено,
Объект.Менеджер);
ХозяйственнаяОперацияСписокВыбора = Элементы.ХозяйственнаяОперация.СписокВыбора;
ХозяйственнаяОперацияСписокВыбора.Очистить();
ХозяйственнаяОперацияСписокВыбора.Добавить(Перечисления.ХозяйственныеОперации.ВыкупПринятыхНаХранениеТоваров);
Если ПолучитьФункциональнуюОпцию("ИспользоватьОказаниеАгентскихУслугПриЗакупке") Тогда
ХозяйственнаяОперацияСписокВыбора.Добавить(Перечисления.ХозяйственныеОперации.ПоставкаПодПринципала, НСтр("ru = 'Выкуп товаров принципала'"));
КонецЕсли;
Элементы.ХозяйственнаяОперация.Видимость = ХозяйственнаяОперацияСписокВыбора.Количество() > 1;
Если Не ЗначениеЗаполнено(Объект.ХозяйственнаяОперация)
И Элементы.ХозяйственнаяОперация.СписокВыбора.Количество() = 1 Тогда
Объект.ХозяйственнаяОперация = ХозяйственнаяОперацияСписокВыбора[0].Значение;
КонецЕсли;
ХозяйственнаяОперацияДоговора = ХозяйственнаяОперацияДоговора(Объект.ХозяйственнаяОперация);
НастроитьФорму();
ХозяйственнаяОперацияДоИзменения = Объект.ХозяйственнаяОперация;
ПодготовитьЗаполнитьУстановитьВидимостьСерий();
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
ЗаполнитьСписокВыбораТоварыТипМестаХранения();
ЗаполнитьПредставлениеМестаХранения();
ПараметрыЗаполнения = Документы.ВыкупПринятыхНаХранениеТоваров.ПараметрыЗаполненияНалогообложенияНДС(Объект);
УчетНДСУП.ЗаполнитьСписокВыбораНалогообложенияНДСЗакупки(Элементы.НалогообложениеНДС,
Объект.НалогообложениеНДС,
ПараметрыЗаполнения,
УчетНДСКэшированныеЗначенияПараметров);
АктуализироватьВыкупПодДеятельность(Ложь);
НастроитьПредставлениеСчетаФактуры();
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
НаправленияДеятельностиСервер.ПриЧтенииСозданииНаСервере(ЭтотОбъект);
ЗакупкиСервер.ЗаполнитьСписокВыбораНаименованиеВходящегоДокумента(ЭтотОбъект, Объект.Контрагент);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьВидимостьСоглашений(Элементы, Объект)
ВидимостьСоглашение = Элементы.Соглашение.Видимость;
Если ЗначениеЗаполнено(Объект.Партнер) Тогда
КоличествоСоглашенийСПоставщиком = 0;
Если Объект.ХозяйственнаяОперация =
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ВыкупПринятыхНаХранениеТоваров") Тогда
КоличествоСоглашенийСПоставщиком = ЗакупкиВызовСервера.ПолучитьКоличествоСоглашенийСПоставщиком(
Объект.Партнер,
Новый Структура("ХозяйственнаяОперация", Объект.ХозяйственнаяОперация));
КонецЕсли;
Если ВидимостьСоглашение <> (КоличествоСоглашенийСПоставщиком > 0) Тогда
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы, "Соглашение", "Видимость", Не ВидимостьСоглашение);
КонецЕсли;
ИначеЕсли ВидимостьСоглашение Тогда
Элементы.Соглашение.Видимость = Не ВидимостьСоглашение;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСлужебныеРеквизитыПоНоменклатуре()
ЗаполнитьПризнакАртикул = Новый Структура("Номенклатура", "Артикул");
ЗаполнитьПризнакТипНоменклатуры = Новый Структура("Номенклатура", "ТипНоменклатуры");
ЗаполнитьПризнакХарактеристикиИспользуются = Новый Структура("Номенклатура", "ХарактеристикиИспользуются");
ПараметрыЗаполненияРеквизитов = Новый Структура;
ПараметрыЗаполненияРеквизитов.Вставить("ЗаполнитьПризнакАртикул", ЗаполнитьПризнакАртикул);
ПараметрыЗаполненияРеквизитов.Вставить("ЗаполнитьПризнакТипНоменклатуры", ЗаполнитьПризнакТипНоменклатуры);
ПараметрыЗаполненияРеквизитов.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются",
ЗаполнитьПризнакХарактеристикиИспользуются);
НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(Объект.Товары, ПараметрыЗаполненияРеквизитов);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСписокВыбораТоварыТипМестаХранения()
ТоварыТипМестаХраненияСписокВыбора = Элементы.ТоварыТипМестаХранения.СписокВыбора;
ТоварыТипМестаХраненияСписокВыбора.Очистить();
ТоварыТипМестаХраненияСписокВыбора.Добавить(
Перечисления.ТипыМестХранения.Склад, НСтр("ru='Выкуп товаров, хранящихся на складе'"));
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВыкупПринятыхНаХранениеТоваров Тогда
Если ПолучитьФункциональнуюОпцию("ИспользоватьПроизводство") Тогда
ТоварыТипМестаХраненияСписокВыбора.Добавить(
Перечисления.ТипыМестХранения.Подразделение, НСтр("ru='Выкуп товаров, переданных в производство'"));
КонецЕсли;
Если ПолучитьФункциональнуюОпцию("ИспользоватьПередачуНаОтветственноеХранениеСПравомПродажи") Тогда
ТоварыТипМестаХраненияСписокВыбора.Добавить(
Перечисления.ТипыМестХранения.ДоговорКонтрагента, НСтр("ru='Выкуп товаров, переданных на хранение'"));
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьПредставлениеМестаХранения(ЗаполнитьДанныеПоДоговору = Ложь)
Товары = Объект.Товары;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Товары.НомерСтроки КАК НомерСтроки,
| ВЫБОР
| КОГДА Товары.ТипМестаХранения = ЗНАЧЕНИЕ(Перечисление.ТипыМестХранения.Склад)
| ТОГДА Товары.Склад
| КОГДА Товары.ТипМестаХранения = ЗНАЧЕНИЕ(Перечисление.ТипыМестХранения.Подразделение)
| ТОГДА Товары.Подразделение
| КОГДА Товары.ТипМестаХранения = ЗНАЧЕНИЕ(Перечисление.ТипыМестХранения.ДоговорКонтрагента)
| ТОГДА Товары.Договор
| ИНАЧЕ НЕОПРЕДЕЛЕНО
| КОНЕЦ КАК МестоХранения,
| ВЫБОР
| КОГДА Товары.ТипМестаХранения = ЗНАЧЕНИЕ(Перечисление.ТипыМестХранения.ДоговорКонтрагента)
| ТОГДА Товары.Хранитель
| ИНАЧЕ """"
| КОНЕЦ КАК ПрефиксМестоХранения,
| ВЫБОР
| КОГДА Товары.ТипМестаХранения = ЗНАЧЕНИЕ(Перечисление.ТипыМестХранения.ДоговорКонтрагента)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК МестоХраненияДоговор
|ПОМЕСТИТЬ ТоварыДляЗапроса
|ИЗ
| &ТоварыДокумента КАК Товары
|
|;
|
|ВЫБРАТЬ
| Товары.НомерСтроки КАК НомерСтроки,
| Товары.МестоХранения КАК МестоХранения,
| ПРЕДСТАВЛЕНИЕ(Товары.МестоХранения) КАК ПредставлениеМестаХранения,
| ПРЕДСТАВЛЕНИЕ(Товары.ПрефиксМестоХранения) КАК ПредставлениеПрефиксМестаХранения,
| ЕСТЬNULL(Договоры.Партнер, ЗНАЧЕНИЕ(Справочник.Партнеры.ПустаяСсылка)) КАК Хранитель,
| ЕСТЬNULL(Договоры.Контрагент, ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)) КАК Контрагент
|ИЗ
| ТоварыДляЗапроса КАК Товары
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ДоговорыКонтрагентов КАК Договоры
| ПО Товары.МестоХраненияДоговор
| И Товары.МестоХранения = Договоры.Ссылка
|
|УПОРЯДОЧИТЬ ПО
| НомерСтроки";
Запрос.УстановитьПараметр("ТоварыДокумента", Товары.Выгрузить());
Выборка = Запрос.Выполнить().Выбрать();
Для НомерСтроки = 0 По Товары.Количество() - 1 Цикл
Выборка.Следующий();
Если ЗаполнитьДанныеПоДоговору Тогда
Товары[НомерСтроки].Хранитель = Выборка.Хранитель;
Товары[НомерСтроки].Контрагент = Выборка.Контрагент;
КонецЕсли;
Товары[НомерСтроки].ПредставлениеМестаХранения = ПредставлениеМестаХранения(Выборка.ПредставлениеМестаХранения,
Выборка.ПредставлениеПрефиксМестаХранения);
КонецЦикла;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ПредставлениеМестаХранения(Представление, ПредставлениеПрефикс)
ШаблонРасширенногоПредставления = НСтр("ru = '%1, %2'");
РасширенноеПредставление = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонРасширенногоПредставления,
ПредставлениеПрефикс,
Представление);
ПредставлениеМестаХранения = ?(ПустаяСтрока(ПредставлениеПрефикс),
Представление,
РасширенноеПредставление);
Возврат ПредставлениеМестаХранения;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ПараметрыПересчетаСуммыНДСВТЧ(Форма)
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВТЧ(Форма.Объект);
Возврат СтруктураПересчетаСуммы;
КонецФункции
&НаСервере
Процедура АктуализироватьВыкупПодДеятельность(Заполнить = Истина)
ПараметрыЗаполнения = Документы.ВыкупПринятыхНаХранениеТоваров.ПараметрыЗаполненияВидаДеятельностиНДС(Объект);
Если Заполнить Тогда
УчетНДСУП.ЗаполнитьВидДеятельностиНДС(Объект.ВыкупПодДеятельность, ПараметрыЗаполнения,
УчетНДСКэшированныеЗначенияПараметров);
КонецЕсли;
УчетНДСУП.ЗаполнитьСписокВыбораВидаДеятельностиНДС(Элементы.ВыкупПодДеятельность,
Объект.ВыкупПодДеятельность,
ПараметрыЗаполнения,
УчетНДСКэшированныеЗначенияПараметров);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьНалогообложениеНДСЗакупки()
ПараметрыЗаполнения = Документы.ВыкупПринятыхНаХранениеТоваров.ПараметрыЗаполненияНалогообложенияНДС(Объект);
УчетНДСУП.ЗаполнитьНалогообложениеНДСЗакупки(Объект.НалогообложениеНДС,
ПараметрыЗаполнения,
УчетНДСКэшированныеЗначенияПараметров);
УчетНДСУП.ЗаполнитьСписокВыбораНалогообложенияНДСЗакупки(Элементы.НалогообложениеНДС,
Объект.НалогообложениеНДС,
ПараметрыЗаполнения,
УчетНДСКэшированныеЗначенияПараметров);
НалогообложениеНДСПриИзмененииСервер();
КонецПроцедуры
&НаСервере
Процедура НастроитьПредставлениеСчетаФактуры()
ПараметрыРегистрации = Документы.ВыкупПринятыхНаХранениеТоваров.ПараметрыРегистрацииСчетовФактурПолученных(Объект);
СчетаФактурыПолученныеНаОсновании = УчетНДСУП.СчетаФактурыПолученныеНаОсновании(ПараметрыРегистрации);
ТекстСчетФактура = СчетаФактурыПолученныеНаОсновании.Представление;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура РассчитатьИтоговыеПоказатели(Форма)
Если Форма.Объект.НалогообложениеНДС = ПредопределенноеЗначение("Перечисление.ТипыНалогообложенияНДС.ПродажаНеОблагаетсяНДС") Тогда
Форма.Элементы.ГруппаСтраницыНДС.ТекущаяСтраница = Форма.Элементы.СтраницаБезНДС;
Форма.Элементы.ГруппаСтраницыВсего.ТекущаяСтраница = Форма.Элементы.СтраницаВсегоБезНДС;
Иначе
Форма.Элементы.ГруппаСтраницыНДС.ТекущаяСтраница = Форма.Элементы.СтраницаСНДС;
Форма.Элементы.ГруппаСтраницыВсего.ТекущаяСтраница = Форма.Элементы.СтраницаВсегоСНДС;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьСтруктураДействийПриДобавленииСтроки(Форма, СтруктураДействий)
ТекущаяСтрока = Форма.Элементы.Товары.ТекущиеДанные;
ПолеФормы = Форма.Элементы.ТоварыТипМестаХранения;
Если ТекущаяСтрока <> Неопределено Тогда
Если Не ПолеФормы.Видимость
И Не ЗначениеЗаполнено(ТекущаяСтрока.ТипМестаХранения) Тогда
ЗаполнитьТипМестаХраненияПоУмолчанию = Новый Структура("ТипМестаХранения", "Перечисление.ТипыМестХранения.Склад");
СтруктураДействий.Вставить("ЗаполнитьТипМестаХраненияПоУмолчанию", ЗаполнитьТипМестаХраненияПоУмолчанию);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ДобавитьВСтруктуруДействияИнициализациюМестаХранения(СтруктураДействий)
Если Не Элементы.ТоварыТипМестаХранения.Видимость Тогда
ЗаполнитьТипМестаХраненияПоУмолчанию = Новый Структура("ТипМестаХранения", "Перечисление.ТипыМестХранения.Склад");
СтруктураДействий.Вставить("ЗаполнитьТипМестаХраненияПоУмолчанию", ЗаполнитьТипМестаХраненияПоУмолчанию);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПолучитьЗагруженныеТоварыИзХранилища(АдресТоваровВХранилище)
ТоварыИзХранилища = ПолучитьИзВременногоХранилища(АдресТоваровВХранилище);
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
ОбрабатываемыеСтроки = Новый Массив();
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьНоменклатуруПартнераПоНоменклатуре", Объект.Партнер);
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, ЭтотОбъект);
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтотОбъект, СтруктураДействий);
ДобавитьВСтруктуруДействияИнициализациюМестаХранения(СтруктураДействий);
Для Каждого СтрокаТоваров Из ТоварыИзХранилища Цикл
СтрокаТЧТовары = Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаТЧТовары, СтрокаТоваров);
ОбрабатываемыеСтроки.Добавить(СтрокаТЧТовары);
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.Товары,
КэшированныеЗначения);
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, Форма)
СтруктураПересчетаСуммы = ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Форма);
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц");
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетов");
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Форма)
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(
Форма.Объект);
Возврат СтруктураПересчетаСуммы;
КонецФункции
&НаСервере
Процедура ВыполнитьПересчетСуммДокументаСервер(СтараяВалюта, НоваяВалюта)
Если СтараяВалюта <> НоваяВалюта Тогда
ДатаДокумента = ?(ЗначениеЗаполнено(Объект.Дата), Объект.Дата, ТекущаяДатаСеанса());
СтруктурыКурсов = ВзаиморасчетыСервер.КурсыВалютДляПересчета(ЭтотОбъект, СтараяВалюта, НоваяВалюта, ВалютаРегламентированногоУчета, ДатаДокумента);
СтруктураКурсовСтаройВалюты = СтруктурыКурсов.СтруктураКурсовСтаройВалюты;
СтруктураКурсовНовойВалюты = СтруктурыКурсов.СтруктураКурсовНовойВалюты;
ПараметрыПересчета = Ценообразование.ПараметрыПересчетаСуммТаблицыВВалюту(Объект.ЦенаВключаетНДС, СтараяВалюта, НоваяВалюта);
ПараметрыПересчета.СтруктураКурсовСтаройВалюты = СтруктураКурсовСтаройВалюты;
ПараметрыПересчета.СтруктураКурсовНовойВалюты = СтруктураКурсовНовойВалюты;
Ценообразование.ПересчитатьСуммыТаблицыВВалюту(Объект.Товары, ПараметрыПересчета);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьПодчиненныеСвойстваПоСтатистике(ИмяРеквизитаРодителя)
ЗаполнениеОбъектовПоСтатистике.ЗаполнитьПодчиненныеРеквизитыОбъекта(Объект, ИмяРеквизитаРодителя);
КонецПроцедуры
&НаКлиенте
Процедура ВопросПользователюПередЗаполнениемЦенПоСоглашению(ОписаниеОповещения)
Если Объект.Товары.Количество() = 0
Или Не ЗначениеЗаполнено(Объект.Соглашение) Тогда
ВыполнитьОбработкуОповещения(ОписаниеОповещения, Ложь);
Возврат;
КонецЕсли;
ТекстВопроса = НСтр("ru='Перезаполнить цены по соглашению?'");
ВариантыОтветов = Новый СписокЗначений;
ВариантыОтветов.Добавить(Истина, НСтр("ru='Перезаполнить'"));
ВариантыОтветов.Добавить(Ложь, НСтр("ru='Не перезаполнять'"));
ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, ВариантыОтветов);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьДоговорПоУмолчанию()
ДопПараметры = ЗакупкиСервер.ДополнительныеПараметрыОтбораДоговоров();
ДопПараметры.ВалютаВзаиморасчетов = Объект.ВалютаВзаиморасчетов;
ДопПараметры.Налогообложение = Объект.НалогообложениеНДС;
Если ИспользоватьНаправленияДеятельности Тогда
ДопПараметры.НаправлениеДеятельности = Объект.НаправлениеДеятельности;
КонецЕсли;
ДоговорПоУмолчанию = ЗакупкиСервер.ПолучитьДоговорПоУмолчанию(Объект, ХозяйственнаяОперацияДоговора, ДопПараметры);
Если ДоговорПоУмолчанию <> Договор Тогда
Объект.Договор = ДоговорПоУмолчанию;
ДоговорПриИзмененииСервер();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПодоборТоваровПринятыхНаОтветственноеХранение()
Отказ = Ложь;
ОчиститьСообщения();
Если Не ЗначениеЗаполнено(Объект.Партнер) Тогда
ТекстОшибки = ОбщегоНазначенияКлиентСервер.ТекстОшибкиЗаполнения( , , Элементы.Партнер.Заголовок);
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстОшибки, Объект.Ссылка, "Объект.Партнер", "", Отказ);
КонецЕсли;
Если Не ЗначениеЗаполнено(Объект.Организация) Тогда
ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Поле ""Организация"" не заполнено'"), Объект.Ссылка,
"Объект.Организация", "", Отказ);
КонецЕсли;
Если Не ЗначениеЗаполнено(Объект.Договор) Тогда
ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Поле ""Договор"" не заполнено'"), Объект.Ссылка,
"Объект.Договор", "", Отказ);
КонецЕсли;
Если Не Отказ Тогда
АдресТоваров = ПоместитьТоварыВХранилищеДляПодбораПринятогоТовара();
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Ссылка", Объект.Ссылка);
ПараметрыФормы.Вставить("Владелец", Объект.Партнер);
ПараметрыФормы.Вставить("Организация", Объект.Организация);
ПараметрыФормы.Вставить("ХозяйственнаяОперация", Объект.ХозяйственнаяОперация);
ПараметрыФормы.Вставить("Договор", Объект.Договор);
ПараметрыФормы.Вставить("АдресТоваровНакладнойВХранилище", АдресТоваров);
ОткрытьФорму("Обработка.ПодборТоваровПринятыхНаОтветственноеХранение.Форма.Форма", ПараметрыФормы, ЭтотОбъект,
УникальныйИдентификатор);
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ПоместитьТоварыВХранилищеДляПодбораПринятогоТовара()
Результат = Объект.Товары.Выгрузить(,
"НомерСтроки, Номенклатура, Характеристика, Назначение, Серия, СтатусУказанияСерий,
|ТипМестаХранения, Склад, Подразделение, Договор,
|Хранитель, Количество");
МассивТипов = Новый Массив;
МассивТипов.Добавить(Тип("СправочникСсылка.Склады"));
МассивТипов.Добавить(Тип("СправочникСсылка.СтруктураПредприятия"));
МассивТипов.Добавить(Тип("СправочникСсылка.ДоговорыКонтрагентов"));
ОписаниеТипов = Новый ОписаниеТипов(МассивТипов);
Результат.Колонки.Добавить("МестоХранения", ОписаниеТипов);
МестаХранения = МестаХранения();
Для Каждого Строка Из Результат Цикл
Если Строка.ТипМестаХранения = МестаХранения.Склад Тогда
Строка.МестоХранения = Строка.Склад;
ИначеЕсли Строка.ТипМестаХранения = МестаХранения.Подразделение Тогда
Строка.МестоХранения = Строка.Подразделение;
ИначеЕсли Строка.ТипМестаХранения = МестаХранения.ДоговорКонтрагента Тогда
Строка.МестоХранения = Строка.Договор;
КонецЕсли;
КонецЦикла;
Результат.Свернуть("Номенклатура, Характеристика, Назначение, Серия, СтатусУказанияСерий, МестоХранения, Хранитель", "Количество");
ОбщегоНазначенияУТ.ПронумероватьТаблицуЗначений(Результат, "НомерСтроки");
Адрес = ПоместитьВоВременноеХранилище(Результат, УникальныйИдентификатор);
Возврат Адрес;
КонецФункции
&НаСервере
Функция ПоместитьТоварыВоВременноеХранилищеСервер()
Возврат ЗакупкиСервер.ПоместитьТоварыВоВременноеХранилище(Объект.Товары);
КонецФункции
&НаСервере
Процедура ЗаполнитьТоварыИзВременногоХранилищаСервер(АдресВоВременномХранилище)
ЗаполнитьПризнакАртикул = Новый Структура("Номенклатура", "Артикул");
ЗаполнитьПризнакТипНоменклатуры = Новый Структура("Номенклатура", "ТипНоменклатуры");
ЗаполнитьПризнакХарактеристикиИспользуются = Новый Структура("Номенклатура", "ХарактеристикиИспользуются");
СтруктураПересчетаСуммы = ПараметрыПересчетаСуммыНДСВСтрокеТЧ(ЭтотОбъект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", ЗаполнитьПризнакАртикул);
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", ЗаполнитьПризнакТипНоменклатуры);
СтруктураДействий.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются",
ЗаполнитьПризнакХарактеристикиИспользуются);
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС",
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект));
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетов");
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
ОбрабатываемыеСтроки = Новый Массив();
ТаблицаТоваров = ПолучитьИзВременногоХранилища(АдресВоВременномХранилище);
Для Каждого ТекСтрока Из ТаблицаТоваров Цикл
Отбор = Новый Структура("НомерСтроки", ТекСтрока.НомерСтроки);
МассивСтрокКоллекции = Объект.Товары.НайтиСтроки(Отбор);
Если МассивСтрокКоллекции.Количество() <> 1 Тогда
Продолжить;
Иначе
СтрокаКоллекции = МассивСтрокКоллекции[0];
КонецЕсли;
ЗаполнитьЗначенияСвойств(СтрокаКоллекции, ТекСтрока, "Номенклатура, Характеристика, Упаковка");
ОбрабатываемыеСтроки.Добавить(СтрокаКоллекции);
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.Товары,
КэшированныеЗначения);
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция МестаХранения()
МестаХранения = Новый Структура;
МестаХранения.Вставить("Склад", ПредопределенноеЗначение("Перечисление.ТипыМестХранения.Склад"));
МестаХранения.Вставить("Подразделение", ПредопределенноеЗначение("Перечисление.ТипыМестХранения.Подразделение"));
МестаХранения.Вставить("ДоговорКонтрагента",
ПредопределенноеЗначение("Перечисление.ТипыМестХранения.ДоговорКонтрагента"));
Возврат МестаХранения;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ПараметрыВыбораСклада(ОткрытиеФормыВыбора = Истина)
Отбор = Новый Структура("ЭтоГруппа", Ложь);
ПараметрыВыбораДанных = Новый Структура("Отбор", Отбор);
Если ОткрытиеФормыВыбора Тогда
ПараметрыВыбораДанных.Вставить("ВыборГруппыСкладов", ИспользованиеГруппИЭлементов.Элементы);
КонецЕсли;
Возврат ПараметрыВыбораДанных;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ПараметрыВыбораПодразделения()
Отбор = Новый Структура("ПроизводственноеПодразделение", Истина);
ПараметрыВыбораДанных = Новый Структура("Отбор", Отбор);
Возврат ПараметрыВыбораДанных;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ПараметрыВыбораДоговора(Партнер, Контрагент, ХозяйственнаяОперация, ИспользоватьВвозТоваровИзТаможенногоСоюза = Ложь)
Отбор = Новый Структура;
ХозОперации = Новый Массив;
ХозОперации.Добавить(ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи"));
ХозОперации.Добавить(ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПроизводствоУПереработчика2_5"));
Если ИспользоватьВвозТоваровИзТаможенногоСоюза Тогда
ХозОперации.Добавить(ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПроизводствоУПереработчикаВСтранахЕАЭС2_5"));
КонецЕсли;
Отбор.Вставить("ХозяйственнаяОперация", ХозОперации);
Отбор.Вставить("Статус", ПредопределенноеЗначение("Перечисление.СтатусыДоговоровКонтрагентов.Действует"));
Отбор.Вставить("ПометкаУдаления", Ложь);
ПараметрыВыбораДанных = Новый Структура;
ПараметрыВыбораДанных.Вставить("Отбор", Отбор);
ПараметрыВыбораДанных.Вставить("РазрешитьВыборПартнера");
Если ЗначениеЗаполнено(Партнер) Тогда
ПараметрыВыбораДанных.Вставить("Партнер", Партнер);
КонецЕсли;
Если ЗначениеЗаполнено(Контрагент) Тогда
ПараметрыВыбораДанных.Вставить("Контрагент", Контрагент);
КонецЕсли;
Возврат ПараметрыВыбораДанных;
КонецФункции
&НаКлиенте
Процедура ОткрытьФормуВыбораМестаХранения(ИмяФормыОткрытия, ПараметрыФормы, ТекущиеДанные)
ПараметрыОповещения = Новый Структура("ТекущиеДанные", ТекущиеДанные);
ОписаниеОповещения = Новый ОписаниеОповещения("ВыборМестаХраненияЗавершение",
ЭтотОбъект,
ПараметрыОповещения);
ОткрытьФорму(ИмяФормыОткрытия, ПараметрыФормы, , , , , ОписаниеОповещения,
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура ВыборМестаХраненияЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
ЗаполнитьМестоХранения(Результат, ДополнительныеПараметры.ТекущиеДанные);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьМестоХранения(МестоХранения, ТекущиеДанные)
МестаХранения = МестаХранения();
ПредставлениеМестаХранения = Строка(МестоХранения);
ЗначенияПоУмолчанию = Новый Структура("Склад, Подразделение, Договор, Хранитель, Контрагент");
ЗаполнитьЗначенияСвойств(ТекущиеДанные, ЗначенияПоУмолчанию);
Если ТекущиеДанные.ТипМестаХранения = МестаХранения.Склад Тогда;
ТекущиеДанные.Склад = МестоХранения;
ИначеЕсли ТекущиеДанные.ТипМестаХранения = МестаХранения.Подразделение Тогда
ТекущиеДанные.Подразделение = МестоХранения;
ИначеЕсли ТекущиеДанные.ТипМестаХранения = МестаХранения.ДоговорКонтрагента Тогда
ТекущиеДанные.Договор = МестоХранения;
РеквизитыДоговора = РеквизитыДоговора(МестоХранения);
ТекущиеДанные.Хранитель = РеквизитыДоговора.Партнер;
ТекущиеДанные.Контрагент = РеквизитыДоговора.Контрагент;
КонецЕсли;
ТекущиеДанные.ПредставлениеМестаХранения = ПредставлениеМестаХранения(ПредставлениеМестаХранения,
Строка(ТекущиеДанные.Хранитель));
ЗаполнитьСтатусыУказанияСерийСервер();
КонецПроцедуры
&НаСервере
Функция РеквизитыДоговора(Договор)
РеквизитыДоговора = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Договор, "Партнер, Контрагент");
Возврат РеквизитыДоговора;
КонецФункции
&НаКлиенте
Процедура ЗаполнитьСтавкуНДСЗавершение(СтавкаНДС, ДополнительныеПараметры) Экспорт
Если СтавкаНДС = Неопределено Тогда
Возврат;
КонецЕсли;
ЗаполнитьСтавкуНДСНаСервере(СтавкаНДС, КэшированныеЗначения);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСтавкуНДСНаСервере(СтавкаНДС, КэшированныеЗначения)
СтруктураПересчетаСуммы = ПараметрыПересчетаСуммыНДСВСтрокеТЧ(ЭтотОбъект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетов");
ВыделенныеСтроки = РаботаСТабличнымиЧастямиКлиентСервер.ЭлементыКоллекции(
Объект.Товары, Элементы.Товары.ВыделенныеСтроки);
Для каждого СтрокаТабличнойЧасти Из ВыделенныеСтроки Цикл
СтрокаТабличнойЧасти.СтавкаНДС = СтавкаНДС;
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ВыделенныеСтроки,
СтруктураДействий,
Объект.Товары,
КэшированныеЗначения);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
КонецПроцедуры
#КонецОбласти
&НаСервере
Процедура ОбновитьЭлементыДополнительныхРеквизитов()
УправлениеСвойствами.ОбновитьЭлементыДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура СвойстваВыполнитьОтложеннуюИнициализацию()
УправлениеСвойствами.ЗаполнитьДополнительныеРеквизитыВФорме(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьЗависимостиДополнительныхРеквизитов()
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПриИзмененииДополнительногоРеквизита(Элемент)
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбработатьЗаписьОбъекта()
ОбщегоНазначенияУТКлиент.ОбработатьЗаписьОбъектаВФорме(ЭтотОбъект, ПараметрыДляЗаписи);
КонецПроцедуры
&НаКлиенте
Процедура ОбработатьРезультатВыбораНоменклатурыПартнера(ВыбранноеЗначение, ДополнительныеПараметры) Экспорт
Если ВыбранноеЗначение = Неопределено Тогда
Возврат;
КонецЕсли;
ДополнительныеПараметры.ТекущаяСтрока.НоменклатураПартнера = ВыбранноеЗначение;
ТоварыНоменклатураПартнераПриИзменении(ДополнительныеПараметры.ЭлементФормы);
КонецПроцедуры
&НаСервере
Процедура ПоместитьРасшифровкуПлатежаВоВременноеХранилище()
ВзаиморасчетыСервер.ПоместитьРасшифровкуПлатежаВоВременноеХранилище(ЭтотОбъект);
КонецПроцедуры
#КонецОбласти