Как записать всех родителей элемента

1. mentozavr 71 22.05.13 15:44 Сейчас в теме
Уважаемые имеется такая часть кода. Через запрос получаются все родители элемента (СФЛЦБ)из базы по ком соединению.
Запрос = глСоединениеСЦБ.NewObject("Запрос");
Запрос.УстановитьПараметр("Ссылка", СФЛЦБ);
//Запрос.УстановитьПараметр("СписокНоменклатур", <СписокНоменклатур>); //Контрагент
Запрос.Текст = "
|ВЫБРАТЬ
| Контрагенты.Ссылка
|ПОМЕСТИТЬ РодителиВерхнегоУровня
|ИЗ
| Справочник.Контрагенты КАК Контрагенты
|ГДЕ
| Контрагенты.Родитель.Ссылка ЕСТЬ NULL
|;
|
|////////////////////////////////////////////////////////////­////////////////////
|
|ВЫБРАТЬ
| Контрагенты.Ссылка,
| РодителиВерхнегоУровня.Ссылка КАК Ссылка1,
| РодителиВерхнегоУровня.Ссылка.код КАК Ссылка12,
| Родитель КАК Ссылка2,
| Родитель.Родитель КАК Ссылка3,
| Родитель.Родитель.родитель КАК Ссылка4
|ИЗ
| Справочник.Контрагенты КАК Контрагенты
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РодителиВерхнегоУровня КАК РодителиВерхнегоУровня
| ПО (Контрагенты.Родитель = РодителиВерхнегоУровня.Ссылка
| ИЛИ Контрагенты.Родитель.Родитель = РодителиВерхнегоУровня.Ссылка
| ИЛИ Контрагенты.Родитель.Родитель.Родитель = РодителиВерхнегоУровня.Ссылка
| ИЛИ Контрагенты.Родитель.Родитель.Родитель.Родитель = РодителиВерхнегоУровня.Ссылка
| ИЛИ Контрагенты.Родитель.Родитель.Родитель.Родитель.Родитель = РодителиВерхнегоУровня.Ссылка)
|ГДЕ
| Контрагенты.Ссылка В(&Ссылка)
|";
РезультатЗапроса = Запрос.Выполнить().Выбрать();
Пока РезультатЗапроса.Следующий() Цикл
НГРСФЛ1=РезультатЗапроса.Ссылка1.Description;
НГРСФЛСсылка1=РезультатЗапроса.Ссылка1;
НГРСФЛ2=РезультатЗапроса.Ссылка2.Description;
НГРСФЛСсылка2=РезультатЗапроса.Ссылка2;
НГРСФЛ3=РезультатЗапроса.Ссылка3.Description;
НГРСФЛСсылка3=РезультатЗапроса.Ссылка3;
НГРСФЛ4=РезультатЗапроса.Ссылка4.Description;
НГРСФЛСсылка4=РезультатЗапроса.Ссылка4;
Сообщить("группа1 "+НГРСФЛ1+НГРСФЛСсылка1);
Сообщить("группа2 "+НГРСФЛ2+НГРСФЛСсылка2);
Сообщить("группа3 "+НГРСФЛ3+НГРСФЛСсылка3);
Сообщить("группа4 "+НГРСФЛ4+НГРСФЛСсылка4);
КонецЦикла;
//если НГРСФЛ=форма.НЗ тогда
// прервать;
//иначе
Если Справочники.Контрагенты.НайтиПоНаименованию(НГРСФЛ1).Пустая() тогда
НоваяГруппа = Справочники.Контрагенты.СоздатьГруппу();
НоваяГруппа.Наименование = НГРСФЛ1;
НоваяГруппа.Записать();
ЭтаФорма.родитель=Справочники.Контрагенты.НайтиПоНаименованию(НГРСФЛ1).Ссылка
иначе
ЭтаФорма.родитель=Справочники.Контрагенты.НайтиПоНаименованию(НГРСФЛ1).Ссылка;
КонецЕсли;
Группа1=Справочники.Контрагенты.НайтиПоНаименованию(НГРСФЛ1).Ссылка;
Если Справочники.Контрагенты.НайтиПоНаименованию(НГРСФЛ2,,Группа1).Пустая() тогда
НоваяГруппа = Справочники.Контрагенты.СоздатьГруппу();
НоваяГруппа.Наименование = НГРСФЛ2;
НоваяГруппа.Родитель = Группа1;
НоваяГруппа.Записать();
ЭтаФорма.родитель.родитель=Справочники.Контрагенты.НайтиПоНаименованию(НГРСФЛ2).Ссылка;
иначе
ЭтаФорма.родитель.родитель=Справочники.Контрагенты.НайтиПоНаименованию(НГРСФЛ2).Ссылка
КонецЕсли;

Но почему-то записать всех родителей я не могу хотя получаю. в частности выводит родитель не доступен для записи. Выручайте дорогие мои
По теме из базы знаний
Найденные решения
66. viktor_vv 23.05.13 12:46 Сейчас в теме
(61) Так тут ты опять пытаешься через ссылку писать

