Регистры бухгалтерии. Настройки, субконто и движения с субконто

10.02.20

Разработка - Механизмы типовых конфигураций

Описание основных настроек регистров бухгалтерии, работы виртуальных таблиц "Субконто" и "Движения с субконто" и кое-что еще.

Введение

В одной из предыдущих статей "Регистры бухгалтерии. Общая информация" была рассмотрена общая информация о внутреннем устройстве регистров бухгалтерии. Мы кратко рассмотрели основные таблицы на стороне базы данных, их назначение и некоторые особенности.

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

Начнем с основной таблицы регистра, а после перейдем к двум таблицам: "Субконто" и "Движения с субконто". На этот раз все примеры будем делать на регистре бухгалтерии "Хозрасчетный" из типовой конфигурации "Бухгалтерия предприятия 3". Схему этого регистра Вы можете видеть выше.

Сначала рассмотрим, что же дает нам основная таблица регистра и как на нее влияют некоторые настройки. Далее будут примеры работы с виртуальными таблицами "Субконто" и "Движения с субконто". А уже после напишем свой запрос для получения полной информации по движениям регистра, в том числе и значений субконто. Будут продемонстрированы различные вариации запросов платформы к таблицам базы. Также подготовимся к следующим публикациям по виртуальным таблицам остатков: "Остатки" и "Остатки и обороты".

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

Все данные для публикации получены с помощью инструментов:

Немного о настройках

Самыми важными настройками, с которых начинается создание нового регистра бухгалтерии в конфигурации, являются опции "Корреспонденция" и "План счетов".

План счетов фактически похож по своей структуре на обычный справочник за исключением нескольких дополнительных настроек:

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

Сам по себе план счетов почти не влияет на структуру таблиц регистра бухгалтерии. Вместо этого он влияет КАК будет платформа 1С записывать проводки в регистр в зависимости от того какие счета в проводке установлены. Вот так выглядит план счетов в дереве метаданных.

На стороне базы данных план счетов состоит из основной таблицы и таблицы с составом субконто (состав субконто можно назвать табличной частью в каком-то смысле). Кроме этого могут быть дополнительные таблицы для каждой добавленной табличной части, но в типовой бухгалтерии их нет, поэтому рассматривать их не будем.

 
 Основная таблица плана счетов
 
 Таблица состава видов субконто плана счетов

Другой важной настройкой является опция "Корреспонденция", которая включает поддержку корреспонденции счетов при записи проводок в регистре. Что это значит? Смотрите разницу в структуре регистра с включенной и выключенной настройкой.

 
 Основная таблица
 
 Таблица значений субконто
 
 Итоги между счетами

В остальных таблицах разницы в структуре хранения нет.

На практике редко можно встретить регистры бухгалтерии без поддержки корреспонденции. Знаете такие решения? Будет интересно увидеть комментарии по этому поводу.

Таким образом, настройки плана счетов почти не влияют на структуру таблиц регистра бухгалтерии, но влияют как будут формироваться проводки в регистре и использоваться служебные таблицы итогов и др. Но план счетов все же может повлиять на структуру регистра с помощью настройки "Максимальное количество субконто", от которого зависит создаваемое количество таблиц итогов по субконто. Все же помнят, что фирма "1С" не рекомендует добавлять больше 3 субконто, вот сегодня мы и посмотрим на что там эти настройки влияют. В типовых конфигурациях обычно установлено как раз три субконто и общий состав таблиц всегда похож.

 
 Стандартный состав таблиц регистров бухгалтерии в типовых конфигурациях

Что касается корреспонденции, то обычно она всегда включена и влияет на возможность создавать проводки с корреспонденцией счетов (ДТ-КТ), поэтому влияние на структуру таблиц базы данных значительное. В статье мы не будет подробно рассматривать работу платформы 1С с регистром бухгалтерии без поддержки корреспонденции, т.к. случай этот достаточно особый. Тем более изучив этот материал у Вас практически не останется вопросов как платформа работает с регистром без корреспонденции, т.к. принципы остаются те же.

Перейдем непосредственно к регистру бухгалтерии и рассмотрим работу платформы с ним. Поехали!

Немного примеров

Итак, какие настройки есть теперь понятно. Для наглядности рассмотрим пример, чтобы понимать, как они влияют на формирование проводок. Весь пример сделан на демобазе "Бухгалтерия предприятия 3". Вот такие таблицы имеет регистр.

 
 Все таблицы регистра бухгалтерии

Возьмем одну из самых распространенных операций - отражение реализации услуг в виде проводки ДТ 62.01 - КТ 90.01.2. Под спойлером полная информация о проводке.

 
 Описание проводки ДТ 62.01 - КТ 90.01.2

