Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
16 дек 2024, 00:37

Заполнение реквизита справочника из наименования.

Автор Stellar, 02 авг 2019, 14:15

0 Пользователей и 1 гость просматривают эту тему.

Stellar

Доброго всем дня. Начинаю осваивать премудрости языка, и столкнулся с задачей. Есть Спровочник Номер ГТД. У него есть реквизит - Регистрационный номер. Внешней обработкой из таблицы Excel загружаются табличные части, создается данный элемент справочника и номер ГТД из документа переносится в наименование. А вот как сделать чтобы еще и заполнялся цифр в регистрационный номер? Я написал  следующие команды в данной обработке:

  //Вносим регистрационный номер
РегистрационныйНомер = Справочники.НомераГТД.РегистрационныйНомер;
РегистрационныйНомер = НомерГТД;
РегистрационныйНомер.Записать ();

Но при заполнении, ругается, что поле объекта не обнаружено (РегистрационныйНомер). Я так понимаю нужна еще команда для открытия этого номера?

Faerr108

Всё правильно. Вы пытаетесь обратиться к объекту метаданных и заполнить реквизит :D

Если создается новый элемент справочника, тогда, соответственно, нужно обращаться к этому новому элементу. На такой манер:

НовыйЭлементСправочника = Справочники.НомераГТД.СоздатьЭлемент();
//Тут идет заполнение других реквизитов//\\
НовыйЭлементСправочника = НомерГТД;
НовыйЭлементСправочника.Записать();


alex0402

Цитата: Stellar от 02 авг 2019, 14:15РегистрационныйНомер = Справочники.НомераГТД.РегистрационныйНомер;
РегистрационныйНомер = НомерГТД;
РегистрационныйНомер.Записать ();

РегистрационныйНомер = Справочники.НомераГТД.НайтиПоНаименованию("Наименование ГТД");
Если РегистрационныйНомер.Пустая() Тогда
    РегистрационныйНомер = РегистрационныйНомер.СоздатьЭлемент();
Иначе
    РегистрационныйНомер = РегистрационныйНомер.ПолучитьОбъект();
КонецЕсли;
РегистрационныйНомер.РегистрационныйНомер = НомерГТД;
РегистрационныйНомер.Записать();

Спасибо за Сказать спасибо

Z.spb

"Справочники.НомераГТД" это тип "СправочникМенеджер.<Имя справочника>", у него нет реквизитов, это не конкретный объект, которому можно что-то присвоить или записать его в базу данных. Объект создаётся методом менеджера "СоздатьЭлемент".

Stellar

Цитата: alex0402 от 02 авг 2019, 16:19
Цитата: Stellar от 02 авг 2019, 14:15РегистрационныйНомер = Справочники.НомераГТД.РегистрационныйНомер;
РегистрационныйНомер = НомерГТД;
РегистрационныйНомер.Записать ();

РегистрационныйНомер = Справочники.НомераГТД.НайтиПоНаименованию("Наименование ГТД");
Если РегистрационныйНомер.Пустая() Тогда
    РегистрационныйНомер = РегистрационныйНомер.СоздатьЭлемент();
Иначе
    РегистрационныйНомер = РегистрационныйНомер.ПолучитьОбъект();
КонецЕсли;
РегистрационныйНомер.РегистрационныйНомер = НомерГТД;
РегистрационныйНомер.Записать();


Теперь выдает ошибку: Заполнение ТЧ не произведено!
Значение не является значением объектного типа (Пустая)

Посмотрел форму - Номер ГТД первоначально записывается в поле, с именем Код

Поменял наименование на "Код", ничего не изменилось.

Вот фрагмент кода записи этого номера:
Если СерияТовара.Пустая() Тогда
НачатьТранзакцию();
СерияТовара = Справочники.СерииНоменклатуры.СоздатьЭлемент();

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| НомераГТД.Ссылка
|ИЗ
| Справочник.НомераГТД КАК НомераГТД
|ГДЕ
| НомераГТД.Код = &Код";

Запрос.УстановитьПараметр("Код", Серия);

РезультатЗапроса = Запрос.Выполнить();

ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

Если ВыборкаДетальныеЗаписи.Следующий() Тогда
СерияТовара.НомерГТД = ВыборкаДетальныеЗаписи.Ссылка;
Иначе
НомерГТД = Справочники.НомераГТД.СоздатьЭлемент();
НомерГТД.Код = Серия;
НомерГТД.Записать();

СерияТовара.НомерГТД = НомерГТД.Ссылка;
КонецЕсли;



Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск