#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
Если Параметры.Свойство("Отбор") Тогда
Если Параметры.Отбор.Свойство("ВладелецНоменклатуры") Тогда
ВладелецНоменклатуры = Параметры.Отбор.ВладелецНоменклатуры;
КонецЕсли;
Если Параметры.Отбор.Свойство("Номенклатура") И ЗначениеЗаполнено(Параметры.Отбор.Номенклатура) Тогда
Номенклатура = Параметры.Отбор.Номенклатура;
Параметры.Отбор.Удалить("Номенклатура");
Если Параметры.Отбор.Свойство("Характеристика") Тогда
Характеристика = Параметры.Отбор.Характеристика;
Параметры.Отбор.Удалить("Характеристика");
КонецЕсли;
Если Параметры.Отбор.Свойство("Упаковка") Тогда
Упаковка = Параметры.Отбор.Упаковка;
Параметры.Отбор.Удалить("Упаковка");
Если НЕ ЗначениеЗаполнено(Упаковка)
И ЗначениеЗаполнено(Номенклатура) Тогда
СопоставлениеНоменклатурыКонтрагентовПереопределяемый.БазоваяЕдиницаИзмеренияНоменклатуры(Номенклатура, Упаковка);
КонецЕсли;
КонецЕсли;
Иначе
Параметры.Отбор.Удалить("Номенклатура");
Если Параметры.Отбор.Свойство("Характеристика") Тогда
Параметры.Отбор.Удалить("Характеристика");
КонецЕсли;
Если Параметры.Отбор.Свойство("Упаковка") Тогда
Параметры.Отбор.Удалить("Упаковка");
КонецЕсли;
КонецЕсли;
Если Параметры.Отбор.Свойство("АктВыполненныхРабот")
И ЗначениеЗаполнено(Параметры.Отбор.АктВыполненныхРабот) Тогда
АктВыполненныхРабот = Параметры.Отбор.АктВыполненныхРабот;
КонецЕсли;
Если Параметры.Отбор.Свойство("ТипНоменклатуры")
И ЗначениеЗаполнено(Параметры.Отбор.ТипНоменклатуры) Тогда
Если ТипЗнч(Параметры.Отбор.ТипНоменклатуры) = Тип("ФиксированныйМассив") Тогда
ТипыНоменклатуры.ЗагрузитьЗначения(Новый Массив(Параметры.Отбор.ТипНоменклатуры));
ИначеЕсли ТипЗнч(Параметры.Отбор.ТипНоменклатуры) = Тип("Массив") Тогда
ТипыНоменклатуры.ЗагрузитьЗначения(Параметры.Отбор.ТипНоменклатуры);
Иначе
ТипыНоменклатуры.Добавить(Параметры.Отбор.ТипНоменклатуры);
КонецЕсли;
КонецЕсли;
КонецЕсли;
УстановитьСвойстваПереопределяемыхЭлементовФормы();
УстановитьСвойстваДинамическогоСписка();
Если ЗначениеЗаполнено(Номенклатура) Тогда
ПредставлениеЭлемента = НСтр("ru = 'Все позиции, которые не сопоставлены'");
Элементы.Отбор.СписокВыбора.Добавить(3, ПредставлениеЭлемента);
Если ЗначениеЗаполнено(Упаковка) Тогда
ПредставлениеНоменклатуры = Строка(Номенклатура) + ?(ЗначениеЗаполнено(Характеристика), ", " + Характеристика, "") + " " + Упаковка;
ПредставлениеЭлемента = НСтр("ru = 'Все позиции, которые сопоставлены с ""%1""'");
ПредставлениеЭлемента = СтрШаблон(ПредставлениеЭлемента, ПредставлениеНоменклатуры);
Элементы.Отбор.СписокВыбора.Добавить(2, ПредставлениеЭлемента);
Отбор = 2;
Иначе
Отбор = 1;
КонецЕсли;
ПредставлениеНоменклатуры = Строка(Номенклатура) + ?(ЗначениеЗаполнено(Характеристика), ", " + Характеристика, "");
ПредставлениеЭлемента = НСтр("ru = 'Все позиции, которые сопоставлены с ""%1""'");
ПредставлениеЭлемента = СтрШаблон(ПредставлениеЭлемента, ПредставлениеНоменклатуры);
Элементы.Отбор.СписокВыбора.Добавить(1, ПредставлениеЭлемента);
Элементы.Отбор.СписокВыбора.Добавить(0, НСтр("ru = 'Все позиции'"));
УстановитьОтборПоСопоставленнойНоменклатуре();
Если Параметры.Свойство("ДоступностьОтборов") И НЕ Параметры.ДоступностьОтборов Тогда
Элементы.Отбор.Доступность = Ложь;
КонецЕсли;
Иначе
Элементы.Отбор.Видимость = Ложь;
КонецЕсли;
СопоставлениеНоменклатурыКонтрагентовПереопределяемый.ПриСозданииНаСервере_ФормаВыбораНоменклатурыКонтрагентов(
ЭтаФорма, Отказ, СтандартнаяОбработка);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура ОтборПриИзменении(Элемент)
УстановитьОтборПоСопоставленнойНоменклатуре();
КонецПроцедуры
&НаКлиенте
Процедура СписокПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа)
Если Копирование Тогда
Возврат;
КонецЕсли;
Отказ = Истина;
Если Группа Тогда
ОткрытьФорму(
"Справочник.НоменклатураКонтрагентов.ФормаГруппы",
Новый Структура("ВладелецНоменклатуры,ЭтоГруппа", ВладелецНоменклатуры, Истина),
,
,);
Иначе
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("ВладелецНоменклатуры", ВладелецНоменклатуры);
ПараметрыФормы.Вставить("Номенклатура", Номенклатура);
ПараметрыФормы.Вставить("Характеристика", Характеристика);
ПараметрыФормы.Вставить("Упаковка", Упаковка);
ОткрытьФорму(
"Справочник.НоменклатураКонтрагентов.ФормаОбъекта",
ПараметрыФормы,
,
,);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СписокПриАктивизацииСтроки(Элемент)
ПодключитьОбработчикОжидания("ОбработатьАктивизациюСтрокиСписка", 0.2, Истина);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)
НоменклатураПартнеровКлиент.Подключаемый_ВыполнитьПереопределяемуюКоманду_НоменклатурыКонтрагентов(ЭтотОбъект, Команда);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуИнтеграции(Команда)
СопоставлениеНоменклатурыКонтрагентовКлиентПереопределяемый.Подключаемый_ВыполнитьКомандуИнтеграции_НоменклатурыКонтрагентов(
ЭтотОбъект, Команда, Элементы.Список);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
Процедура УстановитьСвойстваПереопределяемыхЭлементовФормы()
МетаданныеСопоставления = СопоставлениеНоменклатурыКонтрагентовСлужебный.МетаданныеСопоставленияНоменклатуры();
Если ЗначениеЗаполнено(Параметры.ЗаголовокФормы) Тогда
ПредставлениеОбъекта = Параметры.ЗаголовокФормы;
Иначе
ПредставлениеОбъекта = МетаданныеСопоставления.НоменклатураКонтрагентаПредставлениеОбъекта;
КонецЕсли;
Заголовок = ПредставлениеОбъекта;
Элементы.СписокНоменклатура.Заголовок = МетаданныеСопоставления.НоменклатураПредставлениеОбъекта;
Элементы.СписокХарактеристика.Заголовок = МетаданныеСопоставления.ХарактеристикаПредставлениеОбъекта;
Элементы.СписокУпаковка.Заголовок = МетаданныеСопоставления.УпаковкаПредставлениеОбъекта;
КонецПроцедуры
&НаСервере
Процедура УстановитьОтборПоСопоставленнойНоменклатуре()
Если Отбор = 3 Тогда
УстановитьСнятьОтборДинамическогоСписка("НоменклатураКонтрагентаНеСопоставлена", Истина, Истина);
УстановитьСнятьОтборДинамическогоСписка("НоменклатураКонтрагентаСопоставленаПолностью");
УстановитьСнятьОтборДинамическогоСписка("НоменклатураКонтрагентаСопоставленаПоНоменклатуреХарактеристики");
ИначеЕсли Отбор = 2 Тогда
УстановитьСнятьОтборДинамическогоСписка("НоменклатураКонтрагентаНеСопоставлена");
УстановитьСнятьОтборДинамическогоСписка("НоменклатураКонтрагентаСопоставленаПолностью", Истина, Истина);
УстановитьСнятьОтборДинамическогоСписка("НоменклатураКонтрагентаСопоставленаПоНоменклатуреХарактеристики");
ИначеЕсли Отбор = 1 Тогда
УстановитьСнятьОтборДинамическогоСписка("НоменклатураКонтрагентаНеСопоставлена");
УстановитьСнятьОтборДинамическогоСписка("НоменклатураКонтрагентаСопоставленаПолностью");
УстановитьСнятьОтборДинамическогоСписка("НоменклатураКонтрагентаСопоставленаПоНоменклатуреХарактеристики", Истина, Истина);
Иначе
УстановитьСнятьОтборДинамическогоСписка("НоменклатураКонтрагентаНеСопоставлена");
УстановитьСнятьОтборДинамическогоСписка("НоменклатураКонтрагентаСопоставленаПолностью");
УстановитьСнятьОтборДинамическогоСписка("НоменклатураКонтрагентаСопоставленаПоНоменклатуреХарактеристики");
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьСнятьОтборДинамическогоСписка(Знач ИмяПоля, Знач ВключитьИспользование = Ложь, Знач ПравоеЗначение = "")
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(
Список, ИмяПоля, ПравоеЗначение, ВидСравненияКомпоновкиДанных.Равно, , ВключитьИспользование);
КонецПроцедуры
&НаКлиенте
Процедура ОбработатьАктивизациюСтрокиСписка()
ТипГруппировка = Тип("СтрокаГруппировкиДинамическогоСписка");
ТипТекущейСтроки = ТипЗнч(Элементы.Список.ТекущаяСтрока);
ТекущаяСтрокаГруппа = Ложь;
Если ТипТекущейСтроки = Тип("СправочникСсылка.НоменклатураКонтрагентов") Тогда
ТекущаяСтрокаГруппа = СтрокаЭтоГруппа(Элементы.Список.ТекущаяСтрока);
КонецЕсли;
Если ТипТекущейСтроки <> ТипГруппировка
И Элементы.Список.ТекущиеДанные <> Неопределено И НЕ ТекущаяСтрокаГруппа Тогда
Элементы.ГруппаПодсказкаСтраницы.ТекущаяСтраница = Элементы.ПодсказкаЕстьДанные;
Иначе
Элементы.ГруппаПодсказкаСтраницы.ТекущаяСтраница = Элементы.ПодсказкаНетДанных;
КонецЕсли;
КонецПроцедуры
&НаСервереБезКонтекста
Функция СтрокаЭтоГруппа(ТекущаяСтрока)
Возврат ТекущаяСтрока.ЭтоГруппа;
КонецФункции
&НаСервере
Процедура УстановитьСвойстваДинамическогоСписка()
ТекстЗапроса = "";
СопоставлениеНоменклатурыКонтрагентовПереопределяемый.ТекстЗапросаДинамическогоСписка_ФормаВыбораНоменклатурыКонтрагента(ТекстЗапроса);
Если ЗначениеЗаполнено(ТекстЗапроса) Тогда
СвойстваСписка = ОбщегоНазначения.СтруктураСвойствДинамическогоСписка();
СвойстваСписка.ТекстЗапроса = ТекстЗапроса;
СвойстваСписка.ОсновнаяТаблица = "Справочник.НоменклатураКонтрагентов";
СвойстваСписка.ДинамическоеСчитываниеДанных = Истина;
ОбщегоНазначения.УстановитьСвойстваДинамическогоСписка(Элементы.Список, СвойстваСписка);
КонецЕсли;
Список.Параметры.УстановитьЗначениеПараметра("ПустаяНоменклатура", ПустаяНоменклатура);
Список.Параметры.УстановитьЗначениеПараметра("НоменклатураОтбор", Номенклатура);
Список.Параметры.УстановитьЗначениеПараметра("ХарактеристикаОтбор", Характеристика);
Список.Параметры.УстановитьЗначениеПараметра("УпаковкаОтбор", Упаковка);
МассивПодходящихТиповНоменклатуры = Новый Массив();
Если АктВыполненныхРабот Тогда
МассивПодходящихТиповНоменклатуры.Добавить(Перечисления.ТипыНоменклатуры.Работа);
МассивПодходящихТиповНоменклатуры.Добавить(Перечисления.ТипыНоменклатуры.Услуга);
ИначеЕсли ТипыНоменклатуры.Количество() > 0 Тогда
МассивПодходящихТиповНоменклатуры = ТипыНоменклатуры.ВыгрузитьЗначения();
Иначе
МассивПодходящихТиповНоменклатуры.Добавить(Перечисления.ТипыНоменклатуры.Товар);
МассивПодходящихТиповНоменклатуры.Добавить(Перечисления.ТипыНоменклатуры.МногооборотнаяТара);
МассивПодходящихТиповНоменклатуры.Добавить(Перечисления.ТипыНоменклатуры.Работа);
МассивПодходящихТиповНоменклатуры.Добавить(Перечисления.ТипыНоменклатуры.Услуга);
КонецЕсли;
Список.Параметры.УстановитьЗначениеПараметра("ТипыНоменклатуры", МассивПодходящихТиповНоменклатуры);
Подсказка1 = СтрШаблон(НСтр("ru = '%1 не сопоставлена с номенклатурой'"),
ПредставлениеОбъекта);
Подсказка2 = СтрШаблон(НСтр("ru = '%1 сопоставлена с другой номенклатурой'"),
ПредставлениеОбъекта);
Подсказка3 = СтрШаблон(НСтр("ru = '%1 сопоставлена с номенклатурой'"),
ПредставлениеОбъекта);
Список.Параметры.УстановитьЗначениеПараметра("Подсказка1", Подсказка1);
Список.Параметры.УстановитьЗначениеПараметра("Подсказка2", Подсказка2);
Список.Параметры.УстановитьЗначениеПараметра("Подсказка3", Подсказка3);
СопоставлениеНоменклатурыКонтрагентовПереопределяемый.УстановитьПараметрыДинамическогоСписка_ФормаВыбораНоменклатурыКонтрагентов(Параметры, Список);
КонецПроцедуры
#КонецОбласти