Рассмотрим, что делает платформа 1С при записи подобной проводки в базу данных. Начнем с основной таблицы и таблицы значений субконто.

 
 Основная таблица
 
 Значения субконто

С базовыми таблицами разобрались, теперь посмотрим на таблицы итогов субконто.

 
 Итоги по счетам с субконто 1
 
 Итоги по счетам с субконто 2
 
 Итоги по счетам с субконто 3

И в конце посмотрим, что у нас в таблицах итогов по счетам и между счетами.

 
 Итоги между счетами
 
 Итоги по счетам

Это был длинный пример, но теперь Вы имеете представление как происходит запись в таблицы регистра бухгалтерии и как на это влияют настройки учета счета и субконто. Конечно, есть и другие случаи, но логика работы платформы 1С практически всегда сохраняется.

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

Итого, можно перечислить основные принципы формирования проводок на стороне базы данных:

  • Ресурсы и измерения с признаком "Балансовый" сохраняются одним полем без учета ДТ / КТ.
  • Необходимость заполнения измерений и ресурсов по ДТ и КТ определяется признаками учета счета.
  • Необходимость заполнения показателей по видам субконто определяется с признаками учета субконто в настройках счетов.
  • Вид счета (активный / пассивный / активно-пассивный) фактически не влияет на способ хранения данных в базе данных. Эта настройка влияет на работу платформы 1С в части формирования запросов для получения данных в виртуальных таблицах.
  • Опция "Только обороты" изменяет хранение общего оборота в таблицах итогов по субконто. Вместо хранения итога с учетом значений субконто, платформа 1С сохраняет этот итог только по тем измерениям, для которого "Только обороты" не используются. Если для всех субконто в счете эта настройка включена, то общий итог сохраняется без учета значений субконто.
  • Не важно какой счет - балансовый или забалансовый. Принцип формирования записей в таблицах регистра сохраняется.

В будущих статьях мы подробнее остановимся на механизме итогов регистра бухгалтерии и раскроем некоторые нюансы его работы.

Большое примечание

Мы рассмотрели всего лишь один пример формирования записей проводок платформой 1С. Конечно, это не охватывает все возможные случаи работы с бухгалтерским регистром, но базовые вещи понять можно.

К тому же, по необходимости Вы сможете разобрать любую проводку тем же подходом, что и в публикации.

Теперь перейдем к запросам.

Запросы платформы

Рассмотрим, как платформа 1С формирует некоторые запросы к регистру бухгалтерии.

Движения и субконто

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

Вот так они транслируются платформой 1С.

 
 Таблица движений
 
 Таблица субконто

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

Движения с субконто

Движения с субконто - это виртуальная таблица, с помощью которой Вы как раз и просматриваете движения документов по бухгалтерским регистрам. Ее можно использовать и для других целей. Таблица именно виртуальная несмотря на то, что фактически она собирает данные из двух физических таблиц, которые мы рассмотрели выше. Напишем простой запрос и увидим, что она не такая простая как кажется.

 
 Движения с субконто

Запрос может быть очень тяжелым, поэтому используйте эту таблицу с умом.

Свой запрос движений с субконто

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

 
 Свой запрос движений с субконто

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

Вместо заключения

Мы рассмотрели основные настройки, влияющие на регистр бухгалтерии и формируемые в нем записи. Проанализировали работу платформы 1С с таблицами регистра и с получением данных из него.

Все данные для публикации получены с помощью инструментов:

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

Это еще не все. Мы лишь приоткрыли небольшую занавесу (или ящик Пандоры?). В будущем рассмотрим как платформа 1С работает с таблицами итогов, почему могут разъезжаться итоги, коснемся индексов и производительности и другое.

А сейчас - всем доброго дня и вдохновения!

Авторские разработки

Другие ссылки

внутреннее устройство бухгалтерия регистры итоги субконто план счетов баланс дт кт

См. также

СКД Механизмы типовых конфигураций Запросы Программист Платформа 1С v8.3 1С:Зарплата и кадры государственного учреждения 3 1С:Зарплата и Управление Персоналом 3.x Россия Бесплатно (free)

Работая с типовыми отчетами в конфигурациях «Зарплата и управление персоналом, редакция 3», «Зарплата и кадры государственного учреждения, редакция 3» и подобных, в схемах компоновки данных можно встретить конструкции запросов, которые обращаются к некоторым виртуальным таблицам.

20.08.2024    1752    PROSTO-1C    0    

18

Механизмы типовых конфигураций Программист Платформа 1С v8.3 1С:Комплексная автоматизация 2.х Россия Бесплатно (free)

Эта ошибка была обнаружена мной в типовой конфигурации 1С:Комплексная автоматизация 2 (2.5.16.115), БСП версия 3.1.9.302. Возникает она после того, как вы добавляете в расширение бизнес-процесс или задачу, выполняете обновление идентификаторов метаданных расширений, но ошибка при записи любого элемента справочника "Профили групп доступа" всё равно остаётся.

01.07.2024    1758    Vidz    0    

11

Механизмы типовых конфигураций Программист Платформа 1С v8.3 Конфигурации 1cv8 Россия Бесплатно (free)

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

24.06.2024    1110    olja-ljaaa    0    

3

Механизмы типовых конфигураций Программист Пользователь Платформа 1С v8.3 1С:ERP Управление предприятием 2 Бесплатно (free)

Проблемы при создании ресурсной спецификации. Связь настроек спецификации и настроек структуры заказа в ЕРП 2.5.

06.05.2024    1197    It-digit    1    

2

Механизмы типовых конфигураций Ценообразование, анализ цен Программист Пользователь Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Россия Абонемент ($m)

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

1 стартмани

11.04.2024    1066    tango    5    

3
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. 3vs 11.02.20 08:46 Сейчас в теме
Это не простой для понимания материал. Чтобы понять его до конца - нужно экспериментировать, самому строить запросы и анализировать что находится на стороне базы данных. Поэтому пробуйте, делайте и не останавливайтесь :).

То-то нет ни одного комментария... :-)
Слишком глубоко копнул Юрий! :-)
Вспомнился анекдот:
— Купил мелок от тараканов.
— И как помогло?
— Ну да, вон сидят в углу — рисуют

Вот и народ, сидит и экспериментирует... :-)
KirinaAS; acanta; YPermitin; +3 Ответить
2. пользователь 11.02.20 08:54
(1) первый комметарий!

Сами комметарии не особо важны. Главное чтоб хоть кто-то прочитал :)))
user1346935; +1 Ответить
3. leosoft 166 11.02.20 10:26 Сейчас в теме
Материал безусловно очень полезный!
Но изучать его сегодня нет возможности - идет отчетный за год период!
Надо решать проблемы клиентов и ставить бесконечные обновления.... :)
o.nikolaev; 3vs; YPermitin; +3 Ответить
4. пользователь 11.02.20 10:36
5. 3vs 11.02.20 11:11 Сейчас в теме
(3)Я так чувствую, с новым правительством обновлений прибавится! :-)
Новая метла, как говорится, новые формы/отчёты/прочие маркировки...
6. diolyd2 07.06.20 07:16 Сейчас в теме
Большое спасибо автору!

Как раз пришлось сделать свой аналог таблицы "Движения с субконто".

Недавно наткнулся на ошибку - после перехода на новую версию платформы (8.3.16.1148) и на PostgreSQL с MS SQL перестала корректно отображаться карточка счета. Не хватало строк и сумма не совпадала с суммой из оборотно-сальдовой ведомости.
Оказалось, что перестала корректно работать виртуальная таблица "Движения с субконто". Пересчет итогов, исправление базы не помогло.

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


////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
	Хозрасчетный.Период КАК Период,
	Хозрасчетный.Регистратор КАК Регистратор,
	Хозрасчетный.НомерСтроки КАК НомерСтроки,
	Хозрасчетный.СчетДт КАК СчетДт,
	ВЫБОР
		КОГДА Хозрасчетный.СчетДт В (&Счет)
			ТОГДА Хозрасчетный.СчетДт.НалоговыйУчет
		ИНАЧЕ ЛОЖЬ
	КОНЕЦ КАК СчетДтНалоговыйУчет,
	ВЫБОР
		КОГДА Хозрасчетный.СчетДт В (&Счет)
			ТОГДА Хозрасчетный.СчетДт.Вид
	КОНЕЦ КАК СчетДтВид,
	СубконтоДт1.Значение КАК СубконтоДт1,
	СубконтоДт2.Значение КАК СубконтоДт2,
	СубконтоДт3.Значение КАК СубконтоДт3,
	Хозрасчетный.СчетКт КАК СчетКт,
	ВЫБОР
		КОГДА Хозрасчетный.СчетКт В (&Счет)
			ТОГДА Хозрасчетный.СчетКт.НалоговыйУчет
		ИНАЧЕ ЛОЖЬ
	КОНЕЦ КАК СчетКтНалоговыйУчет,
	ВЫБОР
		КОГДА Хозрасчетный.СчетКт В (&Счет)
			ТОГДА Хозрасчетный.СчетКт.Вид
	КОНЕЦ КАК СчетКтВид,
	СубконтоКт1.Значение КАК СубконтоКт1,
	СубконтоКт2.Значение КАК СубконтоКт2,
	СубконтоКт3.Значение КАК СубконтоКт3,
	Хозрасчетный.ВалютаДт КАК ВалютаДт,
	Хозрасчетный.ВалютаКт КАК ВалютаКт,
	Хозрасчетный.ПодразделениеДт КАК ПодразделениеДт,
	Хозрасчетный.ПодразделениеКт КАК ПодразделениеКт,
	Хозрасчетный.Содержание КАК Содержание,
	ВЫБОР
		КОГДА &Периодичность = 6
			ТОГДА НАЧАЛОПЕРИОДА(Хозрасчетный.Период, ДЕНЬ)
		КОГДА &Периодичность = 7
			ТОГДА НАЧАЛОПЕРИОДА(Хозрасчетный.Период, НЕДЕЛЯ)
		КОГДА &Периодичность = 8
			ТОГДА НАЧАЛОПЕРИОДА(Хозрасчетный.Период, ДЕКАДА)
		КОГДА &Периодичность = 9
			ТОГДА НАЧАЛОПЕРИОДА(Хозрасчетный.Период, МЕСЯЦ)
		КОГДА &Периодичность = 10
			ТОГДА НАЧАЛОПЕРИОДА(Хозрасчетный.Период, КВАРТАЛ)
		КОГДА &Периодичность = 11
			ТОГДА НАЧАЛОПЕРИОДА(Хозрасчетный.Период, ПОЛУГОДИЕ)
		КОГДА &Периодичность = 12
			ТОГДА НАЧАЛОПЕРИОДА(Хозрасчетный.Период, ГОД)
	КОНЕЦ КАК ПериодГруппировки
