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

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

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

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

Добавлен: 12.03.2019

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

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

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

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

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

Рис. 3.46. Пример получения остатков и оборотов регистра накопления с использованием поля «Период»

В случае же, если среди итогов есть группировка Период (листинг 3.39), алгоритм
расчета итогов остатков еще более сложный.

Листинг 3.39. Пример получения остатков и оборотов регистра накопления с использованием поля «Период» и
группировкой по периоду


background image

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

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

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


background image

Рис. 3.47. Пример получения остатков и оборотов регистра накопления с использованием поля «Период» и группировкой

по периоду

Заметьте, что «особыми» алгоритмами были рассчитаны только поля остатков, поля же
оборотов рассчитываются простым суммированием в рамках требуемых группировок.

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

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

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

Обратим внимание еще на ряд важных особенностей при расчете итогов по полям
остатка:

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


background image

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

подробнее

Об особенностях расчета итогов по полям остатка подробнее можно прочитать в статье ИТС
«Расчет итогов по полям остатка».

Бухгалтерский учет

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

Все примеры, используемые в данном разделе, можно посмотреть в демонстрационной
конфигурации «Бухгалтерский учет», которая находится на прилагаемом компакт-диске.


background image

Планы счетов

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

<Имя общего реквизита> – поле, содержащее значения общего реквизита с именем,
заданным в конфигурации. Такие поля создаются для общих реквизитов, не
являющихся разделителями, или для разделителей с режимом использования
разделяемых данных НезависимоИСовместно, в которых участвует данный план
видов счетов;
<Имя признака учета> – поле, содержащее значения признаков учета счета с
именем, заданным в конфигурации. Количество таких полей равно количеству
признаков учета, определенных для плана счетов как объекта конфигурации;
<Имя реквизита> – поле, содержащее значения реквизита счета с именем,
заданным в конфигурации. Количество таких полей равно количеству реквизитов,
определенных для плана счетов как объекта конфигурации;
<Имя табличной части> – поле, содержащее табличные части счета. Имена полей
соответствуют именам табличных частей плана счетов, как они заданы в
конфигураторе. Имеет тип РезультатЗапроса. Результат запроса к табличной части
состоит из колонки НомерСтроки и колонок с именами, соответствующими именам
реквизитов табличной части;
Вид – имеет тип системного перечисления ВидСчета. Содержит вид счета
(АктивныйПассивный или АктивноПассивный);
Виды субконто – специализированная табличная часть, содержащая перечень видов
субконто для счета. Имеет тип РезультатЗапроса. Количество строк этой табличной
части ограничено значением свойства МаксКоличествоСубконто для плана счетов.
Каждая строка табличной части ВидыСубконто содержит следующие поля:
ВидСубконтоПредопределенноеТолькоОбороты и признаки учета субконто,
определенные в конфигураторе;
Забалансовый – имеет тип Булево. Содержит признак забалансовости счета;
Код – имеет тип Строка. Содержит код счета;
Наименование – имеет тип Строка. Содержит наименование счета;
ПометкаНаУдаление – имеет тип Булево. Содержит признак пометки на удаление
счета;
Порядок – имеет тип Строка. Содержит строку с порядком, по которому можно
выполнить упорядочивание списка счетов. Если при конфигурировании у плана счетов
установлено свойство Автопорядок по коду, то при формировании результатов
запроса будет отмечено, что сортировка выполняется по полю Код, однако на самом
деле будет использоваться сортировка по полю Порядок;
Предопределенный – имеет тип Булево. Содержит признак того, что данный счет
определен в метаданных и над ним нельзя производить некоторые операции;
Представление – виртуальное поле, не хранится в информационной базе. Содержит