🔥 Горящие вакансии
Все статьи

Как работают виртуальные таблицы Остатки, Обороты, ОстаткиИОбороты, особенности применения в СКД. Особенности объекта СтандартныйПериод

Эту и другие технические статьи написали наши программисты 1С и получили за них премии. Если вы тоже работаете с 1С и любите делиться опытом, приходите разработчиком в Neti

Рассмотрим виртуальные таблицы в СКД 1С: Обороты, Остатки, ОстаткиИобороты. 

Дано: регистр накопления(остатки) в котором есть запись на 31.12.2021 23:59:59

Как работают виртуальные таблицы Остатки, Обороты, ОстаткиИОбороты, особенности применения в СКД. Особенности объекта СтандартныйПериод

Виртуальная таблица Остатки строится на начало секунды, указанной в параметре Период, другими словами не включают дату. Об этом рассказано в статье ИТС Особенности использования периодов и моментов времени при получении остатков. Таким образом следующий запрос:

ВЫБРАТЬ
    Остатки.Товар КАК Товар,
    Остатки.Склад КАК Склад,
    Остатки.КоличествоОстаток КАК Остаток
ИЗ
    РегистрНакопления.ТоварныеЗапасы.Остатки(&Период, Товар = &Товар) КАК Остатки

при использовании различных параметров приведет к разным результатам

Период Остаток Примечание
31.12.2021 23:59:59 10 Остаток на начало секунды. Не совсем то что мы хотели
01.01.2022 0:00:00 9 Остаток на начало следующей секунды. То что нужно!
Граница Включая; 31.12.2021 23:59:59 9 Используется объект Граница с видом Включая. То что нужно!

Виртуальные таблицы Обороты, Остатки и обороты включают дату начала и дата окончания. Об этом написано в статье ИТС Особенности использования периодов и моментов времени при получении оборотов. Проверим это следующим запросом:

ВЫБРАТЬ
    Обороты.Товар КАК Товар,
    Обороты.Склад КАК Склад,
    Обороты.КоличествоОборот КАК Количество
ИЗ
    РегистрНакопления.ТоварныеЗапасы.Обороты(&НачалоПериода, &КонецПериода, , Товар = &Товар) КАК Обороты

При параметрах НачалоПериода = 01.01.2021 12:00:00 и КонецПериода = 31.12.2021 23:59:59 получаем значение в поле Количество = 9

Также существует миф что СКД учитывает остатки на конец секунды когда передаем параметр период в виртуальную таблицу Остатки. Но это не так, так как в наборе данных запрос используется обычный запрос. Поэтому при получении остатков также следует учитывать то что остатки будут получены на начало секунды, и позаботиться о том чтобы установить значение параметра период +1 секунда.

Важно!  при использовании объекта Стандартный период — дата начала это начало дня, дата окончания это всегда конец дня, если дата окончания указана. При такой настройке параметров

Как работают виртуальные таблицы Остатки, Обороты, ОстаткиИОбороты, особенности применения в СКД. Особенности объекта СтандартныйПериод

если в параметре СтандартныйПериод выбрать 01.12.2021 — 31.12.2021, то значения параметров НачалоПериода, КонецПериода будут вычислены начало и конец дня, соответственно:

Как работают виртуальные таблицы Остатки, Обороты, ОстаткиИОбороты, особенности применения в СКД. Особенности объекта СтандартныйПериод

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

Как работают виртуальные таблицы Остатки, Обороты, ОстаткиИОбороты, особенности применения в СКД. Особенности объекта СтандартныйПериод

СтандартныйПериод с пустой датой окончания и значение параметра ДатаОстатков:

Как работают виртуальные таблицы Остатки, Обороты, ОстаткиИОбороты, особенности применения в СКД. Особенности объекта СтандартныйПериод

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

Отправить резюме

    Я согласен на обработку персональных данных в соответствии
    со ст. 9 ФЗ № 152-ФЗ «О персональных данных»

    Pекомендовать друга

      Выбрать вакансию
      • Программист 1С
      • Консультант-аналитик 1С
      • Разработчик Android
      • Разработчик iOS
      • Разработчик React JS (middle)
      • Разработчик React Native (middle)
      • UX/UI дизайнер
      • Аналитик
      • QA engineer (тестировщик)
      • Разработчик PHP (senior)
      • Разработчик React JS
      • Разработчик Flutter
      • Разработчик React Native
      • Проекты для команды специалистов 1С
      • Вакансия для специалистов 1С: ИП, СЗ и юрлиц
      • Ведущий консультант Microsoft Dynamics 365 Sales
      • Консультант по финансам Microsoft Dynamics AX
      • Руководитель проектов Microsoft Dynamics 365 FO и AX 2012
      • Консультант Microsoft Dynamics AX на зарубежные проекты
      • Ведущий консультант Microsoft Dynamics 365 Finance and Operation
      • Разработчик Microsoft Dynamics 365 for Finance and Operations
      • Разработчик Microsoft Dynamics Axapta
      • Разработчик PHP (фреймворк Yii2 или Laravel)
      • Разработчик Bitrix
      • Ведущий разработчик Microsoft Dynamics AX на зарубежные проекты
      • Разработчик PHP
      Я согласен на обработку персональных данных в соответствии
      со ст. 9 ФЗ № 152-ФЗ «О персональных данных»

      Спасибо!

      Мы получили ваше резюме. Менеджер свяжется с вами в течение трех дней

      Горящие вакансии