#Область ОписаниеПеременных
&НаКлиенте
Перем КэшированныеЗначения;
#КонецОбласти
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
УстановитьУсловноеОформление();
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
ПриЧтенииСозданииНаСервере();
КонецЕсли;
ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(Объект, ЭтотОбъект);
УстановитьДоступностьКомандБуфераОбмена();
Если Параметры.Свойство("ЕстьОшибки") И Параметры.ЕстьОшибки Тогда
Для Каждого ТекОшибка Из Параметры.МассивОшибок Цикл
ОбщегоНазначения.СообщитьПользователю(
ТекОшибка.Текст,
ТекОшибка.КлючДанных,
ТекОшибка.Поле,
ТекОшибка.ПутьКДанным);
КонецЦикла;
КонецЕсли;
УчетТрудозатратВРазрезеСотрудников = ПроизводствоСервер.ИспользуетсяУчетТрудозатратВРазрезеСотрудников(
?(ЗначениеЗаполнено(Объект.Дата), Объект.Дата, ТекущаяДатаСеанса()));
ПараметрыВыбораСтатейИАналитик = Документы.ПроизводствоБезЗаказа.ПараметрыВыбораСтатейИАналитик();
ДоходыИРасходыСервер.ПриСозданииНаСервере(ЭтотОбъект, ПараметрыВыбораСтатейИАналитик);
ПараметрыНастройки = Документы.ПроизводствоБезЗаказа.ПараметрыНастройкиСчетовУчета();
НастройкаСчетовУчетаСервер.ПриСозданииНаСервере(ЭтаФорма, ПараметрыНастройки);
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("Объект", Объект);
ДополнительныеПараметры.Вставить("ИмяЭлементаДляРазмещения", "ГруппаДополнительныеРеквизиты");
ДополнительныеПараметры.Вставить("ОтложеннаяИнициализация", Истина);
УправлениеСвойствами.ПриСозданииНаСервере(ЭтаФорма, ДополнительныеПараметры);
Справочники.Назначения.ФормаДокументаПриСозданииНаСервере(ЭтаФорма);
ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект);
ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
ОбщегоНазначенияУТ.НастроитьПодключаемоеОборудование(ЭтаФорма, "ВыходныеИзделия");
ОбщегоНазначенияУТ.НастроитьПодключаемоеОборудование(ЭтаФорма, "ПобочныеИзделия");
ОбщегоНазначенияУТ.НастроитьПодключаемоеОборудование(ЭтаФорма, "МатериалыИРаботы");
ПараметрыЭДОПриСоздании = ОбменСКонтрагентами.ПараметрыПриСозданииНаСервере_ФормаДокумента();
ПараметрыЭДОПриСоздании.Форма = ЭтотОбъект;
ПараметрыЭДОПриСоздании.ДокументСсылка = Объект.Ссылка;
ПараметрыЭДОПриСоздании.МестоРазмещенияКоманд = Элементы.ПодменюЭДО;
ПараметрыЭДОПриСоздании.КонтроллерСостояниеЭДО = Элементы.ДекорацияСостояниеЭДО;
ПараметрыЭДОПриСоздании.ГруппаСостояниеЭДО = Элементы.ГруппаСостояниеЭДО;
ОбменСКонтрагентами.ПриСозданииНаСервере_ФормаДокумента(ПараметрыЭДОПриСоздании);
Элементы.ДекорацияСостояниеЭДО.Видимость = ПолучитьФункциональнуюОпцию("ИспользоватьОбменЭД");
СобытияФорм.ПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка);
ПараметрыГиперссылки = РаботаСФайлами.ГиперссылкаФайлов();
ПараметрыГиперссылки.Размещение = "КоманднаяПанель";
РаботаСФайлами.ПриСозданииНаСервере(ЭтотОбъект, ПараметрыГиперссылки);
ИсправлениеДокументов.ПриСозданииНаСервере(ЭтаФорма, Элементы.СтрокаИсправление);
ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПриСозданииНаСервере(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
УправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
ПриЧтенииСозданииНаСервере();
ПараметрыВыбораСтатейИАналитик = Документы.ПроизводствоБезЗаказа.ПараметрыВыбораСтатейИАналитик();
ДоходыИРасходыСервер.ПриЧтенииНаСервере(ЭтотОбъект, ПараметрыВыбораСтатейИАналитик);
ПараметрыНастройки = Документы.ПроизводствоБезЗаказа.ПараметрыНастройкиСчетовУчета();
НастройкаСчетовУчетаСервер.ПриЧтенииНаСервере(ЭтаФорма, ПараметрыНастройки);
ДатыЗапретаИзменения.ОбъектПриЧтенииНаСервере(ЭтаФорма, ТекущийОбъект);
УправлениеСвойствами.ПриЧтенииНаСервере(ЭтаФорма, ТекущийОбъект);
СобытияФорм.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
ПараметрыЭДОПриСоздании = ОбменСКонтрагентами.ПараметрыПриЧтенииНаСервере_ФормаДокумента();
ПараметрыЭДОПриСоздании.Форма = ЭтотОбъект;
ПараметрыЭДОПриСоздании.ДокументСсылка = Объект.Ссылка;
ПараметрыЭДОПриСоздании.МестоРазмещенияКоманд = Элементы.ПодменюЭДО;
ПараметрыЭДОПриСоздании.КонтроллерСостояниеЭДО = Элементы.ДекорацияСостояниеЭДО;
ПараметрыЭДОПриСоздании.ГруппаСостояниеЭДО = Элементы.ГруппаСостояниеЭДО;
ОбменСКонтрагентами.ПриЧтенииНаСервере_ФормаДокумента(ПараметрыЭДОПриСоздании);
ИсправлениеДокументов.ПриЧтенииНаСервере(ЭтаФорма, Элементы.СтрокаИсправление);
КонецПроцедуры
&НаСервере
Процедура ПриЗагрузкеДанныхИзНастроекНаСервере(Настройки)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Если ОбновитьПриОткрытии Тогда
ПриЧтенииСозданииНаСервере();
КонецЕсли;
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
МенеджерОборудованияКлиент.НачатьПодключениеОборудованиеПриОткрытииФормы(Неопределено, ЭтаФорма, "СканерШтрихкода");
ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
РаботаСФайламиКлиент.ПриОткрытии(ЭтотОбъект, Отказ);
ОбменСКонтрагентамиКлиент.ПриОткрытии(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
Если Объект.ГруппировкаЗатрат =
ПредопределенноеЗначение("Перечисление.ГруппировкиЗатратВПроизводствеБезЗаказа.ЗатратыНеУказываются") Тогда
Объект.ПобочныеИзделия.Очистить();
Объект.МатериалыИРаботы.Очистить();
Объект.Трудозатраты.Очистить();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
НастройкаСчетовУчетаСервер.ПередЗаписьюНаСервере(ЭтаФорма, ТекущийОбъект);
УправлениеСвойствами.ПередЗаписьюНаСервере(ЭтаФорма, ТекущийОбъект);
ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПередЗаписьюНаСервере(
ЭтотОбъект,
ТекущийОбъект,
ПараметрыЗаписи);
КонецПроцедуры
&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
УправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
ЗаполнитьПараметрыУказанияСерий();
УстановитьВидимостьЭлементовСерий();
ЗаполнитьСлужебныеРеквизитыФормы();
ОбновитьСписокГруппЗатрат();
НастроитьЭлементыГруппировкиЗатрат(Ложь);
НастройкаЗависимыхЭлементовФормы(ЭтотОбъект);
УстановитьЗаголовкиГруппПродукции(ЭтотОбъект);
ДоходыИРасходыСервер.ПослеЗаписиНаСервере(ЭтотОбъект);
НастройкаСчетовУчетаСервер.ПослеЗаписиНаСервере(ЭтотОбъект);
ПараметрыПослеЗаписи = ОбменСКонтрагентами.ПараметрыПослеЗаписиНаСервере();
ПараметрыПослеЗаписи.Форма = ЭтотОбъект;
ПараметрыПослеЗаписи.ДокументСсылка = Объект.Ссылка;
ПараметрыПослеЗаписи.КонтроллерСостояниеЭДО = Элементы.ДекорацияСостояниеЭДО;
ПараметрыПослеЗаписи.ГруппаСостояниеЭДО = Элементы.ГруппаСостояниеЭДО;
ОбменСКонтрагентами.ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи, ПараметрыПослеЗаписи);
СобытияФорм.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
ОбеспечениеВДокументахСервер.ПроверитьЗапуститьФоновоеЗаданиеРаспределенияЗапасов();
КонецПроцедуры
&НаСервере
Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
УправлениеСвойствами.ОбработкаПроверкиЗаполнения(ЭтаФорма, Отказ, ПроверяемыеРеквизиты);
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
ОбменСКонтрагентамиКлиент.ПослеЗаписи_ФормаДокумента(ЭтотОбъект, ПараметрыЗаписи);
Оповестить("Запись_ПроизводствоБезЗаказа");
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда
МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент");
МодульПодключаемыеКомандыКлиент.ПослеЗаписи(ЭтотОбъект, Объект, ПараметрыЗаписи);
КонецЕсли;
ИсправлениеДокументовКлиент.ПослеЗаписи(Объект);
КонецПроцедуры
&НаКлиенте
Процедура ПриЗакрытии(ЗавершениеРаботы)
МенеджерОборудованияКлиент.НачатьОтключениеОборудованиеПриЗакрытииФормы(Неопределено, ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)
Перем ВыполняемаяОперация;
Если ИсточникВыбора <> Неопределено
И ТипЗнч(ИсточникВыбора) = Тип("ФормаКлиентскогоПриложения")
И ИсточникВыбора.ИмяФормы = "ОбщаяФорма.ВводДолиСтоимости" Тогда
ТекущиеДанные = ТекущийЭлемент.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
Модифицированность = Истина;
ОбработкаВводаДолиСтоимости(ТекущийЭлемент, ТекущиеДанные, ВыбранноеЗначение);
ИначеЕсли НоменклатураКлиент.ЭтоУказаниеСерий(ИсточникВыбора) Тогда
ТекущиеДанные = Элементы[ВыбранноеЗначение.ИмяТЧ].ТекущиеДанные;
НоменклатураКлиент.ОбработатьУказаниеСерии(
ЭтотОбъект,
ПараметрыУказанияСерий[ВыбранноеЗначение.ИмяТЧ],
ВыбранноеЗначение,
ТекущиеДанные);
Если Не ТекущиеДанные = Неопределено Тогда
Если ВыбранноеЗначение.ИмяТЧ = "ВыходныеИзделия"
И (Объект.ГруппировкаЗатрат = ПредопределенноеЗначение("Перечисление.ГруппировкиЗатратВПроизводствеБезЗаказа.ПоПродукции")
Или Объект.ГруппировкаЗатрат = ПредопределенноеЗначение("Перечисление.ГруппировкиЗатратВПроизводствеБезЗаказа.ПоПродукцииИНазначениям")) Тогда
ПоляСтроки = "НомерГруппыЗатрат, ГруппаЗатрат, Номенклатура, Характеристика, Спецификация, Назначение, Серия";
ТекущиеДанныеСтруктура = Новый Структура(ПоляСтроки);
ЗаполнитьЗначенияСвойств(ТекущиеДанныеСтруктура, ТекущиеДанные);
ДобавитьИзменитьГруппуЗатрат(ТекущиеДанныеСтруктура);
ТекущиеДанные.НомерГруппыЗатрат = ТекущиеДанныеСтруктура.НомерГруппыЗатрат;
ТекущиеДанные.ГруппаЗатрат = ТекущиеДанныеСтруктура.ГруппаЗатрат;
КонецЕсли;
Если ЦенообразованиеКлиент.НеобходимПересчетЦеныПриИзменении(ТекущиеДанные.Номенклатура, "Серия", Объект.Дата) Тогда
СтруктураДействий = Новый Структура;
Если ВыбранноеЗначение.ИмяТЧ = "ВыходныеИзделия" Тогда
СтруктураДействий.Вставить("ПроверитьЗаполнитьДолюСтоимости", ПараметрыРаспределенияЗатрат);
КонецЕсли;
Если (ВыбранноеЗначение.ИмяТЧ = "ВыходныеИзделия" И ИспользоватьПлановуюСтоимость)
Или ВыбранноеЗначение.ИмяТЧ = "ПобочныеИзделия" Тогда
СтруктураПараметров = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияЦеныВСтрокеТЧ(Объект);
СтруктураПараметров.Вставить("ВидЦены", Объект.ВидЦены);
СтруктураДействий.Вставить("ЗаполнитьЦенуПродажи", СтруктураПараметров);
СтруктураДействий.Вставить("ПересчитатьСумму", "Количество");
КонецЕсли;
Если Не СтруктураДействий.Количество() = 0 Тогда
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущиеДанные, СтруктураДействий, КэшированныеЗначения);
КонецЕсли;
КонецЕсли;
КонецЕсли;
ИначеЕсли ТипЗнч(ВыбранноеЗначение) = Тип("Структура") И ВыбранноеЗначение.Свойство("ВыполняемаяОперация", ВыполняемаяОперация) Тогда
Если ВРег(ВыполняемаяОперация) = ВРег("ПодборТоваровИзЗаказа") Тогда
ОбработкаПодбораТоваров(ВыбранноеЗначение.АдресВХранилище);
КонецЕсли;
КонецЕсли;
Если Окно <> Неопределено Тогда
Окно.Активизировать();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если УправлениеСвойствамиКлиент.ОбрабатыватьОповещения(ЭтаФорма, ИмяСобытия, Параметр) Тогда
ОбновитьЭлементыДополнительныхРеквизитов();
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
КонецЕсли;
Если Источник = "ПодключаемоеОборудование" И ВводДоступен() Тогда
Если ИмяСобытия = "ScanData" И МенеджерОборудованияУТКлиент.ЕстьНеобработанноеСобытие() Тогда
ИмяТЧ = "ВыходныеИзделия";
Если Элементы.ГруппаСтраницы.ТекущаяСтраница = Элементы.ГруппаМатериалыИРаботы Тогда
ИмяТЧ = "МатериалыИРаботы";
КонецЕсли;
ОбработатьШтрихкоды(ИмяТЧ,
МенеджерОборудованияУТКлиент.ПреобразоватьДанныеСоСканераВМассив(Параметр));
КонецЕсли;
КонецЕсли;
Если Источник = "ПодключаемоеОборудование"
И ИмяСобытия = "НеизвестныеШтрихкоды"
И Параметр.ФормаВладелец = УникальныйИдентификатор Тогда
КэшированныеЗначения.Штрихкоды.Очистить();
ДанныеШтрихкодов = Новый Массив;
Для Каждого ПолученныйШтрихкод Из Параметр.ПолученыНовыеШтрихкоды Цикл
ДанныеШтрихкодов.Добавить(ПолученныйШтрихкод);
КонецЦикла;
Для Каждого ПолученныйШтрихкод Из Параметр.ЗарегистрированныеШтрихкоды Цикл
ДанныеШтрихкодов.Добавить(ПолученныйШтрихкод);
КонецЦикла;
ОбработатьШтрихкоды(ИмяТЧПоискПоШтрихкоду, ДанныеШтрихкодов);
КонецЕсли;
ПараметрыОповещения = ОбменСКонтрагентамиКлиент.ПараметрыОповещенияЭДО_ФормаДокумента();
ПараметрыОповещения.Форма = ЭтотОбъект;
ПараметрыОповещения.ДокументСсылка = Объект.Ссылка;
ПараметрыОповещения.КонтроллерСостояниеЭДО = Элементы.ДекорацияСостояниеЭДО;
ПараметрыОповещения.ГруппаСостояниеЭДО = Элементы.ГруппаСостояниеЭДО;
ОбменСКонтрагентамиКлиент.ОбработкаОповещения_ФормаДокумента(ИмяСобытия, Параметр, Источник, ПараметрыОповещения);
Если ИмяСобытия = "КопированиеСтрокВБуферОбмена" Тогда
УстановитьДоступностьКомандБуфераОбменаНаКлиенте();
КонецЕсли;
СобытияФормКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия, Параметр, Источник);
РаботаСФайламиКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия);
ИсправлениеДокументовКлиент.ОбработкаОповещения(ЭтаФорма, ИмяСобытия, Параметр, Источник);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаНавигационнойСсылки(НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СобытияФормКлиент.ОбработкаНавигационнойСсылки(ЭтотОбъект, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура ДатаПриИзменении(Элемент)
ДатаПриИзмененииНаСервере();
КонецПроцедуры
&НаСервере
Процедура ДатаПриИзмененииНаСервере()
АктуализироватьВыпускПодДеятельность();
УстановитьИспользованиеПлановойСтоимости();
НастройкаЗависимыхЭлементовФормы(ЭтотОбъект, "Дата");
СпособРаспределенияЗатратНаВыходныеИзделияПриИзмененииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура ОрганизацияПриИзменении(Элемент)
Если Не ОрганизацияДоИзменения = Объект.Организация Тогда
ОрганизацияПриИзмененииНаСервере();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОрганизацияПриИзмененииНаСервере()
АктуализироватьВыпускПодДеятельность();
УстановитьИспользованиеПлановойСтоимости();
НастройкаЗависимыхЭлементовФормы(ЭтотОбъект, "Организация");
ОрганизацияДоИзменения = Объект.Организация;
КонецПроцедуры
&НаКлиенте
Процедура ГруппаСтраницыПриСменеСтраницы(Элемент, ТекущаяСтраница)
Если ТекущаяСтраница.Имя = "ГруппаДополнительно"
И Не ЭтотОбъект.ПараметрыСвойств.ВыполненаОтложеннаяИнициализация Тогда
СвойстваВыполнитьОтложеннуюИнициализацию();
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ГруппировкаЗатратПриИзменении(Элемент)
ОценкаПроизводительностиКлиент.ЗамерВремени(
"Документ.ПроизводствоБезЗаказа.Форма.ФормаДокумента.Событие.ГруппировкаЗатратПриИзменении");
Если ГруппировкаЗатратДоИзменения = Объект.ГруппировкаЗатрат Тогда
Возврат;
КонецЕсли;
УстановитьЗаголовкиГруппПродукции(ЭтотОбъект);
ГруппировкаЗатратПриИзмененииНаСервере();
КонецПроцедуры
&НаСервере
Процедура ГруппировкаЗатратПриИзмененииНаСервере()
Если НЕ ЗначениеЗаполнено(Объект.ГруппировкаЗатрат) Тогда
Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВПроизводствеБезЗаказа.ПоДокументу;
КонецЕсли;
Если Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВПроизводствеБезЗаказа.ПоДокументу Тогда
ИндексГруппыЗатрат = 1;
Иначе
ИндексГруппыЗатрат = 0;
КонецЕсли;
СписокГрупп.Очистить();
МаксимальныйНомерГруппыЗатрат = 0;
Для Каждого ДанныеСтроки Из Объект.ВыходныеИзделия Цикл
ДобавитьИзменитьГруппуЗатрат(ДанныеСтроки);
КонецЦикла;
Для Каждого ДанныеСтроки Из Объект.ПобочныеИзделия Цикл
ДанныеСтроки.НомерГруппыЗатрат = ИндексГруппыЗатрат;
ДанныеСтроки.ГруппаЗатрат = "";
ДанныеСтроки.НаправлениеДеятельности = Справочники.НаправленияДеятельности.ПустаяСсылка();
КонецЦикла;
Для Каждого ДанныеСтроки Из Объект.МатериалыИРаботы Цикл
ДанныеСтроки.НомерГруппыЗатрат = ИндексГруппыЗатрат;
ДанныеСтроки.ГруппаЗатрат = "";
ДанныеСтроки.НаправлениеДеятельности = Справочники.НаправленияДеятельности.ПустаяСсылка();
КонецЦикла;
Для Каждого ДанныеСтроки Из Объект.Трудозатраты Цикл
ДанныеСтроки.НомерГруппыЗатрат = ИндексГруппыЗатрат;
ДанныеСтроки.ГруппаЗатрат = "";
КонецЦикла;
РаспределитьСерииИзделийПоГруппамЗатрат("ВыходныеИзделия");
РаспределитьСерииИзделийПоГруппамЗатрат("ПобочныеИзделия");
ЗаполнитьСтатусыУказанияСерийСервер("ВыходныеИзделия");
ЗаполнитьСтатусыУказанияСерийСервер("ПобочныеИзделия");
ЗаполнитьСтатусыУказанияСерийСервер("МатериалыИРаботы");
ОбновитьСписокГруппЗатрат();
НастроитьЭлементыГруппировкиЗатрат(Ложь);
НастройкаЗависимыхЭлементовФормы(ЭтотОбъект, "ГруппировкаЗатрат");
ГруппировкаЗатратДоИзменения = Объект.ГруппировкаЗатрат;
Если Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВПроизводствеБезЗаказа.ПоПродукции
Или Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВПроизводствеБезЗаказа.ПоПродукцииИНазначениям
Или Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВПроизводствеБезЗаказа.ПоПродукцииБезСерий
Или Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВПроизводствеБезЗаказа.ПоПродукцииИНазначениямБезСерий Тогда
Объект.СпособРаспределенияЗатратНаВыходныеИзделия = Перечисления.СпособыРаспределенияЗатратНаВыходныеИзделия.ПустаяСсылка();
ИначеЕсли Не ЗначениеЗаполнено(Объект.СпособРаспределенияЗатратНаВыходныеИзделия) Тогда
Объект.СпособРаспределенияЗатратНаВыходныеИзделия = Перечисления.СпособыРаспределенияЗатратНаВыходныеИзделия.ПоДолямСтоимости;
КонецЕсли;
СпособРаспределенияЗатратНаВыходныеИзделияПриИзмененииНаСервере();
ЗаполнитьСтатусыУказанияСерийСервер("ВыходныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ВнутренняяПереработкаПриИзменении(Элемент)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура ОрганизацияДавалецПриИзменении(Элемент)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура ПодразделениеПриИзменении(Элемент)
Если Не ПодразделениеДоИзменения = Объект.Подразделение Тогда
ПодразделениеПриИзмененииСервер();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПодразделениеПриИзмененииСервер()
ИмяТЧ = "ВыходныеИзделия";
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПоПолучателю(ИмяТЧ, ЭтотОбъект, СтруктураДействий);
ДобавитьВСтруктуруДействияПоЦеховойКладовой(ИмяТЧ, СтруктураДействий, Истина);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект[ИмяТЧ], СтруктураДействий);
ПодразделениеДоИзменения = Объект.Подразделение;
КонецПроцедуры
&НаКлиенте
Процедура ВидЦеныПриИзменении(Элемент)
Если ЗначениеЗаполнено(Объект.ВидЦены)
И (Объект.ПобочныеИзделия.Количество()
Или Объект.ВыходныеИзделия.Количество()) Тогда
ОписаниеОповещения = Новый ОписаниеОповещения("ВидЦеныПриИзмененииЗавершение", ЭтаФорма);
ТекстВопроса = НСтр("ru = 'Перезаполнить цены изделий?'");
ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВидЦеныПриИзмененииЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
Если РезультатВопроса = КодВозвратаДиалога.Да Тогда
ОценкаПроизводительностиКлиент.ЗамерВремени(
"Документ.ПроизводствоБезЗаказа.Форма.ФормаДокумента.Событие.ВидЦеныПриИзмененииЗавершение");
ЦеныРассчитаны = ЗаполнитьЦеныПоВидуЦенСервер();
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияЦенПоВидуЦен(ЦеныРассчитаны, Объект.ВидЦены);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВалютаПриИзменении(Элемент)
ОценкаПроизводительностиКлиент.ЗамерВремени(
"Документ.ПроизводствоБезЗаказа.Форма.ФормаДокумента.Элемент.Валюта.ПриИзменении");
Если ЦенообразованиеКлиент.НеобходимПересчетВВалюту(Объект, ВалютаДокумента, "ПобочныеИзделия")
Или ЦенообразованиеКлиент.НеобходимПересчетВВалюту(Объект, ВалютаДокумента, "ВыходныеИзделия") Тогда
ВалютаПриИзмененииСервер();
ЦенообразованиеКлиент.ОповеститьОбОкончанииПересчетаСуммВВалюту(ВалютаДокумента, Объект.Валюта);
КонецЕсли;
ВалютаДокумента = Объект.Валюта;
СпособРаспределенияЗатратНаВыходныеИзделияПриИзмененииНаСервере();
КонецПроцедуры
&НаСервере
Процедура ВалютаПриИзмененииСервер()
СтараяВалюта = ВалютаДокумента;
НоваяВалюта = Объект.Валюта;
ДатаДокумента = ?(ЗначениеЗаполнено(Объект.Дата), Объект.Дата, ТекущаяДатаСеанса());
СтруктураКурсовСтаройВалюты = РаботаСКурсамиВалютУТ.ПолучитьКурсВалюты(СтараяВалюта, ДатаДокумента);
СтруктураКурсовНовойВалюты = РаботаСКурсамиВалютУТ.ПолучитьКурсВалюты(НоваяВалюта, ДатаДокумента);
Для Каждого ТекСтрока Из Объект.ПобочныеИзделия Цикл
ТекСтрока.Цена = РаботаСКурсамиВалютУТКлиентСервер.ПересчитатьПоКурсу(ТекСтрока.Цена,
СтруктураКурсовСтаройВалюты, СтруктураКурсовНовойВалюты);
КонецЦикла;
Для Каждого ТекСтрока Из Объект.ВыходныеИзделия Цикл
ТекСтрока.Цена = РаботаСКурсамиВалютУТКлиентСервер.ПересчитатьПоКурсу(ТекСтрока.Цена,
СтруктураКурсовСтаройВалюты, СтруктураКурсовНовойВалюты);
КонецЦикла;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСумму");
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.ПобочныеИзделия, СтруктураДействий, КэшированныеЗначения);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.ВыходныеИзделия, СтруктураДействий, КэшированныеЗначения);
КонецПроцедуры
&НаКлиенте
Процедура НаправлениеДеятельностиПриИзменении(Элемент)
НаправлениеДеятельностиПриИзмененииСервер();
КонецПроцедуры
&НаСервере
Процедура НаправлениеДеятельностиПриИзмененииСервер()
СтрокиТЧ = НаправленияДеятельностиСервер.ПриИзмененииНаправленияДеятельности(ЭтотОбъект);
Для Каждого ТекСтрока Из СтрокиТЧ Цикл
Если Объект.ВыходныеИзделия.Индекс(ТекСтрока) = -1 Тогда
Продолжить;
КонецЕсли;
ДобавитьИзменитьГруппуЗатрат(ТекСтрока);
КонецЦикла;
АктуализироватьВыпускПодДеятельность();
КонецПроцедуры
&НаКлиенте
Процедура ВыпускПодДеятельностьОчистка(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
КонецПроцедуры
&НаКлиенте
Процедура СпособРаспределенияЗатратНаВыходныеИзделияПриИзменении(Элемент)
СпособРаспределенияЗатратНаВыходныеИзделияПриИзмененииНаСервере();
КонецПроцедуры
&НаСервере
Процедура СпособРаспределенияЗатратНаВыходныеИзделияПриИзмененииНаСервере()
ПараметрыРаспределенияЗатратСтруктура = Документы.ПроизводствоБезЗаказа.ПараметрыРаспределенияЗатрат(Объект);
ПараметрыРаспределенияЗатрат = Новый ФиксированнаяСтруктура(ПараметрыРаспределенияЗатратСтруктура);
ПроизводствоСервер.РассчитатьДолюСтоимости(Объект, ПараметрыРаспределенияЗатрат);
РассчитатьПроцентРаспределенияЗатратНаВыходныеИзделия();
КонецПроцедуры
&НаКлиенте
Процедура СтрокаИсправлениеОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
ИсправлениеДокументовКлиент.СтрокаИсправлениеОбработкаНавигационныйСсылки(
ЭтотОбъект, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ДекорацияЭДОНажатие(Элемент, СтандартнаяОбработка)
ОбменСКонтрагентамиКлиент.СостояниеЭДОНажатие_ФормаДокумента(ЭтотОбъект, СтандартнаяОбработка);
Возврат;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыВыходныеИзделия
&НаКлиенте
Процедура ВыходныеИзделияПриИзменении(Элемент)
ОценкаПроизводительностиКлиент.ЗамерВремени(
"Документ.ПроизводствоБезЗаказа.Форма.ФормаДокумента.Событие.ВыходныеИзделияПриИзменении");
ТекущиеДанные = Элементы.ВыходныеИзделия.ТекущиеДанные;
Если (Не Объект.Исправление
Или Не Объект.ИсправлениеСохраняетПартииПроизводства)
И Не ТекущиеДанные = Неопределено Тогда
ПоляСтроки = "НомерГруппыЗатрат, ГруппаЗатрат, Номенклатура, Характеристика, Спецификация, Назначение, Серия";
ТекущиеДанныеСтруктура = Новый Структура(ПоляСтроки);
ЗаполнитьЗначенияСвойств(ТекущиеДанныеСтруктура, ТекущиеДанные);
ДобавитьИзменитьГруппуЗатрат(ТекущиеДанныеСтруктура);
ТекущиеДанные.НомерГруппыЗатрат = ТекущиеДанныеСтруктура.НомерГруппыЗатрат;
ТекущиеДанные.ГруппаЗатрат = ТекущиеДанныеСтруктура.ГруппаЗатрат;
ИначеЕсли Объект.Исправление
И Объект.ИсправлениеСохраняетПартииПроизводства Тогда
УстановитьНомерГруппыЗатратПоУмолчанию("ВыходныеИзделия");
КонецЕсли;
УстановитьЗаголовкиГруппПродукции(ЭтотОбъект, "ВыходныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
Если Поле = Элементы["ВыходныеИзделияСерия"]
ИЛИ Поле = Элементы["ВыходныеИзделияСтатусУказанияСерий"] Тогда
ТаблицаВыборСерии("ВыходныеИзделия", Поле, Элемент, СтандартнаяОбработка);
ИначеЕсли Поле = Элементы.ВыходныеИзделияПредставлениеОтраженияОперации Тогда
НастройкаСчетовУчетаКлиент.ПриНажатии(ЭтаФорма, Поле, СтандартнаяОбработка);
ИначеЕсли (Поле = Элементы.ВыходныеИзделияДоляСтоимостиПроцент
ИЛИ Поле = Элементы.ВыходныеИзделияЕстьОшибкиЗаполненияДолиСтоимости)
И Объект.СпособРаспределенияЗатратНаВыходныеИзделия <> ПредопределенноеЗначение("Перечисление.СпособыРаспределенияЗатратНаВыходныеИзделия.ПоДолямСтоимости") Тогда
СтандартнаяОбработка = Ложь;
ТекущиеДанные = Элементы.ВыходныеИзделия.ТекущиеДанные;
ОткрытьФормуВводаДолиСтоимости(ТекущиеДанные);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
ТаблицаОбработкаВыбора("ВыходныеИзделия", ВыбранноеЗначение);
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
ТекущиеДанные = Элементы.ВыходныеИзделия.ТекущиеДанные;
Если НоваяСтрока Тогда
ЗаполнитьСкладПоУмолчаниюВСтроке(ЭтотОбъект, ТекущиеДанные, "Получатель");
КонецЕсли;
Если Копирование Тогда
ТекущиеДанные.КодСтроки = 0;
КонецЕсли;
Если НоваяСтрока И Копирование Тогда
НастройкаСчетовУчетаКлиент.ПриКопированииСтроки(ЭтотОбъект, Элемент);
КонецЕсли;
ОграничитьТипПолучателя("ВыходныеИзделия", ТекущиеДанные);
ДоходыИРасходыКлиентСервер.ПриДобавленииСтрокиВТаблицу(ЭтотОбъект, ТекущиеДанные, "Объект.ВыходныеИзделия");
РаботаСТабличнымиЧастямиКлиент.КэшироватьТекущуюСтроку(Элементы.ВыходныеИзделия, ЭтотОбъект);
ОбновитьКешированныеЗначенияДляУчетаСерий("ВыходныеИзделия", Элемент, КэшированныеЗначения, Копирование);
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
Если ОтменаРедактирования Тогда
Возврат;
КонецЕсли;
ТаблицаПриОкончанииРедактирования("ВыходныеИзделия", Элемент);
Если ПроизводствоКлиент.НеобходимоРассчитатьПроцентРаспределенияЗатратНаВыходныеИзделия(
Элемент, ПараметрыРаспределенияЗатрат, РаботаСТабличнымиЧастямиКлиентСервер.КэшСтроки(Элементы.ВыходныеИзделия, ЭтотОбъект), НоваяСтрока) Тогда
Группировки = Неопределено;
ТекущиеДанные = Элементы.ВыходныеИзделия.ТекущиеДанные;
Если Не ТекущиеДанные = Неопределено Тогда
Группировки = Новый Массив;
Группировки.Добавить(РаботаСТабличнымиЧастямиКлиентСервер.КэшСтроки(Элементы.ВыходныеИзделия, ЭтотОбъект).НомерГруппыЗатрат);
Группировки.Добавить(ТекущиеДанные.НомерГруппыЗатрат);
КонецЕсли;
РассчитатьПроцентРаспределенияЗатратНаВыходныеИзделия(Группировки);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияПередУдалением(Элемент, Отказ)
ОценкаПроизводительностиКлиент.ЗамерВремени(
"Документ.ПроизводствоБезЗаказа.Форма.ФормаДокумента.Событие.ВыходныеИзделияПередУдалением");
ВыходныеИзделияПередУдалениемНаСервере();
ОбновитьКешированныеЗначенияДляУчетаСерий("ВыходныеИзделия", Элемент, КэшированныеЗначения, Ложь);
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияПослеУдаления(Элемент)
ПослеУдаленияСтрокТЧ("ВыходныеИзделия", Элемент);
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияГруппаЗатратНачалоВыбора(Элемент, ДанныеВыбора, ВыборДобавлением, СтандартнаяОбработка)
ТаблицаГруппаЗатратНачалоВыбора("ВыходныеИзделия", Ложь);
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияГруппаЗатратОчистка(Элемент, СтандартнаяОбработка)
ТаблицаГруппаЗатратОчистка("ВыходныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияНоменклатураПриИзменении(Элемент)
ТаблицаНоменклатураПриИзменении("ВыходныеИзделия", "Получатель");
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияХарактеристикаПриИзменении(Элемент)
ТаблицаХарактеристикаПриИзменении("ВыходныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияКоличествоУпаковокПриИзменении(Элемент)
ТаблицаКоличествоУпаковокПриИзменении("ВыходныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияУпаковкаПриИзменении(Элемент)
ТаблицаУпаковкаПриИзменении("ВыходныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияЦенаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.ВыходныеИзделия.ТекущиеДанные;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСумму");
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияСуммаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.ВыходныеИзделия.ТекущиеДанные;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьЦенуПоСумме");
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияСерияПриИзменении(Элемент)
ТаблицаСерияПриИзменении("ВыходныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияСерияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОткрытьПодборСерий("ВыходныеИзделия", Элемент.ТекстРедактирования, Элементы.ВыходныеИзделия.ТекущиеДанные);
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияНазначениеПриИзменении(Элемент)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияНаправлениеВыпускаПриИзменении(Элемент)
ТаблицаНаправлениеВыпускаПриИзменении("ВыходныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияНаправлениеВыпускаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ТаблицаНаправлениеВыпускаНачалоВыбора("ВыходныеИзделия", СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияПолучательПриИзменении(Элемент)
ТекущиеДанные = Элементы.ВыходныеИзделия.ТекущиеДанные;
Если ТекущиеДанные.НаправлениеВыпуска =
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ВыпускПродукцииНаСклад") Тогда
ТаблицаСкладПриИзменении("ВыходныеИзделия", "Получатель", ТекущиеДанные);
ИначеЕсли ТекущиеДанные.НаправлениеВыпуска =
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.СписаниеТоваровПоТребованию") Тогда
ТаблицаСтатьяРасходовПриИзменении(Элемент);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияПолучательНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ТекущиеДанные = Элементы.ВыходныеИзделия.ТекущиеДанные;
Если ТекущиеДанные.НаправлениеВыпуска =
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.СписаниеТоваровПоТребованию") Тогда
ТаблицаСтатьяРасходовНачалоВыбора(Элемент, СтандартнаяОбработка);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияАналитикаРасходовНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ТаблицаАналитикаРасходовНачалоВыбора(Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияАналитикаРасходовАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных,
Ожидание, СтандартнаяОбработка)
ТаблицаАналитикаРасходовАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияАналитикаРасходовОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных,
СтандартнаяОбработка)
ТаблицаАналитикаРасходовОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияВнутренняяПереработкаПриИзменении(Элемент)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияОрганизацияДавалецПриИзменении(Элемент)
Возврат;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыПобочныеИзделия
&НаКлиенте
Процедура ПобочныеИзделияПриИзменении(Элемент)
УстановитьНомерГруппыЗатратПоУмолчанию("ПобочныеИзделия");
УстановитьЗаголовкиГруппПродукции(ЭтотОбъект, "ПобочныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
Если Поле = Элементы["ПобочныеИзделияСерия"]
ИЛИ Поле = Элементы["ПобочныеИзделияСтатусУказанияСерий"] Тогда
ТаблицаВыборСерии("ПобочныеИзделия", Поле, Элемент, СтандартнаяОбработка);
ИначеЕсли Поле = Элементы.ПобочныеИзделияПредставлениеОтраженияОперации Тогда
НастройкаСчетовУчетаКлиент.ПриНажатии(ЭтаФорма, Поле, СтандартнаяОбработка);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
ТаблицаОбработкаВыбора("ПобочныеИзделия", ВыбранноеЗначение);
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
ТекущиеДанные = Элементы.ПобочныеИзделия.ТекущиеДанные;
Если НоваяСтрока Тогда
ЗаполнитьСкладПоУмолчаниюВСтроке(ЭтотОбъект, ТекущиеДанные, "Получатель");
КонецЕсли;
ОграничитьТипПолучателя("ПобочныеИзделия", ТекущиеДанные);
ДоходыИРасходыКлиентСервер.ПриДобавленииСтрокиВТаблицу(ЭтотОбъект, ТекущиеДанные, "Объект.ПобочныеИзделия");
ОбновитьКешированныеЗначенияДляУчетаСерий("ПобочныеИзделия", Элемент, КэшированныеЗначения, Копирование);
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
Если ОтменаРедактирования Тогда
Возврат;
КонецЕсли;
ТаблицаПриОкончанииРедактирования("ПобочныеИзделия", Элемент);
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияПередУдалением(Элемент, Отказ)
ОбновитьКешированныеЗначенияДляУчетаСерий("ПобочныеИзделия", Элемент, КэшированныеЗначения, Ложь);
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияПослеУдаления(Элемент)
ПослеУдаленияСтрокТЧ("ПобочныеИзделия", Элемент);
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияГруппаЗатратНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ТаблицаГруппаЗатратНачалоВыбора("ПобочныеИзделия", Ложь);
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияГруппаЗатратОчистка(Элемент, СтандартнаяОбработка)
ТаблицаГруппаЗатратОчистка("ПобочныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияНоменклатураПриИзменении(Элемент)
ТаблицаНоменклатураПриИзменении("ПобочныеИзделия", "Получатель");
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияХарактеристикаПриИзменении(Элемент)
ТаблицаХарактеристикаПриИзменении("ПобочныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияКоличествоУпаковокПриИзменении(Элемент)
ТаблицаКоличествоУпаковокПриИзменении("ПобочныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияУпаковкаПриИзменении(Элемент)
ТаблицаУпаковкаПриИзменении("ПобочныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияСерияПриИзменении(Элемент)
ТаблицаСерияПриИзменении("ПобочныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияСерияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОткрытьПодборСерий("ПобочныеИзделия", Элемент.ТекстРедактирования, Элементы.ПобочныеИзделия.ТекущиеДанные);
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияНазначениеПриИзменении(Элемент)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияЦенаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.ПобочныеИзделия.ТекущиеДанные;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСумму");
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияСуммаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.ПобочныеИзделия.ТекущиеДанные;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьЦенуПоСумме");
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияНаправлениеВыпускаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ТаблицаНаправлениеВыпускаНачалоВыбора("ПобочныеИзделия", СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияНаправлениеВыпускаПриИзменении(Элемент)
ТаблицаНаправлениеВыпускаПриИзменении("ПобочныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияПолучательПриИзменении(Элемент)
ТекущиеДанные = Элементы.ПобочныеИзделия.ТекущиеДанные;
Если ТекущиеДанные.НаправлениеВыпуска =
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ВыпускПродукцииНаСклад") Тогда
ТаблицаСкладПриИзменении("ПобочныеИзделия", "Получатель", ТекущиеДанные);
ИначеЕсли ТекущиеДанные.НаправлениеВыпуска =
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.СписаниеТоваровПоТребованию") Тогда
ТаблицаСтатьяРасходовПриИзменении(Элемент);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияПолучательНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ТекущиеДанные = Элементы.ПобочныеИзделия.ТекущиеДанные;
Если ТекущиеДанные.НаправлениеВыпуска =
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.СписаниеТоваровПоТребованию") Тогда
ТаблицаСтатьяРасходовНачалоВыбора(Элемент, СтандартнаяОбработка);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияАналитикаРасходовНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ТаблицаАналитикаРасходовНачалоВыбора(Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияАналитикаРасходовАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных,
Ожидание, СтандартнаяОбработка)
ТаблицаАналитикаРасходовАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияАналитикаРасходовОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных,
СтандартнаяОбработка)
ТаблицаАналитикаРасходовОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыМатериалыИРаботы
&НаКлиенте
Процедура МатериалыИРаботыПриИзменении(Элемент)
УстановитьНомерГруппыЗатратПоУмолчанию("МатериалыИРаботы");
КонецПроцедуры
&НаКлиенте
Процедура МатериалыИРаботыВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
Если (Поле = Элементы["МатериалыИРаботыСерия"]
ИЛИ Поле = Элементы["МатериалыИРаботыСтатусУказанияСерий"]) Тогда
ТаблицаВыборСерии("МатериалыИРаботы", Поле, Элемент, СтандартнаяОбработка);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура МатериалыИРаботыОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
ТаблицаОбработкаВыбора("МатериалыИРаботы", ВыбранноеЗначение);
КонецПроцедуры
&НаКлиенте
Процедура МатериалыИРаботыПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
ТекущиеДанные = Элементы.МатериалыИРаботы.ТекущиеДанные;
Если НоваяСтрока Тогда
ЗаполнитьСкладПоУмолчаниюВСтроке(ЭтаФорма, ТекущиеДанные, "Склад");
КонецЕсли;
РаботаСТабличнымиЧастямиКлиент.КэшироватьТекущуюСтроку(Элементы.МатериалыИРаботы, ЭтотОбъект);
ОбновитьКешированныеЗначенияДляУчетаСерий("МатериалыИРаботы", Элемент, КэшированныеЗначения, Копирование);
КонецПроцедуры
&НаКлиенте
Процедура МатериалыИРаботыПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
Если ОтменаРедактирования Тогда
Возврат;
КонецЕсли;
ТаблицаПриОкончанииРедактирования("МатериалыИРаботы", Элемент);
КонецПроцедуры
&НаКлиенте
Процедура МатериалыИРаботыПередУдалением(Элемент, Отказ)
РаботаСТабличнымиЧастямиКлиент.КэшироватьТекущуюСтроку(Элементы.МатериалыИРаботы, ЭтотОбъект);
ОбновитьКешированныеЗначенияДляУчетаСерий("МатериалыИРаботы", Элемент, КэшированныеЗначения, Ложь);
КонецПроцедуры
&НаКлиенте
Процедура МатериалыИРаботыПослеУдаления(Элемент)
МатериалыИРаботыПослеУдаленияНаСервере();
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура МатериалыИРаботыГруппаЗатратНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ТаблицаГруппаЗатратНачалоВыбора("МатериалыИРаботы", Ложь);
КонецПроцедуры
&НаКлиенте
Процедура МатериалыИРаботыГруппаЗатратОчистка(Элемент, СтандартнаяОбработка)
ТаблицаГруппаЗатратОчистка("МатериалыИРаботы");
КонецПроцедуры
&НаКлиенте
Процедура МатериалыИРаботыНоменклатураПриИзменении(Элемент)
ТаблицаНоменклатураПриИзменении("МатериалыИРаботы", "Склад");
КонецПроцедуры
&НаКлиенте
Процедура МатериалыИРаботыХарактеристикаПриИзменении(Элемент)
ТаблицаХарактеристикаПриИзменении("МатериалыИРаботы");
КонецПроцедуры
&НаКлиенте
Процедура МатериалыИРаботыКоличествоУпаковокПриИзменении(Элемент)
ТаблицаКоличествоУпаковокПриИзменении("МатериалыИРаботы");
КонецПроцедуры
&НаКлиенте
Процедура МатериалыИРаботыУпаковкаПриИзменении(Элемент)
ТаблицаУпаковкаПриИзменении("МатериалыИРаботы");
КонецПроцедуры
&НаКлиенте
Процедура МатериалыИРаботыСерияПриИзменении(Элемент)
ТаблицаСерияПриИзменении("МатериалыИРаботы");
КонецПроцедуры
&НаКлиенте
Процедура МатериалыИРаботыСерияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОткрытьПодборСерий("МатериалыИРаботы", Элемент.ТекстРедактирования, Элементы.МатериалыИРаботы.ТекущиеДанные);
КонецПроцедуры
&НаКлиенте
Процедура МатериалыИРаботыСкладПриИзменении(Элемент)
ТекущиеДанные = Элементы.МатериалыИРаботы.ТекущиеДанные;
ТаблицаСкладПриИзменении("МатериалыИРаботы", "Склад", ТекущиеДанные);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыТрудозатраты
&НаКлиенте
Процедура ТрудозатратыПриИзменении(Элемент)
УстановитьНомерГруппыЗатратПоУмолчанию("Трудозатраты");
КонецПроцедуры
&НаКлиенте
Процедура ТрудозатратыПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
ТекущиеДанные = Элементы.Трудозатраты.ТекущиеДанные;
Если Копирование Тогда
ТекущиеДанные.КодСтроки = 0;
КонецЕсли;
Если НоваяСтрока И Не Копирование Тогда
ТекущиеДанные.Исполнитель = ПредопределенноеЗначение("Справочник.ФизическиеЛица.ПустаяСсылка");
Если УчетТрудозатратВРазрезеСотрудников Тогда
ТекущиеДанные.Исполнитель = ПредопределенноеЗначение("Справочник.Сотрудники.ПустаяСсылка");
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТрудозатратыПодразделениеПриИзменении(Элемент)
ТрудозатратыПодразделениеПриИзмененииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура ТрудозатратыГруппаЗатратНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ТаблицаГруппаЗатратНачалоВыбора("Трудозатраты", Ложь);
КонецПроцедуры
&НаКлиенте
Процедура ТрудозатратыГруппаЗатратОчистка(Элемент, СтандартнаяОбработка)
ТаблицаГруппаЗатратОчистка("Трудозатраты");
КонецПроцедуры
&НаКлиенте
Процедура ТрудозатратыИсполнительПриИзменении(Элемент)
ТекущиеДанные = Элементы.Трудозатраты.ТекущиеДанные;
Если ЗначениеЗаполнено(ТекущиеДанные.Исполнитель)
И Не Объект.РаспоряжениеДляТрудозатрат Тогда
Объект.РаспоряжениеДляТрудозатрат = Истина;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТрудозатратыИсполнительНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ТекущиеДанные = Элементы.Трудозатраты.ТекущиеДанные;
ОписаниеОповещения = Новый ОписаниеОповещения("ИсполнительНачалоВыбораЗавершение", ЭтотОбъект);
ПроизводствоКлиент.ОткрытьФормуВыбораИсполнителя(
Объект.Организация,
ТекущиеДанные.Подразделение,
ТекущиеДанные.Исполнитель,
Объект.Дата,
,
ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура ИсполнительНачалоВыбораЗавершение(Результат, Параметры) Экспорт
ТекущиеДанные = Элементы.Трудозатраты.ТекущиеДанные;
Если ТекущиеДанные <> Неопределено И ЗначениеЗаполнено(Результат) Тогда
ТекущиеДанные.Исполнитель = Результат;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТрудозатратыИсполнительАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных,
Ожидание, СтандартнаяОбработка)
Если ЗначениеЗаполнено(Текст) Тогда
СтандартнаяОбработка = Ложь;
ТекущиеДанные = Элементы.Трудозатраты.ТекущиеДанные;
ПараметрыОтбора = Новый Структура("Организация,Подразделение,Дата");
ПараметрыОтбора.Организация = Объект.Организация;
ПараметрыОтбора.Подразделение = ТекущиеДанные.Подразделение;
ПараметрыОтбора.Дата = Объект.Дата;
ИсполнительПолучениеДанныхВыбора(ДанныеВыбора, Текст, ПараметрыОтбора);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТрудозатратыИсполнительОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных,
СтандартнаяОбработка)
Если ЗначениеЗаполнено(Текст) Тогда
СтандартнаяОбработка = Ложь;
ТекущиеДанные = Элементы.Трудозатраты.ТекущиеДанные;
ПараметрыОтбора = Новый Структура("Организация,Подразделение,Дата");
ПараметрыОтбора.Организация = Объект.Организация;
ПараметрыОтбора.Подразделение = ТекущиеДанные.Подразделение;
ПараметрыОтбора.Дата = Объект.Дата;
ИсполнительПолучениеДанныхВыбора(ДанныеВыбора, Текст, ПараметрыОтбора);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицОбщие
&НаКлиенте
Процедура ТаблицаОбработкаВыбора(ИмяТЧ, ВыбранноеЗначение)
ТаблицаОбработкаВыбораПодбораНаСервере(ВыбранноеЗначение, ИмяТЧ);
КонецПроцедуры
&НаСервере
Процедура ТаблицаОбработкаВыбораПодбораНаСервере(ВыбранноеЗначение, ИмяТЧ)
Если ТипЗнч(ВыбранноеЗначение) = Тип("Массив") Тогда
СписокТоваров = ВыбранноеЗначение;
Иначе
СписокТоваров = Новый Массив;
СписокТоваров.Добавить(ВыбранноеЗначение);
КонецЕсли;
ТаблицаОбъекта = Объект[ИмяТЧ];
МассивСтрок = Новый Массив;
ОбрабатываемыеСтроки = Новый Массив;
Для каждого СтрокаТовара Из СписокТоваров Цикл
ТекущаяСтрока = ТаблицаОбъекта.Добавить();
ТекущаяСтрока.Номенклатура = СтрокаТовара;
МассивСтрок.Добавить(ТекущаяСтрока.ПолучитьИдентификатор());
ОбрабатываемыеСтроки.Добавить(ТекущаяСтрока);
КонецЦикла;
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииНоменклатуры(ИмяТЧ, ЭтотОбъект, СтруктураДействий, Истина, ИмяТЧ = "МатериалыИРаботы");
ДобавитьВСтруктуруДействияПоЦеховойКладовой(ИмяТЧ, СтруктураДействий, Истина, ИмяТЧ = "МатериалыИРаботы");
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
ТаблицаОбъекта,
КэшированныеЗначения);
Если ИмяТЧ = "ВыходныеИзделия"
Или ИмяТЧ = "ПобочныеИзделия" Тогда
Если ИмяТЧ = "ВыходныеИзделия" Тогда
ПутьКТЧ = "Объект.ВыходныеИзделия";
Иначе
ПутьКТЧ = "Объект.ПобочныеИзделия";
КонецЕсли;
Для Каждого ТекущаяСтрока Из ОбрабатываемыеСтроки Цикл
ДоходыИРасходыКлиентСервер.ПриДобавленииСтрокиВТаблицу(ЭтотОбъект, ТекущаяСтрока, ПутьКТЧ);
Если ИмяТЧ = "ВыходныеИзделия" Тогда
ДобавитьИзменитьГруппуЗатрат(ТекущаяСтрока);
КонецЕсли;
КонецЦикла;
КонецЕсли;
ПослеИзмененияСтрокТЧПрограммноНаСервере(ИмяТЧ, МассивСтрок, СтруктураДействий);
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаВыборСерии(ИмяТЧ, Поле, Элемент, СтандартнаяОбработка)
ТекущиеДанные = Элементы[ИмяТЧ].ТекущиеДанные;
Если ТекущиеДанные.СтатусУказанияСерий > 0
И ТекущиеДанные.СтатусУказанияСерий <= 11 Тогда
СтандартнаяОбработка = Ложь;
ОткрытьПодборСерий(ИмяТЧ, Поле.ТекстРедактирования);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаПриОкончанииРедактирования(ИмяТЧ, Элемент)
ТекущиеДанные = Элементы[ИмяТЧ].ТекущиеДанные;
ДополнительныеПараметры = Новый Структура;
Если ИмяТЧ = "МатериалыИРаботы" Тогда
СобытияФормКлиент.ПриИзмененииЭлемента(ЭтотОбъект, Элементы[ИмяТЧ], ДополнительныеПараметры);
КонецЕсли;
ОбновитьСтатусыСерий = НоменклатураКлиент.НеобходимоОбновитьСтатусыСерий(
Элемент, КэшированныеЗначения, ПараметрыУказанияСерий[ИмяТЧ]);
Если ОбновитьСтатусыСерий Или ДополнительныеПараметры.Свойство("ТребуетсяСерверныйВызов") Тогда
ТаблицаПриОкончанииРедактированияНаСервере(
ДополнительныеПараметры.Свойство("ТребуетсяСерверныйВызов"),
ПараметрыУказанияСерий[ИмяТЧ],
?(ОбновитьСтатусыСерий, ТекущиеДанные.ПолучитьИдентификатор(), Неопределено),
КэшированныеЗначения);
КонецЕсли;
Если ОбновитьСтатусыСерий Тогда
НоменклатураКлиент.ОбновитьКешированныеЗначенияДляУчетаСерий(
Элемент, КэшированныеЗначения, ПараметрыУказанияСерий[ИмяТЧ]);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ТаблицаПриОкончанииРедактированияНаСервере(Знач ОбновитьТаблицу, Знач ПараметрыУказанияСерий, Знач ТекущаяСтрокаИдентификатор, КэшированныеЗначения)
Если ОбновитьТаблицу Тогда
СобытияФорм.ПриИзмененииЭлемента(ЭтотОбъект, "Сырье");
КонецЕсли;
Если ТекущаяСтрокаИдентификатор <> Неопределено Тогда
ЗаполнитьСтатусыУказанияСерийПриОкончанииРедактированияСтрокиТЧ(
ПараметрыУказанияСерий, ТекущаяСтрокаИдентификатор, КэшированныеЗначения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаГруппаЗатратНачалоВыбора(ИмяТЧ, ГрупповаяОбработка)
ВыделенныеСтроки = Элементы[ИмяТЧ].ВыделенныеСтроки;
Если ВыделенныеСтроки.Количество() = 0 Тогда
ТекстПредупреждения = НСтр("ru = 'Необходимо выбрать строки, для которых будет заполнена группа затрат.'");
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстПредупреждения);
Возврат;
КонецЕсли;
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("ГруппировкаЗатрат", Объект.ГруппировкаЗатрат);
ПараметрыФормы.Вставить("НомерГруппыЗатрат", Элементы[ИмяТЧ].ТекущиеДанные.НомерГруппыЗатрат);
ПараметрыФормы.Вставить("АдресХранилищаГруппЗатрат", АдресХранилищаГруппЗатрат());
ПараметрыФормы.Вставить("ОтображатьДавальцаВГруппеЗатрат", ОтображатьДавальцаВГруппеЗатрат);
ПараметрыОповещения = Новый Структура;
ПараметрыОповещения.Вставить("ИмяТЧ", ИмяТЧ);
ПараметрыОповещения.Вставить("ГрупповаяОбработка", ГрупповаяОбработка);
ОписаниеОповещения = Новый ОписаниеОповещения("ТаблицаГруппаЗатратВыбор", ЭтотОбъект, ПараметрыОповещения);
ОткрытьФорму("Документ.ПроизводствоБезЗаказа.Форма.ВыборГруппыЗатрат", ПараметрыФормы,,,,, ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаГруппаЗатратВыбор(РезультатЗакрытия, ПараметрыОповещения) Экспорт
Если РезультатЗакрытия = Неопределено Тогда
Возврат;
КонецЕсли;
ТаблицаГруппаЗатратВыборНаСервере(РезультатЗакрытия, ПараметрыОповещения)
КонецПроцедуры
&НаСервере
Процедура ТаблицаГруппаЗатратВыборНаСервере(РезультатЗакрытия, ПараметрыОповещения)
НомерГруппыЗатрат = РезультатЗакрытия.НомерГруппыЗатрат;
ГруппаЗатрат = РезультатЗакрытия.ГруппаЗатрат;
НаправлениеДеятельности = РезультатЗакрытия.НаправлениеДеятельности;
ВыделенныеСтроки = Элементы[ПараметрыОповещения.ИмяТЧ].ВыделенныеСтроки;
ТабличнаяЧасть = Объект[ПараметрыОповещения.ИмяТЧ];
МассивСтрок = Новый Массив;
Для Каждого ИдентификаторСтроки Из ВыделенныеСтроки Цикл
ТекущиеДанные = ТабличнаяЧасть.НайтиПоИдентификатору(ИдентификаторСтроки);
ТекущиеДанные.НомерГруппыЗатрат = НомерГруппыЗатрат;
ТекущиеДанные.ГруппаЗатрат = ГруппаЗатрат;
Если Не ПараметрыОповещения.ИмяТЧ = "Трудозатраты" Тогда
ТекущиеДанные.НаправлениеДеятельности = НаправлениеДеятельности;
Если ПараметрыОповещения.ГрупповаяОбработка Тогда
МассивСтрок.Добавить(ТекущиеДанные);
КонецЕсли;
КонецЕсли;
КонецЦикла;
Если Не ПараметрыОповещения.ИмяТЧ = "Трудозатраты"
И ПараметрыОповещения.ГрупповаяОбработка Тогда
ЗаполнитьСтатусыУказанияСерийСервер(ПараметрыОповещения.ИмяТЧ, МассивСтрок);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаГруппаЗатратОчистка(ИмяТЧ)
ТекущиеДанные = Элементы[ИмяТЧ].ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
ТекущиеДанные.НомерГруппыЗатрат = 0;
ТекущиеДанные.ГруппаЗатрат = "";
Если Не ИмяТЧ = "Трудозатраты" Тогда
ТекущиеДанные.НаправлениеДеятельности = ПредопределенноеЗначение("Справочник.НаправленияДеятельности.ПустаяСсылка");
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаНоменклатураПриИзменении(ИмяТЧ, ИмяСклад)
ТекущаяСтрока = Элементы[ИмяТЧ].ТекущиеДанные;
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииНоменклатуры(ИмяТЧ, ЭтотОбъект, СтруктураДействий,, ИмяТЧ = "МатериалыИРаботы");
ДобавитьВСтруктуруДействияПоСкладу(ИмяТЧ, ЭтотОбъект, СтруктураДействий);
ДобавитьВСтруктуруДействияПоЦеховойКладовой(ИмяТЧ, СтруктураДействий,, ИмяТЧ = "МатериалыИРаботы");
ДобавитьВСтруктуруДействияПерезаполнитьСтатьюИАналитику(ИмяТЧ, ЭтотОбъект, СтруктураДействий, ТекущаяСтрока);
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(ИмяТЧ, ЭтотОбъект, СтруктураДействий);
ДобавитьВСтруктуруДействияПоСериям(СтруктураДействий, ТекущаяСтрока[ИмяСклад], ПараметрыУказанияСерий[ИмяТЧ]);
Если ИмяТЧ = "ВыходныеИзделия" Тогда
СтруктураЗаполненияСпецификации = УправлениеДаннымиОбИзделияхКлиентСервер.ПараметрыДействияПроверитьЗаполнитьСпецификацию(
Объект, ТекущаяСтрока, ПараметрыВыбораСпецификаций);
СтруктураДействий.Вставить("ПроверитьЗаполнитьСпецификацию", СтруктураЗаполненияСпецификации);
КонецЕсли;
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
Если ИмяТЧ = "ВыходныеИзделия" Или ИмяТЧ = "ПобочныеИзделия" Тогда
ОграничитьТипПолучателя(ИмяТЧ, ТекущаяСтрока);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаХарактеристикаПриИзменении(ИмяТЧ)
ТекущаяСтрока = Элементы[ИмяТЧ].ТекущиеДанные;
СтруктураДействий = Новый Структура;
Если ИмяТЧ = "ВыходныеИзделия" Тогда
СтруктураЗаполненияСпецификации = УправлениеДаннымиОбИзделияхКлиентСервер.ПараметрыДействияПроверитьЗаполнитьСпецификацию(
Объект, ТекущаяСтрока, ПараметрыВыбораСпецификаций);
СтруктураДействий.Вставить("ПроверитьЗаполнитьСпецификацию", СтруктураЗаполненияСпецификации);
СтруктураДействий.Вставить("ПроверитьЗаполнитьДолюСтоимости", ПараметрыРаспределенияЗатрат);
КонецЕсли;
СтруктураДействий.Вставить(
"ХарактеристикаПриИзмененииПереопределяемый", Новый Структура("ИмяФормы, ИмяТабличнойЧасти",
ЭтаФорма.ИмяФормы,
ИмяТЧ));
Если (ИмяТЧ = "ВыходныеИзделия" И ИспользоватьПлановуюСтоимость)
Или ИмяТЧ = "ПобочныеИзделия" Тогда
СтруктураПараметров = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияЦеныВСтрокеТЧ(Объект);
СтруктураПараметров.Вставить("ВидЦены", Объект.ВидЦены);
СтруктураДействий.Вставить("ЗаполнитьЦенуПродажи", СтруктураПараметров);
СтруктураДействий.Вставить("ПересчитатьСумму", "Количество");
КонецЕсли;
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаКоличествоУпаковокПриИзменении(ИмяТЧ)
ТекущаяСтрока = Элементы[ИмяТЧ].ТекущиеДанные;
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(ИмяТЧ, ЭтаФорма, СтруктураДействий);
Если ИмяТЧ = "ПобочныеИзделия" Тогда
СтруктураДействий.Вставить("ПересчитатьСумму");
КонецЕсли;
Если ИмяТЧ = "ВыходныеИзделия" Тогда
СтруктураДействий.Вставить("ПересчитатьДолюСтоимости", ПараметрыРаспределенияЗатрат);
КонецЕсли;
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаУпаковкаПриИзменении(ИмяТЧ)
ТекущаяСтрока = Элементы[ИмяТЧ].ТекущиеДанные;
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(ИмяТЧ, ЭтаФорма, СтруктураДействий);
Если ИмяТЧ = "ВыходныеИзделия" Тогда
СтруктураДействий.Вставить("ПересчитатьДолюСтоимости", ПараметрыРаспределенияЗатрат);
КонецЕсли;
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаСерияПриИзменении(ИмяТЧ)
ТекущиеДанные = Элементы[ИмяТЧ].ТекущиеДанные;
ВыбранноеЗначение = НоменклатураКлиентСервер.ВыбраннаяСерия();
ВыбранноеЗначение.Значение = ТекущиеДанные.Серия;
ВыбранноеЗначение.ИдентификаторТекущейСтроки = ТекущиеДанные.ПолучитьИдентификатор();
НоменклатураКлиент.ОбработатьУказаниеСерии(
ЭтаФорма,
ПараметрыУказанияСерий[ИмяТЧ],
ВыбранноеЗначение,
ТекущиеДанные);
СтруктураДействий = Новый Структура;
Если ЦенообразованиеКлиент.НеобходимПересчетЦеныПриИзменении(ТекущиеДанные.Номенклатура, "Серия", Объект.Дата) Тогда
Если ИмяТЧ = "ВыходныеИзделия" Тогда
СтруктураДействий.Вставить("ПроверитьЗаполнитьДолюСтоимости", ПараметрыРаспределенияЗатрат);
КонецЕсли;
Если (ИмяТЧ = "ВыходныеИзделия" И ИспользоватьПлановуюСтоимость)
Или ИмяТЧ = "ПобочныеИзделия" Тогда
СтруктураПараметров = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияЦеныВСтрокеТЧ(Объект);
СтруктураПараметров.Вставить("ВидЦены", Объект.ВидЦены);
СтруктураДействий.Вставить("ЗаполнитьЦенуПродажи", СтруктураПараметров);
СтруктураДействий.Вставить("ПересчитатьСумму", "Количество");
КонецЕсли;
КонецЕсли;
Если Не СтруктураДействий.Количество() = 0 Тогда
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущиеДанные, СтруктураДействий, КэшированныеЗначения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаНаправлениеВыпускаНачалоВыбора(ИмяТЧ, СтандартнаяОбработка)
ТекущиеДанные = Элементы[ИмяТЧ].ТекущиеДанные;
ЗаполнитьСписокВыбораНаправлениеВыпуска(ИмяТЧ, ТекущиеДанные);
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаНаправлениеВыпускаПриИзменении(ИмяТЧ)
ТекущиеДанные = Элементы[ИмяТЧ].ТекущиеДанные;
Если ИмяТЧ = "ВыходныеИзделия" Тогда
ИмяЭлементаПолучатель = "ВыходныеИзделияПолучатель";
Иначе
ИмяЭлементаПолучатель = "ПобочныеИзделияПолучатель";
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ТекущиеДанные.НаправлениеВыпуска) Тогда
ТекущиеДанные.НаправлениеВыпуска =
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ВыпускПродукцииНаСклад");
КонецЕсли;
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПоПолучателю(ИмяТЧ, ЭтотОбъект, СтруктураДействий);
ДобавитьВСтруктуруДействияПоЦеховойКладовой(ИмяТЧ, СтруктураДействий, Истина);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущиеДанные, СтруктураДействий, КэшированныеЗначения);
ОграничитьТипПолучателя(ИмяТЧ, ТекущиеДанные);
Если ТекущиеДанные.НаправлениеВыпуска = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.СписаниеТоваровПоТребованию") Тогда
ТекущиеДанные.Назначение = Неопределено;
КонецЕсли;
ДоходыИРасходыКлиентСервер.СтатьяПриИзменении(ЭтотОбъект, Элементы[ИмяЭлементаПолучатель]);
НастройкаСчетовУчетаКлиентСервер.ПриИзмененииРеквизитаДоступностиСчетаУчетаВСтроке(ЭтотОбъект, ТекущиеДанные, "Объект." + ИмяТЧ);
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаСкладПриИзменении(ИмяТЧ, ИмяСклад, ТекущиеДанные)
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПоСериям(СтруктураДействий, ТекущиеДанные[ИмяСклад], ПараметрыУказанияСерий[ИмяТЧ]);
ДобавитьВСтруктуруДействияПоЦеховойКладовой(ИмяТЧ, СтруктураДействий, Истина, ИмяТЧ = "МатериалыИРаботы");
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущиеДанные, СтруктураДействий, КэшированныеЗначения);
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаСтатьяРасходовНачалоВыбора(Элемент, СтандартнаяОбработка)
ДоходыИРасходыКлиент.НачалоВыбораСтатьи(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаСтатьяРасходовПриИзменении(Элемент)
ДоходыИРасходыКлиентСервер.СтатьяПриИзменении(ЭтотОбъект, Элемент);
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаАналитикаРасходовНачалоВыбора(Элемент, СтандартнаяОбработка)
ДоходыИРасходыКлиент.НачалоВыбораАналитикиРасходов(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаАналитикаРасходовАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка)
ДоходыИРасходыКлиент.АвтоПодборАналитикиРасходов(
ЭтотОбъект,
Элемент,
Текст,
ДанныеВыбора,
ПараметрыПолученияДанных,
СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаАналитикаРасходовОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка)
ДоходыИРасходыКлиент.ОкончаниеВводаТекстаАналитикиРасходов(
ЭтотОбъект,
Элемент,
Текст,
ДанныеВыбора,
ПараметрыПолученияДанных,
СтандартнаяОбработка);
КонецПроцедуры
&НаСервере
Процедура РассчитатьПроцентРаспределенияЗатратНаВыходныеИзделия(Группировки = Неопределено)
ПроизводствоСервер.РассчитатьПроцентРаспределенияЗатратНаВыходныеИзделия(Объект, ПараметрыРаспределенияЗатрат, Группировки);
КонецПроцедуры
&НаСервере
Функция ПараметрыФормыВводаДолиСтоимости(ТекущиеДанныеИдентификатор)
ПараметрыФормы = ПроизводствоСервер.ПараметрыФормыВводаДолейСтоимости(Объект, ПараметрыРаспределенияЗатрат, ТекущиеДанныеИдентификатор);
Возврат ПараметрыФормы;
КонецФункции
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаСервере
Процедура ВыполнитьКомандуНаСервере(ПараметрыВыполнения)
ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, ПараметрыВыполнения, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПродолжитьВыполнениеКомандыНаСервере(ПараметрыВыполнения, ДополнительныеПараметры) Экспорт
ВыполнитьКомандуНаСервере(ПараметрыВыполнения);
КонецПроцедуры
#Область СтандартныеПодсистемы
&НаКлиенте
Процедура Подключаемый_СвойстваВыполнитьКоманду(ЭлементИлиКоманда,
НавигационнаяСсылка = Неопределено,
СтандартнаяОбработка = Неопределено)
УправлениеСвойствамиКлиент.ВыполнитьКоманду(ЭтотОбъект, ЭлементИлиКоманда, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)
СобытияФормКлиент.ВыполнитьПереопределяемуюКоманду(ЭтаФорма, Команда);
КонецПроцедуры
&НаСервере
Процедура Подключаемый_ВыполнитьПереопределяемуюКомандуНаСервере(ДополнительныеПараметры) Экспорт
СобытияФорм.ВыполнитьПереопределяемуюКоманду(ЭтотОбъект, ДополнительныеПараметры);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
ПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_КомандаПанелиПрисоединенныхФайлов(Команда)
РаботаСФайламиКлиент.КомандаУправленияПрисоединеннымиФайлами(ЭтотОбъект, Команда);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПроверкаПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраПроверкаПеретаскивания(ЭтотОбъект, Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраПеретаскивание(ЭтотОбъект, Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраНажатие(Элемент, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраНажатие(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандВыходныеИзделия
&НаКлиенте
Процедура ВыходныеИзделияПодобратьТовары(Команда)
ОткрытьПодборТоваров("ВыходныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияЗаполнитьСклад(Команда)
ЗаполнитьСклад("ВыходныеИзделия", "Получатель");
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияЗаполнитьСтатьюРасходов(Команда)
ЗаполнитьСтатьюРасходов("ВыходныеИзделия", "Получатель")
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияЗаполнитьГруппуЗатрат(Команда)
ТаблицаГруппаЗатратНачалоВыбора("ВыходныеИзделия", Истина);
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияЗагрузитьДанныеИзТСД(Команда)
ПолучитьДанныеИзТСД("ВыходныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияОкруглитьДоЦелойУпаковки(Команда)
ОкруглитьДоЦелойУпаковки("ВыходныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияПоискПоШтрихкодуВыполнить(Команда)
ПоискПоШтрихкодуВыполнить("ВыходныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияПолучитьВес(Команда)
ПолучитьВес("ВыходныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияВставитьСтроки(Команда)
ПолучитьСтрокиИзБуфераОбмена("ВыходныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияСкопироватьСтроки(Команда)
СкопироватьСтрокиТЧ("ВыходныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияРазбитьСтроку(Команда)
РазбитьСтрокуТЧ("ВыходныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияУказатьСерии(Команда)
ОткрытьПодборСерий("ВыходныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияЗаполнитьСпецификацию(Команда)
Если Элементы.ВыходныеИзделия.ВыделенныеСтроки.Количество() = 0 Тогда
ПоказатьПредупреждение( ,НСтр("ru = 'В таблице отсутствуют выделенные строки. Выделите строки для заполнения реквизита ""Спецификация""'"));
Возврат;
КонецЕсли;
ВыходныеИзделияЗаполнитьСпецификациюСервер(Элементы.ВыходныеИзделия.ВыделенныеСтроки);
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияДополнитьПоСпецификации(Команда)
Если Элементы.ВыходныеИзделия.ВыделенныеСтроки.Количество() = 0 Тогда
ПоказатьПредупреждение( ,НСтр("ru = 'В таблице отсутствуют выделенные строки. Выделите строки для заполнения табличной части'"));
Возврат;
КонецЕсли;
ВыходныеИзделияДополнитьПоСпецификацииСервер(Элементы.ВыходныеИзделия.ВыделенныеСтроки);
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияЗаполнитьЦеныПоВидуЦен(Команда)
ОчиститьСообщения();
ЦеныРассчитаны = ЗаполнитьЦеныПоВидуЦенСервер("ВыходныеИзделия");
Если ЦеныРассчитаны Тогда
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияЦенПоВидуЦен(ЦеныРассчитаны, Объект.ВидЦены);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВыходныеИзделияЗаполнитьЦеныПоКалькуляции(Команда)
Возврат;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандПобочныеИзделия
&НаКлиенте
Процедура ПобочныеИзделияЗаполнитьСклад(Команда)
ЗаполнитьСклад("ПобочныеИзделия", "Получатель");
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияЗаполнитьСтатьюРасходов(Команда)
ЗаполнитьСтатьюРасходов("ПобочныеИзделия", "Получатель");
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияПодобратьТовары(Команда)
ОткрытьПодборТоваров("ПобочныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияЗагрузитьДанныеИзТСД(Команда)
ПолучитьДанныеИзТСД("ПобочныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияОкруглитьДоЦелойУпаковки(Команда)
ОкруглитьДоЦелойУпаковки("ПобочныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияПоискПоШтрихкодуВыполнить(Команда)
ПоискПоШтрихкодуВыполнить("ПобочныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияПолучитьВес(Команда)
ПолучитьВес("ПобочныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияВставитьСтроки(Команда)
ПолучитьСтрокиИзБуфераОбмена("ПобочныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияСкопироватьСтроки(Команда)
СкопироватьСтрокиТЧ("ПобочныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияРазбитьСтроку(Команда)
РазбитьСтрокуТЧ("ПобочныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияДополнитьПоСпецификации(Команда)
ОценкаПроизводительностиКлиент.ЗамерВремени(
"Документ.ПроизводствоБезЗаказа.Форма.ФормаДокумента.Команда.ПобочныеИзделияДополнитьПоСпецификации");
ДополнитьПоСпецификацииНаСервере("ПобочныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияЗаполнитьГруппуЗатрат(Команда)
ТаблицаГруппаЗатратНачалоВыбора("ПобочныеИзделия", Истина);
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияЗаполнитьСтатьюКалькуляции(Команда)
ЗаполнитьСтатьюКалькуляции("ПобочныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияЗаполнитьЦеныПоВидуЦен(Команда)
ОчиститьСообщения();
ЦеныРассчитаны = ЗаполнитьЦеныПоВидуЦенСервер("ПобочныеИзделия");
Если ЦеныРассчитаны Тогда
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияЦенПоВидуЦен(ЦеныРассчитаны, Объект.ВидЦены);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияУказатьСерии(Команда)
ОткрытьПодборСерий("ПобочныеИзделия");
КонецПроцедуры
&НаКлиенте
Процедура ПобочныеИзделияЗаполнитьПодразделениеЗатрат(Команда)
ЗаполнитьПодразделениеЗатрат("ПобочныеИзделия");
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандМатериалыИРаботы
&НаКлиенте
Процедура МатериалыИРаботыДополнитьОбособленнымиОстатками(Команда)
ОценкаПроизводительностиКлиент.ЗамерВремени(
"Документ.ПроизводствоБезЗаказа.Форма.ФормаДокумента.Команда.МатериалыИРаботыДополнитьОбособленнымиОстатками");
МатериалыИРаботыДополнитьОбособленнымиОстаткамиНаСервере(КэшированныеЗначения);
КонецПроцедуры
&НаКлиенте
Процедура МатериалыИРаботыПодобратьТовары(Команда)
ОткрытьПодборТоваров("МатериалыИРаботы");
КонецПроцедуры
&НаКлиенте
Процедура МатериалыИРаботыЗагрузитьДанныеИзТСД(Команда)
ПолучитьДанныеИзТСД("МатериалыИРаботы");
КонецПроцедуры
&НаКлиенте
Процедура МатериалыИРаботыОкруглитьДоЦелойУпаковки(Команда)
ОкруглитьДоЦелойУпаковки("МатериалыИРаботы");
КонецПроцедуры
&НаКлиенте
Процедура МатериалыИРаботыПоискПоШтрихкодуВыполнить(Команда)
ПоискПоШтрихкодуВыполнить("МатериалыИРаботы");
КонецПроцедуры
&НаКлиенте
Процедура МатериалыИРаботыПолучитьВес(Команда)
ПолучитьВес("МатериалыИРаботы");
КонецПроцедуры
&НаКлиенте
Процедура МатериалыИРаботыВставитьСтроки(Команда)
ПолучитьСтрокиИзБуфераОбмена("МатериалыИРаботы");
КонецПроцедуры
&НаКлиенте
Процедура МатериалыИРаботыСкопироватьСтроки(Команда)
СкопироватьСтрокиТЧ("МатериалыИРаботы");
КонецПроцедуры
&НаКлиенте
Процедура МатериалыИРаботыРазбитьСтроку(Команда)
РазбитьСтрокуТЧ("МатериалыИРаботы");
КонецПроцедуры
&НаКлиенте
Процедура МатериалыИРаботыДополнитьПоСпецификации(Команда)
ОценкаПроизводительностиКлиент.ЗамерВремени(
"Документ.ПроизводствоБезЗаказа.Форма.ФормаДокумента.Команда.МатериалыИРаботыДополнитьПоСпецификации");
ДополнитьПоСпецификацииНаСервере("МатериалыИРаботы");
КонецПроцедуры
&НаКлиенте
Процедура МатериалыИРаботыЗаполнитьГруппуЗатрат(Команда)
ТаблицаГруппаЗатратНачалоВыбора("МатериалыИРаботы", Истина);
КонецПроцедуры
&НаКлиенте
Процедура МатериалыИРаботыУказатьСерии(Команда)
ОткрытьПодборСерий("МатериалыИРаботы");
КонецПроцедуры
&НаКлиенте
Процедура МатериалыИРаботыЗаполнитьСтатьюКалькуляции(Команда)
ЗаполнитьСтатьюКалькуляции("МатериалыИРаботы");
КонецПроцедуры
&НаКлиенте
Процедура МатериалыИРаботыЗаполнитьСклад(Команда)
ЗаполнитьСклад("МатериалыИРаботы", "Склад");
КонецПроцедуры
&НаКлиенте
Процедура МатериалыИРаботыЗаполнитьПодразделениеЗатрат(Команда)
ЗаполнитьПодразделениеЗатрат("МатериалыИРаботы");
КонецПроцедуры
&НаКлиенте
Процедура МатериалыИРаботыПоказатьАналоги(Команда)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура МатериалыИРаботыПодобратьАналоги(Команда)
Возврат;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандТрудозатраты
&НаКлиенте
Процедура ТрудозатратыВставитьСтроки(Команда)
ПолучитьСтрокиИзБуфераОбмена("Трудозатраты");
КонецПроцедуры
&НаКлиенте
Процедура ТрудозатратыСкопироватьСтроки(Команда)
СкопироватьСтрокиТЧ("Трудозатраты");
КонецПроцедуры
&НаКлиенте
Процедура ТрудозатратыРазбитьСтроку(Команда)
РазбитьСтрокуТЧ("Трудозатраты");
КонецПроцедуры
&НаКлиенте
Процедура ТрудозатратыДополнитьПоСпецификации(Команда)
ОценкаПроизводительностиКлиент.ЗамерВремени(
"Документ.ПроизводствоБезЗаказа.Форма.ФормаДокумента.Команда.ТрудозатратыДополнитьПоСпецификации");
ДополнитьПоСпецификацииНаСервере("Трудозатраты");
КонецПроцедуры
&НаКлиенте
Процедура ТрудозатратыЗаполнитьГруппуЗатрат(Команда)
ТаблицаГруппаЗатратНачалоВыбора("Трудозатраты", Истина);
КонецПроцедуры
&НаКлиенте
Процедура ТрудозатратыЗаполнитьСтатьюКалькуляции(Команда)
ЗаполнитьСтатьюКалькуляции("Трудозатраты");
КонецПроцедуры
&НаКлиенте
Процедура ТрудозатратыЗаполнитьИсполнителей(Команда)
ВыделенныеСтроки = Элементы.Трудозатраты.ВыделенныеСтроки;
Если ВыделенныеСтроки.Количество() = 0 Тогда
ТекстПредупреждения = НСтр("ru = 'Необходимо выбрать строки для заполнения исполнителей.'");
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстПредупреждения);
Возврат;
КонецЕсли;
ПерваяСтрока = Объект.Трудозатраты.НайтиПоИдентификатору(ВыделенныеСтроки[0]);
ОписаниеОповещения = Новый ОписаниеОповещения("ЗаполнитьИсполнителейЗавершение", ЭтотОбъект);
ПроизводствоКлиент.ОткрытьФормуВыбораИсполнителя(
Объект.Организация,
ПерваяСтрока.Подразделение,
ПерваяСтрока.Исполнитель,
Объект.Дата,
,
ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура ТрудозатратыЗаполнитьПодразделениеЗатрат(Команда)
ЗаполнитьПодразделениеЗатрат("Трудозатраты");
КонецПроцедуры
#КонецОбласти
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуИнтеграции(Команда)
ИнтеграцияС1СДокументооборотБазоваяФункциональностьКлиент.ВыполнитьПодключаемуюКомандуИнтеграции(
Команда,
ЭтотОбъект,
Объект);
КонецПроцедуры
&НаКлиенте
Процедура ГиперСсылкаНадписьПродукцияНажатие(Элемент)
ПродукцияСвернута = НЕ ПродукцияСвернута;
УстановитьСвойстваСворачиваемойГруппы(
Элементы.ВыходныеИзделия,
Элементы.ГиперСсылкаНадписьПродукция,
ПродукцияСвернута);
КонецПроцедуры
&НаКлиенте
Процедура ГиперСсылкаНадписьПобочныеИзделияНажатие(Элемент)
ПобочныеИзделияСвернуты = НЕ ПобочныеИзделияСвернуты;
УстановитьСвойстваСворачиваемойГруппы(
Элементы.ПобочныеИзделия,
Элементы.ГиперСсылкаНадписьПобочныеИзделия,
ПобочныеИзделияСвернуты);
КонецПроцедуры
&НаКлиенте
Процедура ПровестиИЗакрыть(Команда)
ОбщегоНазначенияУТКлиент.ПровестиИЗакрыть(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ЗаписатьДокумент(Команда)
ОбщегоНазначенияУТКлиент.Записать(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ПровестиДокумент(Команда)
ОбщегоНазначенияУТКлиент.Провести(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура УстановитьПометкуУдаленияДокумента(Команда)
ОбщегоНазначенияУТКлиент.УстановитьПометкуУдаленияДокумента(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ОтображатьВнутреннююПереработку(Команда)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура ПодобратьТоварыПоОрдерам(Команда)
ОткрытьПодборТоваровПоОрдерам();
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
Процедура ПриЧтенииСозданииНаСервере()
ГруппировкаЗатратДоИзменения = Объект.ГруппировкаЗатрат;
ПодразделениеДоИзменения = Объект.Подразделение;
ОрганизацияДоИзменения = Объект.Организация;
ИспользоватьСписаниеНаРасходы =
ПолучитьФункциональнуюОпцию("ИспользоватьУчетПрочихАктивовПассивов")
ИЛИ ПолучитьФункциональнуюОпцию("ИспользоватьУчетПрочихДоходовРасходов");
Элементы.ВыходныеИзделияОформитьОтчетДавальцу.Видимость = ИспользуетсяДавальческаяСхема;
Элементы.ПобочныеИзделияОформитьОтчетДавальцу.Видимость = ИспользуетсяДавальческаяСхема;
ВалютаДокумента = Объект.Валюта;
ЗаполнитьПараметрыУказанияСерий();
УстановитьВидимостьЭлементовСерий();
ПараметрыРаспределенияЗатрат = Новый ФиксированнаяСтруктура(Документы.ПроизводствоБезЗаказа.ПараметрыРаспределенияЗатрат(Объект));
ЗаполнитьСлужебныеРеквизитыФормы();
ОбновитьСписокГруппЗатрат();
НастроитьЭлементыГруппировкиЗатрат(Истина);
НастройкаЗависимыхЭлементовФормы(ЭтотОбъект);
УстановитьЗаголовкиГруппПродукции(ЭтотОбъект);
УстановитьПараметрыВыбораСтатьи();
НаправленияДеятельностиСервер.ПриЧтенииСозданииНаСервере(ЭтотОбъект);
АктуализироватьВыпускПодДеятельность(Ложь);
ПараметрыВыбораСпецификаций = УправлениеДаннымиОбИзделиях.ПараметрыВыбораСпецификаций(Объект, Документы.ПроизводствоБезЗаказа);
УправлениеДаннымиОбИзделияхКлиентСервер.УстановитьПараметрыВыбораСпецификаций(Элементы.ВыходныеИзделияСпецификация, ПараметрыВыбораСпецификаций);
КонецПроцедуры
#Область СтандартныеПодсистемы
&НаСервере
Процедура ОбновитьЭлементыДополнительныхРеквизитов()
УправлениеСвойствами.ОбновитьЭлементыДополнительныхРеквизитов(ЭтаФорма);
КонецПроцедуры
#КонецОбласти
#Область Оформление
&НаСервере
Процедура УстановитьУсловноеОформление()
УсловноеОформление.Элементы.Очистить();
#Область НаправлениеВыпуска
УстановитьУсловноеОформлениеНаправлениеВыпуска("ВыходныеИзделия");
УстановитьУсловноеОформлениеНаправлениеВыпуска("ПобочныеИзделия");
#КонецОбласти
#Область ПодразделениеРасходов
УстановитьУсловноеОформлениеПодразделениеРасходов("ВыходныеИзделия", "Подразделение");
УстановитьУсловноеОформлениеПодразделениеРасходов("ПобочныеИзделия", "ПодразделениеПолучатель");
#КонецОбласти
#Область Склад
УстановитьУсловноеОформлениеПолучатель("ВыходныеИзделия");
УстановитьУсловноеОформлениеПолучатель("ПобочныеИзделия");
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.МатериалыИРаботыСклад.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.МатериалыИРаботы.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ТипыНоменклатуры.Работа;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.НезаполненноеПолеТаблицы);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<для товаров>'"));
#КонецОбласти
#Область Подразделение
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.МатериалыИРаботыПодразделение.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.МатериалыИРаботы.ЦеховаяКладовая");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
#КонецОбласти
#Область ЕдиницыИзмерения
ПараметрыУсловногоОформления = НоменклатураСервер.НовыеПараметрыУсловногоОформленияЕдиницИзмерения();
ПараметрыУсловногоОформления.ИмяПоляЕдиницаИзмерения = "ВыходныеИзделияНоменклатураЕдиницаИзмерения";
ПараметрыУсловногоОформления.ПутьКПолюУпаковка = "Объект.ВыходныеИзделия.Упаковка";
НоменклатураСервер.УстановитьУсловноеОформлениеЕдиницИзмерения(ЭтаФорма, ПараметрыУсловногоОформления);
ПараметрыУсловногоОформления = НоменклатураСервер.НовыеПараметрыУсловногоОформленияЕдиницИзмерения();
ПараметрыУсловногоОформления.ИмяПоляЕдиницаИзмерения = "ПобочныеИзделияНоменклатураЕдиницаИзмерения";
ПараметрыУсловногоОформления.ПутьКПолюУпаковка = "Объект.ПобочныеИзделия.Упаковка";
НоменклатураСервер.УстановитьУсловноеОформлениеЕдиницИзмерения(ЭтаФорма, ПараметрыУсловногоОформления);
ПараметрыУсловногоОформления = НоменклатураСервер.НовыеПараметрыУсловногоОформленияЕдиницИзмерения();
ПараметрыУсловногоОформления.ИмяПоляЕдиницаИзмерения = "МатериалыИРаботыНоменклатураЕдиницаИзмерения";
ПараметрыУсловногоОформления.ПутьКПолюУпаковка = "Объект.МатериалыИРаботы.Упаковка";
НоменклатураСервер.УстановитьУсловноеОформлениеЕдиницИзмерения(ЭтаФорма, ПараметрыУсловногоОформления);
#КонецОбласти
#Область Характеристики
НоменклатураСервер.УстановитьУсловноеОформлениеХарактеристикНоменклатуры(ЭтаФорма,
"ВыходныеИзделияХарактеристика",
"Объект.ВыходныеИзделия.ХарактеристикиИспользуются");
НоменклатураСервер.УстановитьУсловноеОформлениеХарактеристикНоменклатуры(ЭтаФорма,
"ПобочныеИзделияХарактеристика",
"Объект.ПобочныеИзделия.ХарактеристикиИспользуются");
НоменклатураСервер.УстановитьУсловноеОформлениеХарактеристикНоменклатуры(ЭтаФорма,
"МатериалыИРаботыХарактеристика",
"Объект.МатериалыИРаботы.ХарактеристикиИспользуются");
#КонецОбласти
#Область Серии
НоменклатураСервер.УстановитьУсловноеОформлениеСтатусовУказанияСерий(ЭтаФорма,
Ложь,
"ВыходныеИзделияСтатусУказанияСерий",
"Объект.ВыходныеИзделия.СтатусУказанияСерий");
НоменклатураСервер.УстановитьУсловноеОформлениеСерийНоменклатуры(ЭтаФорма,
Ложь,
"ВыходныеИзделияСерия",
"Объект.ВыходныеИзделия.СтатусУказанияСерий",
"Объект.ВыходныеИзделия.ТипНоменклатуры");
НоменклатураСервер.УстановитьУсловноеОформлениеСтатусовУказанияСерий(ЭтаФорма,
Ложь,
"ПобочныеИзделияСтатусУказанияСерий",
"Объект.ПобочныеИзделия.СтатусУказанияСерий");
НоменклатураСервер.УстановитьУсловноеОформлениеСерийНоменклатуры(ЭтаФорма,
Ложь,
"ПобочныеИзделияСерия",
"Объект.ПобочныеИзделия.СтатусУказанияСерий",
"Объект.ПобочныеИзделия.ТипНоменклатуры");
НоменклатураСервер.УстановитьУсловноеОформлениеСтатусовУказанияСерий(ЭтаФорма,
Истина,
"МатериалыИРаботыСтатусУказанияСерий",
"Объект.МатериалыИРаботы.СтатусУказанияСерий");
НоменклатураСервер.УстановитьУсловноеОформлениеСерийНоменклатуры(ЭтаФорма,
"СерииВсегдаВТЧТовары",
"МатериалыИРаботыСерия",
"Объект.МатериалыИРаботы.СтатусУказанияСерий",
"Объект.МатериалыИРаботы.ТипНоменклатуры");
#КонецОбласти
#Область Назначения
НоменклатураСервер.УстановитьУсловноеОформлениеНазначенияНоменклатуры(ЭтаФорма,
"ВыходныеИзделияНазначение",
"Объект.ВыходныеИзделия.ТипНоменклатуры",
Ложь);
НоменклатураСервер.УстановитьУсловноеОформлениеНазначенияНоменклатуры(ЭтаФорма,
"ПобочныеИзделияНазначение",
"Объект.ПобочныеИзделия.ТипНоменклатуры",
Ложь);
НоменклатураСервер.УстановитьУсловноеОформлениеНазначенияНоменклатуры(ЭтаФорма,
"МатериалыИРаботыНазначение",
"Объект.МатериалыИРаботы.ТипНоменклатуры",
Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ВыходныеИзделияНазначение.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ВыходныеИзделия.НаправлениеВыпуска");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ХозяйственныеОперации.СписаниеТоваровПоТребованию;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.НезаполненноеПолеТаблицы);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<не используется>'"));
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ПобочныеИзделияНазначение.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ПобочныеИзделия.НаправлениеВыпуска");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ХозяйственныеОперации.СписаниеТоваровПоТребованию;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.НезаполненноеПолеТаблицы);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<не используется>'"));
#КонецОбласти
#Область ГруппировкаЗатрат
ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ВыходныеИзделияГруппаЗатрат.Имя);
ГруппаИли = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаИли.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ОтборЭлемента = ГруппаИли.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Исправление");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
ОтборЭлемента = ГруппаИли.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ИсправлениеСохраняетПартииПроизводства");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ВыходныеИзделияГруппаЗатрат.Имя);
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ПобочныеИзделияГруппаЗатрат.Имя);
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.МатериалыИРаботыГруппаЗатрат.Имя);
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТрудозатратыГруппаЗатрат.Имя);
ОтборЭлемента = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ГруппировкаЗатрат");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
СписокЗначений = Новый СписокЗначений;
СписокЗначений.Добавить(Перечисления.ГруппировкиЗатратВПроизводствеБезЗаказа.ПоДокументу);
СписокЗначений.Добавить(Перечисления.ГруппировкиЗатратВПроизводствеБезЗаказа.ЗатратыНеУказываются);
ОтборЭлемента.ПравоеЗначение = СписокЗначений;
ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ВыходныеИзделияСпецификация.Имя);
ГруппаИли = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаИли.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ОтборЭлемента = ГруппаИли.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ГруппировкаЗатрат");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеВСписке;
СписокЗначений = Новый СписокЗначений;
СписокЗначений.Добавить(Перечисления.ГруппировкиЗатратВПроизводствеБезЗаказа.ПоСпецификациям);
СписокЗначений.Добавить(Перечисления.ГруппировкиЗатратВПроизводствеБезЗаказа.ПоСпецификациямИНазначениям);
ОтборЭлемента.ПравоеЗначение = СписокЗначений;
ГруппаИ = ГруппаИли.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаИ.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаИ.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Исправление");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
ОтборЭлемента = ГруппаИ.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ИсправлениеСохраняетПартииПроизводства");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ВыходныеИзделияНазначение.Имя);
ОтборЭлемента = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ГруппировкаЗатрат");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеВСписке;
СписокЗначений = Новый СписокЗначений;
СписокЗначений.Добавить(Перечисления.ГруппировкиЗатратВПроизводствеБезЗаказа.ПоПродукцииИНазначениям);
СписокЗначений.Добавить(Перечисления.ГруппировкиЗатратВПроизводствеБезЗаказа.ПоПродукцииИНазначениямБезСерий);
СписокЗначений.Добавить(Перечисления.ГруппировкиЗатратВПроизводствеБезЗаказа.ПоСпецификациямИНазначениям);
ОтборЭлемента.ПравоеЗначение = СписокЗначений;
ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
#КонецОбласти
#Область ВыходныеИзделияДоляСтоимости
ПроизводствоСервер.УстановитьУсловноеОформлениеПоляДоляСтоимостиПроцент(ЭтаФорма, "Объект", "ВыходныеИзделия");
ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ВыходныеИзделияДоляСтоимости.Имя);
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ВыходныеИзделияДоляСтоимостиПроцент.Имя);
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ВыходныеИзделияЕстьОшибкиЗаполненияДолиСтоимости.Имя);
ОтборЭлемента = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ГруппировкаЗатрат");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
СписокЗначений = Новый СписокЗначений;
СписокЗначений.Добавить(Перечисления.ГруппировкиЗатратВПроизводствеБезЗаказа.ПоПродукции);
СписокЗначений.Добавить(Перечисления.ГруппировкиЗатратВПроизводствеБезЗаказа.ПоПродукцииИНазначениям);
СписокЗначений.Добавить(Перечисления.ГруппировкиЗатратВПроизводствеБезЗаказа.ПоПродукцииБезСерий);
СписокЗначений.Добавить(Перечисления.ГруппировкиЗатратВПроизводствеБезЗаказа.ПоПродукцииИНазначениямБезСерий);
ОтборЭлемента.ПравоеЗначение = СписокЗначений;
ГруппаИли = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаИли.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ОтборЭлемента = ГруппаИли.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Исправление");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
ОтборЭлемента = ГруппаИли.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ИсправлениеСохраняетПартииПроизводства");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
#КонецОбласти
#Область ТрудозатратыБригада
ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТрудозатратыИсполнитель.Имя);
ОтборЭлемента = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.РаспоряжениеДляТрудозатрат");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
#КонецОбласти
#Область ПлановаяСтоимость
Элемент = УсловноеОформление.Элементы.Добавить();
Элемент.Поля.Элементы.Добавить().Поле = Новый ПолеКомпоновкиДанных(Элементы.ВыходныеИзделияЦена.Имя);
Элемент.Поля.Элементы.Добавить().Поле = Новый ПолеКомпоновкиДанных(Элементы.ВыходныеИзделияСумма.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ИспользоватьПлановуюСтоимость");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
#КонецОбласти
КонецПроцедуры
&НаСервере
Процедура УстановитьУсловноеОформлениеНаправлениеВыпуска(ИмяТЧ)
Если ИмяТЧ = "ВыходныеИзделия" Тогда
ИмяПоляНаправлениеВыпуска = "ВыходныеИзделияНаправлениеВыпуска";
ПутьКПолюОформитьОтчетДавальцу = "Объект.ВыходныеИзделия.ОформитьОтчетДавальцу";
ПутьКПолюНаправлениеВыпуска = "Объект.ВыходныеИзделия.НаправлениеВыпуска";
Иначе
ИмяПоляНаправлениеВыпуска = "ПобочныеИзделияНаправлениеВыпуска";
ПутьКПолюОформитьОтчетДавальцу = "Объект.ПобочныеИзделия.ОформитьОтчетДавальцу";
ПутьКПолюНаправлениеВыпуска = "Объект.ПобочныеИзделия.НаправлениеВыпуска";
КонецЕсли;
ПолеНаправлениеВыпуска = Элементы[ИмяПоляНаправлениеВыпуска];
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(ПолеНаправлениеВыпуска.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ПутьКПолюНаправлениеВыпуска);
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ХозяйственныеОперации.ВыпускПродукцииНаСклад;
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = 'На склад'"));
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(ПолеНаправлениеВыпуска.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ПутьКПолюНаправлениеВыпуска);
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ХозяйственныеОперации.ВыпускПродукцииВПодразделение;
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = 'В подразделение'"));
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(ПолеНаправлениеВыпуска.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ПутьКПолюНаправлениеВыпуска);
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ХозяйственныеОперации.СписаниеТоваровПоТребованию;
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = 'Списать на расходы'"));
КонецПроцедуры
&НаСервере
Процедура УстановитьУсловноеОформлениеПодразделениеРасходов(ИмяТЧ, ИмяПоля)
Если ИмяТЧ = "ВыходныеИзделия" Тогда
ИмяПоляПодразделение = "ВыходныеИзделияПодразделение";
ПутьКПолюНаправлениеВыпуска = "Объект.ВыходныеИзделия.НаправлениеВыпуска";
ПутьКПолюПодразделение = "Объект.ВыходныеИзделия.Подразделение";
Иначе
ИмяПоляПодразделение = "ПобочныеИзделияПодразделениеПолучатель";
ПутьКПолюНаправлениеВыпуска = "Объект.ПобочныеИзделия.НаправлениеВыпуска";
ПутьКПолюПодразделение = "Объект.ПобочныеИзделия.ПодразделениеПолучатель";
КонецЕсли;
ПолеФормы = Элементы[ИмяПоляПодразделение];
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(ПолеФормы.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ПутьКПолюНаправлениеВыпуска);
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ХозяйственныеОперации.СписаниеТоваровПоТребованию;
Элемент.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(ПолеФормы.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ПутьКПолюНаправлениеВыпуска);
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ХозяйственныеОперации.СписаниеТоваровПоТребованию;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ПутьКПолюПодразделение);
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", Новый ПолеКомпоновкиДанных("Объект.Подразделение"));
КонецПроцедуры
&НаСервере
Процедура УстановитьУсловноеОформлениеПолучатель(ИмяТЧ)
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеПолучатель = Элементы[ИмяТЧ + "Получатель"];
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(ПолеПолучатель.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ИспользоватьНесколькоСкладов");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
ОтборГруппа = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ОтборГруппа.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ОтборЭлемента = ОтборГруппа.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект." + ИмяТЧ + ".Номенклатура");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Справочники.Номенклатура.ПустаяСсылка();
ОтборЭлемента = ОтборГруппа.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект." + ИмяТЧ + ".ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
СписокЗначений = Новый СписокЗначений;
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.Товар);
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.МногооборотнаяТара);
ОтборЭлемента.ПравоеЗначение = СписокЗначений;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект." + ИмяТЧ + ".НаправлениеВыпуска");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ХозяйственныеОперации.ВыпускПродукцииНаСклад;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<для работ>'"));
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ТекстЗапрещеннойЯчейкиЦвет);
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьЗаголовкиГруппПродукции(Форма, СписокРеквизитов = "")
СтруктураРеквизитов = Новый Структура(СписокРеквизитов);
Инициализация = ПустаяСтрока(СписокРеквизитов);
ВыходныеИзделияКоличество = Форма.Объект.ВыходныеИзделия.Количество();
ПобочныеИзделияКоличество = Форма.Объект.ПобочныеИзделия.Количество();
ГруппировкаБезЗатрат =
ПредопределенноеЗначение("Перечисление.ГруппировкиЗатратВПроизводствеБезЗаказа.ЗатратыНеУказываются");
Если Форма.Объект.ГруппировкаЗатрат = ГруппировкаБезЗатрат Тогда
Форма.Элементы.ГруппаНадписьПродукция.Видимость = Ложь;
Форма.Элементы.ГруппаНадписьПобочныеИзделия.Видимость = Ложь;
Форма.КоличествоИзделий = ВыходныеИзделияКоличество;
Возврат;
Иначе
Форма.Элементы.ГруппаНадписьПродукция.Видимость = Истина;
Форма.Элементы.ГруппаНадписьПобочныеИзделия.Видимость = Истина;
Форма.КоличествоИзделий = ВыходныеИзделияКоличество + ПобочныеИзделияКоличество;
КонецЕсли;
Если СтруктураРеквизитов.Свойство("ВыходныеИзделия")
ИЛИ Инициализация Тогда
НадписьПродукция = НСтр("ru = 'Продукция по рассчитываемой стоимости%1'");
НадписьПродукция =
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НадписьПродукция,
?(ВыходныеИзделияКоличество <> 0, " (" + ВыходныеИзделияКоличество + ")", ""));
Форма.НадписьПродукция = НадписьПродукция;
КонецЕсли;
Если СтруктураРеквизитов.Свойство("ПобочныеИзделия")
ИЛИ Инициализация Тогда
НадписьПобочныеИзделия = НСтр("ru = 'Побочный и промежуточный выпуск по фиксированной стоимости%1'");
НадписьПобочныеИзделия =
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НадписьПобочныеИзделия, ?(ПобочныеИзделияКоличество <> 0, " (" + ПобочныеИзделияКоличество + ")", ""));
Форма.НадписьПобочныеИзделия = НадписьПобочныеИзделия;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура НастроитьЭлементыГруппировкиЗатрат(Инициализация)
ТолькоПросмотрПолейПартий =
Объект.Исправление
И Объект.ИсправлениеСохраняетПартииПроизводства;
Элементы.ГруппировкаЗатрат.ТолькоПросмотр = ТолькоПросмотрПолейПартий;
Элементы.Организация.ТолькоПросмотр = ТолькоПросмотрПолейПартий;
Элементы.НаправлениеДеятельности.ТолькоПросмотр = ТолькоПросмотрПолейПартий;
Элементы.ВыпускПодДеятельность.ТолькоПросмотр = ТолькоПросмотрПолейПартий;
ПараметрыВыбораГруппировкиЗатрат = Новый Массив;
ИспользоватьНазначения = ПолучитьФункциональнуюОпцию("ИспользоватьОбособленноеОбеспечениеЗаказов");
Если Не ИспользоватьНазначения Тогда
ДоступныеЗначения = Новый Массив;
Если ЗначениеЗаполнено(Объект.ГруппировкаЗатрат) Тогда
ДоступныеЗначения.Добавить(Объект.ГруппировкаЗатрат);
КонецЕсли;
ДоступныеЗначения.Добавить(Перечисления.ГруппировкиЗатратВПроизводствеБезЗаказа.ЗатратыНеУказываются);
ДоступныеЗначения.Добавить(Перечисления.ГруппировкиЗатратВПроизводствеБезЗаказа.ПоДокументу);
ДоступныеЗначения.Добавить(Перечисления.ГруппировкиЗатратВПроизводствеБезЗаказа.ПоПродукции);
ДоступныеЗначения.Добавить(Перечисления.ГруппировкиЗатратВПроизводствеБезЗаказа.ПоПродукцииБезСерий);
ДоступныеЗначения.Добавить(Перечисления.ГруппировкиЗатратВПроизводствеБезЗаказа.ПоСпецификациям);
ДоступныеЗначения = ОбщегоНазначенияКлиентСервер.СвернутьМассив(ДоступныеЗначения);
НовыйПараметр = Новый ПараметрВыбора("Отбор.Ссылка", Новый ФиксированныйМассив(ДоступныеЗначения));
ПараметрыВыбораГруппировкиЗатрат.Добавить(НовыйПараметр);
КонецЕсли;
Элементы.ГруппировкаЗатрат.ПараметрыВыбора = Новый ФиксированныйМассив(ПараметрыВыбораГруппировкиЗатрат);
СписокПолей = Документы.ПроизводствоБезЗаказа.ПереченьПолейГруппыЗатрат(Объект.ГруппировкаЗатрат);
ПредставлениеГруппыЗатрат = "";
Для Каждого ТекПоле Из СписокПолей Цикл
Если ЗначениеЗаполнено(ТекПоле.Представление) Тогда
ПредставлениеГруппыЗатрат = ПредставлениеГруппыЗатрат + ТекПоле.Представление + " / ";
КонецЕсли;
КонецЦикла;
ПредставлениеГруппыЗатрат = " (" + Лев(ПредставлениеГруппыЗатрат, СтрДлина(ПредставлениеГруппыЗатрат) - 3) + ")";
ЗаголовокГруппыЗатрат = НСтр("ru = 'Группа затрат%1'");
Если Не СписокПолей.Количество() = 0 Тогда
ЗаголовокГруппыЗатрат =
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ЗаголовокГруппыЗатрат, ПредставлениеГруппыЗатрат);
КонецЕсли;
ПодсказкаГруппыВыходныеИзделия = НСтр("ru = '%1, к которой относится изделие'");
ПодсказкаГруппыПобочныеИзделия = НСтр("ru = '%1, к которой относится возвратный отход'");
ПодсказкаГруппыМатериалыИРаботы = НСтр("ru = '%1, к которой относится материал/работа'");
ПодсказкаГруппыТрудозатраты = НСтр("ru = '%1, к которой относится трудозатрата'");
ПодсказкаГруппыПобочныеИзделия =
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ПодсказкаГруппыПобочныеИзделия, ЗаголовокГруппыЗатрат);
ПодсказкаГруппыМатериалыИРаботы =
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ПодсказкаГруппыМатериалыИРаботы, ЗаголовокГруппыЗатрат);
ПодсказкаГруппыТрудозатраты =
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ПодсказкаГруппыТрудозатраты, ЗаголовокГруппыЗатрат);
Элементы.ВыходныеИзделияГруппаЗатрат.Заголовок = ЗаголовокГруппыЗатрат;
Элементы.ВыходныеИзделияЗаполнитьГруппуЗатрат.Видимость =
Объект.Исправление
И Объект.ИсправлениеСохраняетПартииПроизводства;
Элементы.ВыходныеИзделияЗаполнитьГруппуЗатратРасширеннаяПодсказка.Заголовок = ПодсказкаГруппыВыходныеИзделия;
ВидимостьКомандыЗаполнить =
Не Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВПроизводствеБезЗаказа.ЗатратыНеУказываются
И Не Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВПроизводствеБезЗаказа.ПоДокументу;
Элементы.ПобочныеИзделияГруппаЗатрат.Заголовок = ЗаголовокГруппыЗатрат;
Элементы.ПобочныеИзделияЗаполнитьГруппуЗатрат.Видимость = ВидимостьКомандыЗаполнить;
Элементы.ПобочныеИзделияЗаполнитьГруппуЗатратРасширеннаяПодсказка.Заголовок = ПодсказкаГруппыПобочныеИзделия;
Элементы.МатериалыИРаботыГруппаЗатрат.Заголовок = ЗаголовокГруппыЗатрат;
Элементы.МатериалыИРаботыЗаполнитьГруппуЗатрат.Видимость = ВидимостьКомандыЗаполнить;
Элементы.МатериалыИРаботыЗаполнитьГруппуЗатратРасширеннаяПодсказка.Заголовок = ПодсказкаГруппыМатериалыИРаботы;
Элементы.ТрудозатратыГруппаЗатрат.Заголовок = ЗаголовокГруппыЗатрат;
Элементы.ТрудозатратыЗаполнитьГруппуЗатрат.Видимость = ВидимостьКомандыЗаполнить;
Элементы.ТрудозатратыЗаполнитьГруппуЗатратРасширеннаяПодсказка.Заголовок = ПодсказкаГруппыТрудозатраты;
Если Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВПроизводствеБезЗаказа.ЗатратыНеУказываются Тогда
Элементы.ВидЦены.Видимость = ИспользоватьПлановуюСтоимость;
Элементы.Валюта.Видимость = ИспользоватьПлановуюСтоимость;
Элементы.ГруппаПобочныеИзделия.Видимость = Ложь;
Элементы.ГруппаМатериалыИРаботы.Видимость = Ложь;
Элементы.ГруппаТрудозатраты.Видимость = Ложь;
Иначе
Элементы.ВидЦены.Видимость = Истина;
Элементы.Валюта.Видимость = Истина;
Элементы.ГруппаПобочныеИзделия.Видимость = Истина;
Элементы.ГруппаМатериалыИРаботы.Видимость = Истина;
Элементы.ГруппаТрудозатраты.Видимость = Истина;
КонецЕсли;
Если Инициализация Тогда
ПобочныеИзделияСвернуты = Истина;
УстановитьСвойстваСворачиваемойГруппы(
Элементы.ПобочныеИзделия,
Элементы.ГиперСсылкаНадписьПобочныеИзделия,
ПобочныеИзделияСвернуты);
КонецЕсли;
Элементы.СпособРаспределенияЗатратНаВыходныеИзделия.Видимость =
Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВПроизводствеБезЗаказа.ПоСпецификациям
Или Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВПроизводствеБезЗаказа.ПоСпецификациямИНазначениям
Или Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВПроизводствеБезЗаказа.ПоДокументу
Или Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВПроизводствеБезЗаказа.ЗатратыНеУказываются
Или Объект.Исправление
И Объект.ИсправлениеСохраняетПартииПроизводства;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьСвойстваСворачиваемойГруппы(ЭлементГруппа, КартинкаГруппы, ГруппаСвернута)
ЭлементГруппа.Видимость = НЕ ГруппаСвернута;
Если ГруппаСвернута Тогда
КартинкаГруппы.Картинка = БиблиотекаКартинок.СтрелкаВправо;
Иначе
КартинкаГруппы.Картинка = БиблиотекаКартинок.СтрелкаВниз;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьПараметрыВыбораСтатьи()
ПараметрыВыбораСтатьи = Новый Массив;
ПараметрыВыбораСтатьи.Добавить(Новый ПараметрВыбора("ДополнитьСтатьямиРасходов", Истина));
ПараметрыВыбораСтатьи.Добавить(Новый ПараметрВыбора("ДополнитьСтатьямиАктивовПассивов", Истина));
ПараметрыВыбораСтатьи.Добавить(
Новый ПараметрВыбора("Отбор.ХозяйственнаяОперация", Перечисления.ХозяйственныеОперации.ВыпускПродукции));
МассивВариантов = Новый Массив;
МассивВариантов.Добавить(Перечисления.ВариантыРаспределенияРасходов.НаНаправленияДеятельности);
МассивВариантов.Добавить(Перечисления.ВариантыРаспределенияРасходов.НаРасходыБудущихПериодов);
МассивВариантов.Добавить(Перечисления.ВариантыРаспределенияРасходов.НаПроизводственныеЗатраты);
МассивВариантов.Добавить(Перечисления.ВариантыРаспределенияРасходов.НаВнеоборотныеАктивы);
МассивВариантов.Добавить(Перечисления.ВариантыРаспределенияРасходов.НаОбъектыВозникновенияЗатрат);
МассивВариантов.Добавить(Перечисления.ВариантыРаспределенияРасходов.НаСебестоимостьТоваров);
МассивВариантов.Добавить(Перечисления.ВариантыРаспределенияРасходов.НаСебестоимостьПроизводства);
МассивВариантов.Добавить(Перечисления.ВариантыРаспределенияРасходов.НаСебестоимостьПродаж);
МассивВариантов.Добавить(Перечисления.ВариантыРаспределенияРасходов.НеРаспределять);
ПараметрыВыбораСтатьи.Добавить(
Новый ПараметрВыбора("Отбор.ВариантРаспределенияРасходов", Новый ФиксированныйМассив(МассивВариантов)));
Элементы.ВыходныеИзделияПолучатель.ПараметрыВыбора = Новый ФиксированныйМассив(ПараметрыВыбораСтатьи);
Элементы.ПобочныеИзделияПолучатель.ПараметрыВыбора = Новый ФиксированныйМассив(ПараметрыВыбораСтатьи);
КонецПроцедуры
&НаКлиенте
Процедура ОграничитьТипПолучателя(ИмяТЧ, ТекущиеДанные)
Если ИмяТЧ = "ВыходныеИзделия" Тогда
ИмяПоляПолучатель = "ВыходныеИзделияПолучатель";
Иначе
ИмяПоляПолучатель = "ПобочныеИзделияПолучатель";
КонецЕсли;
Если ТекущиеДанные.НаправлениеВыпуска =
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ВыпускПродукцииВПодразделение") Тогда
ОграничениеТипа = Новый ОписаниеТипов("СправочникСсылка.СтруктураПредприятия");
ИначеЕсли ТекущиеДанные.НаправлениеВыпуска =
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.СписаниеТоваровПоТребованию") Тогда
ОграничениеТипа =
Новый ОписаниеТипов("ПланВидовХарактеристикСсылка.СтатьиАктивовПассивов, ПланВидовХарактеристикСсылка.СтатьиРасходов");
Иначе
ОграничениеТипа = Новый ОписаниеТипов("СправочникСсылка.Склады");
КонецЕсли;
Элементы[ИмяПоляПолучатель].ОграничениеТипа = ОграничениеТипа;
ТекущиеДанные.Получатель =
Элементы[ИмяПоляПолучатель].ОграничениеТипа.ПривестиЗначение(ТекущиеДанные.Получатель);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура НастройкаЗависимыхЭлементовФормы(Форма, СписокРеквизитов = "")
Объект = Форма.Объект;
Элементы = Форма.Элементы;
СписокРеквизитов = Новый Структура(СписокРеквизитов);
Инициализация = Не ЗначениеЗаполнено(СписокРеквизитов.Количество());
Если Инициализация
Или СписокРеквизитов.Свойство("Дата")
Или СписокРеквизитов.Свойство("Организация") Тогда
Элементы.ВыходныеИзделияЗаполнитьЦеныПоКалькуляции.Видимость = Ложь;
Элементы.ВыходныеИзделияЗаполнитьЦеныПоВидуЦен.Видимость = Форма.ИспользоватьПлановуюСтоимость;
КонецЕсли;
Если Инициализация
Или СписокРеквизитов.Свойство("ГруппировкаЗатрат") Тогда
ВидимостьЭлемента = Ложь;
Элементы.ГруппаВнутренняяПереработка.Видимость = ВидимостьЭлемента;
ВидимостьЭлемента = Ложь;
Элементы.ОтображатьВнутреннююПереработку.Видимость = ВидимостьЭлемента;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область Серии
&НаСервере
Процедура ЗаполнитьПараметрыУказанияСерий()
ПараметрыУказанияСерий =
Новый ФиксированнаяСтруктура(НоменклатураСервер.ПараметрыУказанияСерий(Объект, Документы.ПроизводствоБезЗаказа));
КонецПроцедуры
&НаСервере
Функция ПараметрыФормыУказанияСерий(ИмяТЧ, ТекущиеДанныеИдентификатор)
Возврат НоменклатураСервер.ПараметрыФормыУказанияСерий(Объект, ПараметрыУказанияСерий[ИмяТЧ],
ТекущиеДанныеИдентификатор,
ЭтаФорма);
КонецФункции
&НаСервере
Процедура УстановитьВидимостьЭлементовСерий()
Элементы.ВыходныеИзделияСерия.Видимость = ПараметрыУказанияСерий.ВыходныеИзделия.ИспользоватьСерииНоменклатуры;
Элементы.ВыходныеИзделияСтатусУказанияСерий.Видимость =
ПараметрыУказанияСерий.ВыходныеИзделия.ИспользоватьСерииНоменклатуры;
Элементы.ВыходныеИзделияУказатьСерии.Видимость = ПараметрыУказанияСерий.ВыходныеИзделия.ИспользоватьСерииНоменклатуры;
Элементы.ПобочныеИзделияСерия.Видимость = ПараметрыУказанияСерий.ПобочныеИзделия.ИспользоватьСерииНоменклатуры;
Элементы.ПобочныеИзделияСтатусУказанияСерий.Видимость =
ПараметрыУказанияСерий.ПобочныеИзделия.ИспользоватьСерииНоменклатуры;
Элементы.ПобочныеИзделияУказатьСерии.Видимость = ПараметрыУказанияСерий.ПобочныеИзделия.ИспользоватьСерииНоменклатуры;
Элементы.МатериалыИРаботыСерия.Видимость = ПараметрыУказанияСерий.МатериалыИРаботы.ИспользоватьСерииНоменклатуры;
Элементы.МатериалыИРаботыСтатусУказанияСерий.Видимость =
ПараметрыУказанияСерий.МатериалыИРаботы.ИспользоватьСерииНоменклатуры;
Элементы.МатериалыИРаботыУказатьСерии.Видимость =
ПараметрыУказанияСерий.МатериалыИРаботы.ИспользоватьСерииНоменклатуры;
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьКешированныеЗначенияДляУчетаСерий(ИмяТЧ, Элемент, КэшированныеЗначения, Копирование)
НоменклатураКлиент.ОбновитьКешированныеЗначенияДляУчетаСерий(
Элемент, КэшированныеЗначения, ПараметрыУказанияСерий[ИмяТЧ], Копирование);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьПодборСерий(ИмяТЧ, Текст = "", ТекущиеДанные = Неопределено)
НуженСерверныйВызов = НоменклатураКлиент.ДляУказанияСерийНуженСерверныйВызов(
ЭтотОбъект,
ПараметрыУказанияСерий[ИмяТЧ],
Текст,
ТекущиеДанные);
Если НуженСерверныйВызов Тогда
Если ТекущиеДанные = Неопределено Тогда
ТекущиеДанныеИдентификатор = Элементы[ИмяТЧ].ТекущиеДанные.ПолучитьИдентификатор();
Иначе
ТекущиеДанныеИдентификатор = ТекущиеДанные.ПолучитьИдентификатор();
КонецЕсли;
ПараметрыФормыУказанияСерий = ПараметрыФормыУказанияСерий(ИмяТЧ, ТекущиеДанныеИдентификатор);
ДополнительныеПараметры = Новый Структура("ПараметрыУказанияСерий,ПараметрыФормыУказанияСерий, ИмяТЧ",
ПараметрыУказанияСерий[ИмяТЧ], ПараметрыФормыУказанияСерий, ИмяТЧ);
ОписаниеОповещения = Новый ОписаниеОповещения("ОткрытьПодборСерийЗавершение", ЭтотОбъект, ДополнительныеПараметры);
ОткрытьФорму(ПараметрыФормыУказанияСерий.ИмяФормы,
ПараметрыФормыУказанияСерий,
ЭтотОбъект,,,,
ОписаниеОповещения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьПодборСерийЗавершение(РезультатЗакрытия, ДополнительныеПараметры) Экспорт
Если РезультатЗакрытия <> Неопределено Тогда
ОбработатьУказаниеСерийСервер(
ДополнительныеПараметры.ИмяТЧ,
ДополнительныеПараметры.ПараметрыУказанияСерий,
ДополнительныеПараметры.ПараметрыФормыУказанияСерий);
ТекущиеДанные = Элементы[ДополнительныеПараметры.ИмяТЧ].ТекущиеДанные;
СтруктураДействий = Новый Структура;
Если ЦенообразованиеКлиент.НеобходимПересчетЦеныПриИзменении(ТекущиеДанные.Номенклатура, "Серия", Объект.Дата) Тогда
Если ДополнительныеПараметры.ИмяТЧ = "ВыходныеИзделия" Тогда
СтруктураДействий.Вставить("ПроверитьЗаполнитьДолюСтоимости", ПараметрыРаспределенияЗатрат);
КонецЕсли;
Если (ДополнительныеПараметры.ИмяТЧ = "ВыходныеИзделия" И ИспользоватьПлановуюСтоимость)
Или ДополнительныеПараметры.ИмяТЧ = "ПобочныеИзделия" Тогда
СтруктураПараметров = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияЦеныВСтрокеТЧ(Объект);
СтруктураПараметров.Вставить("ВидЦены", Объект.ВидЦены);
СтруктураДействий.Вставить("ЗаполнитьЦенуПродажи", СтруктураПараметров);
СтруктураДействий.Вставить("ПересчитатьСумму", "Количество");
КонецЕсли;
КонецЕсли;
Если Не СтруктураДействий.Количество() = 0 Тогда
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущиеДанные, СтруктураДействий, КэшированныеЗначения);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбработатьУказаниеСерийСервер(Знач ИмяТЧ, Знач ПараметрыУказанияСерий, Знач ПараметрыФормыУказанияСерий)
Если ПараметрыУказанияСерий.ИмяТЧТовары = "ВыходныеИзделия"
ИЛИ ПараметрыУказанияСерий.ИмяТЧТовары = "ПобочныеИзделия" Тогда
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ОбновлятьКоличествоТоваровПриРегистрацииСерий", Истина);
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(
ПараметрыУказанияСерий.ИмяТЧТовары,
ЭтотОбъект,
СтруктураДействий);
Иначе
СтруктураДействий = Неопределено;
КонецЕсли;
НоменклатураСервер.ОбработатьУказаниеСерий(
Объект,
ПараметрыУказанияСерий,
ПараметрыФормыУказанияСерий,
СтруктураДействий);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСтатусыУказанияСерийСервер(ИмяТЧ,
СтрокиТоваровДляОбработки = Неопределено,
СтрокиСерийДляОбработки = Неопределено)
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект,
ПараметрыУказанияСерий[ИмяТЧ],
СтрокиТоваровДляОбработки,
СтрокиСерийДляОбработки);
КонецПроцедуры
&НаСервере
Процедура РаспределитьСерииИзделийПоГруппамЗатрат(ИмяТЧ)
Если ИмяТЧ = "ВыходныеИзделия" Тогда
ИмяТЧСерии = "ВыходныеИзделияСерии";
Иначе
ИмяТЧСерии = "ПобочныеИзделияСерии";
КонецЕсли;
Если Не ПараметрыУказанияСерий[ИмяТЧ].ИспользоватьСерииНоменклатуры
Или Объект[ИмяТЧСерии].Количество() = 0 Тогда
Возврат;
КонецЕсли;
ПоляИзделий = ОбщегоНазначения.СкопироватьРекурсивно(ПараметрыУказанияСерий[ИмяТЧ].ПоляСвязи);
ПоляИзделий.Добавить("Номенклатура");
ПоляИзделий.Добавить("Характеристика");
ТаблицаИзделий = Объект[ИмяТЧ].Выгрузить();
ТаблицаИзделий.Свернуть(СтрСоединить(ПоляИзделий, ","), "Количество");
ПоляСерий = ОбщегоНазначения.СкопироватьРекурсивно(ПоляИзделий);
ИндексНомераГруппыЗатрат = ПоляСерий.Найти("НомерГруппыЗатрат");
Если Не ИндексНомераГруппыЗатрат = Неопределено Тогда
ПоляСерий.Удалить(ИндексНомераГруппыЗатрат);
КонецЕсли;
КлючПоиска = СтрСоединить(ПоляСерий, ",");
ПоляСерий.Добавить("Серия");
ТаблицаСерий = Объект[ИмяТЧСерии].Выгрузить();
ТаблицаСерийНовая = ТаблицаСерий.СкопироватьКолонки();
ТаблицаСерий.Свернуть(СтрСоединить(ПоляСерий, ","), "Количество");
ТаблицаСерий.Индексы.Добавить(КлючПоиска);
Для Каждого ТекущееИзделие Из ТаблицаИзделий Цикл
КоличествоИзделия = ТекущееИзделие.Количество;
Отбор = Новый Структура(КлючПоиска);
ЗаполнитьЗначенияСвойств(Отбор, ТекущееИзделие);
Для Каждого ТекущаяСерия Из ТаблицаСерий.НайтиСтроки(Отбор) Цикл
Если ТекущаяСерия.Количество = 0 Тогда
Продолжить;
КонецЕсли;
КоличествоСерии = Мин(КоличествоИзделия, ТекущаяСерия.Количество);
НоваяСтрокаСерии = ТаблицаСерийНовая.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрокаСерии, ТекущаяСерия);
НоваяСтрокаСерии.НомерГруппыЗатрат = ТекущееИзделие.НомерГруппыЗатрат;
НоваяСтрокаСерии.Количество = КоличествоСерии;
КоличествоИзделия = КоличествоИзделия - КоличествоСерии;
ТекущаяСерия.Количество = ТекущаяСерия.Количество - КоличествоСерии;
Если КоличествоИзделия = 0 Тогда
Прервать;
КонецЕсли;
КонецЦикла;
КонецЦикла;
Объект[ИмяТЧСерии].Загрузить(ТаблицаСерийНовая);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСтатусыУказанияСерийПриОкончанииРедактированияСтрокиТЧ(
Знач ПараметрыУказанияСерий,
ТекущаяСтрокаИдентификатор,
КэшированныеЗначения)
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерийПриОкончанииРедактированияСтрокиТЧ(Объект,
ПараметрыУказанияСерий, ТекущаяСтрокаИдентификатор, КэшированныеЗначения);
КонецПроцедуры
&НаКлиенте
Процедура ПослеУдаленияСтрокТЧ(ИмяТЧ, Элемент)
НеобходимоОбновитьСтатусыСерий = НоменклатураКлиент.НеобходимоОбновитьСтатусыСерий(
Элемент, КэшированныеЗначения, ПараметрыУказанияСерий[ИмяТЧ], Истина);
Если ИмяТЧ = "ВыходныеИзделия"
Или НеобходимоОбновитьСтатусыСерий Тогда
ПослеУдаленияСтрокТЧНаСервере(ИмяТЧ, НеобходимоОбновитьСтатусыСерий, КэшированныеЗначения);
Если НеобходимоОбновитьСтатусыСерий Тогда
НоменклатураКлиент.ОбновитьКешированныеЗначенияДляУчетаСерий(
Элемент, КэшированныеЗначения, ПараметрыУказанияСерий[ИмяТЧ]);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПослеУдаленияСтрокТЧНаСервере(ИмяТЧ, НеобходимоОбновитьСтатусыСерий, КэшированныеЗначения)
Если НеобходимоОбновитьСтатусыСерий Тогда
ЗаполнитьСтатусыУказанияСерийПриОкончанииРедактированияСтрокиТЧ(
ПараметрыУказанияСерий[ИмяТЧ],
Неопределено,
КэшированныеЗначения);
КонецЕсли;
Если ИмяТЧ = "ВыходныеИзделия" Тогда
РассчитатьПроцентРаспределенияЗатратНаВыходныеИзделия();
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область РаботаСБуферомОбмена
&НаКлиенте
Процедура СкопироватьСтрокиТЧ(ИмяТЧ)
Если РаботаСТабличнымиЧастямиКлиент.ВыбранаСтрокаДляВыполненияКоманды(Элементы[ИмяТЧ]) Тогда
СкопироватьСтрокиНаСервере(ИмяТЧ);
РаботаСТабличнымиЧастямиКлиент.ОповеститьПользователяОКопированииСтрок(Элементы[ИмяТЧ].ВыделенныеСтроки.Количество());
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура СкопироватьСтрокиНаСервере(ИмяТЧ)
РаботаСТабличнымиЧастями.СкопироватьСтрокиВБуферОбмена(Объект[ИмяТЧ], Элементы[ИмяТЧ].ВыделенныеСтроки);
КонецПроцедуры
&НаКлиенте
Процедура ПолучитьСтрокиИзБуфераОбмена(ИмяТЧ)
КоличествоТоваровДоВставки = Объект[ИмяТЧ].Количество();
ПолучитьСтрокиИзБуфераОбменаНаСервере(ИмяТЧ);
КоличествоВставленных = Объект[ИмяТЧ].Количество() - КоличествоТоваровДоВставки;
РаботаСТабличнымиЧастямиКлиент.ОповеститьПользователяОВставкеСтрок(КоличествоВставленных);
КонецПроцедуры
&НаСервере
Процедура ПолучитьСтрокиИзБуфераОбменаНаСервере(ИмяТЧ)
Если ИмяТЧ = "ВыходныеИзделия" ИЛИ ИмяТЧ = "ПобочныеИзделия" ИЛИ ИмяТЧ = "МатериалыИРаботы" Тогда
МассивТиповНоменклатуры = Новый Массив;
МассивТиповНоменклатуры.Добавить(ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Товар"));
МассивТиповНоменклатуры.Добавить(ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.МногооборотнаяТара"));
МассивТиповНоменклатуры.Добавить(ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Работа"));
ПараметрыОтбора = Новый Соответствие;
ПараметрыОтбора.Вставить("Номенклатура.ТипНоменклатуры", МассивТиповНоменклатуры);
Иначе
ПараметрыОтбора = Неопределено;
КонецЕсли;
Колонки = "Номенклатура,Характеристика,ВидРабот,Упаковка,КоличествоУпаковок,Количество,Цена,Склад,Подразделение,
|Спецификация,НаправлениеВыпуска,СтатьяКалькуляции,Исполнитель";
ТаблицаСтрок = РаботаСТабличнымиЧастями.СтрокиИзБуфераОбмена(ПараметрыОтбора, Колонки);
Если Не ЗначениеЗаполнено(ТаблицаСтрок) Тогда
Возврат;
КонецЕсли;
ТаблицаОбъекта = Объект[ИмяТЧ];
МассивСтрок = Новый Массив;
ОбрабатываемыеСтроки = Новый Массив;
Для Каждого СтрокаТовара Из ТаблицаСтрок Цикл
ТекущаяСтрока = ТаблицаОбъекта.Добавить();
ЗаполнитьЗначенияСвойств(ТекущаяСтрока, СтрокаТовара);
МассивСтрок.Добавить(ТекущаяСтрока.ПолучитьИдентификатор());
ОбрабатываемыеСтроки.Добавить(ТекущаяСтрока);
КонецЦикла;
СтруктураДействий = Новый Структура;
Если ИмяТЧ = "ВыходныеИзделия"
ИЛИ ИмяТЧ = "ПобочныеИзделия"
ИЛИ ИмяТЧ = "МатериалыИРаботы" Тогда
ДобавитьВСтруктуруДействияПриИзмененииНоменклатуры(ИмяТЧ, ЭтотОбъект, СтруктураДействий, Истина, ИмяТЧ = "МатериалыИРаботы");
ДобавитьВСтруктуруДействияПоЦеховойКладовой(ИмяТЧ, СтруктураДействий, Истина, ИмяТЧ = "МатериалыИРаботы");
КонецЕсли;
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
ТаблицаОбъекта,
КэшированныеЗначения);
Если ИмяТЧ = "ВыходныеИзделия"
Или ИмяТЧ = "ПобочныеИзделия" Тогда
Если ИмяТЧ = "ВыходныеИзделия" Тогда
ПутьКТЧ = "Объект.ВыходныеИзделия";
Иначе
ПутьКТЧ = "Объект.ПобочныеИзделия";
КонецЕсли;
Для Каждого ТекущаяСтрока Из ОбрабатываемыеСтроки Цикл
ДоходыИРасходыКлиентСервер.ПриДобавленииСтрокиВТаблицу(ЭтотОбъект, ТекущаяСтрока, ПутьКТЧ);
Если ИмяТЧ = "ВыходныеИзделия" Тогда
ДобавитьИзменитьГруппуЗатрат(ТекущаяСтрока);
КонецЕсли;
КонецЦикла;
КонецЕсли;
ПослеИзмененияСтрокТЧПрограммноНаСервере(ИмяТЧ, МассивСтрок, СтруктураДействий);
КонецПроцедуры
&НаСервере
Процедура УстановитьДоступностьКомандБуфераОбмена()
ДоступностьКоманд = РаботаСТабличнымиЧастями.ЕстьСтрокиВБуфереОбмена();
Элементы.ВыходныеИзделияВставитьСтроки.Доступность = ДоступностьКоманд;
Элементы.ВыходныеИзделияКонтекстноеМенюВставитьСтроки.Доступность = ДоступностьКоманд;
Элементы.ПобочныеИзделияВставитьСтроки.Доступность = ДоступностьКоманд;
Элементы.ПобочныеИзделияКонтекстноеМенюВставитьСтроки.Доступность = ДоступностьКоманд;
Элементы.МатериалыИРаботыВставитьСтроки.Доступность = ДоступностьКоманд;
Элементы.МатериалыИРаботыКонтекстноеМенюВставитьСтроки.Доступность = ДоступностьКоманд;
Элементы.ТрудозатратыВставитьСтроки.Доступность = ДоступностьКоманд;
Элементы.ТрудозатратыКонтекстноеМенюВставитьСтроки.Доступность = ДоступностьКоманд;
КонецПроцедуры
&НаКлиенте
Процедура УстановитьДоступностьКомандБуфераОбменаНаКлиенте()
МассивЭлементов = Новый Массив();
МассивЭлементов.Добавить("ВыходныеИзделияВставитьСтроки");
МассивЭлементов.Добавить("ВыходныеИзделияКонтекстноеМенюВставитьСтроки");
МассивЭлементов.Добавить("ПобочныеИзделияВставитьСтроки");
МассивЭлементов.Добавить("ПобочныеИзделияКонтекстноеМенюВставитьСтроки");
МассивЭлементов.Добавить("МатериалыИРаботыВставитьСтроки");
МассивЭлементов.Добавить("МатериалыИРаботыКонтекстноеМенюВставитьСтроки");
МассивЭлементов.Добавить("ТрудозатратыВставитьСтроки");
МассивЭлементов.Добавить("ТрудозатратыКонтекстноеМенюВставитьСтроки");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, МассивЭлементов, "Доступность", Истина);
КонецПроцедуры
#КонецОбласти
#Область ДействияПриИзмененииСтрокТаблиц
&НаСервере
Процедура ПослеИзмененияСтрокТЧПрограммноНаСервере(ИмяТЧ,
МассивИдентификаторовСтрок = Неопределено,
СтруктураРанееВыполненныхДействий = Неопределено)
МассивСтрок = Неопределено;
МассивГруппировок = Новый Массив;
КоллекцияСтрок = Объект[ИмяТЧ];
Если МассивИдентификаторовСтрок <> Неопределено Тогда
МассивСтрок = Новый Массив;
Для каждого ИдентификаторСтроки Из МассивИдентификаторовСтрок Цикл
ДанныеСтроки = Объект[ИмяТЧ].НайтиПоИдентификатору(ИдентификаторСтроки);
МассивСтрок.Добавить(ДанныеСтроки);
Если ИмяТЧ = "ВыходныеИзделия" Тогда
МассивГруппировок.Добавить(ДанныеСтроки.НомерГруппыЗатрат);
КонецЕсли;
КонецЦикла;
КоллекцияСтрок = МассивСтрок;
КонецЕсли;
Если СтруктураРанееВыполненныхДействий = Неопределено Тогда
СтруктураРанееВыполненныхДействий = Новый Структура;
КонецЕсли;
Если (ИмяТЧ = "ВыходныеИзделия"
ИЛИ ИмяТЧ = "ПобочныеИзделия"
ИЛИ ИмяТЧ = "МатериалыИРаботы")
И НЕ СтруктураРанееВыполненныхДействий.Свойство("ПроверитьСериюРассчитатьСтатус") Тогда
ЗаполнитьСтатусыУказанияСерийСервер(ИмяТЧ, МассивСтрок, МассивСтрок);
КонецЕсли;
Если ИмяТЧ = "ВыходныеИзделия"
И (Не Объект.Исправление
Или Не Объект.ИсправлениеСохраняетПартииПроизводства) Тогда
ОбновитьСписокГруппЗатрат();
КонецЕсли;
Если ИмяТЧ = "ВыходныеИзделия" Тогда
РассчитатьПроцентРаспределенияЗатратНаВыходныеИзделия(МассивГруппировок);
КонецЕсли;
Если ИмяТЧ = "ВыходныеИзделия"
Или ИмяТЧ = "ПобочныеИзделия" Тогда
НастройкаСчетовУчетаСервер.ОбновитьПредставлениеНастройки(ЭтотОбъект, "Объект." + ИмяТЧ, МассивИдентификаторовСтрок);
КонецЕсли;
Если ИмяТЧ = "ВыходныеИзделия"
И Объект.Исправление
И Объект.ИсправлениеСохраняетПартииПроизводства
Или ИмяТЧ = "ПобочныеИзделия"
Или ИмяТЧ = "МатериалыИРаботы"
Или ИмяТЧ = "Трудозатраты" Тогда
УстановитьНомерГруппыЗатратПоУмолчаниюНаСервере(ИмяТЧ, КоллекцияСтрок);
Если ИмяТЧ = "Трудозатраты" Тогда
ЗаполнитьПодразделениеПоУмолчаниюВКоллекции(КоллекцияСтрок);
ЗаполнитьТипИсполнителяРабот(КоллекцияСтрок);
КонецЕсли;
КонецЕсли;
УстановитьЗаголовкиГруппПродукции(ЭтотОбъект, ИмяТЧ);
Если ИмяТЧ = "МатериалыИРаботы" Тогда
СобытияФорм.ПриИзмененииЭлемента(ЭтотОбъект, "Сырье");
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьВСтруктуруДействияПриИзмененииНоменклатуры(
ИмяТЧ, Форма, СтруктураДействий, ПересчитатьКоличествоЕдиниц = Ложь, ЗаполнитьПодразделение = Ложь)
Объект = Форма.Объект;
СтруктураДействий.Вставить("ПроверитьХарактеристикуПоВладельцу");
СтруктураДействий.Вставить("ПроверитьЗаполнитьУпаковкуПоВладельцу");
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействий.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются",
Новый Структура("Номенклатура", "ХарактеристикиИспользуются"));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул",
Новый Структура("Номенклатура", "Артикул"));
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры",
Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("НоменклатураПриИзмененииПереопределяемый", Новый Структура("ИмяФормы, ИмяТабличнойЧасти",
Форма.ИмяФормы, ИмяТЧ));
Если ИмяТЧ = "ВыходныеИзделия" Тогда
СтруктураДействий.Вставить("ПроверитьЗаполнитьДолюСтоимости", Форма.ПараметрыРаспределенияЗатрат);
КонецЕсли;
Если ИмяТЧ = "ВыходныеИзделия"
Или ИмяТЧ = "ПобочныеИзделия" Тогда
Если (ИмяТЧ = "ВыходныеИзделия" И Форма.ИспользоватьПлановуюСтоимость)
Или Не ИмяТЧ = "ВыходныеИзделия" Тогда
СтруктураПараметров = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияЦеныВСтрокеТЧ(Объект);
СтруктураПараметров.Вставить("ВидЦены", Объект.ВидЦены);
СтруктураДействий.Вставить("ЗаполнитьЦенуПродажи", СтруктураПараметров);
СтруктураДействий.Вставить("ПересчитатьСумму", "Количество");
КонецЕсли;
КонецЕсли;
Если ИмяТЧ = "МатериалыИРаботы" Тогда
ПакетнаяОбработкаТабличнойЧастиКлиентСерверЛокализация.ДополнитьСтруктуруДействийПриИзмененииЭлемента(
Форма, "Номенклатура", СтруктураДействий);
КонецЕсли;
ДобавитьВСтруктуруДействияПоНаправлениюВыпуска(ИмяТЧ, Форма, СтруктураДействий);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(ИмяТЧ, Форма, СтруктураДействий)
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц", ПроизводствоКлиентСервер.ПараметрыПересчетаКоличестваЕдиниц());
Если ИмяТЧ = "ВыходныеИзделия" Тогда
СтруктураДействий.Вставить("ПересчитатьДолюСтоимости", Форма.ПараметрыРаспределенияЗатрат);
КонецЕсли;
Если ИмяТЧ = "ПобочныеИзделия"
Или (ИмяТЧ = "ВыходныеИзделия" И Форма.ИспользоватьПлановуюСтоимость) Тогда
СтруктураДействий.Вставить("ПересчитатьСумму");
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьВСтруктуруДействияПоСериям(СтруктураДействий, Склад, ПараметрыУказанияСерий)
ПараметрыПроверкиСерий = Новый Структура("Склад, ПараметрыУказанияСерий", Склад, ПараметрыУказанияСерий);
СтруктураДействий.Вставить("ПроверитьСериюРассчитатьСтатус", ПараметрыПроверкиСерий);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьВСтруктуруДействияПоНаправлениюВыпуска(ИмяТЧ, Форма, СтруктураДействий)
Если ИмяТЧ <> "ВыходныеИзделия" И ИмяТЧ <> "ПобочныеИзделия" Тогда
Возврат;
КонецЕсли;
СтруктураДействий.Вставить("ЗаполнитьНаправлениеВыпуска", Новый Структура);
СтруктураДействий.ЗаполнитьНаправлениеВыпуска.Вставить("ИспользоватьСписаниеНаРасходы");
ЗаполнитьЗначенияСвойств(СтруктураДействий.ЗаполнитьНаправлениеВыпуска, Форма);
ДобавитьВСтруктуруДействияПоПолучателю(ИмяТЧ, Форма, СтруктураДействий);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьВСтруктуруДействияПоПолучателю(ИмяТЧ, Форма, СтруктураДействий)
Если ИмяТЧ <> "ВыходныеИзделия" И ИмяТЧ <> "ПобочныеИзделия" Тогда
Возврат;
КонецЕсли;
СтруктураДействий.Вставить("ЗаполнитьПолучателяПоНаправлениюВыпуска", Новый Структура);
СтруктураДействий.ЗаполнитьПолучателяПоНаправлениюВыпуска.Вставить("Подразделение");
СтруктураДействий.ЗаполнитьПолучателяПоНаправлениюВыпуска.Вставить("ИспользоватьНесколькоСкладов");
СтруктураДействий.ЗаполнитьПолучателяПоНаправлениюВыпуска.Вставить("СкладПоУмолчанию");
ЗаполнитьЗначенияСвойств(СтруктураДействий.ЗаполнитьПолучателяПоНаправлениюВыпуска, Форма.Объект, "Подразделение");
ЗаполнитьЗначенияСвойств(СтруктураДействий.ЗаполнитьПолучателяПоНаправлениюВыпуска, Форма,
"ИспользоватьНесколькоСкладов, СкладПоУмолчанию");
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьВСтруктуруДействияПоСкладу(ИмяТЧ, Форма, СтруктураДействий)
Если ИмяТЧ <> "МатериалыИРаботы" Тогда
Возврат;
КонецЕсли;
ПроизводствоКлиентСервер.ДобавитьВСтруктуруДействияПроверитьЗаполнитьСкладПроизводства(Форма.Объект.Подразделение, СтруктураДействий);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьВСтруктуруДействияПоЦеховойКладовой(
ИмяТЧ, СтруктураДействий, ПересчитатьКоличествоЕдиниц = Ложь, ЗаполнитьПодразделение = Ложь)
Если ИмяТЧ = "МатериалыИРаботы" Тогда
ИмяПоляСклад = "Склад";
ИначеЕсли ИмяТЧ = "ВыходныеИзделия" Или ИмяТЧ = "ПобочныеИзделия" Тогда
ИмяПоляСклад = "Получатель";
Иначе
Возврат;
КонецЕсли;
СтруктураДействий.Вставить("ЗаполнитьПризнакЦеховаяКладовая", Новый Структура);
СтруктураДействий.ЗаполнитьПризнакЦеховаяКладовая.Вставить("ИмяПоляСклад", ИмяПоляСклад);
СтруктураДействий.ЗаполнитьПризнакЦеховаяКладовая.Вставить("ЗаполнитьПодразделение", ЗаполнитьПодразделение);
Если ПересчитатьКоличествоЕдиниц Тогда
СтруктураДействий.Вставить(
"ПересчитатьКоличествоЕдиниц", ПроизводствоКлиентСервер.ПараметрыПересчетаКоличестваЕдиниц());
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьВСтруктуруДействияПерезаполнитьСтатьюИАналитику(ИмяТЧ, Форма, СтруктураДействий, ТекущаяСтрока)
Если Не ИмяТЧ = "ВыходныеИзделия"
И Не ИмяТЧ = "ПобочныеИзделия" Тогда
Возврат;
КонецЕсли;
Объект = Форма.Объект;
Если Не ТекущаяСтрока = Неопределено
И ЗначениеЗаполнено(ТекущаяСтрока.НаправлениеВыпуска)
И Не ТекущаяСтрока.НаправлениеВыпуска = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ВыпускПродукцииНаСклад") Тогда
ДоходыИРасходыКлиентСервер.ВставитьДействиеОчиститьСтатьюИАналитикуРасходов(
СтруктураДействий,
Форма,
"Объект." + ИмяТЧ,
"Получатель");
ДоходыИРасходыКлиентСервер.ВставитьДействиеЗаполнитьСтатьюАналитикуРасходовНоменклатуры(
СтруктураДействий,
Форма,
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.СписаниеТоваровПоТребованию"),
Объект.Организация,
Объект.Подразделение,
"Объект." + ИмяТЧ,
"Получатель");
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ГруппировкаЗатрат
&НаСервере
Процедура ДобавитьИзменитьГруппуЗатрат(Строка)
Если Объект.Исправление
И Объект.ИсправлениеСохраняетПартииПроизводства Тогда
Возврат;
КонецЕсли;
СтруктураПоиска = СтруктураПоискаГруппыЗатрат(Строка);
ПредставлениеГруппыЗатрат = ПредставлениеГруппыЗатрат(СтруктураПоиска, Объект.ГруппировкаЗатрат);
НомерГруппыДоИзменения = Строка.НомерГруппыЗатрат;
ОписаниеГруппыЗатрат = ОписаниеГруппыЗатрат(СтруктураПоиска);
НомерГруппы = ОписаниеГруппыЗатрат.НомерГруппыЗатрат;
НаправлениеДеятельности = ОписаниеГруппыЗатрат.НаправлениеДеятельности;
Если НомерГруппы = 0 Тогда
НоваяГруппаЗатрат = СписокГрупп.Добавить();
ЗаполнитьЗначенияСвойств(НоваяГруппаЗатрат, СтруктураПоиска);
МаксимальныйНомерГруппыЗатрат = МаксимальныйНомерГруппыЗатрат + 1;
НоваяГруппаЗатрат.НомерГруппыЗатрат = МаксимальныйНомерГруппыЗатрат;
НоваяГруппаЗатрат.ГруппаЗатрат = ПредставлениеГруппыЗатрат;
Если Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВПроизводствеБезЗаказа.ПоПродукцииИНазначениям
ИЛИ Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВПроизводствеБезЗаказа.ПоПродукцииИНазначениямБезСерий
ИЛИ Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВПроизводствеБезЗаказа.ПоСпецификациямИНазначениям Тогда
НаправлениеДеятельности = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(НоваяГруппаЗатрат.Назначение, "НаправлениеДеятельности");
НоваяГруппаЗатрат.НаправлениеДеятельности = НаправлениеДеятельности;
КонецЕсли;
НомерГруппы = НоваяГруппаЗатрат.НомерГруппыЗатрат;
КонецЕсли;
ОписаниеГруппыЗатрат = Новый Структура;
ОписаниеГруппыЗатрат.Вставить("НомерГруппыЗатрат", НомерГруппы);
ОписаниеГруппыЗатрат.Вставить("ГруппаЗатрат", ПредставлениеГруппыЗатрат);
ОписаниеГруппыЗатрат.Вставить("НаправлениеДеятельности", НаправлениеДеятельности);
Если Не НомерГруппыДоИзменения = НомерГруппы Тогда
Если КоличествоИдентифицирующихСтрок(НомерГруппыДоИзменения) = 1 Тогда
Если Не НомерГруппыДоИзменения = 0
Или СписокГрупп.Количество() = 1 Тогда
ОбновитьСвязиСГруппойЗатрат(НомерГруппыДоИзменения, ОписаниеГруппыЗатрат);
КонецЕсли;
СтруктураПоиска = Новый Структура("НомерГруппыЗатрат", НомерГруппыДоИзменения);
ГруппыЗатрат = СписокГрупп.НайтиСтроки(СтруктураПоиска);
Для Каждого ТекГруппа Из ГруппыЗатрат Цикл
СписокГрупп.Удалить(ТекГруппа);
КонецЦикла;
КонецЕсли;
КонецЕсли;
Строка.НомерГруппыЗатрат = НомерГруппы;
Строка.ГруппаЗатрат = ПредставлениеГруппыЗатрат;
КонецПроцедуры
&НаСервере
Процедура УдалитьГруппуЗатрат(ИдентификаторСтроки)
Строка = Объект.ВыходныеИзделия.НайтиПоИдентификатору(ИдентификаторСтроки);
Если КоличествоИдентифицирующихСтрок(Строка.НомерГруппыЗатрат) = 1 Тогда
ОписаниеГруппыЗатрат = Новый Структура;
ОписаниеГруппыЗатрат.Вставить("НомерГруппыЗатрат", 0);
ОписаниеГруппыЗатрат.Вставить("ГруппаЗатрат", "");
ОписаниеГруппыЗатрат.Вставить("НаправлениеДеятельности", Справочники.НаправленияДеятельности.ПустаяСсылка());
ОбновитьСвязиСГруппойЗатрат(Строка.НомерГруппыЗатрат, ОписаниеГруппыЗатрат);
СтруктураПоиска = Новый Структура("НомерГруппыЗатрат", Строка.НомерГруппыЗатрат);
ГруппыЗатрат = СписокГрупп.НайтиСтроки(СтруктураПоиска);
Для Каждого ТекГруппа Из ГруппыЗатрат Цикл
СписокГрупп.Удалить(ТекГруппа);
КонецЦикла;
Иначе
Возврат;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УстановитьНомерГруппыЗатратПоУмолчанию(ИмяТЧ)
Если СписокГрупп.Количество() = 1 Тогда
ТекущиеДанные = Элементы[ИмяТЧ].ТекущиеДанные;
УстановитьНомерГруппыЗатратПоУмолчаниюНаКлиентеНаСервереБезКонтекста(ИмяТЧ, ТекущиеДанные, СписокГрупп[0]);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьНомерГруппыЗатратПоУмолчаниюНаСервере(ИмяТЧ, МассивСтрок)
Если СписокГрупп.Количество() = 1 Тогда
Для Каждого ТекущиеДанные Из МассивСтрок Цикл
УстановитьНомерГруппыЗатратПоУмолчаниюНаКлиентеНаСервереБезКонтекста(ИмяТЧ, ТекущиеДанные, СписокГрупп[0]);
КонецЦикла;
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьНомерГруппыЗатратПоУмолчаниюНаКлиентеНаСервереБезКонтекста(ИмяТЧ, ТекущиеДанные, ОписаниеГруппыЗатрат)
Если Не ТекущиеДанные = Неопределено
И ТекущиеДанные.НомерГруппыЗатрат = 0 Тогда
ТекущиеДанные.ГруппаЗатрат = ОписаниеГруппыЗатрат.ГруппаЗатрат;
ТекущиеДанные.НомерГруппыЗатрат = ОписаниеГруппыЗатрат.НомерГруппыЗатрат;
Если Не ИмяТЧ = "Трудозатраты" Тогда
ТекущиеДанные.НаправлениеДеятельности = ОписаниеГруппыЗатрат.НаправлениеДеятельности;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбновитьСвязиСГруппойЗатрат(ТекущийНомерГруппы, ОписаниеГруппыЗатрат)
НовоеПредставлениеГруппы = ОписаниеГруппыЗатрат.ГруппаЗатрат;
НовыйНомерГруппы = ОписаниеГруппыЗатрат.НомерГруппыЗатрат;
НовоеНаправлениеДеятельности = ОписаниеГруппыЗатрат.НаправлениеДеятельности;
СтруктураПоиска = Новый Структура("НомерГруппыЗатрат", ТекущийНомерГруппы);
Строки = Объект.ПобочныеИзделия.НайтиСтроки(СтруктураПоиска);
Для Каждого ТекСтрока Из Строки Цикл
ТекСтрока.ГруппаЗатрат = НовоеПредставлениеГруппы;
ТекСтрока.НомерГруппыЗатрат = НовыйНомерГруппы;
ТекСтрока.НаправлениеДеятельности = НовоеНаправлениеДеятельности;
КонецЦикла;
Строки = Объект.МатериалыИРаботы.НайтиСтроки(СтруктураПоиска);
Для Каждого ТекСтрока Из Строки Цикл
ТекСтрока.ГруппаЗатрат = НовоеПредставлениеГруппы;
ТекСтрока.НомерГруппыЗатрат = НовыйНомерГруппы;
ТекСтрока.НаправлениеДеятельности = НовоеНаправлениеДеятельности;
КонецЦикла;
Строки = Объект.Трудозатраты.НайтиСтроки(СтруктураПоиска);
Для Каждого ТекСтрока Из Строки Цикл
ТекСтрока.ГруппаЗатрат = НовоеПредставлениеГруппы;
ТекСтрока.НомерГруппыЗатрат = НовыйНомерГруппы;
КонецЦикла;
КонецПроцедуры
&НаСервере
Функция ОписаниеГруппыЗатрат(СтруктураПоиска)
ОписаниеГруппыЗатрат = Новый Структура;
ОписаниеГруппыЗатрат.Вставить("НомерГруппыЗатрат", 0);
ОписаниеГруппыЗатрат.Вставить("ГруппаЗатрат", "");
ОписаниеГруппыЗатрат.Вставить("НаправлениеДеятельности", Справочники.НаправленияДеятельности.ПустаяСсылка());
ГруппаЗатрат = СписокГрупп.НайтиСтроки(СтруктураПоиска);
Если Не ГруппаЗатрат.Количество() = 0 Тогда
ЗаполнитьЗначенияСвойств(ОписаниеГруппыЗатрат, ГруппаЗатрат[0]);
КонецЕсли;
Возврат ОписаниеГруппыЗатрат;
КонецФункции
&НаСервере
Функция СтруктураПоискаГруппыЗатрат(Строка)
СписокПолей = Документы.ПроизводствоБезЗаказа.ПереченьПолейГруппыЗатрат(Объект.ГруппировкаЗатрат);
СтруктураПоиска = Документы.ПроизводствоБезЗаказа.СтруктураПоискаГруппыЗатрат(СписокПолей);
Если Не Строка = Неопределено Тогда
ЗаполнитьЗначенияСвойств(СтруктураПоиска, Строка);
КонецЕсли;
Возврат СтруктураПоиска;
КонецФункции
&НаСервере
Функция КоличествоИдентифицирующихСтрок(НомерГруппы)
СтруктураПоиска = Новый Структура("НомерГруппыЗатрат", НомерГруппы);
Строки = Объект.ВыходныеИзделия.НайтиСтроки(СтруктураПоиска);
Возврат Строки.Количество();
КонецФункции
&НаСервере
Процедура ОбновитьСписокГруппЗатрат()
СписокПолей = Документы.ПроизводствоБезЗаказа.ПереченьПолейГруппыЗатрат(Объект.ГруппировкаЗатрат);
ТекстПоляВыбораВТ = Документы.ПроизводствоБезЗаказа.ТекстЗапросаПоПолямГруппыЗатрат("ТаблицаДанных", СписокПолей);
ТекстПоляВыбора = ТекстПоляВыбораВТ;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТаблицаДанных.НомерГруппыЗатрат
| ,&ТекстПоляВыбораВТ
|ПОМЕСТИТЬ ВТ_ГруппыЗатрат
|ИЗ
| &ТаблицаДанных КАК ТаблицаДанных
|ГДЕ
| &Отбор
|;
|
|
|ВЫБРАТЬ
| ТаблицаДанных.НомерГруппыЗатрат
| ,&ТекстПоляВыбора
|ИЗ
| ВТ_ГруппыЗатрат КАК ТаблицаДанных
|;
|
|
|ВЫБРАТЬ
| МАКСИМУМ(ВТ_ГруппыЗатрат.НомерГруппыЗатрат) КАК НомерГруппыЗатрат
|ИЗ
| ВТ_ГруппыЗатрат КАК ВТ_ГруппыЗатрат
|";
Если Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВПроизводствеБезЗаказа.ПоПродукцииИНазначениям
ИЛИ Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВПроизводствеБезЗаказа.ПоПродукцииИНазначениямБезСерий
ИЛИ Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВПроизводствеБезЗаказа.ПоСпецификациямИНазначениям Тогда
ТекстПоляВыбора = ТекстПоляВыбора +
", ВЫРАЗИТЬ(ТаблицаДанных.Назначение КАК Справочник.Назначения).НаправлениеДеятельности КАК НаправлениеДеятельности";
КонецЕсли;
Если Объект.Исправление
И Объект.ИсправлениеСохраняетПартииПроизводства Тогда
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ТаблицаДанных", "Документ.ПроизводствоБезЗаказа.ВыходныеИзделия");
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&Отбор", "ТаблицаДанных.Ссылка = &Ссылка");
Запрос.УстановитьПараметр("Ссылка", Объект.ИсправляемыйДокумент);
Иначе
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&Отбор", "ИСТИНА");
Запрос.УстановитьПараметр("ТаблицаДанных", Объект.ВыходныеИзделия.Выгрузить());
КонецЕсли;
Запрос.Текст = СтрЗаменить(Запрос.Текст, ",&ТекстПоляВыбораВТ", ТекстПоляВыбораВТ);
Запрос.Текст = СтрЗаменить(Запрос.Текст, ",&ТекстПоляВыбора", ТекстПоляВыбора);
Результат = Запрос.ВыполнитьПакет();
СписокГрупп.Загрузить(Результат[1].Выгрузить());
Если Не Результат[2].Пустой() Тогда
Выборка = Результат[2].Выбрать();
Выборка.Следующий();
МаксимальныйНомерГруппыЗатрат = Выборка.НомерГруппыЗатрат;
КонецЕсли;
ОбновитьПредставлениеГруппЗатрат();
КонецПроцедуры
&НаСервере
Процедура ОбновитьПредставлениеГруппЗатрат()
СтруктураПоиска = Новый Структура("НомерГруппыЗатрат");
Для Каждого ТекГруппа Из СписокГрупп Цикл
ТекГруппа.ГруппаЗатрат = ПредставлениеГруппыЗатрат(ТекГруппа, Объект.ГруппировкаЗатрат);
ЗаполнитьЗначенияСвойств(СтруктураПоиска, ТекГруппа);
Строки = Объект.ВыходныеИзделия.НайтиСтроки(СтруктураПоиска);
Для Каждого ТекСтрока Из Строки Цикл
ТекСтрока.ГруппаЗатрат = ТекГруппа.ГруппаЗатрат;
Если Объект.Исправление
И Объект.ИсправлениеСохраняетПартииПроизводства Тогда
ТекСтрока.НаправлениеДеятельности = ТекГруппа.НаправлениеДеятельности;
КонецЕсли;
КонецЦикла;
Строки = Объект.ПобочныеИзделия.НайтиСтроки(СтруктураПоиска);
Для Каждого ТекСтрока Из Строки Цикл
ТекСтрока.ГруппаЗатрат = ТекГруппа.ГруппаЗатрат;
ТекСтрока.НаправлениеДеятельности = ТекГруппа.НаправлениеДеятельности;
КонецЦикла;
Строки = Объект.МатериалыИРаботы.НайтиСтроки(СтруктураПоиска);
Для Каждого ТекСтрока Из Строки Цикл
ТекСтрока.ГруппаЗатрат = ТекГруппа.ГруппаЗатрат;
ТекСтрока.НаправлениеДеятельности = ТекГруппа.НаправлениеДеятельности;
КонецЦикла;
Строки = Объект.Трудозатраты.НайтиСтроки(СтруктураПоиска);
Для Каждого ТекСтрока Из Строки Цикл
ТекСтрока.ГруппаЗатрат = ТекГруппа.ГруппаЗатрат;
КонецЦикла;
КонецЦикла;
КонецПроцедуры
&НаСервере
Функция ПредставлениеГруппыЗатрат(Группа, ГруппировкаЗатрат)
ПредставлениеГруппы = "";
ПоляГруппыЗатрат = Документы.ПроизводствоБезЗаказа.ПереченьПолейГруппыЗатрат(Объект.ГруппировкаЗатрат);
Для Каждого ТекПоле Из ПоляГруппыЗатрат Цикл
ТекПредставление = Строка(Группа[ТекПоле.Значение]);
Если ЗначениеЗаполнено(ТекПредставление) Тогда
ПредставлениеГруппы = ПредставлениеГруппы + ТекПредставление + " / ";
КонецЕсли;
КонецЦикла;
Если ЗначениеЗаполнено(ПредставлениеГруппы) Тогда
ПредставлениеГруппы = Лев(ПредставлениеГруппы, СтрДлина(ПредставлениеГруппы) - 3);
Иначе
ПредставлениеГруппы = НСтр("ru = '<группа с пустыми значениями>'");
КонецЕсли;
Возврат ПредставлениеГруппы;
КонецФункции
&НаСервере
Функция АдресХранилищаГруппЗатрат()
Возврат ПоместитьВоВременноеХранилище(СписокГрупп.Выгрузить(), ЭтаФорма.УникальныйИдентификатор);
КонецФункции
#КонецОбласти
#Область Заполнение
&НаСервере
Функция ЗаполнитьЦеныПоВидуЦенСервер(ИмяТЧ = "")
Отказ = Ложь;
СтрокиКПерезазполнению = Неопределено;
Если Не ПустаяСтрока(ИмяТЧ) Тогда
ВыделенныеСтроки = Элементы[ИмяТЧ].ВыделенныеСтроки;
Если ВыделенныеСтроки.Количество() = 0 Тогда
Если ИмяТЧ = "ВыходныеИзделия" Тогда
ТекстСообщения = НСтр("ru='В таблице ""Выходные изделия"" не выбрано ни одной строки.
|Цены не могут быть заполнены.'");
Иначе
ТекстСообщения = НСтр("ru='В таблице ""Побочные изделия"" не выбрано ни одной строки.
|Цены не могут быть заполнены.'");
КонецЕсли;
ОбщегоНазначения.СообщитьПользователю(ТекстСообщения,, ИмяТЧ, "Объект", Отказ);
КонецЕсли;
Если Не ЗначениеЗаполнено(Объект.ВидЦены) Тогда
ТекстСообщения = НСтр("ru='Не заполнено поле ""Вид цены"".'");
ОбщегоНазначения.СообщитьПользователю(ТекстСообщения,, "ВидЦены", "Объект", Отказ);
КонецЕсли;
СтрокиКПерезазполнению = Новый Массив;
Для Каждого ИдентификаторСтроки Из Элементы[ИмяТЧ].ВыделенныеСтроки Цикл
СтрокиКПерезазполнению.Добавить(Объект[ИмяТЧ].НайтиПоИдентификатору(ИдентификаторСтроки));
КонецЦикла;
КонецЕсли;
Если Отказ Тогда
Возврат Ложь;
КонецЕсли;
ТаблицыКПересчету = Новый Массив;
ТаблицыКПересчету.Добавить("ПобочныеИзделия");
Если ИспользоватьПлановуюСтоимость Тогда
ТаблицыКПересчету.Добавить("ВыходныеИзделия");
КонецЕсли;
ПараметрыЗаполнения = Новый Структура;
ПараметрыЗаполнения.Вставить("Дата", Объект.Дата);
ПараметрыЗаполнения.Вставить("Организация", Объект.Организация);
ПараметрыЗаполнения.Вставить("Валюта", Объект.Валюта);
ПараметрыЗаполнения.Вставить("ВидЦены", Объект.ВидЦены);
ПараметрыЗаполнения.Вставить("ПоляЗаполнения", "Цена");
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСумму", "КоличествоУпаковок");
ЦеныРассчитаны = Истина;
Для Каждого ТаблицаКПересчету Из ТаблицыКПересчету Цикл
Если Не ПустаяСтрока(ИмяТЧ) И Не ТаблицаКПересчету = ИмяТЧ Тогда
Продолжить;
КонецЕсли;
ЦеныРассчитаны = Мин(ЦеныРассчитаны,
ЦеныПредприятияЗаполнениеСервер.ЗаполнитьЦены(
Объект[ТаблицаКПересчету],
СтрокиКПерезазполнению,
ПараметрыЗаполнения,
СтруктураДействий));
КонецЦикла;
Возврат ЦеныРассчитаны;
КонецФункции
&НаКлиенте
Процедура ЗаполнитьСписокВыбораНаправлениеВыпуска(ИмяТЧ, ТекущиеДанные)
Если ИмяТЧ = "ВыходныеИзделия" Тогда
ИмяПоляНаправлениеВыпуска = "ВыходныеИзделияНаправлениеВыпуска";
Иначе
ИмяПоляНаправлениеВыпуска = "ПобочныеИзделияНаправлениеВыпуска";
КонецЕсли;
СписокВыбораЭлемента = Элементы[ИмяПоляНаправлениеВыпуска].СписокВыбора;
СписокВыбораЭлемента.Очистить();
Если ТекущиеДанные.ТипНоменклатуры = ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Работа") Тогда
СписокВыбораЭлемента.Добавить(ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ВыпускПродукцииВПодразделение"),
НСтр("ru = 'В подразделение'"));
Иначе
СписокВыбораЭлемента.Добавить(ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ВыпускПродукцииНаСклад"),
НСтр("ru = 'На склад'"));
КонецЕсли;
Если ИспользоватьСписаниеНаРасходы Тогда
СписокВыбораЭлемента.Добавить(ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.СписаниеТоваровПоТребованию"),
НСтр("ru = 'Списать на расходы'"));
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура МатериалыИРаботыДополнитьОбособленнымиОстаткамиНаСервере(КэшированныеЗначения)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Назначения.Назначение КАК Назначение
|ПОМЕСТИТЬ ТаблицаНазначений
|ИЗ
| &Назначения КАК Назначения
|;
|
|
|ВЫБРАТЬ
| ВЫБОР
| КОГДА ИСТИНА
| ТОГДА ТаблицаНазначений.Назначение
| КОНЕЦ КАК Назначение
|ПОМЕСТИТЬ Назначения
|ИЗ
| ТаблицаНазначений КАК ТаблицаНазначений
|
|
|СГРУППИРОВАТЬ ПО
| ВЫБОР
| КОГДА ИСТИНА
| ТОГДА ТаблицаНазначений.Назначение
| КОНЕЦ
|;
|
|
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| &Организация КАК Организация,
| АналитикаУчетаНоменклатуры.Номенклатура КАК Номенклатура,
| АналитикаУчетаНоменклатуры.Характеристика КАК Характеристика,
| АналитикаУчетаНоменклатуры.Серия КАК Серия,
| ЕСТЬNULL(АналитикаУчетаНоменклатуры.СкладскаяТерритория.Подразделение, ЗНАЧЕНИЕ(Справочник.СтруктураПредприятия.ПустаяСсылка)) КАК Подразделение,
| АналитикаУчетаНоменклатуры.МестоХранения КАК Склад,
| ЕСТЬNULL(АналитикаУчетаНоменклатуры.СкладскаяТерритория.ЦеховаяКладовая, ЛОЖЬ) КАК ЦеховаяКладовая,
| Назначения.Назначение КАК Назначение,
| АналитикаУчетаНоменклатуры.Ссылка КАК КлючАналитики
|ПОМЕСТИТЬ втАналитикаУчетаНоменклатуры
|ИЗ
| Назначения КАК Назначения
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КлючиАналитикиУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры
| ПО (АналитикаУчетаНоменклатуры.Назначение = Назначения.Назначение)
|ГДЕ
| АналитикаУчетаНоменклатуры.СтатьяКалькуляции = ЗНАЧЕНИЕ(Справочник.СтатьиКалькуляции.ПустаяСсылка)
|
|СГРУППИРОВАТЬ ПО
| АналитикаУчетаНоменклатуры.Номенклатура,
| ЕСТЬNULL(АналитикаУчетаНоменклатуры.СкладскаяТерритория.Подразделение, ЗНАЧЕНИЕ(Справочник.СтруктураПредприятия.ПустаяСсылка)),
| АналитикаУчетаНоменклатуры.МестоХранения,
| ЕСТЬNULL(АналитикаУчетаНоменклатуры.СкладскаяТерритория.ЦеховаяКладовая, ЛОЖЬ),
| АналитикаУчетаНоменклатуры.Ссылка,
| АналитикаУчетаНоменклатуры.Характеристика,
| АналитикаУчетаНоменклатуры.Серия,
| Назначения.Назначение
|;
|
|
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| &НомерГруппыЗатрат КАК НомерГруппыЗатрат,
| &ГруппаЗатрат КАК ГруппаЗатрат,
| втАналитикаУчетаНоменклатуры.Подразделение КАК Подразделение,
| втАналитикаУчетаНоменклатуры.Склад КАК Склад,
| втАналитикаУчетаНоменклатуры.ЦеховаяКладовая КАК ЦеховаяКладовая,
| втАналитикаУчетаНоменклатуры.Номенклатура КАК Номенклатура,
| втАналитикаУчетаНоменклатуры.Характеристика КАК Характеристика,
| втАналитикаУчетаНоменклатуры.Серия КАК Серия,
| втАналитикаУчетаНоменклатуры.Назначение КАК Назначение,
| втАналитикаУчетаНоменклатуры.Назначение.НаправлениеДеятельности КАК НаправлениеДеятельности,
| СУММА(ТоварыОрганизаций.КоличествоОстаток) КАК Количество,
| СУММА(ТоварыОрганизаций.КоличествоОстаток) КАК КоличествоУпаковок
|ИЗ
| РегистрНакопления.ТоварыОрганизаций.Остатки(
| ,
| (АналитикаУчетаНоменклатуры, Организация) В
| (ВЫБРАТЬ
| втАналитикаУчетаНоменклатуры.КлючАналитики,
| втАналитикаУчетаНоменклатуры.Организация
| ИЗ
| втАналитикаУчетаНоменклатуры КАК втАналитикаУчетаНоменклатуры)) КАК ТоварыОрганизаций
| ЛЕВОЕ СОЕДИНЕНИЕ втАналитикаУчетаНоменклатуры КАК втАналитикаУчетаНоменклатуры
| ПО (втАналитикаУчетаНоменклатуры.КлючАналитики = ТоварыОрганизаций.АналитикаУчетаНоменклатуры)
|
|СГРУППИРОВАТЬ ПО
| втАналитикаУчетаНоменклатуры.Подразделение,
| втАналитикаУчетаНоменклатуры.Склад,
| втАналитикаУчетаНоменклатуры.ЦеховаяКладовая,
| втАналитикаУчетаНоменклатуры.Серия,
| втАналитикаУчетаНоменклатуры.Номенклатура,
| втАналитикаУчетаНоменклатуры.Характеристика,
| втАналитикаУчетаНоменклатуры.Назначение
|
|ИМЕЮЩИЕ
| СУММА(ТоварыОрганизаций.КоличествоОстаток) > 0
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| &НомерГруппыЗатрат КАК НомерГруппыЗатрат,
| &ГруппаЗатрат КАК ГруппаЗатрат,
| Работы.Подразделение КАК Подразделение,
| НЕОПРЕДЕЛЕНО КАК Склад,
| ЛОЖЬ КАК ЦеховаяКладовая,
| Работы.Номенклатура КАК Номенклатура,
| Работы.Характеристика КАК Характеристика,
| ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка) КАК Серия,
| Работы.Назначение КАК Назначение,
| Работы.Назначение.НаправлениеДеятельности КАК НаправлениеДеятельности,
| СУММА(Работы.КоличествоОстаток) КАК Количество,
| СУММА(Работы.КоличествоОстаток) КАК КоличествоУпаковок
|ИЗ
| РегистрНакопления.МатериалыИРаботыВПроизводстве.Остатки(
| ,
| (Организация, Номенклатура, Характеристика, Назначение) В
| (ВЫБРАТЬ
| втАналитикаУчетаНоменклатуры.Организация,
| втАналитикаУчетаНоменклатуры.Номенклатура,
| втАналитикаУчетаНоменклатуры.Характеристика,
| втАналитикаУчетаНоменклатуры.Назначение
| ИЗ
| втАналитикаУчетаНоменклатуры КАК втАналитикаУчетаНоменклатуры)) КАК Работы
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СпрНоменклатура
| ПО (СпрНоменклатура.Ссылка = Работы.Номенклатура)
|ГДЕ
| СпрНоменклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа)
|
|СГРУППИРОВАТЬ ПО
| Работы.Подразделение,
| Работы.Номенклатура,
| Работы.Характеристика,
| Работы.Назначение
|
|ИМЕЮЩИЕ
| СУММА(Работы.КоличествоОстаток) > 0";
Назначения = Объект.ВыходныеИзделия.Выгрузить(, "Назначение");
Назначения.Свернуть("Назначение");
УдаляемыеСтроки = Назначения.НайтиСтроки(Новый Структура("Назначение", Справочники.Назначения.ПустаяСсылка()));
Для Каждого ТекСтрока Из УдаляемыеСтроки Цикл
Назначения.Удалить(ТекСтрока);
КонецЦикла;
Запрос.УстановитьПараметр("Организация", Объект.Организация);
Запрос.УстановитьПараметр("Назначения", Назначения);
НомерГруппыЗатрат = ?(СписокГрупп.Количество() = 1, СписокГрупп[0].НомерГруппыЗатрат, 0);
ГруппаЗатрат = ?(СписокГрупп.Количество() = 1, СписокГрупп[0].ГруппаЗатрат, "");
Запрос.УстановитьПараметр("НомерГруппыЗатрат", НомерГруппыЗатрат);
Запрос.УстановитьПараметр("ГруппаЗатрат", ГруппаЗатрат);
Выборка = Запрос.Выполнить().Выбрать();
МассивСтрок = Новый Массив;
ОбрабатываемыеСтроки = Новый Массив();
Пока Выборка.Следующий() Цикл
НоваяСтрока = Объект.МатериалыИРаботы.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, Выборка);
МассивСтрок.Добавить(НоваяСтрока.ПолучитьИдентификатор());
ОбрабатываемыеСтроки.Добавить(НоваяСтрока);
КонецЦикла;
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииНоменклатуры("МатериалыИРаботы", ЭтотОбъект, СтруктураДействий, Истина);
ДобавитьВСтруктуруДействияПоСкладу("МатериалыИРаботы", ЭтотОбъект, СтруктураДействий);
ДобавитьВСтруктуруДействияПоЦеховойКладовой("МатериалыИРаботы", СтруктураДействий, Истина);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.МатериалыИРаботы,
КэшированныеЗначения);
ПослеИзмененияСтрокТЧПрограммноНаСервере("МатериалыИРаботы", МассивСтрок, СтруктураДействий);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьСтатьюКалькуляции(ИмяТЧ)
ВыделенныеСтроки = Элементы[ИмяТЧ].ВыделенныеСтроки;
Если ВыделенныеСтроки.Количество() = 0 Тогда
ТекстПредупреждения = НСтр("ru = 'Необходимо выбрать строки, для которых необходимо заполнить статью калькуляции.'");
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстПредупреждения);
Возврат;
КонецЕсли;
ПараметрыОтбора = Новый Структура;
Если ИмяТЧ = "ПобочныеИзделия" Тогда
ПараметрыОтбора.Вставить("ТипЗатрат", ПредопределенноеЗначение("Перечисление.ТипыЗатрат.ВозвратныеОтходы"));
ИначеЕсли ИмяТЧ = "МатериалыИРаботы" Тогда
ПараметрыОтбора.Вставить("ТипЗатрат", ПредопределенноеЗначение("Перечисление.ТипыЗатрат.Материальные"));
ИначеЕсли ИмяТЧ = "Трудозатраты" Тогда
ПараметрыОтбора.Вставить("ТипЗатрат", ПредопределенноеЗначение("Перечисление.ТипыЗатрат.ОплатаТруда"));
КонецЕсли;
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Отбор", ПараметрыОтбора);
ПараметрыФормы.Вставить("МножественныйВыбор", Ложь);
ОписаниеОповещения = Новый ОписаниеОповещения("ЗаполнитьСтатьюКалькуляцииЗавершение", ЭтотОбъект, ИмяТЧ);
ОткрытьФорму("Справочник.СтатьиКалькуляции.ФормаВыбора", ПараметрыФормы,,,,, ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьСтатьюКалькуляцииЗавершение(РезультатЗакрытия, ИмяТЧ) Экспорт
Если РезультатЗакрытия = Неопределено Тогда
Возврат;
КонецЕсли;
ВыделенныеСтроки = Элементы[ИмяТЧ].ВыделенныеСтроки;
ТабличнаяЧасть = Объект[ИмяТЧ];
Для каждого ИдентификаторСтроки Из ВыделенныеСтроки Цикл
ТекущиеДанные = ТабличнаяЧасть.НайтиПоИдентификатору(ИдентификаторСтроки);
ТекущиеДанные.СтатьяКалькуляции = РезультатЗакрытия;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьИсполнителейЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
ВыделенныеСтроки = Элементы.Трудозатраты.ВыделенныеСтроки;
Для Каждого ИдентификаторСтроки Из ВыделенныеСтроки Цикл
ТекущиеДанные = Объект.Трудозатраты.НайтиПоИдентификатору(ИдентификаторСтроки);
ТекущиеДанные.Исполнитель = Результат;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСлужебныеРеквизитыФормы()
ИспользоватьНесколькоСкладов = ПолучитьФункциональнуюОпцию("ИспользоватьНесколькоСкладов");
УстановитьИспользованиеПлановойСтоимости();
ЗаполнитьСкладПоУмолчанию();
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
ПроизводствоСервер.ЗаполнитьПризнакЦеховаяКладоваяВТаблице(Объект.ВыходныеИзделия, "Получатель");
ПроизводствоСервер.ЗаполнитьПризнакЦеховаяКладоваяВТаблице(Объект.ПобочныеИзделия, "Получатель");
ПроизводствоСервер.ЗаполнитьПризнакЦеховаяКладоваяВТаблице(Объект.МатериалыИРаботы, "Склад");
РаботаСТабличнымиЧастями.ИнициализироватьКэшСтрок(Элементы.ВыходныеИзделия);
РаботаСТабличнымиЧастями.ИнициализироватьКэшСтрок(Элементы.МатериалыИРаботы);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСлужебныеРеквизитыПоНоменклатуре()
ПараметрыЗаполненияРеквизитов = Новый Структура;
ПараметрыЗаполненияРеквизитов.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются",
Новый Структура("Номенклатура", "ХарактеристикиИспользуются"));
ПараметрыЗаполненияРеквизитов.Вставить("ЗаполнитьПризнакАртикул",
Новый Структура("Номенклатура", "Артикул"));
ПараметрыЗаполненияРеквизитов.Вставить("ЗаполнитьПризнакТипНоменклатуры",
Новый Структура("Номенклатура", "ТипНоменклатуры"));
НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(Объект.ВыходныеИзделия,
ПараметрыЗаполненияРеквизитов);
НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(Объект.ПобочныеИзделия,
ПараметрыЗаполненияРеквизитов);
ПакетнаяОбработкаТабличнойЧастиКлиентСерверЛокализация.ДополнитьСтруктуруДействийПриИзмененииЭлемента(
ЭтотОбъект, "Номенклатура", ПараметрыЗаполненияРеквизитов);
НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(Объект.МатериалыИРаботы,
ПараметрыЗаполненияРеквизитов);
РассчитатьПроцентРаспределенияЗатратНаВыходныеИзделия();
КонецПроцедуры
&НаСервере
Процедура ДополнитьПоСпецификацииНаСервере(ИмяТЧ)
Запрос = Новый Запрос;
МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
Если ИмяТЧ = "МатериалыИРаботы" Тогда
Запрос.Текст = Документы.ПроизводствоБезЗаказа.ТекстЗапросаМатериалыПоГруппамЗатрат();
ИначеЕсли ИмяТЧ = "ПобочныеИзделия" Тогда
Запрос.Текст = Документы.ПроизводствоБезЗаказа.ТекстЗапросаВозвратныеОтходыПоГруппамЗатрат();
Иначе
Запрос.Текст = Документы.ПроизводствоБезЗаказа.ТекстЗапросаТрудозатратыПоГруппамЗатрат();
КонецЕсли;
Запрос.УстановитьПараметр("Дата", Объект.Дата);
Запрос.УстановитьПараметр("ВидЦены", Объект.ВидЦены);
Запрос.УстановитьПараметр("ЗаполнятьАвтоматически", Истина);
ПоляГруппировки = "НомерГруппыЗатрат, НаправлениеВыпуска, Получатель,
| Номенклатура, Характеристика, Серия,
| Назначение, НаправлениеДеятельности, Спецификация";
ПоляСуммирования = "Количество";
ТаблицаПродукции = Объект.ВыходныеИзделия.Выгрузить(, ПоляГруппировки + ", " + ПоляСуммирования);
ТаблицаПродукции.Свернуть(ПоляГруппировки, ПоляСуммирования);
ТаблицаПродукции.Колонки.Добавить("Организация", Новый ОписаниеТипов("СправочникСсылка.Организации"));
ТаблицаПродукции.Колонки.Добавить("ГруппировкаЗатрат", Новый ОписаниеТипов("ПеречислениеСсылка.ГруппировкиЗатратВПроизводствеБезЗаказа"));
ТаблицаПродукции.Колонки.Добавить("Подразделение", Новый ОписаниеТипов("СправочникСсылка.СтруктураПредприятия"));
ТаблицаПродукции.Колонки.Добавить("ОшибкаВНастройкахМодели", Новый ОписаниеТипов("Булево"));
ТаблицаПродукции.Колонки.Добавить("ОтражатьЗатратыДокументом", Новый ОписаниеТипов("Булево"));
ТаблицаПродукции.ЗаполнитьЗначения(Объект.Организация, "Организация");
ТаблицаПродукции.ЗаполнитьЗначения(Объект.ГруппировкаЗатрат, "ГруппировкаЗатрат");
ТаблицаПродукции.ЗаполнитьЗначения(Объект.Подразделение, "Подразделение");
ТаблицаПродукции.ЗаполнитьЗначения(Истина, "ОтражатьЗатратыДокументом");
ДанныеШапки = Новый Структура("Дата", Объект.Дата);
ПараметрыЗаполнения = Новый Структура("ДанныеШапки", ДанныеШапки);
ПараметрыЗаполнения.Вставить("ЗаполнятьАвтоматически", Истина);
ПереченьДанных = Новый Массив;
Если ИмяТЧ = "ПобочныеИзделия" Тогда
ПереченьДанных.Добавить("ВозвратныеОтходы");
ИначеЕсли ИмяТЧ = "МатериалыИРаботы" Тогда
ПереченьДанных.Добавить("МатериалыИУслуги");
Иначе
ПереченьДанных.Добавить("Трудозатраты");
КонецЕсли;
ПараметрыЗаполнения.Вставить("ПереченьДанных", ПереченьДанных);
Документы.ПроизводствоБезЗаказа.ДанныеСпецификацииПоСпискуПродукции(
ТаблицаПродукции,
ПараметрыЗаполнения,
МенеджерВременныхТаблиц);
ТаблицаЗатрат = Запрос.Выполнить().Выгрузить();
Если Не ТаблицаЗатрат.Количество() = 0 Тогда
МассивСтрок = Новый Массив;
СтруктураПоиска = Новый Структура("НомерГруппыЗатрат", 0);
ТаблицаОбъекта = Объект[ИмяТЧ];
ОбрабатываемыеСтроки = Новый Массив;
Для Каждого ТекЗатрата Из ТаблицаЗатрат Цикл
НоваяСтрока = ТаблицаОбъекта.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, ТекЗатрата);
СтруктураПоиска.НомерГруппыЗатрат = НоваяСтрока.НомерГруппыЗатрат;
ГруппаЗатрат = СписокГрупп.НайтиСтроки(СтруктураПоиска);
Если Не ГруппаЗатрат.Количество() = 0 Тогда
ОписаниеГруппы = ГруппаЗатрат[0];
НоваяСтрока.ГруппаЗатрат = ОписаниеГруппы.ГруппаЗатрат;
Если Не ИмяТЧ = "Трудозатраты" Тогда
НоваяСтрока.НаправлениеДеятельности = ОписаниеГруппы.НаправлениеДеятельности;
КонецЕсли;
КонецЕсли;
Если Не ИмяТЧ = "Трудозатраты" Тогда
ОбрабатываемыеСтроки.Добавить(НоваяСтрока);
КонецЕсли;
МассивСтрок.Добавить(НоваяСтрока.ПолучитьИдентификатор());
КонецЦикла;
Если ИмяТЧ = "МатериалыИРаботы"
ИЛИ ИмяТЧ = "ПобочныеИзделия" Тогда
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииНоменклатуры(ИмяТЧ, ЭтотОбъект, СтруктураДействий, Истина, ИмяТЧ = "МатериалыИРаботы");
ДобавитьВСтруктуруДействияПоЦеховойКладовой(ИмяТЧ, СтруктураДействий, Истина, ИмяТЧ = "МатериалыИРаботы");
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
ТаблицаОбъекта,
КэшированныеЗначения);
Если ИмяТЧ = "ПобочныеИзделия" Тогда
Для Каждого ТекущаяСтрока Из ОбрабатываемыеСтроки Цикл
ДоходыИРасходыКлиентСервер.ПриДобавленииСтрокиВТаблицу(ЭтотОбъект, ТекущаяСтрока, "Объект.ПобочныеИзделия");
КонецЦикла;
КонецЕсли;
КонецЕсли;
Если ИмяТЧ = "МатериалыИРаботы"
ИЛИ ИмяТЧ = "ПобочныеИзделия"
ИЛИ ИмяТЧ = "Трудозатраты" Тогда
ПослеИзмененияСтрокТЧПрограммноНаСервере(ИмяТЧ, МассивСтрок, СтруктураДействий);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСкладПоУмолчанию()
Если ИспользоватьНесколькоСкладов Тогда
СкладПоУмолчанию = Справочники.Склады.ПустаяСсылка();
Иначе
СкладПоУмолчанию = ОбщегоНазначенияУТ.ПолучитьПроверитьСкладПоУмолчанию();
КонецЕсли;
СкладПоУмолчаниюЦеховаяКладовая =
?(ЗначениеЗаполнено(СкладПоУмолчанию), ЗначениеРеквизитаОбъекта(СкладПоУмолчанию, "ЦеховаяКладовая"), Ложь);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ЗаполнитьСкладПоУмолчаниюВСтроке(Форма, Строка, ИмяПоля)
Если Форма.ИспользоватьНесколькоСкладов Тогда
Возврат;
КонецЕсли;
Строка[ИмяПоля] = Форма.СкладПоУмолчанию;
Строка.ЦеховаяКладовая = Форма.СкладПоУмолчаниюЦеховаяКладовая;
Строка.НужноОкруглять = Не Строка.ЦеховаяКладовая;
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьСклад(ИмяТЧ, ИмяПоля)
ВыделенныеСтроки = Элементы[ИмяТЧ].ВыделенныеСтроки;
Если ВыделенныеСтроки.Количество() = 0 Тогда
ТекстПредупреждения = НСтр("ru = 'Необходимо выбрать строки, для которых необходимо заполнить склад.'");
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстПредупреждения);
Возврат;
КонецЕсли;
ПараметрыОтбора = Новый Структура;
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Отбор", ПараметрыОтбора);
ПараметрыФормы.Вставить("МножественныйВыбор", Ложь);
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ИмяТЧ", ИмяТЧ);
ДополнительныеПараметры.Вставить("ИмяПоля", ИмяПоля);
ОписаниеОповещения = Новый ОписаниеОповещения("ЗаполнитьСкладЗавершение", ЭтотОбъект, ДополнительныеПараметры);
ОткрытьФорму("Справочник.Склады.ФормаВыбора", ПараметрыФормы,,,,, ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьСкладЗавершение(РезультатЗакрытия, ДополнительныеПараметры) Экспорт
Если РезультатЗакрытия = Неопределено Тогда
Возврат;
КонецЕсли;
ЗаполнитьСкладНаСервере(РезультатЗакрытия, ДополнительныеПараметры);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСкладНаСервере(ЗначениеСклад, ДополнительныеПараметры)
ИмяТЧ = ДополнительныеПараметры.ИмяТЧ;
ИмяПоля = ДополнительныеПараметры.ИмяПоля;
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПоЦеховойКладовой(ИмяТЧ, СтруктураДействий, Истина, ИмяТЧ = "МатериалыИРаботы");
КэшируемыеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
ВыделенныеСтроки = Элементы[ИмяТЧ].ВыделенныеСтроки;
ТабличнаяЧасть = Объект[ИмяТЧ];
ОбрабатываемыеСтроки = Новый Массив();
Для Каждого ИдентификаторСтроки Из ВыделенныеСтроки Цикл
ТекущиеДанные = ТабличнаяЧасть.НайтиПоИдентификатору(ИдентификаторСтроки);
Если (ИмяТЧ = "ВыходныеИзделия" Или ИмяТЧ = "ПобочныеИзделия")
И Не ТекущиеДанные.НаправлениеВыпуска =
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ВыпускПродукцииНаСклад") Тогда
Продолжить;
КонецЕсли;
ТекущиеДанные[ИмяПоля] = ЗначениеСклад;
ОбрабатываемыеСтроки.Добавить(ТекущиеДанные);
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
ТабличнаяЧасть,
КэшируемыеЗначения);
ПослеИзмененияСтрокТЧПрограммноНаСервере(ИмяТЧ, ВыделенныеСтроки);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьПодразделениеЗатрат(ИмяТЧ)
ВыделенныеСтроки = Элементы[ИмяТЧ].ВыделенныеСтроки;
Если ВыделенныеСтроки.Количество() = 0 Тогда
ТекстПредупреждения = НСтр("ru = 'Необходимо выбрать строки, для которых необходимо заполнить подразделение затрат.'");
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстПредупреждения);
Возврат;
КонецЕсли;
ПараметрыОтбора = Новый Структура;
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Отбор", ПараметрыОтбора);
ПараметрыФормы.Вставить("МножественныйВыбор", Ложь);
ОписаниеОповещения = Новый ОписаниеОповещения("ЗаполнитьПодразделениеЗатратЗавершение", ЭтотОбъект, ИмяТЧ);
ОткрытьФорму("Справочник.СтруктураПредприятия.ФормаВыбора", ПараметрыФормы,,,,, ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьПодразделениеЗатратЗавершение(РезультатЗакрытия, ИмяТЧ) Экспорт
Если РезультатЗакрытия = Неопределено Тогда
Возврат;
КонецЕсли;
ВыделенныеСтроки = Элементы[ИмяТЧ].ВыделенныеСтроки;
ТабличнаяЧасть = Объект[ИмяТЧ];
Для каждого ИдентификаторСтроки Из ВыделенныеСтроки Цикл
ТекущиеДанные = ТабличнаяЧасть.НайтиПоИдентификатору(ИдентификаторСтроки);
Если ИмяТЧ = "МатериалыИРаботы"
И ТекущиеДанные.ЦеховаяКладовая Тогда
Продолжить;
КонецЕсли;
ТекущиеДанные.Подразделение = РезультатЗакрытия;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьСтатьюРасходов(ИмяТЧ, ИмяПоля)
ВыделенныеСтроки = Новый Массив;
Для Каждого ТекИдентификатор Из Элементы[ИмяТЧ].ВыделенныеСтроки Цикл
ТекущиеДанные = Объект[ИмяТЧ].НайтиПоИдентификатору(ТекИдентификатор);
Если ТекущиеДанные = Неопределено Тогда
Продолжить;
КонецЕсли;
Если ТекущиеДанные.НаправлениеВыпуска =
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.СписаниеТоваровПоТребованию") Тогда
ВыделенныеСтроки.Добавить(ТекИдентификатор);
КонецЕсли;
КонецЦикла;
ДоходыИРасходыКлиент.ЗаполнитьСтатьюИАналитикуВВыделенныхСтроках(
ЭтотОбъект,
Элементы[ИмяТЧ + ИмяПоля],
ВыделенныеСтроки);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьФормуВводаДолиСтоимости(ТекущиеДанные)
НетОшибок = ПроизводствоКлиент.ПроверитьЗаполнениеПередВводомДолиСтоимости(ТекущиеДанные, ПараметрыРаспределенияЗатрат);
Если НетОшибок Тогда
ПараметрыФормы = ПараметрыФормыВводаДолиСтоимости(ТекущиеДанные.ПолучитьИдентификатор());
ОткрытьФорму("ОбщаяФорма.ВводДолиСтоимости",
ПараметрыФормы,
ЭтаФорма);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаВводаДолиСтоимости(Элемент, ТекущиеДанные, ВыбранноеЗначение)
Если ТекущиеДанные.ДоляСтоимости <> ВыбранноеЗначение.ДоляСтоимости Тогда
ПроизводствоКлиентСервер.ЗаполнитьДолюСтоимостиВСтроке(
ТекущиеДанные,
ВыбранноеЗначение);
Группировки = Новый Массив;
Группировки.Добавить(ТекущиеДанные.НомерГруппыЗатрат);
РассчитатьПроцентРаспределенияЗатратНаВыходныеИзделия(Группировки);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура АктуализироватьВыпускПодДеятельность(Заполнить = Истина)
ПараметрыЗаполнения = Документы.ПроизводствоБезЗаказа.ПараметрыЗаполненияВидаДеятельностиНДС(Объект);
Если Заполнить Тогда
УчетНДСУП.ЗаполнитьВидДеятельностиНДС(
Объект.ВыпускПодДеятельность,
ПараметрыЗаполнения,
УчетНДСКэшированныеЗначенияПараметров);
КонецЕсли;
УчетНДСУП.ЗаполнитьСписокВыбораВидаДеятельностиНДС(
Элементы.ВыпускПодДеятельность,
Объект.ВыпускПодДеятельность,
ПараметрыЗаполнения,
УчетНДСКэшированныеЗначенияПараметров);
КонецПроцедуры
&НаСервере
Процедура ВыходныеИзделияЗаполнитьСпецификациюСервер(Знач Идентификаторы = Неопределено)
ИзмененныеСтроки = ЗаполнитьСпецификациюВТабличнойЧасти(Идентификаторы);
Если Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВПроизводствеБезЗаказа.ПоСпецификациям
ИЛИ Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВПроизводствеБезЗаказа.ПоСпецификациямИНазначениям Тогда
АктуализироватьГруппыЗатратПослеИзмененияСпецификаций(ИзмененныеСтроки);
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ЗаполнитьСпецификациюВТабличнойЧасти(Знач Идентификаторы = Неопределено, РежимПроверитьЗаполнить = Ложь)
Модифицированность = Истина;
МассивСтрок = Новый Массив;
Если Идентификаторы <> Неопределено Тогда
Для каждого Идентификатор Из Идентификаторы Цикл
Строка = Объект.ВыходныеИзделия.НайтиПоИдентификатору(Идентификатор);
МассивСтрок.Добавить(Строка);
КонецЦикла;
Иначе
Для каждого Строка Из Объект.ВыходныеИзделия Цикл
МассивСтрок.Добавить(Строка);
КонецЦикла;
КонецЕсли;
МассивДанных = Новый Массив;
Для каждого ТекущаяСтрока Из МассивСтрок Цикл
ДанныеОбИзделии = УправлениеДаннымиОбИзделияхКлиентСервер.СобратьДанныеОбИзделииДляВыбораСпецификации(
Объект, ТекущаяСтрока, ПараметрыВыбораСпецификаций);
Если РежимПроверитьЗаполнить Тогда
ДанныеОбИзделии.Вставить("ТекущаяСпецификация", ТекущаяСтрока.Спецификация);
КонецЕсли;
ДанныеОбИзделии.Вставить("СтараяСпецификация", ТекущаяСтрока.Спецификация);
МассивДанных.Добавить(ДанныеОбИзделии);
КонецЦикла;
УправлениеДаннымиОбИзделиях.ЗаполнитьСпецификациюВСтроках(МассивСтрок, МассивДанных, ПараметрыВыбораСпецификаций);
МассивИзмененныхСтрок = Новый Массив;
Для Ит = 0 По МассивСтрок.ВГраница() Цикл
Если МассивСтрок[Ит].Спецификация <> МассивДанных[Ит].СтараяСпецификация Тогда
МассивИзмененныхСтрок.Добавить(МассивСтрок[Ит]);
КонецЕсли;
КонецЦикла;
Возврат МассивИзмененныхСтрок;
КонецФункции
&НаСервере
Процедура ВыходныеИзделияДополнитьПоСпецификацииСервер(Знач Идентификаторы)
СписокНоменклатуры = Справочники.РесурсныеСпецификации.СписокНоменклатуры();
СписокНоменклатуры.Колонки.Добавить("Назначение", Новый ОписаниеТипов("СправочникСсылка.Назначения"));
Для каждого Идентификатор Из Идентификаторы Цикл
Строка = Объект.ВыходныеИзделия.НайтиПоИдентификатору(Идентификатор);
Если Не ЗначениеЗаполнено(Строка.Спецификация) Тогда
Продолжить;
КонецЕсли;
НоваяСтрока = СписокНоменклатуры.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, Строка);
НоваяСтрока.НачалоПроизводства = Объект.Дата;
КонецЦикла;
ПараметрыВыборки = Справочники.РесурсныеСпецификации.ПараметрыВыборкиДанных("ВыходныеИзделия");
ПараметрыВыборки.ПереопределениеНастройкиПартииВыпуска.Использовать = Истина;
ПараметрыВыборки.ПереопределениеНастройкиПартииВыпуска.ВыпускПроизвольнымиПорциями = Истина;
ПараметрыВыборки.РассчитыватьДолиСтоимостиВыходныхИзделий = Истина;
ДанныеСпецификаций = Справочники.РесурсныеСпецификации.ДанныеСпецификацииПоСпискуНоменклатуры(СписокНоменклатуры, ПараметрыВыборки);
ПараметрыОтбора = Новый Структура("Спецификация,Номенклатура,Характеристика", );
МассивСтрок = Новый Массив;
ОбрабатываемыеСтроки = Новый Массив;
Для каждого СтруктураДанных Из ДанныеСпецификаций Цикл
Если Не СтруктураДанных.Свойство("ВыходныеИзделия") Тогда
Продолжить;
КонецЕсли;
ЗаполненоНазначений = 0;
ТекущееНазначение = ПредопределенноеЗначение("Справочник.Назначения.ПустаяСсылка");
Для Каждого Строка Из СтруктураДанных.ВыходныеИзделия Цикл
ЗаполнитьЗначенияСвойств(ПараметрыОтбора, Строка);
ПараметрыОтбора.Спецификация = СтруктураДанных.Спецификация;
Изделие = СписокНоменклатуры.НайтиСтроки(ПараметрыОтбора);
Если Изделие.Количество() > 0 Тогда
ТекущееНазначение = Изделие[0].Назначение;
Продолжить;
КонецЕсли;
ЗаполненоНазначений = ?(ЗначениеЗаполнено(ТекущееНазначение),ЗаполненоНазначений + 1,ЗаполненоНазначений);
НоваяСтрока = Объект.ВыходныеИзделия.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, Строка);
НоваяСтрока.Назначение = ТекущееНазначение;
НоваяСтрока.Количество = Строка.КоличествоИзделие;
МассивСтрок.Добавить(НоваяСтрока.ПолучитьИдентификатор());
ОбрабатываемыеСтроки.Добавить(НоваяСтрока);
КонецЦикла;
Если ЗначениеЗаполнено(ТекущееНазначение) И ЗаполненоНазначений <> СтруктураДанных.ВыходныеИзделия.Количество() -1 Тогда
ПоследнийНезаполненный = Объект.ВыходныеИзделия.Количество() - 1 - ЗаполненоНазначений;
КоличествоНезаполненных = СтруктураДанных.ВыходныеИзделия.Количество() - 1 - ЗаполненоНазначений;
Для н = ПоследнийНезаполненный - КоличествоНезаполненных + 1 По ПоследнийНезаполненный Цикл
Объект.ВыходныеИзделия[н].Назначение = ТекущееНазначение;
КонецЦикла;
КонецЕсли;
КонецЦикла;
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииНоменклатуры("ВыходныеИзделия", ЭтотОбъект, СтруктураДействий, Истина, Ложь);
ДобавитьВСтруктуруДействияПоСкладу("ВыходныеИзделия", ЭтотОбъект, СтруктураДействий);
ДобавитьВСтруктуруДействияПоЦеховойКладовой("ВыходныеИзделия", СтруктураДействий, Истина, Ложь);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.ВыходныеИзделия,
КэшированныеЗначения);
Для Каждого ТекущаяСтрока Из ОбрабатываемыеСтроки Цикл
ДоходыИРасходыКлиентСервер.ПриДобавленииСтрокиВТаблицу(ЭтотОбъект, ТекущаяСтрока, "Объект.ВыходныеИзделия");
ДобавитьИзменитьГруппуЗатрат(ТекущаяСтрока);
КонецЦикла;
ПослеИзмененияСтрокТЧПрограммноНаСервере("ВыходныеИзделия", МассивСтрок, СтруктураДействий);
КонецПроцедуры
&НаСервере
Процедура АктуализироватьГруппыЗатратПослеИзмененияСпецификаций(Строки)
Если Не ЗначениеЗаполнено(Строки)
Или Объект.Исправление
И Объект.ИсправлениеСохраняетПартииПроизводства Тогда
Возврат;
КонецЕсли;
Для Каждого ТекущиеДанные Из Строки Цикл
ПоляСтроки = "НомерГруппыЗатрат, ГруппаЗатрат, Номенклатура, Характеристика, Спецификация, Назначение, Серия";
ТекущиеДанныеСтруктура = Новый Структура(ПоляСтроки);
ЗаполнитьЗначенияСвойств(ТекущиеДанныеСтруктура, ТекущиеДанные);
ДобавитьИзменитьГруппуЗатрат(ТекущиеДанныеСтруктура);
ТекущиеДанные.НомерГруппыЗатрат = ТекущиеДанныеСтруктура.НомерГруппыЗатрат;
ТекущиеДанные.ГруппаЗатрат = ТекущиеДанныеСтруктура.ГруппаЗатрат;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура УстановитьИспользованиеПлановойСтоимости()
ПараметрыУчетнойПолитики = НастройкиНалоговУчетныхПолитик.ДействующиеПараметрыНалоговУчетныхПолитикНаДату(
"УчетнаяПолитикаФинансовогоУчета",
Объект.Организация,
Объект.Дата);
Если НЕ ПараметрыУчетнойПолитики = Неопределено Тогда
ИспользоватьПлановуюСтоимость = ПараметрыУчетнойПолитики.УчетГотовойПродукцииПоПлановойСтоимости;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьПодборТоваровПоОрдерам()
РеквизитыШапки = Новый Структура("Организация, Подразделение, Ссылка, НаправлениеДеятельности");
ЗаполнитьЗначенияСвойств(РеквизитыШапки, Объект);
ПараметрыФормы = Новый Структура();
ПараметрыФормы.Вставить("РеквизитыШапки", РеквизитыШапки);
ПараметрыФормы.Вставить("Заказ", Неопределено);
ПараметрыФормы.Вставить("Накладная", Объект.Ссылка);
ПараметрыФормы.Вставить("ОрдернаяСхемаПриОтгрузке", Истина);
ПараметрыФормы.Вставить("АдресТовары", АдресТоварыНакладной());
ПараметрыФормы.Вставить("НакладнаяПоЗаказам", Ложь);
ПараметрыФормы.Вставить("ИспользоватьНакладныеПоНесколькимЗаказам", Ложь);
ПараметрыФормы.Вставить("ИспользуютсяЗаказы", Ложь);
ОткрытьФорму("ОбщаяФорма.ПодборТоваровИзЗаказа",
ПараметрыФормы, ЭтаФорма, УникальныйИдентификатор,,,,РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаСервере
Функция АдресТоварыНакладной()
Таблица = Объект.МатериалыИРаботы.Выгрузить();
Возврат ПоместитьВоВременноеХранилище(Таблица);
КонецФункции
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыВыходныеИзделия
&НаСервере
Процедура ВыходныеИзделияПередУдалениемНаСервере()
Для Каждого ТекИдентификатор Из Элементы.ВыходныеИзделия.ВыделенныеСтроки Цикл
УдалитьГруппуЗатрат(ТекИдентификатор);
КонецЦикла;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыМатериалыИРаботы
&НаСервере
Процедура МатериалыИРаботыПослеУдаленияНаСервере()
СобытияФорм.ПриИзмененииЭлемента(ЭтотОбъект, "Сырье");
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормыСлужебные
&НаСервере
Процедура СвойстваВыполнитьОтложеннуюИнициализацию()
УправлениеСвойствами.ЗаполнитьДополнительныеРеквизитыВФорме(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьЗависимостиДополнительныхРеквизитов()
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПриИзмененииДополнительногоРеквизита(Элемент)
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуЭДО(Команда)
ЭлектронноеВзаимодействиеКлиент.ВыполнитьПодключаемуюКомандуЭДО(Команда, ЭтотОбъект, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПроверитьВыполнениеЗаданияИС()
СоответствиеТребованиямГИСМТКлиент.ПроверитьВыполнениеЗадания(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьПодборТоваров(ИмяТЧ)
Если ИмяТЧ = "МатериалыИРаботы" Тогда
ПараметрЗаголовок = НСтр("ru = 'Подбор материалов и работ в %1'");
ИначеЕсли ИмяТЧ = "ВыходныеИзделия" ИЛИ ИмяТЧ = "ПобочныеИзделия" Тогда
ПараметрЗаголовок = НСтр("ru = 'Подбор изделий в %1'");
Иначе
ПараметрЗаголовок = НСтр("ru = 'Подбор в %1'");
КонецЕсли;
Если ЗначениеЗаполнено(Объект.Ссылка) Тогда
ПараметрЗаголовок = СтрШаблон(ПараметрЗаголовок, Объект.Ссылка);
Иначе
ПараметрЗаголовок = СтрШаблон(ПараметрЗаголовок, НСтр("ru = 'производство без заказа'"));
КонецЕсли;
МассивТиповНоменклатуры = Новый Массив();
МассивТиповНоменклатуры.Добавить(ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.МногооборотнаяТара"));
МассивТиповНоменклатуры.Добавить(ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Товар"));
МассивТиповНоменклатуры.Добавить(ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Работа"));
ДоступныеТипыНоменклатуры = Новый ФиксированныйМассив(МассивТиповНоменклатуры);
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("РежимПодбораБезСуммовыхПараметров", Истина);
ПараметрыФормы.Вставить("СкрыватьКолонкуВидЦены", Истина);
ПараметрыФормы.Вставить("СкрыватьКомандуЦеныНоменклатуры", Истина);
ПараметрыФормы.Вставить("Заголовок", ПараметрЗаголовок);
ПараметрыФормы.Вставить("Документ", Объект.Ссылка);
ПараметрыФормы.Вставить("Дата", Объект.Дата);
ПараметрыФормы.Вставить("ОтборПоТипуНоменклатуры", ДоступныеТипыНоменклатуры);
ПараметрыФормы.Вставить("ОстаткиПоВсемСкладам", Истина);
ПараметрыФормы.Вставить("РежимПодбораИспользоватьСкладыВТабличнойЧасти", Истина);
Оповещение = Новый ОписаниеОповещения("ОткрытьПодборТоваровЗавершение",
ЭтотОбъект,
ИмяТЧ);
ОткрытьФорму("Обработка.ПодборТоваровВДокументПродажи.Форма",
ПараметрыФормы,
ЭтотОбъект,
УникальныйИдентификатор,,,
Оповещение,
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьПодборТоваровЗавершение(ВыбранноеЗначение, ИмяТЧ) Экспорт
Если Не ЗначениеЗаполнено(ВыбранноеЗначение) Тогда
Возврат;
КонецЕсли;
НачатьОбработкуРезультатаПодбораНаСервере(ВыбранноеЗначение.АдресТоваровВХранилище, "ПодборТоваров", ИмяТЧ);
КонецПроцедуры
&НаСервере
Процедура НачатьОбработкуРезультатаПодбораНаСервере(АдресТоваровВХранилище, ВариантПодбора, ИмяТЧ = "МатериалыИРаботы")
ТаблицаТоваров = ПолучитьИзВременногоХранилища(АдресТоваровВХранилище);
Если ТаблицаТоваров.Количество() = 0 Тогда
Возврат;
КонецЕсли;
ОбработкаВыбораПодборНаСервере(ТаблицаТоваров, ИмяТЧ);
КонецПроцедуры
&НаСервере
Процедура ОбработкаВыбораПодборНаСервере(ТаблицаТоваров, ИмяТЧ)
ОбрабатываемыеСтроки = Новый Массив;
ДанныеОбИзделиях = Новый Массив;
МассивСтрок = Новый Массив;
Для Каждого Строка Из ТаблицаТоваров Цикл
НоваяСтрока = ТаблицаОбъектаПоИмени(Объект, ИмяТЧ).Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, Строка);
ОбрабатываемыеСтроки.Добавить(НоваяСтрока);
Если ИмяТЧ = "ВыходныеИзделия" Тогда
ДанныеОбИзделиях.Добавить(
УправлениеДаннымиОбИзделияхКлиентСервер.СобратьДанныеОбИзделииДляВыбораСпецификации(
Объект, НоваяСтрока, ПараметрыВыбораСпецификаций, ЭтотОбъект));
КонецЕсли;
МассивСтрок.Добавить(НоваяСтрока.ПолучитьИдентификатор());
КонецЦикла;
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииНоменклатуры(ИмяТЧ, ЭтотОбъект, СтруктураДействий, Истина, ИмяТЧ = "МатериалыИРаботы");
ДобавитьВСтруктуруДействияПоЦеховойКладовой(ИмяТЧ, СтруктураДействий, Истина, ИмяТЧ = "МатериалыИРаботы");
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
ТаблицаОбъектаПоИмени(Объект, ИмяТЧ),
КэшированныеЗначения);
Если ИмяТЧ = "ВыходныеИзделия"
Или ИмяТЧ = "ПобочныеИзделия" Тогда
Если ИмяТЧ = "ВыходныеИзделия" Тогда
ПутьКТЧ = "Объект.ВыходныеИзделия";
Иначе
ПутьКТЧ = "Объект.ПобочныеИзделия";
КонецЕсли;
Если ИмяТЧ = "ВыходныеИзделия" Тогда
УправлениеДаннымиОбИзделиях.ЗаполнитьСпецификациюВСтроках(ОбрабатываемыеСтроки, ДанныеОбИзделиях, ПараметрыВыбораСпецификаций);
КонецЕсли;
Для Каждого ТекущаяСтрока Из ОбрабатываемыеСтроки Цикл
ДоходыИРасходыКлиентСервер.ПриДобавленииСтрокиВТаблицу(ЭтотОбъект, ТекущаяСтрока, ПутьКТЧ);
Если ИмяТЧ = "ВыходныеИзделия" Тогда
ДобавитьИзменитьГруппуЗатрат(ТекущаяСтрока);
КонецЕсли;
КонецЦикла;
КонецЕсли;
ПослеИзмененияСтрокТЧПрограммноНаСервере(ИмяТЧ, МассивСтрок, СтруктураДействий);
КонецПроцедуры
&НаКлиенте
Процедура ПолучитьДанныеИзТСД(ИмяТЧ)
ОчиститьСообщения();
МенеджерОборудованияКлиент.НачатьЗагрузкуДанныеИзТСД(
Новый ОписаниеОповещения("ЗагрузитьИзТСДЗавершение", ЭтотОбъект, Новый Структура("ИмяТЧ", ИмяТЧ)),
УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьИзТСДЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат.Результат Тогда
ОбработатьШтрихкоды(ДополнительныеПараметры.ИмяТЧ, Результат.ТаблицаТоваров);
Иначе
МенеджерОборудованияУТКлиент.СообщитьОбОшибке(Результат);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПоискПоШтрихкодуВыполнить(ИмяТЧ)
ОчиститьСообщения();
Оповещение = Новый ОписаниеОповещения("ПоискПоШтрихкодуЗавершение", ЭтотОбъект, Новый Структура("ИмяТЧ", ИмяТЧ));
ШтрихкодированиеНоменклатурыКлиент.ПоказатьВводШтрихкода(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ПоискПоШтрихкодуЗавершение(Результат, ДополнительныеПараметры) Экспорт
ИмяТЧПоискПоШтрихкоду = ДополнительныеПараметры.ИмяТЧ;
ОбработатьШтрихкоды(ДополнительныеПараметры.ИмяТЧ, Результат);
КонецПроцедуры
&НаКлиенте
Процедура ПолучитьВес(ИмяТЧ)
ОчиститьСообщения();
ТекущаяСтрока = МенеджерОборудованияУТКлиент.ТекущаяСтрока(ЭтаФорма, ИмяТЧ);
Если ТекущаяСтрока = Неопределено Тогда
Возврат;
КонецЕсли;
МенеджерОборудованияКлиент.НачатьПолученияВесаСЭлектронныхВесов(
Новый ОписаниеОповещения("ПолучитьВесЗавершение", ЭтотОбъект, Новый Структура("ТекущаяСтрока,ИмяТЧ",
ТекущаяСтрока, ИмяТЧ)),
УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ПолучитьВесЗавершение(РезультатВыполнения, ДополнительныеПараметры) Экспорт
Если РезультатВыполнения.Результат Тогда
ДополнительныеПараметры.ТекущаяСтрока.КоличествоУпаковок = РезультатВыполнения.Вес;
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(
ДополнительныеПараметры.ИмяТЧ,
ЭтаФорма,
СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ДополнительныеПараметры.ТекущаяСтрока,
СтруктураДействий,
КэшированныеЗначения);
Если ДополнительныеПараметры.ИмяТЧ = "ВыходныеИзделия"
ИЛИ ДополнительныеПараметры.ИмяТЧ = "ПобочныеИзделия"
ИЛИ ДополнительныеПараметры.ИмяТЧ = "МатериалыИРаботы" Тогда
ТекущаяСтрокаИдентификатор = ДополнительныеПараметры.ТекущаяСтрока.ПолучитьИдентификатор();
ОбновитьКешированныеЗначенияДляУчетаСерий(
ДополнительныеПараметры.ИмяТЧ,
Элементы[ДополнительныеПараметры.ИмяТЧ],
КэшированныеЗначения,
Ложь);
ЗаполнитьСтатусыУказанияСерийПриОкончанииРедактированияСтрокиТЧ(
ПараметрыУказанияСерий[ДополнительныеПараметры.ИмяТЧ],
ТекущаяСтрокаИдентификатор,
КэшированныеЗначения);
КонецЕсли;
Иначе
МенеджерОборудованияУТКлиент.СообщитьОбОшибке(РезультатВыполнения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработатьШтрихкоды(ИмяТЧ, ДанныеШтрихкодов)
ДанныеФормы = Элементы[ИмяТЧ];
СтруктураДействийСДобавленнымиСтроками = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииНоменклатуры(ИмяТЧ, ЭтотОбъект, СтруктураДействийСДобавленнымиСтроками,, ИмяТЧ = "МатериалыИРаботы");
ДобавитьВСтруктуруДействияПоСкладу(ИмяТЧ, ЭтотОбъект, СтруктураДействийСДобавленнымиСтроками);
ДобавитьВСтруктуруДействияПоЦеховойКладовой(ИмяТЧ, СтруктураДействийСДобавленнымиСтроками, Истина, ИмяТЧ = "МатериалыИРаботы");
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(ИмяТЧ, ЭтотОбъект, СтруктураДействийСДобавленнымиСтроками);
СтруктураДействийСИзмененнымиСтроками = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(ИмяТЧ, ЭтотОбъект, СтруктураДействийСИзмененнымиСтроками);
СтруктураДействий = ШтрихкодированиеНоменклатурыКлиент.ПараметрыОбработкиШтрихкодов();
СтруктураДействий.Штрихкоды = ДанныеШтрихкодов;
СтруктураДействий.ИмяТЧ = ИмяТЧ;
СтруктураДействий.СтруктураДействийСДобавленнымиСтроками = СтруктураДействийСДобавленнымиСтроками;
СтруктураДействий.СтруктураДействийСИзмененнымиСтроками = СтруктураДействийСИзмененнымиСтроками;
СтруктураДействий.ПараметрыУказанияСерий = ПараметрыУказанияСерий[ИмяТЧ];
СтруктураДействий.ИзменятьКоличество = Истина;
СтруктураДействий.ТолькоТовары = Ложь;
ОбработатьШтрихкодыСервер(СтруктураДействий, КэшированныеЗначения);
ШтрихкодированиеНоменклатурыКлиент.ОбработатьНеизвестныеШтрихкоды(СтруктураДействий, КэшированныеЗначения, ЭтотОбъект);
Если СтруктураДействий.ТекущаяСтрока <> Неопределено Тогда
ДанныеФормы.ТекущаяСтрока = СтруктураДействий.ТекущаяСтрока;
КонецЕсли;
РассчитатьПроцентРаспределенияЗатратНаВыходныеИзделия();
Если ИмяТЧ = "ВыходныеИзделия"
Или ИмяТЧ = "ПобочныеИзделия" Тогда
УстановитьЗаголовкиГруппПродукции(ЭтотОбъект, ИмяТЧ);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбработатьШтрихкодыСервер(СтруктураПараметровДействия,КэшированныеЗначения)
ШтрихкодированиеНоменклатурыСервер.ОбработатьШтрихкоды(ЭтаФорма,
Объект,
СтруктураПараметровДействия,
КэшированныеЗначения);
Если СтруктураПараметровДействия.ИмяТЧ = "МатериалыИРаботы" Тогда
СобытияФорм.ПриИзмененииЭлемента(ЭтотОбъект, "Сырье");
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура РазбитьСтрокуТЧ(ИмяТЧ)
ПараметрыРазбиенияСтроки = РаботаСТабличнымиЧастямиКлиент.ПараметрыРазбиенияСтроки();
ПараметрыРазбиенияСтроки.РазрешитьНулевоеКоличество = Ложь;
Если ИмяТЧ = "Трудозатраты" Тогда
ПараметрыРазбиенияСтроки.ИмяПоляКоличество = "Количество";
КонецЕсли;
Оповещение = Новый ОписаниеОповещения("РазбитьСтрокуТЧЗавершение", ЭтотОбъект, ИмяТЧ);
РаботаСТабличнымиЧастямиКлиент.РазбитьСтроку(Объект[ИмяТЧ], Элементы[ИмяТЧ], Оповещение, ПараметрыРазбиенияСтроки);
КонецПроцедуры
&НаКлиенте
Процедура РазбитьСтрокуТЧЗавершение(НоваяСтрока, ИмяТЧ) Экспорт
Если НоваяСтрока = Неопределено Тогда
Возврат;
КонецЕсли;
Если ИмяТЧ = "ВыходныеИзделия"
Или ИмяТЧ = "Трудозатраты" Тогда
НоваяСтрока.КодСтроки = 0;
КонецЕсли;
ТекущиеДанные = Элементы[ИмяТЧ].ТекущиеДанные;
Если Не ИмяТЧ = "Трудозатраты" Тогда
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(
ИмяТЧ,
ЭтаФорма,
СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущиеДанные, СтруктураДействий, КэшированныеЗначения);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(НоваяСтрока, СтруктураДействий, КэшированныеЗначения);
Если ИмяТЧ = "ВыходныеИзделия" Тогда
Если Не Объект.Исправление
Или Не Объект.ИсправлениеСохраняетПартииПроизводства Тогда
НоваяСтрокаСтруктура =
Новый Структура("НомерГруппыЗатрат, ГруппаЗатрат, Номенклатура, Характеристика, Спецификация, Назначение, Серия");
ЗаполнитьЗначенияСвойств(НоваяСтрокаСтруктура, НоваяСтрока);
ДобавитьИзменитьГруппуЗатрат(НоваяСтрокаСтруктура);
НоваяСтрока.НомерГруппыЗатрат = НоваяСтрокаСтруктура.НомерГруппыЗатрат;
НоваяСтрока.ГруппаЗатрат = НоваяСтрокаСтруктура.ГруппаЗатрат;
КонецЕсли;
ПроизводствоКлиентСервер.ПересчитатьДолюСтоимостиПриРазбиенииСтроки(НоваяСтрока, ТекущиеДанные, ПараметрыРаспределенияЗатрат.СпособРаспределенияЗатратНаВыходныеИзделия);
КонецЕсли;
КонецЕсли;
МассивСтрок = Новый Массив;
МассивСтрок.Добавить(ТекущиеДанные.ПолучитьИдентификатор());
МассивСтрок.Добавить(НоваяСтрока.ПолучитьИдентификатор());
ПослеИзмененияСтрокТЧПрограммноНаСервере(ИмяТЧ, МассивСтрок, СтруктураДействий);
КонецПроцедуры
&НаКлиенте
Процедура ОкруглитьДоЦелойУпаковки(ИмяТЧ)
ОчиститьСообщения();
ВыделенныеСтроки = Элементы[ИмяТЧ].ВыделенныеСтроки;
Если ВыделенныеСтроки.Количество() = 0 Тогда
ТекстПредупреждения = НСтр("ru = 'Необходимо выбрать строки, для которых необходимо округлить количество.'");
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстПредупреждения);
Возврат;
КонецЕсли;
ВсегоСтрок = 0;
Для Каждого ИдентификаторСтроки Из ВыделенныеСтроки Цикл
ДанныеСтроки = Объект[ИмяТЧ].НайтиПоИдентификатору(ИдентификаторСтроки);
Если Цел(ДанныеСтроки.КоличествоУпаковок) = ДанныеСтроки.КоличествоУпаковок Тогда
Продолжить;
КонецЕсли;
ВсегоСтрок = ВсегоСтрок + 1;
КонецЦикла;
Если ВсегоСтрок = 0 Тогда
ПоказатьОповещениеПользователя(
НСтр("ru = 'Округление не требуется'"),,
НСтр("ru = 'В выбранных строках уже целое количество единиц.'"),
БиблиотекаКартинок.Информация32);
Возврат;
КонецЕсли;
ТекстВопроса = НСтр("ru = 'В выбранных строках количество будет округлено до целых единиц.
|Продолжить?'");
ОписаниеОповещения = Новый ОписаниеОповещения("ОкруглитьДоЦелойУпаковкиЗавершение",
ЭтотОбъект,
Новый Структура("ИмяТЧ", ИмяТЧ));
СписокКнопок = Новый СписокЗначений;
СписокКнопок.Добавить(КодВозвратаДиалога.Да, НСтр("ru = 'Продолжить'"));
СписокКнопок.Добавить(КодВозвратаДиалога.Отмена);
ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, СписокКнопок);
КонецПроцедуры
&НаКлиенте
Процедура ОкруглитьДоЦелойУпаковкиЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
Если РезультатВопроса <> КодВозвратаДиалога.Да Тогда
Возврат;
КонецЕсли;
ОкруглитьДоЦелойУпаковкиНаСервере(ДополнительныеПараметры.ИмяТЧ, КэшированныеЗначения);
ТекстОповещения = НСтр("ru = 'В выбранных строках выполнено округление до целых единиц.'");
ПоказатьОповещениеПользователя(НСтр("ru = 'Выполнено округление'"),, ТекстОповещения, БиблиотекаКартинок.Успешно32);
КонецПроцедуры
&НаСервере
Процедура ОкруглитьДоЦелойУпаковкиНаСервере(ИмяТЧ, КэшированныеЗначения)
СтруктураДействий = Новый Структура;
МассивГруппировок = Новый Массив;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(ИмяТЧ, ЭтотОбъект, СтруктураДействий);
ОбрабатываемыеСтроки = Новый Массив();
Для Каждого ИдентификаторСтроки Из Элементы[ИмяТЧ].ВыделенныеСтроки Цикл
ДанныеСтроки = Объект[ИмяТЧ].НайтиПоИдентификатору(ИдентификаторСтроки);
Если Цел(ДанныеСтроки.КоличествоУпаковок) = ДанныеСтроки.КоличествоУпаковок Тогда
Продолжить;
КонецЕсли;
ДанныеСтроки.КоличествоУпаковок = Цел(ДанныеСтроки.КоличествоУпаковок) + 1;
ОбрабатываемыеСтроки.Добавить(ДанныеСтроки);
Если ИмяТЧ = "ВыходныеИзделия" Тогда
МассивГруппировок.Добавить(ДанныеСтроки.НомерГруппыЗатрат);
КонецЕсли;
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект[ИмяТЧ],
КэшированныеЗначения);
Если ИмяТЧ = "ВыходныеИзделия" Тогда
РассчитатьПроцентРаспределенияЗатратНаВыходныеИзделия(МассивГруппировок);
КонецЕсли;
ЗаполнитьСтатусыУказанияСерийСервер(ИмяТЧ);
КонецПроцедуры
&НаСервере
Процедура ТрудозатратыПодразделениеПриИзмененииНаСервере()
ТекущиеДанные = Объект.Трудозатраты.НайтиПоИдентификатору(Элементы.Трудозатраты.ТекущаяСтрока);
ЗаполнитьТипИсполнителяРабот(ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(ТекущиеДанные));
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьПодразделениеПоУмолчаниюВКоллекции(МассивСтрок)
Для Каждого Строка Из МассивСтрок Цикл
Если Не ЗначениеЗаполнено(Строка.Подразделение) Тогда
Строка.Подразделение = Объект.Подразделение;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьТипИсполнителяРабот(Коллекция)
Подразделения = Объект.Трудозатраты.Выгрузить(Коллекция).ВыгрузитьКолонку("Подразделение");
Реквизиты = ОбщегоНазначения.ЗначенияРеквизитовОбъектов(Подразделения,
"ИспользоватьБригадныеНаряды,ИспользоватьПерсональныеНаряды");
Для Каждого Строка Из Коллекция Цикл
Если ЗначениеЗаполнено(Строка.Подразделение)
И Не Реквизиты[Строка.Подразделение].ИспользоватьБригадныеНаряды
И ТипЗнч(Строка.Исполнитель) = Тип("СправочникСсылка.Бригады") Тогда
Строка.Исполнитель = Справочники.ФизическиеЛица.ПустаяСсылка();
Если УчетТрудозатратВРазрезеСотрудников Тогда
Строка.Исполнитель = Справочники.Сотрудники.ПустаяСсылка();
КонецЕсли;
ИначеЕсли ЗначениеЗаполнено(Строка.Подразделение)
И Не Реквизиты[Строка.Подразделение].ИспользоватьПерсональныеНаряды
И (ТипЗнч(Строка.Исполнитель) = Тип("СправочникСсылка.ФизическиеЛица")
ИЛИ ТипЗнч(Строка.Исполнитель) = Тип("СправочникСсылка.Сотрудники")
) Тогда
Строка.Исполнитель = Справочники.Бригады.ПустаяСсылка();
КонецЕсли;
Если Строка.Исполнитель = Неопределено Тогда
Строка.Исполнитель = Справочники.Бригады.ПустаяСсылка();
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ИсполнительПолучениеДанныхВыбора(ДанныеВыбора, Текст, Параметры)
ДанныеВыбора = Новый СписокЗначений;
ПроизводствоСервер.ЗаполнитьДанныеВыбораПриВводеИсполнителя(ДанныеВыбора, Текст, Параметры);
КонецПроцедуры
&НаСервере
Процедура ОбработкаПодбораТоваров(АдресВХранилище)
РезультатПодбора = ПолучитьИзВременногоХранилища(АдресВХранилище);
Таблица = РезультатПодбора.Товары;
ИменаПолей = "НомерСтроки";
ИмяТЧ = "МатериалыИРаботы";
СтруктураПоиска = Новый Структура(ИменаПолей);
Таблица.Сортировать(ИменаПолей + " Убыв");
ДеревоСтрок = Новый Массив();
Для Каждого СтрокаТаблицы Из Таблица Цикл
Если СтруктураПоиска.НомерСтроки <> СтрокаТаблицы.НомерСтроки Тогда
МассивСтрок = Новый Массив();
ДеревоСтрок.Добавить(МассивСтрок);
ЗаполнитьЗначенияСвойств(СтруктураПоиска, СтрокаТаблицы);
КонецЕсли;
МассивСтрок.Добавить(СтрокаТаблицы);
КонецЦикла;
ДобавленныеСтроки = Новый Массив();
СтруктураПоиска = Новый Структура(ИменаПолей);
Для Каждого ПодобранныеСтроки Из ДеревоСтрок Цикл
ЗаполнитьЗначенияСвойств(СтруктураПоиска, ПодобранныеСтроки[0]);
НайденныеСтроки = Объект[ИмяТЧ].НайтиСтроки(СтруктураПоиска);
Если НайденныеСтроки.Количество() = 0 Тогда
Для Каждого СтрокаИсточник Из ПодобранныеСтроки Цикл
Если СтрокаИсточник.Количество > 0 Тогда
СтрокаПриемник = Объект[ИмяТЧ].Добавить();
ЗаполнитьЗначенияСвойств(СтрокаПриемник, СтрокаИсточник);
ДобавленныеСтроки.Добавить(СтрокаПриемник);
КонецЕсли;
КонецЦикла;
Иначе
Если НайденныеСтроки.Количество() > 1 Тогда
Для Счетчик = 1 По НайденныеСтроки.Количество() - 1 Цикл
Объект[ИмяТЧ].Удалить(НайденныеСтроки[Счетчик]);
КонецЦикла;
КонецЕсли;
Если ПодобранныеСтроки.Количество() = 1 Тогда
СтрокаИсточник = ПодобранныеСтроки[0];
СтрокаПриемник = НайденныеСтроки[0];
Если СтрокаИсточник.Количество = 0 Тогда
Объект[ИмяТЧ].Удалить(СтрокаПриемник);
Иначе
ЗаполнитьЗначенияСвойств(СтрокаПриемник, СтрокаИсточник);
КонецЕсли;
Иначе
СтрокаПриемник = НайденныеСтроки[0];
СтрокаПриемник.Количество = 0;
Для Каждого СтрокаИсточник Из ПодобранныеСтроки Цикл
Если СтрокаИсточник.Количество > 0 Тогда
ЗаполнитьЗначенияСвойств(СтрокаПриемник, СтрокаИсточник);
СтрокаПриемник = Объект[ИмяТЧ].Добавить();
ДобавленныеСтроки.Добавить(СтрокаПриемник);
КонецЕсли;
КонецЦикла;
Если СтрокаПриемник.Количество = 0 Тогда
Объект[ИмяТЧ].Удалить(СтрокаПриемник);
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
МассивСтрок = Новый Массив;
СтруктураДействий = Неопределено;
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииНоменклатуры(ИмяТЧ, ЭтотОбъект, СтруктураДействий, Истина, Истина);
ДобавитьВСтруктуруДействияПоЦеховойКладовой(ИмяТЧ, СтруктураДействий, Истина, ИмяТЧ = "МатериалыИРаботы");
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ДобавленныеСтроки,
СтруктураДействий,
Объект[ИмяТЧ],
КэшированныеЗначения);
Для Каждого ТекущаяСтрока Из ДобавленныеСтроки Цикл
МассивСтрок.Добавить(ТекущаяСтрока.ПолучитьИдентификатор());
КонецЦикла;
ПродажиСерверЛокализация.ПеренестиШтрихкодыУпаковок(ЭтотОбъект, РезультатПодбора.ШтрихкодыУпаковок, "ШтрихкодыУпаковокМатериалы");
ПослеИзмененияСтрокТЧПрограммноНаСервере(ИмяТЧ, МассивСтрок, СтруктураДействий);
КонецПроцедуры
#КонецОбласти
#Область Прочее
&НаСервереБезКонтекста
Функция ЗначениеРеквизитаОбъекта(Объект, ИмяРеквизита)
Возврат ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект, ИмяРеквизита);
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ТаблицаОбъектаПоИмени(Объект, ИмяТЧ)
Если ИмяТЧ = "ВыходныеИзделия" Тогда
ТаблицаОбъекта = Объект.ВыходныеИзделия;
ИначеЕсли ИмяТЧ = "ПобочныеИзделия" Тогда
ТаблицаОбъекта = Объект.ПобочныеИзделия;
ИначеЕсли ИмяТЧ = "МатериалыИРаботы" Тогда
ТаблицаОбъекта = Объект.МатериалыИРаботы;
ИначеЕсли ИмяТЧ = "Трудозатраты" Тогда
ТаблицаОбъекта = Объект.Трудозатраты;
Иначе
ТаблицаОбъекта = Неопределено;
КонецЕсли;
Возврат ТаблицаОбъекта;
КонецФункции
#КонецОбласти
#КонецОбласти