ПОМЕСТИТЬ ДвиженияССубконто
ИЗ
	МинимальныйМаксимальныйПериоды КАК МинимальныйМаксимальныйПериоды
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный
			{ЛЕВОЕ СОЕДИНЕНИЕ ПланСчетов.Хозрасчетный.ВидыСубконто КАК ВидСубконтоДт1
			ПО Хозрасчетный.СчетДт = ВидСубконтоДт1.Ссылка
				И (ВидСубконтоДт1.НомерСтроки = 1)
			ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Субконто КАК СубконтоДт1
			ПО Хозрасчетный.Регистратор = СубконтоДт1.Регистратор
				И Хозрасчетный.НомерСтроки = СубконтоДт1.НомерСтроки
				И (ВидСубконтоДт1.ВидСубконто = СубконтоДт1.Вид)
				И (СубконтоДт1.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияБухгалтерии.Дебет))}
			{ЛЕВОЕ СОЕДИНЕНИЕ ПланСчетов.Хозрасчетный.ВидыСубконто КАК ВидСубконтоДт2
			ПО Хозрасчетный.СчетДт = ВидСубконтоДт2.Ссылка
				И (ВидСубконтоДт2.НомерСтроки = 2)
			ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Субконто КАК СубконтоДт2
			ПО Хозрасчетный.Регистратор = СубконтоДт2.Регистратор
				И Хозрасчетный.НомерСтроки = СубконтоДт2.НомерСтроки
				И (ВидСубконтоДт2.ВидСубконто = СубконтоДт2.Вид)
				И (СубконтоДт2.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияБухгалтерии.Дебет))}
			{ЛЕВОЕ СОЕДИНЕНИЕ ПланСчетов.Хозрасчетный.ВидыСубконто КАК ВидСубконтоДт3
			ПО Хозрасчетный.СчетДт = ВидСубконтоДт3.Ссылка
				И (ВидСубконтоДт3.НомерСтроки = 3)
			ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Субконто КАК СубконтоДт3
			ПО Хозрасчетный.Регистратор = СубконтоДт3.Регистратор
				И Хозрасчетный.НомерСтроки = СубконтоДт3.НомерСтроки
				И (ВидСубконтоДт3.ВидСубконто = СубконтоДт3.Вид)
				И (СубконтоДт3.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияБухгалтерии.Дебет))}
			{ЛЕВОЕ СОЕДИНЕНИЕ ПланСчетов.Хозрасчетный.ВидыСубконто КАК ВидСубконтоКт1
			ПО Хозрасчетный.СчетКт = ВидСубконтоКт1.Ссылка
				И (ВидСубконтоКт1.НомерСтроки = 1)
			ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Субконто КАК СубконтоКт1
			ПО Хозрасчетный.Регистратор = СубконтоКт1.Регистратор
				И Хозрасчетный.НомерСтроки = СубконтоКт1.НомерСтроки
				И (ВидСубконтоКт1.ВидСубконто = СубконтоКт1.Вид)
				И (СубконтоКт1.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияБухгалтерии.Кредит))}
			{ЛЕВОЕ СОЕДИНЕНИЕ ПланСчетов.Хозрасчетный.ВидыСубконто КАК ВидСубконтоКт2
			ПО Хозрасчетный.СчетКт = ВидСубконтоКт2.Ссылка
				И (ВидСубконтоКт2.НомерСтроки = 2)
			ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Субконто КАК СубконтоКт2
			ПО Хозрасчетный.Регистратор = СубконтоКт2.Регистратор
				И Хозрасчетный.НомерСтроки = СубконтоКт2.НомерСтроки
				И (ВидСубконтоКт2.ВидСубконто = СубконтоКт2.Вид)
				И (СубконтоКт2.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияБухгалтерии.Кредит))}
			{ЛЕВОЕ СОЕДИНЕНИЕ ПланСчетов.Хозрасчетный.ВидыСубконто КАК ВидСубконтоКт3
			ПО (Хозрасчетный.СчетКт = ВидСубконтоКт3.Ссылка)
				И (ВидСубконтоКт3.НомерСтроки = 3)
			ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Субконто КАК СубконтоКт3
			ПО Хозрасчетный.Регистратор = СубконтоКт3.Регистратор
				И Хозрасчетный.НомерСтроки = СубконтоКт3.НомерСтроки
				И (ВидСубконтоКт3.ВидСубконто = СубконтоКт3.Вид)
				И (СубконтоКт3.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияБухгалтерии.Кредит))}
		ПО МинимальныйМаксимальныйПериоды.МаксимальныйПериод >= Хозрасчетный.Период
			И МинимальныйМаксимальныйПериоды.МинимальныйПериод <= Хозрасчетный.Период
