Регистры в 1С 8.3: как открыть и проанализировать данные
Содержание
Данные регистра в 1С 8.3 открываются из режима «1С:Предприятие» без конфигуратора. Самый быстрый путь — Главное меню → Все функции, там в ветках Регистры сведений, Регистры накопления и Регистры бухгалтерии лежат таблицы, которые открываются как обычный список. Если команды «Все функции» в меню нет, её включают в параметрах (об этом ниже).
Для анализа — не просто посмотреть записи, а свести остатки
и обороты — подходят Отчёты → Универсальный отчёт и Консоль запросов. Разработчику движения регистра удобно смотреть прямо из отладчика, выполнив запрос в окне Вычислить выражение. Разберём каждый способ: когда он уместен, какие пути нажимать и что именно вы увидите.
С чего начать: какие инструменты открывают регистр
Способ зависит от того, кто вы и что нужно получить. Сравнение по сути:
| Инструмент | Кому | Что показывает | Нужен доступ |
|---|---|---|---|
| Все функции | Администратор, разработчик | Сырые записи таблицы регистра | Право на «Все функции» |
| Универсальный отчёт | Бухгалтер, аналитик | Остатки/обороты с группировкой и отбором | Обычный пользователь |
| Консоль запросов | Разработчик | Любой срез через язык запросов | Право запуска внешних обработок |
| Отладчик | Разработчик | Значения во время выполнения кода | Запуск из конфигуратора |
Если нужно разово заглянуть в таблицу и свериться — Все функции. Если собрать остатки по складам или обороты за период — Универсальный отчёт. Если проверить гипотезу сложным запросом — Консоль. Если ловите, почему документ сформировал «не те» движения, — отладчик.
Команда «Все функции» по умолчанию скрыта. Нажмите кнопку Главное меню (значок в левом верхнем углу окна) → Сервис → Параметры и поставьте флажок Отображать команду "Все функции". После этого пункт Все функции появится в Главном меню.
Виды регистров и что лежит в их таблицах
Прежде чем смотреть, поймите, что именно вы увидите. В 1С 8.3 четыре вида регистров, и структура у них разная.
🗂 Регистр сведений — хранит значения, привязанные к набору измерений (например, цена номенклатуры по типу цен на дату). Бывает периодическим и непериодическим, независимым или подчинённым регистратору.
📦 Регистр накопления — хранит движения прихода и расхода. Делится на два типа: остатки (можно получить состояние на дату, например склад) и обороты (только суммы за период, например продажи).
📒 Регистр бухгалтерии — движения по счетам с корреспонденцией, субконто, количеством и валютой. Это основа бухгалтерских итогов.
⏱ Регистр расчёта — хранит результаты расчётов (начисления и удержания в ЗУП) с привязкой к периоду действия, периоду регистрации и базовому периоду. Его записи удобнее смотреть через отчёты конфигурации, а не напрямую: без учёта вытеснения и перерасчётов сырые строки легко прочитать неверно.
У каждой записи регистра накопления и бухгалтерии есть поля Регистратор (документ, создавший движение), Период, Активность и для накопления — ВидДвижения (Приход или Расход). Если запись неактивна (Активность = Ложь), она не участвует в расчёте остатков, хотя физически в таблице есть. Это первое, что проверяют, когда «движения есть, а остатка нет».
Просмотр через «Все функции» и список регистра
Самый прямой способ увидеть сырые записи.
- Откройте
Главное меню → Все функции. - Разверните нужную ветку:
Регистры сведений,Регистры накопления,Регистры бухгалтерииилиРегистры расчёта. - Дважды щёлкните по имени регистра — откроется таблица со всеми записями.
В открытом списке работают стандартные инструменты командной панели: отбор по значению в колонке (правой кнопкой по ячейке → команда отбора), сортировка, настройка состава колонок через меню Ещё → Изменить форму. Чтобы быстро найти движения конкретного документа, поставьте отбор по колонке Регистратор.
Таблица показывает физические записи «как есть», без свёртки. Для регистра оборотов вы увидите каждую строку движения отдельно — это нормально. Итоговые остатки здесь не считаются, для них нужен отчёт или запрос.
Этот способ не требует программирования, но требует права на команду «Все функции» — у рядового пользователя его обычно нет, и это правильно: прямой доступ к таблицам дают администраторам и разработчикам.
Универсальный отчёт: остатки и обороты без кода
Когда нужно не просто посмотреть записи, а получить остатки по измерениям или обороты за период, удобнее Отчёты → Универсальный отчёт. Он доступен обычному пользователю и не требует внешних обработок.
Порядок работы:
- Откройте
Отчёты → Универсальный отчёт(в типовых конфигурациях на базе БП 3.0, ЗУП 3.1, УТ 11 он в разделеОтчёты). - В верхней части формы выберите тип источника —
Регистр накопления,Регистр сведенийилиРегистр бухгалтерии. - Выберите сам регистр из списка.
- Укажите таблицу:
Остатки,Обороты,Остатки и обороты— для накопления;Срез последнихилиСрез первых— для периодического регистра сведений. - Нажмите
Настройки, задайте период, отборы, группировки по измерениям и выводимые ресурсы. Сформировать.
Так, по регистру ТоварыНаСкладах вы получите остатки по складам и номенклатуре на дату; по регистру продаж — обороты за месяц с группировкой по менеджеру. Настройку можно сохранить как вариант отчёта и переиспользовать.
💡 Универсальный отчёт работает через те же виртуальные таблицы, что и запрос, поэтому цифры в нём совпадут с правильно написанным запросом. Если расходятся — почти всегда дело в отборе или периоде, а не в данных.
Консоль запросов: гибкий разбор данных регистра
Когда штатного отчёта не хватает — нужен нестандартный срез, соединение двух регистров или проверка гипотезы «а что вернёт такой запрос», — используют Консоль запросов. Это внешняя обработка: она поставляется на диске ИТС и встроена в ряд типовых конфигураций.
Порядок:
- Откройте Консоль. Если она есть в конфигурации — через список обработок; если нет —
Файл → Открытьи укажите файл обработки.epf. - В поле текста запроса наберите запрос либо соберите его мышью в конструкторе (кнопка вызова конструктора на панели обработки).
- Задайте значения параметров (
&Дата,&Склади т.п.) на вкладке параметров. - Выполните запрос — результат выводится таблицей, его видно построчно и можно выгрузить.
Для регистра запрос почти всегда обращается к виртуальной таблице. Пример — обороты по складу за период:
ВЫБРАТЬ
Обороты.Номенклатура,
Обороты.КоличествоПриход,
Обороты.КоличествоРасход
ИЗ
РегистрНакопления.ТоварыНаСкладах.Обороты(
&НачалоПериода,
&КонецПериода,
,
Склад = &Склад) КАК Обороты
Для запуска внешних обработок нужно соответствующее право. В типовых конфигурациях рядовому пользователю его не дают — открывать Консоль должен администратор или разработчик в тестовой базе.
💡 В Консоли удобно сравнивать результат виртуальной и основной таблицы: сначала выполните запрос к .Остатки, затем к основной таблице с группировкой — увидите, совпадают ли итоги и не теряются ли неактивные движения.
Как посмотреть движения регистра в отладчике
Разработчику движения часто нужно увидеть в контексте выполнения кода — например, понять, почему при проведении документа сформировались не те суммы.
Прямого «браузера регистра» в отладчике нет: таблицу регистра получают запросом. Рабочий приём:
- В конфигураторе поставьте точку останова в модуле проведения документа (в процедуре обработки проведения).
- Запустите
Отладка → Начать отладку(F5) и проведите документ в базе. - Когда выполнение остановится, откройте
Отладка → Вычислить выражение(Shift+F9). - Впишите в окно текст запроса к виртуальной таблице регистра и выполните его — результат появится в нижней таблице окна.
Пример выражения для окна «Вычислить выражение»:
Запрос = Новый Запрос(
"ВЫБРАТЬ
| Остатки.Склад,
| Остатки.Номенклатура,
| Остатки.КоличествоОстаток
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки(&Дата, ) КАК Остатки");
Запрос.УстановитьПараметр("Дата", ТекущаяДата());
Результат = Запрос.Выполнить().Выгрузить();
Переменную Результат затем раскрывают в окне Табло или двойным щелчком — видно построчно, что вернул регистр. Записи, которые документ только собирается записать, лежат в наборе Движения.ТоварыНаСкладах объекта документа — его тоже можно раскрыть в табло до записи.
Отладка идёт в рабочей или тестовой базе. Проведение документа в отладке записывает реальные движения. Для экспериментов используйте копию базы, а не рабочую.
Остатки, обороты и срезы: виртуальные таблицы регистра
Главное, что путает новичков: в запросе к регистру есть основная таблица и есть виртуальные. Для анализа почти всегда нужны виртуальные — они считают итоги за вас.
Для регистра накопления:
.Остатки(Период, Отбор)— состояние на момент времени;.Обороты(НачалоПериода, КонецПериода, Периодичность, Отбор)— приход и расход за интервал;.ОстаткиИОбороты(...)— остаток на начало, обороты и остаток на конец одной выборкой.
Для периодического регистра сведений:
.СрезПоследних(Период, Отбор)— последнее значение на дату (например, актуальная цена);.СрезПервых(Период, Отбор)— первое значение.
Для регистра бухгалтерии — .Остатки, .Обороты, .ОстаткиИОбороты, а также .ДвиженияССубконто для детальной расшифровки.
Третий параметр у .Обороты — периодичность. Если указать Период.День, Период.Месяц или Период.Квартал, платформа вернёт обороты, разбитые по этим интервалам, а не одной итоговой суммой. Это удобно, когда нужна динамика по месяцам без ручной группировки. Если периодичность не задана, вернётся один итог за весь интервал.
Условия отбора передавайте в параметры виртуальной таблицы (в скобках после её имени), а не в секцию ГДЕ. Параметр внутри скобок отсекает лишние данные ещё на уровне расчёта итогов, а ГДЕ фильтрует уже посчитанный результат — на больших регистрах это разница в разы по скорости.
Простой запрос остатков по одному складу:
ВЫБРАТЬ
Остатки.Номенклатура,
Остатки.КоличествоОстаток
ИЗ
РегистрНакопления.ТоварыНаСкладах.Остатки(
&Дата,
Склад = &Склад) КАК Остатки
Типичные ошибки и оптимизация запросов к регистрам
Когда цифры «не те» или отчёт считается минутами, причина почти всегда в одном из нескольких шаблонных промахов.
Активность движений и корректность параметра периода (момент времени «на начало» или «на конец» дня). Неактивные движения в остаток не попадают.ГДЕ поверх пустого результата или период не включает дату движения. Переносите условие в параметры виртуальной таблицы и проверьте границы периода..Обороты. Переключитесь на виртуальную таблицу — она берёт готовые итоги.Короткий свод правил оптимизации:
- ✅ берите данные из виртуальных таблиц (
Остатки,Обороты, срезы), а не из основной с группировкой; - ✅ условия — в параметры виртуальной таблицы, минимум в
ГДЕ; - ✅ один запрос вместо запроса в цикле; список отбора передавайте параметром-массивом;
- ✅ в отчётах ограничивайте период — не запрашивайте «все обороты за всё время»;
- ✅ порядок измерений в регистре влияет на индексы: частый отбор ставьте по первым измерениям.
Частые вопросы
Чем отличается основная таблица регистра от виртуальной?
Остатки, Обороты, срезы) рассчитывают итоги средствами платформы и возвращают готовый результат — для анализа нужны именно они.Почему движения в регистре есть, а остаток нулевой?
Активность = Ложь либо приход и расход в одном периоде взаимно погасились. Откройте таблицу регистра через «Все функции» и проверьте колонки Активность и ВидДвижения.Можно ли посмотреть регистр, не будучи программистом?
Отчёты → Универсальный отчёт) доступен обычному пользователю и позволяет выбрать регистр, его таблицу, период и группировки без единой строки кода.Где взять Консоль запросов?
.epf через Файл → Открыть). Для запуска нужно право на интерактивное открытие внешних обработок.Как увидеть, какой документ создал движение?
Регистратор и поставьте по ней отбор — это ссылка на документ-источник. В запросе то же поле доступно как Регистратор у основной таблицы регистра накопления или бухгалтерии.