#Область ОписаниеПеременных
&НаКлиенте
Перем КэшированныеЗначения;
&НаКлиенте
Перем ПредыдущиеРеквизитыСтроки;
&НаКлиенте
Перем ТекущиеДанныеИдентификатор;
&НаКлиенте
Перем ПроверкаКонтрагентовПараметрыОбработчикаОжидания Экспорт;
&НаКлиенте
Перем ФормаДлительнойОперации Экспорт;
&НаКлиенте
Перем ПараметрыДляЗаписи Экспорт;
#КонецОбласти
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
УстановитьУсловноеОформление();
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(Объект, ЭтотОбъект);
ИсправлениеДокументов.ПриСозданииНаСервере(ЭтаФорма, Элементы.СтрокаИсправление);
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("Объект", Объект);
ДополнительныеПараметры.Вставить("ИмяЭлементаДляРазмещения", "ГруппаДополнительныеРеквизиты");
ДополнительныеПараметры.Вставить("ОтложеннаяИнициализация", Истина);
УправлениеСвойствами.ПриСозданииНаСервере(ЭтаФорма, ДополнительныеПараметры);
Справочники.Назначения.ФормаДокументаПриСозданииНаСервере(ЭтаФорма);
ОбщегоНазначенияУТ.НастроитьПодключаемоеОборудование(ЭтаФорма);
ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект);
ИспользоватьПартнеровКакКонтрагентов = ПолучитьФункциональнуюОпцию("ИспользоватьПартнеровКакКонтрагентов");
ИспользоватьУпрощеннуюСхемуОплатыВЗакупках = ПолучитьФункциональнуюОпцию("ИспользоватьУпрощеннуюСхемуОплатыВЗакупках");
Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
ПриЧтенииСозданииНаСервере();
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект,ПараметрыУказанияСерий);
Элементы.КартинкаРасхождениеЗаказ.Картинка = БиблиотекаКартинок.ПустаяКартинка;
Элементы.КартинкаРасхождениеЗаказы.Картинка = БиблиотекаКартинок.ПустаяКартинка;
КонецЕсли;
Если Параметры.ЗаполнятьПоОрдеру
ИЛИ Параметры.ЗначенияЗаполнения.Свойство("ЗаполнятьПоОрдеру")
ИЛИ (ЗначениеЗаполнено(Параметры.Основание)
И ТипЗнч(Параметры.Основание) = Тип("Структура")
И Параметры.Основание.Свойство("ЗаполнятьПоОрдеру"))
Тогда
Если ЭтаФорма.ТолькоПросмотр Тогда
ТекстСообщения = НСтр("ru = 'Нельзя перезаполнить документ ""%Документ%"", т.к. установлена дата запрета изменений!'");
ТекстСообщения = СтрЗаменить(ТекстСообщения, "%Документ%", Объект.Ссылка);
ОбщегоНазначения.СообщитьПользователю(ТекстСообщения, Объект.Ссылка);
Иначе
Если Не ПолучитьДанныеПоНаличиюКорректировокИСчетаФактуры(Объект.Ссылка) Тогда
Отказ = Истина;
Иначе
ЗаполнитьПоПриемкеСервер(Ложь);
Модифицированность = Истина;
КонецЕсли;
КонецЕсли;
КонецЕсли;
ЗакупкиСервер.УстановитьРежимВыбораГруппЭлементовСклада(Элементы.Склад);
Если Не ИспользоватьЗаказыПоставщикам Тогда
Элементы.КартинкаОтклонениеЦенЗаказ.Видимость = Ложь;
Элементы.КартинкаОтклонениеЦенЗаказы.Видимость = Ложь;
Элементы.КартинкаРасхождениеЗаказ.Видимость = Ложь;
Элементы.КартинкаРасхождениеЗаказы.Видимость = Ложь;
КонецЕсли;
Договор = Объект.Договор;
Контрагент = Объект.Контрагент;
ИспользуетсяПоступлениеТоваров = ПолучитьФункциональнуюОпцию("ИспользоватьТоварыВПутиОтПоставщиков");
Элементы.ТоварыЗаполнитьСерииПоДаннымПоступленияТоваров.Видимость = ИспользуетсяПоступлениеТоваров;
Если Не Объект.ПоступлениеПоЗаказам Или Не ПравоНаЧтениеЗаказовПоставщику Тогда
Элементы.ТоварыИндексКартинки.Видимость = Ложь;
КонецЕсли;
Если ИспользоватьПоступлениеПоНесколькимЗаказам Тогда
Элементы.ТоварыПодобратьТоварыПоЗаказамОрдерам.Заголовок = НСтр("ru = 'Подобрать товары из заказов'");
КонецЕсли;
Если Не ПолучитьФункциональнуюОпцию("ИспользоватьСкладыВТабличнойЧастиДокументовЗакупки") И Не ПолучитьФункциональнуюОпцию("ИспользоватьПодразделения") Тогда
Элементы.ТоварыГруппаПолучатель.Видимость = Ложь;
ИначеЕсли Не СкладГруппа Тогда
Элементы.ТоварыГруппаПолучатель.Заголовок = НСтр("ru = 'Подразделение-получатель'");
КонецЕсли;
Если КлиентскоеПриложение.ТекущийВариантИнтерфейса() = ВариантИнтерфейсаКлиентскогоПриложения.Версия8_2 Тогда
Элементы.ГруппаИтого.ЦветФона = Новый Цвет();
КонецЕсли;
УстановитьЗаголовокЗаполнитьПоЗаказамОрдерам();
Элементы.ЗакрытьЗаказ.Доступность = ПравоДоступа("Изменение",Метаданные.Документы.ЗаказПоставщику);
Элементы.ЗакрытьЗаказы.Доступность = ПравоДоступа("Изменение",Метаданные.Документы.ЗаказПоставщику);
Элементы.ТоварыПоказатьОтклоненияЦен.Доступность = ПравоНаЧтениеЗаказовПоставщику;
ВзаиморасчетыСервер.ФормаПриСозданииНаСервере(ЭтаФорма);
ФормированиеФискальныхЧековСервер.ФормаПриСозданииНаСервере(ЭтотОбъект);
УстановитьВидимостьКоличестваРНПТ();
ПроверкаКонтрагентов.ПриСозданииНаСервереДокумент(ЭтотОбъект, Параметры);
ПроверкаКонтрагентовВызовСервераПереопределяемыйУТ.ФормаДокументаПриСозданииНаСервере(ЭтотОбъект);
УстановитьДоступностьКомандБуфераОбмена();
ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПриСозданииНаСервере(ЭтаФорма);
ПараметрыЭДОПриСоздании = ОбменСКонтрагентами.ПараметрыПриСозданииНаСервере_ФормаДокумента();
ПараметрыЭДОПриСоздании.Форма = ЭтотОбъект;
ПараметрыЭДОПриСоздании.ДокументССылка = Объект.Ссылка;
ПараметрыЭДОПриСоздании.КонтроллерСостояниеЭДО = Элементы.ДекорацияСостояниеЭДО;
ПараметрыЭДОПриСоздании.ГруппаСостояниеЭДО = Элементы.ГруппаСостояниеЭДО;
ПараметрыЭДОПриСоздании.МестоРазмещенияКоманд = Элементы.ПодменюЭДО;
ОбменСКонтрагентами.ПриСозданииНаСервере_ФормаДокумента(ПараметрыЭДОПриСоздании);
Элементы.ДекорацияСостояниеЭДО.Видимость = ПолучитьФункциональнуюОпцию("ИспользоватьОбменЭД");
ПараметрыВыбораСтатейИАналитик = Документы.ПриобретениеТоваровУслуг.ПараметрыВыбораСтатейИАналитик(Объект.ХозяйственнаяОперация);
ДоходыИРасходыСервер.ПриСозданииНаСервере(ЭтотОбъект, ПараметрыВыбораСтатейИАналитик);
СервисДоставки.ПриСозданииНаСервере(ЭтаФорма);
СобытияФорм.ПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка);
ПараметрыГиперссылки = РаботаСФайлами.ГиперссылкаФайлов();
ПараметрыГиперссылки.Размещение = "КоманднаяПанель";
РаботаСФайлами.ПриСозданииНаСервере(ЭтотОбъект, ПараметрыГиперссылки);
УчетОригиналовПервичныхДокументов.ПриСозданииНаСервере_ФормаДокумента(ЭтотОбъект);
ВариантОформленияДоговораЗакупок = ЗакупкиСервер.ПолучитьВариантОформленияДоговораЗакупок(Объект.Договор);
УчетПрослеживаемыхТоваровЛокализация.УстановитьЗаголовокНомерГТД(Элементы, "ТоварыНомерГТД");
УчетНДСУП.УстановитьВидимостьКомандыЗаполнитьСтавкуНДС(ЭтотОбъект);
ЕстьПравоНаДобавлениеКорректировки = ЕстьПравоДобавленияКорректировок();
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
УправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
ДатыЗапретаИзменения.ОбъектПриЧтенииНаСервере(ЭтаФорма, ТекущийОбъект);
ИсправлениеДокументов.ПриЧтенииНаСервере(ЭтаФорма, Элементы.СтрокаИсправление);
ПриЧтенииСозданииНаСервере();
ПараметрыВыбораСтатейИАналитик = Документы.ПриобретениеТоваровУслуг.ПараметрыВыбораСтатейИАналитик(Объект.ХозяйственнаяОперация);
ДоходыИРасходыСервер.ПриЧтенииНаСервере(ЭтотОбъект, ПараметрыВыбораСтатейИАналитик);
ВзаиморасчетыСервер.ФормаПриЧтенииНаСервере(ЭтаФорма);
ФормированиеФискальныхЧековСервер.ФормаПриЧтенииНаСервере(ЭтотОбъект);
УправлениеСвойствами.ПриЧтенииНаСервере(ЭтаФорма, ТекущийОбъект);
СобытияФорм.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
ПараметрыЭДОПриСоздании = ОбменСКонтрагентами.ПараметрыПриЧтенииНаСервере_ФормаДокумента();
ПараметрыЭДОПриСоздании.Форма = ЭтотОбъект;
ПараметрыЭДОПриСоздании.ДокументСсылка = Объект.Ссылка;
ПараметрыЭДОПриСоздании.МестоРазмещенияКоманд = Элементы.ПодменюЭДО;
ПараметрыЭДОПриСоздании.КонтроллерСостояниеЭДО = Элементы.ДекорацияСостояниеЭДО;
ПараметрыЭДОПриСоздании.ГруппаСостояниеЭДО = Элементы.ГруппаСостояниеЭДО;
ОбменСКонтрагентами.ПриЧтенииНаСервере_ФормаДокумента(ПараметрыЭДОПриСоздании);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаВыбора(РезультатВыбора, ИсточникВыбора)
Если ИсточникВыбора.ИмяФормы = "Обработка.ЖурналДокументовЗакупки.Форма.ФормаПодбораТоваровИзЗаказа" Тогда
ПолучитьТоварыИзХранилища(РезультатВыбора.АдресТоваровВХранилище);
ИначеЕсли ИсточникВыбора.ИмяФормы = "Обработка.ПодборТоваровВДокументЗакупки.Форма.Форма" Тогда
ОбработкаВыбораПодборНаСервере(РезультатВыбора);
ИначеЕсли УчетНДСУПКлиент.ЗаконченоРедактированиеСчетаФактурыПолученного(РезультатВыбора, ИсточникВыбора) Тогда
ОбновитьТекстДокументыНаОсновании();
ИначеЕсли ПрослеживаемостьФормыКлиентПереопределяемый.ЗаконченоРедактированиеУведомленияОВвозеПрослеживаемыхТоваров(ИсточникВыбора) Тогда
ОбновитьТекстДокументыНаОсновании();
ИначеЕсли ИсточникВыбора.ИмяФормы = "Обработка.ПодборМногооборотнойТары.Форма.Форма" Тогда
ЗаполнитьМногооборотнуюТаруИзХранилищаСервер(РезультатВыбора.АдресМногооборотнойТарыВХранилище);
МногооборотнаяТараКлиент.ОповеститьПользователяОЗаполненииМногооборотнойТарой();
ИначеЕсли НоменклатураКлиент.ЭтоУказаниеСерий(ИсточникВыбора) Тогда
НоменклатураКлиент.ОбработатьУказаниеСерии(ЭтотОбъект, ПараметрыУказанияСерий, РезультатВыбора);
ИначеЕсли ЗакупкиКлиент.ЭтоПодборНомераГТД(ИсточникВыбора) Тогда
ОбработатьПодборНомераГТД(РезультатВыбора);
ИначеЕсли ИсточникВыбора.ИмяФормы = "Справочник.СтруктураПредприятия.Форма.ФормаВыбора" Тогда
ВыделенныеСтроки = Элементы.Товары.ВыделенныеСтроки;
Для Каждого Строка Из ВыделенныеСтроки Цикл
ДанныеСтроки = Объект.Товары.НайтиПоИдентификатору(Строка);
Если (ДанныеСтроки.ТипНоменклатуры = ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Товар") Или
ДанныеСтроки.ТипНоменклатуры = ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.МногооборотнаяТара"))
И (Не ДанныеСтроки.СписатьНаРасходы Или ЗначениеЗаполнено(ДанныеСтроки.Назначение)) Тогда
Продолжить;
КонецЕсли;
ДанныеСтроки.Подразделение = РезультатВыбора;
КонецЦикла;
ИначеЕсли ИсточникВыбора.ИмяФормы = "ОбщаяФорма.РеквизитыПечатиАвансовогоОтчета" Тогда
Если РезультатВыбора <> Неопределено Тогда
ЗаполнитьЗначенияСвойств(Объект, РезультатВыбора);
КонецЕсли;
КонецЕсли;
Если Окно <> Неопределено Тогда
Окно.Активизировать();
КонецЕсли;
УстановитьПризнакЗаполненияСклада();
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если УправлениеСвойствамиКлиент.ОбрабатыватьОповещения(ЭтаФорма, ИмяСобытия, Параметр) Тогда
ОбновитьЭлементыДополнительныхРеквизитов();
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
КонецЕсли;
Если Источник = "ПодключаемоеОборудование" И ВводДоступен() Тогда
Если ИмяСобытия = "ScanData" И МенеджерОборудованияУТКлиент.ЕстьНеобработанноеСобытие() Тогда
ОбработатьШтрихкоды(МенеджерОборудованияУТКлиент.ПреобразоватьДанныеСоСканераВМассив(Параметр));
КонецЕсли;
КонецЕсли;
Если Источник = "ПодключаемоеОборудование"
И ИмяСобытия = "НеизвестныеШтрихкоды"
И Параметр.ФормаВладелец = УникальныйИдентификатор Тогда
КэшированныеЗначения.Штрихкоды.Очистить();
ДанныеШтрихкодов = Новый Массив;
Для Каждого ПолученныйШтрихкод Из Параметр.ПолученыНовыеШтрихкоды Цикл
ДанныеШтрихкодов.Добавить(ПолученныйШтрихкод);
КонецЦикла;
Для Каждого ПолученныйШтрихкод Из Параметр.ЗарегистрированныеШтрихкоды Цикл
ДанныеШтрихкодов.Добавить(ПолученныйШтрихкод);
КонецЦикла;
ОбработатьШтрихкоды(ДанныеШтрихкодов);
КонецЕсли;
Если ВзаиморасчетыКлиент.НуженВызовОбработкиОповещения(ЭтаФорма, ИмяСобытия, Параметр) Тогда
ИзмененаОплатаСервер(ИмяСобытия, Параметр, Источник);
КонецЕсли;
Если ИмяСобытия = "ОбновитьДокументИБПослеЗаполнения" И Параметр.Найти(Объект.Ссылка) <> Неопределено Тогда
ЭтаФорма.Прочитать();
ИначеЕсли ИмяСобытия = "ОбновитьДокументИБПослеЗаполненияИзФайла" И Параметр.Найти(Объект.Ссылка) <> Неопределено Тогда
ПриЧтенииСозданииНаСервере();
ИначеЕсли ИмяСобытия = "ЗакрытиеЗаказов" И Параметр = Объект.Ссылка Тогда
ОбработатьОповещениеЗакрытияЗаказов();
КонецЕсли;
Если ИмяСобытия = "ИзмененРеквизитЗависящийОтСтатуса"
И Параметр.УникальныйИдентификатор = УникальныйИдентификатор Тогда
Если Объект.Согласован Тогда
Объект.Согласован = Ложь;
КонецЕсли;
ПодключитьОбработчикОжидания("Подключаемый_ПриИзмененииРеквизитаЗависящегоОтСтатуса", 0.1, Истина);
КонецЕсли;
Если ИмяСобытия = "Запись_СоглашенияСПоставщиками" Тогда
УстановитьДоступностьСоглашений();
ОбновитьСводнуюИнформациюПоДоставке();
КонецЕсли;
Если ИмяСобытия = "КопированиеСтрокВБуферОбмена" Тогда
УстановитьДоступностьКомандБуфераОбменаНаКлиенте();
КонецЕсли;
Если ПрослеживаемостьФормыКлиентПереопределяемый.ОбрабатыватьОповещения(ЭтаФорма, ИмяСобытия, Параметр, Источник) Тогда
ОбновитьТекстДокументыНаОсновании();
КонецЕсли;
Если ИмяСобытия = "ПроверитьКоличествоВДокументе"
И ТипЗнч(Источник) = Тип("ФормаКлиентскогоПриложения")
И Источник.УникальныйИдентификатор = УникальныйИдентификатор Тогда
ПроверитьКоличествоВДокументеКлиент();
КонецЕсли;
ПараметрыОповещения = ОбменСКонтрагентамиКлиент.ПараметрыОповещенияЭДО_ФормаДокумента();
ПараметрыОповещения.Форма = ЭтотОбъект;
ПараметрыОповещения.ДокументСсылка = Объект.Ссылка;
ПараметрыОповещения.КонтроллерСостояниеЭДО = Элементы.ДекорацияСостояниеЭДО;
ПараметрыОповещения.ГруппаСостояниеЭДО = Элементы.ГруппаСостояниеЭДО;
ОбменСКонтрагентамиКлиент.ОбработкаОповещения_ФормаДокумента(ИмяСобытия, Параметр, Источник, ПараметрыОповещения);
ИсправлениеДокументовКлиент.ОбработкаОповещения(ЭтаФорма, ИмяСобытия, Параметр, Источник);
СобытияФормКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия, Параметр, Источник);
РаботаСФайламиКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия);
Если ИмяСобытия = "Запись_КорректировкаПриобретения"
И ТипЗнч(Параметр) = Тип("Структура")
И Параметр.Свойство("ДокументОснование")
И Параметр.ДокументОснование = Объект.Ссылка Тогда
ОбновитьПризнакЕстьКорректировки();
КонецЕсли;
УчетОригиналовПервичныхДокументовКлиент.ОбработчикОповещенияФормаДокумента(ИмяСобытия,ЭтотОбъект);
Если ИмяСобытия = "ПриИзмененииДоговора"
И Источник = ЭтотОбъект Тогда
Модифицированность = Истина;
Если ЗначениеЗаполнено(Объект.Ссылка) Тогда
Подключаемый_ПриИзменении_УстановитьДоступностьЭлементовПоСтатусуСервер(Элементы[Параметр]);
Иначе
ДоговорПриИзменении(Элементы[Параметр]);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаЗаписиНового(НовыйОбъект, Источник, СтандартнаяОбработка)
Если ЗакупкиКлиент.ЭтоУказаниеНомераГТД(Источник) Тогда
Действия = Новый Структура;
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекПересчетаРеквизитовТабличнойЧасти(
Объект,
Действия,
"Склад",
Истина);
ЗакупкиКлиент.ОбработатьУказаниеНомераГТД(ЭтотОбъект, НовыйОбъект, , , Действия);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаНавигационнойСсылки(НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СобытияФормКлиент.ОбработкаНавигационнойСсылки(ЭтотОбъект, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка);
КонецПроцедуры
&НаСервере
Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
Если Справочники.СоглашенияСПоставщиками.СоглашениеИспользуетсяПриПриемке(Объект.ВариантПриемкиТоваров)
И ОрдернаяСхемаПриПриемке Тогда
ТекстОшибки = НСтр("ru = 'Выбрано соглашение с таким вариантом приемки, при котором приобретение будет проводиться в рамках соглашения в целом.
|Возможность создания документов с такими соглашениями оставлена для того, что бы закрыть уже начатые движения по соглашениям.
|Создавать новые документы с такими соглашениями не рекомендуется.'");
ОбщегоНазначения.СообщитьПользователю(ТекстОшибки, , "Соглашение");
КонецЕсли;
УправлениеСвойствами.ОбработкаПроверкиЗаполнения(ЭтаФорма, Отказ, ПроверяемыеРеквизиты);
ПриобретениеТоваровУслугЛокализация.ОбработкаПроверкиЗаполненияНаСервере(ЭтотОбъект, Отказ, ПроверяемыеРеквизиты);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
СобытияФормКлиент.ПередЗаписью(ЭтотОбъект, Отказ, ПараметрыЗаписи);
Если НеВыполнятьПроверкуПередЗаписью Тогда
НеВыполнятьПроверкуПередЗаписью = Ложь;
Возврат;
КонецЕсли;
Если ПараметрыЗаписи.РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда
Отказ = Истина;
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ПараметрыЗаписи", ПараметрыЗаписи);
МногооборотнаяТараКлиент.ПредложитьПодобратьМногооборотнуюТару(
ЭтаФорма,
"Товары",
"Номенклатура,Характеристика,Количество,Склад",
Новый ОписаниеОповещения("ПередЗаписьюПредложитьПодобратьМногооборотнуюТаруЗавершение", ЭтотОбъект, ДополнительныеПараметры));
КонецЕсли;
ЗаполнитьЗаказПоставщикуВСтроках();
ОбщегоНазначенияУТКлиент.ЗаписатьОбъектПриНеобходимости(ЭтотОбъект, ПараметрыЗаписи, Отказ);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗаписьюПредложитьПодобратьМногооборотнуюТаруЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат <> КодВозвратаДиалога.Нет Тогда
ЗаполнитьЗаказПоставщикуВСтроках();
ПередЗаписьюНаКлиентеСервер();
ОбщегоНазначенияУТКлиент.ЗаписатьОбъектПриНеобходимости(ЭтотОбъект, ДополнительныеПараметры.ПараметрыЗаписи,,Истина);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаКлиентеСервер()
ВзаиморасчетыВызовСервера.ФормаПередЗаписьюНаКлиентеСервер(ЭтаФорма);
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
УправлениеСвойствами.ПередЗаписьюНаСервере(ЭтаФорма, ТекущийОбъект);
ПроверкаКонтрагентов.ПередЗаписьюНаСервереДокумент(ЭтотОбъект, ТекущийОбъект);
ВзаиморасчетыСервер.ПередЗаписьюНаСервере(ЭтаФорма, ТекущийОбъект);
МодификацияКонфигурацииПереопределяемый.ПередЗаписьюНаСервере(ЭтаФорма, Отказ, ТекущийОбъект, ПараметрыЗаписи);
ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПередЗаписьюНаСервере(ЭтаФорма, ТекущийОбъект, ПараметрыЗаписи);
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
ПараметрыЗаписи.Вставить("КлючиДокументаОповещение", РаботаСЖурналамиДокументовКлиент.ПолучитьПараметрыКлючаПоДокументу(
Объект.Ссылка, Объект.Дата, Объект.ХозяйственнаяОперация));
Оповестить("Запись_ПриобретениеТоваровУслуг", ПараметрыЗаписи, Объект.Ссылка);
ВзаиморасчетыКлиент.ФормаПослеЗаписи(ЭтаФорма);
СобытияФормКлиент.ПослеЗаписи(ЭтотОбъект, ПараметрыЗаписи);
ОбщегоНазначенияУТКлиент.ВыполнитьДействияПослеЗаписи(ЭтаФорма, Объект, ПараметрыЗаписи);
ОбменСКонтрагентамиКлиент.ПослеЗаписи_ФормаДокумента(ЭтаФорма, ПараметрыЗаписи);
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда
МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент");
МодульПодключаемыеКомандыКлиент.ПослеЗаписи(ЭтотОбъект, Объект, ПараметрыЗаписи);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
УправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
УстановитьДоступностьЭлементовПоСтатусуСервер();
СтруктураНаименованийТабличныхЧастей = Новый Структура("Товары");
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре(СтруктураНаименованийТабличныхЧастей);
МногооборотнаяТараСервер.ОбновитьПризнакБезВозвратнойТары(Объект.Товары, Объект.ВернутьМногооборотнуюТару);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
ОбновитьОбязательностьСкладаВТЧ();
ВзаиморасчетыСервер.ФормаПослеЗаписиНаСервере(ЭтаФорма, ТекущийОбъект.ДополнительныеСвойства);
ЗаполнитьСлужебныеРеквизитыПоНазначениюВТЧ();
ПараметрыПослеЗаписи = ОбменСКонтрагентами.ПараметрыПослеЗаписиНаСервере();
ПараметрыПослеЗаписи.Форма = ЭтотОбъект;
ПараметрыПослеЗаписи.ДокументСсылка = Объект.Ссылка;
ПараметрыПослеЗаписи.КонтроллерСостояниеЭДО = Элементы.ДекорацияСостояниеЭДО;
ПараметрыПослеЗаписи.ГруппаСостояниеЭДО = Элементы.ГруппаСостояниеЭДО;
ОбменСКонтрагентами.ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи, ПараметрыПослеЗаписи);
ЗаполнитьЦеныНоменклатурыЗаказов();
ДоходыИРасходыСервер.ПослеЗаписиНаСервере(ЭтотОбъект);
ЗакупкиСервер.ЗаполнитьСлужебныеРеквизитыНомераГТД(Объект.Товары);
ПроверкаКонтрагентов.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект);
ОбновитьТекстДокументыНаОсновании();
Если Объект.Проведен
И Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ЗакупкаЧерезПодотчетноеЛицо Тогда
ДенежныеСредстваСервер.ПереоценитьДенежныеСредстваУПодотчетныхЛиц(Объект.Организация, Объект.Дата, Объект.ПодотчетноеЛицо);
КонецЕсли;
ФормированиеФискальныхЧековСервер.ФормаПриИзмененииРеквизитов(ЭтотОбъект);
РазблокироватьДанныеФормыДляРедактирования();
СобытияФорм.ПослеЗаписиНаСервере(ЭтаФорма, ТекущийОбъект, ПараметрыЗаписи);
ОбеспечениеВДокументахСервер.ПроверитьЗапуститьФоновоеЗаданиеРаспределенияЗапасов();
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
ПредыдущиеРеквизитыСтроки = Новый Структура(
"НоменклатураПартнера,
|Номенклатура,
|Характеристика,
|Назначение,
|Упаковка,
|Количество,
|КоличествоУпаковок,
|Склад,
|ТипНоменклатуры,
|ХарактеристикиИспользуются,
|ЗаказПоставщику,
|КодСтроки,
|СписатьНаРасходы");
МенеджерОборудованияКлиент.НачатьПодключениеОборудованиеПриОткрытииФормы(Неопределено, ЭтаФорма, "СканерШтрихкода");
ПроверкаКонтрагентовКлиент.ПриОткрытииДокумент(ЭтотОбъект);
ОбменСКонтрагентамиКлиент.ПриОткрытии(ЭтотОбъект);
ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
РаботаСФайламиКлиент.ПриОткрытии(ЭтотОбъект, Отказ);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка)
ПринудительноЗакрытьФорму = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ПриЗакрытии()
МенеджерОборудованияКлиент.НачатьОтключениеОборудованиеПриЗакрытииФормы(Неопределено, ЭтаФорма);
КонецПроцедуры
&НаСервере
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
ПроверкаКонтрагентов.ПриЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура ГруппаСтраницыПриСменеСтраницы(Элемент, ТекущаяСтраница)
Если ТекущаяСтраница.Имя = "ГруппаДополнительно"
И Не ЭтотОбъект.ПараметрыСвойств.ВыполненаОтложеннаяИнициализация Тогда
СвойстваВыполнитьОтложеннуюИнициализацию();
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
КонецЕсли;
Если ТекущаяСтраница.Имя = "ГруппаОсновное" Тогда
ВзаиморасчетыКлиент.ОбновитьТекстГиперссылкиЭтапыОплаты(ЭтаФорма);
ВзаиморасчетыКлиентСервер.ОбновитьТекстГиперссылкиВалюты(ЭтаФорма);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СоглашениеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ДополнительныеОтборы = Новый Структура;
Если ХозяйственныеОперацииРаздельнойЗакупки().Найти(Объект.ХозяйственнаяОперация) <> Неопределено Тогда
ДополнительныеОтборы.Вставить("ИспользуютсяДоговорыКонтрагентов", Истина);
КонецЕсли;
ЗакупкиКлиент.НачалоВыбораСоглашенияСПоставщиком(
Элемент,
СтандартнаяОбработка,
Объект.Партнер,
Объект.Соглашение,
Объект.Дата,
ДополнительныеОтборы);
КонецПроцедуры
&НаКлиенте
Процедура СоглашениеАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)
Если ХозяйственныеОперацииРаздельнойЗакупки().Найти(Объект.ХозяйственнаяОперация) <> Неопределено Тогда
ПараметрыПолученияДанных.Отбор.Вставить("ИспользуютсяДоговорыКонтрагентов", Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПартнерПриИзменении(Элемент)
Если Не ЗначениеЗаполнено(Объект.Партнер) Тогда
Объект.Соглашение = ПредопределенноеЗначение("Справочник.СоглашенияСПоставщиками.ПустаяСсылка");
ДоставкаТоваровКлиентСервер.ОчиститьРеквизитыДоставки(Элементы,Объект);
ПартнерОчисткаСервер();
Возврат;
КонецЕсли;
ПартнерПриИзмененииСервер();
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("Элемент", Элемент);
ЦеныПредприятияЗаполнениеКлиент.ЗадатьВопросПересчетаЦеныПриИзмененииДаты(Объект,
Новый ОписаниеОповещения("ПартнерПриИзмененииВопросЗавершение", ЭтотОбъект, ДополнительныеПараметры));
КонецПроцедуры
&НаКлиенте
Процедура ПартнерПриИзмененииВопросЗавершение(ОтветНаВопрос, ДополнительныеПараметры) Экспорт
Если ЗначениеЗаполнено(Объект.Соглашение) Тогда
Если НЕ ОтветНаВопрос = КодВозвратаДиалога.Отмена И ОтветНаВопрос Тогда
ТекстОшибки = "";
ЦеныРассчитаны = ЗаполнитьЦеныПоСоглашениюСервер(Истина,ТекстОшибки);
ЗакупкиКлиент.ОповеститьОбОкончанииЗаполненияЦенПоСоглашению(ЦеныРассчитаны, ТекстОшибки);
КонецЕсли;
ЗакупкиКлиент.ОповеститьОбОкончанииЗаполненияУсловийЗакупокПоУмолчанию();
КонецЕсли;
ПроверкаКонтрагентовКлиент.ЗапуститьПроверкуКонтрагентовВДокументе(ЭтотОбъект, ДополнительныеПараметры.Элемент);
КонецПроцедуры
&НаСервере
Процедура КонтрагентПриИзмененииСервер()
НаправлениеДеятельностиСтарое = Объект.НаправлениеДеятельности;
ЗакупкиСервер.УстановитьДоступностьДоговора(
Объект,
Элементы.Договор.Доступность,
Элементы.Договор.Видимость,
Объект.Договор);
Если ЗначениеЗаполнено(Объект.Контрагент) Тогда
ЗаполнитьДоговорПоУмолчанию();
Если НЕ (ЗначениеЗаполнено(Объект.БанковскийСчетКонтрагента) И Контрагент = Объект.Контрагент) Тогда
Объект.БанковскийСчетКонтрагента = ПолучитьБанковскийСчетКонтрагентаПоУмолчаниюСервер(Объект.Контрагент);
КонецЕсли;
КонецЕсли;
Если ИспользоватьНаправленияДеятельности Тогда
НаправленияДеятельностиСервер.ЗаполнитьНаправлениеПоУмолчанию(Объект.НаправлениеДеятельности, Объект.Соглашение, Объект.Договор);
КонецЕсли;
ПриИзмененииНаправленияДеятельностиСервер();
ЗаполнитьНалогообложениеНДСЗакупки();
НалогообложениеНДСПриИзмененииСервер();
ЗаполнитьПодчиненныеСвойстваПоСтатистике("Контрагент");
Если НаправлениеДеятельностиСтарое <> Объект.НаправлениеДеятельности Тогда
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
КонецЕсли;
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, "Контрагент");
ФормированиеФискальныхЧековСервер.ФормаПриИзмененииРеквизитов(ЭтотОбъект);
Контрагент = Объект.Контрагент;
ЗакупкиСервер.ЗаполнитьСписокВыбораНаименованиеВходящегоДокумента(ЭтотОбъект, Объект.Контрагент);
ПриИзмененииКлючевыхРеквизитовСостояниеЭДО();
ИсходныйВидКонтрагента = КонтрагентЮрФизЛицо;
КонтрагентЮрФизЛицо = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Контрагент, "ЮрФизЛицо");
Если ИсходныйВидКонтрагента <> КонтрагентЮрФизЛицо Тогда
ДенежныеСредстваСерверЛокализация.ЗаполнитьПризнакЗакупкиУСамозанятого(ЭтотОбъект);
ОперацияССамозанятымПриИзмененииНаСервере();
КонецЕсли;
ДенежныеСредстваСерверЛокализация.НастроитьЭлементыОперацииССамозанятым(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура КонтрагентПриИзменении(Элемент)
КонтрагентПриИзмененииСервер();
ПроверкаКонтрагентовКлиент.ЗапуститьПроверкуКонтрагентовВДокументе(ЭтотОбъект, Элемент);
КонецПроцедуры
&НаКлиенте
Процедура ГрузоотправительПриИзменении(Элемент)
Если ЗначениеЗаполнено(Объект.Грузоотправитель) Тогда
Объект.БанковскийСчетГрузоотправителя = ПолучитьБанковскийСчетКонтрагентаПоУмолчаниюСервер(Объект.Грузоотправитель);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОрганизацияПриИзмененииСервер()
ВалютаРегламентированногоУчета = ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(Объект.Организация);
НаправлениеДеятельностиСтарое = Объект.НаправлениеДеятельности;
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтотОбъект, "Организация");
Если Объект.ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.ЗакупкаЧерезПодотчетноеЛицо Тогда
ЗакупкиСервер.УстановитьДоступностьДоговора(
Объект,
Элементы.Договор.Доступность,
Элементы.Договор.Видимость,
Объект.Договор);
КонецЕсли;
Если ЗначениеЗаполнено(Объект.Организация) Тогда
ЗаполнитьДоговорПоУмолчанию();
Если ИспользоватьНаправленияДеятельности Тогда
НаправленияДеятельностиСервер.ЗаполнитьНаправлениеПоУмолчанию(Объект.НаправлениеДеятельности, Объект.Соглашение, Объект.Договор);
КонецЕсли;
ЗаполнитьВидДеятельностиНДС();
ЗаполнитьНалогообложениеНДСЗакупки();
НалогообложениеНДСПриИзмененииСервер();
ДенежныеСредстваСервер.ПроверитьЗаполнитьБанковскийСчетОрганизацииПоВладельцу(Объект.Организация, Объект.БанковскийСчетОрганизации, , Объект.НаправлениеДеятельности);
КонецЕсли;
ЗаполнитьПодчиненныеСвойстваПоСтатистике("Организация");
ОтветственныеЛицаСервер.УстановитьМенеджера(
Объект, ЗакупкиСервер.ДокументОснование(Объект, "ПоступлениеПоЗаказам, ЗаказПоставщику, Товары.ЗаказПоставщику"));
ОтветственныеЛицаСервер.ПриИзмененииСвязанныхРеквизитовДокумента(Объект);
ПриИзмененииНаправленияДеятельностиСервер();
Если НаправлениеДеятельностиСтарое <> Объект.НаправлениеДеятельности Тогда
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
КонецЕсли;
Объект.АвансовыйОтчет = Неопределено;
ОбновитьТекстАвансовыйОтчет();
ПриИзмененииКлючевыхРеквизитовСостояниеЭДО();
ПересчитатьКоличествоРНПТ();
ДенежныеСредстваСерверЛокализация.НастроитьЭлементыОперацииССамозанятым(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ОрганизацияПриИзменении(Элемент)
ОрганизацияПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура СоглашениеПриИзменении(Элемент)
ЦеныПредприятияЗаполнениеКлиент.ЗадатьВопросПересчетаЦеныПриИзмененииДаты(Объект,
Новый ОписаниеОповещения("СоглашениеПриИзмененииВопросЗавершение", ЭтотОбъект));
КонецПроцедуры
&НаКлиенте
Процедура СоглашениеПриИзмененииВопросЗавершение(ОтветНаВопрос, ДополнительныеПараметры) Экспорт
СоглашениеПриИзмененииСервер(
ЗначениеЗаполнено(Объект.Соглашение)
И Объект.Товары.Количество() > 0
И НЕ ОтветНаВопрос = КодВозвратаДиалога.Отмена
И ОтветНаВопрос);
Если ЗначениеЗаполнено(Объект.Соглашение) Тогда
ЗакупкиКлиент.ОповеститьОбОкончанииЗаполненияУсловийЗакупок();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДоговорСоздание(Элемент, СтандартнаяОбработка)
ЗакупкиКлиент.ОткрытьФормуСозданияДоговора(ЭтотОбъект, Элемент, "Объект.Договор", Объект.Партнер, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ДоговорПриИзменении(Элемент)
ДоговорПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура ХозяйственнаяОперацияПриИзменении(Элемент)
ХозяйственнаяОперацияПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура НалогообложениеНДСПриИзменении(Элемент)
НалогообложениеНДСПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура ЦенаВключаетНДСПриИзменении(Элемент)
ЦенаВключаетНДСПриИзмененииСервер(КэшированныеЗначения);
КонецПроцедуры
&НаКлиенте
Процедура СкладПриИзменении(Элемент)
Если Склад <> Объект.Склад Тогда
ПредыдущееЗначениеСкладГруппа = СкладГруппа;
Если НеобходимВопросОбОчисткеСклада() Тогда
Если СкладГруппа Тогда
ТекстВопроса = НСтр("ru='Строки по заказу, в которых склад не входит в группу складов ""%Склад%"" будут удалены из списка ""Товары"". Продолжить?'");
Иначе
ТекстВопроса = НСтр("ru='Строки по заказу, в которых склад отличается от ""%Склад%"" будут удалены из списка ""Товары"". Продолжить?'");
КонецЕсли;
ТекстВопроса = СтрЗаменить(ТекстВопроса, "%Склад%", Объект.Склад);
ПоказатьВопрос(Новый ОписаниеОповещения("СкладПриИзмененииЗавершение", ЭтотОбъект, Новый Структура("ПредыдущееЗначениеСкладГруппа", ПредыдущееЗначениеСкладГруппа)), ТекстВопроса, РежимДиалогаВопрос.ДаНет);
Возврат;
КонецЕсли;
СкладПриИзмененииСервер();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СкладПриИзмененииЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
ПредыдущееЗначениеСкладГруппа = ДополнительныеПараметры.ПредыдущееЗначениеСкладГруппа;
Ответ = РезультатВопроса;
Если Ответ = КодВозвратаДиалога.Нет Тогда
Объект.Склад = Склад;
СкладГруппа = ПредыдущееЗначениеСкладГруппа;
Возврат;
КонецЕсли;
СкладПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура ДатаПриИзменении(Элемент)
ПересчитыватьЦены = Ложь;
Если Не Объект.ПоступлениеПоЗаказам Тогда
Оповещение = Новый ОписаниеОповещения("ДатаПриИзмененииЗавершение", ЭтотОбъект);
ЦеныПредприятияЗаполнениеКлиент.ЗадатьВопросПересчетаЦеныПриИзмененииДаты(Объект, Оповещение);
Возврат;
КонецЕсли;
ЦеныРассчитаны = ДатаПриИзмененииСервер(ПересчитыватьЦены);
ДатаДокументаДоИзменения = Объект.Дата;
Если ПересчитыватьЦены Тогда
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияЦенПоСоглашению(ЦеныРассчитаны);
КонецЕсли;
ПроверкаКонтрагентовКлиент.ЗапуститьПроверкуКонтрагентовВДокументе(ЭтотОбъект, Объект.Дата);
КонецПроцедуры
&НаКлиенте
Процедура ДекорацияСервисДоставкиСоздатьНажатие(Элемент)
СервисДоставкиКлиентПереопределяемый.ОткрытьФормуНовогоЗаказаНаДоставку(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ДекорацияСервисДоставкиСписокЗаказовНажатие(Элемент)
СервисДоставкиКлиент.ОткрытьФормуСервисаДоставкиИзОснования(ЭтотОбъект, Объект.Ссылка);
КонецПроцедуры
&НаКлиенте
Процедура ДекорацияСервисДоставкиДобавитьВЗаказНаДоставкуНажатие(Элемент)
СервисДоставкиКлиент.ОткрытьФормуСервисаДоставкиИзОснования(ЭтотОбъект, Объект.Ссылка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ДекорацияСервисДоставкиОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("Форма", ЭтотОбъект);
ПараметрыОткрытия.Вставить("ДокументОснование", Объект.Ссылка);
СервисДоставкиКлиент.ОткрытьФормуПодчиненныхЗаказовНаДоставку(ПараметрыОткрытия);
КонецПроцедуры
&НаКлиенте
Процедура СпособМестоДоставкиПеревозчикПриИзменении(Элемент)
ЗаполнитьУстановитьРеквизитыДоставкиСервер(Элемент.Имя);
КонецПроцедуры
&НаКлиенте
Процедура АдресДоставкиПриИзменении(Элемент)
ИменаРеквизитовАдресовДоставки = ДоставкаТоваровКлиентСервер.ИменаРеквизитовАдресовДоставки("АдресДоставки");
ДоставкаТоваровКлиент.ПриИзмененииПредставленияАдреса(
Элемент,
Объект[ИменаРеквизитовАдресовДоставки.ИмяРеквизитаАдресаДоставки],
Объект[ИменаРеквизитовАдресовДоставки.ИмяРеквизитаАдресаДоставкиЗначенияПолей]);
КонецПроцедуры
&НаКлиенте
Процедура АдресДоставкиОчистка(Элемент, СтандартнаяОбработка)
ИменаРеквизитовАдресовДоставки = ДоставкаТоваровКлиентСервер.ИменаРеквизитовАдресовДоставки("АдресДоставки");
ДоставкаТоваровКлиент.ОчиститьПредставлениеАдреса(
Объект[ИменаРеквизитовАдресовДоставки.ИмяРеквизитаАдресаДоставки],
Объект[ИменаРеквизитовАдресовДоставки.ИмяРеквизитаАдресаДоставкиЗначенияПолей],
Объект[ИменаРеквизитовАдресовДоставки.ИмяРеквизитаАдресаДоставкиЗначение]);
КонецПроцедуры
&НаКлиенте
Процедура АдресДоставкиНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ИменаРеквизитовАдресовДоставки = ДоставкаТоваровКлиентСервер.ИменаРеквизитовАдресовДоставки("АдресДоставки");
ДоставкаТоваровКлиент.ОткрытьФормуВыбораАдресаИОбработатьРезультат(
Элемент,
Объект,
ИменаРеквизитовАдресовДоставки,
СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура АдресДоставкиОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
АдресДоставкиПриИзменении(Элемент);
ДоставкаТоваровКлиент.АдресДоставкиОбработкаВыбора(Элементы, Объект, Элемент.Имя, ВыбранноеЗначение);
Модифицированность = Истина;
КонецПроцедуры
&НаКлиенте
Процедура АдресДоставкиПеревозчикаПриИзменении(Элемент)
ИменаРеквизитовАдресовДоставки = ДоставкаТоваровКлиентСервер.ИменаРеквизитовАдресовДоставки("АдресДоставкиПеревозчика");
ДоставкаТоваровКлиент.ПриИзмененииПредставленияАдреса(
Элемент,
Объект[ИменаРеквизитовАдресовДоставки.ИмяРеквизитаАдресаДоставки],
Объект[ИменаРеквизитовАдресовДоставки.ИмяРеквизитаАдресаДоставкиЗначенияПолей]);
КонецПроцедуры
&НаКлиенте
Процедура АдресДоставкиПеревозчикаОчистка(Элемент, СтандартнаяОбработка)
ИменаРеквизитовАдресовДоставки = ДоставкаТоваровКлиентСервер.ИменаРеквизитовАдресовДоставки("АдресДоставкиПеревозчика");
ДоставкаТоваровКлиент.ОчиститьПредставлениеАдреса(
Объект[ИменаРеквизитовАдресовДоставки.ИмяРеквизитаАдресаДоставки],
Объект[ИменаРеквизитовАдресовДоставки.ИмяРеквизитаАдресаДоставкиЗначенияПолей],
Объект[ИменаРеквизитовАдресовДоставки.ИмяРеквизитаАдресаДоставкиЗначение]);
КонецПроцедуры
&НаКлиенте
Процедура АдресДоставкиПеревозчикаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ИменаРеквизитовАдресовДоставки = ДоставкаТоваровКлиентСервер.ИменаРеквизитовАдресовДоставки("АдресДоставкиПеревозчика");
ДоставкаТоваровКлиент.ОткрытьФормуВыбораАдресаИОбработатьРезультат(
Элемент,
Объект,
ИменаРеквизитовАдресовДоставки,
СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура АдресДоставкиПеревозчикаОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
АдресДоставкиПеревозчикаПриИзменении(Элемент);
ДоставкаТоваровКлиент.АдресДоставкиОбработкаВыбора(Элементы, Объект, Элемент.Имя, ВыбранноеЗначение);
Модифицированность = Истина;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьУстановитьРеквизитыДоставкиСервер(ИмяЭлементаФормы);
ДоставкаТоваров.ЗаполнитьРеквизитыДоставки(Элементы, ИмяЭлементаФормы, Объект);
КонецПроцедуры
&НаКлиенте
Процедура ПоступлениеПоЗаказамПриИзменении(Элемент)
ЗаказПоставщику = Неопределено;
ОчиститьСообщения();
Если Объект.ПоступлениеПоЗаказам Тогда
Если ИспользоватьПоступлениеПоНесколькимЗаказам Тогда
Если Объект.Товары.Количество() = 0 Тогда
ТекстВопроса = НСтр("ru='Список Товары будет перезаполнен остатками непоступивших товаров по заказам. Продолжить?'");
Иначе
ТекстВопроса = НСтр("ru='Строки в списке Товары будут привязаны к строкам заказов. Продолжить?'");
КонецЕсли;
Иначе
ОценкаПроизводительностиКлиент.НачатьЗамерВремени(Истина,
"Документ.ПриобретениеТоваровУслуг.Форма.ФормаДокумента.ПоступлениеПоЗаказамПриИзменении");
ПараметрыОтбора = Новый Структура();
ПараметрыОтбора.Вставить("Валюта", Объект.Валюта);
ПараметрыОтбора.Вставить("Контрагент", Объект.Контрагент);
ПараметрыОтбора.Вставить("Договор", Объект.Договор);
ПараметрыОтбора.Вставить("НалогообложениеНДС", Объект.НалогообложениеНДС);
ПараметрыОтбора.Вставить("Организация", Объект.Организация);
ПараметрыОтбора.Вставить("Партнер", Объект.Партнер);
ПараметрыОтбора.Вставить("Соглашение", Объект.Соглашение);
ПараметрыОтбора.Вставить("ХозяйственнаяОперация", Объект.ХозяйственнаяОперация);
ПараметрыОтбора.Вставить("ЦенаВключаетНДС", Объект.ЦенаВключаетНДС);
ПараметрыОтбора.Вставить("ПорядокРасчетов", Объект.ПорядокРасчетов);
ПараметрыОтбора.Вставить("ВернутьМногооборотнуюТару", Объект.ВернутьМногооборотнуюТару);
ПараметрыОтбора.Вставить("ТребуетсяЗалогЗаТару", Объект.ТребуетсяЗалогЗаТару);
ПараметрыОтбора.Вставить("НаправлениеДеятельности", Объект.НаправлениеДеятельности);
ПараметрыОтбора.Вставить("ВариантПриемкиТоваров", Объект.ВариантПриемкиТоваров);
ПараметрыОтбора.Вставить("ГруппаФинансовогоУчета", Объект.ГруппаФинансовогоУчета);
ПараметрыОтбора.Вставить("Подразделение", Объект.Подразделение);
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Отбор", ПараметрыОтбора);
ПараметрыФормы.Вставить("Склад", Объект.Склад);
ПараметрыФормы.Вставить("Регистратор", Объект.Ссылка);
ПараметрыФормы.Вставить("СкрыватьДопОтборы", Истина);
ОповещениеЗакрытия = Новый ОписаниеОповещения("ПоступлениеПоЗаказамПриИзмененииПослеВыбора", ЭтотОбъект);
ОткрытьФорму("Обработка.ЖурналДокументовЗакупки.Форма.ФормаВыбораРаспоряжения", ПараметрыФормы, , , , ,
ОповещениеЗакрытия, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
Возврат;
КонецЕсли;
Иначе
Если Объект.Товары.Количество() > 0 Тогда
Если ИспользоватьПоступлениеПоНесколькимЗаказам Тогда
ТекстВопроса = НСтр("ru='Строки в списке Товары перестанут быть связанными со строками заказов. Продолжить?'");
Иначе
ТекстВопроса = НСтр("ru='Строки в списке Товары перестанут быть связанными со строками заказа. Продолжить?'");
КонецЕсли;
Иначе
ПоступлениеПоНесколькимЗаказамПриИзменении();
Возврат;
КонецЕсли;
КонецЕсли;
ПоступлениеПоЗаказамПриИзмененииФрагмент(ЗаказПоставщику, ТекстВопроса);
КонецПроцедуры
&НаКлиенте
Процедура ПоступлениеПоЗаказамПриИзмененииПослеВыбора(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Тогда
Объект.ПоступлениеПоЗаказам = Ложь;
Возврат;
КонецЕсли;
ЗаказПоставщику = Результат.ЗаказПоставщику;
Если Объект.Товары.Количество() = 0 Тогда
ТекстВопроса = СтрЗаменить(НСтр("ru='Список Товары будет заполнен остатками непоступивших товаров по документу %ЗаказПоставщику%. Продолжить?'"), "%ЗаказПоставщику%", ЗаказПоставщику);
Иначе
ТекстВопроса = СтрЗаменить(НСтр("ru='Строки в списке Товары будут привязаны к строкам документа %ЗаказПоставщику%. Продолжить?'"), "%ЗаказПоставщику%", ЗаказПоставщику);
КонецЕсли;
ПоступлениеПоЗаказамПриИзмененииФрагмент(Результат, ТекстВопроса);
КонецПроцедуры
&НаКлиенте
Процедура ПоступлениеПоЗаказамПриИзмененииФрагмент(Знач Результат, Знач ТекстВопроса)
Если ТипЗнч(Результат) <> Тип("Структура") Тогда
Результат = Новый Структура("ЗаказПоставщику", Результат);
КонецЕсли;
ПоказатьВопрос(Новый ОписаниеОповещения("ПоступлениеПоЗаказамПриИзмененииЗавершение", ЭтотОбъект, Результат), ТекстВопроса, РежимДиалогаВопрос.ДаНет);
КонецПроцедуры
&НаКлиенте
Процедура ПоступлениеПоЗаказамПриИзмененииЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
ЗаказПоставщику = ДополнительныеПараметры.ЗаказПоставщику;
ОтветНаВопрос = РезультатВопроса;
Если ОтветНаВопрос = КодВозвратаДиалога.Нет Тогда
Объект.ПоступлениеПоЗаказам = Не Объект.ПоступлениеПоЗаказам;
Возврат;
КонецЕсли;
Если ЗначениеЗаполнено(ЗаказПоставщику) Тогда
Объект.ЗаказПоставщику = ЗаказПоставщику;
Если ДополнительныеПараметры.Свойство("ПорядокРасчетов") Тогда
Объект.ПорядокРасчетов = ДополнительныеПараметры.ПорядокРасчетов;
КонецЕсли;
КонецЕсли;
ПоступлениеПоЗаказамПриИзмененииСервер();
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПараметрыРегистрацииСчетовФактурПолученныхСервер(Знач Объект)
Возврат Документы.ПриобретениеТоваровУслуг.ПараметрыРегистрацииСчетовФактурПолученных(Объект);
КонецФункции
&НаСервереБезКонтекста
Функция ПараметрыРегистрацииУведомленийОВвозеПрослеживаемыхТоваровСервер(Знач Объект)
Возврат Документы.ПриобретениеТоваровУслуг.ПараметрыРегистрацииУведомленийОВвозеПрослеживаемыхТоваров(Объект);
КонецФункции
&НаКлиенте
Процедура ВернутьМногооборотнуюТаруПриИзменении(Элемент)
ВернутьМногооборотнуюТаруПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура ТребуетсяЗалогЗаТаруПриИзменении(Элемент)
РассчитатьИтоговыеПоказателиПоступления(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура МенеджерПриИзменении(Элемент)
ЗаполнитьПодчиненныеСвойстваПоСтатистике("Менеджер");
КонецПроцедуры
&НаКлиенте
Процедура РеквизитыПечатиАвансовогоОтчетаНажатие(Элемент)
ДанныеПечати = Новый Структура;
ДанныеПечати.Вставить("НазначениеАванса", Объект.НазначениеАванса);
ДанныеПечати.Вставить("КоличествоДокументов", Объект.КоличествоДокументов);
ДанныеПечати.Вставить("КоличествоЛистов", Объект.КоличествоЛистов);
ДанныеПечати.Вставить("Руководитель", Объект.Руководитель);
ДанныеПечати.Вставить("ГлавныйБухгалтер", Объект.ГлавныйБухгалтер);
ДанныеПечати.Вставить("Дата", Объект.Дата);
ДанныеПечати.Вставить("Организация", Объект.Организация);
СтруктураПараметров = Новый Структура;
СтруктураПараметров.Вставить("ДанныеПечати", ДанныеПечати);
СтруктураПараметров.Вставить("ИмяДокумента", "ПриобретениеТоваровУслуг");
ОткрытьФорму("ОбщаяФорма.РеквизитыПечатиАвансовогоОтчета", СтруктураПараметров, ЭтаФорма,,,,, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура НаправлениеДеятельностиПриИзменении(Элемент)
НаправлениеДеятельностиПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура НадписьВалютыНажатие(Элемент, СтандартнаяОбработка)
Оповещение = Новый ОписаниеОповещения("НадписьВалютыНажатиеЗавершение", ЭтотОбъект);
ВзаиморасчетыКлиент.ВалютыИКурсДокументаНажатие(ЭтаФорма, Элемент, СтандартнаяОбработка, Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура НадписьВалютыНажатиеЗавершение(РезультатЗакрытия, ДополнительныеПараметры) Экспорт
Если РезультатЗакрытия = Неопределено Тогда
Возврат;
КонецЕсли;
Если ТипЗнч(РезультатЗакрытия) = Тип("Структура") Тогда
ИзмененныеРеквизиты = РезультатЗакрытия.СтарыеЗначенияИзмененныхРеквизитов;
Если ИзмененныеРеквизиты.Количество() > 0 Тогда
НадписьВалютыНажатиеЗавершениеСервер(РезультатЗакрытия);
Если РезультатЗакрытия.НеобходимПересчетСуммДокумента Тогда
ЦенообразованиеКлиент.ОповеститьОбОкончанииПересчетаСуммВВалюту(ВалютаДокумента, Объект.Валюта);
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура НадписьВалютыНажатиеЗавершениеСервер(РезультатЗакрытия)
ИзмененныеРеквизиты = РезультатЗакрытия.СтарыеЗначенияИзмененныхРеквизитов;
Если ИзмененныеРеквизиты.Свойство("Валюта") Тогда
Если РезультатЗакрытия.НеобходимПересчетСуммДокумента Тогда
ВалютаПриИзмененииСервер(Объект.Валюта);
КонецЕсли;
ВалютаДокумента = Объект.Валюта;
ЗаполнитьПодчиненныеСвойстваПоСтатистике("Валюта");
КонецЕсли;
Если ИзмененныеРеквизиты.Свойство("ВалютаВзаиморасчетов") Тогда
ЗаполнитьДоговорПоУмолчанию();
КонецЕсли;
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, ИзмененныеРеквизиты, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ДекорацияЭДОНажатие(Элемент, СтандартнаяОбработка)
ОбменСКонтрагентамиКлиент.СостояниеЭДОНажатие_ФормаДокумента(ЭтотОбъект, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура НадписьЭтапыОплатыНажатие(Элемент, СтандартнаяОбработка)
Оповещение = Новый ОписаниеОповещения("НадписьЭтапыОплатыНажатиеЗавершение", ЭтотОбъект);
ПоместитьЭтапыОплатыВоВременноеХранилище(Элемент.Имя);
ВзаиморасчетыКлиент.НадписьЭтапыОплатыНажатие(ЭтаФорма, Элемент, СтандартнаяОбработка, Оповещение );
КонецПроцедуры
&НаСервере
Процедура ПоместитьЭтапыОплатыВоВременноеХранилище(ИмяЭлемента)
ВзаиморасчетыСервер.ПоместитьЭтапыОплатыВоВременноеХранилище(ЭтаФорма, ИмяЭлемента);
ВзаиморасчетыСервер.ПоместитьРасшифровкуПлатежаВоВременноеХранилище(ЭтаФорма, ИмяЭлемента);
КонецПроцедуры
&НаКлиенте
Процедура НадписьЭтапыОплатыНажатиеЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат <> Неопределено Тогда
ИзмененныеРеквизиты = Результат.СтарыеЗначенияИзмененныхРеквизитов;
ОтразитьИзмененияПравилОплаты(ИзмененныеРеквизиты);
Если ИзмененныеРеквизиты.Количество() > 0 Тогда
Объект.Согласован = Ложь;
КонецЕсли;
КонецЕсли;
РассчитатьИтоговыеПоказателиПоступления(ЭтаФорма);
КонецПроцедуры
&НаСервере
Процедура ОтразитьИзмененияПравилОплаты(ИзмененныеРеквизиты)
ВзаиморасчетыСервер.ЗагрузитьЭтапыОплатыИзВременногоХранилища(ЭтаФорма);
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, ИзмененныеРеквизиты, Истина);
Если ИзмененныеРеквизиты.Свойство("ПорядокРасчетов") Тогда
УстановитьСвойстваЭлементовПоПорядкуРасчетов();
КонецЕсли;
УстановитьДоступностьЭлементовПоСтатусуСервер();
КонецПроцедуры
&НаКлиенте
Процедура ЗакупкаПодДеятельностьОчистка(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
КонецПроцедуры
&НаКлиенте
Процедура ТекстАвансовыйОтчетОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
Если НавигационнаяСсылкаФорматированнойСтроки = "ОчиститьАвансовыйОтчет" Тогда
СтандартнаяОбработка = Ложь;
Объект.АвансовыйОтчет = Неопределено;
Модифицированность = Истина;
ТекстАвансовыйОтчет = Новый ФорматированнаяСтрока(НСтр("ru = 'Включить в авансовый отчет'"),,,, "ВключитьВАвансовыйОтчет");
ИначеЕсли НавигационнаяСсылкаФорматированнойСтроки = "ВключитьВАвансовыйОтчет" Тогда
СтандартнаяОбработка = Ложь;
Отбор = Новый Структура;
Отбор.Вставить("Организация", Объект.Организация);
Отбор.Вставить("Подразделение", Объект.Подразделение);
Отбор.Вставить("ПодотчетноеЛицо", Объект.ПодотчетноеЛицо);
ПараметрыФормы = Новый Структура("Отбор", Отбор);
ПараметрыФормы.Вставить("Дата", Объект.Дата);
ПараметрыФормы.Вставить("ДокументЗакупки", Объект.Ссылка);
ПараметрыФормы.Вставить("Валюта", Объект.Валюта);
Оповещение = Новый ОписаниеОповещения("ПослеВыбораАвансовогоОтчета", ЭтотОбъект);
ОткрытьФорму("Документ.АвансовыйОтчет.Форма.ФормаВыбораСоздания", ПараметрыФормы, ЭтотОбъект,,,, Оповещение);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеВыбораАвансовогоОтчета(Результат, ДополнительныеПараметры) Экспорт
Если Результат <> Неопределено Тогда
Объект.АвансовыйОтчет = Результат;
Модифицированность = Истина;
ОбновитьТекстАвансовыйОтчет();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СтрокаИсправлениеОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
ИсправлениеДокументовКлиент.СтрокаИсправлениеОбработкаНавигационныйСсылки(
ЭтотОбъект, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ДекорацияСостояниеОригиналаНажатие()
УчетОригиналовПервичныхДокументовКлиент.ОткрытьМенюВыбораСостояния(ЭтотОбъект,Элементы.ДекорацияСостояниеОригинала);
КонецПроцедуры
&НаКлиенте
Процедура СтруктурнаяЕдиницаПриИзменении(Элемент)
ЗаполнитьВидДеятельностиНДС();
КонецПроцедуры
&НаКлиенте
Процедура ТекстДокументыНаОснованииОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылка, СтандартнаяОбработка)
ПараметрыРегистрации = ПараметрыРегистрацииСчетовФактурПолученныхСервер(Объект);
УчетНДСУПКлиент.ОбработкаНавигационнойСсылкиСчетаФактурыПолученные(
ЭтаФорма,
НавигационнаяСсылка,
СтандартнаяОбработка,
ПараметрыРегистрации);
ФискальнаяОперацияОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылка, СтандартнаяОбработка);
ПараметрыРегистрацииУведомленийОВвозе = ПараметрыРегистрацииУведомленийОВвозеПрослеживаемыхТоваровСервер(Объект);
ПрослеживаемостьФормыКлиентПереопределяемый.ОбработкаНавигационнойСсылкиУведомленияОВвозеПрослеживаемыхТоваров(
ЭтаФорма,
НавигационнаяСсылка,
СтандартнаяОбработка,
ПараметрыРегистрацииУведомленийОВвозе);
КонецПроцедуры
&НаСервере
Процедура НастроитьВидимостьКомандыЗаполнитьПодразделение();
ВидимостьКоманды = НЕ (ХозяйственныеОперацииРаздельнойЗакупки(Ложь, Истина).Найти(Объект.ХозяйственнаяОперация) <> Неопределено
И ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Договор, "ВариантОформленияЗакупок", Истина) = Перечисления.ВариантыОформленияЗакупок.НеотфактурованныеПоставкиТоваровИУслуг);
Элементы.ТоварыЗаполнитьПодразделение.Видимость = ВидимостьКоманды;
КонецПроцедуры
&НаКлиенте
Процедура ОперацияССамозанятымПриИзменении(Элемент)
ОперацияССамозанятымПриИзмененииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура СтатусЧекаСамозанятогоНажатие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ДенежныеСредстваКлиентЛокализация.ПередЗагрузкойЧекаСамозанятогоВДокумент(ЭтотОбъект);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыТовары
&НаКлиенте
Процедура ТоварыПередУдалением(Элемент, Отказ)
Если Элементы.Товары.ТекущиеДанные <> Неопределено Тогда
РаботаСТабличнымиЧастямиКлиент.КэшироватьТекущуюСтроку(Элементы.Товары, ЭтотОбъект);
НоменклатураКлиент.ОбновитьКешированныеЗначенияДляУчетаСерий(
Элемент,КэшированныеЗначения,ПараметрыУказанияСерий);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПослеУдаления(Элемент)
НеобходимоОбновитьСтатусыСерий = НоменклатураКлиент.НеобходимоОбновитьСтатусыСерий(
Элемент, КэшированныеЗначения, ПараметрыУказанияСерий, Истина);
Если НеобходимоОбновитьСтатусыСерий Или ИспользоватьПоступлениеПоНесколькимЗаказам Тогда
ТоварыПослеУдаленияСервер(НеобходимоОбновитьСтатусыСерий, КэшированныеЗначения);
Иначе
ОбновитьЗависимыеРеквизитыФормыСерверПоЗаказу();
КонецЕсли;
Если НеобходимоОбновитьСтатусыСерий Тогда
НоменклатураКлиент.ОбновитьКешированныеЗначенияДляУчетаСерий(
Элемент, КэшированныеЗначения, ПараметрыУказанияСерий);
КонецЕсли;
РассчитатьИтоговыеПоказателиПоступления(ЭтаФорма);
МногооборотнаяТараКлиент.ОбновитьСостояниеЗаполненияМногооборотнойТары(Объект.СостояниеЗаполненияМногооборотнойТары);
ПриИзмененииСкладаВТабличнойЧастиСервер();
УстановитьПризнакЗаполненияСклада();
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
Если ТекущаяСтрока <> Неопределено
И Объект.ПоступлениеПоЗаказам И НоваяСтрока Тогда
Если Не ИспользоватьПоступлениеПоНесколькимЗаказам Тогда
ТекущаяСтрока.ЗаказПоставщику = Объект.ЗаказПоставщику;
КонецЕсли;
ТекущаяСтрока.РасхождениеЗаказ = 1;
ТекущаяСтрока.КодСтроки = 0;
ТекущаяСтрока.ЦенаЗаказа = 0;
КонецЕсли;
РаботаСТабличнымиЧастямиКлиент.КэшироватьТекущуюСтроку(Элементы.Товары, ЭтотОбъект);
НоменклатураКлиент.ОбновитьКешированныеЗначенияДляУчетаСерий(
Элемент,КэшированныеЗначения,ПараметрыУказанияСерий, Копирование);
ДоходыИРасходыКлиентСервер.ПриДобавленииСтрокиВТаблицу(ЭтотОбъект, ТекущаяСтрока, "Объект.Товары");
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
ЗавершитьРедактированиеСтрокиТовары(Элемент, НоваяСтрока, ОтменаРедактирования);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
Если Объект.ПоступлениеПоЗаказам Тогда
Если Объект.Товары.Количество()>0 И ТекущаяСтрока <> Неопределено Тогда
Если ТекущаяСтрока.КодСтроки = 0 Тогда
ТекущаяСтрока.РасхождениеЗаказ = 1;
Иначе
ТекущаяСтрока.РасхождениеЗаказ = 0;
КонецЕсли;
КонецЕсли;
ОбновитьЗависимыеРеквизитыФормыПоЗаказу(
Объект.Товары,
НадписьРасхождениеЗаказ,
Элементы.КартинкаРасхождениеЗаказ,
Элементы.КартинкаРасхождениеЗаказы);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
Если Элементы.Товары.ТекущиеДанные <> Неопределено Тогда
Если Поле = Элементы.ТоварыЗаказПоставщику Тогда
Если ЗначениеЗаполнено(Элементы.Товары.ТекущиеДанные.ЗаказПоставщику) Тогда
ПоказатьЗначение(Новый ОписаниеОповещения("ТоварыВыборЗавершение", ЭтотОбъект, Новый Структура("Поле", Поле)), Элементы.Товары.ТекущиеДанные.ЗаказПоставщику);
Возврат;
ИначеЕсли ЗначениеЗаполнено(Объект.ЗаказПоставщику) Тогда
ПоказатьЗначение(Новый ОписаниеОповещения("ТоварыВыборЗавершение", ЭтотОбъект, Новый Структура("Поле", Поле)), Объект.ЗаказПоставщику);
Возврат;
КонецЕсли;
ИначеЕсли Поле = Элементы.ТоварыСделка Тогда
ПоказатьЗначение(, Элементы.Товары.ТекущиеДанные.Сделка);
КонецЕсли;
НоменклатураПартнеровКлиент.ПриВыбореНоменклатурыПартнера(Объект, Поле, "ТоварыНоменклатураПартнера", НСтр("ru = 'Поставщик'"));
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыВыборЗавершение(ДополнительныеПараметры) Экспорт
Поле = ДополнительныеПараметры.Поле;
НоменклатураПартнеровКлиент.ПриВыбореНоменклатурыПартнера(Объект, Поле, "ТоварыНоменклатураПартнера", НСтр("ru = 'Поставщик'"));
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПередНачаломИзменения(Элемент, Отказ)
ЗаполнитьЗначенияСвойств(ПредыдущиеРеквизитыСтроки, Элементы.Товары.ТекущиеДанные);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыНомерГТДПриИзменении(Элемент)
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
ПараметрыЗаполнения = Новый Структура("НомерГТД", ТекущиеДанные.НомерГТД);
Действия = Новый Структура;
Действия.Вставить("ЗаполнитьТипНомераГТД", ПараметрыЗаполнения);
Действия.Вставить("ЗаполнитьСтрануПроисхожденияДляНомераГТД", ПараметрыЗаполнения);
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекПересчетаРеквизитовТабличнойЧасти(
Объект,
Действия,
"Склад",
Истина);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущиеДанные, Действия, Неопределено);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыНомерГТДСоздание(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
ДополнительныеПараметры = ЗакупкиКлиент.ДополнительныеПараметрыСозданияНомераГТД();
ЗаполнитьЗначенияСвойств(ДополнительныеПараметры, Объект);
ЗаполнитьЗначенияСвойств(ДополнительныеПараметры, ЭтотОбъект);
ПараметрыСоздания = ЗакупкиКлиент.ПараметрыСозданияНомераГТД(ТекущиеДанные,
Элемент.ТекстРедактирования,
ДополнительныеПараметры);
ЗакупкиКлиент.ОткрытьФормуСозданияНомераГТД(ЭтотОбъект, ПараметрыСоздания);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыЗаказПоставщикуНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
Если ТекущиеДанные <> Неопределено Тогда
ОценкаПроизводительностиКлиент.НачатьЗамерВремени(Истина,
"Документ.ПриобретениеТоваровУслуг.Форма.ФормаДокумента.ТоварыЗаказПоставщикуНачалоВыбора");
ПараметрыОтбора = Новый Структура();
ПараметрыОтбора.Вставить("Валюта", Объект.Валюта);
ПараметрыОтбора.Вставить("Контрагент", Объект.Контрагент);
ПараметрыОтбора.Вставить("Договор", Объект.Договор);
ПараметрыОтбора.Вставить("НалогообложениеНДС", Объект.НалогообложениеНДС);
ПараметрыОтбора.Вставить("Организация", Объект.Организация);
ПараметрыОтбора.Вставить("Партнер", Объект.Партнер);
ПараметрыОтбора.Вставить("Соглашение", Объект.Соглашение);
ПараметрыОтбора.Вставить("ХозяйственнаяОперация", Объект.ХозяйственнаяОперация);
ПараметрыОтбора.Вставить("ЦенаВключаетНДС", Объект.ЦенаВключаетНДС);
ПараметрыОтбора.Вставить("ПорядокРасчетов", Объект.ПорядокРасчетов);
ПараметрыОтбора.Вставить("ВернутьМногооборотнуюТару", Объект.ВернутьМногооборотнуюТару);
ПараметрыОтбора.Вставить("ТребуетсяЗалогЗаТару", Объект.ТребуетсяЗалогЗаТару);
ПараметрыОтбора.Вставить("НаправлениеДеятельности", Объект.НаправлениеДеятельности);
ПараметрыОтбора.Вставить("ВариантПриемкиТоваров", Объект.ВариантПриемкиТоваров);
ПараметрыОтбора.Вставить("ГруппаФинансовогоУчета", Объект.ГруппаФинансовогоУчета);
ПараметрыОтбора.Вставить("Подразделение", Объект.Подразделение);
ПараметрыОтбора.Вставить("ОперацияССамозанятым", Объект.ОперацияССамозанятым);
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Отбор", ПараметрыОтбора);
ПараметрыФормы.Вставить("Склад", Объект.Склад);
ПараметрыФормы.Вставить("Регистратор", Объект.Ссылка);
ПараметрыФормы.Вставить("СкрыватьДопОтборы", Истина);
ПараметрыОповещения = Новый Структура("ТекущиеДанные", ТекущиеДанные);
ОповещениеЗакрытия = Новый ОписаниеОповещения("ТоварыЗаказПоставщикуНачалоВыбораЗавершение", ЭтотОбъект,
ПараметрыОповещения);
ОткрытьФорму("Обработка.ЖурналДокументовЗакупки.Форма.ФормаВыбораРаспоряжения", ПараметрыФормы, , , , ,
ОповещениеЗакрытия, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
Возврат;
КонецЕсли;
ОбновитьИнформациюПоЗаказам();
КонецПроцедуры
&НаКлиенте
Процедура ТоварыЗаказПоставщикуНачалоВыбораЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
Если Результат.ПорядокРасчетов <> Объект.ПорядокРасчетов Тогда
ЕстьУказанныеЗаказы = Ложь;
Для Каждого СтрокаТовара Из Объект.Товары Цикл
Если ЗначениеЗаполнено(СтрокаТовара.ЗаказПоставщику)
И СтрокаТовара.ПолучитьИдентификатор() <> Элементы.Товары.ТекущиеДанные.ПолучитьИдентификатор() Тогда
ЕстьУказанныеЗаказы = Истина;
КонецЕсли;
КонецЦикла;
Если ЕстьУказанныеЗаказы Тогда
ТекстСообщения = НСтр("ru='У выбранного заказа порядок расчетов %1 отличается от порядка расчетов документа %2.'");
ТекстСообщения = СтрШаблон(ТекстСообщения, Результат.ПорядокРасчетов, Объект.ПорядокРасчетов);
ИндексСтроки = Объект.Товары.НайтиПоИдентификатору(Элементы.Товары.ТекущиеДанные.ПолучитьИдентификатор()).НомерСтроки - 1;
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстСообщения,,"Объект.Товары[" + ИндексСтроки + "].ЗаказПоставщику");
Возврат;
Иначе
Объект.ПорядокРасчетов = Результат.ПорядокРасчетов;
КонецЕсли;
КонецЕсли;
ТекущиеДанные = ДополнительныеПараметры.ТекущиеДанные;
ЗаказПоставщику = Результат.ЗаказПоставщику;
Элементы.Товары.ТекущиеДанные.ЗаказПоставщику = ЗаказПоставщику;
Если ЗначениеЗаполнено(ТекущиеДанные.ЗаказПоставщику) Тогда
ТекущиеДанные.Сделка = ПолучитьСделкуПоЗаказуПоставщику(ТекущиеДанные.ЗаказПоставщику);
Иначе
ТекущиеДанные.Сделка = ПредопределенноеЗначение("Справочник.СделкиСКлиентами.ПустаяСсылка");
КонецЕсли;
ОбновитьИнформациюПоЗаказам();
КонецПроцедуры
&НаКлиенте
Процедура ТоварыНоменклатураПартнераПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
НоменклатураПартнеровКлиент.УстановитьПараметрыВыбораУпаковки(Элемент.ПараметрыВыбора, ТекущаяСтрока);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьНоменклатуруПоНоменклатуреПартнера");
СтруктураДействий.Вставить("ПроверитьЗаполнитьСклад", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(Объект, СкладГруппа));
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ТекущаяСтрока", ТекущаяСтрока);
ДополнительныеПараметры.Вставить("СтруктураДействий", СтруктураДействий);
СтруктураДействий.Вставить("ПриИзмененииТипаНоменклатуры",
Новый Структура("ЕстьРаботы, ЕстьОтменено", Истина, Ложь));
Если ТекущаяСтрока.КодСтроки <> 0 Тогда
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
УстановитьПризнакЗаполненияСклада();
ДополнительныеПараметры.Вставить("ОчиститьСтруктуруДействий", Истина);
ВопросПользователюПриИзмененииРеквизитаСтроки(
Новый ОписаниеОповещения("ТоварыНоменклатураПартнераПриИзмененииВопросПользователюЗавершение", ЭтотОбъект, ДополнительныеПараметры),
ТекущаяСтрока);
Иначе
ТоварыНоменклатураПартнераПриИзмененииВопросПользователюЗавершение(Истина, ДополнительныеПараметры);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыНоменклатураПартнераПриИзмененииВопросПользователюЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Не Результат Тогда
Возврат;
КонецЕсли;
ТекущаяСтрока = ДополнительныеПараметры.ТекущаяСтрока;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
Если ДополнительныеПараметры.Свойство("ОчиститьСтруктуруДействий") Тогда
СтруктураДействий = Новый Структура;
Иначе
СтруктураДействий = ДополнительныеПараметры.СтруктураДействий;
КонецЕсли;
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц");
Если ИспользоватьСоглашенияСПоставщиками И ЗначениеЗаполнено(Объект.Соглашение) Тогда
СтруктураДействий.Вставить("ЗаполнитьУсловияЗакупок", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияЦеныЗакупкиВСтрокеТЧ(Объект));
Иначе
СтруктураДействий.Вставить("ЗаполнитьЦенуЗакупки", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияЦеныЗакупкиВСтрокеТЧ(Объект));
КонецЕсли;
ПараметрыЗаполненияСтавкиНДС = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект);
ПараметрыЗаполненияСтавкиНДС.УказаннаяСтавкаНДС = УказаннаяСтавкаНДС;
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", ПараметрыЗаполненияСтавкиНДС);
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Истина));
СтруктураДействий.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются", Новый Структура("Номенклатура", "ХарактеристикиИспользуются"));
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействий.Вставить("ЗаполнитьПризнакВедетсяУчетПоГТД", Новый Структура("Номенклатура", "ВедетсяУчетПоГТД"));
СтруктураДействий.Вставить("ЗаполнитьСтрануПроисхожденияНоменклатуры",
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтраныПроисхождения());
СтруктураДействий.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
СтруктураДействий.Вставить("ПриИзмененииТипаНоменклатуры",
Новый Структура("ЕстьРаботы, ЕстьОтменено", Истина, Ложь));
СтруктураДействий.Вставить("ЗаполнитьСлужебныеРеквизитыПоНазначению");
ДоходыИРасходыКлиентСервер.ВставитьДействиеОчиститьСтатьюИАналитикуРасходов(СтруктураДействий, ЭтотОбъект);
ПакетнаяОбработкаТабличнойЧастиКлиентСерверЛокализация.ДополнитьСтруктуруДействийПриИзмененииЭлемента(ЭтотОбъект, "Номенклатура", СтруктураДействий);
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекЗаполненияСлужебныхРеквизитовТабличнойЧасти(СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
ЗаполнениеНазначения = Новый Структура();
Если ТекущаяСтрока.Номенклатура <> ПредыдущиеРеквизитыСтроки.Номенклатура Тогда
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтотОбъект, ЗаполнениеНазначения);
КонецЕсли;
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, ЗаполнениеНазначения, КэшированныеЗначения);
Если ТекущаяСтрока.ТипНоменклатуры = ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Товар") Или
ТекущаяСтрока.ТипНоменклатуры = ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.МногооборотнаяТара") Или
ТекущаяСтрока.ТипНоменклатуры = ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Набор")
Или ЗначениеЗаполнено(ТекущаяСтрока.Назначение) Тогда
ТекущаяСтрока.СписатьНаРасходы = Ложь;
ТекущаяСтрока.Подразделение = ПредопределенноеЗначение("Справочник.СтруктураПредприятия.ПустаяСсылка");
ИначеЕсли ТекущаяСтрока.ТипНоменклатуры = ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Услуга") Тогда
ТекущаяСтрока.СписатьНаРасходы = Истина;
КонецЕсли;
ДоходыИРасходыКлиентСервер.ПриИзмененииРеквизитаДоступностиСтатьиВСтроке(ЭтотОбъект, ТекущаяСтрока, "Объект.Товары");
РассчитатьИтоговыеПоказателиПоступления(ЭтаФорма);
УстановитьПризнакЗаполненияСклада();
КонецПроцедуры
&НаКлиенте
Процедура ТоварыНоменклатураПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ТекущаяСтрока", ТекущаяСтрока);
ВопросПользователюПриИзмененииРеквизитаСтроки(
Новый ОписаниеОповещения("ТоварыНоменклатураПриИзмененииВопросПользователюЗавершение", ЭтотОбъект, ДополнительныеПараметры),
ТекущаяСтрока);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыНоменклатураПриИзмененииВопросПользователюЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Не Результат Тогда
Возврат;
КонецЕсли;
ТекущаяСтрока = ДополнительныеПараметры.ТекущаяСтрока;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПроверитьХарактеристикуПоВладельцу", ТекущаяСтрока.Характеристика);
СтруктураДействий.Вставить("ПроверитьЗаполнитьСклад", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(Объект, СкладГруппа));
СтруктураДействий.Вставить("ЗаполнитьНоменклатуруПартнераПоНоменклатуре", Объект.Партнер);
СтруктураДействий.Вставить("ПроверитьЗаполнитьУпаковкуПоВладельцу" , ТекущаяСтрока.Упаковка);
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц");
Если ИспользоватьСоглашенияСПоставщиками И ЗначениеЗаполнено(Объект.Соглашение) Тогда
СтруктураДействий.Вставить("ЗаполнитьУсловияЗакупок", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияЦеныЗакупкиВСтрокеТЧ(Объект));
Иначе
СтруктураДействий.Вставить("ЗаполнитьЦенуЗакупки", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияЦеныЗакупкиВСтрокеТЧ(Объект));
КонецЕсли;
ПараметрыЗаполненияСтавкиНДС = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект);
ПараметрыЗаполненияСтавкиНДС.УказаннаяСтавкаНДС = УказаннаяСтавкаНДС;
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", ПараметрыЗаполненияСтавкиНДС);
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Истина));
СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетов");
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьПризнакВедетсяУчетПоГТД", Новый Структура("Номенклатура", "ВедетсяУчетПоГТД"));
СтруктураДействий.Вставить("ЗаполнитьСтрануПроисхожденияНоменклатуры",
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтраныПроисхождения());
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействий.Вставить("ПроверитьСериюРассчитатьСтатус", Новый Структура("Склад, ПараметрыУказанияСерий", ТекущаяСтрока.Склад, ПараметрыУказанияСерий));
СтруктураДействий.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
СтруктураДействий.Вставить("ПриИзмененииТипаНоменклатуры",
Новый Структура("ЕстьРаботы, ЕстьОтменено", Истина, Ложь));
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтаФорма, СтруктураДействий);
СтруктураДействий.Вставить("НоменклатураПриИзмененииПереопределяемый", Новый Структура("ИмяФормы, ИмяТабличнойЧасти",
ЭтаФорма.ИмяФормы, "Товары"));
СтруктураДействий.Вставить("ЗаполнитьСлужебныеРеквизитыПоНазначению");
ДоходыИРасходыКлиентСервер.ВставитьДействиеОчиститьСтатьюИАналитикуРасходов(СтруктураДействий, ЭтотОбъект);
ПакетнаяОбработкаТабличнойЧастиКлиентСерверЛокализация.ДополнитьСтруктуруДействийПриИзмененииЭлемента(ЭтотОбъект, "Номенклатура", СтруктураДействий);
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекЗаполненияСлужебныхРеквизитовТабличнойЧасти(СтруктураДействий);
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекПересчетаРеквизитовТабличнойЧасти(
Объект,
СтруктураДействий,
"Склад",
Истина);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
ОперацииФактуровка = Новый Массив;
ОперацииФактуровка.Добавить(ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭСФактуровкаПоставки"));
ОперацииФактуровка.Добавить(ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ЗакупкаУПоставщикаФактуровкаПоставки"));
НеотфактурованныеПоставкиУслугРабот = ОперацииФактуровка.Найти(Объект.ХозяйственнаяОперация) <> Неопределено
И ВариантОформленияДоговораЗакупок = ПредопределенноеЗначение("Перечисление.ВариантыОформленияЗакупок.НеотфактурованныеПоставкиТоваровИУслуг");
Если ТекущаяСтрока.ТипНоменклатуры = ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Товар") Или
ТекущаяСтрока.ТипНоменклатуры = ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.МногооборотнаяТара") Или
ТекущаяСтрока.ТипНоменклатуры = ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Набор")
Или ЗначениеЗаполнено(ТекущаяСтрока.Назначение)
ИЛИ НеотфактурованныеПоставкиУслугРабот Тогда
ТекущаяСтрока.СписатьНаРасходы = Ложь;
ТекущаяСтрока.Подразделение = ПредопределенноеЗначение("Справочник.СтруктураПредприятия.ПустаяСсылка");
ИначеЕсли ТекущаяСтрока.ТипНоменклатуры = ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Услуга") Тогда
ТекущаяСтрока.СписатьНаРасходы = Истина;
КонецЕсли;
ДоходыИРасходыКлиентСервер.ПриИзмененииРеквизитаДоступностиСтатьиВСтроке(ЭтотОбъект, ТекущаяСтрока, "Объект.Товары");
Если Не ТекущаяСтрока.ВедетсяУчетПоГТД Тогда
ТекущаяСтрока.НомерГТД = Неопределено;
ТекущаяСтрока.ТипНомераГТД = Неопределено;
ТекущаяСтрока.СтранаПроисхождения = Неопределено;
КонецЕсли;
РассчитатьИтоговыеПоказателиПоступления(ЭтаФорма);
УстановитьПризнакЗаполненияСклада();
КонецПроцедуры
&НаКлиенте
Процедура ТоварыХарактеристикаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ТекущаяСтрока", ТекущаяСтрока);
ВопросПользователюПриИзмененииРеквизитаСтроки(
Новый ОписаниеОповещения("ТоварыХарактеристикаПриИзмененииВопросПользователюЗавершение", ЭтотОбъект, ДополнительныеПараметры),
ТекущаяСтрока);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыХарактеристикаПриИзмененииВопросПользователюЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Не Результат Тогда
Возврат;
КонецЕсли;
ТекущаяСтрока = ДополнительныеПараметры.ТекущаяСтрока;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьНоменклатуруПартнераПоНоменклатуре", Объект.Партнер);
СтруктураДействий.Вставить("ЗаполнитьЦенуЗакупки", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияЦеныЗакупкиВСтрокеТЧ(Объект));
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Истина));
СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетов");
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
СтруктураДействий.Вставить("ХарактеристикаПриИзмененииПереопределяемый", Новый Структура("ИмяФормы, ИмяТабличнойЧасти",
ЭтаФорма.ИмяФормы, "Товары"));
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтаФорма, СтруктураДействий);
ДоходыИРасходыКлиентСервер.ВставитьДействиеЗаполнитьСтатьюАналитикуРасходовНоменклатуры(
СтруктураДействий,
ЭтотОбъект,
Объект.ХозяйственнаяОперация,
Объект.Организация,
Объект.Подразделение);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиПоступления(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыНазначениеПриИзменении(Элемент)
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
ТекущиеДанные.СписатьНаРасходы = Ложь;
СтруктураДействий = Новый Структура;
ДоходыИРасходыКлиентСервер.ВставитьДействиеОчиститьСтатьюИАналитикуРасходов(СтруктураДействий, ЭтотОбъект);
СтруктураДействий.Вставить("ЗаполнитьСлужебныеРеквизитыПоНазначению");
ТекущиеДанные.ВидЗапасов = ПредопределенноеЗначение("Справочник.ВидыЗапасов.ПустаяСсылка");
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущиеДанные, СтруктураДействий, КэшированныеЗначения);
Если ТекущиеДанные.ТипНазначения = ПредопределенноеЗначение("Перечисление.ТипыНазначений.ПоставкаПодПринципала")
Или ((ТекущиеДанные.ТипНоменклатуры = ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Товар") Или
ТекущиеДанные.ТипНоменклатуры = ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.МногооборотнаяТара"))
И Не ТекущиеДанные.СписатьНаРасходы) Тогда
ТекущиеДанные.Подразделение = ПредопределенноеЗначение("Справочник.СтруктураПредприятия.ПустаяСсылка");
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыУпаковкаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьНоменклатуруПартнераПоНоменклатуре", Объект.Партнер);
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц");
Если ТекущаяСтрока.Количество > 0 Тогда
СтруктураДействий.Вставить("ПересчитатьЦенуЗаУпаковку", ТекущаяСтрока.Количество);
Если Объект.ПоступлениеПоЗаказам И ТекущаяСтрока.КодСтроки > 0 Тогда
СтруктураДействий.Вставить("ПересчитатьЦенуЗаказаЗаУпаковку", ТекущаяСтрока.Количество);
КонецЕсли;
Иначе
СтруктураДействий.Вставить("ЗаполнитьЦенуЗакупки", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияЦеныЗакупкиВСтрокеТЧ(Объект));
КонецЕсли;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Ложь));
СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетов");
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекПересчетаРеквизитовТабличнойЧасти(
Объект,
СтруктураДействий,
"Склад",
Истина);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиПоступления(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыКоличествоУпаковокПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, ЭтаФорма);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиПоступления(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыЦенаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Ложь));
СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетов");
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
ОбновитьОтклоненияОтЗаказаВСтроке(ТекущаяСтрока, Объект.ПоступлениеПоЗаказам, Объект.ТребуетсяЗалогЗаТару);
РассчитатьИтоговыеПоказателиПоступления(ЭтаФорма);
Если Объект.ПоступлениеПоЗаказам Тогда
ОбновитьНадписьОтклоненийОтЦенЗаказа();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСтавкаНДСПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетов");
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиПоступления(ЭтаФорма);
УказаннаяСтавкаНДС = ТекущаяСтрока.СтавкаНДС;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСуммаНДСПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетов");
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
ОбновитьОтклоненияОтЗаказаВСтроке(ТекущаяСтрока, Объект.ПоступлениеПоЗаказам, Объект.ТребуетсяЗалогЗаТару);
РассчитатьИтоговыеПоказателиПоступления(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыВидЦеныПоставщикаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьЦенуЗакупки", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияЦеныЗакупкиВСтрокеТЧ(Объект));
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Ложь));
СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетов");
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиПоступления(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСтатьяРасходовНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ДоходыИРасходыКлиент.НачалоВыбораСтатьи(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСтатьяРасходовПриИзменении(Элемент)
ДоходыИРасходыКлиентСервер.СтатьяПриИзменении(ЭтотОбъект, Элемент);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПроцентРучнойСкидкиПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуРучнойСкидки");
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("ПересчитыватьСуммуРучнойСкидки", Ложь));
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетов");
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиПоступления(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСуммаРучнойСкидкиПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьПроцентРучнойСкидки");
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("ПересчитыватьСуммуРучнойСкидки", Ложь));
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетов");
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиПоступления(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСуммаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьЦенуСкидкуПоСуммеВЗакупках", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруПересчетаЦеныСкидкиВЗакупкахВТЧ(Объект, Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПриемНаКомиссию")));
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетов");
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
ОбновитьОтклоненияОтЗаказаВСтроке(ТекущаяСтрока, Объект.ПоступлениеПоЗаказам, Объект.ТребуетсяЗалогЗаТару);
РассчитатьИтоговыеПоказателиПоступления(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСуммаВзаиморасчетовПриИзменении(Элемент)
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
Если ТекущиеДанные <> Неопределено Тогда
ТекущиеДанные.СуммаНДСВзаиморасчетов = 0;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСкладПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ТекущаяСтрока", ТекущаяСтрока);
ВопросПользователюПриИзмененииРеквизитаСтроки(
Новый ОписаниеОповещения("ТоварыСкладПриИзмененииВопросПользователюЗавершение", ЭтотОбъект, ДополнительныеПараметры),
ТекущаяСтрока);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСкладПриИзмененииВопросПользователюЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Не Результат Тогда
Возврат;
КонецЕсли;
ТекущаяСтрока = ДополнительныеПараметры.ТекущаяСтрока;
ПроверитьСериюРассчитатьСтатус = Новый Структура("Склад, ПараметрыУказанияСерий",
ТекущаяСтрока.Склад, ПараметрыУказанияСерий);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПроверитьСериюРассчитатьСтатус", ПроверитьСериюРассчитатьСтатус);
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекПересчетаРеквизитовТабличнойЧасти(
Объект,
СтруктураДействий,
"Склад",
Истина);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыЗаказПоставщикуПриИзменении(Элемент)
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
Если ТекущиеДанные <> Неопределено Тогда
Если ЗначениеЗаполнено(ТекущиеДанные.ЗаказПоставщику) Тогда
ТекущиеДанные.Сделка = ПолучитьСделкуПоЗаказуПоставщику(ТекущиеДанные.ЗаказПоставщику);
Иначе
ТекущиеДанные.Сделка = ПредопределенноеЗначение("Справочник.СделкиСКлиентами.ПустаяСсылка");
КонецЕсли;
КонецЕсли;
ОбновитьИнформациюПоЗаказам();
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСерияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОткрытьПодборСерий(Элемент.ТекстРедактирования);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСерияПриИзменении(Элемент)
ВыбранноеЗначение = НоменклатураКлиентСервер.ВыбраннаяСерия();
ВыбранноеЗначение.Значение = Элементы.Товары.ТекущиеДанные.Серия;
ВыбранноеЗначение.ИдентификаторТекущейСтроки = Элементы.Товары.ТекущиеДанные.ПолучитьИдентификатор();
НоменклатураКлиент.ОбработатьУказаниеСерии(ЭтаФорма, ПараметрыУказанияСерий, ВыбранноеЗначение);
КонецПроцедуры
&НаСервере
Процедура ТоварыПослеУдаленияСервер(НеобходимоОбновитьСтатусыСерий, КэшированныеЗначения)
Если НеобходимоОбновитьСтатусыСерий Тогда
ЗаполнитьСтатусыУказанияСерийПриОкончанииРедактированияСтрокиТЧ(Неопределено, КэшированныеЗначения);
КонецЕсли;
ОбновитьИнформациюПоЗаказам();
ПриИзмененииСкладаВТабличнойЧастиСервер();
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПриАктивизацииЯчейки(Элемент)
Если Элемент.ТекущийЭлемент = Неопределено Тогда
Возврат
ИначеЕсли Элемент.ТекущийЭлемент.Имя = "ТоварыНоменклатураПартнера" Тогда
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
НоменклатураПартнеровКлиент.ЗаполнитьСписокВыбораНоменклатурыПартнера(
Объект.Партнер, ТекущиеДанные, Элементы.ТоварыНоменклатураПартнера.СписокВыбора);
НоменклатураПартнеровКлиент.УстановитьПараметрыВыбораУпаковки(
Элементы.ТоварыНоменклатураПартнера.ПараметрыВыбора, ТекущиеДанные);
ИначеЕсли Элемент.ТекущийЭлемент.Имя = "ТоварыНомерГТД" Тогда
ЗакупкиКлиент.ЗаполнитьСписокВыбораНомеровГТД(
Элементы.Товары.ТекущиеДанные,
Элементы.ТоварыНомерГТД.СписокВыбора);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыАналитикаРасходовНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ДоходыИРасходыКлиент.НачалоВыбораАналитикиРасходов(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыАналитикаРасходовАвтоПодбор(Элемент, Текст, ДанныеВыбора, Параметры, Ожидание, СтандартнаяОбработка)
ДоходыИРасходыКлиент.АвтоПодборАналитикиРасходов(ЭтотОбъект, Элемент, Текст, ДанныеВыбора, Параметры, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыАналитикаРасходовОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, Параметры, СтандартнаяОбработка)
ДоходыИРасходыКлиент.ОкончаниеВводаТекстаАналитикиРасходов(ЭтотОбъект, Элемент, Текст, ДанныеВыбора, Параметры, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыНоменклатураПартнераНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ЭлементФормы" , Элемент);
ДополнительныеПараметры.Вставить("ТекущаяСтрока", ТекущаяСтрока);
ОповещениеОЗакрытие = Новый ОписаниеОповещения("ОбработатьРезультатВыбораНоменклатурыПартнера", ЭтотОбъект, ДополнительныеПараметры);
НоменклатураПартнеровКлиент.ОткрытьФормуВыбораНоменклатурыПартнера(ЭтотОбъект, Объект.Партнер, ТекущаяСтрока, Элемент.Заголовок, ОповещениеОЗакрытие);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыАналитикаРасходовПриИзменении(Элемент)
ДоходыИРасходыКлиентСервер.АналитикаРасходовПриИзменении(ЭтотОбъект, Элемент);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура Подключаемый_КомандаПанелиПрисоединенныхФайлов(Команда)
РаботаСФайламиКлиент.КомандаУправленияПрисоединеннымиФайлами(ЭтотОбъект, Команда);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПроверкаПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраПроверкаПеретаскивания(ЭтотОбъект, Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраПеретаскивание(ЭтотОбъект, Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраНажатие(Элемент, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраНажатие(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаСервере
Процедура ВыполнитьКомандуНаСервере(ПараметрыВыполнения)
ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, ПараметрыВыполнения, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПродолжитьВыполнениеКомандыНаСервере(ПараметрыВыполнения, ДополнительныеПараметры) Экспорт
ВыполнитьКомандуНаСервере(ПараметрыВыполнения);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
ПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуЭДО(Команда)
ЭлектронноеВзаимодействиеКлиент.ВыполнитьПодключаемуюКомандуЭДО(Команда, ЭтаФорма, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбработчикОжиданияЭДО()
ОбменСКонтрагентамиКлиент.ОбработчикОжиданияЭДО(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьЦеныПоСоглашению(Команда)
Если ЦеныПартнеровЗаполнениеКлиент.НеобходимоЗаполнениеЦенПоСоглашению(Объект, "Товары", НСтр("ru='Товары'")) Тогда
ТекстОшибки = "";
ЦеныРассчитаны = ЗаполнитьЦеныПоСоглашениюСервер(,ТекстОшибки);
ЗакупкиКлиент.ОповеститьОбОкончанииЗаполненияЦенПоСоглашению(ЦеныРассчитаны, ТекстОшибки);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура АвтоТест_ЗаполнитьЦеныПоСоглашению() Экспорт
ЗаполнитьЦеныПоСоглашению(Неопределено);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьЦеныВыделенныхСтрокПоВидуЦенПоставщика(Команда)
Если ЦеныПартнеровЗаполнениеКлиент.НеобходимоЗаполнениеЦенПоВидуЦенПоставщика(Объект, "Товары", НСтр("ru='Товары'")) Тогда
ЦеныПартнеровЗаполнениеКлиент.ВыбратьВидЦеныПоставщика(
Новый ОписаниеОповещения("ЗаполнитьЦеныВыделенныхСтрокВыборВидЦеныПоставщикаЗавершение", ЭтотОбъект),
Объект.Партнер,
Объект.ЦенаВключаетНДС);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьЦеныВыделенныхСтрокВыборВидЦеныПоставщикаЗавершение(ВидЦеныПоставщика, ДополнительныеПараметры) Экспорт
Если ЗначениеЗаполнено(ВидЦеныПоставщика) Тогда
ЦеныРассчитаны = ЗаполнитьЦеныВыделенныхСтрокПоВидуЦеныПоставщикаСервер(ВидЦеныПоставщика);
ЦеныПартнеровЗаполнениеКлиент.ОповеститьОбОкончанииЗаполненияЦенПоВидуЦеныПоставщика(ЦеныРассчитаны, ВидЦеныПоставщика);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура НазначитьРучнуюСкидкуДляВыделенныхСтрок(Команда)
Если Не СкидкиНаценкиЗаполнениеКлиент.ВозможноНазначениеРучнойСкидкиНаценки(Объект, "Товары", НСтр("ru='Товары'")) Тогда
Возврат;
КонецЕсли;
АдресВоВременномХранилище = АдресДанныхДляРасчетаРучныхСкидокВоВременномХранилище(Истина);
Оповещение = Новый ОписаниеОповещения(
"НазначитьРучнуюСкидкуДляВыделенныхСтрокЗавершение",
ЭтотОбъект,
Новый Структура("АдресВоВременномХранилище", АдресВоВременномХранилище));
СкидкиНаценкиЗаполнениеКлиент.ОткрытьФормуНазначенияРучныхСкидок(
АдресВоВременномХранилище,
Объект.Валюта,
Оповещение,
Истина);
КонецПроцедуры
&НаКлиенте
Процедура НазначитьРучнуюСкидкуДляВыделенныхСтрокЗавершение(СуммаРучнойСкидкиНаценки, ДополнительныеПараметры) Экспорт
АдресВоВременномХранилище = ДополнительныеПараметры.АдресВоВременномХранилище;
Если СуммаРучнойСкидкиНаценки <> Неопределено Тогда
НазначитьРучнуюСкидкуНаСервере(СуммаРучнойСкидкиНаценки, Элементы.Товары.ВыделенныеСтроки, АдресВоВременномХранилище);
СкидкиНаценкиЗаполнениеКлиент.ОповеститьОбОкончанииНазначенияРучныхСкидокНаценок(СуммаРучнойСкидкиНаценки, Объект.Валюта);
РассчитатьИтоговыеПоказателиПоступления(ЭтаФорма);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОтменитьРучныеСкидки(Команда)
Если Не СкидкиНаценкиЗаполнениеКлиент.ВозможнаОтменаРучныхСкидокНаценок(Объект, "Товары", НСтр("ru='Товары'")) Тогда
Возврат;
КонецЕсли;
ОтменитьРучныеСкидкиНаСервере();
СкидкиНаценкиЗаполнениеКлиент.ОповеститьОбОкончанииНазначенияРучныхСкидокНаценок();
РассчитатьИтоговыеПоказателиПоступления(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ПодобратьТовары(Команда)
ОценкаПроизводительностиКлиент.НачатьЗамерВремени(Истина,
"Документ.ПриобретениеТоваровУслуг.ФормаДокумента.Команда.ПодобратьТовары");
Отказ = Ложь;
Если Не ЗначениеЗаполнено(Объект.Валюта) Тогда
ОчиститьСообщения();
СообщитьОбОшибкахОткрытияПодбора(Отказ);
КонецЕсли;
Если Отказ Тогда
Возврат;
КонецЕсли;
ХозяйственныеОперацииРаздельнойЗакупки = ХозяйственныеОперацииРаздельнойЗакупки();
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Документ", Объект.Ссылка);
ПараметрыФормы.Вставить("Партнер", Объект.Партнер);
ПараметрыФормы.Вставить("Соглашение", Объект.Соглашение);
ПараметрыФормы.Вставить("ЦенаВключаетНДС", Объект.ЦенаВключаетНДС);
ПараметрыФормы.Вставить("Склад", Объект.Склад);
ПараметрыФормы.Вставить("Валюта", Объект.Валюта);
ПараметрыФормы.Вставить("Дата", Объект.Дата);
ПараметрыФормы.Вставить("РежимПодбораИспользоватьСкладыВТабличнойЧасти", Истина);
ПараметрыФормы.Вставить("РежимПодбораИсключитьГруппыДоступныеВЗаказах", Истина);
Если Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПриемНаКомиссию") Тогда
ПараметрыФормы.Вставить("ОтборПоТипуНоменклатуры", Новый ФиксированныйМассив(НоменклатураКлиентСервер.ОтборПоТоваруМногооборотнойТаре(Ложь)));
ПараметрыФормы.Вставить("СкрыватьРучныеСкидки", Истина);
ИначеЕсли ХозяйственныеОперацииРаздельнойЗакупки.Найти(Объект.ХозяйственнаяОперация) <> Неопределено Тогда
ОтборПоТипуНоменклатуры = Новый ФиксированныйМассив(НоменклатураКлиентСервер.ОтборПоТоваруМногооборотнойТареУслугеРаботе(Ложь));
ПараметрыФормы.Вставить("ОтборПоТипуНоменклатуры", ОтборПоТипуНоменклатуры);
Иначе
ПараметрыФормы.Вставить("ОтборПоТипуНоменклатуры", Новый ФиксированныйМассив(НоменклатураКлиентСервер.ОтборПоТоваруМногооборотнойТареУслугеРаботе(Ложь)));
КонецЕсли;
ОткрытьФорму("Обработка.ПодборТоваровВДокументЗакупки.Форма", ПараметрыФормы, ЭтаФорма, УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ПодобратьТоварыПоЗаказамОрдерам(Команда)
ПодборТоваровИзЗаказа();
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьЦеныПоПоступлениям(Команда)
Если Не ЗначениеЗаполнено(Объект.Партнер) Тогда
ВызватьИсключение НСтр("ru = 'Для заполнения цен по последним поступлениям необходимо указать поставщика'");
КонецЕсли;
ЦеныЗаполнены = Ложь;
ЗаполнитьЦеныПоПоследнимПоступлениямСервер(ЦеныЗаполнены);
Если ЦеныЗаполнены Тогда
ПоказатьОповещениеПользователя(
НСтр("ru = 'Цены заполнены'"),
,
НСтр("ru= 'В строках документа заполнены цены'"),
БиблиотекаКартинок.Информация32);
Иначе
ПоказатьОповещениеПользователя(
НСтр("ru = 'Цены не заполнены'"),
,
НСтр("ru= 'Ни в одной строке цена не заполнена'"),
БиблиотекаКартинок.Информация32);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_СвойстваВыполнитьКоманду(ЭлементИлиКоманда, НавигационнаяСсылка = Неопределено, СтандартнаяОбработка = Неопределено)
УправлениеСвойствамиКлиент.ВыполнитьКоманду(ЭтотОбъект, ЭлементИлиКоманда, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ПоискПоШтрихкодуВыполнить(Команда)
ОчиститьСообщения();
Оповещение = Новый ОписаниеОповещения("ПоискПоШтрихкодуЗавершение", ЭтотОбъект);
ШтрихкодированиеНоменклатурыКлиент.ПоказатьВводШтрихкода(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ПоказатьНоменклатуруПоставщика(Команда)
НоменклатураПартнеровКлиент.ПоказатьНоменклатуруПартнера(Объект.Партнер, Объект.Ссылка, Элементы.Товары.ТекущиеДанные, НСтр("ru = 'Поставщик'"));
КонецПроцедуры
&НаКлиенте
Процедура ПолучитьВес(Команда)
ТекущаяСтрока = МенеджерОборудованияУТКлиент.ТекущаяСтрока(ЭтаФорма);
Если ТекущаяСтрока = Неопределено Тогда
Возврат;
КонецЕсли;
МенеджерОборудованияКлиент.НачатьПолученияВесаСЭлектронныхВесов(
Новый ОписаниеОповещения("ПолучитьВесЗавершение", ЭтотОбъект, ТекущаяСтрока),
УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ПолучитьВесЗавершение(РезультатВыполнения, ТекущаяСтрока) Экспорт
Если РезультатВыполнения.Результат Тогда
ТекущаяСтрока.КоличествоУпаковок = РезультатВыполнения.Вес;
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, ЭтаФорма);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиПоступления(ЭтаФорма);
Иначе
МенеджерОборудованияУТКлиент.СообщитьОбОшибке(РезультатВыполнения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьДанныеИзТСД(Команда)
ОчиститьСообщения();
МенеджерОборудованияКлиент.НачатьЗагрузкуДанныеИзТСД(
Новый ОписаниеОповещения("ЗагрузитьИзТСДЗавершение", ЭтотОбъект),
УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьИзТСДЗавершение(РезультатВыполнения, Параметры) Экспорт
Если РезультатВыполнения.Результат Тогда
ОбработатьШтрихкоды(РезультатВыполнения.ТаблицаТоваров);
Иначе
МенеджерОборудованияУТКлиент.СообщитьОбОшибке(РезультатВыполнения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ИзменитьКачествоНоменклатуры(Команда)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
ОчиститьСообщения();
Если ТекущаяСтрока = Неопределено Тогда
ТекстСообщения = НСтр("ru='Выберите строку табличной части'");
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстСообщения);
Возврат
КонецЕсли;
Если ЗначениеЗаполнено(ТекущаяСтрока.КодСтроки) Тогда
ПоказатьПредупреждение(Неопределено, НСтр("ru = 'Для строки по заказу запрещено изменять качество. Воспользуйтесь командой ""Отвязать строки от заказа"".'"));
Возврат;
КонецЕсли;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьНоменклатуруПартнераПоНоменклатуре", Объект.Партнер);
СтруктураДействий.Вставить("ПроверитьХарактеристикуПоВладельцу", ТекущаяСтрока.Характеристика);
СтруктураДействий.Вставить("ПроверитьУпаковкуПоВладельцу", ТекущаяСтрока.Упаковка);
СтруктураДействий.Вставить("ПроверитьЗаполнитьУпаковкуПоВладельцу", ТекущаяСтрока.Упаковка);
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц");
Если ИспользоватьСоглашенияСПоставщиками И ЗначениеЗаполнено(Объект.Соглашение) Тогда
СтруктураДействий.Вставить("ЗаполнитьУсловияЗакупок", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияЦеныЗакупкиВСтрокеТЧ(Объект));
Иначе
СтруктураДействий.Вставить("ЗаполнитьЦенуЗакупки", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияЦеныЗакупкиВСтрокеТЧ(Объект));
КонецЕсли;
ПараметрыЗаполненияСтавкиНДС = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект);
ПараметрыЗаполненияСтавкиНДС.УказаннаяСтавкаНДС = УказаннаяСтавкаНДС;
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", ПараметрыЗаполненияСтавкиНДС);
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Истина));
СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетов");
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействий.Вставить("ЗаполнитьПризнакВедетсяУчетПоГТД", Новый Структура("Номенклатура", "ВедетсяУчетПоГТД"));
СтруктураДействий.Вставить("ЗаполнитьСтрануПроисхожденияНоменклатуры",
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтраныПроисхождения());
СтруктураДействий.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтаФорма, СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиКлиентСерверЛокализация.ДополнитьСтруктуруДействийПриИзмененииЭлемента(ЭтотОбъект, "Номенклатура", СтруктураДействий);
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекЗаполненияСлужебныхРеквизитовТабличнойЧасти(СтруктураДействий);
ДоходыИРасходыКлиентСервер.ПриИзмененииРеквизитаДоступностиСтатьиВСтроке(ЭтотОбъект, ТекущаяСтрока, "Объект.Товары");
Если ЗначениеЗаполнено(ТекущаяСтрока.Характеристика) Тогда
СтруктураДействий.Вставить("ЗаполнитьХарактеристикуНекачественногоТовара", ТекущаяСтрока.Характеристика);
КонецЕсли;
Если ЗначениеЗаполнено(ТекущаяСтрока.Упаковка) Тогда
СтруктураДействий.Вставить("ЗаполнитьУпаковкуНекачественногоТовара", ТекущаяСтрока.Упаковка);
КонецЕсли;
ПараметрыПроверкиСерий = Новый Структура("Склад, ПараметрыУказанияСерий");
ПараметрыПроверкиСерий.ПараметрыУказанияСерий = ПараметрыУказанияСерий;
ПараметрыПроверкиСерий.Склад = ТекущаяСтрока.Склад;
СтруктураДействий.Вставить("ПроверитьСериюРассчитатьСтатус", ПараметрыПроверкиСерий);
Оповещение = Новый ОписаниеОповещения("ИзменитьКачествоНоменклатурыЗавершение", ЭтотОбъект);
СкладыКлиент.ИзменитьКачество(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения, Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ИзменитьКачествоНоменклатурыЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
ЗавершитьРедактированиеСтрокиТовары(Элементы.Товары, Ложь, Ложь);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьНомераГТД(Команда)
ПараметрыОповещения = Новый Структура("ЗаполненыНомераГТД", Неопределено);
ОписаниеОповещения = Новый ОписаниеОповещения("ЗаполнитьНомераГТДЗавершение", ЭтотОбъект, ПараметрыОповещения);
ОткрытьФорму("Справочник.НомераГТД.ФормаВыбора",
,
ЭтотОбъект,
УникальныйИдентификатор,
,
,
ОписаниеОповещения,
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьНомераГТДЗавершение(Результат, ДополнительныеПараметры) Экспорт
НомерГТД = Результат;
ЗаполненыНомераГТД = ДополнительныеПараметры.ЗаполненыНомераГТД;
Если ЗначениеЗаполнено(НомерГТД) Тогда
ЗаполнитьНомераГТДНаСервере(НомерГТД, ЗаполненыНомераГТД);
КонецЕсли;
ЗакупкиКлиент.ОповеститьОЗаполненииНомеровГТДВТабличнойЧасти(ЗаполненыНомераГТД, НомерГТД);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьНомераГТДПоПоступлениям(Команда)
ЗаполнитьНомераГТДПоПоследнимПоступлениям();
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьСкладВВыделенныхСтроках(Команда)
ВыделенныеСтроки = Элементы.Товары.ВыделенныеСтроки;
Если СкладыКлиент.ПроверитьВозможностьЗаполненияСкладовВТабличнойЧасти(Объект, Объект.Товары, НСтр("ru='Товары'"), ВыделенныеСтроки) Тогда
СтруктураОтбора = Новый Структура("ВыборГруппы,ЭтоГруппа", ПредопределенноеЗначение("Перечисление.ВыборГруппыСкладов.РазрешитьВЗаказахИНакладных"), Ложь);
СтруктураПараметров = Новый Структура("Отбор,ГруппаСкладов", СтруктураОтбора, Объект.Склад);
ОткрытьФорму("Справочник.Склады.ФормаВыбора", СтруктураПараметров, ЭтаФорма,,,, Новый ОписаниеОповещения("ЗаполнитьСкладВВыделенныхСтрокахЗавершение", ЭтотОбъект, Новый Структура("ВыделенныеСтроки", ВыделенныеСтроки)), РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьСкладВВыделенныхСтрокахЗавершение(Результат, ДополнительныеПараметры) Экспорт
ВыделенныеСтроки = ДополнительныеПараметры.ВыделенныеСтроки;
ВыбранныйСклад = Результат;
Если ЗначениеЗаполнено(ВыбранныйСклад) Тогда
ЗаполненоСтрок = ЗаполнитьСкладВВыделенныхСтрокахНаСервере(ВыделенныеСтроки, ВыбранныйСклад);
СкладыКлиент.ПоказатьОповещениеОЗаполненииСкладаВТабличнойЧасти(ВыбранныйСклад, ЗаполненоСтрок, ВыделенныеСтроки.Количество());
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура РазбитьСтрокуФакт(Команда)
ТаблицаФормы = Элементы.Товары;
ДанныеТаблицы = Объект.Товары;
ДополнительныеПараметры = УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеПараметровРазбиенияСтрокиТабличнойЧасти(ТаблицаФормы.ТекущиеДанные);
Оповещение = Новый ОписаниеОповещения("РазбитьСтрокуФактЗавершение", ЭтотОбъект, ДополнительныеПараметры);
РаботаСТабличнымиЧастямиКлиент.РазбитьСтроку(ДанныеТаблицы, ТаблицаФормы, Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ЗаписатьДокумент(Команда)
ОбщегоНазначенияУТКлиент.Записать(ЭтаФорма, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьНоменклатуруПоНоменклатуреПартнера(Команда)
Если Не ОбщегоНазначенияУТКлиент.ПроверитьНаличиеСтрокВСписке(Объект.Товары, "Товары") Тогда
Возврат;
КонецЕсли;
АдресТоваровВХранилище = ПоместитьТоварыВоВременноеХранилищеСервер("Товары");
ЗакупкиКлиент.ОткрытьФормуЗаполненияНоменклатурыПоставщика(
Новый ОписаниеОповещения("ЗаполнитьНоменклатуруПоНоменклатуреПартнераЗавершение", ЭтотОбъект),
АдресТоваровВХранилище,
ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьНоменклатуруПоНоменклатуреПартнераЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат <> Неопределено Тогда
ЗаполнитьТоварыИзВременногоХранилищаСервер(Результат);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПоказатьОтклоненияЦен(Команда)
ПоказатьОтклоненияЦен = Не ПоказатьОтклоненияЦен;
Элементы.ТоварыПоказатьОтклоненияЦен.Пометка = ПоказатьОтклоненияЦен;
Элементы.Товары.ОтборСтрок = Неопределено;
Если ПоказатьОтклоненияЦен Тогда
Элементы.Товары.ОтборСтрок = Новый ФиксированнаяСтруктура("ЦенаИзменилась", Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗакрытьЗаказ(Команда)
Если Модифицированность
Или Не Объект.Проведен Тогда
ПоказатьВопрос(Новый ОписаниеОповещения("ЗакрытьЗаказЗавершение", ЭтотОбъект),
НСтр("ru = 'Необходимо провести документ для выполнения операции. Провести документ?'"),
РежимДиалогаВопрос.ДаНет);
Возврат;
КонецЕсли;
ЗакрытьЗаказФрагмент();
КонецПроцедуры
&НаКлиенте
Процедура ЗакрытьЗаказЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
Ответ = РезультатВопроса;
Если Ответ = КодВозвратаДиалога.Нет Тогда
Возврат;
ИначеЕсли Не Записать(Новый Структура("РежимЗаписи", РежимЗаписиДокумента.Проведение)) Тогда
Возврат;
КонецЕсли;
ЗакрытьЗаказФрагмент();
КонецПроцедуры
&НаКлиенте
Процедура ЗакрытьЗаказФрагмент()
СписокЗаказовКЗакрытию = Новый СписокЗначений;
Если ЗначениеЗаполнено(Объект.ЗаказПоставщику) Тогда
СписокЗаказовКЗакрытию.Добавить(Объект.ЗаказПоставщику)
Иначе
СписокЗаказовКЗакрытию.ЗагрузитьЗначения(СписокЗаказов.ВыгрузитьЗначения())
КонецЕсли;
СтруктураЗакрытия = Новый Структура;
СтруктураЗакрытия.Вставить("Заказы", СписокЗаказовКЗакрытию);
СтруктураЗакрытия.Вставить("ДокументИнициатор", Объект.Ссылка);
СтруктураЗакрытия.Вставить("ОтменитьНеотработанныеСтроки", Истина);
СтруктураЗакрытия.Вставить("СкорректироватьЦены", Истина);
СтруктураЗакрытия.Вставить("ЗакрыватьЗаказы", Истина);
ОткрытьФорму("Обработка.ПомощникЗакрытияЗаказов.Форма.ФормаЗакрытия", СтруктураЗакрытия
,,,,, Неопределено, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура УказатьСерии(Команда)
ОткрытьПодборСерий();
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьКоличествоВДокументе(Команда)
ПроверитьКоличествоВДокументеКлиент();
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьКоличествоВДокументеЗавершение(Результат, ДополнительныеПараметры) Экспорт
ВозвращаемыеПараметры = Результат;
Если ВозвращаемыеПараметры <> Неопределено Тогда
ИзменитьТабличнуюЧастьПоРезультатамПроверки(ВозвращаемыеПараметры, ?(КэшированныеЗначения = Неопределено, ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения(), КэшированныеЗначения));
Модифицированность = Истина;
РассчитатьИтоговыеПоказателиПоступления(ЭтаФорма);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВставитьСтроки(Команда)
КоличествоТоваровДоВставки = Объект.Товары.Количество();
ПолучитьСтрокиИзБуфераОбмена();
КоличествоВставленных = Объект.Товары.Количество()-КоличествоТоваровДоВставки;
РаботаСТабличнымиЧастямиКлиент.ОповеститьПользователяОВставкеСтрок(КоличествоВставленных);
УстановитьПризнакЗаполненияСклада();
КонецПроцедуры
&НаКлиенте
Процедура СкопироватьСтроки(Команда)
Если РаботаСТабличнымиЧастямиКлиент.ВыбранаСтрокаДляВыполненияКоманды(Элементы.Товары) Тогда
СкопироватьСтрокиНаСервере("Товары");
РаботаСТабличнымиЧастямиКлиент.ОповеститьПользователяОКопированииСтрок(Элементы.Товары.ВыделенныеСтроки.Количество());
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДополнитьМногооборотнойТарой(Команда)
МногооборотнаяТараКлиент.ПодобратьМногооборотнуюТару(
ЭтаФорма,
"Товары",
"Номенклатура,Характеристика,Количество,Склад");
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьИзВнешнегоФайла(Команда)
ХозяйственныеОперацииИмпорта = ХозяйственныеОперацииИмпорта();
ХозяйственныеОперацииРаздельнойЗакупки = ХозяйственныеОперацииРаздельнойЗакупки();
ПоступлениеПоРаздельнойЗакупке = (ХозяйственныеОперацииРаздельнойЗакупки.Найти(Объект.ХозяйственнаяОперация) <> Неопределено);
ХозяйственнаяОперацияПриемНаКомиссию = (Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПриемНаКомиссию"));
ПараметрыЗагрузки = РаботаСТабличнымиЧастямиКлиент.ПараметрыЗагрузкиНоменклатуры();
ПараметрыЗагрузки.Организация = Объект.Организация;
ПараметрыЗагрузки.ЗаполнятьНоменклатуруПартнера = Объект.Партнер;
ПараметрыЗагрузки.ЗагружатьЦены = Истина;
ПараметрыЗагрузки.ЗагружатьСуммы = Истина;
ПараметрыЗагрузки.ЗагружатьГТД = ХозяйственныеОперацииИмпорта.Найти(Объект.ХозяйственнаяОперация) = Неопределено;
ПараметрыЗагрузки.ЗагружатьСкидки = Не ХозяйственнаяОперацияПриемНаКомиссию;
ПараметрыЗагрузки.ЦенаВключаетНДС = Объект.ЦенаВключаетНДС;
ПараметрыЗагрузки.НалогообложениеНДС = Объект.НалогообложениеНДС;
ПараметрыЗагрузки.ДатаЗаполнения = Объект.Дата;
ПараметрыЗагрузки.ЭтоВозвратнаяТара = Объект.ВернутьМногооборотнуюТару;
Если ПоступлениеПоРаздельнойЗакупке Тогда
ПараметрыЗагрузки.ПараметрыОтбора.Вставить("ТипНоменклатуры",
НоменклатураКлиентСервер.ОтборПоТоваруМногооборотнойТареУслуге(Ложь));
ИначеЕсли ХозяйственнаяОперацияПриемНаКомиссию Тогда
ПараметрыЗагрузки.ПараметрыОтбора.Вставить("ТипНоменклатуры",
НоменклатураКлиентСервер.ОтборПоТоваруМногооборотнойТаре(Ложь));
КонецЕсли;
Оповещение = Новый ОписаниеОповещения("ЗагрузитьИзВнешнегоФайлаЗавершение", ЭтотОбъект, "Товары");
РаботаСТабличнымиЧастямиКлиент.ПоказатьФормуЗагрузкиНоменклатуры(ПараметрыЗагрузки, Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьИзВнешнегоФайлаЗавершение(АдресЗагруженныхДанных, ДополнительныеПараметры) Экспорт
Если ЗначениеЗаполнено(АдресЗагруженныхДанных) Тогда
ПолучитьЗагруженныеТоварыИзХранилища(АдресЗагруженныхДанных, ДополнительныеПараметры);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПровестиДокумент(Команда)
ОбщегоНазначенияУТКлиент.Провести(ЭтаФорма, Истина);
КонецПроцедуры
&НаКлиенте
Процедура УстановитьПометкуУдаленияДокумента(Команда)
ОбщегоНазначенияУТКлиент.УстановитьПометкуУдаленияДокумента(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ПровестиИЗакрыть(Команда)
ОбщегоНазначенияУТКлиент.ПровестиИЗакрыть(ЭтаФорма, Истина);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуИнтеграции(Команда)
ИнтеграцияС1СДокументооборотБазоваяФункциональностьКлиент.ВыполнитьПодключаемуюКомандуИнтеграции(Команда, ЭтаФорма, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)
СобытияФормКлиент.ВыполнитьПереопределяемуюКоманду(ЭтаФорма, Команда);
КонецПроцедуры
&НаКлиенте
Процедура РасчетыНажатие(Элемент, СтандартнаяОбработка)
ВзаиморасчетыКлиент.РасчетыНажатие(ЭтаФорма, Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьДоговор(Элемент)
Если ЗначениеЗаполнено(Объект.Договор) Тогда
ОткрытьФорму("Справочник.ДоговорыКонтрагентов.Форма.ФормаЭлемента",
Новый Структура("Ключ", Объект.Договор));
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьСоглашение(Элемент)
Если ЗначениеЗаполнено(Объект.Соглашение) Тогда
ОткрытьФорму("Справочник.СоглашенияСПоставщиками.Форма.ФормаЭлемента",
Новый Структура("Ключ", Объект.Соглашение));
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьСерииПоДаннымПоступленияТоваров(Команда)
РезультатЗаполнения = ЗаполнитьСерииПоДаннымПоступленияТоваровНаСервере();
НоменклатураКлиент.ОповеститьОПерезаполненииСерий(РезультатЗаполнения.ЕстьИзменения, РезультатЗаполнения.КоличествоИзначальноВерное);
КонецПроцедуры
&НаКлиенте
Процедура ЗачетОплаты(Команда)
ПоместитьРасшифровкуПлатежаВоВременноеХранилище();
ВзаиморасчетыКлиент.ЗачетОплаты(ЭтаФорма, Элементы.ЗачетОплатыФорма);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьСтавкуНДС(Команда)
Если Объект.Товары.Количество() = 0 Тогда
ТекстПредупреждения = НСтр("ru = 'В список ""Товары"" не введено ни одной строки.'");
ПоказатьПредупреждение(, ТекстПредупреждения);
Возврат;
КонецЕсли;
ОповещениеОЗакрытии = Новый ОписаниеОповещения("ЗаполнитьСтавкуНДСЗавершение", ЭтотОбъект);
ПараметрыФормы = Новый Структура();
ПараметрыФормы.Вставить("ТипНалогообложенияНДС", Объект.НалогообложениеНДС);
ОткрытьФорму("Справочник.СтавкиНДС.ФормаВыбора", ПараметрыФормы,,,,, ОповещениеОЗакрытии);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
Процедура СвойстваВыполнитьОтложеннуюИнициализацию()
УправлениеСвойствами.ЗаполнитьДополнительныеРеквизитыВФорме(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьЗависимостиДополнительныхРеквизитов()
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПриИзмененииДополнительногоРеквизита(Элемент)
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПроверитьВыполнениеЗаданияИС()
СоответствиеТребованиямГИСМТКлиент.ПроверитьВыполнениеЗадания(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииКлючевыхРеквизитовСостояниеЭДО()
ПараметрыПриИзменении = ОбменСКонтрагентами.ПараметрыПриИзмененииКлючевыхРеквизитовЭДО();
ПараметрыПриИзменении.Форма = ЭтотОбъект;
ПараметрыПриИзменении.ДокументСсылка = Объект.Ссылка;
ПараметрыПриИзменении.ДокументОбъект = РеквизитФормыВЗначение("Объект");
ПараметрыПриИзменении.КонтроллерСостояниеЭДО = Элементы.ДекорацияСостояниеЭДО;
ПараметрыПриИзменении.ГруппаСостояниеЭДО = Элементы.ГруппаСостояниеЭДО;
ОбменСКонтрагентами.ПриИзмененииКлючевыхРеквизитовЭДО(ПараметрыПриИзменении);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьПодчиненныеСвойстваПоСтатистике(ИмяРеквизитаРодителя)
ЗаполнениеОбъектовПоСтатистике.ЗаполнитьПодчиненныеРеквизитыОбъекта(Объект, ИмяРеквизитаРодителя);
КонецПроцедуры
&НаСервере
Процедура УстановитьУсловноеОформлениеДляСтатейИАналитик()
ОперацииФактуровка = Новый СписокЗначений;
ОперацииФактуровка.Добавить(Перечисления.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭСФактуровкаПоставки);
ОперацииФактуровка.Добавить(Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщикаФактуровкаПоставки);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСписатьНаРасходы.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСтатьяРасходов.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыАналитикаРасходов.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыПодразделение.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЗаполнитьПодразделение.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ХозяйственнаяОперация");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
ОтборЭлемента.ПравоеЗначение = ОперацииФактуровка;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ВариантОформленияДоговораЗакупок");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ВариантыОформленияЗакупок.НеотфактурованныеПоставкиТоваровИУслуг;
Элемент.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСписатьНаРасходы.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ХозяйственнаяОперация");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеВСписке;
ОтборЭлемента.ПравоеЗначение = ОперацииФактуровка;
ГруппаОтбораИЛИ = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбораИЛИ.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ГруппаОтбораИ1 = ГруппаОтбораИЛИ.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбораИ1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаОтбораИ1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ТипыНоменклатуры.Услуга;
ГруппаОтбораИ2 = ГруппаОтбораИЛИ.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбораИ2.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаОтбораИ2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
СписокЗначений = Новый СписокЗначений;
СписокЗначений.Добавить(ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Товар"));
СписокЗначений.Добавить(ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.МногооборотнаяТара"));
СписокЗначений.Добавить(ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Работа"));
ОтборЭлемента.ПравоеЗначение = СписокЗначений;
ОтборЭлемента = ГруппаОтбораИ2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Назначение");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
ГруппаОтбораИ3 = ГруппаОтбораИЛИ.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбораИ3.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаОтбораИ3.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
СписокЗначений = Новый СписокЗначений;
СписокЗначений.Добавить(ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Товар"));
СписокЗначений.Добавить(ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.МногооборотнаяТара"));
ОтборЭлемента.ПравоеЗначение = СписокЗначений;
ОтборЭлемента = ГруппаОтбораИ3.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ХозяйственнаяОперация");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
СписокЗначений = Новый СписокЗначений;
СписокЗначений.Добавить(ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭСТоварыВПути"));
СписокЗначений.Добавить(ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ЗакупкаПоИмпортуТоварыВПути"));
СписокЗначений.Добавить(ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ЗакупкаУПоставщикаТоварыВПути"));
ОтборЭлемента.ПравоеЗначение = СписокЗначений;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСтатьяРасходов.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыАналитикаРасходов.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
СписокЗначений = Новый СписокЗначений;
СписокЗначений.Добавить(ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Товар"));
СписокЗначений.Добавить(ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.МногооборотнаяТара"));
СписокЗначений.Добавить(ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Работа"));
ОтборЭлемента.ПравоеЗначение = СписокЗначений;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Назначение");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<для товаров и работ без назначения>'"));
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ТекстЗапрещеннойЯчейкиЦвет);
КонецПроцедуры
&НаСервере
Процедура УстановитьУсловноеОформление()
ИспользоватьТоварыВПутиОтПоставщиков = ПолучитьФункциональнуюОпцию("ИспользоватьТоварыВПутиОтПоставщиков");
ИспользоватьНеотфактурованныеПоставки = ПолучитьФункциональнуюОпцию("ИспользоватьНеотфактурованныеПоставки");
ХозяйственныеОперацииРаздельнойЗакупки = ХозяйственныеОперацииРаздельнойЗакупки(ИспользоватьТоварыВПутиОтПоставщиков, ИспользоватьНеотфактурованныеПоставки);
СписокОперацийРаздельнойЗакупки = Новый СписокЗначений();
СписокОперацийРаздельнойЗакупки.ЗагрузитьЗначения(ХозяйственныеОперацииРаздельнойЗакупки);
УсловноеОформление.Элементы.Очистить();
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыНоменклатураПартнера.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Партнер");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыНоменклатураПартнера.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Партнер");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.НезаполненноеПолеТаблицы);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<выберите поставщика>'"));
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСклад.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ТипыНоменклатуры.Услуга;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
УчетНДСУП.УстановитьУсловноеОформлениеСуммНДСПоНалогообложениюЗакупки(ЭтаФорма);
ЦеныПредприятияЗаполнениеСервер.УстановитьУсловноеОформлениеЦенаВключаетНДС(ЭтаФорма);
НоменклатураСервер.УстановитьУсловноеОформлениеЕдиницИзмерения(ЭтаФорма);
НоменклатураСервер.УстановитьУсловноеОформлениеХарактеристикНоменклатуры(ЭтаФорма);
СкладыСервер.УстановитьУсловноеОформлениеСкладаВТЧ(ЭтаФорма);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСклад.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеВСписке;
СписокЗначений = Новый СписокЗначений;
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.Товар);
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.МногооборотнаяТара);
ОтборЭлемента.ПравоеЗначение = СписокЗначений;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.НезаполненноеПолеТаблицы);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<для товаров>'"));
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСклад.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
СписокЗначений = Новый СписокЗначений;
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.Товар);
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.МногооборотнаяТара);
ОтборЭлемента.ПравоеЗначение = СписокЗначений;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.СписатьНаРасходы");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Склад");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЗаказПоставщику.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ЗаказПоставщику");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ГиперссылкаЦвет);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСделка.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Сделка");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ГиперссылкаЦвет);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЗаказПоставщику.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСделка.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыКодСтроки.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ПоступлениеПоЗаказам");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЗаказПоставщику.Имя);
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.КодСтроки");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Согласован");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ЗаказПоставщику");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЗаказПоставщику.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ПоступлениеПоЗаказам");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ЗаказПоставщику");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ЗаказПоставщику");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыКодСтроки.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.КодСтроки");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ЗаказПоставщику");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ЗаказПоставщику");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ГиперссылкаЦвет);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<сверх заказа>'"));
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыКодСтроки.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.КодСтроки");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ЗаказПоставщику");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ЗаказПоставщику");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ПоясняющийОшибкуТекст);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<сверх заказа, заказ не выбран>'"));
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЗаказПоставщику.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ЗаказПоставщику");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.КодСтроки");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ГиперссылкаЦвет);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", Новый ПолеКомпоновкиДанных("Объект.ЗаказПоставщику"));
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСуммаВзаиморасчетов.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Валюта");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ВалютаВзаиморасчетов");
Элемент.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
ПараметрыУсловногоОформления = НоменклатураСервер.ПараметрыУстановкиУсловногоОформленияНомераГТД();
ПараметрыУсловногоОформления.ИмяПоляВводаНомераГТД = "ТоварыНомерГТДСтранаПроисхождения";
НоменклатураСервер.УстановитьУсловноеОформлениеНомераГТД(ЭтотОбъект);
НоменклатураСервер.УстановитьУсловноеОформлениеНомераГТД(ЭтотОбъект, ПараметрыУсловногоОформления);
ПараметрыУсловногоОформления = УчетПрослеживаемыхТоваровЛокализация.ПараметрыУстановкиУсловногоОформленияНомераГТД();
ПараметрыУсловногоОформления.ИмяПоляВводаСтранаПроисхождения = "ТоварыНомерГТДСтранаПроисхождения";
УчетПрослеживаемыхТоваровЛокализация.УстановитьУсловноеОформлениеНомераГТД(ЭтотОбъект, ПараметрыУсловногоОформления);
УчетПрослеживаемыхТоваровЛокализация.УстановитьУсловноеОформлениеВДокументеПриобретениеТоваровУслуг(ЭтотОбъект);
УчетПрослеживаемыхТоваровЛокализация.УстановитьУсловноеОформлениеКоличестваПоРНПТ(ЭтотОбъект);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЗаказПоставщику.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСделка.Имя);
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ЗаказПоставщику");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ПоступлениеПоЗаказам");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыКодСтроки.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ПоступлениеПоЗаказам");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ЗаказПоставщику");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.КодСтроки");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ГиперссылкаЦвет);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<сверх заказа>'"));
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.Договор.Имя);
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Договор");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ГруппаОтбора2 = ГруппаОтбора1.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора2.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ОтборЭлемента = ГруппаОтбора2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Соглашение");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
ОтборЭлемента = ГруппаОтбора2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ХозяйственнаяОперация");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
ОтборЭлемента.ПравоеЗначение = СписокОперацийРаздельнойЗакупки;
ОтборЭлемента = ГруппаОтбора2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ПорядокРасчетов");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ПорядокРасчетов.ПоДоговорамКонтрагентов;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.Договор.Имя);
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ГруппаОтбора2 = ГруппаОтбора1.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора2.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаОтбора2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Соглашение");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ОтборЭлемента = ГруппаОтбора2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ХозяйственнаяОперация");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеВСписке;
ОтборЭлемента.ПравоеЗначение = СписокОперацийРаздельнойЗакупки;
ОтборЭлемента = ГруппаОтбора2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ПорядокРасчетов");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ПорядокРасчетов.ПоДоговорамКонтрагентов;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Договор");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
ОбщегоНазначенияУТ.УстановитьСнятьОтметкуНезаполненного(
УсловноеОформление, "ТоварыСклад", "Объект.Товары.Склад", "Объект.Товары.СкладОбязателен");
ОбщегоНазначенияУТ.УстановитьСнятьОтметкуНезаполненного(
УсловноеОформление, "Склад", "Объект.Склад", "СкладОбязателен");
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЦенаЗаказа.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыПроцентОтклоненияОтЦеныЗаказа.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыИндексКартинки.Имя);
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ПоступлениеПоЗаказам");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ПравоНаЧтениеЗаказовПоставщику");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыПроцентОтклоненияОтЦеныЗаказа.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЦенаЗаказа.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыИндексКартинки.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ЦенаЗаказа");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Меньше;
ОтборЭлемента.ПравоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Цена");
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", WebЦвета.FireBrick);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыПроцентОтклоненияОтЦеныЗаказа.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЦенаЗаказа.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыИндексКартинки.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ЦенаЗаказа");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Больше;
ОтборЭлемента.ПравоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Цена");
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", WebЦвета.Green);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыНомерГТДСтранаПроисхождения.Имя);
ХозяйственныеОперацииИмпорта = ХозяйственныеОперацииИмпорта();
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ХозяйственнаяОперация");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
ОтборЭлемента.ПравоеЗначение = ХозяйственныеОперацииИмпорта;
Элемент.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
ПараметрыУстановки = МногооборотнаяТараСервер.ПараметрыУстановкиУсловногоОформленияДляСтрокСМногооборотнойТарой();
ПараметрыУстановки.Форма = ЭтаФорма;
ПараметрыУстановки.ЭтоПоступление = Истина;
МногооборотнаяТараСервер.УстановитьУсловноеОформлениеДляСтрокСМногооборотнойТарой(ПараметрыУстановки);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыВидЗапасов.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеВСписке;
СписокЗначений = Новый СписокЗначений;
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.Товар);
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.МногооборотнаяТара);
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.Работа);
ОтборЭлемента.ПравоеЗначение = СписокЗначений;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.НезаполненноеПолеТаблицы);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<для товаров>'"));
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
НоменклатураСервер.УстановитьУсловноеОформлениеСерийНоменклатуры(ЭтаФорма, Ложь);
НоменклатураСервер.УстановитьУсловноеОформлениеСтатусовУказанияСерий(ЭтаФорма, Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЗаказПоставщику.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ЗаказПоставщику");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ПоступлениеПоЗаказам");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
НоменклатураСервер.УстановитьУсловноеОформлениеНазначенияНоменклатуры(ЭтаФорма);
УстановитьУсловноеОформлениеДляСтатейИАналитик();
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыПодразделение.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
СписокЗначений = Новый СписокЗначений;
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.Товар);
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.МногооборотнаяТара);
ОтборЭлемента.ПравоеЗначение = СписокЗначений;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.СписатьНаРасходы");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("СкладГруппа");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<при списании на расходы>'"));
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ТекстЗапрещеннойЯчейкиЦвет);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыПодразделение.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипНазначения");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = ПредопределенноеЗначение("Перечисление.ТипыНазначений.ПоставкаПодПринципала");
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<для закупки не под принципала>'"));
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ТекстЗапрещеннойЯчейкиЦвет);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСклад.Имя);
ГруппаОтбора0 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора0.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИЛИ;
ОтборЭлемента = ГруппаОтбора0.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
СписокЗначений = Новый СписокЗначений;
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.Работа);
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.Услуга);
ОтборЭлемента.ПравоеЗначение = СписокЗначений;
ОтборЭлемента = ГруппаОтбора0.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.СписатьНаРасходы");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыПодразделение.Имя);
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ХозяйственнаяОперация");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
ОтборЭлемента.ПравоеЗначение = НоменклатураСервер.СписокХозяйственныхОперацийИсключающихУслугиИРаботы();
ГруппаОтбора2 = ГруппаОтбора1.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора2.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаОтбора2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
СписокЗначений = Новый СписокЗначений;
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.Товар);
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.МногооборотнаяТара);
ОтборЭлемента.ПравоеЗначение = СписокЗначений;
ОтборЭлемента = ГруппаОтбора2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("СкладГруппа");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
ОтборЭлемента = ГруппаОтбора2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.СписатьНаРасходы");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыПодразделение.Имя);
ГруппаОтбора0 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора0.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаНе;
ГруппаОтбора1 = ГруппаОтбора0.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Подразделение");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ГруппаОтбора2 = ГруппаОтбора1.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора2.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИЛИ;
ГруппаОтбора3 = ГруппаОтбора2.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора3.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаОтбора3.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
СписокЗначений = Новый СписокЗначений;
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.Товар);
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.МногооборотнаяТара);
ОтборЭлемента.ПравоеЗначение = СписокЗначений;
ОтборЭлемента = ГруппаОтбора3.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.СписатьНаРасходы");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
ГруппаОтбора4 = ГруппаОтбора2.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора4.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаОтбора4.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
СписокЗначений = Новый СписокЗначений;
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.Услуга);
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.Работа);
ОтборЭлемента.ПравоеЗначение = СписокЗначений;
ОтборЭлемента = ГруппаОтбора4.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Назначение");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ГруппаОтбора5 = ГруппаОтбора2.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора5.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаОтбора5.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ТипыНоменклатуры.Работа;
ОтборЭлемента = ГруппаОтбора5.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипНазначения");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ТипыНазначений.ПоставкаПодПринципала;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыПодразделение.Имя);
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Подразделение");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ГруппаОтбора2 = ГруппаОтбора1.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора2.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИЛИ;
ГруппаОтбора3 = ГруппаОтбора2.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора3.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаОтбора3.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
СписокЗначений = Новый СписокЗначений;
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.Товар);
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.МногооборотнаяТара);
ОтборЭлемента.ПравоеЗначение = СписокЗначений;
ОтборЭлемента = ГруппаОтбора3.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.СписатьНаРасходы");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
ГруппаОтбора4 = ГруппаОтбора2.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора4.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаОтбора4.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
СписокЗначений = Новый СписокЗначений;
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.Услуга);
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.Работа);
ОтборЭлемента.ПравоеЗначение = СписокЗначений;
ОтборЭлемента = ГруппаОтбора4.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Назначение");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ГруппаОтбора5 = ГруппаОтбора2.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора5.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаОтбора5.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ТипыНоменклатуры.Работа;
ОтборЭлемента = ГруппаОтбора5.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипНазначения");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ТипыНазначений.ПоставкаПодПринципала;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Истина);
УчетНДСУП.УстановитьУсловноеОформлениеСуммНДСПоНалогообложениюЗакупки(ЭтаФорма);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыНазначение.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.КодСтроки");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Больше;
ОтборЭлемента.ПравоеЗначение = 0;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
НаправленияДеятельностиСервер.УстановитьУсловноеОформлениеНаправленияДеятельности(ЭтаФорма);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыНомерВходящегоДокумента.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыДатаВходящегоДокумента.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыНаименованиеВходящегоДокумента.Имя);
ГруппаОтбора = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ОтборЭлемента = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ХозяйственнаяОперация");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ХозяйственныеОперации.ЗакупкаЧерезПодотчетноеЛицо;
ОтборЭлемента = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Контрагент");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
ОтборЭлемента = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Дата");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Меньше;
ОтборЭлемента.ПравоеЗначение = Новый ПолеКомпоновкиДанных("ДатаНачалаПечатиЕдиногоАвансовогоОтчета");
Элемент.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.Партнер.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.Контрагент.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.Договор.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ХозяйственнаяОперация");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ХозяйственныеОперации.ЗакупкаЧерезПодотчетноеЛицо;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.НалогообложениеНДС");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ТипыНалогообложенияНДС.ПродажаНеОблагаетсяНДС;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
КонецПроцедуры
#Область ПриИзмененииРеквизитов
&НаСервере
Процедура ПартнерПриИзмененииСервер()
НаправлениеДеятельностиСтарое = Объект.НаправлениеДеятельности;
ДокументЗакупки = РеквизитФормыВЗначение("Объект");
ДокументЗакупки.ЗаполнитьУсловияЗакупокПоУмолчанию(Ложь);
ОтветственныеЛицаСервер.ЗаполнитьСписокВыбораМенеджера(Элементы.Менеджер, ДокументЗакупки);
ДокументОснование = ЗакупкиСервер.ДокументОснование(ДокументЗакупки, "ПоступлениеПоЗаказам, ЗаказПоставщику, Товары.ЗаказПоставщику");
ОтветственныеЛицаСервер.УстановитьМенеджера(ДокументЗакупки, ДокументОснование);
ЗначениеВРеквизитФормы(ДокументЗакупки, "Объект");
КонтрагентЮрФизЛицо = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Контрагент, "ЮрФизЛицо");
Если Договор <> Объект.Договор Тогда
ДоговорПриИзмененииСервер();
КонецЕсли;
ВалютаДокумента = Объект.Валюта;
МассивРеквизитов = Новый Массив;
МассивРеквизитов.Добавить("Валюта");
МассивРеквизитов.Добавить("ВалютаВзаиморасчетов");
МассивРеквизитов.Добавить("Партнер");
МассивРеквизитов.Добавить("НаправлениеДеятельности");
МассивРеквизитов.Добавить("Организация");
МассивРеквизитов.Добавить("Соглашение");
ИзмененныеРеквизиты = ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, МассивРеквизитов);
Если ИзмененныеРеквизиты.Свойство("ПорядокРасчетов") Тогда
УстановитьСвойстваЭлементовПоПорядкуРасчетов();
КонецЕсли;
СкладГруппа = Справочники.Склады.ЭтоГруппаИСкладыИспользуютсяВТЧДокументовЗакупки(Объект.Склад);
СкладПриИзмененииСервер();
ХозяйственнаяОперацияПриИзмененииСервер(Ложь);
ВернутьМногооборотнуюТаруПриИзмененииСервер();
НоменклатураПартнеровСервер.ЗаполнитьНоменклатуруПартнераПоНоменклатуреПриИзмененииПартнера(Объект.Товары, Объект.Партнер);
ОбновитьДоступностьЭлементовВозвратнойТары(ЭтаФорма);
СтруктураНаименованийТабличныхЧастей = Новый Структура("Товары");
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре(СтруктураНаименованийТабличныхЧастей);
ЗакупкиСервер.ЗаполнитьСлужебныеРеквизитыНомераГТД(Объект.Товары);
ЗаполнитьСлужебныеРеквизитыПоНазначениюВТЧ();
МногооборотнаяТараСервер.ОбновитьПризнакБезВозвратнойТары(Объект.Товары, Объект.ВернутьМногооборотнуюТару);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
РассчитатьИтоговыеПоказателиПоступления(ЭтаФорма);
ОбновитьТекстДокументыНаОсновании();
ЗакупкиСервер.УстановитьДоступностьДоговора(Объект, Элементы.Договор.Доступность, Элементы.Договор.Видимость, Объект.Договор);
ЗаполнитьПодчиненныеСвойстваПоСтатистике("Контрагент");
КонтрагентПриИзмененииСервер();
ОтветственныеЛицаСервер.ПриИзмененииСвязанныхРеквизитовДокумента(Объект);
Если ИспользоватьНаправленияДеятельности Тогда
НаправленияДеятельностиСервер.ЗаполнитьНаправлениеПоУмолчанию(Объект.НаправлениеДеятельности, Объект.Соглашение, Объект.Договор);
КонецЕсли;
ЗаполнитьУстановитьРеквизитыДоставкиСервер("Партнер");
ПриИзмененииНаправленияДеятельностиСервер();
ФормированиеФискальныхЧековСервер.ФормаПриИзмененииРеквизитов(ЭтотОбъект);
Если НаправлениеДеятельностиСтарое <> Объект.НаправлениеДеятельности Тогда
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПартнерОчисткаСервер()
ОтветственныеЛицаСервер.ЗаполнитьСписокВыбораМенеджера(Элементы.Менеджер, Объект);
ДокументОснование = ЗакупкиСервер.ДокументОснование(Объект, "ПоступлениеПоЗаказам, ЗаказПоставщику, Товары.ЗаказПоставщику");
ОтветственныеЛицаСервер.УстановитьМенеджера(Объект, ДокументОснование);
КонецПроцедуры
&НаСервере
Процедура СоглашениеПриИзмененииСервер(ПересчитыватьЦены=Истина)
НаправлениеДеятельностиСтарое = Объект.НаправлениеДеятельности;
ЦенаВключаетНДС = Объект.ЦенаВключаетНДС;
ЗакупкиСервер.УстановитьДоступностьДоговора(Объект, Элементы.Договор.Доступность, Элементы.Договор.Видимость, Объект.Договор);
Если ЗначениеЗаполнено(Объект.Соглашение) Тогда
ДокументЗакупки = РеквизитФормыВЗначение("Объект");
УсловияЗакупок = ЗакупкиСервер.ПолучитьУсловияЗакупок(ДокументЗакупки.Соглашение, Истина, Истина);
ДокументЗакупки.ЗаполнитьУсловияЗакупок(УсловияЗакупок);
ЗначениеВРеквизитФормы(ДокументЗакупки, "Объект");
Если Договор <> Объект.Договор Тогда
ДоговорПриИзмененииСервер();
КонецЕсли;
Если ЗначениеЗаполнено(Объект.Организация) Тогда
ДенежныеСредстваСервер.ПроверитьЗаполнитьБанковскийСчетОрганизацииПоВладельцу(Объект.Организация, Объект.БанковскийСчетОрганизации, , Объект.НаправлениеДеятельности);
КонецЕсли;
ВалютаДокумента = Объект.Валюта;
МассивРеквизитов = Новый Массив;
МассивРеквизитов.Добавить("Валюта");
МассивРеквизитов.Добавить("ВалютаВзаиморасчетов");
МассивРеквизитов.Добавить("Партнер");
МассивРеквизитов.Добавить("НаправлениеДеятельности");
МассивРеквизитов.Добавить("Организация");
МассивРеквизитов.Добавить("Соглашение");
ИзмененныеРеквизиты = ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, МассивРеквизитов);
Если ИзмененныеРеквизиты.Свойство("ПорядокРасчетов") Тогда
УстановитьСвойстваЭлементовПоПорядкуРасчетов();
КонецЕсли;
Если ПересчитыватьЦены Тогда
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
ПараметрыЗаполненияЦены = ЦеныПартнеровЗаполнениеСервер.НовыйПараметрыЗаполненияЗаполнитьЦены();
ПараметрыЗаполненияЦены.Вставить("ПоляЗаполнения", "Цена, СтавкаНДС, ВидЦеныПоставщика");
ПараметрыЗаполненияЦены.Вставить("Дата", Объект.Дата);
ПараметрыЗаполненияЦены.Вставить("Организация", Объект.Организация);
ПараметрыЗаполненияЦены.Вставить("Валюта", Объект.Валюта);
ПараметрыЗаполненияЦены.Вставить("Соглашение", Объект.Соглашение);
ПараметрыЗаполненияЦены.Вставить("НалогообложениеНДС", Объект.НалогообложениеНДС);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСумму", "КоличествоУпаковок");
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуРучнойСкидки", "КоличествоУпаковок");
СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетов", Неопределено);
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Ложь));
ЦеныПартнеровЗаполнениеСервер.ЗаполнитьЦены(
Объект.Товары,
Неопределено,
ПараметрыЗаполненияЦены,
СтруктураДействий);
ИначеЕсли ЦенаВключаетНДС <> Объект.ЦенаВключаетНДС Тогда
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетов");
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий, Неопределено);
КонецЕсли;
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПриемНаКомиссию
И ИспользоватьРучныеСкидкиВЗакупках Тогда
ЗакупкиСервер.ОтменитьРучныеСкидки(Объект, "Товары", Истина);
КонецЕсли;
СкладГруппа = Справочники.Склады.ЭтоГруппаИСкладыИспользуютсяВТЧДокументовЗакупки(Объект.Склад);
СкладПриИзмененииСервер();
ХозяйственнаяОперацияПриИзмененииСервер(Ложь);
ВернутьМногооборотнуюТаруПриИзмененииСервер();
ОбновитьДоступностьЭлементовВозвратнойТары(ЭтаФорма);
СтруктураНаименованийТабличныхЧастей = Новый Структура("Товары");
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре(СтруктураНаименованийТабличныхЧастей);
ЗакупкиСервер.ЗаполнитьСлужебныеРеквизитыНомераГТД(Объект.Товары);
МногооборотнаяТараСервер.ОбновитьПризнакБезВозвратнойТары(Объект.Товары, Объект.ВернутьМногооборотнуюТару);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
Если Объект.ПоступлениеПоЗаказам Тогда
ОбновитьОтклоненияОтЗаказа();
КонецЕсли;
РассчитатьИтоговыеПоказателиПоступления(ЭтаФорма);
ОбновитьТекстДокументыНаОсновании();
КонецЕсли;
Если ИспользоватьНаправленияДеятельности Тогда
НаправленияДеятельностиСервер.ЗаполнитьНаправлениеПоУмолчанию(Объект.НаправлениеДеятельности, Объект.Соглашение, Объект.Договор);
КонецЕсли;
ОтветственныеЛицаСервер.ЗаполнитьСписокВыбораМенеджера(Элементы.Менеджер, Объект);
ОтветственныеЛицаСервер.УстановитьМенеджера(
Объект, ЗакупкиСервер.ДокументОснование(Объект, "ПоступлениеПоЗаказам, ЗаказПоставщику, Товары.ЗаказПоставщику"));
ЗаполнитьПодчиненныеСвойстваПоСтатистике("Договор");
ОтветственныеЛицаСервер.ПриИзмененииСвязанныхРеквизитовДокумента(Объект);
ПриИзмененииНаправленияДеятельностиСервер();
Если НаправлениеДеятельностиСтарое <> Объект.НаправлениеДеятельности Тогда
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
КонецЕсли;
ДоставкаТоваров.ПриЧтенииСозданииРаспоряженийНаСервере(Элементы, Объект, Объект.ПоступлениеПоЗаказам,,СводнаяИнформацияПоДоставке);
Распоряжение = РаспоряжениеДляПолученияВариантаПриемкиТоваров();
Объект.ВариантПриемкиТоваров = ЗакупкиСервер.ПолучитьВариантПриемкиТоваров(Распоряжение, Объект.Договор);
КонецПроцедуры
&НаСервере
Процедура ДоговорПриИзмененииСервер()
НаправлениеДеятельностиСтарое = Объект.НаправлениеДеятельности;
ЗакупкиВызовСервера.ЗаполнитьБанковскиеСчетаПоДоговору(Объект.Договор, Объект.БанковскийСчетОрганизации, Объект.БанковскийСчетКонтрагента);
Если Договор <> Объект.Договор Тогда
ВзаиморасчетыСервер.ПриИзмененииПараметровМеханизма(ЭтаФорма);
КонецЕсли;
ИзмененныеРеквизиты = ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, "Договор");
Если ИзмененныеРеквизиты.Свойство("ПорядокРасчетов") Тогда
УстановитьСвойстваЭлементовПоПорядкуРасчетов();
КонецЕсли;
Если ИспользоватьНаправленияДеятельности Тогда
НаправленияДеятельностиСервер.ЗаполнитьНаправлениеПоУмолчанию(Объект.НаправлениеДеятельности, Объект.Соглашение, Объект.Договор);
КонецЕсли;
ЗаполнитьНалогообложениеНДСЗакупки();
НалогообложениеНДСПриИзмененииСервер();
ЗаполнитьВидДеятельностиНДС();
ЗаполнитьПодчиненныеСвойстваПоСтатистике("Договор");
ПриИзмененииНаправленияДеятельностиСервер();
Если НаправлениеДеятельностиСтарое <> Объект.НаправлениеДеятельности Тогда
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
КонецЕсли;
Если Договор <> Объект.Договор Тогда
Договор = Объект.Договор;
Распоряжение = РаспоряжениеДляПолученияВариантаПриемкиТоваров();
Объект.ВариантПриемкиТоваров = ЗакупкиСервер.ПолучитьВариантПриемкиТоваров(Распоряжение, Объект.Договор);
КонецЕсли;
ДоставкаТоваров.ПриЧтенииСозданииРаспоряженийНаСервере(Элементы, Объект, Объект.ПоступлениеПоЗаказам,,СводнаяИнформацияПоДоставке);
ПриИзмененииКлючевыхРеквизитовСостояниеЭДО();
ОтветственныеЛицаСервер.ЗаполнитьСписокВыбораМенеджера(Элементы.Менеджер, Объект);
ОтветственныеЛицаСервер.УстановитьМенеджера(
Объект, ЗакупкиСервер.ДокументОснование(Объект, "ПоступлениеПоЗаказам, ЗаказПоставщику, Товары.ЗаказПоставщику"));
УстановитьПараметрыВыбораНоменклатуры();
ВариантОформленияДоговораЗакупок = ЗакупкиСервер.ПолучитьВариантОформленияДоговораЗакупок(Объект.Договор);
НастроитьКолонкиСписанияПоРасходамТЧТовары();
НастроитьВидимостьКомандыЗаполнитьПодразделение();
ДенежныеСредстваСерверЛокализация.НастроитьЭлементыОперацииССамозанятым(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ВалютаПриИзмененииСервер(НоваяВалюта)
СтараяВалюта = ВалютаДокумента;
ДатаДокумента = ?(ЗначениеЗаполнено(Объект.ДатаКурсаВалютыДокумента), Объект.ДатаКурсаВалютыДокумента, ?(ЗначениеЗаполнено(Объект.Дата), Объект.Дата, ТекущаяДатаСеанса()));
СтруктурыКурсов = ВзаиморасчетыСервер.КурсыВалютДляПересчета(ЭтаФорма, СтараяВалюта, НоваяВалюта, ВалютаРегламентированногоУчета, ДатаДокумента);
СтруктураКурсовСтаройВалюты = СтруктурыКурсов.СтруктураКурсовСтаройВалюты;
СтруктураКурсовНовойВалюты = СтруктурыКурсов.СтруктураКурсовНовойВалюты;
Ценообразование.ПересчитатьСуммыТабличнойЧастиВВалюту(
Объект.Товары,
Объект.ЦенаВключаетНДС,
СтараяВалюта,
НоваяВалюта,
СтруктураКурсовСтаройВалюты,
СтруктураКурсовНовойВалюты,
Ложь,
Истина);
Если Объект.ПоступлениеПоЗаказам Тогда
ЗаполнитьЦеныНоменклатурыЗаказов();
КонецЕсли;
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
РассчитатьИтоговыеПоказателиПоступления(ЭтаФорма);
ЗаполнитьПодчиненныеСвойстваПоСтатистике("Валюта");
КонецПроцедуры
&НаСервере
Процедура ХозяйственнаяОперацияПриИзмененииСервер(ВызовПоКоманде = Истина)
ХозОперацииЗакупкаВСтранахЕАЭС = ЗакупкиВызовСервера.ХозяйственныеОперацииПоОсновной(
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭС"));
ХозОперацииЗакупкаПоИмпорту = ЗакупкиВызовСервера.ХозяйственныеОперацииПоОсновной(
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ЗакупкаПоИмпорту"));
ХозяйственнаяОперацияДоговораНовая = ПолучитьХозяйственнуюОперациюДоговора(Объект.ХозяйственнаяОперация);
Если ХозяйственнаяОперацияДоговораНовая <> ХозяйственнаяОперацияДоговора Тогда
Объект.Договор = Неопределено;
ХозяйственнаяОперацияДоговора = ХозяйственнаяОперацияДоговораНовая;
КонецЕсли;
Если ВызовПоКоманде Тогда
ЗаполнитьДоговорПоУмолчанию();
КонецЕсли;
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПриемНаКомиссию Тогда
Объект.ВернутьМногооборотнуюТару = Ложь;
Объект.ДатаВозвратаМногооборотнойТары = Неопределено;
ВернутьМногооборотнуюТаруПриИзмененииСервер();
Если ИспользоватьРучныеСкидкиВЗакупках Тогда
ЗакупкиСервер.ОтменитьРучныеСкидки(Объект,"Товары", Истина);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
КонецЕсли;
ИначеЕсли Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщикаРеглУчет Тогда
Объект.ПоступлениеПоЗаказам = Ложь;
ПоступлениеПоНесколькимЗаказамПриИзменении();
Объект.ВернутьМногооборотнуюТару = Ложь;
ВернутьМногооборотнуюТаруПриИзмененииСервер();
ИначеЕсли ХозОперацииЗакупкаПоИмпорту.Найти(Объект.ХозяйственнаяОперация) <> Неопределено
Или ХозОперацииЗакупкаВСтранахЕАЭС.Найти(Объект.ХозяйственнаяОперация) <> Неопределено Тогда
Объект.ВернутьМногооборотнуюТару = Ложь;
ВернутьМногооборотнуюТаруПриИзмененииСервер();
ИначеЕсли Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ЗакупкаЧерезПодотчетноеЛицо Тогда
Объект.ПоступлениеПоЗаказам = Ложь;
Объект.ЗаказПоставщику = Неопределено;
Объект.Соглашение = Справочники.СоглашенияСПоставщиками.ПустаяСсылка();
ОтвязатьСтрокиОтЗаказовПоставщикам();
СписокЗаказов.Очистить();
УстановитьВидимостьКомандПоЗаказу();
ОбновитьЗависимыеРеквизитыФормыСерверПоЗаказу();
ОбновитьИнформациюПоЗаказам();
КонецЕсли;
Если ХозяйственныеОперацииРаздельнойЗакупки().Найти(Объект.ХозяйственнаяОперация) <> Неопределено
И ЗначениеЗаполнено(Объект.Соглашение) Тогда
ИспользуютсяДоговорыКонтрагентов = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Соглашение,
"ИспользуютсяДоговорыКонтрагентов");
Если ИспользуютсяДоговорыКонтрагентов <> Неопределено И Не ИспользуютсяДоговорыКонтрагентов Тогда
Объект.Соглашение = Справочники.СоглашенияСПоставщиками.ПустаяСсылка();
КонецЕсли;
КонецЕсли;
УстановитьВидимостьКоличестваРНПТ();
Если Не Элементы.ТоварыГруппаКоличествоПоРНПТ.Видимость Тогда
ПересчитатьКоличествоРНПТ();
КонецЕсли;
УстановитьВидимостьЭлементовПоОперацииСервер();
УстановитьПараметрыВыбораВидаЗапасов();
МногооборотнаяТараСервер.ОбновитьПризнакБезВозвратнойТары(Объект.Товары, Объект.ВернутьМногооборотнуюТару);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
РассчитатьИтоговыеПоказателиПоступления(ЭтаФорма);
УстановитьДоступностьСоглашений();
ОбновитьДоступностьЭлементовВозвратнойТары(ЭтаФорма);
ПодготовитьЗаполнитьУстановитьВидимостьСерий();
ЗаполнитьНалогообложениеНДСЗакупки();
НалогообложениеНДСПриИзмененииСервер();
ЗаполнитьВидДеятельностиНДС();
ВзаиморасчетыСервер.ПриИзмененииПараметровМеханизма(ЭтаФорма);
ФормированиеФискальныхЧековСервер.ФормаПриИзмененииРеквизитов(ЭтотОбъект);
СобытияФорм.ПриИзмененииЭлемента(ЭтотОбъект, "ХозяйственнаяОперация");
НастроитьКолонкиСписанияПоРасходамТЧТовары();
НастроитьВидимостьКомандыЗаполнитьПодразделение();
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
ДенежныеСредстваСерверЛокализация.ЗаполнитьПризнакЗакупкиУСамозанятого(ЭтотОбъект);
ОперацияССамозанятымПриИзмененииНаСервере();
ДенежныеСредстваСерверЛокализация.НастроитьЭлементыОперацииССамозанятым(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура СкладПриИзмененииСервер()
Склад = Объект.Склад;
УстановитьПараметрыВыбораТоварыСклад();
СтруктураОтветственного = ЗакупкиСервер.ПолучитьОтветственногоПоСкладу(Объект.Склад, Объект.Менеджер);
Если СтруктураОтветственного <> Неопределено Тогда
Объект.Принял = СтруктураОтветственного.Ответственный;
Объект.ПринялДолжность = СтруктураОтветственного.ОтветственныйДолжность;
КонецЕсли;
Если Объект.Товары.Количество() > 0 Тогда
МассивУдаляемыхСтрок = Новый Массив();
Если СкладГруппа Тогда
СкладыСервер.ЗаполнитьСкладыВТабличнойЧасти(Объект.Склад, СкладГруппа, Объект.Товары, Истина, "СписатьНаРасходы");
Для Каждого ТекСтрока Из Объект.Товары Цикл
Если (ТекСтрока.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.Товар
Или ТекСтрока.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.МногооборотнаяТара)
И ЗначениеЗаполнено(ТекСтрока.КодСтроки)
И ЗначениеЗаполнено(ТекСтрока.ЗаказПоставщику)
И Не ЗначениеЗаполнено(ТекСтрока.Склад) Тогда
МассивУдаляемыхСтрок.Добавить(ТекСтрока);
КонецЕсли;
КонецЦикла;
Иначе
МассивУдаляемыхСтрок = Новый Массив();
Для Каждого ТекСтрока Из Объект.Товары Цикл
Если ЗначениеЗаполнено(ТекСтрока.КодСтроки)
И ЗначениеЗаполнено(ТекСтрока.ЗаказПоставщику)
И (ТекСтрока.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.Товар
Или ТекСтрока.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.МногооборотнаяТара)
И Объект.Склад <> ТекСтрока.Склад Тогда
МассивУдаляемыхСтрок.Добавить(ТекСтрока);
КонецЕсли;
КонецЦикла;
КонецЕсли;
Для Каждого ТекЭлемент Из МассивУдаляемыхСтрок Цикл
Объект.Товары.Удалить(ТекЭлемент);
КонецЦикла;
КонецЕсли;
СкладыСервер.ЗаполнитьСкладыВТабличнойЧасти(Объект.Склад, СкладГруппа, Объект.Товары, Истина, "СписатьНаРасходы");
ПересчитатьКоличествоРНПТ();
ОбновитьИнформациюПоЗаказам();
Элементы.ТоварыЗаполнитьСкладВВыделенныхСтроках.Доступность = СкладГруппа;
ПриИзмененииСкладаВТабличнойЧастиСервер();
РассчитатьИтоговыеПоказателиПоступления(ЭтаФорма);
ПодготовитьЗаполнитьУстановитьВидимостьСерий();
ЗаполнитьВидДеятельностиНДС();
Если Не СкладГруппа Тогда
Элементы.ТоварыГруппаПолучатель.Заголовок = НСтр("ru = 'Подразделение-получатель'");
Иначе
Элементы.ТоварыГруппаПолучатель.Заголовок = НСтр("ru = 'Получатель'");
КонецЕсли;
Элементы.ГруппаКартинкаИНадписьНесколькоСкладов.Видимость = СкладГруппа;
УстановитьЗаголовокЗаполнитьПоЗаказамОрдерам();
КонецПроцедуры
&НаСервере
Процедура НалогообложениеНДСПриИзмененииСервер()
ФлагИзменен = УчетНДСЛокализация.УстановитьЦенаВключаетНДСПоНалогообложениюНДС(Объект.ЦенаВключаетНДС, Объект.НалогообложениеНДС);
Если ФлагИзменен Тогда
Для Каждого СтрокаТоваров Из Объект.Товары Цикл
СтрокаТоваров.ВидЦеныПоставщика = Неопределено;
КонецЦикла;
КонецЕсли;
УчетНДСЛокализация.УстановитьДоступностьЦенаВключаетНДСПоНалогообложениюНДС(Элементы.ЦенаВключаетНДС, Объект.НалогообложениеНДС);
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("СкорректироватьСтавкуНДС",
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект, Ложь, Объект.ВернутьМногооборотнуюТару));
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий, КэшированныеЗначения);
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетов");
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
КэшированныеЗначения.ОбработанныеСтроки,
СтруктураДействий,
Объект.Товары,
КэшированныеЗначения);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
РассчитатьИтоговыеПоказателиПоступления(ЭтаФорма);
ВзаиморасчетыКлиентСервер.ОбновитьТекстГиперссылкиВалюты(ЭтаФорма);
ОбновитьТекстДокументыНаОсновании();
УстановитьОбязательностьПоставщика();
УчетНДСУП.УстановитьВидимостьКомандыЗаполнитьСтавкуНДС(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ЦенаВключаетНДСПриИзмененииСервер(КэшированныеЗначения)
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетов");
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий, КэшированныеЗначения);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
РассчитатьИтоговыеПоказателиПоступления(ЭтаФорма);
КонецПроцедуры
&НаСервере
Процедура ПоступлениеПоНесколькимЗаказамПриИзменении()
Если Объект.ПоступлениеПоЗаказам Тогда
Если НЕ ИспользоватьПоступлениеПоНесколькимЗаказам
И ЗначениеЗаполнено(Объект.ЗаказПоставщику) Тогда
СоглашениеЗаказа = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.ЗаказПоставщику, "Соглашение");
Если СоглашениеЗаказа <> Объект.Соглашение
И ЗначениеЗаполнено(СоглашениеЗаказа) Тогда
Объект.Соглашение = СоглашениеЗаказа;
СоглашениеПриИзмененииСервер();
КонецЕсли;
ЗаполнитьЗначенияСвойств(Объект,
Объект.ЗаказПоставщику,
"Валюта, Контрагент, Договор, НалогообложениеНДС, Организация, Партнер, ХозяйственнаяОперация,
|ВариантПриемкиТоваров, ЦенаВключаетНДС, ВернутьМногооборотнуюТару");
КонецЕсли;
Если Объект.Товары.Количество() = 0 Тогда
ЗаполнитьПоЗаказуСервер();
Иначе
ПривязатьСтрокиПоступленияКЗаказамПоставщикам(Не ИспользоватьПоступлениеПоНесколькимЗаказам);
КонецЕсли;
Иначе
ОтвязатьСтрокиОтЗаказовПоставщикам();
СписокЗаказов.Очистить();
Объект.ЗаказПоставщику = Неопределено;
МногооборотнаяТараСервер.ОбновитьСостояниеЗаполненияМногооборотнойТары(Объект.СостояниеЗаполненияМногооборотнойТары);
КонецЕсли;
УстановитьВидимостьЭлементовПоОперацииСервер();
УстановитьДоступностьСоглашений();
УстановитьПараметрыВыбораВидаЗапасов();
УстановитьВидимостьКомандПоЗаказу();
ЗаполнитьЦеныНоменклатурыЗаказов();
ОбновитьИнформациюПоЗаказам();
УстановитьДоступностьЭлементовПоСтатусуСервер();
ДоставкаТоваров.ПриИзмененииФлагаПоЗаказам(Элементы, Объект, Объект.ПоступлениеПоЗаказам);
ВзаиморасчетыСервер.ПриИзмененииПараметровМеханизма(ЭтаФорма);
МассивРеквизитов = Новый Массив;
МассивРеквизитов.Добавить("ПоступлениеПоЗаказам");
МассивРеквизитов.Добавить("ПорядокРасчетов");
ИзмененныеРеквизиты = ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, МассивРеквизитов);
Если ИзмененныеРеквизиты.Свойство("ПорядокРасчетов") Тогда
УстановитьСвойстваЭлементовПоПорядкуРасчетов();
КонецЕсли;
ОтветственныеЛицаСервер.УстановитьМенеджера(
Объект, ЗакупкиСервер.ДокументОснование(Объект, "ПоступлениеПоЗаказам, ЗаказПоставщику, Товары.ЗаказПоставщику"));
КонецПроцедуры
&НаСервере
Функция ДатаПриИзмененииСервер(ПересчитыватьЦены)
Если ПересчитыватьЦены Тогда
ЦеныРассчитаны = ЗаполнитьЦеныПоСоглашениюСервер(Истина);
Иначе
ЦеныРассчитаны = Ложь;
КонецЕсли;
ИспользоватьУчетПрослеживаемыхИмпортныхТоваров = УчетПрослеживаемыхТоваровЛокализация.ИспользоватьУчетПрослеживаемыхИмпортныхТоваров(
Объект.Дата);
ЗаполнитьВидДеятельностиНДС();
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма,"Дата");
ОтветственныеЛицаСервер.ПриИзмененииСвязанныхРеквизитовДокумента(Объект);
ПодготовитьЗаполнитьУстановитьВидимостьСерий();
УстановитьЗаголовокЗаполнитьПоЗаказамОрдерам();
ОпределитьПечатьЕдиногоАвансовогоОтчета();
УстановитьВидимостьРеквизитовПечатьАвансовогоОтчета();
УстановитьВидимостьКоличестваРНПТ();
Если Не Элементы.ТоварыГруппаКоличествоПоРНПТ.Видимость Тогда
ПересчитатьКоличествоРНПТ();
КонецЕсли;
СобытияФорм.ПриИзмененииЭлемента(ЭтотОбъект, "Товары");
Возврат ЦеныРассчитаны;
КонецФункции
&НаСервере
Процедура НаправлениеДеятельностиПриИзмененииСервер()
Если Объект.ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоДоговорамКонтрагентов Тогда
ЗаполнитьДоговорПоУмолчанию();
КонецЕсли;
ПриИзмененииНаправленияДеятельностиСервер();
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, "НаправлениеДеятельности");
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииНаправленияДеятельностиСервер()
ИзмененныеСтроки = НаправленияДеятельностиСервер.ПриИзмененииНаправленияДеятельности(ЭтотОбъект);
ЗакупкиСервер.ОчиститьРеквизитыСписанияНаРасходыПриУстановкеНазначенияВТабличнойЧасти(ИзмененныеСтроки);
КонецПроцедуры
&НаСервере
Процедура ОперацияССамозанятымПриИзмененииНаСервере()
ЗаполнитьДоговорПоУмолчанию();
ДенежныеСредстваСерверЛокализация.ОперацияССамозанятымПриИзменении(ЭтотОбъект);
НалогообложениеНДСПриИзмененииСервер();
КонецПроцедуры
#КонецОбласти
#Область ЦенообразованиеИСкидки
&НаСервере
Функция ЗаполнитьЦеныПоСоглашениюСервер(ПоВсемСтрокам = Ложь, ТекстОшибки = "")
Если ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Соглашение, "ЦенаВключаетНДС") <> Объект.ЦенаВключаетНДС Тогда
ТекстОшибки =
НСтр("ru = 'Установленные значения полей ""Цена включает НДС"" в документе и соглашении разные.'");
Возврат Ложь;
КонецЕсли;
Если ПоВсемСтрокам Тогда
МассивСтрок = Неопределено;
Иначе
МассивСтрок = Новый Массив;
Для Каждого Строка Из Элементы.Товары.ВыделенныеСтроки Цикл
МассивСтрок.Добавить(Объект.Товары.НайтиПоИдентификатору(Строка));
КонецЦикла;
КонецЕсли;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
ПересчитатьСуммуСУчетомРучнойСкидки = Новый Структура("Очищать", Ложь);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСумму", "КоличествоУпаковок");
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуРучнойСкидки", "КоличествоУпаковок");
СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетов", Неопределено);
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", ПересчитатьСуммуСУчетомРучнойСкидки);
ПараметрыЗаполненияЦены = ЦеныПартнеровЗаполнениеСервер.НовыйПараметрыЗаполненияЗаполнитьЦены();
ПараметрыЗаполненияЦены.Вставить("ПоляЗаполнения", "Цена, ВидЦеныПоставщика");
ПараметрыЗаполненияЦены.Вставить("Дата", Объект.Дата);
ПараметрыЗаполненияЦены.Вставить("Организация", Объект.Организация);
ПараметрыЗаполненияЦены.Вставить("Валюта", Объект.Валюта);
ПараметрыЗаполненияЦены.Вставить("Соглашение", Объект.Соглашение);
ПараметрыЗаполненияЦены.Вставить("НалогообложениеНДС", Объект.НалогообложениеНДС);
ЦеныРассчитаны = ЦеныПартнеровЗаполнениеСервер.ЗаполнитьЦены(
Объект.Товары,
МассивСтрок,
ПараметрыЗаполненияЦены,
СтруктураДействий);
Если Объект.ПоступлениеПоЗаказам Тогда
ОбновитьОтклоненияОтЗаказа();
КонецЕсли;
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
РассчитатьИтоговыеПоказателиПоступления(ЭтаФорма);
Возврат ЦеныРассчитаны;
КонецФункции
&НаСервере
Функция ЗаполнитьЦеныВыделенныхСтрокПоВидуЦеныПоставщикаСервер(ВидЦеныПоставщика)
МассивСтрок = Новый Массив;
Для Каждого Строка Из Элементы.Товары.ВыделенныеСтроки Цикл
СтрокаТаблицы = Объект.Товары.НайтиПоИдентификатору(Строка);
Если СтрокаТаблицы.КодСтроки = 0 Тогда
МассивСтрок.Добавить(СтрокаТаблицы);
КонецЕсли;
КонецЦикла;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
ПараметрыЗаполненияЦены = ЦеныПартнеровЗаполнениеСервер.НовыйПараметрыЗаполненияЗаполнитьЦены();
ПараметрыЗаполненияЦены.Вставить("ПоляЗаполнения", "Цена, ВидЦеныПоставщика");
ПараметрыЗаполненияЦены.Вставить("Дата", Объект.Дата);
ПараметрыЗаполненияЦены.Вставить("Организация", Объект.Организация);
ПараметрыЗаполненияЦены.Вставить("Валюта", Объект.Валюта);
ПараметрыЗаполненияЦены.Вставить("ВидЦеныПоставщика", ВидЦеныПоставщика);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСумму", "КоличествоУпаковок");
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуРучнойСкидки", "КоличествоУпаковок");
СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетов", Неопределено);
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Ложь));
ЦеныРассчитаны = ЦеныПартнеровЗаполнениеСервер.ЗаполнитьЦены(
Объект.Товары,
МассивСтрок,
ПараметрыЗаполненияЦены,
СтруктураДействий);
Если Объект.ПоступлениеПоЗаказам Тогда
ОбновитьОтклоненияОтЗаказа();
КонецЕсли;
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
РассчитатьИтоговыеПоказателиПоступления(ЭтаФорма);
Возврат ЦеныРассчитаны;
КонецФункции
&НаСервере
Процедура НазначитьРучнуюСкидкуНаСервере(СуммаСкидкиНаценки, Знач ВыделенныеСтроки, АдресВоВременномХранилище)
ПараметрыСкидки = СкидкиНаценкиЗаполнениеСервер.НовыйПараметрыНазначитьРучнуюСкидку();
ПараметрыСкидки.ИспользуютсяАвтоматическиеСкидки = Ложь;
ПараметрыСкидки.РассчитыватьСуммуСНДС = Истина;
ПараметрыСкидки.РассчитыватьСуммуВзаиморасчетов = Истина;
ПараметрыСкидки.ВыделенныеСтроки = ВыделенныеСтроки;
ПараметрыСкидки.АдресВоВременномХранилище = АдресВоВременномХранилище;
СкидкиНаценкиЗаполнениеСервер.НазначитьРучнуюСкидку(Объект, "Товары", СуммаСкидкиНаценки, ПараметрыСкидки);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
КонецПроцедуры
&НаСервере
Процедура ОтменитьРучныеСкидкиНаСервере()
СкидкиНаценкиЗаполнениеСервер.ОтменитьРучныеСкидки(Объект, "Товары", Ложь, Истина, Истина);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьЦеныНоменклатурыЗаказов()
Если Не ПравоНаЧтениеЗаказовПоставщику Тогда
Возврат;
КонецЕсли;
Если Не Объект.ПоступлениеПоЗаказам Тогда
Для Каждого ТекСтрока Из Объект.Товары Цикл
ТекСтрока.ЦенаЗаказа = 0;
ОбновитьОтклоненияОтЗаказаВСтроке(ТекСтрока, Объект.ПоступлениеПоЗаказам, Объект.ТребуетсяЗалогЗаТару);
КонецЦикла;
Возврат;
КонецЕсли;
Запрос = Новый Запрос("
|ВЫБРАТЬ
| Товары.ЗаказПоставщику КАК ЗаказПоставщику,
| Товары.КодСтроки КАК КодСтроки,
| Товары.Цена КАК Цена,
| Товары.Упаковка КАК Упаковка,
| Товары.Номенклатура КАК Номенклатура
|ПОМЕСТИТЬ Товары
|ИЗ
| &Товары КАК Товары
|ГДЕ
| Товары.КодСтроки <> 0
|;
|ВЫБРАТЬ
| ТоварыЗаказа.Ссылка КАК ЗаказПоставщику,
| ТоварыЗаказа.Ссылка.Дата КАК ДатаЗаказа,
| ТоварыЗаказа.Ссылка.Валюта КАК ВалютаЗаказа,
| ТоварыЗаказа.КодСтроки КАК КодСтроки,
| (ТоварыЗаказа.Цена/ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки1,1))*ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки2, 1) КАК ЦенаЗаказа,
| ТоварыЗаказа.Упаковка КАК УпаковкаЗаказа
|ИЗ
| Товары КАК Товары
|ЛЕВОЕ СОЕДИНЕНИЕ
| Документ.ЗаказПоставщику.Товары КАК ТоварыЗаказа
|ПО
| Товары.ЗаказПоставщику = ТоварыЗаказа.Ссылка
| И Товары.КодСтроки = ТоварыЗаказа.КодСтроки
|");
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ТекстЗапросаКоэффициентУпаковки1",
Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
"ТоварыЗаказа.Упаковка",
"Товары.Номенклатура"));
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ТекстЗапросаКоэффициентУпаковки2",
Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
"Товары.Упаковка",
"Товары.Номенклатура"));
Запрос.УстановитьПараметр("Товары", Объект.Товары.Выгрузить(,"Номенклатура, ЗаказПоставщику,КодСтроки,Цена,Упаковка"));
МассивРезультатовЗапроса = Запрос.ВыполнитьПакет();
РезультатЗапроса = МассивРезультатовЗапроса[1];
Выборка = РезультатЗапроса.Выбрать();
БазоваяВалюта = ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(Объект.Организация);
Для Каждого ТекСтрока Из Объект.Товары Цикл
Если ЗначениеЗаполнено(ТекСтрока.КодСтроки) Тогда
Выборка.Сбросить();
СтруктураОтбора = Новый Структура("ЗаказПоставщику,КодСтроки", ТекСтрока.ЗаказПоставщику, ТекСтрока.КодСтроки);
Если Выборка.НайтиСледующий(СтруктураОтбора) Тогда
Если Выборка.ВалютаЗаказа = Объект.Валюта Тогда
ТекСтрока.ЦенаЗаказа = Выборка.ЦенаЗаказа;
ИначеЕсли Выборка.ВалютаЗаказа = Объект.ВалютаВзаиморасчетов Тогда
Если Объект.Валюта = БазоваяВалюта Тогда
ТекСтрока.ЦенаЗаказа = Выборка.ЦенаЗаказа * Объект.КурсЧислитель / Объект.КурсЗнаменатель;
Иначе
ТекСтрока.ЦенаЗаказа = Выборка.ЦенаЗаказа / Объект.КурсЧислитель * Объект.КурсЗнаменатель;
КонецЕсли;
Иначе
ТекСтрока.ЦенаЗаказа = РаботаСКурсамиВалютУТ.ПересчитатьВВалюту(Выборка.ЦенаЗаказа,
БазоваяВалюта,
Выборка.ВалютаЗаказа,
Объект.Валюта,
Объект.Дата);
КонецЕсли;
КонецЕсли;
Иначе
ТекСтрока.ЦенаЗаказа = 0;
КонецЕсли;
ОбновитьОтклоненияОтЗаказаВСтроке(ТекСтрока, Объект.ПоступлениеПоЗаказам, Объект.ТребуетсяЗалогЗаТару);
КонецЦикла;
ОбновитьИнформациюПоЗаказам();
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьЦеныПоПоследнимПоступлениямСервер(ЦеныЗаполнены)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ИсходнаяТаблица.НомерСтроки КАК НомерСтроки,
| ИсходнаяТаблица.Номенклатура КАК Номенклатура,
| ИсходнаяТаблица.Характеристика КАК Характеристика,
| ИсходнаяТаблица.Упаковка КАК Упаковка
|
|ПОМЕСТИТЬ ТаблицаТовары
|ИЗ
| &ИсходнаяТаблица КАК ИсходнаяТаблица
|
|ИНДЕКСИРОВАТЬ ПО
| Номенклатура,
| Характеристика
|;
|
|
|ВЫБРАТЬ
| ПриобретениеТоваровУслуг.Ссылка.МоментВремени КАК МоментВремени,
| ПриобретениеТоваровУслуг.Номенклатура КАК Номенклатура,
| ПриобретениеТоваровУслуг.Характеристика КАК Характеристика,
| ПриобретениеТоваровУслуг.Упаковка КАК Упаковка,
| ПриобретениеТоваровУслуг.ВидЦеныПоставщика КАК ВидЦеныПоставщика,
| ПриобретениеТоваровУслуг.Цена КАК Цена,
| ПриобретениеТоваровУслуг.Ссылка.Валюта КАК Валюта
|
|ПОМЕСТИТЬ ЦеныПоступлений
|ИЗ
| Документ.ПриобретениеТоваровУслуг.Товары КАК ПриобретениеТоваровУслуг
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ
| ТаблицаТовары
| ПО
| ПриобретениеТоваровУслуг.Номенклатура = ТаблицаТовары.Номенклатура
| И ПриобретениеТоваровУслуг.Характеристика = ТаблицаТовары.Характеристика
|ГДЕ
| ПриобретениеТоваровУслуг.Ссылка.Проведен
| И ПриобретениеТоваровУслуг.Ссылка.Партнер = &Партнер
| И ПриобретениеТоваровУслуг.Ссылка.Дата <= &Дата
|
|ИНДЕКСИРОВАТЬ ПО
| Номенклатура,
| Характеристика
|;
|
|
|ВЫБРАТЬ
| ЦеныПоступлений.Номенклатура КАК Номенклатура,
| ЦеныПоступлений.Характеристика КАК Характеристика,
| ЦеныПоступлений.Упаковка КАК Упаковка,
| ЦеныПоступлений.Цена КАК Цена,
| ЦеныПоступлений.ВидЦеныПоставщика КАК ВидЦеныПоставщика,
| ЦеныПоступлений.Валюта КАК Валюта
|
|ПОМЕСТИТЬ ЦеныПоследнихПоступлений
|ИЗ
| ЦеныПоступлений КАК ЦеныПоступлений
|
| ЛЕВОЕ СОЕДИНЕНИЕ
| ЦеныПоступлений КАК Отбор
| ПО
| ЦеныПоступлений.Номенклатура = Отбор.Номенклатура
| И ЦеныПоступлений.Характеристика = Отбор.Характеристика
| И ЦеныПоступлений.МоментВремени < Отбор.МоментВремени
|ГДЕ
| Отбор.МоментВремени ЕСТЬ NULL
|
|ИНДЕКСИРОВАТЬ ПО
| Номенклатура,
| Характеристика
|;
|
|
|ВЫБРАТЬ
| ТаблицаТовары.НомерСтроки КАК НомерСтроки,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.Упаковка КАК Упаковка,
| ЦеныПоследнихПоступлений.ВидЦеныПоставщика КАК ВидЦеныПоставщика,
| ВЫБОР
| КОГДА
| ТаблицаТовары.Упаковка <> ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
| ТОГДА
| &ТекстЗапросаКоэффициентУпаковки1
| ИНАЧЕ
| 1
| КОНЕЦ
| * ЦеныПоследнихПоступлений.Цена / ЕстьNULL(&ТекстЗапросаКоэффициентУпаковки2, 1)
| * ВЫБОР
| КОГДА &Валюта <> ЦеныПоследнихПоступлений.Валюта
| ТОГДА ВЫБОР
| КОГДА ЕСТЬNULL(КурсыВалютыЦены.КурсЗнаменатель, 0) > 0
| И ЕСТЬNULL(КурсыВалютыЦены.КурсЧислитель, 0) > 0
| И ЕСТЬNULL(КурсыВалюты.КурсЗнаменатель, 0) > 0
| И ЕСТЬNULL(КурсыВалюты.КурсЧислитель, 0) > 0
| ТОГДА
| (КурсыВалютыЦены.КурсЧислитель * КурсыВалюты.КурсЗнаменатель)
| / (КурсыВалюты.КурсЧислитель * КурсыВалютыЦены.КурсЗнаменатель)
| ИНАЧЕ 0
| КОНЕЦ
| ИНАЧЕ 1
| КОНЕЦ КАК Цена
|ИЗ
| ТаблицаТовары КАК ТаблицаТовары
|
| ЛЕВОЕ СОЕДИНЕНИЕ
| ЦеныПоследнихПоступлений КАК ЦеныПоследнихПоступлений
|
| ПО
| ТаблицаТовары.Номенклатура = ЦеныПоследнихПоступлений.Номенклатура
| И ТаблицаТовары.Характеристика = ЦеныПоследнихПоступлений.Характеристика
|
| ЛЕВОЕ СОЕДИНЕНИЕ
| РегистрСведений.ОтносительныеКурсыВалют.СрезПоследних(&Дата, БазоваяВалюта = &БазоваяВалюта) КАК КурсыВалютыЦены
| ПО
| ЦеныПоследнихПоступлений.Валюта = КурсыВалютыЦены.Валюта
|
| ЛЕВОЕ СОЕДИНЕНИЕ
| РегистрСведений.ОтносительныеКурсыВалют.СрезПоследних(&Дата, Валюта = &Валюта И БазоваяВалюта = &БазоваяВалюта) КАК КурсыВалюты
| ПО
| ИСТИНА";
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ТекстЗапросаКоэффициентУпаковки1",
Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
"ТаблицаТовары.Упаковка",
"ТаблицаТовары.Номенклатура"));
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ТекстЗапросаКоэффициентУпаковки2",
Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
"ЦеныПоследнихПоступлений.Упаковка",
"ЦеныПоследнихПоступлений.Номенклатура"));
Запрос.УстановитьПараметр("ИсходнаяТаблица", Объект.Товары.Выгрузить(,"НомерСтроки, Номенклатура, Характеристика, Упаковка"));
Запрос.УстановитьПараметр("Дата", ?(ЗначениеЗаполнено(Объект.Дата), Объект.Дата, ТекущаяДатаСеанса()));
Запрос.УстановитьПараметр("Валюта", Объект.Валюта);
Запрос.УстановитьПараметр("Партнер", Объект.Партнер);
Запрос.УстановитьПараметр("БазоваяВалюта", ЗначениеНастроекПовтИсп.БазоваяВалютаПоУмолчанию());
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура();
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуРучнойСкидки");
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Ложь));
СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетов");
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
ОбрабатываемыеСтроки = Новый Массив();
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
СтрокаТЧ = Объект.Товары[Выборка.НомерСтроки - 1];
ЗаполнитьЗначенияСвойств(СтрокаТЧ, Выборка, "Цена, ВидЦеныПоставщика");
ОбрабатываемыеСтроки.Добавить(СтрокаТЧ);
ЦеныЗаполнены = Истина;
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.Товары,
КэшированныеЗначения);
Если Объект.ПоступлениеПоЗаказам Тогда
ОбновитьОтклоненияОтЗаказа();
КонецЕсли;
РассчитатьИтоговыеПоказателиПоступления(ЭтаФорма);
КонецПроцедуры
#КонецОбласти
#Область ПодборыИОбработкаПроверкиКоличества
&НаКлиенте
Процедура ПроверитьКоличествоВДокументеКлиент()
ВыгруженаТолькоНеМаркируемаяПродукция = Ложь;
ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("АдресВоВременномХранилище", ПоместитьТабличнуюЧастьТоварыВоВременноеХранилищеДляПроверкиКоличества(ВыгруженаТолькоНеМаркируемаяПродукция));
ПараметрыОткрытия.Вставить("ИмяТабличнойЧасти", "Товары");
ПараметрыОткрытия.Вставить("Ссылка", Объект.Ссылка);
ПараметрыОткрытия.Вставить("ПревышениеКоличестваТоваровРазрешено", Истина);
ПараметрыОткрытия.Вставить("ПараметрыУказанияСерий", ПараметрыУказанияСерий);
ПараметрыОткрытия.Вставить("Соглашение", Объект.Соглашение);
ПараметрыОткрытия.Вставить("ПоступлениеПоЗаказам", Объект.ПоступлениеПоЗаказам);
ПараметрыОткрытия.Вставить("ВыгруженаТолькоНеМаркируемаяПродукция", ВыгруженаТолькоНеМаркируемаяПродукция);
ОткрытьФорму("ОбщаяФорма.ПроверкаЗаполненияДокументов", ПараметрыОткрытия,,,,, Новый ОписаниеОповещения("ПроверитьКоличествоВДокументеЗавершение", ЭтотОбъект), РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура ПодборТоваровИзЗаказа()
Попытка
ЗаблокироватьДанныеФормыДляРедактирования();
Модифицированность = Истина;
Исключение
ПоказатьПредупреждение(,КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
Возврат;
КонецПопытки;
МассивКодовСтрок = Новый Массив;
АдресТоваров = "";
ПередПодборомТоваровИзЗаказаСервер(МассивКодовСтрок, АдресТоваров);
ПараметрыПодбора = Новый Структура();
ПараметрыПодбора.Вставить("ЗаказПоставщику", Объект.ЗаказПоставщику);
ПараметрыПодбора.Вставить("ВалютаДокумента", Объект.Валюта);
ПараметрыПодбора.Вставить("Ссылка", Объект.Ссылка);
ПараметрыПодбора.Вставить("Дата", Объект.Дата);
ПараметрыПодбора.Вставить("Склад", Объект.Склад);
ПараметрыПодбора.Вставить("МассивКодовСтрок", МассивКодовСтрок);
ПараметрыПодбора.Вставить("Партнер", Объект.Партнер);
ПараметрыПодбора.Вставить("Контрагент", Объект.Контрагент);
ПараметрыПодбора.Вставить("Договор", Объект.Договор);
ПараметрыПодбора.Вставить("Организация", Объект.Организация);
ПараметрыПодбора.Вставить("ХозяйственнаяОперация", Объект.ХозяйственнаяОперация);
ПараметрыПодбора.Вставить("Соглашение", Объект.Соглашение);
ПараметрыПодбора.Вставить("ВалютаВзаиморасчетов", Объект.ВалютаВзаиморасчетов);
ПараметрыПодбора.Вставить("НалогообложениеНДС", Объект.НалогообложениеНДС);
ПараметрыПодбора.Вставить("ЦенаВключаетНДС", Объект.ЦенаВключаетНДС);
ПараметрыПодбора.Вставить("ПорядокРасчетов", Объект.ПорядокРасчетов);
ПараметрыПодбора.Вставить("ВернутьМногооборотнуюТару", Объект.ВернутьМногооборотнуюТару);
ПараметрыПодбора.Вставить("ТребуетсяЗалогЗаТару", Объект.ТребуетсяЗалогЗаТару);
ПараметрыПодбора.Вставить("НаправлениеДеятельности", Объект.НаправлениеДеятельности);
ПараметрыПодбора.Вставить("АдресТоварыНакладнойВоВременномХранилище", АдресТоваров);
ПараметрыПодбора.Вставить("ОрдернаяСхемаПриПриемке", ОрдернаяСхемаПриПриемке);
ПараметрыПодбора.Вставить("ПоступлениеПоЗаказам", Объект.ПоступлениеПоЗаказам);
ПараметрыПодбора.Вставить("ВариантПриемкиТоваров", Объект.ВариантПриемкиТоваров);
ПараметрыПодбора.Вставить("Подразделение", Объект.Подразделение);
ПараметрыПодбора.Вставить("ГруппаФинансовогоУчета", Объект.ГруппаФинансовогоУчета);
ПараметрыПодбора.Вставить("ОперацияССамозанятым", Объект.ОперацияССамозанятым);
ОткрытьФорму(
"Обработка.ЖурналДокументовЗакупки.Форма.ФормаПодбораТоваровИзЗаказа",
ПараметрыПодбора,
ЭтаФорма,,,, Неопределено, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаСервере
Процедура ПередПодборомТоваровИзЗаказаСервер(МассивКодовСтрок, АдресТоваров)
Для Каждого СтрокаТЧ Из Объект.Товары Цикл
Если СтрокаТЧ.КодСтроки <> 0 И ЗначениеЗаполнено(СтрокаТЧ.ЗаказПоставщику) Тогда
МассивКодовСтрок.Добавить(Новый Структура("КодСтроки,ЗаказПоставщику", СтрокаТЧ.КодСтроки, СтрокаТЧ.ЗаказПоставщику));
КонецЕсли;
КонецЦикла;
АдресТоваров = ПоместитьВоВременноеХранилище(Объект.Товары.Выгрузить());
КонецПроцедуры
&НаКлиенте
Процедура СообщитьОбОшибкахОткрытияПодбора(Отказ)
Если Не ЗначениеЗаполнено(Объект.Валюта) Тогда
ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Поле ""Валюта"" не заполнено'"),
Объект.Ссылка,
"Объект.Валюта",
,
Отказ);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьПодборСерий(Текст = "", ТекущиеДанные = Неопределено)
Если НоменклатураКлиент.ДляУказанияСерийНуженСерверныйВызов(ЭтаФорма, ПараметрыУказанияСерий, Текст, ТекущиеДанные)Тогда
Если ТекущиеДанные = Неопределено Тогда
ТекущиеДанныеИдентификатор = Элементы.Товары.ТекущиеДанные.ПолучитьИдентификатор();
Иначе
ТекущиеДанныеИдентификатор = ТекущиеДанные.ПолучитьИдентификатор();
КонецЕсли;
ПараметрыФормыУказанияСерий = ПараметрыФормыУказанияСерий(ТекущиеДанныеИдентификатор);
ОткрытьФорму(ПараметрыФормыУказанияСерий.ИмяФормы,ПараметрыФормыУказанияСерий,ЭтаФорма,,,, Новый ОписаниеОповещения("ОткрытьПодборСерийЗавершение", ЭтотОбъект, Новый Структура("ПараметрыФормыУказанияСерий", ПараметрыФормыУказанияСерий)), РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьПодборСерийЗавершение(Результат, ДополнительныеПараметры) Экспорт
ПараметрыФормыУказанияСерий = ДополнительныеПараметры.ПараметрыФормыУказанияСерий;
Если Результат <> Неопределено Тогда
ОбработатьУказаниеСерийСервер(ПараметрыФормыУказанияСерий);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ШтрихкодыИТорговоеОборудование
&НаКлиенте
Процедура ОбработатьШтрихкоды(ДанныеШтрихкодов)
Если Не ШтрихкодированиеНоменклатурыКлиент.ШтрихкодыВалидны(ДанныеШтрихкодов) Тогда
Возврат;
КонецЕсли;
СтруктураДействийСДобавленнымиСтроками = Новый Структура;
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакВедетсяУчетПоГТД", Новый Структура("Номенклатура", "ВедетсяУчетПоГТД"));
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьСтрануПроисхожденияНоменклатуры",
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтраныПроисхождения());
СтруктураДействийСДобавленнымиСтроками.Вставить("ПроверитьЗаполнитьСклад", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(Объект, СкладГруппа));
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтаФорма, СтруктураДействийСДобавленнымиСтроками);
Если ИспользоватьСоглашенияСПоставщиками И ЗначениеЗаполнено(Объект.Соглашение) Тогда
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьУсловияЗакупок", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияЦеныЗакупкиВСтрокеТЧ(Объект));
Иначе
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьЦенуЗакупки", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияЦеныЗакупкиВСтрокеТЧ(Объект));
КонецЕсли;
ПараметрыЗаполненияСтавкиНДС = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект);
ПараметрыЗаполненияСтавкиНДС.УказаннаяСтавкаНДС = УказаннаяСтавкаНДС;
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьСтавкуНДС", ПараметрыЗаполненияСтавкиНДС);
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействийСДобавленнымиСтроками.Вставить("ПриИзмененииТипаНоменклатуры",
Новый Структура("ЕстьРаботы, ЕстьОтменено", Истина, Ложь));
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействийСДобавленнымиСтроками, ЭтаФорма);
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекЗаполненияСлужебныхРеквизитовТабличнойЧасти(СтруктураДействийСДобавленнымиСтроками);
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьСлужебныеРеквизитыПоНазначению");
ПакетнаяОбработкаТабличнойЧастиКлиентСерверЛокализация.ДополнитьСтруктуруДействийПриИзмененииЭлемента(ЭтотОбъект, "Номенклатура", СтруктураДействийСДобавленнымиСтроками);
СтруктураДействийСИзмененнымиСтроками = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействийСИзмененнымиСтроками, ЭтаФорма);
СтруктураДействий = ШтрихкодированиеНоменклатурыКлиент.ПараметрыОбработкиШтрихкодов();
СтруктураДействий.Штрихкоды = ДанныеШтрихкодов;
СтруктураДействий.СтруктураДействийСДобавленнымиСтроками = СтруктураДействийСДобавленнымиСтроками;
СтруктураДействий.СтруктураДействийСИзмененнымиСтроками = СтруктураДействийСИзмененнымиСтроками;
СтруктураДействий.ПараметрыУказанияСерий = ПараметрыУказанияСерий;
СтруктураДействий.ДобавлятьТолькоТоварСверхЗаказа = Истина;
ОбработатьШтрихкодыСервер(СтруктураДействий, КэшированныеЗначения);
ШтрихкодированиеНоменклатурыКлиент.ОбработатьНеизвестныеШтрихкоды(СтруктураДействий, КэшированныеЗначения, ЭтаФорма);
Если ШтрихкодированиеНоменклатурыКлиент.НужноОткрытьФормуУказанияСерийПослеОбработкиШтрихкодов(СтруктураДействий) Тогда
ТекущиеДанныеИдентификатор = СтруктураДействий.МассивСтрокССериями[0];
ПодключитьОбработчикОжидания("ОткрытьПодборСерийПриСканированииШтрихкодаНоменклатуры",0.1,Истина);
КонецЕсли;
РассчитатьИтоговыеПоказателиПоступления(ЭтаФорма);
Если СтруктураДействий.ТекущаяСтрока <> Неопределено Тогда
Элементы.Товары.ТекущаяСтрока = СтруктураДействий.ТекущаяСтрока;
КонецЕсли;
УстановитьПризнакЗаполненияСклада();
КонецПроцедуры
&НаСервере
Процедура ОбработатьШтрихкодыСервер(СтруктураПараметровДействия,КэшированныеЗначения)
ШтрихкодированиеНоменклатурыСервер.ОбработатьШтрихкоды(ЭтаФорма, Объект, СтруктураПараметровДействия, КэшированныеЗначения);
ЗакупкиСервер.ЗаполнитьСлужебныеРеквизитыНомераГТД(Объект.Товары);
ОбновитьОтклоненияОтЗаказа();
КонецПроцедуры
#КонецОбласти
#Область Серии
&НаСервере
Процедура УстановитьВидимостьЭлементовСерий()
Элементы.ТоварыСтатусУказанияСерий.Видимость = ПараметрыУказанияСерий.ИспользоватьСерииНоменклатуры;
Элементы.ТоварыУказатьСерии.Видимость = ПараметрыУказанияСерий.ИспользоватьСерииНоменклатуры;
Элементы.ТоварыСерия.Видимость = ПараметрыУказанияСерий.УчитыватьСебестоимостьПоСериям;
КонецПроцедуры
&НаСервере
Процедура ОбработатьУказаниеСерийСервер(ПараметрыФормыУказанияСерий)
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ОбновлятьКоличествоТоваровПриРегистрацииСерий", Истина);
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, ЭтаФорма);
НоменклатураСервер.ОбработатьУказаниеСерий(Объект,ПараметрыУказанияСерий,ПараметрыФормыУказанияСерий,СтруктураДействий);
РассчитатьИтоговыеПоказателиПоступления(ЭтаФорма);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСтатусыУказанияСерийПриОкончанииРедактированияСтрокиТЧ(ТекущаяСтрокаИдентификатор, КэшированныеЗначения)
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерийПриОкончанииРедактированияСтрокиТЧ(Объект,
ПараметрыУказанияСерий, ТекущаяСтрокаИдентификатор, КэшированныеЗначения);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСтатусыУказанияСерийСервер()
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьПодборСерийПриСканированииШтрихкодаНоменклатуры()
Если ТекущиеДанныеИдентификатор = Неопределено Тогда
Возврат;
КонецЕсли;
ТекущиеДанные = Объект.Товары.НайтиПоИдентификатору(ТекущиеДанныеИдентификатор);
ОткрытьПодборСерий(,ТекущиеДанные);
КонецПроцедуры
&НаСервере
Процедура ПодготовитьЗаполнитьУстановитьВидимостьСерий()
ПараметрыУказанияСерий = Новый ФиксированнаяСтруктура(НоменклатураСервер.ПараметрыУказанияСерий(Объект, Документы.ПриобретениеТоваровУслуг));
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
УстановитьВидимостьЭлементовСерий();
КонецПроцедуры
&НаСервере
Функция ЗаполнитьСерииПоДаннымПоступленияТоваровНаСервере()
ТаблицаТовары = Объект.Товары.Выгрузить();
РезультатЗаполненияСерий = НоменклатураСервер.ЗаполнитьСерииПоДаннымТоваровУПартнеров(ТаблицаТовары, Объект, Истина);
Если РезультатЗаполненияСерий.ЕстьИзменения Тогда
СтруктураДействий = Новый Структура();
СтруктураДействий.Вставить(
"ПересчитатьКоличествоУпаковок",
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.СтруктураПересчетаКоличестваУпаковок());
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(ТаблицаТовары, СтруктураДействий, Неопределено);
Объект.Товары.Загрузить(ТаблицаТовары);
НоменклатураСервер.ЗаполнитьСерииПоFEFO(Объект, ПараметрыУказанияСерий, Ложь);
КонецЕсли;
РезультатЗаполнения = Новый Структура("ЕстьИзменения, КоличествоИзначальноВерное");
ЗаполнитьЗначенияСвойств(РезультатЗаполнения, РезультатЗаполненияСерий);
Возврат РезультатЗаполнения;
КонецФункции
#КонецОбласти
#Область НомераГТД
&НаКлиенте
Процедура ОбработатьПодборНомераГТД(РезультатПодбора)
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
ИдентификаторСтроки = ТекущиеДанные.ПолучитьИдентификатор();
Если ИдентификаторСтроки = Неопределено Тогда
Возврат;
КонецЕсли;
ЗаполненыНомераГТД = Ложь;
НомерГТД = Неопределено;
ОбработатьУказаниеНомераГТДСервер(ИдентификаторСтроки,
РезультатПодбора,
ЗаполненыНомераГТД,
НомерГТД);
ЗакупкиКлиент.ОповеститьОЗаполненииНомеровГТДВТабличнойЧасти(ЗаполненыНомераГТД, НомерГТД);
КонецПроцедуры
&НаСервере
Процедура ОбработатьУказаниеНомераГТДСервер(ИдентификаторСтроки,
РезультатПодбора,
ЗаполненыНомераГТД,
НомерГТД)
ДанныеПодбора = ПолучитьИзВременногоХранилища(РезультатПодбора.АдресВоВременномХранилище);
НомерГТД = ?(ДанныеПодбора.ОстаточныйНомерГТД <> Неопределено,
НомерГТД,
ДанныеПодбора.ОсновнойНомерГТД);
ДействияОбработки = Новый Структура;
Если ДанныеПодбора.ОстаточныйНомерГТД <> Неопределено Тогда
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(ДействияОбработки, ЭтотОбъект);
Иначе
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекПересчетаРеквизитовТабличнойЧасти(
Объект,
ДействияОбработки,
"Склад",
Истина);
КонецЕсли;
ЗакупкиСервер.ОбработатьУказаниеНомераГТД(ЭтотОбъект,
ИдентификаторСтроки,
ДанныеПодбора,
ЗаполненыНомераГТД,
Неопределено,
ДействияОбработки);
РассчитатьИтоговыеПоказателиПоступления(ЭтотОбъект);
ОбновитьЗависимыеРеквизитыФормыПоЗаказу(Объект.Товары,
НадписьРасхождениеЗаказ,
Элементы.КартинкаРасхождениеЗаказ,
Элементы.КартинкаРасхождениеЗаказы);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьНомераГТДНаСервере(Знач НомерГТД, ЗаполненыНомераГТД)
ЗакупкиСервер.ЗаполнитьНомераГТДВТабличнойЧасти(
Объект.Товары,
НомерГТД,
Элементы.Товары.ВыделенныеСтроки,
ЗаполненыНомераГТД);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьНомераГТДПоПоследнимПоступлениям()
ЗаполненыНомераГТД = Ложь;
ЗаполнитьНомераГТДПоПоследнимПоступлениямСервер(ЗаполненыНомераГТД);
ЗакупкиКлиент.ОповеститьОЗаполненииНомеровГТДВТабличнойЧасти(ЗаполненыНомераГТД);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьНомераГТДПоПоследнимПоступлениямСервер(ЗаполненыНомераГТД)
ЗакупкиСервер.ЗаполнитьНомераГТДПоПоследнимПоступлениям(Объект.Товары, ЗаполненыНомераГТД);
КонецПроцедуры
#КонецОбласти
#Область КонтрольНесогласованныхИзменений
&НаКлиенте
Процедура КонтрольНеСогласованныхИзмененийОбработатьСобытиеПриИзменении(Элемент)
Если Элемент.Имя = "Дата" Тогда
ДатаПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "Партнер" Тогда
ПартнерПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "Соглашение" Тогда
СоглашениеПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "Договор" Тогда
ДоговорПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ЦенаВключаетНДС" Тогда
ЦенаВключаетНДСПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "Организация" Тогда
ОрганизацияПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "Контрагент" Тогда
КонтрагентПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "НалогообложениеНДС" Тогда
НалогообложениеНДСПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ПоступлениеПоЗаказу" Тогда
ПоступлениеПоЗаказамПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ПоступлениеПоЗаказам" Тогда
ПоступлениеПоЗаказамПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ХозяйственнаяОперация" Тогда
ХозяйственнаяОперацияПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "Склад" Тогда
СкладПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ВернутьМногооборотнуюТару" Тогда
ВернутьМногооборотнуюТаруПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТребуетсяЗалогЗаТару" Тогда
ТребуетсяЗалогЗаТаруПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыНоменклатураПартнера" Тогда
ТоварыНоменклатураПартнераПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыНоменклатура" Тогда
ТоварыНоменклатураПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыХарактеристика" Тогда
ТоварыХарактеристикаПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыНазначение" Тогда
ТоварыНазначениеПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыСерия" Тогда
ТоварыСерияПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыКоличествоУпаковок" Тогда
ТоварыКоличествоУпаковокПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыУпаковка" Тогда
ТоварыУпаковкаПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыВидЦеныПоставщика" Тогда
ТоварыВидЦеныПоставщикаПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыЦена" Тогда
ТоварыЦенаПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыПроцентРучнойСкидки" Тогда
ТоварыПроцентРучнойСкидкиПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыСуммаРучнойСкидки" Тогда
ТоварыСуммаРучнойСкидкиПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыСумма" Тогда
ТоварыСуммаПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыСуммаВзаиморасчетов" Тогда
ТоварыСуммаВзаиморасчетовПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыСтавкаНДС" Тогда
ТоварыСтавкаНДСПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыСуммаНДС" Тогда
ТоварыСуммаНДСПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыСклад" Тогда
ТоварыСкладПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыЗаказПоставщику" Тогда
ТоварыЗаказПоставщикуПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыСписатьНаРасходы" Тогда
ТоварыСписатьНаРасходыПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыСтатьяРасходов" Тогда
ТоварыСтатьяРасходовПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыНомерГТД" Тогда
ТоварыНомерГТДПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыАналитикаРасходов" Тогда
ТоварыАналитикаРасходовПриИзменении(Элемент);
Иначе
ОбщегоНазначенияУТКлиент.КонтрольНеСогласованныхИзмененийВызватьИсключение(ЭтаФорма, Элемент);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КонтрольНеСогласованныхИзмененийОбработатьСобытиеКоманды(Команда)
Если Команда.Имя = "ОтвязатьОтЗаказа" Тогда
ОтвязатьОтЗаказа(Команда);
ИначеЕсли Команда.Имя = "ПоискПоШтрихкоду" Тогда
ПоискПоШтрихкодуВыполнить(Команда);
ИначеЕсли Команда.Имя = "ПолучитьВес" Тогда
ПолучитьВес(Команда);
ИначеЕсли Команда.Имя = "ЗагрузитьДанныеИзТСД" Тогда
ЗагрузитьДанныеИзТСД(Команда);
ИначеЕсли Команда.Имя = "ПроверитьКоличествоВДокументе" Тогда
ПроверитьКоличествоВДокументе(Команда);
ИначеЕсли Команда.Имя = "ЗаполнитьЦеныПоСоглашению" Тогда
ЗаполнитьЦеныПоСоглашению(Команда);
ИначеЕсли Команда.Имя = "ЗаполнитьЦеныВыделенныхСтрокПоВидуЦеныПоставщика" Тогда
ЗаполнитьЦеныВыделенныхСтрокПоВидуЦенПоставщика(Команда);
ИначеЕсли Команда.Имя = "ЗаполнитьЦеныПоПоступлениям" Тогда
ЗаполнитьЦеныПоПоступлениям(Команда);
ИначеЕсли Команда.Имя = "ЗаполнитьНомераГТД" Тогда
ЗаполнитьНомераГТД(Команда);
ИначеЕсли Команда.Имя = "ЗаполнитьНомераГТДПоПоступлениям" Тогда
ЗаполнитьНомераГТДПоПоступлениям(Команда);
ИначеЕсли Команда.Имя = "ТоварыПодобратьТоварыПоЗаказамОрдерам" Тогда
ПодобратьТоварыПоЗаказамОрдерам(Команда);
ИначеЕсли Команда.Имя = "ИзменитьКачество" Тогда
ИзменитьКачествоНоменклатуры(Команда);
ИначеЕсли Команда.Имя = "ОтменитьРучныеСкидки" Тогда
ОтменитьРучныеСкидки(Команда);
ИначеЕсли Команда.Имя = "НазначитьРучнуюСкидкуВыделенныхСтрок" Тогда
НазначитьРучнуюСкидкуДляВыделенныхСтрок(Команда);
ИначеЕсли Команда.Имя = "РазбитьСтрокуФакт" Тогда
РазбитьСтрокуФакт(Команда);
ИначеЕсли Команда.Имя = "ПодобратьТовары" Тогда
ПодобратьТовары(Команда);
ИначеЕсли Команда.Имя = "ЗаполнитьНоменклатуруПоНоменклатуреПартнера" Тогда
ЗаполнитьНоменклатуруПоНоменклатуреПартнера(Команда);
ИначеЕсли Команда.Имя = "ДополнитьМногооборотнойТарой" Тогда
ДополнитьМногооборотнойТарой(Команда);
ИначеЕсли Команда.Имя = "ЗаполнитьСкладВВыделенныхСтроках" Тогда
ЗаполнитьСкладВВыделенныхСтроках(Команда);
Иначе
ОбщегоНазначенияУТКлиент.КонтрольНеСогласованныхИзмененийВызватьИсключение(ЭтаФорма, Команда);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КонтрольНеСогласованныхИзмененийОбработатьСобытиеНажатие(Элемент)
ОбщегоНазначенияУТКлиент.КонтрольНеСогласованныхИзмененийВызватьИсключение(ЭтаФорма, Элемент);
КонецПроцедуры
&НаКлиенте
Процедура КонтрольНеСогласованныхИзмененийОбработатьСобытиеПередНачаломИзменения(Элемент, Отказ)
Если Элемент.Имя = "Товары" Тогда
ТоварыПередНачаломИзменения(Элемент, Отказ);
Иначе
ОбщегоНазначенияУТКлиент.КонтрольНеСогласованныхИзмененийВызватьИсключение(ЭтаФорма, Элемент);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КонтрольНеСогласованныхИзмененийОбработатьСобытиеПередУдалением(Элемент, Отказ)
Если Элемент.Имя = "Товары" Тогда
ТоварыПередУдалением(Элемент, Отказ);
Иначе
ОбщегоНазначенияУТКлиент.КонтрольНеСогласованныхИзмененийВызватьИсключение(ЭтаФорма, Элемент);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КонтрольНеСогласованныхИзмененийОбработатьСобытиеПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа)
ОбщегоНазначенияУТКлиент.КонтрольНеСогласованныхИзмененийВызватьИсключение(ЭтаФорма, Элемент);
КонецПроцедуры
&НаКлиенте
Функция ВыполнитьПроверкиПередИзменениемСтатуса()
Перем ЕстьСчетаФактуры;
РеквизитМожноИзменить = Ложь;
ДополнительныеПараметры = Новый Структура;
Оповещение = Новый ОписаниеОповещения(
"РезультатВопросаЗавершение", ЭтотОбъект, ДополнительныеПараметры);
Если СтруктураДействийКонтрольНеСогласованныхИзменений = Неопределено
Или СтруктураДействийКонтрольНеСогласованныхИзменений.ОжидаетсяОповещение Тогда
ВыполнитьОбработкуОповещения(Оповещение, "ИзменитьРеквизит");
РеквизитМожноИзменить = Истина;
КонецЕсли;
ОчиститьСообщения();
ПроверитьНаличиеКорректировокИСчетовФактур(Объект.Ссылка, ЕстьКорректировки, ЕстьСчетаФактуры);
Если НЕ ЕстьПравоНаДобавлениеКорректировки И (ЕстьКорректировки ИЛИ ЕстьСчетаФактуры) И ИспользоватьКорректировкиПриобретений Тогда
Если ЕстьКорректировки Тогда
ТекстСообщения = НСтр("ru='На основании документа введена корректировка приобретения.
|Недостаточно прав для создания корректировки поступления.'");
Иначе
ТекстСообщения = НСтр("ru='На основании документа зарегистрирован счет-фактура.
|Недостаточно прав для создания корректировки поступления.'");
КонецЕсли;
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения);
ИначеЕсли ЕстьКорректировки И ИспользоватьКорректировкиПриобретений Тогда
СписокКнопок = Новый СписокЗначений;
СписокКнопок.Добавить("ВвестиКорректировку", НСтр("ru='Ввести корректировку'"));
СписокКнопок.Добавить("ОтменитьИзменения", НСтр("ru='Отмена'"));
ПоказатьВопрос(
Оповещение,
НСтр("ru='На основании документа введена корректировка приобретения.
|Изменение исходного документа запрещено.'"),
СписокКнопок,
,
"ВвестиКорректировку");
ИначеЕсли ЕстьСчетаФактуры И ИспользоватьКорректировкиПриобретений Тогда
СписокКнопок = Новый СписокЗначений;
СписокКнопок.Добавить("ВвестиКорректировку", НСтр("ru='Ввести корректировку'"));
СписокКнопок.Добавить("ОтменитьИзменения", НСтр("ru='Отмена'"));
ПоказатьВопрос(
Оповещение,
НСтр("ru='На основании документа зарегистрирован счет-фактура. Ввести корректировку поступления
|для выставления исправленных счетов-фактур?'"),
СписокКнопок,
,
"ВвестиКорректировку");
Иначе
ВыполнитьОбработкуОповещения(Оповещение, "ИзменитьРеквизит");
РеквизитМожноИзменить = Истина;
КонецЕсли;
Возврат РеквизитМожноИзменить;
КонецФункции
&НаКлиенте
Процедура РезультатВопросаЗавершение(КодОтвета, ДополнительныеПараметры) Экспорт
Если КодОтвета = "ВвестиКорректировку" Тогда
ОткрытьФорму("Документ.КорректировкаПриобретения.ФормаОбъекта", Новый Структура("Основание", Объект.Ссылка));
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПриИзменении_УстановитьДоступностьЭлементовПоСтатусуСервер(Элемент)
Если Не ВыполнитьПроверкиПередИзменениемСтатуса() Тогда
ОбщегоНазначенияУТКлиент.ВернутьПредыдущееЗначениеРеквизита(ЭтаФорма, Элемент);
Возврат;
Иначе
ОбщегоНазначенияУТКлиент.СохранитьЗначениеРеквизита(ЭтаФорма, Элемент);
КонецЕсли;
Если ОбщегоНазначенияУТКлиент.ПриДействииСЭлементомЗависящимОтСтатуса(ЭтаФорма) Тогда
Возврат;
КонецЕсли;
Если СтруктураДействийКонтрольНеСогласованныхИзменений.ПриИзменении.Свойство(Элемент.Имя) Тогда
КонтрольНеСогласованныхИзмененийОбработатьСобытиеПриИзменении(Элемент);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_Нажатие_УстановитьДоступностьЭлементовПоСтатусуСервер(Элемент)
Если ОбщегоНазначенияУТКлиент.ПриДействииСЭлементомЗависящимОтСтатуса(ЭтаФорма) Тогда
Возврат;
КонецЕсли;
Если СтруктураДействийКонтрольНеСогласованныхИзменений.Нажатие.Свойство(Элемент.Имя) Тогда
КонтрольНеСогласованныхИзмененийОбработатьСобытиеНажатие(Элемент);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_Команда_УстановитьДоступностьЭлементовПоСтатусуСервер(Команда)
Если Не ВыполнитьПроверкиПередИзменениемСтатуса() Тогда
Возврат;
КонецЕсли;
Если ОбщегоНазначенияУТКлиент.ПриДействииСЭлементомЗависящимОтСтатуса(ЭтаФорма) Тогда
Возврат;
КонецЕсли;
Если СтруктураДействийКонтрольНеСогласованныхИзменений.Команды.Свойство(Команда.Имя) Тогда
КонтрольНеСогласованныхИзмененийОбработатьСобытиеКоманды(Команда);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПередНачаломИзменения_УстановитьДоступностьЭлементовПоСтатусуСервер(Элемент, Отказ)
Если СтруктураДействийКонтрольНеСогласованныхИзменений = Неопределено Тогда
Возврат;
КонецЕсли;
ЗаполнитьЗначенияСвойств(СтруктураДействийКонтрольНеСогласованныхИзменений.ЗначенияРеквизитов[Элемент.Имя], Элемент.ТекущиеДанные);
Если СтруктураДействийКонтрольНеСогласованныхИзменений.ПередНачаломИзменения.Свойство(Элемент.Имя) Тогда
КонтрольНеСогласованныхИзмененийОбработатьСобытиеПередНачаломИзменения(Элемент, Отказ);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПередУдалением_УстановитьДоступностьЭлементовПоСтатусуСервер(Элемент, Отказ)
Если Не ВыполнитьПроверкиПередИзменениемСтатуса() Тогда
Отказ = Истина;
Возврат;
КонецЕсли;
Если ОбщегоНазначенияУТКлиент.ПриДействииСЭлементомЗависящимОтСтатуса(ЭтаФорма) Тогда
Возврат;
КонецЕсли;
Имя = Элемент.Имя;
Если СтруктураДействийКонтрольНеСогласованныхИзменений.ПередУдалением.Свойство(Имя) Тогда
КонтрольНеСогласованныхИзмененийОбработатьСобытиеПередУдалением(Элемент, Отказ);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПередНачаломДобавления_УстановитьДоступностьЭлементовПоСтатусуСервер(Элемент, Отказ, Копирование, Родитель, Группа)
Если Не ВыполнитьПроверкиПередИзменениемСтатуса() Тогда
Отказ = Истина;
Возврат;
КонецЕсли;
Если ОбщегоНазначенияУТКлиент.ПриДействииСЭлементомЗависящимОтСтатуса(ЭтаФорма) Тогда
Возврат;
КонецЕсли;
Имя = Элемент.Имя;
Если СтруктураДействийКонтрольНеСогласованныхИзменений.ПередНачаломДобавления.Свойство(Имя) Тогда
КонтрольНеСогласованныхИзмененийОбработатьСобытиеПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПриИзмененииРеквизитаЗависящегоОтСтатуса()
УстановитьДоступностьЭлементовПоСтатусуСервер();
ОбщегоНазначенияУТКлиент.ПослеИзмененияРеквизитаЗависящегоОтСтатуса(ЭтаФорма);
КонецПроцедуры
#КонецОбласти
#Область РаботаСБуферомОбмена
&НаСервере
Процедура СкопироватьСтрокиНаСервере(ИмяТЧ)
РаботаСТабличнымиЧастями.СкопироватьСтрокиВБуферОбмена(Объект[ИмяТЧ], Элементы[ИмяТЧ].ВыделенныеСтроки);
КонецПроцедуры
&НаСервере
Процедура ПолучитьСтрокиИзБуфераОбмена()
ХозяйственныеОперацииРаздельнойЗакупки = ХозяйственныеОперацииРаздельнойЗакупки();
ПоступлениеПоРаздельнойЗакупке =
ХозяйственныеОперацииРаздельнойЗакупки.Найти(Объект.ХозяйственнаяОперация) <> Неопределено;
ТипыНоменклатуры = НоменклатураСервер.ДопустимыеТипыНоменклатурыДляВыбора(
Объект.ХозяйственнаяОперация,
Не ПоступлениеПоРаздельнойЗакупке);
ПараметрыОтбора = Новый Соответствие;
ПараметрыОтбора.Вставить("Номенклатура.ТипНоменклатуры", ТипыНоменклатуры);
Колонки = "Номенклатура,Характеристика,Упаковка,КоличествоУпаковок,Цена,ПроцентРучнойСкидки,СуммаРучнойСкидки,
|НомерГТД,Склад,Подразделение,Сертификат,НомерПаспорта";
ТаблицаТоваров = РаботаСТабличнымиЧастями.СтрокиИзБуфераОбмена(ПараметрыОтбора, Колонки);
Если Не ЗначениеЗаполнено(ТаблицаТоваров) Тогда
Возврат;
КонецЕсли;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
ПараметрыЗаполненияСтавкиНДС =
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект);
ПараметрыЗаполненияСтавкиНДС.УказаннаяСтавкаНДС = УказаннаяСтавкаНДС;
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", ПараметрыЗаполненияСтавкиНДС);
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ПроверитьЗаполнитьСклад",
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(Объект, СкладГруппа));
СтруктураДействий.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ПриИзмененииТипаНоменклатуры",
Новый Структура("ЕстьРаботы, ЕстьОтменено", Истина, Ложь));
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, ЭтаФорма);
Если ТаблицаТоваров.Колонки.Найти("СуммаРучнойСкидки") <> Неопределено Тогда
СтруктураДействий.ПересчитатьСуммуСУчетомРучнойСкидки.Вставить("ПересчитыватьСуммуРучнойСкидки", Ложь);
КонецЕсли;
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтаФорма, СтруктураДействий);
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекЗаполненияСлужебныхРеквизитовТабличнойЧасти(
СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиКлиентСерверЛокализация.ДополнитьСтруктуруДействийПриИзмененииЭлемента(
ЭтотОбъект, "Номенклатура", СтруктураДействий);
ОбрабатываемыеСтроки = Новый Массив();
Для каждого СтрокаТовара Из ТаблицаТоваров Цикл
ТекущаяСтрока = Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(ТекущаяСтрока, СтрокаТовара);
Если Объект.ПоступлениеПоЗаказам Тогда
ТекущаяСтрока.РасхождениеЗаказ = 1;
КонецЕсли;
Если НЕ ИспользоватьРучныеСкидкиВЗакупках Тогда
ТекущаяСтрока.ПроцентРучнойСкидки = 0;
ТекущаяСтрока.СуммаРучнойСкидки = 0;
КонецЕсли;
ОбрабатываемыеСтроки.Добавить(ТекущаяСтрока);
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.Товары);
Для Каждого ТекущаяСтрока Из ОбрабатываемыеСтроки Цикл
ДоходыИРасходыКлиентСервер.ПриДобавленииСтрокиВТаблицу(ЭтотОбъект, ТекущаяСтрока, "Объект.Товары");
КонецЦикла;
СтруктураНаименованийТабличныхЧастей = Новый Структура("Товары");
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре(СтруктураНаименованийТабличныхЧастей);
ЗакупкиСервер.ЗаполнитьСлужебныеРеквизитыНомераГТД(Объект.Товары);
ЗаполнитьПризнакСписанияНаРасходыДляУслуг();
ПриИзмененииСкладаВТабличнойЧастиСервер();
РассчитатьИтоговыеПоказателиПоступления(ЭтаФорма);
ЗаполнитьСтатусыУказанияСерийСервер();
ЗаполнитьСлужебныеРеквизитыПоНазначениюВТЧ();
МногооборотнаяТараСервер.ОбновитьСостояниеЗаполненияМногооборотнойТары(Объект.СостояниеЗаполненияМногооборотнойТары);
КонецПроцедуры
&НаСервере
Процедура УстановитьДоступностьКомандБуфераОбмена()
МассивЭлементов = Новый Массив();
МассивЭлементов.Добавить("ТоварыВставитьСтроки");
МассивЭлементов.Добавить("ТоварыКонтекстноеМенюВставитьСтроки");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, МассивЭлементов, "Доступность",
РаботаСТабличнымиЧастями.ЕстьСтрокиВБуфереОбмена());
КонецПроцедуры
&НаКлиенте
Процедура УстановитьДоступностьКомандБуфераОбменаНаКлиенте()
МассивЭлементов = Новый Массив();
МассивЭлементов.Добавить("ТоварыВставитьСтроки");
МассивЭлементов.Добавить("ТоварыКонтекстноеМенюВставитьСтроки");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, МассивЭлементов, "Доступность", Истина);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСлужебныеРеквизитыПоНоменклатуре(СтруктураНаименованийТабличныхЧастей)
ПараметрыЗаполненияРеквизитов = Новый Структура;
ПараметрыЗаполненияРеквизитов.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются",
Новый Структура("Номенклатура", "ХарактеристикиИспользуются"));
ПараметрыЗаполненияРеквизитов.Вставить("ЗаполнитьПризнакТипНоменклатуры",
Новый Структура("Номенклатура", "ТипНоменклатуры"));
ПараметрыЗаполненияРеквизитов.Вставить("ЗаполнитьПризнакАртикул",
Новый Структура("Номенклатура", "Артикул"));
ПараметрыЗаполненияРеквизитов.Вставить("ЗаполнитьПризнакВедетсяУчетПоГТД",
Новый Структура("Номенклатура", "ВедетсяУчетПоГТД"));
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекЗаполненияСлужебныхРеквизитовТабличнойЧасти(ПараметрыЗаполненияРеквизитов);
ПакетнаяОбработкаТабличнойЧастиКлиентСерверЛокализация.ДополнитьСтруктуруДействийПриИзмененииЭлемента(ЭтотОбъект, "Номенклатура", ПараметрыЗаполненияРеквизитов);
Если СтруктураНаименованийТабличныхЧастей.Свойство("Товары") Тогда
НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(Объект.Товары, ПараметрыЗаполненияРеквизитов);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииСозданииНаСервере()
ИспользоватьРучныеСкидкиВЗакупках = ПолучитьФункциональнуюОпцию("ИспользоватьРучныеСкидкиВЗакупках");
ИспользоватьПоступлениеПоНесколькимЗаказам = ПолучитьФункциональнуюОпцию("ИспользоватьПоступлениеПоНесколькимЗаказам");
ЗапретитьПоступлениеТоваровБезНомеровГТД = ПолучитьФункциональнуюОпцию("ЗапретитьПоступлениеТоваровБезНомеровГТД");
ИспользоватьЗаказыПоставщикам = ПолучитьФункциональнуюОпцию("ИспользоватьЗаказыПоставщикам");
ИспользоватьСоглашенияСПоставщиками = ПолучитьФункциональнуюОпцию("ИспользоватьСоглашенияСПоставщиками");
ИспользоватьКорректировкиПриобретений = ПолучитьФункциональнуюОпцию("ИспользоватьКорректировкиПриобретений");
ИспользоватьНаправленияДеятельности = ПолучитьФункциональнуюОпцию("ИспользоватьУчетЗатратПоНаправлениямДеятельности");
ДатаНачалаПечатиЕдиногоАвансовогоОтчета = Константы.ДатаНачалаПечатиЕдиногоАвансовогоОтчета.Получить();
ЕдиныйАвансовыйОтчетБезусловно = Не Константы.ВидимостьДатыНачалаПечатиЕдиногоАвансовогоОтчета.Получить();
ИспользоватьУчетПрослеживаемыхИмпортныхТоваров = УчетПрослеживаемыхТоваровЛокализация.ИспользоватьУчетПрослеживаемыхИмпортныхТоваров(
Объект.Дата);
ПравоНаЧтениеЗаказовПоставщику = ПравоДоступа("Чтение", Метаданные.Документы.ЗаказПоставщику);
ОпределитьПечатьЕдиногоАвансовогоОтчета();
ХозяйственнаяОперацияДоговора = ПолучитьХозяйственнуюОперациюДоговора(Объект.ХозяйственнаяОперация);
ВалютаДокумента = Объект.Валюта;
ВалютаРегламентированногоУчета = ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(Объект.Организация);
КонтрагентЮрФизЛицо = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Контрагент, "ЮрФизЛицо");
СкладГруппа = Справочники.Склады.ЭтоГруппаИСкладыИспользуютсяВТЧДокументовЗакупки(Объект.Склад);
Склад = Объект.Склад;
УстановитьПараметрыВыбораТоварыСклад();
ПриИзмененииСкладаВТабличнойЧастиСервер();
Элементы.ТоварыЗаполнитьСкладВВыделенныхСтроках.Доступность = СкладГруппа;
Элементы.ГруппаКартинкаИНадписьНесколькоСкладов.Видимость = СкладГруппа;
УстановитьПараметрыВыбораВидаЗапасов();
УстановитьДоступностьЭлементовПоСтатусуСервер();
ЗаполнитьЦеныНоменклатурыЗаказов();
УстановитьВидимостьЭлементовПоОперацииСервер();
УстановитьСвойстваЭлементовПоПорядкуРасчетов();
УстановитьВидимостьКомандПоЗаказу();
ОбновитьИнформациюПоЗаказам();
ОбновитьДоступностьЭлементовВозвратнойТары(ЭтаФорма);
ОбновитьЗависимыеРеквизитыФормыПоЗаказу(
Объект.Товары,
НадписьРасхождениеЗаказ,
Элементы.КартинкаРасхождениеЗаказ,
Элементы.КартинкаРасхождениеЗаказы);
Если Объект.ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.ЗакупкаЧерезПодотчетноеЛицо Тогда
ЗакупкиСервер.УстановитьДоступностьДоговора(Объект, Элементы.Договор.Доступность, Элементы.Договор.Видимость);
КонецЕсли;
СтруктураНаименованийТабличныхЧастей = Новый Структура("Товары");
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре(СтруктураНаименованийТабличныхЧастей);
МногооборотнаяТараСервер.ОбновитьПризнакБезВозвратнойТары(Объект.Товары, Объект.ВернутьМногооборотнуюТару);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
РассчитатьИтоговыеПоказателиПоступления(ЭтаФорма);
ОбновитьТекстАвансовыйОтчет();
ОбновитьТекстДокументыНаОсновании();
ДатаДокументаДоИзменения = Объект.Дата;
РаботаСТабличнымиЧастями.ИнициализироватьКэшСтрок(Элементы.Товары);
ДоставкаТоваров.ПриЧтенииСозданииРаспоряженийНаСервере(Элементы, Объект, Объект.ПоступлениеПоЗаказам,,СводнаяИнформацияПоДоставке);
ЗакупкиСервер.ЗаполнитьСлужебныеРеквизитыНомераГТД(Объект.Товары);
НаправленияДеятельностиСервер.ПриЧтенииСозданииНаСервере(ЭтотОбъект);
ПодготовитьЗаполнитьУстановитьВидимостьСерий();
УстановитьВидимостьЭлементовСерий();
ЗаполнитьСписокВыбораОпераций();
ОтветственныеЛицаСервер.ЗаполнитьСписокВыбораМенеджера(Элементы.Менеджер, Объект);
ПараметрыЗаполнения = Документы.ПриобретениеТоваровУслуг.ПараметрыЗаполненияНалогообложенияНДСЗакупки(Объект);
УчетНДСУП.ЗаполнитьСписокВыбораНалогообложенияНДСЗакупки(Элементы.НалогообложениеНДС, Объект.НалогообложениеНДС, ПараметрыЗаполнения, УчетНДСКэшированныеЗначенияПараметров);
ПараметрыЗаполнения = Документы.ПриобретениеТоваровУслуг.ПараметрыЗаполненияВидаДеятельностиНДС(Объект);
УчетНДСУП.ЗаполнитьСписокВыбораВидаДеятельностиНДС(Элементы.ЗакупкаПодДеятельность, Объект.ЗакупкаПодДеятельность, ПараметрыЗаполнения, УчетНДСКэшированныеЗначенияПараметров);
ЗаполнитьСлужебныеРеквизитыПоНазначениюВТЧ();
ОбновитьОбязательностьСкладаВТЧ();
ЗакупкиСервер.ЗаполнитьСписокВыбораНаименованиеВходящегоДокумента(ЭтотОбъект, Объект.Контрагент);
УчетНДСЛокализация.УстановитьДоступностьЦенаВключаетНДСПоНалогообложениюНДС(Элементы.ЦенаВключаетНДС, Объект.НалогообложениеНДС);
УстановитьПараметрыВыбораНоменклатуры();
НастроитьВидимостьКомандыЗаполнитьПодразделение();
ОперацияССамозанятым = Объект.ОперацияССамозанятым;
ДенежныеСредстваСерверЛокализация.НастроитьЭлементыОперацииССамозанятым(ЭтотОбъект);
ДенежныеСредстваСерверЛокализация.УстановитьСтатусЗагрузкиЧеков(ЭтотОбъект);
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПолучитьХозяйственнуюОперациюДоговора(ХозяйственнаяОперация)
ХозяйственнаяОперацияДоговора = ХозяйственнаяОперация;
Если ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ЗакупкаЧерезПодотчетноеЛицо")
Или ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ЗакупкаУПоставщикаРеглУчет") Тогда
ХозяйственнаяОперацияДоговора = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ЗакупкаУПоставщика");
КонецЕсли;
Возврат ХозяйственнаяОперацияДоговора;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Процедура РассчитатьИтоговыеПоказателиПоступления(Форма)
КоллекцияТовары = Форма.Объект.Товары;
Форма.СуммаВсего = ?(Форма.Объект.ТребуетсяЗалогЗаТару,
КоллекцияТовары.Итог("СуммаСНДС"),
КоллекцияТовары.Итог("СуммаСНДСБезВозвратнойТары"));
Форма.СуммаНДС = ?(Форма.Объект.ТребуетсяЗалогЗаТару,
КоллекцияТовары.Итог("СуммаНДС"),
КоллекцияТовары.Итог("СуммаНДСБезВозвратнойТары"));
Форма.СуммаЗалогаЗаТару = ?(Форма.Объект.ТребуетсяЗалогЗаТару,КоллекцияТовары.Итог("СуммаСНДС")
- КоллекцияТовары.Итог("СуммаСНДСБезВозвратнойТары"),0);
ХозяйственныеОперацииИмпорта = ХозяйственныеОперацииИмпорта();
ХозяйственныеОперацииВвозИзЕАЭС = ХозяйственныеОперацииВвозИзЕАЭС();
Если ХозяйственныеОперацииИмпорта.Найти(Форма.Объект.ХозяйственнаяОперация) <> Неопределено
Или ХозяйственныеОперацииВвозИзЕАЭС.Найти(Форма.Объект.ХозяйственнаяОперация) <> Неопределено Тогда
Форма.Элементы.ГруппаСтраницыНДС.Видимость = Ложь;
Форма.Элементы.ГруппаСтраницыВсего.ТекущаяСтраница = Форма.Элементы.СтраницаВсегоБезНДС;
Иначе
Форма.Элементы.ГруппаСтраницыНДС.Видимость = Истина;
ЗакупкаОблагаетсяНДС = УчетНДСУПКлиентСервер.ОтображатьНДСВИтогахДокументаЗакупки(Форма.Объект.НалогообложениеНДС);
Если ЗакупкаОблагаетсяНДС Тогда
Форма.Элементы.ГруппаСтраницыНДС.ТекущаяСтраница = Форма.Элементы.СтраницаСНДС;
Форма.Элементы.ГруппаСтраницыВсего.ТекущаяСтраница = Форма.Элементы.СтраницаВсегоСНДС;
Иначе
Форма.Элементы.ГруппаСтраницыНДС.ТекущаяСтраница = Форма.Элементы.СтраницаБезНДС;
Форма.Элементы.ГруппаСтраницыВсего.ТекущаяСтраница = Форма.Элементы.СтраницаВсегоБезНДС;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПолучитьСделкуПоЗаказуПоставщику(ЗаказПоставщику)
Возврат ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ЗаказПоставщику, "Сделка");
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Процедура ОбновитьОтклоненияОтЗаказаВСтроке(ТекущаяСтрока, ПоступлениеПоЗаказам, ТребуетсяЗалогЗаТару)
Если ТекущаяСтрока.Цена < ТекущаяСтрока.ЦенаЗаказа И ТекущаяСтрока.ЦенаЗаказа <> 0 И ТекущаяСтрока.КодСтроки <> 0 Тогда
ТекущаяСтрока.ИндексКартинки = 3;
ТекущаяСтрока.ЦенаИзменилась = Истина;
Если ТекущаяСтрока.Цена <> 0 Тогда
ТекущаяСтрока.ПроцентОтклоненияОтЦеныЗаказа = 100 - (ТекущаяСтрока.ЦенаЗаказа * 100 / ТекущаяСтрока.Цена);
Иначе
ТекущаяСтрока.ПроцентОтклоненияОтЦеныЗаказа = 100;
КонецЕсли;
ИначеЕсли ТекущаяСтрока.Цена > ТекущаяСтрока.ЦенаЗаказа И ТекущаяСтрока.ЦенаЗаказа <> 0 И ТекущаяСтрока.КодСтроки <> 0 Тогда
ТекущаяСтрока.ИндексКартинки = 1;
ТекущаяСтрока.ЦенаИзменилась = Истина;
Если ТекущаяСтрока.Цена <> 0 Тогда
ТекущаяСтрока.ПроцентОтклоненияОтЦеныЗаказа = 100 - (ТекущаяСтрока.ЦенаЗаказа * 100 / ТекущаяСтрока.Цена);
Иначе
ТекущаяСтрока.ПроцентОтклоненияОтЦеныЗаказа = 100;
КонецЕсли;
Иначе
ТекущаяСтрока.ИндексКартинки = 8;
ТекущаяСтрока.ЦенаИзменилась = Ложь;
ТекущаяСтрока.ПроцентОтклоненияОтЦеныЗаказа = 0;
КонецЕсли;
Если ПоступлениеПоЗаказам Тогда
Если ТекущаяСтрока.КодСтроки = 0 Тогда
ТекущаяСтрока.РасхождениеЗаказ = 1;
Иначе
ТекущаяСтрока.РасхождениеЗаказ = 0;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбновитьОтклоненияОтЗаказа()
Для Каждого ТекСтрока Из Объект.Товары Цикл
ОбновитьОтклоненияОтЗаказаВСтроке(ТекСтрока, Объект.ПоступлениеПоЗаказам, Объект.ТребуетсяЗалогЗаТару);
КонецЦикла;
КонецПроцедуры
&НаСервере
Функция ПоместитьТоварыВоВременноеХранилищеСервер(ИмяКоллекции)
Возврат ЗакупкиСервер.ПоместитьТоварыВоВременноеХранилище(Объект[ИмяКоллекции]);
КонецФункции
&НаСервере
Процедура ЗаполнитьТоварыИзВременногоХранилищаСервер(АдресВоВременномХранилище)
ТаблицаТоваров = ПолучитьИзВременногоХранилища(АдресВоВременномХранилище);
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
ПараметрыЗаполненияСтавкиНДС = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект);
ПараметрыЗаполненияСтавкиНДС.УказаннаяСтавкаНДС = УказаннаяСтавкаНДС;
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", ПараметрыЗаполненияСтавкиНДС);
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ПроверитьЗаполнитьСклад", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(Объект, СкладГруппа));
Если ИспользоватьСоглашенияСПоставщиками И ЗначениеЗаполнено(Объект.Соглашение) Тогда
СтруктураДействий.Вставить("ЗаполнитьУсловияЗакупок", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияЦеныЗакупкиВСтрокеТЧ(Объект));
Иначе
СтруктураДействий.Вставить("ЗаполнитьЦенуЗакупки", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияЦеныЗакупкиВСтрокеТЧ(Объект));
КонецЕсли;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Истина));
СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетов");
СтруктураДействий.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтотОбъект, СтруктураДействий);
ДоходыИРасходыКлиентСервер.ВставитьДействиеЗаполнитьСтатьюАналитикуРасходовНоменклатуры(
СтруктураДействий,
ЭтотОбъект,
Объект.ХозяйственнаяОперация,
Объект.Организация,
Объект.Подразделение);
ПакетнаяОбработкаТабличнойЧастиКлиентСерверЛокализация.ДополнитьСтруктуруДействийПриИзмененииЭлемента(ЭтотОбъект, "Номенклатура", СтруктураДействий);
ОбрабатываемыеСтроки = Новый Массив;
Для каждого ТекСтрока Из ТаблицаТоваров Цикл
МассивСтрокКоллекции = Объект.Товары.НайтиСтроки(Новый Структура("НомерСтроки", ТекСтрока.НомерСтроки));
Если МассивСтрокКоллекции.Количество() <> 1 Тогда
Продолжить;
Иначе
СтрокаКоллекции = МассивСтрокКоллекции[0];
КонецЕсли;
ЗаполнитьЗначенияСвойств(СтрокаКоллекции, ТекСтрока, "Номенклатура, Характеристика, Упаковка");
ОбрабатываемыеСтроки.Добавить(СтрокаКоллекции);
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.Товары);
СтруктураНаименованийТабличныхЧастей = Новый Структура("Товары");
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре(СтруктураНаименованийТабличныхЧастей);
ЗаполнитьСлужебныеРеквизитыПоНазначениюВТЧ();
ЗаполнитьПризнакСписанияНаРасходыДляУслуг();
ПриИзмененииСкладаВТабличнойЧастиСервер();
РассчитатьИтоговыеПоказателиПоступления(ЭтаФорма);
ЗаполнитьСтатусыУказанияСерийСервер();
ЗакупкиСервер.ЗаполнитьСлужебныеРеквизитыНомераГТД(Объект.Товары);
КонецПроцедуры
&НаСервере
Процедура ОбновитьИнформациюПоЗаказам()
ПараметрыОбновления = ЗаказыСервер.ПараметрыОбновленияИнформацииПоЗаказамВФорме();
ПараметрыОбновления.ИмяРеквизитаСписокЗаказов = "СписокЗаказов";
ПараметрыОбновления.ПутьЗаказаВШапке = "Объект.ЗаказПоставщику";
ПараметрыОбновления.ИмяНадписиЗаголовка = "НадписьЗаголовокЗаказы";
ПараметрыОбновления.ИмяГруппыКолонокВТабличнойЧасти = "ТоварыГруппаЗаказПоставщику";
ПараметрыОбновления.ИмяЗаказаВТабличнойЧасти = "ЗаказПоставщику";
ПараметрыОбновления.ИспользоватьЗаказыВТабличнойЧасти = ИспользоватьПоступлениеПоНесколькимЗаказам;
ЗаказыСервер.ОбновитьИнформациюПоЗаказамВФорме(ЭтаФорма, Объект.Товары, ПараметрыОбновления);
ОбновитьНадписьОтклоненийОтЦенЗаказа();
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "Сделка", "Видимость",
(Объект.ПоступлениеПоЗаказам И ЗначениеЗаполнено(Объект.ЗаказПоставщику)) Или Не Объект.ПоступлениеПоЗаказам);
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "Сделка", "Доступность", Не Объект.ПоступлениеПоЗаказам);
Если ПравоНаЧтениеЗаказовПоставщику Тогда
Если ЗначениеЗаполнено(Объект.ЗаказПоставщику) Тогда
Объект.Сделка = ПолучитьСделкуПоЗаказуПоставщику(Объект.ЗаказПоставщику);
ИначеЕсли Объект.ПоступлениеПоЗаказам Тогда
Объект.Сделка = Неопределено;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбновитьНадписьОтклоненийОтЦенЗаказа()
Если Объект.ПоступлениеПоЗаказам И
Объект.Товары.НайтиСтроки(Новый Структура("ЦенаИзменилась", Истина)).Количество() > 0 Тогда
Если ЗначениеЗаполнено(Объект.ЗаказПоставщику) Тогда
НадписьОтклонениеЦен = НСтр("ru='Цены отличаются от заказа'");
Иначе
НадписьОтклонениеЦен = НСтр("ru='Цены отличаются от заказов'");
КонецЕсли;
Элементы.КартинкаОтклонениеЦенЗаказы.Картинка = БиблиотекаКартинок.Предупреждение;
Элементы.КартинкаОтклонениеЦенЗаказ.Картинка = БиблиотекаКартинок.Предупреждение;
ТекстПодсказки = НСтр("ru='Для установки фильтра по строкам с отклонением цены
|воспользуйтесь командой ""Показать отклонения цен"" в группе команд ""Цены""'");
Иначе
НадписьОтклонениеЦен = "";
Элементы.КартинкаОтклонениеЦенЗаказы.Картинка = БиблиотекаКартинок.ПустаяКартинка;
Элементы.КартинкаОтклонениеЦенЗаказ.Картинка = БиблиотекаКартинок.ПустаяКартинка;
ТекстПодсказки = "";
КонецЕсли;
Элементы.НадписьОтклонениеЦенЗаказ.Подсказка = ТекстПодсказки;
Элементы.НадписьОтклонениеЦенЗаказы.Подсказка = ТекстПодсказки;
Элементы.КартинкаОтклонениеЦенЗаказы.Подсказка = ТекстПодсказки;
Элементы.КартинкаОтклонениеЦенЗаказ.Подсказка = ТекстПодсказки;
КонецПроцедуры
&НаСервере
Процедура ОбработатьОповещениеЗакрытияЗаказов()
ЗаполнитьЦеныНоменклатурыЗаказов();
ОбновитьНадписьОтклоненийОтЦенЗаказа();
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьДоговорПоУмолчанию()
ХозяйственнаяОперацияОтбора = ЗакупкиСервер.ХозяйственныеОперацииПоОсновной(ХозяйственнаяОперацияДоговора);
Если Объект.ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоДоговорамКонтрагентов Тогда
ДопПараметры = ЗакупкиСервер.ДополнительныеПараметрыОтбораДоговоров();
ДопПараметры.ВалютаВзаиморасчетов = Объект.ВалютаВзаиморасчетов;
ДопПараметры.НаправлениеДеятельности = Объект.НаправлениеДеятельности;
ДопПараметры.ДоговорССамозанятым = Объект.ОперацияССамозанятым;
ДоговорПоУмолчанию = ЗакупкиСервер.ПолучитьДоговорПоУмолчанию(Объект, ХозяйственнаяОперацияОтбора, ДопПараметры);
Иначе
ДопПараметры = ЗакупкиСервер.ДополнительныеПараметрыОтбораДоговоров();
ДопПараметры.ВалютаВзаиморасчетов = Объект.ВалютаВзаиморасчетов;
ДопПараметры.ДоговорССамозанятым = Объект.ОперацияССамозанятым;
ДоговорПоУмолчанию = ЗакупкиСервер.ПолучитьДоговорПоУмолчанию(Объект, ХозяйственнаяОперацияОтбора, ДопПараметры);
КонецЕсли;
ИспользуютсяДоговорыПоСоглашению = Не ЗначениеЗаполнено(Объект.Соглашение)
Или ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Соглашение, "ИспользуютсяДоговорыКонтрагентов");
Если (Договор <> ДоговорПоУмолчанию
Или Не ЗначениеЗаполнено(Объект.Договор))
И ИспользуютсяДоговорыПоСоглашению Тогда
Объект.Договор = ДоговорПоУмолчанию;
Если ЗначениеЗаполнено(Объект.Договор) Тогда
ЗаполнитьВидДеятельностиНДС();
ЗаполнитьНалогообложениеНДСЗакупки();
НалогообложениеНДСПриИзмененииСервер();
КонецЕсли;
ДоговорПриИзмененииСервер();
ЗакупкиВызовСервера.ЗаполнитьБанковскиеСчетаПоДоговору(Объект.Договор, Объект.БанковскийСчетОрганизации, Объект.БанковскийСчетКонтрагента);
КонецЕсли;
Договор = Объект.Договор;
ДоставкаТоваров.ПриЧтенииСозданииРаспоряженийНаСервере(Элементы, Объект, Объект.ПоступлениеПоЗаказам,,СводнаяИнформацияПоДоставке);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьПоЗаказуСервер()
Объект.Товары.Очистить();
Если ИспользоватьПоступлениеПоНесколькимЗаказам Тогда
МассивЗаказов = Неопределено;
Иначе
МассивЗаказов = Новый Массив();
МассивЗаказов.Добавить(Объект.ЗаказПоставщику);
КонецЕсли;
Документы.ПриобретениеТоваровУслуг.ЗаполнитьПоОстаткамЗаказов(
Объект,
Объект.Товары,
Склад,
МассивЗаказов);
ЗаполнитьЦеныНоменклатурыЗаказов();
ОбновитьИнформациюПоЗаказам();
СтруктураНаименованийТабличныхЧастей = Новый Структура("Товары");
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре(СтруктураНаименованийТабличныхЧастей);
ЗакупкиСервер.ЗаполнитьСлужебныеРеквизитыНомераГТД(Объект.Товары);
ПересчитатьКоличествоРНПТ();
ЗаполнитьСлужебныеРеквизитыПоНазначениюВТЧ();
ЗаполнитьПризнакСписанияНаРасходыДляУслуг();
МногооборотнаяТараСервер.ОбновитьПризнакБезВозвратнойТары(Объект.Товары, Объект.ВернутьМногооборотнуюТару);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
ПриИзмененииСкладаВТабличнойЧастиСервер();
РассчитатьИтоговыеПоказателиПоступления(ЭтаФорма);
ЗаполнитьСтатусыУказанияСерийСервер();
КонецПроцедуры
&НаСервере
Процедура ОтвязатьСтрокиОтЗаказовПоставщикам()
Для Каждого ТекСтрока Из Объект.Товары Цикл
ТекСтрока.КодСтроки = 0;
ТекСтрока.ЗаказПоставщику = Документы.ЗаказПоставщику.ПустаяСсылка();
ТекСтрока.Сделка = Справочники.СделкиСКлиентами.ПустаяСсылка();
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьКомандПоЗаказу()
Элементы.ТоварыПоказатьОтклоненияЦен.Видимость = Объект.ПоступлениеПоЗаказам;
Элементы.ЗакрытьЗаказ.Видимость = Объект.ПоступлениеПоЗаказам;
Элементы.ЗакрытьЗаказы.Видимость = Объект.ПоступлениеПоЗаказам;
Элементы.ТоварыДополнитьМногооборотнойТарой.Видимость = Не Объект.ПоступлениеПоЗаказам;
КонецПроцедуры
&НаСервере
Функция НеобходимВопросОбОчисткеСклада()
ЗадаватьВопрос = Ложь;
СкладГруппа = Справочники.Склады.ЭтоГруппаИСкладыИспользуютсяВТЧДокументовЗакупки(Объект.Склад);
Если Не СкладГруппа Тогда
Для Каждого ТекСтрока Из Объект.Товары Цикл
Если ЗначениеЗаполнено(ТекСтрока.ЗаказПоставщику)
И ЗначениеЗаполнено(ТекСтрока.КодСтроки)
И ЗначениеЗаполнено(ТекСтрока.Склад)
И ТекСтрока.Склад <> Объект.Склад Тогда
ЗадаватьВопрос = Истина;
Прервать;
КонецЕсли;
КонецЦикла;
Иначе
Для Каждого ТекСтрока Из Объект.Товары Цикл
Если ЗначениеЗаполнено(ТекСтрока.ЗаказПоставщику)
И ЗначениеЗаполнено(ТекСтрока.КодСтроки)
И ЗначениеЗаполнено(ТекСтрока.Склад) Тогда
ЗадаватьВопрос = Истина;
Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Возврат ЗадаватьВопрос;
КонецФункции
&НаСервере
Процедура УстановитьДоступностьЭлементовПоСтатусуСервер()
УстановитьПодписку = Объект.Согласован;
МассивЭлементов = Новый Массив;
Если Не Объект.ПоступлениеПоЗаказам Тогда
МассивЭлементов.Добавить("Дата");
КонецЕсли;
МассивЭлементов.Добавить("Партнер");
МассивЭлементов.Добавить("Соглашение");
МассивЭлементов.Добавить("Договор");
МассивЭлементов.Добавить("ЦенаВключаетНДС");
МассивЭлементов.Добавить("Организация");
МассивЭлементов.Добавить("Контрагент");
МассивЭлементов.Добавить("НалогообложениеНДС");
МассивЭлементов.Добавить("ФормаОплаты");
МассивЭлементов.Добавить("ПорядокРасчетов");
МассивЭлементов.Добавить("ПоступлениеПоЗаказу");
МассивЭлементов.Добавить("ПоступлениеПоЗаказам");
МассивЭлементов.Добавить("ХозяйственнаяОперация");
МассивЭлементов.Добавить("Сделка");
МассивЭлементов.Добавить("Подразделение");
МассивЭлементов.Добавить("ЗакупкаПодДеятельность");
МассивЭлементов.Добавить("Склад");
МассивЭлементов.Добавить("ВернутьМногооборотнуюТару");
МассивЭлементов.Добавить("ДатаВозвратаМногооборотнойТары");
МассивЭлементов.Добавить("ТребуетсяЗалогЗаТару");
МассивЭлементов.Добавить("Товары;ПередНачаломДобавления,ПередУдалением,ПередНачаломИзменения");
МассивЭлементов.Добавить("ТоварыОтвязатьОтЗаказа");
МассивЭлементов.Добавить("ТоварыКонтекстноеМенюОтвязатьОтЗаказа");
МассивЭлементов.Добавить("ТоварыПоискПоШтрихкоду");
МассивЭлементов.Добавить("ТоварыПолучитьВес");
МассивЭлементов.Добавить("ТоварыЗагрузитьДанныеИзТСД");
МассивЭлементов.Добавить("ТоварыПроверитьКоличествоВДокументе");
МассивЭлементов.Добавить("ТоварыЗаполнитьЦеныПоСоглашению");
МассивЭлементов.Добавить("ТоварыЗаполнитьЦеныВыделенныхСтрокПоВидуЦеныПоставщика");
МассивЭлементов.Добавить("ТоварыЗаполнитьЦеныПоПоступлениям");
МассивЭлементов.Добавить("ТоварыЗаполнитьНомераГТД");
МассивЭлементов.Добавить("ТоварыНомерГТДСтранаПроисхождения");
МассивЭлементов.Добавить("ТоварыЗаполнитьНомераГТДПоПоступлениям");
МассивЭлементов.Добавить("ТоварыПодобратьТоварыПоЗаказамОрдерам");
МассивЭлементов.Добавить("ТоварыИзменитьКачество");
МассивЭлементов.Добавить("ТоварыОтменитьРучныеСкидки");
МассивЭлементов.Добавить("ТоварыНазначитьРучнуюСкидкуВыделенныхСтрок");
МассивЭлементов.Добавить("ТоварыРазбитьСтроку");
МассивЭлементов.Добавить("ТоварыКонтекстноеМенюРазбитьСтрокуФакт");
МассивЭлементов.Добавить("ТоварыПодобратьНоменклатуру");
МассивЭлементов.Добавить("ТоварыЗаполнитьНоменклатуруПоНоменклатуреПартнера");
МассивЭлементов.Добавить("ТоварыДополнитьМногооборотнойТарой");
МассивЭлементов.Добавить("ТоварыЗаполнитьСкладВВыделенныхСтроках");
ОбщегоНазначенияУТ.УстановитьПодпискуНаСобытияИзмененияЭлементовФормы(ЭтаФорма, МассивЭлементов, УстановитьПодписку);
Если Не Объект.ПоступлениеПоЗаказам Тогда
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ТоварыЗаполнитьСкладВВыделенныхСтроках", "Доступность", СкладГруппа);
Иначе
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы,"ТоварыЗаполнитьСкладВВыделенныхСтроках", "Видимость", Ложь);
КонецЕсли;
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ТоварыОтвязатьОтЗаказа", "Видимость", Объект.ПоступлениеПоЗаказам);
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ТоварыКонтекстноеМенюОтвязатьОтЗаказа", "Видимость", Объект.ПоступлениеПоЗаказам);
Если Объект.ПоступлениеПоЗаказам И Не ПраваПользователяПовтИсп.ОтклонениеОтУсловийЗакупок()
И (ЗначениеЗаполнено(Объект.ЗаказПоставщику) ИЛИ СписокЗаказов.Количество() > 0) Тогда
МассивЭлементов = Новый Массив;
МассивЭлементов.Добавить("Партнер");
МассивЭлементов.Добавить("Соглашение");
МассивЭлементов.Добавить("Договор");
МассивЭлементов.Добавить("НалогообложениеНДС");
МассивЭлементов.Добавить("ЦенаВключаетНДС");
МассивЭлементов.Добавить("Организация");
МассивЭлементов.Добавить("Контрагент");
МассивЭлементов.Добавить("ХозяйственнаяОперация");
МассивЭлементов.Добавить("Менеджер");
МассивЭлементов.Добавить("Сделка");
МассивЭлементов.Добавить("Подразделение");
МассивЭлементов.Добавить("ЗакупкаПодДеятельность");
МассивЭлементов.Добавить("ПоступлениеПоЗаказу");
МассивЭлементов.Добавить("ПоступлениеПоЗаказам");
МассивЭлементов.Добавить("ВернутьМногооборотнуюТару");
МассивЭлементов.Добавить("ТребуетсяЗалогЗаТару");
МассивЭлементов.Добавить("ДатаВозвратаМногооборотнойТары");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, МассивЭлементов, "ТолькоПросмотр", Истина);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьЭлементовПоОперацииСервер()
Перем МассивВсехРеквизитов;
Перем МассивРеквизитовОперации;
Документы.ПриобретениеТоваровУслуг.ЗаполнитьИменаРеквизитовПоХозяйственнойОперации(
Объект.ХозяйственнаяОперация,
МассивВсехРеквизитов,
МассивРеквизитовОперации);
ДенежныеСредстваСервер.УстановитьВидимостьЭлементовПоМассиву(
Элементы,
МассивВсехРеквизитов,
МассивРеквизитовОперации);
МассивЭлементов = Новый Массив();
МассивЭлементов.Добавить("Расчеты");
МассивЭлементов.Добавить("ЗаголовокОплата");
МассивЭлементов.Добавить("ЗачетОплатыФорма");
МассивЭлементов.Добавить("ПорядокРасчетов");
МассивЭлементов.Добавить("ДекорацияЭтапыОплаты");
ВидимостьЭлементов =
(Объект.ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.ПриемНаКомиссию)
И (Объект.ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.ЗакупкаЧерезПодотчетноеЛицо);
Элементы.ТоварыНазначитьРучнуюСкидкуВыделенныхСтрок.Видимость = ВидимостьЭлементов;
Элементы.ТоварыОтменитьРучныеСкидки.Видимость = ВидимостьЭлементов;
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, МассивЭлементов, "Видимость", ВидимостьЭлементов);
НоменклатураСервер.УстановитьПараметрыВыбораНоменклатуры(Объект.ХозяйственнаяОперация, Элементы.ТоварыНоменклатура);
НоменклатураСервер.УстановитьПараметрыВыбораНоменклатуры(Объект.ХозяйственнаяОперация, Элементы.ТоварыНоменклатураПартнера);
МассивЭлементов = Новый Массив();
МассивЭлементов.Добавить("ТоварыЗаполнитьНомераГТД");
МассивЭлементов.Добавить("ТоварыНомерГТДСтранаПроисхождения");
МассивЭлементов.Добавить("ТоварыЗаполнитьНомераГТДПоПоступлениям");
ХозяйственныеОперацииИмпорта = ХозяйственныеОперацииИмпорта();
ВидимостьЭлементов = (ХозяйственныеОперацииИмпорта.Найти(Объект.ХозяйственнаяОперация) = Неопределено);
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, МассивЭлементов, "Видимость", ВидимостьЭлементов);
Элементы.ПоступлениеПоЗаказам.Доступность = НЕ Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщикаРеглУчет;
Элементы.ПоступлениеПоЗаказу.Доступность = НЕ Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщикаРеглУчет;
ЗакупкаЧерезПодотчетноеЛицо = (Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ЗакупкаЧерезПодотчетноеЛицо);
МассивЭлементов = Новый Массив();
МассивЭлементов.Добавить("ПоступлениеПоЗаказу");
МассивЭлементов.Добавить("ТоварыЗаполнитьНоменклатуруПоНоменклатуреПартнера");
МассивЭлементов.Добавить("ТоварыПодобратьТоварыПоЗаказамОрдерам");
МассивЭлементов.Добавить("ТоварыНоменклатураПартнераКод");
МассивЭлементов.Добавить("ТоварыНоменклатураПартнераАртикул");
МассивЭлементов.Добавить("ТоварыЗаполнитьЦеныПоСоглашению");
МассивЭлементов.Добавить("ТоварыЗаполнитьЦеныВыделенныхСтрокПоВидуЦеныПоставщика");
МассивЭлементов.Добавить("ТоварыЗаполнитьЦеныПоПоступлениям");
УстановитьДоступностьСоглашений();
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, МассивЭлементов, "Видимость", Не ЗакупкаЧерезПодотчетноеЛицо);
УстановитьОбязательностьПоставщика();
УстановитьВидимостьРеквизитовПечатьАвансовогоОтчета();
Если Не ЗакупкаЧерезПодотчетноеЛицо Тогда
ЗакупкиСервер.УстановитьДоступностьДоговора(Объект, Элементы.Договор.Доступность, Элементы.Договор.Видимость, Объект.Договор);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьОбязательностьПоставщика()
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ЗакупкаЧерезПодотчетноеЛицо
И Объект.НалогообложениеНДС = Перечисления.ТипыНалогообложенияНДС.ПродажаНеОблагаетсяНДС Тогда
Элементы.Партнер.АвтоОтметкаНезаполненного = Ложь;
Элементы.Контрагент.АвтоОтметкаНезаполненного = Ложь;
Иначе
Элементы.Партнер.АвтоОтметкаНезаполненного = Неопределено;
Элементы.Контрагент.АвтоОтметкаНезаполненного = Неопределено;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьРеквизитовПечатьАвансовогоОтчета()
ЗакупкаЧерезПодотчетноеЛицо = (Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ЗакупкаЧерезПодотчетноеЛицо);
ВидимостьРеквизитовПечатиАвансовогоОтчета = ЗакупкаЧерезПодотчетноеЛицо
И Не ПечатьЕдиногоАвансовогоОтчета
И ПравоДоступа("Просмотр", Метаданные.ОбщиеФормы.РеквизитыПечатиАвансовогоОтчета);
Элементы.РеквизитыПечатиАвансовогоОтчета.Видимость = ВидимостьРеквизитовПечатиАвансовогоОтчета;
Элементы.ГруппаПечать.Видимость = ВидимостьРеквизитовПечатиАвансовогоОтчета;
Элементы.ТекстАвансовыйОтчет.Видимость = ЗакупкаЧерезПодотчетноеЛицо
И ПечатьЕдиногоАвансовогоОтчета
И ПравоДоступа("Просмотр", Метаданные.Документы.АвансовыйОтчет);
КонецПроцедуры
&НаСервере
Процедура УстановитьПараметрыВыбораВидаЗапасов()
МассивПараметров = Новый Массив;
МассивПараметров.Добавить(Новый СвязьПараметраВыбора("Отбор.Организация", "Объект.Организация"));
МассивПараметров.Добавить(Новый СвязьПараметраВыбора("Отбор.ХозяйственнаяОперация", "Объект.ХозяйственнаяОперация"));
МассивПараметров.Добавить(Новый СвязьПараметраВыбора("Отбор.Номенклатура", "Элементы.Товары.ТекущиеДанные.Номенклатура"));
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПриемНаКомиссию Тогда
МассивПараметров.Добавить(Новый СвязьПараметраВыбора("Отбор.Комитент", "Объект.Партнер"));
МассивПараметров.Добавить(Новый СвязьПараметраВыбора("Отбор.Соглашение", "Объект.Соглашение"));
МассивПараметров.Добавить(Новый СвязьПараметраВыбора("Отбор.Договор", "Объект.Договор"));
МассивПараметров.Добавить(Новый СвязьПараметраВыбора("Отбор.Валюта", "Объект.Валюта"));
МассивПараметров.Добавить(Новый СвязьПараметраВыбора("Отбор.НалогообложениеНДС", "Объект.НалогообложениеНДС"));
КонецЕсли;
Элементы.ТоварыВидЗапасов.СвязиПараметровВыбора = Новый ФиксированныйМассив(МассивПараметров);
КонецПроцедуры
&НаСервере
Процедура ОбработкаВыбораПодборНаСервере(ВыбранноеЗначение)
ТаблицаТоваров = ПолучитьИзВременногоХранилища(ВыбранноеЗначение.АдресТоваровВХранилище);
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
ПараметрыЗаполненияСтавкиНДС = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект);
ПараметрыЗаполненияСтавкиНДС.УказаннаяСтавкаНДС = УказаннаяСтавкаНДС;
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", ПараметрыЗаполненияСтавкиНДС);
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц");
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетов");
СтруктураДействий.Вставить("ПриИзмененииТипаНоменклатуры", Новый Структура("ЕстьРаботы, ЕстьОтменено", Истина, Ложь));
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекЗаполненияСлужебныхРеквизитовТабличнойЧасти(СтруктураДействий);
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекПересчетаРеквизитовТабличнойЧасти(Объект, СтруктураДействий, "Склад", Истина);
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтотОбъект, СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиКлиентСерверЛокализация.ДополнитьСтруктуруДействийПриИзмененииЭлемента(ЭтотОбъект, "Номенклатура", СтруктураДействий);
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
ОбрабатываемыеСтроки = Новый Массив;
КопируемыеПоля = "НоменклатураПартнера,
|Номенклатура,
|Характеристика,
|Упаковка,
|Склад,
|ВидЦеныПоставщика,
|Цена,
|Сумма,
|КоличествоУпаковок,
|ПроцентРучнойСкидки,
|СуммаРучнойСкидки";
Для каждого СтрокаТовара Из ТаблицаТоваров Цикл
ТекущаяСтрока = Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(ТекущаяСтрока, СтрокаТовара, КопируемыеПоля);
Если Объект.ПоступлениеПоЗаказам Тогда
ТекущаяСтрока.РасхождениеЗаказ = 1;
КонецЕсли;
ОбрабатываемыеСтроки.Добавить(ТекущаяСтрока);
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.Товары,
КэшированныеЗначения);
Для каждого ТекущаяСтрока Из ОбрабатываемыеСтроки Цикл
ДоходыИРасходыКлиентСервер.ПриДобавленииСтрокиВТаблицу(ЭтотОбъект, ТекущаяСтрока, "Объект.Товары");
КонецЦикла;
СтруктураНаименованийТабличныхЧастей = Новый Структура("Товары");
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре(СтруктураНаименованийТабличныхЧастей);
ЗаполнитьСлужебныеРеквизитыПоНазначениюВТЧ();
ЗаполнитьПризнакСписанияНаРасходыДляУслуг();
ПриИзмененииСкладаВТабличнойЧастиСервер();
РассчитатьИтоговыеПоказателиПоступления(ЭтаФорма);
ЗаполнитьСтатусыУказанияСерийСервер();
ЗакупкиСервер.ЗаполнитьСлужебныеРеквизитыНомераГТД(Объект.Товары);
МногооборотнаяТараСервер.ОбновитьСостояниеЗаполненияМногооборотнойТары(Объект.СостояниеЗаполненияМногооборотнойТары);
КонецПроцедуры
&НаСервере
Процедура ОбновитьЭлементыДополнительныхРеквизитов()
УправлениеСвойствами.ОбновитьЭлементыДополнительныхРеквизитов(ЭтаФорма);
КонецПроцедуры
&НаСервере
Процедура ПолучитьТоварыИзХранилища(АдресТоваровВХранилище)
СтруктураДействийСПересчетомСумм = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействийСПересчетомСумм, ЭтотОбъект);
СтруктураДействийСПересчетомСумм.Удалить("ОчиститьСуммуВзаиморасчетов");
СтруктураДействийСПересчетомСумм.Вставить("ПриИзмененииТипаНоменклатуры",
Новый Структура("ЕстьРаботы, ЕстьОтменено", Истина, Ложь));
СтруктураДействийБезПересчетаСумм = Новый Структура;
СтруктураДействийБезПересчетаСумм.Вставить("ПриИзмененииТипаНоменклатуры",
Новый Структура("ЕстьРаботы, ЕстьОтменено", Истина, Ложь));
ТоварыИзХранилища = ПолучитьИзВременногоХранилища(АдресТоваровВХранилище);
СтруктураПоискаТоваровЗаказа = Новый Структура("КодСтроки,ЗаказПоставщику,Серия");
СтруктураПоискаТоваровНакладной = Новый Структура("НомерСтроки");
ТоварыЗаказа = Новый Массив;
ТоварыНакладной = Новый Массив;
Для Каждого СтрокаТоваров Из ТоварыИзХранилища Цикл
Если СтрокаТоваров.КодСтроки<>0 И ЗначениеЗаполнено(СтрокаТоваров.ЗаказПоставщику) Тогда
СтруктураПоискаТоваровЗаказа.КодСтроки = СтрокаТоваров.КодСтроки;
СтруктураПоискаТоваровЗаказа.ЗаказПоставщику = СтрокаТоваров.ЗаказПоставщику;
СтруктураПоискаТоваровЗаказа.Серия = СтрокаТоваров.Серия;
МассивСтрокТЧТовары = Объект.Товары.НайтиСтроки(СтруктураПоискаТоваровЗаказа);
СтруктураДействий = СтруктураДействийБезПересчетаСумм;
ТоварЗаказа = Истина;
Иначе
СтруктураПоискаТоваровНакладной.НомерСтроки = СтрокаТоваров.НомерСтроки;
МассивСтрокТЧТовары = Объект.Товары.НайтиСтроки(СтруктураПоискаТоваровНакладной);
СтруктураДействий = СтруктураДействийСПересчетомСумм;
ТоварЗаказа = Ложь;
КонецЕсли;
Если МассивСтрокТЧТовары.Количество() = 0 Тогда
СтрокаТЧТовары = Объект.Товары.Добавить();
ИначеЕсли МассивСтрокТЧТовары.Количество() = 1 Тогда
СтрокаТЧТовары = МассивСтрокТЧТовары[0];
ИначеЕсли МассивСтрокТЧТовары.Количество() > 1 Тогда
Для Каждого СтрокаКУдалению Из МассивСтрокТЧТовары Цикл
Объект.Товары.Удалить(СтрокаКУдалению);
КонецЦикла;
СтрокаТЧТовары = Объект.Товары.Добавить();
КонецЕсли;
ЗаполнитьЗначенияСвойств(СтрокаТЧТовары, СтрокаТоваров);
Если ТоварЗаказа Тогда
ТоварыЗаказа.Добавить(СтрокаТЧТовары);
Иначе
ТоварыНакладной.Добавить(СтрокаТЧТовары);
КонецЕсли;
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ТоварыЗаказа,
СтруктураДействийБезПересчетаСумм,
Объект.Товары);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ТоварыНакладной,
СтруктураДействийСПересчетомСумм,
Объект.Товары);
ОбрабатываемыеСтроки = Новый Массив;
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(ОбрабатываемыеСтроки, ТоварыЗаказа);
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(ОбрабатываемыеСтроки, ТоварыНакладной);
Для Каждого СтрокаТЧТовары Из ОбрабатываемыеСтроки Цикл
ДоходыИРасходыКлиентСервер.ПриДобавленииСтрокиВТаблицу(ЭтотОбъект, СтрокаТЧТовары, "Объект.Товары");
Если НЕ ИспользоватьПоступлениеПоНесколькимЗаказам
И ЗначениеЗаполнено(СтрокаТЧТовары.ЗаказПоставщику)
И Объект.ЗаказПоставщику <> СтрокаТЧТовары.ЗаказПоставщику Тогда
Объект.ЗаказПоставщику = СтрокаТЧТовары.ЗаказПоставщику;
КонецЕсли;
КонецЦикла;
СтруктураНаименованийТабличныхЧастей = Новый Структура("Товары");
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре(СтруктураНаименованийТабличныхЧастей);
ЗаполнитьСлужебныеРеквизитыПоНазначениюВТЧ();
ОперацииФактуровка = Новый Массив;
ОперацииФактуровка.Добавить(ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭСФактуровкаПоставки"));
ОперацииФактуровка.Добавить(ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ЗакупкаУПоставщикаФактуровкаПоставки"));
НеотфактурованныеПоставкиУслугРабот = ОперацииФактуровка.Найти(Объект.ХозяйственнаяОперация) <> Неопределено
И ВариантОформленияДоговораЗакупок = ПредопределенноеЗначение("Перечисление.ВариантыОформленияЗакупок.НеотфактурованныеПоставкиТоваровИУслуг");
Если НЕ НеотфактурованныеПоставкиУслугРабот Тогда
ЗаполнитьПризнакСписанияНаРасходыДляУслуг();
КонецЕсли;
ЗаполнитьСтатусыУказанияСерийСервер();
ЗакупкиСервер.ЗаполнитьСлужебныеРеквизитыНомераГТД(Объект.Товары);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетов");
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекЗаполненияСлужебныхРеквизитовТабличнойЧасти(СтруктураДействий);
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекПересчетаРеквизитовТабличнойЧасти(
Объект,
СтруктураДействий,
"Склад",
Истина);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий, Неопределено);
МногооборотнаяТараСервер.ОбновитьПризнакБезВозвратнойТары(Объект.Товары, Объект.ВернутьМногооборотнуюТару);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
РассчитатьИтоговыеПоказателиПоступления(ЭтаФорма);
ПриИзмененииСкладаВТабличнойЧастиСервер();
ОбновитьИнформациюПоЗаказам();
Объект.ПоступлениеПоЗаказам = ЗначениеЗаполнено(Объект.ЗаказПоставщику) ИЛИ СписокЗаказов.Количество() > 0;
ЗаполнитьЦеныНоменклатурыЗаказов();
ОбновитьОтклоненияОтЗаказа();
ВзаиморасчетыСервер.ПриИзмененииПараметровМеханизма(ЭтотОбъект);
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтотОбъект, "ПоступлениеПоЗаказам");
УстановитьВидимостьКомандПоЗаказу();
ДокументОснование = ЗакупкиСервер.ДокументОснование(Объект, "ПоступлениеПоЗаказам, ЗаказПоставщику, Товары.ЗаказПоставщику");
ОтветственныеЛицаСервер.УстановитьМенеджера(Объект, ДокументОснование);
КонецПроцедуры
&НаСервере
Процедура ПолучитьЗагруженныеТоварыИзХранилища(АдресТоваровВХранилище, ИмяТЧ)
ТоварыИзХранилища = ПолучитьИзВременногоХранилища(АдресТоваровВХранилище);
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПроверитьЗаполнитьСклад", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(Объект, СкладГруппа));
СтруктураДействий.Вставить("ЗаполнитьНоменклатуруПартнераПоНоменклатуре", Объект.Партнер);
Если ИмяТЧ = "Товары" Тогда
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтотОбъект, СтруктураДействий);
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекЗаполненияСлужебныхРеквизитовТабличнойЧасти(
СтруктураДействий);
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекПересчетаРеквизитовТабличнойЧасти(
Объект,
СтруктураДействий,
"Склад",
Истина);
КонецЕсли;
ОбъектТЧ = Объект[ИмяТЧ];
ОбрабатываемыеСтроки = Новый Массив;
Для Каждого СтрокаТоваров Из ТоварыИзХранилища Цикл
СтрокаТЧТовары = ОбъектТЧ.Добавить();
Если ИмяТЧ = "Товары" Тогда
ЗаполнитьЗначенияСвойств(СтрокаТЧТовары, СтрокаТоваров, , "КодСтроки");
Если Объект.ПоступлениеПоЗаказам Тогда
СтрокаТЧТовары.РасхождениеЗаказ = 1;
КонецЕсли;
ОбрабатываемыеСтроки.Добавить(СтрокаТЧТовары);
Иначе
ЗаполнитьЗначенияСвойств(СтрокаТЧТовары, СтрокаТоваров);
КонецЕсли;
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
ОбъектТЧ,
КэшированныеЗначения);
Для Каждого СтрокаТЧТовары Из ОбрабатываемыеСтроки Цикл
ДоходыИРасходыКлиентСервер.ПриДобавленииСтрокиВТаблицу(ЭтотОбъект, СтрокаТЧТовары, "Объект.Товары");
КонецЦикла;
Если ИмяТЧ = "Товары" Тогда
МногооборотнаяТараСервер.ОбновитьПризнакБезВозвратнойТары(Объект.Товары, Объект.ВернутьМногооборотнуюТару);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
ОперацииФактуровка = Новый Массив;
ОперацииФактуровка.Добавить(ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭСФактуровкаПоставки"));
ОперацииФактуровка.Добавить(ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ЗакупкаУПоставщикаФактуровкаПоставки"));
НеотфактурованныеПоставкиУслугРабот = ОперацииФактуровка.Найти(Объект.ХозяйственнаяОперация) <> Неопределено
И ВариантОформленияДоговораЗакупок = ПредопределенноеЗначение("Перечисление.ВариантыОформленияЗакупок.НеотфактурованныеПоставкиТоваровИУслуг");
Если НЕ НеотфактурованныеПоставкиУслугРабот Тогда
ЗаполнитьПризнакСписанияНаРасходыДляУслуг();
КонецЕсли;
ЗаполнитьСтатусыУказанияСерийСервер();
ЗакупкиСервер.ЗаполнитьСлужебныеРеквизитыНомераГТД(Объект.Товары);
ЗаполнитьЦеныНоменклатурыЗаказов();
ПриИзмененииСкладаВТабличнойЧастиСервер();
ОбновитьИнформациюПоЗаказам();
ОбновитьОбязательностьСкладаВТЧ();
ЗаполнитьСлужебныеРеквизитыПоНазначениюВТЧ();
КонецЕсли;
РассчитатьИтоговыеПоказателиПоступления(ЭтаФорма);
КонецПроцедуры
&НаСервере
Процедура ИзмененаОплатаСервер(ИмяСобытия, Параметр, Источник)
ВзаиморасчетыСервер.ОбработкаОповещения(ЭтаФорма, ИмяСобытия, Параметр);
КонецПроцедуры
&НаСервере
Функция ЗаполнитьСкладВВыделенныхСтрокахНаСервере(Знач МассивВыделенныхСтрок, Склад)
ЗаполненоСтрок = СкладыСервер.ЗаполнитьСкладыВВыделенныхСтроках(Объект.Товары, МассивВыделенныхСтрок, Склад, Истина);
Если ЗаполненоСтрок > 0 Тогда
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
ПриИзмененииСкладаВТабличнойЧастиСервер();
КонецЕсли;
Возврат ЗаполненоСтрок;
КонецФункции
&НаСервере
Функция ПривязатьСтрокиПоступленияКЗаказамПоставщикам(ОтобратьПоЗаказу)
Если Не ИспользоватьЗаказыПоставщикам Или
(Не ИспользоватьПоступлениеПоНесколькимЗаказам
И Не ЗначениеЗаполнено(Объект.ЗаказПоставщику)) Тогда
Возврат Ложь;
КонецЕсли;
Запрос = Новый Запрос("
|ВЫБРАТЬ
| Товары.Номенклатура КАК Номенклатура,
| Товары.Характеристика КАК Характеристика
|ПОМЕСТИТЬ Товары
|ИЗ
| &Товары КАК Товары
|ГДЕ
| Товары.КодСтроки = 0
| И Товары.ЗаказПоставщику = ЗНАЧЕНИЕ(Документ.ЗаказПоставщику.ПустаяСсылка)
|;
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ТаблицаЗаказы.ЗаказПоставщику.Сделка КАК Сделка,
| ТаблицаЗаказы.ЗаказПоставщику КАК ЗаказПоставщику,
| ТаблицаЗаказы.ПорядокРасчетов КАК ПорядокРасчетов,
| ТаблицаЗаказы.Номенклатура КАК Номенклатура,
| ТаблицаЗаказы.Характеристика КАК Характеристика,
| ТаблицаЗаказы.КодСтроки КАК КодСтроки,
| ТаблицаЗаказы.Склад КАК Склад,
| ТаблицаЗаказы.Назначение КАК Назначение,
| ТаблицаЗаказы.СписатьНаРасходы КАК СписатьНаРасходы,
| СУММА(ТаблицаЗаказы.КОформлению) КАК КОформлениюОстаток
|ПОМЕСТИТЬ ЗаказыПоставщикам
|ИЗ
| (ВЫБРАТЬ
| ЗаказыОстатки.ЗаказПоставщику КАК ЗаказПоставщику,
| ЗаказыОстатки.ЗаказПоставщику.ПорядокРасчетов КАК ПорядокРасчетов,
| ЗаказыОстатки.Номенклатура КАК Номенклатура,
| ЗаказыОстатки.Характеристика КАК Характеристика,
| ЗаказыОстатки.КодСтроки КАК КодСтроки,
| ЗаказыОстатки.Склад КАК Склад,
| ЕСТЬNULL(ТоварыЗаказа.Назначение, ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)) КАК Назначение,
| ЕСТЬNULL(ТоварыЗаказа.СписатьНаРасходы, ЛОЖЬ) КАК СписатьНаРасходы,
| ЗаказыОстатки.КОформлениюОстаток КАК КОформлению
| ИЗ
| РегистрНакопления.ЗаказыПоставщикам.Остатки(,
| ВЫБОР КОГДА &ОтобратьПоЗаказу ТОГДА
| ЗаказПоставщику = &ЗаказПоставщику
| ИНАЧЕ
| ЗаказПоставщику.Партнер = &Партнер
| И ЗаказПоставщику.Контрагент = &Контрагент
| И ЗаказПоставщику.Договор = &Договор
| И ЗаказПоставщику.Организация = &Организация
| И ЗаказПоставщику.ВариантПриемкиТоваров = &ВариантПриемкиТоваров
| И ЗаказПоставщику.ХозяйственнаяОперация = &ХозяйственнаяОперация
| И ЗаказПоставщику.Соглашение = &Соглашение
| И (ЗаказПоставщику.Валюта = &ВалютаВзаиморасчетов ИЛИ
| &ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПриемНаКомиссию))
| И ЗаказПоставщику.НалогообложениеНДС = &НалогообложениеНДС
| И ЗаказПоставщику.ЦенаВключаетНДС = &ЦенаВключаетНДС
| И ЗаказПоставщику.ВернутьМногооборотнуюТару = &ВернутьМногооборотнуюТару
| И ЗаказПоставщику.ТребуетсяЗалогЗаТару = &ТребуетсяЗалогЗаТару
| КОНЕЦ
| И
| ВЫБОР
| КОГДА
| ВЫРАЗИТЬ(&Склад КАК Справочник.Склады).ЭтоГруппа
| ТОГДА
| Склад В ИЕРАРХИИ (&Склад) ИЛИ Склад = ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
| ИНАЧЕ
| Склад В (ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка), &Склад)
| КОНЕЦ
| И (Номенклатура, Характеристика) В
| (ВЫБРАТЬ
| Товары.Номенклатура КАК Номенклатура,
| Товары.Характеристика КАК Характеристика
| ИЗ
| Товары КАК Товары)
| И ЗаказПоставщику.ОперацияССамозанятым = &ОперацияССамозанятым
| ) КАК ЗаказыОстатки
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПоставщику.Товары КАК ТоварыЗаказа
| ПО ТоварыЗаказа.Ссылка = ЗаказыОстатки.ЗаказПоставщику
| И ТоварыЗаказа.КодСтроки = ЗаказыОстатки.КодСтроки
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ЗаказыДвижения.ЗаказПоставщику,
| ЗаказыДвижения.ЗаказПоставщику.ПорядокРасчетов,
| ЗаказыДвижения.Номенклатура,
| ЗаказыДвижения.Характеристика,
| ЗаказыДвижения.КодСтроки,
| ЗаказыДвижения.Склад,
| ЕСТЬNULL(ТоварыЗаказа.Назначение, ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)) КАК Назначение,
| ЕСТЬNULL(ТоварыЗаказа.СписатьНаРасходы, ЛОЖЬ) КАК СписатьНаРасходы,
| ВЫБОР КОГДА ЗаказыДвижения.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) ТОГДА
| -ЗаказыДвижения.КОформлению
| ИНАЧЕ
| ЗаказыДвижения.КОформлению
| КОНЕЦ
| ИЗ
| РегистрНакопления.ЗаказыПоставщикам КАК ЗаказыДвижения
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПоставщику.Товары КАК ТоварыЗаказа
| ПО ТоварыЗаказа.Ссылка = ЗаказыДвижения.ЗаказПоставщику
| И ТоварыЗаказа.КодСтроки = ЗаказыДвижения.КодСтроки
|
| ГДЕ
| ЗаказыДвижения.Регистратор = &Регистратор
| И ВЫБОР КОГДА &ОтобратьПоЗаказу ТОГДА
| ЗаказыДвижения.ЗаказПоставщику = &ЗаказПоставщику
| ИНАЧЕ
| ЗаказыДвижения.ЗаказПоставщику.Партнер = &Партнер
| И ЗаказыДвижения.ЗаказПоставщику.Контрагент = &Контрагент
| И ЗаказыДвижения.ЗаказПоставщику.Договор = &Договор
| И ЗаказыДвижения.ЗаказПоставщику.Организация = &Организация
| И ЗаказыДвижения.ЗаказПоставщику.ВариантПриемкиТоваров = &ВариантПриемкиТоваров
| И ЗаказыДвижения.ЗаказПоставщику.ХозяйственнаяОперация = &ХозяйственнаяОперация
| И ЗаказыДвижения.ЗаказПоставщику.Соглашение = &Соглашение
| И (ЗаказыДвижения.ЗаказПоставщику.Валюта = &ВалютаВзаиморасчетов ИЛИ
| &ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПриемНаКомиссию))
| И ЗаказыДвижения.ЗаказПоставщику.НалогообложениеНДС = &НалогообложениеНДС
| И ЗаказыДвижения.ЗаказПоставщику.ЦенаВключаетНДС = &ЦенаВключаетНДС
| И ЗаказыДвижения.ЗаказПоставщику.ВернутьМногооборотнуюТару = &ВернутьМногооборотнуюТару
| И ЗаказыДвижения.ЗаказПоставщику.ТребуетсяЗалогЗаТару = &ТребуетсяЗалогЗаТару
| КОНЕЦ
| И ЗаказыДвижения.Активность
| И ВЫБОР
| КОГДА
| ВЫРАЗИТЬ(&Склад КАК Справочник.Склады).ЭтоГруппа
| ТОГДА
| ЗаказыДвижения.Склад В ИЕРАРХИИ (&Склад) ИЛИ ЗаказыДвижения.Склад = ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
| ИНАЧЕ
| ЗаказыДвижения.Склад В (ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка), &Склад)
| КОНЕЦ
| И (ЗаказыДвижения.Номенклатура, ЗаказыДвижения.Характеристика) В
| (ВЫБРАТЬ
| Товары.Номенклатура КАК Номенклатура,
| Товары.Характеристика КАК Характеристика
| ИЗ
| Товары КАК Товары)
| И ЗаказПоставщику.ОперацияССамозанятым = &ОперацияССамозанятым
| ) КАК ТаблицаЗаказы
|
| СГРУППИРОВАТЬ ПО
| ТаблицаЗаказы.ЗаказПоставщику,
| ТаблицаЗаказы.ПорядокРасчетов,
| ТаблицаЗаказы.Номенклатура,
| ТаблицаЗаказы.Характеристика,
| ТаблицаЗаказы.КодСтроки,
| ТаблицаЗаказы.Склад,
| ТаблицаЗаказы.Назначение,
| ТаблицаЗаказы.СписатьНаРасходы
|
| ИМЕЮЩИЕ
| СУММА(ТаблицаЗаказы.КОформлению) > 0
|;
|ВЫБРАТЬ
| КОЛИЧЕСТВО(*) КАК КоличествоДублей,
| ЗаказыПоставщикам.Номенклатура КАК Номенклатура,
| ЗаказыПоставщикам.Характеристика КАК Характеристика,
| ЗаказыПоставщикам.Склад КАК Склад
|ПОМЕСТИТЬ ДублиТоваров
|ИЗ
| ЗаказыПоставщикам КАК ЗаказыПоставщикам
|СГРУППИРОВАТЬ ПО
| Номенклатура,
| Характеристика,
| Склад
|;
|ВЫБРАТЬ
| ЗаказыПоставщикам.Сделка КАК Сделка,
| ЗаказыПоставщикам.ЗаказПоставщику КАК ЗаказПоставщику,
| ЗаказыПоставщикам.ПорядокРасчетов КАК ПорядокРасчетов,
| ЗаказыПоставщикам.Номенклатура КАК Номенклатура,
| ЗаказыПоставщикам.Характеристика КАК Характеристика,
| ЗаказыПоставщикам.КодСтроки КАК КодСтроки,
| ЗаказыПоставщикам.Склад КАК Склад,
| ЗаказыПоставщикам.Назначение КАК Назначение,
| ЗаказыПоставщикам.СписатьНаРасходы КАК СписатьНаРасходы,
| ЗаказыПоставщикам.КОформлениюОстаток КАК КОформлениюОстаток,
| 0 КАК Распределено,
| ДублиТоваров.КоличествоДублей КАК КоличествоДублей
|ИЗ
| ЗаказыПоставщикам КАК ЗаказыПоставщикам
|ЛЕВОЕ СОЕДИНЕНИЕ
| ДублиТоваров
|ПО
| ЗаказыПоставщикам.Номенклатура = ДублиТоваров.Номенклатура
| И ЗаказыПоставщикам.Характеристика = ДублиТоваров.Характеристика
| И ЗаказыПоставщикам.Склад = ДублиТоваров.Склад
|ЛЕВОЕ СОЕДИНЕНИЕ
| Документ.ЗаказПоставщику.Товары КАК ЗаказПоставщикуТовары
|ПО
| ЗаказПоставщикуТовары.Ссылка = ЗаказыПоставщикам.ЗаказПоставщику
| И ЗаказПоставщикуТовары.КодСтроки = ЗаказыПоставщикам.КодСтроки
|УПОРЯДОЧИТЬ ПО
| ЗаказПоставщикуТовары.Номенклатура,
| ЗаказПоставщикуТовары.Характеристика,
| ЗаказПоставщикуТовары.Склад,
| ЗаказПоставщикуТовары.ДатаПоступления,
| ЗаказПоставщикуТовары.Ссылка,
| ЗаказПоставщикуТовары.НомерСтроки
|");
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьКоличествоУпаковок");
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Ложь));
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетов");
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекПересчетаРеквизитовТабличнойЧасти(
Объект,
СтруктураДействий,
"Склад",
Истина);
Запрос.УстановитьПараметр("ЗаказПоставщику", Объект.ЗаказПоставщику);
Запрос.УстановитьПараметр("Партнер", Объект.Партнер);
Запрос.УстановитьПараметр("Контрагент", Объект.Контрагент);
Запрос.УстановитьПараметр("Договор", Объект.Договор);
Запрос.УстановитьПараметр("Организация", Объект.Организация);
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщикаРеглУчет Или
Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ЗакупкаЧерезПодотчетноеЛицо Тогда
Запрос.УстановитьПараметр("ХозяйственнаяОперация", Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщика);
Иначе
Запрос.УстановитьПараметр("ХозяйственнаяОперация", ХозяйственнаяОперацияДоговора);
КонецЕсли;
Запрос.УстановитьПараметр("Соглашение", Объект.Соглашение);
Запрос.УстановитьПараметр("ВалютаВзаиморасчетов", Объект.ВалютаВзаиморасчетов);
Запрос.УстановитьПараметр("ВариантПриемкиТоваров", Объект.ВариантПриемкиТоваров);
Запрос.УстановитьПараметр("НалогообложениеНДС", Объект.НалогообложениеНДС);
Запрос.УстановитьПараметр("ЦенаВключаетНДС", Объект.ЦенаВключаетНДС);
Запрос.УстановитьПараметр("ВернутьМногооборотнуюТару", Объект.ВернутьМногооборотнуюТару);
Запрос.УстановитьПараметр("ТребуетсяЗалогЗаТару", Объект.ТребуетсяЗалогЗаТару);
Запрос.УстановитьПараметр("Склад", Объект.Склад);
Запрос.УстановитьПараметр("Регистратор", Объект.Ссылка);
Запрос.УстановитьПараметр("ОтобратьПоЗаказу", ОтобратьПоЗаказу);
Запрос.УстановитьПараметр("Товары", Объект.Товары.Выгрузить(,"КодСтроки,Номенклатура,Характеристика,ЗаказПоставщику"));
Запрос.УстановитьПараметр("ОперацияССамозанятым", Объект.ОперацияССамозанятым);
РезультатЗапроса = Запрос.ВыполнитьПакет();
Если РезультатЗапроса[1].Пустой() Тогда
Возврат Ложь;
КонецЕсли;
Выборка = РезультатЗапроса[3].Выбрать();
МассивПорядковРасчетов = Новый Массив();
Пока Выборка.Следующий() Цикл
Если ЗначениеЗаполнено(Выборка.ПорядокРасчетов)
И МассивПорядковРасчетов.Найти(Выборка.ПорядокРасчетов) = Неопределено Тогда
МассивПорядковРасчетов.Добавить(Выборка.ПорядокРасчетов);
КонецЕсли;
КонецЦикла;
Если МассивПорядковРасчетов.Количество() > 1 Тогда
ОбщегоНазначения.СообщитьПользователю(НСтр("ru='У найденных заказов отличается поле ""Порядок расчетов""'"));
Возврат Ложь;
КонецЕсли;
Выборка.Сбросить();
ТаблицаНераспределенныхТоваров = Новый ТаблицаЗначений();
ТаблицаНераспределенныхТоваров.Колонки.Добавить("Номенклатура");
ТаблицаНераспределенныхТоваров.Колонки.Добавить("Характеристика");
ТаблицаНераспределенныхТоваров.Колонки.Добавить("Склад");
ТаблицаНераспределенныхТоваров.Колонки.Добавить("ЗаказПоставщику");
ТаблицаНераспределенныхТоваров.Колонки.Добавить("КодСтроки");
ТаблицаНераспределенныхТоваров.Колонки.Добавить("Количество");
ТаблицаНераспределенныхТоваров.Колонки.Добавить("Сделка");
ТаблицаНераспределенныхТоваров.Колонки.Добавить("Назначение");
ТаблицаНераспределенныхТоваров.Колонки.Добавить("СписатьНаРасходы");
ОбрабатываемыеСтроки = Новый Массив;
Пока Выборка.Следующий() Цикл
СтруктураПоиска = Новый Структура();
СтруктураПоиска.Вставить("Номенклатура", Выборка.Номенклатура);
СтруктураПоиска.Вставить("Характеристика", Выборка.Характеристика);
СтруктураПоиска.Вставить("Склад", Выборка.Склад);
СтруктураПоиска.Вставить("Назначение", Выборка.Назначение);
СтруктураПоиска.Вставить("СписатьНаРасходы",Выборка.СписатьНаРасходы);
СтруктураПоиска.Вставить("КодСтроки", 0);
СтруктураПоиска.Вставить("ЗаказПоставщику", Документы.ЗаказПоставщику.ПустаяСсылка());
СтрокиТовары = Объект.Товары.НайтиСтроки(СтруктураПоиска);
НераспределенноеКоличество = Выборка.КОформлениюОстаток;
Если Выборка.КоличествоДублей < 2 Тогда
Для Каждого СтрокаТовары Из СтрокиТовары Цикл
Если НераспределенноеКоличество = 0 Тогда
Прервать;
КонецЕсли;
ЗаполнитьЗначенияСвойств(СтрокаТовары, Выборка, "КодСтроки,ЗаказПоставщику,Сделка,Назначение");
КоличествоВСтроке = СтрокаТовары.Количество;
Если КоличествоВСтроке > НераспределенноеКоличество Тогда
СтрокаТовары.Количество = НераспределенноеКоличество;
Если ОбрабатываемыеСтроки.Найти(СтрокаТовары) = Неопределено Тогда
ОбрабатываемыеСтроки.Добавить(СтрокаТовары);
КонецЕсли;
КонецЕсли;
НераспределенноеКоличество = НераспределенноеКоличество - КоличествоВСтроке;
Если НераспределенноеКоличество < 0 Тогда
НоваяСтрокаТовары = Объект.Товары.Вставить(Объект.Товары.Индекс(СтрокаТовары) + 1);
ЗаполнитьЗначенияСвойств(НоваяСтрокаТовары, СтрокаТовары, , "КодСтроки,ЗаказПоставщику");
НоваяСтрокаТовары.Количество = -НераспределенноеКоличество;
ОбрабатываемыеСтроки.Добавить(НоваяСтрокаТовары);
НераспределенноеКоличество = 0;
КонецЕсли;
КонецЦикла;
Иначе
Для Каждого СтрокаТовары Из СтрокиТовары Цикл
Если СтрокаТовары.Количество = Выборка.КОформлениюОстаток Тогда
ЗаполнитьЗначенияСвойств(СтрокаТовары, Выборка, "КодСтроки,ЗаказПоставщику,Сделка,Назначение");
НераспределенноеКоличество = 0;
Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Если НераспределенноеКоличество > 0 Тогда
НоваяСтрока = ТаблицаНераспределенныхТоваров.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, Выборка);
НоваяСтрока.Количество = НераспределенноеКоличество;
КонецЕсли;
КонецЦикла;
Если ТаблицаНераспределенныхТоваров.Количество() > 0 Тогда
Для Каждого НераспределеннаяСтрока Из ТаблицаНераспределенныхТоваров Цикл
СтруктураПоиска = Новый Структура();
СтруктураПоиска.Вставить("Номенклатура", НераспределеннаяСтрока.Номенклатура);
СтруктураПоиска.Вставить("Характеристика", НераспределеннаяСтрока.Характеристика);
СтруктураПоиска.Вставить("Склад", НераспределеннаяСтрока.Склад);
СтруктураПоиска.Вставить("Назначение", НераспределеннаяСтрока.Назначение);
СтруктураПоиска.Вставить("СписатьНаРасходы",НераспределеннаяСтрока.СписатьНаРасходы);
СтруктураПоиска.Вставить("КодСтроки", 0);
СтруктураПоиска.Вставить("ЗаказПоставщику", Документы.ЗаказПоставщику.ПустаяСсылка());
СтрокиТовары = Объект.Товары.НайтиСтроки(СтруктураПоиска);
Для Каждого СтрокаТовары Из СтрокиТовары Цикл
Если НераспределеннаяСтрока.Количество = 0 Тогда
Прервать;
КонецЕсли;
Если СтрокаТовары.Количество = НераспределеннаяСтрока.Количество Тогда
ЗаполнитьЗначенияСвойств(СтрокаТовары, НераспределеннаяСтрока, "КодСтроки,ЗаказПоставщику,Сделка,Назначение");
НераспределеннаяСтрока.Количество = 0;
ИначеЕсли СтрокаТовары.Количество > НераспределеннаяСтрока.Количество Тогда
НоваяСтрокаТовары = Объект.Товары.Вставить(Объект.Товары.Индекс(СтрокаТовары) + 1);
ЗаполнитьЗначенияСвойств(НоваяСтрокаТовары, СтрокаТовары, , "КодСтроки,ЗаказПоставщику");
НоваяСтрокаТовары.Количество = СтрокаТовары.Количество - НераспределеннаяСтрока.Количество;
ОбрабатываемыеСтроки.Добавить(НоваяСтрокаТовары);
ЗаполнитьЗначенияСвойств(СтрокаТовары, НераспределеннаяСтрока, "КодСтроки,ЗаказПоставщику,Сделка,Назначение,Количество");
Если ОбрабатываемыеСтроки.Найти(СтрокаТовары) = Неопределено Тогда
ОбрабатываемыеСтроки.Добавить(СтрокаТовары);
КонецЕсли;
НераспределеннаяСтрока.Количество = 0;
ИначеЕсли СтрокаТовары.Количество < НераспределеннаяСтрока.Количество Тогда
ЗаполнитьЗначенияСвойств(СтрокаТовары, НераспределеннаяСтрока, "КодСтроки,ЗаказПоставщику,Сделка,Назначение");
НераспределеннаяСтрока.Количество = НераспределеннаяСтрока.Количество - СтрокаТовары.Количество;
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецЕсли;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.Товары);
Возврат Истина;
КонецФункции
&НаСервереБезКонтекста
Функция ПолучитьБанковскийСчетКонтрагентаПоУмолчаниюСервер(Контрагент)
Возврат ЗначениеНастроекПовтИсп.ПолучитьБанковскийСчетКонтрагентаПоУмолчанию(Контрагент);
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, Форма)
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Форма.Объект);
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц");
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекПересчетаРеквизитовТабличнойЧасти(
Форма.Объект,
СтруктураДействий,
"Склад",
Истина);
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Ложь));
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетов");
КонецПроцедуры
&НаКлиенте
Процедура ВопросПользователюПриИзмененииРеквизитаСтроки(ОписаниеОповещения, ТекущаяСтрока)
Если ТекущаяСтрока.КодСтроки = 0 Тогда
ВыполнитьОбработкуОповещения(ОписаниеОповещения, Истина);
Возврат;
КонецЕсли;
Если ТекущаяСтрока.Номенклатура = ПредыдущиеРеквизитыСтроки.Номенклатура
И ТекущаяСтрока.Характеристика = ПредыдущиеРеквизитыСтроки.Характеристика
И ТекущаяСтрока.Назначение = ПредыдущиеРеквизитыСтроки.Назначение
И ТекущаяСтрока.Склад = ПредыдущиеРеквизитыСтроки.Склад
И ТекущаяСтрока.СписатьНаРасходы = ПредыдущиеРеквизитыСтроки.СписатьНаРасходы Тогда
ВыполнитьОбработкуОповещения(ОписаниеОповещения, Истина);
Возврат;
КонецЕсли;
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ТекущаяСтрока", ТекущаяСтрока);
ДополнительныеПараметры.Вставить("ОписаниеОповещения", ОписаниеОповещения);
ТекстВопроса = НСтр("ru='Редактируемая строка перестанет быть связанной со строкой заказа. Продолжить?'");
ПоказатьВопрос(
Новый ОписаниеОповещения("ВопросПользователюПриИзмененииРеквизитаСтрокиВопросЗавершение", ЭтотОбъект, ДополнительныеПараметры),
ТекстВопроса,
РежимДиалогаВопрос.ДаНет);
КонецПроцедуры
&НаКлиенте
Процедура ВопросПользователюПриИзмененииРеквизитаСтрокиВопросЗавершение(Ответ, ДополнительныеПараметры) Экспорт
Если Ответ = КодВозвратаДиалога.Да Тогда
ДополнительныеПараметры.ТекущаяСтрока.КодСтроки = 0;
ДополнительныеПараметры.ТекущаяСтрока.ЦенаЗаказа = 0;
ОбновитьОтклоненияОтЗаказаВСтроке(ДополнительныеПараметры.ТекущаяСтрока, Объект.ПоступлениеПоЗаказам, Объект.ТребуетсяЗалогЗаТару);
ВыполнитьОбработкуОповещения(ДополнительныеПараметры.ОписаниеОповещения, Истина);
Иначе
ЗаполнитьЗначенияСвойств(ДополнительныеПараметры.ТекущаяСтрока, ПредыдущиеРеквизитыСтроки);
ВыполнитьОбработкуОповещения(ДополнительныеПараметры.ОписаниеОповещения, Ложь);
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ПоместитьТабличнуюЧастьТоварыВоВременноеХранилищеДляПроверкиКоличества(ВыгруженаТолькоНеМаркируемаяПродукция = Ложь)
ТабличнаяЧастьТовары = Объект.Товары.Выгрузить();
Если ТабличнаяЧастьТовары.Колонки.Найти("МаркируемаяПродукция") <> Неопределено Тогда
НомерТекущейСтроки = ТабличнаяЧастьТовары.Количество()-1;
Пока НомерТекущейСтроки >= 0 Цикл
Если ТабличнаяЧастьТовары[НомерТекущейСтроки].МаркируемаяПродукция Тогда
ТабличнаяЧастьТовары.Удалить(НомерТекущейСтроки);
ВыгруженаТолькоНеМаркируемаяПродукция = Истина;
КонецЕсли;
НомерТекущейСтроки = НомерТекущейСтроки - 1;
КонецЦикла;
КонецЕсли;
ТабличнаяЧастьТовары.Свернуть("Номенклатура, Характеристика, ХарактеристикиИспользуются, Упаковка, Серия, СтатусУказанияСерий, Склад, ТипНоменклатуры, ЗаказПоставщику", "КоличествоУпаковок");
АдресВоВременномХранилище = ПоместитьВоВременноеХранилище(ТабличнаяЧастьТовары, УникальныйИдентификатор);
Возврат АдресВоВременномХранилище;
КонецФункции
&НаСервере
Процедура ИзменитьТабличнуюЧастьПоРезультатамПроверки(ВозвращаемыеПараметры, КэшированныеЗначения)
ТаблицаТовары = ПолучитьИзВременногоХранилища(ВозвращаемыеПараметры.Товары);
СтруктураДействийНайденнаяСтрока = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействийНайденнаяСтрока, ЭтотОбъект);
СтруктураДействийНоваяСтрока = Новый Структура;
Если ИспользоватьСоглашенияСПоставщиками И ЗначениеЗаполнено(Объект.Соглашение) Тогда
СтруктураДействийНоваяСтрока.Вставить("ЗаполнитьУсловияЗакупок",
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияЦеныЗакупкиВСтрокеТЧ(Объект));
Иначе
СтруктураДействийНоваяСтрока.Вставить("ЗаполнитьЦенуЗакупки",
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияЦеныЗакупкиВСтрокеТЧ(Объект));
КонецЕсли;
ПараметрыЗаполненияСтавкиНДС = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект);
ПараметрыЗаполненияСтавкиНДС.УказаннаяСтавкаНДС = УказаннаяСтавкаНДС;
СтруктураДействийНоваяСтрока.Вставить("ЗаполнитьСтавкуНДС", ПараметрыЗаполненияСтавкиНДС);
СтруктураДействийНоваяСтрока.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействийНоваяСтрока.Вставить("ПроверитьЗаполнитьСклад",
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(Объект, СкладГруппа));
СтруктураДействийНоваяСтрока.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются",
Новый Структура("Номенклатура", "ХарактеристикиИспользуются"));
СтруктураДействийНоваяСтрока.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействийНоваяСтрока.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействийНоваяСтрока.Вставить("ЗаполнитьПризнакВедетсяУчетПоГТД", Новый Структура("Номенклатура", "ВедетсяУчетПоГТД"));
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекЗаполненияСлужебныхРеквизитовТабличнойЧасти(
СтруктураДействийНоваяСтрока);
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействийНоваяСтрока, ЭтотОбъект);
СтруктураДействийНоваяСтрока.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействийНоваяСтрока.Вставить("ЗаполнитьСлужебныеРеквизитыПоНазначению");
ПакетнаяОбработкаТабличнойЧастиКлиентСерверЛокализация.ДополнитьСтруктуруДействийПриИзмененииЭлемента(
ЭтотОбъект, "Номенклатура", СтруктураДействийНоваяСтрока);
УдаляемыеСтроки = Новый Массив;
ОбрабатываемыеСтроки = Новый Массив;
ДобавленныеСтроки = Новый Массив;
Для Каждого СтрокаИсточник Из ТаблицаТовары Цикл
Отбор = Новый Структура("Номенклатура, Характеристика, Серия, СтатусУказанияСерий, Упаковка, Склад, ЗаказПоставщику");
ЗаполнитьЗначенияСвойств(Отбор, СтрокаИсточник);
НайденныеСтроки = Объект.Товары.НайтиСтроки(Отбор);
Для Каждого СтрокаТЧ Из НайденныеСтроки Цикл
Если СтрокаИсточник.КоличествоУпаковок = 0 Тогда
Прервать;
КонецЕсли;
Если СтрокаТЧ.КоличествоУпаковок = 0
И СтрокаИсточник.КоличествоУпаковок < 0 Тогда
Продолжить;
КонецЕсли;
Если СтрокаИсточник.КоличествоУпаковок >= 0 Тогда
СтрокаТЧ.КоличествоУпаковок = СтрокаТЧ.КоличествоУпаковок + СтрокаИсточник.КоличествоУпаковок;
Если Объект.ПоступлениеПоЗаказам Тогда
СтрокаТЧ.РасхождениеЗаказ = 1;
КонецЕсли;
СтрокаИсточник.КоличествоУпаковок = 0;
Иначе
КоличествоКСписанию = -СтрокаИсточник.КоличествоУпаковок;
КоличествоВСтроке = СтрокаТЧ.КоличествоУпаковок;
Если КоличествоКСписанию > КоличествоВСтроке Тогда
СтрокаИсточник.КоличествоУпаковок = КоличествоВСтроке - КоличествоКСписанию;
СтрокаТЧ.КоличествоУпаковок = 0;
Иначе
СтрокаИсточник.КоличествоУпаковок = 0;
СтрокаТЧ.КоличествоУпаковок = КоличествоВСтроке - КоличествоКСписанию;
КонецЕсли;
КонецЕсли;
Если СтрокаТЧ.КоличествоУпаковок > 0 Тогда
ОбрабатываемыеСтроки.Добавить(СтрокаТЧ);
КонецЕсли;
КонецЦикла;
Если НайденныеСтроки.Количество() = 0 Тогда
СтрокаТЧ = Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаТЧ, СтрокаИсточник);
Если Объект.ПоступлениеПоЗаказам Тогда
СтрокаТЧ.РасхождениеЗаказ = 1;
КонецЕсли;
ДобавленныеСтроки.Добавить(СтрокаТЧ);
КонецЕсли;
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействийНайденнаяСтрока,
Объект.Товары,
КэшированныеЗначения);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ДобавленныеСтроки,
СтруктураДействийНоваяСтрока,
Объект.Товары,
КэшированныеЗначения);
УсловиеОтбора = Новый Структура("КоличествоУпаковок", 0);
НайденныеСтроки = Объект.Товары.НайтиСтроки(УсловиеОтбора);
Для Каждого СтрокаТЧ Из НайденныеСтроки Цикл
УдаляемыеСтроки.Добавить(СтрокаТЧ);
КонецЦикла;
Для Каждого СтрокаТЧ Из УдаляемыеСтроки Цикл
Объект.Товары.Удалить(СтрокаТЧ);
КонецЦикла;
ЗаполнитьПризнакСписанияНаРасходыДляУслуг();
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
ЗакупкиСервер.ЗаполнитьСлужебныеРеквизитыНомераГТД(Объект.Товары);
КонецПроцедуры
&НаКлиенте
Процедура НадписьЗаголовокЗаказыПоставщикамНажатие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОткрытьФорму(
"ОбщаяФорма.ПросмотрСпискаДокументов",
Новый Структура("СписокДокументов, Заголовок",
СписокЗаказов,
НСтр("ru='Заказы поставщикам (%КоличествоДокументов%)'")
),
ЭтаФорма,,,, Неопределено, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииСкладаВТабличнойЧастиСервер()
СкладыСервер.ПриИзмененииСкладаВТабличнойЧасти(Объект.Товары, ТаблицаСкладов, СкладГруппа, Ложь);
ВсегоСкладов = ТаблицаСкладов.Количество();
СкладыКлиентСервер.ОбновитьКартинкуГруппыСкладов(НадписьНесколькоСкладов, Элементы.КартинкаНесколькоСкладов, ВсегоСкладов);
ОбновитьЗависимыеРеквизитыФормыСерверПоЗаказу();
КонецПроцедуры
&НаСервере
Процедура ПересчитатьКоличествоРНПТ()
ХозОперацииЗакупкаПоИмпорту = ЗакупкиВызовСервера.ХозяйственныеОперацииПоОсновной(
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ЗакупкаПоИмпорту"));
Если ЗначениеЗаполнено(Объект.Склад)
И ЗначениеЗаполнено(Объект.Организация)
И ХозОперацииЗакупкаПоИмпорту.Найти(Объект.ХозяйственнаяОперация) = Неопределено Тогда
ПараметрыПолученияКоэффициентаРНПТ = УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ПараметрыПолученияКоэффициентаРНПТ(
Объект,
"Склад",
Истина);
УчетПрослеживаемыхТоваровЛокализация.ЗаполнитьКоличествоПоРНПТВТабличнойЧасти(ПараметрыПолученияКоэффициентаРНПТ,
Объект.Товары);
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ПараметрыФормыУказанияСерий(ТекущиеДанныеИдентификатор)
Возврат НоменклатураСервер.ПараметрыФормыУказанияСерий(Объект, ПараметрыУказанияСерий, ТекущиеДанныеИдентификатор, ЭтаФорма);
КонецФункции
&НаСервереБезКонтекста
Процедура ПроверитьНаличиеКорректировокИСчетовФактур(Ссылка, ЕстьКорректировки, ЕстьСчетаФактуры)
ЗакупкиСервер.ПроверитьНаличиеКорректировокИСчетовФактур(Ссылка, Ссылка, ЕстьКорректировки, ЕстьСчетаФактуры);
КонецПроцедуры
&НаСервереБезКонтекста
Функция ЕстьПравоДобавленияКорректировок()
Возврат ПравоДоступа("Добавление", Метаданные.Документы.КорректировкаПриобретения);
КонецФункции
&НаСервере
Функция АдресДанныхДляРасчетаРучныхСкидокВоВременномХранилище(ТолькоВыделенныеСтроки)
СтруктураПараметров = СкидкиНаценкиЗаполнениеСервер.НовыйПараметрыАдресДанныхДляРасчетаРучныхСкидок();
СтруктураПараметров.ИмяТаблицы = "Товары";
СтруктураПараметров.ТолькоДляВыделенныхСтрок = ТолькоВыделенныеСтроки;
Возврат СкидкиНаценкиЗаполнениеСервер.АдресДанныхДляРасчетаРучныхСкидокВоВременномХранилищеЗакупки(
ЭтаФорма,УникальныйИдентификатор, СтруктураПараметров);
КонецФункции
&НаКлиенте
Процедура ОтвязатьОтЗаказа(Команда)
ВыделенныеСтроки = Элементы.Товары.ВыделенныеСтроки;
Если ВыделенныеСтроки.Количество()>0 Тогда
Для каждого ТекСтрока Из ВыделенныеСтроки Цикл
СтрокаТаблицы = Объект.Товары.НайтиПоИдентификатору(ТекСтрока);
СтрокаТаблицы.КодСтроки = 0;
СтрокаТаблицы.РасхождениеЗаказ = 1;
КонецЦикла;
ОбновитьЗависимыеРеквизитыФормыСерверПоЗаказу();
ОповеститьОбОкончанииОтвязкиСтрок(ВыделенныеСтроки.Количество());
Иначе
ТекстПредупреждения = НСтр("ru='Выберите строки, которые необходимо отвязать от заказа.'");
ПоказатьПредупреждение(Неопределено, ТекстПредупреждения);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбновитьЗависимыеРеквизитыФормыСерверПоЗаказу()
Если Объект.Товары.Количество() = 0 ИЛИ Не Объект.ПоступлениеПоЗаказам ИЛИ НЕ ИспользоватьЗаказыПоставщикам Тогда
Элементы.КартинкаРасхождениеЗаказ.Картинка = БиблиотекаКартинок.ПустаяКартинка;
Элементы.КартинкаРасхождениеЗаказы.Картинка = БиблиотекаКартинок.ПустаяКартинка;
НадписьРасхождениеЗаказ = "";
Если Объект.Товары.Количество()>0 Тогда
Для каждого СтрокаТовары Из Объект.Товары Цикл
СтрокаТовары.РасхождениеЗаказ = 0;
КонецЦикла;
КонецЕсли;
КоличествоРасхождений = 0;
Возврат;
КонецЕсли;
ОбновитьЗависимыеРеквизитыФормыПоЗаказу(
Объект.Товары,
НадписьРасхождениеЗаказ,
Элементы.КартинкаРасхождениеЗаказ,
Элементы.КартинкаРасхождениеЗаказы);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ОбновитьЗависимыеРеквизитыФормыПоЗаказу(Товары, НадписьРасхождениеЗаказ, КартинкаРасхождениеЗаказ, КартинкаРасхождениеЗаказы)
КоличествоРасхождений = Товары.Итог("РасхождениеЗаказ");
Если КоличествоРасхождений > 0 Тогда
КартинкаРасхождениеЗаказ.Картинка = БиблиотекаКартинок.ПревышениеЗаказа;
КартинкаРасхождениеЗаказы.Картинка = БиблиотекаКартинок.ПревышениеЗаказа;
НадписьРасхождениеЗаказ = СтрЗаменить(НСтр("ru='Строк сверх заказа: %КоличествоРасхождений%'"), "%КоличествоРасхождений%", КоличествоРасхождений);
Иначе
КартинкаРасхождениеЗаказ.Картинка = БиблиотекаКартинок.ПустаяКартинка;
КартинкаРасхождениеЗаказы.Картинка = БиблиотекаКартинок.ПустаяКартинка;
НадписьРасхождениеЗаказ = "";
КоличествоРасхождений = 0;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОповеститьОбОкончанииОтвязкиСтрок(КоличествоОтработанныхСтрок, СтрокиОтвязаны = Истина)
Если СтрокиОтвязаны Тогда
ТекстОповещения = НСтр("ru='В документе от заказов отвязано строк (%%Количество%%).'");
ТекстОповещения = СтрЗаменить(ТекстОповещения, "%%Количество%%", КоличествоОтработанныхСтрок);
ПоказатьОповещениеПользователя(
НСтр("ru = 'Строки отвязаны'"),
,
ТекстОповещения,
БиблиотекаКартинок.Информация32);
Иначе
ПоказатьОповещениеПользователя(
НСтр("ru = 'Строки не отвязаны'"),
,
НСтр("ru='Ни одна строка не была отвязана.'"),
БиблиотекаКартинок.Информация32);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьДоступностьСоглашений()
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ЗакупкаЧерезПодотчетноеЛицо Тогда
Элементы.Соглашение.Видимость = Ложь;
ИначеЕсли ЗначениеЗаполнено(Объект.Партнер) Тогда
КоличествоСоглашенийСПоставщиком = ЗакупкиВызовСервера.ПолучитьКоличествоСоглашенийСПоставщиком(Объект.Партнер);
Элементы.Соглашение.Видимость = ЗначениеЗаполнено(Объект.Соглашение) ИЛИ КоличествоСоглашенийСПоставщиком > 0;
Иначе
Элементы.Соглашение.Видимость = Ложь;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьСвойстваЭлементовПоПорядкуРасчетов()
НаправленияДеятельностиСервер.УстановитьВидимостьНаправленияДеятельности(ЭтаФорма, Ложь, Объект.ПоступлениеПоЗаказам);
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ОбновитьДоступностьЭлементовВозвратнойТары(Форма)
ХозяйственныеОперацииИмпорта = ХозяйственныеОперацииИмпорта();
ХозяйственныеОперацииВвозИзЕАЭС = ХозяйственныеОперацииВвозИзЕАЭС();
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(
Форма.Элементы,
"ВернутьМногооборотнуюТару",
"Доступность",
Форма.Объект.ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщикаРеглУчет
И ХозяйственныеОперацииИмпорта.Найти(Форма.Объект.ХозяйственнаяОперация) = Неопределено
И ХозяйственныеОперацииВвозИзЕАЭС.Найти(Форма.Объект.ХозяйственнаяОперация) = Неопределено
И Форма.Объект.ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.ПриемНаКомиссию);
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(
Форма.Элементы,
"ДатаВозвратаМногооборотнойТары",
"Доступность",
Форма.Объект.ВернутьМногооборотнуюТару);
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(
Форма.Элементы,
"ТребуетсяЗалогЗаТару",
"Доступность",
Форма.Объект.ВернутьМногооборотнуюТару
И Форма.Объект.ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщикаРеглУчет
И ХозяйственныеОперацииИмпорта.Найти(Форма.Объект.ХозяйственнаяОперация) = Неопределено
И ХозяйственныеОперацииВвозИзЕАЭС.Найти(Форма.Объект.ХозяйственнаяОперация) = Неопределено
И Форма.Объект.ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.ПриемНаКомиссию);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьМногооборотнуюТаруИзХранилищаСервер(АдресТарыВХранилище)
СтруктураДействийИзмененныеСтроки = Новый Структура;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействийИзмененныеСтроки.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействийИзмененныеСтроки.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействийИзмененныеСтроки.Вставить("ПересчитатьКоличествоУпаковок");
ПараметрыЗаполненияСтавкиНДС = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект);
ПараметрыЗаполненияСтавкиНДС.УказаннаяСтавкаНДС = УказаннаяСтавкаНДС;
СтруктураДействийИзмененныеСтроки.Вставить("ЗаполнитьСтавкуНДС", ПараметрыЗаполненияСтавкиНДС);
СтруктураДействийИзмененныеСтроки.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействийИзмененныеСтроки.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействийИзмененныеСтроки.Вставить("ПересчитатьСумму");
СтруктураДействийИзмененныеСтроки.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействийИзмененныеСтроки.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Истина));
СтруктураДействийИзмененныеСтроки.Вставить("ОчиститьСуммуВзаиморасчетов");
СтруктураДействийИзмененныеСтроки.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействийИзмененныеСтроки.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекЗаполненияСлужебныхРеквизитовТабличнойЧасти(
СтруктураДействийИзмененныеСтроки);
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекПересчетаРеквизитовТабличнойЧасти(
Объект,
СтруктураДействийИзмененныеСтроки,
"Склад",
Истина);
СтруктураДействийДобавленныеСтроки = ОбщегоНазначения.СкопироватьРекурсивно(СтруктураДействийИзмененныеСтроки);
СтруктураДействийДобавленныеСтроки.Вставить("ПроверитьЗаполнитьСклад", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(Объект, СкладГруппа));
СтруктураДействийДобавленныеСтроки.Вставить("ЗаполнитьНоменклатуруПартнераПоНоменклатуре", Объект.Партнер);
Если ИспользоватьСоглашенияСПоставщиками И ЗначениеЗаполнено(Объект.Соглашение) Тогда
СтруктураДействийДобавленныеСтроки.Вставить("ЗаполнитьУсловияЗакупок", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияЦеныЗакупкиВСтрокеТЧ(Объект));
Иначе
СтруктураДействийДобавленныеСтроки.Вставить("ЗаполнитьЦенуЗакупки", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияЦеныЗакупкиВСтрокеТЧ(Объект));
КонецЕсли;
СтруктураДействийДобавленныеСтроки.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействийДобавленныеСтроки.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействийДобавленныеСтроки.Вставить("ЗаполнитьПризнакВедетсяУчетПоГТД", Новый Структура("Номенклатура", "ВедетсяУчетПоГТД"));
СтруктураДействийДобавленныеСтроки.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействийДобавленныеСтроки.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
СтруктураДействийДобавленныеСтроки.Вставить("ПриИзмененииТипаНоменклатуры", Новый Структура("ЕстьРаботы, ЕстьОтменено", Истина, Ложь));
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтаФорма, СтруктураДействийДобавленныеСтроки);
ПакетнаяОбработкаТабличнойЧастиКлиентСерверЛокализация.ДополнитьСтруктуруДействийПриИзмененииЭлемента(ЭтотОбъект, "Номенклатура", СтруктураДействийДобавленныеСтроки);
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекЗаполненияСлужебныхРеквизитовТабличнойЧасти(
СтруктураДействийДобавленныеСтроки);
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекПересчетаРеквизитовТабличнойЧасти(
Объект,
СтруктураДействийДобавленныеСтроки,
"Склад",
Истина);
МногооборотнаяТараСервер.ЗаполнитьМногооборотнуюТаруИзХранилища(
Объект,
АдресТарыВХранилище,
"Товары",
"Номенклатура,Характеристика,Склад",
СтруктураДействийИзмененныеСтроки,
СтруктураДействийДобавленныеСтроки);
СтруктураНаименованийТабличныхЧастей = Новый Структура("Товары");
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре(СтруктураНаименованийТабличныхЧастей);
ЗаполнитьСлужебныеРеквизитыПоНазначениюВТЧ();
РассчитатьИтоговыеПоказателиПоступления(ЭтаФорма);
ПриИзмененииСкладаВТабличнойЧастиСервер();
ЗаполнитьСтатусыУказанияСерийСервер();
ЗакупкиСервер.ЗаполнитьСлужебныеРеквизитыНомераГТД(Объект.Товары);
КонецПроцедуры
&НаСервере
Процедура ВернутьМногооборотнуюТаруПриИзмененииСервер()
Если Не Объект.ВернутьМногооборотнуюТару Тогда
Объект.ТребуетсяЗалогЗаТару = Ложь;
КонецЕсли;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВТЧ(Объект);
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетов");
СтруктураДействий.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
СтруктураДействий.Вставить("ЗаполнитьСлужебныеРеквизитыПоНазначению");
ПакетнаяОбработкаТабличнойЧастиКлиентСерверЛокализация.ДополнитьСтруктуруДействийПриИзмененииЭлемента(ЭтотОбъект, "Номенклатура", СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий, Неопределено);
ОбновитьДоступностьЭлементовВозвратнойТары(ЭтаФорма);
РассчитатьИтоговыеПоказателиПоступления(ЭтаФорма);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ЗависимыеРеквизиты()
Возврат Новый Структура(
"БезВозвратнойТары",
"Сумма,СуммаНДС,СуммаСНДС,СуммаРучнойСкидки");
КонецФункции
&НаКлиенте
Процедура ТоварыСписатьНаРасходыПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ТекущаяСтрока", ТекущаяСтрока);
ВопросПользователюПриИзмененииРеквизитаСтроки(
Новый ОписаниеОповещения("ТоварыСписатьНаРасходыВопросПользователюЗавершение", ЭтотОбъект, ДополнительныеПараметры),
ТекущаяСтрока)
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСписатьНаРасходыВопросПользователюЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Не Результат Тогда
Возврат;
КонецЕсли;
СтрокаТаблицы = ДополнительныеПараметры["ТекущаяСтрока"];
Если Не СтрокаТаблицы.СписатьНаРасходы Тогда
СтруктураДействий = Новый Структура;
ДоходыИРасходыКлиентСервер.ВставитьДействиеОчиститьСтатьюИАналитикуРасходов(СтруктураДействий, ЭтотОбъект);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(СтрокаТаблицы, СтруктураДействий, КэшированныеЗначения);
Если (СтрокаТаблицы.ТипНоменклатуры = ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Товар") Или
СтрокаТаблицы.ТипНоменклатуры = ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.МногооборотнаяТара"))
Или СтрокаТаблицы.ТипНазначения = ПредопределенноеЗначение("Перечисление.ТипыНазначений.ПоставкаПодПринципала") Тогда
СтрокаТаблицы.Подразделение = ПредопределенноеЗначение("Справочник.СтруктураПредприятия.ПустаяСсылка");
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьПодразделение(Команда)
ВыделенныеСтроки = Элементы.Товары.ВыделенныеСтроки;
Если Объект.Товары.Количество() = 0 Тогда
ПоказатьПредупреждение( , НСтр("ru = 'В список ""Товары"" не введено ни одной строки.'"));
Возврат;
Иначе
ТребуетсяЗаполнение = Ложь;
Для Каждого Строка Из ВыделенныеСтроки Цикл
ДанныеСтроки = Объект.Товары.НайтиПоИдентификатору(Строка);
Если (ДанныеСтроки.ТипНоменклатуры = ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Товар") Или
ДанныеСтроки.ТипНоменклатуры = ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.МногооборотнаяТара"))
И (Не ДанныеСтроки.СписатьНаРасходы Или ЗначениеЗаполнено(ДанныеСтроки.Назначение)) Тогда
Продолжить;
КонецЕсли;
ТребуетсяЗаполнение = Истина;
Прервать;
КонецЦикла;
Если Не ТребуетсяЗаполнение Тогда
ПоказатьПредупреждение( , НСтр("ru = 'В выделенных строках списка ""Товары"" заполнение подразделения-получателя не требуется.'"));
Возврат;
КонецЕсли;
КонецЕсли;
ПараметрыФормы = Новый Структура("Подразделение", Объект.Подразделение);
ОткрытьФорму("Справочник.СтруктураПредприятия.ФормаВыбора", ПараметрыФормы, ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьСтавкуНДСЗавершение(СтавкаНДС, ДополнительныеПараметры) Экспорт
Если СтавкаНДС = Неопределено Тогда
Возврат;
КонецЕсли;
ОчиститьСообщения();
ЗаполнитьСтавкуНДСНаСервере(СтавкаНДС, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиПоступления(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСтавкуНДСНаСервере(СтавкаНДС, КэшированныеЗначения)
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетов");
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
СтрокиТЧ = РаботаСТабличнымиЧастямиКлиентСервер.ЭлементыКоллекции(Объект.Товары, Элементы.Товары.ВыделенныеСтроки);
Для каждого СтрокаТабличнойЧасти Из СтрокиТЧ Цикл
СтрокаТабличнойЧасти.СтавкаНДС = СтавкаНДС;
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
СтрокиТЧ,
СтруктураДействий,
Объект.Товары,
КэшированныеЗначения);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
РассчитатьИтоговыеПоказателиПоступления(ЭтотОбъект);
ВзаиморасчетыКлиентСервер.ОбновитьТекстГиперссылкиВалюты(ЭтотОбъект);
ОбновитьТекстДокументыНаОсновании();
УстановитьОбязательностьПоставщика();
КонецПроцедуры
&НаСервере
Процедура ОпределитьПечатьЕдиногоАвансовогоОтчета()
Если ЗначениеЗаполнено(ДатаНачалаПечатиЕдиногоАвансовогоОтчета) Тогда
Если ЗначениеЗаполнено(Объект.Дата) Тогда
ПечатьЕдиногоАвансовогоОтчета = (Объект.Дата >= ДатаНачалаПечатиЕдиногоАвансовогоОтчета);
Иначе
ПечатьЕдиногоАвансовогоОтчета = (ТекущаяДатаСеанса() >= ДатаНачалаПечатиЕдиногоАвансовогоОтчета);
КонецЕсли;
Иначе
ПечатьЕдиногоАвансовогоОтчета = ЕдиныйАвансовыйОтчетБезусловно;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область РаботаСКонтрагентами
&НаКлиенте
Процедура Подключаемый_ПоказатьПредложениеИспользоватьПроверкуКонтрагентов()
ПроверкаКонтрагентовКлиент.ПредложитьВключитьПроверкуКонтрагентов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбработатьРезультатПроверкиКонтрагентов()
ПроверкаКонтрагентовКлиент.ОбработатьРезультатПроверкиКонтрагентовВДокументе(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ОтобразитьРезультатПроверкиКонтрагента() Экспорт
ПроверкаКонтрагентов.ОтобразитьРезультатПроверкиКонтрагентаВДокументе(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ПроверитьКонтрагентовФоновоеЗадание(ПараметрыФоновогоЗадания) Экспорт
ПроверкаКонтрагентов.ПроверитьКонтрагентовВДокументеФоновоеЗадание(ЭтотОбъект, ПараметрыФоновогоЗадания);
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьКонтрагентов(Команда)
ПроверкаКонтрагентовКлиент.ПроверитьКонтрагентовВДокументеПоКнопке(ЭтотОбъект);
КонецПроцедуры
#КонецОбласти
#Область Прочее
&НаСервере
Функция ЗаполнитьПоПриемкеСервер(ЕстьПринятыеТовары)
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействийСИзмененнымиСтроками = Новый Структура;
СтруктураДействийСИзмененнымиСтроками.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействийСИзмененнымиСтроками.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействийСИзмененнымиСтроками.Вставить("ПересчитатьСумму");
СтруктураДействийСИзмененнымиСтроками.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Ложь));
СтруктураДействийСИзмененнымиСтроками.Вставить("ОчиститьСуммуВзаиморасчетов");
СтруктураДействийСИзмененнымиСтроками.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
СтруктураДействийСДобавленнымиСтроками = Новый Структура;
Если ИспользоватьСоглашенияСПоставщиками И ЗначениеЗаполнено(Объект.Соглашение) Тогда
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьУсловияЗакупок", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияЦеныЗакупкиВСтрокеТЧ(Объект));
Иначе
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьЦенуЗакупки", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияЦеныЗакупкиВСтрокеТЧ(Объект));
КонецЕсли;
ПараметрыЗаполненияСтавкиНДС = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект);
ПараметрыЗаполненияСтавкиНДС.УказаннаяСтавкаНДС = УказаннаяСтавкаНДС;
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьСтавкуНДС", ПараметрыЗаполненияСтавкиНДС);
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействийСДобавленнымиСтроками.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействийСДобавленнымиСтроками.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействийСДобавленнымиСтроками.Вставить("ПересчитатьСумму");
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются", Новый Структура("Номенклатура", "ХарактеристикиИспользуются"));
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакВедетсяУчетПоГТД", Новый Структура("Номенклатура", "ВедетсяУчетПоГТД"));
СтруктураДействийСДобавленнымиСтроками.Вставить("ОчиститьСуммуВзаиморасчетов");
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
ПакетнаяОбработкаТабличнойЧастиКлиентСерверЛокализация.ДополнитьСтруктуруДействийПриИзмененииЭлемента(ЭтотОбъект, "Номенклатура", СтруктураДействийСДобавленнымиСтроками);
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекЗаполненияСлужебныхРеквизитовТабличнойЧасти(СтруктураДействийСДобавленнымиСтроками);
Если Объект.ПоступлениеПоЗаказам Тогда
Заказы = Объект.Товары.Выгрузить(, "ЗаказПоставщику");
Заказы.Свернуть("ЗаказПоставщику");
МассивРаспоряжений = Заказы.ВыгрузитьКолонку("ЗаказПоставщику");
Если ЗначениеЗаполнено(Объект.ЗаказПоставщику) И
МассивРаспоряжений.Найти(Объект.ЗаказПоставщику) = Неопределено Тогда
МассивРаспоряжений.Добавить(Объект.ЗаказПоставщику);
КонецЕсли;
Если МассивРаспоряжений.Количество() = 0
И ЗначениеЗаполнено(Параметры.Основание)
И ТипЗнч(Параметры.Основание) = Тип("Структура")
И Параметры.Основание.Свойство("ДокументОснование") Тогда
Параметры.Основание.Свойство("ДокументОснование", МассивРаспоряжений);
КонецЕсли;
Иначе
МассивРаспоряжений = Неопределено;
КонецЕсли;
Если Справочники.Склады.ЭтоГруппа(Объект.Склад) Тогда
Выборка = Справочники.Склады.Выбрать(Объект.Склад);
МассивСкладов = Новый Массив;
Пока Выборка.Следующий() Цикл
МассивСкладов.Добавить(Выборка.Ссылка);
КонецЦикла;
КонецЕсли;
СкладЗаполнения = ?(Справочники.Склады.ЭтоГруппа(Объект.Склад),МассивСкладов,Объект.Склад);
ПараметрыЗаполнения = ЗакупкиСервер.ПараметрыЗаполненияПоФактическойПриемке();
ПараметрыЗаполнения.ДокументПоступления = Объект.Ссылка;
ПараметрыЗаполнения.ДатаПоступления = Объект.Дата;
ПараметрыЗаполнения.СтруктураДействийСИзмененнымиСтроками = СтруктураДействийСИзмененнымиСтроками;
ПараметрыЗаполнения.СтруктураДействийСДобавленнымиСтроками = СтруктураДействийСДобавленнымиСтроками;
ПараметрыЗаполнения.Склад = СкладЗаполнения;
ПараметрыЗаполнения.МассивРаспоряжений = МассивРаспоряжений;
ПараметрыЗаполнения.Договор = Объект.Договор;
ПараметрыЗаполнения.ЗаполнитьПоПоступлениям = ХозяйственныеОперацииРаздельнойЗакупки().Найти(Объект.ХозяйственнаяОперация)<>Неопределено;
ПараметрыЗаполнения.ВариантПриемкиТоваров = Объект.ВариантПриемкиТоваров;
ЕстьИзменения = ЗакупкиСервер.ЗаполнитьТоварыПоФактическойПриемке(Объект.Товары,
ПараметрыЗаполнения,
ЕстьПринятыеТовары);
РаспределитьПоЗаказам();
ПриИзмененииСкладаВТабличнойЧастиСервер();
ЗаполнитьСлужебныеРеквизитыПоНазначениюВТЧ();
ПересчитатьКоличествоРНПТ();
РассчитатьИтоговыеПоказателиПоступления(ЭтаФорма);
ЗаполнитьСтатусыУказанияСерийСервер();
ЗакупкиСервер.ЗаполнитьСлужебныеРеквизитыНомераГТД(Объект.Товары);
ОбновитьИнформациюПоЗаказам();
Если Объект.ПоступлениеПоЗаказам Тогда
ОбновитьОтклоненияОтЗаказа();
КонецЕсли;
Возврат ЕстьИзменения;
КонецФункции
&НаСервере
Процедура РаспределитьПоЗаказам(ДобавлятьНераспределенные = Истина)
ТаблицаТоваров = Новый ТаблицаЗначений;
ТаблицаТоваров.Колонки.Добавить("ЗаказПоставщику", Новый ОписаниеТипов("ДокументСсылка.ЗаказПоставщику"));
ТаблицаТоваров.Колонки.Добавить("Номенклатура", Новый ОписаниеТипов("СправочникСсылка.Номенклатура"));
ТаблицаТоваров.Колонки.Добавить("Характеристика", Новый ОписаниеТипов("СправочникСсылка.ХарактеристикиНоменклатуры"));
ТаблицаТоваров.Колонки.Добавить("КодСтроки", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(10, 0)));
ТаблицаТоваров.Колонки.Добавить("Количество", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(15, 3)));
ТаблицаТоваров.Колонки.Добавить("Склад", Новый ОписаниеТипов("СправочникСсылка.Склады"));
ТаблицаТоваров.Колонки.Добавить("НомерСтроки", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(10, 0)));
ТаблицаТоваров.Колонки.Добавить("Упаковка", Новый ОписаниеТипов("СправочникСсылка.УпаковкиЕдиницыИзмерения"));
ТаблицаТоваров.Колонки.Добавить("Серия", Новый ОписаниеТипов("СправочникСсылка.СерииНоменклатуры"));
ТаблицаТоваров.Колонки.Добавить("Цена", ОбщегоНазначенияУТ.ОписаниеТипаДенежногоПоля());
ТаблицаТоваров.Колонки.Добавить("СтавкаНДС", Новый ОписаниеТипов("СправочникСсылка.СтавкиНДС"));
ТаблицаТоваров.Колонки.Добавить("Сумма", ОбщегоНазначенияУТ.ОписаниеТипаДенежногоПоля());
ТаблицаТоваров.Колонки.Добавить("СуммаНДС", ОбщегоНазначенияУТ.ОписаниеТипаДенежногоПоля());
ТаблицаТоваров.Колонки.Добавить("СуммаСНДС", ОбщегоНазначенияУТ.ОписаниеТипаДенежногоПоля());
ТаблицаТоваров.Колонки.Добавить("ПроцентРучнойСкидки", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(5, 2)));
ТаблицаТоваров.Колонки.Добавить("СуммаРучнойСкидки", ОбщегоНазначенияУТ.ОписаниеТипаДенежногоПоля());
ТаблицаТоваров.Колонки.Добавить("Сделка", Новый ОписаниеТипов("СправочникСсылка.СделкиСКлиентами"));
ТаблицаТоваров.Колонки.Добавить("СтатьяРасходов", Новый ОписаниеТипов("ПланВидовХарактеристикСсылка.СтатьиРасходов"));
ТаблицаТоваров.Колонки.Добавить("АналитикаРасходов", Новый ОписаниеТипов("СправочникСсылка.ПрочиеРасходы"));
ТаблицаТоваров.Колонки.Добавить("Подразделение", Новый ОписаниеТипов("СправочникСсылка.СтруктураПредприятия"));
ТаблицаТоваров.Колонки.Добавить("СписатьНаРасходы", Новый ОписаниеТипов("Булево"));
ТаблицаТоваров.Колонки.Добавить("ВидЦеныПоставщика", Новый ОписаниеТипов("СправочникСсылка.ВидыЦенПоставщиков"));
ТаблицаТоваров.Колонки.Добавить("НоменклатураПартнера", Новый ОписаниеТипов("СправочникСсылка.НоменклатураКонтрагентов"));
ТаблицаТоваров.Колонки.Добавить("Назначение", Новый ОписаниеТипов("СправочникСсылка.Назначения"));
ТаблицаТоваров.Колонки.Добавить("КоличествоУпаковок", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(15, 3)));
ТаблицаТоваров.Колонки.Добавить("Коэффициент", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(15, 5)));
Если ИспользоватьПоступлениеПоНесколькимЗаказам Тогда
МассивЗаказов = Неопределено;
Иначе
МассивЗаказов = Новый Массив();
МассивЗаказов.Добавить(Объект.ЗаказПоставщику);
КонецЕсли;
Документы.ПриобретениеТоваровУслуг.ЗаполнитьПоОстаткамЗаказов(
Объект,
ТаблицаТоваров,
Объект.Склад,
МассивЗаказов);
РаспоряжениеЗаказ = Ложь;
СтруктураПоиска = Новый Структура("Склад,Номенклатура,Характеристика,Назначение,КодСтроки");
Если Объект.Товары.Количество()<>0 Тогда
ДокументПоступления = Объект.Товары.Получить(0).ЗаказПоставщику;
РаспоряжениеЗаказ = (ТипЗнч(ДокументПоступления) = Тип("ДокументСсылка.ЗаказПоставщику"));
КонецЕсли;
Если РаспоряжениеЗаказ Тогда
СтруктураПоиска.Вставить("ЗаказПоставщику");
КонецЕсли;
МассивСтрокБезРаспределения = Новый Массив();
Для каждого СтрокаТовара из Объект.Товары Цикл
ЗаполнитьЗначенияСвойств(СтруктураПоиска, СтрокаТовара);
НайденныеСтроки = ТаблицаТоваров.НайтиСтроки(СтруктураПоиска);
Если НайденныеСтроки.Количество() = 0 Тогда
МассивСтрокБезРаспределения.Добавить(СтрокаТовара);
Продолжить;
КонецЕсли;
НераспределенноеКоличество = СтрокаТовара.Количество;
Для каждого СтрокаТоваровПоЗаказам из НайденныеСтроки Цикл
Если СтрокаТоваровПоЗаказам.Количество = 0 Тогда
Продолжить;
КонецЕсли;
КоличествоКРаспределению = Мин(НераспределенноеКоличество, СтрокаТоваровПоЗаказам.Количество);
СтрокаТоваровПоЗаказам.Количество = СтрокаТоваровПоЗаказам.Количество - КоличествоКРаспределению;
НераспределенноеКоличество = НераспределенноеКоличество - КоличествоКРаспределению;
Если СтрокаТоваровПоЗаказам.Количество = 0 Тогда
ТаблицаТоваров.Удалить(СтрокаТоваровПоЗаказам);
КонецЕсли;
Если НераспределенноеКоличество = 0 Тогда
Прервать;
КонецЕсли;
КонецЦикла;
КонецЦикла;
СтруктураПоиска = Новый Структура("Склад,Номенклатура,Характеристика,Назначение");
Если РаспоряжениеЗаказ Тогда
СтруктураПоиска.Вставить("ЗаказПоставщику");
КонецЕсли;
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, ЭтаФорма);
СтруктураДействий.Удалить("ОчиститьСуммуВзаиморасчетов");
ПараметрыЗаполненияСтавкиНДС = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект);
ПараметрыЗаполненияСтавкиНДС.УказаннаяСтавкаНДС = УказаннаяСтавкаНДС;
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", ПараметрыЗаполненияСтавкиНДС);
Для каждого СтрокаБезРаспределения из МассивСтрокБезРаспределения Цикл
РаспределитьТоварыДокументаПоЗаказам(Объект.Товары, СтрокаБезРаспределения, ТаблицаТоваров, РаспоряжениеЗаказ, СтруктураДействий, СтруктураПоиска, ДобавлятьНераспределенные);
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура РаспределитьТоварыДокументаПоЗаказам(ТоварыДокументаБезРаспределения, СтрокаБезРаспределения, ОстаткиПоЗаказам, РаспоряжениеЗаказ, СтруктураДействий, СтруктураПоиска, ДобавлятьНераспределенные)
КэшированныеЗначения = Неопределено;
ЗаполнитьЗначенияСвойств(СтруктураПоиска, СтрокаБезРаспределения);
НайденныеСтроки = ОстаткиПоЗаказам.НайтиСтроки(СтруктураПоиска);
Если НайденныеСтроки.Количество() = 0 Тогда
Возврат;
КонецЕсли;
НераспределенноеКоличество = СтрокаБезРаспределения.Количество;
СтрокаТоваровПоЗаказам = НайденныеСтроки[0];
КоличествоКРаспределению = Мин(НераспределенноеКоличество, СтрокаТоваровПоЗаказам.Количество);
Если СтрокаТоваровПоЗаказам.Количество >= НераспределенноеКоличество Тогда
ЗаполнитьЗначенияСвойств(СтрокаБезРаспределения, СтрокаТоваровПоЗаказам, "КодСтроки, Цена, СтавкаНДС");
СтрокаБезРаспределения.ЦенаЗаказа = СтрокаТоваровПоЗаказам.Цена;
СтрокаБезРаспределения.РасхождениеЗаказ = 0;
СтрокаТоваровПоЗаказам.Количество = СтрокаТоваровПоЗаказам.Количество - КоличествоКРаспределению;
НераспределенноеКоличество = НераспределенноеКоличество - КоличествоКРаспределению;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокуТЧ(СтрокаБезРаспределения, СтруктураДействий, КэшированныеЗначения);
Если СтрокаТоваровПоЗаказам.Количество = 0 Тогда
ОстаткиПоЗаказам.Удалить(СтрокаТоваровПоЗаказам);
КонецЕсли;
ИначеЕсли ДобавлятьНераспределенные И КоличествоКРаспределению > 0 Тогда
НераспределенноеКоличество = НераспределенноеКоличество - КоличествоКРаспределению;
СтрокаБезРаспределения.Количество = КоличествоКРаспределению;
НоваяСтрокаБезРаспределения = ТоварыДокументаБезРаспределения.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрокаБезРаспределения, СтрокаБезРаспределения);
НоваяСтрокаБезРаспределения.Количество = НераспределенноеКоличество;
ЗаполнитьЗначенияСвойств(СтрокаБезРаспределения, СтрокаТоваровПоЗаказам, "КодСтроки, Цена, СтавкаНДС");
СтрокаБезРаспределения.ЦенаЗаказа = СтрокаТоваровПоЗаказам.Цена;
СтрокаБезРаспределения.РасхождениеЗаказ = 0;
СтрокаТоваровПоЗаказам.Количество = СтрокаТоваровПоЗаказам.Количество - КоличествоКРаспределению;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокуТЧ(СтрокаБезРаспределения, СтруктураДействий, КэшированныеЗначения);
Если СтрокаТоваровПоЗаказам.Количество = 0 Тогда
ОстаткиПоЗаказам.Удалить(СтрокаТоваровПоЗаказам);
КонецЕсли;
РаспределитьТоварыДокументаПоЗаказам(ТоварыДокументаБезРаспределения, НоваяСтрокаБезРаспределения, ОстаткиПоЗаказам, РаспоряжениеЗаказ, СтруктураДействий, СтруктураПоиска, ДобавлятьНераспределенные);
ИначеЕсли СтрокаБезРаспределения.Количество > 0 Тогда
СтрокаБезРаспределения.РасхождениеЗаказ = 1;
СтрокаБезРаспределения.ЦенаЗаказа = 0;
СтрокаБезРаспределения.КодСтроки = 0;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьПризнакСписанияНаРасходыДляУслуг()
СтруктураОтбора = Новый Структура("ТипНоменклатуры", Перечисления.ТипыНоменклатуры.Услуга);
НайденныеСтроки = Объект.Товары.НайтиСтроки(СтруктураОтбора);
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
ОбрабатываемыеСтроки = Новый Массив();
СтруктураДействий = Новый Структура;
ДоходыИРасходыКлиентСервер.ВставитьДействиеЗаполнитьСтатьюАналитикуРасходовНоменклатуры(
СтруктураДействий,
ЭтотОбъект,
Объект.ХозяйственнаяОперация,
Объект.Организация,
Объект.Подразделение);
Для Каждого Строка Из НайденныеСтроки Цикл
Строка.СписатьНаРасходы = Истина;
ОбрабатываемыеСтроки.Добавить(Строка);
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.Товары,
КэшированныеЗначения);
Для Каждого Строка Из НайденныеСтроки Цикл
ДоходыИРасходыКлиентСервер.ПриИзмененииРеквизитаДоступностиСтатьиВСтроке(ЭтотОбъект, Строка, "Объект.Товары");
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ДатаПриИзмененииЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
ПересчитыватьЦены = Ложь;
Если РезультатВопроса = Истина Тогда
ПересчитыватьЦены = Истина;
КонецЕсли;
ЦеныРассчитаны = ДатаПриИзмененииСервер(ПересчитыватьЦены);
ДатаДокументаДоИзменения = Объект.Дата;
Если ПересчитыватьЦены Тогда
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияЦенПоСоглашению(ЦеныРассчитаны);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПоискПоШтрихкодуЗавершение(ДанныхШтрихкода, ДополнительныеПараметры) Экспорт
ОбработатьШтрихкоды(ДанныхШтрихкода);
КонецПроцедуры
&НаКлиенте
Процедура РазбитьСтрокуФактЗавершение(НоваяСтрока, ДополнительныеПараметры) Экспорт
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
Если НоваяСтрока <> Неопределено Тогда
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, ЭтаФорма);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(НоваяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиПоступления(ЭтаФорма);
КонецЕсли;
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.РазбитьСтрокуЗавершение(НоваяСтрока, ДополнительныеПараметры);
ОбновитьЗависимыеРеквизитыФормыПоЗаказу(
Объект.Товары,
НадписьРасхождениеЗаказ,
Элементы.КартинкаРасхождениеЗаказ,
Элементы.КартинкаРасхождениеЗаказы);
КонецПроцедуры
&НаСервереБезКонтекста
Функция ДанныеВыбораСкладов(Склад)
Запрос = Новый Запрос(
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| Склады.Ссылка КАК Ссылка
|ИЗ
| Справочник.Склады КАК Склады
|ГДЕ
| Склады.Ссылка В ИЕРАРХИИ(&ГруппаСкладов)
| И Склады.ЭтоГруппа = ЛОЖЬ
| И Склады.ВыборГруппы <> ЗНАЧЕНИЕ(Перечисление.ВыборГруппыСкладов.Запретить)");
Запрос.УстановитьПараметр("ГруппаСкладов", Склад);
МассивСкладов = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");
Возврат МассивСкладов;
КонецФункции
&НаСервере
Процедура УстановитьПараметрыВыбораТоварыСклад()
Элементы.ТоварыСклад.ПараметрыВыбора = Новый ФиксированныйМассив(Новый Массив);
ДанныеВыбораСкладов = ДанныеВыбораСкладов(Объект.Склад);
ОбщегоНазначенияУТКлиентСервер.ДобавитьПараметрВыбора(Элементы.ТоварыСклад, "Ссылка", ДанныеВыбораСкладов);
КонецПроцедуры
&НаСервере
Процедура ОбновитьТекстАвансовыйОтчет()
ТекстАвансовыйОтчет = АвансовыйОтчетЛокализация.ТекстАвансовыйОтчет(Объект.АвансовыйОтчет);
КонецПроцедуры
&НаСервере
Процедура ОбновитьТекстДокументыНаОсновании()
ТекстыПоляДокументыНаОсновании.Очистить();
ПараметрыРегистрации = Документы.ПриобретениеТоваровУслуг.ПараметрыРегистрацииСчетовФактурПолученных(Объект);
СчетаФактурыПолученныеНаОсновании = УчетНДСУП.СчетаФактурыПолученныеНаОсновании(ПараметрыРегистрации);
ТекстСчетаФактурыПолученные = СчетаФактурыПолученныеНаОсновании.Представление;
ФормированиеФискальныхЧековСервер.ОбновитьГиперссылкуПробитияФискальногоЧека(Объект.Ссылка, ЭтотОбъект, ТекстСчетаФактурыПолученные);
ТекстыПоляДокументыНаОсновании.Добавить(ТекстСчетаФактурыПолученные);
ПараметрыРегистрацииУведомленийОВвозе = Документы.ПриобретениеТоваровУслуг.ПараметрыРегистрацииУведомленийОВвозеПрослеживаемыхТоваров(Объект);
УведомленияОВвозеНаОсновании = УчетПрослеживаемыхТоваровЛокализация.УведомленияОВвозеПрослеживаемыхТоваровПоДокументуПоступления(ПараметрыРегистрацииУведомленийОВвозе);
ТекстыПоляДокументыНаОсновании.Добавить(УведомленияОВвозеНаОсновании.ПредставлениеРаспоряженияКОформлению);
ТекстыПоляДокументыНаОсновании.Добавить(УведомленияОВвозеНаОсновании.ПредставлениеУведомленияОВвозе);
ОбщегоНазначенияУТКлиентСервер.ОбновитьТекстДокументыНаОсновании(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ОсобыеУсловияПеревозкиПриИзменении(Элемент)
ОсобыеУсловияПеревозкиПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура ДополнитьИнформациюПоДоставкеКонтактами(Команда)
ДополнитьИнформациюПоДоставкеКонтактамиСервер();
КонецПроцедуры
&НаСервере
Процедура ОсобыеУсловияПеревозкиПриИзмененииСервер()
ДоставкаТоваров.ОсобыеУсловияПеревозкиПриИзменении(Элементы, Объект);
КонецПроцедуры
&НаСервере
Процедура ДополнитьИнформациюПоДоставкеКонтактамиСервер()
ДоставкаТоваров.ДополнитьИнформациюПоДоставкеКонтактами(Объект);
КонецПроцедуры
&НаКлиенте
Процедура НомерВходящегоДокументаПриИзменении(Элемент)
СобытияФормКлиент.ПриИзмененииЭлемента(ЭтотОбъект, Элемент);
КонецПроцедуры
&НаКлиенте
Процедура ДатаВходящегоДокументаПриИзменении(Элемент)
СобытияФормКлиент.ПриИзмененииЭлемента(ЭтотОбъект, Элемент);
КонецПроцедуры
&НаСервере
Процедура УстановитьЗаголовокЗаполнитьПоЗаказамОрдерам()
СкладыТаблицы = Объект.Товары.Выгрузить(,"Склад").ВыгрузитьКолонку("Склад");
ОрдернаяСхемаПриПриемке = СкладыСервер.ЕстьОрдерныйНаПоступлениеСклад(СкладыТаблицы, Объект.Дата, Объект.Склад);
Если НЕ ОрдернаяСхемаПриПриемке И НЕ ИспользоватьПоступлениеПоНесколькимЗаказам И ИспользоватьЗаказыПоставщикам Тогда
ЗаголовокЗаполнить = НСтр("ru = 'Подобрать товары из заказа'");
ИначеЕсли НЕ ОрдернаяСхемаПриПриемке И ИспользоватьПоступлениеПоНесколькимЗаказам И ИспользоватьЗаказыПоставщикам Тогда
ЗаголовокЗаполнить = НСтр("ru = 'Подобрать товары из заказов'");
ИначеЕсли ОрдернаяСхемаПриПриемке И НЕ ИспользоватьЗаказыПоставщикам Тогда
ЗаголовокЗаполнить = НСтр("ru = 'Подобрать товары по ордерам'");
Иначе
ЗаголовокЗаполнить = НСтр("ru = 'Подобрать товары по заказам/ордерам'");
КонецЕсли;
Элементы.ТоварыПодобратьТоварыПоЗаказамОрдерам.Заголовок = ЗаголовокЗаполнить;
КонецПроцедуры
&НаСервере
Процедура ПоступлениеПоЗаказамПриИзмененииСервер()
ВидимостьЭлементов = Объект.ПоступлениеПоЗаказам;
Элементы.ТоварыОтвязатьОтЗаказа.Видимость = ВидимостьЭлементов;
Элементы.ТоварыКонтекстноеМенюОтвязатьОтЗаказа.Видимость = ВидимостьЭлементов;
Элементы.ТоварыИндексКартинки.Видимость = ВидимостьЭлементов;
ПоступлениеПоНесколькимЗаказамПриИзменении();
ОбновитьЗависимыеРеквизитыФормыСерверПоЗаказу();
Объект.ЭтапыГрафикаОплаты.Очистить();
КонецПроцедуры
&НаКлиенте
Процедура ЗавершитьРедактированиеСтрокиТовары(Элемент, НоваяСтрока, ОтменаРедактирования)
РассчитатьИтоговыеПоказателиПоступления(ЭтаФорма);
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
Если ТекущиеДанные <> Неопределено Тогда
Если Объект.ПоступлениеПоЗаказам И НоваяСтрока
И Не ОтменаРедактирования Тогда
Если Не ИспользоватьПоступлениеПоНесколькимЗаказам Или ЗначениеЗаполнено(Объект.ЗаказПоставщику) Тогда
ТекущиеДанные.ЗаказПоставщику = Объект.ЗаказПоставщику;
КонецЕсли;
ТекущиеДанные.РасхождениеЗаказ = 1;
ТекущиеДанные.КодСтроки = 0;
ТекущиеДанные.ЦенаЗаказа = 0;
КонецЕсли;
Если НоменклатураКлиент.НеобходимоОбновитьСтатусыСерий(
Элемент,КэшированныеЗначения,ПараметрыУказанияСерий) Тогда
ТекущаяСтрокаИдентификатор = ТекущиеДанные.ПолучитьИдентификатор();
ЗаполнитьСтатусыУказанияСерийПриОкончанииРедактированияСтрокиТЧ(ТекущаяСтрокаИдентификатор, КэшированныеЗначения);
НоменклатураКлиент.ОбновитьКешированныеЗначенияДляУчетаСерий(Элемент,КэшированныеЗначения,ПараметрыУказанияСерий);
КонецЕсли;
КонецЕсли;
МногооборотнаяТараКлиент.ОбновитьСостояниеЗаполненияМногооборотнойТары(Объект.СостояниеЗаполненияМногооборотнойТары);
ОбновитьЗависимыеРеквизитыФормыПоЗаказу(
Объект.Товары,
НадписьРасхождениеЗаказ,
Элементы.КартинкаРасхождениеЗаказ,
Элементы.КартинкаРасхождениеЗаказы);
Если Не ОтменаРедактирования Тогда
КэшСтроки = ?(НоваяСтрока, Неопределено, РаботаСТабличнымиЧастямиКлиентСервер.КэшСтроки(Элементы.Товары, ЭтотОбъект));
СкладыКлиент.ОбновитьТаблицуСкладов(ТаблицаСкладов, ТекущиеДанные, КэшСтроки, СкладГруппа, Ложь);
ВсегоСкладов = ТаблицаСкладов.Количество();
СкладыКлиентСервер.ОбновитьКартинкуГруппыСкладов(НадписьНесколькоСкладов, Элементы.КартинкаНесколькоСкладов, ВсегоСкладов);
КонецЕсли;
УстановитьПризнакЗаполненияСклада();
ДополнительныеПараметры = Новый Структура;
СобытияФормКлиент.ПриИзмененииЭлемента(ЭтотОбъект, Элементы.Товары, ДополнительныеПараметры);
Если ДополнительныеПараметры.Свойство("ТребуетсяСерверныйВызов") Тогда
ПодключитьОбработчикОжидания("ТоварыПриОкончанииРедактированияДляСерверногоВызова", 0.5, Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПриОкончанииРедактированияДляСерверногоВызова()
ТоварыПриОкончанииРедактированияНаСервере();
КонецПроцедуры
&НаСервере
Процедура ТоварыПриОкончанииРедактированияНаСервере()
СобытияФорм.ПриИзмененииЭлемента(ЭтотОбъект, "Товары");
КонецПроцедуры
&НаСервере
Функция ПолноеИмяДокумента()
Возврат "Документ.ПриобретениеТоваровУслуг";
КонецФункции
&НаСервереБезКонтекста
Функция ХозяйственныеОперацииИмпортаСервер()
Возврат Документы.ПриобретениеТоваровУслуг.ХозяйственныеОперацииИмпорта();
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ХозяйственныеОперацииИмпорта()
Возврат ХозяйственныеОперацииИмпортаСервер();
КонецФункции
&НаСервереБезКонтекста
Функция ХозяйственныеОперацииВвозИзЕАЭССервер()
Возврат Документы.ПриобретениеТоваровУслуг.ХозяйственныеОперацииВвозИзЕАЭС();
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ХозяйственныеОперацииВвозИзЕАЭС()
Возврат ХозяйственныеОперацииВвозИзЕАЭССервер();
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ХозяйственныеОперацииРаздельнойЗакупки(ИспользоватьТоварыВПути = Истина,
ИспользоватьНеотфактурованныеПоставки = Истина)
ХозяйственныеОперацииРаздельнойЗакупки = Новый Массив;
Если ИспользоватьТоварыВПути Тогда
ХозяйственныеОперацииРаздельнойЗакупки.Добавить(
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ЗакупкаУПоставщикаТоварыВПути"));
ХозяйственныеОперацииРаздельнойЗакупки.Добавить(
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ЗакупкаПоИмпортуТоварыВПути"));
ХозяйственныеОперацииРаздельнойЗакупки.Добавить(
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭСТоварыВПути"));
КонецЕсли;
Если ИспользоватьНеотфактурованныеПоставки Тогда
ХозяйственныеОперацииРаздельнойЗакупки.Добавить(
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ЗакупкаУПоставщикаФактуровкаПоставки"));
ХозяйственныеОперацииРаздельнойЗакупки.Добавить(
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭСФактуровкаПоставки"));
КонецЕсли;
Возврат ХозяйственныеОперацииРаздельнойЗакупки;
КонецФункции
&НаСервереБезКонтекста
Функция ПолучитьДанныеПоНаличиюКорректировокИСчетаФактуры(ДокментСсылка)
РеквизитМожноИзменить = Ложь;
ЕстьСчетФактуры = Ложь;
ЕстьКорректировки = Ложь;
ПроверитьНаличиеКорректировокИСчетовФактур(ДокментСсылка, ЕстьКорректировки, ЕстьСчетФактуры);
Если ЕстьКорректировки Тогда
ТекстСообщения = НСтр("ru = 'На основании документа введена корректировка приобретения.
|Изменение исходного документа запрещено.'");
ОбщегоНазначения.СообщитьПользователю(ТекстСообщения);
ИначеЕсли ЕстьСчетФактуры Тогда
ТекстСообщения = НСтр("ru = 'На основании документа зарегистрирован счет-фактура.
|Изменение исходного документа запрещено.'");
ОбщегоНазначения.СообщитьПользователю(ТекстСообщения);
Иначе
РеквизитМожноИзменить = Истина;
КонецЕсли;
Возврат РеквизитМожноИзменить;
КонецФункции
#КонецОбласти
#Область Прочее
&НаКлиенте
Процедура Подключаемый_ЗакрытьФорму()
Если Открыта() Тогда
Закрыть();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбновитьСводнуюИнформациюПоДоставке()
ДоставкаТоваров.ПриЧтенииСозданииРаспоряженийНаСервере(Элементы, Объект, Объект.ПоступлениеПоЗаказам,,СводнаяИнформацияПоДоставке);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьНалогообложениеНДСЗакупки()
ПараметрыЗаполнения = Документы.ПриобретениеТоваровУслуг.ПараметрыЗаполненияНалогообложенияНДСЗакупки(Объект);
УчетНДСУП.ЗаполнитьНалогообложениеНДСЗакупки(Объект.НалогообложениеНДС, ПараметрыЗаполнения, УчетНДСКэшированныеЗначенияПараметров);
УчетНДСУП.ЗаполнитьСписокВыбораНалогообложенияНДСЗакупки(Элементы.НалогообложениеНДС, Объект.НалогообложениеНДС, ПараметрыЗаполнения, УчетНДСКэшированныеЗначенияПараметров);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьВидДеятельностиНДС()
ПараметрыЗаполнения = Документы.ПриобретениеТоваровУслуг.ПараметрыЗаполненияВидаДеятельностиНДС(Объект);
УчетНДСУП.ЗаполнитьВидДеятельностиНДС(Объект.ЗакупкаПодДеятельность, ПараметрыЗаполнения, УчетНДСКэшированныеЗначенияПараметров);
УчетНДСУП.ЗаполнитьСписокВыбораВидаДеятельностиНДС(Элементы.ЗакупкаПодДеятельность, Объект.ЗакупкаПодДеятельность, ПараметрыЗаполнения, УчетНДСКэшированныеЗначенияПараметров);
КонецПроцедуры
&НаСервере
Функция РаспоряжениеДляПолученияВариантаПриемкиТоваров()
ВариантПриемкиТоваровДоговор = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Договор, "ВариантПриемкиТоваров");
ВариантПриемкиТоваровСоглашение = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Соглашение, "ВариантПриемкиТоваров");
Если Справочники.ДоговорыКонтрагентов.ДоговорИспользуетсяПриПриемке(ВариантПриемкиТоваровДоговор)
И ОрдернаяСхемаПриПриемке Тогда
Возврат Объект.Договор;
ИначеЕсли Справочники.СоглашенияСПоставщиками.СоглашениеИспользуетсяПриПриемке(ВариантПриемкиТоваровСоглашение)
И ОрдернаяСхемаПриПриемке
И Объект.ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.ЗакупкаЧерезПодотчетноеЛицо Тогда
Возврат Объект.Соглашение;
КонецЕсли;
Возврат Неопределено;
КонецФункции
&НаКлиенте
Процедура УстановитьПризнакЗаполненияСклада()
СкладОбязателен = ?(Объект.Товары.Итог("СкладОбязателен") = 0, 0, 1);
КонецПроцедуры
&НаСервере
Процедура ОбновитьПризнакЕстьКорректировки()
ЕстьСчетФактуры = Ложь;
ПроверитьНаличиеКорректировокИСчетовФактур(Объект.Ссылка, ЕстьКорректировки, ЕстьСчетФактуры);
КонецПроцедуры
&НаСервере
Процедура ОбновитьОбязательностьСкладаВТЧ()
ПараметрыЗаполнения = Новый Структура("ЕстьРаботы, ЕстьОтменено", Истина, Ложь);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПриИзмененииТипаНоменклатуры", ПараметрыЗаполнения);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий, Неопределено);
СкладОбязателен = ?(Объект.Товары.Итог("СкладОбязателен") = 0, 0, 1);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСлужебныеРеквизитыПоНазначениюВТЧ()
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьСлужебныеРеквизитыПоНазначению");
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий, Неопределено);
КонецПроцедуры
&НаКлиенте
Процедура ОбработатьРезультатВыбораНоменклатурыПартнера(ВыбранноеЗначение, ДополнительныеПараметры) Экспорт
Если ВыбранноеЗначение = Неопределено Тогда
Возврат;
КонецЕсли;
ДополнительныеПараметры.ТекущаяСтрока.НоменклатураПартнера = ВыбранноеЗначение;
ТоварыНоменклатураПартнераПриИзменении(ДополнительныеПараметры.ЭлементФормы);
КонецПроцедуры
&НаСервере
Процедура УстановитьПараметрыВыбораНоменклатуры()
МассивПараметров = Новый Массив;
Если ЗначениеЗаполнено(Объект.Договор) Тогда
УстановитьПривилегированныйРежим(Истина);
ТипДоговора = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Договор, "ТипДоговора");
Если ТипДоговора = Перечисления.ТипыДоговоров.СПереработчиком2_5
Или ТипДоговора = Перечисления.ТипыДоговоров.СПереработчиком2_5_ЕАЭС Тогда
МассивПараметров.Добавить(Новый ПараметрВыбора("Отбор.ТипНоменклатуры", Новый ФиксированныйМассив(НоменклатураКлиентСервер.ОтборПоРаботе(Ложь))));
Элементы.ТоварыНоменклатура.ПараметрыВыбора = Новый ФиксированныйМассив(МассивПараметров);
Иначе
НоменклатураСервер.УстановитьПараметрыВыбораНоменклатуры(Объект.ХозяйственнаяОперация, Элементы.ТоварыНоменклатура);
КонецЕсли;
УстановитьПривилегированныйРежим(Ложь);
Иначе
НоменклатураСервер.УстановитьПараметрыВыбораНоменклатуры(Объект.ХозяйственнаяОперация, Элементы.ТоварыНоменклатура);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
&НаКлиенте
Процедура Подключаемый_ОбработатьЗаписьОбъекта()
ОбщегоНазначенияУТКлиент.ОбработатьЗаписьОбъектаВФорме(ЭтотОбъект, ПараметрыДляЗаписи);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСписокВыбораОпераций()
Элементы.ХозяйственнаяОперация.СписокВыбора.ЗагрузитьЗначения(
ЗакупкиСервер.ХозяйственныеОперацииРаздельнойЗакупки(ПолноеИмяДокумента()));
ЕдинственнаяОперация = Элементы.ХозяйственнаяОперация.СписокВыбора.Количество() = 1;
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ХозяйственнаяОперация",
"ТолькоПросмотр",
ЕдинственнаяОперация И ЗначениеЗаполнено(Объект.ХозяйственнаяОперация));
КонецПроцедуры
&НаСервере
Процедура ПоместитьРасшифровкуПлатежаВоВременноеХранилище()
ВзаиморасчетыСервер.ПоместитьРасшифровкуПлатежаВоВременноеХранилище(ЭтаФорма);
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьКоличестваРНПТ()
ХозОперацииЗакупкаПоИмпорту = ЗакупкиВызовСервера.ХозяйственныеОперацииПоОсновной(
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ЗакупкаПоИмпорту"));
УчетПрослеживаемыхТоваровЛокализация.УстановитьВидимостьКоличестваРНПТ(ЭтаФорма, Объект.Дата);
Элементы.ТоварыГруппаКоличествоПоРНПТ.Видимость = Элементы.ТоварыГруппаКоличествоПоРНПТ.Видимость
И ХозОперацииЗакупкаПоИмпорту.Найти(Объект.ХозяйственнаяОперация) = Неопределено;
КонецПроцедуры
#Область ФискальнаяОперация
&НаКлиенте
Процедура ФискальнаяОперацияОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылка, СтандартнаяОбработка)
Если НавигационнаяСсылка = "ПробитьЧек" Тогда
СтандартнаяОбработка = Ложь;
ФормированиеФискальныхЧековКлиент.ОтобразитьЧек(
ЭтотОбъект,
Новый ОписаниеОповещения("ФискальнаяОперацияЗавершение", ЭтотОбъект));
ИначеЕсли "ОткрытьЗаписьФискальнойОперации" = НавигационнаяСсылка Тогда
СтандартнаяОбработка = Ложь;
ПодключаемоеОборудованиеУТКлиент.ОткрытьЗаписьФискальнойОперации(ЭтотОбъект, Объект.Ссылка);
ИначеЕсли "НастроитьОборудование" = НавигационнаяСсылка Тогда
СтандартнаяОбработка = Ложь;
ОткрытьФорму("Обработка.ПредпросмотрЧека.Форма.ОшибкаПодключенияККТ");
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ФискальнаяОперацияЗавершение(Результат, ДополнительныеПараметры) Экспорт
ОбновитьТекстДокументыНаОсновании();
КонецПроцедуры
#КонецОбласти
&НаСервере
Процедура НастроитьКолонкиСписанияПоРасходамТЧТовары()
ОперацииФактуровка = Новый Массив;
ОперацииФактуровка.Добавить(ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭСФактуровкаПоставки"));
ОперацииФактуровка.Добавить(ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ЗакупкаУПоставщикаФактуровкаПоставки"));
ОчищатьКолонкиСписанияПоРасходам = ОперацииФактуровка.Найти(Объект.ХозяйственнаяОперация) <> Неопределено
И ВариантОформленияДоговораЗакупок = ПредопределенноеЗначение("Перечисление.ВариантыОформленияЗакупок.НеотфактурованныеПоставкиТоваровИУслуг");
Если ОчищатьКолонкиСписанияПоРасходам Тогда
СтруктураДействий = Новый Структура;
ДоходыИРасходыКлиентСервер.ВставитьДействиеОчиститьСтатьюИАналитикуРасходов(СтруктураДействий, ЭтотОбъект);
КонецЕсли;
ОбрабатываемыеСтроки = Новый Массив;
Для Каждого СтрокаТовары Из Объект.Товары Цикл
Если ОчищатьКолонкиСписанияПоРасходам Тогда
СтрокаТовары.Подразделение = ПредопределенноеЗначение("Справочник.СтруктураПредприятия.ПустаяСсылка");
СтрокаТовары.СписатьНаРасходы = Ложь;
ОбрабатываемыеСтроки.Добавить(СтрокаТовары);
Иначе
Если СтрокаТовары.ТипНоменклатуры = ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Товар")
Или СтрокаТовары.ТипНоменклатуры = ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.МногооборотнаяТара")
Или СтрокаТовары.ТипНоменклатуры = ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Набор")
Или ЗначениеЗаполнено(СтрокаТовары.Назначение) Тогда
СтрокаТовары.СписатьНаРасходы = Ложь;
Если Не СтрокаТовары.ТипНоменклатуры = ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Работа")
Или СтрокаТовары.ТипНазначения = ПредопределенноеЗначение("Перечисление.ТипыНазначений.ПоставкаПодПринципала") Тогда
СтрокаТовары.Подразделение = ПредопределенноеЗначение("Справочник.СтруктураПредприятия.ПустаяСсылка");
КонецЕсли;
ИначеЕсли СтрокаТовары.ТипНоменклатуры = ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Услуга") Тогда
СтрокаТовары.СписатьНаРасходы = Истина;
КонецЕсли;
ДоходыИРасходыКлиентСервер.ПриИзмененииРеквизитаДоступностиСтатьиВСтроке(ЭтотОбъект, СтрокаТовары, "Объект.Товары");
КонецЕсли;
КонецЦикла;
Если ОчищатьКолонкиСписанияПоРасходам Тогда
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.Товары);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьЗаказПоставщикуВСтроках()
Если Объект.ХозяйственнаяОперация <> ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПриемНаКомиссию") Тогда
Если Объект.ПоступлениеПоЗаказам И ЗначениеЗаполнено(Объект.ЗаказПоставщику) Тогда
Для Каждого ТекСтрока Из Объект.Товары Цикл
Если Не ЗначениеЗаполнено(ТекСтрока.ЗаказПоставщику) Тогда
ТекСтрока.ЗаказПоставщику = Объект.ЗаказПоставщику;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗагрузкиЧекаСамозанятого(ДанныеЧека, ДополнительныеПараметры) Экспорт
ПослеЗагрузкиЧекаСамозанятогоНаСервере(ДанныеЧека);
РаботаСФайламиКлиент.ОбработкаОповещения(ЭтотОбъект, "Запись_Файл");
КонецПроцедуры
&НаСервере
Процедура ПослеЗагрузкиЧекаСамозанятогоНаСервере(Чек)
ДенежныеСредстваСерверЛокализация.УстановитьСтатусЗагрузкиЧеков(ЭтотОбъект);
КонецПроцедуры
#КонецОбласти