Регистры в 1С 8.3: как открыть и проанализировать данные

· 9 мин

Содержание

Данные регистра в 1С 8.3 открываются из режима «1С:Предприятие» без конфигуратора. Самый быстрый путь — Главное меню → Все функции, там в ветках Регистры сведений, Регистры накопления и Регистры бухгалтерии лежат таблицы, которые открываются как обычный список. Если команды «Все функции» в меню нет, её включают в параметрах (об этом ниже).

Для анализа — не просто посмотреть записи, а свести остатки и обороты — подходят Отчёты → Универсальный отчёт и Консоль запросов. Разработчику движения регистра удобно смотреть прямо из отладчика, выполнив запрос в окне Вычислить выражение. Разберём каждый способ: когда он уместен, какие пути нажимать и что именно вы увидите.

С чего начать: какие инструменты открывают регистр

Способ зависит от того, кто вы и что нужно получить. Сравнение по сути:

ИнструментКомуЧто показываетНужен доступ
Все функцииАдминистратор, разработчикСырые записи таблицы регистраПраво на «Все функции»
Универсальный отчётБухгалтер, аналитикОстатки/обороты с группировкой и отборомОбычный пользователь
Консоль запросовРазработчикЛюбой срез через язык запросовПраво запуска внешних обработок
ОтладчикРазработчикЗначения во время выполнения кодаЗапуск из конфигуратора

Если нужно разово заглянуть в таблицу и свериться — Все функции. Если собрать остатки по складам или обороты за период — Универсальный отчёт. Если проверить гипотезу сложным запросом — Консоль. Если ловите, почему документ сформировал «не те» движения, — отладчик.

Команда «Все функции» по умолчанию скрыта. Нажмите кнопку Главное меню (значок в левом верхнем углу окна) → Сервис → Параметры и поставьте флажок Отображать команду "Все функции". После этого пункт Все функции появится в Главном меню.

Виды регистров и что лежит в их таблицах

Прежде чем смотреть, поймите, что именно вы увидите. В 1С 8.3 четыре вида регистров, и структура у них разная.

🗂 Регистр сведений — хранит значения, привязанные к набору измерений (например, цена номенклатуры по типу цен на дату). Бывает периодическим и непериодическим, независимым или подчинённым регистратору.

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

📒 Регистр бухгалтерии — движения по счетам с корреспонденцией, субконто, количеством и валютой. Это основа бухгалтерских итогов.

⏱ Регистр расчёта — хранит результаты расчётов (начисления и удержания в ЗУП) с привязкой к периоду действия, периоду регистрации и базовому периоду. Его записи удобнее смотреть через отчёты конфигурации, а не напрямую: без учёта вытеснения и перерасчётов сырые строки легко прочитать неверно.

У каждой записи регистра накопления и бухгалтерии есть поля Регистратор (документ, создавший движение), Период, Активность и для накопления — ВидДвижения (Приход или Расход). Если запись неактивна (Активность = Ложь), она не участвует в расчёте остатков, хотя физически в таблице есть. Это первое, что проверяют, когда «движения есть, а остатка нет».

Просмотр через «Все функции» и список регистра

Самый прямой способ увидеть сырые записи.

  1. Откройте Главное меню → Все функции.
  2. Разверните нужную ветку: Регистры сведений, Регистры накопления, Регистры бухгалтерии или Регистры расчёта.
  3. Дважды щёлкните по имени регистра — откроется таблица со всеми записями.

В открытом списке работают стандартные инструменты командной панели: отбор по значению в колонке (правой кнопкой по ячейке → команда отбора), сортировка, настройка состава колонок через меню Ещё → Изменить форму. Чтобы быстро найти движения конкретного документа, поставьте отбор по колонке Регистратор.

Таблица показывает физические записи «как есть», без свёртки. Для регистра оборотов вы увидите каждую строку движения отдельно — это нормально. Итоговые остатки здесь не считаются, для них нужен отчёт или запрос.

Этот способ не требует программирования, но требует права на команду «Все функции» — у рядового пользователя его обычно нет, и это правильно: прямой доступ к таблицам дают администраторам и разработчикам.

Универсальный отчёт: остатки и обороты без кода