ГДЕ
	Хозрасчетный.СчетДт В(&Счет)
	И Хозрасчетный.Активность = ИСТИНА
	И Хозрасчетный.Организация В
			(ВЫБРАТЬ
				СписокОрганизаций.Ссылка
			ИЗ
				СписокОрганизаций КАК СписокОрганизаций)
{ГДЕ
	(ВЫБОР
			КОГДА &Периодичность = 6
				ТОГДА НАЧАЛОПЕРИОДА(Хозрасчетный.Период, ДЕНЬ)
			КОГДА &Периодичность = 7
				ТОГДА НАЧАЛОПЕРИОДА(Хозрасчетный.Период, НЕДЕЛЯ)
			КОГДА &Периодичность = 8
				ТОГДА НАЧАЛОПЕРИОДА(Хозрасчетный.Период, ДЕКАДА)
			КОГДА &Периодичность = 9
				ТОГДА НАЧАЛОПЕРИОДА(Хозрасчетный.Период, МЕСЯЦ)
			КОГДА &Периодичность = 10
				ТОГДА НАЧАЛОПЕРИОДА(Хозрасчетный.Период, КВАРТАЛ)
			КОГДА &Периодичность = 11
				ТОГДА НАЧАЛОПЕРИОДА(Хозрасчетный.Период, ПОЛУГОДИЕ)
			КОГДА &Периодичность = 12
				ТОГДА НАЧАЛОПЕРИОДА(Хозрасчетный.Период, ГОД)
		КОНЕЦ) КАК ПериодГруппировки,
	СубконтоДт1.Значение.* КАК Субконто1,
	СубконтоДт2.Значение.* КАК Субконто2,
	СубконтоДт3.Значение.* КАК Субконто3,
	ВидСубконтоДт1.ВидСубконто КАК ВидСубконто1,
	ВидСубконтоДт2.ВидСубконто КАК ВидСубконто2,
	ВидСубконтоДт3.ВидСубконто КАК ВидСубконто3,
	Хозрасчетный.ПодразделениеДт КАК Подразделение,
	Хозрасчетный.ВалютаДт КАК Валюта,
	Хозрасчетный.Регистратор.*,
	Хозрасчетный.Содержание}

ОБЪЕДИНИТЬ

ВЫБРАТЬ
	Хозрасчетный.Период,
	Хозрасчетный.Регистратор,
	Хозрасчетный.НомерСтроки,
	Хозрасчетный.СчетДт,
	ВЫБОР
		КОГДА Хозрасчетный.СчетДт В (&Счет)
			ТОГДА Хозрасчетный.СчетДт.НалоговыйУчет
		ИНАЧЕ ЛОЖЬ
	КОНЕЦ,
	ВЫБОР
		КОГДА Хозрасчетный.СчетДт В (&Счет)
			ТОГДА Хозрасчетный.СчетДт.Вид
	КОНЕЦ,
	СубконтоДт1.Значение,
	СубконтоДт2.Значение,
	СубконтоДт3.Значение,
	Хозрасчетный.СчетКт,
	ВЫБОР
		КОГДА Хозрасчетный.СчетКт В (&Счет)
			ТОГДА Хозрасчетный.СчетКт.НалоговыйУчет
		ИНАЧЕ ЛОЖЬ
	КОНЕЦ,
	ВЫБОР
		КОГДА Хозрасчетный.СчетКт В (&Счет)
			ТОГДА Хозрасчетный.СчетКт.Вид
	КОНЕЦ,
	СубконтоКт1.Значение,
	СубконтоКт2.Значение,
	СубконтоКт3.Значение,
	Хозрасчетный.ВалютаДт,
	Хозрасчетный.ВалютаКт,
	Хозрасчетный.ПодразделениеДт,
	Хозрасчетный.ПодразделениеКт,
	Хозрасчетный.Содержание,
	ВЫБОР
		КОГДА &Периодичность = 6
			ТОГДА НАЧАЛОПЕРИОДА(Хозрасчетный.Период, ДЕНЬ)
		КОГДА &Периодичность = 7
			ТОГДА НАЧАЛОПЕРИОДА(Хозрасчетный.Период, НЕДЕЛЯ)
		КОГДА &Периодичность = 8
			ТОГДА НАЧАЛОПЕРИОДА(Хозрасчетный.Период, ДЕКАДА)
		КОГДА &Периодичность = 9
			ТОГДА НАЧАЛОПЕРИОДА(Хозрасчетный.Период, МЕСЯЦ)
		КОГДА &Периодичность = 10
			ТОГДА НАЧАЛОПЕРИОДА(Хозрасчетный.Период, КВАРТАЛ)
		КОГДА &Периодичность = 11
			ТОГДА НАЧАЛОПЕРИОДА(Хозрасчетный.Период, ПОЛУГОДИЕ)
		КОГДА &Периодичность = 12
			ТОГДА НАЧАЛОПЕРИОДА(Хозрасчетный.Период, ГОД)
	КОНЕЦ
ИЗ
	МинимальныйМаксимальныйПериоды КАК МинимальныйМаксимальныйПериоды
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный
			ЛЕВОЕ СОЕДИНЕНИЕ ПланСчетов.Хозрасчетный.ВидыСубконто КАК ВидСубконтоДт1
			ПО Хозрасчетный.СчетДт = ВидСубконтоДт1.Ссылка
				И (ВидСубконтоДт1.НомерСтроки = 1)
			ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Субконто КАК СубконтоДт1
			ПО Хозрасчетный.Регистратор = СубконтоДт1.Регистратор
				И Хозрасчетный.НомерСтроки = СубконтоДт1.НомерСтроки
				И (ВидСубконтоДт1.ВидСубконто = СубконтоДт1.Вид)
				И (СубконтоДт1.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияБухгалтерии.Дебет))
			ЛЕВОЕ СОЕДИНЕНИЕ ПланСчетов.Хозрасчетный.ВидыСубконто КАК ВидСубконтоДт2
			ПО Хозрасчетный.СчетДт = ВидСубконтоДт2.Ссылка
				И (ВидСубконтоДт2.НомерСтроки = 2)
			ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Субконто КАК СубконтоДт2
			ПО Хозрасчетный.Регистратор = СубконтоДт2.Регистратор
				И Хозрасчетный.НомерСтроки = СубконтоДт2.НомерСтроки
				И (ВидСубконтоДт2.ВидСубконто = СубконтоДт2.Вид)
				И (СубконтоДт2.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияБухгалтерии.Дебет))
			ЛЕВОЕ СОЕДИНЕНИЕ ПланСчетов.Хозрасчетный.ВидыСубконто КАК ВидСубконтоДт3
			ПО Хозрасчетный.СчетДт = ВидСубконтоДт3.Ссылка
				И (ВидСубконтоДт3.НомерСтроки = 3)
			ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Субконто КАК СубконтоДт3
			ПО Хозрасчетный.Регистратор = СубконтоДт3.Регистратор
				И Хозрасчетный.НомерСтроки = СубконтоДт3.НомерСтроки
				И (ВидСубконтоДт3.ВидСубконто = СубконтоДт3.Вид)
				И (СубконтоДт3.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияБухгалтерии.Дебет))
			ЛЕВОЕ СОЕДИНЕНИЕ ПланСчетов.Хозрасчетный.ВидыСубконто КАК ВидСубконтоКт1
			ПО Хозрасчетный.СчетКт = ВидСубконтоКт1.Ссылка
				И (ВидСубконтоКт1.НомерСтроки = 1)
			ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Субконто КАК СубконтоКт1
			ПО Хозрасчетный.Регистратор = СубконтоКт1.Регистратор
				И Хозрасчетный.НомерСтроки = СубконтоКт1.НомерСтроки
				И (ВидСубконтоКт1.ВидСубконто = СубконтоКт1.Вид)
				И (СубконтоКт1.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияБухгалтерии.Кредит))
			ЛЕВОЕ СОЕДИНЕНИЕ ПланСчетов.Хозрасчетный.ВидыСубконто КАК ВидСубконтоКт2
			ПО Хозрасчетный.СчетКт = ВидСубконтоКт2.Ссылка
				И (ВидСубконтоКт2.НомерСтроки = 2)
			ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Субконто КАК СубконтоКт2
			ПО Хозрасчетный.Регистратор = СубконтоКт2.Регистратор
				И Хозрасчетный.НомерСтроки = СубконтоКт2.НомерСтроки
				И (ВидСубконтоКт2.ВидСубконто = СубконтоКт2.Вид)
				И (СубконтоКт2.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияБухгалтерии.Кредит))
			ЛЕВОЕ СОЕДИНЕНИЕ ПланСчетов.Хозрасчетный.ВидыСубконто КАК ВидСубконтоКт3
			ПО (Хозрасчетный.СчетКт = ВидСубконтоКт3.Ссылка)
				И (ВидСубконтоКт3.НомерСтроки = 3)
			ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Субконто КАК СубконтоКт3
			ПО Хозрасчетный.Регистратор = СубконтоКт3.Регистратор
				И Хозрасчетный.НомерСтроки = СубконтоКт3.НомерСтроки
				И (ВидСубконтоКт3.ВидСубконто = СубконтоКт3.Вид)
				И (СубконтоКт3.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияБухгалтерии.Кредит))
		ПО МинимальныйМаксимальныйПериоды.МаксимальныйПериод >= Хозрасчетный.Период
			И МинимальныйМаксимальныйПериоды.МинимальныйПериод <= Хозрасчетный.Период
