#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ПрограммныйИнтерфейс
#Область ПроцедурыИФункцииБсп
#Область ВыводОписаний
Функция ЗаголовокКомандыДляСозданияНовогоОбменаДанными() Экспорт
Возврат НСтр("ru = 'Любая программа с поддержкой универсального формата данных'");
КонецФункции
Функция КраткаяИнформацияПоОбмену(ИдентификаторНастройки)
ПоясняющийТекст = "";
Если ИдентификаторНастройки = ОбменДаннымиЛокализация.ИдентификаторНастройкиОбменаБП30() Тогда
ПоясняющийТекст = НСтр("ru = 'Данная настройка позволит синхронизировать данные между программами ""%1""
|и ""Бухгалтерия предприятия, редакция 3.0"". В синхронизации участвуют документы и нормативно-справочная информация.'");
ИначеЕсли ИдентификаторНастройки = ОбменДаннымиЛокализация.ИдентификаторНастройкиОбменаБПКОРП30() Тогда
ПоясняющийТекст = НСтр("ru = 'Данная настройка позволит синхронизировать данные между программами ""%1""
|и ""Бухгалтерия предприятия КОРП, редакция 3.0"". В синхронизации участвуют документы и нормативно-справочная информация.'");
ИначеЕсли ИдентификаторНастройки = ОбменДаннымиЛокализация.ИдентификаторНастройкиОбменаБазовойУТБП30() Тогда
ПоясняющийТекст = НСтр("ru = 'Данная настройка позволит отправлять данные из программы ""1С:Управление торговлей базовая, редакция 11""
|в программу ""Бухгалтерия предприятия, редакция 3.0"". Синхронизация данных выполняется в одностороннем режиме.'");
ИначеЕсли ИдентификаторНастройки = "ОбменКасса" Тогда
ПоясняющийТекст = НСтр("ru = 'Данная настройка позволит синхронизировать данные между программами ""%1""
|и ""1С:Касса"". В синхронизации участвуют документы и нормативно-справочная информация.'");
ИначеЕсли ИдентификаторНастройки = "ОбменУПРМК" Тогда
ПоясняющийТекст = НСтр("ru = 'Данная настройка позволит синхронизировать данные между программами ""%1""
|и ""1С:Рабочее место кассира"". В синхронизации участвуют документы и нормативно-справочная информация.'");
ИначеЕсли ИдентификаторНастройки = "ОбменДО" Тогда
ПоясняющийТекст = НСтр("ru = 'Данная настройка позволит синхронизировать данные между программами ""%1""
|и ""1С:Документооборот КОРП, редакция 3.0"". В синхронизации участвуют документы и нормативно-справочная информация.'");
Иначе
ПоясняющийТекст = НСтр("ru = 'Позволяет синхронизировать данные между любыми программами, поддерживающими универсальный формат обмена ""Enterprise Data"".'");
КонецЕсли;
ПоясняющийТекст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
ПоясняющийТекст, Метаданные.Синоним);
Возврат ПоясняющийТекст;
КонецФункции
Функция ПодробнаяИнформацияПоОбмену(ИдентификаторНастройки)
ИмяФормыПодробнойИнформации = "ПланОбмена.СинхронизацияДанныхЧерезУниверсальныйФормат.Форма.ПодробнаяИнформация";
Если ИдентификаторНастройки = ОбменДаннымиЛокализация.ИдентификаторНастройкиОбменаБП30()
Или ИдентификаторНастройки = ОбменДаннымиЛокализация.ИдентификаторНастройкиОбменаБПКОРП30()
Или ИдентификаторНастройки = ОбменДаннымиЛокализация.ИдентификаторНастройкиОбменаБазовойУТБП30()
Или ИдентификаторНастройки = "ОбменУПБП" Тогда
ИмяФормыПодробнойИнформации = "ПланОбмена.СинхронизацияДанныхЧерезУниверсальныйФормат.Форма.ПодробнаяИнформацияБП30";
КонецЕсли;
Возврат ИмяФормыПодробнойИнформации;
КонецФункции
#КонецОбласти
#Область ПереопределяемаяНастройкаДополненияВыгрузки
Процедура НастроитьИнтерактивнуюВыгрузку(Получатель, Параметры) Экспорт
РеквизитыУзлаОбмена = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Получатель, "РежимВыгрузкиДокументов, РежимВыгрузкиСправочников");
Если РеквизитыУзлаОбмена.РежимВыгрузкиДокументов = Перечисления.РежимыВыгрузкиОбъектовОбмена.НеВыгружать
И РеквизитыУзлаОбмена.РежимВыгрузкиСправочников = Перечисления.РежимыВыгрузкиОбъектовОбмена.НеВыгружать Тогда
Параметры.ВариантВсеДокументы.Использование = Ложь;
Параметры.ВариантБезДополнения.Использование = Ложь;
Параметры.ВариантПроизвольныйОтбор.Использование = Ложь;
Параметры.ВариантДополнительно.Использование = Ложь;
Иначе
Параметры.ВариантВсеДокументы.Использование = Ложь;
Параметры.ВариантБезДополнения.Использование = Истина;
Параметры.ВариантБезДополнения.Порядок = 3;
Параметры.ВариантБезДополнения.Заголовок = НСтр("ru = 'Не добавлять документы к отправке'")
+ Символы.ПС
+ НСтр("ru = 'Отправлять только нормативно-справочную информацию, измененную с момента последней отправки.'");
Параметры.ВариантПроизвольныйОтбор.Использование = Истина;
Параметры.ВариантПроизвольныйОтбор.Порядок = 2;
ПравилаОтправкиДокументовПолучателя = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Получатель, "ПравилаОтправкиДокументов");
Если ПравилаОтправкиДокументовПолучателя = "НеСинхронизировать" Тогда
Параметры.ВариантПроизвольныйОтбор.Заголовок = НСтр("ru = 'Добавить справочники'");
Иначе
Параметры.ВариантПроизвольныйОтбор.Заголовок = НСтр("ru = 'Добавить произвольные справочники и документы'");
КонецЕсли;
Если Не ПравилаОтправкиДокументовПолучателя = "НеСинхронизировать" Тогда
ПараметрыПоУмолчанию = ПараметрыВыгрузкиПоУмолчанию(Получатель);
Параметры.ВариантДополнительно.Использование = Истина;
Параметры.ВариантДополнительно.Порядок = 1;
Параметры.ВариантДополнительно.Заголовок = НСтр("ru='Отправить все документы'");
Параметры.ВариантДополнительно.ИмяФормыОтбора = "ПланОбмена.СинхронизацияДанныхЧерезУниверсальныйФормат.Форма.НастройкаВыгрузки";
Параметры.ВариантДополнительно.ЗаголовокКомандыФормы = НСтр("ru='Выбрать организации для отбора'");
Параметры.ВариантДополнительно.ИспользоватьПериодОтбора = Истина;
Параметры.ВариантДополнительно.ПериодОтбора = ПараметрыПоУмолчанию.Период;
ОписаниеОтбора = Параметры.ВариантДополнительно.Отбор;
СтрокаОтбора = ОписаниеОтбора.Добавить();
СтрокаОтбора.ПолноеИмяМетаданных = "ВсеДокументы";
СтрокаОтбора.ВыборПериода = Истина;
СтрокаОтбора.Период = ПараметрыПоУмолчанию.Период;
СтрокаОтбора.Отбор = ПараметрыПоУмолчанию.Отбор;
Иначе
Параметры.ВариантДополнительно.Использование = Ложь;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Функция ПредставлениеОтбораИнтерактивнойВыгрузки(Получатель, Параметры) Экспорт
Если Параметры.ИспользоватьПериодОтбора Тогда
Если ЗначениеЗаполнено(Параметры.ПериодОтбора) Тогда
ОписаниеПериода = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru='за период: %1'"), НРег(Параметры.ПериодОтбора));
Иначе
ДатаНачалаВыгрузки = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Получатель, "ДатаНачалаВыгрузкиДокументов");
Если ЗначениеЗаполнено(ДатаНачалаВыгрузки) Тогда
ОписаниеПериода = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru='начиная с даты начала отправки документов: %1'"), Формат(ДатаНачалаВыгрузки, "ДЛФ=DD"));
Иначе
ОписаниеПериода = НСтр("ru='за весь период учета'");
КонецЕсли;
КонецЕсли;
Иначе
ОписаниеПериода = "";
КонецЕсли;
СписокОрганизаций = ОрганизацииОтбораИнтерактивнойВыгрузки(Параметры.Отбор);
Если СписокОрганизаций.Количество()=0 Тогда
ОписаниеОтбораОрганизации = НСтр("ru='по всем организациям'");
Иначе
ОписаниеОтбораОрганизации = "";
Для Каждого Элемент Из СписокОрганизаций Цикл
ОписаниеОтбораОрганизации = ОписаниеОтбораОрганизации+ ", " + Элемент.Представление;
КонецЦикла;
ОписаниеОтбораОрганизации = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru='с отбором по организациям: %1'"), СокрЛП(Сред(ОписаниеОтбораОрганизации, 2)));
КонецЕсли;
Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru='Будут отправлены все документы %1,
|%2'"),
ОписаниеПериода, ОписаниеОтбораОрганизации);
КонецФункции
Функция ПараметрыВыгрузкиПоУмолчанию(Получатель)
Результат = Новый Структура;
Результат.Вставить("Период", Новый СтандартныйПериод);
Результат.Период.Вариант = ВариантСтандартногоПериода.ПрошлыйМесяц;
КомпоновщикОтбора = Новый КомпоновщикНастроекКомпоновкиДанных;
Результат.Вставить("Отбор", КомпоновщикОтбора.Настройки.Отбор);
Результат.Вставить( "ПредставлениеОтбора",
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru='Будут отправлены все документы за %1'"),
НРег(Строка(Результат.Период.Вариант))));
Возврат Результат;
КонецФункции
Функция ОрганизацииОтбораИнтерактивнойВыгрузки(Знач ТаблицаОтбора) Экспорт
Результат = Новый СписокЗначений;
Отбор = ТаблицаОтбора[0].Отбор;
Если ТаблицаОтбора.Количество()=0 Или Отбор.Элементы.Количество()=0 Тогда
Возврат Результат;
КонецЕсли;
СтрокаДанных = Отбор.Элементы[0];
Отобранные = СтрокаДанных.ПравоеЗначение;
ТипКоллекции = ТипЗнч(Отобранные);
Если ТипКоллекции=Тип("СписокЗначений") Тогда
Для Каждого Элемент Из Отобранные Цикл
ДобавитьСписокОрганизаций(Результат, Элемент.Значение);
КонецЦикла;
ИначеЕсли ТипКоллекции=Тип("Массив") Тогда
ДобавитьСписокОрганизаций(Результат, Отобранные);
ИначеЕсли ТипКоллекции=Тип("СправочникСсылка.Организации") Тогда
Если Результат.НайтиПоЗначению(Отобранные)=Неопределено Тогда
Результат.Добавить(Отобранные, Отобранные.Наименование);
КонецЕсли;
КонецЕсли;
Возврат Результат;
КонецФункции
Процедура ДобавитьСписокОрганизаций(Список, Знач Организации)
Для Каждого Организация Из Организации Цикл
Если ТипЗнч(Организация)=Тип("Массив") Тогда
ДобавитьСписокОрганизаций(Список, Организация);
Продолжить;
КонецЕсли;
Если Список.НайтиПоЗначению(Организация)=Неопределено Тогда
Список.Добавить(Организация, Организация.Наименование);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Процедура ПриОпределенииПоддерживаемыхОбъектовФормата(ПоддерживаемыеОбъекты, Режим, УзелОбмена = Неопределено) Экспорт
РазрешитьЗагрузкуДанныхВБазовуюВерсию = ?(УзелОбмена <> Неопределено, УзелОбмена.РазрешитьЗагрузкуДанныхВБазовуюВерсию, Ложь);
Если СтрНайти(Режим, "Получение") > 0 И СтандартныеПодсистемыСервер.ЭтоБазоваяВерсияКонфигурации()
И НЕ РазрешитьЗагрузкуДанныхВБазовуюВерсию Тогда
ПоддерживаемыеОбъекты.ЗаполнитьЗначения(Ложь, "Получение");
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область Прочее
Процедура ПриПолученииНастроек(Настройки) Экспорт
Настройки.ИмяКонфигурацииИсточника = ОбменДаннымиУТУП.ИмяКонфигурацииИсточника();
Настройки.ЭтоПланОбменаXDTO = Истина;
Настройки.Глобальный = Истина;
Настройки.ПредупреждатьОНесоответствииВерсийПравилОбмена = Ложь;
Настройки.ФорматОбмена = "http://v8.1c.ru/edi/edi_stnd/EnterpriseData";
ВерсииФормата = Новый Соответствие;
ОбменДаннымиУТ.ДоступныеВерсииУниверсальногоФормата(ВерсииФормата);
Настройки.ВерсииФорматаОбмена = ВерсииФормата;
Настройки.ИспользоватьКешПубличныхИдентификаторов = Истина;
Настройки.ПланОбменаИспользуетсяВМоделиСервиса = Истина;
Настройки.Алгоритмы.ПриПолученииОписанияВариантаНастройки = Истина;
Настройки.Алгоритмы.ПриПолученииВариантовНастроекОбмена = Истина;
Настройки.Алгоритмы.НастроитьИнтерактивнуюВыгрузку = Истина;
Настройки.Алгоритмы.ПредставлениеОтбораИнтерактивнойВыгрузки = Истина;
Настройки.Алгоритмы.ПриОпределенииПоддерживаемыхОбъектовФормата = Истина;
Настройки.ПравилаРегистрацииВМенеджере = Истина;
Настройки.ИмяМенеджераРегистрации = "МенеджерРегистрации";
КонецПроцедуры
Процедура ПриПолученииВариантовНастроекОбмена(ВариантыНастроекОбмена, ПараметрыКонтекста) Экспорт
Если Не ЗначениеЗаполнено(ПараметрыКонтекста.ИмяКорреспондента) Тогда
ВариантНастройки = ВариантыНастроекОбмена.Добавить();
ВариантНастройки.ИдентификаторНастройки = "ОбменДО";
ВариантНастройки.КорреспондентВМоделиСервиса = Истина;
ВариантНастройки.КорреспондентВЛокальномРежиме = Истина;
КонецЕсли;
Если ПолучитьФункциональнуюОпцию("УправлениеТорговлей")
И СтандартныеПодсистемыСервер.ЭтоБазоваяВерсияКонфигурации() Тогда
Если ПараметрыКонтекста.ИмяКорреспондента = "БухгалтерияПредприятия"
Или Не ЗначениеЗаполнено(ПараметрыКонтекста.ИмяКорреспондента) Тогда
ВариантНастройки = ВариантыНастроекОбмена.Добавить();
ВариантНастройки.ИдентификаторНастройки = ОбменДаннымиЛокализация.ИдентификаторНастройкиОбменаБазовойУТБП30();
ВариантНастройки.КорреспондентВМоделиСервиса = Истина;
ВариантНастройки.КорреспондентВЛокальномРежиме = Истина;
КонецЕсли;
КонецЕсли;
Если ПараметрыКонтекста.ИмяКорреспондента = "БухгалтерияПредприятия"
Или Не ЗначениеЗаполнено(ПараметрыКонтекста.ИмяКорреспондента) Тогда
ВариантНастройки = ВариантыНастроекОбмена.Добавить();
ВариантНастройки.ИдентификаторНастройки = ОбменДаннымиЛокализация.ИдентификаторНастройкиОбменаБП30();
ВариантНастройки.КорреспондентВМоделиСервиса = Истина;
ВариантНастройки.КорреспондентВЛокальномРежиме = Истина;
КонецЕсли;
Если ПараметрыКонтекста.ИмяКорреспондента = "БухгалтерияПредприятияКОРП"
Или Не ЗначениеЗаполнено(ПараметрыКонтекста.ИмяКорреспондента) Тогда
ВариантНастройки = ВариантыНастроекОбмена.Добавить();
ВариантНастройки.ИдентификаторНастройки = ОбменДаннымиЛокализация.ИдентификаторНастройкиОбменаБПКОРП30();
ВариантНастройки.КорреспондентВМоделиСервиса = Истина;
ВариантНастройки.КорреспондентВЛокальномРежиме = Истина;
КонецЕсли;
Если Не ЗначениеЗаполнено(ПараметрыКонтекста.ИмяКорреспондента) Тогда
ВариантНастройки = ВариантыНастроекОбмена.Добавить();
ВариантНастройки.ИдентификаторНастройки = "ОбменКасса";
ВариантНастройки.КорреспондентВМоделиСервиса = Истина;
ВариантНастройки.КорреспондентВЛокальномРежиме = Истина;
ВариантНастройки = ВариантыНастроекОбмена.Добавить();
ВариантНастройки.ИдентификаторНастройки = "ОбменУПРМК";
ВариантНастройки.КорреспондентВМоделиСервиса = Истина;
ВариантНастройки.КорреспондентВЛокальномРежиме = Истина;
ВариантНастройки = ВариантыНастроекОбмена.Добавить();
ВариантНастройки.ИдентификаторНастройки = "ОбменУниверсальный";
ВариантНастройки.КорреспондентВМоделиСервиса = Истина;
ВариантНастройки.КорреспондентВЛокальномРежиме = Истина;
КонецЕсли;
КонецПроцедуры
Процедура ПриПолученииОписанияВариантаНастройки(ОписаниеВарианта, ИдентификаторНастройки, ПараметрыКонтекста) Экспорт
ОписаниеВарианта.ПутьКФайлуКомплектаПравилНаПользовательскомСайте = "https://users.v8.1c.ru/distribution/project/EnterpriseERP20";
ОписаниеВарианта.ПутьКФайлуКомплектаПравилВКаталогеШаблонов = "\1c\enterprise";
ОписаниеВарианта.ИмяФайлаНастроекДляПриемника = НСтр("ru = 'Синхронизация данных через формат EnterpriseData'");
ОписаниеВарианта.ИспользоватьПомощникСозданияОбменаДанными = ИспользоватьПомощникСозданияОбменаДанными();
ОписаниеВарианта.ИспользуемыеТранспортыСообщенийОбмена = ИспользуемыеТранспортыСообщенийОбмена(ИдентификаторНастройки);
ОписаниеВарианта.КраткаяИнформацияПоОбмену = КраткаяИнформацияПоОбмену(ИдентификаторНастройки);
ОписаниеВарианта.ПодробнаяИнформацияПоОбмену = ПодробнаяИнформацияПоОбмену(ИдентификаторНастройки);
ОписаниеВарианта.ОбщиеДанныеУзлов = ОбщиеДанныеУзлов();
Если ИдентификаторНастройки = "ОбменДО" Тогда
ОписаниеВарианта.Вставить("ЗаголовокКомандыДляСозданияНовогоОбменаДанными", НСтр("ru = '1С:Документооборот КОРП, редакция 3.0 (EnterpriseData)'"));
ОписаниеВарианта.Вставить("ЗаголовокПомощникаСозданияОбмена", НСтр("ru = 'Настройка синхронизации с программой ""1С:Документооборот КОРП, редакция. 3.0"" (EnterpriseData)'"));
ОписаниеВарианта.Вставить("ЗаголовокУзлаПланаОбмена", НСтр("ru = 'Синхронизация с программой ""1С:Документооборот КОРП, редакция 3.0""'"));
ОписаниеВарианта.Вставить("НаименованиеКонфигурацииКорреспондента", НСтр("ru = '1С:Документооборот КОРП, редакция 3.0'"));
ОписаниеВарианта.Вставить("ИмяКонфигурацииКорреспондента", "ДокументооборотКОРП");
ИначеЕсли ИдентификаторНастройки = "ОбменУПБП"
Или ИдентификаторНастройки = ОбменДаннымиЛокализация.ИдентификаторНастройкиОбменаБП30()
Или ИдентификаторНастройки = ОбменДаннымиЛокализация.ИдентификаторНастройкиОбменаБазовойУТБП30()
Тогда
ОписаниеВарианта.Вставить("ЗаголовокКомандыДляСозданияНовогоОбменаДанными", НСтр("ru = 'Бухгалтерия предприятия, редакция 3.0 (EnterpriseData)'"));
ОписаниеВарианта.Вставить("ЗаголовокПомощникаСозданияОбмена", НСтр("ru = 'Настройка синхронизации с программой ""Бухгалтерия предприятия, редакция. 3.0"" (EnterpriseData)'"));
ОписаниеВарианта.Вставить("ЗаголовокУзлаПланаОбмена", НСтр("ru = 'Синхронизация с программой ""Бухгалтерия предприятия, редакция 3.0""'"));
ОписаниеВарианта.Вставить("НаименованиеКонфигурацииКорреспондента", НСтр("ru = 'Бухгалтерия предприятия, редакция 3.0'"));
ОписаниеВарианта.Вставить("ИмяКонфигурацииКорреспондента", "БухгалтерияПредприятия");
ИначеЕсли ИдентификаторНастройки = ОбменДаннымиЛокализация.ИдентификаторНастройкиОбменаБПКОРП30() Тогда
ОписаниеВарианта.Вставить("ЗаголовокКомандыДляСозданияНовогоОбменаДанными", НСтр("ru = 'Бухгалтерия предприятия КОРП, редакция 3.0 (EnterpriseData)'"));
ОписаниеВарианта.Вставить("ЗаголовокПомощникаСозданияОбмена", НСтр("ru = 'Настройка синхронизации с программой ""Бухгалтерия предприятия КОРП, редакция. 3.0"" (EnterpriseData)'"));
ОписаниеВарианта.Вставить("ЗаголовокУзлаПланаОбмена", НСтр("ru = 'Синхронизация с программой ""Бухгалтерия предприятия КОРП, редакция 3.0""'"));
ОписаниеВарианта.Вставить("НаименованиеКонфигурацииКорреспондента", НСтр("ru = 'Бухгалтерия предприятия КОРП, редакция 3.0'"));
ОписаниеВарианта.Вставить("ИмяКонфигурацииКорреспондента", "БухгалтерияПредприятия");
ИначеЕсли ИдентификаторНастройки = "ОбменУП2ЗУП3" Тогда
ОписаниеВарианта.Вставить("ЗаголовокКомандыДляСозданияНовогоОбменаДанными", НСтр("ru = 'Зарплата и Управление Персоналом, редакция 3 (EnterpriseData)'"));
ОписаниеВарианта.Вставить("ЗаголовокПомощникаСозданияОбмена", НСтр("ru = 'Настройка синхронизации с программой ""Зарплата и Управление Персоналом, редакция 3"" (EnterpriseData)'"));
ОписаниеВарианта.Вставить("ЗаголовокУзлаПланаОбмена", НСтр("ru = 'Синхронизация с программой ""Зарплата и Управление Персоналом, редакция 3""'"));
ОписаниеВарианта.Вставить("НаименованиеКонфигурацииКорреспондента", НСтр("ru = 'Зарплата и Управление Персоналом, редакция 3'"));
ОписаниеВарианта.Вставить("ИмяКонфигурацииКорреспондента", "ЗарплатаИУправлениеПерсоналом");
ИначеЕсли ИдентификаторНастройки = "ОбменУПУПП" Тогда
ОписаниеВарианта.Вставить("ЗаголовокКомандыДляСозданияНовогоОбменаДанными", НСтр("ru = 'Управление производственным предприятием, редакция 1.3 (EnterpriseData)'"));
ОписаниеВарианта.Вставить("ЗаголовокПомощникаСозданияОбмена", НСтр("ru = 'Настройка синхронизации с программой ""Управление производственным предприятием, редакция. 1.3"" (EnterpriseData)'"));
ОписаниеВарианта.Вставить("ЗаголовокУзлаПланаОбмена", НСтр("ru = 'Синхронизация с программой ""Управление производственным предприятием, редакция 1.3""'"));
ОписаниеВарианта.Вставить("НаименованиеКонфигурацииКорреспондента", НСтр("ru = 'Управление производственным предприятием, редакция 1.3'"));
ОписаниеВарианта.Вставить("ИмяКонфигурацииКорреспондента", "УправлениеПроизводственнымПредприятием");
ИначеЕсли ИдентификаторНастройки = "ОбменКасса" Тогда
ОписаниеВарианта.Вставить("ЗаголовокКомандыДляСозданияНовогоОбменаДанными", НСтр("ru = '1С:Касса (EnterpriseData)'"));
ОписаниеВарианта.Вставить("ЗаголовокПомощникаСозданияОбмена", НСтр("ru = 'Настройка синхронизации с программой ""1С:Касса"" (EnterpriseData)'"));
ОписаниеВарианта.Вставить("ЗаголовокУзлаПланаОбмена", НСтр("ru = 'Синхронизация с программой ""1С:Касса""'"));
ОписаниеВарианта.Вставить("НаименованиеКонфигурацииКорреспондента", НСтр("ru = '1С:Касса'"));
ОписаниеВарианта.Вставить("ИмяКонфигурацииКорреспондента", "Касса");
ИначеЕсли ИдентификаторНастройки = "ОбменУПРМК" Тогда
ОписаниеВариантаНастройкиОбменУПРМК(ОписаниеВарианта);
ИначеЕсли ИдентификаторНастройки = "ОбменУниверсальный" Тогда
ОписаниеВарианта.Вставить("ЗаголовокКомандыДляСозданияНовогоОбменаДанными", НСтр("ru = 'Другая программа (EnterpriseData)'"));
ОписаниеВарианта.Вставить("ЗаголовокПомощникаСозданияОбмена", НСтр("ru = 'Настройка синхронизации данных через формат EnterpriseData'"));
ОписаниеВарианта.Вставить("ЗаголовокУзлаПланаОбмена", НСтр("ru = 'Синхронизация данных через формат EnterpriseData'"));
ОписаниеВарианта.Вставить("НаименованиеКонфигурацииКорреспондента", НСтр("ru = 'Другая программа'"));
ОписаниеВарианта.Вставить("ИмяКонфигурацииКорреспондента", "ДругаяПрограмма");
Иначе
ОписаниеВарианта.Вставить("НаименованиеКонфигурацииКорреспондента", НСтр("ru = 'Через формат обмена EnterpriseData'"));
КонецЕсли;
КонецПроцедуры
Процедура ПереходСУправлениеТорговлей() Экспорт
УзлыПланаОбмена = ПланыОбмена.СинхронизацияДанныхЧерезУниверсальныйФормат.Выбрать();
Пока УзлыПланаОбмена.Следующий() Цикл
Если СтрНайти(УзлыПланаОбмена.ВариантНастройки, "ОбменБП") > 0
Или УзлыПланаОбмена.ВариантНастройки= "ОбменУТ_БП3" Тогда
ОчереднойУзел = УзлыПланаОбмена.ПолучитьОбъект();
ОчереднойУзел.ВариантНастройки = ОбменДаннымиЛокализация.ИдентификаторНастройкиОбменаБП30();
ОчереднойУзел.Записать();
КонецЕсли;
КонецЦикла;
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#Область ПрочиеПроцедурыИФункции
Функция СписокПравилФормированияДоговора() Экспорт
СписокПравил = Новый СписокЗначений;
СписокПравил.Добавить("БезРазделения", НСтр("ru = 'Договоры контрагентов формируются без привязки к соглашениям или заказам'"));
Если (ПолучитьФункциональнуюОпцию("ИспользоватьЗаказыКлиентов")
Или ПолучитьФункциональнуюОпцию("ИспользоватьЗаказыПоставщикам"))
И Не (ПолучитьФункциональнуюОпцию("ИспользоватьПоступлениеПоНесколькимЗаказам")
И ПолучитьФункциональнуюОпцию("ИспользоватьРеализациюПоНесколькимЗаказам")
И ПолучитьФункциональнуюОпцию("ИспользоватьАктыВыполненныхРаботПоНесколькимЗаказам")) Тогда
СписокПравил.Добавить("ПоЗаказам", НСтр("ru = 'Разным заказам соответствуют разные договоры контрагентов'"));
КонецЕсли;
Если Константы.ИспользованиеСоглашенийСКлиентами.Получить() <> Перечисления.ИспользованиеСоглашенийСКлиентами.НеИспользовать Тогда
СписокПравил.Добавить("ПоСоглашениям", НСтр("ru = 'Разным соглашениям соответствуют разные договоры контрагентов'"));
КонецЕсли;
Если ПолучитьФункциональнуюОпцию("ИспользоватьСделкиСКлиентами") Тогда
СписокПравил.Добавить("ПоСделкам", НСтр("ru = 'Разным сделкам соответствуют разные договоры контрагентов'"));
КонецЕсли;
Возврат СписокПравил;
КонецФункции
Процедура АктуализацияРеквизитовУзлаПланаОбмена(УзелПланаОбмена) Экспорт
ВариантНастройки = УзелПланаОбмена.ВариантНастройки;
ПравилаОтправкиСправочников = УзелПланаОбмена.ПравилаОтправкиСправочников;
ПравилаОтправкиДокументов = УзелПланаОбмена.ПравилаОтправкиДокументов;
КоличествоВыбранныхОрганизаций = УзелПланаОбмена.Организации.Количество();
ИспользоватьОтборПоОрганизациям = УзелПланаОбмена.ИспользоватьОтборПоОрганизациям;
КоличествоВыбранныхВидовЦен = УзелПланаОбмена.ВидыЦенНоменклатуры.Количество();
ВыгружатьЦеныНоменклатуры = УзелПланаОбмена.ВыгружатьЦеныНоменклатуры;
ИспользоватьОтборПоРазделамУчета = УзелПланаОбмена.ИспользоватьОтборПоРазделамУчетаИДокументам;
ИспользоватьОтборПоСкладам = УзелПланаОбмена.ИспользоватьОтборПоСкладам;
КоличествоВыбранныхСкладов = УзелПланаОбмена.Склады.Количество();
ИспользоватьОтборПоНоменклатуре = УзелПланаОбмена.ИспользоватьОтборПоНоменклатуре;
КоличествоОтборовПоНоменклатуре = УзелПланаОбмена.ФильтрыНоменклатуры.Количество();
ИспользоватьОтборПоКурьерам = УзелПланаОбмена.ИспользоватьОтборПоКурьерам;
КоличествоВыбранныхКурьеров = УзелПланаОбмена.Курьеры.Количество();
ИспользоватьОтборПоФизическимЛицам = УзелПланаОбмена.ИспользоватьОтборПоФизическимЛицам;
КоличествоВыбранныхФизическихЛиц = УзелПланаОбмена.ФизическиеЛица.Количество();
ИспользоватьОтборПоКассамККМ = УзелПланаОбмена.ИспользоватьОтборПоКассамККМ;
КоличествоВыбранныхКассККМ = УзелПланаОбмена.КассыККМ.Количество();
ИспользоватьОтборПоЭТ = УзелПланаОбмена.ИспользоватьОтборПоЭквайринговымТерминалам;
КоличествоВыбранныхЭТ = УзелПланаОбмена.ЭквайринговыеТерминалы.Количество();
Если ПолучитьФункциональнуюОпцию("УправлениеТорговлей")
И (ВариантНастройки = ОбменДаннымиЛокализация.ИдентификаторНастройкиОбменаБП30()
Или ВариантНастройки = ОбменДаннымиЛокализация.ИдентификаторНастройкиОбменаБПКОРП30()
Или ВариантНастройки = ОбменДаннымиЛокализация.ИдентификаторНастройкиОбменаБазовойУТБП30()
Или ВариантНастройки = "ОбменУниверсальный") Тогда
ОбменДаннымиУТ.АктуализироватьПризнакИспользованияОбменаСБухгалтерией(УзелПланаОбмена, УзелПланаОбмена.ПометкаУдаления);
КонецЕсли;
Если ПравилаОтправкиСправочников = "НеСинхронизировать" Тогда
УзелПланаОбмена.ИспользоватьОтборПоОрганизациям = Ложь;
УзелПланаОбмена.ВыгружатьЦеныНоменклатуры = Ложь;
УзелПланаОбмена.ВыгружатьАналитикуПоСкладам = Ложь;
УзелПланаОбмена.ИспользоватьОтборПоНоменклатуре = Ложь;
УзелПланаОбмена.ВыгружатьИнформативныеЦены = Ложь;
УзелПланаОбмена.ВыгружатьДанныеМаркировки = Ложь;
УзелПланаОбмена.РежимВыгрузкиСправочников = Перечисления.РежимыВыгрузкиОбъектовОбмена.НеВыгружать;
УзелПланаОбмена.РежимВыгрузкиПриНеобходимости = Перечисления.РежимыВыгрузкиОбъектовОбмена.НеВыгружать;
Иначе
УзелПланаОбмена.РежимВыгрузкиПриНеобходимости = Перечисления.РежимыВыгрузкиОбъектовОбмена.ВыгружатьПриНеобходимости;
Если ПравилаОтправкиСправочников = "СинхронизироватьПоНеобходимости" Тогда
УзелПланаОбмена.ИспользоватьОтборПоНоменклатуре = Ложь;
УзелПланаОбмена.ВыгружатьИнформативныеЦены = Ложь;
УзелПланаОбмена.РежимВыгрузкиСправочников = Перечисления.РежимыВыгрузкиОбъектовОбмена.ВыгружатьПриНеобходимости;
Иначе
УзелПланаОбмена.РежимВыгрузкиСправочников = Перечисления.РежимыВыгрузкиОбъектовОбмена.ВыгружатьПоУсловию;
КонецЕсли;
КонецЕсли;
Если ПравилаОтправкиДокументов = "НеСинхронизировать" Тогда
УзелПланаОбмена.РежимВыгрузкиДокументов = Перечисления.РежимыВыгрузкиОбъектовОбмена.НеВыгружать;
ИначеЕсли ПравилаОтправкиДокументов = "ИнтерактивнаяСинхронизация" Тогда
УзелПланаОбмена.РежимВыгрузкиДокументов = Перечисления.РежимыВыгрузкиОбъектовОбмена.ВыгружатьВручную;
Иначе
УзелПланаОбмена.РежимВыгрузкиДокументов = Перечисления.РежимыВыгрузкиОбъектовОбмена.ВыгружатьПоУсловию;
КонецЕсли;
Если Не ИспользоватьОтборПоОрганизациям И КоличествоВыбранныхОрганизаций <> 0 Тогда
УзелПланаОбмена.Организации.Очистить();
ИначеЕсли КоличествоВыбранныхОрганизаций = 0 И ИспользоватьОтборПоОрганизациям Тогда
УзелПланаОбмена.ИспользоватьОтборПоОрганизациям = Ложь;
КонецЕсли;
Если Не ВыгружатьЦеныНоменклатуры И КоличествоВыбранныхВидовЦен <> 0 Тогда
УзелПланаОбмена.ВидыЦенНоменклатуры.Очистить();
ИначеЕсли ВыгружатьЦеныНоменклатуры Тогда
Если НЕ ПолучитьФункциональнуюОпцию("ИспользоватьНесколькоВидовЦен") Тогда
ВидЦеныПрайсЛист = Ценообразование.ВидЦеныПрайсЛист();
УзелПланаОбмена.ВидыЦенНоменклатуры.Очистить();
СтрокаВидыЦен = УзелПланаОбмена.ВидыЦенНоменклатуры.Добавить();
СтрокаВидыЦен.ВидЦенНоменклатуры = ВидЦеныПрайсЛист;
ИначеЕсли КоличествоВыбранныхВидовЦен = 0 И НЕ ВариантНастройки = "ОбменКасса" Тогда
УзелПланаОбмена.ВыгружатьЦеныНоменклатуры = Ложь;
КонецЕсли;
КонецЕсли;
Если Не ИспользоватьОтборПоНоменклатуре И КоличествоОтборовПоНоменклатуре <> 0 Тогда
УзелПланаОбмена.ФильтрыНоменклатуры.Очистить();
ИначеЕсли КоличествоОтборовПоНоменклатуре = 0 И ИспользоватьОтборПоНоменклатуре Тогда
УзелПланаОбмена.ИспользоватьОтборПоНоменклатуре = Ложь;
КонецЕсли;
Если Не ИспользоватьОтборПоКурьерам И КоличествоВыбранныхКурьеров <> 0 Тогда
УзелПланаОбмена.Курьеры.Очистить();
ИначеЕсли КоличествоВыбранныхКурьеров = 0 И ИспользоватьОтборПоКурьерам Тогда
УзелПланаОбмена.ИспользоватьОтборПоКурьерам = Ложь;
КонецЕсли;
Если Не ИспользоватьОтборПоСкладам И КоличествоВыбранныхСкладов <> 0 Тогда
УзелПланаОбмена.Склады.Очистить();
ИначеЕсли КоличествоВыбранныхСкладов = 0 И ИспользоватьОтборПоСкладам Тогда
УзелПланаОбмена.ИспользоватьОтборПоСкладам = Ложь;
КонецЕсли;
Если Не ИспользоватьОтборПоФизическимЛицам И КоличествоВыбранныхФизическихЛиц <> 0 Тогда
УзелПланаОбмена.ФизическиеЛица.Очистить();
ИначеЕсли КоличествоВыбранныхФизическихЛиц = 0 И ИспользоватьОтборПоФизическимЛицам Тогда
УзелПланаОбмена.ИспользоватьОтборПоФизическимЛицам = Ложь;
КонецЕсли;
Если Не ИспользоватьОтборПоКассамККМ И КоличествоВыбранныхКассККМ <> 0 Тогда
УзелПланаОбмена.КассыККМ.Очистить();
ИначеЕсли КоличествоВыбранныхКассККМ = 0 И ИспользоватьОтборПоКассамККМ Тогда
УзелПланаОбмена.ИспользоватьОтборПоКассамККМ = Ложь;
КонецЕсли;
Если ВариантНастройки = "ОбменУПРМК" И ИспользоватьОтборПоКассамККМ И КоличествоВыбранныхКассККМ <> 0 Тогда
ОбновитьЗависимыеОтборы(УзелПланаОбмена);
КонецЕсли;
Если Не ИспользоватьОтборПоЭТ И КоличествоВыбранныхЭТ <> 0 Тогда
УзелПланаОбмена.ЭквайринговыеТерминалы.Очистить();
ИначеЕсли КоличествоВыбранныхЭТ = 0 И ИспользоватьОтборПоЭТ Тогда
УзелПланаОбмена.ИспользоватьОтборПоЭквайринговымТерминалам = Ложь;
КонецЕсли;
Если Не ЗначениеЗаполнено(УзелПланаОбмена.УправленческаяОрганизация) Тогда
УзелПланаОбмена.УправленческаяОрганизация = Справочники.Организации.УправленческаяОрганизация;
КонецЕсли;
Если ПравилаОтправкиДокументов <> "АвтоматическаяСинхронизация" Тогда
УзелПланаОбмена.ДатаНачалаВыгрузкиДокументов = Дата(1,1,1,0,0,0);
КонецЕсли;
Если Не ЗначениеЗаполнено(УзелПланаОбмена.ВерсияФорматаОбмена) Тогда
УзелПланаОбмена.ВерсияФорматаОбмена = "1.8";
КонецЕсли;
Если (ИспользоватьОтборПоРазделамУчета
И УзелПланаОбмена.РазделыУчета.НайтиСтроки(Новый Структура("Выгружать", Истина)).Количество() = 0)
Или УзелПланаОбмена.РежимВыгрузкиДокументов = Перечисления.РежимыВыгрузкиОбъектовОбмена.НеВыгружать Тогда
УзелПланаОбмена.ИспользоватьОтборПоРазделамУчета = Ложь;
КонецЕсли;
Если Не УзелПланаОбмена.ИспользоватьОтборПоРазделамУчета Тогда
УзелПланаОбмена.РазделыУчета.Очистить();
РазделыУчета = ПолучитьРазделыУчета(Ложь, ВариантНастройки);
УзелПланаОбмена.РазделыУчета.Загрузить(РазделыУчета);
КонецЕсли;
КонецПроцедуры
Процедура ОписаниеВариантаНастройкиОбменУПРМК(ОписаниеВарианта) Экспорт
ОписаниеВарианта.Вставить("ЗаголовокКомандыДляСозданияНовогоОбменаДанными", НСтр("ru = '1С:Рабочее место кассира (EnterpriseData)'"));
ОписаниеВарианта.Вставить("ЗаголовокПомощникаСозданияОбмена", НСтр("ru = 'Настройка синхронизации с программой ""1С:Рабочее место кассира"" (EnterpriseData)'"));
ОписаниеВарианта.Вставить("ЗаголовокУзлаПланаОбмена", НСтр("ru = 'Синхронизация с программой ""1С:Рабочее место кассира""'"));
ОписаниеВарианта.Вставить("НаименованиеКонфигурацииКорреспондента", НСтр("ru = '1С:Рабочее место кассира'"));
ОписаниеВарианта.Вставить("ИмяКонфигурацииКорреспондента", "РабочееМестоКассира");
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#Область ОтборПоРазделамВидамДокументов
Процедура ЗаполнитьРазделПоДокументам(ВидыДокументов, РазделУчета, СтруктураРаздела)
МетаДокументы = Метаданные.Документы;
Для каждого ЭлементМассива Из СтруктураРаздела Цикл
Если Не МетаДокументы.Найти(ЭлементМассива) = Неопределено Тогда
НовСтрока = ВидыДокументов.Добавить();
НовСтрока.ИмяОбъектаМетаданных = МетаДокументы[ЭлементМассива].Имя;
НовСтрока.Представление = ?(Не ПустаяСтрока(МетаДокументы[ЭлементМассива].ПредставлениеОбъекта), МетаДокументы[ЭлементМассива].ПредставлениеОбъекта, строка(МетаДокументы[ЭлементМассива]));
НовСтрока.РазделУчета = РазделУчета;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Процедура ЗаполнитьВидыДокументовПоРазделамУчета(УзелОбъект, МассивРазделовПланаОбмена) Экспорт
МассивРазделов = Новый Массив;
МассивРазделов.Добавить("Ввод остатков");
МассивРазделов.Добавить("Внеоборотные активы");
МассивРазделов.Добавить("Закупки");
МассивРазделов.Добавить("Зарплата");
МассивРазделов.Добавить("Казначейство");
МассивРазделов.Добавить("Продажи");
МассивРазделов.Добавить("Производство");
МассивРазделов.Добавить("Склад");
МассивВводОстатков = Новый Массив;
МассивВводОстатков.Добавить("ВводОстатков");
МассивВводОстатков.Добавить("ВводОстатковВзаиморасчетов");
МассивВводОстатков.Добавить("ВводОстатковДенежныхСредств");
МассивВводОстатков.Добавить("ВводОстатковПоФинансовымИнструментам");
МассивВводОстатков.Добавить("ВводОстатковСПодотчетниками");
МассивВводОстатков.Добавить("ВводОстатковТоваров");
МассивВнеоборотныеАктивы = Новый Массив;
МассивВнеоборотныеАктивы.Добавить("ВводОстатковВнеоборотныхАктивов2_4");
МассивВнеоборотныеАктивы.Добавить("ВводОстатковВнеоборотныхАктивов");
МассивЗакупки = Новый Массив;
МассивЗакупки.Добавить("ВозвратТоваровПоставщику");
МассивЗакупки.Добавить("ЗаказПоставщику");
МассивЗакупки.Добавить("КорректировкаПриобретения");
МассивЗакупки.Добавить("ОтчетКомитенту");
МассивЗакупки.Добавить("ПриобретениеТоваровУслуг");
МассивЗакупки.Добавить("ПриобретениеУслугПрочихАктивов");
МассивЗакупки.Добавить("СчетФактураПолученный");
МассивЗакупки.Добавить("СчетФактураПолученныйАванс");
МассивЗакупки.Добавить("СчетФактураПолученныйНалоговыйАгент");
МассивЗакупки.Добавить("ТаможеннаяДекларацияИмпорт");
МассивЗакупки.Добавить("УведомлениеОВвозеПрослеживаемыхТоваров");
МассивЗакупки.Добавить("УведомлениеОбОстаткахПрослеживаемыхТоваров");
МассивЗакупки.Добавить("УведомлениеОПеремещенииПрослеживаемыхТоваров");
МассивКазначейство = Новый Массив;
МассивКазначейство.Добавить("АвансовыйОтчет");
МассивКазначейство.Добавить("ВнесениеДенежныхСредствВКассуККМ");
МассивКазначейство.Добавить("ВзаимозачетЗадолженности");
МассивКазначейство.Добавить("ВедомостьПрочихДоходовВБанк");
МассивКазначейство.Добавить("ВедомостьПрочихДоходовВКассу");
МассивКазначейство.Добавить("ВедомостьПрочихДоходовПеречислением");
МассивКазначейство.Добавить("ВыбытиеДенежныхДокументов");
МассивКазначейство.Добавить("ВыемкаДенежныхСредствИзКассыККМ");
МассивКазначейство.Добавить("ЗаявкаНаРасходованиеДенежныхСредств");
МассивКазначейство.Добавить("КорректировкаЗадолженности");
МассивКазначейство.Добавить("НачисленияКредитовИДепозитов");
МассивКазначейство.Добавить("ОперацияПоПлатежнойКарте");
МассивКазначейство.Добавить("ОперацияПоЯндексКассе");
МассивКазначейство.Добавить("ОтчетБанкаПоОперациямЭквайринга");
МассивКазначейство.Добавить("ПоступлениеБезналичныхДенежныхСредств");
МассивКазначейство.Добавить("ПоступлениеДенежныхДокументов");
МассивКазначейство.Добавить("ПриходныйКассовыйОрдер");
МассивКазначейство.Добавить("РасходныйКассовыйОрдер");
МассивКазначейство.Добавить("СписаниеБезналичныхДенежныхСредств");
МассивПродажи = Новый Массив;
МассивПродажи.Добавить("АктВыполненныхРабот");
МассивПродажи.Добавить("АннулированиеПодарочныхСертификатов");
МассивПродажи.Добавить("АктВыполненныхРабот");
МассивПродажи.Добавить("ВозвратПодарочныхСертификатов");
МассивПродажи.Добавить("ВозвратТоваровОтКлиента");
МассивПродажи.Добавить("ВозвратТоваровМеждуОрганизациями");
МассивПродажи.Добавить("ЗаказКлиента");
МассивПродажи.Добавить("КассоваяСмена");
МассивПродажи.Добавить("КорректировкаРеализации");
МассивПродажи.Добавить("ОтчетКомиссионера");
МассивПродажи.Добавить("ОтчетКомиссионераОСписании");
МассивПродажи.Добавить("ОтчетПоКомиссииМеждуОрганизациями");
МассивПродажи.Добавить("ОтчетПоКомиссииМеждуОрганизациямиОСписании");
МассивПродажи.Добавить("ОтчетКомитенту");
МассивПродажи.Добавить("ОтчетКомитентуОСписании");
МассивПродажи.Добавить("ОтчетОРозничныхВозвратах");
МассивПродажи.Добавить("ОтчетОРозничныхПродажах");
МассивПродажи.Добавить("ПередачаТоваровХранителю");
МассивПродажи.Добавить("ПередачаТоваровМеждуОрганизациями");
МассивПродажи.Добавить("РеализацияПодарочныхСертификатов");
МассивПродажи.Добавить("РеализацияТоваровУслуг");
МассивПродажи.Добавить("РеализацияУслугПрочихАктивов");
МассивПродажи.Добавить("СчетНаОплатуКлиенту");
МассивПродажи.Добавить("СчетФактураВыданный");
МассивПродажи.Добавить("СчетФактураВыданныйАванс");
МассивПродажи.Добавить("СчетФактураКомиссионеру");
МассивПроизводство = Новый Массив;
МассивПроизводство.Добавить("ВозвратМатериаловИзПроизводства");
МассивПроизводство.Добавить("ВозвратСырьяДавальцу");
МассивПроизводство.Добавить("ВозвратСырьяОтПереработчика");
МассивПроизводство.Добавить("ВозвратПодарочныхСертификатов");
МассивПроизводство.Добавить("ВозвратТоваровОтКлиента");
МассивПроизводство.Добавить("ВозвратТоваровМеждуОрганизациями");
МассивПроизводство.Добавить("ДвижениеПродукцииИМатериалов");
МассивПроизводство.Добавить("ЗаказКлиента");
МассивПроизводство.Добавить("ЗаказДавальца2_5");
МассивПроизводство.Добавить("ОтчетДавальцу2_5");
МассивПроизводство.Добавить("ОтчетПереработчика");
МассивПроизводство.Добавить("ОтчетПереработчика2_5");
МассивПроизводство.Добавить("ОтгрузкаТоваровСХранения");
МассивПроизводство.Добавить("ПередачаМатериаловВПроизводство");
МассивПроизводство.Добавить("ПередачаСырьяПереработчику");
МассивПроизводство.Добавить("ПередачаТоваровХранителю");
МассивПроизводство.Добавить("ПередачаСырьяПереработчику");
МассивПроизводство.Добавить("ПередачаТоваровХранителю");
МассивПроизводство.Добавить("ПоступлениеСырьяОтДавальца");
МассивПроизводство.Добавить("ПоступлениеОтПереработчика");
МассивПроизводство.Добавить("ПоступлениеТоваровОтХранителя");
МассивПроизводство.Добавить("ПриемкаТоваровНаХранение");
МассивПроизводство.Добавить("ПроизводствоБезЗаказа");
МассивПроизводство.Добавить("СборкаТоваров");
МассивПроизводство.Добавить("ПередачаДавальцу");
МассивСклад = Новый Массив;
МассивСклад.Добавить("ВнутреннееПотребление");
МассивСклад.Добавить("ВыкупПринятыхНаХранениеТоваров");
МассивСклад.Добавить("ЗаказНаПеремещение");
МассивСклад.Добавить("ИнвентаризационнаяОпись");
МассивСклад.Добавить("ИнвентаризацияТМЦВЭксплуатации");
МассивСклад.Добавить("ОприходованиеИзлишковТоваров");
МассивСклад.Добавить("ОприходованиеТМЦВЭксплуатации");
МассивСклад.Добавить("ОтчетОСписанииТоваровСХранения");
МассивСклад.Добавить("ПеремещениеТоваров");
МассивСклад.Добавить("ПередачаТоваровМеждуОрганизациями");
МассивСклад.Добавить("ПересортицаТоваров");
МассивСклад.Добавить("ПересчетТоваров");
МассивСклад.Добавить("ПрочееОприходованиеТоваров");
МассивСклад.Добавить("СписаниеИзЭксплуатации");
МассивСклад.Добавить("СписаниеНедостачТоваров");
МассивЗарплата = Новый Массив;
МассивЗарплата.Добавить("ОтражениеЗарплатыВФинансовомУчете");
МассивЗарплата.Добавить("ДоговорЗаймаСотруднику");
МассивЗарплата.Добавить("ВыработкаСотрудников");
СтруктураРазделов = Новый Структура;
МассивПрочее = Новый Массив;
СтруктураРазделов.Вставить("МассивВводОстатков", МассивВводОстатков);
СтруктураРазделов.Вставить("МассивВнеоборотныеАктивы", МассивВнеоборотныеАктивы);
СтруктураРазделов.Вставить("МассивЗакупки", МассивЗакупки);
СтруктураРазделов.Вставить("МассивЗарплата", МассивЗарплата);
СтруктураРазделов.Вставить("МассивКазначейство", МассивКазначейство);
СтруктураРазделов.Вставить("МассивПродажи", МассивПродажи);
СтруктураРазделов.Вставить("МассивПроизводство", МассивПроизводство);
СтруктураРазделов.Вставить("МассивСклад", МассивСклад);
СтруктураРазделов.Вставить("МассивПрочее", МассивПрочее);
Для каждого РазделУчета Из МассивРазделов Цикл
Если МассивРазделовПланаОбмена.Найти(РазделУчета) = Неопределено Тогда
Продолжить;
КонецЕсли;
КлючРазделаУчета = "Массив" + СтрЗаменить(РазделУчета, " ", "");
СтруктураРаздела = СтруктураРазделов[КлючРазделаУчета];
ЗаполнитьРазделПоДокументам(УзелОбъект.ВидыДокументов, РазделУчета, СтруктураРаздела);
КонецЦикла;
УзелОбъект.ИспользоватьОтборПоРазделамУчетаИДокументам = Истина;
УзелОбъект.ИспользоватьОтборПоРазделамУчета = Ложь;
КонецПроцедуры
#КонецОбласти
#Область ПрочиеПроцедурыИФункции
Функция ПолучитьРазделыУчета(ВВидеСтруктуры, ИдентификаторНастройки = "") Экспорт
РазделыУчета = Новый ТаблицаЗначений;
РазделыУчета.Колонки.Добавить("РазделУчета");
РазделыУчета.Колонки.Добавить("Выгружать");
Если ИдентификаторНастройки = "ОбменУП2ЗУП3" Тогда
Раздел = РазделыУчета.Добавить();
Раздел.РазделУчета = "Зарплата";
Раздел.Выгружать = Истина;
Иначе
Раздел = РазделыУчета.Добавить();
Раздел.РазделУчета = "Ввод остатков";
Раздел.Выгружать = Истина;
Если НЕ Константы.УправлениеТорговлей.Получить() Тогда
Раздел = РазделыУчета.Добавить();
Раздел.РазделУчета = "Внеоборотные активы";
Раздел.Выгружать = Истина;
КонецЕсли;
Раздел = РазделыУчета.Добавить();
Раздел.РазделУчета = "Закупки";
Раздел.Выгружать = Истина;
Раздел = РазделыУчета.Добавить();
Раздел.РазделУчета = "Казначейство";
Раздел.Выгружать = Истина;
Раздел = РазделыУчета.Добавить();
Раздел.РазделУчета = "Продажи";
Раздел.Выгружать = Истина;
Если НЕ Константы.УправлениеТорговлей.Получить() Тогда
Раздел = РазделыУчета.Добавить();
Раздел.РазделУчета = "Производство";
Раздел.Выгружать = Истина;
КонецЕсли;
Раздел = РазделыУчета.Добавить();
Раздел.РазделУчета = "Склад";
Раздел.Выгружать = Истина;
КонецЕсли;
Если ВВидеСтруктуры Тогда
Возврат Новый Структура("РазделУчета, Выгружать",
РазделыУчета.ВыгрузитьКолонку("РазделУчета"),
РазделыУчета.ВыгрузитьКолонку("Выгружать"));
Иначе
Возврат РазделыУчета;
КонецЕсли;
КонецФункции
Функция ИспользоватьПомощникСозданияОбменаДанными()
Если ПолучитьФункциональнуюОпцию("УправлениеТорговлей")
И СтандартныеПодсистемыСервер.ЭтоБазоваяВерсияКонфигурации() Тогда
Запрос = Новый Запрос("ВЫБРАТЬ
| СинхронизацияДанныхЧерезУниверсальныйФормат.Ссылка
|ИЗ
| ПланОбмена.СинхронизацияДанныхЧерезУниверсальныйФормат КАК СинхронизацияДанныхЧерезУниверсальныйФормат
|ГДЕ
| СинхронизацияДанныхЧерезУниверсальныйФормат.ВариантНастройки = &ОбменУТБП
| И СинхронизацияДанныхЧерезУниверсальныйФормат.ЭтотУзел = ЛОЖЬ");
Запрос.УстановитьПараметр("ОбменУТБП", ОбменДаннымиЛокализация.ИдентификаторНастройкиОбменаБазовойУТБП30());
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Возврат Ложь;
КонецЕсли;
КонецЕсли;
Возврат Истина;
КонецФункции
Функция ИспользуемыеТранспортыСообщенийОбмена(ИдентификаторНастройки="")
Результат = Новый Массив;
Результат.Добавить(Обработки.ТранспортСообщенийОбменаFILE);
Если ИдентификаторНастройки = "ОбменУПУПП" Тогда
Результат.Добавить(Обработки.ТранспортСообщенийОбменаFTP);
ИначеЕсли ВариантНастройкиОбменаСБазовойВерсией(ИдентификаторНастройки) Тогда
ЗаполнитьИспользуемыеТранспортыСообщенийОбмена(Результат, Истина);
Иначе
ЗаполнитьИспользуемыеТранспортыСообщенийОбмена(Результат,
СтандартныеПодсистемыСервер.ЭтоБазоваяВерсияКонфигурации());
КонецЕсли;
Возврат Результат;
КонецФункции
Функция ОбщиеДанныеУзлов()
Возврат "РежимВыгрузкиПриНеобходимости";
КонецФункции
Функция ВариантНастройкиОбменаСБазовойВерсией(ИдентификаторНастройки)
БазоваяВерсия = Ложь;
Если ИдентификаторНастройки = "ОбменУПРМК" Тогда
БазоваяВерсия = Истина;
КонецЕсли;
Возврат БазоваяВерсия;
КонецФункции
Процедура ЗаполнитьИспользуемыеТранспортыСообщенийОбмена(Результат, БазоваяВерсия)
Результат.Добавить(Обработки.ТранспортСообщенийОбменаWS);
Результат.Добавить(Обработки.ТранспортСообщенийОбменаHTTP);
Результат.Добавить(Обработки.ТранспортСообщенийОбменаПассивныйРежим);
Результат.Добавить(Обработки.ТранспортСообщенийОбменаЯндексДиск);
Результат.Добавить(Обработки.ТранспортСообщенийОбменаGoogleDrive);
Если Не БазоваяВерсия Тогда
Результат.Добавить(Обработки.ТранспортСообщенийОбменаFTP);
Результат.Добавить(Обработки.ТранспортСообщенийОбменаEMAIL);
Результат.Добавить(Обработки.ТранспортСообщенийОбменаCOM);
Результат.Добавить(Обработки.ТранспортСообщенийОбменаESB1C);
Результат.Добавить(Обработки.ТранспортСообщенийОбменаSM);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ПереходНаУниверсальныйФормат
Функция ПереходНаСинхронизациюЧерезУниверсальныйФорматВнешнееСоединение(ПараметрыНастройкиСинхронизацииДанных) Экспорт
ВариантНастройки = ПараметрыНастройкиСинхронизацииДанных.ВариантНастройки;
Если Не ЗначениеЗаполнено(ВариантНастройки) Тогда
ПараметрыНастройкиСинхронизацииДанных.Ошибка = Истина;
ТекстСообщения = НСтр("ru = 'Не указан вариант настройки синхронизации в базе-корреспонденте'");
ПараметрыНастройкиСинхронизацииДанных.СообщениеОбОшибке = ТекстСообщения;
Возврат Неопределено;
КонецЕсли;
ИмяПланаОбменаСтаройНастройки = ИмяПланаОбменаСтаройНастройки(ВариантНастройки);
Если Не ЗначениеЗаполнено(ИмяПланаОбменаСтаройНастройки) Тогда
ПараметрыНастройкиСинхронизацииДанных.Ошибка = Истина;
НСтрока = НСтр("ru = 'Передан неизвестный вариант настройки синхронизации: %1.'");
ПараметрыНастройкиСинхронизацииДанных.СообщениеОбОшибке =
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтрока, ВариантНастройки);
Возврат Неопределено;
КонецЕсли;
Если Метаданные.ПланыОбмена.Найти(ИмяПланаОбменаСтаройНастройки) = Неопределено Тогда
ПараметрыНастройкиСинхронизацииДанных.Ошибка = Истина;
НСтрока = НСтр("ru = 'Не обнаружен план обмена, соответствующий варианту настройки: %1.'");
ПараметрыНастройкиСинхронизацииДанных.СообщениеОбОшибке =
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтрока, ВариантНастройки);
Возврат Неопределено;
КонецЕсли;
КодНастройки = ПараметрыНастройкиСинхронизацииДанных.Код;
НастройкаСинхронизацииДанных = ПланыОбмена[ИмяПланаОбменаСтаройНастройки].НайтиПоКоду(КодНастройки);
Если Не ЗначениеЗаполнено(НастройкаСинхронизацииДанных) Тогда
ПараметрыНастройкиСинхронизацииДанных.Ошибка = Истина;
НСтрока = НСтр("ru = 'Не найден узел корреспондента для плана обмена: %1, код: %2.'");
ПараметрыНастройкиСинхронизацииДанных.СообщениеОбОшибке =
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтрока,
ИмяПланаОбменаСтаройНастройки,
КодНастройки);
Возврат Неопределено;
КонецЕсли;
Возврат ВыполнитьПереходНаСинхронизациюДанныхЧерезУниверсальныйФормат(НастройкаСинхронизацииДанных);
КонецФункции
Функция ПереходНаСинхронизациюЧерезУниверсальныйФорматИнтернет(КодУзла, Ошибка) Экспорт
Если Метаданные.ПланыОбмена.Найти("ОбменУправлениеТорговлейБухгалтерияПредприятияКОРП30") <> Неопределено Тогда
ИмяПланаОбменаДляПерехода = "ОбменУправлениеТорговлейБухгалтерияПредприятияКОРП30";
ИначеЕсли Метаданные.ПланыОбмена.Найти("ОбменУправлениеТорговлейБухгалтерияПредприятия30") <> Неопределено Тогда
ИмяПланаОбменаДляПерехода = "ОбменУправлениеТорговлейБухгалтерияПредприятия30";
КонецЕсли;
НастройкаСинхронизацииЧерезУниверсальныйФормат = Неопределено;
Если ИмяПланаОбменаДляПерехода <> "" Тогда
НастройкаСинхронизацииДанных = ПланыОбмена[ИмяПланаОбменаДляПерехода].НайтиПоКоду(КодУзла);
Если Не НастройкаСинхронизацииДанных.Пустая() Тогда
ПланОбменаМенеджер = ПланыОбмена.СинхронизацияДанныхЧерезУниверсальныйФормат;
Попытка
НастройкаСинхронизацииЧерезУниверсальныйФормат =
ПланОбменаМенеджер.ВыполнитьПереходНаСинхронизациюДанныхЧерезУниверсальныйФормат(НастройкаСинхронизацииДанных);
Исключение
Ошибка = Истина;
КонецПопытки;
КонецЕсли;
КонецЕсли;
Возврат НастройкаСинхронизацииЧерезУниверсальныйФормат;
КонецФункции
Функция ИмяПланаОбменаСтаройНастройки(ВариантНастройки) Экспорт
Если СокрЛП(ВариантНастройки) = ОбменДаннымиЛокализация.ИдентификаторНастройкиОбменаБП30() Тогда
Возврат "ОбменУправлениеТорговлейБухгалтерияПредприятия30";
ИначеЕсли СокрЛП(ВариантНастройки) = ОбменДаннымиЛокализация.ИдентификаторНастройкиОбменаБПКОРП30() Тогда
Возврат "ОбменУправлениеТорговлейБухгалтерияПредприятияКОРП30";
КонецЕсли;
Возврат "";
КонецФункции
Функция ВыполнитьПереходНаСинхронизациюДанныхЧерезУниверсальныйФормат(НастройкаСинхронизацииДанных) Экспорт
НастройкаСинхронизацииЧерезУниверсальныйФормат = Неопределено;
КодНастройки = НастройкаСинхронизацииДанных.Код;
ИмяПланаОбменаСтаройНастройки = НастройкаСинхронизацииДанных.Метаданные().Имя;
ОбновитьПовторноИспользуемыеЗначения();
Запрос = Новый Запрос("ВЫБРАТЬ ПЕРВЫЕ 1
| СинхронизацияДанныхЧерезУниверсальныйФормат.Ссылка
|ИЗ
| ПланОбмена.СинхронизацияДанныхЧерезУниверсальныйФормат КАК СинхронизацияДанныхЧерезУниверсальныйФормат
|ГДЕ
| НЕ СинхронизацияДанныхЧерезУниверсальныйФормат.ЭтотУзел
| И СинхронизацияДанныхЧерезУниверсальныйФормат.Код = &КодНастройки");
Запрос.УстановитьПараметр("КодНастройки", КодНастройки);
РезультатЗапроса = Запрос.Выполнить();
ИмяСобытияЖурналРегистрации = НСтр("ru = 'Переход на синхронизацию данных через универсальный формат'", ОбщегоНазначения.КодОсновногоЯзыка());
Сообщение = НСтр("ru = 'Начало перехода'");
ЗаписьЖурналаРегистрации(ИмяСобытияЖурналРегистрации, УровеньЖурналаРегистрации.Информация, , , Сообщение);
Сообщение = НСтр("ru = 'Создание новой настройки синхронизации данных'");
ЗаписьЖурналаРегистрации(ИмяСобытияЖурналРегистрации, УровеньЖурналаРегистрации.Информация, , , Сообщение);
НачатьТранзакцию();
Попытка
Если Не РезультатЗапроса.Пустой() Тогда
Выборка = РезультатЗапроса.Выбрать();
Выборка.Следующий();
НоваяНастройкаОбъект = Выборка.Ссылка.ПолучитьОбъект();
Иначе
НоваяНастройкаОбъект = ПланыОбмена.СинхронизацияДанныхЧерезУниверсальныйФормат.СоздатьУзел();
КонецЕсли;
ЗаполнитьЗначенияСвойств(НоваяНастройкаОбъект, НастройкаСинхронизацииДанных,,
"НомерОтправленного, НомерПринятого, ПометкаУдаления");
ВариантНастройки = "";
Если ИмяПланаОбменаСтаройНастройки = "ОбменУправлениеТорговлейБухгалтерияПредприятия30" Тогда
ВариантНастройки = ОбменДаннымиЛокализация.ИдентификаторНастройкиОбменаБП30();
ИначеЕсли ИмяПланаОбменаСтаройНастройки = "ОбменУправлениеТорговлейБухгалтерияПредприятияКОРП30" Тогда
ВариантНастройки = ОбменДаннымиЛокализация.ИдентификаторНастройкиОбменаБПКОРП30();
КонецЕсли;
НоваяНастройкаОбъект.ВариантНастройки = ВариантНастройки;
МетаданныеСтаройНастройки = Метаданные.ПланыОбмена[ИмяПланаОбменаСтаройНастройки];
Если МетаданныеСтаройНастройки.ТабличныеЧасти.Найти("Организации") <> Неопределено Тогда
НоваяНастройкаОбъект.Организации.Очистить();
Для Каждого СтрокаОрганизации Из НастройкаСинхронизацииДанных.Организации Цикл
НоваяСтрокаОрганизации = НоваяНастройкаОбъект.Организации.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрокаОрганизации, СтрокаОрганизации);
КонецЦикла;
КонецЕсли;
НоваяНастройкаОбъект.ВыгружатьАналитикуПоСкладам = Истина;
Если МетаданныеСтаройНастройки.Реквизиты.Найти("ОбобщенныйСклад") <> Неопределено Тогда
Если ЗначениеЗаполнено(НастройкаСинхронизацииДанных.ОбобщенныйСклад) Тогда
НоваяНастройкаОбъект.ВыгружатьАналитикуПоСкладам = Ложь;
КонецЕсли;
КонецЕсли;
ДоступныеВерсииФормата = Новый Соответствие;
ОбменДаннымиУТ.ДоступныеВерсииУниверсальногоФормата(ДоступныеВерсииФормата);
Для Каждого КлючИЗначение Из ДоступныеВерсииФормата Цикл
НоваяНастройкаОбъект.ВерсияФорматаОбмена = КлючИЗначение.Ключ;
КонецЦикла;
НоваяНастройкаОбъект.Записать();
НастройкаСинхронизацииЧерезУниверсальныйФормат = НоваяНастройкаОбъект.Ссылка;
КодПредопределенногоУзла = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ПланыОбмена.СинхронизацияДанныхЧерезУниверсальныйФормат.ЭтотУзел(), "Код");
Если СтрДлина(КодПредопределенногоУзла) = 36 Тогда
СтруктураЗаписи = Новый Структура;
СтруктураЗаписи.Вставить("Корреспондент", НастройкаСинхронизацииЧерезУниверсальныйФормат);
СтруктураЗаписи.Вставить("КодУзла",
ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ПланыОбмена[ИмяПланаОбменаСтаройНастройки].ЭтотУзел(), "Код"));
ОбменДаннымиСлужебный.ОбновитьЗаписьВРегистрСведений(СтруктураЗаписи, "ПсевдонимыПредопределенныхУзлов");
КонецЕсли;
Сообщение = НСтр("ru = 'Регистрация изменений'");
ЗаписьЖурналаРегистрации(ИмяСобытияЖурналРегистрации, УровеньЖурналаРегистрации.Информация, , , Сообщение);
ВыполнитьРегистрациюИзменений(НастройкаСинхронизацииДанных, НастройкаСинхронизацииЧерезУниверсальныйФормат);
Сообщение = НСтр("ru = 'Заполнение настроек транспорта сообщений'");
ЗаписьЖурналаРегистрации(ИмяСобытияЖурналРегистрации, УровеньЖурналаРегистрации.Информация, , , Сообщение);
ВыгружатьСообщениеПослеПерехода = Ложь;
ОбработатьНастройкиТранспортаСообщенийОбмена(НастройкаСинхронизацииДанных,
НастройкаСинхронизацииЧерезУниверсальныйФормат,
ВыгружатьСообщениеПослеПерехода);
Сообщение = НСтр("ru = 'Заполнение настроек запрета изменения данных'");
ЗаписьЖурналаРегистрации(ИмяСобытияЖурналРегистрации, УровеньЖурналаРегистрации.Информация, , , Сообщение);
ОбработатьДатыЗапретаИзменения(НастройкаСинхронизацииДанных, НастройкаСинхронизацииЧерезУниверсальныйФормат);
Сообщение = НСтр("ru = 'Заполнение сценариев обмена данными'");
ЗаписьЖурналаРегистрации(ИмяСобытияЖурналРегистрации, УровеньЖурналаРегистрации.Информация, , , Сообщение);
ОбработатьСценарииОбменовДанными(НастройкаСинхронизацииДанных, НастройкаСинхронизацииЧерезУниверсальныйФормат);
ОбработатьСоответствияОбъектовИнформационныхБаз(НастройкаСинхронизацииДанных,
НастройкаСинхронизацииЧерезУниверсальныйФормат);
Сообщение = НСтр("ru = 'Заполнение настроек главного узла'");
ЗаписьЖурналаРегистрации(ИмяСобытияЖурналРегистрации, УровеньЖурналаРегистрации.Информация, , , Сообщение);
ЭтотУзелСсылка = ПланыОбмена.СинхронизацияДанныхЧерезУниверсальныйФормат.ЭтотУзел();
КодЭтогоУзла = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ЭтотУзелСсылка, "Код");
Если Не ЗначениеЗаполнено(КодЭтогоУзла) Тогда
СтарыйГлавныйУзел = ПланыОбмена[ИмяПланаОбменаСтаройНастройки].ЭтотУзел();
НовыйГлавныйУзел = ЭтотУзелСсылка.ПолучитьОбъект();
ЗаполнитьЗначенияСвойств(НовыйГлавныйУзел, СтарыйГлавныйУзел,,
"НомерОтправленного, НомерПринятого, ПометкаУдаления");
Если МетаданныеСтаройНастройки.ТабличныеЧасти.Найти("Организации") <> Неопределено Тогда
НовыйГлавныйУзел.Организации.Очистить();
Для Каждого СтрокаОрганизации Из СтарыйГлавныйУзел.Организации Цикл
НоваяСтрокаОрганизации = НовыйГлавныйУзел.Организации.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрокаОрганизации, СтрокаОрганизации);
КонецЦикла;
КонецЕсли;
НовыйГлавныйУзел.Записать();
КонецЕсли;
Сообщение = НСтр("ru = 'Заполнение результатов обмена данными'");
ЗаписьЖурналаРегистрации(ИмяСобытияЖурналРегистрации, УровеньЖурналаРегистрации.Информация, , , Сообщение);
ОбработатьРезультатыОбменаДанными(НастройкаСинхронизацииДанных, НастройкаСинхронизацииЧерезУниверсальныйФормат);
Если Не НастройкаСинхронизацииДанных.ПометкаУдаления Тогда
Сообщение = НСтр("ru = 'Пометка на удаление старой настройки'");
ЗаписьЖурналаРегистрации(ИмяСобытияЖурналРегистрации, УровеньЖурналаРегистрации.Информация, , , Сообщение);
НастройкаСинхронизацииДанных.ПолучитьОбъект().УстановитьПометкуУдаления(Истина);
КонецЕсли;
ПланыОбмена.УдалитьРегистрациюИзменений(НастройкаСинхронизацииДанных);
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
Сообщение = ОбработкаОшибок.ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
ЗаписьЖурналаРегистрации(ИмяСобытияЖурналРегистрации, УровеньЖурналаРегистрации.Ошибка, , , Сообщение);
ВызватьИсключение;
КонецПопытки;
Запрос = Новый Запрос("ВЫБРАТЬ ПЕРВЫЕ 2
| СинхронизацияДанныхЧерезУниверсальныйФормат.Ссылка
|ИЗ
| ПланОбмена.СинхронизацияДанныхЧерезУниверсальныйФормат КАК СинхронизацияДанныхЧерезУниверсальныйФормат
|ГДЕ
| НЕ СинхронизацияДанныхЧерезУниверсальныйФормат.ЭтотУзел");
Если Запрос.Выполнить().Выгрузить().Количество() < 2 Тогда
ОбменДаннымиСервер.ВыполнитьОбновлениеПравилДляОбменаДанными();
КонецЕсли;
Если ВыгружатьСообщениеПослеПерехода Тогда
Отказ = Ложь;
ОбменДаннымиСервер.ВыполнитьДействиеОбменаДляУзлаИнформационнойБазы(Отказ,
НастройкаСинхронизацииЧерезУниверсальныйФормат,
Перечисления.ДействияПриОбмене.ВыгрузкаДанных);
Если Отказ Тогда
Сообщение = НСтр("ru = 'Выгрузка данных через универсальный формат не выполнена.'");
ЗаписьЖурналаРегистрации(ИмяСобытияЖурналРегистрации, УровеньЖурналаРегистрации.Ошибка, , , Сообщение);
Иначе
Сообщение = НСтр("ru = 'Выгрузка данных через универсальный формат.'");
ЗаписьЖурналаРегистрации(ИмяСобытияЖурналРегистрации, УровеньЖурналаРегистрации.Информация, , , Сообщение);
КонецЕсли;
КонецЕсли;
Сообщение = НСтр("ru = 'Окончание перехода'");
ЗаписьЖурналаРегистрации(ИмяСобытияЖурналРегистрации, УровеньЖурналаРегистрации.Информация, , , Сообщение);
Возврат НастройкаСинхронизацииЧерезУниверсальныйФормат;
КонецФункции
Процедура ВыполнитьРегистрациюИзменений(СтарыйУзел, НовыйУзел)
СоставНовогоПланаОбмена = Метаданные.ПланыОбмена.СинхронизацияДанныхЧерезУниверсальныйФормат.Состав;
НомерСообщения = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(СтарыйУзел, "НомерОтправленного");
ВыборкаИзменений = ПланыОбмена.ВыбратьИзменения(СтарыйУзел, НомерСообщения);
Пока ВыборкаИзменений.Следующий() Цикл
ОбъектРегистрации = ВыборкаИзменений.Получить();
Если ОбъектРегистрации = Неопределено Тогда
Продолжить;
ИначеЕсли ТипЗнч(ОбъектРегистрации) = Тип("УдалениеОбъекта") Тогда
Если Не СоставНовогоПланаОбмена.Содержит(ОбъектРегистрации.Ссылка.Метаданные()) Тогда
Продолжить;
КонецЕсли;
ИначеЕсли Не СоставНовогоПланаОбмена.Содержит(ОбъектРегистрации.Метаданные()) Тогда
Продолжить;
КонецЕсли;
ПланыОбмена.ЗарегистрироватьИзменения(НовыйУзел, ОбъектРегистрации);
КонецЦикла;
КонецПроцедуры
Процедура ОбработатьДатыЗапретаИзменения(СтарыйУзел, НовыйУзел)
ДатыЗапрета = РегистрыСведений.ДатыЗапретаИзменения.СоздатьНаборЗаписей();
ДатыЗапрета.Отбор.Пользователь.Установить(СтарыйУзел);
ДатыЗапрета.Прочитать();
ДатыЗапретаНовый = РегистрыСведений.ДатыЗапретаИзменения.СоздатьНаборЗаписей();
ДатыЗапретаНовый.Отбор.Пользователь.Установить(НовыйУзел);
Для Каждого ДатаЗапрета Из ДатыЗапрета Цикл
ЗаписьНовая = ДатыЗапретаНовый.Добавить();
ЗаписьНовая.Пользователь = НовыйУзел;
ЗаполнитьЗначенияСвойств(ЗаписьНовая, ДатаЗапрета,,"Пользователь");
КонецЦикла;
ДатыЗапрета.Очистить();
ДатыЗапрета.Записать();
ДатыЗапретаНовый.Записать();
КонецПроцедуры
Процедура ОбработатьСценарииОбменовДанными(СтарыйУзел, НовыйУзел)
Запрос = Новый Запрос("ВЫБРАТЬ РАЗЛИЧНЫЕ
| Ссылка
|ИЗ
| Справочник.СценарииОбменовДанными.НастройкиОбмена
|ГДЕ
| УзелИнформационнойБазы = &НастройкаСинхронизации
| И НЕ Ссылка.ПометкаУдаления");
Запрос.УстановитьПараметр("НастройкаСинхронизации", СтарыйУзел);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
СценарийОбменаОбъект = Выборка.Ссылка.ПолучитьОбъект();
СтруктураПоиска = Новый структура("УзелИнформационнойБазы", СтарыйУзел);
СтрокиИсточникДанных = СценарийОбменаОбъект.НастройкиОбмена.НайтиСтроки(СтруктураПоиска);
Для Каждого СтрокаИсточникДанных Из СтрокиИсточникДанных Цикл
СтрокаИсточникДанных.УзелИнформационнойБазы = НовыйУзел;
КонецЦикла;
СценарийОбменаОбъект.Записать();
КонецЦикла;
КонецПроцедуры
Процедура ОбработатьСоответствияОбъектовИнформационныхБаз(СтарыйУзел, НовыйУзел)
ИмяРазделаСобытия = НСтр("ru = 'Переход на синхронизацию данных через универсальный формат'", ОбщегоНазначения.КодОсновногоЯзыка());
ИмяПодразделаСобытия = НСтр("ru = 'Данные для регистрации в обменах'", ОбщегоНазначения.КодОсновногоЯзыка());
ИмяСобытия = СтрШаблон("%1.%2", ИмяРазделаСобытия, ИмяПодразделаСобытия);
Сообщение = НСтр("ru = 'Заполнение данных для регистрации в обменах'");
ЗаписьЖурналаРегистрации(ИмяСобытия, УровеньЖурналаРегистрации.Информация,,, Сообщение);
Запрос = Новый Запрос("ВЫБРАТЬ РАЗЛИЧНЫЕ
| УникальныйИдентификаторИсточника КАК Ссылка
|ИЗ
| РегистрСведений.СоответствияОбъектовИнформационныхБаз
|ГДЕ
| УзелИнформационнойБазы = &НастройкаСинхронизации");
Запрос.УстановитьПараметр("НастройкаСинхронизации", СтарыйУзел);
НаборЗаписейДанныеОбъектов = РегистрыСведений.ДанныеОбъектовДляРегистрацииВОбменах.СоздатьНаборЗаписей();
НаборЗаписейДанныеОбъектов.Отбор.УзелИнформационнойБазы.Установить(НовыйУзел);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
НоваяЗаписьДанныеОбъектов = НаборЗаписейДанныеОбъектов.Добавить();
НоваяЗаписьДанныеОбъектов.Ссылка = Выборка.Ссылка;
НоваяЗаписьДанныеОбъектов.УзелИнформационнойБазы = НовыйУзел;
КонецЦикла;
НаборЗаписейДанныеОбъектов.Записать();
Если СтрНайти(НРЕГ(Метаданные.Имя), "бухгалтерия") > 0 Тогда
Запрос = Новый Запрос("ВЫБРАТЬ
| УникальныйИдентификаторИсточника КАК УИДИсточника,
| Количество(УникальныйИдентификаторПриемника) КАК КоличествоСсылок
|ПОМЕСТИТЬ СоответствияОбъектовСОтбором
|ИЗ
| РегистрСведений.СоответствияОбъектовИнформационныхБаз
|ГДЕ УзелИнформационнойБазы = &НастройкаСинхронизации
| И УникальныйИдентификаторПриемника <> ВЫРАЗИТЬ("""" КАК Строка(36))
|СГРУППИРОВАТЬ ПО УникальныйИдентификаторИсточника
|;
|ВЫБРАТЬ
| СоответствияОбъектовСОтбором.УИДИсточника КАК УникальныйИдентификаторИсточника,
| СоответствияОбъектовИБ.УникальныйИдентификаторПриемника,
| СоответствияОбъектовИБ.ТипПриемника
|ИЗ
| СоответствияОбъектовСОтбором
|ЛЕВОЕ СОЕДИНЕНИЕ
| РегистрСведений.СоответствияОбъектовИнформационныхБаз КАК СоответствияОбъектовИБ
|ПО
| СоответствияОбъектовИБ.УникальныйИдентификаторИсточника = СоответствияОбъектовСОтбором.УИДИсточника
| И СоответствияОбъектовИБ.УзелИнформационнойБазы = &НастройкаСинхронизации
| И СоответствияОбъектовИБ.УникальныйИдентификаторПриемника <> ВЫРАЗИТЬ("""" КАК Строка(36))
|ГДЕ
| СоответствияОбъектовСОтбором.КоличествоСсылок > 1
| И СоответствияОбъектовИБ.УникальныйИдентификаторПриемника <> ВЫРАЗИТЬ("""" КАК Строка(36))
|;
|ВЫБРАТЬ
| СоответствияОбъектовСОтбором.УИДИсточника КАК Ссылка,
| СоответствияОбъектовИБ.УникальныйИдентификаторПриемника КАК Идентификатор
|ИЗ
| СоответствияОбъектовСОтбором
|ЛЕВОЕ СОЕДИНЕНИЕ
| РегистрСведений.СоответствияОбъектовИнформационныхБаз КАК СоответствияОбъектовИБ
|ПО
| СоответствияОбъектовИБ.УникальныйИдентификаторИсточника = СоответствияОбъектовСОтбором.УИДИсточника
| И СоответствияОбъектовИБ.УзелИнформационнойБазы = &НастройкаСинхронизации
| И СоответствияОбъектовИБ.УникальныйИдентификаторПриемника <> ВЫРАЗИТЬ("""" КАК Строка(36))
|ГДЕ СоответствияОбъектовСОтбором.КоличествоСсылок = 1
|");
Запрос.УстановитьПараметр("НастройкаСинхронизации", СтарыйУзел);
РезультатЗапроса = Запрос.ВыполнитьПакет();
ИмяРазделаСобытия = НСтр("ru = 'Переход на синхронизацию данных через универсальный формат'", ОбщегоНазначения.КодОсновногоЯзыка());
ИмяПодразделаСобытия = НСтр("ru = 'Заполнение публичных идентификаторов'", ОбщегоНазначения.КодОсновногоЯзыка());
ИмяСобытия = СтрШаблон("%1.%2", ИмяРазделаСобытия, ИмяПодразделаСобытия);
Сообщение = НСтр("ru = 'Формирование публичных идентификаторов - начало'");
ЗаписьЖурналаРегистрации(ИмяСобытия, УровеньЖурналаРегистрации.Информация, , , Сообщение);
Если Не РезультатЗапроса[1].Пустой() Тогда
Сообщение = НСтр("ru = 'Обнаружены записи, в которых одной ссылке на источник соответствуют несколько приемников'")
+ Символы.ПС + НСтр("ru = 'Эти записи обработаны не будут.'");
ЗаписьЖурналаРегистрации(ИмяСобытия, УровеньЖурналаРегистрации.Ошибка, , , Сообщение);
Выборка = РезультатЗапроса[1].Выбрать();
Пока Выборка.Следующий() Цикл
НСтрока = НСтр("ru = 'Уникальный идентификатор источника: %1, Уникальный идентификатор приемника: %2, Тип приемника: %3'");
Сообщение = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтрока,
Выборка.УникальныйИдентификаторИсточника,
Выборка.УникальныйИдентификаторПриемника,
Выборка.ТипПриемника);
ЗаписьЖурналаРегистрации(ИмяСобытия, УровеньЖурналаРегистрации.Ошибка, , , Сообщение);
КонецЦикла;
КонецЕсли;
СчетчикЗаписей = 0;
Выборка = РезультатЗапроса[2].Выбрать();
Пока Выборка.Следующий() Цикл
ИдентификаторИсточникаСтрокой = СокрЛП(Выборка.Ссылка.УникальныйИдентификатор());
Если ИдентификаторИсточникаСтрокой = СокрЛП(Выборка.Идентификатор) Тогда
Продолжить;
КонецЕсли;
СчетчикЗаписей = СчетчикЗаписей + 1;
СтруктураЗаписи = Новый Структура("УзелИнформационнойБазы, Ссылка, Идентификатор",
НовыйУзел, Выборка.Ссылка, Выборка.Идентификатор);
ОбменДаннымиСлужебный.ДобавитьЗаписьВРегистрСведений(СтруктураЗаписи,
"ПубличныеИдентификаторыСинхронизируемыхОбъектов", Ложь);
КонецЦикла;
Сообщение = НСтр("ru = 'Формирование публичных идентификаторов завершено. Количество записей:'")
+ СчетчикЗаписей;
ЗаписьЖурналаРегистрации(ИмяСобытия, УровеньЖурналаРегистрации.Информация, , , Сообщение);
КонецЕсли;
НаборЗаписейСоответствиеОбъектов = РегистрыСведений.СоответствияОбъектовИнформационныхБаз.СоздатьНаборЗаписей();
НаборЗаписейСоответствиеОбъектов.Отбор.УзелИнформационнойБазы.Установить(СтарыйУзел);
НаборЗаписейСоответствиеОбъектов.Записать();
Сообщение = НСтр("ru = 'Соответствие объектов информационных баз очищен'");
ЗаписьЖурналаРегистрации(ИмяСобытия, УровеньЖурналаРегистрации.Информация, , , Сообщение);
КонецПроцедуры
Процедура ОбработатьНастройкиТранспортаСообщенийОбмена(СтарыйУзел, НовыйУзел, ВыгружатьСообщениеПослеПерехода)
НастройкиТранспортаОбменаНовогоУзла = РегистрыСведений.УдалитьНастройкиТранспортаОбменаДанными.СоздатьНаборЗаписей();
НастройкиТранспортаОбменаНовогоУзла.Отбор.Корреспондент.Установить(НовыйУзел);
НастройкиТранспортаОбменаСтарогоУзла = РегистрыСведений.УдалитьНастройкиТранспортаОбменаДанными.СоздатьНаборЗаписей();
НастройкиТранспортаОбменаСтарогоУзла.Отбор.Корреспондент.Установить(СтарыйУзел);
НастройкиТранспортаОбменаСтарогоУзла.Прочитать();
МассивДоступныеТранспортыСообщений = ИспользуемыеТранспортыСообщенийОбмена();
Если НастройкиТранспортаОбменаСтарогоУзла.Количество()>0 Тогда
НастройкиТранспортаОбменаНовогоУзла.Загрузить(НастройкиТранспортаОбменаСтарогоУзла.Выгрузить());
Для Каждого НастройкаУзла Из НастройкиТранспортаОбменаНовогоУзла Цикл
НастройкаУзла.Корреспондент = НовыйУзел;
ВидТранспортаПоУмолчанию = НастройкаУзла.ВидТранспортаСообщенийОбменаПоУмолчанию;
Если ВидТранспортаПоУмолчанию = Перечисления.ВидыТранспортаСообщенийОбмена.FILE
Или ВидТранспортаПоУмолчанию = Перечисления.ВидыТранспортаСообщенийОбмена.EMAIL
Или ВидТранспортаПоУмолчанию = Перечисления.ВидыТранспортаСообщенийОбмена.FTP Тогда
ВыгружатьСообщениеПослеПерехода = Истина;
КонецЕсли;
Если МассивДоступныеТранспортыСообщений.Найти(ВидТранспортаПоУмолчанию) = Неопределено Тогда
ВидПоУмолчанию = Неопределено;
Если ЗначениеЗаполнено(НастройкаУзла.FILEКаталогОбменаИнформацией) Тогда
ВидПоУмолчанию = Перечисления.ВидыТранспортаСообщенийОбмена.FILE;
ИначеЕсли ЗначениеЗаполнено(НастройкаУзла.FTPСоединениеПуть) Тогда
ВидПоУмолчанию = Перечисления.ВидыТранспортаСообщенийОбмена.FTP;
ИначеЕсли ЗначениеЗаполнено(НастройкаУзла.EMAILУчетнаяЗапись) Тогда
ВидПоУмолчанию = Перечисления.ВидыТранспортаСообщенийОбмена.EMAIL;
КонецЕсли;
НастройкаУзла.ВидТранспортаСообщенийОбменаПоУмолчанию = ВидПоУмолчанию;
ИмяРазделаСобытия = НСтр("ru = 'Переход на синхронизацию данных через универсальный формат'", ОбщегоНазначения.КодОсновногоЯзыка());
ИмяПодразделаСобытия = НСтр("ru = 'Заполнение настроек транспорта сообщений'", ОбщегоНазначения.КодОсновногоЯзыка());
ИмяСобытия = СтрШаблон("%1.%2", ИмяРазделаСобытия, ИмяПодразделаСобытия);
НСтрока = НСтр("ru = 'Используемое ранее подключение по умолчанию недоступно для синхронизации данных через универсальный формат (%1)'");
Сообщение = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтрока, ВидТранспортаПоУмолчанию);
ЗаписьЖурналаРегистрации(ИмяСобытия, УровеньЖурналаРегистрации.Ошибка,,, Сообщение);
Если ЗначениеЗаполнено(НастройкаУзла.ВидТранспортаСообщенийОбменаПоУмолчанию) Тогда
НСтрока = НСтр("ru = 'Взамен назначено подключение по умолчанию: %1. Необходимо проверить корректность настроек транспорта сообщений'");
Сообщение = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтрока,
НастройкаУзла.ВидТранспортаСообщенийОбменаПоУмолчанию);
Иначе
Сообщение = НСтр("ru = 'Подключение по умолчанию очищено. Необходимо выполнить настройку транспорта сообщений вручную'");
КонецЕсли;
ЗаписьЖурналаРегистрации(ИмяСобытия, УровеньЖурналаРегистрации.Ошибка,,, Сообщение);
КонецЕсли;
КонецЦикла;
НастройкиТранспортаОбменаСтарогоУзла.Очистить();
НастройкиТранспортаОбменаСтарогоУзла.Записать();
НастройкиТранспортаОбменаНовогоУзла.Записать();
КонецЕсли;
НастройкиУзловИБНовогоУзла = РегистрыСведений.ОбщиеНастройкиУзловИнформационныхБаз.СоздатьНаборЗаписей();
НастройкиУзловИБНовогоУзла.Отбор.УзелИнформационнойБазы.Установить(НовыйУзел);
НастройкиУзловИБСтарогоУзла = РегистрыСведений.ОбщиеНастройкиУзловИнформационныхБаз.СоздатьНаборЗаписей();
НастройкиУзловИБСтарогоУзла.Отбор.УзелИнформационнойБазы.Установить(СтарыйУзел);
НастройкиУзловИБСтарогоУзла.Прочитать();
Если НастройкиУзловИБСтарогоУзла.Количество()>0 Тогда
НастройкиУзловИБНовогоУзла.Загрузить(НастройкиУзловИБСтарогоУзла.Выгрузить());
Для Каждого НастройкаУзла Из НастройкиУзловИБНовогоУзла Цикл
НастройкаУзла.УзелИнформационнойБазы = НовыйУзел;
КонецЦикла;
НастройкиУзловИБСтарогоУзла.Очистить();
НастройкиУзловИБСтарогоУзла.Записать();
НастройкиУзловИБНовогоУзла.Записать();
КонецЕсли;
КонецПроцедуры
Процедура ОбработатьРезультатыОбменаДанными(СтарыйУзел, НовыйУзел)
РезультатыОбмена = РегистрыСведений.РезультатыОбменаДанными.СоздатьНаборЗаписей();
РезультатыОбмена.Прочитать();
КоличествоЗаписей = РезультатыОбмена.Количество();
Для Сч = 1 По КоличествоЗаписей Цикл
Индекс = КоличествоЗаписей - Сч;
РезультатОбмена = РезультатыОбмена[Индекс];
Если РезультатОбмена.УзелИнформационнойБазы <> СтарыйУзел Тогда
Продолжить;
КонецЕсли;
Если РезультатОбмена.Пропущена Тогда
РезультатыОбмена.Удалить(РезультатОбмена);
Продолжить;
КонецЕсли;
РезультатОбмена.УзелИнформационнойБазы = НовыйУзел;
КонецЦикла;
РезультатыОбмена.Записать();
КонецПроцедуры
Процедура ВыполнитьПереходНаНовыйОбмен(НастройкаСинхронизацииДанных, ОбменЧерезВнешнееСоединение = Ложь) Экспорт
НастройкаСинхронизацииЧерезУниверсальныйФормат =
ВыполнитьПереходНаСинхронизациюДанныхЧерезУниверсальныйФормат(НастройкаСинхронизацииДанных);
ПередаваемоеЗначение = Новый Структура;
ИмяПланаОбменаДляПереходаНаНовыйОбмен = НастройкаСинхронизацииЧерезУниверсальныйФормат.Метаданные().Имя;
ПередаваемоеЗначение.Вставить("ИмяПланаОбменаДляПереходаНаНовыйОбмен", ИмяПланаОбменаДляПереходаНаНовыйОбмен);
ПередаваемоеЗначение.Вставить("Код", НастройкаСинхронизацииЧерезУниверсальныйФормат.Код);
ПередаваемыйТекст = "{ВыполненПереходНаНовыйОбмен}"+ОбщегоНазначения.ЗначениеВСтрокуXML(ПередаваемоеЗначение);
ПолучитьСообщенияПользователю(Истина);
ОбщегоНазначения.СообщитьПользователю(ПередаваемыйТекст);
КонецПроцедуры
#КонецОбласти
#Область ОбменУПРМК
Процедура ЗарегистрироватьИзмененияНаУзлеПоОстаткамНаСкладе(Узел) Экспорт
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| СинхронизацияДанныхЧерезУниверсальныйФорматСклады.Ссылка КАК Узел,
| СинхронизацияДанныхЧерезУниверсальныйФорматСклады.Склад КАК Склад
|ИЗ
| ПланОбмена.СинхронизацияДанныхЧерезУниверсальныйФормат.Склады КАК СинхронизацияДанныхЧерезУниверсальныйФорматСклады
|ГДЕ
| СинхронизацияДанныхЧерезУниверсальныйФорматСклады.Ссылка.ВыгружатьТолькоНоменклатуруСОстатками
| И СинхронизацияДанныхЧерезУниверсальныйФорматСклады.Ссылка = &Узел
| И СинхронизацияДанныхЧерезУниверсальныйФорматСклады.Ссылка.ВариантНастройки = &ВариантНастройки";
Запрос.УстановитьПараметр("Узел", Узел);
Запрос.УстановитьПараметр("ВариантНастройки", "ОбменУПРМК");
Выборка = Запрос.Выполнить().Выбрать();
Если Не Выборка.Следующий() Тогда
Возврат;
КонецЕсли;
Склад = Выборка.Склад;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ОстаткиТоваров.Номенклатура КАК Номенклатура,
| ОстаткиТоваров.Характеристика КАК Характеристика,
| ОстаткиТоваров.Серия КАК Серия,
| ЕСТЬNULL(ШтрихкодыНоменклатуры.Штрихкод, &ПустаяСтрока) КАК Штрихкод
|ПОМЕСТИТЬ ДанныеКРегистрацииПоОстаткам
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки(, Склад = &Склад) КАК ОстаткиТоваров
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ШтрихкодыНоменклатуры КАК ШтрихкодыНоменклатуры
| ПО ОстаткиТоваров.Номенклатура = ШтрихкодыНоменклатуры.Номенклатура
| И ОстаткиТоваров.Характеристика = ШтрихкодыНоменклатуры.Характеристика
|ГДЕ
| ОстаткиТоваров.ВНаличииОстаток > 0
|
|ИНДЕКСИРОВАТЬ ПО
| Номенклатура
|;
|
|
|ВЫБРАТЬ
| ДанныеОбъектовДляРегистрацииВОбменах.Ссылка КАК СсылкаКРегистрации
|ПОМЕСТИТЬ ДанныеЗарегистрированныхОбъектов
|ИЗ
| РегистрСведений.ДанныеОбъектовДляРегистрацииВОбменах КАК ДанныеОбъектовДляРегистрацииВОбменах
|ГДЕ
| ДанныеОбъектовДляРегистрацииВОбменах.УзелИнформационнойБазы = &Узел
|ИНДЕКСИРОВАТЬ ПО
| СсылкаКРегистрации
|;
|
|
|ВЫБРАТЬ
| СерииНоменклатуры.Ссылка КАК СсылкаКРегистрации
|ПОМЕСТИТЬ ДанныеКРегистрацииСправочно
|ИЗ
| Справочник.ВидыНоменклатуры.ПолитикиУчетаСерий КАК ПолитикиУчетаСерий
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.СерииНоменклатуры КАК СерииНоменклатуры
| ПО ПолитикиУчетаСерий.Ссылка = СерииНоменклатуры.ВидНоменклатуры
| И (ПолитикиУчетаСерий.Склад = &Склад)
| И (ПолитикиУчетаСерий.ПолитикаУчетаСерий.ТипПолитики В (&ТипПолитики))
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| Номенклатура.Ссылка
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.ТипНоменклатуры В(&ТипНоменклатурыУслугаРабота)
|ИНДЕКСИРОВАТЬ ПО
| СсылкаКРегистрации
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ШтрихкодыНоменклатуры.Штрихкод КАК Штрихкод
|ПОМЕСТИТЬ ШтрихкодыНоменклатурыИзменения
|ИЗ
| РегистрСведений.ШтрихкодыНоменклатуры.Изменения КАК ШтрихкодыНоменклатуры
|ГДЕ
| ШтрихкодыНоменклатуры.Узел = &Узел
|ИНДЕКСИРОВАТЬ ПО
| Штрихкод
|;
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ИзмененныеШК.ШтрихКод КАК ШтрихКод
|ПОМЕСТИТЬ ИзмененныеШКПоЗарегистрированнымКортежам
|ИЗ
| РегистрСведений.ШтрихкодыНоменклатуры.Изменения КАК ИзмененныеШК
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ШтрихкодыНоменклатуры КАК ДанныеШК
| ПО ИзмененныеШК.ШтрихКод = ДанныеШК.ШтрихКод
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДанныеЗарегистрированныхОбъектов КАК ОтправленнаяНоменклатура
| ПО ДанныеШК.Номенклатура = ОтправленнаяНоменклатура.СсылкаКРегистрации
|ГДЕ
| ДанныеШК.Характеристика = ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ИзмененныеШК.ШтрихКод
|ИЗ
| РегистрСведений.ШтрихкодыНоменклатуры.Изменения КАК ИзмененныеШК
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ШтрихкодыНоменклатуры КАК ДанныеШК
| ПО ИзмененныеШК.ШтрихКод = ДанныеШК.ШтрихКод
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДанныеЗарегистрированныхОбъектов КАК ОтправленнаяНоменклатура
| ПО ДанныеШК.Номенклатура = ОтправленнаяНоменклатура.СсылкаКРегистрации
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДанныеЗарегистрированныхОбъектов КАК ОтправленнаяХарактеристика
| ПО ДанныеШК.Характеристика = ОтправленнаяХарактеристика.СсылкаКРегистрации
|ГДЕ
| ДанныеШК.Характеристика <> ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка)
|ИНДЕКСИРОВАТЬ ПО
| ШтрихКод
|;
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ДанныеКРегистрации.ШтрихКод КАК ШтрихКод
|ПОМЕСТИТЬ РегистрацияПоОстаткамШК
|ИЗ
| ДанныеКРегистрацииПоОстаткам КАК ДанныеКРегистрации
| ЛЕВОЕ СОЕДИНЕНИЕ ДанныеЗарегистрированныхОбъектов КАК ДанныеЗарегистрированныхОбъектовНоменклатура
| ПО ДанныеКРегистрации.Номенклатура = ДанныеЗарегистрированныхОбъектовНоменклатура.СсылкаКРегистрации
|ГДЕ
| ДанныеКРегистрации.Характеристика = ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка)
| И ДанныеЗарегистрированныхОбъектовНоменклатура.СсылкаКРегистрации ЕСТЬ NULL
|
|Объединить Все
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ДанныеКРегистрации.ШтрихКод КАК ШтрихКод
|
|ИЗ
| ДанныеКРегистрацииПоОстаткам КАК ДанныеКРегистрации
| ЛЕВОЕ СОЕДИНЕНИЕ ДанныеЗарегистрированныхОбъектов КАК ДанныеЗарегистрированныхОбъектовНоменклатура
| ПО ДанныеКРегистрации.Номенклатура = ДанныеЗарегистрированныхОбъектовНоменклатура.СсылкаКРегистрации
| ЛЕВОЕ СОЕДИНЕНИЕ ДанныеЗарегистрированныхОбъектов КАК ДанныеЗарегистрированныхОбъектовХарактеристика
| ПО ДанныеКРегистрации.Характеристика = ДанныеЗарегистрированныхОбъектовХарактеристика.СсылкаКРегистрации
|ГДЕ
| ДанныеКРегистрации.Характеристика <> ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка)
| И (ДанныеЗарегистрированныхОбъектовНоменклатура.СсылкаКРегистрации ЕСТЬ NULL
| ИЛИ ДанныеЗарегистрированныхОбъектовХарактеристика.СсылкаКРегистрации ЕСТЬ NULL)
|ИНДЕКСИРОВАТЬ ПО
| ШтрихКод
|;
|
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ДанныеКРегистрации.Номенклатура КАК Номенклатура
|ПОМЕСТИТЬ НоменклатураДляВыгрузкиЦен
|ИЗ
| ДанныеКРегистрацииПоОстаткам КАК ДанныеКРегистрации
| ЛЕВОЕ СОЕДИНЕНИЕ ДанныеЗарегистрированныхОбъектов КАК ДанныеЗарегистрированныхОбъектов
| ПО ДанныеКРегистрации.Номенклатура = ДанныеЗарегистрированныхОбъектов.СсылкаКРегистрации
|ГДЕ
| ДанныеЗарегистрированныхОбъектов.СсылкаКРегистрации ЕСТЬ NULL
|ИНДЕКСИРОВАТЬ ПО
| Номенклатура
|;
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| НоменклатураДляВыгрузкиЦен.Номенклатура КАК Номенклатура,
| Цены.Ссылка КАК ДокУстановкаЦен,
| Цены.Ссылка.Дата КАК ДатаДок
|ПОМЕСТИТЬ УстановкиЦенПоНоменклатуре
|ИЗ
| Документ.УстановкаЦенНоменклатуры.Товары КАК Цены
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ НоменклатураДляВыгрузкиЦен КАК НоменклатураДляВыгрузкиЦен
| ПО Цены.Номенклатура = НоменклатураДляВыгрузкиЦен.Номенклатура
|ГДЕ
| НЕ &Ценообразование25
| И Цены.Ссылка.Согласован
| И Цены.Ссылка.Проведен
| И Цены.Ссылка.Дата >= &ДатаВыгрузкиДок
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| НоменклатураДляВыгрузкиЦен.Номенклатура,
| Цены.Ссылка,
| Цены.Ссылка.Дата
|ИЗ
| Документ.УстановкаЦенНоменклатуры.Товары2_5 КАК Цены
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ НоменклатураДляВыгрузкиЦен КАК НоменклатураДляВыгрузкиЦен
| ПО Цены.Номенклатура = НоменклатураДляВыгрузкиЦен.Номенклатура
|ГДЕ
| &Ценообразование25
| И Цены.Ссылка.Согласован
| И Цены.Ссылка.Проведен
| И Цены.Ссылка.Дата >= &ДатаВыгрузкиДок
|ИНДЕКСИРОВАТЬ ПО
| Номенклатура
|;
|
|ВЫБРАТЬ
| УстановкиЦенПоНоменклатуре.Номенклатура КАК Номенклатура,
| МАКСИМУМ(УстановкиЦенПоНоменклатуре.ДатаДок) КАК ДатаДок
|ПОМЕСТИТЬ ДатаЦеныНоменклатуры
|ИЗ
| УстановкиЦенПоНоменклатуре КАК УстановкиЦенПоНоменклатуре
|
|СГРУППИРОВАТЬ ПО
| УстановкиЦенПоНоменклатуре.Номенклатура
|ИНДЕКСИРОВАТЬ ПО
| Номенклатура
|;
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ПоследняяЦенаПоНоменклатуре.ДокУстановкаЦен КАК СсылкаКРегистрации
|ПОМЕСТИТЬ ПоздняяРегистрацияУстановкиЦен
|ИЗ
|(ВЫБРАТЬ
| УстановкиЦенПоНоменклатуре.Номенклатура КАК Номенклатура,
| МАКСИМУМ(УстановкиЦенПоНоменклатуре.ДокУстановкаЦен) КАК ДокУстановкаЦен
|ИЗ
| УстановкиЦенПоНоменклатуре КАК УстановкиЦенПоНоменклатуре
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДатаЦеныНоменклатуры КАК ДатаЦеныНоменклатуры
| ПО УстановкиЦенПоНоменклатуре.Номенклатура = ДатаЦеныНоменклатуры.Номенклатура
| И УстановкиЦенПоНоменклатуре.ДатаДок = ДатаЦеныНоменклатуры.ДатаДок
|
|СГРУППИРОВАТЬ ПО
| УстановкиЦенПоНоменклатуре.Номенклатура) ПоследняяЦенаПоНоменклатуре
|ИНДЕКСИРОВАТЬ ПО
| СсылкаКРегистрации
|;
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ДанныеКРегистрации.Номенклатура КАК НоменклатураЧастичногоВыбытия
|ИЗ ДанныеКРегистрацииПоОстаткам КАК ДанныеКРегистрации
| ЛЕВОЕ СОЕДИНЕНИЕ ДанныеЗарегистрированныхОбъектов КАК ДанныеЗарегистрированныхОбъектов
| ПО ДанныеКРегистрации.Номенклатура = ДанныеЗарегистрированныхОбъектов.СсылкаКРегистрации
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ОписаниеНоменклатурыИС КАК ОписаниеНоменклатурыИС
| ПО ДанныеКРегистрации.Номенклатура = ОписаниеНоменклатурыИС.Номенклатура
|ГДЕ
| ДанныеЗарегистрированныхОбъектов.СсылкаКРегистрации ЕСТЬ NULL
|;
|
|
|Выбрать
| РегистрацияПоОстаткамШК.ШтрихКод
|ИЗ РегистрацияПоОстаткамШК КАК РегистрацияПоОстаткамШК
| ЛЕВОЕ СОЕДИНЕНИЕ ШтрихкодыНоменклатурыИзменения КАК ИзмененныеШК
| ПО РегистрацияПоОстаткамШК.ШтрихКод = ИзмененныеШК.ШтрихКод
|ГДЕ
| ИзмененныеШК.ШтрихКод ЕСТЬ NULL
|;
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ШтрихкодыНоменклатуры.Штрихкод КАК Штрихкод
|ИЗ
| ШтрихкодыНоменклатурыИзменения КАК ШтрихкодыНоменклатуры
| ЛЕВОЕ СОЕДИНЕНИЕ ИзмененныеШКПоЗарегистрированнымКортежам КАК ОтправленныеРанееКортежиШК
| ПО ШтрихкодыНоменклатуры.ШтрихКод = ОтправленныеРанееКортежиШК.ШтрихКод
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрацияПоОстаткамШК КАК РегистрацияПоОстаткамШК
| ПО ШтрихкодыНоменклатуры.ШтрихКод = РегистрацияПоОстаткамШК.ШтрихКод
|ГДЕ
| РегистрацияПоОстаткамШК.ШтрихКод ЕСТЬ NULL
| И ОтправленныеРанееКортежиШК.ШтрихКод ЕСТЬ NULL
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ДанныеКРегистрации.Номенклатура КАК ДанныеКРегистрации
|ИЗ
| ДанныеКРегистрацииПоОстаткам КАК ДанныеКРегистрации
| ЛЕВОЕ СОЕДИНЕНИЕ ДанныеЗарегистрированныхОбъектов КАК ДанныеЗарегистрированныхОбъектов
| ПО ДанныеКРегистрации.Номенклатура = ДанныеЗарегистрированныхОбъектов.СсылкаКРегистрации
|ГДЕ
| ДанныеЗарегистрированныхОбъектов.СсылкаКРегистрации ЕСТЬ NULL
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ДанныеКРегистрации.Характеристика
|ИЗ
| ДанныеКРегистрацииПоОстаткам КАК ДанныеКРегистрации
| ЛЕВОЕ СОЕДИНЕНИЕ ДанныеЗарегистрированныхОбъектов КАК ДанныеЗарегистрированныхОбъектов
| ПО ДанныеКРегистрации.Характеристика = ДанныеЗарегистрированныхОбъектов.СсылкаКРегистрации
|ГДЕ
| ДанныеЗарегистрированныхОбъектов.СсылкаКРегистрации ЕСТЬ NULL
| И НЕ ДанныеКРегистрации.Характеристика = &ПустаяХарактеристика
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ДанныеКРегистрации.Серия
|ИЗ
| ДанныеКРегистрацииПоОстаткам КАК ДанныеКРегистрации
| ЛЕВОЕ СОЕДИНЕНИЕ ДанныеЗарегистрированныхОбъектов КАК ДанныеЗарегистрированныхОбъектов
| ПО ДанныеКРегистрации.Серия = ДанныеЗарегистрированныхОбъектов.СсылкаКРегистрации
|ГДЕ
| ДанныеЗарегистрированныхОбъектов.СсылкаКРегистрации ЕСТЬ NULL
| И НЕ ДанныеКРегистрации.Серия = &ПустаяСерия
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ПоздняяРегистрацияУстановкиЦен.СсылкаКРегистрации
|ИЗ
| ПоздняяРегистрацияУстановкиЦен КАК ПоздняяРегистрацияУстановкиЦен
| ЛЕВОЕ СОЕДИНЕНИЕ ДанныеЗарегистрированныхОбъектов КАК Регистрации
| ПО ПоздняяРегистрацияУстановкиЦен.СсылкаКРегистрации = Регистрации.СсылкаКРегистрации
|ГДЕ
| Регистрации.СсылкаКРегистрации ЕСТЬ NULL
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ДанныеКРегистрации.СсылкаКРегистрации
|ИЗ
| ДанныеКРегистрацииСправочно КАК ДанныеКРегистрации
| ЛЕВОЕ СОЕДИНЕНИЕ ДанныеЗарегистрированныхОбъектов КАК ДанныеЗарегистрированныхОбъектов
| ПО ДанныеКРегистрации.СсылкаКРегистрации = ДанныеЗарегистрированныхОбъектов.СсылкаКРегистрации
|ГДЕ
| ДанныеЗарегистрированныхОбъектов.СсылкаКРегистрации ЕСТЬ NULL";
ТипыПолитикиСправочноеУказаниеСерий = Новый Массив;
ТипыПолитикиСправочноеУказаниеСерий.Добавить(Перечисления.ТипыПолитикУказанияСерий.СправочноеУказаниеСерий);
ТипыПолитикиСправочноеУказаниеСерий.Добавить(Перечисления.ТипыПолитикУказанияСерий.АвторасчетПоFEFOОстатковСерий);
МассивТиповНоменклатуры = Новый Массив;
МассивТиповНоменклатуры.Добавить(ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Услуга"));
МассивТиповНоменклатуры.Добавить(ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Работа"));
Запрос.УстановитьПараметр("Узел", Узел);
Запрос.УстановитьПараметр("Склад", Склад);
Запрос.УстановитьПараметр("ВариантНастройки", "ОбменСУРМК");
Запрос.УстановитьПараметр("ПустаяХарактеристика", Справочники.ХарактеристикиНоменклатуры.ПустаяСсылка());
Запрос.УстановитьПараметр("ПустаяСерия", Справочники.СерииНоменклатуры.ПустаяСсылка());
Запрос.УстановитьПараметр("ПустаяСтрока", "");
Запрос.УстановитьПараметр("ТипПолитики", ТипыПолитикиСправочноеУказаниеСерий);
Запрос.УстановитьПараметр("ТипНоменклатурыУслугаРабота", МассивТиповНоменклатуры);
Запрос.УстановитьПараметр("Ценообразование25", ПолучитьФункциональнуюОпцию("ИспользуетсяЦенообразование25"));
Запрос.УстановитьПараметр("ДатаВыгрузкиДок", ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Узел, "ДатаНачалаВыгрузкиДокументов"));
РезультатЗапроса = Запрос.ВыполнитьПакет();
ИзмененияОбъектов = РезультатЗапроса[РезультатЗапроса.ВГраница()].Выгрузить();
ДанныеКРегистрации = ИзмененияОбъектов.ВыгрузитьКолонку("ДанныеКРегистрации");
Если ДанныеКРегистрации.Количество() > 0 Тогда
ПланыОбмена.ЗарегистрироватьИзменения(Узел, ДанныеКРегистрации);
КонецЕсли;
Для Каждого Данные Из ДанныеКРегистрации Цикл
РегистрыСведений.ДанныеОбъектовДляРегистрацииВОбменах.ДобавитьОбъектВФильтрРазрешенныхОбъектов(Данные, Узел);
КонецЦикла;
ИзмененияШтрихкодов = РезультатЗапроса[РезультатЗапроса.ВГраница()-1].Выгрузить();
Набор = РегистрыСведений.ШтрихкодыНоменклатуры.СоздатьНаборЗаписей();
Для каждого ДанныеШтрихкода Из ИзмененияШтрихкодов Цикл
Набор.Отбор.Штрихкод.Установить(ДанныеШтрихкода.Штрихкод, Истина);
Набор.Прочитать();
ПланыОбмена.УдалитьРегистрациюИзменений(Узел, Набор);
КонецЦикла;
ПоздняяПервичнаяВыгрузкаШК = РезультатЗапроса[РезультатЗапроса.ВГраница()-2].Выгрузить();
Набор = РегистрыСведений.ШтрихкодыНоменклатуры.СоздатьНаборЗаписей();
Для каждого ДанныеШтрихкода Из ПоздняяПервичнаяВыгрузкаШК Цикл
Набор.Отбор.Штрихкод.Установить(ДанныеШтрихкода.Штрихкод, Истина);
Набор.Прочитать();
ПланыОбмена.ЗарегистрироватьИзменения(Узел, Набор);
КонецЦикла;
ПоздняяПервичнаяВыгрузкаЧастичногоВыбытия = РезультатЗапроса[РезультатЗапроса.ВГраница()-3].Выгрузить();
Набор = РегистрыСведений.ОписаниеНоменклатурыИС.СоздатьНаборЗаписей();
Для каждого ДанныеНоменклатурыЧастичногоВыбытия Из ПоздняяПервичнаяВыгрузкаЧастичногоВыбытия Цикл
Набор.Отбор.Номенклатура.Установить(ДанныеНоменклатурыЧастичногоВыбытия.НоменклатураЧастичногоВыбытия, Истина);
Набор.Прочитать();
ПланыОбмена.ЗарегистрироватьИзменения(Узел, Набор);
КонецЦикла;
КонецПроцедуры
Процедура ОбновитьЗависимыеОтборы(Объект) Экспорт
Если Объект.ВариантНастройки <> "ОбменУПРМК" Тогда
Возврат;
КонецЕсли;
Объект.Организации.Очистить();
Объект.ИспользоватьОтборПоОрганизациям = Истина;
Объект.Склады.Очистить();
Объект.ИспользоватьОтборПоСкладам = Объект.ИспользоватьОтборПоКассамККМ;
Объект.ВидыЦенНоменклатуры.Очистить();
Объект.ВидыДокументов.Очистить();
Объект.ВыгружатьЦеныНоменклатуры = Истина;
Если Объект.КассыККМ.Количество() = 0 Тогда
Объект.ЭквайринговыеТерминалы.Очистить();
Объект.ДоговорыПодключенияКПлатежнымСистемам.Очистить();
Возврат;
КонецЕсли;
ЗапросКоллекций = Новый Запрос;
ЗапросКоллекций.Текст =
"ВЫБРАТЬ
| КассыККМ.Ссылка КАК КассаККМ,
| КассыККМ.Склад КАК СкладККМ
|ПОМЕСТИТЬ ВремКассыККМ
|ИЗ
| Справочник.КассыККМ КАК КассыККМ
|ГДЕ
| НЕ КассыККМ.ПометкаУдаления
| И КассыККМ.ТипКассы = ЗНАЧЕНИЕ(Перечисление.ТипыКассККМ.АвтономноеРМК)
| И КассыККМ.Ссылка В(&ТекущиеКассыККМ)
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ВремКассыККМ.КассаККМ.Владелец КАК ОрганизацияКассы
|ПОМЕСТИТЬ ОрганизацииККМ
|ИЗ
| ВремКассыККМ КАК ВремКассыККМ
|ГДЕ
| ВремКассыККМ.КассаККМ.Ссылка ЕСТЬ НЕ NULL
|
|ИНДЕКСИРОВАТЬ ПО
| ОрганизацияКассы
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ВремКассыККМ.СкладККМ КАК СкладККМ
|ПОМЕСТИТЬ СкладыККМ
|ИЗ
| ВремКассыККМ КАК ВремКассыККМ
|ГДЕ
| ВремКассыККМ.СкладККМ.Ссылка ЕСТЬ НЕ NULL
|
|ИНДЕКСИРОВАТЬ ПО
| СкладККМ
|;
|
|
|ВЫБРАТЬ
| ЭквайринговыеТерминалы.Ссылка КАК ЭквайринговыйТерминал
|ИЗ
| Справочник.ЭквайринговыеТерминалы КАК ЭквайринговыеТерминалы
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ОрганизацииККМ КАК ОрганизацииККМ
| ПО ЭквайринговыеТерминалы.Владелец.Организация = ОрганизацииККМ.ОрганизацияКассы
|ГДЕ
| ЭквайринговыеТерминалы.Ссылка В(&ТекущиеЭквТерминалы)
|;
|
|
|ВЫБРАТЬ
| ДоговорыЭквайринга.Ссылка КАК ДоговорПодключения
|ИЗ
| Справочник.ДоговорыЭквайринга КАК ДоговорыЭквайринга
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ОрганизацииККМ КАК ОрганизацииККМ
| ПО ДоговорыЭквайринга.Организация = ОрганизацииККМ.ОрганизацияКассы
|ГДЕ
| ДоговорыЭквайринга.Ссылка В(&ТекущиеЭквДоговоры)
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| СкладыККМ.СкладККМ.РозничныйВидЦены КАК ВидЦенНоменклатуры
|ИЗ
| СкладыККМ КАК СкладыККМ
|ГДЕ
| СкладыККМ.СкладККМ.РозничныйВидЦены.Ссылка ЕСТЬ НЕ NULL
|;
|
|
|ВЫБРАТЬ
| СкладыККМ.СкладККМ КАК Склад
|ИЗ
| СкладыККМ КАК СкладыККМ
|;
|
|
|ВЫБРАТЬ
| ОрганизацииККМ.ОрганизацияКассы КАК Организация
|ИЗ
| ОрганизацииККМ КАК ОрганизацииККМ";
ЗапросКоллекций.Параметры.Вставить("ТекущиеКассыККМ",
Объект.КассыККМ.Выгрузить().ВыгрузитьКолонку("КассаККМ"));
ЗапросКоллекций.Параметры.Вставить("ТекущиеЭквТерминалы",
Объект.ЭквайринговыеТерминалы.Выгрузить().ВыгрузитьКолонку("ЭквайринговыйТерминал"));
ЗапросКоллекций.Параметры.Вставить("ТекущиеЭквДоговоры",
Объект.ДоговорыПодключенияКПлатежнымСистемам.Выгрузить().ВыгрузитьКолонку("ДоговорПодключения"));
РезультатыЗапроса = ЗапросКоллекций.ВыполнитьПакет();
РазмерПакета = РезультатыЗапроса.Количество();
Объект.Организации.Загрузить(РезультатыЗапроса[РазмерПакета-1].Выгрузить());
Объект.Склады.Загрузить(РезультатыЗапроса[РазмерПакета-2].Выгрузить());
Объект.ВидыЦенНоменклатуры.Загрузить(РезультатыЗапроса[РазмерПакета-3].Выгрузить());
Объект.ДоговорыПодключенияКПлатежнымСистемам.Загрузить(РезультатыЗапроса[РазмерПакета-4].Выгрузить());
Объект.ЭквайринговыеТерминалы.Загрузить(РезультатыЗапроса[РазмерПакета-5].Выгрузить());
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#КонецЕсли