Регистр накопления на экране пользователя: список, отчёт, форма документа

· 10 мин

Содержание

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

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

С чего начать: кто и что должен видеть

Регистр накопления хранит движения: приход и расход (у регистра остатков) или просто обороты. Голый список движений полезен разработчику и аудитору. Бухгалтеру и кладовщику нужен ответ на вопрос «сколько осталось» или «сколько продали за месяц».

Поэтому сначала решите, какую задачу закрывает вывод:

  • 🔍 проверить движения конкретного документа — хватит команды в форме документа;
  • 📋 посмотреть все записи с отбором и сортировкой — подойдёт стандартная форма списка;
  • 📊 остатки и обороты за период — нужен отчёт на СКД;
  • 🧾 подставить остатки в документ — заполнение табличной части запросом;
  • 🖥 постоянная панель остатков на рабочем месте — динамический список на форме.
Что нужно увидеть пользователю?

Способ 1. Список регистра через подсистему и командный интерфейс

Самый короткий путь вывести регистр накопления в интерфейс. Работает в любой конфигурации, где вы можете открыть конфигуратор и править объекты.

  1. Откройте регистр в дереве конфигурации: Регистры накопления → <имя регистра>, двойной щелчок.
  2. На вкладке «Основные» проверьте флажок «Использовать стандартные команды». Без него платформа не создаст команду открытия списка.
  3. На вкладке «Подсистемы» отметьте раздел, где регистр должен появиться (например, «Склад»).
  4. Откройте эту подсистему, в контекстном меню выберите «Открыть командный интерфейс». Найдите команду регистра в группе «Панель навигации» или «Панель действий» и включите видимость.
  5. Обновите конфигурацию базы данных (F7) и запустите режим «1С:Предприятие».

Команда появится в разделе. По умолчанию откроется автоматическая форма списка. Если нужны свои колонки, отборы или подвал с итогами, создайте форму списка: вкладка «Формы» регистра, кнопка добавления формы, тип «Форма списка».

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

Почему в списке нет кнопки «Создать»

Регистр накопления всегда подчинён регистратору. Записи в него пишет документ при проведении, поэтому ручного ввода в форме списка нет. Если нужно поправить движения, правьте или перепроводите документ-основание. В типовых конфигурациях на базе БСП для ручных правок обычно есть отдельный документ корректировки регистров.

Вариант без конфигуратора: «Все функции»

В пользовательском режиме любой регистр можно открыть без доработок:

  1. Откройте главное меню (кнопка с тремя полосками слева вверху) → Сервис → Параметры.
  2. Включите флажок «Отображать команду “Все функции”».
  3. Снова главное меню → Все функции → ветка Регистры накопления → нужный регистр.

Список откроется, если у роли пользователя есть право «Просмотр». Это рабочий приём для проверки движений в типовой без правки конфигурации.

Способ 2. Отчёт на СКД: остатки и обороты за период

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

Создание отчёта

  1. В дереве конфигурации: Отчеты → Добавить. Задайте имя, например ОстаткиТоваров.
  2. На вкладке «Основные» нажмите «Открыть схему компоновки данных», подтвердите создание основной схемы.
  3. Добавьте набор данных «Запрос» и откройте конструктор запроса.
  4. Выберите виртуальную таблицу регистра ОстаткиИОбороты, перенесите измерения и поля остатков и оборотов.
  5. На вкладке «Настройки» схемы добавьте группировку и выберите поля.

Пример текста запроса для регистра остатков ТоварыНаСкладах:

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

СКД сама создаст параметры НачалоПериода и КонецПериода. На вкладке «Параметры» удобно добавить параметр типа «Стандартный период» и связать с ним оба: пользователь выберет период одним полем.

Конец периода передавайте как конец дня. Если в параметр попадёт дата с временем 00:00:00, движения последнего дня в отчёт не войдут, и расход за 31-е «потеряется».

