![]() |
![]() |
![]() |
|
Копирование групп справочника | ☑ | ||
---|---|---|---|---|
0
orlandis
18.08.10
✎
14:19
|
Здраствуйте .
Прошу помощи точнее розяснения в таком вот деле , поставлена задача в справочнике создать некую новую группу и в неё со всей иерархией скопировать все ранее существующие группы с элементами. |
|||
1
Mort
18.08.10
✎
14:22
|
Обходишь иерархически источник и заполняешь элементы в приемнике. Можно и без рекурсии - просто в порядке иерархии обойти, а для хранения соответствия групп юзать, соответственно, соответствие )
|
|||
2
Sergey_KR
18.08.10
✎
14:23
|
ctrl+shift+m
|
|||
3
EasyRider
18.08.10
✎
14:25
|
Руками если - то создаешь группу,нажимаешь кнопку "F9" на группе которую надо скопировать,а потом выбираешь в открывшейся форме родительской группой - созданную тобой группу.
|
|||
4
EasyRider
18.08.10
✎
14:26
|
+(3)тащемта это для УПП например
|
|||
5
EasyRider
18.08.10
✎
14:39
|
Не слушайте меня.Я не в себе...Вручную скопировать группу с элементами не получится.Только перенести
|
|||
6
orlandis
18.08.10
✎
17:06
|
Сообщение от г-на Mort меня вдохновило и я накодил следующее
Процедура Кнопка1Нажатие(Элемент) Выборка = Справочники.Номенклатура.ВыбратьИерархически(); Пока Выборка.Следующий() Цикл КонецПроцедуры на этом вдохновение закончилось , прошу более детально розяснить (без рекурсии желательно). Спасибо что помогаете Чайникам |
|||
7
Rie
18.08.10
✎
17:17
|
(6) Тебе же не весь справочник перебирать, а одну группу? Значит, ВыбратьИерархически нужно кой-какие параметры задать.
А дальше: получил элемент или группу (Выборка.Ссылка) - создал новый элемент/группу. С нужным родителем. |
|||
8
orlandis
18.08.10
✎
17:20
|
Нет перебираю весь справочник и соответственно все группы должны быть скопированы, уровней иерархии тоже несколько
|
|||
9
Rie
18.08.10
✎
17:24
|
(8) Если не весь справочник - то ВыбратьИерархически нужны параметры.
Иерархия получится сама. Mort предложил использовать соответствие. То есть внутри цикла будет что-то вроде Если Выборка.ЭтоГруппа Тогда НоваяГруппа = Справочники.Номенклатура.СоздатьГруппу(); // копируешь реквизиты НоваяГруппа.Записать(); СоответствиеГрупп.Вставить(Выборка.Ссылка,НоваяГруппа.Ссылка); КонецЕсли; а потом используешь это соответствие, когда задаёшь родителей новым элементам и группам. |
|||
10
Rie
18.08.10
✎
17:26
|
+(9) Это, естественно, не всё, что будет внутри цикла. Там ещё кой-какие действия понадобятся :-)
|
|||
11
orlandis
18.08.10
✎
17:28
|
Извиинте за наглость , а можете написать полностью рабочий код с пояснениями
|
|||
12
Rie
18.08.10
✎
17:31
|
(11) Могу :-)
Но зачем? Вам же надо научиться решать такие задачи - или Вы надеетесь, что и дальше Вашу работу будут на форуме делать? Попробуйте сами. Если что не будет получаться - тогда спрашивайте. Конкретно. |
|||
13
Oleg_Kag
18.08.10
✎
17:34
|
а еще ... а еще можно через КД поизвращаться :)
|
|||
14
orlandis
18.08.10
✎
17:38
|
абсолютно с вами согласен Rie , только я чист как лист бумаги и конструктор этот собираю вот с примеров разных форумов , я понимаю на словах что необходимо сделать что "завертелся каменный цветок" но как формировать конструкции кода для меня дремучий лес и учить как обычно времени нету потому как кинули в бой.
ладно спасибо что хоть немножко направили в нужное русло , а то думал что вообще никто не откликнется. Если у кого возникнет вдруг неожиданном желание натаскать меня на это дело буду примного благодарен , хотя как расчитываться придумывайте сразу . Мои контакты ICQ 413055736 E-mail - fordford@ukr.net Mob.tel. in Ukraine - 0663214093 |
|||
15
Rie
18.08.10
✎
17:44
|
(14) Не собирайте примеры с форумов.
Есть книги - и документация, и учебники. Есть типовые конфигурации, где можно посмотреть, как нужно (или не нужно) делать. А на форумы лучше приходить с конкретными вопросами. По этой задаче так и осталось непонятным, что же именно Вам непонятно: как создать элемент/группу справочника; или как задать родителя; или как работать с соответствиями; или же какие ещё есть способы решения этой задачи. |
|||
16
orlandis
18.08.10
✎
17:49
|
Непонятно :
1.как задать родителя и для чего это надо 2.как работать с соответствиями , и опять же , для чего это надо |
|||
17
hhhh
18.08.10
✎
17:58
|
Родитель это группа, в которой находится ваш элемент.
|
|||
18
Rie
18.08.10
✎
17:59
|
(16) Работать с соответствиями - чтобы задавать родителя.
Задавать родителя - так именно Родитель и определяет иерархию. То есть, НоваяГруппа = Справочники.Номенклатура.СоздатьГруппу(); НоваяГруппа.Родитель = СоответствиеГрупп[Выборка.Родитель]; // копируются реквизиты НоваяГруппа.Записать(); (ну и для элемента аналогично). Соответствие - это набор пар КлючИЗначение. В данном случае в качестве ключей выступают группы - подгруппы исходной группы, а в качестве значений - новые группы. |
|||
19
orlandis
18.08.10
✎
18:09
|
а под коментами (// копируются реквизиты) как описывается этот момент , можно пример хотя бы на одном и реквизиты это те которые во вкладочке Данные в настройках справочника созданы ?
|
|||
20
Rie
18.08.10
✎
18:13
|
(19) Да. Именно те.
НоваяГруппа.Наименование = Выборка.Наименование; (это пример). При этом надо иметь в виду, что у групп и элементов - _разные_ наборы реквизитов. Копирование реквизитов можно тоже сделать циклом (но для начала - лучше выпиши явно). Код копировать не надо (если очень надо - используй УстановитьНовыйКод). Однако, судя по вопросам, лучше было бы почитать для начала Радченко, "Практическое пособие разработчика". Поскольку видно незнание основных понятий. И чего-нибудь по общим понятиям программирования (раз уж был вопрос о соответствиях). |
|||
21
orlandis
18.08.10
✎
18:17
|
Спасибо за советы.
Радченко уже бегло две первые части пробежал Извините за глупые вопросы но они ,я думаю , у меня ещё будут так что не обижайтесь. |
|||
22
orlandis
18.08.10
✎
18:33
|
СоответствиеГрупп - это метод ?
|
|||
23
Rie
18.08.10
✎
18:36
|
(22) Это переменная.
Перед началом цикла инициализировать её СоответствиеГрупп = Новый Соответствие; |
|||
24
orlandis
18.08.10
✎
18:38
|
а как быть с табличной частью ?
|
|||
25
Расколбас
18.08.10
✎
18:39
|
(2) Ты разницу между "Скопировать" и "Переместить" улавливаешь?
|
|||
26
Rie
18.08.10
✎
18:41
|
(24) Так же, как и с реквизитами.
Перебирать строки "старого" элемента циклом, создавать строки в табличной части "нового" элемента и копировать значения реквизитов табличной части. |
|||
27
Расколбас
18.08.10
✎
18:53
|
(6) Так не получится. Надо запросом выбирать весь справочник номенклатуры. Иначе у тебя в выборку будут попадать вновь созданные элементы и группы.
|
|||
28
Расколбас
18.08.10
✎
18:54
|
А ещё проще так сделать...
|
|||
29
Расколбас
18.08.10
✎
18:56
|
Выгрузить в XML справочник номенклтуры, а потом загрузить его в папку.
Можно использовать стандартные обработки переноса. Допилить только чуть чуть. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |