Как программно создать документ «Корректировка записей регистров» и заполнить в нем движения?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При необходимости переноса данных или внесения ручных корректировок в регистры накопления программным способом, разработчики часто сталкиваются с вопросом, как правильно сформировать документ Корректировка записей регистров. В этой статье мы разберем по шагам, как корректно создавать этот документ и избегать распространенных ошибок, из-за которых данные могут не отражаться в отчетах или при проведении других документов.

Основные принципы работы с документом

Для того чтобы система корректно «увидела» ваши данные, необходимо соблюдать строгий порядок действий. Документ Корректировка записей регистров является специализированным регистратором. Это значит, что он должен не просто содержать записи в базе данных, а корректно регистрировать их в транзакции проведения.

Рассмотрим основной алгоритм работы:

  1. Создаем объект документа Корректировка записей регистров.
  2. Добавляем запись в коллекцию ТаблицаРегистровНакопления, чтобы платформа «поняла», что данный регистр будет задействован.
  3. Заполняем движения регистра через коллекцию Движения самого объекта документа.
  4. Устанавливаем критически важные реквизиты: Период, Активность и ВидДвижения.
  5. Записываем документ.

Пример программного создания документа

Давайте проанализируем базовый пример кода, который позволяет успешно добавить записи в регистр РасчетыНалоговыхАгентовСБюджетомПоНДФЛ:


// Создаем новый документ
НовДок = Документы.КорректировкаЗаписейРегистров.СоздатьДокумент();
НовДок.Дата = ТекущаяДата();

// Указываем, какие регистры мы будем заполнять
НовСтр = НовДок.ТаблицаРегистровНакопления.Добавить();
НовСтр.Имя = "РасчетыНалоговыхАгентовСБюджетомПоНДФЛ";
НовСтр.Представление = "Расчеты налоговых агентов с бюджетом по НДФЛ";

// Заполняем движения
Для Каждого СтрДанных Из Выборка Цикл
    Движение = НовДок.Движения.РасчетыНалоговыхАгентовСБюджетомПоНДФЛ.Добавить();
    Движение.Период = НовДок.Дата;
    Движение.Активность = Истина;
    Движение.ВидДвижения = ВидДвиженияНакопления.Приход; // или Расход
    
    // Заполняем измерения и ресурсы
    Движение.Организация = СтрДанных.Организация;
    Движение.ФизЛицо = СтрДанных.ФизЛицо;
    // ... остальные поля
КонецЦикла;

// Записываем документ
НовДок.Записать();

Почему данные не видны в отчетах или других документах?

Часто возникает ситуация, когда запись в документе видна, но остатки в системе не меняются. Рассмотрим основные причины:

Рекомендации по отладке

Если после выполнения кода вы не видите нужных остатков, выполните следующие шаги:

  1. Откройте документ Корректировка записей регистров в режиме «1С:Предприятие» и проверьте, есть ли там строки.
  2. Убедитесь, что в каждой строке установлена галочка «Активность».
  3. Воспользуйтесь «Универсальным отчетом» по регистру, выведя поле Регистратор. Если поле пустое, значит, запись была создана без привязки к документу.
  4. Проверьте, правильно ли заполнены ключевые измерения (например, Организация). Иногда при поиске по коду (через НайтиПоКоду) возвращается пустая ссылка, если элементы не найдены — это приводит к записи «пустых» измерений в регистр.

Использование метода Док.Движения.ИмяРегистра.Добавить() является предпочтительным, так как оно инкапсулирует логику работы с набором записей внутри документа, обеспечивая целостность данных при записи самого документа.

← На главную