Отчеты и Аналитика · 12 мин
Как добавить регистратор в отчет 1С
Разбираем, как добавить регистратор в отчет 1С на СКД: настройка запроса, связей наборов данных, вывода документа-регистратора и расшифровки.
Регистратор в отчете 1С — это документ, который сформировал запись в регистре (накопления, сведений или бухгалтерии). Вывести его рядом с данными регистра нужно, когда пользователь хочет не просто видеть итоговые цифры, а проваливаться до конкретного документа: поступления товара, реализации, начисления зарплаты. В типовых отчетах такая детализация часто скрыта, и её приходится добавлять вручную через настройки СКД или доработку схемы компоновки.
Способ добавления зависит от того, как построен отчет. Если он работает на системе компоновки данных (СКД) — а это большинство отчетов в управляемых приложениях — задача сводится к изменению запроса набора данных и настройке полей. Если отчет написан программно с выводом в табличный документ, потребуется правка модуля объекта конфигуратором.
Ниже разобраны оба сценария: от простого — добавление регистратора через пользовательские настройки, до полноценной доработки запроса СКД в конфигураторе. Отдельно рассмотрены расшифровка до документа и типичные ошибки, из-за которых регистратор в отчете не появляется или выводится пустым.
Что такое регистратор и когда он нужен в отчете
Регистратор — это ссылка на документ, который создал движение по регистру. В таблицах регистров накопления и сведений (подчиненных регистратору) это служебное поле присутствует всегда, даже если в отчете оно не выводится. Поэтому технически «добавить регистратор» означает не создать данные, а достать уже существующее поле и показать его пользователю.
Практические ситуации, где без регистратора не обойтись: сверка оборотов по контрагенту с расшифровкой до первички, поиск документа, который сделал «лишнее» движение по складу, анализ начислений по сотруднику с переходом к конкретному документу. Во всех этих случаях пользователю нужна возможность кликнуть по строке и открыть документ.
Как понять, на чем построен отчет
Перед доработкой определите механизм отчета. Откройте отчет в режиме 1С:Предприятие и посмотрите на кнопку «Изменить вариант» или «Настройки»: если она есть и открывает форму с вкладками «Отбор», «Группировка», «Поля» — отчет на СКД, и у вас есть шанс решить задачу без конфигуратора. Если настроек нет или они минимальны — вероятно, вывод запрограммирован вручную.
В конфигураторе проверка еще проще: найдите отчет в дереве конфигурации и посмотрите, есть ли у него макет типа «Схема компоновки данных» (обычно называется «ОсновнаяСхемаКомпоновкиДанных»). Его наличие подтверждает, что доработка пойдет через СКД.
Попробуйте добавить регистратор через пользовательские настройки
Потребуется правка модуля отчета в конфигураторе
Используйте расширение конфигурации или внешний отчет
Добавление регистратора через настройки СКД без конфигуратора
Сначала попробуйте самый простой путь. Откройте отчет, нажмите «Изменить вариант» (или «Настройки» → «Расширенные») и перейдите на вкладку «Поля» или «Группировка». Если в списке доступных полей есть «Регистратор» — просто перетащите его в выбранные поля или добавьте группировку по этому полю. После нажатия «Сформировать» в отчете появится колонка с документами.
Этот способ сработает, только если разработчик включил поле Регистратор в набор данных и не отключил его видимость. Во многих типовых отчетах поле в запросе есть, но скрыто — тогда пользовательская настройка решает задачу за минуту. Если поля в списке нет, переходите к доработке схемы компоновки.
- 1Откройте отчет и нажмите «Изменить вариант»
- 2Перейдите на вкладку «Поля» и найдите «Регистратор» в доступных полях
- 3Добавьте поле в структуру отчета или создайте группировку по нему
- 4Сформируйте отчет и проверьте, что документы выводятся и открываются двойным кликом
- 5Сохраните вариант отчета, чтобы настройка не потерялась
Добавление регистратора в запрос набора данных
Основной сценарий доработки: откройте конфигуратор, найдите отчет и откройте его основную схему компоновки данных. На вкладке «Наборы данных» откройте запрос. Если данные берутся из виртуальной таблицы регистра (например, ТоварыНаСкладах.ОстаткиИОбороты), добавьте в выборку поле Регистратор — оно доступно в виртуальных таблицах Обороты и ОстаткиИОбороты.
Пример фрагмента запроса:
ВЫБРАТЬ
ТоварыОбороты.Номенклатура КАК Номенклатура,
ТоварыОбороты.Регистратор КАК Регистратор,
СУММА(ТоварыОбороты.КоличествоОборот) КАК Количество
ИЗ
РегистрНакопления.ТоварыНаСкладах.Обороты(&НачалоПериода, &КонецПериода, Регистратор, ) КАК ТоварыОбороты
СГРУППИРОВАТЬ ПО
ТоварыОбороты.Номенклатура,
ТоварыОбороты.Регистратор
Обратите внимание на третий параметр виртуальной таблицы — периодичность. Чтобы поле Регистратор было доступно, укажите значение «Регистратор» или «Запись» (в зависимости от таблицы). Если оставить периодичность «Авто» или «Месяц», платформа не вернет регистраторы, и поле в запросе вызовет ошибку или останется пустым.
После изменения запроса перейдите на вкладку «Настройки» схемы компоновки: добавьте группировку по Регистратору под нужной группировкой (например, под Номенклатурой) или включите поле в выбранные поля детальных записей. Обновите конфигурацию базы данных, если меняли структуру, и сформируйте отчет для проверки.
Если данные собираются из нескольких наборов
В сложных отчетах данные объединяются из нескольких наборов данных со связями. Тогда регистратор нужно добавить в каждый набор, а на вкладке «Связи наборов данных» добавить связь по полю Регистратор. Без связи СКД перемножит строки, и в отчете появятся дубли с неверными суммами — это самая частая ошибка при такой доработке.
Настройка расшифровки до документа
Вывести колонку с регистратором — половина задачи. Чтобы пользователь мог открыть документ из ячейки отчета, СКД обычно справляется сама: если в поле выводится ссылка на документ, двойной клик по ячейке открывает его форму стандартной расшифровкой. Проверьте, что в настройках поля не отключен параметр «Расшифровка».
Если нужна расшифровка одного отчета другим (например, из оборотной ведомости — в карточку счета с регистраторами), настройте это на вкладке «Настройки» схемы компоновки в поле «Расшифровка» у группировки, либо обработайте событие ОбработкаРасшифровки в модуле формы отчета. Для типовых конфигураций часто проще использовать универсальный отчет, где детализация до регистратора включается настройкой.
Альтернативы: универсальный отчет и расширение конфигурации
Если дорабатывать типовой отчет нельзя или нецелесообразно, рассмотрите готовые альтернативы. В конфигурациях на БСП (Библиотека стандартных подсистем) есть «Универсальный отчет»: выберите в нем нужный регистр, укажите периодичность «Регистратор» — и получите данные с документами без всякой разработки. Это быстрый способ проверить, какие регистраторы формируют конкретные обороты.
Второй вариант — расширение конфигурации. Оно позволяет заимствовать типовой отчет, изменить его схему компоновки и не затрагивать основную конфигурацию. При обновлении типовой версии расширение сохранится, хотя его корректность после обновления нужно проверять. Третий путь — внешний отчет (файл .erf), который подключается через «Дополнительные отчеты и обработки» и вообще не влияет на конфигурацию.
Сравнение вариантов
Подходит, если поле Регистратор уже есть в наборе данных. Ограничение: не работает, когда поле скрыто разработчиком
Полный контроль над запросом и структурой. Ограничение: снимает объект с поддержки, требует прав разработчика
Сохраняет поддержку типовой конфигурации. Ограничение: требует проверки после каждого обновления
Быстро и без доработок. Ограничение: простая структура, нет сложных связей и оформления
Проверка результата и типичные ошибки
После доработки сформируйте отчет за период, где движения заведомо есть, и сверьте итоги: суммы по группировкам с регистратором должны совпадать с итогами без него. Если итоги «поплыли» — почти наверняка проблема в связях наборов данных или в дублировании строк из-за соединения таблиц без корректного условия.
Проверьте также пустые строки: если регистратор выводится пустым, убедитесь, что в виртуальной таблице указана периодичность «Регистратор», а само поле не обернуто в агрегатную функцию без группировки. В запросах с левым соединением пустой регистратор — нормальное явление для строк, где соединение не нашло пары.
Ограничения и границы самостоятельной работы
Самостоятельно безопасно делать три вещи: менять пользовательские настройки варианта отчета, строить универсальный отчет и работать с внешним отчетом в копии базы. Эти действия не затрагивают данные и легко откатываются.
К доработке в конфигураторе и расширениям переходите, если понимаете устройство СКД и имеете резервную копию. Риск здесь не в порче данных (отчеты данные не меняют), а в неверных цифрах, по которым примут решение: задвоенные суммы в отчете по продажам могут привести к ошибкам в управленческом учете. Если отчет используется для регламентированной отчетности, любую доработку проверяйте на тестовой базе и сверяйте с эталонными данными.
Что важно запомнить
Регистратор уже хранится в регистре — задача только вывести его. Сначала проверьте пользовательские настройки, затем доработайте запрос СКД с периодичностью «Регистратор», настройте связи наборов и группировки. Типовые отчеты меняйте через расширение, результат всегда сверяйте с итогами без детализации.
Частые вопросы
Почему поле «Регистратор» не появляется в списке доступных полей настройки?
Разработчик отчета не включил это поле в выборку запроса набора данных или отключил его доступность в схеме компоновки. Пользовательскими настройками это не обойти — нужно открыть схему в конфигураторе и добавить поле в запрос, либо использовать универсальный отчет по тому же регистру.
Можно ли добавить регистратор в отчет по регистру сведений?
Да, но только если регистр сведений подчинен регистратору (режим записи «Подчинение регистратору»). У независимых регистров сведений поля Регистратор нет в принципе — записи туда вносятся напрямую или обработками, и привязать их к документу невозможно.
Добавил регистратор, и суммы в отчете удвоились. Что делать?
Классический признак перемножения строк. Проверьте, нет ли в запросе соединения с таблицей, где одному регистратору соответствует несколько строк (например, с табличной частью документа). Если наборов данных несколько — откройте вкладку «Связи наборов данных» и добавьте связь по полю Регистратор.
Как открыть документ-регистратор прямо из ячейки отчета?
Если в ячейке выводится ссылка на документ, двойной клик обычно открывает его форму через стандартную расшифровку СКД. Если вместо этого появляется меню расшифровки — выберите пункт «Открыть». Когда открытие не работает, проверьте, что поле имеет тип ссылки, а не строковое представление документа.
Изменится ли типовой отчет после обновления конфигурации?
Если вы меняли отчет напрямую в конфигураторе — при обновлении изменения могут быть затерты, а сам объект потребует ручного сравнения. Доработка через расширение конфигурации при обновлении сохраняется, но её работоспособность нужно проверять: типовая схема могла измениться, и заимствованный отчет потребует корректировки.
Нужен ли регистратор в отчете, где показываются только остатки?
Нет, и технически это невозможно: таблица остатков хранит свернутые значения без привязки к документам. Если нужно понять, какие документы сформировали остаток, используйте виртуальную таблицу ОстаткиИОбороты с периодичностью «Регистратор» или стройте отчет по физической таблице движений регистра.