Описание встроенного языка системы 1С Предприятие

         

Функции, применяемые в выражениях




Функция

Параметр(ы)

Возвращаемое значение

DATE()

Тип даты. Системная дата.

DAY(Date)

Тип даты.

Число. Номер дня в месяце.

DTOC(Date)

Тип даты.

Строка. Представление даты в формате ММ/ДД/ГГ

DTOS(Date)

Тип даты.

Строка. Представление даты в формате ГГГГММДД

IIF(Log, IfTrue, IfFalse)

Log — выраже­ние булева ти­па.

IfTrue, IfFalse — тип определяется во время исполне­ния. Должны иметь одинако­вую длину и тип.

Тип совпадает с типом IfTrue и IfFalse.

Возвращает IfTrue, если значе­ние вычисленного выражения Log равно истине, и IfFalse в про­тивном случае.

LTRIM(String)

String — строка.

Строка. Исходная строка без ве­дущих пробелов.

Month(Date)

Date — дата.

Число. Номер месяца в году.

STOD(String)

String — строка. Пред­ставление даты в формате ГГГГММДД

Тип даты. Преобразованное в дату значение исходной строки.

STR(Number, Length, Decim)

Number — чис­ло. Преобра­зуемое число.

Length — число. Количество символов в воз­вращаемой строке, включая дес. точку.

Decim — число. Желаемое кол-во знаков после точки.

Строка. Результат преобразования числа в строковое представление.

SUBSTR(String, StartPos, Num)

String — строка. Исход­ная строка.

StartPos — число. Началь­ная позиция.

Num — число. Кол-во симво­лов.

Строка. Подстрока, состоящая из Num символов от начальной пози­ции исходной строки.

TIME()

Строка. Системное время в пред­ставлении ЧЧ:ММ:СС

TRIM(String)

String — строка.

Строка. Исходная строка без за­ключительных пробелов.

UPPER(String)

String — строка.

Строка. Преобразование к верхне­му регистру

VAL(String)

String — строка.

Число. Преобразование строки в число

YEAR(Date)

Date — дата.

Число. Год.




Функция


Секция описания функции.

Синтаксис:

Функция <Имя_функции>([[Знач] <Парам1>[=<ДефЗнач>], ...

, [Знач] <ПарамN> [=<ДефЗнач>]])[Экспорт]

//Объявления локальных переменных;

// Операторы;

...

Возврат <ВозвращаемоеЗначение>;

// Операторы;

...

КонецФункции

Англоязычный Синтаксис:

Function <Имя_функции> ([[Val] <Парам1>[=<ДефЗнач>], ...

, [Val] <ПapaмN> [=<ДефЗнач>]])[Export]

//Объявления локальных переменных;

// Операторы;

...

Return <ВозвращаемоеЗначение>;

// Операторы;

...

EndFunction

Параметры:

<Имя_функции>

Назначает имя функции.

Знач

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

<Парам1>, ..., <ПарамN>

Необязательный список формальных параметров, разделяемых запятыми. Значения формальных пара­метров должны соответсвовать значениям передавае­мых при вызове функции фактических параметров. В этом списке определяются имена каждого из пара­метров так, как они используются в тексте функции. Список формальных параметров может быть пуст. См. также: «Передача параметров».

=<ДефЗнач>

Необязательная установка значения параметра по умолчанию. Параметры с установленными значения­ми по умолчанию можно располагать в любом месте списка формальных параметров.

Если параметр при вызове процедуры опущен, то он принимает либо установленное по умолчанию значение (если оно есть) либо принимает «пустое» значение (значение неопределенного типа).

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

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

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

Экспорт

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

//Объявления локальных переменных

Объявляются локальные переменные, на которые можно ссылаться только в рамках этой функции (см. оператор Перем).

//Операторы

Исполняемые операторы функции.

Возврат

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

<ВозвращаемоеЗначение>

Выражение, значение которого содержит результат обращения к функции.

КонецФункции

Обязательное ключевое слово, обозначающее конец исходного текста функции.




Описание:

Ключевое слово Функция начинает секцию исходного текста функции, вы­полнение которой можно инициировать из любой точки программного модуля, просто указав Имя_функции со списком параметров (если параметры не пере­даются, то круглые скобки, тем не менее, обязательны). Если в глобальном про­граммном модуле в теле описания функции использовано ключевое слово Экспорт, то это означает, что данная функция является доступной из всех дру­гих программных модулей конфигурации. Ключевое слово Экспорт имеет смысл использовать только в глобальном программном модуле.

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

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

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

Замечание: ключевые слова Функция, КонецФункции являются не операто­рами, а операторными скобками, поэтому не должны заканчиваться точ­кой с запятой (это может приводить к ошибкам выполнения модуля).

См. также: «Передача параметров»

Пример:

Перем Глоб;

// Описание функции

Функция МояФункция(Парам1, Парам2, ПарамЗ) Экспорт

Лок = Глоб + Парам1 + Парам2 + ПарамЗ;

Возврат Лок;

КонецФункции

Глоб = 123;

Рез = МояФункция(5, 6, 7);      // Вызов функции



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

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

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

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

|Функция ПрихКол = Приход(Количество);

|Функция РасхКол = Расход(Количество);

имеют четкий смысл — приращения, сделанные документом при движении регистра. С другой стороны, в той же группировке следующие функции:

|Функция НачКол = НачОст(Количество);



|Функция КонКол = КонОст(Количество);

явно не имеют смысла ( в запросах по регистрам, обычно задают период за­проса при помощи оператора ПериодC. Функция НачКол в данном примере должна по смыслу показывать остаток ресурса "Количество" на начальную дату запроса. Внутри группировки по документу вопрос: «Какой начальный остаток ресурса на дату 10.01.97?» по документу, проведенному, например, 13.01.97, не имеет смысла). Поэтому в таких ситуациях функция будет иметь нулевое значение.

Пример:

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

Текст3апроса=

'//{{ЗАПРОС(Функции)

|Период с ДатаОтчета;

|Товар = Регистр.КвотыТоваров.Товар;

|Отдел = Регистр.КвотыТоваров.Отдел;

|Сотрудник = Регистр.КвотыТоваров.Сотрудник;

|Партнер = Регистр.КвотыТоваров.Партнер;

|Док = Регистр.КвотыТоваров.ТекущийДокумент;

|Количество = Регистр.КвотыТоваров.КвотаТовара;

|Группировка Товар;

|Группировка Отдел;

|Группировка Сотрудник;

|Группировка Партнер;

|Группировка Док;

|Функция НачКол = НачОст(Количество);

|Функция ПрихКол = Приход(Количество);

|Функция РасхКол = Расход(Количество);

|Функция КонКол = КонОст(Количество);

|// Следующие Функции вычисляем только при определенных

|// условиях, чтобы получить отфильтрованные итоги

|Функция ПрихКолТов = Приход(Количество) Когда (Док.ФлагТовара = 1);

|Функция РасхКолТов = Расход(Количество) Когда (Док.ФлагТовара = 1);

|Функция ПрихКолОтд = Приход(Количество) Когда (Док.ФлагОтдела = 1);

|Функция РасхКолОтд = Расход(Количество) Когда (Док.ФлагОтдела = 1);

|Функция ПрихКолСотр = Приход(Количество) Когда (Док.ФлагСотрудника = 1);

|Функция РасхКолСотр = Расход(Количество) Когда (Док.ФлагСотрудника = 1);

|"//}}ЗАПРОС

;

// Если ошибка в запросе, то выход из процедуры

Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда

   Возврат;

КонецЕсли;


Функция


Вычисляет функцию и включает ее результат в запрос.

Синтаксис:

Функция <ИмяФункции> = <ТипФункции> (<Параметр>|<УточненныйПараметр>)

                 [Когда (<Условие>)];

Англоязычный синоним:

Function <ИмяФункции>= <ТипФункции> (<Параметр>|<УточненныйПараметр>)

                 [When (<Условие>)];

Параметры:

<ИмяФункции>

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

