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

Работа с регистром сведений

Автор Funt432286, 28 фев 2023, 18:29

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

Funt432286

Всем доброго времени суток!

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

Выборка = РегистрыСведений.А_ПланированиеЗаказов.Выбрать(, Новый Структура("СсылкаРЗ", ТекТЗ.СсылкаРЗ));
Если Выборка.Следующий() Тогда
Запись = Выборка.ПолучитьМенеджерЗаписи();
Запись.Проверка = Истина;
Запись.Записать(Истина);
КонецЕсли;

Ошибка при вызове метода контекста (Выбрать)
{Обработка.ПланеркаПечатьNEW.Форма.ПланеркаПечать.Форма(803)}: Выборка = РегистрыСведений.А_ПланированиеЗаказов.Выбрать(, Новый Структура("СсылкаРЗ", ТекТЗ.СсылкаРЗ));
по причине:
Неверно указан реквизит


Есть необходимость внесения правки в запись - отдельная процедура и отдельная процедура на удаление записи из регистра сведений.

Подскажите пожалуйста, что не так?

Максим75

Funt432286, если регистр сведений периодический - то синтаксис не верный (структура третьей должна быть(, если не периодический - то тоже не верный (структура первой должна быть).

Funt432286

Максим75, При таком коде тоже ошибка:
Выборка = РегистрыСведений.А_ПланированиеЗаказов.Выбрать(Новый Структура("СсылкаРЗ", ТекТЗ.СсылкаРЗ));
Если Выборка.Следующий() Тогда
Запись = Выборка.ПолучитьМенеджерЗаписи();
Запись.Проверка = Истина;
Запись.Записать(Истина);
КонецЕсли;

Ошибка при вызове метода контекста (Выбрать)
{Обработка.ПланеркаПечатьNEW.Форма.ПланеркаПечать.Форма(803)}: Выборка = РегистрыСведений.А_ПланированиеЗаказов.Выбрать(Новый Структура("СсылкаРЗ", ТекТЗ.СсылкаРЗ));
по причине:
Недопустимое значение параметра (параметр номер '1')


Максим75

Funt432286, так регистр периодический или нет?

Afinogen

если регистр сведений независимый то можно использовать другой метод

МЗ = РегистрыСведений.А_ПланированиеЗаказов.СоздатьМенеджерЗаписи();
МЗ.СсылкаРЗ = ТекТЗ.СсылкаРЗ;
МЗ.Прочитать();
Если МЗ.Выбран() Тогда
 МЗ.Проверка = Истина;
 МЗ.Записать();
КонецЕсли;


Funt432286

Afinogen, с данным методом тоже не вышло, ошибок не выдает, но и данные не загружает. В "если" не заходит, просто проскакивает дальше!
Регистр Непериодический и Независимый.

Afinogen

работайте набором данных
Набор = РегистрыСведений.А_ПланированиеЗаказов.СоздатьНаборЗаписей();
Набор.Отбор.СсылкаРЗ .Установить(ТекТЗ.СсылкаРЗ);
Набор.Прочитать();
Если Набор.Выбран() Тогда
 Набор.Очистить();
 НоваяСтрокаНабор = Набор.Добавить();
 НоваяСтрокаНабор.СсылкаРЗ = ТекТЗ.СсылкаРЗ;
 НоваяСтрокаНабор.Проверка = Истина;
 Набор.Записать();
КонецЕсли;

Funt432286

Afinogen, код записывает, но он переписывает запись в регистре полностью, а мне нужно чтобы он изменял в данной записи только один реквизит, а остальные оставались не изменёнными!  :(

В итоге сработал вот такой код;
   Набор = РегистрыСведений.А_ПланированиеЗаказов.СоздатьНаборЗаписей();
   Набор.Отбор.СсылкаРЗ.Установить(ТекТЗ.СсылкаРЗ);
   Набор.Прочитать();
   Если Набор.Количество() Тогда
      Запись = Набор[0];
      Запись.Проверка = Истина;
      Набор.Записать(
           Истина // замещать, если уже есть запись с такими же измерениями
           // и таким же периодом
       );
   КонецЕсли;

Afinogen

ну так сохраняйте предварительно старые данные  в какую структуру напрмиер после считывания набора перед его очисткой, в чем проблема?)

Afinogen

Цитата: Funt432286 от 01 мар 2023, 15:52Afinogen, код записывает, но он переписывает запись в регистре полностью, а мне нужно чтобы он изменял в данной записи только один реквизит, а остальные оставались не изменёнными!  :(

В итоге сработал вот такой код;
   Набор = РегистрыСведений.А_ПланированиеЗаказов.СоздатьНаборЗаписей();
   Набор.Отбор.СсылкаРЗ.Установить(ТекТЗ.СсылкаРЗ);
   Набор.Прочитать();
   Если Набор.Количество() Тогда
      Запись = Набор[0];
      Запись.Проверка = Истина;
      Набор.Записать(
           Истина // замещать, если уже есть запись с такими же измерениями
           // и таким же периодом
       );
   КонецЕсли;
а что т ту у вас замещается полностью то?) тут просто откорректировалась запись и все

Теги:

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

Рейтинг@Mail.ru

Поиск