Помогите новичку разобраться с созданием элемента справочника.

1. CYCTAH 03.10.19 20:53 Сейчас в теме
Добрый вечер, я начинающий программист, прошу не пинать сильно, пишу не сразу, а потратил уже приличное количество часов, но решения не могу найти. Помогите разобраться с принципом работы в этом моменте. У меня УФ. Есть Справочники "Валюты" и "Страны". В справочнике "валюты" есть стандартный реквизит "наименование" (строка) и добавил еще один "страна" (СправочникСсылка.Страны). Во внешней обработке у меня 2 поля "Наименование"(Строка) и "Страна"(Строка) и кнопка "создать валюту". По нажатию "Создать Валюту" хочу сделать Чтобы в Справочнике "Валюты" в наименовании стояло, то что я указал во внешней форме в поле "Наименование", а в поле "Страна" то что указал в поле "Страна" во внешней обработке, ну и конечно же страна должна создаться в справочнике "Страны". Но что то у меня не совсем получается, наименование записывает норм, а вот страны уже нет. Помогите кто чем может)

НоваяНоменклатура = Справочники.Валюты.СоздатьЭлемент();
	НоваяНоменклатура.Наименование = Наименование;
	НоваяНоменклатура.Страна = Страна;
	НоваяНоменклатура.Записать();


Вот такой код.
По теме из базы знаний
Найденные решения
3. CYCTAH 03.10.19 21:22 Сейчас в теме
(2) Мне как раз и надо понять принцип записи реквизита из строки в СправочникСсылка. А я же могу строку НоваяНоменклатура.Страна = Справочники.Страны.НайтиПоНаименованию(Страна); Заменить на более пацанскую и сделать тоже самое через запрос, это вроде как правильнее?
4. ex3mall 2 03.10.19 21:31 Сейчас в теме
(3)

В смысле написать МногаТекста

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

ЗапросСтраны.УстановитьПараметр("НаименованиеСтраны", Объект.Страна);

Выборка = ЗапросСтраны.Выполнить().Выбрать();

Если Выборка.Следующий() Тогда
          НоваяНоменклатура.Страна = Выборка.Страна;
КонецЕсли;
Показать



Конечно можете, но на мой взгляд вот это:

 НоваяНоменклатура.Страна = Справочники.Страны.НайтиПоНаименованию(Страна);


то же самое. И короче, и по-пацански.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. ex3mall 2 03.10.19 21:07 Сейчас в теме
Доброго вечера.

У Вас тип реквизита "Страна" в справочнике - СправочникСсылка.Страны.
А в обработке тип реквизита "Страна" - строка.

Вы не сможете запихнуть тип "Строка" в тип "СправочникСсылка.Страны" без преобразования.

Либо во внешней обработке поменяйте тип реквизита на "СправочникСсылка.Страны", либо при присвоении значения конвертируйте
НоваяНоменклатура.Страна = Справочники.Страны.НайтиПоНаименованию(Страна);
3. CYCTAH 03.10.19 21:22 Сейчас в теме
(2) Мне как раз и надо понять принцип записи реквизита из строки в СправочникСсылка. А я же могу строку НоваяНоменклатура.Страна = Справочники.Страны.НайтиПоНаименованию(Страна); Заменить на более пацанскую и сделать тоже самое через запрос, это вроде как правильнее?
4. ex3mall 2 03.10.19 21:31 Сейчас в теме
(3)

В смысле написать МногаТекста

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

ЗапросСтраны.УстановитьПараметр("НаименованиеСтраны", Объект.Страна);

Выборка = ЗапросСтраны.Выполнить().Выбрать();

Если Выборка.Следующий() Тогда
          НоваяНоменклатура.Страна = Выборка.Страна;
КонецЕсли;
Показать



Конечно можете, но на мой взгляд вот это:

 НоваяНоменклатура.Страна = Справочники.Страны.НайтиПоНаименованию(Страна);


то же самое. И короче, и по-пацански.
5. CYCTAH 03.10.19 21:35 Сейчас в теме
Спасибо что так подробно. Еще один маленький вопросик, почему Вы в запросе использовали Подобно а не "=" ?
6. ex3mall 2 03.10.19 21:41 Сейчас в теме
(5) Ну такая традиция))))

Равенство - для численных и ссылочных типов.

Со строками лучше работать через "Подобно".

Например, "Беларусь" = "Беларусь", но "Беларусь" <> "беларусь".

А вот конструкция ПОДОБНО в случае "%Беларусь%" ПОДОБНО "Республика Беларусь" выдаст нужный результат.

Знак процента в данном случае обозначает "все что угодно".
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот