Дистанционное обслуживание 1С

+7 967 4702070

продажа, настройка, обслуживание 1С

четверг, 6 февраля 2014 г.

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

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


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


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

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

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

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

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

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

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

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

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

Вроде все. Возможно есть смысл доработать - что бы основной молуль выполнялся на сервере.

Комментариев нет :

Отправить комментарий