Когда нужно не просто посмотреть записи, а получить остатки по измерениям или обороты за период, удобнее Отчёты → Универсальный отчёт. Он доступен обычному пользователю и не требует внешних обработок.

Порядок работы:

  1. Откройте Отчёты → Универсальный отчёт (в типовых конфигурациях на базе БП 3.0, ЗУП 3.1, УТ 11 он в разделе Отчёты).
  2. В верхней части формы выберите тип источника — Регистр накопления, Регистр сведений или Регистр бухгалтерии.
  3. Выберите сам регистр из списка.
  4. Укажите таблицу: Остатки, Обороты, Остатки и обороты — для накопления; Срез последних или Срез первых — для периодического регистра сведений.
  5. Нажмите Настройки, задайте период, отборы, группировки по измерениям и выводимые ресурсы.
  6. Сформировать.

Так, по регистру ТоварыНаСкладах вы получите остатки по складам и номенклатуре на дату; по регистру продаж — обороты за месяц с группировкой по менеджеру. Настройку можно сохранить как вариант отчёта и переиспользовать.

💡 Универсальный отчёт работает через те же виртуальные таблицы, что и запрос, поэтому цифры в нём совпадут с правильно написанным запросом. Если расходятся — почти всегда дело в отборе или периоде, а не в данных.

Консоль запросов: гибкий разбор данных регистра

Когда штатного отчёта не хватает — нужен нестандартный срез, соединение двух регистров или проверка гипотезы «а что вернёт такой запрос», — используют Консоль запросов. Это внешняя обработка: она поставляется на диске ИТС и встроена в ряд типовых конфигураций.

Порядок:

  1. Откройте Консоль. Если она есть в конфигурации — через список обработок; если нет — Файл → Открыть и укажите файл обработки .epf.
  2. В поле текста запроса наберите запрос либо соберите его мышью в конструкторе (кнопка вызова конструктора на панели обработки).
  3. Задайте значения параметров (&Дата, &Склад и т.п.) на вкладке параметров.
  4. Выполните запрос — результат выводится таблицей, его видно построчно и можно выгрузить.

Для регистра запрос почти всегда обращается к виртуальной таблице. Пример — обороты по складу за период:

ВЫБРАТЬ
    Обороты.Номенклатура,
    Обороты.КоличествоПриход,
    Обороты.КоличествоРасход
ИЗ
    РегистрНакопления.ТоварыНаСкладах.Обороты(
        &НачалоПериода,
        &КонецПериода,
        ,
        Склад = &Склад) КАК Обороты

Для запуска внешних обработок нужно соответствующее право. В типовых конфигурациях рядовому пользователю его не дают — открывать Консоль должен администратор или разработчик в тестовой базе.

💡 В Консоли удобно сравнивать результат виртуальной и основной таблицы: сначала выполните запрос к .Остатки, затем к основной таблице с группировкой — увидите, совпадают ли итоги и не теряются ли неактивные движения.

Как посмотреть движения регистра в отладчике

Разработчику движения часто нужно увидеть в контексте выполнения кода — например, понять, почему при проведении документа сформировались не те суммы.

Прямого «браузера регистра» в отладчике нет: таблицу регистра получают запросом. Рабочий приём:

  1. В конфигураторе поставьте точку останова в модуле проведения документа (в процедуре обработки проведения).
  2. Запустите Отладка → Начать отладку (F5) и проведите документ в базе.
  3. Когда выполнение остановится, откройте Отладка → Вычислить выражение (Shift+F9).
  4. Впишите в окно текст запроса к виртуальной таблице регистра и выполните его — результат появится в нижней таблице окна.

Пример выражения для окна «Вычислить выражение»:

