Центральный Дом Знаний - Работа в 1С 25

Информационный центр "Центральный Дом Знаний"

Заказать учебную работу! Жми!



ЖМИ: ТУТ ТЫСЯЧИ КУРСОВЫХ РАБОТ ДЛЯ ТЕБЯ

      cendomzn@yandex.ru  

Наш опрос

Как Вы планируете отдохнуть летом?
Всего ответов: 922

Онлайн всего: 1
Гостей: 1
Пользователей: 0


Форма входа

Логин:
Пароль:

Работа в 1С 25

Работа в программе 1С

стр.: 1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  32
33  34  35  36  37  38  39  40  41  42  43  44  45  

Сохраните Конфигурацию, запустите 1С в режиме Предприятие и попробуйте разные варианты отчета.

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

Рисунок 7.2.4

Процедура Печать()

ТипОтчета=СоздатьОбъект("СписокЗначений");

ТипОтчета.ИзСтрокиСРазделителями("""Таблица"", ""Сокращенная таблица"", ""Текст""");

ТипОтчета.ВыбратьЗначение(Выб,"",,,1);

Таб = СоздатьОбъект("Таблица");

Таб.ИсходнаяТаблица("Печать");

Таб.ВывестиСекцию("Шапка");

Если Выб="Таблица" Тогда

Таб.ВывестиСекцию("Колонки");

ИначеЕсли Выб="Сокращенная таблица" Тогда

Таб.ВывестиСекцию("Колонки1");

КонецЕсли;

Таб.Опции(0,0,Таб.ВысотаТаблицы(),0);

ВыбратьСтроки();

Пока ПолучитьСтроку()=1 Цикл

Если Выб="Таблица" Тогда

Таб.ВывестиСекцию("Строка_1");

ИначеЕсли Выб="Сокращенная таблица" Тогда

Таб.ВывестиСекцию("Строка_2");

ИначеЕсли Выб="Текст" Тогда

Таб.ВывестиСекцию("Строка_3");

КонецЕсли;

КонецЦикла;

Таб.ВывестиСекцию("Подвал");

Таб.ТолькоПросмотр(1);

Таб.Показать("Приказ №","");

КонецПроцедуры

Естественно отчеты могут быть еще сложнее, включать секции не только по строкам, но и по столбцам, секции могут быть вложенными.

7.3 Запросы

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

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

Кроме того, механизм запросов позволяет легко получать информацию в различных временных разрезах.

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

Пример:

Запрос = СоздатьОбъект("Запрос");

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

Запросы можно использовать не только для построения отчетов, но и для реализации других процедур конфигурации, требующих получения из БД некой сводной информации. Например, реализация алгоритма списания стоимости товара по методам FIFO или LIFO.

  • при помощи функции СоздатьОбъект() создается объект типа Запрос и ссылка на него присваивается какой–либо переменной. Далее обращение к запросу производится посредством этой ссылки.

  • после создания переменной типа Запрос следует обращение к методу Выполнить(), которому в качестве параметра передается текст запроса, написанный на специальном языке запросов. Метод Выполнить() анализирует текст запроса, выполняет в соответствии с ним выборку данных и формирует временный выходной набор данных (выборку).

  • после этого организуется циклическая обработка сформированного временного набора данных (выборки) с целью получения требуемого отчета.

Текст описания запроса на языке запросов состоит из последовательности операторов. Концом оператора является символ ";". Операторы могут записываться в любом порядке, однако, следует помнить, что интерпретатор языка запросов однопроходный, следовательно, сначала следует описать переменную, и только потом ее использовать в операторах Группировка, Функция или Условие.

Структура запроса:

ТекстЗапроса ="

| [<установка интервала (периода) запроса>;]

| [<определение внутренних переменных>;]

| [<группировки>;]

| [<назначение функций>;]

| [<определение условия>;]

|";

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

Без

Год

Групп

Группировка

День

Документ

И

Или

Квартал

Когда

Месяц

Неделя