ГДЕ
	Хозрасчетный.СчетКт В(&Счет)
	И Хозрасчетный.Активность = ИСТИНА
	И Хозрасчетный.Организация В
			(ВЫБРАТЬ
				СписокОрганизаций.Ссылка
			ИЗ
				СписокОрганизаций КАК СписокОрганизаций)
{ГДЕ
	(ВЫБОР
			КОГДА &Периодичность = 6
				ТОГДА НАЧАЛОПЕРИОДА(Хозрасчетный.Период, ДЕНЬ)
			КОГДА &Периодичность = 7
				ТОГДА НАЧАЛОПЕРИОДА(Хозрасчетный.Период, НЕДЕЛЯ)
			КОГДА &Периодичность = 8
				ТОГДА НАЧАЛОПЕРИОДА(Хозрасчетный.Период, ДЕКАДА)
			КОГДА &Периодичность = 9
				ТОГДА НАЧАЛОПЕРИОДА(Хозрасчетный.Период, МЕСЯЦ)
			КОГДА &Периодичность = 10
				ТОГДА НАЧАЛОПЕРИОДА(Хозрасчетный.Период, КВАРТАЛ)
			КОГДА &Периодичность = 11
				ТОГДА НАЧАЛОПЕРИОДА(Хозрасчетный.Период, ПОЛУГОДИЕ)
			КОГДА &Периодичность = 12
				ТОГДА НАЧАЛОПЕРИОДА(Хозрасчетный.Период, ГОД)
		КОНЕЦ) КАК ПериодГруппировки,
	СубконтоКт1.Значение.* КАК Субконто1,
	СубконтоКт2.Значение.* КАК Субконто2,
	СубконтоКт3.Значение.* КАК Субконто3,
	ВидСубконтоКт1.ВидСубконто КАК ВидСубконто1,
	ВидСубконтоКт2.ВидСубконто КАК ВидСубконто2,
	ВидСубконтоКт3.ВидСубконто КАК ВидСубконто3,
	Хозрасчетный.ПодразделениеКт КАК Подразделение,
	Хозрасчетный.ВалютаКт КАК Валюта,
	Хозрасчетный.Регистратор.*,
	Хозрасчетный.Содержание}

ИНДЕКСИРОВАТЬ ПО
	Период,
	Регистратор,
	НомерСтроки
;

////////////////////////////////////////////////////////////­////////////////////
Показать
BigB; tpkpsd; GinGitsune; ybatiaev; +4 Ответить
7. JohnConnor 57 26.09.20 18:05 Сейчас в теме
спасибо очень полезно
8. yabesabs 26.10.20 19:31 Сейчас в теме
Добрый день. Подскажите, а в разделе "Свой запрос движений с субконто" можно ли все левые соединение заменить на внутренние (при соединении основной таблицы с таблицей субконто и ТЧ Плана счетов)? Никак не соображу что может в этом случае сломаться.
9. user1203706 14 11.01.21 02:10 Сейчас в теме
Начиная с 13 релиза..движениясСубконто теперь реальная табличка.
10. user1203706 14 11.01.21 02:13 Сейчас в теме
и вот эти поля
_ValueDt1_TYPE BINARY(1),
_ValueDt1_RTRef BINARY(4),
_ValueDt1_RRRef BINARY(16),
_KindDt1RRef BINARY(16),
_ValueDt2_TYPE BINARY(1),
_ValueDt2_RTRef BINARY(4),
_ValueDt2_RRRef BINARY(16),
_KindDt2RRef BINARY(16),
_ValueDt3_TYPE BINARY(1),
_ValueDt3_RTRef BINARY(4),
_ValueDt3_RRRef BINARY(16),
_KindDt3RRef BINARY(16),
_ValueCt1_TYPE BINARY(1),
_ValueCt1_RTRef BINARY(4),
_ValueCt1_RRRef BINARY(16),
_KindCt1RRef BINARY(16),
_ValueCt2_TYPE BINARY(1),
_ValueCt2_RTRef BINARY(4),
_ValueCt2_RRRef BINARY(16),
_KindCt2RRef BINARY(16),
_ValueCt3_TYPE BINARY(1),
_ValueCt3_RTRef BINARY(4),
_ValueCt3_RRRef BINARY(16),
_KindCt3RRef BINARY(16)
теперь в реальной табличке регистра.
11. user1203706 14 11.01.21 02:16 Сейчас в теме
ЗЫ: это если сынять режим совместимости и точнее, с 14-15 (в 15 так точно,в 14 не помню).
В 13-ом еще старый формат хранения, как в вашей статье.
12. user917868 26.01.21 12:11 Сейчас в теме
Спасибо за труд, отличный цикл статей!