Как вывести отчёт в раздел

  • Включите отчёт в ту же подсистему, что и регистр.
  • В командном интерфейсе подсистемы найдите команду отчёта в группе «Панель действий → Отчеты» и включите видимость.
  • Дайте ролям право «Просмотр» на отчёт.

Без программирования: универсальный отчёт

В конфигурациях на БСП (Бухгалтерия 3.0, УТ 11, ЗУП 3.1) есть универсальный отчёт. В нём выбирают тип объекта «Регистр накопления», сам регистр и таблицу: остатки, обороты или остатки и обороты. Найти его проще всего через Все функции → Отчеты или поиском по разделу отчётов. Для разовой проверки остатков это быстрее, чем писать СКД.

Способ 3. Движения регистра в форме документа

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

  1. Откройте документ в конфигураторе, вкладка «Движения». Убедитесь, что регистр отмечен: документ должен быть его регистратором.
  2. Откройте форму документа и перейдите на вкладку «Командный интерфейс» (в левом верхнем окне редактора формы).
  3. Раскройте Панель навигации → Перейти. Там уже есть команда регистра с отбором по регистратору. Включите ей видимость.
  4. Обновите конфигурацию.

В форме документа появится ссылка с названием регистра. Она откроет список, отфильтрованный по текущему документу.

В типовых на БСП есть общая кнопка просмотра движений документа (в Бухгалтерии 3.0 это кнопка с надписью «ДтКт» в командной панели). Она показывает все регистры разом. Свою ссылку на регистр в панели навигации стоит добавлять, когда регистр ваш, а не типовой.

Способ 4. Остатки регистра в табличной части документа

Частая задача: кнопка «Заполнить остатками» в документе списания или перемещения. Данные берут запросом к виртуальной таблице Остатки и переносят в табличную часть.

Обработчик команды формы для регистра ТоварыНаСкладах и табличной части Товары:

&НаКлиенте
Процедура ЗаполнитьОстатками(Команда)
	ЗаполнитьОстаткамиНаСервере();
КонецПроцедуры

&НаСервере
Процедура ЗаполнитьОстаткамиНаСервере()

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

	Если Объект.Ссылка.Пустая() Тогда
		Момент = Неопределено; // текущие остатки
	Иначе
		Момент = Новый Граница(Объект.Ссылка.МоментВремени(), ВидГраницы.Исключая);
	КонецЕсли;

	Запрос.УстановитьПараметр("Момент", Момент);
	Запрос.УстановитьПараметр("Склад", Объект.Склад);

	Объект.Товары.Очистить();
	Выборка = Запрос.Выполнить().Выбрать();
	Пока Выборка.Следующий() Цикл
		НоваяСтрока = Объект.Товары.Добавить();
		ЗаполнитьЗначенияСвойств(НоваяСтрока, Выборка);
	КонецЦикла;

КонецПроцедуры

Что здесь важно:

  • 🧭 Граница «Исключая». Для уже записанного документа остаток берётся на момент до него. Иначе при перезаполнении проведённого документа он «увидит» собственный расход.
  • 🎯 Отбор в параметрах таблицы. Условие Склад = &Склад стоит внутри скобок виртуальной таблицы, а не в ГДЕ. Так платформа отбирает данные до расчёта остатков.
  • 🧹 Очистка перед заполнением. Без Очистить() повторное нажатие удвоит строки.

Команду ЗаполнитьОстатками создайте на вкладке «Команды» формы и перетащите в командную панель табличной части.

Панель остатков прямо на форме

Если остатки нужны перед глазами постоянно, добавьте на форму реквизит типа ДинамическийСписок. В его свойствах включите «Произвольный запрос» и напишите запрос к той же виртуальной таблице Остатки. Отбор по складу передайте параметром в ПриСозданииНаСервере:

Список.Параметры.УстановитьЗначениеПараметра("Склад", Объект.Склад);

При смене склада в форме обновляйте параметр в обработчике ПриИзменении поля.

Права и роли: почему регистр не виден пользователю

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

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

