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