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