#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
УзелОбменаЭтаИБ = ПроверитьУзелОбменаЭтаИБСервер();
Если УзелОбменаЭтаИБ Тогда
Возврат;
КонецЕсли;
Если Объект.Ссылка.Пустая() Тогда
ПриСозданииЧтенииНаСервере(ЭтотОбъект, Объект);
Иначе
УстановитьПривилегированныйРежим(Истина);
ПарольИзХранилища = ОбщегоНазначения.ПрочитатьДанныеИзБезопасногоХранилища(Объект.Ссылка, "Пароль");
УстановитьПривилегированныйРежим(Ложь);
Пароль = ?(ЗначениеЗаполнено(ПарольИзХранилища), ЭтотОбъект.УникальныйИдентификатор, "");
КонецЕсли;
Если Не Объект.ВыгружатьОбновленияЦенИОстатков Тогда
РежимВыгрузкиЦен = 1;
КонецЕсли;
ЭтотОбъект.ФормаРедактируется = Истина;
ОбменССайтомПереопределяемый.ФормаУзлаПриСозданииНаСервере(ЭтотОбъект, Отказ, СтандартнаяОбработка);
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
Задание = ТекущийОбъект.СуществующееЗадание();
Если НЕ Задание = Неопределено Тогда
РасписаниеРегламентногоЗадания = Задание.Расписание;
КонецЕсли;
ПриСозданииЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
ВыполнитьДействияПриЧтенииНаСервере();
ВосстановитьРеквизитыПрикладногоРешения(ТекущийОбъект);
ОбменССайтомПереопределяемый.ФормаУзлаПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
Если ТекущийОбъект.ИспользоватьРегламентноеЗадание
И (РасписаниеРегламентногоЗадания = Неопределено
ИЛИ (ОбщегоНазначения.РазделениеВключено()
И Не РасписаниеРегламентногоЗадания.ПериодПовтораВТечениеДня > 0)) Тогда
ТекущийОбъект.ИспользоватьРегламентноеЗадание = Ложь;
КонецЕсли;
УстановитьПривилегированныйРежим(Истина);
ТекущийОбъект.ВключитьОтключитьРегламентноеЗадание(РасписаниеРегламентногоЗадания);
УстановитьПривилегированныйРежим(Ложь);
ТаблицаКаталоговТЗ = РеквизитФормыВЗначение("ТаблицаКаталогов");
ТаблицаКаталоговТЗ.Колонки.Добавить("ХранилищеНастроекКаталогПакет", Новый ОписаниеТипов("ХранилищеЗначения"));
ТаблицаКаталоговТЗ.Колонки.Добавить("ХранилищеНастроекИзмененияПакета", Новый ОписаниеТипов("ХранилищеЗначения"));
ТаблицаКаталоговТЗ.Колонки.Добавить("ХранилищеНастроекКаталог", Новый ОписаниеТипов("ХранилищеЗначения"));
ТаблицаКаталоговТЗ.Колонки.Добавить("ХранилищеНастроекПакетПредложений", Новый ОписаниеТипов("ХранилищеЗначения"));
Для Каждого СтрокаТаблицыКаталогов Из ТаблицаКаталоговТЗ Цикл
Если ЗначениеЗаполнено(СтрокаТаблицыКаталогов.АдресНастроекКаталогПакет) Тогда
НастройкиКаталогПакет = ПолучитьИзВременногоХранилища(СтрокаТаблицыКаталогов.АдресНастроекКаталогПакет);
СтрокаТаблицыКаталогов.ХранилищеНастроекКаталогПакет = Новый ХранилищеЗначения(НастройкиКаталогПакет);
КонецЕсли;
Если ЗначениеЗаполнено(СтрокаТаблицыКаталогов.АдресНастроекИзмененияПакета) Тогда
НастройкиОбновленияПакета = ПолучитьИзВременногоХранилища(СтрокаТаблицыКаталогов.АдресНастроекИзмененияПакета);
СтрокаТаблицыКаталогов.ХранилищеНастроекИзмененияПакета = Новый ХранилищеЗначения(НастройкиОбновленияПакета);
КонецЕсли;
Если ЗначениеЗаполнено(СтрокаТаблицыКаталогов.АдресНастроекКаталог) Тогда
НастройкиКаталог = ПолучитьИзВременногоХранилища(СтрокаТаблицыКаталогов.АдресНастроекКаталог);
СтрокаТаблицыКаталогов.ХранилищеНастроекКаталог = Новый ХранилищеЗначения(НастройкиКаталог);
КонецЕсли;
Если ЗначениеЗаполнено(СтрокаТаблицыКаталогов.АдресНастроекПакетПредложений) Тогда
НастройкиПакетПредложений = ПолучитьИзВременногоХранилища(СтрокаТаблицыКаталогов.АдресНастроекПакетПредложений);
СтрокаТаблицыКаталогов.ХранилищеНастроекПакетПредложений = Новый ХранилищеЗначения(НастройкиПакетПредложений);
КонецЕсли;
КонецЦикла;
Если Не ТаблицаКаталоговТЗ.Колонки.Найти("АдресНастроекКомпоновки") = Неопределено Тогда
ТаблицаКаталоговТЗ.Колонки.Удалить("АдресНастроекКомпоновки");
КонецЕсли;
ТаблицаКаталоговТЗ.Колонки.Удалить("АдресНастроекКаталогПакет");
ТаблицаКаталоговТЗ.Колонки.Удалить("АдресНастроекИзмененияПакета");
ТаблицаКаталоговТЗ.Колонки.Удалить("АдресНастроекКаталог");
ТаблицаКаталоговТЗ.Колонки.Удалить("АдресНастроекПакетПредложений");
ТекущийОбъект.СохраненнаяТаблицаКаталогов = Новый ХранилищеЗначения(ТаблицаКаталоговТЗ);
СохраняемыеРеквизиты = Новый Структура;
МассивРеквизитов = Новый Массив;
ЗаполнитьМассивРеквизитовФормыПрикладногоРешения(МассивРеквизитов);
СохранитьРеквизиты(ТекущийОбъект, МассивРеквизитов, СохраняемыеРеквизиты);
ОбменССайтомПереопределяемый.ФормаУзлаПередЗаписьюНаСервере(ЭтотОбъект, Отказ, ТекущийОбъект, ПараметрыЗаписи);
КонецПроцедуры
&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
ОбменССайтомПереопределяемый.ФормаУзлаПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Если УзелОбменаЭтаИБ Тогда
ОчиститьСообщения();
ОбщегоНазначенияКлиент.СообщитьПользователю(
НСтр("ru = 'Узел соответствует этой информационной базе и не может использоваться в обмене с сайтом.
|Используйте другой узел обмена или создайте новый.'"));
Отказ = Истина;
Возврат;
КонецЕсли;
СформироватьЗаголовокПараметрыВыгрузки();
РежимВыгрузки = РежимВыгрузкиДанных();
УстановитьДоступностьКартинкиСклад();
ДоступностьРеквизитовГруппы();
УстановитьДоступностьПоляКаталогВыгрузки();
СформироватьЗаголовокФормы();
УстановитьПараметрыТаблицыКаталогТоваров();
ОбменССайтомКлиентПереопределяемый.ФормаУзлаПриОткрытии(ЭтотОбъект, Отказ);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
Если Объект.ОбменТоварами И ТаблицаКаталогов.Количество() = 0 Тогда
НоваяСтрока = ТаблицаКаталогов.Добавить();
ДозаполнитьТаблицуКаталогов(НоваяСтрока);
КонецЕсли;
ОбменССайтомКлиентПереопределяемый.ФормаУзлаПередЗаписью(ЭтотОбъект, Отказ, ПараметрыЗаписи);
КонецПроцедуры
&НаСервере
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
Если ПарольИзменен Тогда
УстановитьПривилегированныйРежим(Истина);
ОбщегоНазначения.ЗаписатьДанныеВБезопасноеХранилище(ТекущийОбъект.Ссылка, Пароль);
УстановитьПривилегированныйРежим(Ложь);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
СформироватьЗаголовокФормы();
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура ПриИзмененииОбменТоварами()
УстановитьВидимостьСтраницФормы();
УстановитьДоступностьПоляКаталогВыгрузки();
КонецПроцедуры
&НаКлиенте
Процедура ПриИзмененииОбменЗаказами()
УстановитьВидимостьСтраницФормы();
УстановитьДоступностьПолейОбменЗаказами();
КонецПроцедуры
&НаКлиенте
Процедура ПриИзмененииПереключательНазначениеОбмена()
Объект.ВыгружатьНаСайт = ПереключательНазначениеОбмена = 0;
УстановитьСтраницуТипаОбмена();
Модифицированность = Истина;
КонецПроцедуры
&НаКлиенте
Процедура КаталогВыгрузкиНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Оповещение = Новый ОписаниеОповещения("ПослеПодключенияРасширенияЗавершить", ЭтотОбъект);
НачатьПодключениеРасширенияРаботыСФайлами(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура КаталогВыгрузкиОткрытие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ПолноеИмяФайла = Объект.КаталогВыгрузки;
Если ПустаяСтрока(ПолноеИмяФайла) Тогда
Возврат;
КонецЕсли;
ФайловаяСистемаКлиент.ОткрытьПроводник(ПолноеИмяФайла);
КонецПроцедуры
&НаКлиенте
Процедура ФайлЗагрузкиНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Оповещение = Новый ОписаниеОповещения("ФайлЗагрузкиНачалоВыбораЗавершить", ЭтотОбъект);
НачатьПодключениеРасширенияРаботыСФайлами(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ФайлЗагрузкиОткрытие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ПолноеИмяФайла = Объект.ФайлЗагрузки;
Если ПустаяСтрока(ПолноеИмяФайла) Тогда
Возврат;
КонецЕсли;
ФайловаяСистемаКлиент.ОткрытьПроводник(ПолноеИмяФайла);
КонецПроцедуры
&НаКлиенте
Процедура КомментарийНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ОбщегоНазначенияКлиент.ПоказатьФормуРедактированияКомментария(Элемент.ТекстРедактирования, ЭтотОбъект,
"Объект.Комментарий");
КонецПроцедуры
&НаКлиенте
Процедура ПереключательНазначениеОбменаПриИзменении(Элемент)
ПриИзмененииПереключательНазначениеОбмена();
КонецПроцедуры
&НаКлиенте
Процедура ИспользоватьРегламентноеЗаданиеПриИзменении(Элемент)
УстановитьДоступностьРасписанияОбмена();
Если Объект.ИспользоватьРегламентноеЗадание Тогда
ПараметрыРаботыКлиента = СтандартныеПодсистемыКлиент.ПараметрыРаботыКлиентаПриЗапуске();
Если Не ПараметрыРаботыКлиента.РазделениеВключено Тогда
#Если МобильныйКлиент Тогда
УстановитьРасписаниеРегламентногоЗадания();
#Иначе
ВыполнитьНастройкуРасписанияОбмена();
#КонецЕсли
Иначе
УстановитьРасписаниеРегламентногоЗадания();
КонецЕсли;
УстановитьНадписьРасписанияОбмена();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ИнтервалОбменаССайтомПриИзменении(Элемент)
УстановитьРасписаниеРегламентногоЗадания();
УстановитьНадписьРасписанияОбмена();
КонецПроцедуры
&НаКлиенте
Процедура ОбменТоварамиПриИзменении(Элемент)
ПриИзмененииОбменТоварами();
КонецПроцедуры
&НаКлиенте
Процедура ОбменЗаказамиПриИзменении(Элемент)
ПриИзмененииОбменЗаказами();
КонецПроцедуры
&НаКлиенте
Процедура ПарольПриИзменении(Элемент)
ПарольИзменен = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ПереключательВыгрузкаИзмененийПриИзменении(Элемент)
ПриИзмененииПереключательВыгрузкаИзменений()
КонецПроцедуры
&НаКлиенте
Процедура РежимВыгрузкиЦенПриИзменении(Элемент)
Если РежимВыгрузкиЦен = 0 Тогда
Объект.ВыгружатьОбновленияЦенИОстатков = Истина;
Иначе
Объект.ВыгружатьОбновленияЦенИОстатков = Ложь;
КонецЕсли;
УстановитьДоступностьГруппТоварыИЦены();
СформироватьПредставлениеОтбораВТаблицеКаталогов();
КонецПроцедуры
&НаКлиенте
Процедура СписокТочекСамовывозаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ИмяФормыВыбора = ВыбратьФормуРедактирования("ФормаВыбораТочекСамовывоза");
Если ИмяФормыВыбора= Неопределено Тогда
Возврат ;
КонецЕсли;
ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("МножественныйВыбор", Истина);
ПараметрыОткрытия.Вставить("РежимВыбора", Истина);
Обработчик = Новый ОписаниеОповещения("ДобавитьТочкиСамовывоза", ЭтотОбъект);
Режим = РежимОткрытияОкнаФормы.БлокироватьОкноВладельца;
ОткрытьФорму(ИмяФормыВыбора, ПараметрыОткрытия,,,,, Обработчик, Режим);
КонецПроцедуры
&НаКлиенте
Процедура ВыгружатьТоварыПриИзменении(Элемент)
Если Не Объект.ВыгружатьТовары
И Не Объект.ВыгружатьЦеныОстатки Тогда
Объект.ВыгружатьТовары = Истина;
СообщитьОбОшибке("ВыгружатьТовары");
КонецЕсли;
СформироватьПредставлениеОтбораВТаблицеКаталогов();
УстановитьДоступностьКартинкиСклад();
ДоступностьРеквизитовГруппы();
ОбменССайтомКлиентСерверПереопределяемый.УстановитьДоступностьЭлементовФормыУзла(ЭтотОбъект, Объект);
КонецПроцедуры
&НаКлиенте
Процедура ВыгружатьЦеныОстаткиПриИзменении(Элемент)
Если Не Объект.ВыгружатьЦеныОстатки
И Не Объект.ВыгружатьТовары Тогда
Объект.ВыгружатьЦеныОстатки = Истина;
СообщитьОбОшибке("ВыгружатьЦеныОстатки");
КонецЕсли;
СформироватьПредставлениеОтбораВТаблицеКаталогов();
УстановитьДоступностьКартинкиСклад();
КонецПроцедуры
&НаКлиенте
Процедура ПереходАдресСайтаНажатие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если Модифицированность Или Объект.Ссылка.Пустая() Тогда
ТекстВопроса = НСтр("ru = 'Перед настройкой перехода на сайт существующую настройку необходимо записать, продолжить?'");
ОписаниеОповещения = Новый ОписаниеОповещения("ПереходАдресСайтаНажатиеЗавершить", ЭтотОбъект);
ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
Иначе
ПереходАдресСайтаНажатиеЗавершить(КодВозвратаДиалога.Да);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПереходURLАдминЗоныНажатие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если Модифицированность Или Объект.Ссылка.Пустая() Тогда
ТекстВопроса = НСтр("ru = 'Перед настройкой перехода на сайт существующую настройку необходимо записать, продолжить?'");
ОписаниеОповещения = Новый ОписаниеОповещения("ПереходURLАдминЗоныНажатиеЗавершить", ЭтотОбъект);
ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
Иначе
ПереходURLАдминЗоныНажатиеЗавершить(КодВозвратаДиалога.Да);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОтборГруппыКатегорииНоменклатурыПриИзменении(Элемент)
Если ТаблицаКаталогов.Количество()>0 Тогда
ТаблицаКаталогов.Очистить();
КонецЕсли;
ПодключитьОбработчикОжидания("УстановитьПараметрыТаблицыКаталоговКлиент", 0.1, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ДекорацияНастройкаНажатие(Элемент)
ОткрытьСправочникСайты();
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеВводаПриИзменении(Элемент)
ОбменССайтомКлиентПереопределяемый.ПолеВводаПриИзменении(Элемент, ЭтотОбъект, Объект);
ПолеВводаПриИзмененииНаСервере(Элемент.Имя);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеФлажкаПриИзменении(Элемент)
ОбменССайтомКлиентПереопределяемый.ПолеФлажкаПриИзменении(Элемент, ЭтотОбъект, Объект);
ПолеФлажкаПриИзмененииНаСервере(Элемент.Имя);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыТаблицаКаталогов
&НаКлиенте
Процедура ТаблицаКаталоговПередОкончаниемРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования, Отказ)
Если Не ИдентификаторУникален() Тогда
Отказ = Истина;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаКаталоговНастройкиКаталогаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОткрытьФормуОтбораКаталога();
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаКаталоговНастройкиКаталогаОчистка(Элемент, СтандартнаяОбработка)
Если Элементы.ТаблицаКаталогов.ТекущиеДанные = НеОпределено Тогда
Возврат;
КонецЕсли;
Если РежимВыгрузки = 0 Тогда
Если ЗначениеЗаполнено(Элементы.ТаблицаКаталогов.ТекущиеДанные.АдресНастроекКаталогПакет) Тогда
УдалитьИзВременногоХранилища(Элементы.ТаблицаКаталогов.ТекущиеДанные.АдресНастроекКаталогПакет);
Элементы.ТаблицаКаталогов.ТекущиеДанные.АдресНастроекКаталогПакет= "";
КонецЕсли;
ИначеЕсли РежимВыгрузки = 1 Тогда
Если ЗначениеЗаполнено(Элементы.ТаблицаКаталогов.ТекущиеДанные.АдресНастроекКаталог) Тогда
УдалитьИзВременногоХранилища(Элементы.ТаблицаКаталогов.ТекущиеДанные.АдресНастроекКаталог);
Элементы.ТаблицаКаталогов.ТекущиеДанные.АдресНастроекКаталог = "";
КонецЕсли;
ИначеЕсли РежимВыгрузки = 2 Тогда
Если ЗначениеЗаполнено(Элементы.ТаблицаКаталогов.ТекущиеДанные.АдресНастроекПакетПредложений) Тогда
УдалитьИзВременногоХранилища(Элементы.ТаблицаКаталогов.ТекущиеДанные.АдресНастроекПакетПредложений);
Элементы.ТаблицаКаталогов.ТекущиеДанные.АдресНастроекПакетПредложений= "";
КонецЕсли;
ИначеЕсли РежимВыгрузки = 3 Тогда
Если ЗначениеЗаполнено(Элементы.ТаблицаКаталогов.ТекущиеДанные.АдресНастроекИзмененияПакета) Тогда
УдалитьИзВременногоХранилища(Элементы.ТаблицаКаталогов.ТекущиеДанные.АдресНастроекИзмененияПакета);
Элементы.ТаблицаКаталогов.ТекущиеДанные.АдресНастроекИзмененияПакета = "";
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаКаталоговПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
Если ОтменаРедактирования Тогда
Возврат;
КонецЕсли;
Если Элемент.ТекущиеДанные = НеОпределено Тогда
Возврат;
КонецЕсли;
ДозаполнитьТаблицуКаталогов(Элемент.ТекущиеДанные);
Модифицированность = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаКаталоговПослеУдаления(Элемент)
Модифицированность = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаКаталоговПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
Если Копирование Тогда
Элемент.ТекущиеДанные.ИдентификаторКаталога = "";
КонецЕсли;
Если (Элемент.ТекущиеДанные.Группы.Количество() = 1
И НЕ ЗначениеЗаполнено(Элемент.ТекущиеДанные.Группы[0].Значение))
ИЛИ Элемент.ТекущиеДанные.Группы.Количество() = 0 Тогда
НовыйСписокГрупп = Новый СписокЗначений;
Если Объект.ВидОтбораПоНоменклатуре = ПредопределенноеЗначение("Перечисление.ВидыОтборовНоменклатуры.ГруппыНоменклатуры") Тогда
ТипЗначений = ПолучитьТипСправочника("Номенклатура");
Элементы.ТаблицаКаталоговГруппы.ВыборГруппИЭлементов = ГруппыИЭлементы.Группы;
Иначе
ТипЗначений = ПолучитьТипСправочника("ВидыНоменклатуры");
Элементы.ТаблицаКаталоговГруппы.ВыборГруппИЭлементов = ГруппыИЭлементы.ГруппыИЭлементы;
КонецЕсли;
НовыйСписокГрупп.ТипЗначения = ТипЗначений;
НовыйСписокГрупп.Добавить(Неопределено, НадписьВсеЭлементыСписка);
Элемент.ТекущиеДанные.Группы = НовыйСписокГрупп;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормы
&НаКлиенте
Процедура Подключаемый_ТаблицаФормыПередОкончаниемРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования, Отказ)
ОбменССайтомКлиентПереопределяемый.ТаблицаФормыПередОкончаниемРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования, Отказ, ЭтотОбъект, Объект);
ТаблицаФормыПередОкончаниемРедактированияНаСервере(Элемент.Имя, НоваяСтрока, ОтменаРедактирования, Отказ);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура КомандаПроверитьСоединение(Команда)
НастройкиПодключения = Новый Структура;
НастройкиПодключения.Вставить("Пользователь", Объект.ИмяПользователя);
НастройкиПодключения.Вставить("АдресСайта", Объект.АдресСайта);
ТекстСообщения = "";
ПроверитьПодключение(НастройкиПодключения, ТекстСообщения);
ПоказатьПредупреждение(, ТекстСообщения);
КонецПроцедуры
&НаКлиенте
Процедура НастроитьРасписаниеОбмена(Команда)
ВыполнитьНастройкуРасписанияОбмена();
КонецПроцедуры
&НаКлиенте
Процедура РасширеннаяНастройка(Команда)
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("РазмерПорции", Объект.РазмерПорции);
ПараметрыФормы.Вставить("КоличествоПовторений", Объект.КоличествоПовторений);
ПараметрыФормы.Вставить("РежимОткрытияОкна", РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
ОбработчикОповещения = Новый ОписаниеОповещения("РасширеннаяНастройкаЗавершить", ЭтотОбъект);
ОткрытьФорму("ПланОбмена.ОбменССайтом.Форма.ФормаРасширенныеНастройки", ПараметрыФормы, ЭтотОбъект
,
,
,
,
ОбработчикОповещения);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#Область ОбработчикиАсинхронныхВызовов
&НаКлиенте
Процедура ВопросУстановитьРасширениеЗавершить(Ответ, ДополнительныеПараметры) Экспорт
Если Ответ = КодВозвратаДиалога.Да Тогда
УстановитьРасширениеОповещение = ДополнительныеПараметры.ОповещениеВопроса;
НачатьУстановкуРасширенияРаботыСФайлами(УстановитьРасширениеОповещение);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура РасширеннаяНастройкаЗавершить(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
Объект.РазмерПорции = Результат.РазмерПорции;
Объект.КоличествоПовторений = Результат.КоличествоПовторений;
Модифицированность = Истина;
СформироватьЗаголовокПараметрыВыгрузки();
КонецПроцедуры
&НаКлиенте
Процедура ПослеПодключенияРасширенияЗавершить(Подключено, ДополнительныеПараметры) Экспорт
Если Не Подключено Тогда
ОтветОповещения = Новый ОписаниеОповещения("ВыборФайлаЗавершить", ЭтотОбъект);
ЗадатьВопросУстановкиРасширения(ОтветОповещения);
Иначе
ПоказатьДиалогВыбораФайла();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВыборФайлаЗавершить(Результат) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
ПоказатьДиалогВыбораФайла();
КонецПроцедуры
&НаКлиенте
Процедура ФайлЗагрузкиНачалоВыбораЗавершить(Подключено, ДополнительныеПараметры = Неопределено) Экспорт
Если Не Подключено Тогда
ОповещениеВопроса = Новый ОписаниеОповещения("ФайлЗагрузкиПоказатьВопросЗавершить", ЭтотОбъект);
ЗадатьВопросУстановкиРасширения(ОповещениеВопроса)
Иначе
ВыбратьФайлОбменаЗаказами();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ФайлЗагрузкиПоказатьВопросЗавершить(Результат) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
ВыбратьФайлОбменаЗаказами();
КонецПроцедуры
&НаКлиенте
Процедура ПослеВыбораКаталогаВыгрузки(ВыбранныеФайлы, ДополнительныеПараметры = Неопределено) Экспорт
Если ВыбранныеФайлы <> Неопределено Тогда
Объект.КаталогВыгрузки = ВыбранныеФайлы[0];
Модифицированность = Истина;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеВыбораФайлаЗагрузки(ВыбранныеФайлы, ДополнительныеПараметры = Неопределено) Экспорт
Если ВыбранныеФайлы <> Неопределено Тогда
Объект.ФайлЗагрузки = ВыбранныеФайлы[0];
Модифицированность = Истина;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
&НаКлиенте
Процедура УстановитьДоступностьГруппТоварыИЦены()
Элементы.ГруппаТоварыНастройка.Доступность = Не Объект.ВыгружатьОбновленияЦенИОстатков;
Элементы.ГруппаЦеныИСклады.Доступность = Не Объект.ВыгружатьОбновленияЦенИОстатков;
КонецПроцедуры
&НаКлиенте
Процедура ПереходАдресСайтаНажатиеЗавершить(РезультатВопроса, ДополнительныеПараметры = Неопределено) Экспорт
Если Не РезультатВопроса = КодВозвратаДиалога.Да Тогда
Возврат;
КонецЕсли;
Если Модифицированность Тогда
ЭтотОбъект.Записать();
КонецЕсли;
Если Модифицированность Тогда
Возврат;
КонецЕсли;
ПутьКСайту = "";
Если ПереходНаСайтЗаполнен(ПереходАдресСайта) Тогда
ПутьКСайту = ПереходАдресСайта;
Если Не СтрНачинаетсяС(ПереходАдресСайта, "http://")
И Не СтрНачинаетсяС(ПереходАдресСайта, "https://") Тогда
ПутьКСайту = "http://"+ПереходАдресСайта;
КонецЕсли;
КонецЕсли;
НастроитьПереходы(ПутьКСайту);
КонецПроцедуры
&НаКлиенте
Процедура ПереходURLАдминЗоныНажатиеЗавершить(РезультатВопроса, ДополнительныеПараметры = Неопределено) Экспорт
Если Не РезультатВопроса = КодВозвратаДиалога.Да Тогда
Возврат;
КонецЕсли;
ЭтотОбъект.Записать();
Если Модифицированность Тогда
Возврат;
КонецЕсли;
ПутьКСайту = "";
Если ПереходНаСайтЗаполнен(ПереходURLАдминЗоны) Тогда
ПутьКСайту = ПереходURLАдминЗоны;
КонецЕсли;
НастроитьПереходы(ПутьКСайту);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьСправочникСайты()
ПараметрыФормы = Новый Структура("Ключ", Объект.ДанныеСайта);
ПараметрыФормы.Вставить("Основание", Объект.Ссылка);
ПараметрыФормы.Вставить("Сайт", Объект.Ссылка);
ОткрытьФорму("Справочник.Сайты.ФормаОбъекта", ПараметрыФормы,
,,,,Новый ОписаниеОповещения("ПослеНастройкиПерехода", ЭтотОбъект));
КонецПроцедуры
&НаКлиенте
Процедура УстановитьПараметрыТаблицыКаталогТоваров()
Если Объект.ВидОтбораПоНоменклатуре = ПредопределенноеЗначение("Перечисление.ВидыОтборовНоменклатуры.КатегорииНоменклатуры") Тогда
ЗаголовокТаблицы = НСтр("ru = 'Таблица каталогов (соответствие видов номенклатуры каталогам на сайте)'");
ЗаголовокКолонки = НСтр("ru = 'Виды номенклатуры'");
ВыборГруппИЭлементов = ГруппыИЭлементы.ГруппыИЭлементы;
Иначе
ЗаголовокТаблицы = НСтр("ru = 'Таблица каталогов (соответствие групп номенклатуры каталогам на сайте)'");
ЗаголовокКолонки = НСтр("ru = 'Группы номенклатуры'");
ВыборГруппИЭлементов = ГруппыИЭлементы.Группы;
КонецЕсли;
Элементы.ГруппаТаблицаКаталогов.Заголовок = ЗаголовокТаблицы;
Элементы.ТаблицаКаталоговГруппы.Заголовок = ЗаголовокКолонки;
Элементы.ТаблицаКаталоговГруппы.ВыборГруппИЭлементов = ВыборГруппИЭлементов;
КонецПроцедуры
&НаКлиенте
Процедура СформироватьЗаголовокФормы()
Если ПереключательНазначениеОбмена = 1 Тогда
ТекстЗаголовка = НСтр("ru = 'Обмен через %1'");
Каталог = ОпределитьКаталогВыгрузки();
Если ЗначениеЗаполнено(Каталог) Тогда
ШаблонЗаголовка = НСтр("ru = 'Обмен через %1'");
ТекстЗаголовка = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонЗаголовка, Каталог);
Иначе
ТекстЗаголовка = НСтр("ru = 'Обмен с сайтом'");
КонецЕсли;
Иначе
ШаблонЗаголовка = НСтр("ru = 'Обмен с %1'");
ИмяСайта = ИмяСайта();
ТекстЗаголовка = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонЗаголовка, ИмяСайта);
КонецЕсли;
Заголовок = ТекстЗаголовка;
КонецПроцедуры
&НаКлиенте
Функция ИмяСайта()
АдресСайта = СтрЗаменить(Объект.АдресСайта, "\", "/");
АдресСайта = СтрЗаменить(АдресСайта, " ", "");
Если НРег(Лев(АдресСайта, 7)) = "http://" Тогда
АдресСайта = Сред(АдресСайта, 8);
ИначеЕсли НРег(Лев(АдресСайта, 8)) = "https://" Тогда
АдресСайта = Сред(АдресСайта, 9);
КонецЕсли;
ПозицияСлэша = Найти(АдресСайта, "/");
Если ПозицияСлэша > 0 Тогда
Сервер = Лев(АдресСайта, ПозицияСлэша - 1);
Иначе
Сервер = АдресСайта;
КонецЕсли;
ПозицияДвоеточия = Найти(Сервер, ":");
Если ПозицияДвоеточия > 0 Тогда
СерверСПортом = Сервер;
Сервер = Лев(СерверСПортом, ПозицияДвоеточия - 1);
КонецЕсли;
Возврат Сервер;
КонецФункции
&НаКлиенте
Функция ОпределитьКаталогВыгрузки()
РазделительПути = ПолучитьРазделительПутиКлиента();
Если Объект.ОбменТоварами Тогда
ПутьКФайлу = Объект.КаталогВыгрузки;
ИначеЕсли Объект.ОбменЗаказами Тогда
ПутьКФайлу = Объект.ФайлЗагрузки;
Иначе
Возврат "";
КонецЕсли;
ПутьКФайлуМассив = СтрРазделить(ПутьКФайлу, РазделительПути);
ВсегоЭлементов = ПутьКФайлуМассив.Количество();
Если ВсегоЭлементов > 4 Тогда
ПутьКФайлу = "..." + ПутьКФайлуМассив[ВсегоЭлементов - 4] + РазделительПути
+ ПутьКФайлуМассив[ВсегоЭлементов - 3] + РазделительПути
+ ПутьКФайлуМассив[ВсегоЭлементов - 2] + РазделительПути
+ ПутьКФайлуМассив[ВсегоЭлементов - 1];
КонецЕсли;
Возврат ПутьКФайлу;
КонецФункции
&НаСервереБезКонтекста
Функция ПолучитьТипСправочника(Имя)
ИмяСправочника = ОбменССайтомПовтИсп.ИмяПрикладногоСправочника(Имя);
Тип = Новый ОписаниеТипов("СправочникСсылка." + ИмяСправочника);
Возврат Тип;
КонецФункции
&НаКлиенте
Процедура УстановитьПараметрыТаблицыКаталоговКлиент()
ЗаголовокТаблицы = НСтр("ru = 'Таблица каталогов (соответствие групп номенклатуры каталогам на сайте)'");
Если Объект.ВидОтбораПоНоменклатуре = ПредопределенноеЗначение("Перечисление.ВидыОтборовНоменклатуры.ГруппыНоменклатуры") Тогда
ЗаголовокКолонки = НСтр("ru = 'Группы номенклатуры'");
ВыборГруппИЭлементов = ГруппыИЭлементы.Группы;
Иначе
ЗаголовокКолонки = НСтр("ru = 'Категории номенклатуры'");
ВыборГруппИЭлементов = ГруппыИЭлементы.ГруппыИЭлементы;
КонецЕсли;
Элементы.ГруппаТаблицаКаталогов.Заголовок = ЗаголовокТаблицы;
Элементы.ТаблицаКаталоговГруппы.Заголовок = ЗаголовокКолонки;
Элементы.ТаблицаКаталоговГруппы.ВыборГруппИЭлементов = ВыборГруппИЭлементов;
КонецПроцедуры
&НаКлиенте
Процедура НастроитьПереходы(АдресСайта)
Если ЗначениеЗаполнено(АдресСайта) Тогда
ФайловаяСистемаКлиент.ОткрытьНавигационнуюСсылку(АдресСайта);
Иначе
ОткрытьСправочникСайты();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеНастройкиПерехода(Результат, Параметры) Экспорт
Если Результат <> Неопределено И ТипЗнч(Результат)=Тип("СправочникСсылка.Сайты") Тогда
Если Не ЗначениеЗаполнено(Объект.ДанныеСайта) Тогда
Объект.ДанныеСайта = Результат;
КонецЕсли;
Модифицированность = Истина;
ОбновитьПереходыНаСайт();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция ПереходНаСайтЗаполнен(АдресПереходаНаСайт)
ПереходЗаполнен = Истина;
Если АдресПереходаНаСайт = НСтр("ru = 'Настроить переход на сайт'")
Или АдресПереходаНаСайт = НСтр("ru = 'Настроить переход в админзону'") Тогда
ПереходЗаполнен = Ложь;
КонецЕсли;
Возврат ПереходЗаполнен;
КонецФункции
&НаСервере
Процедура ОбновитьПереходыНаСайт()
Если ЗначениеЗаполнено(Объект.ДанныеСайта) Тогда
ПереходыНаСайт = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Объект.ДанныеСайта, "АдресСайта,URLАдминЗоны");
ВидимостьДекорацияНастройка = Истина;
Если Не ПереходыНаСайт.АдресСайта = "" Тогда
ПереходАдресСайта = ПереходыНаСайт.АдресСайта;
Иначе
ПереходАдресСайта = НСтр("ru = 'Настроить переход на сайт'");
ВидимостьДекорацияНастройка = Ложь;
КонецЕсли;
Если СокрЛП(ПереходыНаСайт.URLАдминЗоны)<> "" Тогда
ПереходURLАдминЗоны = ПереходыНаСайт.URLАдминЗоны;
Иначе
ПереходURLАдминЗоны = НСтр("ru = 'Настроить переход в админзону'");
ВидимостьДекорацияНастройка = Ложь;
КонецЕсли;
Иначе
ПереходАдресСайта = НСтр("ru = 'Настроить переход на сайт'");
ПереходURLАдминЗоны = НСтр("ru = 'Настроить переход в админзону'");
ВидимостьДекорацияНастройка = Ложь;
КонецЕсли;
Элементы.ДекорацияНастройка.Видимость = ВидимостьДекорацияНастройка;
КонецПроцедуры
&НаСервере
Процедура УстановитьУсловноеОформление()
УсловноеОформление.Элементы.Очистить();
ОбменССайтомПереопределяемый.УстановитьУсловноеОформлениеФормаУзлаОбмена(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПриИзмененииПереключательВыгрузкаИзменений()
Объект.ВыгружатьИзменения = (ПереключательВыгрузкаИзменений = 1);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьДоступностьТочекСамовывозаСервер(Форма, Объект)
Элементы = Форма.Элементы;
Если Объект.ВыгружатьЦеныОстатки Тогда
Элементы.СписокТочекСамовывоза.Доступность = Истина;
Иначе
Элементы.СписокТочекСамовывоза.Доступность = Ложь;
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьДоступностьОграниченияКаталогаПредложениямиСервер(Форма, Объект)
Элементы = Форма.Элементы;
Если Объект.ВыгружатьЦеныОстатки И Объект.ВыгружатьТовары Тогда
Элементы.ОграничитьКаталогДоступнымиПредложениями.Доступность = Истина;
Иначе
Элементы.ОграничитьКаталогДоступнымиПредложениями.Доступность = Ложь;
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьДоступностьВыгружатьКартинкиСервер(Форма, Объект)
Элементы = Форма.Элементы;
Если Объект.ВыгружатьТовары Тогда
Элементы.ВыгружатьКартинки.Доступность = Истина;
Иначе
Элементы.ВыгружатьКартинки.Доступность = Ложь;
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьДоступностьВыгружатьХарактеристикиСервер(Форма, Объект)
Элементы = Форма.Элементы;
Если Объект.ВыгружатьТовары Тогда
Элементы.ВыгружатьХарактеристикиВКаталогТоваров.Доступность = Истина;
Иначе
Элементы.ВыгружатьХарактеристикиВКаталогТоваров.Доступность = Ложь;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьНадписьРасписанияОбменаСервер()
Если Не ОбщегоНазначения.РазделениеВключено() Тогда
Если РасписаниеРегламентногоЗадания = Неопределено Тогда
ТекстЗаголовка = НСтр("ru='Настроить расписание обмена'");
Иначе
ТекстЗаголовка = РасписаниеРегламентногоЗадания;
КонецЕсли;
Элементы.НастроитьРасписаниеОбмена.Заголовок = ТекстЗаголовка;
Иначе
Если РасписаниеРегламентногоЗадания = Неопределено Тогда
ИнтервалОбменаССайтом = НСтр("ru='Один раз в 30 минут'");
Иначе
ЗначениеПериода = РасписаниеРегламентногоЗадания.ПериодПовтораВТечениеДня;
Если ЗначениеПериода = 0 Тогда
ИнтервалОбменаССайтом = НСтр("ru='Один раз в 30 минут'");
ИначеЕсли ЗначениеПериода <= 300 Тогда
ИнтервалОбменаССайтом = НСтр("ru='Один раз в 5 минут'");
ИначеЕсли ЗначениеПериода <= 900 Тогда
ИнтервалОбменаССайтом = НСтр("ru='Один раз в 15 минут'");
ИначеЕсли ЗначениеПериода <= 1800 Тогда
ИнтервалОбменаССайтом = НСтр("ru='Один раз в 30 минут'");
ИначеЕсли ЗначениеПериода <= 3600 Тогда
ИнтервалОбменаССайтом = НСтр("ru='Один раз в час'");
ИначеЕсли ЗначениеПериода <= 10800 Тогда
ИнтервалОбменаССайтом = НСтр("ru='Один раз в 3 часа'");
ИначеЕсли ЗначениеПериода <= 21600 Тогда
ИнтервалОбменаССайтом = НСтр("ru='Один раз в 6 часов'");
ИначеЕсли ЗначениеПериода <= 43200 Тогда
ИнтервалОбменаССайтом = НСтр("ru='Один раз в 12 часов'");
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УстановитьСтраницуТипаОбмена()
Если Объект.ВыгружатьНаСайт Тогда
Элементы.СтраницыТипОбмена.ТекущаяСтраница = Элементы.СтраницаВыгрузкаНаСайт;
Иначе
Элементы.СтраницыТипОбмена.ТекущаяСтраница = Элементы.СтраницаВыгрузкаВКаталог;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьСтраницФормы()
Элементы.СтраницаВыгрузкаТоваров.Видимость = Объект.ОбменТоварами;
Элементы.СтраницаОбменЗаказами.Видимость = Объект.ОбменЗаказами;
КонецПроцедуры
&НаКлиенте
Процедура СообщитьОбОшибке(ИмяПоля)
ОчиститьСообщения();
ТекстСообщения = НСтр("ru = 'Установлен признак ""Выгрузка товаров"".
|Должны быть указаны выгружаемые данные'");
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстСообщения,,ИмяПоля);
КонецПроцедуры
&НаКлиенте
Процедура ДоступностьРеквизитовГруппы()
УстановитьДоступностьГруппТоварыИЦены();
Элементы.ВыгружатьКартинки.Доступность = Объект.ВыгружатьТовары;
Элементы.ОтборГруппыКатегорииНоменклатуры.Доступность = Объект.ВыгружатьТовары;
КонецПроцедуры
&НаСервереБезКонтекста
Функция ВыбратьФормуРедактирования(ИмяФормыРедактирования);
Возврат ОбменССайтомПовтИсп.ИмяПрикладнойФормы(ИмяФормыРедактирования);
КонецФункции
&НаСервере
Процедура ПриСозданииЧтенииНаСервере(ЭтотОбъект, Объект)
Если Не ЭтотОбъект.ФормаРедактируется Тогда
ОбменССайтомПереопределяемый.ДобавитьРеквизитыФормыУзла(ЭтотОбъект, Объект);
УстановитьУсловноеОформление();
КонецЕсли;
УстановитьВидимостьЭлементовФормы();
УстановитьДоступностьЭлементовФормы(ЭтотОбъект, Объект);
НастроитьЭлементыАвтообмен();
УстановитьНадписьРасписанияОбменаСервер();
ОбновитьПереходыНаСайт();
УстановитьПараметрыТаблицыКаталоговСервер();
КонецПроцедуры
&НаСервере
Процедура ВыполнитьДействияПриЧтенииНаСервере()
ЗаполнитьТаблицуКаталоговСервер();
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьЭлементовФормы()
Если ПолучитьФункциональнуюОпцию("РаботаВАвтономномРежиме")
Или ПолучитьФункциональнуюОпцию("РаботаВЛокальномРежиме") Тогда
Элементы.ГруппаВыгружатьНаСайтГоризонтально.Видимость = Истина;
Иначе
Элементы.ГруппаВыгружатьНаСайтГоризонтально.Видимость = Ложь;
Если Не Объект.ВыгружатьНаСайт Тогда
Объект.ВыгружатьНаСайт = Истина;
Модифицированность = Истина;
КонецЕсли;
КонецЕсли;
УстановитьВидимостьСтраницФормы();
ИспользоватьХарактеристики = Истина;
ОбменССайтомПереопределяемый.УстановитьПризнакИспользоватьХарактеристики(ИспользоватьХарактеристики);
Элементы.ВыгружатьХарактеристикиВКаталогТоваров.Видимость = ИспользоватьХарактеристики;
ОбменССайтомПереопределяемый.УстановитьВидимостьЭлементовФормыУзла(ЭтотОбъект);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьДоступностьЭлементовФормы(Форма, Объект)
Элементы = Форма.Элементы;
Если Объект.ВыгружатьНаСайт Тогда
Элементы.СтраницыТипОбмена.ТекущаяСтраница = Элементы.СтраницаВыгрузкаНаСайт;
Форма.ПереключательНазначениеОбмена = 0;
Иначе
Элементы.СтраницыТипОбмена.ТекущаяСтраница = Элементы.СтраницаВыгрузкаВКаталог;
Форма.ПереключательНазначениеОбмена = 1;
КонецЕсли;
Форма.ПереключательВыгрузкаИзменений = 0;
Если Объект.ВыгружатьИзменения Тогда
Форма.ПереключательВыгрузкаИзменений = 1;
КонецЕсли;
Элементы.ФайлЗагрузки.Доступность = Объект.ОбменЗаказами;
УстановитьДоступностьТочекСамовывозаСервер(Форма, Объект);
УстановитьДоступностьОграниченияКаталогаПредложениямиСервер(Форма, Объект);
УстановитьДоступностьВыгружатьКартинкиСервер(Форма, Объект);
УстановитьДоступностьВыгружатьХарактеристикиСервер(Форма, Объект);
ОбменССайтомКлиентСерверПереопределяемый.УстановитьДоступностьЭлементовФормыУзла(Форма, Объект);
КонецПроцедуры
&НаСервере
Процедура НастроитьЭлементыАвтообмен()
Если Не ОбщегоНазначения.РазделениеВключено() Тогда
Элементы.ГруппаАвтообменСтраницы.ТекущаяСтраница = Элементы.ГруппаАвтообменСтраница;
Элементы.НастроитьРасписаниеОбмена.Доступность = Объект.ИспользоватьРегламентноеЗадание;
Иначе
Элементы.ГруппаАвтообменСтраницы.ТекущаяСтраница = Элементы.ГруппаАвтообменСтраницаИнтервал;
Элементы.ИнтервалОбменаССайтом.Доступность = Объект.ИспользоватьРегламентноеЗадание;
КонецЕсли;
Элементы.ПользовательРегламентногоЗадания.Доступность = Объект.ИспользоватьРегламентноеЗадание;
КонецПроцедуры
&НаСервере
Процедура УстановитьПараметрыТаблицыКаталоговСервер()
ЗаголовокТаблицы = НСтр("ru = 'Таблица каталогов (соответствие групп номенклатуры каталогам на сайте)'");
ЗаголовокКолонки = НСтр("ru = 'Группы номенклатуры'");
ВыборГруппИЭлементов = ГруппыИЭлементы.Группы;
Элементы.ГруппаТаблицаКаталогов.Заголовок = ЗаголовокТаблицы;
Элементы.ТаблицаКаталоговГруппы.Заголовок = ЗаголовокКолонки;
Элементы.ТаблицаКаталоговГруппы.ВыборГруппИЭлементов = ВыборГруппИЭлементов;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьТаблицуКаталоговСервер()
НадписьВсеЭлементыСписка = "(" + НСтр("ru = 'Все'") + ")";
СохраненнаяТаблицаКаталогов = РеквизитФормыВЗначение("Объект").СохраненнаяТаблицаКаталогов.Получить();
Если НЕ ТипЗнч(СохраненнаяТаблицаКаталогов) = Тип("ТаблицаЗначений") Тогда
СоздатьКаталогПоУмолчаниюСервер();
Иначе
ТаблицаКаталогов.Очистить();
Для Каждого СтрокаСохраненнойТаблицыКаталогов Из СохраненнаяТаблицаКаталогов Цикл
НоваяСтрока = ТаблицаКаталогов.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаСохраненнойТаблицыКаталогов);
Если Не СохраненнаяТаблицаКаталогов.Колонки.Найти("ХранилищеНастроекКомпоновки") = Неопределено Тогда
Если Не СтрокаСохраненнойТаблицыКаталогов.ХранилищеНастроекКомпоновки = Неопределено Тогда
ХранилищеНастроекКаталогПакет = СтрокаСохраненнойТаблицыКаталогов.ХранилищеНастроекКомпоновки.Получить();
НоваяСтрока.АдресНастроекКаталогПакет = ПоместитьВоВременноеХранилище(ХранилищеНастроекКаталогПакет,
УникальныйИдентификатор);
КонецЕсли;
КонецЕсли;
Если Не СохраненнаяТаблицаКаталогов.Колонки.Найти("ХранилищеНастроекКаталогПакет") = Неопределено Тогда
Если Не СтрокаСохраненнойТаблицыКаталогов.ХранилищеНастроекКаталогПакет = Неопределено Тогда
ХранилищеНастроекКаталогПакет = СтрокаСохраненнойТаблицыКаталогов.ХранилищеНастроекКаталогПакет.Получить();
Если ЗначениеЗаполнено(ХранилищеНастроекКаталогПакет) Тогда
НоваяСтрока.АдресНастроекКаталогПакет = ПоместитьВоВременноеХранилище(ХранилищеНастроекКаталогПакет,
УникальныйИдентификатор);
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если Не СохраненнаяТаблицаКаталогов.Колонки.Найти("ХранилищеНастроекИзмененияПакета") = Неопределено Тогда
Если Не СтрокаСохраненнойТаблицыКаталогов.ХранилищеНастроекИзмененияПакета = Неопределено Тогда
ХранилищеНастроекИзмененияПакета = СтрокаСохраненнойТаблицыКаталогов.ХранилищеНастроекИзмененияПакета.Получить();
НоваяСтрока.АдресНастроекИзмененияПакета = ПоместитьВоВременноеХранилище(ХранилищеНастроекИзмененияПакета,
УникальныйИдентификатор);
КонецЕсли;
КонецЕсли;
Если Не СохраненнаяТаблицаКаталогов.Колонки.Найти("ХранилищеНастроекКаталог") = Неопределено Тогда
Если Не СтрокаСохраненнойТаблицыКаталогов.ХранилищеНастроекКаталог = Неопределено Тогда
ХранилищеНастроекКаталог = СтрокаСохраненнойТаблицыКаталогов.ХранилищеНастроекКаталог.Получить();
НоваяСтрока.АдресНастроекКаталог = ПоместитьВоВременноеХранилище(ХранилищеНастроекКаталог,
УникальныйИдентификатор);
КонецЕсли;
КонецЕсли;
Если Не СохраненнаяТаблицаКаталогов.Колонки.Найти("ХранилищеНастроекПакетПредложений") = Неопределено Тогда
Если Не СтрокаСохраненнойТаблицыКаталогов.ХранилищеНастроекПакетПредложений = Неопределено Тогда
ХранилищеНастроекПакетПредложений = СтрокаСохраненнойТаблицыКаталогов.ХранилищеНастроекПакетПредложений.Получить();
НоваяСтрока.АдресНастроекПакетПредложений = ПоместитьВоВременноеХранилище(ХранилищеНастроекПакетПредложений,
УникальныйИдентификатор);
КонецЕсли;
КонецЕсли;
КонецЦикла;
Если ТаблицаКаталогов.Количество() = 0 Тогда
СоздатьКаталогПоУмолчаниюСервер();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура СоздатьКаталогПоУмолчаниюСервер()
НоваяСтрока = ТаблицаКаталогов.Добавить();
НоваяСтрока.Каталог = НСтр("ru = 'Основной каталог товаров'");
НоваяСтрока.Группы.Добавить(Неопределено, НадписьВсеЭлементыСписка);
НоваяСтрока.ИдентификаторКаталога = Строка(Новый УникальныйИдентификатор);
КонецПроцедуры
&НаСервере
Функция ПроверитьУзелОбменаЭтаИБСервер()
ЭтотУзел = ПланыОбмена.ОбменССайтом.ЭтотУзел();
Возврат Объект.Ссылка = ЭтотУзел;
КонецФункции
&НаСервереБезКонтекста
Процедура ОбработатьВыбранныеГруппыСерверБезКонтекста(СписокГрупп, НадписьВсеЭлементыСписка)
ГруппыВыбраны = Ложь;
МассивУдалить = Новый Массив;
СправочникНоменклатура = ОбменССайтомПовтИсп.ИмяПрикладногоСправочника("Номенклатура");
ТипНоменклатура = Тип("СправочникСсылка."+ СправочникНоменклатура);
Для Каждого ЭлементСЗ Из СписокГрупп Цикл
ТекГруппа = ЭлементСЗ.Значение;
Если НЕ ЗначениеЗаполнено(ТекГруппа)
ИЛИ (ТипЗнч(ТекГруппа) = ТипНоменклатура
И НЕ ТекГруппа.ЭтоГруппа) Тогда
МассивУдалить.Добавить(ЭлементСЗ);
КонецЕсли;
КонецЦикла;
Для Каждого ЭлементМУ Из МассивУдалить Цикл
СписокГрупп.Удалить(ЭлементМУ);
КонецЦикла;
МассивУдалить = Новый Массив;
Для Каждого ЭлементСЗ Из СписокГрупп Цикл
Если НЕ МассивУдалить.Найти(ЭлементСЗ) = НеОпределено Тогда
Продолжить;
КонецЕсли;
ТекГруппа = ЭлементСЗ.Значение;
Для Каждого ЭлементСЗВложенный Из СписокГрупп Цикл
Если НЕ МассивУдалить.Найти(ЭлементСЗВложенный) = НеОпределено Тогда
Продолжить;
КонецЕсли;
Если НЕ ЭлементСЗВложенный = ЭлементСЗ
И ЭлементСЗВложенный.Значение = ТекГруппа Тогда
МассивУдалить.Добавить(ЭлементСЗВложенный);
Иначе
Если ЭлементСЗВложенный.Значение.ПринадлежитЭлементу(ТекГруппа) Тогда
МассивУдалить.Добавить(ЭлементСЗВложенный);
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЦикла;
Для Каждого ЭлементМУ Из МассивУдалить Цикл
СписокГрупп.Удалить(ЭлементМУ);
КонецЦикла;
Для Каждого ЭлементСЗ Из СписокГрупп Цикл
Если ЗначениеЗаполнено(ЭлементСЗ.Значение) Тогда
ГруппыВыбраны = Истина;
Прервать;
КонецЕсли;
КонецЦикла;
Если НЕ ГруппыВыбраны Тогда
СписокГрупп.Очистить();
СписокГрупп.Добавить(НеОпределено, НадписьВсеЭлементыСписка);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УстановитьДоступностьПолейОбменЗаказами()
Элементы.ФайлЗагрузки.Доступность = Объект.ОбменЗаказами;
КонецПроцедуры
&НаКлиенте
Процедура УстановитьДоступностьПоляКаталогВыгрузки()
Элементы.КаталогВыгрузки.Доступность = Объект.ОбменТоварами;
КонецПроцедуры
&НаКлиенте
Функция ПолучитьПериодПовтораВТечениеДня()
ЗначенияВыбора = СоответствиеЗначенийВыбораККоличествуСекунд();
ПериодПовтораВТечениеДня = ЗначенияВыбора.Получить(ИнтервалОбменаССайтом);
Возврат ?(ПериодПовтораВТечениеДня = Неопределено, 1800, ПериодПовтораВТечениеДня);
КонецФункции
&НаКлиенте
Функция СоответствиеЗначенийВыбораККоличествуСекунд()
СоответствиеНадписей = Новый Соответствие;
СоответствиеНадписей.Вставить(НСтр("ru='Один раз в 5 минут'"), 300);
СоответствиеНадписей.Вставить(НСтр("ru='Один раз в 15 минут'"), 900);
СоответствиеНадписей.Вставить(НСтр("ru='Один раз в 30 минут'"), 1800);
СоответствиеНадписей.Вставить(НСтр("ru='Один раз в час'"), 3600);
СоответствиеНадписей.Вставить(НСтр("ru='Один раз в 3 часа'"), 10800);
СоответствиеНадписей.Вставить(НСтр("ru='Один раз в 6 часов'"), 21600);
СоответствиеНадписей.Вставить(НСтр("ru='Один раз в 12 часов'"), 43200);
Возврат СоответствиеНадписей;
КонецФункции
&НаКлиенте
Процедура УстановитьРасписаниеРегламентногоЗадания()
Месяцы = Новый Массив;
Месяцы.Добавить(1);
Месяцы.Добавить(2);
Месяцы.Добавить(3);
Месяцы.Добавить(4);
Месяцы.Добавить(5);
Месяцы.Добавить(6);
Месяцы.Добавить(7);
Месяцы.Добавить(8);
Месяцы.Добавить(9);
Месяцы.Добавить(10);
Месяцы.Добавить(11);
Месяцы.Добавить(12);
ДниНедели = Новый Массив;
ДниНедели.Добавить(1);
ДниНедели.Добавить(2);
ДниНедели.Добавить(3);
ДниНедели.Добавить(4);
ДниНедели.Добавить(5);
ДниНедели.Добавить(6);
ДниНедели.Добавить(7);
ПериодПовтораВТечениеДня = ПолучитьПериодПовтораВТечениеДня();
Если ПериодПовтораВТечениеДня > 0 Тогда
Расписание = Новый РасписаниеРегламентногоЗадания;
Расписание.Месяцы = Месяцы;
Расписание.ДниНедели = ДниНедели;
Расписание.ПериодПовтораВТечениеДня = ПериодПовтораВТечениеДня;
Расписание.ПериодПовтораДней = 1;
РасписаниеРегламентногоЗадания = Расписание;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УстановитьНадписьРасписанияОбмена()
ПараметрыРаботыКлиента = СтандартныеПодсистемыКлиент.ПараметрыРаботыКлиентаПриЗапуске();
Если Не ПараметрыРаботыКлиента.РазделениеВключено Тогда
Если РасписаниеРегламентногоЗадания = Неопределено Тогда
ТекстЗаголовка = НСтр("ru='Настроить расписание обмена'");
Иначе
ТекстЗаголовка = РасписаниеРегламентногоЗадания;
КонецЕсли;
Элементы.НастроитьРасписаниеОбмена.Заголовок = ТекстЗаголовка;
Иначе
Если РасписаниеРегламентногоЗадания = Неопределено Тогда
ИнтервалОбменаССайтом = НСтр("ru = 'Один раз в 30 минут'");
Иначе
ЗначениеПериода = РасписаниеРегламентногоЗадания.ПериодПовтораВТечениеДня;
Если ЗначениеПериода = 0 Тогда
ИнтервалОбменаССайтом = НСтр("ru = 'Один раз в 30 минут'");
ИначеЕсли ЗначениеПериода <= 300 Тогда
ИнтервалОбменаССайтом = НСтр("ru = 'Один раз в 5 минут'");
ИначеЕсли ЗначениеПериода <= 900 Тогда
ИнтервалОбменаССайтом = НСтр("ru = 'Один раз в 15 минут'");
ИначеЕсли ЗначениеПериода <= 1800 Тогда
ИнтервалОбменаССайтом = НСтр("ru = 'Один раз в 30 минут'");
ИначеЕсли ЗначениеПериода <= 3600 Тогда
ИнтервалОбменаССайтом = НСтр("ru = 'Один раз в час'");
ИначеЕсли ЗначениеПериода <= 10800 Тогда
ИнтервалОбменаССайтом = НСтр("ru = 'Один раз в 3 часа'");
ИначеЕсли ЗначениеПериода <= 21600 Тогда
ИнтервалОбменаССайтом = НСтр("ru = 'Один раз в 6 часов'");
ИначеЕсли ЗначениеПериода <= 43200 Тогда
ИнтервалОбменаССайтом = НСтр("ru = 'Один раз в 12 часов'");
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УстановитьДоступностьРасписанияОбмена()
ПараметрыРаботыКлиента = СтандартныеПодсистемыКлиент.ПараметрыРаботыКлиентаПриЗапуске();
Если Не ПараметрыРаботыКлиента.РазделениеВключено Тогда
Элементы.НастроитьРасписаниеОбмена.Доступность = Объект.ИспользоватьРегламентноеЗадание;
Иначе
Элементы.ИнтервалОбменаССайтом.Доступность = Объект.ИспользоватьРегламентноеЗадание;
КонецЕсли;
Элементы.ПользовательРегламентногоЗадания.Доступность = Объект.ИспользоватьРегламентноеЗадание;
#Если МобильныйКлиент Тогда
Элементы.НастроитьРасписаниеОбмена.Видимость = Ложь;
#КонецЕсли
КонецПроцедуры
&НаКлиенте
Процедура ВыполнитьНастройкуРасписанияОбмена()
#Если Не МобильныйКлиент Тогда
Если РасписаниеРегламентногоЗадания = Неопределено Тогда
РасписаниеРегламентногоЗадания = Новый РасписаниеРегламентногоЗадания;
КонецЕсли;
ОписаниеОповещения = Новый ОписаниеОповещения("ИзменитьРасписаниеОбмена", ЭтотОбъект);
Диалог = Новый ДиалогРасписанияРегламентногоЗадания(РасписаниеРегламентногоЗадания);
Диалог.Показать(ОписаниеОповещения);
#КонецЕсли
КонецПроцедуры
&НаКлиенте
Процедура ИзменитьРасписаниеОбмена(Результат, Параметры) Экспорт
Если ТипЗнч(Результат) = Тип("РасписаниеРегламентногоЗадания") Тогда
РасписаниеРегламентногоЗадания = Результат;
УстановитьНадписьРасписанияОбмена();
Модифицированность = Истина;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаКаталоговГруппыНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
Группы = Элементы.ТаблицаКаталогов.ТекущиеДанные.Группы;
Если Группы.Количество() = 1 Тогда
Если НЕ ЗначениеЗаполнено(Группы[0].Значение) Тогда
Группы.Очистить();
КонецЕсли;
КонецЕсли;
Если Объект.ВидОтбораПоНоменклатуре = ПредопределенноеЗначение("Перечисление.ВидыОтборовНоменклатуры.ГруппыНоменклатуры") Тогда
ТипЗначений = ПолучитьТипСправочника("Номенклатура");
Иначе
ТипЗначений = ПолучитьТипСправочника("ВидыНоменклатуры");
КонецЕсли;
Элементы.ТаблицаКаталогов.ТекущиеДанные.Группы.ТипЗначения = ТипЗначений;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьФормуОтбораКаталога()
ПараметрыФормы = Новый Структура();
ПараметрыФормы.Вставить("АдресНастроекКомпоновки", АдресНастроекКаталога());
ПараметрыФормы.Вставить("РежимВыгрузки", РежимВыгрузки);
ОписаниеОповещения = Новый ОписаниеОповещения("НастроитьКомпоновщик", ЭтотОбъект);
РежимОткрытия = РежимОткрытияОкнаФормы.БлокироватьОкноВладельца;
ФормаНастройки = "ПланОбмена.ОбменССайтом.Форма.ФормаНастройкиОтбора";
ОткрытьФорму(ФормаНастройки, ПараметрыФормы,,,,, ОписаниеОповещения, РежимОткрытия)
КонецПроцедуры
&НаКлиенте
Функция АдресНастроекКаталога()
Если РежимВыгрузки = 0 Тогда
АдресНастроек = Элементы.ТаблицаКаталогов.ТекущиеДанные.АдресНастроекКаталогПакет;
ИначеЕсли РежимВыгрузки = 1 Тогда
АдресНастроек = Элементы.ТаблицаКаталогов.ТекущиеДанные.АдресНастроекКаталог;
ИначеЕсли РежимВыгрузки = 2 Тогда
АдресНастроек = Элементы.ТаблицаКаталогов.ТекущиеДанные.АдресНастроекПакетПредложений;
ИначеЕсли РежимВыгрузки = 3 Тогда
АдресНастроек = Элементы.ТаблицаКаталогов.ТекущиеДанные.АдресНастроекИзмененияПакета;
КонецЕсли;
Возврат АдресНастроек;
КонецФункции
&НаКлиенте
Процедура НастроитьКомпоновщик(НастройкиКомпоновки, Параметры) Экспорт
Если НастройкиКомпоновки = Неопределено Тогда
Возврат;
КонецЕсли;
УстановитьНастройкиКаталога(НастройкиКомпоновки);
КонецПроцедуры
&НаКлиенте
Процедура УстановитьНастройкиКаталога(НастройкиКомпоновки)
ТекущиеДанные = Элементы.ТаблицаКаталогов.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
Если РежимВыгрузки = 0 Тогда
ТекущиеДанные.АдресНастроекКаталогПакет = ПоместитьВоВременноеХранилище(НастройкиКомпоновки,
УникальныйИдентификатор);;
ИначеЕсли РежимВыгрузки = 1 Тогда
ТекущиеДанные.АдресНастроекКаталог = ПоместитьВоВременноеХранилище(НастройкиКомпоновки,
УникальныйИдентификатор);
ИначеЕсли РежимВыгрузки = 2 Тогда
ТекущиеДанные.АдресНастроекПакетПредложений = ПоместитьВоВременноеХранилище(НастройкиКомпоновки,
УникальныйИдентификатор);
ИначеЕсли РежимВыгрузки = 3 Тогда
ТекущиеДанные.АдресНастроекИзмененияПакета = ПоместитьВоВременноеХранилище(НастройкиКомпоновки,
УникальныйИдентификатор);
КонецЕсли;
ТекущиеДанные.НастройкиКаталога = Строка(НастройкиКомпоновки.Отбор);
КонецПроцедуры
&НаКлиенте
Функция ИдентификаторУникален()
ИдентификаторКаталога = Элементы.ТаблицаКаталогов.ТекущиеДанные.ИдентификаторКаталога;
Найдено = ТаблицаКаталогов.НайтиСтроки(Новый Структура("ИдентификаторКаталога", ИдентификаторКаталога));
ИдентификаторыУникальны = Найдено.Количество() = 1;
Если НЕ ИдентификаторыУникальны Тогда
ОчиститьСообщения();
ОбщегоНазначенияКлиент.СообщитьПользователю(
НСтр("ru = 'Идентификатор каталога должен быть уникальным.'"),
Объект.Ссылка,
ОбщегоНазначенияКлиентСервер.ПутьКТабличнойЧасти(
"ТаблицаКаталогов", ТаблицаКаталогов.Индекс(Элементы.ТаблицаКаталогов.ТекущиеДанные) + 1,
"ИдентификаторКаталога"));
КонецЕсли;
Возврат ИдентификаторыУникальны;
КонецФункции
&НаСервере
Процедура ВосстановитьРеквизитыПрикладногоРешения(ОбъектУзла)
СохраненныеНастройки = Новый Структура;
Если Не ОбъектУзла = Неопределено Тогда
СохраненныеНастройки = ОбъектУзла.ПараметрыПрикладногоРешения.Получить();
Если Не ТипЗнч(СохраненныеНастройки) = Тип("Структура") Тогда
СохраненныеНастройки = Новый Структура;
КонецЕсли;
КонецЕсли;
Если СохраненныеНастройки.Свойство("ПараметрыПрикладногоРешения") Тогда
ПараметрыПрикладногоРешения = СохраненныеНастройки.ПараметрыПрикладногоРешения;
Если ТипЗнч(ПараметрыПрикладногоРешения) = Тип("Структура") Тогда
Для Каждого КлючЗначение Из ПараметрыПрикладногоРешения Цикл
Попытка
Если ТипЗнч(КлючЗначение.Значение) = Тип("ТаблицаЗначений") Тогда
ЭтотОбъект[КлючЗначение.Ключ].Загрузить(КлючЗначение.Значение);
Иначе
ЭтотОбъект[КлючЗначение.Ключ] = КлючЗначение.Значение;
КонецЕсли;
Исключение
ЗаписьЖурналаРегистрации(НСтр("ru = 'Ошибка параметров обмена с сайтами'", ОбщегоНазначения.КодОсновногоЯзыка()),
УровеньЖурналаРегистрации.Ошибка,,,
ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
КонецПопытки;
КонецЦикла;
КонецЕсли;
Иначе
МассивРеквизитовПрикладногоРешения = Новый Массив;
ЗаполнитьМассивРеквизитовФормыПрикладногоРешения(МассивРеквизитовПрикладногоРешения);
Для Каждого ЭлементМассива Из МассивРеквизитовПрикладногоРешения Цикл
Попытка
ЭтотОбъект[ЭлементМассива] = "1";
Исключение
ЗаписьЖурналаРегистрации(НСтр("ru = 'Ошибка параметров обмена с сайтами'", ОбщегоНазначения.КодОсновногоЯзыка()),
УровеньЖурналаРегистрации.Ошибка,,,
ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
КонецПопытки;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДозаполнитьТаблицуКаталогов(СтрокаТаблицыКаталогов)
ОбработатьВыбранныеГруппыСерверБезКонтекста(СтрокаТаблицыКаталогов.Группы, НадписьВсеЭлементыСписка);
Если ПустаяСтрока(СтрокаТаблицыКаталогов.ИдентификаторКаталога) Тогда
СтрокаТаблицыКаталогов.ИдентификаторКаталога = Строка(Новый УникальныйИдентификатор);
КонецЕсли;
Если ПустаяСтрока(СтрокаТаблицыКаталогов.Каталог) Тогда
СтрокаТаблицыКаталогов.Каталог = НСтр("ru = 'Каталог товаров'") + " "
+ ВРег(СокрЛП(Лев(СтрокаТаблицыКаталогов.ИдентификаторКаталога, 8)));
КонецЕсли;
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ЗаполнитьМассивРеквизитовФормыПрикладногоРешения(МассивРеквизитов)
ОбменССайтомПереопределяемый.ЗаполнитьПрикладныеРеквизитыФормыУзлаОбменССайтом(МассивРеквизитов);
КонецПроцедуры
&НаСервере
Процедура СохранитьРеквизиты(ТекущийОбъект, МассивЗначений, СохраненныеНастройки)
Если Не ТипЗнч(МассивЗначений) = Тип("Массив") Тогда
Массив = Новый Массив;
Массив.Добавить(МассивЗначений);
Иначе
Массив = МассивЗначений;
КонецЕсли;
ДополнительныеРеквизиты = Новый Структура;
Для Каждого ЭлементМассива Из Массив Цикл
Если ТипЗнч(ЭтотОбъект[ЭлементМассива]) = Тип("ДанныеФормыКоллекция") Тогда
ЗначениеРеквизита = РеквизитФормыВЗначение(ЭлементМассива);
Иначе
ЗначениеРеквизита = ЭтотОбъект[ЭлементМассива];
КонецЕсли;
ДополнительныеРеквизиты.Вставить(ЭлементМассива, ЗначениеРеквизита);
КонецЦикла;
Если Не ЗначениеЗаполнено(ДополнительныеРеквизиты) Тогда
Возврат;
КонецЕсли;
СохраненныеНастройки.Вставить("ПараметрыПрикладногоРешения", ДополнительныеРеквизиты);
ТекущийОбъект.ПараметрыПрикладногоРешения = Новый ХранилищеЗначения(СохраненныеНастройки);
КонецПроцедуры
&НаКлиенте
Процедура УстановитьДоступностьТочекСамовывоза()
Элементы.СписокТочекСамовывоза.Доступность = Объект.ВыгружатьЦеныОстатки
И Не Объект.ВыгружатьОбновленияЦенИОстатков;
КонецПроцедуры
&НаКлиенте
Процедура УстановитьДоступностьОграниченияКаталогаПредложениями()
Элементы.ОграничитьКаталогДоступнымиПредложениями.Доступность = Объект.ВыгружатьЦеныОстатки
И Объект.ВыгружатьТовары
И Не Объект.ВыгружатьОбновленияЦенИОстатков;
КонецПроцедуры
&НаКлиенте
Процедура УстановитьДоступностьВыгружатьКартинки()
Элементы.ВыгружатьКартинки.Доступность = Объект.ВыгружатьТовары;
КонецПроцедуры
&НаКлиенте
Процедура УстановитьДоступностьВыгружатьХарактеристики()
Элементы.ВыгружатьХарактеристикиВКаталогТоваров.Доступность = Объект.ВыгружатьТовары;
КонецПроцедуры
&НаКлиенте
Процедура СформироватьПредставлениеОтбораВТаблицеКаталогов()
РежимВыгрузки = РежимВыгрузкиДанных();
Если РежимВыгрузки = 0 Тогда
ИмяКолонкиСОтбором = "АдресНастроекКаталогПакет";
ИначеЕсли РежимВыгрузки = 1 Тогда
ИмяКолонкиСОтбором = "АдресНастроекКаталог";
ИначеЕсли РежимВыгрузки = 2 Тогда
ИмяКолонкиСОтбором = "АдресНастроекПакетПредложений";
ИначеЕсли РежимВыгрузки = 3 Тогда
ИмяКолонкиСОтбором = "АдресНастроекИзмененияПакета";
КонецЕсли;
Для Каждого СтрокаКаталога Из ТаблицаКаталогов Цикл
Если Не ЗначениеЗаполнено(СтрокаКаталога[ИмяКолонкиСОтбором]) Тогда
СтрокаКаталога.НастройкиКаталога = "";
Продолжить;
КонецЕсли;
НастройкиКомпоновки = ПолучитьИзВременногоХранилища(СтрокаКаталога[ИмяКолонкиСОтбором]);;
Если Не ЗначениеЗаполнено(НастройкиКомпоновки) Тогда
СтрокаКаталога.НастройкиКаталога = "";
Продолжить;
КонецЕсли;
ПредставлениеОтбора = "";
Если Не НастройкиКомпоновки.Отбор = Неопределено Тогда
ПредставлениеОтбора = Строка(НастройкиКомпоновки.Отбор);
КонецЕсли;
СтрокаКаталога.НастройкиКаталога = ПредставлениеОтбора;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ДобавитьТочкиСамовывоза(ТочкиСамовывоза, Параметры) Экспорт
Если Не ТочкиСамовывоза = Неопределено Тогда
СписокТочекСамовывоза.ЗагрузитьЗначения(ТочкиСамовывоза);
Модифицированность = Истина;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СформироватьЗаголовокПараметрыВыгрузки()
ШаблонЗаголовка = "";
Если Объект.РазмерПорции > 0 Тогда
ШаблонЗаголовка = НСтр("ru = 'Количество товаров в порции %1;'");
КонецЕсли;
Если Объект.КоличествоПовторений > 0 Тогда
ШаблонЗаголовка = ШаблонЗаголовка + НСтр("ru = 'Количество попыток обмена %2.'");
КонецЕсли;
Если ЗначениеЗаполнено(ШаблонЗаголовка) Тогда
ЗаголовокКнопки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонЗаголовка, Объект.РазмерПорции,
Объект.КоличествоПовторений);
Иначе
ЗаголовокКнопки = НСтр("ru = 'Параметры порционной выгрузки данных на сайт.'");
КонецЕсли;
Элементы.РасширеннаяНастройка.Заголовок = ЗаголовокКнопки;
КонецПроцедуры
&НаСервере
Процедура ПроверитьПодключение(НастройкиПодключения, ТекстПредупреждения)
Если Объект.Ссылка.Пустая() Или ПарольИзменен Тогда
ПарольИзХранилища = Пароль;
Иначе
УстановитьПривилегированныйРежим(Истина);
ПарольИзХранилища = ОбщегоНазначения.ПрочитатьДанныеИзБезопасногоХранилища(Объект.Ссылка, "Пароль");
УстановитьПривилегированныйРежим(Ложь);
КонецЕсли;
НастройкиПодключения.Вставить("Пароль", ПарольИзХранилища);
ОбменССайтом.ВыполнитьТестовоеПодключениеКСайту(НастройкиПодключения, ТекстПредупреждения);
КонецПроцедуры
&НаСервере
Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
ОбменССайтомПереопределяемый.СкорректироватьПроверяемыеРеквизитыФормыУзла(ЭтотОбъект,
ПроверяемыеРеквизиты,
Объект.ОбменТоварами,
Объект.ОбменЗаказами);
КонецПроцедуры
&НаКлиенте
Процедура УстановитьДоступностьКартинкиСклад()
УстановитьДоступностьТочекСамовывоза();
УстановитьДоступностьОграниченияКаталогаПредложениями();
УстановитьДоступностьВыгружатьКартинки();
УстановитьДоступностьВыгружатьХарактеристики();
СформироватьПредставлениеОтбораВТаблицеКаталогов();
КонецПроцедуры
&НаКлиенте
Функция РежимВыгрузкиДанных()
Если Объект.ВыгружатьТовары И Объект.ВыгружатьЦеныОстатки И Не Объект.ВыгружатьОбновленияЦенИОстатков Тогда
РежимВыгрузки = 0;
ИначеЕсли Объект.ВыгружатьТовары И Не Объект.ВыгружатьЦеныОстатки И Не Объект.ВыгружатьОбновленияЦенИОстатков Тогда
РежимВыгрузки = 1;
ИначеЕсли Объект.ВыгружатьЦеныОстатки И Не Объект.ВыгружатьТовары И Не Объект.ВыгружатьОбновленияЦенИОстатков Тогда
РежимВыгрузки = 2;
ИначеЕсли Объект.ВыгружатьОбновленияЦенИОстатков Тогда
РежимВыгрузки = 3;
КонецЕсли;
Возврат РежимВыгрузки;
КонецФункции
&НаКлиенте
Процедура ПоказатьДиалогВыбораФайла()
Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.ВыборКаталога);
Диалог.Заголовок = НСтр("ru = 'Укажите каталог обмена'");
Диалог.Каталог = Объект.КаталогВыгрузки;
Оповещение = Новый ОписаниеОповещения("ПослеВыбораКаталогаВыгрузки", ЭтотОбъект);
ФайловаяСистемаКлиент.ПоказатьДиалогВыбора(Оповещение, Диалог);
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьФайлОбменаЗаказами()
Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
Диалог.Заголовок = НСтр("ru = 'Выберите xml-файл с заказами'");
Диалог.ПолноеИмяФайла = Объект.ФайлЗагрузки;
Диалог.Фильтр = НСтр("ru = 'Документ XML'") + " (*.xml)|*.xml";
Оповещение = Новый ОписаниеОповещения("ПослеВыбораФайлаЗагрузки", ЭтотОбъект);
ФайловаяСистемаКлиент.ПоказатьДиалогВыбора(Оповещение, Диалог);
КонецПроцедуры
&НаКлиенте
Процедура ЗадатьВопросУстановкиРасширения(ОповещениеВопроса)
ТекстВопроса= НСтр("ru = 'Для данной операции необходимо установить расширение работы с файлами.
|Установить расширение работы с файлами ?'");
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ОповещениеВопроса", ОповещениеВопроса);
ОтветОповещения = Новый ОписаниеОповещения("ВопросУстановитьРасширениеЗавершить", ЭтотОбъект, ДополнительныеПараметры);
ПоказатьВопрос(ОтветОповещения, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
КонецПроцедуры
&НаСервере
Процедура ПолеВводаПриИзмененииНаСервере(ЭлементИмя)
ОбменССайтомПереопределяемый.ПолеВводаПриИзмененииНаСервере(ЭлементИмя, ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ПолеФлажкаПриИзмененииНаСервере(ЭлементИмя)
ОбменССайтомПереопределяемый.ПолеФлажкаПриИзмененииНаСервере(ЭлементИмя, ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ТаблицаФормыПередОкончаниемРедактированияНаСервере(ЭлементИмя, НоваяСтрока, ОтменаРедактирования, Отказ)
ОбменССайтомПереопределяемый.ТаблицаФормыПередОкончаниемРедактированияНаСервере(ЭлементИмя, НоваяСтрока, ОтменаРедактирования, Отказ,ЭтотОбъект);
КонецПроцедуры
#КонецОбласти