Имя: Пароль:
1C
 
v8: КД Ошибка при вызове метода контекста (Уровень): Элемент не выбран!
0 zippygrill
 
24.06.11
13:59
ребят, почему при переносе спр из УПП 8.1 в УПП 8.2(в определеной папке!!) останавливается с ошибкой:
Ошибка при вызове метода контекста (Уровень): Элемент не выбран!

Перенос в приемнник в определеной папке делаю по книжке Бояркина.
Если Источник.Уровень() = 0 Тогда
   Значение = 1;
   ИмяПКО = "КонтрагентыМЦБОтдельноГруппа";
КонецЕсли;

Причем из 8.2 -> 8.2 все четко переносится.
1 zippygrill
 
24.06.11
14:04
уп
2 zippygrill
 
24.06.11
14:11
апну
3 ДенисЧ
 
24.06.11
14:13
Наверное, Источник не выбран? :-)
4 Andy13
 
24.06.11
14:15
Ну это запросто. К примеру ПКО отрабатывает родителя корневого элемента. У него родитель - неопределен. То есть элемент не выбран.Вот и вываливается.
5 zippygrill
 
24.06.11
14:17
из за этого ? ))

ПКС = 40  (Родитель --> Родитель)
Объект =  <Объект не найден> (71:b3f0000423c7583b11dd733b5a7aa084)  (Справочник ссылка: Номенклатура)

(4) понятно. как победить? точнее как написать б исключение родителя корневой папке.
6 Andy13
 
24.06.11
14:18
Если хочешь поймать корневой элемент, используй:

Если Источник <> Неопределено
 Если Источник.Родитель = Неопределено Тогда
   Значение = 1;
   ИмяПКО = "КонтрагентыМЦБОтдельноГруппа";
 КонецЕсли;
КонецЕсли;

1-отсечение пустых.
2-выявление корневых элементов
7 Andy13
 
24.06.11
14:24
А вообще что надо сделать?
Сложить всю номенклатуру из базы-источника в одну папку в базе-приемнике?
8 zippygrill
 
24.06.11
14:25
ага.
9 Andy13
 
24.06.11
14:25
Ой, не неопределено, а Справочники.Номенклатура.ПустаяСсылка();
10 Andy13
 
24.06.11
14:26
(8) Секундочку, щас изложу как надо делать...
11 zippygrill
 
24.06.11
14:27
то ести вместо:

Если Источник.Уровень() = 0 Тогда
   Значение = 1;
   ИмяПКО = "КонтрагентыМЦБОтдельноГруппа";
КонецЕсли;

надо:

Если Источник <> Неопределено
 Если Источник.Родитель = Справочники.Номенклатура.ПустаяСсылка() Тогда
   Значение = 1;
   ИмяПКО = "КонтрагентыМЦБОтдельноГруппа";
 КонецЕсли;
КонецЕсли;
12 Andy13
 
24.06.11
14:28
(11) Не, всё не так! Подожди, щас изложу.
13 Andy13
 
24.06.11
14:31
Все действия выполняются при загрузке в базе-приемнике.
Собственно как было сделано:

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

2. В обработчике "После загрузки" ПКО "Номенклатура" подставляется родитель для всех корневых элементов. Как папок, так и отдельно взятых элементов. В результате вся номенклатура оказывается в базе-приемнике в одной папке с предопределенным именем.

Если Объект.Родитель = Справочники.Номенклатура.ПустаяСсылка() Тогда
   Объект.Родитель = Параметры.ПапкаУТ;
КонецЕсли;
14 zippygrill
 
24.06.11
15:05
А в ПКС Родитель ниче не заполняешь?
15 Andy13
 
24.06.11
15:07
(14) ПКС Родитель - описываешь обычным способом.
16 zippygrill
 
24.06.11
15:08
Значение = Источник; ? ))
17 Andy13
 
24.06.11
15:09
Не понял...
18 Andy13
 
24.06.11
15:10
В ПКС Родитель ничего не добавляешь.
19 zippygrill
 
24.06.11
15:15
извини а Параметры.Вставить("ПапкаУТ" ...) "ПапкаУТ" - это что? ПКО какое-то?
20 Andy13
 
24.06.11
15:18
(19) Это наименование папки. Можещь воткнуть туда что угодно. Например: "Папка со всякой хренью", "Товары", "Хрень никому не нужная" и т.д.
Читайте мануалы! Ну или хотя бы то что вам пишут(п.1)...
21 zippygrill
 
24.06.11
15:24
ну так ты этим методом не создал нужную папку ?

СпрНоменклатура = Справочники.Номенклатура.СоздатьГруппу();
СпрНоменклатура.Наименование = "Товары УТ";
СпрНоменклатура.Записать();
22 Синий зуб
 
24.06.11
15:35
Поставь Останавливаться по ошибке и посмотри при остановке, че там происходит, чего гадать.
23 Andy13
 
24.06.11
16:32
(21) В первом пункте ищется папка с наименованием "Товары УТ". Если её ещё нет, то создаем. Ссылку запихиваем в параметры.  Потом эту ссылку впихиваем как родителя всем корневым элементам, из переносимых.
24 zippygrill
 
24.06.11
16:37
ну да я уже догадался. А вот сам не могу понять почему между 8.2 это катит а между 8.1 -> 8.2 нет.
25 zippygrill
 
28.06.11
17:16
(13) По мимо "МояОпределеннаяПапка" в приемнике создаются папки из источника. Почему это так? Разве не должно быть только "МояОпределеннаяПапка".
26 zippygrill
 
28.06.11
17:25
http://imageshack.us/photo/my-images/820/59276252.jpg/
Должно быть только одна папка с кодом 00000000001. Что за фигня?
27 Aprobator
 
28.06.11
17:32
(0) кажется так

Если НЕ ЗначениеЗаполнено() Тогда
   Отказ = Истина;
Иначе
   ..... // тут твое условие на уровень
КонецЕсли;
28 Aprobator
 
28.06.11
17:33
Не ЗначениеЗаполнено(Источник) конечно
29 zippygrill
 
28.06.11
18:47
(28)то ести ты предлагаешь что если Родитель не заполнен то не перенести?))
30 zippygrill
 
29.06.11
09:37
уп
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший