#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ПроверитьРазрешениеДоступа(Отказ);
ИнициализироватьПомощник();
КонецПроцедуры
&НаСервере
Процедура ИнициализироватьПомощник()
ОбработкаОбъект = РеквизитФормыВЗначение("Объект");
ВариантИсправленияРазвернутогоСальдо = "СформироватьИсправленияРазвернутогоСальдо";
ЭтоУправлениеТорговлейБазовая = ПолучитьФункциональнуюОпцию("БазоваяВерсия")
И ПолучитьФункциональнуюОпцию("УправлениеТорговлей");
ЭтоВнешняяОбработка = ТипЗнч(ОбработкаОбъект) <> Тип("ОбработкаОбъект.ПомощникИсправленияОстатковТоваровОрганизаций");
АдресДополнительныхПараметровРезультатаКонтроляОформления = ПоместитьВоВременноеХранилище(Неопределено,
УникальныйИдентификатор);
Если Константы.КонтролироватьОстаткиТоваровОрганизаций.Получить() Тогда
ПроводитьБезКонтроляИсходноеЗначение = ПараметрыСеанса.ПроводитьБезКонтроляОстатковТоваровОрганизаций;
КонецЕсли;
Если ЭтоУправлениеТорговлейБазовая Тогда
ТекстОписанияПомощника = НСтр("ru = '1. Анализ и вывод подробной информации о проблемах
|2. Оформление недостающих документов по данным складского учета
|3. Переформирование резервов по отрицательным остаткам
|4. Исправление развернутого сальдо
|5. Оформление оприходований товаров'");
ТекстЗаголовкаШага6 = НСтр("ru = 'Шаг 5. Оформление оприходований товаров'");
Элементы.ДекорацияЗаголовокШаг6.Заголовок = ТекстЗаголовкаШага6;
Элементы.ДекорацияШаг0Описание2.Заголовок = ТекстОписанияПомощника;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
НастроитьЭлементыФормы();
КонецПроцедуры
&НаКлиенте
Процедура ПриЗакрытии(ЗавершениеРаботы)
Если Не ЗавершениеРаботы Тогда
УстановитьПроводитьБезКонтроляНаСервере(ПроводитьБезКонтроляИсходноеЗначение);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовФормы
&НаКлиенте
Процедура НастройкиПередачиМеждуОрганизациямиВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
ПараметрыОткрытияФормы = Новый Структура;
Ключ = КлючНастройкиПередачи(
Элемент.ТекущиеДанные.Владелец,
Элемент.ТекущиеДанные.Продавец,
Элемент.ТекущиеДанные.ТипЗапасовВладельца);
Если Ключ = Неопределено Тогда
ЗначенияЗаполнения = Новый Структура;
ЗначенияЗаполнения.Вставить("ОрганизацияВладелец", Элемент.ТекущиеДанные.Владелец);
ЗначенияЗаполнения.Вставить("ОрганизацияПродавец", Элемент.ТекущиеДанные.Продавец);
ЗначенияЗаполнения.Вставить("ТипЗапасов", Элемент.ТекущиеДанные.ТипЗапасовВладельца);
ЗначенияЗаполнения.Вставить("СпособПередачиТоваров", ПредопределенноеЗначение("Перечисление.СпособыПередачиТоваров.НеПередается"));
ПараметрыОткрытияФормы.Вставить("ЗначенияЗаполнения", ЗначенияЗаполнения);
Иначе
ПараметрыОткрытияФормы.Вставить("Ключ", Ключ);
КонецЕсли;
ОткрытьФорму(
"РегистрСведений.НастройкаПередачиТоваровМеждуОрганизациями.ФормаЗаписи",
ПараметрыОткрытияФормы,
ЭтаФорма,,,,
Новый ОписаниеОповещения("СформироватьПредставлениеЗаписиНастройкиПередачи", ЭтаФорма));
КонецПроцедуры
&НаКлиенте
Процедура КоличествоПозицийОтрицательныйОстатокНажатие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОткрытьОтчетОтрицательныеОстаткиНаКлиенте();
КонецПроцедуры
&НаКлиенте
Процедура КоличествоПозицийРазвернутоеСальдоНажатие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОткрытьОтчетРазвернутоеСальдоНаКлиенте();
КонецПроцедуры
&НаКлиенте
Процедура ДекорацияДиагностикаОтрицательныхОстатковПрочиеРешения2ОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
КонецПроцедуры
&НаКлиенте
Процедура ДекорацияДиагностикаОтрицательныхОстатковПрочиеРешения3ОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
КонецПроцедуры
&НаКлиенте
Процедура Шаг2ОтчетПоНедостающимДокументамОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка, ДополнительныеПараметры)
СтандартнаяОбработка = Ложь;
Если ТипЗнч(Расшифровка) = Тип("ИдентификаторРасшифровкиКомпоновкиДанных") Тогда
ДоступныеДействия = Новый Массив;
ДоступныеДействия.Добавить(ДействиеОбработкиРасшифровкиКомпоновкиДанных.ОткрытьЗначение);
ОбработкаРасшифровки = Новый ОбработкаРасшифровкиКомпоновкиДанных(
АдресДанныхРасшифровкиРезультатаКонтроляОформления,
Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСхемыРезультатаКонтроляОформления));
ОбработкаРасшифровки.ПоказатьВыборДействия(
Новый ОписаниеОповещения("ОбработкаВыбораДействияРасшифровки", ЭтаФорма),
Расшифровка,
ДоступныеДействия,,
Истина,
Элемент);
ИначеЕсли ТипЗнч(Расшифровка) = Тип("Строка") Тогда
ОтчетыУТКлиентПереопределяемый.ОбработатьРасшифровкуКонтрольОформленияДокументовТовародвижения(
ЭтаФорма, Расшифровка, "ОповещенияОЗакрытииРабочегоМестаОформленияДокументов",
ТекущаяДатаСервера(), Объект.ОтборыДляФормированияОтчетаКонтроля);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПерейтиКНастройкамПередачиТоваровМеждуОрганизациямиОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
ПроверитьРольНастройкаНСИДоступна(СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура КонтрольОформленияДетализацияПоПозициямПриИзменении(Элемент)
ПараметрыМетодов = Новый Структура;
ПараметрыМетодов.Вставить("СформироватьРезультатКонтроляОформленияДокументовТовародвижения", Новый Массив);
ПараметрыМетодов.СформироватьРезультатКонтроляОформленияДокументовТовародвижения.Добавить(
АдресДополнительныхПараметровРезультатаКонтроляОформления);
ПараметрыМетодов.СформироватьРезультатКонтроляОформленияДокументовТовародвижения.Добавить(
КонтрольОформленияДетализацияПоПозициям);
ВыполнитьМетодыОбъекта(
"ОбновитьДанныеПоОтрицательнымОстаткамИСальдо, СформироватьРезультатКонтроляОформленияДокументовТовародвижения",
ПараметрыМетодов,
"ЗавершитьФормированиеРезультатаКонтроляОформления");
КонецПроцедуры
&НаКлиенте
Процедура ДекорацияШаг6СмТакжеОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура НавигацияНазад(Команда)
ПереключитьСтраницу(-1);
КонецПроцедуры
&НаКлиенте
Процедура НавигацияДалее(Команда)
ПереключитьСтраницу(1);
КонецПроцедуры
&НаКлиенте
Процедура НавигацияПерейтиВНачало(Команда)
Если Объект.КоличествоПозицийОтрицательныйОстаток
Или Объект.КоличествоПозицийРазвернутоеСальдо Тогда
НачатьПереключениеНаСтраницу(1);
Иначе
ВыполнитьМетодыОбъекта(
"Инициализировать, ЗаполнитьМесяцИсправления, ОбновитьДанныеПоОтрицательнымОстаткамИСальдо",,
"ЗавершитьПереключениеНаСтраницу",
Новый Структура("НомерСтраницы", 1));
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура НавигацияЗакрыть(Команда)
Закрыть();
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьДанные(Команда)
НомерСтраницы = Число(СтрЗаменить(Элементы.ГруппаСтраницы.ТекущаяСтраница.Имя, "ГруппаШаг", ""));
Если НомерСтраницы = 2 Тогда
ПараметрыМетодов = Новый Структура;
ПараметрыМетодов.Вставить("СформироватьРезультатКонтроляОформленияДокументовТовародвижения", Новый Массив);
ПараметрыМетодов.СформироватьРезультатКонтроляОформленияДокументовТовародвижения.Добавить(
АдресДополнительныхПараметровРезультатаКонтроляОформления);
ПараметрыМетодов.СформироватьРезультатКонтроляОформленияДокументовТовародвижения.Добавить(
КонтрольОформленияДетализацияПоПозициям);
ВыполнитьМетодыОбъекта(
"ОбновитьДанныеПоОтрицательнымОстаткамИСальдо, СформироватьРезультатКонтроляОформленияДокументовТовародвижения",
ПараметрыМетодов,
"ЗавершитьФормированиеРезультатаКонтроляОформления");
ИначеЕсли НомерСтраницы = 3 Тогда
ВыполнитьМетодыОбъекта("ОбновитьДанныеПоОтрицательнымОстаткамИСальдо, ЗаполнитьТребуетсяПереформированиеРезервов");
ИначеЕсли НомерСтраницы = 4 Тогда
ВыполнитьМетодыОбъекта("ОбновитьДанныеПоОтрицательнымОстаткамИСальдо, ЗаполнитьТребуетсяИсправлениеРазвернутогоСальдо");
ИначеЕсли НомерСтраницы = 6 Тогда
ВыполнитьМетодыОбъекта("ОбновитьДанныеПоОтрицательнымОстаткамИСальдо, ЗаполнитьРаспоряженияНаОформлениеОприходований");
Иначе
ВыполнитьМетодыОбъекта("ОбновитьДанныеПоОтрицательнымОстаткамИСальдо");
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗапуститьПереформированиеРезервов(Команда)
ВыполнитьМетодыОбъекта(
"СформироватьНовыеРезервы,
|ОбновитьДанныеПоОтрицательнымОстаткамИСальдо,
|ЗаполнитьТребуетсяПереформированиеРезервов");
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьСписокСформированныхКорректировок(Команда)
ПараметрыОткрытияФормы = Новый Структура;
ПараметрыОткрытияФормы.Вставить("Отбор", Новый Структура);
ПараметрыОткрытияФормы.Отбор.Вставить("Ссылка", Новый Массив);
МассивОтбора = ПараметрыОткрытияФормы.Отбор.Ссылка;
Для Каждого Стр Из Объект.КорректировкиРезервов Цикл
МассивОтбора.Добавить(Стр.Документ);
КонецЦикла;
ОткрытьФорму("Документ.КорректировкаРегистров.ФормаСписка", ПараметрыОткрытияФормы, ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьОтчетОтрицательныеОстаткиТоваровОрганизаций(Команда)
ОткрытьОтчетОтрицательныеОстаткиНаКлиенте();
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьОтчетРазвернутоеСальдоПоВидамЗапасовИНомерамГТД(Команда)
ОткрытьОтчетРазвернутоеСальдоНаКлиенте();
КонецПроцедуры
&НаКлиенте
Процедура ЗапуститьИсправлениеРазвернутогоСальдо(Команда)
ВыполнитьМетодыОбъекта(
ВариантИсправленияРазвернутогоСальдо + ",
|ОбновитьДанныеПоОтрицательнымОстаткамИСальдо,
|ЗаполнитьТребуетсяИсправлениеРазвернутогоСальдо");
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьСписокСформированныхИсправленийОстатковТоваровОрганизаций(Команда)
ПараметрыОткрытияФормы = Новый Структура;
ПараметрыОткрытияФормы.Вставить("Отбор", Новый Структура);
ПараметрыОткрытияФормы.Отбор.Вставить("Ссылка", Новый Массив);
МассивОтбора = ПараметрыОткрытияФормы.Отбор.Ссылка;
Для Каждого Стр Из Объект.ИсправленияОстатковТоваровОрганизаций Цикл
МассивОтбора.Добавить(Стр.Документ);
КонецЦикла;
ОткрытьФорму("Документ.ИсправлениеРазвернутогоСальдоТоваровОрганизаций.ФормаСписка", ПараметрыОткрытияФормы, ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьСписокИзмененныхДокументов(Команда)
ПараметрыОткрытияФормы = Новый Структура;
ПараметрыОткрытияФормы.Вставить("РежимВыбораСтроки", "ОткрытьФормуОбъекта");
ПараметрыОткрытияФормы.Вставить("Отбор", Новый Структура);
ПараметрыОткрытияФормы.Отбор.Вставить("Ссылка", Новый Массив);
МассивОтбора = ПараметрыОткрытияФормы.Отбор.Ссылка;
Для Каждого Стр Из Объект.ИзмененныеДокументы Цикл
МассивОтбора.Добавить(Стр.Документ);
КонецЦикла;
ОткрытьФорму("РегистрСведений.РеестрДокументов.ФормаСписка", ПараметрыОткрытияФормы, ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ЗапуститьПомощникФормированияПередачИВыкуповТоваров(Команда)
ПараметрыОткрытияПомощникаФормирования = Новый Структура;
ПараметрыОткрытияПомощникаФормирования.Вставить("РежимЗапуска", "ИсправлениеОтрицательныхОстатков");
ПараметрыОткрытияПомощникаФормирования.Вставить("МесяцИсправления", Объект.МесяцИсправления);
ПараметрыОткрытияПомощникаФормирования.Вставить("Организация", Элементы.ОрганизацииДляФормированияПередач.ТекущиеДанные.Организация);
ПараметрыОткрытияПомощникаФормирования.Вставить("ТипЗапасов", Элементы.ОрганизацииДляФормированияПередач.ТекущиеДанные.ТипЗапасов);
ПараметрыОткрытияПомощникаФормирования.Вставить("Источники", Новый Массив);
Для Каждого Стр Из Объект.НовыеНастройкиПередачиМеждуОрганизациями Цикл
Если Стр.Продавец = Элементы.ОрганизацииДляФормированияПередач.ТекущиеДанные.Организация Тогда
ПараметрыОткрытияПомощникаФормирования.Источники.Добавить(Новый Структура("Отправитель, ТипЗапасов", Стр.Владелец, Стр.ТипЗапасовВладельца));
КонецЕсли;
КонецЦикла;
ПараметрыОткрытияПомощникаФормирования.Вставить("ОтборНоменклатура", Новый СписокЗначений);
ПараметрыОткрытияПомощникаФормирования.Вставить("ОтборСклады", Новый СписокЗначений);
Для Каждого Стр Из Объект.ОтборыДляФормированияПередач Цикл
Если Стр.Организация = Элементы.ОрганизацииДляФормированияПередач.ТекущиеДанные.Организация
И Стр.ТипЗапасов = Элементы.ОрганизацииДляФормированияПередач.ТекущиеДанные.ТипЗапасов Тогда
ПараметрыОткрытияПомощникаФормирования.ОтборНоменклатура.Добавить(Стр.Номенклатура);
ПараметрыОткрытияПомощникаФормирования.ОтборСклады.Добавить(Стр.Склад);
КонецЕсли;
КонецЦикла;
ОткрытьФорму(
"Обработка.ФормированиеПередачТоваровМеждуОрганизациямиИВыкупов.Форма",
ПараметрыОткрытияПомощникаФормирования,
ЭтаФорма,,,,
Новый ОписаниеОповещения("ОповещениеОЗакрытииПомощникаФормированияПередач", ЭтаФорма),
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура ЗапуститьФормированиеРезервовПоНовымНастройкам(Команда)
Если Не ПроверитьЗаполнение() Тогда
Возврат;
КонецЕсли;
ВыполнитьМетодыОбъекта(
"СформироватьНовыеРезервыПоНовымНастройкам,
|ОбновитьДанныеПоОтрицательнымОстаткамИСальдо,
|ЗаполнитьНовыеНастройкиПередачи");
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьСписокСформированныхКорректировокПоНовымНастройкам(Команда)
ПараметрыОткрытияФормы = Новый Структура;
ПараметрыОткрытияФормы.Вставить("Отбор", Новый Структура);
ПараметрыОткрытияФормы.Отбор.Вставить("Ссылка", Новый Массив);
МассивОтбора = ПараметрыОткрытияФормы.Отбор.Ссылка;
Для Каждого Стр Из Объект.КорректировкиРезервовПоНовымНастройкам Цикл
МассивОтбора.Добавить(Стр.Документ);
КонецЦикла;
ОткрытьФорму("Документ.КорректировкаРегистров.ФормаСписка", ПараметрыОткрытияФормы, ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ОформитьОприходование(Команда)
ПараметрыОткрытияФормы = Новый Структура;
ПараметрыОткрытияФормы.Вставить("Основание", Новый Структура);
ПараметрыОткрытияФормы.Основание.Вставить("ПомощникИсправленияОстатковТоваровОрганизаций");
ПараметрыОткрытияФормы.Основание.Вставить("Дата", Объект.МесяцИсправления);
ПараметрыОткрытияФормы.Основание.Вставить("Организация", Элементы.РаспоряженияНаОформлениеОприходований.ТекущиеДанные.Организация);
ПараметрыОткрытияФормы.Основание.Вставить("Склад", Элементы.РаспоряженияНаОформлениеОприходований.ТекущиеДанные.Склад);
ПараметрыОткрытияФормы.Основание.Вставить("Товары", Новый Массив);
СтруктураПоиска = Новый Структура;
СтруктураПоиска.Вставить("Организация", Элементы.РаспоряженияНаОформлениеОприходований.ТекущиеДанные.Организация);
СтруктураПоиска.Вставить("Склад", Элементы.РаспоряженияНаОформлениеОприходований.ТекущиеДанные.Склад);
СтрокиДанныеЗаполнения = Объект.ДанныеДляЗаполненияОприходований.НайтиСтроки(СтруктураПоиска);
МассивТовары = ПараметрыОткрытияФормы.Основание.Товары;
Для Каждого СтрДанныеЗаполнения Из СтрокиДанныеЗаполнения Цикл
СтрТовары = Новый Структура("АналитикаУчетаНоменклатуры, Номенклатура, Характеристика, Назначение, НомерГТД, Серия, ВидЗапасов, Количество");
ЗаполнитьЗначенияСвойств(СтрТовары, СтрДанныеЗаполнения);
МассивТовары.Добавить(СтрТовары);
КонецЦикла;
ОткрытьФорму(
"Документ.ОприходованиеИзлишковТоваров.ФормаОбъекта",
ПараметрыОткрытияФормы,
ЭтаФорма,,,,
Новый ОписаниеОповещения("ОповещениеОЗакрытииФормыОприходования", ЭтаФорма));
КонецПроцедуры
&НаКлиенте
Процедура ОформитьПроизводствоБезЗаказа(Команда)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура СформироватьИсправительныеСчетаФактуры(Команда)
ВыполнитьМетодыОбъекта("СформироватьИсправительныеСчетаФактуры");
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьСписокСформированныхИсправительныхСчетовФактур(Команда)
ПараметрыОткрытияФормы = Новый Структура;
ПараметрыОткрытияФормы.Вставить("РежимВыбораСтроки", "ОткрытьФормуОбъекта");
ПараметрыОткрытияФормы.Вставить("Отбор", Новый Структура);
ПараметрыОткрытияФормы.Отбор.Вставить("Ссылка", Новый Массив);
МассивОтбора = ПараметрыОткрытияФормы.Отбор.Ссылка;
Для Каждого Стр Из Объект.ИсправительныеСчетаФактуры Цикл
МассивОтбора.Добавить(Стр.Документ);
КонецЦикла;
ОткрытьФорму("РегистрСведений.РеестрДокументов.ФормаСписка", ПараметрыОткрытияФормы, ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура НавигацияПерейтиВКонец(Команда)
НачатьПереключениеНаСтраницу(7);
КонецПроцедуры
&НаКлиенте
Процедура НапечататьИсправительныеСчетаФактуры(Команда)
УчетНДСУПКлиент.ПечатьИсправительныхСчетовФактурПоИзмененнымДокументам(Объект.ИсправительныеСчетаФактуры, ЭтаФорма);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
Процедура ВыполнитьМетодыОбъектаНаСервере(ИменаМетодов, ПараметрыМетодов = Неопределено)
Методы = СтрРазделить(ИменаМетодов, ",");
ОбработкаОбъект = РеквизитФормыВЗначение("Объект");
Если Не ЭтоВнешняяОбработка Тогда
ИменаДлительныхОпераций = ОбработкаОбъект.ИменаДлительныхОпераций();
Для Каждого Метод Из Методы Цикл
Метод = СокрЛП(Метод);
Если ИменаДлительныхОпераций.Найти(Метод) <> Неопределено Тогда
ВыполнениеВФоне = Истина;
Прервать;
КонецЕсли;
КонецЦикла;
Если ВыполнениеВФоне Тогда
ДополнительныеПараметры = Новый Структура(
"ИменаМетодов, ПараметрыМетодов, СтруктураОбъектаОбработки",
ИменаМетодов, ПараметрыМетодов, ОбработкаОбъект.СтруктураДанных());
ПараметрыВыполненияВФоне = ДлительныеОперации.ПараметрыВыполненияВФоне(УникальныйИдентификатор);
РезультатВыполненияВФоне = ДлительныеОперации.ВыполнитьВФоне(
"Обработки.ПомощникИсправленияОстатковТоваровОрганизаций.ВыполнитьМетодыОбъекта",
ДополнительныеПараметры,
ПараметрыВыполненияВФоне);
КонецЕсли;
КонецЕсли;
Если Не ВыполнениеВФоне Тогда
ДополнительныеПараметры = Новый Структура("ИменаМетодов, ПараметрыМетодов", ИменаМетодов, ПараметрыМетодов);
Обработки.ПомощникИсправленияОстатковТоваровОрганизаций.ВыполнитьМетодыОбъекта(
ДополнительныеПараметры,,
ОбработкаОбъект);
ЗначениеВРеквизитФормы(ОбработкаОбъект, "Объект");
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗагрузитьРезультатВыполненияФоновогоЗаданияНаСервере();
СтруктураОбъектаОбработки = ПолучитьИзВременногоХранилища(РезультатВыполненияВФоне.АдресРезультата);
Если СтруктураОбъектаОбработки = Неопределено Тогда
Возврат;
КонецЕсли;
Для Каждого ПолеСтруктуры Из СтруктураОбъектаОбработки Цикл
Если ТипЗнч(ПолеСтруктуры.Значение) = Тип("ТаблицаЗначений") Тогда
Объект[ПолеСтруктуры.Ключ].Загрузить(ПолеСтруктуры.Значение);
Иначе
Объект[ПолеСтруктуры.Ключ] = ПолеСтруктуры.Значение;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаСервереБезКонтекста
Функция КлючНастройкиПередачи(ОрганизацияВладелец, ОрганизацияПродавец, ТипЗапасов)
МенеджерЗаписи = РегистрыСведений.НастройкаПередачиТоваровМеждуОрганизациями.СоздатьМенеджерЗаписи();
МенеджерЗаписи.ОрганизацияВладелец = ОрганизацияВладелец;
МенеджерЗаписи.ОрганизацияПродавец = ОрганизацияПродавец;
МенеджерЗаписи.ТипЗапасов = ТипЗапасов;
МенеджерЗаписи.Прочитать();
Если МенеджерЗаписи.Выбран() Тогда
ЗначенияКлюча = Новый Структура(
"ОрганизацияВладелец, ОрганизацияПродавец, ТипЗапасов",
ОрганизацияВладелец, ОрганизацияПродавец, ТипЗапасов);
Возврат РегистрыСведений.НастройкаПередачиТоваровМеждуОрганизациями.СоздатьКлючЗаписи(ЗначенияКлюча);
Иначе
Возврат Неопределено
КонецЕсли;
КонецФункции
&НаКлиенте
Процедура НастроитьЭлементыФормы()
НомерСтраницы = Число(СтрЗаменить(Элементы.ГруппаСтраницы.ТекущаяСтраница.Имя, "ГруппаШаг", ""));
ЕстьПроблема = Объект.КоличествоПозицийОтрицательныйОстаток
Или Объект.КоличествоПозицийРазвернутоеСальдо;
Элементы.НавигацияДалее.Видимость = ЕстьПроблема;
Элементы.НавигацияДалее.КнопкаПоУмолчанию = ЕстьПроблема;
Элементы.НавигацияПерейтиВКонец.Видимость = Не ЕстьПроблема;
Элементы.НавигацияПерейтиВКонец.КнопкаПоУмолчанию = Не ЕстьПроблема;
Элементы.НавигацияПерейтиВНачало.Видимость = Ложь;
Элементы.НавигацияПерейтиВНачало.Заголовок = ?(ЕстьПроблема, НСтр("ru = 'Перейти в начало'"), НСтр("ru = 'Следующий месяц'"));
Элементы.НавигацияЗакрыть.Видимость = Ложь;
Элементы.НавигацияНазад.Видимость = Истина;
Элементы.ДекорацияГруппаНавигацияПояснениеТекст.Видимость = Истина;
Элементы.ГруппаОбновитьЗаголовок.Видимость = Истина;
Элементы.ДекорацияГруппаНавигацияПредупреждениеТекст.Видимость = Ложь;
Если НомерСтраницы = 0 Тогда
Элементы.НавигацияДалее.Видимость = Ложь;
Элементы.НавигацияПерейтиВНачало.Видимость = Истина;
Элементы.НавигацияПерейтиВНачало.Заголовок = НСтр("ru = 'Начать'");
Элементы.НавигацияПерейтиВНачало.КнопкаПоУмолчанию = Истина;
Элементы.НавигацияПерейтиВКонец.Видимость = Ложь;
Элементы.ГруппаОбновитьЗаголовок.Видимость = Ложь;
Элементы.ДекорацияГруппаНавигацияПояснениеТекст.Видимость = Ложь;
Элементы.НавигацияНазад.Видимость = Ложь;
КонецЕсли;
Если НомерСтраницы = 1 Тогда
ПредставлениеМесяцаИсправления =
ОбщегоНазначенияУТКлиентСервер.ПолучитьПредставлениеПериодаРегистрации(Объект.МесяцИсправления);
Элементы.ДекорацияГруппаНавигацияПояснениеТекст.Видимость = Ложь;
Элементы.ГруппаДиагностикаОтрицательныхОстатков.ТекущаяСтраница =
?(Объект.КоличествоПозицийОтрицательныйОстаток,
Элементы.ГруппаДиагностикаОтрицательныхОстатковСостояниеПроблема,
Элементы.ГруппаДиагностикаОтрицательныхОстатковСостояниеНетПроблем);
Элементы.ГруппаДиагностикаОтрицательныхОстатковПрочиеРешения.Видимость = Объект.КоличествоПозицийОтрицательныйОстатокПрочее > 0;
Элементы.ГруппаДиагностикаРазвернутогоСальдо.Видимость = Не (Объект.КоличествоПозицийРазвернутоеСальдо = 0
И Объект.КоличествоПозицийОтрицательныйОстаток > 0);
Элементы.ГруппаДиагностикаРазвернутогоСальдо.ТекущаяСтраница =
?(Объект.КоличествоПозицийРазвернутоеСальдо,
Элементы.ГруппаДиагностикаРазвернутогоСальдоСостояниеПроблема,
Элементы.ГруппаДиагностикаРазвернутогоСальдоСостояниеНетПроблем);
Элементы.ГруппаМесяцИсправления.Видимость = ЕстьПроблема;
Элементы.ПредставлениеМесяцаИсправленияПодсказка.Видимость = ЕстьПроблема;
Элементы.НавигацияЗакрыть.Видимость = Не ЕстьПроблема;
Элементы.НавигацияЗакрыть.КнопкаПоУмолчанию = Не ЕстьПроблема;
Элементы.НавигацияПерейтиВКонец.Видимость = Ложь;
КонецЕсли;
Если НомерСтраницы = 2 Тогда
РезультатКонтроляПустой = Объект.РезультатКонтроляОформления.ВысотаТаблицы = 0
И Объект.РезультатКонтроляОформления.ШиринаТаблицы = 0;
Элементы.ГруппаШаг2СостояниеПроблема.Видимость = Не РезультатКонтроляПустой;
Элементы.ГруппаШаг2СостояниеНетПроблемы.Видимость = РезультатКонтроляПустой;
КонецЕсли;
Если НомерСтраницы = 3 Тогда
КорректировкиРезервовКоличество = Объект.КорректировкиРезервов.Количество();
НастроитьГиперссылкуСпискаДокументов(
НСтр("ru = 'Открыть список сформированных корректировок'"),
КорректировкиРезервовКоличество,
Элементы.ОткрытьСписокСформированныхКорректировок);
Элементы.ДекорацияВыполнитьДорезервированиеПояснение2.Заголовок = СформироватьЗаголовокШаг3Пояснение2();
Элементы.ГруппаШаг3СостояниеПроблема.Видимость = Объект.ТребуетсяПереформированиеРезервов;
Элементы.ГруппаШаг3СостояниеНетПроблемы.Видимость = Не Объект.ТребуетсяПереформированиеРезервов;
КонецЕсли;
Если НомерСтраницы = 4 Тогда
ИзмененныеДокументыКоличество = Объект.ИзмененныеДокументы.Количество();
НастроитьГиперссылкуСпискаДокументов(
НСтр("ru = 'Открыть список измененных документов'"),
ИзмененныеДокументыКоличество,
Элементы.ОткрытьСписокИзмененныхДокументов);
ЕстьИзмененияНомеровГТД = Ложь;
Для Каждого Стр Из Объект.ИзмененныеДокументы Цикл
Если Стр.ВыданСчетФактура И Стр.НомераГТДИзменились Тогда
ЕстьИзмененияНомеровГТД = Истина;
Прервать;
КонецЕсли;
КонецЦикла;
Элементы.СформироватьИсправительныеСчетаФактуры.Доступность = ИзмененныеДокументыКоличество И ЕстьИзмененияНомеровГТД;
ИсправительныеСчетаФактурыКоличество = Объект.ИсправительныеСчетаФактуры.Количество();
Элементы.ПечатьИсправительныхСчетовФактур.Доступность = ИсправительныеСчетаФактурыКоличество;
НастроитьГиперссылкуСпискаДокументов(
НСтр("ru = 'Открыть список сформированных исправительных счетов-фактур'"),
ИсправительныеСчетаФактурыКоличество,
Элементы.ОткрытьСписокСформированныхИсправительныхСчетовФактур);
ИсправленияОстатковТоваровОрганизацийКоличество = Объект.ИсправленияОстатковТоваровОрганизаций.Количество();
НастроитьГиперссылкуСпискаДокументов(
НСтр("ru = 'Открыть список сформированных исправлений'"),
ИсправленияОстатковТоваровОрганизацийКоличество,
Элементы.ОткрытьСписокСформированныхИсправленийОстатковТоваровОрганизаций);
Элементы.ГруппаШаг4СостояниеПроблема.Видимость = Объект.ТребуетсяИсправлениеРазвернутогоСальдо Или Объект.ТребуетсяПерезаполнитьВидыЗапасов;
Элементы.ДекорацияШаг4Пояснение1.Видимость = Не Объект.ТребуетсяИсправлениеРазвернутогоСальдо И Не Объект.ТребуетсяПерезаполнитьВидыЗапасов;
Элементы.ДекорацияШаг4Пояснение2.Видимость = Объект.ТребуетсяИсправлениеРазвернутогоСальдо И Не Объект.ТребуетсяПерезаполнитьВидыЗапасов;
Элементы.ДекорацияШаг4Пояснение3.Видимость = Не Объект.ТребуетсяИсправлениеРазвернутогоСальдо И Объект.ТребуетсяПерезаполнитьВидыЗапасов;
Элементы.ВариантИсправленияРазвернутогоСальдо1.Видимость = Объект.ТребуетсяИсправлениеРазвернутогоСальдо;
Элементы.ГруппаШаг4ПояснениеВарианта1.Видимость = Объект.ТребуетсяИсправлениеРазвернутогоСальдо;
Элементы.ГруппаШаг4СостояниеНетПроблемы.Видимость = Не Объект.ТребуетсяИсправлениеРазвернутогоСальдо И Не Объект.ТребуетсяПерезаполнитьВидыЗапасов;
Если Не Объект.ТребуетсяИсправлениеРазвернутогоСальдо И Объект.ТребуетсяПерезаполнитьВидыЗапасов Тогда
ВариантИсправленияРазвернутогоСальдо = "ПерезаполнитьВидыЗапасов";
КонецЕсли;
КонецЕсли;
Если НомерСтраницы = 5 Тогда
КорректировкиРезервовПоНовымНастройкамКоличество = Объект.КорректировкиРезервовПоНовымНастройкам.Количество();
НастроитьГиперссылкуСпискаДокументов(
НСтр("ru = 'Открыть список сформированных корректировок по новым настройкам'"),
КорректировкиРезервовПоНовымНастройкамКоличество,
Элементы.ОткрытьСписокСформированныхКорректировокПоНовымНастройкам);
Элементы.ГруппаШаг5СостояниеПроблема.Видимость = Объект.ОрганизацииДляФормированияПередач.Количество();
Элементы.ГруппаШаг5СостояниеНетПроблемы.Видимость = Не Объект.ОрганизацииДляФормированияПередач.Количество();
КонецЕсли;
Если НомерСтраницы = 6 Тогда
Элементы.ДекорацияГруппаНавигацияПояснениеТекст.Видимость = Ложь;
Элементы.НавигацияДалее.Видимость = Ложь;
Элементы.НавигацияПерейтиВКонец.Видимость = Истина;
Элементы.НавигацияПерейтиВКонец.КнопкаПоУмолчанию = Истина;
Элементы.ГруппаШаг6СостояниеПроблема.Видимость = Объект.РаспоряженияНаОформлениеОприходований.Количество();
Элементы.ГруппаШаг6СостояниеНетПроблемы.Видимость = Не Объект.РаспоряженияНаОформлениеОприходований.Количество();
Элементы.РаспоряженияНаОформлениеОприходованийОформитьПроизводствоБезЗаказа.Видимость = ИспользуетсяПроизводство;
Элементы.ДекорацияШаг6СмТакже.Видимость = ИспользуетсяПроизводство;
КонецЕсли;
Если НомерСтраницы = 7 Тогда
ЗаголовокОтчета = НСтр("ru = 'Отчет о проделанной работе за %МесяцИсправления%'");
ЗаголовокОтчета =
СтрЗаменить(ЗаголовокОтчета, "%МесяцИсправления%" ,НРег(Формат(Объект.МесяцИсправления, Нстр("ru='ДФ=''MMMM yyyy'''"))));
Элементы.ДекорацияЗаголовокШаг7.Заголовок = ЗаголовокОтчета;
Элементы.ГруппаШаг7ДиагностикаОтрицательныхОстатков.Видимость = Объект.КоличествоПозицийОтрицательныйОстаток;
Элементы.ГруппаШаг7ДиагностикаРазвернутогоСальдо.Видимость = Объект.КоличествоПозицийРазвернутоеСальдо;
Элементы.НавигацияПерейтиВНачало.Видимость = Истина;
Элементы.НавигацияПерейтиВНачало.КнопкаПоУмолчанию = Истина;
Элементы.НавигацияПерейтиВКонец.Видимость = Ложь;
Элементы.ГруппаОбновитьЗаголовок.Видимость = Ложь;
Элементы.ДекорацияГруппаНавигацияПояснениеТекст.Видимость = Ложь;
Элементы.ДекорацияГруппаНавигацияПредупреждениеТекст.Видимость = Не ЕстьПроблема;
Элементы.НавигацияДалее.Видимость = Ложь;
Элементы.НавигацияЗакрыть.Видимость = Истина;
ИзмененныеДокументыКоличество = Объект.ИзмененныеДокументы.Количество();
НастроитьГиперссылкуСпискаДокументов(
НСтр("ru = 'Открыть список измененных документов'"),
ИзмененныеДокументыКоличество,
Элементы.ОткрытьСписокИзмененныхДокументовШаг7);
НастроитьГиперссылкуСпискаДокументов(
НСтр("ru = 'Открыть список сформированных корректировок резервов'"),
Объект.КорректировкиРезервов.Количество(),
Элементы.ОткрытьСписокСформированныхКорректировокШаг7);
НастроитьГиперссылкуСпискаДокументов(
НСтр("ru = 'Открыть список сформированных исправлений развернутого сальдо товаров организаций'"),
Объект.ИсправленияОстатковТоваровОрганизаций.Количество(),
Элементы.ОткрытьСписокСформированныхКорректировокОстатковТоваровОрганизацийШаг7);
НастроитьГиперссылкуСпискаДокументов(
НСтр("ru = 'Открыть список сформированных корректировок резервов по новым настройкам'"),
Объект.КорректировкиРезервовПоНовымНастройкам.Количество(),
Элементы.ОткрытьСписокСформированныхКорректировокПоНовымНастройкамШаг7);
НастроитьГиперссылкуСпискаДокументов(
НСтр("ru = 'Открыть список сформированных исправительных счетов-фактур'"),
Объект.ИсправительныеСчетаФактуры.Количество(),
Элементы.ОткрытьСписокСформированныхИсправительныхСчетовФактурШаг7);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПереключитьСтраницу(Дельта)
НомерСтраницы = Число(СтрЗаменить(Элементы.ГруппаСтраницы.ТекущаяСтраница.Имя, "ГруппаШаг", ""));
НомерСтраницы = НомерСтраницы + Дельта;
Если НомерСтраницы = 5
И ЭтоУправлениеТорговлейБазовая Тогда
НомерСтраницы = НомерСтраницы + Дельта;
КонецЕсли;
НачатьПереключениеНаСтраницу(НомерСтраницы);
КонецПроцедуры
&НаКлиенте
Процедура НачатьПереключениеНаСтраницу(НомерСтраницы)
ОбработчикЗавершения = "ЗавершитьПереключениеНаСтраницу";
ПараметрыОбработчикаЗавершения = Новый Структура;
ПараметрыОбработчикаЗавершения.Вставить("НомерСтраницы", НомерСтраницы);
Если НомерСтраницы = 2 Тогда
Если ПроводитьБезКонтроляИсходноеЗначение = Ложь Тогда
УстановитьПроводитьБезКонтроляНаСервере(Истина);
КонецЕсли;
ПараметрыМетодов = Новый Структура;
ПараметрыМетодов.Вставить("СформироватьРезультатКонтроляОформленияДокументовТовародвижения", Новый Массив);
ПараметрыМетодов.СформироватьРезультатКонтроляОформленияДокументовТовародвижения.Добавить(
АдресДополнительныхПараметровРезультатаКонтроляОформления);
ПараметрыМетодов.СформироватьРезультатКонтроляОформленияДокументовТовародвижения.Добавить(
КонтрольОформленияДетализацияПоПозициям);
ВыполнитьМетодыОбъекта(
"СформироватьРезультатКонтроляОформленияДокументовТовародвижения",
ПараметрыМетодов,
"ЗавершитьФормированиеРезультатаКонтроляОформления");
ИначеЕсли НомерСтраницы = 3 Тогда
ВыполнитьМетодыОбъекта("ЗаполнитьТребуетсяПереформированиеРезервов",,ОбработчикЗавершения, ПараметрыОбработчикаЗавершения)
ИначеЕсли НомерСтраницы = 4 Тогда
ВыполнитьМетодыОбъекта("ЗаполнитьТребуетсяИсправлениеРазвернутогоСальдо",, ОбработчикЗавершения, ПараметрыОбработчикаЗавершения);
ИначеЕсли НомерСтраницы = 5 Тогда
ВыполнитьМетодыОбъекта("ЗаполнитьНовыеНастройкиПередачи",, ОбработчикЗавершения, ПараметрыОбработчикаЗавершения);
ИначеЕсли НомерСтраницы = 6 Тогда
ВыполнитьМетодыОбъекта("ЗаполнитьРаспоряженияНаОформлениеОприходований",, ОбработчикЗавершения, ПараметрыОбработчикаЗавершения);
Иначе
ЗавершитьПереключениеНаСтраницу(НомерСтраницы);
НастроитьЭлементыФормы();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура НастроитьГиперссылкуСпискаДокументов(ЗаголовокКоманды, КоличествоДокументов, ЭлементКомандыНаФорме)
Если КоличествоДокументов Тогда
ЗаголовокКоманды =
ЗаголовокКоманды + " (" + Формат(КоличествоДокументов) + ")";
КонецЕсли;
ЭлементКомандыНаФорме.Заголовок = ЗаголовокКоманды;
ЭлементКомандыНаФорме.Доступность = КоличествоДокументов > 0;
КонецПроцедуры
&НаКлиенте
Процедура ВыполнитьМетодыОбъекта(
ИменаМетодов,
ПараметрыМетодов = Неопределено,
ОбработчикЗавершения = Неопределено,
ПараметрыОбработчикаЗавершения = Неопределено)
ДополнительныеПараметры = Новый Структура(
"ОбработчикЗавершения, ПараметрыОбработчикаЗавершения",
ОбработчикЗавершения, ПараметрыОбработчикаЗавершения);
ВыполнитьМетодыОбъектаНаСервере(ИменаМетодов, ПараметрыМетодов);
Если ВыполнениеВФоне Тогда
ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);
ПараметрыОжидания.ВыводитьОкноОжидания = Истина;
Если СтрНайти(ИменаМетодов,"ПерезаполнитьВидыЗапасов") Тогда
ПараметрыОжидания.ВыводитьПрогрессВыполнения = Истина;
КонецЕсли;
ОповещениеОЗавершении = Новый ОписаниеОповещения("ЗагрузитьРезультатВыполненияФоновогоЗадания", ЭтаФорма, ДополнительныеПараметры);
ДлительныеОперацииКлиент.ОжидатьЗавершение(РезультатВыполненияВФоне, ОповещениеОЗавершении, ПараметрыОжидания);
Иначе
ЗавершитьВыполнениеОбработчика(ДополнительныеПараметры);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьРезультатВыполненияФоновогоЗадания(Результат, ДополнительныеПараметры) Экспорт
ВыполнениеВФоне = Ложь;
Если Результат <> Неопределено Тогда
ЗагрузитьРезультатВыполненияФоновогоЗаданияНаСервере();
Если Результат.Статус = "Ошибка" Тогда
НастроитьЭлементыФормы();
ВызватьИсключение Результат.КраткоеПредставлениеОшибки;
КонецЕсли;
ЗавершитьВыполнениеОбработчика(ДополнительныеПараметры);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗавершитьВыполнениеОбработчика(ДополнительныеПараметры)
Если ДополнительныеПараметры.ОбработчикЗавершения = "ЗавершитьПереключениеНаСтраницу" Тогда
ЗавершитьПереключениеНаСтраницу(ДополнительныеПараметры.ПараметрыОбработчикаЗавершения.НомерСтраницы);
НастроитьЭлементыФормы();
ИначеЕсли ДополнительныеПараметры.ОбработчикЗавершения = "ЗавершитьФормированиеРезультатаКонтроляОформления" Тогда
ЗавершитьФормированиеРезультатаКонтроляОформления(
АдресДополнительныхПараметровРезультатаКонтроляОформления,
УникальныйИдентификатор,
АдресСхемыРезультатаКонтроляОформления,
АдресДанныхРасшифровкиРезультатаКонтроляОформления);
ЗавершитьПереключениеНаСтраницу(2);
НастроитьЭлементыФормы();
Иначе
НастроитьЭлементыФормы();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗавершитьПереключениеНаСтраницу(НомерСтраницы)
Элементы.ГруппаСтраницы.ТекущаяСтраница =
Элементы.Найти("ГруппаШаг" + Формат(НомерСтраницы, "ЧН=0; ЧГ="));
КонецПроцедуры
&НаКлиенте
Функция СформироватьЗаголовокШаг3Пояснение2()
МесяцРодительныйПадеж = МесяцРодительныйПадеж(Объект.МесяцИсправления);
Год = Формат(Объект.МесяцИсправления, "ДФ=yyyy");
ТекстЗаголовка = НСтр("ru = 'При запуске переформирования резервов будут очищены движения регистра ""Резервы товаров организаций"" по проблемным позициям, начиная с %МесяцРодительныйПадеж% %Год% года, и сформированы новые резервы по отрицательным остаткам. Новые резервы будут записаны в документы корректировок регистров. Для каждой организации будет создан отдельный документ.'");
ТекстЗаголовка = СтрЗаменить(ТекстЗаголовка, "%МесяцРодительныйПадеж%", НРег(МесяцРодительныйПадеж));
ТекстЗаголовка = СтрЗаменить(ТекстЗаголовка, "%Год%", Год);
Возврат ТекстЗаголовка;
КонецФункции
&НаКлиенте
Функция МесяцРодительныйПадеж(Дата)
Месяцы = Новый Соответствие;
Месяцы.Вставить(1, "января");
Месяцы.Вставить(2, "февраля");
Месяцы.Вставить(3, "марта");
Месяцы.Вставить(4, "апреля");
Месяцы.Вставить(5, "мая");
Месяцы.Вставить(6, "июня");
Месяцы.Вставить(7, "июля");
Месяцы.Вставить(8, "августа");
Месяцы.Вставить(9, "сентября");
Месяцы.Вставить(10, "октября");
Месяцы.Вставить(11, "ноября");
Месяцы.Вставить(12, "декабря");
Возврат Месяцы.Получить(Месяц(Дата));
КонецФункции
&НаКлиенте
Процедура ОткрытьОтчетРазвернутоеСальдоНаКлиенте()
ПараметрыОткрытияФормыОтчета = Новый Структура;
ПараметрыОткрытияФормыОтчета.Вставить("СформироватьПриОткрытии", Истина);
ПараметрыОткрытияФормыОтчета.Вставить("Отбор", Новый Структура);
ПараметрыОткрытияФормыОтчета.Отбор.Вставить("Месяц", Объект.МесяцИсправления);
ПараметрыОткрытияФормыОтчета.Отбор.Вставить("МесяцПредставление", ПредставлениеМесяцаИсправления);
ОткрытьФорму("Отчет.РазвернутоеСальдоПоВидамЗапасовИНомерамГТД.Форма", ПараметрыОткрытияФормыОтчета, ЭтаФорма, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьОтчетОтрицательныеОстаткиНаКлиенте()
ПараметрыОткрытияФормыОтчета = Новый Структура;
ПараметрыОткрытияФормыОтчета.Вставить("СформироватьПриОткрытии", Истина);
ПараметрыОткрытияФормыОтчета.Вставить("Отбор", Новый Структура);
ПараметрыОткрытияФормыОтчета.Отбор.Вставить("Месяц", Объект.МесяцИсправления);
ПараметрыОткрытияФормыОтчета.Отбор.Вставить("МесяцПредставление", ПредставлениеМесяцаИсправления);
ОткрытьФорму("Отчет.ОтрицательныеОстаткиТоваровИРезервовОрганизаций.Форма", ПараметрыОткрытияФормыОтчета, ЭтаФорма, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ОповещениеОЗакрытииПомощникаФормированияПередач(Результат, ДополнительныеПараметры) Экспорт
ВыполнитьМетодыОбъекта("ОбновитьДанныеПоОтрицательнымОстаткамИСальдо, ЗаполнитьНовыеНастройкиПередачи");
КонецПроцедуры
&НаКлиенте
Процедура ОповещениеОЗакрытииФормыОприходования(Результат, ДополнительныеПараметры) Экспорт
ВыполнитьМетодыОбъекта("ОбновитьДанныеПоОтрицательнымОстаткамИСальдо, ЗаполнитьРаспоряженияНаОформлениеОприходований");
КонецПроцедуры
&НаКлиенте
Процедура СформироватьПредставлениеЗаписиНастройкиПередачи(Результат, ДополнительныеПараметры) Экспорт
Если Результат.СпособПередачиТоваров = ПредопределенноеЗначение("Перечисление.СпособыПередачиТоваров.ПустаяСсылка")
Или Результат.СпособПередачиТоваров = ПредопределенноеЗначение("Перечисление.СпособыПередачиТоваров.НеПередается") Тогда
Элементы.НастройкиПередачиМеждуОрганизациями.ТекущиеДанные.НастройкаПередачи = "";
Иначе
ЗначенияЗаписи = Новый Массив;
ЗначенияЗаписи.Добавить(Результат.СпособПередачиТоваров);
Если ЗначениеЗаполнено(Результат.Валюта) Тогда
ЗначенияЗаписи.Добавить(Результат.Валюта);
КонецЕсли;
Если ЗначениеЗаполнено(Результат.ВидЦены) Тогда
ЗначенияЗаписи.Добавить(Результат.ВидЦены);
КонецЕсли;
Элементы.НастройкиПередачиМеждуОрганизациями.ТекущиеДанные.НастройкаПередачи = СтрСоединить(ЗначенияЗаписи, ", ");
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаВыбораДействияРасшифровки(ВыполненноеДействие, ПараметрВыполненногоДействия, ДополнительныеПараметры) Экспорт
Если ВыполненноеДействие = ДействиеОбработкиРасшифровкиКомпоновкиДанных.ОткрытьЗначение Тогда
ПоказатьЗначение(, ПараметрВыполненногоДействия);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОповещенияОЗакрытииРабочегоМестаОформленияДокументов(Результат, ДополнительныеПараметры) Экспорт
ПараметрыМетодов = Новый Структура;
ПараметрыМетодов.Вставить("СформироватьРезультатКонтроляОформленияДокументовТовародвижения", Новый Массив);
ПараметрыМетодов.СформироватьРезультатКонтроляОформленияДокументовТовародвижения.Добавить(
АдресДополнительныхПараметровРезультатаКонтроляОформления);
ПараметрыМетодов.СформироватьРезультатКонтроляОформленияДокументовТовародвижения.Добавить(
КонтрольОформленияДетализацияПоПозициям);
ВыполнитьМетодыОбъекта(
"ОбновитьДанныеПоОтрицательнымОстаткамИСальдо, СформироватьРезультатКонтроляОформленияДокументовТовародвижения",
ПараметрыМетодов,
"ЗавершитьФормированиеРезультатаКонтроляОформления");
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ЗавершитьФормированиеРезультатаКонтроляОформления(
Знач АдресДопПараметров, Знач УникальныйИдентификатор, АдресСхемы, АдресДанныхРасшифровки)
ДополнительныеПараметры = ПолучитьИзВременногоХранилища(АдресДопПараметров);
АдресСхемы = ПоместитьВоВременноеХранилище(ДополнительныеПараметры.Схема, УникальныйИдентификатор);
АдресДанныхРасшифровки =
ПоместитьВоВременноеХранилище(ДополнительныеПараметры.ДанныеРасшифровки, УникальныйИдентификатор);
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ПроверитьРольНастройкаНСИДоступна(СтандартнаяОбработка)
Если Не Пользователи.РолиДоступны(Метаданные.Роли.НастройкаНСИ.Имя) Тогда
СтандартнаяОбработка = Ложь;
ТекстСообщения = НСтр("ru = 'Для настройки передачи требуется роль ""%НастройкаНСИ%"". Обратитесь к администратору.'");
ТекстСообщения = СтрЗаменить(ТекстСообщения, "%НастройкаНСИ%", Метаданные.Роли.НастройкаНСИ.Синоним);
ВызватьИсключение ТекстСообщения;
КонецЕсли;
КонецПроцедуры
&НаСервереБезКонтекста
Процедура УстановитьПроводитьБезКонтроляНаСервере(Значение)
Если Константы.КонтролироватьОстаткиТоваровОрганизаций.Получить() Тогда
ПараметрыСеанса.ПроводитьБезКонтроляОстатковТоваровОрганизаций = Значение;
КонецЕсли;
КонецПроцедуры
&НаСервереБезКонтекста
Функция ТекущаяДатаСервера()
Возврат ТекущаяДатаСеанса();
КонецФункции
&НаСервере
Процедура ПроверитьРазрешениеДоступа(Отказ)
Если Константы.КонтролироватьОстаткиТоваровОрганизаций.Получить()
И Не ПраваПользователяПовтИсп.РазрешитьОтключениеКонтроляТоваровОрганизацийНаВремяСеанса() Тогда
Отказ = Истина;
ТекстСообщения =
НСтр("ru = 'Для работы с помощником требуется роль ""%РазрешитьОтключениеКонтроляТоваровОрганизацийНаВремяСеанса%"" или отключение функциональной опции ""%КонтролироватьОстаткиТоваровОрганизаций%"". Обратитесь к администратору.'");
ТекстСообщения = СтрЗаменить(
ТекстСообщения, "%РазрешитьОтключениеКонтроляТоваровОрганизацийНаВремяСеанса%",
Метаданные.Роли.РазрешитьОтключениеКонтроляТоваровОрганизацийНаВремяСеанса.Синоним);
ТекстСообщения = СтрЗаменить(
ТекстСообщения, "%КонтролироватьОстаткиТоваровОрганизаций%",
Метаданные.Константы.КонтролироватьОстаткиТоваровОрганизаций.Синоним);
ВызватьИсключение ТекстСообщения;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ Организация ИЗ Справочник.ВидыЗапасов";
Попытка
РезультатЗапроса = Запрос.Выполнить();
Исключение
Отказ = Истина;
ТекстСообщения =
НСтр("ru = 'Для работы с помощником требуется доступ на чтение всех организаций в информационной базе. Обратитесь к администратору.'");
ВызватьИсключение ТекстСообщения;
КонецПопытки;
КонецПроцедуры
#КонецОбласти