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