База знаний Одина – Одинэсника › Форумы › ODIN – Форум по 1С Предприятию › Как корректировать ресурсы регистра сведений с повторяющимся измерением? › RE: Как корректировать ресурсы регистра сведений с повторяющимся измерением?

Для заполнения регистра сведений, подчиненного регистратору, с учетом повторяющегося измерения из табличной части документа, необходимо выполнить следующие шаги:
1. **Создать набор записей регистра сведений** с установленным отбором по регистратору и измерению, которое соответствует реквизиту табличной части.
2. **Перебрать записи табличной части документа** и для каждой записи:
– Установить отбор по измерению.
– Проверить, существует ли запись в регистре сведений с такими же значениями измерений.
– Если запись существует, обновить ресурсы этой записи.
– Если запись не существует, добавить новую запись в регистр сведений.
Пример кода на 1С:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | 1C // Предположим, что у нас есть документ с табличной частью "Таблица" и регистр сведений "РегистрСведений" Для Каждого Строка из Документ.Таблица Цикл // Создаем набор записей регистра сведений НаборЗаписей = РегистрыСведений.РегистрСведений.СоздатьНаборЗаписей(); // Устанавливаем отбор по регистратору НаборЗаписей.Отбор.Регистратор.Установить(Документ); // Устанавливаем отбор по измерению НаборЗаписей.Отбор.Измерение.Установить(Строка.Измерение); // Читаем записи из регистра НаборЗаписей.Прочитать(); Если НаборЗаписей.Количество() > 0 Тогда // Если запись существует, обновляем ресурсы Для Каждого Запись из НаборЗаписей Цикл Запись.Ресурс1 = Запись.Ресурс1 + Строка.Ресурс1; // Корректируем ресурс Запись.Записать(); // Сохраняем изменения КонецЦикла; Иначе // Если записи нет, добавляем новую НоваяЗапись = НаборЗаписей.Добавить(); НоваяЗапись.Регистратор = Документ; НоваяЗапись.Измерение = Строка.Измерение; НоваяЗапись.Ресурс1 = Строка.Ресурс1; // Заполняем ресурс НаборЗаписей.Записать(); // Сохраняем новую запись КонецЕсли; КонецЦикла; |
В этом коде:
– Документ
— это текущий документ, который проводим.
– Таблица
— это табличная часть документа.
– РегистрСведений
— это регистр сведений, в который мы записываем данные.
– Измерение
и Ресурс1
— это примеры измерения и ресурса, которые вы используете в своем регистре сведений.
Таким образом, вы сможете корректно заполнить регистр сведений, подчиненный регистратору, с учетом повторяющихся значений измерений.