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