Имя: Пароль:
1C
 
Копирование групп справочника
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 справочник номенклтуры, а потом загрузить его в папку.
Можно использовать стандартные обработки переноса. Допилить только чуть чуть.