Функции, применяемые в выражениях
Функция |
Параметр(ы) |
Возвращаемое значение |
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, если данное правило перерасчета не имеет заданный вид расчета в качестве ведущего.
Описание:
Метод ИмеетВедущий позволяет установить принадлежность вида расчета к ведущим для правила перерасчета.
Пример:
// зависит ли доплата от премии?
Зависит = ПравилоПерерасчета.Доплаты.ИмеетВедущий(ВидРасчета.Премия);
Имена переменных, процедур и функций
Именем переменной, объявленной процедуры или функции может быть любая последовательность букв, цифр и знаков подчеркивания "_", начинающаяся с буквы или знака подчеркивания "_". Вновь создаваемые имена не должны совпадать с зарезервированными словами языка или именами существующих процедур и функций, доступных на момент выполнения. Распознавание имен переменных, процедур и функций ведется без учета регистра букв.