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