1с отчет по регистру накопления
В нескольких статьях представлены основные сведения о внутреннем устройстве регистров накопления, о SQL-запросах платформы при работе с ними и их изменение в зависимости от настроек регистра. Подробно описана работа платформы с разными типами регистров (остатков и накопления), а также принцип действия агрегатов.
Материалы созданы во времена платформы 8.2, поэтому некоторые моменты могут быть уже не актуальными, но основные принципы работы остались неизменными.
Больше года назад сайт был закрыт. Некоторые из его материалов будут реанимированы на Инфостарт.
Конкретно в этой статье речь идет о виртуальных таблицах "Остатки" и "Остатки и обороты" регистров накопления в базе данных. Все примеры из публикации Вы можете найти на GitHub.
Предисловие
В предыдущих статьях мы говорили о структуре хранения регистров накопления в базе данных, а также о работе платформы с виртуальной таблицей "Обороты" этих регистров в зависимости от настроек хранения итогов. Все эксперименты проводились на тестовой конфигурации, содержащей два регистра накопления видов "Остатки" и "Обороты" (подробнее см. в предыдущих статьях).
Сегодня в статье рассмотрим действия платформы при работе с виртуальными таблицами "Остатки" и "Остатки и обороты" регистра накопления с видом "Остатки".
Общие сведения
Регистр накопления с видом "Остатки" позволяет разработчику использовать дополнительно к виртуальной таблице "Обороты" регистра еще и таблицу "Остатки".
Данная виртуальная таблица содержит меньше доступных параметров и предназначена для получения остатков по значениям измерений регистра на определенную дату.
Особенностью использования этой виртуальной таблицы является получение остатков на дату с использованием таблицы итоговых остатков (см. описание хранения регистров накопления вида "Остатки" в базе данных).
Поэтому, если использование итогов отключено для регистра, работа с этой таблицей станет невозможной.
Теперь рассмотрим формируемые платформой SQL-запросы к базе данных для получения остатков через названную виртуальную таблицу. Проанализируем изменение запроса для включенных/отключенных текущих итогов.
За кулисами
Выполним в нашей тестовой базе следующий запрос на языке платформы:
Для регистра "ОстаткиНоменклатуры" установим дату рассчитанных итогов на конец февраля (28.02.2013). Первый запрос выполним с включенными текущими итогами регистра накопления.
Первым делом платформа обратится к настройкам регистра накопления. Этот запрос был рассмотрен в предыдущей статье. Перейдем непосредственно к SQL-запросу платформы при использовании виртуальной таблицы "Остатки".
Получим следующий SQL-запрос платформы:
Обратите внимание на параметр "Период", переданный в виртуальную таблицу. Напомню, в нашем случае включены текущие итоги. Поскольку граница рассчитанных итогов регистра установлена на 28.02.2013, платформа не может получить итоги по остаткам на предыдущий месяц, а использовать последние рассчитанные итоги на конец февраля 2013 года и затем корректировать остаток в соответствии с движениями за последующие 3 месяца было бы не оптимально.
Поэтому программа получает текущие остатки (остатки на текущую дату, которые хранятся с периодом 01.11.5999 00:00:00) и корректирует их в соответствии с движениями в период с значения параметра "Период" вирт. таблицы и по дату текущий остатков. Если мы отключим текущие итоги, то тот же запрос на языке платформы будет преобразован в следующий SQL-запрос, имеющий незначительные изменения:
То есть, если параметр "Период" виртуальной таблицы больше периода последних рассчитанных итогов, то тогда платформа получает текущие остатки и корректирует их по движениям в диапазоне с [ПараметрПериодВиртуальнойТаблицы] по [ПериодТекущихИтогов]. В случае, если для регистра отключены текущие итоги, то платформа получает последние рассчитанные итоги и корректирует их по движениям с периода этих итогов по период, установленный в параметрах виртуальной таблицы.
Прежде чем перейти к выводам, отмечу, что во всех вариантах SQL-запроса при наложении условия на период получаемых движений, условие верхней границы диапазона всегда представляет собой:
т.е. условие всегда "МЕНЬШЕ". Если период движения равен дате, установленной в верхнем диапазоне, то эти движения не будут учитываться при получении остатков. Вот она та самая особенность виртуальной таблицы остатков, из-за которой не учитывается последняя секунда в параметрах виртуальной таблицы.
Делаем выводы
Подведем небольшой итог. На следующей схеме представлены действия платформы для получения остатков при различных настройках регистра накопления и параметра периода виртуальной таблицы "Остатки".
При любом случае использования виртуальной таблицы "Остатки", платформа 1С:Предприятие 8 получает данные по итогам остатков и корректирует их по записям движений.
Некоторые действия платформа могла бы выполнять более оптимально. Например, при использовании текущих остатков для регистра выбирать получать ли текущие остатки или последние рассчитанные итоги по периоду виртуальной таблицы. Выбор бы осуществлялся по принципу "что ближе".
В любом случае, механизм итогов для регистров вида "Остатки" позволяет выполнять запросы для получения остатков оптимальнее, нежели использовать только записи таблицы движений.
Все эксперименты проводил на платформе 1С:Предприятие 8.2.17.169.
Далее рассмотрим самую "тяжелую" виртуальную таблицу регистров накопления "ОстаткиИОбороты".
"Тяжелая" таблица
Среди всех виртуальных таблиц, таблица "Остатки и обороты" является самой "тяжелой" для формирования. Разработчики должны это хорошо понимать и использовать ее с осторожностью. Далее Вы увидите почему.
Выполним следующий запрос на языке запросов платформы:
Параметрам запроса присвоим следующие значения:
Такие параметры как "Периодичность" и "МетодДополнения" мы оставили без заполнения. Сначала платформа выполнить запрос для получения настроек регистра накопления. Его мы подробно рассмотрели в статье по виртуальной таблице "Обороты", поэтому сейчас останавливаться на нем не будем.
При таких настройках платформа сформирует следующий SQL-запрос для рассматриваемой виртуальной таблицы:
Прокомментировал основные моменты в запросе. Общая схема работы запроса такая:
- Получаем обороты регистра по таблице движений за установленный период.
- Получаем остатки на значение даты параметра "Начало периода".
- Объединяем предыдущие два результата, при этом поле "НачальныйОстаток" - это остаток по данным таблицы остатков, а "КонечныйОстаток" вычисляется как : "НачальныйОстаток" + "Оборот"
- Полученные данные группируются по выбранным в запросе измерениям и проверяются на наличие хотя бы одного заполненного ресурса (не равного 0).
Отсюда мы можем сделать вывод, что если с помощью этой виртуальной таблицы мы получаем данные за большой период, то запрос может получать достаточно большие порции записей движений. В результате формирование отчетов (или другие механизмы в конфигурации) будет работать очень медленно.
Сам SQL-запрос может изменяться в зависимости от значений параметров виртуальной таблицы. Например, если мы добавим периодичность, то в запрос будет добавлено дополнительное поле "Период", по которому результат будет группироваться. При установке параметра "МетодДополнения" в запрос будут попадать границы периода, если установлено значение "ДвиженияИГраницыПериода" (именно с таким значением параметра мы анализировали SQL-запрос), иначе в результате запроса будут только движения.
Что дальше
В этой и предыдущих статьях мы рассмотрели SQL-запросы платформы при работе с виртуальными таблицами регистров накопления. Представленная информация должна помочь в выборе виртуальных таблиц при разработке, а также в написании оптимальных запросов к базе данных на языке платформы.
В следующих статьях рассмотрим работу агрегатов, а также некоторые особенности работы индексов регистров накопления и многое другое.
Среди множества отчетов, в программах 1С имеется Универсальный отчет , позволяющий более глубже анализировать информацию, выбирать из информационной базы данные, которые нет возможности получить в других стандартных отчетах, при этом детализируя и оформляя отчет по своему усмотрению. Рассмотрим, какую информацию мы можем с помощью него получить в нашей инструкции.
Где найти Универсальный отчет в 1С 8.3
Рассмотрим, какую информацию мы можем получить с помощью Универсального отчета в 1С 8.3.
Универсальный отчет в 1С 8.3 — инструкция по настройке и использованию
Кроме выбора периода в нем есть еще некоторые настройки, в которых мы сейчас разберемся.
Для начала выбираем Вид объекта , по которому хотим сформировать Универсальный отчет в 1С 8.3. Далее уже можно будет детализировать и выполнить дополнительную настройку.
Универсальный отчет по виду документов
Например, при выборе вида объекта Документ , будет предложено выбрать наименование документа и указать какую информацию мы хотим получить. Выберем для примера документ Начисление зарплаты .
Далее в поле укажем, что мы хотим получить информацию о начисленном НДФЛ .
Нажав кнопку Сформировать , получаем отчет, который, как видим, очень громоздкий и неудобный для просмотра, в нем много пустых колонок и лишней информации, которая не нужна. Нажмем кнопку Настройки .
Выбрав вид отчета Расширенный , на вкладке Поля и сортировки , можем галочками отрегулировать какую информацию необходимо выводить в отчет. С помощью кнопок перемещения вверх/вниз можно поменять элементы местами.
При большом объеме информации данные отчета можно сгруппировать или установить отбор, например по подразделению (вкладка Отборы , кнопка Добавить отбор ).
Отчет готов и выглядит более компактно.
При установке отбора, можем установить настройку Показывать – В шапке отчета .
После нажатия кнопки Закрыть и сформировать в шапке настройки отчета у нас появится поле отбора по Подразделению .
Универсальный отчет по справочникам
Сформируем Универсальный отчет в 1С для отражения информации Справочников .
Предположим, нужно получить информацию об адресах всех работающих сотрудников и даты их рождения.
Далее выбираем, какие значения нужны для отчета Основные данные или Дополнительные реквизиты . В нашем примере, выбираем Основные данные .
Нажав кнопку Настройки , переходим на вкладку Структура и с помощью кнопки Добавить формируем структуру нашего отчета. Из открывшегося окна Выбор поля отчета , подбираем необходимые данные.
При определении структуры отчета на вкладке Состав группировки задаем поля нашего отчета с помощью кнопки Добавить .
У нас должна получиться вот такая строка с данными.
Также можем установить Отбор, с помощью кнопки Добавить отбор , например сотрудников, которые не находятся в архиве, соответственно, это работающие сотрудники.
Нажав кнопку Закрыть и сформировать , получаем вот такой отчет.
Таким образом мы можем проверить, все ли данные по сотрудникам занесены в справочник.
Для задания параметров оформления отчета в настройке есть вкладка Оформление , где можно изменить шрифт отчета, размер, цвет, ширину линий и другие параметры.
При этом на вкладке Оформляемые поля необходимо их указать.
Наш отчет стал выглядеть вот так.
Универсальный отчет по регистрам накопления
Множество вариантов Универсального отчета в 1С 8.3 можно сформировать и по регистрам накопления.
Для примера сформируем отчет по предоставленным вычетам НДФЛ, с указанием месяца налогового периода, кода вычета и выделением документов, которыми был предоставлен вычет (поле Регистратор ).
Получившийся отчет по регистру накопления Предоставленные стандартные и социальные вычеты выглядит следующим образом.
Видим, что в отчете строки по начислениям в каждом месяце повторяются. В данном примере, можем сгруппировать наши записи по месяцам, для более удобного отображения данных. Для этого на вкладке Структура , указав строку для группировки Месяц налогового периода , нажимаем кнопку Обернуть эту строку в группировку по полю . Далее уже детализируем поля для содержания нашего отчета – Регистратор , Код вычета , Физическое лицо . Поля можно выстраивать в том порядке, как удобно.
Реквизит Сумма выделен на вкладке Поля и сортировка .
Нажимаем Закрыть и сформировать и получаем Универсальный отчет в 1С немного другого вида, где данные по месяцам мы можем свернуть в группы.
Если захотим изменить группировку, объединив данные по физическому лицу, то верхняя строка структуры должна быть закреплена – Физическое лицо . И далее также указываем необходимые поля для детализации. В нашем примере – Месяц налогового периода , Регистратор , Код вычета .
В результате получается вот такой отчет, где как видно данные сгруппированы по Физическому лицу . С помощью кнопок +- можем сворачивать и разворачивать наши данные. При этом итоги по сумме строк отображаются по строке группировки – по Физическому лицу .
Универсальный отчет по регистрам сведений
Примером отчета, сформированного по регистрам сведений могут быть данные о лицевых счетах сотрудников.
Настройка Универсального отчета в 1С 8.3 для работы с регистрами сведений выполняется аналогично описанному выше.
Универсальный отчет по регистрам бухгалтерии
Универсальный отчет в 1С по регистрам бухгалтерии по составу отражаемой информации напоминает карточку счета.
По кнопке Настройки можно также сделать настройки отчета, выбрав для себя необходимые параметры.
В отчете при отборе необходимо выбирать конечный субсчет счета, иначе отчет сформируется пустым.
На вкладке Поля и сортировки выберем показатели, которые хотим увидеть в отчете.
Например, нам интересны обороты в сумме. Для того чтобы в отчете они отразились по возрастанию, с помощью голубой стрелочки вправо, можно перенести показатель, по которому хотим включить сортировку. Таким образом, задаем порядок сортировки Сумма – По возрастанию.
На вкладке Структура задаем желаемые поля нашего отчета. В данном варианте отчета, значение показателя будет зависеть от выбранного счета. Указав в качестве группируемых полей Суконто1 Дт, Субконто2 Дт, получим отчет в разрезе субконто, какие они – зависит от счета.
Так, у счета 62.01 Субконто 1 – Контрагент, Субконто 2 – Договор. Нажав кнопку Закрыть и сформировать , получаем отчет по контрагентам, с указанием договоров и сумм по этим договорам в порядке возрастания.
Добавив к полям третье субконто, получим такой же отчет, но уже с детализацией по документам.
Группируемые поля будут выглядеть следующим образом.
В результате получаем отчет.
В результате наш отчет сформирован в разрезе организаций (в нашем примере она одна).
Таким образом, меняя настройки, можем составлять целые аналитические таблицы, с отбором, сортировкой и группировкой показателей.
Так, выбрав регистр, по которому необходимо получить сведения, выполнив настройки, можно получить любой отчет.
Например, сформируем в 1С Универсальный отчет по начислениям, с отбором данных по коду НДФЛ.
Нажав кнопку Настройка , отметим необходимые поля и для удобства отображения данных, установим сортировку их по коду (перенеся показатель для сортировки в правое окно, с помощью голубой стрелки вправо).
На вкладке Структура мы ничего не задаем, поэтому там должна остаться группировка Детальные записи (но не пустая строка).
Сформировав отчет, получаем вот такие данные. Из него видим, по каким кодам у нас проходили начисления в программе.
Таким образом, с помощью Универсального отчета в 1С 8.3, можем формировать и анализировать необходимую информацию из информационной базы, распечатывать ее, отправлять по электронной почте, можем сохранять настройки отчета и выбирать настройки из ранее сохраненных с помощью кнопки на панели инструментов.
Также Универсальный отчет из 1С можно сохранить в различных форматах (Excel, PDF и др.).
Такой отчет доступен практически во всех конфигурациях 1С.
См. также:
Если Вы еще не подписаны:
Активировать демо-доступ бесплатно →
или
Оформить подписку на Рубрикатор →
После оформления подписки вам станут доступны все материалы по 1С Бухгалтерия, записи поддерживающих эфиров и вы сможете задавать любые вопросы по 1С.
Помогла статья?
Получите еще секретный бонус и полный доступ к справочной системе БухЭксперт8 на 14 дней бесплатно
Похожие публикации
-
В данной статье мы расскажем о том, как с помощью.В данной статье мы расскажем о том, как с помощью.Бывает, у бухгалтера возникает ошибка при формировании расчетной ведомости Т-51.В этой статье мы расскажем, как сформировать отчет по сотрудникам.
Карточка публикации
(3 оценок, среднее: 4,67 из 5)
Данную публикацию можно обсудить в комментариях ниже.Обратите внимание! В комментариях наши кураторы не отвечают на вопросы по программам 1С и законодательству.
Задать вопрос нашим специалистам можно по ссылке >>
Все комментарии (1)
Благодарю за актуальную информацию
Добавить комментарий Отменить ответ
Для отправки комментария вам необходимо авторизоваться.
Вы можете задать еще вопросов
Доступ к форме "Задать вопрос" возможен только при оформлении полной подписки на БухЭксперт8
Вы можете оформить заявку от имени Юр. или Физ. лица Оформить заявкуНажимая кнопку "Задать вопрос", я соглашаюсь с
регламентом БухЭксперт8.ру >>
Регистры накопления для организации взаиморасчетов с работниками
В ЗУП 3 для учета взаиморасчетов с сотрудниками используются регистры накопления:
Регистры Взаиморасчеты с сотрудниками и Бухгалтерские взаиморасчеты с сотрудниками содержат следующие разрезы учета:
Разрезы регистра накопления Зарплата к выплате расширены по сравнению с данными регистров, используемых для формирования отчетов. Добавлены:
Следует отслеживать чтобы суммы по разрезам учета «схлопывались», т.е. чтобы выплата происходила по той же аналитике что и начисление.
Пример корректировки взаиморасчетов
- При выплате зарплаты за август программа пытается перекинуть выплаченную сумму июльской материальной помощи с одной статьи расходов – ОТ на другую – ПР .
- В Расчетной ведомости (Т-51) ( Зарплата – Отчеты по зарплате Расчетной ведомости (Т-51) ) в колонке задолженность числится одна и та же сумма задолженности как за организацией, так и за сотрудником – 4 870 руб.
- Если бы при выплате был удержан НДФЛ, то программа неправильно определила бы сумму выплаченного дохода и соответственно это неверно отразилось в отчетности по НДФЛ
Для исправления ошибок по взаиморасчетам можно воспользоваться одним из нижеописанных способов.
Обновить НДФЛ по команде Обновить налог
В нашем примере НДФЛ к перечислению по материальной помощи стал нулевым, что и требовалось
При формировании Расчетной ведомости (Т-51) взаимная задолженность также ушла
Если нет возможности использовать Способ 1 или он не устранил ошибку, то следует воспользоваться техническим документом Перенос данных ( Администрирование – Переносы данных ), в котором заполнить данные по регистрам накопления:
В документе указать Месяц начисления – это справочная информация. В нашем примере установим Июль 2019.
Для выбора регистров воспользуемся кнопкой Настройка состава регистров . Отметим флажками три регистра накопления:
Посмотреть какую аналитику использовать при заполнении данных по регистру Взаиморасчеты с сотрудниками можно непосредственно в регистре. При совпадении же данных по всем трем регистрам (наш случай) это можно сделать в Ведомости в расшифровке суммы к выплате.
В нашем примере заполним две строки на одну и ту же сумму 4 870 руб. по статьям расходов ОТ с плюсом и ПР с минусом. Укажем:
В Расчетной ведомости (Т-51) задолженность исчезнет.
Для того, чтобы в будущем иметь возможность видеть в зарплатных отчетах верное «бухгалтерское» сальдо, следует внести данные по регистру накопления Бухгалтерские взаиморасчеты с сотрудниками . Как и какие сведения внести можно посмотреть непосредственно в регистре накопления, отобрав данные по сотруднику.
В нашем примере корректировку вносим 31.07.2020 г. по статье расходов:
Для проверки корректности внесенных данных можно временно в Дополнительных настройках ( Настройка – Дополнительные настройки ) переключиться на режим отображения «бухгалтерского» сальдо.
Сформировать Расчетную ведомость (Т-51) уже в режиме «бухгалтерского» сальдо и убедиться, что данные верны.
По вышеописанному принципу заполняем данные по регистру накопления Зарплата к выплате . По виду движения Приход по статье расходов ОТ – сумму с плюсом, по ПР – сумму с минусом. При этом:
- Период – указываем июльскую дату 01.07.2020
- Период взаиморасчетов – 01.07.2019
- Документ-основание – документ Материальнаяпомощь
Если Вы еще не подписаны:
Активировать демо-доступ бесплатно →
или
Оформить подписку на Рубрикатор →
После оформления подписки вам станут доступны все материалы по 1С:ЗУП, записи поддерживающих эфиров и вы сможете задавать любые вопросы по 1С.
Помогла статья?
Получите еще секретный бонус и полный доступ к справочной системе БухЭксперт8 на 14 дней бесплатно
Похожие публикации
-
.У вас нет доступа на просмотр Чтобы получить доступ:Оформите коммерческую.У вас нет доступа на просмотр Чтобы получить доступ:Оформите коммерческую.Предприниматели, работающие на «доходной» упрощенке и имеющие в штате работников.
Карточка публикации
(6 оценок, среднее: 5,00 из 5)
Данную публикацию можно обсудить в комментариях ниже.Обратите внимание! В комментариях наши кураторы не отвечают на вопросы по программам 1С и законодательству.
Задать вопрос нашим специалистам можно по ссылке >>
Все комментарии (5)
В примере Вы отменяете и заново проводите документ Ведомость за прошлый период (2019). Корректно ли это, не вызовет ли это других последствий? Ведь механизмы учета поменялись относительно 2019 года.
А есть ли возможность в программе сделать это автоматически, не выбирая в ручную и заполняя цифры
В качестве примера выбран регистр "Расчеты с клиентами" (Управление торговлей 11, в.11.1.2). Необходимо вывести корректные конечные остатки по этому регистру на конец каждого месяца, причем даже если не было движений в течение определенного месяца. Задача "в лоб" не решается (можете проверить) - указав в качестве периода отчета, например, текущий год и выбрав в отборе клиента, у которого нет движений за этот год, но есть начальный остаток, мы увидим только первый и последний месяцы с корректным конечным остатком, остальные месяцы "провалились":
В инете можно найти рекомендации, как добиться желаемого.
Первое - помимо исходной таблицы остатков (не остатки и обороты, поскольку в данном случае меня интересуют только конечные остатки) надо добавить таблицу со всеми датами. Т.е., если меня интересует этот год, то надо получить список дат на конец каждого месяца этого года - 31 января 23:59:59, 28 февраля 23:59:59 . 31 декабря 23:59:59. Данная таблица с датами соединяется (НЕ объединяется) с основной таблицей (ИсходныеДанные).
В основной таблице добавляем реквизит &Период (у меня это Месяц) как на рисунке, не забываем его же вставить в параметры виртуальной таблицы. Соответственно, для вывода отчета "Период" (он же "Месяц") - это Измерение,
а для связи 2-х таблиц - это Параметр:
Здесь все "переменные" названы по-разному, чтобы не запутаться прежде всего самому, что к чему относится. Также обратите внимание, что здесь ВАЖЕН порядок связи: сначала таблица с датами, потом таблица с исходными данными (не забываем - в СКД связь на данной закладке ЛЕВАЯ).
ЗЫ. Ради интереса проверьте, что будет, если их переставить местами.
Окончательный вариант дает именно то, чего и добивались:
PS. Спасибо Мисте за код запроса, собирающего даты.
PPS. Да пусть не обидятся на меня те, кто решал и публиковал решение этой задачки, я вовсе не претендую на оригинальность, просто хочется свести все воедино прежде всего для самого себя, и чтобы всегда было под рукой.
Читайте также: