Журнал документов в 1С 8.3: от нового объекта метаданных до готовой формы списка

· 9 мин

Содержание

Журнал документов создают в конфигураторе 1С 8.3 так: в дереве конфигурации щёлкните правой кнопкой по ветке Журналы документов → Добавить, укажите имя, отметьте регистрируемые документы, опишите графы и обновите конфигурацию базы данных (F7). После этого в режиме 1С:Предприятие появится единый список, в котором видны документы разных видов.

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

Что подготовить до создания журнала

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

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

Что проверить заранее:

  • 📄 Документы уже существуют в конфигурации. Журнал только регистрирует их, создать документ из него на уровне метаданных нельзя.
  • 🧩 Общие реквизиты шапки. Посмотрите, какие поля есть у всех документов будущего журнала: организация, контрагент, склад, сумма. Именно они станут графами.
  • 🔒 Режим поддержки. В типовой конфигурации, стоящей на поддержке, сначала включите возможность изменений: Конфигурация → Поддержка → Настройка поддержки.
  • 💾 Копия базы. Обновление структуры перестраивает таблицы, поэтому перед F7 на рабочей базе выгрузите .dt или сделайте копию средствами СУБД.

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

Создание журнала документов в конфигураторе: пошагово

Порядок действий одинаков для любой конфигурации на платформе 8.3, будь то БП, ЗУП, УТ или собственная разработка.

Шаг 1. Добавьте объект

  1. Откройте конфигуратор и дерево конфигурации (Конфигурация → Открыть конфигурацию).
  2. Найдите ветку Журналы документов — она стоит сразу после ветки Документы.
  3. Правый клик → Добавить. Откроется окно редактирования нового объекта.
  4. Заполните Имя латиницей или кириллицей без пробелов, например СкладскиеДокументы. Синоним (Складские документы) подставится сам — поправьте его под то, что увидит пользователь.

Шаг 2. Отметьте регистрируемые документы

В свойствах журнала есть параметр Регистрируемые документы. Откройте его и поставьте флажки у нужных видов: например ПоступлениеТоваров, РеализацияТоваров, ПеремещениеТоваров.

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

Шаг 3. Опишите графы

Графа — это колонка журнала, которая собирает данные из реквизитов разных документов. Стандартные поля (Дата, Номер, Ссылка, Тип, Проведен, ПометкаУдаления) добавлять не нужно, они есть всегда.

  1. На вкладке с графами нажмите Добавить, задайте имя графы, например Склад.
  2. В свойстве Ссылки отметьте реквизит каждого документа, который должен попадать в эту колонку.
  3. Повторите для остальных колонок: Контрагент, СуммаДокумента, Ответственный.

Главный приём здесь — реквизиты не обязаны называться одинаково. У поступления поле может называться Поставщик, у реализации — Покупатель, а в журнале оба окажутся в одной графе Контрагент.

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

Шаг 4. Обновите конфигурацию базы данных

Нажмите F7 или Конфигурация → Обновить конфигурацию базы данных. Платформа создаст таблицу журнала и заполнит её строками по уже существующим документам.

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

Форма списка журнала: колонки и оформление

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

  1. В окне журнала откройте вкладку Формы и нажмите кнопку добавления у основной формы списка.
  2. Конструктор предложит тип формы — выберите Форма списка и нажмите Готово.
  3. Конструктор создаст реквизит формы Список типа ДинамическийСписок с основной таблицей журнала и разместит таблицу на форме.

Дальше колонки настраиваются в редакторе формы: перетащите нужные графы из реквизита Список в элемент-таблицу. Хороший минимальный набор — Дата, Номер, Тип, Склад, Контрагент, СуммаДокумента.

Что ещё стоит сделать:

  • 🎨 Условное оформление. Например, серым шрифтом выделить непроведённые документы (поле Проведен равно Ложь).
  • 📐 Ширина и порядок колонок. Дату и номер ставьте первыми и узкими, сумму — вправо.
  • 🔢 Итоги. Для графы суммы можно включить подвал таблицы и вывести итог по видимым строкам.

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

Отборы журнала документов и параметры выборки

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

Такой отбор задают на сервере при создании формы:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

	Если Параметры.Свойство("Склад") И ЗначениеЗаполнено(Параметры.Склад) Тогда
		ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
		ЭлементОтбора.ЛевоеЗначение  = Новый ПолеКомпоновкиДанных("Склад");
		ЭлементОтбора.ВидСравнения   = ВидСравненияКомпоновкиДанных.Равно;
		ЭлементОтбора.ПравоеЗначение = Параметры.Склад;
		ЭлементОтбора.Использование  = Истина;
	КонецЕсли;

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

Чтобы параметр Склад дошёл до формы, добавьте его в параметры формы (вкладка Параметры в редакторе формы) и передайте при открытии:

ПараметрыФормы = Новый Структура("Склад", ВыбранныйСклад);
ОткрытьФорму("ЖурналДокументов.СкладскиеДокументы.ФормаСписка", ПараметрыФормы);

Фильтр по периоду удобнее вывести на форму отдельным полем: создайте реквизит формы типа СтандартныйПериод и при его изменении пересобирайте отбор по полю Дата.

В типовых конфигурациях на БСП для этого есть готовые процедуры в общем модуле ОбщегоНазначенияКлиентСервер — используйте их, если дорабатываете типовое решение, чтобы код был в одном стиле.