НомерСтроки

Обрабатывать

ОбрабатыватьДокументы

ОбрабатыватьОперации

Период

ПериодЖурнала

По

С

СтрокаДокумента

Упорядочить

Условие

Функция

Комментарий в тексте описания запроса начинается парой символов //и заканчивается концом строки.

Установка интервала (периода) запроса

Оператор Период С устанавливает интервал дат формирования запроса.

[[Период] С <ДатаИлиВнешняяПерем> [ПО <ДатаИлиВнешПеременная>];]

Параметры:

<ДатаИлиВнешПеременная> – константа типа Дата, Документ или позиция документа или внешняя переменная того же типа. Если указан документ, то за момент времени принимается дата и время документа.

Если в описании запроса оператор Период С опущен, то интервал дат формирования запроса устанавливается в точку актуальности итогов (ТА), запрос формируется только на этот момент времени.

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

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

Пример:

|Период С ДатаНач По ДатаКон; // ДатаНач и ДатаКон внешние переменные

или

|Период С ДатаНач;

или

|Период С '02.10.05' По '29.10.05';

Определение внутренних переменных

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

Синтаксис:

<ИмяПеременной> = <ОписаниеПеременной> ;

Параметры:

<ИмяПеременной> – имя объявляемой внутренней переменной описания запроса.

<ОписаниеПеременной> – указывает на доступный в языке запросов атрибут документа, справочника, регистра или журнала расчетов.

Внутренние переменные используются в тексте запроса для образования ссылок на объекты конфигурации, чтобы использовать их при построении таких операторов запроса, как Группировка, Функция, Условие.

Пример:

|ФИО = Справочник.Сотрудники.Наименование;

|ДатаПриема = Справочник.Сотрудники.ДатаПриема;

|ДатаУвольнения = Справочник.Сотрудники.ДатаУвольнения;

Группировки

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

Группировка <ИмяГруппировки> [Упорядочить по <Порядок>[, <Порядок>…]]

[Без Упорядочивания][Без Групп][Все [ВошедшиеВЗапрос]];

Параметры:

<ИмяГруппировки> – имя объявленной ранее внутренней переменной, по значению которой устанавливается порядок выборки. По этому имени можно в дальнейшем обращаться к значению группировки из вызывающего программного модуля как к атрибуту запроса.

Упорядочить по – необязательное добавочное ключевое слово. Параметры, следующие за данным ключевым словом, определяют упорядочивание строк в группировке. По умолчанию документы упорядочиваются по дате и времени документов, справочники – по коду или наименованию, в зависимости от основного представления, заданного при описании справочника в конфигураторе.

<Порядок> – используется только после ключевого слова Упорядочить по. Конкретизация внутренней переменной <ИмяГруппировки>, значение которой является параметром упорядочивания строк в группировке. Кроме того, в данном параметре можно использовать имя функции, объявленной в этом же запросе в операторе Функция.

Без Упорядочивания – необязательное добавочное ключевое слово, которое преследует цель уменьшения времени формирования запроса, при условии, что ни упорядочивание, ни значения упорядочивания при использовании данного запроса не нужны.

Без Групп – необязательное добавочное ключевое слово, использование которого назначает вывод в запрос только простых элементов справочников (исключая группы). Используется только для группировок, построенных на основе внутренней переменной типа Справочник.

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

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

Пример: этот запрос выберет из справочника Сотрудники список используемых должностей и отсортирует этот список по алфавиту.

Запрос = СоздатьОбъект("Запрос");

ТекстЗапроса = "

|Долж = Справочник.Сотрудники.Должность;

|Группировка Долж упорядочить по Долж.Наименование;

|";

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

Пример: следующий запрос группирует всех сотрудников по должностям. Заметьте, что сначала идет группировка по должности, а затем (внутри нее) по сотруднику, это очень важно. Обратите внимание на переменную запроса Сотр. Она ссылается на строку справочника Сотрудники. Чтобы вывести ФИО сотрудника используется обращение к атрибуту объекта: Сотр.Наименование.