<TипФyнкции>

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

<Параметр>

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

<УточненныйПараметр>

Конкретизация объявленной ранее внутренней переменной, значение которой используется как аргумент встроенной функции < ТипФункции>.

Когда

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

<Условие>

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

Описание:

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

Типы применяемых функций предопределены и могут быть следующими:

Тип

Функции

Англояз. Синоним

Выполняемое действие

Сумма

Sum

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

Среднее

Avg

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

Минимум

Min

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

Максимум

Мах

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

Счётчик

Count

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

НачОст

BegRest

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

КонОст

EndRest

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

Приход

Debit

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

Расход

Credit

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

СНД

IDB

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

СКД

FDB

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

СНК

ICD

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

СКК

FCD

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

ДО

TD

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

КО

TC

Вычисляет кредитовые обороты для выбран­ных по запросу значений параметра.3

КорДО

CorTD

Вычисляет дебетовые обороты между коррес­пондирующим счетам или субконто для вы­бранных по запросу значений параметра.3, 4

КорКО

CorTC

Вычисляет кредитовые обороты между кор­респондирующим счетам или субконто для выбранных по запросу значений параметра.3, 4




1Замечание: Для ресурсов оборотных регистров допускается вызывать только тип функции "Сумма".

2Замечание: Типы функций НачОст, КонОст, Приход, Расход можно ис­пользовать только с параметрами, указывающими на ресурсы регистров остатков. Для ресурсов регистров остатков другие типы функций вызы­вать нельзя.

3Замечание: Функции СНД, СНК, СКД, СКК, ДО, КО, КорДО, КорКО можно использовать только с реквизитами проводки: Сумма, Количество или ВалСумма.

4Замечание: Функции КорДО и КорКО накапливают значения только тогда когда в запросе есть обращение к реквизитам проводок Счет, КорСчет Субконто или КорСубконто.

Замечание: В программном модуле, где используется запрос, <ИмяФункции> будет являться атрибутом запроса. При помощи данного атрибута можно обращаться к значению вычисленной в запросе функции.

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

Пример:

...

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

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

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

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

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

...

Пример:

// Создание объекта типа Запрос

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

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

"//{{ЗАПРОС(Функции)

|Период с ДатаНач по ДатаКон;

|Оклад = Справочник.Сотрудники.Оклад;

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

|Ктг = Справочник.Сотрудники.Категория;

|Группировка Подр без групп;

|Группировка Ктг без групп;

|Функция Всего = Сумма(Оклад);

|Условие((Ктг.Выбран() = 1) И (Подр.Выбран() = 1));

|"//}}ЗАПРОС

;

Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда

   Возврат;

КонецЕсли;

// ...

Итог = Запрос.Всего;

// ...

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

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


Объявление переменных


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

Переменные могут объединяться в массивы. В данной реализации програм­мы предусмотрены только одномерные массивы.



Системные константы


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



Системные процедуры и функции


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

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



Системные предопределенные процедуры


Системные предопределенные процедуры предназначены для того, чтобы дать возможность программно обрабатывать системные события, возникающие при интерактивных действиях пользователя, таких как ввод нового, изменение, удаление. Исключение составляют только предопределенные процедуры Моду­ля документа: ОбработкаПроведения, ОбработкаУдаленияПроведения, АрхивироватьДокумент, которые вызываются как при интерактивном, так и при программном возникновении события.

ВНИМАНИЕ! Системные предопределенные процедуры не являются встроен­ными процедурами языка. Для них зарезервированы только название и синтаксис. Тело процедур должно быть написано самим разработчиком конфигурации в соответствующих программных модулях.

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

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



Работа с Константами


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

Константы могут быть периодическими или нет (это задается в конфигура­торе при их создании). Периодические константы — это константы, значения которых связаны с датой. При изменении значения периодической константы старое значение сохраняется, просто новое значение действует с указанной да­ты, а старое до указанной даты.

Пример:

* Изначально значение периодической константы Константа.ИмяДиректора было — "Иванов И. И.". В некоторый мо­мент директор сменился.

Константа.ИмяДиректора.Установить('01.05.96', "Петров П.П.");

* Данный оператор устанавливает новое значение периодической константы с даты '01.05.96', но старое значение — "Иванов И. И." сохраняется до этой даты и может быть получено, например, следующей строкой текста программы:

ПрежнДирект = Константа.ИмяДиректора.Получить('01.01.96');

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

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

В качестве имени константы обязательно должно выступать полное имя конкретной константы, как оно объявлено в конфигураторе. Имя константы записывается через точку после ключевого слова Константа, т. е. полное имя константы записывается следующим образом:

Константа.<Имя_константы>,

где <Имя_константы> — название конкретной константы, как оно объявлено в окне «Метеданные» конфигуратора.

Англоязычный синоним ключевого слова Константа — Const.

Пример:

* Пример работы с непериодическими константами:

Константа.Организация = "АО СПЕЦСТРОЙКОНСЕРВБАНК";

Константа.Адрес = "г.Москва, Вернадского, 523, 25";

Р_Счет = Константа.НашСчет;

// операторы

Если Всего > Константа.МинимальнаяЗарплата Тогда

   // операторы

Иначе

   // операторы

КонецЕсли;



Работа со Справочниками


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

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

Название и структура каждого конкретного справочника определяется при его создании в конфигураторе. У любого справочника существует два обяза­тельных реквизита, которые создаются автоматически — "Код" и "Наименование". Другие реквизиты справочника, которые могут содержать различную дополнительную информацию помимо наименования, определяются в конфигураторе конкретно для каждого создаваемого справочника.

Реквизиты справочников могут быть периодическими или нет (это задается в конфигураторе при создании реквизита). Периодические реквизиты — это реквизиты, значения которых связаны с датой. При изменении значения пе­риодического реквизита старое значение сохраняется, при этом новое значение действует с указанной даты, а старое — до указанной даты. Работа с периодиче­скими реквизитами осуществляется при помощи методов Получить и ИспользоватьДату, а также при помощи специального агрегатного типа дан­ных — Периодический.

Система 1С:Предприятие дает возможность создавать и использовать мно­гоуровневые справочники. Количество уровней вложенности конкретного спра­вочника устанавливается в конфигураторе. Кроме того, справочникам можно указывать их подчиненность другим справочникам, образовывая таким образом связи типа «один ко многим».



Работа с Перечислениями


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

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



Работа с Документами


Документ — одно из основных понятий системы 1С:Предприятие. При по­мощи документов организуется ввод в систему информации о совершаемых хозяйственных операциях, а также ее просмотр и, если необходимо, корректи­ровка.

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

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

В документах выделяются две основные структурные части: шапка доку­мента и многострочная табличная часть, поэтому реквизиты документа можно подразделить на «Реквизиты шапки» и «Реквизиты табличной части».

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

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

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

Например, в уже упоминавшемся больничном листе табличная часть — это набор данных за прошлые расчетные периоды, предназначенные для расчета средней заработной платы.



Работа с Регистрами оперативного учета


Регистры — это специфический инструмент системы 1С:Предприятие, сред­ство накопления сводной информации. Регистры являются внутренним инст­рументом конфигурации, к которым нет непосредственного доступа через ин­терфейс пользователя. Информация о результатах хозяйственных операций, которая появляется при оформлении документов, накапливается в регистрах при «проведении» документов, а отображение информации, содержащейся в регистрах, осуществляется при помощи формирования отчетов. Информация из регистров используется для анализа хозяйственной деятельности за прошедший период.

При создании регистра определяется, как будет обрабатываться, группиро­ваться и сохраняться сводная информация. Регистры могут быть двух видов: оборотные регистры и регистры остатков.

Регистр остатков — это объект, предназначенный для ведения остатков «ре­сурсов» на момент времени с привязкой к некоторому набору «измерений».

Оборотный регистр — это объект, предназначенный для подсчета оборота «ресурсов» за заданный интервал времени с привязкой к некоторому набору «измерений».

