Условие счета в запросе 1с

Условие счета в запросе 1с

Вступайте в мою группу помощник программиста.
В ней мы обсуждаем программирование в 1С.

Регистры бухгалтерии в языке 1С 8.3, 8.2 (в примерах)

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

Подписывайтесь и получайте новые статьи и обработки на почту (не чаще 1 раза в неделю).

Вступайте в мою группу ВКонтакте, Одноклассниках, Facebook или Google+ — самые последние обработки, исправления ошибок в 1С, всё выкладываю там в первую очередь.

Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.

Нажмите одну из кнопок, чтобы поделиться:

В статье рассмотрен один из способов передачи значений предопределенных элементов в запрос.

Для передачи в запрос значений перечислений и значений предопределенных элементов ссылочного типа можно воспользоваться:

  1. параметрами запроса;
  2. функцией ЗНАЧЕНИЕ( ) .

Рассмотрим второй вариант, на мой взгляд, он более красивый.

При помощи функции ЗНАЧЕНИЕ можно обратиться к:

  • значениям перечислений;
  • значениям пустых ссылок;
  • предопределенным элементам:
  • справочников;
  • планов видов характеристик;
  • планов счетов;
  • планов видов расчетов;
  • значениям точек маршрута бизнес-процессов;
  • значениям системных перечислений ( ВидДвиженияНакопления , ВидСчета , ВидДвиженияБухгалтерии ).
  • В параметр ИмяЗначения передается строка, которая может иметь один из следующих видов:

    Перечисление. .ЗначениеПеречисления
    Перечисление. .ПустаяСсылка

    Справочник. .
    Справочник. .ПустаяСсылка

    ПланВидовХарактеристик. .
    ПланВидовХарактеристик. .ПустаяСсылка

    ПланСчетов. .
    ПланСчетов. .ПустаяСсылка

    ПланВидовРасчета. .
    ПланВидовРасчета. .ПустаяСсылка

    БизнесПроцесс. .ТочкаМаршрута.
    БизнесПроцесс. .ТочкаМаршрута.ПустаяСсылка

    Вот несколько примеров с фрагментами запросов, иллюстрирующие использование функции Значение:

    ГДЕ ТаблицаКИ.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Телефон)

    ГДЕ ВидыКИ.Родитель = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.СправочникПользователи)
    ВЫБРАТЬ ЗНАЧЕНИЕ(Справочник.Пользователи.ПустаяСсылка) КАК Ссылка

    ГДЕ РеализацияТоваровУслугТовары.ЗаказКлиента <> ЗНАЧЕНИЕ(Документ.ЗаказКлиента.ПустаяСсылка)

    ВЫБРАТЬ ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.НДФЛ) КАК СчетУчета

    ГДЕ Задание.ЗадачаИсточник = ЗНАЧЕНИЕ(Задача.ЗадачаИсполнителя.ПустаяСсылка)

    ВЫБОР КОГДА РасчетыСКлиентами.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) ТОГДА
    РасчетыСКлиентами.Сумма
    ИНАЧЕ
    0
    КОНЕЦ

    Остались вопросы?
    Спросите в комментариях к статье.

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

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

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

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

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

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

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

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

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

    Читайте также:  Как передать информацию с ноутбука на ноутбук

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

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

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

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

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

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

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

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

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

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

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

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

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

    Читайте также:  Hwmonitor не показывает температуру процессора

    По аналогии с помощью следующего запроса можно получить стоимостной остаток материалов на определенном складе на счете материалов. Для этого нужно выполнить следующий запрос (листинг 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 будет содержать склады для счета товаров и товары для счета материалов

    Читайте также:  Mysql посмотреть структуру таблицы

    Листинг 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).

    Ссылка на основную публикацию
    Adblock detector