Журнал документов в 1С 8.3: от нового объекта метаданных до готовой формы списка
Содержание
Журнал документов
создают в конфигураторе 1С 8.3 так: в дереве конфигурации щёлкните правой кнопкой по ветке Журналы документов → Добавить, укажите имя, отметьте регистрируемые документы, опишите графы и обновите конфигурацию базы данных (F7). После этого в режиме 1С:Предприятие появится единый список, в котором видны документы разных видов.
Журнал не хранит собственных данных в привычном смысле. Это сводная таблица, куда платформа сама пишет строку при каждой записи зарегистрированного документа. Поэтому создание журнала — почти полностью работа с метаданными, а код понадобится только для особых отборов.
Что подготовить до создания журнала
Сначала решите, нужен ли вообще отдельный объект. Журнал оправдан, когда пользователи каждый день смотрят несколько видов документов вместе: приход, расход и перемещение по складу, или все кассовые документы.
Если сводный список нужен одному человеку раз в месяц, проще сделать отчёт или форму с динамическим списком на произвольном запросе. Журнал же добавляет таблицу в базу и запись в неё при каждом сохранении документа.
Что проверить заранее:
- 📄 Документы уже существуют в конфигурации. Журнал только регистрирует их, создать документ из него на уровне метаданных нельзя.
- 🧩 Общие реквизиты шапки. Посмотрите, какие поля есть у всех документов будущего журнала: организация, контрагент, склад, сумма. Именно они станут графами.
- 🔒 Режим поддержки. В типовой конфигурации, стоящей на поддержке, сначала включите возможность изменений:
Конфигурация → Поддержка → Настройка поддержки. - 💾 Копия базы. Обновление структуры перестраивает таблицы, поэтому перед
F7на рабочей базе выгрузите.dtили сделайте копию средствами СУБД.
Типовую конфигурацию надёжнее дорабатывать в отдельной копии базы, а в рабочую переносить через сравнение и объединение. Так проще обновляться потом.
Создание журнала документов в конфигураторе: пошагово
Порядок действий одинаков для любой конфигурации на платформе 8.3, будь то БП, ЗУП, УТ или собственная разработка.
Шаг 1. Добавьте объект
- Откройте конфигуратор и дерево конфигурации (
Конфигурация → Открыть конфигурацию). - Найдите ветку
Журналы документов— она стоит сразу после веткиДокументы. - Правый клик →
Добавить. Откроется окно редактирования нового объекта. - Заполните Имя латиницей или кириллицей без пробелов, например
СкладскиеДокументы. Синоним (Складские документы) подставится сам — поправьте его под то, что увидит пользователь.
Шаг 2. Отметьте регистрируемые документы
В свойствах журнала есть параметр Регистрируемые документы. Откройте его и поставьте флажки у нужных видов: например ПоступлениеТоваров, РеализацияТоваров, ПеремещениеТоваров.
Один документ может входить сразу в несколько журналов. Ограничения на это нет, но каждый журнал — это ещё одна запись при сохранении документа.
Шаг 3. Опишите графы
Графа — это колонка журнала, которая собирает данные из реквизитов разных документов. Стандартные поля (Дата, Номер, Ссылка, Тип, Проведен, ПометкаУдаления) добавлять не нужно, они есть всегда.
- На вкладке с графами нажмите
Добавить, задайте имя графы, напримерСклад. - В свойстве Ссылки отметьте реквизит каждого документа, который должен попадать в эту колонку.
- Повторите для остальных колонок:
Контрагент,СуммаДокумента,Ответственный.
Главный приём здесь — реквизиты не обязаны называться одинаково. У поступления поле может называться Поставщик, у реализации — Покупатель, а в журнале оба окажутся в одной графе Контрагент.
В графу можно отнести только реквизит шапки. Реквизиты табличной части в журнал не попадают: если нужна сумма по строкам, храните её отдельным реквизитом шапки.
Шаг 4. Обновите конфигурацию базы данных
Нажмите F7 или Конфигурация → Обновить конфигурацию базы данных. Платформа создаст таблицу журнала и заполнит её строками по уже существующим документам.
На больших базах это заполнение занимает заметное время. Обновление структуры требует монопольного доступа: пользователи на это время должны выйти из базы, поэтому планируйте его на нерабочие часы.
Форма списка журнала: колонки и оформление
Без собственной формы журнал откроется в автоматически сгенерированном списке. Для рабочего использования лучше создать свою.
- В окне журнала откройте вкладку
Формыи нажмите кнопку добавления у основной формы списка. - Конструктор предложит тип формы — выберите
Форма спискаи нажмитеГотово. - Конструктор создаст реквизит формы
СписоктипаДинамическийСписокс основной таблицей журнала и разместит таблицу на форме.
Дальше колонки настраиваются в редакторе формы: перетащите нужные графы из реквизита Список в элемент-таблицу. Хороший минимальный набор — Дата, Номер, Тип, Склад, Контрагент, СуммаДокумента.
Что ещё стоит сделать:
- 🎨 Условное оформление. Например, серым шрифтом выделить непроведённые документы (поле
ПроведенравноЛожь). - 📐 Ширина и порядок колонок. Дату и номер ставьте первыми и узкими, сумму — вправо.
- 🔢 Итоги. Для графы суммы можно включить подвал таблицы и вывести итог по видимым строкам.
Отдельная форма выбора нужна, если журнал будут открывать для выбора документа из поля ввода. Её создают тем же конструктором и назначают основной формой выбора.
Отборы журнала документов и параметры выборки
Пользователь и так может отфильтровать список через меню Ещё формы списка, где есть настройка отбора и сортировки. Но часто нужен отбор по умолчанию: «только мой склад» или «только текущая организация».
Такой отбор задают на сервере при создании формы:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Свойство("Склад") И ЗначениеЗаполнено(Параметры.Склад) Тогда
ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Склад");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = Параметры.Склад;
ЭлементОтбора.Использование = Истина;
КонецЕсли;
КонецПроцедуры
Чтобы параметр Склад дошёл до формы, добавьте его в параметры формы (вкладка Параметры в редакторе формы) и передайте при открытии:
ПараметрыФормы = Новый Структура("Склад", ВыбранныйСклад);
ОткрытьФорму("ЖурналДокументов.СкладскиеДокументы.ФормаСписка", ПараметрыФормы);
Фильтр по периоду удобнее вывести на форму отдельным полем: создайте реквизит формы типа СтандартныйПериод и при его изменении пересобирайте отбор по полю Дата.
В типовых конфигурациях на БСП для этого есть готовые процедуры в общем модуле ОбщегоНазначенияКлиентСервер — используйте их, если дорабатываете типовое решение, чтобы код был в одном стиле.
Отбор по графе работает быстро, только если у графы включено индексирование. Об этом — в разделе про производительность.
Командный интерфейс: где журнал увидит пользователь
Сам по себе журнал в меню не появится. Его нужно включить в подсистему.
- В окне журнала откройте вкладку
Подсистемыи отметьте нужную, напримерСклад. - Откройте подсистему и её
Командный интерфейс. Команда открытия журнала окажется в панели навигации. - Перетащите её в группу
Важное, если журнал — основной список раздела, и снимите видимость лишних ролей прямо в этой таблице.
В самом журнале пользователь получает стандартную кнопку Создать. Она раскрывается в список видов регистрируемых документов: новый приход или перемещение можно создать, не выходя из журнала.
Свои команды добавляют на вкладке Команды журнала. Типичные примеры:
- 🖨️ печать реестра выделенных документов;
- ✅ групповое перепроведение за период;
- 📤 выгрузка списка в файл для сверки.
Если команда нужна только в форме журнала, в её свойстве «Группа» выберите группу командной панели формы, а не панели навигации.
Основные свойства объекта «Журнал документов»
Не все свойства журнала очевидны. Ниже — те, что реально влияют на работу.
| Свойство | Что задаёт | Когда менять |
|---|---|---|
| Имя / Синоним | Имя в коде и название в интерфейсе | Всегда при создании |
| Регистрируемые документы | Какие виды документов попадают в журнал | При создании и при добавлении новых документов |
| Графы (свойство «Ссылки») | Колонки и реквизиты, из которых они собираются | Когда нужна общая колонка для разных документов |
| Индексирование графы | Индекс по колонке в таблице журнала | Если по графе часто отбирают или сортируют |
| Основная форма списка | Какая форма откроется по команде | После создания своей формы |
| Основная форма для выбора | Форма при выборе документа из поля | Если журнал используют для выбора |
| Представление списка | Заголовок списка в интерфейсе | Если синоним не подходит как заголовок |
| Использовать стандартные команды | Появится ли команда открытия в подсистеме | Выключают для служебных журналов |
Добавили новый документ в конфигурацию — не забудьте отметить его в журнале и привязать его реквизиты к графам. Иначе документ в журнале появится с пустыми колонками или не появится вовсе.
Права доступа к журналу в ролях
У журнала в редакторе роли всего два права: Чтение и Просмотр. Чтение позволяет получать данные из таблицы журнала программно и в запросах, просмотр — открывать журнал в интерфейсе.
Порядок настройки:
- Откройте нужную роль в ветке
Общие → Роли. - Найдите журнал в списке объектов и отметьте
ЧтениеиПросмотр. - Проверьте права на сами документы. Чтобы открыть документ из журнала, нужен просмотр документа; чтобы создать его кнопкой
Создать— права на добавление и интерактивное добавление документа.
Если в базе используется ограничение доступа на уровне записей, учтите: ограничение, заданное для документа, на журнал само не переносится. Для права Чтение журнала условие задают отдельно, иначе пользователь увидит в журнале строки документов, которые ему открывать нельзя.
В типовых конфигурациях на БСП новые роли лучше создавать по образцу существующих: там для журналов уже предусмотрены шаблоны ограничений.
Производительность журнала и проверка перед выпуском
Таблица журнала растёт вместе с документами. Если в журнал попадают пять видов по 200 000 документов в год, через три года в нём около трёх миллионов строк.
Что держит журнал быстрым:
- 🗂️ Индексируйте только нужные графы. Индекс ускоряет отбор, но замедляет запись каждого документа. Две-три индексированные графы — разумный предел.
- 📆 Ограничивайте период. Откройте журнал с отбором по последнему месяцу, а не за всё время.
- 🔁 Динамическое считывание данных у реквизита
Списокоставьте включённым: список подгружает строки порциями. - 🚫 Не включайте в журнал «всё подряд». Отдельный журнал на 30 видов документов полезен редко, а пишется при каждом сохранении.
Проверить скорость можно запросом в консоли запросов или в обработке:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Журнал.Ссылка,
| Журнал.Дата,
| Журнал.Тип,
| Журнал.Склад
|ИЗ
| ЖурналДокументов.СкладскиеДокументы КАК Журнал
|ГДЕ
| Журнал.Дата МЕЖДУ &Начало И &Окончание
| И Журнал.Склад = &Склад";
Запрос.УстановитьПараметр("Начало", НачалоМесяца(ТекущаяДата()));
Запрос.УстановитьПараметр("Окончание", КонецМесяца(ТекущаяДата()));
Запрос.УстановитьПараметр("Склад", Склад);
Выборка = Запрос.Выполнить().Выбрать();
Замерить время удобно замером производительности в режиме отладки (Отладка → Замер производительности) — он покажет, сколько занимает выполнение запроса и открытие формы.
Частые ошибки при создании журнала
Документ не появляется в журнале. Чаще всего его забыли отметить в регистрируемых документах. Второй вариант — конфигурацию сохранили, но не обновили конфигурацию базы данных.
Колонка пустая у части строк. У графы не заполнена ссылка на реквизит этого вида документа. Откройте свойство «Ссылки» графы и отметьте реквизит.
Сумма или товар из табличной части не выводятся. Так и задумано платформой: журнал берёт только реквизиты шапки. Добавьте в документ реквизит шапки и заполняйте его при записи.
Пользователь видит журнал, но документ не открывается. Права на журнал выданы, а на сам документ — нет. Добавьте в роль просмотр документа.
Журнал тормозит после доработки. Проверьте, не включили ли индексирование у всех граф подряд и не открывается ли список без отбора по периоду.
Можно ли добавить в журнал документ из расширения конфигурации?
Сколько журналов может быть в конфигурации?
Чем журнал отличается от динамического списка на произвольном запросе?
Можно ли удалить журнал из конфигурации без потери документов?
Почему в журнале не видна графа, хотя она описана?
Список в таблицу формы.