Ресурсами регистра могут являться любые категории учета, которые могут быть представлены в числовом виде, такие как: «количество товара», «долг клиента», «сумма наличных» и т. п. Измерения регистра — это оси координат, на пересечении которых регистр хранит конкретные значения ресурсов. Кроме того, при записи движения регистра можно задавать «реквизиты» регистра. Значения реквизитов регистра просто сопровождают запись о движении реги­стра (подобно комментарию) для возможности в дальнейшем производить фильтрацию движений при выборке.

Пример:

* Предположим, что в конфигураторе создан регистр остатков «Товарные_Запасы», который должен содержать сведения об остатке каждого то­вара на каждом складе, за каждым материально ответственным лицом. В дальнейшем предполагается получать информацию такого типа: «остаток конкретного товара на конкретном складе», «остаток конкретного товара всего» и т. п. В идеологии системы 1С:Предприятие такой регистр пред­ставляет собой прямоугольную систему координат, измерениями этого ре­гистра являются: «Товар», «Склад», «МОЛ». Регистр имеет один ресурс — «Количество». Содержание данного регистра можно представить в виде следующей таблицы, где по каждому конкретному товару на конкретном складе за конкретным МОЛ числится определенное Количество.

Товар

Склад

МОЛ

Количество

Стол

Первый

Иванов

10

Стол

Первый

Петров

20

Стол

Второй

Иванов

5

Шкаф

Первый

Петров

7

Шкаф

Второй

Иванов

2

Шкаф

Второй

Петров

8

Шкаф

Третий

Петров

10




Структура каждого конкретного вида регистра определяется при его созда­нии в конфигураторе. Измерения, ресурсы и реквизиты регистров определяют­ся в конфигураторе конкретно для каждого создаваемого вида регистра.
В отличие от документов и справочников, которые представлены конкрет­ными объектами в информационной базе, регистр является механизмом для работы с итогами. Вследствие этого атрибуты регистра не являются свойствами некоторого объекта, а используются лишь как служебные переменные для ма­нипуляции измерениями, ресурсами и реквизитами регистра при помощи соот­ветствующих методов. Для каждого метода определяется, каким образом он использует атрибуты регистров. Следует обратить внимание, что ресурсы реги­стров принимают различное смысловое значение в зависимости от конкретной операции, выполняемой с регистром. Например, при записи движения регистра при помощи методов: ДвижениеПриходВыполнить, Движение РасходВыполнить и т. п. в ресурс регистра следует записывать при­ращение, которое будет изменять содержимое регистра, а при считывании ито­гов регистра (Остатки, ОстаткиПолучить и т. п.) ресурсы регистра содержат остаток (итоговые значения) содержимого регистров.
Под термином «остаток» ресурса для регистра остатков следует понимать числовое значение, которое имеет ресурс на какой-то момент времени. Именно здесь и проявляется понятие Точки Актуальности (далее ТА). ТА — это тот момент времени (дата+время), на который все необоротные регистры содержат текущие значения своих ресурсов. Другими словами, если просто запросить у регистра остатков значение какого-либо ресурса, то он выдаст его именно на момент ТА. Если необходимо узнать значение ресурса на какой-либо прошед­ший момент времени, то надо либо сдвинуть в прошлое ТА (для этого исполь­зуется интерактивная операция «Управления итогами»), либо при помощи средств встроенного языка следует запустить «временный расчет» регистра. При «временном расчете» регистра остатков можно задать момент времени, на который необходимо получить значение ресурса. В этом случае значение ресур­са рассчитывается, что требует несколько большего времени процессора, чем если получать ресурс на ТА. Однако, «временный расчет» рассчитывается не с начала всех времен, а от начала месяца. Регистры остатков хранят промежуточ­ные значения ресурсов на начало каждого месяца (именно с этим связана про­цедура «переход на новый период»). Таким образом, если при «временном рас­чете» указать момент времени в начале месяца, то, в общем случае, расчет будет выполнен быстрее, чем если указать конец месяца.


Кроме хранения остатка или оборота ресурсов, регистры хранят все «приращения» (приход со знаком «+», расход со знаком «-»), произведенные доку­ментами (это обозначается термином «движения регистра»). Причем, эти «при-оащения» регистров хранятся со ссылками на те документы, которые их вы­звали. Поэтому, во встроенном языке системы 1С:Предприятие есть методы, чтобы получить из регистра все его движения (с привязкой к документам), указав интервал времени, за который они нужны.
Документы, как объекты прикладной задачи, тесно связаны с регистрами. Именно документы, и только они могут изменять значения ресурсов в регист­рах (этот алгоритм прописывается в предопределенной процедуре ОбработкаПроведения для каждого вида документа). Никаким другим способом, кроме как через проведение документов на содержимое регистров повлиять нельзя. Например, нельзя создать отчет, который бы изменял значения, хранящиеся в регистрах. Движения (приращения) регистров выполняются в момент «прове­дения» документа. С другой стороны, документы не порождают в регистрах необратимых действий. Что это значит? Если ранее проведенный документ удалить или сделать его непроведенным, то удалятся и все движения регистров, порожденные им. Если отредактировать (изменить) ранее проведенный доку­мент, то после перепроведения документа все движения регистров, порожден­ные ранее, удалятся и заменятся новыми.
Замечание: Формирование движений документов по регистрам доступно только в Модуле документа в системной предопределенной процедуре ОбработкаПроведения.

работа с бухгалтерскими счетами


Счета — это агрегатный тип данных для доступа к объектам данных — бух­галтерским счетам. Бухгалтерские счета используются компонентой «Бухгал­терский учет» системы 1С:Предприятие для идентификации разрезов синтети­ческого учета наличия и движения средств. В общем виде смысл типа данных «Счет» вполне соответвует общепринятому понятию «Счет» в бухгалтерском учете. Подробно об основных свойствах типа данных «Счет» можно ознако­миться в руководстве по конфигурированию системы 1С:Предприятие.

В конфигурации системы может быть создано несколько планов счетов. План счетов является фактически видом для значения типа «Счет». Например, реквизит диалога типа «Счет» может иметь конкретный вид (относиться к кон­кретному плану счетов) или быть неопределенного вида — то есть принимать значение различных планов счетов.

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

Список счетов (план счетов) может быть многоуровневым. При этом каж­дый объект типа «Счет» вне зависимости от реального наличия подчиненных счетов всегда является либо конкретным счетом, либо группой. Это свойство конкретного счета задается при его создании и не изменяется в дальнейшем. При этом счета-группы не могут участвовать в проводках.

Заметим, что бухгалтерские счета внесенные в конфигураторе в метаданные не могут изменять свои основные реквизиты (код, наименование, настройки аналитического, валютного и количественного учета).



Работа с операциями и проводками


Для отражения в бухгалтерском учете информации о движении средств в системе 1С:Предприятие используются Операции и Проводки. Эти объекты поддерживаются компонентой «Бухгалтерский учет». Настройка свойств опе­раций и проводок производится соответвующими объектами метаданных в конфигурации. В руководстве по конфигурированию можно подробно ознако­миться с основными принципами и свойствами операций и проводок.



Работа с бухгалтерскими итогами


При наличии в системе 1С:Предприятие компоненты «Бухгалтерский учет» система автоматически реализует специальный механизм работы с бухгалтер­скими итогами. Данный механизм обеспечивает хранение, динамический пере­счет бухгалтерских итогов и их извлечение средствами встроенного языка.

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

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

Объект встроенного языка «БухгалтерскиеИтоги» предназначен для органи­зации доступа к итогам в различных разрезах, за различные периоды и с разной степенью детализации.



Работа с Корректными проводками


Для работы с корректными проводками в системе используется специаль­ный тип данных «КорректныеПроводки».



Работа с Журналами расчетов


Журнал расчетов — это средство для просмотра и редактирования резуль­татов расчета. Каждая строка журнала отражает единичное событие расчета для того или иного объекта. Такие события называются «расчетами» и характери­зуются следующими данными:

объект, для которого произведен расчет;

