#Область ОписаниеПеременных
&НаКлиенте
Перем КэшированныеЗначения;
&НаКлиенте
Перем ТекущиеДанныеИдентификатор;
&НаКлиенте
Перем ПроверкаКонтрагентовПараметрыОбработчикаОжидания Экспорт;
&НаКлиенте
Перем ФормаДлительнойОперации Экспорт;
&НаКлиенте
Перем ПараметрыДляЗаписи Экспорт;
#КонецОбласти
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
УстановитьУсловноеОформление();
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(Объект, ЭтотОбъект);
ИсправлениеДокументов.ПриСозданииНаСервере(ЭтотОбъект, Элементы.СтрокаИсправление);
Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
ПриЧтенииСозданииНаСервере();
КонецЕсли;
Справочники.Назначения.ФормаДокументаПриСозданииНаСервере(ЭтотОбъект);
ПараметрыВыбораСтатейИАналитик = Документы.ОтчетПереработчика2_5.ПараметрыВыбораСтатейИАналитик();
ДоходыИРасходыСервер.ПриСозданииНаСервере(ЭтотОбъект, ПараметрыВыбораСтатейИАналитик);
ПараметрыНастройки = Документы.ОтчетПереработчика2_5.ПараметрыНастройкиСчетовУчета();
НастройкаСчетовУчетаСервер.ПриСозданииНаСервере(ЭтотОбъект, ПараметрыНастройки);
ВзаиморасчетыСервер.ФормаПриСозданииНаСервере(ЭтотОбъект);
ПроверкаКонтрагентов.ПриСозданииНаСервереДокумент(ЭтотОбъект, Параметры);
ПроверкаКонтрагентовВызовСервераПереопределяемыйУТ.ФормаДокументаПриСозданииНаСервере(ЭтотОбъект);
#Область СтандартныеМеханизмы
ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект);
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("Объект", Объект);
ДополнительныеПараметры.Вставить("ИмяЭлементаДляРазмещения", "ГруппаДополнительныеРеквизиты");
ДополнительныеПараметры.Вставить("ОтложеннаяИнициализация", Истина);
УправлениеСвойствами.ПриСозданииНаСервере(ЭтотОбъект, ДополнительныеПараметры);
ОбщегоНазначенияУТ.НастроитьПодключаемоеОборудование(ЭтотОбъект, "ВыходныеИзделия,ПобочныеИзделия,МатериалыИРаботы");
ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПриСозданииНаСервере(ЭтотОбъект);
ПараметрыГиперссылки = РаботаСФайлами.ГиперссылкаФайлов();
ПараметрыГиперссылки.Размещение = "КоманднаяПанель";
РаботаСФайлами.ПриСозданииНаСервере(ЭтотОбъект, ПараметрыГиперссылки);
УчетОригиналовПервичныхДокументов.ПриСозданииНаСервере_ФормаДокумента(ЭтотОбъект);
СобытияФорм.ПриСозданииНаСервере(ЭтотОбъект, Отказ, СтандартнаяОбработка);
#КонецОбласти
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
ПриЧтенииСозданииНаСервере();
ДатыЗапретаИзменения.ОбъектПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
ИсправлениеДокументов.ПриЧтенииНаСервере(ЭтотОбъект, Элементы.СтрокаИсправление);
ПараметрыВыбораСтатейИАналитик = Документы.ОтчетПереработчика2_5.ПараметрыВыбораСтатейИАналитик();
ДоходыИРасходыСервер.ПриЧтенииНаСервере(ЭтотОбъект, ПараметрыВыбораСтатейИАналитик);
ПараметрыНастройки = Документы.ОтчетПереработчика2_5.ПараметрыНастройкиСчетовУчета();
НастройкаСчетовУчетаСервер.ПриЧтенииНаСервере(ЭтотОбъект, ПараметрыНастройки);
ВзаиморасчетыСервер.ФормаПриЧтенииНаСервере(ЭтотОбъект);
УправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
УправлениеСвойствами.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
СобытияФорм.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
КонецПроцедуры
&НаСервере
Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
УправлениеСвойствами.ОбработкаПроверкиЗаполнения(ЭтотОбъект, Отказ, ПроверяемыеРеквизиты);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
СобытияФормКлиент.ПередЗаписью(ЭтотОбъект, Отказ, ПараметрыЗаписи);
ПередЗаписьюНаКлиентеСервер();
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаКлиентеСервер()
ВзаиморасчетыВызовСервера.ФормаПередЗаписьюНаКлиентеСервер(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
НастройкаСчетовУчетаСервер.ПередЗаписьюНаСервере(ЭтотОбъект, ТекущийОбъект);
ПроверкаКонтрагентов.ПередЗаписьюНаСервереДокумент(ЭтотОбъект, ТекущийОбъект);
УправлениеСвойствами.ПередЗаписьюНаСервере(ЭтотОбъект, ТекущийОбъект);
ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПередЗаписьюНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
ВзаиморасчетыСервер.ПередЗаписьюНаСервере(ЭтаФорма, ТекущийОбъект);
МодификацияКонфигурацииПереопределяемый.ПередЗаписьюНаСервере(ЭтотОбъект, Отказ, ТекущийОбъект, ПараметрыЗаписи);
КонецПроцедуры
&НаСервере
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
ПроверкаКонтрагентов.ПриЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект);
КонецПроцедуры
&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
ЗаполнитьСлужебныеРеквизиты();
ЗаполнитьЗависимыеСлужебныеРеквизитыНаСервере();
ЗаполнитьСлужебныеРеквизитыТабличныхЧастей();
ОбновитьГруппыЗатрат();
ДоходыИРасходыСервер.ПослеЗаписиНаСервере(ЭтотОбъект);
НастройкаСчетовУчетаСервер.ПослеЗаписиНаСервере(ЭтотОбъект);
ВзаиморасчетыСервер.ФормаПослеЗаписиНаСервере(ЭтотОбъект);
РассчитатьИтогиДокумента(ЭтотОбъект);
НастроитьЭлементыФормы();
УстановитьПодпискуНаСобытияИзмененияЭлементовФормы();
ПроверкаКонтрагентов.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект);
УправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
СобытияФорм.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
ОбеспечениеВДокументахСервер.ПроверитьЗапуститьФоновоеЗаданиеРаспределенияЗапасов();
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
ПараметрыЗаписи.Вставить("КлючиДокументаОповещение", РаботаСЖурналамиДокументовКлиент.ПолучитьПараметрыКлючаПоДокументу(
Объект.Ссылка, Объект.Дата, Объект.ХозяйственнаяОперация));
Оповестить("Запись_ОтчетПереработчика2_5", ПараметрыЗаписи, Объект.Ссылка);
ПодключаемыеКомандыКлиент.ПослеЗаписи(ЭтотОбъект, Объект, ПараметрыЗаписи);
МодификацияКонфигурацииКлиентПереопределяемый.ПослеЗаписи(ЭтотОбъект, ПараметрыЗаписи);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если УправлениеСвойствамиКлиент.ОбрабатыватьОповещения(ЭтотОбъект, ИмяСобытия, Параметр) Тогда
ОбновитьЭлементыДополнительныхРеквизитов();
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
КонецЕсли;
Если Источник = "ПодключаемоеОборудование" И ВводДоступен() Тогда
Если ИмяСобытия = "ScanData" И МенеджерОборудованияУТКлиент.ЕстьНеобработанноеСобытие() Тогда
Данные = МенеджерОборудованияУТКлиент.ПреобразоватьДанныеСоСканераВМассив(Параметр);
Если Элементы.ГруппаСтраницы.ТекущаяСтраница = Элементы.ГруппаМатериалыИРаботы Тогда
ОбработатьШтрихкоды(Данные, "МатериалыИРаботы");
Иначе
ОбработатьШтрихкоды(Данные, "ВыходныеИзделия");
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если Источник = "ПодключаемоеОборудование"
И ИмяСобытия = "НеизвестныеШтрихкоды"
И Параметр.ФормаВладелец = УникальныйИдентификатор Тогда
КэшированныеЗначения.Штрихкоды.Очистить();
ДанныеШтрихкодов = Новый Массив;
Для Каждого ПолученныйШтрихкод Из Параметр.ПолученыНовыеШтрихкоды Цикл
ДанныеШтрихкодов.Добавить(ПолученныйШтрихкод);
КонецЦикла;
Для Каждого ПолученныйШтрихкод Из Параметр.ЗарегистрированныеШтрихкоды Цикл
ДанныеШтрихкодов.Добавить(ПолученныйШтрихкод);
КонецЦикла;
Если Элементы.ГруппаСтраницы.ТекущаяСтраница = Элементы.ГруппаМатериалыИРаботы Тогда
ОбработатьШтрихкоды(ДанныеШтрихкодов, "МатериалыИРаботы");
Иначе
ОбработатьШтрихкоды(ДанныеШтрихкодов, "ВыходныеИзделия");
КонецЕсли;
КонецЕсли;
Если ВзаиморасчетыКлиент.НуженВызовОбработкиОповещения(ЭтотОбъект, ИмяСобытия, Параметр) Тогда
ОбработкаОповещенияВзаиморасчетыНаСервере(ИмяСобытия, Параметр);
КонецЕсли;
Если ИмяСобытия = "Запись_КорректировкаПриобретения"
И ТипЗнч(Параметр) = Тип("Структура")
И Параметр.Свойство("ДокументОснование")
И Параметр.ДокументОснование = Объект.Ссылка Тогда
ОбновитьПризнакЕстьКорректировки();
НастроитьЗависимыеЭлементыФормы(ЭтотОбъект, "ЕстьКорректировки");
КонецЕсли;
Если ИмяСобытия = "КопированиеСтрокВБуферОбмена" Тогда
НастроитьКомандыБуфераОбмена(ЭтотОбъект, Истина);
КонецЕсли;
ИсправлениеДокументовКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия, Параметр, Источник);
ПроверкаКонтрагентовКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия, Параметр, Источник);
РаботаСФайламиКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия);
УчетОригиналовПервичныхДокументовКлиент.ОбработчикОповещенияФормаДокумента(ИмяСобытия, ЭтотОбъект);
СобытияФормКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия, Параметр, Источник);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)
Если УчетНДСУПКлиент.ЗаконченоРедактированиеСчетаФактурыПолученного(ВыбранноеЗначение, ИсточникВыбора) Тогда
ОбновитьТекстСчетаФактуры(Новый Структура);
ИначеЕсли ИсточникВыбора.ИмяФормы = "Обработка.ПодборТоваровВДокументПродажи.Форма.Форма" Тогда
ОбработкаВыбораПодборНаКлиенте(ВыбранноеЗначение, "МатериалыИРаботы");
ИначеЕсли ИсточникВыбора.ИмяФормы = "Обработка.ПодборТоваровВДокументЗакупки.Форма.Форма" Тогда
ОбработкаВыбораПодборНаКлиенте(ВыбранноеЗначение, "Услуги");
ИначеЕсли ИсточникВыбора.ИмяФормы = "Обработка.ПодборТоваровПереданныхНаОтветственноеХранение.Форма.Форма" Тогда
ОбработкаВыбораПодборПереданныхТоваров(ВыбранноеЗначение);
ИначеЕсли ИсточникВыбора <> Неопределено
И ТипЗнч(ИсточникВыбора) = Тип("ФормаКлиентскогоПриложения")
И ИсточникВыбора.ИмяФормы = "ОбщаяФорма.ВводДолиСтоимости" Тогда
ТекущиеДанные = ТекущийЭлемент.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
ОбработкаВводаДолиСтоимости(ТекущийЭлемент, ТекущиеДанные, ВыбранноеЗначение);
ИначеЕсли НоменклатураКлиент.ЭтоУказаниеСерий(ИсточникВыбора) Тогда
НоменклатураКлиент.ОбработатьУказаниеСерии(ЭтотОбъект, ПараметрыУказанияСерий[ВыбранноеЗначение.ИмяТЧ], ВыбранноеЗначение);
ТоварыСерияПересчитатьЦены(, ВыбранноеЗначение.ИмяТЧ);
Если ВыбранноеЗначение.ИмяТЧ = "ВыходныеИзделия" Тогда
РассчитатьПроцентРаспределенияЗатратНаВыходныеИзделия();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаНавигационнойСсылки(НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СобытияФормКлиент.ОбработкаНавигационнойСсылки(ЭтотОбъект, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
МенеджерОборудованияКлиент.НачатьПодключениеОборудованиеПриОткрытииФормы(Неопределено, ЭтотОбъект, "СканерШтрихкода");
ПроверкаКонтрагентовКлиент.ПриОткрытииДокумент(ЭтотОбъект);
ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
РаботаСФайламиКлиент.ПриОткрытии(ЭтотОбъект, Отказ);
КонецПроцедуры
&НаКлиенте
Процедура ПриЗакрытии(ЗавершениеРаботы)
МенеджерОборудованияКлиент.НачатьОтключениеОборудованиеПриЗакрытииФормы(Неопределено, ЭтотОбъект);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура СтрокаИсправлениеОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
ИсправлениеДокументовКлиент.СтрокаИсправлениеОбработкаНавигационныйСсылки(
ЭтотОбъект, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка);
КонецПроцедуры
#Область Основное
&НаКлиенте
Процедура ГруппаСтраницыПриСменеСтраницы(Элемент, ТекущаяСтраница)
Если ТекущаяСтраница.Имя = "ГруппаДополнительно"
И Не ЭтотОбъект.ПараметрыСвойств.ВыполненаОтложеннаяИнициализация Тогда
СвойстваВыполнитьОтложеннуюИнициализацию();
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
КонецЕсли;
Если ТекущаяСтраница.Имя = "ГруппаОсновное" Тогда
ВзаиморасчетыКлиент.ОбновитьТекстГиперссылкиЭтапыОплаты(ЭтотОбъект);
ВзаиморасчетыКлиентСервер.ОбновитьТекстГиперссылкиВалюты(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура НакладнаяПоЗаказуПриИзменении(Элемент)
Если Объект.ПоЗаказам Тогда
ПодборПоЗаказамПереработчикам();
Иначе
ТекстВопроса =
НСтр("ru = 'Выходные изделия, побочные изделия, материалы и работы, услуги будут очищены.
|Продолжить?'");
ОписаниеОповещения = Новый ОписаниеОповещения("СнятьНакладнаяПоЗаказуЗавершение", ЭтотОбъект);
ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДатаПриИзменении(Элемент)
ДатаПриИзмененииНаСервере();
ПроверкаКонтрагентовКлиент.ЗапуститьПроверкуКонтрагентовВДокументе(ЭтотОбъект, Объект.Дата);
КонецПроцедуры
&НаКлиенте
Процедура ПартнерПриИзменении(Элемент)
ПартнерПриИзмененииНаСервере();
ПроверкаКонтрагентовКлиент.ЗапуститьПроверкуКонтрагентовВДокументе(ЭтотОбъект, Элемент);
КонецПроцедуры
&НаКлиенте
Процедура КонтрагентПриИзменении(Элемент)
КонтрагентПриИзмененииНаСервере();
ПроверкаКонтрагентовКлиент.ЗапуститьПроверкуКонтрагентовВДокументе(ЭтотОбъект, Элемент);
КонецПроцедуры
&НаКлиенте
Процедура ДоговорПриИзменении(Элемент)
ДоговорПриИзмененииНаСервере(Неопределено);
КонецПроцедуры
&НаКлиенте
Процедура ОрганизацияПриИзменении(Элемент)
ОрганизацияПриИзмененииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура УслугиПоПереработкеПриИзменении(Элемент)
УслугиПоПереработкеПриИзмененииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура ГруппировкаЗатратПриИзменении(Элемент)
Если ГруппировкаЗатратДоИзменения = Объект.ГруппировкаЗатрат Тогда
Возврат;
КонецЕсли;
ОценкаПроизводительностиКлиент.ЗамерВремени(
"Документ.ОтчетПереработчика2_5.Форма.ФормаДокумента.ГруппировкаЗатратПриИзменении");
ГруппировкаЗатратПриИзмененииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура СпособРаспределенияЗатратНаВыходныеИзделияПриИзменении(Элемент)
СпособРаспределенияЗатратНаВыходныеИзделияПриИзмененииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура НадписьЭтапыОплатыНажатие(Элемент, СтандартнаяОбработка)
Оповещение = Новый ОписаниеОповещения("НадписьЭтапыОплатыНажатиеЗавершение", ЭтотОбъект);
ПоместитьЭтапыОплатыВоВременноеХранилище(Элемент.Имя);
ВзаиморасчетыКлиент.НадписьЭтапыОплатыНажатие(ЭтотОбъект, Элемент, СтандартнаяОбработка, Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура РасчетыНажатие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОтчетыУТКлиентПереопределяемый.ОткрытьОтчетКарточкаРасчетовСПоставщиками("КарточкаРасчетовСПоставщикамиПоДокументамКонтекст", Объект.Ссылка);
КонецПроцедуры
&НаКлиенте
Процедура НадписьВалютыНажатие(Элемент, СтандартнаяОбработка)
Оповещение = Новый ОписаниеОповещения("НадписьВалютыНажатиеЗавершение", ЭтотОбъект);
ВзаиморасчетыКлиент.ВалютыИКурсДокументаНажатие(ЭтотОбъект, Элемент, СтандартнаяОбработка, Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ТекстСчетаФактурыПолученныеОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылка, СтандартнаяОбработка)
ПараметрыРегистрации = УчетНДСУПКлиентСервер.ПараметрыРегистрацииСчетовФактурПолученных();
ПараметрыРегистрации.Ссылка = Объект.Ссылка;
ПараметрыРегистрации.Дата = Объект.Дата;
ПараметрыРегистрации.Организация = Объект.Организация;
ПараметрыРегистрации.Контрагент = Объект.Контрагент;
ПараметрыРегистрации.НалогообложениеНДС = Объект.НалогообложениеНДС;
ПараметрыРегистрации.ПриобретениеТоваровРаботУслуг = Истина;
УчетНДСУПКлиент.ОбработкаНавигационнойСсылкиСчетаФактурыПолученные(
ЭтотОбъект,
НавигационнаяСсылка,
СтандартнаяОбработка,
ПараметрыРегистрации);
КонецПроцедуры
#КонецОбласти
#Область Дополнительно
&НаКлиенте
Процедура МенеджерПриИзменении(Элемент)
ЗаполнитьПодчиненныеСвойстваПоСтатистике("Менеджер");
КонецПроцедуры
&НаКлиенте
Процедура НомерВходящегоДокументаОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, СтандартнаяОбработка)
СписокОтчетовПоНомеру = ОтчетыПоДаннымПереработчика(Объект.Ссылка, Объект.Контрагент, Текст);
Если СписокОтчетовПоНомеру.Количество() = 0 Тогда
Возврат;
КонецЕсли;
СписокКнопок = Новый СписокЗначений;
Если СписокОтчетовПоНомеру.Количество() = 1 Тогда
ТекстВопроса = НСтр("ru='В информационной базе уже существует заказ с таким же номером по данным переработчика. Продолжить?'");
СписокКнопок.Добавить("ОткрытьСписокЗаказов", НСтр("ru = 'Открыть заказ'"));
Иначе
ТекстВопроса = НСтр("ru='В информационной базе уже существуют заказы с таким же номером по данным переработчика. Продолжить?'");
СписокКнопок.Добавить("ОткрытьСписокЗаказов", НСтр("ru = 'Открыть список заказов'"));
КонецЕсли;
СписокКнопок.Добавить("Продолжить", НСтр("ru = 'Продолжить'"));
ОписаниеОповещения =
Новый ОписаниеОповещения(
"НомерВходящегоДокументаОкончаниеВводаТекстаЗавершение",
ЭтотОбъект,
Новый Структура("СписокЗаказов", СписокОтчетовПоНомеру));
ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, СписокКнопок);
КонецПроцедуры
&НаКлиенте
Процедура ЦенаВключаетНДСПриИзменении(Элемент)
ЦенаВключаетНДСПриИзмененииНаСервере(КэшированныеЗначения);
КонецПроцедуры
&НаКлиенте
Процедура НалогообложениеНДСПриИзменении(Элемент)
НалогообложениеНДСПриИзмененииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура ЗакупкаПодДеятельностьОчистка(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
КонецПроцедуры
&НаКлиенте
Процедура ВидЦеныПриИзменении(Элемент)
Если ЗначениеЗаполнено(Объект.ВидЦены)
И (Объект.ПобочныеИзделия.Количество()
Или Объект.МатериалыИРаботы.Количество()) Тогда
ОписаниеОповещения = Новый ОписаниеОповещения("ВидЦеныПриИзмененииЗавершение", ЭтотОбъект);
ТекстВопроса = НСтр("ru = 'Перезаполнить цены в табличных частях?'");
ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура НаправлениеДеятельностиПриИзменении(Элемент)
НаправлениеДеятельностиПриИзмененииНаСервере();
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыВыходныеИзделия
&НаКлиенте
Процедура ВыходныеИзделияВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
ТаблицаВыбор("ВыходныеИзделия", Поле, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
ОбработкаВыбораПодборНаСервере(ВыбранноеЗначение, "ВыходныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
ТаблицаПриНачалеРедактирования("ВыходныеИзделия", НоваяСтрока, Копирование);
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияПередУдалением(Элемент, Отказ)
ТаблицаПередУдалением("ВыходныеИзделия", Элемент, Отказ);
КонецПроцедуры
&НаСервере
Процедура ВыходныеИзделияУдалениемНаСервере()
Для Каждого ТекИдентификатор Из Элементы.ВыходныеИзделия.ВыделенныеСтроки Цикл
УдалитьГруппуЗатрат(ТекИдентификатор);
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияПриИзменении(Элемент)
ТаблицаПриИзменении("ВыходныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияПослеУдаления(Элемент)
ТаблицаПослеУдаления("ВыходныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияПередОкончаниемРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования, Отказ)
ТаблицаПередОкончаниемРедактирования("ВыходныеИзделия", Элемент, НоваяСтрока, ОтменаРедактирования, Отказ);
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияГруппаЗатратОчистка(Элемент, СтандартнаяОбработка)
ТаблицаГруппаЗатратОчистка("ВыходныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияГруппаЗатратОткрытие(Элемент, СтандартнаяОбработка)
ТаблицаГруппаЗатратОткрытие("ВыходныеИзделия", СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияГруппаЗатратНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ТаблицаГруппаЗатратНачалоВыбора("ВыходныеИзделия", СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияНоменклатураПриИзменении(Элемент)
ТаблицаНоменклатураПриИзменении("ВыходныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияХарактеристикаПриИзменении(Элемент)
ТаблицаХарактеристикаПриИзменении("ВыходныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияСерияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ТаблицаСерияНачалоВыбора("ВыходныеИзделия", Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияСерияПриИзменении(Элемент)
ТаблицаСерияПриИзменении("ВыходныеИзделия");
ТоварыСерияПересчитатьЦены(, "ВыходныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияУпаковкаПриИзменении(Элемент)
ТаблицаУпаковкаПриИзменении("ВыходныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияКоличествоУпаковокПриИзменении(Элемент)
ТаблицаКоличествоУпаковокПриИзменении("ВыходныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияЦенаПриИзменении(Элемент)
ТаблицаЦенаПриИзменении("ВыходныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияСуммаПриИзменении(Элемент)
ТаблицаСуммаПриИзменении("ВыходныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияСписатьНаРасходыПриИзменении(Элемент)
ТаблицаСписатьНаРасходыПриИзменении("ВыходныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияСтатьяРасходовНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ТаблицаСтатьяРасходовВыбор(Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияСтатьяРасходовПриИзменении(Элемент)
ТаблицаСтатьяРасходовПриИзменении(Элемент);
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияАналитикаРасходовНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ТаблицаАналитикаРасходовНачалоВыбора(Элемент, СтандартнаяОбработка)
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияАналитикаРасходовАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)
ТаблицаАналитикаРасходовАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияАналитикаРасходовОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка)
ТаблицаАналитикаРасходовОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыПобочныеИзделия
&НаКлиенте
Процедура ПобочныеИзделияВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
ТаблицаВыбор("ПобочныеИзделия", Поле, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
ОбработкаВыбораПодборНаСервере(ВыбранноеЗначение, "ПобочныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
ТаблицаПриНачалеРедактирования("ПобочныеИзделия", НоваяСтрока, Копирование);
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияПриИзменении(Элемент)
ТаблицаПриИзменении("ПобочныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияПередУдалением(Элемент, Отказ)
ТаблицаПередУдалением("ПобочныеИзделия", Элемент, Отказ);
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияПослеУдаления(Элемент)
ТаблицаПослеУдаления("ПобочныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияПередОкончаниемРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования, Отказ)
ТаблицаПередОкончаниемРедактирования("ПобочныеИзделия", Элемент, НоваяСтрока, ОтменаРедактирования, Отказ);
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияГруппаЗатратОчистка(Элемент, СтандартнаяОбработка)
ТаблицаГруппаЗатратОчистка("ПобочныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияГруппаЗатратОткрытие(Элемент, СтандартнаяОбработка)
ТаблицаГруппаЗатратОткрытие("ПобочныеИзделия", СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияГруппаЗатратНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ТаблицаГруппаЗатратНачалоВыбора("ПобочныеИзделия", СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияНоменклатураПриИзменении(Элемент)
ТаблицаНоменклатураПриИзменении("ПобочныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияХарактеристикаПриИзменении(Элемент)
ТаблицаХарактеристикаПриИзменении("ПобочныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияСерияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ТаблицаСерияНачалоВыбора("ПобочныеИзделия", Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияСерияПриИзменении(Элемент)
ТаблицаСерияПриИзменении("ПобочныеИзделия");
ТоварыСерияПересчитатьЦены(, "ПобочныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияУпаковкаПриИзменении(Элемент)
ТаблицаУпаковкаПриИзменении("ПобочныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияКоличествоУпаковокПриИзменении(Элемент)
ТаблицаКоличествоУпаковокПриИзменении("ПобочныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияЦенаПриИзменении(Элемент)
ТаблицаЦенаПриИзменении("ПобочныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияСуммаПриИзменении(Элемент)
ТаблицаСуммаПриИзменении("ПобочныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияСписатьНаРасходыПриИзменении(Элемент)
ТаблицаСписатьНаРасходыПриИзменении("ПобочныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияСтатьяРасходовНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ТаблицаСтатьяРасходовВыбор(Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияСтатьяРасходовПриИзменении(Элемент)
ТаблицаСтатьяРасходовПриИзменении(Элемент);
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияАналитикаРасходовНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ТаблицаАналитикаРасходовНачалоВыбора(Элемент, СтандартнаяОбработка)
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияАналитикаРасходовАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)
ТаблицаАналитикаРасходовАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияАналитикаРасходовОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка)
ТаблицаАналитикаРасходовОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыМатериалыИРаботы
&НаКлиенте
Процедура МатериалыИРаботыВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
ТаблицаВыбор("МатериалыИРаботы", Поле, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура МатериалыИРаботыПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
ТаблицаПриНачалеРедактирования("МатериалыИРаботы", НоваяСтрока, Копирование);
КонецПроцедуры
&НаКлиенте
Процедура МатериалыИРаботыПриИзменении(Элемент)
ТаблицаПриИзменении("МатериалыИРаботы");
КонецПроцедуры
&НаКлиенте
Процедура МатериалыИРаботыПередОкончаниемРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования, Отказ)
ТаблицаПередОкончаниемРедактирования("МатериалыИРаботы", Элемент, НоваяСтрока, ОтменаРедактирования, Отказ);
КонецПроцедуры
&НаКлиенте
Процедура МатериалыИРаботыПередУдалением(Элемент, Отказ)
ТаблицаПередУдалением("МатериалыИРаботы", Элемент, Отказ);
КонецПроцедуры
&НаКлиенте
Процедура МатериалыИРаботыПослеУдаления(Элемент)
ТаблицаПослеУдаления("МатериалыИРаботы");
КонецПроцедуры
&НаКлиенте
Процедура МатериалыИРаботыОсновнойПриИзменении(Элемент)
ТекущиеДанные = Элементы.МатериалыИРаботы.ТекущиеДанные;
Если ТекущиеДанные.Основной Тогда
МатериалыИРаботыОсновнойПриИзмененииНаСервере(ТекущиеДанные.ПолучитьИдентификатор());
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура МатериалыИРаботыГруппаЗатратОчистка(Элемент, СтандартнаяОбработка)
ТаблицаГруппаЗатратОчистка("МатериалыИРаботы");
КонецПроцедуры
&НаКлиенте
Процедура МатериалыИРаботыГруппаЗатратОткрытие(Элемент, СтандартнаяОбработка)
ТаблицаГруппаЗатратОткрытие("МатериалыИРаботы", СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура МатериалыИРаботыГруппаЗатратНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ТаблицаГруппаЗатратНачалоВыбора("МатериалыИРаботы", СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура МатериалыИРаботыНоменклатураПриИзменении(Элемент)
ТаблицаНоменклатураПриИзменении("МатериалыИРаботы");
КонецПроцедуры
&НаКлиенте
Процедура МатериалыИРаботыХарактеристикаПриИзменении(Элемент)
ТаблицаХарактеристикаПриИзменении("МатериалыИРаботы");
КонецПроцедуры
&НаКлиенте
Процедура МатериалыИРаботыСерияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ТаблицаСерияНачалоВыбора("МатериалыИРаботы", Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура МатериалыИРаботыСерияПриИзменении(Элемент)
ТаблицаСерияПриИзменении("МатериалыИРаботы");
КонецПроцедуры
&НаКлиенте
Процедура МатериалыИРаботыУпаковкаПриИзменении(Элемент)
ТаблицаУпаковкаПриИзменении("МатериалыИРаботы");
КонецПроцедуры
&НаКлиенте
Процедура МатериалыИРаботыКоличествоУпаковокПриИзменении(Элемент)
ТаблицаКоличествоУпаковокПриИзменении("МатериалыИРаботы");
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыУслуги
&НаКлиенте
Процедура УслугиВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
ТаблицаВыбор("Услуги", Поле, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура УслугиПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
ТаблицаПриНачалеРедактирования("Услуги", НоваяСтрока, Копирование);
КонецПроцедуры
&НаКлиенте
Процедура УслугиПриИзменении(Элемент)
ТаблицаПриИзменении("Услуги");
КонецПроцедуры
&НаКлиенте
Процедура УслугиПередОкончаниемРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования, Отказ)
ТаблицаПередОкончаниемРедактирования("Услуги", Элемент, НоваяСтрока, ОтменаРедактирования, Отказ);
КонецПроцедуры
&НаКлиенте
Процедура УслугиГруппаЗатратОчистка(Элемент, СтандартнаяОбработка)
ТаблицаГруппаЗатратОчистка("Услуги");
КонецПроцедуры
&НаКлиенте
Процедура УслугиГруппаЗатратОткрытие(Элемент, СтандартнаяОбработка)
ТаблицаГруппаЗатратОткрытие("Услуги", СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура УслугиГруппаЗатратНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ТаблицаГруппаЗатратНачалоВыбора("Услуги", СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура УслугиНоменклатураПриИзменении(Элемент)
ТаблицаНоменклатураПриИзменении("Услуги");
КонецПроцедуры
&НаКлиенте
Процедура УслугиХарактеристикаПриИзменении(Элемент)
ТаблицаХарактеристикаПриИзменении("Услуги");
КонецПроцедуры
&НаКлиенте
Процедура УслугиКоличествоПриИзменении(Элемент)
ТаблицаКоличествоУпаковокПриИзменении("Услуги");
КонецПроцедуры
&НаКлиенте
Процедура УслугиЦенаПриИзменении(Элемент)
ТаблицаЦенаПриИзменении("Услуги");
КонецПроцедуры
&НаКлиенте
Процедура УслугиВидЦеныПоставщикаПриИзменении(Элемент)
ТекущиеДанные = Элементы.Услуги.ТекущиеДанные;
СтруктураДействий = Новый Структура;
ДобавитьДействияЗаполнитьЦену(ЭтотОбъект, "Услуги", СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущиеДанные, СтруктураДействий, КэшированныеЗначения);
КонецПроцедуры
&НаКлиенте
Процедура УслугиСуммаПриИзменении(Элемент)
ТаблицаСуммаПриИзменении("Услуги");
КонецПроцедуры
&НаКлиенте
Процедура УслугиСтавкаНДСПриИзменении(Элемент)
ТекущиеДанные = Элементы.Услуги.ТекущиеДанные;
СтруктураДействий = Новый Структура;
ДобавитьДействияПересчетаСумм(ЭтотОбъект, "Услуги", СтруктураДействий, "СуммаНДС, СуммаСНДС");
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущиеДанные, СтруктураДействий, КэшированныеЗначения);
КонецПроцедуры
&НаКлиенте
Процедура УслугиСуммаНДСПриИзменении(Элемент)
ТекущиеДанные = Элементы.Услуги.ТекущиеДанные;
СтруктураДействий = Новый Структура;
ДобавитьДействияПересчетаСумм(ЭтотОбъект, "Услуги", СтруктураДействий, "СуммаСНДС");
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущиеДанные, СтруктураДействий, КэшированныеЗначения);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыОбщее
&НаКлиенте
Процедура ТаблицаВыбор(ИмяТЧ, Поле, СтандартнаяОбработка)
ТекущиеДанные = Элементы[ИмяТЧ].ТекущиеДанные;
Если ИмяТЧ = "ВыходныеИзделия"
И (Поле = Элементы[ИмяТЧ + "ДоляСтоимости"]
Или Поле = Элементы[ИмяТЧ + "ДоляСтоимостиПроцент"]
Или Поле = Элементы[ИмяТЧ + "ЕстьОшибкиЗаполненияДолиСтоимости"]) Тогда
ОткрытьФормуВводаДолиСтоимости(ТекущиеДанные, СтандартнаяОбработка);
ИначеЕсли (Поле = Элементы.ВыходныеИзделияПредставлениеОтраженияОперации
Или Поле = Элементы.ПобочныеИзделияПредставлениеОтраженияОперации)
И ЗначениеЗаполнено(ТекущиеДанные.СтатьяРасходов) Тогда
НастройкаСчетовУчетаКлиент.ПриНажатии(ЭтотОбъект, Поле, СтандартнаяОбработка);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаПриНачалеРедактирования(ИмяТЧ, НоваяСтрока, Копирование)
ТекущиеДанные = Элементы[ИмяТЧ].ТекущиеДанные;
РаботаСТабличнымиЧастямиКлиент.КэшироватьТекущуюСтроку(Элементы[ИмяТЧ], ЭтотОбъект);
СтруктураДействий = Новый Структура;
Если НоваяСтрока Тогда
Если Не ИмяТЧ = "МатериалыИРаботы" Тогда
ТекущиеДанные.КодСтроки = 0;
ЗаказыКлиентСервер.ДобавитьДействиеЗаполнитьПризнакРасхождениеЗаказ(СтруктураДействий, Объект.ПоЗаказам);
КонецЕсли;
Если Не Копирование Тогда
ДобавитьДействияЗаполнитьВидЦен(ЭтотОбъект, ИмяТЧ, СтруктураДействий);
ДобавитьДействияИнициализироватьСтатьюИАналитику(ЭтотОбъект, ИмяТЧ, СтруктураДействий);
КонецЕсли;
КонецЕсли;
Если Копирование Тогда
Если ИмяТЧ = "ВыходныеИзделия" Тогда
ТекущиеДанные.КодСтрокиПродукция = 0;
КонецЕсли;
ДобавитьДействияПроверитьСериюРассчитатьСтатус(ЭтотОбъект, ИмяТЧ, СтруктураДействий);
КонецЕсли;
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущиеДанные, СтруктураДействий, КэшированныеЗначения);
Если НоваяСтрока
И Не ИмяТЧ = "МатериалыИРаботы"
И Ложь Тогда
РассчитатьИтогиДокумента(ЭтотОбъект, "КоличествоСверхЗаказа");
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаПередУдалением(ИмяТЧ, Элемент, Отказ)
РаботаСТабличнымиЧастямиКлиент.КэшироватьТекущуюСтроку(Элементы[ИмяТЧ], ЭтотОбъект);
Если ИмяТЧ = "ВыходныеИзделия"
И Не Объект.ПоЗаказам Тогда
ВыходныеИзделияУдалениемНаСервере();
КонецЕсли;
Если Не ИмяТЧ = "Услуги" Тогда
НоменклатураКлиент.ОбновитьКешированныеЗначенияДляУчетаСерий(
Элемент,
КэшированныеЗначения,
ПараметрыУказанияСерий[ИмяТЧ]);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаПослеУдаления(ИмяТЧ)
ТаблицаПослеУдаленияНаСервере(ИмяТЧ);
КонецПроцедуры
&НаСервере
Процедура ТаблицаПослеУдаленияНаСервере(ИмяТЧ)
Для Каждого ТекущиеДанные Из ГруппыЗатрат Цикл
ТаблицаЗаполнитьЗависимыеСлужебныеРеквизитыГруппыЗатрат(ИмяТЧ, ТекущиеДанные.НомерГруппыЗатрат);
КонецЦикла;
Если ИмяТЧ = "ВыходныеИзделия" Тогда
РассчитатьПроцентРаспределенияЗатратНаВыходныеИзделия();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаПередОкончаниемРедактирования(ИмяТЧ, Элемент, НоваяСтрока, ОтменаРедактирования, Отказ)
Если НоваяСтрока
И ОтменаРедактирования Тогда
Возврат;
КонецЕсли;
ТекущиеДанные = Элементы[ИмяТЧ].ТекущиеДанные;
ТаблицаПередОкончаниемРедактированияНаСервере(
ИмяТЧ,
ТекущиеДанные.ПолучитьИдентификатор(),
НоваяСтрока,
ОтменаРедактирования);
КонецПроцедуры
&НаСервере
Процедура ТаблицаПередОкончаниемРедактированияНаСервере(ИмяТЧ, ТекущийИдентификатор, НоваяСтрока, ОтменаРедактирования)
ТекущиеДанные = Объект[ИмяТЧ].НайтиПоИдентификатору(ТекущийИдентификатор);
КэшСтроки = РаботаСТабличнымиЧастямиКлиентСервер.КэшСтроки(Элементы[ИмяТЧ], ЭтотОбъект);
Если ИмяТЧ = "ВыходныеИзделия" Тогда
Если Не Объект.ПоЗаказам Тогда
ДобавитьИзменитьГруппуЗатрат(ТекущиеДанные);
Иначе
УстановитьНомерГруппыЗатратПоУмолчанию(ИмяТЧ, ТекущийИдентификатор);
ТаблицаЗаполнитьЗависимыеСлужебныеРеквизитыГруппыЗатрат(ИмяТЧ, КэшСтроки.НомерГруппыЗатрат);
ТаблицаЗаполнитьЗависимыеСлужебныеРеквизитыГруппыЗатрат(ИмяТЧ, ТекущиеДанные.НомерГруппыЗатрат);
КонецЕсли;
Группировки = Новый Массив;
Группировки.Добавить(КэшСтроки.НомерГруппыЗатрат);
Группировки.Добавить(ТекущиеДанные.НомерГруппыЗатрат);
РассчитатьПроцентРаспределенияЗатратНаВыходныеИзделия(Группировки);
Иначе
УстановитьНомерГруппыЗатратПоУмолчанию(ИмяТЧ, ТекущийИдентификатор);
ТаблицаЗаполнитьЗависимыеСлужебныеРеквизитыГруппыЗатрат(ИмяТЧ, КэшСтроки.НомерГруппыЗатрат);
ТаблицаЗаполнитьЗависимыеСлужебныеРеквизитыГруппыЗатрат(ИмяТЧ, ТекущиеДанные.НомерГруппыЗатрат);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаПриИзменении(ИмяТЧ)
ТекущиеДанные = Элементы[ИмяТЧ].ТекущиеДанные;
СтруктураДействий = Новый Структура;
Если Не ИмяТЧ = "МатериалыИРаботы" Тогда
ЗаказыКлиентСервер.ДобавитьДействиеЗаполнитьПризнакРасхождениеЗаказ(СтруктураДействий, Объект.ПоЗаказам);
КонецЕсли;
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущиеДанные, СтруктураДействий, КэшированныеЗначения);
Если ИмяТЧ = "ВыходныеИзделия"
Или ИмяТЧ = "ПобочныеИзделия" Тогда
СписокРеквизитов = "КоличествоСверхЗаказа,КоличествоИзделий,ВедетсяУчетПоГТД";
ИначеЕсли ИмяТЧ = "Услуги" Тогда
СписокРеквизитов = "КоличествоСверхЗаказа,СуммаУслуг";
Иначе
СписокРеквизитов = "НеВыполнять";
КонецЕсли;
РассчитатьИтогиДокумента(ЭтотОбъект, СписокРеквизитов);
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаГруппаЗатратОчистка(ИмяТЧ)
ТекущиеДанные = Элементы[ИмяТЧ].ТекущиеДанные;
НомерГруппыЗатратДоИзменения = ТекущиеДанные.НомерГруппыЗатрат;
ТекущиеДанные.НомерГруппыЗатрат = 0;
ТекущиеДанные.ГруппаЗатрат = "";
Если Объект.ПоЗаказам
И (Объект.ГруппировкаЗатрат = ПредопределенноеЗначение("Перечисление.ГруппировкиЗатратВЗаказеПереработчику.ПоСпецификациям")
Или Объект.ГруппировкаЗатрат = ПредопределенноеЗначение("Перечисление.ГруппировкиЗатратВЗаказеПереработчику.ПоСпецификациямИНазначениям"))
И ИмяТЧ = "ВыходныеИзделия" Тогда
ТекущиеДанные.Спецификация = Неопределено;
КонецЕсли;
Если ИмяТЧ = "МатериалыИРаботы"
И ИспользоватьИмпортныеТовары Тогда
ТекущиеДанные.ЕстьИмпортноеИзделие = Ложь;
ТекущиеДанные.Основной = Ложь;
КонецЕсли;
ТаблицаЗаполнитьЗависимыеСлужебныеРеквизитыГруппыЗатрат(ИмяТЧ, НомерГруппыЗатратДоИзменения);
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаГруппаЗатратОткрытие(ИмяТЧ, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаГруппаЗатратНачалоВыбора(ИмяТЧ, СтандартнаяОбработка = Ложь)
СтандартнаяОбработка = Ложь;
Если Элементы[ИмяТЧ].ВыделенныеСтроки.Количество() = 0 Тогда
ТекстПредупреждения = НСтр("ru = 'Необходимо выбрать строки, для которых будет заполнена группа затрат.'");
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстПредупреждения);
Возврат;
КонецЕсли;
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("ГруппировкаЗатрат", Объект.ГруппировкаЗатрат);
ПараметрыФормы.Вставить("НомерГруппыЗатрат", Элементы[ИмяТЧ].ТекущиеДанные.НомерГруппыЗатрат);
ПараметрыФормы.Вставить("АдресХранилищаГруппЗатрат", ПоместитьДанныеГруппЗатратВХранилище(ИмяТЧ));
ПараметрыФормы.Вставить(
"ПоляГруппыЗатрат",
ПереработкаНаСторонеКлиентСервер.ПереченьПолейГруппыЗатратОтчетаПереработчика(Объект.ГруппировкаЗатрат));
ОписаниеОповещения = Новый ОписаниеОповещения("ТаблицаГруппаЗатратНачалоВыбораЗавершение", ЭтотОбъект, ИмяТЧ);
ОткрытьФорму("ОбщаяФорма.ВыборГруппыЗатратПриПередачеВПереработку", ПараметрыФормы,,,,, ОписаниеОповещения);
Модифицированность = Истина;
КонецПроцедуры
&НаСервере
Процедура ТаблицаЗаполнитьЗависимыеСлужебныеРеквизитыГруппыЗатрат(ИмяТЧ, НомерГруппыЗатрат)
Если (ИмяТЧ = "ВыходныеИзделия"
Или ИмяТЧ = "ПобочныеИзделия")
И Не НомерГруппыЗатрат = 0 Тогда
ОписаниеГруппыЗатрат = ДанныеГруппыЗатратПоНомеруГруппыЗатрат(НомерГруппыЗатрат);
ЗаполнитьЗависимыеСлужебныеРеквизитыГруппыЗатрат(ОписаниеГруппыЗатрат);
Если ИспользоватьИмпортныеТовары Тогда
ОбновитьСлужебныеРеквизитыГруппыЗатратВСвязаннойТЧ(ОписаниеГруппыЗатрат, "МатериалыИРаботы", "ЕстьИмпортноеИзделие");
Если Не ОписаниеГруппыЗатрат.ЕстьИмпортноеИзделие Тогда
ОчиститьФлагОсновнойПоГруппеЗатрат(НомерГруппыЗатрат);
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаНоменклатураПриИзменении(ИмяТЧ)
ОписаниеОповещения = Новый ОписаниеОповещения("ТаблицаНоменклатураПриИзмененииЗавершение", ЭтотОбъект, ИмяТЧ);
ТаблицаКлючевойРеквизитПриИзменении(ИмяТЧ, ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаНоменклатураПриИзмененииЗавершение(Результат, ИмяТЧ) Экспорт
ТекущиеДанные = Элементы[ИмяТЧ].ТекущиеДанные;
СтруктураДействий = Новый Структура;
ДобавитьДействияПриИзмененииНоменклатуры(ЭтотОбъект, ИмяТЧ, СтруктураДействий);
ДобавитьДействияПроверитьЗаполнитьСпецификацию(ЭтотОбъект, ИмяТЧ, СтруктураДействий, ТекущиеДанные);
ДобавитьДействияЗаполнитьЦену(ЭтотОбъект, ИмяТЧ, СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущиеДанные, СтруктураДействий, КэшированныеЗначения);
Если ИмяТЧ = "МатериалыИРаботы"
И ТекущиеДанные.ВедетсяУчетПоГТД = 0 Тогда
ТекущиеДанные.Основной = Ложь;
ИначеЕсли (ИмяТЧ = "ВыходныеИзделия"
Или ИмяТЧ = "ПобочныеИзделия")
И ТекущиеДанные.ВедетсяУчетПоГТД Тогда
ВедетсяУчетПоГТД = Истина;
ИначеЕсли ИмяТЧ = "ВыходныеИзделия"
Или ИмяТЧ = "ПобочныеИзделия" Тогда
РассчитатьИтогиДокумента(ЭтотОбъект, "ВедетсяУчетПоГТД");
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаХарактеристикаПриИзменении(ИмяТЧ)
ОписаниеОповещения = Новый ОписаниеОповещения("ТаблицаХарактеристикаПриИзмененииЗавершение", ЭтотОбъект, ИмяТЧ);
ТаблицаКлючевойРеквизитПриИзменении(ИмяТЧ, ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаХарактеристикаПриИзмененииЗавершение(Результат, ИмяТЧ) Экспорт
ТекущиеДанные = Элементы[ИмяТЧ].ТекущиеДанные;
СтруктураДействий = Новый Структура;
ДобавитьДействияПриИзмененииХарактеристики(ЭтотОбъект, ИмяТЧ, СтруктураДействий);
ДобавитьДействияПроверитьЗаполнитьСпецификацию(ЭтотОбъект, ИмяТЧ, СтруктураДействий, ТекущиеДанные);
ДобавитьДействияПроверитьЗаполнитьДолюСтоимости(ЭтотОбъект, ИмяТЧ, СтруктураДействий);
ДобавитьДействияЗаполнитьЦену(ЭтотОбъект, ИмяТЧ, СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущиеДанные, СтруктураДействий, КэшированныеЗначения);
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаСерияНачалоВыбора(ИмяТЧ, Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОткрытьПодборСерий(ИмяТЧ, Элемент.ТекстРедактирования, Элементы[ИмяТЧ].ТекущиеДанные);
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаСерияПриИзменении(ИмяТЧ)
ТекущиеДанные = Элементы[ИмяТЧ].ТекущиеДанные;
ВыбранноеЗначение = НоменклатураКлиентСервер.ВыбраннаяСерия();
ВыбранноеЗначение.Значение = ТекущиеДанные.Серия;
ВыбранноеЗначение.ИдентификаторТекущейСтроки = ТекущиеДанные.ПолучитьИдентификатор();
НоменклатураКлиент.ОбработатьУказаниеСерии(ЭтотОбъект, ПараметрыУказанияСерий[ИмяТЧ], ВыбранноеЗначение);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСерияПересчитатьЦены(ТекущаяСтрока = Неопределено, ИмяТЧ)
Если Не (ИмяТЧ = "ВыходныеИзделия"
Или ИмяТЧ = "ПобочныеИзделия") Тогда
Возврат;
КонецЕсли;
Если ТекущаяСтрока = Неопределено Тогда
ТекущаяСтрока = Элементы[ИмяТЧ].ТекущиеДанные;
КонецЕсли;
Если ЦенообразованиеКлиент.НеобходимПересчетЦеныПриИзменении(ТекущаяСтрока.Номенклатура, "Серия", Объект.Дата) Тогда
СтруктураДействий = Новый Структура;
ДобавитьДействияЗаполнитьЦену(ЭтотОбъект, ИмяТЧ, СтруктураДействий);
Если ИмяТЧ = "ВыходныеИзделия" Тогда
СтруктураДействий.Вставить("ПроверитьЗаполнитьДолюСтоимости", ПараметрыРаспределенияЗатрат);
КонецЕсли;
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаУпаковкаПриИзменении(ИмяТЧ)
ТекущиеДанные = Элементы[ИмяТЧ].ТекущиеДанные;
СтруктураДействий = Новый Структура;
ДобавитьДействияПриИзмененииУпаковки(ЭтотОбъект, ИмяТЧ, СтруктураДействий, ТекущиеДанные);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущиеДанные, СтруктураДействий, КэшированныеЗначения);
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаКоличествоУпаковокПриИзменении(ИмяТЧ)
ТекущиеДанные = Элементы[ИмяТЧ].ТекущиеДанные;
СтруктураДействий = Новый Структура;
ДобавитьДействияПриИзмененииКоличества(ЭтотОбъект, ИмяТЧ, СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущиеДанные, СтруктураДействий, КэшированныеЗначения);
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаЦенаПриИзменении(ИмяТЧ)
ТекущиеДанные = Элементы[ИмяТЧ].ТекущиеДанные;
СтруктураДействий = Новый Структура;
Если ИмяТЧ = "Услуги" Тогда
СписокРеквизитов = "Сумма, СуммаНДС, СуммаСНДС";
Иначе
СписокРеквизитов = "Сумма";
КонецЕсли;
ДобавитьДействияПересчетаСумм(ЭтотОбъект, ИмяТЧ, СтруктураДействий, СписокРеквизитов);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущиеДанные, СтруктураДействий, КэшированныеЗначения);
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаСуммаПриИзменении(ИмяТЧ)
ТекущиеДанные = Элементы[ИмяТЧ].ТекущиеДанные;
СтруктураДействий = Новый Структура;
Если ИмяТЧ = "Услуги" Тогда
СписокРеквизитов = "Цена, СуммаНДС, СуммаСНДС";
Иначе
СписокРеквизитов = "Цена";
КонецЕсли;
ДобавитьДействияПересчетаСумм(ЭтотОбъект, ИмяТЧ, СтруктураДействий, СписокРеквизитов);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущиеДанные, СтруктураДействий, КэшированныеЗначения);
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаСписатьНаРасходыПриИзменении(ИмяТЧ)
ОписаниеОповещения = Новый ОписаниеОповещения("ТаблицаСписатьНаРасходыПриИзмененииЗавершение", ЭтотОбъект, ИмяТЧ);
ТаблицаКлючевойРеквизитПриИзменении(ИмяТЧ, ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаСписатьНаРасходыПриИзмененииЗавершение(Результат, ИмяТЧ) Экспорт
ТекущиеДанные = Элементы[ИмяТЧ].ТекущиеДанные;
Если ТекущиеДанные.СписатьНаРасходы Тогда
ТекущиеДанные.Назначение = Неопределено;
КонецЕсли;
ДоходыИРасходыКлиентСервер.ПриИзмененииРеквизитаДоступностиСтатьиВСтроке(ЭтотОбъект, ТекущиеДанные, "Объект." + ИмяТЧ);
НастройкаСчетовУчетаКлиентСервер.ПриИзмененииРеквизитаДоступностиСчетаУчетаВСтроке(ЭтотОбъект, ТекущиеДанные, "Объект." + ИмяТЧ);
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаСтатьяРасходовВыбор(Элемент, СтандартнаяОбработка)
ДоходыИРасходыКлиент.НачалоВыбораСтатьи(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаСтатьяРасходовПриИзменении(Элемент)
ДоходыИРасходыКлиентСервер.СтатьяПриИзменении(ЭтотОбъект, Элемент);
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаАналитикаРасходовНачалоВыбора(Элемент, СтандартнаяОбработка)
ДоходыИРасходыКлиент.НачалоВыбораАналитикиРасходов(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаАналитикаРасходовАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка)
ДоходыИРасходыКлиент.АвтоПодборАналитикиРасходов(ЭтотОбъект, Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаАналитикаРасходовОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка)
ДоходыИРасходыКлиент.ОкончаниеВводаТекстаАналитикиРасходов(ЭтотОбъект, Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаКлючевойРеквизитПриИзменении(ИмяТЧ, ОписаниеОповещения)
ТекущиеДанные = Элементы[ИмяТЧ].ТекущиеДанные;
КэшСтроки = РаботаСТабличнымиЧастямиКлиентСервер.КэшСтроки(Элементы[ИмяТЧ], ЭтотОбъект);
Если ИмяТЧ = "МатериалыИРаботы"
Или ТекущиеДанные.КодСтроки = 0
Или (ТекущиеДанные.Номенклатура = КэшСтроки.Номенклатура
И ТекущиеДанные.Характеристика = КэшСтроки.Характеристика
И ТекущиеДанные.СписатьНаРасходы = КэшСтроки.СписатьНаРасходы) Тогда
ВыполнитьОбработкуОповещения(ОписаниеОповещения, Истина);
Возврат;
КонецЕсли;
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ИмяТЧ", ИмяТЧ);
ДополнительныеПараметры.Вставить("ТекущиеДанные", ТекущиеДанные);
ДополнительныеПараметры.Вставить("КэшСтроки", КэшСтроки);
ДополнительныеПараметры.Вставить("ОписаниеОповещения", ОписаниеОповещения);
ОповещениеВопроса =
Новый ОписаниеОповещения(
"ТаблицаКлючевойРеквизитПриИзмененииЗавершение",
ЭтотОбъект,
ДополнительныеПараметры);
ТекстВопроса = НСтр("ru='Редактируемая строка перестанет быть связанной со строкой заказа. Продолжить?'");
ПоказатьВопрос(ОповещениеВопроса, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаКлючевойРеквизитПриИзмененииЗавершение(Результат, ДополнительныеПараметры) Экспорт
ТекущиеДанные = ДополнительныеПараметры.ТекущиеДанные;
Если Результат = КодВозвратаДиалога.Да Тогда
СтруктураДействий = Новый Структура;
Если Не ДополнительныеПараметры.ИмяТЧ = "МатериалыИРаботы" Тогда
ТекущиеДанные.КодСтроки = 0;
ЗаказыКлиентСервер.ДобавитьДействиеЗаполнитьПризнакРасхождениеЗаказ(СтруктураДействий, Объект.ПоЗаказам);
КонецЕсли;
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущиеДанные, СтруктураДействий, КэшированныеЗначения);
Если Не ДополнительныеПараметры.ИмяТЧ = "МатериалыИРаботы" Тогда
РассчитатьИтогиДокумента(ЭтотОбъект, "КоличествоСверхЗаказа");
КонецЕсли;
ВыполнитьОбработкуОповещения(ДополнительныеПараметры.ОписаниеОповещения, Истина);
Иначе
ЗаполнитьЗначенияСвойств(ТекущиеДанные, ДополнительныеПараметры.КэшСтроки);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
#Область Основное
&НаКлиенте
Процедура ЗакрытьЗаказ(Команда)
Если Модифицированность
Или Не Объект.Проведен Тогда
ПоказатьВопрос(
Новый ОписаниеОповещения("ЗакрытьЗаказЗавершение", ЭтотОбъект),
НСтр("ru = 'Необходимо провести документ для выполнения операции. Провести документ?'"),
РежимДиалогаВопрос.ДаНет);
Иначе
ЗакрытьЗаказФрагмент();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗачетОплаты(Команда)
ВзаиморасчетыКлиент.ЗачетОплаты(ЭтотОбъект, Элементы.ЗачетОплатыФорма);
КонецПроцедуры
#КонецОбласти
#Область ВыходныеИзделия
&НаКлиенте
Процедура ВыходныеИзделияПодобратьТовары(Команда)
ТаблицаПодобратьТовары("ВыходныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияПодобратьИзЗаказа(Команда)
ПодборТоваровИзЗаказа("ВыходныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияЗаполнитьТЧПоСпецификацииЗаказу(Команда)
ТаблицаЗаполнитьТЧПоСпецификацииЗаказу("ВыходныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияПерезаполнитьЗатратныеТЧ(Команда)
Если ВозможноПерезаполнитьПоСпецификацииЗаказу() Тогда
Если Не Объект.ПобочныеИзделия.Количество() = 0
Или Не Объект.МатериалыИРаботы.Количество() = 0
Или Не Объект.Услуги.Количество() = 0 Тогда
Если Объект.ПоЗаказам Тогда
ТекстВопроса = НСтр("ru = 'Перезаполнить побочные изделия, материалы и работы, услуги выделенных групп затрат по заказу?'");
Иначе
ТекстВопроса = НСтр("ru = 'Перезаполнить побочные изделия, материалы и работы, услуги выделенных групп затрат по спецификации?'");
КонецЕсли;
ОписаниеОповещения = Новый ОписаниеОповещения("ВыходныеИзделияПерезаполнитьЗатратныеТЧЗавершение", ЭтотОбъект);
ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
Иначе
ВыходныеИзделияПерезаполнитьЗатратныеТЧЗавершение(КодВозвратаДиалога.Да);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияПеренестиВПобочныеИзделия(Команда)
Если Элементы.ВыходныеИзделия.ВыделенныеСтроки.Количество() > 0 Тогда
ВыходныеИзделияПеренестиВПобочныеИзделияНаСервере();
РассчитатьИтогиДокумента(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияЗаполнитьЦеныПоВидуЦен(Команда)
ОчиститьСообщения();
ЦеныРассчитаны = ЗаполнитьЦеныПоВидуЦенСервер("ВыходныеИзделия");
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияЦенПоВидуЦен(ЦеныРассчитаны, Объект.ВидЦены);
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияЗаполнитьЦеныПоКалькуляции(Команда)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияЗаполнитьГруппуЗатрат(Команда)
ТаблицаЗаполнитьГруппуЗатрат("ВыходныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияЗаполнитьПолучателя(Команда)
ТаблицаЗаполнитьПолучателя("ВыходныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияУказатьСерии(Команда)
ОткрытьПодборСерий("ВыходныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияСкопироватьСтроки(Команда)
ТаблицаСкопироватьСтроки("ВыходныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияВставитьСтроки(Команда)
ТаблицаВставитьСтроки("ВыходныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияРазбитьСтроку(Команда)
ТаблицаРазбитьСтроку("ВыходныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияЗагрузитьДанныеИзТСД(Команда)
ТаблицаЗагрузитьДанныеИзТСД("ВыходныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияПоискПоШтрихкоду(Команда)
ТаблицаПоискПоШтрихкоду("ВыходныеИзделия");
КонецПроцедуры
#КонецОбласти
#Область ПобочныеИзделия
&НаКлиенте
Процедура ПобочныеИзделияПодобратьТовары(Команда)
ТаблицаПодобратьТовары("ПобочныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияПодобратьИзЗаказа(Команда)
ПодборТоваровИзЗаказа("ПобочныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияЗаполнитьТЧПоСпецификацииЗаказу(Команда)
ТаблицаЗаполнитьТЧПоСпецификацииЗаказу("ПобочныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияЗаполнитьЦеныПоВидуЦен(Команда)
ОчиститьСообщения();
ЦеныРассчитаны = ЗаполнитьЦеныПоВидуЦенСервер("ПобочныеИзделия", Элементы.ПобочныеИзделия.ВыделенныеСтроки);
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияЦенПоВидуЦен(ЦеныРассчитаны, Объект.ВидЦены);
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияЗаполнитьГруппуЗатрат(Команда)
ТаблицаЗаполнитьГруппуЗатрат("ПобочныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияЗаполнитьСтатьюКалькуляции(Команда)
ТаблицаЗаполнитьСтатьюКалькуляции("ПобочныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияЗаполнитьПолучателя(Команда)
ТаблицаЗаполнитьПолучателя("ПобочныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияУказатьСерии(Команда)
ОткрытьПодборСерий("ПобочныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияСкопироватьСтроки(Команда)
ТаблицаСкопироватьСтроки("ПобочныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияВставитьСтроки(Команда)
ТаблицаВставитьСтроки("ПобочныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияРазбитьСтроку(Команда)
ТаблицаРазбитьСтроку("ПобочныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияПоискПоШтрихкоду(Команда)
ТаблицаПоискПоШтрихкоду("ПобочныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияЗагрузитьДанныеИзТСД(Команда)
ТаблицаЗагрузитьДанныеИзТСД("ПобочныеИзделия");
КонецПроцедуры
#КонецОбласти
#Область МатериалыИРаботы
&НаКлиенте
Процедура МатериалыИРаботыПодобратьТовары(Команда)
ТаблицаПодобратьТовары("МатериалыИРаботы");
КонецПроцедуры
&НаКлиенте
Процедура ПодобратьПереданныеМатериалы(Команда)
Отказ = Ложь;
ОчиститьСообщения();
Если Не ЗначениеЗаполнено(Объект.Организация) Тогда
ТекстОшибки = НСтр("ru = 'Поле ""Организация"" не заполнено'");
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстОшибки, Объект.Ссылка, "Объект.Организация", "", Отказ);
КонецЕсли;
Если Не ЗначениеЗаполнено(Объект.Партнер) Тогда
ТекстОшибки = СтрШаблон(НСтр("ru = 'Поле ""%1"" не заполнено'"), Элементы.Партнер.Заголовок);
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстОшибки, Объект.Ссылка, "Объект.Партнер", "", Отказ);
КонецЕсли;
Если Не ЗначениеЗаполнено(Объект.Договор) Тогда
ТекстОшибки = НСтр("ru = 'Поле ""Договор"" не заполнено'");
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстОшибки, Объект.Ссылка, "Объект.Договор", "", Отказ);
КонецЕсли;
Если Отказ Тогда
Возврат;
КонецЕсли;
ОценкаПроизводительностиКлиент.ЗамерВремени(Истина,
"Документ.ОтчетПереработчика2_5.ФормаДокумента.Команда.ПодобратьПереданныеТовары");
АдресТоваров = ПоместитьТоварыВХранилищеДляПодбораПереданногоТовара();
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Ссылка", Объект.Ссылка);
ПараметрыФормы.Вставить("Организация", Объект.Организация);
ПараметрыФормы.Вставить("Владелец", Объект.Партнер);
ПараметрыФормы.Вставить("Договор", Объект.Договор);
ПараметрыФормы.Вставить("Заголовок", НСтр("ru = 'Подбор товаров, переданных переработчику'"));
ПараметрыФормы.Вставить("СвернутьНомераГТД", Истина);
ПараметрыФормы.Вставить("ХозяйственнаяОперация", Объект.ХозяйственнаяОперация);
ПараметрыФормы.Вставить("АдресТоваровНакладнойВХранилище", АдресТоваров);
ОткрытьФорму(
"Обработка.ПодборТоваровПереданныхНаОтветственноеХранение.Форма.Форма",
ПараметрыФормы,
ЭтотОбъект,
УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура МатериалыИРаботыЗаполнитьТЧПоСпецификацииЗаказу(Команда)
ТаблицаЗаполнитьТЧПоСпецификацииЗаказу("МатериалыИРаботы");
КонецПроцедуры
&НаКлиенте
Процедура МатериалыИРаботыЗаполнитьГруппуЗатрат(Команда)
ТаблицаЗаполнитьГруппуЗатрат("МатериалыИРаботы");
КонецПроцедуры
&НаКлиенте
Процедура МатериалыИРаботыЗаполнитьСтатьюКалькуляции(Команда)
ТаблицаЗаполнитьСтатьюКалькуляции("МатериалыИРаботы");
КонецПроцедуры
&НаКлиенте
Процедура МатериалыИРаботыУказатьСерии(Команда)
ОткрытьПодборСерий("МатериалыИРаботы");
КонецПроцедуры
&НаКлиенте
Процедура МатериалыИРаботыСкопироватьСтроки(Команда)
ТаблицаСкопироватьСтроки("МатериалыИРаботы");
КонецПроцедуры
&НаКлиенте
Процедура МатериалыИРаботыВставитьСтроки(Команда)
ТаблицаВставитьСтроки("МатериалыИРаботы");
КонецПроцедуры
&НаКлиенте
Процедура МатериалыИРаботыРазбитьСтроку(Команда)
ТаблицаРазбитьСтроку("МатериалыИРаботы");
КонецПроцедуры
&НаКлиенте
Процедура МатериалыИРаботыПоискПоШтрихкоду(Команда)
ТаблицаПоискПоШтрихкоду("МатериалыИРаботы");
КонецПроцедуры
&НаКлиенте
Процедура МатериалыИРаботыЗагрузитьДанныеИзТСД(Команда)
ТаблицаЗагрузитьДанныеИзТСД("МатериалыИРаботы");
КонецПроцедуры
#КонецОбласти
#Область Услуги
&НаКлиенте
Процедура УслугиПодобратьТовары(Команда)
ТаблицаПодобратьТовары("Услуги");
КонецПроцедуры
&НаКлиенте
Процедура УслугиЗаполнитьТЧПоСпецификацииЗаказу(Команда)
ТаблицаЗаполнитьТЧПоСпецификацииЗаказу("Услуги");
КонецПроцедуры
&НаКлиенте
Процедура УслугиЗаполнитьЦеныПоВидуЦеныПоставщика(Команда)
Если ЦеныПартнеровЗаполнениеКлиент.НеобходимоЗаполнениеЦенПоВидуЦенПоставщика(Объект, "Услуги", НСтр("ru='Услуги'")) Тогда
ТекущиеДанные = Элементы.Услуги.ТекущиеДанные;
Если Не ЗначениеЗаполнено(ТекущиеДанные.ВидЦеныПоставщика) Тогда
ЦеныПартнеровЗаполнениеКлиент.ВыбратьВидЦеныПоставщика(
Новый ОписаниеОповещения("УслугиЗаполнитьЦеныПоВидуЦеныПоставщикаЗавершение", ЭтотОбъект),
Объект.Партнер,
Объект.ЦенаВключаетНДС);
Иначе
УслугиЗаполнитьЦеныПоВидуЦеныПоставщикаЗавершение(ТекущиеДанные.ВидЦеныПоставщика, Неопределено);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УслугиВыбратьИЗаполнитьУслугу(Команда)
Если Элементы.Услуги.ВыделенныеСтроки.Количество() = 0 Тогда
ПоказатьПредупреждение(, НСтр("ru = 'Для заполнения услуги необходимо выбрать строки.'"));
Возврат;
КонецЕсли;
ОписаниеОповещения = Новый ОписаниеОповещения("УслугиВыбратьИЗаполнитьУслугуЗавершение", ЭтотОбъект);
ПараметрыОтбора = Новый Структура("ТипНоменклатуры", ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Работа"));
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Отбор", ПараметрыОтбора);
ПараметрыФормы.Вставить("МножественныйВыбор", Ложь);
ОткрытьФорму("Справочник.Номенклатура.ФормаВыбора", ПараметрыФормы,,,,, ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура УслугиЗаполнитьГруппуЗатрат(Команда)
ТаблицаЗаполнитьГруппуЗатрат("Услуги");
КонецПроцедуры
&НаКлиенте
Процедура УслугиЗаполнитьСтатьюКалькуляции(Команда)
ТаблицаЗаполнитьСтатьюКалькуляции("Услуги");
КонецПроцедуры
&НаКлиенте
Процедура УслугиСкопироватьСтроки(Команда)
ТаблицаСкопироватьСтроки("Услуги");
КонецПроцедуры
&НаКлиенте
Процедура УслугиВставитьСтроки(Команда)
ТаблицаВставитьСтроки("Услуги");
КонецПроцедуры
&НаКлиенте
Процедура УслугиРазбитьСтроку(Команда)
ТаблицаРазбитьСтроку("Услуги");
КонецПроцедуры
&НаКлиенте
Процедура УслугиПоискПоШтрихкоду(Команда)
ТаблицаПоискПоШтрихкоду("Услуги");
КонецПроцедуры
&НаКлиенте
Процедура УслугиЗагрузитьДанныеИзТСД(Команда)
ТаблицаЗагрузитьДанныеИзТСД("Услуги");
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандТаблиц
&НаКлиенте
Процедура ТаблицаПодобратьТовары(ИмяТЧ)
ПодобратьТовар(ИмяТЧ);
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаЗаполнитьТЧПоСпецификацииЗаказу(ИмяТЧ)
Если Не Объект[ИмяТЧ].Количество() = 0 Тогда
Если Объект.ПоЗаказам Тогда
ТекстВопроса = НСтр("ru = 'Табличная часть будет перезаполнена по заказу. Продолжить?'");
Иначе
ТекстВопроса = НСтр("ru = 'Табличная часть будет перезаполнена по спецификациям. Продолжить?'");
КонецЕсли;
ОписаниеОповещения = Новый ОписаниеОповещения("ТаблицаЗаполнитьТЧПоСпецификацииЗаказуЗавершение", ЭтотОбъект, ИмяТЧ);
ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
Иначе
ТаблицаЗаполнитьТЧПоСпецификацииЗаказуЗавершение(КодВозвратаДиалога.Да, ИмяТЧ);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаЗаполнитьГруппуЗатрат(ИмяТЧ)
ТаблицаГруппаЗатратНачалоВыбора(ИмяТЧ);
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаЗаполнитьСтатьюКалькуляции(ИмяТЧ)
Если Элементы[ИмяТЧ].ВыделенныеСтроки.Количество() = 0 Тогда
ТекстПредупреждения = НСтр("ru='Необходимо выбрать строки, для которых необходимо заполнить статью калькуляции.'");
ПоказатьПредупреждение(, ТекстПредупреждения);
Возврат;
КонецЕсли;
ТипыЗатрат = Новый Массив;
ТипыЗатрат.Добавить(ПредопределенноеЗначение("Перечисление.ТипыЗатрат.Материальные"));
Если ИмяТЧ = "ПобочныеИзделия" Тогда
ТипыЗатрат.Добавить(ПредопределенноеЗначение("Перечисление.ТипыЗатрат.ВозвратныеОтходы"));
ИначеЕсли ИмяТЧ = "Услуги" Тогда
ТипыЗатрат.Добавить(ПредопределенноеЗначение("Перечисление.ТипыЗатрат.Прочее"));
КонецЕсли;
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("ТипЗатрат", ТипыЗатрат);
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Отбор", ПараметрыОтбора);
ПараметрыФормы.Вставить("МножественныйВыбор", Ложь);
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ИмяТЧ", ИмяТЧ);
ОписаниеОповещения = Новый ОписаниеОповещения("ЗаполнитьСтатьюКалькуляцииЗавершение", ЭтотОбъект, ДополнительныеПараметры);
ОткрытьФорму("Справочник.СтатьиКалькуляции.ФормаВыбора", ПараметрыФормы,,,,, ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаЗаполнитьПолучателя(ИмяТЧ)
ПараметрыТЧ = Новый Структура;
ПараметрыТЧ.Вставить("ИмяТЧФорма" , ИмяТЧ);
ПараметрыТЧ.Вставить("ИмяТЧОбъект" , ИмяТЧ);
Если ИмяТЧ = "ВыходныеИзделия" Тогда
ПараметрыТЧ.Вставить("ПредставлениеТЧ" , НСтр("ru = 'Выходные изделия'"));
ИначеЕсли ИмяТЧ = "ПобочныеИзделия" Тогда
ПараметрыТЧ.Вставить("ПредставлениеТЧ" , НСтр("ru = 'Побочные изделия'"));
КонецЕсли;
ПараметрыТЧ.Вставить("СкладВШапке", Ложь);
ПараметрыТЧ.Вставить("Отбор", Новый Структура("ЭтоГруппа", Ложь));
ОписаниеОповещения =
Новый ОписаниеОповещения(
"ЗаполнитьПолучателяЗавершение",
ЭтотОбъект,
Новый Структура("ПараметрыТЧ", ПараметрыТЧ));
ТипыНоменклатуры = Новый Массив;
ТипыНоменклатуры.Добавить(ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Работа"));
ПроизводствоКлиент.ОткрытьФормуВыбораПолучателя(
ЭтотОбъект,
Объект,
ПараметрыТЧ,
ТипыНоменклатуры,
ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаСкопироватьСтроки(ИмяТЧ)
Если РаботаСТабличнымиЧастямиКлиент.ВыбранаСтрокаДляВыполненияКоманды(Элементы[ИмяТЧ]) Тогда
СкопироватьСтрокиНаСервере(ИмяТЧ);
РаботаСТабличнымиЧастямиКлиент.ОповеститьПользователяОКопированииСтрок(Элементы[ИмяТЧ].ВыделенныеСтроки.Количество());
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаВставитьСтроки(ИмяТЧ)
КоличествоТоваровДоВставки = Объект[ИмяТЧ].Количество();
ПолучитьСтрокиИзБуфераОбмена(ИмяТЧ);
КоличествоВставленных = Объект[ИмяТЧ].Количество() - КоличествоТоваровДоВставки;
РаботаСТабличнымиЧастямиКлиент.ОповеститьПользователяОВставкеСтрок(КоличествоВставленных);
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаРазбитьСтроку(ИмяТЧ)
ТаблицаФормы = Элементы[ИмяТЧ];
ДанныеТаблицы = Объект[ИмяТЧ];
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ИмяТЧ", ИмяТЧ);
Оповещение = Новый ОписаниеОповещения("ТаблицаРазбитьСтрокуЗавершение", ЭтотОбъект, ДополнительныеПараметры);
ПараметрыРазбиенияСтроки = РаботаСТабличнымиЧастямиКлиент.ПараметрыРазбиенияСтроки();
Если ИмяТЧ = "Услуги" Тогда
ПараметрыРазбиенияСтроки.ИмяПоляКоличество = "Количество";
ПараметрыРазбиенияСтроки.Заголовок = НСтр("ru = 'Введите количество работ в новой строке'");
КонецЕсли;
РаботаСТабличнымиЧастямиКлиент.РазбитьСтроку(ДанныеТаблицы, ТаблицаФормы, Оповещение, ПараметрыРазбиенияСтроки);
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаПоискПоШтрихкоду(ИмяТЧ)
ОчиститьСообщения();
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ИмяТЧ", ИмяТЧ);
Оповещение = Новый ОписаниеОповещения("ТаблицаПоискПоШтрихкодуЗавершение", ЭтотОбъект, ДополнительныеПараметры);
ШтрихкодированиеНоменклатурыКлиент.ПоказатьВводШтрихкода(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаЗагрузитьДанныеИзТСД(ИмяТЧ)
ОчиститьСообщения();
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ИмяТЧ", ИмяТЧ);
Оповещение = Новый ОписаниеОповещения("ТаблицаЗагрузитьИзТСДЗавершение", ЭтотОбъект, ДополнительныеПараметры);
МенеджерОборудованияКлиент.НачатьЗагрузкуДанныеИзТСД(Оповещение, УникальныйИдентификатор);
КонецПроцедуры
#КонецОбласти
#Область КомандыОбъекта
&НаКлиенте
Процедура ПровестиИЗакрыть(Команда)
ОбщегоНазначенияУТКлиент.ПровестиИЗакрыть(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ЗаписатьДокумент(Команда)
ОбщегоНазначенияУТКлиент.Записать(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПровестиДокумент(Команда)
ОбщегоНазначенияУТКлиент.Провести(ЭтотОбъект);
КонецПроцедуры
#КонецОбласти
#Область СтандартныеКоманды
#Область РаботаСКонтрагентами
&НаКлиенте
Процедура ПроверитьКонтрагентов(Команда)
ПроверкаКонтрагентовКлиент.ПроверитьКонтрагентовВДокументеПоКнопке(ЭтотОбъект);
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПоказатьПредложениеИспользоватьПроверкуКонтрагентов()
ПроверкаКонтрагентовКлиент.ПредложитьВключитьПроверкуКонтрагентов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбработатьРезультатПроверкиКонтрагентов()
ПроверкаКонтрагентовКлиент.ОбработатьРезультатПроверкиКонтрагентовВДокументе(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ОтобразитьРезультатПроверкиКонтрагента() Экспорт
ПроверкаКонтрагентов.ОтобразитьРезультатПроверкиКонтрагентаВДокументе(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ПроверитьКонтрагентовФоновоеЗадание(ПараметрыФоновогоЗадания) Экспорт
ПроверкаКонтрагентов.ПроверитьКонтрагентовВДокументеФоновоеЗадание(ЭтотОбъект, ПараметрыФоновогоЗадания);
КонецПроцедуры
#КонецОбласти
#Область РаботаСФайлами
&НаКлиенте
Процедура Подключаемый_КомандаПанелиПрисоединенныхФайлов(Команда)
РаботаСФайламиКлиент.КомандаУправленияПрисоединеннымиФайлами(ЭтотОбъект, Команда);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПроверкаПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраПроверкаПеретаскивания(ЭтотОбъект, Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраПеретаскивание(ЭтотОбъект, Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраНажатие(Элемент, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраНажатие(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецПроцедуры
#КонецОбласти
#Область ПодключаемыеКоманды
&НаСервере
Процедура ВыполнитьКомандуНаСервере(ПараметрыВыполнения)
ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, ПараметрыВыполнения, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПродолжитьВыполнениеКомандыНаСервере(ПараметрыВыполнения, ДополнительныеПараметры) Экспорт
ВыполнитьКомандуНаСервере(ПараметрыВыполнения);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)
СобытияФормКлиент.ВыполнитьПереопределяемуюКоманду(ЭтотОбъект, Команда);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_СвойстваВыполнитьКоманду(ЭлементИлиКоманда, НавигационнаяСсылка = Неопределено, СтандартнаяОбработка = Неопределено)
УправлениеСвойствамиКлиент.ВыполнитьКоманду(ЭтотОбъект, ЭлементИлиКоманда, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
ПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Объект);
КонецПроцедуры
&НаСервере
Процедура Подключаемый_ВыполнитьКомандуНаСервере(Контекст, Результат) Экспорт
ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, Контекст, Объект, Результат);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПриИзмененииДополнительногоРеквизита(Элемент)
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ДекорацияСостояниеОригиналаНажатие()
УчетОригиналовПервичныхДокументовКлиент.ОткрытьМенюВыбораСостояния(ЭтотОбъект, Элементы.ДекорацияСостояниеОригинала);
КонецПроцедуры
#КонецОбласти
#Область ИнтеграцияС1СДокументооборотом
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуИнтеграции(Команда)
ИнтеграцияС1СДокументооборотБазоваяФункциональностьКлиент.ВыполнитьПодключаемуюКомандуИнтеграции(Команда, ЭтотОбъект, Объект);
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#Область УсловноеОформление
&НаСервере
Процедура УстановитьУсловноеОформление()
УсловноеОформление.Элементы.Очистить();
#Область СтандартноеОформлениеТабличныеЧасти
УстановитьУсловноеОформлениеХарактеристикНоменклатуры("ВыходныеИзделия");
УстановитьУсловноеОформлениеХарактеристикНоменклатуры("ПобочныеИзделия");
УстановитьУсловноеОформлениеХарактеристикНоменклатуры("МатериалыИРаботы");
УстановитьУсловноеОформлениеХарактеристикНоменклатуры("Услуги");
УстановитьУсловноеОформлениеЕдиницИзмерения("ВыходныеИзделия");
УстановитьУсловноеОформлениеЕдиницИзмерения("ПобочныеИзделия");
УстановитьУсловноеОформлениеЕдиницИзмерения("МатериалыИРаботы");
УстановитьУсловноеОформлениеНазначенияНоменклатуры("ВыходныеИзделия");
УстановитьУсловноеОформлениеНазначенияНоменклатуры("ПобочныеИзделия");
УстановитьУсловноеОформлениеНазначенияНоменклатуры("МатериалыИРаботы");
УстановитьУсловноеОформлениеСерийНоменклатуры("ВыходныеИзделия");
УстановитьУсловноеОформлениеСерийНоменклатуры("ПобочныеИзделия");
УстановитьУсловноеОформлениеСерийНоменклатуры("МатериалыИРаботы");
#Область УчетНДС
УчетНДСУП.УстановитьУсловноеОформлениеСуммНДСПоНалогообложениюЗакупки(
ЭтотОбъект,
"УслугиСтавкаНДС",
"УслугиСуммаНДС",
"УслугиСуммаСНДС");
УчетНДСУП.УстановитьУсловноеОформлениеСуммНДСПоСтавкеНДСЗакупки(
ЭтотОбъект,
"УслугиСтавкаНДС",
"УслугиСуммаНДС");
ЦеныПредприятияЗаполнениеСервер.УстановитьУсловноеОформлениеЦенаВключаетНДС(ЭтотОбъект, "УслугиСуммаСНДС");
#КонецОбласти
#КонецОбласти
#Область ГруппировкаЗатрат
#Область ГруппыЗатрат
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ВыходныеИзделияГруппаЗатрат.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ПоЗаказам");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ВыходныеИзделияГруппаЗатрат.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ПобочныеИзделияГруппаЗатрат.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.МатериалыИРаботыГруппаЗатрат.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.УслугиГруппаЗатрат.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("КоличествоГруппЗатрат");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.МеньшеИлиРавно;
ОтборЭлемента.ПравоеЗначение = 1;
Элемент.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
#КонецОбласти
#КонецОбласти
#Область ВыходныеИзделия
#Область Спецификация
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ВыходныеИзделияСпецификация.Имя);
Группировки = Новый СписокЗначений;
Группировки.Добавить(Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоСпецификациям);
Группировки.Добавить(Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоСпецификациямИНазначениям);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ГруппировкаЗатрат");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеВСписке;
ОтборЭлемента.ПравоеЗначение = Группировки;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ВыходныеИзделияСпецификация.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ПоЗаказам");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Группировки = Новый СписокЗначений;
Группировки.Добавить(Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоСпецификациям);
Группировки.Добавить(Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоСпецификациямИНазначениям);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ГруппировкаЗатрат");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
ОтборЭлемента.ПравоеЗначение = Группировки;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
#КонецОбласти
#Область ДоляСтоимости
ПроизводствоСервер.УстановитьУсловноеОформлениеПоляДоляСтоимостиПроцент(ЭтотОбъект, "Объект", "ВыходныеИзделия");
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ВыходныеИзделияДоляСтоимости.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ВыходныеИзделияДоляСтоимостиПроцент.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ВыходныеИзделияЕстьОшибкиЗаполненияДолиСтоимости.Имя);
Группировки = Новый СписокЗначений;
Группировки.Добавить(Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоПродукции);
Группировки.Добавить(Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоПродукцииИНазначениям);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ГруппировкаЗатрат");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
ОтборЭлемента.ПравоеЗначение = Группировки;
Элемент.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
#КонецОбласти
#Область ПлановаяСтоимость
Элемент = УсловноеОформление.Элементы.Добавить();
Элемент.Поля.Элементы.Добавить().Поле = Новый ПолеКомпоновкиДанных(Элементы.ВыходныеИзделияЦена.Имя);
Элемент.Поля.Элементы.Добавить().Поле = Новый ПолеКомпоновкиДанных(Элементы.ВыходныеИзделияСумма.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ИспользоватьПлановуюСтоимость");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
#КонецОбласти
#Область СписаниеНаРасходы
УстановитьУсловноеОформлениеСписатьНаРасходы("ВыходныеИзделия");
#КонецОбласти
#Область Получатель
УстановитьУсловноеОформлениеПолучатель("ВыходныеИзделия");
#КонецОбласти
#КонецОбласти
#Область ПобочныеИзделия
#Область СписаниеНаРасходы
УстановитьУсловноеОформлениеСписатьНаРасходы("ПобочныеИзделия");
#КонецОбласти
#Область Получатель
УстановитьУсловноеОформлениеПолучатель("ПобочныеИзделия");
#КонецОбласти
#КонецОбласти
#Область МатериалыИРаботы
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.МатериалыИРаботыОсновной.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ВедетсяУчетПоГТД");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.МатериалыИРаботыОсновной.Имя);
ГруппаИли = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаИли.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ОтборЭлемента = ГруппаИли.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.МатериалыИРаботы.ВедетсяУчетПоГТД");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = 0;
ОтборЭлемента = ГруппаИли.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.МатериалыИРаботы.ЕстьИмпортноеИзделие");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.МатериалыИРаботы.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.МатериалыИРаботы.Основной");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("Шрифт", ШрифтыСтиля.ВажнаяНадписьШрифт);
#КонецОбласти
#Область Прочее
#Область НаправленияДеятельности
НаправленияДеятельностиСервер.УстановитьУсловноеОформлениеНаправленияДеятельности(ЭтотОбъект);
#КонецОбласти
#КонецОбласти
КонецПроцедуры
&НаСервере
Процедура УстановитьУсловноеОформлениеХарактеристикНоменклатуры(ИмяТЧ)
НоменклатураСервер.УстановитьУсловноеОформлениеХарактеристикНоменклатуры(
ЭтотОбъект,
ИмяТЧ + "Характеристика",
"Объект." + ИмяТЧ + ".ХарактеристикиИспользуются");
КонецПроцедуры
&НаСервере
Процедура УстановитьУсловноеОформлениеЕдиницИзмерения(ИмяТЧ)
ПараметрыУсловногоОформления = НоменклатураСервер.НовыеПараметрыУсловногоОформленияЕдиницИзмерения();
ПараметрыУсловногоОформления.ИмяПоляЕдиницаИзмерения = ИмяТЧ + "НоменклатураЕдиницаИзмерения";
ПараметрыУсловногоОформления.ПутьКПолюУпаковка = "Объект." + ИмяТЧ + ".Упаковка";
НоменклатураСервер.УстановитьУсловноеОформлениеЕдиницИзмерения(ЭтотОбъект, ПараметрыУсловногоОформления);
КонецПроцедуры
&НаСервере
Процедура УстановитьУсловноеОформлениеНазначенияНоменклатуры(ИмяТЧ)
НоменклатураСервер.УстановитьУсловноеОформлениеНазначенияНоменклатуры(
ЭтотОбъект,
ИмяТЧ + "Назначение",
"Объект." + ИмяТЧ + ".ТипНоменклатуры",
Ложь);
Если ИмяТЧ = "ВыходныеИзделия"
Или ИмяТЧ = "ПобочныеИзделия" Тогда
ПолеНазначение = Элементы[ИмяТЧ + "Назначение"];
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(ПолеНазначение.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект." + ИмяТЧ + ".ЗаказПереработчику");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект." + ИмяТЧ + ".КодСтроки");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно;
ОтборЭлемента.ПравоеЗначение = 0;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Если ИмяТЧ = "ВыходныеИзделия" Тогда
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(ПолеНазначение.Имя);
Группировки = Новый СписокЗначений;
Группировки.Добавить(Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоПродукцииИНазначениям);
Группировки.Добавить(Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоСпецификациямИНазначениям);
ГруппаИли = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаИли.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ОтборЭлемента = ГруппаИли.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ГруппировкаЗатрат");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеВСписке;
ОтборЭлемента.ПравоеЗначение = Группировки;
ОтборЭлемента = ГруппаИли.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ПоЗаказам");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьУсловноеОформлениеСерийНоменклатуры(ИмяТЧ)
НоменклатураСервер.УстановитьУсловноеОформлениеСерийНоменклатуры(
ЭтотОбъект,
"СерииВсегдаВТЧТовары",
ИмяТЧ + "Серия",
"Объект." + ИмяТЧ + ".СтатусУказанияСерий",
"Объект." + ИмяТЧ + ".ТипНоменклатуры");
КонецПроцедуры
&НаСервере
Процедура УстановитьУсловноеОформлениеСписатьНаРасходы(ИмяТЧ)
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеНазначение = Элементы[ИмяТЧ + "Назначение"];
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(ПолеНазначение.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект." + ИмяТЧ + ".СписатьНаРасходы");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста" , ЦветаСтиля.НезаполненноеПолеТаблицы);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст" , НСтр("ru = '<не используется при списании на расходы>'"));
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
КонецПроцедуры
&НаСервере
Процедура УстановитьУсловноеОформлениеПолучатель(ИмяТЧ)
ПолеПолучатель = Элементы[ИмяТЧ + "Получатель"];
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(ПолеПолучатель.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект." + ИмяТЧ + ".СписатьНаРасходы");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект." + ИмяТЧ + ".ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ТипыНоменклатуры.Работа;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект." + ИмяТЧ + ".Получатель");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", Новый ПолеКомпоновкиДанных("Объект.Подразделение"));
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(ПолеПолучатель.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект." + ИмяТЧ + ".СписатьНаРасходы");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект." + ИмяТЧ + ".ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ТипыНоменклатуры.Работа;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект." + ИмяТЧ + ".Получатель");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(ПолеПолучатель.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект." + ИмяТЧ + ".ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ТипыНоменклатуры.Работа;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<для работ>'"));
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ТекстЗапрещеннойЯчейкиЦвет);
КонецПроцедуры
#КонецОбласти
#Область НастройкаЭлементовФормы
&НаСервере
Процедура НастроитьЭлементыФормы()
НастроитьЗависимыеЭлементыФормы(ЭтотОбъект);
НастроитьЗависимыеЭлементыФормыНаСервере();
ЗаполнитьСписокВыбораГруппировкиЗатрат();
ЗаполнитьСписокВыбораУслугПоПереработке();
ЗакупкиСервер.ЗаполнитьСписокВыбораНаименованиеВходящегоДокумента(ЭтотОбъект, Объект.Контрагент);
НастроитьКомандыБуфераОбмена(ЭтотОбъект, РаботаСТабличнымиЧастями.ЕстьСтрокиВБуфереОбмена());
Элементы.ВыходныеИзделияПерезаполнитьЗатратныеТЧ.Видимость = ИспользоватьПроизводство;
Элементы.ГруппаНакладнаяПоЗаказам.Видимость = ПолучитьФункциональнуюОпцию("ИспользоватьЗаказыПереработчикам2_5");
УправлениеДаннымиОбИзделияхКлиентСервер.УстановитьПараметрыВыбораСпецификаций(
Элементы.ВыходныеИзделияСпецификация,
ПараметрыВыбораСпецификаций);
Элементы.ВыходныеИзделияСерия.Видимость =
ПараметрыУказанияСерий.ВыходныеИзделия.ИспользоватьСерииНоменклатуры;
Элементы.ПобочныеИзделияСерия.Видимость =
ПараметрыУказанияСерий.ПобочныеИзделия.ИспользоватьСерииНоменклатуры;
Элементы.МатериалыИРаботыСерия.Видимость =
ПараметрыУказанияСерий.МатериалыИРаботы.ИспользоватьСерииНоменклатуры;
Элементы.ВыходныеИзделияУказатьСерии.Видимость =
ПараметрыУказанияСерий.ВыходныеИзделия.ИспользоватьСерииНоменклатуры;
Элементы.ПобочныеИзделияУказатьСерии.Видимость =
ПараметрыУказанияСерий.ПобочныеИзделия.ИспользоватьСерииНоменклатуры;
Элементы.МатериалыИРаботыУказатьСерии.Видимость =
ПараметрыУказанияСерий.МатериалыИРаботы.ИспользоватьСерииНоменклатуры;
Элементы.ВыходныеИзделияЗаполнитьПлановыеЦены.Видимость = ИспользоватьПлановуюСтоимость;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура НастроитьЗависимыеЭлементыФормы(Форма, СписокРеквизитов = "")
Элементы = Форма.Элементы;
Объект = Форма.Объект;
СписокРеквизитов = Новый Структура(СписокРеквизитов);
Инициализация = Не ЗначениеЗаполнено(СписокРеквизитов);
УказаноРаспоряжение =
ЗначениеЗаполнено(Объект.ЗаказПереработчику);
Если Инициализация
Или СписокРеквизитов.Свойство("ЕстьКорректировки")
Или СписокРеквизитов.Свойство("ПоЗаказам") Тогда
Элементы.УслугиПоПереработке.ТолькоПросмотр =
УказаноРаспоряжение
Или Форма.ЕстьКорректировки;
КонецЕсли;
Если Инициализация
Или СписокРеквизитов.Свойство("ГруппировкаЗатрат")
Или СписокРеквизитов.Свойство("ПоЗаказам") Тогда
Элементы.ГруппаВыходныеИзделия.Видимость =
Не Объект.ГруппировкаЗатрат =
ПредопределенноеЗначение("Перечисление.ГруппировкиЗатратВЗаказеПереработчику.ПоЭтапамПроизводства")
Или (УказаноРаспоряжение
И Форма.ЕстьВыпускающийЭтап)
Или Не УказаноРаспоряжение;
Если Не Объект.ГруппировкаЗатрат =
ПредопределенноеЗначение("Перечисление.ГруппировкиЗатратВЗаказеПереработчику.ПоЭтапамПроизводства")
Или (УказаноРаспоряжение
И Форма.ЕстьВыпускающийЭтап)
Или Не УказаноРаспоряжение Тогда
Элементы.ГруппаПобочныеИзделия.Поведение = ПоведениеОбычнойГруппы.Свертываемая;
Иначе
Элементы.ГруппаПобочныеИзделия.Поведение = ПоведениеОбычнойГруппы.Обычное;
КонецЕсли;
КонецЕсли;
Если Инициализация
Или СписокРеквизитов.Свойство("ГруппировкаЗатрат") Тогда
Элементы.СпособРаспределенияЗатратНаВыходныеИзделия.Видимость =
Объект.ГруппировкаЗатрат =
ПредопределенноеЗначение("Перечисление.ГруппировкиЗатратВЗаказеПереработчику.БезГруппировки")
Или Объект.ГруппировкаЗатрат =
ПредопределенноеЗначение("Перечисление.ГруппировкиЗатратВЗаказеПереработчику.ПоСпецификациям")
Или Объект.ГруппировкаЗатрат =
ПредопределенноеЗначение("Перечисление.ГруппировкиЗатратВЗаказеПереработчику.ПоСпецификациямИНазначениям");
НастроитьЭлементыГруппЗатрат(Форма);
КонецЕсли;
Если Инициализация
Или СписокРеквизитов.Свойство("ПоЗаказам") Тогда
Элементы.Организация.ТолькоПросмотр = УказаноРаспоряжение;
Элементы.Подразделение.ТолькоПросмотр = УказаноРаспоряжение;
Элементы.Партнер.ТолькоПросмотр = УказаноРаспоряжение;
Элементы.Контрагент.ТолькоПросмотр = УказаноРаспоряжение;
Элементы.Договор.ТолькоПросмотр = УказаноРаспоряжение;
Элементы.ГруппировкаЗатрат.ТолькоПросмотр = УказаноРаспоряжение;
Элементы.НаправлениеДеятельности.ТолькоПросмотр = УказаноРаспоряжение;
Элементы.ЗакрытьЗаказ.Видимость =
УказаноРаспоряжение
И Не Объект.ГруппировкаЗатрат =
ПредопределенноеЗначение("Перечисление.ГруппировкиЗатратВЗаказеПереработчику.ПоЭтапамПроизводства");
Элементы.ВыходныеИзделияЗаполнитьТЧПоСпецификацииЗаказу.Видимость = УказаноРаспоряжение;
Элементы.ВыходныеИзделияПодобратьИзЗаказа.Видимость = УказаноРаспоряжение;
Элементы.ПобочныеИзделияПодобратьИзЗаказа.Видимость = УказаноРаспоряжение;
ВидимостьЭлемента =
УказаноРаспоряжение
Или Не Объект.ПоЗаказам
И Форма.ИспользоватьПроизводство;
Элементы.ПобочныеИзделияЗаполнитьТЧПоСпецификацииЗаказу.Видимость = ВидимостьЭлемента;
Элементы.МатериалыИРаботыЗаполнитьТЧПоСпецификацииЗаказу.Видимость = ВидимостьЭлемента;
Элементы.УслугиЗаполнитьТЧПоСпецификацииЗаказу.Видимость = ВидимостьЭлемента;
Если ВидимостьЭлемента Тогда
ЗаголовокЭлемента = НСтр("ru = 'По заказу'");
Если Не Объект.ПоЗаказам Тогда
ЗаголовокЭлемента = НСтр("ru = 'По спецификациям'");
КонецЕсли;
Элементы.ПобочныеИзделияЗаполнитьТЧПоСпецификацииЗаказу.Заголовок = ЗаголовокЭлемента;
Элементы.МатериалыИРаботыЗаполнитьТЧПоСпецификацииЗаказу.Заголовок = ЗаголовокЭлемента;
Элементы.УслугиЗаполнитьТЧПоСпецификацииЗаказу.Заголовок = ЗаголовокЭлемента;
КонецЕсли;
КонецЕсли;
Если Инициализация
Или СписокРеквизитов.Свойство("УслугиПоПереработке") Тогда
ИспользоватьУслуги =
Объект.УслугиПоПереработке =
ПредопределенноеЗначение("Перечисление.ВариантыОформленияУслугДокументовПереработки.УказываютсяВЗаказеОтчете");
Элементы.ГруппаОплата.Видимость = ИспользоватьУслуги;
Элементы.ГруппаИтого.Видимость = ИспользоватьУслуги;
Элементы.ГруппаСчетФактура.Видимость = ИспользоватьУслуги;
Элементы.СтраницаУслуги.Видимость = ИспользоватьУслуги;
Элементы.БанковскийСчетОрганизации.Видимость = ИспользоватьУслуги;
Элементы.БанковскийСчетКонтрагента.Видимость = ИспользоватьУслуги;
Элементы.ГруппаФинансовогоУчета.Видимость = ИспользоватьУслуги;
Элементы.РегистрироватьЦеныПоставщика.Видимость = ИспользоватьУслуги;
Если ИспользоватьУслуги Тогда
Форма.ТекстСчетаФактурыПолученные = ПредставлениеСчетаФактурыПолученные(Объект);
КонецЕсли;
КонецЕсли;
Если Инициализация
Или СписокРеквизитов.Свойство("НалогообложениеНДС") Тогда
Если УчетНДСУПКлиентСервер.ОтображатьНДСВИтогахДокументаЗакупки(Объект.НалогообложениеНДС) Тогда
Элементы.ГруппаСтраницыСуммаДокумента.ТекущаяСтраница = Элементы.СтраницаСНДС;
Иначе
Элементы.ГруппаСтраницыСуммаДокумента.ТекущаяСтраница = Элементы.СтраницаБезНДС;
КонецЕсли;
КонецЕсли;
Если Инициализация
Или СписокРеквизитов.Свойство("ХозяйственнаяОперация") Тогда
Если Форма.Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПроизводствоУПереработчикаВСтранахЕАЭС2_5") Тогда
Форма.Элементы.ГруппаСтраницыСуммаДокумента.ТекущаяСтраница = Форма.Элементы.СтраницаБезНДС;
Форма.Элементы.СтраницаСНДС.Видимость = Ложь;
Форма.Элементы.ПолеБезНДСПродукции.Видимость = Ложь;
Иначе
Форма.Элементы.СтраницаСНДС.Видимость = Истина;
Форма.Элементы.ПолеБезНДСПродукции.Видимость = Истина;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура НастроитьЗависимыеЭлементыФормыНаСервере(СписокРеквизитов = "")
СписокРеквизитов = Новый Структура(СписокРеквизитов);
Инициализация = Не ЗначениеЗаполнено(СписокРеквизитов);
Если Инициализация
Или СписокРеквизитов.Свойство("Партнер")
Или СписокРеквизитов.Свойство("Контрагент")
Или СписокРеквизитов.Свойство("Организация") Тогда
НастроитьЭлементДоговорКонтрагента();
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура НастроитьЗависимыеЭлементыФормыПоЗаказу(Форма)
Элементы = Форма.Элементы;
Объект = Форма.Объект;
Элементы.КартинкаРасхождениеЗаказ.Видимость =
ЗначениеЗаполнено(Объект.ЗаказПереработчику)
И Не Форма.КоличествоСверхЗаказа = 0;
Если Форма.КоличествоСверхЗаказа > 0 Тогда
Форма.НадписьРасхождениеЗаказ = НСтр("ru='Строк сверх заказа: %1'");
Форма.НадписьРасхождениеЗаказ = СтрШаблон(Форма.НадписьРасхождениеЗаказ, Форма.КоличествоСверхЗаказа);
Элементы.КартинкаРасхождениеЗаказ.Картинка = БиблиотекаКартинок.ПревышениеЗаказа;
Иначе
Форма.НадписьРасхождениеЗаказ = "";
Элементы.КартинкаРасхождениеЗаказ.Картинка = БиблиотекаКартинок.ПустаяКартинка;
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура НастроитьЭлементыГруппЗатрат(Форма)
Элементы = Форма.Элементы;
Объект = Форма.Объект;
Если Не Объект.ГруппировкаЗатрат = ПредопределенноеЗначение("Перечисление.ГруппировкиЗатратВЗаказеПереработчику.БезГруппировки") Тогда
ПереченьПолейГруппыЗатрат =
?(Объект.ПоЗаказам,
ПереработкаНаСторонеКлиентСервер.ПереченьПолейГруппыЗатратЗаказаПереработчику(Объект.ГруппировкаЗатрат),
ПереработкаНаСторонеКлиентСервер.ПереченьПолейГруппыЗатратОтчетаПереработчика(Объект.ГруппировкаЗатрат));
ЗаголовокГруппы = ПереработкаНаСторонеКлиентСервер.ЗаголовокПоляГруппыЗатрат2_5(ПереченьПолейГруппыЗатрат);
Элемент = Элементы.ВыходныеИзделияГруппаЗатрат;
Элемент.Заголовок = ЗаголовокГруппы;
Элемент = Элементы.ПобочныеИзделияГруппаЗатрат;
Элемент.Заголовок = ЗаголовокГруппы;
Элемент = Элементы.МатериалыИРаботыГруппаЗатрат;
Элемент.Заголовок = ЗаголовокГруппы;
Элемент = Элементы.УслугиГруппаЗатрат;
Элемент.Заголовок = ЗаголовокГруппы;
ШаблонПодсказки = ПереработкаНаСторонеКлиентСервер.ШаблонПодсказкиПоляГруппыЗатрат2_5(Объект.ГруппировкаЗатрат);
Элементы.ВыходныеИзделияГруппаЗатрат.Подсказка = СтрШаблон(ШаблонПодсказки, НСтр("ru = 'изделие'"));
Элементы.ПобочныеИзделияГруппаЗатрат.Подсказка = СтрШаблон(ШаблонПодсказки, НСтр("ru = 'изделие'"));
Элементы.УслугиГруппаЗатрат.Подсказка = СтрШаблон(ШаблонПодсказки, НСтр("ru = 'услуга'"));
Элементы.МатериалыИРаботыГруппаЗатрат.Подсказка = СтрШаблон(ШаблонПодсказки, НСтр("ru = 'материал/работа'"));
КонецЕсли;
КнопкаОткрытия =
Объект.ГруппировкаЗатрат =
ПредопределенноеЗначение("Перечисление.ГруппировкиЗатратВЗаказеПереработчику.ПоЭтапамПроизводства");
Элементы.ВыходныеИзделияГруппаЗатрат.КнопкаОткрытия = КнопкаОткрытия;
Элементы.ПобочныеИзделияГруппаЗатрат.КнопкаОткрытия = КнопкаОткрытия;
Элементы.УслугиГруппаЗатрат.КнопкаОткрытия = КнопкаОткрытия;
Элементы.МатериалыИРаботыГруппаЗатрат.КнопкаОткрытия = КнопкаОткрытия;
КонецПроцедуры
&НаСервере
Процедура УстановитьПодпискуНаСобытияИзмененияЭлементовФормы()
МассивЭлементов = Новый Массив;
МассивЭлементов.Добавить("Дата");
МассивЭлементов.Добавить("Организация");
МассивЭлементов.Добавить("Подразделение");
МассивЭлементов.Добавить("Партнер");
МассивЭлементов.Добавить("Контрагент");
МассивЭлементов.Добавить("Договор");
МассивЭлементов.Добавить("ГруппировкаЗатрат");
МассивЭлементов.Добавить("ЦенаВключаетНДС");
МассивЭлементов.Добавить("НалогообложениеНДС");
МассивЭлементов.Добавить("ЗакупкаПодДеятельность");
МассивЭлементов.Добавить("НаправлениеДеятельности");
МассивЭлементов.Добавить("ПоЗаказам");
МассивЭлементов.Добавить("БанковскийСчетОрганизации");
МассивЭлементов.Добавить("БанковскийСчетКонтрагента");
МассивЭлементов.Добавить("ПорядокРасчетов");
МассивЭлементов.Добавить("ФормаОплаты");
Если Не Объект.ПоЗаказам Тогда
ИменаЭлементовТЧ = Новый Массив;
ИменаЭлементовТЧ.Добавить("ВыходныеИзделияГруппаЗатрат");
ИменаЭлементовТЧ.Добавить("ВыходныеИзделияНоменклатура");
ИменаЭлементовТЧ.Добавить("ВыходныеИзделияХарактеристика");
ИменаЭлементовТЧ.Добавить("ВыходныеИзделияНазначение");
ИменаЭлементовТЧ.Добавить("ВыходныеИзделияСерия");
ИменаЭлементовТЧ.Добавить("ВыходныеИзделияКоличествоУпаковок");
ИменаЭлементовТЧ.Добавить("ВыходныеИзделияУпаковка");
ИменаЭлементовТЧ.Добавить("ВыходныеИзделияСпецификация");
ИменаИсключений = Новый Массив;
ДобавитьИменаИсключенийПодчиненныхЭлементов(Элементы.ВыходныеИзделия, ИменаЭлементовТЧ, ИменаИсключений);
МассивЭлементов.Добавить("ВыходныеИзделия;ПередНачаломДобавления,ПередУдалением;" + СтрСоединить(ИменаИсключений, ","));
МассивЭлементов.Добавить("ВыходныеИзделияДобавить");
МассивЭлементов.Добавить("ВыходныеИзделияСкопировать");
МассивЭлементов.Добавить("ВыходныеИзделияУдалить");
МассивЭлементов.Добавить("ВыходныеИзделияВставитьСтроки");
МассивЭлементов.Добавить("ВыходныеИзделияПоискПоШтрихкоду");
МассивЭлементов.Добавить("ВыходныеИзделияЗагрузитьДанныеИзТСД");
МассивЭлементов.Добавить("ВыходныеИзделияКонтекстноеМенюДобавить");
МассивЭлементов.Добавить("ВыходныеИзделияКонтекстноеМенюСкопировать");
МассивЭлементов.Добавить("ВыходныеИзделияКонтекстноеМенюУдалить");
МассивЭлементов.Добавить("ВыходныеИзделияПодобратьТовары");
МассивЭлементов.Добавить("ВыходныеИзделияПодобратьИзЗаказа");
МассивЭлементов.Добавить("ВыходныеИзделияПерезаполнитьЗатратныеТЧ");
МассивЭлементов.Добавить("ВыходныеИзделияЗаполнитьГруппуЗатрат");
МассивЭлементов.Добавить("ВыходныеИзделияУказатьСерии");
МассивЭлементов.Добавить("ВыходныеИзделияПеренестиВПобочныеИзделия");
КонецЕсли;
ИменаЭлементовТЧ = Новый Массив;
ИменаЭлементовТЧ.Добавить("УслугиГруппаЗатрат");
ИменаЭлементовТЧ.Добавить("УслугиНоменклатура");
ИменаЭлементовТЧ.Добавить("УслугиХарактеристика");
ИменаЭлементовТЧ.Добавить("УслугиКоличество");
ИменаЭлементовТЧ.Добавить("УслугиВидЦеныПоставщика");
ИменаЭлементовТЧ.Добавить("УслугиЦена");
ИменаЭлементовТЧ.Добавить("УслугиСумма");
ИменаЭлементовТЧ.Добавить("УслугиСуммаНДС");
ИменаЭлементовТЧ.Добавить("УслугиСтавкаНДС");
ИменаЭлементовТЧ.Добавить("УслугиСуммаСНДС");
ИменаЭлементовТЧ.Добавить("УслугиСтатьяКалькуляции");
ИменаИсключений = Новый Массив;
ДобавитьИменаИсключенийПодчиненныхЭлементов(Элементы.Услуги, ИменаЭлементовТЧ, ИменаИсключений);
МассивЭлементов.Добавить("Услуги;ПередНачаломДобавления,ПередУдалением,ПередНачаломИзменения;" + СтрСоединить(ИменаИсключений, ","));
МассивЭлементов.Добавить("УслугиДобавить");
МассивЭлементов.Добавить("УслугиСкопировать");
МассивЭлементов.Добавить("УслугиУдалить");
МассивЭлементов.Добавить("УслугиВставитьСтроки");
МассивЭлементов.Добавить("УслугиПоискПоШтрихкоду");
МассивЭлементов.Добавить("УслугиЗагрузитьДанныеИзТСД");
МассивЭлементов.Добавить("УслугиКонтекстноеМенюДобавить");
МассивЭлементов.Добавить("УслугиКонтекстноеМенюСкопировать");
МассивЭлементов.Добавить("УслугиКонтекстноеМенюУдалить");
МассивЭлементов.Добавить("УслугиПодобратьТовары");
МассивЭлементов.Добавить("УслугиЗаполнитьТЧПоСпецификацииЗаказу");
МассивЭлементов.Добавить("УслугиЗаполнитьЦеныПоВидуЦеныПоставщика");
МассивЭлементов.Добавить("УслугиЗаполнитьГруппуЗатрат");
МассивЭлементов.Добавить("УслугиВыбратьИЗаполнитьУслугу");
ОбщегоНазначенияУТ.УстановитьПодпискуНаСобытияИзмененияЭлементовФормы(ЭтотОбъект, МассивЭлементов, Объект.Проведен);
КонецПроцедуры
&НаСервере
Процедура НастроитьЭлементДоговорКонтрагента()
ПараметрыОбъекта = Новый Структура("Партнер, Контрагент, Организация, Договор");
ЗаполнитьЗначенияСвойств(ПараметрыОбъекта, Объект);
ЗакупкиСервер.УстановитьДоступностьДоговора(
ПараметрыОбъекта,
Элементы.Договор.Доступность,
Ложь,
Объект.Договор);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСписокВыбораГруппировкиЗатрат()
ПараметрыИспользования = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПараметрыИспользования();
ПараметрыИспользования.ПоСпецификациям = ИспользоватьПроизводство;
Если ПолучитьФункциональнуюОпцию("ИспользоватьОбособленноеОбеспечениеЗаказов") Тогда
ПараметрыИспользования.ПоПродукцииИНазначениям = Истина;
ПараметрыИспользования.ПоСпецификациямИНазначениям = ИспользоватьПроизводство;
КонецЕсли;
Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ЗаполнитьДанныеВыбора(
Элементы.ГруппировкаЗатрат.СписокВыбора,
ПараметрыИспользования);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСписокВыбораУслугПоПереработке()
Элементы.УслугиПоПереработке.СписокВыбора.Очистить();
УслугиУказываютсяВЗаказеОтчете = Перечисления.ВариантыОформленияУслугДокументовПереработки.УказываютсяВЗаказеОтчете;
ПредставлениеУслугиУказываютсяВЗаказеОтчете = "";
Если Не Объект.ПоЗаказам Тогда
ПредставлениеУслугиУказываютсяВЗаказеОтчете = НСтр("ru = 'Указываются в отчете'");
КонецЕсли;
Элементы.УслугиПоПереработке.СписокВыбора.Добавить(УслугиУказываютсяВЗаказеОтчете, ПредставлениеУслугиУказываютсяВЗаказеОтчете);
УслугиОформляютсяОтдельно = Перечисления.ВариантыОформленияУслугДокументовПереработки.ОформляютсяОтдельно;
Элементы.УслугиПоПереработке.СписокВыбора.Добавить(УслугиОформляютсяОтдельно);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура НастроитьКомандыБуфераОбмена(Форма, ДоступностьЭлементов)
Элементы = Форма.Элементы;
Элемент = Элементы.ВыходныеИзделияВставитьСтроки;
Элемент.Доступность = ДоступностьЭлементов;
Элемент = Элементы.ВыходныеИзделияКонтекстноеМенюВставитьСтроки;
Элемент.Доступность = ДоступностьЭлементов;
Элемент = Элементы.ПобочныеИзделияВставитьСтроки;
Элемент.Доступность = ДоступностьЭлементов;
Элемент = Элементы.ПобочныеИзделияКонтекстноеМенюВставитьСтроки;
Элемент.Доступность = ДоступностьЭлементов;
Элемент = Элементы.МатериалыИРаботыВставитьСтроки;
Элемент.Доступность = ДоступностьЭлементов;
Элемент = Элементы.МатериалыИРаботыКонтекстноеМенюВставитьСтроки;
Элемент.Доступность = ДоступностьЭлементов;
Элемент = Элементы.УслугиВставитьСтроки;
Элемент.Доступность = ДоступностьЭлементов;
Элемент = Элементы.УслугиКонтекстноеМенюВставитьСтроки;
Элемент.Доступность = ДоступностьЭлементов;
КонецПроцедуры
&НаСервере
Процедура СвойстваВыполнитьОтложеннуюИнициализацию()
УправлениеСвойствами.ЗаполнитьДополнительныеРеквизитыВФорме(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьЗависимостиДополнительныхРеквизитов()
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийФормы
#Область СобытияФормы
&НаСервере
Процедура ПриЧтенииСозданииНаСервере()
ЗаполнитьСлужебныеРеквизиты();
ЗаполнитьЗависимыеСлужебныеРеквизитыНаСервере();
ЗаполнитьСлужебныеРеквизитыТабличныхЧастей();
ОбновитьГруппыЗатрат();
АктуализироватьЗакупкуПодДеятельность(, Ложь);
АктуализироватьНалогообложениеНДС(, Ложь);
НаправленияДеятельностиСервер.ПриЧтенииСозданииНаСервере(ЭтотОбъект);
ОбновитьТекстСчетаФактуры(Новый Структура);
РассчитатьИтогиДокумента(ЭтотОбъект);
НастроитьЭлементыФормы();
УстановитьПодпискуНаСобытияИзмененияЭлементовФормы();
КонецПроцедуры
&НаСервере
Процедура ОбновитьЭлементыДополнительныхРеквизитов()
УправлениеСвойствами.ОбновитьЭлементыДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаВыбораПодборНаКлиенте(ВыбранноеЗначение, ИмяТЧ)
Если Не ЗначениеЗаполнено(ВыбранноеЗначение) Тогда
Возврат;
КонецЕсли;
ВыбранноеЗначение.Вставить("ИмяТЧ", ИмяТЧ);
ОбработкаВыбораПодборНаСервере(ВыбранноеЗначение, ИмяТЧ);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаВыбораПодборНаКлиентеЗавершение(Ответ, ВыбранноеЗначение) Экспорт
Если Ответ = КодВозвратаДиалога.Да Тогда
Объект.НеОтгружатьЧастями = Ложь;
НастроитьЗависимыеЭлементыФормы(ЭтотОбъект, "НеОтгружатьЧастями");
КонецЕсли;
ОбработкаВыбораПодборНаСервере(ВыбранноеЗначение, ВыбранноеЗначение.ИмяТЧ);
КонецПроцедуры
&НаСервере
Процедура ОбработкаВыбораПодборНаСервере(ВыбранноеЗначение, ИмяТЧ)
ТаблицаТоваров = ПолучитьИзВременногоХранилища(ВыбранноеЗначение.АдресТоваровВХранилище);
ТаблицаДокумента = Объект[ИмяТЧ];
Если ИмяТЧ = "ВыходныеИзделия"
И ИспользоватьПлановуюСтоимость
Или ИмяТЧ = "ПобочныеИзделия" Тогда
СписокСвойств = "Номенклатура, Характеристика, Упаковка, Цена, КоличествоУпаковок, Количество";
ИначеЕсли ИмяТЧ = "ВыходныеИзделия" Тогда
СписокСвойств = "Номенклатура, Характеристика, Упаковка, КоличествоУпаковок, Количество";
ИначеЕсли ИмяТЧ = "МатериалыИРаботы" Тогда
СписокСвойств = "Номенклатура, Характеристика, Упаковка, КоличествоУпаковок, Количество";
ИначеЕсли ИмяТЧ = "Услуги" Тогда
СписокСвойств = "Номенклатура, Характеристика, ВидЦеныПоставщика, Цена, Количество";
КонецЕсли;
Группировки = Новый Массив;
ГруппировкиКЗаполнению = Новый Массив;
ДанныеОбИзделиях = Новый Массив;
ОбрабатываемыеСтроки = Новый Массив;
Для Каждого СтрокаТовара Из ТаблицаТоваров Цикл
ТекущиеДанные = ТаблицаДокумента.Добавить();
ЗаполнитьЗначенияСвойств(ТекущиеДанные, СтрокаТовара, СписокСвойств);
Если ИмяТЧ = "ВыходныеИзделия"
И Не Объект.ПоЗаказам Тогда
ДанныеОбИзделиях.Добавить(
УправлениеДаннымиОбИзделияхКлиентСервер.СобратьДанныеОбИзделииДляВыбораСпецификации(
Объект, ТекущиеДанные, ПараметрыВыбораСпецификаций, ЭтотОбъект));
КонецЕсли;
ОбрабатываемыеСтроки.Добавить(ТекущиеДанные);
КонецЦикла;
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
СтруктураДействий = Новый Структура;
ДобавитьДействияЗаполнитьСлужебныеРеквизитыНоменклатуры(ИмяТЧ, СтруктураДействий);
ДобавитьДействияЗаполнитьСтавкуНДС(ЭтотОбъект, ИмяТЧ, СтруктураДействий);
ДобавитьДействияПересчетаСумм(ЭтотОбъект, ИмяТЧ, СтруктураДействий);
ДобавитьДействияОчиститьЗаполнитьСтатьюАналитику(ЭтотОбъект, ИмяТЧ, СтруктураДействий);
ДобавитьДействияПроверитьСериюРассчитатьСтатус(ЭтотОбъект, ИмяТЧ, СтруктураДействий);
Если Не ИмяТЧ = "МатериалыИРаботы" Тогда
ЗаказыКлиентСервер.ДобавитьДействиеЗаполнитьПризнакРасхождениеЗаказ(СтруктураДействий, Объект.ПоЗаказам);
КонецЕсли;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
ТаблицаДокумента,
КэшированныеЗначения);
Для Каждого ТекущиеДанные Из ОбрабатываемыеСтроки Цикл
Если ИмяТЧ = "ВыходныеИзделия" Тогда
Если Не Объект.ПоЗаказам Тогда
ДобавитьИзменитьГруппуЗатрат(ТекущиеДанные, Истина);
Иначе
УстановитьНомерГруппыЗатратПоУмолчанию(ИмяТЧ, ТекущиеДанные.ПолучитьИдентификатор());
КонецЕсли;
Группировки.Добавить(ТекущиеДанные.НомерГруппыЗатрат);
Иначе
УстановитьНомерГруппыЗатратПоУмолчанию(ИмяТЧ, ТекущиеДанные.ПолучитьИдентификатор());
КонецЕсли;
ГруппировкиКЗаполнению.Добавить(ТекущиеДанные.НомерГруппыЗатрат);
КонецЦикла;
СтруктураДействий = Новый Структура;
ДобавитьДействияПроверитьЗаполнитьДолюСтоимости(ЭтотОбъект, ИмяТЧ, СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(ТаблицаТоваров, СтруктураДействий);
Если ИмяТЧ = "ВыходныеИзделия" Тогда
РассчитатьПроцентРаспределенияЗатратНаВыходныеИзделия(Группировки);
КонецЕсли;
Если Не ГруппировкиКЗаполнению.Количество() = 0 Тогда
ГруппировкиКЗаполнению = ОбщегоНазначенияКлиентСервер.СвернутьМассив(ГруппировкиКЗаполнению);
Для Каждого ТекГруппа Из ГруппировкиКЗаполнению Цикл
ТаблицаЗаполнитьЗависимыеСлужебныеРеквизитыГруппыЗатрат(ИмяТЧ, ТекГруппа);
КонецЦикла;
КонецЕсли;
Если ИмяТЧ = "ВыходныеИзделия"
Или ИмяТЧ = "ПобочныеИзделия" Тогда
СписокРеквизитов = "КоличествоСверхЗаказа,КоличествоИзделий,ВедетсяУчетПоГТД";
ИначеЕсли ИмяТЧ = "Услуги" Тогда
СписокРеквизитов = "КоличествоСверхЗаказа,СуммаУслуг";
Иначе
СписокРеквизитов = "НеВыполнять";
КонецЕсли;
РассчитатьИтогиДокумента(ЭтотОбъект, СписокРеквизитов);
КонецПроцедуры
&НаСервере
Процедура ОбработкаВыбораПодборПереданныхТоваров(ВыбранноеЗначение)
ТаблицаТоваров = ПолучитьИзВременногоХранилища(ВыбранноеЗначение.АдресТоваровВХранилище);
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
ГруппировкиКЗаполнению = Новый Массив;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьКоличествоУпаковок");
ДобавитьДействияЗаполнитьСлужебныеРеквизитыНоменклатуры("МатериалыИРаботы", СтруктураДействий);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьКоличествоУпаковок");
ДобавитьДействияЗаполнитьСлужебныеРеквизитыНоменклатуры("МатериалыИРаботы", СтруктураДействий);
ДобавитьДействияПроверитьСериюРассчитатьСтатус(ЭтотОбъект, "МатериалыИРаботы", СтруктураДействий);
ОбрабатываемыеСтроки = Новый Массив;
Для Каждого СтрокаТовара Из ТаблицаТоваров Цикл
ПоискТоваров = Новый Структура();
ПоискТоваров.Вставить("Номенклатура", СтрокаТовара.Номенклатура);
ПоискТоваров.Вставить("Характеристика", СтрокаТовара.Характеристика);
ПоискТоваров.Вставить("Назначение", СтрокаТовара.Назначение);
ПоискТоваров.Вставить("Серия", СтрокаТовара.Серия);
СтрокиТоваров = Объект.МатериалыИРаботы.НайтиСтроки(ПоискТоваров);
Если СтрокиТоваров.Количество() = 0 Тогда
ТекущиеДанные = Объект.МатериалыИРаботы.Добавить();
ЗаполнитьЗначенияСвойств(ТекущиеДанные, СтрокаТовара);
УстановитьНомерГруппыЗатратПоУмолчанию("МатериалыИРаботы", ТекущиеДанные.ПолучитьИдентификатор());
ГруппировкиКЗаполнению.Добавить(ТекущиеДанные.НомерГруппыЗатрат);
ИначеЕсли СтрокиТоваров.Количество() = 1 Тогда
ТекущиеДанные = СтрокиТоваров[0];
ИначеЕсли СтрокиТоваров.Количество() > 1 Тогда
Для Каждого СтрокаКУдалению Из СтрокиТоваров Цикл
Объект.МатериалыИРаботы.Удалить(СтрокаКУдалению);
КонецЦикла;
ТекущиеДанные = Объект.МатериалыИРаботы.Добавить();
ЗаполнитьЗначенияСвойств(ТекущиеДанные, СтрокаТовара);
УстановитьНомерГруппыЗатратПоУмолчанию("МатериалыИРаботы", ТекущиеДанные.ПолучитьИдентификатор());
ГруппировкиКЗаполнению.Добавить(ТекущиеДанные.НомерГруппыЗатрат);
КонецЕсли;
ТекущиеДанные.Количество = СтрокаТовара.КоличествоПодобрано;
ОбрабатываемыеСтроки.Добавить(ТекущиеДанные);
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.МатериалыИРаботы,
КэшированныеЗначения);
Если Не ГруппировкиКЗаполнению.Количество() = 0 Тогда
ГруппировкиКЗаполнению = ОбщегоНазначенияКлиентСервер.СвернутьМассив(ГруппировкиКЗаполнению);
Для Каждого ТекГруппа Из ГруппировкиКЗаполнению Цикл
ТаблицаЗаполнитьЗависимыеСлужебныеРеквизитыГруппыЗатрат("МатериалыИРаботы", ТекГруппа);
КонецЦикла;
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ПоместитьТоварыВХранилищеДляПодбораПереданногоТовара()
Адрес = ПоместитьВоВременноеХранилище(
Объект.МатериалыИРаботы.Выгрузить(,"НомерСтроки, Номенклатура, Характеристика, Назначение, Серия, Количество"),
УникальныйИдентификатор);
Возврат Адрес;
КонецФункции
#КонецОбласти
#Область ЭлементыФормы
#Область Основное
&НаКлиенте
Процедура СнятьНакладнаяПоЗаказуЗавершение(Ответ, ДополнительныеПараметры) Экспорт
ОценкаПроизводительностиКлиент.ЗамерВремени(
"Документ.ОтчетПереработчика2_5.Форма.ФормаДокумента.НакладнаяПоЗаказуСнять");
Если Ответ = КодВозвратаДиалога.Да Тогда
СнятьНакладнаяПоЗаказуНаСервере();
Иначе
Объект.ПоЗаказам = Истина;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура СнятьНакладнаяПоЗаказуНаСервере()
Объект.ЗаказПереработчику = Неопределено;
Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.БезГруппировки;
Объект.СпособРаспределенияЗатратНаВыходныеИзделия = Перечисления.СпособыРаспределенияЗатратНаВыходныеИзделия.ПоДолямСтоимости;
Объект.ВыходныеИзделия.Очистить();
Объект.ПобочныеИзделия.Очистить();
Объект.МатериалыИРаботы.Очистить();
Объект.Услуги.Очистить();
ЕстьВыпускающийЭтап = Ложь;
ГруппировкаЗатратПриИзмененииНаСервере();
ЗаполнитьСписокВыбораУслугПоПереработке();
ВзаиморасчетыСервер.ПриИзмененииПараметровМеханизма(ЭтотОбъект);
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтотОбъект, "НакладнаяПоЗаказу");
ЗаполнитьЗависимыеСлужебныеРеквизитыНаСервере("ПоЗаказам");
РассчитатьИтогиДокумента(ЭтотОбъект);
НастроитьЭлементыФормы();
УстановитьПодпискуНаСобытияИзмененияЭлементовФормы();
КонецПроцедуры
&НаСервере
Процедура ДатаПриИзмененииНаСервере()
ОтветственныеЛицаСервер.ПриИзмененииСвязанныхРеквизитовДокумента(Объект);
АктуализироватьЗакупкуПодДеятельность();
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтотОбъект, "Дата");
ЗаполнитьЗависимыеСлужебныеРеквизитыНаСервере("Дата");
СпособРаспределенияЗатратНаВыходныеИзделияПриИзмененииНаСервере();
КонецПроцедуры
&НаСервере
Процедура ПартнерПриИзмененииНаСервере(ИзмененияУчтены = Неопределено)
Если ИзмененияУчтены = Неопределено Тогда
ИзмененияУчтены = Новый Структура;
КонецЕсли;
КонтрагентДоИзменения = Объект.Контрагент;
ПартнерыИКонтрагенты.ЗаполнитьКонтрагентаПартнераПоУмолчанию(Объект.Партнер, Объект.Контрагент);
Если КонтрагентДоИзменения <> Объект.Контрагент Тогда
ЗаполнитьДоговорПоУмолчанию(ИзмененияУчтены);
КонецЕсли;
КонтрагентПриИзмененииНаСервере(ИзмененияУчтены);
ДоговорПриИзмененииНаСервере(ИзмененияУчтены);
ЗаполнитьЗависимыеСлужебныеРеквизитыНаСервере("Партнер");
Если Не ЗначениеЗаполнено(Объект.ЗаказПереработчику)
И ИспользоватьНаправленияДеятельности
И Не ИзмененияУчтены.Свойство("НаправлениеДеятельности") Тогда
НаправленияДеятельностиСервер.ЗаполнитьНаправлениеПоУмолчанию(Объект.НаправлениеДеятельности, , Объект.Договор);
КонецЕсли;
Если Не ИзмененияУчтены.Свойство("ЗакупкаПодДеятельность") Тогда
АктуализироватьЗакупкуПодДеятельность(ИзмененияУчтены);
КонецЕсли;
Если Не ИзмененияУчтены.Свойство("НалогообложениеНДС") Тогда
АктуализироватьНалогообложениеНДС(ИзмененияУчтены);
КонецЕсли;
НастроитьЗависимыеЭлементыФормыНаСервере("Партнер");
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтотОбъект, "Партнер");
ОтветственныеЛицаСервер.ПриИзмененииСвязанныхРеквизитовДокумента(Объект);
ОбновитьТекстСчетаФактуры(ИзмененияУчтены);
ОбработатьИзменениеНаправленияДеятельности(ИзмененияУчтены);
КонецПроцедуры
&НаСервере
Процедура КонтрагентПриИзмененииНаСервере(ИзмененияУчтены = Неопределено)
Если ИзмененияУчтены = Неопределено Тогда
ИзмененияУчтены = Новый Структура;
КонецЕсли;
Если ИзмененияУчтены.Свойство("Контрагент") Тогда
Возврат;
КонецЕсли;
Если ЗначениеЗаполнено(Объект.Контрагент) Тогда
ЗаполнитьДоговорПоУмолчанию(ИзмененияУчтены);
КонецЕсли;
ДоговорПриИзмененииНаСервере(ИзмененияУчтены);
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтотОбъект, "Контрагент");
ЗакупкиСервер.ЗаполнитьСписокВыбораНаименованиеВходящегоДокумента(ЭтотОбъект, Объект.Контрагент);
ИзмененияУчтены.Вставить("Контрагент");
КонецПроцедуры
&НаСервере
Процедура ДоговорПриИзмененииНаСервере(ИзмененияУчтены = Неопределено)
Если ИзмененияУчтены = Неопределено Тогда
ИзмененияУчтены = Новый Структура;
КонецЕсли;
Если ИзмененияУчтены.Свойство("Договор") Тогда
Возврат;
КонецЕсли;
РеквизитыДоговора = "Подразделение, Менеджер";
РеквизитыДоговора = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Объект.Договор, РеквизитыДоговора);
Для Каждого ТекущийРеквизит Из РеквизитыДоговора Цикл
Если ЗначениеЗаполнено(ТекущийРеквизит.Значение) Тогда
Объект[ТекущийРеквизит.Ключ] = ТекущийРеквизит.Значение;
КонецЕсли;
КонецЦикла;
ЗакупкиВызовСервера.ЗаполнитьБанковскиеСчетаПоДоговору(Объект.Договор, Объект.БанковскийСчетОрганизации);
Если Не ЗначениеЗаполнено(Объект.ЗаказПереработчику)
И ИспользоватьНаправленияДеятельности
И Не ИзмененияУчтены.Свойство("НаправлениеДеятельности") Тогда
НаправленияДеятельностиСервер.ЗаполнитьНаправлениеПоУмолчанию(Объект.НаправлениеДеятельности, , Объект.Договор);
КонецЕсли;
Если Не ИзмененияУчтены.Свойство("ЗакупкаПодДеятельность") Тогда
АктуализироватьЗакупкуПодДеятельность(ИзмененияУчтены);
КонецЕсли;
РеквизитыДоговора = "ТипДоговора, ВариантОформленияЗакупок";
РеквизитыДоговора = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Объект.Договор, РеквизитыДоговора);
Объект.ХозяйственнаяОперация = Справочники.ДоговорыКонтрагентов.ХозяйственнаяОперация(РеквизитыДоговора.ТипДоговора, РеквизитыДоговора.ВариантОформленияЗакупок);
Если Не ЗначениеЗаполнено(Объект.ХозяйственнаяОперация) Тогда
Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПроизводствоУПереработчика2_5;
КонецЕсли;
Если Не ИзмененияУчтены.Свойство("НалогообложениеНДС") Тогда
АктуализироватьНалогообложениеНДС(ИзмененияУчтены);
КонецЕсли;
НастроитьЗависимыеЭлементыФормы(ЭтотОбъект, "ХозяйственнаяОперация");
НастроитьЭлементДоговорКонтрагента();
ОбновитьТекстСчетаФактуры(ИзмененияУчтены);
ОбработатьИзменениеНаправленияДеятельности(ИзмененияУчтены);
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтотОбъект, "Договор");
ИзмененияУчтены.Вставить("Договор");
КонецПроцедуры
&НаСервере
Процедура ОрганизацияПриИзмененииНаСервере(ИзмененияУчтены = Неопределено)
Если ИзмененияУчтены = Неопределено Тогда
ИзмененияУчтены = Новый Структура;
КонецЕсли;
Если ИзмененияУчтены.Свойство("Организация") Тогда
Возврат;
КонецЕсли;
Если ЗначениеЗаполнено(Объект.Контрагент) Тогда
ЗаполнитьДоговорПоУмолчанию(ИзмененияУчтены);
КонецЕсли;
ДоговорПриИзмененииНаСервере(ИзмененияУчтены);
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтотОбъект, "Организация");
ДенежныеСредстваСервер.ПроверитьЗаполнитьБанковскийСчетОрганизацииПоВладельцу(
Объект.Организация,
Объект.БанковскийСчетОрганизации,
Объект.ФормаОплаты,
Объект.НаправлениеДеятельности);
ОтветственныеЛицаСервер.ПриИзмененииСвязанныхРеквизитовДокумента(Объект);
ОбновитьТекстСчетаФактуры(ИзмененияУчтены);
ОбработатьИзменениеНаправленияДеятельности(ИзмененияУчтены);
ЗаполнитьЗависимыеСлужебныеРеквизитыНаСервере("Организация");
ИзмененияУчтены.Вставить("Организация");
КонецПроцедуры
&НаСервере
Процедура УслугиПоПереработкеПриИзмененииНаСервере()
ИспользоватьУслуги =
Объект.УслугиПоПереработке =
ПредопределенноеЗначение("Перечисление.ВариантыОформленияУслугДокументовПереработки.УказываютсяВЗаказеОтчете");
Если Не ИспользоватьУслуги Тогда
Объект.Услуги.Очистить();
Объект.ЭтапыГрафикаОплаты.Очистить();
Объект.РасшифровкаПлатежа.Очистить();
Объект.БанковскийСчетОрганизации = Неопределено;
Объект.БанковскийСчетКонтрагента = Неопределено;
Объект.ФормаОплаты = Неопределено;
Объект.ОплатаВВалюте = Неопределено;
Объект.ГруппаФинансовогоУчета = Неопределено;
Объект.РегистрироватьЦеныПоставщика = Ложь;
Объект.СуммаВзаиморасчетов = 0;
Объект.СуммаВзаиморасчетовПоЗаказу = 0;
Объект.СуммаДокумента = 0;
КонецЕсли;
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтотОбъект, "УслугиПоПереработке");
НастроитьЗависимыеЭлементыФормы(ЭтотОбъект, "УслугиПоПереработке");
РассчитатьИтогиДокумента(ЭтотОбъект, "КоличествоСверхЗаказа");
КонецПроцедуры
&НаСервере
Процедура СпособРаспределенияЗатратНаВыходныеИзделияПриИзмененииНаСервере()
ПараметрыРаспределенияЗатрат =
Новый ФиксированнаяСтруктура(Документы.ОтчетПереработчика2_5.ПараметрыРаспределенияЗатрат(Объект));
Если Объект.ГруппировкаЗатрат <> Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоЭтапамПроизводства Тогда
ПроизводствоСервер.РассчитатьДолюСтоимости(Объект, ПараметрыРаспределенияЗатрат);
КонецЕсли;
РассчитатьПроцентРаспределенияЗатратНаВыходныеИзделия();
КонецПроцедуры
&НаСервере
Процедура ГруппировкаЗатратПриИзмененииНаСервере()
Если Не ЗначениеЗаполнено(Объект.ГруппировкаЗатрат) Тогда
Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.БезГруппировки;
КонецЕсли;
ГруппыЗатрат.Очистить();
Объект.МаксимальныйНомерГруппыЗатрат = 0;
КоличествоГруппЗатрат = 0;
Для Каждого ТекущиеДанные Из Объект.ВыходныеИзделия Цикл
ДобавитьИзменитьГруппуЗатрат(ТекущиеДанные, Истина);
КонецЦикла;
Если Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.БезГруппировки Тогда
ИндексГруппыЗатрат = 1;
ИначеЕсли КоличествоГруппЗатрат = 1 Тогда
ИндексГруппыЗатрат = Объект.МаксимальныйНомерГруппыЗатрат;
Иначе
ИндексГруппыЗатрат = 0;
КонецЕсли;
ГруппировкиКЗаполнению = Новый Массив;
ГруппировкиКЗаполнению.Добавить(ИндексГруппыЗатрат);
Для Каждого ТекущиеДанные Из Объект.ПобочныеИзделия Цикл
ГруппировкиКЗаполнению.Добавить(ТекущиеДанные.НомерГруппыЗатрат);
ТекущиеДанные.НомерГруппыЗатрат = ИндексГруппыЗатрат;
ТекущиеДанные.ГруппаЗатрат = "";
КонецЦикла;
ОсновныеМатериалы = Новый Соответствие();
Для Каждого ТекущиеДанные Из Объект.МатериалыИРаботы Цикл
ГруппировкиКЗаполнению.Добавить(ТекущиеДанные.НомерГруппыЗатрат);
ТекущиеДанные.НомерГруппыЗатрат = ИндексГруппыЗатрат;
ТекущиеДанные.ГруппаЗатрат = "";
ОсновнойМатериал = ОсновныеМатериалы.Получить(ТекущиеДанные.НомерГруппыЗатрат);
Если ОсновнойМатериал = Неопределено Тогда
ОсновныеМатериалы.Вставить(ТекущиеДанные.НомерГруппыЗатрат, Ложь);
ОсновнойМатериал = ОсновныеМатериалы.Получить(ТекущиеДанные.НомерГруппыЗатрат);
КонецЕсли;
Если Не ОсновнойМатериал
И ТекущиеДанные.Основной Тогда
ОсновныеМатериалы.Вставить(ТекущиеДанные.НомерГруппыЗатрат, Истина);
ИначеЕсли ТекущиеДанные.Основной Тогда
ТекущиеДанные.Основной = Ложь;
КонецЕсли;
КонецЦикла;
Для Каждого ТекущиеДанные Из Объект.Услуги Цикл
ГруппировкиКЗаполнению.Добавить(ТекущиеДанные.НомерГруппыЗатрат);
ТекущиеДанные.НомерГруппыЗатрат = ИндексГруппыЗатрат;
ТекущиеДанные.ГруппаЗатрат = "";
КонецЦикла;
Для Каждого ТекГруппа Из ГруппыЗатрат Цикл
ТаблицаЗаполнитьЗависимыеСлужебныеРеквизитыГруппыЗатрат("ВыходныеИзделия", ТекГруппа.НомерГруппыЗатрат);
КонецЦикла;
ГруппировкиКЗаполнению = ОбщегоНазначенияКлиентСервер.СвернутьМассив(ГруппировкиКЗаполнению);
ОбновитьСлужебныеРеквизитыГруппЗатратВСвязаннойТЧ(ГруппировкиКЗаполнению);
Если Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоПродукции
Или Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоПродукцииИНазначениям Тогда
Объект.СпособРаспределенияЗатратНаВыходныеИзделия = Перечисления.СпособыРаспределенияЗатратНаВыходныеИзделия.ПустаяСсылка();
ИначеЕсли Не ЗначениеЗаполнено(Объект.СпособРаспределенияЗатратНаВыходныеИзделия) Тогда
Объект.СпособРаспределенияЗатратНаВыходныеИзделия = Перечисления.СпособыРаспределенияЗатратНаВыходныеИзделия.ПоДолямСтоимости;
КонецЕсли;
СпособРаспределенияЗатратНаВыходныеИзделияПриИзмененииНаСервере();
НастроитьЗависимыеЭлементыФормы(ЭтотОбъект, "ГруппировкаЗатрат");
РассчитатьИтогиДокумента(ЭтотОбъект);
ГруппировкаЗатратДоИзменения = Объект.ГруппировкаЗатрат;
КонецПроцедуры
&НаКлиенте
Процедура НадписьЭтапыОплатыНажатиеЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат <> Неопределено Тогда
ИзмененныеРеквизиты = Результат.СтарыеЗначенияИзмененныхРеквизитов;
НадписьЭтапыОплатыНажатиеЗавершениеНаСервере(ИзмененныеРеквизиты);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура НадписьЭтапыОплатыНажатиеЗавершениеНаСервере(ИзмененныеРеквизиты)
ВзаиморасчетыСервер.ЗагрузитьЭтапыОплатыИзВременногоХранилища(ЭтотОбъект);
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтотОбъект, ИзмененныеРеквизиты, Истина);
КонецПроцедуры
&НаКлиенте
Процедура НадписьВалютыНажатиеЗавершение(РезультатЗакрытия, ДополнительныеПараметры) Экспорт
Если РезультатЗакрытия = Неопределено Тогда
Возврат;
КонецЕсли;
Если ТипЗнч(РезультатЗакрытия) = Тип("Структура") Тогда
ИзмененныеРеквизиты = РезультатЗакрытия.СтарыеЗначенияИзмененныхРеквизитов;
Если ИзмененныеРеквизиты.Количество() > 0 Тогда
НадписьВалютыНажатиеЗавершениеСервер(РезультатЗакрытия);
Если РезультатЗакрытия.НеобходимПересчетСуммДокумента Тогда
ЦенообразованиеКлиент.ОповеститьОбОкончанииПересчетаСуммВВалюту(ВалютаДокумента, Объект.Валюта);
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура НадписьВалютыНажатиеЗавершениеСервер(РезультатЗакрытия)
ИзмененныеРеквизиты = РезультатЗакрытия.СтарыеЗначенияИзмененныхРеквизитов;
Если ИзмененныеРеквизиты.Свойство("ВалютаВзаиморасчетов") Тогда
ЗаполнитьДоговорПоУмолчанию(Неопределено);
КонецЕсли;
Если ИзмененныеРеквизиты.Свойство("Валюта") Тогда
Если РезультатЗакрытия.НеобходимПересчетСуммДокумента Тогда
ПересчитатьСуммыУслугДокументаВВалюту();
КонецЕсли;
ПересчитатьСуммыИзделийДокументаВВалюту();
ВалютаДокумента = Объект.Валюта;
ЗаполнитьПодчиненныеСвойстваПоСтатистике("Валюта");
КонецЕсли;
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтотОбъект, ИзмененныеРеквизиты, Истина);
КонецПроцедуры
#КонецОбласти
#Область ОбщиеСобытияТаблиц
#Область Серии
&НаКлиенте
Процедура Подключаемый_ОткрытьПодборСерийПриСканированииШтрихкодаНоменклатуры_ВыходныеИзделия()
Если ТекущиеДанныеИдентификатор = Неопределено Тогда
Возврат;
КонецЕсли;
ТекущиеДанные = Объект.ВыходныеИзделия.НайтиПоИдентификатору(ТекущиеДанныеИдентификатор);
ОткрытьПодборСерий("ВыходныеИзделия",, ТекущиеДанные);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОткрытьПодборСерийПриСканированииШтрихкодаНоменклатуры_ПобочныеИзделия()
Если ТекущиеДанныеИдентификатор = Неопределено Тогда
Возврат;
КонецЕсли;
ТекущиеДанные = Объект.ПобочныеИзделия.НайтиПоИдентификатору(ТекущиеДанныеИдентификатор);
ОткрытьПодборСерий("ПобочныеИзделия",, ТекущиеДанные);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОткрытьПодборСерийПриСканированииШтрихкодаНоменклатуры_МатериалыИРаботы()
Если ТекущиеДанныеИдентификатор = Неопределено Тогда
Возврат;
КонецЕсли;
ТекущиеДанные = Объект.МатериалыИРаботы.НайтиПоИдентификатору(ТекущиеДанныеИдентификатор);
ОткрытьПодборСерий("МатериалыИРаботы",, ТекущиеДанные);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьПодборСерий(ИмяТЧ, Текст = "", ТекущиеДанные = Неопределено)
НуженСерверныйВызов =
НоменклатураКлиент.ДляУказанияСерийНуженСерверныйВызов(
ЭтотОбъект,
ПараметрыУказанияСерий[ИмяТЧ],
Текст,
ТекущиеДанные);
Если НуженСерверныйВызов Тогда
Если ТекущиеДанные = Неопределено Тогда
ТекущиеДанныеИдентификатор = Элементы[ИмяТЧ].ТекущиеДанные.ПолучитьИдентификатор();
Иначе
ТекущиеДанныеИдентификатор = ТекущиеДанные.ПолучитьИдентификатор();
КонецЕсли;
ПараметрыФормыУказанияСерий = ПараметрыФормыУказанияСерий(ИмяТЧ, ТекущиеДанныеИдентификатор);
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ПараметрыУказанияСерий", ПараметрыУказанияСерий[ИмяТЧ]);
ДополнительныеПараметры.Вставить("ПараметрыФормыУказанияСерий", ПараметрыФормыУказанияСерий);
ОписаниеОповещения = Новый ОписаниеОповещения("ОткрытьПодборСерийЗавершение", ЭтотОбъект, ДополнительныеПараметры);
ОткрытьФорму(
ПараметрыФормыУказанияСерий.ИмяФормы,
ПараметрыФормыУказанияСерий,
ЭтотОбъект,,,,
ОписаниеОповещения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьПодборСерийЗавершение(РезультатЗакрытия, ДополнительныеПараметры) Экспорт
Если Не РезультатЗакрытия = Неопределено Тогда
ОбработатьУказаниеСерийНаСервере(
ДополнительныеПараметры.ПараметрыУказанияСерий,
ДополнительныеПараметры.ПараметрыФормыУказанияСерий);
ТоварыСерияПересчитатьЦены(, ДополнительныеПараметры.ПараметрыУказанияСерий.ИмяТЧТовары);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбработатьУказаниеСерийНаСервере(ПараметрыУказанияСерий, ПараметрыФормыУказанияСерий)
СтруктураДействий = Новый Структура;
НоменклатураСервер.ОбработатьУказаниеСерий(
Объект,
ПараметрыУказанияСерий,
ПараметрыФормыУказанияСерий,
СтруктураДействий);
КонецПроцедуры
&НаСервере
Функция ПараметрыФормыУказанияСерий(ИмяТЧ, ТекущийИдентификатор)
Возврат НоменклатураСервер.ПараметрыФормыУказанияСерий(
Объект,
ПараметрыУказанияСерий[ИмяТЧ],
ТекущийИдентификатор,
ЭтотОбъект);
КонецФункции
#КонецОбласти
&НаСервере
Процедура МатериалыИРаботыОсновнойПриИзмененииНаСервере(ТекущийИдентификатор)
ТекущиеДанные = Объект.МатериалыИРаботы.НайтиПоИдентификатору(ТекущийИдентификатор);
ОчиститьФлагОсновнойПоГруппеЗатрат(ТекущиеДанные.НомерГруппыЗатрат);
ТекущиеДанные.Основной = Истина;
КонецПроцедуры
#КонецОбласти
#Область ВыходныеИзделия
&НаКлиенте
Процедура ОткрытьФормуВводаДолиСтоимости(ТекущиеДанные, СтандартнаяОбработка)
Если Объект.СпособРаспределенияЗатратНаВыходныеИзделия =
ПредопределенноеЗначение("Перечисление.СпособыРаспределенияЗатратНаВыходныеИзделия.ПоДолямСтоимости")
Тогда
Возврат;
КонецЕсли;
СтандартнаяОбработка = Ложь;
НетОшибок =
ПроизводствоКлиент.ПроверитьЗаполнениеПередВводомДолиСтоимости(
ТекущиеДанные,
ПараметрыРаспределенияЗатрат);
Если НетОшибок Тогда
ПараметрыФормы =
ПараметрыФормыВводаДолиСтоимости(
ТекущиеДанные.ПолучитьИдентификатор());
ОткрытьФорму(
"ОбщаяФорма.ВводДолиСтоимости",
ПараметрыФормы,
ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаВводаДолиСтоимости(Элемент, ТекущиеДанные, ВыбранноеЗначение)
Если ТекущиеДанные.ДоляСтоимости <> ВыбранноеЗначение.ДоляСтоимости Тогда
ПроизводствоКлиентСервер.ЗаполнитьДолюСтоимостиВСтроке(ТекущиеДанные, ВыбранноеЗначение);
Группировки = Новый Массив;
Группировки.Добавить(ТекущиеДанные.НомерГруппыЗатрат);
РассчитатьПроцентРаспределенияЗатратНаВыходныеИзделия(Группировки);
Модифицированность = Истина;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область Дополнительно
&НаКлиенте
Процедура НомерВходящегоДокументаОкончаниеВводаТекстаЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
СписокОтчетовПоНомеру = ДополнительныеПараметры.СписокЗаказов;
Если РезультатВопроса = "ОткрытьСписокЗаказов" Тогда
Если СписокОтчетовПоНомеру.Количество() > 1 Тогда
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("СписокДокументов", СписокОтчетовПоНомеру);
ПараметрыФормы.Вставить("Заголовок", НСтр("ru='Отчеты переработчиков (%КоличествоДокументов%)'"));
ОткрытьФорму("ОбщаяФорма.ПросмотрСпискаДокументов", ПараметрыФормы);
Иначе
ПараметрыФормы = Новый Структура("Ключ", СписокОтчетовПоНомеру.Получить(0).Значение);
ОткрытьФорму("Документ.ОтчетПереработчика2_5.ФормаОбъекта", ПараметрыФормы);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЦенаВключаетНДСПриИзмененииНаСервере(КэшированныеЗначения)
СтруктураДействий = Новый Структура;
ДобавитьДействияПересчетаСумм(ЭтотОбъект, "Услуги", СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Услуги, СтруктураДействий, КэшированныеЗначения);
ЗаполнитьЗависимыеСлужебныеРеквизитыНаСервере("ЦенаВключаетНДС");
КонецПроцедуры
&НаСервере
Процедура НалогообложениеНДСПриИзмененииНаСервере()
СтруктураДействий = Новый Структура;
ДобавитьДействияЗаполнитьСтавкуНДС(ЭтотОбъект, "Услуги", СтруктураДействий);
ДобавитьДействияПересчетаСумм(ЭтотОбъект, "Услуги", СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиКлиентСерверЛокализация.ДополнитьСтруктуруДействийПриИзмененииЭлемента(
ЭтотОбъект,
"Номенклатура",
СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Услуги, СтруктураДействий, Неопределено);
РассчитатьИтогиДокумента(ЭтотОбъект, "СуммаУслуг");
НастроитьЗависимыеЭлементыФормы(ЭтотОбъект, "НалогообложениеНДС");
КонецПроцедуры
&НаКлиенте
Процедура ВидЦеныПриИзмененииЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
Если РезультатВопроса = КодВозвратаДиалога.Да Тогда
ОценкаПроизводительностиКлиент.ЗамерВремени(
"Документ.ОтчетПереработчика2_5.Форма.ФормаДокумента.ВидЦеныПриИзменении");
ЦеныРассчитаны = ЗаполнитьЦеныПоВидуЦенСервер("ПобочныеИзделия");
ЦеныРассчитаны = Мин(ЦеныРассчитаны, ЗаполнитьЦеныПоВидуЦенСервер("МатериалыИРаботы"));
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияЦенПоВидуЦен(ЦеныРассчитаны, Объект.ВидЦены);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура НаправлениеДеятельностиПриИзмененииНаСервере(ИзмененияУчтены = Неопределено)
Если ИзмененияУчтены = Неопределено Тогда
ИзмененияУчтены = Новый Структура;
КонецЕсли;
Если ИзмененияУчтены.Свойство("НаправлениеДеятельности") Тогда
Возврат;
КонецЕсли;
Если Объект.ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоДоговорамКонтрагентов Тогда
ЗаполнитьДоговорПоУмолчанию(ИзмененияУчтены);
КонецЕсли;
Если Не ИзмененияУчтены.Свойство("ЗакупкаПодДеятельность") Тогда
АктуализироватьЗакупкуПодДеятельность(ИзмененияУчтены);
КонецЕсли;
Если Не ИзмененияУчтены.Свойство("НалогообложениеНДС") Тогда
АктуализироватьНалогообложениеНДС(ИзмененияУчтены);
КонецЕсли;
ОбработатьИзменениеНаправленияДеятельности(ИзмененияУчтены);
ИзмененияУчтены.Вставить("НаправлениеДеятельности");
КонецПроцедуры
#КонецОбласти
#Область ГруппыЗатрат
&НаКлиенте
Процедура ТаблицаГруппаЗатратНачалоВыбораЗавершение(Результат, ИмяТЧ) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
ТаблицаГруппаЗатратНачалоВыбораЗавершениеНаСервере(Результат, ИмяТЧ, Элементы[ИмяТЧ].ВыделенныеСтроки);
КонецПроцедуры
&НаСервере
Процедура ТаблицаГруппаЗатратНачалоВыбораЗавершениеНаСервере(Результат, ИмяТЧ, Знач ВыделенныеСтроки)
Группировки = Новый Массив;
Группировки.Добавить(Результат.НомерГруппыЗатрат);
Для Каждого ИдентификаторСтроки Из ВыделенныеСтроки Цикл
ТекущиеДанные = Объект[ИмяТЧ].НайтиПоИдентификатору(ИдентификаторСтроки);
Группировки.Добавить(ТекущиеДанные.НомерГруппыЗатрат);
ТекущиеДанные.НомерГруппыЗатрат = Результат.НомерГруппыЗатрат;
ТекущиеДанные.ГруппаЗатрат = Результат.ГруппаЗатрат;
Если Объект.ПоЗаказам
И (Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоСпецификациям
Или Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоСпецификациямИНазначениям)
И ИмяТЧ = "ВыходныеИзделия" Тогда
ТекущиеДанные.Спецификация = Результат.Спецификация;
КонецЕсли;
Если ИмяТЧ = "МатериалыИРаботы"
И ИспользоватьИмпортныеТовары Тогда
ТекущиеДанные.ЕстьИмпортноеИзделие = Результат.ЕстьИмпортноеИзделие;
Если Не ТекущиеДанные.ЕстьИмпортноеИзделие Тогда
ТекущиеДанные.Основной = Ложь;
ИначеЕсли ТекущиеДанные.Основной Тогда
НайденныеСтроки = ОсновныеМатериалыГруппыЗатрат(ТекущиеДанные.НомерГруппыЗатрат);
Если НайденныеСтроки.Количество() > 1 Тогда
ТекущиеДанные.Основной = Ложь;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Группировки = ОбщегоНазначенияКлиентСервер.СвернутьМассив(Группировки);
Для Каждого НомерГруппыЗатрат Из Группировки Цикл
ТаблицаЗаполнитьЗависимыеСлужебныеРеквизитыГруппыЗатрат(ИмяТЧ, НомерГруппыЗатрат);
КонецЦикла;
Если ИмяТЧ = "ВыходныеИзделия" Тогда
РассчитатьПроцентРаспределенияЗатратНаВыходныеИзделия(Группировки);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ВспомогательныеПроцедуры
#Область УчетНДС
&НаСервере
Процедура АктуализироватьЗакупкуПодДеятельность(ИзмененияУчтены = Неопределено, Заполнить = Истина)
Если ИзмененияУчтены = Неопределено Тогда
ИзмененияУчтены = Новый Структура;
КонецЕсли;
ПараметрыЗаполнения = Документы.ОтчетПереработчика2_5.ПараметрыЗаполненияВидаДеятельностиНДС(Объект);
Если Заполнить Тогда
УчетНДСУП.ЗаполнитьВидДеятельностиНДС(
Объект.ЗакупкаПодДеятельность,
ПараметрыЗаполнения,
УчетНДСКэшированныеЗначенияПараметров);
КонецЕсли;
УчетНДСУП.ЗаполнитьСписокВыбораВидаДеятельностиНДС(
Элементы.ЗакупкаПодДеятельность,
Объект.ЗакупкаПодДеятельность,
ПараметрыЗаполнения,
УчетНДСКэшированныеЗначенияПараметров);
ИзмененияУчтены.Вставить("ЗакупкаПодДеятельность");
КонецПроцедуры
&НаСервере
Процедура АктуализироватьНалогообложениеНДС(ИзмененияУчтены = Неопределено, Заполнить = Истина)
Если ИзмененияУчтены = Неопределено Тогда
ИзмененияУчтены = Новый Структура;
КонецЕсли;
ПараметрыЗаполнения = Документы.ОтчетПереработчика2_5.ПараметрыЗаполненияНалогообложенияНДСЗакупки(Объект);
Если Заполнить Тогда
УчетНДСУП.ЗаполнитьНалогообложениеНДСЗакупки(
Объект.НалогообложениеНДС,
ПараметрыЗаполнения,
УчетНДСКэшированныеЗначенияПараметров);
НалогообложениеНДСПриИзмененииНаСервере();
КонецЕсли;
УчетНДСУП.ЗаполнитьСписокВыбораНалогообложенияНДСЗакупки(
Элементы.НалогообложениеНДС,
Объект.НалогообложениеНДС,
ПараметрыЗаполнения,
УчетНДСКэшированныеЗначенияПараметров);
ИзмененияУчтены.Вставить("НалогообложениеНДС");
КонецПроцедуры
#КонецОбласти
#Область Взаиморасчеты
&НаСервере
Процедура ПоместитьЭтапыОплатыВоВременноеХранилище(ИмяЭлемента)
ВзаиморасчетыСервер.ПоместитьЭтапыОплатыВоВременноеХранилище(ЭтотОбъект, ИмяЭлемента);
КонецПроцедуры
&НаСервере
Процедура ОбработкаОповещенияВзаиморасчетыНаСервере(ИмяСобытия, Параметр)
ВзаиморасчетыСервер.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия, Параметр);
КонецПроцедуры
#КонецОбласти
&НаСервере
Процедура ОбработатьИзменениеНаправленияДеятельности(ИзмененияУчтены)
Если Не ИзмененияУчтены.Свойство("НаправлениеДеятельности") Тогда
НаправленияДеятельностиСервер.ПриИзмененииНаправленияДеятельности(ЭтотОбъект);
Для Каждого ТекущиеДанные Из Объект.ВыходныеИзделия Цикл
Если Не Объект.ПоЗаказам Тогда
ДобавитьИзменитьГруппуЗатрат(ТекущиеДанные, Истина);
КонецЕсли;
КонецЦикла;
Для Каждого ТекГруппа Из ГруппыЗатрат Цикл
ТаблицаЗаполнитьЗависимыеСлужебныеРеквизитыГруппыЗатрат("ВыходныеИзделия", ТекГруппа.НомерГруппыЗатрат);
КонецЦикла;
РассчитатьПроцентРаспределенияЗатратНаВыходныеИзделия();
ИзмененияУчтены.Вставить("НаправлениеДеятельности");
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбновитьТекстСчетаФактуры(ИзмененияУчтены)
Если Не ИзмененияУчтены.Свойство("ТекстСчетаФактуры") Тогда
ТекстСчетаФактурыПолученные = ПредставлениеСчетаФактурыПолученные(Объект);
ИзмененияУчтены.Вставить("ТекстСчетаФактуры");
КонецЕсли;
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПредставлениеСчетаФактурыПолученные(Объект)
ПараметрыРегистрации = Документы.ОтчетПереработчика2_5.ПараметрыРегистрацииСчетовФактурПолученных(Объект);
СчетаФактурыПолученныеНаОсновании = УчетНДСУП.СчетаФактурыПолученныеНаОсновании(ПараметрыРегистрации);
Возврат СчетаФактурыПолученныеНаОсновании.Представление;
КонецФункции
&НаСервереБезКонтекста
Функция ОтчетыПоДаннымПереработчика(ТекущийЗаказ, Контрагент, НомерВходящегоДокумента)
РеквизитыДокумента = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ТекущийЗаказ, "ДатаВходящегоДокумента, Дата");
ДатаВходящегоДокумента =
?(ЗначениеЗаполнено(РеквизитыДокумента.ДатаВходящегоДокумента),
РеквизитыДокумента.ДатаВходящегоДокумента,
?(ЗначениеЗаполнено(РеквизитыДокумента.Дата), РеквизитыДокумента.Дата, ТекущаяДатаСеанса()));
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ОтчетПереработчика.Ссылка КАК Ссылка
|ИЗ
| Документ.ОтчетПереработчика2_5 КАК ОтчетПереработчика
|ГДЕ
| НЕ ОтчетПереработчика.Ссылка = &ТекущийОтчет
| И ОтчетПереработчика.Дата МЕЖДУ
| НАЧАЛОПЕРИОДА(&ДатаВходящегоДокумента, ГОД)
| И КОНЕЦПЕРИОДА(&ДатаВходящегоДокумента, ГОД)
| И ОтчетПереработчика.НомерВходящегоДокумента = &НомерВходящегоДокумента
| И ОтчетПереработчика.Контрагент = &Контрагент
| И НЕ ОтчетПереработчика.ПометкаУдаления
|";
Запрос.УстановитьПараметр("ДатаВходящегоДокумента", ДатаВходящегоДокумента);
Запрос.УстановитьПараметр("Контрагент", Контрагент);
Запрос.УстановитьПараметр("ТекущийОтчет", ТекущийЗаказ);
Запрос.УстановитьПараметр("НомерВходящегоДокумента", НомерВходящегоДокумента);
СписокОтчетовПоНомеру = Новый СписокЗначений;
СписокОтчетовПоНомеру.ЗагрузитьЗначения(Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка"));
Возврат СписокОтчетовПоНомеру;
КонецФункции
&НаСервере
Процедура РассчитатьПроцентРаспределенияЗатратНаВыходныеИзделия(Группировки = Неопределено)
ПроизводствоСервер.РассчитатьПроцентРаспределенияЗатратНаВыходныеИзделия(Объект, ПараметрыРаспределенияЗатрат, Группировки);
КонецПроцедуры
&НаСервере
Процедура ПересчитатьСуммыУслугДокументаВВалюту()
СтараяВалюта = ВалютаДокумента;
НоваяВалюта = Объект.Валюта;
ДатаДокумента = ?(ЗначениеЗаполнено(Объект.Дата), Объект.Дата,ТекущаяДатаСеанса());
БазоваяВалюта = ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(Объект.Организация);
СтруктурыКурсов = ВзаиморасчетыСервер.КурсыВалютДляПересчета(ЭтотОбъект, СтараяВалюта, НоваяВалюта, БазоваяВалюта, ДатаДокумента);
СтруктураКурсовСтаройВалюты = СтруктурыКурсов.СтруктураКурсовСтаройВалюты;
СтруктураКурсовНовойВалюты = СтруктурыКурсов.СтруктураКурсовНовойВалюты;
ПараметрыПересчета = Ценообразование.ПараметрыПересчетаСуммТаблицыВВалюту(Объект.ЦенаВключаетНДС, СтараяВалюта, НоваяВалюта);
ПараметрыПересчета.СтруктураКурсовСтаройВалюты = СтруктураКурсовСтаройВалюты;
ПараметрыПересчета.СтруктураКурсовНовойВалюты = СтруктураКурсовНовойВалюты;
ПараметрыПересчета.ИмяКоличества = "Количество";
Ценообразование.ПересчитатьСуммыТаблицыВВалюту(Объект.Услуги, ПараметрыПересчета);
РассчитатьИтогиДокумента(ЭтотОбъект, "КоличествоСверхЗаказа,СуммаУслуг");
КонецПроцедуры
&НаСервере
Процедура ПересчитатьСуммыИзделийДокументаВВалюту()
СтараяВалюта = ВалютаДокумента;
НоваяВалюта = Объект.Валюта;
ДатаДокумента = ?(ЗначениеЗаполнено(Объект.Дата), Объект.Дата,ТекущаяДатаСеанса());
БазоваяВалюта = ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(Объект.Организация);
СтруктураКурсовСтаройВалюты = РаботаСКурсамиВалютУТ.ПолучитьКурсВалюты(СтараяВалюта, ДатаДокумента, БазоваяВалюта);
СтруктураКурсовНовойВалюты = РаботаСКурсамиВалютУТ.ПолучитьКурсВалюты(НоваяВалюта, ДатаДокумента, БазоваяВалюта);
Если ИспользоватьПлановуюСтоимость Тогда
Для Каждого ТекСтрока Из Объект.ВыходныеИзделия Цикл
ТекСтрока.Цена = РаботаСКурсамиВалютУТКлиентСервер.ПересчитатьПоКурсу(ТекСтрока.Цена,
СтруктураКурсовСтаройВалюты, СтруктураКурсовНовойВалюты);
КонецЦикла;
КонецЕсли;
Для Каждого ТекСтрока Из Объект.ПобочныеИзделия Цикл
ТекСтрока.Цена = РаботаСКурсамиВалютУТКлиентСервер.ПересчитатьПоКурсу(ТекСтрока.Цена,
СтруктураКурсовСтаройВалюты, СтруктураКурсовНовойВалюты);
КонецЦикла;
Если ИспользоватьПлановуюСтоимость Тогда
СтруктураДействий = Новый Структура;
ДобавитьДействияПересчетаСумм(ЭтотОбъект, "ВыходныеИзделия", СтруктураДействий, "Сумма");
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.ВыходныеИзделия, СтруктураДействий, КэшированныеЗначения);
КонецЕсли;
СтруктураДействий = Новый Структура;
ДобавитьДействияПересчетаСумм(ЭтотОбъект, "ПобочныеИзделия", СтруктураДействий, "Сумма");
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.ПобочныеИзделия, СтруктураДействий, КэшированныеЗначения);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура РассчитатьИтогиДокумента(Форма, СписокРеквизитов = "")
Объект = Форма.Объект;
СписокРеквизитов = Новый Структура(СписокРеквизитов);
Инициализация = Не ЗначениеЗаполнено(СписокРеквизитов);
Если Инициализация
Или СписокРеквизитов.Свойство("СуммаУслуг") Тогда
Объект.СуммаДокумента =
Объект.Услуги.Итог("СуммаСНДС");
КонецЕсли;
Если Инициализация
Или СписокРеквизитов.Свойство("КоличествоИзделий") Тогда
Форма.КоличествоВыходныхИзделий =
Объект.ВыходныеИзделия.Количество()
+ Объект.ПобочныеИзделия.Количество();
КонецЕсли;
Если Инициализация
Или СписокРеквизитов.Свойство("КоличествоСверхЗаказа") Тогда
Форма.КоличествоСверхЗаказа =
Объект.ВыходныеИзделия.Итог("РасхождениеЗаказ")
+ Объект.ПобочныеИзделия.Итог("РасхождениеЗаказ")
+ Объект.Услуги.Итог("РасхождениеЗаказ");
НастроитьЗависимыеЭлементыФормыПоЗаказу(Форма);
КонецЕсли;
Если Инициализация
Или СписокРеквизитов.Свойство("ВедетсяУчетПоГТД") Тогда
Форма.ВедетсяУчетПоГТД =
Не (Объект.ВыходныеИзделия.Итог("ВедетсяУчетПоГТД")
+ Объект.ПобочныеИзделия.Итог("ВедетсяУчетПоГТД")) = 0;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#КонецОбласти
#Область ОбработчикиКомандФормы
#Область Основное
&НаКлиенте
Процедура ЗакрытьЗаказЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
ОписаниеОповещения = Новый ОписаниеОповещения("ЗакрытьЗаказФрагмент", ЭтотОбъект);
ПараметрыЗаписи = Новый Структура;
ПараметрыЗаписи.Вставить("ДействиеПослеЗаписи", ОписаниеОповещения);
ПараметрыЗаписи.Вставить("РежимЗаписи", РежимЗаписиДокумента.Проведение);
Если Не РезультатВопроса = КодВозвратаДиалога.Нет Тогда
Записать(ПараметрыЗаписи);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗакрытьЗаказФрагмент(Результат = Неопределено, ДополнительныеПараметры = Неопределено) Экспорт
СписокЗаказовКЗакрытию = Новый СписокЗначений;
СписокЗаказовКЗакрытию.Добавить(Объект.ЗаказПереработчику);
СтруктураЗакрытия = Новый Структура;
СтруктураЗакрытия.Вставить("Заказы", СписокЗаказовКЗакрытию);
СтруктураЗакрытия.Вставить("ДокументИнициатор", Объект.Ссылка);
СтруктураЗакрытия.Вставить("ОтменитьНеотработанныеСтроки", Истина);
СтруктураЗакрытия.Вставить("ЗакрыватьЗаказы", Истина);
ОткрытьФорму(
"Обработка.ПомощникЗакрытияЗаказов.Форма.ФормаЗакрытия",
СтруктураЗакрытия,
ЭтотОбъект,,,,
Неопределено,
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
#КонецОбласти
#Область КомандыОбъекта
&НаКлиенте
Процедура Подключаемый_ОбработатьЗаписьОбъекта()
ОбщегоНазначенияУТКлиент.ОбработатьЗаписьОбъектаВФорме(ЭтотОбъект, ПараметрыДляЗаписи);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ЗакрытьФорму()
Закрыть();
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандТаблиц
&НаСервере
Процедура ВыходныеИзделияПеренестиВПобочныеИзделияНаСервере()
Группировки = Новый Массив;
СтрокиКУдалению = Новый Массив;
Для Каждого ИдентификаторСтроки Из Элементы.ВыходныеИзделия.ВыделенныеСтроки Цикл
СтрокаПродукции = Объект.ВыходныеИзделия.НайтиПоИдентификатору(ИдентификаторСтроки);
ЗаполнитьЗначенияСвойств(Объект.ПобочныеИзделия.Добавить(), СтрокаПродукции,, "НомерГруппыЗатрат, ГруппаЗатрат");
Группировки.Добавить(СтрокаПродукции.НомерГруппыЗатрат);
СтрокиКУдалению.Добавить(СтрокаПродукции);
КонецЦикла;
Для Каждого ТекСтрока Из СтрокиКУдалению Цикл
Объект.ВыходныеИзделия.Удалить(ТекСтрока);
КонецЦикла;
РассчитатьПроцентРаспределенияЗатратНаВыходныеИзделия(Группировки);
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаРазбитьСтрокуЗавершение(Результат, ДополнительныеПараметры) Экспорт
ИмяТЧ = ДополнительныеПараметры.ИмяТЧ;
ТекущаяСтрока = Элементы[ИмяТЧ].ТекущиеДанные;
Если Результат <> Неопределено Тогда
СтруктураДействий = Новый Структура;
ДобавитьДействияПриИзмененииКоличества(ЭтотОбъект, ИмяТЧ, СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(Результат, СтруктураДействий, КэшированныеЗначения);
Если ИмяТЧ = "ВыходныеИзделия" Тогда
Результат.КодСтрокиПродукция = 0;
ПроизводствоКлиентСервер.ПересчитатьДолюСтоимостиПриРазбиенииСтроки(
Результат,
ТекущаяСтрока,
Объект.СпособРаспределенияЗатратНаВыходныеИзделия);
Группировки = Новый Массив;
Группировки.Добавить(ТекущаяСтрока.НомерГруппыЗатрат);
РассчитатьПроцентРаспределенияЗатратНаВыходныеИзделия(Группировки);
КонецЕсли;
Если ИмяТЧ = "МатериалыИРаботы" Тогда
Результат.Основной = Ложь;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаЗагрузитьИзТСДЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат.Результат Тогда
ОбработатьШтрихкоды(Результат.ТаблицаТоваров, ДополнительныеПараметры.ИмяТЧ);
Иначе
МенеджерОборудованияУТКлиент.СообщитьОбОшибке(Результат);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаПоискПоШтрихкодуЗавершение(ДанныхШтрихкода, ДополнительныеПараметры) Экспорт
ОбработатьШтрихкоды(ДанныхШтрихкода, ДополнительныеПараметры.ИмяТЧ);
КонецПроцедуры
&НаКлиенте
Процедура ПодобратьТовар(ИмяТЧ)
Если Не ЗначениеЗаполнено(Объект.Валюта) Тогда
ОчиститьСообщения();
ОбщегоНазначенияКлиент.СообщитьПользователю(
НСтр("ru = 'Поле ""Валюта"" не заполнено'"),
Объект.Ссылка,
"Объект.Валюта");
Возврат;
КонецЕсли;
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("СкрыватьРучныеСкидки", Истина);
ПараметрыФормы.Вставить("ЦенаВключаетНДС", Объект.ЦенаВключаетНДС);
ПараметрыФормы.Вставить("Валюта", Объект.Валюта);
ПараметрыФормы.Вставить("Дата", Объект.Дата);
ПараметрыФормы.Вставить("Документ", Объект.Ссылка);
ПараметрыФормы.Вставить("РежимПодбораИспользоватьСкладыВТабличнойЧасти", Ложь);
Если ИмяТЧ = "Услуги" Тогда
ПараметрыФормы.Вставить("ОтборПоТипуНоменклатуры", НоменклатураКлиентСервер.ОтборПоРаботе(Ложь));
ПараметрыФормы.Вставить("Подразделение", Объект.Подразделение);
Иначе
ПараметрыФормы.Вставить("ОтборПоТипуНоменклатуры", НоменклатураКлиентСервер.ОтборПоТоваруМногооборотнойТареРаботе(Ложь));
ПараметрыФормы.Вставить("РежимПодбораБезСуммовыхПараметров", Истина);
КонецЕсли;
Если Не ИмяТЧ = "Услуги" Тогда
ПараметрыФормы.Вставить("ПараметрыУказанияСерий", ПараметрыУказанияСерий[ИмяТЧ]);
КонецЕсли;
Если ИмяТЧ = "МатериалыИРаботы" Тогда
ПараметрыФормы.Вставить("Подразделение", Объект.Подразделение);
ПараметрыФормы.Вставить("ОстаткиПоВсемСкладам", Ложь);
ПараметрыФормы.Вставить("ИспользоватьРасширенныеВозможностиЗаказаКлиента", Истина);
ФормаПодбораТоваров = "Обработка.ПодборТоваровВДокументПродажи.Форма";
ВладелецФормы = ЭтотОбъект;
Иначе
ПараметрыФормы.Вставить("Партнер", Объект.Партнер);
ФормаПодбораТоваров = "Обработка.ПодборТоваровВДокументЗакупки.Форма";
Если ИмяТЧ = "Услуги" Тогда
ВладелецФормы = ЭтотОбъект;
Иначе
ВладелецФормы = Элементы[ИмяТЧ];
КонецЕсли;
КонецЕсли;
ОткрытьФорму(ФормаПодбораТоваров, ПараметрыФормы, ВладелецФормы, УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ПодборТоваровИзЗаказа(ИмяТЧ)
ОписаниеОповещения = Новый ОписаниеОповещения("ПодборТоваровИзЗаказаЗавершение", ЭтотОбъект);
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Заказ", Объект.ЗаказПереработчику);
ПараметрыФормы.Вставить("ОтчетПереработчика", Объект.Ссылка);
ПараметрыФормы.Вставить("ГруппировкаЗатрат", Объект.ГруппировкаЗатрат);
ПараметрыФормы.Вставить("ТабличныеЧасти", ДанныеИзделий());
Если ИмяТЧ = "ПобочныеИзделия" Тогда
ПараметрыФормы.Вставить("ТолькоПобочныеИзделия", Истина);
КонецЕсли;
ОткрытьФорму("Документ.ОтчетПереработчика2_5.Форма.ПодборПродукцииИзЗаказа", ПараметрыФормы,,,,, ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура ПодборТоваровИзЗаказаЗавершение(РезультатЗакрытия, ДополнительныеПараметры) Экспорт
Если РезультатЗакрытия = Неопределено Тогда
Возврат;
КонецЕсли;
Модифицированность = Истина;
ПодборТоваровИзЗаказаЗавершениеНаСервере(РезультатЗакрытия);
РассчитатьИтогиДокумента(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ПодборТоваровИзЗаказаЗавершениеНаСервере(ДанныеЗаполнения)
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
Группировки = Новый Массив;
СтруктураПоиска = Новый Структура("КодСтроки, НомерГруппыЗатрат");
ОбрабатываемыеСтрокиПродукция = Новый Массив;
ОбрабатываемыеСтрокиОтходы = Новый Массив;
Для каждого ДанныеПродукции Из ДанныеЗаполнения Цикл
ЗаполнитьЗначенияСвойств(СтруктураПоиска, ДанныеПродукции);
Если ДанныеПродукции.ТипСтоимости = Перечисления.ТипыСтоимостиВыходныхИзделий.Рассчитывается Тогда
ИмяТЧ = "ВыходныеИзделия";
НайденныеСтроки = Объект.ВыходныеИзделия.НайтиСтроки(СтруктураПоиска);
Иначе
ИмяТЧ = "ПобочныеИзделия";
НайденныеСтроки =
?(СтруктураПоиска.КодСтроки = 0,
Новый Массив,
Объект.ПобочныеИзделия.НайтиСтроки(СтруктураПоиска));
КонецЕсли;
Если НайденныеСтроки.Количество() = 0 Тогда
ТекущиеДанные = Объект[ИмяТЧ].Добавить();
ЗаполнитьЗначенияСвойств(ТекущиеДанные, ДанныеПродукции);
Иначе
ТекущиеДанные = НайденныеСтроки[0];
ТекущиеДанные.Количество = ТекущиеДанные.Количество + ДанныеПродукции.Количество;
КонецЕсли;
Если ИмяТЧ = "ВыходныеИзделия" Тогда
Группировки.Добавить(ТекущиеДанные.НомерГруппыЗатрат);
ОбрабатываемыеСтрокиПродукция.Добавить(ТекущиеДанные);
Иначе
ОбрабатываемыеСтрокиОтходы.Добавить(ТекущиеДанные);
КонецЕсли;
КонецЦикла;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьКоличествоУпаковок");
ДобавитьДействияЗаполнитьСлужебныеРеквизитыНоменклатуры("ВыходныеИзделия", СтруктураДействий);
ДобавитьДействияПроверитьСериюРассчитатьСтатус(ЭтотОбъект, "ВыходныеИзделия", СтруктураДействий);
ДобавитьДействияЗаполнитьВидЦен(ЭтотОбъект, "ВыходныеИзделия", СтруктураДействий);
ДобавитьДействияЗаполнитьЦену(ЭтотОбъект, "ВыходныеИзделия", СтруктураДействий);
ДобавитьДействияПроверитьЗаполнитьДолюСтоимости(ЭтотОбъект, "ВыходныеИзделия", СтруктураДействий);
НастройкаСчетовУчетаКлиентСервер.ВставитьДействиеЗаполнитьНастройкуСчетовУчетаПоУмолчанию(
СтруктураДействий,
ЭтотОбъект,
"Объект.ВыходныеИзделия");
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтрокиПродукция,
СтруктураДействий,
Объект.ВыходныеИзделия,
КэшированныеЗначения);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьКоличествоУпаковок");
ДобавитьДействияЗаполнитьСлужебныеРеквизитыНоменклатуры("ПобочныеИзделия", СтруктураДействий);
ДобавитьДействияПроверитьСериюРассчитатьСтатус(ЭтотОбъект, "ПобочныеИзделия", СтруктураДействий);
ДобавитьДействияЗаполнитьВидЦен(ЭтотОбъект, "ПобочныеИзделия", СтруктураДействий);
ДобавитьДействияЗаполнитьЦену(ЭтотОбъект, "ПобочныеИзделия", СтруктураДействий);
ДобавитьДействияПроверитьЗаполнитьДолюСтоимости(ЭтотОбъект, "ПобочныеИзделия", СтруктураДействий);
НастройкаСчетовУчетаКлиентСервер.ВставитьДействиеЗаполнитьНастройкуСчетовУчетаПоУмолчанию(
СтруктураДействий,
ЭтотОбъект,
"Объект.ПобочныеИзделия");
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтрокиОтходы,
СтруктураДействий,
Объект.ПобочныеИзделия,
КэшированныеЗначения);
ОбновитьГруппыЗатрат();
Если Не Группировки.Количество() = 0 Тогда
РассчитатьПроцентРаспределенияЗатратНаВыходныеИзделия(Группировки);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПодборПоЗаказамПереработчикам()
ПараметрыОтбора = Новый Структура;
Если ЗначениеЗаполнено(Объект.Организация) Тогда
ПараметрыОтбора.Вставить("Организация", Объект.Организация);
КонецЕсли;
Если ЗначениеЗаполнено(Объект.Партнер) Тогда
ПараметрыОтбора.Вставить("Партнер", Объект.Партнер);
КонецЕсли;
Если ЗначениеЗаполнено(Объект.НаправлениеДеятельности) Тогда
ПараметрыОтбора.Вставить("НаправлениеДеятельности", Объект.НаправлениеДеятельности);
КонецЕсли;
ОписаниеОповещения = Новый ОписаниеОповещения("ПодборПоЗаказамПереработчикамЗавершение", ЭтотОбъект);
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Отбор", ПараметрыОтбора);
ПараметрыФормы.Вставить("МножественныйВыбор", Ложь);
ПараметрыФормы.Вставить("Договор", Объект.Договор);
ПараметрыФормы.Вставить("Регистратор", Объект.Ссылка);
ОткрытьФорму(
"Документ.ЗаказПереработчику2_5.Форма.ВыборЗаказаВОтчетПереработчика",
ПараметрыФормы,,,,,
ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура ПодборПоЗаказамПереработчикамЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если ТипЗнч(Результат) = Тип("ДокументСсылка.ЗаказПереработчику2_5") Тогда
ПодборПоЗаказамПереработчикамЗавершениеНаСервере(Результат);
Иначе
Объект.ПоЗаказам = Ложь;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПодборПоЗаказамПереработчикамЗавершениеНаСервере(ЗаказПереработчику)
Объект.ВыходныеИзделия.Очистить();
Объект.ПобочныеИзделия.Очистить();
Объект.МатериалыИРаботы.Очистить();
Объект.Услуги.Очистить();
Документы.ОтчетПереработчика2_5.ЗаполнитьНаОснованииЗаказа(Объект, ЗаказПереработчику);
ЗаполнитьСлужебныеРеквизиты();
ЗаполнитьЗависимыеСлужебныеРеквизитыНаСервере();
ЗаполнитьСлужебныеРеквизитыТабличныхЧастей();
ОбновитьГруппыЗатрат();
АктуализироватьЗакупкуПодДеятельность(, Ложь);
АктуализироватьНалогообложениеНДС(, Ложь);
НаправленияДеятельностиСервер.ПриЧтенииСозданииНаСервере(ЭтотОбъект);
ВзаиморасчетыСервер.ПриИзмененииПараметровМеханизма(ЭтотОбъект);
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтотОбъект, "НакладнаяПоЗаказу");
РассчитатьИтогиДокумента(ЭтотОбъект);
НастроитьЭлементыФормы();
УстановитьПодпискуНаСобытияИзмененияЭлементовФормы();
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьПолучателяЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Не ЗначениеЗаполнено(Результат) Тогда
Возврат;
КонецЕсли;
ПараметрыТЧ = ДополнительныеПараметры.ПараметрыТЧ;
ЗаполнитьПолучателяНаСервере(ПараметрыТЧ, Элементы[ПараметрыТЧ.ИмяТЧФорма].ВыделенныеСтроки, Результат);
ПоказатьОповещениеПользователя(
НСтр("ru = 'Получатель заполнен'"),,
НСтр("ru='Для выделенных строк выполнено заполнение получателя'"),
БиблиотекаКартинок.Информация32);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьПолучателяНаСервере(ПараметрыТЧ, Знач ВыделенныеСтроки, Результат)
ИмяТЧ = ПараметрыТЧ.ИмяТЧОбъект;
Для Каждого ИдентификаторСтроки Из ВыделенныеСтроки Цикл
ДанныеСтроки = Объект[ИмяТЧ].НайтиПоИдентификатору(ИдентификаторСтроки);
Если Не ДанныеСтроки.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.Работа Тогда
Продолжить;
КонецЕсли;
ДанныеСтроки.Получатель = Результат;
КонецЦикла;
ПослеИзмененияСтрокТЧПрограммноНаСервере(ИмяТЧ, ВыделенныеСтроки);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьСтатьюКалькуляцииЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
ИмяТЧ = ДополнительныеПараметры.ИмяТЧ;
Для Каждого ИдентификаторСтроки Из Элементы[ИмяТЧ].ВыделенныеСтроки Цикл
ДанныеСтроки = Объект[ИмяТЧ].НайтиПоИдентификатору(ИдентификаторСтроки);
ДанныеСтроки.СтатьяКалькуляции = Результат;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура УслугиЗаполнитьЦеныПоВидуЦеныПоставщикаЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если ЗначениеЗаполнено(Результат) Тогда
ЦеныРассчитаны = ЗаполнитьЦеныПоВидуЦеныПоставщикаНаСервере(Результат, Элементы.Услуги.ВыделенныеСтроки);
ЦеныПартнеровЗаполнениеКлиент.ОповеститьОбОкончанииЗаполненияЦенПоВидуЦеныПоставщика(ЦеныРассчитаны, Результат);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УслугиВыбратьИЗаполнитьУслугуЗавершение(РезультатЗакрытия, ДополнительныеПараметры) Экспорт
Если РезультатЗакрытия = Неопределено Тогда
Возврат;
КонецЕсли;
УслугиВыбратьИЗаполнитьУслугуЗавершениеНаСервере(РезультатЗакрытия, КэшированныеЗначения);
КонецПроцедуры
&НаСервере
Процедура УслугиВыбратьИЗаполнитьУслугуЗавершениеНаСервере(РезультатЗакрытия, КэшированныеЗначения)
СтруктураДействий = Новый Структура;
ДобавитьДействияЗаполнитьЦену(ЭтотОбъект, "Услуги", СтруктураДействий);
ДобавитьДействияПриИзмененииНоменклатуры(ЭтотОбъект, "Услуги", СтруктураДействий);
ЗаказыКлиентСервер.ДобавитьДействиеЗаполнитьПризнакРасхождениеЗаказ(СтруктураДействий, Объект.ПоЗаказам);
ОбрабатываемыеСтроки = Новый Массив;
Для Каждого ИдентификаторСтроки Из Элементы.Услуги.ВыделенныеСтроки Цикл
ТекущиеДанные = Объект.Услуги.НайтиПоИдентификатору(ИдентификаторСтроки);
ТекущиеДанные.Номенклатура = РезультатЗакрытия;
ОбрабатываемыеСтроки.Добавить(ТекущиеДанные);
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.Услуги,
КэшированныеЗначения);
РассчитатьИтогиДокумента(ЭтотОбъект, "КоличествоСверхЗаказа");
КонецПроцедуры
#Область СтандартныеКоманды
#Область РаботаСБуферомОбмена
&НаСервере
Процедура СкопироватьСтрокиНаСервере(ИмяТЧ)
РаботаСТабличнымиЧастями.СкопироватьСтрокиВБуферОбмена(Объект[ИмяТЧ], Элементы[ИмяТЧ].ВыделенныеСтроки);
КонецПроцедуры
&НаСервере
Процедура ПолучитьСтрокиИзБуфераОбмена(ИмяТЧ)
ПараметрыОтбора = Новый Соответствие;
Если ИмяТЧ = "Услуги" Тогда
ПараметрыОтбора.Вставить("Номенклатура.ТипНоменклатуры", НоменклатураКлиентСервер.ОтборПоРаботе(Ложь));
Иначе
ПараметрыОтбора.Вставить("Номенклатура.ТипНоменклатуры", НоменклатураКлиентСервер.ОтборПоТоваруМногооборотнойТареРаботе(Ложь));
КонецЕсли;
Колонки = "Номенклатура,Характеристика,Упаковка,КоличествоУпаковок,Количество,
|ВидЦеныПоставщика,Цена,СтавкаНДС,Спецификация,СтатьяКалькуляции,Получатель";
ТаблицаТоваров = РаботаСТабличнымиЧастями.СтрокиИзБуфераОбмена(ПараметрыОтбора, Колонки);
Если Не ЗначениеЗаполнено(ТаблицаТоваров) Тогда
Возврат;
КонецЕсли;
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
ТабличнаяЧасть = Объект[ИмяТЧ];
ВыделенныеСтроки = Новый Массив;
СтруктураДействий = Новый Структура;
ДобавитьДействияЗаполнитьВидЦен(ЭтотОбъект, ИмяТЧ, СтруктураДействий);
ДобавитьДействияЗаполнитьЦену(ЭтотОбъект, ИмяТЧ, СтруктураДействий);
ДобавитьДействияИнициализироватьСтатьюИАналитику(ЭтотОбъект, ИмяТЧ, СтруктураДействий);
ДобавитьДействияПриИзмененииНоменклатуры(ЭтотОбъект, ИмяТЧ, СтруктураДействий);
ДобавитьДействияПриИзмененииХарактеристики(ЭтотОбъект, ИмяТЧ, СтруктураДействий);
Если Не ИмяТЧ = "МатериалыИРаботы" Тогда
ЗаказыКлиентСервер.ДобавитьДействиеЗаполнитьПризнакРасхождениеЗаказ(СтруктураДействий, Объект.ПоЗаказам);
КонецЕсли;
ГруппировкиКЗаполнению = Новый Массив;
ОбрабатываемыеСтроки = Новый Массив();
ДанныеОбИзделиях = Новый Массив;
Для Каждого СтрокаТовара Из ТаблицаТоваров Цикл
ТекущиеДанные = ТабличнаяЧасть.Добавить();
ЗаполнитьЗначенияСвойств(ТекущиеДанные, СтрокаТовара);
Если Объект.ПоЗаказам
И Не ИмяТЧ = "МатериалыИРаботы" Тогда
ТекущиеДанные.ЗаказПереработчику = Объект.ЗаказПереработчику;
КонецЕсли;
Если ИмяТЧ = "ВыходныеИзделия"
И Не Объект.ПоЗаказам Тогда
ДанныеОбИзделиях.Добавить(
УправлениеДаннымиОбИзделияхКлиентСервер.СобратьДанныеОбИзделииДляВыбораСпецификации(
Объект, ТекущиеДанные, ПараметрыВыбораСпецификаций, ЭтотОбъект));
КонецЕсли;
ОбрабатываемыеСтроки.Добавить(ТекущиеДанные);
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
ТабличнаяЧасть,
КэшированныеЗначения);
Если ИмяТЧ = "ВыходныеИзделия"
И Не Объект.ПоЗаказам Тогда
УправлениеДаннымиОбИзделиях.ЗаполнитьСпецификациюВСтроках(
ОбрабатываемыеСтроки, ДанныеОбИзделиях, ПараметрыВыбораСпецификаций);
КонецЕсли;
Для Каждого ТекущиеДанные Из ОбрабатываемыеСтроки Цикл
Если ИмяТЧ = "ВыходныеИзделия" Тогда
Если Не Объект.ПоЗаказам Тогда
ДобавитьИзменитьГруппуЗатрат(ТекущиеДанные, Истина);
Иначе
УстановитьНомерГруппыЗатратПоУмолчанию(ИмяТЧ, ТекущиеДанные.ПолучитьИдентификатор());
КонецЕсли;
ВыделенныеСтроки.Добавить(ТекущиеДанные.ПолучитьИдентификатор());
Иначе
УстановитьНомерГруппыЗатратПоУмолчанию(ИмяТЧ, ТекущиеДанные.ПолучитьИдентификатор());
КонецЕсли;
ГруппировкиКЗаполнению.Добавить(ТекущиеДанные.НомерГруппыЗатрат);
КонецЦикла;
ГруппировкиКЗаполнению = ОбщегоНазначенияКлиентСервер.СвернутьМассив(ГруппировкиКЗаполнению);
Для Каждого ТекГруппа Из ГруппировкиКЗаполнению Цикл
ТаблицаЗаполнитьЗависимыеСлужебныеРеквизитыГруппыЗатрат(ИмяТЧ, ТекГруппа);
КонецЦикла;
ПослеИзмененияСтрокТЧПрограммноНаСервере(ИмяТЧ, ВыделенныеСтроки);
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#КонецОбласти
#КонецОбласти
#Область Заполнение
#Область СлужебныеРеквизиты
&НаСервере
Процедура ЗаполнитьСлужебныеРеквизиты()
ГруппировкаЗатратДоИзменения = Объект.ГруппировкаЗатрат;
ВалютаДокумента = Объект.Валюта;
ЕстьПравоДобавленияКорректировок = ПравоДоступа("Добавление", Метаданные.Документы.КорректировкаПриобретения);
ИспользоватьИмпортныеТовары = ПолучитьФункциональнуюОпцию("ИспользоватьИмпортныеТовары");
ИспользоватьНаправленияДеятельности =
ПолучитьФункциональнуюОпцию("ИспользоватьУчетЗатратПоНаправлениямДеятельности");
ИспользоватьКорректировкиПриобретений =
ПолучитьФункциональнуюОпцию("ИспользоватьКорректировкиПриобретений");
ИспользоватьПроизводство = ПолучитьФункциональнуюОпцию("ИспользоватьПроизводство");
ОбновитьПризнакЕстьКорректировки();
ПараметрыРаспределенияЗатрат =
Новый ФиксированнаяСтруктура(Документы.ОтчетПереработчика2_5.ПараметрыРаспределенияЗатрат(Объект));
ПараметрыУказанияСерий =
Новый ФиксированнаяСтруктура(НоменклатураСервер.ПараметрыУказанияСерий(Объект, Документы.ОтчетПереработчика2_5));
ПараметрыВыбораСпецификаций = УправлениеДаннымиОбИзделиях.ПараметрыВыбораСпецификаций(Объект, Документы.ОтчетПереработчика2_5);
РаботаСТабличнымиЧастями.ИнициализироватьКэшСтрок(Элементы.ВыходныеИзделия);
РаботаСТабличнымиЧастями.ИнициализироватьКэшСтрок(Элементы.ПобочныеИзделия);
РаботаСТабличнымиЧастями.ИнициализироватьКэшСтрок(Элементы.МатериалыИРаботы);
РаботаСТабличнымиЧастями.ИнициализироватьКэшСтрок(Элементы.Услуги);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьЗависимыеСлужебныеРеквизитыНаСервере(СписокРеквизитов = "")
СписокРеквизитов = Новый Структура(СписокРеквизитов);
Инициализация = Не ЗначениеЗаполнено(СписокРеквизитов);
Если Инициализация
Или СписокРеквизитов.Свойство("Партнер")
Или СписокРеквизитов.Свойство("ЦенаВключаетНДС") Тогда
ЗаполнитьВидЦеныПоставщикаПоУмолчанию();
КонецЕсли;
Если Инициализация
Или СписокРеквизитов.Свойство("Дата")
Или СписокРеквизитов.Свойство("Организация") Тогда
ЗаполнитьИспользованиеПлановойСтоимости();
КонецЕсли;
Если Инициализация
Или СписокРеквизитов.Свойство("ПоЗаказам") Тогда
ОбновитьРасхождениеЗаказ();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСлужебныеРеквизитыТабличныхЧастей(СписокТЧ = "")
СтруктураТЧ = Новый Структура(СписокТЧ);
Инициализация = Не ЗначениеЗаполнено(СтруктураТЧ);
Если Инициализация
Или СтруктураТЧ.Свойство("ВыходныеИзделия") Тогда
СтруктураДействий = Новый Структура;
ДобавитьДействияЗаполнитьСлужебныеРеквизитыНоменклатуры("ВыходныеИзделия", СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(
Объект.ВыходныеИзделия,
СтруктураДействий,
Неопределено);
Если Не Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоЭтапамПроизводства Тогда
РассчитатьПроцентРаспределенияЗатратНаВыходныеИзделия();
КонецЕсли;
КонецЕсли;
Если Инициализация
Или СтруктураТЧ.Свойство("ПобочныеИзделия") Тогда
СтруктураДействий = Новый Структура;
ДобавитьДействияЗаполнитьСлужебныеРеквизитыНоменклатуры("ПобочныеИзделия", СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(
Объект.ПобочныеИзделия,
СтруктураДействий,
Неопределено);
КонецЕсли;
Если Инициализация
Или СтруктураТЧ.Свойство("МатериалыИРаботы") Тогда
СтруктураДействий = Новый Структура;
ДобавитьДействияЗаполнитьСлужебныеРеквизитыНоменклатуры("МатериалыИРаботы", СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(
Объект.МатериалыИРаботы,
СтруктураДействий,
Неопределено);
КонецЕсли;
Если Инициализация
Или СтруктураТЧ.Свойство("Услуги") Тогда
СтруктураДействий = Новый Структура;
ДобавитьДействияЗаполнитьСлужебныеРеквизитыНоменклатуры("Услуги", СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(
Объект.Услуги,
СтруктураДействий,
Неопределено);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьВидЦеныПоставщикаПоУмолчанию()
ВидЦеныПоставщикаПоУмолчанию = Справочники.ВидыЦенПоставщиков.ПустаяСсылка();
ОтборВидаЦен = Новый Структура("Владелец, ЦенаВключаетНДС", Объект.Партнер, Объект.ЦенаВключаетНДС);
ВидЦеныПоставщикаПоУмолчанию = Справочники.ВидыЦенПоставщиков.ВидЦеныПоУмолчанию(ВидЦеныПоставщикаПоУмолчанию, ОтборВидаЦен);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьИспользованиеПлановойСтоимости()
ПараметрыУчетнойПолитики = НастройкиНалоговУчетныхПолитик.ДействующиеПараметрыНалоговУчетныхПолитикНаДату(
"УчетнаяПолитикаФинансовогоУчета",
Объект.Организация,
Объект.Дата);
Если НЕ ПараметрыУчетнойПолитики = Неопределено Тогда
ИспользоватьПлановуюСтоимость = ПараметрыУчетнойПолитики.УчетГотовойПродукцииПоПлановойСтоимости;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбновитьРасхождениеЗаказ(ИменаТЧ = Неопределено)
Если ИменаТЧ = Неопределено Тогда
ИменаТЧ = Новый Массив;
ИменаТЧ.Добавить("ВыходныеИзделия");
ИменаТЧ.Добавить("ПобочныеИзделия");
ИменаТЧ.Добавить("Услуги");
ИначеЕсли ТипЗнч(ИменаТЧ) = Тип("Строка") Тогда
ИменаТЧ = СтрРазделить(ИменаТЧ, ",", Ложь);
КонецЕсли;
СтруктураДействий = Новый Структура;
ЗаказыКлиентСервер.ДобавитьДействиеЗаполнитьПризнакРасхождениеЗаказ(СтруктураДействий, Объект.ПоЗаказам);
Для Каждого ИмяТЧ Из ИменаТЧ Цикл
Если ИмяТЧ = "МатериалыИРаботы" Тогда
Продолжить;
КонецЕсли;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект[ИмяТЧ], СтруктураДействий, Неопределено);
КонецЦикла;
КонецПроцедуры
#КонецОбласти
#Область СтруктураДействий
&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьДействияПриИзмененииНоменклатуры(Форма, ИмяТЧ, СтруктураДействий)
ДобавитьДействияЗаполнитьСлужебныеРеквизитыНоменклатуры(ИмяТЧ, СтруктураДействий);
СтруктураДействий.Вставить("ПроверитьХарактеристикуПоВладельцу");
Если Не ИмяТЧ = "Услуги" Тогда
СтруктураДействий.Вставить("ПроверитьЗаполнитьУпаковкуПоВладельцу");
КонецЕсли;
ПараметрыДействия = Новый Структура;
ПараметрыДействия.Вставить("ИмяФормы", Форма.ИмяФормы);
ПараметрыДействия.Вставить("ИмяТабличнойЧасти", ИмяТЧ);
СтруктураДействий.Вставить("НоменклатураПриИзмененииПереопределяемый", ПараметрыДействия);
Если Не ИмяТЧ = "Услуги" Тогда
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(Форма, СтруктураДействий);
КонецЕсли;
ДобавитьДействияЗаполнитьСтавкуНДС(Форма, ИмяТЧ, СтруктураДействий);
ДобавитьДействияПроверитьСериюРассчитатьСтатус(Форма, ИмяТЧ, СтруктураДействий);
ДобавитьДействияПриИзмененииКоличества(Форма, ИмяТЧ, СтруктураДействий);
ДобавитьДействияОчиститьЗаполнитьСтатьюАналитику(Форма, ИмяТЧ, СтруктураДействий);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьДействияЗаполнитьСтавкуНДС(Форма, ИмяТЧ, СтруктураДействий)
Если ИмяТЧ = "Услуги" Тогда
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Форма.Объект));
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьДействияЗаполнитьСлужебныеРеквизитыНоменклатуры(ИмяТЧ, СтруктураДействий)
СтруктураДействий.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются", Новый Структура("Номенклатура", "ХарактеристикиИспользуются"));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
Если ИмяТЧ = "ВыходныеИзделия"
Или ИмяТЧ = "ПобочныеИзделия"
Или ИмяТЧ = "МатериалыИРаботы" Тогда
СтруктураДействий.Вставить("ЗаполнитьПризнакВедетсяУчетПоГТД", Новый Структура("Номенклатура", "ВедетсяУчетПоГТД"));
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьДействияПриИзмененииХарактеристики(Форма, ИмяТЧ, СтруктураДействий)
СтруктураДействий.Вставить(
"ХарактеристикаПриИзмененииПереопределяемый",
Новый Структура("ИмяФормы, ИмяТабличнойЧасти", Форма.ИмяФормы, ИмяТЧ));
Если Не ИмяТЧ = "Услуги" Тогда
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(Форма, СтруктураДействий);
КонецЕсли;
ДобавитьДействияОчиститьЗаполнитьСтатьюАналитику(Форма, ИмяТЧ, СтруктураДействий);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьДействияПриИзмененииУпаковки(Форма, ИмяТЧ, СтруктураДействий, ТекущиеДанные)
Если ИмяТЧ = "ВыходныеИзделия"
Или ИмяТЧ = "ПобочныеИзделия" Тогда
СтруктураДействий.Вставить("ПересчитатьЦенуЗаУпаковку", ТекущиеДанные.Количество);
КонецЕсли;
ДобавитьДействияПриИзмененииКоличества(Форма, ИмяТЧ, СтруктураДействий);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьДействияПроверитьСериюРассчитатьСтатус(Форма, ИмяТЧ, СтруктураДействий)
Если ИмяТЧ = "Услуги" Тогда
Возврат;
КонецЕсли;
ПараметрыДействия = Новый Структура;
ПараметрыДействия.Вставить("Склад", Форма.Объект.Договор);
ПараметрыДействия.Вставить("ПараметрыУказанияСерий", Форма.ПараметрыУказанияСерий[ИмяТЧ]);
СтруктураДействий.Вставить("ПроверитьСериюРассчитатьСтатус", ПараметрыДействия);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьДействияПриИзмененииКоличества(Форма, ИмяТЧ, СтруктураДействий)
Если Не ИмяТЧ = "Услуги" Тогда
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц", ПроизводствоКлиентСервер.ПараметрыПересчетаКоличестваЕдиниц());
КонецЕсли;
ДобавитьДействияПроверитьЗаполнитьДолюСтоимости(Форма, ИмяТЧ, СтруктураДействий);
ДобавитьДействияПересчетаСумм(Форма, ИмяТЧ, СтруктураДействий);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьДействияПроверитьЗаполнитьСпецификацию(Форма, ИмяТЧ, СтруктураДействий, ТекущиеДанные)
Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
Если ИмяТЧ = "ВыходныеИзделия"
И Не Форма.Объект.ПоЗаказам Тогда
ПараметрыЗаполнения =
УправлениеДаннымиОбИзделияхКлиентСервер.ПараметрыДействияПроверитьЗаполнитьСпецификацию(
Форма.Объект,
ТекущиеДанные,
Форма.ПараметрыВыбораСпецификаций);
СтруктураДействий.Вставить("ПроверитьЗаполнитьСпецификацию", ПараметрыЗаполнения);
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьДействияОчиститьЗаполнитьСтатьюАналитику(Форма, ИмяТЧ, СтруктураДействий)
Если Не ИмяТЧ = "ВыходныеИзделия"
И Не ИмяТЧ = "ПобочныеИзделия" Тогда
Возврат;
КонецЕсли;
ДоходыИРасходыКлиентСервер.ВставитьДействиеОчиститьСтатьюИАналитикуРасходов(
СтруктураДействий,
Форма,
"Объект." + ИмяТЧ);
ДоходыИРасходыКлиентСервер.ВставитьДействиеЗаполнитьСтатьюАналитикуРасходовНоменклатуры(
СтруктураДействий,
Форма,
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.СписаниеТоваровПоТребованию"),
Форма.Объект.Организация,
Форма.Объект.Подразделение,
"Объект." + ИмяТЧ);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьДействияИнициализироватьСтатьюИАналитику(Форма, ИмяТЧ, СтруктураДействий)
Если Не ИмяТЧ = "ВыходныеИзделия"
И Не ИмяТЧ = "ПобочныеИзделия" Тогда
Возврат;
КонецЕсли;
ДоходыИРасходыКлиентСервер.ВставитьДействиеИнициализироватьСтатьюИАналитикуПослеДобавленияСтроки(
СтруктураДействий,
Форма,
"Объект." + ИмяТЧ);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьДействияПроверитьЗаполнитьДолюСтоимости(Форма, ИмяТЧ, СтруктураДействий)
Если Не ИмяТЧ = "ВыходныеИзделия" Тогда
Возврат;
КонецЕсли;
СтруктураДействий.Вставить("ПроверитьЗаполнитьДолюСтоимости", Форма.ПараметрыРаспределенияЗатрат);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьДействияЗаполнитьВидЦен(Форма, ИмяТЧ, СтруктураДействий)
Если ИмяТЧ = "Услуги" Тогда
ПараметрыДействия = Новый Структура;
ПараметрыДействия.Вставить("ИмяПоляВидЦены", "ВидЦеныПоставщика");
ПараметрыДействия.Вставить("ВидЦены", Форма.ВидЦеныПоставщикаПоУмолчанию);
СтруктураДействий.Вставить("ЗаполнитьВидЦены", ПараметрыДействия);
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьДействияЗаполнитьЦену(Форма, ИмяТЧ, СтруктураДействий)
Если Не ИмяТЧ = "ВыходныеИзделия"
И Не ИмяТЧ = "ПобочныеИзделия"
И Не ИмяТЧ = "Услуги"
Или ИмяТЧ = "ВыходныеИзделия"
И Не Форма.ИспользоватьПлановуюСтоимость Тогда
Возврат;
КонецЕсли;
Если ИмяТЧ = "ВыходныеИзделия"
Или ИмяТЧ = "ПобочныеИзделия" Тогда
ИмяДействия = "ЗаполнитьЦенуПродажи";
ИначеЕсли ИмяТЧ = "Услуги" Тогда
ИмяДействия = "ЗаполнитьЦенуЗакупки";
КонецЕсли;
СтруктураДействий.Вставить(ИмяДействия, ПараметрыЗаполненияЦеныВСтрокеТЧ(ИмяТЧ, Форма.Объект));
ДобавитьДействияПересчетаСумм(Форма, ИмяТЧ, СтруктураДействий);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьДействияПересчетаСумм(Форма, ИмяТЧ, СтруктураДействий, СписокРеквизитов = "")
Если Не ИмяТЧ = "ВыходныеИзделия"
И Не ИмяТЧ = "ПобочныеИзделия"
И Не ИмяТЧ = "Услуги"
Или ИмяТЧ = "ВыходныеИзделия"
И Не Форма.ИспользоватьПлановуюСтоимость Тогда
Возврат;
КонецЕсли;
СписокРеквизитов = Новый Структура(СписокРеквизитов);
Инициализация = Не ЗначениеЗаполнено(СписокРеквизитов);
ИмяПоляКоличество = "КоличествоУпаковок";
Если ИмяТЧ = "Услуги" Тогда
ИмяПоляКоличество = "Количество";
КонецЕсли;
Если ИмяТЧ = "Услуги"
И (Инициализация
Или СписокРеквизитов.Свойство("СуммаНДС")
Или СписокРеквизитов.Свойство("СуммаСНДС")) Тогда
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВТЧ(Форма.Объект);
КонецЕсли;
Если СписокРеквизитов.Свойство("Цена") Тогда
СтруктураДействий.Вставить("ПересчитатьЦенуПоСумме", ИмяПоляКоличество);
КонецЕсли;
Если Инициализация
Или СписокРеквизитов.Свойство("Сумма") Тогда
СтруктураДействий.Вставить("ПересчитатьСумму", ИмяПоляКоличество);
КонецЕсли;
Если ИмяТЧ = "Услуги"
И (Инициализация
Или СписокРеквизитов.Свойство("СуммаНДС")) Тогда
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
КонецЕсли;
Если ИмяТЧ = "Услуги"
И (Инициализация
Или СписокРеквизитов.Свойство("СуммаСНДС")) Тогда
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
КонецЕсли;
Если ИмяТЧ = "Услуги" Тогда
СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетов");
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область РеквизитыОбъекта
&НаСервере
Процедура ЗаполнитьДоговорПоУмолчанию(ИзмененияУчтены)
Если ИзмененияУчтены = Неопределено Тогда
ИзмененияУчтены = Новый Структура;
КонецЕсли;
ПараметрыОбъекта = Новый Структура("Партнер, Договор, Контрагент, Организация");
ЗаполнитьЗначенияСвойств(ПараметрыОбъекта, Объект);
ПараметрыОбъекта.Вставить("Соглашение", Справочники.СоглашенияСПоставщиками.ПустаяСсылка());
ДопПараметры = ЗакупкиСервер.ДополнительныеПараметрыОтбораДоговоров();
ДопПараметры.ВалютаВзаиморасчетов = Объект.Валюта;
Если Объект.ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоДоговорамКонтрагентов
И ИспользоватьНаправленияДеятельности Тогда
ДопПараметры.НаправлениеДеятельности = Объект.НаправлениеДеятельности;
КонецЕсли;
Договор =
ЗакупкиСервер.ПолучитьДоговорПоУмолчанию(
ПараметрыОбъекта,
Объект.ХозяйственнаяОперация,
ДопПараметры);
Если Договор <> Объект.Договор Тогда
Объект.Договор = Договор;
ДоговорПриИзмененииНаСервере(ИзмененияУчтены);
КонецЕсли;
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтотОбъект, "Договор");
КонецПроцедуры
&НаСервере
Функция ЗаполнитьЦеныПоВидуЦенСервер(ИмяТЧ, Знач ВыделенныеСтроки = Неопределено)
Отказ = Ложь;
СтрокиКПерезаполнению = Неопределено;
Если Не ВыделенныеСтроки = Неопределено Тогда
Если ВыделенныеСтроки.Количество() = 0 Тогда
Если ИмяТЧ = "ПобочныеИзделия" Тогда
ТекстСообщения = НСтр("ru='В таблице ""Побочные изделия"" не выбрано ни одной строки.
|Цены не могут быть заполнены.'");
ИначеЕсли ИмяТЧ = "ВыходныеИзделия" Тогда
ТекстСообщения = НСтр("ru='В таблице ""Выходные изделия"" не выбрано ни одной строки.
|Цены не могут быть заполнены.'");
Иначе
ТекстСообщения = НСтр("ru='В таблице ""Материалы и работы"" не выбрано ни одной строки.
|Цены не могут быть заполнены.'");
КонецЕсли;
ОбщегоНазначения.СообщитьПользователю(ТекстСообщения,, ИмяТЧ, "Объект", Отказ);
Если Не ЗначениеЗаполнено(Объект.ВидЦены) Тогда
ТекстСообщения = НСтр("ru='Не заполнено поле ""Вид цены"".'");
ОбщегоНазначения.СообщитьПользователю(ТекстСообщения,, "ВидЦены", "Объект", Отказ);
КонецЕсли;
КонецЕсли;
Если Отказ Тогда
Возврат Ложь;
КонецЕсли;
СтрокиКПерезаполнению = Новый Массив;
Для Каждого ИдентификаторСтроки Из ВыделенныеСтроки Цикл
СтрокиКПерезаполнению.Добавить(Объект[ИмяТЧ].НайтиПоИдентификатору(ИдентификаторСтроки));
КонецЦикла;
КонецЕсли;
ПараметрыЗаполнения = Новый Структура;
ПараметрыЗаполнения.Вставить("Дата", Объект.Дата);
ПараметрыЗаполнения.Вставить("Организация", Объект.Организация);
ПараметрыЗаполнения.Вставить("Валюта", Объект.Валюта);
ПараметрыЗаполнения.Вставить("ВидЦены", Объект.ВидЦены);
ПараметрыЗаполнения.Вставить("ПоляЗаполнения", "Цена");
СтруктураДействий = Новый Структура;
ДобавитьДействияПересчетаСумм(ЭтотОбъект, ИмяТЧ, СтруктураДействий, "Сумма");
ЦеныРассчитаны =
ЦеныПредприятияЗаполнениеСервер.ЗаполнитьЦены(
Объект[ИмяТЧ],
СтрокиКПерезаполнению,
ПараметрыЗаполнения,
СтруктураДействий);
Возврат ЦеныРассчитаны;
КонецФункции
&НаСервере
Функция ЗаполнитьЦеныПоВидуЦеныПоставщикаНаСервере(ВидЦеныПоставщика, Знач ВыделенныеСтроки = Неопределено)
СтрокиКПерезаполнению = Неопределено;
Если Не ВыделенныеСтроки = Неопределено Тогда
Если ВыделенныеСтроки.Количество() = 0 Тогда
ТекстСообщения = НСтр("ru='В таблице ""Услуги"" не выбрано ни одной строки.
|Цены не могут быть заполнены.'");
ОбщегоНазначения.СообщитьПользователю(ТекстСообщения,, "Услуги", "Объект");
Возврат Ложь;
КонецЕсли;
СтрокиКПерезаполнению = Новый Массив;
Для Каждого ТекСтрока Из ВыделенныеСтроки Цикл
СтрокиКПерезаполнению.Добавить(Объект.Услуги.НайтиПоИдентификатору(ТекСтрока));
КонецЦикла;
КонецЕсли;
СтруктураДействий = Новый Структура;
ДобавитьДействияПересчетаСумм(ЭтотОбъект, "Услуги", СтруктураДействий);
ПараметрыЗаполнения = Новый Структура();
ПараметрыЗаполнения.Вставить("ПоляЗаполнения", "Цена, ВидЦеныПоставщика");
ПараметрыЗаполнения.Вставить("Дата", Объект.Дата);
ПараметрыЗаполнения.Вставить("Валюта", Объект.Валюта);
ПараметрыЗаполнения.Вставить("ВидЦеныПоставщика", ВидЦеныПоставщика);
ЦеныРассчитаны = ЦеныПартнеровЗаполнениеСервер.ЗаполнитьЦены(
Объект.Услуги,
СтрокиКПерезаполнению,
ПараметрыЗаполнения,
СтруктураДействий);
Возврат ЦеныРассчитаны;
КонецФункции
&НаКлиенте
Процедура ТаблицаЗаполнитьТЧПоСпецификацииЗаказуЗавершение(Результат, ИмяТЧ) Экспорт
ОценкаПроизводительностиКлиент.ЗамерВремени(
"Документ.ОтчетПереработчика2_5.Форма.ФормаДокумента.Команда." + ИмяТЧ + "ЗаполнитьТЧПоСпецификацииЗаказу");
Если Результат = КодВозвратаДиалога.Да Тогда
ТаблицаЗаполнитьТЧПоСпецификацииЗаказуНаСервере(ИмяТЧ);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ТаблицаЗаполнитьТЧПоСпецификацииЗаказуНаСервере(ИмяТЧ)
СписокГрупп = ГруппыЗатрат.Выгрузить(, "НомерГруппыЗатрат").ВыгрузитьКолонку("НомерГруппыЗатрат");
ПерезаполнитьПоСпецификацииЗаказуНаСервере(СписокГрупп, ИмяТЧ);
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияПерезаполнитьЗатратныеТЧЗавершение(Результат, ДополнительныеПараметры = Неопределено) Экспорт
Если Результат = КодВозвратаДиалога.Да Тогда
СписокГрупп = Новый Массив;
Для Каждого ИдентификаторСтроки Из Элементы.ВыходныеИзделия.ВыделенныеСтроки Цикл
СписокГрупп.Добавить(Объект.ВыходныеИзделия.НайтиПоИдентификатору(ИдентификаторСтроки).НомерГруппыЗатрат);
КонецЦикла;
СписокГрупп = ОбщегоНазначенияКлиентСервер.СвернутьМассив(СписокГрупп);
ПерезаполнитьПоСпецификацииЗаказуНаСервере(СписокГрупп, "ПобочныеИзделия, МатериалыИРаботы, Услуги");
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПерезаполнитьПоСпецификацииЗаказуНаСервере(СписокГрупп, СписокТЧ = "")
Замер =
ОценкаПроизводительности.НачатьЗамерДлительнойОперации(
"Документ.ОтчетПереработчика2_5.Форма.ФормаДокумента.Команда.ВыходныеИзделияПерезаполнитьЗатратныеТЧ");
ИменаТЧ = Новый Структура(СписокТЧ);
ЗаполнитьВсе = ИменаТЧ.Количество() = 0;
СписокПродукции = Новый Массив;
Отбор = Новый Структура("НомерГруппыЗатрат");
Для Каждого ТекГруппа Из СписокГрупп Цикл
Отбор.НомерГруппыЗатрат = ТекГруппа;
Если Объект.ПоЗаказам
И (ЗаполнитьВсе
Или ИменаТЧ.Свойство("ВыходныеИзделия")) Тогда
ОчиститьТЧПоГруппеЗатрат("ВыходныеИзделия", ТекГруппа);
ИначеЕсли Не Объект.ПоЗаказам Тогда
НайденныеСтроки = Объект.ВыходныеИзделия.НайтиСтроки(Отбор);
Для Каждого ТекСтрока Из НайденныеСтроки Цикл
СписокПродукции.Добавить(ТекСтрока);
КонецЦикла;
КонецЕсли;
Если ЗаполнитьВсе
Или ИменаТЧ.Свойство("ПобочныеИзделия") Тогда
ОчиститьТЧПоГруппеЗатрат("ПобочныеИзделия", ТекГруппа);
КонецЕсли;
Если ЗаполнитьВсе
Или ИменаТЧ.Свойство("МатериалыИРаботы") Тогда
ОчиститьТЧПоГруппеЗатрат("МатериалыИРаботы", ТекГруппа);
КонецЕсли;
Если ЗаполнитьВсе
Или ИменаТЧ.Свойство("Услуги") Тогда
ОчиститьТЧПоГруппеЗатрат("Услуги", ТекГруппа);
КонецЕсли;
КонецЦикла;
Если Объект.ПоЗаказам Тогда
Документы.ОтчетПереработчика2_5.ЗаполнитьИзделияМатериалыУслугиПоЗаказу(Объект, СписокГрупп, СписокТЧ);
Иначе
Документы.ОтчетПереработчика2_5.ЗаполнитьПобочныеИзделияМатериалыУслугиПоСпецификации(Объект, СписокПродукции, СписокТЧ);
КонецЕсли;
ЗаполнитьЗависимыеСлужебныеРеквизитыНаСервере("ПоЗаказам");
Если ЗаполнитьВсе
И Не Объект.ПоЗаказам Тогда
СписокТЧ = "ПобочныеИзделия, МатериалыИРаботы, Услуги";
КонецЕсли;
ЗаполнитьСлужебныеРеквизитыТабличныхЧастей(СписокТЧ);
Если ЗаполнитьВсе
Или ИменаТЧ.Свойство("ВыходныеИзделия")
Или ИменаТЧ.Свойство("ПобочныеИзделия") Тогда
Для Каждого ТекГруппа Из СписокГрупп Цикл
ОписаниеГруппыЗатрат = ДанныеГруппыЗатратПоНомеруГруппыЗатрат(ТекГруппа);
ЗаполнитьЗависимыеСлужебныеРеквизитыГруппыЗатрат(ОписаниеГруппыЗатрат);
Если Не ОписаниеГруппыЗатрат.ЕстьИмпортноеИзделие Тогда
ОчиститьФлагОсновнойПоГруппеЗатрат(ТекГруппа);
КонецЕсли;
КонецЦикла;
КонецЕсли;
ОбновитьСлужебныеРеквизитыГруппЗатратВСвязаннойТЧ();
РассчитатьИтогиДокумента(ЭтотОбъект);
Если Объект.ПоЗаказам Тогда
ОценкаПроизводительности.ЗакончитьЗамерДлительнойОперации(Замер, СписокГрупп.Количество());
Иначе
ОценкаПроизводительности.ЗакончитьЗамерДлительнойОперации(Замер, СписокПродукции.Количество());
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область Штрихкоды
&НаКлиенте
Процедура ОбработатьШтрихкоды(ДанныеШтрихкодов, ИмяТЧ)
СтруктураДействий = ШтрихкодированиеНоменклатурыКлиент.ПараметрыОбработкиШтрихкодов();
СтруктураДействий.Штрихкоды = ДанныеШтрихкодов;
СтруктураДействий.ИмяТЧ = ИмяТЧ;
СтруктураДействий.ИзменятьКоличество = Истина;
Если ИмяТЧ = "Услуги" Тогда
СтруктураДействий.ИмяКолонкиКоличество = "Количество";
СтруктураДействий.НеИспользоватьУпаковки = Истина;
СтруктураДействий.ТолькоРаботы = Истина;
Иначе
СтруктураДействий.ТолькоТоварыИРабота = Истина;
КонецЕсли;
СтруктураДействийСИзмененнымиСтроками = Новый Структура;
ДобавитьДействияПриИзмененииКоличества(ЭтотОбъект, ИмяТЧ, СтруктураДействийСИзмененнымиСтроками);
СтруктураДействийСДобавленнымиСтроками = Новый Структура;
ДобавитьДействияПриИзмененииНоменклатуры(ЭтотОбъект, ИмяТЧ, СтруктураДействийСДобавленнымиСтроками);
ДобавитьДействияПриИзмененииХарактеристики(ЭтотОбъект, ИмяТЧ, СтруктураДействийСДобавленнымиСтроками);
ДобавитьДействияЗаполнитьВидЦен(ЭтотОбъект, ИмяТЧ, СтруктураДействийСДобавленнымиСтроками);
ДобавитьДействияЗаполнитьЦену(ЭтотОбъект, ИмяТЧ, СтруктураДействийСДобавленнымиСтроками);
ДобавитьДействияИнициализироватьСтатьюИАналитику(ЭтотОбъект, ИмяТЧ, СтруктураДействийСДобавленнымиСтроками);
Если ИмяТЧ = "МатериалыИРаботы" Тогда
СтруктураДействий.ПараметрыУказанияСерий = ПараметрыУказанияСерий[ИмяТЧ];
ИначеЕсли Не ИмяТЧ = "Услуги" Тогда
СтруктураДействий.ПараметрыУказанияСерий = ПараметрыУказанияСерий[ИмяТЧ];
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтотОбъект, СтруктураДействийСДобавленнымиСтроками);
КонецЕсли;
СтруктураДействий.СтруктураДействийСДобавленнымиСтроками = СтруктураДействийСДобавленнымиСтроками;
СтруктураДействий.СтруктураДействийСИзмененнымиСтроками = СтруктураДействийСИзмененнымиСтроками;
ОбработатьШтрихкодыНаСервере(СтруктураДействий, КэшированныеЗначения);
ШтрихкодированиеНоменклатурыКлиент.ОбработатьНеизвестныеШтрихкоды(СтруктураДействий,КэшированныеЗначения,ЭтотОбъект);
Если Не ИмяТЧ = "Услуги" Тогда
Если ШтрихкодированиеНоменклатурыКлиент.НужноОткрытьФормуУказанияСерийПослеОбработкиШтрихкодов(СтруктураДействий) Тогда
ТекущиеДанныеИдентификатор = СтруктураДействий.МассивСтрокССериями[0];
ПодключитьОбработчикОжидания("Подключаемый_ОткрытьПодборСерийПриСканированииШтрихкодаНоменклатуры_" + ИмяТЧ, 0.1, Истина);
КонецЕсли;
КонецЕсли;
Если СтруктураДействий.ТекущаяСтрока <> Неопределено Тогда
ТаблицаФормы = Элементы[ИмяТЧ];
ТаблицаФормы.ТекущаяСтрока = СтруктураДействий.ТекущаяСтрока;
КонецЕсли;
РассчитатьПроцентРаспределенияЗатратНаВыходныеИзделия();
РассчитатьИтогиДокумента(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ОбработатьШтрихкодыНаСервере(СтруктураПараметровДействия, КэшированныеЗначения)
ИмяТЧ = СтруктураПараметровДействия.ИмяТЧ;
КоличествоСтрокДоИзменения = Объект[ИмяТЧ].Количество();
ШтрихкодированиеНоменклатурыСервер.ОбработатьШтрихкоды(ЭтотОбъект, Объект, СтруктураПараметровДействия, КэшированныеЗначения);
КоличествоСтрок = Объект[ИмяТЧ].Количество();
Если Не КоличествоСтрок = КоличествоСтрокДоИзменения Тогда
ГруппировкиКЗаполнению = Новый Массив;
ДанныеОбИзделиях = Новый Массив;
ОбрабатываемыеСтроки = Новый Массив;
Для Индекс = КоличествоСтрокДоИзменения + 1 По КоличествоСтрок Цикл
ТекущиеДанные = Объект[ИмяТЧ][Индекс - 1];
Если ИмяТЧ = "ВыходныеИзделия"
И Не Объект.ПоЗаказам Тогда
ДанныеОбИзделиях.Добавить(
УправлениеДаннымиОбИзделияхКлиентСервер.СобратьДанныеОбИзделииДляВыбораСпецификации(
Объект, ТекущиеДанные, ПараметрыВыбораСпецификаций, ЭтотОбъект));
ОбрабатываемыеСтроки.Добавить(ТекущиеДанные);
КонецЕсли;
Если ИмяТЧ = "ВыходныеИзделия" Тогда
Если Не Объект.ПоЗаказам Тогда
ДобавитьИзменитьГруппуЗатрат(ТекущиеДанные, Истина);
Иначе
УстановитьНомерГруппыЗатратПоУмолчанию(ИмяТЧ, ТекущиеДанные.ПолучитьИдентификатор());
КонецЕсли;
Иначе
УстановитьНомерГруппыЗатратПоУмолчанию(ИмяТЧ, ТекущиеДанные.ПолучитьИдентификатор());
КонецЕсли;
ГруппировкиКЗаполнению.Добавить(ТекущиеДанные.НомерГруппыЗатрат);
КонецЦикла;
Если ИмяТЧ = "ВыходныеИзделия"
И Не Объект.ПоЗаказам Тогда
УправлениеДаннымиОбИзделиях.ЗаполнитьСпецификациюВСтроках(ОбрабатываемыеСтроки, ДанныеОбИзделиях, ПараметрыВыбораСпецификаций);
КонецЕсли;
ГруппировкиКЗаполнению = ОбщегоНазначенияКлиентСервер.СвернутьМассив(ГруппировкиКЗаполнению);
Для Каждого ТекГруппа Из ГруппировкиКЗаполнению Цикл
ТаблицаЗаполнитьЗависимыеСлужебныеРеквизитыГруппыЗатрат(ИмяТЧ, ТекГруппа);
КонецЦикла;
КонецЕсли;
ОбновитьРасхождениеЗаказ(СтруктураПараметровДействия.ИмяТЧ);
КонецПроцедуры
#КонецОбласти
#Область ВспомогательныеПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ПараметрыЗаполненияЦеныВСтрокеТЧ(ИмяТЧ, Объект)
ПараметрыЗаполненияЦены = Неопределено;
Если ИмяТЧ = "ВыходныеИзделия"
Или ИмяТЧ = "ПобочныеИзделия" Тогда
ПараметрыЗаполненияЦены = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияЦеныВСтрокеТЧ(Объект, Истина);
ИначеЕсли ИмяТЧ = "Услуги" Тогда
ПараметрыЗаполненияЦены = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияЦеныЗакупкиВСтрокеТЧ(Объект);
ПараметрыЗаполненияЦены.Вставить("Упаковка", ПредопределенноеЗначение("Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка"));
КонецЕсли;
Возврат ПараметрыЗаполненияЦены;
КонецФункции
&НаСервере
Процедура ЗаполнитьПодчиненныеСвойстваПоСтатистике(ИмяРеквизитаРодителя)
ЗаполнениеОбъектовПоСтатистике.ЗаполнитьПодчиненныеРеквизитыОбъекта(Объект, ИмяРеквизитаРодителя);
КонецПроцедуры
&НаСервере
Процедура ПослеИзмененияСтрокТЧПрограммноНаСервере(ИмяТЧ, Знач ВыделенныеСтроки = Неопределено)
Если ИмяТЧ = "ВыходныеИзделия" Тогда
Группировки = Новый Массив;
Если ВыделенныеСтроки <> Неопределено Тогда
Для Каждого ИдентификаторСтроки Из ВыделенныеСтроки Цикл
ДанныеСтроки = Объект.ВыходныеИзделия.НайтиПоИдентификатору(ИдентификаторСтроки);
Группировки.Добавить(ДанныеСтроки.НомерГруппыЗатрат);
КонецЦикла;
КонецЕсли;
РассчитатьПроцентРаспределенияЗатратНаВыходныеИзделия(Группировки);
КонецЕсли;
Если Не ИмяТЧ = "Услуги" Тогда
МассивСтрок = Неопределено;
Если ВыделенныеСтроки <> Неопределено Тогда
МассивСтрок = Новый Массив;
Для Каждого ИдентификаторСтроки Из ВыделенныеСтроки Цикл
МассивСтрок.Добавить(Объект[ИмяТЧ].НайтиПоИдентификатору(ИдентификаторСтроки));
КонецЦикла;
КонецЕсли;
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(
Объект,
ПараметрыУказанияСерий[ИмяТЧ],
МассивСтрок);
КонецЕсли;
Если ИмяТЧ = "ВыходныеИзделия"
Или ИмяТЧ = "ПобочныеИзделия" Тогда
СписокРеквизитов = "КоличествоСверхЗаказа,КоличествоИзделий,ВедетсяУчетПоГТД";
ИначеЕсли ИмяТЧ = "Услуги" Тогда
СписокРеквизитов = "КоличествоСверхЗаказа,СуммаУслуг";
Иначе
СписокРеквизитов = "НеВыполнять";
КонецЕсли;
РассчитатьИтогиДокумента(ЭтотОбъект, СписокРеквизитов);
КонецПроцедуры
&НаСервере
Функция ПараметрыФормыВводаДолиСтоимости(ТекущийИдентификатор)
ПараметрыФормы =
ПроизводствоСервер.ПараметрыФормыВводаДолейСтоимости(
Объект,
ПараметрыРаспределенияЗатрат,
ТекущийИдентификатор);
Возврат ПараметрыФормы;
КонецФункции
&НаКлиенте
Функция ВозможноПерезаполнитьПоСпецификацииЗаказу()
ТекущиеДанные = Элементы.ВыходныеИзделия.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
ПоказатьПредупреждение(, НСтр("ru = 'Необходимо выбрать выбрать изделие.'"));
Возврат Ложь;
КонецЕсли;
Если Объект.ПоЗаказам Тогда
Возврат Истина;
КонецЕсли;
Отказ = Ложь;
Для каждого ТекущаяСтрока Из Элементы.ВыходныеИзделия.ВыделенныеСтроки Цикл
ТекущиеДанные = Объект.ВыходныеИзделия.НайтиПоИдентификатору(ТекущаяСтрока);
Если Не ЗначениеЗаполнено(ТекущиеДанные.Спецификация) Тогда
ТекстСообщения = СтрШаблон(НСтр("ru = 'Не заполнено поле ""Спецификация"" в строке %1 списка ""Выходные изделия""'"), ТекущиеДанные.НомерСтроки);
ПутьКРеквизиту = ОбщегоНазначенияКлиентСервер.ПутьКТабличнойЧасти("Объект.ВыходныеИзделия", ТекущиеДанные.НомерСтроки, "Спецификация");
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстСообщения, Объект.Ссылка, ПутьКРеквизиту,, Отказ);
КонецЕсли;
КонецЦикла;
Возврат Не Отказ;
КонецФункции
#КонецОбласти
#КонецОбласти
#Область ГруппировкаЗатрат
&НаСервере
Процедура ДобавитьИзменитьГруппуЗатрат(ТекущиеДанные, ПакетныйРежим = Ложь)
СтруктураОтбора = СтруктураОтбораГруппыЗатрат(ТекущиеДанные);
ПредставлениеГруппыЗатрат = ПредставлениеГруппыЗатрат(СтруктураОтбора);
НомерГруппыДоИзменения = ТекущиеДанные.НомерГруппыЗатрат;
ОписаниеГруппыЗатрат = ДанныеГруппыЗатрат(СтруктураОтбора);
Если ОписаниеГруппыЗатрат.НомерГруппыЗатрат = 0 Тогда
НоваяГруппаЗатрат = ГруппыЗатрат.Добавить();
ЗаполнитьЗначенияСвойств(НоваяГруппаЗатрат, СтруктураОтбора);
Объект.МаксимальныйНомерГруппыЗатрат = Объект.МаксимальныйНомерГруппыЗатрат + 1;
КоличествоГруппЗатрат = КоличествоГруппЗатрат + 1;
НоваяГруппаЗатрат.НомерГруппыЗатрат = Объект.МаксимальныйНомерГруппыЗатрат;
НоваяГруппаЗатрат.ГруппаЗатрат = ПредставлениеГруппыЗатрат;
ЗаполнитьЗначенияСвойств(ОписаниеГруппыЗатрат, НоваяГруппаЗатрат);
КонецЕсли;
ЗаполнитьСлужебныеРеквизитыГруппыЗатрат(ОписаниеГруппыЗатрат);
Если Не НомерГруппыДоИзменения = ОписаниеГруппыЗатрат.НомерГруппыЗатрат
И КоличествоИдентифицирующихСтрок(ДанныеГруппыЗатратПоНомеруГруппыЗатрат(НомерГруппыДоИзменения)) = 1 Тогда
ОбновитьСвязиСГруппойЗатрат(НомерГруппыДоИзменения, ОписаниеГруппыЗатрат);
СтруктураОтбора = Новый Структура("НомерГруппыЗатрат", НомерГруппыДоИзменения);
НайденныеСтроки = ГруппыЗатрат.НайтиСтроки(СтруктураОтбора);
Для Каждого ТекГруппа Из НайденныеСтроки Цикл
ГруппыЗатрат.Удалить(ТекГруппа);
КоличествоГруппЗатрат = КоличествоГруппЗатрат - 1;
КонецЦикла;
КонецЕсли;
ТекущиеДанные.НомерГруппыЗатрат = ОписаниеГруппыЗатрат.НомерГруппыЗатрат;
ТекущиеДанные.ГруппаЗатрат = ОписаниеГруппыЗатрат.ГруппаЗатрат;
Если Не ПакетныйРежим Тогда
ЗаполнитьЗависимыеСлужебныеРеквизитыГруппыЗатрат(ОписаниеГруппыЗатрат);
Если ИспользоватьИмпортныеТовары Тогда
ОбновитьСлужебныеРеквизитыГруппыЗатратВСвязаннойТЧ(ОписаниеГруппыЗатрат, "МатериалыИРаботы", "ЕстьИмпортноеИзделие");
Если Не ОписаниеГруппыЗатрат.ЕстьИмпортноеИзделие Тогда
ОчиститьФлагОсновнойПоГруппеЗатрат(ОписаниеГруппыЗатрат.НомерГруппыЗатрат);
КонецЕсли;
КонецЕсли;
ОписаниеГруппыЗатрат = ДанныеГруппыЗатратПоНомеруГруппыЗатрат(НомерГруппыДоИзменения);
Если Не ОписаниеГруппыЗатрат.НомерГруппыЗатрат = 0 Тогда
ЗаполнитьЗависимыеСлужебныеРеквизитыГруппыЗатрат(ОписаниеГруппыЗатрат);
Если ИспользоватьИмпортныеТовары Тогда
ОбновитьСлужебныеРеквизитыГруппыЗатратВСвязаннойТЧ(ОписаниеГруппыЗатрат, "МатериалыИРаботы", "ЕстьИмпортноеИзделие");
Если Не ОписаниеГруппыЗатрат.ЕстьИмпортноеИзделие Тогда
ОчиститьФлагОсновнойПоГруппеЗатрат(ОписаниеГруппыЗатрат.НомерГруппыЗатрат);
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УдалитьГруппуЗатрат(ТекущийИдентификатор)
ТекущиеДанные = Объект.ВыходныеИзделия.НайтиПоИдентификатору(ТекущийИдентификатор);
ОписаниеГруппыЗатрат = ДанныеГруппыЗатратПоНомеруГруппыЗатрат(ТекущиеДанные.НомерГруппыЗатрат);
Если КоличествоИдентифицирующихСтрок(ОписаниеГруппыЗатрат) = 1 Тогда
ОписаниеГруппыЗатрат = ОписаниеГруппыЗатрат();
ОчиститьТЧПоГруппеЗатрат("ПобочныеИзделия", ТекущиеДанные.НомерГруппыЗатрат);
ОчиститьТЧПоГруппеЗатрат("МатериалыИРаботы", ТекущиеДанные.НомерГруппыЗатрат);
ОчиститьТЧПоГруппеЗатрат("Услуги", ТекущиеДанные.НомерГруппыЗатрат);
РассчитатьИтогиДокумента(ЭтотОбъект, "СуммаУслуг");
СтруктураОтбора = Новый Структура("НомерГруппыЗатрат", ТекущиеДанные.НомерГруппыЗатрат);
НайденныеСтроки = ГруппыЗатрат.НайтиСтроки(СтруктураОтбора);
Для Каждого ТекГруппа Из НайденныеСтроки Цикл
ГруппыЗатрат.Удалить(ТекГруппа);
КоличествоГруппЗатрат = КоличествоГруппЗатрат - 1;
КонецЦикла;
Иначе
Возврат;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьНомерГруппыЗатратПоУмолчанию(ИмяТЧ, ТекущийИдентификатор)
ТекущиеДанные = Объект[ИмяТЧ].НайтиПоИдентификатору(ТекущийИдентификатор);
Если Не ТекущиеДанные = Неопределено
И ТекущиеДанные.НомерГруппыЗатрат = 0
И КоличествоГруппЗатрат = 1 Тогда
ТекущиеДанные.ГруппаЗатрат = ГруппыЗатрат[0].ГруппаЗатрат;
ТекущиеДанные.НомерГруппыЗатрат = ГруппыЗатрат[0].НомерГруппыЗатрат;
Если Объект.ПоЗаказам
И (Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоСпецификациям
Или Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоСпецификациямИНазначениям)
И ИмяТЧ = "ВыходныеИзделия" Тогда
ТекущиеДанные.Спецификация = ГруппыЗатрат[0].Спецификация;
КонецЕсли;
Если ИмяТЧ = "МатериалыИРаботы"
И ИспользоватьИмпортныеТовары Тогда
ТекущиеДанные.ЕстьИмпортноеИзделие = ГруппыЗатрат[0].ЕстьИмпортноеИзделие;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбновитьГруппыЗатрат()
Документы.ОтчетПереработчика2_5.ОбновитьГруппыЗатрат(Объект, ГруппыЗатрат, КоличествоГруппЗатрат);
Для Каждого ТекГруппа Из ГруппыЗатрат Цикл
ЗаполнитьЗависимыеСлужебныеРеквизитыГруппыЗатрат(ТекГруппа);
КонецЦикла;
ОбновитьСлужебныеРеквизитыГруппЗатратВСвязаннойТЧ();
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСлужебныеРеквизитыГруппыЗатрат(ОписаниеГруппыЗатрат)
Документы.ОтчетПереработчика2_5.ЗаполнитьСлужебныеРеквизитыГруппыЗатрат(Объект, ГруппыЗатрат, ОписаниеГруппыЗатрат);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьЗависимыеСлужебныеРеквизитыГруппыЗатрат(ОписаниеГруппыЗатрат)
Если ИспользоватьИмпортныеТовары Тогда
Документы.ОтчетПереработчика2_5.ЗаполнитьЗависимыеСлужебныеРеквизитыГруппыЗатрат(Объект, ГруппыЗатрат, ОписаниеГруппыЗатрат);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбновитьСлужебныеРеквизитыГруппЗатратВСвязаннойТЧ(ДополнительныеНомераГруппЗатрат = Неопределено)
ОбработанныеГруппыЗатрат = Новый Соответствие();
Для Каждого ТекГруппа Из ГруппыЗатрат Цикл
ТекГруппа.ГруппаЗатрат = ПредставлениеГруппыЗатрат(ТекГруппа);
ОбновитьСлужебныеРеквизитыГруппыЗатратВСвязаннойТЧ(ТекГруппа, "ВыходныеИзделия", "ГруппаЗатрат");
ОбновитьСлужебныеРеквизитыГруппыЗатратВСвязаннойТЧ(ТекГруппа, "ПобочныеИзделия", "ГруппаЗатрат");
ОбновитьСлужебныеРеквизитыГруппыЗатратВСвязаннойТЧ(ТекГруппа, "МатериалыИРаботы", "ГруппаЗатрат, ЕстьИмпортноеИзделие");
ОбновитьСлужебныеРеквизитыГруппыЗатратВСвязаннойТЧ(ТекГруппа, "Услуги", "ГруппаЗатрат");
ОбработанныеГруппыЗатрат.Вставить(ТекГруппа.НомерГруппыЗатрат);
КонецЦикла;
Если Не ДополнительныеНомераГруппЗатрат = Неопределено Тогда
Для Каждого НомерГруппыЗатрат Из ДополнительныеНомераГруппЗатрат Цикл
Если Не ОбработанныеГруппыЗатрат.Получить(НомерГруппыЗатрат) = Неопределено Тогда
Продолжить;
КонецЕсли;
ОписаниеГруппыЗатрат = ДанныеГруппыЗатратПоНомеруГруппыЗатрат(НомерГруппыЗатрат);
ОписаниеГруппыЗатрат.ГруппаЗатрат = ПредставлениеГруппыЗатрат(ОписаниеГруппыЗатрат);
ОбновитьСлужебныеРеквизитыГруппыЗатратВСвязаннойТЧ(ОписаниеГруппыЗатрат, "МатериалыИРаботы", "ЕстьИмпортноеИзделие");
КонецЦикла;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбновитьСлужебныеРеквизитыГруппыЗатратВСвязаннойТЧ(ОписаниеГруппыЗатрат, ИмяТЧ, ИменаРеквизитов)
СтруктураОтбора = Новый Структура("НомерГруппыЗатрат", ОписаниеГруппыЗатрат.НомерГруппыЗатрат);
Строки = Объект[ИмяТЧ].НайтиСтроки(СтруктураОтбора);
Для Каждого ТекСтрока Из Строки Цикл
ЗаполнитьЗначенияСвойств(ТекСтрока, ОписаниеГруппыЗатрат, ИменаРеквизитов);
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ОбновитьСвязиСГруппойЗатрат(ТекущийНомерГруппы, ОписаниеГруппыЗатрат)
Если ТекущийНомерГруппы = 0
И Не ГруппыЗатрат.Количество() = 1 Тогда
Возврат;
КонецЕсли;
СтруктураОтбора = Новый Структура("НомерГруппыЗатрат", ТекущийНомерГруппы);
Строки = Объект.ПобочныеИзделия.НайтиСтроки(СтруктураОтбора);
Для Каждого ТекущиеДанные Из Строки Цикл
ТекущиеДанные.ГруппаЗатрат = ОписаниеГруппыЗатрат.ГруппаЗатрат;
ТекущиеДанные.НомерГруппыЗатрат = ОписаниеГруппыЗатрат.НомерГруппыЗатрат;
КонецЦикла;
Строки = Объект.МатериалыИРаботы.НайтиСтроки(СтруктураОтбора);
Для Каждого ТекущиеДанные Из Строки Цикл
ТекущиеДанные.ГруппаЗатрат = ОписаниеГруппыЗатрат.ГруппаЗатрат;
ТекущиеДанные.НомерГруппыЗатрат = ОписаниеГруппыЗатрат.НомерГруппыЗатрат;
Если ИспользоватьИмпортныеТовары Тогда
ТекущиеДанные.ЕстьИмпортноеИзделие = ОписаниеГруппыЗатрат.ЕстьИмпортноеИзделие;
Если Не ТекущиеДанные.ЕстьИмпортноеИзделие Тогда
ТекущиеДанные.Основной = Ложь;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Строки = Объект.Услуги.НайтиСтроки(СтруктураОтбора);
Для Каждого ТекущиеДанные Из Строки Цикл
ТекущиеДанные.ГруппаЗатрат = ОписаниеГруппыЗатрат.ГруппаЗатрат;
ТекущиеДанные.НомерГруппыЗатрат = ОписаниеГруппыЗатрат.НомерГруппыЗатрат;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ОчиститьТЧПоГруппеЗатрат(ИмяТЧ, ТекущийНомерГруппы)
Таблица = Объект[ИмяТЧ].Выгрузить();
Таблица.Индексы.Добавить("НомерГруппыЗатрат");
Отбор = Новый Структура("НомерГруппыЗатрат", ТекущийНомерГруппы);
НайденныеСтроки = Таблица.НайтиСтроки(Отбор);
Для Каждого ТекСтрока Из НайденныеСтроки Цикл
Таблица.Удалить(ТекСтрока);
КонецЦикла;
Объект[ИмяТЧ].Загрузить(Таблица);
КонецПроцедуры
&НаСервере
Процедура ОчиститьФлагОсновнойПоГруппеЗатрат(ТекущийНомерГруппы)
НайденныеСтроки = ОсновныеМатериалыГруппыЗатрат(ТекущийНомерГруппы);
Для Каждого НайденнаяСтрока Из НайденныеСтроки Цикл
НайденнаяСтрока.Основной = Ложь;
КонецЦикла;
КонецПроцедуры
&НаСервере
Функция ОсновныеМатериалыГруппыЗатрат(ТекущийНомерГруппы)
СтруктураОтбора = Новый Структура("НомерГруппыЗатрат, Основной", ТекущийНомерГруппы, Истина);
Возврат Объект.МатериалыИРаботы.НайтиСтроки(СтруктураОтбора);
КонецФункции
&НаСервере
Функция ОписаниеГруппыЗатрат()
ОписаниеГруппыЗатрат = Новый Структура;
Колонки = ГруппыЗатрат.Выгрузить(Новый Массив).Колонки;
Для Каждого Колонка Из Колонки Цикл
ОписаниеГруппыЗатрат.Вставить(Колонка.Имя, Колонка.ТипЗначения.ПривестиЗначение());
КонецЦикла;
Возврат ОписаниеГруппыЗатрат;
КонецФункции
&НаСервере
Функция ДанныеГруппыЗатратПоНомеруГруппыЗатрат(ТекущийНомерГруппы)
СтруктураОтбора = Новый Структура("НомерГруппыЗатрат", ТекущийНомерГруппы);
Возврат ДанныеГруппыЗатрат(СтруктураОтбора);
КонецФункции
&НаСервере
Функция ДанныеГруппыЗатрат(СтруктураОтбора)
ОписаниеГруппыЗатрат = ОписаниеГруппыЗатрат();
НайденныеСтроки = ГруппыЗатрат.НайтиСтроки(СтруктураОтбора);
Если Не НайденныеСтроки.Количество() = 0 Тогда
ЗаполнитьЗначенияСвойств(ОписаниеГруппыЗатрат, НайденныеСтроки[0]);
КонецЕсли;
Возврат ОписаниеГруппыЗатрат;
КонецФункции
&НаСервере
Функция СтруктураОтбораГруппыЗатрат(ТекущиеДанные)
СписокПолей =
ПереработкаНаСторонеКлиентСервер.ПереченьПолейГруппыЗатратОтчетаПереработчика(Объект.ГруппировкаЗатрат);
СтруктураОтбора = ПереработкаНаСторонеКлиентСервер.СтруктураОтбораГруппыЗатрат(СписокПолей);
Если Не ТекущиеДанные = Неопределено Тогда
ЗаполнитьЗначенияСвойств(СтруктураОтбора, ТекущиеДанные);
КонецЕсли;
Возврат СтруктураОтбора;
КонецФункции
&НаСервере
Функция КоличествоИдентифицирующихСтрок(ОписаниеГруппыЗатрат)
СтруктураОтбора = Новый Структура("НомерГруппыЗатрат", ОписаниеГруппыЗатрат.НомерГруппыЗатрат);
НайденныеСтроки = Объект.ВыходныеИзделия.НайтиСтроки(СтруктураОтбора);
Возврат НайденныеСтроки.Количество();
КонецФункции
&НаСервере
Функция ПредставлениеГруппыЗатрат(Группа)
Возврат ПереработкаНаСторонеКлиентСервер.ПредставлениеГруппыЗатрат(
Группа,
ПереработкаНаСторонеКлиентСервер.ПереченьПолейГруппыЗатратОтчетаПереработчика(Объект.ГруппировкаЗатрат));
КонецФункции
&НаСервере
Функция ПоместитьДанныеГруппЗатратВХранилище(ИмяТЧ)
Таблица = ГруппыЗатрат.Выгрузить();
Возврат ПоместитьВоВременноеХранилище(Таблица, УникальныйИдентификатор);
КонецФункции
#КонецОбласти
#Область КонтрольИзменений
&НаКлиенте
Процедура Подключаемый_ПриИзменении_УстановитьДоступностьЭлементовПоСтатусуСервер(Элемент)
Если Не ВыполнитьПроверкиПередИзменениемРеквизита() Тогда
ОбщегоНазначенияУТКлиент.ВернутьПредыдущееЗначениеРеквизита(ЭтотОбъект, Элемент);
Возврат;
Иначе
ОбщегоНазначенияУТКлиент.СохранитьЗначениеРеквизита(ЭтотОбъект, Элемент);
КонецЕсли;
Если ОбщегоНазначенияУТКлиент.ПриДействииСЭлементомЗависящимОтСтатуса(ЭтотОбъект) Тогда
Возврат;
КонецЕсли;
Если СтруктураДействийКонтрольНеСогласованныхИзменений.ПриИзменении.Свойство(Элемент.Имя) Тогда
КонтрольИзмененийОбработатьСобытиеПриИзменении(Элемент);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_Команда_УстановитьДоступностьЭлементовПоСтатусуСервер(Команда)
Если Не ВыполнитьПроверкиПередИзменениемРеквизита() Тогда
Возврат;
КонецЕсли;
Если ОбщегоНазначенияУТКлиент.ПриДействииСЭлементомЗависящимОтСтатуса(ЭтотОбъект) Тогда
Возврат;
КонецЕсли;
Если СтруктураДействийКонтрольНеСогласованныхИзменений.Команды.Свойство(Команда.Имя) Тогда
КонтрольИзмененийОбработатьСобытиеКоманды(Команда);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПередУдалением_УстановитьДоступностьЭлементовПоСтатусуСервер(Элемент, Отказ)
Если Не ВыполнитьПроверкиПередИзменениемРеквизита() Тогда
Отказ = Истина;
Возврат;
КонецЕсли;
Если ОбщегоНазначенияУТКлиент.ПриДействииСЭлементомЗависящимОтСтатуса(ЭтотОбъект) Тогда
Возврат;
КонецЕсли;
Имя = Элемент.Имя;
Если СтруктураДействийКонтрольНеСогласованныхИзменений.ПередУдалением.Свойство(Имя) Тогда
КонтрольИзмененийОбработатьСобытиеПередУдалением(Элемент, Отказ);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПередНачаломДобавления_УстановитьДоступностьЭлементовПоСтатусуСервер(Элемент, Отказ, Копирование, Родитель, Группа)
Если Не ВыполнитьПроверкиПередИзменениемРеквизита() Тогда
Отказ = Истина;
Возврат;
КонецЕсли;
Если ОбщегоНазначенияУТКлиент.ПриДействииСЭлементомЗависящимОтСтатуса(ЭтотОбъект) Тогда
Возврат;
КонецЕсли;
Имя = Элемент.Имя;
Если СтруктураДействийКонтрольНеСогласованныхИзменений.ПередНачаломДобавления.Свойство(Имя) Тогда
КонтрольИзмененийОбработатьСобытиеПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПередНачаломИзменения_УстановитьДоступностьЭлементовПоСтатусуСервер(Элемент, Отказ)
Если СтруктураДействийКонтрольНеСогласованныхИзменений = Неопределено Тогда
Возврат;
КонецЕсли;
ЗаполнитьЗначенияСвойств(СтруктураДействийКонтрольНеСогласованныхИзменений.ЗначенияРеквизитов[Элемент.Имя], Элемент.ТекущиеДанные);
КонецПроцедуры
&НаКлиенте
Функция ВыполнитьПроверкиПередИзменениемРеквизита()
ОчиститьСообщения();
ЕстьСчетаФактуры = Ложь;
РеквизитМожноИзменить = Ложь;
Оповещение = Новый ОписаниеОповещения("РезультатВопросаЗавершение", ЭтотОбъект);
Если СтруктураДействийКонтрольНеСогласованныхИзменений = Неопределено
Или СтруктураДействийКонтрольНеСогласованныхИзменений.ОжидаетсяОповещение Тогда
ВыполнитьОбработкуОповещения(Оповещение, "ИзменитьРеквизит");
РеквизитМожноИзменить = Истина;
КонецЕсли;
ПроверитьНаличиеКорректировокИСчетовФактур(Объект.Ссылка, ЕстьКорректировки, ЕстьСчетаФактуры);
Если (ЕстьКорректировки
Или ЕстьСчетаФактуры)
И Не ЕстьПравоДобавленияКорректировок
И ИспользоватьКорректировкиПриобретений Тогда
Если ЕстьКорректировки Тогда
ТекстСообщения = НСтр("ru='На основании документа введена корректировка.
|Недостаточно прав для создания корректировки отчета переработчика.'");
Иначе
ТекстСообщения = НСтр("ru='На основании документа зарегистрирована счет-фактура.
|Недостаточно прав для создания корректировки отчета переработчика.'");
КонецЕсли;
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстСообщения);
ИначеЕсли ЕстьКорректировки
И ИспользоватьКорректировкиПриобретений Тогда
СписокКнопок = Новый СписокЗначений;
СписокКнопок.Добавить("ВвестиКорректировку", НСтр("ru='Ввести корректировку'"));
СписокКнопок.Добавить("ОтменитьИзменения", НСтр("ru='Отмена'"));
ПоказатьВопрос(
Оповещение,
НСтр("ru='На основании документа введена корректировка.
|Изменение исходного документа запрещено.'"),
СписокКнопок,,
"ВвестиКорректировку");
ИначеЕсли ЕстьСчетаФактуры
И ИспользоватьКорректировкиПриобретений Тогда
СписокКнопок = Новый СписокЗначений;
СписокКнопок.Добавить("ВвестиКорректировку", НСтр("ru='Ввести корректировку'"));
СписокКнопок.Добавить("ОтменитьИзменения", НСтр("ru='Отмена'"));
ПоказатьВопрос(
Оповещение,
НСтр("ru='На основании документа зарегистрирована счет-фактура.
|Ввести корректировку отчета переработчика для выставления исправленных счетов-фактур?'"),
СписокКнопок,,
"ВвестиКорректировку");
Иначе
ВыполнитьОбработкуОповещения(Оповещение, "ИзменитьРеквизит");
РеквизитМожноИзменить = Истина;
КонецЕсли;
Возврат РеквизитМожноИзменить;
КонецФункции
&НаКлиенте
Процедура РезультатВопросаЗавершение(КодОтвета, ДополнительныеПараметры) Экспорт
Если КодОтвета = "ВвестиКорректировку" Тогда
ОткрытьФорму("Документ.КорректировкаПриобретения.ФормаОбъекта", Новый Структура("Основание", Объект.Ссылка));
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КонтрольИзмененийОбработатьСобытиеПриИзменении(Элемент)
Если Элемент.Имя = "Дата" Тогда
ДатаПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "Организация" Тогда
ОрганизацияПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "Подразделение" Тогда
Возврат;
ИначеЕсли Элемент.Имя = "Партнер" Тогда
ПартнерПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "Контрагент" Тогда
КонтрагентПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "Договор" Тогда
ДоговорПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ГруппировкаЗатрат" Тогда
ГруппировкаЗатратПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ЦенаВключаетНДС" Тогда
ЦенаВключаетНДСПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "НалогообложениеНДС" Тогда
НалогообложениеНДСПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ЗакупкаПодДеятельность" Тогда
Возврат;
ИначеЕсли Элемент.Имя = "НаправлениеДеятельности" Тогда
НаправлениеДеятельностиПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ПоЗаказам" Тогда
НакладнаяПоЗаказуПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "БанковскийСчетОрганизации" Тогда
Возврат;
ИначеЕсли Элемент.Имя = "БанковскийСчетКонтрагента" Тогда
Возврат;
ИначеЕсли Элемент.Имя = "ПорядокРасчетов" Тогда
Возврат;
ИначеЕсли Элемент.Имя = "ФормаОплаты" Тогда
Возврат;
ИначеЕсли Элемент.Имя = "ВыходныеИзделияГруппаЗатрат" Тогда
Возврат;
ИначеЕсли Элемент.Имя = "ВыходныеИзделияНоменклатура" Тогда
ВыходныеИзделияНоменклатураПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ВыходныеИзделияХарактеристика" Тогда
ВыходныеИзделияХарактеристикаПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ВыходныеИзделияНазначение" Тогда
Возврат;
ИначеЕсли Элемент.Имя = "ВыходныеИзделияСерия" Тогда
ВыходныеИзделияСерияПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ВыходныеИзделияКоличествоУпаковок" Тогда
ВыходныеИзделияКоличествоУпаковокПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ВыходныеИзделияУпаковка" Тогда
ВыходныеИзделияУпаковкаПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ВыходныеИзделияСпецификация" Тогда
Возврат;
ИначеЕсли Элемент.Имя = "УслугиГруппаЗатрат" Тогда
Возврат;
ИначеЕсли Элемент.Имя = "УслугиНоменклатура" Тогда
УслугиНоменклатураПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "УслугиХарактеристика" Тогда
УслугиХарактеристикаПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "УслугиКоличество" Тогда
УслугиКоличествоПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "УслугиВидЦеныПоставщика" Тогда
УслугиВидЦеныПоставщикаПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "УслугиЦена" Тогда
УслугиЦенаПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "УслугиСумма" Тогда
УслугиСуммаПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "УслугиСуммаНДС" Тогда
УслугиСуммаНДСПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "УслугиСтавкаНДС" Тогда
УслугиСтавкаНДСПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "УслугиСуммаСНДС" Тогда
Возврат;
ИначеЕсли Элемент.Имя = "СтатьяКалькуляции" Тогда
Возврат;
Иначе
ОбщегоНазначенияУТКлиент.КонтрольНеСогласованныхИзмененийВызватьИсключение(ЭтотОбъект, Элемент);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КонтрольИзмененийОбработатьСобытиеКоманды(Команда)
Если Команда.Имя = "ВыходныеИзделияВставитьСтроки" Тогда
ВыходныеИзделияВставитьСтроки(Команда);
ИначеЕсли Команда.Имя = "ВыходныеИзделияПоискПоШтрихкоду" Тогда
ВыходныеИзделияПоискПоШтрихкоду(Команда);
ИначеЕсли Команда.Имя = "ВыходныеИзделияЗагрузитьДанныеИзТСД" Тогда
ВыходныеИзделияЗагрузитьДанныеИзТСД(Команда);
ИначеЕсли Команда.Имя = "ВыходныеИзделияПодобратьТовары" Тогда
ВыходныеИзделияПодобратьТовары(Команда);
ИначеЕсли Команда.Имя = "ВыходныеИзделияПодобратьИзЗаказа" Тогда
ВыходныеИзделияПодобратьИзЗаказа(Команда);
ИначеЕсли Команда.Имя = "ВыходныеИзделияПерезаполнитьЗатратныеТЧ" Тогда
ВыходныеИзделияПерезаполнитьЗатратныеТЧ(Команда);
ИначеЕсли Команда.Имя = "ВыходныеИзделияЗаполнитьГруппуЗатрат" Тогда
ВыходныеИзделияЗаполнитьГруппуЗатрат(Команда);
ИначеЕсли Команда.Имя = "ВыходныеИзделияУказатьСерии" Тогда
ВыходныеИзделияУказатьСерии(Команда);
ИначеЕсли Команда.Имя = "ВыходныеИзделияПеренестиВПобочныеИзделия" Тогда
ВыходныеИзделияПеренестиВПобочныеИзделия(Команда);
ИначеЕсли Команда.Имя = "УслугиВставитьСтроки" Тогда
УслугиВставитьСтроки(Команда);
ИначеЕсли Команда.Имя = "УслугиПоискПоШтрихкоду" Тогда
УслугиПоискПоШтрихкоду(Команда);
ИначеЕсли Команда.Имя = "УслугиЗагрузитьДанныеИзТСД" Тогда
УслугиЗагрузитьДанныеИзТСД(Команда);
ИначеЕсли Команда.Имя = "УслугиПодобратьТовары" Тогда
УслугиПодобратьТовары(Команда);
ИначеЕсли Команда.Имя = "УслугиЗаполнитьТЧПоСпецификацииЗаказу" Тогда
УслугиЗаполнитьТЧПоСпецификацииЗаказу(Команда);
ИначеЕсли Команда.Имя = "УслугиЗаполнитьЦеныПоВидуЦеныПоставщика" Тогда
УслугиЗаполнитьЦеныПоВидуЦеныПоставщика(Команда);
ИначеЕсли Команда.Имя = "УслугиЗаполнитьГруппуЗатрат" Тогда
УслугиЗаполнитьГруппуЗатрат(Команда);
ИначеЕсли Команда.Имя = "УслугиВыбратьИЗаполнитьУслугу" Тогда
УслугиВыбратьИЗаполнитьУслугу(Команда);
Иначе
ОбщегоНазначенияУТКлиент.КонтрольНеСогласованныхИзмененийВызватьИсключение(ЭтотОбъект, Команда);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КонтрольИзмененийОбработатьСобытиеПередУдалением(Элемент, Отказ)
Если Элемент.Имя = "ВыходныеИзделия" Тогда
ВыходныеИзделияПередУдалением(Элемент, Отказ);
ИначеЕсли Элемент.Имя = "Услуги" Тогда
Возврат;
Иначе
ОбщегоНазначенияУТКлиент.КонтрольНеСогласованныхИзмененийВызватьИсключение(ЭтотОбъект, Элемент);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КонтрольИзмененийОбработатьСобытиеПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа)
Если Элемент.Имя = "ВыходныеИзделия" Тогда
Возврат;
ИначеЕсли Элемент.Имя = "Услуги" Тогда
Возврат;
Иначе
ОбщегоНазначенияУТКлиент.КонтрольНеСогласованныхИзмененийВызватьИсключение(ЭтотОбъект, Элемент);
КонецЕсли;
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ПроверитьНаличиеКорректировокИСчетовФактур(Ссылка, ЕстьКорректировки, ЕстьСчетаФактуры)
ЗакупкиСервер.ПроверитьНаличиеКорректировокИСчетовФактур(Ссылка, Ссылка, ЕстьКорректировки, ЕстьСчетаФактуры);
КонецПроцедуры
&НаСервере
Процедура ОбновитьПризнакЕстьКорректировки()
ЕстьСчетФактуры = Ложь;
ПроверитьНаличиеКорректировокИСчетовФактур(Объект.Ссылка, ЕстьКорректировки, ЕстьСчетФактуры);
КонецПроцедуры
&НаСервере
Процедура ДобавитьИменаИсключенийПодчиненныхЭлементов(Элемент, ИменаЭлементов, ИменаИсключений)
Если ТипЗнч(Элемент) = Тип("ГруппаФормы")
Или ТипЗнч(Элемент) = Тип("ТаблицаФормы") Тогда
Для Каждого ТекЭлемент Из Элемент.ПодчиненныеЭлементы Цикл
ДобавитьИменаИсключенийПодчиненныхЭлементов(ТекЭлемент, ИменаЭлементов, ИменаИсключений)
КонецЦикла;
ИначеЕсли ИменаЭлементов.Найти(Элемент.Имя) = Неопределено Тогда
ИменаИсключений.Добавить(Элемент.Имя);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область Прочее
&НаСервере
Функция ДанныеИзделий()
ИменаТЧ = Новый Массив;
ИменаТЧ.Добавить("ВыходныеИзделия");
ИменаТЧ.Добавить("ПобочныеИзделия");
ДанныеПолей = ПроизводствоСервер.СтруктураПолейТаблицы();
ДанныеПолей.ОсновныеПоля = "ЗаказПереработчику, КодСтроки, Номенклатура, Характеристика, Количество";
ДанныеПолей.ЗначенияПоУмолчанию.Вставить("ЗаказПереработчику", Объект.ЗаказПереработчику);
ДанныеТЧ = Новый Структура;
Для каждого ИмяТЧ Из ИменаТЧ Цикл
ДанныеТЧ.Вставить(
ИмяТЧ,
ПроизводствоСервер.ПоместитьВоВременноеХранилищеДанныеСтрок(ЭтотОбъект, "Объект", ИмяТЧ, Ложь, ДанныеПолей));
КонецЦикла;
Возврат ДанныеТЧ;
КонецФункции
#КонецОбласти
#КонецОбласти