Отбор по графе работает быстро, только если у графы включено индексирование. Об этом — в разделе про производительность.

Командный интерфейс: где журнал увидит пользователь

Сам по себе журнал в меню не появится. Его нужно включить в подсистему.

  1. В окне журнала откройте вкладку Подсистемы и отметьте нужную, например Склад.
  2. Откройте подсистему и её Командный интерфейс. Команда открытия журнала окажется в панели навигации.
  3. Перетащите её в группу Важное, если журнал — основной список раздела, и снимите видимость лишних ролей прямо в этой таблице.

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

Свои команды добавляют на вкладке Команды журнала. Типичные примеры:

  • 🖨️ печать реестра выделенных документов;
  • ✅ групповое перепроведение за период;
  • 📤 выгрузка списка в файл для сверки.

Если команда нужна только в форме журнала, в её свойстве «Группа» выберите группу командной панели формы, а не панели навигации.

Основные свойства объекта «Журнал документов»

Не все свойства журнала очевидны. Ниже — те, что реально влияют на работу.

СвойствоЧто задаётКогда менять
Имя / СинонимИмя в коде и название в интерфейсеВсегда при создании
Регистрируемые документыКакие виды документов попадают в журналПри создании и при добавлении новых документов
Графы (свойство «Ссылки»)Колонки и реквизиты, из которых они собираютсяКогда нужна общая колонка для разных документов
Индексирование графыИндекс по колонке в таблице журналаЕсли по графе часто отбирают или сортируют
Основная форма спискаКакая форма откроется по командеПосле создания своей формы
Основная форма для выбораФорма при выборе документа из поляЕсли журнал используют для выбора
Представление спискаЗаголовок списка в интерфейсеЕсли синоним не подходит как заголовок
Использовать стандартные командыПоявится ли команда открытия в подсистемеВыключают для служебных журналов

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

Права доступа к журналу в ролях

У журнала в редакторе роли всего два права: Чтение и Просмотр. Чтение позволяет получать данные из таблицы журнала программно и в запросах, просмотр — открывать журнал в интерфейсе.

Порядок настройки:

  1. Откройте нужную роль в ветке Общие → Роли.
  2. Найдите журнал в списке объектов и отметьте Чтение и Просмотр.
  3. Проверьте права на сами документы. Чтобы открыть документ из журнала, нужен просмотр документа; чтобы создать его кнопкой Создать — права на добавление и интерактивное добавление документа.

Если в базе используется ограничение доступа на уровне записей, учтите: ограничение, заданное для документа, на журнал само не переносится. Для права Чтение журнала условие задают отдельно, иначе пользователь увидит в журнале строки документов, которые ему открывать нельзя.

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

Производительность журнала и проверка перед выпуском

Таблица журнала растёт вместе с документами. Если в журнал попадают пять видов по 200 000 документов в год, через три года в нём около трёх миллионов строк.

Что держит журнал быстрым:

  • 🗂️ Индексируйте только нужные графы. Индекс ускоряет отбор, но замедляет запись каждого документа. Две-три индексированные графы — разумный предел.
  • 📆 Ограничивайте период. Откройте журнал с отбором по последнему месяцу, а не за всё время.
  • 🔁 Динамическое считывание данных у реквизита Список оставьте включённым: список подгружает строки порциями.
  • 🚫 Не включайте в журнал «всё подряд». Отдельный журнал на 30 видов документов полезен редко, а пишется при каждом сохранении.

Проверить скорость можно запросом в консоли запросов или в обработке:

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

Замерить время удобно замером производительности в режиме отладки (Отладка → Замер производительности) — он покажет, сколько занимает выполнение запроса и открытие формы.

Проверка журнала перед переносом в рабочую базу
Выполнено: 0 / 6

Частые ошибки при создании журнала

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

Колонка пустая у части строк. У графы не заполнена ссылка на реквизит этого вида документа. Откройте свойство «Ссылки» графы и отметьте реквизит.

Сумма или товар из табличной части не выводятся. Так и задумано платформой: журнал берёт только реквизиты шапки. Добавьте в документ реквизит шапки и заполняйте его при записи.

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

Журнал тормозит после доработки. Проверьте, не включили ли индексирование у всех граф подряд и не открывается ли список без отбора по периоду.

Можно ли добавить в журнал документ из расширения конфигурации?
В журнал основной конфигурации регистрируют документы основной конфигурации. Если документ создан в расширении, надёжнее сделать для него отдельный список или форму с динамическим списком на запросе.
Сколько журналов может быть в конфигурации?
Жёсткого лимита для практики нет. Ограничивает только нагрузка: каждый журнал добавляет запись при сохранении входящих в него документов.
Чем журнал отличается от динамического списка на произвольном запросе?
Журнал хранит данные в своей таблице и читается быстро, но замедляет запись. Произвольный запрос ничего не хранит и собирает данные при каждом открытии, зато не влияет на запись документов.
Можно ли удалить журнал из конфигурации без потери документов?
Да. Документы хранятся в своих таблицах, а журнал — только сводная копия. Перед удалением найдите обращения к журналу в коде через глобальный поиск, иначе модули перестанут компилироваться.
Почему в журнале не видна графа, хотя она описана?
Графу описали в метаданных, но не вывели на форму. Перетащите поле из реквизита Список в таблицу формы.