Файл: Хрусталева Е. Ю. Язык запросов 1С-Предприятия 8 (2013).pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 12.03.2019

Просмотров: 50448

Скачиваний: 8600

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

Рис. 3.28. Вывод остатков заданного товара на складах на заданный период

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

Параметр Период виртуальной таблицы остатков может принимать значения типа Дата,
МоментВремени и Граница. В рассмотренном примере (см. рис. 3.28) Период имеет тип
Дата.

При получении таблицы остатков с указанием параметра Период типа Дата необходимо
учитывать, что дата в системе «1С:Предприятие» включает в свой состав время. Даже
если время не указано явно, оно принимает значение 00:00:00. Таблица остатков
строится на начало секунды, т. е. не включая границы заданного периода. Поэтому
результат, полученный выше (см. рис. 3.28), не включает движений по регистру,
сформированных документами за 03.02.2013.

Таких документов было два – Поступление товаров №5 и Поступление товаров №6.
Первым документом было зафиксировано поступление товара Клавиатура Apple Pro
Keyboards
 на склад Главный в количестве 10. Вторым документом было зафиксировано
поступление товара Клавиатура Apple Pro Keyboards на склад Склад отдела продаж в
количестве 5.

Теперь зададим значение параметра Период как Момент времени документа


background image

Поступление товаров №6 от 03.02.2013 и посмотрим, как изменится результат (рис.
3.29).

Рис. 3.29. Вывод остатков заданного товара на складах на заданный период

Мы видим, что в результат запроса попали движения документа Поступление товаров
№5
, но не включены движения самого документа Поступление товаров №6.

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

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

Зададим значение параметра Период как Граница на момент времени документа
Поступление товаров №6 от 03.02.2013 с видом границы Включая и посмотрим, как
изменится результат (рис. 3.30).


background image

Рис. 3.30. Вывод остатков заданного товара на складах на заданный период

Мы видим, что теперь остатки получены, включая движения указанного документа.
Поскольку больше документов за 03.02.2013, влияющих на остатки товара Клавиатура
Apple Pro Keyboards
 в информационной базе нет, то аналогичный результат можно
получить, задав значение параметра Период как дату – 04.02.2013.

Пример 2
Рассмотрим еще одну тонкость, касающуюся отбора по товару при получении таблицы
остатков.

Получим остатки заданного товара за весь период времени без разреза по складам
(листинг 3.24).

Листинг 3.24. Вывод остатков заданного товара за весь период


background image

В итоге для товара Клавиатура Apple Pro Keyboards мы получим следующий результат
(рис. 3.31).

Рис. 3.31. Вывод остатков заданного товара за весь период

Если в качестве значения параметра Товар задать отсутствующий в остатке товар,
например, Телефон LG W7200, то результат запроса будет пустым (рис. 3.32).

Рис. 3.32. Вывод остатков товара, которого нет в остатке

Если же из текста запроса убрать все измерения (листинг 3.25), то результат запроса для
отсутствующего в остатке товара будет содержать одну строку с нулевым количеством
(рис. 3.33).

Листинг 3.25. Вывод остатков заданного товара за весь период

Рис. 3.33. Вывод остатков товара, которого нет в остатке

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

Рассмотрим следующую задачу. Предположим, необходимо выбрать только те склады, у
которых нет никаких остатков по номенклатуре. Это можно сделать с помощью
следующего запроса (листинг 3.26).

Листинг 3.26. Вывод складов, не имеющих остатков по номенклатуре


background image

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

В результате на дату 01.02.2013 мы получим следующий результат (рис. 3.34).

Рис. 3.34. Вывод складов, не имеющих остатков по номенклатуре

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

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

Листинг 3.27. Вывод номенклатуры, которая числилась на складе в течение дня

В итоге на дату 01.03.2013 мы получим следующий результат (рис. 3.35).