8.х Программное создание справочника

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Inkeeper, 4 июн 2010.

  1. TopicStarter Overlay
    Inkeeper
    Offline

    Inkeeper Опытный в 1С

    Регистрация:
    22 мар 2009
    Сообщения:
    327
    Симпатии:
    0
    Баллы:
    26
    Добрый день. Создаю элемент спр."КонтактныеТелефоны" (самописный в УТ), когда нажимаю Записать, должен создаваться элемент другого спр. "Контрагенты". Мой код:
    Код:
    Процедура ПриЗаписи(Отказ)
    НовыйЭлемент = Справочники.Контрагенты.СоздатьЭлемент();
    //Получить ссылку на группу, в которой будет находится новый элемент.
    Родитель = Справочники.Контрагенты.НайтиПоНаименованию("Покупатели");
    
    НовыйЭлемент.Наименование = "Имя"; //<--------??????? нужно, чтобы имя создаваемого элемента спр. Контрагенты было = реквизиту "Имя"
    НовыйЭлемент.Родитель = Родитель;
    НовыйЭлемент.Покупатель = Истина;
    НовыйЭлемент.Записать();
    
    
    КонецПроцедуры
    
    
    В спр. КонтактныеТелефоны есть реквизит "Имя" (тип Строка), который должен равняться Наименованию создаваемого элемента справочника "Контрагенты". При отладке появляется ошибка. Подскажите пожалуйста как правильно написать строку
    Код:
    НовыйЭлемент.Наименование = "Имя";
    
    
    + как правильно записывать создаваемый элемент в необходимую папку ("Покупатели")?
  2. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    может
    "В спр. КонтактныеТелефоны есть реквизит "Имя" (тип Строка), наименование создаваемого элемента справочника "Контрагенты" должно равнятся этому реквизиту."
    Или я что-то не так понял?
    Ну а если написать
    Код:
    НовыйЭлемент.Наименование = Имя;
    
    
    ?
  3. TopicStarter Overlay
    Inkeeper
    Offline

    Inkeeper Опытный в 1С

    Регистрация:
    22 мар 2009
    Сообщения:
    327
    Симпатии:
    0
    Баллы:
    26
    пишет ошибку {Справочник.КонтактныеТелефоны.Форма.ФормаЭлемента(18)}: Ошибка при установке значения атрибута контекста (Родитель): Справочник не многоуровневый
    Родитель = Справочники.Контрагенты.НайтиПоНаименованию("Покупатели");
    по причине:
    Справочник не многоуровневый


    В спр. Контрагенты две группы созданы "Покупатели" и "Поставщики"
  4. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Брр.. А что же вы тогда про наименование спрашиваете, если у вас до этой строки и не доходит. Не пишите Родитель, напишите например:
    Код:
    НовыйЭлементРодитель = Справочники.Контрагенты.НайтиПоНаименованию("Покупатели");
    
  5. TopicStarter Overlay
    Inkeeper
    Offline

    Inkeeper Опытный в 1С

    Регистрация:
    22 мар 2009
    Сообщения:
    327
    Симпатии:
    0
    Баллы:
    26
    Как вариант наверное можно сделать группу "Покупатели" предопределённой и обратится к ней напрямую
    Код:
    ]НовыйЭлемент = Справочники.Контрагенты.Покупатели.СоздатьЭлемент();
    
    ...
  6. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Тогда уж будет:
    Код:
    НовыйЭлемент.Родитель = Справочники.Контрагенты.Покупатели;
    
    без всяких создатьэлемент();
  7. gosn1ck
    Offline

    gosn1ck Опытный в 1С

    Регистрация:
    13 авг 2009
    Сообщения:
    1.329
    Симпатии:
    1
    Баллы:
    26
    1C Предприятие 8.1 Простые примеры разработки - держать как настольную книгу :)
  8. TopicStarter Overlay
    Inkeeper
    Offline

    Inkeeper Опытный в 1С

    Регистрация:
    22 мар 2009
    Сообщения:
    327
    Симпатии:
    0
    Баллы:
    26
    Прошу прощения, возник ещё вопрос. Создаю элемент спр. КонтактныеТелефоны, заполняю реквизиты, нажимаю Записать, выдаёт ошибку "Вид договора "С покупателем" может устанавливаться только когда у контрагента указано что он является покупателем.". Не могу сообразить почему, ведь я указываю что "Покупатель" - истина? (При записи должен создаваться элемент спр. Контрагенты и договор, без строчек ДоговорКонтрагента... элемент Контрагент создаётся, галочка Покупатель ставиться, но договор не создаётся).

    Код:
    Процедура ПриЗаписи(Отказ)
    Группа = Справочники.Контрагенты.Покупатели;
    Спр = Справочники.Контрагенты.СоздатьЭлемент();
    Спр.Родитель = Группа.Ссылка;
    Спр.Наименование = Имя;
    Спр.ЮрФизЛицо = Перечисления.ЮрФизЛицо.ФизЛицо;
    Спр.Покупатель = Истина;
    //
    ////==========================================
    ДоговорКонтрагента = Справочники.ДоговорыКонтрагентов.СоздатьЭлемент();
    ДоговорКонтрагента.Наименование = "Основной договор";
    ДоговорКонтрагента.Владелец = Имя;
    ДоговорКонтрагента.Организация = Справочники.Организации.НайтиПоНаименованию("ИП");
    ДоговорКонтрагента.ВедениеВзаиморасчетов = Перечисления.ВедениеВзаиморасчетовПоДоговорам.ПоДоговоруВЦелом;
    ДоговорКонтрагента.ВалютаВзаиморасчетов = Справочники.Валюты.НайтиПоНаименованию("руб.");
    ДоговорКонтрагента.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.СПокупателем;
    ДоговорКонтрагента.Записать();
    
    Спр.Записать();
    КонецПроцедуры
    
    
    
  9. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Неправильно, надо как-то так:
    Код:
    Процедура ПриЗаписи(Отказ)
    Группа = Справочники.Контрагенты.Покупатели;
    Спр = Справочники.Контрагенты.СоздатьЭлемент();
    Спр.Родитель = Группа.Ссылка;
    Спр.Наименование = Имя;
    Спр.ЮрФизЛицо = Перечисления.ЮрФизЛицо.ФизЛицо;
    Спр.Покупатель = Истина;
    Спр.Записать(); //<-Элемент родительского справочника уже должен быть записан перед созданием подчиненого!
    //
    ////==========================================
    ДоговорКонтрагента = Справочники.ДоговорыКонтрагентов.СоздатьЭлемент();
    ДоговорКонтрагента.Наименование = "Основной договор";
    ДоговорКонтрагента.Владелец = Спр; //<-Владелец - не просто имя, а элемент справочника родителя!
    ДоговорКонтрагента.Организация = Справочники.Организации.НайтиПоНаименованию("ИП");
    ДоговорКонтрагента.ВедениеВзаиморасчетов = Перечисления.ВедениеВзаиморасчетовПоДоговорам.ПоДоговоруВЦелом;
    ДоговорКонтрагента.ВалютаВзаиморасчетов = Справочники.Валюты.НайтиПоНаименованию("руб.");
    ДоговорКонтрагента.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.СПокупателем;
    ДоговорКонтрагента.Записать();
    
    КонецПроцедуры
    
    Извиняюсь, не так:
    Код:
    ДоговорКонтрагента.Владелец = Спр; 
    
    а так:
    Код:
    ДоговорКонтрагента.Владелец = Спр.Ссылка; 
    
  10. TopicStarter Overlay
    Inkeeper
    Offline

    Inkeeper Опытный в 1С

    Регистрация:
    22 мар 2009
    Сообщения:
    327
    Симпатии:
    0
    Баллы:
    26
    Ура, получилось! Спасибо, большое!
Похожие темы
  1. Voody
    Ответов:
    10
    Просмотров:
    1.915
Загрузка...

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