Доработка модуля от «1С:Битрикс» альтернативного каталога для УТ11

Есть не плохой модуль от «1С:Битрикс» для создания альтернативного каталога, но в нем не удобно добавлять группы из справочника «Номенклатура»

 

Дорабтка для 1С: 8.2.19.69, УТ 11.1.2.15, Версия обработки Битрикс: 3.1.2.9.1
Предполагается, что модуль от битрикса у вас уже установлен.

Для внесения изменений открываем форму Общие — Планы обмена — ОбменУправлениеТорговлейСайт — Формы — РИ_ФормаДеревоГрупп
В модуль формы добавляем:
&НаКлиентеПроцедура ДобавитьРекусивноГруппуВДерево(Знач КоллекцияСтрок,Знач ТекНоменклатура); 

НоваяСтрока =   КоллекцияСтрок.Добавить();
НоваяСтрока.Группа=ПолучитьНаименованиеНоменклатуры(ТекНоменклатура);
НоваяСтрока.ИдГруппы Строка(Новый УникальныйИдентификатор);
НоваяСтрока.Номенклатура.Добавить(ТекНоменклатура);
ГрупыГруппы =   ПолучитьГруппуГруппы(ТекНоменклатура);
Для Каждого 
Група Из ГрупыГруппы Цикл
ДобавитьРекусивноГруппуВДерево(НоваяСтрока.ПолучитьЭлементы(),Група);
КонецЦикла;
КонецПроцедуры

&НаКлиентеПроцедура СкопироватьВДеревоНаКлиенте(КоллекцияСтрок,ВыделенныеСтроки)    Для Каждого

ТекНоменклатура Из ВыделенныеСтроки Цикл
Если НЕ 
ЗначениеЗаполнено(ТекНоменклатура) Тогда
Продолжить;
КонецЕсли;
Если 
НоменклатураОтбор.Количество() > Тогда
Если 
НоменклатураОтбор.НайтиПоЗначению(ТекНоменклатура) = НеОпределено Тогда
Предупреждение(«Номенклатура «»» ТекНоменклатура «»» не соответствует отбору.»);
Возврат;
КонецЕсли;
КонецЕсли;
ДобавитьРекусивноГруппуВДерево(КоллекцияСтрок,ТекНоменклатура);
КонецЦикла;
КонецПроцедуры

&НаКлиентеПроцедура СкопироватьВДерево(Команда)    Если

Элементы.ДеревоГрупп.ТекущиеДанные = НеОпределено Тогда
КоллекцияСтрок ДеревоГрупп.ПолучитьЭлементы();
Иначе
КоллекцияСтрок Элементы.ДеревоГрупп.ТекущиеДанные.ПолучитьЭлементы();
КонецЕсли;
СкопироватьВДеревоНаКлиенте(КоллекцияСтрок,Элементы.Номенклатура.ВыделенныеСтроки);КонецПроцедуры

&НаКлиентеПроцедура ДеревоГруппПеретаскивание(ЭлементПараметрыПеретаскиванияСтандартнаяОбработкаСтрокаПоле)    Если

Строка = Неопределено Тогда
КоллекцияСтрок ДеревоГрупп.ПолучитьЭлементы();
Иначе
КоллекцияСтрок ДеревоГрупп.НайтиПоИдентификатору(Строка).ПолучитьЭлементы();
КонецЕсли;
СкопироватьВДеревоНаКлиенте(КоллекцияСтрок,ПараметрыПеретаскивания.Значение);
СтандартнаяОбработка = Ложь;КонецПроцедуры

&НаСервереФункция ПолучитьНаименованиеНоменклатуры(Номенклатура)
Возврат 
Номенклатура.Наименование;
КонецФункции

Добавляем команду и кнопку на форму и назначаем ей процедуру СкопироватьВДерево().
Настраиваем возможность перетаскивания и прописываем для «ДеревоГрупп» обработчик ДеревоГруппПеретаскивание()
 
Вроде все. Возможно есть смысл доработать — что бы основной молуль выполнялся на сервере.

Добавить комментарий