Добавил:
sora.alai.102@gmail.com Делаю работы на заказ. Какие именно? Пишите. Или регайтесь на бирже, где я работаю: https://vsesdal.com/promo?ref=748568 Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

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

.pdf
Скачиваний:
2185
Добавлен:
25.11.2018
Размер:
31.3 Mб
Скачать

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

Для документа Операция №3 мы получим следующий результат (рис. 3.58).

Рис. 3.58. Отбор движений регистра бухгалтерии по регистратору

Получение остатков

Для построения бухгалтерских отчетов и анализа данных в большинстве случаев используются виртуальные таблицы регистров бухгалтерии. Эти таблицы предназначены для решения конкретных задач.

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

Виртуальная таблица Остатки имеет следующий состав полей:

<Имя измерения> – поле, содержащее значения измерения регистра с именем, заданным в конфигурации. Количество таких полей равно количеству измерений, определенных для регистра как объекта конфигурации; <Имя общего реквизита> – поле, содержащее значения общего реквизита с именем,

заданным в конфигурации. Такие поля создаются для общих реквизитов, являющихся разделителями (режим разделения данных – Разделять) с режимом использования разделяемых данных НезависимоИСовместно, в которых участвует данный регистр; <Имя ресурса>Остаток – поле, содержащее остаток ресурса регистра по именам ресурсов, как они заданы в конфигураторе, с добавлением слова Остаток. Содержит абсолютный остаток без учета вида счета – дебетовый остаток показывается положительным числом, кредитовый – отрицательным числом; <Имя ресурса>ОстатокДт – поле, содержащее дебетовый остаток ресурса

регистра по именам ресурсов, как они заданы в конфигураторе, с добавлением слова ОстатокДт. Содержит дебетовый остаток с учетом вида счета. Если счет пассивный, значение этого поля всегда равно нулю. Если счет активный, значение поля равно значению поля Остаток. Если счет активно-пассивный, значение поля равно значению поля Остаток, если Остаток больше или равен нулю. Если Остаток меньше нуля, значит – ноль; <Имя ресурса>ОстатокКт – поле, содержащее кредитовый остаток ресурса

регистра по именам ресурсов, как они заданы в конфигураторе, с добавлением слова ОстатокКт. Содержит кредитовый остаток с учетом вида счета. Если счет активный, значение этого поля всегда равно нулю. Если счет пассивный, равно -

Остаток. Если счет активно-пассивный, значение поля равно нулю, если значение поля Остаток больше или равно нулю. Если значение поля Остаток меньше нуля, значение этого поля равно -Остаток;

<Имя ресурса>РазвернутыйОстатокДт – содержит развернутый дебетовый остаток, который считается развернуто по всем измерениям, указанным в запросе. Имеет смысл только при использовании в запросе итогов по измерениям. Для детальной записи значение этого поля равно значению поля <Имя ресурса>ОстатокДт. Для итоговой записи равно сумме дебетовых остатков всех детальных записей;

<Имя ресурса>РазвернутыйОстатокКт – содержит развернутый кредитовый остаток, который считается развернуто по всем измерениям, указанным в запросе. Имеет смысл только при использовании в запросе итогов по измерениям. Для детальной записи значение этого поля равно значению поля <Имя ресурса>ОстатокКт. Для итоговой записи равно сумме кредитовых остатков всех детальных записей;

Субконто<Номер субконто> – имеет тип Характеристика.<имя>. Содержит значение субконто. Количество полей Субконто зависит от максимального количества субконто на счете плана счетов. Номер субконто начинается с 1. Набор и порядок этих полей определяются параметром Субконто, переданным в виртуальную таблицу; Счет – имеет тип ПланСчетовСсылка.<имя>. Позволяет получить остатки, сгруппированные по счетам.

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

Период – имеет тип Дата, МоментВремени или Граница. Момент времени, на который нужно посчитать остатки. Если параметр не задан, то будут получены актуальные остатки, включающие движения последнего проведенного документа; УсловиеСчета – содержит конструкцию языка запросов. Позволяет установить фильтр по счету или счетам. Как правило, содержит следующие условия: Счет = (В

ИЕРАРХИИ, В) &Счет;

