К списку форумов К списку тем
Регистрация    Правила    Главная форума    Поиск   
Имя: Пароль:
Рекомендовать в новости

можно ли определить событие перехода на 2 уровня вверх в справочнике

Гость
0 - 14.06.2013 - 06:35
Перебирается в цикле справочник.
Если в подгруппе А были группы (папки) а потом элементы,
то после перебора их, родитель группы Б находящийся в одном каталоге с родителем группы А, должен смениться на 2 уровня вверх, не подскажете как это можно определитть?



Гость
1 - 14.06.2013 - 07:11
А это у нас где, 7 или 8?
2 - 14.06.2013 - 07:16
Уровень()
Гость
3 - 14.06.2013 - 07:17
(1) 8.2
Гость
4 - 14.06.2013 - 07:24
(2) уровень определяет какой уровень
Гость
5 - 14.06.2013 - 07:25
я спрашиваю как выявить момент когда в каталоге есть каталоги и элементы, потом при смене елемента последнего при мереборе, родитель нужно сменить на 2 уровня, как это можно выявить, не пойму....
6 - 14.06.2013 - 07:51
перегрузка контрагентов

Тестирование происходит не на базе, а на форуме.
Гость
7 - 14.06.2013 - 08:26
(5) открой для себя понятие рекурсии.
Гость
8 - 14.06.2013 - 09:22
странные задачи какие-то возникают. Я вот нифига не понял, какое событие, кто меняет каталог. Поясни задачу нормально на физическом уровне ))
Uho
9 - 14.06.2013 - 09:24
Цитата:
Сообщение от LivingStar Посмотреть сообщение
родитель нужно сменить на 2 уровня
все евреи кроме я...
Гость
10 - 14.06.2013 - 09:27
(7) я просто не догоняю
Гость
11 - 14.06.2013 - 09:42
(9) делаю структуру каталогов по подобию, все сбивается на месте когда нужно подниматься на уровни вверх, у меня все в рекурсии, но видимо не правильно, я не догоняю как поправить это!!!
Гость
12 - 14.06.2013 - 09:49
не догоняешь? прячься!!!
13 - 14.06.2013 - 09:49
Цитата:
Сообщение от LivingStar Посмотреть сообщение
я просто не догоняю
ты не просто не догоняешь
ты катастрофически не въезжаешь в своё ремесло
бросай пока не выгнали
Гость
14 - 14.06.2013 - 10:00
(13) просто это типичный однаЭсник
Гость
15 - 14.06.2013 - 10:13
Родителей не выбирают )
Гость
16 - 14.06.2013 - 10:15
(11)Обработками выгрузки загрузки контрагентов получается неверная иерархия справочника или что ?
Гость
17 - 14.06.2013 - 10:59
есть полное наименование и полный код элемента. получай из них родителей более верхнего уровня. если пустое значение наименования/кода - значит верхний уровень.
Гость
18 - 14.06.2013 - 11:16
(17) Не, тупик или глухой лес, решил делать немного по другому, подделав установку родителя у записываемых элементов. В тестовой прогнал, что то вырисовывается, посмотрем как это все будет. Пока моя голова не соглашается решать задачи универсальных рекурсивных функций создания структыры каталогов. Времени на это нет, забита ещё прочим всяким!
Гость
19 - 14.06.2013 - 11:17
(18+) Ну а структуру эту придется по подобию потом раскидать вручную.
Гость
20 - 14.06.2013 - 11:24
Вот код, но он не креативный нифига (((((
|
// -----------------------------------------------------------------------------------------------------------------------------------------------------
Функция ПолучитьссылкуИерархическогоСправочникаНеобходимог оУровня(сСсылка,Знач зУровень=0)
Если зУровень = 0 Тогда
Возврат сСсылка;
КонецЕсли;
Если ЗначениеЗаполнено(сСсылка.Родитель) Тогда
Возврат ПолучитьссылкуИерархическогоСправочникаНеобходимог оУровня(сСсылка.Родитель,зУровень-1);
Иначе
Возврат Неопределено;
КонецЕсли;
КонецФункции
// -----------------------------------------------------------------------------------------------------------------------------------------------------
Функция РекурсивноеСозданиеКаталогов(Выборка, РодительТТ, ВыборкаРодитель)
Гр_ТТочки = Справочники.Контрагенты.НайтиПоНаименованию("ТОРГО ВЫЕ ТОЧКИ");
к = 0;
УровеньВыше = 0;
ТекУровень = 1;
Гр = Справочники.Контрагенты.НайтиПоНаименованию(Выборк а.Наименование,,РодительТТ.Ссылка);
Если Гр = Справочники.Контрагенты.ПустаяСсылка() Тогда
Гр = Справочники.Контрагенты.СоздатьГруппу();
Гр.Наименование = Выборка.Наименование;
Если ВыборкаРодитель = "" Тогда
РодительГр = Справочники.Контрагенты.НайтиПоНаименованию(Выборк а.Родитель.Наименование,,Гр_ТТочки);
Если РодительГр = Справочники.Контрагенты.ПустаяСсылка() Тогда
РодительГр = Справочники.Контрагенты.СоздатьГруппу();
РодительГр.Наименование = Выборка.Родитель.Наименование;
//
РодительГр.Записать();
Сообщить("Создана группа: " + РодительГр + " уровень ["+ РодительГр.Ссылка.Уровень() +"]");
к = к + 1;
КонецЕсли;
Гр.Родитель = РодительГр;
Иначе
Гр.Родитель = РодительТТ.Ссылка;
КонецЕсли;
Гр.Записать();
Сообщить("Создана группа: " + Гр + " уровень ["+ Гр.Ссылка.Уровень() +"]");
к = к + 1;
Иначе
//
КонецЕсли;
Пока Выборка.Следующий() Цикл
Если Не Выборка.Ссылка.ЭтоГруппа и УровеньВыше = 0 Тогда
ТекУровень = Выборка.Ссылка.Уровень();
УровеньВыше = 1;
Гр = ПолучитьссылкуИерархическогоСправочникаНеобходимог оУровня(Гр,1);
Продолжить;
ИначеЕсли Не Выборка.Ссылка.ЭтоГруппа и УровеньВыше = 1 Тогда
ТекУровень = Выборка.Ссылка.Уровень();
Продолжить;
КонецЕсли;
Если Выборка.Наименование = "ТОРГОВЫЕ ТОЧКИ" Тогда
Продолжить;
КонецЕсли;
//ВыборкаРодитель = ПолучитьссылкуИерархическогоСправочникаНеобходимог оУровня(Выборка.Ссылка,1);
//ВыборкаРодитель = ПолучитьссылкуИерархическогоСправочникаНеобходимог оУровня(Гр,1);
РекурсивноеСозданиеКаталогов(Выборка, Гр, ПолучитьссылкуИерархическогоСправочникаНеобходимог оУровня(Гр,1));
Возврат к;
КонецЦикла;
КонецФункции
// -----------------------------------------------------------------------------------------------------------------------------------------------------
Процедура ОсновныеДействияФормыСоздатьГруппы(Кнопка)
Родитель = Справочники.Контрагенты.НайтиПоНаименованию("Покуп атели");
ТТ = Справочники.Контрагенты.НайтиПоНаименованию("ТОРГО ВЫЕ ТОЧКИ");
Если ТТ = Справочники.Контрагенты.ПустаяСсылка() Тогда
ТТ = Справочники.Контрагенты.СоздатьГруппу();
ТТ.Наименование = "ТОРГОВЫЕ ТОЧКИ";
Если Родитель.Уровень() = 0 Тогда
ТТ.Родитель = Родитель;
ТТ.Записать();
КонецЕсли;
КонецЕсли;
СпрПок = Справочники.Контрагенты.НайтиПоНаименованию("Покуп атели",,ТТ.Ссылка);
Если СпрПок = Справочники.Контрагенты.ПустаяСсылка() Тогда
СпрПок = Справочники.Контрагенты.СоздатьГруппу();
СпрПок.Наименование = Родитель.Наименование;
СпрПок.Родитель = ТТ.Ссылка;
СпрПок.Записать();
КонецЕсли;
ПодгруппыТТ = Справочники.Контрагенты.ВыбратьИерархически(Родите ль);
Пока ПодгруппыТТ.Следующий() Цикл
//Если ПодгруппыТТ.ЭтоГруппа = Истина И ПодгруппыТТ.Наименование = "Покупатели" Тогда
Рез = РекурсивноеСозданиеКаталогов(ПодгруппыТТ, СпрПок, "");
Сообщить("Создание каталогов, режим:" + Рез);
Сообщить(ПодгруппыТТ.Наименование);
Прервать;
//КонецЕсли;
КонецЦикла;
КонецПроцедуры
// -----------------------------------------------------------------------------------------------------------------------------------------------------
Гость
21 - 14.06.2013 - 11:45
Когда я вижу в тексте модуля конкретное название "ТОРГОВЫЕ ТОЧКИ", "Покупатели", то мне дальше неинтересно читать
Гость
22 - 14.06.2013 - 11:49
(21) Некогда было соображать, были конкретные условия от них и отталкивался. Не сообразив ещё до конца как буду делать. Понятно что это все не интересно. По сути нечего там особо читать, не рабочее это все....


К списку вопросов






Copyright ©, Все права защищены