Файл: Хрусталева Е. Ю. Язык запросов 1С-Предприятия 8 (2013).pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 12.03.2019
Просмотров: 51821
Скачиваний: 8725
Рис. 3.65. Вывод остатков товарно-материальных ценностей в разрезе субконто «Номенклатура» и «Склады»
Если же требуется отобрать остатки по конкретным значениям субконто, то в описанной
выше ситуации (когда на одном счете два субконто, а на втором – только одно из них)
можно использовать следующий запрос (листинг 3.56).
Листинг 3.56. Вывод остатков товарно-материальных ценностей с отбором по значению субконто
В данном запросе в условии отбора в предложении ГДЕ применяется конструкция
ВЫБОР КОГДА … ИНАЧЕ … КОНЕЦ. В результате условие отбора по значению второго
субконто применяется только для счета товаров.
Выберем в обработке Субконто в качестве товара Паркер, а в качестве склада Филиал
и получим следующий результат (рис. 3.66).
Рис. 3.66. Вывод остатков товарно-материальных ценностей с отбором по значению субконто
Особенности использования периодов и моментов времени при получении остатков
Все виртуальные таблицы регистра бухгалтерии позволяют устанавливать отбор итогов
или на момент времени, или за период. Для установки такого отбора итогов можно
использовать значения типа Дата, МоментВремени или Граница. Рассмотрим
использование этих объектов в параметре Период виртуальной таблицы остатков,
которая получает остатки на момент времени, указанный в этом параметре.
В нашей демонстрационной конфигурации журнал проводок по счету Касса за июнь 2013
года содержит четыре проводки за первое и второе июня по 10 рублей каждая. Входящий
остаток составил 15 рублей, исходящий остаток – 55 рублей (табл. 3.3).
Таблица 3.3. Проводки по счету «Касса» за июнь 2013
Период
Счет дебета
Счет кредита
Сумма
Текущий остаток
Остаток 31.05.2013
15,00
01.06.2013 12:00:00
Касса
Покупатели
10.00
25,00
01.06.2013 23:59:59
Касса
Покупатели
10.00
35,00
Остаток 01.06.2013
35,00
02.06.2013 0:00:00
Касса
Покупатели
10.00
45,00
02.06.2013 12:00:00
Касса
Покупатели
10.00
55,00
Остаток 02.06.2013
55,00
Для анализа остатка мы воспользуемся функцией, которая получает остаток на счете
Касса при помощи следующего запроса (листинг 3.57).
Листинг 3.57. Пример получения остатков регистра бухгалтерии
В запросе получается остаток по счету Касса на тот момент времени, который мы будем
передавать ему в качестве параметра. Наша задача – получить остаток на счете Касса,
который там сформировался к концу 1 июня (или, другими словами, к началу дня 2 июня).
Для этого установим значение поля ввода Дата обработки Работа с виртуальными
таблицами как 01.06.2013 и рассмотрим следующие варианты:
1. Сначала установим значение параметра запроса Момент равным дате (листинг
3.58).
Листинг 3.58. Первый вариант установки параметра запроса
Поскольку дата в системе «1С:Предприятие» включает в свой состав время, то
значение параметра Момент станет равным 01.06.2013 00:00:00.
1. Установим значение параметра запроса Момент равным концу дня указанной даты
(листинг 3.59).
Листинг 3.59. Второй вариант установки параметра запроса
Значение параметра Момент станет равным 01.06.2013 23:59:59.
1. Установим значение параметра запроса Момент равным началу следующего дня от
указанной даты (листинг 3.60).
Листинг 3.60. Третий вариант установки параметра запроса
Значение параметра Момент станет равным 02.06.2013 00:00:00.
1. Установим значение параметра запроса Момент равным концу дня указанной даты,
используя объект Граница с параметром ВидГраницы.Включая (листинг 3.61).
Листинг 3.61. Четвертый вариант установки параметра запроса
Значение параметра Момент станет равным 01.06.2013 23:59:59, включая движения
документа, проведенного в последнюю секунду этого дня.
Результаты различных вариантов установки момента времени при получении остатков
приведены в следующей таблице (табл. 3.4).
Таблица 3.4. Сводная таблица полученных результатов
№
Метод
Момент Остаток
Комментарий
1
01.06.10
0:00:00
15,00
Не было учтено время, получили остаток на
начало дня
2
Конец
текущего
дня
01.06.10
23:59:59
25,00
Получили остаток на конец дня, но в остатки не
попала последняя проводка, сделанная в 23:59:59
Начало
02.06.10
3
следующего
дня
0:00:00
35,00
Правильно!
4
Граница
(включая)
Граница
35,00
Правильно!
Эти результаты демонстрируют тот факт, что таблица остатков регистра бухгалтерии
(также как и таблица остатков регистра накопления) строится на начало секунды, то есть
не включая границы заданного периода.
Поэтому результат, полученный в первом случае, не включает движений по регистру,
сформированных документами за 01.06.2013. Во втором случае результат не включает
движения документа, проведенного в последнюю секунду этого дня. В третьем случае
результат правильный, т. к. получает данные на начало следующего дня, но при этом не
включает движений по регистру, сформированных документами за 02.06.2013. И в
четвертом случае результат получается с включением всех движений за дату 01.06.2013,
что нам и требовалось.
Итак, для получения правильного остатка на конец периода, включающего все операции,
необходимо или получать остатки на начало следующего периода, или использовать
объект Граница с параметром ВидГраницы.Включая.
В случаях, когда нужно получить итоги с точностью «до ссылки», требуется использовать
параметр Период типа МоментВремени, полученный из даты документа и ссылки на
документ. При этом необходимо иметь в виду, что, также как и для таблицы остатков
регистра накопления, данные получаются, исключая записи движений самого документа.
Получение оборотов
Для получения оборотов по счету в разрезе субконто и измерений и оборотов счета с
корреспондирующими счетами (как дебетуемыми, так и кредитуемыми) используется
виртуальная таблица Обороты(). Таблица оборотов может быть использована при
разработке таких отчетов, как «Анализ счета/субконто/по датам», «Журнальный ордер»,
«Ведомость по счету» и др.
Виртуальная таблица Обороты имеет следующий состав полей:
<Имя измерения> – поле, содержащее значения измерения регистра, в разрезе
которого посчитан оборот. Количество таких полей равно количеству измерений,
определенных для регистра как объекта конфигурации;
<Имя измерения>Кор – поле, содержащее значения корреспондирующего
небалансового измерения регистра, в разрезе которого посчитан оборот;
<Имя общего реквизита> – поле, содержащее значения общего реквизита с именем,
заданным в конфигурации. Такие поля создаются для общих реквизитов, являющихся
разделителями (режим разделения данных – Разделять) с режимом использования
разделяемых данных НезависимоИСовместно, в которых участвует данный регистр;