Запрос = Новый Запрос(
    "ВЫБРАТЬ
    |   Остатки.Склад,
    |   Остатки.Номенклатура,
    |   Остатки.КоличествоОстаток
    |ИЗ
    |   РегистрНакопления.ТоварыНаСкладах.Остатки(&Дата, ) КАК Остатки");
Запрос.УстановитьПараметр("Дата", ТекущаяДата());
Результат = Запрос.Выполнить().Выгрузить();

Переменную Результат затем раскрывают в окне Табло или двойным щелчком — видно построчно, что вернул регистр. Записи, которые документ только собирается записать, лежат в наборе Движения.ТоварыНаСкладах объекта документа — его тоже можно раскрыть в табло до записи.

Отладка идёт в рабочей или тестовой базе. Проведение документа в отладке записывает реальные движения. Для экспериментов используйте копию базы, а не рабочую.

Остатки, обороты и срезы: виртуальные таблицы регистра

Главное, что путает новичков: в запросе к регистру есть основная таблица и есть виртуальные. Для анализа почти всегда нужны виртуальные — они считают итоги за вас.

Для регистра накопления:

  • .Остатки(Период, Отбор) — состояние на момент времени;
  • .Обороты(НачалоПериода, КонецПериода, Периодичность, Отбор) — приход и расход за интервал;
  • .ОстаткиИОбороты(...) — остаток на начало, обороты и остаток на конец одной выборкой.

Для периодического регистра сведений:

  • .СрезПоследних(Период, Отбор) — последнее значение на дату (например, актуальная цена);
  • .СрезПервых(Период, Отбор) — первое значение.

Для регистра бухгалтерии — .Остатки, .Обороты, .ОстаткиИОбороты, а также .ДвиженияССубконто для детальной расшифровки.

Третий параметр у .Обороты — периодичность. Если указать Период.День, Период.Месяц или Период.Квартал, платформа вернёт обороты, разбитые по этим интервалам, а не одной итоговой суммой. Это удобно, когда нужна динамика по месяцам без ручной группировки. Если периодичность не задана, вернётся один итог за весь интервал.

Условия отбора передавайте в параметры виртуальной таблицы (в скобках после её имени), а не в секцию ГДЕ. Параметр внутри скобок отсекает лишние данные ещё на уровне расчёта итогов, а ГДЕ фильтрует уже посчитанный результат — на больших регистрах это разница в разы по скорости.

Простой запрос остатков по одному складу:

ВЫБРАТЬ
    Остатки.Номенклатура,
    Остатки.КоличествоОстаток
ИЗ
    РегистрНакопления.ТоварыНаСкладах.Остатки(
        &Дата,
        Склад = &Склад) КАК Остатки

Типичные ошибки и оптимизация запросов к регистрам

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

Диагностика: выберите симптом

Короткий свод правил оптимизации:

  • ✅ берите данные из виртуальных таблиц (Остатки, Обороты, срезы), а не из основной с группировкой;
  • ✅ условия — в параметры виртуальной таблицы, минимум в ГДЕ;
  • ✅ один запрос вместо запроса в цикле; список отбора передавайте параметром-массивом;
  • ✅ в отчётах ограничивайте период — не запрашивайте «все обороты за всё время»;
  • ✅ порядок измерений в регистре влияет на индексы: частый отбор ставьте по первым измерениям.

Частые вопросы

Чем отличается основная таблица регистра от виртуальной?
Основная таблица содержит физические записи движений без свёртки. Виртуальные таблицы (Остатки, Обороты, срезы) рассчитывают итоги средствами платформы и возвращают готовый результат — для анализа нужны именно они.
Почему движения в регистре есть, а остаток нулевой?
Чаще всего записи помечены Активность = Ложь либо приход и расход в одном периоде взаимно погасились. Откройте таблицу регистра через «Все функции» и проверьте колонки Активность и ВидДвижения.
Можно ли посмотреть регистр, не будучи программистом?
Да. Универсальный отчёт (Отчёты → Универсальный отчёт) доступен обычному пользователю и позволяет выбрать регистр, его таблицу, период и группировки без единой строки кода.
Где взять Консоль запросов?
Это внешняя обработка. Она поставляется на диске ИТС и встроена в ряд типовых конфигураций (ищите в списке обработок или открывайте файл .epf через Файл → Открыть). Для запуска нужно право на интерактивное открытие внешних обработок.
Как увидеть, какой документ создал движение?
В таблице регистра включите или найдите колонку Регистратор и поставьте по ней отбор — это ссылка на документ-источник. В запросе то же поле доступно как Регистратор у основной таблицы регистра накопления или бухгалтерии.