ПравоЧто даётКому давать
ЧтениеЧтение данных программно и в запросахВсем, чьи документы читают регистр при проведении
ПросмотрОткрыть список регистра в интерфейсеТем, кто смотрит движения вручную
ИзменениеЗапись движений программноРолям, которые проводят документы-регистраторы
РедактированиеИнтерактивная правка в формеОбычно никому, кроме администратора
Управление итогамиПересчёт и настройка итоговАдминистратору

Порядок проверки:

  1. Конфигуратор → Общие → Роли → роль пользователя → регистр. Отмечено ли «Просмотр»?
  2. Командный интерфейс подсистемы → колонка видимости по ролям. Не снят ли флажок у этой роли?
  3. Администрирование → Пользователи (в БСП — через группы доступа): назначен ли пользователю профиль с нужной ролью?

Если в роли настроены ограничения на уровне записей (RLS), пользователь увидит только часть движений. Остатки в отчёте у него будут меньше, чем у администратора. Это не ошибка отчёта, а работа ограничений доступа.

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

Скорость на больших объёмах

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

Правила для запросов

  • ⚡ Только виртуальные таблицы для остатков. Сумма по физической таблице движений с ВЫБОР КОГДА ВидДвижения пересчитывает всю историю. Таблица Остатки берёт готовые итоги.
  • 🎯 Отборы — в параметры виртуальной таблицы. Остатки(&Период, Склад = &Склад) работает в разы быстрее, чем тот же отбор в ГДЕ.
  • 📅 Текущие остатки — без даты. Если параметр периода не заполнен, платформа читает итоги на текущий момент без досчёта по движениям.
  • 🗂 Индексы измерений. У измерений, по которым часто фильтруют, в свойствах включите «Индексировать».

Итоги регистра

НастройкаГдеЭффект
Использование итоговВсе функции → Стандартные → Управление итогамиБез итогов остатки считаются по всем движениям
Период рассчитанных итоговТам жеСдвиг к текущему месяцу сокращает досчёт
Разделение итоговСвойство регистра в конфигуратореМеньше блокировок при параллельном проведении
АгрегатыТолько у оборотных регистровУскоряют отчёты по оборотам за периоды

Пересчёт итогов на большой базе нагружает сервер и может идти часами. Запускайте его вне рабочего времени, после резервной копии, иначе проведение документов у пользователей будет тормозить.

Динамический список

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

Ошибки, из-за которых данных регистра не видно

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

Архитектурные решения, о которых жалеют потом

  • 🧱 Лишние измерения. Каждое измерение умножает число строк итогов. Комментарий или контрагент-получатель часто достаточно хранить реквизитом, а не измерением.
  • 🔀 Один регистр на всё. Регистр «Движения всего» с десятком измерений, где половина пустая, медленно считается и плохо читается в отчётах. Два узких регистра проще.
  • 🧮 Остатки там, где нужны обороты. Если остаток по смыслу не нужен (продажи, выручка), делайте оборотный регистр: у него есть агрегаты.

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

Можно ли вывести регистр накопления в интерфейс без конфигуратора?
Да, для просмотра. Включите в параметрах команду «Все функции» и откройте регистр из ветки «Регистры накопления». Добавить его в раздел постоянно без изменения конфигурации нельзя.
Как показать регистр в типовой конфигурации, не снимая её с поддержки?
Через расширение конфигурации: заимствуйте подсистему и регистр, добавьте в расширение отчёт или форму. Основная конфигурация остаётся на поддержке.
Почему в форме списка регистра нельзя добавить запись?
Регистр накопления подчинён регистратору. Записи создаёт документ при проведении, поэтому ручного ввода в списке нет.
Чем таблица Остатки отличается от ОстаткиИОбороты?
Остатки даёт состояние на одну дату. ОстаткиИОбороты даёт начальный остаток, приход, расход и конечный остаток за период, удобна для оборотно-сальдовых отчётов.
Нужно ли право «Чтение», если пользователь только смотрит отчёт?
Да. Отчёт на СКД читает регистр с правами текущего пользователя, без права «Чтение» запрос не выполнится.