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