вид (т. е. способ) расчета;

документ, на основании которого введен этот расчет;

результат расчета;

время действия (т. е. расчет имеет дату начала и дату окончания). период регистрации, во время которого расчет введен в журнал (это по­нятие не совпадает с понятием времени действия, так как время дейст­вия акта расчета и период регистрации, во время которого он введен в систему, могут не совпадать)

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

Расчетный период. Журнал расчетов имеет определенную периодичность, т. е. все расчеты в нем выполняются в пределах определенного временного ин­тервала. Каждая запись журнала расчетов, соответствующая одному акту расче­та, также имеет временное протяжение (т. е. имеет дату начала и дату оконча­ния).

Важно! Временной интервал каждой отдельной записи журнала не может ле­жать в разных расчетных периодах журнала.

Записи, лежащие в текущем расчетном периоде, могут, тем не менее, иметь период действия, не принадлежащий текущему расчетному периоду. Это зна­чит, что даты начала и окончания конкретной записи могут «выпадать» из те­кущего периода расчета и относиться к одному из прошлых или будущих пе­риодов. Самым очевидным примером здесь может служить перерасчет зарплаты сотрудника за прошлый период или начисления будущего периода.

Примеры. Журнал расчета заработной платы сотрудников предприятия (каждый сотрудник — объект расчета), при этом выполняется расчет тех или иных начислений и удержаний (виды расчета), имеющих определенную про­должительность и результат. Другой пример — журнал расчета амортизации основных средств, где справочником объектов расчета является справочник основных средств предприятия, а видами расчета —алгоритм расчета амортиза­ции, списания, переоценки и т. д. Третий пример — журнал расчета дивидендов для акционеров АО, где объекты расчета — список акционеров предприятия, а виды расчета — способы начислений дивидендов на акции разных типов.



Работа с Правилами перерасчета


«Правила перерасчета» являются вспомогательными объектами метаданных компоненты «Расчет». Они предназначены для автоматического отслеживания актуальности результатов проведенных расчетов при вводе новых записей жур­нала расчетов.

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

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

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

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

Итак, если в журнале расчетов появится новая (в результате проведения документа), исчезнет (при отмене проведения) или будет исправлена сущест­вующая запись с одним из «ведущих» видов расчета (в нашем примере оклад, тариф, сдельная оплата), то будет снят признак «Рассчитана» со всех записей, соответствующих доплатам, если найдутся таковые с тем же периодом дейст­вия, что и введенная, удаленная или исправленная запись.

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

Правило перерасчета может быть двух типов: перерасчет «по текущему пе­риоду» или «по будущим периодам».

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



Работа с Календарями и Праздниками


Объект Календарь в системе 1С:Предприятие предназначен для вычисления временных интервалов на основании произвольных временных графиков. Этот объект может использоваться, например, для учета графика работы предпри­ятия, графика работы внешних организаций, графика учета рабочего времени тех или иных работников предприятия и пр.

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

В глобальном контексте программы 1С:Предприятие есть атрибут "Календари". Этот объект в качестве своих атрибутов имеет значения объек­тов конкретных видов календарей, заданных в конфигурации. Кроме того, этот объект имеет метод ПолучитьАтрибут, который позволяет получить доступ к объекту календаря конкретного вида по его имени. Т.е. допустимы следующие синтаксические конструкции:

Календари.Служащие.Дней(ТекДата, ТекДата + 5);

Календари.ПолучитьАтрибут("Служащие").Дней(ТекДата, ТекДата + 5);

Праздники в системе 1С:Предприятие представляет собой объект похожий на календарь, но он заполняется выборочно (не все даты подряд) и в нем могут вводиться и удаляться строки для определенных дат. Данный объект исполь­зуются как набор исключений при заполнении календарей (см. метод календа­ря УчитыватьПраздники).



Работа с последовательностями документов


«Последовательности документов» являются вспомогательными объектами метаданных для компонент «Оперативный учет» и «Бухгалтерский учет». Они предназначены для обеспечения проведения определенных документов в не­прерывной хронологической последовательности.

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

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

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



Работа с объектом Периодический


Для работы с периодическими реквизитами справочников и периодически­ми константами в системе используется специальный агрегатный тип данных — «Периодический». Объекты данного типа предназначены для возможности за­писи, редактирования и удаления значений периодических реквизитов спра­вочников и периодических констант непосредственно из программного модуля, без необходимости прибегать к интерактивным операциям.



Работа со Списком Значений


При формировании пользовательского интерфейса прикладной задачи до­вольно часто возникают ситуации, когда для удобства работы пользователя необходимо дать ему возможность выбирать какое-либо значение из заранее подготовленного списка. Возможности работы со справочниками, журналами и перечислениями предоставляют достаточно мощные средства выбора этих объ­ектов. Однако, существует также необходимость в выборе значений из списков, сформированных и отсортированных нестандарнным образом, которые невоз­можно или неудобно получать непосредственно при работе со стандартными визуальными представлениями журналов, справочников или перечислений. Для этого в системе 1С:Предприятие используется специальный агрегатный тип данных — «СписокЗначений» и специальные элементы форм диалога: «Список» и «Поле со списком».

Объект типа «СписокЗначений» — это средство языка (не сохраняемый в БД объект), которое позволяет строить «динамические массивы» и манипули­ровать ими (добавлять, редактировать, удалять элементы, сортировать). Список значений может быть наполнен значениями любого типа, т. е. в одном списке типы хранимых значений могут быть разными. Одним из примеров использо­вания данного объекта может служить организация выбора конкретного доку­мента из списка возможных документов, сформированного по сложному алго­ритму.



Работа с Таблицей Значений


Объект типа «ТаблицаЗначений» ~ это средство языка (не сохраняемый в информационной базе объект), которое позволяет строить «динамические мас­сивы» и манипулировать ими (добавлять, редактировать, удалять элементы, сортировать). Таблица значений может быть наполнена значениями любого типа, т. е. в одной таблице типы хранимых значений могут быть разными. Таб­лица значений может использоваться и как простой двумерный массив (матри­ца) значений и как таблица строк определенной структуры, когда колонки ти­пизованы и имеют идентификаторы.

Специальный элемент формы диалога «ТаблицаЗначений» является ин­терфейсным средством отображения и манипулирования этим объектом в фор­мах диалогов. При формировании пользовательского интерфейса прикладной задачи довольно часто возникают ситуации, когда для удобства работы пользо­вателя необходимо дать ему возможность выбирать какое-либо значение из заранее подготовленной таблицы значений. Возможности работы со справоч­никами, журналами и перечислениями предоставляют достаточно мощные средства выбора этих объектов. Однако, существует также необходимость в выборе значений из таблиц, сформированных и отсортированных нестандарт­ным образом, которые невозможно или неудобно получать непосредственно при работе со стандартными визуальными представлениями журналов, спра­вочников или перечислений.

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

При работе с таблицей значений следует различать два понятия текущей строки таблицы. Во-первых, существует текущая строка объекта «ТаблицаЗна­чений», которая устанавливается при помощи методов ПолучитьСтрокуПоНомеру, ВыбратьСтроки, ПолучитьСтроку, эта текущая строка меняется программно и служит для обращения к значениям колонок с помощью идентификаторов уже без указания строки. Во-вторых, существует текущая строка элемента формы диалога «ТаблицаЗначений», которая является активной строкой (на ней установлен курсор) в диалоге. Текущая строка эле­мента диалога возвращается и устанавливается исключительно только при по­мощи метода ТекущаяСтрока. Например, если программно сменить текущую строку объекта, курсор в визуальном представлении диалога сам собой не пере­двинется, это можно выполнить только при помощи метода ТекущаяСтрока. Однако, при вызове из формы процедуры обработки, текущая строка объекта будет совпадать с текущей строкой визуального представления.



Атрибуты и методы контекста Модуля формы


Описанные в данной главе атрибуты и методы доступны только в контексте Модуля формы (см. «Виды программных модулей»). К Модулям форм отно­сятся практически все программные модули (исключение составляют Глобаль­ный модуль, Модуль документа, Модуль вида расчета).