Запрос = СоздатьОбъект("Запрос");

ТекстЗапроса = "

|Сотр = Справочник.Сотрудники.ТекущийЭлемент;

|Долж = Справочник.Сотрудники.Должность;

|Группировка Долж упорядочить по Долж.Наименование;

|Группировка Сотр упорядочить по Сотр.Наименование;

|";

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

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

Функции

Оператор Функция предназначен для вычисления и накопления некоторых численных значений в процессе формирования выборки по запросу.

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

Оператор Функция вычисляет функцию <ТипФункции> и присваивает ее значение внутренней переменной <ИмяФункции>.

Функция <ИмяФункции> = <ТипФункции>(<Параметр>) [Когда (<Условие>)];

Параметры:

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

<TипФyнкции> – ключевое слово одной из встроенных функций языка. Может быть одним из приведенных ниже:

Сумма – вычисляет сумму выбранных по запросу значений параметра.

Среднее – вычисляет среднее из выбранных по запросу значений параметра.

Минимум – вычисляет минимум из выбранных по запросу значений параметра.

Максимум – вычисляет максимум из выбранных по запросу значений параметра.

Счётчик – подсчитывает количество записей, вошедших в выборку.

НачОст – вычисляет начальный остаток для выбранных по запросу значений параметра.

КонОст – вычисляет конечный остаток для выбранных по запросу значений параметра.

Приход – вычисляет приход для выбранных но запросу значений параметра.

Расход – вычисляет расход для выбранных по запросу значений параметра.

СНД – вычисляет сальдо начальное дебетовое для выбранных по запросу значений параметра.

СКД – вычисляет сальдо конечное дебетовое для выбранных по запросу значений параметра.

СНК – вычисляет сальдо начальное кредитовое для выбранных по запросу значений параметра.

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

ДО – вычисляет дебетовые обороты для выбранных по запросу значений параметра.

КО – вычисляет кредитовые обороты для выбранных по запросу значений параметра.

КорДО – вычисляет дебетовые обороты между корреспондирующим счетам или субконто для выбранных по запросу значений параметра.

КорКО – вычисляет кредитовые обороты между корреспондирующим счетам или субконто для выбранных по запросу значений параметра.

<Параметр> – имя объявленной ранее внутренней переменной, значение которой используется как параметр встроенной функции <ТипФункции>. В функциях: Сумма, Среднее, Максимум, Минимум в качестве данного параметра возможно использование арифметического выражения в терминах встроенного языка 1С:Предприятие.

Когда – необязательное добавочное ключевое слово, использование которого в команде означает, что вычисление функции следует производить только при условии, когда заданное логическое выражение <Условие> истинно.

<Условие> – логическое выражение встроенного языка 1С:Предприятие. В логическом выражении могут участвовать как внутренние, так и внешние переменные запроса. Используется только после ключевого слова Когда.

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

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

В тексте запроса, при описании оператора Функция можно использовать необязательное ключевое слово Когда, использование которого в операторе означает, что вычисление функции следует производить только при условии, что значение логического выражения, заданного в параметре ключевого слова является ИСТИНА.

В функциях: Сумма, Среднее, Максимум, Минимум в качестве аргумента возможно использование арифметического выражения в терминах встроенного языка:

|КолВо = Документ.ВидДокумента.Количество;

|Цена = Документ.ВидДокумента.Цена;

|Функция Сум = Сумма(КолВо * Цена);

|Функция Макс = Максимум(Окр(КолВо) * Окр(Цена));

|Функция Средн = Среднее(ФункцияОпределеннаяВМодуле(КолВо, Цена));

Loading

Календарь

«  Апрель 2024  »
ПнВтСрЧтПтСбВс
1234567
891011121314
15161718192021
22232425262728
2930

Архив записей

Друзья сайта

  • Заказать курсовую работу!
  • Выполнение любых чертежей
  • Новый фриланс 24