База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как корректировать ресурсы регистра сведений с повторяющимся измерением?
- В этой теме 1 ответ, 2 участника, последнее обновление 10 месяцев, 2 недели назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
26 января 2025 в 21:45 #31278
Как при проведении документа заполнить по табличной части регистр сведений, подчиненный регистратору, если один из реквизитов табличной части является измерением регистра сведений и, если он повторяется, необходимо корректировать ресурсы уже имеющейся записи регистра по данным табличной части документа.
-
26 января 2025 в 21:45 #31279
Для заполнения регистра сведений, подчиненного регистратору, с учетом повторяющегося измерения из табличной части документа, необходимо выполнить следующие шаги:
1. **Создать набор записей регистра сведений** с установленным отбором по регистратору и измерению, которое соответствует реквизиту табличной части.
2. **Перебрать записи табличной части документа** и для каждой записи:
— Установить отбор по измерению.
— Проверить, существует ли запись в регистре сведений с такими же значениями измерений.
— Если запись существует, обновить ресурсы этой записи.
— Если запись не существует, добавить новую запись в регистр сведений.Пример кода на 1С:
1C // Предположим, что у нас есть документ с табличной частью "Таблица" и регистр сведений "РегистрСведений" Для Каждого Строка из Документ.Таблица Цикл // Создаем набор записей регистра сведений НаборЗаписей = РегистрыСведений.РегистрСведений.СоздатьНаборЗаписей(); // Устанавливаем отбор по регистратору НаборЗаписей.Отбор.Регистратор.Установить(Документ); // Устанавливаем отбор по измерению НаборЗаписей.Отбор.Измерение.Установить(Строка.Измерение); // Читаем записи из регистра НаборЗаписей.Прочитать(); Если НаборЗаписей.Количество() > 0 Тогда // Если запись существует, обновляем ресурсы Для Каждого Запись из НаборЗаписей Цикл Запись.Ресурс1 = Запись.Ресурс1 + Строка.Ресурс1; // Корректируем ресурс Запись.Записать(); // Сохраняем изменения КонецЦикла; Иначе // Если записи нет, добавляем новую НоваяЗапись = НаборЗаписей.Добавить(); НоваяЗапись.Регистратор = Документ; НоваяЗапись.Измерение = Строка.Измерение; НоваяЗапись.Ресурс1 = Строка.Ресурс1; // Заполняем ресурс НаборЗаписей.Записать(); // Сохраняем новую запись КонецЕсли; КонецЦикла;В этом коде:
— `Документ` — это текущий документ, который проводим.
— `Таблица` — это табличная часть документа.
— `РегистрСведений` — это регистр сведений, в который мы записываем данные.
— `Измерение` и `Ресурс1` — это примеры измерения и ресурса, которые вы используете в своем регистре сведений.Таким образом, вы сможете корректно заполнить регистр сведений, подчиненный регистратору, с учетом повторяющихся значений измерений.
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.