|
не получает родителя у элемента | ☑ | ||
---|---|---|---|---|
0
manti
01.02.13
✎
12:18
|
Читаю из Com cоединения спр. Контрагенты - группы и элементы. Записываются в данном виде только группы и элементы раздельно.
Как записать элемент с родной группой? Коннектор = Новый COMОбъект("V82.COMConnector"); Попытка База = Коннектор.Connect("Srvr=""); Сообщить("Соединение с базой успешно установлено"); Исключение Сообщить("Произошла ошибка подключения к базе"+ОписаниеОшибки()); Возврат; КонецПопытки; СпрКонтраг = База.Справочники.Контрагенты; Выборка = СпрКонтраг.ВыбратьИерархически(); РегСведКонтактИнфа = База.РегистрыСведений.КонтактнаяИнформация.СоздатьНаборЗаписей(); х=0; Пока Выборка.Следующий() Цикл х=х+1; //грузим только группы Если Выборка.ЭтоГруппа Тогда //если группа не удалена Если выборка.пометкаУдаления = Ложь тогда //проверим на повторения Если Справочники.Контрагенты.НайтиПоКоду(Выборка.код) = Справочники.Контрагенты.ПустаяСсылка() Тогда НовГр = Справочники.Контрагенты.СоздатьГруппу(); НовГр.Родитель = Выборка.Ссылка.Родитель.Наименование; НовГр.Наименование = Выборка.Ссылка.Наименование; НовГр.Код = Выборка.Ссылка.код; НовГр.Записать(); Сообщить("Записана группа "+выборка.Наименование+" код группы = "+Выборка.код); Иначе Продолжить; КонецЕсли; Иначе Продолжить; КонецЕсли; Иначе //грузим сами элементы //если элемент НЕ удален Если выборка.пометкаУдаления = Ложь тогда //проверим на повторения Если Справочники.Контрагенты.НайтиПоКоду(Выборка.код) = Справочники.Контрагенты.ПустаяСсылка() Тогда НовЭлСпр = Справочники.Контрагенты.СоздатьЭлемент(); //шапка спр НовЭлСпр.Родитель = Выборка.Ссылка.Родитель.Наименование; НовЭлСпр.Код = Выборка.Ссылка.код; НовЭлСпр.Наименование = Выборка.Ссылка.Наименование; НовЭлСпр.НаименованиеПолное = Выборка.Ссылка.НаименованиеПолное; |
|||
1
Wassily
01.02.13
✎
12:20
|
НовЭлСпр.Родитель = Выборка.Ссылка.Родитель.Наименование;
|
|||
2
Нуф-Нуф
01.02.13
✎
12:22
|
нужно не наименование а ссылку передвать
|
|||
3
Godofsin
01.02.13
✎
12:24
|
НовЭлСпр.Родитель = Выборка.Родитель.Ссылка;
|
|||
4
Wassily
01.02.13
✎
12:25
|
(3) ты предлагаешь COM-объект в родителя записать?
|
|||
5
Wassily
01.02.13
✎
12:27
|
НовЭлСпр.Родитель = Справочники.Контрагенты.НайтиПоКоду(Выборка.Родитель.Код)
|
|||
6
Godofsin
01.02.13
✎
12:29
|
(4) чито то я читаю седня плохо =)
|
|||
7
cw014
01.02.13
✎
12:30
|
СпрКонтраг - КопроФаг???
|
|||
8
cw014
01.02.13
✎
12:30
|
(0)(7) Судя по коду я прав
|
|||
9
hhhh
01.02.13
✎
12:31
|
(0) может без ссылки?
НовЭлСпр.Родитель = Выборка.Родитель.Наименование; НовЭлСпр.Код = Выборка.код; НовЭлСпр.Наименование = Выборка.Наименование; НовЭлСпр.НаименованиеПолное = Выборка.НаименованиеПолное; |
|||
10
cw014
01.02.13
✎
12:31
|
(9) Без ссылки каждый дурак может, а тут такой шедевр
|
|||
11
manti
01.02.13
✎
12:43
|
Ни
Выборка.Родитель.Наименование Выборка.Ссылка.Родитель.Ссылка.Наименование Выборка.Ссылка.Родитель.Ссылка не записывают группу(( |
|||
12
cw014
01.02.13
✎
12:44
|
Выборка.Ссылка.Родитель.Ссылка - это что еще такое???
НовГр.Родитель = Выборка.Родитель; |
|||
13
cw014
01.02.13
✎
12:44
|
Стоп
|
|||
14
cw014
01.02.13
✎
12:45
|
Нифига у тебя не выйдет
|
|||
15
cw014
01.02.13
✎
12:46
|
Тебе сначала надо в текущей базе группу создать, а потом уже ее присваивать
|
|||
16
manti
01.02.13
✎
12:47
|
(14) эт почему? значение то он ворачивает), но не записывает
а тоесть уже записанную группу? |
|||
17
cw014
01.02.13
✎
12:47
|
Вместо: НовГр.Родитель = Выборка.Ссылка.Родитель.Наименование;
пишешь ТекРодитель = Справочники.Контрагенты.НайтиПоКоду(Выборка.Код); Если ТекРодитель.Пустая() тогда НовРодитель = Справочники.Контрагенты.СоздатьГруппу(); ЗаполнитьЗначенияСвойств(НовРодитель, Выборка); НовРодитель.Записать(); ТекРодитель = НовРодитель.Ссылка; КонецЕсли; НовГр.Родитель = ТекРодитель; |
|||
18
cw014
01.02.13
✎
12:48
|
(16) Потому что сначала посмотри в отладчике что у тебя в переменной, а потом задавай глупые вопросы
|
|||
19
cw014
01.02.13
✎
12:50
|
(16) У тебя НовГр.Родитель имеет тип СправочникСсылка.Контрагенты, Выборка.Ссылка.Родитель.Наименование имеет тип "Строка"
|
|||
20
cw014
01.02.13
✎
12:51
|
(16) А Выборка.Ссылка.Родитель имеет тип ComObject
Вот и думай, что к чему присваиваешь |
|||
21
manti
01.02.13
✎
13:00
|
Если Справочники.Контрагенты.НайтиПоКоду(Выборка.код) = Справочники.Контрагенты.ПустаяСсылка()
Тогда //НовГр = Справочники.Контрагенты.СоздатьГруппу(); //НовГр.Наименование = Выборка.Ссылка.Наименование; //НовГр.Код = Выборка.Ссылка.код; /////////////////////////////////////////////////////////// ТекРодитель = Справочники.Контрагенты.НайтиПоКоду(Выборка.Код); Если ТекРодитель.Пустая() тогда НовРодитель = Справочники.Контрагенты.СоздатьГруппу(); ЗаполнитьЗначенияСвойств(НовРодитель, Выборка); НовРодитель.Записать(); ТекРодитель = НовРодитель.Ссылка; КонецЕсли; //НовГр.Родитель = Выборка.Родитель.Наименование; //////////////////////////////////////////////////////////// //НовГр.Записать(); Сообщить("Записана группа "+выборка.Наименование+" код группы = "+Выборка.код); Иначе Продолжить; Ошибка при вызове метода контекста (ЗаполнитьЗначенияСвойств) ЗаполнитьЗначенияСвойств(НовРодитель, Выборка); по причине: Ошибка установки значения свойства 'Owner' по причине: Справочник не имеет владельца |
|||
22
cw014
01.02.13
✎
13:01
|
ЗаполнитьЗначенияСвойств(НовРодитель, Выборка,, "Владелец,Родитель");
|
|||
23
cw014
01.02.13
✎
13:01
|
ЗаполнитьЗначенияСвойств(НовРодитель, Выборка,, "Родитель");
Вот так правильно |
|||
24
manti
01.02.13
✎
13:05
|
Ошибка при вызове метода контекста (ЗаполнитьЗначенияСвойств)
ЗаполнитьЗначенияСвойств(НовРодитель, Выборка,, "Родитель"); по причине: Ошибка установки значения свойства 'Owner' по причине: Справочник не имеет владельца |
|||
25
Wassily
01.02.13
✎
13:28
|
(24) одну запятую оставь
|
|||
26
hhhh
01.02.13
✎
14:37
|
(24) специально для чукчей: ЗаполнитьЗначенияСвойств выкинь. Напиши
НовРодитель.Наименование = Выборка.Родитель.Наименование; НовРодитель.Код = Выборка.Родитель.Код; |
|||
27
Wassily
01.02.13
✎
15:03
|
(26) код и наименование заполняется
ТС хочет родителя подтянуть |
|||
28
hhhh
01.02.13
✎
15:17
|
(27) это вообще не его код. ТС-у об этом еще рано задумываться.
|
|||
29
manti
01.02.13
✎
15:19
|
понял логику спасибо разобрался
Если Выборка.Родитель.Наименование = "" тогда //если нет родителя НовЭлСпр = Справочники.Контрагенты.СоздатьЭлемент(); НовЭлСпр.Код = Выборка.Ссылка.код; НовЭлСпр.Наименование = Выборка.Ссылка.Наименование; НовЭлСпр.НаименованиеПолное = Выборка.Ссылка.НаименованиеПолное; НовЭлСпр.Записать(); Иначе ТекРодитель = Справочники.Контрагенты.НайтиПоКоду(Выборка.родитель.код); //Если ТекРодитель.Пустая() тогда НовЭлСпр = Справочники.Контрагенты.СоздатьЭлемент(); НовЭлСпр.Наименование = Выборка.Ссылка.Наименование; НовЭлСпр.НаименованиеПолное = Выборка.Ссылка.НаименованиеПолное; НовЭлСпр.Код = Выборка.Ссылка.Код; НовЭлСпр.Родитель = ТекРодитель; НовЭлСпр.Записать(); КонецЕсли; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |