#Область ОписаниеПеременных
&НаКлиенте
Перем КэшированныеЗначения;
&НаКлиенте
Перем ПараметрыДляЗаписи Экспорт;
#КонецОбласти
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
УстановитьУсловноеОформление();
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(Объект, ЭтотОбъект);
ОбщегоНазначенияУТ.НастроитьПодключаемоеОборудование(ЭтаФорма);
ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект);
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("Объект", Объект);
ДополнительныеПараметры.Вставить("ИмяЭлементаДляРазмещения", "ГруппаДополнительныеРеквизиты");
ДополнительныеПараметры.Вставить("ОтложеннаяИнициализация", Истина);
УправлениеСвойствами.ПриСозданииНаСервере(ЭтаФорма, ДополнительныеПараметры);
Справочники.Назначения.ФормаДокументаПриСозданииНаСервере(ЭтаФорма);
ИспользоватьРучныеСкидкиВЗакупках = ПолучитьФункциональнуюОпцию("ИспользоватьРучныеСкидкиВЗакупках");
ИспользоватьПричиныОтменыЗаказовПоставщикам = ПолучитьФункциональнуюОпцию("ИспользоватьПричиныОтменыЗаказовПоставщикам");
ИспользоватьСоглашенияСПоставщиками = ПолучитьФункциональнуюОпцию("ИспользоватьСоглашенияСПоставщиками");
ЗаполнитьСписокВыбораОпераций();
Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
ПриЧтенииСозданииНаСервере();
КонецЕсли;
ИспользоватьСтатусы = ПолучитьФункциональнуюОпцию("ИспользоватьСтатусыЗаказовПоставщикам");
ЗакупкиСервер.УстановитьРежимВыбораГруппЭлементовСклада(Элементы.Склад);
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ГруппаОснование", "Видимость", ЗначениеЗаполнено(Объект.ДокументОснование));
Элементы.Склад.Видимость = ПолучитьФункциональнуюОпцию("ИспользоватьНесколькоСкладов");
Элементы.ТоварыГруппаОтменено.Видимость = ПолучитьФункциональнуюОпцию("ИспользоватьПричиныОтменыЗаказовПоставщикам");
Элементы.ТоварыОтмененоПричиныОтменыНеИспользуются.Видимость = Не ПолучитьФункциональнуюОпцию("ИспользоватьПричиныОтменыЗаказовПоставщикам");
Если Не ПолучитьФункциональнуюОпцию("ИспользоватьСкладыВТабличнойЧастиДокументовЗакупки") И Не ПолучитьФункциональнуюОпцию("ИспользоватьПодразделения") Тогда
Элементы.ТоварыГруппаПолучатель.Видимость = Ложь;
ИначеЕсли Не СкладГруппа Тогда
Элементы.ТоварыГруппаПолучатель.Заголовок = НСтр("ru = 'Подразделение-получатель'");
КонецЕсли;
Если КлиентскоеПриложение.ТекущийВариантИнтерфейса() = ВариантИнтерфейсаКлиентскогоПриложения.Версия8_2 Тогда
Элементы.ГруппаИтого.ЦветФона = Новый Цвет();
КонецЕсли;
Элементы.ЗакрытьЗаказ.Доступность = ПравоДоступа("Изменение",Метаданные.Документы.ЗаказПоставщику);
ВзаиморасчетыСервер.ФормаПриСозданииНаСервере(ЭтаФорма);
ОповеститьОСозданииОбъектаРасчетов = Параметры.ОповеститьОСозданииОбъектаРасчетов;
УстановитьДоступностьКомандБуфераОбмена();
ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПриСозданииНаСервере(ЭтотОбъект);
ПараметрыЭДОПриСоздании = ОбменСКонтрагентами.ПараметрыПриСозданииНаСервере_ФормаДокумента();
ПараметрыЭДОПриСоздании.Форма = ЭтотОбъект;
ПараметрыЭДОПриСоздании.ДокументССылка = Объект.Ссылка;
ПараметрыЭДОПриСоздании.КонтроллерСостояниеЭДО = Элементы.ДекорацияСостояниеЭДО;
ПараметрыЭДОПриСоздании.ГруппаСостояниеЭДО = Элементы.ГруппаСостояниеЭДО;
ПараметрыЭДОПриСоздании.МестоРазмещенияКоманд = Элементы.ПодменюЭДО;
ОбменСКонтрагентами.ПриСозданииНаСервере_ФормаДокумента(ПараметрыЭДОПриСоздании);
Элементы.ДекорацияСостояниеЭДО.Видимость = ПолучитьФункциональнуюОпцию("ИспользоватьОбменЭД");
ТорговыеПредложения.ПриСозданииПодсказокФормы(ЭтотОбъект, Элементы.ПодсказкиБизнесСеть);
СервисДоставки.ПриСозданииНаСервере(ЭтаФорма);
ПараметрыФормыДокумента = СопоставлениеНоменклатурыКонтрагентов.НовыеПараметрыПриСозданииФормыДокумента();
ПараметрыФормыДокумента.ИмяРеквизитаОрганизация = "Организация";
ПараметрыФормыДокумента.ИмяРеквизитаКонтрагент = "Контрагент";
ПараметрыФормыДокумента.ПредставлениеУчитыватьНоменклатуруВладельца = НСтр("ru = 'Учитывать номенклатуру поставщика'");
ПараметрыФормыДокумента.ИмяЭлементаНоменклатураКонтрагента = Элементы.ТоварыНоменклатураПартнера.Имя;
ПараметрыФормыДокумента.ВариантУказанияНоменклатурыПоУмолчанию =
СопоставлениеНоменклатурыКонтрагентовКлиентСервер.ВариантУказанияНоменклатураКонтрагента();
СопоставлениеНоменклатурыКонтрагентов.ПриСозданииФормыДокумента(ЭтотОбъект, ПараметрыФормыДокумента);
ПараметрыEDIПриСоздании = ДокументыEDIИнтеграция.ПараметрыПриСозданииФормыДокумента();
ПараметрыEDIПриСоздании.ФормаДокумента = ЭтотОбъект;
ПараметрыEDIПриСоздании.МестоРазмещенияКоманд = "ПодменюEDI";
НастройкиФормы = ПараметрыEDIПриСоздании.НастройкиФормы;
НастройкиФормы.ИмяРеквизитаОрганизация = "Организация";
НастройкиФормы.ИмяРеквизитаКонтрагент = "Контрагент";
НастройкиФормы.ИмяРеквизитаМенеджер = "Менеджер";
НастройкиФормы.ИмяГруппыФормыПанельСостояния = "ГруппаПанельСостоянияEDI";
НастройкиФормы.ИмяГруппыФормыПанельПротоколаВзаимодействия = "ГруппаПанельПротоколаВзаимодействия";
ДокументыEDIИнтеграция.ПриСозданииНаСервере(ПараметрыEDIПриСоздании);
EDIПриСозданииНаСервере(Отказ, СтандартнаяОбработка);
СобытияФорм.ПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка);
ПараметрыВыбораСтатейИАналитик = Документы.ЗаказПоставщику.ПараметрыВыбораСтатейИАналитик(Объект.ХозяйственнаяОперация);
ДоходыИРасходыСервер.ПриСозданииНаСервере(ЭтотОбъект, ПараметрыВыбораСтатейИАналитик);
ПараметрыПроцедуры = Новый Структура("ВариантОтображения", "Однострочный");
СПАРКРиски.ПриСозданииНаСервере(
ЭтотОбъект,
Неопределено,
Объект.Контрагент,
Перечисления.ЮрФизЛицо.ВидКонтрагентаСПАРКРиски(Объект.Контрагент),
ПараметрыПроцедуры);
ПараметрыГиперссылки = РаботаСФайлами.ГиперссылкаФайлов();
ПараметрыГиперссылки.Размещение = "КоманднаяПанель";
РаботаСФайлами.ПриСозданииНаСервере(ЭтотОбъект, ПараметрыГиперссылки);
ВариантОформленияДоговораЗакупок = ЗакупкиСервер.ПолучитьВариантОформленияДоговораЗакупок(Объект.Договор);
УчетНДСУП.УстановитьВидимостьКомандыЗаполнитьСтавкуНДС(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
УправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
ПриЧтенииСозданииНаСервере();
УправлениеСвойствами.ПриЧтенииНаСервере(ЭтаФорма, ТекущийОбъект);
ВзаиморасчетыСервер.ФормаПриЧтенииНаСервере(ЭтаФорма);
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
ПараметрыЭДОПриСоздании = ОбменСКонтрагентами.ПараметрыПриЧтенииНаСервере_ФормаДокумента();
ПараметрыЭДОПриСоздании.Форма = ЭтотОбъект;
ПараметрыЭДОПриСоздании.ДокументСсылка = Объект.Ссылка;
ПараметрыЭДОПриСоздании.МестоРазмещенияКоманд = Элементы.ПодменюЭДО;
ПараметрыЭДОПриСоздании.КонтроллерСостояниеЭДО = Элементы.ДекорацияСостояниеЭДО;
ПараметрыЭДОПриСоздании.ГруппаСостояниеЭДО = Элементы.ГруппаСостояниеЭДО;
ОбменСКонтрагентами.ПриЧтенииНаСервере_ФормаДокумента(ПараметрыЭДОПриСоздании);
ДокументыEDIИнтеграция.ПриЧтенииНаСервере(ЭтотОбъект);
ПараметрыВыбораСтатей = Документы.ЗаказПоставщику.ПараметрыВыбораСтатейИАналитик(Объект.ХозяйственнаяОперация);
ДоходыИРасходыСервер.ПриЧтенииНаСервере(ЭтаФорма, ПараметрыВыбораСтатей);
СобытияФорм.ПриЧтенииНаСервере(ЭтаФорма, ТекущийОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
Если НеВыполнятьПроверкуПередЗаписью Тогда
НеВыполнятьПроверкуПередЗаписью = Ложь;
Возврат;
КонецЕсли;
Если ПараметрыЗаписи.РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда
Отказ = Истина;
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ПараметрыЗаписи", ПараметрыЗаписи);
МногооборотнаяТараКлиент.ПредложитьПодобратьМногооборотнуюТару(
ЭтаФорма,
"Товары",
"Номенклатура,Характеристика,Количество,Склад,ДатаПоступления",
Новый ОписаниеОповещения("ПередЗаписьюПредложитьПодобратьМногооборотнуюТаруЗавершение", ЭтотОбъект, ДополнительныеПараметры));
Возврат;
КонецЕсли;
ОбщегоНазначенияУТКлиент.ЗаписатьОбъектПриНеобходимости(ЭтотОбъект, ПараметрыЗаписи, Отказ);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗаписьюПредложитьПодобратьМногооборотнуюТаруЗавершение(Результат, ДополнительныеПараметры) Экспорт
ПередЗаписьюПредложитьПодобратьМногооборотнуюТаруЗавершениеНаСервере();
Если Не Объект.ПоступлениеОднойДатой Тогда
Отказ = Ложь;
ЭтапыОплатыКлиент.ПредложитьЗаполнитьГрафикОплатПоУмолчанию(
ЭтотОбъект,
Новый ОписаниеОповещения(
"ПередЗаписьюПредложитьЗаполнитьГрафикОплатПоУмолчаниюЗавершение",
ЭтотОбъект,
ДополнительныеПараметры),
Отказ);
Если Отказ Тогда
Возврат;
КонецЕсли;
КонецЕсли;
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
Если ЗначениеЗаполнено(Объект.ЖелаемаяДатаПоступления) Тогда
МаксДатаАванса = ПродажиКлиент.МаксимальнаяДатаАванса(Объект.ЭтапыГрафикаОплаты);
Если ЗначениеЗаполнено(МаксДатаАванса) И МаксДатаАванса > Объект.ЖелаемаяДатаПоступления Тогда
Объект.ЖелаемаяДатаПоступления = МаксДатаАванса;
КонецЕсли;
КонецЕсли;
ОбщегоНазначенияУТКлиент.ЗаписатьОбъектПриНеобходимости(ЭтотОбъект, ДополнительныеПараметры.ПараметрыЗаписи,,Истина);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗаписьюПредложитьЗаполнитьГрафикОплатПоУмолчаниюЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат = КодВозвратаДиалога.Да Тогда
Объект.ЭтапыГрафикаОплаты.Очистить();
КонецЕсли;
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
Если ЗначениеЗаполнено(Объект.ЖелаемаяДатаПоступления) Тогда
МаксДатаАванса = ПродажиКлиент.МаксимальнаяДатаАванса(Объект.ЭтапыГрафикаОплаты);
Если ЗначениеЗаполнено(МаксДатаАванса) И МаксДатаАванса > Объект.ЖелаемаяДатаПоступления Тогда
Объект.ЖелаемаяДатаПоступления = МаксДатаАванса;
КонецЕсли;
КонецЕсли;
ОбщегоНазначенияУТКлиент.ЗаписатьОбъектПриНеобходимости(ЭтотОбъект, ДополнительныеПараметры.ПараметрыЗаписи,,Истина);
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюПредложитьПодобратьМногооборотнуюТаруЗавершениеНаСервере()
ЗаполнитьПустыеДатыПоступленияСервер();
ВзаиморасчетыВызовСервера.ФормаПередЗаписьюНаКлиентеСервер(ЭтаФорма);
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
УправлениеСвойствами.ПередЗаписьюНаСервере(ЭтаФорма, ТекущийОбъект);
ВзаиморасчетыСервер.ПередЗаписьюНаСервере(ЭтаФорма, ТекущийОбъект);
МодификацияКонфигурацииПереопределяемый.ПередЗаписьюНаСервере(ЭтаФорма, Отказ, ТекущийОбъект, ПараметрыЗаписи);
ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПередЗаписьюНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
КонецПроцедуры
&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
УправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
УстановитьДоступностьЭлементовПоСтатусуСервер();
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются", Новый Структура("Номенклатура", "ХарактеристикиИспользуются"));
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекЗаполненияСлужебныхРеквизитовТабличнойЧасти(СтруктураДействий);
НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(Объект.Товары, СтруктураДействий);
ОбновитьОбязательностьСкладаВТЧ();
ЗаполнитьСлужебныеРеквизитыПоНазначениюВТЧ();
ОбновитьДубликатыЗависимыхРеквизитов();
ВзаиморасчетыСервер.ФормаПослеЗаписиНаСервере(ЭтаФорма, ТекущийОбъект.ДополнительныеСвойства);
ПараметрыПослеЗаписи = ОбменСКонтрагентами.ПараметрыПослеЗаписиНаСервере();
ПараметрыПослеЗаписи.Форма = ЭтотОбъект;
ПараметрыПослеЗаписи.ДокументСсылка = Объект.Ссылка;
ПараметрыПослеЗаписи.КонтроллерСостояниеЭДО = Элементы.ДекорацияСостояниеЭДО;
ПараметрыПослеЗаписи.ГруппаСостояниеЭДО = Элементы.ГруппаСостояниеЭДО;
ОбменСКонтрагентами.ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи, ПараметрыПослеЗаписи);
СПАРКРиски.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
СостоянияДокументов.ПослеЗаписиНаСервере(
ЭтотОбъект,
ПараметрыЗаписи,,,
ПравоДоступа("Чтение", Метаданные.РегистрыНакопления.РасчетыСПоставщиками));
Если СостоянияДокументов.ПроверкаЗаданияКОтражениюСостоянияЗаказовНеЗапущена(ЭтотОбъект) Тогда
ОбновитьСостояниеСервер();
КонецЕсли;
ДоходыИРасходыСервер.ПослеЗаписиНаСервере(ЭтотОбъект);
РазблокироватьДанныеФормыДляРедактирования();
СобытияФорм.ПослеЗаписиНаСервере(ЭтаФорма, ТекущийОбъект, ПараметрыЗаписи);
ОбеспечениеВДокументахСервер.ПроверитьЗапуститьФоновоеЗаданиеРаспределенияЗапасов();
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если Источник = "ПодключаемоеОборудование" И ВводДоступен() Тогда
Если ИмяСобытия = "ScanData" И МенеджерОборудованияУТКлиент.ЕстьНеобработанноеСобытие() Тогда
ОбработатьШтрихкоды(МенеджерОборудованияУТКлиент.ПреобразоватьДанныеСоСканераВМассив(Параметр));
КонецЕсли;
КонецЕсли;
Если Источник = "ПодключаемоеОборудование"
И ИмяСобытия = "НеизвестныеШтрихкоды"
И Параметр.ФормаВладелец = УникальныйИдентификатор Тогда
КэшированныеЗначения.Штрихкоды.Очистить();
ДанныеШтрихкодов = Новый Массив;
Для Каждого ПолученныйШтрихкод Из Параметр.ПолученыНовыеШтрихкоды Цикл
ДанныеШтрихкодов.Добавить(ПолученныйШтрихкод);
КонецЦикла;
Для Каждого ПолученныйШтрихкод Из Параметр.ЗарегистрированныеШтрихкоды Цикл
ДанныеШтрихкодов.Добавить(ПолученныйШтрихкод);
КонецЦикла;
ОбработатьШтрихкоды(ДанныеШтрихкодов);
КонецЕсли;
Если УправлениеСвойствамиКлиент.ОбрабатыватьОповещения(ЭтаФорма, ИмяСобытия, Параметр) Тогда
ОбновитьЭлементыДополнительныхРеквизитов();
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
КонецЕсли;
ПараметрыОповещения = ОбменСКонтрагентамиКлиент.ПараметрыОповещенияЭДО_ФормаДокумента();
ПараметрыОповещения.Форма = ЭтотОбъект;
ПараметрыОповещения.ДокументСсылка = Объект.Ссылка;
ПараметрыОповещения.КонтроллерСостояниеЭДО = Элементы.ДекорацияСостояниеЭДО;
ПараметрыОповещения.ГруппаСостояниеЭДО = Элементы.ГруппаСостояниеЭДО;
ОбменСКонтрагентамиКлиент.ОбработкаОповещения_ФормаДокумента(ИмяСобытия, Параметр, Источник, ПараметрыОповещения);
СПАРКРискиКлиент.ОбработкаОповещения(ЭтотОбъект, Неопределено, ИмяСобытия, Параметр, Источник);
Если ВзаиморасчетыКлиент.НуженВызовОбработкиОповещения(ЭтаФорма, ИмяСобытия, Параметр) Тогда
ЗачтенаОплатаСервер(ИмяСобытия, Параметр, Источник);
КонецЕсли;
Если ИмяСобытия = "ОбновитьДокументИБПослеЗаполнения" И Параметр.Найти(Объект.Ссылка) <> Неопределено Тогда
ЭтаФорма.Прочитать();
ИначеЕсли ИмяСобытия = "ОбновитьДокументИБПослеЗаполненияИзФайла" И Параметр.Найти(Объект.Ссылка) <> Неопределено Тогда
ПриЧтенииСозданииНаСервере();
КонецЕсли;
Если ИмяСобытия = "ИзмененРеквизитЗависящийОтСтатуса"
И Параметр.УникальныйИдентификатор = УникальныйИдентификатор Тогда
Если Объект.Согласован Тогда
Объект.Согласован = Ложь;
КонецЕсли;
ПодключитьОбработчикОжидания("Подключаемый_ПриИзмененииРеквизитаЗависящегоОтСтатуса", 0.1, Истина);
КонецЕсли;
Если ИмяСобытия = "Запись_СоглашенияСПоставщиками" Тогда
УстановитьДоступностьСоглашений();
ОбновитьСводнуюИнформациюПоДоставке();
КонецЕсли;
Если ИмяСобытия = "КопированиеСтрокВБуферОбмена" Тогда
УстановитьДоступностьКомандБуфераОбменаНаКлиенте();
КонецЕсли;
ДокументыEDIИнтеграцияКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия, Параметр, Источник);
СобытияФормКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия, Параметр, Источник);
РаботаСФайламиКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия);
Если ИмяСобытия = "ПриИзмененииДоговора"
И Источник = ЭтотОбъект Тогда
Модифицированность = Истина;
Если ЗначениеЗаполнено(Объект.Ссылка) Тогда
Подключаемый_ПриИзменении_УстановитьДоступностьЭлементовПоСтатусуСервер(Элементы[Параметр]);
Иначе
ДоговорПриИзменении(Элементы[Параметр]);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаНавигационнойСсылки(НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СобытияФормКлиент.ОбработкаНавигационнойСсылки(ЭтотОбъект, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
МенеджерОборудованияКлиент.НачатьПодключениеОборудованиеПриОткрытииФормы(Неопределено, ЭтаФорма, "СканерШтрихкода");
ОбменСКонтрагентамиКлиент.ПриОткрытии(ЭтотОбъект);
СПАРКРискиКлиент.ПриОткрытии(ЭтотОбъект, Неопределено);
ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
ТорговыеПредложенияКлиент.ОбновитьПодсказкуФормы(ЭтотОбъект);
ДокументыEDIИнтеграцияКлиент.ПриОткрытии(ЭтотОбъект);
РаботаСФайламиКлиент.ПриОткрытии(ЭтотОбъект, Отказ);
ПодключитьОбработчикОжиданияПолучениеПеревозчиков();
КонецПроцедуры
&НаКлиенте
Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка)
ПринудительноЗакрытьФорму = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ПриЗакрытии(ЗавершениеРаботы)
МенеджерОборудованияКлиент.НачатьОтключениеОборудованиеПриЗакрытииФормы(Неопределено, ЭтаФорма);
Если Не ЗавершениеРаботы
И ЗначениеЗаполнено(Объект.Ссылка)
И ОповеститьОСозданииОбъектаРасчетов Тогда
ВзаиморасчетыКлиент.ФормаПриЗакрытии(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПередЗагрузкойДанныхИзНастроекНаСервере(Настройки)
СкрыватьОтмененныеСтроки = Настройки.Получить("СкрыватьОтмененныеСтроки");
ТоварыОбновитьОтборСтрокПоОтмененным(ЭтаФорма, СкрыватьОтмененныеСтроки, Истина);
Если НЕ Объект.Ссылка.Пустая() Тогда
Настройки.Удалить("Объект.ПоступлениеОднойДатой");
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПриЗагрузкеДанныхИзНастроекНаСервере(Настройки)
УстановитьВидимостьЭлементовФормыДатПоступления();
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)
Если ИсточникВыбора.ИмяФормы = "Обработка.ПодборТоваровВДокументЗакупки.Форма.Форма" Тогда
ОбработкаВыбораПодборНаСервере(ВыбранноеЗначение);
ИначеЕсли ИсточникВыбора.ИмяФормы = "Обработка.ПодборМногооборотнойТары.Форма.Форма" Тогда
ЗаполнитьМногооборотнуюТаруИзХранилищаСервер(ВыбранноеЗначение.АдресМногооборотнойТарыВХранилище);
МногооборотнаяТараКлиент.ОповеститьПользователяОЗаполненииМногооборотнойТарой();
ИначеЕсли ИсточникВыбора.ИмяФормы = "Справочник.СтруктураПредприятия.Форма.ФормаВыбора" Тогда
ВыделенныеСтроки = Элементы.Товары.ВыделенныеСтроки;
Для Каждого Строка Из ВыделенныеСтроки Цикл
ДанныеСтроки = Объект.Товары.НайтиПоИдентификатору(Строка);
Если (ДанныеСтроки.ТипНоменклатуры = ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Товар") Или
ДанныеСтроки.ТипНоменклатуры = ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.МногооборотнаяТара"))
И (Не ДанныеСтроки.СписатьНаРасходы Или ЗначениеЗаполнено(ДанныеСтроки.Назначение)) Тогда
Продолжить;
КонецЕсли;
ДанныеСтроки.Подразделение = ВыбранноеЗначение;
КонецЦикла;
ИначеЕсли ИсточникВыбора.ИмяФормы = "Обработка.ПомощникЗакрытияЗаказов.Форма.ФормаЗакрытия" Тогда
СкорректироватьСтрокиЗаказа(ВыбранноеЗначение);
КонецЕсли;
УстановитьПризнакЗаполненияСклада();
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
Оповестить("Запись_ЗаказПоставщику", ПараметрыЗаписи, Объект.Ссылка);
ОбменСКонтрагентамиКлиент.ПослеЗаписи_ФормаДокумента(ЭтаФорма, ПараметрыЗаписи);
МодификацияКонфигурацииКлиентПереопределяемый.ПослеЗаписи(ЭтаФорма, ПараметрыЗаписи);
ОбщегоНазначенияУТКлиент.ВыполнитьДействияПослеЗаписи(ЭтаФорма, Объект, ПараметрыЗаписи);
ДокументыEDIИнтеграцияКлиент.ПослеЗаписи(ЭтотОбъект, ПараметрыЗаписи);
ВзаиморасчетыКлиент.ФормаПослеЗаписи(ЭтаФорма);
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда
МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент");
МодульПодключаемыеКомандыКлиент.ПослеЗаписи(ЭтотОбъект, Объект, ПараметрыЗаписи);
КонецЕсли;
СостоянияДокументовКлиент.ПослеЗаписи(ЭтотОбъект, "Подключаемый_ПроверитьЗаданияКОтражениюСостоянияЗаказов");
КонецПроцедуры
&НаСервере
Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
УправлениеСвойствами.ОбработкаПроверкиЗаполнения(ЭтаФорма, Отказ, ПроверяемыеРеквизиты);
КонецПроцедуры
&НаСервере
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
СопоставлениеНоменклатурыКонтрагентов.ПриЗаписиНаСервереФормыДокумента(ЭтаФорма, ТекущийОбъект, Отказ);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура ГруппаСтраницыПриСменеСтраницы(Элемент, ТекущаяСтраница)
Если ТекущаяСтраница.Имя = "ГруппаДополнительно"
И Не ЭтотОбъект.ПараметрыСвойств.ВыполненаОтложеннаяИнициализация Тогда
СвойстваВыполнитьОтложеннуюИнициализацию();
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
КонецЕсли;
ВзаиморасчетыКлиент.ОбновитьТекстГиперссылкиЭтапыОплаты(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура СоглашениеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтруктураДополнительногоОтбора = Новый Структура();
Если ХозяйственныеОперацииРаздельнойЗакупки().Найти(Объект.ХозяйственнаяОперация) <> Неопределено Тогда
СтруктураДополнительногоОтбора.Вставить("ИспользуютсяДоговорыКонтрагентов", Истина);
КонецЕсли;
ЗакупкиКлиент.НачалоВыбораСоглашенияСПоставщиком(
Элемент,
СтандартнаяОбработка,
Объект.Партнер,
Объект.Соглашение,
Объект.Дата,
СтруктураДополнительногоОтбора);
КонецПроцедуры
&НаКлиенте
Процедура СоглашениеАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)
Если ХозяйственныеОперацииРаздельнойЗакупки().Найти(Объект.ХозяйственнаяОперация) <> Неопределено Тогда
ПараметрыПолученияДанных.Отбор.Вставить("ИспользуютсяДоговорыКонтрагентов", Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПартнерПриИзменении(Элемент)
Если Не ЗначениеЗаполнено(Объект.Партнер) Тогда
ПартнерОчисткаСервер();
Объект.Соглашение = ПредопределенноеЗначение("Справочник.СоглашенияСПоставщиками.ПустаяСсылка");
ДоставкаТоваровКлиентСервер.ОчиститьРеквизитыДоставки(Элементы,Объект);
Возврат;
КонецЕсли;
ПартнерПриИзмененииСервер();
ЭтотОбъект.ИндексыСПАРКРиски = Неопределено;
ОбновитьОтображениеИндексыСПАРК();
Если ЗначениеЗаполнено(Объект.Соглашение) И Объект.Товары.Итог("Цена")<>0 Тогда
ЦеныПредприятияЗаполнениеКлиент.ЗадатьВопросПересчетаЦеныПриИзмененииДаты(Объект,
Новый ОписаниеОповещения("ПартнерПриИзмененииВопросЗавершение", ЭтотОбъект));
КонецЕсли;
ДокументыEDIИнтеграцияКлиент.ПриИзмененииКлючевыхРеквизитовДокумента(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПартнерПриИзмененииВопросЗавершение(ОтветНаВопрос, ДополнительныеПараметры) Экспорт
Если ЗначениеЗаполнено(Объект.Соглашение) Тогда
Если НЕ ОтветНаВопрос = КодВозвратаДиалога.Отмена И ОтветНаВопрос Тогда
ТекстОшибки = "";
ЦеныРассчитаны = ЗаполнитьЦеныПоСоглашениюСервер(Истина, ТекстОшибки);
ЗакупкиКлиент.ОповеститьОбОкончанииЗаполненияЦенПоСоглашению(ЦеныРассчитаны, ТекстОшибки);
КонецЕсли;
ЗакупкиКлиент.ОповеститьОбОкончанииЗаполненияУсловийЗакупокПоУмолчанию();
КонецЕсли;
СопоставлениеНоменклатурыКонтрагентовКлиент.ПриИзмененииКлючевыхРеквизитовДокумента(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура СоглашениеПриИзменении(Элемент)
Если Не ЗначениеЗаполнено(Объект.Соглашение) Тогда
СоглашениеОчисткаСервер();
Иначе
ЦеныПредприятияЗаполнениеКлиент.ЗадатьВопросПересчетаЦеныПриИзмененииДаты(Объект,
Новый ОписаниеОповещения("СоглашениеПриИзмененииВопросЗавершение", ЭтотОбъект));
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СоглашениеПриИзмененииВопросЗавершение(ОтветНаВопрос, ДополнительныеПараметры) Экспорт
СоглашениеПриИзмененииСервер(
ЗначениеЗаполнено(Объект.Соглашение)
И Объект.Товары.Количество() > 0
И НЕ ОтветНаВопрос = КодВозвратаДиалога.Отмена
И ОтветНаВопрос);
Если ЗначениеЗаполнено(Объект.Соглашение) Тогда
ЗакупкиКлиент.ОповеститьОбОкончанииЗаполненияУсловийЗакупок();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СтатусПриИзменении(Элемент)
Если Объект.Согласован И
Объект.Статус <> ПредопределенноеЗначение("Перечисление.СтатусыЗаказовПоставщикам.Согласован")
И Объект.Статус <> ПредопределенноеЗначение("Перечисление.СтатусыЗаказовПоставщикам.Подтвержден")
И Объект.Статус <> ПредопределенноеЗначение("Перечисление.СтатусыЗаказовПоставщикам.Закрыт") Тогда
Объект.Согласован = Ложь;
КонецЕсли;
СтатусПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура НалогообложениеНДСПриИзменении(Элемент)
НалогообложениеНДСПриИзмененииСервер(КэшированныеЗначения);
КонецПроцедуры
&НаКлиенте
Процедура ЦенаВключаетНДСПриИзменении(Элемент)
ЦенаВключаетНДСПриИзмененииСервер(КэшированныеЗначения);
КонецПроцедуры
&НаКлиенте
Процедура ВалютаПриИзменении(Элемент)
Если ЗначениеЗаполнено(Объект.Валюта) Тогда
ПересчитатьСуммы = ЦенообразованиеКлиент.НеобходимПересчетВВалюту(Объект,ВалютаДокумента);
ВалютаПриИзмененииСервер(
Объект.Валюта,
ПересчитатьСуммы);
Если ПересчитатьСуммы Тогда
ЦенообразованиеКлиент.ОповеститьОбОкончанииПересчетаСуммВВалюту(ВалютаДокумента, Объект.Валюта);
КонецЕсли;
КонецЕсли;
ВалютаДокумента = Объект.Валюта;
КонецПроцедуры
&НаКлиенте
Процедура КонтрагентПриИзменении(Элемент)
КонтрагентПриИзмененииСервер();
ЭтотОбъект.ИндексыСПАРКРиски = Неопределено;
ОбновитьОтображениеИндексыСПАРК();
ДокументыEDIИнтеграцияКлиент.ПриИзмененииКлючевыхРеквизитовДокумента(ЭтотОбъект);
СопоставлениеНоменклатурыКонтрагентовКлиент.ПриИзмененииКлючевыхРеквизитовДокумента(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ОрганизацияПриИзменении(Элемент)
ОрганизацияПриИзмененииСервер();
ДокументыEDIИнтеграцияКлиент.ПриИзмененииКлючевыхРеквизитовДокумента(ЭтотОбъект);
СопоставлениеНоменклатурыКонтрагентовКлиент.ПриИзмененииКлючевыхРеквизитовДокумента(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ДоговорСоздание(Элемент, СтандартнаяОбработка)
ЗакупкиКлиент.ОткрытьФормуСозданияДоговора(ЭтотОбъект, Элемент, "Объект.Договор", Объект.Партнер, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ДоговорПриИзменении(Элемент)
ДоговорПриИзмененииСервер();
ДокументыEDIИнтеграцияКлиент.ПриИзмененииКлючевыхРеквизитовДокумента(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ХозяйственнаяОперацияПриИзменении(Элемент)
ХозяйственнаяОперацияПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура СкладПриИзменении(Элемент)
СкладПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура ДатаПриИзменении(Элемент)
Оповещение = Новый ОписаниеОповещения("ДатаПриИзмененииЗавершение", ЭтотОбъект);
ЦеныПредприятияЗаполнениеКлиент.ЗадатьВопросПересчетаЦеныПриИзмененииДаты(Объект, Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ДатаПриИзмененииЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
Если НЕ РезультатВопроса = КодВозвратаДиалога.Отмена И РезультатВопроса Тогда
ПересчитыватьЦены = Истина;
ЦеныРассчитаны = ДатаПриИзмененииСервер(ПересчитыватьЦены);
Если ПересчитыватьЦены Тогда
ЗакупкиКлиент.ОповеститьОбОкончанииЗаполненияЦенПоСоглашению(ЦеныРассчитаны);
КонецЕсли;
Иначе
ДатаПриИзмененииСервер(Ложь);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОперацияССамозанятымПриИзменении(Элемент)
ОперацияССамозанятымПриИзмененииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура ДатаСогласованияПриИзменении(Элемент)
ДатаСогласованияПриИзмененииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура ДатаОтгрузкиПриИзменении(Элемент)
ДатаОтгрузкиПриИзмененииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура ПоступлениеОднойДатойПриИзменении(Элемент)
ПоступлениеОднойДатойПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура ДатаПоступленияПриИзменении(Элемент)
ДатаПоступленияПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура ДлительностьДоставкиПриИзменении(Элемент)
ДлительностьДоставкиПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура НомерВходящегоДокументаОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, СтандартнаяОбработка)
ПроверитьНаличиеЗаказовПоДаннымПоставщика(Текст);
КонецПроцедуры
&НаКлиенте
Процедура ТребуетсяЗалогЗаТаруПриИзменении(Элемент)
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура МенеджерПриИзменении(Элемент)
ЗаполнитьПодчиненныеСвойстваПоСтатистике("Менеджер");
КонецПроцедуры
&НаКлиенте
Процедура ДекорацияСервисДоставкиСоздатьНажатие(Элемент)
СервисДоставкиКлиентПереопределяемый.ОткрытьФормуНовогоЗаказаНаДоставку(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ДекорацияСервисДоставкиСписокЗаказовНажатие(Элемент)
СервисДоставкиКлиент.ОткрытьФормуСервисаДоставкиИзОснования(ЭтотОбъект, Объект.Ссылка);
КонецПроцедуры
&НаКлиенте
Процедура ДекорацияСервисДоставкиДобавитьВЗаказНаДоставкуНажатие(Элемент)
СервисДоставкиКлиент.ОткрытьФормуСервисаДоставкиИзОснования(ЭтотОбъект, Объект.Ссылка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ДекорацияСервисДоставкиОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("Форма", ЭтотОбъект);
ПараметрыОткрытия.Вставить("ДокументОснование", Объект.Ссылка);
СервисДоставкиКлиент.ОткрытьФормуПодчиненныхЗаказовНаДоставку(ПараметрыОткрытия);
КонецПроцедуры
&НаКлиенте
Процедура АдресДоставкиДляПоставщикаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ОткрытьФормуВыбораКонтактнойИнформации(Элемент, ДанныеВыбора, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура АдресДоставкиДляПоставщика2НачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ОткрытьФормуВыбораКонтактнойИнформации(Элемент, ДанныеВыбора, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура СпособМестоДоставкиПеревозчикПриИзменении(Элемент)
ЗаполнитьУстановитьРеквизитыДоставкиСервер(Элемент.Имя);
КонецПроцедуры
&НаКлиенте
Процедура АдресДоставкиПриИзменении(Элемент)
ОбработатьИзменениеАдреса(Элемент, "АдресДоставки");
КонецПроцедуры
&НаКлиенте
Процедура АдресДоставкиОчистка(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ИменаРеквизитовАдресовДоставки = ДоставкаТоваровКлиентСервер.ИменаРеквизитовАдресовДоставки("АдресДоставки");
ДоставкаТоваровКлиент.ОчиститьПредставлениеАдреса(
Объект[ИменаРеквизитовАдресовДоставки.ИмяРеквизитаАдресаДоставки],
Объект[ИменаРеквизитовАдресовДоставки.ИмяРеквизитаАдресаДоставкиЗначенияПолей],
Объект[ИменаРеквизитовАдресовДоставки.ИмяРеквизитаАдресаДоставкиЗначение]);
КонецПроцедуры
&НаКлиенте
Процедура АдресДоставкиНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ИменаРеквизитовАдресовДоставки = ДоставкаТоваровКлиентСервер.ИменаРеквизитовАдресовДоставки("АдресДоставки");
ДоставкаТоваровКлиент.ОткрытьФормуВыбораАдресаИОбработатьРезультат(
Элемент,
Объект,
ИменаРеквизитовАдресовДоставки,
СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура АдресДоставкиОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ДоставкаТоваровКлиент.АдресДоставкиОбработкаВыбора(Элементы, Объект, Элемент.Имя, ВыбранноеЗначение);
Модифицированность = Истина;
КонецПроцедуры
&НаКлиенте
Процедура АдресДоставкиПеревозчикаПриИзменении(Элемент)
ОбработатьИзменениеАдреса(Элемент, "АдресДоставкиПеревозчика");
КонецПроцедуры
&НаКлиенте
Процедура АдресДоставкиПеревозчикаОчистка(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ИменаРеквизитовАдресовДоставки = ДоставкаТоваровКлиентСервер.ИменаРеквизитовАдресовДоставки("АдресДоставкиПеревозчика");
ДоставкаТоваровКлиент.ОчиститьПредставлениеАдреса(
Объект[ИменаРеквизитовАдресовДоставки.ИмяРеквизитаАдресаДоставки],
Объект[ИменаРеквизитовАдресовДоставки.ИмяРеквизитаАдресаДоставкиЗначенияПолей],
Объект[ИменаРеквизитовАдресовДоставки.ИмяРеквизитаАдресаДоставкиЗначение]);
КонецПроцедуры
&НаКлиенте
Процедура АдресДоставкиПеревозчикаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ИменаРеквизитовАдресовДоставки = ДоставкаТоваровКлиентСервер.ИменаРеквизитовАдресовДоставки("АдресДоставкиПеревозчика");
ДоставкаТоваровКлиент.ОткрытьФормуВыбораАдресаИОбработатьРезультат(
Элемент,
Объект,
ИменаРеквизитовАдресовДоставки,
СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура АдресДоставкиПеревозчикаОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ДоставкаТоваровКлиент.АдресДоставкиОбработкаВыбора(Элементы, Объект, Элемент.Имя, ВыбранноеЗначение);
Модифицированность = Истина;
КонецПроцедуры
&НаКлиенте
Процедура НаправлениеДеятельностиПриИзменении(Элемент)
ОценкаПроизводительностиКлиент.НачатьЗамерВремени(
Истина, "Документ.ЗаказПоставщику.Форма.ФормаДокумента.Элемент.НаправлениеДеятельности.ПриИзменении");
НаправлениеДеятельностиПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура ДекорацияЭДОНажатие(Элемент, СтандартнаяОбработка)
ОбменСКонтрагентамиКлиент.СостояниеЭДОНажатие_ФормаДокумента(ЭтотОбъект, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура СостояниеНажатие(Элемент, СтандартнаяОбработка)
ПродажиКлиент.СостояниеВФормеДокументаНажатие(СтандартнаяОбработка, ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ЗакупкаПодДеятельностьОчистка(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
КонецПроцедуры
&НаКлиенте
Процедура ПодразделениеПриИзменении(Элемент)
ЗаполнитьВидДеятельностиНДС();
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбработкаНавигационнойСсылкиEDI(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
ДокументыEDIИнтеграцияКлиент.ОбработкаНавигационнойСсылки(ЭтотОбъект, Элемент, НавигационнаяСсылкаФорматированнойСтроки,
СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПротоколВзаимодействияПриНажатии(Элемент, ДанныеСобытия, СтандартнаяОбработка)
ДокументыEDIИнтеграцияКлиент.ПротоколВзаимодействияПриНажатии(ЭтотОбъект, ДанныеСобытия, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПротоколВзаимодействияДокументСформирован(Элемент)
ДокументыEDIИнтеграцияКлиент.ПротоколВзаимодействияДокументСформирован(ЭтотОбъект, Элемент);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыТовары
&НаКлиенте
Процедура ТоварыПередУдалением(Элемент, Отказ)
РаботаСТабличнымиЧастямиКлиент.КэшироватьТекущуюСтроку(Элементы.Товары, ЭтотОбъект);
ВзаиморасчетыКлиент.ТабличнаяЧастьПередУдалением(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
РаботаСТабличнымиЧастямиКлиент.КэшироватьТекущуюСтроку(Элементы.Товары, ЭтотОбъект);
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
Если НоваяСтрока Тогда
ТекущиеДанные.КодСтроки = 0;
Если Объект.ПоступлениеОднойДатой Тогда
ТекущиеДанные.ДатаОтгрузки = Объект.ДатаОтгрузки;
КонецЕсли;
КонецЕсли;
Если НоваяСтрока И Не Копирование Тогда
ТекущиеДанные.Подразделение = Объект.Подразделение;
КонецЕсли;
ДоходыИРасходыКлиентСервер.ПриДобавленииСтрокиВТаблицу(ЭтотОбъект, ТекущиеДанные, "Объект.Товары");
ВзаиморасчетыКлиент.ТабличнаяЧастьПриНачалеРедактирования(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
Если ТекущиеДанные <> Неопределено И Объект.ПоступлениеОднойДатой Тогда
ТекущиеДанные.ДатаПоступления = Объект.ДатаПоступления;
КонецЕсли;
МногооборотнаяТараКлиент.ОбновитьСостояниеЗаполненияМногооборотнойТары(Объект.СостояниеЗаполненияМногооборотнойТары);
Если Не ОтменаРедактирования Тогда
КэшСтроки = ?(НоваяСтрока, Неопределено, РаботаСТабличнымиЧастямиКлиентСервер.КэшСтроки(Элементы.Товары, ЭтотОбъект));
СкладыКлиент.ОбновитьТаблицуСкладов(ТаблицаСкладов, ТекущиеДанные, КэшСтроки, СкладГруппа);
ВсегоСкладов = ТаблицаСкладов.Количество();
СкладыКлиентСервер.ОбновитьКартинкуГруппыСкладов(НадписьНесколькоСкладов, Элементы.КартинкаНесколькоСкладов, ВсегоСкладов);
КонецЕсли;
УстановитьПризнакЗаполненияСклада();
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПослеУдаления(Элемент)
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
МногооборотнаяТараКлиент.ОбновитьСостояниеЗаполненияМногооборотнойТары(Объект.СостояниеЗаполненияМногооборотнойТары);
ПриИзмененииСкладаВТабличнойЧастиСервер();
УстановитьПризнакЗаполненияСклада();
КонецПроцедуры
&НаКлиенте
Процедура ТоварыВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
НоменклатураПартнеровКлиент.ПриВыбореНоменклатурыПартнера(Объект, Поле, "ТоварыНоменклатураПартнера", НСтр("ru = 'Поставщик'"));
КонецПроцедуры
&НаКлиенте
Процедура ТоварыНоменклатураПартнераПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
НоменклатураПартнеровКлиент.УстановитьПараметрыВыбораУпаковки(Элемент.ПараметрыВыбора, ТекущаяСтрока);
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПроверитьХарактеристикуПоВладельцу", ТекущаяСтрока.Характеристика);
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействий.Вставить("ПроверитьЗаполнитьУпаковкуПоВладельцу", ТекущаяСтрока.Упаковка);
СтруктураДействий.Вставить("ЗаполнитьНоменклатуруПоНоменклатуреПартнера");
СтруктураДействий.Вставить(
"ПроверитьЗаполнитьСклад",
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(
Объект,
СкладГруппа));
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц");
Если ИспользоватьСоглашенияСПоставщиками И ЗначениеЗаполнено(Объект.Соглашение) Тогда
СтруктураДействий.Вставить("ЗаполнитьУсловияЗакупок", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияЦеныЗакупкиВСтрокеТЧ(Объект));
Иначе
СтруктураДействий.Вставить("ЗаполнитьЦенуЗакупки", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияЦеныЗакупкиВСтрокеТЧ(Объект));
КонецЕсли;
ПараметрыЗаполненияСтавкиНДС = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект, Истина);
ПараметрыЗаполненияСтавкиНДС.УказаннаяСтавкаНДС = УказаннаяСтавкаНДС;
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", ПараметрыЗаполненияСтавкиНДС);
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Ложь));
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ЗаполнитьПризнакОтмененоБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
СтруктураДействий.Вставить("ПриИзмененииТипаНоменклатуры",
Новый Структура("ЕстьРаботы, ЕстьОтменено", Истина, Истина));
ДоходыИРасходыКлиентСервер.ВставитьДействиеОчиститьСтатьюИАналитикуРасходов(СтруктураДействий, ЭтотОбъект);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
Если ТекущаяСтрока.ТипНоменклатуры = ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Товар") Или
ТекущаяСтрока.ТипНоменклатуры = ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.МногооборотнаяТара") Или
ТекущаяСтрока.ТипНоменклатуры = ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Набор")
Или ЗначениеЗаполнено(ТекущаяСтрока.Назначение) Тогда
ТекущаяСтрока.СписатьНаРасходы = Ложь;
ТекущаяСтрока.Подразделение = ПредопределенноеЗначение("Справочник.СтруктураПредприятия.ПустаяСсылка");
ИначеЕсли ИспользоватьУчетПрочихДоходовРасходов
И ТекущаяСтрока.ТипНоменклатуры = ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Услуга") Тогда
ТекущаяСтрока.СписатьНаРасходы = Истина;
КонецЕсли;
ДоходыИРасходыКлиентСервер.ПриИзмененииРеквизитаДоступностиСтатьиВСтроке(ЭтотОбъект, ТекущаяСтрока, "Объект.Товары");
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
УстановитьПризнакЗаполненияСклада();
КонецПроцедуры
&НаКлиенте
Процедура ТоварыНоменклатураПриИзменении(Элемент)
ОчиститьСообщения();
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПроверитьХарактеристикуПоВладельцу", ТекущаяСтрока.Характеристика);
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействий.Вставить("ПроверитьЗаполнитьУпаковкуПоВладельцу", ТекущаяСтрока.Упаковка);
СтруктураДействий.Вставить("ЗаполнитьНоменклатуруПартнераПоНоменклатуре", Объект.Партнер);
СтруктураДействий.Вставить(
"ПроверитьЗаполнитьСклад",
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(
Объект,
СкладГруппа));
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц");
Если ИспользоватьСоглашенияСПоставщиками И ЗначениеЗаполнено(Объект.Соглашение) Тогда
СтруктураДействий.Вставить("ЗаполнитьУсловияЗакупок", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияЦеныЗакупкиВСтрокеТЧ(Объект));
Иначе
СтруктураДействий.Вставить("ЗаполнитьЦенуЗакупки", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияЦеныЗакупкиВСтрокеТЧ(Объект));
КонецЕсли;
ПараметрыЗаполненияСтавкиНДС = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект, Истина);
ПараметрыЗаполненияСтавкиНДС.УказаннаяСтавкаНДС = УказаннаяСтавкаНДС;
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", ПараметрыЗаполненияСтавкиНДС);
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Истина));
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ЗаполнитьПризнакОтмененоБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
СтруктураДействий.Вставить("ПриИзмененииТипаНоменклатуры",
Новый Структура("ЕстьРаботы, ЕстьОтменено", Истина, Истина));
Если КонтролироватьАссортимент Тогда
СтруктураПроверкиАссортимента = АссортиментКлиентСервер.ПараметрыПроверкиАссортимента();
СтруктураПроверкиАссортимента.Ссылка = Объект.Ссылка;
СтруктураПроверкиАссортимента.Склад = Объект.Склад;
СтруктураПроверкиАссортимента.Дата = ?(ЗначениеЗаполнено(Объект.ЖелаемаяДатаПоступления), Объект.ЖелаемаяДатаПоступления, Объект.Дата);
СтруктураПроверкиАссортимента.ТекстСообщения = НСтр("ru = 'Товар %1 не включен в ассортимент магазина. Заказывать его не рекомендуется.'");
СтруктураПроверкиАссортимента.ИмяРесурсаАссортимента = "РазрешеныЗакупки";
СтруктураПроверкиАссортимента.ПровереноМожноДобавлять = Истина;
СтруктураПроверкиАссортимента.РазрешатьДобавление = Истина;
СтруктураДействий.Вставить("ПроверитьАссортиментСтроки", СтруктураПроверкиАссортимента);
КонецЕсли;
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтаФорма, СтруктураДействий);
СтруктураДействий.Вставить("НоменклатураПриИзмененииПереопределяемый", Новый Структура("ИмяФормы, ИмяТабличнойЧасти",
ЭтаФорма.ИмяФормы, "Товары"));
ДоходыИРасходыКлиентСервер.ВставитьДействиеОчиститьСтатьюИАналитикуРасходов(СтруктураДействий, ЭтотОбъект);
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекЗаполненияСлужебныхРеквизитовТабличнойЧасти(СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
Если ТекущаяСтрока.ТипНоменклатуры = ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Товар") Или
ТекущаяСтрока.ТипНоменклатуры = ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.МногооборотнаяТара") Или
ТекущаяСтрока.ТипНоменклатуры = ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Набор")
Или ЗначениеЗаполнено(ТекущаяСтрока.Назначение) Тогда
ТекущаяСтрока.СписатьНаРасходы = Ложь;
ТекущаяСтрока.Подразделение = ПредопределенноеЗначение("Справочник.СтруктураПредприятия.ПустаяСсылка");
ИначеЕсли ИспользоватьУчетПрочихДоходовРасходов
И ТекущаяСтрока.ТипНоменклатуры = ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Услуга") Тогда
ТекущаяСтрока.СписатьНаРасходы = Истина;
КонецЕсли;
ДоходыИРасходыКлиентСервер.ПриИзмененииРеквизитаДоступностиСтатьиВСтроке(ЭтотОбъект, ТекущаяСтрока, "Объект.Товары");
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
УстановитьПризнакЗаполненияСклада();
КонецПроцедуры
&НаКлиенте
Процедура ТоварыХарактеристикаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьНоменклатуруПартнераПоНоменклатуре", Объект.Партнер);
Если ИспользоватьСоглашенияСПоставщиками И ЗначениеЗаполнено(Объект.Соглашение) Тогда
СтруктураДействий.Вставить("ЗаполнитьУсловияЗакупок", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияЦеныЗакупкиВСтрокеТЧ(Объект));
Иначе
СтруктураДействий.Вставить("ЗаполнитьЦенуЗакупки", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияЦеныЗакупкиВСтрокеТЧ(Объект));
КонецЕсли;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Истина));
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтаФорма, СтруктураДействий);
СтруктураДействий.Вставить("ХарактеристикаПриИзмененииПереопределяемый", Новый Структура("ИмяФормы, ИмяТабличнойЧасти",
ЭтаФорма.ИмяФормы, "Товары"));
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыУпаковкаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьНоменклатуруПартнераПоНоменклатуре", Объект.Партнер);
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц");
Если ТекущаяСтрока.Количество > 0 Тогда
СтруктураДействий.Вставить("ПересчитатьЦенуЗаУпаковку", ТекущаяСтрока.Количество);
Иначе
СтруктураДействий.Вставить("ЗаполнитьЦенуЗакупки", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияЦеныЗакупкиВСтрокеТЧ(Объект));
КонецЕсли;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Ложь));
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура КоличествоУпаковокПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, ЭтаФорма);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыЦенаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Ложь));
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСтавкаНДСПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Ложь));
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
УказаннаяСтавкаНДС = ТекущаяСтрока.СтавкаНДС;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСуммаНДСПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыВидЦеныПоставщикаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьЦенуЗакупки", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияЦеныЗакупкиВСтрокеТЧ(Объект));
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Ложь));
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПроцентРучнойСкидкиПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуРучнойСкидки");
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("ПересчитыватьСуммуРучнойСкидки", Ложь));
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСуммаРучнойСкидкиПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьПроцентРучнойСкидки");
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("ПересчитыватьСуммуРучнойСкидки", Ложь));
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСуммаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьЦенуСкидкуПоСуммеВЗакупках", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруПересчетаЦеныСкидкиВЗакупкахВТЧ(Объект, Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПриемНаКомиссию")));
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСтатьяРасходовПриИзменении(Элемент)
ДоходыИРасходыКлиентСервер.СтатьяПриИзменении(ЭтотОбъект, Элемент);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыОтмененоПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ЗаполнитьПризнакОтмененоБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
СтруктураДействий.Вставить("ПриИзмененииТипаНоменклатуры",
Новый Структура("ЕстьРаботы, ЕстьОтменено", Истина, Истина));
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
Если Не ТекущаяСтрока.Отменено Тогда
ТекущаяСтрока.ПричинаОтмены = ПредопределенноеЗначение("Справочник.ПричиныОтменыЗаказовПоставщикам.ПустаяСсылка");
КонецЕсли;
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
ТоварыОбновитьОтборСтрокПоОтмененным(ЭтаФорма, СкрыватьОтмененныеСтроки, Ложь);
УстановитьПризнакЗаполненияСклада();
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПриАктивизацииЯчейки(Элемент)
Если Элемент.ТекущийЭлемент = Неопределено Тогда
Возврат
ИначеЕсли Элемент.ТекущийЭлемент.Имя = "ТоварыНоменклатураПартнера" Тогда
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
НоменклатураПартнеровКлиент.ЗаполнитьСписокВыбораНоменклатурыПартнера(
Объект.Партнер, ТекущиеДанные, Элементы.ТоварыНоменклатураПартнера.СписокВыбора);
НоменклатураПартнеровКлиент.УстановитьПараметрыВыбораУпаковки(
Элементы.ТоварыНоменклатураПартнера.ПараметрыВыбора, ТекущиеДанные);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыНоменклатураПартнераНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ЭлементФормы" , Элемент);
ДополнительныеПараметры.Вставить("ТекущаяСтрока", ТекущаяСтрока);
ОповещениеОЗакрытие = Новый ОписаниеОповещения("ОбработатьРезультатВыбораНоменклатурыПартнера", ЭтотОбъект, ДополнительныеПараметры);
НоменклатураПартнеровКлиент.ОткрытьФормуВыбораНоменклатурыПартнера(ЭтотОбъект, Объект.Партнер, ТекущаяСтрока, Элемент.Заголовок, ОповещениеОЗакрытие);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыДатаОтгрузкиПриИзменении(Элемент)
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
Если ТекущиеДанные <> Неопределено Тогда
Если ЗначениеЗаполнено(ТекущиеДанные.ДатаОтгрузки) Тогда
ТекущиеДанные.ДатаПоступления = ТекущиеДанные.ДатаОтгрузки + 86400 * Объект.ДлительностьДоставки;
Иначе
ТекущиеДанные.ДатаПоступления = Дата(1,1,1);
КонецЕсли;
КонецЕсли;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект, Истина));
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущиеДанные, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиЗаказа(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСписатьНаРасходыПриИзменении(Элемент)
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
ДоходыИРасходыКлиентСервер.ПриИзмененииРеквизитаДоступностиСтатьиВСтроке(ЭтотОбъект, ТекущиеДанные, "Объект.Товары");
Если Не ТекущиеДанные.СписатьНаРасходы
И (ТекущиеДанные.ТипНоменклатуры = ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Товар")
Или ТекущиеДанные.ТипНоменклатуры = ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.МногооборотнаяТара")) Тогда
ТекущиеДанные.Подразделение = ПредопределенноеЗначение("Справочник.СтруктураПредприятия.ПустаяСсылка");
Если Не СкладГруппа Тогда
ТекущиеДанные.Склад = Объект.Склад;
КонецЕсли;
ИначеЕсли Не ЗначениеЗаполнено(ТекущиеДанные.Подразделение) Тогда
ТекущиеДанные.Подразделение = Объект.Подразделение;
ТекущиеДанные.Склад = ПредопределенноеЗначение("Справочник.Склады.ПустаяСсылка");
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПриИзменении(Элемент)
Если ВзаиморасчетыКлиент.ТабличнаяЧастьПриИзмененииЕстьИзменениеДатОтгрузок(ЭтотОбъект) Тогда
ТоварыПриИзмененииНаСервере();
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаСервере
Процедура ВыполнитьКомандуНаСервере(ПараметрыВыполнения)
ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, ПараметрыВыполнения, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПродолжитьВыполнениеКомандыНаСервере(ПараметрыВыполнения, ДополнительныеПараметры) Экспорт
ВыполнитьКомандуНаСервере(ПараметрыВыполнения);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_КомандаПанелиПрисоединенныхФайлов(Команда)
РаботаСФайламиКлиент.КомандаУправленияПрисоединеннымиФайлами(ЭтотОбъект, Команда);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПроверкаПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраПроверкаПеретаскивания(ЭтотОбъект, Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраПеретаскивание(ЭтотОбъект, Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраНажатие(Элемент, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраНажатие(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура АвтоТест_ЗаполнитьЦеныПоСоглашению(Команда) Экспорт
Если ЦеныПартнеровЗаполнениеКлиент.НеобходимоЗаполнениеЦенПоСоглашению(Объект, "Товары", НСтр("ru='Товары'")) Тогда
ТекстОшибки = "";
ЦеныРассчитаны = ЗаполнитьЦеныПоСоглашениюСервер(, ТекстОшибки);
ЗакупкиКлиент.ОповеститьОбОкончанииЗаполненияЦенПоСоглашению(ЦеныРассчитаны, ТекстОшибки);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьЦеныВыделенныхСтрокПоВидуЦеныПоставщика(Команда)
Если ЦеныПартнеровЗаполнениеКлиент.НеобходимоЗаполнениеЦенПоВидуЦенПоставщика(Объект, "Товары", НСтр("ru='Товары'")) Тогда
ЦеныПартнеровЗаполнениеКлиент.ВыбратьВидЦеныПоставщика(
Новый ОписаниеОповещения("ЗаполнитьЦеныВыделенныхСтрокВыборВидЦеныПоставщикаЗавершение", ЭтотОбъект),
Объект.Партнер,
Объект.ЦенаВключаетНДС);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьЦеныВыделенныхСтрокВыборВидЦеныПоставщикаЗавершение(ВидЦеныПоставщика, ДополнительныеПараметры) Экспорт
Если ЗначениеЗаполнено(ВидЦеныПоставщика) Тогда
ЦеныРассчитаны = ЗаполнитьЦеныВыделенныхСтрокПоВидуЦеныПоставщикаСервер(ВидЦеныПоставщика);
ЦеныПартнеровЗаполнениеКлиент.ОповеститьОбОкончанииЗаполненияЦенПоВидуЦеныПоставщика(ЦеныРассчитаны, ВидЦеныПоставщика);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура НазначитьРучнуюСкидкуДляВыделенныхСтрок(Команда)
Если Не СкидкиНаценкиЗаполнениеКлиент.ВозможноНазначениеРучнойСкидкиНаценки(Объект, "Товары", НСтр("ru='Товары'")) Тогда
Возврат;
КонецЕсли;
АдресВоВременномХранилище = АдресДанныхДляРасчетаРучныхСкидокВоВременномХранилище(Истина);
Оповещение = Новый ОписаниеОповещения(
"НазначитьРучнуюСкидкуДляВыделенныхСтрокЗавершение",
ЭтотОбъект,
Новый Структура("АдресВоВременномХранилище", АдресВоВременномХранилище));
СкидкиНаценкиЗаполнениеКлиент.ОткрытьФормуНазначенияРучныхСкидок(
АдресВоВременномХранилище,
Объект.Валюта,
Оповещение,
Истина);
КонецПроцедуры
&НаКлиенте
Процедура НазначитьРучнуюСкидкуДляВыделенныхСтрокЗавершение(СуммаРучнойСкидкиНаценки, ДополнительныеПараметры) Экспорт
АдресВоВременномХранилище = ДополнительныеПараметры.АдресВоВременномХранилище;
Если СуммаРучнойСкидкиНаценки <> Неопределено Тогда
НазначитьРучнуюСкидкуНаСервере(СуммаРучнойСкидкиНаценки, Элементы.Товары.ВыделенныеСтроки, АдресВоВременномХранилище);
СкидкиНаценкиЗаполнениеКлиент.ОповеститьОбОкончанииНазначенияРучныхСкидокНаценок(СуммаРучнойСкидкиНаценки, Объект.Валюта);
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОтменитьРучныеСкидки(Команда)
Если Не СкидкиНаценкиЗаполнениеКлиент.ВозможнаОтменаРучныхСкидокНаценок(Объект, "Товары", НСтр("ru='Товары'")) Тогда
Возврат;
КонецЕсли;
ОтменитьРучныеСкидкиНаСервере();
СкидкиНаценкиЗаполнениеКлиент.ОповеститьОбОкончанииНазначенияРучныхСкидокНаценок();
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ОтменитьВыделенныеСтроки(Команда)
Если Объект.Товары.Количество() = 0 Тогда
ПоказатьПредупреждение(Неопределено, НСтр("ru='Таблица товаров не заполнена.'"));
Возврат;
ИначеЕсли Элементы.Товары.ВыделенныеСтроки.Количество() = 0 Тогда
ПоказатьПредупреждение(Неопределено, НСтр("ru='В таблице товаров отсутствуют выделенные строки.'"));
Возврат;
КонецЕсли;
ПричинаОтмены = ПредопределенноеЗначение("Справочник.ПричиныОтменыЗаказовПоставщикам.ПустаяСсылка");
Если ИспользоватьПричиныОтменыЗаказовПоставщикам Тогда
ОткрытьФорму("Справочник.ПричиныОтменыЗаказовПоставщикам.ФормаВыбора",,,,,, Новый ОписаниеОповещения("ОтменитьВыделенныеСтрокиЗавершение", ЭтотОбъект), РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
Возврат;
КонецЕсли;
ОтменитьВыделенныеСтрокиФрагмент(ПричинаОтмены);
КонецПроцедуры
&НаКлиенте
Процедура ОтменитьВыделенныеСтрокиЗавершение(Результат, ДополнительныеПараметры) Экспорт
ПричинаОтмены = Результат;
Если ПричинаОтмены = Неопределено Тогда
Возврат;
КонецЕсли;
ОтменитьВыделенныеСтрокиФрагмент(ПричинаОтмены);
КонецПроцедуры
&НаКлиенте
Процедура ОтменитьВыделенныеСтрокиФрагмент(Знач ПричинаОтмены)
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ЗаполнитьПризнакОтмененоБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
СтруктураДействий.Вставить("ПриИзмененииТипаНоменклатуры",
Новый Структура("ЕстьРаботы, ЕстьОтменено", Истина, Истина));
Для Каждого ТекСтрока Из Элементы.Товары.ВыделенныеСтроки Цикл
СтрокаТаблицы = Объект.Товары.НайтиПоИдентификатору(ТекСтрока);
Если СтрокаТаблицы <> Неопределено Тогда
СтрокаТаблицы.ПричинаОтмены = ПричинаОтмены;
Если Не СтрокаТаблицы.Отменено Тогда
СтрокаТаблицы.Отменено = Истина;
КонецЕсли;
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(СтрокаТаблицы, СтруктураДействий, КэшированныеЗначения);
КонецЕсли;
КонецЦикла;
ПриИзмененииСкладаВТабличнойЧастиСервер();
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
УстановитьПризнакЗаполненияСклада();
ПоказатьОповещениеПользователя(
НСтр("ru = 'Выделенные строки отменены'"),
,
НСтр("ru='Выделенные строки заказа отменены.'"),
БиблиотекаКартинок.Информация32);
КонецПроцедуры
&НаКлиенте
Процедура ОтменитьНепоставленныеСтроки(Команда)
Если Объект.Товары.Количество() = 0 Тогда
ПоказатьПредупреждение(Неопределено, НСтр("ru='Таблица товаров не заполнена.'"));
Возврат;
КонецЕсли;
ЕстьНеотмененныеСтроки = Ложь;
Для Каждого ТекСтрока Из Объект.Товары Цикл
Если Не ТекСтрока.Отменено Тогда
ЕстьНеотмененныеСтроки = Истина;
КонецЕсли;
КонецЦикла;
Если Не ЕстьНеотмененныеСтроки Тогда
ПоказатьПредупреждение(Неопределено, НСтр("ru='Все строки отменены.'"));
Возврат;
КонецЕсли;
ПроверятьОстатки = Истина;
Если Не Объект.Проведен Тогда
ПроверятьОстатки = Ложь;
ИначеЕсли Объект.Статус = ПредопределенноеЗначение("Перечисление.СтатусыЗаказовПоставщикам.НеСогласован")
Или Объект.Статус = ПредопределенноеЗначение("Перечисление.СтатусыЗаказовПоставщикам.Согласован")
Или Объект.Статус = ПредопределенноеЗначение("Перечисление.СтатусыЗаказовПоставщикам.Подтвержден") Тогда
ПроверятьОстатки = Истина;
КонецЕсли;
ПричинаОтмены = ПредопределенноеЗначение("Справочник.ПричиныОтменыЗаказовПоставщикам.ПустаяСсылка");
Если ИспользоватьПричиныОтменыЗаказовПоставщикам Тогда
ОткрытьФорму("Справочник.ПричиныОтменыЗаказовПоставщикам.ФормаВыбора",,,,,, Новый ОписаниеОповещения("ОтменитьНепоставленныеСтрокиЗавершение", ЭтотОбъект, Новый Структура("ПроверятьОстатки", ПроверятьОстатки)), РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
Возврат;
КонецЕсли;
ОтменитьНепоставленныеСтрокиФрагмент(ПричинаОтмены, ПроверятьОстатки);
КонецПроцедуры
&НаКлиенте
Процедура ОтменитьНепоставленныеСтрокиЗавершение(Результат, ДополнительныеПараметры) Экспорт
ПроверятьОстатки = ДополнительныеПараметры.ПроверятьОстатки;
ПричинаОтмены = Результат;
Если ПричинаОтмены = Неопределено Тогда
Возврат;
КонецЕсли;
ОтменитьНепоставленныеСтрокиФрагмент(ПричинаОтмены, ПроверятьОстатки);
КонецПроцедуры
&НаКлиенте
Процедура ОтменитьНепоставленныеСтрокиФрагмент(Знач ПричинаОтмены, Знач ПроверятьОстатки)
Перем КоличествоСтрокОтменено;
КоличествоСтрокОтменено = ОтменитьНепоставленныеСтрокиСервер(ПричинаОтмены, ПроверятьОстатки);
Если КоличествоСтрокОтменено = 0 Тогда
ПоказатьОповещениеПользователя(
НСтр("ru = 'Строки не отменены'"),
,
НСтр("ru='По всем строкам заказа оформлено поступление. Строки не могут быть отменены.'"),
БиблиотекаКартинок.Информация32);
Иначе
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
Если ПроверятьОстатки Тогда
ПоказатьОповещениеПользователя(
НСтр("ru = 'Строки отменены'"),
,
НСтр("ru='Все непоставленные строки заказа отменены.'"),
БиблиотекаКартинок.Информация32);
Иначе
ПоказатьОповещениеПользователя(
НСтр("ru = 'Строки отменены'"),
,
НСтр("ru='Все строки заказа отменены.'"),
БиблиотекаКартинок.Информация32);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаписатьДокумент(Команда)
ОбщегоНазначенияУТКлиент.Записать(ЭтаФорма, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьДатуОтгрузкиДляВыделенныхСтрок(Команда)
Если Элементы.Товары.ВыделенныеСтроки.Количество() > 0 Тогда
ЗаполнитьДатуОтгрузки(Элементы.Товары.ВыделенныеСтроки);
Иначе
ТекстПредупреждения = НСтр("ru='В документе не выбраны строки для заполнения. Дата отгрузки не будет заполнена.'");
ПоказатьПредупреждение(Неопределено, ТекстПредупреждения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СкрыватьОтмененныеСтроки(Команда)
СкрыватьОтмененныеСтроки = Не СкрыватьОтмененныеСтроки;
ТоварыОбновитьОтборСтрокПоОтмененным(ЭтаФорма, СкрыватьОтмененныеСтроки, Истина);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ТоварыОбновитьОтборСтрокПоОтмененным(Форма, СкрытьОтмененныеСтроки, УстановитьПометкуТоварыСкрыватьОтмененныеСтроки = Истина)
Если СкрытьОтмененныеСтроки Тогда
Форма.Элементы.Товары.ОтборСтрок = Новый ФиксированнаяСтруктура("Отменено", Ложь);
Иначе
Форма.Элементы.Товары.ОтборСтрок = Неопределено;
КонецЕсли;
Если УстановитьПометкуТоварыСкрыватьОтмененныеСтроки Тогда
Форма.Элементы.ТоварыСкрыватьОтмененныеСтроки.Пометка = СкрытьОтмененныеСтроки;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПодобратьТовары(Команда)
ОценкаПроизводительностиКлиент.НачатьЗамерВремени(Истина,
"Документ.ЗаказПоставщику.ФормаДокумента.Команда.ПодобратьТовары");
Отказ = Ложь;
Если Не ЗначениеЗаполнено(Объект.Валюта) Тогда
ОчиститьСообщения();
СообщитьОбОшибкахОткрытияПодбора(Отказ);
КонецЕсли;
Если Отказ Тогда
Возврат;
КонецЕсли;
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Документ", Объект.Ссылка);
ПараметрыФормы.Вставить("Партнер", Объект.Партнер);
ПараметрыФормы.Вставить("Соглашение", Объект.Соглашение);
ПараметрыФормы.Вставить("ЦенаВключаетНДС", Объект.ЦенаВключаетНДС);
ПараметрыФормы.Вставить("Склад", Объект.Склад);
ПараметрыФормы.Вставить("Валюта", Объект.Валюта);
ПараметрыФормы.Вставить("РежимПодбораИспользоватьСкладыВТабличнойЧасти", Истина);
Если Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПриемНаКомиссию") Тогда
ПараметрыФормы.Вставить("ОтборПоТипуНоменклатуры", Новый ФиксированныйМассив(НоменклатураКлиентСервер.ОтборПоТоваруМногооборотнойТаре(Ложь)));
ПараметрыФормы.Вставить("СкрыватьРучныеСкидки", Истина);
ИначеЕсли Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПриемНаХранениеСПравомПродажи") Тогда
ПараметрыФормы.Вставить("ОтборПоТипуНоменклатуры", Новый ФиксированныйМассив(НоменклатураКлиентСервер.ОтборПоТоваруМногооборотнойТаре(Ложь)));
ИначеЕсли Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ЗакупкаУПоставщикаТоварыВПути")
Или Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭСТоварыВПути")
Или Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ЗакупкаПоИмпортуТоварыВПути") Тогда
ПараметрыФормы.Вставить("ОтборПоТипуНоменклатуры", Новый ФиксированныйМассив(НоменклатураКлиентСервер.ОтборПоТоваруМногооборотнойТареУслуге(Ложь)));
Иначе
ПараметрыФормы.Вставить("ОтборПоТипуНоменклатуры", Новый ФиксированныйМассив(НоменклатураКлиентСервер.ОтборПоТоваруМногооборотнойТареУслугеРаботе(Ложь)));
КонецЕсли;
ПараметрыФормы.Вставить("Дата", Объект.Дата);
ОткрытьФорму("Обработка.ПодборТоваровВДокументЗакупки.Форма", ПараметрыФормы, ЭтаФорма, УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_СвойстваВыполнитьКоманду(ЭлементИлиКоманда, НавигационнаяСсылка = Неопределено, СтандартнаяОбработка = Неопределено)
УправлениеСвойствамиКлиент.ВыполнитьКоманду(ЭтотОбъект, ЭлементИлиКоманда, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ПоказатьНоменклатуруПоставщика(Команда)
НоменклатураПартнеровКлиент.ПоказатьНоменклатуруПартнера(Объект.Партнер, Объект.Ссылка, Элементы.Товары.ТекущиеДанные, НСтр("ru = 'Поставщик'"));
КонецПроцедуры
&НаКлиенте
Процедура РазбитьСтроку(Команда)
ТаблицаФормы = Элементы.Товары;
ДанныеТаблицы = Объект.Товары;
Оповещение = Новый ОписаниеОповещения("РазбитьСтрокуЗавершение", ЭтотОбъект);
РаботаСТабличнымиЧастямиКлиент.РазбитьСтроку(ДанныеТаблицы, ТаблицаФормы, Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура РазбитьСтрокуЗавершение(НоваяСтрока, ДополнительныеПараметры) Экспорт
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
Если НоваяСтрока <> Неопределено Тогда
НоваяСтрока.КодСтроки = 0;
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, ЭтаФорма);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(НоваяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПоискПоШтрихкодуВыполнить(Команда)
ОчиститьСообщения();
Оповещение = Новый ОписаниеОповещения("ПоискПоШтрихкодуЗавершение", ЭтотОбъект);
ШтрихкодированиеНоменклатурыКлиент.ПоказатьВводШтрихкода(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ПоискПоШтрихкодуЗавершение(ДанныхШтрихкода, ДополнительныеПараметры) Экспорт
ОбработатьШтрихкоды(ДанныхШтрихкода);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьСкладВВыделенныхСтроках(Команда)
ВыделенныеСтроки = Элементы.Товары.ВыделенныеСтроки;
Если СкладыКлиент.ПроверитьВозможностьЗаполненияСкладовВТабличнойЧасти(Объект, Объект.Товары, НСтр("ru='Товары'"), ВыделенныеСтроки) Тогда
МассивОтбора = Новый Массив();
МассивОтбора.Добавить(ПредопределенноеЗначение("Перечисление.ВыборГруппыСкладов.РазрешитьВЗаказах"));
МассивОтбора.Добавить(ПредопределенноеЗначение("Перечисление.ВыборГруппыСкладов.РазрешитьВЗаказахИНакладных"));
СтруктураОтбора = Новый Структура("ВыборГруппы, ЭтоГруппа", МассивОтбора, Ложь);
СтруктураПараметров = Новый Структура("Отбор,ГруппаСкладов", СтруктураОтбора, Объект.Склад);
ВыбранныйСклад = Неопределено;
ОткрытьФорму("Справочник.Склады.ФормаВыбора", СтруктураПараметров, ЭтаФорма,,,, Новый ОписаниеОповещения("ЗаполнитьСкладВВыделенныхСтрокахЗавершение", ЭтотОбъект, Новый Структура("ВыделенныеСтроки", ВыделенныеСтроки)), РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьСкладВВыделенныхСтрокахЗавершение(Результат, ДополнительныеПараметры) Экспорт
ВыделенныеСтроки = ДополнительныеПараметры.ВыделенныеСтроки;
ВыбранныйСклад = Результат;
Если ЗначениеЗаполнено(ВыбранныйСклад) Тогда
ЗаполненоСтрок = ЗаполнитьСкладВВыделенныхСтрокахНаСервере(ВыделенныеСтроки, ВыбранныйСклад);
СкладыКлиент.ПоказатьОповещениеОЗаполненииСкладаВТабличнойЧасти(ВыбранныйСклад, ЗаполненоСтрок, ВыделенныеСтроки.Количество());
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьДанныеИзТСД(Команда)
ОчиститьСообщения();
МенеджерОборудованияКлиент.НачатьЗагрузкуДанныеИзТСД(
Новый ОписаниеОповещения("ЗагрузитьИзТСДЗавершение", ЭтотОбъект),
УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьИзТСДЗавершение(Результат, Параметры) Экспорт
Если Результат.Результат Тогда
ОбработатьШтрихкоды(Результат.ТаблицаТоваров);
Иначе
МенеджерОборудованияУТКлиент.СообщитьОбОшибке(Результат);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьНоменклатуруПоНоменклатуреПартнера(Команда)
Если Не ОбщегоНазначенияУТКлиент.ПроверитьНаличиеСтрокВСписке(Объект.Товары, "Товары") Тогда
Возврат;
КонецЕсли;
АдресТоваровВХранилище = ПоместитьТоварыВоВременноеХранилищеСервер();
ЗакупкиКлиент.ОткрытьФормуЗаполненияНоменклатурыПоставщика(
Новый ОписаниеОповещения("ЗаполнитьНоменклатуруПоНоменклатуреПартнераЗавершение", ЭтотОбъект),
АдресТоваровВХранилище,
ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьНоменклатуруПоНоменклатуреПартнераЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат <> Неопределено Тогда
ЗаполнитьТоварыИзВременногоХранилищаСервер(Результат);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СкорректироватьЦеныПоПоступлениям(Команда)
Если ЗначениеЗаполнено(Объект.Ссылка) Тогда
СкорректироватьЦеныПоПоступлениямСервер();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВставитьСтроки(Команда)
КоличествоТоваровДоВставки = Объект.Товары.Количество();
ПолучитьСтрокиИзБуфераОбмена();
КоличествоВставленных = Объект.Товары.Количество()-КоличествоТоваровДоВставки;
РаботаСТабличнымиЧастямиКлиент.ОповеститьПользователяОВставкеСтрок(КоличествоВставленных);
УстановитьПризнакЗаполненияСклада();
КонецПроцедуры
&НаКлиенте
Процедура СкопироватьСтроки(Команда)
Если РаботаСТабличнымиЧастямиКлиент.ВыбранаСтрокаДляВыполненияКоманды(Элементы.Товары) Тогда
СкопироватьСтрокиНаСервере();
РаботаСТабличнымиЧастямиКлиент.ОповеститьПользователяОКопированииСтрок(Элементы.Товары.ВыделенныеСтроки.Количество());
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДополнитьМногооборотнойТарой(Команда)
МногооборотнаяТараКлиент.ПодобратьМногооборотнуюТару(
ЭтаФорма,
"Товары",
"Номенклатура,Характеристика,Количество,Склад,ДатаПоступления");
КонецПроцедуры
&НаКлиенте
Процедура ПодобратьАналоги(Команда)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьИзВнешнегоФайла(Команда)
ПараметрыЗагрузки = РаботаСТабличнымиЧастямиКлиент.ПараметрыЗагрузкиНоменклатуры();
ПараметрыЗагрузки.Организация = Объект.Организация;
ПараметрыЗагрузки.ЗаполнятьНоменклатуруПартнера = Объект.Партнер;
ПараметрыЗагрузки.ЗагружатьЦены = Истина;
ПараметрыЗагрузки.ЗагружатьСуммы = Истина;
ПараметрыЗагрузки.ЗагружатьСкидки =
Объект.ХозяйственнаяОперация <> ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПриемНаКомиссию");
ПараметрыЗагрузки.ЦенаВключаетНДС = Объект.ЦенаВключаетНДС;
ПараметрыЗагрузки.НалогообложениеНДС = Объект.НалогообложениеНДС;
ПараметрыЗагрузки.ДатаЗаполнения = Объект.Дата;
ПараметрыЗагрузки.ЭтоВозвратнаяТара = Объект.ВернутьМногооборотнуюТару;
Если Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПриемНаКомиссию")
Или Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПриемНаХранениеСПравомПродажи") Тогда
ПараметрыЗагрузки.ПараметрыОтбора.Вставить("ТипНоменклатуры",
НоменклатураКлиентСервер.ОтборПоТоваруМногооборотнойТаре(Ложь));
ИначеЕсли Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ЗакупкаУПоставщикаТоварыВПути")
Или Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭСТоварыВПути")
Или Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ЗакупкаПоИмпортуТоварыВПути") Тогда
ПараметрыЗагрузки.ПараметрыОтбора.Вставить("ТипНоменклатуры",
НоменклатураКлиентСервер.ОтборПоТоваруМногооборотнойТареУслуге(Ложь));
Иначе
ПараметрыЗагрузки.ПараметрыОтбора.Вставить("ТипНоменклатуры",
НоменклатураКлиентСервер.ОтборПоТоваруМногооборотнойТареУслугеРаботе(Ложь));
КонецЕсли;
Оповещение = Новый ОписаниеОповещения("ЗагрузитьИзВнешнегоФайлаЗавершение", ЭтотОбъект);
РаботаСТабличнымиЧастямиКлиент.ПоказатьФормуЗагрузкиНоменклатуры(ПараметрыЗагрузки, Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьИзВнешнегоФайлаЗавершение(АдресЗагруженныхДанных, ДополнительныеПараметры) Экспорт
Если ЗначениеЗаполнено(АдресЗагруженныхДанных) Тогда
ПолучитьЗагруженныеТоварыИзХранилища(АдресЗагруженныхДанных);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПровестиДокумент(Команда)
ОбщегоНазначенияУТКлиент.Провести(ЭтаФорма, Истина);
КонецПроцедуры
&НаКлиенте
Процедура УстановитьПометкуУдаленияДокумента(Команда)
ОбщегоНазначенияУТКлиент.УстановитьПометкуУдаленияДокумента(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ПровестиИЗакрыть(Команда)
ОбщегоНазначенияУТКлиент.ПровестиИЗакрыть(ЭтаФорма, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ЗачетОплаты(Команда)
ВзаиморасчетыКлиент.ЗачетОплаты(ЭтаФорма, Элементы.ЗачетОплатыФорма);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуИнтеграции(Команда)
ИнтеграцияС1СДокументооборотБазоваяФункциональностьКлиент.ВыполнитьПодключаемуюКомандуИнтеграции(Команда, ЭтотОбъект, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)
СобытияФормКлиент.ВыполнитьПереопределяемуюКоманду(ЭтаФорма, Команда);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуЭДО(Команда)
ЭлектронноеВзаимодействиеКлиент.ВыполнитьПодключаемуюКомандуЭДО(Команда, ЭтаФорма, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбработчикОжиданияЭДО()
ОбменСКонтрагентамиКлиент.ОбработчикОжиданияЭДО(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПодсказкиБизнесСетьНажатие(Элемент)
ТорговыеПредложенияКлиент.ОткрытьФормуПодсказок(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура РасчетыНажатие(Элемент, СтандартнаяОбработка)
ВзаиморасчетыКлиент.РасчетыНажатие(ЭтаФорма, Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ДекорацияИндексыСПАРКРискиОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СПАРКРискиКлиент.ОбработкаНавигационнойСсылки(ЭтотОбъект, Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьОтображениеИндексыСПАРК()
ОбновитьОтображениеИндексыСПАРК();
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьОтображениеИндексыСПАРК()
ПараметрыОтображения = Новый Структура("ВариантОтображения", "Однострочный");
СПАРКРискиКлиент.ОтобразитьИндексыСПАРК(
ЭтотОбъект.ИндексыСПАРКРиски,
Неопределено,
Объект.Контрагент,
ВидКонтрагентаСПАРК(Объект.Контрагент),
ЭтотОбъект,
ПараметрыОтображения);
КонецПроцедуры
&НаСервереБезКонтекста
Функция ВидКонтрагентаСПАРК(Контрагент)
Возврат Перечисления.ЮрФизЛицо.ВидКонтрагентаСПАРКРиски(Контрагент);
КонецФункции
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуEDI(Команда)
ДокументыEDIИнтеграцияКлиент.ВыполнитьКоманду(ЭтотОбъект, Команда, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьСервернуюКоманду(ИмяКоманды, ДополнительныеПараметры) Экспорт
Подключаемый_ВыполнитьКомандуНаСервереEDI(ИмяКоманды, ДополнительныеПараметры);
КонецПроцедуры
&НаСервере
Процедура Подключаемый_ВыполнитьКомандуНаСервереEDI(ИмяКоманды, ДополнительныеПараметры)
ДокументыEDIИнтеграция.ВыполнитьКоманду(ЭтотОбъект, ИмяКоманды, ДополнительныеПараметры);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
Процедура СвойстваВыполнитьОтложеннуюИнициализацию()
УправлениеСвойствами.ЗаполнитьДополнительныеРеквизитыВФорме(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьЗависимостиДополнительныхРеквизитов()
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПриИзмененииДополнительногоРеквизита(Элемент)
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииКлючевыхРеквизитовСостояниеЭДО()
ПараметрыПриИзменении = ОбменСКонтрагентами.ПараметрыПриИзмененииКлючевыхРеквизитовЭДО();
ПараметрыПриИзменении.Форма = ЭтотОбъект;
ПараметрыПриИзменении.ДокументСсылка = Объект.Ссылка;
ПараметрыПриИзменении.ДокументОбъект = РеквизитФормыВЗначение("Объект");
ПараметрыПриИзменении.КонтроллерСостояниеЭДО = Элементы.ДекорацияСостояниеЭДО;
ПараметрыПриИзменении.ГруппаСостояниеЭДО = Элементы.ГруппаСостояниеЭДО;
ОбменСКонтрагентами.ПриИзмененииКлючевыхРеквизитовЭДО(ПараметрыПриИзменении);
КонецПроцедуры
&НаСервере
Функция ЗаполнитьПодчиненныеСвойстваПоСтатистике(ИмяРеквизитаРодителя)
Возврат ЗаполнениеОбъектовПоСтатистике.ЗаполнитьПодчиненныеРеквизитыОбъекта(Объект, ИмяРеквизитаРодителя);
КонецФункции
&НаСервере
Процедура УстановитьУсловноеОформлениеДляСтатейИАналитик()
ОперацииФактуровка = Новый СписокЗначений;
ОперацииФактуровка.Добавить(Перечисления.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭСФактуровкаПоставки);
ОперацииФактуровка.Добавить(Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщикаФактуровкаПоставки);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСписатьНаРасходы.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСтатьяРасходов.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыАналитикаРасходов.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ХозяйственнаяОперация");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
ОтборЭлемента.ПравоеЗначение = ОперацииФактуровка;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ВариантОформленияДоговораЗакупок");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ВариантыОформленияЗакупок.НеотфактурованныеПоставкиТоваровИУслуг;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Работа");
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ВедетсяУчетПоРНПТ");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСтатьяРасходов.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыАналитикаРасходов.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ХозяйственнаяОперация");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
ОтборЭлемента.ПравоеЗначение = ОперацииФактуровка;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ВариантОформленияДоговораЗакупок");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ВариантыОформленияЗакупок.НеотфактурованныеПоставкиТоваровИУслуг;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Работа");
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ВедетсяУчетПоРНПТ");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<для непрослеживаемых работ>'"));
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ТекстЗапрещеннойЯчейкиЦвет);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСписатьНаРасходы.Имя);
ГруппаОтбораИЛИ = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбораИЛИ.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ГруппаОтбораИ1 = ГруппаОтбораИЛИ.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбораИ1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаОтбораИ1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ТипыНоменклатуры.Услуга;
ГруппаОтбораИ2 = ГруппаОтбораИЛИ.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбораИ2.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаОтбораИ2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
СписокЗначений = Новый СписокЗначений;
СписокЗначений.Добавить(ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Товар"));
СписокЗначений.Добавить(ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.МногооборотнаяТара"));
СписокЗначений.Добавить(ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Работа"));
ОтборЭлемента.ПравоеЗначение = СписокЗначений;
ОтборЭлемента = ГруппаОтбораИ2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Назначение");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
ГруппаОтбораИ3 = ГруппаОтбораИЛИ.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбораИ3.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаОтбораИ3.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.СписатьНаРасходы");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
ОтборЭлемента = ГруппаОтбораИ3.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
СписокЗначений = Новый СписокЗначений;
СписокЗначений.Добавить(ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Товар"));
СписокЗначений.Добавить(ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.МногооборотнаяТара"));
ОтборЭлемента.ПравоеЗначение = СписокЗначений;
ОтборЭлемента = ГруппаОтбораИ3.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ХозяйственнаяОперация");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
СписокЗначений = Новый СписокЗначений;
СписокЗначений.Добавить(Перечисления.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭСТоварыВПути);
СписокЗначений.Добавить(Перечисления.ХозяйственныеОперации.ЗакупкаПоИмпортуТоварыВПути);
СписокЗначений.Добавить(Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщикаТоварыВПути);
СписокЗначений.Добавить(Перечисления.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭСФактуровкаПоставки);
СписокЗначений.Добавить(Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщикаФактуровкаПоставки);
ОтборЭлемента.ПравоеЗначение = СписокЗначений;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСтатьяРасходов.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыАналитикаРасходов.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
СписокЗначений = Новый СписокЗначений;
СписокЗначений.Добавить(ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Товар"));
СписокЗначений.Добавить(ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.МногооборотнаяТара"));
СписокЗначений.Добавить(ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Работа"));
ОтборЭлемента.ПравоеЗначение = СписокЗначений;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Назначение");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<для товаров/услуг и работ без назначения>'"));
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ТекстЗапрещеннойЯчейкиЦвет);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыАналитикаРасходов.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.СтатьяРасходов");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.АналитикаРасходов");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.СписатьНаРасходы");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.НезаполненноеПолеТаблицы);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<выберите статью расходов>'"));
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыАналитикаРасходов.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ТипыНоменклатуры.Работа;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.СписатьНаРасходы");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Назначение");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<при списании на расходы>'"));
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ТекстЗапрещеннойЯчейкиЦвет);
КонецПроцедуры
&НаСервере
Процедура УстановитьУсловноеОформление()
ИспользоватьТоварыВПутиОтПоставщиков = ПолучитьФункциональнуюОпцию("ИспользоватьТоварыВПутиОтПоставщиков");
ИспользоватьНеотфактурованныеПоставки = ПолучитьФункциональнуюОпцию("ИспользоватьНеотфактурованныеПоставки");
ХозяйственныеОперацииРаздельнойЗакупки = ХозяйственныеОперацииРаздельнойЗакупки(ИспользоватьТоварыВПутиОтПоставщиков, ИспользоватьНеотфактурованныеПоставки);
СписокОперацийТребующихДоговор = Новый СписокЗначений();
СписокОперацийТребующихДоговор.ЗагрузитьЗначения(ХозяйственныеОперацииРаздельнойЗакупки);
СписокОперацийТребующихДоговор.Добавить(Перечисления.ХозяйственныеОперации.ПриемНаХранениеСПравомПродажи);
СписокОперацийТребующихДоговор.Добавить(Перечисления.ХозяйственныеОперации.ПоставкаПодПринципала);
УсловноеОформление.Элементы.Очистить();
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.Состояние.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("СостояниеПросрочено");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ПросроченныйДокумент);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.Состояние.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Состояние");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.СостоянияЗаказовПоставщикам.Закрыт;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ЗакрытыйДокумент);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСуммаРучнойСкидки.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыПроцентРучнойСкидки.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Отменено");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("ВыделятьОтрицательные", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыНоменклатураПартнера.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Партнер");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыНоменклатураПартнера.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Партнер");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.НезаполненноеПолеТаблицы);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<выберите поставщика>'"));
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыДатаПоступления.Имя);
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ДатаПоступления");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Статус");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеВСписке;
СписокЗначений = Новый СписокЗначений;
СписокЗначений.Добавить(Перечисления.СтатусыЗаказовПоставщикам.Подтвержден);
СписокЗначений.Добавить(Перечисления.СтатусыЗаказовПоставщикам.Закрыт);
ОтборЭлемента.ПравоеЗначение = СписокЗначений;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Отменено");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыДатаОтгрузки.Имя);
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ДатаОтгрузки");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Статус");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеВСписке;
СписокЗначений = Новый СписокЗначений;
СписокЗначений.Добавить(Перечисления.СтатусыЗаказовПоставщикам.Подтвержден);
СписокЗначений.Добавить(Перечисления.СтатусыЗаказовПоставщикам.Закрыт);
ОтборЭлемента.ПравоеЗначение = СписокЗначений;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Отменено");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
УчетНДСУП.УстановитьУсловноеОформлениеСуммНДСПоНалогообложениюЗакупки(ЭтаФорма);
ЦеныПредприятияЗаполнениеСервер.УстановитьУсловноеОформлениеЦенаВключаетНДС(ЭтаФорма);
НоменклатураСервер.УстановитьУсловноеОформлениеЕдиницИзмерения(ЭтаФорма);
ОбщегоНазначенияУТ.УстановитьУсловноеОформлениеПриоритета(ЭтаФорма);
НоменклатураСервер.УстановитьУсловноеОформлениеХарактеристикНоменклатуры(ЭтаФорма);
СкладыСервер.УстановитьУсловноеОформлениеСкладаВТЧ(ЭтаФорма);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСклад.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеВСписке;
СписокЗначений = Новый СписокЗначений;
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.Товар);
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.МногооборотнаяТара);
ОтборЭлемента.ПравоеЗначение = СписокЗначений;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Склад");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.НезаполненноеПолеТаблицы);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<для товаров>'"));
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСклад.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
СписокЗначений = Новый СписокЗначений;
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.Товар);
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.МногооборотнаяТара);
ОтборЭлемента.ПравоеЗначение = СписокЗначений;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Склад");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.Договор.Имя);
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ГруппаОтбора2 = ГруппаОтбора1.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора2.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаОтбора2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Соглашение");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ОтборЭлемента = ГруппаОтбора2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ХозяйственнаяОперация");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеВСписке;
ОтборЭлемента.ПравоеЗначение = СписокОперацийТребующихДоговор;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Договор");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.Договор.Имя);
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ГруппаОтбора2 = ГруппаОтбора1.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора2.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаОтбора2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Соглашение");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
ОтборЭлемента = ГруппаОтбора2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Договор");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ГруппаОтбора3 = ГруппаОтбора1.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора3.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаОтбора3.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ХозяйственнаяОперация");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
ОтборЭлемента.ПравоеЗначение = СписокОперацийТребующихДоговор;
ОтборЭлемента = ГруппаОтбора3.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Договор");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Истина);
ОбщегоНазначенияУТ.УстановитьСнятьОтметкуНезаполненного(
УсловноеОформление, "ТоварыСклад", "Объект.Товары.Склад", "Объект.Товары.СкладОбязателен");
ОбщегоНазначенияУТ.УстановитьСнятьОтметкуНезаполненного(
УсловноеОформление, "Склад", "Объект.Склад", "СкладОбязателен");
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ДатаПоступления.Имя);
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ДатаПоступления");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Статус");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
СписокЗначений = Новый СписокЗначений;
СписокЗначений.Добавить(Перечисления.СтатусыЗаказовПоставщикам.Подтвержден);
СписокЗначений.Добавить(Перечисления.СтатусыЗаказовПоставщикам.Закрыт);
ОтборЭлемента.ПравоеЗначение = СписокЗначений;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ВсеСтрокиОтменены");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ДатаОтгрузки.Имя);
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ДатаОтгрузки");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Статус");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
СписокЗначений = Новый СписокЗначений;
СписокЗначений.Добавить(Перечисления.СтатусыЗаказовПоставщикам.Подтвержден);
СписокЗначений.Добавить(Перечисления.СтатусыЗаказовПоставщикам.Закрыт);
ОтборЭлемента.ПравоеЗначение = СписокЗначений;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ВсеСтрокиОтменены");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ДатаПоступления.Имя);
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ДатаПоступления");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Статус");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеВСписке;
СписокЗначений = Новый СписокЗначений;
СписокЗначений.Добавить(Перечисления.СтатусыЗаказовПоставщикам.Подтвержден);
СписокЗначений.Добавить(Перечисления.СтатусыЗаказовПоставщикам.Закрыт);
ОтборЭлемента.ПравоеЗначение = СписокЗначений;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ВсеСтрокиОтменены");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ДатаОтгрузки.Имя);
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ДатаОтгрузки");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Статус");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеВСписке;
СписокЗначений = Новый СписокЗначений;
СписокЗначений.Добавить(Перечисления.СтатусыЗаказовПоставщикам.Подтвержден);
СписокЗначений.Добавить(Перечисления.СтатусыЗаказовПоставщикам.Закрыт);
ОтборЭлемента.ПравоеЗначение = СписокЗначений;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ВсеСтрокиОтменены");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
НоменклатураСервер.УстановитьУсловноеОформлениеНазначенияНоменклатуры(ЭтаФорма);
ПараметрыУстановки = МногооборотнаяТараСервер.ПараметрыУстановкиУсловногоОформленияДляСтрокСМногооборотнойТарой();
ПараметрыУстановки.Форма = ЭтаФорма;
ПараметрыУстановки.ЭтоПоступление = Истина;
МногооборотнаяТараСервер.УстановитьУсловноеОформлениеДляСтрокСМногооборотнойТарой(ПараметрыУстановки);
УстановитьУсловноеОформлениеДляСтатейИАналитик();
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСклад.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ХозяйственнаяОперация");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеВСписке;
ОтборЭлемента.ПравоеЗначение = НоменклатураСервер.СписокХозяйственныхОперацийИсключающихУслугиИРаботы();
ГруппаОтбора2 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора2.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ОтборЭлемента = ГруппаОтбора2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ОтборЭлемента = ГруппаОтбора2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
СписокЗначений = Новый СписокЗначений;
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.Работа);
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.Услуга);
ОтборЭлемента.ПравоеЗначение = СписокЗначений;
ОтборЭлемента = ГруппаОтбора2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.СписатьНаРасходы");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыПодразделение.Имя);
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ХозяйственнаяОперация");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
ОтборЭлемента.ПравоеЗначение = НоменклатураСервер.СписокХозяйственныхОперацийИсключающихУслугиИРаботы();
ГруппаОтбора2 = ГруппаОтбора1.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора2.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаОтбора2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
СписокЗначений = Новый СписокЗначений;
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.Товар);
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.МногооборотнаяТара);
ОтборЭлемента.ПравоеЗначение = СписокЗначений;
ОтборЭлемента = ГруппаОтбора2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("СкладГруппа");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
ОтборЭлемента = ГруппаОтбора2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.СписатьНаРасходы");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыПодразделение.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
СписокЗначений = Новый СписокЗначений;
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.Товар);
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.МногооборотнаяТара);
ОтборЭлемента.ПравоеЗначение = СписокЗначений;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.СписатьНаРасходы");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("СкладГруппа");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<при списании на расходы>'"));
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ТекстЗапрещеннойЯчейкиЦвет);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыПодразделение.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипНазначения");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = ПредопределенноеЗначение("Перечисление.ТипыНазначений.ПоставкаПодПринципала");
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<для закупки не под принципала>'"));
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ТекстЗапрещеннойЯчейкиЦвет);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыПодразделение.Имя);
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Подразделение");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
ГруппаОтбора3 = ГруппаОтбора1.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора3.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаОтбора3.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
СписокЗначений = Новый СписокЗначений;
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.Товар);
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.МногооборотнаяТара);
ОтборЭлемента.ПравоеЗначение = СписокЗначений;
ОтборЭлемента = ГруппаОтбора3.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.СписатьНаРасходы");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
ГруппаОтбора2 = ГруппаОтбора1.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора2.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаОтбора2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ТипыНоменклатуры.Работа;
ОтборЭлемента = ГруппаОтбора2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипНазначения");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ТипыНазначений.ПоставкаПодПринципала;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыПодразделение.Имя);
ГруппаОтбора0 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора0.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаНе;
ГруппаОтбора1 = ГруппаОтбора0.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Подразделение");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
ГруппаОтбора3 = ГруппаОтбора1.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора3.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаОтбора3.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
СписокЗначений = Новый СписокЗначений;
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.Товар);
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.МногооборотнаяТара);
ОтборЭлемента.ПравоеЗначение = СписокЗначений;
ОтборЭлемента = ГруппаОтбора3.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.СписатьНаРасходы");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
ГруппаОтбора2 = ГруппаОтбора1.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора2.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаОтбора2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ТипыНоменклатуры.Работа;
ОтборЭлемента = ГруппаОтбора2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипНазначения");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ТипыНазначений.ПоставкаПодПринципала;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Истина);
ЗаказыСервер.УстановитьОформлениеОтмененнойСтроки(УсловноеОформление,
Элементы.Товары,
Элементы.ТоварыОтменено.Имя,
Элементы.ТоварыПричинаОтмены.Имя,
Элементы.ТоварыЦена.Имя,
Элементы.ТоварыСумма.Имя);
НаправленияДеятельностиСервер.УстановитьУсловноеОформлениеНаправленияДеятельности(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура УстановитьПризнакЗаполненияСклада()
СкладОбязателен = ?(Объект.Товары.Итог("СкладОбязателен") = 0, 0, 1);
КонецПроцедуры
&НаСервере
Процедура ОбновитьОбязательностьСкладаВТЧ()
ПараметрыЗаполнения = Новый Структура("ЕстьРаботы, ЕстьОтменено", Истина, Истина);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПриИзмененииТипаНоменклатуры", ПараметрыЗаполнения);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий, Неопределено);
СкладОбязателен = ?(Объект.Товары.Итог("СкладОбязателен") = 0, 0, 1);
КонецПроцедуры
#Область ПриИзмененииРеквизитов
&НаСервере
Процедура ПартнерПриИзмененииСервер()
ДокументЗакупки = РеквизитФормыВЗначение("Объект");
ДокументЗакупки.ЗаполнитьУсловияЗакупокПоУмолчанию(Ложь);
ОтветственныеЛицаСервер.ЗаполнитьСписокВыбораМенеджера(Элементы.Менеджер, ДокументЗакупки);
ОтветственныеЛицаСервер.УстановитьМенеджера(ДокументЗакупки);
Если ЗначениеЗаполнено(ДокументЗакупки.Соглашение) Тогда
ДокументЗакупки.ЗаполнитьУсловияЗакупокПоСоглашению(Ложь);
КонецЕсли;
ЗначениеВРеквизитФормы(ДокументЗакупки, "Объект");
УстановитьДоступностьСоглашений();
ВалютаДокумента = Объект.Валюта;
КонтрагентЮрФизЛицо = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Контрагент, "ЮрФизЛицо");
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются", Новый Структура("Номенклатура", "ХарактеристикиИспользуются"));
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(Объект.Товары, СтруктураДействий);
Если Договор <> Объект.Договор Тогда
Договор = Объект.Договор;
Объект.ВариантПриемкиТоваров = ЗакупкиСервер.ПолучитьВариантПриемкиТоваров(Неопределено, Объект.Договор);
КонецЕсли;
ХозяйственнаяОперацияПриИзмененииСервер(Ложь);
МассивИзмененныхРеквизитов = Новый Массив;
МассивИзмененныхРеквизитов.Добавить("Соглашение");
МассивИзмененныхРеквизитов.Добавить("Партнер");
МассивИзмененныхРеквизитов.Добавить("Договор");
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, МассивИзмененныхРеквизитов);
ВернутьМногооборотнуюТаруПриИзмененииСервер();
НоменклатураПартнеровСервер.ЗаполнитьНоменклатуруПартнераПоНоменклатуреПриИзмененииПартнера(Объект.Товары, Объект.Партнер);
Если ИспользоватьНаправленияДеятельности Тогда
Если Объект.ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоНакладным
Или Объект.ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоДоговорамНакладным Тогда
Объект.НаправлениеДеятельности = Справочники.НаправленияДеятельности.ПустаяСсылка();
Иначе
НаправленияДеятельностиСервер.ЗаполнитьНаправлениеПоУмолчанию(Объект.НаправлениеДеятельности, Объект.Соглашение, Объект.Договор);
КонецЕсли;
КонецЕсли;
ЗаполнитьПодчиненныеСвойстваПоСтатистике("Партнер");
ЗаполнитьВидДеятельностиНДС();
ЗаполнитьСлужебныеРеквизитыПоНазначениюВТЧ();
ЗаполнитьУстановитьРеквизитыДоставкиСервер("Партнер");
СкладПриИзмененииСервер();
ПриИзмененииНаправленияДеятельностиСервер();
ДоставкаТоваров.ПриЧтенииСозданииРаспоряженийНаСервере(Элементы, Объект,,,СводнаяИнформацияПоДоставке);
УстановитьДоступностьВидимостьДоговора();
ДенежныеСредстваСерверЛокализация.НастроитьЭлементыОперацииССамозанятым(ЭтотОбъект, Ложь);
КонецПроцедуры
&НаСервере
Процедура ПартнерОчисткаСервер()
ОтветственныеЛицаСервер.ЗаполнитьСписокВыбораМенеджера(Элементы.Менеджер, Объект);
ОтветственныеЛицаСервер.УстановитьМенеджера(Объект);
КонецПроцедуры
&НаСервере
Процедура СоглашениеОчисткаСервер()
СоглашениеПриИзмененииСервер(Ложь);
ЗаполнитьДоговорПоУмолчанию();
КонецПроцедуры
&НаСервере
Процедура СоглашениеПриИзмененииСервер(ПересчитатьЦены = Истина)
ЦенаВключаетНДС = Объект.ЦенаВключаетНДС;
Если ЗначениеЗаполнено(Объект.Соглашение) Тогда
ДокументЗакупки = РеквизитФормыВЗначение("Объект");
ДокументЗакупки.ЗаполнитьУсловияЗакупокПоСоглашению(ПересчитатьЦены);
ЗначениеВРеквизитФормы(ДокументЗакупки, "Объект");
Если Не ПересчитатьЦены И ЦенаВключаетНДС <> Объект.ЦенаВключаетНДС Тогда
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий, Неопределено);
КонецЕсли;
ВалютаДокумента = Объект.Валюта;
ХозяйственнаяОперацияПриИзмененииСервер(Ложь);
ВернутьМногооборотнуюТаруПриИзмененииСервер();
ОбновитьДоступностьЭлементовВозвратнойТары(ЭтаФорма);
Если Договор <> Объект.Договор Тогда
Договор = Объект.Договор;
Объект.ВариантПриемкиТоваров = ЗакупкиСервер.ПолучитьВариантПриемкиТоваров(Неопределено, Объект.Договор);
КонецЕсли;
Если ИспользоватьНаправленияДеятельности Тогда
Если Объект.ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоНакладным
Или Объект.ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоДоговорамНакладным Тогда
Объект.НаправлениеДеятельности = Справочники.НаправленияДеятельности.ПустаяСсылка();
Иначе
НаправленияДеятельностиСервер.ЗаполнитьНаправлениеПоУмолчанию(Объект.НаправлениеДеятельности, Объект.Соглашение, Объект.Договор);
КонецЕсли;
КонецЕсли;
Если ЗначениеЗаполнено(Объект.Организация) И ЗначениеЗаполнено(Объект.ФормаОплаты) Тогда
Если Не ЗначениеЗаполнено(Объект.БанковскийСчет) Тогда
СтруктураПараметров = ДенежныеСредстваСервер.ПараметрыЗаполненияБанковскогоСчетаОрганизацииПоУмолчанию();
СтруктураПараметров.Организация = Объект.Организация;
СтруктураПараметров.ФормаОплаты = Объект.ФормаОплаты;
СтруктураПараметров.НаправлениеДеятельности = Объект.НаправлениеДеятельности;
СтруктураПараметров.БанковскийСчет = Объект.БанковскийСчет;
Объект.БанковскийСчет = ЗначениеНастроекПовтИсп.ПолучитьБанковскийСчетОрганизацииПоУмолчанию(СтруктураПараметров);
КонецЕсли;
СтруктураПараметров = ДенежныеСредстваСервер.ПараметрыЗаполненияКассыОрганизацииПоУмолчанию();
СтруктураПараметров.Организация = Объект.Организация;
СтруктураПараметров.ФормаОплаты = Объект.ФормаОплаты;
СтруктураПараметров.НаправлениеДеятельности = Объект.НаправлениеДеятельности;
СтруктураПараметров.Касса = Объект.Касса;
Объект.Касса = ЗначениеНастроекПовтИсп.ПолучитьКассуОрганизацииПоУмолчанию(СтруктураПараметров);
КонецЕсли;
СкладПриИзмененииСервер();
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются", Новый Структура("Номенклатура", "ХарактеристикиИспользуются"));
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(Объект.Товары, СтруктураДействий);
ОбновитьДубликатыЗависимыхРеквизитов();
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
КонецЕсли;
ИзмененныеРеквизиты = ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, "Соглашение, Договор");
Если ИзмененныеРеквизиты.Свойство("ПорядокРасчетов") Тогда
Если ИспользоватьНаправленияДеятельности Тогда
Если Объект.ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоНакладным
Или Объект.ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоДоговорамНакладным Тогда
Объект.НаправлениеДеятельности = Справочники.НаправленияДеятельности.ПустаяСсылка();
Иначе
НаправленияДеятельностиСервер.ЗаполнитьНаправлениеПоУмолчанию(Объект.НаправлениеДеятельности, Объект.Соглашение, Объект.Договор);
КонецЕсли;
КонецЕсли;
КонецЕсли;
ЗаполнитьГруппуФинУчета();
УстановитьДоступностьВидимостьДоговора();
ИзмененныеРеквизиты = ЗаполнитьПодчиненныеСвойстваПоСтатистике("Соглашение");
Для каждого ИзмененныйРеквизит из ИзмененныеРеквизиты Цикл
Если ИзмененныйРеквизит.Ключ = "Организация" Тогда
ОрганизацияПриИзмененииСервер();
ИначеЕсли ИзмененныйРеквизит.Ключ = "Склад" Тогда
СкладПриИзмененииСервер();
КонецЕсли;
КонецЦикла;
ОтветственныеЛицаСервер.ЗаполнитьМенеджера(Объект);
ЗаполнитьПодчиненныеСвойстваПоСтатистике("Договор");
ОтветственныеЛицаСервер.ЗаполнитьСписокВыбораМенеджера(Элементы.Менеджер, Объект);
ОтветственныеЛицаСервер.УстановитьМенеджера(Объект);
ПриИзмененииНаправленияДеятельностиСервер();
ДоставкаТоваров.ПриЧтенииСозданииРаспоряженийНаСервере(Элементы, Объект,,,СводнаяИнформацияПоДоставке);
УстановитьВидимостьЭлементовФормыДатПоступления();
КонецПроцедуры
&НаСервере
Процедура ВалютаПриИзмененииСервер(НоваяВалюта, ПересчитатьСуммы)
ЗаполнитьДоговорПоУмолчанию();
Если ПересчитатьСуммы Тогда
СтараяВалюта = ВалютаДокумента;
ВалютаРегламентированногоУчета = ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(Объект.Организация);
СтруктурыКурсов = ВзаиморасчетыСервер.КурсыВалютДляПересчета(ЭтаФорма, СтараяВалюта, НоваяВалюта, ВалютаРегламентированногоУчета, Объект.Дата);
СтруктураКурсовСтаройВалюты = СтруктурыКурсов.СтруктураКурсовСтаройВалюты;
СтруктураКурсовНовойВалюты = СтруктурыКурсов.СтруктураКурсовНовойВалюты;
Ценообразование.ПересчитатьСуммыТабличнойЧастиВВалюту(
Объект.Товары,
Объект.ЦенаВключаетНДС,
СтараяВалюта,
НоваяВалюта,
СтруктураКурсовСтаройВалюты,
СтруктураКурсовНовойВалюты,
Ложь,
Истина);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
Ценообразование.РаспределитьСуммуПоЭтапамОплаты(Объект, СуммаЗаказано, СуммаЗалогаЗаТару);
КонецЕсли;
ЗаполнитьПодчиненныеСвойстваПоСтатистике("Валюта");
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, "Валюта");
КонецПроцедуры
&НаСервере
Процедура КонтрагентПриИзмененииСервер()
УстановитьДоступностьВидимостьДоговора();
Если ЗначениеЗаполнено(Объект.Контрагент) Тогда
ЗаполнитьДоговорПоУмолчанию();
КонецЕсли;
Если ИспользоватьНаправленияДеятельности Тогда
Если Объект.ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоНакладным
Или Объект.ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоДоговорамНакладным Тогда
Объект.НаправлениеДеятельности = Справочники.НаправленияДеятельности.ПустаяСсылка();
Иначе
НаправленияДеятельностиСервер.ЗаполнитьНаправлениеПоУмолчанию(Объект.НаправлениеДеятельности, Объект.Соглашение, Объект.Договор);
КонецЕсли;
ЗаполнитьНалогообложениеНДСЗакупки();
НалогообложениеНДСПриИзмененииСервер(Неопределено);
КонецЕсли;
ПриИзмененииНаправленияДеятельностиСервер();
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, "Контрагент");
ПриИзмененииКлючевыхРеквизитовСостояниеЭДО();
ИсходныйВидКонтрагента = КонтрагентЮрФизЛицо;
КонтрагентЮрФизЛицо = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Контрагент, "ЮрФизЛицо");
Если ИсходныйВидКонтрагента <> КонтрагентЮрФизЛицо Тогда
ДенежныеСредстваСерверЛокализация.ЗаполнитьПризнакЗакупкиУСамозанятого(ЭтотОбъект);
ОперацияССамозанятымПриИзмененииНаСервере();
КонецЕсли;
ДенежныеСредстваСерверЛокализация.НастроитьЭлементыОперацииССамозанятым(ЭтотОбъект, Ложь);
КонецПроцедуры
&НаСервере
Процедура ОрганизацияПриИзмененииСервер()
УстановитьДоступностьВидимостьДоговора();
Если ЗначениеЗаполнено(Объект.Организация) Тогда
ЗаполнитьДоговорПоУмолчанию();
Если ИспользоватьНаправленияДеятельности Тогда
Если Объект.ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоНакладным
Или Объект.ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоДоговорамНакладным Тогда
Объект.НаправлениеДеятельности = Справочники.НаправленияДеятельности.ПустаяСсылка();
Иначе
НаправленияДеятельностиСервер.ЗаполнитьНаправлениеПоУмолчанию(Объект.НаправлениеДеятельности, Объект.Соглашение, Объект.Договор);
КонецЕсли;
КонецЕсли;
ЗаполнитьВидДеятельностиНДС();
ЗаполнитьНалогообложениеНДСЗакупки();
НалогообложениеНДСПриИзмененииСервер(Неопределено);
КонецЕсли;
ДенежныеСредстваСервер.ПроверитьЗаполнитьБанковскийСчетОрганизацииПоВладельцу(Объект.Организация, Объект.БанковскийСчет, , Объект.НаправлениеДеятельности);
ДенежныеСредстваСервер.ПроверитьЗаполнитьКассуОрганизацииПоВладельцу(Объект.Организация, Объект.Касса, Объект.ФормаОплаты, Объект.НаправлениеДеятельности);
ЗаполнитьПодчиненныеСвойстваПоСтатистике("Организация");
ОтветственныеЛицаСервер.УстановитьМенеджера(Объект);
ПриИзмененииНаправленияДеятельностиСервер();
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, "Организация");
ПриИзмененииКлючевыхРеквизитовСостояниеЭДО();
ВалютаДокумента = Объект.Валюта;
ДенежныеСредстваСерверЛокализация.НастроитьЭлементыОперацииССамозанятым(ЭтотОбъект, Ложь);
КонецПроцедуры
&НаСервере
Процедура СтатусПриИзмененииСервер()
УстановитьДоступностьЭлементовПоСтатусуСервер();
Если Объект.Товары.Количество() > 0 Тогда
Если Объект.Статус = ПредопределенноеЗначение("Перечисление.СтатусыЗаказовПоставщикам.Подтвержден") Или
Объект.Статус = ПредопределенноеЗначение("Перечисление.СтатусыЗаказовПоставщикам.Закрыт") Тогда
ЗаполнитьПустыеДатыПоступленияСервер();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ХозяйственнаяОперацияПриИзмененииСервер(ВызовПоКоманде = Истина)
Если ВызовПоКоманде Тогда
ЗаполнитьДоговорПоУмолчанию();
Если ЗначениеЗаполнено(Объект.Соглашение)
И ЗначениеЗаполнено(Объект.ХозяйственнаяОперация) Тогда
ЭтоДвухходовка = ХозяйственныеОперацииРаздельнойЗакупки(Истина, Истина).Найти(Объект.ХозяйственнаяОперация) <> Неопределено;
ОперацияСоглашения = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Соглашение, "ХозяйственнаяОперация");
Если ЭтоДвухходовка Тогда
ОсновнаяОперацииДокумента = ЗакупкиСервер.ОсновнаяХозяйственнаяОперацияРаздельнойЗакупки(Объект.ХозяйственнаяОперация);
Иначе
ОсновнаяОперацииДокумента = Объект.ХозяйственнаяОперация;
КонецЕсли;
ИспользуютсяДоговорыКонтрагентов = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Соглашение, "ИспользуютсяДоговорыКонтрагентов");
Объект.Соглашение = ?(ОсновнаяОперацииДокумента = ОперацияСоглашения,
Объект.Соглашение,
Справочники.СоглашенияСПоставщиками.ПустаяСсылка());
Объект.Соглашение = ?(ЭтоДвухходовка И Не ИспользуютсяДоговорыКонтрагентов,
Справочники.СоглашенияСПоставщиками.ПустаяСсылка(),
Объект.Соглашение);
КонецЕсли;
КонецЕсли;
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПриемНаКомиссию Тогда
Если ИспользоватьРучныеСкидкиВЗакупках Тогда
ЗакупкиСервер.ОтменитьРучныеСкидки(Объект, "Товары");
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
КонецЕсли;
Объект.ВернутьМногооборотнуюТару = Ложь;
Объект.ТребуетсяЗалогЗаТару = Ложь;
ВернутьМногооборотнуюТаруПриИзмененииСервер();
ИначеЕсли Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ЗакупкаПоИмпорту
ИЛИ Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ЗакупкаПоИмпортуТоварыВПути
ИЛИ Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭС
ИЛИ Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭСТоварыВПути
ИЛИ Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭСФактуровкаПоставки Тогда
Объект.ВернутьМногооборотнуюТару = Ложь;
Объект.ТребуетсяЗалогЗаТару = Ложь;
ВернутьМногооборотнуюТаруПриИзмененииСервер();
ИначеЕсли Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПриемНаХранениеСПравомПродажи Тогда
Объект.НалогообложениеНДС = Перечисления.ТипыНалогообложенияНДС.ПродажаНеОблагаетсяНДС;
Объект.ЦенаВключаетНДС = Ложь;
КонецЕсли;
ОбновитьДубликатыЗависимыхРеквизитов();
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
УстановитьВидимостьЭлементовПоОперацииСервер();
НастроитьПараметрыВыбораЭлементов();
ОбновитьДоступностьЭлементовВозвратнойТары(ЭтаФорма);
ЗаполнитьНалогообложениеНДСЗакупки();
НалогообложениеНДСПриИзмененииСервер(Неопределено);
НастроитьКолонкиСписанияПоРасходамТЧТовары();
ЗаполнитьВидДеятельностиНДС();
ПараметрыВыбораСтатей = Документы.ЗаказПоставщику.ПараметрыВыбораСтатейИАналитик(Объект.ХозяйственнаяОперация);
ДоходыИРасходыСервер.ПриИзмененииПараметровВыбораСтатей(ЭтаФорма, ПараметрыВыбораСтатей);
ВзаиморасчетыСервер.ПриИзмененииПараметровМеханизма(ЭтаФорма);
ДенежныеСредстваСерверЛокализация.ЗаполнитьПризнакЗакупкиУСамозанятого(ЭтотОбъект);
ОперацияССамозанятымПриИзмененииНаСервере();
ДенежныеСредстваСерверЛокализация.НастроитьЭлементыОперацииССамозанятым(ЭтотОбъект, Ложь);
КонецПроцедуры
&НаСервере
Процедура ЦенаВключаетНДСПриИзмененииСервер(КэшированныеЗначения)
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий, КэшированныеЗначения);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
КонецПроцедуры
&НаСервере
Процедура НалогообложениеНДСПриИзмененииСервер(КэшированныеЗначения)
КэшированныеЗначенияСлужебные = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("СкорректироватьСтавкуНДС",
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект, Истина, Объект.ВернутьМногооборотнуюТару));
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий, КэшированныеЗначенияСлужебные);
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
КэшированныеЗначенияСлужебные.ОбработанныеСтроки,
СтруктураДействий,
Объект.Товары,
КэшированныеЗначения);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
УчетНДСУП.УстановитьВидимостьКомандыЗаполнитьСтавкуНДС(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура СкладПриИзмененииСервер()
СкладГруппа = Справочники.Склады.ЭтоГруппаИСкладыИспользуютсяВТЧДокументовЗакупки(Объект.Склад);
Элементы.ТоварыЗаполнитьСкладВВыделенныхСтроках.Доступность = СкладГруппа;
СкладыСервер.ЗаполнитьСкладыВТабличнойЧасти(Объект.Склад, СкладГруппа, Объект.Товары, Ложь, "СписатьНаРасходы");
ПриИзмененииСкладаВТабличнойЧастиСервер();
УстановитьПараметрыВыбораТоварыСклад();
ЗаполнитьСписокАдресовДоставкиДляПоставщика(Истина);
ЗаполнитьВидДеятельностиНДС();
КонтролироватьАссортимент = АссортиментСерверПовтИсп.КонтролироватьАссортимент(Объект.Склад, Объект.Дата);
Если КонтролироватьАссортимент Тогда
АссортиментСервер.ПроверитьАссортиментТаблицыПодобранныхТоваров(Объект, "Склад");
КонецЕсли;
Если Не СкладГруппа Тогда
Элементы.ТоварыГруппаПолучатель.Заголовок = НСтр("ru = 'Подразделение-получатель'");
Иначе
Элементы.ТоварыГруппаПолучатель.Заголовок = НСтр("ru = 'Получатель'");
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ДоговорПриИзмененииСервер()
ЗакупкиВызовСервера.ЗаполнитьБанковскиеСчетаПоДоговору(Объект.Договор, Объект.БанковскийСчет);
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, "Договор");
ЗаполнитьГруппуФинУчета();
Если ИспользоватьНаправленияДеятельности Тогда
Если Объект.ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоНакладным
Или Объект.ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоДоговорамНакладным Тогда
Объект.НаправлениеДеятельности = Справочники.НаправленияДеятельности.ПустаяСсылка();
Иначе
НаправленияДеятельностиСервер.ЗаполнитьНаправлениеПоУмолчанию(Объект.НаправлениеДеятельности, Объект.Соглашение, Объект.Договор);
КонецЕсли;
КонецЕсли;
ВариантОформленияДоговораЗакупок = ЗакупкиСервер.ПолучитьВариантОформленияДоговораЗакупок(Объект.Договор);
ЗаполнитьНалогообложениеНДСЗакупки();
НалогообложениеНДСПриИзмененииСервер(Неопределено);
ЗаполнитьВидДеятельностиНДС();
ОтветственныеЛицаСервер.ЗаполнитьСписокВыбораМенеджера(Элементы.Менеджер, Объект);
ОтветственныеЛицаСервер.УстановитьМенеджера(Объект);
ЗаполнитьПодчиненныеСвойстваПоСтатистике("Договор");
ПриИзмененииНаправленияДеятельностиСервер();
Если Договор <> Объект.Договор Тогда
Договор = Объект.Договор;
Объект.ВариантПриемкиТоваров = ЗакупкиСервер.ПолучитьВариантПриемкиТоваров(Неопределено, Объект.Договор);
КонецЕсли;
ДоставкаТоваров.ПриЧтенииСозданииРаспоряженийНаСервере(Элементы, Объект,,,СводнаяИнформацияПоДоставке);
ПриИзмененииКлючевыхРеквизитовСостояниеЭДО();
НастроитьКолонкиСписанияПоРасходамТЧТовары();
ДенежныеСредстваСерверЛокализация.НастроитьЭлементыОперацииССамозанятым(ЭтотОбъект, Ложь);
КонецПроцедуры
&НаСервере
Функция ДатаПриИзмененииСервер(ПересчитыватьЦены)
Если ПересчитыватьЦены Тогда
ЦеныРассчитаны = ЗаполнитьЦеныПоСоглашениюСервер(Истина);
Иначе
ЦеныРассчитаны = Ложь;
КонецЕсли;
ЗаполнитьВидДеятельностиНДС();
КэшированныеЗначенияСлужебные = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("СкорректироватьСтавкуНДС",
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект, Истина, Объект.ВернутьМногооборотнуюТару));
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий, КэшированныеЗначенияСлужебные);
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
КэшированныеЗначенияСлужебные.ОбработанныеСтроки,
СтруктураДействий,
Объект.Товары);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
РассчитатьИтоговыеПоказателиЗаказа(ЭтотОбъект);
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтотОбъект, "Дата");
Возврат ЦеныРассчитаны;
КонецФункции
&НаСервере
Процедура ОперацияССамозанятымПриИзмененииНаСервере()
ЗаполнитьДоговорПоУмолчанию();
ДенежныеСредстваСерверЛокализация.ОперацияССамозанятымПриИзменении(ЭтотОбъект, Ложь);
НалогообложениеНДСПриИзмененииСервер(Неопределено);
КонецПроцедуры
&НаСервере
Процедура ДатаСогласованияПриИзмененииНаСервере()
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, "ДатаСогласования");
КонецПроцедуры
&НаСервере
Процедура ДатаОтгрузкиПриИзмененииНаСервере()
Если Не ЗначениеЗаполнено(Объект.ДатаОтгрузки) Тогда
Объект.ДлительностьДоставки = 0;
КонецЕсли;
Объект.ДатаПоступления = Объект.ДатаОтгрузки + 86400 * Объект.ДлительностьДоставки;
ЗаполнитьДатыПоступленияСервер(Объект.ДатаПоступления);
ОбеспечениеВДокументахСервер.ЗаполнитьРеквизитВКоллекции(Объект.Товары, "ДатаОтгрузки", Объект.ДатаОтгрузки);
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтотОбъект, "Товары.ДатаОтгрузки");
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект, Истина));
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий, Неопределено);
ОбновитьДубликатыЗависимыхРеквизитов();
РассчитатьИтоговыеПоказателиЗаказа(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ДатаПоступленияПриИзмененииСервер()
Если ЗначениеЗаполнено(Объект.ДатаОтгрузки) Тогда
Длительность = (Объект.ДатаПоступления - Объект.ДатаОтгрузки)/86400;
Объект.ДлительностьДоставки = ?(Длительность < 0,0,Длительность);
Иначе
Объект.ДатаОтгрузки = Объект.ДатаПоступления - 86400 * Объект.ДлительностьДоставки;
Если Объект.ДатаОтгрузки < Объект.Дата Тогда
Объект.ДатаОтгрузки = Объект.Дата;
Объект.ДлительностьДоставки = (Объект.ДатаПоступления - Объект.ДатаОтгрузки)/86400;
КонецЕсли;
ОбеспечениеВДокументахСервер.ЗаполнитьРеквизитВКоллекции(Объект.Товары, "ДатаОтгрузки", Объект.ДатаОтгрузки);
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтотОбъект, "Товары.ДатаОтгрузки");
КонецЕсли;
ЗаполнитьДатыПоступленияСервер(Объект.ДатаПоступления);
КонецПроцедуры
&НаСервере
Процедура ПоступлениеОднойДатойПриИзмененииСервер()
Если Объект.ПоступлениеОднойДатой Тогда
Объект.ДатаОтгрузки = МаксимальнаяДатаОтгрузки();
ЗаполнитьДатыОтгрузкиСервер(Объект.ДатаОтгрузки);
ДатаОтгрузкиПриИзмененииНаСервере();
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтотОбъект, "Товары.ДатаОтгрузки");
КонецЕсли;
УстановитьВидимостьЭлементовФормыДатПоступления();
КонецПроцедуры
&НаКлиенте
Процедура ВернутьМногооборотнуюТаруПриИзменении(Элемент)
ВернутьМногооборотнуюТаруПриИзмененииСервер();
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииСкладаВТабличнойЧастиСервер()
СкладыСервер.ПриИзмененииСкладаВТабличнойЧасти(Объект.Товары, ТаблицаСкладов, СкладГруппа);
ВсегоСкладов = ТаблицаСкладов.Количество();
СкладыКлиентСервер.ОбновитьКартинкуГруппыСкладов(НадписьНесколькоСкладов, Элементы.КартинкаНесколькоСкладов, ВсегоСкладов);
КонецПроцедуры
&НаСервере
Процедура НаправлениеДеятельностиПриИзмененииСервер()
Если Объект.ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоДоговорамКонтрагентов Тогда
ЗаполнитьДоговорПоУмолчанию();
КонецЕсли;
ПриИзмененииНаправленияДеятельностиСервер();
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, "НаправлениеДеятельности");
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииНаправленияДеятельностиСервер()
ИзмененныеСтроки = НаправленияДеятельностиСервер.ПриИзмененииНаправленияДеятельности(ЭтотОбъект);
ЗакупкиСервер.ОчиститьРеквизитыСписанияНаРасходыПриУстановкеНазначенияВТабличнойЧасти(ИзмененныеСтроки);
КонецПроцедуры
&НаКлиенте
Процедура ЖелаемаяДатаПоступленияПриИзменении(Элемент)
ЖелаемаяДатаПоступленияПриИзмененииСервер();
КонецПроцедуры
&НаСервере
Процедура ЖелаемаяДатаПоступленияПриИзмененииСервер()
ВзаиморасчетыСервер.ПриИзмененииПараметровМеханизма(ЭтаФорма);
КонецПроцедуры
&НаСервере
Процедура ТоварыПриИзмененииНаСервере()
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтотОбъект, "Товары.ДатаОтгрузки");
КонецПроцедуры
#КонецОбласти
#Область ЦенообразованиеИСкидки
&НаСервере
Функция ЗаполнитьЦеныПоСоглашениюСервер(ПоВсемСтрокам = Ложь, ТекстОшибки = "")
Если Объект.ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.ПриемНаХранениеСПравомПродажи
И ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Соглашение, "ЦенаВключаетНДС") <> Объект.ЦенаВключаетНДС Тогда
ТекстОшибки =
НСтр("ru = 'Установленные значения полей ""Цена включает НДС"" в документе и соглашении разные.'");
Возврат Ложь;
КонецЕсли;
Если ПоВсемСтрокам Тогда
МассивСтрок = Неопределено;
Иначе
МассивСтрок = Новый Массив;
Для Каждого Строка Из Элементы.Товары.ВыделенныеСтроки Цикл
МассивСтрок.Добавить(Объект.Товары.НайтиПоИдентификатору(Строка));
КонецЦикла;
КонецЕсли;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС",СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуНДС",СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуРучнойСкидки");
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("ПересчитыватьСуммуРучнойСкидки", Ложь));
ПараметрыЗаполнения = ЦеныПартнеровЗаполнениеСервер.НовыйПараметрыЗаполненияЗаполнитьЦены();
ПараметрыЗаполнения.Вставить("ПоляЗаполнения", "Цена, ВидЦеныПоставщика");
ПараметрыЗаполнения.Вставить("Дата", Объект.Дата);
ПараметрыЗаполнения.Вставить("Организация", Объект.Организация);
ПараметрыЗаполнения.Вставить("Валюта", Объект.Валюта);
ПараметрыЗаполнения.Вставить("Соглашение", Объект.Соглашение);
ПараметрыЗаполнения.Вставить("НалогообложениеНДС", Объект.НалогообложениеНДС);
ЦеныРассчитаны = ЦеныПартнеровЗаполнениеСервер.ЗаполнитьЦены(
Объект.Товары,
МассивСтрок,
ПараметрыЗаполнения,
СтруктураДействий);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
Возврат ЦеныРассчитаны;
КонецФункции
&НаСервере
Процедура НазначитьРучнуюСкидкуНаСервере(СуммаСкидкиНаценки, Знач ВыделенныеСтроки, АдресВоВременномХранилище)
ПараметрыСкидки = СкидкиНаценкиЗаполнениеСервер.НовыйПараметрыНазначитьРучнуюСкидку();
ПараметрыСкидки.ИспользуютсяАвтоматическиеСкидки = Ложь;
ПараметрыСкидки.РассчитыватьСуммуСНДС = Истина;
ПараметрыСкидки.ВыделенныеСтроки = ВыделенныеСтроки;
ПараметрыСкидки.АдресВоВременномХранилище = АдресВоВременномХранилище;
СкидкиНаценкиЗаполнениеСервер.НазначитьРучнуюСкидку(Объект, "Товары", СуммаСкидкиНаценки, ПараметрыСкидки);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
КонецПроцедуры
&НаСервере
Процедура ОтменитьРучныеСкидкиНаСервере()
СкидкиНаценкиЗаполнениеСервер.ОтменитьРучныеСкидки(Объект, "Товары", Ложь, Истина);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
КонецПроцедуры
&НаСервере
Функция ЗаполнитьЦеныВыделенныхСтрокПоВидуЦеныПоставщикаСервер(ВидЦеныПоставщика)
МассивСтрок = Новый Массив;
Для Каждого Строка Из Элементы.Товары.ВыделенныеСтроки Цикл
МассивСтрок.Добавить(Объект.Товары.НайтиПоИдентификатору(Строка));
КонецЦикла;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС",СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуНДС",СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуРучнойСкидки");
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("ПересчитыватьСуммуРучнойСкидки", Ложь));
ПараметрыЗаполнения = ЦеныПартнеровЗаполнениеСервер.НовыйПараметрыЗаполненияЗаполнитьЦены();
ПараметрыЗаполнения.Вставить("ПоляЗаполнения", "Цена, ВидЦеныПоставщика");
ПараметрыЗаполнения.Вставить("Дата", Объект.Дата);
ПараметрыЗаполнения.Вставить("Организация", Объект.Организация);
ПараметрыЗаполнения.Вставить("Валюта", Объект.Валюта);
ПараметрыЗаполнения.Вставить("ВидЦеныПоставщика", ВидЦеныПоставщика);
ЦеныРассчитаны = ЦеныПартнеровЗаполнениеСервер.ЗаполнитьЦены(
Объект.Товары,
МассивСтрок,
ПараметрыЗаполнения,
СтруктураДействий);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
Возврат ЦеныРассчитаны;
КонецФункции
&НаСервере
Функция СкорректироватьЦеныПоПоступлениямСервер()
ЦеныСкорректированы = Ложь;
Запрос = Новый Запрос("ВЫБРАТЬ
| ТоварыЗаказа.КодСтроки КАК КодСтроки,
| ТоварыЗаказа.Цена КАК Цена,
| ВЫРАЗИТЬ(ТоварыЗаказа.Упаковка КАК Справочник.УпаковкиЕдиницыИзмерения) КАК Упаковка,
| ВЫРАЗИТЬ(ТоварыЗаказа.Номенклатура КАК Справочник.Номенклатура) КАК Номенклатура,
| ТоварыЗаказа.Количество КАК Количество,
| ТоварыЗаказа.СуммаРучнойСкидки КАК СуммаРучнойСкидки
|ПОМЕСТИТЬ ВремТоварыЗаказа
|ИЗ
| &ТоварыЗаказа КАК ТоварыЗаказа
|;
|
|
|ВЫБРАТЬ
| ТоварыЗаказа.КодСтроки КАК КодСтроки,
| ТоварыЗаказа.Цена КАК Цена,
| ТоварыЗаказа.Упаковка КАК Упаковка,
| ТоварыЗаказа.Номенклатура КАК Номенклатура,
| ТоварыЗаказа.Количество КАК Количество,
| ТоварыЗаказа.СуммаРучнойСкидки КАК СуммаРучнойСкидки,
| ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки1, 1) КАК КоэффициентПересчетаУпаковки
|
|ПОМЕСТИТЬ ТоварыЗаказа
|ИЗ
| ВремТоварыЗаказа КАК ТоварыЗаказа
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ЗаказыПоставщикам.Регистратор КАК ДокументПоступления
|ПОМЕСТИТЬ ДокументыПоступления
|ИЗ
| РегистрНакопления.ЗаказыПоставщикам КАК ЗаказыПоставщикам
| ГДЕ
| ЗаказыПоставщикам.ЗаказПоставщику = &ЗаказПоставщику
| И ЗаказыПоставщикам.Регистратор ССЫЛКА Документ.ПриобретениеТоваровУслуг
|;
|
|
|ВЫБРАТЬ
| ТоварыПоступления.КодСтроки КАК КодСтроки,
| ТоварыПоступления.Количество КАК Количество,
| ДокументыПоступления.ДокументПоступления.Валюта КАК Валюта,
| ДокументыПоступления.ДокументПоступления.ВалютаВзаиморасчетов КАК ВалютаВзаиморасчетов,
| ДокументыПоступления.ДокументПоступления.КурсЗнаменатель КАК КурсЗнаменатель,
| ДокументыПоступления.ДокументПоступления.КурсЧислитель КАК КурсЧислитель,
| НАЧАЛОПЕРИОДА(ДокументыПоступления.ДокументПоступления.Дата, ДЕНЬ) КАК Дата,
| ТоварыПоступления.Цена КАК Цена,
| ТоварыПоступления.Сумма КАК Сумма,
| ТоварыПоступления.СуммаРучнойСкидки КАК СуммаРучнойСкидки,
| ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки2, 1) КАК КоэффициентПересчетаУпаковки
|ПОМЕСТИТЬ ТоварыПоступления
|ИЗ
| ДокументыПоступления КАК ДокументыПоступления
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПриобретениеТоваровУслуг.Товары КАК ТоварыПоступления
| ПО ДокументыПоступления.ДокументПоступления = ТоварыПоступления.Ссылка
|ГДЕ
| ТоварыПоступления.КодСтроки > 0
| И ТоварыПоступления.ЗаказПоставщику = &ЗаказПоставщику
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТоварыПоступления.Валюта КАК Валюта,
| ТоварыПоступления.Дата КАК Дата
|ПОМЕСТИТЬ ДатыКурсовВалютПоступлений
|ИЗ
| ТоварыПоступления КАК ТоварыПоступления
| ГДЕ
| НЕ ТоварыПоступления.Валюта = &ВалютаДокумента
| И НЕ ТоварыПоступления.ВалютаВзаиморасчетов = &ВалютаДокумента
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ДатыКурсовВалютПоступлений.Валюта КАК Валюта,
| ДатыКурсовВалютПоступлений.Дата КАК Дата
|ПОМЕСТИТЬ ДатыКурсовВалют
|ИЗ
| ДатыКурсовВалютПоступлений КАК ДатыКурсовВалютПоступлений
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ВЫРАЗИТЬ(&ВалютаДокумента КАК Справочник.Валюты) КАК Валюта,
| ДатыКурсовВалютПоступлений.Дата КАК Дата
|
|ИЗ
| ДатыКурсовВалютПоступлений КАК ДатыКурсовВалютПоступлений
|
|ИНДЕКСИРОВАТЬ ПО
| Валюта,
| Дата
|
|;
|
|ВЫБРАТЬ
| ВложенныйЗапрос.Дата КАК Дата,
| ВложенныйЗапрос.Валюта КАК Валюта,
| КурсыВалют.КурсЧислитель КАК КурсЧислитель,
| КурсыВалют.КурсЗнаменатель КАК КурсЗнаменатель
|ПОМЕСТИТЬ КурсыВалютДляПересчета
|ИЗ
| (ВЫБРАТЬ
| ДатыКурсовВалют.Дата КАК Дата,
| КурсыВалют.Валюта КАК Валюта,
| МАКСИМУМ(КурсыВалют.Период) КАК Период
| ИЗ
| ДатыКурсовВалют КАК ДатыКурсовВалют
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ОтносительныеКурсыВалют КАК КурсыВалют
| ПО ДатыКурсовВалют.Валюта = КурсыВалют.Валюта
| И ДатыКурсовВалют.Дата >= КурсыВалют.Период
| И КурсыВалют.БазоваяВалюта = &ВалютаРегУчета
|
| СГРУППИРОВАТЬ ПО
| ДатыКурсовВалют.Дата,
| КурсыВалют.Валюта) КАК ВложенныйЗапрос
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ОтносительныеКурсыВалют КАК КурсыВалют
| ПО ВложенныйЗапрос.Валюта = КурсыВалют.Валюта
| И ВложенныйЗапрос.Период = КурсыВалют.Период
| И КурсыВалют.БазоваяВалюта = &ВалютаРегУчета
|;
|
|ВЫБРАТЬ
| ДатыКурсовВалютПоступлений.Дата КАК Дата,
| ДатыКурсовВалютПоступлений.Валюта КАК Валюта,
| КурсыВалютПриобретений.КурсЧислитель * КурсыВалютЗаказа.КурсЗнаменатель /
| (КурсыВалютЗаказа.КурсЧислитель * КурсыВалютПриобретений.КурсЗнаменатель) КАК КоэффициентПересчета
|ПОМЕСТИТЬ КурсыВалют
|ИЗ
| ДатыКурсовВалютПоступлений КАК ДатыКурсовВалютПоступлений
| ЛЕВОЕ СОЕДИНЕНИЕ КурсыВалютДляПересчета КАК КурсыВалютПриобретений
| ПО
| ДатыКурсовВалютПоступлений.Дата = КурсыВалютПриобретений.Дата
| И ДатыКурсовВалютПоступлений.Валюта = КурсыВалютПриобретений.Валюта
|
| ЛЕВОЕ СОЕДИНЕНИЕ КурсыВалютДляПересчета КАК КурсыВалютЗаказа
| ПО ДатыКурсовВалютПоступлений.Дата = КурсыВалютЗаказа.Дата
| И КурсыВалютЗаказа.Валюта = &ВалютаДокумента
|
|;
|
|ВЫБРАТЬ
| ТоварыЗаказа.КодСтроки КАК КодСтроки,
| ТоварыЗаказа.КоэффициентПересчетаУпаковки КАК КоэффициентПересчетаУпаковкиЗаказа,
| СУММА(ТоварыПоступления.Количество) КАК КоличествоПоступления,
| СУММА(ВЫРАЗИТЬ(ВЫБОР
| КОГДА &ВалютаДокумента <> ТоварыПоступления.Валюта ТОГДА
| ВЫБОР
| КОГДА &ВалютаДокумента = ТоварыПоступления.ВалютаВзаиморасчетов ТОГДА
| ВЫБОР
| КОГДА ТоварыПоступления.Валюта = &ВалютаРегУчета ТОГДА
| ТоварыПоступления.Цена / ТоварыПоступления.КурсЧислитель * ТоварыПоступления.КурсЗнаменатель
| ИНАЧЕ ТоварыПоступления.Цена * ТоварыПоступления.КурсЧислитель / ТоварыПоступления.КурсЗнаменатель
| КОНЕЦ
| ИНАЧЕ ТоварыПоступления.Цена * ЕСТЬNULL(КурсыВалют.КоэффициентПересчета, 1)
| КОНЕЦ
| ИНАЧЕ ТоварыПоступления.Цена
| КОНЕЦ * ТоварыПоступления.Количество / ТоварыПоступления.КоэффициентПересчетаУпаковки КАК ЧИСЛО(31, 2))) КАК СсуммаЦенПоступления,
| СУММА(ВЫРАЗИТЬ(ВЫБОР
| КОГДА &ВалютаДокумента <> ТоварыПоступления.Валюта ТОГДА
| ВЫБОР
| КОГДА &ВалютаДокумента = ТоварыПоступления.ВалютаВзаиморасчетов ТОГДА
| ВЫБОР
| КОГДА ТоварыПоступления.Валюта = &ВалютаРегУчета ТОГДА
| ТоварыПоступления.СуммаРучнойСкидки / ТоварыПоступления.КурсЧислитель * ТоварыПоступления.КурсЗнаменатель
| ИНАЧЕ ТоварыПоступления.СуммаРучнойСкидки * ТоварыПоступления.КурсЧислитель / ТоварыПоступления.КурсЗнаменатель
| КОНЕЦ
| ИНАЧЕ ТоварыПоступления.СуммаРучнойСкидки * ЕСТЬNULL(КурсыВалют.КоэффициентПересчета, 1)
| КОНЕЦ
| ИНАЧЕ ТоварыПоступления.СуммаРучнойСкидки
| КОНЕЦ КАК ЧИСЛО(31, 2))) КАК СуммаРучнойСкидкиПоступления,
| СУММА(ВЫРАЗИТЬ(ВЫБОР
| КОГДА &ВалютаДокумента <> ТоварыПоступления.Валюта ТОГДА
| ВЫБОР
| КОГДА &ВалютаДокумента = ТоварыПоступления.ВалютаВзаиморасчетов ТОГДА
| ВЫБОР
| КОГДА ТоварыПоступления.Валюта = &ВалютаРегУчета ТОГДА
| ТоварыПоступления.Сумма / ТоварыПоступления.КурсЧислитель * ТоварыПоступления.КурсЗнаменатель
| ИНАЧЕ ТоварыПоступления.Сумма * ТоварыПоступления.КурсЧислитель / ТоварыПоступления.КурсЗнаменатель
| КОНЕЦ
| ИНАЧЕ ТоварыПоступления.Сумма * ЕСТЬNULL(КурсыВалют.КоэффициентПересчета, 1)
| КОНЕЦ
| ИНАЧЕ ТоварыПоступления.Сумма
| КОНЕЦ КАК ЧИСЛО(31, 2))) КАК СуммаПоступления
|ПОМЕСТИТЬ ЦеныПоПоступлениям
|ИЗ
| ТоварыЗаказа КАК ТоварыЗаказа
| ЛЕВОЕ СОЕДИНЕНИЕ ТоварыПоступления КАК ТоварыПоступления
| ПО ТоварыЗаказа.КодСтроки = ТоварыПоступления.КодСтроки
| ЛЕВОЕ СОЕДИНЕНИЕ КурсыВалют КАК КурсыВалют
| ПО ТоварыПоступления.Валюта = КурсыВалют.Валюта
| И ТоварыПоступления.Дата = КурсыВалют.Дата
|СГРУППИРОВАТЬ ПО
| ТоварыЗаказа.КодСтроки,
| ТоварыЗаказа.КоэффициентПересчетаУпаковки
|;
|
|
|ВЫБРАТЬ
| ЦеныПоПоступлениям.КодСтроки КАК КодСтроки,
| СРЕДНЕЕ(ЦеныПоПоступлениям.СсуммаЦенПоступления / ЦеныПоПоступлениям.КоличествоПоступления * ЦеныПоПоступлениям.КоэффициентПересчетаУпаковкиЗаказа) КАК ЦенаПоступления,
| СУММА(ЦеныПоПоступлениям.СуммаРучнойСкидкиПоступления) КАК СуммаРучнойСкидкиПоступления,
| СУММА(ЦеныПоПоступлениям.СуммаПоступления) КАК СуммаПоступления
|ПОМЕСТИТЬ СредниеЦеныПоПоступлениям
|ИЗ ЦеныПоПоступлениям КАК ЦеныПоПоступлениям
|СГРУППИРОВАТЬ ПО
| ЦеныПоПоступлениям.КодСтроки
|;
|
|
|ВЫБРАТЬ
| ТоварыЗаказа.КодСтроки КАК КодСтроки,
| СредниеЦеныПоПоступлениям.ЦенаПоступления КАК ЦенаПоступления,
| СредниеЦеныПоПоступлениям.СуммаРучнойСкидкиПоступления КАК СуммаРучнойСкидкиПоступления,
| СредниеЦеныПоПоступлениям.СуммаПоступления КАК СуммаПоступления
|ИЗ
| ТоварыЗаказа КАК ТоварыЗаказа
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ СредниеЦеныПоПоступлениям КАК СредниеЦеныПоПоступлениям
| ПО ТоварыЗаказа.КодСтроки = СредниеЦеныПоПоступлениям.КодСтроки
| И (ТоварыЗаказа.Цена <> СредниеЦеныПоПоступлениям.ЦенаПоступления
| ИЛИ ТоварыЗаказа.СуммаРучнойСкидки <> СредниеЦеныПоПоступлениям.СуммаРучнойСкидкиПоступления)");
Запрос.УстановитьПараметр("ТоварыЗаказа", Объект.Товары.Выгрузить(, "КодСтроки,Цена,Номенклатура,Упаковка,Количество,СуммаРучнойСкидки"));
Запрос.УстановитьПараметр("ЗаказПоставщику", Объект.Ссылка);
Запрос.УстановитьПараметр("ВалютаДокумента", Объект.Валюта);
Запрос.УстановитьПараметр("ВалютаРегУчета", ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(Объект.Организация));
Запрос.Текст = СтрЗаменить(Запрос.Текст,
"&ТекстЗапросаКоэффициентУпаковки1",
Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
"ТоварыЗаказа.Упаковка",
"ТоварыЗаказа.Номенклатура"));
Запрос.Текст = СтрЗаменить(Запрос.Текст,
"&ТекстЗапросаКоэффициентУпаковки2",
Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
"ТоварыПоступления.Упаковка",
"ТоварыПоступления.Номенклатура"));
УстановитьПривилегированныйРежим(Истина);
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
ОбрабатываемыеСтроки = Новый Массив;
ОбрабатываемыеСтрокиБезПересчетаСуммы = Новый Массив;
Пока Выборка.Следующий() Цикл
НайденныеСтроки = Объект.Товары.НайтиСтроки(Новый Структура("КодСтроки", Выборка.КодСтроки));
Если НайденныеСтроки.Количество() > 0 Тогда
НайденныеСтроки[0].Цена = Выборка.ЦенаПоступления;
Если Выборка.СуммаРучнойСкидкиПоступления <> НайденныеСтроки[0].СуммаРучнойСкидки Тогда
ОбрабатываемыеСтрокиБезПересчетаСуммы.Добавить(НайденныеСтроки[0]);
НайденныеСтроки[0].ПроцентРучнойСкидки = -(Выборка.СуммаПоступления * 100
/ (НайденныеСтроки[0].КоличествоУпаковок*НайденныеСтроки[0].Цена)-100);
НайденныеСтроки[0].СуммаРучнойСкидки = Выборка.СуммаРучнойСкидкиПоступления;
НайденныеСтроки[0].Сумма = Выборка.СуммаПоступления;
Иначе
ОбрабатываемыеСтроки.Добавить(НайденныеСтроки[0]);
КонецЕсли;
ЦеныСкорректированы = Истина;
КонецЕсли;
КонецЦикла;
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтрокиБезПересчетаСуммы,
СтруктураДействий,
Объект.Товары,
КэшированныеЗначения);
СтруктураДействий.Вставить("ПересчитатьСуммуРучнойСкидки");
СтруктураДействий.Вставить("ПересчитатьСумму");
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.Товары,
КэшированныеЗначения);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
Возврат ЦеныСкорректированы;
КонецФункции
#КонецОбласти
#Область ПодборыИОбработкаПроверкиКоличества
&НаКлиенте
Процедура СообщитьОбОшибкахОткрытияПодбора(Отказ)
Если Не ЗначениеЗаполнено(Объект.Валюта) Тогда
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(НСтр("ru = 'Поле ""Валюта"" не заполнено'"), Объект.Ссылка, "Объект.Валюта",,Отказ);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбработкаВыбораПодборНаСервере(ВыбранноеЗначение)
ТаблицаТоваров = ПолучитьИзВременногоХранилища(ВыбранноеЗначение.АдресТоваровВХранилище);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
ПараметрыЗаполненияСтавкиНДС = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект, Истина);
ПараметрыЗаполненияСтавкиНДС.УказаннаяСтавкаНДС = УказаннаяСтавкаНДС;
Если Объект.ПоступлениеОднойДатой И ЗначениеЗаполнено(Объект.ДатаОтгрузки) Тогда
ПараметрыЗаполненияСтавкиНДС.Дата = Объект.ДатаОтгрузки;
КонецЕсли;
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", ПараметрыЗаполненияСтавкиНДС);
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ЗаполнитьПризнакОтмененоБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ПриИзмененииТипаНоменклатуры",
Новый Структура("ЕстьРаботы, ЕстьОтменено", Истина, Истина));
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтотОбъект, СтруктураДействий);
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
ОбрабатываемыеСтроки = Новый Массив();
Для каждого СтрокаТовара Из ТаблицаТоваров Цикл
ТекущаяСтрока = Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(ТекущаяСтрока, СтрокаТовара,
"НоменклатураПартнера, Номенклатура, Характеристика, Упаковка, Склад,
|ВидЦеныПоставщика, Цена, КоличествоУпаковок, Количество, Сумма, СуммаРучнойСкидки, ПроцентРучнойСкидки");
Если Объект.ПоступлениеОднойДатой Тогда
ТекущаяСтрока.ДатаПоступления = Объект.ДатаПоступления;
КонецЕсли;
ОбрабатываемыеСтроки.Добавить(ТекущаяСтрока);
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.Товары);
Для каждого ТекущаяСтрока Из ОбрабатываемыеСтроки Цикл
ДоходыИРасходыКлиентСервер.ПриДобавленииСтрокиВТаблицу(ЭтотОбъект, ТекущаяСтрока, "Объект.Товары");
КонецЦикла;
Если КонтролироватьАссортимент Тогда
АссортиментСервер.ПроверитьАссортиментТаблицыПодобранныхТоваров(Объект, "Склад", ТаблицаТоваров);
КонецЕсли;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются", Новый Структура("Номенклатура", "ХарактеристикиИспользуются"));
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекЗаполненияСлужебныхРеквизитовТабличнойЧасти(СтруктураДействий);
НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(Объект.Товары, СтруктураДействий);
ЗаполнитьПризнакСписанияНаРасходыДляУслуг();
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
ПриИзмененииСкладаВТабличнойЧастиСервер();
ЗаполнитьСлужебныеРеквизитыПоНазначениюВТЧ();
МногооборотнаяТараСервер.ОбновитьСостояниеЗаполненияМногооборотнойТары(Объект.СостояниеЗаполненияМногооборотнойТары);
КонецПроцедуры
#КонецОбласти
#Область ШтрихкодыИТорговоеОборудование
&НаСервере
Процедура ОбработатьШтрихкодыСервер(СтруктураПараметровДействия,КэшированныеЗначения)
ШтрихкодированиеНоменклатурыСервер.ОбработатьШтрихкоды(ЭтаФорма,Объект,СтруктураПараметровДействия,КэшированныеЗначения);
КонецПроцедуры
&НаКлиенте
Процедура ОбработатьШтрихкоды(ДанныеШтрихкодов)
Если Не ШтрихкодированиеНоменклатурыКлиент.ШтрихкодыВалидны(ДанныеШтрихкодов) Тогда
Возврат;
КонецЕсли;
ИзменятьКоличество = Истина;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействийСДобавленнымиСтроками = Новый Структура;
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьНоменклатуруПартнераПоНоменклатуре", Объект.Партнер);
Если ИспользоватьСоглашенияСПоставщиками И ЗначениеЗаполнено(Объект.Соглашение) Тогда
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьУсловияЗакупок", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияЦеныЗакупкиВСтрокеТЧ(Объект));
Иначе
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьЦенуЗакупки", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияЦеныЗакупкиВСтрокеТЧ(Объект));
КонецЕсли;
СтруктураДействийСДобавленнымиСтроками.Вставить("ПроверитьЗаполнитьСклад", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(Объект, СкладГруппа));
ПараметрыЗаполненияСтавкиНДС = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект, Истина);
ПараметрыЗаполненияСтавкиНДС.УказаннаяСтавкаНДС = УказаннаяСтавкаНДС;
Если Объект.ПоступлениеОднойДатой И ЗначениеЗаполнено(Объект.ДатаОтгрузки) Тогда
ПараметрыЗаполненияСтавкиНДС.Дата = Объект.ДатаОтгрузки;
КонецЕсли;
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьСтавкуНДС", ПараметрыЗаполненияСтавкиНДС);
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются", Новый Структура("Номенклатура", "ХарактеристикиИспользуются"));
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакОтмененоБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействийСДобавленнымиСтроками.Вставить("ПриИзмененииТипаНоменклатуры",
Новый Структура("ЕстьРаботы, ЕстьОтменено", Истина, Истина));
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтаФорма, СтруктураДействийСДобавленнымиСтроками);
ДоходыИРасходыКлиентСервер.ВставитьДействиеОчиститьСтатьюИАналитикуРасходов(СтруктураДействийСДобавленнымиСтроками, ЭтотОбъект);
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействийСДобавленнымиСтроками, ЭтаФорма);
СтруктураДействийСИзмененнымиСтроками = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействийСИзмененнымиСтроками, ЭтаФорма);
СтруктураДействий = ШтрихкодированиеНоменклатурыКлиент.ПараметрыОбработкиШтрихкодов();
СтруктураДействий.Штрихкоды = ДанныеШтрихкодов;
СтруктураДействий.СтруктураДействийСДобавленнымиСтроками = СтруктураДействийСДобавленнымиСтроками;
СтруктураДействий.СтруктураДействийСИзмененнымиСтроками = СтруктураДействийСИзмененнымиСтроками;
СтруктураДействий.ПараметрыУказанияСерий = Неопределено;
СтруктураДействий.ИзменятьКоличество = ИзменятьКоличество;
Если КонтролироватьАссортимент Тогда
СтруктураПроверкиАссортимента = АссортиментКлиентСервер.ПараметрыПроверкиАссортимента();
СтруктураПроверкиАссортимента.Ссылка = Объект.Ссылка;
СтруктураПроверкиАссортимента.Склад = Объект.Склад;
СтруктураПроверкиАссортимента.Дата = ?(ЗначениеЗаполнено(Объект.ЖелаемаяДатаПоступления), Объект.ЖелаемаяДатаПоступления, Объект.Дата);
СтруктураПроверкиАссортимента.ТекстСообщения = НСтр("ru = 'Товар %1 не включен в ассортимент магазина. Заказывать его не рекомендуется.'");
СтруктураПроверкиАссортимента.ИмяРесурсаАссортимента = "РазрешеныЗакупки";
СтруктураПроверкиАссортимента.ПровереноМожноДобавлять = Истина;
СтруктураПроверкиАссортимента.РазрешатьДобавление = Истина;
СтруктураДействий.ПараметрыПроверкиАссортимента = СтруктураПроверкиАссортимента;
КонецЕсли;
УстановитьПараметрыСтруктурыДействийПриПоискеПоШтрихкоду(СтруктураДействий, Объект.ХозяйственнаяОперация);
ОбработатьШтрихкодыСервер(СтруктураДействий,КэшированныеЗначения);
ШтрихкодированиеНоменклатурыКлиент.ОбработатьНеизвестныеШтрихкоды(СтруктураДействий,КэшированныеЗначения,ЭтаФорма);
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
Если СтруктураДействий.ТекущаяСтрока <> Неопределено Тогда
Элементы.Товары.ТекущаяСтрока = СтруктураДействий.ТекущаяСтрока;
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
Если ТекущаяСтрока.ТипНоменклатуры = ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Товар") Или
ТекущаяСтрока.ТипНоменклатуры = ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.МногооборотнаяТара") Или
ТекущаяСтрока.ТипНоменклатуры = ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Набор")
Или ЗначениеЗаполнено(ТекущаяСтрока.Назначение) Тогда
ТекущаяСтрока.СписатьНаРасходы = Ложь;
ТекущаяСтрока.Подразделение = ПредопределенноеЗначение("Справочник.СтруктураПредприятия.ПустаяСсылка");
ИначеЕсли ИспользоватьУчетПрочихДоходовРасходов
И ТекущаяСтрока.ТипНоменклатуры = ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Услуга") Тогда
ТекущаяСтрока.СписатьНаРасходы = Истина;
Если НЕ ЗначениеЗаполнено(ТекущаяСтрока.Подразделение) Тогда
ТекущаяСтрока.Подразделение = Объект.Подразделение;
КонецЕсли;
КонецЕсли;
ДоходыИРасходыКлиентСервер.ПриИзмененииРеквизитаДоступностиСтатьиВСтроке(ЭтотОбъект, ТекущаяСтрока, "Объект.Товары");
КонецЕсли;
УстановитьПризнакЗаполненияСклада();
КонецПроцедуры
&НаСервереБезКонтекста
Процедура УстановитьПараметрыСтруктурыДействийПриПоискеПоШтрихкоду(СтруктураДействий, ХозяйственнаяОперация)
Если Не НоменклатураСервер.СписокХозяйственныхОперацийИсключающихУслугиИРаботы().НайтиПоЗначению(ХозяйственнаяОперация) = Неопределено Тогда
СтруктураДействий.ТолькоТовары = Истина;
ИначеЕсли Не НоменклатураСервер.СписокХозяйственныхОперацийИсключающихРаботы().НайтиПоЗначению(ХозяйственнаяОперация) = Неопределено Тогда
СтруктураДействий.ТолькоТоварыИУслуги = Истина;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область РаботаСБуферомОбмена
&НаСервере
Процедура СкопироватьСтрокиНаСервере()
РаботаСТабличнымиЧастями.СкопироватьСтрокиВБуферОбмена(Объект.Товары, Элементы.Товары.ВыделенныеСтроки);
КонецПроцедуры
&НаСервере
Процедура ПолучитьСтрокиИзБуфераОбмена()
ПараметрыОтбора = Новый Соответствие;
Если Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПриемНаКомиссию")
Или Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПриемНаХранениеСПравомПродажи") Тогда
ПараметрыОтбора.Вставить("Номенклатура.ТипНоменклатуры", НоменклатураКлиентСервер.ОтборПоТоваруМногооборотнойТаре(Ложь));
ИначеЕсли Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ЗакупкаУПоставщикаТоварыВПути")
Или Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭСТоварыВПути")
Или Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ЗакупкаПоИмпортуТоварыВПути") Тогда
ПараметрыОтбора.Вставить("Номенклатура.ТипНоменклатуры", НоменклатураКлиентСервер.ОтборПоТоваруМногооборотнойТареУслуге(Ложь));
Иначе
ПараметрыОтбора.Вставить("Номенклатура.ТипНоменклатуры", НоменклатураКлиентСервер.ОтборПоТоваруМногооборотнойТареУслугеРаботе(Ложь));
КонецЕсли;
Колонки = "Номенклатура,Характеристика,Упаковка,КоличествоУпаковок,Цена,ДатаПоступления,
|ПроцентРучнойСкидки,СуммаРучнойСкидки,Склад,Подразделение";
ТаблицаТоваров = РаботаСТабличнымиЧастями.СтрокиИзБуфераОбмена(ПараметрыОтбора, Колонки);
Если Не ЗначениеЗаполнено(ТаблицаТоваров) Тогда
Возврат;
КонецЕсли;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействий.Вставить("ПроверитьЗаполнитьСклад", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(Объект, СкладГруппа));
ПараметрыЗаполненияСтавкиНДС = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект, Истина);
ПараметрыЗаполненияСтавкиНДС.УказаннаяСтавкаНДС = УказаннаяСтавкаНДС;
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", ПараметрыЗаполненияСтавкиНДС);
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ЗаполнитьПризнакОтмененоБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ПриИзмененииТипаНоменклатуры",
Новый Структура("ЕстьРаботы, ЕстьОтменено", Истина, Истина));
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, ЭтотОбъект);
Если ТаблицаТоваров.Колонки.Найти("СуммаРучнойСкидки") <> Неопределено Тогда
СтруктураДействий.ПересчитатьСуммуСУчетомРучнойСкидки.Вставить("ПересчитыватьСуммуРучнойСкидки", Ложь);
КонецЕсли;
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтотОбъект, СтруктураДействий);
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
ОбрабатываемыеСтроки = Новый Массив;
Для каждого СтрокаТовара Из ТаблицаТоваров Цикл
ТекущаяСтрока = Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(ТекущаяСтрока, СтрокаТовара);
Если НЕ ИспользоватьРучныеСкидкиВЗакупках Тогда
ТекущаяСтрока.ПроцентРучнойСкидки = 0;
ТекущаяСтрока.СуммаРучнойСкидки = 0;
КонецЕсли;
Если Объект.ПоступлениеОднойДатой Тогда
ТекущаяСтрока.ДатаПоступления = Объект.ДатаПоступления;
ТекущаяСтрока.ДатаОтгрузки = Объект.ДатаОтгрузки;
КонецЕсли;
ОбрабатываемыеСтроки.Добавить(ТекущаяСтрока);
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.Товары);
Для каждого СтрокаТовара Из ОбрабатываемыеСтроки Цикл
Если ТекущаяСтрока.ТипНоменклатуры = ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Товар") Или
ТекущаяСтрока.ТипНоменклатуры = ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.МногооборотнаяТара") Или
ТекущаяСтрока.ТипНоменклатуры = ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Набор")
Или ЗначениеЗаполнено(ТекущаяСтрока.Назначение) Тогда
ТекущаяСтрока.СписатьНаРасходы = Ложь;
ТекущаяСтрока.Подразделение = ПредопределенноеЗначение("Справочник.СтруктураПредприятия.ПустаяСсылка");
ИначеЕсли ИспользоватьУчетПрочихДоходовРасходов
И ТекущаяСтрока.ТипНоменклатуры = ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Услуга") Тогда
ТекущаяСтрока.СписатьНаРасходы = Истина;
КонецЕсли;
КонецЦикла;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются", Новый Структура("Номенклатура", "ХарактеристикиИспользуются"));
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекЗаполненияСлужебныхРеквизитовТабличнойЧасти(СтруктураДействий);
НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(Объект.Товары, СтруктураДействий);
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
ПриИзмененииСкладаВТабличнойЧастиСервер();
ЗаполнитьСлужебныеРеквизитыПоНазначениюВТЧ();
МногооборотнаяТараСервер.ОбновитьСостояниеЗаполненияМногооборотнойТары(Объект.СостояниеЗаполненияМногооборотнойТары);
КонецПроцедуры
&НаСервере
Процедура УстановитьДоступностьКомандБуфераОбмена()
МассивЭлементов = Новый Массив();
МассивЭлементов.Добавить("ТоварыВставитьСтроки");
МассивЭлементов.Добавить("ТоварыКонтекстноеМенюВставитьСтроки");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, МассивЭлементов, "Доступность",
РаботаСТабличнымиЧастями.ЕстьСтрокиВБуфереОбмена());
КонецПроцедуры
&НаКлиенте
Процедура УстановитьДоступностьКомандБуфераОбменаНаКлиенте()
МассивЭлементов = Новый Массив();
МассивЭлементов.Добавить("ТоварыВставитьСтроки");
МассивЭлементов.Добавить("ТоварыКонтекстноеМенюВставитьСтроки");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, МассивЭлементов, "Доступность", Истина);
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииСозданииНаСервере()
ИспользоватьНаправленияДеятельности = ПолучитьФункциональнуюОпцию("ИспользоватьУчетЗатратПоНаправлениямДеятельности");
ИспользоватьУчетПрочихДоходовРасходов = ПолучитьФункциональнуюОпцию("ИспользоватьУчетПрочихДоходовРасходов");
УстановитьДоступностьСоглашений();
Договор = Объект.Договор;
ВалютаДокумента = Объект.Валюта;
СкладГруппа = Справочники.Склады.ЭтоГруппаИСкладыИспользуютсяВТЧДокументовЗакупки(Объект.Склад);
Элементы.ТоварыЗаполнитьСкладВВыделенныхСтроках.Доступность = СкладГруппа;
УстановитьПараметрыВыбораТоварыСклад();
КонтрагентЮрФизЛицо = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Контрагент, "ЮрФизЛицо");
ПриИзмененииСкладаВТабличнойЧастиСервер();
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются", Новый Структура("Номенклатура", "ХарактеристикиИспользуются"));
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекЗаполненияСлужебныхРеквизитовТабличнойЧасти(СтруктураДействий);
НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(Объект.Товары, СтруктураДействий);
ОбновитьДубликатыЗависимыхРеквизитов();
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
УстановитьВидимостьЭлементовПоОперацииСервер();
НастроитьПараметрыВыбораЭлементов();
ОбновитьСостояниеСервер();
УстановитьДоступностьЭлементовПоСтатусуСервер();
УстановитьВидимостьЭлементовФормыДатПоступления();
ОбновитьДоступностьЭлементовВозвратнойТары(ЭтаФорма);
ЗаполнитьСписокВыбораЖелаемаяДатаПоступления();
ЗаполнитьСлужебныеРеквизитыПоНазначениюВТЧ();
ОбновитьОбязательностьСкладаВТЧ();
КонтролироватьАссортимент = АссортиментСерверПовтИсп.КонтролироватьАссортимент(Объект.Склад, Объект.Дата);
ДанныеПоФоновомуЗаданию = ДоставкаТоваров.ПриЧтенииСозданииРаспоряженийНаСервере(Элементы, Объект,,,СводнаяИнформацияПоДоставке,Истина);
Если ПолучитьФункциональнуюОпцию("ИспользоватьУправлениеДоставкой") Тогда
Элементы.АдресДоставкиДляПоставщика2.Видимость = Ложь;
КонецЕсли;
ЗаполнитьСписокАдресовДоставкиДляПоставщика();
ОтветственныеЛицаСервер.ЗаполнитьСписокВыбораМенеджера(Элементы.Менеджер, Объект);
РаботаСТабличнымиЧастями.ИнициализироватьКэшСтрок(Элементы.Товары);
НаправленияДеятельностиСервер.ПриЧтенииСозданииНаСервере(ЭтотОбъект);
ПараметрыЗаполнения = Документы.ЗаказПоставщику.ПараметрыЗаполненияНалогообложенияНДСЗакупки(Объект);
УчетНДСУП.ЗаполнитьСписокВыбораНалогообложенияНДСЗакупки(Элементы.НалогообложениеНДС, Объект.НалогообложениеНДС, ПараметрыЗаполнения, УчетНДСКэшированныеЗначенияПараметров);
ПараметрыЗаполнения = Документы.ЗаказПоставщику.ПараметрыЗаполненияВидаДеятельностиНДС(Объект);
УчетНДСУП.ЗаполнитьСписокВыбораВидаДеятельностиНДС(Элементы.ЗакупкаПодДеятельность, Объект.ЗакупкаПодДеятельность, ПараметрыЗаполнения, УчетНДСКэшированныеЗначенияПараметров);
ДенежныеСредстваСерверЛокализация.НастроитьЭлементыОперацииССамозанятым(ЭтотОбъект, Ложь);
КонецПроцедуры
&НаКлиенте
Процедура ПодключитьОбработчикОжиданияПолучениеПеревозчиков()
Если ДанныеПоФоновомуЗаданию.Свойство("ИдентификаторЗадания") Тогда
ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);
ПараметрыОжидания.ВыводитьОкноОжидания = Ложь;
ОповещениеОЗавершении = Новый ОписаниеОповещения("ОбновитьСписокПеревозчиковОповещение", ЭтотОбъект);
ДлительныеОперацииКлиент.ОжидатьЗавершение(
ДанныеПоФоновомуЗаданию, ОповещениеОЗавершении, ПараметрыОжидания);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьСписокПеревозчиковОповещение(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
Если Результат.Статус = "Выполнено" Тогда
ДоставкаТоваровКлиент.ОбновитьСписокПеревозчиков(Элементы.ПеревозчикПартнер.СписокВыбора, Результат);
ОбновитьОтображениеДанных(Элементы.ПеревозчикПартнер);
ДанныеПоФоновомуЗаданию = Новый Структура;
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура РассчитатьИтоговыеПоказателиЗаказа(Форма)
КоллекцияТовары = Форма.Объект.Товары;
Форма.СуммаОтменено = ?(Форма.Объект.ТребуетсяЗалогЗаТару,
КоллекцияТовары.Итог("СуммаСНДСОтменено"),
КоллекцияТовары.Итог("СуммаСНДСОтмененоБезВозвратнойТары"));
Форма.СуммаЗаказаноСзалоговойТарой = ?(Форма.Объект.ТребуетсяЗалогЗаТару,
КоллекцияТовары.Итог("СуммаСНДС") - КоллекцияТовары.Итог("СуммаСНДСОтменено"),
КоллекцияТовары.Итог("СуммаСНДСБезВозвратнойТары") - КоллекцияТовары.Итог("СуммаСНДСОтмененоБезВозвратнойТары"));
Форма.СуммаЗаказано = КоллекцияТовары.Итог("СуммаСНДСБезВозвратнойТары") - КоллекцияТовары.Итог("СуммаСНДСОтмененоБезВозвратнойТары");
Форма.СуммаЗалогаЗаТару = ?(Форма.Объект.ТребуетсяЗалогЗаТару,(КоллекцияТовары.Итог("СуммаСНДС") - КоллекцияТовары.Итог("СуммаСНДСОтменено"))
- (КоллекцияТовары.Итог("СуммаСНДСБезВозвратнойТары") - КоллекцияТовары.Итог("СуммаСНДСОтмененоБезВозвратнойТары")),0);
Форма.СуммаНДСЗаказано = ?(Форма.Объект.ТребуетсяЗалогЗаТару,
КоллекцияТовары.Итог("СуммаНДС") - КоллекцияТовары.Итог("СуммаНДСОтменено"),
КоллекцияТовары.Итог("СуммаНДСБезВозвратнойТары") - КоллекцияТовары.Итог("СуммаНДСОтмененоБезВозвратнойТары"));
Форма.СуммаРучнойСкидки = ?(Форма.Объект.ТребуетсяЗалогЗаТару,
КоллекцияТовары.Итог("СуммаРучнойСкидки") - КоллекцияТовары.Итог("СуммаРучнойСкидкиОтменено"),
КоллекцияТовары.Итог("СуммаРучнойСкидкиБезВозвратнойТары") - КоллекцияТовары.Итог("СуммаРучнойСкидкиОтмененоБезВозвратнойТары"));
Если КоллекцияТовары.Итог("СуммаСНДСОтменено") = КоллекцияТовары.Итог("СуммаСНДС") Тогда
Форма.ВсеСтрокиОтменены = Истина;
Иначе
Форма.ВсеСтрокиОтменены = Ложь;
КонецЕсли;
СуммаЗаказано = ?(Форма.Объект.ТребуетсяЗалогЗаТару,
КоллекцияТовары.Итог("Сумма") - КоллекцияТовары.Итог("СуммаОтменено"),
КоллекцияТовары.Итог("СуммаБезВозвратнойТары") - КоллекцияТовары.Итог("СуммаОтмененоБезВозвратнойТары"));
Форма.СуммаАвансаДоПодтверждения = 0;
Форма.СуммаПредоплатыДоПоступления = 0;
Форма.СуммаКредитаПослеПоступления = 0;
СоответствиеВариантовОплаты = Новый Соответствие;
СоответствиеВариантовОплаты.Вставить(ПредопределенноеЗначение("Перечисление.ВариантыКонтроляОплатыПоставщику.АвансДоПодтверждения"),
Новый Структура("Сумма", "СуммаАвансаДоПодтверждения"));
СоответствиеВариантовОплаты.Вставить(ПредопределенноеЗначение("Перечисление.ВариантыКонтроляОплатыПоставщику.ПредоплатаДоПоступления"),
Новый Структура("Сумма", "СуммаПредоплатыДоПоступления"));
СоответствиеВариантовОплаты.Вставить(ПредопределенноеЗначение("Перечисление.ВариантыКонтроляОплатыПоставщику.КредитСдвиг"),
Новый Структура("Сумма", "СуммаКредитаПослеПоступления"));
Для Каждого ТекСтрока Из Форма.Объект.ЭтапыГрафикаОплаты Цикл
ИменаЭлементов = СоответствиеВариантовОплаты[ТекСтрока.ВариантОплаты];
Если ИменаЭлементов <> Неопределено Тогда
Форма[ИменаЭлементов.Сумма] = Форма[ИменаЭлементов.Сумма] + ТекСтрока.СуммаПлатежа
+ ?(Форма.Объект.ТребуетсяЗалогЗаТару, ТекСтрока.СуммаЗалогаЗаТару, 0);
КонецЕсли;
КонецЦикла;
ЗакупкаОблагаетсяНДС = УчетНДСУПКлиентСервер.ОтображатьНДСВИтогахДокументаЗакупки(Форма.Объект.НалогообложениеНДС);
Если ЗакупкаОблагаетсяНДС Тогда
Форма.Элементы.ГруппаСтраницыВсего.ТекущаяСтраница = Форма.Элементы.СтраницаВсегоСНДС;
Форма.Элементы.ГруппаСтраницыНДС.ТекущаяСтраница = Форма.Элементы.СтраницаСНДС;
Иначе
Форма.Элементы.ГруппаСтраницыВсего.ТекущаяСтраница = Форма.Элементы.СтраницаВсегоБезНДС;
Форма.Элементы.ГруппаСтраницыНДС.ТекущаяСтраница = Форма.Элементы.СтраницаБезНДС;
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ЗависимыеРеквизиты()
Возврат Новый Структура(
"БезВозвратнойТары,ОтмененоБезВозвратнойТары,Отменено",
"Сумма,СуммаНДС,СуммаСНДС,СуммаРучнойСкидки",
"Сумма,СуммаНДС,СуммаСНДС,СуммаРучнойСкидки",
"Сумма,СуммаНДС,СуммаСНДС,СуммаРучнойСкидки");
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, Форма)
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Форма.Объект);
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц");
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Ложь));
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьДоговорПоУмолчанию()
ХозяйственнаяОперацияОтбора = ЗакупкиСервер.ХозяйственныеОперацииПоОсновной(Объект.ХозяйственнаяОперация);
ЗаполнитьДоговор = Истина;
Если ЗначениеЗаполнено(Объект.Соглашение) Тогда
ЗаполнитьДоговор =
ПолучитьФункциональнуюОпцию("ИспользоватьДоговорыСПоставщиками")
И ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Соглашение, "ИспользуютсяДоговорыКонтрагентов");
КонецЕсли;
Если ЗаполнитьДоговор Тогда
Если Объект.ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоДоговорамКонтрагентов
И ИспользоватьНаправленияДеятельности Тогда
ДопПараметры = ЗакупкиСервер.ДополнительныеПараметрыОтбораДоговоров();
ДопПараметры.ВалютаВзаиморасчетов = Объект.Валюта;
ДопПараметры.НаправлениеДеятельности = Объект.НаправлениеДеятельности;
ДопПараметры.ДоговорССамозанятым = Объект.ОперацияССамозанятым;
ДоговорПоУмолчанию = ЗакупкиСервер.ПолучитьДоговорПоУмолчанию(Объект,
ХозяйственнаяОперацияОтбора,
ДопПараметры);
Иначе
ДопПараметры = ЗакупкиСервер.ДополнительныеПараметрыОтбораДоговоров();
ДопПараметры.ВалютаВзаиморасчетов = Объект.Валюта;
ДопПараметры.ДоговорССамозанятым = Объект.ОперацияССамозанятым;
ДоговорПоУмолчанию = ЗакупкиСервер.ПолучитьДоговорПоУмолчанию(Объект,
ХозяйственнаяОперацияОтбора,
ДопПараметры);
КонецЕсли;
Иначе
ДоговорПоУмолчанию = Справочники.ДоговорыКонтрагентов.ПустаяСсылка();
КонецЕсли;
Если Договор <> ДоговорПоУмолчанию
Или Не ЗначениеЗаполнено(Объект.Договор) Тогда
Договор = ДоговорПоУмолчанию;
Объект.Договор = ДоговорПоУмолчанию;
ВариантОформленияДоговораЗакупок = ЗакупкиСервер.ПолучитьВариантОформленияДоговораЗакупок(Объект.Договор);
Если ЗначениеЗаполнено(Объект.Договор) Тогда
ЗаполнитьВидДеятельностиНДС();
ЗаполнитьНалогообложениеНДСЗакупки();
НалогообложениеНДСПриИзмененииСервер(Неопределено);
КонецЕсли;
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, "Договор");
ЗакупкиВызовСервера.ЗаполнитьБанковскиеСчетаПоДоговору(Объект.Договор, Объект.БанковскийСчет);
ЗаполнитьГруппуФинУчета();
Объект.ВариантПриемкиТоваров = ЗакупкиСервер.ПолучитьВариантПриемкиТоваров(Неопределено, Объект.Договор);
КонецЕсли;
ДоставкаТоваров.ПриЧтенииСозданииРаспоряженийНаСервере(Элементы, Объект,,,СводнаяИнформацияПоДоставке);
КонецПроцедуры
&НаСервере
Функция ЗаполнитьСкладВВыделенныхСтрокахНаСервере(Знач МассивВыделенныхСтрок, Склад)
ЗаполненоСтрок = СкладыСервер.ЗаполнитьСкладыВВыделенныхСтроках(Объект.Товары, МассивВыделенныхСтрок, Склад);
Если ЗаполненоСтрок > 0 Тогда
ПриИзмененииСкладаВТабличнойЧастиСервер();
КонецЕсли;
Возврат ЗаполненоСтрок
КонецФункции
&НаСервере
Процедура УстановитьДоступностьЭлементовПоСтатусуСервер()
УстановитьПодписку = Ложь;
Если Объект.Статус = Перечисления.СтатусыЗаказовПоставщикам.НеСогласован Тогда
УстановитьПодписку = Ложь;
ИначеЕсли Объект.Статус = Перечисления.СтатусыЗаказовПоставщикам.Согласован Или
Объект.Статус = Перечисления.СтатусыЗаказовПоставщикам.Подтвержден Или
Объект.Статус = Перечисления.СтатусыЗаказовПоставщикам.Закрыт Тогда
УстановитьПодписку = Объект.Согласован;
КонецЕсли;
МассивЭлементов = Новый Массив;
МассивЭлементов.Добавить("Дата");
МассивЭлементов.Добавить("Партнер");
МассивЭлементов.Добавить("Соглашение");
МассивЭлементов.Добавить("Договор");
МассивЭлементов.Добавить("Валюта");
МассивЭлементов.Добавить("ЦенаВключаетНДС");
МассивЭлементов.Добавить("НалогообложениеНДС");
МассивЭлементов.Добавить("Организация");
МассивЭлементов.Добавить("Контрагент");
МассивЭлементов.Добавить("Склад");
МассивЭлементов.Добавить("ЖелаемаяДатаПоступления");
МассивЭлементов.Добавить("ДатаСогласования");
МассивЭлементов.Добавить("ХозяйственнаяОперация");
МассивЭлементов.Добавить("ПоступлениеОднойДатой");
МассивЭлементов.Добавить("ДатаПоступления");
МассивЭлементов.Добавить("ВернутьМногооборотнуюТару");
МассивЭлементов.Добавить("СрокВозвратаМногооборотнойТары");
МассивЭлементов.Добавить("ТребуетсяЗалогЗаТару");
МассивЭлементов.Добавить("Товары;ПередНачаломДобавления,ПередУдалением");
МассивЭлементов.Добавить("ТоварыНоменклатура");
МассивЭлементов.Добавить("ТоварыХарактеристика");
МассивЭлементов.Добавить("ТоварыКоличествоУпаковок");
МассивЭлементов.Добавить("ТоварыУпаковка");
МассивЭлементов.Добавить("ТоварыВидЦеныПоставщика");
МассивЭлементов.Добавить("ТоварыЦена");
МассивЭлементов.Добавить("ТоварыСтавкаНДС");
МассивЭлементов.Добавить("ТоварыСуммаНДС");
МассивЭлементов.Добавить("ТоварыПроцентРучнойСкидки");
МассивЭлементов.Добавить("ТоварыСуммаРучнойСкидки");
МассивЭлементов.Добавить("ТоварыСумма");
МассивЭлементов.Добавить("ТоварыКонтекстноеМенюДобавить");
МассивЭлементов.Добавить("ТоварыКонтекстноеМенюСкопировать");
МассивЭлементов.Добавить("ТоварыКонтекстноеМенюУдалить");
МассивЭлементов.Добавить("ТоварыДобавить");
МассивЭлементов.Добавить("ТоварыИзменить");
МассивЭлементов.Добавить("ТоварыСкопировать");
МассивЭлементов.Добавить("ТоварыУдалить");
МассивЭлементов.Добавить("ТоварыПодобратьНоменклатуру");
МассивЭлементов.Добавить("ТоварыДополнитьМногооборотнойТарой");
МассивЭлементов.Добавить("ТоварыЗагрузитьИзВнешнегоФайла");
МассивЭлементов.Добавить("ТоварыПоискПоШтрихкоду");
МассивЭлементов.Добавить("ТоварыЗагрузитьДанныеИзТСД");
МассивЭлементов.Добавить("ТоварыЗаполнитьСкладВВыделенныхСтроках");
МассивЭлементов.Добавить("ТоварыЗаполнитьЦеныПоСоглашению");
МассивЭлементов.Добавить("ТоварыЗаполнитьЦеныВыделенныхСтрокПоВидуЦеныПоставщика");
МассивЭлементов.Добавить("ТоварыСкорректироватьЦеныПоПоступлениям");
МассивЭлементов.Добавить("ТоварыОтменитьРучныеСкидки");
МассивЭлементов.Добавить("ТоварыНазначитьРучнуюСкидкуВыделенныхСтрок");
МассивЭлементов.Добавить("ЗаполнитьЭтапыГрафикаОплаты");
МассивЭлементов.Добавить("ЗаполнитьЭтапыГрафикаПоПредыдущимЗаказам");
ОбщегоНазначенияУТ.УстановитьПодпискуНаСобытияИзмененияЭлементовФормы(ЭтаФорма, МассивЭлементов, УстановитьПодписку);
Если Объект.Статус = Перечисления.СтатусыЗаказовПоставщикам.Закрыт Тогда
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "РассчитатьСтатусДокумента", "Доступность", Ложь);
Иначе
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "РассчитатьСтатусДокумента", "Доступность", Истина);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьЭлементовПоОперацииСервер()
Перем МассивВсехРеквизитов;
Перем МассивРеквизитовОперации;
УстановитьДоступностьВидимостьДоговора();
Документы.ЗаказПоставщику.ЗаполнитьИменаРеквизитовПоХозяйственнойОперации(Объект.ХозяйственнаяОперация,
МассивВсехРеквизитов,
МассивРеквизитовОперации);
ДенежныеСредстваСервер.УстановитьВидимостьЭлементовПоМассиву(Элементы,
МассивВсехРеквизитов,
МассивРеквизитовОперации);
ВидимостьЭлементов = (Объект.ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.ПриемНаКомиссию)
И (Объект.ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.ПриемНаХранениеСПравомПродажи);
МассивЭлементов = Новый Массив;
МассивЭлементов.Добавить("ЗаголовокОплата");
МассивЭлементов.Добавить("СуммаСкидки");
МассивЭлементов.Добавить("ТоварыОтменитьРучныеСкидки");
МассивЭлементов.Добавить("ТоварыНазначитьРучнуюСкидкуВыделенныхСтрок");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы,
МассивЭлементов,
"Видимость",
ВидимостьЭлементов);
НоменклатураСервер.УстановитьПараметрыВыбораНоменклатуры(Объект.ХозяйственнаяОперация, Элементы.ТоварыНоменклатура);
НоменклатураСервер.УстановитьПараметрыВыбораНоменклатуры(Объект.ХозяйственнаяОперация,
Элементы.ТоварыНоменклатураПартнера);
ВидимостьПоПриемуНаХранение = Объект.ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.ПриемНаХранениеСПравомПродажи;
МассивЭлементов = Новый Массив;
МассивЭлементов.Добавить("ЦенаВключаетНДС");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы,
МассивЭлементов,
"Видимость",
ВидимостьПоПриемуНаХранение);
КонецПроцедуры
&НаСервере
Процедура УстановитьДоступностьВидимостьДоговора()
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПриемНаХранениеСПравомПродажи Тогда
Элементы.Договор.Видимость = Истина;
Элементы.Договор.Доступность = ЗначениеЗаполнено(Объект.Партнер)
И (ЗначениеЗаполнено(Объект.Контрагент)
Или ПолучитьФункциональнуюОпцию("ИспользоватьПартнеровКакКонтрагентов"))
И ЗначениеЗаполнено(Объект.Организация);
Иначе
ЗакупкиСервер.УстановитьДоступностьДоговора(Объект, Элементы.Договор.Доступность, Элементы.Договор.Видимость);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСписокВыбораОпераций()
ХозяйственныеОперации = Документы.ЗаказПоставщику.ХозяйственныеОперацииДокумента(Истина);
Элементы.ХозяйственнаяОперация.СписокВыбора.ЗагрузитьЗначения(ХозяйственныеОперации);
ЗакупкаУПоставщикаФактуровкаПоставки = Элементы.ХозяйственнаяОперация.СписокВыбора.НайтиПоЗначению(
Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщикаФактуровкаПоставки);
Если ЗакупкаУПоставщикаФактуровкаПоставки <> Неопределено Тогда
ЗакупкаУПоставщикаФактуровкаПоставки.Представление = НСтр("ru = 'Закупка у поставщика (неотфактурованная поставка)'");
КонецЕсли;
ЗакупкаВСтранахЕАЭСФактуровкаПоставки = Элементы.ХозяйственнаяОперация.СписокВыбора.НайтиПоЗначению(
Перечисления.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭСФактуровкаПоставки);
Если ЗакупкаВСтранахЕАЭСФактуровкаПоставки <> Неопределено Тогда
ЗакупкаВСтранахЕАЭСФактуровкаПоставки.Представление = НСтр("ru = 'Ввоз из ЕАЭС (неотфактурованная поставка)'");
КонецЕсли;
ЕдинственнаяОперация = Элементы.ХозяйственнаяОперация.СписокВыбора.Количество() = 1;
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ХозяйственнаяОперация",
"ТолькоПросмотр",
ЕдинственнаяОперация И ЗначениеЗаполнено(Объект.ХозяйственнаяОперация));
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ХозяйственныеОперацииРаздельнойЗакупки(ИспользоватьТоварыВПути = Истина,
ИспользоватьНеотфактурованныеПоставки = Истина)
ХозяйственныеОперацииРаздельнойЗакупки = Новый Массив;
Если ИспользоватьТоварыВПути Тогда
ХозяйственныеОперацииРаздельнойЗакупки.Добавить(
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ЗакупкаУПоставщикаТоварыВПути"));
ХозяйственныеОперацииРаздельнойЗакупки.Добавить(
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ЗакупкаПоИмпортуТоварыВПути"));
ХозяйственныеОперацииРаздельнойЗакупки.Добавить(
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭСТоварыВПути"));
КонецЕсли;
Если ИспользоватьНеотфактурованныеПоставки Тогда
ХозяйственныеОперацииРаздельнойЗакупки.Добавить(
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ЗакупкаУПоставщикаФактуровкаПоставки"));
ХозяйственныеОперацииРаздельнойЗакупки.Добавить(
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭСФактуровкаПоставки"));
КонецЕсли;
Возврат ХозяйственныеОперацииРаздельнойЗакупки;
КонецФункции
&НаСервере
Функция ОтменитьНепоставленныеСтрокиСервер(ПричинаОтмены, Знач ПроверятьОстатки = Ложь)
ДокументЗакупки = РеквизитФормыВЗначение("Объект");
СтруктураКорректировкиСтрокЗаказа = ЗаказыСервер.СтруктураКорректировкиСтрокЗаказа();
СтруктураКорректировкиСтрокЗаказа.ДокументОбъект = ДокументЗакупки;
СтруктураКорректировкиСтрокЗаказа.ПричинаОтмены = ПричинаОтмены;
СтруктураКорректировкиСтрокЗаказа.ПроверятьОстатки = Истина;
СтруктураКорректировкиСтрокЗаказа.ОтменитьНеотработанныеСтроки = Истина;
СтруктураРезультата = ДокументЗакупки.СкорректироватьСтрокиЗаказа(СтруктураКорректировкиСтрокЗаказа);
КоличествоОтмененныхСтрок = СтруктураРезультата.КоличествоСтрок;
ЗначениеВРеквизитФормы(ДокументЗакупки, "Объект");
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются", Новый Структура("Номенклатура", "ХарактеристикиИспользуются"));
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(Объект.Товары, СтруктураДействий);
ОбновитьДубликатыЗависимыхРеквизитов();
ПриИзмененииСкладаВТабличнойЧастиСервер();
ЗаполнитьСлужебныеРеквизитыПоНазначениюВТЧ();
Возврат КоличествоОтмененныхСтрок;
КонецФункции
&НаСервере
Процедура ОбновитьЭлементыДополнительныхРеквизитов()
УправлениеСвойствами.ОбновитьЭлементыДополнительныхРеквизитов(ЭтаФорма);
КонецПроцедуры
&НаСервере
Процедура ОбновитьСостояниеСервер()
Документы.ЗаказПоставщику.РассчитатьСостояние(
Объект.Ссылка,
Объект.Договор,
ЭтаФорма);
Элементы.Состояние.Гиперссылка = ПравоДоступа("Просмотр", Метаданные.Отчеты.СостояниеВыполненияДокументов);
КонецПроцедуры
&НаСервереБезКонтекста
Процедура РассчитатьСостояниеЗаказа(Ссылка, Договор, СостояниеЗаказа, Гиперссылка)
Документы.ЗаказПоставщику.РассчитатьСостояние(Ссылка, Договор, СостояниеЗаказа, Истина);
Гиперссылка = ПравоДоступа("Просмотр", Метаданные.Отчеты.СостояниеВыполненияДокументов);
КонецПроцедуры
&НаСервере
Функция ПоместитьТоварыВоВременноеХранилищеСервер()
Возврат ЗакупкиСервер.ПоместитьТоварыВоВременноеХранилище(Объект.Товары);
КонецФункции
&НаСервере
Процедура ЗаполнитьТоварыИзВременногоХранилищаСервер(АдресВоВременномХранилище)
ТаблицаТоваров = ПолучитьИзВременногоХранилища(АдресВоВременномХранилище);
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
Если ИспользоватьСоглашенияСПоставщиками И ЗначениеЗаполнено(Объект.Соглашение) Тогда
СтруктураДействий.Вставить("ЗаполнитьУсловияЗакупок",
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияЦеныЗакупкиВСтрокеТЧ(Объект));
Иначе
СтруктураДействий.Вставить("ЗаполнитьЦенуЗакупки",
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияЦеныЗакупкиВСтрокеТЧ(Объект));
КонецЕсли;
ПараметрыЗаполненияСтавкиНДС = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект, Истина);
ПараметрыЗаполненияСтавкиНДС.УказаннаяСтавкаНДС = УказаннаяСтавкаНДС;
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", ПараметрыЗаполненияСтавкиНДС);
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Истина));
СтруктураДействий.Вставить(
"ПроверитьЗаполнитьСклад",
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(
Объект,
СкладГруппа));
ДоходыИРасходыКлиентСервер.ВставитьДействиеОчиститьСтатьюИАналитикуРасходов(СтруктураДействий, ЭтотОбъект);
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтотОбъект, СтруктураДействий);
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
ОбрабатываемыеСтроки = Новый Массив();
Для каждого ТекСтрока Из ТаблицаТоваров Цикл
МассивСтрокКоллекции = Объект.Товары.НайтиСтроки(Новый Структура("НомерСтроки", ТекСтрока.НомерСтроки));
Если МассивСтрокКоллекции.Количество() <> 1 Тогда
Продолжить;
Иначе
СтрокаКоллекции = МассивСтрокКоллекции[0];
КонецЕсли;
ЗаполнитьЗначенияСвойств(СтрокаКоллекции, ТекСтрока, "Номенклатура, Характеристика, Упаковка");
ОбрабатываемыеСтроки.Добавить(СтрокаКоллекции);
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.Товары,
КэшированныеЗначения);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются", Новый Структура("Номенклатура", "ХарактеристикиИспользуются"));
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекЗаполненияСлужебныхРеквизитовТабличнойЧасти(СтруктураДействий);
НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(Объект.Товары, СтруктураДействий);
ПриИзмененииСкладаВТабличнойЧастиСервер();
ЗаполнитьСлужебныеРеквизитыПоНазначениюВТЧ();
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьПустыеДатыПоступленияСервер();
Если Объект.Товары.Количество() = 0 Тогда
Возврат;
КонецЕсли;
Если НЕ Объект.ПоступлениеОднойДатой Тогда
Если ЗначениеЗаполнено(Объект.ЖелаемаяДатаПоступления)
И Объект.ЖелаемаяДатаПоступления - Объект.ДлительностьДоставки * 86400 >= Объект.Дата Тогда
ДатаОтгрузки = Объект.ЖелаемаяДатаПоступления - Объект.ДлительностьДоставки * 86400;
Иначе
ДатаОтгрузки = ТекущаяДатаСеанса();
КонецЕсли;
Иначе
Если НЕ ЗначениеЗаполнено(Объект.ДатаПоступления) Тогда
Если ЗначениеЗаполнено(Объект.ДатаОтгрузки) Тогда
Объект.ДатаПоступления =Объект.ДатаОтгрузки + Объект.ДлительностьДоставки * 86400;
ИначеЕсли ЗначениеЗаполнено(Объект.ЖелаемаяДатаПоступления) И Объект.ЖелаемаяДатаПоступления - Объект.ДлительностьДоставки * 86400 >= Объект.Дата Тогда
Объект.ДатаПоступления = Объект.ЖелаемаяДатаПоступления;
Объект.ДатаОтгрузки = Объект.ДатаПоступления - Объект.ДлительностьДоставки * 86400;
Иначе
Объект.ДатаОтгрузки = ТекущаяДатаСеанса();
Объект.ДатаПоступления = Объект.ДатаОтгрузки + Объект.ДлительностьДоставки * 86400;
КонецЕсли;
КонецЕсли;
ДатаОтгрузки = Объект.ДатаОтгрузки;
КонецЕсли;
Для Каждого СтрокаТЧ Из Объект.Товары Цикл
Если Не ЗначениеЗаполнено(СтрокаТЧ.ДатаОтгрузки) Тогда
СтрокаТЧ.ДатаОтгрузки = ДатаОтгрузки;
КонецЕсли;
Если Не ЗначениеЗаполнено(СтрокаТЧ.ДатаПоступления) Тогда
СтрокаТЧ.ДатаПоступления = ДатаОтгрузки + Объект.ДлительностьДоставки * 86400;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция МаксимальнаяДатаАванса(ЭтапыГрафикаОплаты)
МаксДатаАванса = '00010101';
Для Каждого ТекЭтап Из ЭтапыГрафикаОплаты Цикл
Если ТекЭтап.ВариантОплаты = ПредопределенноеЗначение("Перечисление.ВариантыКонтроляОплатыПоставщику.ПредоплатаДоПоступления")
ИЛИ ТекЭтап.ВариантОплаты = ПредопределенноеЗначение("Перечисление.ВариантыКонтроляОплатыПоставщику.АвансДоПодтверждения") Тогда
МаксДатаАванса = Макс(МаксДатаАванса, ТекЭтап.ДатаПлатежа);
КонецЕсли;
КонецЦикла;
Возврат МаксДатаАванса;
КонецФункции
&НаКлиенте
Процедура ЗаполнитьДатуОтгрузки(МассивВыделенныхСтрок = Неопределено)
Если ЗначениеЗаполнено(Объект.ЖелаемаяДатаПоступления) Тогда
ДатаОтгрузки = Объект.ЖелаемаяДатаПоступления - Объект.ДлительностьДоставки*86400;
КонецЕсли;
Если Объект.Товары.Количество() > 0 Тогда
Оповещение = Новый ОписаниеОповещения("ЗаполнитьДатуОтгрузкиЗавершение", ЭтотОбъект, Новый Структура("МассивВыделенныхСтрок", МассивВыделенныхСтрок));
ОбщегоНазначенияУТКлиент.ВвестиДатуСКонтролемПустогоЗначения(ДатаОтгрузки, НСтр("ru='Введите дату отгрузки'"), ЧастиДаты.Дата, Оповещение);
Иначе
ТекстПредупреждения = НСтр("ru='В документе нет строк для заполнения. Дата отгрузки не будет заполнена.'");
ПоказатьПредупреждение(Неопределено, ТекстПредупреждения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьДатуОтгрузкиЗавершение(ВыбраннаяДата, ДополнительныеПараметры) Экспорт
Если ВыбраннаяДата <> Неопределено И ЗначениеЗаполнено(ВыбраннаяДата) Тогда
ДатаОтгрузки = ВыбраннаяДата;
МассивВыделенныхСтрок = ДополнительныеПараметры.МассивВыделенныхСтрок;
Если МассивВыделенныхСтрок = Неопределено Тогда
Для Каждого СтрокаТЧ Из Объект.Товары Цикл
СтрокаТЧ.ДатаОтгрузки = ДатаОтгрузки;
СтрокаТЧ.ДатаПоступления = ДатаОтгрузки + Объект.ДлительностьДоставки*86400;
КонецЦикла;
Иначе
Для Каждого ИдентификаторСтроки Из МассивВыделенныхСтрок Цикл
СтрокаТЧ = Объект.Товары.НайтиПоИдентификатору(ИдентификаторСтроки);
СтрокаТЧ.ДатаОтгрузки = ДатаОтгрузки;
СтрокаТЧ.ДатаПоступления = ДатаОтгрузки + Объект.ДлительностьДоставки*86400;
КонецЦикла;
КонецЕсли;
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияДатОтгрузки(ДатаОтгрузки, (МассивВыделенныхСтрок <> Неопределено));
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура НадписьЭтапыОплатыНажатие(Элемент, СтандартнаяОбработка)
Оповещение = Новый ОписаниеОповещения("НадписьЭтапыОплатыНажатиеЗавершение", ЭтотОбъект);
ПоместитьЭтапыОплатыВоВременноеХранилище(Элемент.Имя);
ВзаиморасчетыКлиент.НадписьЭтапыОплатыНажатие(ЭтаФорма, Элемент, СтандартнаяОбработка, Оповещение );
КонецПроцедуры
&НаСервере
Процедура ПоместитьЭтапыОплатыВоВременноеХранилище(ИмяЭлемента)
ЗаполнитьПустыеДатыПоступленияСервер();
ВзаиморасчетыСервер.ПоместитьЭтапыОплатыВоВременноеХранилище(ЭтаФорма, ИмяЭлемента);
КонецПроцедуры
&НаСервере
Процедура ОтразитьИзмененияПравилОплаты(ИзмененныеРеквизиты)
ВзаиморасчетыСервер.ЗагрузитьЭтапыОплатыИзВременногоХранилища(ЭтаФорма);
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, ИзмененныеРеквизиты, Истина);
ЗаполнитьСписокВыбораЖелаемаяДатаПоступления();
КонецПроцедуры
&НаКлиенте
Процедура НадписьЭтапыОплатыНажатиеЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат <> Неопределено Тогда
ИзмененныеРеквизиты = Результат.СтарыеЗначенияИзмененныхРеквизитов;
ОтразитьИзмененияПравилОплаты(ИзмененныеРеквизиты);
Объект.Согласован = Ложь;
УстановитьДоступностьЭлементовПоСтатусуСервер();
КонецЕсли;
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
КонецПроцедуры
&НаСервере
Функция АдресДанныхДляРасчетаРучныхСкидокВоВременномХранилище(ТолькоВыделенныеСтроки)
СтруктураПараметров = СкидкиНаценкиЗаполнениеСервер.НовыйПараметрыАдресДанныхДляРасчетаРучныхСкидок();
СтруктураПараметров.ИмяТаблицы = "Товары";
СтруктураПараметров.ТолькоДляВыделенныхСтрок = ТолькоВыделенныеСтроки;
Возврат СкидкиНаценкиЗаполнениеСервер.АдресДанныхДляРасчетаРучныхСкидокВоВременномХранилищеЗакупки(
ЭтаФорма,УникальныйИдентификатор, СтруктураПараметров);
КонецФункции
&НаСервере
Функция МаксимальнаяДатаОтгрузки()
МаксимальнаяДатаОтгрузки = Дата(1,1,1);
Для Каждого Товар Из Объект.Товары Цикл
МаксимальнаяДатаОтгрузки = Макс(МаксимальнаяДатаОтгрузки, Товар.ДатаОтгрузки);
КонецЦикла;
Возврат МаксимальнаяДатаОтгрузки
КонецФункции
&НаСервере
Процедура ЗаполнитьДатыПоступленияСервер(ДатаПоступления)
Для Каждого Товар Из Объект.Товары Цикл
Товар.ДатаПоступления = ДатаПоступления;
КонецЦикла;
УстановитьВидимостьЭлементовФормыДатПоступления();
КонецПроцедуры
&НаСервере
Процедура ДлительностьДоставкиПриИзмененииСервер()
Если НЕ Объект.ПоступлениеОднойДатой Тогда
Для Каждого Стр Из Объект.Товары Цикл
Если ЗначениеЗаполнено(Стр.ДатаОтгрузки) Тогда
Стр.ДатаПоступления = Стр.ДатаОтгрузки + Объект.ДлительностьДоставки * 86400;
КонецЕсли;
КонецЦикла;
Иначе
Если ЗначениеЗаполнено(Объект.ДатаОтгрузки) Тогда
Объект.ДатаПоступления = Объект.ДатаОтгрузки + Объект.ДлительностьДоставки * 86400;
КонецЕсли;
ЗаполнитьДатыПоступленияСервер(Объект.ДатаПоступления);
КонецЕсли;
УстановитьВидимостьЭлементовФормыДатПоступления();
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьДатыОтгрузкиСервер(ДатаОтгрузки)
Для Каждого Товар Из Объект.Товары Цикл
Товар.ДатаОтгрузки = ДатаОтгрузки;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьЭлементовФормыДатПоступления()
Элементы.ТоварыДатаПоступления.Видимость = НЕ Объект.ПоступлениеОднойДатой И Объект.ДлительностьДоставки > 0;
Элементы.ТоварыДатаОтгрузки.Видимость = НЕ Объект.ПоступлениеОднойДатой ;
Элементы.ДатаПоступления.Видимость = Объект.ПоступлениеОднойДатой И Объект.ДлительностьДоставки > 0;
Элементы.ДатаОтгрузки.Видимость = Объект.ПоступлениеОднойДатой;
КонецПроцедуры
&НаСервере
Процедура УстановитьДоступностьСоглашений()
Если ЗначениеЗаполнено(Объект.Партнер) Тогда
КоличествоСоглашенийСПоставшиком = ЗакупкиВызовСервера.ПолучитьКоличествоСоглашенийСПоставщиком(Объект.Партнер);
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "Соглашение", "Видимость", КоличествоСоглашенийСПоставшиком > 0
Или ЗначениеЗаполнено(Объект.Соглашение));
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КонтактноеЛицоПриИзменении(Элемент)
Если Объект.КонтактноеЛицо.Пустая() Тогда
Возврат;
ИначеЕсли Не Объект.Партнер.Пустая() Тогда
Возврат;
КонецЕсли;
ПартнерИзменился = Ложь;
КонтактноеЛицоПриИзмененииСервер(ПартнерИзменился);
Если Не ПартнерИзменился Тогда
Возврат;
КонецЕсли;
Если Не ЗначениеЗаполнено (Объект.Партнер) Тогда
ДоставкаТоваровКлиентСервер.ОчиститьРеквизитыДоставки(Элементы,Объект);
КонецЕсли;
Если ЗначениеЗаполнено(Объект.Соглашение) Тогда
Если Объект.Товары.Итог("Цена")<>0 Тогда
ЗаполнитьЦеныПоСоглашениюСервер(Истина);
КонецЕсли;
ЗакупкиКлиент.ОповеститьОбОкончанииЗаполненияУсловийЗакупокПоУмолчанию();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура КонтактноеЛицоПриИзмененииСервер(ПартнерИзменился)
ВладелецКонтактногоЛица = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.КонтактноеЛицо, "Владелец");
Если ВладелецКонтактногоЛица <> Объект.Партнер Тогда
Объект.Партнер = ВладелецКонтактногоЛица;
ПартнерПриИзмененииСервер();
ПартнерИзменился = Истина;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьНаличиеЗаказовПоДаннымПоставщика(НомерПоДаннымПоставщика)
СписокЗаказов = ЗаказыПоДаннымПоставщика(Объект.Ссылка, Объект.Контрагент, НомерПоДаннымПоставщика);
Если СписокЗаказов.Количество() > 0 Тогда
СписокКнопок = Новый СписокЗначений;
Если СписокЗаказов.Количество() = 1 Тогда
ТекстВопроса = НСтр("ru='В информационной базе уже существует заказ с таким же номером по данным поставщика. Продолжить?'");
СписокКнопок.Добавить("ОткрытьСписокЗаказов", НСтр("ru = 'Открыть заказ'"));
Иначе
ТекстВопроса = НСтр("ru='В информационной базе уже существуют заказы с таким же номером по данным поставщика. Продолжить?'");
СписокКнопок.Добавить("ОткрытьСписокЗаказов", НСтр("ru = 'Открыть список заказов'"));
КонецЕсли;
СписокКнопок.Добавить("Продолжить", НСтр("ru = 'Продолжить'"));
ОтветНаВопрос = Неопределено;
ПоказатьВопрос(Новый ОписаниеОповещения("ПроверитьНаличиеЗаказовПоДаннымПоставщикаЗавершение", ЭтотОбъект, Новый Структура("СписокЗаказов", СписокЗаказов)), ТекстВопроса, СписокКнопок);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьНаличиеЗаказовПоДаннымПоставщикаЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
СписокЗаказов = ДополнительныеПараметры.СписокЗаказов;
ОтветНаВопрос = РезультатВопроса;
Если ОтветНаВопрос = "ОткрытьСписокЗаказов" Тогда
Если СписокЗаказов.Количество() > 1 Тогда
ОткрытьФорму(
"ОбщаяФорма.ПросмотрСпискаДокументов",
Новый Структура("СписокДокументов, Заголовок",
СписокЗаказов,
НСтр("ru='Заказы поставщиков (%КоличествоДокументов%)'")));
Иначе
ПараметрыФормы = Новый Структура("Ключ", СписокЗаказов.Получить(0).Значение);
ОткрытьФорму("Документ.ЗаказПоставщику.ФормаОбъекта", ПараметрыФормы);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервереБезКонтекста
Функция ЗаказыПоДаннымПоставщика(ТекущийЗаказ, Контрагент, НомерВходящегоДокумента)
ДатаТекущегоЗаказа = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ТекущийЗаказ, "Дата");
ДатаВходящегоДокумента = ?(ЗначениеЗаполнено(ДатаТекущегоЗаказа), ДатаТекущегоЗаказа, ТекущаяДатаСеанса());
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ЗаказПоставщику.Ссылка КАК Ссылка
|ИЗ
| Документ.ЗаказПоставщику КАК ЗаказПоставщику
|ГДЕ
| ЗаказПоставщику.Ссылка <> &ТекущийЗаказ
| И ЗаказПоставщику.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
| И ЗаказПоставщику.НомерПоДаннымПоставщика = &НомерПоДаннымПоставщика
| И ЗаказПоставщику.Контрагент = &Контрагент
| И НЕ ЗаказПоставщику.ПометкаУдаления";
Запрос.УстановитьПараметр("ДатаНачала", ДобавитьМесяц(ДатаВходящегоДокумента, -3));
Запрос.УстановитьПараметр("ДатаОкончания", ДобавитьМесяц(ДатаВходящегоДокумента, 3));
Запрос.УстановитьПараметр("НомерПоДаннымПоставщика", НомерВходящегоДокумента);
Запрос.УстановитьПараметр("Контрагент", Контрагент);
Запрос.УстановитьПараметр("ТекущийЗаказ", ТекущийЗаказ);
СписокЗаказов = Новый СписокЗначений;
СписокЗаказов.ЗагрузитьЗначения(Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка"));
Возврат СписокЗаказов;
КонецФункции
&НаСервереБезКонтекста
Процедура ОбновитьДоступностьЭлементовВозвратнойТары(Форма)
МассивЭлементов = Новый Массив();
МассивЭлементов.Добавить("СрокВозвратаМногооборотнойТары");
МассивЭлементов.Добавить("ТребуетсяЗалогЗаТару");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(
Форма.Элементы,
МассивЭлементов,
"Доступность",
Форма.Объект.ВернутьМногооборотнуюТару);
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(
Форма.Элементы,
"ВернутьМногооборотнуюТару",
"Доступность",
Форма.Объект.ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщикаРеглУчет
И Форма.Объект.ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.ЗакупкаПоИмпорту
И Форма.Объект.ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.ЗакупкаПоИмпортуТоварыВПути
И Форма.Объект.ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭС
И Форма.Объект.ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭСТоварыВПути
И Форма.Объект.ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭСФактуровкаПоставки
И Форма.Объект.ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.ПриемНаКомиссию
И Форма.Объект.ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.ПриемНаХранениеСПравомПродажи);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьМногооборотнуюТаруИзХранилищаСервер(АдресТарыВХранилище)
СтруктураДействийИзмененныеСтроки = Новый Структура;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействийИзмененныеСтроки.Вставить("ПересчитатьКоличествоУпаковок");
СтруктураДействийИзмененныеСтроки.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействийИзмененныеСтроки.Вставить("ПересчитатьСумму");
СтруктураДействийИзмененныеСтроки.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействийИзмененныеСтроки.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Истина));
СтруктураДействийИзмененныеСтроки.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействийИзмененныеСтроки.Вставить("ЗаполнитьПризнакОтмененоБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействийИзмененныеСтроки.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
СтруктураДействийДобавленныеСтроки = ОбщегоНазначенияКлиентСервер.СкопироватьСтруктуру(СтруктураДействийИзмененныеСтроки);;
СтруктураДействийДобавленныеСтроки.Вставить("ПроверитьЗаполнитьСклад", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(Объект, СкладГруппа));
СтруктураДействийДобавленныеСтроки.Вставить("ЗаполнитьНоменклатуруПартнераПоНоменклатуре", Объект.Партнер);
Если ИспользоватьСоглашенияСПоставщиками И ЗначениеЗаполнено(Объект.Соглашение) Тогда
СтруктураДействийДобавленныеСтроки.Вставить("ЗаполнитьУсловияЗакупок", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияЦеныЗакупкиВСтрокеТЧ(Объект));
Иначе
СтруктураДействийДобавленныеСтроки.Вставить("ЗаполнитьЦенуЗакупки", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияЦеныЗакупкиВСтрокеТЧ(Объект));
КонецЕсли;
СтруктураДействийДобавленныеСтроки.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
ПараметрыЗаполненияСтавкиНДС = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект, Истина);
ПараметрыЗаполненияСтавкиНДС.УказаннаяСтавкаНДС = УказаннаяСтавкаНДС;
Если Объект.ПоступлениеОднойДатой И ЗначениеЗаполнено(Объект.ДатаОтгрузки) Тогда
ПараметрыЗаполненияСтавкиНДС.Дата = Объект.ДатаОтгрузки;
КонецЕсли;
СтруктураДействийДобавленныеСтроки.Вставить("ЗаполнитьСтавкуНДС", ПараметрыЗаполненияСтавкиНДС);
СтруктураДействийДобавленныеСтроки.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействийДобавленныеСтроки.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействийДобавленныеСтроки.Вставить("ЗаполнитьПризнакОтмененоБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействийДобавленныеСтроки.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтаФорма, СтруктураДействийДобавленныеСтроки);
МногооборотнаяТараСервер.ЗаполнитьМногооборотнуюТаруИзХранилища(
Объект,
АдресТарыВХранилище,
"Товары",
"Номенклатура,Характеристика,Склад,ДатаПоступления",
СтруктураДействийИзмененныеСтроки,
СтруктураДействийДобавленныеСтроки);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются", Новый Структура("Номенклатура", "ХарактеристикиИспользуются"));
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекЗаполненияСлужебныхРеквизитовТабличнойЧасти(СтруктураДействий);
НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(Объект.Товары, СтруктураДействий);
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
ПриИзмененииСкладаВТабличнойЧастиСервер();
ЗаполнитьСлужебныеРеквизитыПоНазначениюВТЧ();
КонецПроцедуры
&НаСервере
Процедура ПолучитьЗагруженныеТоварыИзХранилища(АдресТоваровВХранилище)
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПроверитьЗаполнитьСклад", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(Объект, СкладГруппа));
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ЗаполнитьПризнакОтмененоБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, ЭтотОбъект);
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтотОбъект, СтруктураДействий);
ОбрабатываемыеСтроки = Новый Массив;
ТоварыИзХранилища = ПолучитьИзВременногоХранилища(АдресТоваровВХранилище);
Для Каждого СтрокаТоваров Из ТоварыИзХранилища Цикл
СтрокаТЧТовары = Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаТЧТовары, СтрокаТоваров,,"КодСтроки");
Если Объект.ПоступлениеОднойДатой Тогда
СтрокаТЧТовары.ДатаПоступления = Объект.ДатаПоступления;
СтрокаТЧТовары.ДатаОтгрузки = Объект.ДатаПоступления - Объект.ДлительностьДоставки*86400;
КонецЕсли;
ОбрабатываемыеСтроки.Добавить(СтрокаТЧТовары);
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.Товары);
Для Каждого СтрокаТоваров Из ОбрабатываемыеСтроки Цикл
ДоходыИРасходыКлиентСервер.ПриДобавленииСтрокиВТаблицу(ЭтотОбъект, СтрокаТЧТовары, "Объект.Товары");
КонецЦикла;
Если НЕ ЗакупкиСервер.ЭтоНеотфактурованнаяПоставкаУслугРабот(Объект.ХозяйственнаяОперация,ВариантОформленияДоговораЗакупок) Тогда
ЗаполнитьПризнакСписанияНаРасходыДляУслуг();
КонецЕсли;
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
ПриИзмененииСкладаВТабличнойЧастиСервер();
МногооборотнаяТараСервер.ОбновитьСостояниеЗаполненияМногооборотнойТары(Объект.СостояниеЗаполненияМногооборотнойТары);
ОбновитьОбязательностьСкладаВТЧ();
ЗаполнитьСлужебныеРеквизитыПоНазначениюВТЧ();
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьГруппуФинУчета()
Если ЗначениеЗаполнено(Объект.Договор) Тогда
Объект.ГруппаФинансовогоУчета = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Договор, "ГруппаФинансовогоУчета");
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗачтенаОплатаСервер(ИмяСобытия, Параметр, Источник)
ОбновитьСостояниеСервер();
ВзаиморасчетыСервер.ОбработкаОповещения(ЭтаФорма, ИмяСобытия, Параметр);
КонецПроцедуры
#КонецОбласти
#Область КонтрольНесогласованныхИзменений
&НаКлиенте
Процедура КонтрольНеСогласованныхИзмененийОбработатьСобытиеПриИзменении(Элемент)
Если Элемент.Имя = "Дата" Тогда
ДатаПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "Партнер" Тогда
ПартнерПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "Соглашение" Тогда
СоглашениеПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "Договор" Тогда
ДоговорПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "Валюта" Тогда
ВалютаПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ЦенаВключаетНДС" Тогда
ЦенаВключаетНДСПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "НалогообложениеНДС" Тогда
НалогообложениеНДСПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "Организация" Тогда
ОрганизацияПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "Контрагент" Тогда
КонтрагентПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "Склад" Тогда
СкладПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ХозяйственнаяОперация" Тогда
ХозяйственнаяОперацияПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ПоступлениеОднойДатой" Тогда
ПоступлениеОднойДатойПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ДатаПоступления" Тогда
ДатаПоступленияПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ВернутьМногооборотнуюТару" Тогда
ВернутьМногооборотнуюТаруПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТребуетсяЗалогЗаТару" Тогда
ТребуетсяЗалогЗаТаруПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ДатаСогласования" Тогда
ДатаСогласованияПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ДатаОтгрузки" Тогда
ДатаОтгрузкиПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыНоменклатураПартнера" Тогда
ТоварыНоменклатураПартнераПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыНоменклатура" Тогда
ТоварыНоменклатураПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыХарактеристика" Тогда
ТоварыХарактеристикаПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыНазначение" Тогда
ТоварыНазначениеПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыКоличествоУпаковок" Тогда
КоличествоУпаковокПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыУпаковка" Тогда
ТоварыУпаковкаПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыВидЦеныПоставщика" Тогда
ТоварыВидЦеныПоставщикаПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыЦена" Тогда
ТоварыЦенаПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыПроцентРучнойСкидки" Тогда
ТоварыПроцентРучнойСкидкиПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыСуммаРучнойСкидки" Тогда
ТоварыСуммаРучнойСкидкиПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыСумма" Тогда
ТоварыСуммаПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыСтавкаНДС" Тогда
ТоварыСтавкаНДСПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыСуммаНДС" Тогда
ТоварыСуммаНДСПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыСписатьНаРасходы" Тогда
ТоварыСписатьНаРасходыПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыСтатьяРасходов" Тогда
ТоварыСтатьяРасходовПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыОтмененоПричиныОтменыНеИспользуются" Тогда
ТоварыОтмененоПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыОтменено" Тогда
ТоварыОтмененоПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыДатаОтгрузки" Тогда
ТоварыДатаОтгрузкиПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ЖелаемаяДатаПоступления" Тогда
ЖелаемаяДатаПоступленияПриИзменении(Элемент);
Иначе
ОбщегоНазначенияУТКлиент.КонтрольНеСогласованныхИзмененийВызватьИсключение(ЭтаФорма, Элемент);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КонтрольНеСогласованныхИзмененийОбработатьСобытиеКоманды(Команда)
Если Команда.Имя = "ПодобратьТовары" Тогда
ПодобратьТовары(Команда);
ИначеЕсли Команда.Имя = "ДополнитьМногооборотнойТарой" Тогда
ДополнитьМногооборотнойТарой(Команда);
ИначеЕсли Команда.Имя = "ЗагрузитьИзВнешнегоФайла" Тогда
ЗагрузитьИзВнешнегоФайла(Команда);
ИначеЕсли Команда.Имя = "ПоискПоШтрихкоду" Тогда
ПоискПоШтрихкодуВыполнить(Команда);
ИначеЕсли Команда.Имя = "ЗагрузитьДанныеИзТСД" Тогда
ЗагрузитьДанныеИзТСД(Команда);
ИначеЕсли Команда.Имя = "ЗаполнитьСкладВВыделенныхСтроках" Тогда
ЗаполнитьСкладВВыделенныхСтроках(Команда);
ИначеЕсли Команда.Имя = "ЗаполнитьЦеныПоСоглашению" Тогда
АвтоТест_ЗаполнитьЦеныПоСоглашению(Команда);
ИначеЕсли Команда.Имя = "ЗаполнитьЦеныВыделенныхСтрокПоВидуЦеныПоставщика" Тогда
ЗаполнитьЦеныВыделенныхСтрокПоВидуЦеныПоставщика(Команда);
ИначеЕсли Команда.Имя = "СкорректироватьЦеныПоПоступлениям" Тогда
СкорректироватьЦеныПоПоступлениям(Команда);
ИначеЕсли Команда.Имя = "ОтменитьРучныеСкидки" Тогда
ОтменитьРучныеСкидки(Команда);
ИначеЕсли Команда.Имя = "НазначитьРучнуюСкидкуВыделенныхСтрок" Тогда
НазначитьРучнуюСкидкуДляВыделенныхСтрок(Команда);
Иначе
ОбщегоНазначенияУТКлиент.КонтрольНеСогласованныхИзмененийВызватьИсключение(ЭтаФорма, Команда);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КонтрольНеСогласованныхИзмененийОбработатьСобытиеНажатие(Элемент)
ОбщегоНазначенияУТКлиент.КонтрольНеСогласованныхИзмененийВызватьИсключение(ЭтаФорма, Элемент);
КонецПроцедуры
&НаКлиенте
Процедура КонтрольНеСогласованныхИзмененийОбработатьСобытиеПередНачаломИзменения(Элемент, Отказ)
ОбщегоНазначенияУТКлиент.КонтрольНеСогласованныхИзмененийВызватьИсключение(ЭтаФорма, Элемент);
КонецПроцедуры
&НаКлиенте
Процедура КонтрольНеСогласованныхИзмененийОбработатьСобытиеПередУдалением(Элемент, Отказ)
Если Элемент.Имя = "Товары" Тогда
ТоварыПередУдалением(Элемент, Отказ);
Иначе
ОбщегоНазначенияУТКлиент.КонтрольНеСогласованныхИзмененийВызватьИсключение(ЭтаФорма, Элемент);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КонтрольНеСогласованныхИзмененийОбработатьСобытиеПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа)
ОбщегоНазначенияУТКлиент.КонтрольНеСогласованныхИзмененийВызватьИсключение(ЭтаФорма, Элемент);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПриИзменении_УстановитьДоступностьЭлементовПоСтатусуСервер(Элемент)
Если ОбщегоНазначенияУТКлиент.ПриДействииСЭлементомЗависящимОтСтатуса(ЭтаФорма) Тогда
Возврат;
КонецЕсли;
Если СтруктураДействийКонтрольНеСогласованныхИзменений.ПриИзменении.Свойство(Элемент.Имя) Тогда
КонтрольНеСогласованныхИзмененийОбработатьСобытиеПриИзменении(Элемент);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_Нажатие_УстановитьДоступностьЭлементовПоСтатусуСервер(Элемент)
Если ОбщегоНазначенияУТКлиент.ПриДействииСЭлементомЗависящимОтСтатуса(ЭтаФорма) Тогда
Возврат;
КонецЕсли;
Если СтруктураДействийКонтрольНеСогласованныхИзменений.Нажатие.Свойство(Элемент.Имя) Тогда
КонтрольНеСогласованныхИзмененийОбработатьСобытиеНажатие(Элемент);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_Команда_УстановитьДоступностьЭлементовПоСтатусуСервер(Команда)
Если ОбщегоНазначенияУТКлиент.ПриДействииСЭлементомЗависящимОтСтатуса(ЭтаФорма) Тогда
Возврат;
КонецЕсли;
Если СтруктураДействийКонтрольНеСогласованныхИзменений.Команды.Свойство(Команда.Имя) Тогда
КонтрольНеСогласованныхИзмененийОбработатьСобытиеКоманды(Команда);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПередНачаломИзменения_УстановитьДоступностьЭлементовПоСтатусуСервер(Элемент, Отказ)
Если ОбщегоНазначенияУТКлиент.ПриДействииСЭлементомЗависящимОтСтатуса(ЭтаФорма) Тогда
Возврат;
КонецЕсли;
Если СтруктураДействийКонтрольНеСогласованныхИзменений.ПередНачаломИзменения.Свойство(Элемент.Имя) Тогда
КонтрольНеСогласованныхИзмененийОбработатьСобытиеПередНачаломИзменения(Элемент, Отказ);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПередУдалением_УстановитьДоступностьЭлементовПоСтатусуСервер(Элемент, Отказ)
Если ОбщегоНазначенияУТКлиент.ПриДействииСЭлементомЗависящимОтСтатуса(ЭтаФорма) Тогда
Возврат;
КонецЕсли;
Имя = Элемент.Имя;
Если СтруктураДействийКонтрольНеСогласованныхИзменений.ПередУдалением.Свойство(Имя) Тогда
КонтрольНеСогласованныхИзмененийОбработатьСобытиеПередУдалением(Элемент, Отказ);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПередНачаломДобавления_УстановитьДоступностьЭлементовПоСтатусуСервер(Элемент, Отказ, Копирование, Родитель, Группа)
Если ОбщегоНазначенияУТКлиент.ПриДействииСЭлементомЗависящимОтСтатуса(ЭтаФорма) Тогда
Возврат;
КонецЕсли;
Имя = Элемент.Имя;
Если СтруктураДействийКонтрольНеСогласованныхИзменений.ПередНачаломДобавления.Свойство(Имя) Тогда
КонтрольНеСогласованныхИзмененийОбработатьСобытиеПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПриИзмененииРеквизитаЗависящегоОтСтатуса()
УстановитьДоступностьЭлементовПоСтатусуСервер();
ОбщегоНазначенияУТКлиент.ПослеИзмененияРеквизитаЗависящегоОтСтатуса(ЭтаФорма);
КонецПроцедуры
&НаСервере
Процедура ВернутьМногооборотнуюТаруПриИзмененииСервер()
Если Не Объект.ВернутьМногооборотнуюТару Тогда
Объект.ТребуетсяЗалогЗаТару = Ложь;
КонецЕсли;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВТЧ(Объект);
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий, Неопределено);
ОбновитьДубликатыЗависимыхРеквизитов();
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
ОбновитьДоступностьЭлементовВозвратнойТары(ЭтаФорма);
КонецПроцедуры
&НаСервере
Процедура ОбновитьДубликатыЗависимыхРеквизитов()
СтруктураДополнительныхДействий = Новый Структура;
СтруктураДополнительныхДействий.Вставить("ЗаполнитьПризнакОтмененоБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
МногооборотнаяТараСервер.ОбновитьПризнакБезВозвратнойТары(Объект.Товары, Объект.ВернутьМногооборотнуюТару, СтруктураДополнительныхДействий);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСписокВыбораЖелаемаяДатаПоступления()
МаксДатаАванса = МаксимальнаяДатаАванса(Объект.ЭтапыГрафикаОплаты);
ЖелаемаяДатаПоступленияСписокВыбора = Элементы.ЖелаемаяДатаПоступления.СписокВыбора;
Если ЗначениеЗаполнено(МаксДатаАванса) Тогда
ПредставлениеМаксДатаАванса = "%МаксДатаАванса%";
ПредставлениеМаксДатаАванса = СтрЗаменить(ПредставлениеМаксДатаАванса, "%МаксДатаАванса%", Формат(МаксДатаАванса,"ДЛФ=DD"));
ЖелаемаяДатаПоступленияСписокВыбора.Очистить();
ЖелаемаяДатаПоступленияСписокВыбора.Добавить(МаксДатаАванса, ПредставлениеМаксДатаАванса);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
ПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыНазначениеПриИзменении(Элемент)
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
ТекущиеДанные.СписатьНаРасходы = Ложь;
ДоходыИРасходыКлиентСервер.ПриИзмененииРеквизитаДоступностиСтатьиВСтроке(ЭтотОбъект, ТекущиеДанные, "Объект.Товары");
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьСлужебныеРеквизитыПоНазначению");
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущиеДанные, СтруктураДействий, КэшированныеЗначения);
Если ТекущиеДанные.ТипНазначения = ПредопределенноеЗначение("Перечисление.ТипыНазначений.ПоставкаПодПринципала")
Или ((ТекущиеДанные.ТипНоменклатуры = ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Товар") Или
ТекущиеДанные.ТипНоменклатуры = ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.МногооборотнаяТара"))
И Не ТекущиеДанные.СписатьНаРасходы) Тогда
ТекущиеДанные.Подразделение = ПредопределенноеЗначение("Справочник.СтруктураПредприятия.ПустаяСсылка");
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьПодразделение(Команда)
ВыделенныеСтроки = Элементы.Товары.ВыделенныеСтроки;
Если Объект.Товары.Количество() = 0 Тогда
ПоказатьПредупреждение( , НСтр("ru = 'В список ""Товары"" не введено ни одной строки.'"));
Возврат;
Иначе
ТребуетсяЗаполнение = Ложь;
Для Каждого Строка Из ВыделенныеСтроки Цикл
ДанныеСтроки = Объект.Товары.НайтиПоИдентификатору(Строка);
Если (ДанныеСтроки.ТипНоменклатуры = ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Товар") Или
ДанныеСтроки.ТипНоменклатуры = ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.МногооборотнаяТара"))
И (Не ДанныеСтроки.СписатьНаРасходы Или ЗначениеЗаполнено(ДанныеСтроки.Назначение)) Тогда
Продолжить;
КонецЕсли;
ТребуетсяЗаполнение = Истина;
Прервать;
КонецЦикла;
Если Не ТребуетсяЗаполнение Тогда
ПоказатьПредупреждение( , НСтр("ru = 'В выделенных строках списка ""Товары"" заполнение подразделения-получателя не требуется.'"));
Возврат;
КонецЕсли;
КонецЕсли;
ПараметрыФормы = Новый Структура("Подразделение", Объект.Подразделение);
ОткрытьФорму("Справочник.СтруктураПредприятия.ФормаВыбора", ПараметрыФормы, ЭтаФорма);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьПризнакСписанияНаРасходыДляУслуг()
СтруктураДействий = Новый Структура;
ДоходыИРасходыКлиентСервер.ВставитьДействиеЗаполнитьСтатьюАналитикуРасходовНоменклатуры(
СтруктураДействий,
ЭтотОбъект,
Объект.ХозяйственнаяОперация,
Объект.Организация,
Объект.Подразделение);
СтруктураОтбора = Новый Структура("ТипНоменклатуры", Перечисления.ТипыНоменклатуры.Услуга);
НайденныеСтроки = Объект.Товары.НайтиСтроки(СтруктураОтбора);
Для Каждого Строка Из НайденныеСтроки Цикл
Если ИспользоватьУчетПрочихДоходовРасходов Тогда
Строка.СписатьНаРасходы = Истина;
КонецЕсли;
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
НайденныеСтроки,
СтруктураДействий,
Объект.Товары);
Для Каждого Строка Из НайденныеСтроки Цикл
ДоходыИРасходыКлиентСервер.ПриИзмененииРеквизитаДоступностиСтатьиВСтроке(ЭтотОбъект, Строка, "Объект.Товары");
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьСтавкуНДС(Команда)
Если Объект.Товары.Количество() = 0 Тогда
ТекстПредупреждения = НСтр("ru = 'В список ""Товары"" не введено ни одной строки.'");
ПоказатьПредупреждение(, ТекстПредупреждения);
Возврат;
КонецЕсли;
ОповещениеОЗакрытии = Новый ОписаниеОповещения("ЗаполнитьСтавкуНДСЗавершение", ЭтотОбъект);
ПараметрыФормы = Новый Структура();
ПараметрыФормы.Вставить("ТипНалогообложенияНДС", Объект.НалогообложениеНДС);
ОткрытьФорму("Справочник.СтавкиНДС.ФормаВыбора", ПараметрыФормы,,,,, ОповещениеОЗакрытии);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьСтавкуНДСЗавершение(СтавкаНДС, ДополнительныеПараметры) Экспорт
Если СтавкаНДС = Неопределено Тогда
Возврат;
КонецЕсли;
ОчиститьСообщения();
ЗаполнитьСтавкуНДСНаСервере(СтавкаНДС, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиЗаказа(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСтавкуНДСНаСервере(СтавкаНДС, КэшированныеЗначения)
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Ложь));
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
Для каждого СтрокаТабличнойЧасти Из РаботаСТабличнымиЧастямиКлиентСервер.ЭлементыКоллекции(Объект.Товары, Элементы.Товары.ВыделенныеСтроки) Цикл
СтрокаТабличнойЧасти.СтавкаНДС = СтавкаНДС;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокуТЧ(СтрокаТабличнойЧасти, СтруктураДействий, КэшированныеЗначения);
КонецЦикла;
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
РассчитатьИтоговыеПоказателиЗаказа(ЭтотОбъект);
КонецПроцедуры
#КонецОбласти
#Область Прочее
&НаКлиенте
Процедура Подключаемый_ЗакрытьФорму()
Если Открыта() Тогда
Закрыть();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыАналитикаРасходовНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ДоходыИРасходыКлиент.НачалоВыбораАналитикиРасходов(ЭтаФорма, Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыАналитикаРасходовАвтоПодбор(Элемент, Текст, ДанныеВыбора, Параметры, Ожидание, СтандартнаяОбработка)
ДоходыИРасходыКлиент.АвтоПодборАналитикиРасходов(ЭтотОбъект, Элемент, Текст, ДанныеВыбора, Параметры, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыАналитикаРасходовОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, Параметры, СтандартнаяОбработка)
ДоходыИРасходыКлиент.ОкончаниеВводаТекстаАналитикиРасходов(ЭтотОбъект, Элемент, Текст, ДанныеВыбора, Параметры, СтандартнаяОбработка);
КонецПроцедуры
&НаСервереБезКонтекста
Функция ДанныеВыбораСкладов(Склад)
Запрос = Новый Запрос(
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| Склады.Ссылка КАК Ссылка
|ИЗ
| Справочник.Склады КАК Склады
|ГДЕ
| Склады.Ссылка В ИЕРАРХИИ(&ГруппаСкладов)
| И Склады.ЭтоГруппа = ЛОЖЬ
| И Склады.ВыборГруппы <> ЗНАЧЕНИЕ(Перечисление.ВыборГруппыСкладов.Запретить)");
Запрос.УстановитьПараметр("ГруппаСкладов", Склад);
МассивСкладов = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");
Возврат МассивСкладов;
КонецФункции
&НаСервере
Процедура УстановитьПараметрыВыбораТоварыСклад()
Элементы.ТоварыСклад.ПараметрыВыбора = Новый ФиксированныйМассив(Новый Массив);
ОбщегоНазначенияУТКлиентСервер.ДобавитьПараметрВыбора(Элементы.ТоварыСклад, "Ссылка", ДанныеВыбораСкладов(Объект.Склад));
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьУстановитьРеквизитыДоставкиСервер(ИмяЭлементаФормы);
ДоставкаТоваров.ЗаполнитьРеквизитыДоставки(Элементы, ИмяЭлементаФормы, Объект);
КонецПроцедуры
&НаКлиенте
Процедура ОсобыеУсловияПеревозкиПриИзменении(Элемент)
ОсобыеУсловияПеревозкиПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура ДополнитьИнформациюПоДоставкеКонтактами(Команда)
ДополнитьИнформациюПоДоставкеКонтактамиСервер();
КонецПроцедуры
&НаСервере
Процедура ОсобыеУсловияПеревозкиПриИзмененииСервер()
ДоставкаТоваров.ОсобыеУсловияПеревозкиПриИзменении(Элементы, Объект);
КонецПроцедуры
&НаСервере
Процедура ДополнитьИнформациюПоДоставкеКонтактамиСервер()
ДоставкаТоваров.ДополнитьИнформациюПоДоставкеКонтактами(Объект);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСписокАдресовДоставкиДляПоставщика(ПерезаполнитьАдресДоставки = Ложь)
Если Не Справочники.Склады.ЭтоГруппа(Объект.Склад) Тогда
ДоступныеСклады = Новый Массив;
ДоступныеСклады.Добавить(Объект.Склад);
Иначе
ДоступныеСклады = Объект.Товары.Выгрузить(,"Склад").ВыгрузитьКолонку("Склад");
КонецЕсли;
СписокВыбораАдреса = Документы.ЗаказПоставщику.АдресаСкладов(ДоступныеСклады, Объект.Дата);
СписокВыбораЭлемента = Элементы.АдресДоставкиДляПоставщика2.СписокВыбора;
Если ПолучитьФункциональнуюОпцию("ИспользоватьУправлениеДоставкой") Тогда
СписокВыбораЭлемента = Элементы.АдресДоставкиДляПоставщика.СписокВыбора;
КонецЕсли;
СписокВыбораЭлемента.Очистить();
Для Каждого ЭлементСписка Из СписокВыбораАдреса Цикл
СписокВыбораЭлемента.Добавить(ЭлементСписка.Значение, ЭлементСписка.Представление);
КонецЦикла;
Если ПерезаполнитьАдресДоставки Тогда
Если СписокВыбораАдреса.Количество() = 1 Тогда
Объект.АдресДоставкиДляПоставщика = СписокВыбораАдреса[0].Значение;
Иначе
Объект.АдресДоставкиДляПоставщика = "";
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьФормуВыбораКонтактнойИнформации(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("Представление", Элемент.ТекстРедактирования);
ПараметрыОткрытия.Вставить("ВидКонтактнойИнформации", ПредопределенноеЗначение("Справочник.ВидыКонтактнойИнформации.АдресСклада"));
Оповещение = Новый ОписаниеОповещения("ОткрытьФормуВыбораКонтактнойИнформацииЗавершение", ЭтотОбъект);
УправлениеКонтактнойИнформациейКлиент.ОткрытьФормуКонтактнойИнформации(ПараметрыОткрытия, ЭтотОбъект, Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьФормуВыбораКонтактнойИнформацииЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если ТипЗнч(Результат) = Тип("Структура") Тогда
Модифицированность = Истина;
Объект.АдресДоставкиДляПоставщика = Результат.Представление;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбновитьСводнуюИнформациюПоДоставке()
ДоставкаТоваров.ПриЧтенииСозданииРаспоряженийНаСервере(Элементы, Объект,,,СводнаяИнформацияПоДоставке);
КонецПроцедуры
&НаКлиенте
Процедура ЗакрытьЗаказ(Команда)
Если Модифицированность Или Не Объект.Проведен Тогда
Ответ = Неопределено;
ПоказатьВопрос(Новый ОписаниеОповещения("ЗакрытьЗаказЗавершение", ЭтотОбъект),
НСтр("ru = 'Необходимо провести документ для выполнения операции. Провести документ?'"),РежимДиалогаВопрос.ДаНет);
Возврат;
КонецЕсли;
ЗакрытьЗаказФрагмент();
КонецПроцедуры
&НаКлиенте
Процедура ЗакрытьЗаказФрагмент(Результат = Неопределено, ДополнительныеПараметры = Неопределено) Экспорт
СписокЗаказовКЗакрытию = Новый СписокЗначений;
СписокЗаказовКЗакрытию.Добавить(Объект.Ссылка);
СтруктураЗакрытия = Новый Структура;
СтруктураЗакрытия.Вставить("Заказы", СписокЗаказовКЗакрытию);
СтруктураЗакрытия.Вставить("ДокументИнициатор", Объект.Ссылка);
СтруктураЗакрытия.Вставить("ОтменитьНеотработанныеСтроки", Истина);
СтруктураЗакрытия.Вставить("СкорректироватьЦены", Истина);
СтруктураЗакрытия.Вставить("ЗакрыватьЗаказы", Истина);
ОткрытьФорму("Обработка.ПомощникЗакрытияЗаказов.Форма.ФормаЗакрытия", СтруктураЗакрытия,
ЭтаФорма,,,, Неопределено, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура ЗакрытьЗаказЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
ОписаниеОповещения = Новый ОписаниеОповещения("ЗакрытьЗаказФрагмент", ЭтотОбъект);
ПараметрыЗаписи = Новый Структура;
ПараметрыЗаписи.Вставить("ДействиеПослеЗаписи",ОписаниеОповещения);
ПараметрыЗаписи.Вставить("РежимЗаписи", РежимЗаписиДокумента.Проведение);
Если РезультатВопроса = КодВозвратаДиалога.Нет Тогда
Возврат;
Иначе
ОчиститьСообщения();
Записать(ПараметрыЗаписи);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура СкорректироватьСтрокиЗаказа(СтруктураДополнительныхПараметров)
Если СтруктураДополнительныхПараметров.СкорректироватьЦены Тогда
СкорректироватьЦеныПоПоступлениямСервер();
КонецЕсли;
ДокументЗакупки = РеквизитФормыВЗначение("Объект");
СтруктураДополнительныхПараметров.ПроверятьОстатки = Не (ДокументЗакупки.Статус = Перечисления.СтатусыЗаказовПоставщикам.НеСогласован);
СтруктураРезультата = ДокументЗакупки.СкорректироватьСтрокиЗаказа(СтруктураДополнительныхПараметров);
Если СтруктураРезультата.КоличествоСтрок <> 0 ИЛИ СтруктураРезультата.СуммаОтклонения > 0 Тогда
ВзаиморасчетыСервер.ПроверитьЗаполнитьЭтапыГрафикаОплаты(ДокументЗакупки);
КонецЕсли;
Если СтруктураДополнительныхПараметров.ЗакрыватьЗаказы Тогда
ДокументЗакупки.Статус = Перечисления.СтатусыЗаказовПоставщикам.Закрыт;
КонецЕсли;
ЗначениеВРеквизитФормы(ДокументЗакупки, "Объект");
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются", Новый Структура("Номенклатура", "ХарактеристикиИспользуются"));
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(Объект.Товары, СтруктураДействий);
ОбновитьДубликатыЗависимыхРеквизитов();
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
Модифицированность = Истина;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьНалогообложениеНДСЗакупки()
ПараметрыЗаполнения = Документы.ЗаказПоставщику.ПараметрыЗаполненияНалогообложенияНДСЗакупки(Объект);
УчетНДСУП.ЗаполнитьНалогообложениеНДСЗакупки(Объект.НалогообложениеНДС, ПараметрыЗаполнения, УчетНДСКэшированныеЗначенияПараметров);
УчетНДСУП.ЗаполнитьСписокВыбораНалогообложенияНДСЗакупки(Элементы.НалогообложениеНДС, Объект.НалогообложениеНДС, ПараметрыЗаполнения, УчетНДСКэшированныеЗначенияПараметров);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьВидДеятельностиНДС()
ПараметрыЗаполнения = Документы.ЗаказПоставщику.ПараметрыЗаполненияВидаДеятельностиНДС(Объект);
УчетНДСУП.ЗаполнитьВидДеятельностиНДС(Объект.ЗакупкаПодДеятельность, ПараметрыЗаполнения, УчетНДСКэшированныеЗначенияПараметров);
УчетНДСУП.ЗаполнитьСписокВыбораВидаДеятельностиНДС(Элементы.ЗакупкаПодДеятельность, Объект.ЗакупкаПодДеятельность, ПараметрыЗаполнения, УчетНДСКэшированныеЗначенияПараметров);
КонецПроцедуры
&НаКлиенте
Процедура ОбработатьРезультатВыбораНоменклатурыПартнера(ВыбранноеЗначение, ДополнительныеПараметры) Экспорт
Если ВыбранноеЗначение = Неопределено Тогда
Возврат;
КонецЕсли;
ДополнительныеПараметры.ТекущаяСтрока.НоменклатураПартнера = ВыбранноеЗначение;
ТоварыНоменклатураПартнераПриИзменении(ДополнительныеПараметры.ЭлементФормы);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПроверитьЗаданияКОтражениюСостоянияЗаказов()
Если СостоянияДокументовКлиент.ПроверкаЗаданияКОтражениюСостоянияЗаказовВыполняется(ЭтотОбъект) Тогда
СостояниеЗаказа = ВзаиморасчетыКлиентСервер.СтруктураСостоянияРасчетов(Ложь);
СостояниеЗаказа.Вставить("ЕстьРасхожденияОрдерНакладная", Ложь);
СостоянияДокументовКлиент.ДополнитьСтруктуруСостоянияЗаказа(СостояниеЗаказа);
ЗаполнитьЗначенияСвойств(СостояниеЗаказа, ЭтотОбъект);
РассчитатьСостояниеЗаказа(Объект.Ссылка, Объект.Договор, СостояниеЗаказа, Элементы.Состояние.Гиперссылка);
ЗаполнитьЗначенияСвойств(ЭтотОбъект, СостояниеЗаказа);
СостоянияДокументовКлиент.ОбработатьРезультатПроверкиЗаданияКОтражениюСостоянияЗаказов(
ЭтотОбъект,
СостояниеЗаказа.ЕстьЗаданияКОтражениюСостоянияЗаказов,
"Подключаемый_ПроверитьЗаданияКОтражениюСостоянияЗаказов");
ИначеЕсли СостоянияДокументовКлиент.СтартПроверкиЗаданияКОтражениюСостоянияЗаказов(ЭтотОбъект) Тогда
СостоянияДокументовКлиент.УстановитьПризнакПроверкаЗаданияКОтражениюСостоянияЗаказовВыполняется(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработатьИзменениеАдреса(Элемент, ИмяРеквизитаАдреса)
ИменаРеквизитов = ДоставкаТоваровКлиентСервер.ИменаРеквизитовАдресовДоставки(ИмяРеквизитаАдреса);
Если ПустаяСтрока(Объект[ИменаРеквизитов.ИмяРеквизитаАдресаДоставки]) Тогда
ДоставкаТоваровКлиент.ОчиститьПредставлениеАдреса(
Объект[ИменаРеквизитов.ИмяРеквизитаАдресаДоставки],
Объект[ИменаРеквизитов.ИмяРеквизитаАдресаДоставкиЗначенияПолей],
Объект[ИменаРеквизитов.ИмяРеквизитаАдресаДоставкиЗначение]);
Иначе
ДоставкаТоваровКлиент.ПриИзмененииПредставленияАдреса(
Элемент,
Объект[ИменаРеквизитов.ИмяРеквизитаАдресаДоставки],
Объект[ИменаРеквизитов.ИмяРеквизитаАдресаДоставкиЗначение]);
АдресДоставкиПриИзмененииНаСервере(
Объект[ИменаРеквизитов.ИмяРеквизитаАдресаДоставки],
Объект[ИменаРеквизитов.ИмяРеквизитаАдресаДоставкиЗначение],
Объект[ИменаРеквизитов.ИмяРеквизитаАдресаДоставкиЗначенияПолей]);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура АдресДоставкиПриИзмененииНаСервере(Адрес, АдресЗначение, АдресЗначенияПолей)
АдресВСвободнойФорме = УправлениеКонтактнойИнформацией.АдресВведенВСвободнойФорме(АдресЗначение);
Если НЕ АдресВСвободнойФорме Тогда
ДанныеСтраны = УправлениеКонтактнойИнформацией.СтранаАдресаКонтактнойИнформации(АдресЗначение);
НоваяСтруктураАдреса = УправлениеКонтактнойИнформацией.СведенияОбАдресе();
НоваяСтруктураАдреса.Представление = Адрес;
НоваяСтруктураАдреса.Страна = ДанныеСтраны.Наименование;
НоваяСтруктураАдреса.КодСтраны = ДанныеСтраны.Код;
АдресЗначение = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияВJSON(
НоваяСтруктураАдреса,
Перечисления.ТипыКонтактнойИнформации.Адрес);
УстановитьТипАдресаВСвободнойФорме(АдресЗначение);
КонецЕсли;
АдресЗначенияПолей = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияВXML(
АдресЗначение,
Адрес,
Перечисления.ТипыКонтактнойИнформации.Адрес);
КонецПроцедуры
&НаСервереБезКонтекста
Процедура УстановитьТипАдресаВСвободнойФорме(АдресДоставкиЗначение)
СтрокаЗаменяемыйТип = """addressType"": ""Административно-территориальный""";
СтрокаСвободныйТип = """addressType"": ""ВСвободнойФорме""";
АдресДоставкиЗначение = СтрЗаменить(АдресДоставкиЗначение, СтрокаЗаменяемыйТип, СтрокаСвободныйТип);
КонецПроцедуры
#КонецОбласти
&НаКлиенте
Процедура ОткрытьСоглашение(Элемент)
Если ЗначениеЗаполнено(Объект.Соглашение) Тогда
ОткрытьФорму("Справочник.СоглашенияСПоставщиками.Форма.ФормаЭлемента",
Новый Структура("Ключ", Объект.Соглашение));
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьДоговор(Элемент)
Если ЗначениеЗаполнено(Объект.Договор) Тогда
ОткрытьФорму("Справочник.ДоговорыКонтрагентов.Форма.ФормаЭлемента",
Новый Структура("Ключ", Объект.Договор));
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбработатьЗаписьОбъекта()
ОбщегоНазначенияУТКлиент.ОбработатьЗаписьОбъектаВФорме(ЭтотОбъект, ПараметрыДляЗаписи);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСтатьяРасходовНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ДоходыИРасходыКлиент.НачалоВыбораСтатьи(ЭтаФорма, Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСлужебныеРеквизитыПоНазначениюВТЧ()
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьСлужебныеРеквизитыПоНазначению");
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий, Неопределено);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПриИзмененииДоступностиРеквизитовEDI(ТребуетсяБлокироватьРеквизиты, ДополнительныеПараметры) Экспорт
УстановитьСвязиПараметровВыбораСоглашенияПоEDI();
КонецПроцедуры
&НаСервере
Процедура EDIПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
РедактированиеРеквизитовEDIИнтеграция.ПодготовитьРеквизитыФормы(ЭтотОбъект);
ТипДокументаEDI = Перечисления.ТипыДокументовEDI.ЗаказПоставщику;
РедактированиеРеквизитовEDI.СохранитьДоступностьЭлементовПоУмолчанию(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура УстановитьСвязиПараметровВыбораСоглашенияПоEDI()
СвязиПараметров = Новый Массив;
Для Каждого Связь Из Элементы.Соглашение.СвязиПараметровВыбора Цикл
Если Связь.Имя = "Отбор.Организация"
Или Связь.Имя = "Отбор.Контрагент" Тогда
Продолжить;
КонецЕсли;
СвязиПараметров.Добавить(Связь);
КонецЦикла;
Если Не РедактированиеРеквизитовEDIКлиентСервер.РеквизитДоступенДляРедактирования(ЭтотОбъект, "Товары.Поставщик") Тогда
СвязиПараметров.Добавить(Новый СвязьПараметраВыбора("Отбор.Контрагент", "Объект.Контрагент"));
КонецЕсли;
Если Не РедактированиеРеквизитовEDIКлиентСервер.РеквизитДоступенДляРедактирования(ЭтотОбъект, "Товары.Покупатель") Тогда
СвязиПараметров.Добавить(Новый СвязьПараметраВыбора("Отбор.Организация", "Объект.Организация"));
КонецЕсли;
Элементы.Соглашение.СвязиПараметровВыбора = Новый ФиксированныйМассив(СвязиПараметров)
КонецПроцедуры
&НаСервере
Процедура НастроитьКолонкиСписанияПоРасходамТЧТовары()
СписокОпераций = Новый Массив;
СписокОпераций.Добавить(Перечисления.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭСТоварыВПути);
СписокОпераций.Добавить(Перечисления.ХозяйственныеОперации.ЗакупкаПоИмпортуТоварыВПути);
СписокОпераций.Добавить(Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщикаТоварыВПути);
СписокОпераций.Добавить(Перечисления.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭСФактуровкаПоставки);
СписокОпераций.Добавить(Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщикаФактуровкаПоставки);
ОчищатьКолонкиСписанияПоРасходам = СписокОпераций.Найти(Объект.ХозяйственнаяОперация) <> Неопределено;
Если ОчищатьКолонкиСписанияПоРасходам Тогда
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
СтруктураДействий = Новый Структура;
ДоходыИРасходыКлиентСервер.ВставитьДействиеОчиститьСтатьюИАналитикуРасходов(СтруктураДействий, ЭтотОбъект);
ОбрабатываемыеСтроки = Новый Массив();
Для Каждого СтрокаТовары Из Объект.Товары Цикл
Если СтрокаТовары.ТипНоменклатуры = ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Товар")
Или СтрокаТовары.ТипНоменклатуры = ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.МногооборотнаяТара")
Или СтрокаТовары.ТипНоменклатуры = ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Набор")
Или ЗначениеЗаполнено(СтрокаТовары.Назначение) Тогда
СтрокаТовары.Подразделение = ПредопределенноеЗначение("Справочник.СтруктураПредприятия.ПустаяСсылка");
СтрокаТовары.СписатьНаРасходы = Ложь;
ОбрабатываемыеСтроки.Добавить(СтрокаТовары);
КонецЕсли;
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.Товары,
КэшированныеЗначения);
Для Каждого СтрокаТовары Из ОбрабатываемыеСтроки Цикл
ДоходыИРасходыКлиентСервер.ПриИзмененииРеквизитаДоступностиСтатьиВСтроке(
ЭтотОбъект, СтрокаТовары, "Объект.Товары");
КонецЦикла;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура НастроитьПараметрыВыбораЭлементов()
СвязиПараметровВыбора = Новый Массив;
СвязиПараметровВыбора.Добавить(
Новый СвязьПараметраВыбора(
"Отбор.Владелец", "Объект.Партнер", РежимИзмененияСвязанногоЗначения.Очищать));
Если Объект.ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.ПриемНаХранениеСПравомПродажи Тогда
СвязиПараметровВыбора.Добавить(
Новый СвязьПараметраВыбора(
"Отбор.ЦенаВключаетНДС", "Объект.ЦенаВключаетНДС", РежимИзмененияСвязанногоЗначения.Очищать));
КонецЕсли;
Элементы.ТоварыВидЦеныПоставщика.СвязиПараметровВыбора = Новый ФиксированныйМассив(СвязиПараметровВыбора);
КонецПроцедуры
#КонецОбласти