Субконто – в этот параметр передается ссылка, или массив ссылок, или фиксированный массив ссылок, или список значений, содержащий ссылки, на виды субконто. Задает набор и порядок субконто, которыми можно оперировать в запросе. А также служит для отбора записей регистра по видам субконто. Если параметр задан, то будут выбираться данные только по тем счетам, у которых определены все указанные виды субконто. Если параметр не задан, то ограничений по видам субконто нет. Субконто определяются позиционно по соответствующему счету; Условие – содержит конструкцию языка запросов. Позволяет устанавливать отбор данных виртуальной таблицей по значениям субконто и измерений регистра бухгалтерии.

Рассмотрим примеры построения запросов к таблице остатков регистра бухгалтерии.

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

Листинг 3.49. Вывод остатка заданного товара со счета товаров

В данном запросе в параметр УсловиеСчета, используемый при построении виртуальной таблицы остатков, мы передаем ссылку на счет товаров (ссылку для предопределенного счета можно получить по имени, например: СчетТоваров =

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

По аналогии с помощью следующего запроса можно получить стоимостной остаток материалов на определенном складе на счете материалов. Для этого нужно выполнить следующий запрос (листинг 3.50).

Листинг 3.50. Вывод остатка материалов на заданном складе на счете материалов

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

Результат запроса будет содержать одну строку в одном поле: абсолютный остаток по ресурсу регистра Сумма (рис. 3.59).

Рис. 3.59. Вывод остатка материалов на заданном складе на счете материалов

Следующий запрос позволяет отобрать остатки в разрезе валют по всем счетам, на

которых ведется валютный учет (листинг 3.51).

Листинг 3.51. Вывод остатков на валютных счетах

Результат выполнения данного запроса представлен на рис. 3.60.

Рис. 3.60. Вывод остатков на валютных счетах

В данном запросе в параметр УсловиеСчета передается условие отбора по счетам с признаком учета Валютный. Остатки подсчитываются в разрезе счетов и валют (значения измерения Валюта).

Параметр «Субконто»

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

СубконтоКт).

Все перечисленные параметры могут принимать значения

ПланыВидовХарактеристикСсылка.<имя> или содержать массив, состоящий из значений указанного типа данных. То есть, точнее говоря, в параметре Субконто можно передать не значение субконто, а значение вида субконто или массив видов субконто. А для отбора по значению субконто используется параметр Условие (см. листинги 3.49, 3.50).

Рассмотрим два аспекта использования параметра Субконто. Прежде всего, это отбор итогов по виду субконто.

Продемонстрируем это на примере нашей демонстрационной конфигурации. Предположим, нам необходимо получить отчет по остаткам товарно-материальных запасов. Для этого мы должны получить остатки со счетов учета материальных ценностей. Таких счетов два: предопределенный счет Товары, на котором первым

субконто учитывается Номенклатура, а вторым – Склады. И предопределенный счет Материалы, на котором первым субконто учитываются Склады, а вторым –

Номенклатура.

Выведем стоимостные остатки со счетов учета материальных ценностей в разрезе субконто Номенклатура с помощью следующего запроса (листинг 3.52).

Листинг 3.52. Вывод остатков товарно-материальных ценностей в разрезе субконто «Номенклатура»

В консоли запросов установим значение параметра ВидСубконто как субконто

Номенклатура типа СправочникСсылка.Номенклатура, значения параметров СчетМатериалов и СчетТоваров как ссылки на предопределенные счета Материалы и Товары соответственно. Выполним запрос (рис. 3.61).

Рис. 3.61. Вывод остатков товарно-материальных ценностей в разрезе субконто «Номенклатура»

В результате итоговые остатки товарно-материальных ценностей на обоих счетах (Товары и Материалы) подсчитаны в разрезе номенклатуры, которая учитывается как аналитика на этих счетах.

Теперь рассмотрим второй аспект использования параметра Субконто – для определения набора и порядка следования субконто в результате запроса.

В нашем примере проблема в том, что субконто Номенклатура прикреплено первым субконто на счете Товары и вторым – на счете Материалы. А обращаемся мы к ним в запросе именно по номеру (Субконто1, Субконто2).

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

Если при этом не указать параметр Субконто (листинг 3.53), то поле Субконто1 будет содержать и товары для счета товаров, и склады для счета материалов. Поле Субконто2 будет содержать склады для счета товаров и товары для счета материалов

(рис. 3.62).

Листинг 3.53. Вывод остатков товарно-материальных ценностей в разрезе субконто «Номенклатура» и «Склады»

Рис. 3.62. Вывод остатков товарно-материальных ценностей в разрезе субконто «Номенклатура» и «Склады»

В итоге мы видим строку результата запроса – Филиал Паркер 1000, где Филиал – это склад (но находится в колонке Товар), а Паркер – товар (но находится в колонке Склад).

Чтобы избежать подобной путаницы и добиться в результате запроса нужного порядка следования субконто на счетах (без изменения настройки плана счетов), передадим в параметр ВидыСубконто массив видов субконто, следующих в нужной последовательности (листинг 3.54).

Листинг 3.54. Вывод остатков товарно-материальных ценностей в разрезе субконто «Номенклатура» и «Склады»

В результате мы получим нужные итоги (рис. 3.63).

Рис. 3.63. Вывод остатков товарно-материальных ценностей в разрезе субконто «Номенклатура» и «Склады»

Таким образом, теперь независимо от счета первым субконто в нашем запросе является Номенклатура, вторым – Склады. Причем если будет нужно изменить последовательность группировок в запросе (сначала группировать по складам, потом внутри склада – по номенклатурным позициям), нам достаточно изменить порядок следования элементов массива, который передается в параметр виртуальной таблицы

Субконто.

Этот пример можно посмотреть в демонстрационной конфигурации «Бухгалтерский учет», прилагающейся к книге, в обработке Субконто.

Теперь рассмотрим еще одну тонкость, касающуюся отбора по виду субконто. Дело в том, что если параметр Субконто задан, то данные выбираются только по тем счетам, у которых определены все указанные виды субконто.

Продемонстрируем эту особенность на следующем примере. В нашей демонстрационной конфигурации по счету Материалы существует всего одна проводка. В дебет счета начисляется 1000, значение первого субконто – Паркер (товар), второго – Филиал (склад).

Изменим аналитику на счете материалов. В конфигураторе удалим для предопределенного счета Материалы второй вид субконто, а первый вид субконто изменим на субконто Номенклатура. Для счета Товары аналитику оставим без изменений. Первым субконто на нем учитывается Номенклатура, вторым – Склады. В документе Операция №8 изменим значение первого субконто на Паркер (товар), а второго субконто на счете материалов теперь нет.

После этого выполним команду Остатки товарно-материальных ценностей в

обработке Субконто (рис. 3.64).

Рис. 3.64. Вывод остатков товарно-материальных ценностей в разрезе субконто «Номенклатура» и «Склады»

Если сравнить результат с правильным вариантом (см. рис. 3.63), то мы видим, что пропала как раз строка результата запроса – Паркер Филиал 1000, т. к. в параметре Субконо передается массив из двух видов субконто (Номенклатура, Склады), а у счета материалов теперь один вид субконто – Номенклатура.

Ситуацию можно исправить путем объединения запросов к каждому счету (Товары и

Материалы) отдельно (листинг 3.55).

Листинг 3.55. Вывод остатков товарно-материальных ценностей в разрезе субконто «Номенклатура» и «Склады»

Взапросе используется объединение данных запроса к счету товаров и запроса к счету материалов. Параметр Субконто в этих запросах не задан, т. к. в этом случае виды субконто и их последовательность определяются позиционно по соответствующему счету. Для счета товаров – это Номенклатура и Склады, для счета материалов – Номенклатура. Затем для результата объединения этих запросов рассчитываются общие итоги и итоги по полю Товар.

Врезультате мы получим нужные итоги (рис. 3.65).