Работа с Таблицами


Для работы с табличными документами в системе используется специаль­ный агрегатный тип данных «Таблица». Основным назначением табличного документа в системе 1С:Предприятие является создание печатных форм отче­тов и первичных документов.

Печатные формы формируются при помощи встроенного языка с использо­ванием агрегатного объекта «Таблица», создаваемого функцией СоздатьОбъект. Наиболее типичным способом заполнения табличного доку­мента является включение в него секций. Для этого используется исходный табличный документ, который может располагаться в той же форме, в тексте программного модуля которого создан агрегатный объект «Таблица». Кроме того, исходная таблица может располагаться и в общих таблицах конфигурации и во внешнем файле. Назначение исходного табличного документа выполняет­ся методом объекта «Таблица» — ИсходнаяТаблица.

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

В ячейках исходной таблицы может размещаться обычный текст или вы­ражение встроенного языка 1С:Предприятия. При включении в табличный до­кумент секции исходной таблицы автоматически происходит вычисление всех выражений и в табличный документ уже включается секция, содержащая ре­зультаты этих вычислений. Таким образом, происходит заполнение включае­мых секций конкретными данными. Описанный способ, с одной стороны, по­зволяет наиболее наглядным образом визуально в исходной таблице спроекти­ровать внешний вид и содержание отчета, а с другой, позволяет достаточно просто включать подготовленные фрагменты в заполняемый табличный доку­мент.




Приведем пример формирования таким способом печатной формы доку­мента.
Пример:
Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("ПечатьСчета");
Таб.ВывестиСекцию("Шапка");
ВыбратьСтроки();
Пока ПолучитьСтроку() = 1 Цикл
   Таб.ВывестиСекцию("Строка");
КонецЦикла;
Таб.Показать();
В приведенном примере в ячейках секций "Шапка" и "Строка" исходной таблицы располагаются выражения выдающие различные реквизиты докумен­та.
Существует другой способ заполнения данными включаемых секций. Этот способ отличается от описанного тем, что в секциях ячеек не задаются выраже­ния. Заполнение секции данными описывается прямо в алгоритме программно­го модуля. Для этого секция сначала выбирается из исходной таблицы, затем в ней заполняются значениями ячейки, в которых должны выводиться данные, а затем секция включается в табличный документ. Для получения секции из ис­ходной таблицы используется метод ПолучитьСекцию. Полученная секция запоминается в переменной как специальный объект типа «СекцияТаблицы». Для того, чтобы в этом объекте можно было заполнять отдельные ячейки им нужно предварительно задать имена в исходной таблице. У объекта «СекцияТаблицы» отдельные именованные ячейки являются атрибутами, имеющими тип «ОбластьТаблицы» (область может содержать и несколько ячеек). Запол­нение ячеек выполняется присвоением атрибуту "Текст" объекта «ОбластьТаблицы» необходимых значений.
Приведем пример формирования табличного документа этим способом.
Пример:
Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("ПечатьСчета");
Шапка = Таб.ПолучитьСекцию("Шапка");
Шапка.Клиент.Текст = Контрагент;
Шапка = Таб.ВывестиСекцию(Шапка);
......
ВыбратьСтроки();
Пока ПолучитьСтроку () = 1 Цикл
   Строка = Таб.ПолучитьСекцию("Строка");
   Строка.Товар.Текст = Товар;
   ......
   Строка = Таб.ВывестиСекцию(Строка);
КонецЦикла;
Таб.Показать();
Этот способ может применяться в отдельных случаях для ускорения запол­нения табличного документа, если для заполнения данными используются дос­таточно сложные выражения. Кроме того, этот способ позволяет манипулиро­вать при включении секций различными свойствами ячеек. Например, можно для отдельных ячеек устанавливать жирный шрифт.


Кроме описанных способов существует способ заполнения табличного до­кумента путем непосредственного обращения к ячейкам таблицы без использо­вания в качестве заготовки исходной таблицы. Для этого используется метод Область, позволяющий по координатам строки и столбца исходной таблицы получить объект типа «ОбластьТаблицы». Атрибуты и методы этого объекта позволяют задать содержимое и элементы оформления ячеек (текст, цвета, рамки и т. д.).
Приведем фрагмент примера печати документа этим способом.
Пример:
Таб = СоздатьОбъект("Таблица");
Таб.Область(2, 3).Текст = Контрагент;
......
ВыбратьСтроки();
Пока ПолучитьСтроку() = 1 Цикл
   Таб.Область(НомерСтроки + 3, 3).Текст = Товар;
   ......
КонецЦикла;
Таб.Показать();
Этот способ используется в основном для создания универсальных отчетов, для которых невозможно определить заранее их внешний вид. Заметим, что такой способ является наиболее трудоемким с точки зрения написания алго­ритма.
Во всех описанных способах основным содержанием ячеек таблицы являет­ся текст. При заполнении ячеек все данные преобразуются к текстовому виду. Кроме того, у ячейки может заполняться значение расшифровки. Это дополни­тельная возможность, которая никак не влияет на внешний вид таблицы при просмотре и печати, а используется для создания связанных отчетов и откры­тия различных объектов, отображаемых в отчете. При просмотре сформирован­ного отчета в режиме «только просмотр», при подведении курсора к ячейке, у которой заполнено значение расшифровки, курсор принимает форму крестика с лупой и при двойном щелчке мышью или нажатии клавиши <Enter> выполня­ется отработка значения расшифровки.
Стандартный механизм расшифровки позволяет открыть объект (документ, элемент справочника, счет). Кроме того, использование специальной предопре­деленной процедуры позволяет определить в модуле формы специальные дей­ствия по отработки расшифровки, например построение детализирующего от­чета.


Заполнение значения расшифровки при включении секций из исходной таблицы выполняется автоматическим вычислением значения выражения ука­занного в поле «Расшифровка» закладки «Текст» свойств ячейки. При исполь­зовании двух других описанных способов значение расшифровки может быть заполнено с помощью метода Расшифровка объекта типа «ОбластьТаблицы».
Заметим, что указанием "#" в поле «Расшифровка» закладки «Текст» или параметра метода Расшифровка можно включить режим, при котором рас­шифровка будет действовать на всю строку таблицы, что позволит избежать Дублирования значений для нескольких ячеек и, тем самым, избежать излиш-иих затрат времени при формировании отчета на вычисление выражений рас­шифровки.
Описанный выше способ заполнения табличного документа созданного функцией СоздатьОбъект открывает табличный документ в отдельном окне при использовании метода Показать. Кроме того, при настройке формы отчета (обработки), существует возможность табличный документ разместить непосредственно в форме. Для этого в диалоге, вызываемом пунктом «Свойства формы» меню «Действия» в параметре «Использовать таблицу» выбирается вариант «Пустую». В этом случае при открытии формы непосредственно в ней размещается табличный документ. Он может заполняться так же, как и таблич­ный документ, созданный функцией СоздатьОбъект. Для доступа к такой таблице используется атрибут контекста формы отчета (обработки) Таблица.
Кроме описанного использования табличного документа для вывода сфор­мированных печатных форм, существует возможность использования таблично­го документа в специальном режиме для ввода данных. Этот режим доступен только в формах отчета (обработки). Данный режим использования табличного документа включается через свойства формы (вызов свойств формы выполня­ется из меню «Действия» пунктом «Свойства формы» в параметре «Использо­вать таблицу» выбирается вариант «Для ввода данных»).
Режим ввода данных позволяет совместить в одной форме отчета (обработ­ки) диалог формы вместе с табличным документом или вовсе заменить диалог табличным документом. Этот режим предполагает обязательное наличие соз­данной в форме отчета (обработки) таблицы, которая выбирается в свойствах формы, как используемая для ввода данных. В этом режиме в свойствах ячеек табличного документа появляется дополнительная закладка, на которой опре­деляется тип данных хранимых ячейкой, аналогично элементу диалога формы. Для ячеек, в которых предполагается вводить данные, в закладке «Текст» вы­ключается признак «Защита». При открытии формы с установленным свойст­вом использование таблицы для ввода данных, указанная таблица размещается в окне формы и пользователю предоставляется возможность интерактивно вво­дить значения ячеек, предназначенных для ввода, аналогично вводу в поля диалога.


Работа в режиме ввода данных имеет ряд особенностей с точки зрения об­ращения к таблице средствами встроенного языка. Прежде всего, доступ к ис­пользуемой для ввода данных таблице в модуле формы отчета (обработки) осуществляется с помощью ключевого слова "Таблица". Кроме того, в модуле формы возможно непосредственное обращение к значениям именованных ячеек таблицы по их именам. При обращении к области таблицы, используемой в режиме ввода данных, кроме обычных атрибутов используется атрибут "Значение", также предоставляющий доступ к значению ячейки. При этом тип значения определяется типом, выбранным в закладке свойств ячейки «Данные».
Для таблицы, используемой для ввода, в свойствах ячеек данных задаются-формулы. Для ячеек, предназначенных для ввода, формула выполняется после ввода значений, как у реквизитов диалога и используется обычно для вызова процедуры заполнения других ячеек. У ячеек имеющих признак «Защита» формула является выражением и вычисляет собственно значение ячейки как у элементов диалога типа «Текст».
Применение табличного документа для ввода данных используется в специ­альных случаях, например, когда необходимо ввести большое количество дан­ных или необходимо, чтобы форма ввода была оформлена с использованием разнообразных шрифтов, рамок, картинок и т. п.

Работа с Текстом


Для работы с текстами в системе используется специальный агрегатный тип данных — «Текст». Механизм работы с текстами предназначен для форми­рования отчетов в текстовом виде, а также для обмена информацией с другими программами посредством текстовых файлов. Средства языка имеют возмож­ность не только вывода строк в текстовые файлы, но и считывания имеющихся файлов с последующим разбором его по строкам.



Работа с Запросами


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

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

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



Язык Запросов


Язык запросов предназначен для описания запросов к документам, справоч­никам, регистрам, журналам расчетов, планам счетов, бухгалтерским операциям и проводкам. Текст описания запроса передается методу Выполнить (см. Главу «Работа с Запросами») в качестве параметра. В результате выполнения этого метода генерируется временный выходной набор данных, который в дальней­шем используется для заполнения формы отчета.



Работа с Картинками


При формировании пользовательского интерфейса прикладной задачи ино­гда требуется отображать в диалоговых формах и печатных документах графи­ческие файлы. Для этого в системе 1С:Предприятие используется специальный агрегатный тип данных — Картинка и специальнй элемент формы диалога и таблицы: «Картинка».

Одним из примеров использования данного объекта может служить диало­говая форма справочника «Сотрудники» в которой при выборе сотрудника ото­бражается его фотография.



Работа с Диаграммами


В настоящий момент существует широкий ряд программных продуктов, по­зволяющих, в дополнение к табличным отчетам, получать графические отчеты (диаграммы). Одними из наиболее известных продуктов, выполняющих эти функции, являются MS Graph97 и MS Excel chart, система деловой графики, входящая в комплект Lotus 1-2-3 фирмы «Lotus», VCI First impression chart от Visual Components и многие другие.

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

Настоящая глава является руководством по использованию объекта «Диа­грамма» системы 1С:Предприятия.

Использование данной возможности имеет следующие преимущества:

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

за счет более тесного взаимодействия с системой 1С:Предприятие, объ­ект «Диаграмма» обеспечивает большую скорость построения диаграмм;

интеграция с 1С:Предприятием предоставляет дополнительные возмож­ности (расшифровка диаграммы);

простота использования — система атрибутов и методов достаточно про­ста, и ее освоение не потребует больших усилий.

Объект «Диаграмма» предназначен для применения только в табличных до­кументах системы 1С:Предприятие и не может использоваться самостоятельно.



Работа с Файлами


Для работы с файлами в системе используется специальный агрегатный тип данных — ФС. Механизм работы с файлами предназначен для обеспечения возможности манипулирования файлами непосредственно из встроенного язы­ка программы 1С:Предприятия.



Работа с Метаданными


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



Связь с внешними приложениями посредством механизмов DDE и OLE Automation


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

Одним из примеров использования такой возможности может служить за­пуск программы Microsoft Excel (непосредственно из программы 1С:Предприятие ) с одновременным выводом в нее результатов расчета. Далее пользователь может обрабатывать полученные результаты (просматривать, ре­дактировать, печатать и т. п.) непосредственно в среде Microsoft Excel.

Одну из возможностей запуска и управления внешними приложениями дает механизм OLE Automation. Встроенный язык системы 1С:Предприятие под­держивает технологию управления объектами OLE. Непосредственно при по­мощи операторов языка можно управлять, например, программами, входящи­ми в Microsoft Office.



Глобальный модуль


Размещается в корне­вом разделе конфигу­рации: Метаданные.

Запускается при стар­те всей прикладной задачи.

Глобальный модуль оп­ределяет глобальный контекст всей задачи.



ГоризонтальноеПоложение


Получить/установить признак горизонтального выравнивания текста области.

Синтаксис:

ГоризонтальноеПоложение(<Положение>)

Англоязычный синоним:

HorizontalAlign

Параметры:

<Положение>

Необязательный параметр. Число: 1 — слева; 2 — справа; 3 — по центру; 4 — по ширине. (5 – 8) — по выделенным столбцам: слева/справа/по центру/по ширине. Если параметр опущен, то признак горизон­тального выравнивания текста области не изменяет­ся.

Возвращаемое значение:

Признак горизонтального выравнивания текста до исполнения метода.

Описание:

Метод ГоризонтальноеПоложение устанавливает признак горизонтально­го выравнивания текста области.

Пример:

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

Таб.Открыть(" tabl_l.mxl");

ВыбОбласть = Таб.Область("R8C4");

ВыбОбласть.Шрифт("Arial");

ВыбОбласть.РазмерШрифта(10);

ВыбОбласть.Подчеркнутый(1);

ВыбОбласть.ГоризонтальноеПоложение(3);



Графа


Выдает значение графы журнала для текущего документа.

Синтаксис:

Графа(<Графа>)

Англоязычный синоним:

Column

Параметры:

<Графа>

Идентификатор графы журнала, который задан методом ИспользоватьЖурнал.

Возвращаемое значение:

Значение заданной графы журнала для текущего документа.

Описание:

Метод Графа позволяет получить значение заданной графы журнала для текущего документа. Данный метод работает только в том случае, если ранее Применен метод ИспользоватьЖурнал.

Пример:

Док = СоздатьОбъект("Документ.НаклПрих");

Док.ИспользоватьЖурнал("Приходные", 0);

док.НайтиДокумент(ВыбДок);

Цена = Док.Графа("Цена");

См. также: ИспользоватьЖурнал



ГраницаПросмотра


Установить в форме журнала расчетов границу видимости записей.

Синтаксис:

ГраницаПросмотра(<Период>)

Англоязычный синоним:

ViewBound

Параметры:

<Период>

Значение типа «Период журнала расчетов», кото­рое устанавливается как граница видимости запи­сей журнала расчетов.

Возвращаемое значение:

Значение типа «Период журнала расчетов». Текущее значение границы про­смотра записей журнала расчетов, установленное до вызова метода программ­ным образом или интерактивно.

Описание:

Метод ГраницаПросмотра устанавливает в форме журнала расчетов гра­ницу видимости записей. Видимыми (т.е. отображаемыми в окне журнала рас­четов) становятся записи журнала с периодом регистрации от расчетного пе­риода, заданного параметром <Период> до текущего расчетного периода. После вызова данного метода происходит перерисовка окна, так же как и при инте­рактивной смене границы просмотра журнала расчетов.

Данный метод доступен только в контексте Модуля формы журнала расче­тов (см. «Виды программных модулей»).

