1c7.7 добавление новой записи в определенную группу

  • Автор темы Автор темы KiR
  • Дата начала Дата начала
K

KiR

Ситуация такая: есть несколько баз. в различных базах код группы разный, название может совпадать. Мне нужно добавлять новые элементы, но в определенную группу.

Код:
Эмитент = СоздатьОбъект("Справочник.Контрагенты");
Эмитент.НайтиПоНаименованию("Эмитенты"); 
Родитель = Эмитент.ТекущийЭлемент();
Эмитент.Новый();
Эмитент.Родитель = Родитель;  
Эмитент.Наименование = recordset.fields("SHORTNAME").value;
Эмитент.Записать();
Вываливается ошибка, ибо новый код присвоился неправильно - в группе уже есть такой код (Серии кодов в пределах подчинения)
Эмитент.Записать();
{V:\ЗАГРУЗКА ЦБ(ПИФЫ).ERT(43)}: Код не уникальный!
 
Вопрос снимается! можно закрывать тему. Разобрался так:
Эмитент = СоздатьОбъект("Справочник.Контрагенты");
Эмитент.НайтиПоНаименованию("Эмитенты");
Родитель = Эмитент.ТекущийЭлемент();
Эмитент.ИспользоватьРодителя(Родитель);
Эмитент.Новый();
Эмитент.Наименование = recordset.fields("SHORTNAME").value;Эмитент.Записать();
 
И что, даже не интересует, почему вываливалась ошибка?
 
таки понятно ж, почему...
 
ну а вдруг?!
 
Про какое пиво?
 
Че-та я тоже не понял причем тут пиво....
Про ошибку в принцыпе интересно ибо строю догадки о том, что изначально он создает новый элемент в корне и соответственно присваивает ему новый код, следующий за последним в корне... но могу и ошибаться. Посему кому не влом - буду благодарен за объяснение
 
Ага -создает новый элемент в корне, задает ему код исходя из корня, а потом его в другую группу - а там такой код уже есть! вот и матюги. Можно было после родителя написать
эмитент.УстановитьНовыйКод(); // тоже должно прокатить.
 
а ИспользоватьРодителя(<Родитель>,<ФлагИзменения>) непрокатывает?????
 
Прокатывает - он-же выше написал. Так даже проще. ;-)
 
туплю
 
puh14, спасибо большое! Буду знать теперь. Но получается не зная как правильно сделать - путем проб нашел таки самый оптимальный вариант!) а все потому что никто не ответил на топик вовремя))
 
И опыт - сын ошибок трудных, и гений - парадоксов друг. (с) АС Пушкин
 
Вылезла новая проблемка с кодом. Один элемент теперь он создает в нужной группе, а второй в корне. Прямо как на первый/второй расчитайсь.... блин. Кто может объяснить феномен и подсказать чем он вызван и как исправить?
 
попробуй так (справочник "Контрагенты" в двух ипостасях):
Эмитент = СоздатьОбъект("Справочник.Контрагенты");
Эмитенты = СоздатьОбъект("Справочник.Контрагенты");
Эмитенты.НайтиПоНаименованию("Эмитенты");

Родитель = Эмитенты.ТекущийЭлемент();
Эмитент.ИспользоватьРодителя(Родитель);
Эмитент.Новый();
Эмитент.Наименование = recordset.fields("SHORTNAME").value;
Эмитент.Записать();

или еще такой вариант :
Эмитент.Новый();
Эмитент.Родитель = Родитель;
т.е. создать сначала элемент, а потом ему родителя назначить
А то посмотри функцию, которая примерно те же действия выполняет - вдруг поможет ?
Посмотреть вложение add.txt
 
vbs, спасибо. у мя был цыкл и поиск тоже я в этом цикле делал. зачем - сам не знаю даже. кароч из цыкла выбросил и ща вроде заработало
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

🚀 Первый раз на Codeby?
Гайд для новичков: что делать в первые 15 минут, ключевые разделы, правила
Начать здесь →
🔴 Свежие CVE, 0-day и инциденты
То, о чём ChatGPT ещё не знает — обсуждаем в реальном времени
Threat Intel →
💼 Вакансии и заказы в ИБ
Pentest, SOC, DevSecOps, bug bounty — работа и проекты от проверенных компаний
Карьера в ИБ →

HackerLab