#Область ОписаниеПеременных
&НаКлиенте
Перем ФормаМодифицирована;
&НаКлиенте
Перем КэшированныеЗначения;
&НаКлиенте
Перем ТекущиеДанныеИдентификатор;
&НаКлиенте
Перем ПараметрыДляЗаписи Экспорт;
#КонецОбласти
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ПараметрыВстраивания = Документы.ЗаказНаВнутреннееПотребление.ДоступныеОстаткиПараметрыВстраивания();
ОбеспечениеВДокументахСервер.ДоступныеОстаткиПриСозданииНаСервере(ЭтотОбъект, ПараметрыВстраивания);
УстановитьУсловноеОформление();
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(Объект, ЭтотОбъект);
ОбщегоНазначенияУТ.НастроитьПодключаемоеОборудование(ЭтаФорма);
ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект);
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ИмяЭлементаДляРазмещения", "ГруппаДополнительныеРеквизиты");
ДополнительныеПараметры.Вставить("ОтложеннаяИнициализация", Истина);
УправлениеСвойствами.ПриСозданииНаСервере(ЭтотОбъект, ДополнительныеПараметры);
Если ПолучитьФункциональнуюОпцию("ИспользоватьПроизводство")
И Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаВПроизводство Тогда
Элементы.ХозяйственнаяОперация.СписокВыбора.Добавить(Перечисления.ХозяйственныеОперации.ПередачаВПроизводство);
КонецЕсли;
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаВПроизводство Тогда
ТолькоПросмотр = Истина;
КонецЕсли;
ПараметрыВыбораСтатейИАналитик = Документы.ЗаказНаВнутреннееПотребление.ПараметрыВыбораСтатейИАналитик(Объект.ХозяйственнаяОперация);
ДоходыИРасходыСервер.ПриСозданииНаСервере(ЭтотОбъект, ПараметрыВыбораСтатейИАналитик);
Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
ПриЧтенииСозданииНаСервере();
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
КонецЕсли;
Если Элементы.ХозяйственнаяОперация.СписокВыбора.Количество() = 1 Тогда
Элементы.ХозяйственнаяОперация.Видимость = Ложь;
КонецЕсли;
Элементы.ЗакрытьЗаказ.Доступность = ПравоДоступа("Изменение",Метаданные.Документы.ЗаказНаВнутреннееПотребление);
УстановитьДоступностьКомандБуфераОбмена();
УстановитьПараметрыВыбора();
Перечисления.СтатусыВнутреннихЗаказов.ЗаполнитьСписокВыбора(Элементы.Статус.СписокВыбора, Истина);
ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПриСозданииНаСервере(ЭтотОбъект);
СобытияФорм.ПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка);
ПараметрыГиперссылки = РаботаСФайлами.ГиперссылкаФайлов();
ПараметрыГиперссылки.Размещение = "КоманднаяПанель";
РаботаСФайлами.ПриСозданииНаСервере(ЭтотОбъект, ПараметрыГиперссылки);
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ПодключитьОбработчикОжидания("Подключаемый_ПриИзмененииМодифицированностиФормы", 1);
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
МенеджерОборудованияКлиент.НачатьПодключениеОборудованиеПриОткрытииФормы(Неопределено, ЭтаФорма, "СканерШтрихкода");
ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
РаботаСФайламиКлиент.ПриОткрытии(ЭтотОбъект, Отказ);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
ПринудительноЗакрытьФорму = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ПриЗакрытии(ЗавершениеРаботы)
МенеджерОборудованияКлиент.НачатьОтключениеОборудованиеПриЗакрытииФормы(Неопределено, ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)
ОценкаПроизводительностиКлиент.НачатьЗамерВремени(Истина,
"Документ.ЗаказНаВнутреннееПотребление.Форма.ФормаДокумента.Событие.ОбработкаВыбора");
Если ИсточникВыбора.ИмяФормы = "Обработка.СостояниеОбеспеченияЗаказов.Форма.Форма" Тогда
АдресТаблицыДвижений = ЗаполнитьОбеспечениеИзФормыСостоянияОбеспечения(
ВыбранноеЗначение.КодДействия,
ВыбранноеЗначение.АдресАналитик,
ВыбранноеЗначение.ПараметрыЗаполнения);
ВыполнитьОбработкуОповещения(ВыбранноеЗначение.ВыполняемоеОповещение, АдресТаблицыДвижений);
ИначеЕсли ИсточникВыбора.ИмяФормы = "Обработка.ПодборМногооборотнойТары.Форма.Форма" Тогда
ЗаполнитьМногооборотнуюТаруИзХранилищаСервер(ВыбранноеЗначение.АдресМногооборотнойТарыВХранилище);
МногооборотнаяТараКлиент.ОповеститьПользователяОЗаполненииМногооборотнойТарой();
ИначеЕсли ИсточникВыбора.ИмяФормы = "Обработка.ПодборТоваровВДокументПродажи.Форма.Форма" Тогда
ОбработкаВыбораПодборНаКлиенте(ВыбранноеЗначение);
ИначеЕсли НоменклатураКлиент.ЭтоУказаниеСерий(ИсточникВыбора) Тогда
НоменклатураКлиент.ОбработатьУказаниеСерии(ЭтаФорма, ПараметрыУказанияСерий, ВыбранноеЗначение);
ИначеЕсли ИсточникВыбора.ИмяФормы = "Обработка.ПомощникЗакрытияЗаказов.Форма.ФормаЗакрытия" Тогда
РезультатОтмены = СкорректироватьСтрокиЗаказа(ВыбранноеЗначение);
ПоказатьОповещениеПользователя(НСтр("ru = 'Отмена неотработанных строк'"), , РезультатОтмены.Оповещение);
КонецЕсли;
ОбеспечениеВДокументахКлиентСервер.ЗаполнитьСлужебныеРеквизиты(Объект.Товары, ДатаОтгрузкиОбязательна, СкладОбязателен);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если Источник = "ПодключаемоеОборудование" И ВводДоступен() Тогда
Если ИмяСобытия = "ScanData" И МенеджерОборудованияУТКлиент.ЕстьНеобработанноеСобытие() Тогда
ОбработатьШтрихкоды(МенеджерОборудованияУТКлиент.ПреобразоватьДанныеСоСканераВМассив(Параметр));
КонецЕсли;
КонецЕсли;
Если Источник = "ПодключаемоеОборудование"
И ИмяСобытия = "НеизвестныеШтрихкоды"
И Параметр.ФормаВладелец = УникальныйИдентификатор Тогда
КэшированныеЗначения.Штрихкоды.Очистить();
ДанныеШтрихкодов = Новый Массив;
Для Каждого ПолученныйШтрихкод Из Параметр.ПолученыНовыеШтрихкоды Цикл
ДанныеШтрихкодов.Добавить(ПолученныйШтрихкод);
КонецЦикла;
Для Каждого ПолученныйШтрихкод Из Параметр.ЗарегистрированныеШтрихкоды Цикл
ДанныеШтрихкодов.Добавить(ПолученныйШтрихкод);
КонецЦикла;
ОбработатьШтрихкоды(ДанныеШтрихкодов);
КонецЕсли;
Если ИмяСобытия = "КопированиеСтрокВБуферОбмена" Тогда
УстановитьДоступностьКомандБуфераОбменаНаКлиенте();
КонецЕсли;
Если УправлениеСвойствамиКлиент.ОбрабатыватьОповещения(ЭтотОбъект, ИмяСобытия, Параметр) Тогда
ОбновитьЭлементыДополнительныхРеквизитов();
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
КонецЕсли;
РаботаСФайламиКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия);
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
УправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
ПараметрыВыбораСтатейИАналитик = Документы.ЗаказНаВнутреннееПотребление.ПараметрыВыбораСтатейИАналитик(Объект.ХозяйственнаяОперация);
ДоходыИРасходыСервер.ПриЧтенииНаСервере(ЭтотОбъект, ПараметрыВыбораСтатейИАналитик);
ПараметрыВстраивания = Документы.ЗаказНаВнутреннееПотребление.ДоступныеОстаткиПараметрыВстраивания();
ОбеспечениеВДокументахСервер.ДоступныеОстаткиПриЧтенииНаСервере(ЭтотОбъект, ПараметрыВстраивания);
ПриЧтенииСозданииНаСервере();
МодификацияКонфигурацииПереопределяемый.ПриЧтенииНаСервере(ЭтаФорма, ТекущийОбъект);
УправлениеСвойствами.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
Если НеВыполнятьПроверкуПередЗаписью Тогда
НеВыполнятьПроверкуПередЗаписью = Ложь;
Возврат;
КонецЕсли;
Если ПараметрыЗаписи.РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда
Отказ = Истина;
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ПараметрыЗаписи", ПараметрыЗаписи);
МногооборотнаяТараКлиент.ПредложитьПодобратьМногооборотнуюТару(
ЭтаФорма,
"Товары",
"Номенклатура,Характеристика,Количество,,ДатаОтгрузки",
Новый ОписаниеОповещения("ПередЗаписьюПредложитьПодобратьМногооборотнуюТаруЗавершение", ЭтотОбъект, ДополнительныеПараметры));
КонецЕсли;
ОбщегоНазначенияУТКлиент.ЗаписатьОбъектПриНеобходимости(ЭтотОбъект, ПараметрыЗаписи, Отказ);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗаписьюПредложитьПодобратьМногооборотнуюТаруЗавершение(Результат, ДополнительныеПараметры) Экспорт
ОбщегоНазначенияУТКлиент.ЗаписатьОбъектПриНеобходимости(ЭтотОбъект, ДополнительныеПараметры.ПараметрыЗаписи,,Истина);
КонецПроцедуры
&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
УправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
ОбеспечениеВДокументахСервер.ПослеЗаписиНаСервере(ЭтотОбъект);
УстановитьВидимостьОбеспечения();
УстановитьВидимостьКомандыТоварыОтгрузить();
ЗаполнитьСлужебныеРеквизитыФормыДокумента();
ДоходыИРасходыСервер.ПослеЗаписиНаСервере(ЭтотОбъект);
СостоянияДокументов.ПослеЗаписиНаСервере(ЭтотОбъект, ПараметрыЗаписи);
Если СостоянияДокументов.ПроверкаЗаданияКОтражениюСостоянияЗаказовНеЗапущена(ЭтотОбъект) Тогда
ОбновитьСостояниеСервер();
КонецЕсли;
МодификацияКонфигурацииПереопределяемый.ПослеЗаписиНаСервере(ЭтаФорма, ТекущийОбъект, ПараметрыЗаписи);
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
ФормаМодифицирована = Неопределено;
Подключаемый_ПриИзмененииМодифицированностиФормы();
ОповеститьОПроведенииДокумента(ПараметрыЗаписи);
ОбеспечениеВДокументахКлиент.ПослеЗаписи(ЭтотОбъект, "Подключаемый_ПроверитьВыполнениеЗаданияРаспределенияЗапасов");
МодификацияКонфигурацииКлиентПереопределяемый.ПослеЗаписи(ЭтаФорма, ПараметрыЗаписи);
ОбщегоНазначенияУТКлиент.ВыполнитьДействияПослеЗаписи(ЭтаФорма, Объект, ПараметрыЗаписи);
Если ПараметрыЗаписи.Свойство("СозданиеКорректировки") Тогда
ДополнительныеПараметры = ПараметрыЗаписи.СозданиеКорректировки;
Если Объект.Проведен Тогда
ОбъектыОснований = Новый Массив();
ОбъектыОснований.Добавить(Объект.Ссылка);
ДополнительныеПараметры.ОписаниеКоманды.Вставить("ОбъектыОснований", ОбъектыОснований);
ДополнительныеПараметры.ОписаниеКоманды.Вставить("Форма", ЭтотОбъект);
ОбеспечениеВДокументахКлиент.ОткрытьЗаполнениеКорректировкиНазначения(
ДополнительныеПараметры.Резервирование,
Объект.Ссылка,
ДополнительныеПараметры.ОписаниеКоманды);
КонецЕсли;
КонецЕсли;
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда
МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент");
МодульПодключаемыеКомандыКлиент.ПослеЗаписи(ЭтотОбъект, Объект, ПараметрыЗаписи);
КонецЕсли;
СостоянияДокументовКлиент.ПослеЗаписи(ЭтотОбъект, "Подключаемый_ПроверитьЗаданияКОтражениюСостоянияЗаказов");
КонецПроцедуры
&НаСервере
Процедура ПередЗагрузкойДанныхИзНастроекНаСервере(Настройки)
Если Не Объект.Ссылка.Пустая() Тогда
Настройки.Удалить("Объект.НеОтгружатьЧастями");
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПриЗагрузкеДанныхИзНастроекНаСервере(Настройки)
УстановитьВидимостьЭлементовФормыДатОтгрузки();
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
УправлениеСвойствами.ПередЗаписьюНаСервере(ЭтотОбъект, ТекущийОбъект);
МодификацияКонфигурацииПереопределяемый.ПередЗаписьюНаСервере(ЭтаФорма, Отказ, ТекущийОбъект, ПараметрыЗаписи);
ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПередЗаписьюНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
КонецПроцедуры
&НаСервере
Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
УправлениеСвойствами.ОбработкаПроверкиЗаполнения(ЭтотОбъект, Отказ, ПроверяемыеРеквизиты);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура ДатаПриИзменении(Элемент)
АктуализироватьПотреблениеПодДеятельность();
КонецПроцедуры
&НаКлиенте
Процедура СтатусПриИзменении(Элемент)
Если Объект.Согласован
И Объект.Статус = ПредопределенноеЗначение("Перечисление.СтатусыВнутреннихЗаказов.НаСогласовании") Тогда
Объект.Согласован = Ложь;
КонецЕсли;
СтатусПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура ОрганизацияПриИзменении(Элемент)
ОрганизацияПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура ХозяйственнаяОперацияПриИзменении(Элемент)
Если Не Объект.Товары.Количество() = 0 Тогда
ОписаниеОповещения = Новый ОписаниеОповещения("ХозяйственнаяОперацияПриИзмененииЗавершение", ЭтотОбъект);
ТекстВопроса = НСтр("ru='Список ""Товары"" будет очищен. Продолжить?'");
ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
Иначе
ХозяйственнаяОперацияПриИзмененииСервер(Ложь);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ХозяйственнаяОперацияПриИзмененииЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
Если Не РезультатВопроса = КодВозвратаДиалога.Да Тогда
ЭтоСписаниеПоТребованию =
Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.СписаниеТоваровПоТребованию");
Объект.ХозяйственнаяОперация =
?(ЭтоСписаниеПоТребованию,
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПередачаВЭксплуатацию"),
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.СписаниеТоваровПоТребованию"));
Возврат;
Иначе
ХозяйственнаяОперацияПриИзмененииСервер(Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СкладПриИзменении(Элемент)
СкладПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура ДатаОтгрузкиПриИзменении(Элемент)
ЗаполнитьДатуОтгрузкиСервер(Объект.ДатаОтгрузки, Неопределено);
КонецПроцедуры
&НаКлиенте
Процедура НеОтгружатьЧастямиПриИзменении(Элемент)
НеОтгружатьЧастямиПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура НаправлениеДеятельностиПриИзменении(Элемент)
НаправлениеДеятельностиПриИзмененииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура ГруппаСтраницыПриСменеСтраницы(Элемент, ТекущаяСтраница)
Если ЭтотОбъект.ПараметрыСвойств.Свойство(ТекущаяСтраница.Имя)
И Не ЭтотОбъект.ПараметрыСвойств.ВыполненаОтложеннаяИнициализация Тогда
СвойстваВыполнитьОтложеннуюИнициализацию();
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПотреблениеДляДеятельностиОчистка(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
КонецПроцедуры
&НаКлиенте
Процедура СостояниеНажатие(Элемент, СтандартнаяОбработка)
ПродажиКлиент.СостояниеВФормеДокументаНажатие(СтандартнаяОбработка, ЭтотОбъект);
КонецПроцедуры
#Область Обеспечение
&НаКлиенте
Процедура ГиперссылкаСостояниеОбеспеченияНажатие(Элемент)
ГиперссылкаСостояниеОбеспеченияНажатиеОбщий();
КонецПроцедуры
&НаКлиенте
Процедура ГиперссылкаСостояниеОбеспеченияОтгружаетсяНажатие(Элемент)
ГиперссылкаСостояниеОбеспеченияНажатиеОбщий();
КонецПроцедуры
&НаКлиенте
Процедура ГиперссылкаСостояниеОбеспеченияПроблемаНажатие(Элемент)
ГиперссылкаСостояниеОбеспеченияНажатиеОбщий();
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыТовары
&НаКлиенте
Процедура ТоварыВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
ОценкаПроизводительностиКлиент.НачатьЗамерВремени(
Истина, "Документ.ЗаказНаВнутреннееПотребление.Форма.ФормаДокумента.Элементы.Товары.Выбор");
Если Элемент.ТекущийЭлемент = Элементы.ТоварыДоступно И Не ТолькоПросмотр Тогда
СтандартнаяОбработка = Ложь;
ПараметрыФормы = ПараметрыФормыЗапросаКоличестваИСерий(Неопределено);
Если ПараметрыФормы <> Неопределено Тогда
ОткрытьФорму("Обработка.ЗапросКоличестваИСерий.Форма", ПараметрыФормы, ЭтотОбъект);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыНоменклатураПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПроверитьХарактеристикуПоВладельцу", ТекущаяСтрока.Характеристика);
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ПроверитьЗаполнитьУпаковкуПоВладельцу", ТекущаяСтрока.Упаковка);
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц");
ДоходыИРасходыКлиентСервер.ВставитьДействиеЗаполнитьСтатьюАналитикуРасходовНоменклатуры(
СтруктураДействий,
ЭтотОбъект,
Объект.ХозяйственнаяОперация,
Объект.Организация,
Объект.Подразделение);
СтруктураДействий.Вставить("ПроверитьСериюРассчитатьСтатус", Новый Структура("Склад, ПараметрыУказанияСерий", Объект.Склад, ПараметрыУказанияСерий));
ДобавитьДействияОбеспеченияНаКлиенте(СтруктураДействий, "ВариантОбеспечения,ДоступноВДругихСтроках,СкладОбязателен,ДатаОтгрузкиОбязательна");
СтруктураДействий.Вставить("НоменклатураПриИзмененииПереопределяемый", Новый Структура("ИмяФормы, ИмяТабличнойЧасти",
ЭтаФорма.ИмяФормы, "Товары"));
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
ОбеспечениеВДокументахКлиентСервер.ЗаполнитьСлужебныеРеквизиты(Объект.Товары, ДатаОтгрузкиОбязательна, СкладОбязателен);
Если ОбеспечениеВДокументахКлиент.ТребуетсяОбновитьКолонкуДоступно(СтруктураДействий) Тогда
ОбновитьКолонкуДоступноСервер();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыХарактеристикаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураДействий = Новый Структура;
ДобавитьДействияОбеспеченияНаКлиенте(СтруктураДействий, "ВариантОбеспечения,ДоступноВДругихСтроках,СкладОбязателен,ДатаОтгрузкиОбязательна");
СтруктураДействий.Вставить("ХарактеристикаПриИзмененииПереопределяемый", Новый Структура("ИмяФормы, ИмяТабличнойЧасти",
ЭтаФорма.ИмяФормы, "Товары"));
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
ОбеспечениеВДокументахКлиентСервер.ЗаполнитьСлужебныеРеквизиты(Объект.Товары, ДатаОтгрузкиОбязательна, СкладОбязателен);
Если ОбеспечениеВДокументахКлиент.ТребуетсяОбновитьКолонкуДоступно(СтруктураДействий) Тогда
ОбновитьКолонкуДоступноСервер();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыУпаковкаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц");
ДобавитьДействияОбеспеченияНаКлиенте(СтруктураДействий, "ДоступноВДругихСтроках");
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
Если ОбеспечениеВДокументахКлиент.ТребуетсяОбновитьКолонкуДоступно(СтруктураДействий) Тогда
ОбновитьКолонкуДоступноСервер();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыКоличествоУпаковокПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий);
ДобавитьДействияОбеспеченияНаКлиенте(СтруктураДействий, "ДоступноВДругихСтроках");
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
Если ОбеспечениеВДокументахКлиент.ТребуетсяОбновитьКолонкуДоступно(СтруктураДействий) Тогда
ОбновитьКолонкуДоступноСервер();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыКатегорияЭксплуатацииПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
ПриИзмененииКатегорииЭксплуатации(ТекущаяСтрока);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСтатьяРасходовПриИзменении(Элемент)
ДоходыИРасходыКлиентСервер.СтатьяПриИзменении(ЭтотОбъект, Элемент);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
РаботаСТабличнымиЧастямиКлиент.КэшироватьТекущуюСтроку(Элементы.Товары, ЭтотОбъект);
Если НоваяСтрока Тогда
Элементы.Товары.ТекущиеДанные.КодСтроки = 0;
КонецЕсли;
Если НоваяСтрока И Не Копирование Тогда
ПриДобавленииСтрокиТоваровНаКлиенте(Элементы.Товары.ТекущиеДанные);
КонецЕсли;
Если Копирование Тогда
СтруктураДействий = Новый Структура;
ДобавитьДействияОбеспеченияНаКлиенте(СтруктураДействий, "ВариантОбеспечения,Доступно,СкладОбязателен,ДатаОтгрузкиОбязательна");
СтруктураДействий.Вставить("ПроверитьСериюРассчитатьСтатус", Новый Структура("Склад, ПараметрыУказанияСерий", Объект.Склад, ПараметрыУказанияСерий));
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(Элементы.Товары.ТекущиеДанные, СтруктураДействий, КэшированныеЗначения);
ОбеспечениеВДокументахКлиентСервер.ЗаполнитьСлужебныеРеквизиты(Объект.Товары, ДатаОтгрузкиОбязательна, СкладОбязателен);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
ТекущиеДанные = Элемент.ТекущиеДанные;
Если ТекущиеДанные <> Неопределено И Объект.НеОтгружатьЧастями Тогда
ТекущиеДанные.ДатаОтгрузки = Объект.ДатаОтгрузки;
КонецЕсли;
МногооборотнаяТараКлиент.ОбновитьСостояниеЗаполненияМногооборотнойТары(Объект.СостояниеЗаполненияМногооборотнойТары);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПослеУдаления(Элемент)
МногооборотнаяТараКлиент.ОбновитьСостояниеЗаполненияМногооборотнойТары(Объект.СостояниеЗаполненияМногооборотнойТары);
ОбеспечениеВДокументахКлиентСервер.ЗаполнитьСлужебныеРеквизиты(Объект.Товары, ДатаОтгрузкиОбязательна, СкладОбязателен);
ОбновитьКолонкуДоступноСервер();
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСерияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОткрытьПодборСерий(Элемент.ТекстРедактирования);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСерияПриИзменении(Элемент)
ВыбранноеЗначение = НоменклатураКлиентСервер.ВыбраннаяСерия();
ВыбранноеЗначение.Значение = Элементы.Товары.ТекущиеДанные.Серия;
ВыбранноеЗначение.ИдентификаторТекущейСтроки = Элементы.Товары.ТекущиеДанные.ПолучитьИдентификатор();
НоменклатураКлиент.ОбработатьУказаниеСерии(ЭтаФорма, ПараметрыУказанияСерий, ВыбранноеЗначение);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыОтмененоПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПроверитьСериюРассчитатьСтатус", Новый Структура("Склад, ПараметрыУказанияСерий", Объект.Склад, ПараметрыУказанияСерий));
ДобавитьДействияОбеспеченияНаКлиенте(СтруктураДействий, "ДоступноВДругихСтроках,СкладОбязателен,ДатаОтгрузкиОбязательна");
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
ОбеспечениеВДокументахКлиентСервер.ЗаполнитьСлужебныеРеквизиты(Объект.Товары, ДатаОтгрузкиОбязательна, СкладОбязателен);
Если ОбеспечениеВДокументахКлиент.ТребуетсяОбновитьКолонкуДоступно(СтруктураДействий) Тогда
ОбновитьКолонкуДоступноСервер();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыАналитикаРасходовНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ДоходыИРасходыКлиент.НачалоВыбораАналитикиРасходов(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыАналитикаРасходовАвтоПодбор(Элемент, Текст, ДанныеВыбора, Параметры, Ожидание, СтандартнаяОбработка)
ДоходыИРасходыКлиент.АвтоПодборАналитикиРасходов(
ЭтотОбъект,
Элемент,
Текст,
ДанныеВыбора,
Параметры,
СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыАналитикаРасходовОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, Параметры, СтандартнаяОбработка)
ДоходыИРасходыКлиент.ОкончаниеВводаТекстаАналитикиРасходов(
ЭтотОбъект,
Элемент,
Текст,
ДанныеВыбора,
Параметры,
СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСтатьяРасходовНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ДоходыИРасходыКлиент.НачалоВыбораСтатьи(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыВариантОбеспеченияОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
ОбеспечениеВДокументахКлиент.ВариантОбеспеченияОбработкаВыбора(
ЭтотОбъект,
Элементы.Товары.ТекущиеДанные,
ВыбранноеЗначение);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыВариантОбеспеченияПриИзменении(Элемент)
Перем ПараметрыФормы;
Если ОбеспечениеВДокументахКлиент.ОткрытьФормуВыбораСкладаИСерий(ЭтотОбъект) Тогда
ВариантПолученияПараметров = ОбеспечениеВДокументахКлиентСервер.РежимВыборДействия();
ПараметрыФормы = ПараметрыФормыЗапросаКоличестваИСерий(ВариантПолученияПараметров);
КонецЕсли;
ОбеспечениеВДокументахКлиент.ВариантОбеспеченияПриИзменении(
ЭтотОбъект,
ПараметрыФормы,
"ОбработатьВыборСкладаИСерии",
Истина,
"ТоварыВариантОбеспеченияПриИзмененииПослеВопроса");
КонецПроцедуры
&НаКлиенте
Процедура ТоварыВариантОбеспеченияОчистка(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыОбособленноПриИзменении(Элемент)
СтрокаТаблицы = Элементы.Товары.ТекущиеДанные;
ОбеспечениеВДокументахКлиент.ОбособленноПриИзменении(СтрокаТаблицы);
СтруктураДействий = Новый Структура();
ДобавитьДействияОбеспеченияНаКлиенте(СтруктураДействий, "ДоступноВДругихСтроках");
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(СтрокаТаблицы, СтруктураДействий, Неопределено);
Если ОбеспечениеВДокументахКлиент.ТребуетсяОбновитьКолонкуДоступно(СтруктураДействий) Тогда
ОбновитьКолонкуДоступноСервер();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыВариантОбеспеченияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
НовыйМассив = Новый Массив();
Если Объект.Статус = ПредопределенноеЗначение("Перечисление.СтатусыВнутреннихЗаказов.НаСогласовании") Тогда
МассивДействий = ОбеспечениеВДокументахКлиентСервер.ДоступныеДействияДляВыбораОбеспеченияВСтрокеПоУмолчанию();
Индекс = МассивДействий.Найти(ПредопределенноеЗначение("Перечисление.ВариантыОбеспечения.Отгрузить"));
Если Индекс <> Неопределено Тогда
МассивДействий.Удалить(Индекс);
КонецЕсли;
ДопустимыеДействия = Новый ФиксированныйМассив(МассивДействий);
НовыйПараметр = Новый ПараметрВыбора("ДопустимыеДействия", ДопустимыеДействия);
НовыйМассив.Добавить(НовыйПараметр);
КонецЕсли;
Элемент.ПараметрыВыбора = Новый ФиксированныйМассив(НовыйМассив);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаСервере
Процедура ВыполнитьКомандуНаСервере(ПараметрыВыполнения)
ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, ПараметрыВыполнения, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПродолжитьВыполнениеКомандыНаСервере(ПараметрыВыполнения, ДополнительныеПараметры) Экспорт
ВыполнитьКомандуНаСервере(ПараметрыВыполнения);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_КомандаПанелиПрисоединенныхФайлов(Команда)
РаботаСФайламиКлиент.КомандаУправленияПрисоединеннымиФайлами(ЭтотОбъект, Команда);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПроверкаПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраПроверкаПеретаскивания(ЭтотОбъект, Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраПеретаскивание(ЭтотОбъект, Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраНажатие(Элемент, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраНажатие(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьДанныеИзТСД(Команда)
ОчиститьСообщения();
ОценкаПроизводительностиКлиент.НачатьЗамерВремени(Истина,
"Документ.ЗаказНаВнутреннееПотребление.ФормаДокумента.Команда.ЗагрузитьДанныеИзТСД");
МенеджерОборудованияКлиент.НачатьЗагрузкуДанныеИзТСД(
Новый ОписаниеОповещения("ЗагрузитьИзТСДЗавершение", ЭтотОбъект),
УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьИзТСДЗавершение(Результат, Параметры) Экспорт
Если Результат.Результат Тогда
ОбработатьШтрихкоды(Результат.ТаблицаТоваров);
Иначе
МенеджерОборудованияУТКлиент.СообщитьОбОшибке(Результат);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаписатьДокумент(Команда)
ОбщегоНазначенияУТКлиент.Записать(ЭтаФорма, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьСтатьюРасходов(Команда)
ДоходыИРасходыКлиент.ЗаполнитьСтатьюИАналитикуВВыделенныхСтроках(
ЭтотОбъект,
Элементы.ТоварыСтатьяРасходов,
Элементы.Товары.ВыделенныеСтроки);
КонецПроцедуры
&НаКлиенте
Процедура ПодобратьТовары(Команда)
ОценкаПроизводительностиКлиент.НачатьЗамерВремени(Истина,
"Документ.ЗаказНаВнутреннееПотребление.ФормаДокумента.Команда.ПодобратьТовары");
Отказ = Ложь;
Если Не ЗначениеЗаполнено(Объект.Склад) Тогда
ОчиститьСообщения();
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(НСтр("ru = 'Поле ""Склад"" не заполнено'"), Объект.Ссылка, "Объект.Склад",, Отказ);
КонецЕсли;
Если Отказ Тогда
Возврат;
КонецЕсли;
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Склад", Объект.Склад);
ПараметрыФормы.Вставить("РежимПодбораБезСуммовыхПараметров", Истина);
ПараметрыФормы.Вставить("ИспользоватьДатыОтгрузки", Истина);
ПараметрыФормы.Вставить("СкрыватьКолонкуВидЦены", Истина);
ПараметрыФормы.Вставить("СкрыватьКомандуЦеныНоменклатуры", Истина);
ПараметрыФормы.Вставить("Заголовок", НСтр("ru = 'Подбор товаров'"));
ПараметрыФормы.Вставить("Дата", Объект.Дата);
ПараметрыФормы.Вставить("Документ", Объект.Ссылка);
ПараметрыФормы.Вставить("ПараметрыУказанияСерий", ПараметрыУказанияСерий);
ПараметрыФормы.Вставить("Назначение", Объект.Назначение);
ПараметрыФормы.Вставить("Подразделение", Объект.Подразделение);
ПараметрыФормы.Вставить("ПодборВариантовОбеспечения", Истина);
ПараметрыФормы.Вставить("ДоступныеОстаткиПараметрыДокумента",
ОбеспечениеВДокументахКлиент.ДоступныеОстаткиПараметрыДокумента(ЭтотОбъект));
Если Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.СписаниеТоваровПоТребованию") Тогда
ПараметрыФормы.Вставить("ОтборПоТипуНоменклатуры", Новый ФиксированныйМассив(НоменклатураКлиентСервер.ОтборПоТоваруМногооборотнойТареРаботе(Ложь)));
Иначе
ПараметрыФормы.Вставить("ОтборПоТипуНоменклатуры", Новый ФиксированныйМассив(НоменклатураКлиентСервер.ОтборПоТоваруМногооборотнойТаре(Ложь)));
КонецЕсли;
Если Объект.Статус = ПредопределенноеЗначение("Перечисление.СтатусыВнутреннихЗаказов.НаСогласовании") Тогда
ДопустимыеНеобособленныеДействия = ОбеспечениеВДокументахКлиентСервер.ВсеДействия();
ДопустимыеНеобособленныеДействия.Удалить(ДопустимыеНеобособленныеДействия.НайтиПоЗначению(
ПредопределенноеЗначение("Перечисление.ВариантыОбеспечения.Отгрузить")));
ДопустимыеОбособленныеДействия = ДопустимыеНеобособленныеДействия.Скопировать();
ПараметрыФормы.Вставить("ДопустимыеНеобособленныеДействия", ДопустимыеНеобособленныеДействия);
ПараметрыФормы.Вставить("ДопустимыеОбособленныеДействия", ДопустимыеОбособленныеДействия);
КонецЕсли;
ОткрытьФорму("Обработка.ПодборТоваровВДокументПродажи.Форма", ПараметрыФормы, ЭтотОбъект, УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ПоискПоШтрихкодуВыполнить(Команда)
ОчиститьСообщения();
Оповещение = Новый ОписаниеОповещения("ПоискПоШтрихкодуЗавершение", ЭтотОбъект);
ШтрихкодированиеНоменклатурыКлиент.ПоказатьВводШтрихкода(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ПоискПоШтрихкодуЗавершение(ДанныхШтрихкода, ДополнительныеПараметры) Экспорт
ОбработатьШтрихкоды(ДанныхШтрихкода);
КонецПроцедуры
&НаКлиенте
Процедура ПровестиДокумент(Команда)
ОбщегоНазначенияУТКлиент.Провести(ЭтаФорма, Истина);
КонецПроцедуры
&НаКлиенте
Процедура УстановитьПометкуУдаленияДокумента(Команда)
ОбщегоНазначенияУТКлиент.УстановитьПометкуУдаленияДокумента(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура РазбитьСтроку(Команда)
ТаблицаФормы = Элементы.Товары;
ДанныеТаблицы = Объект.Товары;
Оповещение = Новый ОписаниеОповещения("РазбитьСтрокуЗавершение", ЭтотОбъект);
РаботаСТабличнымиЧастямиКлиент.РазбитьСтроку(ДанныеТаблицы, ТаблицаФормы, Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура РазбитьСтрокуЗавершение(НоваяСтрока, ДополнительныеПараметры) Экспорт
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
Если НоваяСтрока <> Неопределено Тогда
НоваяСтрока.КодСтроки = 0;
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
ДобавитьДействияОбеспеченияНаКлиенте(СтруктураДействий,"ОбновитьКэшНоменклатура");
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(НоваяСтрока, СтруктураДействий, КэшированныеЗначения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВставитьСтроки(Команда)
КоличествоТоваровДоВставки = Объект.Товары.Количество();
ПолучитьСтрокиИзБуфераОбмена();
ОбеспечениеВДокументахКлиентСервер.ЗаполнитьСлужебныеРеквизиты(Объект.Товары, ДатаОтгрузкиОбязательна, СкладОбязателен);
КоличествоВставленных = Объект.Товары.Количество()-КоличествоТоваровДоВставки;
РаботаСТабличнымиЧастямиКлиент.ОповеститьПользователяОВставкеСтрок(КоличествоВставленных);
КонецПроцедуры
&НаКлиенте
Процедура СкопироватьСтроки(Команда)
Если РаботаСТабличнымиЧастямиКлиент.ВыбранаСтрокаДляВыполненияКоманды(Элементы.Товары) Тогда
СкопироватьСтрокиНаСервере();
РаботаСТабличнымиЧастямиКлиент.ОповеститьПользователяОКопированииСтрок(Элементы.Товары.ВыделенныеСтроки.Количество());
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДополнитьМногооборотнойТарой(Команда)
МногооборотнаяТараКлиент.ПодобратьМногооборотнуюТару(
ЭтаФорма,
"Товары",
"Номенклатура,Характеристика,Количество,,ДатаОтгрузки");
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьТМЦ(Команда)
ЗаполнитьТМЦНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьКатегориюЭксплуатации(Команда)
ДополнительныеПараметры = Новый Структура();
ДополнительныеПараметры.Вставить("ВыделенныеСтроки", Элементы.Товары.ВыделенныеСтроки);
ОписаниеОповещения = Новый ОписаниеОповещения("ЗаполнитьКатегориюЭксплуатацииЗавершение", ЭтотОбъект, ДополнительныеПараметры);
ТМЦВЭксплуатацииКлиент.ЗаполнитьКатегориюЭксплуатации(
Объект.Товары,
Элементы.Товары.ВыделенныеСтроки,
Неопределено,
ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьФизическоеЛицо(Команда)
ТМЦВЭксплуатацииКлиент.ЗаполнитьФизическоеЛицо(Объект.Товары, Элементы.Товары.ВыделенныеСтроки);
Возврат
КонецПроцедуры
#КонецОбласти
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуИнтеграции(Команда)
ИнтеграцияС1СДокументооборотБазоваяФункциональностьКлиент.ВыполнитьПодключаемуюКомандуИнтеграции(Команда, ЭтотОбъект, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)
СобытияФормКлиент.ВыполнитьПереопределяемуюКоманду(ЭтаФорма, Команда);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_СвойстваВыполнитьКоманду(ЭлементИлиКоманда, НавигационнаяСсылка = Неопределено, СтандартнаяОбработка = Неопределено)
УправлениеСвойствамиКлиент.ВыполнитьКоманду(ЭтотОбъект, ЭлементИлиКоманда, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
ПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
&НаКлиенте
Процедура ПровестиИЗакрыть(Команда)
ОбщегоНазначенияУТКлиент.ПровестиИЗакрыть(ЭтаФорма, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ЗакрытьЗаказ(Команда)
Если Модифицированность Или Не Объект.Проведен Тогда
Ответ = Неопределено;
ПоказатьВопрос(Новый ОписаниеОповещения("ЗакрытьЗаказЗавершение", ЭтотОбъект),
НСтр("ru = 'Необходимо провести документ для выполнения операции. Провести документ?'"), РежимДиалогаВопрос.ДаНет);
Возврат;
КонецЕсли;
ЗакрытьЗаказФрагмент();
КонецПроцедуры
&НаКлиенте
Процедура ЗакрытьЗаказФрагмент(Результат = Неопределено, ДополнительныеПараметры = Неопределено) Экспорт
СписокЗаказовКЗакрытию = Новый СписокЗначений;
СписокЗаказовКЗакрытию.Добавить(Объект.Ссылка);
СтруктураЗакрытия = Новый Структура;
СтруктураЗакрытия.Вставить("Заказы", СписокЗаказовКЗакрытию);
СтруктураЗакрытия.Вставить("ДокументИнициатор", Объект.Ссылка);
СтруктураЗакрытия.Вставить("ОтменитьНеотработанныеСтроки", Истина);
СтруктураЗакрытия.Вставить("ЗакрыватьЗаказы", Истина);
ОткрытьФорму("Обработка.ПомощникЗакрытияЗаказов.Форма.ФормаЗакрытия", СтруктураЗакрытия,
ЭтаФорма,,,, Неопределено, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура ЗакрытьЗаказЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
ОписаниеОповещения = Новый ОписаниеОповещения("ЗакрытьЗаказФрагмент", ЭтотОбъект);
ПараметрыЗаписи = Новый Структура;
ПараметрыЗаписи.Вставить("ДействиеПослеЗаписи",ОписаниеОповещения);
ПараметрыЗаписи.Вставить("РежимЗаписи", РежимЗаписиДокумента.Проведение);
Если РезультатВопроса = КодВозвратаДиалога.Нет Тогда
Возврат;
Иначе
Записать(ПараметрыЗаписи);
КонецЕсли;
КонецПроцедуры
#Область СлужебныеПроцедурыИФункции
&НаСервере
Процедура СвойстваВыполнитьОтложеннуюИнициализацию()
УправлениеСвойствами.ЗаполнитьДополнительныеРеквизитыВФорме(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ОбновитьЭлементыДополнительныхРеквизитов()
УправлениеСвойствами.ОбновитьЭлементыДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьЗависимостиДополнительныхРеквизитов()
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПриИзмененииДополнительногоРеквизита(Элемент)
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура УстановитьУсловноеОформление()
УсловноеОформление.Элементы.Очистить();
ОбщегоНазначенияУТ.УстановитьСнятьОтметкуНезаполненного(
УсловноеОформление, "ДатаОтгрузки", "Объект.ДатаОтгрузки", "ДатаОтгрузкиОбязательна");
ОбщегоНазначенияУТ.УстановитьСнятьОтметкуНезаполненного(
УсловноеОформление, "Склад", "Объект.Склад", "СкладОбязателен");
ОбщегоНазначенияУТ.УстановитьСнятьОтметкуНезаполненного(
УсловноеОформление, "ТоварыДатаОтгрузки", "Объект.Товары.ДатаОтгрузки", "Объект.Товары.ДатаОтгрузкиОбязательна");
ОбеспечениеВДокументахСервер.УстановитьУсловноеОформлениеОбособленно(
УсловноеОформление,
Элементы.ТоварыОбособленно,
"Объект.Товары.ВариантОбеспечения",
"Объект.Товары.ТипНоменклатуры");
ОбеспечениеВДокументахСервер.ДоступныеОстаткиДобавитьОформлениеКолонкиДоступно(ЭтотОбъект);
НоменклатураСервер.УстановитьУсловноеОформлениеЕдиницИзмерения(ЭтаФорма);
ОбщегоНазначенияУТ.УстановитьУсловноеОформлениеПриоритета(ЭтотОбъект);
НоменклатураСервер.УстановитьУсловноеОформлениеХарактеристикНоменклатуры(ЭтаФорма);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.Товары.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Отменено");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ЦветТекстаОтмененнойСтрокиДокумента);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.Состояние.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Состояние");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.СостоянияЗаказовКлиентов.Закрыт;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ЗакрытыйДокумент);
НоменклатураСервер.УстановитьУсловноеОформлениеСерийНоменклатуры(ЭтаФорма, "СерииВсегдаВТЧТовары");
НаправленияДеятельностиСервер.УстановитьУсловноеОформлениеНаправленияДеятельности(ЭтаФорма);
#Область ТоварыАналитикаРасходов_Видимость
ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыАналитикаРасходов.Имя);
ОтборЭлемента = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.УчитыватьВВидеГрупповогоОС");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ТекстЗапрещеннойЯчейкиЦвет);
ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<указывается при передаче>'"));
#КонецОбласти
КонецПроцедуры
#Область ПриИзмененииРеквизитов
&НаСервере
Процедура НастроитьЗависимыеЭлементыФормыНаСервере(Знач ИзмененныеРеквизитыИлиЭлемент = "")
Если ТипЗнч(ИзмененныеРеквизитыИлиЭлемент) = Тип("Строка") Тогда
ИзмененныеРеквизиты = ИзмененныеРеквизитыИлиЭлемент;
Иначе
ИзмененныеРеквизиты = ИзмененныеРеквизитыИлиЭлемент.Имя;
КонецЕсли;
СтруктураИзмененныхРеквизитов = Новый Структура(ИзмененныеРеквизиты);
ОбновитьВсе = СтруктураИзмененныхРеквизитов.Количество() = 0;
Если ОбновитьВсе
Или СтруктураИзмененныхРеквизитов.Свойство("ХозяйственнаяОперация") Тогда
УстановитьВидимость(Истина);
АктуализироватьПотреблениеПодДеятельность();
МассивПараметров = Новый Массив;
МассивТиповНоменклатуры = Новый Массив();
МассивТиповНоменклатуры.Добавить(ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Товар"));
МассивТиповНоменклатуры.Добавить(ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.МногооборотнаяТара"));
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.СписаниеТоваровПоТребованию Тогда
МассивТиповНоменклатуры.Добавить(ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Работа"));
КонецЕсли;
ФиксированныйМассивТиповНоменклатуры = Новый ФиксированныйМассив(МассивТиповНоменклатуры);
МассивПараметров.Добавить(Новый ПараметрВыбора("Отбор.ТипНоменклатуры", ФиксированныйМассивТиповНоменклатуры));
Элементы.ТоварыНоменклатура.ПараметрыВыбора = Новый ФиксированныйМассив(МассивПараметров);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура СтатусПриИзмененииСервер()
ПараметрыУказанияСерий = Новый ФиксированнаяСтруктура(НоменклатураСервер.ПараметрыУказанияСерий(Объект, Документы.ЗаказНаВнутреннееПотребление));
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
Если Объект.Статус = Перечисления.СтатусыВнутреннихЗаказов.НаСогласовании Тогда
ОбеспечениеУстановитьДействиеПриИзмененииСтатусаНаСогласование("ОТКАТ_ДЕЙСТВИЯ_ОТГРУЗИТЬ");
КонецЕсли;
УстановитьВидимостьКомандыТоварыОтгрузить();
КонецПроцедуры
&НаСервере
Процедура ОрганизацияПриИзмененииСервер()
АктуализироватьПотреблениеПодДеятельность();
КонецПроцедуры
&НаСервере
Процедура ХозяйственнаяОперацияПриИзмененииСервер(ОчиститьТовары)
ИзмененныеРеквизиты = "ХозяйственнаяОперация";
Если ОчиститьТовары Тогда
Объект.Товары.Очистить();
КонецЕсли;
ПараметрыВыбораСтатейИАналитик = Документы.ЗаказНаВнутреннееПотребление.ПараметрыВыбораСтатейИАналитик(Объект.ХозяйственнаяОперация);
ДоходыИРасходыСервер.ПриИзмененииПараметровВыбораСтатей(ЭтотОбъект, ПараметрыВыбораСтатейИАналитик);
НастроитьПанельНавигации();
НастроитьЗависимыеЭлементыФормыНаСервере(ИзмененныеРеквизиты);
КонецПроцедуры
&НаСервере
Процедура СкладПриИзмененииСервер()
ПодготовитьЗаполнитьУстановитьВидимостьСерий();
АктуализироватьПотреблениеПодДеятельность();
ОбеспечениеВДокументахСервер.ПриИзмененииРеквизитаДокумента(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура НаправлениеДеятельностиПриИзмененииНаСервере()
НаправленияДеятельностиСервер.ПриИзмененииНаправленияДеятельности(ЭтотОбъект);
ОбеспечениеВДокументахСервер.ПриИзмененииРеквизитаДокумента(ЭтотОбъект);
АктуализироватьПотреблениеПодДеятельность();
КонецПроцедуры
&НаСервере
Процедура АктуализироватьПотреблениеПодДеятельность(Проверить = Истина)
ПараметрыЗаполнения = Документы.ЗаказНаВнутреннееПотребление.ПараметрыЗаполненияВидаДеятельностиНДС(Объект);
Если Проверить Тогда
УчетНДСУП.ЗаполнитьВидДеятельностиНДС(
Объект.ПотреблениеДляДеятельности,
ПараметрыЗаполнения,
УчетНДСКэшированныеЗначенияПараметров);
КонецЕсли;
УчетНДСУП.ЗаполнитьСписокВыбораВидаДеятельностиНДС(
Элементы.ПотреблениеДляДеятельности,
Объект.ПотреблениеДляДеятельности,
ПараметрыЗаполнения,
УчетНДСКэшированныеЗначенияПараметров);
КонецПроцедуры
#КонецОбласти
#Область ПодборыИОбработкаПроверкиКоличества
&НаСервере
Процедура ОбработкаВыбораПодборНаСервере(ВыбранноеЗначение)
ТаблицаТоваров = ПолучитьИзВременногоХранилища(ВыбранноеЗначение.АдресТоваровВХранилище);
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий);
ДобавитьДействияОбеспеченияНаСервере(СтруктураДействий, "СкладОбязателен,ДатаОтгрузкиОбязательна");
ДоходыИРасходыКлиентСервер.ВставитьДействиеЗаполнитьСтатьюАналитикуРасходовНоменклатуры(
СтруктураДействий,
ЭтотОбъект,
Объект.ХозяйственнаяОперация,
Объект.Организация,
Объект.Подразделение);
НачалоДня = НачалоДня(ТекущаяДатаСеанса());
ОбрабатываемыеСтроки = Новый Массив;
ДатыОтгрузки = Новый Соответствие;
Для каждого СтрокаТовара Из ТаблицаТоваров Цикл
ТекущаяСтрока = Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(ТекущаяСтрока, СтрокаТовара,
"Номенклатура,Характеристика,ХарактеристикиИспользуются,Упаковка,ДатаОтгрузки,КоличествоУпаковок,
|ВариантОбеспечения,Обособленно,Серия");
ПриДобавленииСтрокиТоваровНаСервере(ТекущаяСтрока);
ДатыОтгрузки.Вставить(ТекущаяСтрока, СтрокаТовара.ДатаОтгрузки);
ОбрабатываемыеСтроки.Добавить(ТекущаяСтрока);
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.Товары,
КэшированныеЗначения);
Для каждого ТекущаяСтрока Из ОбрабатываемыеСтроки Цикл
ТекущаяСтрока.ДатаОтгрузки = ОбеспечениеВДокументахСервер.ДатаОтгрузкиОбработкаВыбораПодбор(
ДатыОтгрузки.Получить(ТекущаяСтрока),
ТекущаяСтрока.ВариантОбеспечения,
НачалоДня);
КонецЦикла;
ОбеспечениеВДокументахСервер.АктуализироватьДатуОтгрузкиОднойДатой(
Объект.НеОтгружатьЧастями,
Объект.ДатаОтгрузки,
Объект.Товары,
"ДатаОтгрузки");
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
ОбновитьКолонкуДоступноСервер();
МногооборотнаяТараСервер.ОбновитьСостояниеЗаполненияМногооборотнойТары(Объект.СостояниеЗаполненияМногооборотнойТары);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий)
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц");
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСлужебныеРеквизитыПоНоменклатуре()
СтруктураДействий = Новый Структура();
СтруктураДействий.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются", Новый Структура("Номенклатура", "ХарактеристикиИспользуются"));
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(Объект.Товары, СтруктураДействий);
КонецПроцедуры
#КонецОбласти
#Область ШтрихкодыИТорговоеОборудование
&НаКлиенте
Процедура ОбработатьШтрихкоды(ДанныеШтрихкодов)
СтруктураДействийСДобавленнымиСтроками = Новый Структура;
ДоходыИРасходыКлиентСервер.ВставитьДействиеЗаполнитьСтатьюАналитикуРасходовНоменклатуры(
СтруктураДействийСДобавленнымиСтроками,
ЭтотОбъект,
Объект.ХозяйственнаяОперация,
Объект.Организация,
Объект.Подразделение);
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействийСДобавленнымиСтроками);
СтруктураДействийСИзмененнымиСтроками = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействийСИзмененнымиСтроками);
СтруктураДействий = ШтрихкодированиеНоменклатурыКлиент.ПараметрыОбработкиШтрихкодов();
СтруктураДействий.Штрихкоды = ДанныеШтрихкодов;
СтруктураДействий.СтруктураДействийСДобавленнымиСтроками = СтруктураДействийСДобавленнымиСтроками;
СтруктураДействий.СтруктураДействийСИзмененнымиСтроками = СтруктураДействийСИзмененнымиСтроками;
СтруктураДействий.ПараметрыУказанияСерий = Неопределено;
Если Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.СписаниеТоваровПоТребованию") Тогда
СтруктураДействий.ТолькоТоварыИРабота = Истина;
Иначе
СтруктураДействий.ТолькоТовары = Истина;
КонецЕсли;
ОбработатьШтрихкодыСервер(СтруктураДействий, КэшированныеЗначения);
ОбеспечениеВДокументахКлиентСервер.ЗаполнитьСлужебныеРеквизиты(Объект.Товары, ДатаОтгрузкиОбязательна, СкладОбязателен);
ШтрихкодированиеНоменклатурыКлиент.ОбработатьНеизвестныеШтрихкоды(СтруктураДействий,КэшированныеЗначения,ЭтаФорма);
Если ШтрихкодированиеНоменклатурыКлиент.НужноОткрытьФормуУказанияСерийПослеОбработкиШтрихкодов(СтруктураДействий) Тогда
ТекущиеДанныеИдентификатор = СтруктураДействий.МассивСтрокССериями[0];
ПодключитьОбработчикОжидания("ОткрытьПодборСерийПриСканированииШтрихкодаНоменклатуры",0.1,Истина);
КонецЕсли;
Если СтруктураДействий.ТекущаяСтрока <> Неопределено Тогда
Элементы.Товары.ТекущаяСтрока = СтруктураДействий.ТекущаяСтрока;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбработатьШтрихкодыСервер(СтруктураПараметровДействия, КэшированныеЗначения)
ДобавитьДействияОбеспеченияНаСервере(
СтруктураПараметровДействия.СтруктураДействийСДобавленнымиСтроками,
"ВариантОбеспечения,СкладОбязателен,ДатаОтгрузкиОбязательна");
ШтрихкодированиеНоменклатурыСервер.ОбработатьШтрихкоды(ЭтаФорма,Объект,СтруктураПараметровДействия,КэшированныеЗначения);
ОбеспечениеВДокументахКлиентСервер.УдалитьДействияОбеспечения(СтруктураПараметровДействия.СтруктураДействийСДобавленнымиСтроками);
ОбновитьКолонкуДоступноСервер();
КонецПроцедуры
#КонецОбласти
#Область Серии
&НаСервере
Процедура ПодготовитьЗаполнитьУстановитьВидимостьСерий()
ПараметрыУказанияСерий = Новый ФиксированнаяСтруктура(НоменклатураСервер.ПараметрыУказанияСерий(Объект, Документы.ЗаказНаВнутреннееПотребление));
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
УстановитьПараметрыФункциональныхОпцийФормы(Новый Структура("Склад",Объект.Склад));
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьПодборСерий(Текст = "", ТекущиеДанные = Неопределено)
ПараметрыФормы = ПараметрыФормыЗапросаКоличестваИСерий(ОбеспечениеВДокументахКлиентСервер.РежимПодборСерий());
Если ПараметрыФормы <> Неопределено Тогда
ОткрытьФорму(
"Обработка.ЗапросКоличестваИСерий.Форма",
ПараметрыФормы,
ЭтотОбъект,
,
,
,
Новый ОписаниеОповещения("ОбработатьВыборСкладаИСерии", ЭтотОбъект, ПараметрыФормы));
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьПодборСерийПриСканированииШтрихкодаНоменклатуры()
Если ТекущиеДанныеИдентификатор = Неопределено Тогда
Возврат;
КонецЕсли;
ТекущиеДанные = Объект.Товары.НайтиПоИдентификатору(ТекущиеДанныеИдентификатор);
ОткрытьПодборСерий(,ТекущиеДанные);
КонецПроцедуры
#КонецОбласти
#Область Прочее
&НаКлиенте
Процедура Подключаемый_ЗакрытьФорму()
Закрыть();
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимость(ОчищатьСтатьи = Ложь)
Перем МассивВсехРеквизитов;
Перем МассивРеквизитовОперации;
Перем МассивВсехЭлементов;
Перем МассивЭлементовОперации;
Документы.ЗаказНаВнутреннееПотребление.ЗаполнитьИменаРеквизитовПоХозяйственнойОперации(
Объект.ХозяйственнаяОперация,
МассивВсехРеквизитов,
МассивРеквизитовОперации);
ДенежныеСредстваСервер.УстановитьВидимостьЭлементовПоМассиву(
Элементы,
МассивВсехРеквизитов,
МассивРеквизитовОперации);
Документы.ЗаказНаВнутреннееПотребление.ЗаполнитьИменаЭлементовПоХозяйственнойОперации(
Объект.ХозяйственнаяОперация,
МассивВсехЭлементов,
МассивЭлементовОперации);
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(
Элементы,
МассивВсехЭлементов,
"Видимость",
Ложь);
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(
Элементы,
МассивЭлементовОперации,
"Видимость",
Истина);
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьОбеспечения()
ЕстьПраво = ОбеспечениеВДокументахСервер.ЕстьПравоПросмотраГиперссылкиСостоянияОбеспечения();
Элементы.СтраницыГиперссылкаСостояниеОбеспечения.Видимость = ЕстьПраво;
Если Не ПравоДоступа("Добавление", Метаданные.Документы.КорректировкаНазначенияТоваров)
Или Не ПолучитьФункциональнуюОпцию("ИспользоватьОбособленноеОбеспечениеЗаказов") Тогда
Элементы.ТоварыСоздатьКорректировкуНазначенияСнятиеРезерва.Видимость = Ложь;
Элементы.ТоварыСоздатьКорректировкуНазначенияРезервирование.Видимость = Ложь;
КонецЕсли;
ОбеспечениеВДокументахСервер.НастроитьГиперссылкиСостояниеОбеспечения(ЭтотОбъект);
Элементы.ДатаОтгрузки.Подсказка = ОбеспечениеВДокументахСервер.ПодсказкаДатаОтгрузки();
КонецПроцедуры
&НаКлиенте
Процедура ОповеститьОПроведенииДокумента(ПараметрыЗаписи)
ПараметрыОповещения = Новый Структура;
ПараметрыОповещения.Вставить("РежимЗаписи", ПараметрыЗаписи.РежимЗаписи);
ПараметрыОповещения.Вставить("ЕстьРаспоряжение", Истина);
ПараметрыОповещения.Вставить("КлючиДокументаОповещение", РаботаСЖурналамиДокументовКлиент.ПолучитьПараметрыКлючаПоДокументу(
Объект.Ссылка, Объект.Дата, Объект.ХозяйственнаяОперация));
Оповестить("Запись_ЗаказНаВнутреннееПотребление", ПараметрыОповещения, Объект.Ссылка);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьМногооборотнуюТаруИзХранилищаСервер(АдресТарыВХранилище)
СтруктураДействийИзмененныеСтроки = Новый Структура;
СтруктураДействийИзмененныеСтроки.Вставить("ПересчитатьКоличествоУпаковок");
СтруктураДействийДобавленныеСтроки = Новый Структура;
СтруктураДействийДобавленныеСтроки.Вставить("ПересчитатьКоличествоУпаковок");
ДобавитьДействияОбеспеченияНаСервере(СтруктураДействийДобавленныеСтроки,
"ВариантОбеспечения,СкладОбязателен,ДатаОтгрузкиОбязательна");
ДоходыИРасходыКлиентСервер.ВставитьДействиеЗаполнитьСтатьюАналитикуРасходовНоменклатуры(
СтруктураДействийДобавленныеСтроки,
ЭтотОбъект,
Объект.ХозяйственнаяОперация,
Объект.Организация,
Объект.Подразделение);
МногооборотнаяТараСервер.ЗаполнитьМногооборотнуюТаруИзХранилища(
Объект,
АдресТарыВХранилище,
"Товары",
"Номенклатура,Характеристика,,ДатаОтгрузки",
СтруктураДействийИзмененныеСтроки,
СтруктураДействийДобавленныеСтроки);
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
ОбновитьКолонкуДоступноСервер();
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииСозданииНаСервере()
ПараметрыУказанияСерий = Новый ФиксированнаяСтруктура(НоменклатураСервер.ПараметрыУказанияСерий(Объект, Документы.ЗаказНаВнутреннееПотребление));
УстановитьПараметрыФункциональныхОпцийФормы(Новый Структура("Склад",Объект.Склад));
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
Элементы.ГруппаОснование.Видимость = ЗначениеЗаполнено(Объект.ДокументОснование);
УстановитьВидимость(Ложь);
УстановитьВидимостьЭлементовФормыДатОтгрузки();
УстановитьВидимостьОбеспечения();
УстановитьВидимостьКомандыТоварыОтгрузить();
ОбновитьСостояниеСервер();
НаправленияДеятельностиСервер.ПриЧтенииСозданииНаСервере(ЭтотОбъект);
АктуализироватьПотреблениеПодДеятельность(Ложь);
ЗаполнитьСлужебныеРеквизитыФормыДокумента();
РаботаСТабличнымиЧастями.ИнициализироватьКэшСтрок(Элементы.Товары);
НастроитьПанельНавигации();
КонецПроцедуры
&НаСервере
Процедура ПриДобавленииСтрокиТоваровНаСервере(Строка)
ДоходыИРасходыКлиентСервер.ПриДобавленииСтрокиВТаблицу(ЭтотОбъект, Строка, "Объект.Товары");
КонецПроцедуры
&НаКлиенте
Процедура ПриДобавленииСтрокиТоваровНаКлиенте(Строка)
ДоходыИРасходыКлиентСервер.ПриДобавленииСтрокиВТаблицу(ЭтотОбъект, Строка, "Объект.Товары");
КонецПроцедуры
&НаКлиенте
Процедура СоздатьКорректировкуНазначенияЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
Ответ = РезультатВопроса;
Если Ответ = КодВозвратаДиалога.Нет Тогда
Возврат;
Иначе
ОчиститьСообщения();
Записать(Новый Структура("РежимЗаписи,СозданиеКорректировки", РежимЗаписиДокумента.Проведение, ДополнительныеПараметры));
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииСтрок(ИзмененныеСтроки)
СтруктураДействий = Новый Структура;
ДобавитьДействияОбеспеченияНаСервере(СтруктураДействий, "ВариантОбеспечения,СкладОбязателен,ДатаОтгрузкиОбязательна");
ДоходыИРасходыКлиентСервер.ВставитьДействиеЗаполнитьСтатьюАналитикуРасходовНоменклатуры(
СтруктураДействий,
ЭтотОбъект,
Объект.ХозяйственнаяОперация,
Объект.Организация,
Объект.Подразделение);
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
Для Каждого НоваяСтрока Из ИзмененныеСтроки Цикл
ПриДобавленииСтрокиТоваровНаСервере(НоваяСтрока);
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ИзмененныеСтроки,
СтруктураДействий,
Объект.Товары,
КэшированныеЗначения);
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
ЗаполнитьСлужебныеРеквизитыФормыДокумента();
ОбновитьКолонкуДоступноСервер();
КонецПроцедуры
&НаСервере
Процедура УстановитьПараметрыВыбора()
#Область ТоварыСтатьяРасходов
НовыеСвязиПараметровВыбора = Новый Массив;
НоваяСвязь = Новый СвязьПараметраВыбора("УчитыватьВВидеГрупповогоОС", "Элементы.Товары.ТекущиеДанные.УчитыватьВВидеГрупповогоОС", РежимИзмененияСвязанногоЗначения.НеИзменять);
НовыеСвязиПараметровВыбора.Добавить(НоваяСвязь);
Элементы.ТоварыСтатьяРасходов.СвязиПараметровВыбора = Новый ФиксированныйМассив(НовыеСвязиПараметровВыбора);
#КонецОбласти
#Область ТоварыАналитикаРасходов
НовыеСвязиПараметровВыбора = Новый Массив;
НоваяСвязь = Новый СвязьПараметраВыбора("Отбор.Владелец", "Элементы.Товары.ТекущиеДанные.СтатьяРасходов", РежимИзмененияСвязанногоЗначения.Очищать);
НовыеСвязиПараметровВыбора.Добавить(НоваяСвязь);
НоваяСвязь = Новый СвязьПараметраВыбора("УчитыватьВВидеГрупповогоОС", "Элементы.Товары.ТекущиеДанные.УчитыватьВВидеГрупповогоОС", РежимИзмененияСвязанногоЗначения.НеИзменять);
НовыеСвязиПараметровВыбора.Добавить(НоваяСвязь);
Элементы.ТоварыАналитикаРасходов.СвязиПараметровВыбора = Новый ФиксированныйМассив(НовыеСвязиПараметровВыбора);
#КонецОбласти
КонецПроцедуры
&НаСервере
Процедура НастроитьПанельНавигации()
СтруктураНастроек = Новый Структура;
СтруктураНастроек.Вставить("ИспользоватьМатериалыВЭксплуатации",
Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаВЭксплуатацию
ИЛИ Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратИзЭксплуатации);
ОбщегоНазначенияУТ.НастроитьФормуПоПараметрам(ЭтотОбъект, СтруктураНастроек);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьТМЦНаСервере()
Объект.Товары.Очистить();
Если ПолучитьФункциональнуюОпцию("УправлениеТорговлей") Тогда
ТекстЗапроса =
"ВЫБРАТЬ
| ПартииТМЦВЭксплуатации.Ссылка
|ПОМЕСТИТЬ Партии
|ИЗ
| Справочник.ПартииТМЦВЭксплуатации КАК ПартииТМЦВЭксплуатации
|ГДЕ
| НЕ ПартииТМЦВЭксплуатации.ПометкаУдаления
| И КОНЕЦПЕРИОДА(ПартииТМЦВЭксплуатации.ДатаЗавершенияЭксплуатации, МЕСЯЦ) = &Период
|;
|
|
|ВЫБРАТЬ
| ТаблицаТовары.Номенклатура,
| ТаблицаТовары.Характеристика,
| ТаблицаТовары.ФизическоеЛицо,
| ТаблицаТовары.КатегорияЭксплуатации КАК КатегорияЭксплуатации,
| ТаблицаТовары.Количество КАК Количество,
| ТаблицаТовары.Количество КАК КоличествоУпаковок
|ИЗ
| Документ.ВнутреннееПотребление.Товары КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка.Организация = &Организация
| И ТаблицаТовары.Ссылка.Подразделение = &Подразделение
| И ТаблицаТовары.Ссылка.Проведен
| И ТаблицаТовары.Партия В
| (ВЫБРАТЬ
| Партии.Ссылка
| ИЗ
| Партии КАК Партии)";
Иначе
ТекстЗапроса =
"ВЫБРАТЬ
| ПартииТМЦВЭксплуатации.Ссылка
|ПОМЕСТИТЬ Партии
|ИЗ
| Справочник.ПартииТМЦВЭксплуатации КАК ПартииТМЦВЭксплуатации
|ГДЕ
| НЕ ПартииТМЦВЭксплуатации.ПометкаУдаления
| И КОНЕЦПЕРИОДА(ПартииТМЦВЭксплуатации.ДатаЗавершенияЭксплуатации, МЕСЯЦ) = &Период
|;
|
|
|ВЫБРАТЬ
| ТМЦВЭксплуатации.Номенклатура,
| ТМЦВЭксплуатации.Характеристика,
| ТМЦВЭксплуатации.ФизическоеЛицо,
| ТМЦВЭксплуатации.Партия.КатегорияЭксплуатации КАК КатегорияЭксплуатации,
| ТМЦВЭксплуатации.КоличествоОстаток КАК Количество,
| ТМЦВЭксплуатации.КоличествоОстаток КАК КоличествоУпаковок
|ИЗ
| РегистрНакопления.ТМЦВЭксплуатации.Остатки(
| &Период,
| Организация = &Организация
| И Подразделение = &Подразделение
| И Партия В
| (ВЫБРАТЬ
| Партии.Ссылка
| ИЗ
| Партии КАК Партии)) КАК ТМЦВЭксплуатации
|ГДЕ
| ТМЦВЭксплуатации.КоличествоОстаток > 0";
КонецЕсли;
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("Период", КонецМесяца(?(ЗначениеЗаполнено(Объект.Дата), Объект.Дата, ТекущаяДатаСеанса())));
Запрос.УстановитьПараметр("Организация", Объект.Организация);
Запрос.УстановитьПараметр("Подразделение", Объект.Подразделение);
УстановитьПривилегированныйРежим(Истина);
Выборка = Запрос.Выполнить().Выбрать();
УстановитьПривилегированныйРежим(Ложь);
ИзмененныеСтроки = Новый Массив;
Пока Выборка.Следующий() Цикл
НоваяСтрока = Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, Выборка);
ИзмененныеСтроки.Добавить(НоваяСтрока);
КонецЦикла;
ПриИзмененииСтрок(ИзмененныеСтроки);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьКатегориюЭксплуатацииЗавершение(Результат, ДополнительныеПараметры) Экспорт
ВыделенныеСтроки = ДополнительныеПараметры.ВыделенныеСтроки;
Для каждого ИдентификаторСтроки Из ВыделенныеСтроки Цикл
ТекущаяСтрока = Объект.Товары.НайтиПоИдентификатору(ИдентификаторСтроки);
ПриИзмененииКатегорииЭксплуатации(ТекущаяСтрока);
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ПриИзмененииКатегорииЭксплуатации(ТекущаяСтрока)
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакиКатегорииЭксплуатации");
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
ДоходыИРасходыКлиентСервер.СтатьяПриИзменении(ЭтотОбъект, Элементы.ТоварыСтатьяРасходов);
Если НЕ ТекущаяСтрока.УчетПоФизЛицам Тогда
ТекущаяСтрока.ФизическоеЛицо = ПредопределенноеЗначение("Справочник.ФизическиеЛица.ПустаяСсылка");
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбновитьСостояниеСервер()
Документы.ЗаказНаВнутреннееПотребление.РассчитатьСостояние(Объект.Ссылка, ЭтотОбъект);
Элементы.Состояние.ГиперссылкаЯчейки = ПравоДоступа("Просмотр", Метаданные.Отчеты.СостояниеВыполненияДокументов);
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьСостояниеКлиент(ПроверитьЗаданияКОтражениюСостоянияЗаказов = Ложь, СостояниеЗаказа = Неопределено)
СостояниеЗаказа = Новый Структура();
СостояниеЗаказа.Вставить("Состояние", Неопределено);
Если ПроверитьЗаданияКОтражениюСостоянияЗаказов Тогда
СостоянияДокументовКлиент.ДополнитьСтруктуруСостоянияЗаказа(СостояниеЗаказа);
КонецЕсли;
ЗаполнитьЗначенияСвойств(СостояниеЗаказа, ЭтотОбъект);
РассчитатьСостояниеЗаказа(
Объект.Ссылка,
СостояниеЗаказа,
Элементы.Состояние.Гиперссылка,
ПроверитьЗаданияКОтражениюСостоянияЗаказов);
ЗаполнитьЗначенияСвойств(ЭтотОбъект, СостояниеЗаказа);
КонецПроцедуры
&НаСервереБезКонтекста
Процедура РассчитатьСостояниеЗаказа(
Ссылка,
СостояниеЗаказа,
Гиперссылка,
ПроверитьЗаданияКОтражениюСостоянияЗаказов = Ложь)
Документы.ЗаказНаВнутреннееПотребление.РассчитатьСостояние(
Ссылка,
СостояниеЗаказа,
ПроверитьЗаданияКОтражениюСостоянияЗаказов);
Гиперссылка = ПравоДоступа("Просмотр", Метаданные.Отчеты.СостояниеВыполненияДокументов);
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьКомандыТоварыОтгрузить()
СтатусНаСогласовании = Объект.Статус = Перечисления.СтатусыВнутреннихЗаказов.НаСогласовании;
Элементы.ТоварыОтгрузить.Видимость = НЕ СтатусНаСогласовании;
Элементы.ТоварыКонтекстноеМенюОтгрузить.Видимость = НЕ СтатусНаСогласовании;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПроверитьЗаданияКОтражениюСостоянияЗаказов()
Если СостоянияДокументовКлиент.ПроверкаЗаданияКОтражениюСостоянияЗаказовВыполняется(ЭтотОбъект) Тогда
СостояниеЗаказа = Неопределено;
ОбновитьСостояниеКлиент(Истина, СостояниеЗаказа);
СостоянияДокументовКлиент.ОбработатьРезультатПроверкиЗаданияКОтражениюСостоянияЗаказов(
ЭтотОбъект,
СостояниеЗаказа.ЕстьЗаданияКОтражениюСостоянияЗаказов,
"Подключаемый_ПроверитьЗаданияКОтражениюСостоянияЗаказов");
ИначеЕсли СостоянияДокументовКлиент.СтартПроверкиЗаданияКОтражениюСостоянияЗаказов(ЭтотОбъект) Тогда
СостоянияДокументовКлиент.УстановитьПризнакПроверкаЗаданияКОтражениюСостоянияЗаказовВыполняется(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
#Область РаботаСБуферомОбмена
&НаСервере
Процедура СкопироватьСтрокиНаСервере()
РаботаСТабличнымиЧастями.СкопироватьСтрокиВБуферОбмена(Объект.Товары, Элементы.Товары.ВыделенныеСтроки);
КонецПроцедуры
&НаСервере
Процедура ПолучитьСтрокиИзБуфераОбмена()
ПараметрыОтбора = Новый Соответствие;
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.СписаниеТоваровПоТребованию Тогда
ПараметрыОтбора.Вставить("Номенклатура.ТипНоменклатуры", НоменклатураКлиентСервер.ОтборПоТоваруМногооборотнойТареРаботе(Ложь));
Иначе
ПараметрыОтбора.Вставить("Номенклатура.ТипНоменклатуры", НоменклатураКлиентСервер.ОтборПоТоваруМногооборотнойТаре(Ложь));
КонецЕсли;
Колонки = "Номенклатура,Характеристика,Упаковка,КоличествоУпаковок,ГруппаПродукции,ДатаОтгрузки,
|ФизическоеЛицо,КатегорияЭксплуатации";
ТаблицаТоваров = РаботаСТабличнымиЧастями.СтрокиИзБуфераОбмена(ПараметрыОтбора, Колонки);
Если Не ЗначениеЗаполнено(ТаблицаТоваров) Тогда
Возврат;
КонецЕсли;
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий);
ДоходыИРасходыКлиентСервер.ВставитьДействиеЗаполнитьСтатьюАналитикуРасходовНоменклатуры(
СтруктураДействий,
ЭтотОбъект,
Объект.ХозяйственнаяОперация,
Объект.Организация,
Объект.Подразделение);
ДобавитьДействияОбеспеченияНаСервере(СтруктураДействий, "ВариантОбеспечения,СкладОбязателен,ДатаОтгрузкиОбязательна");
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
ОбрабатываемыеСтроки = Новый Массив();
Для каждого СтрокаТовара Из ТаблицаТоваров Цикл
ТекущаяСтрока = Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(ТекущаяСтрока, СтрокаТовара);
ПриДобавленииСтрокиТоваровНаСервере(ТекущаяСтрока);
Если Объект.НеОтгружатьЧастями Тогда
ТекущаяСтрока.ДатаОтгрузки = Объект.ДатаОтгрузки;
КонецЕсли;
ОбрабатываемыеСтроки.Добавить(ТекущаяСтрока);
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.Товары,
КэшированныеЗначения);
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
ОбновитьКолонкуДоступноСервер();
МногооборотнаяТараСервер.ОбновитьСостояниеЗаполненияМногооборотнойТары(Объект.СостояниеЗаполненияМногооборотнойТары);
КонецПроцедуры
&НаСервере
Процедура УстановитьДоступностьКомандБуфераОбмена()
МассивЭлементов = Новый Массив();
МассивЭлементов.Добавить("ТоварыВставитьСтроки");
МассивЭлементов.Добавить("ТоварыКонтекстноеМенюВставитьСтроки");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, МассивЭлементов, "Доступность",
РаботаСТабличнымиЧастями.ЕстьСтрокиВБуфереОбмена());
КонецПроцедуры
&НаКлиенте
Процедура УстановитьДоступностьКомандБуфераОбменаНаКлиенте()
МассивЭлементов = Новый Массив();
МассивЭлементов.Добавить("ТоварыВставитьСтроки");
МассивЭлементов.Добавить("ТоварыКонтекстноеМенюВставитьСтроки");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, МассивЭлементов, "Доступность", Истина);
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#КонецОбласти
#Область Обеспечение
&НаКлиенте
Процедура ВключитьОбособленноеОбеспечение(Команда)
ОбеспечениеУстановитьДействие("ФЛАГ_ОБОСОБЛЕННО");
КонецПроцедуры
&НаКлиенте
Процедура ВыключитьОбособленноеОбеспечение(Команда)
ОбеспечениеУстановитьДействие("ФЛАГ_НЕОБОСОБЛЕННО");
КонецПроцедуры
&НаКлиенте
Процедура КОбеспечению(Команда)
ОбеспечениеУстановитьДействиеСВопросом("ДЕЙСТВИЕ_КОБЕСПЕЧЕНИЮ");
КонецПроцедуры
&НаКлиенте
Процедура РезервироватьПоМереПоступления(Команда)
ОбеспечениеУстановитьДействие("ДЕЙСТВИЕ_РЕЗЕРВИРОВАТЬПОМЕРЕПОСТУПЛЕНИЯ");
КонецПроцедуры
&НаКлиенте
Процедура НеОбеспечивать(Команда)
ОбеспечениеУстановитьДействиеСВопросом("ДЕЙСТВИЕ_НЕОБЕСПЕЧИВАТЬ");
КонецПроцедуры
&НаКлиенте
Процедура Отгрузить(Команда)
ОбеспечениеУстановитьДействиеСВопросом("ДЕЙСТВИЕ_ОТГРУЗИТЬ");
КонецПроцедуры
&НаКлиенте
Процедура Резервировать(Команда)
ОбеспечениеУстановитьДействиеСВопросом("ДЕЙСТВИЕ_РЕЗЕРВИРОВАТЬ");
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьДатуОтгрузки(Команда)
МассивВыделенныхСтрок = Элементы.Товары.ВыделенныеСтроки;
Если МассивВыделенныхСтрок.Количество() > 0 Тогда
ДатаОтгрузки = Объект.ДатаОтгрузки;
Оповещение = Новый ОписаниеОповещения("ЗаполнитьДатуОтгрузкиЗавершение", ЭтотОбъект, Новый Структура("МассивВыделенныхСтрок", МассивВыделенныхСтрок));
ОбщегоНазначенияУТКлиент.ВвестиДатуСКонтролемПустогоЗначения(ДатаОтгрузки, НСтр("ru='Введите дату отгрузки'"), ЧастиДаты.Дата, Оповещение);
Иначе
ТекстПредупреждения = НСтр("ru='В документе не выбраны строки для заполнения. Дата отгрузки не будет заполнена.'");
ПоказатьПредупреждение(Неопределено, ТекстПредупреждения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьДатуОтгрузкиЗавершение(ВыбраннаяДата, ДополнительныеПараметры) Экспорт
Если ВыбраннаяДата <> Неопределено И ЗначениеЗаполнено(ВыбраннаяДата) Тогда
ДатаОтгрузки = ВыбраннаяДата;
МассивВыделенныхСтрок = ДополнительныеПараметры.МассивВыделенныхСтрок;
ЗаполнитьДатуОтгрузкиСервер(ДатаОтгрузки, МассивВыделенныхСтрок);
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияДатОтгрузки(ДатаОтгрузки, Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СоздатьКорректировкуНазначенияРезервирование(Команда)
ОценкаПроизводительностиКлиент.НачатьЗамерВремени(Истина,
"Документ.ЗаказНаВнутреннееПотребление.ФормаДокумента.Команда.СоздатьКорректировкуНазначенияРезервирование");
ОбъектыОснований = Новый Массив();
ОбъектыОснований.Добавить(Объект.Ссылка);
ОписаниеКоманды = Новый Структура();
ОписаниеКоманды.Вставить("ОбъектыОснований", ОбъектыОснований);
Если Не Объект.Проведен Или Модифицированность Тогда
ДополнительныеПараметры = Новый Структура();
ДополнительныеПараметры.Вставить("Резервирование", Истина);
ДополнительныеПараметры.Вставить("ОписаниеКоманды", ОписаниеКоманды);
ТекстВопроса = НСтр("ru = 'Для резервирования под назначение необходимо предварительно провести документ. Выполнить проведение документа и продолжить?'");
ПоказатьВопрос(
Новый ОписаниеОповещения("СоздатьКорректировкуНазначенияЗавершение", ЭтотОбъект, ДополнительныеПараметры),
ТекстВопроса, РежимДиалогаВопрос.ДаНет);
Иначе
ОписаниеКоманды.Вставить("Форма", ЭтотОбъект);
ОбеспечениеВДокументахКлиент.ОткрытьЗаполнениеКорректировкиНазначения(
Истина,
Объект.Ссылка,
ОписаниеКоманды);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СоздатьКорректировкуНазначенияСнятиеРезерва(Команда)
ОценкаПроизводительностиКлиент.НачатьЗамерВремени(Истина,
"Документ.ЗаказНаВнутреннееПотребление.ФормаДокумента.Команда.СоздатьКорректировкуНазначенияСнятиеРезерва");
ОбъектыОснований = Новый Массив();
ОбъектыОснований.Добавить(Объект.Ссылка);
ОписаниеКоманды = Новый Структура();
ОписаниеКоманды.Вставить("ОбъектыОснований", ОбъектыОснований);
Если Не Объект.Проведен Или Модифицированность Тогда
ДополнительныеПараметры = Новый Структура();
ДополнительныеПараметры.Вставить("Резервирование", Ложь);
ДополнительныеПараметры.Вставить("ОписаниеКоманды", ОписаниеКоманды);
ТекстВопроса = НСтр("ru = 'Для снятия резерва под назначение необходимо предварительно провести документ. Выполнить проведение документа и продолжить?'");
ПоказатьВопрос(
Новый ОписаниеОповещения("СоздатьКорректировкуНазначенияЗавершение", ЭтотОбъект, ДополнительныеПараметры),
ТекстВопроса, РежимДиалогаВопрос.ДаНет);
Иначе
ОписаниеКоманды.Вставить("Форма", ЭтотОбъект);
ОбеспечениеВДокументахКлиент.ОткрытьЗаполнениеКорректировкиНазначения(
Ложь,
Объект.Ссылка,
ОписаниеКоманды);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ДатыОтгрузки
&НаСервере
Процедура УстановитьВидимостьЭлементовФормыДатОтгрузки()
Элементы.ТоварыДатаОтгрузки.Видимость = Не Объект.НеОтгружатьЧастями;
Элементы.ДатаОтгрузки.Видимость = Объект.НеОтгружатьЧастями;
Элементы.ЗаполнитьДатуОтгрузки.Видимость = Не Объект.НеОтгружатьЧастями;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьДатуОтгрузкиСервер(ДатаОтгрузки, МассивВыделенныхСтрок)
ОбеспечениеВДокументахСервер.ЗаполнитьРеквизитВКоллекции(Объект.Товары, "ДатаОтгрузки", ДатаОтгрузки, МассивВыделенныхСтрок);
КонецПроцедуры
&НаСервере
Процедура НеОтгружатьЧастямиПриИзмененииСервер()
Если Объект.НеОтгружатьЧастями Тогда
Объект.ДатаОтгрузки = ОбеспечениеВДокументахСервер.МаксимальноеЗначениеВКоллекции(Объект.Товары, "ДатаОтгрузки", '00010101');
ОбеспечениеВДокументахСервер.ЗаполнитьРеквизитВКоллекции(Объект.Товары, "ДатаОтгрузки", Объект.ДатаОтгрузки);
КонецЕсли;
УстановитьВидимостьЭлементовФормыДатОтгрузки();
КонецПроцедуры
#КонецОбласти
#Область ОтменаСтрок
&НаКлиенте
Процедура ОтменитьНеотработанные(Команда)
ОценкаПроизводительностиКлиент.НачатьЗамерВремени(Истина,
"Документ.ЗаказНаВнутреннееПотребление.ФормаДокумента.Команда.ОтменитьНеотработанные");
РезультатОтмены = ОтменитьНеотработанныеСервер();
ПоказатьОповещениеПользователя(НСтр("ru = 'Отмена неотработанных строк'"), , РезультатОтмены.Оповещение);
КонецПроцедуры
&НаСервере
Функция ОтменитьНеотработанныеСервер()
СтруктураКорректировкиСтрокЗаказа = ЗаказыСервер.СтруктураКорректировкиСтрокЗаказа();
СтруктураКорректировкиСтрокЗаказа.ОтменитьНеотработанныеСтроки = Истина;
Возврат СкорректироватьСтрокиЗаказа(СтруктураКорректировкиСтрокЗаказа);
КонецФункции
&НаКлиенте
Процедура ОтменитьВыделенныеСтроки(Команда)
ОценкаПроизводительностиКлиент.НачатьЗамерВремени(Истина,
"Документ.ЗаказНаВнутреннееПотребление.ФормаДокумента.Команда.ОтменитьВыделенныеСтроки");
ОтменитьВыделенныеСтрокиСервер();
ОбеспечениеВДокументахКлиентСервер.ЗаполнитьСлужебныеРеквизиты(Объект.Товары, ДатаОтгрузкиОбязательна, СкладОбязателен);
ПоказатьОповещениеПользователя(НСтр("ru = 'Отмена выделенных строк'"), , НСтр("ru = 'Выделенные строки отменены'"));
КонецПроцедуры
&НаСервере
Процедура ОтменитьВыделенныеСтрокиСервер()
ВыделенныеСтроки = Элементы.Товары.ВыделенныеСтроки;
СтруктураДействий = Новый Структура;
ДобавитьДействияОбеспеченияНаСервере(СтруктураДействий, "СкладОбязателен,ДатаОтгрузкиОбязательна");
КэшированныеЗначения = Неопределено;
ОбрабатываемыеСтроки = Новый Массив();
Для Каждого Идентификатор Из ВыделенныеСтроки Цикл
Строка = Объект.Товары.НайтиПоИдентификатору(Идентификатор);
Строка.Отменено = Истина;
ОбрабатываемыеСтроки.Добавить(Строка);
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.Товары,
КэшированныеЗначения);
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
ОбновитьКолонкуДоступноСервер();
КонецПроцедуры
&НаСервере
Функция СкорректироватьСтрокиЗаказа(СтруктураДополнительныхПараметров)
ЗаказОбъект = РеквизитФормыВЗначение("Объект");
СтруктураДополнительныхПараметров.ПроверятьОстатки =
ЗаказОбъект.Статус <> Перечисления.СтатусыВнутреннихЗаказов.НаСогласовании;
СтруктураРезультата = ЗаказОбъект.СкорректироватьСтрокиЗаказа(СтруктураДополнительныхПараметров);
Если СтруктураДополнительныхПараметров.ЗакрыватьЗаказы Тогда
ЗаказОбъект.Статус = Перечисления.СтатусыВнутреннихЗаказов.Закрыт;
КонецЕсли;
ЗначениеВРеквизитФормы(ЗаказОбъект, "Объект");
ЗаполнитьСлужебныеРеквизитыФормыДокумента();
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
ОбновитьКолонкуДоступноСервер();
Модифицированность = Истина;
Возврат СтруктураРезультата;
КонецФункции
#КонецОбласти
&НаКлиенте
Процедура Подключаемый_ОбработатьЗаписьОбъекта()
ОбщегоНазначенияУТКлиент.ОбработатьЗаписьОбъектаВФорме(ЭтотОбъект, ПараметрыДляЗаписи);
КонецПроцедуры
#Область Обеспечение
&НаКлиенте
Процедура Подключаемый_ПроверитьВыполнениеЗаданияРаспределенияЗапасов()
Ошибка = Ложь;
Если ОбеспечениеВДокументахКлиент.НужноОбновитьДоступностьПослеЗаписи(ЭтотОбъект,
"Подключаемый_ПроверитьВыполнениеЗаданияРаспределенияЗапасов", Ошибка) Тогда
ОбеспечениеВДокументахКлиент.НастроитьГиперссылкиСостояниеОбеспеченияПослеЗаписи(ЭтотОбъект, Ошибка);
ОбновлятьКолонку = ОбеспечениеВДокументахКлиент.ОбновлятьКолонкуДоступноПослеРаспределенияЗапасов(ЭтотОбъект);
Если ОбновлятьКолонку Тогда
ОбновитьКолонкуДоступноПослеРаспределенияЗапасов();
Иначе
ОбновитьСостояниеКлиент();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбновитьКолонкуДоступноПослеРаспределенияЗапасов()
ОбеспечениеВДокументахСервер.ОбновитьДоступностьПослеЗаписи(ЭтотОбъект);
ОбновитьСостояниеСервер();
КонецПроцедуры
&НаСервере
Функция АдресТаблицыДвиженийВХранилище()
Возврат ОбеспечениеВДокументахСервер.АдресТаблицыДвиженийВХранилище(ЭтотОбъект);
КонецФункции
&НаСервере
Функция ЗаполнитьОбеспечениеИзФормыСостоянияОбеспечения(КодДействия, АдресАналитик, ПараметрыЗаполнения)
Модифицированность = Истина;
Изменения = ОбеспечениеВДокументахСервер.ЗаполнитьОбеспечениеИзФормыСостоянияОбеспечения(
КодДействия,
АдресАналитик,
ЭтотОбъект);
Режим = ОбеспечениеВДокументахКлиентСервер.РежимСостоянияОбеспечения();
ПослеЗаполненияОбеспечения(Изменения, Режим, ПараметрыЗаполнения);
АдресТаблицыДвижений = АдресТаблицыДвиженийВХранилище();
Возврат АдресТаблицыДвижений;
КонецФункции
&НаСервере
Функция ОбеспечениеУстановитьДействие(КодДействия)
Результат = ОбеспечениеВДокументахСервер.ОбеспечениеУстановитьДействиеСтруктураРезультата();
Если КодДействия = "ФЛАГ_ОБОСОБЛЕННО" Или КодДействия = "ФЛАГ_НЕОБОСОБЛЕННО" Тогда
Изменения = ОбеспечениеВДокументахСервер.УстановитьДействиеОбособленно(
КодДействия,
ЭтотОбъект,
Элементы.Товары.ВыделенныеСтроки);
ОбновитьКолонкуДоступноСервер();
Иначе
Изменения = ОбеспечениеВДокументахСервер.УстановитьДействие(
КодДействия,
ЭтотОбъект,
Элементы.Товары.ВыделенныеСтроки);
ЗаполнитьЗначенияСвойств(Результат, Изменения);
Если Изменения.ТаблицаИзменений <> Неопределено Тогда
ПослеЗаполненияОбеспечения(
Изменения.ТаблицаИзменений,
ОбеспечениеВДокументахКлиентСервер.РежимВыборДействия(),
Результат);
КонецЕсли;
КонецЕсли;
Возврат Результат;
КонецФункции
&НаСервере
Функция ОбеспечениеУстановитьДействиеПриИзмененииСтатусаНаСогласование(КодДействия)
Результат = ОбеспечениеВДокументахСервер.ОбеспечениеУстановитьДействиеСтруктураРезультата();
СтрокиСДействиемОтгрузить = Новый Массив;
Для Каждого СтрокаТаблицы Из Объект.Товары Цикл
Если СтрокаТаблицы.ВариантОбеспечения = Перечисления.ВариантыОбеспечения.Отгрузить Тогда
СтрокиСДействиемОтгрузить.Добавить(СтрокаТаблицы.ПолучитьИдентификатор());
КонецЕсли;
КонецЦикла;
Изменения = ОбеспечениеВДокументахСервер.УстановитьДействие(
КодДействия, ЭтотОбъект, СтрокиСДействиемОтгрузить);
ЗаполнитьЗначенияСвойств(Результат, Изменения);
Если Изменения.ТаблицаИзменений <> Неопределено Тогда
ПослеЗаполненияОбеспечения(
Изменения.ТаблицаИзменений, ОбеспечениеВДокументахКлиентСервер.РежимВыборДействия(), Результат);
КонецЕсли;
Возврат Результат;
КонецФункции
&НаСервере
Функция ОбработатьВыборСкладаИСерииНаСервере(ВыбранноеЗначение, ПараметрыФормы, ПараметрыЗаполнения)
Модифицированность = Истина;
Изменения = ОбеспечениеВДокументахСервер.ПриВыбореСклада(
ВыбранноеЗначение,
ЭтотОбъект,
Элементы.Товары.ТекущаяСтрока,
ПараметрыФормы.ЗаполняемыеПоля);
ПослеЗаполненияОбеспечения(Изменения, ПараметрыФормы.Режим, ПараметрыЗаполнения);
ТекстОбработаноСтрок = ОбеспечениеВДокументахСервер.ТекстОбработаноСтрок(Изменения.Количество());
Возврат ТекстОбработаноСтрок;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ПараметрыДокументаДляДействийОбеспечения(Форма, ДатаОтгрузки)
ПараметрыДокумента = Новый Структура();
ПараметрыДокумента.Вставить("Форма", Форма);
ПараметрыДокумента.Вставить("Коллекция", Форма.Объект.Товары);
ПараметрыДокумента.Вставить("ВариантОбеспеченияИФлагОбособленно", Неопределено);
Возврат ПараметрыДокумента;
КонецФункции
&НаКлиенте
Процедура ГиперссылкаСостояниеОбеспеченияНажатиеОбщий()
ПараметрыФормы = ОбеспечениеВДокументахКлиент.ГиперссылкаСостояниеОбеспеченияНажатие(ЭтотОбъект);
Если Объект.Статус = ПредопределенноеЗначение("Перечисление.СтатусыВнутреннихЗаказов.НаСогласовании")
Или Объект.Статус = ПредопределенноеЗначение("Перечисление.СтатусыВнутреннихЗаказов.ПустаяСсылка") Тогда
ПараметрыФормы.ДопустимыеВариантыОбеспечения = ОбеспечениеВДокументахКлиент.ВсеДопустимыеВариантыОбеспечения();
ПараметрыФормы.ДопустимыеВариантыОбеспечения.Удалить(
ПредопределенноеЗначение("Перечисление.ВариантыОбеспечения.СоСклада"));
ПараметрыФормы.ДопустимыеВариантыОбеспечения.Удалить(
ПредопределенноеЗначение("Перечисление.ВариантыОбеспечения.Отгрузить"));
КонецЕсли;
Если ПараметрыФормы.КонтекстИспользования = "ТАБЛИЦА" Тогда
ПараметрыФормы.АдресТаблицыДвижений = АдресТаблицыДвиженийВХранилище();
КонецЕсли;
ОткрытьФорму("Обработка.СостояниеОбеспеченияЗаказов.Форма", ПараметрыФормы, ЭтотОбъект, УникальныйИдентификатор,,,,
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура ДобавитьДействияОбеспеченияНаКлиенте(СтруктураДействий, ПоляСтрокой)
ПараметрыДокумента = ПараметрыДокументаДляДействийОбеспечения(ЭтотОбъект, Неопределено);
ОбеспечениеВДокументахКлиентСервер.ДобавитьДействияОбеспечения(СтруктураДействий, ПоляСтрокой, ПараметрыДокумента);
КонецПроцедуры
&НаСервере
Процедура ДобавитьДействияОбеспеченияНаСервере(СтруктураДействий, ПоляСтрокой, ДатаОтгрузки = Неопределено)
ПараметрыДокумента = ПараметрыДокументаДляДействийОбеспечения(ЭтотОбъект, ДатаОтгрузки);
ОбеспечениеВДокументахКлиентСервер.ДобавитьДействияОбеспечения(СтруктураДействий, ПоляСтрокой, ПараметрыДокумента);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСлужебныеРеквизитыФормыДокумента()
ПараметрыДокумента = ПараметрыДокументаДляДействийОбеспечения(ЭтотОбъект, Неопределено);
ОбеспечениеВДокументахСервер.ЗаполнитьСлужебныеРеквизитыФормыДокумента(ПараметрыДокумента);
Справочники.КатегорииЭксплуатации.ЗаполнитьПризнакиКатегорииЭксплуатации(Объект.Товары);
КонецПроцедуры
&НаСервере
Процедура ОбеспечениеУстановитьДействиеПослеВопроса(Ответ, Результат)
СтруктураРезультата = ОбеспечениеВДокументахСервер.УстановитьДействиеПослеВопроса(Ответ, Результат, ЭтотОбъект);
ПослеЗаполненияОбеспечения(
СтруктураРезультата.ТаблицаИзменений,
ОбеспечениеВДокументахКлиентСервер.РежимВыборДействия(),
СтруктураРезультата);
КонецПроцедуры
&НаКлиенте
Процедура ОбеспечениеУстановитьДействиеСВопросом(КодДействия)
Результат = ОбеспечениеУстановитьДействие(КодДействия);
ВопросЗадан = ОбеспечениеВДокументахКлиент.ПоказатьВопросЗаполнятьОбеспечениеЦелымиУпаковками(
ЭтотОбъект,
Объект.Товары,
Результат,
"ПослеВопросаЗаполнятьОбеспечениеЦелымиУпаковками");
Если Не ВопросЗадан Тогда
ОбеспечениеВДокументахКлиент.ПоказатьВопросСнятьФлагОтгружатьОднойДатой(
ЭтотОбъект,
Объект.Товары,
Результат,
"ПослеВопросаСнятьФлагОтгружатьОднойДатой");
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбновитьКолонкуДоступноСервер()
ОбеспечениеВДокументахСервер.ОбновитьКолонкуДоступно(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ОбработатьВыборСкладаИСерии(ВыбранноеЗначение, ПараметрыФормы) Экспорт
Если Не ОбеспечениеВДокументахКлиент.ЕстьПодобранныеТовары(ВыбранноеЗначение) Тогда
Возврат;
КонецЕсли;
ОбеспечениеВДокументахКлиент.ПоказатьВопросСнятьФлагОтгружатьОднойДатойПослеВыбораОбеспечения(
ЭтотОбъект,
ВыбранноеЗначение,
ПараметрыФормы,
"ОбработатьВыборСкладаИСерииПослеВопроса");
КонецПроцедуры
&НаКлиенте
Процедура ОбработатьВыборСкладаИСерииПослеВопроса(Ответ, Параметры) Экспорт
ПараметрыЗаполнения = ОбеспечениеВДокументахКлиент.ПараметрыОбработкиДатОтгрузкиПослеЗаполненияОбеспечения(Ответ);
Оповещение = ОбработатьВыборСкладаИСерииНаСервере(
Параметры.ВыбранноеЗначение,
Параметры.ПараметрыФормы,
ПараметрыЗаполнения);
ТекстОповещения = ОбеспечениеВДокументахКлиент.ТекстОповещенияОбработкиВыборСкладаИСерии(Параметры.ПараметрыФормы.Режим);
ПоказатьОповещениеПользователя(ТекстОповещения, , Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПриИзмененииМодифицированностиФормы()
Если ФормаМодифицирована <> Модифицированность Тогда
ФормаМодифицирована = Модифицированность;
ОбеспечениеВДокументахКлиент.НастроитьГиперссылкиСостояниеОбеспечения(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеВопросаЗаполнятьОбеспечениеЦелымиУпаковками(Ответ, Результат) Экспорт
ВопросЗадан = ОбеспечениеВДокументахКлиент.ПоказатьВопросСнятьФлагОтгружатьОднойДатойПослеВопроса(
ЭтотОбъект,
Объект.Товары,
Результат,
Ответ,
"ПослеВопросаСнятьФлагОтгружатьОднойДатой");
Если Не ВопросЗадан Тогда
ОбеспечениеУстановитьДействиеПослеВопроса(Ответ, Результат);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеВопросаСнятьФлагОтгружатьОднойДатой(Ответ, Результат) Экспорт
ОбеспечениеУстановитьДействиеПослеВопроса(Ответ, Результат);
КонецПроцедуры
&НаСервере
Процедура ПослеЗаполненияОбеспечения(Изменения, Режим = Неопределено, ПараметрыЗаполнения = Неопределено)
Документы.ЗаказНаВнутреннееПотребление.ПослеЗаполненияОбеспечения(Объект, Изменения, Режим, ПараметрыЗаполнения);
УстановитьВидимостьЭлементовФормыДатОтгрузки();
СтруктураДействий = Новый Структура();
ДобавитьДействияОбеспеченияНаСервере(СтруктураДействий, "СкладОбязателен,ДатаОтгрузкиОбязательна");
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
КоллекцияНаФорме = ОбеспечениеВДокументахКлиентСервер.КоллекцияНаФорме(
ЭтотОбъект, ДоступныеОстаткиПараметрыВстраивания);
ОбрабатываемыеСтроки = Новый Массив();
Для Каждого Изменение Из Изменения Цикл
ОбрабатываемыеСтроки.Добавить(Изменение.Строка);
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
КоллекцияНаФорме,
КэшированныеЗначения);
ОбеспечениеВДокументахКлиентСервер.ЗаполнитьСлужебныеРеквизиты(Объект.Товары, ДатаОтгрузкиОбязательна, СкладОбязателен);
ОбновитьКолонкуДоступноСервер();
КонецПроцедуры
&НаСервере
Процедура ТоварыВариантОбеспеченияПриИзмененииНаСервере(ПараметрыЗаполнения)
Изменения = ОбеспечениеВДокументахСервер.ВариантОбеспеченияПриИзменении(
ЭтотОбъект,
Элементы.Товары.ТекущаяСтрока);
Режим = ОбеспечениеВДокументахКлиентСервер.РежимВыборДействияНепосредственно();
ПослеЗаполненияОбеспечения(Изменения, Режим, ПараметрыЗаполнения);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыВариантОбеспеченияПриИзмененииПослеВопроса(Ответ, ДополнительныеПараметры) Экспорт
ПараметрыЗаполнения = ОбеспечениеВДокументахКлиент.ПараметрыОбработкиДатОтгрузкиПослеЗаполненияОбеспечения(Ответ);
ТоварыВариантОбеспеченияПриИзмененииНаСервере(ПараметрыЗаполнения);
КонецПроцедуры
&НаСервере
Функция ПараметрыВыбораОбеспечения(Режим)
ПараметрыФормы = ОбеспечениеВДокументахСервер.ПараметрыВыбораОбеспечения(
ЭтотОбъект,
Элементы.Товары.ТекущаяСтрока,
Режим);
Возврат ПараметрыФормы;
КонецФункции
&НаКлиенте
Функция ПараметрыФормыЗапросаКоличестваИСерий(Режим)
ПараметрыПроверки = ОбеспечениеКлиентСервер.ИнициализироватьПараметрыПроверкиЗаполнения();
Если Не ОбеспечениеКлиент.ПроверитьЗаполнение(
Объект,
Объект.Товары,
Элементы.Товары.ТекущаяСтрока,
ПараметрыПроверки,
Объект.Склад,
Режим) Тогда
Возврат Неопределено;
КонецЕсли;
ПараметрыФормы = ПараметрыВыбораОбеспечения(Режим);
ПараметрыФормы.ПараметрыУказанияСерий = ПараметрыУказанияСерий;
Возврат ПараметрыФормы;
КонецФункции
&НаКлиенте
Процедура ОбработкаВыбораПодборНаКлиенте(ВыбранноеЗначение)
Если Не ЗначениеЗаполнено(ВыбранноеЗначение) Тогда
Возврат;
КонецЕсли;
ОбеспечениеВДокументахКлиент.ПоказатьВопросСнятьФлагОтгружатьОднойДатойПослеПодбора(
ЭтотОбъект,
ВыбранноеЗначение,
"ОбработкаВыбораПодборНаКлиентеПослеВопроса");
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаВыбораПодборНаКлиентеПослеВопроса(Ответ, ДополнительныеПараметры) Экспорт
Если Ответ = КодВозвратаДиалога.Отмена Тогда
Возврат;
КонецЕсли;
Если Ответ = КодВозвратаДиалога.Да Тогда
Объект.НеОтгружатьЧастями = Ложь;
УстановитьВидимостьЭлементовФормыДатОтгрузки();
КонецЕсли;
ОбработкаВыбораПодборНаСервере(ДополнительныеПараметры);
КонецПроцедуры
#КонецОбласти