Ручная правка регистров сведений и накопления в 1С 8.3: от движений документа до пересчёта итогов
Содержание
Править регистры в 1С можно тремя способами, и выбор зависит от того, что именно сломано. Неверные данные в одном документе правят через ручную корректировку его движений. Записи независимого регистра сведений меняют прямо в списке регистра через Все функции. Массовые ошибки исправляют перепроведением или обработкой на встроенном языке. А если нужно изменить саму структуру регистра (добавить измерение, ресурс, индекс), это работа в Конфигураторе или в расширении.
Главное правило: регистр почти всегда отражает документ. Если просто «подкрутить» запись в регистре, а документ оставить прежним, при следующем перепроведении 1С вернёт старые цифры. Поэтому сначала ищем источник ошибки, а уже потом решаем, где править.
Как устроены регистры и что из этого следует для правки
Прежде чем что-то менять, определите тип регистра. От него зависит, можно ли редактировать запись напрямую.
| Вид регистра | Что хранит | Как обычно правят |
|---|---|---|
| Регистр сведений, независимый | Справочные данные: курсы, цены, настройки, сведения о сотрудниках | Прямо в форме списка или менеджером записи |
| Регистр сведений, подчинённый регистратору | Данные, которые пишет документ | Через движения документа |
| Регистр накопления остатков | Остатки и движения: товары, деньги, взаиморасчёты | Через документ, ручную корректировку, перепроведение |
| Регистр накопления оборотов | Только обороты, без остатков: продажи, выручка | Так же, через документ |
| Регистр бухгалтерии | Проводки по плану счетов | Ручная корректировка проводок или ручная операция |
| Регистр расчёта | Начисления и удержания с периодом действия | Только через документы расчёта зарплаты |
Ключевые элементы любого регистра:
- 📐 Измерения — разрезы учёта (склад, номенклатура, контрагент). По ним группируются итоги.
- 💰 Ресурсы — числа, которые складываются: количество, сумма. У регистра сведений ресурс может быть любого типа.
- 🏷️ Реквизиты — дополнительная информация к записи, итоги по ним не считаются.
- 📄 Регистратор — ссылка на документ, который сделал запись. Есть у всех регистров накопления и у подчинённых регистров сведений.
У регистра сведений смотрите свойство Режим записи. Значение «Независимый» означает, что записи можно вводить руками. Значение «Подчинение регистратору» — записи принадлежат документам, и править их надо через документ.
Для регистров накопления остатков 1С хранит отдельную таблицу итогов. Если её содержимое разошлось с движениями, отчёты покажут не те остатки, хотя сами движения верные. Это лечится пересчётом итогов, а не правкой записей.
Правка записей без изменения конфигурации
Это самый частый случай: структура регистра в порядке, а данные неверные.
Ручная корректировка движений документа
В Бухгалтерии 3.0 откройте проведённый документ и нажмите кнопку Дт/Кт (показать проводки и другие движения). В открывшейся форме поставьте флажок «Ручная корректировка (разрешает редактирование движений документа)». После этого вкладки регистров становятся редактируемыми:
- Выберите вкладку нужного регистра — бухгалтерского, накопления или сведений.
- Измените строку, добавьте новую или удалите лишнюю.
- Нажмите
ЗаписатьилиЗаписать и закрыть.
Документ с ручной корректировкой при перепроведении не перезаписывает свои движения. Это и плюс, и риск: если потом поменять сумму в самом документе, движения останутся старыми. Чтобы вернуться к автоматическим движениям, снимите флажок и перепроведите документ.
Ручная корректировка — исключение, а не способ работы. Через полгода никто не вспомнит, почему остаток на складе не сходится с документами. Оставляйте комментарий в документе: что и зачем исправлено.
Независимый регистр сведений через «Все функции»
Курсы валют, цены номенклатуры, ставки и подобные данные лежат в независимых регистрах сведений. Их правят напрямую:
- Включите команду: меню программы (кнопка с тремя полосками в заголовке окна) →
Настройки→Параметры→ флажок «Отображать команду “Все функции”». - Откройте
Все функции→ веткаРегистры сведений. - Найдите регистр по имени, откройте список.
- Двойным щелчком откройте запись, исправьте и запишите.
Если запись «не открывается на редактирование», скорее всего у регистра режим «Подчинение регистратору». Тогда в колонке списка будет виден регистратор — откройте этот документ и правьте его движения.
Регистры накопления и бухгалтерии: только через документ
Записи регистров накопления и бухгалтерии всегда принадлежат регистратору. Через Все функции их можно посмотреть и отфильтровать по измерениям, но не исправить строку саму по себе. Пути исправления:
- ✏️ исправить данные в самом документе и перепровести его;
- 🛠️ включить ручную корректировку движений (см. выше);
- 📝 в Бухгалтерии ввести ручную операцию (
Операции→Операции, введенные вручную) для бухгалтерских проводок и корректировки других регистров в ней же.
Изменение структуры регистра в Конфигураторе
Если нужен новый разрез учёта, новый ресурс или иной тип поля, правят метаданные. Это задача программиста, а не бухгалтера.
Если конфигурация на поддержке
Типовая конфигурация обычно стоит на поддержке поставщика, и объекты закрыты для изменений. Варианты:
| Способ | Когда | Риски |
|---|---|---|
Расширение конфигурации (.cfe) | Нужен свой регистр или доработка без снятия с поддержки | Минимальные: обновления типовой ставятся как обычно |
| Включить возможность изменения | Доработка глубокая, расширения не хватает | Каждое обновление требует сравнения и объединения |
| Снять с поддержки полностью | Конфигурация давно своя | Обновления ставятся только вручную |
Расширения появились в платформе 8.3.6, и в актуальных версиях в них можно создавать собственные объекты, в том числе регистры. Свой регистр в расширении — самый безопасный способ хранить дополнительные данные рядом с типовыми.
Порядок изменения структуры
- Сделайте резервную копию:
Администрирование→Выгрузить информационную базув Конфигураторе (файл.dt). - Откройте конфигурацию:
Конфигурация→Открыть конфигурацию. - В дереве метаданных раскройте ветку регистра, добавьте измерение, ресурс или реквизит, задайте тип.
- Обновите обработчики проведения документов-регистраторов: новое поле само не заполнится.
- Выполните
Конфигурация→Обновить конфигурацию базы данных(F7).
Обновление структуры требует монопольного доступа: все пользователи должны выйти из базы. Для больших регистров реструктуризация может идти долго, поэтому её планируют на нерабочее время.
Новое измерение в существующем регистре накопления у старых записей окажется пустым. Если исторические данные важны, после обновления перепроведите документы за нужный период.
Исправление ошибок в движениях документов
Неверные движения почти всегда следствие одной из причин:
- 🔁 документ проведён до того, как исправили справочник или настройку учёта;
- 📅 нарушена последовательность: документ задним числом изменил остатки, а более поздние документы не перепроведены;
- 🧩 доработка или обработка записала движения в обход проведения;
- 💥 сбой при записи (обрыв связи, аварийное завершение) оставил набор записей неполным.
Перепроведение одного документа или группы
Если причина в данных документа или справочника, исправьте их и перепроведите. Для периода пользуйтесь групповым перепроведением: в типовых конфигурациях есть обработка «Групповое перепроведение документов
», её проще всего открыть через Все функции → Обработки. Задайте период и, при необходимости, отбор по видам документов.
В Бухгалтерии 3.0 для документов, влияющих на себестоимость, после правок ещё нужно повторить закрытие месяца .
Правка набора записей кодом
Когда ошибка массовая и перепроведение не помогает (например, движения записала внешняя обработка), набор записей переписывают программно. Шаблон для регистра накопления, имя условное:
Набор = РегистрыНакопления.ТоварыНаСкладах.СоздатьНаборЗаписей();
Набор.Отбор.Регистратор.Установить(ДокументСсылка);
Набор.Прочитать();
Для Каждого Запись Из Набор Цикл
Если Запись.Склад = СтарыйСклад Тогда
Запись.Склад = НовыйСклад;
КонецЕсли;
КонецЦикла;
Набор.Записать(); // перезаписывает все движения этого регистратора
Набор записей всегда пишется целиком по отбору. Если забыть Прочитать(), вызов Записать() заменит движения документа пустым или частичным набором.
Для независимого регистра сведений удобнее менеджер записи:
Менеджер = РегистрыСведений.ЦеныНоменклатуры.СоздатьМенеджерЗаписи();
Менеджер.Период = Дата(2025, 1, 1);
Менеджер.Номенклатура = Товар;
Менеджер.Прочитать();
Если Менеджер.Выбран() Тогда
Менеджер.Цена = 150;
Менеджер.Записать();
КонецЕсли;
Состав полей для отбора у менеджера записи зависит от измерений конкретного регистра: заполните все измерения, иначе запись не найдётся.
Код, меняющий движения в рабочей базе, сначала прогоняйте на копии. Ошибка в отборе перепишет движения не одного, а сотен документов.
Итоги регистров: пересчёт и управление
Итоги — это заранее посчитанные остатки и обороты. Благодаря им отчёт по остаткам открывается за секунды, а не перебирает все движения с начала учёта.
Когда итоги нужно пересчитать
- 📉 оборотно-сальдовая ведомость показывает остаток, которого нет по движениям;
- ⚠️ после аварийного отключения сервера отчёты стали врать;
- 🐢 отчёты по остаткам резко замедлились после загрузки большого объёма данных.
Способы пересчёта
| Способ | Где | Когда подходит |
|---|---|---|
| Обработка «Управление итогами» | Все функции → Стандартные → Управление итогами | Пересчёт без Конфигуратора, настройка периода итогов |
| Тестирование и исправление | Конфигуратор → Администрирование → Тестирование и исправление, флажок «Пересчет итогов» | Подозрение на повреждение данных |
| Встроенный язык | Методы менеджера регистра | Регламентное задание, загрузка данных |
В обработке «Управление итогами» есть два режима: простой (типовые действия кнопками) и полный (все возможности по отдельным регистрам). Там же задают период рассчитанных итогов: итоги хранятся до этой даты, а свежие остатки досчитываются от неё. Сдвигать период вперёд раз в месяц — нормальная практика для больших баз.
Пересчёт итогов и тестирование с исправлением — тяжёлые операции. Тестирование и исправление требует монопольного доступа. Запускайте их, когда пользователи не работают, и только после резервной копии.
Итоги при массовой загрузке
При загрузке тысяч документов итоги пересчитываются на каждой записи, и загрузка тормозит. Решение — отключить использование итогов на время загрузки:
РегистрыНакопления.ТоварыНаСкладах.УстановитьИспользованиеИтогов(Ложь);
// ... загрузка и запись наборов ...
РегистрыНакопления.ТоварыНаСкладах.УстановитьИспользованиеИтогов(Истина);
После включения итоги пересчитываются, это тоже займёт время. Пока итоги выключены, отчёты по остаткам строятся медленно, поэтому пользователей в базе быть не должно.
Индексы и производительность регистров
Медленный отчёт или долгое проведение часто упираются в регистр, по которому ищут без индекса.
Что индексируется
- Измерения регистра накопления входят в индекс таблицы итогов автоматически. Порядок измерений важен: первыми ставят те, по которым чаще всего отбирают.
- Измерения регистра сведений образуют уникальный ключ записи. Для отбора по одному измерению используйте свойство «Основной отбор» и при необходимости «Индексировать».
- Реквизиты не индексируются по умолчанию. Если по реквизиту регулярно отбирают в запросах, включите для него «Индексировать».
У ресурсов индексов не бывает: по ресурсам не отбирают, а суммируют.
Что ещё ускоряет работу
- Разделение итогов (свойство регистра накопления «Разрешить разделение итогов»). Снижает блокировки, когда много пользователей одновременно проводят документы по одним и тем же остаткам.
- Агрегаты для оборотных регистров накопления. Готовые сводки оборотов по нужным разрезам и периодам, ускоряют аналитические отчёты.
- Виртуальные таблицы в запросах. Отбирайте в параметрах
Остатки(&Период, Склад = &Склад), а не в секцииГДЕ: так платформа ограничит выборку ещё до соединения с итогами.
Не индексируйте всё подряд. Каждый индекс замедляет запись: при проведении документа обновляются все индексы регистра.
Частые проблемы с регистрами и как их решить
Если ничего не помогло
Когда движения выглядят верно, итоги пересчитаны, а отчёт всё равно показывает чужие цифры:
- проверьте права и отборы в отчёте: часть данных может быть скрыта ограничениями доступа на уровне записей;
- для файловой базы проверьте её утилитой
chdbfl.exeиз каталогаbinплатформы (база при этом должна быть закрыта); - выгрузите базу в
.dtи загрузите в новую пустую — это пересобирает таблицы и снимает часть физических повреждений.