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

Тема в разделе "1C и всё что с ней связано", создана пользователем KiR, 27 фев 2009.

  1. KiR

    KiR НЕ шибка опытный програмер)
    1C Team

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

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

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    Вопрос снимается! можно закрывать тему. Разобрался так:
    Эмитент = СоздатьОбъект("Справочник.Контрагенты");
    Эмитент.НайтиПоНаименованию("Эмитенты");
    Родитель = Эмитент.ТекущийЭлемент();
    Эмитент.ИспользоватьРодителя(Родитель);
    Эмитент.Новый();
    Эмитент.Наименование = recordset.fields("SHORTNAME").value;Эмитент.Записать();
     
  3. vitfil

    vitfil IT-интегратор

    Регистрация:
    2 апр 2004
    Сообщения:
    2.070
    Симпатии:
    0
    И что, даже не интересует, почему вываливалась ошибка?
     
  4. vbs

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    таки понятно ж, почему...
     
  5. vitfil

    vitfil IT-интегратор

    Регистрация:
    2 апр 2004
    Сообщения:
    2.070
    Симпатии:
    0
    ну а вдруг?!
     
  6. vbs

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
  7. vitfil

    vitfil IT-интегратор

    Регистрация:
    2 апр 2004
    Сообщения:
    2.070
    Симпатии:
    0
    Про какое пиво?
     
  8. KiR

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    Че-та я тоже не понял причем тут пиво....
    Про ошибку в принцыпе интересно ибо строю догадки о том, что изначально он создает новый элемент в корне и соответственно присваивает ему новый код, следующий за последним в корне... но могу и ошибаться. Посему кому не влом - буду благодарен за объяснение
     
  9. puh14

    puh14 Well-Known Member
    1C Team

    Регистрация:
    11 июл 2008
    Сообщения:
    1.412
    Симпатии:
    0
    Ага -создает новый элемент в корне, задает ему код исходя из корня, а потом его в другую группу - а там такой код уже есть! вот и матюги. Можно было после родителя написать
    эмитент.УстановитьНовыйКод(); // тоже должно прокатить.
     
  10. kaa

    kaa Гость

    а ИспользоватьРодителя(<Родитель>,<ФлагИзменения>) непрокатывает?????
     
  11. puh14

    puh14 Well-Known Member
    1C Team

    Регистрация:
    11 июл 2008
    Сообщения:
    1.412
    Симпатии:
    0
    Прокатывает - он-же выше написал. Так даже проще. ;-)
     
  12. kaa

    kaa Гость

    туплю
     
  13. KiR

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    puh14, спасибо большое! Буду знать теперь. Но получается не зная как правильно сделать - путем проб нашел таки самый оптимальный вариант!) а все потому что никто не ответил на топик вовремя))
     
  14. puh14

    puh14 Well-Known Member
    1C Team

    Регистрация:
    11 июл 2008
    Сообщения:
    1.412
    Симпатии:
    0
    И опыт - сын ошибок трудных, и гений - парадоксов друг. (с) АС Пушкин
     
  15. KiR

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    Вылезла новая проблемка с кодом. Один элемент теперь он создает в нужной группе, а второй в корне. Прямо как на первый/второй расчитайсь.... блин. Кто может объяснить феномен и подсказать чем он вызван и как исправить?
     
  16. vbs

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    попробуй так (справочник "Контрагенты" в двух ипостасях):
    Эмитент = СоздатьОбъект("Справочник.Контрагенты");
    Эмитенты = СоздатьОбъект("Справочник.Контрагенты");
    Эмитенты.НайтиПоНаименованию("Эмитенты");

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

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

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    vbs, спасибо. у мя был цыкл и поиск тоже я в этом цикле делал. зачем - сам не знаю даже. кароч из цыкла выбросил и ща вроде заработало
     
Загрузка...

Поделиться этой страницей