С галочками "Только оборот" не совсем ясна картина.
В вашем примере у счета 90.01.2 в таб части виды субконто установлены галочки Только оборот на все виды.
Далее, по ним ведется и количественный и суммовой учет, поэтому по идеи в общей записи должны быть как минимум два поля заполнены на 1000 руб (Суммовой учет) и 1 шт (Количественный), по ним же оборот учитывается.

Общая запись итога по обороту появляется в том случае, если в счете есть виды субконто с опцией "Только обороты". При этом общее значение рассчитывается как ДТ - КТ.

Здесь не понятно что значит Дт-Кт, если мы говорим в контексте проводки, то показатели оборота просто берутся из проводки и никоем образом не рассчитываются.


Использование опции "Только обороты" позволит уменьшить объем данных в таблице итогов в тех случаях, когда нет смысла хранить остатки в разрезе значений субконто. С прикладной точки зрения эта настройка означает, что по субконто не будут разворачиваться остатки, а будут разворачиваться только обороты.


В вашем примере на счете 90.01.2 остатки не хранятся ни по одному из видов субконто, при это система формирует две записи в таблице итогов, где здесь уменьшение объема данных?
Merkalov; +1 Ответить
13. Abbra 23 08.06.21 07:04 Сейчас в теме
Здравствуйте.
Можно ли добавить вид документа (Чек например) в перечень регистраторов
для Хозрасчетного регистра бухгалтерии через расширение?
14. user1751978 02.03.22 12:15 Сейчас в теме
Здравствуйте, у нас система стала выдавать ошибку, которая не удаляется никаким видом тестирования. Ошибка выдает: Дублирование ключей в уникальном индексе '_ACCRGED819_1@'

из-за нее сперва не закрывался месяц и не регистрировались счета-фактуры, потом пропали акты сверки, потом пропали все обороты по обороткам и карточкам счета, сейчас даже информация из операций, введенных вручную удалилась. Сами записи остались и проведены, но внутри операций пусто. А внутри проведенных документов пусто в разделе ДТ-КТ. Те просто сами бухгалтерские проводки удалились.

Это явно что-то связано с регистром Хозрасчетный. Но что конкретно и что делать неизвестно.
15. Flatra56 9 11.03.23 11:21 Сейчас в теме
(14)
+1 такая же проблема ТИИ не помогает, чек БД тоже, отключение/включение итогов тоже
16. user729951 16.08.23 05:49 Сейчас в теме
Добрый день! Спасибо за статью.
К утверждению о том что добавление отбора по виду субконто не сильно меняет запрос.
На стороне кода 1С действительно изменение не существенное, но если посмотреть на план выполнения запроса который формируется на дату отличную от даты рассчитанных итогов, то можно увидеть соединения с таблицей _AccRgED "таблица значений субконто регистра бухгалтерии".
В моем примере было 32 соединения с таблицей _AccRgED по двум веткам.
При этом время выполнение запроса будет сильно отличаться. В примере который разбирал в таблице _AccRgED было 212 млн. записей и запрос с указанным параметром отбора по виду субконто приводил к тому что актуальный план запроса через Extended Events не вылавливался (скорее всего игнорировался т.к. сильно нагружал сервер при его разборе).

Как итог, время выполнения запроса к остаткам РБ на дату отличную от даты рассчитанных итогов:
- с указанием отбора по виду субконто выполняется 5-7 секунд
- без указания отбора по виду субконто выполняется 1-2 секунды

Для информационных баз с высокой нагрузкой такая разница существенна.

Интересует мнение. В каких случаях для получения остатков по РБ указывается отбор по виду субконто?
Оставьте свое сообщение