Регистры накопления – один из ключевых объектов платформы 1С:Предприятие․ Они позволяют хранить
агрегированные данные (остатки, обороты) и получать их за любой интересующий момент
времени․ Основным измерением любого регистра накопления является поле Период․
От того, как правильно задать период в запросе, зависит корректность результата и
производительность работы системы․
Содержание статьи
- Что такое период в регистре накопления
- Виды регистров накопления (Остатки и Обороты)
- Синтаксис указания периода в запросе
- Параметры запроса и работа с датами
- Примеры запросов
- Оптимизация и производительность
- Часто задаваемые вопросы
- Контактная информация
Что такое период в регистре накопления
Поле Период – это системный реквизит, фиксирующий дату (время) состояния
записи регистра․ В отличие от большинства реквизитов, Период не привязан к
дате документа, а задаёться непосредственно при записи в регистр (обычно в момент
проведения документа‑регистратора)․
Для регистров остатков значение периода определяет «на какую дату» нужно
получить состояние․ Для регистров оборотов период задаёт границы интервала,
за который считаются приходы и расходы;
Виды регистров накопления
- Регистры накопления «Остатки» – позволяют получать значение ресурса на
конкретную дату (например, остаток денежных средств на )․ - Регистры накопления «Обороты» – позволяют получать суммарные приходы и
расходы за выбранный период (например, оборот по кассе за квартал)․
Синтаксис указания периода в запросе
В запросах 1С используется специальный синтаксис вызова виртуальных таблиц
регистра․ Параметры НачалоПериода и КонецПериода передаются
в круглых скобках после имени таблицы․
Общий вид:
․․․
FROM
РегистрНакопления․ИмяРегистра․ИмяТаблицы(НачалоПериода, КонецПериода) КАК Таблица
WHERE
․․․
Если требуется получить только остатки на одну дату, в качестве КонецПериода
можно указать ту же дату, а НачалоПериода – NULL (или
Дата(0001,1,1))․
Параметры запроса и работа с датами
Для гибкости часто используют параметры запроса․ Пример установки параметров:
Запрос․Текст =
«ВЫБРАТЬ
| Остатки․Сумма ОСТАТОК,
| Остатки․Период КАК Дата
|ИЗ
| РегистрНакопления․КассаОстатки․Остатки(&Начало, &Конец) КАК Остатки
|ГДЕ
| Остатки․Сотрудник = &Сотрудник»;
Запрос․УстановитьПараметр(«Начало», Дата(2024,1,1));
Запрос․УстановитьПараметр(«Конец», Дата(2024,12,31));
Запрос․УстановитьПараметр(«Сотрудник», Сотрудники․Сотрудники․НайтиПоКоду(«001»));
Важно помнить:
- Параметры
&Началои&Конецдолжны быть типомДата․ - Если нужен «полный» период, можно передать
NULL– система заменит его
на минимальную/максимальную дату, доступную в базе․ - Для сравнения только по месяцам/годам удобно использовать функции
ГОД,МЕСЯЦили преобразование в строку
Формат(Дата, "YYYYMM")․
Примеры запросов
Остатки кассы на конкретную дату
Запрос․Текст =
«ВЫБРАТЬ
| ОСТАТКИ․Сумма КАК СуммаОстаток,
| ОСТАТКИ․Период КАК Дата
|ИЗ
| РегистрНакопления․КассаОстатки․Остатки(&Дата, &Дата) КАК ОСТАТКИ
|ГДЕ
| ОСТАТКИ․Сотрудник = &Сотрудник»;
Запрос․УстановитьПараметр(«Дата», Дата(2025,12,31));
Запрос․УстановитьПараметр(«Сотрудник», Сотрудники․Сотрудники․НайтиПоКоду(«001»));
Обороты по типу платежа за квартал
Запрос․Текст =
«ВЫБРАТЬ
| Обороты․Сумма КАК СуммаОборот,
| Обороты․Период КАК Период
|ИЗ
| РегистрНакопления․КассаОстатки․Обороты(&Начало, &Конец) КАК Обороты
|ГДЕ
| Обороты․ТипПлатежа = &ТипПлатежа»;
Запрос․УстановитьПараметр(«Начало», Дата(2024,1,1));
Запрос․УстановитьПараметр(«Конец», Дата(2024,3,31));
Запрос․УстановитьПараметр(«ТипПлатежа», Перечисления․ТипПлатежа․Наличные);
Сводка по годам (30 документов за каждый год)
Запрос․Текст =
«ВЫБРАТЬ
| Год(Обороты․Период) КАК Год,
| СУММА(Обороты․Сумма) КАК СуммаГода
|ИЗ
| РегистрНакопления․ПартииТоваровНаСкладах․Обороты(&Начало, &Конец) КАК Обороты
|ГДЕ
| Обороты․ТипДокумента = &ТипДокумента
|СГРУППИРОВАТЬ ПО Год»;
Запрос․УстановитьПараметр(«Начало», Дата(2018,1,1));
Запрос․УстановитьПараметр(«Конец», Дата(2020,12,31));
Запрос․УстановитьПараметр(«ТипДокумента», Перечисления․ТипДокумента․ПоступлениеТоваров);
Оптимизация и производительность
- Указывайте точные границы периода․ Чем шире диапазон, тем больше строк
обрабатывается, что замедляет запрос․ - Индексы по полям Период и измерениям․ В 1С они создаются автоматически,
но в больших базах рекомендуется проверять наличие индексов в СУБД․ - Избегайте функций над полем Период в условии WHERE․ Выражения типа
Год(Период) = 2024заставляют СУБД выполнять расчёт для каждой строки․
Лучше использовать диапазон:Период >= Дата(2024,1,1) И Период < Дата(2025,1,1)․ - Кеширование запросов․ При повторяющихся запросах используйте
Запрос․УстановитьКешировать(Истина)или сохраняйте результаты в
временные таблицы․
Часто задаваемые вопросы
- Можно ли задать только конец периода?
- Да․ Если в скобках указать
(NULL, &Конец), система будет использовать
минимальную возможную дату в качестве начала․ - Как получить остаток «на конец месяца» без указания точного дня?
- Воспользуйтесь функцией
КонецМесяца(Дата):
Запрос․УстановитьПараметр("Конец", КонецМесяца(Дата(2024,5,1)))․ - Почему запрос возвращает нулевые строки, хотя данные есть?
- Частая причина – несоответствие типа даты (например, время 00:00:00 против
12:00:00)․ Убедитесь, что в параметрах время не задаётся, либо используйте
функциюДатаБезВремени․
Контактная информация
Если у вас возникли вопросы по работе с регистрами накопления, вы можете
обратиться в наш центр поддержки․
- Официальный сайт: https://support-1c․example․com
- Горячая линия: 8 (800) -55‑33‑22 (круглосуточно)
- Номера телефонов отдела технической поддержки:
- Москва – 8 (495) -23‑45‑67
- Санкт‑Петербург – 8 (812) -65‑43‑21
- Региональный центр – 8 (800) -77‑88‑99
- Электронный адрес: support@1c․example․com
- Личный кабинет клиента: https://support-1c․example․com/cabinet
- Личный приём (запись онлайн): https://support-1c․example․com/appointment
- График приёма:
- Пн‑Пт: 09:00 – 18:00
- Сб: 10:00 – 15:00 (по предварительной записи)
- Вс: выходной
- Отделы:
- Техническая поддержка
- Консультации по конфигурациям
- Обучение и сертификация
- Разработка типовых решений
- Руководство центра:
- Иванов И․И․ – Директор по поддержке клиентов
- Петров П․П․ – Руководитель отдела технической поддержки
- Отзывы клиентов: https://support-1c․example․com/reviews
Надеемся, что данная статья помогла вам разобраться с указанием периода в запросах
к регистрами накопления 1С․ При необходимости используйте приведённые примеры
и не стесняйтесь обращаться в службу поддержки – мы всегда готовы помочь!