Введение
В одной из предыдущих статей "Регистры бухгалтерии. Общая информация" была рассмотрена общая информация о внутреннем устройстве регистров бухгалтерии. Мы кратко рассмотрели основные таблицы на стороне базы данных, их назначение и некоторые особенности.
Настало время остановиться на каждой из виртуальных таблиц подробнее, рассмотрев их назначение и примеры использования более детально, а также влияние настроек самого регистра на его хранение в базе данных.
Начнем с основной таблицы регистра, а после перейдем к двум таблицам: "Субконто" и "Движения с субконто". На этот раз все примеры будем делать на регистре бухгалтерии "Хозрасчетный" из типовой конфигурации "Бухгалтерия предприятия 3". Схему этого регистра Вы можете видеть выше.
Сначала рассмотрим, что же дает нам основная таблица регистра и как на нее влияют некоторые настройки. Далее будут примеры работы с виртуальными таблицами "Субконто" и "Движения с субконто". А уже после напишем свой запрос для получения полной информации по движениям регистра, в том числе и значений субконто. Будут продемонстрированы различные вариации запросов платформы к таблицам базы. Также подготовимся к следующим публикациям по виртуальным таблицам остатков: "Остатки" и "Остатки и обороты".
Публикация адресована всем, кто интересуется внутренним устройством регистра бухгалтерии и желает углубить свои знания в этом направлении.
Все данные для публикации получены с помощью инструментов:
Немного о настройках
Самыми важными настройками, с которых начинается создание нового регистра бухгалтерии в конфигурации, являются опции "Корреспонденция" и "План счетов".
План счетов фактически похож по своей структуре на обычный справочник за исключением нескольких дополнительных настроек:
- Признаки учета
- Признаки учета субконто
- Настройка состава субконто
- Некоторые другие предопределенные поля.
Сам по себе план счетов почти не влияет на структуру таблиц регистра бухгалтерии. Вместо этого он влияет КАК будет платформа 1С записывать проводки в регистр в зависимости от того какие счета в проводке установлены. Вот так выглядит план счетов в дереве метаданных.
На стороне базы данных план счетов состоит из основной таблицы и таблицы с составом субконто (состав субконто можно назвать табличной частью в каком-то смысле). Кроме этого могут быть дополнительные таблицы для каждой добавленной табличной части, но в типовой бухгалтерии их нет, поэтому рассматривать их не будем.
Другой важной настройкой является опция "Корреспонденция", которая включает поддержку корреспонденции счетов при записи проводок в регистре. Что это значит? Смотрите разницу в структуре регистра с включенной и выключенной настройкой.
В остальных таблицах разницы в структуре хранения нет.
На практике редко можно встретить регистры бухгалтерии без поддержки корреспонденции. Знаете такие решения? Будет интересно увидеть комментарии по этому поводу.
Таким образом, настройки плана счетов почти не влияют на структуру таблиц регистра бухгалтерии, но влияют как будут формироваться проводки в регистре и использоваться служебные таблицы итогов и др. Но план счетов все же может повлиять на структуру регистра с помощью настройки "Максимальное количество субконто", от которого зависит создаваемое количество таблиц итогов по субконто. Все же помнят, что фирма "1С" не рекомендует добавлять больше 3 субконто, вот сегодня мы и посмотрим на что там эти настройки влияют. В типовых конфигурациях обычно установлено как раз три субконто и общий состав таблиц всегда похож.
Что касается корреспонденции, то обычно она всегда включена и влияет на возможность создавать проводки с корреспонденцией счетов (ДТ-КТ), поэтому влияние на структуру таблиц базы данных значительное. В статье мы не будет подробно рассматривать работу платформы 1С с регистром бухгалтерии без поддержки корреспонденции, т.к. случай этот достаточно особый. Тем более изучив этот материал у Вас практически не останется вопросов как платформа работает с регистром без корреспонденции, т.к. принципы остаются те же.
Перейдем непосредственно к регистру бухгалтерии и рассмотрим работу платформы с ним. Поехали!
Немного примеров
Итак, какие настройки есть теперь понятно. Для наглядности рассмотрим пример, чтобы понимать, как они влияют на формирование проводок. Весь пример сделан на демобазе "Бухгалтерия предприятия 3". Вот такие таблицы имеет регистр.
Возьмем одну из самых распространенных операций - отражение реализации услуг в виде проводки ДТ 62.01 - КТ 90.01.2. Под спойлером полная информация о проводке.
Рассмотрим, что делает платформа 1С при записи подобной проводки в базу данных. Начнем с основной таблицы и таблицы значений субконто.
С базовыми таблицами разобрались, теперь посмотрим на таблицы итогов субконто.
И в конце посмотрим, что у нас в таблицах итогов по счетам и между счетами.
Это был длинный пример, но теперь Вы имеете представление как происходит запись в таблицы регистра бухгалтерии и как на это влияют настройки учета счета и субконто. Конечно, есть и другие случаи, но логика работы платформы 1С практически всегда сохраняется.
Например, даже если будет создана проводка с забалансовым счетом без корреспонденции, то все вышесказанное все равно остается актуальным. Ключевым отличием будет лишь то, что в таблицах итогов между счетами корреспондирующим счетом будет значение пустой ссылки. Все остальное то же самое.
Итого, можно перечислить основные принципы формирования проводок на стороне базы данных:
- Ресурсы и измерения с признаком "Балансовый" сохраняются одним полем без учета ДТ / КТ.
- Необходимость заполнения измерений и ресурсов по ДТ и КТ определяется признаками учета счета.
- Необходимость заполнения показателей по видам субконто определяется с признаками учета субконто в настройках счетов.
- Вид счета (активный / пассивный / активно-пассивный) фактически не влияет на способ хранения данных в базе данных. Эта настройка влияет на работу платформы 1С в части формирования запросов для получения данных в виртуальных таблицах.
- Опция "Только обороты" изменяет хранение общего оборота в таблицах итогов по субконто. Вместо хранения итога с учетом значений субконто, платформа 1С сохраняет этот итог только по тем измерениям, для которого "Только обороты" не используются. Если для всех субконто в счете эта настройка включена, то общий итог сохраняется без учета значений субконто.
- Не важно какой счет - балансовый или забалансовый. Принцип формирования записей в таблицах регистра сохраняется.
В будущих статьях мы подробнее остановимся на механизме итогов регистра бухгалтерии и раскроем некоторые нюансы его работы.
Большое примечание
Мы рассмотрели всего лишь один пример формирования записей проводок платформой 1С. Конечно, это не охватывает все возможные случаи работы с бухгалтерским регистром, но базовые вещи понять можно.
К тому же, по необходимости Вы сможете разобрать любую проводку тем же подходом, что и в публикации.
Теперь перейдем к запросам.
Запросы платформы
Рассмотрим, как платформа 1С формирует некоторые запросы к регистру бухгалтерии.
Движения и субконто
Таблица движений и таблица субконто - фактически это физические таблицы, и мы можем обращаться к ним для построения своих собственных запросов к регистру бухгалтерии.
Вот так они транслируются платформой 1С.
Ничего особенного и, на самом деле, редко используется, но пригодиться все же может.
Движения с субконто
Движения с субконто - это виртуальная таблица, с помощью которой Вы как раз и просматриваете движения документов по бухгалтерским регистрам. Ее можно использовать и для других целей. Таблица именно виртуальная несмотря на то, что фактически она собирает данные из двух физических таблиц, которые мы рассмотрели выше. Напишем простой запрос и увидим, что она не такая простая как кажется.
Запрос может быть очень тяжелым, поэтому используйте эту таблицу с умом.
Свой запрос движений с субконто
Полностью сэмулировать запрос движений с субконто средствами 1С мы не сможем, но простой аналог все же сделать можно.
Не часто такое может понадобиться, но для экстремальных оптимизаций может пригодиться.
Вместо заключения
Мы рассмотрели основные настройки, влияющие на регистр бухгалтерии и формируемые в нем записи. Проанализировали работу платформы 1С с таблицами регистра и с получением данных из него.
Все данные для публикации получены с помощью инструментов:
Это не простой для понимания материал. Чтобы понять его до конца - нужно экспериментировать, самому строить запросы и анализировать что находится на стороне базы данных. Поэтому пробуйте, делайте и не останавливайтесь :).
Это еще не все. Мы лишь приоткрыли небольшую занавесу (или ящик Пандоры?). В будущем рассмотрим как платформа 1С работает с таблицами итогов, почему могут разъезжаться итоги, коснемся индексов и производительности и другое.
А сейчас - всем доброго дня и вдохновения!
Авторские разработки
-
Транслятор запросов 1С в SQL - инструмент для трансляции запросов платформы 1С в SQL, а также их диагностики.
-
Помощник работы с идентификаторами объектов - инструмент для расширенного анализа идентификаторов объектов.
-
Анализ производительности APDEX - отчет для просмотра и анализа замеров производительности в конфигурациях на базе БСП.
-
Путеводитель по истории релизов - отчет по истории выпуска релизов продуктов фирмы "1С" и анализа информации по обновлениям.
-
Просмотр и анализ структуры базы данных (отчет на СКД) - отчет для просмотра и анализа структуры базы данных с поддержкой файловых баз (ограниченный режим), а также баз на SQL Server и PostgreSQL.
-
Просмотр и анализ журнала регистрации (отчет на СКД) - отчет на базе системы компоновки данных (СКД) для просмотра записей журнала регистрации.
-
Обозреватель криптографии - отчет для просмотра доступных провайдеров и сертификатов криптографии на сервере и клиенте.
-
Пакетная выгрузка / загрузка внешних отчетов и обработок - пакетная выгрузка / загрузка внешних отчетов и обработок для массовый манипуляций с ними.
-
Мастер полнотекстового поиска - набор инструментов для работы с полнотекстовым индексом платформы 1С. Стандартные и расширенные возможности.
-
Командный интерпретатор для 1С - инструмент для выполнения команд CMD / PowerShell из 1С.