#Область ОписаниеПеременных
&НаКлиенте
Перем КэшированныеЗначения;
&НаКлиенте
Перем ТекущиеДанныеИдентификатор;
&НаКлиенте
Перем ПараметрыДляЗаписи Экспорт;
#КонецОбласти
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
УстановитьУсловноеОформление();
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(Объект, ЭтотОбъект);
Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
ПриЧтенииСозданииНаСервере();
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект,ПараметрыУказанияСерий);
ИначеЕсли Параметры.ЗначенияЗаполнения.Свойство("ЗаполнятьПоОрдеру") Тогда
УстановитьПризнакЦеховаяКладовая("Отправитель");
УстановитьПризнакЦеховаяКладовая("Получатель");
ПерезаполнитьПоОрдерам(Параметры.ЗначенияЗаполнения);
Модифицированность = Истина;
КонецЕсли;
Если ТипЗнч(Объект.Распоряжение) = Тип("ДокументСсылка.ЗаказМатериаловВПроизводство") Тогда
ДоступноИзменение = ПравоДоступа("Изменение", Метаданные.Документы.ЗаказМатериаловВПроизводство);
КонецЕсли;
Элементы.ЗакрытьЗаказ.Доступность = ДоступноИзменение;
Элементы.ЗакрытьЗаказы.Доступность = ДоступноИзменение;
ЗаполнитьСписокОпераций();
Если Элементы.ХозяйственнаяОперация.СписокВыбора.Количество() = 1 Тогда
Элементы.ХозяйственнаяОперация.Видимость = Ложь;
КонецЕсли;
УстановитьДоступностьКомандБуфераОбмена();
#Область УниверсальныеМеханизмы
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("Объект", Объект);
ДополнительныеПараметры.Вставить("ИмяЭлементаДляРазмещения", "ГруппаДополнительныеРеквизиты");
ДополнительныеПараметры.Вставить("ОтложеннаяИнициализация", Истина);
УправлениеСвойствами.ПриСозданииНаСервере(ЭтаФорма, ДополнительныеПараметры);
ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект);
ОбщегоНазначенияУТ.НастроитьПодключаемоеОборудование(ЭтаФорма);
ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПриСозданииНаСервере(ЭтотОбъект);
ПараметрыЭДОПриСоздании = ОбменСКонтрагентами.ПараметрыПриСозданииНаСервере_ФормаДокумента();
ПараметрыЭДОПриСоздании.Форма = ЭтотОбъект;
ПараметрыЭДОПриСоздании.ДокументСсылка = Объект.Ссылка;
ПараметрыЭДОПриСоздании.МестоРазмещенияКоманд = Элементы.ПодменюЭДО;
ПараметрыЭДОПриСоздании.КонтроллерСостояниеЭДО = Элементы.ДекорацияСостояниеЭДО;
ПараметрыЭДОПриСоздании.ГруппаСостояниеЭДО = Элементы.ГруппаСостояниеЭДО;
ОбменСКонтрагентами.ПриСозданииНаСервере_ФормаДокумента(ПараметрыЭДОПриСоздании);
Элементы.ДекорацияСостояниеЭДО.Видимость = ПолучитьФункциональнуюОпцию("ИспользоватьОбменЭД");
СобытияФорм.ПриСозданииНаСервере(ЭтотОбъект, Отказ, СтандартнаяОбработка);
#КонецОбласти
ИсправлениеДокументов.ПриСозданииНаСервере(ЭтаФорма, Элементы.СтрокаИсправление);
Справочники.Назначения.ФормаДокументаПриСозданииНаСервере(ЭтаФорма);
УстановитьВидимостьКомандВводаНаОсновании();
ПараметрыГиперссылки = РаботаСФайлами.ГиперссылкаФайлов();
ПараметрыГиперссылки.Размещение = "КоманднаяПанель";
РаботаСФайлами.ПриСозданииНаСервере(ЭтотОбъект, ПараметрыГиперссылки);
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
ИсправлениеДокументов.ПриЧтенииНаСервере(ЭтаФорма, Элементы.СтрокаИсправление);
УправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
УправлениеСвойствами.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
ДатыЗапретаИзменения.ОбъектПриЧтенииНаСервере(ЭтаФорма, ТекущийОбъект);
ПриЧтенииСозданииНаСервере();
СобытияФорм.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
ПараметрыЭДОПриСоздании = ОбменСКонтрагентами.ПараметрыПриЧтенииНаСервере_ФормаДокумента();
ПараметрыЭДОПриСоздании.Форма = ЭтотОбъект;
ПараметрыЭДОПриСоздании.ДокументСсылка = Объект.Ссылка;
ПараметрыЭДОПриСоздании.МестоРазмещенияКоманд = Элементы.ПодменюЭДО;
ПараметрыЭДОПриСоздании.КонтроллерСостояниеЭДО = Элементы.ДекорацияСостояниеЭДО;
ПараметрыЭДОПриСоздании.ГруппаСостояниеЭДО = Элементы.ГруппаСостояниеЭДО;
ОбменСКонтрагентами.ПриЧтенииНаСервере_ФормаДокумента(ПараметрыЭДОПриСоздании);
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Если ОбновитьПриОткрытии Тогда
ПриЧтенииСозданииНаСервере();
КонецЕсли;
СообщитьОРезультатахЗаполнения();
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
МенеджерОборудованияКлиент.НачатьПодключениеОборудованиеПриОткрытииФормы(Неопределено, ЭтаФорма, "СканерШтрихкода");
ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
РаботаСФайламиКлиент.ПриОткрытии(ЭтотОбъект, Отказ);
ОбменСКонтрагентамиКлиент.ПриОткрытии(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
ПринудительноЗакрытьФорму = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ПриЗакрытии()
МенеджерОборудованияКлиент.НачатьОтключениеОборудованиеПриЗакрытииФормы(Неопределено, ЭтаФорма);
КонецПроцедуры
&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
УправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
ОбновитьЗаголовокФормы();
ЗаполнитьСлужебныеРеквизитыТабличнойЧасти();
ПараметрыПослеЗаписи = ОбменСКонтрагентами.ПараметрыПослеЗаписиНаСервере();
ПараметрыПослеЗаписи.Форма = ЭтотОбъект;
ПараметрыПослеЗаписи.ДокументСсылка = Объект.Ссылка;
ПараметрыПослеЗаписи.КонтроллерСостояниеЭДО = Элементы.ДекорацияСостояниеЭДО;
ПараметрыПослеЗаписи.ГруппаСостояниеЭДО = Элементы.ГруппаСостояниеЭДО;
ОбменСКонтрагентами.ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи, ПараметрыПослеЗаписи);
СобытияФорм.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
ОбеспечениеВДокументахСервер.ПроверитьЗапуститьФоновоеЗаданиеРаспределенияЗапасов();
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)
Перем ВыполняемаяОперация;
Если ТипЗнч(ВыбранноеЗначение) = Тип("Структура") И ВыбранноеЗначение.Свойство("ВыполняемаяОперация", ВыполняемаяОперация) Тогда
Если ВРег(ВыполняемаяОперация) = ВРег("ПодборТоваровИзЗаказа") Тогда
ОбработкаПодбораТоваровИзЗаказа(ВыбранноеЗначение.АдресВХранилище);
КонецЕсли;
ИначеЕсли ИсточникВыбора.ИмяФормы = "Обработка.ПодборТоваровВДокументПродажи.Форма.Форма" Тогда
ОбработкаВыбораПодборНаСервере(ВыбранноеЗначение);
ИначеЕсли ИсточникВыбора.ИмяФормы = "Справочник.ВидыЗапасов.Форма.ФормаВводаВидовЗапасов" Тогда
ПолучитьВидыЗапасовИзХранилища(ВыбранноеЗначение);
ИначеЕсли ИсточникВыбора.ИмяФормы = "Обработка.ПодборМногооборотнойТары.Форма.Форма" Тогда
ЗаполнитьМногооборотнуюТаруИзХранилищаСервер(ВыбранноеЗначение.АдресМногооборотнойТарыВХранилище);
МногооборотнаяТараКлиент.ОповеститьПользователяОЗаполненииМногооборотнойТарой();
ИначеЕсли НоменклатураКлиент.ЭтоУказаниеСерий(ИсточникВыбора) Тогда
НоменклатураКлиент.ОбработатьУказаниеСерии(ЭтаФорма, ПараметрыУказанияСерий, ВыбранноеЗначение);
ИначеЕсли ИсточникВыбора.ИмяФормы = "Документ.ЗаказМатериаловВПроизводство.Форма.ФормаВыбора" Тогда
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
Если Не ТекущиеДанные.Распоряжение = ВыбранноеЗначение Тогда
ТекущиеДанные.Распоряжение = ВыбранноеЗначение;
Модифицированность = Истина;
ОбновитьИнформациюПоЗаказам();
КонецЕсли;
Иначе
ОбработкаВыбораНоменклатурыНаСервере(ВыбранноеЗначение);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если ИмяСобытия = "КопированиеСтрокВБуферОбмена" Тогда
УстановитьДоступностьКомандБуфераОбменаНаКлиенте();
КонецЕсли;
Если Источник = "ПодключаемоеОборудование" И ВводДоступен() Тогда
Если ИмяСобытия = "ScanData" И МенеджерОборудованияУТКлиент.ЕстьНеобработанноеСобытие() Тогда
ОбработатьШтрихкоды(МенеджерОборудованияУТКлиент.ПреобразоватьДанныеСоСканераВМассив(Параметр));
КонецЕсли;
КонецЕсли;
Если Источник = "ПодключаемоеОборудование"
И ИмяСобытия = "НеизвестныеШтрихкоды"
И Параметр.ФормаВладелец = УникальныйИдентификатор Тогда
КэшированныеЗначения.Штрихкоды.Очистить();
ДанныеШтрихкодов = Новый Массив;
Для Каждого ПолученныйШтрихкод Из Параметр.ПолученыНовыеШтрихкоды Цикл
ДанныеШтрихкодов.Добавить(ПолученныйШтрихкод);
КонецЦикла;
Для Каждого ПолученныйШтрихкод Из Параметр.ЗарегистрированныеШтрихкоды Цикл
ДанныеШтрихкодов.Добавить(ПолученныйШтрихкод);
КонецЦикла;
ОбработатьШтрихкоды(ДанныеШтрихкодов);
КонецЕсли;
Если УправлениеСвойствамиКлиент.ОбрабатыватьОповещения(ЭтаФорма, ИмяСобытия, Параметр) Тогда
ОбновитьЭлементыДополнительныхРеквизитов();
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
КонецЕсли;
ПараметрыОповещения = ОбменСКонтрагентамиКлиент.ПараметрыОповещенияЭДО_ФормаДокумента();
ПараметрыОповещения.Форма = ЭтотОбъект;
ПараметрыОповещения.ДокументСсылка = Объект.Ссылка;
ПараметрыОповещения.КонтроллерСостояниеЭДО = Элементы.ДекорацияСостояниеЭДО;
ПараметрыОповещения.ГруппаСостояниеЭДО = Элементы.ГруппаСостояниеЭДО;
ОбменСКонтрагентамиКлиент.ОбработкаОповещения_ФормаДокумента(ИмяСобытия, Параметр, Источник, ПараметрыОповещения);
ИсправлениеДокументовКлиент.ОбработкаОповещения(ЭтаФорма, ИмяСобытия, Параметр, Источник);
СобытияФормКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия, Параметр, Источник);
РаботаСФайламиКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаНавигационнойСсылки(НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СобытияФормКлиент.ОбработкаНавигационнойСсылки(ЭтотОбъект, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
ПараметрОбработкиОповещения = ОбщегоНазначенияКлиент.СкопироватьРекурсивно(ПараметрыЗаписи);
Если ТипЗнч(ВладелецФормы) = Тип("ФормаКлиентскогоПриложения") Тогда
ИдентификаторФормыВладельца = ВладелецФормы.УникальныйИдентификатор;
Иначе
ИдентификаторФормыВладельца = Неопределено;
КонецЕсли;
ПараметрОбработкиОповещения.Вставить("ИдентификаторФормыВладельца", ИдентификаторФормыВладельца);
ПараметрОбработкиОповещения.Вставить("КлючиДокументаОповещение", РаботаСЖурналамиДокументовКлиент.ПолучитьПараметрыКлючаПоДокументу(
Объект.Ссылка, Объект.Дата, Объект.ХозяйственнаяОперация));
Оповестить("Запись_ДвижениеПродукцииИМатериалов", ПараметрОбработкиОповещения, Объект.Ссылка);
ОбменСКонтрагентамиКлиент.ПослеЗаписи_ФормаДокумента(ЭтотОбъект, ПараметрыЗаписи);
ИсправлениеДокументовКлиент.ПослеЗаписи(Объект);
МодификацияКонфигурацииКлиентПереопределяемый.ПослеЗаписи(ЭтаФорма, ПараметрыЗаписи);
ОбщегоНазначенияУТКлиент.ВыполнитьДействияПослеЗаписи(ЭтаФорма, Объект, ПараметрыЗаписи);
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда
МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент");
МодульПодключаемыеКомандыКлиент.ПослеЗаписи(ЭтотОбъект, Объект, ПараметрыЗаписи);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
СобытияФормКлиент.ПередЗаписью(ЭтотОбъект, Отказ, ПараметрыЗаписи);
Если НеВыполнятьПроверкуПередЗаписью Тогда
НеВыполнятьПроверкуПередЗаписью = Ложь;
Возврат;
КонецЕсли;
Если ПараметрыЗаписи.РежимЗаписи = РежимЗаписиДокумента.Проведение
И (Не Объект.ПоРаспоряжениям
Или Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПередачаМатериаловВКладовую")) Тогда
Отказ = Истина;
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ПараметрыЗаписи", ПараметрыЗаписи);
МногооборотнаяТараКлиент.ПредложитьПодобратьМногооборотнуюТару(
ЭтаФорма,
"Товары",
"Номенклатура,Характеристика,Количество",
Новый ОписаниеОповещения("ПередЗаписьюПредложитьПодобратьМногооборотнуюТаруЗавершение", ЭтотОбъект, ДополнительныеПараметры));
КонецЕсли;
ОбщегоНазначенияУТКлиент.ЗаписатьОбъектПриНеобходимости(ЭтотОбъект, ПараметрыЗаписи, Отказ);
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
УправлениеСвойствами.ПередЗаписьюНаСервере(ЭтотОбъект, ТекущийОбъект);
МодификацияКонфигурацииПереопределяемый.ПередЗаписьюНаСервере(ЭтаФорма, Отказ, ТекущийОбъект, ПараметрыЗаписи);
ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПередЗаписьюНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
КонецПроцедуры
&НаСервере
Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
УправлениеСвойствами.ОбработкаПроверкиЗаполнения(ЭтотОбъект, Отказ, ПроверяемыеРеквизиты);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура ДатаПриИзменении(Элемент)
ДатаПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура СтатусПриИзменении(Элемент)
Если ПараметрыУказанияСерий.ИспользоватьСерииНоменклатуры Тогда
Если МожноЗаполнитьСерииПоОтгрузке
И Объект.Статус = ПредопределенноеЗначение("Перечисление.СтатусыДвиженияПродукцииИМатериалов.Принято") Тогда
ТекстВопроса = НСтр("ru = 'Заполнить серии по данным расходных ордеров?'");
ПоказатьВопрос(Новый ОписаниеОповещения("СтатусПриИзмененииЗавершение", ЭтотОбъект), ТекстВопроса,РежимДиалогаВопрос.ДаНет,,КодВозвратаДиалога.Да);
Возврат;
КонецЕсли;
СтатусПриИзмененииСервер(Ложь);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СтатусПриИзмененииЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
ЗаполнитьСерииПоОтгрузке = Ложь;
Если РезультатВопроса = КодВозвратаДиалога.Да Тогда
ЗаполнитьСерииПоОтгрузке = Истина;
КонецЕсли;
СтатусПриИзмененииСервер(ЗаполнитьСерииПоОтгрузке);
КонецПроцедуры
&НаКлиенте
Процедура ХозяйственнаяОперацияПриИзменении(Элемент)
Если ХозОперацияДоИзменения = Объект.ХозяйственнаяОперация Тогда
Возврат;
КонецЕсли;
ПоРаспоряжениямДоИзменения = Объект.ПоРаспоряжениям;
Если Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПередачаПродукцииИзПроизводства")
Или Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ВозвратМатериаловИзПроизводства")
Или Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПередачаМатериаловВПроизводство") Тогда
Объект.ПоРаспоряжениям = Истина;
ИначеЕсли Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПередачаПродукцииИзКладовой")
Или Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ВозвратМатериаловИзКладовой")
Или Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПеремещениеПолуфабрикатов")
Или Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПеремещениеПолуфабрикатовМеждуФилиалами") Тогда
Объект.ПоРаспоряжениям = Ложь;
КонецЕсли;
Если Объект.ПоРаспоряжениям И НачатаОтгрузка Тогда
ТекстПредупреждения = НСтр("ru = 'По данному документу уже начата отгрузка.
|Изменять хоз.операцию не допускается.'");
ПоказатьПредупреждение(, ТекстПредупреждения);
Объект.ПоРаспоряжениям = ПоРаспоряжениямДоИзменения;
Объект.ХозяйственнаяОперация = ХозОперацияДоИзменения;
Возврат;
ИначеЕсли ПоРаспоряжениямДоИзменения Тогда
ОтвязатьДокументОтРаспоряжений = Не Объект.ПоРаспоряжениям
Или ХозОперацияДоИзменения = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПередачаМатериаловВКладовую")
Или Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПередачаМатериаловВКладовую");
Если ОтвязатьДокументОтРаспоряжений
И ЕстьСтрокиПривязанныеКЗаказу() Тогда
Если ЗначениеЗаполнено(Объект.Распоряжение) Тогда
ТекстВопроса = НСтр("ru='Строки документа перестанут быть связанными со строками распоряжения. Продолжить?'");
Иначе
ТекстВопроса = НСтр("ru='Строки документа перестанут быть связанными со строками распоряжений. Продолжить?'");
КонецЕсли;
ОписаниеОповещения = Новый ОписаниеОповещения("ХозОперацияПриИзмененииЗавершение", ЭтотОбъект, ПоРаспоряжениямДоИзменения);
ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
Возврат;
КонецЕсли;
КонецЕсли;
ХозяйственнаяОперацияПриИзмененииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура ПоРаспоряжениямПриИзменении(Элемент)
Если Объект.ПоРаспоряжениям И НачатаОтгрузка Тогда
ТекстПредупреждения = НСтр("ru = 'По данному документу уже начата отгрузка. Установка признака невозможна.'");
ПоказатьПредупреждение(, ТекстПредупреждения);
Объект.ПоРаспоряжениям = Ложь;
Возврат;
КонецЕсли;
Если Объект.ПоРаспоряжениям Тогда
Если Объект.Товары.Количество() = 0 Тогда
ТекстВопроса = НСтр("ru='Список Продукция и материалы будет перезаполнен остатками неоформленных товаров по распоряжениям. Продолжить?'");
Иначе
ТекстВопроса = НСтр("ru='Строки в списке Продукция и материалы будут привязаны к строкам распоряжений. Продолжить?'");
КонецЕсли;
Иначе
Если ЕстьСтрокиПривязанныеКЗаказу() Тогда
ТекстВопроса = НСтр("ru='Строки в списке Продукция и материалы перестанут быть связанными со строками распоряжений. Продолжить?'");
Иначе
ПоРаспоряжениямПриИзмененииНаСервере();
Возврат;
КонецЕсли;
КонецЕсли;
ПоказатьВопрос(Новый ОписаниеОповещения("ПоРаспоряжениямПриИзмененииЗавершение", ЭтотОбъект), ТекстВопроса, РежимДиалогаВопрос.ДаНет);
КонецПроцедуры
&НаКлиенте
Процедура ОрганизацияПриИзменении(Элемент)
Если Не ОрганизацияДоИзменения = Объект.Организация Тогда
ОрганизацияПриИзмененииНаСервере();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОрганизацияПолучательПриИзменении(Элемент)
ОрганизацияПолучательПриИзмененииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура ОтправительПриИзменении(Элемент)
Если Объект.Отправитель <> ОтправительДоИзменения
И (Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПередачаМатериаловВПроизводство")
Или Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПередачаМатериаловВКладовую"))
И Объект.ПоРаспоряжениям И Объект.Товары.Количество() > 0 Тогда
ТекстВопроса = НСтр("ru='Список ""Материалы"" будет очищен. Продолжить?'");
ОписаниеОповещения = Новый ОписаниеОповещения("ОтправительПриИзмененииЗавершение", ЭтотОбъект);
СписокКнопок = Новый СписокЗначений;
СписокКнопок.Добавить(КодВозвратаДиалога.Да, НСтр("ru = 'Очистить и продолжить'"));
СписокКнопок.Добавить(КодВозвратаДиалога.Отмена);
ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, СписокКнопок);
Возврат;
КонецЕсли;
ОтправительПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура ПолучательПриИзменении(Элемент)
ПолучательПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура НадписьРаспоряженияНажатие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("СписокДокументов", СписокРаспоряжений);
ПараметрыФормы.Вставить("Заголовок", НСтр("ru='Распоряжения (%КоличествоДокументов%)'"));
ОткрытьФорму("ОбщаяФорма.ПросмотрСпискаДокументов", ПараметрыФормы, ЭтаФорма,,,,, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура ГруппаСтраницыПриСменеСтраницы(Элемент, ТекущаяСтраница)
Если ТекущаяСтраница.Имя = "ГруппаДополнительно"
И Не ЭтотОбъект.ПараметрыСвойств.ВыполненаОтложеннаяИнициализация Тогда
СвойстваВыполнитьОтложеннуюИнициализацию();
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура НаправлениеДеятельностиПриИзменении(Элемент)
Если Объект.ХозяйственнаяОперация <> ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПередачаМатериаловВКладовую") Тогда
НаправлениеДеятельностиПриИзмененииСервер();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВидЦеныПриИзменении(Элемент)
Если ИспользоватьПлановуюСтоимость Тогда
ЕстьСтрокиДляИзменения = Объект.Товары.Количество() > 0;
Иначе
ОтборПоТипу = Новый Структура("ПобочноеИзделие",
Ложь);
МассивСтрок = Объект.Товары.НайтиСтроки(ОтборПоТипу);
ЕстьСтрокиДляИзменения = МассивСтрок.Количество() > 0;
КонецЕсли;
Если ЗначениеЗаполнено(Объект.ВидЦены) И ЕстьСтрокиДляИзменения Тогда
ОписаниеОповещения = Новый ОписаниеОповещения("ВидЦеныПриИзмененииЗавершение", ЭтаФорма);
ТекстВопроса = НСтр("ru = 'Перезаполнить цены товаров?'");
ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВидЦеныПриИзмененииЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
Если РезультатВопроса = КодВозвратаДиалога.Да Тогда
ЦеныРассчитаны = ЗаполнитьЦеныПоВидуЦенСервер(Объект.ВидЦены);
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияЦенПоВидуЦен(ЦеныРассчитаны, Объект.ВидЦены);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВалютаПриИзменении(Элемент)
Если ЦенообразованиеКлиент.НеобходимПересчетВВалюту(Объект, ВалютаДокумента) Тогда
ВалютаПриИзмененииСервер();
ЦенообразованиеКлиент.ОповеститьОбОкончанииПересчетаСуммВВалюту(ВалютаДокумента, Объект.Валюта);
КонецЕсли;
ВалютаДокумента = Объект.Валюта;
КонецПроцедуры
&НаКлиенте
Процедура ВнутренняяПереработкаПриИзменении(Элемент)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура ОрганизацияДавалецПриИзменении(Элемент)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура ЗакрытьЭтап(Команда)
Если Модифицированность Или Не Объект.Проведен Тогда
ПоказатьВопрос(Новый ОписаниеОповещения("ЗакрытьЭтапЗавершение", ЭтотОбъект),
НСтр("ru = 'Необходимо провести документ для выполнения операции. Провести документ?'"),РежимДиалогаВопрос.ДаНет);
Возврат;
КонецЕсли;
ЗакрытьЭтапФрагмент();
КонецПроцедуры
&НаКлиенте
Процедура ЗакрытьЭтапЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
Ответ = РезультатВопроса;
Если Ответ = КодВозвратаДиалога.Нет Тогда
Возврат;
ИначеЕсли Не Записать(Новый Структура("РежимЗаписи", РежимЗаписиДокумента.Проведение)) Тогда
Возврат;
КонецЕсли;
ЗакрытьЭтапФрагмент();
КонецПроцедуры
&НаКлиенте
Процедура ЗакрытьЭтапФрагмент()
ОценкаПроизводительностиКлиент.ЗамерВремени(
"Документ.ДвижениеПродукцииИМатериалов.ФормаДокумента.Команда.ЗакрытьЭтапФрагмент");
СписокЗаказовКЗакрытию = Новый СписокЗначений;
Если ЗначениеЗаполнено(Объект.Распоряжение) Тогда
СписокЗаказовКЗакрытию.Добавить(Объект.Распоряжение)
Иначе
СписокЗаказовКЗакрытию.ЗагрузитьЗначения(СписокРаспоряжений.ВыгрузитьЗначения())
КонецЕсли;
СтруктураЗакрытия = Новый Структура;
СтруктураЗакрытия.Вставить("Заказы", СписокЗаказовКЗакрытию);
СтруктураЗакрытия.Вставить("ДокументИнициатор", Объект.Ссылка);
СтруктураЗакрытия.Вставить("ОтменитьНеотработанныеСтроки", Истина);
СтруктураЗакрытия.Вставить("ЗакрыватьЗаказы", Истина);
ОткрытьФорму("Обработка.ПомощникЗакрытияЗаказов.Форма.ФормаЗакрытия", СтруктураЗакрытия,
ЭтаФорма,,,, Неопределено, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура НалогообложениеНДСОчистка(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
КонецПроцедуры
&НаКлиенте
Процедура СтрокаИсправлениеОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
ИсправлениеДокументовКлиент.СтрокаИсправлениеОбработкаНавигационныйСсылки(
ЭтотОбъект, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ДекорацияЭДОНажатие(Элемент, СтандартнаяОбработка)
ОбменСКонтрагентамиКлиент.СостояниеЭДОНажатие_ФормаДокумента(ЭтотОбъект, СтандартнаяОбработка);
Возврат;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыТовары
&НаКлиенте
Процедура ТоварыПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
Если ТекущаяСтрока <> Неопределено Тогда
ОбновитьОтклоненияОтРаспоряженияВСтроке(ТекущаяСтрока, Объект.ПоРаспоряжениям, Объект.ХозяйственнаяОперация);
ОбновитьИнформациюОбОтклоненииОтРаспоряжений(
Объект.Товары,
НадписьРасхождение,
Элементы.КартинкаРасхождение1,
Элементы.КартинкаРасхождение2);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
Если Поле = Элементы.ТоварыРаспоряжение Тогда
Если ЗначениеЗаполнено(Элементы.Товары.ТекущиеДанные.Распоряжение) Тогда
ПоказатьЗначение(Неопределено, Элементы.Товары.ТекущиеДанные.Распоряжение);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр)
Если ПоЭтапу
И Копирование Тогда
Отказ = Истина;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
РаботаСТабличнымиЧастямиКлиент.КэшироватьТекущуюСтроку(Элементы.Товары, ЭтотОбъект);
СкладыКлиент.ОбновитьКешированныеЗначения(Элемент, КэшированныеЗначения, ПараметрыУказанияСерий, Копирование);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
ОбновитьСтатусыСерий = НоменклатураКлиент.НеобходимоОбновитьСтатусыСерий(
Элемент, КэшированныеЗначения, ПараметрыУказанияСерий);
ДополнительныеПараметры = Новый Структура;
СобытияФормКлиент.ПриИзмененииЭлемента(ЭтотОбъект, Элементы.Товары, ДополнительныеПараметры);
Если ДополнительныеПараметры.Свойство("ТребуетсяСерверныйВызов") Или ОбновитьСтатусыСерий Тогда
ТоварыПриОкончанииРедактированияНаСервере(
ДополнительныеПараметры.Свойство("ТребуетсяСерверныйВызов"),
?(ОбновитьСтатусыСерий, ТекущиеДанные.ПолучитьИдентификатор(), Неопределено),
КэшированныеЗначения);
КонецЕсли;
Если ОбновитьСтатусыСерий Тогда
НоменклатураКлиент.ОбновитьКешированныеЗначенияДляУчетаСерий(Элемент,КэшированныеЗначения,ПараметрыУказанияСерий);
КонецЕсли;
МногооборотнаяТараКлиент.ОбновитьСостояниеЗаполненияМногооборотнойТары(Объект.СостояниеЗаполненияМногооборотнойТары);
ОбновитьИнформациюОбОтклоненииОтРаспоряжений(
Объект.Товары,
НадписьРасхождение,
Элементы.КартинкаРасхождение1,
Элементы.КартинкаРасхождение2);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПередУдалением(Элемент, Отказ)
РаботаСТабличнымиЧастямиКлиент.КэшироватьТекущуюСтроку(Элементы.Товары, ЭтотОбъект);
НоменклатураКлиент.ОбновитьКешированныеЗначенияДляУчетаСерий(
Элемент,КэшированныеЗначения,ПараметрыУказанияСерий);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПослеУдаления(Элемент)
НеобходимоОбновитьСтатусыСерий = НоменклатураКлиент.НеобходимоОбновитьСтатусыСерий(Элемент, КэшированныеЗначения, ПараметрыУказанияСерий, Истина);
ТоварыПослеУдаленияСервер(НеобходимоОбновитьСтатусыСерий, КэшированныеЗначения);
Если НеобходимоОбновитьСтатусыСерий Тогда
НоменклатураКлиент.ОбновитьКешированныеЗначенияДляУчетаСерий(Элемент, КэшированныеЗначения, ПараметрыУказанияСерий);
КонецЕсли;
МногооборотнаяТараКлиент.ОбновитьСостояниеЗаполненияМногооборотнойТары(Объект.СостояниеЗаполненияМногооборотнойТары);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыУпаковкаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураДействий = Новый Структура;
ДобавитьДействиеПересчитатьКоличествоЕдиниц(ЭтотОбъект, СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыНоменклатураПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииНоменклатуры(ЭтотОбъект, ТекущаяСтрока, СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыХарактеристикаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураДействий = Новый Структура;
ОбеспечениеКлиентСервер.СтруктураДействийВставитьПриИзмененииНазначения(СтруктураДействий);
СтруктураДействий.Вставить("ХарактеристикаПриИзмененииПереопределяемый", Новый Структура("ИмяФормы, ИмяТабличнойЧасти",
ЭтаФорма.ИмяФормы, "Товары"));
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСерияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОткрытьПодборСерий(Элемент.ТекстРедактирования);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСерияПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
ВыбранноеЗначение = НоменклатураКлиентСервер.ВыбраннаяСерия();
ВыбранноеЗначение.Значение = ТекущаяСтрока.Серия;
ВыбранноеЗначение.ИдентификаторТекущейСтроки = ТекущаяСтрока.ПолучитьИдентификатор();
НоменклатураКлиент.ОбработатьУказаниеСерии(ЭтаФорма, ПараметрыУказанияСерий, ВыбранноеЗначение);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыКоличествоУпаковокПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(ЭтотОбъект, СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыЦенаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСумму");
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСуммаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьЦенуПоСумме");
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыНазначениеПриИзменении(Элемент)
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
ТекущиеДанные.НазначениеОтправителя = ТекущиеДанные.Назначение;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыРаспоряжениеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
Если ЗначениеЗаполнено(ТекущиеДанные.Распоряжение) Тогда
Возврат;
КонецЕсли;
Если ТекущиеДанные <> Неопределено Тогда
ПараметрыОтбора = Новый Структура();
ПараметрыОтбора.Вставить("Проведен", Истина);
ПараметрыОтбора.Вставить("Организация", Объект.Организация);
ПараметрыОтбора.Вставить("Склад", Объект.Отправитель);
ПараметрыОтбора.Вставить("ЦеховаяКладовая", Объект.Получатель);
ПараметрыОтбора.Вставить("ХозяйственнаяОперация", Объект.ХозяйственнаяОперация);
ОткрытьФорму("Документ.ЗаказМатериаловВПроизводство.Форма.ФормаВыбора",
Новый Структура("Отбор", ПараметрыОтбора), ЭтаФорма);
Возврат;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаСервере
Процедура ВыполнитьКомандуНаСервере(ПараметрыВыполнения)
ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, ПараметрыВыполнения, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПродолжитьВыполнениеКомандыНаСервере(ПараметрыВыполнения, ДополнительныеПараметры) Экспорт
ВыполнитьКомандуНаСервере(ПараметрыВыполнения);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
ПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_КомандаПанелиПрисоединенныхФайлов(Команда)
РаботаСФайламиКлиент.КомандаУправленияПрисоединеннымиФайлами(ЭтотОбъект, Команда);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПроверкаПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраПроверкаПеретаскивания(ЭтотОбъект, Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраПеретаскивание(ЭтотОбъект, Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраНажатие(Элемент, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраНажатие(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуЭДО(Команда)
ЭлектронноеВзаимодействиеКлиент.ВыполнитьПодключаемуюКомандуЭДО(Команда, ЭтотОбъект, Объект);
КонецПроцедуры
&НаКлиенте
Процедура ПодобратьТовары(Команда)
Если Не ЗначениеЗаполнено(Объект.Отправитель) Тогда
ОчиститьСообщения();
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(НСтр("ru = 'Поле ""Склад"" не заполнено'"), Объект.Ссылка, "Объект.Отправитель");
Возврат;
КонецЕсли;
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Склад", Объект.Отправитель);
ПараметрыФормы.Вставить("РежимПодбораБезСуммовыхПараметров", Истина);
ПараметрыФормы.Вставить("СкрыватьКолонкуВидЦены", Истина);
ПараметрыФормы.Вставить("СкрыватьКомандуЦеныНоменклатуры", Истина);
ПараметрыФормы.Вставить("ОтборПоТипуНоменклатуры", Новый ФиксированныйМассив(НоменклатураКлиентСервер.ОтборПоТоваруМногооборотнойТаре(Ложь)));
ПараметрыФормы.Вставить("Заголовок", НСтр("ru = 'Подбор товаров'"));
ПараметрыФормы.Вставить("Дата", Объект.Дата);
ПараметрыФормы.Вставить("Документ", Объект.Ссылка);
ПараметрыФормы.Вставить("ПараметрыУказанияСерий", ПараметрыУказанияСерий);
ОткрытьФорму("Обработка.ПодборТоваровВДокументПродажи.Форма", ПараметрыФормы, ЭтаФорма, УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ПодобратьТоварыПоЗаказамОрдерам(Команда)
ОткрытьПодборПоРаспоряжениямОрдерам();
КонецПроцедуры
&НаКлиенте
Процедура ПоискПоШтрихкодуВыполнить(Команда)
ОчиститьСообщения();
Оповещение = Новый ОписаниеОповещения("ПоискПоШтрихкодуЗавершение", ЭтотОбъект);
ШтрихкодированиеНоменклатурыКлиент.ПоказатьВводШтрихкода(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ПолучитьВес(Команда)
ТекущаяСтрока = МенеджерОборудованияУТКлиент.ТекущаяСтрока(ЭтаФорма);
Если ТекущаяСтрока = Неопределено Тогда
Возврат;
КонецЕсли;
МенеджерОборудованияКлиент.НачатьПолученияВесаСЭлектронныхВесов(
Новый ОписаниеОповещения("ПолучитьВесЗавершение", ЭтотОбъект, ТекущаяСтрока),
УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ПолучитьВесЗавершение(РезультатВыполнения, ТекущаяСтрока) Экспорт
Если РезультатВыполнения.Результат Тогда
ТекущаяСтрока.КоличествоУпаковок = РезультатВыполнения.Вес;
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(ЭтотОбъект, СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
Иначе
МенеджерОборудованияУТКлиент.СообщитьОбОшибке(РезультатВыполнения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьДанныеИзТСД(Команда)
ОчиститьСообщения();
МенеджерОборудованияКлиент.НачатьЗагрузкуДанныеИзТСД(
Новый ОписаниеОповещения("ЗагрузитьИзТСДЗавершение", ЭтотОбъект),
УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьИзТСДЗавершение(Результат, Параметры) Экспорт
Если Результат.Результат Тогда
ОбработатьШтрихкоды(Результат.ТаблицаТоваров);
Иначе
МенеджерОборудованияУТКлиент.СообщитьОбОшибке(Результат);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВставитьСтроки(Команда)
КоличествоТоваровДоВставки = Объект.Товары.Количество();
ПолучитьСтрокиИзБуфераОбмена();
КоличествоВставленных = Объект.Товары.Количество()-КоличествоТоваровДоВставки;
РаботаСТабличнымиЧастямиКлиент.ОповеститьПользователяОВставкеСтрок(КоличествоВставленных);
КонецПроцедуры
&НаКлиенте
Процедура СкопироватьСтроки(Команда)
Если РаботаСТабличнымиЧастямиКлиент.ВыбранаСтрокаДляВыполненияКоманды(Элементы.Товары) Тогда
СкопироватьСтрокиНаСервере();
РаботаСТабличнымиЧастямиКлиент.ОповеститьПользователяОКопированииСтрок(Элементы.Товары.ВыделенныеСтроки.Количество());
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДополнитьМногооборотнойТарой(Команда)
МногооборотнаяТараКлиент.ПодобратьМногооборотнуюТару(
ЭтаФорма,
"Товары",
"Номенклатура,Характеристика,Количество");
КонецПроцедуры
&НаКлиенте
Процедура ОтвязатьОтЗаказа(Команда)
ВыделенныеСтроки = Элементы.Товары.ВыделенныеСтроки;
Если ВыделенныеСтроки.Количество()>0 Тогда
ОтвязатьОтРаспоряженияВыбранныеСтроки();
ОповеститьОбОкончанииОтвязкиСтрок(ВыделенныеСтроки.Количество());
Иначе
ТекстПредупреждения = НСтр("ru='Выберите строки, которые необходимо отвязать от распоряжений.'");
ПоказатьПредупреждение(Неопределено, ТекстПредупреждения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПровестиДокумент(Команда)
ОбщегоНазначенияУТКлиент.Провести(ЭтаФорма, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ПровестиИЗакрыть(Команда)
ОбщегоНазначенияУТКлиент.ПровестиИЗакрыть(ЭтаФорма, Истина);
КонецПроцедуры
&НаКлиенте
Процедура УказатьСерии(Команда)
ОткрытьПодборСерий();
КонецПроцедуры
&НаКлиенте
Процедура РазбитьСтроку(Команда)
ТаблицаФормы = Элементы.Товары;
ДанныеТаблицы = Объект.Товары;
Оповещение = Новый ОписаниеОповещения("РазбитьСтрокуЗавершение", ЭтотОбъект);
РаботаСТабличнымиЧастямиКлиент.РазбитьСтроку(ДанныеТаблицы, ТаблицаФормы, Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ЗаписатьДокумент(Команда)
ОбщегоНазначенияУТКлиент.Записать(ЭтаФорма, Истина);
КонецПроцедуры
&НаКлиенте
Процедура УстановитьПометкуУдаленияДокумента(Команда)
ОбщегоНазначенияУТКлиент.УстановитьПометкуУдаленияДокумента(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьСерииПоFEFO(Команда)
Если ЕстьЗаполненныеСерииПоFEFO() Тогда
НоменклатураКлиент.ЗадатьВопросОПерезаполненииСерийПоFEFO(
Новый ОписаниеОповещения("ЗаполнитьСерииПоFEFOЗавершение", ЭтотОбъект));
Возврат;
КонецЕсли;
Если Не ЗаполнитьСерииПоFEFOСервер() Тогда
НоменклатураКлиент.ПредупредитьОбОтсутствииСтрокЗаполняемыхПоFEFO();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьВидыЗапасов(Команда)
ПараметрыРедактированияВидовЗапасов = ПоместитьТоварыИВидыЗапасовВХранилище();
ФинансыКлиент.ОткрытьВидыЗапасов(ЭтотОбъект, ПараметрыРедактированияВидовЗапасов);
КонецПроцедуры
&НаКлиенте
Процедура ИзменитьКачествоНоменклатуры(Команда)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
Если ТекущаяСтрока = Неопределено Тогда
Возврат;
КонецЕсли;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ИзменитьКачество");
Если ЗначениеЗаполнено(ТекущаяСтрока.Характеристика) Тогда
СтруктураДействий.Вставить("ЗаполнитьХарактеристикуНекачественногоТовара", ТекущаяСтрока.Характеристика);
КонецЕсли;
Если ЗначениеЗаполнено(ТекущаяСтрока.Упаковка) Тогда
СтруктураДействий.Вставить("ЗаполнитьУпаковкуНекачественногоТовара", ТекущаяСтрока.Упаковка);
КонецЕсли;
ДобавитьВСтруктуруДействияПриИзмененииНоменклатуры(ЭтаФорма, ТекущаяСтрока, СтруктураДействий);
СкладыКлиент.ИзменитьКачество(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
КонецПроцедуры
&НаКлиенте
Процедура ОкруглитьДоЦелойУпаковки(Команда)
Если Элементы.Товары.ВыделенныеСтроки.Количество() = 0 Тогда
Возврат;
КонецЕсли;
ВсегоСтрок = 0;
Для каждого ИдентификаторСтроки Из Элементы.Товары.ВыделенныеСтроки Цикл
ДанныеСтроки = Объект.Товары.НайтиПоИдентификатору(ИдентификаторСтроки);
Если Цел(ДанныеСтроки.КоличествоУпаковок) = ДанныеСтроки.КоличествоУпаковок Тогда
Продолжить;
КонецЕсли;
ВсегоСтрок = ВсегоСтрок + 1;
КонецЦикла;
Если ВсегоСтрок = 0 Тогда
ПоказатьОповещениеПользователя(
НСтр("ru = 'Округление не требуется'"),,
НСтр("ru = 'В выбранных строках уже целое количество единиц.'"),
БиблиотекаКартинок.Информация32);
Возврат;
КонецЕсли;
ТекстВопроса = НСтр("ru = 'В выбранных строках количество будет округлено до целых единиц.
|Продолжить?'");
ОписаниеОповещения = Новый ОписаниеОповещения("ОкруглитьДоЦелойУпаковкиЗавершение", ЭтотОбъект);
СписокКнопок = Новый СписокЗначений;
СписокКнопок.Добавить(КодВозвратаДиалога.Да, НСтр("ru = 'Продолжить'"));
СписокКнопок.Добавить(КодВозвратаДиалога.Отмена);
ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, СписокКнопок);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыЗаполнитьЦеныПоВидуЦен(Команда)
ЦеныРассчитаны = ТоварыЗаполнитьЦеныПоВидуЦенСервер();
Если ЦеныРассчитаны Тогда
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияЦенПоВидуЦен(ЦеныРассчитаны, Объект.ВидЦены);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыЗаполнитьЦеныПоКалькуляции(Команда)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_СвойстваВыполнитьКоманду(ЭлементИлиКоманда, НавигационнаяСсылка = Неопределено, СтандартнаяОбработка = Неопределено)
УправлениеСвойствамиКлиент.ВыполнитьКоманду(ЭтотОбъект, ЭлементИлиКоманда, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуИнтеграции(Команда)
ИнтеграцияС1СДокументооборотБазоваяФункциональностьКлиент.ВыполнитьПодключаемуюКомандуИнтеграции(Команда, ЭтотОбъект, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)
СобытияФормКлиент.ВыполнитьПереопределяемуюКоманду(ЭтаФорма, Команда);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#Область ПриИзмененииРеквизитов
&НаСервере
Процедура ОрганизацияПриИзмененииНаСервере()
АктуализироватьНалогообложениеНДС();
УстановитьИспользованиеПлановойСтоимости();
ОрганизацияДоИзменения = Объект.Организация;
КонецПроцедуры
&НаСервере
Процедура ОрганизацияПолучательПриИзмененииНаСервере()
АктуализироватьНалогообложениеНДС();
КонецПроцедуры
&НаСервере
Процедура ДатаПриИзмененииСервер()
ОпределитьНаличиеОрдернойСхемы();
НастроитьКомандуПодобратьПоЗаказамОрдерам();
АктуализироватьНалогообложениеНДС();
ЗаполнитьСтатусыУказанияСерийСервер(Истина);
КонецПроцедуры
&НаСервере
Процедура ХозяйственнаяОперацияПриИзмененииНаСервере()
Если НЕ ЗначениеЗаполнено(Объект.ХозяйственнаяОперация) Тогда
Объект.ХозяйственнаяОперация = Элементы.ХозяйственнаяОперация.СписокВыбора[0].Значение;
КонецЕсли;
СписокИзмененныхРеквизитов = "ХозяйственнаяОперация";
Если НЕ ДоступенВыборПоРаспоряжению(Объект) Тогда
Документы.ДвижениеПродукцииИМатериалов.ОтвязатьОтРаспоряжений(Объект);
СписокИзмененныхРеквизитов = СписокИзмененныхРеквизитов + ",ПоРаспоряжениям";
КонецЕсли;
ПоменятьМестамиОтправителяИПолучателяПриИзмененииОперации(СписокИзмененныхРеквизитов);
АктуализироватьНалогообложениеНДС();
НастроитьЗависимыеЭлементыФормыНаСервере(СписокИзмененныхРеквизитов);
ОграничитьТипЗначения("Отправитель");
ОграничитьТипЗначения("Получатель");
Если НЕ ИспользоватьНесколькоСкладов Тогда
Если ТипЗнч(Объект.Получатель) = Тип("СправочникСсылка.Склады") Тогда
Объект.Получатель = ЗначениеНастроекПовтИсп.ПолучитьСкладПоУмолчанию(Объект.Получатель);
ИначеЕсли ТипЗнч(Объект.Отправитель) = Тип("СправочникСсылка.Склады") Тогда
Объект.Отправитель = ЗначениеНастроекПовтИсп.ПолучитьСкладПоУмолчанию(Объект.Отправитель);
КонецЕсли;
КонецЕсли;
СтруктураДействий = Новый Структура;
УстановитьПризнакЦеховаяКладовая("Отправитель", СтруктураДействий);
УстановитьПризнакЦеховаяКладовая("Получатель", СтруктураДействий);
Если ЗначениеЗаполнено(СтруктураДействий) Тогда
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект["Товары"], СтруктураДействий, КэшированныеЗначения);
КонецЕсли;
ЗаполнитьСтатусыУказанияСерийСервер(Истина);
НастроитьКомандуПодобратьПоЗаказамОрдерам();
ОбновитьИнформациюПоЗаказам();
ОбновитьИнформациюОбОтклоненииОтРаспоряженийСервер();
ПослеИзмененияСтрокПрограммноНаСервере(Ложь);
ХозОперацияДоИзменения = Объект.ХозяйственнаяОперация;
КонецПроцедуры
&НаСервере
Процедура ПоменятьМестамиОтправителяИПолучателяПриИзмененииОперации(СписокИзмененныхРеквизитов)
СтарыйОтправитель = Объект.Отправитель;
СтарыйПолучатель = Объект.Получатель;
Если (Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПеремещениеПолуфабрикатов
Или Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаПродукцииИзПроизводства
Или Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаПродукцииИзКладовой)
И (ХозОперацияДоИзменения = Перечисления.ХозяйственныеОперации.ПередачаМатериаловВПроизводство
Или ХозОперацияДоИзменения = Перечисления.ХозяйственныеОперации.ПередачаМатериаловВКладовую)
Или (Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаМатериаловВПроизводство
Или Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаМатериаловВКладовую)
И (ХозОперацияДоИзменения = Перечисления.ХозяйственныеОперации.ВозвратМатериаловИзПроизводства
Или ХозОперацияДоИзменения = Перечисления.ХозяйственныеОперации.ВозвратМатериаловИзКладовой)
Или (Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратМатериаловИзПроизводства
Или Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратМатериаловИзКладовой)
И (ХозОперацияДоИзменения = Перечисления.ХозяйственныеОперации.ПередачаМатериаловВПроизводство
Или ХозОперацияДоИзменения = Перечисления.ХозяйственныеОперации.ПередачаМатериаловВКладовую)
Тогда
Объект.Отправитель = СтарыйПолучатель;
СписокИзмененныхРеквизитов = СписокИзмененныхРеквизитов + ",Отправитель";
КонецЕсли;
Если (Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаМатериаловВПроизводство
Или Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаМатериаловВКладовую)
И (ХозОперацияДоИзменения = Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПеремещениеПолуфабрикатов
Или ХозОперацияДоИзменения = Перечисления.ХозяйственныеОперации.ПередачаПродукцииИзПроизводства
Или ХозОперацияДоИзменения = Перечисления.ХозяйственныеОперации.ПередачаПродукцииИзКладовой)
Или (Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаМатериаловВПроизводство
Или Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаМатериаловВКладовую)
И (ХозОперацияДоИзменения = Перечисления.ХозяйственныеОперации.ВозвратМатериаловИзПроизводства
Или ХозОперацияДоИзменения = Перечисления.ХозяйственныеОперации.ВозвратМатериаловИзКладовой)
Или (Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратМатериаловИзПроизводства
Или Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратМатериаловИзКладовой)
И (ХозОперацияДоИзменения = Перечисления.ХозяйственныеОперации.ПередачаМатериаловВПроизводство
Или ХозОперацияДоИзменения = Перечисления.ХозяйственныеОперации.ПередачаМатериаловВКладовую)
Тогда
Объект.Получатель = СтарыйОтправитель;
СписокИзмененныхРеквизитов = СписокИзмененныхРеквизитов + ",Получатель";
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОтправительПриИзмененииСервер()
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаМатериаловВПроизводство
Или Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаМатериаловВКладовую Тогда
ЗаполнитьВидЦеныПоСкладу();
ОпределитьНаличиеОрдернойСхемы();
НастроитьКомандуПодобратьПоЗаказамОрдерам();
Если Объект.ПоРаспоряжениям И Объект.Товары.Количество() > 0 Тогда
Объект.Товары.Очистить();
ОбновитьИнформациюПоЗаказам();
КонецЕсли;
КонецЕсли;
СтруктураДействий = Новый Структура;
УстановитьПризнакЦеховаяКладовая("Отправитель", СтруктураДействий);
Если ЗначениеЗаполнено(СтруктураДействий) Тогда
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект["Товары"], СтруктураДействий, КэшированныеЗначения);
КонецЕсли;
ЗаполнитьСтатусыУказанияСерийСервер(Истина);
НастроитьЗависимыеЭлементыФормыНаСервере("Отправитель");
ОтправительДоИзменения = Объект.Отправитель;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьВидЦеныПоСкладу()
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Ссылка", Объект.Отправитель);
Запрос.Текст =
"ВЫБРАТЬ
| Склады.УчетныйВидЦены КАК УчетныйВидЦены
|ИЗ
| Справочник.Склады КАК Склады
|ГДЕ
| Склады.Ссылка = &Ссылка";
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() И ЗначениеЗаполнено(Выборка.УчетныйВидЦены) Тогда
Объект.ВидЦены = Выборка.УчетныйВидЦены;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПолучательПриИзмененииСервер()
ОпределитьНаличиеОрдернойСхемы();
НастроитьКомандуПодобратьПоЗаказамОрдерам();
АктуализироватьНалогообложениеНДС();
СтруктураДействий = Новый Структура;
УстановитьПризнакЦеховаяКладовая("Получатель", СтруктураДействий);
Если ЗначениеЗаполнено(СтруктураДействий) Тогда
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект["Товары"], СтруктураДействий, КэшированныеЗначения);
КонецЕсли;
ЗаполнитьСтатусыУказанияСерийСервер(Истина);
НастроитьЗависимыеЭлементыФормыНаСервере("Получатель");
КонецПроцедуры
&НаСервере
Процедура НаправлениеДеятельностиПриИзмененииСервер()
АктуализироватьНалогообложениеНДС();
КонецПроцедуры
&НаСервере
Процедура ТоварыПослеУдаленияСервер(НеобходимоОбновитьСтатусыСерий, КэшированныеЗначения)
Если НеобходимоОбновитьСтатусыСерий Тогда
ЗаполнитьСтатусыУказанияСерийПриОкончанииРедактированияСтрокиТЧ(Неопределено, КэшированныеЗначения);
КонецЕсли;
ОбновитьИнформациюПоЗаказам();
ОбновитьИнформациюОбОтклоненииОтРаспоряженийСервер();
СобытияФорм.ПриИзмененииЭлемента(ЭтотОбъект, "Товары");
КонецПроцедуры
&НаСервере
Процедура ТоварыПриОкончанииРедактированияНаСервере(ОбновитьТовары, ТекущаяСтрокаИдентификатор, КэшированныеЗначения)
Если ОбновитьТовары Тогда
СобытияФорм.ПриИзмененииЭлемента(ЭтотОбъект, "Товары");
КонецЕсли;
Если ТекущаяСтрокаИдентификатор <> Неопределено Тогда
ЗаполнитьСтатусыУказанияСерийПриОкончанииРедактированияСтрокиТЧ(ТекущаяСтрокаИдентификатор, КэшированныеЗначения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОтправительПриИзмененииЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
Если РезультатВопроса <> КодВозвратаДиалога.Да Тогда
Объект.Отправитель = ОтправительДоИзменения;
Возврат;
КонецЕсли;
ОтправительПриИзмененииСервер();
КонецПроцедуры
&НаСервере
Процедура ВалютаПриИзмененииСервер()
СтараяВалюта = ВалютаДокумента;
НоваяВалюта = Объект.Валюта;
ДатаДокумента = ?(ЗначениеЗаполнено(Объект.Дата), Объект.Дата, ТекущаяДатаСеанса());
СтруктураКурсовСтаройВалюты = РаботаСКурсамиВалютУТ.ПолучитьКурсВалюты(СтараяВалюта, ДатаДокумента);
СтруктураКурсовНовойВалюты = РаботаСКурсамиВалютУТ.ПолучитьКурсВалюты(НоваяВалюта, ДатаДокумента);
Ценообразование.ПересчитатьСуммыВВалютуТовары(
Объект,
СтараяВалюта,
НоваяВалюта,
СтруктураКурсовСтаройВалюты,
СтруктураКурсовНовойВалюты,
Ложь);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСумму");
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий, КэшированныеЗначения);
КонецПроцедуры
#КонецОбласти
#Область ПодборыИОбработкаПроверкиКоличества
&НаКлиенте
Процедура ОткрытьПодборПоРаспоряжениямОрдерам()
РеквизитыШапки = Новый Структура("Организация, Получатель, Отправитель, ХозяйственнаяОперация, ВариантПриемкиТоваров, Ссылка");
ЗаполнитьЗначенияСвойств(РеквизитыШапки, Объект);
ДополнительныеПоля = Новый Структура;
ПараметрыФормы = Новый Структура();
ПараметрыФормы.Вставить("РеквизитыШапки", РеквизитыШапки);
ПараметрыФормы.Вставить("Заказ", Объект.Распоряжение);
Если Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПередачаМатериаловВПроизводство")
Или Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПередачаМатериаловВКладовую") Тогда
ПараметрыФормы.Вставить("ОрдернаяСхемаПриОтгрузке", ОрдернаяСхема);
ПараметрыФормы.Вставить("ОрдернаяСхемаПриПоступлении", Ложь);
ДополнительныеПоля.Вставить("ДатаОтгрузки");
Иначе
ПараметрыФормы.Вставить("ОрдернаяСхемаПриОтгрузке", Ложь);
ПараметрыФормы.Вставить("ОрдернаяСхемаПриПоступлении", ОрдернаяСхема);
ДополнительныеПоля.Вставить("ДатаПоступления");
КонецЕсли;
ПараметрыФормы.Вставить("НакладнаяПоЗаказам", Объект.ПоРаспоряжениям);
ПараметрыФормы.Вставить("АдресТовары", АдресТоварыНакладной());
ПараметрыФормы.Вставить("Накладная", Объект.Ссылка);
ПараметрыФормы.Вставить("ИспользоватьНакладныеПоНесколькимЗаказам", Истина);
ПараметрыФормы.Вставить("ИспользуютсяЗаказы", ДоступенВыборПоРаспоряжению(Объект));
ПараметрыФормы.Вставить("ДополнительныеПоля", ДополнительныеПоля);
ОткрытьФорму("ОбщаяФорма.ПодборТоваровИзЗаказа",
ПараметрыФормы, ЭтаФорма, УникальныйИдентификатор,,,,РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаСервере
Функция АдресТоварыНакладной()
Таблица = Объект.Товары.Выгрузить();
Таблица.Колонки.Распоряжение.Имя = "РаспоряжениеИсходный";
Таблица.Колонки.Добавить("Распоряжение", Новый ОписаниеТипов("ДокументСсылка.ЗаказМатериаловВПроизводство,
|ДокументСсылка.ДвижениеПродукцииИМатериалов"));
Таблица.Колонки.Добавить("ДатаОтгрузки", Новый ОписаниеТипов("Дата"));
Таблица.Колонки.Добавить("ДатаПоступления", Новый ОписаниеТипов("Дата"));
Для Каждого Строка Из Таблица Цикл
Строка.Распоряжение = ?(ЗначениеЗаполнено(Строка.РаспоряжениеИсходный), Строка.РаспоряжениеИсходный, Объект.Ссылка);
КонецЦикла;
Таблица.ЗаполнитьЗначения(ТекущаяДатаСеанса(), "ДатаОтгрузки");
Таблица.ЗаполнитьЗначения(ТекущаяДатаСеанса(), "ДатаПоступления");
Возврат ПоместитьВоВременноеХранилище(Таблица);
КонецФункции
&НаСервере
Процедура ОбработкаВыбораПодборНаСервере(ВыбранноеЗначение)
ТаблицаТоваров = ПолучитьИзВременногоХранилища(ВыбранноеЗначение.АдресТоваровВХранилище);
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
Для каждого СтрокаТовара Из ТаблицаТоваров Цикл
ТекущаяСтрока = Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(ТекущаяСтрока, СтрокаТовара, "Номенклатура, Характеристика, ХарактеристикиИспользуются, Упаковка, КоличествоУпаковок, Серия");
ОбработатьДобавленнуюПрограммноСтроку(ТекущаяСтрока, КэшированныеЗначения);
КонецЦикла;
ПослеИзмененияСтрокПрограммноНаСервере();
КонецПроцедуры
&НаСервере
Процедура ОбработкаВыбораНоменклатурыНаСервере(ВыбранноеЗначение)
Если ТипЗнч(ВыбранноеЗначение) = Тип("Массив") Тогда
СписокТоваров = ВыбранноеЗначение;
Иначе
СписокТоваров = Новый Массив;
СписокТоваров.Добавить(ВыбранноеЗначение);
КонецЕсли;
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
Для каждого СтрокаТовара Из СписокТоваров Цикл
ТекущаяСтрока = Объект.Товары.Добавить();
ТекущаяСтрока.Номенклатура = СтрокаТовара;
ОбработатьДобавленнуюПрограммноСтроку(ТекущаяСтрока, КэшированныеЗначения);
КонецЦикла;
ПослеИзмененияСтрокПрограммноНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура РазбитьСтрокуЗавершение(НоваяСтрока, ДополнительныеПараметры) Экспорт
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
Если НоваяСтрока <> Неопределено Тогда
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(ЭтотОбъект, СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(НоваяСтрока, СтруктураДействий, КэшированныеЗначения);
КонецЕсли;
ОбновитьИнформациюОбОтклоненииОтРаспоряжений(
Объект.Товары,
НадписьРасхождение,
Элементы.КартинкаРасхождение1,
Элементы.КартинкаРасхождение2);
КонецПроцедуры
&НаСервере
Процедура ОбработкаПодбораТоваровИзЗаказа(АдресВХранилище)
РезультатПодбора = ПолучитьИзВременногоХранилища(АдресВХранилище);
Таблица = РезультатПодбора.Товары;
ИменаПолей = "НомерСтроки";
СтруктураПоиска = Новый Структура(ИменаПолей);
Таблица.Сортировать(ИменаПолей + " Убыв");
ДеревоСтрок = Новый Массив();
Для Каждого СтрокаТаблицы Из Таблица Цикл
Если СтруктураПоиска.НомерСтроки <> СтрокаТаблицы.НомерСтроки Тогда
МассивСтрок = Новый Массив();
ДеревоСтрок.Добавить(МассивСтрок);
ЗаполнитьЗначенияСвойств(СтруктураПоиска, СтрокаТаблицы);
КонецЕсли;
МассивСтрок.Добавить(СтрокаТаблицы);
КонецЦикла;
ПоляСвязиСЗаказом = Новый Структура("КодСтроки, Распоряжение", 0, Неопределено);
НакладныеСервер.ЗаполнитьТоварыПодобраннымиИзЗаказа(ДеревоСтрок, ИменаПолей, Объект.Товары, ПоляСвязиСЗаказом);
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(ЭтотОбъект, СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиКлиентСерверЛокализация.ДополнитьСтруктуруДействийПриИзмененииЭлемента(
ЭтотОбъект, "Номенклатура", СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий, Неопределено);
ЗаполнитьСтатусыСерий = Истина;
ПродажиСерверЛокализация.ПеренестиШтрихкодыУпаковок(ЭтотОбъект, РезультатПодбора.ШтрихкодыУпаковок);
ПослеИзмененияСтрокПрограммноНаСервере(Истина, ЗаполнитьСтатусыСерий);
КонецПроцедуры
#КонецОбласти
#Область РаботаСБуферомОбмена
&НаСервере
Процедура СкопироватьСтрокиНаСервере()
РаботаСТабличнымиЧастями.СкопироватьСтрокиВБуферОбмена(Объект.Товары, Элементы.Товары.ВыделенныеСтроки);
КонецПроцедуры
&НаСервере
Процедура ПолучитьСтрокиИзБуфераОбмена()
ПараметрыОтбора = Новый Соответствие;
ПараметрыОтбора.Вставить("Номенклатура.ТипНоменклатуры", НоменклатураКлиентСервер.ОтборПоТоваруМногооборотнойТаре(Ложь));
Колонки = "Номенклатура,Характеристика,Упаковка,КоличествоУпаковок,ГруппаПродукции";
ТаблицаТоваров = РаботаСТабличнымиЧастями.СтрокиИзБуфераОбмена(ПараметрыОтбора, Колонки);
Если Не ЗначениеЗаполнено(ТаблицаТоваров) Тогда
Возврат;
КонецЕсли;
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
Для каждого СтрокаТовара Из ТаблицаТоваров Цикл
ТекущаяСтрока = Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(ТекущаяСтрока, СтрокаТовара);
ОбработатьДобавленнуюПрограммноСтроку(ТекущаяСтрока, КэшированныеЗначения);
КонецЦикла;
ПослеИзмененияСтрокПрограммноНаСервере();
КонецПроцедуры
&НаСервере
Процедура УстановитьДоступностьКомандБуфераОбмена()
МассивЭлементов = Новый Массив();
МассивЭлементов.Добавить("ТоварыВставитьСтроки");
МассивЭлементов.Добавить("ТоварыКонтекстноеМенюВставитьСтроки");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, МассивЭлементов, "Доступность",
РаботаСТабличнымиЧастями.ЕстьСтрокиВБуфереОбмена());
КонецПроцедуры
&НаКлиенте
Процедура УстановитьДоступностьКомандБуфераОбменаНаКлиенте()
МассивЭлементов = Новый Массив();
МассивЭлементов.Добавить("ТоварыВставитьСтроки");
МассивЭлементов.Добавить("ТоварыКонтекстноеМенюВставитьСтроки");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, МассивЭлементов, "Доступность", Истина);
КонецПроцедуры
#КонецОбласти
#Область ШтрихкодыИТорговоеОборудование
&НаКлиенте
Процедура ПоискПоШтрихкодуЗавершение(ДанныхШтрихкода, ДополнительныеПараметры) Экспорт
ОбработатьШтрихкоды(ДанныхШтрихкода);
КонецПроцедуры
&НаКлиенте
Процедура ОбработатьШтрихкоды(ДанныеШтрихкодов)
ИзменятьКоличество = Не Объект.ПоРаспоряжениям;
СтруктураДействийСДобавленнымиСтроками = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииНоменклатуры(ЭтаФорма, Неопределено, СтруктураДействийСДобавленнымиСтроками);
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(ЭтотОбъект, СтруктураДействийСДобавленнымиСтроками);
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействийСИзмененнымиСтроками = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(ЭтотОбъект, СтруктураДействийСИзмененнымиСтроками);
СтруктураДействий = ШтрихкодированиеНоменклатурыКлиент.ПараметрыОбработкиШтрихкодов();
СтруктураДействий.Штрихкоды = ДанныеШтрихкодов;
СтруктураДействий.СтруктураДействийСДобавленнымиСтроками = СтруктураДействийСДобавленнымиСтроками;
СтруктураДействий.СтруктураДействийСИзмененнымиСтроками = СтруктураДействийСИзмененнымиСтроками;
СтруктураДействий.ПараметрыУказанияСерий = ПараметрыУказанияСерий;
СтруктураДействий.ИзменятьКоличество = ИзменятьКоличество;
СтруктураДействий.ТолькоТовары = Истина;
ОбработатьШтрихкодыСервер(СтруктураДействий,КэшированныеЗначения);
ШтрихкодированиеНоменклатурыКлиент.ОбработатьНеизвестныеШтрихкоды(СтруктураДействий,КэшированныеЗначения,ЭтаФорма);
Если ШтрихкодированиеНоменклатурыКлиент.НужноОткрытьФормуУказанияСерийПослеОбработкиШтрихкодов(СтруктураДействий) Тогда
ТекущиеДанныеИдентификатор = СтруктураДействий.МассивСтрокССериями[0];
ПодключитьОбработчикОжидания("ОткрытьПодборСерийПриСканированииШтрихкодаНоменклатуры",0.1,Истина);
КонецЕсли;
Если СтруктураДействий.ТекущаяСтрока <> Неопределено Тогда
Элементы.Товары.ТекущаяСтрока = СтруктураДействий.ТекущаяСтрока;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбработатьШтрихкодыСервер(СтруктураПараметровДействия,КэшированныеЗначения)
ШтрихкодированиеНоменклатурыСервер.ОбработатьШтрихкоды(ЭтаФорма, Объект,СтруктураПараметровДействия,КэшированныеЗначения);
СобытияФорм.ПриИзмененииЭлемента(ЭтотОбъект, "Товары");
КонецПроцедуры
#КонецОбласти
#Область Серии
&НаСервере
Функция ЕстьЗаполненныеСерииПоFEFO()
Возврат НоменклатураСервер.ЕстьСтрокиСЗаполненнымиПоFEFOСериями(Объект.Товары);
КонецФункции
&НаКлиенте
Процедура ЗаполнитьСерииПоFEFOЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если НЕ Результат Тогда
Возврат;
КонецЕсли;
Если Не ЗаполнитьСерииПоFEFOСервер() Тогда
НоменклатураКлиент.ПредупредитьОбОтсутствииСтрокЗаполняемыхПоFEFO();
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ЗаполнитьСерииПоFEFOСервер()
Если НоменклатураСервер.ЕстьСтрокиСЗаполняемымиПоFEFOСериями(Объект.Товары) Тогда
НоменклатураСервер.ЗаполнитьСерииПоFEFO(Объект,ПараметрыУказанияСерий);
СобытияФорм.ПриИзмененииЭлемента(ЭтотОбъект, "Товары");
Возврат Истина;
Иначе
Возврат Ложь;
КонецЕсли;
КонецФункции
&НаКлиенте
Процедура ОткрытьПодборСерийПриСканированииШтрихкодаНоменклатуры()
Если ТекущиеДанныеИдентификатор = Неопределено Тогда
Возврат;
КонецЕсли;
ТекущиеДанные = Объект.Товары.НайтиПоИдентификатору(ТекущиеДанныеИдентификатор);
ОткрытьПодборСерий(,ТекущиеДанные);
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьЭлементовСерий()
Элементы.ТоварыСтатусУказанияСерий.Видимость = ПараметрыУказанияСерий.ИспользоватьСерииНоменклатуры;
Элементы.ТоварыУказатьСерии.Видимость = ПараметрыУказанияСерий.ИспользоватьСерииНоменклатуры;
Элементы.ТоварыЗаполнитьСерииПоFEFO.Видимость = ПараметрыУказанияСерий.ИспользоватьСерииНоменклатуры;
Элементы.ТоварыСерия.Видимость = ПараметрыУказанияСерий.ИспользоватьСерииНоменклатуры;
КонецПроцедуры
&НаСервере
Процедура ОбработатьУказаниеСерийСервер(ПараметрыФормыУказанияСерий)
НоменклатураСервер.ОбработатьУказаниеСерий(Объект,ПараметрыУказанияСерий,ПараметрыФормыУказанияСерий);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСтатусыУказанияСерийПриОкончанииРедактированияСтрокиТЧ(ТекущаяСтрокаИдентификатор, КэшированныеЗначения)
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерийПриОкончанииРедактированияСтрокиТЧ(Объект,
ПараметрыУказанияСерий, ТекущаяСтрокаИдентификатор, КэшированныеЗначения);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСтатусыУказанияСерийСервер(ОбновитьПараметрыУказанияСерий = Ложь)
Если ОбновитьПараметрыУказанияСерий Тогда
ПараметрыУказанияСерий = Новый ФиксированнаяСтруктура(НоменклатураСервер.ПараметрыУказанияСерий(Объект, Документы.ДвижениеПродукцииИМатериалов));
УстановитьВидимостьЭлементовСерий();
КонецЕсли;
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект,ПараметрыУказанияСерий);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьПодборСерий(Текст = "", ТекущиеДанные = Неопределено)
Если НоменклатураКлиент.ДляУказанияСерийНуженСерверныйВызов(ЭтаФорма,ПараметрыУказанияСерий,Текст, ТекущиеДанные)Тогда
Если ТекущиеДанные = Неопределено Тогда
ТекущиеДанныеИдентификатор = Элементы.Товары.ТекущиеДанные.ПолучитьИдентификатор();
Иначе
ТекущиеДанныеИдентификатор = ТекущиеДанные.ПолучитьИдентификатор();
КонецЕсли;
ПараметрыФормыУказанияСерий = ПараметрыФормыУказанияСерий(ТекущиеДанныеИдентификатор);
ОписаниеОповещения = Новый ОписаниеОповещения("ОткрытьПодборСерийЗавершение",
ЭтотОбъект,
Новый Структура("ПараметрыФормыУказанияСерий", ПараметрыФормыУказанияСерий));
ОткрытьФорму(ПараметрыФормыУказанияСерий.ИмяФормы,
ПараметрыФормыУказанияСерий,ЭтаФорма,,,,
ОписаниеОповещения,
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ПараметрыФормыУказанияСерий(ТекущиеДанныеИдентификатор)
Возврат НоменклатураСервер.ПараметрыФормыУказанияСерий(Объект, ПараметрыУказанияСерий, ТекущиеДанныеИдентификатор, ЭтаФорма);
КонецФункции
&НаКлиенте
Процедура ОткрытьПодборСерийЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат <> Неопределено Тогда
ОбработатьУказаниеСерийСервер(ДополнительныеПараметры.ПараметрыФормыУказанияСерий);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПоРаспоряжениямПриИзмененииЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
Если РезультатВопроса = КодВозвратаДиалога.Нет Тогда
Объект.ПоРаспоряжениям = Не Объект.ПоРаспоряжениям;
Возврат;
КонецЕсли;
ПоРаспоряжениямПриИзмененииНаСервере();
Если Не Объект.ПоРаспоряжениям
И Объект.Товары.Количество() > 0 Тогда
ОповеститьОбОтвязкеСтрокОтЗаказов();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПоРаспоряжениямПриИзмененииНаСервере()
ИзмененныеРеквизиты = "ПоРаспоряжениям";
Если Объект.ПоРаспоряжениям Тогда
Если Объект.Товары.Количество() > 0 Тогда
ПривязатьСтрокиКРаспоряжениям();
ПослеИзмененияСтрокПрограммноНаСервере(Истина);
КонецЕсли;
Иначе
ОтвязатьДокументОтРаспоряжений();
КонецЕсли;
СтруктураДействий = Новый Структура;
УстановитьПризнакЦеховаяКладовая("Отправитель", СтруктураДействий);
УстановитьПризнакЦеховаяКладовая("Получатель", СтруктураДействий);
Если ЗначениеЗаполнено(СтруктураДействий) Тогда
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект["Товары"], СтруктураДействий, КэшированныеЗначения);
КонецЕсли;
НастроитьЗависимыеЭлементыФормыНаСервере(ИзмененныеРеквизиты);
ОграничитьТипЗначения("Отправитель");
ОграничитьТипЗначения("Получатель");
КонецПроцедуры
#КонецОбласти
#Область Распоряжения
&НаСервере
Процедура ОтвязатьОтРаспоряженияВыбранныеСтроки()
Перем КэшированныеЗначения;
КоллекцияСтрок = Элементы.Товары.ВыделенныеСтроки;
Для Каждого ТекСтрока Из КоллекцияСтрок Цикл
СтрокаТаблицы = Объект.Товары.НайтиПоИдентификатору(ТекСтрока);
НоменклатураКлиентСервер.ОбновитьКешированныеЗначенияДляУчетаСерий(СтрокаТаблицы,КэшированныеЗначения,ПараметрыУказанияСерий);
СтрокаТаблицы.КодСтроки = 0;
СтрокаТаблицы.Назначение = Справочники.Назначения.ПустаяСсылка();
СтрокаТаблицы.НазначениеОтправителя = Справочники.Назначения.ПустаяСсылка();
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаМатериаловВКладовую Тогда
СтрокаТаблицы.РасхождениеЗаказ = 1;
КонецЕсли;
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерийПриОкончанииРедактированияСтрокиТЧ(Объект,ПараметрыУказанияСерий,ТекСтрока,КэшированныеЗначения);
КонецЦикла;
ОбновитьИнформациюОбОтклоненииОтРаспоряженийСервер();
КонецПроцедуры
&НаСервере
Процедура ОтвязатьДокументОтРаспоряжений()
СписокРаспоряжений.Очистить();
Документы.ДвижениеПродукцииИМатериалов.ОтвязатьОтРаспоряжений(Объект);
ПослеИзмененияСтрокПрограммноНаСервере();
КонецПроцедуры
&НаСервере
Процедура ПривязатьСтрокиКРаспоряжениям()
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаМатериаловВПроизводство
Или Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаМатериаловВКладовую Тогда
ТекстЗапроса =
"ВЫБРАТЬ
| Товары.Номенклатура КАК Номенклатура,
| Товары.Характеристика КАК Характеристика
|ПОМЕСТИТЬ Товары
|ИЗ
| &Товары КАК Товары
|ГДЕ
| Товары.Распоряжение В(&ПустыеЗначенияЗаказов)
|;
|
|
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ТаблицаЗаказы.Распоряжение КАК Распоряжение,
| ТаблицаЗаказы.Номенклатура КАК Номенклатура,
| ТаблицаЗаказы.Характеристика КАК Характеристика,
| ТаблицаЗаказы.Назначение КАК Назначение,
| ТаблицаЗаказы.НазначениеОтправителя КАК НазначениеОтправителя,
| ТаблицаЗаказы.КодСтроки КАК КодСтроки,
| СУММА(ТаблицаЗаказы.КОформлению) КАК КОформлениюОстаток
|ИЗ
| (ВЫБРАТЬ
| Заказы.Распоряжение КАК Распоряжение,
| Заказы.Номенклатура КАК Номенклатура,
| Заказы.Характеристика КАК Характеристика,
| Заказы.Назначение КАК Назначение,
| Заказы.НазначениеОтправителя КАК НазначениеОтправителя,
| Заказы.КодСтроки КАК КодСтроки,
| Заказы.КОформлениюОстаток КАК КОформлению
| ИЗ
| РегистрНакопления.ЗаказыМатериаловВПроизводство.Остатки(
| ,
| Склад = &Отправитель
| И (Номенклатура, Характеристика) В
| (ВЫБРАТЬ
| Товары.Номенклатура КАК Номенклатура,
| Товары.Характеристика КАК Характеристика
| ИЗ
| Товары КАК Товары)
| И (Подразделение = &Получатель
| ИЛИ Получатель = &Получатель)) КАК Заказы
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказМатериаловВПроизводство КАК ЗаказМатериаловВПроизводство
| ПО Заказы.Распоряжение = ЗаказМатериаловВПроизводство.Ссылка
| ГДЕ
| Заказы.Распоряжение.Организация = &Организация
| И ЕСТЬNULL(ЗаказМатериаловВПроизводство.УправлениеПроизводством2_2, ИСТИНА)
| И &ДопУсловияЗапросОстатки
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ЗаказыДвижения.Распоряжение,
| ЗаказыДвижения.Номенклатура,
| ЗаказыДвижения.Характеристика,
| ЗаказыДвижения.Назначение,
| ЗаказыДвижения.НазначениеОтправителя,
| ЗаказыДвижения.КодСтроки,
| ВЫБОР
| КОГДА ЗаказыДвижения.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
| ТОГДА -ЗаказыДвижения.КОформлению
| ИНАЧЕ ЗаказыДвижения.КОформлению
| КОНЕЦ
| ИЗ
| РегистрНакопления.ЗаказыМатериаловВПроизводство КАК ЗаказыДвижения
| ГДЕ
| ЗаказыДвижения.Регистратор = &Регистратор
| И ЗаказыДвижения.Распоряжение.Организация = &Организация
| И ЗаказыДвижения.Склад = &Отправитель
| И ЗаказыДвижения.Активность
| И (ЗаказыДвижения.Номенклатура, ЗаказыДвижения.Характеристика) В
| (ВЫБРАТЬ
| Товары.Номенклатура КАК Номенклатура,
| Товары.Характеристика КАК Характеристика
| ИЗ
| Товары КАК Товары)
| И (ЗаказыДвижения.Подразделение = &Получатель
| ИЛИ ЗаказыДвижения.Получатель = &Получатель)
| И &ДопУсловияЗапросДвижения
| ) КАК ТаблицаЗаказы
|
|СГРУППИРОВАТЬ ПО
| ТаблицаЗаказы.Номенклатура,
| ТаблицаЗаказы.Характеристика,
| ТаблицаЗаказы.Назначение,
| ТаблицаЗаказы.НазначениеОтправителя,
| ТаблицаЗаказы.КодСтроки,
| ТаблицаЗаказы.Распоряжение
|
|ИМЕЮЩИЕ
| СУММА(ТаблицаЗаказы.КОформлению) > 0
|";
Иначе
Возврат;
КонецЕсли;
ДопУсловияЗапросОстатки = "ИСТИНА";
ДопУсловияЗапросДвижения = "ИСТИНА";
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаМатериаловВКладовую Тогда
ДопУсловияЗапросОстатки = "ТИПЗНАЧЕНИЯ(Заказы.Распоряжение) = ТИП(Документ.ЗаказМатериаловВПроизводство)";
ДопУсловияЗапросДвижения = "ТИПЗНАЧЕНИЯ(ЗаказыДвижения.Распоряжение) = ТИП(Документ.ЗаказМатериаловВПроизводство)";
КонецЕсли;
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ДопУсловияЗапросОстатки", ДопУсловияЗапросОстатки);
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ДопУсловияЗапросДвижения", ДопУсловияЗапросДвижения);
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("Заказ", Объект.Распоряжение);
Запрос.УстановитьПараметр("Организация", Объект.Организация);
Запрос.УстановитьПараметр("Отправитель", Объект.Отправитель);
Запрос.УстановитьПараметр("Получатель", Объект.Получатель);
Запрос.УстановитьПараметр("Регистратор", Объект.Ссылка);
Запрос.УстановитьПараметр("ПустыеЗначенияЗаказов", Документы.ДвижениеПродукцииИМатериалов.ПустыеЗначенияЗаказов());
Запрос.УстановитьПараметр("Товары", Объект.Товары.Выгрузить(,"Номенклатура,Характеристика,Распоряжение"));
РезультатЗапроса = Запрос.ВыполнитьПакет();
Если РезультатЗапроса[1].Пустой() Тогда
Возврат;
КонецЕсли;
ОстаткиРаспоряжений = РезультатЗапроса[1].Выгрузить();
ОстаткиРаспоряжений.Индексы.Добавить("Номенклатура, Характеристика");
ТаблицаТовары = Объект.Товары.Выгрузить(Новый Массив);
Для Каждого ТекСтрока Из Объект.Товары Цикл
Если ТекСтрока.Распоряжение = Неопределено Тогда
КоличествоТоваров = ТекСтрока.Количество;
СтруктураПоиска = Новый Структура();
СтруктураПоиска.Вставить("Номенклатура", ТекСтрока.Номенклатура);
СтруктураПоиска.Вставить("Характеристика", ТекСтрока.Характеристика);
НайденныеСтроки = ОстаткиРаспоряжений.НайтиСтроки(СтруктураПоиска);
Для Каждого ТекОстаток Из НайденныеСтроки Цикл
Если ТекОстаток.КОформлениюОстаток = 0 Тогда
Продолжить;
КонецЕсли;
КОформлению = Мин(КоличествоТоваров, ТекОстаток.КОформлениюОстаток);
НоваяСтрока = ТаблицаТовары.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, ТекСтрока);
ЗаполнитьЗначенияСвойств(НоваяСтрока, ТекОстаток, "КодСтроки,Распоряжение,Назначение,НазначениеОтправителя");
НоваяСтрока.Количество = КОформлению;
КоличествоТоваров = КоличествоТоваров - КОформлению;
ТекОстаток.КОформлениюОстаток = ТекОстаток.КОформлениюОстаток - КОформлению;
Если КоличествоТоваров = 0 Тогда
Прервать;
КонецЕсли;
КонецЦикла;
Если Не КоличествоТоваров = 0 Тогда
НоваяСтрока = ТаблицаТовары.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, ТекСтрока);
НоваяСтрока.Количество = КоличествоТоваров;
КонецЕсли;
Иначе
ЗаполнитьЗначенияСвойств(ТаблицаТовары.Добавить(), ТекСтрока);
КонецЕсли;
КонецЦикла;
ПараметрыПересчета = Новый Структура;
ПараметрыПересчета.Вставить("Номенклатура");
ПараметрыПересчета.Вставить("Упаковка");
ПараметрыПересчета.Вставить("Количество", "КоличествоУпаковок");
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьКоличествоУпаковок", ПараметрыПересчета);
ПакетнаяОбработкаТабличнойЧастиКлиентСерверЛокализация.ДополнитьСтруктуруДействийПриИзмененииЭлемента(
ЭтотОбъект, "Номенклатура", СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(
ТаблицаТовары,
СтруктураДействий,
Неопределено);
Объект.Товары.Загрузить(ТаблицаТовары);
КонецПроцедуры
&НаСервере
Процедура ОбновитьИнформациюПоЗаказам()
Если НЕ ДоступенВыборПоРаспоряжению(Объект) Тогда
Возврат;
КонецЕсли;
ПараметрыОбновления = ЗаказыСервер.ПараметрыОбновленияИнформацииПоЗаказамВФорме();
ПараметрыОбновления.ИмяРеквизитаСписокЗаказов = "СписокРаспоряжений";
ПараметрыОбновления.ПутьЗаказаВШапке = "Объект.Распоряжение";
ПараметрыОбновления.ИмяНадписиЗаголовка = "НадписьРаспоряжения";
ПараметрыОбновления.ИмяГруппыКолонокВТабличнойЧасти = "ТоварыГруппаРаспоряжение";
ПараметрыОбновления.ИмяЗаказаВТабличнойЧасти = "Распоряжение";
ПараметрыОбновления.ИспользоватьЗаказыВТабличнойЧасти = Истина;
ПараметрыОбновления.НадписьВсегоЗаказов = НСтр("ru = 'Всего распоряжений'");
ЗаказыСервер.ОбновитьИнформациюПоЗаказамВФорме(ЭтаФорма, Объект.Товары, ПараметрыОбновления);
Если Не Объект.ПоРаспоряжениям
И Не СписокРаспоряжений.Количество() = 0 Тогда
Объект.ПоРаспоряжениям = Истина;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СообщитьОРезультатахЗаполнения()
Если РезультатыЗаполнения <> Неопределено Тогда
Если РезультатыЗаполнения.ЕстьНесобранные Тогда
ПоказатьОповещениеПользователя(
НСтр("ru = 'Количество перезаполнено'"),,
НСтр("ru='В строках перезаполнено количество с учетом собирающихся на складе товаров.'"),
БиблиотекаКартинок.Информация32);
Иначе
ПоказатьОповещениеПользователя(
НСтр("ru = 'Количество перезаполнено'"),,
НСтр("ru='В строках перезаполнено количество.'"),
БиблиотекаКартинок.Информация32);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОтклоненияОтРаспоряжений
&НаСервере
Процедура ОбновитьИнформациюОбОтклоненииОтРаспоряженийСервер()
Если НЕ ДоступенВыборПоРаспоряжению(Объект) Тогда
Возврат;
КонецЕсли;
Если Объект.Товары.Количество() = 0
ИЛИ НЕ Объект.ПоРаспоряжениям Тогда
Элементы.КартинкаРасхождение1.Картинка = Новый Картинка();
Элементы.КартинкаРасхождение2.Картинка = Новый Картинка();
НадписьРасхождение = "";
Иначе
ОбновитьИнформациюОбОтклоненииОтРаспоряжений(
Объект.Товары,
НадписьРасхождение,
Элементы.КартинкаРасхождение1,
Элементы.КартинкаРасхождение2);
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ОбновитьИнформациюОбОтклоненииОтРаспоряжений(Товары, НадписьРасхождение, КартинкаРасхождениеЗаказ, КартинкаРасхождениеЗаказы)
КоличествоРасхождений = Товары.Итог("РасхождениеЗаказ");
Если КоличествоРасхождений > 0 Тогда
КартинкаРасхождениеЗаказ.Картинка = БиблиотекаКартинок.ПревышениеЗаказа;
КартинкаРасхождениеЗаказы.Картинка = БиблиотекаКартинок.ПревышениеЗаказа;
НадписьРасхождение = СтрЗаменить(НСтр("ru='Строк сверх распоряжения: %КоличествоРасхождений%'"), "%КоличествоРасхождений%", КоличествоРасхождений);
Иначе
КартинкаРасхождениеЗаказ.Картинка = Новый Картинка();
КартинкаРасхождениеЗаказы.Картинка = Новый Картинка();
НадписьРасхождение = "";
КоличествоРасхождений = 0;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОповеститьОбОтвязкеСтрокОтЗаказов()
ТекстОповещения = НСтр("ru='Строки в списке ""Продукция и материалы"" отвязаны от строк распоряжений.'");
ПоказатьОповещениеПользователя(НСтр("ru = 'Обработка списка ""Продукция и материалы""'"),, ТекстОповещения);
КонецПроцедуры
&НаКлиенте
Процедура ОповеститьОбОкончанииОтвязкиСтрок(КоличествоОтработанныхСтрок, СтрокиОтвязаны = Истина)
Если СтрокиОтвязаны Тогда
ТекстОповещения = НСтр("ru='В документе от распоряжений отвязано строк (%%Количество%%).'");
ТекстОповещения = СтрЗаменить(ТекстОповещения, "%%Количество%%", КоличествоОтработанныхСтрок);
ПоказатьОповещениеПользователя(
НСтр("ru = 'Строки отвязаны'"),
,
ТекстОповещения,
БиблиотекаКартинок.Информация32);
Иначе
ПоказатьОповещениеПользователя(
НСтр("ru = 'Строки не отвязаны'"),
,
НСтр("ru='Ни одна строка не была отвязана.'"),
БиблиотекаКартинок.Информация32);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбновитьОтклоненияОтРаспоряжения()
Для Каждого ТекущаяСтрока Из Объект.Товары Цикл
ОбновитьОтклоненияОтРаспоряженияВСтроке(ТекущаяСтрока, Объект.ПоРаспоряжениям, Объект.ХозяйственнаяОперация);
КонецЦикла;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ОбновитьОтклоненияОтРаспоряженияВСтроке(ТекущаяСтрока, ПоРаспоряжениям, ХозОперация)
Если ХозОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПередачаМатериаловВКладовую")
И ПоРаспоряжениям
И ТекущаяСтрока.КодСтроки = 0 Тогда
ТекущаяСтрока.РасхождениеЗаказ = 1;
Иначе
ТекущаяСтрока.РасхождениеЗаказ = 0;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОпределитьНачатаОтгрузка()
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаМатериаловВПроизводство
Или Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаМатериаловВКладовую Тогда
НачатаОтгрузка = НакладныеСервер.ЕстьРасходныйОрдерДляЗаказовНаОтгрузку(Объект.Ссылка);
Иначе
НачатаОтгрузка = Ложь;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ВидыЗапасов
&НаСервере
Функция ПоместитьТоварыИВидыЗапасовВХранилище()
ПараметрыРедактированияВидовЗапасов = ЗапасыСервер.ПараметрыРедактированияВидовЗапасов();
ПараметрыРедактированияВидовЗапасов.Склад = Объект.Отправитель;
Если Документы.ДвижениеПродукцииИМатериалов.ИспользуютсяПодакцизныеТовары(Объект) Тогда
ПараметрыРедактированияВидовЗапасов.ИспользоватьПодакцизныеТовары = Истина;
КонецЕсли;
Возврат ЗапасыСервер.ПоместитьТоварыИВидыЗапасовВХранилище(ЭтотОбъект, ПараметрыРедактированияВидовЗапасов);
КонецФункции
&НаСервере
Процедура ПолучитьВидыЗапасовИзХранилища(ВыбранноеЗначение)
ЗапасыСервер.ОбработатьВводВидовЗапасовВручную(ВыбранноеЗначение, ЭтаФорма);
КонецПроцедуры
#КонецОбласти
#Область Тара
&НаКлиенте
Процедура ПередЗаписьюПредложитьПодобратьМногооборотнуюТаруЗавершение(Результат, ДополнительныеПараметры) Экспорт
ОбщегоНазначенияУТКлиент.ЗаписатьОбъектПриНеобходимости(ЭтотОбъект, ДополнительныеПараметры.ПараметрыЗаписи,,Истина);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьМногооборотнуюТаруИзХранилищаСервер(АдресТарыВХранилище)
СтруктураДействийИзмененныеСтроки = Новый Структура;
СтруктураДействийИзмененныеСтроки.Вставить("ПересчитатьКоличествоУпаковок");
МногооборотнаяТараСервер.ЗаполнитьМногооборотнуюТаруИзХранилища(
Объект,
АдресТарыВХранилище,
"Товары",
"Номенклатура,Характеристика",
СтруктураДействийИзмененныеСтроки,
СтруктураДействийИзмененныеСтроки);
ПослеИзмененияСтрокПрограммноНаСервере(Истина, Истина);
КонецПроцедуры
#КонецОбласти
#Область Прочее
&НаСервере
Функция ЕстьСтрокиПривязанныеКЗаказу()
Для каждого Строка Из Объект.Товары Цикл
Если Строка.КодСтроки <> 0 Тогда
Возврат Истина;
КонецЕсли;
КонецЦикла;
Возврат Ложь;
КонецФункции
&НаСервере
Процедура ПриЧтенииСозданииНаСервере()
ИспользоватьНесколькоСкладов = ПолучитьФункциональнуюОпцию("ИспользоватьНесколькоСкладов");
ХозОперацияДоИзменения = Объект.ХозяйственнаяОперация;
ОтправительДоИзменения = Объект.Отправитель;
ВалютаДокумента = Объект.Валюта;
ОрганизацияДоИзменения = Объект.Организация;
ОпределитьНаличиеОрдернойСхемы();
УстановитьИспользованиеПлановойСтоимости();
ЗаполнитьСлужебныеРеквизитыТабличнойЧасти();
ПараметрыУказанияСерий = Новый ФиксированнаяСтруктура(НоменклатураСервер.ПараметрыУказанияСерий(Объект, Документы.ДвижениеПродукцииИМатериалов));
УстановитьВидимостьЭлементовСерий();
ОпределитьНачатаОтгрузка();
НастроитьКомандуПодобратьПоЗаказамОрдерам();
ОбновитьИнформациюПоЗаказам();
АктуализироватьНалогообложениеНДС(Ложь);
УстановитьПризнакЦеховаяКладовая("Отправитель");
УстановитьПризнакЦеховаяКладовая("Получатель");
НастроитьЗависимыеЭлементыФормыНаСервере();
ОграничитьТипЗначения("Отправитель");
ОграничитьТипЗначения("Получатель");
ОбновитьИнформациюОбОтклоненииОтРаспоряжений(
Объект.Товары,
НадписьРасхождение,
Элементы.КартинкаРасхождение1,
Элементы.КартинкаРасхождение2);
РаботаСТабличнымиЧастями.ИнициализироватьКэшСтрок(Элементы.Товары);
КонецПроцедуры
&НаСервере
Процедура УстановитьУсловноеОформление()
УсловноеОформление.Элементы.Очистить();
#Область СтандартноеОформление
НоменклатураСервер.УстановитьУсловноеОформлениеЕдиницИзмерения(ЭтаФорма);
НоменклатураСервер.УстановитьУсловноеОформлениеХарактеристикНоменклатуры(ЭтаФорма);
НоменклатураСервер.УстановитьУсловноеОформлениеНазначенияНоменклатуры(ЭтаФорма);
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаПродукцииИзПроизводства
Или Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратМатериаловИзПроизводства Тогда
НоменклатураСервер.УстановитьУсловноеОформлениеСерийНоменклатуры(ЭтаФорма, Ложь);
Иначе
НоменклатураСервер.УстановитьУсловноеОформлениеСерийНоменклатуры(ЭтаФорма, "СерииПриПланированииОтгрузкиУказываютсяВТЧТовары");
КонецЕсли;
НоменклатураСервер.УстановитьУсловноеОформлениеСтатусовУказанияСерий(ЭтаФорма, Ложь);
#КонецОбласти
#Область ТоварыРаспоряжениеЦветТекста
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыРаспоряжение.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Распоряжение");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ГиперссылкаЦвет);
#КонецОбласти
#Область ТоварыРаспоряжениеТолькоПросмотр
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыРаспоряжение.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.КодСтроки");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Распоряжение");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
#КонецОбласти
#Область ТоварыРаспоряжениеТекстСверхЗаказ
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыРаспоряжение.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ХозяйственнаяОперация");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ХозяйственныеОперации.ПередачаМатериаловВКладовую;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.КодСтроки");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Распоряжение");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Распоряжение");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ПоясняющийОшибкуТекст);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = 'Сверх заказа, заказ не выбран'"));
#КонецОбласти
#Область ТоварыРаспоряжениеТекстНеЗаполнено
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыРаспоряжение.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ХозяйственнаяОперация");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ХозяйственныеОперации.ПередачаМатериаловВКладовую;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.КодСтроки");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Распоряжение");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ПоясняющийОшибкуТекст);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = 'Распоряжение не заполнено'"));
#КонецОбласти
#Область ТоварыРаспоряжениеВидимость
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыРаспоряжение.Имя);
ГруппаОтбора = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ОтборЭлемента = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Распоряжение");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
ОтборЭлемента = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ПоРаспоряжениям");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
#КонецОбласти
#Область ТоварыНазначениеТолькоПросмотр
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыНазначение.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.РасхождениеЗаказ");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = 0;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ПоРаспоряжениям");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Назначение");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<без назначения>'"));
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.НезаполненноеПолеТаблицы);
#КонецОбласти
#Область ТоварыНазначениеТолькоПросмотр
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыНазначение.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.КодСтроки");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно;
ОтборЭлемента.ПравоеЗначение = 0;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ПоРаспоряжениям");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
#КонецОбласти
#Область ПлановаяСтоимость
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЦена.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСумма.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ИспользоватьПлановуюСтоимость");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЦена.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСумма.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ПобочноеИзделие");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.НезаполненноеПолеТаблицы);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<Не требуется>'"));
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЦена.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ПобочноеИзделие");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Цена");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = 0;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСумма.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ПобочноеИзделие");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Сумма");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = 0;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Истина);
#КонецОбласти
КонецПроцедуры
&НаСервере
Процедура НастроитьЗависимыеЭлементыФормыНаСервере(СписокРеквизитов = "")
СтруктураИзмененныхРеквизитов = Новый Структура(СписокРеквизитов);
ПредставлениеПолей = Новый ФиксированнаяСтруктура(Документы.ДвижениеПродукцииИМатериалов.ПредставлениеПолей(Объект));
УстановитьВидимостьПриИзмененииРеквизитов(СтруктураИзмененныхРеквизитов);
УстановитьЗаголовкиПриИзмененииРеквизитов(СтруктураИзмененныхРеквизитов);
УстановитьПрочиеСвойстваПриИзмененииРеквизитов(СтруктураИзмененныхРеквизитов);
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьПриИзмененииРеквизитов(СтруктураИзмененныхРеквизитов)
Перем МассивВсехРеквизитов;
Перем МассивРеквизитовОперации;
ВсеРеквизиты = (СтруктураИзмененныхРеквизитов.Количество() = 0);
Если СтруктураИзмененныхРеквизитов.Свойство("ПоРаспоряжениям")
Или СтруктураИзмененныхРеквизитов.Свойство("ХозяйственнаяОперация")
Или ВсеРеквизиты Тогда
ДоступныСтрокиСверхЗаказа = (Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаМатериаловВКладовую);
Элементы.ТоварыОтвязатьОтЗаказа.Видимость = Объект.ПоРаспоряжениям И ДоступныСтрокиСверхЗаказа;
Элементы.ТоварыВставитьСтроки.Видимость = Не Объект.ПоРаспоряжениям Или ДоступныСтрокиСверхЗаказа;
Элементы.ТоварыКонтекстноеМенюВставитьСтроки.Видимость = Не Объект.ПоРаспоряжениям Или ДоступныСтрокиСверхЗаказа;
Элементы.ТоварыПоискПоШтрихкоду.Видимость = Не Объект.ПоРаспоряжениям Или ДоступныСтрокиСверхЗаказа;
Элементы.ТоварыПодобратьТовары.Видимость = Не Объект.ПоРаспоряжениям Или ДоступныСтрокиСверхЗаказа;
Элементы.ТоварыДополнитьМногооборотнойТарой.Видимость = Не Объект.ПоРаспоряжениям Или ДоступныСтрокиСверхЗаказа;
Элементы.ТоварыЗаполнитьСерииПоFEFO.Видимость = Не Объект.ПоРаспоряжениям Или ДоступныСтрокиСверхЗаказа;
Элементы.ТоварыИзменитьКачество.Видимость =
Не Объект.ПоРаспоряжениям
И (Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаПродукцииИзКладовой);
ОбщегоНазначенияУТ.НастроитьПодключаемоеОборудование(ЭтотОбъект);
Элементы.ТоварыЗагрузитьДанныеИзТСД.Видимость = Элементы.ТоварыЗагрузитьДанныеИзТСД.Видимость
И (Не Объект.ПоРаспоряжениям
Или ДоступныСтрокиСверхЗаказа);
Элементы.ТоварыНазначение.Видимость = ПредставлениеПолей.ТипПолучателя <> "Подразделение";
КонецЕсли;
Если СтруктураИзмененныхРеквизитов.Свойство("ПоРаспоряжениям") ИЛИ ВсеРеквизиты Тогда
Элементы.ТоварыКодСтроки.Видимость = Объект.ПоРаспоряжениям;
КонецЕсли;
Если СтруктураИзмененныхРеквизитов.Свойство("ХозяйственнаяОперация")
Или СтруктураИзмененныхРеквизитов.Свойство("ИспользоватьПлановуюСтоимость")
Или ВсеРеквизиты Тогда
Элементы.ВидЦены.Видимость =
ИспользоватьПлановуюСтоимость
И Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаПродукцииИзПроизводства;
Элементы.ГруппаЗаполнитьЦены.Видимость =
ИспользоватьПлановуюСтоимость
И Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаПродукцииИзПроизводства;
КонецЕсли;
Если СтруктураИзмененныхРеквизитов.Свойство("ХозяйственнаяОперация") ИЛИ ВсеРеквизиты Тогда
Если НЕ ИспользоватьНесколькоСкладов Тогда
Элементы.Отправитель.Видимость = (ПредставлениеПолей.ТипОтправителя = "Подразделение");
Элементы.Получатель.Видимость = (ПредставлениеПолей.ТипПолучателя = "Подразделение");
КонецЕсли;
Документы.ДвижениеПродукцииИМатериалов.ЗаполнитьИменаРеквизитовПоХозяйственнойОперации(
Объект.ХозяйственнаяОперация,
МассивВсехРеквизитов,
МассивРеквизитовОперации);
ДенежныеСредстваСервер.УстановитьВидимостьЭлементовПоМассиву(
Элементы,
МассивВсехРеквизитов,
МассивРеквизитовОперации);
Если НЕ ВсеРеквизиты Тогда
УстановитьВидимостьКомандВводаНаОсновании();
КонецЕсли;
ПоЭтапу = Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаПродукцииИзПроизводства
Или Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаМатериаловВПроизводство
Или Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратМатериаловИзПроизводства;
Элементы.ОкруглитьДоЦелойУпаковки.Видимость =
(Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаМатериаловВПроизводство
Или Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаМатериаловВКладовую);
Элементы.ТоварыЗаполнитьРаспоряжения.Видимость = ПоЭтапу
Или Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаМатериаловВКладовую;
МассивЭлементов = Новый Массив;
МассивЭлементов.Добавить("ТоварыДобавить");
МассивЭлементов.Добавить("ТоварыСкопировать");
МассивЭлементов.Добавить("ТоварыКонтекстноеМенюДобавить");
МассивЭлементов.Добавить("ТоварыКонтекстноеМенюСкопировать");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы,
МассивЭлементов, "Доступность", Не ПоЭтапу);
КонецЕсли;
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаМатериаловВКладовую Тогда
Элементы.ПоРаспоряжению.Видимость = Истина;
Элементы.ПоРаспоряжениям.Видимость = Истина;
Элементы.Распоряжение.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет;
Элементы.НадписьРаспоряжения.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет;
Иначе
Элементы.ПоРаспоряжению.Видимость = Ложь;
Элементы.ПоРаспоряжениям.Видимость = Ложь;
Элементы.Распоряжение.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Авто;
Элементы.НадписьРаспоряжения.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Авто;
КонецЕсли;
Если Не ЗначениеЗаполнено(Объект.Распоряжение) И СписокРаспоряжений.Количество() = 0 Тогда
Элементы.ЗакрытьЗаказ.Видимость = Ложь;
Элементы.ЗакрытьЗаказы.Видимость = Ложь;
Иначе
Элементы.ЗакрытьЗаказ.Видимость = Истина;
Элементы.ЗакрытьЗаказы.Видимость = Истина;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьЗаголовкиПриИзмененииРеквизитов(СтруктураИзмененныхРеквизитов)
ВсеРеквизиты = (СтруктураИзмененныхРеквизитов.Количество() = 0);
Если СтруктураИзмененныхРеквизитов.Свойство("ХозяйственнаяОперация")
ИЛИ СтруктураИзмененныхРеквизитов.Свойство("ПоРаспоряжениям")
ИЛИ ВсеРеквизиты Тогда
Элементы.Отправитель.Заголовок = ПредставлениеПолей.Отправитель;
Элементы.Получатель.Заголовок = ПредставлениеПолей.Получатель;
Элементы.Отправитель.Подсказка = ПредставлениеПолей.ОтправительПодсказка;
Элементы.Получатель.Подсказка = ПредставлениеПолей.ПолучательПодсказка;
КонецЕсли;
Если СтруктураИзмененныхРеквизитов.Свойство("ХозяйственнаяОперация") ИЛИ ВсеРеквизиты Тогда
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаПродукцииИзПроизводства
Или Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаПродукцииИзКладовой Тогда
НалогообложениеНДСЗаголовок = НСтр("ru = 'Выпуск под деятельность'");
ИначеЕсли Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаМатериаловВПроизводство
Или Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаМатериаловВКладовую Тогда
НалогообложениеНДСЗаголовок = НСтр("ru = 'Потребление для деятельности'");
ИначеЕсли Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПеремещениеПолуфабрикатов
Или Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПеремещениеПолуфабрикатовМеждуФилиалами Тогда
НалогообложениеНДСЗаголовок = НСтр("ru = 'Перемещение под деятельность'");
Иначе
НалогообложениеНДСЗаголовок = Элементы.НалогообложениеНДС.Заголовок;
КонецЕсли;
Элементы.НалогообложениеНДС.Заголовок = НалогообложениеНДСЗаголовок;
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаПродукцииИзПроизводства
Или Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаПродукцииИзКладовой Тогда
Элементы.ТоварыПодобратьТовары.Заголовок = НСтр("ru = 'Подобрать продукцию'");
ИначеЕсли Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратМатериаловИзПроизводства
Или Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратМатериаловИзКладовой Тогда
Элементы.ТоварыПодобратьТовары.Заголовок = НСтр("ru = 'Подобрать материалы'");
ИначеЕсли Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаМатериаловВПроизводство
Или Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаМатериаловВКладовую Тогда
Элементы.ТоварыПодобратьТовары.Заголовок = НСтр("ru = 'Подобрать материалы'");
ИначеЕсли Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПеремещениеПолуфабрикатов
ИЛИ Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПеремещениеПолуфабрикатовМеждуФилиалами Тогда
Элементы.ТоварыПодобратьТовары.Заголовок = НСтр("ru = 'Подобрать материалы'");
КонецЕсли;
Элементы.ГруппаТовары.Заголовок = ПредставлениеПолей.Товары;
Если ПредставлениеПолей.Свойство("Организация") Тогда
Элементы.Организация.Заголовок = ПредставлениеПолей.Организация;
КонецЕсли;
ОбновитьЗаголовокФормы();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьПрочиеСвойстваПриИзмененииРеквизитов(СтруктураИзмененныхРеквизитов)
ВсеРеквизиты = (СтруктураИзмененныхРеквизитов.Количество() = 0);
Если СтруктураИзмененныхРеквизитов.Свойство("ХозяйственнаяОперация")
ИЛИ СтруктураИзмененныхРеквизитов.Свойство("ПоРаспоряжениям")
ИЛИ ВсеРеквизиты Тогда
Если ПредставлениеПолей.ТипОтправителя = "Склад" ИЛИ ПредставлениеПолей.ТипОтправителя = "Кладовая" Тогда
Элементы.Отправитель.ОграничениеТипа = Новый ОписаниеТипов("СправочникСсылка.Склады");
Иначе
Элементы.Отправитель.ОграничениеТипа = Новый ОписаниеТипов("СправочникСсылка.СтруктураПредприятия");
КонецЕсли;
Если ПредставлениеПолей.ТипПолучателя = "Склад" ИЛИ ПредставлениеПолей.ТипПолучателя = "Кладовая" Тогда
Элементы.Получатель.ОграничениеТипа = Новый ОписаниеТипов("СправочникСсылка.Склады");
Иначе
Элементы.Получатель.ОграничениеТипа = Новый ОписаниеТипов("СправочникСсылка.СтруктураПредприятия");
КонецЕсли;
МассивПараметровВыбора = Новый Массив;
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаПродукцииИзПроизводства
Или Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаПродукцииИзКладовой Тогда
МассивПараметровВыбора.Добавить(Новый ПараметрВыбора("Отбор.УчетЗатрат", Истина));
МассивПараметровВыбора.Добавить(Новый ПараметрВыбора("Отбор.Статус", Перечисления.СтатусыНаправленияДеятельности.Используется));
КонецЕсли;
Элементы.НаправлениеДеятельности.ПараметрыВыбора = Новый ФиксированныйМассив(МассивПараметровВыбора);
МассивПараметровВыбора = Новый Массив;
Если ПредставлениеПолей.ТипОтправителя = "Склад" Тогда
МассивТипов = Новый Массив;
МассивТипов.Добавить(Перечисления.ТипыСкладов.ОптовыйСклад);
МассивТипов.Добавить(Перечисления.ТипыСкладов.РозничныйМагазин);
МассивПараметровВыбора.Добавить(Новый ПараметрВыбора("Отбор.ТипСклада", Новый ФиксированныйМассив(МассивТипов)));
ИначеЕсли ПредставлениеПолей.ТипОтправителя = "Кладовая" Тогда
МассивПараметровВыбора.Добавить(Новый ПараметрВыбора("Отбор.ЦеховаяКладовая", Истина));
ИначеЕсли ПредставлениеПолей.ТипОтправителя = "Подразделение" Тогда
МассивПараметровВыбора.Добавить(Новый ПараметрВыбора("Отбор.ПроизводственноеПодразделение", Истина));
КонецЕсли;
Элементы.Отправитель.ПараметрыВыбора = Новый ФиксированныйМассив(МассивПараметровВыбора);
МассивПараметровВыбора = Новый Массив;
Если ПредставлениеПолей.ТипПолучателя = "Склад" Тогда
МассивТипов = Новый Массив;
МассивТипов.Добавить(Перечисления.ТипыСкладов.ОптовыйСклад);
МассивТипов.Добавить(Перечисления.ТипыСкладов.РозничныйМагазин);
МассивПараметровВыбора.Добавить(Новый ПараметрВыбора("Отбор.ТипСклада", Новый ФиксированныйМассив(МассивТипов)));
ИначеЕсли ПредставлениеПолей.ТипПолучателя = "Кладовая" Тогда
МассивПараметровВыбора.Добавить(Новый ПараметрВыбора("Отбор.ЦеховаяКладовая", Истина));
ИначеЕсли ПредставлениеПолей.ТипПолучателя = "Подразделение" Тогда
МассивПараметровВыбора.Добавить(Новый ПараметрВыбора("Отбор.ПроизводственноеПодразделение", Истина));
КонецЕсли;
Элементы.Получатель.ПараметрыВыбора = Новый ФиксированныйМассив(МассивПараметровВыбора);
ДоступенВыборПоРаспоряжению = ДоступенВыборПоРаспоряжению(Объект);
Если ДоступенВыборПоРаспоряжению И СписокРаспоряжений.Количество() > 1 Тогда
Элементы.СтраницыЗаказ.ТекущаяСтраница = Элементы.СтраницаЗаказы;
ИначеЕсли ДоступенВыборПоРаспоряжению Тогда
Элементы.СтраницыЗаказ.ТекущаяСтраница = Элементы.СтраницаЗаказ;
Иначе
Элементы.СтраницыЗаказ.ТекущаяСтраница = Элементы.СтраницаБезРаспоряжений;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура АктуализироватьНалогообложениеНДС(Заполнить = Истина)
ПараметрыЗаполнения = Документы.ДвижениеПродукцииИМатериалов.ПараметрыЗаполненияВидаДеятельностиНДС(Объект);
Если Заполнить Тогда
УчетНДСУП.ЗаполнитьВидДеятельностиНДС(
Объект.НалогообложениеНДС,
ПараметрыЗаполнения,
УчетНДСКэшированныеЗначенияПараметров);
КонецЕсли;
УчетНДСУП.ЗаполнитьСписокВыбораВидаДеятельностиНДС(
Элементы.НалогообложениеНДС,
Объект.НалогообложениеНДС,
ПараметрыЗаполнения,
УчетНДСКэшированныеЗначенияПараметров);
КонецПроцедуры
&НаСервере
Процедура ОграничитьТипЗначения(ИмяПоля)
ПриведенноеЗначение = Элементы[ИмяПоля].ОграничениеТипа.ПривестиЗначение(Объект[ИмяПоля]);
Если Не Объект[ИмяПоля] = ПриведенноеЗначение Тогда
Объект[ИмяПоля] = ПриведенноеЗначение;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьКомандВводаНаОсновании()
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтаФорма, Объект);
КонецПроцедуры
&НаСервере
Процедура ОбновитьЗаголовокФормы()
Если ЗначениеЗаполнено(Объект.Ссылка) Тогда
Шаблон = НСтр("ru='%1 %2 от %3'");
Иначе
Шаблон = НСтр("ru='%1 (создание)'");
КонецЕсли;
ПредставлениеОперации = Документы.ДвижениеПродукцииИМатериалов.СписокОпераций().НайтиПоЗначению(Объект.ХозяйственнаяОперация);
Если ПредставлениеОперации <> Неопределено Тогда
ПредставлениеОперации = ПредставлениеОперации.Представление;
Иначе
ПредставлениеОперации = Объект.ХозяйственнаяОперация;
КонецЕсли;
Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
Шаблон, ПредставлениеОперации, Объект.Номер, Объект.Дата);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(Форма, СтруктураДействий)
ДобавитьДействиеПересчитатьКоличествоЕдиниц(Форма, СтруктураДействий);
СтруктураДействий.Вставить("ПересчитатьСумму");
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьВСтруктуруДействияПриИзмененииНоменклатуры(Форма, ТекущаяСтрока, СтруктураДействий)
Если ТекущаяСтрока <> Неопределено Тогда
СтруктураДействий.Вставить("ПроверитьХарактеристикуПоВладельцу", ТекущаяСтрока.Характеристика);
СтруктураДействий.Вставить("ПроверитьЗаполнитьУпаковкуПоВладельцу", ТекущаяСтрока.Упаковка);
Иначе
СтруктураДействий.Вставить("ПроверитьЗаполнитьУпаковкуПоВладельцу");
КонецЕсли;
ДобавитьДействиеПересчитатьКоличествоЕдиниц(Форма, СтруктураДействий);
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
ПараметрыПроверкиСерий = Новый Структура("Склад, ПараметрыУказанияСерий");
ПараметрыПроверкиСерий.Склад = Новый Структура("Отправитель, Получатель", Форма.Объект.Отправитель, Форма.Объект.Получатель);
ПараметрыПроверкиСерий.ПараметрыУказанияСерий = Форма.ПараметрыУказанияСерий;
СтруктураДействий.Вставить("ПроверитьСериюРассчитатьСтатус", ПараметрыПроверкиСерий);
ПакетнаяОбработкаТабличнойЧастиКлиентСерверЛокализация.ДополнитьСтруктуруДействийПриИзмененииЭлемента(
Форма, "Номенклатура", СтруктураДействий);
СтруктураДействий.Вставить("НоменклатураПриИзмененииПереопределяемый", Новый Структура("ИмяФормы, ИмяТабличнойЧасти",
Форма.ИмяФормы, "Товары"));
ОбеспечениеКлиентСервер.СтруктураДействийВставитьПриИзмененииНазначения(СтруктураДействий);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСлужебныеРеквизитыТабличнойЧасти()
ОбновитьОтклоненияОтРаспоряжения();
ПараметрыЗаполненияРеквизитов = Новый Структура;
ПараметрыЗаполненияРеквизитов.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются", Новый Структура("Номенклатура", "ХарактеристикиИспользуются"));
ПараметрыЗаполненияРеквизитов.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
ПараметрыЗаполненияРеквизитов.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
ПакетнаяОбработкаТабличнойЧастиКлиентСерверЛокализация.ДополнитьСтруктуруДействийПриИзмененииЭлемента(
ЭтотОбъект, "Номенклатура", ПараметрыЗаполненияРеквизитов);
НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(Объект.Товары,ПараметрыЗаполненияРеквизитов);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСписокОпераций()
ОперацииВПорядкеДобавления = Новый Массив();
ОперацииВПорядкеДобавления.Добавить(Перечисления.ХозяйственныеОперации.ПередачаПродукцииИзПроизводства);
ОперацииВПорядкеДобавления.Добавить(Перечисления.ХозяйственныеОперации.ПередачаПродукцииИзКладовой);
ОперацииВПорядкеДобавления.Добавить(Перечисления.ХозяйственныеОперации.ПередачаМатериаловВПроизводство);
ОперацииВПорядкеДобавления.Добавить(Перечисления.ХозяйственныеОперации.ПередачаМатериаловВКладовую);
ОперацииВПорядкеДобавления.Добавить(Перечисления.ХозяйственныеОперации.ВозвратМатериаловИзПроизводства);
ОперацииВПорядкеДобавления.Добавить(Перечисления.ХозяйственныеОперации.ВозвратМатериаловИзКладовой);
ОперацииВПорядкеДобавления.Добавить(Перечисления.ХозяйственныеОперации.ПеремещениеПолуфабрикатов);
ОперацииВПорядкеДобавления.Добавить(Перечисления.ХозяйственныеОперации.ПеремещениеПолуфабрикатовМеждуФилиалами);
ДоступныеОперации = Документы.ДвижениеПродукцииИМатериалов.СписокОпераций();
Элементы.ХозяйственнаяОперация.СписокВыбора.Очистить();
Для каждого ЭлементКоллекции Из ОперацииВПорядкеДобавления Цикл
ДоступнаяОперация = ДоступныеОперации.НайтиПоЗначению(ЭлементКоллекции);
Если ДоступнаяОперация <> Неопределено Тогда
Элементы.ХозяйственнаяОперация.СписокВыбора.Добавить(ДоступнаяОперация.Значение, ДоступнаяОперация.Представление);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ЗакрытьФорму()
Закрыть();
КонецПроцедуры
&НаСервере
Процедура ПослеИзмененияСтрокПрограммноНаСервере(ЗаполнитьСлужебныеРеквизиты = Ложь, ЗаполнитьСтатусыУказанияСерий = Истина)
Если ЗаполнитьСтатусыУказанияСерий Тогда
ЗаполнитьСтатусыУказанияСерийСервер();
КонецЕсли;
МногооборотнаяТараСервер.ОбновитьСостояниеЗаполненияМногооборотнойТары(Объект.СостояниеЗаполненияМногооборотнойТары);
ОбновитьИнформациюПоЗаказам();
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаМатериаловВКладовую
И Объект.ПоРаспоряжениям <> (ЗначениеЗаполнено(Объект.Распоряжение) ИЛИ СписокРаспоряжений.Количество() > 0) Тогда
НастроитьЗависимыеЭлементыФормыНаСервере("ПоРаспоряжениям");
КонецЕсли;
ОбновитьОтклоненияОтРаспоряжения();
ОбновитьИнформациюОбОтклоненииОтРаспоряженийСервер();
Если ЗаполнитьСлужебныеРеквизиты Тогда
ЗаполнитьСлужебныеРеквизитыТабличнойЧасти();
КонецЕсли;
СобытияФорм.ПриИзмененииЭлемента(ЭтотОбъект, "Товары");
КонецПроцедуры
&НаСервере
Процедура ОбработатьДобавленнуюПрограммноСтроку(ТекущаяСтрока, КэшированныеЗначения)
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииНоменклатуры(ЭтаФорма, ТекущаяСтрока, СтруктураДействий);
СтруктураДействий.Удалить("ПроверитьСериюРассчитатьСтатус");
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаМатериаловВКладовую
И Объект.ПоРаспоряжениям
И ТекущаяСтрока.КодСтроки = 0 Тогда
ТекущаяСтрока.РасхождениеЗаказ = 1;
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ДоступенВыборПоРаспоряжению(Объект)
Возврат Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПередачаМатериаловВКладовую")
;
КонецФункции
&НаСервере
Процедура СтатусПриИзмененииСервер(ЗаполнитьСерииПоОтгрузке)
Если ЗаполнитьСерииПоОтгрузке Тогда
Документы.ДвижениеПродукцииИМатериалов.ЗаполнитьСерииПоОтгрузке(Объект);
КонецЕсли;
ЗаполнитьСтатусыУказанияСерийСервер(Истина);
КонецПроцедуры
&НаСервере
Процедура ОпределитьНаличиеОрдернойСхемы()
ОрдернаяСхема = Ложь;
МожноЗаполнитьСерииПоОтгрузке = Ложь;
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаМатериаловВПроизводство
Или Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаМатериаловВКладовую Тогда
ОрдернаяСхема = СкладыСервер.ИспользоватьОрдернуюСхемуПриОтгрузке(Объект.Отправитель, Объект.Дата);
МожноЗаполнитьСерииПоОтгрузке = ОрдернаяСхема;
ИначеЕсли Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаПродукцииИзПроизводства
Или Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаПродукцииИзКладовой
Или Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратМатериаловИзПроизводства
Или Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратМатериаловИзКладовой Тогда
ОрдернаяСхема = СкладыСервер.ИспользоватьОрдернуюСхемуПриПоступлении(Объект.Получатель, Объект.Дата);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура НастроитьКомандуПодобратьПоЗаказамОрдерам()
ИспользоватьРаспоряжения = Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаПродукцииИзПроизводства
Или Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаМатериаловВПроизводство
Или Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаМатериаловВКладовую
Или Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратМатериаловИзПроизводства;
Элементы.ТоварыПодобратьТоварыПоЗаказамОрдерам.Видимость = ОрдернаяСхема Или ИспользоватьРаспоряжения;
Если ИспользоватьРаспоряжения Тогда
Если ОрдернаяСхема Тогда
Элементы.ТоварыПодобратьТоварыПоЗаказамОрдерам.Заголовок = НСтр("ru = 'Подобрать товары по распоряжениям/ордерам'");
Иначе
Элементы.ТоварыПодобратьТоварыПоЗаказамОрдерам.Заголовок = НСтр("ru = 'Подобрать товары по распоряжениям'");
КонецЕсли;
Иначе
Элементы.ТоварыПодобратьТоварыПоЗаказамОрдерам.Заголовок = НСтр("ru = 'Подобрать товары по ордерам'");
КонецЕсли;
Если Объект.Исправление Тогда
Элементы.ТоварыПодобратьТоварыПоЗаказамОрдерам.Видимость = Ложь;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОкруглитьДоЦелойУпаковкиЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
Если РезультатВопроса <> КодВозвратаДиалога.Да Тогда
Возврат;
КонецЕсли;
ОкруглитьДоЦелойУпаковкиНаСервере(КэшированныеЗначения);
ТекстОповещения = НСтр("ru = 'В выбранных строках выполнено округление до целых единиц.'");
ПоказатьОповещениеПользователя(НСтр("ru = 'Выполнено округление'"),, ТекстОповещения, БиблиотекаКартинок.Успешно32);
КонецПроцедуры
&НаСервере
Процедура ОкруглитьДоЦелойУпаковкиНаСервере(КэшированныеЗначения)
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(ЭтотОбъект, СтруктураДействий);
ВыделенныеСтроки = Элементы.Товары.ВыделенныеСтроки;
ОбрабатываемыеСтроки = Новый Массив();
КэшированныеЗначенияОбработкаТЧ = ОбщегоНазначения.СкопироватьРекурсивно(КэшированныеЗначения);
Для каждого ИдентификаторСтроки Из ВыделенныеСтроки Цикл
ДанныеСтроки = Объект.Товары.НайтиПоИдентификатору(ИдентификаторСтроки);
Если Цел(ДанныеСтроки.КоличествоУпаковок) = ДанныеСтроки.КоличествоУпаковок Тогда
Продолжить;
КонецЕсли;
ДанныеСтроки.КоличествоУпаковок = Цел(ДанныеСтроки.КоличествоУпаковок) + 1;
ОбрабатываемыеСтроки.Добавить(ДанныеСтроки);
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.Товары,
КэшированныеЗначенияОбработкаТЧ);
ЗаполнитьСтатусыУказанияСерийСервер();
КонецПроцедуры
&НаСервере
Процедура УстановитьИспользованиеПлановойСтоимости()
ПараметрыУчетнойПолитики = НастройкиНалоговУчетныхПолитик.ДействующиеПараметрыНалоговУчетныхПолитикНаДату(
"УчетнаяПолитикаФинансовогоУчета",
Объект.Организация,
Объект.Дата);
Если НЕ ПараметрыУчетнойПолитики = Неопределено Тогда
ИспользоватьПлановуюСтоимость = ПараметрыУчетнойПолитики.УчетГотовойПродукцииПоПлановойСтоимости;
НастроитьЗависимыеЭлементыФормыНаСервере("ИспользоватьПлановуюСтоимость");
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьПризнакЦеховаяКладовая(ИмяПоляСклад, СтруктураДействий = Неопределено)
Если ИмяПоляСклад = "Отправитель" Тогда
ИмяПоляЦеховаяКладовая = "ОтправительЦеховаяКладовая";
ИначеЕсли ИмяПоляСклад = "Получатель" Тогда
ИмяПоляЦеховаяКладовая = "ПолучательЦеховаяКладовая";
КонецЕсли;
ЗначениеСклад = Объект[ИмяПоляСклад];
ЗначениеЦеховаяКладоваяДоИзменения = ЭтотОбъект[ИмяПоляЦеховаяКладовая];
УстановитьПривилегированныйРежим(Истина);
ЗначениеЦеховаяКладовая =
?(ТипЗнч(ЗначениеСклад) <> Тип("СправочникСсылка.Склады") Или Не ЗначениеЗаполнено(ЗначениеСклад),
Ложь, ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ЗначениеСклад, "ЦеховаяКладовая"));
УстановитьПривилегированныйРежим(Ложь);
ЭтотОбъект[ИмяПоляЦеховаяКладовая] = ЗначениеЦеховаяКладовая;
Если СтруктураДействий <> Неопределено И ЗначениеЦеховаяКладоваяДоИзменения <> ЗначениеЦеховаяКладовая Тогда
ДобавитьДействиеПересчитатьКоличествоЕдиниц(ЭтотОбъект, СтруктураДействий);
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьДействиеПересчитатьКоличествоЕдиниц(Форма, СтруктураДействий)
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц",
Новый Структура("НужноОкруглять", Не Форма.ОтправительЦеховаяКладовая И Не Форма.ПолучательЦеховаяКладовая));
КонецПроцедуры
#КонецОбласти
#Область СтандартныеПодсистемы
&НаСервере
Процедура СвойстваВыполнитьОтложеннуюИнициализацию()
УправлениеСвойствами.ЗаполнитьДополнительныеРеквизитыВФорме(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьЗависимостиДополнительныхРеквизитов()
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПриИзмененииДополнительногоРеквизита(Элемент)
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ОбновитьЭлементыДополнительныхРеквизитов()
УправлениеСвойствами.ОбновитьЭлементыДополнительныхРеквизитов(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ХозОперацияПриИзмененииЗавершение(РезультатВопроса, ПоРаспоряжениямДоИзменения) Экспорт
Если РезультатВопроса = КодВозвратаДиалога.Да Тогда
ХозяйственнаяОперацияПриИзмененииНаСервере();
ОтвязатьДокументОтРаспоряжений();
Иначе
Объект.ХозяйственнаяОперация = ХозОперацияДоИзменения;
Объект.ПоРаспоряжениям = ПоРаспоряжениямДоИзменения;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПривязатьКРаспоряжениям(Команда)
ПривязатьСтрокиКРаспоряжениямНаСервере();
КонецПроцедуры
&НаСервере
Процедура ПривязатьСтрокиКРаспоряжениямНаСервере()
ПривязатьСтрокиКРаспоряжениям();
ПослеИзмененияСтрокПрограммноНаСервере(Истина);
КонецПроцедуры
#КонецОбласти
#Область Ордера
&НаСервере
Процедура ПерезаполнитьПоОрдерам(ДанныеЗаполнения)
МассивЗаказов = ДанныеЗаполнения.МассивЗаказов;
ПараметрыЗаполнения = Документы.ДвижениеПродукцииИМатериалов.ПараметрыЗаполненияДокумента();
ПараметрыЗаполнения.Вставить("ФормаОткрыта", Истина);
ПараметрыЗаполнения.Вставить("ЗаполнятьПоОрдеру", Истина);
ТаблицаНакладная = Документы.ДвижениеПродукцииИМатериалов.ДанныеТаблицыТоварыДокумента(Объект.Ссылка);
РеквизитыШапки = Новый Структура("Организация, Получатель, Отправитель, ХозяйственнаяОперация, Ссылка, ВариантПриемкиТоваров");
ЗаполнитьЗначенияСвойств(РеквизитыШапки, Объект);
ОтборПоТоварамУстановлен = Ложь;
Если ДанныеЗаполнения.Свойство("ОтборПоТоварам") Тогда
РеквизитыШапки.Вставить("ОтборПоТоварам", ДанныеЗаполнения.ОтборПоТоварам);
НастройкиОтборов = Документы.ДвижениеПродукцииИМатериалов.ПолучитьНастройкиОтборов(РеквизитыШапки);
ОтборПоТоварамУстановлен = НастройкиОтборов <> Неопределено;
Если ОтборПоТоварамУстановлен Тогда
ПоляОтбора = "Ссылка, Номенклатура, Характеристика";
ТаблицаОтборов = НастройкиОтборов.ТаблицаОтборов;
ТаблицаОтборов.Индексы.Добавить(ПоляОтбора);
СтруктураОтбора = Новый Структура(ПоляОтбора);
КонецЕсли;
КонецЕсли;
Документы.ДвижениеПродукцииИМатериалов.ИнициализироватьПараметрыЗаполнения(ПараметрыЗаполнения, РеквизитыШапки, МассивЗаказов);
Документы.ДвижениеПродукцииИМатериалов.ЗаполнитьПоЗаказамОрдерам(ТаблицаНакладная, Объект.Ссылка, ПараметрыЗаполнения);
ЗаполнениеПоПриемке = Объект.ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.ПередачаМатериаловВПроизводство
И Объект.ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.ПередачаМатериаловВКладовую;
НакладнаяЯвляетсяРаспоряжением = ЗакупкиСервер.РаспоряжениеНаПриемкуТовараНакладная(Объект.ВариантПриемкиТоваров);
КоличествоИндексов = ТаблицаНакладная.Количество() - 1;
Для Индекс = 0 По КоличествоИндексов Цикл
Строка = ТаблицаНакладная[КоличествоИндексов - Индекс];
РаспоряжениеВЗаказах = МассивЗаказов.Найти(Строка.Распоряжение) <> Неопределено;
Если Не (ЗаполнениеПоПриемке И НакладнаяЯвляетсяРаспоряжением) И Не РаспоряжениеВЗаказах Тогда
Продолжить;
КонецЕсли;
Если ОтборПоТоварамУстановлен Тогда
ЗаполнитьЗначенияСвойств(СтруктураОтбора, Строка);
СтруктураОтбора.Ссылка = ?(РаспоряжениеВЗаказах, Строка.Распоряжение, Объект.Ссылка);
НайденныеСтроки = ТаблицаОтборов.НайтиСтроки(СтруктураОтбора);
Если НайденныеСтроки.Количество() > 0 Тогда
Если Строка.КоличествоВОрдере > 0 Тогда
Строка.Количество = Строка.КоличествоВОрдере;
Иначе
ТаблицаНакладная.Удалить(Строка);
КонецЕсли;
КонецЕсли;
Иначе
Если Строка.КоличествоВОрдере > 0 Тогда
Строка.Количество = Строка.КоличествоВОрдере;
Иначе
ТаблицаНакладная.Удалить(Строка);
КонецЕсли;
КонецЕсли;
КонецЦикла;
Объект.Товары.Загрузить(ТаблицаНакладная);
Документы.ДвижениеПродукцииИМатериалов.ОбновитьЗависимыеРеквизитыТабличнойЧасти(Объект.Товары, ПараметрыЗаполнения);
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаМатериаловВПроизводство
Или Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаМатериаловВКладовую Тогда
Документы.ДвижениеПродукцииИМатериалов.ЗаполнитьСерииПоОтгрузке(
Объект, ?(ОтборПоТоварамУстановлен, ТаблицаОтборов, Неопределено));
КонецЕсли;
ЗаполнитьСлужебныеРеквизитыТабличнойЧасти();
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
ОбновитьИнформациюПоЗаказам();
ОбновитьИнформациюОбОтклоненииОтРаспоряжений(
Объект.Товары,
НадписьРасхождение,
Элементы.КартинкаРасхождение1,
Элементы.КартинкаРасхождение2);
СобытияФорм.ПриИзмененииЭлемента(ЭтотОбъект, "Товары");
КонецПроцедуры
#КонецОбласти
#Область ПлановаяСтоимость
&НаСервере
Функция ТоварыЗаполнитьЦеныПоВидуЦенСервер()
Отказ = Ложь;
ВыделенныеСтроки = Элементы.Товары.ВыделенныеСтроки;
Если ВыделенныеСтроки.Количество() = 0 Тогда
ТекстСообщения = НСтр("ru='В таблице ""Товары и работы"" не выбрано ни одной строки. Цены не могут быть заполнены.'");
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения,, "Товары", "Объект", Отказ);
Иначе
МассивСтрок = Новый Массив;
Для Каждого Идентификатор Из ВыделенныеСтроки Цикл
Строка = Объект.Товары.НайтиПоИдентификатору(Идентификатор);
Если Строка.ПобочноеИзделие Тогда
Продолжить
КонецЕсли;
МассивСтрок.Добавить(Строка);
КонецЦикла;
Если МассивСтрок.Количество() = 0 Тогда
ТекстСообщения = НСтр("ru='В выделенных строках отсутствуют позиции, доступные для заполнения по виду цен.'");
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения,, "Товары", "Объект", Отказ);
КонецЕсли;
КонецЕсли;
Если Не ЗначениеЗаполнено(Объект.ВидЦены) Тогда
ТекстСообщения = НСтр("ru='Не заполнено поле ""Вид цены"".'");
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения,, "ВидЦены", "Объект", Отказ);
КонецЕсли;
Если Отказ Тогда
Возврат Ложь;
КонецЕсли;
Возврат ЗаполнитьЦеныПоВидуЦенСервер(Объект.ВидЦены, МассивСтрок);
КонецФункции
&НаСервере
Функция ЗаполнитьЦеныПоВидуЦенСервер(ВидЦен, МассивСтрок = Неопределено)
Если МассивСтрок = Неопределено Тогда
ОтборСтрок = Новый Структура("ПобочноеИзделие", Ложь);
Иначе
ОтборСтрок = МассивСтрок;
КонецЕсли;
ЦеныРассчитаны = ЦеныПредприятияЗаполнениеСервер.ЗаполнитьЦены(
Объект.Товары,
ОтборСтрок,
Новый Структура(
"Дата, Валюта, ВидЦены, Организация",
Объект.Дата,
Объект.Валюта,
Объект.ВидЦены,
Объект.Организация),
Новый Структура(
"ПересчитатьСумму",
"КоличествоУпаковок"));
Возврат ЦеныРассчитаны;
КонецФункции
#КонецОбласти
&НаКлиенте
Процедура Подключаемый_ОбработатьЗаписьОбъекта()
ОбщегоНазначенияУТКлиент.ОбработатьЗаписьОбъектаВФорме(ЭтотОбъект, ПараметрыДляЗаписи);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПроверитьВыполнениеЗаданияИС()
СоответствиеТребованиямГИСМТКлиент.ПроверитьВыполнениеЗадания(ЭтотОбъект);
КонецПроцедуры
#КонецОбласти