Уважаемые имеется такая часть кода. Через запрос получаются все родители элемента (СФЛЦБ)из базы по ком соединению.
Запрос = глСоединениеСЦБ.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).Ссылка
КонецЕсли;
Но почему-то записать всех родителей я не могу хотя получаю. в частности выводит родитель не доступен для записи. Выручайте дорогие мои
Запрос = глСоединениеСЦБ.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).Ссылка
КонецЕсли;
Но почему-то записать всех родителей я не могу хотя получаю. в частности выводит родитель не доступен для записи. Выручайте дорогие мои
По теме из базы знаний
Найденные решения
(61) Так тут ты опять пытаешься через ссылку писать
"потом ЭтотОбъект.Родитель.Родитель
потом ЭтотОбъект.Родитель.Родитель.Родитель"
здесь опять надо объект получать
ОбъектВерхнегоРодителя = ЭтотОбъект.Родитель.ПолучитьОбъект();
ОбъектВерхнегоРодителя.Родитель = ЧтоТам ;
ОбъектБолееВерхнегоРодителя = ОбъектВерхнегоРодителя.Родитель.ПолучитьОбъект();
ОбъектБолееВерхнегоРодителя.Родитель = ЕщеЧтОтам ;
и .т д. Ну и засунь это в рекусрию.
"потом ЭтотОбъект.Родитель.Родитель
потом ЭтотОбъект.Родитель.Родитель.Родитель"
здесь опять надо объект получать
ОбъектВерхнегоРодителя = ЭтотОбъект.Родитель.ПолучитьОбъект();
ОбъектВерхнегоРодителя.Родитель = ЧтоТам ;
ОбъектБолееВерхнегоРодителя = ОбъектВерхнегоРодителя.Родитель.ПолучитьОбъект();
ОбъектБолееВерхнегоРодителя.Родитель = ЕщеЧтОтам ;
и .т д. Ну и засунь это в рекусрию.
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) Проходя мимо решил "стукнуть" по клавишам:
А отсюде ещё не заходили?
СправочникОбъект.<Имя справочника> (CatalogObject.<Имя справочника>)
ПолныйКод (FullCode)
Синтаксис:
ПолныйКод()
Возвращаемое значение:
Тип: Строка.
Строка, включающая код элемента и коды всех вышестоящих элементов.
Коды выводятся слева направо, начиная с самого верхнего уровня, разделяются символом "/".
Описание:
Получает код элемента справочника с учетом кодов всех вышестоящих элементов.
Доступность:
Сервер, толстый клиент, внешнее соединение.
Пример:
Сообщить("Полный код данного элемента: " +
Объект.ПолныйКод());
ПоказатьА отсюде ещё не заходили?
(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;
НоваяГруппа.Записать();
КонецЕсли;
Процедура НСИ_ЦБНажатие(Элемент) экспорт
Если ЭлементыФормы.Наименование.Значение="" Тогда возврат
//
КонецЕсли;
ВнешниеОбработкиСправочник=Справочники.ВнешниеОбработки;
Выборка=ВнешниеОбработкиСправочник.НайтиПоНаименованию("Поиск контрагентов");
Имя="Поиск контрагентов";
Расширение=".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;
НоваяГруппа.Записать();
КонецЕсли;
(87) mentozavr,
т.е. если не нашел то Группу создаем но подставлять в Родитель ее не надо???
а потом будем из Родителя получать объект, которого тама нету(((
ГруппаТут=Справочники.Контрагенты.НайтиПоНаименованию(НГРСФЛ1);
Если ЗначениеЗаполнено(ГруппаТут) и ГруппаТут.ЭтоГруппа=Истина тогда
ЭтотОбъект.Родитель=НГРСФЛСсылка1;
иначе
НоваяГруппа = Справочники.Контрагенты.СоздатьГруппу();
НоваяГруппа.Наименование = НГРСФЛ1;
НоваяГруппа.Записать();
КонецЕсли;
Показатьт.е. если не нашел то Группу создаем но подставлять в Родитель ее не надо???
а потом будем из Родителя получать объект, которого тама нету(((
(88) m-serg74,
ЭтотОбъект.Записать();
ГруппаТут=Справочники.Контрагенты.НайтиПоНаименованию(НГРСФЛ1);
Если ЗначениеЗаполнено(ГруппаТут) и ГруппаТут.ЭтоГруппа=Истина тогда
ЭтотОбъект.Родитель=ГруппаТут;
иначе
НоваяГруппа = Справочники.Контрагенты.СоздатьГруппу();
НоваяГруппа.Наименование = НГРСФЛ1;
НоваяГруппа.Записать();
КонецЕсли;
ЭтотОбъект.Записать();
ГруппаТут=Справочники.Контрагенты.НайтиПоНаименованию(НГРСФЛ1);
Если ЗначениеЗаполнено(ГруппаТут) и ГруппаТут.ЭтоГруппа=Истина тогда
ЭтотОбъект.Родитель=ГруппаТут;
иначе
НоваяГруппа = Справочники.Контрагенты.СоздатьГруппу();
НоваяГруппа.Наименование = НГРСФЛ1;
НоваяГруппа.Записать();
КонецЕсли;
(89) mentozavr, и чЁ?
вот почему не сделать так как я уже писал...
вот почему не сделать так как я уже писал...
ЭтотОбъект.Записать();
ГруппаТут=Справочники.Контрагенты.НайтиПоНаименованию(НГРСФЛ1);
Если НЕ ЗначениеЗаполнено(ГруппаТут) или НЕ ГруппаТут.ЭтоГруппа тогда
ГруппаТут= Справочники.Контрагенты.СоздатьГруппу();
ГруппаТут.Наименование = НГРСФЛ1;
ГруппаТут.Записать();
КонецЕсли;
ЭтотОбъект.Родитель=ГруппаТут.Ссылка;
Показать
(93) mentozavr, у тебя НОваяГруппа создавалась, записывалась но в Родитель не подставлялась, кстати а в конце всех этих маневров ты ЭтотОбъект то записываешь?
ГруппаТут=Справочники.Контрагенты.НайтиПоНаименованию(НГРСФЛ1);
Если НЕ ЗначениеЗаполнено(ГруппаТут) или НЕ ГруппаТут.ЭтоГруппа тогда
ГруппаТут= Справочники.Контрагенты.СоздатьГруппу();
ГруппаТут.Наименование = НГРСФЛ1;
ГруппаТут.Записать();
КонецЕсли;
ЭтотОбъект.Родитель=ГруппаТут.Ссылка;
ЭтотОбъект.Записать();
ГруппаТут=Справочники.Контрагенты.НайтиПоНаименованию(НГРСФЛ1);
Если НЕ ЗначениеЗаполнено(ГруппаТут) или НЕ ГруппаТут.ЭтоГруппа тогда
ГруппаТут= Справочники.Контрагенты.СоздатьГруппу();
ГруппаТут.Наименование = НГРСФЛ1;
ГруппаТут.Записать();
КонецЕсли;
ЭтотОбъект.Родитель=ГруппаТут.Ссылка;
ЭтотОбъект.Записать();
(4) Ёпрст,
как раз НайтиПоНаименованию справочника возвращает в первую очередь группу (если группа и элемент имеют идентичное название). Ей без разницы, а группа - видимо, ближе расположена к началу записей.
что найтиПоНаименованию нашло именно родителя, а не элемент, ага
как раз НайтиПоНаименованию справочника возвращает в первую очередь группу (если группа и элемент имеют идентичное название). Ей без разницы, а группа - видимо, ближе расположена к началу записей.
(16) Программист 1С, да спасибо конечно пригодиться но помоему не в моем случае. Я же в начале задачу описал. Просто столько методов прогнал уже планка едет. название родителей я вынимаю родителя верхнего создаю. а дальше ступор созадь родителей ниже первой не получается т.е. элемент 1 находится в групее 2 и подгруппе 3 т.е родителями являются группа2 и группа3. группу2 я создаю и присваиваю. а группу4 и далее никак
Рупора Абсурда на вас нет
Функция Верхний(Элемент)
Спр = Справочники[Элемент.Метаданные().Имя];
Эл=Спр.НайтиПоКоду(Элемент.ПолныйКод());
Если Элемент.ПринадлежитЭлементу(Эл) Тогда
Возврат Спр.НайтиПоКоду(Эл).Ссылка;
КонецЕсли;
Возврат Вычислить("Элемент"+СтрЗаменить(Формат(0,"ЧВН=;ЧЦ="+(Элемент.Уровень())+";ЧГ=0;ЧН="),"0",".Родитель")).Ссылка;
Стр = СтрЗаменить(Элемент.ПолныйКод(),"/","" "");
Структура = Новый Структура;
Структура.Вставить("Код",СтрПолучитьСтроку(Стр,1));
Для Сч=1 По СтрЧислоСтрок(Стр) Цикл
Выборка = Спр.Выбрать(Спр.ПустаяСсылка(),,Структура);
Сообщить(Структура.Код);
Пока Выборка.Следующий() Цикл
Если Элемент.ПринадлежитЭлементу(Выборка.Ссылка) Тогда
Возврат Выборка.Ссылка;
КонецЕсли;
КонецЦикла;
Структура.Код = Структура.Код + "/" + СтрПолучитьСтроку(Стр,Сч+1);
КонецЦикла;
КонецФункции
Показать
(9) smaharbA, выдает Ошибка при вызове метода контекста (ПринадлежитЭлементу)
Справочник.Контрагенты.Форма.ФормаЭлемента.Форма(1306)}: Ошибка при вызове метода контекста (ПринадлежитЭлементу)
Если СФЛЦБ.ПринадлежитЭлементу(Эл) Тогда
по причине:
Произошла исключительная ситуация (1C:Enterprise 8.2.18.61): Несоответствие типов (параметр номер '1')
Справочник.Контрагенты.Форма.ФормаЭлемента.Форма(1306)}: Ошибка при вызове метода контекста (ПринадлежитЭлементу)
Если СФЛЦБ.ПринадлежитЭлементу(Эл) Тогда
по причине:
Произошла исключительная ситуация (1C:Enterprise 8.2.18.61): Несоответствие типов (параметр номер '1')
(11) smaharbA, боюсь спросить на что? я примерно понимаю но блин нескольео вариантов перепробовал: по одному вообще не пишет, по второму пишет перврго родителя потом при записи 2 родителя 1-ого спускает на ступень вниз. что не так не пойму. как записать 2 родителя тоже..
Короче, НайтиПоНаименованию - моветон, ибо
1.Могут быть дубли по наименованию
2.Могут быть и элементы и группы с одинаковым наименованием
Если уж так хочется - используй хотя бы Код (если он уникален у тебя), а лучше - гуид элемента.
1.Могут быть дубли по наименованию
2.Могут быть и элементы и группы с одинаковым наименованием
Если уж так хочется - используй хотя бы Код (если он уникален у тебя), а лучше - гуид элемента.
(32) mentozavr,
ЭтаФорма.родитель - это что вообще???
Если Справочники.Контрагенты.НайтиПоНаименованию(НГРСФЛ1).Пустая() тогда
НоваяГруппа = Справочники.Контрагенты.СоздатьГруппу();
НоваяГруппа.Наименование = НГРСФЛ1;
НоваяГруппа.Записать();
ЭтаФорма.родитель=Справочники.Контрагенты.НайтиПоНаименованию(НГРСФЛ1).Ссылка
иначе
ЭтаФорма.родитель=Справочники.Контрагенты.НайтиПоНаименованию(НГРСФЛ1).Ссылка;
КонецЕсли;
ПоказатьЭтаФорма.родитель - это что вообще???
(33) m-serg74, Распишу задачку может проще будет понять. Есль 2 базы база1(полная) и база2(пустая). Из формы элемента базы2 по кнопке вызывается обработка (моя) которая получает элемент по критерию поиска(он указывается в поле наименование (может полное а может 3 буквы от него). Обработка находит в базе1 элемент и передает его в базу2. Потом подтягиваются данные из регистров. И вот теперь что: Этот элемент лежит в базе1 в определенной группе и подгруппе и мне надо чтобы в базе2 он сел также как и в базе1.
(36) mentozavr, первый так а остальные:
потом
и т.д.
просто я не вдаваясь в подробности "ЭтаФорма" писал...
ЭтотОбъект.Родитель = .....;
ОбРодитель = ЭтотОбъект.Родитель.ПолучитьОбъект();
ОбРодитель.Родитель = ...тра-ля-ля;
ОбРодитель.Записать();
потом
ОбРодитель = ЭтотОбъект.Родитель.Родитель.ПолучитьОбъект();
ОбРодитель.Родитель = ...тра-ля-ля;
ОбРодитель.Записать();
и т.д.
просто я не вдаваясь в подробности "ЭтаФорма" писал...
(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.Записать();
РезультатЗапроса = Запрос.Выполнить().Выбрать();
Пока РезультатЗапроса.Следующий() Цикл
НГРСФЛ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.Записать();
(61) Так тут ты опять пытаешься через ссылку писать
"потом ЭтотОбъект.Родитель.Родитель
потом ЭтотОбъект.Родитель.Родитель.Родитель"
здесь опять надо объект получать
ОбъектВерхнегоРодителя = ЭтотОбъект.Родитель.ПолучитьОбъект();
ОбъектВерхнегоРодителя.Родитель = ЧтоТам ;
ОбъектБолееВерхнегоРодителя = ОбъектВерхнегоРодителя.Родитель.ПолучитьОбъект();
ОбъектБолееВерхнегоРодителя.Родитель = ЕщеЧтОтам ;
и .т д. Ну и засунь это в рекусрию.
"потом ЭтотОбъект.Родитель.Родитель
потом ЭтотОбъект.Родитель.Родитель.Родитель"
здесь опять надо объект получать
ОбъектВерхнегоРодителя = ЭтотОбъект.Родитель.ПолучитьОбъект();
ОбъектВерхнегоРодителя.Родитель = ЧтоТам ;
ОбъектБолееВерхнегоРодителя = ОбъектВерхнегоРодителя.Родитель.ПолучитьОбъект();
ОбъектБолееВерхнегоРодителя.Родитель = ЕщеЧтОтам ;
и .т д. Ну и засунь это в рекусрию.
(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
птичка есть такая - обломинго
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
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот