#Область ОписаниеПеременных
&НаКлиенте
Перем ФормаМодифицирована;
&НаКлиенте
Перем ОтветПередЗаписью;
&НаКлиенте
Перем КэшированныеЗначения;
&НаКлиенте
Перем ТекущиеДанныеИдентификатор;
&НаКлиенте
Перем ПараметрыДляЗаписи Экспорт;
#КонецОбласти
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ПараметрыВстраивания = Документы.ЗаказПереработчику2_5.ДоступныеОстаткиПараметрыВстраивания();
ОбеспечениеВДокументахСервер.ДоступныеОстаткиПриСозданииНаСервере(ЭтаФорма, ПараметрыВстраивания);
УстановитьУсловноеОформление();
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(Объект, ЭтаФорма);
Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
ПриЧтенииСозданииНаСервере();
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(
Объект,
ПараметрыУказанияСерий.ОбеспечениеМатериаламиИРаботами);
Если ЗначениеЗаполнено(Объект.Партнер) Тогда
ЗаполнитьРеквизитыДоставкиНаСервере("Партнер");
КонецЕсли;
КонецЕсли;
Справочники.Назначения.ФормаДокументаПриСозданииНаСервере(ЭтаФорма);
ПараметрыВыбораСтатейИАналитик = Документы.ЗаказПереработчику2_5.ПараметрыВыбораСтатейИАналитик();
ДоходыИРасходыСервер.ПриСозданииНаСервере(ЭтаФорма, ПараметрыВыбораСтатейИАналитик);
ЭлементыДляЗаполнения = Новый Массив;
ЭлементыДляЗаполнения.Добавить(Элементы.ВремяДоставкиС);
ЭлементыДляЗаполнения.Добавить(Элементы.ВремяДоставкиПо);
ЭлементыДляЗаполнения.Добавить(Элементы.ВремяДоставкиС1);
ЭлементыДляЗаполнения.Добавить(Элементы.ВремяДоставкиПо1);
ДоставкаТоваровКлиентСервер.ЗаполнитьСписокВыбораПоляВремени(ЭлементыДляЗаполнения);
ВзаиморасчетыСервер.ФормаПриСозданииНаСервере(ЭтаФорма);
ОповеститьОСозданииОбъектаРасчетов = Параметры.ОповеститьОСозданииОбъектаРасчетов;
#Область СтандартныеМеханизмы
ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтаФорма);
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("Объект", Объект);
ДополнительныеПараметры.Вставить("ИмяЭлементаДляРазмещения", "ГруппаДополнительныеРеквизиты");
ДополнительныеПараметры.Вставить("ОтложеннаяИнициализация", Истина);
УправлениеСвойствами.ПриСозданииНаСервере(ЭтаФорма, ДополнительныеПараметры);
ОбщегоНазначенияУТ.НастроитьПодключаемоеОборудование(ЭтаФорма, "ВыходныеИзделия,ПобочныеИзделия,ОбеспечениеМатериаламиИРаботами");
ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтаФорма);
ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПриСозданииНаСервере(ЭтотОбъект);
ПараметрыГиперссылки = РаботаСФайлами.ГиперссылкаФайлов();
ПараметрыГиперссылки.Размещение = "КоманднаяПанель";
РаботаСФайлами.ПриСозданииНаСервере(ЭтаФорма, ПараметрыГиперссылки);
СобытияФорм.ПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка);
#КонецОбласти
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
ПараметрыВстраивания = Документы.ЗаказПереработчику2_5.ДоступныеОстаткиПараметрыВстраивания();
ОбеспечениеВДокументахСервер.ДоступныеОстаткиПриЧтенииНаСервере(ЭтаФорма, ПараметрыВстраивания);
ПриЧтенииСозданииНаСервере();
ПараметрыВыбораСтатейИАналитик = Документы.ЗаказПереработчику2_5.ПараметрыВыбораСтатейИАналитик();
ДоходыИРасходыСервер.ПриЧтенииНаСервере(ЭтаФорма, ПараметрыВыбораСтатейИАналитик);
ВзаиморасчетыСервер.ФормаПриЧтенииНаСервере(ЭтаФорма);
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда
МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом");
МодульУправлениеДоступом.ПриЧтенииНаСервере(ЭтаФорма, ТекущийОбъект);
КонецЕсли;
УправлениеСвойствами.ПриЧтенииНаСервере(ЭтаФорма, ТекущийОбъект);
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтаФорма, Объект);
СобытияФорм.ПриЧтенииНаСервере(ЭтаФорма, ТекущийОбъект);
КонецПроцедуры
&НаСервере
Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
УправлениеСвойствами.ОбработкаПроверкиЗаполнения(ЭтаФорма, Отказ, ПроверяемыеРеквизиты);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
Если НеВыполнятьПроверкуПередЗаписью Тогда
НеВыполнятьПроверкуПередЗаписью = Ложь;
Возврат;
КонецЕсли;
Если ПараметрыЗаписи.РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ПараметрыЗаписи", ПараметрыЗаписи);
Если ЗначениеЗаполнено(Объект.ЖелаемаяДатаПоступления) Тогда
МаксДатаАванса = МаксимальнаяДатаАванса();
Если НЕ ОтветПередЗаписью
И ЗначениеЗаполнено(МаксДатаАванса)
И МаксДатаАванса > Объект.ЖелаемаяДатаПоступления Тогда
Отказ = Истина;
ТекстВопроса = НСтр("ru='Желаемая дата поступления меньше даты этапов предоплаты. Дата будет скорректирована до %МаксДатаАванса%'");
ТекстВопроса = СтрЗаменить(ТекстВопроса, "%МаксДатаАванса%", Формат(МаксДатаАванса,"ДЛФ=DD"));
ДополнительныеПараметры.Вставить("МаксДатаАванса", МаксДатаАванса);
ПоказатьВопрос(
Новый ОписаниеОповещения("ПередЗаписьюЗавершение", ЭтаФорма, ДополнительныеПараметры),
ТекстВопроса,
РежимДиалогаВопрос.ОКОтмена);
Возврат;
КонецЕсли;
КонецЕсли;
Если Не Объект.НеОтгружатьЧастями Тогда
ЭтапыОплатыКлиент.ПредложитьЗаполнитьГрафикОплатПоУмолчанию(
ЭтотОбъект,
Новый ОписаниеОповещения(
"ПередЗаписьюПредложитьЗаполнитьГрафикОплатПоУмолчаниюЗавершение",
ЭтотОбъект,
ДополнительныеПараметры),
Отказ);
Если Отказ Тогда
Возврат;
КонецЕсли;
КонецЕсли;
ПередЗаписьюНаКлиентеСервер();
КонецЕсли;
ОбщегоНазначенияУТКлиент.ЗаписатьОбъектПриНеобходимости(ЭтаФорма, ПараметрыЗаписи, Отказ);
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаКлиентеСервер()
ВзаиморасчетыВызовСервера.ФормаПередЗаписьюНаКлиентеСервер(ЭтаФорма);
Если Объект.ПоступлениеОднойДатой
И ЗначениеЗаполнено(Объект.ДатаПоступления)
Или Объект.ВыходныеИзделия.Количество() = 0
И Объект.ПобочныеИзделия.Количество() = 0 Тогда
Возврат;
КонецЕсли;
Если Объект.Статус = ПредопределенноеЗначение("Перечисление.СтатусыЗаказовПереработчикам.КИсполнению")
Или Объект.Статус = ПредопределенноеЗначение("Перечисление.СтатусыЗаказовПереработчикам.Закрыт") Тогда
Если Не Объект.ГруппировкаЗатрат =
ПредопределенноеЗначение("Перечисление.ГруппировкиЗатратВЗаказеПереработчику.ПоЭтапамПроизводства") Тогда
ЗаполнитьДатуПоступленияЖелаемойДатойНаСервере();
КонецЕсли;
ЗаполнитьПустыеДатыВыполненияРаботНаСервере();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
ВзаиморасчетыСервер.ПередЗаписьюНаСервере(ЭтаФорма, ТекущийОбъект);
УправлениеСвойствами.ПередЗаписьюНаСервере(ЭтаФорма, ТекущийОбъект);
ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПередЗаписьюНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
МодификацияКонфигурацииПереопределяемый.ПередЗаписьюНаСервере(ЭтаФорма, Отказ, ТекущийОбъект, ПараметрыЗаписи);
КонецПроцедуры
&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
ОбеспечениеВДокументахСервер.ПослеЗаписиНаСервере(ЭтаФорма);
ЗаполнитьСлужебныеРеквизиты();
ЗаполнитьЗависимыеСлужебныеРеквизиты(ЭтаФорма);
ЗаполнитьЗависимыеСлужебныеРеквизитыНаСервере();
ЗаполнитьСлужебныеРеквизитыТабличныхЧастей();
ОбновитьГруппыЗатрат();
НастроитьЭлементыФормы();
ОбновитьСостояниеСервер();
ДоходыИРасходыСервер.ПослеЗаписиНаСервере(ЭтаФорма);
ВзаиморасчетыСервер.ФормаПослеЗаписиНаСервере(ЭтаФорма);
УправлениеДоступом.ПослеЗаписиНаСервере(ЭтаФорма, ТекущийОбъект, ПараметрыЗаписи);
СобытияФорм.ПослеЗаписиНаСервере(ЭтаФорма, ТекущийОбъект, ПараметрыЗаписи);
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
ФормаМодифицирована = Неопределено;
Подключаемый_ПриИзмененииМодифицированностиФормы();
ПараметрыОповещения = Новый Массив;
Оповестить("Запись_ЗаказПереработчику2_5", ПараметрыОповещения, Объект.Ссылка);
ОповеститьОбИзменении(Объект.Ссылка);
ОбеспечениеВДокументахКлиент.ПослеЗаписи(ЭтаФорма, "Подключаемый_ПроверитьВыполнениеЗаданияРаспределенияЗапасов");
ПодключаемыеКомандыКлиент.ПослеЗаписи(ЭтаФорма, Объект, ПараметрыЗаписи);
МодификацияКонфигурацииКлиентПереопределяемый.ПослеЗаписи(ЭтаФорма, ПараметрыЗаписи);
ОбщегоНазначенияУТКлиент.ВыполнитьДействияПослеЗаписи(ЭтаФорма, Объект, ПараметрыЗаписи);
КонецПроцедуры
&НаСервере
Процедура ПередЗагрузкойДанныхИзНастроекНаСервере(Настройки)
СкрыватьОтмененныеСтрокиВыходныеИзделия = Настройки.Получить("СкрыватьОтмененныеСтрокиВыходныеИзделия");
Если СкрыватьОтмененныеСтрокиВыходныеИзделия Тогда
Элементы.ВыходныеИзделия.ОтборСтрок = Новый ФиксированнаяСтруктура("Отменено", Ложь);
Иначе
Элементы.ВыходныеИзделия.ОтборСтрок = Неопределено;
КонецЕсли;
СкрыватьОтмененныеСтрокиПобочныеИзделия = Настройки.Получить("СкрыватьОтмененныеСтрокиПобочныеИзделия");
Если СкрыватьОтмененныеСтрокиПобочныеИзделия Тогда
Элементы.ПобочныеИзделия.ОтборСтрок = Новый ФиксированнаяСтруктура("Отменено", Ложь);
Иначе
Элементы.ПобочныеИзделия.ОтборСтрок = Неопределено;
КонецЕсли;
СкрыватьОтмененныеСтрокиОбеспечениеМатериаламиИРаботами =
Настройки.Получить("СкрыватьОтмененныеСтрокиОбеспечениеМатериаламиИРаботами");
Если СкрыватьОтмененныеСтрокиОбеспечениеМатериаламиИРаботами Тогда
Элементы.ОбеспечениеМатериаламиИРаботами.ОтборСтрок = Новый ФиксированнаяСтруктура("Отменено", Ложь);
Иначе
Элементы.ОбеспечениеМатериаламиИРаботами.ОтборСтрок = Неопределено;
КонецЕсли;
СкрыватьОтмененныеСтрокиУслуги = Настройки.Получить("СкрыватьОтмененныеСтрокиУслуги");
Если СкрыватьОтмененныеСтрокиУслуги Тогда
Элементы.Услуги.ОтборСтрок = Новый ФиксированнаяСтруктура("Отменено", Ложь);
Иначе
Элементы.Услуги.ОтборСтрок = Неопределено;
КонецЕсли;
Элементы.ВыходныеИзделияСкрыватьОтмененныеСтроки.Пометка = СкрыватьОтмененныеСтрокиВыходныеИзделия;
Элементы.ПобочныеИзделияСкрыватьОтмененныеСтроки.Пометка = СкрыватьОтмененныеСтрокиПобочныеИзделия;
Элементы.ОбеспечениеМатериаламиИРаботамиСкрыватьОтмененныеСтроки.Пометка =
СкрыватьОтмененныеСтрокиОбеспечениеМатериаламиИРаботами;
Элементы.УслугиСкрыватьОтмененныеСтроки.Пометка = СкрыватьОтмененныеСтрокиУслуги;
Если Не Объект.Ссылка.Пустая()
Или Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоЭтапамПроизводства Тогда
Настройки.Удалить("Объект.НеОтгружатьЧастями");
Настройки.Удалить("Объект.ПоступлениеОднойДатой");
Настройки.Удалить("Объект.ВыполнениеРаботОднойДатой");
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПриЗагрузкеДанныхИзНастроекНаСервере(Настройки)
НастроитьЗависимыеЭлементыФормы(ЭтаФорма, "ПоступлениеОднойДатой, НеОтгружатьЧастями, ВыполнениеРаботОднойДатой");
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ПодключитьОбработчикОжидания("Подключаемый_ПриИзмененииМодифицированностиФормы", 1);
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтаФорма);
МенеджерОборудованияКлиент.НачатьПодключениеОборудованиеПриОткрытииФормы(Неопределено, ЭтаФорма, "СканерШтрихкода");
ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтаФорма);
РаботаСФайламиКлиент.ПриОткрытии(ЭтаФорма, Отказ);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если УправлениеСвойствамиКлиент.ОбрабатыватьОповещения(ЭтаФорма, ИмяСобытия, Параметр) Тогда
ОбновитьЭлементыДополнительныхРеквизитов();
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтаФорма);
КонецЕсли;
Если Источник = "ПодключаемоеОборудование" И ВводДоступен() Тогда
Если ИмяСобытия = "ScanData" И МенеджерОборудованияУТКлиент.ЕстьНеобработанноеСобытие() Тогда
Данные = МенеджерОборудованияУТКлиент.ПреобразоватьДанныеСоСканераВМассив(Параметр);
Если Элементы.ГруппаСтраницы.ТекущаяСтраница = Элементы.СтраницаОбеспечениеМатериаламиИРаботами Тогда
ОбработатьШтрихкоды(Данные, "ОбеспечениеМатериаламиИРаботами");
Иначе
ОбработатьШтрихкоды(Данные, "ВыходныеИзделия");
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если Источник = "ПодключаемоеОборудование"
И ИмяСобытия = "НеизвестныеШтрихкоды"
И Параметр.ФормаВладелец = УникальныйИдентификатор Тогда
КэшированныеЗначения.Штрихкоды.Очистить();
ДанныеШтрихкодов = Новый Массив;
Для Каждого ПолученныйШтрихкод Из Параметр.ПолученыНовыеШтрихкоды Цикл
ДанныеШтрихкодов.Добавить(ПолученныйШтрихкод);
КонецЦикла;
Для Каждого ПолученныйШтрихкод Из Параметр.ЗарегистрированныеШтрихкоды Цикл
ДанныеШтрихкодов.Добавить(ПолученныйШтрихкод);
КонецЦикла;
Если Элементы.ГруппаСтраницы.ТекущаяСтраница = Элементы.СтраницаОбеспечениеМатериаламиИРаботами Тогда
ОбработатьШтрихкоды(ДанныеШтрихкодов, "ОбеспечениеМатериаламиИРаботами");
Иначе
ОбработатьШтрихкоды(ДанныеШтрихкодов, "ВыходныеИзделия");
КонецЕсли;
КонецЕсли;
Если ВзаиморасчетыКлиент.НуженВызовОбработкиОповещения(ЭтаФорма, ИмяСобытия, Параметр) Тогда
ОбработкаОповещенияВзаиморасчетыНаСервере(ИмяСобытия, Параметр);
КонецЕсли;
Если ИмяСобытия = "КопированиеСтрокВБуферОбмена" Тогда
НастроитьКомандыБуфераОбмена(ЭтаФорма, Истина);
КонецЕсли;
РаботаСФайламиКлиент.ОбработкаОповещения(ЭтаФорма, ИмяСобытия);
СобытияФормКлиент.ОбработкаОповещения(ЭтаФорма, ИмяСобытия, Параметр, Источник);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)
Если ИсточникВыбора.ИмяФормы = "Обработка.СостояниеОбеспеченияЗаказов.Форма.Форма" Тогда
АдресТаблицыДвижений =
ЗаполнитьОбеспечениеИзФормыСостоянияОбеспечения(
ВыбранноеЗначение.КодДействия,
ВыбранноеЗначение.АдресАналитик,
ВыбранноеЗначение.ПараметрыЗаполнения);
ВыполнитьОбработкуОповещения(ВыбранноеЗначение.ВыполняемоеОповещение, АдресТаблицыДвижений);
ИначеЕсли ИсточникВыбора.ИмяФормы = "Обработка.ПодборТоваровВДокументПродажи.Форма.Форма" Тогда
ОбработкаВыбораПодборНаКлиенте(ВыбранноеЗначение, "ОбеспечениеМатериаламиИРаботами");
ИначеЕсли ИсточникВыбора.ИмяФормы = "Обработка.ПодборТоваровВДокументЗакупки.Форма.Форма" Тогда
ОбработкаВыбораПодборНаКлиенте(ВыбранноеЗначение, "Услуги");
ИначеЕсли ИсточникВыбора.ИмяФормы = "Обработка.ПомощникЗакрытияЗаказов.Форма.ФормаЗакрытия" Тогда
РезультатОтмены = СкорректироватьСтрокиЗаказа(ВыбранноеЗначение);
ПоказатьОповещениеПользователя(НСтр("ru = 'Отмена неотработанных строк'"), , РезультатОтмены.Оповещение);
ИначеЕсли ИсточникВыбора <> Неопределено
И ТипЗнч(ИсточникВыбора) = Тип("ФормаКлиентскогоПриложения")
И ИсточникВыбора.ИмяФормы = "ОбщаяФорма.ВводДолиСтоимости" Тогда
ТекущиеДанные = ТекущийЭлемент.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
ОбработкаВводаДолиСтоимости(ТекущийЭлемент, ТекущиеДанные, ВыбранноеЗначение);
КонецЕсли;
ЗаполнитьЗависимыеСлужебныеРеквизитыОбеспечения(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаНавигационнойСсылки(НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СобытияФормКлиент.ОбработкаНавигационнойСсылки(ЭтаФорма, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
ПринудительноЗакрытьФорму = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ПриЗакрытии(ЗавершениеРаботы)
МенеджерОборудованияКлиент.НачатьОтключениеОборудованиеПриЗакрытииФормы(Неопределено, ЭтаФорма);
Если Не ЗавершениеРаботы
И ЗначениеЗаполнено(Объект.Ссылка)
И ОповеститьОСозданииОбъектаРасчетов Тогда
ВзаиморасчетыКлиент.ФормаПриЗакрытии(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
#Область Основное
&НаКлиенте
Процедура ГруппаСтраницыПриСменеСтраницы(Элемент, ТекущаяСтраница)
Если ТекущаяСтраница.Имя = "ГруппаДополнительно"
И Не ЭтотОбъект.ПараметрыСвойств.ВыполненаОтложеннаяИнициализация Тогда
СвойстваВыполнитьОтложеннуюИнициализацию();
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтаФорма);
КонецЕсли;
ВзаиморасчетыКлиент.ОбновитьТекстГиперссылкиЭтапыОплаты(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура СтатусПриИзменении(Элемент)
СтатусПриИзмененииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура НадписьЗаголовокЗаказыОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура ДатаПриИзменении(Элемент)
ДатаПриИзмененииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура ПартнерПриИзменении(Элемент)
ПартнерПриИзмененииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура КонтрагентПриИзменении(Элемент)
КонтрагентПриИзмененииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура ДоговорПриИзменении(Элемент)
ДоговорПриИзмененииНаСервере(Неопределено);
КонецПроцедуры
&НаКлиенте
Процедура ОрганизацияПриИзменении(Элемент)
ОрганизацияПриИзмененииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура УслугиПоПереработкеПриИзменении(Элемент)
УслугиПоПереработкеПриИзмененииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура ГруппировкаЗатратПриИзменении(Элемент)
Если ГруппировкаЗатратДоИзменения = Объект.ГруппировкаЗатрат Тогда
Возврат;
КонецЕсли;
ОценкаПроизводительностиКлиент.ЗамерВремени(
"Документ.ЗаказПереработчику2_5.Форма.ФормаДокумента.ГруппировкаЗатратПриИзменении");
ГруппировкаЗатратПриИзмененииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура СпособРаспределенияЗатратНаВыходныеИзделияПриИзменении(Элемент)
СпособРаспределенияЗатратНаВыходныеИзделияПриИзмененииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура СкладПродукцииПриИзменении(Элемент)
СкладПродукцииПриИзмененииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура СкладМатериаловПриИзменении(Элемент)
СкладМатериаловПриИзмененииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура НадписьЭтапыОплатыНажатие(Элемент, СтандартнаяОбработка)
Оповещение = Новый ОписаниеОповещения("НадписьЭтапыОплатыНажатиеЗавершение", ЭтаФорма);
ПоместитьЭтапыОплатыВоВременноеХранилище(Элемент.Имя);
ВзаиморасчетыКлиент.НадписьЭтапыОплатыНажатие(ЭтаФорма, Элемент, СтандартнаяОбработка, Оповещение );
КонецПроцедуры
&НаКлиенте
Процедура ДекорацияСостояниеРасчетовНажатие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОтчетыУТКлиентПереопределяемый.ОткрытьОтчетКарточкаРасчетовСПоставщиками("КарточкаРасчетовСПоставщикамиПоДокументамКонтекст", Объект.Ссылка);
КонецПроцедуры
#КонецОбласти
#Область Изделия
&НаКлиенте
Процедура ОставитьИзделияУПереработчикаПриИзменении(Элемент)
ОставитьИзделияУПереработчикаПриИзмененииНаСервере();
КонецПроцедуры
&НаСервере
Процедура ОставитьИзделияУПереработчикаПриИзмененииНаСервере()
Если Объект.ОставитьИзделияУПереработчика Тогда
Объект.СкладПродукции = Неопределено;
КонецЕсли;
СкладПродукцииПриИзмененииНаСервере();
НастроитьЗависимыеЭлементыФормы(ЭтаФорма, "ОставитьИзделияУПереработчика");
КонецПроцедуры
&НаКлиенте
Процедура ЖелаемаяДатаПоступленияНачалоВыбораИзСписка(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
МаксДатаАванса = МаксимальнаяДатаАванса();
Если ЗначениеЗаполнено(МаксДатаАванса) Тогда
ПредставлениеМаксДатаАванса =
СтрЗаменить(НСтр("ru='%МаксДатаАванса%'"), "%МаксДатаАванса%", Формат(МаксДатаАванса,"ДЛФ=DD"));
СписокВыбора = Новый СписокЗначений;
СписокВыбора.Добавить(МаксДатаАванса, ПредставлениеМаксДатаАванса);
ПоказатьВыборИзСписка(
Новый ОписаниеОповещения("ЖелаемаяДатаПоступленияНачалоВыбораИзСпискаЗавершение", ЭтаФорма),
СписокВыбора,
Элемент);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЖелаемаяДатаПоступленияНачалоВыбораИзСпискаЗавершение(ВыбранноеЗначение, ДополнительныеПараметры) Экспорт
Если ВыбранноеЗначение <> Неопределено Тогда
Объект.ЖелаемаяДатаПоступления = ВыбранноеЗначение.Значение;
Если Объект.Статус = ПредопределенноеЗначение("Перечисление.СтатусыЗаказовПереработчикам.КИсполнению")
Или Объект.Статус = ПредопределенноеЗначение("Перечисление.СтатусыЗаказовПереработчикам.Закрыт") Тогда
Если Не Объект.ГруппировкаЗатрат =
ПредопределенноеЗначение("Перечисление.ГруппировкиЗатратВЗаказеПереработчику.ПоЭтапамПроизводства") Тогда
ЗаполнитьДатуПоступленияЖелаемойДатой();
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПоступлениеОднойДатойПриИзменении(Элемент)
ФлагОднойДатойПриИзмененииНаСервере(
"ВыходныеИзделия,ПобочныеИзделия",
"ПоступлениеОднойДатой",
"ДатаПоступления");
КонецПроцедуры
&НаКлиенте
Процедура ДатаПоступленияПриИзменении(Элемент)
ОбщаяДатаПриИзмененииНаСервере(
"ВыходныеИзделия,ПобочныеИзделия",
"ДатаПоступления");
КонецПроцедуры
#КонецОбласти
#Область Материалы
&НаКлиенте
Процедура НеОтгружатьЧастямиПриИзменении(Элемент)
ФлагОднойДатойПриИзмененииНаСервере("ОбеспечениеМатериаламиИРаботами", "НеОтгружатьЧастями", "ДатаОтгрузки");
КонецПроцедуры
&НаКлиенте
Процедура ДатаОтгрузкиПриИзменении(Элемент)
ЗаполнитьДатуВТЧ("ОбеспечениеМатериаламиИРаботами", Объект.ДатаОтгрузки);
КонецПроцедуры
&НаКлиенте
Процедура СостояниеОбеспеченияДинамическаяСтруктураНажатие(Элемент)
Возврат;
КонецПроцедуры
#КонецОбласти
#Область Услуги
&НаКлиенте
Процедура ВыполнениеРаботОднойДатойПриИзменении(Элемент)
ФлагОднойДатойПриИзмененииНаСервере(
"Услуги",
"ВыполнениеРаботОднойДатой",
"ДатаВыполнения");
КонецПроцедуры
&НаКлиенте
Процедура ДатаВыполненияПриИзменении(Элемент)
ОбщаяДатаПриИзмененииНаСервере(
"Услуги",
"ДатаВыполнения");
КонецПроцедуры
#КонецОбласти
#Область Доставка
&НаКлиенте
Процедура СпособМестоДоставкиПеревозчикПриИзменении(Элемент)
ЗаполнитьРеквизитыДоставкиНаСервере(Элемент.Имя);
КонецПроцедуры
&НаКлиенте
Процедура АдресДоставкиПриИзменении(Элемент)
ОбработатьИзменениеАдреса(Элемент, "АдресДоставки");
КонецПроцедуры
&НаКлиенте
Процедура АдресДоставкиОчистка(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ИменаРеквизитовАдресовДоставки = ДоставкаТоваровКлиентСервер.ИменаРеквизитовАдресовДоставки("АдресДоставки");
ДоставкаТоваровКлиент.ОчиститьПредставлениеАдреса(
Объект[ИменаРеквизитовАдресовДоставки.ИмяРеквизитаАдресаДоставки],
Объект[ИменаРеквизитовАдресовДоставки.ИмяРеквизитаАдресаДоставкиЗначенияПолей],
Объект[ИменаРеквизитовАдресовДоставки.ИмяРеквизитаАдресаДоставкиЗначение]);
КонецПроцедуры
&НаКлиенте
Процедура АдресДоставкиНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ИменаРеквизитовАдресовДоставки = ДоставкаТоваровКлиентСервер.ИменаРеквизитовАдресовДоставки("АдресДоставки");
ДоставкаТоваровКлиент.ОткрытьФормуВыбораАдресаИОбработатьРезультат(
Элемент,
Объект,
ИменаРеквизитовАдресовДоставки,
СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура АдресДоставкиОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ДоставкаТоваровКлиент.АдресДоставкиОбработкаВыбора(Элементы, Объект, Элемент.Имя, ВыбранноеЗначение);
Модифицированность = Истина;
КонецПроцедуры
&НаКлиенте
Процедура АдресДоставкиПеревозчикаПриИзменении(Элемент)
ОбработатьИзменениеАдреса(Элемент, "АдресДоставкиПеревозчика");
КонецПроцедуры
&НаКлиенте
Процедура АдресДоставкиПеревозчикаОчистка(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ИменаРеквизитовАдресовДоставки = ДоставкаТоваровКлиентСервер.ИменаРеквизитовАдресовДоставки("АдресДоставкиПеревозчика");
ДоставкаТоваровКлиент.ОчиститьПредставлениеАдреса(
Объект[ИменаРеквизитовАдресовДоставки.ИмяРеквизитаАдресаДоставки],
Объект[ИменаРеквизитовАдресовДоставки.ИмяРеквизитаАдресаДоставкиЗначенияПолей],
Объект[ИменаРеквизитовАдресовДоставки.ИмяРеквизитаАдресаДоставкиЗначение]);
КонецПроцедуры
&НаКлиенте
Процедура АдресДоставкиПеревозчикаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ИменаРеквизитовАдресовДоставки = ДоставкаТоваровКлиентСервер.ИменаРеквизитовАдресовДоставки("АдресДоставкиПеревозчика");
ДоставкаТоваровКлиент.ОткрытьФормуВыбораАдресаИОбработатьРезультат(
Элемент,
Объект,
ИменаРеквизитовАдресовДоставки,
СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура АдресДоставкиПеревозчикаОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ДоставкаТоваровКлиент.АдресДоставкиОбработкаВыбора(Элементы, Объект, Элемент.Имя, ВыбранноеЗначение);
Модифицированность = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ОсобыеУсловияПеревозкиПриИзменении(Элемент)
ОсобыеУсловияПеревозкиПриИзмененииСервер();
КонецПроцедуры
#КонецОбласти
#Область Дополнительно
&НаКлиенте
Процедура МенеджерПриИзменении(Элемент)
ЗаполнитьПодчиненныеСвойстваПоСтатистике("Менеджер");
КонецПроцедуры
&НаКлиенте
Процедура НомерВходящегоДокументаОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, СтандартнаяОбработка)
СписокЗаказовПоНомеру = ЗаказыПоДаннымПереработчика(Объект.Ссылка, Объект.Контрагент, Текст);
Если СписокЗаказовПоНомеру.Количество() = 0 Тогда
Возврат;
КонецЕсли;
СписокКнопок = Новый СписокЗначений;
Если СписокЗаказовПоНомеру.Количество() = 1 Тогда
ТекстВопроса = НСтр("ru='В информационной базе уже существует заказ с таким же номером по данным переработчика. Продолжить?'");
СписокКнопок.Добавить("ОткрытьСписокЗаказов", НСтр("ru = 'Открыть заказ'"));
Иначе
ТекстВопроса = НСтр("ru='В информационной базе уже существуют заказы с таким же номером по данным переработчика. Продолжить?'");
СписокКнопок.Добавить("ОткрытьСписокЗаказов", НСтр("ru = 'Открыть список заказов'"));
КонецЕсли;
СписокКнопок.Добавить("Продолжить", НСтр("ru = 'Продолжить'"));
ОписаниеОповещения =
Новый ОписаниеОповещения(
"НомерВходящегоДокументаОкончаниеВводаТекстаЗавершение",
ЭтаФорма,
Новый Структура("СписокЗаказов", СписокЗаказовПоНомеру));
ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, СписокКнопок);
КонецПроцедуры
&НаКлиенте
Процедура ВалютаПриИзменении(Элемент)
Если ВалютаДокумента = Объект.Валюта Тогда
Возврат;
КонецЕсли;
Если ЦенообразованиеКлиент.НеобходимПересчетВВалюту(Объект, ВалютаДокумента, "ПобочныеИзделия")
Или ЦенообразованиеКлиент.НеобходимПересчетВВалюту(Объект, ВалютаДокумента, "ОбеспечениеМатериаламиИРаботами")
Или ЦенообразованиеКлиент.НеобходимПересчетВВалюту(Объект, ВалютаДокумента, "Услуги") Тогда
ТекстВопроса = НСтр("ru='Пересчитать суммы в документе в валюту ""%Валюта%""?'");
ТекстВопроса = СтрЗаменить(ТекстВопроса, "%Валюта%", Объект.Валюта);
ОписаниеОповещения = Новый ОписаниеОповещения("ВопросПересчитатьСуммыЗавершение", ЭтаФорма);
ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
Иначе
ВалютаПриИзмененииЗавершение(Ложь);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЦенаВключаетНДСПриИзменении(Элемент)
ЦенаВключаетНДСПриИзмененииНаСервере(КэшированныеЗначения);
КонецПроцедуры
&НаКлиенте
Процедура НалогообложениеНДСПриИзменении(Элемент)
НалогообложениеНДСПриИзмененииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура ЗакупкаПодДеятельностьОчистка(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
КонецПроцедуры
&НаКлиенте
Процедура ВидЦеныПриИзменении(Элемент)
Если ЗначениеЗаполнено(Объект.ВидЦены)
И (Объект.ПобочныеИзделия.Количество()
Или Объект.ОбеспечениеМатериаламиИРаботами.Количество()) Тогда
ОписаниеОповещения = Новый ОписаниеОповещения("ВидЦеныПриИзмененииЗавершение", ЭтаФорма);
ТекстВопроса = НСтр("ru = 'Перезаполнить цены в табличных частях?'");
ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура НаправлениеДеятельностиПриИзменении(Элемент)
НаправлениеДеятельностиПриИзмененииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура ДатаСогласованияПриИзменении(Элемент)
ДатаСогласованияПриИзмененииНаСервере();
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыВыходныеИзделия
&НаКлиенте
Процедура ВыходныеИзделияВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
ТаблицаВыбор("ВыходныеИзделия", Поле, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
ОбработкаВыбораПодборНаСервере(ВыбранноеЗначение, "ВыходныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, ЭтоГруппа, Параметр)
ТаблицаПередНачаломДобавления("ВыходныеИзделия", Отказ);
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияПередНачаломИзменения(Элемент, Отказ)
ТаблицаПередНачаломИзменения(Отказ);
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
ТаблицаПриНачалеРедактирования("ВыходныеИзделия", НоваяСтрока, Копирование);
ВзаиморасчетыКлиент.ТабличнаяЧастьПриНачалеРедактирования(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияПередУдалением(Элемент, Отказ)
ТаблицаПередУдалением("ВыходныеИзделия", Элемент, Отказ);
ВзаиморасчетыКлиент.ТабличнаяЧастьПередУдалением(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ВыходныеИзделияПередУдалениемНаСервере()
Для Каждого ТекИдентификатор Из Элементы.ВыходныеИзделия.ВыделенныеСтроки Цикл
УдалитьГруппуЗатрат(ТекИдентификатор);
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияПриИзменении(Элемент)
ТаблицаПриИзменении("ВыходныеИзделия");
Если ВзаиморасчетыКлиент.ТабличнаяЧастьПриИзмененииЕстьИзменениеДатОтгрузок(ЭтотОбъект) Тогда
ВыходныеИзделияПриИзмененииНаСервере();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияПослеУдаления(Элемент)
ТаблицаПослеУдаления("ВыходныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияПередОкончаниемРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования, Отказ)
ТаблицаПередОкончаниемРедактирования("ВыходныеИзделия", Элемент, НоваяСтрока, ОтменаРедактирования, Отказ);
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияГруппаЗатратОчистка(Элемент, СтандартнаяОбработка)
ТаблицаГруппаЗатратОчистка("ВыходныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияГруппаЗатратОткрытие(Элемент, СтандартнаяОбработка)
ТаблицаГруппаЗатратОткрытие("ВыходныеИзделия", СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияГруппаЗатратНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ТаблицаГруппаЗатратНачалоВыбора("ВыходныеИзделия", СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияНоменклатураПриИзменении(Элемент)
ТаблицаНоменклатураПриИзменении("ВыходныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияХарактеристикаПриИзменении(Элемент)
ТаблицаХарактеристикаПриИзменении("ВыходныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияУпаковкаПриИзменении(Элемент)
ТаблицаУпаковкаПриИзменении("ВыходныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияКоличествоУпаковокПриИзменении(Элемент)
ТаблицаКоличествоУпаковокПриИзменении("ВыходныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияОтмененоПриИзменении(Элемент)
ТаблицаОтмененоПриИзменении("ВыходныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияПолучательПриИзменении(Элемент)
ТаблицаСкладПриИзменении("ВыходныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияСписатьНаРасходыПриИзменении(Элемент)
ТаблицаСписатьНаРасходыПриИзменении("ВыходныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияСтатьяРасходовНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ТаблицаСтатьяРасходовВыбор(Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияСтатьяРасходовПриИзменении(Элемент)
ТаблицаСтатьяРасходовПриИзменении(Элемент);
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияАналитикаРасходовНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ТаблицаАналитикаРасходовНачалоВыбора(Элемент, СтандартнаяОбработка)
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияАналитикаРасходовАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)
ТаблицаАналитикаРасходовАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияАналитикаРасходовОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка)
ТаблицаАналитикаРасходовОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыПобочныеИзделия
&НаКлиенте
Процедура ПобочныеИзделияОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
ОбработкаВыбораПодборНаСервере(ВыбранноеЗначение, "ПобочныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, ЭтоГруппа, Параметр)
ТаблицаПередНачаломДобавления("ПобочныеИзделия", Отказ);
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияПередНачаломИзменения(Элемент, Отказ)
ТаблицаПередНачаломИзменения(Отказ);
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
ТаблицаПриНачалеРедактирования("ПобочныеИзделия", НоваяСтрока, Копирование);
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияПриИзменении(Элемент)
ТаблицаПриИзменении("ПобочныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияПередУдалением(Элемент, Отказ)
ТаблицаПередУдалением("ПобочныеИзделия", Элемент, Отказ);
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияПослеУдаления(Элемент)
ТаблицаПослеУдаления("ПобочныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияПередОкончаниемРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования, Отказ)
ТаблицаПередОкончаниемРедактирования("ПобочныеИзделия", Элемент, НоваяСтрока, ОтменаРедактирования, Отказ);
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияГруппаЗатратОчистка(Элемент, СтандартнаяОбработка)
ТаблицаГруппаЗатратОчистка("ПобочныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияГруппаЗатратОткрытие(Элемент, СтандартнаяОбработка)
ТаблицаГруппаЗатратОткрытие("ПобочныеИзделия", СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияГруппаЗатратНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ТаблицаГруппаЗатратНачалоВыбора("ПобочныеИзделия", СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияНоменклатураПриИзменении(Элемент)
ТаблицаНоменклатураПриИзменении("ПобочныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияХарактеристикаПриИзменении(Элемент)
ТаблицаХарактеристикаПриИзменении("ПобочныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияУпаковкаПриИзменении(Элемент)
ТаблицаУпаковкаПриИзменении("ПобочныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияКоличествоУпаковокПриИзменении(Элемент)
ТаблицаКоличествоУпаковокПриИзменении("ПобочныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияЦенаПриИзменении(Элемент)
ТаблицаЦенаПриИзменении("ПобочныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияСуммаПриИзменении(Элемент)
ТаблицаСуммаПриИзменении("ПобочныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияОтмененоПриИзменении(Элемент)
ТаблицаОтмененоПриИзменении("ПобочныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияПолучательПриИзменении(Элемент)
ТаблицаСкладПриИзменении("ПобочныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияСписатьНаРасходыПриИзменении(Элемент)
ТаблицаСписатьНаРасходыПриИзменении("ПобочныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияСтатьяРасходовНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ТаблицаСтатьяРасходовВыбор(Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияСтатьяРасходовПриИзменении(Элемент)
ТаблицаСтатьяРасходовПриИзменении(Элемент);
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияАналитикаРасходовНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ТаблицаАналитикаРасходовНачалоВыбора(Элемент, СтандартнаяОбработка)
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияАналитикаРасходовАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)
ТаблицаАналитикаРасходовАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияАналитикаРасходовОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка)
ТаблицаАналитикаРасходовОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыОбеспечениеМатериаламиИРаботами
&НаКлиенте
Процедура ОбеспечениеМатериаламиИРаботамиВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
ТаблицаВыбор("ОбеспечениеМатериаламиИРаботами", Поле, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ОбеспечениеМатериаламиИРаботамиПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, ЭтоГруппа, Параметр)
ТаблицаПередНачаломДобавления("ОбеспечениеМатериаламиИРаботами", Отказ);
КонецПроцедуры
&НаКлиенте
Процедура ОбеспечениеМатериаламиИРаботамиПередНачаломИзменения(Элемент, Отказ)
ТаблицаПередНачаломИзменения(Отказ);
КонецПроцедуры
&НаКлиенте
Процедура ОбеспечениеМатериаламиИРаботамиПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
ТаблицаПриНачалеРедактирования("ОбеспечениеМатериаламиИРаботами", НоваяСтрока, Копирование);
КонецПроцедуры
&НаКлиенте
Процедура ОбеспечениеМатериаламиИРаботамиПриИзменении(Элемент)
ТаблицаПриИзменении("ОбеспечениеМатериаламиИРаботами");
КонецПроцедуры
&НаКлиенте
Процедура ОбеспечениеМатериаламиИРаботамиПередОкончаниемРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования, Отказ)
ТаблицаПередОкончаниемРедактирования("ОбеспечениеМатериаламиИРаботами", Элемент, НоваяСтрока, ОтменаРедактирования, Отказ);
КонецПроцедуры
&НаКлиенте
Процедура ОбеспечениеМатериаламиИРаботамиПередУдалением(Элемент, Отказ)
ТаблицаПередУдалением("ОбеспечениеМатериаламиИРаботами", Элемент, Отказ);
КонецПроцедуры
&НаКлиенте
Процедура ОбеспечениеМатериаламиИРаботамиПослеУдаления(Элемент)
ТаблицаПослеУдаления("ОбеспечениеМатериаламиИРаботами");
КонецПроцедуры
&НаКлиенте
Процедура ОбеспечениеМатериаламиИРаботамиГруппаЗатратОчистка(Элемент, СтандартнаяОбработка)
ТаблицаГруппаЗатратОчистка("ОбеспечениеМатериаламиИРаботами");
КонецПроцедуры
&НаКлиенте
Процедура ОбеспечениеМатериаламиИРаботамиГруппаЗатратОткрытие(Элемент, СтандартнаяОбработка)
ТаблицаГруппаЗатратОткрытие("ОбеспечениеМатериаламиИРаботами", СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ОбеспечениеМатериаламиИРаботамиГруппаЗатратНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ТаблицаГруппаЗатратНачалоВыбора("ОбеспечениеМатериаламиИРаботами", СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ОбеспечениеМатериаламиИРаботамиНоменклатураПриИзменении(Элемент)
ТаблицаНоменклатураПриИзменении("ОбеспечениеМатериаламиИРаботами");
КонецПроцедуры
&НаКлиенте
Процедура ОбеспечениеМатериаламиИРаботамиХарактеристикаПриИзменении(Элемент)
ТаблицаХарактеристикаПриИзменении("ОбеспечениеМатериаламиИРаботами");
КонецПроцедуры
&НаКлиенте
Процедура ОбеспечениеМатериаламиИРаботамиСерияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОткрытьПодборСерий(Элемент.ТекстРедактирования, Элементы.ОбеспечениеМатериаламиИРаботами.ТекущиеДанные);
КонецПроцедуры
&НаКлиенте
Процедура ОбеспечениеМатериаламиИРаботамиСерияПриИзменении(Элемент)
ТекущиеДанные = Элементы.ОбеспечениеМатериаламиИРаботами.ТекущиеДанные;
ВыбранноеЗначение = НоменклатураКлиентСервер.ВыбраннаяСерия();
ВыбранноеЗначение.Значение = ТекущиеДанные.Серия;
ВыбранноеЗначение.ИдентификаторТекущейСтроки = ТекущиеДанные.ПолучитьИдентификатор();
НоменклатураКлиент.ОбработатьУказаниеСерии(ЭтаФорма, ПараметрыУказанияСерий.ОбеспечениеМатериаламиИРаботами, ВыбранноеЗначение);
КонецПроцедуры
&НаКлиенте
Процедура ОбеспечениеМатериаламиИРаботамиВариантОбеспеченияПриИзменении(Элемент)
Перем ПараметрыФормы;
Если ОбеспечениеВДокументахКлиент.ОткрытьФормуВыбораСкладаИСерий(ЭтотОбъект) Тогда
ВариантПолученияПараметров = ОбеспечениеВДокументахКлиентСервер.РежимВыборДействия();
ПараметрыФормы = ПараметрыФормыЗапросаКоличестваИСерий(ВариантПолученияПараметров);
КонецЕсли;
ОбеспечениеВДокументахКлиент.ВариантОбеспеченияПриИзменении(
ЭтотОбъект,
ПараметрыФормы,
"ОбработатьВыборСкладаИСерии",
Истина,
"ОбеспечениеМатериаламиИРаботамиВариантОбеспеченияПриИзмененииЗавершение");
КонецПроцедуры
&НаКлиенте
Процедура ОбеспечениеМатериаламиИРаботамиВариантОбеспеченияОчистка(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
КонецПроцедуры
&НаКлиенте
Процедура ОбеспечениеМатериаламиИРаботамиВариантОбеспеченияОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
ОбеспечениеВДокументахКлиент.ВариантОбеспеченияОбработкаВыбора(
ЭтаФорма,
Элементы.ОбеспечениеМатериаламиИРаботами.ТекущиеДанные,
ВыбранноеЗначение);
КонецПроцедуры
&НаКлиенте
Процедура ОбеспечениеМатериаламиИРаботамиОбособленноПриИзменении(Элемент)
ТекущиеДанные = Элементы.ОбеспечениеМатериаламиИРаботами.ТекущиеДанные;
ОбеспечениеВДокументахКлиент.ОбособленноПриИзменении(ТекущиеДанные);
ОбеспечениеМатериаламиИРаботамиОбособленноПриИзмененииНаСервере(ТекущиеДанные.ПолучитьИдентификатор(), КэшированныеЗначения);
КонецПроцедуры
&НаСервере
Процедура ОбеспечениеМатериаламиИРаботамиОбособленноПриИзмененииНаСервере(ТекущийИдентификатор, КэшированныеЗначения)
ТекущиеДанные = Объект.ОбеспечениеМатериаламиИРаботами.НайтиПоИдентификатору(ТекущийИдентификатор);
ОписаниеГруппыЗатрат = ДанныеГруппыЗатратПоНомеруГруппыЗатрат(ТекущиеДанные.НомерГруппыЗатрат);
ТекущиеДанные.Назначение =
?(ТекущиеДанные.Обособленно,
ОписаниеГруппыЗатрат.НазначениеОбеспечения,
Неопределено);
ОбновитьКолонкуДоступноНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура ОбеспечениеМатериаламиИРаботамиСкладНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ПараметрыФормы = ПараметрыФормыЗапросаКоличестваИСерий(ОбеспечениеВДокументахКлиентСервер.РежимПодборСкладов());
Если ТипЗнч(ПараметрыФормы) = Тип("Структура") Тогда
СтандартнаяОбработка = Ложь;
ОткрытьФорму(
"Обработка.ЗапросКоличестваИСерий.Форма",
ПараметрыФормы,
ЭтаФорма,,,,
Новый ОписаниеОповещения("ОбработатьВыборСкладаИСерии", ЭтаФорма, ПараметрыФормы));
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбеспечениеМатериаламиИРаботамиСкладПриИзменении(Элемент)
ТаблицаСкладПриИзменении("ОбеспечениеМатериаламиИРаботами");
КонецПроцедуры
&НаКлиенте
Процедура ОбеспечениеМатериаламиИРаботамиУпаковкаПриИзменении(Элемент)
ТаблицаУпаковкаПриИзменении("ОбеспечениеМатериаламиИРаботами");
КонецПроцедуры
&НаКлиенте
Процедура ОбеспечениеМатериаламиИРаботамиКоличествоУпаковокПриИзменении(Элемент)
ТаблицаКоличествоУпаковокПриИзменении("ОбеспечениеМатериаламиИРаботами");
КонецПроцедуры
&НаКлиенте
Процедура ОбеспечениеМатериаламиИРаботамиПроизводитсяПриИзменении(Элемент)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура ОбеспечениеМатериаламиИРаботамиСпецификацияПриИзменении(Элемент)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура ОбеспечениеМатериаламиИРаботамиЦенаПриИзменении(Элемент)
ТаблицаЦенаПриИзменении("ОбеспечениеМатериаламиИРаботами");
КонецПроцедуры
&НаКлиенте
Процедура ОбеспечениеМатериаламиИРаботамиСуммаПриИзменении(Элемент)
ТаблицаСуммаПриИзменении("ОбеспечениеМатериаламиИРаботами");
КонецПроцедуры
&НаКлиенте
Процедура ОбеспечениеМатериаламиИРаботамиОтмененоПриИзменении(Элемент)
ТаблицаОтмененоПриИзменении("ОбеспечениеМатериаламиИРаботами");
КонецПроцедуры
&НаКлиенте
Процедура ОбеспечениеМатериаламиИРаботамиНазначениеОбеспеченияПриИзменении(Элемент)
Возврат;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыУслуги
&НаКлиенте
Процедура УслугиВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
ТаблицаВыбор("Услуги", Поле, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура УслугиПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, ЭтоГруппа, Параметр)
ТаблицаПередНачаломДобавления("Услуги", Отказ);
КонецПроцедуры
&НаКлиенте
Процедура УслугиПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
ТаблицаПриНачалеРедактирования("Услуги", НоваяСтрока, Копирование);
КонецПроцедуры
&НаКлиенте
Процедура УслугиПриИзменении(Элемент)
ТаблицаПриИзменении("Услуги");
КонецПроцедуры
&НаКлиенте
Процедура УслугиПередОкончаниемРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования, Отказ)
ТаблицаПередОкончаниемРедактирования("Услуги", Элемент, НоваяСтрока, ОтменаРедактирования, Отказ);
КонецПроцедуры
&НаКлиенте
Процедура УслугиГруппаЗатратОчистка(Элемент, СтандартнаяОбработка)
ТаблицаГруппаЗатратОчистка("Услуги");
КонецПроцедуры
&НаКлиенте
Процедура УслугиГруппаЗатратОткрытие(Элемент, СтандартнаяОбработка)
ТаблицаГруппаЗатратОткрытие("Услуги", СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура УслугиГруппаЗатратНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ТаблицаГруппаЗатратНачалоВыбора("Услуги", СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура УслугиНоменклатураПриИзменении(Элемент)
ТаблицаНоменклатураПриИзменении("Услуги");
КонецПроцедуры
&НаКлиенте
Процедура УслугиХарактеристикаПриИзменении(Элемент)
ТаблицаХарактеристикаПриИзменении("Услуги");
КонецПроцедуры
&НаКлиенте
Процедура УслугиКоличествоПриИзменении(Элемент)
ТаблицаКоличествоУпаковокПриИзменении("Услуги");
КонецПроцедуры
&НаКлиенте
Процедура УслугиЦенаПриИзменении(Элемент)
ТаблицаЦенаПриИзменении("Услуги");
КонецПроцедуры
&НаКлиенте
Процедура УслугиВидЦеныПоставщикаПриИзменении(Элемент)
ТекущиеДанные = Элементы.Услуги.ТекущиеДанные;
СтруктураДействий = Новый Структура;
ДобавитьДействияЗаполнитьЦену(ЭтаФорма, "Услуги", СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущиеДанные, СтруктураДействий, КэшированныеЗначения);
КонецПроцедуры
&НаКлиенте
Процедура УслугиСуммаПриИзменении(Элемент)
ТаблицаСуммаПриИзменении("Услуги");
КонецПроцедуры
&НаКлиенте
Процедура УслугиСтавкаНДСПриИзменении(Элемент)
ТекущиеДанные = Элементы.Услуги.ТекущиеДанные;
СтруктураДействий = Новый Структура;
ДобавитьДействияПересчетаСумм(ЭтаФорма, "Услуги", СтруктураДействий, "СуммаНДС, СуммаСНДС");
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущиеДанные, СтруктураДействий, КэшированныеЗначения);
КонецПроцедуры
&НаКлиенте
Процедура УслугиСуммаНДСПриИзменении(Элемент)
ТекущиеДанные = Элементы.Услуги.ТекущиеДанные;
СтруктураДействий = Новый Структура;
ДобавитьДействияПересчетаСумм(ЭтаФорма, "Услуги", СтруктураДействий, "СуммаСНДС");
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущиеДанные, СтруктураДействий, КэшированныеЗначения);
КонецПроцедуры
&НаКлиенте
Процедура УслугиОтмененоПриИзменении(Элемент)
ТаблицаОтмененоПриИзменении("Услуги");
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыОбеспечениеМатериаламиИРаботами
&НаКлиенте
Процедура ОбеспечениеМатериаламиИРаботамиВариантОбеспеченияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ТекущиеДанные = Элементы.ОбеспечениеМатериаламиИРаботами.ТекущиеДанные;
ОбеспечениеКлиент.ДобавитьВПараметрыВыбораВариантаОбеспеченияДействиеПереданРанее(Элемент, ТекущиеДанные);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыОбщее
&НаКлиенте
Процедура ТаблицаВыбор(ИмяТЧ, Поле, СтандартнаяОбработка)
ТекущиеДанные = Элементы[ИмяТЧ].ТекущиеДанные;
Если ИмяТЧ = "ВыходныеИзделия"
И (Поле = Элементы[ИмяТЧ + "ДоляСтоимости"]
Или Поле = Элементы[ИмяТЧ + "ДоляСтоимостиПроцент"]
Или Поле = Элементы[ИмяТЧ + "ЕстьОшибкиЗаполненияДолиСтоимости"])
И Не ТекущиеДанные.Отменено Тогда
ОткрытьФормуВводаДолиСтоимости(ТекущиеДанные, СтандартнаяОбработка);
ИначеЕсли Поле = Элементы.ОбеспечениеМатериаламиИРаботамиДоступно
И НЕ ТолькоПросмотр Тогда
СтандартнаяОбработка = Ложь;
ПараметрыФормы = ПараметрыФормыЗапросаКоличестваИСерий(Неопределено);
Если ПараметрыФормы <> Неопределено Тогда
ОткрытьФорму("Обработка.ЗапросКоличестваИСерий.Форма", ПараметрыФормы, ЭтаФорма);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаПередНачаломДобавления(ИмяТЧ, Отказ)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаПередНачаломИзменения(Отказ)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаПриНачалеРедактирования(ИмяТЧ, НоваяСтрока, Копирование)
ТекущиеДанные = Элементы[ИмяТЧ].ТекущиеДанные;
РаботаСТабличнымиЧастямиКлиент.КэшироватьТекущуюСтроку(Элементы[ИмяТЧ], ЭтаФорма);
СтруктураДействий = Новый Структура;
Если НоваяСтрока Тогда
ТекущиеДанные.КодСтроки = 0;
ДобавитьДействияПроверитьЗаполнитьСклад(ЭтаФорма, ИмяТЧ, СтруктураДействий);
Если Не Копирование Тогда
ДобавитьДействияЗаполнитьВидЦен(ЭтаФорма, ИмяТЧ, СтруктураДействий);
ДобавитьДействияИнициализироватьСтатьюИАналитику(ЭтаФорма, ИмяТЧ, СтруктураДействий);
КонецЕсли;
КонецЕсли;
Если ИмяТЧ = "ВыходныеИзделия"
Или ИмяТЧ = "ПобочныеИзделия" Тогда
ОграничитьТипПолучателя(ИмяТЧ, ТекущиеДанные);
КонецЕсли;
Если Копирование Тогда
ДобавитьДействияОбеспечения(
ЭтаФорма,
ИмяТЧ,
СтруктураДействий,
"ВариантОбеспечения, Доступно, СкладОбязателен, ДатаОтгрузкиОбязательна");
ДобавитьДействияПроверитьСериюРассчитатьСтатус(ЭтаФорма, ИмяТЧ, СтруктураДействий, ТекущиеДанные);
КонецЕсли;
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущиеДанные, СтруктураДействий, КэшированныеЗначения);
Если ИмяТЧ = "ОбеспечениеМатериаламиИРаботами" Тогда
Если Копирование Тогда
Если Не ТекущиеДанные.Обособленно Тогда
ТекущиеДанные.Назначение = Неопределено;
КонецЕсли;
ЗаполнитьЗависимыеСлужебныеРеквизитыОбеспечения(ЭтаФорма);
КонецЕсли;
СкладыКлиент.ОбновитьКешированныеЗначения(
Элементы.ОбеспечениеМатериаламиИРаботами,
КэшированныеЗначения,
ПараметрыУказанияСерий.ОбеспечениеМатериаламиИРаботами,
Копирование);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаПередУдалением(ИмяТЧ, Элемент, Отказ)
РаботаСТабличнымиЧастямиКлиент.КэшироватьТекущуюСтроку(Элементы[ИмяТЧ], ЭтаФорма);
Если ИмяТЧ = "ВыходныеИзделия"
Тогда
ВыходныеИзделияПередУдалениемНаСервере();
КонецЕсли;
Если ИмяТЧ = "ОбеспечениеМатериаламиИРаботами" Тогда
НоменклатураКлиент.ОбновитьКешированныеЗначенияДляУчетаСерий(
Элемент,
КэшированныеЗначения,
ПараметрыУказанияСерий.ОбеспечениеМатериаламиИРаботами);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаПослеУдаления(ИмяТЧ)
ТаблицаПослеУдаленияНаСервере(ИмяТЧ);
КонецПроцедуры
&НаСервере
Процедура ТаблицаПослеУдаленияНаСервере(ИмяТЧ)
Для Каждого ТекущиеДанные Из ГруппыЗатрат Цикл
ТаблицаЗаполнитьЗависимыеСлужебныеРеквизитыГруппыЗатрат(ИмяТЧ, ТекущиеДанные.НомерГруппыЗатрат);
КонецЦикла;
Если ИмяТЧ = "ВыходныеИзделия" Тогда
РассчитатьПроцентРаспределенияЗатратНаВыходныеИзделия();
КонецЕсли;
Если ИмяТЧ = "ОбеспечениеМатериаламиИРаботами" Тогда
ОбновитьКолонкуДоступноНаСервере();
ЗаполнитьЗависимыеСлужебныеРеквизитыОбеспечения(ЭтаФорма);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаПередОкончаниемРедактирования(ИмяТЧ, Элемент, НоваяСтрока, ОтменаРедактирования, Отказ)
Если НоваяСтрока
И ОтменаРедактирования Тогда
Возврат;
КонецЕсли;
ТекущиеДанные = Элементы[ИмяТЧ].ТекущиеДанные;
Если НоваяСтрока Тогда
ЗаполнитьДатуВСтрокеТЧОбщейДатой(ЭтотОбъект, ИмяТЧ, ТекущиеДанные);
КонецЕсли;
ТаблицаПередОкончаниемРедактированияНаСервере(
ИмяТЧ,
ТекущиеДанные.ПолучитьИдентификатор(),
НоваяСтрока,
ОтменаРедактирования,
Отказ);
КонецПроцедуры
&НаСервере
Процедура ТаблицаПередОкончаниемРедактированияНаСервере(ИмяТЧ, ТекущийИдентификатор, НоваяСтрока, ОтменаРедактирования, Отказ)
ТекущиеДанные = Объект[ИмяТЧ].НайтиПоИдентификатору(ТекущийИдентификатор);
КэшСтроки = РаботаСТабличнымиЧастямиКлиентСервер.КэшСтроки(Элементы[ИмяТЧ], ЭтотОбъект);
Если ИмяТЧ = "ВыходныеИзделия" Тогда
ДобавитьИзменитьГруппуЗатрат(ТекущиеДанные);
Группировки = Новый Массив;
Группировки.Добавить(КэшСтроки.НомерГруппыЗатрат);
Группировки.Добавить(ТекущиеДанные.НомерГруппыЗатрат);
РассчитатьПроцентРаспределенияЗатратНаВыходныеИзделия(Группировки);
Иначе
УстановитьНомерГруппыЗатратПоУмолчанию(ИмяТЧ, ТекущийИдентификатор);
КонецЕсли;
Если ИмяТЧ = "ОбеспечениеМатериаламиИРаботами" Тогда
ОбновитьКолонкуДоступноНаСервере();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаПриИзменении(ИмяТЧ)
Если ИмяТЧ = "ВыходныеИзделия"
Или ИмяТЧ = "ПобочныеИзделия" Тогда
СписокРеквизитов = "КоличествоИзделий";
ИначеЕсли ИмяТЧ = "Услуги" Тогда
СписокРеквизитов = "СуммаУслуг";
Иначе
СписокРеквизитов = "СуммаЗалоговая";
КонецЕсли;
РассчитатьИтогиДокумента(ЭтаФорма, СписокРеквизитов);
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаГруппаЗатратОчистка(ИмяТЧ)
ТекущиеДанные = Элементы[ИмяТЧ].ТекущиеДанные;
НомерГруппыЗатратДоИзменения = ТекущиеДанные.НомерГруппыЗатрат;
ТекущиеДанные.НомерГруппыЗатрат = 0;
ТекущиеДанные.ГруппаЗатрат = "";
Если ИмяТЧ = "ОбеспечениеМатериаламиИРаботами" Тогда
ТекущиеДанные.Назначение = Неопределено;
ОбновитьКолонкуДоступноНаСервере();
КонецЕсли;
ТаблицаЗаполнитьЗависимыеСлужебныеРеквизитыГруппыЗатрат(ИмяТЧ, НомерГруппыЗатратДоИзменения);
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаГруппаЗатратОткрытие(ИмяТЧ, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ТекущиеДанные = Элементы[ИмяТЧ].ТекущиеДанные;
Если Объект.ГруппировкаЗатрат =
ПредопределенноеЗначение("Перечисление.ГруппировкиЗатратВЗаказеПереработчику.ПоЭтапамПроизводства")
И ЗначениеЗаполнено(ТекущиеДанные.Распоряжение) Тогда
ПоказатьЗначение(, ТекущиеДанные.Распоряжение);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаГруппаЗатратНачалоВыбора(ИмяТЧ, СтандартнаяОбработка = Ложь)
СтандартнаяОбработка = Ложь;
Если Элементы[ИмяТЧ].ВыделенныеСтроки.Количество() = 0 Тогда
ТекстПредупреждения = НСтр("ru = 'Необходимо выбрать строки, для которых будет заполнена группа затрат.'");
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстПредупреждения);
Возврат;
КонецЕсли;
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("ГруппировкаЗатрат", Объект.ГруппировкаЗатрат);
ПараметрыФормы.Вставить("НомерГруппыЗатрат", Элементы[ИмяТЧ].ТекущиеДанные.НомерГруппыЗатрат);
ПараметрыФормы.Вставить("АдресХранилищаГруппЗатрат", ПоместитьДанныеГруппЗатратВХранилище(ИмяТЧ));
ПараметрыФормы.Вставить(
"ПоляГруппыЗатрат",
ПереработкаНаСторонеКлиентСервер.ПереченьПолейГруппыЗатратЗаказаПереработчику(Объект.ГруппировкаЗатрат));
ОписаниеОповещения = Новый ОписаниеОповещения("ТаблицаГруппаЗатратНачалоВыбораЗавершение", ЭтаФорма, ИмяТЧ);
ОткрытьФорму("ОбщаяФорма.ВыборГруппыЗатратПриПередачеВПереработку", ПараметрыФормы,,,,, ОписаниеОповещения);
КонецПроцедуры
&НаСервере
Процедура ТаблицаЗаполнитьЗависимыеСлужебныеРеквизитыГруппыЗатрат(ИмяТЧ, НомерГруппыЗатрат)
Если ИмяТЧ = "ВыходныеИзделия"
Тогда
Если Не НомерГруппыЗатрат = 0 Тогда
ЗаполнитьЗависимыеСлужебныеРеквизитыГруппыЗатрат(
ДанныеГруппыЗатратПоНомеруГруппыЗатрат(НомерГруппыЗатрат));
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаНоменклатураПриИзменении(ИмяТЧ)
ТекущиеДанные = Элементы[ИмяТЧ].ТекущиеДанные;
СтруктураДействий = Новый Структура;
ДобавитьДействияПриИзмененииНоменклатуры(ЭтотОбъект, ИмяТЧ, СтруктураДействий);
ДобавитьДействияПроверитьЗаполнитьСпецификацию(ЭтотОбъект, ИмяТЧ, СтруктураДействий, ТекущиеДанные);
ДобавитьДействияПроверитьСериюРассчитатьСтатус(ЭтотОбъект, ИмяТЧ, СтруктураДействий, ТекущиеДанные);
ДобавитьДействияПроверитьЗаполнитьСклад(ЭтотОбъект, ИмяТЧ, СтруктураДействий);
ДобавитьДействияЗаполнитьЦену(ЭтотОбъект, ИмяТЧ, СтруктураДействий);
ДобавитьДействияОбеспечения(
ЭтотОбъект,
ИмяТЧ,
СтруктураДействий,
"ВариантОбеспечения,ДоступноВДругихСтроках,СкладОбязателен,ДатаОтгрузкиОбязательна");
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущиеДанные, СтруктураДействий, КэшированныеЗначения);
Если ИмяТЧ = "ВыходныеИзделия"
Или ИмяТЧ = "ПобочныеИзделия" Тогда
ОграничитьТипПолучателя(ИмяТЧ, ТекущиеДанные)
КонецЕсли;
ОбновитьКолонкуДоступноНаКлиенте(ИмяТЧ, СтруктураДействий, ТекущиеДанные);
Если ИмяТЧ = "ОбеспечениеМатериаламиИРаботами" Тогда
ЗаполнитьЗависимыеСлужебныеРеквизитыОбеспечения(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаХарактеристикаПриИзменении(ИмяТЧ)
ТекущиеДанные = Элементы[ИмяТЧ].ТекущиеДанные;
СтруктураДействий = Новый Структура;
ДобавитьДействияПриИзмененииХарактеристики(ЭтотОбъект, ИмяТЧ, СтруктураДействий);
ДобавитьДействияПроверитьЗаполнитьСпецификацию(ЭтотОбъект, ИмяТЧ, СтруктураДействий, ТекущиеДанные);
ДобавитьДействияПроверитьЗаполнитьДолюСтоимости(ЭтотОбъект, ИмяТЧ, СтруктураДействий);
ДобавитьДействияЗаполнитьЦену(ЭтотОбъект, ИмяТЧ, СтруктураДействий);
ДобавитьДействияОбеспечения(
ЭтотОбъект,
ИмяТЧ,
СтруктураДействий,
"ВариантОбеспечения,ДоступноВДругихСтроках,СкладОбязателен,ДатаОтгрузкиОбязательна");
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущиеДанные, СтруктураДействий, КэшированныеЗначения);
ОбновитьКолонкуДоступноНаКлиенте(ИмяТЧ, СтруктураДействий, ТекущиеДанные);
Если ИмяТЧ = "ОбеспечениеМатериаламиИРаботами" Тогда
ЗаполнитьЗависимыеСлужебныеРеквизитыОбеспечения(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаУпаковкаПриИзменении(ИмяТЧ)
ТекущиеДанные = Элементы[ИмяТЧ].ТекущиеДанные;
СтруктураДействий = Новый Структура;
ДобавитьДействияПриИзмененииУпаковки(ЭтаФорма, ИмяТЧ, СтруктураДействий, ТекущиеДанные);
ДобавитьДействияОбеспечения(ЭтаФорма, ИмяТЧ, СтруктураДействий, "ДоступноВДругихСтроках");
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущиеДанные, СтруктураДействий, КэшированныеЗначения);
ОбновитьКолонкуДоступноНаКлиенте(ИмяТЧ, СтруктураДействий, ТекущиеДанные);
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаКоличествоУпаковокПриИзменении(ИмяТЧ)
ТекущиеДанные = Элементы[ИмяТЧ].ТекущиеДанные;
СтруктураДействий = Новый Структура;
ДобавитьДействияПриИзмененииКоличества(ЭтаФорма, ИмяТЧ, СтруктураДействий);
ДобавитьДействияОбеспечения(ЭтаФорма, ИмяТЧ, СтруктураДействий, "ДоступноВДругихСтроках");
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущиеДанные, СтруктураДействий, КэшированныеЗначения);
ОбновитьКолонкуДоступноНаКлиенте(ИмяТЧ, СтруктураДействий, ТекущиеДанные);
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаЦенаПриИзменении(ИмяТЧ)
ТекущиеДанные = Элементы[ИмяТЧ].ТекущиеДанные;
СтруктураДействий = Новый Структура;
Если ИмяТЧ = "Услуги" Тогда
СписокРеквизитов = "Сумма, СуммаНДС, СуммаСНДС";
Иначе
СписокРеквизитов = "Сумма";
КонецЕсли;
ДобавитьДействияПересчетаСумм(ЭтаФорма, ИмяТЧ, СтруктураДействий, СписокРеквизитов);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущиеДанные, СтруктураДействий, КэшированныеЗначения);
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаСуммаПриИзменении(ИмяТЧ)
ТекущиеДанные = Элементы[ИмяТЧ].ТекущиеДанные;
СтруктураДействий = Новый Структура;
Если ИмяТЧ = "Услуги" Тогда
СписокРеквизитов = "Цена, СуммаНДС, СуммаСНДС";
Иначе
СписокРеквизитов = "Цена";
КонецЕсли;
ДобавитьДействияПересчетаСумм(ЭтаФорма, ИмяТЧ, СтруктураДействий, СписокРеквизитов);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущиеДанные, СтруктураДействий, КэшированныеЗначения);
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаСкладПриИзменении(ИмяТЧ)
ТекущиеДанные = Элементы[ИмяТЧ].ТекущиеДанные;
СтруктураДействий = Новый Структура;
ДобавитьДействияПриИзмененииСклада(ЭтаФорма, ИмяТЧ, СтруктураДействий);
ДобавитьДействияОбеспечения(
ЭтаФорма,
ИмяТЧ,
СтруктураДействий,
"ДоступноВДругихСтроках");
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущиеДанные, СтруктураДействий, КэшированныеЗначения);
ОбновитьКолонкуДоступноНаКлиенте(ИмяТЧ, СтруктураДействий, ТекущиеДанные);
Если ИмяТЧ = "ОбеспечениеМатериаламиИРаботами"
Или СкладИзделияВТЧ Тогда
ТаблицаСкладПриИзмененииНаСервере(ИмяТЧ);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ТаблицаСкладПриИзмененииНаСервере(ИмяТЧ)
Если ИмяТЧ = "ОбеспечениеМатериаламиИРаботами" Тогда
ЗаполнитьЗависимыеСлужебныеРеквизитыОбеспечения(ЭтаФорма);
ОбновитьТаблицуСкладовМатериалы();
ОбновитьКартинкуГруппыСкладов(
ТаблицаСкладовМатериалы,
НадписьНесколькоСкладовМатериалы,
Элементы.КартинкаНесколькоСкладовМатериалы);
Иначе
ОбновитьТаблицуСкладовИзделий();
ОбновитьКартинкуГруппыСкладов(
ТаблицаСкладовИзделия,
НадписьНесколькоСкладовИзделия,
Элементы.КартинкаНесколькоСкладовИзделия);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаСписатьНаРасходыПриИзменении(ИмяТЧ)
ТекущиеДанные = Элементы[ИмяТЧ].ТекущиеДанные;
Если ТекущиеДанные.СписатьНаРасходы Тогда
ТекущиеДанные.Назначение = Неопределено;
КонецЕсли;
СтруктураДействий = Новый Структура;
ДобавитьДействияПроверитьЗаполнитьСклад(ЭтаФорма, ИмяТЧ, СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущиеДанные, СтруктураДействий, КэшированныеЗначения);
ДоходыИРасходыКлиентСервер.ПриИзмененииРеквизитаДоступностиСтатьиВСтроке(ЭтаФорма, ТекущиеДанные, "Объект." + ИмяТЧ);
ОграничитьТипПолучателя(ИмяТЧ, ТекущиеДанные);
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаСтатьяРасходовВыбор(Элемент, СтандартнаяОбработка)
ДоходыИРасходыКлиент.НачалоВыбораСтатьи(ЭтаФорма, Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаСтатьяРасходовПриИзменении(Элемент)
ДоходыИРасходыКлиентСервер.СтатьяПриИзменении(ЭтаФорма, Элемент);
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаАналитикаРасходовНачалоВыбора(Элемент, СтандартнаяОбработка)
ДоходыИРасходыКлиент.НачалоВыбораАналитикиРасходов(ЭтаФорма, Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаАналитикаРасходовАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка)
ДоходыИРасходыКлиент.АвтоПодборАналитикиРасходов(ЭтаФорма, Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаАналитикаРасходовОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка)
ДоходыИРасходыКлиент.ОкончаниеВводаТекстаАналитикиРасходов(ЭтаФорма, Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаОтмененоПриИзменении(ИмяТЧ)
ТекущиеДанные = Элементы[ИмяТЧ].ТекущиеДанные;
Если НЕ ТекущиеДанные.Отменено Тогда
ТекущиеДанные.ПричинаОтмены = Неопределено;
КонецЕсли;
ТаблицаОтмененоПриИзмененииНаСервере(ИмяТЧ, ТекущиеДанные.ПолучитьИдентификатор());
КонецПроцедуры
&НаСервере
Процедура ТаблицаОтмененоПриИзмененииНаСервере(ИмяТЧ, ТекущийИдентификатор)
ТекущиеДанные = Объект[ИмяТЧ].НайтиПоИдентификатору(ТекущийИдентификатор);
ТаблицаЗаполнитьЗависимыеСлужебныеРеквизитыГруппыЗатрат(ИмяТЧ, ТекущиеДанные.НомерГруппыЗатрат);
Если ИмяТЧ = "ВыходныеИзделия"
Тогда
ВыделенныеСтроки = Новый Массив;
ВыделенныеСтроки.Добавить(ТекущийИдентификатор);
ОтменитьСтрокиГруппыЗатрат(ИмяТЧ, ВыделенныеСтроки);
КонецЕсли;
Если ИмяТЧ = "ОбеспечениеМатериаламиИРаботами"
Или ИмяТЧ = "Услуги" Тогда
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты(ИмяТЧ));
ДобавитьДействияОбеспечения(
ЭтаФорма,
ИмяТЧ,
СтруктураДействий,
"СкладОбязателен, ДатаОтгрузкиОбязательна");
ДобавитьДействияПроверитьСериюРассчитатьСтатус(ЭтаФорма, ИмяТЧ, СтруктураДействий, ТекущиеДанные);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокуТЧ(ТекущиеДанные, СтруктураДействий, Неопределено);
Если ИмяТЧ = "ОбеспечениеМатериаламиИРаботами" Тогда
ОбновитьКолонкуДоступноНаСервере();
ЗаполнитьЗависимыеСлужебныеРеквизитыОбеспечения(ЭтаФорма);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
#Область Основное
&НаКлиенте
Процедура ЗакрытьЗаказ(Команда)
Если Модифицированность Или Не Объект.Проведен Тогда
ПоказатьВопрос(
Новый ОписаниеОповещения("ЗакрытьЗаказЗавершение", ЭтаФорма),
НСтр("ru = 'Необходимо провести документ для выполнения операции. Провести документ?'"),
РежимДиалогаВопрос.ДаНет);
Иначе
ЗакрытьЗаказФрагмент();
Модифицированность = Истина;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗачетОплаты(Команда)
ВзаиморасчетыКлиент.ЗачетОплаты(ЭтаФорма, Элементы.ЗачетОплатыФорма);
КонецПроцедуры
#КонецОбласти
#Область ВыходныеИзделия
&НаКлиенте
Процедура ВыходныеИзделияПодобратьТовары(Команда)
ТаблицаПодобратьТовары("ВыходныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияПодобратьПоЭтапамПроизводства(Команда)
ТаблицаПодобратьПоЭтапамПроизводства("ВыходныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияПерезаполнитьПоСпецификациям(Команда)
ТекущиеДанные = Элементы.ВыходныеИзделия.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
ПоказатьПредупреждение(, НСтр("ru = 'В таблице ""Выходные изделия"" не выбрано ни одной строки.
|Заполнение невозможно.'"));
Возврат;
КонецЕсли;
СписокГрупп = Новый Массив;
Для Каждого ИдентификаторСтроки Из Элементы.ВыходныеИзделия.ВыделенныеСтроки Цикл
ТекущиеДанные = Объект.ВыходныеИзделия.НайтиПоИдентификатору(ИдентификаторСтроки);
Если ТекущиеДанные.Отменено Тогда
Продолжить;
ИначеЕсли ЗначениеЗаполнено(ТекущиеДанные.Спецификация) Тогда
СписокГрупп.Добавить(ТекущиеДанные.НомерГруппыЗатрат);
КонецЕсли;
КонецЦикла;
СписокГрупп = ОбщегоНазначенияКлиентСервер.СвернутьМассив(СписокГрупп);
Если СписокГрупп.Количество() = 0 Тогда
ТекстПредупреждения = НСтр("ru='Необходимо выбрать строки, для которых возможно перезаполнение по спецификации.'");
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстПредупреждения);
Возврат;
КонецЕсли;
Если Объект.ПобочныеИзделия.Количество() = 0
И Объект.ОбеспечениеМатериаламиИРаботами.Количество() = 0
И Объект.Услуги.Количество() = 0 Тогда
ПерезаполнитьПоСпецификациямНаСервере(СписокГрупп);
Иначе
ТекстВопроса = НСтр("ru = 'Побочные изделия, материалы и работы, услуги по выбранным строкам будут очищены.
|Продолжить?'");
ОписаниеОповещения = Новый ОписаниеОповещения("ВыходныеИзделияПерезаполнитьПоСпецификациямЗавершение", ЭтаФорма, СписокГрупп);
ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияЗаполнитьГруппуЗатрат(Команда)
ТаблицаЗаполнитьГруппуЗатрат("ВыходныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияЗаполнитьДатуПоступления(Команда)
ТаблицаЗаполнитьДату("ВыходныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияЗаполнитьПолучателя(Команда)
ТаблицаЗаполнитьСкладПодразделение("ВыходныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияЗаполнитьПричинуОтмены(Команда)
ТаблицаЗаполнитьПричинуОтмены("ВыходныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияОтменитьВыделенныеСтроки(Команда)
ТаблицаОтменитьВыделенныеСтроки("ВыходныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияОтменитьНепоставленныеСтроки(Команда)
ТаблицаОтменитьНеобработанныеСтроки("ВыходныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияСкрыватьОтмененныеСтроки(Команда)
ТаблицаСкрыватьОтмененныеСтроки("ВыходныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияСкопироватьСтроки(Команда)
ТаблицаСкопироватьСтроки("ВыходныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияВставитьСтроки(Команда)
ТаблицаВставитьСтроки("ВыходныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияРазбитьСтроку(Команда)
ТаблицаРазбитьСтроку("ВыходныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияПоискПоШтрихкоду(Команда)
ТаблицаПоискПоШтрихкоду("ВыходныеИзделия");
КонецПроцедуры
#КонецОбласти
#Область ПобочныеИзделия
&НаКлиенте
Процедура ПобочныеИзделияПодобратьТовары(Команда)
ТаблицаПодобратьТовары("ПобочныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияЗаполнитьТЧПоСпецификации(Команда)
ТаблицаЗаполнитьТЧПоСпецификации("ПобочныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияЗаполнитьЦеныПоВидуЦен(Команда)
ОчиститьСообщения();
ЦеныРассчитаны = ЗаполнитьЦеныПоВидуЦенСервер("ПобочныеИзделия", Элементы.ПобочныеИзделия.ВыделенныеСтроки);
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияЦенПоВидуЦен(ЦеныРассчитаны, Объект.ВидЦены);
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияЗаполнитьГруппуЗатрат(Команда)
ТаблицаЗаполнитьГруппуЗатрат("ПобочныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияЗаполнитьДатуПоступления(Команда)
ТаблицаЗаполнитьДату("ПобочныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияЗаполнитьПолучателя(Команда)
ТаблицаЗаполнитьСкладПодразделение("ПобочныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияЗаполнитьСтатьюКалькуляции(Команда)
ТаблицаЗаполнитьСтатьюКалькуляции("ПобочныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияЗаполнитьПричинуОтмены(Команда)
ТаблицаЗаполнитьПричинуОтмены("ПобочныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияОтменитьВыделенныеСтроки(Команда)
ТаблицаОтменитьВыделенныеСтроки("ПобочныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияОтменитьНепоставленныеСтроки(Команда)
ТаблицаОтменитьНеобработанныеСтроки("ПобочныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияСкрыватьОтмененныеСтроки(Команда)
ТаблицаСкрыватьОтмененныеСтроки("ПобочныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияСкопироватьСтроки(Команда)
ТаблицаСкопироватьСтроки("ПобочныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияВставитьСтроки(Команда)
ТаблицаВставитьСтроки("ПобочныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияРазбитьСтроку(Команда)
ТаблицаРазбитьСтроку("ПобочныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияПоискПоШтрихкоду(Команда)
ТаблицаПоискПоШтрихкоду("ПобочныеИзделия");
КонецПроцедуры
#КонецОбласти
#Область ОбеспечениеМатериаламиИРаботами
&НаКлиенте
Процедура ОбеспечениеМатериаламиИРаботамиПодобратьТовары(Команда)
ТаблицаПодобратьТовары("ОбеспечениеМатериаламиИРаботами");
КонецПроцедуры
&НаКлиенте
Процедура ОбеспечениеМатериаламиИРаботамиЗаполнитьТЧПоСпецификации(Команда)
ТаблицаЗаполнитьТЧПоСпецификации("ОбеспечениеМатериаламиИРаботами");
КонецПроцедуры
&НаКлиенте
Процедура ОбеспечениеМатериаламиИРаботамиЗаполнитьЦеныПоВидуЦен(Команда)
ОчиститьСообщения();
ЦеныРассчитаны = ЗаполнитьЦеныПоВидуЦенСервер("ОбеспечениеМатериаламиИРаботами", Элементы.ОбеспечениеМатериаламиИРаботами.ВыделенныеСтроки);
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияЦенПоВидуЦен(ЦеныРассчитаны, Объект.ВидЦены);
КонецПроцедуры
&НаКлиенте
Процедура ОбеспечениеМатериаламиИРаботамиЗаполнитьСерииПоFEFO(Команда)
Если ЕстьЗаполненныеСерииПоFEFO() Тогда
НоменклатураКлиент.ЗадатьВопросОПерезаполненииСерийПоFEFO(
Новый ОписаниеОповещения("ЗаполнитьСерииПоFEFOЗавершение", ЭтаФорма));
ИначеЕсли Не ЗаполнитьСерииПоFEFOСервер() Тогда
НоменклатураКлиент.ПредупредитьОбОтсутствииСтрокЗаполняемыхПоFEFO();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбеспечениеМатериаламиИРаботамиЗаполнитьГруппуЗатрат(Команда)
ТаблицаЗаполнитьГруппуЗатрат("ОбеспечениеМатериаламиИРаботами");
КонецПроцедуры
&НаКлиенте
Процедура ОбеспечениеМатериаламиИРаботамиЗаполнитьДатуОтгрузки(Команда)
ТаблицаЗаполнитьДату("ОбеспечениеМатериаламиИРаботами");
КонецПроцедуры
&НаКлиенте
Процедура ОбеспечениеМатериаламиИРаботамиЗаполнитьСклад(Команда)
ТаблицаЗаполнитьСкладПодразделение("ОбеспечениеМатериаламиИРаботами");
КонецПроцедуры
&НаКлиенте
Процедура ОбеспечениеМатериаламиИРаботамиЗаполнитьСтатьюКалькуляции(Команда)
ТаблицаЗаполнитьСтатьюКалькуляции("ОбеспечениеМатериаламиИРаботами");
КонецПроцедуры
&НаКлиенте
Процедура ОбеспечениеМатериаламиИРаботамиЗаполнитьПричинуОтмены(Команда)
ТаблицаЗаполнитьПричинуОтмены("ОбеспечениеМатериаламиИРаботами");
КонецПроцедуры
&НаКлиенте
Процедура ОбеспечениеМатериаламиИРаботамиОтменитьВыделенныеСтроки(Команда)
ТаблицаОтменитьВыделенныеСтроки("ОбеспечениеМатериаламиИРаботами");
КонецПроцедуры
&НаКлиенте
Процедура ОбеспечениеМатериаламиИРаботамиОтменитьНеотработанныеСтроки(Команда)
ТаблицаОтменитьНеобработанныеСтроки("ОбеспечениеМатериаламиИРаботами");
КонецПроцедуры
&НаКлиенте
Процедура ОбеспечениеМатериаламиИРаботамиСкрыватьОтмененныеСтроки(Команда)
ТаблицаСкрыватьОтмененныеСтроки("ОбеспечениеМатериаламиИРаботами");
КонецПроцедуры
#Область Обеспечение
&НаКлиенте
Процедура ОбеспечениеМатериаламиИРаботамиВключитьОбособленноеОбеспечение(Команда)
ОбеспечениеУстановитьДействие("ФЛАГ_ОБОСОБЛЕННО");
КонецПроцедуры
&НаКлиенте
Процедура ОбеспечениеМатериаламиИРаботамиВыключитьОбособленноеОбеспечение(Команда)
ОбеспечениеУстановитьДействие("ФЛАГ_НЕОБОСОБЛЕННО");
КонецПроцедуры
&НаКлиенте
Процедура ОбеспечениеМатериаламиИРаботамиРезервироватьПоМереПоступления(Команда)
ОбеспечениеУстановитьДействие("ДЕЙСТВИЕ_РЕЗЕРВИРОВАТЬПОМЕРЕПОСТУПЛЕНИЯ");
КонецПроцедуры
&НаКлиенте
Процедура ОбеспечениеМатериаламиИРаботамиКОбеспечению(Команда)
ОбеспечениеУстановитьДействиеСВопросом("ДЕЙСТВИЕ_КОБЕСПЕЧЕНИЮ");
КонецПроцедуры
&НаКлиенте
Процедура ОбеспечениеМатериаламиИРаботамиНеОбеспечивать(Команда)
ОбеспечениеУстановитьДействиеСВопросом("ДЕЙСТВИЕ_НЕОБЕСПЕЧИВАТЬ");
КонецПроцедуры
&НаКлиенте
Процедура ОбеспечениеМатериаламиИРаботамиОтгрузить(Команда)
ОбеспечениеУстановитьДействиеСВопросом("ДЕЙСТВИЕ_ОТГРУЗИТЬ");
КонецПроцедуры
&НаКлиенте
Процедура ОбеспечениеМатериаламиИРаботамиРезервировать(Команда)
ОбеспечениеУстановитьДействиеСВопросом("ДЕЙСТВИЕ_РЕЗЕРВИРОВАТЬ");
КонецПроцедуры
&НаКлиенте
Процедура ОбеспечениеМатериаламиИРаботамиПереданРанее(Команда)
ОбеспечениеУстановитьДействиеСВопросом("ДЕЙСТВИЕ_ПЕРЕДАНРАНЕЕ");
КонецПроцедуры
&НаКлиенте
Процедура СоздатьКорректировкуНазначенияРезервирование(Команда)
ДанныеДокумента = ОбеспечениеВДокументахВызовСервера.ДанныеДокументаДляСозданияКорректировкиНазначения(Объект.Ссылка,
Новый Структура("ИдентификаторВХранилище,ЭтоСнятиеРезерва", УникальныйИдентификатор, Ложь));
Если Объект.Статус = ПредопределенноеЗначение("Перечисление.СтатусыЗаказовПереработчикам.НеСогласован") Тогда
МинимальныйСтатус = ПредопределенноеЗначение("Перечисление.СтатусыЗаказовПереработчикам.КИсполнению");
ОбеспечениеКлиент.СообщитьОНеобходимомМинимальномСтатусеДокумента(Ложь, МинимальныйСтатус);
ИначеЕсли Модифицированность Или Не ДанныеДокумента.Проведен Тогда
ПоказатьПредупреждение(, НСтр("ru = 'Для резервирования под назначение необходимо предварительно провести документ.'"));
Иначе
ОписаниеКоманды = Новый Структура();
ОписаниеКоманды.Вставить("ОбъектыОснований", ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Объект.Ссылка));
ОписаниеКоманды.Вставить("Форма", ЭтотОбъект);
ОписаниеКоманды.Вставить("АдресТоваров", ДанныеДокумента.АдресТоваров);
Если ДанныеДокумента.ЕстьТоварыКОбособленномуОбеспечению Тогда
Если ДанныеДокумента.Назначения.Количество() = 1 Тогда
ОписаниеКоманды.Вставить("Назначение", ДанныеДокумента.Назначения[0]);
СозданиеНаОснованииУТКлиент.ОткрытьМастерРезервирования(ОписаниеКоманды);
Иначе
ОписаниеКоманды.Вставить("Назначения", ДанныеДокумента.Назначения);
СозданиеНаОснованииУТКлиент.ОткрытьМастерМассовогоРезервирования(ОписаниеКоманды);
КонецЕсли;
Иначе
ОбеспечениеКлиент.СообщитьОбОтсутствииТовараКОбособленномуОбеспечению();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СоздатьКорректировкуНазначенияСнятиеРезерва(Команда)
ДанныеДокумента = ОбеспечениеВДокументахВызовСервера.ДанныеДокументаДляСозданияКорректировкиНазначения(Объект.Ссылка,
Новый Структура("ИдентификаторВХранилище,ЭтоСнятиеРезерва", УникальныйИдентификатор, Истина));
Если Объект.Статус = ПредопределенноеЗначение("Перечисление.СтатусыЗаказовПереработчикам.НеСогласован") Тогда
МинимальныйСтатус = ПредопределенноеЗначение("Перечисление.СтатусыЗаказовПереработчикам.КИсполнению");
ОбеспечениеКлиент.СообщитьОНеобходимомМинимальномСтатусеДокумента(Ложь, МинимальныйСтатус);
ИначеЕсли Модифицированность Или Не ДанныеДокумента.Проведен Тогда
ПоказатьПредупреждение(, НСтр("ru = 'Для снятия резерва под назначение необходимо предварительно провести документ.'"));
Иначе
ОписаниеКоманды = Новый Структура();
ОписаниеКоманды.Вставить("ОбъектыОснований", ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Объект.Ссылка));
ОписаниеКоманды.Вставить("Форма", ЭтотОбъект);
ОписаниеКоманды.Вставить("АдресТоваров", ДанныеДокумента.АдресТоваров);
Если ДанныеДокумента.ЕстьТоварыКСнятиюРезерва Тогда
Если ДанныеДокумента.Назначения.Количество() = 1 Тогда
ОписаниеКоманды.Вставить("Назначение", ДанныеДокумента.Назначения[0]);
СозданиеНаОснованииУТКлиент.ОткрытьМастерСнятияРезерва(ОписаниеКоманды);
Иначе
ОписаниеКоманды.Вставить("Назначения", ДанныеДокумента.Назначения);
СозданиеНаОснованииУТКлиент.ОткрытьМастерМассовогоСнятияРезерва(ОписаниеКоманды);
КонецЕсли;
Иначе
ОбеспечениеКлиент.СообщитьОбОтсутствииТовараКСнятиюРезерва();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ГиперссылкаСостояниеОбеспеченияНажатие(Элемент)
ГиперссылкаСостояниеОбеспеченияНажатиеОбщий();
КонецПроцедуры
&НаКлиенте
Процедура ГиперссылкаСостояниеОбеспеченияОтгружаетсяНажатие(Элемент)
ГиперссылкаСостояниеОбеспеченияНажатиеОбщий();
КонецПроцедуры
&НаКлиенте
Процедура ГиперссылкаСостояниеОбеспеченияПроблемаНажатие(Элемент)
ГиперссылкаСостояниеОбеспеченияНажатиеОбщий();
КонецПроцедуры
#КонецОбласти
&НаКлиенте
Процедура ОбеспечениеМатериаламиИРаботамиСкопироватьСтроки(Команда)
ТаблицаСкопироватьСтроки("ОбеспечениеМатериаламиИРаботами");
КонецПроцедуры
&НаКлиенте
Процедура ОбеспечениеМатериаламиИРаботамиВставитьСтроки(Команда)
ТаблицаВставитьСтроки("ОбеспечениеМатериаламиИРаботами");
КонецПроцедуры
&НаКлиенте
Процедура ОбеспечениеМатериаламиИРаботамиРазбитьСтроку(Команда)
ТаблицаРазбитьСтроку("ОбеспечениеМатериаламиИРаботами");
КонецПроцедуры
&НаКлиенте
Процедура ОбеспечениеМатериаламиИРаботамиПоискПоШтрихкоду(Команда)
ТаблицаПоискПоШтрихкоду("ОбеспечениеМатериаламиИРаботами");
КонецПроцедуры
#КонецОбласти
#Область Услуги
&НаКлиенте
Процедура УслугиПодобратьТовары(Команда)
ТаблицаПодобратьТовары("Услуги");
КонецПроцедуры
&НаКлиенте
Процедура УслугиЗаполнитьТЧПоСпецификации(Команда)
ТаблицаЗаполнитьТЧПоСпецификации("Услуги");
КонецПроцедуры
&НаКлиенте
Процедура УслугиЗаполнитьЦеныПоВидуЦеныПоставщика(Команда)
Если ЦеныПартнеровЗаполнениеКлиент.НеобходимоЗаполнениеЦенПоВидуЦенПоставщика(Объект, "Услуги", НСтр("ru='Услуги'")) Тогда
ТекущиеДанные = Элементы.Услуги.ТекущиеДанные;
Если Не ЗначениеЗаполнено(ТекущиеДанные.ВидЦеныПоставщика) Тогда
ЦеныПартнеровЗаполнениеКлиент.ВыбратьВидЦеныПоставщика(
Новый ОписаниеОповещения("УслугиЗаполнитьЦеныПоВидуЦеныПоставщикаЗавершение", ЭтаФорма),
Объект.Партнер,
Объект.ЦенаВключаетНДС);
Иначе
УслугиЗаполнитьЦеныПоВидуЦеныПоставщикаЗавершение(ТекущиеДанные.ВидЦеныПоставщика, Неопределено);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УслугиВыбратьИЗаполнитьУслугу(Команда)
Если Элементы.Услуги.ВыделенныеСтроки.Количество() = 0 Тогда
ПоказатьПредупреждение(, НСтр("ru = 'Для заполнения услуги необходимо выбрать строки.'"));
Возврат;
КонецЕсли;
ОписаниеОповещения = Новый ОписаниеОповещения("УслугиВыбратьИЗаполнитьУслугуЗавершение", ЭтаФорма);
ПараметрыОтбора = Новый Структура("ТипНоменклатуры", ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Работа"));
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Отбор", ПараметрыОтбора);
ПараметрыФормы.Вставить("МножественныйВыбор", Ложь);
ОткрытьФорму("Справочник.Номенклатура.ФормаВыбора", ПараметрыФормы,,,,, ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура УслугиЗаполнитьГруппуЗатрат(Команда)
ТаблицаЗаполнитьГруппуЗатрат("Услуги");
КонецПроцедуры
&НаКлиенте
Процедура УслугиЗаполнитьДатуВыполнения(Команда)
ТаблицаЗаполнитьДату("Услуги");
КонецПроцедуры
&НаКлиенте
Процедура УслугиЗаполнитьСтатьюКалькуляции(Команда)
ТаблицаЗаполнитьСтатьюКалькуляции("Услуги");
КонецПроцедуры
&НаКлиенте
Процедура УслугиЗаполнитьПричинуОтмены(Команда)
ТаблицаЗаполнитьПричинуОтмены("Услуги");
КонецПроцедуры
&НаКлиенте
Процедура УслугиСкрыватьОтмененныеСтроки(Команда)
ТаблицаСкрыватьОтмененныеСтроки("Услуги");
КонецПроцедуры
&НаКлиенте
Процедура УслугиОтменитьВыделенныеСтроки(Команда)
ТаблицаОтменитьВыделенныеСтроки("Услуги");
КонецПроцедуры
&НаКлиенте
Процедура УслугиОтменитьНеотработанныеСтроки(Команда)
ТаблицаОтменитьНеобработанныеСтроки("Услуги");
КонецПроцедуры
&НаКлиенте
Процедура УслугиСкопироватьСтроки(Команда)
ТаблицаСкопироватьСтроки("Услуги");
КонецПроцедуры
&НаКлиенте
Процедура УслугиВставитьСтроки(Команда)
ТаблицаВставитьСтроки("Услуги");
КонецПроцедуры
&НаКлиенте
Процедура УслугиРазбитьСтроку(Команда)
ТаблицаРазбитьСтроку("Услуги");
КонецПроцедуры
&НаКлиенте
Процедура УслугиПоискПоШтрихкоду(Команда)
ТаблицаПоискПоШтрихкоду("Услуги");
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандТаблиц
&НаКлиенте
Процедура ТаблицаПодобратьТовары(ИмяТЧ)
ПодобратьТовар(ИмяТЧ);
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаПодобратьПоЭтапамПроизводства(ИмяТЧ)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаЗаполнитьТЧПоСпецификации(ИмяТЧ)
Если Не Объект[ИмяТЧ].Количество() = 0 Тогда
ОписаниеОповещения = Новый ОписаниеОповещения("ТаблицаЗаполнитьТЧПоСпецификацииЗавершение", ЭтаФорма, ИмяТЧ);
ТекстВопроса = НСтр("ru = 'Табличная часть будет перезаполнена по спецификациям. Продолжить?'");
ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
Иначе
ТаблицаЗаполнитьТЧПоСпецификацииЗавершение(КодВозвратаДиалога.Да, ИмяТЧ);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаЗаполнитьГруппуЗатрат(ИмяТЧ)
ТаблицаГруппаЗатратНачалоВыбора(ИмяТЧ);
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаЗаполнитьДату(ИмяТЧ)
ВыделенныеСтроки = Элементы[ИмяТЧ].ВыделенныеСтроки;
Если ВыделенныеСтроки.Количество() > 0 Тогда
ДатаПоступления = Объект.ЖелаемаяДатаПоступления;
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ИмяТЧ", ИмяТЧ);
ДополнительныеПараметры.Вставить("ВыделенныеСтроки", ВыделенныеСтроки);
Оповещение = Новый ОписаниеОповещения("ТаблицаЗаполнитьДатуЗавершение", ЭтаФорма, ДополнительныеПараметры);
Если (ИмяТЧ = "ВыходныеИзделия"
Или ИмяТЧ = "ПобочныеИзделия")
Тогда
ЗаголовокФормыВвода = НСтр("ru = 'Введите дату поступления'");
ИначеЕсли ИмяТЧ = "Услуги" Тогда
ЗаголовокФормыВвода = НСтр("ru = 'Введите дату выполнения работ'");
Иначе
ЗаголовокФормыВвода = НСтр("ru = 'Введите дату отгрузки'");
КонецЕсли;
ОбщегоНазначенияУТКлиент.ВвестиДатуСКонтролемПустогоЗначения(
ДатаПоступления,
ЗаголовокФормыВвода,
ЧастиДаты.Дата,
Оповещение);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаЗаполнитьСкладПодразделение(ИмяТЧ)
ПараметрыТЧ = Новый Структура;
ПараметрыТЧ.Вставить("ИмяТЧФорма" , ИмяТЧ);
ПараметрыТЧ.Вставить("ИмяТЧОбъект" , ИмяТЧ);
Если ИмяТЧ = "ВыходныеИзделия" Тогда
ПараметрыТЧ.Вставить("ПредставлениеТЧ" , НСтр("ru = 'Выходные изделия'"));
ИначеЕсли ИмяТЧ = "ПобочныеИзделия" Тогда
ПараметрыТЧ.Вставить("ПредставлениеТЧ" , НСтр("ru = 'Побочные изделия'"));
Иначе
ПараметрыТЧ.Вставить("ПредставлениеТЧ" , НСтр("ru = 'Материалы и работы'"));
КонецЕсли;
Если (ИмяТЧ = "ВыходныеИзделия"
Или ИмяТЧ = "ПобочныеИзделия")
И Не СкладИзделияВТЧ Тогда
ПараметрыТЧ.Вставить("СкладВШапке", Истина);
ИначеЕсли ИмяТЧ = "ОбеспечениеМатериаламиИРаботами"
И Не СкладМатериалыВТЧ Тогда
ПараметрыТЧ.Вставить("СкладВШапке", Истина);
Иначе
ПараметрыТЧ.Вставить("СкладВШапке", Ложь);
КонецЕсли;
ПараметрыТЧ.Вставить("Отбор", Новый Структура("ЭтоГруппа", Ложь));
Если (ИмяТЧ = "ВыходныеИзделия"
Или ИмяТЧ = "ПобочныеИзделия")
И СкладИзделияГруппа Тогда
ПараметрыТЧ.Вставить("ГруппаСкладов", Объект.СкладПродукции);
ИначеЕсли ИмяТЧ = "ОбеспечениеМатериаламиИРаботами"
И СкладМатериалыГруппа Тогда
ПараметрыТЧ.Вставить("ГруппаСкладов", Объект.СкладМатериалов);
КонецЕсли;
ОписаниеОповещения =
Новый ОписаниеОповещения(
"ЗаполнитьСкладПодразделениеЗавершение",
ЭтаФорма,
Новый Структура("ПараметрыТЧ", ПараметрыТЧ));
ПроизводствоКлиент.ОткрытьФормуВыбораПолучателя(ЭтаФорма, Объект, ПараметрыТЧ,, ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаЗаполнитьСтатьюКалькуляции(ИмяТЧ)
Если Элементы[ИмяТЧ].ВыделенныеСтроки.Количество() = 0 Тогда
ТекстПредупреждения = НСтр("ru='Необходимо выбрать строки, для которых необходимо заполнить статью калькуляции.'");
ПоказатьПредупреждение(, ТекстПредупреждения);
Возврат;
КонецЕсли;
ТипыЗатрат = Новый Массив;
ТипыЗатрат.Добавить(ПредопределенноеЗначение("Перечисление.ТипыЗатрат.Материальные"));
Если ИмяТЧ = "ПобочныеИзделия" Тогда
ТипыЗатрат.Добавить(ПредопределенноеЗначение("Перечисление.ТипыЗатрат.ВозвратныеОтходы"));
ИначеЕсли ИмяТЧ = "Услуги" Тогда
ТипыЗатрат.Добавить(ПредопределенноеЗначение("Перечисление.ТипыЗатрат.Прочее"));
КонецЕсли;
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("ТипЗатрат", ТипыЗатрат);
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Отбор", ПараметрыОтбора);
ПараметрыФормы.Вставить("МножественныйВыбор", Ложь);
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ИмяТЧ", ИмяТЧ);
ОписаниеОповещения = Новый ОписаниеОповещения("ЗаполнитьСтатьюКалькуляцииЗавершение", ЭтаФорма, ДополнительныеПараметры);
ОткрытьФорму("Справочник.СтатьиКалькуляции.ФормаВыбора", ПараметрыФормы,,,,, ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаЗаполнитьПричинуОтмены(ИмяТЧ)
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ИмяТЧ", ИмяТЧ);
Оповещение = Новый ОписаниеОповещения("ТаблицаЗаполнитьПричинуОтменыЗавершение", ЭтаФорма, ДополнительныеПараметры);
ОткрытьФормуВыбораПричиныОтмены(ИмяТЧ, Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаОтменитьВыделенныеСтроки(ИмяТЧ)
Если Не ПродажиКлиент.НеобходимоЗаполнениеПричиныОтменыВыделенныхСтрок(
Объект[ИмяТЧ],
Элементы[ИмяТЧ].Заголовок,
Элементы[ИмяТЧ].ВыделенныеСтроки) Тогда
Возврат;
КонецЕсли;
Если Не ИспользоватьПричиныОтменыЗаказовПоставщикам
Тогда
ОтменитьВыделенныеСтроки(ИмяТЧ, Неопределено);
Иначе
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ИмяТЧ", ИмяТЧ);
Оповещение = Новый ОписаниеОповещения("ТаблицаОтменитьВыделенныеСтрокиЗавершение", ЭтаФорма, ДополнительныеПараметры);
ОткрытьФормуВыбораПричиныОтмены(ИмяТЧ, Оповещение);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаОтменитьНеобработанныеСтроки(ИмяТЧ)
Если Объект[ИмяТЧ].Количество() = 0 Тогда
ТаблицаФормы = Элементы[ИмяТЧ];
ТекстПредупреждения = НСтр("ru='В документе не заполнен список ""%1"". Строки не могут быть отменены.'");
ТекстПредупреждения = СтрШаблон(ТекстПредупреждения, ТаблицаФормы.Заголовок);
ПоказатьПредупреждение(,ТекстПредупреждения);
Возврат;
КонецЕсли;
НеотмененныеСтроки = Объект[ИмяТЧ].НайтиСтроки(Новый Структура("Отменено", Ложь));
Если НеотмененныеСтроки.Количество() = 0 Тогда
ТаблицаФормы = Элементы[ИмяТЧ];
ТекстПредупреждения = НСтр("ru='В документе для списка ""%1"" все строки уже отменены.'");
ТекстПредупреждения = СтрШаблон(ТекстПредупреждения, ТаблицаФормы.Заголовок);
ПоказатьПредупреждение(,ТекстПредупреждения);
Возврат;
КонецЕсли;
Если Не ИспользоватьПричиныОтменыЗаказовПоставщикам
Тогда
РезультатОтмены = ОтменитьНепоставленныеСтроки(ИмяТЧ, Неопределено);
ПоказатьОповещениеПользователя(НСтр("ru = 'Отмена неотработанных строк'"), , РезультатОтмены.Оповещение);
Иначе
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ИмяТЧ", ИмяТЧ);
Оповещение = Новый ОписаниеОповещения("ТаблицаОтменитьНеобработанныеСтрокиЗавершение", ЭтаФорма, ДополнительныеПараметры);
ОткрытьФормуВыбораПричиныОтмены(ИмяТЧ, Оповещение);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаСкрыватьОтмененныеСтроки(ИмяТЧ)
Если ИмяТЧ = "ВыходныеИзделия" Тогда
ИмяФлага = "СкрыватьОтмененныеСтрокиВыходныеИзделия";
ИмяЭлемента = "ВыходныеИзделияСкрыватьОтмененныеСтроки";
ИначеЕсли ИмяТЧ = "ПобочныеИзделия" Тогда
ИмяФлага = "СкрыватьОтмененныеСтрокиПобочныеИзделия";
ИмяЭлемента = "ПобочныеИзделияСкрыватьОтмененныеСтроки";
ИначеЕсли ИмяТЧ = "ОбеспечениеМатериаламиИРаботами" Тогда
ИмяФлага = "СкрыватьОтмененныеСтрокиОбеспечениеМатериаламиИРаботами";
ИмяЭлемента = "ОбеспечениеМатериаламиИРаботамиСкрыватьОтмененныеСтроки";
Иначе
ИмяФлага = "СкрыватьОтмененныеСтрокиУслуги";
ИмяЭлемента = "УслугиСкрыватьОтмененныеСтроки";
КонецЕсли;
ЭтаФорма[ИмяФлага] = Не ЭтаФорма[ИмяФлага];
Если ЭтаФорма[ИмяФлага] Тогда
Элементы[ИмяТЧ].ОтборСтрок = Новый ФиксированнаяСтруктура("Отменено", Ложь);
Иначе
Элементы[ИмяТЧ].ОтборСтрок = Неопределено;
КонецЕсли;
Элементы[ИмяЭлемента].Пометка = ЭтаФорма[ИмяФлага];
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаСкопироватьСтроки(ИмяТЧ)
Если РаботаСТабличнымиЧастямиКлиент.ВыбранаСтрокаДляВыполненияКоманды(Элементы[ИмяТЧ]) Тогда
СкопироватьСтрокиНаСервере(ИмяТЧ);
РаботаСТабличнымиЧастямиКлиент.ОповеститьПользователяОКопированииСтрок(Элементы[ИмяТЧ].ВыделенныеСтроки.Количество());
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаВставитьСтроки(ИмяТЧ)
КоличествоТоваровДоВставки = Объект[ИмяТЧ].Количество();
ПолучитьСтрокиИзБуфераОбмена(ИмяТЧ);
Если ИмяТЧ = "ОбеспечениеМатериаламиИРаботами" Тогда
ЗаполнитьЗависимыеСлужебныеРеквизитыОбеспечения(ЭтаФорма);
КонецЕсли;
КоличествоВставленных = Объект[ИмяТЧ].Количество() - КоличествоТоваровДоВставки;
РаботаСТабличнымиЧастямиКлиент.ОповеститьПользователяОВставкеСтрок(КоличествоВставленных);
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаРазбитьСтроку(ИмяТЧ)
ТаблицаФормы = Элементы[ИмяТЧ];
ДанныеТаблицы = Объект[ИмяТЧ];
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ИмяТЧ", ИмяТЧ);
Оповещение = Новый ОписаниеОповещения("ТаблицаРазбитьСтрокуЗавершение", ЭтаФорма, ДополнительныеПараметры);
ПараметрыРазбиенияСтроки = РаботаСТабличнымиЧастямиКлиент.ПараметрыРазбиенияСтроки();
Если ИмяТЧ = "Услуги" Тогда
ПараметрыРазбиенияСтроки.ИмяПоляКоличество = "Количество";
ПараметрыРазбиенияСтроки.Заголовок = НСтр("ru = 'Введите количество работ в новой строке'");
КонецЕсли;
РаботаСТабличнымиЧастямиКлиент.РазбитьСтроку(ДанныеТаблицы, ТаблицаФормы, Оповещение, ПараметрыРазбиенияСтроки);
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаПоискПоШтрихкоду(ИмяТЧ)
ОчиститьСообщения();
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ИмяТЧ", ИмяТЧ);
Оповещение = Новый ОписаниеОповещения("ТаблицаПоискПоШтрихкодуЗавершение", ЭтаФорма, ДополнительныеПараметры);
ШтрихкодированиеНоменклатурыКлиент.ПоказатьВводШтрихкода(Оповещение);
КонецПроцедуры
#КонецОбласти
#Область Доставка
&НаКлиенте
Процедура ДополнитьИнформациюПоДоставкеКонтактами(Команда)
ДополнитьИнформациюПоДоставкеКонтактамиСервер();
КонецПроцедуры
#КонецОбласти
#Область КомандыОбъекта
&НаКлиенте
Процедура ПровестиИЗакрыть(Команда)
ОбщегоНазначенияУТКлиент.ПровестиИЗакрыть(ЭтаФорма, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ПровестиДокумент(Команда)
ОбщегоНазначенияУТКлиент.Провести(ЭтотОбъект, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ЗаписатьДокумент(Команда)
ОбщегоНазначенияУТКлиент.Записать(ЭтотОбъект, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ПометкаУдаления(Команда)
ТекстВопроса = НСтр("ru='Пометить ""%1"" на удаление?'");
Если Объект.ПометкаУдаления Тогда
ТекстВопроса = НСтр("ru='Снять с ""%1"" пометку на удаление?'");
КонецЕсли;
ТекстВопроса = СтрШаблон(ТекстВопроса, Объект.Ссылка);
ПоказатьВопрос(
Новый ОписаниеОповещения("ПометкаУдаленияОбработчикОповещения", ЭтотОбъект),
ТекстВопроса,
РежимДиалогаВопрос.ДаНет);
КонецПроцедуры
&НаКлиенте
Процедура ПометкаУдаленияОбработчикОповещения(Результат, ДополнительныеПараметры) Экспорт
Если Результат <> КодВозвратаДиалога.Да Тогда
Возврат;
КонецЕсли;
Объект.ПометкаУдаления = Не Объект.ПометкаУдаления;
ПринудительноЗакрытьФорму = Ложь;
ПараметрыЗаписи = Новый Структура;
ПараметрыЗаписи.Вставить("РежимЗаписи", РежимЗаписиДокумента.ОтменаПроведения);
ПараметрыЗаписи.Вставить("РежимПроведения", РежимПроведенияДокумента.Неоперативный);
ПараметрыЗаписи.Вставить("ПринудительноЗакрытьФорму", Ложь);
ПараметрыЗаписи.Вставить("НовыйОбъект", Не ЗначениеЗаполнено(Объект.Ссылка));
Попытка
Записать(ПараметрыЗаписи);
Исключение
Объект.ПометкаУдаления = Не Объект.ПометкаУдаления;
КонецПопытки;
КонецПроцедуры
#КонецОбласти
#Область СтандартныеКоманды
#Область РаботаСФайлами
&НаКлиенте
Процедура Подключаемый_КомандаПанелиПрисоединенныхФайлов(Команда)
РаботаСФайламиКлиент.КомандаУправленияПрисоединеннымиФайлами(ЭтаФорма, Команда);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПроверкаПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраПроверкаПеретаскивания(ЭтаФорма, Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраПеретаскивание(ЭтаФорма, Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраНажатие(Элемент, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраНажатие(ЭтаФорма, Элемент, СтандартнаяОбработка);
КонецПроцедуры
#КонецОбласти
#Область ПодключаемыеКоманды
&НаКлиенте
Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)
СобытияФормКлиент.ВыполнитьПереопределяемуюКоманду(ЭтаФорма, Команда);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_СвойстваВыполнитьКоманду(ЭлементИлиКоманда, НавигационнаяСсылка = Неопределено, СтандартнаяОбработка = Неопределено)
УправлениеСвойствамиКлиент.ВыполнитьКоманду(ЭтаФорма, ЭлементИлиКоманда, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
ПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Объект);
КонецПроцедуры
&НаСервере
Процедура Подключаемый_ВыполнитьКомандуНаСервере(Контекст, Результат) Экспорт
ПодключаемыеКоманды.ВыполнитьКоманду(ЭтаФорма, Контекст, Объект, Результат);
КонецПроцедуры
&НаСервере
Процедура ВыполнитьКомандуНаСервере(ПараметрыВыполнения)
ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, ПараметрыВыполнения, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПродолжитьВыполнениеКомандыНаСервере(ПараметрыВыполнения, ДополнительныеПараметры) Экспорт
ВыполнитьКомандуНаСервере(ПараметрыВыполнения);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтаФорма, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбработатьЗаписьОбъекта()
ОбщегоНазначенияУТКлиент.ОбработатьЗаписьОбъектаВФорме(ЭтаФорма, ПараметрыДляЗаписи);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ЗакрытьФорму()
Закрыть();
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПриИзмененииДополнительногоРеквизита(Элемент)
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтаФорма);
КонецПроцедуры
#КонецОбласти
#Область ИнтеграцияС1СДокументооборотом
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуИнтеграции(Команда)
ИнтеграцияС1СДокументооборотБазоваяФункциональностьКлиент.ВыполнитьПодключаемуюКомандуИнтеграции(Команда, ЭтотОбъект, Объект);
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#Область УсловноеОформление
&НаСервере
Процедура УстановитьУсловноеОформление()
УсловноеОформление.Элементы.Очистить();
#Область СтандартноеОформлениеШапка
ОбщегоНазначенияУТ.УстановитьУсловноеОформлениеПриоритета(ЭтаФорма);
#КонецОбласти
#Область СтандартноеОформлениеТабличныеЧасти
УстановитьУсловноеОформлениеХарактеристикНоменклатуры("ВыходныеИзделия");
УстановитьУсловноеОформлениеХарактеристикНоменклатуры("ПобочныеИзделия");
УстановитьУсловноеОформлениеХарактеристикНоменклатуры("Услуги");
УстановитьУсловноеОформлениеЕдиницИзмерения("ВыходныеИзделия");
УстановитьУсловноеОформлениеЕдиницИзмерения("ПобочныеИзделия");
УстановитьУсловноеОформлениеНазначенияНоменклатуры("ВыходныеИзделия");
УстановитьУсловноеОформлениеНазначенияНоменклатуры("ПобочныеИзделия");
УстановитьУсловноеОформлениеНазначенияНоменклатуры("ОбеспечениеМатериаламиИРаботами");
УстановитьОформлениеОтмененнойСтроки("ВыходныеИзделия", "ПричинаОтмены");
УстановитьОформлениеОтмененнойСтроки("ПобочныеИзделия", "ПричинаОтмены");
УстановитьОформлениеОтмененнойСтроки("Услуги", "ПричинаОтмены", "УслугиЦена", "УслугиСумма");
#Область УчетНДС
УчетНДСУП.УстановитьУсловноеОформлениеСуммНДСПоНалогообложениюЗакупки(
ЭтаФорма,
"УслугиСтавкаНДС",
"УслугиСуммаНДС",
"УслугиСуммаСНДС");
УчетНДСУП.УстановитьУсловноеОформлениеСуммНДСПоСтавкеНДСЗакупки(
ЭтаФорма,
"УслугиСтавкаНДС",
"УслугиСуммаНДС");
ЦеныПредприятияЗаполнениеСервер.УстановитьУсловноеОформлениеЦенаВключаетНДС(ЭтаФорма, "УслугиСуммаСНДС");
#КонецОбласти
#КонецОбласти
#Область Шапка
#Область ДатаПоступления
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ДатаПоступления.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Статус");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.СтатусыЗаказовПереработчикам.НеСогласован;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ДатаПоступления.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Статус");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно;
ОтборЭлемента.ПравоеЗначение = Перечисления.СтатусыЗаказовПереработчикам.НеСогласован;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ДатаПоступления");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Истина);
#КонецОбласти
#Область ДатаОтгрузки
ОбщегоНазначенияУТ.УстановитьСнятьОтметкуНезаполненного(
УсловноеОформление,
"ДатаОтгрузки",
"Объект.ДатаОтгрузки",
"ДатаОтгрузкиОбязательна");
#КонецОбласти
#КонецОбласти
#Область ГруппировкаЗатрат
#Область ГруппыЗатрат
ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ВыходныеИзделияГруппаЗатрат.Имя);
ОтборЭлемента = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ГруппировкаЗатрат");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоЭтапамПроизводства;
ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ВыходныеИзделияГруппаЗатрат.Имя);
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ПобочныеИзделияГруппаЗатрат.Имя);
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОбеспечениеМатериаламиИРаботамиГруппаЗатрат.Имя);
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.УслугиГруппаЗатрат.Имя);
ОтборЭлемента = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("КоличествоГруппЗатрат");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.МеньшеИлиРавно;
ОтборЭлемента.ПравоеЗначение = 1;
ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
#КонецОбласти
#КонецОбласти
#Область ВыходныеИзделия
#Область Спецификация
ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ВыходныеИзделияСпецификация.Имя);
Группировки = Новый СписокЗначений;
Группировки.Добавить(Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоСпецификациям);
Группировки.Добавить(Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоСпецификациямИНазначениям);
ОтборЭлемента = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ГруппировкаЗатрат");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеВСписке;
ОтборЭлемента.ПравоеЗначение = Группировки;
ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
#КонецОбласти
#Область ДатаПоступления
УстановитьУсловноеОформлениеДатыВТЧ("ВыходныеИзделия", "ПоступлениеОднойДатой", "ДатаПоступления");
#КонецОбласти
#Область ДоляСтоимости
ПроизводствоСервер.УстановитьУсловноеОформлениеПоляДоляСтоимостиПроцент(ЭтаФорма, "Объект", "ВыходныеИзделия");
ПроизводствоСервер.УстановитьУсловноеОформлениеПоляДоляСтоимостиОтмененныхСтрок(
ЭтаФорма,
"Объект",
"ВыходныеИзделия");
ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ВыходныеИзделияДоляСтоимости.Имя);
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ВыходныеИзделияДоляСтоимостиПроцент.Имя);
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ВыходныеИзделияЕстьОшибкиЗаполненияДолиСтоимости.Имя);
Группировки = Новый СписокЗначений;
Группировки.Добавить(Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоПродукции);
Группировки.Добавить(Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоПродукцииИНазначениям);
ОтборЭлемента = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ГруппировкаЗатрат");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
ОтборЭлемента.ПравоеЗначение = Группировки;
ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
#КонецОбласти
#Область СписаниеНаРасходы
УстановитьУсловноеОформлениеСписатьНаРасходы("ВыходныеИзделия");
#КонецОбласти
#Область Получатель
УстановитьУсловноеОформлениеПолучатель("ВыходныеИзделия");
#КонецОбласти
#КонецОбласти
#Область ПобочныеИзделия
#Область ДатаПоступления
УстановитьУсловноеОформлениеДатыВТЧ("ПобочныеИзделия", "ПоступлениеОднойДатой", "ДатаПоступления");
#КонецОбласти
#Область СтатьяКалькуляции
УстановитьУсловноеОформлениеСтатьяКалькуляции("ПобочныеИзделия");
#КонецОбласти
#Область СписаниеНаРасходы
УстановитьУсловноеОформлениеСписатьНаРасходы("ПобочныеИзделия");
#КонецОбласти
#Область Получатель
УстановитьУсловноеОформлениеПолучатель("ПобочныеИзделия");
#КонецОбласти
#КонецОбласти
#Область ОбеспечениеМатериаламиИРаботами
ПутиКДанным = Новый Структура;
ПутиКДанным.Вставить("ДинамическаяСтруктура", "ДинамическаяСтруктура");
ИменаЭлементов = ПроизводствоУправлениеФормами.ИменаЭлементовОбеспеченияМатериаламиИРаботами();
ИменаЭлементов.ИмяТЧ = Элементы.ОбеспечениеМатериаламиИРаботами.Имя;
ИменаЭлементов.ДатаОтгрузки = Элементы.ДатаОтгрузки.Имя;
ИменаЭлементов.ТЧХарактеристика = Элементы.ОбеспечениеМатериаламиИРаботамиХарактеристика.Имя;
ИменаЭлементов.ТЧСерия = Элементы.ОбеспечениеМатериаламиИРаботамиСерия.Имя;
ИменаЭлементов.ТЧНоменклатураЕдиницаИзмерения = Элементы.ОбеспечениеМатериаламиИРаботамиНоменклатураЕдиницаИзмерения.Имя;
ИменаЭлементов.ТЧКоличествоУпаковок = Элементы.ОбеспечениеМатериаламиИРаботамиКоличествоУпаковок.Имя;
ИменаЭлементов.ТЧДатаОтгрузки = Элементы.ОбеспечениеМатериаламиИРаботамиДатаОтгрузки.Имя;
ИменаЭлементов.ТЧОбособленно = Элементы.ОбеспечениеМатериаламиИРаботамиОбособленно.Имя;
ИменаЭлементов.ТЧСклад = Элементы.ОбеспечениеМатериаламиИРаботамиСклад.Имя;
ИменаЭлементов.ТЧСпецификация = Элементы.ОбеспечениеМатериаламиИРаботамиСпецификация.Имя;
ИменаЭлементов.ТЧСтатьяКалькуляции = Элементы.ОбеспечениеМатериаламиИРаботамиСтатьяКалькуляции.Имя;
ИменаЭлементов.ТЧОтменено = Элементы.ОбеспечениеМатериаламиИРаботамиОтменено.Имя;
ИменаЭлементов.ТЧЦена = Элементы.ОбеспечениеМатериаламиИРаботамиЦена.Имя;
ИменаЭлементов.ТЧСумма = Элементы.ОбеспечениеМатериаламиИРаботамиСумма.Имя;
ИменаЭлементов.ТЧПричинаОтмены = Элементы.ОбеспечениеМатериаламиИРаботамиПричинаОтменыПроизводства.Имя;
ИменаЭлементов.ТЧНазначение = Элементы.ОбеспечениеМатериаламиИРаботамиНазначениеОбеспечения.Имя;
ИменаЭлементов.ТЧПроизводится = Элементы.ОбеспечениеМатериаламиИРаботамиПроизводится.Имя;
ПроизводствоУправлениеФормами.УстановитьУсловноеОформлениеОбеспеченияМатериаламиИРаботами(
ЭтаФорма, "Объект", "ОбеспечениеМатериаламиИРаботами", ИменаЭлементов, ПутиКДанным);
ПроизводствоУправлениеФормами.УстановитьУсловноеОформлениеПолейОбеспечения(
ЭтаФорма, "Объект", "ОбеспечениеМатериаламиИРаботами");
ПроизводствоУправлениеФормами.УстановитьУсловноеОформлениеДатыОтгрузки(
ЭтаФорма, "Объект", "ОбеспечениеМатериаламиИРаботами");
#Область ЦенаСумма
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОбеспечениеМатериаламиИРаботамиЦена.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОбеспечениеМатериаламиИРаботамиСумма.Имя);
ГруппаИли = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаИли.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ОтборЭлемента = ГруппаИли.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ОбеспечениеМатериаламиИРаботами.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ТипыНоменклатуры.Работа;
ОтборЭлемента = ГруппаИли.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ОбеспечениеМатериаламиИРаботами.ВариантОбеспечения");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ВариантыОбеспечения.ПереданРанее;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ТекстЗапрещеннойЯчейкиЦвет);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<не требуется>'"));
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
#КонецОбласти
#Область Склад
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОбеспечениеМатериаламиИРаботамиСклад.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("СкладМатериалыВТЧ");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
#КонецОбласти
#Область ПроизводитсяВПроцессе
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОбеспечениеМатериаламиИРаботамиПроизводится.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОбеспечениеМатериаламиИРаботамиСпецификация.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ГруппировкаЗатрат");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоЭтапамПроизводства;
Элемент.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
#КонецОбласти
#КонецОбласти
#Область Услуги
#Область ДатаВыполнения
УстановитьУсловноеОформлениеДатыВТЧ("Услуги", "ВыполнениеРаботОднойДатой", "ДатаВыполнения");
#КонецОбласти
#Область СтатьяКалькуляции
УстановитьУсловноеОформлениеСтатьяКалькуляции("Услуги");
#КонецОбласти
#КонецОбласти
#Область Прочее
#Область Состояние
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.Состояние.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("СостояниеПросрочено");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ПросроченныйДокумент);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.Состояние.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Состояние");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.СостоянияЗаказовПереработчикам.Закрыт;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ЗакрытыйДокумент);
#КонецОбласти
#Область НаправленияДеятельности
НаправленияДеятельностиСервер.УстановитьУсловноеОформлениеНаправленияДеятельности(ЭтаФорма);
#КонецОбласти
#КонецОбласти
КонецПроцедуры
&НаСервере
Процедура УстановитьУсловноеОформлениеХарактеристикНоменклатуры(ИмяТЧ)
НоменклатураСервер.УстановитьУсловноеОформлениеХарактеристикНоменклатуры(
ЭтаФорма,
ИмяТЧ + "Характеристика",
"Объект." + ИмяТЧ + ".ХарактеристикиИспользуются");
КонецПроцедуры
&НаСервере
Процедура УстановитьУсловноеОформлениеЕдиницИзмерения(ИмяТЧ)
ПараметрыУсловногоОформления = НоменклатураСервер.НовыеПараметрыУсловногоОформленияЕдиницИзмерения();
ПараметрыУсловногоОформления.ИмяПоляЕдиницаИзмерения = ИмяТЧ + "НоменклатураЕдиницаИзмерения";
ПараметрыУсловногоОформления.ПутьКПолюУпаковка = "Объект." + ИмяТЧ + ".Упаковка";
НоменклатураСервер.УстановитьУсловноеОформлениеЕдиницИзмерения(ЭтаФорма, ПараметрыУсловногоОформления);
КонецПроцедуры
&НаСервере
Процедура УстановитьУсловноеОформлениеНазначенияНоменклатуры(ИмяТЧ)
НоменклатураСервер.УстановитьУсловноеОформлениеНазначенияНоменклатуры(
ЭтаФорма,
ИмяТЧ + "Назначение",
"Объект." + ИмяТЧ + ".ТипНоменклатуры",
Ложь);
Если ИмяТЧ = "ВыходныеИзделия" Тогда
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеНазначение = Элементы[ИмяТЧ + "Назначение"];
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(ПолеНазначение.Имя);
Группировки = Новый СписокЗначений;
Группировки.Добавить(Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоПродукцииИНазначениям);
Группировки.Добавить(Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоСпецификациямИНазначениям);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ГруппировкаЗатрат");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеВСписке;
ОтборЭлемента.ПравоеЗначение = Группировки;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьУсловноеОформлениеСтатьяКалькуляции(ИмяТЧ)
ПолеСтатьяКалькуляции = Элементы[ИмяТЧ + "СтатьяКалькуляции"];
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(ПолеСтатьяКалькуляции.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Статус");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.СтатусыЗаказовПереработчикам.НеСогласован;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного" , Ложь);
КонецПроцедуры
&НаСервере
Процедура УстановитьУсловноеОформлениеДатыВТЧ(ИмяТЧ, ИмяФлага, ИмяДата)
ЭлементДата = Элементы[ИмяТЧ + ИмяДата];
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(ЭлементДата.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект." + ИмяФлага);
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(ЭлементДата.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект." + ИмяТЧ + ".Отменено");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(ЭлементДата.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Статус");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.СтатусыЗаказовПереработчикам.НеСогласован;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
КонецПроцедуры
&НаСервере
Процедура УстановитьУсловноеОформлениеСписатьНаРасходы(ИмяТЧ)
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеНазначение = Элементы[ИмяТЧ + "Назначение"];
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(ПолеНазначение.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект." + ИмяТЧ + ".СписатьНаРасходы");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.НезаполненноеПолеТаблицы);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<не используется при списании на расходы>'"));
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
КонецПроцедуры
&НаСервере
Процедура УстановитьУсловноеОформлениеПолучатель(ИмяТЧ)
ПолеПолучатель = Элементы[ИмяТЧ + "Получатель"];
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(ПолеПолучатель.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект." + ИмяТЧ + ".СписатьНаРасходы");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект." + ИмяТЧ + ".Получатель");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", Новый ПолеКомпоновкиДанных("Объект.Подразделение"));
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(ПолеПолучатель.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект." + ИмяТЧ + ".СписатьНаРасходы");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект." + ИмяТЧ + ".ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ТипыНоменклатуры.Работа;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ИспользоватьНесколькоСкладов");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Отбор = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
Отбор.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ОставитьИзделияУПереработчика");
Отбор.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
Отбор.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", Новый ПолеКомпоновкиДанных("СкладПоУмолчанию"));
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ТекстЗапрещеннойЯчейкиЦвет);
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(ПолеПолучатель.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект." + ИмяТЧ + ".СписатьНаРасходы");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект." + ИмяТЧ + ".ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ТипыНоменклатуры.Работа;
Отбор = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
Отбор.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("СкладИзделияВТЧ");
Отбор.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
Отбор.ПравоеЗначение = Ложь;
Отбор = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
Отбор.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ОставитьИзделияУПереработчика");
Отбор.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
Отбор.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ТекстЗапрещеннойЯчейкиЦвет);
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(ПолеПолучатель.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект." + ИмяТЧ + ".СписатьНаРасходы");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект." + ИмяТЧ + ".ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ТипыНоменклатуры.Работа;
Отбор = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
Отбор.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ОставитьИзделияУПереработчика");
Отбор.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
Отбор.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<не требуется>'"));
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста" , ЦветаСтиля.ТекстЗапрещеннойЯчейкиЦвет);
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(ПолеПолучатель.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект." + ИмяТЧ + ".Отменено");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
КонецПроцедуры
&НаСервере
Процедура УстановитьОформлениеОтмененнойСтроки(ИмяТЧ, ИмяПоляПричинаОтмены = "", ИмяПоляВводаЦены = "", ИмяПоляВводаСуммы = "")
ЭлементОтменено = Элементы[ИмяТЧ + "Отменено"];
ИмяЭлементаПричинаОтмены = "";
Если ЗначениеЗаполнено(ИмяПоляПричинаОтмены) Тогда
ЭлементПричинаОтмены = Элементы[ИмяТЧ + ИмяПоляПричинаОтмены];
ИмяЭлементаПричинаОтмены = ЭлементПричинаОтмены.Имя;
КонецЕсли;
ЗаказыСервер.УстановитьОформлениеОтмененнойСтроки(УсловноеОформление,
Элементы[ИмяТЧ],
ЭлементОтменено.Имя,
ИмяЭлементаПричинаОтмены,
ИмяПоляВводаЦены,
ИмяПоляВводаСуммы);
КонецПроцедуры
#КонецОбласти
#Область НастройкаЭлементовФормы
&НаСервере
Процедура НастроитьЭлементыФормы()
ОбновитьИнформациюПоЗаказам();
НастроитьЗависимыеЭлементыФормы(ЭтаФорма);
НастроитьЗависимыеЭлементыФормыНаСервере();
ОбновитьКартинкуГруппыСкладов(
ТаблицаСкладовИзделия,
НадписьНесколькоСкладовИзделия,
Элементы.КартинкаНесколькоСкладовИзделия);
ОбновитьКартинкуГруппыСкладов(
ТаблицаСкладовМатериалы,
НадписьНесколькоСкладовМатериалы,
Элементы.КартинкаНесколькоСкладовМатериалы);
ЗаполнитьСписокВыбораГруппировкиЗатрат();
НастроитьКомандыБуфераОбмена(ЭтаФорма, РаботаСТабличнымиЧастями.ЕстьСтрокиВБуфереОбмена());
УправлениеДаннымиОбИзделияхКлиентСервер.УстановитьПараметрыВыбораСпецификаций(
Элементы.ВыходныеИзделияСпецификация,
ПараметрыВыбораСпецификаций.ВыходныеИзделия);
Элементы.ДокументОснование.Видимость = ЗначениеЗаполнено(Объект.ДокументОснование);
Элементы.ЗакрытьЗаказ.Доступность = ПравоДоступа("Изменение", Метаданные.Документы.ЗаказПереработчику2_5);
Элементы.ОбеспечениеМатериаламиИРаботамиСерия.Видимость =
ПараметрыУказанияСерий.ОбеспечениеМатериаламиИРаботами.ИспользоватьСерииНоменклатуры;
Элементы.ОбеспечениеМатериаламиИРаботамиЗаполнитьСерииПоFEFO.Видимость =
ПараметрыУказанияСерий.ОбеспечениеМатериаламиИРаботами.ИспользоватьСерииНоменклатуры;
#Область Обеспечение
Элементы.ДатаОтгрузки.Подсказка = ОбеспечениеВДокументахСервер.ПодсказкаДатаОтгрузки();
Если Не ПравоДоступа("Добавление", Метаданные.Документы.КорректировкаНазначенияТоваров)
Или Не ПолучитьФункциональнуюОпцию("ИспользоватьОбособленноеОбеспечениеЗаказов") Тогда
Элементы.СоздатьКорректировкуНазначенияСнятиеРезерва.Видимость = Ложь;
Элементы.СоздатьКорректировкуНазначенияРезервирование.Видимость = Ложь;
КонецЕсли;
ОбеспечениеВДокументахСервер.НастроитьГиперссылкиСостояниеОбеспечения(ЭтаФорма);
#КонецОбласти
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура НастроитьЗависимыеЭлементыФормы(Форма, СписокРеквизитов = "")
Элементы = Форма.Элементы;
Объект = Форма.Объект;
СписокРеквизитов = Новый Структура(СписокРеквизитов);
Инициализация = Не ЗначениеЗаполнено(СписокРеквизитов);
ГруппировкаПоЭтапам = Ложь;
УказаноРаспоряжение =
ГруппировкаПоЭтапам
И Не Объект.Распоряжения.Количество() = 0;
Если Инициализация
Или СписокРеквизитов.Свойство("Распоряжения")
Или СписокРеквизитов.Свойство("ПереработкаПоЗаказу") Тогда
Элементы.Статус.Видимость = Форма.ИспользоватьСтатусы;
Элементы.НадписьЗаголовокЗаказы.Видимость = ГруппировкаПоЭтапам;
Элементы.ВыходныеИзделияПодобратьПоЭтапамПроизводства.Видимость = ГруппировкаПоЭтапам;
#Область ПричиныОтмены
Элементы.УслугиПричинаОтмены.ОграничениеТипа =
Новый ОписаниеТипов("СправочникСсылка.ПричиныОтменыЗаказовПоставщикам");
ИспользоватьПричиныОтмены =
Не ГруппировкаПоЭтапам
И Форма.ИспользоватьПричиныОтменыЗаказовПоставщикам
Или ГруппировкаПоЭтапам;
Элементы.ВыходныеИзделияОтмененоПричиныОтменыНеИспользуются.Видимость = Не ИспользоватьПричиныОтмены;
Элементы.ПобочныеИзделияОтмененоПричиныОтменыНеИспользуются.Видимость = Не ИспользоватьПричиныОтмены;
Элементы.ОбеспечениеМатериаламиИРаботамиОтмененоПричиныОтменыНеИспользуются.Видимость = Не ГруппировкаПоЭтапам;
Элементы.УслугиОтмененоПричиныОтменыНеИспользуются.Видимость = Не ИспользоватьПричиныОтмены;
Элементы.ВыходныеИзделияГруппаОтменено.Видимость = ИспользоватьПричиныОтмены;
Элементы.ПобочныеИзделияГруппаОтменено.Видимость = ИспользоватьПричиныОтмены;
Элементы.ОбеспечениеМатериаламиИРаботамиГруппаОтменено.Видимость = ГруппировкаПоЭтапам;
Элементы.УслугиГруппаОтменено.Видимость = ИспользоватьПричиныОтмены;
Элементы.ВыходныеИзделияЗаполнитьПричинуОтмены.Видимость = ИспользоватьПричиныОтмены;
Элементы.ПобочныеИзделияЗаполнитьПричинуОтмены.Видимость = ИспользоватьПричиныОтмены;
Элементы.ОбеспечениеМатериаламиИРаботамиЗаполнитьПричинуОтмены.Видимость = ИспользоватьПричиныОтмены;
Элементы.УслугиЗаполнитьПричинуОтмены.Видимость = ИспользоватьПричиныОтмены;
ИспользоватьПричиныОтменыПоставщика =
Форма.ИспользоватьПричиныОтменыЗаказовПоставщикам
И Не ГруппировкаПоЭтапам;
Элементы.ВыходныеИзделияПричинаОтмены.Видимость = ИспользоватьПричиныОтменыПоставщика;
Элементы.ПобочныеИзделияПричинаОтмены.Видимость = ИспользоватьПричиныОтменыПоставщика;
Элементы.ВыходныеИзделияПричинаОтменыПроизводства.Видимость = ГруппировкаПоЭтапам;
Элементы.ПобочныеИзделияПричинаОтменыПроизводства.Видимость = ГруппировкаПоЭтапам;
Элементы.ОбеспечениеМатериаламиИРаботамиПричинаОтменыПроизводства.Видимость = ГруппировкаПоЭтапам;
#КонецОбласти
КонецЕсли;
Если Инициализация
Или СписокРеквизитов.Свойство("ГруппировкаЗатрат") Тогда
#Область Договор
МассивСвязейПараметровВыбора = Новый Массив;
МассивСвязейПараметровВыбора.Добавить(
Новый СвязьПараметраВыбора("Отбор.Контрагент", "Объект.Контрагент", РежимИзмененияСвязанногоЗначения.Очищать));
МассивСвязейПараметровВыбора.Добавить(
Новый СвязьПараметраВыбора("Отбор.Организация", "Объект.Организация", РежимИзмененияСвязанногоЗначения.Очищать));
МассивСвязейПараметровВыбора.Добавить(
Новый СвязьПараметраВыбора("Партнер", "Объект.Партнер", РежимИзмененияСвязанногоЗначения.Очищать));
МассивСвязейПараметровВыбора.Добавить(
Новый СвязьПараметраВыбора("Отбор.ХозяйственнаяОперация", "Объект.ХозяйственнаяОперация", РежимИзмененияСвязанногоЗначения.НеИзменять));
Элементы.Договор.СвязиПараметровВыбора = Новый ФиксированныйМассив(МассивСвязейПараметровВыбора);
#КонецОбласти
Элементы.СпособРаспределенияЗатратНаВыходныеИзделия.Видимость =
Объект.ГруппировкаЗатрат =
ПредопределенноеЗначение("Перечисление.ГруппировкиЗатратВЗаказеПереработчику.БезГруппировки")
Или Объект.ГруппировкаЗатрат =
ПредопределенноеЗначение("Перечисление.ГруппировкиЗатратВЗаказеПереработчику.ПоСпецификациям")
Или Объект.ГруппировкаЗатрат =
ПредопределенноеЗначение("Перечисление.ГруппировкиЗатратВЗаказеПереработчику.ПоСпецификациямИНазначениям");
Элементы.ОбеспечениеМатериаламиИРаботамиВходитВНабор.Видимость = ГруппировкаПоЭтапам;
Элементы.ОбеспечениеМатериаламиИРаботамиНазначениеОбеспечения.Видимость = ГруппировкаПоЭтапам;
Элементы.ОбеспечениеМатериаламиИРаботамиНазначение.Видимость = Не ГруппировкаПоЭтапам;
НастроитьЭлементыГруппЗатрат(Форма);
КонецЕсли;
Если Инициализация
Или СписокРеквизитов.Свойство("СкладМатериалов")
Или СписокРеквизитов.Свойство("ПереработкаПоЗаказу") Тогда
Элементы.ОбеспечениеМатериаламиИРаботамиЗаполнитьСклад.Видимость =
Форма.СкладМатериалыВТЧ;
КонецЕсли;
Если Инициализация
Или СписокРеквизитов.Свойство("УслугиПоПереработке") Тогда
ИспользоватьУслуги =
Объект.УслугиПоПереработке =
ПредопределенноеЗначение("Перечисление.ВариантыОформленияУслугДокументовПереработки.УказываютсяВЗаказеОтчете");
Элементы.ГруппаОплата.Видимость = ИспользоватьУслуги;
Элементы.ГруппаСтраницыСуммаУслуг.Видимость = ИспользоватьУслуги;
Элементы.ВалютаДокумента.Видимость = ИспользоватьУслуги;
Элементы.СтраницаУслуги.Видимость = ИспользоватьУслуги;
Элементы.БанковскийСчет.Видимость = ИспользоватьУслуги;
Элементы.ГруппаФинансовогоУчета.Видимость = ИспользоватьУслуги;
КонецЕсли;
Если Инициализация
Или СписокРеквизитов.Свойство("НалогообложениеНДС") Тогда
Если УчетНДСУПКлиентСервер.ОтображатьНДСВИтогахДокументаЗакупки(Объект.НалогообложениеНДС) Тогда
Элементы.ГруппаСтраницыСуммаУслуг.ТекущаяСтраница = Элементы.СтраницаСНДС;
Иначе
Элементы.ГруппаСтраницыСуммаУслуг.ТекущаяСтраница = Элементы.СтраницаБезНДС;
КонецЕсли;
КонецЕсли;
Если Инициализация
Или СписокРеквизитов.Свойство("ПоступлениеОднойДатой") Тогда
Элементы.ДатаПоступления.Видимость = Объект.ПоступлениеОднойДатой;
Элементы.ВыходныеИзделияЗаполнитьДатуПоступления.Видимость = Не Объект.ПоступлениеОднойДатой;
Элементы.ПобочныеИзделияЗаполнитьДатуПоступления.Видимость = Не Объект.ПоступлениеОднойДатой;
КонецЕсли;
Если Инициализация
Или СписокРеквизитов.Свойство("Распоряжения")
Или СписокРеквизитов.Свойство("ПереработкаПоЗаказу")
Или СписокРеквизитов.Свойство("ОставитьИзделияУПереработчика") Тогда
Элементы.СкладПродукции.Видимость =
Не ГруппировкаПоЭтапам
И Не Объект.ОставитьИзделияУПереработчика;
Элементы.СкладМатериалов.Видимость = Не ГруппировкаПоЭтапам;
ЗаголовокДатаПоступления = НСтр("ru = 'Дату поступления'");
Если ГруппировкаПоЭтапам
Или Объект.ОставитьИзделияУПереработчика Тогда
ЗаголовокДатаПоступления = НСтр("ru = 'Дату производства'");
КонецЕсли;
ЭлементДатаПоступления = Элементы.ВыходныеИзделияЗаполнитьДатуПоступления;
ЭлементДатаПоступления.Заголовок = ЗаголовокДатаПоступления;
ЭлементДатаПоступления = Элементы.ПобочныеИзделияЗаполнитьДатуПоступления;
ЭлементДатаПоступления.Заголовок = ЗаголовокДатаПоступления;
Элементы.ЖелаемаяДатаПоступления.Видимость =
Не ГруппировкаПоЭтапам;
ЗаголовокЖелаемаяДатаПоступления = НСтр("ru = 'Желаемая дата поступления'");
Если Объект.ОставитьИзделияУПереработчика Тогда
ЗаголовокЖелаемаяДатаПоступления = НСтр("ru = 'Желаемая дата производства'");
КонецЕсли;
ЭлементДатаПоступления = Элементы.ЖелаемаяДатаПоступления;
ЭлементДатаПоступления.Заголовок = ЗаголовокЖелаемаяДатаПоступления;
ЗаголовокДатаПоступления = НСтр("ru = 'Поступление одной датой'");
Если ГруппировкаПоЭтапам
Или Объект.ОставитьИзделияУПереработчика Тогда
ЗаголовокДатаПоступления = НСтр("ru = 'Производство одной датой'");
КонецЕсли;
ЭлементДатаПоступления = Элементы.ПоступлениеОднойДатой;
ЭлементДатаПоступления.Заголовок = ЗаголовокДатаПоступления;
ЗаголовокДатаПоступления = НСтр("ru = 'Дата поступления'");
Если ГруппировкаПоЭтапам
Или Объект.ОставитьИзделияУПереработчика Тогда
ЗаголовокДатаПоступления = НСтр("ru = 'Дата производства'");
КонецЕсли;
ЭлементДатаПоступления = Элементы.ДатаПоступления;
ЭлементДатаПоступления.Заголовок = ЗаголовокДатаПоступления;
КонецЕсли;
Если Инициализация
Или СписокРеквизитов.Свойство("НеОтгружатьЧастями") Тогда
Элементы.ДатаОтгрузки.Видимость = Объект.НеОтгружатьЧастями;
Элементы.ОбеспечениеМатериаламиИРаботамиЗаполнитьДатуОтгрузки.Видимость = Не Объект.НеОтгружатьЧастями;
КонецЕсли;
Если Инициализация
Или СписокРеквизитов.Свойство("ВыполнениеРаботОднойДатой") Тогда
Элементы.ДатаВыполнения.Видимость = Объект.ВыполнениеРаботОднойДатой;
Элементы.УслугиЗаполнитьДатуВыполнения.Видимость = Не Объект.ВыполнениеРаботОднойДатой;
КонецЕсли;
Если Инициализация
Или СписокРеквизитов.Свойство("Распоряжения") Тогда
Элементы.СтраницыГиперссылкаСостояниеОбеспечения.Видимость = Форма.ЕстьПравоПросмотраСостоянияОбеспечения
И (Форма.ДинамическаяСтруктура = Неопределено Или Не Форма.ДинамическаяСтруктура);
Элементы.ГруппаСостояниеОбеспеченияДинамическаяСтруктура.Видимость =
Форма.ЕстьПравоПросмотраУкомплектованности
И Форма.ДинамическаяСтруктура <> Неопределено
И Форма.ДинамическаяСтруктура;
Элементы.ОбеспечениеМатериаламиИРаботамиПроизводится.Видимость =
Форма.ДинамическаяСтруктура = Неопределено Или Не Форма.ДинамическаяСтруктура;
Элементы.ОбеспечениеМатериаламиИРаботамиРезервироватьПоМереПоступления.Видимость =
Форма.ДинамическаяСтруктура = Неопределено Или Не Форма.ДинамическаяСтруктура;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура НастроитьЗависимыеЭлементыФормыНаСервере(СписокРеквизитов = "")
СписокРеквизитов = Новый Структура(СписокРеквизитов);
Инициализация = Не ЗначениеЗаполнено(СписокРеквизитов);
Если Инициализация
Или СписокРеквизитов.Свойство("Партнер")
Или СписокРеквизитов.Свойство("Контрагент")
Или СписокРеквизитов.Свойство("Организация") Тогда
НастроитьЭлементДоговорКонтрагента();
КонецЕсли;
Если Инициализация
Или СписокРеквизитов.Свойство("СкладПродукции") Тогда
Элементы.ГруппаСкладПродукцииИнформация.Видимость = СкладИзделияГруппа;
КонецЕсли;
Если Инициализация
Или СписокРеквизитов.Свойство("СкладМатериалов") Тогда
Элементы.ГруппаСкладМатериаловИнформация.Видимость = СкладМатериалыГруппа;
Элементы.ОбеспечениеМатериаламиИРаботамиСклад.ПараметрыВыбора = Новый ФиксированныйМассив(Новый Массив);
ОбщегоНазначенияУТКлиентСервер.ДобавитьПараметрВыбора(
Элементы.ОбеспечениеМатериаламиИРаботамиСклад,
"Ссылка",
ДанныеВыбораСкладов(Объект.СкладМатериалов));
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура НастроитьЭлементыГруппЗатрат(Форма)
Элементы = Форма.Элементы;
Объект = Форма.Объект;
Если Не Объект.ГруппировкаЗатрат = ПредопределенноеЗначение("Перечисление.ГруппировкиЗатратВЗаказеПереработчику.БезГруппировки") Тогда
ЗаголовокГруппы =
ПереработкаНаСторонеКлиентСервер.ЗаголовокПоляГруппыЗатрат2_5(
ПереработкаНаСторонеКлиентСервер.ПереченьПолейГруппыЗатратЗаказаПереработчику(
Объект.ГруппировкаЗатрат));
Элемент = Элементы.ВыходныеИзделияГруппаЗатрат;
Элемент.Заголовок = ЗаголовокГруппы;
Элемент = Элементы.ПобочныеИзделияГруппаЗатрат;
Элемент.Заголовок = ЗаголовокГруппы;
Элемент = Элементы.ОбеспечениеМатериаламиИРаботамиГруппаЗатрат;
Элемент.Заголовок = ЗаголовокГруппы;
Элемент = Элементы.УслугиГруппаЗатрат;
Элемент.Заголовок = ЗаголовокГруппы;
ШаблонПодсказки = ПереработкаНаСторонеКлиентСервер.ШаблонПодсказкиПоляГруппыЗатрат2_5(Объект.ГруппировкаЗатрат);
Элементы.ВыходныеИзделияГруппаЗатрат.Подсказка = СтрШаблон(ШаблонПодсказки, НСтр("ru = 'изделие'"));
Элементы.ПобочныеИзделияГруппаЗатрат.Подсказка = СтрШаблон(ШаблонПодсказки, НСтр("ru = 'изделие'"));
Элементы.УслугиГруппаЗатрат.Подсказка = СтрШаблон(ШаблонПодсказки, НСтр("ru = 'услуга'"));
Элементы.ОбеспечениеМатериаламиИРаботамиГруппаЗатрат.Подсказка = СтрШаблон(ШаблонПодсказки, НСтр("ru = 'материал/работа'"));
КонецЕсли;
КнопкаОткрытия =
Объект.ГруппировкаЗатрат = ПредопределенноеЗначение("Перечисление.ГруппировкиЗатратВЗаказеПереработчику.ПоЭтапамПроизводства");
Элементы.ВыходныеИзделияГруппаЗатрат.КнопкаОткрытия = КнопкаОткрытия;
Элементы.ПобочныеИзделияГруппаЗатрат.КнопкаОткрытия = КнопкаОткрытия;
Элементы.УслугиГруппаЗатрат.КнопкаОткрытия = КнопкаОткрытия;
Элементы.ОбеспечениеМатериаламиИРаботамиГруппаЗатрат.КнопкаОткрытия = КнопкаОткрытия;
КонецПроцедуры
&НаСервере
Процедура НастроитьЭлементДоговорКонтрагента()
ПараметрыОбъекта = Новый Структура("Партнер, Контрагент, Организация, Договор");
ЗаполнитьЗначенияСвойств(ПараметрыОбъекта, Объект);
ЗакупкиСервер.УстановитьДоступностьДоговора(
ПараметрыОбъекта,
Элементы.Договор.Доступность,
Ложь,
Объект.Договор);
КонецПроцедуры
&НаСервере
Процедура ОбновитьИнформациюПоЗаказам()
Если НЕ Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоЭтапамПроизводства Тогда
Возврат;
КонецЕсли;
СписокРаспоряжений.Очистить();
Для Каждого ТекСтрока Из ГруппыЗатрат Цикл
ПредставлениеРаспоряжения = ТекСтрока.ГруппаЗатрат;
СписокРаспоряжений.Добавить(ТекСтрока.Распоряжение, ПредставлениеРаспоряжения);
КонецЦикла;
МассивСтрок = Новый Массив;
Если СписокРаспоряжений.Количество() = 0 Тогда
Если НЕ Объект.ПометкаУдаления
И НЕ ТолькоПросмотр Тогда
ШаблонНадписи = НСтр("ru = 'Добавить этапы'");
МассивСтрок.Добавить(Новый ФорматированнаяСтрока(ШаблонНадписи,,,, "#ДобавитьРаспоряжения"));
КонецЕсли;
ИначеЕсли СписокРаспоряжений.Количество() = 1 Тогда
ШаблонНадписи = НСтр("ru = 'Основание:'");
МассивСтрок.Добавить(ШаблонНадписи);
МассивСтрок.Добавить(" ");
ТекстРаспоряжение = Новый ФорматированнаяСтрока(СписокРаспоряжений[0].Представление,,,, ПолучитьНавигационнуюСсылку(СписокРаспоряжений[0].Значение));
МассивСтрок.Добавить(ТекстРаспоряжение);
МассивСтрок.Добавить(" ");
ШаблонНадписи = НСтр("ru = 'изменить'");
МассивСтрок.Добавить(Новый ФорматированнаяСтрока(ШаблонНадписи,,,, "#ДобавитьРаспоряжения"));
Иначе
ШаблонНадписи = НСтр("ru = 'Всего этапов: %1'");
ТекстРаспоряжение = СтрШаблон(ШаблонНадписи, Формат(СписокРаспоряжений.Количество(), "ЧГ=0"));
МассивСтрок.Добавить(Новый ФорматированнаяСтрока(ТекстРаспоряжение,,,, "#ДобавитьРаспоряжения"));
КонецЕсли;
НадписьЗаголовокЗаказы = Новый ФорматированнаяСтрока(МассивСтрок);
КонецПроцедуры
&НаСервере
Процедура ОбновитьКартинкуГруппыСкладов(ТаблицаСкладов, НадписьНесколькоСкладов, КартинкаНесколькоСкладов)
ВсегоСкладов = ТаблицаСкладов.Количество();
СкладыКлиентСервер.ОбновитьКартинкуГруппыСкладов(
НадписьНесколькоСкладов,
КартинкаНесколькоСкладов,
ВсегоСкладов);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСписокВыбораГруппировкиЗатрат()
ПараметрыИспользования = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПараметрыИспользования();
ПараметрыИспользования.ПоСпецификациям = ИспользоватьПроизводство;
Если ПолучитьФункциональнуюОпцию("ИспользоватьОбособленноеОбеспечениеЗаказов") Тогда
ПараметрыИспользования.ПоПродукцииИНазначениям = Истина;
ПараметрыИспользования.ПоСпецификациямИНазначениям = ИспользоватьПроизводство;
КонецЕсли;
Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ЗаполнитьДанныеВыбора(
Элементы.ГруппировкаЗатрат.СписокВыбора,
ПараметрыИспользования);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура НастроитьКомандыБуфераОбмена(Форма, ДоступностьЭлементов)
Элементы = Форма.Элементы;
Элемент = Элементы.ВыходныеИзделияВставитьСтроки;
Элемент.Доступность = ДоступностьЭлементов;
Элемент = Элементы.ВыходныеИзделияКонтекстноеМенюВставитьСтроки;
Элемент.Доступность = ДоступностьЭлементов;
Элемент = Элементы.ПобочныеИзделияВставитьСтроки;
Элемент.Доступность = ДоступностьЭлементов;
Элемент = Элементы.ПобочныеИзделияКонтекстноеМенюВставитьСтроки;
Элемент.Доступность = ДоступностьЭлементов;
Элемент = Элементы.ОбеспечениеМатериаламиИРаботамиВставитьСтроки;
Элемент.Доступность = ДоступностьЭлементов;
Элемент = Элементы.ОбеспечениеМатериаламиИРаботамиКонтекстноеМенюВставитьСтроки;
Элемент.Доступность = ДоступностьЭлементов;
Элемент = Элементы.УслугиВставитьСтроки;
Элемент.Доступность = ДоступностьЭлементов;
Элемент = Элементы.УслугиКонтекстноеМенюВставитьСтроки;
Элемент.Доступность = ДоступностьЭлементов;
КонецПроцедуры
&НаСервере
Процедура СвойстваВыполнитьОтложеннуюИнициализацию()
УправлениеСвойствами.ЗаполнитьДополнительныеРеквизитыВФорме(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьЗависимостиДополнительныхРеквизитов()
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ОграничитьТипПолучателя(ИмяТЧ, ТекущиеДанные)
ОграничитьТипПодразделением =
ТекущиеДанные.ТипНоменклатуры = ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Работа")
Или ТекущиеДанные.СписатьНаРасходы;
Элементы[ИмяТЧ + "Получатель"].ПараметрыВыбора = Новый ФиксированныйМассив(Новый Массив);
Если Не ОграничитьТипПодразделением Тогда
МассивПараметровВыбора = Новый Массив;
МассивПараметровВыбора.Добавить(
Новый ПараметрВыбора(
"Отбор.Ссылка",
Новый ФиксированныйМассив(ДанныеВыбораСкладИзделия.ВыгрузитьЗначения())));
НовыеПараметрыВыбора = Новый ФиксированныйМассив(МассивПараметровВыбора);
Элементы[ИмяТЧ + "Получатель"].ПараметрыВыбора = НовыеПараметрыВыбора;
КонецЕсли;
Элементы[ИмяТЧ + "Получатель"].ОграничениеТипа =
?(ОграничитьТипПодразделением,
Новый ОписаниеТипов("СправочникСсылка.СтруктураПредприятия"),
Новый ОписаниеТипов("СправочникСсылка.Склады"));
ТекущиеДанные.Получатель = Элементы[ИмяТЧ + "Получатель"].ОграничениеТипа.ПривестиЗначение(ТекущиеДанные.Получатель);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийФормы
#Область СобытияФормы
&НаСервере
Процедура ПриЧтенииСозданииНаСервере()
ЗаполнитьСлужебныеРеквизиты();
ЗаполнитьЗависимыеСлужебныеРеквизиты(ЭтотОбъект);
ЗаполнитьЗависимыеСлужебныеРеквизитыНаСервере();
ЗаполнитьСлужебныеРеквизитыТабличныхЧастей();
ОбновитьГруппыЗатрат();
ОбновитьТаблицуСкладовИзделий();
ОбновитьТаблицуСкладовМатериалы();
НастроитьЭлементыФормы();
АктуализироватьЗакупкуПодДеятельность(, Ложь);
АктуализироватьНалогообложениеНДС(, Ложь);
ДоставкаТоваров.ПриЧтенииСозданииРаспоряженийНаСервере(Элементы, Объект);
НаправленияДеятельностиСервер.ПриЧтенииСозданииНаСервере(ЭтотОбъект);
ОбновитьСостояниеСервер();
РассчитатьИтогиДокумента(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗаписьюЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
МаксДатаАванса = ДополнительныеПараметры.МаксДатаАванса;
ОтветНаВопрос = РезультатВопроса;
Если ОтветНаВопрос = КодВозвратаДиалога.ОК Тогда
ОтветПередЗаписью = Истина;
Объект.ЖелаемаяДатаПоступления = МаксДатаАванса;
КонецЕсли;
Если Не Объект.НеОтгружатьЧастями Тогда
Отказ = Ложь;
ЭтапыОплатыКлиент.ПредложитьЗаполнитьГрафикОплатПоУмолчанию(
ЭтотОбъект,
Новый ОписаниеОповещения(
"ПередЗаписьюПредложитьЗаполнитьГрафикОплатПоУмолчаниюЗавершение",
ЭтотОбъект,
ДополнительныеПараметры),
Отказ);
Если Отказ Тогда
Возврат;
КонецЕсли;
КонецЕсли;
ОбщегоНазначенияУТКлиент.ЗаписатьОбъектПриНеобходимости(ЭтаФорма, ДополнительныеПараметры.ПараметрыЗаписи, Отказ);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗаписьюПредложитьЗаполнитьГрафикОплатПоУмолчаниюЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат = КодВозвратаДиалога.Да Тогда
Объект.ЭтапыГрафикаОплаты.Очистить();
КонецЕсли;
ПередЗаписьюНаКлиентеСервер();
ОбщегоНазначенияУТКлиент.ЗаписатьОбъектПриНеобходимости(ЭтотОбъект, ДополнительныеПараметры.ПараметрыЗаписи,,Истина);
КонецПроцедуры
&НаСервере
Процедура ОбновитьЭлементыДополнительныхРеквизитов()
УправлениеСвойствами.ОбновитьЭлементыДополнительныхРеквизитов(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаВыбораПодборНаКлиенте(ВыбранноеЗначение, ИмяТЧ)
Если Не ЗначениеЗаполнено(ВыбранноеЗначение) Тогда
Возврат;
КонецЕсли;
Если ИмяТЧ = "ОбеспечениеМатериаламиИРаботами" Тогда
ОбеспечениеВДокументахКлиент.ПоказатьВопросСнятьФлагОтгружатьОднойДатойПослеПодбора(
ЭтаФорма,
ВыбранноеЗначение,
"ОбработкаВыбораПодборНаКлиентеЗавершение");
Иначе
ОбработкаВыбораПодборНаСервере(ВыбранноеЗначение, ИмяТЧ);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаВыбораПодборНаКлиентеЗавершение(Ответ, ДополнительныеПараметры) Экспорт
Если Ответ = КодВозвратаДиалога.Отмена Тогда
Возврат;
КонецЕсли;
Если Ответ = КодВозвратаДиалога.Да Тогда
Объект.НеОтгружатьЧастями = Ложь;
НастроитьЗависимыеЭлементыФормы(ЭтаФорма, "НеОтгружатьЧастями");
КонецЕсли;
ОбработкаВыбораПодборНаСервере(ДополнительныеПараметры, "ОбеспечениеМатериаламиИРаботами");
КонецПроцедуры
&НаСервере
Процедура ОбработкаВыбораПодборНаСервере(ВыбранноеЗначение, ИмяТЧ)
ТаблицаТоваров = ПолучитьИзВременногоХранилища(ВыбранноеЗначение.АдресТоваровВХранилище);
ТаблицаДокумента = Объект[ИмяТЧ];
Если ИмяТЧ = "ВыходныеИзделия" Тогда
СписокСвойств = "Номенклатура, Характеристика, Упаковка, КоличествоУпаковок";
ИначеЕсли ИмяТЧ = "ПобочныеИзделия" Тогда
СписокСвойств = "Номенклатура, Характеристика, Упаковка, Цена, КоличествоУпаковок";
ИначеЕсли ИмяТЧ = "ОбеспечениеМатериаламиИРаботами" Тогда
СписокСвойств = "Номенклатура, Характеристика, Упаковка, Склад, Цена, КоличествоУпаковок, СрокПоставки,
|ВариантОбеспечения, Обособленно, Серия, ДатаОтгрузки";
ИначеЕсли ИмяТЧ = "Услуги" Тогда
СписокСвойств = "Номенклатура, Характеристика, ВидЦеныПоставщика, Цена, Количество";
КонецЕсли;
НачалоДня = НачалоДня(ТекущаяДатаСеанса());
ИзмененныеГруппировки = Новый Массив;
НовыеГруппировки = Новый Массив;
ГруппировкиКЗаполнению = Новый Массив;
ОбрабатываемыеСтроки = Новый Массив;
ДанныеОбИзделиях = Новый Массив;
Для Каждого СтрокаТовара Из ТаблицаТоваров Цикл
ТекущиеДанные = ТаблицаДокумента.Добавить();
ЗаполнитьЗначенияСвойств(ТекущиеДанные, СтрокаТовара, СписокСвойств);
ОбрабатываемыеСтроки.Добавить(ТекущиеДанные);
ЗаполнитьДатуВСтрокеТЧОбщейДатой(ЭтотОбъект, ИмяТЧ, ТекущиеДанные);
Если ИмяТЧ = "ВыходныеИзделия"
И Не Объект.ГруппировкаЗатрат = ПредопределенноеЗначение("Перечисление.ГруппировкиЗатратВЗаказеПереработчику.ПоЭтапамПроизводства")
Или ИмяТЧ = "ОбеспечениеМатериаламиИРаботами"
И ТекущиеДанные.Производится Тогда
ДанныеОбИзделиях.Добавить(
УправлениеДаннымиОбИзделияхКлиентСервер.СобратьДанныеОбИзделииДляВыбораСпецификации(
Объект, ТекущиеДанные, ПараметрыВыбораСпецификаций[ИмяТЧ], ЭтотОбъект));
КонецЕсли;
КонецЦикла;
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
СтруктураДействий = Новый Структура;
ДобавитьДействияПриИзмененииНоменклатуры(ЭтотОбъект, ИмяТЧ, СтруктураДействий);
ДобавитьДействияПроверитьЗаполнитьСклад(ЭтотОбъект, ИмяТЧ, СтруктураДействий);
ДобавитьДействияОбеспечения(ЭтотОбъект, ИмяТЧ, СтруктураДействий, "СкладОбязателен,ДатаОтгрузкиОбязательна");
ДобавитьДействияЗаполнитьВидЦен(ЭтотОбъект, ИмяТЧ, СтруктураДействий);
ДобавитьДействияЗаполнитьЦену(ЭтотОбъект, ИмяТЧ, СтруктураДействий);
ДобавитьДействияИнициализироватьСтатьюИАналитику(ЭтотОбъект, ИмяТЧ, СтруктураДействий);
Если ИмяТЧ = "ОбеспечениеМатериаламиИРаботами" Тогда
СтруктураДействий.Вставить(
"ПроверитьСериюРассчитатьСтатус",
Новый Структура("Склад, ПараметрыУказанияСерий, ТаблицаТоваров",
Объект.СкладМатериалов, ПараметрыУказанияСерий.ОбеспечениеМатериаламиИРаботами, ОбрабатываемыеСтроки));
КонецЕсли;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
ТаблицаДокумента,
КэшированныеЗначения);
Если ИмяТЧ = "ВыходныеИзделия"
И Не Объект.ГруппировкаЗатрат = ПредопределенноеЗначение("Перечисление.ГруппировкиЗатратВЗаказеПереработчику.ПоЭтапамПроизводства")
Или ИмяТЧ = "ОбеспечениеМатериаламиИРаботами"
И ТекущиеДанные.Производится Тогда
УправлениеДаннымиОбИзделиях.ЗаполнитьСпецификациюВСтроках(
ОбрабатываемыеСтроки, ДанныеОбИзделиях, ПараметрыВыбораСпецификаций[ИмяТЧ]);
КонецЕсли;
Для Каждого ТекущиеДанные Из ОбрабатываемыеСтроки Цикл
Если ИмяТЧ = "ВыходныеИзделия" Тогда
КоличествоГруппДоИзменения = ГруппыЗатрат.Количество();
ДобавитьИзменитьГруппуЗатрат(ТекущиеДанные, Истина);
ИзмененныеГруппировки.Добавить(ТекущиеДанные.НомерГруппыЗатрат);
Если Не КоличествоГруппДоИзменения = ГруппыЗатрат.Количество() Тогда
НовыеГруппировки.Добавить(ТекущиеДанные.НомерГруппыЗатрат);
КонецЕсли;
КонецЕсли;
Если Не ИмяТЧ = "ВыходныеИзделия" Тогда
УстановитьНомерГруппыЗатратПоУмолчанию(ИмяТЧ, ТекущиеДанные.ПолучитьИдентификатор());
Если ИмяТЧ = "ОбеспечениеМатериаламиИРаботами" Тогда
ТекущиеДанные.ДатаОтгрузки =
ОбеспечениеВДокументахСервер.ДатаОтгрузкиОбработкаВыбораПодбор(
СтрокаТовара.ДатаОтгрузки,
ТекущиеДанные.ВариантОбеспечения,
НачалоДня);
КонецЕсли;
КонецЕсли;
ГруппировкиКЗаполнению.Добавить(ТекущиеДанные.НомерГруппыЗатрат);
КонецЦикла;
Если ИмяТЧ = "ВыходныеИзделия" Тогда
ПерезаполнитьПоСпецификациямНаСервере(НовыеГруппировки);
РассчитатьПроцентРаспределенияЗатратНаВыходныеИзделия(ИзмененныеГруппировки);
КонецЕсли;
Если ИмяТЧ = "ОбеспечениеМатериаламиИРаботами" Тогда
ОбеспечениеВДокументахСервер.АктуализироватьДатуОтгрузкиОднойДатой(
Объект.НеОтгружатьЧастями,
Объект.ДатаОтгрузки,
Объект.ОбеспечениеМатериаламиИРаботами,
"ДатаОтгрузки");
ОбновитьКолонкуДоступноНаСервере();
ЗаполнитьЗависимыеСлужебныеРеквизитыОбеспечения(ЭтаФорма);
КонецЕсли;
Если Не ГруппировкиКЗаполнению.Количество() = 0 Тогда
Для Каждого ТекГруппа Из ГруппировкиКЗаполнению Цикл
ТаблицаЗаполнитьЗависимыеСлужебныеРеквизитыГруппыЗатрат(ИмяТЧ, ТекГруппа);
КонецЦикла;
КонецЕсли;
Если ИмяТЧ = "ВыходныеИзделия" Тогда
СписокРеквизитов = "КоличествоИзделий, СуммаУслуг, СуммаЗалоговая";
ИначеЕсли ИмяТЧ = "ПобочныеИзделия" Тогда
СписокРеквизитов = "КоличествоИзделий";
ИначеЕсли ИмяТЧ = "Услуги" Тогда
СписокРеквизитов = "СуммаУслуг";
Иначе
СписокРеквизитов = "СуммаЗалоговая";
КонецЕсли;
РассчитатьИтогиДокумента(ЭтаФорма, СписокРеквизитов);
КонецПроцедуры
#КонецОбласти
#Область ЭлементыФормы
#Область Основное
&НаСервере
Процедура СтатусПриИзмененииНаСервере()
Если Объект.Статус = ПредопределенноеЗначение("Перечисление.СтатусыЗаказовПереработчикам.КИсполнению")
Или Объект.Статус = ПредопределенноеЗначение("Перечисление.СтатусыЗаказовПереработчикам.Закрыт") Тогда
Если Не Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоЭтапамПроизводства Тогда
ЗаполнитьДатуПоступленияЖелаемойДатойНаСервере();
КонецЕсли;
ЗаполнитьПустыеДатыВыполненияРаботНаСервере();
КонецЕсли;
НастроитьЗависимыеЭлементыФормы(ЭтаФорма, "Статус");
ЗаполнитьЗависимыеСлужебныеРеквизитыОбеспечения(ЭтаФорма);
КонецПроцедуры
&НаСервере
Процедура ДатаПриИзмененииНаСервере()
ОтветственныеЛицаСервер.ПриИзмененииСвязанныхРеквизитовДокумента(Объект);
АктуализироватьЗакупкуПодДеятельность();
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, "Дата");
КонецПроцедуры
&НаСервере
Процедура ПартнерПриИзмененииНаСервере(ИзмененияУчтены = Неопределено)
Если ИзмененияУчтены = Неопределено Тогда
ИзмененияУчтены = Новый Структура;
КонецЕсли;
КонтрагентДоИзменения = Объект.Контрагент;
Если Не ЗначениеЗаполнено(Объект.Партнер) Тогда
ДоставкаТоваровКлиентСервер.ОчиститьРеквизитыДоставки(Элементы, Объект);
Возврат;
КонецЕсли;
ПартнерыИКонтрагенты.ЗаполнитьКонтрагентаПартнераПоУмолчанию(Объект.Партнер, Объект.Контрагент);
Если КонтрагентДоИзменения <> Объект.Контрагент Тогда
ЗаполнитьДоговорПоУмолчанию(ИзмененияУчтены);
КонецЕсли;
КонтрагентПриИзмененииНаСервере(ИзмененияУчтены);
ДоговорПриИзмененииНаСервере(ИзмененияУчтены);
ЗаполнитьЗависимыеСлужебныеРеквизитыНаСервере("Партнер");
ЗаполнитьРеквизитыДоставкиНаСервере("Партнер");
ГруппировкаПоЭтапам = Ложь;
УказаноРаспоряжение =
ГруппировкаПоЭтапам
И Не Объект.Распоряжения.Количество() = 0;
Если ИспользоватьНаправленияДеятельности
И Не ИзмененияУчтены.Свойство("НаправлениеДеятельности")
И Не УказаноРаспоряжение Тогда
НаправленияДеятельностиСервер.ЗаполнитьНаправлениеПоУмолчанию(Объект.НаправлениеДеятельности, , Объект.Договор);
КонецЕсли;
Если Не ИзмененияУчтены.Свойство("ЗакупкаПодДеятельность") Тогда
АктуализироватьЗакупкуПодДеятельность(ИзмененияУчтены);
КонецЕсли;
Если Не ИзмененияУчтены.Свойство("НалогообложениеНДС") Тогда
АктуализироватьНалогообложениеНДС(ИзмененияУчтены);
КонецЕсли;
НастроитьЗависимыеЭлементыФормыНаСервере("Партнер");
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, "Партнер");
ОтветственныеЛицаСервер.ПриИзмененииСвязанныхРеквизитовДокумента(Объект);
ОбработатьИзменениеНаправленияДеятельности(ИзмененияУчтены);
ОбеспечениеВДокументахСервер.ПриИзмененииРеквизитаДокумента(ЭтаФорма);
КонецПроцедуры
&НаСервере
Процедура КонтрагентПриИзмененииНаСервере(ИзмененияУчтены = Неопределено)
Если ИзмененияУчтены = Неопределено Тогда
ИзмененияУчтены = Новый Структура;
КонецЕсли;
Если ИзмененияУчтены.Свойство("Контрагент") Тогда
Возврат;
КонецЕсли;
Если ЗначениеЗаполнено(Объект.Контрагент) Тогда
ЗаполнитьДоговорПоУмолчанию(ИзмененияУчтены);
КонецЕсли;
ДоговорПриИзмененииНаСервере(ИзмененияУчтены);
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, "Контрагент");
ОбеспечениеВДокументахСервер.ПриИзмененииРеквизитаДокумента(ЭтаФорма);
ИзмененияУчтены.Вставить("Контрагент");
КонецПроцедуры
&НаСервере
Процедура ДоговорПриИзмененииНаСервере(ИзмененияУчтены = Неопределено)
Если ИзмененияУчтены = Неопределено Тогда
ИзмененияУчтены = Новый Структура;
КонецЕсли;
Если ИзмененияУчтены.Свойство("Договор") Тогда
Возврат;
КонецЕсли;
РеквизитыДоговора = "Подразделение, Менеджер, КонтактноеЛицо";
РеквизитыДоговора = Новый Структура(РеквизитыДоговора);
РеквизитыДоговора.Вставить("Валюта", "ВалютаВзаиморасчетов");
РеквизитыДоговора = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Объект.Договор, РеквизитыДоговора);
Для Каждого ТекущийРеквизит Из РеквизитыДоговора Цикл
Если ЗначениеЗаполнено(ТекущийРеквизит.Значение)
И (Не ТекущийРеквизит.Ключ = "Подразделение"
Или ТекущийРеквизит.Ключ = "Подразделение"
И (Не Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоЭтапамПроизводства
Или Объект.Распоряжения.Количество() = 0)) Тогда
Объект[ТекущийРеквизит.Ключ] = ТекущийРеквизит.Значение;
КонецЕсли;
КонецЦикла;
Если Не ВалютаДокумента = Объект.Валюта Тогда
ПересчитатьСуммыДокументаВВалюту();
ВалютаДокумента = Объект.Валюта;
КонецЕсли;
ЗакупкиВызовСервера.ЗаполнитьБанковскиеСчетаПоДоговору(Объект.Договор, Объект.БанковскийСчет);
ГруппировкаПоЭтапам = Ложь;
УказаноРаспоряжение =
ГруппировкаПоЭтапам
И Не Объект.Распоряжения.Количество() = 0;
Если ИспользоватьНаправленияДеятельности
И Не ИзмененияУчтены.Свойство("НаправлениеДеятельности")
И Не УказаноРаспоряжение Тогда
НаправленияДеятельностиСервер.ЗаполнитьНаправлениеПоУмолчанию(Объект.НаправлениеДеятельности, , Объект.Договор);
КонецЕсли;
Если Не ИзмененияУчтены.Свойство("ЗакупкаПодДеятельность") Тогда
АктуализироватьЗакупкуПодДеятельность(ИзмененияУчтены);
КонецЕсли;
РеквизитыДоговора = "ТипДоговора, ВариантОформленияЗакупок";
РеквизитыДоговора = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Объект.Договор, РеквизитыДоговора);
Объект.ХозяйственнаяОперация = Справочники.ДоговорыКонтрагентов.ХозяйственнаяОперация(РеквизитыДоговора.ТипДоговора, РеквизитыДоговора.ВариантОформленияЗакупок);
Если Не ЗначениеЗаполнено(Объект.ХозяйственнаяОперация) Тогда
Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПроизводствоУПереработчика2_5;
КонецЕсли;
Если Не ИзмененияУчтены.Свойство("НалогообложениеНДС") Тогда
АктуализироватьНалогообложениеНДС(ИзмененияУчтены);
КонецЕсли;
НастроитьЭлементДоговорКонтрагента();
ОбработатьИзменениеНаправленияДеятельности(ИзмененияУчтены);
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтотОбъект, "Договор");
ОбеспечениеВДокументахСервер.ПриИзмененииРеквизитаДокумента(ЭтотОбъект);
ИзмененияУчтены.Вставить("Договор");
КонецПроцедуры
&НаСервере
Процедура ОрганизацияПриИзмененииНаСервере(ИзмененияУчтены = Неопределено)
Если ИзмененияУчтены = Неопределено Тогда
ИзмененияУчтены = Новый Структура;
КонецЕсли;
Если ИзмененияУчтены.Свойство("Организация") Тогда
Возврат;
КонецЕсли;
Если ЗначениеЗаполнено(Объект.Контрагент) Тогда
ЗаполнитьДоговорПоУмолчанию(ИзмененияУчтены);
КонецЕсли;
ДоговорПриИзмененииНаСервере(ИзмененияУчтены);
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, "Организация");
ДенежныеСредстваСервер.ПроверитьЗаполнитьБанковскийСчетОрганизацииПоВладельцу(
Объект.Организация,
Объект.БанковскийСчет,
Объект.ФормаОплаты,
Объект.НаправлениеДеятельности);
ДенежныеСредстваСервер.ПроверитьЗаполнитьКассуОрганизацииПоВладельцу(
Объект.Организация,
Объект.Касса,
Объект.ФормаОплаты,
Объект.НаправлениеДеятельности);
ОтветственныеЛицаСервер.ПриИзмененииСвязанныхРеквизитовДокумента(Объект);
ОбработатьИзменениеНаправленияДеятельности(ИзмененияУчтены);
ОбеспечениеВДокументахСервер.ПриИзмененииРеквизитаДокумента(ЭтаФорма);
ИзмененияУчтены.Вставить("Организация");
КонецПроцедуры
&НаСервере
Процедура УслугиПоПереработкеПриИзмененииНаСервере()
ИспользоватьУслуги =
Объект.УслугиПоПереработке =
ПредопределенноеЗначение("Перечисление.ВариантыОформленияУслугДокументовПереработки.УказываютсяВЗаказеОтчете");
Если Не ИспользоватьУслуги Тогда
Объект.Услуги.Очистить();
Объект.ЭтапыГрафикаОплаты.Очистить();
Объект.БанковскийСчет = ПредопределенноеЗначение("Справочник.БанковскиеСчетаОрганизаций.ПустаяСсылка");
Объект.ГруппаФинансовогоУчета = ПредопределенноеЗначение("Справочник.ГруппыФинансовогоУчетаРасчетов.ПустаяСсылка");
РассчитатьИтогиДокумента(ЭтаФорма, "СуммаУслуг");
КонецЕсли;
НастроитьЗависимыеЭлементыФормы(ЭтаФорма, "УслугиПоПереработке");
КонецПроцедуры
&НаСервере
Процедура СпособРаспределенияЗатратНаВыходныеИзделияПриИзмененииНаСервере()
ПараметрыРаспределенияЗатратСтруктура = Документы.ЗаказПереработчику2_5.ПараметрыРаспределенияЗатрат(Объект);
ПараметрыРаспределенияЗатрат = Новый ФиксированнаяСтруктура(ПараметрыРаспределенияЗатратСтруктура);
Если Объект.ГруппировкаЗатрат <> Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоЭтапамПроизводства Тогда
ПроизводствоСервер.РассчитатьДолюСтоимости(Объект, ПараметрыРаспределенияЗатрат);
КонецЕсли;
РассчитатьПроцентРаспределенияЗатратНаВыходныеИзделия();
КонецПроцедуры
&НаСервере
Процедура СкладПродукцииПриИзмененииНаСервере()
ЗаполнитьЗависимыеСлужебныеРеквизитыНаСервере("СкладПродукции");
НастроитьЗависимыеЭлементыФормы(ЭтаФорма, "СкладПродукции");
НастроитьЗависимыеЭлементыФормыНаСервере("СкладПродукции");
ПараметрыЗаполненияСкладаТЧ = ПараметрыЗаполненияСкладаТЧ("ВыходныеИзделия");
ЗаполнитьСкладТЧНаСервере(ПараметрыЗаполненияСкладаТЧ);
ПараметрыЗаполненияСкладаТЧ.ИмяТЧ = "ПобочныеИзделия";
ЗаполнитьСкладТЧНаСервере(ПараметрыЗаполненияСкладаТЧ);
ОбновитьТаблицуСкладовИзделий();
ОбновитьКартинкуГруппыСкладов(
ТаблицаСкладовИзделия,
НадписьНесколькоСкладовИзделия,
Элементы.КартинкаНесколькоСкладовИзделия);
КонецПроцедуры
&НаСервере
Процедура СкладМатериаловПриИзмененииНаСервере()
ЗаполнитьЗависимыеСлужебныеРеквизитыНаСервере("СкладМатериалов");
НастроитьЗависимыеЭлементыФормы(ЭтаФорма, "СкладМатериалов");
НастроитьЗависимыеЭлементыФормыНаСервере("СкладМатериалов");
ПараметрыЗаполненияСкладаТЧ = ПараметрыЗаполненияСкладаТЧ("ОбеспечениеМатериаламиИРаботами");
ЗаполнитьСкладТЧНаСервере(ПараметрыЗаполненияСкладаТЧ);
ОбновитьТаблицуСкладовМатериалы();
ОбновитьКартинкуГруппыСкладов(
ТаблицаСкладовМатериалы,
НадписьНесколькоСкладовМатериалы,
Элементы.КартинкаНесколькоСкладовМатериалы);
КонецПроцедуры
&НаСервере
Процедура ГруппировкаЗатратПриИзмененииНаСервере()
Если Не ЗначениеЗаполнено(Объект.ГруппировкаЗатрат) Тогда
Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.БезГруппировки;
КонецЕсли;
ГруппыЗатрат.Очистить();
Объект.МаксимальныйНомерГруппыЗатрат = 0;
КоличествоГруппЗатрат = 0;
Для Каждого ТекущиеДанные Из Объект.ВыходныеИзделия Цикл
ДобавитьИзменитьГруппуЗатрат(ТекущиеДанные, Истина);
КонецЦикла;
Если Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.БезГруппировки Тогда
ИндексГруппыЗатрат = 1;
ИначеЕсли КоличествоГруппЗатрат = 1 Тогда
ИндексГруппыЗатрат = Объект.МаксимальныйНомерГруппыЗатрат;
Иначе
ИндексГруппыЗатрат = 0;
КонецЕсли;
Для Каждого ТекущиеДанные Из Объект.ПобочныеИзделия Цикл
ТекущиеДанные.НомерГруппыЗатрат = ИндексГруппыЗатрат;
ТекущиеДанные.ГруппаЗатрат = "";
КонецЦикла;
ОбновитьЗависимыеРеквизиты = Ложь;
Для Каждого ТекущиеДанные Из Объект.ОбеспечениеМатериаламиИРаботами Цикл
ТекущиеДанные.НомерГруппыЗатрат = ИндексГруппыЗатрат;
ТекущиеДанные.ГруппаЗатрат = "";
КонецЦикла;
Для Каждого ТекущиеДанные Из Объект.Услуги Цикл
ТекущиеДанные.НомерГруппыЗатрат = ИндексГруппыЗатрат;
ТекущиеДанные.ГруппаЗатрат = "";
КонецЦикла;
Для Каждого ТекГруппа Из ГруппыЗатрат Цикл
ТаблицаЗаполнитьЗависимыеСлужебныеРеквизитыГруппыЗатрат("ВыходныеИзделия", ТекГруппа.НомерГруппыЗатрат);
КонецЦикла;
ОбновитьПредставлениеГруппЗатрат();
Если ОбновитьЗависимыеРеквизиты Тогда
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты("ОбеспечениеМатериаламиИРаботами"));
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.ОбеспечениеМатериаламиИРаботами, СтруктураДействий, Неопределено);
КонецЕсли;
Если Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоПродукции
Или Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоПродукцииИНазначениям Тогда
Объект.СпособРаспределенияЗатратНаВыходныеИзделия = Перечисления.СпособыРаспределенияЗатратНаВыходныеИзделия.ПустаяСсылка();
ИначеЕсли Не ЗначениеЗаполнено(Объект.СпособРаспределенияЗатратНаВыходныеИзделия) Тогда
Объект.СпособРаспределенияЗатратНаВыходныеИзделия = Перечисления.СпособыРаспределенияЗатратНаВыходныеИзделия.ПоДолямСтоимости;
КонецЕсли;
СпособРаспределенияЗатратНаВыходныеИзделияПриИзмененииНаСервере();
ЗаполнитьЗависимыеСлужебныеРеквизиты(ЭтаФорма, "ГруппировкаЗатрат,ПереработкаПоЗаказу,Распоряжения");
ЗаполнитьЗависимыеСлужебныеРеквизитыНаСервере("ГруппировкаЗатрат,ПереработкаПоЗаказу,Распоряжения");
НастроитьЗависимыеЭлементыФормы(ЭтаФорма, "ГруппировкаЗатрат,ПереработкаПоЗаказу,Распоряжения");
ОбновитьИнформациюПоЗаказам();
ОбеспечениеВДокументахСервер.ПриИзмененииРеквизитаДокумента(ЭтаФорма);
РассчитатьИтогиДокумента(ЭтаФорма);
ГруппировкаЗатратДоИзменения = Объект.ГруппировкаЗатрат;
КонецПроцедуры
&НаКлиенте
Процедура НадписьЭтапыОплатыНажатиеЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат <> Неопределено Тогда
ИзмененныеРеквизиты = Результат.СтарыеЗначенияИзмененныхРеквизитов;
ЭтапыОплатыПриИзмененииНаСервере(ИзмененныеРеквизиты);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ВыходныеИзделия
&НаКлиенте
Процедура ОткрытьФормуВводаДолиСтоимости(ТекущиеДанные, СтандартнаяОбработка)
Если Не Объект.ГруппировкаЗатрат =
ПредопределенноеЗначение("Перечисление.ГруппировкиЗатратВЗаказеПереработчику.ПоЭтапамПроизводства") Тогда
Если Объект.СпособРаспределенияЗатратНаВыходныеИзделия =
ПредопределенноеЗначение("Перечисление.СпособыРаспределенияЗатратНаВыходныеИзделия.ПоДолямСтоимости") Тогда
Возврат;
КонецЕсли;
КонецЕсли;
СтандартнаяОбработка = Ложь;
НетОшибок = ПроизводствоКлиент.ПроверитьЗаполнениеПередВводомДолиСтоимости(ТекущиеДанные, ПараметрыРаспределенияЗатрат);
Если НетОшибок Тогда
ПараметрыФормы =
ПараметрыФормыВводаДолиСтоимости(
ПараметрыРаспределенияЗатрат,
ТекущиеДанные.ПолучитьИдентификатор());
ОткрытьФорму(
"ОбщаяФорма.ВводДолиСтоимости",
ПараметрыФормы,
ЭтаФорма);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаВводаДолиСтоимости(Элемент, ТекущиеДанные, ВыбранноеЗначение)
Если ТекущиеДанные.ДоляСтоимости <> ВыбранноеЗначение.ДоляСтоимости Тогда
ПроизводствоКлиентСервер.ЗаполнитьДолюСтоимостиВСтроке(ТекущиеДанные, ВыбранноеЗначение);
Группировки = Новый Массив;
Группировки.Добавить(ТекущиеДанные.НомерГруппыЗатрат);
РассчитатьПроцентРаспределенияЗатратНаВыходныеИзделия(Группировки);
Модифицированность = Истина;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ВыходныеИзделияПриИзмененииНаСервере()
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтотОбъект, "ВыходныеИзделия.ДатаПоступления");
КонецПроцедуры
#КонецОбласти
#Область ОбеспечениеМатериаламиИРаботами
#Область Обеспечение
&НаКлиенте
Процедура Подключаемый_ПриИзмененииМодифицированностиФормы()
Если ФормаМодифицирована <> Модифицированность Тогда
ОбеспечениеВДокументахКлиент.НастроитьГиперссылкиСостояниеОбеспечения(ЭтаФорма);
ФормаМодифицирована = Модифицированность;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПроверитьВыполнениеЗаданияРаспределенияЗапасов()
Ошибка = Ложь;
Если ОбеспечениеВДокументахКлиент.НужноОбновитьДоступностьПослеЗаписи(ЭтотОбъект,
"Подключаемый_ПроверитьВыполнениеЗаданияРаспределенияЗапасов", Ошибка) Тогда
ОбеспечениеВДокументахКлиент.НастроитьГиперссылкиСостояниеОбеспеченияПослеЗаписи(ЭтотОбъект, Ошибка);
ОбновлятьКолонку = ОбеспечениеВДокументахКлиент.ОбновлятьКолонкуДоступноПослеРаспределенияЗапасов(ЭтотОбъект);
Если ОбновлятьКолонку Тогда
ОбновитьКолонкуДоступноПослеРаспределенияЗапасов();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбновитьКолонкуДоступноПослеРаспределенияЗапасов()
ОбеспечениеВДокументахСервер.ОбновитьДоступностьПослеЗаписи(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура Подключаемый_ПроверитьВыполнениеЗаданияРаспределенияЗапасовНаСервере()
ОбеспечениеВДокументахСервер.ОбновитьДоступностьПослеЗаписи(ЭтаФорма);
ОбеспечениеВДокументахСервер.НастроитьГиперссылкиСостояниеОбеспечения(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ОбеспечениеМатериаламиИРаботамиВариантОбеспеченияПриИзмененииЗавершение(Ответ, ДополнительныеПараметры) Экспорт
ПараметрыЗаполнения = ОбеспечениеВДокументахКлиент.ПараметрыОбработкиДатОтгрузкиПослеЗаполненияОбеспечения(Ответ);
ОбеспечениеМатериаламиИРаботамиВариантОбеспеченияПриИзмененииНаСервере(ПараметрыЗаполнения);
КонецПроцедуры
&НаСервере
Процедура ОбеспечениеМатериаламиИРаботамиВариантОбеспеченияПриИзмененииНаСервере(ПараметрыЗаполнения)
Изменения = ОбеспечениеВДокументахСервер.ВариантОбеспеченияПриИзменении(
ЭтаФорма,
Элементы.ОбеспечениеМатериаламиИРаботами.ТекущаяСтрока);
Режим = ОбеспечениеВДокументахКлиентСервер.РежимВыборДействияНепосредственно();
ПослеЗаполненияОбеспечения(Изменения, Режим, ПараметрыЗаполнения);
КонецПроцедуры
#КонецОбласти
#Область Серии
&НаКлиенте
Процедура ОткрытьПодборСерийПриСканированииШтрихкодаНоменклатуры()
Если ТекущиеДанныеИдентификатор = Неопределено Тогда
Возврат;
КонецЕсли;
ТекущиеДанные = Объект.ОбеспечениеМатериаламиИРаботами.НайтиПоИдентификатору(ТекущиеДанныеИдентификатор);
ОткрытьПодборСерий(, ТекущиеДанные);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьПодборСерий(Текст = "", ТекущиеДанные = Неопределено)
ПараметрыФормы =
ПараметрыФормыЗапросаКоличестваИСерий(ОбеспечениеВДокументахКлиентСервер.РежимПодборСерий());
Если ПараметрыФормы <> Неопределено Тогда
ОткрытьФорму(
"Обработка.ЗапросКоличестваИСерий.Форма",
ПараметрыФормы,
ЭтаФорма,,,,
Новый ОписаниеОповещения("ОбработатьВыборСкладаИСерии", ЭтаФорма, ПараметрыФормы));
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьПодборСерийЗавершение(РезультатЗакрытия, ДополнительныеПараметры) Экспорт
Если Не РезультатЗакрытия = Неопределено Тогда
ОбработатьУказаниеСерийНаСервере(
ДополнительныеПараметры.ПараметрыУказанияСерий,
ДополнительныеПараметры.ПараметрыФормыУказанияСерий);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбработатьУказаниеСерийНаСервере(ПараметрыУказанияСерий, ПараметрыФормыУказанияСерий)
СтруктураДействий = Новый Структура;
НоменклатураСервер.ОбработатьУказаниеСерий(
Объект,
ПараметрыУказанияСерий,
ПараметрыФормыУказанияСерий,
СтруктураДействий);
КонецПроцедуры
&НаСервере
Функция ЕстьЗаполненныеСерииПоFEFO()
Возврат НоменклатураСервер.ЕстьСтрокиСЗаполненнымиПоFEFOСериями(Объект.ОбеспечениеМатериаламиИРаботами);
КонецФункции
&НаКлиенте
Процедура ЗаполнитьСерииПоFEFOЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если НЕ Результат Тогда
Возврат;
КонецЕсли;
Если Не ЗаполнитьСерииПоFEFOСервер() Тогда
НоменклатураКлиент.ПредупредитьОбОтсутствииСтрокЗаполняемыхПоFEFO();
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ЗаполнитьСерииПоFEFOСервер()
Если НоменклатураСервер.ЕстьСтрокиСЗаполняемымиПоFEFOСериями(Объект.ОбеспечениеМатериаламиИРаботами) Тогда
НоменклатураСервер.ЗаполнитьСерииПоFEFO(Объект,ПараметрыУказанияСерий.ОбеспечениеМатериаламиИРаботами);
Возврат Истина;
Иначе
Возврат Ложь;
КонецЕсли;
КонецФункции
#КонецОбласти
#КонецОбласти
#Область Дополнительно
&НаКлиенте
Процедура НомерВходящегоДокументаОкончаниеВводаТекстаЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
СписокЗаказовПоНомеру = ДополнительныеПараметры.СписокЗаказов;
Если РезультатВопроса = "ОткрытьСписокЗаказов" Тогда
Если СписокЗаказовПоНомеру.Количество() > 1 Тогда
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("СписокДокументов", СписокЗаказовПоНомеру);
ПараметрыФормы.Вставить("Заголовок", НСтр("ru='Заказы переработчикам (%КоличествоДокументов%)'"));
ОткрытьФорму("ОбщаяФорма.ПросмотрСпискаДокументов", ПараметрыФормы);
Иначе
ПараметрыФормы = Новый Структура("Ключ", СписокЗаказовПоНомеру.Получить(0).Значение);
ОткрытьФорму("Документ.ЗаказПереработчику2_5.ФормаОбъекта", ПараметрыФормы);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВопросПересчитатьСуммыЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
Если РезультатВопроса = КодВозвратаДиалога.Да Тогда
ВалютаПриИзмененииЗавершение(Истина);
Иначе
ВалютаПриИзмененииЗавершение(Ложь);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВалютаПриИзмененииЗавершение(ПересчитатьСуммы)
ВалютаПриИзмененииНаСервере(ПересчитатьСуммы);
Если ПересчитатьСуммы Тогда
ЦенообразованиеКлиент.ОповеститьОбОкончанииПересчетаСуммВВалюту(ВалютаДокумента, Объект.Валюта);
КонецЕсли;
ВалютаДокумента = Объект.Валюта;
КонецПроцедуры
&НаСервере
Процедура ВалютаПриИзмененииНаСервере(ПересчитатьСуммы)
ЗаполнитьДоговорПоУмолчанию(Неопределено);
Если ПересчитатьСуммы Тогда
ПересчитатьСуммыДокументаВВалюту();
КонецЕсли;
ЗаполнитьПодчиненныеСвойстваПоСтатистике("Валюта");
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, "Валюта");
КонецПроцедуры
&НаСервере
Процедура ЦенаВключаетНДСПриИзмененииНаСервере(КэшированныеЗначения)
СтруктураДействий = Новый Структура;
ДобавитьДействияПересчетаСумм(ЭтаФорма, "Услуги", СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Услуги, СтруктураДействий, КэшированныеЗначения);
ЗаполнитьЗависимыеСлужебныеРеквизитыНаСервере("ЦенаВключаетНДС");
РассчитатьИтогиДокумента(ЭтаФорма, "СуммаУслуг");
КонецПроцедуры
&НаСервере
Процедура НалогообложениеНДСПриИзмененииНаСервере()
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект));
ДобавитьДействияПересчетаСумм(ЭтаФорма, "Услуги", СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиКлиентСерверЛокализация.ДополнитьСтруктуруДействийПриИзмененииЭлемента(
ЭтаФорма,
"Номенклатура",
СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Услуги, СтруктураДействий, Неопределено);
РассчитатьИтогиДокумента(ЭтаФорма, "СуммаУслуг");
НастроитьЗависимыеЭлементыФормы(ЭтаФорма, "НалогообложениеНДС");
КонецПроцедуры
&НаКлиенте
Процедура ВидЦеныПриИзмененииЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
Если РезультатВопроса = КодВозвратаДиалога.Да Тогда
ОценкаПроизводительностиКлиент.ЗамерВремени(
"Документ.ЗаказПереработчику2_5.Форма.ФормаДокумента.ВидЦеныПриИзменении");
ЦеныРассчитаны = ВидЦеныПриИзмененииЗавершениеНаСервере();
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияЦенПоВидуЦен(ЦеныРассчитаны, Объект.ВидЦены);
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ВидЦеныПриИзмененииЗавершениеНаСервере()
ЦеныРассчитаны = ЗаполнитьЦеныПоВидуЦенСервер("ПобочныеИзделия");
ЦеныРассчитаны = ЗаполнитьЦеныПоВидуЦенСервер("ОбеспечениеМатериаламиИРаботами") Или ЦеныРассчитаны;
Возврат ЦеныРассчитаны;
КонецФункции
&НаСервере
Процедура НаправлениеДеятельностиПриИзмененииНаСервере(ИзмененияУчтены = Неопределено)
Если ИзмененияУчтены = Неопределено Тогда
ИзмененияУчтены = Новый Структура;
КонецЕсли;
Если ИзмененияУчтены.Свойство("НаправлениеДеятельности") Тогда
Возврат;
КонецЕсли;
Если Объект.ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоДоговорамКонтрагентов Тогда
ЗаполнитьДоговорПоУмолчанию(ИзмененияУчтены);
КонецЕсли;
Если Не ИзмененияУчтены.Свойство("ЗакупкаПодДеятельность") Тогда
АктуализироватьЗакупкуПодДеятельность(ИзмененияУчтены);
КонецЕсли;
Если Не ИзмененияУчтены.Свойство("НалогообложениеНДС") Тогда
АктуализироватьНалогообложениеНДС(ИзмененияУчтены);
КонецЕсли;
ОбработатьИзменениеНаправленияДеятельности(ИзмененияУчтены);
ОбеспечениеВДокументахСервер.ПриИзмененииРеквизитаДокумента(ЭтаФорма);
ИзмененияУчтены.Вставить("НаправлениеДеятельности");
КонецПроцедуры
&НаСервере
Процедура ДатаСогласованияПриИзмененииНаСервере()
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, "ДатаСогласования");
КонецПроцедуры
#КонецОбласти
#Область Доставка
&НаСервере
Процедура ОсобыеУсловияПеревозкиПриИзмененииСервер()
ДоставкаТоваров.ОсобыеУсловияПеревозкиПриИзменении(Элементы, Объект);
КонецПроцедуры
&НаСервере
Процедура ДополнитьИнформациюПоДоставкеКонтактамиСервер()
ДоставкаТоваров.ДополнитьИнформациюПоДоставкеКонтактами(Объект);
КонецПроцедуры
#КонецОбласти
#Область ГруппыЗатрат
&НаКлиенте
Процедура ТаблицаГруппаЗатратНачалоВыбораЗавершение(Результат, ИмяТЧ) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
ТаблицаГруппаЗатратНачалоВыбораЗавершениеНаСервере(Результат, ИмяТЧ, Элементы[ИмяТЧ].ВыделенныеСтроки);
КонецПроцедуры
&НаСервере
Процедура ТаблицаГруппаЗатратНачалоВыбораЗавершениеНаСервере(Результат, ИмяТЧ, Знач ВыделенныеСтроки)
Если ТаблицаГруппаЗатратНачалоВыбораПроверитьРезультат(Результат, ИмяТЧ) Тогда
Возврат;
КонецЕсли;
Группировки = Новый Массив;
Группировки.Добавить(Результат.НомерГруппыЗатрат);
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
ОбрабатываемыеСтроки = Новый Массив;
Для Каждого ИдентификаторСтроки Из ВыделенныеСтроки Цикл
ТекущиеДанные = Объект[ИмяТЧ].НайтиПоИдентификатору(ИдентификаторСтроки);
Если Группировки.Найти(ТекущиеДанные.НомерГруппыЗатрат) = Неопределено Тогда
Группировки.Добавить(ТекущиеДанные.НомерГруппыЗатрат);
КонецЕсли;
ТекущиеДанные.НомерГруппыЗатрат = Результат.НомерГруппыЗатрат;
ТекущиеДанные.ГруппаЗатрат = Результат.ГруппаЗатрат;
Если ИмяТЧ = "ОбеспечениеМатериаламиИРаботами" Тогда
ТекущиеДанные.Назначение =
?(ТекущиеДанные.Обособленно,
Результат.НазначениеОбеспечения,
Неопределено);
КонецЕсли;
КонецЦикла;
Если ИмяТЧ = "ОбеспечениеМатериаламиИРаботами" Тогда
ОбновитьКолонкуДоступноНаСервере();
КонецЕсли;
Для Каждого НомерГруппыЗатрат Из Группировки Цикл
ТаблицаЗаполнитьЗависимыеСлужебныеРеквизитыГруппыЗатрат(ИмяТЧ, НомерГруппыЗатрат);
КонецЦикла;
Если ИмяТЧ = "ВыходныеИзделия" Тогда
РассчитатьПроцентРаспределенияЗатратНаВыходныеИзделия(Группировки);
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ТаблицаГруппаЗатратНачалоВыбораПроверитьРезультат(Результат, ИмяТЧ)
Отказ = Ложь;
ОписаниеГруппыЗатрат = ДанныеГруппыЗатратПоНомеруГруппыЗатрат(Результат.НомерГруппыЗатрат);
Если Не ИмяТЧ = ОписаниеГруппыЗатрат.ИмяТаблицыИзделий
И ОписаниеГруппыЗатрат.ВсеСтрокиИзделийОтменены Тогда
Отказ = Истина;
Текст = НСтр("ru = 'Все строки продукции группы затрат отменены. Выбор такой группы затрат невозможен.'");
ОбщегоНазначения.СообщитьПользователю(Текст);
КонецЕсли;
Возврат Отказ;
КонецФункции
#КонецОбласти
#Область ВспомогательныеПроцедуры
#Область УчетНДС
&НаСервере
Процедура АктуализироватьЗакупкуПодДеятельность(ИзмененияУчтены = Неопределено, Заполнить = Истина)
Если ИзмененияУчтены = Неопределено Тогда
ИзмененияУчтены = Новый Структура;
КонецЕсли;
ПараметрыЗаполнения = Документы.ЗаказПереработчику2_5.ПараметрыЗаполненияВидаДеятельностиНДС(Объект);
Если Заполнить Тогда
УчетНДСУП.ЗаполнитьВидДеятельностиНДС(
Объект.ЗакупкаПодДеятельность,
ПараметрыЗаполнения,
УчетНДСКэшированныеЗначенияПараметров);
КонецЕсли;
УчетНДСУП.ЗаполнитьСписокВыбораВидаДеятельностиНДС(
Элементы.ЗакупкаПодДеятельность,
Объект.ЗакупкаПодДеятельность,
ПараметрыЗаполнения,
УчетНДСКэшированныеЗначенияПараметров);
ИзмененияУчтены.Вставить("ЗакупкаПодДеятельность");
КонецПроцедуры
&НаСервере
Процедура АктуализироватьНалогообложениеНДС(ИзмененияУчтены = Неопределено, Заполнить = Истина)
Если ИзмененияУчтены = Неопределено Тогда
ИзмененияУчтены = Новый Структура;
КонецЕсли;
ПараметрыЗаполнения = Документы.ЗаказПереработчику2_5.ПараметрыЗаполненияНалогообложенияНДСЗакупки(Объект);
Если Заполнить Тогда
УчетНДСУП.ЗаполнитьНалогообложениеНДСЗакупки(
Объект.НалогообложениеНДС,
ПараметрыЗаполнения,
УчетНДСКэшированныеЗначенияПараметров);
НалогообложениеНДСПриИзмененииНаСервере();
КонецЕсли;
УчетНДСУП.ЗаполнитьСписокВыбораНалогообложенияНДСЗакупки(
Элементы.НалогообложениеНДС,
Объект.НалогообложениеНДС,
ПараметрыЗаполнения,
УчетНДСКэшированныеЗначенияПараметров);
ИзмененияУчтены.Вставить("НалогообложениеНДС");
КонецПроцедуры
#КонецОбласти
#Область Взаиморасчеты
&НаСервере
Процедура ПоместитьЭтапыОплатыВоВременноеХранилище(ИмяЭлемента)
ВзаиморасчетыСервер.ПоместитьЭтапыОплатыВоВременноеХранилище(ЭтаФорма, ИмяЭлемента);
КонецПроцедуры
&НаСервере
Процедура ЭтапыОплатыПриИзмененииНаСервере(ИзмененныеРеквизиты)
ВзаиморасчетыСервер.ЗагрузитьЭтапыОплатыИзВременногоХранилища(ЭтаФорма);
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, ИзмененныеРеквизиты, Истина);
КонецПроцедуры
&НаСервере
Процедура ОбработкаОповещенияВзаиморасчетыНаСервере(ИмяСобытия, Параметр)
ОбновитьСостояниеСервер();
ВзаиморасчетыСервер.ОбработкаОповещения(ЭтаФорма, ИмяСобытия, Параметр);
КонецПроцедуры
#КонецОбласти
&НаСервере
Процедура ОбработатьИзменениеНаправленияДеятельности(ИзмененияУчтены)
Если Не ИзмененияУчтены.Свойство("НаправлениеДеятельности") Тогда
НаправленияДеятельностиСервер.ПриИзмененииНаправленияДеятельности(ЭтаФорма);
Для Каждого ТекущиеДанные Из Объект.ВыходныеИзделия Цикл
ДобавитьИзменитьГруппуЗатрат(ТекущиеДанные, Истина);
КонецЦикла;
Для Каждого ТекГруппа Из ГруппыЗатрат Цикл
ТаблицаЗаполнитьЗависимыеСлужебныеРеквизитыГруппыЗатрат("ВыходныеИзделия", ТекГруппа.НомерГруппыЗатрат);
КонецЦикла;
РассчитатьПроцентРаспределенияЗатратНаВыходныеИзделия();
ИзмененияУчтены.Вставить("НаправлениеДеятельности");
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ФлагОднойДатойПриИзмененииНаСервере(ИменаТЧ, ИмяПоляФлагаОднойДатой, ИмяПоляДата)
Если Объект[ИмяПоляФлагаОднойДатой] Тогда
Объект[ИмяПоляДата] = МаксимальнаяДатаТЧ(ИменаТЧ, ИмяПоляДата);
ТабличныеЧасти = СтрРазделить(ИменаТЧ, ",");
Для Каждого ИмяТЧ Из ТабличныеЧасти Цикл
ЗаполнитьДатуВТЧ(ИмяТЧ, Объект[ИмяПоляДата]);
КонецЦикла;
КонецЕсли;
НастроитьЗависимыеЭлементыФормы(ЭтаФорма, ИмяПоляФлагаОднойДатой);
КонецПроцедуры
&НаСервере
Процедура ОбщаяДатаПриИзмененииНаСервере(ИменаТЧ, ИмяПоляДата)
ТабличныеЧасти = СтрРазделить(ИменаТЧ, ",");
Для Каждого ИмяТЧ Из ТабличныеЧасти Цикл
ЗаполнитьДатуВТЧ(ИмяТЧ, Объект[ИмяПоляДата]);
КонецЦикла;
КонецПроцедуры
&НаСервере
Функция МаксимальнаяДатаТЧ(ИменаТЧ, ИмяПоляДата)
МаксимальнаяДата = Дата(1,1,1);
ТабличныеЧасти = СтрРазделить(ИменаТЧ, ",");
Для Каждого ИмяТЧ Из ТабличныеЧасти Цикл
Для Каждого ДанныеСтроки Из Объект[ИмяТЧ] Цикл
Если ДанныеСтроки.Свойство("Отменено")
И ДанныеСтроки.Отменено Тогда
Продолжить;
КонецЕсли;
МаксимальнаяДата = Макс(МаксимальнаяДата, ДанныеСтроки[ИмяПоляДата]);
КонецЦикла;
КонецЦикла;
Возврат МаксимальнаяДата
КонецФункции
&НаСервере
Процедура ОбновитьСостояниеСервер()
Документы.ЗаказПереработчику2_5.РассчитатьСостояние(
Объект.Ссылка,
Объект.Договор,
ЭтаФорма);
КонецПроцедуры
&НаСервере
Процедура ОбновитьТаблицуСкладовИзделий()
ТаблицаСкладовИзделия.Очистить();
Если Не СкладИзделияГруппа Тогда
Возврат;
КонецЕсли;
Склады = Новый Соответствие();
Для Каждого ТекСтрока Из Объект.ВыходныеИзделия Цикл
Если ЗначениеЗаполнено(ТекСтрока.Получатель)
И ТипЗнч(ТекСтрока.Получатель) = Тип("СправочникСсылка.Склады")
И Не ТекСтрока.Отменено Тогда
КоличествоСкладов = Склады.Получить(ТекСтрока.Получатель);
Если КоличествоСкладов = Неопределено Тогда
КоличествоСкладов = 0;
КонецЕсли;
Склады.Вставить(ТекСтрока.Получатель, КоличествоСкладов + 1);
КонецЕсли;
КонецЦикла;
Для Каждого ТекСтрока Из Объект.ПобочныеИзделия Цикл
Если ЗначениеЗаполнено(ТекСтрока.Получатель)
И ТипЗнч(ТекСтрока.Получатель) = Тип("СправочникСсылка.Склады")
И Не ТекСтрока.Отменено Тогда
КоличествоСкладов = Склады.Получить(ТекСтрока.Получатель);
Если КоличествоСкладов = Неопределено Тогда
КоличествоСкладов = 0;
КонецЕсли;
Склады.Вставить(ТекСтрока.Получатель, КоличествоСкладов + 1);
КонецЕсли;
КонецЦикла;
Для Каждого Элемент Из Склады Цикл
НоваяСтрока = ТаблицаСкладовИзделия.Добавить();
НоваяСтрока.Склад = Элемент.Ключ;
НоваяСтрока.КоличествоСтрок = Элемент.Значение;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ОбновитьТаблицуСкладовМатериалы()
ТаблицаСкладовМатериалы.Очистить();
Если Не СкладМатериалыГруппа Тогда
Возврат;
КонецЕсли;
Склады = Новый Соответствие();
Для Каждого ТекСтрока Из Объект.ОбеспечениеМатериаламиИРаботами Цикл
Если ЗначениеЗаполнено(ТекСтрока.Склад)
И Не ТекСтрока.Отменено Тогда
КоличествоСкладов = Склады.Получить(ТекСтрока.Склад);
Если КоличествоСкладов = Неопределено Тогда
КоличествоСкладов = 0;
КонецЕсли;
Склады.Вставить(ТекСтрока.Склад, КоличествоСкладов + 1);
КонецЕсли;
КонецЦикла;
Для Каждого Элемент Из Склады Цикл
НоваяСтрока = ТаблицаСкладовМатериалы.Добавить();
НоваяСтрока.Склад = Элемент.Ключ;
НоваяСтрока.КоличествоСтрок = Элемент.Значение;
КонецЦикла;
КонецПроцедуры
&НаСервереБезКонтекста
Функция ЗаказыПоДаннымПереработчика(ТекущийЗаказ, Контрагент, НомерВходящегоДокумента)
РеквизитыЗаказа = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ТекущийЗаказ, "ДатаПоДаннымПартнера, Дата");
ДатаВходящегоДокумента =
?(ЗначениеЗаполнено(РеквизитыЗаказа.ДатаПоДаннымПартнера),
РеквизитыЗаказа.ДатаПоДаннымПартнера,
?(ЗначениеЗаполнено(РеквизитыЗаказа.Дата), РеквизитыЗаказа.Дата, ТекущаяДатаСеанса()));
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ЗаказПереработчику.Ссылка КАК Ссылка
|ИЗ
| Документ.ЗаказПереработчику2_5 КАК ЗаказПереработчику
|ГДЕ
| НЕ ЗаказПереработчику.Ссылка = &ТекущийЗаказ
| И ЗаказПереработчику.Дата МЕЖДУ
| НАЧАЛОПЕРИОДА(&ДатаВходящегоДокумента, ГОД)
| И КОНЕЦПЕРИОДА(&ДатаВходящегоДокумента, ГОД)
| И ЗаказПереработчику.НомерПоДаннымПартнера = &НомерПоДаннымПартнера
| И ЗаказПереработчику.Контрагент = &Контрагент
| И НЕ ЗаказПереработчику.ПометкаУдаления
|";
Запрос.УстановитьПараметр("ДатаВходящегоДокумента", ДатаВходящегоДокумента);
Запрос.УстановитьПараметр("Контрагент", Контрагент);
Запрос.УстановитьПараметр("ТекущийЗаказ", ТекущийЗаказ);
Запрос.УстановитьПараметр("НомерПоДаннымПартнера", НомерВходящегоДокумента);
СписокЗаказовПоНомеру = Новый СписокЗначений;
СписокЗаказовПоНомеру.ЗагрузитьЗначения(Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка"));
Возврат СписокЗаказовПоНомеру;
КонецФункции
&НаСервере
Процедура РассчитатьПроцентРаспределенияЗатратНаВыходныеИзделия(Группировки = Неопределено)
ПроизводствоСервер.РассчитатьПроцентРаспределенияЗатратНаВыходныеИзделия(Объект, ПараметрыРаспределенияЗатрат, Группировки);
КонецПроцедуры
&НаСервере
Процедура ПересчитатьСуммыДокументаВВалюту()
СтараяВалюта = ВалютаДокумента;
НоваяВалюта = Объект.Валюта;
ДатаДокумента = ?(ЗначениеЗаполнено(Объект.Дата), Объект.Дата,ТекущаяДатаСеанса());
БазоваяВалюта = ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(Объект.Организация);
СтруктурыКурсов = ВзаиморасчетыСервер.КурсыВалютДляПересчета(ЭтотОбъект, СтараяВалюта, НоваяВалюта, БазоваяВалюта, ДатаДокумента);
СтруктураКурсовСтаройВалюты = СтруктурыКурсов.СтруктураКурсовСтаройВалюты;
СтруктураКурсовНовойВалюты = СтруктурыКурсов.СтруктураКурсовНовойВалюты;
Для Каждого ТекСтрока Из Объект.ПобочныеИзделия Цикл
ТекСтрока.Цена = РаботаСКурсамиВалютУТКлиентСервер.ПересчитатьПоКурсу(ТекСтрока.Цена,
СтруктураКурсовСтаройВалюты, СтруктураКурсовНовойВалюты);
КонецЦикла;
Если Не Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоЭтапамПроизводства Тогда
Для Каждого ТекСтрока Из Объект.ОбеспечениеМатериаламиИРаботами Цикл
ТекСтрока.Цена = РаботаСКурсамиВалютУТКлиентСервер.ПересчитатьПоКурсу(ТекСтрока.Цена,
СтруктураКурсовСтаройВалюты, СтруктураКурсовНовойВалюты);
КонецЦикла;
КонецЕсли;
СтруктураДействий = Новый Структура;
ДобавитьДействияПересчетаСумм(ЭтотОбъект, "ПобочныеИзделия", СтруктураДействий, "Сумма");
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.ПобочныеИзделия, СтруктураДействий, КэшированныеЗначения);
Если Не Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоЭтапамПроизводства Тогда
СтруктураДействий = Новый Структура;
ДобавитьДействияПересчетаСумм(ЭтотОбъект, "ОбеспечениеМатериаламиИРаботами", СтруктураДействий, "Сумма");
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.ОбеспечениеМатериаламиИРаботами, СтруктураДействий, КэшированныеЗначения);
КонецЕсли;
ПараметрыПересчета = Ценообразование.ПараметрыПересчетаСуммТаблицыВВалюту(Объект.ЦенаВключаетНДС, СтараяВалюта, НоваяВалюта);
ПараметрыПересчета.СтруктураКурсовСтаройВалюты = СтруктураКурсовСтаройВалюты;
ПараметрыПересчета.СтруктураКурсовНовойВалюты = СтруктураКурсовНовойВалюты;
ПараметрыПересчета.ИмяКоличества = "Количество";
Ценообразование.ПересчитатьСуммыТаблицыВВалюту(Объект.Услуги, ПараметрыПересчета);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Услуги, ЗависимыеРеквизиты("Услуги"));
РассчитатьИтогиДокумента(ЭтотОбъект, "СуммаУслуг, СуммаЗалоговая");
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура РассчитатьИтогиДокумента(Форма, СписокРеквизитов = "")
Объект = Форма.Объект;
СписокРеквизитов = Новый Структура(СписокРеквизитов);
Инициализация = Не ЗначениеЗаполнено(СписокРеквизитов);
Если Инициализация
Или СписокРеквизитов.Свойство("СуммаУслуг") Тогда
Объект.СуммаДокумента =
Объект.Услуги.Итог("СуммаСНДС")
- Объект.Услуги.Итог("СуммаСНДСОтменено");
Форма.СуммаНДСДокумента =
Объект.Услуги.Итог("СуммаНДС")
- Объект.Услуги.Итог("СуммаНДСОтменено");
КонецЕсли;
Если Инициализация
Или СписокРеквизитов.Свойство("СуммаЗалоговая") Тогда
Объект.СуммаЗалоговая =
Объект.ОбеспечениеМатериаламиИРаботами.Итог("Сумма")
- Объект.ОбеспечениеМатериаламиИРаботами.Итог("СуммаОтменено");
КонецЕсли;
Если Инициализация
Или СписокРеквизитов.Свойство("КоличествоИзделий") Тогда
Форма.КоличествоВыходныхИзделий =
Объект.ВыходныеИзделия.Количество()
+ Объект.ПобочныеИзделия.Количество();
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#КонецОбласти
#Область ОбработчикиКомандФормы
#Область Основное
&НаКлиенте
Процедура ЗакрытьЗаказЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
ОписаниеОповещения = Новый ОписаниеОповещения("ЗакрытьЗаказФрагмент", ЭтаФорма);
ПараметрыЗаписи = Новый Структура;
ПараметрыЗаписи.Вставить("ДействиеПослеЗаписи", ОписаниеОповещения);
ПараметрыЗаписи.Вставить("РежимЗаписи", РежимЗаписиДокумента.Проведение);
Если Не РезультатВопроса = КодВозвратаДиалога.Нет Тогда
Записать(ПараметрыЗаписи);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗакрытьЗаказФрагмент(Результат = Неопределено, ДополнительныеПараметры = Неопределено) Экспорт
ОценкаПроизводительностиКлиент.ЗамерВремени(
"Документ.ЗаказПереработчику2_5.ФормаДокумента.Команда.ЗакрытьЗаказ");
СписокЗаказовКЗакрытию = Новый СписокЗначений;
СписокЗаказовКЗакрытию.Добавить(Объект.Ссылка);
СтруктураЗакрытия = Новый Структура;
СтруктураЗакрытия.Вставить("Заказы", СписокЗаказовКЗакрытию);
СтруктураЗакрытия.Вставить("ДокументИнициатор", Объект.Ссылка);
СтруктураЗакрытия.Вставить("ОтменитьНеотработанныеСтроки", Истина);
СтруктураЗакрытия.Вставить("ЗакрыватьЗаказы", Истина);
ОткрытьФорму(
"Обработка.ПомощникЗакрытияЗаказов.Форма.ФормаЗакрытия",
СтруктураЗакрытия,
ЭтаФорма,,,,
Неопределено,
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандТаблиц
&НаКлиенте
Процедура ТаблицаЗаполнитьДатуЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Не ЗначениеЗаполнено(Результат) Тогда
Возврат;
КонецЕсли;
ИмяТЧ = ДополнительныеПараметры.ИмяТЧ;
ВыделенныеСтроки = ДополнительныеПараметры.ВыделенныеСтроки;
ЗаполнитьДатуВТЧ(ИмяТЧ, Результат,, ВыделенныеСтроки);
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаРазбитьСтрокуЗавершение(Результат, ДополнительныеПараметры) Экспорт
ИмяТЧ = ДополнительныеПараметры.ИмяТЧ;
ТекущаяСтрока = Элементы[ИмяТЧ].ТекущиеДанные;
Если Результат <> Неопределено Тогда
Результат.КодСтроки = 0;
СтруктураДействий = Новый Структура;
ДобавитьДействияПриИзмененииКоличества(ЭтаФорма, ИмяТЧ, СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(Результат, СтруктураДействий, КэшированныеЗначения);
Если ИмяТЧ = "ВыходныеИзделия" Тогда
ПроизводствоКлиентСервер.ПересчитатьДолюСтоимостиПриРазбиенииСтроки(
Результат,
ТекущаяСтрока,
Объект.СпособРаспределенияЗатратНаВыходныеИзделия);
Группировки = Новый Массив;
Группировки.Добавить(ТекущаяСтрока.НомерГруппыЗатрат);
РассчитатьПроцентРаспределенияЗатратНаВыходныеИзделия(Группировки);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаПоискПоШтрихкодуЗавершение(ДанныхШтрихкода, ДополнительныеПараметры) Экспорт
ОбработатьШтрихкоды(ДанныхШтрихкода, ДополнительныеПараметры.ИмяТЧ);
КонецПроцедуры
&НаКлиенте
Процедура ПодобратьТовар(ИмяТЧ)
Если Не ЗначениеЗаполнено(Объект.Валюта) Тогда
ОчиститьСообщения();
ОбщегоНазначенияКлиент.СообщитьПользователю(
НСтр("ru = 'Поле ""Валюта"" не заполнено'"),
Объект.Ссылка,
"Объект.Валюта");
Возврат;
КонецЕсли;
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("СкрыватьРучныеСкидки", Истина);
ПараметрыФормы.Вставить("ЦенаВключаетНДС", Объект.ЦенаВключаетНДС);
ПараметрыФормы.Вставить("Валюта", Объект.Валюта);
ПараметрыФормы.Вставить("Дата", Объект.Дата);
ПараметрыФормы.Вставить("Документ", Объект.Ссылка);
Если ИмяТЧ = "Услуги" Тогда
ПараметрыФормы.Вставить("ОтборПоТипуНоменклатуры", НоменклатураКлиентСервер.ОтборПоРаботе(Ложь));
ПараметрыФормы.Вставить("РежимПодбораИспользоватьСкладыВТабличнойЧасти", Ложь);
ПараметрыФормы.Вставить("Подразделение", Объект.Подразделение);
Иначе
ПараметрыФормы.Вставить("ОтборПоТипуНоменклатуры", НоменклатураКлиентСервер.ОтборПоТоваруМногооборотнойТареРаботе(Ложь));
Если ИмяТЧ = "ОбеспечениеМатериаламиИРаботами" Тогда
ПараметрыФормы.Вставить("РежимПодбораИспользоватьСкладыВТабличнойЧасти", СкладМатериалыВТЧ);
Иначе
ПараметрыФормы.Вставить("РежимПодбораИспользоватьСкладыВТабличнойЧасти", СкладИзделияВТЧ);
КонецЕсли;
Если Не ПараметрыФормы.РежимПодбораИспользоватьСкладыВТабличнойЧасти Тогда
Если ИмяТЧ = "ОбеспечениеМатериаламиИРаботами" Тогда
ПараметрыФормы.Вставить("Склад", Объект.СкладМатериалов);
Иначе
ПараметрыФормы.Вставить("Склад", Объект.СкладПродукции);
КонецЕсли;
КонецЕсли;
ПараметрыФормы.Вставить("РежимПодбораБезСуммовыхПараметров", Истина);
КонецЕсли;
Если ИмяТЧ = "ОбеспечениеМатериаламиИРаботами" Тогда
ПараметрыФормы.Вставить("ИспользоватьДатыОтгрузки", Истина);
ПараметрыФормы.Вставить("ПараметрыУказанияСерий", ПараметрыУказанияСерий.ОбеспечениеМатериаламиИРаботами);
ПараметрыФормы.Вставить("Назначение", Объект.Назначение);
ПараметрыФормы.Вставить("Подразделение", Объект.Подразделение);
ПараметрыФормы.Вставить("ПодборВариантовОбеспечения", Истина);
ПараметрыФормы.Вставить(
"ДоступныеОстаткиПараметрыДокумента",
ОбеспечениеВДокументахКлиент.ДоступныеОстаткиПараметрыДокумента(ЭтаФорма));
ПараметрыФормы.Вставить("ОстаткиПоВсемСкладам", СкладМатериалыВТЧ);
ПараметрыФормы.Вставить("ИспользоватьРасширенныеВозможностиЗаказаКлиента", Истина);
ФормаПодбораТоваров = "Обработка.ПодборТоваровВДокументПродажи.Форма";
ВладелецФормы = ЭтаФорма;
Иначе
ПараметрыФормы.Вставить("Партнер", Объект.Партнер);
ФормаПодбораТоваров = "Обработка.ПодборТоваровВДокументЗакупки.Форма";
Если ИмяТЧ = "Услуги" Тогда
ВладелецФормы = ЭтаФорма;
Иначе
ВладелецФормы = Элементы[ИмяТЧ];
КонецЕсли;
КонецЕсли;
ОткрытьФорму(ФормаПодбораТоваров, ПараметрыФормы, ВладелецФормы, УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьФормуВыбораПричиныОтмены(ИмяТЧ, Оповещение)
ФормаПричиныОтмены = "Справочник.ПричиныОтменыЗаказовПоставщикам.ФормаВыбора";
ОткрытьФорму(ФормаПричиныОтмены,,,,,, Оповещение, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаОтменитьВыделенныеСтрокиЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
ОтменитьВыделенныеСтроки(ДополнительныеПараметры.ИмяТЧ, Результат);
КонецПроцедуры
&НаКлиенте
Процедура ОтменитьВыделенныеСтроки(ИмяТЧ, ПричинаОтмены)
ОценкаПроизводительностиКлиент.ЗамерВремени(
"Документ.ЗаказПереработчику2_5.Форма.ФормаДокумента.Команда." + ИмяТЧ + "ОтменитьВыделенныеСтроки");
СтруктураДействий = Новый Структура;
Если ИмяТЧ = "ОбеспечениеМатериаламиИРаботами"
Или ИмяТЧ = "Услуги" Тогда
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты(ИмяТЧ));
КонецЕсли;
ИмяПоляПричинаОтмены = "ПричинаОтмены";
СтруктураОтмены = Новый Структура(ИмяПоляПричинаОтмены, ПричинаОтмены);
Для Каждого Идентификатор Из Элементы[ИмяТЧ].ВыделенныеСтроки Цикл
ТекущиеДанные = Объект[ИмяТЧ].НайтиПоИдентификатору(Идентификатор);
Если ТекущиеДанные <> Неопределено Тогда
ТекущиеДанные.Отменено = Истина;
ЗаполнитьЗначенияСвойств(ТекущиеДанные, СтруктураОтмены);
ДобавитьДействияОбеспечения(ЭтаФорма, ИмяТЧ, СтруктураДействий, "СкладОбязателен, ДатаОтгрузкиОбязательна");
Если ЗначениеЗаполнено(СтруктураДействий) Тогда
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущиеДанные, СтруктураДействий, КэшированныеЗначения);
КонецЕсли;
КонецЕсли;
КонецЦикла;
ОтменитьВыделенныеСтрокиНаСервере(ИмяТЧ);
ПоказатьОповещениеПользователя(
НСтр("ru = 'Выделенные строки отменены'"),,
НСтр("ru='Выделенные строки отменены.'"),
БиблиотекаКартинок.Информация32);
КонецПроцедуры
&НаСервере
Процедура ОтменитьВыделенныеСтрокиНаСервере(ИмяТЧ)
ВыделенныеСтроки = Элементы[ИмяТЧ].ВыделенныеСтроки;
Если ИмяТЧ = "ВыходныеИзделия"
Тогда
Для Каждого ТекИдентификатор Из ВыделенныеСтроки Цикл
ТекущиеДанные = Объект[ИмяТЧ].НайтиПоИдентификатору(ТекИдентификатор);
Если Не ТекущиеДанные.НомерГруппыЗатрат = 0 Тогда
ЗаполнитьЗависимыеСлужебныеРеквизитыГруппыЗатрат(
ДанныеГруппыЗатратПоНомеруГруппыЗатрат(ТекущиеДанные.НомерГруппыЗатрат));
КонецЕсли;
КонецЦикла;
ОтменитьСтрокиГруппыЗатрат(ИмяТЧ, ВыделенныеСтроки);
КонецЕсли;
ПослеИзмененияСтрокТЧПрограммноНаСервере(ИмяТЧ, ВыделенныеСтроки);
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаОтменитьНеобработанныеСтрокиЗавершение(Результат, ДополнительныеПараметры) Экспорт
ОценкаПроизводительностиКлиент.ЗамерВремени(
"Документ.ЗаказПереработчику2_5.Форма.ФормаДокумента.Команда." + ДополнительныеПараметры.ИмяТЧ + "ОтменитьНеобработанныеСтроки");
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
РезультатОтмены = ОтменитьНепоставленныеСтроки(ДополнительныеПараметры.ИмяТЧ, Результат);
ПоказатьОповещениеПользователя(НСтр("ru = 'Отмена неотработанных строк'"), , РезультатОтмены.Оповещение);
КонецПроцедуры
&НаСервере
Функция ОтменитьНепоставленныеСтроки(ИмяТЧ, ПричинаОтмены)
СтруктураКорректировкиСтрокЗаказа = ЗаказыСервер.СтруктураКорректировкиСтрокЗаказа();
СтруктураКорректировкиСтрокЗаказа.ОтменитьНеотработанныеСтроки = Истина;
СтруктураКорректировкиСтрокЗаказа.ОтменитьНеотработанныеСтроки = Истина;
СтруктураКорректировкиСтрокЗаказа.ИмяТабличнойЧасти = ИмяТЧ;
СтруктураКорректировкиСтрокЗаказа.ПричинаОтмены = ПричинаОтмены;
Результат = СкорректироватьСтрокиЗаказа(СтруктураКорректировкиСтрокЗаказа);
Возврат Результат;
КонецФункции
&НаКлиенте
Процедура ЗаполнитьСкладПодразделениеЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Не ЗначениеЗаполнено(Результат) Тогда
Возврат;
КонецЕсли;
ПараметрыТЧ = ДополнительныеПараметры.ПараметрыТЧ;
ЗаполнитьСкладПодразделениеНаСервере(ПараметрыТЧ, Элементы[ПараметрыТЧ.ИмяТЧФорма].ВыделенныеСтроки, Результат);
ПоказатьОповещениеПользователя(
НСтр("ru = 'Склад/подразделение заполнено'"),,
НСтр("ru='Для выделенных строк выполнено заполнение склада/подразделения'"),
БиблиотекаКартинок.Информация32);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСкладПодразделениеНаСервере(ПараметрыТЧ, Знач ВыделенныеСтроки, ВыбранноеЗначение)
ИмяТЧ = ПараметрыТЧ.ИмяТЧОбъект;
Если ИмяТЧ = "ОбеспечениеМатериаламиИРаботами" Тогда
ИмяПоляСклад = "Склад";
Иначе
ИмяПоляСклад = "Получатель";
КонецЕсли;
СтруктураДействий = Новый Структура;
ДобавитьДействияПриИзмененииСклада(ЭтотОбъект, ИмяТЧ, СтруктураДействий);
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
ОбрабатываемыеСтроки = Новый Массив();
Для Каждого ИдентификаторСтроки Из ВыделенныеСтроки Цикл
ТекущиеДанные = Объект[ИмяТЧ].НайтиПоИдентификатору(ИдентификаторСтроки);
ТекущиеДанные[ИмяПоляСклад] = ВыбранноеЗначение;
ОбрабатываемыеСтроки.Добавить(ТекущиеДанные);
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект[ИмяТЧ],
КэшированныеЗначения);
ПослеИзмененияСтрокТЧПрограммноНаСервере(ИмяТЧ, ВыделенныеСтроки);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьСтатьюКалькуляцииЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
ИмяТЧ = ДополнительныеПараметры.ИмяТЧ;
Для Каждого ИдентификаторСтроки Из Элементы[ИмяТЧ].ВыделенныеСтроки Цикл
ДанныеСтроки = Объект[ИмяТЧ].НайтиПоИдентификатору(ИдентификаторСтроки);
ДанныеСтроки.СтатьяКалькуляции = Результат;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаЗаполнитьПричинуОтменыЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
ИмяТЧ = ДополнительныеПараметры.ИмяТЧ;
ИмяПоляПричинаОтмены = "ПричинаОтмены";
СтруктураОтмены = Новый Структура(ИмяПоляПричинаОтмены, Результат);
Для Каждого Идентификатор Из Элементы[ИмяТЧ].ВыделенныеСтроки Цикл
ТекущиеДанные = Объект[ИмяТЧ].НайтиПоИдентификатору(Идентификатор);
Если ТекущиеДанные <> Неопределено
И ТекущиеДанные.Отменено Тогда
ЗаполнитьЗначенияСвойств(ТекущиеДанные, СтруктураОтмены);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
#Область Обеспечение
&НаКлиенте
Процедура ОбеспечениеУстановитьДействиеСВопросом(КодДействия)
Результат = ОбеспечениеУстановитьДействие(КодДействия);
ВопросЗадан = ОбеспечениеВДокументахКлиент.ПоказатьВопросЗаполнятьОбеспечениеЦелымиУпаковками(
ЭтаФорма,
Объект.ОбеспечениеМатериаламиИРаботами,
Результат,
"ОбеспечениеПослеВопросаЗаполнятьОбеспечениеЦелымиУпаковками");
Если Не ВопросЗадан Тогда
ОбеспечениеВДокументахКлиент.ПоказатьВопросСнятьФлагОтгружатьОднойДатой(
ЭтаФорма,
Объект.ОбеспечениеМатериаламиИРаботами,
Результат,
"ОбеспечениеПослеВопросаСнятьФлагОтгружатьОднойДатой");
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбеспечениеПослеВопросаЗаполнятьОбеспечениеЦелымиУпаковками(Ответ, Результат) Экспорт
ВопросЗадан = ОбеспечениеВДокументахКлиент.ПоказатьВопросСнятьФлагОтгружатьОднойДатойПослеВопроса(
ЭтаФорма,
Объект.ОбеспечениеМатериаламиИРаботами,
Результат,
Ответ,
"ОбеспечениеПослеВопросаСнятьФлагОтгружатьОднойДатой");
Если Не ВопросЗадан Тогда
ОбеспечениеУстановитьДействиеПослеВопроса(Ответ, Результат);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбеспечениеПослеВопросаСнятьФлагОтгружатьОднойДатой(Ответ, Результат) Экспорт
ОбеспечениеУстановитьДействиеПослеВопроса(Ответ, Результат);
КонецПроцедуры
&НаСервере
Процедура ОбеспечениеУстановитьДействиеПослеВопроса(Ответ, Результат)
СтруктураРезультата = ОбеспечениеВДокументахСервер.УстановитьДействиеПослеВопроса(Ответ, Результат, ЭтаФорма);
ПослеЗаполненияОбеспечения(
СтруктураРезультата.ТаблицаИзменений,
ОбеспечениеВДокументахКлиентСервер.РежимВыборДействия(),
СтруктураРезультата);
КонецПроцедуры
&НаКлиенте
Процедура ГиперссылкаСостояниеОбеспеченияНажатиеОбщий()
ПараметрыФормы = ОбеспечениеВДокументахКлиент.ГиперссылкаСостояниеОбеспеченияНажатие(ЭтаФорма);
Если Объект.Статус = ПредопределенноеЗначение("Перечисление.СтатусыЗаказовПереработчикам.НеСогласован") Тогда
ПараметрыФормы.ДопустимыеВариантыОбеспечения = ОбеспечениеВДокументахКлиент.ВсеДопустимыеВариантыОбеспечения();
ПараметрыФормы.ДопустимыеВариантыОбеспечения.Удалить(
ПредопределенноеЗначение("Перечисление.ВариантыОбеспечения.СоСклада"));
КонецЕсли;
Если ПараметрыФормы.КонтекстИспользования = "ТАБЛИЦА" Тогда
ПараметрыФормы.АдресТаблицыДвижений = АдресТаблицыДвиженийВХранилище();
КонецЕсли;
ОткрытьФорму(
"Обработка.СостояниеОбеспеченияЗаказов.Форма",
ПараметрыФормы,
ЭтаФорма,
УникальныйИдентификатор,,,,
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаСервере
Функция ЗаполнитьОбеспечениеИзФормыСостоянияОбеспечения(КодДействия, АдресАналитик, ПараметрыЗаполнения)
Модифицированность = Истина;
Изменения = ОбеспечениеВДокументахСервер.ЗаполнитьОбеспечениеИзФормыСостоянияОбеспечения(
КодДействия,
АдресАналитик,
ЭтаФорма);
Режим = ОбеспечениеВДокументахКлиентСервер.РежимСостоянияОбеспечения();
ПослеЗаполненияОбеспечения(Изменения, Режим, ПараметрыЗаполнения);
АдресТаблицыДвижений = АдресТаблицыДвиженийВХранилище();
Возврат АдресТаблицыДвижений;
КонецФункции
&НаКлиенте
Процедура ОбработатьВыборСкладаИСерии(ВыбранноеЗначение, ПараметрыФормы) Экспорт
Если Не ОбеспечениеВДокументахКлиент.ЕстьПодобранныеТовары(ВыбранноеЗначение) Тогда
Возврат;
КонецЕсли;
ОбеспечениеВДокументахКлиент.ПоказатьВопросСнятьФлагОтгружатьОднойДатойПослеВыбораОбеспечения(
ЭтаФорма,
ВыбранноеЗначение,
ПараметрыФормы,
"ОбработатьВыборСкладаИСерииПослеВопроса");
КонецПроцедуры
&НаКлиенте
Процедура ОбработатьВыборСкладаИСерииПослеВопроса(Ответ, Параметры) Экспорт
ПараметрыЗаполнения = ОбеспечениеВДокументахКлиент.ПараметрыОбработкиДатОтгрузкиПослеЗаполненияОбеспечения(Ответ);
Оповещение = ОбработатьВыборСкладаИСерииНаСервере(
Параметры.ВыбранноеЗначение,
Параметры.ПараметрыФормы,
ПараметрыЗаполнения);
ТекстОповещения = ОбеспечениеВДокументахКлиент.ТекстОповещенияОбработкиВыборСкладаИСерии(Параметры.ПараметрыФормы.Режим);
ПоказатьОповещениеПользователя(ТекстОповещения, , Оповещение);
КонецПроцедуры
&НаСервере
Функция ОбработатьВыборСкладаИСерииНаСервере(ВыбранноеЗначение, ПараметрыФормы, ПараметрыЗаполнения)
Модифицированность = Истина;
Изменения = ОбеспечениеВДокументахСервер.ПриВыбореСклада(
ВыбранноеЗначение,
ЭтаФорма,
Элементы.ОбеспечениеМатериаламиИРаботами.ТекущаяСтрока,
ПараметрыФормы.ЗаполняемыеПоля);
ПослеЗаполненияОбеспечения(Изменения, ПараметрыФормы.Режим, ПараметрыЗаполнения);
ТекстОбработаноСтрок = ОбеспечениеВДокументахСервер.ТекстОбработаноСтрок(Изменения.Количество());
Возврат ТекстОбработаноСтрок;
КонецФункции
&НаСервере
Функция ОбеспечениеУстановитьДействие(КодДействия)
Результат = ОбеспечениеВДокументахСервер.ОбеспечениеУстановитьДействиеСтруктураРезультата();
Если КодДействия = "ФЛАГ_ОБОСОБЛЕННО"
Или КодДействия = "ФЛАГ_НЕОБОСОБЛЕННО" Тогда
Идентификаторы = Новый Массив;
Идентификаторы = Элементы.ОбеспечениеМатериаламиИРаботами.ВыделенныеСтроки;
Изменения = ОбеспечениеВДокументахСервер.УстановитьДействиеОбособленно(
КодДействия,
ЭтаФорма,
Идентификаторы);
Если Изменения.ТаблицаИзменений <> Неопределено Тогда
Для Каждого Изменение Из Изменения.ТаблицаИзменений Цикл
ТекущиеДанные = Изменение.Строка;
ОписаниеГруппыЗатрат = ДанныеГруппыЗатратПоНомеруГруппыЗатрат(ТекущиеДанные.НомерГруппыЗатрат);
ТекущиеДанные.Назначение =
?(ТекущиеДанные.Обособленно,
ОписаниеГруппыЗатрат.НазначениеОбеспечения,
Неопределено);
КонецЦикла;
ОбновитьКолонкуДоступноНаСервере();
КонецЕсли;
Иначе
Изменения = ОбеспечениеВДокументахСервер.УстановитьДействие(
КодДействия,
ЭтаФорма,
Элементы.ОбеспечениеМатериаламиИРаботами.ВыделенныеСтроки);
ЗаполнитьЗначенияСвойств(Результат, Изменения);
Если Изменения.ТаблицаИзменений <> Неопределено Тогда
ПослеЗаполненияОбеспечения(
Изменения.ТаблицаИзменений,
ОбеспечениеВДокументахКлиентСервер.РежимВыборДействия(),
Результат);
КонецЕсли;
КонецЕсли;
Возврат Результат;
КонецФункции
#КонецОбласти
&НаКлиенте
Процедура УслугиЗаполнитьЦеныПоВидуЦеныПоставщикаЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если ЗначениеЗаполнено(Результат) Тогда
ЦеныРассчитаны = ЗаполнитьЦеныПоВидуЦеныПоставщикаНаСервере(Результат, Элементы.Услуги.ВыделенныеСтроки);
ЦеныПартнеровЗаполнениеКлиент.ОповеститьОбОкончанииЗаполненияЦенПоВидуЦеныПоставщика(ЦеныРассчитаны, Результат);
КонецЕсли;
РассчитатьИтогиДокумента(ЭтаФорма, "СуммаУслуг");
КонецПроцедуры
&НаКлиенте
Процедура УслугиВыбратьИЗаполнитьУслугуЗавершение(РезультатЗакрытия, ДополнительныеПараметры) Экспорт
Если РезультатЗакрытия = Неопределено Тогда
Возврат;
КонецЕсли;
СтруктураДействий = Новый Структура;
ДобавитьДействияЗаполнитьЦену(ЭтотОбъект, "Услуги", СтруктураДействий);
Для Каждого ИдентификаторСтроки Из Элементы.Услуги.ВыделенныеСтроки Цикл
ТекущиеДанные = Объект.Услуги.НайтиПоИдентификатору(ИдентификаторСтроки);
ТекущиеДанные.Номенклатура = РезультатЗакрытия;
ДобавитьДействияПриИзмененииНоменклатуры(ЭтотОбъект, "Услуги", СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущиеДанные, СтруктураДействий, КэшированныеЗначения);
КонецЦикла;
РассчитатьИтогиДокумента(ЭтаФорма, "СуммаУслуг");
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаЗаполнитьТЧПоСпецификацииЗавершение(Результат, ИмяТЧ) Экспорт
ОценкаПроизводительностиКлиент.ЗамерВремени(
"Документ.ЗаказПереработчику2_5.Форма.ФормаДокумента.Команда." + ИмяТЧ + "ЗаполнитьТЧПоСпецификации");
Если Результат = КодВозвратаДиалога.Да Тогда
ТаблицаЗаполнитьТЧПоСпецификацииНаСервере(ИмяТЧ);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияПерезаполнитьПоСпецификациямЗавершение(Результат, СписокГрупп) Экспорт
Если Результат = КодВозвратаДиалога.Да Тогда
ПерезаполнитьПоСпецификациямНаСервере(СписокГрупп);
КонецЕсли;
КонецПроцедуры
#Область СтандартныеКоманды
#Область РаботаСБуферомОбмена
&НаСервере
Процедура СкопироватьСтрокиНаСервере(ИмяТЧ)
РаботаСТабличнымиЧастями.СкопироватьСтрокиВБуферОбмена(Объект[ИмяТЧ], Элементы[ИмяТЧ].ВыделенныеСтроки);
КонецПроцедуры
&НаСервере
Процедура ПолучитьСтрокиИзБуфераОбмена(ИмяТЧ)
ПараметрыОтбора = Новый Соответствие;
Если ИмяТЧ = "Услуги" Тогда
ПараметрыОтбора.Вставить("Номенклатура.ТипНоменклатуры", НоменклатураКлиентСервер.ОтборПоРаботе(Ложь));
Иначе
ПараметрыОтбора.Вставить("Номенклатура.ТипНоменклатуры", НоменклатураКлиентСервер.ОтборПоТоваруМногооборотнойТареРаботе(Ложь));
КонецЕсли;
Колонки = "Номенклатура,Характеристика,Упаковка,КоличествоУпаковок,Количество,ДатаПоступления,ДатаОтгрузки,
|ВидЦеныПоставщика,Цена,СтавкаНДС,Спецификация,СтатьяКалькуляции,Получатель,Склад";
ТаблицаТоваров = РаботаСТабличнымиЧастями.СтрокиИзБуфераОбмена(ПараметрыОтбора, Колонки);
Если Не ЗначениеЗаполнено(ТаблицаТоваров) Тогда
Возврат;
КонецЕсли;
ТабличнаяЧасть = Объект[ИмяТЧ];
ВыделенныеСтроки = Новый Массив;
ГруппировкиКЗаполнению = Новый Массив;
ОбрабатываемыеСтроки = Новый Массив;
ДанныеОбИзделиях = Новый Массив;
Для Каждого СтрокаТовара Из ТаблицаТоваров Цикл
ТекущиеДанные = ТабличнаяЧасть.Добавить();
ЗаполнитьЗначенияСвойств(ТекущиеДанные, СтрокаТовара);
ОбрабатываемыеСтроки.Добавить(ТекущиеДанные);
ЗаполнитьДатуВСтрокеТЧОбщейДатой(ЭтотОбъект, ИмяТЧ, ТекущиеДанные);
Если ИмяТЧ = "ВыходныеИзделия"
И Не Объект.ГруппировкаЗатрат = ПредопределенноеЗначение("Перечисление.ГруппировкиЗатратВЗаказеПереработчику.ПоЭтапамПроизводства")
Или ИмяТЧ = "ОбеспечениеМатериаламиИРаботами"
И ТекущиеДанные.Производится Тогда
ДанныеОбИзделиях.Добавить(
УправлениеДаннымиОбИзделияхКлиентСервер.СобратьДанныеОбИзделииДляВыбораСпецификации(
Объект, ТекущиеДанные, ПараметрыВыбораСпецификаций[ИмяТЧ], ЭтотОбъект));
КонецЕсли;
КонецЦикла;
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
СтруктураДействий = Новый Структура;
ДобавитьДействияПриИзмененииНоменклатуры(ЭтотОбъект, ИмяТЧ, СтруктураДействий);
ДобавитьДействияПроверитьЗаполнитьСклад(ЭтотОбъект, ИмяТЧ, СтруктураДействий);
ДобавитьДействияЗаполнитьВидЦен(ЭтотОбъект, ИмяТЧ, СтруктураДействий);
ДобавитьДействияЗаполнитьЦену(ЭтотОбъект, ИмяТЧ, СтруктураДействий);
ДобавитьДействияИнициализироватьСтатьюИАналитику(ЭтотОбъект, ИмяТЧ, СтруктураДействий);
ДобавитьДействияОбеспечения(
ЭтотОбъект,
ИмяТЧ,
СтруктураДействий,
"ВариантОбеспечения, СкладОбязателен, ДатаОтгрузкиОбязательна");
Если ИмяТЧ = "ОбеспечениеМатериаламиИРаботами" Тогда
СтруктураДействий.Вставить(
"ПроверитьСериюРассчитатьСтатус",
Новый Структура("Склад, ПараметрыУказанияСерий, ТаблицаТоваров",
Объект.СкладМатериалов, ПараметрыУказанияСерий.ОбеспечениеМатериаламиИРаботами, ОбрабатываемыеСтроки));
КонецЕсли;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
ТабличнаяЧасть,
КэшированныеЗначения);
Если ИмяТЧ = "ВыходныеИзделия"
И Не Объект.ГруппировкаЗатрат = ПредопределенноеЗначение("Перечисление.ГруппировкиЗатратВЗаказеПереработчику.ПоЭтапамПроизводства")
Или ИмяТЧ = "ОбеспечениеМатериаламиИРаботами"
И ТекущиеДанные.Производится Тогда
УправлениеДаннымиОбИзделиях.ЗаполнитьСпецификациюВСтроках(
ОбрабатываемыеСтроки, ДанныеОбИзделиях, ПараметрыВыбораСпецификаций[ИмяТЧ]);
КонецЕсли;
Для Каждого ТекущиеДанные Из ОбрабатываемыеСтроки Цикл
Если ИмяТЧ = "ВыходныеИзделия" Тогда
ДобавитьИзменитьГруппуЗатрат(ТекущиеДанные, Истина);
ВыделенныеСтроки.Добавить(ТекущиеДанные.ПолучитьИдентификатор());
Иначе
УстановитьНомерГруппыЗатратПоУмолчанию(ИмяТЧ, ТекущиеДанные.ПолучитьИдентификатор());
КонецЕсли;
ГруппировкиКЗаполнению.Добавить(ТекущиеДанные.НомерГруппыЗатрат);
КонецЦикла;
Для Каждого ТекГруппа Из ГруппировкиКЗаполнению Цикл
ТаблицаЗаполнитьЗависимыеСлужебныеРеквизитыГруппыЗатрат(ИмяТЧ, ТекГруппа);
КонецЦикла;
ПослеИзмененияСтрокТЧПрограммноНаСервере(ИмяТЧ, ВыделенныеСтроки);
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#КонецОбласти
#Область ОбработчикиКомандОбъекта
#КонецОбласти
#КонецОбласти
#Область Заполнение
#Область СлужебныеРеквизиты
&НаСервере
Процедура ЗаполнитьСлужебныеРеквизиты()
ГруппировкаЗатратДоИзменения = Объект.ГруппировкаЗатрат;
ВалютаДокумента = Объект.Валюта;
ИспользоватьНесколькоСкладов = ПолучитьФункциональнуюОпцию("ИспользоватьНесколькоСкладов");
ИспользоватьСтатусыЗаказовПереработчикам =
ПолучитьФункциональнуюОпцию("ИспользоватьСтатусыЗаказовПереработчикам2_5");
ИспользоватьПричиныОтменыЗаказовПоставщикам =
ПолучитьФункциональнуюОпцию("ИспользоватьПричиныОтменыЗаказовПоставщикам");
ИспользоватьПроизводство =
ПолучитьФункциональнуюОпцию("ИспользоватьПроизводство");
ИспользоватьНаправленияДеятельности =
ПолучитьФункциональнуюОпцию("ИспользоватьУчетЗатратПоНаправлениямДеятельности");
СкладПоУмолчанию = ОбщегоНазначенияУТ.ПолучитьПроверитьСкладПоУмолчанию();
ПараметрыРаспределенияЗатрат =
Новый ФиксированнаяСтруктура(Документы.ЗаказПереработчику2_5.ПараметрыРаспределенияЗатрат(Объект));
ПараметрыУказанияСерий =
Новый ФиксированнаяСтруктура(НоменклатураСервер.ПараметрыУказанияСерий(Объект, Документы.ЗаказПереработчику2_5));
ПараметрыВыбораСпецификаций = УправлениеДаннымиОбИзделиях.ПараметрыВыбораСпецификаций(Объект, Документы.ЗаказПереработчику2_5);
РаботаСТабличнымиЧастями.ИнициализироватьКэшСтрок(Элементы.ВыходныеИзделия);
РаботаСТабличнымиЧастями.ИнициализироватьКэшСтрок(Элементы.ПобочныеИзделия);
РаботаСТабличнымиЧастями.ИнициализироватьКэшСтрок(Элементы.ОбеспечениеМатериаламиИРаботами);
РаботаСТабличнымиЧастями.ИнициализироватьКэшСтрок(Элементы.Услуги);
ЕстьПравоПросмотраСостоянияОбеспечения = ОбеспечениеВДокументахСервер.ЕстьПравоПросмотраГиперссылкиСостоянияОбеспечения();
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ЗаполнитьЗависимыеСлужебныеРеквизиты(Форма, СписокРеквизитов = "")
Объект = Форма.Объект;
СписокРеквизитов = Новый Структура(СписокРеквизитов);
Инициализация = Не ЗначениеЗаполнено(СписокРеквизитов);
Если Инициализация
Или СписокРеквизитов.Свойство("ПереработкаПоЗаказу") Тогда
Форма.ИспользоватьСтатусы =
Форма.ИспользоватьСтатусыЗаказовПереработчикам
Или Объект.ГруппировкаЗатрат =
ПредопределенноеЗначение("Перечисление.ГруппировкиЗатратВЗаказеПереработчику.ПоЭтапамПроизводства");
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ЗаполнитьЗависимыеСлужебныеРеквизитыОбеспечения(Форма)
ОбеспечениеВДокументахКлиентСервер.ЗаполнитьСлужебныеРеквизиты(
Форма.Объект.ОбеспечениеМатериаламиИРаботами,
Форма.ДатаОтгрузкиОбязательна,
Форма.СкладМатериалыОбязателен);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьЗависимыеСлужебныеРеквизитыНаСервере(СписокРеквизитов = "")
СписокРеквизитов = Новый Структура(СписокРеквизитов);
Инициализация = Не ЗначениеЗаполнено(СписокРеквизитов);
Если Инициализация
Или СписокРеквизитов.Свойство("Партнер")
Или СписокРеквизитов.Свойство("ЦенаВключаетНДС") Тогда
ЗаполнитьВидЦеныПоставщикаПоУмолчанию();
КонецЕсли;
Если Инициализация
Или СписокРеквизитов.Свойство("СкладПродукции")
Или СписокРеквизитов.Свойство("ГруппировкаЗатрат")
Или СписокРеквизитов.Свойство("ОставитьИзделияУПереработчика") Тогда
СкладИзделияГруппа = Справочники.Склады.ЭтоГруппа(Объект.СкладПродукции);
СкладИзделияВТЧ =
Не Объект.ОставитьИзделияУПереработчика
И (СкладИзделияГруппа
Или Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоЭтапамПроизводства);
ДанныеВыбораСкладИзделия.ЗагрузитьЗначения(ДанныеВыбораСкладов(Объект.СкладПродукции));
КонецЕсли;
Если Инициализация
Или СписокРеквизитов.Свойство("СкладМатериалов")
Или СписокРеквизитов.Свойство("ГруппировкаЗатрат") Тогда
СкладМатериалыГруппа = Справочники.Склады.ЭтоГруппа(Объект.СкладМатериалов);
СкладМатериалыВТЧ =
СкладМатериалыГруппа
Или Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоЭтапамПроизводства;
КонецЕсли;
Если Инициализация
Или СписокРеквизитов.Свойство("Распоряжения") Тогда
ДинамическаяСтруктура =
?(Объект.Распоряжения.Количество() > 0,
ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Распоряжения[0].Распоряжение, "ДинамическаяСтруктура"),
Неопределено);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСлужебныеРеквизитыТабличныхЧастей(СписокТЧ = "")
СтруктураТЧ = Новый Структура(СписокТЧ);
Инициализация = Не ЗначениеЗаполнено(СтруктураТЧ);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются", Новый Структура("Номенклатура", "ХарактеристикиИспользуются"));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
Если Инициализация
Или СтруктураТЧ.Свойство("ВыходныеИзделия") Тогда
СтруктураДействийТЧ = ОбщегоНазначения.СкопироватьРекурсивно(СтруктураДействий);
ПараметрыДействия = Новый Структура("ИмяПоляСклад", "Получатель");
СтруктураДействийТЧ.Вставить("ЗаполнитьПризнакЦеховаяКладовая", ПараметрыДействия);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(
Объект.ВыходныеИзделия,
СтруктураДействийТЧ,
Неопределено);
Если Не Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоЭтапамПроизводства Тогда
ПроизводствоСервер.РассчитатьПроцентРаспределенияЗатратНаВыходныеИзделия(
Объект, ПараметрыРаспределенияЗатрат);
КонецЕсли;
КонецЕсли;
Если Инициализация
Или СтруктураТЧ.Свойство("ПобочныеИзделия") Тогда
СтруктураДействийТЧ = ОбщегоНазначения.СкопироватьРекурсивно(СтруктураДействий);
ПараметрыДействия = Новый Структура("ИмяПоляСклад", "Получатель");
СтруктураДействийТЧ.Вставить("ЗаполнитьПризнакЦеховаяКладовая", ПараметрыДействия);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(
Объект.ПобочныеИзделия,
СтруктураДействийТЧ,
Неопределено);
КонецЕсли;
Если Инициализация
Или СтруктураТЧ.Свойство("ОбеспечениеМатериаламиИРаботами") Тогда
СтруктураДействийТЧ = ОбщегоНазначения.СкопироватьРекурсивно(СтруктураДействий);
СтруктураДействийТЧ.Вставить("ЗаполнитьПризнакЦеховаяКладовая");
СтруктураДействийТЧ.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты("ОбеспечениеМатериаламиИРаботами"));
ДобавитьДействияОбеспечения(
ЭтаФорма,
"ОбеспечениеМатериаламиИРаботами",
СтруктураДействийТЧ,
"СкладОбязателен, ДатаОтгрузкиОбязательна");
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(
Объект.ОбеспечениеМатериаламиИРаботами,
СтруктураДействийТЧ,
Неопределено);
ЗаполнитьЗависимыеСлужебныеРеквизитыОбеспечения(ЭтаФорма);
КонецЕсли;
Если Инициализация
Или СтруктураТЧ.Свойство("Услуги") Тогда
СтруктураДействийТЧ = ОбщегоНазначения.СкопироватьРекурсивно(СтруктураДействий);
СтруктураДействийТЧ.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты("Услуги"));
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(
Объект.Услуги,
СтруктураДействийТЧ,
Неопределено);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьВидЦеныПоставщикаПоУмолчанию()
ВидЦеныПоставщикаПоУмолчанию = Справочники.ВидыЦенПоставщиков.ПустаяСсылка();
ОтборВидаЦен = Новый Структура("Владелец, ЦенаВключаетНДС", Объект.Партнер, Объект.ЦенаВключаетНДС);
ВидЦеныПоставщикаПоУмолчанию = Справочники.ВидыЦенПоставщиков.ВидЦеныПоУмолчанию(ВидЦеныПоставщикаПоУмолчанию, ОтборВидаЦен);
КонецПроцедуры
#КонецОбласти
#Область СтруктураДействий
&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьДействияПриИзмененииНоменклатуры(Форма, ИмяТЧ, СтруктураДействий)
СтруктураДействий.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются", Новый Структура("Номенклатура", "ХарактеристикиИспользуются"));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ПроверитьХарактеристикуПоВладельцу");
Если Не ИмяТЧ = "Услуги" Тогда
СтруктураДействий.Вставить("ПроверитьЗаполнитьУпаковкуПоВладельцу");
КонецЕсли;
ПараметрыДействия = Новый Структура;
ПараметрыДействия.Вставить("ИмяФормы", Форма.ИмяФормы);
ПараметрыДействия.Вставить("ИмяТабличнойЧасти", ИмяТЧ);
СтруктураДействий.Вставить("НоменклатураПриИзмененииПереопределяемый", ПараметрыДействия);
Если Не ИмяТЧ = "Услуги" Тогда
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(Форма, СтруктураДействий);
КонецЕсли;
Если ИмяТЧ = "Услуги" Тогда
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Форма.Объект));
КонецЕсли;
ДобавитьДействияПриИзмененииХарактеристики(Форма, ИмяТЧ, СтруктураДействий);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьДействияПриИзмененииХарактеристики(Форма, ИмяТЧ, СтруктураДействий)
СтруктураДействий.Вставить(
"ХарактеристикаПриИзмененииПереопределяемый",
Новый Структура("ИмяФормы, ИмяТабличнойЧасти", Форма.ИмяФормы, ИмяТЧ));
Если Не ИмяТЧ = "Услуги" Тогда
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(Форма, СтруктураДействий);
КонецЕсли;
ДобавитьДействияОчиститьЗаполнитьСтатьюАналитику(Форма, ИмяТЧ, СтруктураДействий);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьДействияПроверитьЗаполнитьСклад(Форма, ИмяТЧ, СтруктураДействий)
Если Не ИмяТЧ = "ВыходныеИзделия"
И Не ИмяТЧ = "ПобочныеИзделия"
И Не ИмяТЧ = "ОбеспечениеМатериаламиИРаботами" Тогда
Возврат;
КонецЕсли;
Объект = Форма.Объект;
Если ИмяТЧ = "ОбеспечениеМатериаламиИРаботами" Тогда
ИмяПоляСклад = "Склад";
ИмяПоляСкладОбъекта = "СкладМатериалов";
Иначе
ИмяПоляСклад = "Получатель";
ИмяПоляСкладОбъекта = "СкладПродукции";
КонецЕсли;
Если Объект.ГруппировкаЗатрат =
ПредопределенноеЗначение("Перечисление.ГруппировкиЗатратВЗаказеПереработчику.ПоЭтапамПроизводства") Тогда
ПроизводствоКлиентСервер.ДобавитьВСтруктуруДействияПроверитьЗаполнитьСкладПроизводства(
Объект.Подразделение,
СтруктураДействий,
ИмяПоляСклад);
Иначе
СкладГруппа =
?(ИмяТЧ = "ОбеспечениеМатериаламиИРаботами",
Форма.СкладМатериалыГруппа,
Форма.СкладИзделияГруппа);
ПараметрыДействия =
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(
Объект,
СкладГруппа,
ИмяПоляСкладОбъекта,
ИмяПоляСклад);
Если Не Форма.ИспользоватьНесколькоСкладов Тогда
ПараметрыДействия.СкладПоУмолчанию = Форма.СкладПоУмолчанию;
КонецЕсли;
СтруктураДействий.Вставить("ПроверитьЗаполнитьСклад" , ПараметрыДействия);
КонецЕсли;
ДобавитьДействияПриИзмененииСклада(Форма, ИмяТЧ, СтруктураДействий);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьДействияПриИзмененииСклада(Форма, ИмяТЧ, СтруктураДействий, ТекущиеДанные = Неопределено)
ПараметрыДействия = Неопределено;
Если Не ИмяТЧ = "ОбеспечениеМатериаламиИРаботами" Тогда
ПараметрыДействия = Новый Структура("ИмяПоляСклад", "Получатель");
КонецЕсли;
СтруктураДействий.Вставить("ЗаполнитьПризнакЦеховаяКладовая", ПараметрыДействия);
ДобавитьДействияПроверитьСериюРассчитатьСтатус(Форма, ИмяТЧ, СтруктураДействий, ТекущиеДанные);
ДобавитьДействияПриИзмененииКоличества(Форма, ИмяТЧ, СтруктураДействий);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьДействияПриИзмененииУпаковки(Форма, ИмяТЧ, СтруктураДействий, ТекущиеДанные)
Если ИмяТЧ = "ПобочныеИзделия"
Или ИмяТЧ = "ОбеспечениеМатериаламиИРаботами" Тогда
СтруктураДействий.Вставить("ПересчитатьЦенуЗаУпаковку", ТекущиеДанные.Количество);
КонецЕсли;
ДобавитьДействияПриИзмененииКоличества(Форма, ИмяТЧ, СтруктураДействий);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьДействияПроверитьСериюРассчитатьСтатус(Форма, ИмяТЧ, СтруктураДействий, ТекущиеДанные)
Если Не ИмяТЧ = "ОбеспечениеМатериаламиИРаботами"
Или ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
ПараметрыДействия = Новый Структура;
ПараметрыДействия.Вставить("Склад", ТекущиеДанные.Склад);
ПараметрыДействия.Вставить("ПараметрыУказанияСерий", Форма.ПараметрыУказанияСерий.ОбеспечениеМатериаламиИРаботами);
СтруктураДействий.Вставить("ПроверитьСериюРассчитатьСтатус", ПараметрыДействия);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьДействияПриИзмененииКоличества(Форма, ИмяТЧ, СтруктураДействий)
Если Не ИмяТЧ = "Услуги" Тогда
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц", ПроизводствоКлиентСервер.ПараметрыПересчетаКоличестваЕдиниц());
КонецЕсли;
ДобавитьДействияПроверитьЗаполнитьДолюСтоимости(Форма, ИмяТЧ, СтруктураДействий);
ДобавитьДействияПересчетаСумм(Форма, ИмяТЧ, СтруктураДействий);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьДействияПроверитьЗаполнитьСпецификацию(Форма, ИмяТЧ, СтруктураДействий, ТекущиеДанные)
Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
Если (Не ИмяТЧ = "ВыходныеИзделия"
Или ИмяТЧ = "ВыходныеИзделия"
И Форма.Объект.ГруппировкаЗатрат = ПредопределенноеЗначение("Перечисление.ГруппировкиЗатратВЗаказеПереработчику.ПоЭтапамПроизводства"))
И Не (ИмяТЧ = "ОбеспечениеМатериаламиИРаботами"
И ТекущиеДанные.Производится)
Тогда
Возврат;
КонецЕсли;
ПараметрыЗаполнения =
УправлениеДаннымиОбИзделияхКлиентСервер.ПараметрыДействияПроверитьЗаполнитьСпецификацию(
Форма.Объект,
ТекущиеДанные,
Форма.ПараметрыВыбораСпецификаций[ИмяТЧ]);
СтруктураДействий.Вставить("ПроверитьЗаполнитьСпецификацию", ПараметрыЗаполнения);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьДействияОчиститьЗаполнитьСтатьюАналитику(Форма, ИмяТЧ, СтруктураДействий)
Если Не ИмяТЧ = "ВыходныеИзделия"
И Не ИмяТЧ = "ПобочныеИзделия" Тогда
Возврат;
КонецЕсли;
ДоходыИРасходыКлиентСервер.ВставитьДействиеОчиститьСтатьюИАналитикуРасходов(
СтруктураДействий,
Форма,
"Объект." + ИмяТЧ);
ДоходыИРасходыКлиентСервер.ВставитьДействиеЗаполнитьСтатьюАналитикуРасходовНоменклатуры(
СтруктураДействий,
Форма,
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.СписаниеТоваровПоТребованию"),
Форма.Объект.Организация,
Форма.Объект.Подразделение,
"Объект." + ИмяТЧ);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьДействияИнициализироватьСтатьюИАналитику(Форма, ИмяТЧ, СтруктураДействий)
Если Не ИмяТЧ = "ВыходныеИзделия"
И Не ИмяТЧ = "ПобочныеИзделия" Тогда
Возврат;
КонецЕсли;
ДоходыИРасходыКлиентСервер.ВставитьДействиеИнициализироватьСтатьюИАналитикуПослеДобавленияСтроки(
СтруктураДействий,
Форма,
"Объект." + ИмяТЧ);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьДействияПроверитьЗаполнитьДолюСтоимости(Форма, ИмяТЧ, СтруктураДействий)
Если Не ИмяТЧ = "ВыходныеИзделия" Тогда
Возврат;
КонецЕсли;
СтруктураДействий.Вставить("ПроверитьЗаполнитьДолюСтоимости", Форма.ПараметрыРаспределенияЗатрат);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьДействияЗаполнитьВидЦен(Форма, ИмяТЧ, СтруктураДействий)
Если ИмяТЧ = "Услуги" Тогда
ПараметрыДействия = Новый Структура;
ПараметрыДействия.Вставить("ИмяПоляВидЦены", "ВидЦеныПоставщика");
ПараметрыДействия.Вставить("ВидЦены", Форма.ВидЦеныПоставщикаПоУмолчанию);
СтруктураДействий.Вставить("ЗаполнитьВидЦены", ПараметрыДействия);
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьДействияЗаполнитьЦену(Форма, ИмяТЧ, СтруктураДействий)
Если Не ИмяТЧ = "ОбеспечениеМатериаламиИРаботами"
И Не ИмяТЧ = "ПобочныеИзделия"
И Не ИмяТЧ = "Услуги" Тогда
Возврат;
КонецЕсли;
Если ИмяТЧ = "ПобочныеИзделия"
Или ИмяТЧ = "ОбеспечениеМатериаламиИРаботами" Тогда
ИмяДействия = "ЗаполнитьЦенуПродажи";
ИначеЕсли ИмяТЧ = "Услуги" Тогда
ИмяДействия = "ЗаполнитьЦенуЗакупки";
КонецЕсли;
СтруктураДействий.Вставить(ИмяДействия, ПараметрыЗаполненияЦеныВСтрокеТЧ(ИмяТЧ, Форма.Объект));
ДобавитьДействияПересчетаСумм(Форма, ИмяТЧ, СтруктураДействий);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьДействияПересчетаСумм(Форма, ИмяТЧ, СтруктураДействий, СписокРеквизитов = "")
Если Не ИмяТЧ = "ОбеспечениеМатериаламиИРаботами"
И Не ИмяТЧ = "ПобочныеИзделия"
И Не ИмяТЧ = "Услуги" Тогда
Возврат;
КонецЕсли;
СписокРеквизитов = Новый Структура(СписокРеквизитов);
Инициализация = Не ЗначениеЗаполнено(СписокРеквизитов);
ИмяПоляКоличество = "КоличествоУпаковок";
Если ИмяТЧ = "Услуги" Тогда
ИмяПоляКоличество = "Количество";
КонецЕсли;
Если ИмяТЧ = "Услуги"
И (Инициализация
Или СписокРеквизитов.Свойство("СуммаНДС")
Или СписокРеквизитов.Свойство("СуммаСНДС")) Тогда
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВТЧ(Форма.Объект);
КонецЕсли;
Если СписокРеквизитов.Свойство("Цена") Тогда
СтруктураДействий.Вставить("ПересчитатьЦенуПоСумме", ИмяПоляКоличество);
КонецЕсли;
Если Инициализация
Или СписокРеквизитов.Свойство("Сумма") Тогда
СтруктураДействий.Вставить("ПересчитатьСумму", ИмяПоляКоличество);
КонецЕсли;
Если ИмяТЧ = "Услуги"
И (Инициализация
Или СписокРеквизитов.Свойство("СуммаНДС")) Тогда
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
КонецЕсли;
Если ИмяТЧ = "Услуги"
И (Инициализация
Или СписокРеквизитов.Свойство("СуммаСНДС")) Тогда
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
КонецЕсли;
Если ИмяТЧ = "ОбеспечениеМатериаламиИРаботами"
И (Инициализация
Или СписокРеквизитов.Свойство("Сумма"))
Или ИмяТЧ = "Услуги"
И (Инициализация
Или СписокРеквизитов.Свойство("СуммаСНДС")
Или СписокРеквизитов.Свойство("СуммаНДС")) Тогда
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты(ИмяТЧ));
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьДействияОбеспечения(Форма, ИмяТЧ, СтруктураДействий, ПоляСтрокой)
Если Не ИмяТЧ = "ОбеспечениеМатериаламиИРаботами" Тогда
Возврат;
КонецЕсли;
ПараметрыДокумента = ПараметрыДокументаДляДействийОбеспечения(Форма);
ОбеспечениеВДокументахКлиентСервер.ДобавитьДействияОбеспечения(СтруктураДействий, ПоляСтрокой, ПараметрыДокумента);
КонецПроцедуры
#КонецОбласти
#Область РеквизитыОбъекта
&НаСервере
Процедура ЗаполнитьДоговорПоУмолчанию(ИзмененияУчтены)
Если ИзмененияУчтены = Неопределено Тогда
ИзмененияУчтены = Новый Структура;
КонецЕсли;
ПараметрыОбъекта = Новый Структура("Партнер, Договор, Контрагент, Организация");
ЗаполнитьЗначенияСвойств(ПараметрыОбъекта, Объект);
ПараметрыОбъекта.Вставить("Соглашение", Справочники.СоглашенияСПоставщиками.ПустаяСсылка());
ДопПараметры = ЗакупкиСервер.ДополнительныеПараметрыОтбораДоговоров();
ДопПараметры.ВалютаВзаиморасчетов = Объект.Валюта;
Если Объект.ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоДоговорамКонтрагентов
И ИспользоватьНаправленияДеятельности Тогда
ДопПараметры.НаправлениеДеятельности = Объект.НаправлениеДеятельности;
КонецЕсли;
Договор =
ЗакупкиСервер.ПолучитьДоговорПоУмолчанию(
ПараметрыОбъекта,
Объект.ХозяйственнаяОперация,
ДопПараметры);
Если Договор <> Объект.Договор Тогда
Объект.Договор = Договор;
ДоговорПриИзмененииНаСервере(ИзмененияУчтены);
КонецЕсли;
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, "Договор");
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьРеквизитыДоставкиНаСервере(ИмяЭлементаФормы)
ДоставкаТоваров.ЗаполнитьРеквизитыДоставки(Элементы, ИмяЭлементаФормы, Объект);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСкладТЧНаСервере(ПараметрыЗаполнения, Знач ВыделенныеСтроки = Неопределено)
ТипыНоменклатуры =
ОбщегоНазначения.ЗначениеРеквизитаОбъектов(
Объект[ПараметрыЗаполнения.ИмяТЧ].Выгрузить(, "Номенклатура").ВыгрузитьКолонку("Номенклатура"),
"ТипНоменклатуры");
ГруппыСкладов = Новый Соответствие;
Если ПараметрыЗаполнения.СкладГруппа Тогда
СкладыТЧ = Объект[ПараметрыЗаполнения.ИмяТЧ].Выгрузить(, ПараметрыЗаполнения.ИмяПоляСклад).ВыгрузитьКолонку(ПараметрыЗаполнения.ИмяПоляСклад);
Для Каждого ТекСклад Из СкладыТЧ Цикл
Если ГруппыСкладов.Получить(ТекСклад) = Неопределено Тогда
ГруппыСкладов.Вставить(ТекСклад, Справочники.Склады.ИерархияГрупп(ТекСклад));
КонецЕсли;
КонецЦикла;
КонецЕсли;
ЕстьИзменения = Ложь;
Если ВыделенныеСтроки = Неопределено Тогда
ИсточникСтрок = Объект[ПараметрыЗаполнения.ИмяТЧ];
ТолькоВыделенные = Ложь;
Иначе
ИсточникСтрок = ВыделенныеСтроки;
ТолькоВыделенные = Истина;
КонецЕсли;
Для Каждого ТекСтрока Из ИсточникСтрок Цикл
Если ТолькоВыделенные Тогда
ДанныеСтроки = Объект[ПараметрыЗаполнения.ИмяТЧ].НайтиПоИдентификатору(ТекСтрока);
Иначе
ДанныеСтроки = ТекСтрока;
КонецЕсли;
Если ТипыНоменклатуры.Получить(ДанныеСтроки.Номенклатура) = Перечисления.ТипыНоменклатуры.Работа
Или ЗначениеЗаполнено(ПараметрыЗаполнения.ИмяПоляСписатьНаРасходы)
И ДанныеСтроки[ПараметрыЗаполнения.ИмяПоляСписатьНаРасходы] Тогда
Продолжить;
КонецЕсли;
Если Не ПараметрыЗаполнения.СкладГруппа
И Не ДанныеСтроки[ПараметрыЗаполнения.ИмяПоляСклад] = ПараметрыЗаполнения.Склад Тогда
ДанныеСтроки[ПараметрыЗаполнения.ИмяПоляСклад] = ПараметрыЗаполнения.Склад;
ЕстьИзменения = Истина;
ИначеЕсли ПараметрыЗаполнения.СкладГруппа Тогда
ТекГруппы = ГруппыСкладов.Получить(ДанныеСтроки[ПараметрыЗаполнения.ИмяПоляСклад]);
Если ТекГруппы.Найти(ПараметрыЗаполнения.Склад) = Неопределено Тогда
ДанныеСтроки[ПараметрыЗаполнения.ИмяПоляСклад] = Справочники.Склады.ПустаяСсылка();
ЕстьИзменения = Истина;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Если ЕстьИзменения Тогда
СтруктураДействий = Новый Структура;
ДобавитьДействияПриИзмененииСклада(ЭтаФорма, ПараметрыЗаполнения.ИмяТЧ, СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект[ПараметрыЗаполнения.ИмяТЧ], СтруктураДействий, Неопределено);
ОбновитьКолонкуДоступноНаСервере();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьДатуПоступленияЖелаемойДатой()
Если Объект.ПоступлениеОднойДатой
И ЗначениеЗаполнено(Объект.ДатаПоступления)
Или Объект.ВыходныеИзделия.Количество() = 0
И Объект.ПобочныеИзделия.Количество() = 0 Тогда
Возврат;
КонецЕсли;
ЗаполнитьДатуПоступленияЖелаемойДатойНаСервере();
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьДатуПоступленияЖелаемойДатойНаСервере()
Если Объект.ПоступлениеОднойДатой
И ЗначениеЗаполнено(Объект.ДатаПоступления)
Или Объект.ВыходныеИзделия.Количество() = 0
И Объект.ПобочныеИзделия.Количество() = 0 Тогда
Возврат;
КонецЕсли;
ДатаПоступления = Неопределено;
Если ЗначениеЗаполнено(Объект.ЖелаемаяДатаПоступления)
И Объект.ЖелаемаяДатаПоступления > Объект.Дата Тогда
ДатаПоступления = Объект.ЖелаемаяДатаПоступления;
Иначе
ДатаПоступления = ТекущаяДатаСеанса();
КонецЕсли;
Если Объект.ПоступлениеОднойДатой
И Не ЗначениеЗаполнено(Объект.ДатаПоступления) Тогда
Объект.ДатаПоступления = ДатаПоступления;
КонецЕсли;
ЗаполнитьДатуВТЧ("ВыходныеИзделия", ДатаПоступления, Объект.ПоступлениеОднойДатой);
ЗаполнитьДатуВТЧ("ПобочныеИзделия", ДатаПоступления, Объект.ПоступлениеОднойДатой);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьПустыеДатыВыполненияРаботНаСервере()
Если Объект.Услуги.Количество() = 0 Тогда
Возврат;
КонецЕсли;
Если Не Объект.ВыполнениеРаботОднойДатой Тогда
ДатаВыполнения = ТекущаяДатаСеанса();
Иначе
Если Не ЗначениеЗаполнено(Объект.ДатаВыполнения) Тогда
Объект.ДатаВыполнения = ТекущаяДатаСеанса();
КонецЕсли;
ДатаВыполнения = Объект.ДатаВыполнения;
КонецЕсли;
ЗаполнитьДатуВТЧ("Услуги", ДатаВыполнения, Ложь);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьДатуВТЧ(ИмяТЧ, НоваяДата, Перезаполнять = Истина, Знач ВыделенныеСтроки = Неопределено)
Если ИмяТЧ = "ВыходныеИзделия"
Или ИмяТЧ = "ПобочныеИзделия" Тогда
ИмяПоляДата = "ДатаПоступления";
ИначеЕсли ИмяТЧ = "Услуги" Тогда
ИмяПоляДата = "ДатаВыполнения";
Иначе
ИмяПоляДата = "ДатаОтгрузки";
КонецЕсли;
Если ВыделенныеСтроки = Неопределено Тогда
ИсточникСтрок = Объект[ИмяТЧ];
ТолькоВыделенные = Ложь;
Иначе
ИсточникСтрок = ВыделенныеСтроки;
ТолькоВыделенные = Истина;
КонецЕсли;
Для Каждого ТекСтрока Из ИсточникСтрок Цикл
Если ТолькоВыделенные Тогда
ДанныеСтроки = Объект[ИмяТЧ].НайтиПоИдентификатору(ТекСтрока);
Иначе
ДанныеСтроки = ТекСтрока;
КонецЕсли;
Если ИмяТЧ = "ОбеспечениеМатериаламиИРаботами"
И ДанныеСтроки.ВариантОбеспечения = Перечисления.ВариантыОбеспечения.ПереданРанее Тогда
ДанныеСтроки[ИмяПоляДата] = '00010101';
ИначеЕсли Перезаполнять
Или Не ЗначениеЗаполнено(ДанныеСтроки[ИмяПоляДата]) Тогда
ДанныеСтроки[ИмяПоляДата] = НоваяДата;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ЗаполнитьДатуВСтрокеТЧОбщейДатой(Форма, ИмяТЧ, ТекущиеДанные)
Объект = Форма.Объект;
ИспользоватьОбщуюДату = Ложь;
Если ИмяТЧ = "ВыходныеИзделия"
Или ИмяТЧ = "ПобочныеИзделия" Тогда
ИмяПоляДата = "ДатаПоступления";
ИспользоватьОбщуюДату = Объект.ПоступлениеОднойДатой;
ОбщаяДата = Объект.ДатаПоступления;
ИначеЕсли ИмяТЧ = "ОбеспечениеМатериаламиИРаботами" Тогда
ИмяПоляДата = "ДатаОтгрузки";
ИспользоватьОбщуюДату = Объект.НеОтгружатьЧастями;
ОбщаяДата = Объект.ДатаОтгрузки;
ИначеЕсли ИмяТЧ = "Услуги" Тогда
ИмяПоляДата = "ДатаВыполнения";
ИспользоватьОбщуюДату = Объект.ВыполнениеРаботОднойДатой;
ОбщаяДата = Объект.ДатаВыполнения;
КонецЕсли;
Если ИспользоватьОбщуюДату Тогда
ТекущиеДанные[ИмяПоляДата] = ОбщаяДата;
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ЗаполнитьЦеныПоВидуЦенСервер(ИмяТЧ, Знач ВыделенныеСтроки = Неопределено)
Отказ = Ложь;
СтрокиКПерезаполнению = Неопределено;
Если Не ВыделенныеСтроки = Неопределено Тогда
Если ВыделенныеСтроки.Количество() = 0 Тогда
Если ИмяТЧ = "ПобочныеИзделия" Тогда
ТекстСообщения = НСтр("ru='В таблице ""Возвратные отходы"" не выбрано ни одной строки.
|Цены не могут быть заполнены.'");
Иначе
ТекстСообщения = НСтр("ru='В таблице ""Материалы и работы"" не выбрано ни одной строки.
|Цены не могут быть заполнены.'");
КонецЕсли;
ОбщегоНазначения.СообщитьПользователю(ТекстСообщения,, ИмяТЧ, "Объект", Отказ);
Если Не ЗначениеЗаполнено(Объект.ВидЦены) Тогда
ТекстСообщения = НСтр("ru='Не заполнено поле ""Вид цены"".'");
ОбщегоНазначения.СообщитьПользователю(ТекстСообщения,, "ВидЦены", "Объект", Отказ);
КонецЕсли;
КонецЕсли;
Если Отказ Тогда
Возврат Ложь;
КонецЕсли;
СтрокиКПерезаполнению = Новый Массив;
Для Каждого ИдентификаторСтроки Из ВыделенныеСтроки Цикл
СтрокиКПерезаполнению.Добавить(Объект[ИмяТЧ].НайтиПоИдентификатору(ИдентификаторСтроки));
КонецЦикла;
КонецЕсли;
ПараметрыЗаполнения = Новый Структура;
ПараметрыЗаполнения.Вставить("Дата", Объект.Дата);
ПараметрыЗаполнения.Вставить("Организация", Объект.Организация);
ПараметрыЗаполнения.Вставить("Валюта", Объект.Валюта);
ПараметрыЗаполнения.Вставить("ВидЦены", Объект.ВидЦены);
ПараметрыЗаполнения.Вставить("ПоляЗаполнения", "Цена");
СтруктураДействий = Новый Структура;
ДобавитьДействияПересчетаСумм(ЭтаФорма, ИмяТЧ, СтруктураДействий, "Сумма");
ЦеныРассчитаны =
ЦеныПредприятияЗаполнениеСервер.ЗаполнитьЦены(
Объект[ИмяТЧ],
СтрокиКПерезаполнению,
ПараметрыЗаполнения,
СтруктураДействий);
Если ИмяТЧ = "ОбеспечениеМатериаламиИРаботами" Тогда
РассчитатьИтогиДокумента(ЭтаФорма, "СуммаЗалоговая");
КонецЕсли;
Возврат ЦеныРассчитаны;
КонецФункции
&НаСервере
Функция ЗаполнитьЦеныПоВидуЦеныПоставщикаНаСервере(ВидЦеныПоставщика, Знач ВыделенныеСтроки = Неопределено)
СтрокиКПерезаполнению = Неопределено;
Если Не ВыделенныеСтроки = Неопределено Тогда
Если ВыделенныеСтроки.Количество() = 0 Тогда
ТекстСообщения = НСтр("ru='В таблице ""Услуги"" не выбрано ни одной строки.
|Цены не могут быть заполнены.'");
ОбщегоНазначения.СообщитьПользователю(ТекстСообщения,, "Услуги", "Объект");
Возврат Ложь;
КонецЕсли;
СтрокиКПерезаполнению = Новый Массив;
Для Каждого ТекСтрока Из ВыделенныеСтроки Цикл
СтрокиКПерезаполнению.Добавить(Объект.Услуги.НайтиПоИдентификатору(ТекСтрока));
КонецЦикла;
КонецЕсли;
СтруктураДействий = Новый Структура;
ДобавитьДействияПересчетаСумм(ЭтаФорма, "Услуги", СтруктураДействий);
ПараметрыЗаполнения = Новый Структура();
ПараметрыЗаполнения.Вставить("ПоляЗаполнения", "Цена, ВидЦеныПоставщика");
ПараметрыЗаполнения.Вставить("Дата", Объект.Дата);
ПараметрыЗаполнения.Вставить("Валюта", Объект.Валюта);
ПараметрыЗаполнения.Вставить("ВидЦеныПоставщика", ВидЦеныПоставщика);
ЦеныРассчитаны = ЦеныПартнеровЗаполнениеСервер.ЗаполнитьЦены(
Объект.Услуги,
СтрокиКПерезаполнению,
ПараметрыЗаполнения,
СтруктураДействий);
Возврат ЦеныРассчитаны;
КонецФункции
&НаСервере
Процедура ТаблицаЗаполнитьТЧПоСпецификацииНаСервере(ИмяТЧ)
СписокГрупп = ГруппыЗатрат.Выгрузить(,"НомерГруппыЗатрат").ВыгрузитьКолонку("НомерГруппыЗатрат");
ПерезаполнитьПоСпецификациямНаСервере(СписокГрупп, ИмяТЧ);
КонецПроцедуры
&НаСервере
Процедура ПерезаполнитьПоСпецификациямНаСервере(СписокГрупп, СписокТЧ = "")
Замер =
ОценкаПроизводительности.НачатьЗамерДлительнойОперации(
"Документ.ЗаказПереработчику2_5.Форма.ФормаДокумента.Команда.ВыходныеИзделияПерезаполнитьПоСпецификациям");
ИменаТЧ = Новый Структура(СписокТЧ);
ЗаполнитьВсе = ИменаТЧ.Количество() = 0;
СписокПродукции = Новый Массив;
Отбор = Новый Структура("НомерГруппыЗатрат");
Для Каждого ТекГруппа Из СписокГрупп Цикл
Отбор.НомерГруппыЗатрат = ТекГруппа;
НайденныеСтроки = Объект.ВыходныеИзделия.НайтиСтроки(Отбор);
Для Каждого ТекСтрока Из НайденныеСтроки Цикл
Если Не ТекСтрока.Отменено Тогда
СписокПродукции.Добавить(ТекСтрока);
КонецЕсли;
КонецЦикла;
Если ЗаполнитьВсе
Или ИменаТЧ.Свойство("ПобочныеИзделия") Тогда
ОчиститьТЧПоГруппеЗатрат("ПобочныеИзделия", ТекГруппа);
КонецЕсли;
Если ЗаполнитьВсе
Или ИменаТЧ.Свойство("ОбеспечениеМатериаламиИРаботами") Тогда
ОчиститьТЧПоГруппеЗатрат("ОбеспечениеМатериаламиИРаботами", ТекГруппа);
КонецЕсли;
Если ЗаполнитьВсе
Или ИменаТЧ.Свойство("Услуги") Тогда
ОчиститьТЧПоГруппеЗатрат("Услуги", ТекГруппа);
КонецЕсли;
КонецЦикла;
Документы.ЗаказПереработчику2_5.ЗаполнитьПобочныеИзделияМатериалыУслугиПоСпецификации(СписокПродукции, Объект, СписокТЧ);
ОбновитьПредставлениеГруппЗатрат();
Если ЗаполнитьВсе Тогда
СписокТЧ = "ПобочныеИзделия, ОбеспечениеМатериаламиИРаботами, Услуги";
КонецЕсли;
ЗаполнитьСлужебныеРеквизитыТабличныхЧастей(СписокТЧ);
Если ЗаполнитьВсе
Или ИменаТЧ.Свойство("ПобочныеИзделия") Тогда
ОбновитьТаблицуСкладовИзделий();
ОбновитьКартинкуГруппыСкладов(
ТаблицаСкладовИзделия,
НадписьНесколькоСкладовИзделия,
Элементы.КартинкаНесколькоСкладовИзделия);
КонецЕсли;
Если ЗаполнитьВсе
Или ИменаТЧ.Свойство("ОбеспечениеМатериаламиИРаботами") Тогда
ОбновитьКолонкуДоступноНаСервере();
ОбновитьТаблицуСкладовМатериалы();
ОбновитьКартинкуГруппыСкладов(
ТаблицаСкладовМатериалы,
НадписьНесколькоСкладовМатериалы,
Элементы.КартинкаНесколькоСкладовМатериалы);
КонецЕсли;
РассчитатьИтогиДокумента(ЭтаФорма);
ОценкаПроизводительности.ЗакончитьЗамерДлительнойОперации(Замер, СписокПродукции.Количество());
КонецПроцедуры
#КонецОбласти
#Область Штрихкоды
&НаКлиенте
Процедура ОбработатьШтрихкоды(ДанныеШтрихкодов, ИмяТЧ)
СтруктураДействий = ШтрихкодированиеНоменклатурыКлиент.ПараметрыОбработкиШтрихкодов();
СтруктураДействий.Штрихкоды = ДанныеШтрихкодов;
СтруктураДействий.ИмяТЧ = ИмяТЧ;
СтруктураДействий.ИзменятьКоличество = Истина;
Если ИмяТЧ = "Услуги" Тогда
СтруктураДействий.ИмяКолонкиКоличество = "Количество";
СтруктураДействий.НеИспользоватьУпаковки = Истина;
СтруктураДействий.ТолькоРаботы = Истина;
Иначе
СтруктураДействий.ТолькоТоварыИРабота = Истина;
КонецЕсли;
СтруктураДействийСИзмененнымиСтроками = Новый Структура;
ДобавитьДействияПриИзмененииКоличества(ЭтаФорма, ИмяТЧ, СтруктураДействийСИзмененнымиСтроками);
СтруктураДействийСДобавленнымиСтроками = Новый Структура;
ДобавитьДействияПриИзмененииНоменклатуры(ЭтаФорма, ИмяТЧ, СтруктураДействийСДобавленнымиСтроками);
ДобавитьДействияПроверитьЗаполнитьСклад(ЭтаФорма, ИмяТЧ, СтруктураДействийСДобавленнымиСтроками);
ДобавитьДействияЗаполнитьВидЦен(ЭтаФорма, ИмяТЧ, СтруктураДействийСДобавленнымиСтроками);
ДобавитьДействияЗаполнитьЦену(ЭтаФорма, ИмяТЧ, СтруктураДействийСДобавленнымиСтроками);
ДобавитьДействияИнициализироватьСтатьюИАналитику(ЭтаФорма, ИмяТЧ, СтруктураДействийСДобавленнымиСтроками);
Если ИмяТЧ = "ОбеспечениеМатериаламиИРаботами" Тогда
СтруктураДействий.ПараметрыУказанияСерий = ПараметрыУказанияСерий[ИмяТЧ];
КонецЕсли;
Если Не ИмяТЧ = "Услуги" Тогда
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтаФорма, СтруктураДействийСДобавленнымиСтроками);
КонецЕсли;
СтруктураДействий.СтруктураДействийСДобавленнымиСтроками = СтруктураДействийСДобавленнымиСтроками;
СтруктураДействий.СтруктураДействийСИзмененнымиСтроками = СтруктураДействийСИзмененнымиСтроками;
ОбработатьШтрихкодыСервер(СтруктураДействий, КэшированныеЗначения);
ШтрихкодированиеНоменклатурыКлиент.ОбработатьНеизвестныеШтрихкоды(СтруктураДействий,КэшированныеЗначения,ЭтаФорма);
Если ИмяТЧ = "ОбеспечениеМатериаламиИРаботами" Тогда
Если ШтрихкодированиеНоменклатурыКлиент.НужноОткрытьФормуУказанияСерийПослеОбработкиШтрихкодов(СтруктураДействий) Тогда
ТекущиеДанныеИдентификатор = СтруктураДействий.МассивСтрокССериями[0];
ПодключитьОбработчикОжидания("ОткрытьПодборСерийПриСканированииШтрихкодаНоменклатуры", 0.1, Истина);
КонецЕсли;
КонецЕсли;
Если СтруктураДействий.ТекущаяСтрока <> Неопределено Тогда
ТаблицаФормы = Элементы[ИмяТЧ];
ТаблицаФормы.ТекущаяСтрока = СтруктураДействий.ТекущаяСтрока;
КонецЕсли;
РассчитатьИтогиДокумента(ЭтаФорма);
КонецПроцедуры
&НаСервере
Процедура ОбработатьШтрихкодыСервер(СтруктураПараметровДействия, КэшированныеЗначения)
ИмяТЧ = СтруктураПараметровДействия.ИмяТЧ;
КоличествоСтрокДоИзменения = Объект[ИмяТЧ].Количество();
ДобавитьДействияОбеспечения(
ЭтаФорма,
ИмяТЧ,
СтруктураПараметровДействия.СтруктураДействийСДобавленнымиСтроками,
"ВариантОбеспечения, СкладОбязателен, ДатаОтгрузкиОбязательна");
ШтрихкодированиеНоменклатурыСервер.ОбработатьШтрихкоды(ЭтаФорма, Объект, СтруктураПараметровДействия, КэшированныеЗначения);
Если ИмяТЧ = "ОбеспечениеМатериаламиИРаботами" Тогда
ОбеспечениеВДокументахКлиентСервер.УдалитьДействияОбеспечения(СтруктураПараметровДействия.СтруктураДействийСДобавленнымиСтроками);
КонецЕсли;
КоличествоСтрок = Объект[ИмяТЧ].Количество();
Если Не КоличествоСтрок = КоличествоСтрокДоИзменения Тогда
ДанныеОбИзделиях = Новый Массив;
ОбрабатываемыеСтроки = Новый Массив;
Для Индекс = КоличествоСтрокДоИзменения + 1 По КоличествоСтрок Цикл
ТекущиеДанные = Объект[ИмяТЧ][Индекс - 1];
Если (ИмяТЧ = "ВыходныеИзделия"
И Не Объект.ГруппировкаЗатрат = ПредопределенноеЗначение("Перечисление.ГруппировкиЗатратВЗаказеПереработчику.ПоЭтапамПроизводства"))
Или (ИмяТЧ = "ОбеспечениеМатериаламиИРаботами"
И ТекущиеДанные.Производится) Тогда
ДанныеОбИзделиях.Добавить(
УправлениеДаннымиОбИзделияхКлиентСервер.СобратьДанныеОбИзделииДляВыбораСпецификации(
Объект, ТекущиеДанные, ПараметрыВыбораСпецификаций[ИмяТЧ], ЭтотОбъект));
КонецЕсли;
ЗаполнитьДатуВСтрокеТЧОбщейДатой(ЭтотОбъект, ИмяТЧ, ТекущиеДанные);
ОбрабатываемыеСтроки.Добавить(ТекущиеДанные);
КонецЦикла;
Если (ИмяТЧ = "ВыходныеИзделия"
И Не Объект.ГруппировкаЗатрат = ПредопределенноеЗначение("Перечисление.ГруппировкиЗатратВЗаказеПереработчику.ПоЭтапамПроизводства"))
Или (ИмяТЧ = "ОбеспечениеМатериаламиИРаботами"
И ТекущиеДанные.Производится) Тогда
УправлениеДаннымиОбИзделиях.ЗаполнитьСпецификациюВСтроках(ОбрабатываемыеСтроки, ДанныеОбИзделиях, ПараметрыВыбораСпецификаций[ИмяТЧ]);
КонецЕсли;
Для Каждого ТекущиеДанные Из ОбрабатываемыеСтроки Цикл
Если ИмяТЧ = "ВыходныеИзделия" Тогда
ДобавитьИзменитьГруппуЗатрат(ТекущиеДанные, Истина);
Иначе
УстановитьНомерГруппыЗатратПоУмолчанию(ИмяТЧ, ТекущиеДанные.ПолучитьИдентификатор());
КонецЕсли;
ТаблицаЗаполнитьЗависимыеСлужебныеРеквизитыГруппыЗатрат(ИмяТЧ, ТекущиеДанные.НомерГруппыЗатрат);
КонецЦикла;
КонецЕсли;
Если ИмяТЧ = "ВыходныеИзделия" Тогда
РассчитатьПроцентРаспределенияЗатратНаВыходныеИзделия();
КонецЕсли;
Если ИмяТЧ = "ОбеспечениеМатериаламиИРаботами" Тогда
ОбновитьКолонкуДоступноНаСервере();
ЗаполнитьЗависимыеСлужебныеРеквизитыОбеспечения(ЭтаФорма);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ВспомогательныеПроцедуры
&НаСервере
Функция ПараметрыЗаполненияСкладаТЧ(ИмяТЧ)
Если ИмяТЧ = "ОбеспечениеМатериаламиИРаботами" Тогда
ИмяПоляСклад = "Склад";
Склад = Объект.СкладМатериалов;
СкладГруппа = СкладМатериалыГруппа;
ИмяПоляСписатьНаРасходы = "";
Иначе
ИмяПоляСклад = "Получатель";
Склад = Объект.СкладПродукции;
СкладГруппа = СкладИзделияГруппа;
ИмяПоляСписатьНаРасходы = "СписатьНаРасходы";
КонецЕсли;
Результат = Новый Структура;
Результат.Вставить("ИмяТЧ", ИмяТЧ);
Результат.Вставить("ИмяПоляСклад", ИмяПоляСклад);
Результат.Вставить("Склад", Склад);
Результат.Вставить("СкладГруппа", СкладГруппа);
Результат.Вставить("ИмяПоляСписатьНаРасходы", ИмяПоляСписатьНаРасходы);
Возврат Результат;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ПараметрыЗаполненияЦеныВСтрокеТЧ(ИмяТЧ, Объект)
ПараметрыЗаполненияЦены = Неопределено;
Если ИмяТЧ = "ПобочныеИзделия"
Или ИмяТЧ = "ОбеспечениеМатериаламиИРаботами" Тогда
ПараметрыЗаполненияЦены = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияЦеныВСтрокеТЧ(Объект, Истина);
ИначеЕсли ИмяТЧ = "Услуги" Тогда
ПараметрыЗаполненияЦены = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияЦеныЗакупкиВСтрокеТЧ(Объект);
ПараметрыЗаполненияЦены.Вставить("Упаковка", ПредопределенноеЗначение("Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка"));
КонецЕсли;
Возврат ПараметрыЗаполненияЦены;
КонецФункции
&НаСервере
Функция СкорректироватьСтрокиЗаказа(СтруктураДополнительныхПараметров)
ИмяТЧ = СтруктураДополнительныхПараметров.ИмяТабличнойЧасти;
Если ИмяТЧ = "ВыходныеИзделия"
Тогда
ВыделенныеСтроки = Новый Массив;
СтруктураОтбора = Новый Структура("Отменено", Ложь);
Для Каждого ТекущиеДанные Из Объект[ИмяТЧ].НайтиСтроки(СтруктураОтбора) Цикл
ВыделенныеСтроки.Добавить(ТекущиеДанные.ПолучитьИдентификатор());
КонецЦикла;
КонецЕсли;
СтруктураДополнительныхПараметров.ПроверятьОстатки = Не (Объект.Статус = Перечисления.СтатусыЗаказовПереработчикам.НеСогласован);
СтруктураРезультата = Документы.ЗаказПереработчику2_5.СкорректироватьСтрокиЗаказа(Объект, СтруктураДополнительныхПараметров);
Если СтруктураДополнительныхПараметров.ЗакрыватьЗаказы Тогда
Объект.Статус = Перечисления.СтатусыЗаказовПереработчикам.Закрыт;
Если НЕ Объект.ПоступлениеОднойДатой Тогда
ЗаполнитьДатуПоступленияЖелаемойДатойНаСервере();
КонецЕсли;
КонецЕсли;
Если ИмяТЧ = "ВыходныеИзделия"
Тогда
Для Каждого ТекущийИдентификатор Из ВыделенныеСтроки Цикл
ТекущиеДанные = Объект[ИмяТЧ].НайтиПоИдентификатору(ТекущийИдентификатор);
ЗаполнитьЗависимыеСлужебныеРеквизитыГруппыЗатрат(
ДанныеГруппыЗатратПоНомеруГруппыЗатрат(ТекущиеДанные.НомерГруппыЗатрат));
КонецЦикла;
ОтмененоСтрок =
СтруктураРезультата.КоличествоСтрок
+ ОтменитьСтрокиГруппыЗатрат(ИмяТЧ, ВыделенныеСтроки);
СтруктураРезультата = ЗаказыСервер.РезультатОтменыНеотработанныхСтрок(ОтмененоСтрок);
КонецЕсли;
Если ИмяТЧ = "ОбеспечениеМатериаламиИРаботами"
Или ИмяТЧ = "Услуги" Тогда
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты(ИмяТЧ));
ДобавитьДействияОбеспечения(ЭтаФорма, ИмяТЧ, СтруктураДействий, "СкладОбязателен, ДатаОтгрузкиОбязательна");
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект[ИмяТЧ], СтруктураДействий, Неопределено);
КонецЕсли;
ПослеИзмененияСтрокТЧПрограммноНаСервере(ИмяТЧ);
НастроитьЗависимыеЭлементыФормы(ЭтаФорма, "Статус");
Модифицированность = Истина;
Возврат СтруктураРезультата;
КонецФункции
&НаСервере
Процедура ЗаполнитьПодчиненныеСвойстваПоСтатистике(ИмяРеквизитаРодителя)
ЗаполнениеОбъектовПоСтатистике.ЗаполнитьПодчиненныеРеквизитыОбъекта(Объект, ИмяРеквизитаРодителя);
КонецПроцедуры
&НаСервере
Процедура ПослеИзмененияСтрокТЧПрограммноНаСервере(ИмяТЧ, Знач ВыделенныеСтроки = Неопределено)
Если ИмяТЧ = "ВыходныеИзделия" Тогда
МассивГруппировок = Новый Массив;
Если ВыделенныеСтроки <> Неопределено Тогда
Для Каждого ИдентификаторСтроки Из ВыделенныеСтроки Цикл
ДанныеСтроки = Объект.ВыходныеИзделия.НайтиПоИдентификатору(ИдентификаторСтроки);
МассивГруппировок.Добавить(ДанныеСтроки.НомерГруппыЗатрат);
КонецЦикла;
КонецЕсли;
РассчитатьПроцентРаспределенияЗатратНаВыходныеИзделия(МассивГруппировок);
КонецЕсли;
Если ИмяТЧ = "ОбеспечениеМатериаламиИРаботами" Тогда
МассивСтрок = Неопределено;
Если ВыделенныеСтроки <> Неопределено Тогда
МассивСтрок = Новый Массив;
Для Каждого ИдентификаторСтроки Из ВыделенныеСтроки Цикл
МассивСтрок.Добавить(Объект[ИмяТЧ].НайтиПоИдентификатору(ИдентификаторСтроки));
КонецЦикла;
КонецЕсли;
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(
Объект,
ПараметрыУказанияСерий.ОбеспечениеМатериаламиИРаботами,
МассивСтрок);
ОбновитьКолонкуДоступноНаСервере();
ЗаполнитьЗависимыеСлужебныеРеквизитыОбеспечения(ЭтаФорма);
КонецЕсли;
Если ИмяТЧ = "ВыходныеИзделия"
Или ИмяТЧ = "ПобочныеИзделия" Тогда
СписокРеквизитов = "КоличествоИзделий";
ИначеЕсли ИмяТЧ = "Услуги" Тогда
СписокРеквизитов = "СуммаУслуг";
Иначе
СписокРеквизитов = "СуммаЗалоговая";
КонецЕсли;
РассчитатьИтогиДокумента(ЭтаФорма, СписокРеквизитов);
КонецПроцедуры
&НаСервере
Функция ПараметрыФормыВводаДолиСтоимости(ПараметрыРаспределенияЗатратЭтапа, ТекущийИдентификатор)
ПараметрыФормы =
ПроизводствоСервер.ПараметрыФормыВводаДолейСтоимости(
Объект,
ПараметрыРаспределенияЗатратЭтапа,
ТекущийИдентификатор);
Возврат ПараметрыФормы;
КонецФункции
#КонецОбласти
#КонецОбласти
#Область ГруппировкаЗатрат
&НаСервере
Процедура ДобавитьИзменитьГруппуЗатрат(ТекущиеДанные, ПакетныйРежим = Ложь)
СтруктураОтбора = СтруктураОтбораГруппыЗатрат(ТекущиеДанные);
ПредставлениеГруппыЗатрат = ПредставлениеГруппыЗатрат(СтруктураОтбора);
НомерГруппыДоИзменения = ТекущиеДанные.НомерГруппыЗатрат;
ОписаниеГруппыЗатрат = ДанныеГруппыЗатрат(СтруктураОтбора);
Если ОписаниеГруппыЗатрат.НомерГруппыЗатрат = 0 Тогда
НоваяГруппаЗатрат = ГруппыЗатрат.Добавить();
ЗаполнитьЗначенияСвойств(НоваяГруппаЗатрат, СтруктураОтбора);
Объект.МаксимальныйНомерГруппыЗатрат = Объект.МаксимальныйНомерГруппыЗатрат + 1;
КоличествоГруппЗатрат = КоличествоГруппЗатрат + 1;
НоваяГруппаЗатрат.НомерГруппыЗатрат = Объект.МаксимальныйНомерГруппыЗатрат;
НоваяГруппаЗатрат.ГруппаЗатрат = ПредставлениеГруппыЗатрат;
ЗаполнитьЗначенияСвойств(ОписаниеГруппыЗатрат, НоваяГруппаЗатрат);
КонецЕсли;
НазначениеОбеспеченияДоИзменения = ОписаниеГруппыЗатрат.НазначениеОбеспечения;
ЗаполнитьСлужебныеРеквизитыГруппыЗатрат(ОписаниеГруппыЗатрат);
Если Не НомерГруппыДоИзменения = ОписаниеГруппыЗатрат.НомерГруппыЗатрат
Или Не НазначениеОбеспеченияДоИзменения = ОписаниеГруппыЗатрат.НазначениеОбеспечения Тогда
КоличествоИдентифицирующихСтрок = 0;
Если Не НомерГруппыДоИзменения = ОписаниеГруппыЗатрат.НомерГруппыЗатрат Тогда
КоличествоИдентифицирующихСтрок = КоличествоИдентифицирующихСтрок(ДанныеГруппыЗатратПоНомеруГруппыЗатрат(НомерГруппыДоИзменения));
КонецЕсли;
Если Не НазначениеОбеспеченияДоИзменения = ОписаниеГруппыЗатрат.НазначениеОбеспечения
Или Не НомерГруппыДоИзменения = ОписаниеГруппыЗатрат.НомерГруппыЗатрат
И КоличествоИдентифицирующихСтрок = 1 Тогда
ОбновитьСвязиСГруппойЗатрат(НомерГруппыДоИзменения, ОписаниеГруппыЗатрат);
Если Не НомерГруппыДоИзменения = ОписаниеГруппыЗатрат.НомерГруппыЗатрат
И КоличествоИдентифицирующихСтрок = 1 Тогда
СтруктураОтбора = Новый Структура("НомерГруппыЗатрат", НомерГруппыДоИзменения);
НайденныеСтроки = ГруппыЗатрат.НайтиСтроки(СтруктураОтбора);
Для Каждого ТекГруппа Из НайденныеСтроки Цикл
ГруппыЗатрат.Удалить(ТекГруппа);
КоличествоГруппЗатрат = КоличествоГруппЗатрат - 1;
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецЕсли;
ТекущиеДанные.НомерГруппыЗатрат = ОписаниеГруппыЗатрат.НомерГруппыЗатрат;
ТекущиеДанные.ГруппаЗатрат = ОписаниеГруппыЗатрат.ГруппаЗатрат;
Если Не ПакетныйРежим Тогда
ЗаполнитьЗависимыеСлужебныеРеквизитыГруппыЗатрат(ОписаниеГруппыЗатрат);
ОписаниеГруппыЗатрат = ДанныеГруппыЗатратПоНомеруГруппыЗатрат(НомерГруппыДоИзменения);
Если Не ОписаниеГруппыЗатрат.НомерГруппыЗатрат = 0 Тогда
ЗаполнитьЗависимыеСлужебныеРеквизитыГруппыЗатрат(ОписаниеГруппыЗатрат);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УдалитьГруппуЗатрат(ТекущийИдентификатор)
ТекущиеДанные = Объект.ВыходныеИзделия.НайтиПоИдентификатору(ТекущийИдентификатор);
ОписаниеГруппыЗатрат = ДанныеГруппыЗатратПоНомеруГруппыЗатрат(ТекущиеДанные.НомерГруппыЗатрат);
Если КоличествоИдентифицирующихСтрок(ОписаниеГруппыЗатрат) = 1 Тогда
ОписаниеГруппыЗатрат = ОписаниеГруппыЗатрат();
ОчиститьТЧПоГруппеЗатрат("ПобочныеИзделия", ТекущиеДанные.НомерГруппыЗатрат);
ОчиститьТЧПоГруппеЗатрат("ОбеспечениеМатериаламиИРаботами", ТекущиеДанные.НомерГруппыЗатрат);
ОчиститьТЧПоГруппеЗатрат("НаборыМатериаловИРабот", ТекущиеДанные.НомерГруппыЗатрат);
ОчиститьТЧПоГруппеЗатрат("Услуги", ТекущиеДанные.НомерГруппыЗатрат);
РассчитатьИтогиДокумента(ЭтотОбъект, "СуммаУслуг, СуммаЗалоговая");
СтруктураОтбора = Новый Структура("НомерГруппыЗатрат", ТекущиеДанные.НомерГруппыЗатрат);
НайденныеСтроки = ГруппыЗатрат.НайтиСтроки(СтруктураОтбора);
Для Каждого ТекГруппа Из НайденныеСтроки Цикл
ГруппыЗатрат.Удалить(ТекГруппа);
КоличествоГруппЗатрат = КоличествоГруппЗатрат - 1;
КонецЦикла;
Иначе
Возврат;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьНомерГруппыЗатратПоУмолчанию(ИмяТЧ, ТекущийИдентификатор)
ТекущиеДанные = Объект[ИмяТЧ].НайтиПоИдентификатору(ТекущийИдентификатор);
Если Не ТекущиеДанные = Неопределено
И ТекущиеДанные.НомерГруппыЗатрат = 0
И КоличествоГруппЗатрат = 1 Тогда
ТекущиеДанные.ГруппаЗатрат = ГруппыЗатрат[0].ГруппаЗатрат;
ТекущиеДанные.НомерГруппыЗатрат = ГруппыЗатрат[0].НомерГруппыЗатрат;
Если ИмяТЧ = "ОбеспечениеМатериаламиИРаботами" Тогда
ТекущиеДанные.Назначение =
?(ТекущиеДанные.Обособленно,
ГруппыЗатрат[0].НазначениеОбеспечения,
Неопределено);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСлужебныеРеквизитыГруппыЗатрат(ОписаниеГруппыЗатрат)
Документы.ЗаказПереработчику2_5.ЗаполнитьСлужебныеРеквизитыГруппыЗатрат(Объект, ГруппыЗатрат, ОписаниеГруппыЗатрат);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьЗависимыеСлужебныеРеквизитыГруппыЗатрат(ОписаниеГруппыЗатрат)
Документы.ЗаказПереработчику2_5.ЗаполнитьЗависимыеСлужебныеРеквизитыГруппыЗатрат(Объект, ГруппыЗатрат, ОписаниеГруппыЗатрат);
КонецПроцедуры
&НаСервере
Процедура ОбновитьГруппыЗатрат()
Документы.ЗаказПереработчику2_5.ОбновитьГруппыЗатрат(Объект, ГруппыЗатрат, КоличествоГруппЗатрат);
ОбновитьПредставлениеГруппЗатрат();
КонецПроцедуры
&НаСервере
Процедура ОбновитьПредставлениеГруппЗатрат()
Документы.ЗаказПереработчику2_5.ОбновитьПредставлениеГруппЗатрат(Объект, ГруппыЗатрат);
СтруктураОтбора = Новый Структура("НомерГруппыЗатрат");
Для Каждого ТекГруппа Из ГруппыЗатрат Цикл
ЗаполнитьЗначенияСвойств(СтруктураОтбора, ТекГруппа);
Строки = Объект.ВыходныеИзделия.НайтиСтроки(СтруктураОтбора);
Для Каждого ТекСтрока Из Строки Цикл
ТекСтрока.ГруппаЗатрат = ТекГруппа.ГруппаЗатрат;
КонецЦикла;
Строки = Объект.ПобочныеИзделия.НайтиСтроки(СтруктураОтбора);
Для Каждого ТекСтрока Из Строки Цикл
ТекСтрока.ГруппаЗатрат = ТекГруппа.ГруппаЗатрат;
КонецЦикла;
Строки = Объект.ОбеспечениеМатериаламиИРаботами.НайтиСтроки(СтруктураОтбора);
Для Каждого ТекСтрока Из Строки Цикл
ТекСтрока.ГруппаЗатрат = ТекГруппа.ГруппаЗатрат;
КонецЦикла;
Строки = Объект.Услуги.НайтиСтроки(СтруктураОтбора);
Для Каждого ТекСтрока Из Строки Цикл
ТекСтрока.ГруппаЗатрат = ТекГруппа.ГруппаЗатрат;
КонецЦикла;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ОбновитьСвязиСГруппойЗатрат(ТекущийНомерГруппы, ОписаниеГруппыЗатрат)
Если ТекущийНомерГруппы = 0
И Не ГруппыЗатрат.Количество() = 1 Тогда
Возврат;
КонецЕсли;
СтруктураОтбора = Новый Структура("НомерГруппыЗатрат", ТекущийНомерГруппы);
Строки = Объект.ПобочныеИзделия.НайтиСтроки(СтруктураОтбора);
Для Каждого ТекущиеДанные Из Строки Цикл
ТекущиеДанные.ГруппаЗатрат = ОписаниеГруппыЗатрат.ГруппаЗатрат;
ТекущиеДанные.НомерГруппыЗатрат = ОписаниеГруппыЗатрат.НомерГруппыЗатрат;
КонецЦикла;
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
Строки = Объект.ОбеспечениеМатериаламиИРаботами.НайтиСтроки(СтруктураОтбора);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить(
"ЗаполнитьНазначениеОбеспеченияВЭтапеПроизводства",
ОписаниеГруппыЗатрат.ПараметрыЗаполненияНазначений);
ОбрабатываемыеСтроки = Новый Массив();
Для Каждого ТекущиеДанные Из Строки Цикл
ТекущиеДанные.ГруппаЗатрат = ОписаниеГруппыЗатрат.ГруппаЗатрат;
ТекущиеДанные.НомерГруппыЗатрат = ОписаниеГруппыЗатрат.НомерГруппыЗатрат;
ТекущиеДанные.Назначение =
?(ТекущиеДанные.Обособленно,
ОписаниеГруппыЗатрат.НазначениеОбеспечения,
Неопределено);
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.ПобочныеИзделия,
КэшированныеЗначения);
Если Не Строки.Количество() = 0 Тогда
ОбновитьКолонкуДоступноНаСервере();
КонецЕсли;
Строки = Объект.Услуги.НайтиСтроки(СтруктураОтбора);
Для Каждого ТекущиеДанные Из Строки Цикл
ТекущиеДанные.ГруппаЗатрат = ОписаниеГруппыЗатрат.ГруппаЗатрат;
ТекущиеДанные.НомерГруппыЗатрат = ОписаниеГруппыЗатрат.НомерГруппыЗатрат;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ОчиститьТЧПоГруппеЗатрат(ИмяТЧ, ТекущийНомерГруппы)
Таблица = Объект[ИмяТЧ].Выгрузить();
Таблица.Индексы.Добавить("НомерГруппыЗатрат");
Отбор = Новый Структура("НомерГруппыЗатрат", ТекущийНомерГруппы);
НайденныеСтроки = Таблица.НайтиСтроки(Отбор);
Для Каждого ТекСтрока Из НайденныеСтроки Цикл
Таблица.Удалить(ТекСтрока);
КонецЦикла;
Объект[ИмяТЧ].Загрузить(Таблица);
КонецПроцедуры
&НаСервере
Функция ОтменитьСтрокиГруппыЗатрат(ИмяТЧ, Знач ВыделенныеСтроки)
ИмяПоляПричинаОтмены = "ПричинаОтмены";
ГруппыКОтмене = Новый Соответствие;
Для Каждого ТекСтрока Из ВыделенныеСтроки Цикл
ТекущиеДанные = Объект[ИмяТЧ].НайтиПоИдентификатору(ТекСтрока);
Если ТекущиеДанные.Отменено Тогда
ОписаниеГруппыЗатрат = ДанныеГруппыЗатратПоНомеруГруппыЗатрат(ТекущиеДанные.НомерГруппыЗатрат);
Если ОписаниеГруппыЗатрат.ИмяТаблицыИзделий = ИмяТЧ
И ОписаниеГруппыЗатрат.ВсеСтрокиИзделийОтменены Тогда
ГруппаКОтмене = ГруппыКОтмене.Получить(ТекущиеДанные.НомерГруппыЗатрат);
Если ГруппаКОтмене = Неопределено
Или ЗначениеЗаполнено(ТекущиеДанные[ИмяПоляПричинаОтмены]) Тогда
СтруктураОтмены = Новый Структура;
СтруктураОтмены.Вставить("ОписаниеГруппыЗатрат", ОписаниеГруппыЗатрат);
СтруктураОтмены.Вставить("ПричинаОтмены", ТекущиеДанные[ИмяПоляПричинаОтмены]);
ГруппыКОтмене.Вставить(ТекущиеДанные.НомерГруппыЗатрат, СтруктураОтмены);
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
ОтмененоСтрок = 0;
Для Каждого ТекГруппа Из ГруппыКОтмене Цикл
ОтмененоСтрок =
ОтмененоСтрок
+ ОтменитьСтрокиТЧПоГруппеЗатрат("ПобочныеИзделия", ТекГруппа.Ключ, ТекГруппа.Значение);
ОтмененоСтрок =
ОтмененоСтрок
+ ОтменитьСтрокиТЧПоГруппеЗатрат("ОбеспечениеМатериаламиИРаботами", ТекГруппа.Ключ, ТекГруппа.Значение);
ОтмененоСтрок =
ОтмененоСтрок
+ ОтменитьСтрокиТЧПоГруппеЗатрат("Услуги", ТекГруппа.Ключ, ТекГруппа.Значение);
КонецЦикла;
Если Не ОтмененоСтрок = 0 Тогда
ОбновитьКолонкуДоступноНаСервере();
ЗаполнитьЗависимыеСлужебныеРеквизитыОбеспечения(ЭтаФорма);
РассчитатьИтогиДокумента(ЭтаФорма);
КонецЕсли;
Возврат ОтмененоСтрок;
КонецФункции
&НаСервере
Функция ОтменитьСтрокиТЧПоГруппеЗатрат(ИмяТЧ, ТекущийНомерГруппы, СтруктураОтмены)
ОтмененоСтрок = 0;
Если ИмяТЧ = СтруктураОтмены.ОписаниеГруппыЗатрат.ИмяТаблицыИзделий Тогда
Возврат ОтмененоСтрок;
КонецЕсли;
ИмяПоляПричинаОтмены = "ПричинаОтмены";
СтруктураПричиныОтмены = Новый Структура(ИмяПоляПричинаОтмены, СтруктураОтмены.ПричинаОтмены);
Таблица = Объект[ИмяТЧ].Выгрузить();
Таблица.Индексы.Добавить("НомерГруппыЗатрат, Отменено");
Отбор = Новый Структура("НомерГруппыЗатрат, Отменено", ТекущийНомерГруппы, Ложь);
НайденныеСтроки = Таблица.НайтиСтроки(Отбор);
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
Для Каждого ТекущиеДанные Из НайденныеСтроки Цикл
Если ИмяТЧ = "ОбеспечениеМатериаламиИРаботами"
И ТекущиеДанные.ВариантОбеспечения = Перечисления.ВариантыОбеспечения.Отгрузить Тогда
Продолжить;
КонецЕсли;
ОтмененоСтрок = ОтмененоСтрок + 1;
ТекущиеДанные.Отменено = Истина;
ЗаполнитьЗначенияСвойств(ТекущиеДанные, СтруктураПричиныОтмены);
КонецЦикла;
Если ИмяТЧ = "ОбеспечениеМатериаламиИРаботами"
Или ИмяТЧ = "Услуги" Тогда
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты(ИмяТЧ));
ДобавитьДействияОбеспечения(
ЭтотОбъект,
ИмяТЧ,
СтруктураДействий,
"СкладОбязателен, ДатаОтгрузкиОбязательна");
Если ИмяТЧ = "ОбеспечениеМатериаламиИРаботами" Тогда
СтруктураДействий.Вставить(
"ПроверитьСериюРассчитатьСтатус",
Новый Структура("Склад, ПараметрыУказанияСерий, ТаблицаТоваров",
Объект.СкладМатериалов, ПараметрыУказанияСерий.ОбеспечениеМатериаламиИРаботами, Таблица));
КонецЕсли;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
НайденныеСтроки,
СтруктураДействий,
Таблица,
КэшированныеЗначения);
КонецЕсли;
Объект[ИмяТЧ].Загрузить(Таблица);
Возврат ОтмененоСтрок;
КонецФункции
&НаСервере
Функция ОписаниеГруппыЗатрат()
ОписаниеГруппыЗатрат = Новый Структура;
Колонки = ГруппыЗатрат.Выгрузить(Новый Массив).Колонки;
Для Каждого Колонка Из Колонки Цикл
ОписаниеГруппыЗатрат.Вставить(Колонка.Имя, Колонка.ТипЗначения.ПривестиЗначение());
КонецЦикла;
Возврат ОписаниеГруппыЗатрат;
КонецФункции
&НаСервере
Функция ДанныеГруппыЗатратПоНомеруГруппыЗатрат(ТекущийНомерГруппы)
СтруктураОтбора = Новый Структура("НомерГруппыЗатрат", ТекущийНомерГруппы);
Возврат ДанныеГруппыЗатрат(СтруктураОтбора);
КонецФункции
&НаСервере
Функция ДанныеГруппыЗатрат(СтруктураОтбора)
ОписаниеГруппыЗатрат = ОписаниеГруппыЗатрат();
НайденныеСтроки = ГруппыЗатрат.НайтиСтроки(СтруктураОтбора);
Если Не НайденныеСтроки.Количество() = 0 Тогда
ЗаполнитьЗначенияСвойств(ОписаниеГруппыЗатрат, НайденныеСтроки[0]);
КонецЕсли;
Возврат ОписаниеГруппыЗатрат;
КонецФункции
&НаСервере
Функция СтруктураОтбораГруппыЗатрат(ТекущиеДанные)
СписокПолей =
ПереработкаНаСторонеКлиентСервер.ПереченьПолейГруппыЗатратЗаказаПереработчику(Объект.ГруппировкаЗатрат);
СтруктураОтбора = ПереработкаНаСторонеКлиентСервер.СтруктураОтбораГруппыЗатрат(СписокПолей);
Если Не ТекущиеДанные = Неопределено Тогда
ЗаполнитьЗначенияСвойств(СтруктураОтбора, ТекущиеДанные);
КонецЕсли;
Возврат СтруктураОтбора;
КонецФункции
&НаСервере
Функция КоличествоИдентифицирующихСтрок(ОписаниеГруппыЗатрат)
СтруктураОтбора = Новый Структура("НомерГруппыЗатрат", ОписаниеГруппыЗатрат.НомерГруппыЗатрат);
НайденныеСтроки = Объект.ВыходныеИзделия.НайтиСтроки(СтруктураОтбора);
Возврат НайденныеСтроки.Количество();
КонецФункции
&НаСервере
Функция ПредставлениеГруппыЗатрат(Группа)
Возврат Документы.ЗаказПереработчику2_5.ПредставлениеГруппыЗатрат(Группа, Объект.ГруппировкаЗатрат);
КонецФункции
&НаСервере
Функция ПоместитьДанныеГруппЗатратВХранилище(ИмяТЧ)
Если ИмяТЧ = "ВыходныеИзделия"
Тогда
СтруктураОтбора = Неопределено;
Иначе
СтруктураОтбора = Новый Структура("ВсеСтрокиИзделийОтменены", Ложь);
КонецЕсли;
Таблица = ГруппыЗатрат.Выгрузить(СтруктураОтбора);
Возврат ПоместитьВоВременноеХранилище(Таблица, УникальныйИдентификатор);
КонецФункции
#КонецОбласти
#Область Обеспечение
&НаКлиентеНаСервереБезКонтекста
Функция ПараметрыДокументаДляДействийОбеспечения(Форма)
ПараметрыДокумента = Новый Структура();
ПараметрыДокумента.Вставить("Форма", Форма);
ПараметрыДокумента.Вставить("Коллекция", Форма.Объект.ОбеспечениеМатериаламиИРаботами);
ПараметрыДокумента.Вставить("ВариантОбеспеченияИФлагОбособленно", Неопределено);
Возврат ПараметрыДокумента;
КонецФункции
&НаСервере
Функция ПараметрыВыбораОбеспечения(Режим)
Возврат
ОбеспечениеВДокументахСервер.ПараметрыВыбораОбеспечения(
ЭтотОбъект,
Элементы.ОбеспечениеМатериаламиИРаботами.ТекущаяСтрока,
Режим);
КонецФункции
&НаКлиенте
Функция ПараметрыФормыЗапросаКоличестваИСерий(Режим)
ПараметрыПроверки =
ОбеспечениеКлиентСервер.ИнициализироватьПараметрыПроверкиЗаполнения(
"ОбеспечениеМатериаламиИРаботами",
НСтр("ru = 'Обеспечение'"));
ПараметрыПроверки.Поля.Удалить("Склад");
Если Не ОбеспечениеКлиент.ПроверитьЗаполнение(
Объект,
Объект.ОбеспечениеМатериаламиИРаботами,
Элементы.ОбеспечениеМатериаламиИРаботами.ТекущаяСтрока,
ПараметрыПроверки,
Неопределено,
Режим) Тогда
Возврат Неопределено;
КонецЕсли;
ПараметрыФормы = ПараметрыВыбораОбеспечения(Режим);
ПараметрыФормы.ПараметрыУказанияСерий = ПараметрыУказанияСерий.ОбеспечениеМатериаламиИРаботами;
Возврат ПараметрыФормы;
КонецФункции
&НаСервере
Функция АдресТаблицыДвиженийВХранилище()
Возврат ОбеспечениеВДокументахСервер.АдресТаблицыДвиженийВХранилище(ЭтаФорма);
КонецФункции
&НаКлиенте
Процедура ОбновитьКолонкуДоступноНаКлиенте(ИмяТЧ, СтруктураДействий, ТекущиеДанные)
Если Не ИмяТЧ = "ОбеспечениеМатериаламиИРаботами" Тогда
Возврат;
КонецЕсли;
Если ОбеспечениеВДокументахКлиент.ТребуетсяОбновитьКолонкуДоступно(СтруктураДействий) Тогда
ОбновитьКолонкуДоступноНаСервере();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбновитьКолонкуДоступноНаСервере()
ОбеспечениеВДокументахСервер.ОбновитьКолонкуДоступно(ЭтаФорма);
КонецПроцедуры
&НаСервере
Процедура ПослеЗаполненияОбеспечения(Изменения, Режим = Неопределено, ПараметрыЗаполнения = Неопределено)
Документы.ЗаказПереработчику2_5.ПослеЗаполненияОбеспечения(Объект, Изменения, Режим, ПараметрыЗаполнения);
ЗаказыСервер.ПересчитатьЗависимыеРеквизитыПослеРазбиенияСтрок(
Изменения,
"СуммаОтменено");
СтруктураДействий = Новый Структура;
ПредставленияГруппЗатрат = Новый Соответствие;
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
ДобавитьДействияОбеспечения(
ЭтотОбъект,
"ОбеспечениеМатериаламиИРаботами",
СтруктураДействий,
"СкладОбязателен,ДатаОтгрузкиОбязательна");
ОбрабатываемыеСтроки = Новый Массив();
КоллекцияНаФорме = ОбеспечениеВДокументахКлиентСервер.КоллекцияНаФорме(
ЭтотОбъект, ДоступныеОстаткиПараметрыВстраивания);
Для Каждого Изменение Из Изменения Цикл
ТекущиеДанные = Изменение.Строка;
Если ПредставленияГруппЗатрат.Получить(ТекущиеДанные.НомерГруппыЗатрат) = Неопределено Тогда
ТекущиеДанные.ГруппаЗатрат =
ПредставлениеГруппыЗатрат(ДанныеГруппыЗатратПоНомеруГруппыЗатрат(ТекущиеДанные.НомерГруппыЗатрат));
ПредставленияГруппЗатрат.Вставить(ТекущиеДанные.НомерГруппыЗатрат, ТекущиеДанные.ГруппаЗатрат);
КонецЕсли;
ОбрабатываемыеСтроки.Добавить(ТекущиеДанные);
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
КоллекцияНаФорме,
КэшированныеЗначения);
НастроитьЗависимыеЭлементыФормы(ЭтотОбъект, "НеОтгружатьЧастями");
РассчитатьИтогиДокумента(ЭтотОбъект);
ЗаполнитьЗависимыеСлужебныеРеквизитыОбеспечения(ЭтотОбъект);
ОбновитьКолонкуДоступноНаСервере();
КонецПроцедуры
#КонецОбласти
#Область Прочее
&НаКлиентеНаСервереБезКонтекста
Функция ЗависимыеРеквизиты(ИмяТЧ)
Результат = Новый Структура;
Если ИмяТЧ = "ОбеспечениеМатериаламиИРаботами" Тогда
Результат.Вставить("Отменено", "Сумма");
ИначеЕсли ИмяТЧ = "Услуги" Тогда
Результат.Вставить("Отменено", "СуммаСНДС, СуммаНДС");
КонецЕсли;
Возврат Результат;
КонецФункции
&НаКлиенте
Функция МаксимальнаяДатаАванса()
МаксДатаАванса = '00010101';
Для Каждого ТекЭтап Из Объект.ЭтапыГрафикаОплаты Цикл
Если ТекЭтап.ВариантОплаты = ПредопределенноеЗначение("Перечисление.ВариантыКонтроляОплатыПоставщику.ПредоплатаДоПоступления")
Или ТекЭтап.ВариантОплаты = ПредопределенноеЗначение("Перечисление.ВариантыКонтроляОплатыПоставщику.АвансДоПодтверждения") Тогда
МаксДатаАванса = Макс(МаксДатаАванса, ТекЭтап.ДатаПлатежа);
КонецЕсли;
КонецЦикла;
Возврат МаксДатаАванса;
КонецФункции
&НаСервереБезКонтекста
Функция ДанныеВыбораСкладов(Склад)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| Склады.Ссылка КАК Ссылка
|ИЗ
| Справочник.Склады КАК Склады
|ГДЕ
| Склады.Ссылка В ИЕРАРХИИ(&ГруппаСкладов)
| И Склады.ЭтоГруппа = ЛОЖЬ
| И Склады.ВыборГруппы <> ЗНАЧЕНИЕ(Перечисление.ВыборГруппыСкладов.Запретить)
|";
Запрос.УстановитьПараметр("ГруппаСкладов", Склад);
МассивСкладов = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");
Возврат МассивСкладов;
КонецФункции
&НаКлиенте
Процедура ОбработатьИзменениеАдреса(Элемент, ИмяРеквизитаАдреса)
ИменаРеквизитов = ДоставкаТоваровКлиентСервер.ИменаРеквизитовАдресовДоставки(ИмяРеквизитаАдреса);
Если ПустаяСтрока(Объект[ИменаРеквизитов.ИмяРеквизитаАдресаДоставки]) Тогда
ДоставкаТоваровКлиент.ОчиститьПредставлениеАдреса(
Объект[ИменаРеквизитов.ИмяРеквизитаАдресаДоставки],
Объект[ИменаРеквизитов.ИмяРеквизитаАдресаДоставкиЗначенияПолей],
Объект[ИменаРеквизитов.ИмяРеквизитаАдресаДоставкиЗначение]);
Иначе
ДоставкаТоваровКлиент.ПриИзмененииПредставленияАдреса(
Элемент,
Объект[ИменаРеквизитов.ИмяРеквизитаАдресаДоставки],
Объект[ИменаРеквизитов.ИмяРеквизитаАдресаДоставкиЗначение]);
АдресДоставкиПриИзмененииНаСервере(
Объект[ИменаРеквизитов.ИмяРеквизитаАдресаДоставки],
Объект[ИменаРеквизитов.ИмяРеквизитаАдресаДоставкиЗначение],
Объект[ИменаРеквизитов.ИмяРеквизитаАдресаДоставкиЗначенияПолей]);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура АдресДоставкиПриИзмененииНаСервере(Адрес, АдресЗначение, АдресЗначенияПолей)
АдресВСвободнойФорме = УправлениеКонтактнойИнформацией.АдресВведенВСвободнойФорме(АдресЗначение);
Если НЕ АдресВСвободнойФорме Тогда
ДанныеСтраны = УправлениеКонтактнойИнформацией.СтранаАдресаКонтактнойИнформации(АдресЗначение);
НоваяСтруктураАдреса = УправлениеКонтактнойИнформацией.СведенияОбАдресе();
НоваяСтруктураАдреса.Представление = Адрес;
НоваяСтруктураАдреса.Страна = ДанныеСтраны.Наименование;
НоваяСтруктураАдреса.КодСтраны = ДанныеСтраны.Код;
АдресЗначение = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияВJSON(
НоваяСтруктураАдреса,
Перечисления.ТипыКонтактнойИнформации.Адрес);
УстановитьТипАдресаВСвободнойФорме(АдресЗначение);
КонецЕсли;
АдресЗначенияПолей = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияВXML(
АдресЗначение,
Адрес,
Перечисления.ТипыКонтактнойИнформации.Адрес);
КонецПроцедуры
&НаСервереБезКонтекста
Процедура УстановитьТипАдресаВСвободнойФорме(АдресДоставкиЗначение)
СтрокаЗаменяемыйТип = """addressType"": ""Административно-территориальный""";
СтрокаСвободныйТип = """addressType"": ""ВСвободнойФорме""";
АдресДоставкиЗначение = СтрЗаменить(АдресДоставкиЗначение, СтрокаЗаменяемыйТип, СтрокаСвободныйТип);
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#Область Инициализация
ОтветПередЗаписью = Ложь;
#КонецОбласти