Пример:

// в форме журнала расчетов "зарплата" отодвинемся

// на два расчетных периода назад

СтараяГраница = ГраницаПросмотра();

ГраницаПросмотра(Ст.ПрибавитьПериод(-2));

См. также: методы РежимПредставления, УстановитьОтбор, атрибут ПериодРегистрации



Группировка


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

Синтаксис:

Группировка(<Группировка>, <Направление>)

Англоязычный синоним:

Group

Параметры:

<Группировка>

Выражение, содержащее порядковый номер или имя группировки.

<Направление>

Необязательный параметр. Числовое выражение:

1 — выборка значений группировки по возрастанию;

-1 (минус единица) — выборка значений группи­ровки по убыванию.

Значение по умолчанию: 1.

Возвращаемое значение:

Число: 1 — если получено следующее значение выборки запроса, 0 — если нет.

Описание:

Метод Группировка служит для организации цикла получения данных из выборки, сформированной в результате работы метода Выполнить. Метод Группировка позиционирует в выборке очередную строку в порядке, опреде­ленном параметром <Группировка>. Нельзя использовать метод Группировка, задавая в качестве параметра младшие группировки, не ис­пользовав предварительно этот метод для позиционирования по старшим груп­пировкам. Старшинство группировок определяется порядком их следования в тексте запроса.

Замечание: Обход группировок по многоуровневым справочникам в порядке убывания не выполняется.

Пример:

Процедура Сформировать()

   Перем Запрос, ТекстЗапроса;

   Если (Число(ДатаНач) = 0) ИЛИ (Число(ДатаКон) = 0) Тогда

      Предупреждение("Не задан период!");

      Возврат;

   КонецЕсли;

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

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

   "//{{ЗАПРОС(Сформировать)

   |с ДатаНач по ДатаКон;

   |Рез = ЖурналРасчетов.Зарплата.Результат;

   |Сотр = ЖурналРасчетов.Зарплата.Объект;

   |Группировка Сотр без групп;

   |Группировка ПериодЖурнала;

   |Функция Сум = Сумма(Рез);

   |"//}}ЗАПРОС

   ;

   Если Сотрудник.Выбран() = 1 Тогда

      ТекстЗапроса = ТекстЗапроса + "Условие(Сотр = Сотрудник);";

   КонецЕсли;

   // Если ошибка в запросе, то выход из процедуры

   Если Запрос.Выполнить(ТекстЗапр) = 0 Тогда

      Возврат;

   КонецЕсли;

   // Подготовка к заполнению выходных форм данными запроса

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

   // сначала используем группировку по сотрудникам

   // а потом группировку по периоду журнала!!!

   Пока Запрос.Группировка("Сотр") = 1 Цикл

      // Заполнение полей Сотр

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

      Пока Запрос.Группировка("ПериодЖурнала") = 1 Цикл

         // Заполнение полей ПериодЖурнала

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

      КонецЦикла;

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

   КонецЦикла;

   // Вывод заполненной формы

   // Заполнение полей "Итого"

   Таб.Опции(0, 0, 0, 0);

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

   Таб.Показать("Результат", );

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



Группировка


Устанавливает порядок выборки информации.

Синтаксис:

Группировка <ИмяГруппировки>|<ПредопредГруппировка>

           [Упорядочить по <Порядок>[, <Порядок>]*]

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

Англоязычный синоним:

Group <ИмяГруппировки>|<ПредопредГруппировка>

           [Order By <Порядок>[, <Порядок>]*]

           [Without Order][Without Groups][All [IncludedInQuery]];

Параметры:

<ИмяГруппировки>

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

<ПредопредГруппировка>

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

упорядочить по

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

<Порядок>

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

Без Упорядочивания

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

Без Групп

Необязательное добавочное ключевое слово, использование которого назначает вывод в запрос только простых элементов справоч­ников (исключая группы). Используется только для группировок, построенных на основе внутренней переменной типа «спра­вочник».

Все

Необязательное добавочное ключевое слово, действие которого зависит от типа внутрен­ней переменной, на основе которой построе­на группировка. Используется только для группировок, построенных на основе внут­ренней переменной типа «справочник» или для предопределенных группировок, задаю­щих временной интервал (Год, Месяц, Квартал, Неделя, День). Для предопре­деленных временных группировок подразу­мевается, что в запрос будут включены любые значения данных (в том числе нулевые) в каждый заданный момент времени с даты начала запроса по дату конца запроса (ин­тервал задается оператором Период С...) Для группировок по справочникам подразу­мевается, что в запрос будут включены лю­бые значения данных (в том числе нулевые) для каждого допустимого элемента справоч­ника.

ВошедшиеВЗапрос

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




Описание:

Оператор Группировка задает способ группировки информации и порядок ее упорядочивания в запросе.

Предопределенные группировки могут быть следующими:

Предопределенн. Группировка

Англояз.

Синоним


Выполняемое действие

Документ

Document

Позволяет детализацию до каж­дого документа.

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

DocumentLine

Позволяет детализацию до каждой строки табличной части ка­ждого документа.

День

Неделя

Месяц

Квартал

Год

Day

Week

Month

Quarter

Year

Группировки по дате, дают воз­можность накапливать значения по документам за конкретный период (на каждый день, неделю, месяц и т. д.). В запросе может присутствовать несколько груп­пировок такого типа.

Замечание: В программном модуле, где используется запрос, имя <ИмяГруппировки> (или <ПредопредГруппировка>) будет являться атрибутом запроса. Кроме того, это имя используется в качестве парамет­ра метода запросов Группировка (см. главу «Работа с Запросами»).

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

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

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



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

С параметром упорядочивания связан специальный метод для доступа к значениям объекта «Запрос». Речь идет об использовании метода ЗначениеУпорядочивания. В программном модуле, после того как запрос уже сформирован, мы можем при помощи этого метода получить значение поля упорядочивания из временного набора данных, не обращаясь к базе данных. Например, если у нас в запросе была группировка "Товар", а нам для форми­рования некоторого отчета нужны значения наименований товаров, то эти на­именования товаров можно получить двумя способами:

Наим = Запрос.Товар.Наименование;

или

Наим = 3апрос.ЗначениеУпорядочивания("Товар", 1);

Смысл использования данного специального метода доступа в том, что зна­чения упорядочивания хранятся во временном наборе данных, сформирован­ном запросом, поэтому за этими значениями программе нет необходимости снова обращаться к информационной базе, а можно получить непосредственно из временного набора. Эффект использования специального метода доступа может проявиться только в сетевой версии информационной базы при форми­ровании очень больших отчетов, время формирования которых порядка десятков минут. В этом случае применение этого метода доступа даст некоторый выигрыш по времени.

Пример:

Процедура Группировки()

   Перем Запрос, ТекстЗапроса;

   Перем ДатаНач, ДатаКон;

   ЖР = СоздатьОбъект("ЖурналРасчетов.Зарплата");

   Нач = ЖР.НачалоТекущегоПериода();

   Кон = ЖР.КонецТекущегоПериода();

   //Создание объекта типа Запрос



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

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

   "//{{ЗАПРОС(Группировки)

   |Период с ДатаНач по ДатаКон;

   |Рез = ЖурналРасчетов.Зарплата.Результат;

   |Расч = ЖурналРасчетов.Зарплата.ВидРасч;

   |Дни = ЖурналРасчетов.Зарплата.Дни;

   |Сотр = ЖурналРасчетов.Зарплата.Объект;

   |Группировка Сотр без групп;

   |Группировка Расч;

   |Функция Сум = Сумма(Рез);

   |Функция Дней = Сумма(Дни);

   |Условие(Рез о 0);

   |"//})ЗАПРОС

   ;

   // Если ошибка в запросе, то выход из процедуры

   Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда

      Возврат;

   КонецЕсли;

   // Подготовка к заполнению выходных форм данными запроса

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

   Пока Запрос.Группировка("Сотр") = 1 Цикл

      // Заполнение полей Сотр

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

      Пока Запрос.Группировка("Расч") = 1 Цикл

         // Заполнение полей

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

      КонецЦикла;

   КонецЦикла;

   Таб.Опции(0, 0, 0, 0);

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

   Таб.Показать("Результат", );

   // Вывод заполненной формы

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


ГрупповаяОбработка


Возвратить флаг групповой обработки.

Синтаксис:

ГрупповаяОбработка()

Англоязычный синоним:

IsGroupPrосеssing

Возвращаемое значение:

Число: 1 — групповое обработка, 0 — проведение документа по одному.

Описание:

Метод ГрупповаяОбработка позволяет определить, выполняется ли про­ведение документа группой (при помощи режима «Управление итогами») или по одному (интерактивно).

Данный метод доступен только в контексте Модуля документа в предопределенной процедуре ОбработкаПроведения (см. гл. «Системные предопреде­ленные процедуры»).

Пример:

Лроцедура ОбработкаПроведения()

   Если ГрупповаяОбработка() > 0 Тогда

      // если групповая проводка документов, то вызываем процедуру

      ПроводкаДокументаГруппой();

   Иначе

      // если не групповая проводка документов, то

      ПроводкаДокументаОдиночного();

   КонецЕсли;

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

См. также: ОбработкаПроведения, Провести



Идентификатор


Возвращает строку — идентификатор значения перечисления.

Синтаксис:

Идентификатор()

Англоязычный синоним:

Identifier

Возвращаемое значение:

Строковое значение — идентификатор значения перечисления как он задан в метаданных.

Описание:

Метод Идентификатор возвращает строку — идентификатор значения пере­числения как он задан в метаданных.

Пример:

// отобразим все идентификаторы перечисления

Всего = Перечисление.ВидыТоваров.КоличествоЗначений();

Пока Ном = 1 По Всего Цикл

   ВидТов = Перечисление.ВидыТоваров.ЗначениеПоНомеру(Ном);

   Сообщить(ВидТов.Идентификатор());

КонецЦикла;




Идентификатор


Определить строку-идентификатор плана счетов как он задан в ме­таданных.

Синтаксис:

Идентификатор()

Англоязычный синоним:

Identifier

Возвращаемое значение:

Строка-идентификатор плана счетов как он задан в метаданных.

Описание:

Метод Идентификатор позволяет определить строку-идентификатор плана счетов как он задан в метаданных.

Пример:

Если ИспПланСчетов.Выбран() = 1 Тогда

   Сообщить(Идентификатор(ИспПланСчетов));

КонецЕсли;



Идентификатор


Определить строку-идентификатор вида субконто как он задан в метаданных.

Синтаксис:

Идентификатор()

Англоязычный синоним:

Identifier

Возвращаемое значение:

Строка-идентификатор вида субконто как он задан в метаданных.

Описание:

Метод Идентификатор позволяет определить строку-идентификатор ви­да субконто как он задан в метаданных.

Пример:

Для Н=1 По ВидыСубконто.КоличествоЗначений() Цикл

   Сообщить(Идентификатор(ВидыСубконто.ЗначениеПоНомеру(Н)));

КонецЦикла;



<ИдентификаторКолонки>


Значение элемента таблицы в текущей строке в колонке, заданной идентификатором.

Синтаксис:

<ИдетификаторКолонки>

Описание:

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



<ИдентификаторРегистра>


Регистр конфигурации.

Синтаксис:

<ИдентификаторРегистра>

Описание:

Атрибут <ИдентификаторРегистра> предоставляет доступ к регистру конфигурации конкретного вида. В тексте программного модуля используется название конкретного регистра, как он назван в конфигураторе.

Пример:

СпецРег = СоздатьОбъект("Регистры");

СпецРег.УчетТоваров.СводныйОстаток(ВыбТовар, ВыбСклад, "Количество")



ИерархическийСписок


Установить режим иерархического списка справочника.

Синтаксис:

ИерархическийСписок(<ФлагИерархСписка>, <ФлагИзменения>)

Англоязычный синоним:

HierarchicalList

Параметры:

<ФлагИерархСписка>

Флаг иерархического списка. 1 — иерархический список; 0 — неиерархический список.

<ФлагИзменения>

Необязательный параметр. Этим флагом регу­лируется возможность интерактивного измене­ния флага иерархического списка. 1 — пользова­тель может изменить иерархичность интерак­тивно, 0 — пользователь не может интерактивно изменить иерархичность.

Возвращаемое значение:

Значение флага иерархического списка для формы списка справочника (до применения метода).

Описание:

Метод ИерархическийСписок устанавливает режим иерархического спи­ска справочника.

Данный метод доступен в контексте Модуля формы списка справочника (см. «Виды программных модулей»). Действие данного метода относится ко всему текущему списку справочника, который доступен в локальном контексте Модуля формы списка справочника.

Пример:

ИерархическийСписок(1, 1);



ИерархическийСписок


Установить режим иерархического списка счетов.

Синтаксис:

ИерархическийСписок(<ФлагИерархСписка>, <ФлагИзменения>)

Англоязычный синоним:

HierarchicalList

Параметры:

<ФлагИерархСписка>

Флаг иерархического списка. 1 — иерархический список; 0 — неиерархический список.

<ФлагИзменения>

Необязательный параметр. Этим флагом регу­лируется возможность интерактивного измене­ния флага иерархического списка. 1 — пользова­тель может изменить иерархичность интерактивно, 0 — пользователь не может интерактивно изменить иерархичность.

Возвращаемое значение:

Значение флага иерархического списка для формы списка счетов (до при­менения метода).

Описание:

Метод ИерархическийСписок устанавливает режим иерархического спи­ска счетов.

Данный метод доступен в контексте Модуля формы списка счетов (см. «Виды программных модулей»). Действие данного метода относится ко всему текущему списку счетов, который доступен в локальном контексте Модуля формы списка счетов.

Пример:

ИерархическийСписок(1, 1);



ИмеетПодчиненный


Установить принадлежность вида расчета к «подчиненным» для пра­вила перерасчета.

Синтаксис:

ИмеетПодчиненный(<ВидРасчета>)

Англоязычный синоним:

HasDependent

Параметры:

<ВидРасчета>

Вид расчета.

Возвращаемое значение:

Число: 1, если данное правило перерасчета имеет заданный вид расчета в качестве подчиненного (т. е. для этого вида расчета в журнале расчетов сработа­ет данное правило перерасчета); 0, если данное правило перерасчета не имеет заданный вид расчета в качестве подчиненного.

Описание:

Метод ИмеетПодчиненный позволяет установить принадлежность вида расчета к подчиненным для правила перерасчета.

Пример:

Подч = ПравилоПерерасчета.Доплаты.ИмеетПодчиненный(ВидРасчета.Премия);



ИмеетВедущий


Установить принадлежность вида расчета к ведущим для правила перерасчета.

Синтаксис:

ИмеетВедущий(<ВидРасчета>)

Англоязычный синоним:

HasLeading

Параметры:

<ВидРасчета>

Вид расчета.

Возвращаемое значение:

Число: 1, если данное правило перерасчета имеет заданный вид расчета в качестве ведущего (т. е. при вводе этого вида расчета в журнал расчетов сработает данное правило перерасчета); 0, если данное правило перерасчета не имеет заданный вид расчета в качестве ведущего.

Описание:

Метод ИмеетВедущий позволяет установить принадлежность вида расчета к ведущим для правила перерасчета.

Пример:

// зависит ли доплата от премии?

Зависит = ПравилоПерерасчета.Доплаты.ИмеетВедущий(ВидРасчета.Премия);



Имена переменных, процедур и функций


Именем переменной, объявленной процедуры или функции может быть лю­бая последовательность букв, цифр и знаков подчеркивания "_", начинающаяся с буквы или знака подчеркивания "_". Вновь создаваемые имена не должны совпадать с зарезервированными словами языка или именами существующих процедур и функций, доступных на момент выполнения. Распознавание имен переменных, процедур и функций ведется без учета регистра букв.