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

Редактирование реквизитов справочника (помогите новичку)

Автор borkhalenko, 12 окт 2012, 12:13

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

borkhalenko

Здравствуйте, уважаемые форумчане. У меня такая проблема: хочу поменять значения реквизитов справочника "Валюты", если изменяется значение константы (тип константы: СправочникСсылка.Валюты). Сначала пробовал так:

Процедура ПриЗаписи(Отказ)
Выборка=Справочники.Валюты.Выбрать();
ТекущееЗначение=Константы.ОсновнаяВалюта.Получить();
Пока Выборка.Следующий() Цикл
Выборка.Курс=Выборка.Курс/ТекущееЗначение.Курс;
КонецЦикла;
КонецПроцедуры

пишет, что поле недоступно для редактирования. Понял, что Выборка.Курс - это не обьект, а ссылка, тоесть ее изменять нельзя. Везде пишут, что нужно сначала получить обьект, но когда пишу:

Пока Выборка.Следующий() Цикл
Обьект=Выборка.ПолучитьОбьект();
Выборка.Курс=Выборка.Курс/ТекущееЗначение.Курс;
КонецЦикла;

пишет, что метод ПолучитьОбьект() недоступен.
Я совсем новичек в 1с, по-любому же туплю где-то или чего-то не понимаю. Помогите пожалуйста разобраться)))

mixqn

смотрим в синтаксис-помощник и видим:

Пример:

Процедура УстановитьРеквизит(ИдСправочника, ИдРеквизита,
        ЗначениеРеквизита, СтруктураДляОтбора)
    ВыборкаСправочника = Справочники[ИдСправочника].Выбрать(,,СтруктураДляОтбора);
    Пока ВыборкаСправочника.Следующий() Цикл
        Объект = ВыборкаСправочника.ПолучитьОбъект();
        Объект[ИдРеквизита] = ЗначениеРеквизита;
        Объект.Записать();
    КонецЦикла;
КонецПроцедуры


очевидно, если у вас все сделано как в примере, то все должно работать.

Добавлено: 12 окт 2012, 12:31


другими словами, код у вас должен получиться приблизительно такой:
Процедура ПриЗаписи(Отказ)
Выборка=Справочники.Валюты.Выбрать();
ТекущееЗначение=Константы.ОсновнаяВалюта.Получить();
Пока Выборка.Следующий() Цикл
Обьект=Выборка.ПолучитьОбьект();       
Обьект.Курс=Выборка.Курс/ТекущееЗначение.Курс;
Обьект.Записать();
КонецЦикла;
КонецПроцедуры


Примечание: даю ответ ровно на ваш вопрос, не вникая в суть и правильность того эффекта, которого вы хотите этим кодом добиться, то есть исходя из предположения, что кроме проблемы с получением объекта вся остальная логика у вас верна.

borkhalenko

Цитата: mixqn от 12 окт 2012, 12:27смотрим в синтаксис-помощник и видим:
Я этот помощник еще со вчерашнего дня изучаю)))
Цитата: mixqn от 12 окт 2012, 12:27Примечание:
На счет логики - это не очень важно, так как конфигурация учебная. Мне главное - понять суть выборки и доступа (изменения) обьектов конфигурации.

По поводу
Цитата: mixqn от 12 окт 2012, 12:27од у вас должен получиться приблизительно такой:
все равно не работает. Очевидно, у обьекта Справочники.Валюты нет метода ПолучитьОбьект(), или Выбрать() работает не так, как я думаю. Она же  возвращает ссылку на обьект?
Добавлено: 12 окт 2012, 15:12


Вопрос решен, я вместо "ъ" написал "ь". Спасибо mixqn-у за помощь.

Теги:

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

Рейтинг@Mail.ru

Поиск