"потом ЭтотОбъект.Родитель.Родитель
потом ЭтотОбъект.Родитель.Родитель.Родитель"

здесь опять надо объект получать

ОбъектВерхнегоРодителя = ЭтотОбъект.Родитель.ПолучитьОбъект();
ОбъектВерхнегоРодителя.Родитель = ЧтоТам ;

ОбъектБолееВерхнегоРодителя = ОбъектВерхнегоРодителя.Родитель.ПолучитьОбъект();
ОбъектБолееВерхнегоРодителя.Родитель = ЕщеЧтОтам ;

и .т д. Ну и засунь это в рекусрию.
mart-sha; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
23. m-serg74 46 23.05.13 10:17 Сейчас в теме
(1) mentozavr,
ЭтаФорма.родитель.родитель=
в Ссылку пытаешься записать, а надо получать объект и в него ужо пописывать!!!
24. mentozavr 71 23.05.13 10:20 Сейчас в теме
(23) m-serg74, не понял? а по подробнее, на этом как раз и встал
25. m-serg74 46 23.05.13 10:22 Сейчас в теме
(24) mentozavr,
ОбРодитель = ЭтаФорма.Родитель.ПолучитьОбъект();
ОбРодитель.Родитель = ...тра-ля-ля;
ОбРодитель.Записать();


как-то примерно вот так)))
26. mentozavr 71 23.05.13 10:24 Сейчас в теме
(25) m-serg74, спасибо дорогой
27. m-serg74 46 23.05.13 10:25 Сейчас в теме
(26) mentozavr, лишь бы на пользу;-)
28. mentozavr 71 23.05.13 10:27 Сейчас в теме
(27) m-serg74, счас как раз попробую
29. mentozavr 71 23.05.13 10:35 Сейчас в теме
(27) m-serg74,
ошибка
{Справочник.Контрагенты.Форма.ФормаЭлемента.Форма(1099)}: Ошибка при вызове метода контекста (ПолучитьОбъект)
ЭтаФорма.Родитель.ПолучитьОбъект();
по причине:
Элемент не выбран!
83. AnryMc 848 23.05.13 14:44 Сейчас в теме
(1) Проходя мимо решил "стукнуть" по клавишам:

СправочникОбъект.<Имя справочника> (CatalogObject.<Имя справочника>)
ПолныйКод (FullCode)
Синтаксис:
ПолныйКод() 
Возвращаемое значение:
Тип: Строка. 
Строка, включающая код элемента и коды всех вышестоящих элементов.
Коды выводятся слева направо, начиная с самого верхнего уровня, разделяются символом "/". 
Описание:
Получает код элемента справочника с учетом кодов всех вышестоящих элементов.
Доступность: 
Сервер, толстый клиент, внешнее соединение. 
Пример:
Сообщить("Полный код данного элемента: " +
          Объект.ПолныйКод());
Показать


А отсюде ещё не заходили?
84. m-serg74 46 23.05.13 14:47 Сейчас в теме
(83) AnryMc, +100 баллов, хоть и не в тему:-)
91. AnryMc 848 23.05.13 15:10 Сейчас в теме
(84) m-serg74, Ну 100 "+" не получиться, но 1 можно... получиться что то около 1500...
92. m-serg74 46 23.05.13 15:12 Сейчас в теме
(91) AnryMc, я написал "+ 100 баллов", а не "+ 100 плюсов" ;-)
85. mentozavr 71 23.05.13 14:50 Сейчас в теме
(83) AnryMc, Ходили ходили и бред получили
86. m-serg74 46 23.05.13 14:56 Сейчас в теме
(85) mentozavr, выложи код какой он сейчас

ПС. Полдня не загрузить группы... моя в шоке...
87. mentozavr 71 23.05.13 14:57 Сейчас в теме
(86) m-serg74,
Процедура НСИ_ЦБНажатие(Элемент) экспорт
Если ЭлементыФормы.Наименование.Значение="" Тогда возврат
//
КонецЕсли;

ВнешниеОбработкиСправочник=Справочники.ВнешниеОбработки;
Выборка=ВнешниеОбработкиСправочник.НайтиПоНаименованию("Поиск контрагентов");
Имя="Поиск контрагентов";
Расширение=".epf";
ДвДанные=Выборка.ХранилищеВнешнейОбработки.Получить();
ПолныйПуть=КаталогВременныхФайлов()+имя+Расширение;
ДвДанные.записать(ПолныйПуть);
Форма=ВнешниеОбработки.ПолучитьФорму(ПолныйПуть);


