Имя: Пароль:
1C
 
Как получить запись регистра и записать изменения
0 Asest
 
11.08.14
12:15
Есть регистр сведений, у него 4 измерения.
Необходимо получить запись по этим измерениям, изменить значение ресурса и записать данные.  В других ветках видел 2 варианта: запрос(позволяет получить значения ресурсов, но не изменить их) и методом РС.ИмяРС.Получить(<Период>,<Отбор>), этот метод возвращает структуру, содержащую значения ресурсов но не позволяет записать изменения. Регистр у меня не зависимый и не периодический.

Как мне зная измерения, записать новое значение ресурса?
1 ДенисЧ
 
11.08.14
12:15
Создай набор записей, наложи отбор, прочитай, измени, запиши
2 ale-sarin
 
11.08.14
12:15
Или менеджер записи.
3 Asest
 
11.08.14
12:20
Рег=РегистрыСведений.КонтактнаяИнформация.СоздатьНаборЗаписей();
Рег.Отбор.Измерение1.Установить("Значение1");
Рег.Отбор.Измерение2.Установить(Ссылка2);
Рег.Отбор.Измерение3.Установить("Значение3");
Рег.Прочитать();

Рег.Ресурс1 = Значение1;

Рег.Записать;
4 Asest
 
11.08.14
12:20
В таком духе?
5 РенеДекарт
 
11.08.14
12:21
(3) да, это в справке есть.
6 ale-sarin
 
11.08.14
12:22
(3) Это набор записей. Поэтому перед установкой ресурса надо получить запись.
Например.
Рег[0].Ресурс1 = Значение1;
7 Asest
 
11.08.14
12:23
Спасибо, буду пробовать
8 Крошка Ру
 
11.08.14
12:23
(4) Вот в таком:

Курс = РегистрыСведений.КурсыВалют.СоздатьМенеджерЗаписи();
Курс.Валюта = ВыбВалюта;
Курс.Период = ТекущаяДата();
Курс.Прочитать();
Если Не Курс.Выбран() Тогда
    Курс.Период = ТекущаяДата();
    Курс.Валюта = ВыбВалюта;
    Курс.Курс = 41.35;
    Курс.Кратность = 1;
КонецЕсли;
Если ВвестиЧисло(Курс.Курс, "Введите курс на сегодня",15,5) Тогда
    Курс.Записать();
КонецЕсли;
9 Крошка Ру
 
11.08.14
12:24
(4) Или в таком:

КурсыВалют = РегистрыСведений.КурсыВалют;
НаборКурсов = КурсыВалют.СоздатьНаборЗаписей();
Доллар = Справочники.Валюты.НайтиПоНаименованию("USD");
НаборКурсов.Отбор.Валюта.Установить(Доллар);
НаборКурсов.Отбор.Период.Установить(НачалоДня(ТекущаяДата()));
НаборКурсов.Прочитать();
Если НаборКурсов.Количество() = 0 Тогда
    НовыйКурс = НаборКурсов.Добавить();
    НовыйКурс.Валюта = Доллар;
    НовыйКурс.Период = ТекущаяДата();
ИначеЕсли НаборКурсов.Количество() = 1 Тогда
    НовыйКурс = НаборКурсов[0];
Иначе
    Текст = "ru = ""Курс валюты задается один раз в день."";"
     + " en = ""Rate is set once a day.""";
    Предупреждение(НСтр(Текст), 60);
    Возврат;
КонецЕсли;
НовыйКурс.Курс = 31.44;
НовыйКурс.Кратность = 1;
НаборКурсов.Записать();
Сообщить(НСтр(ru = ""Курс ""; en = ""Rate "")
    + СокрЛП(НовыйКурс.Валюта)
    + НСтр(ru = "" на сегодня: "+"; en = "" for today: "")
    + НовыйКурс.Курс + НСтр(ru = "" руб.""; en = "" roub."""));
10 Крошка Ру
 
11.08.14
12:24
(4) Лень в СП залезть?