//Форма=ВнешниеОбработки.ПолучитьФорму("\\srv-vzp\BDocs\ЖАВПоискВОсновнойБазеДерево.epf");
Форма.ТекущийТекст=Строка(ЭлементыФормы.Наименование.Значение);
ИмяСправочника=Форма.ПолучениеНазванияСправочника(ЭтотОбъект.Метаданные().Имя);
ОткрытьФормумодально(форма,ПолныйПуть);
//КонецЦикла;
//ЭлементыФормы.Наименование.Значение=Форма.НЗ;

ЭлементыФормы.Наименование.Значение=Форма.НЗ;
//ЭлементыФормы.код=Форма.код1;
НаименованиеПриИзменении(Форма.НЗ);
//Элемент.Записать();
//ссФЛ = Элемент.Ссылка;
//Отказ=Ложь;



//ссФЛ = Справочники.ФизическиеЛица.ПолучитьСсылку();
//ПриЗаписи(Отказ);
Выполнить("ЭтотОбъект.УстановитьСсылкуНового(Справочники.Контрагенты.ПолучитьСсылку(Новый УникальныйИдентификатор(Форма.УУИД)))");
//НоваяСсылка = Справочники.ФизическиеЛица.ПолучитьСсылку(Новый УникальныйИдентификатор(Форма.УУИД));
ЭтотОбъект.УстановитьСсылкуНового(Справочники.Контрагенты.ПолучитьСсылку(Новый УникальныйИдентификатор(Форма.УУИД)));

ССФЛ=ЭтотОбъект.Ссылка;
отказ=ложь;
СФЛЦБ=форма.СФЛ;
СФЛЦБСсылка=СФЛЦБ.Ref;
ЭтотОбъект.ОбменДанными.Загрузка=истина;
////рабртаем с группами-вариант №3
////Верхний(СФЛЦБ)

////рабртаем с группами-вариант №1
Запрос = глСоединениеСЦБ.NewObject("Запрос");
Запрос.УстановитьПараметр("Ссылка", СФЛЦБ);
//Запрос.УстановитьПараметр("СписокНоменклатур", <СписокНоменклатур>); //Контрагент
Запрос.Текст = "
|ВЫБРАТЬ
| Контрагенты.Ссылка
|ПОМЕСТИТЬ РодителиВерхнегоУровня
|ИЗ
| Справочник.Контрагенты КАК Контрагенты
|ГДЕ
| Контрагенты.Родитель.Ссылка ЕСТЬ NULL
|;
|
|////////////////////////////////////////////////////////////­////////////////////
|
|ВЫБРАТЬ
| Контрагенты.Ссылка,
| РодителиВерхнегоУровня.Ссылка КАК Ссылка1,
| РодителиВерхнегоУровня.Ссылка.код КАК Ссылка12,
| Родитель КАК Ссылка2,
| Родитель.Родитель КАК Ссылка3,
| Родитель.Родитель.родитель КАК Ссылка4
|ИЗ
| Справочник.Контрагенты КАК Контрагенты
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РодителиВерхнегоУровня КАК РодителиВерхнегоУровня
| ПО (Контрагенты.Родитель = РодителиВерхнегоУровня.Ссылка
| ИЛИ Контрагенты.Родитель.Родитель = РодителиВерхнегоУровня.Ссылка
| ИЛИ Контрагенты.Родитель.Родитель.Родитель = РодителиВерхнегоУровня.Ссылка
| ИЛИ Контрагенты.Родитель.Родитель.Родитель.Родитель = РодителиВерхнегоУровня.Ссылка
| ИЛИ Контрагенты.Родитель.Родитель.Родитель.Родитель.Родитель = РодителиВерхнегоУровня.Ссылка)
|ГДЕ
| Контрагенты.Ссылка В(&Ссылка)
|";
РезультатЗапроса = Запрос.Выполнить().Выбрать();
Пока РезультатЗапроса.Следующий() Цикл
НГРСФЛ1=РезультатЗапроса.Ссылка1.Description;
НГРСФЛСсылка1=РезультатЗапроса.Ссылка1;
Сообщить("группа1 "+НГРСФЛ1+НГРСФЛСсылка1);
Если РезультатЗапроса.Ссылка2<>null тогда
НГРСФЛ2=РезультатЗапроса.Ссылка2.Description;
НГРСФЛСсылка2=РезультатЗапроса.Ссылка2;
иначе прервать
КонецЕсли;
Сообщить("группа2 "+НГРСФЛ2+НГРСФЛСсылка2);
Если РезультатЗапроса.Ссылка3<>null тогда
НГРСФЛ3=РезультатЗапроса.Ссылка3.Description;
НГРСФЛСсылка3=РезультатЗапроса.Ссылка3;
иначе прервать
КонецЕсли;
Сообщить("группа3 "+НГРСФЛ3+НГРСФЛСсылка3);
Если РезультатЗапроса.Ссылка4<>null тогда
НГРСФЛ4=РезультатЗапроса.Ссылка4.Description;
НГРСФЛСсылка4=РезультатЗапроса.Ссылка4;
иначе прервать
КонецЕсли;
Сообщить("группа4 "+НГРСФЛ4+НГРСФЛСсылка3);
КонецЦикла;
//////Проверка на существование групп
ЭтотОбъект.Записать();
ГруппаТут=Справочники.Контрагенты.НайтиПоНаименованию(НГРСФЛ1);
Если ЗначениеЗаполнено(ГруппаТут) и ГруппаТут.ЭтоГруппа=Истина тогда
ЭтотОбъект.Родитель=НГРСФЛСсылка1;
иначе
НоваяГруппа = Справочники.Контрагенты.СоздатьГруппу();
НоваяГруппа.Наименование = НГРСФЛ1;
НоваяГруппа.Записать();
КонецЕсли;
88. m-serg74 46 23.05.13 15:01 Сейчас в теме
(87) mentozavr,
ГруппаТут=Справочники.Контрагенты.НайтиПоНаименованию(НГРСФЛ1);
Если ЗначениеЗаполнено(ГруппаТут) и ГруппаТут.ЭтоГруппа=Истина тогда
ЭтотОбъект.Родитель=НГРСФЛСсылка1;
иначе
НоваяГруппа = Справочники.Контрагенты.СоздатьГруппу();
НоваяГруппа.Наименование = НГРСФЛ1;
НоваяГруппа.Записать();
КонецЕсли;
Показать

т.е. если не нашел то Группу создаем но подставлять в Родитель ее не надо???
а потом будем из Родителя получать объект, которого тама нету(((
89. mentozavr 71 23.05.13 15:05 Сейчас в теме
(88) m-serg74,
ЭтотОбъект.Записать();
ГруппаТут=Справочники.Контрагенты.НайтиПоНаименованию(НГРСФЛ1);
Если ЗначениеЗаполнено(ГруппаТут) и ГруппаТут.ЭтоГруппа=Истина тогда
ЭтотОбъект.Родитель=ГруппаТут;
иначе
НоваяГруппа = Справочники.Контрагенты.СоздатьГруппу();
НоваяГруппа.Наименование = НГРСФЛ1;
НоваяГруппа.Записать();
КонецЕсли;
90. m-serg74 46 23.05.13 15:09 Сейчас в теме
(89) mentozavr, и чЁ?

вот почему не сделать так как я уже писал...

ЭтотОбъект.Записать();
ГруппаТут=Справочники.Контрагенты.НайтиПоНаименованию(НГРСФЛ1);
Если НЕ ЗначениеЗаполнено(ГруппаТут) или НЕ ГруппаТут.ЭтоГруппа тогда
ГруппаТут= Справочники.Контрагенты.СоздатьГруппу();
ГруппаТут.Наименование = НГРСФЛ1;
ГруппаТут.Записать();
КонецЕсли; 
ЭтотОбъект.Родитель=ГруппаТут.Ссылка;
Показать
93. mentozavr 71 23.05.13 15:13 Сейчас в теме
(90) m-serg74,сделал. тоже что и у меня только кварх ногами
94. m-serg74 46 23.05.13 15:17 Сейчас в теме
(93) mentozavr, у тебя НОваяГруппа создавалась, записывалась но в Родитель не подставлялась, кстати а в конце всех этих маневров ты ЭтотОбъект то записываешь?

ГруппаТут=Справочники.Контрагенты.НайтиПоНаименованию(НГРСФЛ1);
Если НЕ ЗначениеЗаполнено(ГруппаТут) или НЕ ГруппаТут.ЭтоГруппа тогда
ГруппаТут= Справочники.Контрагенты.СоздатьГруппу();
ГруппаТут.Наименование = НГРСФЛ1;
ГруппаТут.Записать();
КонецЕсли;
ЭтотОбъект.Родитель=ГруппаТут.Ссылка;
ЭтотОбъект.Записать();
95. mentozavr 71 23.05.13 15:44 Сейчас в теме
(94) m-serg74, вот вот у меня ЭтотОбъект.Записать(); стоит до присвоения родителя. во вторых не будет ли дублей записи?
2. Ёпрст 1065 22.05.13 15:57 Сейчас в теме
Находит поди элемент, а не группу .. тем более, поиск по наименованию моветон
3. mentozavr 71 22.05.13 15:59 Сейчас в теме
(2) Ёпрст,НГРСФЛ2-название родителя а НГРСФЛ2ссылка - ссылка на родителя
4. Ёпрст 1065 22.05.13 16:30 Сейчас в теме
(3) охотно верю, что найтиПоНаименованию нашло именно родителя, а не элемент, ага..
:)
6. AlexO 135 22.05.13 16:54 Сейчас в теме
(4) Ёпрст,
что найтиПоНаименованию нашло именно родителя, а не элемент, ага

как раз НайтиПоНаименованию справочника возвращает в первую очередь группу (если группа и элемент имеют идентичное название). Ей без разницы, а группа - видимо, ближе расположена к началу записей.
5. AlexO 135 22.05.13 16:52 Сейчас в теме
(2) Ёпрст,
тем более, поиск по наименованию моветон

а какой поиск - не моветон?
7. juntatalor 63 22.05.13 17:01 Сейчас в теме
А зачем этот запрос? Есть же функция СправочникОбъект.ПолныйКод(). Она вернет строку, в которой коды буду разделены "/". Распарсите строку, найдите по коду нужные элементы и делайте что нужно.
8. mentozavr 71 22.05.13 20:59 Сейчас в теме
(7) juntatalor, спасибо конечно. а можно по подробнее про это, честно не разу не встречался
14. Программист 1С 158 23.05.13 08:25 Сейчас в теме
(7) Используйте функцию (не путайте со свойством!) СправочникСсылка.ПолноеНаименование()
15. mentozavr 71 23.05.13 08:49 Сейчас в теме
(14) Программист 1С, в смысле? что-то не понял?
16. Программист 1С 158 23.05.13 09:01 Сейчас в теме
(15) Посмотрите справку по этой функции. С её помощью Ваша задача решается просто и быстро.
17. mentozavr 71 23.05.13 09:22 Сейчас в теме
(16) Программист 1С, да спасибо конечно пригодиться но помоему не в моем случае. Я же в начале задачу описал. Просто столько методов прогнал уже планка едет. название родителей я вынимаю родителя верхнего создаю. а дальше ступор созадь родителей ниже первой не получается т.е. элемент 1 находится в групее 2 и подгруппе 3 т.е родителями являются группа2 и группа3. группу2 я создаю и присваиваю. а группу4 и далее никак
9. smaharbA 22.05.13 21:01 Сейчас в теме
Рупора Абсурда на вас нет
Функция Верхний(Элемент)
	Спр = Справочники[Элемент.Метаданные().Имя];
	Эл=Спр.НайтиПоКоду(Элемент.ПолныйКод());
	Если Элемент.ПринадлежитЭлементу(Эл) Тогда
		Возврат Спр.НайтиПоКоду(Эл).Ссылка;
	КонецЕсли;
	Возврат Вычислить("Элемент"+СтрЗаменить(Формат(0,"ЧВН=;ЧЦ="+(Элемент.Уровень())+";ЧГ=0;ЧН="),"0",".Родитель")).Ссылка;
	Стр = СтрЗаменить(Элемент.ПолныйКод(),"/","" "");
	Структура = Новый Структура;
	Структура.Вставить("Код",СтрПолучитьСтроку(Стр,1));
	Для Сч=1 По СтрЧислоСтрок(Стр) Цикл
		Выборка = Спр.Выбрать(Спр.ПустаяСсылка(),,Структура);
		Сообщить(Структура.Код);
		Пока Выборка.Следующий() Цикл
			Если Элемент.ПринадлежитЭлементу(Выборка.Ссылка) Тогда
				Возврат Выборка.Ссылка;
			КонецЕсли;
		КонецЦикла;
		Структура.Код = Структура.Код + "/" + СтрПолучитьСтроку(Стр,Сч+1);
	КонецЦикла;
КонецФункции
Показать
10. mentozavr 71 22.05.13 21:28 Сейчас в теме
(9) smaharbA, согласен с вами но честно 10 лет не программировал. я,извиняюсь, как понял мой код можно выкинуть а этот вставить? от получает и пишет всех родичей?
13. mentozavr 71 23.05.13 08:13 Сейчас в теме
(9) smaharbA, выдает Ошибка при вызове метода контекста (ПринадлежитЭлементу)
Справочник.Контрагенты.Форма.ФормаЭлемента.Форма(1306)}: Ошибка при вызове метода контекста (ПринадлежитЭлементу)
Если СФЛЦБ.ПринадлежитЭлементу(Эл) Тогда
по причине:
Произошла исключительная ситуация (1C:Enterprise 8.2.18.61): Несоответствие типов (параметр номер '1')
11. smaharbA 22.05.13 22:12 Сейчас в теме
12. mentozavr 71 22.05.13 23:50 Сейчас в теме
(11) smaharbA, боюсь спросить на что? я примерно понимаю но блин нескольео вариантов перепробовал: по одному вообще не пишет, по второму пишет перврго родителя потом при записи 2 родителя 1-ого спускает на ступень вниз. что не так не пойму. как записать 2 родителя тоже..
18. Ёпрст 1065 23.05.13 09:23 Сейчас в теме
Короче, НайтиПоНаименованию - моветон, ибо
1.Могут быть дубли по наименованию
2.Могут быть и элементы и группы с одинаковым наименованием

Если уж так хочется - используй хотя бы Код (если он уникален у тебя), а лучше - гуид элемента.
20. mentozavr 71 23.05.13 09:26 Сейчас в теме
(18) Ёпрст, код да уникален. так я ерархию запросом и тащу
21. Ёпрст 1065 23.05.13 09:59 Сейчас в теме
(20) наименование не уникально, вот в чем дело, ты же нигде не проверяешь, что именно найдено по наименованию.
:)
22. mentozavr 71 23.05.13 10:06 Сейчас в теме
(21) Ёпрст, счас как раз и пишу условие проверки на группа, полученная по ком и группа в текущей базе
19. Ёпрст 1065 23.05.13 09:23 Сейчас в теме
Ну и .. используй рекурсию для создания иерархии.
30. Ёпрст 1065 23.05.13 10:39 Сейчас в теме
Это, а нафига устанавливать родителя в открытой форме ????
31. Ёпрст 1065 23.05.13 10:40 Сейчас в теме
И этой же форме ?
Этот код вообще откуда вызывается ?
32. mentozavr 71 23.05.13 10:41 Сейчас в теме
(31) Ёпрст, форма элемента. наименование в нее получается из базы2 по ком
33. m-serg74 46 23.05.13 10:43 Сейчас в теме
(32) mentozavr,
Если Справочники.Контрагенты.НайтиПоНаименованию(НГРСФЛ1).Пустая() тогда
НоваяГруппа = Справочники.Контрагенты.СоздатьГруппу();
НоваяГруппа.Наименование = НГРСФЛ1;
НоваяГруппа.Записать();
ЭтаФорма.родитель=Справочники.Контрагенты.НайтиПоНаименованию(НГРСФЛ1).Ссылка
иначе
ЭтаФорма.родитель=Справочники.Контрагенты.НайтиПоНаименованию(НГРСФЛ1).Ссылка;
КонецЕсли; 
Показать

ЭтаФорма.родитель - это что вообще???
34. mentozavr 71 23.05.13 10:51 Сейчас в теме
(33) m-serg74, Распишу задачку может проще будет понять. Есль 2 базы база1(полная) и база2(пустая). Из формы элемента базы2 по кнопке вызывается обработка (моя) которая получает элемент по критерию поиска(он указывается в поле наименование (может полное а может 3 буквы от него). Обработка находит в базе1 элемент и передает его в базу2. Потом подтягиваются данные из регистров. И вот теперь что: Этот элемент лежит в базе1 в определенной группе и подгруппе и мне надо чтобы в базе2 он сел также как и в базе1.
35. m-serg74 46 23.05.13 11:05 Сейчас в теме
(34) mentozavr,
так пиши
ЭтотОбъект.Родитель = .....

нафига ЭтаФорма нужна
36. mentozavr 71 23.05.13 11:07 Сейчас в теме
(35) m-serg74, так я и пишу а на остальных родителей как перейти? у элемента их может быть 2 и более
37. m-serg74 46 23.05.13 11:09 Сейчас в теме
(36) mentozavr, первый так а остальные:
ЭтотОбъект.Родитель = .....;

ОбРодитель = ЭтотОбъект.Родитель.ПолучитьОбъект();
ОбРодитель.Родитель = ...тра-ля-ля;
ОбРодитель.Записать();


потом

ОбРодитель = ЭтотОбъект.Родитель.Родитель.ПолучитьОбъект();
ОбРодитель.Родитель = ...тра-ля-ля;
ОбРодитель.Записать();


и т.д.

просто я не вдаваясь в подробности "ЭтаФорма" писал...
38. mentozavr 71 23.05.13 11:15 Сейчас в теме
(37) m-serg74, матюгается на
род2=ЭтотОбъект.Родитель.Родитель.ПолучитьОбъект();
по причине:
Элемент не выбран!
40. m-serg74 46 23.05.13 11:17 Сейчас в теме
(38) mentozavr, так а заполнен Родитель второго уровня?

ПС. Отладчик вообще не тема? посмотри что заполнено и какой тип?
41. mentozavr 71 23.05.13 11:18 Сейчас в теме
(40) m-serg74, я начал с верхнего. Т.е. без записи она работать не будет т.е набрать в объект все элементы потом записать
42. m-serg74 46 23.05.13 11:18 Сейчас в теме
(41) mentozavr, как это???? внимательно (37) посмотри... именно такая последовательность
44. mentozavr 71 23.05.13 11:20 Сейчас в теме
(42) m-serg74, типа того
РезультатЗапроса = Запрос.Выполнить().Выбрать();
Пока РезультатЗапроса.Следующий() Цикл
НГРСФЛ1=РезультатЗапроса.Ссылка1.Description;
НГРСФЛСсылка1=РезультатЗапроса.Ссылка1;
Сообщить("группа1 "+НГРСФЛ1+НГРСФЛСсылка1);
Если РезультатЗапроса.Ссылка2<>null тогда
НГРСФЛ2=РезультатЗапроса.Ссылка2.Description;
НГРСФЛСсылка2=РезультатЗапроса.Ссылка2;
иначе прервать
КонецЕсли;
Сообщить("группа2 "+НГРСФЛ2+НГРСФЛСсылка2);
Если РезультатЗапроса.Ссылка3<>null тогда
НГРСФЛ3=РезультатЗапроса.Ссылка3.Description;
НГРСФЛСсылка3=РезультатЗапроса.Ссылка3;
иначе прервать
КонецЕсли;
Сообщить("группа3 "+НГРСФЛ3+НГРСФЛСсылка3);
Если РезультатЗапроса.Ссылка4<>null тогда
НГРСФЛ4=РезультатЗапроса.Ссылка4.Description;
НГРСФЛСсылка4=РезультатЗапроса.Ссылка4;
иначе прервать
КонецЕсли;
Сообщить("группа4 "+НГРСФЛ4+НГРСФЛСсылка3);
КонецЦикла;
//////Проверка на существование групп
ЭтотОбъект.Родитель=НГРСФЛСсылка1;
род2=ЭтотОбъект.Родитель.Родитель.ПолучитьОбъект();
род2.Родитель.Родитель=НГРСФЛСсылка2;
род2.Записать();
47. m-serg74 46 23.05.13 11:22 Сейчас в теме
(44) mentozavr, это вопрос или что?
50. mentozavr 71 23.05.13 11:23 Сейчас в теме
(47) m-serg74, кусок кода где пишутся группы. Т.е. как я тебя понял надо сначало с последней группы записываться и вверх.
49. m-serg74 46 23.05.13 11:23 Сейчас в теме
(44) mentozavr,
ЭтотОбъект.Родитель=НГРСФЛСсылка1;
род2=ЭтотОбъект.Родитель.Родитель.ПолучитьОбъект();
род2.Родитель.Родитель=НГРСФЛСсылка2;
род2.Записать(); 


красное убарть
52. mentozavr 71 23.05.13 11:25 Сейчас в теме
(49) m-serg74, т.е. оставить род2=ЭтотОбъект.Родитель чтоль;
53. mentozavr 71 23.05.13 11:27 Сейчас в теме
(49) m-serg74, похоже начал въезжать. у меня НГРСФЛСсылка1 приходит как Ком-объект может в это проблема
39. m-serg74 46 23.05.13 11:16 Сейчас в теме
+ (37) m-serg74, сам ЭтотОбъект - Записать не забудь...
54. AnryMc 848 23.05.13 11:27 Сейчас в теме
(37) m-serg74, (38) mentozavr,

Пока ТекущийОбъект.Родитель<>Справочники.ХХХ.ПустаяСсылка() Цикл
ТекущийОбъект=ТекущийОбъект.Родитель.ПолучитьОбъект()
55. m-serg74 46 23.05.13 11:30 Сейчас в теме
(54) AnryMc, с чего он будет неопределено - он будет незаполненным, а ему надо заполнить...

(50) mentozavr, сначала Родитель элемента, потом Родитель Родителя элемента и т.д.
56. mentozavr 71 23.05.13 11:38 Сейчас в теме
(55) m-serg74, тоесть есть структура
Группа1
--Группа2
---Группа3 - в ней элемент.
Значит сначала надо записать группу3 потом группу2 и в конце группа1 так?
72. AnryMc 848 23.05.13 13:30 Сейчас в теме
(55) m-serg74,

с чего он будет неопределено - он будет незаполненным, а ему надо заполнить...


Он будет пустая ссылка...
73. mentozavr 71 23.05.13 13:32 Сейчас в теме
(72) AnryMc, а можно по подробнее
75. m-serg74 46 23.05.13 13:37 Сейчас в теме
(73) mentozavr, да что ты слушаешь... пишут лишь бы что нить написать
76. mentozavr 71 23.05.13 13:40 Сейчас в теме
(75) m-serg74, да понял я теперь
77. mentozavr 71 23.05.13 13:41 Сейчас в теме
(75) m-serg74, а можно присвоить родителей и не записывать объект. что-то базу засорять экспериментами не охота
78. m-serg74 46 23.05.13 13:45 Сейчас в теме
(77) mentozavr, если это эсперимент - сделай копию
79. mentozavr 71 23.05.13 13:49 Сейчас в теме
(78) m-serg74, этот эксперимент потом внедрится в реальную базу должен будет. А так dt-шек вагон
80. m-serg74 46 23.05.13 13:50 Сейчас в теме
(79) mentozavr, ну и пробуй на копии, когда заработает правильно вкрячишь в рабочую... и все
81. mentozavr 71 23.05.13 13:52 Сейчас в теме
(80) m-serg74, так и делаю. задолбался базу переустанавливать
82. mentozavr 71 23.05.13 14:01 Сейчас в теме
(80) m-serg74, файлик
Прикрепленные файлы:
74. m-serg74 46 23.05.13 13:36 Сейчас в теме
(72) AnryMc, это ты сказал неопределено, а я сказал "не заполненным", т.е. как раз именно - ПустаяСсылка

только ТСу надо отталкиваться не от заполненности Родителя, а от наличия оных в СОМ базе
57. mentozavr 71 23.05.13 11:39 Сейчас в теме
(54) AnryMc, (55) m-serg74, и господа блин у меня объект приходит по ком
58. m-serg74 46 23.05.13 11:44 Сейчас в теме
(57) mentozavr, да по барабану как он у тебя ходит из СОМ объекта бери Наименование или Код или еще чего там и по нему ищи в своей базе если не нашел создавай с нужными реквизитами, записывай и подставляй ее.
(56) mentozavr, внимательно прочитай (55.2) там понятно вроде все написано
59. mentozavr 71 23.05.13 11:49 Сейчас в теме
(58) m-serg74, тоесть с последней группы в цикле прогнать условие через поиск по коду или наименованию
60. m-serg74 46 23.05.13 11:55 Сейчас в теме
(59) mentozavr, я не знаю что ты имеешь ввиду "первая", "последняя"....
сначала ЭтотОбъект.Родитель
потом ЭтотОбъект.Родитель.Родитель
потом ЭтотОбъект.Родитель.Родитель.Родитель
и ни как иначе
61. mentozavr 71 23.05.13 11:57 Сейчас в теме
(60) m-serg74,
так блин
сначала ЭтотОбъект.Родитель - его я пишу

"потом ЭтотОбъект.Родитель.Родитель
потом ЭтотОбъект.Родитель.Родитель.Родитель" - а эти никак. поле Родитель недоступно для записи и хоть ты тресни
66. viktor_vv 23.05.13 12:46 Сейчас в теме
(61) Так тут ты опять пытаешься через ссылку писать

"потом ЭтотОбъект.Родитель.Родитель
потом ЭтотОбъект.Родитель.Родитель.Родитель"

здесь опять надо объект получать

ОбъектВерхнегоРодителя = ЭтотОбъект.Родитель.ПолучитьОбъект();
ОбъектВерхнегоРодителя.Родитель = ЧтоТам ;

ОбъектБолееВерхнегоРодителя = ОбъектВерхнегоРодителя.Родитель.ПолучитьОбъект();
ОбъектБолееВерхнегоРодителя.Родитель = ЕщеЧтОтам ;

и .т д. Ну и засунь это в рекусрию.
mart-sha; +1 Ответить
67. viktor_vv 23.05.13 12:47 Сейчас в теме
69. mentozavr 71 23.05.13 13:17 Сейчас в теме
(67) viktor_vv, спасибо. а записывать надо после каждого присвоения получается и пред тем как сам объект тоже записать надоть.
У нас же родитель самого верхнего уровня находится в отладчике как Объект.+родитель.+Родитель(он и есть?)
62. mentozavr 71 23.05.13 11:57 Сейчас в теме
(60) m-serg74, А объект получается должен быть записан? а если я пишу его он пишется в корневую группу
63. m-serg74 46 23.05.13 11:59 Сейчас в теме
(62) mentozavr, в каком именно месте? Тим Вьюер есть?
64. mentozavr 71 23.05.13 12:01 Сейчас в теме
(63) m-serg74, у нас в сетке он закрыт
в месте после присвоения ЭтотОбъект.Родитель
65. m-serg74 46 23.05.13 12:03 Сейчас в теме
(64) mentozavr, кого то мне напоминаете как ТВ можно закрыть но на Инфостарте сидеть? или я чего то не шарю?
68. mentozavr 71 23.05.13 13:11 Сейчас в теме
(65) m-serg74, у нас блокировки сисадмином наставлены на ТВ он его презирает. я даже установить его не могу. Сисадмин больно ушлый у нас
70. m-serg74 46 23.05.13 13:19 Сейчас в теме
(68) mentozavr, ТВ сейчас без установки работает если чё... есть ammyy.com...
71. mentozavr 71 23.05.13 13:22 Сейчас в теме
(70) m-serg74, пробовал блин. самому надо связь с домом держать. даже не запускается. сисадмин жлоб.
птичка есть такая - обломинго
HOST - ammyy.com[70.38.40.185]; PORT - 80
Connection timed out
Traffic Inspector HTTP/FTP/Proxy server (2.0.1.729)
GW12 23.05.13 13:23
43. Ёпрст 1065 23.05.13 11:19 Сейчас в теме
А занафига всё ЭТО писать в форме элемента ?
Заняться нечем ?
Не проще ли в обработке слепить что нужно сразу ?
45. mentozavr 71 23.05.13 11:20 Сейчас в теме
(43) Ёпрст, т.е. полностью объект состряпать? заняться то есть с чем только сверху напрягают этим
46. m-serg74 46 23.05.13 11:20 Сейчас в теме
(43) Ёпрст, в обработке выбирать элемент, а потом для него делать теже действия, если это не массовая перегрузка нафига обработка?
48. Ёпрст 1065 23.05.13 11:23 Сейчас в теме
Ладно, моя-твоя непонимать, кипятите дальше.
:)
51. mentozavr 71 23.05.13 11:24 Сейчас в теме
(48) Ёпрст, да все понимать
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот