Part0

Введение

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

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

Назначение и краткая характеристика встроенного языка

Встроенный язык системы 1С:Предприятие предназначен для описания (на стадии разработки конфигурации) алгоритмов функционирования прикладной задачи.

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

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

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

Построение книги

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

Формат описания элементов языка

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

Соглашения и обозначения, принятые в синтаксических диаграммах

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

Символ | Значение
[ ] | В квадратных скобках заключаются необязательные синтаксические элементы.
( ) | Круглые скобки заключают в себе список параметров.
| | Вертикальной линией разделяются синтаксические элементы, среди которых нужно выбрать только один.

Синтаксическая диаграмма описания элемента языка

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

ЭлементЯзыка

Краткое описание того, что делает данный ЭлементЯзыка.

Синтаксис:

ЭлементЯзыка(<Параметр1>, <Параметр2>, ...) [ДобКлючевоеСлово]

Англоязычный Синтаксис: (в случае языковых конструкций)

Keyword(<Параметр1>, <Параметр2>, ...)[AddKeyWord]

Англоязычный синоним: (в случае описания методов, функций и процедур)

Keyword

Параметры:

<Параметр1> краткое описание <Параметра1>.

<Параметр2> краткое описание <Параметра2>.

[ДобКлючевоеСлово] краткое описание ДобКлючевоеСлово.

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

Тип и краткое описание возвращаемого значения.

Описание:

Подробное описание того, что реализует ЭлементЯзыка.

Пример:

· Краткое описание примера

// Исходный текст примера

См. также: Ссылки на другие методы, процедуры или функции.


Part1

Глава 1
Формат исходных текстов программных модулей

Что такое программный модуль?

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

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

Каждый отдельный программный модуль воспринимается системой как единое целое, поэтому все процедуры и функции программного модуля выполняются в едином контексте.

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

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

· глобальный контекст задачи;

· локальный контекст выполнения конкретного модуля.

Глобальный контекст образуется:

· значениями системных атрибутов, системными процедурами и функциями;

· значениями заданных в конфигураторе констант, перечислений, регистров, видов расчета, групп видов расчета;

· переменными, процедурами и функциями глобального программного модуля, объявленными с ключевым словом Экспорт.

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

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

Виды программных модулей

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

Размещение

Момент запуска

Контекст выполнения

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

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

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

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

Модуль Формы списка справочника

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

Запускается при вызове формы списка справочника.

В модуле доступны: глобальный контекст, контекст Модуля формы списка справочника, в котором непосредственно доступен выбранный в списке элемент справочника и реквизиты формы списка справочника.

Модуль Формы группы справочника

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

Запускается при открытии формы группы справочника.

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

Модуль Формы элемента справочника

Размещается в разделе конфигурации: Метаданные — Справочник — Форма элемента.

Запускается при открытии формы элемента справочника.

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

Модуль Формы документа

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

Запускается при открытии формы документа.

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

Модуль документа

Размещается в разделе

конфигурации: Метаданные — Документ — Модуль документа.

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

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

Модуль Формы журнала документов

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

Запускается при вызове формы журнала документов.

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

Модуль Формы журнала расчетов

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

Запускается при вызове формы журнала расчетов.

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

Модуль Формы списка счетов

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

Запускается при вызове формы списка счетов.

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

Модуль Формы счета

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

— счет.

Запускается при открытии формы счета.

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

Модуль Формы журнала операций

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

Запускается при вызове формы журнала операций.

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

Модуль Формы операции

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

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

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

Модуль Формы журнала проводок

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

Запускается при вызове формы журнала проводок.

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

Модуль Формы отчета

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

Запускается при открытии диалоговой формы подготовки отчета.

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

Модуль Формы обработки

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

Запускается при открытии диалоговой формы обработки.

В модуле доступны: глобальный контекст, контекст Модуля формы обработки, в котором непосредственно доступны реквизиты формы.

Модуль вида расчета

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

Запускается при расчете соответствующих записей журнала расчетов.

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

Формат программного модуля

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

Комментарии

Комментарий используется для размещения в исходном тексте программного модуля всякого рода пояснений к работе модуля. Хорошим тоном программирования считается, когда исходный текст содержит исчерпывающий комментарий с описанием алгоритма. В режиме исполнения программы комментарии пропускаются. В тексте программного модуля комментарий начинается парой символов "//" и заканчивается концом строки. Это значит, что комментарий можно начинать с начала строки или записывать его после оператора на той же строке. После начала комментария писать оператор на той же строке нельзя, необходимо закончить комментарий концом строки.

Пример:

А=В; // Это – комментарий

// Это тоже комментарий

Формат операторов

Операторы имеют вид стандартного обращения к процедуре, за исключением оператора присваивания (А=В;) и управляющих конструкций (таких как Для, Пока, Если). Между собой операторы обязательно следует разделять символом ";" ( точкой с запятой). Конец строки не является признаком конца оператора, т. е. операторы могут свободно переходить через строки и продолжаться на другой строке. Можно располагать произвольное число операторов на одной строке, разделяя их символом ";".

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

Операторы объявления переменных создают имена переменных, которыми манипулируют исполняемые операторы.

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

В общем случае формат оператора языка следующий:

~метка:Оператор[(параметры)] [ДобКлючевоеСлово];

В качестве меток используются специальные идентификаторы, начинающиеся с символа '~' (тильда) и состоящие из последовательности букв, цифр и символов '_'. Чтобы пометить оператор, надо поместить перед ним метку и следующий за ней символ ":".

Пример:

~метка:А=В;

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

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

Зарезервированные слова

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

Если | If | He | Not | Дата | Date
Тогда | Then | Знач | Val | Формат | Format
ИначеЕсли | Elsif | СтрДлина | StrLen | Разм | Dim
Иначе | Else | СокрЛ | TrimL | Вопрос | Do Query Box
КонецЕсли | Endlf | СокрП | TrimR | Контекст | Context
Цикл | Do | Лев | Left | Перем | Var
Для | For | Прав | Right | Перейти | Goto
По | To | Сред | Mid | Возврат | Return
Пока | While | Цел | Int | Продолжить | Continue
Функция | Function | Окр | Round | Прервать | Break
КонецПроцедуры | EndProcedure | Число | Number | И | And
КонецФункции | EndFunction | Строка | String | Или | Or
Предупреждение | DoMessageBox | КонецЦикла | EndDo | Процедура | Procedure

Структура программного модуля

Структуру программного модуля можно подразделить на следующие разделы:

· раздел определения переменных;

· раздел процедур и функций;

· раздел основной программы.

В конкретном программном модуле любой из разделов может отсутствовать.

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

Раздел процедур и функций размещается от первого оператора Процедура или оператора Функция до любого исполняемого оператора вне тела описания процедур или функций.

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

Специальные символы, используемые в исходном тексте

// | Двумя знаками «косая черта» начинается комментарий. Комментарием считается весь текст от знака "//" до конца текущей строки.
| | Вертикальная черта в начале строки используется только в строковых константах и означает, что данная строка является продолжением предыдущей (перенос строки), (см. «Строковые константы»).
~ | Знаком тильда начинается метка оператора.
: | Двоеточием заканчивается метка оператора.
; | Точка с запятой является символом разделения операторов.
( ) | В круглые скобки заключается список параметров методов, процедур и функций.
[ ] | В квадратные скобки заключается размерность массивов.
, | Запятая разделяет параметры в списке параметров методов, процедур и функций.
" " | В двойные кавычки заключаются строковые константы.
' ' | В одинарные кавычки заключаются константы даты.
. | Десятичная точка в числовых константах. Разделитель, используемый в описаниях агрегатных типов данных.
+ | Символ «плюс» обозначает операцию сложения.
- | Символ «минус» обозначает операцию вычитания.
* | Символ «звездочка» обозначает операцию умножения.
/ | Символ «косая черта» обозначает операцию деления.
> | Правая угловая скобка обозначает логическую операцию «больше».
>= | Логическая операция «больше или равно».
< | Левая угловая скобка обозначает логическую операцию «меньше».
<= | Логическая операция «меньше или равно».
= | Знак равенства обозначает присвоение или логическую операцию «равно».
<> | Две угловые скобки обозначают логическую операцию «не равно».

Процедуры и функции программного модуля

Процедура

Секция описания процедуры.

Синтаксис:

Процедура <Имя_проц>([[Знач] <Парам1>[=<ДефЗнач>],

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

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

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

...

[Возврат;]

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

...

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

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

Procedure <Имя_проц>([[Val] <Парам1>[=<ДефЗнач>],

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

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

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

...

[Return;]

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

...

EndProcedure

Параметры:

<Имя_проц>

Назначает имя процедуры.

Знач

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

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

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

=<ДефЗнач>

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

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

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

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

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

Экспорт

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

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

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

//Операторы

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

Возврат

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

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

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

Описание:

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

При выполнении оператора Возврат процедура заканчивается и возвращает управление в точку вызова. Если в тексте процедуры не встретился оператор Возврат, то после выполнения последнего исполняемого оператора происходит выполнение неявного оператора Возврат. Конец программной секции процедуры определяется по оператору КонецПроцедуры.

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

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

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

Пример:

Перем Глоб;

// Описание процедуры

Процедура МояПроцедура(Пар1, Пар2, ПарЗ) Экспорт

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

Возврат;

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

Глоб = 123;

МояПроцедура(5, 6, 7);   // Вызов процедуры

Функция

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

Синтаксис:

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

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

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

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

...

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

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

...

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

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

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

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

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

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

...

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

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

...

EndFunction

Параметры:

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

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

Знач

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

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

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

=<ДефЗнач>

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

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

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

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

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

Экспорт

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

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

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

//Операторы

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

Возврат

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

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

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

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

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

Описание:

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

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

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

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

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

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

Пример:

Перем Глоб;

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

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

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

Возврат Лок;

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

Глоб = 123;

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

Предварительное описание процедур и функций

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

Пример:

· фрагмента текста модуля, содержащий предварительное описание процедуры.

Процедура А(Парам1, Парам2) Далее

Процедура Б()

   Перем АА, ББ;

   ...

   А(АА, ББ);

   ...

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

Процедура А(Парам1, Парам2)

   ...

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

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

Процедура А(Парам1, Парам2) Далее

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

Передача параметров

По умолчанию параметры методов, процедур и функций передаются по ссылке, то есть изменение внутри процедуры или функции значения формального параметра ведет к изменению значения соответствующего фактического параметра. При передаче параметра по значению изменение значения формального параметра никак не влияет на фактический параметр вызова процедуры. Для указания того, что тот или иной параметр следует передавать по значению, следует в исходном тексте процедуры или функции перед именем параметра записать ключевое слово Знач (англоязычный синоним — Val).

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

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

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

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

Пример:

Перем Глоб;

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

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

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

   Пар1 = 40;

   Возврат Лок;

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

Глоб = 123;

А = 10;

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

// Здесь Рез = 146, а переменная А = 10, несмотря на то, что в теле

// функции значение параметра Пар1 изменено на 40

Передача локального контекста программного модуля в качестве параметра

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

Пример:

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

Процедура УстСклада(Конт) Экспорт

   // создаем объект типа "справочник"

   Скл = СоздатьОбъект("Справочник.Склады");

   // вызываем диалог для выбора элемента Справочника

   Скл.Выбрать("Выберите Склад", "");

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

      // если в диалоге элемент Справочника был выбран,

      // то присваиваем его значение реквизиту Документа,

      // который доступен по локальному контексту

      Конт.Склад = Скл.ТекущийЭлемент();

   КонецЕсли;

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

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

Конт.Склад = Скл.ТекущийЭлемент();

· Теперь в любом программном модуле конфигурации (в данном примере в любом Модуле формы документа) для выбора склада можно вызвать процедуру, передав ей свой локальный контекст в качестве параметра:

УстСклад(Контекст);

Пример исходного текста программного модуля

Перем ФлагПроводки; // Флаг проведения Документа

Перем ФлагИзменения; // Флаг изменения Документа

//————————————————————————————————————————————————

Функция КонтрольОстатка()

   // Функция возвращает текущее значение остатка товара на складе

   Ост = Регистр.ОстаткиТоваров.Остаток(Склад, Товар, "ОстатокТовара");

   Возврат Ост;

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

//————————————————————————————————————————————————

Процедура УстФлагИзм()

   ФлагИзменения = 1;

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

//————————————————————————————————————————————————

Процедура ВводНового()

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

   // установим дату Документа

   ДатаДок = РабочаяДата();

   // установим реквизиты Документа (по умолчанию)

   ТипНакладной = Перечисление.ТипыНакладных.Перемещение;

   Фирма = Константа.ДефФирма;

   Склад = Константа.ДефСклад;

   СкладПолучатель = Константа.ДефСклад;

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

//————————————————————————————————————————————————

Процедура ВыходноеСообщение()

   // процедура, которую мы будем вызывать при нажатии кнопки "ОК"

   Если (ФлагПроводки = 1) И (ФлагИзменения = 1) Тогда

      Предупреждение("Проведенный Документ был изменен! При

            | сохранении обязательно проведите Документ снова!");

   КонецЕсли;

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

//————————————————————————————————————————————————

// При входе в Форму запомним промежуточные переменные

ФлагПроводки = Проведен();

ФлагИзменения = 0;


Part2

Глава 2
Типы данных

Базовые типы данных

В языке поддерживаются следующие базовые типы данных:

· числовой;

· строковый;

· дата.

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

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

Типом дата может представляться любая корректная дата.

Правила преобразования типов данных

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

Число -> Строка

Если число не имеет форматных установок, то его строковым представлением является полное представление числа в формате с фиксированной точкой.

Дата -> Строка

Дата преобразованная к строковому типу имеет вид ДД.ММ.ГГ, где ГГ — две цифры года, ММ — числовое обозначение месяца (01, ..., 12), ДД — день месяца.

Строка -> Число

Строка преобразуется в число пока это возможно. Получившееся число считается результатом преобразования. (Например, строка "1.22 Glass" будет преобразована к числу 1.22). Если в начале строки не имеется ничего, что могло бы быть проинтерпретировано как число, то результат равен 0.

Дата -> Число

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

Строка -> Дата

Если в начале строки содержится что-то, что может быть проинтерпретировано как строковое представление даты в виде ДД.ММ.ГГ, где ГГ — две цифры года, ММ — числовое обозначение месяца (01, ..., 12), ДД — день месяца, то будет произведено соответствующее преобразование. В противном случае значение даты будет нулевым.

Число -> Дата

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

Агрегатные типы данных

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

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

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

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

Каждый агрегатный тип данных, как правило, имеет набор атрибутов и методов.

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

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

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

Замечание. Работа с агрегатными типами данных языка напоминает работу с объектными типами в Visual Basic. Атрибуты агрегатного типа данных — аналогичны свойствам объектного типа в Visual Basic. Методы — аналогичны методам объектного типа в VisualBasic.

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

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

· с помощью функции СоздатьОбъект создается объект агрегатного типа данных, и какой-либо переменной присваивается ссылка на него;

· объект позиционируется на нужном элементе данных;

· производятся различные манипуляции с объектом агрегатного типа данных через вызовы методов и обращения к его атрибутам.

· в случае, если объект агрегатного типа данных больше не нужен, он может быть отсоединен от переменной посредством переприсваивания переменной какого-либо значения базового типа (например, числа 0). Отсоединение объекта выполнять не обязательно.

Пример:

// Создаем объект типа "справочник.Сотрудники"

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

// Позиционируем созданный объект Сотр по известному наименованию

Сотр.НайтиПоНаименованию("Петров");

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

   // если сотрудник найден, отобразим его оклад

   Предупреждение("Оклады" + Сотр.Оклад);

Иначе

   Предупреждение("Петров не найден" + " !!!");

КонецЕсли;

// отсоединяем объект

Сотр=0;

Замечание. Объект, созданный при помощи функции. СоздатьОбъект, изначально не определен, т. е. не содержит никакого конкретного значения. Чтобы начать с ним работать, его предварительно надо позиционировать (установить на конкретный документ или элемент справочника). Для документов позиционирование выполняется при помощи методов НайтиДокумент, НайтиПоНомеру, ПолучитьДокумент. Для справочников позиционирование выполняется при помощи методов НайтиЭлемент, НайтиПоКоду, ПолучитьЭлемент.

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

Агрегатными типами данных называются следующие типы данных:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Текст — средство работы с текстовыми документами. В программных модулях допускается создавать произвольное число объектов типа Текст при помощи вызова системной функции СоздатьОбъект.

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

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

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

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

Периодический — средство для работы с периодическими реквизитами справочников и периодическими константами. В программных модулях допускается создавать произвольное число объектов типа Периодический при помощи вызова системной функции СоздатьОбъект.

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

XBase — средство для работы с файлами баз данных DBF формата непосредственно из встроенного языка системы 1С:Предприятие. В программных модулях допускается создавать произвольное число объектов типа XBase при помощи вызова системной функции СоздатьОбъект.

Англоязычные синонимы названий агрегатных типов данных

Названия агрегатных типов данных | Англоязычные синонимы
Константа | Const
Справочник | Reference
Перечисление | Enum
Документ | Document
Регистр | Register
ПланСчетов | ChartOfAccounts
Счет | Account
ВидСубконто | SubcontoKind
Операция | Operation
БухгалтерскиеИтоги | BookkeepingTotals
ЖурналРасчетов | CalcJournal
ВидРасчета | CalculationKind
ГруппаРасчетов | CalculationGroup
Календарь | Calendar
Запрос | Query
Текст | Text
Таблица | Table
СписокЗначений | ValueList
ТаблицаЗначений | ValueTable
Картинка | Picture
Периодический | Рег1odic
ФС | FS
XBase | Xbase

Атрибуты агрегатных типов данных

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

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

Если объект агрегатного типа данных входит (согласно контекста) в набор непосредственно доступных модулю значений агрегатных типов данных, то доступ к атрибуту — просто имя этого атрибута.

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

Пример:

*

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

А = Спр.Выбрать("Выберите объект", 0);

//Выбираем наименование и оклад как атрибуты справочника

Сообщить("Выбран сотрудник " + Спр.Наименование);

Сообщить("Оклад - " + Спр.Оклад );

*

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

А = Спр.Выбрать("Выберите объект", 0);

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

Док.Новый();

// Устанавливаем атрибут НомерДок

Док.НомерДок = "777";

// Устанавливаем атрибут ДатаДок

Док.ДатаДок = '14.04.96';

Док.ТипРасчета = ВидРасчета.ДоплатаСуммой;

Методы агрегатных типов данных

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

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

Если объект агрегатного типа данных входит (согласно контекста) в набор непосредственно доступных модулю значений агрегатных типов данных, то вызов метода — просто имя этого метода с указанием необходимых параметров.

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

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

Пример:

Спр = СоздатьОбъект("Справочник.Товары");

А = Спр.Выбрать("Выберите товар", 0);

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

Доку.Новый();                // Вызываем метод

Доку.Склад = 22;

Доку.НомерДок = "777";       // Устанавливаем номер документа

Доку.ДатаДок = '14.04.96';   // Устанавливаем дату документа

Доку.АвтоВремяОтключить();   // Вызываем метод

Доку.УстановитьВремя(17, 30, 00);

Доку.НоваяСтрока();          // Вызываем метод

Доку.Товар = Спр.ТекущийЭлемент();

Доку.Количество = 100;


Part3

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

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

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

Оператор объявления переменной

Перем

Объявление переменной в явном виде.

Синтаксис:

Перем <Имя_переменной> [[<Размерность>]] [Экспорт];

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

Var:

Параметры

<Имя_переменной> | Имя переменной.
[<Размерность>] | Необязательная числовая константа (записывается в квадратных скобках), указывается только в том случае, если объявляется массив и должна представляться в виде положительного целого числа.
Экспорт | Необязательное ключевое слово Экспорт указывает, что данная переменная станет доступна для других модулей. Использование данного ключевого слова имеет смысл только в глобальном программном модуле.

Описание:

Оператор Перем в явном виде объявляет переменную.

Пример:

Перем Очень_Нужная_Переменная;

Перем Массив_Для_Хранения[10];

Область использования переменной

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

· В разделе определения переменных глобального программного модуля. Если переменные определены с ключевым словом Экспорт (см. оператор Перем), то это будут глобальные переменные.

· В разделе определения переменных модуля. Это переменные модуля.

· В процедуре или функции. Это локальные переменные.

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

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

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

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

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


Part4

Глава 4
Выражения и оператор присваивания

Выражения

Выражение — это математическая или логическая формула, по которой вычисляется значение. Математическое выражение может стоять справа от знака равенства в операторах присваивания, быть параметром процедур или функций, индексом массива переменных. Логическое выражение может быть условием в управляющих операторах Если, Пока, Для. Выражения состоят из констант, переменных и функций, связанных символами логических и/или арифметических операций.

Арифметические операции

В языке определены следующие виды арифметических операций:

сложение | (Оп1 + Оп2)
вычитание | (Оп1 - Оп2)
умножение | (Оп1 * Оп2)
деление | (Оп1 / Оп2)
остаток от деления | (Оп1 % Оп2)
унарный минус | (-Оп1)

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

Сложение определено для следующих типов операндов: | Число + Число
 | Дата + Число (к дате прибавляется число дней)
Вычитание определено для следующих типов операндов: | Число – Число
 | Дата – Число (от даты отнимается число дней)
 | Дата – Дата (результатом является число дней между датами)
Умножение: | Число * Число
Деление: | Число / Число
Остаток от деления: | Число % Число

Замечание. При выполнении операции % (остаток от деления) оба операнда операции округляются до целого значения.

Операция конкатенации

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

Пример:

· Для того, чтобы удалить ненужные пробелы, используются системные функции СокрЛ и СокрП.

ФИО = СокрП(Фамилия) + " " + СокрП(Имя) + " " + СокрП(Отчество);

Логические операции

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

Операции сравнения:

В языке определены следующие виды операций сравнения:

больше | (Оп1 > Оп2)
больше или равно | (Оп1 >= Оп2)
равно | (Оп1 = Оп2)
не равно | (Оп1 <> Оп2)
меньше | (Оп1 < Оп2)
меньше или равно | (Оп1 <= Оп2)

Операции сравнения определены для следующих типов операндов:

Больше | Число > Число
 | Строка > Строка
 | Дата > Дата
Больше или равно: | Число >= Число
 | Строка >= Строка
 | Дата >= Дата
Меньше: | Число < Число
 | Строка < Строка
 | Дата < Дата
Меньше или равно: | Число <= Число
 | Строка <= Строка
 | Дата <= Дата
Равно: | Число = Число
 | Строка = Строка
 | Дата = Дата
 | АгрегатныйТип = АгрегатныйТип
Не равно: | Число <> Число
 | Строка <> Строка
 | Дата <> Дата
 | АгрегатныйТип <> АгрегатныйТип

Булевы операции:

В языке определены следующие виды булевых операций:

И или AND | конъюнкция (булево И)
ИЛИ или OR | дизъюнкция (булево ИЛИ)
НЕ или NOT | логическое отрицание (булево отрицание НЕ)

Числовые константы

Константа числового типа представляется в виде:

[‘+’| ‘-’]{‘0’|’1’|’2’|’3’|’4’|’5’|’6’|’7’|’8’|’9’}[.{‘0’|’1’|’2’|’3’|’4’|’5’|’6’|’7’|’8’|’9’}]

Пример:

0   123      -15      +24.11      0.245

Константы даты

Дата задается в формате 'ДД.ММ.ГГ' или 'ДД.ММ.ГГГГ' (дата заключается в одиночные кавычки). Неопределенная дата задается как '00.00.00'.

Пример:

'12.04.95'      '01.01.1996'

Строковые константы

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

Пример:

"Ура заработала"

"Это самая правильная строка"

" "

Кроме того, допускаются «многострочные» строковые константы. В исходном тексте многострочные константы могут задаваться двумя способами:

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

Пример:

Стр = "Первая строка"    // пример строковой константы

"Вторая строка"

"Третья строка";

· Второй вариант: В данном примере значение константы полностью идентично предыдущему примеру. Отличие заключается в том, что каждая отдельная составляющая не замыкается кавычками, а на каждой последующей строке помещен символ переноса строки "|". В этом варианте комментарии между открывающей и закрывающей кавычками не допускаются.

Пример:

Стр = "Первая строка

   |Вторая строка

   |Третья строка";

Строковые выражения

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

Пример:

Стр = СокрП("Фамилия" + ", " + Имя + ", " + " отчество");

Стр1 = "" + Докум.Цена + Валюта.СокрНаим;

Логические выражения

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

Уровни старшинства логических операций:

Уровень 1 | операнды, заключенные в скобки
Уровень 2 | NOT
Уровень 3 | AND
Уровень 4 | OR

Пример:

Стр = "Угадал!";

а = ВвестиСтроку(Стр, "Назови пароль!", 15);

Если (а=1) И ((Стр = "пароль") ИЛИ (Стр = "Пароль")) Тогда

   Сообщить(Стр);

КонецЕсли;

Оператор присваивания

Синтаксис:

<Назначение> = <Источник>;

Параметры:

<Назначение> | В качестве <Назначения> может выступать простая переменная, элемент массива, атрибут агрегатного типа данных (который допускает запись). Элемент массива задается как Имя_массива[Индексное_выражение].
<Источник> | Выражение.

Описание:

Оператор присваивания (символ "=") означает присваивание значения <Источник> переменной, обозначенной как <Назначение>.

Пример:

А = В;

Стр1 = "777";

ДатаДок = '14.04.96';


Part5

Глава 5
Управляющие операторы

Управляющие конструкции

Если

Оператор условного выполнения.

Синтаксис:

Если <Логическое_выражение> Тогда

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

[ИначеЕсли <Логическое_выражение> Тогда]

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

[Иначе]

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

КонецЕсли;

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

If <Логическое_выражение> Then

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

[Elsif <Логическое_выражение> Then]

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

[Else]

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

Endlf;

Параметры:

<Логическое_выражение> | Логическое выражение.
Тогда | Операторы следующие за Тогда выполняются, если результатом логического выражения в конструкции Если является истина.
//операторы | Исполняемый оператор или последовательность таких операторов.
ИначеЕсли | Логическое выражение, следующее за ключевым словом ИначеЕсли вычисляется только тогда, когда условия в Если и всех предшествующих ИначеЕсли оказались ложными. Операторы следующие за конструкцией ИначеЕсли — Тогда выполняются, если результатом логического выражения в данном ИначеЕсли является истина.
Иначе | Операторы, следующие за ключевым словом Иначе выполняются, если результаты логических выражений в конструкции Если и всех предшествующих конструкциях ИначеЕсли оказались ложными.
КонецЕсли | Ключевое слово, которое завершает структуру оператора условного выполнения.

Описание:

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

ИначеЕсли — Тогда.

Пример:

Если (РабочаяДата() > '01.01.95') И (Сег = "Понедельник") Тогда

   Сообщить("Сегодня" + " " + Сег + " " + РабочаяДата());

КонецЕсли;

Пока

Оператор выполнения цикла.

Синтаксис:

Пока <Логическое_выражение> Цикл

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

КонецЦикла;

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

While <Логическое_выражение> Do

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

EndDo;

Параметры:

<Логическое_выражение> | Логическое выражение.
Цикл | Операторы, следующие за ключевым словом Цикл, выполняются, пока результатом логического выражения является истина.
//операторы; | Исполняемый оператор или последовательность таких операторов.
КонецЦикла | Ключевое слово, которое завершает структуру оператора цикла.

Описание:

Оператор цикла Пока предназначен для циклического повторения операторов, находящиеся внутри конструкции Цикл ... КонецЦикла. Цикл выполняется пока логическое выражение — истина. Условие выполнения цикла всегда проверяется вначале, перед выполнением цикла.

Пример:

Док = СоздатьОбъект("Документ.БригадныйНаряд");

// Будем просматривать документы в интервале дат

Док.ВыбратьДокументы('11.01.88', '11.01.99');

// Цикл по всем Документам

Пока (Док.ПолучитьДокумент() = 1) Цикл

   // отобразим Документ в строке состояния

   Состояние(Док.Вид() + " " + Док.НомерДок + " " + Док.ДатаДок);

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

   // вложенный цикл по всем строкам Документа

   Пока(Док.ПолучитьСтроку() > 0) Цикл

      Если Док.КодРабот = 104 Тогда

         Сообщить(" " + Док.НомерДок);

      КонецЕсли;

   КонецЦикла;

КонецЦикла;

Для

Оператор выполнения цикла.

Синтаксис:

Для <Имя_переменной> = <Выражение1> По <Выражение2> Цикл

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

КонецЦикла;

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

For <Имя_переменной> = <Выражение1> То <Выражение2> Do

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

EndDo;

Параметры:

<Имя_переменной> | Идентификатор переменной (счетчика цикла), значение которой автоматически увеличивается при каждом повторении цикла.
<Выражение 1> | Числовое выражение, которое задает начальное значение, присваиваемое счетчику цикла при первом проходе цикла.
По | Синтаксическая связка для параметра <Выражение2>.
<Выражение 2> | Максимальное значение счетчика цикла. Когда переменная Имя_переменной становится больше чем <Выражение2>, выполнение оператора цикла Для прекращается. Величина приращения счетчика при каждом выполнении цикла равна 1.
Цикл | Операторы следующие за ключевым словом Цикл выполняются, пока значение переменной Имя_переменной меньше значения <Выражение2>.
//Операторы | Исполняемый оператор или последовательность таких операторов.
КонецЦикла | Ключевое слово, которое завершает структуру оператора цикла.

Описание:

Оператор цикла Для предназначен для циклического повторения операторов, находящиеся внутри конструкции Цикл ... КонецЦикла. Перед началом выполнения цикла значение <Выражение1> присваивается переменной <Имя_переменной>. Значение <Имя_переменной> автоматически увеличивается при каждом проходе цикла. Цикл выполняется пока значение переменной <Имя_переменной> меньше или равно значению <Выражение2>. Величина приращения счетчика при каждом выполнении цикла равна 1. Условие выполнения цикла всегда проверяется вначале, перед выполнением цикла.

Пример:

// Выведем все строки текста

Выв = СоздатьОбъект("Текст");

Выв.Открыть("ТТТ");

Для i = l по Выв.КоличествоСтрок() Цикл

   Сообщить(Выв.ПолучитьСтроку(i));

КонецЦикла;

Попытка

Обработка исключительных ситуаций.

Синтаксис:

Попытка

   // Некоторые действия;

Исключение

   // Обработка исключительной ситуации;

КонецПопытки;

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

Try

   // Некоторые действия;

Except

   // Обработка исключительной ситуации;

EndTry;

Параметры:

// Некоторые действия | Исполняемый оператор или последовательность таких операторов.
// Обработка исключительной ситуации | Исполняемый оператор или последовательность операторов, которые обрабатывают исключительную ситуацию.
Исключение | Операторы, следующие за ключевым словом Исключение выполняются, если при выполнении последовательности операторов <// Некоторые действия> произошла ошибка времени выполнения.
КонецПопытки | Ключевое слово, которое завершает структуру оператора обработки исключительных ситуаций.

Описание:

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

В качестве ошибочных (исключительных) ситуаций воспринимаются ошибки времени выполнения модуля. Не предусмотрено определяемых пользователем исключений.

Если при выполнении последовательности операторов <// Некоторые действия> произошла ошибка времени выполнения, то выполнение оператора, вызвавшего ошибку прерывается и управление передается на первый оператор последовательности операторов <// Обработка исключительной ситуации>. При этом управление будет передано даже в том случае, если ошибку вызвал оператор, находящийся в процедуре или функции, вызванной из <// Некоторые действия>. Если ошибка произошла в вызванной процедуре или функции, то ее выполнение будет прервано, а локальные переменные уничтожены. Это справедливо для любой вложенности вызовов. После выполнения последовательности операторов <// Обработка исключительной ситуации> управление передается на следующий за ключевым словом КонецПопытки оператор. Если же последовательность <// Некоторые действия> выполнилась без ошибок, то последовательность операторов <// Обработка исключительной ситуации> будет пропущена и управление также будет продолжено с оператора, следующего за ключевым словом КонецПопытки.

Конструкции Попытка-Исключение-КонецПопытки могут быть вложенными. При этом, при возникновении исключительной ситуации управление будет передано на самый «внутренний» обработчик, начинающийся с ключевого слова Исключение. Последовательность операторов <// Обработка исключительной ситуации> может содержать оператор ВызватьИсключение (англоязычный синоним Raise). Выполнение данного оператора прекращает выполнение последовательности <// Обработка исключительной ситуации> и производится поиск более «внешнего» обработчика. Если таковой есть, то управление передается на его первый оператор. Если нет, то выполнение модуля прекращается с выдачей сообщения о первоначально возникшей ошибке. Оператор ВызватьИсключение может встречаться только внутри операторных скобок Исключение ... КонецПопытки.

В выдаче диагностики помощь может оказать встроенная функция ОписаниеОшибки() (англоязычный синоним GetErrorDescription). Эта функция не имеет параметров, а в качестве значения возвращает описание ошибки, такое же, как было бы выдано в окне сообщений, в случае отсутствия обработчика исключительной ситуации, за исключением описания модуля и строки, в которой ошибка возникла. Применять данную функцию имеет смысл только при выполнении последовательности операторов <// Обработка исключительной ситуации>, так как в ином случае она вернет пустую строку.

Пример:

Процедура СформироватьВЕхсеl()

   Попытка

      // пытаемся обратиться к программе MS Excel

      Табл = СоздатьОбъект("Excel.Application");

   Исключение

      Предупреждение(ОписаниеОшибки() +

           "; Excel не установлен на данном компьютере!");

      Возврат;

   КонецПопытки;

   // Формирование отчета

   ...

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

Управляющие операторы

Перейти

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

Синтаксис:

Перейти <Метка>;

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

Goto

Параметры:

<Метка>

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

Описание:

Безусловная передача управления на другой оператор программы. Оператор Перейти передает управление от одного оператора к другому. <Метка> в этом операторе не должна быть меткой перехода на оператор Процедура или Функция.

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

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

Пример:

     // Выведем строки текста

     Выв = СоздатьОбъект("Текст");

     Выв.Открыть("ТТТ");

     Для i = l По Выв.КоличествоСтрок() Цикл

        Если i = 10 Тогда

           Перейти ~М1;

        КонецЕсли;

        Сообщить(Выв.ПолучитьСтроку(i));

        Перейти ~М2;

~М1:    Сообщить("Это десятая строка");

~М2: КонецЦикла;

Продолжить

Передача управления в начало цикла.

Синтаксис:

Продолжить;

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

Continue;

Описание:

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

Пример:

// Выведем строки текста начиная с 5

Выв = СоздатьОбъект("Текст");

Выв.Открыть("ТТТ");

Для i = 1 По Выв.КоличествоСтрок() Цикл

   Если i < 5 Тогда

      Продолжить;

   КонецЕсли;

   Сообщить(Выв.ПолучитьСтроку(i));

КонецЦикла;

Прервать

Прерывает выполнение цикла.

Синтаксис:

Прервать

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

Break

Описание:

Прерывает выполнение цикла. Оператор Прервать приводит к немедленному прекращению выполнения цикла и передает управление первому оператору, следующему за конструкцией оператора Пока или Для. Оператор Прервать может использоваться только внутри конструкций операторов цикла Пока и Для.

Пример:

// Выведем строки текста с 1 по 10

Выв = СоздатьОбъект("Текст");

Выв.Открыть("ТТТ");

Для i = l По Выв.КоличествоСтрок() Цикл

   Сообщить(Выв.ПолучитьСтроку(i));

   Если i=10 Тогда

      Прервать;

   КонецЕсли;

КонецЦикла;

Возврат

Завершение процедуры или функции.

Синтаксис:

Возврат [<Выражение>]

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

Return

Параметры:

<Выражение>

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

Описание:

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

Пример:

Функция ДеньНедели(Номер)

   Если Номер =1 Тогда

      Return "понедельник";

   ИначеЕсли Номер =2 Тогда

      Возврат "вторник";

   ИначеЕсли Номер =3 Тогда

      Возврат "среда";

   ИначеЕсли Номер =4 Тогда

      Возврат "четверг";

   ИначеЕсли Номер =5 Тогда

      Возврат "пятница";

   ИначеЕсли Номер =6 Тогда

      Возврат "суббота";

   ИначеЕсли Номер =7 Тогда

      Возврат "воскресенье";

   Иначе

      Возврат "ошибка";

   КонецЕсли;

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

Специальные конструкции языка

#ЗагрузитьИзФайла

Переключение загрузки программного модуля на загрузку из текстового файла.

Синтаксис:

#ЗагрузитьИзФайла <ИмяФайла>

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

ftLoadFromFile

Параметры:

<ИмяФайла>

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

Описание:

Данная конструкция переключает загрузку программного модуля на загрузку из указанного файла. Специальная конструкция #ЗагрузитьИзФайла должна записываться в первой строке программного модуля с первой позиции. Ее использование рекомендуется для отладки, чтобы быстро отлаживать код какого-либо программного модуля без промежуточного сохранения всей конфигурации. Данная конструкция переключает загрузку программного модуля конфигурации на загрузку из указанного файла. Содержимое программного модуля конфигурации при этом игнорируется.

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

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

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

Замечание: #ЗагрузитьИзФайла является не оператором, а специальной конструкцией, поэтому не должна заканчиваться точкой с запятой.

Пример:

#ЗагрузитьИзФайла NEW_MOD.TXT


Part6

Глава 6
Системные константы

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

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

РазделительСтраниц

Содержит строковое значение перевода страницы текста.

Синтаксис:

РазделительСтраниц

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

PageBreak

Описание:

Системная константа РазделительСтраниц содержит строковое значение перевода страницы текста. Данная системная константа применяется для вставки или поиска в тексте строкового значения перевода страницы текста.

Пример:

Выв=СоздатьОбъект("Текст");

Выв.ДобавитьСтроку("Страница 1");

Выв.ДобавитьСтроку(РазделительСтраниц);

Выв.ДобавитьСтроку("Страница 2");

Выв.Показать();

РазделительСтрок

Содержит строковое значение перевода строки текста.

Синтаксис:

РазделительСтрок

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

LineBreak

Описание:

Системная константа РазделительСтрок содержит строковое значение перевода строки текста. Данная системная константа применяется для вставки или поиска в тексте строкового значения перевода строки текста

Пример:

Выв=СоздатьОбъект("Текст");

Выв.ДобавитьСтроку("Страница 1");

Выв.ДобавитьСтроку(РазделительСтрок);

Выв.ДобавитьСтроку("Страница 2");

Выв.Показать();

СимволТабуляции

Содержит строковое значение символа табуляции.

Синтаксис:

СимволТабуляции

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

TabSymbol

Описание:

Системная константа СимволТабуляции содержит строковое значение символа табуляции. Данная системная константа применяется для вставки или поиска в тексте строкового значения символа табуляции.

Пример:

Выв=СоздатьОбъект("Текст");

Выв.ДобавитьСтроку("Страница 1");

Выв.ДобавитьСтроку(СимволТабуляции);

Выв.ДобавитьСтроку("Страница 2");

Выв.Показать();


Part7

Глава 7
Системные процедуры и функции

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

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

Математические функции

Окр

Округлить число.

Синтаксис:

Окр(<Число1>, [<Число2>], [<Спосо6>])

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

Round

Параметры:

<Число1> | Числовое выражение, значение которого надо округлить.
<Число2> | Необязательный параметр. Числовое выражение, значение которого — формат округления (число знаков дробной части (если <Число2> отрицательно, то округляется до соответствующего количества знаков целой части). Значение этого параметра по умолчанию — 0.
<Способ> | Необязательный параметр. Числовое выражение — способ округления: 0 — если при округлении 1.5 = 1; 1 — если при округлении 1.5 = 2. Значение по умолчанию — 0.

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

Числовое значение результата округления.

Описание:

Функция Окр возвращает числовое значение результата округления <Число1> до <Число2> знаков дробной части (если <Число2> отрицательно, то округляется до соответствующего количества знаков целой части). Параметр <Число2> может быть опущен, при этом принимается, что <Число2> = 0.

Пример:

ОкруглЦена = Окр(ЦЕНА, -2);

Цел

Получить целую часть числа.

Синтаксис:

Цел(<Число>)

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

Int

Параметры:

<Число>

Числовое выражение.

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

Числовое значение целой части переданного в качестве параметра числа.

Описание:

Функция Цел возвращает целую часть переданного в качестве параметра числа, полностью отсекая дробную часть.

Пример:

МожноКупить = Цел(Наличность/Цена);

Мин

Определить минимальное значение.

Синтаксис:

Мин(<Элемент1>, ..., <ЭлементN>)

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

Min

Параметры:

<Элемент1>, ..., <ЭлементN>

Список выражений базовых типов данных.

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

Значение минимального элемента из списка <Элемент1>, ..., <ЭлементN>

Описание:

Функция Мин определяет минимальное значение из списка <Элемент1>, ..., <ЭлементN>.

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

Пример:

МинимЦена = Мин(Цена1, Цена2, ЦенаЗ);

Макс

Определить максимальное значение.

Синтаксис:

Макс(<Элемент1>, ..., <ЭлементN>)

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

Мах

Параметры:

<Элемент1>, ..., <ЭлементN>                Список выражений базовых типов данных.

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

Значение максимального элемента из списка <Элемент1>, ..., <ЭлементN>

Описание:

Функция Макс определяет максимальное значение из списка <Элемент1>, ..., <ЭлементN>.

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

Пример:

МаксимЦена = Макс(Цена1, Цена2, ЦенаЗ);

Лог10

Вычислить десятичный логарифм числа.

Синтаксис:

Лог10(<Число>)

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

Log10

Параметры:

<Число>

Числовое выражение.

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

Числовое значение результата вычисления десятичного логарифма.

Описание:

Функция Лог10 вычисляет и возвращает десятичный логарифм числа. При отрицательном или нулевом значении параметра возвращаемое значение — 0.

Пример:

Шкала = Лог10(Частота);

Лог

Вычислить натуральный логарифм числа.

Синтаксис:

Лог(<Число>)

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

Ln

Параметры:

<Число>

Числовое выражение.

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

Числовое значение результата вычисления натурального логарифма.

Описание:

Функция Лог вычисляет и возвращает натуральный логарифм числа. При отрицательном или нулевом значении параметра возвращаемое значение — 0.

Пример:

Шкала = Лог(Частота);

Строковые функции

СтрДлина

Получить длину строки.

Синтаксис:

СтрДлина(<Строка>)

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

StrLen

Параметры:

<Строка>

Строковое выражение.

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

Числовое значение длины строки.

Описание:

Функция СтрДлина получает в качестве параметра строку и возвращает числовое значение ее длины.

Пример:

Длина = СтрДлина("Измерим длину строки");

ПустаяСтрока

Проверить строку на наличие значащих символов.

Синтаксис:

ПустаяСтрока(<Строка>)

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

IsBlankString

Параметры:

<Строка>

Строковое выражение.

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

Числовое значение. 1 — пустая строка или только пробелы. 0 — не пустая строка.

Описание:

Функция ПустаяСтрока проверяет переданный параметр <Строка> на наличие значащих символов (любых кроме пробелов) и возвращает число 1, если строка пустая или содержит только пробелы, 0 , если строка не пустая.

Пример:

Если ПустаяСтрока(Буфер) = 1 Тогда

   // если Буфер содержит только пробелы, то его удаляем

   Буфер = "";

КонецЕсли;

СокрЛ

Отбросить в строке стоящие слева пробелы.

Синтаксис:

СокрЛ(<Строка>)

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

TrimL

Параметры:

<Строка>

Строковое выражение.

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

Строковое значение.

Описание:

Функция СокрЛ получает в качестве параметра строку, отсекает стоящие слева пробелы и возвращает результирующую строку.

Пример:

СтрЦена = СокрЛ(Цена) + " руб.";

СокрП

Отбросить в строке стоящие справа пробелы.

Синтаксис:

СокрП(<Строка>)

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

TrimR

Параметры:

<Строка>

Строковое выражение.

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

Строковое значение.

Описание:

Функция СокрП получает в качестве параметра строку, отсекает стоящие справа пробелы и возвращает результирующую строку.

Пример:

ФИО = СокрП(Фамилия) + " " + СокрП(Имя) + " " + СокрП(Отчество);

СокрЛП

Отбросить в строке пробелы, стоящие слева и справа.

Синтаксис:

СокрЛП(<Строка>)

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

TrimAll

Параметры:

<Строка>

Строковое выражение.

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

Строковое значение.

Описание:

Функция СокрЛП получает в качестве параметра строку, отсекает стоящие слева и справа пробелы, и возвращает результирующую строку.

Пример:

ФИО = СокрЛП(Фамилия) + " " + СокрП(Имя) + " " + СокрП(Отчество);

Лев

Выбрать в строке символы слева.

Синтаксис:

Лев (<Строка>, <Число>)

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

Left

Параметры:

<Строка> | Строковое выражение.
<Число> | Числовое выражение.

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

Строковое значение.

Описание:

Функция Лев получает в качестве параметра строку, выбирает первые слева символы строки, числом равные <Число>, и возвращает в качестве значения результирующую строку.

Пример:

Фамилия = Лев(ФИО, 15);

Прав

Выбрать в строке символы справа.

Синтаксис:

Прав(<Строка>, <Число>)

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

Right

Параметры:

<Строка> | Строковое выражение.
<Число> | Числовое выражение.

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

Строковое значение.

Описание:

Функция Прав получает в качестве параметра строку, выбирает крайние справа символы строки, числом равные <Число>, и возвращает в качестве значения результирующую строку.

Пример:

Отчество = Прав(ФИО, 15);

Сред

Выбрать подстроку.

Синтаксис:

Сред(<Строка>, <Число1>, <Число2>)

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

Mid

Параметры:

<Строка> | Строковое выражение.
<Число1> | Числовое выражение, начальный номер символа.
<Число2> | Числовое выражение, количество символов.

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

Строковое значение.

Описание:

Функция Сред возвращает подстроку параметра <Строка>, начиная с символа с номером <Число1> общим количеством <Число2>. Позиции в строке считаются, начиная с 1. Параметр <Число2> может быть опущен, тогда выделяются все символы начиная с символа с номером <Число1> до конца строки.

Пример:

Имя = Сред(ФИО, 10, 12);

Найти

Найти вхождение подстроки.

Синтаксис:

Найти(<Строка1>, <Строка2>)

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

Find

Параметры:

<Строка1> | Строковое выражение места поиска.
<Строка2> | Строковое выражение шаблона поиска.

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

Числовое значение позиции первого знака найденной подстроки.

Описание:

Функция Найти находит вхождение строки <Строка2> как подстроки в <Строка1>. Возвращает числовое значение позиции первого знака найденной подстроки (первая позиция имеет индекс 1). Если не находит — возвращает число 0.

Пример:

Симв = Найти(ФИО, "Борис");

СтрЗаменить

Заменить вхождение подстроки другим значением.

Синтаксис:

СтрЗаменить(<СтрИсточник>, <СтрПодстрока>, <СтрЗамены>)

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

StrReplace

Параметры:

<СтрИсточник> | Строковое выражение места поиска.
<СтрПодстрока> | Строковое выражение шаблона поиска.
<СтрЗамены> | Строковое выражение замены.

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

Результирующая строка.

Описание:

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

Пример:

Результат = СтрЗаменить(СтрИсточник, СтрПодстрока, СтрЗамены);

СтрЧислоВхождений

Вычислить число вхождений подстроки.

Синтаксис:

СтрЧислоВхождений(<СтрИсточник>, <СтрПодстрока>)

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

StrCountOccur

Параметры:

<СтрИсточник> | Строковое выражение места поиска.
<СтрПодстрока> | Строковое выражение шаблона поиска.

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

Число вхождений.

Описание:

Функция СтрЧислоВхождений вычисляет число вхождений строки <СтрПодстрока> как подстроки в <СтрИсточник>.

Пример:

Результат = СтрЧислоВхождений(СтрИсточник, СтрПодстрока);

СтрКоличествоСтрок

Определить число строк в многострочном тексте.

Синтаксис:

СтрКоличествоСтрок(<Строка>)

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

StrLineCount

Параметры:

<Строка>

Строковое выражение, в котором строки разделены символами перевода строк.

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

Число строк в многострочном тексте.

Описание:

Функция СтрКоличествоСтрок вычисляет число строк в многострочном тексте (строки разделены символами перевода строк).

Пример:

Рез = СтрКоличествоСтрок(ДлТекст);

См. также: РазделительСтрок

СтрПолучитьСтроку

Получить строку из многострочного текста по номеру.

Синтаксис:

СтрПолучитьСтроку(<Текст>, <НомерСтроки>)

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

StrGetLine

Параметры:

<Текст> | Строковое выражение, в котором строки разделены символами перевода строк.
<НомерСтроки> | Числовое выражение, начальный номер символа.

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

Строковое значение.

Описание:

Функция СтрПолучитьСтроку возвращает строку с номером <НомерСтроки> из многострочного текста <Текст> (строки разделены символами перевода строк).

Пример:

ВтораяСтрока = СтрПолучитьСтроку(ДлТекст, 2);

См. также: РазделительСтрок

Врег

Преобразовать символы строки в верхний регистр.

Синтаксис:

ВРег(<Строка>)

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

UpРег

Параметры:

<Строка>

Строковое выражение.

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

Строковое значение.

Описание:

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

Пример:

Загл = ВРег("маленькие");

Нрег

Преобразовать символы строки в нижний регистр.

Синтаксис:

НРег(<Строка>)

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

Lower

Параметры:

<Строка>

Строковое выражение.

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

Строковое значение.

Описание:

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

Пример:

Загл = НРег("БОЛЬШИЕ");

OemToAnsi

Преобразовать строку в кодировку ANSI.

Синтаксис:

OemToAnsi(<Строка>)

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

OemToAnsi

Параметры:

<Строка>

Строковое выражение.

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

Строковое значение.

Описание:

Функция OemToAnsi используется для перевода строки из DOS-кодировки в Windows-Кодировку. Результирующая строка возвращается в качестве собственного значения. Исходная строка не изменяется.

Пример:

Загл = OemToAnsi(ТекстDOS);

AnsiToOem

Преобразовать строку в кодировку OEM.

Синтаксис:

AnsiToOem(<Строка>)

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

AnsiToOem

Параметры:

<Строка>

Строковое выражение.

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

Строковое значение.

Описание:

Функция AnsiToOem используется для перевода строки из Windows-кодировки в DOS-Кодировку. Результирующая строка возвращается в качестве собственного значения. Исходная строка не изменяется.

Пример:

3aгл = AnsiToOem(TeкстWin);

Симв

Преобразовать код символа в символ.

Синтаксис:

Симв(<КодСимвола>)

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

Chr

Параметры:

<КодСимвола>

Числовое выражение.

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

Строковое значение.

Описание:

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

Пример:

Буква_я = Симв(255);

КодСимв

Преобразовать символ в код символа.

Синтаксис:

КодСимв(<Символ>)

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

Asс

Параметры:

<Символ>

Строковое выражение.

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

Числовое значение.

Описание:

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

Пример:

КодБуквы_я = КодСимв("я");

Функции работы с датой

РабочаяДата

Установить/получить текущую рабочую дату.

Синтаксис:

РабочаяДата(<Дата>, <РежимСменыРабДаты>)

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

WorkingDate

Параметры:

<Дата> | Необязательный параметр. Выражение типа «дата».
<РежимСменыРабДаты> | Необязательный параметр. Режим автоматической смены рабочей даты в полночь: 0 — не менять; 1 — менять с предупреждением; 2 — менять автоматически без предупреждения. Если параметр не указан, то режим не меняется и действует установка, выбранная в параметрах системы.

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

Значение текущей рабочей даты (на момент до выполнения функции).

Описание:

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

Пример:

// оклад сотрудника на текущую рабочую дату

Сотрудник.Оклад.Получить(РабочаяДата());

ТекущаяДата

Возвратить текущую дату.

Синтаксис:

ТекущаяДата()

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

CurDate

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

Результирующая дата.

Описание:

Функция ТекущаяДата возвращает текущую (системную) дату. Возвращаемое значение — результирующая дата.

Пример:

ДатаТекущая = ТекущаяДата();

ДобавитьМесяц

Добавляет к указанной дате заданное число месяцев.

Синтаксис:

ДобавитьМесяц(<Дата>, <ЧислоМесяцев>)

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

AddMonth

Параметры:

<Дата> | Выражение со значением типа «дата».
<ЧислоМесяцев> | Числовое выражение, задающее число месяцев, добавляемое к дате.

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

Результирующая дата.

Описание:

Функция ДобавитьМесяц добавляет к указанной дате заданное число месяцев.

Пример:

ДатаЧерезТриМесяца = ДобавитьМесяц(РабочаяДата(), 3);

НачМесяца

Определить дату начала месяца.

Синтаксис:

НачМесяца(<Дата>)

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

BegOfMonth

Параметры:

<Дата>

Выражение со значением типа «дата».

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

Результирующая дата.

Описание:

Функция НачМесяца определяет дату начала месяца для указанной даты.

Пример:

ДатаНачалаМесяца = НачМесяца(РабочаяДата());

КонМесяца

Определить дату конца месяца.

Синтаксис:

КонМесяца(<Дата>)

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

EndOfMonth

Параметры:

<Дата>

Выражение со значением типа «дата».

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

Результирующая дата.

Описание:

Функция КонМесяца определяет дату конца месяца для указанной даты.

Пример:

ДатаКонцаМесяца = КонМесяца(РабочаяДата());

НачКвартала

Определить дату начала квартала.

Синтаксис:

НачКвартала(<Дата>)

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

BegOfQuart

Параметры:

<Дата>

Выражение со значением типа «дата».

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

Результирующая дата.

Описание:

Функция НачКвартала определяет дату начала квартала для указанной даты.

Пример:

ДатаНачалаКвартала = НачКвартала(РабочаяДата());

КонКвартала

Определить дату конца квартала.

Синтаксис:

КонКвартала(<Дата>)

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

EndOfQuart

Параметры:

<Дата>

Выражение со значением типа «дата».

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

Результирующая дата.

Описание:

Функция КонКвартала определяет дату конца квартала для указанной даты.

Пример:

ДатаКонцаКвартала = КонКвартала(РабочаяДата());

НачГода

Определить дату начала года.

Синтаксис:

НачГода(<Дата>)

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

BegOfYear

Параметры:

<Дата>

Выражение со значением типа «дата».

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

Результирующая дата.

Описание:

Функция НачГода определяет дату начала года для указанной даты.

Пример:

ДатаНачалаГода = НачГода(РабочаяДата());

КонГода

Определить дату конца года.

Синтаксис:

КонГода(<Дата>)

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

EndOfYear

Параметры:

<Дата>

Выражение со значением типа «дата».

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

Результирующая дата.

Описание:

Функция КонГода определяет дату конца года для указанной даты.

Пример:

ПатаКонцаГода = КонГода(РабочаяДата());

НачНедели

Определить дату начала недели.

Синтаксис:

НачНедели(<Дата>)

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

BegOfWeek

Параметры:

<Дата>

Выражение со значением типа «дата».

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

Результирующая дата.

Описание:

Функция НачНедели определяет дату начала недели для указанной даты.

Пример:

ДатаНачалаНедели = НачНедели(РабочаяДата());

КонНедели

Определить дату конца недели.

Синтаксис:

КонНедели(<Дата>)

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

EndOfWeek

Параметры:

<Дата>

Выражение со значением типа «дата».

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

Результирующая дата.

Описание:

Функция КонНедели определяет дату конца недели для указанной даты.

Пример:

ДатаКонцаНедели = КонНедели(РабочаяДата());

ДатаГод

Определить год указанной даты.

Синтаксис:

ДатаГод(<Дата>)

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

GetYear

Параметры:

<Дата>

Выражение со значением типа «дата».

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

Число со значением определенного года.

Описание:

Функция ДатаГод определяет год указанной даты.

Пример:

ЗначениеГода = ДатаГод(РабочаяДата());

ДатаМесяц

Определить месяц указанной даты.

Синтаксис:

ДатаМесяц(<Дата>)

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

GetMonbh

Параметры:

<Дата>

Выражение со значением типа «дата».

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

Число со значением номера месяца года.

Описание:

Функция ДатаМесяц определяет месяц указанной даты.

Пример:

ЗначениеМесяца = ДатаМесяц(РабочаяДата());

ДатаЧисло

Определить день месяца указанной даты.

Синтаксис:

ДатаЧисло(<Дата>)

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

GetDay

Параметры:

<Дата>

Выражение со значением типа «дата».

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

Число со значением определенного дня месяца.

Описание:

Функция ДатаЧисло определяет день месяца указанной даты.

Пример:

ЗначениеДняМесяца = ДатаЧисло(РабочаяДата());

НомерНеделиГода

Определить номер недели в году для указанной даты.

Синтаксис:

НомерНеделиГода(<Дата>)

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

GetWeekOfYear

Параметры:

<Дата>

Выражение со значением типа «дата».

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

Число со значением определенного номера недели в году.

Описание:

Функция НомерНеделиГода определяет номер недели в году для указанной даты.

Пример:

ЗначениеНедели = НомерНеделиГода(РабочаяДата());

НомерДняГода

Определить день года указанной даты.

Синтаксис:

НомерДняГода(<Дата>)

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

GetDayOfYear

Параметры:

<Дата>

Выражение со значением типа «дата».

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

Число со значением определенного дня года.

Описание:

Функция НомерДняГода определяет порядковый день в году для указанной даты.

Пример:

ЗначениеДняГода = НомерДняГода(РабочаяДата());

НомерДняНедели

Определить день недели указанной даты.

Синтаксис:

НомерДняНедели(<Дата>)

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

GetDayOfWeek

Параметры:

<Дата>

Выражение со значением типа «дата».

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

Число со значением определенного порядкового дня недели.

Описание:

Функция НомерДняНедели определяет день недели указанной даты. Возвращаемое значение — число со значением определенного порядкового дня недели (1 — понедельник, 2 — вторник, ..., 7 — воскресенье).

Пример:

ЗначениеДняНедели = НомерДняНедели(РабочаяДата());

ПериодСтр

Строковое представление периода.

Синтаксис:

ПериодСтр(<ДатаНачалаПериода>, <ДатаКонцаПериода>)

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

Рег1odStr

Параметры:

<ДатаНачалаПериода> | Дата — начальная дата периода.
<ДатаКонцаПериода> | Дата — конечная дата периода.

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

Символьная строка — представление периода.

Описание:

Внутри системы все периоды задаются интервалом дат — дата начала и дата конца. Функция ПериодСтр предназначена для того, чтобы в случае, если период фактически является кварталом, месяцем, полугодием отобразить его соответствующим образом, например "1 квартал 1997 г".

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

Пример:

Дата1='01.01.97';

Дата2='31.03.97';

Сообщить(ПериодСтр(Дата1, Дата2));  //Выводит "1 квартал 1997 г."

НачалоСтандартногоИнтервала

Устанавливает вариант задания начала стандартного интервала отображения журнала документов.

Синтаксис:

НачалоСтандартногоИнтервала(<Вариант>)

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

BegOfStandrdRange

Параметры:

<Вариант>

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

"День", "Месяц", "Квартал", "Год", "Day", "Month", "Quarter", "Year". Значением типа «дата» задается конкретная дата начала интервала журнала документов. Если параметр не задан, то установка сделанная в параметрах системы не меняется, а только возвращается текущий вариант.

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

Возвращает текущий установленный вариант.

Описание:

Функция НачалоСтандартногоИнтервала устанавливает вариант зада ния начала стандартного интервала отображения журнала документов. Вариан может изменяться при помощи главного меню Сервис-Параметры-Общие.

Пример:

НачалоСтандартногоИнтервала("Месяц");

КонецСтандартногоИнтервала

Устанавливает вариант задания конца стандартного интервала ото бражения журнала документов.

Синтаксис:

КонецСтандартногоИнтервала(<Вариант>)

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

EndOfStandardRange

Параметры:

<Вариант>

Необязательный параметр. Выражение со значением типа строка или дата. Возможные строковые значения параметра: "День", "Месяц", "Квартал", "Год", "Day", "Month", "Quarter", "Year". Значением типа «дата» задается конкретная дата конца интервала журнала документов. Если параметр не задан, то установка сделанная в параметрах системы не меняется, а только возвращается текущий вариант.

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

Возвращает текущий установленный вариант.

Описание:

Функция КонецСтандартногоИнтервала устанавливает вариант задания конца стандартного интервала отображения журнала документов. Вариант может изменяться при помощи главного меню Сервис-Параметры-Общие.

Пример:

КонецСтандартногоИнтервала("Месяц");

Функции работы с временем

ТекущееВремя

Возвратить текущее время

Синтаксис:

ТекущееВремя(<Час>, <Мин>, <Сек>)

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

CurrentTime

Параметры:

<Час> | Необязательный параметр. Имя переменной, куда система возвращает числовое значение часа текущего времени.
<Мин> | Необязательный параметр. Имя переменной, куда система возвращает числовое значение минут текущего времени.
<Сек> | Необязательный параметр. Имя переменной, куда система возвращает числовое значение секунд текущего времени.

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

Текущее время в текстовом виде.

Описание:

Функция ТекущееВремя возвращает текущее (системное) время в текстовом виде. Кроме того, если в качестве параметров при вызове функции передать переменные, то функция вернет в них числовые значения текущего часа, минуты, секунды.

Пример:

Сообщить("Сейчас " + ТекущееВремя());

Функции преобразования типов

Дата

Преобразовать параметр в дату.

Синтаксис 1:

Дата(<Параметр>)

Синтаксис 2:

Дата(<Год>, <Месяц>, <Число>)

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

Date

Параметры:

<Параметр> | Числовое выражение.
<Год> | Числовое выражение. Год указывается 4-х знач-ным числом (вместе с веком).
<Месяц> | Числовое выражение.
<Число> | Числовое выражение.

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

Значение типа «дата».

Описание:

Функция Дата преобразует значение переданных параметров в дату, руководствуясь принятыми правилами преобразования типов и возвращает значение даты.

Пример:

// преобразование из строки

ДатаРожд = Дата('06.03.1958');

Строка

Преобразовать параметр в строку.

Синтаксис:

Строка(<Параметр>)

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

String

Параметры:

<Параметр>

Выражение.

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

Строковое значение.

Описание:

Функция Строка преобразует параметр в строку, руководствуясь принятыми правилами преобразования типов и возвращает значение строки.

Стр = Строка(ДатаРожд + 1);

Число

Преобразовать параметр в число.

Синтаксис:

Число(<Параметр>)

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

Number

Параметры:

<Параметр>

Выражение.

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

Числовое значение.

Описание:

Функция Число преобразует параметр в число, руководствуясь принятыми правилами преобразования типов и возвращает значение числа.

Пример:

ВР = Число(Вар + Род);

Функции работы с позицией документа

СформироватьПозициюДокумента

Формирует позицию документа согласно переданным параметрам

Синтаксис 1:

СформироватьПозициюДокумента(<Докум>, <ФлагСмещения>)

Синтаксис 2:

СформироватьПозициюДокумента(<Дата>, <Час>, <Мин>, <Сек>, <ФлагКонцаСекунды>)

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

MakeDocPosition

Параметры:

<Докум> | Значение документа (или его позиция), позиция которого определяется.
<ФлагСмещения> | Необязательный параметр. Число: -1 (минус единица) — предыдущая позиция. 1 — следующая позиция. 0 — текущая позиция. Значение по умолчанию — 0. Использование данного параметра позволяет получить предыдущую или последующую позицию от уже имеющейся позиции.
<Дата> | Значение типа «дата», на которую формируется позиция документа.
<Час> | Значение типа «число», которое определяет час, на который формируется позиция документа.
<Мин> | Значение типа «число», которое определяет минуту, на которую формируется позиция документа.
<Сек> | Значение типа «число», которое определяет секунду, на которую формируется позиция документа.
<ФлагКонцаСекунды> | Необязательный параметр. Число: 1 — позиция будет браться от следующей секунды. 0 — позиция от указанной секунды. Значение по умолчанию — 0.

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

Строковое значение — сформированная позиция документа (см. «Позиция документа»).

Описание:

Функция СформироватьПозициюДокумента формирует и возвращает позицию документа согласно переданным параметрам.

Пример:

ПозицияВыбДокум=СформироватьПозициюДокумента(ВыбДокумент);

РазобратьПозициюДокумента

Раскладывает позицию документа на составляющие и возвращает строковое представление позиции документа

Синтаксис:

РазобратьПозициюДокумента(<Позиция>, <Дата>, <Час>, <Мин> , <Сек>, <Документ>)

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

SplitDocPosition

Параметры:

<Позиция> | Строковое значение позиции документа.
<Дата> | Необязательный параметр. Имя переменной, куда система вернет значение даты позиции документа.
<Час> | Необязательный параметр. Имя переменной, куда система вернет числовое значение часа позиции документа.
<Мин> | Необязательный параметр. Имя переменной, куда система вернет числовое значение минуты позиции документа.
<Сек> | Необязательный параметр. Имя переменной, куда система вернет числовое значение секунды позиции документа.
<Документ> | Необязательный параметр. Имя переменной, куда система вернет значение документа данной позиции документа.

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

Представление позиции документа в строковом виде, например: «12.07.98 12:57:14 ПрихНакл 24»

Описание:

Функция РазобратьПозициюДокумента раскладывает позицию документа на составляющие и возвращает строковое представление позиции документа.

Пример:

Позиция = РазобратьПозициюДокумента(ВыбДокумент.ПозицияДокумента());

Процедуры и функции форматирования

Пропись

Задать образец вывода числа прописью.

Синтаксис:

Пропись(<Образец>)

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

Spelling

Параметры:

<Образец>

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

-строковое выражение, задающее имя файла прописи (в поставляемом комплекте файлы прописей имеют расширение .SPL);

- объект типа «СписокЗначений» в котором в специальном формате задан образец прописей.

Если параметр <Образец> пустой или состоит из пробелов, то устанавливается образец прописей по умолчанию (файл 1CV7.spl).

Описание:

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

В параметре <Образец> может быть передана строка, задающая имя файла прописей. Файл прописей представляет собой текстовый файл специальной структуры, в котором находятся образцы прописей чисел, названия денежной единицы, дат, дней недели и т. п. Пример файла прописей можно посмотреть в поставляемом комплекте (файл lCV7.spl).

Ниже приводится фрагмент текста файла прописей, содержащий образец прописи для валюты мужского рода:

{"Speller",

{"Money",

{"Рубль", "Рубля", "Рублей", "Копейка", "Копейки", "Копеек", "М"}},

Ниже приводится фрагмент текста файла, содержащий образец прописи для валюты женского рода (добавляется параметр "F" в описание названия валюты):

{"Speller",

{"Money",

{"условная единица", "Условные единицы", "Условных единиц", "Сотая", "Сотые",

"Сотых", "F"}},

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

Money

Numbers

Date

DateRange

WeekDay

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

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

Действие данной процедуры распространяется только на текущий программный модуль.

Пример:

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

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

   // ...

   Пропись("1cue.spl");  // задаем имя файла прописи

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

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

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

   Пропись("");

   // возвращаем значение прописи по умолчанию

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

Формат

Форматировать переданный параметр.

Синтаксис:

Формат(<Параметр>, <Форматная_строка>)

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

Format

Параметры:

<Параметр> | Выражение.
<Форматная_строка> | Строковое выражение.

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

Строковое значение.

Описание:

Функция Формат форматирует переданный параметр, руководствуясь информацией, содержащейся в параметре <Форматная_строка>. Возвращает сформатированную строку.

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

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

Символы, определяющие тип форматируемых данных:

Ч — число (Англоязычный синоним: N)

С — строка (Англоязычный синоним: S)

Д — дата (Англоязычный синоним: D)

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

Для числовых значений форматная строка должна иметь вид: "Чm.nDT" или "Чm", где т и п— целые числа. Целое положительное число m определяет длину поля в котором будет размещаться строковое представление числа, а целое положительное число n определяет число знаков после десятичной точки. D — представляет собой любой символ (кроме пробела и цифры), которым в сфор-матированной строке целая часть будет отделяться от дробной, а T — символ (также кроме пробела и цифры), которым будут разделяться триады целой части числа. Символы "D" и "Т" являются необязательными.

Если в форматной строке проставить символ "0" (ноль) перед длиной поля, то нулевые значения при выводе будут подавлятся (выводится пустая строка). Пример: "Ч015.2".

Если в форматной строке указано "(0)" перед всеми прочими спецификациями, то все позиции в поле вывода числа, соответствующие незадействованным старшим разрядам будут заполнены символами "0". Например:

Формат(123.15, "Ч(0)10.2") = 0000123.15

Если в форматной строке проставить символ "-" перед длиной поля, то нулевые значения при выводе будут отображаться прочерком. Пример: "4-17.2 ".

В форматной строке для числа можно использовать сдвиг разрядов при выводе. Это позволяет, например, отображать числовое значение в тысячах и т. п. В этом случае форматная строка должна заканчиваться символами ">Х" , где Х — количество сдвигаемых разрядов. Например, форматная строка: "Ч010>3" — означает вывод числа в тысячах (сдвиг на три разряда).

Строковое представление числа всегда является правоустановленным.

Кроме того, возможен вывод денежных величин и просто целых чисел прописью. В этом случае форматная строка должна иметь вид "ЧПДС". Наличие буквы "П" (в английском варианте для аналогичной цели используется буква "S") определяет сам факт вывода числа прописью. Символ "Д" (в английском варианте — "M") обозначает вывод денежной величины и является необязательным. Символ "С" (в английском варианте — "H") также необязателен и означает вывод с копейками.

Для форматирования строк используется следующая форматная строка:

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

Для форматирования даты используется форматная строка вида "Д<ПодстрокаФормата>", где <Подстрока Формата> представляет собой строку, определяющую вид сформатированного представления даты:

DDMMYY (ДДММГГ) | дата в виде ДД.ММ.ГГ
DDMMYYYY (ДДММГГГГ) | дата в виде ДД.ММ.ГГГГ
DDMMMMYYYY (ДДММММГГГГ) | дата в виде ДД месяц прописью ГГГГ
(0)DDMMMMYYYY ((0)ДДММММГГГГ) | этот формат представляет собой вариант предыдущего формата с тем отличием, что число месяца всегда выводится двумя цифрами, т. е. для чисел меньших 10 спереди будет добавлен 0. Например: Формат('01.01.1999', ' 'Д(0)ДДММММГГГГ' ') = 01 Января 1999 г.
MMMMYYYY (ММММГГГГ) | дата в виде месяц прописью ГГГГ
MMMMYY (ММММГГ) | дата в виде месяц прописью ГГ
ММММ (ММММ) | дата в виде месяц прописью
QQQQYYYY (ККККГГГГ) | дата в виде N квартала ГГГГ
QQQQYY (ККККГГ) | дата в виде N квартала ГГ
QQQQ | дата в виде N квартала
YYYYMMDD (ГГГГММДД) | дата в виде ГГГГММДД, то есть дата '10.11.1998' будет представлена как строка "19981110"
WWWW (HHHH) | выводит наименование дня недели, соответствующее указанной дате. Наименования дней недели берутся из файла прописи.

Пример:

ДолгКлиента = Строка(Формат(-Долг(), "Ч12.2")) + " " + Валюта.Сокр_назв;

Шаблон

Сформировать строку по шаблону.

Синтаксис:

Шаблон(<Строка_шаблон>)

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

Template

Параметры:

<Строка_шаблон>

Строковое выражение, содержащее шаблон формирования результирующей строки.

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

Строковое значение.

Описание:

Функция Шаблон возвращает строковое значение, сформированное в соответствии с заданным параметром <Строка_шаблон>, заменив в ней все встроенные выражения, заключенные в квадратные скобки, на их строковые значения.

Строковое значение параметра <Строка_шаблон> обрабатывается следующим образом: символы "[" , "]" (квадратные скобки) являются специальными символами, которые выделяют поля, содержащие встроенные выражения. Например:

Имя клиента [Имя], телефон: [Телефон]

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

Пример:

Стр = Шаблон("Это название услуги: [Услуга.Наименование]");

//   выдает: "Это название услуги: Вывоз мусора"

ФиксШаблон

Сформировать строку по фиксированному шаблону.

Синтаксис:

ФиксШаблон(<Строка_шаблон>)

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

FixTemplate

Параметры:

<Строка_шаблон>

Строковое выражение, содержащее шаблон формирования результирующей строки.

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

Строковое значение.

Описание:

Функция ФиксШаблон возвращает строковое значение, сформированное в соответствии с заданным параметром <Строка_шаблон>, заменив в ней все встроенные выражения, заключенные в квадратные скобки, на их значения. В отличие от функции Шаблон, поля замещаются значениями выражений с сохранением своей длины в символах, то есть обрезаются, если поле короче результата вычисления выражения и дополняются пробелами если длиннее. Если результат числовой, то в границах поля строка прижимается к правой границе.

Строковое значение параметра <Строка_шаблон> обрабатывается следующим образом: символы "[" , "]" (квадратные скобки) являются специальными символами, которые выделяют поля, содержащие встроенные выражения. Выделенные поля фиксируют свою длину с учетом ограничивающих скобок. Например:

Имя Клиента [Имя], телефон: [Телефон]

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

Пример:

// ниже - пример с дополнением пробелами

Стр = Шаблон("Это название услуги [Услуга.Наименование       ]");

//   выдает: "Это название услуги Вывоз мусора                "

// далее - с сокращением строки

Стр = Шаблон("Это название услуги [Услуга.Наименование]");

//   выдает: "Это название услуги Выполенние формирован"

Функции для вызова диалога ввода данных

ВвестиЗначение

Вызов диалога для ввода значения заданного типа.

Синтаксис:

ВвестиЗначение(<3начение>, <Подсказка>, <Тип>, <Длина>, <Точность>)

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

InputValue

Параметры:

<3начение> | Имя переменной, ранее объявленной в программном модуле. В эту переменную будет помещено введенное значение.
<Подсказка> | Текст заголовка окна диалога ввода. Может использоваться в качестве подсказки конечному пользователю.
<Тип> | Строковое выражение — название типа данных, которое требуется ввести. Например: "Строка", "Число", "Справочник.Товары", "Документ . РасходнаяНакладная" и т. п.
<Длина> | Необязательный параметр. Длина вводимого значения (для типов данных «Строка», «Число»).
<Точность> | Необязательный параметр. Количество знаков после десятичной точки (для типа данных «Число»).

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

Числовое значение: 1 — если в диалоге нажата кнопка «ОК»; 0 — если нажата кнопка «Отмена»;

Описание:

Функция ВвестиЗначение выполняет вызов диалога для ввода значения заданного типа.

Пример:

Если ВвестиЗначение(Ном, "Введите номер приказа", "Число", 5, 0) = 1 Тогда

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

   ВыбДок.НайтиПоНомеру(Строка(Ном), Дата(0));

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

      // . . .

   ИначеЕсли;

      // . . .

   КонецЕсли;

КонецЕсли;

ВвестиЧисло

Вызов диалога для ввода числа.

Синтаксис:

ВвестиЧисло(<Число>, <Подсказка>, <Длина>, <Точность> , <Таймаут>)

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

InputNumeric

Параметры:

<Число> | Имя переменной, ранее объявленной в программном модуле. В эту переменную будет помещено введенное значение числа.
<Подсказка> | Текст заголовка окна диалога ввода. Может использоваться в качестве подсказки конечному пользователю.
<Длина> | Длина вводимого числа.
<Точность> | Количество знаков после десятичной точки.
<Таймаут> | Необязательный параметр. Числовое выражение интервала времени ожидания ответа в секундах, в течение которого система будет ожидать ответа пользователя. Если данный параметр опущен или равен 0, то время ожидания бесконечно. Значение по умолчанию — 0.

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

Числовое значение: 1 — если в диалоге нажата кнопка «ОК»; 0 — если нажата кнопка «Отмена»; -1 (минус единица) — если закончилось время ожидания ответа.

Описание:

Функция ВвестиЧисло выполняет вызов диалога для ввода числа.

Пример:

Если ВвестиЧисло(Ном, "Введите номер приказа", 5, 0, 10) = 1 Тогда

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

   ВыбДок.НайтиПоНомеру(Строка(Ном), Дата(0));

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

      // . . .

   ИначеЕсли;

      // . . .

   КонецЕсли;

КонецЕсли;

ВвестиСтроку

Вызов диалога для ввода строки.

Синтаксис:

ВвестиСтроку(<Строка>, <Подсказка>, <ДлинаСтроки>, <Признак>, <Таймаут>)

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

InputString

Параметры:

<Строка> | Имя переменной, ранее объявленной в программном модуле. В эту переменную будет помещено введенное строковое значение.
<Подсказка> | Текст заголовка окна диалога ввода. Может использоваться в качестве подсказки конечному пользователю.
<ДлинаСтроки> | Числовое выражение — длина строки.
<Признак> | Необязательный параметр. Числовое выражение, если 0 — ввод простой строки без разделителей строк, если 1 — ввод многострочного текста с разделителями строк. Значение по умолчанию — 0.
<Таймаут> | Необязательный параметр. Числовое выражение интервала времени ожидания ответа в секундах, в течение которого система будет ожидать ответа пользователя. Если данный параметр опущен или равен 0, то время ожидания бесконечно. Значение по умолчанию — 0.

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

Числовое значение: 1 — если в диалоге нажата кнопка «ОК», 0 — если нажата кнопка «Отмена»; -1 (минус единица) — если закончилось время ожидания ответа.

Описание:

Функция ВвестиСтроку выполняет вызов диалога для ввода строки.

Пример:

Процедура ВводКодовПродукции()

   Если Продукция.Вид = Перечисление.ВидПродукции.Наша Тогда

      НК = Код;

      Если ВвестиСтроку(НК, "Введите код продукции", 40, 1, 9) = 1 Тогда

         Koд = HK;

      КонецЕсли;

   Иначе

      Код = "";

      Возврат;

   КонецЕсли;

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

ВвестиДату

Вызов диалога для ввода даты.

Синтаксис:

ВвестиДату(<Дата>, <Подсказка>, <Таймаут>)

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

InputDate

Параметры:

<Дата> | Имя переменной, ранее объявленной в программном модуле. В эту переменную будет помещено введенное значение даты.
<Подсказка> | Текст заголовка окна диалога ввода. Может использоваться в качестве подсказки конечному пользователю.
<Таимаут> | Необязательный параметр. Числовое выражение интервала времени ожидания ответа в секундах, в течение которого система будет ожидать ответа пользователя. Если данный параметр опущен или равен 0, то время ожидания бесконечно. Значение по умолчанию — 0.

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

Числовое значение: 1 — если в диалоге нажата кнопка «ОК»; 0 — если нажата кнопка «Отмена»; -1 (минус единица) — если закончилось время ожидания ответа.

Описание:

Функция ВвестиДату выполняет вызов диалога для ввода даты.

Пример:

Процедура ВводДатыСсуды()

   Если ВидРасчета = ВидРасчета.БеспроцентнаяСсуда Тогда

      ДатаСсуды = Дата(0);

      Возврат;

   КонецЕсли;

   Если ДатаСсуды = Дата(0) Тогда

      ДатаСсуды = ДатаДок + 30;

   КонецЕсли;

   Д = ДатаСсуды;

   Если ВвестиДату(Д, "Введите дату ссуды") = 1 Тогда

      ДатаСсуды = Д;

   Иначе

      ВидРасчета = ВидРасчета.БеспроцентнаяСсуда;

   КонецЕсли;

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

ВвестиПериод

Ввод периода в виде диалога.

Синтаксис:

ВвестиПериод(<НачалоПериода>, <КонецПериода>, <Подсказка>)

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

InputРег1od

Параметры:

<НачалоПериода> | Идентификатор переменной, в которую функция возвращает дату начала периода.
<КонецПериода> | Идентификатор переменной, в которую функция возвращает дату конца периода.
<Подсказка> | Необязательный параметр. Строковое выражение, содержащее строку, которая будет выводиться в заголовке окна диалога. Если не указано — стандартная подсказка.

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

Числовое значение: 1 — выбор осуществлен , 0 — выбор не осуществлен (пользователем нажата кнопка «Отмена», клавиша <Esc> или закрыто окно диалога).

Описание:

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

Пример:

Дата1 = '01.01.97';

Дата2 = '31.03.97';

Если ВвестиПериод(Дата1, Дата2, "Введите период отчета") <> 1 Тогда

   Возврат 0;

КонецЕсли;

ВвестиПеречисление

Вызов диалога для ввода перечисления.

Синтаксис:

ВвестиПеречисление(<3начение>, <Подсказка>, <Таймаут>)

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

InputEnum

Параметры:

<3начение> | Имя переменной, ранее объявленной в программном модуле. Переменная должна содержать значение типа «Перечисление» или строковое значение. Если тип передаваемого в качестве параметра значения — перечисление, то вызывается диалог со списком заданного вида перечисления. Если тип передаваемого в качестве параметра значения — строка, то в ней должен быть идентификатор требуемого вида перечисления, как он задан в конфигураторе. В эту же переменную будет помещено выбранное в диалоге значение перечисления.
<Подсказка> | Текст заголовка окна диалога ввода. Может использоваться в качестве подсказки конечному пользователю.
<Таймаут> | Необязательный параметр. Числовое выражение интервала времени ожидания ответа в секундах, в течение которого система будет ожидать ответа пользователя. Если данный параметр опущен или равен 0, то время ожидания бесконечно. Значение по умолчанию — 0.

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

Числовое значение: 1 — если в диалоге нажата кнопка «ОК», 0 — если нажата кнопка «Отмена»; -1 (минус единица) — если закончилось время ожидания ответа.

Описание:

Функция ВвестиПеречисление выполняет вызов диалога для ввода перечисления.

Пример:

*

Процедура УстПризнак1()

   ВыбПризн = Перечисление.ТипСотрудника.Штатный;

   Если ВвестиПеречисление(ВыбПризн, "Выберите тип") > 0 Тогда

      Тип = ВыбПризн;

   Иначе

      Тип = Перечисление.ТипСотрудника.Штатный;

   КонецЕсли;

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

*

Процедура УстПризнак2()

   ВыбПризн = "ТипСотрудника";

   Если ВвестиПеречисление(ВыбПризн, "Выберите тип") > 0 Тогда

      Тип = ВыбПризн;

   Иначе

      Тип = Перечисление.ТипСотрудника.Штатный;

   КонецЕсли;

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

Процедуры и функции общего назначения

Вопрос

Вывести окно вопроса.

Синтаксис:

Вопрос(<Текст_вопроса>, <Режим>, <Таймаут>)

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

DoQueryBox

Параметры:

<Текст_вопроса> | Строковое выражение текста вопроса.
<Режим> | Числовое или строковое выражение, определяющее режим вывода окна вопроса.
<Таймаут> | Необязательный параметр. Числовое выражение интервала времени ожидания ответа в секундах, в течение которого система будет ожидать ответа пользователя. Если данный параметр опущен или равен 0, то время ожидания бесконечно. Значение по умолчанию — 0.

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

Если параметр <Режим> задан числовым значением, то функция возвращает числовое значение:

-1 | Закончилось время ожидания ответа.
1 | Выбрана кнопка «ОК».
2 | Выбрана кнопка «Отмена».
3 | Выбрана кнопка «Стоп».
4 | Выбрана кнопка «Повтор».
5 | Выбрана кнопка «Пропустить».
6 | Выбрана кнопка «Да».
7 | Выбрана кнопка «Нет».

Если параметр <Режим> задан строковым значением, то функция возвращает строковое значение. Язык для возврата такой же, какой использован в пара-метре <Режим>.

Русск. яз. | Англ.яз. | Описание
Таймаут | Timeout | Закончилось время ожидания ответа.
ОК | ОК | Выбрана кнопка «ОК».
Отмена | Cancel | Выбрана кнопка «Отмена».
Стоп | Abort | Выбрана кнопка «Стоп».
Повтор | Retry | Выбрана кнопка «Повтор».
Пропустить | Ignore | Выбрана кнопка «Пропустить».
Да | Yes | Выбрана кнопка «Да».
Нет | No | Выбрана кнопка «Нет».

Описание:

Функция Вопрос выводит на экран окно вопроса. Текст определяется параметром <Текст_вопроса>. Параметр <Режим> определяет варианты возможных ответов.

Если параметр <Режим> задан числовым значением, то возможные варианты передаваемого параметра:

0 | Кнопка «ОК».
1 | Кнопки «ОК» и «Отмена».
2 | Кнопки «Стоп», «Повтор», «Пропустить».
3 | Кнопки «Да», «Нет», «Отмена».
4 | Кнопки «Да», «Нет».
5 | Кнопки «Повтор», «Отмена».

Любое другое числовое значение параметра <Режим> эквивалентно значению 0 (кнопка «ОК»), равно как и отсутствие указанного параметра.

Если параметр <Режим> задан строковым значением, то возможные варианты передаваемого параметра:

Русскоязычное написание | Англоязычное написание
ОК | ОК
ОК+Отмена | OK+Cancel
Стоп+Повтор+Пропустить | Abort+Retry+Ignore
Да+Нет+Отмена | Yes+No+Cancel
Да+Нет | Yes+No
Повтор+Отмена | Retry+Cancel

Пример:

Рез = Вопрос("Вы получили данное сообщение?", 4);

Если Вопрос("Все нормально?", "Да+Нет") = "Да" Тогда

   //  . . .

КонецЕсли;

Предупреждение

Вывести окно предупреждения.

Синтаксис:

Предупреждение(<Текст_сообщения>, <Таймаут>)

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

DoMessageBox

Параметры:

<Текст_сообщения> | Строковое выражение.
<Таймаут> | Необязательный параметр. Числовое выражение интервала времени ожидания в секундах, в течение которого система будет ждать ответа пользователя. Если данный параметр опущен или равен 0, то время ожидания бесконечно. Значение по умолчанию — 0.

Описание:

Процедура Предупреждение выводит на экран окно предупреждения (MessageBox). Текст определяется параметром <Текст_сообщения>. По поведению данная процедура эквивалентна функции:

Вопрос(<Текст_сообщения>, 0, <Таймаут>), но не возвращает значения.

Если закончилось время ожидания ответа, то окно предупреждения автоматически удаляется с экрана.

Пример:

// Выводим сообщение 5 секунд

Предупреждение("Доброе утро!", 5);

Сообщить

Вывести строку в окно сообщений.

Синтаксис:

Сообщить(<Текст_сообщения>, <ИмиджМаркера>)

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

Message

Параметры:

<Текст_сообщения> | Строковое выражение.
<ИмиджМаркера> | Необязательный параметр. Строковое выражение, которое задает тип пиктограммы выводимой перед сообщением. Возможные значения: "I", "!", "!!", "!!!", "." — обычное сообщение, " " — без маркера.

Описание:

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

Пример:

Сообщить("Доброе утро!", "I");

ОчиститьОкноСообщений

Очистить окно сообщений.

Синтаксис:

ОчиститьОкноСообщений()

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

ClearMessageWindow

Описание:

Процедура ОчиститьОкноСообщений очищает окно сообщений.

Пример:

ОчиститьОкноСообщений();

Состояние

Вывести сообщение в строку состояния.

Синтаксис:

Состояние(Текст_сообщения)

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

Status

Параметры:

<Текст_сообщения>

Строковое выражение.

Описание:

Процедура Состояние выводит строку текста в строку состояния (статус-бар). Текст определяется параметром <Текст_сообщения>.

Пример:

Состояние("Доброе утро!")

? (вычислить выражение по условию)

Вычислить выражение по условию.

Синтаксис:

?(<Логич_выраж>, <Выраж1>, <Выраж2>)

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

?

Параметры:

<Логич_выраж> | Логическое выражение.
<Выраж1> | Выражение.
<Выраж2> | Выражение.

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

Результирующее значение.

Описание:

Функция ? вычисляет значение <Логич_выраж> и если его значение — истина, то возвращает вычисленное значение <Выраж1>. Если значение <Логич_выраж> — ложь, то возвращает вычисленное значение <Выраж2>.

Пример:

Спр.ВыбратьЭлементы();

Пока (Спр.ПолучитьЭлемент() > 0) Цикл

   Состояние(Спр.Наименование);

   Сообщить(Спр.Наименование);

   Sec = ?(Спр.ЭтоГруппа = 1, "Folder", "DL");

   Таб.ВывестиСекцию(Sес + "-V1");

   Таб.ПрисоединитьСекцию(Sec + "-V3");

КонецЦикла;

Сигнал

Вывести звуковой сигнал.

Синтаксис:

Сигнал()

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

Веер

Описание:

Процедура Сигнал издает короткий звуковой сигнал.

Пример:

Сигнал();

Разм

Определить размерность массива.

Синтаксис:

Разм(<Имя_массива>)

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

Dim

Параметры:

<Имя_массива>

Идентификатор массива.

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

Числовое значение размерности массива.

Описание:

Функция Разм возвращает числовое значение размерности массива переданного в качестве параметра.

Пример:

Перем Массив_для_хранения[10];

Размер = Разм(Массив_для_хранения);

Функции среды исполнения

ЗаголовокСистемы

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

Синтаксис:

ЗаголовокСистемы(<3аголовок>)

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

SystemCaption

Параметры:

<Заголовок>

Строковое выражение.

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

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

Описание:

Метод ЗаголовокСистемы позволяет получить/установить заголовок окна программы.

Пример:

ЗаголовокСистемы("Оптово-розничная конфигурация")

ИмяКомпьютера

Получить сетевое имя компьютера.

Синтаксис:

ИмяКомпьютера()

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

ComputerName

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

Строковое значение — сетевое имя компьютера, работающего в данный момент с программой.

Описание:

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

Пример:

Компьютер = ИмяКомпьютера();

ИмяПользователя

Получить имя пользователя.

Синтаксис:

ИмяПользователя()

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

UserName

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

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

Описание:

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

Пример:

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

Спр.НайтиПоКоду(ИмяПользователя());

Менеджер = Спр.ТекущийЭлемент();

Если Менеджер.Выбран() = 0 Тогда

   Предупреждение("Не выбран менеджер!");

КонецЕсли;

ПолноеИмяПользователя

Получить полное имя пользователя.

Синтаксис:

ПолноеИмяПользователя()

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

UserFullName

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

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

Описание:

Функция ПолноеИмяПользователя возвращает полное имя пользователя, указанное в конфигураторе при авторизации доступа.

Пример:

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

Спр.НайтиПоНаименованию(ПолноеИмяПользователя());

Менеджер = Спр.ТекущийЭлемент();

Если Менеджер.Выбран() = 0 Тогда

   Предупреждение("Не выбран менеджер!");

КонецЕсли;

НазваниеНабораПрав

Получить название набора прав пользователя.

Синтаксис:

НазваниеНабораПрав(<ВыдИспНабПрав>)

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

RightName

Параметры:

<ВыдИспНабПрав>

Выдавать используемый набор прав или нет. Необязательный параметр. Число: 0 — выдает установленный пользователю набор прав; 1 — выдает пустую строку, если пользователю набор прав назначен, но установлен режим отключения контроля набора прав. Значение по умолчанию — 0.

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

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

Описание:

Функция НазваниеНабораПрав возвращает название набора прав, заданное пользователю в конфигураторе.

Пример:

МоиПрава = НазваниеНабораПрав();

ПравоДоступа

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

Синтаксис:

ПравоДоступа(<НазваниеПрава>, <Объект>)

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

AccessRight

Параметры:

<НазваниеПрава> | Строка с названием права доступа, как оно выводится в конфигурации (без пробелов).
<Объект> | Строка с наименованием типа и вида объекта (записывается через точку). Для глобальных прав этот параметр не указывается. Для объектов, у которых нет вида, записывается только тип объекта, например, «Операция».

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

Число: 1 — если право доступа есть, иначе 0.

Описание:

Функция ПравоДоступа проверяет для текущего пользователя наличие права доступа для заданного объекта.

Пример:

Доступ = ПравоДоступа("Чтение", "Документ.Счет");

Доступ1 = ПравоДоступа("МонопольныйРежим");

НазваниеИнтерфейса

Получить название интерфейса пользователя.

Синтаксис:

НазваниеИнтерфейса()

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

UserInterfaceName

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

Строковое значение, содержащее название интерфейса пользователя.

Описание:

Функция НазваниеИнтерфейса возвращает название интерфейса, заданное пользователю в конфигураторе.

Пример:

МойИнтерфейс = НазваниеИнтерфейса();

КаталогПользователя

Получить каталог пользователя.

Синтаксис:

КаталогПользователя()

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

UserDir

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

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

Описание:

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

Пример:

МояДиректория = КаталогПользователя();

КаталогИБ

Получить каталог базы данных.

Синтаксис:

КаталогИБ()

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

IBDir

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

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

Описание:

Функция КаталогИБ возвращает имя каталога базы данных.

Пример:

МояБД = КаталогИБ();

КаталогПрограммы

Получить каталог программы.

Синтаксис:

КаталогПрограммы()

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

BinDir

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

Строковое значение, содержащее имя каталога программы.

Описание:

Функция КаталогПрограммы возвращает имя каталога, где размещены исполняемые файлы системы 1С:Предприятие.

Пример:

МояДирПрог = КаталогПрограммы();

КаталогВременныхФайлов

Получить каталог временных файлов.

Синтаксис:

КаталогВременныхФайлов()

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

TempFilesDir

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

Строковое значение, содержащее имя каталога временных файлов.

Описание:

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

Пример:

МояВремДир = КаталогВременныхФайлов();

МонопольныйРежим

Определение режима работы программы.

Синтаксис:

МонопольныйРежим()

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

ExclusiveMode

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

Число 1 — если программа запущена в монопольном режиме;

Число 0 — если программа запущена в сетевом режиме.

Описание:

Функция МонопольныйРежим возвращает число 1 — если программа запущена в монопольном режиме и 0 если нет.

Пример:

Процедура Загрузка()

   Если МонопольныйРежим() > 0 Тогда

      ЗагрузитьНаряды();

   Иначе

      Предупреждение("Для запуска этой операции требуется" +

                     "монопольный режим доступа !!!");

   КонецЕсли;

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

ОсновнойЯзык

Определение основного языка конфигурации.

Синтаксис:

ОсновнойЯзык()

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

GeneralLanguage

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

Число 1 — если основной язык конфигурации — русский;

Число 0 — если основной язык конфигурации — английский.

Описание:

При помощи функции ОсновнойЯзык можно прочитать текущее значение основного языка конфигурации.

Замечание: Значение основного языка конфигурации задается в конфигураторе (Метаданные-Глобалъный_модуль-Свойство-Задача-Основной язык).

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

Пример:

*

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

Процедура ПриЗаписиИстории(ИмяОбъекта, Объект, Значение, ДатаИстории)

   Если ОсновнойЯзык() = 1 Тогда

      СПР = "Справочник";

   Иначе

      СПР = "Reference";

   КонецЕсли;

   Если ИмяОбъекта = СПР + ".Валюты.Текущ_курс" Тогда

      Сообщить("Добавлено новое значение курса");

      Сообщить("Для валюты " + Объект.Наименование);

      Сообщить("На дату " + ДатаИстории);

      Сообщить("Установлено значение " + Значение);

   КонецЕсли;

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

См. также: ПриУдаленииИстории, ПриЗаписиИстории

Процедуры работы с транзакциями

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

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

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

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

Замечание. В Модуле документа (при проведении документов) в предопределенных процедурах ОбработкаПроведения и ОбработкаУдаленияПроведения система сама по умолчанию выполняет все действия через транзакцию, поэтому никаких специальных действий в этих предопределенных процедурах предпринимать не нужно.

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

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

НачатьТранзакцию

Открыть обработку транзакции.

Синтаксис:

НачатьТранзакцию()

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

BeginTransaction

Описание:

Процедура НачатьТранзакцию открывает транзакцию для обработки информации.

Пример:

Процедура УдалитьПустые()

   Спр = СоздатьОбъект("Справочник.Подразделения");

   Спр.ВыбратьЭлементы();

   НачатьТранзакцию();

   Пока Спр.ПолучитьЭлемент() = 1 Тогда

      Если Спр.Количество = 0 Тогда

         Спр.Удалить();

      КонецЕсли;

   КонецПока;

   ЗафиксироватьТранзакцию();

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

ЗафиксироватьТранзакцию

Завершить успешную транзакцию.

Синтаксис:

ЗафиксироватьТранзакцию()

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

CoinmitTransation

Описание:

Процедура ЗафиксироватьТранзакцию завершает успешную транзакцию.

Пример:

Процедура УдалитьПустые()

   Спр = СоздатьОбъект("Справочник.Подразделения");

   Спр.ВыбратьЭлементы();

   НачатьТранзакцию();

   Пока Спр.ПолучитьЭлемент() = 1 Тогда

      Если Спр.Количество = 0 Тогда

         Спр.Удалить();

      КонецЕсли;

   КонецПока;

   ЗафиксироватьТранзакцию();

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

ОтменитьТранзакцию

Завершить транзакцию без записи изменений.

Синтаксис:

ОтменитьТранзакцию()

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

RollBackTransaction

Описание:

Процедура ОтменитьТранзакцию завершает транзакцию без записи изменений.

Пример:

*

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

Процедура ЗагрузкаКурсовВалют()

   Влт = СоздатьОбъект("Справочник.Валюты");

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

   Текст.Открыть(ИмяФайла);

   Если Текст.КоличествоСтрок() = 0 Тогда

      Сообщить("Текст пустой!");

      Возврат;

   КонецЕсли;

   Успешно = 1;

   НачатьТранзакцию();

   Для Ном = 1 по Текст.КоличествоСтрок() Цикл

      Стр = Текст.ПолучитьСтроку(Ном);

      Если СтрДлина(Стр) = 0 Тогда

         Продолжить;

      КонецЕсли;

      Поле=0;

      Пока СтрДлина(Стр) > 0 Цикл

         Поле = Поле + 1;

         Инд = Найти(Стр, "-");

         Если Инд > 0 Тогда

            Если Инд > 3 Тогда

               Стр1 = Сред(Стр, 2, Инд-3);

               // не берем кавычки спереди и сзади, и символ тильды.

            Иначе

               // если значение поля пропущено

               Стр1 = "";

            КонецЕсли;

            Стр=Сред(Стр, Инд + 1);

            // не берем символ тильды

         Иначе

            Стр = Сред(Стр, 2);

            Инд = Найти(Стр, """");

            Стр1 = Сред(Стр, 1, Инд-1);

           Стр = "";

         КонецЕсли;

         Если Поле = 1 Тогда

            Код = Стр1;

         ИначеЕсли Поле = 2 Тогда

            Курс = Стр1;

         ИначеЕсли Поле = 3 Тогда

            ДатаКурса = Стр1;

         КонецЕсли;

      КонецЦикла;

      Влт.ИспользоватьДату(Дата(ДатаКурса));

      Влт.НайтиПоКоду(Код);

      Если Влт.Выбран() > 0 Тогда

         Сообщить(Формат(Ном, "45") + " - загрузка Курса="

              + Формат(Курс, "45") + " от " + ДатаКурса);

         Влт.Текущ_курс = Число(Курс);

         Влт.Записать();

         Сообщить("    – Загружен!");

      Иначе

         Успешно = 0;

         Сообщить("В базе данных нет валюты с кодом " + Код");

         Сообщить("Импорт данных отменён!");

         Прервать;

      КонецЕсли;

      Состояние("Загружено "+Ном+" строк.");

   КонецЦикла;

   Если Успешно = 1 Тогда

      ЗафиксироватьТранзакцию();

   Иначе

      ОтменитьТранзакцию();

   КонецЕсли;

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

Специальные процедуры и функции

СоздатьОбъект

Создает объект агрегатного типа данных и возвращает ссылку на него.

Синтаксис:

СоздатъО6ъект(<ИмяАгрегатногоТипа>)

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

CreateObject

Параметры:

<ИмяАгрегатногоТипа>

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

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

Ссылка на созданный объект агрегатного типа данных.

Описание:

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

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

Пример:

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

Спр.НайтиПоКоду("029");

СтатусВозврата

Установить/определить статуса возврата предопределенной процедуры.

Синтаксис:

СтатусВозврата([<Статус>])

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

ReturnStatus

Параметры:

<Статус>

Необязательный параметр. Числовое выражение. Если задано значение 1, то устанавливается статус возврата — Выполнить Действие. Если задано значение 0, то устанавливается статус возврата — Отменить Действие. Если параметр опущен, то статус возврата предопределенной процедуры не меняется.

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

Число 1 — если статус возврата — Выполнить Действие;

Число 0 — если статус возврата — Отменить Действие.

Описание:

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

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

Замечание: Начальное значение статуса возврата предопределенной процедуры равно 1 (Выполнить Действие), которое устанавливается системой при вызове предопределенной процедуры.

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

Если параметр <Статус> задан явно, то после выполнения данной функции статус возврата установится в заданное значение. Пример:

* Если в предопределенной процедуре ПриЗаписи установить статус возврата — 0 (например, если неверно заполнены реквизиты), то документ не будет записываться.

Процедура ПриЗаписи()

   Если Клиент.Выбран() = 0 Тогда

      Предупреждение("Запись отменена! Не задан клиент!");

      СтатусВозврата(0);

   КонецЕсли;

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

* Если в предопределенной процедуре ВводНаОсновании установить статус возврата — 0, то ввод нового документа будет отменен и форма нового документа не откроется.

Процедура ВводНаОсновании(ДокОснование)

   Автор = Пользователь;

   ДокВид = ДокОснование.Вид();

   Если (ДокВид = "Счет") ИЛИ (ДокВид = "Счет_фактура")

        ИЛИ (ДокВид = "РасходнаяКредит") ИЛИ (ДокВид = РасходнаяРеализ") Тогда

      Автор = Пользователь;

      ДокВид = ДокОснование.Вид();

      Фирма = ДокОснование.Фирма;

      Клиент = ДокОснование.Клиент;

      Основание = ДокВид + " № " + ДокОснование.НомерДок;

      Сумма = ДокОснование.Итог("Сумма");

      НДС = ДокОснование.Итог("НДС");

   Иначе

      Предупреждение("Недопустимый вид документа основания!");

      СтатусВозврата(0);

   КонецЕсли;

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

См. также: «Системные предопределенные процедуры»

ОткрытьФорму

Выполняет открытие формы из'встроенного языка.

Синтаксис:

ОткрытьФорму (<Параметр1>, <КонтекстФормы>, < Параметр 3>...)

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

OpenForm

Параметры:

<Параметр1>

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

Для журналов, отчетов, списков в конце строки описателя формы может быть указан символ "#" с некоторым идентификатором: "#LLLL". Это используется для того, чтобы данная форма открылась в новом окне, а не активизировала существующее окно этой формы, если оно открыто. Где, LLLL — идентификатор, который позволяет открыть новое окно или активизировать уже открытое с этим идентификатором. Если идентификатор не задан, то обязательно открывается новое окно.

<КонтекстФормы>

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

После исполнения данного метода система вернет в данную переменную контекст открытой формы (см. Передача контекста в качестве параметра). С помощью значения этого контекста можно затем произвольно манипулировать открытой формой, пока она открыта. Пока форма открыта, тип значения данного параметра равен 100 (см. ТипЗначения), если закрыта — 0.

<Параметр3>...

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

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

Число 1 — если действие выполнено;

Число 0 — если действие не выполнено.

Описание:

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

Замечание. Для журналов, отчетов, списков в конце строки описателя формы может быть указан символ "#" с некоторым идентификатором: "#LLLL". Это используется для того, чтобы данная форма открылась в новом окне, а не активизировала существующее окно этой формы, если оно открыто. Где, LLLL — идентификатор, который позволяет открыть новое окно или активизировать уже открытое с этим идентификатором. Если идентификатор не задан, то обязательно открывается новое окно.

Замечание. Метод ОткрытьФорму нельзя вызывать в «теле» глобального модуля (части глобального модуля, расположенной после последней процедуры). Для его вызова при старте программы следует размещать его в процедуре ПриНачалеРаботыСистемы.

Для открытия разных форм следует использовать разный синтаксис вызова данной функции:

Открытие формы существующего документа.

ОткрытьФорму(<Документ>, <КонтекстФормы>, <РежимПросмотра>)

<Документ> | Значение типа «Документ».
<РежимПросмотра> | Необязательный параметр. Числовое выражение: 1 — открыть форму в режиме только просмотра; 0 — открыть форму в режиме редактирования. -1 (минус единица) в этом случае используется вариант предусмотренный текущим значением параметра «Режим открытия объектов» установленного пользователем. По умолчанию — 0.
Открытие формы нового документа

ОткрытьФорму(<ОписательОбъекта>, <КонтекстФормы>, <ДокументОснование>)

<ОписательОбъекта> | Строковое выражение. "Документ.ХХХХХ", где ХХХХХ — идентификатор вида документа;
<ДокументОснование> | Необязательный параметр. Выражение типа «документ», задающий документ-основание для открытия формы ввода нового документа в режиме ввода на основании.

Открытие формы журнала документов.

ОткрытьФорму(<ОписательОбъекта>, <КонтекстФормы>)

<ОписательОбъекта>

Строковое выражение.

"Журнал . ХХХХХ. YYYYY", где ХХХХХ — идентификатор журнала документов; YYYYY — идентификатор формы журнала документов;

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

ОткрытьФорму("Журнал.РасходнаяНакладная")

Открытие формы журнала подчиненных документов.

ОткрытьФорму(<ОписательОбъекта>, <КонтекстФормы>, <Документ>)

<ОписательОбъекта> | Строковое выражение. "Журнал.Подчиненные";
<Документ> | Значение типа «документ», задающее документ, для которого будут выводиться подчиненные документы.

Открытие формы существующего элемента справочника.

ОткрытьФорму(<Элемент>, <КонтекстФормы>, <РежимПросмотра>)

<Элемент> | Значение типа «Справочник».
<РежимПросмотра> | Необязательный параметр. Числовое выражение: 1 — открыть форму в режиме только просмотра; 0 — открыть форму в режиме редактирования. -1 (минус единица) в этом случае используется вариант предусмотренный текущим значением параметра «Режим открытия объектов» установленного пользователем. По умолчанию — 0.

Открытие формы нового элемента справочника.

ОткрытьФорму(<ОписательОбъекта>, <КонтекстФормы> , <ГруппаРодитель>,

<ФлагГруппы>, <ЭлементВладелец>)

<ОписательОбъекта> | Строковое выражение. "Элемент. ХХХХХ", где ХХХХХ — вид справочника;
<ГруппаРодитель> | Необязательный параметр. Выражение типа «справочник», задающий родительскую группу для открытия формы ввода нового элемента (группы) справочника.
<ФлагГруппы> | Необязательный параметр. Числовое выражение, задающее форму ввода нового элемента (группы) справочника: 1 — ввод новой группы, 0 — ввод нового элемента. По умолчанию — 0.
<ЭлементВладелец> | Необязательный параметр. Выражение типа «справочник», задающий элемент справочника-владельца для открытия формы ввода нового элемента (группы) подчиненного справочника.

Открытие формы списка справочника.

ОткрытьФорму(<ОписательОбъекта>, <КонтекстФормы>)

<ОписательОбъекта>

Строковое выражение.

"Справочник.ХХХХХ.YYYYY", где ХХХХХ — вид справочника, YYYYY — имя выбранной формы списка справочника;

Открытие формы отчета.

ОткрытьФорму(<ОписательОбъекта>, <КонтекстФормы>)

<ОписательОбъекта>

Строковое выражение. "Отчет. ХХХХХ" , где ХХХХХ — вид отчета;

Открытие формы обработки.

ОткрытьФорму(<ОписательОбъекта>, <КонтекстФормы>)

<ОписательОбъекта>

Строковое выражение. "Обработка.ХХХХХ", где ХХХХХ — вид обработки;

Открытие формы внешнего отчета.

ОткрытьФорму(<ОписательОбъекта>, <КонтекстФормы>, <ИмяФайла>)

<ОписательОбъекта> | Строковое выражение. "Отчет";
<ИмяФайла> | Строковое выражение — полное имя файла внешнего отчета.

Открытие формы журнала расчетов.

ОткрытьФорму(<ОписательОбъекта>, <КонтекстФормы>)

<ОписательОбъекта>

Строковое выражение.

"ЖурналРасчетов. ХХХХХ", где ХХХХХ — вид журнала расчетов;

Открытие формы существующего счета.

ОткрытьФорму(<Счет>, <КонтекстФормы>, <РежимПросмотра>)

<Счет> | Значение типа «Счет».
<РежимПросмотра> | Необязательный параметр. Числовое выражение: 1 — открыть форму в режиме только просмотра; 0 — открыть форму в режиме редактирования. -1 (минус единица) в этом случае используется вариант предусмотренный текущим значением параметра «Режим открытия объектов» установленного пользователем. По умолчанию — 0.

Открытие формы нового счета.

ОткрытьФорму(<ОписательОбъекта>, <КонтекстФормы>)

<ОписательОбъекта>

Строковое выражение.

"Счет. ХХХХХ" , где ХХХХХ — идентификатор плана счетов;

Открытие формы списка счетов (плана счетов).

ОткрытьФорму(<ОписательОбъекта>, <КонтекстФормы>)

<ОписательОбъекта>

Строковое выражение.

"ПланСчетов.ХХХХ.YYYY", где ХХХХХ — идентификатор плана счетов; YYYYY — идентификатор формы плана счетов.

Открытие формы существующей операции.

ОткрытьФорму(<ОписательОбъекта>, <КонтекстФормы>, <Документ>, <Проводка>,

<Корреспонденция>, <РежимПросмотра>)

<ОписательОбъекта> | Строковое выражение. "Операция".
<Документ> | Значение типа «документ», операция которого будет открываться.
<Проводка> | Необязательный параметр. Числовое выражение — номер проводки, на которую нужно позиционировать курсор при открытии операции.
<Корреспонденция> | Необязательный параметр. Числовое выражение — номер корреспонденции указанной проводки, на которую нужно позиционировать курсор при открытии операции.
<РежимПросмотра> | Необязательный параметр. Числовое выражение: 1 — открыть форму в режиме только просмотра; 0 — открыть форму в режиме редактирования. -1 (минус единица) в этом случае используется вариант предусмотренный текущим значением параметра «Режим открытия объектов» установленного пользователем. По умолчанию — 0.

Открытие формы ввода новой операции.

ОткрытьФорму(<ОписательОбъекта>, <КонтекстФормы>, <ТиповаяОперация>)

<ОписательОбъекта> | Строковое выражение. "Операция".
<ТиповаяОперация> | Необязательный параметр. Строковое выражение — наименование типовой операции, которую следует использовать при вводе новой операции. Если значение не задано или пустое, то ввод операции выполняется без использования типовой.

Открытие формы журнала операций.

ОткрытьФорму(<ОписательОбъекта>, <КонтекстФормы>, <Документ>, <Пров>, <Корр>)

<ОписательОбъекта> | Строковое выражение. "ЖурналОпераций.YYYYY", где YYYYY — идентификатор формы журнала операций;
<Документ> | Значение типа «документ», операция которого будет использована для первоначального позиционирования.
<Пров> | Номер проводки, которая будет использована для первоначального позиционирования курсора, если в журнале операций используется режим показа проводок.
<Корр> | Номер корреспонденции, которая будет использована для первоначального позиционирования курсора, если в журнале операций используется режим показа проводок.

Открытие формы журнала проводок.

ОткрытьФорму(<ОписательОбъекта>, <КонтекстФормы>, <Документ>, <Проводка>,

<Корреспонденция>)

<ОписательОбъекта> | Строковое выражение. "ЖурналПроводок.YYYYY", где YYYYY — идентификатор формы журнала проводок;
<Документ> | Значение типа «документ», операция которого будет использована для первоначального позиционирования.
<Проводка> | Необязательный параметр. Числовое выражение — номер проводки операции, на которую нужно в начале позиционироваться.
<Корреспонденция> | Необязательный параметр. Числовое выражение — номер корреспонденции указанной проводки, на которую нужно в начале позиционироваться.
Открытие окна истории значений периодических констант, реквизитов справочников и счетов.

ОткрытьФорму("История.Константа.<ИдентКонстанты>", , , <УстНаДату>)

ОткрытьФорму("История.Справочник.<ИдентСправочника>, <ИдентРеквизита>", ,

<ЭлементСправочника>, <УстНаДату>)

ОткрытьФорму("История.Счет", , <Счет>, <УстНаДату>)

<ИдентКонстанты> | Идентификатор периодической константы, как он задан в конфигураторе.
<ИдентСправочника> | Идентификатор справочника, как он задан в конфигураторе.
<ИдентРеквизита> | Идентификатор периодического реквизита справочника, как он задан в конфигураторе.
<ЭлементСправочника> | Элемент справочника, для периодического реквизита которого открывается окно истории значений.
<Счет> | Счет, для которого открывается окно истории значений.
<УстНаДату> | Необязательный параметр. Дата, на которую нужно установить курсор при открытии окна.

Замечание. Допустимо включение в описатель открываемой формы уникального имени открываемой формы через символ "#" с некоторым произвольным идентификатором: "#LLLL". В этом случае открываемая форма закрепляется за выбранным объектом и не происходит обновление формы при смене объекта, например при смене текущей строки списка справочника.

Примеры:

Перем Конт;

ОткрытьФорму("История.Справочник.Сотр.Тариф#Ид01", , ТекущийЭлемент());

ОткрытьФорму(Докум, Конт);

ОткрытьФорму("Документ.РасхНакл");

ОткрытьФорму("Журнал.Продажи.КраткаяФорма");

ОткрытьФорму("Отчет", , "С:\lcv7db\extforms\profit.ert");

ОткрытьФормуМодально

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

Синтаксис:

ОткрытьФормуМодально(<Параметр1>, <КонтекстФормы>, <ПараметрЗ>...)

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

OpenFormModal

Параметры: см. параметры метода ОткрытьФорму

Возвращаемое значение: см. метод ОткрытьФорму.

Описание:

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

См. также: ОткрытьФорму

ТипЗначения

Получить тип значения данных.

Синтаксис:

ТипЗначения(<3начение>)

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

ValueType

Параметры:

<3начение>                Выражение, тип данных значения которого надо определить.

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

Функция возвращает числовое значение:

0 — неопределенный тип данных;

1 — числовой тип данных;

2 — строковый тип данных;

3 — тип данных — дата;

10 — агрегатный тип данных «Перечисление»;

11 — агрегатный тип данных «Справочник»;

12 — агрегатный тип данных «Документ»;

13 — агрегатный тип данных «Календарь»;

14 — агрегатный тип данных «ВидРасчета»;

15 — агрегатный тип данных «Счет»;

16 — агрегатный тип данных «ВидСубконто»;

17 — агрегатный тип данных «ПланСчетов»;

100 — так называемый внешний объект. В этот класс попадают все агрегатные объекты, не вошедшие в вышеперечисленный список, такие как «Текст», «Таблица», «Запрос», «ЖурналРасчетов» и т. п.

Описание:

Функция ТипЗначения определяет, к какому типу данных принадлежит переданный параметр <3начение> и возвращает числовой результат:

Пример:

Если ТипЗначения(Код)<>1 Тогда

   Предупреждение("Код имеет не числовой тип !!!");

КонецЕсли;

ТипЗначенияСтр

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

Синтаксис:

ТипЗначенияСтр(<3начение>)

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

ValueTypeStr

Параметры:

<3начение>                Выражение, тип данных значения которого надо определить.

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

Функция возвращает строковое значение в русскоязычном или в англоязычном написании — в зависимости от текущей установки основного языка конфигурации:

Русскоязычное | Англоязычное | Описание
Неизвестный Объект | UnknownObject | неопределенный тип данных;
Число | Number | числовой тип данных;
Строка | String | строковый тип данных;
Дата | Date | тип данных — дата;
Перечисление | Enum | агрегатный тип данных «Перечисление»;
Справочник | Reference | агрегатный тип данных «Справочник»;
Документ | Document | агрегатный тип данных «Документ»;
Регистр | Register | агрегатный тип данных «Регистр»;
Календарь | Calendar | агрегатный тип данных «Календарь»;
ВидРасчета | Calculation | агрегатный тип данных «ВидРасчета»;
ЖурналРасчетов | CalcJournal | агрегатный тип данных «ЖурналРасчетов»;
ПланСчетов | ChartOfAccounts | агрегатный тип данных «ПланСчетов»;
Счет | Account | агрегатный тип данных «Счет»,
Операция | Operation | агрегатный тип данных «Операция»;
КорректныеПроводки | CorrectEntries | агрегатный тип данных «КорректныеПроводки»;
БухгалтерскиеИтоги | BookkeepingTotals | агрегатный тип данных «БухгалтерскиеИтоги»;
Таблица | Table | агрегатный тип данных «Таблица»;
Текст | Text | агрегатный тип данных «Текст»;
Запрос | Query | агрегатный тип данных «Запрос»;
СписокЗначений | ValueList | агрегатный тип данных «СписокЗначений»;
ТаблицаЗначений | ValueTable | агрегатный тип данных «ТаблицаЗначений»;
Периодический | Рег1odic | агрегатный тип данных «Периодический»;
Картинка | Picture | агрегатный тип данных «Картинка»;
ГрупповойКонтекст | GroupContext | локальный контекст программного модуля, передаваемый при помощи ключевого слова Контекст или возвращаемый методом ОткрытьПодбор;
OLE | OLE | OLE-объект;

Описание:

Функция ТипЗначенияСтр определяет, к какому типу данных принадлежит переданный параметр <3начение> и возвращает соответствующе строковое значение. Название агрегатного типа данных передается либо в русском либо в английском написании — в зависимости от текущей установки основного языка конфигурации.

Пример:

Предупреждение("Код имеет тип - " + ТипЗначенияСтр(Код));

См. также: ОсновнойЯзык

ПустоеЗначение

Проверить значение любого типа.

Синтаксис:

ПустоеЗначение(<3начение>)

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

Empty Value

Параметры:

<3начение>                Выражение любого типа данных, значение которого проверяется на «пустое».

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

Функция возвращает числовое значение: 1 — значение пустое; 0 — значение не пустое.

Описание:

Функция ПустоеЗначение определяет, является ли пустым переданное в параметре значение. При этом применяется следующее правило:

- значение неопределенного типа — всегда пустое;

- значение типа «строка» проверяется как в методе ПустаяСтрока;

- значение типа «число» проверяется на равенство нулю;

- значение типа «дата» проверяется на пустое значение;

- значения следующих типов: «справочник», «перечисление», «документ», «счет», «вид субконто», «план счетов», «календарь» проверяются как в методах Выбран для соответствующего типа объекта.

Пример:

Если ПустоеЗначение(Код) = 1 Тогда

   Предупреждение("Задайте непустое значение Кода !!!");

КонецЕсли;

ПолучитьПустоеЗначение

Получить пустое значение заданного типа данных.

Синтаксис:

ПолучитьПустоеЗначение(<Тип>)

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

GetEmptyValue

Параметры:

<Тип>

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

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

Функция ПолучитьПустоеЗначение возвращает пустое значение заданного типа данных.

Описание:

Функция возвращает пустое значение заданного типа данных.

Пример:

Если ВыбФирма = ПолучитьПустоеЗначение("Справочник.Фирмы") = 1 Тогда

   Предупреждение("Задайте непустое значение Фирмы");

КонецЕсли;

НазначитьВид

Для значений типа «Документ неопределенного вида», «Справочник неопределенного вида», «Счет неопределенного вида» назначает конкретный вид.

Синтаксис:

НазначитьВид(<3начение>, <Вид>)

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

SetKind

Параметры:

<3начение>

Значение типа документ/справочник/счет неопределенного вида — обычно реквизит документа, справочника или диалога формы.

<Вид>

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

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

Описание:

Процедура НазначитьВид используется для установки значениям типа «Документ неопределенного вида», «Справочник неопределенного вида», «Счет неопределенного вида» конкретный вид. При этом, если существующее значение не соответсвует вновь установленному виду — то оно очищается.

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

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

Пример:

* Например, реквизиту документа «Контрагент» типа справочник неопределенного вида, в зависимости от значений других реквизитов можно установить вид «Организации» или «Сотрудники».

Процедура ВводНаОсновании(ДокОсн)

   Если ДокОсн.Вид() = "Счет" Тогда

      НазначитьВид(Контрагент, «Организации»);

   Иначе

      НазначитВид(Контрагент, «Сотрудники»);

   КонецЕсли;

   Форма.Контрагент.НеИзменятьВид(1);

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

ЗаписьЖурналаРегистрации

Выводит строку текста в системный журнал регистрации.

Синтаксис:

ЗаписьЖурналаРегистрации(<Коммент>, <ТипСобытия>, <Событие>, <Объект>,
<Категория>)

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

LogMessageWrite

Параметры:

<Коммент> | Строковое выражение, комментарий к событию. Если этот параметр — единственный переданный при вызове метода, то тогда в журнал записывается стандартное дополнительное событие с указанным комментарием.
<ТипСобытия> | Необязательный параметр. Строковое выражение -тип события. По умолчанию или при пустой строке «Дополнительные события».
<Событие> | Необязательный параметр. Строковое выражение -событие. По умолчанию «Дополнительное событие».
<Объект> | Необязательный параметр. Объект события, по умолчанию отсутствует. Для переданных в функцию объектов типа Документ/ Справочник/ Счет представление объекта будет записано автоматически (это не зависит от типа события и самого события).
<Категория> | Необязательный параметр. Число — категория события: 1 — администрирование; 2 — изменение данных; 3 — информация; 4 — предупреждение; 5 — ошибка. Значение по умолчанию 3.

Описание:

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

Системой зарезервированы следующие типы событий/события:

Документ / Открыт | Справочник/СнятаПометакаНаУдаление
Документ / Новый |
Документ / Удален | Константа / ЗначениеЗаписано
Документ / Записан | Константа / ЗначениеУдалено
Документ / НаЗаписан |
Документ / Проведен | ЖурналРасчетов / ИзмененРасчетныйПериод
Документ / ПроведенЗаднимЧислом | ЖурналРасчетов / ОткатНазадРасчетногоПериода
Документ / НеПроведен | ЖурналРасчетов / НеудачнаяПопыткаИзмененияПериода
Документ / СделанНеПроведенным | ЖурналРасчетов / ОтменаРучногоРедактированияРезультата
Документ / ЗаписанИПроведенЗаднимЧислом | ЖурналРасчетов / ИзмененРезультат
Документ / ЗаписанИПроведен |
Документ / ПомеченНаУдаление | Счет / ЗаписанНовый
Документ / СнятаПометакаНаУдаление | Счет / Записан
Документ / ИзмененаОперацияДокумента | Счет / ЗначениеРеквизитаЗаписано
Документ / ПроводкиВключены | Счет / ЗмачениеРеквизитаУдалено
Документ / ПроводкиВыключены | Счет / Удален
Документ / ИзмененоВремя | Счет / ПомеченНаУдаление
Справочник / ЗаписанНовый | Счет / СнятаПометакаНаУдаление
Справочник / Записан |
Справочник / Удален | КорректнаяПроводка / ЗаписанаНовая
Справочник / ЗначениеРеквизитаЗаписано | КорректнаяПроводка / Записана
Справочник / ЗначениеРеквизитаУдалено | КорректнаяПроводка / Удалена
Справочник / ПеренесенВДругуюГруппу |
Справочник / ПомеченНаУдаление | ОбщиеСобытия / ИзменениеТА

Незарезервированные имена позволяют пользователю фактически указывать свои собственные типы событий и события. Это значит, что если в параметре <ТипСобытия> записать "Отчет" а в параметре <Событие> "Сформирован", то при просмотре журнала регистрации можно будет фильтровать по событию «Сформирован» типа событий «Отчет».

Пример:

ЗаписьЖурналаРегистрации("Доброе утро!")

ПрефиксАвтоНумерации

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

Синтаксис:

ПрефиксАвтоНумерации(<ИмяВида>, <Префикс>)

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

AutoNumPrefix

Параметры:

<ИмяВида> | Строковое выражение с полным названием справочника или документа, как он назван в конфигурации.
<Префикс> | Строковое выражение — префикс номеров документов или кодов элементов справочника.

Описание:

Процедура ПрефиксАвтоНумерации устанавливает префикс для автоматического создания новых номеров документов или кодов элементов справочника.

Вызов данного метода может быть использован для установки префикса всем документам или справочникам. При этом используется символ "*" вместо идентификатора вида документа/справочника, например

ПрефиксАвтоНумерации("Документ.*", "ПР-")

Пример:

ПрефиксАвтоНумерации("Документ.РасходнаяНакл", "Рн-");

См. также: ПрефиксНомера, ПрефиксКода, УстановитьНовыйНомер, УстановитьНовыйКод.

ПолучитьЗначенияОтбора

Выбирать все существующие значения отбора.

Синтаксис:

ПолучитьЗначенияОтбора(<ИмяОтбора>, <СписокЗначений> , [<ДатаНач>], [<ДатаКон>])

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

GetSelect ionValues

Параметры:

<ИмяОтбора> | Строковое выражение с полным названием общего реквизита документа или графы отбора, как он назван в конфигурации.
<СписокЗначений> | Идентификатор переменной. Если при вызове метода данная переменная содержит объект типа «СписокЗначений», то система заполнит его всеми возможными существующими значениями отбора. Если при вызове метода данная переменная содержит любое другое значение кроме объекта типа «СписокЗначений», то система сама создаст объект типа «СписокЗначений», заполнит его существующими значениями отбора и присвоит переменной ссылку на этот объект.
<ДатаНач> | Необязательный параметр. Дата начала интервала в котором проводить отбор. Если параметр не задан, то отбор будет производиться по всем данным.
<ДатаКон> | Необязательный параметр. Дата конца интервала в котором проводить отбор. Если параметр не задан или равен 0, то отбор будет производиться до ТА.

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

Числовое значение: 1 — операция выполнена успешно; 0 — операция не выполнена.

Описание:

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

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

Пример:

// Выбрать существующие значения Авторов документов

ПолучитьЗначенияОтбора("Автор", Спис, , );

См. также: «Работа со Списком Значений»

КомандаСистемы

Вызывает на исполнение команду DOS.

Синтаксис:

КомандаСистемы(<СтрокаКоманды>)

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

System

Параметры:

<СтрокаКоманды>

Строковое выражение, содержащее строку команды.

Описание:

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

Если загружается Windows-приложение, то управление немедленно возвращается в систему 1С:Предприятие на следующий за оператором КомандаСистемы оператор и система продолжает выполняться как фоновая прикладная программа. Пользователь может возвратиться в запускающую программу или закончив выполнение запущенной, или переключившись обратно посредством списка задач Windows.

Если в параметре <СтрокаКоманды> не содержится путь к загружаемой программе в файловой системе к программе, то поиск происходит в следующей последовательности:

- текущий системный каталог;

- каталог Windows;

- системный каталог Windows;

- все каталоги, указанные в переменной PATH;

Пример:

* В данном примере запускается редактор текста notepad.exe и в него загружается файл textl. txt.

КомандаСистемы("notepad textl.txt");

ЗапуститьПриложение

Выполняет запуск внешнего приложения.

Синтаксис:

ЗапуститьПриложение(<СтрокаКоманды>)

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

RunApp

Параметры:

<СтрокаКоманды>

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

Описание:

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

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

Если загружается Windows-приложение, то управление немедленно возвращается в систему 1С:Предприятие на следующий за оператором ЗапуститьПриложение оператор и система продолжает выполняться как фоновая прикладная программа. Пользователь может возвратиться в запускающую программу или закончив выполнение запущенной, или переключившись обратно посредством списка задач Windows.

Если в параметре <СтрокаКоманды> не содержится путь к загружаемой программе в файловой системе к программе, то поиск происходит в следующей последовательности:

- текущий системный каталог;

- каталог Windows;

- системный каталог Windows;

- все каталоги, указанные в переменной PATH;

Пример:

* В данном примере запускается редактор текста notepad.exe и в него загружается файл textl. txt.

ЗапуститьПриложение("notepad textl.txt");

ЗавершитьРаботуСистемы

Выполняет запуск внешнего приложения.

Синтаксис:

ЗавершитьРаботуСистемы(<ФлагСохранения>)

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

ExitSystem

Параметры:

<ФлагСохранения>

Необязательный параметр. Флаг запроса сохранения открытых объектов. Если 0, то не запрашивается сохранение не записанных документов, элементов справочников и т. п. Если 1, то сохранение запрашивается. Значение по умолчанию 1.

Описание:

Процедура ЗавершитьРаботуСистемы вызывает завершение работы системы.

Пример:

ЗавершитьРаботуСистемы(0);

НайтиПомеченныеНаУдаление

Находит все помеченные на удаление объекты.

Синтаксис:

НайтиПомеченныеНаУдаление(<Объекты>)

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

FindMarkedForDelete

Параметры:

<Объекты>

Идентификатор объекта типа «СписокЗначений», в который данная процедура помещает найденные объекты.

Описание:

Процедура НайтиПомеченныеНаУдаление находит все помеченные на удаление объекты и помещает их в список значений.

Пример:

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

НайтиПомеченныеНаУдаление(Список);

НайтиСсылки

Находит ссылки на объекты, переданные в списке значений.

Синтаксис:

НайтиСсылки(<Объекты>, <Ссылки>)

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

FindReferences

Параметры:

<Объекты> | Конкретное значение объекта или объект типа «СписокЗначений», в котором данной процедуре передаются объекты, по которым надо найти ссылки.
<Ссылки> | Идентификатор объекта типа «ТаблицаЗначений», в который данная процедура помещает найденные ссылки на объекты. Таблица значений состоит из 3 колонок: 1. Объект — объект, на который ссылаются; 2. Ссылка — объект, который содержит ссылку; 3. Комментарий — комментарий к ссылке.

Описание:

Процедура НайтиСсылки находит ссылки на переданные в списке объекты, и помещает их в таблицу значений.

Пример:

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

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

НайтиПомеченныеНаУдаление(Список);

НайтиСсылки(Список, ТаблицаСсылок);

УдалитьОбъекты

Удалить объекты, переданные в списке значений.

Синтаксис:

УдалитьОбъекты(<Объекты>, <Проверять>, <Ссылки>)

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

DeleteObjects

Параметры:

<Объекты> | Конкретное значение объекта или объект типа «СписокЗначений», в котором данной процедуре передаются объекты, которые надо удалить.
<Проверять> | Необязательный параметр. Число: 1 — перед удалением проверяется — нет ли ссылок на удаляемый объект. Если есть, то объект не удаляется, а ссылки помещаются в таблицу значений <Ссылки>. Любое другое число — проверку не выполнять. Значение по умолчанию: 1.
<Ссылки> | Необязательный параметр. Идентификатор объекта типа «ТаблицаЗначений», в который данная процедура помещает найденные ссылки на объекты. Таблица значений состоит из 3 колонок: 1. Объект — объект, на который ссылаются; 2. Ссылка — объект, который содержит ссылку; 3. Комментарий — комментарий к ссылке.

Описание:

Процедура УдалитьОбъекты удаляет объекты, переданные в списке значений.

Пример:

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

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

НайтиПомеченныеНаУдаление(Список);

УдалитьОбъекты(Список, 1, ТаблицаСсылок);

ОбработкаОжидания

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

Синтаксис:

ОбработкаОжидания([<ИмяПроцедуры>], [<ИнтервалВызова>])

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

IdleProcessing

Параметры:

<ИмяПроцедуры>

Необязательный параметр. Строковое выражение — имя процедуры глобального модуля, которая будет вызываться периодически с интервалом времени <ИнтервалВызова>. Тело процедуры <ИмяПроцедуры> должно быть написано разработчиком конфигурации в глобальном программном модуле.

Если в качестве параметра передается «пустая строка», то ранее запущенный процесс прекращается.

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

<ИнтервалВызова>

Необязательный параметр. Числовое выражение — интервал времени в секундах, с которым периодически будет вызываться процедура глобального модуля <ИмяПроцедуры>.

Если в качестве параметра передается 0 (ноль), то ранее запущенный процесс прекращается.

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

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

Имя процедуры глобального модуля, которая назначена для периодического запуска (на момент до исполнения процедуры).

Описание:

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

Пример:

Процедура СформироватьТекущийОтчетПродаж

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

ОбработкаОжидания("СформироватьТекущийОтчетПродаж", 60);

Процедуры и функции обработки значений

ЗначениеВСтрокуВнутр

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

Синтаксис:

ЗначениеВСтрокуВнутр(<Выражение>)

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

ValueToStringInternal

Параметры:

<Выражение>

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

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

Результирующее строковое значение.

Описание:

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

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

Пример:

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

ЗначениеВСтрокуВнутр(Запрос.Клиент) + РазделительСтрок +
ЗначениеВСтрокуВнутр(Запрос.Товар)

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

Процедура ОбработкаЯчейкиТаблицы(Значение, ФлагСтандартнойОбработки)

   Если ТипЗначенияСтр(Значение) = "Строка" Тогда

      Орг = ЗначениеИзСтрокиВнутр(СтрПолучитьСтроку(Значение, 1));

      Тов = ЗначениеИзСтрокиВнутр(СтрПолучитьСтроку(Значение, 2));

      Если Тов.Выбран() = 0 Тогда

         Возврат;

      КонецЕсли;

      Карт(Орг, Тов);

      ФлагСтандартнойОбработки = 0;

      Возврат;

   КонецЕсли;

   ФлагСтандартнойОбработки = 1;

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

См. также: ЗначениеИзСтрокиВнутр, ЗначениеТекущейЯчейки, ОбработкаЯчейкиТаблицы

ЗначениеИзСтрокиВнутр

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

Синтаксис:

ЗначениеИзСтрокиВнутр(<СистСтрока>)

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

ValueFromStringInternal

Параметры:

<СистСтрока>

Строковое выражение, представление объекта агрегатного типа данных в системном строковом виде.

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

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

Описание:

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

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

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

ВосстановитьЗначение("СистСтрокаМойСпис", ИдентМойСпис);

Пример: См. предыдущий пример

См. также: ЗначениеВСтрокуВнутр, ЗначениеТекущейЯчейки

ЗначениеВСтроку

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

Синтаксис:

ЗначениеВСтроку(<Объект>)

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

ValueToString

Параметры:

<Объект>

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

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

Строковое представление переданного значения.

Описание:

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

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

Пример:

СтрДок = ЗначениеВСтроку(ВыбДокумент);

См. также: ЗначениеИзСтроки

ЗначениеИзСтроки

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

Синтаксис:

ЗначениеИзСтроки(<СистСтрока>)

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

ValueFromString

Параметры:

<СистСтрока>

Строковое выражение, содержащее представление объекта, полученное ранее при помощи метода ЗначениеВСтроку.

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

Значение, которое получено из строкового системного представления.

Описание:

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

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

Пример:

Док = ЗначениеИзСтроки(СтрДок);

См. также: ЗначениеВСтроку

ЗначениеВФайл

Сохраняет значение в файле.

Синтаксис:

ЗначениеВФайл(<ИмяФайла>, <3начение>, <Формат>)

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

ValueToFile

Параметры:

<ИмяФаила> | Строковое выражение, задающее имя файла.
<3начение> | Значение, которое следует сохранить в файле. В качестве параметра для данного метода допускается передавать значения любых типов данных, доступных в конфигурации, как базовых, так и агрегатных типов данных, за исключением тех типов данных, которые не имеют собственно значения — это касается таких объектов как «Периодический», «Таблица», «ФС», «Запрос», «XBase» и т. п. Однако, объекты типа «СписокЗначений» и «ТаблицаЗначе-ний» использовать можно.
<Формат> | Необязательный параметр. Число: 1 — сохранение во внутреннем формате; иначе во внешнем. Значение по умолчанию: 1.

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

Число: 1 — функция выполнена успешно; 0 — функция не выполнена.

Описание:

Функция ЗначениеВФайл позволяет сохранить любое значение в файле. В дальнейшем этот файл можно будет распаковать и сделать обратное преобразование при помощи функции ЗначениеИзФайла.

Пример:

Результат = ЗначениеВФайл(ВыбИмяФайла, ВыбДокумент);

См. также: ЗначениеИзФайла

ЗначениеИзФайла

Восстанавливает значение из файла.

Синтаксис:

ЗначениеИзФайла(<ИмяФайла>, <3начение>, <Формат>)

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

ValueFromFile

Параметры:

<ИмяФайла> | Строковое выраженние, задающее имя файла.
<3начение> | Необязательный параметр. Идентификатор переменной, куда система вернет значение, которое получено из файла.
<Формат> | Необязательный параметр. Число: 1 — сохранение во внутреннем формате; иначе во внешнем. Значение по умолчанию: 1.

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

Значение, которое получено из файла.

Описание:

Функция ЗначениеИзФайла восстанавливает значение из файла, которое упаковано туда при помощи функции ЗначениеВФайл.

Пример:

Док = ЗначениеИзФайла(ВыбИмяФайла);

См. также: ЗначениеВФайл

СохранитьЗначение

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

Синтаксис:

СохранитьЗначение(<Идентификатор>, <3начение>)

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

SaveValue

Параметры:

<Идентификатор> | Строковое выражение, наименование сохраняемого значения. Данное наименование используется для идентификации сохраняемых значений.
<3начение> | Выражение любого типа. Объекты типа «Список-Значений» и «ТаблицаЗначений» использовать можно.

Описание:

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

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

Пример:

СохранитьЗначение("МойСклад", Склад);

См. также: ВосстановитьЗначение

ВосстановитьЗначение

Восстановить сохраненное для пользователя значение.

Синтаксис:

ВосстановитьЗначение(<Идентификатор>)

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

RestoreValue

Параметры:

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

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

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

Значение, сохраненное для пользователя.

Описание:

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

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

Замечание. При использовании метода ВосстановитьЗначение() для значения типа «СписокЗначений», являющимся реквизитом формы, его идентификатор следует передавать в качестве второго параметра. В этом случае метод следует использовать как процедуру, т. е. не использовать возвращаемое значение. ВосстановитьЗначение("СистСтрокаМойСпис", ИдентМойСпис);

Пример:

ДефСклад = ВосстановитьЗначение("МойСклад");

См. также: СохранитьЗначение

Процедуры и функции компоненты «Оперативный учет»

ПолучитьТА

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

Синтаксис:

ПолучитьТА()

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

GetAP

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

Строковое значение, содержащее дату и время ТА.

Описание:

Функция ПолучитьТА возвращает дату и время Точки Актуальности итогов в текстовом виде.

Пример:

Дата_И_Время_ТА = ПолучитьТА();

ПолучитьДатуТА

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

Синтаксис:

ПолучитьДатуТА()

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

GetDateOfAP

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

Значение типа «дата», содержащее дату ТА.

Описание:

Функция ПолучитьДатуТА возвращает значение (типа «дата») даты Точки Актуальности итогов.

Пример:

Дата_ТА = ПолучитьДатуТА();

ПолучитьВремяТА

Получить значение времени Точки Актуальности итогов. Данная функция используется только при наличии компоненты «Оперативный учет».

Синтаксис:

ПолучитьВремяТА(<Часы>, <Минуты>, <Секунды>)

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

GetTimeOfAP

Параметры:

<Часы> | Идентификатор переменной, в которую метод возвращает строковое значение часа ТА.
<Минуты> | Идентификатор переменной, в которую метод возвращает строковое значение минут ТА.
<Секунды> | Идентификатор переменной, в которую метод возвращает строковое значение секунд ТА.

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

Строковое значение времени ТА в виде " ЧЧ. MM. СС".

Описание:

Функция ПолучитьВремяТА записывает значение времени Точки Актуальности итогов в передаваемые при вызове параметры.

Пример:

ПолучитьВремяТА(Час, Минута, Секунда);

ПолучитьДокументТА

Получить документ, который стоит на ТА. Данная функция используется только при наличии компоненты «Оперативный учет».

Синтаксис:

ПолучитьДокументТА()

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

GetDocOfAP

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

Значение типа «документ», который стоит на ТА.

Описание:

Функция ПолучитьДокументТА возвращает документ, который стоит на ТА, если он есть.

Пример:

ПоследнийДок = ПолучитьДокументТА();

ПолучитьПозициюТА

Получить позицию Точки Актуальности итогов. Данная функция используется только при наличии компоненты «Оперативный учет».

Синтаксис:

ПолучитьПозициюТА()

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

GetAPPosition

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

32-х символьное строковое значение позиции ТА.

Описание:

Функция ПолучитьПозициюТА возвращает 32-х символьное строковое значение позиции ТА.

Пример:

ПозицияТА = ПолучитьПозициюТА();

УстановитьТАна

Изменить положение Точки Актуальности итогов. Данный метод используется только при наличии компоненты «Оперативный учет». Данный метод используется только в монопольном режиме доступа.

Синтаксис:

УстановитьТАна(<ПоложениеТА>]

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

SetAPToBeg

Параметры:

<ПоложениеТА>

Выражение типа дата, документ или позиция документа, на начало которого устанавливается ТА.

Описание:

Метод УстановитьТАна изменяет положение Точки Актуальности итогов на начало даты или документа <ПоложениеТА>. Данный метод используется только в монопольном режиме доступа.

Пример:

УстановитьТАна(ВыбДокумент);

УстановитьТАпо

Изменить положение Точки Актуальности итогов. Данный метод используется только при наличии компоненты «Оперативный учет». Данный метод используется только в монопольном режиме доступа.

Синтаксис:

УстановитьТАпо(<ПоложениеТА>)

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

SetAPToEnd

Параметры:

<ПоложениеТА>

Выражение типа дата, документ или позиция документа, на конец которого устанавливается ТА.

Описание:

Метод УстановитьТАпо изменяет положение Точки Актуальности итогов на конец даты или документа <ПоложениеТА>. Данный метод используется только в монопольном режиме доступа.

Пример:

УстановитьТАпо(ВыбДокумент);

Процедуры и функции компоненты «Бухгалтерский учет»

Процедуры и функции этого раздела используются только при наличии компоненты «Бухгалтерский учет».

ВыбранныйПланСчетов

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

Синтаксис:

ВыбранныйПланСчетов()

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

DefaultChartOfAccounts

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

Значение типа «ПланСчетов».

Описание:

Функция ВыбранныйПланСчетов позволяет определить текущее значение параметра «Основной план счетов», выбранное пользователем при работе с системой.

Пример:

Сч = СоздатьОбъект("Счет");

Сч.ИспользоватьПланСчетов(ВыбранныйПланСчетов());

ОсновнойПланСчетов

Возвращает план счетов, установленный в конфигурации в качестве основного.

Синтаксис:

ОсновнойПланСчетов()

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

MainChartOfAccounts

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

Значение типа «ПланСчетов».

Описание:

Функция ОсновнойПланСчетов выдает план счетов установленный в конфигурации в качестве основного.

Пример:

Сч = СоздатьОбъект("Счет");

Сч.ИспользоватьПланСчетов(ОсновнойПланСчетов());

СчетПоКоду

Поиск бухгалтерского счета по коду.

Синтаксис:

СчетПоКоду(<КодСчета>[, <ПланСчетов>])

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

AccountByCode

Параметры:

<КодСчета> | Символьное выражение — код счета.
<ПланСчетов> | Значение типа «План Счетов» — план счетов, в котором выполняется поиск. Если параметр не указан, поиск выполняется в основном плане счетов, заданном в метаданных.

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

Значение типа «Счет».

Описание:

Метод СчетаПоКоду позволяет найти значение типа «Счет» по коду счета, указанному в виде символьной строки.

Пример:

// При проведении документа формируем проводку

Операция.НоваяПроводка();

Операция.Дебет.Счет = СчетПоКоду("51");

НачалоПериодаБИ

Возвращает дату начала периода бухгалтерских итогов.

Синтаксис:

НачалоПериодаБИ()

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

BeginOfРег1odBT()

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

Значение типа «Дата» — дата начала периода бухгалтерских итогов.

Описание:

Метод НачалоПериодаБИ возвращает дату начала периода бухгалтерских итогов, заданную в режиме «Настройка параметров системы».

Пример:

Дата1 = НачалоПериодаБИ();

КонецПериодаБИ

Возвращает дату конца периода бухгалтерских итогов.

Синтаксис:

КонецПериодаБИ()

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

EndOfРег1odBT()

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

Значение типа «Дата» — дата конца периода бухгалтерских итогов.

Описание:

Метод КонецПериодаБИ возвращает дату конца периода бухгалтерских итогов, заданную в режиме «Настройка параметров системы».

Пример:

Дата2 = КонецПериодаБИ();

КонецРассчитанногоПериодаБИ

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

Синтаксис:

КонецРассчитанногоПериодаБИ()

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

EndOfCalculatedРег1odBT()

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

Значение типа «Дата» — последняя дата рассчитанных бухгалтерских итогов.

Описание:

Метод КонецРассчитанногоПериодаБИ возвращает последнюю дату рассчитанных бухгалтерских итогов, заданную в режиме «Управление бухгалтерских итогов» при работе в режиме «1С:Предприятие».

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

Пример:

Если Дата2 > КонецРассчитанногоПериодаБИ() Тогда

   Сообщить("Период не рассчитан!");

   Возврат;

КонецЕсли;

НазначитьСчет

Назначает счет значению типа «Вид субконто».

Синтаксис:

НазначитьСчет(<ВидСубконто>, <Счет>[, <НомерСубконто>])

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

SetAccount

Параметры:

<ВидСубконто> | Значение типа «ВидСубконто», переданное по ссылке — обычно реквизит диалога формы.
<Счет> | Значение типа «Счет».
<НомерСубконто> | Значение типа «Число» — номер субконто для данного счета.

Описание:

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

Пример:

Процедура ПриВыбореСчета()

   НазначитьСчет(ВыбВидСубконто1, Счет, 1);

   НазначитьСчет(ВыбВидСубконто2, Счет, 2);

   НазначитьСчет(ВыбВидСубконтоЗ, Счет, 3);

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

ВвестиПланСчетов

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

Синтаксис:

ВвестиПланСчетов(<ПланСчетов>, <Подсказка>, <Таймаут>)

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

InputChartOfAccounts

Параметры:

<ПланСчетов> | Значение типа «План счетов», переданное по ссылке (идентификатор переменной). В данное значение будет осуществлен возврат выбранного значения.
<Подсказка> | Строковое выражение, содержащее строку, которая будет выводиться в заголовке окна диалога.
<Таймаут> | Числовое выражение — интервал времени ожидания ответа пользователя в секундах. Если параметр опущен или равен 0 — ожидание бесконечно. Необязательный параметр.

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

Числовое значение: 1 — выбор осуществлен , 0 — выбор не осуществлен (пользователем нажата кнопка «Отмена», клавиша <Esc> или закрыто окно диалога).

Описание:

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

Пример:

Перем ВыбПлан;

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

   ...

КонецЕсли;

ВвестиВидСубконто

Выбрать вид субконто из существующих видов субконто в диалоге.

Синтаксис:

ВвестиВидСубконто(<ВидСубконто>, <Подсказка>, [<Счет>], [<Таймаут>])

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

InputSubcontoKind

Параметры:

<ВидСубконто> | Значение типа «ВидСубконто», переданное по ссылке (идентификатор переменной). В данное значение будет осуществлен возврат выбранного значение вида субконто.
<Подсказка> | Строковое выражение, содержащее строку, которая будет выводиться в заголовке окна диалога выбора вида субконо.
<Счет> | Значение типа «Счет». Если данное значение указано выбор будет ограничен видами субконто, заданными для указанного счета. Необязательный параметр.
<Таймаут> | Числовое выражение — интервал времени ожидания ответа пользователя в секундах. Если параметр опущен или равен 0 — ожидание бесконечно. Необязательный параметр.

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

Числовое значение: 1 — выбор осуществлен , 0 — выбор не осуществлен (пользователем нажата кнопка «Отмена», клавиша <Esc> или закрыто окно диалога).

Описание:

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

Пример:

Перем ВыбВидСубк;

Если ВвестиВидСубконто(ВыбВидСубк, "Введите вид убконто", ВыбСчет) = 1 Тогда

   ...

КонецЕсли;

МаксимальноеКоличествоСубконто

Максимальное количество видов субконто, которые могут быть заданы для счетов.

Синтаксис:

МаксимальноеКоличествоСубконто()

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

MaxSubcontoCount

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

Число — максимальное количество видов субконто.

Описание:

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

Пример:

Если МаксимальноеКоличествоСубконто() < 2 Тогда

   Форма.ВидСубк2.Видимость(0);

КонецЕсли;

Процедуры и функции компоненты «Расчет»

ОсновнойЖурналРасчетов

Устанавливает основной журнал расчетов. Используется только при наличии компоненты «Расчет».

Синтаксис:

ОсновнойЖурналРасчетов(<ЖурналРасч>)

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

BasicCalcJournal

Параметры:

<ЖурналРасч>

Строковое значение — идентификатор журнала расчетов, как он задан при конфигурировании.

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

Значение текущего журнала расчетов.

Описание:

Функция ОсновнойЖурналРасчетов устанавливает основной журнал расчетов. По умолчанию основной журнал расчетов — первый в списке журналов расчетов.

Пример:

ОсновнойЖурналРасчетов("Основной");


Part8

Глава 8
Системные предопределенные процедуры

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

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

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

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

Предопределенные процедуры Глобального модуля

Описанные в данном разделе системные предопределенные процедуры должны располагаться только в глобальном программном модуле. Данные процедуры, например, могут использоваться для расширения возможности программного управления правами доступа пользователя к системе.

ПриНачалеРаботыСистемы

Предопределенная процедура при начале работы задачи.

Синтаксис:

ПриНачалеРаботыСистемы()

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

OnStartSystem

Описание:

Вызов предопределенной процедуры ПриНачалеРаботыСистемы производится системой 1С:Предприятие неявно при начале работы с программой. Если в данной предопределенной процедуре установить статус возврата — 0 (например, если время доступа данного пользователя к системе истекло), то пользователь не сможет войти в программу.

Данная предопределенная процедура может располагаться только в глобальном программном модуле.

Пример:

Процедура ПриНачалеРаботыСистемы()

   Курс = Константа.ОсновнаяВалюта.Текущ_Курс.Получить(ТекущаяДата();

   Предупреждение("Добро пожаловать! Сегодня " + " " + ТекущаяДата() +

         РазделительСтрок + "Сейчас установлен курс доллара=" + Курс), 7);

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

См. также: СтатусВозврата

ПриЗавершенииРаботыСистемы

Предопределенная процедура при завершении работы задачи.

Синтаксис:

ПриЗавершенииРаботыСистемы()

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

OnFinishSystem

Описание:

Вызов предопределенной процедуры ПриЗавершенииРаботыСистемы производится системой 1С:Предприятие неявно при завершении работы пользователя с системой. Если в данной предопределенной процедуре установить статус возврата — 0 (например, если пользователь не выполнил какие-либо штатные операции), то работа системы не будет завершена, т. е. пользователь не сможет выйти из программы.

Данная предопределенная процедура может располагаться только в глобальном программном модуле.

Пример:

Процедура ПриЗавершенииРаботыСистемы()

   Предупреждение("До свидания !", 2);

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

См. также: СтатусВозврата

ПриУдаленииДокумента

Предопределенная процедура при удалении документа и при отмене пометки на удаление.

Синтаксис:

ПриУдаленииДокумента(<УдалДокум>, <Режим>)

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

OnDeleteDoc

Параметры:

<УдалДокум> | Значение удаляемого документа.
<Режим> | Значение флага непосредственного удаления: 1 — непосредственное удаление; 0 — пометка на удаление.

Описание:

Вызов предопределенной процедуры ПриУдаленииДокумента производится системой 1С:Предприятие неявно при интерактивном удалении документа и в случае отмены пометки на удаление. В этом случае, условия вызова можно узнать методом ПометкаУдаления документа. Если в данной предопределенной процедуре установить статус возврата — 0 (например, если не истек срок хранения документа), то удаление документа не будет выполнено.

Данная предопределенная процедура может располагаться только в глобальном программном модуле.

Пример:

Процедура ПриУдаленииДокумента(Док, Реж)

   Если НазваниеНабораПрав() = "Продавец" Тогда

      Если (Док.Вид() = "РасходнаяНакл") И (Реж = 1) Тогда

         Предупреждение("У вас нет права удалять накладную!", 2);

         СтатусВозврата(0);

      КонецЕсли;

   КонецЕсли;

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

См. также: СтатусВозврата

ПриУдаленииЭлемента

Предопределенная процедура при удалении элемента справочника и при отмене пометки на удаление.

Синтаксис:

ПриУдаленииЭлемента(<УдалЭлем>, <Режим>)

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

OnDeleteItem

Параметры:

<УдалЭлем> | Значение удаляемого элемента справочника.
<Режим> | Значение флага непосредственного удаления: 1 — непосредственное удаление; 0 — пометка на удаление.

Описание:

Вызов предопределенной процедуры ПриУдаленииЭлемента производится системой 1С:Предприятие неявно при интерактивном удалении элемента справочника и в случае отмены пометки на удаление. В этом случае, условия вызова можно узнать методом ПометкаУдаления элемента справочника. Если в данной предопределенной процедуре установить статус возврата — 0 (например, если нарушается ссылочная целостность системы), то удаление элемента справочника не будет выполнено.

Данная предопределенная процедура может располагаться только в глобальном программном модуле.

Пример:

Процедура ПриУдаленииЭлемента(Элем, Реж)

   Если НазваниеНабораПрав() = "Продавец" Тогда

      Если (Элем.Вид() = "Товар") И (Реж = 1) Тогда

         Предупреждение("У вас нет права удалять Товар!", 2);

         СтатусВозврата(0);

      КонецЕсли;

   КонецЕсли;

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

См. также: СтатусВозврата

ПриОткрытииИстории

Предопределенная процедура при открытии окна «История» значения периодического реквизита элемента справочника или константы.

Синтаксис:

ПриОткрытииИстории(<ТипОбъекта>, <Объект>, <ТолькоПросмотр>)

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

OnOpenHistory

Параметры:

<ТипОбъекта> | Название периодического объекта конфигурации, как оно задано в конфигураторе (например, "Справочник.Валюты.ТекущийКурс" или " Константа. ИмяДиректора"). Строковое название агрегатного типа данных может передаваться системой в русском или англоязычном написании (Справочник или Reference, Константа или Const) — в зависимости от установки флага основного языка системы (см. ОсновнойЯзык).
<Объект> | Элемент справочника, для которого выполняется открытие окна истории периодического реквизита. Имеет смысл только для периодических реквизитов справочников, а не для констант.
<ТолькоПросмотр> | Флаг установки режима "только просмотр" для окна истории значения. Если значение этого параметра установить в 1 (в предопределенной процедуре), то окно истории будет открыто только для чтения. Установка значения в 0 — введет режим по умолчанию (определенный правами). Уже открытое окно истории соответствующим образом изменит режим (если это случай, когда процедура обрабатывает не открытие окна, а смену отображаемого объекта). Значение по умолчанию — 0.

Описание:

Вызов предопределенной процедуры ПриОткрытииИстории производится системой 1С:Предприятие неявно при при открытии окна «История» значения периодического реквизита элемента справочника или константы. Если в данной предопределенной процедуре установить статус возврата — 0 (например, если данному пользователю запрещено изменение периодических реквизитов), то запись нового периодического значения не будет выполнена.

Данная предопределенная процедура может располагаться только в глобальном программном модуле.

Пример:

Процедура ПриОткрытииИстории(ТипОб, Об, ФлагРежима)

   Если НазваниеНабораПрав() = "Продавец" Тогда

      Если (ТипОб = "Справочник.Валюты.ТекКурс") И

           (Об = Константа.ОсновнаяВалюта)) Тогда

         Предупреждение("У вас нет права просматривать историю курса!", 2);

         СтатусВозврата(0);

      КонецЕсли;

   КонецЕсли;

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

См. также: СтатусВозврата, ОсновнойЯзык

ПриЗаписиИстории

Предопределенная процедура при записи в окне «История» значения периодического реквизита элемента справочника или константы.

Синтаксис:

ПриЗаписиИстории(<ТипОбъекта>, <Объект>, <3начение>, <ДатаИстории>)

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

OnWriteHistory

Параметры:

<ТипОбъекта> | Название периодического объекта конфигурации, как оно задано в конфигураторе (например, "Справочник.Валюты.ТекущийКурс" или "Константа. ИмяДиректора"). Строковое название агрегатного типа данных может передаваться системой в русском или англоязычном написании (Справочник или Reference, Константа или Const) — в зависимости от установки флага основного языка системы (см. ОсновнойЯзык).
<Объект> | Элемент справочника, для которого выполняется изменение периодического реквизита. Имеет смысл только для периодических реквизитов справочников, а не для констант.
<3начение> | Значение периодической записи.
<ДатаИстории> | Дата периодической записи.

Описание:

Вызов предопределенной процедуры ПриЗаписиИстории производится системой 1С:Предприятие неявно при интерактивной записи нового периодического значения в окне «История». Если в данной предопределенной процедуре установить статус возврата — 0 (например, если данному пользователю запрещено изменение периодических реквизитов), то запись нового периодического значения не будет выполнена.

Данная предопределенная процедура может располагаться только в глобальном программном модуле.

Пример:

Процедура ПриЗаписиИстории(ТипОб, Об, Значен, ДатаИстор)

   Если НазваниеНабораПрав() = "Продавец" Тогда

      Если (ТипОб = "Справочник.Валюты.ТекКурс") И

           (Об = Константа.ОсновнаяВалюта) И (ДатаИстор > РабочаяДата()) Тогда

         // Записывается курс для валюты, которая записана в Константе

         Предупреждение("У вас нет права устанавливать курс на будущую дату!", 2);

         СтатусВозврата(0);

      КонецЕсли;

   КонецЕсли;

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

Ом. также: СтатусВозврата, ОсновнойЯзык

ПриУдаленииИстории

Предопределенная процедура при удалении в окне «История» значения периодического реквизита элемента справочника или константы.

Синтаксис:

ПриУдаленииИстории(<ТипОбъекта>, <Объект>, <3начение>, <ДатаИстории>)

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

OnDeleteHistory

Параметры:

<ТипОбъекта> | Название периодического объекта конфигурации, как оно задано в конфигураторе (например, "Справочник.Валюты.ТекущийКурс" или " Константа. ИмяДиректора"). Строковое название агрегатного типа данных может передаваться системой в русском или англоязычном написании (Справочник или Reference, Константа или Const) — в зависимости от установки флага основного языка системы (см. ОсновнойЯзык).
<Объект> | Элемент справочника, для которого выполняется изменение периодического реквизита. Имеет смысл только для периодических реквизитов справочников, а не для констант.
<3начение> | Значение периодической записи.
<ДатаИстории> | Дата периодической записи.

Описание:

Вызов предопределенной процедуры ПриУдаленииИстории производится системой 1С:Предприятие неявно при интерактивном удалении периодической записи в окне «История». Если в данной предопределенной процедуре установить статус возврата — 0 (например, если данному пользователю запрещено изменение периодических реквизитов), то удаления периодического значения не будет выполнено.

Данная предопределенная процедура может располагаться только в глобальном программном модуле.

Пример:

Процедура ПриУдаленииИстории(ТипОб, Об, Значен, ДатаИстор)

   Если НазваниеНабораПрав() = "Продавец" Тогда

      Если (ТипОб = "Справочник.Валюты.ТекКурс") И

           (Об=Константа.ОсновнаяВалюта) И (ДатаИстор < РабочаяДата() - 7) Тогда

         // Удаляется курс для валюты, которая записана в Константе

         Предупреждение("У вас нет права удалять прошлый курс!", 2);

         СтатусВозврата(0);

      КонецЕсли;

   КонецЕсли;

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

См. также: СтатусВозврата, ОсновнойЯзык

ПриЗаписиКонстанты

Предопределенная процедура при записи значения константы.

Синтаксис:

ПриЗаписиКонстанты(<ИмяКонстанты>, <3начение>)

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

OnWriteConst

Параметры:

<ИмяКонстанты> | Название константы, как оно задано в конфигураторе (например, "СкладПоУмолчанию").
<3начение> | Новое значение константы.

Описание:

Вызов предопределенной процедуры ПриЗаписиКонстанты производится системой 1С:Предприятие неявно при интерактивной записи значения константы. Если в данной предопределенной процедуре установить статус возврата — 0 (например, если данное значение константы запрещено), то запись константы не будет выполнена.

Данная предопределенная процедура может располагаться только в глобальном программном модуле.

Пример:

Процедура ПриЗаписиКонстанты(ИмяКонстанты, Значение)

   Если ИмяКонстанты = "ТекущийПрефикс" Тогда

      Если НазваниеНабораПрав() = "Продавец" Тогда

         Предупреждение("У вас нет права менять префикс!", 2);

         СтатусВозврата(0);

      КонецЕсли;

   КонецЕсли;

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

См. также: СтатусВозврата

ПриОтменеПроведенияДокумента

Предопределенная процедура при отмене проведения документа.

Синтаксис:

ПриОтменеПроведенияДокумента(<Докум>)

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

OnUnPosting

Параметры:

<Докум>

Значение обрабатываемого документа.

Описание:

Вызов предопределенной процедуры ПриОтменеПроведенияДокумента производится системой 1С:Предприятие неявно при интерактивной попытке выполнить операцию «Сделать непроведенным». Если в данной предопределенной процедуре установить статус возврата — 0 (например, если дата документа меньше некоторой константы), то отмена проведения документа не будет выполнена.

Данная предопределенная процедура может располагаться только в глобальном программном модуле.

Пример:

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

   Если Док.ДатаДок <= Константа.ДатаЗащитыДокументов Тогда

      Предупреждение("Нельзя снимать с проведения архив!", 2);

      СтатусВозврата(0);

   КонецЕсли;

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

См. также: СтатусВозврата, СделатьНеПроведенным

ПриИзмененииВремениДокумента

Предопределенная процедура при изменении времени документа.

Синтаксис:

ПриИзмененииВремениДокумента(<Докум>)

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

OnChangeTimeDoc

Параметры:

<Докум>

Значение обрабатываемого документа.

Описание:

Вызов предопределенной процедуры ПриИзмененииВремениДокумента производится самой системой 1С:Предприятие неявно при интерактивной попытке изменить время документа. Если в данной предопределенной процедуре установить статус возврата — 0 (например, если время данного документа нельзя менять), изменение времени документа не будет выполнено.

Данная предопределенная процедура может располагаться только в глобальном программном модуле.

Пример:

Процедура ПриИзмененииВремениДокумента(Док)

   Если НазваниеНабораПрав() = "Продавец" Тогда

      Предупреждение("У вас нет права менять время документа!", 2);

      СтатусВозврата(0);

   КонецЕсли;

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

См. также: СтатусВозврата

ПриУстановкеОтбора

Предопределенная процедура при установке отбора.

Синтаксис:

ПриУстановкеОтбора(<ИмяРеквизОтбора>, <3начение>)

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

OnSetSelectInJournal

Параметры:

<ИмяРеквизОтбора> | Строковое значение — название общего реквизита документа (как оно задано в конфигураторе), по которому производится отбор (например, "Автор").
<3начение> | Значение реквизита отбора. Допустим, у документов существует общий реквизит "Автор", по которому решено провести отбор, значит в этом параметре будет передано конкретное значение этого реквизита, по которому решено провести отбор (например, "Сидоров И.А.").

Описание:

Вызов предопределенной процедуры ПриУстановкеОтбора производится самой системой 1С:Предприятие неявно при интерактивной попытке установить отбор документов в журнале. Если в данной предопределенной процедуре установить статус возврата — 0 (например, если данному пользователю нельзя устанавливать данное значение отбора документов), установка не будет выполнена.

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

Пример:

Процедура ПриУстановкеОтбора(ИмяОтбора, ЗначОтбора)

   Если НазваниеНабораПрав() = "Продавец" Тогда

      Если (Имя0тбора = "Автор") И (ЗначОтбора <> ТекущПользователь) Тогда

         Предупреждение("У вас нет права просматривать чужие документы!", 2);

         СтатусВозврата(0);

      КонецЕсли;

   КонецЕсли;

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

См. также: СтатусВозврата

ПриСменеРасчетногоПериода

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

Синтаксис:

ПриСменеРасчетногоПериода(<ЖурналРасчетов>, <Период>)

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

OnРег1odChange

Параметры:

<ЖурналРасчетов> | Журнал расчетов, период которого изменяется (агрегатный объект типа «ЖурналРасче-тов»).
<Период> | Устанавливаемый расчетный период (значение типа «ПериодРасчета»).

Описание:

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

Данная предопределенная процедура может располагаться только в глобальном программном модуле.

Пример:

Процедура ПриСменеРасчетногоПериода(ЖР, Период)

   Если ЖР.Вид() = "Зарплата" Тогда

      Предупреждение("Это смена текущего расчетного периода для журнала

                          | Зарплата");

   КонецЕсли;

   Если Период.ДатаНачала <= ЖР.НачалоТекущегоПериода Тогда

      //не позволяем откатывать период назад

      СтатусВозврата(0);

   КонецЕсли;

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

См. также: СтатусВозврата

ПриУдаленииСчета

Предопределенная процедура, выполняемая при удалении бухгалтерского счета.

Синтаксис:

ПриУдаленииСчета(<УдалСчет>, <Режим>)

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

OnDeleteAccount

Параметры:

<УдалСчет> | Значение типа «Счет» — удаляемый бухгалтерский счет.
<Режим> | Режим удаления. Может принимать значения: 1 — счет будет удален; 0 — счет будет помечен на удаление.

Описание:

Вызов предопределенной процедуры ПриУдаленииСчета производится системой 1С:Предприятие неявно при интерактивном удалении счета из плана счетов. В качестве параметров в процедуру передаются значение удаляемого счета и режим удаления: непосредственное удаление или пометка на удаление.

Если в данной процедуре установить статус возврата 0 (например, если нарушается ссылочная целостность системы), то счет не будет удален (или помечен на удаление).

Данная предопределенная процедура может располагаться только в глобальном программном модуле.

Пример:

Процедура ПриУдаленииСчета(УдСчет)

   Если УдСчет.Валютный() = 1 Тогда

      СтатусВозврата(0);

   КонецЕсли;

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

См. также: СтатусВозврата

ПриВыклВклПроводокОперации

Предопределенная процедура, выполняемая при выключении или включении проводок.

Синтаксис:

ПриВыклВклПроводокОперации(<Документ>)

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

OnOperEntryOffOn

Параметры:

<Документ>

Значение типа «Документ» — документ, которому принадлежит операция.

Описание:

Вызов предопределенной процедуры ПриВыклВклПроводокОперации производится системой 1С:Предприятие неявно при интерактивном выключении или включении проводок. В качестве параметра в процедуру передается значение документа, которому принадлежит операция.

Если в данной процедуре установить статус возврата 0, то действие не будет выполнено.

Данная предопределенная процедура может располагаться только в глобальном программном модуле.

Пример:

Процедура ПриВыклЗклПроводокОперации(Док)

   Если Док.Вид() <> "Операция" Тогда

      СтатусВозврата(0);

   КонецЕсли;

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

См. также: СтатусВозврата


Part9

Глава 9
Работа с Константами

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

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

Пример:

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

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

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

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

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

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

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

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

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

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

Пример:

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

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

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

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

// операторы

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

   // операторы

Иначе

   // операторы

КонецЕсли;

Методы констант

НазначитьТип

Назначить тип для константы неопределенного типа.

Синтаксис:

НазначитьТип(<ИмяКонстанты>, <ИмяТипа>, <Длина>, <Точность>)

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

SetType

Параметры:

<ИмяКонстанты> | Строковое выражение — название константы неопределенного типа, как она названа в конфигураторе.
<ИмяТипа> | Строковое выражение — название типа данных (или Вид субконто), который назначается константе. Например: "Строка", "Число", "Справочник.Товары", "Документ.РасходнаяНакладная" и т. п.
<Длина> | Необязательный параметр. Числовое выражение — длина поля представления данных. Имеет смысл только при задании числового или строкового типа.
<Точность> | Необязательный параметр. Числовое выражение — число знаков числа после десятичной точки. Имеет смысл только при задании числового типа.

Описание:

Метод НазначитьТип позволяет назначить тип для константы, которой в конфигураторе назначен тип «Неопределенный».

Пример:

Константа.НазначитьТип("ТМЦ", "Справочник.Товары");

УстановитьАтрибут

Установить значение константы по имени идентификатора.

Синтаксис:

УстановитьАтрибут(<ИмяРеквизита>, <3начение>)

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

SetAttrib

Параметры:

<ИмяРеквизита> | Строковое выражение, содержащее имя константы, как оно задано в конфигураторе.
<3начение> | Выражение, содержащее устанавливаемое значение константы.

Описание:

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

Пример:

Константа.УстановитьАтрибут("ФлагЗапретаРедактирования", 1);

ПолучитьАтрибут

Получить значение константы по идентификатору.

Синтаксис:

ПолучитьАтрибут(<ИмяАтрибута>)

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

GetAttrib

Параметры:

<ИмяАтрибута>

Строковое выражение, содержащее имя константы, как оно задано в конфигураторе.

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

Значение константы <ИмяАтрибута>.

Описание:

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

Пример:

ФлЗапрРед = Константа.ПолучитьАтрибут("ФлагЗапретаРедактирования");

Методы периодических констант

Получить

Получить значение периодической константы на дату.

Синтаксис:

Получить(<Дата>)

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

GetValue

Параметры:

<Дата>

Выражение со значением требуемой даты.

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

Значение константы на заданную дату.

Описание:

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

Пример:

// Константа.РазмерКомпенсации - периодическая

// поэтому получим значение этой константы на дату документа

РазмерДК = Константа.РазмерКомпенсации.Получить(ДатаДок);

Если РазмерДК <> 0 Тогда

   Результат = РазмерДК;

Иначе

   // операторы

КонецЕсли;

Установить

Установить значение периодической константы на дату.

Синтаксис:

Установить(<Дата>, <3начение>)

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

SetValue

Параметры:

<Дата> | Выражение со значением требуемой даты.
<3начение> | Новое значение константы.

Описание:

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

Пример:

Константа.РасчетныйСчет.Установить('01.07.96', "77889001");

Константа.Директор.Установить('01.01.85', "Иванов П.С.")


Part10

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

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

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

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

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

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

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

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

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

Пример:

* В форме редактирования элемента справочника «Сотрудники» мы имеем непосредственный доступ к текущему элементу (сотруднику) справочника. Значит, чтобы изменить имя текущего сотрудника, просто укажем:

Наименование = "Сидоров С.С.";

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

Пример:

* Если в документе значение реквизита "Сотрудники" имеет тип «Справочник», имя сотрудника можно узнать следующим образом:

ИмяСотр = Док.Сотрудники.Наименование;

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

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

Справочник.Имя_Справочника

где <Имя_Справочника> — название справочника, определенное в конфигураторе.

Англоязычный синоним ключевого слова Справочник — Reference. Допускается создавать объект неопределенного вида справочника. В этом случае название конкретного вида справочника в параметре вызова функции СоздатьОбъект опускается. Далее для работы с таким объектом ему надо установить вид справочника при помощи метода Вид.

Пример:

Спр1=СоздатьОбъект("Справочник.Товары");

Спр2=СоздатьОбъект("Справочник.Клиенты");

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

СпрЗ.Вид("Валюты");

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

Замечание. Объект, созданный при помощи функции СоздатьОбъект, изначально не спозиционирован, т. е. не указывает на конкретный элемент справочника. Чтобы начать с ним работать, его предварительно надо позиционировать при помощи методов НайтиЭлемент, НайтиПоКоду, ПолучитьЭлемент и т. п.

Пример:

*

//В модуле Формы списков Справочника

// меняем наименование выбранного в списке элемента справочника

Наименование = "Администрация";

*

// В модуле Формы элемента справочника или

// В модуле Формы группы справочника

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

// меняем наименование обрабатываемого элемента справочника

Наименование = "Бухгалтерия";

*

// В других программных модулях

Спр = СоздатьОбъект("Справочник.Товары");

Спр.Новый();

//задаем реквизиты элемента Справочника, используя атрибуты

Спр.Наименование = "Авто-Элемент";

Спр.Код = 1032;

Спр.Размер = 10045;

Спр.Записать();

Атрибуты справочников

Код

Значение реквизита Код.

Синтаксис:

Код

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

Code

Описание:

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

Пример:

Спр = СоздатьОбъект("Справочник.Подразделения");

Спр.НайтиПоКоду("29");

Ид = Спр.Код;

Спр.Код = Ид + "5";

Наименование

Значение реквизита Наименование.

Синтаксис:

Наименование

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

Description

Описание:

Атрибут Наименование предоставляет доступ к значению обязательного реквизита "Наименование" выбранного элемента справочника.

Пример:

Спр = СоздатьОбъект("Справочник.Подразделения");

Спр.НайтиПоКоду("29");

Подразделение = Спр.Наименование;

<Реквизит>

Значение реквизита справочника.

Синтаксис:

<Реквизит>

Идентификатор реквизита справочника, как он задан в конфигураторе.

Описание:

Атрибут <Реквизит> предоставляет доступ к значению реквизита выбранного элемента справочника. В тексте программного модуля в качестве названия реквизита подставляется идентификатор конкретного реквизита справочника, созданного в конфигураторе.

Пример:

// В этом примере справочник "Сотрудники" имеет реквизит "Оклад"

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

Спр.НайтиПоКоду("111");

ОкладСотр = Спр.Оклад;

Спр.Оклад = ОкладСотр * 1.5;

Родитель

Значение родительской группы элемента справочника.

Синтаксис:

Родитель

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

Parent

Описание:

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

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

Пример:

Функция ДатьРодителя(Элем)

   // Справочник Товаров многоуровневый

   // Получая в параметре функции значение товара,

   // надо выдать имя группы товара

   Спр = СоздатьОбъект("Справочник.Товары");

   Спр.НайтиЭлемент(Элем);

   Если Спр.Уровень() > 1 Тогда

      Спр.НайтиЭлемент(Спр.Родитель);

      Возврат "Этот товар принадлежит группе " + Спр.Наименование;

   Иначе

      Возврат "Это товар первого уровня - нет родителя!";

   КонецЕсли;

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

Владелец

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

Синтаксис:

Владелец

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

Owner

Описание:

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

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

Пример:

Функция ДатьВладельца(Элем)

   // Справочник "Единицы" подчинен Справочнику "Товары"

   // Получая в параметре функции значение Единицы измерения товара,

   // надо выдать имя товара, для которого задана эта единица изм.

   СпрТ = СоздатьОбъект("Справочник.Товары");

   СпрЕ = СоздатьОбъект("Справочник.Единицы");

   СпрЕ.НайтиЭлемент(Элем);

   СпрТ.НайтиЭлемент(СпрЕ.Владелец);

   Возврат "Это единица измерения товара " + СпрТ.Наименование;

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

Методы периодических реквизитов

Получить

Получить значение периодического реквизита справочника на дату (или на документ).

Синтаксис:

Получить(<Дата>)

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

GetValue

Параметры:

<Дата>

Необязательный параметр. Выражение со значением требуемой даты или значение типа «документ» (в этом случае возвращается значение на дату и время документа). Значение по умолчанию — ТА.

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

Значение периодического реквизита справочника на заданную дату (или на документ).

Описание:

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

Замечание: Если к объекту типа «справочник» однажды применен метод ИспользоватьДату, то в дальнейшем, чтобы выбирать значения периодических реквизитов справочника, нельзя применять к этому же объекту метод Получить, т. е. в такой последовательности эти два метода несовместимы.

Пример:

// при работе в контексте документа, его реквизит "Сотрудник"

// является переменной типа "справочник",

// чтобы получить значение периодического реквизита "Оклад" этого

// справочника, применим функцию Получить

ОкладСотр = Сотрудники.Оклад.Получить(ДатаДок);

См. также: ИспользоватьДату, Установить

Установить

Записать новое значение периодического реквизита справочника на заданную дату.

Синтаксис:

Установить(<Дата>, <3начение>)

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

SetValue

Параметры:

<Дата> | Выражение со значением требуемой даты.
<3начение> | Выражение, содержащее устанавливаемое значение периодического реквизита справочника.

Описание:

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

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

Замечание: Если к объекту типа «справочник» однажды применен метод ИспользоватьДату, то в дальнейшем, чтобы записать новые значения периодических реквизитов справочника, нельзя применять к этому же объекту метод Установить, т. е. в такой последовательности эти два метода несовместимы.

Пример:

// при работе в контексте документа, его реквизит "Сотрудник"

// является переменной типа "справочник",

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

// реквизита "Оклад" этого элемента

// справочника, применим функцию Получить

Сотрудники.Оклад.Установить(ДатаДок, МаксОклад);

См. также: ИспользоватьДату, УстановитьРеквизитСправочника, Получить

Методы справочников

Вид

Определить вид справочника.

Синтаксис:

Вид(<Название>)

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

Kind

Параметры:

<Название>

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

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

Строковое значение, содержащее текущее название вида справочника (на момент до исполнения метода).

Описание:

Метод Вид позволяет установить или получить текущее название вида справочника. В тексте программы метод Вид можно использовать как процедуру или как функцию. Если при вызове метода параметр <Название> задан явно, то вид справочника устанавливается в соответствии с этим параметром. Метод возвращает строку, содержащую текущий (на момент до исполнения метода) идентификатор вида справочника, как он задан в конфигураторе.

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

Пример:

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

Спр1 = СоздатьОбъект("Справочник.Товары");

Состояние(Cnpl.Вид());

Спр2 = СоздатьОбъект("Справочник.Клиенты");

Состояние(Спр2.Вид());

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

СпрЗ.Вид("Валюты");

Состояние(СпрЗ.Вид());

ПредставлениеВида

Определить пользовательское представление вида справочника.

Синтаксис:

ПредставлениеВида()

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

KindPresent

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

Строковое значение, содержащее пользовательское представление вида справочника (синоним справочника или, если он пустой, то идентификатор).

Описание:

Метод ПредставлениеВида позволяет получить пользовательское представление вида справочника, как он задан в конфигураторе.

Пример:

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

Спр1 = СоздатьОбъект("Справочник.Товары");

Состояние(Cnpl.ПредставлениеВида());

Уровень

Определить номер уровня элемента справочника.

Синтаксис:

Уровень()

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

Level

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

Числовое значение номера уровня текущего элемента справочника.

Описание:

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

Пример:

Спр = СоздатьОбъект("Справочник.Подразделения");

Спр.ИспользоватьДату(РабочаяДата());

Спр.ВыбратьЭлементы();

Пока Спр.ПолучитьЭлемент() > 0 Цикл

   Сообщить(Строка(Спр.Наименование + Спр.Код + Спр.Уровень());

КонецЦикла;

УстановитьАтрибут

Установить значение реквизита по имени идентификатора.

Синтаксис:

УстановитьАтрибут(<ИмяРеквизита>, <3начение>)

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

SetAttrib

Параметры:

<ИмяРеквизита> | Строковое выражение, содержащее имя реквизита, как оно задано в конфигураторе.
<3начение> | Выражение, содержащее устанавливаемое значение реквизита.

Описание:

Метод УстановитьАтрибут позволяет установить значение реквизита по имени идентификатора, как оно задано в конфигураторе.

Пример:

Тов.УстановитьАтрибут("ЦенаРозн", ЦенаТов);

ПолучитьАтрибут

Получить значение реквизита по имени идентификатора.

Синтаксис:

ПолучитьАтрибут(<ИмяРеквизита>)

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

GetAttrib

Параметры:

<ИмяРеквизита>

Строковое выражение, содержащее имя реквизита, как оно задано в конфигураторе.

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

Значение реквизита <ИмяРеквизита>.

Описание:

Метод ПолучитьАтрибут позволяет получить значение реквизита по имени идентификатора, как оно задано в конфигураторе.

Пример:

ЦенаТов = Тов.ПолучитьАтрибут("ЦенаРозн");

ЭтоГруппа

Проверить принадлежность к группам.

Синтаксис:

ЭтоГруппа()

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

IsGroup

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

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

Описание:

Метод ЭтоГруппа возвращает числовое значение 1 — если выбранный элемент справочника является группой , 0 — если выбранный элемент справочника обычный элемент.

Пример:

* В данном примере мы просматриваем весь справочник "Сотрудники" и для групп сотрудников выводим в таблицу секцию "Группа", а для сотрудников выводим секцию " Элемент"

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

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

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

Сотр.ВыбратьЭлементы();

Пока Сотр.ПолучитьЭлемент() > 0 Цикл

   Если Сотр.ЭтоГруппа() = 1 Тогда

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

   Иначе

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

   КонецЕсли;

КонецЦикла;

См. также: ПринадлежитГруппе

ПринадлежитГруппе

Проверить принадлежность к группе.

Синтаксис:

ПринадлежитГруппе(<Группа>)

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

BelongsToGroup

Параметры:

<Группа>

Выражение со значением группы справочника.

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

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

Описание:

Метод ПринадлежитГруппе проверяет, принадлежит ли указанной группе текущий элемент справочника (не важно, на каком нижестоящем уровне он находится). Возвращаемое числовое значение: 1 — если да; 0 — если нет.

Пример:

// выведем в отчет только те подразделения, которые

// принадлежат группе ВыбГруппа

Процедура ВывестиНаПечать()

   // . . .

   Возврат;

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

...

Спр = СоздатьОбъект("Справочник.Подразделения");

// Задаем выборку в порядке кодов Спр.ПорядокКодов();

Спр.ВыбратьЭлемернты();

Пока Спр.ПолучитьЭлемент() = 1 Цикл

   Если Спр.ПринадлежитГруппе(ВыбГруппа) = -1 Тогда

      ВывестиНаПечать();

   КонецЕсли;

КонецЦикла;

См. также: ЭтоГруппа

Выбран

Проверить факт выбора элемента справочника.

Синтаксис:

Выбран()

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

Selected

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

Числовое значение: 1 — если элемент справочника выбран (спозиционирован); 0 — если не выбран.

Описание:

Метод Выбран возвращает число со значением 1 — если элемент справочника выбран (спозиционирован), 0 — если элемент справочника не выбран.

Пример:

// В диалоге формирования некоторого отчета

// ВыбСклад - реквизит диалога типа «справочник.Склад»

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

   // Если Склад в диалоге не выбран, то формируем без условий

   Заг1 = "По всем складам.";

Иначе

   // если в диалоге выбран Склад

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

   Заг1 = "Отчет по складу " + ВыбСклад.Наименование;

КонецЕсли;

Выбрать

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

Синтаксис:

Выбрать(<Подсказка>, <Форма Списка>)

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

Choose

Параметры:

<Подсказка> | Текст заголовка окна диалога выбора. Может использоваться в качестве подсказки конечному пользователю.
<ФормаСписка> | Строковое выражение идентификатора той формы списка справочника (как он объявлен в конфигураторе), которая должна использоваться для выбора. Если это значение пустое, то используется форма списка по умолчанию.

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

Числовое значение: 1 — если элемент выбран; 0 — если не выбран.

Описание:

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

Пример:

// данная процедура присваивает некоторому реквизиту "Фирма"

// значение из Справочника.Фирмы

Процедура УстФирмы()

   // Создадим объект требуемого справочника

   Фрм = СоздатьОбъект("Справочник.Фирмы");

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

   // поэтому установим дату выборки периодических реквизитов

   Фрм.ИспользоватьДату(ДатаДок);

   // Вызываем диалог выбора элемента Справочника

   Если Фрм.Выбрать("Выберите фирму", "") > 0 Тогда

      Фирма = Фрм.ТекущийЭлемент();

   КонецЕсли;

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

См. также: ВидыДляВыбора

ВидыДляВыбора

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

Синтаксис:

ВидыДляВыбора(<СписокВидов>)

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

KindsForChoise

Параметры:

<СписокВидов>

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

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

Строковое значение, содержащее текущий список видов выбираемых справочников, разделенных запятыми (на момент до исполнения метода).

Описание:

Метод ВидыДляВыбора устанавливает выбираемые виды для объекта-справочника неопределенного вида. Данный метод обычно используется до начала интерактивного позиционирования элемента справочника, например, при помощи метода Выбрать.

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

Пример:

// данная процедура присваивает некоторому реквизиту "Фирма"

// значение из Справочника.Фирмы

Процедура УстФирмы()

   // Создадим объект требуемого справочника

   Фрм = СоздатьОбъект("Справочник");

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

   // поэтому установим дату выборки периодических реквизитов

   Фрм.ВидыДляВыбора("Фирмы");

   Фрм.ИспользоватьДату(ДатаДок);

   // Вызываем диалог выбора элемента справочника

   Если Фрм.Выбрать("Выберите фирму", "") > 0 Тогда

      Фирма = Фрм.ТекущийЭлемент();

   КонецЕсли;

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

См. также: Выбрать

ВыборГруппы

Установить режим выборки групп.

Синтаксис:

ВыборГруппы(<Режим>)

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

SelectGroup

Параметры:

<Режим>

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

1 — выбирать группы; 0—не выбирать группы.

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

Текущее числовое значение режима выборки групп (на момент до исполнения метода).

Описание:

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

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

Пример:

* Если в форме документа необходимо, чтобы какой-либо реквизит "Статус" типа «справочник» мог принимать значения как элемента, так и группы, то этому реквизиту следует установить:

Статус.ВыборГруппы(1);

*

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

// Задаем выборку без групп

Спр.ВыборГруппы(0);

// Открываем выборку

Спр.ВыбратьЭлементы();

// Цикл получения элементов справочника

Пока (Спр.ПолучитьЭлемент() > 0) Цикл

   Состояние(Спр.Наименование);

КонецЦикла;

ТекущийЭлемент

Получить значение элемента справочника.

Синтаксис:

ТекущийЭлемент()

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

Currentltem

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

Значение элемента справочника.

Описание:

Метод ТекущийЭлемент возвращает значение элемента справочника в целом, как объекта. Данный метод применяется, например, если нужно элемент справочника передать как параметр в вызове какого-либо метода или присвоить какому-либо реквизиту.

Пример:

// данная процедура присваивает некоторому реквизиту "Фирма"

// значение из справочника "Фирмы"

Процедура УстФирмы()

   // Создадим объект требуемого справочника

   Фрм = СоздатьОбъект("Справочник.Фирмы");

   // Вызываем диалог выбора элемента справочника

   Если Фрм.Выбрать("Выберите фирму", "") > 0 Тогда

      Фирма = Фрм.ТекущийЭлемент();

   КонецЕсли;

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

ПолныйКод

Определить полный код элемента справочника.

Синтаксис:

ПолныйКод()

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

FullCode

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

Строковое значение, содержащее полный код выбранного элемента справочника.

Описание:

Метод ПолныйКод возвращает строку, содержащую полный код выбранного элемента справочника (с кодами групп всех вышестоящих уровней, разделенными символом "/").

Пример:

ПолнКод = Спр.Подразделения.ПолныйКод();

См. также: НайтиПоКоду

ПолноеНаименование

Определить полное наименование элемента справочника.

Синтаксис:

ПолноеНаименование()

Англоязычный синоним:

FullDescr

Возвращаемое значение:

Строковое значение, содержащее полное наименование выбранного элемента справочника.

Описание:

Метод ПолноеНаименование возвращает строку, содержащую полное наименование выбранного элемента справочника (с наименованиями групп всех вышестоящих уровней, разделенными символом "/").

Пример:

ПолнИмя = Спр.Подразделения.ПолноеНаименование();

См. также: НайтиПоНаименованию

НайтиЭлемент

Найти элемент справочника по значению.

Синтаксис:

НайтиЭлемент(<Элемент>)

Англоязычный синоним:

Findltem

Параметры:

<Элемент>

Выражение со значением элемента справочника.

Возвращаемое значение:

Число 1 — если действие выполнено;

Число 0 — если действие не выполнено (элемент не найден).

Описание:

Метод НайтиЭлемент выполняет поиск элемента справочника по значению, заданному параметром <Элемент>, и позиционирует объект справочник на этом элементе.

Данный метод может использоваться только для объектов, созданных функцией СоздатьОбъект.

Пример:

// НашБанк должен иметь тип «справочник.Банки»

Бнк = СоздатьОбъект("Справочник.Банки");

Бнк.ИспользоватьДату(ДатаДок);

Если НашБанк.Выбран() = 1 Тогда

   // Позиционируем созданный объект Бнк на заданном элементе

   Бнк.НайтиЭлемент(НашБанк);

   Процент = Бнк.Процент;

   НазваниеБанка = Бнк.Наименование;

КонецЕсли;

См. также: ТекущийЭлемент

НайтиПоКоду

Найти элемент справочника по коду.

Синтаксис:

НайтиПоКоду(<Код>, <ФлагПоиска>)

Англоязычный синоним:

FindByCode

Параметры:

<Код>

Выражение со значением искомого кода.

<ФлагПоиска>

Необязательный параметр. Числовое выражение — флаг поиска: 0 — поиск во всем справочнике вне зависимости от родителя; 1 — поиск внутри установленного подчинения (родителя); 2 — поиск по полному коду.

Значение по умолчанию: 0 — для справочников, у которых код уникален во всем справочнике; 2 — для справочников, у которых код уникален в группе.

Возвращаемое значение:

Число 1 — если действие выполнено;

Число 0 — если действие не выполнено (элемент не найден).

Описание:

Метод НайтиПоКоду выполняет поиск элемента справочника по значению кода, заданному параметром <Код>, и позиционирует объект справочник на этом элементе. Если справочник многоуровневый, то полный код выбираемого элемента можно задавать, разделяя коды уровней символом "/".

Данный метод может использоваться только для объектов, созданных функцией СоздатьОбъект.

Пример:

// Контекст журнала расчетов.

// Реквизит Подразд имеет тип «справочник»

Пдр = СоздатьОбъект("Справочник.Подразделения");

Пдр.ИспользоватьДату(ДатаДок);

Если Документ.Подразд <> 0 Тогда

   // если в документе код подразделения указан...

   Пдр.НайтиПоКоду(Документ.Подразд);

   Если Пдр.Выбран() > 0 Тогда

      Сообщить("Есть такое подразделение !")

   Иначе

      Сообщить("Нет такого подразделения!")

   КонецЕсли;

КонецЕсли;

См. также: ПолныйКод

НайтиПоНаименованию

Найти элемент справочника по наименованию.

Синтаксис:

НайтиПоНаименованию(<Наименование>, <Режим>, <ФлагПоиска>)

Англоязычный синоним:

FindByDescr

Параметры:

<Наименование> | Строковое выражение с наименованием искомого элемента справочника.
<Режим> | Необязательный параметр. Числовое выражение — режим поиска: 1 — поиск внутри установленного подчинения (родителя); 0 — поиск во всем справочнике вне зависимости от родителя. Значение по умолчанию — 1.
<ФлагПоиска> | Необязательный параметр. Числовое выражение — флаг поиска: 1 — найти точное соответствие наименования; 0 — найти наименование по первым символам. Значение по умолчанию — 0.

Возвращаемое значение:

Число 1 — если действие выполнено;

Число 0 — если действие не выполнено (элемент не найден).

Описание:

Метод НайтиПоНаименованию выполняет поиск элемента справочника по наименованию, заданному параметром <Наименование> и позиционирует объект справочник на этом элементе.

Данный метод может использоваться только для объектов, созданных функцией СоздатьОбъект.

Пример:

Спр = СоздатьОбъект("Справочник.Сотрудники");

Спр.ИспользоватьДату(ДатаДок);

// Позиционируем созданный объект Спр по известному наименованию

Спр.НайтиПоНаименованию("Иванов", 1);

Если Спр.Выбран() > 0 Тогда

   Оклад=Спр.Оклад;

   Подразделение = Спр.Подразделение;

Иначе

   Предупреждение("Нет у нас Ивановых!");

КонецЕсли;

См. также: ПолноеНаименование

НайтиПоРеквизиту

Найти элемент справочника по значению реквизита.

Синтаксис:

НайтиПоРеквизиту(<ИмяРеквизита>, <3начение>, <ФлагГлобальногоПоиска>)

Англоязычный синоним:

FindByAttribute

Параметры:

<ИмяРеквизита> | Строковое выражение с наименованием реквизита.
<3начение> | Значение реквизита для поиска.
<ФлагГлобальногоПоиска> | Числовое выражение. Если 0, то поиск должен выполняться в пределах подчинения справочника, если 1, то поиск должен выполняться по всему справочнику.

Возвращаемое значение:

Число 1 — если действие выполнено;

Число 0 — если действие не выполнено (элемент не найден).

Описание:

Метод НайтиПоРеквизиту выполняет поиск первого элемента с указанным значением заданного реквизита и позиционирует объект справочник на этом элементе.

Данный метод может использоваться только в том случае, если в конфигураторе при описании данного реквизита установлен признак «Сортировка» (Свойства реквизита - Дополнительные - Сортировка).

Данный метод может использоваться только для объектов, созданных функцией СоздатьОбъект.

Пример:

Спр = СоздатьОбъект("Справочник.Сотрудники");

Спр.ИспользоватьДату(ДатаДок);

// Позиционируем созданный объект Спр по реквизиту

Спр.НайтиПоРеквизиту("СерияПаспорта", "XXVII-OP", 1);

Если Спр.Выбран() > 0 Тогда

   Имя = Спр.Наименование;

Иначе

   Предупреждение("Не найден сотрудник с таким паспортом!");

КонецЕсли;

ВыбратьЭлементы

Открыть выборку элементов справочника

Синтаксис:

ВыбратьЭлементы(<Режим>)

Англоязычный синоним:

SelectItems

Параметры:

<Режим>

Необязательный параметр. Числовое выражение: 1 — выбирать элементы с учетом иерархии; 0 — выбирать элементы без учета иерархии. Значение по умолчанию — 1.

Возвращаемое значение:

Число 1 — если действие выполнено и в выборке есть хотя бы один элемент;

Число 0 — если действие не выполнено или в выборке нет ни одного элемента.

Описание:

Метод ВыбратьЭлементы предоставляет возможность выбирать элементы (открывает выборку) при помощи метода ПолучитьЭлемент.

Дальнейшая выборка при помощи метода ПолучитьЭлемент будет происходить среди элементов текущего справочника в порядке, установленном заранее при помощи методов: ПорядокНаименований, ПорядокКодов, ВключатьПодчиненные, ИспользоватьРодителя, ИспользоватьВладельца, ИспользоватьДату.

Данный метод может использоваться только для объектов, созданных функцией СоздатьОбъект.

Пример:

Акц = СоздатьОбъект("Справочник.Акционеры");

Таб = СоздатьОбъект("Таблица");

Акц.ИспользоватьДату(ДатаОтчета);

Таб.ВывестиСекцию("Отчет");

// Открываем выборку Акц.ВыбратьЭлементы();

// Цикл получения элементов справочника

Пока Акц.ПолучитьЭлемент() > 0 Цикл

   Если Акц.ЭтоГруппа() = 1 Тогда

      Таб.ВывестиСекцию("Группа");

   Иначе

      Таб.ВывестиСекцию("Акционер");

   КонецЕсли;

КонецЦикла;

См. также: ПолучитьЭлемент, ПорядокНаименований, ПорядокКодов, ВключатьПодчиненные, ИспользоватьРодителя, ИспользоватьВладельца, ИспользоватьДату.

ВыбратьЭлементыПоРеквизиту

Открыть выборку элементов справочника по значению реквизита.

Синтаксис:

ВыбратьЭлементыПоРеквизиту(<ИмяРеквизита>, <3начение>, <РежимИерархии>,
 <РежимГрупп>)

Англоязычный синоним:

Select ItemsByAttribute

Параметры:

<ИмяРеквизита> | Строковое выражение с именем реквизита справочника, который задает порядок обхода элементов справочника.
<3начение> | Значение реквизита для выборки.
<РежимИерархии> | Необязательный параметр. Числовое выражение: 1 — выбирать элементы с учетом иерархии; 0 — выбирать элементы без учета иерархии. Значение по умолчанию — 1.
<РежимГрупп> | Числовое выражение: 1 — выбирать среди групп справочника; 0 — выбирать среди элементов справочника.

Возвращаемое значение:

Число; 1 — если действие выполнено и в выборке есть хотя бы один элемент; 0 — если действие не выполнено или в выборке нет ни одного элемента.

Описание:

Метод ВыбратьЭлементыПоРеквизиту предоставляет возможность выбирать элементы (открывает выборку) при помощи метода ПолучитьЭлемент.

Дальнейшая выборка при помощи метода ПолучитьЭлемент будет происходить среди элементов текущего справочника, имеющих значение реквизита <ИмяРеквизита> равным <3начение>, в порядке, установленном параметрами <РежимИерархии> и <РежимГрупп>, а также согласно установкам, сделанным заранее при помощи методов:

ПорядокНаименований,

ПорядокКодов,

ВключатьПодчиненные,

ИспользоватьРодителя,

ИспользоватьВладельца,

ИспользоватьДату.

Данный метод может использоваться только в том случае, если в конфигураторе при описании данного реквизита установлен признак «Сортировка» (Свойства реквизита - Дополнительные - Сортировка).

Данный метод может использоваться только для объектов, созданных функцией СоздатьОбъект.

Пример:

Акц = СоздатьОбъект("Справочник.Акционеры");

Таб = СоздатьОбъект("Таблица");

Акц.ИспользоватьДату(ДатаОтчета);

Таб.ВывестиСекцию("Отчет");

// Открываем выборку

Акц.ВыбратьЭлементыПоРеквизиту("Отдел", НомерОтдела, 1, 0);

// Цикл получения элементов справочника

Пока Акц.ПолучитьЭлемент() > 0 Цикл

   Если Акц.ЭтоГруппа() = 1 Тогда

      Таб.ВывестиСекцию("Группа");

      Таб.ВывестиСекцию("Акционер");

   КонецЕсли;

КонецЦикла;

См. также: ПолучитьЭлемент, ПорядокНаименований, ПорядокКодов, ОбратныйПорядок, ВключатьПодчиненные, ИспользоватьРодителя, ИспользоватьВладельца, ИспользоватьДату

ОбратныйПорядок

Установить порядок выборки элементов справочника.

Синтаксис:

ОбратныйПорядок(<Режим>)

Англоязычный синоним:

BackwardOrder

Параметры:

<Режим>

Необязательный параметр. Числовое выражение: 1 — выбирать элементы справочника в обратном порядке; 0 — выбирать элементы справочника в прямом порядке. Значение по умолчанию — 1.

Возвращаемое значение:

Текущее значение порядка выборки элементов справочника (на момент до исполнения метода): 1 — обратный порядок выборки элементов справочника; 0 — выборка элементов справочника в прямом порядке.

Описание:

Метод ОбратныйПорядок устанавливает порядок выборки элементов справочника. Данный метод обычно используется до вызова одного из методов: ВыбратьЭлементы, ВыбратьЭлементыПоРеквизиту который фактически открывает выборку. Дальнейшая выборка при помощи ПолучитьЭлемент будет происходить в заданном порядке выборки.

По умолчанию, выборка элементов справочника выполняется в прямом порядке. Поэтому реально имеет смысл применять данный метод только в том случае, если надо получить обратный порядок выборки.

В тексте программного модуля возможно использование данного метода как процедуры или как функции. При использовании в качестве функции, возвращаемое значение соответствует текущему порядку выборки, которое было до вызова данного метода.

Данный метод может использоваться только для объектов, созданных функцией СоздатьОбъект.

Пример:

Таб = СоздатьОбъект("Таблица");

Акц = СоздатьОбъект("Справочник.Акционеры");

Акц.ИспользоватьДату(ДатаОтчета);

Таб.ВывестиСекцию("Отчет");

// Открываем выборку Акц.ВыбратьЭлементы();

Акц.ПорядокКодов();

Акц.ОбратныйПорядок(1);

// Цикл получения элементов справочника.

Пока Акц.ПолучитьЭлемент() > 0 Цикл

   Если Акц.Это Группа() = 1 Тогда

      Таб.ВывестиСекцию("Группа");

   Иначе

      Таб.ВывестиСекцию("Акционер");

   КонецЕсли;

КонецЦикла;

См. также: ВыбратьЭлементы, ПолучитьЭлемент, ПорядокНаименований, ПорядокКодов, ВключатьПодчиненные, ИспользоватьРодителя, ИспользоватьВладельца, ИспользоватьДату

ПолучитьЭлемент

Получить из выборки следующий элемент справочника.

Синтаксис:

ПолучитьЭлемент(<Режим>)

Англоязычный синоним:

Getltem

Параметры:

<Режим>

Необязательный параметр. Числовое выражение: 1 — надо включать в выборку все подчиненные элементы, если 0 — не надо включать подчиненные элементы. Значение по умолчанию — 1.

Возвращаемое значение:

Числовое значение: 1 — если элемент выбран успешно, 0 — если элемент не выбран (отсутствует).

Описание:

Метод ПолучитьЭлемент выбирает следующий элемент справочника в последовательности выборки, открытой перед этим при помощи метода ВыбратьЭлементы.

Данный метод может применяться только для объектов, созданных функцией СоздатьОбъект, и используется для организации цикла поиска по справочнику.

Пример:

Спр = СоздатьОбъект("Справочник.ОсновныеСредства");

// Задаем выборку в порядке кодов

Спр.ПорядокКодов();

// Открываем выборку

Спр.ВыбратьЭлементы();

// Цикл получения элементов справочника

Пока Спр.ПолучитьЭлемент() > 0 Цикл

   Сообщить("===" + Спр.Наименование);

КонецЦикла;

См. также: ВыбратьЭлементы, ПолучитьЭлемент, ПорядокНаименований, ОбратныйПорядок, ПорядокКодов, ВключатьПодчиненные, ИспользоватьРодителя, ИспользоватьВладельца, ИспользоватьДату

ИспользоватьДату

Установить дату выборки периодических реквизитов справочника.

Синтаксис:

ИспользоватьДату[<Дата>, <УстСразу>)

Англоязычный синоним:

UseDate

Параметры:

<Дата> | Необязательный параметр. Выражение со значением типа «дата».
<УстСразу> | Необязательный параметр. Число: если 1, то дата, переданная в качестве параметра, будет установлена уже в текущей выборке; если 0 — то дата, переданная в качестве параметра будет установлена при следующей выборке. Значение по умолчанию — 0. Например: если "Цена" — периодический реквизит справочника, то Спр.ИспользоватьДату(Д1, 1); Спр.ВыбратьЭлементы(); А = Спр.Цена; — возвращает значение на дату Д1 Спр.ИспользоватьДату(Д2, 1); Б = Спр.Цена; — возвращает значение на дату Д2! Если <УстСразу> — 0 (или опущен), то Спр.ИспользоватьДату(Д1); Спр.ВыбратьЭлементы(); А = Спр.Цена; — возвращает значение на дату Д1 Спр.ИспользоватьДату(Д2); Б=Спр.Цена; — тоже возвращает значение на дату Д1! Спр.ВыбратьЭлементы(); В=Спр.Цена; — только теперь возвращает значение на Д2.

Возвращаемое значение:

Текущее значение используемой даты (на момент до исполнения метода).

Описание:

Метод ИспользоватьДату устанавливает для объекта типа «справочник» дату, на которую будут в дальнейшем выбираться (или записываться) значения периодических реквизитов справочника.

Это очень важный метод, о котором необходимо всегда помнить при работе со справочниками, имеющими периодические реквизиты. Если он пропущен, то чначения выбранных периодических реквизитов справочника будут не определены.

Замечание: Если к объекту типа «справочник» однажды применен метод ИспользоватьДату, то в дальнейшем, чтобы выбирать значения периодических реквизитов справочника, нельзя применять к этому же объекту методы Получить и Установить, т. е. в такой последовательности эти методы несовместимы.

Замечание: Данный метод имеет следующую особенность применения: его нельзя использовать «через две точки». Например, если в документе с именем "ДокНакл" есть реквизит "Фирма" типа «справочник», у которого есть периодические реквизиты НДС и СН, то следующий оператор:
ДокНакл.Фирма.ИспользоватьДату(Дата);
работать не будет. В данном случае следует просто использовать промежуточную переменную, например:
ФирДок = ДокНакл.Фирма;
ФирДок.ИспользоватьДату(РабочаяДата());
НДСДок = ФирДок.НДС;

Пример:

// Здесь мы работаем в локальном контексте модуля Формы

// редактирования документа.

// Реквизит "Должность" в документе является справочником,

// у которого "МинОкл" - периодический реквизит

Длж = СоздатьОбъект("Справочник.Должности");

Длж.ИспользоватьДату(ДатаДок);

Длж.НайтиЭлемент(Должность);

Сообщить(Длж.Наименование + " Минимальный оклад" + Строка(Длж.МинОкл));

См. также: Получить, Установить, НайтиЭлемент, ВыбратьЭлементы

ИспользоватьВладельца

Установить выборку подчиненного справочника.

Синтаксис:

ИспользоватьВладельца(<Владелец>, <ФлагИзменения>)

Англоязычный синоним:

UseOwner

Параметры:

<Владелец> | Необязательный параметр. Выражение со значением элемента справочника-владельца.
<ФлагИзменения> | Необязательный параметр. Этим флагом регулируется возможность интерактивного изменения владельца. 1 — пользователь может изменить владельца интерактивно, 0 — пользователь не может интерактивно изменить владельца. Этот параметр используется в случае использовсния данного метода для объектов типа «справочник», которые являются реквизитами формы или реквизитами диалога.

Возвращаемое значение:

Значение элемента справочника-владельца для текущего подчиненного справочника (на момент до исполнения метода).

Описание:

Метод ИспользоватьВладельца может применяться к объектам типа «справочник» в двух случаях:

  • Для объектов, созданных функцией СоздатьОбъект, метод ИспользоватьВладельца устанавливает элемент справочника-владельца (которому подчинен текущий подчиненный справочник) в качестве параметра выборки. Данный метод используется до вызова метода ВыбратьЭлементы, который фактически открывает выборку. Дальнейшая выборка при помощи метода ПолучитьЭлемент будет происходить только среди тех элементов текущего подчиненного справочника, для которых владельцем является заданное значение элемента справочника-владельца <Владелец>. При записи нового элемента текущего справочника данный метод также задает владельца для нового элемента.
  • Для объектов типа «справочник», которые являются реквизитами формы (например, в форме документа — реквизит документа типа «справочник») или реквизитами диалога (например, в форме отчета — реквизит диалога типа «справочник») метод ИспользоватьВладельца позволяет программно установить некоторое значение справочника-владельца в качестве владельца, который будет использован при интерактивном выборе значения данного реквизита.

Пример:

// Процедура выводит список детей сотрудника

// Справочник детей подчинен справочнику сотрудников

Процедура ВыводСпискаДетей(Сотр)

   СпрД = СоздатьОбъект("Справочник.Дети");

      // в качестве параметра функции ИспользоватьВладельца

      // передаем параметр, переданный в процедуру

   СпрД.ИспользоватьВладельца(Сотр);

   Сообщить("Дети сотрудника " + Сотр.Наименование);

   СпрД.ВыбратьЭлементы();

   Пока СпрД.ПолучитьЭлемент() > 0 Цикл

      Сообщить(СпрД.Наименование);

   КонецЦикла;

КонецПроцедуры

Пример:

// В форме элемента справочника Товары есть реквизит Единица,

// который имеет тип подчиненного справочника «Единицы»

// здесь мы можем задать ему в качестве владельца текущий элемент:

Единица.ИспользоватьВладельца(ТекущийЭлемент());

См. также: ВыбратьЭлементы, ПолучитьЭлемент, СоздатьОбъект

ИспользоватьРодителя

Установить выборку по группе справочника.

Синтаксис:

ИспользоватьРодителя(<Группа>)

Англоязычный синоним:

UseParent

Параметры:

<Группа>

Необязательный параметр. Выражение со значением группы справочника.

Возвращаемое значение:

Значение текущей группы для справочника (на момент до исполнения метода).

Описание:

Метод ИспользоватьРодителя устанавливает группу текущего справочника в качестве параметра выборки.

Данный метод используется до вызова метода ВыбратьЭлементы, который фактически открывает выборку. Дальнейшая выборка при помощи метода ПолучитьЭлемент будет происходить только среди элементов текущего справочника, принадлежащих указанной группе.

При добавлении нового элемента текущего справочника данная установка также будет являться свойством нового элемента.

Данный метод может использоваться только для объектов, созданных функцией СоздатьОбъект.

Пример:

// Это процедура формирования отчета - "Список сотрудников"

// ВыбСотр - реквизит диалога типа «справочник.Сотрудники»

Процедура ВыводСпискаСотрудников()

   Таб = СоздатьОбъект("Таблица");

   Спр = СоздатьОбъект("Справочник.Сотрудники");

   Спр.ИспользоватьДату(ДатаОтчета);

   Если ВыбСотр.Выбран() = 0 Тогда

      // если сотрудник в диалоге не выбран,

      // то формируем отчет без условий

      Заг = "По всем сотрудникам";

   ИначеЕсли ВыбСотр.ЭтоГруппа() = 1 Тогда

      // если в диалоге выбрана группа сотрудников, то

      // задаем выборку элементов справочника из одной группы

      Спр.ИспользоватьРодителя(ВыбСотр);

      // Задаем выборку всех подчиненных элементов справочника

      Заг = "По сотрудникам группы " + ВыбСотр.Наименование;

   Иначе

      // если в диалоге выбран сотрудник, то

      // формируем отчет только по нему

      Спр.НайтиЭлемент(ВыбСотр);

      Заг = "По сотруднику " + ВыбСотр.Наименование;

      Таб.ВывестиСекцию("Отчет");

      Таб.ВывестиСекцию("Сотрудник");

      Перейти ~MET;

   КонецЕсли;

   ЧислоСтрок = 0;

   Таб.ВывестиСекцию("Отчет");

   // Открываем выборку Спр.ВыбратьЭлементы();

   Пока Спр.ПолучитьЭлемент() > 0 Цикл

      ЧислоСтрок = ЧислоСтрок + 1;

      Если Спр.ЭтоГруппа() = 1 Тогда

         Таб.ВывестиСекцию("Группа");

      Иначе

         Таб.ВывестиСекцию("Сотрудник");

      КонецЕсли;

      Состояние("В отчет выведено "+ЧислоСтрок+" строк.");

   КонецЦикла;

~MET:

   //Вызов выходного отчета в окно просмотра и редактирования.

   Таб.ТолькоПросмотр(1);

   Таб.Опции(0, 0, 4, 0);

   Таб.Показать("Список товаров по каталогу", "");

   ВыбТовар = 0;

КонецПроцедуры

См. также: ВыбратьЭлементы, ПолучитьЭлемент, СоздатьОбъект

ВключатьПодчиненные

Установить флаг выборки всех подчиненных элементов.

Синтаксис:

ВключатьПодчиненные(<Режим>]

Англоязычный синоним:

IncludeChildren

Параметры:

<Режим>

Необязательный параметр. Числовое выражение: если 1 — надо включать в выборку все подчиненные элементы, если 0 — не надо включать подчиненные элементы.

Возвращаемое значение:

Текущее числовое значение режима выборки подчиненных элементов справочника (на момент до исполнения метода).

Описание:

Метод ВключатьПодчиненные устанавливает флаг выборки всех подчиненных элементов (то есть раскручивания дерева справочника глубже текущего уровня).

Данный метод используется до вызова метода ВыбратьЭлементы, который фактически открывает выборку. Дальнейшая выборка при помощи метода ПолучитьЭлемент будет происходить среди элементов текущего справочника в соответствии с установленным режимом выборки <Режим>. По умолчанию в выборку всегда включаются подчиненные элементы, поэтому реально имеет смысл применять данный метод только в том случае, если надо отменить включение подчиненных.

Данный метод может использоваться только для объектов, созданных функцией СоздатьОбъект.

Пример:

// Это процедура формирования отчета - "Список Товаров"

// ВыбТовар - реквизит диалога типа «справочник.Товар», которым

// задается группа товаров для отображения.

//В процедуру передается параметр Режим, которым задается,

// отображать или нет вложенные подгруппы товаров выбранной группы

Процедура ВыводСпискаТоваров(Режим)

   Таб = СоздатьОбъект("Таблица");

   Тов = СоздатьОбъект("Справочник.Товары");

   Тов.ИспользоватьДату(ДатаОтчета);

   Если ВыбТовар.Выбран() = 0 Тогда

      //если товар в диалоге не выбран, то формируем отчет без условий

      Заг = "По всем товарам.";

   ИначеЕсли ВыбТовар.ЭтоГруппа() = 1 Тогда

      // если в диалоге выбрана группа товаров, то

      // Задаем выборку элементов Справочника из одной группы

      Тов.ИспользоватьРодителя(ВыбТовар);

      Заг = "По товарам группы " + ВыбТовар.Наименование;

      // Задаем выборку всех подчиненных элементов Справочника

      Тов.ВключатьПодчиненные(Режим);

   Иначе

      // если в диалоге выбран товар, то

      // формируем отчет только по этому товару

      Тов.НайтиЭлемент(ВыбТовар);

      Заг = "По товару " + ВыбТовар.Наименование;

      Таб.ВывестиСекцию("Отчет");

      Таб.ВывестиСекцию("Товар");

      Перейти ~MET;

   КонецЕсли;

   ЧислоСтрок = О;

   Таб.ВывестиСекцию("Отчет");

   // Открываем выборку

   Тов.ВыбратьЭлементы();

   Пока Тов.ПолучитьЭлемент() > 0 Цикл

      ЧислоСтрок = ЧислоСтрок + 1;

      Если Тов.ЭтоГруппа() = 1 Тогда

         Таб.ВывестиСекцию("Группа");

      Иначе

         Таб.ВывестиСекцию("Товар");

      КонецЕсли;

      Состояние("В отчет выведено " + ЧислоСтрок + " строк.");

   КонецЦикла;

   //Вызов выходного отчета в окно просмотра и редактирования.

~MET:

   Таб.ТолькоПросмотр(1);

   Таб.Опции(0, 0, 4, 0);

   Таб.Показать("Список товаров по каталогу", "");

КонецПроцедуры

См. также: ВыбратьЭлементы, ПолучитьЭлемент, СоздатьОбъект

ПорядокКодов

Установить порядок выборки по возрастанию кода.

Синтаксис:

ПорядокКодов()

Англоязычный синоним:

OrderByCode

Описание:

Метод ПорядокКодов устанавливает режим выборки элементов справочника в порядке возрастания кодов элементов.

Данный метод обычно используется до вызова метода ВыбратьЭлементы, который фактически открывает выборку. Дальнейшая выборка при помощи метода ПолучитьЭлемент будет происходить среди элементов текущего справочника в порядке возрастания кодов элементов.

По умолчанию выборка элементов справочника производится в порядке основного представления справочника, которое задается в конфигураторе. Поэтому реально имеет смысл применять данный метод только в том случае, если основное представление справочника — наименование, а надо получить элементы в порядке кодов.

Данный метод может использоваться только для объектов, созданных функцией СоздатьОбъект.

Пример:

Спр = СоздатьОбъект("Справочник.Сотрудники");

// Задаем выборку в порядке кодов Спр.ПорядокКодов();

// Открываем выборку Спр.ВыбратьЭлементы();

// Цикл получения элементов справочника

Пока (Спр.ПолучитьЭлемент() > 0) Цикл

   Состояние(Спр.Наименование);

КонецЦикла;

ПорядокНаименований

Установить порядок выборки по возрастанию наименования.

Синтаксис:

ПорядокНаименований()

Англоязычный синоним:

OrderByDescr

Описание:

Метод ПорядокНаименований устанавливает режим выборки элементов справочника в порядке возрастания наименования элементов.

Данный метод обычно используется до вызова метода ВыбратьЭлементы, который фактически открывает выборку. Дальнейшая выборка при помощи метода ПолучитьЭлемент будет происходить среди элементов текущего справочника в порядке возрастания наименования элементов.

По умолчанию выборка элементов справочника производится в порядке основного представления справочника, которое задается в конфигураторе. Поэтому реально имеет смысл применять данный метод только в том случае, если основное представление справочника — код, а надо получить элементы в порядке наименований.

Данный метод может использоваться только для объектов, созданных функцией СоздатьОбъект.

Пример:

Спр = СоздатьОбъект("Справочник.Сотрудники");

// Задаем выборку в порядке наименований

Спр.ПорядокНаименований();

// Открываем выборку

Спр.ВыбратьЭлементы();

// Цикл получения элементов справочника

Пока (Спр.ПолучитьЭлемент() > 0) Цикл

   Состояние(Спр.Наименование);

КонецЦикла;

ПорядокРеквизита

Установить порядок выборки по возрастанию значения реквизита.

Синтаксис:

ПорядокРеквизита(<ИмяРеквизита>)

Англоязычный синоним:

OrderByAttribute

Параметры:

<ИмяРеквизита>

Строковое выражение с именем реквизита справочника, который задает порядок обхода элементов справочника.

Описание:

Метод ПорядокРеквизита устанавливает режим выборки элементов справочника в порядке возрастания значения указанного реквизита <ИмяРеквизита>.

Данный метод обычно используется до вызова метода ВыбратьЭлементы, который фактически открывает выборку. Дальнейшая выборка при помощи метода ПолучитьЭлемент будет происходить среди элементов текущего справочника в порядке возрастания значения реквизита.

Данный метод может использоваться только в том случае, если в конфигураторе при описании данного реквизита установлен признак «Сортировка» (Свойства реквизита - Дополнительные - Сортировка).

Данный метод может использоваться только для объектов, созданных Функцией СоздатьОбъект.

Пример:

Спр = СоздатьОбъект("Справочник.Сотрудники");

// Задаем выборку в порядке возрастания окладов

Спр.ПорядокРеквизита("Оклад");

// Открываем выборку

Спр.ВыбратьЭлементы();

// Цикл получения элементов справочника

Пока Спр.ПолучитьЭлемент() = 1 Цикл

   Состояние(Спр.Наименование + " - " + Спр.Оклад);

КонецЦикла;

Новый

Добавить новый элемент справочника.

Синтаксис:

Новый()

Англоязычный синоним:

New

Описание:

Метод Новый инициализирует создание нового элемента справочника. Собственно запись нового элемента происходит при вызове метода Записать. После инициализации создания нового элемента справочника, как правило, производится заполнение его реквизитов с последующим вызовом метода Записать.

Данный метод может использоваться только для объектов, созданных функцией СоздатьОбъект.

Пример:

Процедура ВводСотрудника()

   Спр = СоздатьОбъект("Справочник.Сотрудники");

   // добавляем новый элемент справочника

   Спр.Новый();

   // Определяем реквизиты нового элемента справочника

   Спр.Наименование = ФИО;

   Спр.Код = ТН;

   Спр.Оклад = Оклад;

   Спр.Аванс = Аванс;

   // ...

   // Записываем новый элемент справочника

   Спр.Записать();

КонецПроцедуры

НоваяГруппа

Добавить новую группу справочника.

Синтаксис:

НоваяГруппа()

Англоязычный синоним:

NewGroup

Описание:

Метод НоваяГруппа добавляет пустую запись новой группы в справочник. Данный метод может использоваться только для объектов, созданных функцией СоздатьОбъект.

Пример:

Процедура ВводГруппыСотрудников()

   Спр = СоздатьОбъект("Справочник.Сотрудники");

   // добавляем новую группу справочника

   Спр.НоваяГруппа();

   // Определяем реквизиты новой группы справочника

   Спр.Наименование = "Расчетчик3";

   Спр.Код = 3;

   // Записываем на диск

   Спр.Записать();

КонецПроцедуры

ПрефиксКода

Установить для справочника текущий префикс кода.

Синтаксис:

ПрефиксКода(<Префикс>)

Англоязычный синоним:

CodePrefix

Параметры:

<Префикс>

Необязательный параметр. Строковое выражение — новый префикс кодов элементов справочника.

Возвращаемое значение:

Строковое значение текущего префикса кодов элементов справочника (на момент до исполнения метода).

Описание:

Метод ПрефиксКода устанавливает новый текущий префикс для автоматического создания кодов элементов справочника.

Пример:

ПрефиксКода("01-");

См. также: ПрефиксАвтоНумерации, УстановитьНовыйКод

УстановитьНовыйКод

Установить новый код с префиксом кода для справочника.

Синтаксис:

УстановитьНовыйКод(<Префикс>)

Англоязычный синоним:

SetNewCode

Параметры:

<Префикс>

Строковое выражение — префикс кода элемента справочника.

Описание:

Метод УстановитьНовыйКод устанавливает новый код элемента справочника с префиксом <Префикс>.

Пример:

УстановитьНовыйКод("01-");

См. также: ПрефиксАвтоНумерации, ПрефиксКода

НазначитьТип

Назначить тип для реквизита неопределенного вида.

Синтаксис:

НазначитьТип(<ИмяРеквизита>, <ИмяТипа>, <Длина>, <Точность>)

Англоязычный синоним:

SetType

Параметры:

<ИмяРеквизита> | Строковое выражение — название реквизита справочника неопределенного типа, как он назван в конфигураторе.
<ИмяТипа> | Строковое выражение — название типа данных (или Вид субконто), который назначается реквизиту справочника. Например: "Строка", "Число", "Справочник.Товары", "Документ.РасходнаяНакладная" и т. п.
<Длина> | Необязательный параметр. Числовое выражение — длина поля представления данных. Имеет смысл только при задании числового или строкового типа.
<Точность> | Необязательный параметр. Числовое выражение — число знаков числа после десятичной точки. Имеет смысл только при задании числового типа.

Описание:

Метод НазначитьТип позволяет назначить тип для реквизита, которому в конфигураторе назначен тип «Неопределенный».

Пример:

Номенклатура.НазначитьТип("ТМЦ", "Справочник.Товары");

Записать

Записать (обновить) элемент справочника.

Синтаксис:

Записать()

Англоязычный синоним:

Write

Описание:

Метод Записать выполняет запись (обновление) элемента справочника.

Замечание. Если этот метод применяется в Модуле формы элемента справочника непосредственно к элементу справочника локального контекста, то данный метод отрабатывает те же действия, как интерактивное нажатие пользователем кнопки с формулой "#Записать".

Пример:

Процедура ВводСотрудника()

   Спр = СоздатьОбъект("Справочник.Сотрудники");

   // добавляем новый элемент справочника

   Спр.Новый();

   // Определяем реквизиты нового элемента справочника

   Спр.Наименование = ФИО;

   Спр.Код = ТН;

   Спр.Оклад = Оклад;

   Спр.Аванс = Аванс;

   // ...

   // Записываем новый элемент справочника

   Спр.Записать();

КонецПроцедуры

Удалить

Удалить элемент справочника.

Синтаксис:

Удалить(<Режим>)

Англоязычный синоним:

Delete

Параметры:

<Режим>

Числовое выражение: 1 — непосредственное удаление; 0 — пометка на удаление. Необязательный параметр. Значение по умолчанию — 1.

Описание:

Метод Удалить удаляет (или делает пометку на удаление) текущий элемент или группу справочника.

Данный метод может использоваться только для объектов, созданных функцией СоздатьОбъект.

Замечание: Непосредственное удаление объекта следует применять очень аккуратно, так как это действие может нарушить ссылочную целостность информации. Данный режим не рекомендуется использовать, если на данный объект могут быть ссылки в других объектах, например в реквизитах существующих документов.

Пример:

Процедура УдалениеСотрудника(Сотр)

   Спр = СоздатьОбъект("Справочник.Сотрудники");

   Если Сотр.Выбран() > 0 Тогда

      // позиционируем справочник на заданном элементе

      Спр.НайтиЭлемент(Сотр);

      Если Спр.Выбран() > 0 Тогда

         Если Вопрос("Удалять??? ", 1) = 1 Тогда

            // удаляем элемент справочника

            Спр.Удалить(1);

         КонецЕсли;

      Иначе

         Предупреждение("Некого удалять!");

      КонецЕсли;

   КонецЕсли;

КонецПроцедуры

См. также: ПометкаУдаления, СнятьПометкуУдаления

Блокировка

Установить/прочитать режим блокировки.

Синтаксис:

Блокировка(<ВклВыкл>)

Англоязычный синоним:

Locking

Параметры:

<ВклВыкл>

Необязательный параметр. Число: 1 — включить; 0 — выключить.

Возвращаемое значение:

Если при вызове метода параметр <ВклВыкл> не задан, то возвращается режим блокировки до выполнения метода. Число: 1 — заблокирован; 0 — свободен.

Если при вызове метода параметр <ВклВыкл> задан, то возвращается результат выполнения метода блокировки. Число: 1 — успешно; 0 — не получилось.

Описание:

Метод Блокировка позволяет установить/прочитать режим блокировки. Пример:

Блокировка(0);

ПометкаУдаления

Прочитать флаг пометки удаления элемента справочника.

Синтаксис:

ПометкаУдаления()

Англоязычный синоним:

DeleteMark

Возвращаемое значение:

Числовое значение: 1 — если на элементе справочника стоит пометка удаления; 0 — если нет пометки удаления.

Описание:

Метод ПометкаУдаления позволяет прочитать значение пометки удаления текущего элемента справочника.

Пример:

Процедура УсловноеУдалениеСотрудника(Сотр)

   Спр = СоздатьОбъект("Справочник.Сотрудники");

   Если Сотр.Выбран() > 0 Тогда

      // позиционируем справочник на заданном элементе

      Спр.НайтиЭлемент(Сотр);

      Если Спр.Выбран() > 0 Тогда

         Если Вопрос("Удалять??? ", 1) = 1 Тогда

            Если Спр.ПометкаУдаления() = 1 Тогда

               Предупреждение("Уже помечен на удаление!");

            Иначе

               // удаляем элемент справочника

               Спр.Удалить(0);

            КонецЕсли;

         КонецЕсли;

      Иначе

         Предупреждение("Некого удалять!");

      КонецЕсли;

   КонецЕсли;

КонецПроцедуры

См. также: Удалить, СнятьПометкуУдаления

СнятьПометкуУдаления

Снять пометку удаления элемента справочника.

Синтаксис:

СнятьПометкуУдаления()

Англоязычный синоним:

ClearDeleteMark

Описание:

Метод СнятьПометкуУдаления снимает пометку удаления текущего элемента справочника.

Данный метод может использоваться только для объектов, созданных функцией СоздатьОбъект.

Пример:

Процедура ВосстановлениеУдаленныхСотр(Сотр)

   Спр = СоздатьОбъект("Справочник.Сотрудники");

   Если Сотр.Выбран() > 0 Тогда

      // позиционируем справочник на заданном элементе

      Спр.НайтиЭлемент(Сотр);

      Если Спр.Выбран() > 0 Тогда

         Если Спр.ПометкаУдаления() = 1 Тогда

            // восстанавливаем элемент справочника

            Спр.СнятьПометкуУдаления();

         КонецЕсли;

      КонецЕсли;

   КонецЕсли;

КонецПроцедуры

См. также: Удалить, ПометкаУдаления

Методы контекста Модуля формы элемента справочника

Описанные в данном разделе методы доступны только в контексте Модуля формы элемента справочника (см. «Виды программных модулей»).

Модифицированность

Возвратить признак изменения реквизитов в текущей форме элемента справочника.

Синтаксис:

Модифицированность()

Англоязычный синоним:

Modify

Возвращаемое значение:

Числовое значение: 1 — если реквизиты текущей формы элемента справочника были изменены; 0 — если нет.

Описание:

Метод Модифицированность возвращает признак изменения (в режиме исполнения он отображается символом (*) в заголовке окна формы).

Замечание. Данный метод доступен только в контексте Модуля формы элемента справочника (см. «Виды программных модулей»). Действие данного метода относится только к текущему элементу справочника, который доступен в локальном контексте Модуля формы элемента справочника.

Пример:

ИспользоватьДату

Установить дату, на которую будут записываться периодические реквизиты элемента справочника, форма которого открыта.

Синтаксис:

ИспользоватьДату(<Дата>, <Обновить>)

Англоязычный синоним:

UseDate

Параметры:

<Дата> | Выражение со значением типа «дата». Дата, на которую будут записываться периодические реквизиты элемента справочника, форма которого открыта.
<Обновить> | Необязательный параметр. Число: 1 — обновить периодические реквизиты формы на заданную дату; 0 — не обновлять периодические реквизиты формы. Значение по умолчанию — 0;

Возвращаемое значение:

Значение используемой даты (на момент до исполнения метода).

Описание:

Метод ИспользоватьДату устанавливает для элемента справочника дату, на которую будут записываться периодические реквизиты.

Если данный метод опущен, то значения выбранных периодических реквизитов справочника будут записываться на текущую рабочую дату.

Замечание. Данный метод доступен только в контексте Модуля формы элемента справочника (см. «Виды программных модулей»). Действие данного метода относится только к текущему элементу справочника, который доступен в локальном контексте Модуля формы элемента справочника.

Пример:

// Здесь мы работаем в локальном контексте модуля Формы

// элемента справочника.

// в справочнике есть несколько реквизитов,

// которые являются периодическими реквизитами.

// В форме существует элемент диалога ВыбДата типа «Дата»

Если Число(ВыбДата) <> 0 Тогда

   // задано некоторое значение ВыбДата

   ИспользоватьДату(ВыбДата);

КонецЕсли;

СохранениеПериодическихРеквизитов

Установить режим отображения диалога сохранения периодических реквизитов при записи элемента справочника.

Синтаксис:

СохранениеПериодическихРеквизитов(<ВариантВызова>, <Список>)

Англоязычный синоним:

Рег1odicAttributesSaving

Параметры:

<ВариантВызова>

Число, определяет вариант вызова метода: 0 — отключить автоматический режим определения списка измененных реквизитов и показ диалога (параметр <Список> не используется);

1 — включить автоматический режим определения списка измененных реквизитов с показом диалога (параметр <Список> определяет набор анализируемых реквизитов);

2 — включить автоматический режим определения списка измененных реквизитов без показа диалога (параметр <Список> определяет набор анализируемых реквизитов);

3 — выполнить определение списка измененных реквизитов с показом диалога (параметр <Список> определяет набор анализируемых реквизитов);

4 — выполнить определение списка измененных реквизитов без показа диалога (параметр <Список> определяет набор анализируемых реквизитов);

5 — выдать/установить список сохраняемых периодических реквизитов. Метод возвращает установленный список периодических реквизитов, которые будут записываться на момент до вызова метода. Если параметр <Список> указан, то устанавливается список периодических реквизитов, которые должны быть записаны.

<Список>

Необязательный параметр. Строковое выражение, в котором через запятую перечислены имена периодических реквизитов справочника, которые должны выводится в диалоге (если диалог показывается), или по которым будет записан элемент истории (если диалог не показывается). По умолчанию предполагается, что в списке все периодические реквизиты справочника. Если указан символ "*", то считается, что в список включены все периодические реквизиты справочника.

Описание:

Метод СохранениеПериодическихРеквизитов управляет режимом ав-томатического определения списка измененных периодических реквизитов, показом диалога для выбора записываемых периодических реквизитов, а также предоставляет доступ непосредственно к списку записываемых периодических реквизитов.

Если данный метод опущен, то при записи элемента справочника диалог отображается со всеми периодическими реквизитами.

Замечание. Данный метод доступен только в контексте Модуля формы элемента справочника (см. «Виды программных модулей»). Действие данного метода относится только к текущему элементу справочника, который доступен в локальном контексте Модуля формы элемента справочника.

Пример:

// Здесь мы работаем в локальном контексте модуля Формы

// элемента справочника.

// в справочнике есть несколько реквизитов,

// которые являются периодическими реквизитами.

СохранениеПериодическихРеквизитов(1, "ЦенаРозн, ЦенаОптов");

ПросмотрИстории

Установить список периодических реквизитов, просмотр истории которых допускается.

Синтаксис:

ПросмотрИстории(<СписокРеквизитов>)

Англоязычный синоним:

ViewHistory

Параметры:

<СписокРеквизитов>

Строка со списком идентификаторов (через запятую) тех реквизитов, просмотр истории которых допускается.

Возвращаемое значение:

Текущий (на момент до вызова метода) список реквизитов, просмотр истории которых допускается просмор истории.

Описание:

Метод ПросмотрИстории позволяет установить список реквизитов для которых допускается просмор истории .

Замечание. Данный метод доступен только в контексте Модуля формы элемента справочника (см. «Виды программных модулей»). Действие данного метода относится только к текущему элементу справочника, который доступен в локальном контексте Модуля формы элемента справочника.

Пример:

Процедура ПриОткрытии()

   ПросмотрИстории;"Оклад, Тариф, Подразделение");

КонецПроцедуры

Предопределенные процедуры Модуля формы справочника

Описанные в данном разделе системные предопределенные процедуры должны располагаться только в Модулях форм справочника (см. «Виды программных модулей»). К ним относятся программные модули: Модуль формы элемента справочника, Модуль формы группы справочника.

В основном данные процедуры предназначены для расширения возможности программного управления правами доступа к системе.

Системные предопределенные процедуры не является встроенными процедурами языка. Для них зарезервированы только название и синтаксис. Тело процедур должно быть написано самим разработчиком в соответствующих программных модулях. Вызов предопределенных процедур на исполнение производится в системе 1С:Предприятие неявно при возникновении соответствующего события. Описание предопределенных процедур также см. гл. «Системные предопределенные процедуры».

ВводНового

Предопределенная процедура при вводе нового элемента справочника.

Синтаксис:

ВводНового(<ПризнКопирования>, <ОбъектКопирования>)

Англоязычный синоним:

InputNew

Параметры:

<ПризнКопирования> | Признак того, что объект введен копированием. Число: 1 — объект введен копированием, 0 — просто новый объект. Данный признак может быть использован для анализа необходимости инициализации реквизитов нового объекта.
<ОбъектКопирования> | Объект, который был скопирован.

Описание:

Вызов процедуры ВводНового производится в системе 1С:Предприятие неявно в момент выбора пункта меню "Действия" — "Новый" при работе со справочниками. Данная процедура может использоваться, например, для установки начальных значений (по умолчанию) реквизитов нового элемента справочника. Если в данной предопределенной процедуре установить статус возврата — 0 (например, если данному пользователю нельзя вводить новые элементы), ввода нового элемента и открытие его формы не будет выполнено.

Процедуру ВводНового контекста справочников можно размещать в следующих программных модулях: Модуль формы элемента справочника, Модуль формы группы справочника (см. «Виды программных модулей»).

Пример:

Процедура ВводНового();

   Оклад = 1000000;

   Пдр = СоздатьОбъект("Справочник.Подразделения");

   Пдр.НайтиПоКоду(1);

   Подразделение = Пдр.ТекукщийЭлемент();

   Город = Константа.НашГород;

КонецПроцедуры

См. также: СтатусВозврата

ПриЗаписи

Предопределенная процедура при записи элемента справочника.

Синтаксис:

ПриЗаписи(<СписокПериодРекв>)

Англоязычный синоним:

OnWrite

Параметры:

<СписокПериодРекв>

Строковое значение — список разделенных запятыми изменяемых периодических реквизитов справочника. В данный параметр система 1С:Предприятие передает перечень периодических реквизитов, которые были интерактивно выбраны пользователем для обновления в окне диалога выбора. В теле процедуры значение данного параметра может быть изменено, что позволяет в данной процедуре непосредственно управлять списком записываемых значений периодических реквизитов.

Описание:

Вызов предопределенной процедуры ПриЗаписи производится системой 1С:Предприятие при интерактивной записи элемента справочника. Если в данной предопределенной процедуре установить статус возврата — 0 (например, если данному пользователю нельзя изменять некоторые элементы справочника), то запись элемента справочника не будет выполнена.

Данная предопределенная процедура может располагаться в следующих программных модулях: Модуль формы элемента справочника, Модуль формы группы справочника, Модуль формы списка справочника (см. Виды программных модулей).

Пример:

Процедура ПриЗаписи (СписокРекв)

   Если НазваниеНабораПрав() = "Продавец" Тогда

      Если ТекущийЭлемент() = Константа.НашаФирма Тогда

         Предупреждение("У вас нет права менять реквизиты!", 2);

         СтатусВозврата(0);

      КонецЕсли;

   КонецЕсли;

КонецПроцедуры

См. также: СтатусВозврата

Методы контекста Модуля формы списка справочника

Описанные в данном разделе методы доступны только в контексте Модуля формы списка справочника (см. «Виды программных модулей»).

ИспользоватьДату

Установить дату выборки периодических реквизитов формы списка справочника.

Синтаксис:

ИспользоватьДату(<Дата>)

Англоязычный синоним:

UseDate

Параметры:

<Дата>

Выражение со значением типа «дата»

Возвращаемое значение:

Значение даты выборки периодических реквизитов формы списка справочника.

Описание:

Метод ИспользоватьДату устанавливает для формы списка справочника дату, на которую будут в дальнейшем выбираться (или записываться) значения периодических реквизитов справочника.

Данный метод доступен только в контексте Модуля формы списка справочника (см. «Виды программных модулей»). Действие данного метода относится только к текущему справочнику, который доступен в локальном контексте Модуля формы списка справочника.

Пример:

ИспользоватьДату(ДатаДок);

ИспользоватьВладельца

Установить владельца для формы списка подчиненного справочника.

Синтаксис:

ИспользоватьВладельца(<Владелец>, <ФлагИзменения>)

Англоязычный синоним:

UseOwner

Параметры:

<Владелец> | Необязательный параметр. Выражение со значением элемента справочника — нового владельца. Если параметр не задан, то значение владельца не меняется.
<ФлагИзменения> | Необязательный параметр. Этим флагом регулируется возможность интерактивного изменения владельца, 1 — пользователь может изменить владельца интерактивно, 0 — пользователь не может интерактивно изменить владельца. Если параметр не задан, то значение флага не меняется.

Возвращаемое значение:

Значение владельца для формы списка подчиненного справочника (до применения метода).

Описание:

Метод ИспользоватьВладельца устанавливает элемент связанного справочника (которому подчинен текущий справочник) в качестве владельца для формы списка подчиненного справочника.

Данный метод доступен в контексте Модуля формы списка справочника (см. «Виды программных модулей»). Действие данного метода относится ко всему текущему подчиненному справочнику, который доступен в локальном контексте Модуля формы списка справочника.

При добавлении нового элемента текущего справочника данный параметр также будет являться свойством нового элемента.

Пример:

ИспользоватьВладельца(Сотр, 0);

ИспользоватьРодителя

Установить родителя для формы списка справочника.

Синтаксис:

ИспользоватьРодителя(<Родитель>, <ФлагИзменения>)

Англоязычный синоним:

UseParent

Параметры:

<Родитель> | Необязательный параметр. Выражение со значением группы справочника- нового родителя. Если параметр не задан, то значение родителя не меняется.
<ФлагИзменения > | Необязательный параметр. Этим флагом регулируется возможность интерактивного изменения родителя. 1 — пользователь может изменить родителя интерактивно, 0 — пользователь не может интерактивно изменить родителя. Если параметр не задан, то значение флага не меняется.

Возвращаемое значение:

Значение родителя для формы списка справочника (до применения метода).

Описание:

Метод ИспользоватьРодителя устанавливает группу справочника в качестве родителя для формы списка справочника.

Данный метод доступен в контексте Модуля формы списка справочника (см. «Виды программных модулей»). Действие данного метода относится ко всему текущему справочнику, который доступен в локальном контексте Модуля формы списка справочника.

При добавлении нового элемента текущего справочника данный параметр также будет являться свойством нового элемента.

Пример:

ИспользоватьРодителя(ВыбГруппаСотр, 1);

ИерархическийСписок

Установить режим иерархического списка справочника.

Синтаксис:

ИерархическийСписок(<ФлагИерархСписка>, <ФлагИзменения>)

Англоязычный синоним:

HierarchicalList

Параметры:

<ФлагИерархСписка> | Флаг иерархического списка. 1 — иерархический список; 0 — неиерархический список.
<ФлагИзменения> | Необязательный параметр. Этим флагом регулируется возможность интерактивного изменения флага иерархического списка. 1 — пользователь может изменить иерархичность интерактивно, 0 — пользователь не может интерактивно изменить иерархичность.

Возвращаемое значение:

Значение флага иерархического списка для формы списка справочника (до применения метода).

Описание:

Метод ИерархическийСписок устанавливает режим иерархического списка справочника.

Данный метод доступен в контексте Модуля формы списка справочника (см. «Виды программных модулей»). Действие данного метода относится ко всему текущему списку справочника, который доступен в локальном контексте Модуля формы списка справочника.

Пример:

ИерархическийСписок(1, 1);

ВыборГруппы

Установить режим выборки групп.

Синтаксис:

ВыборГруппы(<Режим>)

Англоязычный синоним:

SelectGroup

Параметры:

<Режим>

Необязательный параметр. Числовое выражение: 1 — выбирать группы; 0 — не выбирать группы.

Возвращаемое значение:

Текущее числовое значение режима выборки групп (на момент до исполнения метода).

Описание:

Метод ВыборГруппы устанавливает режим выборки групп для формы списка справочника, которая открыта в режиме выбора или подбора элемента.

По умолчанию, выборка элементов справочников для полей в формах документов, журналов и справочников установлена без выбора групп, а в форме отчета с выбором групп. Поэтому реально имеет смысл применять данный метод только в том случае, если надо изменить режим выборки групп.

Пример:

// Задаем выборку без групп

ВыборГруппы(0);

РедактироватьВДиалоге

Установить способ редактирования элементов справочника.

Синтаксис:

РедактироватьВДиалоге(<Способ>, <Разрешение>)

Англоязычный синоним:

EditInForm

Параметры:

<Способ> | Необязательный параметр. Способ редактирования элемента справочника: 1 — в диалоге; 0 — в строке.
<Разрешение> | Необязательный параметр. Флаг разрешения пользователю менять способ редактирования: 1 — разрешить; 0 — запретить.

Возвращаемое значение:

Значение установленного на данный момент способа редактирования элементов справочника (до применения метода).

Описание:

Метод РедактироватьВДиалоге устанавливает способ редактирования элементов справочника.

Данный метод доступен в контексте Модуля формы списка справочника (см. «Виды программных модулей»). Действие данного метода относится ко всему текущему списку справочника, который доступен в локальном контексте Модуля формы списка справочника.

Пример:

ТекСп = РедактироватьВДиалоге();

// какой сейчас способ?

РедактироватьВДиалоге(1);

// установить редактирование в диалоге

РедактироватьВДиалоге(1, 0);

// установить редактирование в диалоге

// и запретить его менять

СохранениеПериодическихРеквизитов

Установить режим отображения диалога сохранения периодических реквизитов при записи элемента справочника.

Синтаксис:

СохранениеПериодическихРеквизитов(<ВариантВызова>, <Список>)

Англоязычный синоним:

Рег1odicAttributesSaving

Параметры:

<ВариантВызова>

Число, определяет вариант вызова метода:

0 — отключить автоматический режим определения списка измененных реквизитов и показ диалога (параметр <Список> не используется);

1 — включить автоматический режим определения списка измененных реквизитов с показом диалога (параметр <Список> определяет набор анализируемых реквизитов);

2 — включить автоматический режим определения списка измененных реквизитов без показа диалога (параметр <Список> определяет набор анализируемых реквизитов);

3 — выполнить определение списка измененных реквизитов с показом диалога (параметр <Список> определяет набор анализируемых реквизитов);

4 — выполнить определение списка измененных реквизитов без показа диалога (параметр <Список> определяет набор анализируемых реквизитов);

5 — выдать/установить список сохраняемых периодических реквизитов. Метод возвращает установленный список периодических реквизитов, которые будут записываться на момент до вызова метода. Если параметр <Список> указан, то устанавливается список периодических реквизитов, которые должны быть записаны.

<Список>

Необязательный параметр. Строковое выражение, в котором через запятую перечислены имена периодических реквизитов справочника, которые должны выводится в диалоге (если диалог показывается), или по которым будет записан элемент истории (если диалог не показывается). По умолчанию предполагается, что в списке все периодические реквизиты справочника. Если указан символ "*", то считается, что в список включены все периодические реквизиты справочника.

Описание:

Метод СохранениеПериодическихРеквизитов управляет режимом автоматического определения списка измененных периодических реквизитов, показом диалога для выбора записываемых периодических реквизитов, а также предоставляет доступ непосредственно к списку записываемых периодических реквизитов.

Если данный метод опущен, то при записи элемента справочника диалог отображается со всеми периодическими реквизитами.

Данный метод доступен в контексте Модуля формы списка справочника (см. «Виды программных модулей»). Действие данного метода относится ко всему текущему списку справочника, который доступен в локальном контексте Модуля формы списка справочника.

Пример:

СохранениеПериодическихРеквизитов(1, "ЦенаРозн, ЦенаОптов");

Сортировка

Установить способ сортировки элементов справочника.

Синтаксис:

Сортировка(<Способ>, <Разрешение>)

Англоязычный синоним:

SortOrder

Параметры:

<Способ> | Строка с именем устанавливаемой сортировки. Это может быть (в зависимости от языка по умолчанию) "Код\Code", "Наименование\Description" или имя реквизита по которому устанавливается сортировка.
<Разрешение> | Необязательный параметр. Флаг разрешения пользователю менять способ сортировки: 1 — разрешить; 0 — запретить.

Возвращаемое значение:

Возвращает текущее значение установленного на данный момент способа сортировки элементов справочника (до применения метода).

Описание:

Метод Сортировка позволяет установить способ сортировки элементов справочника.

Данный метод доступен в контексте Модуля формы списка справочника (см. «Виды программных модулей»).

Пример:

// установить сортировку по наименовнаию и запретить ее менять

Сортировка("Наименование", 0);

// получить текущее значение сортировки и установить сортировку по

// реквизиту "Оклад"

СтСорт = Сортировка("Оклад");

УстановитьОтбор

Установить отбор списка справочника.

Синтаксис:

УстановитьОтбор(<ИмяОтбора>, <3начение0тбора>)

Англоязычный синоним:

SetSelection

Параметры:

<ИмяОтбора> | Строковое выражение — строка с именем реквизита справочника (по которому возможен отбор — флажок свойств «Отбор по реквизиту»), по которому установлен отбор. Если это значение пустое, то отбор отключается.
<ЗначениеОтбора> | Необязательный параметр. Значение отбора.

Описание:

Метод УстановитьОтбор принудительно устанавливает отбор для списка справочника.

Данный метод доступен в контексте Модуля формы списка справочника (см. «Виды программных модулей»). Действие данного метода относится ко всему текущему списку справочника, который доступен в локальном контексте Модуля формы списка справочника.

Пример:

Процедура ПриОткрытии()

   Перем Тип;

   Перем Знач;

   БылОтбор = ПолучитьОтбор(Тип, Знач);

   Если .... Тогда

      // что-нибудь проверяем

      УстановаитьОтбор("Имя", "Коля");

   ИначеЕсли БылОтбор = 1 Тогда

      // вернем назад

      УстановитьОтбор(Тип, Знач);

   КонецЕсли;

КонецПроцедуры

ПолучитьОтбор

Возвратить текущее значение отбора списка справочника.

Синтаксис:

ПолучитьОтбор(<ИмяОтбора>, <3начение0т6ора>)

Англоязычный синоним:

GetSelection

Параметры:

<ИмяОтбора> | Имя переменной, куда вернется строковое значение имени отбора.
<ЗначениеОтбора> | Имя переменной, куда вернется значение отбора.

Возвращаемое значение:

Числовое значение: 1 — есть отбор; 0 — если нет отбора.

Описание:

Метод ПолучитьОтбор возвращает текущее значение отбора списка справочника.

Данный метод доступен в контексте Модуля формы списка справочника (см. «Виды программных модулей»). Действие данного метода относится ко всему текущему списку справочника, который доступен в локальном контексте Модуля формы списка справочника.

Пример:

См. пример для предыдущей функции.

ВидыОтбора

Установить доступные виды отборов списка справочника для вызова их в интерактивном режиме.

Синтаксис:

ВидыОтбора(<СписокИменОтборов>)

Англоязычный синоним:

KindsOfSelection

Параметры:

<СписокИменОтборов>

Строка со списком (через запятую) имен тех реквизитов, отбор по которым допускается, или символ "*" — для всех видов отборов.

Возвращаемое значение:

Строковое значение, содержащее текущий список имен отборов, разделенных запятыми (на момент до исполнения метода).

Описание:

Метод ВидыОтбора позволяет установить доступные виды отборов списка справочника для вызова их в интерактивном режиме.

Данный метод доступен в контексте Модуля формы списка справочника (см. «Виды программных модулей»). Действие данного метода относится ко всему текущему списку справочника, который доступен в локальном контексте Модуля формы списка справочника.

Пример:

Процедура ПриОткрытии()

   ВидыОтбора("Имя, Оклад");

КонецПроцедуры

ЗакладкиОтбора

Установить в форме списка справочника закладки для интерактивного осуществления отбора.

Синтаксис:

ЗакладкиОтбора(<ИмяОтбора>, <3начение0тбора>)

Англоязычный синоним:

TabCtrlSelection

Параметры:

<ИмяОтбора> | Строковое выражение, содержащее имя отбора.
<ЗначениеОтбора> | Значение отбора, который будет установлен первоначально.

Описание:

Метод ЗакладкиОтбора устанавливает в форме списка справочника закладки для интерактивного осуществления отбора.

Данный метод доступен только в контексте Модуля формы списка справочника (см. «Виды программных модулей»).

Пример:

ЗакладкиОтбора("Имя", "Коля");

ИспользоватьСписокЭлементов

Реализует фильтрацию элементов справочника используя нединамический фильтр.

Синтаксис:

ИспользоватьСписокЭлементов (<СписокЗначений>)

Англоязычный синоним:

UseItemList

Параметры:

<СписокЗначений>

Необязательный параметр. Значение типа «СписокЗначений». Должен представлять собой список элементов справочника, выбранных для просмотра. Если это значение пустое, то фильтр отключается.

Описание:

Метод ИспользоватьСписокЭлементов реализует фильтрацию элементов справочника. Устанавливает нединамический фильтр.

Рекомендуется применять в предопределенных процедурах ПриСменеРодителя, ПриОткрытии, ПриСменеИерархии. При этом формируется список «разрешенных» элементов, который передается форме списка справочника при помощи данного метода. Данный список должен являться подмножеством тех элементов, которые обычно отображаются в форме списка без применения фильтра.

После вызова метода ИспользоватьСписокЭлементов форма списка справочника не позволяет вводить новый элемент, копировать и т. п.

Данный метод доступен в контексте Модуля формы списка справочника (см. «Виды программных модулей»). Действие данного метода относится ко всему текущему списку справочника, который доступен в локальном контексте Модуля формы списка справочника.

Пример:

Процедура УстановитьФильтр(ВыбПризнак)

   Список.СоздатьОбъект("СписокЗначений");

   Буфер = СоздатьОбъект("Справочник.Главн");

   // отбираем только те элементы, которые могут отображаться в текущем списке

   Буфер.ИспользоватьРодителя(ИспользоватьРодителя());

   Буфер.ВключатьПодчиненные(0);

   Буфер.ВыбратьЭлементы();

   Пока Буфер.ПолучитьЭлемент() = 1 Цикл

      // отбираем только те элементы, которые удовлетворяют заданному признаку

      Если (Буфер.Признак = ВыбПризнак) Тогда

         Список.ДобавитьЗначение(Буфер.ТекущийЭлемент());

      КонецЕсли;

   КонецЦикла;

   ИспользоватьСписокЭлементов(Список);

КонецПроцедуры

ПросмотрИстории

Установить список периодических реквизитов, просмотр истории которых допускается.

Синтаксис:

ПросмотрИстории(<СписокРеквизитов>)

Англоязычный синоним:

ViewHistory

Параметры:

<СписокРеквизитов>

Строка со списком идентификаторов (через запятую) тех реквизитов, просмотр истории которых допускается.

Возвращаемое значение:

Текущий (на момент до вызова метода) список реквизитов, просмотр истории которых допускается просмор истории.

Описание:

Метод ПросмотрИстории позволяет установить список реквизитов для которых допускается просмор истории .

Данный метод доступен в контексте Модуля формы списка справочника (см. «Виды программных модулей»). Действие данного метода относится ко всему текущему списку справочника, который доступен в локальном контексте Модуля формы списка справочника.

Пример:

Процедура ПриОткрытии()

   ПросмотрИстории("Оклад, Тариф, Подразделение");

КонецПроцедуры

Предопределенные процедуры Модуля формы списка справочника

Описанные в данном разделе системные предопределенные процедуры должны располагаться только в Модулях формы списка справочника (см. «Виды программных модулей»).

В основном данные процедуры предназначены для расширения возможности программного управления правами доступа к системе.

Предопределенные процедуры не является встроенными процедурами языка. Для них зарезервированы только название и синтаксис. Тело процедур должно быть написано самим разработчиком в соответствующих программных модулях. Вызов предопределенных процедур на исполнение производится в системе 1С:Предприятие неявно при возникновении соответствующего события. Описание предопределенных процедур также см. гл. «Системные предопределенные процедуры».

ПриВводеСтроки

Предопределенная процедура при вводе новой строки списка справочника.

Синтаксис:

ПриВводеСтроки()

Англоязычный синоним:

OnNewLine

Описание:

Вызов предопределенной процедуры ПриВводеСтроки производится в системе 1С:Предприятие при интерактивном вводе новой строки (до начала ввода) в форме списка справочника. Если в данной предопределенной процедуре установить статус возврата — 0 (например, если данному пользователю нельзя вводить новые строки списка справочника), то новая строка списка справочника не будет инициирована.

Данная предопределенная процедура может располагаться в Модуле формы списка справочника (см. «Виды программных модулей»).

Пример:

Процедура ПриВводеСтроки()

   Если НазваниеНабораПрав() = "Продавец" Тогда

      Предупреждение("У вас нет права добавлять строки!", 2);

      СтатусВозврата(0);

   КонецЕсли;

КонецПроцедуры

См. также: СтатусВозврата

ПриРедактированииНовойСтроки

Предопределенная процедура при редактировании новой строки списка справочника.

Синтаксис:

ПриРедактированииНовойСтроки()

Англоязычный синоним:

OnEditNewLine

Описание:

Вызов предопределенной процедуры ПриРедактированииНовойСтроки производится в системе 1С:Пред приятие в момент начала интерактивного редактирования новой строки списка справочника (после того, как новая строка уже заведена). Данная процедура может использоваться, например, для установки начальных значений (по умолчанию) реквизитов нового элемента справочника. В данной предопределенной процедуре установка статуса возврата не

имеет смысла, т. к. отказаться от ввода новой строки в этот момент уже невозможно.

Данная предопределенная процедура может располагаться в Модуле формы списка справочника (см. «Виды программных модулей»).

Пример:

Процедура ПриРедактированииНовойСтроки()

   Оклад = 100000;

   Пдр = СоздатьОбъект("Справочник.Подразделения");

   Пдр.НайтиПоКоду(1);

   Подразделение = Пдр.ТекукщийЭлемент();

   Город = Константа.НашГород;

КонецПроцедуры

ПриНачалеРедактированияСтроки

Предопределенная процедура при начале редактирования существующей строки списка справочника.

Синтаксис:

ПриНачалеРедактированияСтроки()

Англоязычный синоним:

OnStartEditLine

Описание:

Вызов предопределенной процедуры ПриНачалеРедактированияСтроки производится в системе 1С:Пред приятие в момент начала интерактивного редактирования существующей строки списка справочника (кроме новой). Если в данной предопределенной процедуре установить статус возврата — 0 (например, если данному пользователю нельзя изменять значения реквизитов справочника), запись не будет изменена.

Данная предопределенная процедура может располагаться в Модуле формы списка справочника (см. «Виды программных модулей»).

Пример:

Процедура ПриНачалеРедактированияСтроки()

   Если НазваниеНабораПрав() = "Продавец" Тогда

      Предупреждение("У вас нет права менять реквизиты!", 2);

      СтатусВозврата(0);

   КонецЕсли;

КонецПроцедуры

См. также: СтатусВозврата

ПриЗаписи

Предопределенная процедура при записи строки списка справочника.

Синтаксис:

ПриЗаписи(<СписокПериодРекв>)

Англоязычный синоним:

OnWrite

Параметры:

<СписокПериодРекв>

Строковое значение — список разделенных запятыми изменяемых периодических реквизитов справочника. В данный параметр система 1С:Предприятие передает перечень периодических реквизитов, которые были интерактивно выбраны пользователем для обновления в окне диалога выбора.

Описание:

Вызов предопределенной процедуры ПриЗаписи производится системой 1С:Предприятие при интерактивной записи строки списка справочника. Если в данной предопределенной процедуре установить статус возврата — 0 (например, если данному пользователю нельзя изменять некоторые элементы справочника), то запись строки списка справочника не будет выполнена.

Формальный параметр <СписокПериодРекв> используется в теле процедуры для обработки события интерактивной записи строки списка справочника.

Данная предопределенная процедура может располагаться в следующих программных модулях: Модуль формы элемента справочника, Модуль формы группы справочника, Модуль формы списка справочника, Модуль формы списка справочника (см. Виды программных модулей).

Пример:

Процедура ПриЗаписи (СписокРекв)

   Если НазваниеНабораПрав() = "Продавец" Тогда

      Если ТекущийЭлемент() = Константа.НашаФирма Тогда

         Предупреждение("У вас нет права менять реквизиты!", 2);

         СтатусВозврата(0);

      КонецЕсли;

   КонецЕсли;

КонецПроцедуры

См. также: СтатусВозврата

ПриПереносеЭлементаВДругуюГруппу

Предопределенная процедура переноса элемента справочника в другую группу.

Синтаксис:

ПриПереносеЭлементаВДругуюГруппу(<Элемент>, <Группа>)

Англоязычный синоним:

OnMoveIntoOtherGroup

Параметры:

<Элемент> | Значение элемента справочника, который переносится.
<Группа> | Значение группы справочника, в которую переносится элемент справочника.

Описание:

Вызов предопределенной процедуры ПриПереносеЭлементаВДругуюГруппу производится в системе 1С:Предприятие при интерактивном переносе элемента справочника в другую группу. Если в данной предопределенной процедуре установить статус возврата — 0, то перенос не будет произведен.

Данная предопределенная процедура может располагаться только в Модуле формы списка справочника (см. «Виды программных модулей»).

Пример:

Процедура ПриПереносеЭлементаВДругуюГруппу()

   Если НазваниеНабораПрав() = "Продавец" Тогда

      Предупреждение("У вас нет права менять группуi", 2);

      СтатусВозврата(0);

   КонецЕсли;

КонецПроцедуры

См. также: СтатусВозврата

ПриВыбореРодителя

Предопределенная процедура выбора родительской группы справочника.

Синтаксис:

ПриВыбореРодителя(<Элемент>)

Англоязычный синоним:

OnSetParent

Параметры:

<Элемент>

Значение элемента справочника, который интерактивно устанавливается в качестве родителя.

Описание:

Вызов предопределенной процедуры ПриВыбореРодителя производится в системе 1С:Предприятие при интерактивной смене родительской группы справочника (выбор следующего или предыдущего уровня). Если в данной предопределенной процедуре установить статус возврата — 0, то выбор родительской группы не будет произведен.

Данная предопределенная процедура может располагаться только в Модуле формы списка справочника (см. «Виды программных модулей»).

Пример:

Процедура ПриВыбореРодителя(Родитель)

   Если НазваниеНабораПрав() = "Продавец" Тогда

      Если Родитель = ЗапрещеннаяГруппа Тогда

         Предупреждение("Вам запрещено просматривать эту группу!", 2);

         СтатусВозврата(0);

      КонецЕсли;

   КонецЕсли;

КонецПроцедуры

См. также: СтатусВозврата

ПриВыбореВладельца

Предопределенная процедура выбора владельца подчиненного справочника.

Синтаксис:

ПриВыбореВладельца(<Элемент>)

Англоязычный синоним:

OnSetOwner

Параметры:

<Элемент>

Значение элемента справочника, который интерактивно устанавливается в качестве владельца подчиненного справочника.

Описание:

Вызов предопределенной процедуры ПриВыбореВладельца производится в системе ЮПредприятие при интерактивном выборе владельца подчиненного справочника (при интерактивной смене владельца, т. е. смене позиции в справочнике-владельце, которая приводит к смене отображаемых в подчиненном справочнике элементов). Если в данной предопределенной процедуре установить статус возврата — 0, то выбор владельца подчиненного справочника не будет произведен.

Данная предопределенная процедура может располагаться только в Модуле формы списка справочника (см. «Виды программных модулей»).

Пример:

Процедура ПриВыбореВладельца(Владелец)

   Если НазваниеНабораПрав() = "Продавец" Тогда

      Если Владелец = ЗапрещенныйВладелец Тогда

         Предупреждение("Нельзя просматривать эти элементы!", 2);

         СтатусВозврата(0);

      КонецЕсли;

   КонецЕсли;

КонецПроцедуры

См. также: СтатусВозврата

ПриСменеИерархии

Предопределенная процедура смены режима отображения иерархии справочника.

Синтаксис:

ПриСменеИерархии(<Способ>)

Англоязычный синоним:

OnHierarchyChange

Параметры:

<Способ>

Значение устанавливаемого (тот, который пользователь хочет установить) способа просмотра справочника: 1 — иерархических список; 0 — все элементы сразу.

Описание:

Вызов предопределенной процедуры ПриСменеИерархии производится в системе 1С:Предприятие при интерактивной смене режима отображения иерархии справочника (пункт меню «Иерархический список»). Если в данной предопределенной процедуре установить статус возврата — 0, то смена режима отображения иерархии справочника не будет произведена.

Данная предопределенная процедура может располагаться только в Модуле формы списка справочника (см. «Виды программных модулей»).

Пример:

Процедура ПриСменеИерархии(ВыбСпособ)

   Если НазваниеНабораПрав() = "Продавец" Тогда

      Предупреждение("Нельзя менять режим просмотра 1", 2);

      СтатусВозврата(0);

   КонецЕсли;

КонецПроцедуры

См. также: СтатусВозврата

ПриУстановкеОтбора

Предопределенная процедура при установке отбора справочника.

Синтаксис:

ПриУстановкеОтбора(<ТипОтбора>, <3начение0тбора>)

Англоязычный синоним:

OnSetSelectInJournal

Параметры:

<ТипОтбора> | Строковое значение — тип устанавливаемого отбора (имя реквизита справочника по которому устанавливается отбор).
<3начение0тбора> | Устанавливаемое значение отбора.

Описание:

Вызов предопределенной процедуры ПриУстановкеОтбора производится в системе 1С:Предприятие при интерактивной установке отбора любым способом (отбор, быстрый отбор, отбор по значению, история отбора) и при отключении отбора. Если в данной предопределенной процедуре установить статус возврата — 0, то установка отбора справочника не будет произведена.

Данная предопределенная процедура может располагаться только в Модуле формы списка справочника (см. «Виды программных модулей»).

Пример:

Процедура ПриУстановкеОтбора(ВыбСпособ)

   Если НазваниеНабораПрав() = "Продавец" Тогда

      Предупреждение("Нельзя устанавливать отбор;", 2);

      СтатусВозврата(0);

   КонецЕсли;

КонецПроцедуры

См. также: СтатусВозврата


Part11

Глава 11
Работа с Перечислениями

Перечисление — средство работы с элементами данных, список возможных значений которых жестко задан в конфигурации. Например, для перечисления "ТипСотрудника" можно задать возможные значения: "Штатный", "Совместитель".

В отличие от справочника, списки значений в перечислении задаются исключительно в процессе их создания в конфигураторе и при выполнении задачи не могут быть изменены.

Контекст работы с перечислениями

Средства языка предоставляют возможность непосредственного доступа к заданным в конфигураторе значениям перечислений в любом программном модуле (перечисления принадлежат глобальному контексту задачи). В терминах языка перечисления аналогичны системным константам «только для чтения», т. е. идентификаторы перечислений могут размещаться только в правой части оператора присваивания, в выражениях, быть параметрами процедур, функций или методов в любом программном модуле.

В качестве имени перечисления обязательно должно выступать полное имя конкретного вида и значения перечисления, как оно объявлено в конфигураторе. Вид и значение перечисления записывается через точку после ключевого слова Перечисление, т. е. полное имя вида перечисления записывается следующим образом:

Перечисление.<Имя_Переч>.<Значение_Переч>,

где <Имя_Переч> — имя вида перечисления, <Значение_Переч> — конкретное значение данного вида перечисления.

Англоязычный синоним ключевого слова Перечисление — Enum.

Пример:

Если Док.Сотрудник.Тип = Перечисление.ТипСотрудника.Штатный Тогда

   Льготы = 1;

Иначе

   Льготы = 0;

КонецЕсли;

Объект Перечисление является частью глобального контекста программы 1С:Предприятие. Этот объект в качестве своих атрибутов имеет значения объектов конкретных видов перечислений, заданных в конфигурации. Кроме того, этот объект имеет метод ПолучитьАтрибут, который позволяет получить доступ к объекту перечисления конкретного вида по его имени.

Перечисление конкретного вида в качестве своих атрибутов имеет конкрет-йьте значения перечислений. Кроме того, этот объект имеет методы КоличествоЗначений, ЗначениеПоНомеру и ЗначениеПоИдентификатору которые позволяют получить доступ к конкретному значению перечисления.

Конкретное значение перечисления имеет методы Вид, ПредставлениеВида, Выбран, ПорядковыйНомер, Идентификатор.

Методы перечислений

ПолучитьАтрибут

Получить доступ к объекту перечисления конкретного вида по его имени.

Синтаксис:

ПолучитьАтрибут(<ИмяПеречисления>)

Англоязычный синоним:

GetAttrib

Параметры:

<ИмяПеречисления>

Строковое выражение, содержащее имя вида перечисления, как оно задано в конфигураторе.

Возвращаемое значение:

Объект перечисления конкретного вида.

Описание:

Метод ПолучитьАтрибут позволяет получить доступ к объекту перечисления конкретного вида по его имени, как оно задано в конфигураторе.

Этот метод применяется только к объекту глобального контекста Перечисление.

Пример:

Булево = Перечисление.ПолучитьАтрибут("Булево");

КоличествоЗначений

Определить общее количество значений в данном виде перечисления.

Синтаксис:

КоличествоЗначений()

Англоязычный синоним:

Count

Возвращаемое значение:

Число общего количества значений в данном виде перечисления.

Описание:

Метод КоличествоЗначений применяется к конкретному виду перечисления и позволяет определить общее количество значений в данном виде перечисления.

Пример:

// отобразим все значения перечисления

Всего = Перечисление.ВидыТоваров.КоличествоЗначений();

Пока Ном = 1 По Всего Цикл

   Сообщить(Перечисление.ВидыТоваров.ЗначениеПоНомеру(Ном));

КонецЦикла;

ЗначениеПоНомеру

Определить значение перечисления, соответствующее номеру позиции в конфигураторе.

Синтаксис:

ЗначениеПоНомеру(<Номер>)

Англоязычный синоним:

ValueByIndex

Параметры:

<Номер>

Числовое выражение. Номер позиции значения перечисления, заданный в конфигураторе.

Возвращаемое значение:

Значение перечисления, соответствующее номеру заданной позиции.

Описание:

Метод ЗначениеПоНомеру применяется к конкретному виду перечисления и позволяет определить значение перечисления, соответствующее номеру позиции в конфигураторе.

Пример:

См. предыдущий пример.

ЗначениеПоИдентификатору

Определить значение перечисления, соответствующее идентификатору в конфигураторе.

Синтаксис:

ЗначениеПоИдентификатору(<Идентификатор>)

Англоязычный синоним:

ValueByIdentifier

Параметры:

<Идeнтификaтop>

Строковое выражение. Идентификатор перечисления, заданный в конфигураторе.

Возвращаемое значение:

Значение перечисления, соответствующее идентификатору в конфигураторе. Если не найдено — то пустое значение.

Описание:

Метод ЗначениеПоИдентификатору применяется к конкретному виду перечисления и позволяет определить значение перечисления, соответствующее идентификатору в конфигураторе.

Пример:

См. предыдущий пример.

Вид

Определить название вида перечисления.

Синтаксис:

Вид()

Англоязычный синоним:

Kind

Возвращаемое значение:

Строковое значение, содержащее название вида перечисления.

Описание:

Метод Вид позволяет определить название вида перечисления, как оно задано в конфигураторе.

Пример:

// отобразим вид перечисления в строке состояния

Состояние(ИзмерениеТовара.Вид());

ПредставлениеВида

Определить пользовательское представление вида перечисления.

Синтаксис:

ПредставлениеВида()

Англоязычный синоним:

KindPresent

Возвращаемое значение:

Строковое значение, содержащее пользовательское представление вида перечисления (синоним перечисления или, если он пустой, то идентификатор).

Описание:

Метод ПредставлениеВида позволяет получить пользовательское представление вида перечисления, как оно задано в конфигураторе.

Пример:

// отобразим пользовательское представление в строке состояния

Состояние(ИзмерениеТовара.ПредставлениеВида());

Выбран

Возвратить флаг выбора элемента перечисления.

Синтаксис:

Выбран()

Англоязычный синоним:

Selected

Возвращаемое значение:

Числовое значение: 1 — если элемент перечисления выбран (спозиционирован); 0 — если не выбран.

Описание:

Метод Выбран возвращает число со значением 1 — если элемент перечисления выбран (спозиционирован), 0 — если элемент перечисления не выбран.

Пример:

// В диалоге формирования некоторого отчета

// ВыбЕдИзмер — реквизит диалога типа «Перечисление.Единицы»

Если ВыбЕдИзмер.Выбран() = 0 Тогда

   // Если единица измерений в диалоге не выбрана, то формируем отчет без условий

   Заг1 = "По всем единицам измерения.";

Иначе

   // если в диалоге выбрана единица измерений

   // то формируем отчет только по выбранным единицам

   Заг1 = "Отчет по товарам с единицей измерения " + ВыбЕдИзмер;

КонецЕсли;

ПорядковыйНомер

Определить порядковый номер значения в перечеслении.

Синтаксис:

ПорядковыйНомер()

Англоязычный синоним:

Number

Возвращаемое значение:

Строковое значение, содержащее название вида перечисления.

Описание:

Метод ПорядковыйНомер определяет порядковый номер значения в перечеслении, как он задан в конфигураторе. Значения перечисления нумеруются с 1.

Пример:

// отобразим порядковый номер значения перечисления

Сообщить(Перечисление.Единицы.Штука.ПорядковыйНомер());

Идентификатор

Возвращает строку — идентификатор значения перечисления.

Синтаксис:

Идентификатор()

Англоязычный синоним:

Identifier

Возвращаемое значение:

Строковое значение — идентификатор значения перечисления как он задан в метаданных.

Описание:

Метод Идентификатор возвращает строку — идентификатор значения перечисления как он задан в метаданных.

Пример:

// отобразим все идентификаторы перечисления

Всего = Перечисление.ВидыТоваров.КоличествоЗначений();

Пока Ном = 1 По Всего Цикл

   ВидТов = Перечисление.ВидыТоваров.ЗначениеПоНомеру(Ном);

   Сообщить(ВидТов.Идентификатор());

КонецЦикла;


Part12

Глава 12
Работа с Документами

Документ — одно из основных понятий системы 1С:Предприятие. При помощи документов организуется ввод в систему информации о совершаемых хозяйственных операциях, а также ее просмотр и, если необходимо, корректировка.

В большинстве своем документы, которые создаются в процессе настройки конфигурации задачи, являются электронными аналогами стандартных бумажных документов, являющихся основаниями для тех или иных учетных действий или расчетов. Тем на менее, использование этого типа данных может выходить далеко за рамки простой фиксации изменений внесенных в регистры и журналы расчетов.

Структура каждого конкретного вида документа определяется при его создании в конфигураторе. У любого вида документа существует два обязательных реквизита, которые создаются автоматически — дата и номер документа. Другие реквизиты документа определяются в конфигураторе конкретно для каждого создаваемого вида документа.

В документах выделяются две основные структурные части: шапка документа и многострочная табличная часть, поэтому реквизиты документа можно подразделить на «Реквизиты шапки» и «Реквизиты табличной части».

Как правило, в шапке содержатся реквизиты, которые являются общими для всего документа. Реквизиты шапки принадлежат всему документу в целом и принимают только одно значение.

Например, в случае расчета заработной платы, документ «Больничный лист» в заголовочной части может содержать процент оплаты, сведения о сотруднике.

Многострочная (табличная) часть документа представляет собой список однотипных строк. Реквизиты табличной части принадлежат строке документа, т. е. каждая строка содержит свои собственные значения этих реквизитов.

Например, в уже упоминавшемся больничном листе табличная часть — это набор данных за прошлые расчетные периоды, предназначенные для расчета средней заработной платы.

Контекст работы с документами

В синтаксисе языка доступ к атрибутам, а также вызов методов документов зависит от контекста выполнения программного модуля.

Если конкретный документ входит (согласно локального контекста) в набор непосредственно доступных модулю значений агрегатных типов данных (см. «Виды программных модулей»), то доступ к атрибуту, вызов метода для этого документа — просто имя этого атрибута, метода с указанием необходимых параметров.

Пример:

* В форме редактирования документа «Накладная» мы имеем непосредственный доступ к текущему документу (накладной). Значит, чтобы изменить номер накладной, запишем:

НомерДок = "12345678";

* В форме редактирования документа «Приказ на зачисление» мы имеем непосредственный доступ к реквизитам этого документа. Значит, чтобы записать имя нового сотрудника, пишем:

ФИО = "Иванов И.И.";

Значение документа может быть получено из других источников, например как реквизит другого документа. В этом случае обращение к атрибутам и методам такого документа представляет собой сложное выражение, где имена реквизитов разделяются точкой.

Пример:

* Допустим, у документа «Счет» есть реквизит «Накладная», который имеет тип «Документ.РасхНакл». Номер накладной можно получить следующим образом:

НомерРасхНакл=Документ.Счет.Накладная.НомерДок;

* Допустим, значение реквизита «Приказ» справочника «ПриказыНаДоплату» имеет тип «Документ.ПриказНаДоплату». Тогда номер приказа можно получить следующим образом:

Спр = СоздатьОбъект("Справочник.ПриказыНаДоплату");

// ...

Номер = Спр.Приказ.НомерДок;

В других случаях, доступ к атрибутам, вызов методов конкретного документа происходит при помощи переменной со ссылкой на объект типа «Документ». Объект создается функцией СоздатьОбъект, ссылка на который присваивается переменной. Чтобы вызвать атрибут или метод объекта, имя этого атрибута, метода (с указанием необходимых параметров) пишется через точку после имени ссылки.

При создании ссылки на объект типа «Документ» при помощи функции СоздатьОбъект в качестве имени документа может выступать ключевое слово Документ или полное имя вида документа.

Полное имя вида документа записывается следующим образом:

Документ.<Имя_Документа>

где <Имя_Документа> — имя вида документа, как он объявлен в конфигураторе.

Применение ключевого слова "Документ" (без указания вида документа) используется для организации доступа ко всему перечню документов независимо от вида. В этом случае методы ВыбратьДокументы и ПолучитьДокумент будут обрабатывать документы всех видов. Однако, для переменных, созданных таким вызовом функции СоздатьОбъект, будут недоступны процедуры поиска, выбора документа из диалога, ввода нового документа, которые подразумевают конкретный вид документа.

Англоязычный синоним ключевого слова Документ — Document.

Замечание: Следует обратить особое внимание, что переменная типа «Документ», созданная функцией СоздатьОбъект — это ссылка на список документов в отличие от переменных содержащих само значение объекта (например, переменной может быть присвоено значение реквизита справочника, который имеет тип «Документ»). Использование ссылки на список документов, созданной при помощи функции СоздатьОбъект существенно отличается от работы со значением типа «Документ». Только при работе со ссылкой на список документов разрешено изменять позицию (найти-выбрать...) текущего элемента в списке (т. е. осуществлять позиционирование по списку документов), создавать новые, изменять и удалять существующие документы. С другой стороны, ссылка на список документов не содержит собственно значения конкретного документа, которое можно присвоить чему-либо. Однако, его всегда можно получить, используя функцию ТекущийДокумент.

Замечание. Объект, созданный при помощи функции СоздатьОбъект, изначально не определен, т. е. не содержит никакого значения. Чтобы начать с ним работать, его предварительно надо позиционировать (установить на конкретный документ) при помощи процедур НайтиДокумент, НайтиПоНомеру, ПолучитьДокумент и т. п..

Пример:

*

Док = СоздатьОбъект("Документ");

Док1 = СоздатьОбъект("Документ.БольничныйЛист");

Док2 = СоздатьОбъект("Документ.ПриказНаДоплату");

ДокЗ = СоздатьОбъект("Документ.ПриказПоОтпуску");

Док4 = СоздатьОбъект("Документ.ПрихНакладн");

Док5 = СоздатьОбъект("Документ.Списание");

*

// В модуле формы документа

// меняем номер обрабатываемого документа

НомерДок = "12345";

*

// В других модулях имена атрибутов, процедур и функций документов

// записываются через точку после имени переменной

// со значением типа "Документ".

Док = СоздатьОбъект("Документ.ПриказыДоплат");

// создаем новый документ

Док.Новый();

Док.ОбщийРазмер = 12000000;

// меняем номер Документа

Док.НомерДок = "12345";

// меняем дату документа

Док.ДатаДок = '14.04.96';

// создаем новую строку в спецификации документа

Док.НоваяСтрока();

Док.Сотр = СпрСотрудн.ТекущийЭлемент();

Док.Процент = 15;

// ...

// записываем документ

Док.Записать();

Позиция документа

Все документы в системе 1С:Предприятие располагаются на временной оси. Основными характеристиками расположения документа на временной оси являются дата и время документа. Дата документа доступна через атрибут ДатаДок, а работа со временем документа осуществляется при помощи методов УстановитьВремя, ПолучитьВремя и предопределенной процедуры ПриИзмененииВремениДокумента. Кроме даты и времени в системе 1С:Предприятие существует понятие позиции документа.

Позиции документа — это строковое значение специального формата длиной 32 символа. Позиция документа однозначно характеризует расположение документа на оси времени относительно других документов, т. е. позиция документа заключает в себе и дату и время (с точностью до секунды), плюс некоторые дополнительные данные, определяющие взаимное расположение документов в пределах одной секунды. Позиции документов можно сравнивать (>; <), определяя какой документ раньше, какой позже. Позиции документов можно сортировать по возрастанию или по убыванию. Кроме того, можно получить позицию точки актуальности (ПолучитьПозициюТА) и позицию границы последовательности (ПолучитьПозицию). Позицию документа можно получить при помощи метода Позиция.

Многие методы могут в качестве парамера воспринимать кроме документа или даты позицию документа.

См. также:

СформироватьПозициюДокумента, РазобратьПозициюДОкумента, ПолучитьПозициюТА, ПолучитьПозицию, ВыбратьДокументы, ВыбратьПодчиненныеДокументы, ВыбратьПоЗначению, РассчитатьРегистрыНа, РассчитатьРегистрыПо, УстановитьТАна, УстановитьТАпо, ВыбратьДвижения, ВыбратьДвиженияСОстатками, ВыполнитьЗапрос, Рассчитать, ВыбратьОперации, ВыбратьОперацииСПроводками, ВыбратьПоЗначению

Атрибуты документов

НомерДок

Номер документа

Синтаксис:

НомерДок

Англоязычный синоним:

DocNum

Описание:

При помощи атрибута НомерДок можно получать и задавать значение номера выбранного документа.

Пример:

Основание = Вид() + " № " + СокрП(НомерДок) + " от " + ДатаДок;

ДатаДок

Дата документа

Синтаксис:

ДатаДок

Англоязычный синоним:

DocDate

Описание:

Атрибут ДатаДок задает значение даты выбранного документа.

Пример:

Процедура ВводНового()

   // устанавливаем дату документа

   ДатаДок=РабочаяДата();

   Подразделение = Константа.АУП;

   Валюта = Константа.ДефВалютаЗакупки;

   Валюта.ИспользоватьДату(ДатаДок);

   Дата_Курса = ДатаДок;

   Курс = Валюта.Текущ_курс;

   Фирма = Константа.ДефФирма;

КонецПроцедуры

<Реквизит>

Значение реквизита документа.

Синтаксис:

<Реквизит>

Идентификатор реквизита документа, как он задан в конфигураторе.

Описание:

Атрибут <Реквизит> задает значение реквизита текущего документа. В тексте программного модуля используется идентификатор конкретного реквизита документа, созданного в конфигураторе. Реквизиты многострочной части документа имеют смысл только при выбранной строке многострочной части документа.

Пример:

// предопределенная процедура ввода нового документа

// ТипСотр, Оклад — реквизиты документа

Процедура ВводНового()

   // Установим дату документа

   ДатаДок = РабочаяДата();

   ТипСотр = Перечисление.ТипСотрудника.Штатный;

   Оклад = Сотр.Оклад.Получить(ДатаДок);

   ПризнакНакладной = Перечисление.ПризнРасхНакл.Продажа;

КонецПроцедуры

НомерСтроки

Синтаксис:

НомерСтроки

Англоязычный синоним:

LineNum

Описание:

Атрибут НомерСтроки задает числовое значение номера строки многострочной части выбранного документа. Данный атрибут имеет смысл только при выбранной строке. Присвоение строке нового номера передвигает строку в многострочной части документа.

Пример:

Процедура ОбработкаПроведения()

   Регистр.ТовЗап.Склад = Склад;

   ВыбратьСтроки();

   Пока ПолучитьСтроку() > 0 Цикл

      Регистр.ПривязыватьСтроку(НомерСтроки);

      Регистр.ТовЗап.Товар = Товар;

      Регистр.ТовЗап.Количество = Количество;

      Регистр.ТовЗап.Стоимость = Стоимость;

      Регистр.ТовЗап.ДвижениеРасходВыполнить();

   КонецЦикла;

КонецПроцедуры

Операция

Атрибут «Операция» предназначен для обращения к бухгалтерской операции документа.

Синтаксис:

Операция

Англоязычный синоним:

Operation

Описание:

Атрибут «Операция» документа используется только в случае, если установлена компонента «Бухгалтерский учет» и только для тех видов документов, для которых в конфигурации установлен признак «Бухгалтерский учет». Он предназначен для обращения к операции документа. Данный атрибут не используется как самостоятельное значение, а позволяет обращаться к атрибутам и методам операции. Описание атрибутов и методов операции см. в разделе «Работа с операциями и проводками».

Пример:

* В форме документа устанавливается содержание операции.

Процедура ПриЗаписи()

   Операция.Содержание = "Износ за " + Формат(ДатаДок, "Д ММММГГТГ");

КонецПроцедуры

Методы документов

Вид

Название вида документа.

Синтаксис:

Вид()

Англоязычный синоним:

Kind

Возвращаемое значение:

Строковое значение, содержащее название вида документа, как он задан в конфи гураторе.

Описание:

Метод Вид возвращает название вида документа, как он задан в конфигураторе.

Пример:

Если (Док.Вид() = "ДоплатаПроцентом") ИЛИ (Док.Вид() = "ДоплатаСуммой") Тогда

   Сотр = Док.Сотрудник;

Иначе

   Предупреждение("Это не доплата!");

КонецЕсли;

ПредставлениеВида

Определить пользовательское представление вида документа.

Синтаксис:

ПредставлениеВида()

Англоязычный синоним:

KindPresent

Возвращаемое значение:

Строковое значение, содержащее пользовательское представление вида документа (синоним документа или, если он пустой, то идентификатор).

Описание:

Метод ПредставлениеВида позволяет получить пользовательское представление вида документа, как оно задано в конфигураторе.

Пример:

// отобразим пользовательское представление в строке состояния

Состояние(ВыбДокум.ПредставлениеВида());

УстановитьАтрибут

Установить значение реквизита по имени идентификатора.

Синтаксис:

УстановитьАтрибут(<ИмяРеквизита>, <3начение>)

Англоязычный синоним:

SetAttrib

Параметры:

<ИмяРеквизита> | Строковое выражение, содержащее имя реквизита, как оно задано в конфигураторе.
<3начение> | Выражение, содержащее устанавливаемое значение реквизита.

Описание:

Метод УстановитьАтрибут позволяет установить значение реквизита по имени идентификатора, как оно задано в конфигураторе.

Пример:

Док.УстановитьАтрибут("ЦенаРозн", ЦенаТов);

ПолучитьАтрибут

Получить значение реквизита но имени идентификатора.

Синтаксис:

ПолучитьАтрибут(<ИмяРеквизита>)

Англоязычный синоним:

GetAttrib

Параметры:

<ИмяРеквизита>

Строковое выражение, содержащее имя реквизита, как оно задано в конфигураторе.

Возвращаемое значение:

Значение реквизита <ИмяРеквизита>.

Описание:

Метод ПолучитьАтрибут позволяет получить значение реквизита по имени идентификатора, как оно задано в конфигураторе.

Пример:

ЦенаДок = Док.ПолучитьАтрибут("Цена");

Выбран

Возвратить флаг выбора документа.

Синтаксис:

Выбран()

Англоязычный синоним:

Selected

Возвращаемое значение:

Числовое значение: 1 — если документ выбран, 0 — если документ не выбран.

Описание:

Метод Выбран позволяет проверить сам факт позиционирования объекта типа «документ».

Пример:

Док = СоздатьОбъект("Документ.ПрихНакл");

// позиционируем документ по номеру

Док.НайтиПоНомеру("1", 0);

Если Док.Выбран() = 1 Тогда

    // если документ найден

    // открываем выборку строк спецификации документа

    Док.ВыбратьСтроки();

    // цикл выбора строк спецификации документа

    Если Док.КоличествоСтрок() > 0 Тогда

       Пока Док.ПолучитьСтроку() = 1 Цикл

          Док.УдалитьСтроку();

       КонецЦикла;

    КонецЕсли;

КонецЕсли;

Проведен

Возвратить флаг проводки документа.

Синтаксис:

Проведен()

Англоязычный синоним:

IsTransacted

Возвращаемое значение:

Числовое значение: 1 — если документ проведен, 0 — если документ не проведен.

Описание:

Метод Проведен позволяет проверить сам факт проведения документа.

Пример:

Процедура ПолучитьПроведенные()

   Док = СоздатьОбъект("Документ");

   // Откроем выборку документов

   Док.ВыбратьДокументы(ДатаНачала, ДатаКонца);

   // Цикл выбора документов

   Пока Док.ПолучитьДокумент() > 0 Цикл

      Если Док.Проведен() > 0 Тогда

         // для проведенных документов выведем сообщение

         Сообщить(Строка(Док.Вид())+" № "+Док.НомерДок+" от "+Док.ДатаДок);

      КонецЕсли;

   КонецЦикла;

КонецПроцедуры

ТекущийДокумент

Определить значение текущего документа.

Синтаксис:

ТекущийДокумент()

Англоязычный синоним:

CurrentDocument

Возвращаемое значение:

Значение текущего документа.

Описание:

Метод ТекущийДокумент возвращает значение позиционированного текущего документа (в целом, как объекта). Данный метод применяется, например, если нужно документ передать как параметр в вызове какого-либо метода или присвоить какому-либо реквизиту.

Пример:

Если Режим = "Подробный" Тогда

   // используем объект типа «документ» неопределенного вида

   Док = СоздатьОбъект("Документ");

   // Откроем выборку документов

   Док.ВыбратьДокументы(ДатаНачала, ДатаОкончания);

   // Цикл выбора документов

   Пока Док.ПолучитьДокумент() > 0 Цикл

      // присвоим переменной ТекДок значение найденного документа

      ТекДок = Док.ТекущийДокумент();

      // ...

   КонецЦикла;

КонецЕсли;

Выбрать

Вызов диалога для выбора документа.

Синтаксис:

Выбрать(<Подсказка>, <ФормаЖурнала>, <КомуПодч>)

Англоязычный синоним:

Choose

Параметры:

<Подсказка>

Текст заголовка окна диалога ввода. Может использоваться в качестве подсказки конечному пользователю.

<ФормаЖурнала>

Строковое выражение идентификатора той формы журнала документа (как он объявлен в конфигураторе), которая должна использоваться для выбора. Если это значение пустое, то используется форма журнала по умолчанию.. Можно указывать имя объекта в следующем виде:

· "Журнал.ХХХХХ", где ХХХХХ — имя вида соответствующего объекта, как он задан в конфигураторе, например: "Справочник.Товары";

· "Журнал.Подчиненные";

· "ЖурналОпераций";

· "ЖурналОпераций.YYYYY", где YYYYY — имя формы журнала операций, как оно задано в конфигураторе;

<КомуПодч>

Необязательный параметр. Используется при открытии выбора по журналу подчиненных документов, т.е когда второй параметр <ФормаЖурнала> имеет значение "Журнал.Подчиненные". В данном случае в этом параметре передается документ-владелец, по которому следует построить журнал подчиненных документов.

Возвращаемое значение:

Числовое значение: 1 — если документ выбран; 0 — если не выбран.

Описание:

Метод Выбрать вызывает диалоговое окно для выбора документа и затем позиционирует выбранный документ в качестве текущего. Данный метод может использоваться только для объектов, созданных функцией СоздатьОбъект.

Пример:

Док = СоздатьОбъект("Документ.НаклПрих");

// вызываем диалог выбора документа

Если Док.Выбрать("Найди документ") > 0 Тогда

   // удаляем выбранный документ

   Док.Удалить();

КонецЕсли;

См. также: ВидыДляВыбора

ВидыДляВыбора

Установка выбираемых видов для объекта типа «документ» неопределенного вида.

Синтаксис:

ВидыДляВыбора(<СписокВидов>)

Англоязычный синоним:

KindsForChoice

Параметры:

<СписокВидов>

Необязательный параметр. Строковое выражение содержащее список видов выбираемых документов, разделенных запятыми.

Возвращаемое значение:

Строковое значение, содержащее текущий список видов выбираемых документов, разделенных запятыми (на момент до исполнения метода).

Описание:

Метод ВидыДляВыбора устанавливает выбираемые виды для объекта-документ неопределенного вида. Данный метод обычно используется до начала интерактивного позиционирования документа, например, при помощи метода Выбрать.

Данный метод может использоваться только для объектов типа «документ» неопределенного вида — либо созданных функцией СоздатьОбъект, либо определенных в конфигураторе как реквизиты диалога или другого объекта. Если метод ВидыДляВыбора применен к реквизиту диалога типа «документ» неопределенного вида, то интерактивный выбор будет производиться только среди установленных видов документов.

Пример:

// данная процедура присваивает некоторому реквизиту "НаОсновании"

// значение конкретного документа

Процедура УстДокОснования()

   // Создадим объект типа «документ» неопределенного вида

   Дкм = СоздатьОбъект("Документ");

   Дкм.ВидыДляВыбора("РасходнаяНакл, Счет");

   // Вызываем диалог выбора документа

   Если Дкм.Выбрать("Выберите документ основания", "") > 0 Тогда

      НаОсновании = Дкм.ТекущийЭлемент();

   КонецЕсли;

КонецПроцедуры

См. также: Выбрать

Итог

Итоговое значение реквизита документа.

Синтаксис:

Итог(<ИмяРеквизита>)

Англоязычный синоним:

Total

Параметры:

<ИмяРеквизита>

Строковое выражение, содержащее имя реквизита табличной части документа, для которого в конфигураторе установлено свойство «Итог по колонке».

Возвращаемое значение:

Числовое значение — сумма по всем строкам табличной части документа для реквизита <ИмяРеквизита>.

Описание:

Метод Итог позволяет определить сумму значений по всем строкам табличной части документа для реквизита <ИмяРеквизита>.

Данный метод может быть использован только для реквизитов табличной части документов, для которых установлено свойство «Итог по колонке» (закладка «Дополнительные» свойств реквизита документа в конфигураторе).

Пример:

Процедура ВычСреднего()

   // вычислим среднюю сумму по наряду

   Сумма = Итог("Сумма");

   Штук = Итог("Штук");

   Если Штук <> 0 Тогда

      Средн = Сумма / Штук;

   Иначе;

      Средн = 0;

   КонецЕсли;

КонецПроцедуры

КоличествоСтрок

Определить количество строк в документе.

Синтаксис:

КоличествоСтрок()

Англоязычный синоним:

LinesCnt

Возвращаемое значение:

Числовое значение — количество строк в документе.

Описание:

Метод КоличествоСтрок позволяет определить количество строк в многострочной части документа.

Пример:

Сообщить("Документ: " + Вид() + " № " + НомерДок + " от " + ДатаДок +

                    " в документе " + КоличествоСтрок() + " строк");

НайтиДокумент

Найти документ по значению.

Синтаксис:

НайтиДокумент(<Документ>)

Англоязычный синоним:

FindDocument

Параметры:

<Документ>

Выражение, содержащее значение типа «Документ».

Возвращаемое значение:

Число 1 — если действие выполнено (документ найден);

Число 0 — если действие не выполнено.

Описание:

Метод НайтиДокумент выполняет поиск документа по значению, заданному параметром <Документ>. Данный метод используется для позиционирования объекта на конкретный документ.

Данный метод может использоваться только для объектов, созданных функцией СоздатьОбъект.

Пример:

Процедура УдалДок(Докум)

   Док = СоздатьОбъект("Документ.НаклПрих");

   // позиционируем созданный объект на заданном документе

   Док.НайтиДокумент(Докум);

   Если Док.Выбран() > 0 Тогда

      // если документ найден, то удалим его

      Док.Удалить();

   Иначе

      Предупреждение ("Неверно задан документ!");

   КонецЕсли;

КонецПроцедуры

НайтиПоНомеру

Найти документ по номеру.

Синтаксис:

НайтиПоНомеру(<Номер>, <Дата>, <ИдентВида>)

Англоязычный синоним:

FindByNum

Параметры:

<Номер> | Строковое выражение, содержащее значение номера искомого документа.
<Дата> | Выражение типа «дата».
<ИдентВида> | Необязательный параметр. Строковое выражение, содержащее идентификатор вида документа или идентификатор Нумератора.

Возвращаемое значение:

Число 1 — если действие выполнено (документ найден);

Число 0 — если действие не выполнено.

Описание:

Метод НайтиПоНомеру позиционирует документ по номеру. В качестве второго параметра задается любая дата из диапазона, в котором нужно искать документ с данным номером. Поиск зависит от выбранного в конфигураторе способа уникальности номеров (по месяцу, году и др.).

Метод может быть использован для объекта Документ общего вида, тогда для поиска нужно указать в параметре <ИдентВида> идентификатор вида документа или идентификатор Нумератора.

Данный метод может использоваться только для объектов, созданных функцией СоздатьОбъект.

Пример:

Если ВвестиЧисло(Ном, "Введите номер приказа", 5, 0) = 1 Тогда

   Док=СоздатьОбъект("Документ.ПриказыУвольнения");

   // позиционируем документ по заданному номеру

   Док.НайтиПоНомеру(Строка(Ном), Дата(0));

   Если Док.Выбран() = 1 Тогда

      Документ=Док.ТекущийДокумент();

      // ...

   КонецЕсли;

КонецЕсли;

Получить Строку ПоНомеру

Получить строку документа по номеру.

Синтаксис:

ПолучитьСтрокуПоНомеру(<Номер>)

Англоязычный синоним:

GetLineByNum

Параметры:

<Номер>

Выражение, содержащее номер искомой строки.

Возвращаемое значение:

Число 1 — если действие выполнено;

Число 0 — если действие не выполнено.

Описание:

Метод ПолучитьСтрокуПоНомеру устанавливает в качестве текущей строки спецификации документа строку с заданным номером (не порядковым, а тем, который записан в строке, т. к. могут быть пропуски).

Пример:

Процедура УдалЗаданнойСтроки(Док, Стр)

   Если Док.Выбран() = 1 Тогда

      // если переданный параметр содержит значение документа, то

      // найдем в нем строку

      Док.ПолучитьСтрокуПоНомеру(Стр);

      // удалим найденную строку спецификации документа

      Док.УдалитьСтроку();

   Иначе

      Предупреждение("Документ не выбран!");

   КонецЕсли;

КонецЕсли;

ВыбратьДокументы

Открыть выборку документов.

Синтаксис:

ВыбратьДокументы(<НачалоВыборки>, <КонецВыборки>)

Англоязычный синоним:

SelectDocuments

Параметры:

<НачалоВыборки> | Необязательный параметр. Выражение типа дата, документ или позиция документа, с которого устанавливается начало выборки документов. Если данный параметр опущен, то выборка начинается с самого первого существующего в системе документа.
<КонецВыборки> | Необязательный параметр. Выражение типа дата, документ или позиция документа, на котором устанавливается конец выборки документов. Если данный параметр опущен, то выборка заканчивается самым последним существующим в системе документом.

Возвращаемое значение:

Число 1 — если действие выполнено и в выборке есть хотя бы один документ;

Число 0 — если действие не выполнено или в выборке нет ни одного документа.

Описание:

Метод ВыбратьДокументы открывает выборку документов в интервале с <НачалоВыборки> по <КонецВыборки>.

Непосредственно сама выборка осуществляется при помощи метода ПолучитьДокумент в порядке возрастания даты и времени записи документов (если не задан обратный порядок методом ОбратныйПорядок).

Данный метод может использоваться только для объектов, созданных функцией СоздатьОбъект.

Пример:

Если Режим = "Подробный" Тогда

   Док = СоздатьОбъект("Документ");

   // открываем выборку документов

   Док.ВыбратьДокументы(ДатаНачало, ДатаКонец);

   // цикл получения документов

   Пока Док.ПолучитьДокумент() > 0 Цикл

      ТекДок = Док.ТекущийДокумент();

   КонецЦикла;

КонецЕсли;

См. также: ПолучитьДокумент, ОбратныйПорядок

ВыбратьПодчиненныеДокументы

Открыть выборку подчиненных документов.

Синтаксис:

ВыбратьПодчиненныеДокументы(<НачалоВыборки>, <КонецВыборки>, <Докум>)

Англоязычный синоним:

SelectChildDocs

Параметры:

<НачалоВыборки> | Необязательный параметр. Выражение типа дата, документ или позиция документа, с которого устанавливается начало выборки документов. Если данный параметр опущен, то выборка начинается с самого первого существующего в системе документа.
<КонецВыборки> | Необязательный параметр. Выражение типа дата, документ или позиция документа, на котором устанавливается конец выборки документов. Если данный параметр опущен, то выборка заканчивается самым последним существующим в системе документом.
<Докум> | Выражение типа «документ», содержащее значение документа-владельца, подчиненные которому будут включаться в выборку.

Возвращаемое значение:

Число: 1 — если действие выполнено и в выборке есть хотя бы один документ; 0 — если действие не выполнено или в выборке нет ни одного документа.

Описание:

Метод ВыбратьПодчиненныеДокументы открывает выборку всех документов, подчиненных заданному документу <Докум> в интервале с <НачалоВыборки> по <КонецВыборки>. Непосредственно сама выборка осуществляется при помощи метода ПолучитьДокумент в порядке возрастания даты и времени записи документов (если не задан обратный порядок методом ОбратныйПорядок).

Данный метод может использоваться только для объектов, созданных функцией СоздатьОбъект.

Пример:

//Проверка того, что по Счету были документы отгрузки

ДокТест = СоздатьОбъект("Документ");

// открываем выборку документов

ДокТест.ВыбратьПодчиненныеДокументы('01.01.80', '31.12.99', ПоСчету);

// получение документа

Если ДокТест.ПолучитьДокумент() = 1 Тогда

   Предупреждение("По данному Счету были отгрузки!");

КонецЕсли;

См. также: ПолучитьДокумент, ОбратныйПорядок

ВыбратьПоЗначению

Открыть выборку документов по значению.

Синтаксис:

ВыбратьПоЗначению(<НачалоВыборки>, <КонецВыборки>, <ИмяОтбора>, <3нач>)

Англоязычный синоним:

SelectByValue

Параметры:

<НачалоВыборки> | Необязательный параметр. Выражение типа дата, документ или позиция документа, с которого устанавливается начало выборки документов. Если данный параметр опущен, то выборка начинается с самого первого существующего в системе документа.
<КонецВыборки> | Необязательный параметр. Выражение типа дата, документ или позиция документа, на котором устанавливается конец выборки документов. Если данный параметр опущен, то выборка заканчивается самым последним существующим в системе документом.
<ИмяОтбора> | Строковое выражение, которое содержит либо название «общего реквизита» документов, либо название «графы отбора» журналов, как они заданы в конфигураторе.
<3нач> | Значение отбора, по которому строится выборка документов.

Возвращаемое значение:

Число 1 — если действие выполнено и в выборке есть хотя бы один документ; 0 — если действие не выполнено или в выборке нет ни одного документа.

Описание:

Метод ВыбратьПоЗначению открывает выборку документов в интервале с <НачалоВыборки> по <КонецВыборки>, для которых реквизит отбора <ИмяОтбора> имеет конкретное заданное значение <3нач>.

Непосредственно сама выборка осуществляется при помощи метода ПолучитьДокумент в порядке возрастания даты и времени записи документов (если не задан обратный порядок методом ОбратныйПорядок).

Данный метод может использоваться только для объектов, созданных функцией СоздатьОбъект.

Пример:

Если Режим = "Подробный" Тогда

   Док = СоздатьОбъект("Документ");

   // открываем выборку документов

   Док.ВыбратьПоЗначению(ДатаНачало, ДатаКонец, "Автор", "Сидоров");

   // цикл получения документов

   Пока Док.ПолучитьДокумент() > 0 Цикл

      ТекДок = Док.ТекущийДокумент();

   КонецЦикла;

КонецЕсли;

См. также: ПолучитьДокумент, ОбратныйПорядок

ВыбратьПоНомеру

Открыть выборку документов по номеру.

Синтаксис:

ВыбратьПоНомеру(<Номер>, <Дата>, <ИдентВида>)

Англоязычный синоним:

SelectByNum

Параметры:

<Номер> | Строковое выражение, содержащее значение номера искомых документов.
<Дата> | Выражение типа «дата».
<ИдентВида> | Необязательный параметр. Строковое выражение, содержащее идентификатор вида документа или идентификатор Нумератора.

Возвращаемое значение:

Число 1 — если действие выполнено и в выборке есть хотя бы один документ; 0 — если действие не выполнено или в выборке нет ни одного документа.

Описание:

Метод ВыбратьПоНомеру открывает выборку всех документов с данным номером одного вида или одного нумератора (например, для поиска всех документов с совпадающими номерами).

В качестве второго параметра задается любая дата из диапазона, в котором нужно искать документ с данным номером. Поиск зависит от выбранного в конфигураторе способа уникальности номеров (по месяцу, году и др.).

Метод может быть использован для объекта Документ общего вида, тогда для поиска нужно указать в параметре <ИдентВида> идентификатор вида документа или идентификатор Нумератора.

Непосредственно сама выборка осуществляется при помощи метода ПолучитьДокумент в порядке возрастания даты и времени записи документов (если не задан обратный порядок методом ОбратныйПорядок).

Данный метод может использоваться только для объектов, созданных функцией СоздатьОбъект.

Пример:

Если Режим = "Подробный" Тогда

   Док = СоздатьОбъект("Документ");

   // открываем выборку документов

   Док.ВыбратьПоНомеру("Ав-0005", '01.01.98', "АктПереоценки");

   // цикл получения документов

   Пока Док.ПолучитьДокумент() > 0 Цикл

      ТекДок = Док.ТекущийДокумент();

   КонецЦикла;

КонецЕсли;

См. также: ПолучитьДокумент, ОбратныйПорядок

ВыбратьПоПоследователыюсти

Открыть выборку документов по заданной последовательности.

Синтаксис:

ВыбратьПоПоследовательности(<НачПериода>, <КонПериода> , <Последоват>)

Англоязычный синоним:

SelectBySequence

Параметры:

<НачПериода> | Необязательный параметр. Выражение типа дата, документ или позиция документа, с которого устанавливается начало выборки документов. Если данный параметр опущен, то выборка начинается с самого первого существующего в системе документа.
<КонПериода > | Необязательный параметр. Выражение типа дата, документ или позиция документа, на котором устанавливается конец выборки документов. Если данный параметр опущен, то выборка заканчивается самым последним существующим в системе документом.
<Последоват> | Строковое выражение, содержащее идентификатор используемой Последовательности.

Возвращаемое значение:

Число 1 — если действие выполнено и в выборке есть хотя бы один документ; 0 — если действие не выполнено или в выборке нет ни одного документа.

Описание:

Метод ВыбратьПоПоследовательности открывает выборку документов по заданной последовательности.

Непосредственно сама выборка осуществляется при помощи метода ПолучитьДокумент в порядке возрастания даты и времени записи документов (если не задан обратный порядок методом ОбратныйПорядок).

Данный метод может использоваться только для объектов, созданных функцией СоздатьОбъект.

Пример:

Если Режим = "Подробный" Тогда

   Док = СоздатьОбъект ("Документ");

   // открываем выборку документов

   Док.ВыбратьПоПоследовательности(НачД, ПолучитьДокументТА(), "Упр");

   // цикл получения документов

   Пока Док.ПолучитьДокумент() > 0 Цикл

      ТекДок = Док.ТекущийДокумент();

   КонецЦикла;

КонецЕсли;

См. также: ПолучитьДокумент, ОбратныйПорядок

ОбратныйПорядок

Установить порядок выборки документов.

Синтаксис:

ОбратныйПорядок(<Режим>)

Англоязычный синоним:

BackwardOrder

Параметры:

<Режим>

Необязательный параметр. Числовое выражение: 1 — выбирать документы в обратном порядке даты и времени; 0 — выбирать документы в порядке возрастания даты и времени. Значение по умолчанию — 1.

Возвращаемое значение:

Текущее значение порядка выборки документов (на момент до исполнения метода): 1 — обратный порядок выборки документов; 0 — выборка документов в порядке возрастания даты и времени.

Описание:

Метод ОбратныйПорядок устанавливает порядок выборки документов. Данный метод обычно используется до вызова одного из методов: ВыбратьДокументы, ВыбратьПодчиненныеДокументы, ВыбратьПоЗначению, который фактически открывает выборку. Дальнейшая выборка при помощи ПолучитьДокумент будет происходить в заданном порядке выборки.

По умолчанию, выборка документов выполняется в порядке возрастания даты и времени записи документов. Поэтому реально имеет смысл применять данный метод только в том случае, если надо получить обратный порядок выборки.

В тексте программного модуля возможно использование данного метода как процедуры или как функции. При использовании в качестве функции, возвращаемое значение соответствует текущему порядку выборки, которое было до вызова данного метода.

Данный метод может использоваться только для объектов, созданных функцией СоздатьОбъект.

Пример:

Если Режим = "Подробный" Тогда

   Док = СоздатьОбъект("Документ");

   // устанавливаем обратный порядок выборки документов

   Док = ОбратныйПорядок(1);

   // открываем выборку документов

   Док.ВыбратьДокументы(ДатаНачало, ДатаКонец);

   // цикл получения документов

   Пока Док.ПолучитьДокумент() > 0 Цикл

      ТекДок = Док.ТекущийДокумент();

   КонецЦикла;

КонецЕсли;

УстановитьФильтр

Назначить фильтр выборки документов.

Синтаксис:

УстановитьФильтр(<Проведенные>, <НеПроведенные>, <НеИмеющиеПризнаковУчета>,

<Оперативные>, <Расчетные>, <Бухг>)

Англоязычный синоним:

SetFilter

Параметры:

<Проведенные> | Числовое выражение: 0 — не включать в выборку проведенные документы; 1 — включать.
<НеПроведенные> | Числовое выражение: 0 — не включать в выборку непроведенные документы; 1 — включать.
<НеИмеющиеПризнаковУчета> | Числовое выражение: 0 — не включать в выборку документы не имеющие признаков учета; 1 — включать.
<0перативные> | Числовое выражение: 0 — не включать в выборку оперативные документы; 1 — данный флаг не влияет на выборку; 2 — если оперативный документ, то включается в выборку.
<Расчетные> | Числовое выражение: 0 — не включать в выборку расчетные документы; 1 — данный флаг не влияет на выборку; 2 — если расчетный документ, то включается в выборку.
<Бухг> | Числовое выражение: 0 — не включать в выборку бухгалтерские документы; 1 — данный флаг не влияет на выборку; 2 — если бухгалтерский документ, то включается в выборку.

Описание:

Метод УстановитьФильтр назначает фильтр выборки документов.

Примеры:

· Док.УстановитьФильтр(1, 1, 1, 1, 1, 1) — в выборку включаются все документы;

· Док.УстановитьФильтр(1, 0, 1, 1, 1, 1) — в выборку включаются все проведенные документы;

· Док.УстановитьФильтр(1, 1, 0, 1, 0, 1) — в выборку включаются все документы, имеющие признак оперативный или бухгалтерский или оба, но не имеют признака расчетный;

· Док.УстановитьФильтр(1, 1, 1, 2, 1, 2) — в выборку включаются все документы, имеющие признаки и оперативный и бухгалтерский и те, которые не имеют признаков учета;

· Док.УстановитьФильтр(1, 1, 1, 2, 0, 2) — в выборку включаются все документы, имеющие признаки и оперативный и бухгалтерский, но не имеют признака расчета, и те, которые не имеют признаков учета;

· Док.УстановитьФильтр(1, 0, 0, 0, 1, 0) — в выборку не включаются проведенные документы, если они неоперативные и небухгалтерские и имеют признаки учета, т. е. фактически только проведенные расчетные. Данный метод может использоваться только для документов, созданных функцией СоздатьОбъект.

Пример:

Док = СоздатьОбъект("Документ");

// устанавливаем фильтр выборки документов

Док.УстановитьФильтр(1, 0, 0, 1, 0, 0);

// открываем выборку документов

Док.ВыбратьДокументы(ДатаНачало, ДатаКонец);

// цикл получения документов

Пока Док.ПолучитьДокумент() > 0 Цикл

   ТекДок = Док.ТекущийДокумент();

КонецЦикла;

ПолучитьДокумент

Получить из выборки следующий документ.

Синтаксис:

ПолучитьДокумент()

Англоязычный синоним:

GetDocument

Возвращаемое значение:

Числовое значение: 1 — если следующий документ выбран успешно; 0 — если документ не найден (отсутствует).

Описание:

Метод ПолучитьДокумент выбирает следующий документ в последовательности выборки, открытой перед этим при помощи метода ВыбратьДокументы. Данный метод используется для организации цикла по документам.

Данный метод может использоваться только для позиционируемых объектов, созданных функцией СоздатьОбъект.

Пример:

Если Режим = "Подробный" Тогда

   Док = СоздатьОбъект("Документ");

   // Откроем выборку документов

   Док.ВыбратьДокументы(ДатаНачало, ДатаКонец);

   // Цикл выбора документов

   Пока Док.ПолучитьДокумент() > 0 Цикл

   // присвоим переменной ТекДок значение найденного документа

      ТекДок = Док.ТекущийДокумент();

      // ...

   КонецЦикла;

КонецЕсли;

См. также: ВыбратьДокументы

ВыбратьСтроки

Открыть выборку строк многострочной части документа.

Синтаксис:

ВыбратьСтроки()

Англоязычный синоним:

SelectLines

Возвращаемое значение:

Число: 1 — если действие выполнено и в выборке есть хотя бы одна строка; 0 — если действие не выполнено или в выборке нет ни одной строки.

Описание:

Метод ВыбратьСтроки открывает выборку строк многострочной части документа. Непосредственно сама выборка осуществляется при помощи метода ПолучитьСтроку в порядке возрастания номеров строк.

Пример:

Процедура ОбработкаПроведения()

   Регистр.ТовЗап.Склад = Склад;

   // откроем выборку строк спецификации документа

   ВыбратьСтроки();

   // цикл получения строк спецификации документа

   Пока ПолучитьСтроку() > 0 Цикл

      Регистр.ПривязыватьСтроку(НомерСтроки);

      Регистр.ТовЗап.Товар = Товар;

      Регистр.ТовЗап.Количество = Количество;

      Регистр.ТовЗап.Стоимость = Стоимость;

      Регистр.ТовЗап.ДвижениеРасходВыполнить();

   КонецЦикла;

КонецПроцедуры

ПолучитьСтроку

Получить из выборки следующую строку табличной части документа.

Синтаксис:

ПолучитьСтроку()

Англоязычный синоним:

GetLine

Возвращаемое значение:

Число: 1 — если следующая строка табличной части документа выбрана успешно; 0 — если следующая строка документа не найдена (отсутствует).

Описание:

Метод ПолучитьСтроку выбирает следующую строку документа в последовательности выборки, открытой перед этим при помощи метода ВыбратьСтроки. Данный метод используется для организации цикла по строкам документа.

Пример:

Процедура ОбработкаПроведения()

   Регистр.ТовЗап.Склад = Склад;

   // открываем выборку строк спецификации документа

   ВыбратьСтроки();

   // цикл выбора строк спецификации документа

   Пока ПолучитьСтроку() > 0 Цикл

      Регистр.ПривязыватьСтроку(НомерСтроки);

      Регистр.ТовЗап.Товар=Товар;

      Регистр.ТовЗап.Количество=Количество;

      Регистр.ТовЗап.Стоимость=Стоимость;

      Регистр.ТовЗап.ДвижениеРасходВыполнить();

   КонецЦикла;

КонецПроцедуры

Новый

Начать ввод нового документа.

Синтаксис:

Новый()

Англоязычный синоним:

New

Описание:

Метод Новый инициализирует создание нового документа. Собственно запись нового документа в информационную базу происходит при вызове метода Записать. После инициализации создания нового документа, как правило производится заполнение его реквизитов с последующим вызовом метода Записать.

Данный метод может использоваться только для объектов, созданных функцией СоздатьОбъект.

Пример:

// данная процедура создает документ с № 1, в котором записывает

// все имеющиеся в справочнике должности

Процедура Оприходовать()

   Спр = СоздатьОбъект("Справочник.Должности");

   Док = СоздатьОбъект("Документ.Приказы");

   // найдем документ с № 1

   Док.НайтиПоНомеру("1", 0);

   Если Док.Выбран() = 0 Тогда

      // если документа с № 1 не существует, то создадим его

      Док.Новый();

      Док.НомерДок = "1";

      Док.ДатаДок='01.01.80';

      // запишем все должности в документ

      Спр.ВыбратьЭлементы();

      Пока Спр.ПолучитьЭлемент() > 0 Цикл

         Если (Док.Выбран() = 1) Тогда

            Док.НоваяСтрока();

            Док.Должность = Спр.ТекущийЭлемент();

         КонецЕсли;

      КонецЦикла;

      // запишем новый документ на диск

      Док.Записать();

   КонецЕсли;

КонецПроцедуры

ПрефиксНомера

Установить текущий префикс номера для документа.

Синтаксис:

ПрефиксНомера(<Префикс>)

Англоязычный синоним:

NumPrefix

Параметры:

<Префикс>

Необязательный параметр. Строковое выражение — новый префикс номера для документа.

Возвращаемое значение:

Строковое значение текущего префикса документа (на момент до исполнения метода).

Описание:

Метод ПрефиксНомера устанавливает новый префикс для автоматического создания номера документа.

Данный метод может использоваться только для объектов, созданных Функцией СоздатьОбъект и в основном предназначен для использования при создании новых документов из языка с помощью метода Новый.

Пример:

ПрефиксНомера("Сч-");

См. также: ПрефиксАвтоНумерации, УстановитьНовыйНомер

УстановитьНовыйНомер

Установить новый номер с префиксом номера для документа.

Синтаксис:

УстановитьНовыйНомер(<Префикс>)

Англоязычный синоним:

SetNewNum

Параметры:

<Префикс>

Строковое выражение — префикс номера документа.

Описание:

Метод УстановитьНовыйНомер устанавливает новый номер документа с заданным префиксом <Префикс>. Данный метод производит корректное переприсвоение номера документа (с автоинкрементацией и резервированием номера на время ввода).

Пример:

УстановитьНовыйНомер("01-");

См. также: ПрефиксАвтоНумерации, ПрефиксНомера

НазначитьТип

Назначить тип для реквизита неопределенного вида.

Синтаксис:

НазначитьТип(<ИмяРеквизита>, <ИмяТипа>, <Длина>, <Точность>)

Англоязычный синоним:

SetType

Параметры:

<ИмяРеквизита> | Строковое выражение — название реквизита документа неопределенного типа, как он назван в конфигураторе.
<ИмяТипа> | Строковое выражение — название типа данных (или Вид субконто), который назначается реквизиту документа. Например: "Строка", "Число", "Справочник.Товары", "Документ.РасходнаяНакладная" и т. п.
<Длина> | Необязательный параметр. Числовое выражение — длина поля представления данных. Имеет смысл только при задании числового или строкового типа.
<Точность> | Необязательный параметр. Числовое выражение — число знаков числа после десятичной точки. Имеет смысл только при задании числового типа.

Описание:

Метод НазначитьТип позволяет назначить тип для реквизита, которому в конфигураторе назначен тип «Неопределенный».

Пример:

Накладная.НазначитьТип("ТМЦ", "Справочник.Товары");

Записать

Записать документ.

Синтаксис:

Записать()

Англоязычный синоним:

Write

Описание:

Метод Записать выполняет запись в базу данных текущего нового или измененного документа.

Замечание. Если этот метод применяется в Модуле формы документа непосредственно к документу локального контекста, то данный метод отрабатывает те же действия, как интерактивное нажатие пользователем кнопки с формулой "#Записать".

Пример:

Док.СоздатьОбъект("Документ.Заказ");

Док.АвтоВремяТекущее();

Док.Новый();

Док.УстановитьНовыйНомер("Прг-");

Док.Клиент = Константа.ОсновнойКлиент;

Док.Количество = 5;

Док.Записать();

Док.Провести(1, "Программно");

Удалить

Удалить документ.

Синтаксис:

удалить(<Режим>)

Англоязычный синоним:

Delete

Параметры:

<Режим>

Необязательный параметр. Числовое выражение: 1 — непосредственное удаление; 0 — пометка на удаление. Значение по умолчанию — 1.

Описание:

Метод Удалить удаляет (или делает пометку на удаление) текущий документ. Данный метод разрешено применять только для тех документов, которые либо не проведены, либо они лежат за точкой ТА, т. е. предполагается, что предварительно интерактивно сдвинули ТА назад.

Данный метод может использоваться только для объектов, созданных функцией СоздатьОбъект.

Замечание: Непосредственное удаление объекта следует применять очень аккуратно, так как это действие может нарушить ссылочную целостность информации. Данный режим не рекомендуется использовать, если на данный объект могут быть ссылки в других объектах, например в реквизитах существующих документов.

Пример:

Док = СоздатьОбъект("Документ.Приказы");

Если Док.Выбрать("Найди документ") > 0 Тогда

   Док.Удалить(1);

КонецЕсли;

См. также: ПометкаУдаления, СнятьПометкуУдаления

ПометкаУдаления

Прочитать флаг пометки удаления документа.

Синтаксис:

ПометкаУдаления()

Англоязычный синоним:

DeleteMark

Возвращаемое значение:

Число: 1 — если на документе стоит пометка удаления; 0 — если нет пометки удаления.

Описание:

Метод ПометкаУдаления позволяет прочитать значение пометки удаления документа.

Пример:

Процедура УсловноеУдаление(Докум)

   Док = СоздатьОбъект("Документ");

   Если Докум.Выбран() > 0 Тогда

      // позиционируем документ на переданном значении

      Док.НайтиДокумент(Докум);

      Если Док.Выбран() > 0 Тогда

         Если Вопрос("Удалять??? ", 1) = 1 Тогда

            Если Док.ПометкаУдаления() = 1 Тогда

               Предупреждение("Уже помечен на удаление!");

            Иначе

               // удаляем документ

               Док.Удалить(0);

            КонецЕсли;

         КонецЕсли;

      Иначе

         Предупреждение("Нечего удалять! ");

      КонецЕсли;

   КонецЕсли;

КонецПроцедуры

См. также: Удалить, СнятьПометкуУдаления

СнятьПометкуУдаления

Снять пометку удаления документа.

Синтаксис:

СнятьПометкуУдаления()

Англоязычный синоним:

ClearDeleteMark

Описание:

Метод СнятьПометкуУдаления снимает пометку удаления текущего документа.

Данный метод может использоваться только для объектов, созданных функцией СоздатьОбъект.

Пример:

Процедура Восстановление(Докум)

   Док = СоздатьОбъект("Документ");

   Если Докум.Выбран() > 0 Тогда

      // позиционируем документ на переданном значении

      Док.НайтиДокумент(Докум);

      Если Док.Выбран() > 0 Тогда

         Если Док.ПометкаУдаления() = 1 Тогда

            // восстанавливаем

            Спр.СнятьПометкуУдаления();

         КонецЕсли;

      КонецЕсли;

   КонецЕсли;

КонецПроцедуры _________ _______

См. также: Удалить, ПометкаУдаления

НоваяСтрока

Добавить новую строку в документ.

Синтаксис:

НоваяСтрока()

Англоязычный синоним:

NewLine

Описание:

Метод НоваяСтрока добавляет новую строку с очередным порядковым номером в многострочную часть документа.

Пример:

Процедура ОбработкаПодбора(Выб, КонФормы)

   Кол=0;

   Если ВвестиЧисло(Кол, "Введите количество", 10, 0) = 1 Тогда

      // добавим новую строку в спецификацию

      НоваяСтрока();

      Работа = Выб;

      Количество = Кол;

      АктивизироватьСтроку();

   КонецЕсли;

КонецПроцедуры

УдалитьСтроку

Удалить строку документа.

Синтаксис:

УдалитьСтроку()

Англоязычный синоним:

DeleteLine

Описание:

Метод УдалитьСтроку удаляет текущую строку из многострочной части Документа.

Пример:

Процедура УдалЗаданнойСтроки(Док, Стр)

   Если Док.Выбран() = 1 Тогда

      // если переданный параметр содержит значение документа, то

      // найдем в нем строку

      Док.ПолучитьСтрокуПоНомеру(Стр);

      // удалим найденную строку спецификации документа

      Док.УдалитьСтроку();

      Предупреждение("Документ не выбран!");

   КонецЕсли;

КонецЕсли;

УдалитьСтроки

Удалить все строки документа.

Синтаксис:

УдалитьСтроки()

Англоязычный синоним:

DeleteLines

Описание:

Метод УдалитьСтроки удаляет сразу все строки из многострочной части документа.

Пример:

УдалитьСтроки();

СортироватьСтроки

Сортировать многострочную часть документа по реквизитам.

Синтаксис:

СортироватьСтроки(<Колонки>)

Англоязычный синоним:

SortLines

Параметры:

<Колонки>

Перечисленные через запятую реквизиты многострочной части документа, по которым следует сортировать. Знаки "+", "-", предшествующие названию реквизита указывают направление сортировки по реквизиту. Знак "*" — сортировать по внутреннему значению реквизита.

Описание:

Метод СортироватьСтроки позволяет сортировать многострочную часть документа по реквизитам.

Пример:

Док = СоздатьОбъект("Документ.Приказы");

Если Док.Выбрать("Найди документ") > 0 Тогда

   Док.СортироватьСтроки("+Сумма, -НДС");

   Док.Записать ();

КонецЕсли;

ПолучитьПозицию

Получить позицию документа.

Синтаксис:

ПолучитьПозицию()

Англоязычный синоним:

GetPosition

Возвращаемое значение:

32-х символьное строковое значение позиции документа.

Описание:

Метод ПолучитьПозицию возвращает позицию документа.

Замечание. Позиция может существовать только у записанного документа.

Пример:

ПозицияДокумента = ВыбДокумент.ПолучитьПозицию();

ПринадлежитПоследовательности

Определить, принадлежит ли последовательности данный документ.

Синтаксис:

ПринадлежитПоследовательности(<Последов>, <НовоеЗначение>)

Англоязычный синоним:

BelongToSequence

Параметры:

<Последов> | Строковое выражение, определяющая Последовательность.
<НовоеЗначение> | Необязательный параметр. Число: 1 — документ принудительно устанавливается как принадлежащий последовательности; 0 — документ принудительно устанавливается как не принадлежащий последовательности. Использование этого параметра разрешено только при проведении документа (в Модуле документа).

Возвращаемое значение:

Число: 1 — если документ принадлежит последовательности; 0 — если не принадлежит.

Описание:

Метод ПринадлежитПоследовательности позволяет определить, принадлежит ли документ заданной последовательности.

Пример:

Если Док.ПринадлежитПоследовательности(«УпрУчет») = 1 Тогда

   Если Последовательность.УпрУчет.Сравнить(Док) = 1 Тогда

      Последовательность.УпрУчет.Установить(Док);

   КонецЕсли;

КонецЕсли;

ИспользоватьЖурнал

Использовать журнал для отбора документов и доступа к графам.

Синтаксис:

ИспользоватьЖурнал(<Журнал>, <ФлагОгрПросм>)

Англоязычный синоним:

UseJournal

Параметры:

<Журнал> | Идентификатор журнала, который предполагается использовать для отбора документов и доступа к графам.
<ФлагОгрПросм> | Необязательный параметр. Число: 1 — если выборка ограничивается документами, входящими в указанный журнал; 0 — если метод используется только для использования граф методом Графа. Значение по умолчанию 1.

Описание:

Метод ИспользоватьЖурнал позволяет при переборе документов командой Выбрать использовать журнал для отбора документов и доступа к графам журнала.

Пример:

Док = СоздатьОбъект("Документ.НаклПрих");

Док.ИспользоватьЖурнал("Приходные");

См. также: Графа

Графа

Выдает значение графы журнала для текущего документа.

Синтаксис:

Графа(<Графа>)

Англоязычный синоним:

Column

Параметры:

<Графа>

Идентификатор графы журнала, который задан методом ИспользоватьЖурнал.

Возвращаемое значение:

Значение заданной графы журнала для текущего документа.

Описание:

Метод Графа позволяет получить значение заданной графы журнала для текущего документа. Данный метод работает только в том случае, если ранее Применен метод ИспользоватьЖурнал.

Пример:

Док = СоздатьОбъект("Документ.НаклПрих");

Док.ИспользоватьЖурнал("Приходные", 0);

док.НайтиДокумент(ВыбДок);

Цена = Док.Графа("Цена");

См. также: ИспользоватьЖурнал

Блокировка

Установить/прочитать режим блокировки.

Синтаксис:

Блокировка(<ВклВыкл>)

Англоязычный синоним:

Locking

Параметры:

<ВклВыкл>

Необязательный параметр. Число: 1 — включить; 0 — выключить.

Возвращаемое значение:

Если при вызове метода параметр <ВклВыкл> не задан, то возвращается режим блокировки до выполнения метода. Число: 1 — заблокирован; 0 — свободен.

Если при вызове метода параметр <ВклВыкл> задан, то возвращается результат выполнения метода блокировки. Число: 1 — успешно; 0 — не получилось.

Описание:

Метод Блокировка позволяет установить/прочитать режим блокировки.

Пример:

Блокировка(0);

ПолучитьВремя

Прочитать время документа.

Синтаксис:

ПолучитьВремя(<Часы>, <Минуты>, <Секунды>)

Англоязычный синоним:

GetTime

Параметры:

<Часы> | Идентификатор переменной, в которую метод возвращает строковое значение минут записи документа.
<Секунды> | Идентификатор переменной, в которую метод возвращает строковое значение секунд записи документа.

Возвращаемое значение:

Строковое значение времени записи документа в виде "ЧЧ.ММ.СС".

Описание:

Метод ПолучитьВремя возвращает время документа в переданные для этого переменные <Часы>, <Минуты>, <Секунды>.

Данный метод может использоваться только для объектов, созданных функцией СоздатьОбъект.

Пример:

Функция ВремяДокумента(Док)

   Перем Ч;

   Перем М;

   Перем С;

   Если Док.Выбран() > 0 Тогда

      Док.ПолучитьВремя(Ч, М, С);

      Возврат "Документ записан в " + Ч + " час " + М + " мин. " + С + " с";

   Иначе

      Возврат "Документ не выбран!";

   КонецЕсли;

Конецфункции

УстановитьВремя

Установить время документа.

Синтаксис:

УстановитьВремя(<Часы>, <Минуты>, <Секунды>)

Англоязычный синоним:

SetTime

Параметры:

<Часы> | Числовое выражение.
<Минуты> | Числовое выражение.
<Секунды> | Числовое выражение.

Описание:

Метод УстановитьВремя устанавливает время документа в соответствии с заданными параметрами <Часы>, <Минуты>, <Секунды>.

Замечание. Для новых документов в модуле формы доступно использование методов установки признака авто-формирования времени документа и собственно установки времени. Если эти методы использованы, то диалог запроса времени не вызывается и игнорируются пользовательские установки в параметрах системы.

Пример:

Док = СоздатьОбъект("Документ.НаклПрих");

Если Док.Выбрать("Найди документ") > 0 Тогда

   Док.УстановитьВремя(13, 0, 0);

КонецЕсли;

См. также: ПриИзмененииВремениДокумента

АвтоВремяНачалоДня

Установить новому документу время на начало дня.

Синтаксис:

АвтоВремяНачалоДня()

Англоязычный синоним:

AutoTimeBegOfDay

Описание:

Метод АвтоВремяНачалоДня устанавливает режим, при котором новому документу записывается время на начало дня.

Замечание. Для новых документов в модуле формы доступно использование методов установки признака авто-формирования времени документа и собственно установки времени. Если эти методы использованы, то диалог запроса времени не вызывается и игнорируются пользовательские установки в параметрах системы.

Пример:

Процедура УстВремяДок(Док, Режим)

   Если Режим = "Начало" Тогда

      Док.АвтоВремяНачалоДня();

   ИначеЕсли Режим = "Конец" Тогда

      Док.АвтоВремяКонецДня();

   ИначеЕсли Режим = "Текущее" Тогда

      Док.АвтоВремяТекущее();

   Иначе

      Док.АвтоВремяОтключить();

   КонецЕсли;

КонецПроцедуры

АвтоВремяКонецДня

Установить новому документу время на конец дня.

Синтаксис:

АвтоВремяКонецДня()

Англоязычный синоним:

AutoTimeEndOfDay

Описание:

Метод АвтоВремяКонецДня устанавливает режим, при котором новому документу записывается время на конец дня.

Замечание. Для новых документов в модуле формы доступно использование методов установки признака авто-формирования времени документа и собственно установки времени. Если эти методы использованы, то диалог запроса времени не вызывается и игнорируются пользовательские установки в параметрах системы.

Пример:

См. предыдущий пример

АвтоВремяТекущее

Установить новому документу текущее время.

Синтаксис:

АвтоВремяТекущее()

Англоязычный синоним:

AutoTimeCurrent

Описание:

Метод АвтоВремяТекущее устанавливает режим, при котором новому документу записывается текущее время.

Замечание. Для новых документов в модуле формы доступно использование методов установки признака авто-формирования времени документа и собственно установки времени. Если эти методы использованы, то диалог запроса времени не вызывается и игнорируются пользовательские установки в параметрах системы.

Пример:

Процедура УстВремяДок(Док, Режим)

   Если Режим = "Начало" Тогда

      Док.АвтоВремяНачалоДня();

   ИначеЕсли Режим = "Конец" Тогда

      Док.АвтоВремяКонецДня();

   ИначеЕсли Режим = "Текущее" Тогда

      Док.АвтоВремяТекущее();

   Иначе

      Док.АвтоВремяОтключить();

   КонецЕсли;

КонецПроцедуры

АвтоВремяПослеТА

Установить новому документу время после ТА.

Синтаксис:

АвтоВремяПослеТА()

Англоязычный синоним:

AutoTimeAfterAP

Описание:

Метод АвтоВремяПослеТА устанавливает режим, при котором, если совпадает дата документа с датой ТА, то новому документу автоматически записывается время после ТА. Метод исполняется только если установлена компонента оперативный учет.

Замечание. Для новых документов в модуле формы доступно использование методов установки признака авто-формирования времени документа и собственно установки времени. Если эти методы использованы, то диалог запроса времени не вызывается и игнорируются пользовательские установки в параметрах системы.

Пример:

Процедура УстВремяДок(Док, Режим)

   Если Режим = "Начало" Тогда

      Док.АвтоВремяНачалоДня();

   ИначеЕсли Режим = "Конец" Тогда

      Док.АвтоВремяКонецДня();

   ИначеЕсли Режим = "Текущее" Тогда

      Док.АвтоВремяТекущее();

   ИначеЕсли Режим = "ПослеТА" Тогда

      Док.АвтоВремяПослеТА();

   Иначе

      Док.АвтоВремяОтключить();

   КокецЕсли;

КонецПроцедуры

АвтоВремяОтключить

Отключает режим автоматической установки времени документа.

Синтаксис:

АвтоВремяОтключить()

Англоязычный синоним:

AutoTimeOff

Описание:

Метод АвтоВремяОтключить отключает режим автоматической установки времени нового документа, при этом новые документы заносятся с временем устанавливаемым при помощи метода УстановитьВремя.

Замечание. Для новых документов в модуле формы доступно использование методов установки признака авто-формирования времени документа и собственно установки времени. Если эти методы использованы, то диалог запроса времени не вызывается и игнорируются пользовательские установки в параметрах системы.

Пример:

См. предыдущий пример

См. также: УстановитьВремя

Провести

Выполнить проведение документа.

Синтаксис:

Провести(<Режим>, <3нач>)

Англоязычный синоним:

MakeActions

Параметры:

<Режим>

Необязательный параметр. Числовое выражение: 0 — проводить документ без сдвига ТА; 1 — проводить непроведенный документ реальным временем (со сдвигом ТА); 2 — перепроводить проведенный документ реальным временем (со сдвигом ТА); 3 —проводить любой (непроведенный, проведенный) документ реальным временем (со сдвигом ТА). Значение по умолчанию — 0.

Данный параметр устанавливает режим проведения документа после ТА. Этот метод относится к случаю проведения документа в пределах даты, в которой находится ТА. Дело в том, что при записи документа, документ кроме даты получает еще и время документа. В многопользовательском режиме часто возникает ситуация, когда в момент проведения документа, он уже оказывается не последним в потоке проводимых документов (провели документ с другого рабочего места), в этом случае система 1С:Предприятие дает на выбор два варианта проведения:

· провести документ тем временем, каким он был записан, т. е. фактически задним временем (до ТА);

· изменить время документа в рамках текущей даты, чтобы документ стал самым последним и проводился в потоке, т. е. в ТА.

<3нач>

Необязательный параметр. Выражение произвольного типа. Значение данного параметра будет передано системой в качестве параметра при запуске предопределенной процедуры ОбработкаПроведения. Использовать данное значение можно, например, для того, чтобы в процедуре ОбработкаПроведения правильно отработать режим проведения, т. к. это программный, а не интерактивный и не групповой (см. ГрупповаяОбработка) способ проведения. По умолчанию передается пустое значение.

Возвращаемое значение:

Число: 1 — проведение документа завершено успешно; 0 — проведение документа не выполнено.

Описание:

Метод Провести запускает процедуру проведения документа. Возвращаемое значение можно использовать, например, в качестве условия принятия решения при завершении обработки транзакции.

Замечание. Данный метод нельзя использовать в теле предопределенной процедуры ОбработкаПроведения.

Замечание. Если этот метод применяется в Модуле формы документа непосредственно к документу локального контекста, то данный метод отрабатывает те же действия, как интерактивное нажатие пользователем кнопки с формулой "#Провести". В этом случае, если параметр <Режим> опущен, то документ проводится в режиме, соответствующем установкам системы меню «Сервис» - «Параметры».

Пример:

Док.СоздатьОбъект("Документ.Заказ");

Док.АвтоВремяТекущее();

Док.Новый();

Док.УстановитьНовыйНомер("Прг-");

Док.Клиент = Константа.ОсновнойКлиент;

Док.Количество = 5;

Док.Записать();

Док.Провести(1, "Программно");

См. также: ОбработкаПроведения, ГруппроваяОбработка

СделатьНеПроведенным

Отменить проведение документа.

Синтаксис:

СделатьНеПроведенным()

Англоязычный синоним:

UnPost

Описание:

Метод СделатьНеПроведенным отменяет проведение документа. Данный метод нельзя использовать в теле предопределенной процедуры ОбработкаПроведения.

Данный метод может использоваться только для объектов, созданных функцией СоздатьОбъект.

Пример:

Док.СоздатьОбъект("Документ.Заказ");

Док.НайтиДокумент(Докум);

Док.СделатьНеПроведенным();

См. также: Провести, ПриОтменеПроведенияДокумента

СравнитьТА

Сравнить дату и время документа с Точкой актуальности итогов.

Синтаксис:

СравнитьТА()

Англоязычный синоним:

CompareWithAP

Возвращаемое значение:

Числовое значение:

· 1(плюс единица) — если дата и время документа больше даты и времени Точки актуальности итогов.

· 0 — если дата и время документа равно дате и времени Точки актуальности итогов.

· -1 (минус единица) — если дата и время документа меньше даты и времени Точки актуальности итогов.

· -2 (минус два) в случае, если новый документ, который сравнивается с ТА, еще не записан, то есть он еще не имеет никакой позиции на оси времени.

Описание:

Метод СравнитьТА сверяет дату и время документа с датой и временем Точки актуальности итогов, позволяя определить положение на оси времени момента записи документа по отношению к текущиму положению ТА.

Пример:

Процедура ОбработкаПроведения()

   Если СравнитьТА() > 0 Тогда

      // если документ после ТА, вызываем процедуру

      ПроводкаДокументаБудущимЧислом();

   ИначеЕсли СравнитьТА() < 0 Тогда

      // если документ до ТА, вызываем процедуру

      ПроводкаДокументаЗаднимЧислом();

   Иначе

      // если документ в ТА, вызываем процедуру

      ПроводкаДокумента();

   КонецЕсли;

КонецПроцедуры

СуществуетОперация

Устанавливает (возвращает) признак существования операции у документа.

Синтаксис:

СуществуетОперация(<Признак>)

Англоязычный синоним:

OperExist

Параметры:

<Признак>

Числовое выражение: 1 — существует операция, 0 — не существует операции.

Возвращаемое значение:

Числовое значение — текущее значение признака: 1 — у документа существует операция; 0 — у документа не существует операции.

Описание:

В метаданных для конкретного вида документа (имеющего признак «Бухгалтерский учет») устанавливается режим записи операции. Операция может записываться для документов данного вида в режимах: «Всегда», «Выборочно» и «Только при проведении».

Метод СуществуетОперация применяется в случае использования режима «Выборочно». Он устанавливает признак наличия операции у конкретного документа. Данная возможность позволяет записывать операцию для документов конкретного вида в зависимости от некоторых условий. Для режимов записи операции «Всегда» и «Только при проведении» данный метод смысла не имеет.

Пример:

* Для накладной операция будет записываться только если отгрузка ведется с основного склада.

Процедура ПриЗаписи()

   Если Склад = ОснСклад Тогда

      СуществуетОперация(1);

   Иначе

      СуществуетОперация(0);

   КонецЕсли;

КонецПроцедуры

ВыгрузитьТабличнуюЧасть

Выгрузить многострочную часть документа в таблицу значений.

Синтаксис:

ВыгрузитьТабличнуюЧасть(<3нач>, <Реквизиты>)

Англоязычный синоним:

UnloadTable

Параметры:

<3нач> | Идентификатор переменной, содержащей значение типа «Таблица значений» или «Список значений», куда нужно выгрузить данные из многострочной части документа. Если переданное значение пустое, то система сама создаст объект типа «Таблица значений». Колонки совмещаются по идентификаторам.
<Реквизиты> | Необязательный параметр. Список реквизитов многострочной части документа через запятую. Данный параметр указывает, какие реквизиты выгружать, если не указано то все. Для номера строки документа в таблице значений создается отдельная колонка с идентификатором "НомерСтрокиДокумента". При задании какие колонки выгружать, для выгрузки номера строки надо указать колонку "НомерСтроки".

Описание:

Метод ВыгрузитьТабличнуюЧасть выгружает многострочную часть документа в таблицу значений или список значений. Если в качестве значения для выгрузки задан список значений, то система выгружает данные из многострочной части документа последовательно по реквизитам.

Пример:

ВыбДокум.ВыгрузитьТабличнуюЧасть(ТаблЗнач, "Товар, Сумма, НДС, Цена");

ЗагрузитьТабличнуюЧасть

Загрузить многострочную часть документа из таблицы значений.

Синтаксис:

ЗагрузитьТабличнуюЧасть(<ТаблЗнач>)

Англоязычный синоним:

LoadTable

Параметры:

<ТаблЗнач>

Таблица значений, откуда загружается многострочная часть документа. Колонки совмещаются по идентификаторам.

Описание:

Метод ЗагрузитьТабличнуюЧасть загружает многострочную часть документа из таблицы значений.

Пример:

ВыбДокум.ЗагрузитьТабличнуюЧасть(ТаблЗнач);

Методы контекста Модуля формы документа

Описанные в данном разделе методы доступны только в контексте Модуля формы документа (см. «Виды программных модулей»).

ПриЗаписиПерепроводить

Установить режим обязательного перепроведения документа при записи.

Синтаксис:

ПриЗаписиПерепроводить(<Режтл>)

Англоязычный синоним:

ReMakeActionsWhenWrite

Параметры:

<Режим>

Числовое выражение: 1 — устанавливает флаг обязательного перепроведения при записи уже проведенного документа; 0 — снимает флаг обязательного перепроведения при записи уже проведенного документа.

Описание:

Метод ПриЗаписиПерепроводить устанавливает режим обязательного перепроведения при записи ранее проведенного документа (интерактивный отказ от проведения документа или ошибка модуля приведет к отмене записи отредактированного документа).

Данный метод доступен только в контексте Модуле формы документа (см. «Виды программных модулей»). Действие данного метода относится только к текущему документу, который доступен в локальном контексте Модуля формы Пример:

Процедура ПриОткрытии()

   ПриЗаписиПерепроводить(1);

КонецПроцедуры

ПроводитьПослеТА

Установить режим проведения документа после ТА.

Синтаксис:

ПроводитьПослеТА(<ФлагДляНеПровДокумента>, <ФлагДляПровДокумента>)

Англоязычный синоним:

PostingAfterTA

Параметры:

<ФлагДляНеПровДокумента> | Режим проведения документа после ТА. Число: -1 (минус единица) — проводить документ всегда задним числом; 0 — при проведении запрашивать режим проведения документа; 1 — проводить документ в реальном потоке времени, т. е. при проведении время документа автоматически устанавливается на время после ТА.
<ФлагДляПровДокумента> | Режим перепроведения документа после ТА. Числовое выражение: -1 (минус единица) — проводить документ всегда задним числом; 1 — проводить документ в потоке.

Возвращаемое значение:

Текущее значение режим перепроведения документа в зависимости от про-веденности.

Описание:

Метод ПроводитьПослеТА устанавливает режим проведения документа после ТА. Этот метод относится к случаю проведения документа в пределах даты, в которой находится ТА. Дело в том, что при записи документа, документ кроме даты получает еще и время документа. В многопользовательском режиме часто возникает ситуация, когда в момент проведения документа, он уже оказывается не последним в потоке проводимых документов (провели документ с другого рабочего места), в этом случае система ЮПредприятие дает на выбор три варианта проведения:

· провести документ тем временем, каким он был записан, т. е. фактически задним временем (до ТА);

· изменить время документа (в рамках текущей даты), чтобы документ стал самым последним и проводился в потоке, т. е. после ТА;

· запросить у пользователя, в каком режиме провести документ.

Данный метод доступен только в контексте Модуле формы документа (см. «Виды программных модулей»). Действие данного метода относится только к текущему документу, который доступен в локальном контексте Модуля формы документа.

Пример:

Процедура ПриОткрытии()

   ПроводитьПослеТА(1, 1);

КонецПроцедуры

АктивизироватьСтроку

Установить курсор на указанной строке многострочной части документа.

Синтаксис:

АктивизироватьСтроку(<НомСтроки>)

Англоязычный синоним:

ActivateLine

Параметры:

<НомСтроки>

Необязательный параметр. Номер строки, которую следует активизировать. Если параметр опущен, то активизируется текущая строка многострочной части документа.

Описание:

Данный метод в основном предназначен для использования в системной предопределенной процедуре ОбработкаПодбора. Метод АктивизироватьСтроку выполняет визуальную активизацию строки документа в форме редактирования документа после выхода из предопределенной процедуры ОбработкаПодбора.

Данный метод доступен только в контексте Модуле формы документа (см. «Виды программных модулей»). Действие данного метода относится только к текущему документу, который доступен в локальном контексте Модуля формы документа.

Пример:

Процедура ОбработкаПодбора(Выб, КонтФормы)

   Кол = 0;

   Если ВвестиЧисло(Кол, "Введите количество", 10, 0) = 1 Тогда

      НоваяСтрока();

      Товар = Выб;

      УстанЦеныРасх(Контекст);

      Количество = Кол;

      Выч_суммы_накл(Контекст);

      АктивизироватьСтроку();

      Активизировать("Цена");

   КонецЕсли;

КонецПроцедуры

См. также: ОбработкаПодбора

ИзменениеПорядкаСтрок

Установить режим изменения порядка строк в форме документа.

Синтаксис:

ИзменениеПорядкаСтрок(<Разрешить>)

Англоязычный синоним:

ChangeLinesOrder

Параметры:

<Разрешить>

Необязательный параметр. Число: 1 — разрешить изменение порядка строк в документе; 0 — запретить. Если параметр не задан, то режим не меняется.

Возвращаемое значение:

Режим изменения порядка строк до исполнения метода. Число: 1 — разрешено изменение порядка строк в документе; 0 — запрещено.

Описание:

Метод ИзменениеПорядкаСтрок позволяет установить режим изменения порядка строк в форме документа.

Данный метод доступен только в контексте Модуле формы документа (см. «Виды программных модулей»). Действие данного метода относится только к текущему документу, который доступен в локальном контексте Модуля формы документа.

Пример:

ИзменениеПорядкаСтрок(0);

Модифицированность

Возвратить признак изменения реквизитов текущей формы документа.

Синтаксис:

Модифицированность()

Англоязычный синоним:

Modify

Возвращаемое значение:

Числовое значение: 1 — если реквизиты текущей формы документа были изменены; 0 — если нет.

Описание:

Метод Модифицированность возвращает признак изменения реквизитов формы (в режиме исполнения он отображается символом (*) в заголовке окна формы).

Данный метод доступен только в Модуле формы документа(см. «Виды программных модулей»). Действие данного метода относится только к текущему документу, который доступен в локальном контексте Модуля формы документа.

Пример:

Изм = Модифицированность();

Предопределенные процедуры Модуля формы документа

Описанные в данном разделе системные предопределенные процедуры должны располагаться только в Модулях формы документов (см. «Виды программных модулей»).

В основном данные процедуры предназначены для расширения возможности программного управления правами доступа к системе.

Предопределенные процедуры не является встроенными процедурами языка. Для них зарезервированы только название и синтаксис. Тело процедур должно быть написано самим разработчиком в соответствующих программных модулях. Вызов предопределенных процедур на исполнение производится в системе 1С:Предприятие неявно при возникновении соответствующего события. Описание предопределенных процедур также см. гл. «Системные предопределенные процедуры».

ВводНового

Предопределенная процедура при вводе нового документа.

Синтаксис:

ВводНового(<ПризнКопирования>, <ОбъектКопирования>)

Англоязычный синоним:

InputNew

Параметры:

<ПризнКопирования> | Признак того, что объект введен копированием. Число: 1 — объект введен копированием, 0 — просто новый объект. Данный признак может быть использован для анализа необходимости инициализации реквизитов нового объекта.
<ОбъектКопирования> | Объект, который был скопирован.

Описание:

Вызов процедуры ВводНового производится в системе 1С:Предприятие неявно в момент выбора пункта меню «Действия» — «Новый» при работе с Документами. Данная процедура может использоваться, например, для установки начальных значений (по умолчанию) реквизитов нового документа. Если в данной предопределенной процедуре установить статус возврата — 0 (например, если данному пользователю нельзя вводить документы), ввода нового документа и открытие его формы не будет выполнено.

Процедуру ВводНового контекста документа можно размещать в Модулях форм документов (см. «Виды программных модулей»).

Пример:

Процедура ВводНового();

   Валюта = Константа.ДефВалютаПродажи;

   Валюта.ИспользоватьДату(ДатаДок);

   Дата_Курса = ДатаДок;

   Если Число(Валюта.Код) = Число(Константа.БазоваяВалюта.Код) Тогда

      //У базовой валюты курс = 1, поэтому отображаем курс Основной валюты

      Константа.ОсновнаяВалюта.ИспользоватьДату(ДатаДок);

      Курс = Константа.ОсновнаяВалюта.Текущ_курс;

   Иначе

      Курс = Валюта.Текущ_курс;

   КонецЕсли;

   Фирма = Константа.ДефФирма;

   Клиент = Константа.ДефПокупатель;

КонецПроцедуры

См. также: СтатусВозврата

ВводНаОсновании

Предопределенная процедура при вводе нового документа на основании.

Синтаксис:

ВводНаОсновании(<ДокументОснование>)

Англоязычный синоним:

InputCausedBy

Параметры:

<ДокументОснование>

Значение документа, на основании которого вводится новый документ.

Описание:

Вызов процедуры ВводНаОсновании производится в системе 1С:Предприятие неявно после выбора пункта меню «Действия» - «Ввести на основании». В этот момент система подставляет фактическое значение параметра <ДокументОснование>, содержащее документ, на котором находился курсор в момент выполнения данной команды.

Данная процедура может использоваться, например, для установки начальных значений (по умолчанию) реквизитов нового документа, вводимого на основании другого. Если в данной предопределенной процедуре установить статус возврата — 0 (например, если данному пользователю нельзя вводить новые документы), ввода нового документа и открытие его формы не будет выполнено.

Процедуру ВводНаОсновании можно размещать только в Модулях форм документов (см. «Виды программных модулей»).

Пример:

Процедура ВводНаОсновании(ДокОснование)

   Если (ДокОснование.Вид() = "ПриходнаяРеализ")

         ИЛИ ДокОснование.Вид() = "РасходнаяРеализ") Тогда

      ПризнакРеализатора = Перечисление.ПризнакиРеализаторов.Реализатор_Клиент;

      ДатаДок = РабочаяДата();

      Валюта = Константа.БазоваяВалюта;

      Валюта.ИспользоватьДату(ДатаДок);

      Дата_Курса = ДокОснование.Дата_Курса;

      Курс = ДокОснование.Курс;

      НДС = ДокОснование.НДС;

      СН = ДокОснование.СН;

      Фирма = ДокОснование.Фирма;

      Основание = "" + ДокОснование + " от " + ДокОснование.ДатаДок;

      ДокОснование.ВыбратьСтроки();

      Пока ДокОснование.ПолучитьСтроку() = 1 Цикл

         НоваяСтрока();

         Товар = ДокОснование.Товар;

         Цена = ДокОснование.Цена;

         Единица = ДокОснование.Единица;

         Коэффициент = ДокОснование.Коэффициент;

         Количество = ДокОснование.Количество;

         Сумма = ДокОснование.Сумма;

      КонецЦикла;

   Иначе

      Предупреждение("Этот Документ можно вводить только на основании

                       |накладных по реализации!");

      ВводНового();

   КонецЕсли;

   Валюта_Прежн = Валюта;

   Курс_Прежн = Курс;

КонецПроцедуры

См. также: СтатусВозврата

ПриЗаписи

Предопределенная процедура при записи документа.

Синтаксис:

ПриЗаписи()

Англоязычный синоним:

OnWrite

Описание:

Вызов предопределенной процедуры ПриЗаписи производится в системе 1С:Предприятие при интерактивной записи документа. Если в данной предопределенной процедуре установить статус возврата — 0 (например, если данно-wy пользователю нельзя изменять реквизиты документа), запись документа не будет выполнена.

Данная предопределенная процедура может располагаться в Модулях формы документов (см. «Виды программных модулей»).

Пример:

Процедура ПриЗаписи()

   Если НазваниеНабораПрав() = "Продавец" Тогда

      Предупреждение("У вас нет права изменять документ!", 2);

      СтатусВозврата(0);

   КонецЕсли;

КонецПроцедуры

См. также: СтатусВозврата

ПриНачалеРедактированияСтроки

Предопределенная процедура при редактировании существующей строки документа.

Синтаксис:

ПриНачалеРедактированияСтроки()

Англоязычный синоним:

OnStartEditLine

Описание:

Вызов предопределенной процедуры ПриНачалеРедактированияСтроки производится в системе 1С:Предприятие в момент начала интерактивного редактирования существующей строки многострочной части документа. Если в данной предопределенной процедуре установить статус возврата — 0 (например, если данному пользователю нельзя изменять документ), то запись не будет изменена.

Данная предопределенная процедура может располагаться в Модулях формы документов (см. «Виды программных модулей»).

Пример:

Процедура ПриНачалеРедактированияСтроки()

   Если НазваниеНабораПрав() = "Продавец" Тогда

      Предупреждение("У вас нет права изменит, документ 1", 2);

      СтатусВозврата(0);

   КонецЕсли;

КонецПроцедуры

См. также: СтатусВозврата

ПриВводеСтроки

Предопределенная процедура при вводе новой строки многострочной части документа.

Синтаксис:

ПриВводеСтроки()

Англоязычный синоним:

OnNewLine

Описание:

Вызов предопределенной процедуры ПриВводеСтроки производится в системе 1С:Предприятие при интерактивном вводе новой строки многострочной части документа. Если в данной предопределенной процедуре установить статус возврата — 0 (например, если данному пользователю нельзя изменять документ), то новая строка не будет инициирована.

Данная предопределенная процедура может располагаться в Модулях формы документов (см. «Виды программных модулей»).

Пример:

Процедура ПриВводеСтроки()

   Если НазваниеНабораПрав() = "Продавец" Тогда

      Предупреждение("У вас нет права добавлять строки!", 2);

      СтатусВозврата(0);

   КонецЕсли;

КонецПроцедуры

См. также: СтатусВозврата

ПриРедактированииНовойСтроки

Предопределенная процедура при редактировании новой строки многострочной части документа.

Синтаксис:

ПриРедактированииНовойСтроки()

Англоязычный синоним:

OnEditNewLine

Описание:

Вызов предопределенной процедуры ПриРедактированииНовойСтроки производится в системе 1С:Предприятие в момент начала интерактивного редактирования новой строки многострочной части документа. Данная процедура может использоваться, например, для установки начальных значений (по умолчанию) реквизитов строки табличной части документа. В данной предопределенной процедуре установка статуса возврата не имеет смысла, т. к. отказаться от ввода новой строки в этот момент уже невозможно.

Данная предопределенная процедура может располагаться в Модулях формы документов (см. «Виды программных модулей»).

Пример:

Процедура ПриРедактированииНовойСтроки()

   Количество = 10;

   Коэффициент = 1;

   Скидка=0;

КонецПроцедуры

См. также: СтатусВозврата

ПриОкончанииРедактированияСтроки

Предопределенная процедура при окончании редактирования строки многострочной части документа.

Синтаксис:

ПриОкончанииРедактированияСтроки(<НовСтр>)

Англоязычный синоним:

OnFinishLineEdit

Параметры:

<НовСтр>

Флаг новой строки. Число: 1 — если произошло окончание ввода новой строки, 0 — если произошло окончание редактирования существующей строки.

Описание:

Вызов предопределенной процедуры ПриОкончанииРедактированияСтроки производится в системе 1С:Предприятие в момент окончания интерактивного редактирования строки многострочной части документа. Данная процедура может использоваться, например, для проверки значений (по умолчанию) реквизитов строки табличной части документа. В данной предопределенной процедуре установка статуса возврата не имеет смысла, т. к. отказаться от ввода строки в этот момент уже невозможно.

Замечание. Данный метод не вызывается при отказе от ввода новой строки по клавише <Esc>. Однако, метод вызывается при нажатии клавиши <Esc> во время редактирования существующей строки, но при этом последнее значение текущего редактируемого с клавиатуры поля не доступно, т. к. от его значения в данном случае отказываются, т. е. строка доступна в том виде, в котором она собственно и остается в документе.

Данная предопределенная процедура может располагаться в Модулях формы документов (см. «Виды программных модулей»).

Пример:

Процедура ПриОкончанииРедактированияСтроки()

   Если Количество = 0 Тогда

      Количество = 1;

   КонецЕсли;

КонецПроцедуры

См. также: СтатусВозврата

ПриУдаленииСтроки

Предопределенная процедура при удалении строки многострочной части документа.

Синтаксис:

ПриУдаленииСтроки()

Англоязычный синоним:

OnDeleteLine

Описание:

Вызов предопределенной процедуры ПриУдаленииСтроки производится в системе 1С:Предприятие при интерактивном удалении строки многострочной части документа. Если в данной предопределенной процедуре установить статус возврата — 0 (например, если данному пользователю нельзя изменять документ), удаление строки документа не будет выполнено.

Данная предопределенная процедура может располагаться только в Модулях формы документов (см. «Виды программных модулей»).

Пример:

Процедура ПриУдаленииСтроки()

   Если НазваниеНабораПрав() = "Продавец" Тогда

      Предупреждение("У вас нет права удалять строки!", 2);

      СтатусВозврата(0);

   КонецЕсли;

КонецПроцедуры

См. также: СтатусВозврата

ПриИзмененииПорядкаСтрок

Предопределенная процедура при изменении порядка строк многострочной части документа.

Синтаксис:

ПриИзмененииПорядкаСтрок(<Действие>)

Англоязычный синоним:

OnChangeLinesOrder

Параметры:

<Действие>

Число: -1 — перемещение строки вверх; 1 — перемещение строки вниз; 0 — перенумерация строк.

Описание:

Вызов предопределенной процедуры ПриИзмененииПорядкаСтрок произ-^дится в системе 1С:Предприятие при интерактивном изменении порядка строк многострочной части документа (перемещения строк вверх-вниз, перенумерация, сортировка). Если в данной предопределенной процедуре установить статус возврата — 0 (например, если данному пользователю нельзя изменять документ), изменении порядка строк документа не будет выполнено.

Данная предопределенная процедура может располагаться только в Модулях формы документов (см. «Виды программных модулей»).

Пример:

Процедура ПриИзмененииПорядкаСтрок()

   Если НазваниеНабораПрав() = "Продавец" Тогда

      Предупреждение("У вас нет права изменять документ!", 2);

      СтатусВозврата(0);

   КонецЕсли;

КонецПроцедуры

См. также: СтатусВозврата

Методы контекста Модуля документа

Описанные в данном разделе методы доступны только в контексте Модуля документа (см. «Виды программных модулей»).

ИтогиАктуальны

Возвратить флаг актуальности итогов.

Синтаксис:

ИтогиАктуальны()

Англоязычный синоним:

AreTotalsActual

Возвращаемое значение:

Числовое значение: 1 — итоги актуальны, 0 — нет.

Описание:

Метод ИтогиАктуальны позволяет определить — выполняется ли проведение документа в реальном времени или задним числом (когда нельзя обращаться к текущим остаткам регистров).

Данный метод доступен только в контексте Модуля документа в предопределенной процедуре ОбработкаПроведения (см. Гл. «Системные предопределенные процедуры»).

Пример:

Процедура ОбработкаПроведения()

   // Для расходной накладной ВыбратьСтроки();

   Пока ПолучитьСтроку() > 0 Цикл

      Если ИтогиАктуальны() > 0 Тогда

         // если итоги актуальны,

         // то текущие стоимости берем из текущих остатков

         Регистр.ОстаткиТоваров.Склад = Скпад;

         Регистр.ОстаткиТоваров.Товар = Товар;

         Регистр.ОстаткиТоваров.ОстаткиПолучить();

         Регистр.ОстаткиТоваров.БазоваяСтоимость =

                 Регистр.ОстаткиТоваров.БазоваяСтоимость * Количество *

                 Коэффициент / Регистр.ОстаткиТоваров.ОстатокТовара;

         Регистр.ОстаткиТоваров.ВалютнаяСтоимость =

                 Регистр.ОстаткиТоваров.ВалютнаяСтоимость * Количество *

                 Коэффициент / Регистр.ОстаткиТоваров.ОстатокТовара;

         Регистр.ОстаткиТоваров.ОстатокТовара = Количество * Коэффициент;

         Регистр.ОстаткиТоваров.ДвижениеРасходВыполнить();

      Иначе

         // если итоги не актуальны,

         //то стоимости берем из врем. расчета Регистра

         Рег = СоздатьОбъект("Регистр.ОстаткиТоваров");

         Рег.ВременныйРасчет();

         РассчитатьРегистрыНа(ТекущийДокумент());

         Рег.Товар = Товар;

         Рег.Склад = Склад;

         Рег.ОстаткиПолучить();

         Регистр.ОстаткиТоваров.БазоваяСтоимость =

                 Рег.БазоваяСтоимость * Количество * Коэффициент /

                 Рег.ОстатокТовара;

         Регистр.ОстаткиТоваров.ВалютнаяСтоимость =

                 Рег.ВалютнаяСтоимость * Количество * Коэффициент /

                 Рег.ОстатокТовара;

         Регистр.ОстаткиТоваров.ОстатокТовара = Количество * Коэффициент;

         Регистр.ОстаткиТоваров.Склад = Склад;

         Регистр.ОстаткиТоваров.Товар = Товар;

         Регистр.ОстаткиТоваров.ДвижениеРасходВыполнить();

      КонецЕсли;

   КонецЦикла;

КонецПроцедуры

ГрупповаяОбработка

Возвратить флаг групповой обработки.

Синтаксис:

ГрупповаяОбработка()

Англоязычный синоним:

IsGroupPrосеssing

Возвращаемое значение:

Число: 1 — групповое обработка, 0 — проведение документа по одному.

Описание:

Метод ГрупповаяОбработка позволяет определить, выполняется ли проведение документа группой (при помощи режима «Управление итогами») или по одному (интерактивно).

Данный метод доступен только в контексте Модуля документа в предопределенной процедуре ОбработкаПроведения (см. гл. «Системные предопределенные процедуры»).

Пример:

Лроцедура ОбработкаПроведения()

   Если ГрупповаяОбработка() > 0 Тогда

      // если групповая проводка документов, то вызываем процедуру

      ПроводкаДокументаГруппой();

   Иначе

      // если не групповая проводка документов, то

      ПроводкаДокументаОдиночного();

   КонецЕсли;

КонецПроцедуры

См. также: ОбработкаПроведения, Провести

НеПроводитьДокумент

Отменить процесс проведения документа.

Синтаксис:

НеПроводитьДокумент()

Англоязычный синоним:

DoNotTransactDoc

Описание:

Метод НеПроводитьДокумент фактически отменяет весь процесс проведения документа (отменяет транзакцию проведения). Вызов данного метода приводит к тому, что все движения регистров, вызванные в предопределенной процедуре ОбработкаПроведения, будут проигнорированы и документ не будет проведен. Метод НеПроводитьДокумент не завершает процедуру ОбработкаПроведения (для завершения процедуры нужно отдельно вызвать Возврат).

Данный метод доступен только в контексте Модуля документа в предопределенной процедуре ОбработкаПроведения (см. Гл. «Системные предопределенные процедуры»).

По своему действию данный метод полностью аналогичен вызову системной функции СтатусВозврата с параметром 0, т. е. отменить действие.

Пример:

Процедура ОбработкаПроведения();

   Если Число(Клиент.Выбран()) > 0 Тогда

      ДвиженияРегистраРеализации();

   Иначе

      Сообщить("Не выбран клиент по реализации!!! Документ не проводится!!!");

      НеПроводитьДокумент();

      Возврат;

   КонецЕсли;

КонецПроцедуры

См. также:

СтатусВозврата

УстановитьРеквизитСправочника

Записать значение периодического реквизита справочника с привязкой к документу.

Синтаксис:

УстановитьРеквизитСправочника(<ЭлементСправочника>, <НазваниеРеквизита>,

                 <3начение>, <ДатаУстановки>, <ИмяТипа>, <Длина>, <Точность>)

Англоязычный синоним:

SetRefField

Параметры:

<ЭлементСправочника> | Выражение, задающее элемент справочника, в котором требуется записать новое значение периодического реквизита.
<НазваниеРеквизита> | Строковое выражение — название периодического реквизита справочника (как он назван в конфигураторе) в котором требуется записать новое значение периодического реквизита.
<3начение> | Новое значение периодического реквизита.
<ДатаУстановки> | Выражение типа «дата», на которую требуется установить новое значение периодического реквизита. Этот параметр имеет смысл только для не оперативных документов и позволяет установить значение на другую дату чем дата документа, но тогда с пустым временем.
<ИмяТипа> | Необязательный параметр. Строковое выражение — название типа данных (или Вид субконто).
<Длина> | Необязательный параметр. Число — длина числового или строкового значения.
<Точность> | Необязательный параметр. Число знаков после десятичной точки для числового значения.

Описание:

Метод УстановитьРеквизитСправочника записывает новое значение периодического реквизита справочника с привязкой к документу. Использование Данного метода позволяет вносить изменения в справочники с привязкой к проведению документа. Это значит, что при удалении или редактировании или отказе от проведения документа все сделанные им изменения в справочнике будут корректно отменены. Средства языка позволяют выбирать такие движе-иия справочника по документу или определять документ, который произвел изменения в справочнике (см. «Работа с объектом Периодический»).

Параметры <ИмяТипа>, <Длина> и <Точность> следует указывать при установке значения периодического реквизита справочника имеющего неопределенный тип.

Данный метод доступен только в контексте Модуля документа в предопределенной процедуре ОбработкаПроведения (см. Гл. «Системные предопределенные процедуры»).

Пример:

// при работе в контексте документа, его реквизит "Сотрудник"

// является переменной типа "справочник",

// чтобы установить новое значение периодического

// реквизита "Оклад" этого элемента

// справочника с привязкой к документу

Процедура ОбработкаПроведения();

   // .....

   Моклад = Константа.МаксимальныйОклад;

   УстановитьРеквизитСправочника(Сотрудник, "Оклад", МОклад, ДатаДок);

   // .....

КонецПроцедуры

ОчиститьДвижения

Удалить движения документа.

Синтаксис:

ОчиститьДвижения(<ВидыДвижений>)

Англоязычный синоним:

ClearActions

Параметры:

<ВидыДвижений>

Необязательный параметр. Строковое выражение, в котором через «;» перечислены виды движений. В качастве видов движений можно задавать следующие строковые значения:

· "Регистр.ХХХХХХ" — движение конкретного регистра, где ХХХХХХ — конкретный вид регистра;

· "Операция" — бухгалтерская операция;

· "Справочник" — все изменения периодических реквизитов справочников;

· "ЖурналРасчетов" — все измененияв журналах расчетов. Если данный параметр не задан, то производится полная очистка всех движений.

Описание:

Метод ОчиститьДвижения удаляет существующие движения документа.

Если метод не вызывается при проведении документа, то существующие движения документа не стираются вообще.

Если метод не вызывается при распроведении документа, то существующие движения после распроведения стираются.

Использование данного метода позволяет:

· допроводить документ, т. е. доделывать движения в добавок к уже существующим;

· делать движения, анализируя ранее сделанные и уже существующие;

· выполнять распроведение документа, анализируя существующие движения;

· не очищать существующие движения при перепроведении, если это не нужно.

Замечание. Данный метод доступен только при отключенном в конфигурации флаге «Автоматическое удаление движений».

Замечание. Данный метод доступен только в контексте Модуле формы документа (см. «Виды программных модулей»). Действие данного метода относится только к текущему документу, который доступен в локальном контексте Модуля формы документа.

Пример:

Процедура ОбработкаПроведения()

   ОчиститьДвижения("Операция; Справочник; ЖурналРасчетов");

   ДвиженияРегистровНакладных(Контекст);

КонецПроцедуры

// —————————————————————————————————————

Процедура ОбработкаУдаленияПроведения()

   ОчиститьДвижения();

КонецПроцедуры

ПривязыватьСтроку

Записывать номер строки документа в движениях документа.

Синтаксис:

ПривязыватьСтроку(<НомерСтроки>)

Англоязычный синоним:

LinkLine

Параметры:

<НомерСтроки>

Выражение, содержащее номер строки документа.

Описание:

Метод ПривязыватьСтроку устанавливает, что при выполнении всех последующих движений регистров, при записи значений периодических реквизитов справочников с привязкой к документу, а также при записи бухгалтерских проводок движения будут записываться с номером строки <НомерСтроки>.

Метод ПривязыватьСтроку может быть использован как системная процедура: тогда он будет устанавливать номер строки для всех регистров по которым выполняются движения, или как метод конкретного регистра: тогда он будет устанавливать номер строки только для данного регистра.

Данный метод доступен только в контексте Модуля документа в предопределенной процедуре ОбработкаПроведения.

Пример:

Процедура ОбработкаПроведения()

   ПривязыватьСтроку(НомерСтроки);

   Регистр.ТовЗап.Склад = Склад;

   ВыбратьСтроки();

   Пока(ПолучитьСтроку() > 0) Цикл

      Регистр.ТовЗап.Товар = Товар;

      Регистр.ТовЗап.Количество = Количество;

      Регистр.ТовЗап.Стоимость = Стоимость;

      Регистр.ТовЗап.ДвижениеРасходВыполнить();

   КонецЦикла;

КонецПроцедуры

Предопределенные процедуры Модуля документа

Описанные в данном разделе системные предопределенные процедуры должны располагаться только в Модулях документов (см. «Виды программных модулей»).

Данные предопределенные процедуры вызываются как при интерактивном так и при программном возникновении события.

Предопределенные процедуры не является встроенными процедурами языка. Для них зарезервированы только название и синтаксис. Тело процедур должно быть написано самим разработчиком в соответствующих программных модулях. Вызов предопределенных процедур на исполнение производится в системе 1С:Предприятие неявно при возникновении соответствующего события. Описание предопределенных процедур также см. гл. «Системные предопределенные процедуры».

ОбработкаПроведения

Предопределенная процедура обработки проведения документа.

Синтаксис:

ОбработкаПроведения(<3нач>)

Англоязычный синоним:

Posting

Параметры:

<3нач>

Необязательный параметр. Идентификатор переменной, в которую системой будет передано значение параметра, если проведение документа запущено программно при помощи метода Провести. Использовать данное значение можно, например, для того, чтобы в процедуре ОбработкаПроведения правильно отработать режим проведения, т. к. в случае вызова метода Провести это будет программный, а не интерактивный и не групповой (см. ГрупповаяОбработка) способ проведения документа.

Описание:

Процедура ОбработкаПроведения — предопределенная процедура. Она не является встроенной процедурой языка. Для нее определено только название и синтаксис. Тело процедуры должно быть написано разработчиком конфигурации в Модуле документа (см. «Виды программных модулей»). Собственно говоря, весь алгоритм проведения документа и заключается в данной процедуре.

Вызов процедуры ОбработкаПроведения производится в системе 1С:Предприятие неявно при выполнении проведения документа в любом режиме (интерактивное проведение документа, групповое проведение, программная инициализация проведения при помощи метода Провести). Если проведение документа запущено программно, то система подставляет фактическое значение параметра <3нач>, содержащее значение параметра, заданного при вызове метода Провести.

Замечание. В предопределенных процедурах ОбработкаПроведения и ОбработкаУдаленияПроведения система 1С:Предприятие сама выполняет все действия через транзакцию (см. «Процедуры работы с транзакциями»), поэтому никаких специальных действий по обработке транзакций в этих предопределенных процедурах предпринимать не нужно.

Если в данной предопределенной процедуре установить статус возврата — 0 (например, если данному пользователю нельзя проводить документ), то проведение документа не будет выполнено и будет отменена системная транзакция.

Замечание. В предопределенных процедурах ОбработкаПроведения и ОбработкаУдаленияПроведения нельзя использовать элементы интерактивного управления (например, операторы Предупреждение, Вопрос, ВвестиЧисло и т. п.), т. к. в этом случае при открытой транзакции система ожидает отклика пользователя, а все остальные пользователи ждут завершения транзакции (в результате документы у всех остальных пользователей в этот момент не могут проводиться). Если в конфигурации необходимо при проведении документа выдавать пользователю некоторые coofi щения, то следует использовать операторы Сообщить или Состояние

Для корректного выполнения алгоритма проведения документа в Модуле документа доступны методы ИтогиАктуальны и ГрупповаяОбработка, которые позволяют правильно определить режим проведения документа (см. «Работа с документами»).

Данная предопределенная процедура может располагаться только в Модулях документов (см. «Виды программных модулей»).

Пример:

Процедура ОбработкаПроведения()

   Регистр.ТовЗап.Склад = Склад;

   ВыбратьСтроки();

   Пока( ПолучитьСтроку() > 0) Цикл

      Регистр.ТовЗап.Товар = Товар;

      Регистр.ТовЗап.Количество = Количество;

      Регистр.ТовЗап.ДвижениеРасходВыполнить();

   КонецЦикла;

КонецПроцедуры

См. также: СтатусВозврата, МтогиАктуальны, ГрупповаяОбработка, Провести

ОбработкаУдаленияПроведения

Предопределенная процедура обработки удаления проведения документа.

Синтаксис:

ОбработкаУдаленияПроведения()

Англоязычный синоним:

UnPostingProcess

Описание:

Процедура ОбработкаУдаленияПроведения — предопределенная процедура. Она не является встроенной процедурой языка. Для нее определено только название и синтаксис. Тело процедуры должно быть написано разработчиком конфигурации в Модуле документа (см. «Виды программных модулей»). Вызов процедуры ОбработкаУдаленияПроведения производится в системе 1С:Предприятие неявно при отмене проведения документа или при удалении проведенных документов в любом режиме — интерактивно или программно. (см. СделатьНеПроведенным, Удалить).

Замечание. В предопределенных процедурах ОбработкаПроведения и ОбработкаУдаленияПроведения система 1С:Предприятие сама выполняет все действия через транзакцию (см. «Процедуры работы с транзакциями»), поэтому никаких специальных действий по обработке транзакций в этих предопределенных процедурах предпринимать не нужно.

Если в данной предопределенной процедуре установить статус возврата — 0 (например, если данному пользователю нельзя отменять проведение документа) то отмена проведения документа не будет выполнена и будет отменена системная транзакция.

Замечание. В предопределенных процедурах ОбработкаУдаленияПроведения и ОбработкаПроведения нельзя использовать элементы интерактивного управления (например, операторы Предупреждение, Вопрос, ВвестиЧисло и т. п.), т. к. в этом случае при открытой транзакции система ожидает отклика пользователя, а все остальные пользователи ждут завершения транзакции (в результате документы у всех остальных пользователей в этот момент не могут проводиться). Если в конфигурации необходимо при проведении документа выдавать пользователю некоторые сообщения, то следует использовать операторы Сообщить или Состояние.

Данная предопределенная процедура может располагаться только в Модулях документов (см. «Виды программных модулей»).

Пример:

Процедура ОбработкаУдаленияПроведения()

   // Процедура выполняется при отмене проведения

   // или удалении документа

   // Сотрудник — это реквизит документа

   СпрСотрудники.НайтиЭлемент(Сотрудник);

   // если нашли сотрудника...

   Если СпрСотрудники.Выбран() = 1 Тогда

      // СтРасч — это реквизит документа

      СпрСотрудники.НайтиЭлемент(СтРасч);

      ВозвратРасч = 0;

      Если СпрСотрудники.Выбран() = 1 Тогда

         // если старый расчетчик еще есть — откатим!

         ВозвратРасч = 1;

      КонецЕсли;

      СпрСотрудники.НайтиЭлемент(Сотрудник);

      Если ВозвратРасч = 1 Тогда

         СпрСотрудники.Родитель = СтРасч;

      КонецЕсли;

      СпрСотрудники.Записать();

   КонецЕсли;

КонецПроцедуры

См. также: СтатусВозврата, СделатьНеПроведенным, Удалить

АрхивироватьДокумент

Предопределенная процедура обработки архивирования документа.

Синтаксис:

АрхивироватьДокумент()

Англоязычный синоним:

ArchiveDocument

Описание:

Вызов процедуры АрхивироватьДокумент производится в системе 1С:Предприятие неявно в процессе смены расчетного периода журнала расчетов "вперед" (т. н. архивация данных расчета), если в журнале расчетов содержатся записи, порожденные данным документом.

Тело процедуры должно быть написано разработчиком конфигурации в Модуле документа, вызываемом в конфигураторе: Документ — Редактировать — Модуль документа.

Пример:

Процедура АрхивироватьДокумент()

   // Процедура выполняется при архивации документа расчета

   ЖР = СоздатьОбъект("ЖурналРасчетов.Зарплата");

   Если Окончание > ЖР.КонецТекущегоПериода() Тогда

      Зарегистрировать(ТекущийДокумент());

   КонецЕсли;

КонецПроцедуры

Команды организации механизма заполнения документа методом подбора

При вводе документа, процесс заполнения реквизитов многострочной части документа может быть реализован как обычным способом, так и при помощи специального механизма — методом подбора. Этот механизм предназначен для ускорения интерактивного заполнения значений реквизитов документов типа «справочник» и «документ». Реальным примером может служить процесс заполнения спецификации накладной путем подбора нужных товаров из справочника "Товары".

В системе 1С:Предприятие для реализации подбора предназначены следующие системные процедуры:

· ОткрытьПодбор;

· Активизировать;

· АктивизироватьСтроку.

Кроме того, при обработке выбранных в подборе значений участвует следующая системная предопределенная процедура:

· ОбработкаПодбора.


Part13

Глава 13
Работа с Журналами документов

Контекст работы с журналами документов

Журнал документов — средство для работы со списком документов. В терминах языка журнал не является специальным типом данных (он не имеет значения, его нельзя создать при помощи функции СоздатьОбъект).

С журналом в системе связана форма отображения списка документов и программный модуль формы журнала документов (см. «Виды программных модулей»). В локальном контексте этого программного модуля непосредственно доступны реквизиты формы журнала. Кроме того, здесь непосредственно доступен атрибут «только для чтения» — ТекущийДокумент, содержащий значение выбранного в журнале документа.

Атрибуты контекста Модуля формы журнала документов

Описанный в данном разделе атрибут можно вызывать только в Модуле формы журнала (см. «Виды программных модулей»).

ТекущийДокумент

Синтаксис:

ТекущийДокумент

Англоязычный синоним:

CurrentDocument

Описание:

Атрибут (только для чтения) ТекущийДокумент содержит значение выбранного в журнале документа. Этот атрибут позволяет использовать в программе полученное значение документа. Поскольку данный атрибут фактически является ссылкой на позиционируемый объект типа «документ», то поэтому для передачи или запоминания самого значения текущего документа журнала рекомендуется использовать конструкцию

ТекущийДокумент.ТекущийДокумент()

Данный атрибут может использоваться только в локальном контексте программного модуля формы журнала документов.

Пример:

// только в модуле Формы журнала документа

// ———————————————————————————————————————

функция Операция()

   Если Число(ТекущийДокумент.Выбран()) > 0 Тогда

      Возврат "" + ТекущийДокумент.ДатаДок + " " + ТекущийДокумент.Вид;

   Иначе

      Возврат "Пусто";

   КонецЕсли;

КонецФункции

//————————————————————————————————————————

Функция ЖурналСумма()

   Если Число(ТекущийДокумент.Выбран()) > 0 тогда

      Возврат Константа.МинЗарплата.Получить(ДатаДок);

   Иначе

      Возврат 0;

   КонецЕсли;

КонецФункции

Методы контекста Модуля формы журнала документов

Описанные в данном разделе методы доступны только в контексте Модуля формы журнала документов (см. «Виды программных модулей»).

Отбор по значениям может производиться только в «Общем» журнале, т. е. в котором установлен признак «Все документы». Таким образом, отбор по значениям может выступать в качестве альтернативного способа выбора документов в журнале, относительно выбору документов по видам. С другой стороны, сам набор ссылок на реквизиты документов определенных видов в настройке графы отбора определяет состав видов документов включаемых в данный отбор. Для того, чтобы при открытии журнала не показывался список всех документов, следует в предопределенной процедуре ПриОткрытии установить отбор по несуществующему значению отбора, например, по пустому значению.

ВидыОтбора

Установить доступные виды отборов журнала для вызова их в интерактивном режиме.

Синтаксис:

ВидыОтбора(<СписокИменОтборов>)

Англоязычный синоним:

KindsOfSelection

Параметры:

<СписокИменОтборов>

Необязательный параметр. Строковое выражение, содержащее список имен отборов для журнала. Виды указываются через запятую. Если вместо списка — символ "*", то значит для журнала используются все назначенные в конфигураторе виды отборов.

Возвращаемое значение:

Строковое значение, содержащее текущий список имен отборов для журнала, разделенных запятыми (на момент до исполнения метода).

Описание:

Метод ВидыОтбора устанавливает доступные виды отборов журнала для вызова их в интерактивном режиме.

Данный метод доступен только в контексте Модуля формы журнала документов (см. «Виды программных модулей»).

Пример:

ВидыОтбора("Склад, Клиент, Автор");

ЗакладкиОтбора

Установить в форме журнала закладки для интерактивного осуществления отбора.

Синтаксис:

ЗакладкиОтбора(<ИмяОтбора>, <ФлагОтбораЗначенийВИнтервалеЖурнала>,

               <ФлагУстановкиЗначенияОтбора>, <3начение0тбора>)

Англоязычный синоним:

TabCtrlSelection

Параметры:

<ИмяОтбора> | Строковое выражение, содержащее имя отбора.
<ФлагОтбораЗначенийВИнтервалеЖурнала> | Числовое выражение: 1 — текущие значения отбора для закладок выбираются только по документам в установленном интервале журнала; 0 — текущие значения отбора для закладок выбираются по всем документам журнала.
<ФлагУстановкиЗначенияОтбора> | Числовое выражение: 1 — для отображения сразу выбирается отбор по параметру <3начение0тбора>; 0 — текущее значение отображаемой закладки отбора устанавливается на первое существующее значение.
<3начение0тбора> | Значение отбора.

Описание:

Метод ЗакладкиОтбора устанавливает в форме журнала закладки для интерактивного осуществления отбора.

Данный метод доступен только в контексте Модуля формы журнала документов (см. «Виды программных модулей»).

Пример:

ЗакладкиОтбора("Склады", 1, 1, Константа.ОснСклад);

УстановитьОтбор

Установить отбор журнала.

Синтаксис:

УстановитьОтбор(<ИмяОтбора>, <3начение0тбора>)

Англоязычный синоним:

SetSelection

Параметры:

<ИмяОтбора> | Строковое выражение — имя отбора. Если это значение пустое, то отбор отключается.
<3начениеОтбора> | Значение отбора.

Описание:

Метод УстановитьОтбор принудительно устанавливает отбор для журнала.

Данный метод доступен только в контексте Модуля формы журнала документов (см. «Виды программных модулей»).

Замечание. Во всех журналах, кроме журнала подчиненных документов, работает отбор по виду документа. В этом случае синтаксис вызова метода следующий:

УстановитьОтбор(<ВедДокумента>)

Параметры:

<ВидДокумента>

Строковое выражение — вид документа отбора.

Пример:

Изм = УстановитьОтбор("Склады", Склад1);

ПолучитьОтбор

Возвратить текущее значение отбора журнала.

Синтаксис:

ПолучитьОтбор(<ИмяОтбора>, <3начение0тбора>)

Англоязычный синоним:

GetSelection

Параметры:

<ИмяОтбора> | Имя переменной, куда вернется строковое значение имени отбора.
<3начениеОтбора> | Имя переменной, куда вернется значение отбора.

Возвращаемое значение:

Числовое значение: 1 — есть отбор; 0 — если нет отбора.

Описание:

Метод ПолучитьОтбор возвращает текущее значение отбора журнала. Данный метод доступен только в контексте Модуля формы журнала документов (см. «Виды программных модулей»).

Пример:

Изм = ПолучитьОтбор();

УстановитьИнтервал

Установить интервал журнала.

Синтаксис:

УстановитьИнтервал(<ДатаНач>, <ДатаКон>, <ФлагИзменения>)

Англоязычный синоним:

SetRange

Параметры:

<ДатаНач> | Выражение типа «дата» — начало интервала журнала.
<ДатаКон> | Выражение типа «дата» — конец интервала журнала.
<ФлагИзменения> | Необязательный параметр. Этим флагом регулируется возможность интерактивного изменения интервала журнала. 1 — пользователь может изменить интервал журнала интерактивно, 0 — пользователь не может интерактивно изменить интервал журнала.

Описание:

Метод УстановитьМнтервал позволяет установить интервал журнала. Данный метод доступен только в контексте Модуля формы журнала документов (см. «Виды программных модулей»).

Пример:

УстановитьИнтервал(НИ, КИ);

НачалоИнтервала

Возвратить дату начала интервала журнала.

Синтаксис:

НачалоИнтервала()

Англоязычный синоним:

BegOfRange

Возвращаемое значение:

Значение даты начала интервала журнала.

Описание:

Метод НачалоИнтервала позволяет получить дату начала интервала журнала.

Данный метод доступен только в контексте Модуля формы журнала документов (см. «Виды программных модулей»).

Пример:

НИ = НачалоИнтервала();

КонецИнтервала

Возвратить дату конца интервала журнала.

Синтаксис:

КонецИнтервала()

Англоязычный синоним:

EndOfRange

Возвращаемое значение:

Значение даты конца интервала журнала.

Описание:

Метод КонецИнтервала позволяет получить дату конца интервала журнала.

Данный метод доступен только в контексте Модуля формы журнала документов (см. «Виды программных модулей»).

Пример:

КИ = КонецИнтервала();

ПодчинениеДокументу

Установить документ-владелец для журнала подчиненных документов.

Синтаксис:

ПодчинениеДокументу([<Докум>], [<ФлагАвтоСменыПодчинен>])

Англоязычный синоним:

ParentDoc

Параметры:

<Докум> | Необязательный параметр. Выражение типа «документ» — значение документа, подчиненные документы к которому должен отображать журнал.
<флагАвтоСменыПодчинен> | Необязательный параметр. Числовое выражение: 1 — устанавливает способность автоматически обновлять отображение журнала при смене документа-владельца, если такой режим установлен в параметрах системы («Сервис» - «Один журнал»); 0 — снятие режима автоматического обновления отображения журнала.

Возвращаемое значение:

Текущее значение документа, которому подчинен журнал.

Описание:

Метод ПодчинениеДокументу позволяет установить документ-владелец для журнала подчиненных документов.

Данный метод доступен только в контексте Модуля формы журнала подчиненных документов (см. «Виды программных модулей»).

Пример:

ПодчинениеДокументу(Док, 1);

Предопределенные процедуры Модуля формы журнала документов

Описанные в данном разделе системные предопределенные процедуры должны располагаться только в Модулях формы журналов документов (см. «Виды программных модулей»).

В основном данные процедуры предназначены для расширения возможности программного управления правами доступа к системе.

Предопределенные процедуры не является встроенными процедурами языка. Для них зарезервированы только название и синтаксис. Тело процедур должно быть написано самим разработчиком в соответствующих программных модулях. Вызов предопределенных процедур на исполнение производится в системе 1С:Предприятие неявно при возникновении соответствующего события. Описание предопределенных процедур также см. гл. «Системные предопределенные процедуры».

ПриУстановкеОтбора

Предопределенная процедура при установке отбора.

Синтаксис:

ПриУстановкеОтбора(<ИмяРеквизОтбора>, <3начение>)

Англоязычный синоним:

OnSetSelectInJournal

Параметры:

<ИмяРеквизОтбора> | Строковое значение — название общего реквизита документа (как оно задано в конфигураторе), по которому производится отбор (например, "Автор").
<3начение> | Значение реквизита отбора. Допустим, у документов существует общий реквизит "Автор", по которому решено провести отбор, значит в этом параметре будет передано конкретное значение этого реквизита, по которому решено провести отбор (например, "Сидоров И. А.").

Описание:

Вызов предопределенной процедуры ПриУстановкеОтбора производится системой 1С:Предприятие неявно при интерактивной попытке установить отбор документов в журнале. Если в данной предопределенной процедуре установить статус возврата — 0 (например, если данному пользователю нельзя устанавливать данное значение отбора документов), установка не будет выполнена.

Данная предопределенная процедура может располагаться в модуле формы журнала и в глобальном программном модуле. Если данная процедура присутствует в модуле формы соответствующего журнала, то будет вызвана она, если нет, то будет вызвана процедура из глобального модуля.

Пример:

Процедура ПриУстановкеОтбора(ИмяОтбора, ЗначОтбора) Если

   НазваниеНабораПрав() = "Продавец" Тогда

      Если (Имя0тбора = "Автор") И (ЗначОтбора <> ТекущПользователь) Тогда

         Предупреждение("У вас нет права просматривать чужие документы!", 2);

         СтатусВозврата(0);

      КонецЕсли;

   КонецЕсли;

КонецПроцедуры

См. также: СтатусВозврата

ПриУстановкеИнтервала

Предопределенная процедура при установке интервала журнала.

Синтаксис:

ПриУстановкеИнтервала(<ДатаНач>, <ДатаКон>)

Англоязычный синоним:

OnSetRange

Параметры:

<ДатаНач> | Дата начала интервала журнала.
<ДатаКон> | Дата конца интервала журнала.

Описание:

Вызов предопределенной процедуры ПриУстановкеИнтервала производится системой 1C:Предприятие неявно при интерактивной попытке установить интервал в журнале документов. Если в данной предопределенной процедуре установить статус возврата — 0 (например, если данному пользователю нельзя изменять интервал журнала), установка не будет выполнена.

Пример:

Процедура ПриУстановкеИнтервала(ДатаНач, ДатаКон) Если

   НазваниеНабораПрав() = "Продавец" Тогда

      Предупреждение("У вас нет права изменять интервал журнала! , 2);

      СтатусВозврата(0);

   КонецЕсли;

КонецПроцедуры

См. также: СтатусВозврата


Part14

Глава 14
Работа с Регистрами оперативного учета

Регистры — это специфический инструмент системы 1С:Предприятие, средство накопления сводной информации. Регистры являются внутренним инструментом конфигурации, к которым нет непосредственного доступа через интерфейс пользователя. Информация о результатах хозяйственных операций, которая появляется при оформлении документов, накапливается в регистрах при «проведении» документов, а отображение информации, содержащейся в регистрах, осуществляется при помощи формирования отчетов. Информация из регистров используется для анализа хозяйственной деятельности за прошедший период.

При создании регистра определяется, как будет обрабатываться, группироваться и сохраняться сводная информация. Регистры могут быть двух видов: оборотные регистры и регистры остатков.

Регистр остатков — это объект, предназначенный для ведения остатков «ресурсов» на момент времени с привязкой к некоторому набору «измерений».

Оборотный регистр — это объект, предназначенный для подсчета оборота «ресурсов» за заданный интервал времени с привязкой к некоторому набору «измерений».

Ресурсами регистра могут являться любые категории учета, которые могут быть представлены в числовом виде, такие как: «количество товара», «долг клиента», «сумма наличных» и т. п. Измерения регистра — это оси координат, на пересечении которых регистр хранит конкретные значения ресурсов. Кроме того, при записи движения регистра можно задавать «реквизиты» регистра. Значения реквизитов регистра просто сопровождают запись о движении регистра (подобно комментарию) для возможности в дальнейшем производить фильтрацию движений при выборке.

Пример:

* Предположим, что в конфигураторе создан регистр остатков «Товарные_Запасы», который должен содержать сведения об остатке каждого товара на каждом складе, за каждым материально ответственным лицом. В дальнейшем предполагается получать информацию такого типа: «остаток конкретного товара на конкретном складе», «остаток конкретного товара всего» и т. п. В идеологии системы 1С:Предприятие такой регистр представляет собой прямоугольную систему координат, измерениями этого регистра являются: «Товар», «Склад», «МОЛ». Регистр имеет один ресурс — «Количество». Содержание данного регистра можно представить в виде следующей таблицы, где по каждому конкретному товару на конкретном складе за конкретным МОЛ числится определенное Количество.

Товар | Склад | МОЛ | Количество
Стол | Первый | Иванов | 10
Стол | Первый | Петров | 20
Стол | Второй | Иванов | 5
Шкаф | Первый | Петров | 7
Шкаф | Второй | Иванов | 2
Шкаф | Второй | Петров | 8
Шкаф | Третий | Петров | 10

Структура каждого конкретного вида регистра определяется при его создании в конфигураторе. Измерения, ресурсы и реквизиты регистров определяются в конфигураторе конкретно для каждого создаваемого вида регистра.

В отличие от документов и справочников, которые представлены конкретными объектами в информационной базе, регистр является механизмом для работы с итогами. Вследствие этого атрибуты регистра не являются свойствами некоторого объекта, а используются лишь как служебные переменные для манипуляции измерениями, ресурсами и реквизитами регистра при помощи соответствующих методов. Для каждого метода определяется, каким образом он использует атрибуты регистров. Следует обратить внимание, что ресурсы регистров принимают различное смысловое значение в зависимости от конкретной операции, выполняемой с регистром. Например, при записи движения регистра при помощи методов: ДвижениеПриходВыполнить, Движение РасходВыполнить и т. п. в ресурс регистра следует записывать приращение, которое будет изменять содержимое регистра, а при считывании итогов регистра (Остатки, ОстаткиПолучить и т. п.) ресурсы регистра содержат остаток (итоговые значения) содержимого регистров.

Под термином «остаток» ресурса для регистра остатков следует понимать числовое значение, которое имеет ресурс на какой-то момент времени. Именно здесь и проявляется понятие Точки Актуальности (далее ТА). ТА — это тот момент времени (дата+время), на который все необоротные регистры содержат текущие значения своих ресурсов. Другими словами, если просто запросить у регистра остатков значение какого-либо ресурса, то он выдаст его именно на момент ТА. Если необходимо узнать значение ресурса на какой-либо прошедший момент времени, то надо либо сдвинуть в прошлое ТА (для этого используется интерактивная операция «Управления итогами»), либо при помощи средств встроенного языка следует запустить «временный расчет» регистра. При «временном расчете» регистра остатков можно задать момент времени, на который необходимо получить значение ресурса. В этом случае значение ресурса рассчитывается, что требует несколько большего времени процессора, чем если получать ресурс на ТА. Однако, «временный расчет» рассчитывается не с начала всех времен, а от начала месяца. Регистры остатков хранят промежуточные значения ресурсов на начало каждого месяца (именно с этим связана процедура «переход на новый период»). Таким образом, если при «временном расчете» указать момент времени в начале месяца, то, в общем случае, расчет будет выполнен быстрее, чем если указать конец месяца.

Кроме хранения остатка или оборота ресурсов, регистры хранят все «приращения» (приход со знаком «+», расход со знаком «-»), произведенные документами (это обозначается термином «движения регистра»). Причем, эти «при-оащения» регистров хранятся со ссылками на те документы, которые их вызвали. Поэтому, во встроенном языке системы 1С:Предприятие есть методы, чтобы получить из регистра все его движения (с привязкой к документам), указав интервал времени, за который они нужны.

Документы, как объекты прикладной задачи, тесно связаны с регистрами. Именно документы, и только они могут изменять значения ресурсов в регистрах (этот алгоритм прописывается в предопределенной процедуре ОбработкаПроведения для каждого вида документа). Никаким другим способом, кроме как через проведение документов на содержимое регистров повлиять нельзя. Например, нельзя создать отчет, который бы изменял значения, хранящиеся в регистрах. Движения (приращения) регистров выполняются в момент «проведения» документа. С другой стороны, документы не порождают в регистрах необратимых действий. Что это значит? Если ранее проведенный документ удалить или сделать его непроведенным, то удалятся и все движения регистров, порожденные им. Если отредактировать (изменить) ранее проведенный документ, то после перепроведения документа все движения регистров, порожденные ранее, удалятся и заменятся новыми.

Замечание: Формирование движений документов по регистрам доступно только в Модуле документа в системной предопределенной процедуре ОбработкаПроведения.

Контекст работы с регистрами

В синтаксисе языка применение атрибутов и вызов методов регистров может выполняться двумя способами:

· Средства языка предоставляют возможность непосредственного доступа к атрибутам и методам регистров, объявленных в конфигураторе в любом программном модуле (все объявленные в конфигураторе регистры принадлежат глобальному контексту конфигурации). Во всех текстах программных модулей доступ к атрибутам, вызовы методов регистров можно записывать просто через точку после полного имени регистра.

Пример:

Флаг = Регистр.ОстаткиТовара.Приход;

· Во всех программных модулях доступ к атрибутам и методам регистров __ может выполняться при помощи переменной со ссылкой на объект типа регистр. Объект создается функцией СоздатьОбъект, ссылка на который присваивается переменной. Чтобы вызвать атрибут или метод объекта, имя этого атрибута или метода (с указанием необходимых параметров) пишется через точку после имени объекта При создании объекта типа регистр, в качестве названия регистра обязательно должно выступать полное имя конкретного регистра, как оно объявлено в конфигураторе. Вид регистра записывается через точку после ключевого слова Регистр, т. е. полное имя регистра записывается следующим образом:

Регистр.<ХХХХХ>

где <ХХХХХ> — вид регистра, объявленный в конфигураторе. Англоязычный синоним ключевого слова Регистр — Register.

Пример:

Рег = СоздатьОбъект("Регистр.ТовЗап");

Атрибуты регистров

Приход

Флаг движения регистра «приход».

Синтаксис:

Приход

Англоязычный синоним:

Income

Описание:

Атрибут Приход содержит значение флага записи движения регистра и используется только при обращении к существующим записям движений регистров. Данный атрибут только для чтения. Атрибут Приход может принимать числовое значение 1 — если текущее движение регистра приход, 0 — если нет.

Данный атрибут не имеет смысла для оборотных регистров.

Пример:

Рег1 = СоздатьОбъект("Регистр.Взаиморасчеты");

Если Режим = "Подробно" Тогда

   Рег1.УстановитьФильтр(Клиент);

   Рег1.ВыбратьДвижения(ДатаНачало, );

   Пока Рег1.ПолучитьДвижение()>0 Цикл

      Если Число(Рег1.Клиент.Код) <> Число(Запрос.Клиент.Код) Тогда

         Продолжить;

      КонецЕсли;

      Док = Рег1.ТекущийДокумент();

      Дв_Баз_Сум = Рег1.СуммаБазовая;

      Дв_Вал_Сум = Рег1.СуммаВалютная;

      Если Рег1.Приход = 1 Тогда

         Таб.ВывестиСекцию("Приход");

      Иначе

         Таб.ВывестиСекцию("Расход");

      КонецЕсли;

   КонецЦикла;

КонецЕсли;

Расход

Флаг движения регистра «расход».

Синтаксис:

Расход

Англоязычный синоним:

Outcome

Описание:

Атрибут Расход содержит значение флага записи движения регистра и используется только при обращении к существующим записям движений регистров. Данный атрибут только для чтения. Атрибут Расход может принимать числовое значение 1 — если текущее движение регистра расход, 0 — если нет.

Данный атрибут не имеет смысла для оборотных регистров.

Пример:

Рег1 = СоздатьОбъект("Регистр.Взаиморасчеты");

Если Режим = "Подробно" Тогда

   Рег1.УстановитьФильтр(Клиент);

   Рег1.ВыбратьДвижения(ДатаНачало, );

   Пока Рег1.ПолучитьДвижение() > 0 Цикл

      Если Число(Рег1.Клиент.Код) <> Число(Запрос.Клиент.Код) Тогда

         Продолжить;

      КонецЕсли;

      Док = Рег1.ТекущийДокумент();

      Дв_Баз_Сум = Рег1.СуммаБазовая;

      Дв_Вал_Сум = Рег1.СуммаВалютная;

      Если Рег1.Расход = 1 Тогда

         Таб.ВывестиСекцию("Расход");

      Иначе

         Таб.ВывестиСекцию("Приход");

      КонецЕсли;

   КонецЦикла;

КонецЕсли;

<Измерение>

Установить значение измерения регистра.

Синтаксис:

<Измерение>

Описание:

Атрибут <Измерение> задает значение выбранного измерения регистра. В тексте программного модуля используется название конкретного измерения регистра, как он назван в конфигураторе.

Пример:

Процедура ОбработкаПроведения()

   // В регистре "ТовЗап" измерениями являются "Склад" и "Товар"

   // ресурсами являются "Количество" и "Стоимость"

   Регистр.ТовЗап.Склад = Склад;

   ВыбратьСтроки();

   Пока (ПолучитьСтроку() > 0) Цикл

      Регистр.ПривязыватьСтроку(НомерСтроки);

      Регистр.ТовЗап.Товар = Товар;

      Регистр.ТовЗап.Количество = Количество;

      Регистр.ТовЗап.Стоимость = Стоимость;

      Регистр.ТовЗап.ДвижениеРасходВыполнить();

   КонецЦикла;

КонецПроцедуры

<Ресурс>

Установить значение ресурса регистра.

Синтаксис:

<Ресурс>

Описание:

Атрибут <Ресурс> задает значение выбранного ресурса регистра. В тексте программного модуля используется название конкретного ресурса регистра, как он назван в конфигураторе.

Пример:

См. предыдущий пример.

<Реквизит>

Установить значение реквизита регистра.

Синтаксис:

<Реквизит>

Описание:

Атрибут <Реквизит> задает значение выбранного реквизита регистра. В тексте программного модуля используется название конкретного реквизита регистра, как он назван в конфигураторе.

Пример:

Процедура ОбработкаПроведения()

   // В регистре "ТовЗап" измерениями являются "Склад" и "Товар"

   // ресурсами являются "Количество" и "Стоимость"

   // реквизитом является "ВнутрПеремещение"

   Регистр.ТовЗап.Склад = Склад;

   Если Вид() = "Перемещение" Тогда

      Регистр.ТовЗап.ВнутрПеремещение = 1;

   Иначе

      Регистр.ТовЗап.ВнутрПерсмещение = 0;

   КонецЕсли;

   ВыбратьСтроки();

   Пока ПолучитьСтроку() > 0 Цикл

      Регистр.ТовЗап.ПривязыватьСтроку(НомерСтроки);

      Регистр.ТовЗап.Товар = Товар;

      Регистр.ТовЗап.Количество = Количество;

      Регистр.ТовЗап.Стоимость = Стоимость;

      Регистр.ТовЗап.ДвижениеРасходВыполнить();

   КонецЦикла;

КонецПроцедуры

Методы оборотных регистров

Описанные в данном разделе методы используются только для оборотных регистров.

ИспользоватьПериод

Установить период выборки итогов оборотного регистра.

Синтаксис 1:

ИспользоватьПериод(<Дата>)

Синтаксис 2:

ИспользоватьПериод(<Год>, <Месяц>, <День>)

Синтаксис 3:

ИспользоватьПериод(<Год>, <НомерНедели>)

Синтаксис 4:

ИспользоватьПериод (<Год>, <Месяц>, <НомерДекады>)

Синтаксис 5:

ИспользоватьПериод(<Год>, <Месяц>)

Синтаксис 6:

ИспользоватьПериод(<Год>, <НомерКвартала>)

Синтаксис 7:

ИспользоватьПериод(<Год>)

Англоязычный синоним:

UseРег1od

Параметры:

<Дата> | Выражение типа «дата».
<Год> | Числовое выражение, содержащее номера года.
<Месяц> | Числовое выражение, содержащее номер месяца.
<День> | Числовое выражение, содержащее номер дня месяца.
<НомерДекады> | Числовое выражение, содержащее номер декады месяца.
<НомерКвартала> | Числовое выражение, содержащее номер квартала.

Описание:

Метод ИспользоватьПериод устанавливает период выборки итогов оборотного регистра. Различный синтаксис вызова данного метода зависит от заданного в конфигураторе интервала оборотного регистра.

Заданный в конфигураторе Интервал | Используемый синтаксис
День | синтаксис 1 и 2.
Неделя | синтаксис 1 и 3.
Декада | синтаксис 4.
Месяц | синтаксис 5.
Квартал | синтаксис 6.
Год | синтаксис 7.

Данный метод используется до вызова методов оборотных регистров. Дальнейшая выборка итогов будет происходить по указанному периоду. Если при работе с оборотным регистром этот метод опущен, то по умолчанию используется текущий период, в котором находится ТА.

Пример:

Регистр.ОборотыТоваров.ИспользоватьПериод(1996);

Итог

Возвратить итог одного ресурса оборотного регистра.

Синтаксис:

Итог(<Измерен1>, <Измерен2>..., <ИмяРесурса>)

Англоязычный синоним:

Total

Параметры:

<Измерен1>, <Измерен2>... | Выражения со значениями измерений регистра.
<ИмяРесурса> | Строковое выражение, содержащее название требуемого ресурса регистра, как оно названо в конфигураторе.

Возвращаемое значение:

Численое значение итога заданного ресурса регистра.

Описание:

Метод Итог возвращает итог по ранее установленному периоду ресурса <ИмяРесурса> оборотного регистра.

Данный метод используется только для оборотных регистров.

Пример:

Функция ПолучитьИтог(Товар, Склад, Год);

   Регистр.ОборотыТоваров.ИспользоватьПериод(Год);

   Возврат Регистр.ОборотыТоваров.Итог(Товар, Склад, "ОборотТовара");

КонецФункции

Итоги

Извлечь все итоги ресурсов оборотного регистра.

Синтаксис:

Итоги(<Измерен1>, <Измерен2>...)

Англоязычный синоним:

Totals

Параметры:

<Измерен1>, <Измерен2>...

Выражения со значениями измерений регистра.

Описание:

Метод Итоги извлекает итоги по всем ресурсам по ранее установленному периоду оборотного регистра. Полученные итоги ресурсов затем можно считывать из атрибутов регистра.

Данный метод используется только для оборотного регистра.

Пример:

Регистр.ОборотыТоваров.ИспользоватьПериод(Год);

Регистр.ОборотыТоваров.Итоги(Товар, Склад);

ОбТов = Регистр.ОборотыТоваров.ОборотТовара;

СводныйИтог

Возвратить сводный итог ресурса оборотного регистра.

Синтаксис:

СводныйИтог(<Измерен1>, <Измерен2>..., <ИмяРесурса>)

Англоязычный синоним:

ConsolidatedTotal

Параметры:

<Измерен1>, <Измерен2>... | Выражения со значениями измерений регистра.
<ИмяРесурса> | Строковое выражение, содержащее название требуемого ресурса регистра, как оно названо в конфигураторе.

Возвращаемое значение:

Численое значение сводного итога заданного ресурса регистра.

Описание:

Метод СводныйИтог возвращает сводный итог ресурса <ИмяРесурса> оборотного регистра. Данный метод работает аналогично методу Итог, однако здесь могут быть заданы не все значения измерений, а только несколько, но обязательно в правильной последовательности, соответствующей структуре измерений данного регистра, как она задана в конфигураторе. Измерения могут задаваться с пропусками (неуказанное значение — просто запятая), фиксируются только указанные измерения.

Данный метод используется только для оборотного регистра.

Пример:

Функция ПолучитьСводныйИтог(Товар, Год);

   Регистр.ОборотыТоваров.ИспользоватьПериод(Год);

   Возврат Регистр.ОборотыТоваров.СводныйИтог(Товар, , "ОборотТовара");

КонецФункции

СводныеИтоги

Извлечь сводные итоги ресурсов оборотного регистра.

Синтаксис:

СводныеИтоги(<Измерен1>, <Измерен2>...)

Англоязычный синоним:

ConsolidatedTotals

Параметры:

<Измерен1>, <Измерен2>...

Выражения со значениями измерений регистра.

Описание:

Метод СводныеИтоги извлекает по переданным в качестве параметров измерениям сводные итоги всех ресурсов оборотного регистра. Полученные ресурсы затем можно считывать из атрибутов регистра. Метод работает аналогично процедуре Итоги, однако здесь могут быть заданы не все значения измерений, а только несколько, но обязательно в правильной последовательности, соответствующей структуре измерений данного регистра, как она задана в конфигураторе. Измерения могут задаваться с пропусками (неуказанное значение -просто запятая), фиксируются только указанные измерения.

Данный метод используется только для оборотного регистра.

Пример:

Регистр.ОборотыТоваров.ИспользоватьПериод(Год);

Регистр.ОборотыТоваров.СводниеИтоги(Товар, );

ПолныйОбТов = Регистр.ОборотыТоваров.ОборотТовара;

ИтогиПолучить

Получить все ресурсы по регистру.

Синтаксис:

ИтогиПолучить()

Англоязычный синоним:

TotalsGet

Описание:

Метод ИтогиПолучить извлекает все итоги ресурсов оборотного регистра по измерениям, содержащимся в атрибутах. Полученные ресурсы затем можно считывать из атрибутов регистра.

Данный метод используется только для оборотного регистра.

Пример:

Регистр.ОборотыТоваров.Товар = Конт.Товар;

Регистр.ОборотыТоваров.Склад = Конт.Склад;

Регистр.ОборотыТоваров.ИтогиПолучить();

Сообщить("Оборот товара=" + Регистр.ОборотыТоваров.ОборотТовара;

Методы регистров остатков

Описанные в данном разделе методы используются только для регистров остатков.

Остаток

Возвратить остаток одного ресурса регистра.

Синтаксис:

Остаток(<Измерен1>, <Измерен2>..., <ИмяРесурса>)

Англоязычный синоним:

Rest

Параметры:

<Измерен1>, <Измерен2>... | Выражения со значениями измерений регистра.
<ИмяРесурса> | Строковое выражение, содержащее название требуемого ресурса регистра, как оно задано в конфигураторе.

Возвращаемое значение:

Численое значение остатка заданного ресурса регистра.

Описание:

Метод Остаток возвращает остаток ресурса <ИмяРесурса> по регистру. Данный метод используется только для регистров остатков.

Пример:

Процедура ПолучитьОстаток(Товар, Склад, Ост, Стоим);

   Ост = Регистр.УчетТовара.Остаток(Товар, Склад, "ОстаткиТовара");

   Стоим = Регистр.УчетТовара.Остаток(Товар, Склад, "СтоимостьТовара");

КонецПроцедуры

СводныйОстаток

Возвратить сводный остаток ресурса по регистру

Синтаксис:

СводныйОстаток(<Измерен1>, <Измерен2>..., <ИмяРесурса>)

Англоязычный синоним:

ConsolidatedRest

Параметры:

<Измepeнl>, <Измepeн2>... | Выражения со значениями измерений регистра.
<ИмяРесурса> | Строковое выражение, содержащее название требуемого ресурса регистра, как оно названо в конфигураторе.

Возвращаемое значение:

Численное значение сводного остатка заданного ресурса регистра.

Описание:

Метод СводныйОстаток возвращает сводный остаток ресурса <ИмяРесурса> по регистру. Данный метод работает аналогично методу Остаток, однако здесь могут быть заданы не все значения измерений, а только несколько, но обязательно в правильной последовательности, соответствующей структуре измерений данного регистра, как она задана в конфигураторе. Измерения могут задаваться с пропусками (неуказанное значение — просто запятая), фиксируются только указанные измерения.

Данный метод используется только для регистров остатков.

Пример:

* Для регистра с измерениями «Товар», «Склад», «МОЛ» запись

Рег.СводныйОстаток(Тов1, , "ОстатокТовара");

означает, что ресурс «ОстатокТовара» будет получен только по одному товару (Тов1), но по всем складам и всем МОЛам.

*

Процедура ПолучитьСводныйОстаток(Товар, Ост);

   Ост = Регистр.УчетТовара.СводныйОстаток(Товар, , "ОстаткиТовара");

КонецПроцедуры

Остатки

Извлечь все ресурсы по регистру.

Синтаксис:

Остатки(<Измерен1>, <Измерен2>...)

Англоязычный синоним:

Rests

Параметры:

<Измерен1>, <Измерен2>...

Выражения со значениями измерений регистра.

Описание:

Метод Остатки извлекает по переданным в качестве параметров измерениям все ресурсы по регистру. Полученные ресурсы затем можно считывать из атрибутов регистра.

Данный метод используется только для регистров остатков.

Пример:

Процедура ПолучитьОстатки(Товар, Склад, ОстатокТовара, Стоимость);

   Регистр.УчетТовара.Остатки(Товар, Склад);

   ОстатокТовара = Регистр.УчетТовара.ОстаткиТовара;

   Стоимость = Регистр.УчетТовара.СтоимостьТовара;

КонецПроцедуры

СводныеОстатки

Извлечь сводные ресурсы по регистру.

Синтаксис:

СводныеОстатки(<Измерен1>, <Измерен2>...)

Англоязычный синоним:

ConsolidatedRests

Параметры:

<Измерен1>, <Измерен2>...

Выражения со значениями измерений регистра.

Описание:

Метод СводныеОстатки извлекает по переданным в качестве параметров измерениям все ресурсы по регистру. Полученные ресурсы затем можно считывать из атрибутов регистра. Метод работает аналогично процедуре Остатки, однако здесь могут быть заданы не все значения измерений, а только несколько, но обязательно в правильной последовательности, соответствующей структуре измерений данного регистра, как она задана в конфигураторе. Измерения могут задаваться с пропусками (неуказанное значение — просто запятая), фиксируются только указанные измерения.

Данный метод используется только для регистров остатков.

Пример:

* Для регистра с измерениями «Товар», «Склад», «МОЛ» запись

Рег.СводныеОстатки(Тов1, , );

означает, что ресурсы будут получены только по одному товару (Тов1), но по всем складам и всем МОЛам.

*

Процедура ПолучитьСводныеОстатки(Товар, ОстатокТовара, Стоимость);

   Регистр.УчетТовара.СводныеОстатки(Товар, );

   ОстатокТовара = Регистр.УчетТовара.ОстаткиТовара;

   Стоимость = Регистр.УчетТовара.СтоимостьТовара;

КонецПроцедуры

ОстаткиПолучить

Получить все ресурсы по регистру.

Синтаксис:

ОстаткиПолучить()

Англоязычный синоним:

GetRests

Описание:

Метод ОстаткиПолучить извлекает все ресурсы регистра по измерениям содержащимся в атрибутах. Полученные ресурсы затем можно считывать из атрибутов регистра.

Данный метод используется только для регистров остатков.

Пример:

Регистр.Взаиморасчеты.Клиент = Конт.Клиент;

Регистр.Взаиморасчеты.ОстаткиПолучить();

Сообщить("Долг клиента по заиморасчетам="

         + СокрЛ(Регистр.Взаиморасчеты.СуммаВалютная);

Выбрать ДвиженияСОстатками

Выбрать все движения регистра с остатками.

Синтаксис:

ВыбратьДвиженияСОстатками(<КонецВыборки>, <ГрафаОтбора>)

Англоязычный синоним:

SelectActsWithRests

Параметры:

<КонецВыборки> | Выражение типа дата, документ или позиция документа задающее конец временного интервала выбора движений регистра.
<ГрафаОтбора> | Необязательный параметр. Строковое выражение — идентификатор графы отбора, как он задан в конфигураторе. Данный параметр устанавливает режим использования определенной графы отбора. "*" — автоматический выбор графы отбора. Пустая строка — не использовать графу отбора. По умолчанию устанавливается автоматический выбор графы отбора.

Описание:

Метод ВыбратьДвиженияСОстатками инициирует выбор всех движении регистра в указанном интервале дат. До вызова данной процедуры может быть установлен фильтр (см. УстановитьФильтр), ограничивающий выборку значений из регистра. Если <КонецВыборки> не указан или равен 0, то конном временного интервала выбора движений регистра считается ТА.

Данный метод отличается от метода ВыбратьДвижения тем, что после получения очередного движения метод Остаток будет выдавать актуальные значения остатков для этого регистра. Но для этого перед вызовом метода ВыбратьДвиженияСОстатками регистру должен быть установлен признак временногоРасчета» (см. ВременныйРасчет) и должен быть выполнен временный расчет (см. РассчитатьРегистрыНа и РассчитатьРегистрыПо) — его дата и будет являться начальной датой выбираемых движений регистра. Данная возможность не может быть использована совместно с дальнейшими «Временными» расчетами.

Собственно выбор первого и последующих движений регистра осуществляется методом ПолучитьДвижение.

Данный метод используется только для регистров остатков.

Пример:

Рег = СоздатьОбъект("Регистр.Взаиморасчеты");

Рег.ВременныйРасчет();

Рег.УстановитьФильтр(Клиент, );

РассчитатьРегистрыНа(ДатаНачала);

Рег.ВыбратьДвиженияСОстатками(ДатаКонца);

Пока Рег.ПолучитьДвижение() = 1 Цикл

   Прих = 0;

   Расх = 0;

   Если Рег.Приход = 1 Тогда

      Прих = Рег.Долг;

   Иначе

      Расх = Рег.Долг;

   КонецЕсли;

   ТекущееСальдо = Рег.Остаток(Клиент, "Задолженность");

   Док = Рег.ТекущийДокумент();

   Таб.ВывестиСекцию("Документ");

КонецЦикла;

См. также: УстановитьФильтр, ПолучитьДвижение, ВыбратьДвижения, ВременныйРасчет, РассчитатьРегистрыНа, РассчитатьРегистрыПо

Общие методы регистров

Описанные в данном разделе методы используются как для регистров остатков так и для оборотных регистров.

Вид

Определить название вида регистра.

Синтаксис:

Вид()

Англоязычный синоним:

Kind

Возвращаемое значение:

Строковое значение, содержащее название вида регистра.

Описание:

Метод Вид позволяет определить название вида регистра, как он задан ь конфигураторе.

Пример:

// отобразим вид регистра в строке состояния

Состояние(Рег1.Вид());

ПредставлениеВида

Определить пользовательское представление вида регистра.

Синтаксис:

ПредставлениеВида()

Англоязычный синоним:

KindPresent

Возвращаемое значение:

Строковое значение, содержащее пользовательское представление вида регистра (синоним регистра или, если он пустой, то идентификатор).

Описание:

Метод ПредставлениеВида позволяет получить пользовательское представление вида регистра, как оно задано в конфигураторе.

Пример:

// отобразим пользовательское представление в строке состояния Состояние

(Рег1.ПредставлениеВида());

НазначитьТип

Назначить тип для реквизита неопределенного вида.

Синтаксис:

НазначитьТип(<ИмяРеквизита>, <ИмяТипа>, <Длина>, <Точность>)

Англоязычный синоним:

SetType

Параметры:

<ИмяРеквизита> | Строковое выражение — название реквизита регистра неопределенного типа, как он назван в конфигураторе.
<ИмяТипа> | Строковое выражение — название типа данных (или Вид субконто), который назначается реквизиту регистра. Например: "Строка", "Число", "Справочник.Товары", " Документ.РасходнаяНакладная" и т. п.
<Длина> | Необязательный параметр. Числовое выражение — длина поля представления данных. Имеет смысл только при задании числового или строкового типа.
<Точность> | Необязательный параметр. Числовое выражение — число знаков числа после десятичной точки. Имеет смысл только при задании числового типа.

Описание:

Метод НазначитьТип позволяет назначить тип для реквизита, которому в конфигураторе назначен тип «Неопределенный».

Пример:

Регистр.УчетТМЦ.НазначитьТип("ТМЦ", "Справочник.Товары");

УстановитьАтрибут

Установить значение атрибута по имени идентификатора.

Синтаксис:

УстановитьАтрибут(<ИмяРеквизита>, <3начение>)

Англоязычный синоним:

SetAttrib

Параметры:

<ИмяРеквизита> | Строковое выражение, содержащее имя атрибута, как оно задано в конфигураторе.
<3начение> | Выражение, содержащее устанавливаемое значение атрибута.

Описание:

Метод УстановитьАтрибут позволяет установить значение атрибута по имени идентификатора, как оно задано в конфигураторе.

Пример;

Рег.УстановитьАтрибут("Сумма", СуммаТов);

ПолучитьАтрибут

Получить значение атрибута по идентификатору.

Синтаксис:

ПолучитьАтрибут(<ИмяАтрибута>)

Англоязычный синоним:

GetAttrib

Параметры:

<ИмяAтpибyтa>

Строковое выражение, содержащее имя атрибута, как оно задано в конфигураторе.

Возвращаемое значение:

Значение атрибута <ИмяАтрибута>.

Описание:

Метод ПолучитьАтрибут позволяет получить значение атрибута по идентификатору, как оно задано в метаданных.

Пример:

СуммаТов = Рег.ПолучитьАтрибут("Сумма");

ВыбратьДвижения

Выбрать все движения регистра по датам.

Синтаксис:

ВыбратьДвижения(<НачалоВыборки>, <КонецВыборки>, <ГрафаОтбора>)

Англоязычный синоним:

SelectActs

Параметры:

<НачалоВыборки> | Выражение типа дата, документ или позиция документа, задающее начало временного интервала выбора движений регистра.
<КонецВыборки> | Выражение типа дата, документ или позиция документа задающее конец временного интервала выбора движений регистра.
<ГрафаОтбора> | Необязательный параметр. Строковое выражение — идентификатор графы отбора, как он задан в конфигураторе. Данный параметр устанавливает режим использования определенной графы отбора. "*" — автоматический выбор графы отбора. Пустая строка — не использовать графу отбора. По умолчанию устанавливается автоматический выбор графы отбора.

Описание:

Метод ВыбратьДвижения инициирует выбор всех движений регистра в указанном интервале дат. До вызова данной процедуры может быть установлен фильтр (см. УстановитьФильтр), ограничивающий выборку значений из регистра. Если <КонецВыборки> не указан или равен 0, то концом временного интервала выбора движений регистра считается ТА.

Собственно выбор первого и последующих движений регистра осуществляется функцией ПолучитьДвижение.

Пример:

Рег1 = СоздатьОбъект("Регистр.Взаиморасчеты");

Если Режим = "Подробно" Тогда

   Рег1.УстановитьФильтр(Клиент);

   Рег1.ВыбратьДвижения(ДатаНачало, );

   Пока Рег1.ПолучитьДвижение() > 0 Цикл

      Док = Рег1.ТекущийДокумент();

      Дв_Баз_Сум = Рег1.СуммаБазовая;

      Дв_Вал_Сум = Рег1.СуммаВалютная;

      Если Рег1.Расход = 1 Тогда

         Таб.ВывестиСекцию("Расход2");

      Иначе

         Таб.ВывестиСекцию("Приход2");

      КонецЕсли;

   КонецЦикла;

КонецЕсли;

См. также: ПолучитьДвижение

ВыбратьДвиженияДокумента

Выбрать все движения регистра по документу.

Синтаксис:

ВыбратьДвиженияДокумента(<Документ>)

Англоязычный синоним:

SelectDocActs

Параметры:

<Документ>

Значение типа Документ.

Возвращаемое значение:

Число: 1 — если действие выполнено и в выборке есть хотя бы один элемент; 0 — если действие не выполнено или в выборке нет ни одного элемента.

Описание:

Метод ВыбратьДвиженияДокумента инициирует выбор всех движений регистра по указанному документу <Документ>.

Собственно выбор первого и последующих движений регистра осуществляется функцией ПолучитьДвижение.

Пример:

Процедура Взаиморасчеты(ВыбКлиент, ДатаНачало, ДатаКонец)

   // Создание Таблицы для выходного отчета

   Заг = "Неизвестно.";

   Таб = СоздатьОбъект("Таблица");

   Клн = СоздатьОбъект("Справочник.Клиенты");

   Клн.ИспользоватьДату(ДатаКонец);

   Док = СоздатьОбъект("Документ");

   Рег = СоздатьОбъект("Регистр.Взаиморасчеты");

   Рег1 = СоздатьОбъект("Регистр.Взаиморасчеты");

   Рег.ВременныйРасчет();

   РассчитатьРегистрыНа(ДатаКонец);

   Если ВыбКлиент.Выбран() = 0 Тогда

      //Без условий

      Заг = "По всем клиентам.";

   ИначеЕсли ВыбКлиент.ЭтоГруппа() = 1 Тогда

      Клн.ВключатьПодчиненные(ВыбКлиент);

      Клн.ИспользоватьРодителя(ВыбКлиент);

      Заг = "По клиентам группы " + ВыбКлиент.Наименование;

   Иначе

      Предупреждение("Выберите группу клиентов!");

      Возврат;

   КонецЕсли;

   Таб.ВывестиСекцию("Отчет");

   Клн.ВыбратьЭлементы();

   Пока Клн.ПолучитьЭлемент() > 0 Цикл

      Если Клн.ЭтоГруппа() = 1 Тогда

         Таб.ВывестиСекцию("Группа");

      Иначе

         Рег.Клиент = Клн.ТекущийЭлемент();

         Рег.ОстаткиПолучить();

         Баз_сум = Рег.СуммаБазовая;

         Вал_сум = Рег.СуммаВалютная;

         Таб.ВывестиСекцию("Клиент");

         // цикл по всем документам

         Док.ВыбратьДокументы(ДатаНачало, ДатаКонец);

         Пока Док.ПолучитьДокумент() > 0 Цикл

            // отфильтруем документы

            Если (Док.Вид() = "Перемещение") ИЛИ (Док.Вид() = "Счет") ИЛИ

                 (Док.Вид() = "Списание") ИЛИ

                 (Док.Вид() = "РучноеИзмОстатка") Тогда

               // Эти Документы не изменяют Взаиморасчеты

               Продолжить;

            КонецЕсли;

            // выберем все движения регистра по документу

            Рег1.ВыбратьДвиженияДокумента(Док.ТекущийДокумент());

            Пока Рег1.ПолучитьДвижение() > 0 Цикл

               Если Строка(Рег1.Клиент.Код) <> Строка(Клн.Код) Тогда

                  // не тот клиент

                  Продолжить;

               КонецЕсли;

               Дв_Баз_Сум = Рег1.СуммаБазовая;

               Дв_Вал_Сум = Рег1.СуммаВалютная;

               Если Рег1.Приход = 1 Тогда

                  Таб.ВывестиСекцию("Приход");

               Иначе

                  Таб.ВывестиСекцию("Расход");

               КонецЕсли;

            КонецЦикла;

         КонецЦикла;

      КонецЕсли;

   КонецЦикла;

   //Вызов выходного отчета в окно просмотра и редактирования.

   Таб.ТолькоПросмотр(1);

   Таб.Опции(0, 0, 4, 0);

   Таб.Показать("Взаиморасчеты с клиентами", "");

   ВыбКлиент = 0;

КонецПроцедуры

См. также: ПолучитьДвижение

ОбратныйПорядок

Установить порядок выборки документов.

Синтаксис:

ОбратныйПорядок(<Режим>)

Англоязычный синоним:

BackwardOrder

Параметры:

<Режим>

Необязательный параметр. Числовое выражение: 1 — выбирать движения документов в обратном порядке даты и времени; 0 — выбирать движения документов в порядке возрастания даты и времени.

Возвращаемое значение:

Числовое значение, содержащее текущее значение режима порядка выборки документов (на момент до исполнения метода).

Описание:

Метод ОбратныйПорядок устанавливает порядок выборки движения документов. Данный метод обычно используется до вызова одного из методов: ВыбратьДвижения, ВыбратьДвиженияСОстатками, который фактически открывает выборку. Дальнейшая выборка при помощи метода ПолучитьДвижение будет происходить в заданном порядке выборки.

По умолчанию, выборка движения документов выполняется в порядке возрастания даты и времени записи документов. Поэтому реально имеет смысл применять данный метод только в том случае, если надо получить обратный порядок выборки.

В тексте программного модуля возможно использование данного метода как процедуры или как функции. При использовании в качестве функции, возвращаемое значение соответствует текущему порядку выборки, которое было до вызова данного метода.

Пример:

Рег = СоздатьОбъект("Регистр.Взаиморасчеты");

Если Режим = "Подробно" Тогда

   Рег1.УстановитьФильтр(Клиент);

   // Открываем выборку

   Рег1.ОбратныйПорядок(1);

   Рег1.ВыбратьДвижения(ДатаНачало, );

   // Цикл выбора движений по регистру

   Пока Рег1.ПолучитьДвижение() > 0 Цикл

      Если Строка(Рег1.Клиент.Код) <> Строка(Запрос.Клиент.Код) Тогда

         Продолжить;

      КонецЕсли;

      Док = Рег1.ТекущийДокумент();

      Дв_Баз_Сум = Рег1.СуммаБазовая;

      Дв_Вал_Сум = Рег1.СуммаВалютная;

      Если Рег1.Расход = 1 Тогда

         Таб.ВывестиСекцию("Расход2");

      Иначе

         Таб.ВывестиСекцию("Приход2");

      КонецЕсли;

   КонецЦикла;

КонецЕсли;

ПолучитьДвижение

Выбрать очередное движение регистра.

Синтаксис:

ПолучитьДвижение()

Англоязычный синоним:

GetDocAct

Возвращаемое значение:

Число: 1 — если следующее движение регистра выбрано успешно; 0 — если движение регистра не найдено (отсутствует).

Описание:

Метод ПолучитьДвижение выбирает следующее движение регистра в последовательности выборки, открытой перед этим при помощи методов ВыбратьДвиженияДокумента или ВыбратьДвижения или ВыбратьДвиженияСОстатками. Данный метод используется для организации цикла по регистру.

После выполнения даннго метода все атрибуты регистра: измерения, ресурсы, Приход и Расход содержат значения текущей записи движения регистра.

Данный метод может использоваться только для позиционируемых объектов, созданных функцией СоздатьОбъект.

Пример:

Рег1 = СоздатьОбъект("Регистр.Взаиморасчеты");

Если Режим = "Подробно" Тогда

   Рег1.УстановитьФильтр(Клиент);

   // Открываем выборку

   Рег1.ВыбратьДвижения(ДатаНачало, );

   // Цикл выбора движений по регистру

   Пока Рег1.ПолучитьДвижение() > 0 Цикл

      Если Строка(Рег1.Клиент.Код) <> Строка(Запрос.Клиент.Код) Тогда

         Продолжить;

      КонецЕсли;

      Док = Рег1.ТекущийДокумент();

      Дв_Баз_Сум = Рег1.СуммаБазовая;

      Дв_Вал_Сум = Рег1.СуммаВалютная;

      Если Рег1.Расход = 1 Тогда

         Таб.ВывестиСекцию("Расход2");

      Иначе

         Таб.ВывестиСекцию("Приход2");

      КонецЕсли;

   КонецЦикла;

КонецЕсли;

См. также: ВыбратьДвиженияДокумента, ВыбратьДвижения, ВыбратьДвиженияСОстатками

ТекущийДокумент

Возвратить значение документа, выполнившего движение регистра.

Синтаксис:

ТекущийДокумент()

Англоязычный синоним:

CurrentDocument

Возвращаемое значение:

Значение документа, который задал движение регистра.

Описание:

Метод ТекущийДокумент возвращает значение документа, который задал движение регистра. Метод используется после получения очередного движения регистра (см. методы ПолучитьДвижение и ПолучитьИтог).

Данный метод может использоваться только для переменных созданных функцией СоздатьОбъект.

Пример:

Рег = СоздатьОбъект("Регистр.Взаиморасчеты");

Рег.ВременныйРасчет();

Рег.УстановитьФильтр(Клиент, );

РассчитатьРегистрыНа(ДатаНачала);

Рег.ВыбратьДвиженияСОстатками(ДатаКонца);

Пока Рег.ПолучитьДвижение() = 1 Цикл

   Прих = 0;

   Расх = 0;

   Если Рег.Приход = 1 Тогда

      Прих = Рег.Долг;

   Иначе

      Расх = Рег.Долг;

   КонецЕсли;

   ТекущееСальдо = Рег.Остаток(Клиент, "Задолженность");

   Док = Рег.ТекущийДокумент();

   Таб.ВывестиСекцию("Документ");

КонецЦикла;

См. также: ПолучитьДвижение, НомерСтроки

НомерСтроки

Возвратить номер строки документа, выполнившего движение регистра.

Синтаксис:

НомерСтроки()

Англоязычный синоним:

LineNum

Возвращаемое значение:

Число — номер строки документа, выполнившего движение регистра.

Описание:

Метод НомерСтроки возвращает значение номера строки документа, которая задала движение регистра (в случае, когда в Модуле документа перед движением регистра использовали метод ПривязыватьСтроку). Метод используется после получения очередного движения регистра (см. функции ПолучитьДвижение и ПолучитьИтог).

Данный метод может использоваться только для переменных созданных Функцией СоздатьОбъект.

Пример:

Рег = СоздатьОбъект("Регистр.Взаиморасчеты");

Рег.ВременныйРасчет();

Рег.УстановитьФильтр(Клиент);

РассчитатьРегистрыНа(ДатаНачала);

Рег.ВыбратьДвиженияСОстатками(ДатаКонца);

Пока Рег.ПолучитьДвижение() = 1 Цикл

   Прих = 0;

   Расх = 0;

   Если Рег.Приход = 1 Тогда

      Прих = Рег.Долг;

   Иначе

      Расх = Рег.Долг;

   КонецЕсли;

   ТекущееСальдо = Рег.Остаток(Клиент, "Задолженность");

   Док = Рег.ТекущийДокумент();

   НомСтр = Рег.НомерСтроки();

   Таб.ВывестиСекцию("Документ");

КонецЦикла;

См. также: ПолучитьДвижение, ТекущийДокумент, ПривязыватьСтроку

ВыбратьИтоги

Выбрать все остатки регистра.

Синтаксис:

ВыбратьИтоги()

Англоязычный синоним:

SelectTotals

Описание:

Метод ВыбратьИтоги инициирует перебор текущих или временных (см. ВременныйРасчет) остатков по регистру, при этом используется фильтр, если он установлен (см. УстановитьФильтр). Открывается выборка остатков по всем записанным значениям измерений.

Собственно выбор первого и последующих остатков регистра осуществляется функцией ПолучитьИтог.

Пример:

Процедура ВыбратьКредит()

   Список = СоздатьОбъект("СписокЗначений");

   Рег = СоздатьОбъект("Регистр.ТоварныйКредит");

   Рег.УстановитьФильтр(Клиент, );

   Рег.ВыбратьИтоги();

   Ном = 0;

   Пока Рег.ПолучитьИтог() = 1 Цикл

      Док = Рег.Документ;

      Список.ДобавитьЗначение(Док, "" + Док + " — Остаток = " + Рег.Долг);

      Если Ном = 0 Тогда

         ВыбДок = Док;

      КонецЕсли;

      Ном = Ном + 1;

   КонецЦикла;

   Если Ном > 0 Тогда

      Если Список.ВыбратьЗначение(ВыбДок, "Выберите кредит") = 1 Тогда

         ДокКредита = ВыбДок;

      КонецЕсли;

   КонецЕсли;

   Возврат;

КонецПроцедуры

См. также: УстановитьФильтр, ПолучитьИтог, ВыбратьДвижения, ВременныйРасчет, РассчитатьРегистрыНа, РассчитатьРегистрыПо

ПолучитьИтог

Выбрать очередной остаток по регистру.

Синтаксис:

ПолучитьИтог()

Англоязычный синоним:

GetTotal

Возвращаемое значение:

Число: 1 — если очередной остаток по регистру выбран успешно; 0 — если очередной остаток по регистру не найден (отсутствует).

Описание:

Метод ПолучитьИтог выбирает очередной остаток по регистру в последовательности выборки, открытой перед этим при помощи метода ВыбратьИтоги. Данный метод используется для организации цикла по регистру — позволяет перебрать текущие или временные (см. ВременныйРасчет) остатки по регистру. При этом используется фильтр, если он установлен (см. УстановитьФильтр). Открывается выборка остатков по всем записанным значениям измерений.

Итоги с нулевыми остатками не выдаются. Порядок выдачи для измерений типа «справочник» и «документ» не определен.

После выполнения данного метода все атрибуты регистра: измерения, ресурсы, Приход и Расход содержат значения очередной записи остатков регистра. Данный метод может использоваться только для позиционируемых объектов, созданных функцией СоздатьОбъект.

Пример:

Процедура ВыбратьКредит()

   Список = СоздатьОбъект("СписокЗначений");

   Рег = СоздатьОбъект("Регистр.ТоварныйКредит");

   Рег.УстановитьФильтр(Клиент, );

   Ном = 0;

   Рег.ВыбратьИтоги();

   Пока Рег.ПолучитьИтог() = 1 Цикл

      Док = Рег.Документ;

      Список.ДобавитьЗначение(Док, "" + Док + " — Остаток = " + Рег.Долг);

      Если Ном = 0 Тогда

         ВыбДок = Док;

      КонецЕсли;

      Ном = Ном + 1;

   КонецЦикла;

   Если Ном > 0 Тогда

      Если Список.ВыбратьЗначение(ВыбДок, "Выберите кредит") = 1 Тогда

         ДокКредита = ВыбДок;

      КонецЕсли;

   КонецЕсли;

КонецПроцедуры

См. также: ВыбратьИтоги

ВыгрузитьИтоги

Выгрузить все итоги регистра с текущим фильтром в таблицу значений.

Синтаксис:

ВыгрузитьИтоги(<Та6лЗнач>, <ВключатьИзмерФильтра>, <ПредварительноОчищать>)

Англоязычный синоним:

RetrieveTotals

Параметры:

<ТаблЗнач> | Объект типа ТаблицаЗначений, куда система выгрузит все итоги регистра.
<ВключатьИзмерФильтра> | Необязательный параметр. Число: 1 — в получаемую таблицу включаются измерения, закрепленные фильтром; 0 — не включаются. Значение по умолчанию — 0.
<ПредварительноОчищать> | Необязательный параметр. Число: 1 — перед выгрузкой таблица значений очищается; 0 — не очищается. Значение по умолчанию — 1.

Описание:

Метод ВыгрузитьИтоги выгружает все итоги регистра с текущим фильтром (см. УстановитьФильтр) в таблицу значений.

Пример:

Функция ВыбратьКредит(ВыбКлиент)

   Список = СоздатьОбъект("ТаблицаЗначений");

   Рег = СоздатьОбъект("Регистр.ТоварныйКредит");

   Рег.УстановитьФильтр(ВыбКлиент, );

   Рег.ВыгрузитьИтоги(Список, 1);

   Возврат Список;

КонецФункции

См. также: УстановитьФильтр

ВременныйРасчет

Установить флаг участия регистра во временном расчете.

Синтаксис:

ВременныйРасчет(<Флаг>)

Англоязычный термин:

TempCalc

Параметры:

<Флаг>

Необязательный параметр. Числовое выражение. 1 — установить флаг участия регистра во временном расчете; 0 — сбросить флаг участия регистра во временном расчете. Значение по умолчанию — 1.

Возвращаемое значение:

Текущее числовое значение флага участия регистра во временном расчете.

Описание:

Метод ВременныйРасчет устанавливает флаг участия регистра во временном расчете. После такой установки можно выполнять процедуры рассчитатьРегистрыНа и РассчитатьРегистрыПо, тогда у данного регистра методы обращения к остаткам будут выдавать рассчитанные значения остатков на заданный момент времени.

Замечание. В один момент времени только по одному объекту регистров каждого вида могут участвовать во временном расчете.

Пример:

// если итоги не актуальны, то стоимости берем из временного расчета

// регистра УчетРеализации

Рег = СоздатьОбъект("Регистр.УчетРеализации");

Рег.ВременныйРасчет();

РассчитатьРегистрыНа(ТекущийДокумент());

Рег.Товар = Товар;

Рег.Клиент = Клиент;

Рег.ОстаткиПолучить();

ТекОстаток = Рег.ОстатокТовара;

ТекСтоимость = Рег.Стоимость;

ТекПродСтоимость = Рег.ПродСтоимость;

См. также: РассчитатьРегистрыНа, РассчитатьРегистрыПо

УстановитьФильтр

Назначить фильтр для оптимизации действий с регистром.

Синтаксис:

УстановитьФильтр(<Измер1>, <Измер2>..., <Рекв1>, <Рекв2>, ...)

Англоязычный синоним:

SetFilter

Параметры:

<Измер1 >, <Измер2> | Выражения со значениями измерений регистра.
<Рекв1>, <рекв2> | Необязательные параметры. Выражения со значениями реквизитов регистра. Заданные значения реквизитов будут влиять только на отбор движений регистра.

Описание:

Метод УстановитьФильтр назначает фильтр для оптимизации действий с регистром (временные расчеты, выбор движений и итогов).

В качестве фильтра задаются конкретные значения измерений и реквизитов регистра. Могут быть заданы не все значения, а только несколько, но обязательно в правильной последовательности, соответствующей структуре выбранного регистра, как она задана в конфигураторе. Измерения и реквизиты могут задаваться с пропусками (неуказанное значение — просто запятая), фиксируются только указанные значения.

Пример:

* Для регистра с измерениями «Товар», «Склад», «МОЛ» запись

Рег.УстановитьФильтр(Тов1, , );

означает, что расчеты будут проводиться только по одному товару (Тов1), но по всем складам и МОЛам.

*

Рег = СоздатьОбъект("Регистр.Взаиморасчеты");

Рег.ВременныйРасчет();

Рег.УстановитьФильтр(Клиент, );

РассчитатьРегистрыНа(ДатаНачала);

Рег.ВыбратьДвиженияСОстатками(ДатаКонца);

Пока Рег.ПолучитьДвижение() = 1 Цикл

   Прих = 0;

   Расх = 0;

   Если Рег.Приход = 1 Тогда

      Прих = Рег.Долг;

   Иначе

      Расх = Рег.Долг;

   КонецЕсли;

   ТекущееСальдо = Рег.Остаток(Клиент, "Задолженность");

   Док = Рег.ТекущийДокумент();

   Таб.ВывестиСекцию("Документ");

КонецЦикла;

См. также: ВременныйРасчет

УстановитьЗначениеФильтра

Установить значение фильтра для оптимизации расчетов.

Синтаксис:

УстановитьЗначениеФильтра(<ИзмерИлиРеквизит>, <3начен>, <Вариант>)

Англоязычный синоним:

SetFilterValue

Параметры:

<ИзмерИлиРеквизит>

Идентификатор измерения или реквизита.

<3начен>

Значение или список значений.

<Вариант>

Необязательный параметр. Число: 0 — не фильтровать; 1 — фильтровать по значению; 2 — искать вхождение. Значение по умолчанию 1.

Для варианта «2»:

- если параметр <3начен> — это группа справочника, то осуществляется проверка вхождения в группу;

- если параметр <3начен> — это простой элемент справочника или другой тип значения, то осуществляется просто фильтрация по значению;

- для списка значений осуществляется проверка вхождения в список;

- если пустое значение или пустой список значений, то условие не проверяется.

Описание:

Метод УстановитьЗначениеФильтра назначает фильтр для оптимизации расчетов. В качестве фильтра для измерения или реквизита регистра может задаваться либо конкретное значение, либо список значений либо группа для справочника.

Пример:

* Для регистра с измерениями «Товар», «Склад», «МОЛ» запись

Рег.УстановитьЗначениеФильтра("Товар", ВыбГруппаТоваров, 2);

означает, что расчеты будут проводиться по товарам из группы ВыбГруппаТоваров.

Методы контекста Модуля документа

Следующие методы доступны только в контексте Модуля документа в системной предопределенной процедуре ОбработкаПроведения.

Замечание. Перечисленные в этом разделе методы можно применять только к регистрам, непосредственно доступным в контексте Модуля документа, т. е. нельзя создать объект типа «регистр» с помощью функции СоздатьОбъект и к нему применять метод из данного раздела.

ПривязыватьСтроку

Записать номер строки документа в движении регистра.

Синтаксис:

ПривязыватьСтроку(<НомерСтроки>)

Англоязычный синоним:

LinkLine

Параметры:

<НомерСтроки> Выражение, содержащее номер строки документа

Описание:

Метод ПривязыватьСтроку устанавливает, что при выполнении всех последующих движений регистров, движения будут записываться с номером строки <НомерСтроки>.

Метод ПривязыватьСтроку может быть использован как системная процедура: тогда он будет устанавливать номер строки для всех регистров по которым выполняются движения, или как метод конкретного регистра: тогда он будет устанавливать номер строки только для данного регистра.

Данный метод доступен только в контексте Модуля документа в предопределенной процедуре ОбработкаПроведения (см. Гл. «Работа с Документами»).

Пример:

Процедура ОбработкаПроведения()

   Регистр.ТовЗап.Склад = Склад;

   ВыбратьСтроки();

   Пока(ПолучитьСтроку() > 0) Цикл

      Регистр.ТовЗап.ПривязыватьСтроку(НомерСтроки);

      Регистр.ТовЗап.Товар = Товар;

      Регистр.ТовЗап.Количество = Количество;

      Регистр.ТовЗап.Стоимость = Стоимость;

      Регистр.ТовЗап.ДвижениеРасходВыполнить();

   КонецЦикла;

КонецПроцедуры

ДвижениеПриход

Выполнить запись прихода в регистр по параметрам.

Синтаксис:

ДвижениеПриход (<Измерен1>, <Измерен2> ... , <Ресурс1>, <Ресурс2> ...)

Англоязычный синоним:

ActIncome

Параметры:

<Измерен1>, <Измерен2> | Выражения со значениями измерений регистра.
<Ресурс1>, <Ресурс2> | Выражения со значениями ресурсов регистра.

Описание:

Метод ДвижениеПриход выполняет запись прихода в регистр для текущего документа. Измерения регистра, по которым записывается приход передаются параметрами <Измерение1>, <Измерение2>, ... Величина приращений приходуемых ресурсов регистра передаются параметрами <Ресурс1>, <Ресурс2>...

Данный метод доступен только в контексте Модуля документа в предопределенной процедуре ОбработкаПроведения (см. Гл. «Работа с Документами»).

Данный метод используется только для регистров остатков.

Пример:

Процедура ОбработкаПроведения();

   ВыбратьСтроки();

   Пока ПолучитьСтроку() > 0 Цикл

      Регистр.ТовЗап.ПривязыватьСтроку(НомерСтроки);

      Регистр.ТовЗап.ДвижениеПриход(Склад, Товар, Количество, Стоимость);

   КонецЦикла;

КонецПроцедуры;

См. также: ОбработкаПроведения

ДвижениеРасход

Выполнить запись расхода в регистр по параметрам.

Синтаксис:

ДвижениеРасход(<Измерен1>, <Измерен2>..., <Ресурс1>, <Ресурс2>...)

Англоязычный синоним:

ActOutcome

Параметры:

<Измерен1>, <Измерен2> | Выражения со значениями измерений регистра.
<Ресурс1 >, <Ресурс2> | Выражения со значениями ресурсов регистра.

Описание:

Метод ДвижениеРасход выполняет запись расхода в регистр для текущего документа. Измерения регистра, по которым записывается расход передаются <Измервн1>, <Измерен2>, .. Величина приращений расходуемых ресурсов регистра передаются параметрами <Ресурс1>, <Ресурс2>...

Данный метод доступен только в контексте Модуля документа в предопределенной процедуре ОбработкаПроведения (см. Гл. «Работа с Документами»).

Данный метод используется только для регистров остатков.

Пример:

Процедура ОбработкаПроведения();

   ВыбратьСтроки();

   Пока( ПолучитьСтроку() > 0) Цикл

      Регистр.ТовЗап.ДвижениеРасход(Склад, Товар, Количество, Стоимость);

   КонецЦикла;

КонецПроцедуры

См. также: ОбработкаПроведения

ДвижениеПриходВыполнить

Выполнить запись прихода в регистр по атрибутам.

Синтаксис:

ДвижениеПриходВыполнить()

Англоязычный синоним:

DoActIncome

Описание:

Метод ДвижениеПриходВыполнить выполняет запись прихода в регистр для текущего документа. Значения измерений регистра, по которым записывается приход, а также величины приращений приходуемых ресурсов регистра определяются текущими значениями атрибутов регистра.

Данный метод доступен только в контексте Модуля документа в предопределенной процедуре ОбработкаПроведения (см. Гл. «Работа с Документами»).

Данный метод используется только для регистров остатков.

Пример:

Процедура ОбработкаПроведения();

   Регистр.ТовЗап.Склад = Склад;

   ВыбратьСтроки();

   Пока(ПолучитьСтроку() > 0) Цикл

      Регистр.ТовЗап.Товар = Товар;

      Регистр.ТовЗап.Количество = Количество;

      Регистр.ТовЗап.Стоимость = Стоимость;

      Регистр.ТовЗап.ДвижениеПриходВыполнить();

   КонецЦикла;

КонецПроцедуры;

См. также: ОбработкаПроведения

ДвижениеРасходВыполнить

Выполнить запись расхода в регистр по атрибутам.

Синтаксис:

ДвижениеРасходВыполнить()

Англоязычный синоним:

DoActOutcome

Описание:

Метод ДвижениеРасходВыполнить выполняет запись расхода в регистр для текущего документа. Значения измерений регистра, по которым записывается приход, а также величины приращений приходуемых ресурсов регистра определяются текущими значениями атрибутов регистра.

Данный метод доступен только в контексте Модуле документа в предопределенной процедуре ОбработкаПроведения (см. Гл. «Работа с Документами»).

Данный метод используется только для регистров остатков.

Пример:

Процедура ОбработкаПроведения()

   Регистр.ТовЗап.Склад = Склад;

   ВыбратьСтроки();

   Пока(ПолучитьСтроку() > 0) Цикл

      Регистр.ТовЗап.Товар = Товар;

      Регистр.ТовЗап.Количество = Количество;

      Регистр.ТовЗап.Стоимость = Стоимость;

      Регистр.ТовЗап.ДвижениеРасходВыполнить();

   КонецЦикла;

КонецПроцедуры

См. также: ОбработкаПроведения

Движение

Выполнить запись движения в оборотный регистр по параметрам.

Синтаксис:

Движение(<Измерен1>, <Измерен2>..., <Ресурс1> , <Ресурс2>...)

Англоязычный синоним:

Act

Параметры:

<Измерен1 >, <Измерен2> | Выражения со значениями измерений регистра.
<Ресурс1>, <Ресурс2> | Выражения со значениями ресурсов регистра.

Описание:

Метод Движение выполняет запись движения в оборотный регистр для текущего документа. Измерения регистра, по которым записывается движение передаются в параметрах <Измерен1>, <Измерен2>, .. Величины приращений ресурсов регистра передаются параметрами <Ресурс1>, <Ресурс2>...

Данный метод доступен только в контексте Модуля документа в предопределенной процедуре ОбработкаПроведения (см. Гл. «Работа с Документами»).

Данный метод используется только для оборотных регистров.

Пример:

Процедура ОбработкаПроведения();

   ВыбратьСтроки();

   Пока ПолучитьСтроку() > 0 Цикл

      Регистр.ОборотыТоваров.Движение(Товар, Склад, ОборотТовара);

   КонецЦикла;

КонецПроцедуры

См. также: ОбработкаПроведения

ДвижениеВыполнить

Выполнить запись движения в оборотный регистр по атрибутам.

Синтаксис:

ДвижениеВыполнить()

Англоязычный синоним:

DoAct

Описание:

Метод ДвижениеВыполнить выполняет запись прихода в регистр для текущего документа. Значения измерений регистра, по которым записывается движение, а также величины приращений ресурсов регистра определяются текущими значениями атрибутов регистра.

Данный метод доступен только в контексте Модуля документа в предопределенной процедуре ОбработкаПроведения (см. Гл. "Работа с Документами").

Данный метод используется только для оборотных регистров.

Пример:

Процедура ОбработкаПроведения();

   Регистр.ТовЗап.Склад = Склад;

   ВыбратьСтроки();

   Пока (ПолучитьСтроку() > 0) Цикл

      Регистр.ТовЗап.Товар = Товар;

      Регистр.ТовЗап.Оборот = Оборот;

      Регистр.ТовЗап.ДвижениеВыполнить();

   КонецЦикла;

КонецПроцедуры;

См. также: ОбработкаПроведения

Системные процедуры работы с регистрами

Нижеследующие процедуры РассчитатьРегистрыНа и РассчитатьРегистрыПо являются глобальными, т. к. они доступны в любом программном модуле и воздействуют на все регистры, объявленные в конфигураторе, у которых установлен флаг участия во временном расчете (см. ВременныйРасчет). Применение данных процедур в тексте программного модуля непосредственное, т. е. просто имя процедуры с параметрами (без предварительной ссылки на объект).

РассчитатьРегистрыНа

Рассчитать все временные регистры на начало события.

Синтаксис:

РассчитатьРегистрыНа(<ГраницаРасчета>, <ГрафаОтбора>)

Англоязычный синоним:

CalcRegsOnBeg

Параметры:

<ГраницаРасчета> | Выражение со значением типа дата, документ или позиция документа.
<ГpaфaOтбopa> | Необязательный параметр. Строковое выражение — идентификатор графы отбора, как он задан в конфигураторе. Данный параметр устанавливает режим использования определенной графы отбора. "*" — автоматический выбор графы отбора. Пустая строка — не использовать графу отбора. По умолчанию устанавливается автоматический выбор графы отбора.

Описание:

Процедура РассчитатьРегистрыНа рассчитывает все регистры, у которых установлен флаг участия во временном расчете (см. ВременныйРасчет), на момент начала события. Если при вызове метода в параметре передана дата, то расчет временных регистров производится на начало указанной даты. Если при вызове метода в параметре передан документ, то расчет временных регистров производится на момент до проведения данного документа.

Применение данной процедур в тексте любого программного модуля непосредственное, т. е. просто имя процедуры с параметрами (без предварительной ссылки на объект).

Пример:

// если итоги не актуальны, то стоимости берем из временного расчета

// регистра УчетРеализации

Рег = СоздатьОбъект("Регистр.УчетРеализации");

Рег.ВременныйРасчет();

РассчитатьРегистрыНа(ТекущийДокумент());

Рег.Товар = Товар;

Рег.Клиент = Клиент;

Рег.ОстаткиПолучить();

ТекОстаток = Рег.ОстатокТовара;

ТекСтоимость = Рег.Стоимость;

ТекПродСтоимость = Рег.ПродСтоимость;

РассчитатьРегистрыПо

Рассчитать все регистры на конец события.

Синтаксис:

РассчитатьРегистрыПо(<ГраницаРасчета>, <ГрафаОтбора>)

Англоязычный синоним:

CalcRegsOnEnd

Параметры:

<ГраницаРасчета> | Выражение со значением типа дата, документ или позиция документа.
<ГрафаОтбора> | Необязательный параметр. Строковое выражение — идентификатор графы отбора, как он задан в конфигураторе. Данный параметр устанавливает режим использования определенной графы отбора. "*" — автоматический выбор графы отбора. Пустая строка — не использовать графу отбора. По умолчанию устанавливается автоматический выбор графы отбора.

Описание:

Процедура РассчитатьРегистрыПо рассчитывает все регистры, у которых установлен флаг участия во временном расчете (см. ВременныйРасчет), на момент окончания события. Если при вызове метода в параметре передана дата, то расчет временных регистров производится на конец указанной даты. Если при вызове метода в параметре передан документ, то расчет временных регистров производится на момент после проведения данного документа.

Применение данной процедуры в тексте любого программного модуля непосредственное, т. е. просто имя процедуры с параметрами (без предварительной ссылки на объект).

Пример:

// если итоги не актуальны, то стоимости берем из временного расчета

// регистра УчетРеализации

Рег = СоздатьОбъект("Регистр.УчетРеализации");

Рег.ВременныйРасчет();

РассчитатьРегистрыПо(ТекущийДокумент());

Рег.Товар = Товар;

Рег.Клиент = Клиент;

Рег.ОстаткиПолучить();

ТекОстаток = Рег.ОстатокТовара;

ТекСтоимость = Рег.Стоимость;

ТекПродСтоимость = Рег.ПродСтоимость;

Вспомогательный объект Регистры

В системе 1С:Предприятие есть возможность создавать вспомогательные объекты типа «Регистры». Использование этих объектов дает возможность преодолеть ограничение на выполнение временного расчета в один момент времени только по одному регистру каждого вида. Система позволяет выполнять параллельно временные расчеты одних и тех же регистров, но для разных объектов «Регистры». Дело в том, что регистры одного объекта воспринимаются системой независимо от регистров другого объекта.

Во всех программных модулях доступ к атрибутам и методам объекта типа «Регистры» может выполняться при помощи переменной со ссылкой на объект, который создается функцией СоздатьОбъект. Чтобы вызвать атрибут или метод объекта, имя этого атрибута или метода (с указанием необходимых параметров) пишется через точку после имени объекта. При создании объекта типа «Регистры» используется ключевое слово Регистры. Англоязычный синоним ключевого слова Регистры — Registers.

Пример:

СпецРег = СоздатьОбъект("Регистры");

Объект «Регистры» через свои атрибуты предоставляет доступ к любому виду регистра конфигурации. Методы данного объекта позволяют выполнять временный расчет именно для регистров данного объекта, независимо от реги стров другого (аналогичного) объекта.

Атрибуты объекта Регистры

<ИдентификаторРегистра>

Регистр конфигурации.

Синтаксис:

<ИдентификаторРегистра>

Описание:

Атрибут <ИдентификаторРегистра> предоставляет доступ к регистру конфигурации конкретного вида. В тексте программного модуля используется название конкретного регистра, как он назван в конфигураторе.

Пример:

СпецРег = СоздатьОбъект("Регистры");

СпецРег.УчетТоваров.СводныйОстаток(ВыбТовар, ВыбСклад, "Количество")

Методы объекта Регистры

ПолучитьАтрибут

Получить значение атрибута по идентификатору.

Синтаксис:

ПолучитьАтрибут(<ИмяАтрибута>)

Англоязычный синоним:

GetAttrib

Параметры:

<ИмяАтрибута>

Строковое выражение, содержащее идентификатор регистра конфигурации.

Возвращаемое значение:

Значение атрибута <ИмяАтрибута>.

Описание:

Метод ПолучитьАтрибут позволяет получить значение регистра по идентификатору, как он задан в метаданных.

Пример:

СпецРег = СоздатьОбъект("Регистры");

Рег = СпецРег.ПолучитьАтрибут("ОстаткиТоваров");

РассчитатьРегистрыНа

Рассчитать все временные регистры на начало события.

Синтаксис:

РассчитатьРегистрыНа(<ГраницаРасчета>, <ГрафаОтбора>)

Англоязычный синоним:

CalcRegsOnBeg

Параметры:

<ГраницаРасчета> | Выражение со значением типа дата, документ или позиция документа.
<ГрафаОтбора> | Необязательный параметр. Строковое выражение — идентификатор графы отбора, как он задан в конфигураторе. Данный параметр устанавливает режим использования определенной графы отбора. "*" — автоматический выбор графы отбора. Пустая строка — не использовать графу отбора. По умолчанию устанавливается автоматический выбор графы отбора.

Описание:

Процедура РассчитатьРегистрыНа рассчитывает для объекта типа «Регистры» все регистры, у которых установлен флаг участия во временном расчете (см. ВременныйРасчет), на момент начала события. Если при вызове метода в параметре передана дата, то расчет временных регистров производится на начало указанной даты. Если при вызове метода в параметре передан документ, то расчет временных регистров производится на момент до проведения данного документа.

Пример:

// если итоги не актуальны, то стоимости берем из временного расчета

// регистра УчетРеализации

СпецРег = СоздатьОбъект("Регистры");

Рег = СпецРег.УчетРеализации;

Рег.ВременныйРасчет();

СпецРег.РассчитатьРегистрыНа(ТекущийДокумент());

Рег.Товар = Товар;

Рег.Клиент = Клиент;

Рег.ОстаткиПолучить();

ТекОстаток = Рег.ОстатокТовара;

ТекСтоимость = Рег.Стоимость;

ТекПродСтоимость = Рег.ПродСтоимость;

РассчитатьРегистрыПо

Рассчитать все регистры на конец события.

Синтаксис:

РассчитатьРегистрыПо(<ГраницаРасчета>, <ГрафаОтбора>)

Англоязычный синоним:

CalcRegsOnEnd

Параметры:

<ГраницаРасчета> | Выражение со значением типа дата, документ или позиция документа.
<ГрафаОтбора> | Необязательный параметр. Строковое выражение — идентификатор графы отбора, как он задан в конфигураторе. Данный параметр устанавливает режим использования определенной графы отбора "*" — автоматический выбор графы отбора. Пустая строка — не использовать графу отбора. По умолчанию устанавливается автоматический выбор графы отбора.

Описание:

Процедура РассчитатьРегистрыПо рассчитывает для объекта типа «Регистры» все регистры, у которых установлен флаг участия во временном расчете (см. ВременныйРасчет), на момент окончания события. Если при вызове метода в параметре передана дата, то расчет временных регистров производится на конец указанной даты. Если при вызове метода в параметре передан документ, то расчет временных регистров производится на момент после проведения данного документа.

Пример:

// если итоги не актуальны, то стоимости берем из временного расчета

// регистра УчетРеализации

СпецРег = СоздатьОбъект("Регистры");

Рег = СпецРег.УчетРеализации;

Рег.ВременныйРасчет();

СпецРег.РассчитатьРегистрыПо(ТекущийДокумент());

Рег.Товар = Товар;

Рег.Клиент = Клиент;

Рег.ОстаткиПолучить();

ТекОстаток = Рег.ОстатокТовара;

ТекСтоимость = Рег.Стоимость;

ТекПродСтоимость = Рег.ПродСтоимость;

Актуальность

Устанавливает флаг актуальности временного расчета.

Синтаксис:

Актуальность(<ФлагАктуальности>)

Англоязычный синоним:

Actual

Параметры:

<ФлагАктуальности>

Необязательный параметр. Число: 1 — временный расчет поддерживать в актуальном состоянии; 0 — не поддерживать актуальность временного расчета. Если параметр не задан, то метод просто возвращает текущий флат актуальности не меняя его.

Возвращаемое значение:

Текущее состояние флага актуальности временного расчета. Число: 1 — временный расчет поддерживается в актуальном состоянии; 0 — не поддерживается.

Описание:

Метод Актуальность устанавливает для объекта типа «Регистры» флаг актуальности временного расчета. Если флаг установлен, то все последующие движения регистров будут изменять итоги временного расчета, а значит итоги регистров временного расчета будут все время (при проведении документа) находиться в актуальном состоянии.

Внимание. Данный метод можно использовать только в модуле проведения документа.

Пример:

// стоимости берем из временного расчета

// регистра УчетРеализации

СпецРег = СоздатьОбъект("Регистры");

СпецРег.Актуальность(1);

Рег = СпецРег.УчетРеализации;

Рег.ВременныйРасчет();

СпецРег.РассчитатьРегистрыНа(ТекущийДокумент());

Рег.Товар = Товар;

Рег.Клиент = Клиент;

Рег.ОстаткиПолучить();

ТекОстаток = Рег.ОстатокТовара;

ТекСтоимость = Рег.Стоимость;

ТекПродСтоимость = Рег.ПродСтоимость;


Part15

Глава 15
Служебные типы данных компоненты «Бухгалтерский учет»

Тип данных «ПланСчетов»

Тип данных «ПланСчетов» является служебным типом данных. Он предназначен для идентификации Плана счетов, созданного в метаданных. В основном он используется для передачи в качестве параметра различным процедурам и функциям компоненты «Бухгалтерский учет» и для выбора плана счетов в формах. Тип значения «ПланСчетов» не поддерживает никаких данных в информационной базе, а список возможных значений этого типа данных определен планами счетов созданными в конфигурации.

Значения типа «ПланСчетов» могут выступать как реквизиты диалога формы, как реквизиты документов, справочников и т. д.

Для получения значения такого типа данных используется глобальный атрибут ПланыСчетов, который имеет в свою очередь набор атрибутов типа «ПланСчетов» соответсвующих имеющимся в конфигурации планам счетов. Кроме того, глобальный атрибут ПланыСчетов имеет методы для обхода всех существующих планов счетов.

Методы типа данных «ПланСчетов»

Выбран

Проверяет наличие значения.

Синтаксис:

Выбран()

Англоязычный синоним:

Selected

Возвращаемое значение:

Числовое значение: 1 — значение не пусто; 0 — значение пусто.

Описание:

Данный метод позволяет определить — пусто значение типа «ПланСчетгт или нет.

Пример:

* ИспПланСчетов — является реквизитом диалога формы, имеет тип «План Счетов».

Если ИспПланСчетов.Выбран() = 1 Тогда

   БухИтоги.ИспользоватьПланСчетов(ИспПланСчетов);

КонецЕсли;

ПорядковыйНомер

Получить порядковый номер плана счетов.

Синтаксис:

ПорядковыйНомер()

Англоязычный синоним:

Number

Возвращаемое значение:

Числовое значение: порядковый номер плана счетов среди планов счетов конфигурации.

Описание:

Метод ПорядковыйНомер позволяет определить порядковый номер плана счетов среди планов счетов, созданных в конфигурации.

Пример:

Если ИспПланСчетов.Выбран() = 1 Тогда

   Сообщить("План счетов" + ИспПланСчетов.ПорядковыйНоиер());

КонецЕсли;

Идентификатор

Определить строку-идентификатор плана счетов как он задан в метаданных.

Синтаксис:

Идентификатор()

Англоязычный синоним:

Identifier

Возвращаемое значение:

Строка-идентификатор плана счетов как он задан в метаданных.

Описание:

Метод Идентификатор позволяет определить строку-идентификатор плана счетов как он задан в метаданных.

Пример:

Если ИспПланСчетов.Выбран() = 1 Тогда

   Сообщить(Идентификатор(ИспПланСчетов));

КонецЕсли;

Атрибут глобального контекста «ПланыСчетов»

ПланыСчетов

Атрибут глобального контекста для получения существующих значений типа «ПланСчетов».

Синтаксис:

ПланыСчетов

Англоязычный синоним:

Charts0fAccounts

Описание:

Атрибут ПланыСчетов не имеет самостоятельного смысла, а служит для получения конкретных значений типа «ПланСчетов». Атрибут всегда используется с доступными ему атрибутами и методами.

Атрибуты и методы:

Для получения конкретного значения типа «План счетов» следует через точку указать атрибут — идентификатор плана счетов.

Для получения количества существующих в конфигурации планов счетов следует через точку вызвать метод КоличествоЗначений.

Для получения значения типа «План счетов» по его номеру в метаданных, следует через точку вызвать метод ЗначениеПоНомеру(<Число>), где <Число> — номер плана счетов в метаданных.

Пример:

Сч = СоздатьОбъект("Счет");

// ...

Если Сч.ПланСчетов() = ПланыСчетов.РабПлан Тогда

   // ...

КонецЕсли;

Для Инд = 1 По ПланыСчетов.КоличествоЗначений() Цикл

   ПлСч = ПланыСчетов.ЗначениеПоНомеру(Инд);

КонецЦикла;

Методы глобального атрибута «ПланыСчетов»

Значения типа «ПланСчетов» могут выступать как реквизиты диалога формы, как реквизиты документов, справочников и т. д.

Для получения значений типа «ПланСчетов» используется глобальный атрибут ПланыСчетов, который имеет в свою очередь набор атрибутов типа «План Счетов» соответсвующих имеющимся в конфигурации планам счет Кроме того, глобальный атрибут ПланыСчетов имеет методы для обхода в существующих планов счетов.

КоличествоЗначений

Получить общее количество планов счетов.

Синтаксис:

КоличествоЗначений()

Англоязычный синоним:

Count

Возвращаемое значение:

Числовое значение: количество планов счетов конфигурации.

Описание:

Метод КоличествоЗначений применяется к атрибуту глобального контекста ПланыСчетов и позволяет определить общее количество планов счетов созданных в конфигурации.

Пример:

Для Инд=1 По ПланыСчетов.КоличествоЗначений() Цикл

   ПлСч = ПланыСчетов.ЗначениеПоНомеру(Инд);

КонецЦикла;

ЗначениеПоНомеру

Определить план счетов, по номеру в списке планов счетов конфигурации.

Синтаксис:

ЗначениеПоНомеру(<Номер>)

Англоязычный синоним:

ValueByIndex

Параметры:

<Номер>

Числовое выражение. Номер позиции плана счетов, заданный в Конфигураторе.

Возвращаемое значение:

Значение типа «План Счетов», соответствующее номеру заданной позиции.

Описание:

Метод ЗначениеПоНомеру применяется к атрибуту глобального контекста ПланыСчетов и позволяет определить план счетов, соответствующий номеру в списке планов счетов конфигурации.

Пример:

Для Инд = 1 По ПланыСчетов.КоличествоЗначений() Цикл

   ПлСч = ПланыСчетов.ЗначениеПоНомеру(Инд);

КонецЦикла

ЗначениеПоИдентификатору

Определить план счетов, по идентификатору.

Синтаксис:

ЗначениеПоИдентификатору(<Идентификатор>)

Англоязычный синоним:

ValueByIdentifier

Параметры:

<Идентификатор>

Строковое выражение. Идентификатор плана счетов, заданный в конфигураторе.

Возвращаемое значение:

Значение плана счетов, соответствующее идентификатору в метаданных. Если не найдено — то пустое значение.

Описание:

Метод ЗначениеПоИдентификатору применяется к атрибуту глобального контекста ПланыСчетов и позволяет определить план счетов, соответствующий идентификатору плана счетов конфигурации.

Пример:

ПлСч = ПланыСчетов.ЗначениеПоИдентификатору("Основной");

Тип данных «ВидСубконто»

Тип данных «ВидСубконто» является служебным типом данных. Он предназначен для идентификации самого Вида субконто. созданного в метаданных. В основном он используется для передачи в качестве параметра различным процедурам и функциям компоненты «Бухгалтерский учет» и для выбора вида субконто в формах. Тип данных «ВидСубконто» не поддерживает никаких данных в информационной базе, а список возможных значений этого типа данных определен видами субконто, созданными в конфигурации.

Значения типа «ВидСубконто» могут выступать как реквизиты диалога формы, как реквизиты документов, справочников и т. д.

Для получения значения такого типа используется глобальный атрибут ВидыСубконто, который имеет в свою очередь набор атрибутов типа «ВидСубконто» соответсвующих имеющимся видам субконто. Кроме того, глобальный атрибут ВидыСубконто имеет методы для обхода всех существующих видов субконто.

Методы типа данных «ВидСубконто»

Выбран

Проверяет наличие значения.

Синтаксис:

Выбран()

Англоязычный синоним:

Selected

Возвращаемое значение:

Числовое значение:

1 — значение не пусто;

0 — значение пусто.

Описание:

Данный метод позволяет определить — пусто значение типа «ВидСубконто» или нет.

Пример:

* ВыбВидСубк1 — является реквизитом диалога формы типа «ВидСубконто».

Если ВыбВидСубк1.Выбран() = 1 Тогда

   БухИтоги.ИспользоватьСубконто(ВыбВидСубк1);

КонецЕсли;

ПорядковыйНомер

Получить порядковый номер вида субконто.

Синтаксис:

ПорядковыйНомер()

Англоязычный синоним:

Number

Возвращаемое значение:

Числовое значение: порядковый номер вида субконто среди видов.

Описание:

Метод ПорядковыйНомер позволяет определить порядковый номер вида субконто среди видов субконто, созданных в конфигурации.

Пример:

Если ВыбВидСубк1.Выбран() = 1 Тогда

   Сообщить("Вид номер" + ВыбВидСубк1.ПорядковыйНомер());

КонецЕсли;

ТипСубконто

Получить тип субконто.

Синтаксис:

ТипСубконто()

Англоязычный синоним:

SubcontoType

Возвращаемое значение:

Строковое значение, описывающее тип субконто, например "Справочник.Контрагенты".

Описание:

Метод ТипСубконто позволяет определить тип субконто, как он определен в конфигурации.

Пример:

Сообщить("Тип субконто " + ВыбВидСубк1.ТипСубконто());

Идентификатор

Определить строку-идентификатор вида субконто как он задан в метаданных.

Синтаксис:

Идентификатор()

Англоязычный синоним:

Identifier

Возвращаемое значение:

Строка-идентификатор вида субконто как он задан в метаданных.

Описание:

Метод Идентификатор позволяет определить строку-идентификатор вида субконто как он задан в метаданных.

Пример:

Для Н=1 По ВидыСубконто.КоличествоЗначений() Цикл

   Сообщить(Идентификатор(ВидыСубконто.ЗначениеПоНомеру(Н)));

КонецЦикла;

Атрибут глобального контекста «ВидыСубконто»

ВидыСубконто

Атрибут глобального контекста для получения существующих значений типа ВидСубконто.

Синтаксис:

ВидыСубконто

Англоязычный синоним:

SubcontoKinds

Описание:

Атрибут ВидыСубконто не имеет самостоятельного смысла, а служит для получения конкретных значений типа «Вид субконто». Атрибут всегда используется с доступными ему атрибутами и методами.

Атрибуты и методы:

Для получения конкретного значения типа «Вид субконто» следует через точку указать атрибут-идентификатор вида субконто.

Для получения количества существующих в конфигурации видов субконто следует через точку вызвать метод КоличествоЗначений.

Для получения значения типа «Вид субконто» по его номеру в метаданных следует через точку вызвать метод ЗначениеПоНомеру(<Число>), где <Число> — номер вида субконто в метаданных.

Пример:

Сч = СоздатьОбъект("Счет");

Если Сч.ВидСубконто(1) = ВидыСубконто.Материалы Тогда

   // ...

КонецЕсли;

Для Инд = 1 По ВидыСубконто.КоличествоЗначений() Цикл

   ВидСк = ВидыСубконто.ЗначениеПоНомеру(Инд);

   // ...

КонецЦикла;

Методы глобального атрибута «ВидыСубконто»

Для получения значений типа «ВидСубконто» используется глобальный атрибут ВидыСубконто, который имеет в свою очередь набор атрибутов типа «ВидСубконто» соответсвующих имеющимся видам субконто. Кроме того, глобальный атрибут ВидыСубконто имеет методы для обхода всех существующих видов субконто.

КоличествоЗначений

Получить общее количество видов субконто.

Синтаксис:

КоличествоЗначений()

Англоязычный синоним:

Count

Возвращаемое значение:

Числовое значение: количество видов субконто конфигурации.

Описание:

Метод КоличествоЗначений применяется к атрибуту глобального контекста ВидыСубконто и позволяет определить общее количество видов субконто, созданных в конфигурации.

Пример:

Для Инд = 1 По ВидыСубконто.КоличествоЗначений() Цикл

   ВидСк = ВидыСубконто.ЗначениеПоНомеру(Инд);

КонецЦикла;

ЗначениеПоНомеру

Определить вид субконто, по номеру в списке видов субконто конфигурации.

Синтаксис:

ЗначениеПоНомеру(<Номер>)

Англоязычный синоним:

ValueByIndex

Параметры:

<Номер>

Числовое выражение. Номер позиции вида субконто, заданный в конфигураторе.

Возвращаемое значение:

Значение типа «ВидСубконто», соответствующее номеру заданной позиции.

Описание:

Метод ЗначениеПоНомеру применяется к атрибуту глобального контекста ВидыСубконто и позволяет определить вид субконто, соответствующий номеру в списке видов субконто конфигурации.

Пример:

Для Инд = 1 По ВидыСубконто.КоличествоЗначений() Цикл

   ВидСк = ВидыСубконто.ЗначениеПоНомеру(Инд);

КонецЦикла;

ЗначениеПоИдентификатору

Определить вид субконто, по идентификатору видов субконто конфигурации.

Синтаксис:

ЗначениеПоИдентификатору(<Идентификатор>)

Англоязычный синоним:

ValueByIdentifier

Параметры:

<Идентификатор>

Строковое выражение. Идентификатор вида субконто, заданный в конфигураторе.

Возвращаемое значение:

Значение типа «ВидСубконто», соответствующее идентификатору в метаданных. Если не найдено — то пустое значение.

Описание:

Метод ЗначениеПоИдентификатору применяется к атрибуту глобального контекста ВидыСубконто и позволяет определить вид субконто, соответствующий идентификатору видов субконто конфигурации.

Пример:

ВидСк = ВидыСубконто.ЗначениеПоИдентификатору("Контрагент");


Part16

Глава 16
работа с бухгалтерскими счетами

Счета — это агрегатный тип данных для доступа к объектам данных — бухгалтерским счетам. Бухгалтерские счета используются компонентой «Бухгалтерский учет» системы 1С:Предприятие для идентификации разрезов синтетического учета наличия и движения средств. В общем виде смысл типа данных «Счет» вполне соответвует общепринятому понятию «Счет» в бухгалтерском учете. Подробно об основных свойствах типа данных «Счет» можно ознакомиться в руководстве по конфигурированию системы 1С:Предприятие.

В конфигурации системы может быть создано несколько планов счетов. План счетов является фактически видом для значения типа «Счет». Например, реквизит диалога типа «Счет» может иметь конкретный вид (относиться к конкретному плану счетов) или быть неопределенного вида — то есть принимать значение различных планов счетов.

Структура данных для объектов типа «Счет» задается в конфигураторе и является одинаковой для всех планов счетов. Счета имеют стандартные реквизиты (код, наименование и т. д.), для которых в конфигурации настраиваются только их свойства (например, длина наименования). Кроме того, для счетов в конфигурации могут быть заданы дополнительные реквизиты. Дополнительные реквизиты могут быть периодическими, то есть иметь разные значения на разные даты.

Список счетов (план счетов) может быть многоуровневым. При этом каждый объект типа «Счет» вне зависимости от реального наличия подчиненных счетов всегда является либо конкретным счетом, либо группой. Это свойство конкретного счета задается при его создании и не изменяется в дальнейшем. При этом счета-группы не могут участвовать в проводках.

Заметим, что бухгалтерские счета внесенные в конфигураторе в метаданные не могут изменять свои основные реквизиты (код, наименование, настройки аналитического, валютного и количественного учета).

Контекст работы с бухгалтерскими счетами

В синтаксисе языка доступ к атрибутам, а также вызов методов счетов зависит от контекста выполнения программного модуля.

Если счет входит (согласно локальному контексту) в набор непосредственно Доступных модулю значений агрегатных типов данных (см. «Виды программ-йьгх модулей»), то доступ к атрибутам и вызов метода для этого счета — просто имя этого атрибута или метода с указанием необходимых параметров.

Пример:

* Модуль формы счета выполняется в контексте «Счет». Поэтому в модуп возможен непосредственный доступ к текущему счету. Например, для пои сваивания счету наименования запишем:

Наименование = "Основные средства";

Значение счета может быть получено из других источников, например, как реквизит документа. В этом случае обращение к атрибутам и методам такого документа представляет собой сложное выражение, где имена реквизитов разделяются точкой.

Пример:

* Например, в структуре документа «ПриходныйОрдер» существует реквизит «КоррСчет» типа «Счет». Тогда получить наименование счета, указанного в этом реквизите, можно следующим образом

НаименованиеСчета = Док.КоррСчет.Наименование;

В других случаях, доступ к атрибутам, вызов методов конкретного счета происходит при помощи переменной со ссылкой на объект типа «Счет». Объект создается функцией СоздатьОбъект, ссылка на который присваивается переменной. Чтобы вызвать атрибут или метод объекта, имя этого атрибута или метода (с указанием необходимых параметров) пишется через точку после имени ссылки.

При создании ссылки на объект типа «Счет» при помощи функции СоздатьОбъект в качестве типа объекта указывается слово "Счет" и может быть через точку указан вид — идентификатор плана счетов.

Полное имя типа счет записывается следующим образом:

Счет.<ВидСчета>

где <ВидСчета> — идентификатор плана счетов.

Применение ключевого слова "Счет" (без вида счета) используется для организации доступа ко всем планам счетов.

Англоязычный синоним ключевого слова Счет — Account.

Замечание: Следует обратить особое внимание, что переменная типа «Счет», созданная функцией СоздатьОбъект — это ссылка на список счетов, в отличие от переменных, содержащих само значение объекта (например, переменной может быть присвоено значение некоторого реквизита документа, который имеет тип «Счет»). Использование ссылки на список счетов, созданной при помощи функции СоздатьОбъект, существенно отличается от работы со значением типа «Счет». Только при работе со объектом-ссылкой на список счетов разрешено изменять позицию (найти-выбрать...) текущего счета в списке (т. е. осуществлять позиционирование по списку счетов), создавать новые, изменять и удалять существующие счета, С другой стороны, ссылка на список счетов не содержит собственно значения конкретного счета, которое можно присвоить чему-либо. Однако. его всегда можно получить, используя функцию ТекущийСчет.

Замечание. Объект, созданный при помощи функции СоздатьОбъект, изначально не определен, т. е. не содержит никакого значения. Чтобы начать с ним работать, его предварительно надо позиционировать (установить на конкретный счет) при помощи процедур НайтиСчет, ПолучитьСчет и т. п.

Пример:

*

Сч = СоздатьОбъект("Счет");

Сч1 = СоздатьОбъект("Счет.ОснПлан");

Сч2 = СоздатьОбъект("Счет.РабПлан");

*

//В модуле формы счета // меняем наименование счета

Наименование = "Новый счет";

*

Сч1 = СоздатьОбъект("Счет.ОснПлан");

// создаем новый счет Сч1.Новый();

Сч1.Код = "12.01";

Сч1.Записать();

Атрибуты объекта «Счет»

Код

Полный код счета.

Синтаксис:

Код

Англоязычный синоним:

Code

Описание:

Код счета в общем случае представляет собой символьную строку вида:

<Код счета>.<Код субсчета>.<Код субсчета> ...

Общая длина кода счета в системе 1С:Предприятие ограничена 255 символами. В это значение входят: код счета первого уровня, коды субсчетов всех нижележащих уровней и разделители номеров счета и субсчетов (точка). При помощи атрибута Код можно получать и задавать код счета.

Пример:

* При показе готового табличного документа (в данном примере это отчет «Карточка счета») в заголовке окна выдается наименование отчета и код счета, по которому построен отчет.

// Формирование отчета "Карточка счета"

Табл = СоздатьОбъект("Таблица");

// ...

<команды формирования отчета и выдачи секций табличного документа>

// ...

// Показ готового отчета

Табл.Показать("Карточка счета: " + Счет.Код);

Наименование

Наименование счета.

Синтаксис:

Наименование

Англоязычный синоним:

Description

Описание:

Наименование счета представляет собой произвольную строку символов. Наименование, как правило, разъясняет назначение счета. Максимальная длина наименования счета задается при редактировании свойств планов счетов в Конфигураторе.

При помощи атрибута Наименование можно получать и задавать наименование счета.

Пример:

* При показе готового табличного документа (в данном примере это отчет «Карточка счета») в заголовке окна выдается наименование отчета, код и наименование счета, по которому построен отчет.

// Формирование отчета "Карточка счета"

Табл = СоздатьОбъект("Таблица");

// ...

<команды формирования отчета и выдачи секций табличного документа>

// ...

// Показ готового отчета

Табл.Показать("Карточка счета: " + Счет.Код + " " + Счет.Наименование);

Валютный

Признак ведения валютного учета.

Синтаксис:

Валютный

Англоязычный синоним:

IsCurrency

Значение:

1 — валютный учет ведется по данному счету;

0 — валютный учет не ведется по данному счету;

Описание:

Атрибут содержит признак ведения валютного учета по счету. Изменение данного значения из языка следует производить только в особых случаях и с учетом всех особенностей настройки учета. После изменения настроек учета система может потребовать выполнить пересчет итогов.

Пример:

Сч.Валютный = 1;

Количественный

Признак ведения количественного учета.

Синтаксис:

Количественный

Англоязычный синоним:

IsAmount

Значение:

1 — количественный учет ведется по данному счету;

0 — количественный учет не ведется по данному счету;

Описание:

Атрибут содержит признак ведения количественного учета по счету. Изменение данного значения из языка следует производить только в особых случаях и с учетом всех особенностей настройки учета. После изменения настроек учета система может потребовать выполнить пересчет итогов.

Пример:

Сч.Количественный = 1;

Забалансовый

Признак забалансовости счета.

Синтаксис:

Забалансовый

Англоязычный синоним:

IsSingle

Значение:

1 — выбранный счет является забалансовым счетом;

0 — выбранный счет является балансовым счетом.

Описание:

Атрибут содержит признак того, что счет является забалансовым, то есть не участвует в двойной записи, не требует в проводках наличия корреспонденции и не может корреспондировать с балансовыми счетами. Изменение данного значения из языка следует производить только в особых случаях и с учетом всех особенностей настройки учета. После изменения настроек учета система может потребовать выполнить пересчет итогов.

Пример:

Сч.Забалансовый = 1;

Активный

Тип остатка по счету (активный, пассивный, активно-пассивный).

Синтаксис:

Активный

Англоязычный синоним:

IsActive

Значение:

1 — счет является активным;

2 — счет является пассивным;

3 — счет является активно-пассивным;

Описание:

Атрибут содержит тип остатка счета. Счет может являться активным, (остатки должны быть дебетовыми), пассивным (остатки должны быть кредитов выми), активно-пассивным (остатки могут быть дебетовыми и кредитовыми).

Данный признак влияет на способ отражения остатков по счету в итогах. Например, для активного счета, превышение кредитового оборота над дебетовым приведет к отрицательному дебетовому остатку, а для активно-пассивного — к положительному кредитовому.

По умолчанию все счета считаются активно-пассивными.

Пример:

Сч.Активный = 2;

<Реквизит>

Возвращает или задает значение дополнительного реквизита счета.

Синтаксис:

<Реквизит>

Идентификатор дополнительного реквизита счета, как он задан в конфигураторе.

Описание:

Помимо реквизитов счета, задаваемых на системном уровне (код, наименование, признаки количественного и валютного учета, и другие), в процессе конфигурирования для счета можно создать практически неограниченное число дополнительных реквизитов для хранения любой необходимой информации.

Атрибут <Реквизит> позволяет обращаться к значениям дополнительных реквизитов выбранного счета. Для обращения к конкретному реквизиту должен быть указан его идентификатор, заданный для этого реквизита в конфигураторе.

Пример:

* Для счетов определен реквизит "Ответственный" типа "Справочник.Сотрудники".

Сч = СоздатьОбъект("Счет.Основной");

Сч.ВыбратьСчета();

Пока Сч.ПолучитьСчет() = 1 Цикл

   Сч.Ответственный = ВыбСотр;

   Сообщить(Сч.Ответственный.Наименование);

   Сч.Записать();

КонецЦикла

Методы объекта «Счет»

ВыбратьСчета

Метод открывает выборку счетов из текущего плана счетов для последующей обработки.

Синтаксис:

ВыбратьСчета()

Англоязычный синоним:

SelectAccounts

Возвращаемое значение:

Число: 1 — если действие выполнено и в выборке есть хотя бы один счет; 0 — если действие не выполнено или в выборке нет ни одного счета.

Описание:

Метод ВыбратьСчета открывает выборку счетов для текущего плана счетов. Вызов данного метода позволяет затем перебрать счета. Непосредственно извлечение счетов из выборки осуществляется при помощи метода ПолучитьСчет. Счета извлекаются в порядке возрастания кода счета.

Пример:

Процедура Сформировать()

   Сч = СоздатьОбъект("Счет.Основной");

   Сч.ВыбратьСчета();

   Пока Сч.ПолучитьСчет() = 1 Цикл

      Сообщить(Сч.Код);

   КонецЦикла;

КонецПроцедуры

ПолучитьСчет

Получить из выборки следующий счет. Выборка должна быть предварительно открыта при помощи метода ВыбратьСчета.

Синтаксис:

ПолучитьСчет([<Режим>])

Англоязычный синоним:

GetAccount

Параметры:

<Режим>

Необязательный параметр. Числовое выражение — признак выборки подчиненных счетов. Может принимать значения: 0 — не включать подчиненные счета; 1 — включать подчиненные счета. По умолчанию — 1.

Возвращаемое значение:

Число: 1 — следующий счет выбран успешно; 0 — следующий счет не выбран (отсутствует).

Описание:

Метод ПолучитьСчет выбирает очередной счет из выборки, содержащей счета из плана счетов. Перед применением метода ПолучитьСчет выборка должна быть открыта при помощи метода ВыбратьСчета. Счета извлекаются в порядке возрастания кода счета.

Метод ПолучитьСчет используется для организации цикла по счетам. Условием цикла может служить равенство 1 возвращаемого значения метода: цикл выполняется, пока метод ПолучитьСчет возвращает 1.

Метод возвращает 0, когда очередной счет не выбран. Это происходит, если при предыдущем применении метода был выбран последний счет выборки.

Пример:

Процедура Сформировать()

   Сч = СоздатьОбъект("Счет.Основной");

   Сч.ВыбратьСчета();

   Пока Сч.ПолучитьСчет() = 1 Цикл

      Сообщить(Сч.Код);

   КонецЦикла;

КонецПроцедуры

УстановитьАтрибут

Установить значение реквизита по имени идентификатора.

Синтаксис:

УстановитьАтрибут(<ИмяРеквизита>, <3начение>)

Англоязычный синоним:

SetAttrib

Параметры:

<ИмяРеквизита> | Строковое выражение, содержащее имя реквизита, как оно задано в конфигураторе.
<3начение> | Выражение, содержащее устанавливаемое значение реквизита.

Описание:

Метод УстановитьАтрибут позволяет установить значение реквизита по имени идентификатора, как оно задано в конфигураторе.

Пример:

Счт.УстановитьАтрибут("ЦенаРозн", ЦенаТов);

ПолучитьАтрибут

Получить значение реквизита по имени идентификатора.

Синтаксис:

ПолучитьАтрибут(<ИмяРеквизита>)

Англоязычный синоним:

GetAttrib

Параметры:

<ИмяРеквизита>

Строковое выражение, содержащее имя реквизита, как оно задано в конфигураторе.

Возвращаемое значение:

Значение реквизита <ИмяРеквизита>.

Описание:

Метод ПолучитьАтрибут позволяет получить значение реквизита по имени идентификатора, как оно задано в конфигураторе.

Пример:

ЦенаТов = Счт.ПолучитьАтрибут("ЦенаРозн");

Выбрать

Выбрать счет из плана счетов в диалоге.

Синтаксис:

Выбрать(<Подсказка>, <ФормаСписка>)

Англоязычный синоним:

Choose

Параметры:

<Подсказка> | Необязательный параметр. Символьное выражение — текст заголовка окна диалога выбора счета. Может использоваться в качестве подсказки.
<ФормаСписка> | Необязательный параметр. Символьное выражение — идентификатор формы списка плана счетов (как он указан в конфигураторе), которая должна использоваться для выбора. Если значение пустое, то используется форма списка для выбора по умолчанию.

Возвращаемое значение:

Число: 1 — счет выбран; 0 — счет не выбран.

Описание:

Метод Выбрать вызывает на экран диалог, содержащий план счетов. Пользователь должен интерактивно выбрать требуемый счет.

Если счет выбран, метод возвращает 1 и позиционирует объект на выбранном счете.

Данный метод может использоваться только для объектов, созданных функцией СоздатьОбъект.

Пример:

Сч = СоздатьОбъект("Счет.Основной");

Сч.Выбрать("Выберите счет", "ДляВыбораВДиалоге");

НайтиПоКоду

Выполняет поиск счета в плане счетов по коду счета.

Синтаксис:

НайтиПоКоду(<КодСчета>)

Англоязычный синоним:

FindByCode

Параметры:

<КодСчета>

Символьное выражение — код счета, как он указан в плане счетов.

Возвращаемое значение:

Число: 1 — счет найден; 0 — счет не найден.

Описание:

Метод НайтиПоКоду выполняет поиск счета в плане счетов по коду счета, который передается методу в качестве параметра.

Если счет найден, метод возвращает 1 и позиционирует объект на выбранном счете.

Пример:

Сч = СоздатьОбъект("Счет.Основной");

Сч.НайтиПоКоду("01.01");

НайтиСчет

Метод выполняет поиск счета в плане счетов по значению типа «Счет».

Синтаксис:

НайтиСчет(<Счет>)

Англоязычный синоним:

FindAccount

Параметры:

<Счет>

Значение типа «Счет».

Возвращаемое значение:

Число: 1 — счет найден; 0 — счет не найден.

Описание:

Метод НайтиСчет выполняет поиск счета по значению, заданному параметром <Счет>, и позиционирует объект на выбранном счете.

Пример:

Сч = СоздатьОбъект("Счет.Основной");

Сч.НайтиСчет(ВыбСчет);

Выбран

Проверяет факт выбора счета.

Синтаксис:

Выбран()

Англоязычный синоним:

Selected

Возвращаемое значение:

Числ: 1 — если счет выбран (спозиционирован); 0 — если не выбран.

Описание:

Метод Выбран для объекта созданного функцией СоздатьОбъект определяет, спозиционирован ли объект на каком либо счете или нет, для объекта хранящего значение типа «Счет» он определяет является значение пустым или нет. Метод возвращает число со значением 1 — если счет выбран (спозиционирован) или значение не пустое, 0 — если не выбран или значение пустое.

Пример:

Сч = СоздатьОбъект("Счет.Основной");

Сч.НайтиПоКоду ("76.02");

Если Сч.Выбран() = 1 Тогда

   Сообщить("Счет найден");

КонецЕсли;

ЗаданВКонфигурации

Определяет, задан текущий счет в конфигурации или в информационной базе.

Синтаксис:

ЗаданВКонфигурации()

Англоязычный синоним:

DefinedInConfiguration

Возвращаемое значение:

Число: 1 — если счет задан в конфигурации; 0 — если счет введен в информационной базе.

Описание:

Метод ЗаданВКонфигурации определяет, задан текущий счет в конфигурации или в информационной базе.

Пример:

Сч = СоздатьОбъект("Счет.Основной");

Сч.НайтиПоКоду("76.02");

Если Сч.ЗаданВКонфигурации() = 1 Тогда

   Сообщить("Счет задан в Конфигурации ");

КонецЕсли;

Вид

Позволяет определить, к какому плану счетов относится указанный счет.

Синтаксис:

Вид()

Англоязычный синоним:

Kind

Возвращаемое значение:

Символьная строка — идентификатор плана счетов, к которому относится данный счет.

Описание:

Метод Вид позволяет определить план счетов, к которому относится данный счет. Метод возвращает идентификатор плана счетов в виде строки символов. Метод ПланСчетов позволяет получить значение типа «План счетов» к которому относится выбранный счет.

Пример:

Сч = СоздатьОбъект("Счет.Основной");

Сч.НайтиПоКоду("76.02");

Сообщить("Вид - " + Сч.Вид());

ПредставлениеВида

Определить пользовательское представление вида плана счетов.

Синтаксис:

ПредставлениеВида()

Англоязычный синоним:

KindPresent

Возвращаемое значение:

Строковое значение, содержащее пользовательское представление вида плана счетов (синоним вида плана счетов или, если он пустой, то идентификатор вида).

Описание:

Метод ПредставлениеВида позволяет получить пользовательское представление вида плана счетов, как оно задано в конфигураторе.

Пример:

// отобразим пользовательское представление в строке состояния

Сч = СоздатьОбъект("Счет.Основной");

Состояние(Сч.ПредставлениеВида());

ПланСчетов

Выдает план счетов, которому принадлежит счет.

Синтаксис:

ПланСчетов()

Англоязычный синоним:

ChartOfAccounts

Возвращаемое значение:

Значение типа «План счетов».

Описание:

Метод выдает план счетов (значение типа «План счетов»), которому принадлежит счет.

Пример:

Сч = СоздатьОбъект("Счет.Основной");

Сч.НайтиПоКоду("76.02");

Сообщить("План счетов - " + Сч.ПланСчетов());

// Выдает "План счетов - Основной"

ЭтоГруппа

Определяет, является ли данный счет группой.

Синтаксис:

ЭтоГруппа()

Англоязычный синоним:

IsGroup

Возвращаемое значение:

Число: 1 — счет является группой; 0 — счет не является группой.

Описание:

Для каждого счета при создании указывается — может ли он иметь субсчета (будет являться группой) или будет собственно счетом (не группой). Счета-группы не могут участвовать в проводках. В дальнейшем это свойство счета не изменяется.

Данная функция определяет, является счет группой (может иметь субсчета) или нет.

Пример:

Сч = СоздатьОбъект("Счет.Основной");

Сч.НайтиПоКоду("76.02");

Если Сч.ЭтоГруппа() = 1 Тогда

   Сообщить("Найдена группа");

КонецЕсли;

Уровень

Возвращает уровень вложенности текущего счета.

Синтаксис:

Уровень()

Англоязычный синоним:

Level

Возвращаемое значение:

Число — уровень вложенности счета: 1 — счета верхнего уровня.

Описание:

В системе 1С:Предприятие количество уровней вложенности субсчетов в плане счетов не ограничивается. В качестве «ограничителя» выступает величина реквизита «Максимальная длина кода счета» в окне редактирования «Планы счетов». В пределах указанной длины можно задавать произвольное количество уровней вложенности, комбинируя символы «#» и «.» в шаблоне счета.

Шаблон кода представляет собой символьную строку состоящую из символов «#» и «.». Шаблон кода схематически иллюстрирует структуру полного кода счета. Фактически, шаблон кода задает количество уровней субсчетов, которое может быть открыто к счету. Например, символьная строка вида

##.#.###

означает, что к счету могут быть открыты 2 уровня субсчетов. Метод Уровень() возвращает уровень вложенности текущего счета. Для счета верхнего уровня метод возвратит 1, для счета второго уровня — 2, и так далее.

Пример:

Сч = СоздатьОбъект("Счет.Основной");

Сч.НайтиПоКоду("76.02");

Сообщить("Уровень счета - " + Сч.Уровень());

//Возвращает — 2

ТекущийСчет

Возвращает текущее значение счета.

Синтаксис:

ТекущийСчет()

Англоязычный синоним:

CurAccount

Возвращаемое значение:

Значение типа «Счет».

Описание:

Объекты созданные функцией СоздатьОбъект не содержат собственно значения типа «Счет», так как они могут быть спозиционированы на разные счета. Метод ТекущийСчет позволяет получить значение типа «Счет» у такого объекта в соответвии с его текущей позицией. Данный метод применяется, например, если нужно счет передать как параметр в вызове какого-либо метода, или присвоить какому-либо реквизиту, или занести в проводку.

Кроме того, в контексте формы счета данный метод может выдать текущее (для открытой формы) значение типа «Счет».

Пример:

Сч = СоздатьОбъект("Счет.Основной");

Сч.НайтиПоКоду("76.02");

Если Сч.Выбран() = 1 Тогда

   Операция.Дебет.Счет = Сч.ТекущийСчет();

КонецЕсли;

ПометкаУдаления

Проверяет наличие пометки на удаление для текущего счета.

Синтаксис:

ПометкаУдаления()

Англоязычный синоним:

DeleteMark

Возвращаемое значение:

1 — счет помечен на удаление;

0 — счет не помечен на удаление.

Описание;

Метод используется для проверки, помечен ли на удаление текущий счет.

Пример:

Сч = СоздатьОбъект("Счет.Основной");

Сч.НайтиПоКоду("76.02");

Если Сч.ПометкаУдаления() = 1 Тогда

   Сообщить("Счет помечен на удаление");

КонецЕсли;

ВыборГруппы

Устанавливает или сбрасывает признак выбора группы.

Синтаксис:

ВыборГруппы([<ПризнакВыбораГруппы>])

Англоязычный синоним:

SelectGroup

Параметры:

<ПризнакВыбораГруппы>

Необязательный параметр. Числовое выражение: 1 — выбирать группы; 0 — не выбирать группы.

Возвращаемое значение:

Текущее числовое значение режима выборки групп (на момент до исполнения метода).

Описание:

Метод ВыборГруппы устанавливает режим выборки групп. Данный метод может применяться как для позиционируемых объектов, созданных функцией СоздатьОбъект, так и для элементов диалога типа «Счет» (см. «Методы элементов диалога»).

Рекомендуется отключать возможность выбора группы, если значение будет использовано для формирования проводок.

По умолчанию выбор группы разрешен, за исключением счетов дебета и кредита в проводках операции.

Режим, устанавливаемый данным методом для элементов диалога, влияет на интерактивный выбор пользователем значения типа «Счет» из списка счетов (плана счетов). Такой выбор производится вызовом метода Выбрать или нажатием кнопки выбора, если объект является элементом диалога. Установка режима позволяет разрешить или запретить пользователю выбирать счета-группы (счета, которые могут иметь субсчета). Это имеет смысл для установки режима сразу на все значения реквизита табличной части документа.

Пример:

Сч = СоздатьОбъект("Счет.Основной");

Сч.ВыборГруппы(0);

Сч.Выбрать("Выберите конкретный счет");

ПринадлежитГруппе

Определяет, является ли текущий счет субсчетом для счета, указанного в качестве параметра метода.

Синтаксис:

ПринадлежитГруппе(<Счет>)

Англоязычный синоним:

BelongsToGroup

Параметры:

<Счет>

Значение типа «Счет» — счет, к субсчетам которого проверяется принадлежность текущего счета.

Возвращаемое значение:

Число: 1 — текущий счет является субсчетом для счета, указанного в качестве параметра; 0 — текущий счет не является субсчетом для счета, указанного в качестве параметра.

Описание:

Метод ПринадлежитГруппе позволяет проверить, является ли текущий счет субсчетом для счета, переданного в качестве параметра метода. Проверка выполняется по всем вышестоящим уровням счета.

Пример:

Сч = СоздатьОбъект("Счет.Основной");

Сч.НайтиПоКоду("76.02");

Если Сч.ПринадлежитГруппе(СчетПоКоду("76")) = 1 Тогда

   Сообщить("Счет принадлежит группе");

КонецЦикла;

КоличествоСубконто

Определяет количество субконто у текущего счета.

Синтаксис:

КоличествоСубконто()

Англоязычный синоним:

SubcontoCount

Возвращаемое значение:

Число — количество видов субконто у текущего счета.

Описание:

Максимальное количество видов субконто, которое можно «прикрепить» к счету, устанавливается в конфигураторе при редактировании свойств планов счетов. Количество субконто, которое реально прикреплено к счету, не может превышать установленного максимального количества.

Метод КоличествоСубконто служит для определения количества видов субконто, прикрепленных к текущему счету в плане счетов.

Необходимо обратить внимание, что все виды субконто, прикрепленные к счету в плане счетов, имеют порядковые номера. Эти номера выдаются в названиях колонок видов субконто в окне редактирования плана счетов; «Субконто1», «Субконто2» ... «Субконто6».

При задании видов субконто для счета их обязательно «выстраивать» по порядку один за другим: например, к счету могут быть прикреплены субконто таким образом, что их порядковые номера будут 1 и 2. Метод КоличествоСубконто возвращает общее количество видов субконто, прикрепленное к счету (в данном примере — 2), а не максимальное количество возможных видов субконто у счета.

Пример:

Сч = СоздатьОбъект("Счет.Основной");

Сч.НайтиПоКоду("76.02");

Для Инд = 1 По Сч.КоличествоСубконто() Цикл

   Сообщить("Субконто " + Сч.ВидСубконто(Инд));

КонецЦикла;

ВидСубконто

Устанавливает/возвращает вид субконто счета.

Синтаксис:

ВидСубконто(<НомерСубконто>, <ВидСубконто>, <ТолькоОбороты>)

Англоязычный синоним:

SubcontoKind

Параметры:

<НомерСубконто> | Числовое выражение — порядковый номер субконто счета.
<ВидСубконто> | Необязательный параметр. Значение типа «Вид субконто», которое должно быть установлено.
<ТолькоОбороты> | Необязательный параметр. Числовое значение: 1 или 0. Данный параметр снимает или устанавливает флаг «Только обороты» для данного субкон-то счета. Если параметр не используется, то флаг «Только обороты» не меняется.

Возвращаемое значение:

Значение типа «Вид субконто».

Описание:

К любому счету или субсчету в плане счетов может быть «прикреплено» до 5 видов субконто. Максимальное количество видов субконто, которое можно «прикрепить» к счету, устанавливается в конфигураторе при редактировании свойств планов счетов. Количество субконто, которое реально прикреплено к счету, не превышает установленного максимального количества. Все виды субконто, прикрепленные к счету в плане счетов, имеют порядковые номера. Эти номера выдаются в названии колонок для видов субконто в окне редактирования плана счетов; «Субконто!», «Субконто2» ... «Субконто5».

Метод ВидСубконто при использовании его без второго параметра возвращает значение типа «ВидСубконто», имеющего порядковый номер, переданный в качестве первого параметра.

Метод ВидСубконто при вызове со вторым параметром устанавливает у счета вид субконто, имеющего порядковый номер, переданный в качестве первого параметра.

Применение данного метода следует производить только в особых случаях и с учетом всех особенностей настройки учета. После изменения настроек учета система может потребовать выполнить пересчет итогов.

Пример:

Сч = СоздатьОбъект("Счет.Основной");

Сч.НайтиПоКоду("76.02");

Для Инд = 1 По Сч.КоличествоСубконто() Цикл

   Сообщить("Субконто " + Сч.ВидСубконто(Инд));

КонецЦикла;

ТолькоОбороты

Устанавливает/возвращает значение флага «Только обороты» субконто счета.

Синтаксис:

ТолькоОбороты(<НомерСубконто>, <ТолькоОбороты>]

Англоязычный синоним:

TurnoversOnly

Параметры:

<НомерСубконто> | Числовое выражение — порядковый номер субконто счета.
<ТолькоОбороты> | Необязательный параметр. Числовое значение: 1 или 0. Данный параметр снимает или устанавливает флаг «Только обороты» для данного субконто счета. Если параметр не используется, то флаг «Только обороты» не меняется.

Возвращаемое значение:

Значение флага «Только обороты» на момент до использования метода: 1 — флаг установлен; 0 — флаг не установлен.

Описание:

К любому счету или субсчету в плане счетов может быть «прикреплено» до 5 видов субконто. Максимальное количество видов субконто, которое можно «прикрепить» к счету, устанавливается в конфигураторе при редактировании свойств планов счетов. Все виды субконто, прикрепленные к счету в плане счетов, имеют порядковые номера. Для субконто может быть установлен флаг «Только обороты», который устанавливает для данного субконто использование только для оборотов по счету, а не для остатков.

Применение данного метода следует производить только в особых случаях и с учетом всех особенностей настройки учета. После изменения настроек учета система может потребовать выполнить пересчет итогов.

Пример:

Сч = СоздатьОбъект("Счет.Основной");

Сч.НайтиПоКоду("76.02");

Для Инд = 1 По Сч.КоличествоСубконто() Цикл

   Сообщить("Субконто " + Сч.ВидСубконто(Инд) +

         ?(Сч.ТолькоОбороты(Инд) = 1, "(об.)", ""));

КонецЦикла;

УчетПоСумме

Устанавливает/возвращает значение флага «Учет по сумме» субконто счета.

Синтаксис:

УчетПоСумме(<НомерСубконто>, <УчетПоСумме>)

Англоязычный синоним:

AccountingBySum

Параметры:

<НомерСубконто> | Числовое выражение — порядковый номер субконто счета.
<УчетПоСумме> | Необязательный параметр. Числовое значение: 1 или 0. Данный параметр снимает или устанавливает флаг «Учет по сумме» для данного субконто счета. Если параметр не используется, то флаг «Учет по сумме» не меняется.

Возвращаемое значение:

Значение флага «Учет по сумме» на момент до использования метода: 1 — флаг установлен; 0 — флаг не установлен.

Описание:

Все виды субконто, прикрепленные к счету в плане счетов, имеют порядковые номера. Для субконто может быть установлен флаг «Учет по сумме», который устанавливает для данного субконто счета режим использования учета по сумме.

Применение данного метода для изменения флага учета следует производить только в особых случаях и с учетом всех особенностей настройки учета. После изменения настроек учета система может потребовать выполнить пересчет итогов.

Пример:

Сч = СоздатьОбъект("Счет.Основной");

Сч.НайтиПоКоду("76.02");

Для Инд = 1 По Сч.КоличествоСубконто() Цикл

   Сообщить("Субконто " + Сч.ВидСубконто(Инд) +

        ? (Сч.УчетПоСумме(Инд) = 1, "(об.)", ""));

КонецЕсли;

УчетПоВалютнойСумме

Устанавливает/возвращает значение флага «Учет по валютной сумме» субконто счета.

Синтаксис:

УчетПоВалютнойСумме(<НомерСубконто>, <УчетПоСумме>)

Англоязычный синоним:

AccountingByCurrencySum

Параметры:

<НомерСубконто> | Числовое выражение — порядковый номер субконто счета.
<УчетПоСумме> | Необязательный параметр. Числовое значение: 1 или 0. Данный параметр снимает или устанавливает флаг «Учет по валютной сумме» для данного субконто счета. Если параметр не используется, то флаг «Учет по валютной сумме» не меняется.

Возвращаемое значение:

Значение флага «Учет по валютной сумме» на момент до использования метода: 1 — флаг установлен; 0 — флаг не установлен.

Описание:

Все виды субконто, прикрепленные к счету в плане счетов, имеют порядковые номера. Для субконто может быть установлен флаг «Учет по валютной сумме», который устанавливает для данного субконто счета режим использования учета по валютной сумме.

Применение данного метода для изменения флага учета следует производить только в особых случаях и с учетом всех особенностей настройки учета. После изменения настроек учета система может потребовать выполнить перелет итогов.

Пример:

Сч = СоздатьОбъект("Счет.Основной");

Сч.НайтиПоКоду("76.02");

Для Инд = 1 По Сч.КоличествоСубконто() Цикл

   Сообщить("Субконто " + Сч.ВидСубконто(Инд) +

        ?(Сч.УчетПоВалютнойСумме(Инд) = 1, "(об.)", ""));

КонецЕсли;

УчетПоКоличеству

Устанавливает/возвращает значение флага «Учет по количеству» субконто счета.

Синтаксис:

УчетПоКоличеству(<НомерСубконто>, <УчетПоКоличеству>)

Англоязычный синоним:

AccountingByAmount

Параметры:

<НомерСубконто> | Числовое выражение — порядковый номер субконто счета.
<УчетПоКоличеству> | Необязательный параметр. Числовое значение: 1 или 0. Данный параметр снимает или устанавливает флаг «Учет по количеству» для данного субконто счета. Если параметр не используется, то флаг «Учет по количеству» не меняется.

Возвращаемое значение:

Значение флага «Учет по количеству» на момент до использования метода: 1 — флаг установлен; 0 — флаг не установлен.

Описание:

Все виды субконто, прикрепленные к счету в плане счетов, имеют порядковые номера. Для субконто может быть установлен флаг «Учет по количеству», который устанавливает для данного субконто счета режим использования учета по количеству.

Применение данного метода для изменения флага учета следует производить только в особых случаях и с учетом всех особенностей настройки учета. После изменения настроек учета система может потребовать выполнить пересчет итогов.

Пример:

Сч = СоздатьОбъект("Счет.Основной");

Сч.НайтиПоКоду("76.02");

Для Инд = 1 По Сч.КоличествоСубконто() Цикл

   Сообщить("Субконто " + Сч.ВидСубконто(Инд) +

           ?(Сч.УчетПоКоличеству(Инд) = 1, "(об.)", ""));

КонецЕсли;

ИспользоватьДату

Установить дату выборки периодических реквизитов счета.

Синтаксис:

ИспользоватьДату(<Дата>)

Англоязычный синоним:

UseDate

Параметры:

<Дата>

Необязательный параметр. Выражение типа «дата».

Возвращаемое значение:

Текущее значение используемой даты (на момент до исполнения метода). Описание:

Метод ИспользоватьДату устанавливает для объекта типа «Счет» дату, на которую будут в дальнейшем выбираться (или записываться) значения периодических реквизитов счета.

Данный метод, используется обычно, если нужно обращаться сразу к не-сколькитм периодическим реквизитам спозиционированного объекта. Для одиночных обращений рекомендуется использовать методы периодического реквизита счета Получить(<Дата>) и Установить(<Дата>, <3начение>) .

Замечание: Если к объекту типа «Счет» однажды применен метод ИспользоватьДату, то в дальнейшем, чтобы выбирать значения периодических реквизитов, нельзя применять к этому же объекту методы Получить и Установить, т. е. в такой последовательности эти методы несовместимы.

Замечание: Метод ИспользоватьДату устанавливает дату выборки для данного объекта. В случае, если обращение к объекту типа счет выполняется по длинному пути (например, Клиент.СчетУчета.СтатусУчета) значение типа «Счет» создается динамически и после первого обращения к нему с вызовом метода ИспользоватьДату уничтожается, поэому при повторном обращении для получении значения реквизита данная установка уже действовать не будет.

Замечание: Метод ИспользоватьДату должен быть вызван до позиционирования объекта. В этом случае после позиционирования периодические реквизиты будут выдаваться на указанную дату.

Пример:

* Выведем список счетов со значением периодического реквизита "СтатусУчета".

Процедура Сформировать()

   Сч = СоздатьОбъект("Счет.Основной");

   Сч.ИспользоватьДату(РабочаяДата());

   Сч.ВыбратьСчета();

   Пока Сч.ПолучитьСчет() = 1 Цикл

      Сообщить("Статус учета " + Сч.Код + " - " + Сч.СтатусУчета);

   КонецЦикла;

КонецПроцедуры

ИспользоватьПланСчетов

Устанавливает план счетов, который будет использован объектом.

Синтаксис:

ИспользоватьПланСчетов(<ПланСчетов>)

Англоязычный синоним:

UseChartOfAccounts

Параметры:

<ПланСчетов>

Значение типа «План Счетов».

Возвращаемое значение:

Значение типа «План Счетов». Текущее значение на момент до исполнения метода.

Описание:

Данный метод выдает и устанавливает для объекта план счетов, который будет использован им в дальнейшем для поиска, выбора, обхода счетов.

Метод ИспользоватьПланСчетов имеет смысл использовать в том случае, если объект создан функцией СоздатьОбъект для работы с разными планами счетов — СоздатьОбъект("Счет"). Если объект был создан для работы с конкретным планом счетов, то все операции поиска и обхода счетов будут работать только с этим планом счетов.

Пример:

Процедура Сформировать()

   Сч = СоздатьОбъект("Счет");

   Сч.ИспользоватьПланСчетов(ПланыСчетов.Основной);

   Сч.ВыбратьСчета();

   Пока Сч.ПолучитьСчет() = 1 Цикл

      Сообщить("Счет " + Сч.Код);

   КонецЦикла;

КонецПроцедуры

Родитель

Выдает счет вышестоящего уровня.

Синтаксис:

Родитель(<НомерУровня>)

Англоязычный синоним:

Параметры:

<НомерУровня>                Необязательный параметр. Число — номер уровня. Определяет какого уровня вышестоящий счет должен быть выдан. Если параметр не указан -выдается непосредственный родитель.

Возвращаемое значение:

Значение типа «Счет». Счет вышестоящего уровня данного счета.

Описание:

При наличии в плане счетов нескольких уровней счетов-субсчетов данный метод позволяет получить счет вышестоящего уровня выбранного счета. Если параметр не задан, выдается непосредственный родитель, если задан — родитель указанного уровня.

Пример:

Сч = СоздатьОбъект("Счет.Основной");

Сч.НайтиПоКоду("76.02");

Сообщить("Родитель " + Сч.Родитель());

//Возвращает "Родитель 76"

ИспользоватьРодителя

Устанавливает/выдает значение родителя (счета вышестоящего уровня), используемого для выборки счетов.

Синтаксис:

ИспользоватьРодителя(<Родитель>, <ФлагИзменения>)

Англоязычный синоним:

UseParent

Параметры:

<Родитель> | Значение типа «Счет», устанавливаемое в качестве используемого родителя. Необязательный параметр. Если параметр не указан — значение используемого родителя не изменяется.
<ФлагИзменения> | Необязательный параметр. Этим флагом регулируется возможность интерактивного изменения родителя. 1 — пользователь может изменить родителя интерактивно, 0 — пользователь не может интерактивно изменить родителя.

Возвращаемое значение:

Значение типа «Счет». Текущее значение используемого родителя на момент до исполнения метода.

Описание:

При наличии в плане счетов нескольких уровней счетов-субсчетов при переборе или выборе счета существует возможность отбирать только счета подчиненные некоторому счету. Метод ИспользоватьРодителя устанавливает значение, которе будет затем использовано методами перебора и выбора счета.

Пример:

Процедура Сформировать ()

   Сч = СоздатьОбъект("Счет.Основной");

   Сч.ИспользоватьРодителя(СчетПоКоду("01"));

   Сч.ВыбратьСчета();

   Пока Сч.ПолучитьСчет(0) = 1 Цикл

      Сообщить(Сч.Код);

   КонецЦикла;

КонецПроцедуры

КодСубсчета

Выдает код счета без кодов счетов вышестоящих уровней.

Синтаксис:

КодСубсчета()

Англоязычный синоним:

SubAccountCode

Возвращаемое значение:

Строковое значение — код счета без кодов счетов вышестоящих уровней.

Описание:

При наличии в плане счетов нескольких уровней счетов-субсчетов атрибут "Код" объекта типа «Счет» содержит полный код счета с учетом всех вышестоящих счетов через разделитель (точку). Метод КодСубсчета выдает собственно код даного счета без кодов счетов вышестоящих уровней.

Пример:

Сч = СоздатьОбъект("Счет.Основной");

Сч.НайтиПоКоду("76.02");

Сообщить("Код счета " + Сч.Код); //Возвращает "76.02"

Сообщить("Код Субсчета " + Сч.КодСубсчета); //Возвращает "76"

Блокировка

Установить/прочитать режим блокировки.

Синтаксис:

Блокировка(<ВклВыкл>)

Англоязычный синоним:

Locking

Параметры:

<ВклВыкл>

Необязательный параметр. Число: 1 — включить; 0 — выключить.

Возвращаемое значение:

Если при вызове метода параметр <ВклВыкл> не задан, то возвращается Режим блокировки до выполнения метода. Число: 1 — заблокирован; 0 — свободен.

Если при вызове метода параметр <ВклВыкл> задан, то возвращается результат выполнения метода блокировки. Число: 1 — успешно; 0 — не получилось.

Описание:

Метод Блокировка позволяет установить/прочитать режим блокировки.

Пример:

Блокировка(0);

Новый

Создает новый счет.

Синтаксис:

Новый(<ЕстьСубсчета>)

Англоязычный синоним:

New

Параметры:

<ЕстьСубсчета>

Числовое выражение — признак наличия субсчетов у создаваемого счета. Может принимать значения:

0 — счет не будет иметь субсчета;

1 — счет будет иметь субсчета.

По умолчанию 0;

Описание:

Создает новый счет. При добавлении нового счета необходимо указать, будет ли счет иметь субсчета. То есть будет он являться собственно счетом или группой.

Если счет будет иметь субсчета, то такой счет нельзя будет указать в качестве корреспондирующего счета при вводе проводок — необходимо будет указывать субсчета этого счета. Иначе, если счет не будет иметь субсчетов, его можно указывать при вводе проводок.

Однако, если для счета, для которого было указано отсутствие субсчетов, все-таки введен субсчет, то система 1С:Предприятие выполнит следующее:

· Будет создан новый счет (группа) с тем же кодом;

· Код данного счета будет дополнен субсчетом 0;

В дальнейшем код субсчета 0 можно будет изменить на другой.

Замечание. Метод Новый сам по себе не выполняет запись нового счета в информационную базу, для внесения нового счета в список счетов, следует выполнить метод Записать.

Пример:

Сч = СоздатьОбъект("Счет.Основной");

Сч.Новый();

Сч.Код = "76.02";

Сч.Записать();

НазначитьТип

Назначить тип для реквизита неопределенного вида.

Синтаксис:

НазначитьТип(<ИмяРеквизита>, <ИмяТипа>, <Длина>, <Точность>)

Англоязычный синоним:

SetType

Параметры:

<ИмяРеквизита> | Строковое выражение — название реквизита счета неопределенного типа, как он назван в конфигураторе.
<ИмяТипа> | Строковое выражение — название типа данных (или Вид субконто), который назначается реквизиту счета. Например: "Строка", "Число", "Справочник.Товары", "Документ. РасходнаяНакладная" и т. п.
<Длина> | Необязательный параметр. Числовое выражение — длина поля представления данных. Имеет смысл только при задании числового или строкового типа.
<Точность> | Необязательный параметр. Числовое выражение — число знаков числа после десятичной точки. Имеет смысл только при задании числового типа.

Описание:

Метод НазначитьТип позволяет назначить тип для реквизита, которому в конфигураторе назначен тип «Неопределенный».

Пример:

ВыбСчет.НазначитьТип("ТМЦ", "Справочник.Товары");

Записать

Записывает изменения счета.

Синтаксис:

Записать()

Англоязычный синоним:

Write

Описание:

Метод Записать выполняет запись (обновление) счета. Все изменения сделанные в существующем счете, или созданном счете будут занесены в информационную базу только после вызова метода Записать.

Замечание. Если этот метод применяется в Модуле формы счета непосредственно к счету локального контекста, то данный метод отрабатывает те же действия, как интерактивное нажатие пользователем кнопки с формулой "#Записать".

Пример:

Сч = СоздатьОбъект("Счет.Основной");

Сч.НайтиПоКоду("76.02");

Сч.Наименование = "Прочие взаиморасчеты";

Сч.Записать();

Удалить

Удаляет счет из плана счетов.

Синтаксис:

Удалить(<Режим>)

Англоязычный синоним:

Delete

Параметры:

<Режим>

Числовое выражение: 1 — непосредственное удаление; 0 — пометка на удаление. По умолчанию 1;

Описание:

Метод Удалить удаляет (или помечает на удаление) текущий счет. Данный метод может использоваться только для объектов, созданных функцией СоздатьОбъект.

Замечание. Непосредственное удаление объекта следует применять только в особых случаях, так как счет может участвовать в проводках и непосредственное удаление может повлечет нарушение в бухгалтерском учете.

Пример:

Сч = СоздатьОбъект("Счет.Основной");

Сч.НайтиПоКоду("76.02");

Сч.Удалить(0);

СнятьПометкуУдаления

Снять пометку удаления счета.

Синтаксис:

СнятьПометкуУдаления()

Англоязычный синоним:

ClearDeleteMark

Описание:

Метод СнятьПометкуУдаления снимает пометку удаления текущего счета.

Данный метод может использоваться только для объектов, созданных функцией СоздатьОбъект.

Пример:

Сч = СоздатьОбъект("Счет.Основной");

Сч.НайтиПоКоду("76.02");

Сч.СнятьПометкуУдаления();

Методы контекста Модуля формы списка счетов

Описанные в данном разделе методы доступны только в контексте Модуля формы списка счетов (см. «Виды программных модулей»).

ИспользоватьДату

Установить дату выборки периодических реквизитов формы списка счетов.

Синтаксис:

ИспользоватьДату(<Дата>)

Англоязычный синоним:

UseDate

Параметры:

<Дата>

Выражение со значением типа «дата»

Возвращаемое значение:

Значение даты выборки периодических реквизитов формы списка счетов.

Описание:

Метод ИспользоватьДату устанавливает для формы списка счетов дату, на которую будут в дальнейшем выбираться (или записываться) значения периодических реквизитов справочника.

Данный метод доступен только в контексте Модуля формы списка счетов (см. «Виды программных модулей»). Действие данного метода относится только к текущему справочнику, который доступен в локальном контексте Модуля формы списка счетов.

Пример:

ИспользоватьДату(РабочаяДата());

ИспользоватьПланСчетов

Установить (получить) текущий план счетов формы списка счетов.

Синтаксис:

ИспользоватьПланСчетов(<ПланСчетов>)

Англоязычный синоним:

UseChartOfAccounts

Параметры:

<ПланСчетов>

Значение типа «ПланСчетов».

Возвращаемое значение:

Значение текущего плана счетов формы до вызова метода.

Описание:

Метод ИспользоватьПланСчетов устанавливает текущий план счетов в форме списка счетов, если форма открыта для просмотра нескольких планов счетов. Если параметр не задан, то метод позволяет получить текущий план счетов.

Данный метод доступен в контексте Модуля формы списка счетов (см. «Виды программных модулей»).

Пример:

Процедура Печать()

   Сч = СоздатьОбъект("Счет");

   Сч.ИспользоватьПланСчетов(ИспользоватьПланСчетов());

КонецПроцедуры;

ИспользоватьРодителя

Установить родителя для формы списка счетов.

Синтаксис:

ИспользоватьРодителя(<Родитель>, <ФлагИзменения>)

Англоязычный синоним:

UseParent

Параметры:

<Родитель> | Выражение со значением счета.
<ФлагИзменения> | Необязательный параметр. Этим флагом регулируется возможность интерактивного изменения родителя. 1 — пользователь может изменить родителя интерактивно, 0 — пользователь не может интерактивно изменить родителя.

Возвращаемое значение:

Значение родителя для формы списка счетов (до применения метода).

Описание:

Метод ИспользоватьРодителя устанавливает счет в качестве основного для формы списка счетов (показываются субсчета выбранного счета).

Данный метод доступен в контексте Модуля формы списка счетов (см. «Виды программных модулей»). Действие данного метода относится ко всему текущему списку счетов, который доступен в локальном контексте Модуля формы списка счетов.

При добавлении нового субсчета текущего плана счетов данный параметр также будет являться свойством нового субсчета.

Пример:

ИспользоватьРодителя(ВыбСчет, 1);

ИспользоватьКорСчет

Установить счет для показа списка корреспондирующих счетов.

Синтаксис:

ИспользоватьКорСчет(<Счет>, <Корреспонденция>)

Англоязычный синоним:

UseCorAccount

Параметры:

<Счет> | Выражение со значением счета.
<Корреспонденция> | Число: 1 — дебетовый счет; 0 — кредитовый счет.

Описание:

Метод ИспользоватьКорСчет устанавливает счет для показа списка корреспондирующих с ним счетов. Корреспондирующие счета задаются с помощью корректных проводок.

Данный метод доступен в контексте Модуля формы списка счетов (см. «Виды программных модулей»). Действие данного метода относится ко всему текущему списку счетов, который доступен в локальном контексте Модуля формы списка счетов.

Пример:

ИспользоватьКорСчет(ВыбСчет, 1);

ИерархическийСписок

Установить режим иерархического списка счетов.

Синтаксис:

ИерархическийСписок(<ФлагИерархСписка>, <ФлагИзменения>)

Англоязычный синоним:

HierarchicalList

Параметры:

<ФлагИерархСписка> | Флаг иерархического списка. 1 — иерархический список; 0 — неиерархический список.
<ФлагИзменения> | Необязательный параметр. Этим флагом регулируется возможность интерактивного изменения флага иерархического списка. 1 — пользователь может изменить иерархичность интерактивно, 0 — пользователь не может интерактивно изменить иерархичность.

Возвращаемое значение:

Значение флага иерархического списка для формы списка счетов (до применения метода).

Описание:

Метод ИерархическийСписок устанавливает режим иерархического списка счетов.

Данный метод доступен в контексте Модуля формы списка счетов (см. «Виды программных модулей»). Действие данного метода относится ко всему текущему списку счетов, который доступен в локальном контексте Модуля формы списка счетов.

Пример:

ИерархическийСписок(1, 1);

РедактироватьВДиалоге

Установить способ редактирования счета.

Синтаксис:

РедактироватьВДиалоге(<Способ>, <Разрешение>)

Англоязычный синоним:

EditInForm

Параметры:

<Способ> | Необязательный параметр. Способ редактирования счета: 1 — в диалоге; 0 — в строке.
<Разрешение> | Необязательный параметр. Флаг разрешения пользователю менять способ редактирования: 1 —разрешить; 0 — запретить.

Возвращаемое значение:

Значение установленного на данный момент способа счета (до применения метода).

Описание:

Метод РедактироватьВДиалоге устанавливает способ редактирования счета.

Данный метод доступен в контексте Модуля формы списка счетов. Действие данного метода относится ко всему текущему списку счетов, который доступен в локальном контексте Модуля формы списка.

Пример:

ТекСп = РедактироватьВДиалоге();

// какой сейчас способ?

РедактироватьВДиалоге(1);

// установить редактирование в диалоге

РедактироватьВДиалоге(1, 0);

// установить редактирование в диалоге и запретить его менять

ВыборГруппы

Устанавливает или сбрасывает признак выбора группы.

Синтаксис:

ВыборГруппы([<ФлагВыбораГруппы>])

Англоязычный синоним:

SelectGroup

Параметры:

<ФлагВыбораГруппы>

Необязательный параметр. Числовое выражение: 1 — выбирать группы; 0 — не выбирать группы.

Возвращаемое значение:

Текущее числовое значение режима выборки групп (на момент до исполнения метода).

Описание:

Метод ВыборГруппы устанавливает режим выборки групп для формы списка счетов, которая открыта в режиме выбора или подбора счета. Открытие такой формы списка счетов обычно производится вызовом метода Выбрать или нажатием кнопки выбора, если выбираемый счет является элементом диалога.

По умолчанию выбор группы разрешен. Режим, устанавливаемый данным методом для списка счетов, влияет на интерактивный выбор пользователем значения типа «Счет» из списка счетов (плана счетов). Установка режима позволяет разрешить или запретить пользователю выбирать счета-группы (счета, которые могут иметь субсчета).

Пример:

ВыборГруппы(0);

Предопределенные процедуры модуля формы списка счетов

Описанные в данном разделе системные предопределенные процедуры должны располагаться только в Модулях форм списка счетов (см. «Виды программных модулей»).

В основном, данные процедуры предназначены для расширения возможности программного управления правами доступа к системе.

Предопределенные процедуры не является встроенными процедурами языка. Для них зарезервированы только название и синтаксис. Тело процедур должно быть написано самим разработчиком в соответствующих программных модулях. Вызов предопределенных процедур на исполнение производится в системе 1С:Предприятие неявно при возникновении соответствующего события. Описание предопределенных процедур также см. гл. «Системные предопределенные процедуры».

ПриВводеСтроки

Предопределенная процедура при вводе новой строки списка счетов

Синтаксис:

ПриВводеСтроки()

Англоязычный синоним:

OnNewLine

Описание:

Вызов предопределенной процедуры ПриВводеСтроки производится в системе 1С:Предприятие при интерактивном вводе новой строки (до начала ввода) в форме списка счетов. Если в данной предопределенной процедуре установить статус возврата 0 (например, если данному пользователю нельзя вводить новые строки списка счетов), то новая строка списка счетов не будет инициирована.

Данная предопределенная процедура может располагаться в Модуле формы списка счетов (см. «Виды программных модулей»).

Пример:

Процедура ПриВводеСтроки()

   Если НазваниеНабораПрав() = "Оператор" Тогда

      Предупреждение("У вас нет права добавлять счета!", 2);

      СтатусВозврата(0);

   КонецЕсли;

КонецПроцедуры

См. также: СтатусВозврата

ПриРедактированииНовойСтроки

Предопределенная процедура при редактировании новой строки списка счетов.

Синтаксис:

ПриРедактированииНовойСтроки()

Англоязычный синоним:

OnEditNewLine

Описание:

Вызов предопределенной процедуры ПриРедактированииНовойСтроки производится в системе 1С:Предприятие в момент начала интерактивного редактирования новой строки списка счетов (после того, как новая строка уже заведена). Данная процедура может использоваться, например, для установки начальных значений (значений по умолчанию) характеристик нового счета. В данной предопределенной процедуре установка статуса возврата не имеет смысла, т. к. отказаться от ввода новой строки в этот момент уже невозможно.

Данная предопределенная процедура может располагаться в Модуле формы списка счетов (см. «Виды программных модулей»).

Пример:

Процедура ПриРедактированииНовойСтроки()

   СтатусСчета = ОснСтатусСчетов;

КонецПроцедуры

ПриНачалеРедактированияСтроки

Предопределенная процедура при начале редактирования существующей строки списка счетов.

Синтаксис:

ПриНачалеРедактированияСтроки()

Англоязычный синоним:

OnStartEditLine

Описание:

Вызов предопределенной процедуры ПриНачалеРедактированияСтроки производится в системе 1С:Предприятие в момент начала интерактивного редактирования существующей строки списка счетов (кроме новой). Если в данной предопределенной процедуре установить статус возврата 0 (например, если данному пользователю нельзя изменять характеристики бухгалтерских счетов), строка не будет изменена.

Данная предопределенная процедура может располагаться в Модуле формы списка счетов (см. «Виды программных модулей»).

Пример:

Процедура ПриНачалеРедактированияСтроки()

   Если НазваниеНабораПрав() = "Оператор" Тогда

      Предупреждение("У вас нет права менять счета!", 2);

      СтатусВозврата(0);

   КонецЕсли;

КонецПроцедуры

См. также: СтатусВозврата

ПриВыбореРодителя

Предопределенная процедура выбора родительской группы счета.

Синтаксис:

ПриВыбореРодителя(<Счет>)

Англоязычный синоним:

OnSetParent

Параметры:

<Счет>

Значение счета, который интерактивно установлен в качестве родителя.

Описание:

Вызов предопределенной процедуры ПриВыборе Родителя производится в системе 1С:Предприятие при интерактивной смене родительской группы счета (выбор следующего или предыдущего уровня). Если в данной предопределенной процедуре установить статус возврата — 0, то выбор родительской группы не будет произведен.

Данная предопределенная процедура может располагаться только в Модуле формы списка счетов.

Пример:

Процедура ПриВыбореРодителя(Родитель)

   Если НазваниеНабораПрав() = "Продавец" Тогда

      Если Родитель = ЗапрещеннаяГруппа Тогда

         Предупреждение("Вам запрещено изменять счет!", 2);

         СтатусВозврата(0);

      КонецЕсли;

   КонецЕсли;

КонецПроцедуры

См. также: СтатусВозврата

ПриЗаписи

Предопределенная процедура при записи строки списка счетов.

Синтаксис:

ПриЗаписи(<СписокПериодРекв>)

Англоязычный синоним:

OnWrite

Параметры:

<СписокПериодРекв>

Строковое значение — список разделенных запятыми изменяемых периодических реквизитов счета. В данный параметр система 1С:Предприятие передает перечень периодических реквизитов, которые были интерактивно выбраны пользователем для обновления в окне диалога выбора.

Описание:

Вызов предопределенной процедуры ПриЗаписи производится системой 1С:Предприятие при интерактивной записи строки списка счетов. Если в данной предопределенной процедуре установить статус возврата 0 (например, если данному пользователю нельзя изменять некоторые характеристики счета), то запись строки списка счетов не будет выполнена.

Формальный параметр <СписокПериодРекв> используется в теле процедуры для обработки ситуаций изменений периодических реквизитов счета.

Данная предопределенная процедура может располагаться в следующих программных модулях: модуль формы счета, модуль формы списка счетов, (см. «Виды программных модулей»).

Пример:

Процедура ПриЗаписи(СписокРекв)

   Если Валютный = 1 Тогда

      СтатусВозврата(0);

   КонецЕсли;

КонецПроцедуры

См. также: СтатусВозврата

Предопределенные процедуры модуля формы счета

Описанные в данном разделе системные предопределенные процедуры должны располагаться только в модуле формы счета (см. «Виды программных модулей»).

В основном, данные процедуры предназначены для расширения возможности программного управления правами доступа к системе.

Предопределенные процедуры не является встроенными процедурами языка. Для них зарезервированы только название и синтаксис. Тело процедур должно быть написано самим разработчиком в соответствующих программных модулях. Вызов предопределенных процедур на исполнение производится в системе 1С:Предприятие неявно при возникновении соответствующего события. Описание предопределенных процедур также см. гл. «Системные предопределенные процедуры».

ВводНового

Предопределенная процедура при вводе нового счета.

Синтаксис:

ВводНового(<ПризнКопирования>, <ОбъектКопирования>)

Англоязычный синоним:

InputNew

Параметры:

<ПризнКопирования> | Признак того, что объект введен копированием. Число: 1 — объект введен копированием, 0 — просто новый объект. Данный признак может быть использован для анализа необходимости инициализации реквизитов нового объекта.
<ОбъектКопирования> | Объект, который был скопирован.

Описание:

Вызов процедуры ВводНового производится в системе 1С:Предприятие неявно в момент выбора открытия формы счета для ввода нового счета. Данная процедура может использоваться, например, для установки начальных значений (по умолчанию) характеристик нового счета.

Если в данной предопределенной процедуре установить статус возврата 0 (например, если данному пользователю нельзя вводить новые счета), ввода нового счета и открытие формы счета не будет выполнено.

Процедура ВводНового контекста справочников должна находиться в модуле: формы счета (см. «Виды программных модулей»).

Пример:

Процедура ВводНового()

   Если НазваниеНабораПрав() = "Оператор" Тогда

      Предупреждение("У вас нет права добавлять счета!", 2);

      СтатусВозврата(0);

   КонецЕсли;

   СтатусСчета = ОснСтатусСчетов;

КонецПроцедуры

См. также: СтатусВозврата

ПриЗаписи

Предопределенная процедура при записи счета.

Синтаксис:

ПриЗаписи(<СписокПериодРекв>)

Англоязычный синоним:

OnWrite

Параметры:

<СписокПериодРекв>

Строковое значение — список разделенных запятыми изменяемых периодических реквизитов счета. В данный параметр система 1С:Предприятие передает перечень периодических реквизитов, которые были интерактивно выбраны пользователем для обновления в окне диалога выбора.

Описание:

Вызов предопределенной процедуры ПриЗаписи производится системой 1С:Предприятие при интерактивной записи счета. Если в данной предопределенной процедуре установить статус возврата 0 (например, если данному пользователю нельзя изменять некоторые характеристики счета), то запись счета не будет выполнена.

Формальный параметр <СписокПериодРекв> используется в теле процедуры для обработки ситуаций с изменениями периодических реквизитов счета.

Процедура ПриЗаписи контекста справочников должна находиться в модуле формы счета (см. «Виды программных модулей»).

Пример:

Процедура ПриЗаписи(СписокРекв)

   Если Валютный = 1 Тогда

      СтатусВозврата(0);

   КонецЕсли;

КонецПроцедуры

См. также: СтатусВозврата


Part17

Глава 17
Работа с операциями и проводками

Для отражения в бухгалтерском учете информации о движении средств в системе 1С:Предприятие используются Операции и Проводки. Эти объекты поддерживаются компонентой «Бухгалтерский учет». Настройка свойств операций и проводок производится соответвующими объектами метаданных в конфигурации. В руководстве по конфигурированию можно подробно ознакомиться с основными принципами и свойствами операций и проводок.

Контекст работы с операциями и проводками

Для манипулирования данными операций и проводок из встроенного языка 1С:Предприятия используется агрегатный объект типа «Операция». Так как проводки в системе 1С:Предприятие принадлежат операциям, то управление и операциями и проводками выполняется объектом «Операция».

Во-первых, объект «Операция» используется для формирования и анализа проводок формируемых документом. Для этого у агрегатного объекта «Документ» существует атрибут Операция типа «Операция», который обеспечивает доступ к операции данного документа.

Во-вторых, объект «Операция» непосредственно доступен в контекстах формы операции, формы журнала операции и формы журнала проводок. То есть в модулях указанных форм обращение к атрибутам и методам текущего объекта выполняется напрямую. В форме журнала операций текущим объектом является операция, на которой в данный момент стоит курсор в форме журнала. В форме журнала проводок текущим объектом является операция, которой принадлежит проводка, на которой в данный момент стоит курсор в форме журнала.

В-третьих, объект «Операция» используется для перебора существующих операций и проводок при формировании отчетов и других выборок. В этом случае объект создается при помощи вызова функции СоздатьОбъект ("Операция"). Англоязычный синоним ключевого слова Операция — Operation.

В этом варианте использования становятся доступны методы перебора операций и проводок различных операций, а также добавления и удаления операции.

Метод записи операции доступен также при проведении документа.

Как уже отмечалось, доступ к проводкам также осуществляется объектом «Операция». Методы и атрибуты объекта «Операция» осуществляют доступ к данным как собственно операции, так и к данным проводок. Операция содержит набор методов для перебора и позиционирования на конкретные проводки. При этом одна из проводок операции может быть текущей. Все обращения к атрибутам и методам данных проводки будут относится именно к текущей проводке. Если текущей проводки нет, то обращение к атрибутам и методам проводки недоступно.

Одной из возможностей организации данных бухгалтерского учета системы 1С:Предприятие является поддержка сложных проводок. Под сложной проводкой понимается проводка, состоящая из нескольких корреспонденции (одного дебета — нескольких кредитов или наоборот). С точки зрения синтаксиса объекта «Операция» текущей проводкой может являться простая проводка или одна из корреспонденции сложной проводки. Нумерация проводок осуществляется номером проводки и номером корреспонденции.

С точки зрения чтения, все операции используются практически одинаково. Однако изменения (создание новых, запись, удаление) операций сильно отличается для операций двух типов.

«Ручные» операции — это операции, введенные пользователем вручную или записанные объектом типа «Операции», созданным функцией СоздатьОбъект. Все изменения из встроенного языка этих операций производятся объектами типа «Операции», созданными функцией СоздатьОбъект. Такие операции принадлежат документам специального вида «Операция», который не имеет большинства свойств обычных документов и используется только для отражении в журналах документов «Ручных» операций. Вид документа «Операция» создается системой автоматически при внесении в конфигурацию первого объекта метаданных типа «План счетов».

Операции принадлежащие документам — это операции, которые создаются документами различных видов, которым установлен признак «Бухгалтерский учет» (кроме вида «Операция»). Эти операции могут записываться только при записи документов или при проведении документов. Наличие операции у кон-кертного документа регламентируется в метаданных в настройках вида документа. Операция для документа конкретного вида может создаваться либо при записи (режим «Всегда»), либо создаваться выборочно (режим «Выборочно») (при помощи метода документа СуществуетОперация), либо только при проведении документа (режим «только при проведении»). В первых двух случаях изменение реквизитов самой операции может производиться в модуле формы документа и при записи они автоматически будут записаны в операцию принадлежащую документу. Однако проводки в операцию принадлежащую документу могут быть записаны в любом случае только в процессе проведения документа (предопределенной процедуре ОбработкаПроведения). При этом в процессе проведения документа для записи операции следует вызвать метод операции Записать. Операция созданная документом в процессе проведения при перепроведении документа сначала уничтожается, а при выполнении процедуры ОбработкаПроведения записывается заново. Если документ делается не проведенным, то проводки из операции удаляются, а сама операция уничтожается, если она была записана в режиме «только при проведении».

Атрибуты объекта «Операция»

ДатаОперации

Дата операции.

Синтаксис:

ДатаОперации

Англоязычный синоним:

OperDate

Значение:

Значение типа «Дата».

Описание:

Атрибут ДатаОперации содержит дату бухгалтерской операции. Так как каждая бухгалтерская операция принадлежит документу (причем только одному, а операция введенная вручную также принадлежит специальному документу «Операция»), значение атрибута совпадает со значением атрибута ДатаДок документа, которому принедлежит операция. Наличие данного атрибута у оп-реации упрощает обращение к дате документа, которому принадлежит операция.

Пример:

Опер = СоздатьОбъект("Операция");

Опер.НайтиОперацию(ВыбрДокумент);

Сообщить(Опер.ДатаОперации);

Содержание

Содержание операции.

Синтаксис:

Содержание

Англоязычный синоним:

Description

Значение:

Значение типа «Строка».

Описание:

Атрибут Содержание служит для обращения к содержанию операции. Содержание операции представляет собой произвольную символьную строку. Максимальная длина содержания задается в конфигураторе при редактировании свойств объекта метаданных «Операция».

Пример:

Опер = СоздатьОбъект("Операция");

Опер.НайтиОперацию(ВыбрДокумент);

Сообщить(Опер.Содержание);

СуммаОперации

Сумма операции.

Синтаксис:

СуммаОперации

Англоязычный синоним:

OperSum

Значение:

Значение типа «Число».

Описание:

Атрибут СуммаОперации служит для обращения к сумме операции. Сумма операции является положительным или отрицательным числом. Сумма операции предназначена лишь для иллюстрирования денежного выражения операции и не влияет на бухгалтерские итоги. Длина и точность суммы операции задается конфигураторе при редактировании свойств объекта метаданных «Операция».

Пример:

Опер = СоздатьОбъект("Операция");

Опер.НайтиОперацию(ВыбрДокумент);

Сообщить(Опер.СуммаОперации);

<РеквизитОперации>

Возвращает или задает значение дополнительного реквизита операции.

Синтаксис:

<РеквизитОперации>

Идентификатор дополнительного реквизита операции, как он задан в конфигураторе.

Значение:

Тип значения определяется типом реквизита заданным в метаданных.

Описание:

Помимо реквизитов операции, задаваемых на системном уровне (сумма, содержание), в процессе конфигурирования для операции можно создать практически неограниченное число дополнительных реквизитов для хранения любой необходимой информации.

Атрибут <Реквизит> позволяет обращаться к значению дополнительного реквизита операции. Для обращения к конкретному реквизиту должен быть указан его идентификатор, заданный для этого реквизита в конфигураторе.

Пример:

Опер = СоздатьОбъект("Операция");

Опер.НайтиОперацию(ВыбрДокумент);

Сообщить(Опер.ПризнакУчета);

Документ

Документ, которому принадлежит операция.

Синтаксис:

Документ

Англоязычный синоним:

Document

Значение:

Значение типа документ.

Описание:

Атрибут Документ является атрибутом «только для чтения», то есть ему нельзя присваивать никакого значения. Он служит для обращения к документу, котрому принадлежит операция. Так, как любая операция принадлежит документу (операция введенная «вручную» принадлежит документу специального вида «Операция») доступ к некоторым свойствам операции, например, номеру возможен только посредством обращения к атрибуту Документ.

Атрибут Документ предназначен только для доступа к атрибутам и реквизитам документа, которому принадлежит операция. Для получения значения типа «Документ» используется метод ТекущийДокумент.

Пример:

Опер = СоздатьОбъект("Операция");

Опер.НайтиОперацию(ВыбрДокумент);

Сообщить(Опер.Документ.НомерДок);

Сумма

Сумма выбранной проводки (корреспонденции) операции.

Синтаксис:

Сумма

Англоязычный синоним:

Sum

Значение:

Значение типа «Число».

Описание:

Атрибут Сумма служит для обращения к сумме выбранной проводки (корреспонденции) операции.

Перед обращением к атрибуту конкретной проводки эта проводка должна быть выбрана с помощью методов ВыбратьПроводки, ПолучитьПроводку или создана при помощи метода НоваяПроводка. В модулях форм «Операции» и «Журнал проводок» текущая проводка определяется положением курсора.

Пример:

Опер = СоздатьОбъект("Операция");

Опер.НайтиОперацию(ВыбрДокумент);

Опер.ВыбратьПроводки();

Пока Опер.ПолучитьПроводку() = 1 Цикл

   Сообщить("Сумма " + Опер.Сумма);

КонецЦикла;

Валюта

Валюта выбранной проводки или корреспонденции операции.

Синтаксис:

Валюта

Англоязычный синоним:

Currency

Значение:

Значение типа «Справочник», вид которого определен в настройке валютного учета в конфигурации.

Описание:

Атрибут Валюта служит для обращения к валюте выбранной проводки или корреспонденции операции.

Перед обращением к атрибуту конкретной проводки эта проводка должна быть выбрана с помощью методов ВыбратьПроводки, ПолучитьПроводку или создана при помощи метода НоваяПроводка. В модулях форм «Операции» и «Журнал проводок» текущая проводка определяется положением курсора.

Пример:

Опер = СоздатьОбъект("Операция");

Опер.НайтиОперацию(ВыбрДоку мент);

Опер.ВыбратьПроводки();

Пока Опер.ПолучитьПроводку() = 1 Цикл

   Сообщить("Валюта " + Опер.Валюта + " Вал.сумма=" + Опер.ВалСумма);

КонецЦикла;

ВалСумма

Валютная сумма выбранной проводки или корреспонденции операции.

Синтаксис:

ВалСумма

Англоязычный синоним:

CurSum

Значение:

Значение типа «Число».

Описание:

Атрибут ВалСумма служит для обращения к сумме в валюте выбранной проводки или корреспонденции операции.

Перед обращением к атрибуту конкретной проводки эта проводка должна быть выбрана с помощью методов ВыбратьПроводки, ПолучитьПроводку или создана при помощи метода НоваяПроводка. В модулях форм «Операции» и «Журнал проводок» текущая проводка определяется положением курсора.

Пример:

Опер = СоздатьОбъект("Операция");

Опер.НайтиОперацию(ВыбрДокумент);

Опер.ВыбратьПроводки();

Пока Опер.ПолучитьПроводку() = 1 Цикл

   Сообщить("Валюта " + Опер.Валюта + " Вал.сумма=" + Опер.ВалСумма);

КонецЦикла;

Количество

Количество выбранной проводки или корреспонденции операции.

Синтаксис:

Количество

Англоязычный синоним:

Amount

Значение:

Значение типа «Число».

Описание:

Атрибут Количество служит для обращению к количеству выбранной проводки или корреспонденции операции.

Перед обращением к атрибуту конкретной проводки эта проводка должна быть выбрана с помощью методов ВыбратьПроводки, ПолучитьПроводку или создана при помощи метода НоваяПроводка. В модулях форм «Операции» и «Журнал проводок» текущая проводка определяется положением курсора.

Пример:

Опер = СоздатьОбъект("Операция");

Опер.НайтиОперацию(ВыбрДокумент);

Опер.ВыбратьПроводки();

Пока Опер.ПолучитьПроводку() = 1 Цикл

   Сообщить("Количество ="+0пер.Количество);

КонецЦикла;

<РеквизитПроводки>

Обращение к дополнительному реквизиту проводки.

Синтаксис:

<РеквизитПроводки>

Идентификатор дополнительного реквизита проводки, как он задан в конфигураторе.

Описание:

Помимо реквизитов проводки, задаваемых на системном уровне (сумма, валюта и других), в процессе конфигурирования для проводки можно создать практически неограниченное число дополнительных реквизитов для хранения любой необходимой информации.

Атрибут <РеквизитПроводки> позволяет обращаться к значениям дополнительных реквизитов проводки. Для обращения к конкретному реквизиту должен быть указан его идентификатор, заданный для этого реквизита в конфигураторе.

Перед обращением к атрибуту конкретной проводки эта проводка должна быть выбрана с помощью методов ВыбратьПроводки, ПолучитьПроводку или создана при помощи метода НоваяПроводка. В модулях форм «Операции» и «Журнал проводок» текущая проводка определяется положением курсора.

Пример:

Опер = СоздатьОбъект("Операция");

Опер.НайтиОперацию(ВыбрДокумент);

Опер.ВыбратьПроводки();

Пока Опер.ПолучитьПроводку() = 1 Цикл

   Сообщить("Количество =" + Опер.Количество);

КонецЦикла;

Дебет

Обращение к дебету проводки (корреспонденции).

Синтаксис:

Дебет

Англоязычный синоним:

Debit

Описание:

Атрибут Дебет служит для обращения к дебетовой части текущей проводки (корреспонденции) операции. Данный атрибут возвращает агрегатный объект специального типа «Дебет», который используется только для доступа к данным дебетовой части конкретной проводки (корреспонденции) операции и не используется отдельно.

Перед обращением к атрибуту конкретной проводки эта проводка должна быть выбрана с помощью методов ВыбратьПроводки, ПолучитьПроводку или создана при помощи метода НоваяПроводка. В модулях форм «Операции» и «Журнал проводок» текущая проводка определяется положением курсора.

Пример:

Опер = СоздатьОбъект("Операция");

Опер.НайтиОперацию(ВыбрДокумент);

Опер.ВыбратьПроводки();

Пока Опер.ПолучитьПроводку() = 1 Цикл

   Сообщить("Проводка " + Опер.Дебет.Счет + " - " + Опер.Кредит.Счет);

КонецЦикла;

Кредит

Обращение к кредиту проводки (корреспонденции).

Синтаксис:

Кредит

Англоязычный синоним:

Credit

Описание:

Атрибут Кредит служит для обращения к кредитовой части текущей проводки (корреспонденции) операции. Данный атрибут возвращает агрегатный объект специального типа «Кредит», который используется только для доступа к данным кредитовой части конкретной проводки (корреспонденции) операции и не используется отдельно.

Перед обращением к атрибуту конкретной проводки эта проводка должна быть выбрана с помощью методов ВыбратьПроводки, ПолучитьПроводку или создана при помощи метода НоваяПроводка. В модулях форм «Операции» и «Журнал проводок» текущая проводка определяется положением курсора.

Пример:

Опер = СоздатьОбъект("Операция");

Опер.НайтиОперацию(ВыбрДокумент);

Опер.ВыбратьПроводки();

Пока Опер.ПолучитьПроводку() = 1 Цикл

   Сообщить("Проводка " + Опер.Дебет.Счет + " - " + Опер.Кредит.Счет);

КонецЦикла;

Атрибуты объектов «Дебет» и «Кредит»

Счет

Счет дебета/кредита проводки (корреспонденции) операции.

Синтаксис:

Счет

Англоязычный синоним:

Account

Значение:

Значение типа «Счет».

Описание:

Атрибут Счет служит для доступа к счету дебета/кредита проводки или корреспонденции операции.

Пример:

Опер = СоздатьОбъект("Операция");

Опер.НайтиОперацию(ВыбрДокумент);

Опер.ВыбратьПроводки();

Пока Опер.ПолучитьПроводку() = 1 Цикл

   Сообщить("Проводка " + Опер.Дебет.Счет.Наименование + " - " +

                          Опер.Кредит.Счет.Наименование);

КонецЦикла;

<Субконто>

Субконто дебета/кредита проводки (корреспонденции) операции.

Синтаксис:

<Субконто>

Идентификатор вида субконто, как он задан в конфигураторе.

Описание:

Атрибут <Субконто> служит для доступа к значению субконто дебета/кредита проводки (корреспонденции) операции. В конкретном случае обращение к субконто для дебета/кредита определяется счетом дебета/кредита, то есть заданными для него видами субконто по которым ведется аналитический учет по этому счету.

Пример:

Опер = СоздатьОбъект("Операция");

Опер.НайтиОперацию(ВыбрДокумент);

Опер.ВыбратьПроводки();

Пока Опер.ПолучитьПроводку() = 1 Цикл

   Если Опер.Дебет.Счет=СчетПоКоду("60") Тогда

      Сообщить("Субконто " + Опер.Дебет.Организация);

   КонецЕсли;

КонецЦикла;

Методы объектов «Дебет» и «Кредит»

Субконто

Обращение к субконто дебета/кредита проводки (корреспонденции) операции.

Синтаксис:

Субконто(<ПорядковыйНомерСубконто> | <ВидСубконто>, <Субконто>)

Англоязычный синоним:

Subconto

Параметры:

<ПорядковыйНомерСубконто> | Необязательный параметр. Числовое выражение — порядковый номер субконто. По умолчанию 1.
<ВидСубконто> | Значение типа «Вид субконто».
<Су6конто> | Необязательный параметр. Значение субконто. Если параметр не задан — значение не изменяется.

Возвращаемое значение:

Если указан порядковый номер вида субконто или вид субконто, метод возвращает значение субконто.

Описание:

К любому счету или субсчету в плане счетов может быть «прикреплено» до 5 видов субконто. Максимальное количество видов субконто, которое можно «прикрепить» к счету, устанавливается в конфигураторе при редактировании свойств планов счетов. Количество субконто, которое реально прикреплено к счету, не превышает установленного максимального количества.

Все виды субконто, прикрепленные к счету в плане счетов, имеют порядковые номера. Эти номера выдаются в названии колонок для видов субконто в окне редактирования плана счетов; «Субконто1», «Субконто2» ... «Субконто5».

Метод Субконто дебета/кредита проводки служит для получения и установки значения субконто по его номеру или виду соотвественно в дебете или в кредите проводки (коррепспонденции) операции.

Возможность использования субконто конкретного вида или номера определяется счетом дебета/кредита проводки.

Если при использовании метода Субконто первым параметром передается порядковый номер субконто или вид субконто, то метод возвратит значение субконто, имеющего этот номер.

Если вторым параметром передается значение субконто, метод присваивает указаное значение виду субконто проводки.

Пример:

Опер = СоздатьОбъект("Операция");

Опер.НайтиОперацию(ВыбрДокумент);

Опер.ВыбратьПроводки();

Пока Опер.ПолучитьПроводку() = 1 Цикл

   Для Инд = 1 По Опер.Дебет.Счет.КоличествоСубконто() Цикл

      Сообщить("Субконто " + Опер.Дебет.Субконто(Инд));

   КонецЦикла;

КонецЦикла;

ПредставлениеСубконто

Представление субконто дебета/кредита проводки (корреспонденции) операции.

Синтаксис:

ПредставлениеСубконто(<ПорядковыйНомерСубконто> | <ВидСубконто>, <Режим>)

Англоязычный синоним:

SubcontoPresentation

Параметры:

<ПорядковыйНомерСубконто> | Необязательный параметр. Числовое выражение — порядковый номер субконто. По умолчанию 1.
<ВидСу6конто> | Идентификатор вида субконто.
<Режим> | Необязательный параметр. Числовое выражение — признак полноты выдачи представления субконто. Может принимать значения: 0 — полное представление; 1 — краткое представление. По умолчанию 0;

Возвращаемое значение:

Символьная строка — представление субконто.

Описание:

Представлением называется символьная строка, содержащая информацию из реквизитов субконто. Эта символьная строка может быть использована для отображения значений реквизитов субконто в различных отчетах, диалогах и других визуальных элементах конфигурации.

Представление может быть настроено в конфигурации для видов субконто типа «Справочник» или «Документ». Формат представления определяется в конфигураторе при редактировании свойств вида субконто.

Метод ПредставлениеСубконто позволяет получить представление для субконто дебета/кредита текущей проводки (корреспонденции).

Пример:

Опер = СоздатьОбъект("Операция");

Опер.НайтиОперацию(ВыбрДокумент);

Опер.ВыбратьПроводки();

Пока Опер.ПолучитьПроводку() = 1 Цикл

   Для Инд = 1 По Опер.Дебет.Счет.КоличествоСубконто() Цикл

      Сообщить("Субконто " + Опер.Дебет.ПредставлениеСубконто(Инд));

   КонецЦикла;

КонецЦикла;

Методы объекта «Операция»

ВыбратьОперации

Открывает выборку операций за период.

Синтаксис:

ВыбратьОперации(<НачалоПериода>, <КонецПериода>)

Англоязычный синоним:

SelectOpers

Параметры:

<НачалоПериода> | Необязательный параметр. Выражение типа дата, документ или позиция документа, с которого устанавливается начало выборки операций.
<КонецПериода> | Необязательный параметр. Выражение типа дата, документ или позиция документа, на котором устанавливается конец выборки операций.

Возвращаемое значение:

Число: 1 — действие выполнено и в выборке есть хотя бы одна операция;

0 — действие не выполнено или в выборке нет ни одной операции.

Описание:

Метод ВыбратьОперации открывает выборку, содержащую операции за указанный период.

Пример:

Опер = СоздатьОбъект("Операция");

Опер.ВыбратьОперации(ДатаНач, ДатаКон);

Пока Опер.ПолучитьОперацию() = 1 Цикл

   Сообщить("Операция " + Опер.Содержание);

КонецЦикла;

ВыбратьОперацииСПроводками

Открывает выборку оперций с проводками за указанный период.

Синтаксис 1:

ВыбратьОперацииСПроводками(<НачалоПериода>, <КонецПериода>, <Фильтр>, <Валюта>,

                           <ПланСчетов>, <РазделительУчета>)

Синтаксис 2:

ВыбратьОперацииСПроводками(<НачалоПериода>, <КонецПериода>, <Счет>, <КорСчет>,

                           <Флаг>, <Валюта>, <ПланСчетов>, <РазделительУчета>)

Англоязычный синоним:

SelectOpersAndEntries

Параметры:

<НачалоПериода> | Необязательный параметр. Выражение типа дата, документ или позиция документа, с которого устанавливается начало выборки операций.
<КонецПериода> | Необязательный параметр. Выражение типа дата, документ или позиция документа, на котором устанавливается конец выборки операций.
<Фильтр> | Необязательный параметр. Строка — условие отбора проводок.
<ПланСчетов> | Необязательный параметр. Значение типа «План Счетов». Если параметр не указан — по всем планам счетов.
<РазделительУчета> | Необязательный параметр. Значение разделителя учета. Если параметр не указан — по всем значениям разделителя учета.
<Счет> | Необязательный параметр. Счет — счет, по которому будут отбираться проводки.
<КорСчет> | Необязательный параметр. Счет — корреспондирующий счет, по которому будут отбираться проводки. Параметр имеет смысл, если указан параметр <Счет>.
<Флаг> | Необязательный параметр. Число — признак вида оборота. Параметр может принимать значения: 1 — отбирать проводки только по дебету счета; 2 — отбирать проводки только по кредиту счета; 3 — отбирать проводки и по дебету, и по кредиту. По умолчанию 3.
<Валюта> | Необязательный параметр. Значание типа «справочник» (вида справочника используемого для валютного учета) — признак отбора проводок по валюте.

Возвращаемое значение:

Число: 1 — действие выполнено и в выборке есть хотя бы одна проводка;

0 — действие не выполнено или в выборке нет ни одной проводки.

Описание:

Метод ВыбратьОперацииСПроводками служит для выбора проводок операций за период. Параметрами могут являеться различные условия отбора проводок.

После вызова данного метода метод ПолучитьПроводку выбирает очередную проводку из выборки удовлетворяющую заданным условиям, а метод ПолучитьОперацию выбирает первую проводку слудующей операции удовлетворяющую заданным условиям.

Метод может вызываться с двумя вариантами набора параметров. В первом варианте основные условия отбора задаются специальной строкой-фильтром, во втором указанием счета и корреспондирующего счета.

В параметре <Фильтр> задаются критерии отбора проводок для включения в выборку. Если параметр не заполнен, в выборку включаются все проводки. В общем случае в параметре <Фильтр> могут находиться одна или несколько корреспонденции счетов или символьных строк, разделяемых точкой с запятой «;». Символьные строки представляют собой наборы символов, заключенные в кавычки (при передаче строки в явном виде в параметре внутри строки двойные кавычки задаются двумя символами двойных кавычек). Корреспонденции имеют вид:

n — проводки со счетом n;

n, m — проводки в дебет счета n с кредита счета m.

Здесь в качестве n и m может указываться звездочка («*»), она обозначает любой счет. Например, *, 51 — все проводки с кредита 51 счета.

В выборку включаются все проводки, удовлетворяющие следующим условиям:

Если в параметре <Фильтр> указаны корреспонденции счетов, то проводка должна соответствовать одной из этих корреспонденции.

Если параметре <Фильтр> указаны строки символов, то в проводке должна содержаться хотя бы одна из этих строк — либо в содержании операции, либо представлениях значений субконто и реквизитов проводки и операции.

Примеры:

50 | — все проводки со счетом 50;
50, * | — все проводки в дебет 50 счета;
* , 51 | — все проводки с кредита 51 счета;
50, 51 | — все проводки в дебет 50 счета с кредита 51;
51; 52 | — все проводки со счетом 51 или счетом 52;
46, 68.2 | — все проводки в дебет 46 счета с кредита 68.2;
"бумага" | — все проводки, содержащие в содержании операции или в субконто или в реквизитах слово «бумага»;
"бумага"; "картон" | — все проводки, содержащие в содержании операции или в субконто или в реквизитах слово «бумага» или слово «картон»;
*, 46; "бумага" | — все проводки по кредиту 46 счета, содержащие в содержании операции или в субконто или в реквизитах слово «бумага»;

Кроме того, в обоих вариантах задаются дополнительные условия: валюта, план счетов, разделитель учета.

Параметр <Валюта> является значением типа «Справочник» вида, определенного при настройке валютного учета в метаданных. Если параметр указан, в отбор будут включены проводки только по указанной валюте. При этом пустое значение типа «Справочник» соответствующего вида считается указанием отбора по пустой валюте. Для того, чтобы отбор по валюте не производился нужно либо опустить данный параметр, либо передать туда значение иного типа,  например,  пустую сроку.

Параметр <ПланСчетов> является значением типа «План Счетов». Если параметр указан, в отбор будут включены проводки только по указанному плану счетов.

Параметр <РазделительУчета> является значением объекта метаданных, выбранного в качестве разделителя учета.

Если указан параметр <РазделительУчета>, в отбор будут включены проводки с указанным значением разделителя учета.

Параметры <Счет> и <КорСчет> задают условние отбора проводок по счетам.

Если указан параметр <Счет>, будут отбраны проводки только по указанному счету. Дополнительным условие отбора является значением параметра <Флаг>.

Если указаны параметр <Счет> и <КорСчет>, будут отобораны проводки только по указанной креспонденции счетов.

Пример:

Опер = СоздатьОбъект("Операция");

Опер.ВыбратьОперацииСПроводками(ДатаНач, ДатаКон, "50, 51; ""По Чеку"" ");

Пока Опер.ПолучитьПроводку() = 1 Цикл

   Сообщить("Сумма " + Опер.Сумма);

КонецЦикла;

ИспользоватьСубконто

Задает фильтр по субконто для функции ВыбратьОперацииСПроводками.

Синтаксис:

ИспользоватьСубконто(<ВидСубконто>, <Субконто>)

Англоязычный синоним:

UseSubconto

Параметры:

<ВидСубконто> | Значение типа «ВидСубконто» — отбор проводок будет выполнен только для субконто указанного вида.
<Субконто> | Значение субконто — отбор проводок будет выполнен только для указанного субконто. Кроме того, в качестве значения данного параметра можно передавать «Список значений».

Описание:

Метод ИспользоватьСубконто устанавливает фильтр по субконто, который используется при отборе проводок методом ВыбратьОперацииСПроводками.

Метод ИспользоватьСубконто может вызываться последовательно несколько раз. В этом случае фильтры, устанавливаемые этой функцией, суммируются.

Пример:

Опер = СоздатьОбъект("Операция");

Опер.ИспользоватьСубконто(ВидыСубконто.Организации, ВыбОрг);

Опер.ВыбратьОперацииСПроводками(ДатаНач, ДатаКон, "60");

Пока Опер.ПолучитьПроводку() = 1 Цикл

   Сообщить("Сумма " + Опер.Сумма);

КонецЦикла;

ИспользоватьКорСубконто

Задает фильтр по корреспондирующим субконто для функции

ВыбратьОперацииСПроводками.

Синтаксис:

ИспользоватьКорСубконто(<ВидСубконто>, <Субконто>)

Англоязычный синоним:

UseCorSubconto

Параметры:

<ВидСубконто> | Значение типа «ВидСубконто» — отбор проводок будет выполнен только для корреспондирующих субконто указанного вида.
<Субконто> | Значение субконто — отбор проводок будет выполнен только для указанного корреспондирующего субконто. Кроме того, в качестве значения данного параметра можно передавать «Список значений».

Описание:

Метод ИспользоватьКорСубконто устанавливает фильтр по корреспондирующим субконто, который используется при отборе проводок методом ВыбратьОперацииСПроводками.

Метод ИспользоватьКорСубконто может вызываться последовательно несколько раз. В этом случае фильтры, устанавливаемые этой функцией, суммируются.

Пример:

Опер = СоздатьОбъект("Операция");

Опер.ИспользоватьСубконто(ВидыСубконто.Организации, ВыбОрг);

Опер.ИспользоватьКорСубконто(ВидыСубконто.Товары, ВыбТовар);

Опер.ВыбратьОперацииСПроводками(ДатаНач, ДатаКон, "60");

Пока Опер.ПолучитьПроводку() = 1 Цикл

   Сообщить("Сумма " + Опер.Сумма);

КонецЦикла;

ВыбратьПоЗначению

Открывает выборку операций или проводок, отобранных по значению отбора.

Синтаксис:

ВыбратьПоЗначению(<НачалоПериода>, <КонецПериода> , <ВидОтбора>, <3начение0тбора>)

Англоязычный синоним:

SelectByValue

Параметры:

<НачалоПериода> | Необязательный параметр. Выражение типа дата, документ или позиция документа, с которого устанавливается начало выборки операций.
<КонецПериода> | Необязательный параметр. Выражение типа дата, документ или позиция документа, на котором устанавливается конец выборки операций.
<ВидОтбора> | Необязательный параметр. Символьная строка — название вида отбора (см. ниже).
<3начение0тбора> | Необязательный параметр. Значение отбора вида, указанного в параметре <ВидОтбора>.

Возвращаемое значение:

Число: 1 — действие выполнено и в выборке есть хотя бы одна операция или проводка; 0 — действие не выполнено или в выборке нет ни одной операции или проводки.

Описание:

Метод ВыбратьПоЗначению открывает выборку, содержащую операции или проводки за указанный период.

Данный метод позволяет достаточно быстро отобрать операции или проводки по критерию отбора. Возможные критерии отборов настраиваются в конфигураторе и имеют свои идентификаторы (системные или идентификаторы объектов метаданных). Вид отбора определяет будет открыта выборка операций или проводок.

Параметр <ВидОтбора> должен содержать название вида отборав виде символьной строки.

Параметр <ВидОтбора> для отбора операций может принимать следующие значения (в скобках указан английский синоним):

"СуммаОперации" ("OperSum") | Отбор по сумме операции. Доступно если в метаданных включен отбор по сумме операции.
"Содержание" ("Description") | Отбор по содержанию операции. Доступно если в метаданных включен отбор по содержанию операции.
<РеквизитОперации> | Отбор по дополнительному реквизиту операции. Идентификатор реквизита должен быть указан так, как это задано в метаданных. Доступно если в метаданных включен отбор по реквизиту операции.

Параметр <ВидОтбора> для отбора проводок может принимать следующие значения (в скобках указан английский синоним):

"Счет" ("Account") | Отбор по счету дебета или счету кредита проводки. Доступно если в метаданных включен отбор по счетам проводок.
"СчетДт" ("AccountDt") | Отбор по счету дебета проводки. Доступно если в метаданных включен отбор по дебету/кредиту счетов проводок.
"СчетКт" ("AccountKt") | Отбор по счету кредита проводки. Доступно если в метаданных включен отбор по дебету/кредиту счетов проводок.
"Валюта" ("Currency") | Отбор по валюте проводки. Доступно если в метаданных включен отбор по валюте проводок.
<ВидСубконто> | Отбор по виду субконто. Идентификатор вида субконто должен быть указан так, как он задан в метаданных. Доступно если в метаданных включен отбор по этому виду субконто.
<РеквизитПроводки> | Отбор по дополнительному реквизиту проводки. Идентификатор реквизита должен быть указан так, как он задан в метаданных. Доступно если в метаданных включен отбор по этому реквизиту проводки.

Параметр <3начениеОтбора> задает значение отбора.

После выполнения данного метода обход операций (проводок) осуществляется методами ПолучитьОперацию и ПолучитьПроводку.

Пример:

Опер = СоздатьОбъект("Операция");

Опер.ВыбратьПоЗначению(ДатаНач, ДатаКон, "Счет", СчетПоКоду("60"));

Пока Опер.ПолучитьПроводку() = 1 Цикл

   Сообщить("Сумма " + Опер.Сумма);

КонецЦикла;

ПолучитьОперацию

Извлекает операции из выборки, открытой при помощи метода

ВыбратьОперции.

Синтаксис:

ПолучитьОперацию()

Англоязычный синоним:

GetOper

Возвращаемое значение:

Число: 1 — операция выбрана успешно; 0 — операция не выбрана (отсутствует).

Описание:

Метод ПолучитьОперацию выбирает очередную операцию из выборки, открытой при помощи метода ВыбратьОперации.

Метод ПолучитьОперацию используется для организации цикла по операциям. Условием цикла может служить равенство 1 возвращаемого значения метода: цикл выполняется, пока метод ПолучитьОперацию возвращает 1.

Метод возвращает 0, когда очередная операция не выбрана. Это происходит, если при предыдущем применении метода была выбрана последняя операция выборки.

Пример:

Опер = СоздатьОбъект("Операция");

Опер.ВыбратьОперации(ДатаНач, ДатаКон);

Пока Опер.ПолучитьОперацию() = 1 Цикл

   Сообщить("Операция " + Опер.Содержание);

КонецЦикла;

НайтиОперацию

Позиционирует объект по значению типа «Документ».

Синтаксис:

НайтиОперацию([<Документ>])

Англоязычный синоним:

FindOper

Параметры:

<Документ>

Значение типа «Документ».

Возвращаемое значение:

Число: 1 — действие выполнено, операция найдена; 0 — действие не выполнено, операция не найдена.

Описание:

Метод НайтиОперацию осуществляет поиск операции по значению типа «Документ».

В системе 1С:Предприятие каждая операция принадлежит документу. Причем операция принадлажит только одному документу, а у документа может существовать только одна операция. Операции введенные вручную принадлежат документам специального вида «Операция».

Поэтому не существует возможности передачи такого значения как «Операция». Для «идентификации» операции фактически используется значение документа, которому она принадлежит. Поэтому для позиционировании объекта «Операция» непосредственно на конкретную операцию используется значение типа «Документ».

Пример:

Опер = СоздатьОбъект("Операция");

Опер.НайтиОперацию(ВыбрДокумент);

Выбрана

Определяет выбрана ли в данный момент операция.

Синтаксис:

Выбрана()

Англоязычный синоним:

Selected

Возвращаемое значение:

Число: 1 — операция выбрана; 0 — операция не выбрана.

Описание:

При использовании объекта «Операция» созданного функцией СоздатьОбъект метод Выбрана определяет спозиционирован ли объект в настоящий момент на некоторой операции или нет.

При использовании данного метода к атрибуту документа Операция (который имеет тип «Операция») он определяет, существует ли реально операция у документа или нет.

При использовании в форме журнала операций (проводок) метод определяет спозиционирован ли курсор.

При использовании в форме операции метод определяет, записана новая операция или нет.

Пример:

Опер = СоздатьОбъект("Операция");

Опер.НайтиОперацию(ВыбрДокумент);

Если Опер.Выбрана() = 0 Тогда

   Сообщить("Операция не найдена");

КонецЕсли;

УстановитьАтрибут

Установить значение реквизита по имени идентификатора.

Синтаксис:

УстановитьАтрибут(<ИмяРеквизита>, <3начение>)

Англоязычный синоним:

SebAttrib

Параметры:

<ИмяРеквизита> | Строковое выражение, содержащее имя реквизита, как оно задано в конфигураторе.
<3начение> | Выражение, содержащее устанавливаемое значение реквизита.

Описание:

Метод УстановитьАтрибут позволяет установить значение реквизита по имени идентификатора, как оно задано в конфигураторе.

Пример:

Опер.УстановитьАтрибут("ЦенаРозн", ЦенаТов);

ПолучитьАтрибут

Получить значение реквизита по имени идентификатора.

Синтаксис:

ПолучитьАтрибут(<ИмяРеквизита>)

Англоязычный синоним:

GetAttrib

Параметры:

<ИмяРеквизита>

Строковое выражение, содержащее имя реквизита, как оно задано в конфигураторе.

Возвращаемое значение:

Значение реквизита <ИмяРеквизита>.

Описание:

Метод ПолучитьАтрибут позволяет получить значение реквизита по имени идентификатора, как оно задано в конфигураторе.

Пример:

ЦенаТов = Опер.ПолучитьАтрибут("ЦенаРозн");

ВыбратьПроводки

Открывает выборку проводок текущей операции.

Синтаксис:

ВыбратьПроводки()

Англоязычный синоним:

Select Entries

Возвращаемое значение:

Число: 1 — действие выполнено и в выборке есть хотя бы одна проводка;

0 —действие не выполнено или в выборке нет ни одной проводки.

Описание:

Метод ВыбратьПроводки открывает выборку проводок текущей операции. Данный метод предназначен для организации перебора проводок операции и используется вмесет с методом ПолучитьПроводку.

Пример:

Опер = СоздатьОбъект("Операция");

Опер.НайтиОперацию(ВыбрДокумент);

Опер.ВыбратьПроводки();

Пока Опер.ПолучитьПроводку() = 1 Цикл

   Сообщить("Проводка " + Опер.Дебет.Счет + " - " + Опер.Кредит.Счет);

КонецЦикла;

ПолучитьПроводку

Получить проводку из выборки, открытой методом

ВыбратьПроводки.

Синтаксис:

ПолучитьПроводку()

Англоязычный синоним:

GetEntry

Возвращаемое значение:

Число: 1 — следующая проводка выбрана успешно; 0 — следующая проводка не выбрана (отсутствует).

Описание:

Метод ПолучитьПроводку выбирает очередную проводку из выборки, содержащей проводки текущей операции. Перед применением метода ПолучитьПроводку выборка должна быть открыта при помощи метода ВыбратьПроводки.

Метод ПолучитьПроводку используется для организации цикла по проводкам текущей операции. Условием цикла может служить равенство 1 возвращаемого значения метода: цикл выполняется, пока метод ПолучитьПроводку возвращает 1.

Метод возвращает 0, когда очередная проводка не выбрана. Это происходит, если при предыдущем применении метода была выбрана последняя проводка выборки.

Пример:

Опер = СоздатьОбъект("Операция");

Опер.НайтиОперацию(ВыбрДокумент);

Опер.ВыбратьПроводки();

Пока Опер.ПолучитьПроводку() = 1 Цикл

   Сообщить("Проводка " + Опер.Дебет.Счет + " - " + Опер.Кредит.Счет);

КонецЦикла;

ПроводкаВыбрана

Определяет выбрана ли проводка операции.

Синтаксис:

ПроводкаВыбрана()

Англоязычный синоним:

EntrySelected

Возвращаемое значение:

Число: 1 — проводка выбрана; 0 — проводка не выбрана.

Описание:

Метод ПроводкаВыбрана позволяет определить, спозиционирована ли в настоящий момент некоторая проводка в операции или нет, то есть можно ли обращаться к атрибутам и методам проводки.

Пример:

Опер = СоздатьОбъект("Операция");

Опер.НайтиОперацию(ВыбрДокумент);

Опер.ВыбратьПроводки();

Опер.ПолучитьПроводку();

Если Опер.ПроводкаВыбрана() = 0 Тогда

   Сообщить("Нет проводок в операции");

КонецЕсли;

КоличествоПроводок

Оперделяет количество проводок в операции включая и проводки и корреспонденции.

Синтаксис:

КоличествоПроводок()

Англоязычный синоним:

EntriesCount

Возвращаемое значение:

Целое число — количество проводок в текущей операции.

Описание:

Метод позволяет опеределить полное количество проводок и корреспонденции в операции.

Пример:

Опер = СоздатьОбъект("Операция");

Опер.НайтиОперацию(ВыбрДокумент);

Для Инд = 1 До Опер.КоличествоПроводок() Цикл

   Опер.ПолучитьПроводкуПоНомеру(Инд);

КонецЦикла;

ПолучитьПроводкуПоНомеру

Выбрать в качестве текущей проводку по ее номеру и номеру корреспонденции.

Синтаксис 1:

ПолучитьПроводкуПоНомеру(<АбсолютныиНомерПроводки>)

Синтаксис 2:

ПолучитьПроводкуПоНомеру(<НомерПроводки>, <НомерКорреспонденции>)

Англоязычный синоним:

GetEntryByNumber

Параметры:

<АбсолютныйНомерПроводки> | Необязатальный параметр. Число — абсолютный номер проводки в операции (включая проводки и корреспонденции). Если не задан –1.
<НомерПроводки> | Необязатальный параметр. Число — номер проводки в операции.
<НомерКорреспонденции> | Необязатальный параметр. Число — номер корреспонденции в проводке. Параметр имеет смысл, если указан параметр <НомерПроводки>.

Возвращаемое значение:

Число: 0 — проводка не найдена; 1 — проводка найдена.

Описание:

Метод ПолучитьПроводкуПоНомеру выбирает в качестве текущей проводку или корреспонденцию проводки.

Если передан один параметр, то он воспринимается, как абсолютный номер проводки (корреспонденции) в операции среди всех проводок и корреспонденции. Если передано два параметра, то первый из них — это номер проводки, а второй — номер корреспонденции в проводке.

Пример:

Опер = СоздатьОбъект("Операция");

Опер.НайтиОперацию(ВыбрДокумент);

Опер.ПолучитьПроводкуПоНомеру(3, 2);

Для Инд = 1 До Опер.КоличествоПроводок() Цикл

   Опер.ПолучитьПроводкуПоНомеру(Инд);

КонецЦикла;

Пров

Обращение к данным проводки по номеру.

Синтаксис:

Пров(<НомерПроводки>, <НомерКорреспонденции>)

Англоязычный синоним:

Entry

Параметры:

<НомерПроводки> | Необязатальный параметр. Число — номер проводки в операции. Если параметр не задан, то используется текущая проводка.
<НомерКорреспонденции> | Необязатальный параметр. Число — номер корреспонденции в проводке. Параметр имеет смысл, если указан параметр <НомерКорреспонденции>.

Возвращаемое значение:

Ссылка на указанную проводку.

Описание:

Метод Пров является специальным методом, позволяющим обратиться непосредственно к данным проводки операции по номеру, без установки текущей проводки. Возвращаемое методом значение является ссылкой на проводку. Оно не может использоваться как значение, а предназначено только для доступа к атрибутам проводки. В основном метод Пров имеет смысл применять в формулах типовых операций.

Метод Пров позволяет обратится к атрибутам проводки Сумма, СуммаВал, Количество, Валюта, Дебет, Кредит, <Реквизит>.

Пример:

Опер = СоздатьОбъект("Операция");

Опер.НайтиОперацию(ВыбрДокумент);

Сообщить(Пров(2, 3).Дебет.Счет);

НомерПроводки

Определяет номер текущей проводки.

Синтаксис:

НомерПроводки()

Англоязычный синоним:

EntryNumber

Возвращаемое значение:

Число — номер проводки.

Описание:

Для текущей проводки (корреспонденции) возвращает ее номер (не абсолютный, а именно номер проводки без учета корреспонденции).

Пример:

Опер = СоздатьОбъект ("Операция");

Опер.НайтиОперацию(ВыбрДокумент);

Для Инд = 1 До Опер.КоличествоПроводок() Цикл

   Опер.ПолучитьПроводкуПоНомеру(Инд);

   Сообщить("Проводка " + Опер.НомерПроводки() +

            "Корр. " + Опер.НомерКорреспонденции());

КонецЦикла;

ПланСчетов

Выдает план счетов текущей проводки.

Синтаксис:

ПланСчетов()

Англоязычный синоним:

ChartOfAccounts

Возвращаемое значение:

Значение типа «План Счетов».

Описание:

Для текущей проводки возвращает ее план счетов.

Пример:

Опер = СоздатьОбъект("Операция");

Опер.НайтиОперацию(ВыбрДокумент);

Для Инд = 1 До Опер.КоличествоПроводок() Цикл

   Опер.ПолучитьПроводкуПоНомеру(Инд);

   Сообщить("Проводка " + Опер.НомерПроводки() + "Корр. " +

            Опер.НомерКорреспонденции() + "Пл.сч." + Опер.ПланСчетов());

КонецЦикла;

НомерКорреспонденции

Определяет номер текущей корреспонденции в операции.

Синтаксис:

НомерКорреспонденции()

Англоязычный синоним:

CorrespondenceNumber

Возвращаемое значение:

Число — номер текущей корреспонденции в проводке.

Описание:

Для текущей проводки (корреспонденции) возвращает ее номер корреспонденции, если проводка не сложная — 1.

Пример:

Опер = СоздатьОбъект("Операция");

Опер.НайтиОперацию(ВыбрДокумент);

Для Инд = 1 До Опер.КоличествоПроводок() Цикл

   Опер.ПолучитьПроводкуПоНомеру(Инд);

   Сообщить("Проводка " + Опер.НомерПроводки() +

            "Корр. " + Опер.НомерКорреспонденции());

КонецЦикла;

СложнаяПроводка

Определяет является ли текущая проводка сложной.

Синтаксис:

СложнаяПроводка()

Англоязычный синоним:

ComplexEntry

Возвращаемое значение:

Число: 1 — текущая проводка является сложной; 0 — текущая проводка не является сложной.

Описание:

Для текущей проводки (корреспонденции) определяется является ли она сложной. Под сложной проводкой понимается проводка, состоящая из нескольких корреспонденции.

Пример:

Опер = СоздатьОбъект("Операция");

Опер.НайтиОперацию(ВыбрДокумент);

Для Инд = 1 До Опер.КоличествоПроводок() Цикл

   Опер.ПолучитьПроводкуПоНомеру(Инд);

   Если Опер.СложнаяПроводка() = 1 Тогда

      Сообщить("Проводка сложная");

   КонецЕсли;

КонецЦикла;

НомерСтрокиДокумента

Выдает номер строки документа, по которой сформирована текущая проводка.

Синтаксис:

НомерСтрокиДокумента()

Англоязычный синоним:

DocLineNum

Возвращаемое значение:

Число — номер строки документа, сформировавшей данную проводку.

Описание:

При добавлении проводок в операцию в процессе проведения документа существует возможность привязать каждую проводку к определенной строке документа. Это позволяет в дальнейшем получить из документа по номеру строки дополнительную информацию о проводке. Для того, что в проводке был простален номер строки документа следует в модуле документа перед добавлением проводки в операцию использовать метод ПривязыватьСтроку.

Метод НомерСтрокиДокумента выдает для текущей проводки номер строки документа, который был привязан в момент добавления проводки.

Пример:

Опер = СоздатьОбъект("Операция");

Опер.НайтиОперацию(ВыбрДокумент);

Опер.ВыбратьПроводки();

Пока Опер.ПолучитьПроводку() = 1 Цикл

   Сообщить("Номер строки " + Опер.НомерСтрокиДокумента());

КонецЦикла;

ПредставлениеПроводки

Получить представление для текущей проводки.

Синтаксис:

ПредставлениеПроводки(<ПоСубконто>)

Англоязычный синоним:

Entry Presentation

Параметры:

<ПоСубконто> Необязательный параметр. Флаг включения в представление проводки представления субконто проводки. Число:

0 — не включать представление субконто;

1 — включать представление субконто;

2 — включать развернутое представление субконто. Значение по умолчанию: 0.

Возвращаемое значение:

Строка — представление для текущей проводки.

Описание:

Представлением называется символьная строка, содержащая информацию из реквизитов проводки и операции. Эта строка может быть использована для отображения проводки в различных отчетах, диалогах и других визуальных элементах конфигурации. Формат представления определяется в конфигураторе при редактировании свойств проводки.

Метод ПредставлениеПроводки позволяет получить представление для текущей проводки.

Параметр метода позволяет указать, включать ли в представление проводки и представление субконто проводки. Представление субконо содержит информацию из реквизитов значения субконто. Представление может быть задано в конфигураторе при редактировании свойств вида субконто.

Пример:

Опер = СоздатьОбъект("Операция");

Опер.НайтиОперацию(ВыбрДокумент);

Опер.ВыбратьПроводки();

Пока Опер.ПолучитьПроводку() = 1 Цикл

   Сообщить("Проводка " + Опер.ПредставлениеПроводки(1));

КонецЦикла;

ПредставлениеСубконто

Получить представление для субконто текущей проводки.

Синтаксис:

ПредставлениеСубконто()

Англоязычный синоним:

SubcontoPresentation

Возвращаемое значение:

Символьная строка — представление субконто текущей проводки.

Описание:

Представлением называется символьная строка, содержащая информацию из реквизитов субконто. Эта символьная строка может быть использована для отображения значений реквизитов субконто в различных отчетах, диалогах и других визуальных элементах конфигурации.

Представление может быть задано в конфигураторе при редактировании свойств вида субконто.

Метод ПредставлениеСубконто позволяет получить представление для всех субконто текущей проводки.

Пример:

Опер = СоздатьОбъект("Операция");

Опер.НайтиОперацию(ВыбрДокумент);

Опер.ВыбратьПроводки();

Пока Опер.ПолучитьПроводку() = 1 Цикл

   Сообщить("Субконто " + Опер.ПредставлениеСубконто());

КонецЦикла;

НазначитьТип

Назначить тип для реквизита неопределенного вида.

Синтаксис:

НазначитьТип(<ИмяРеквизита>, <ИмяТипа>, <Длина>, <Точность>)

Англоязычный синоним:

SetType

Параметры:

<ИмяРеквизита> | Строковое выражение — название реквизита операции или проводки неопределенного типа, как он назван в конфигураторе.
<ИмяТипа> | Строковое выражение — название типа данных (или Вид субконто), который назначается реквизиту операции или проводки. Например: "Строка", "Число", "Справочник.Товары", "Документ.РасходнаяНакладная" и т. п.
<Длина> | Необязательный параметр. Числовое выражение — длина поля представления данных. Имеет смысл только при задании числового или строкового типа.
<Точность> | Необязательный параметр. Числовое выражение — число знаков числа после десятичной точки. Имеет смысл только при задании числового типа.

Описание:

Метод НазначитьТип позволяет назначить тип для реквизита, которому в конфигураторе назначен тип «Неопределенный».

Пример:

Операция.НазначитьТип("ТМЦ", "Справочник.Товары");

Новая

Создать новую операцию.

Синтаксис:

Новая()

Англоязычный синоним:

New

Описание:

Метод Новая используется для создания операций из встроенного языка, не принадлежащих документу какого либо вида.

Такая операция будет являться полным аналогом операции введенной вручную, то есть будет принадлежать документу специального вида «Операция». Операции, принадлежащие докуменам различных видов записываются при проведении документа без использования метода Новая.

Метод Новая может быть вызван только для объектов типа «Операция» созданных функцией СоздатьОбъект.

После вызова метода Новая могут быть заданы значения реквизитов операции и добавлены проводки. После этого для записи операции должен быть вызван метод Записать.

Пример:

* Создание и запись новой операции созданной в модуле отчета или обработки

Опер = СоздатьОбъект("Операция");

Опер.Новая();

Опер.Дата = РабочаяДата();

Опер.Содержание = "Выдача денег из кассы";

Опер.Записать();

ЗаписатьПроводки

Записать в информационную базу уже добавленные и заполненные проводки операции.

Синтаксис:

ЗаписатьПроводки()

Англоязычный синоним:

WriteEntries

Описание:

Метод ЗаписатьПроводки выполняет запись в информационную базу уже добавленных и заполненных проводок операции. Метод может использоваться только для атрибута «Операция» документа в момент проведения (в процедуре ОбработкаПроведения). При этом происходит обновление бухгалтерских итогов. Это позволяет при проведении документа обращаться к бухгалтерским итогам уже измененным проводками, записанными этим документом. После выполнения метода ЗаписатьПроводки и до окончания процедуры ОбработкаПроведение уже невозможно изменять или удалять проводки, добавленные до вызова этого метода.

Данный метод имеет смысл использовать, только в том случае, если существует необходимость обращения к итогам, измененным проводками записываемой операции.

Замечание. При записи сложной проводки, если у главной корреспонденции сложной проводки не указана сумма (равна 0), то она автоматически вычисляется на основании подчиненных корреспонденции.

Пример:

Процедура СписаниеСчетаНаСч20(Счт)

   // создаем и формируем проводки

КонецПроцедуры

Процедура СписаниеСчета20На40()

   // создаем и формируем проводки

КонецПроцедуры

Процедура ОбработкаПроведения()

   Сч20 = СчетПоКоду("20");

   Cч40 = CчeтПoKoдy("40");

   СписаниеСчетаНаСч20(СчетПоКоду("25"));

   СписаниеСчетаНаСч20(СчетПоКоду("26"));

   Операция.ЗаписатьПроводки();

   СписаниеСчета20На40();

   Операция.Содержание = "Закрытие фин. результатов за " +

                         Формат(ДатаДок, "Д ММММГГГГ");

   Операция.Записать();

КонецПроцедуры

Записать

Записать измененную или новую операцию.

Синтаксис:

Записать()

Англоязычный синоним:

Write

Описание:

Метод Записать выполняет запись новой или измененной операции.

Он может быть использован в следующих ситуациях:

· метод Записать может быть вызван для записи новой или измененной ручной операции (принадлежащей документу специального вида «Операция»). Такие операции могут создаваться и редактироваться пользователем вручную или из встроенного языка объектом «Операция», созданным функцией СоздатьОбъект.

· метод Записать может быть вызван для записи операции созданной при проведении документа в предопределенной процедуре ОбработкаПроведения. Данный метод должен быть вызван после заполнения операции содержанием реквизитов и проводками.

· этот метод может применяться в Модуле формы операции непосредственно к операции локального контекста, в этом случае данный метод отрабатывает те же действия, как интерактивное нажатие пользователем кнопки с формулой "#3аписать".

Замечание. При записи сложной проводки, если у главной корреспонденции сложной проводки не указана сумма (равна 0), то она автоматически вычисляется на основании подчиненных корреспонденции.

Пример:

* Создание и запись новой операции созданной в модуле отчета или обработки.

Опер = СоздатьОбъект("Операция");

Опер.Новая();

Опер.Дата = РабочаяДата();

Опер.Содержание = "Деньги по чеку";

Опер.НоваяПроводка();

Опер.Дебет.Счет = СчетПоКоду("50");

Опер.Кредит.Счет = СчетПоКоду("51");

Опер.Сумма = 1000000;

Опер.Записать();

* Запись операции в модуле документа в процессе проведения

Процедура ОбработкаПроведения()

   Операция.Содержание = "Выдача денег из кассы";

   Операция.НоваяПроводка();

   Операция.Дебет.Счет = СчетПоКоду("71");

   Операция.Дебет.Сотрудники = Сотрудник;

   Операция.Кредит.Счет = СчетПоКоду("50");

   Операция.Сумма = СуммаВыдачи;

   Операция.Записать();

КонецПроцедуры

Удалить

Удаление операции.

Синтаксис:

Удалить(<Режим>)

Англоязычный синоним:

Delete

Параметры:

<Режим>

Необязательный параметр. Числовое выражение:

1 — непосредственное удаление; 0 — пометка на удаление. Значение по умолчанию — 1.

Описание:

Метод Удалить удаляет (или помечает на удаление) текущую операцию.

Замечание. Непосредственное удаление объекта следует применять только в особых случаях, так как могут существовать ссылки на удаляемое значение в документах, справочниках и т. д. и непосредственное удаление может повлечет нарушение ссылочной целостности.

Данный метод может использоваться только для объектов, созданных функцией СоздатьОбъект.

Если метод Удалить применен к операции принадлежащей документу не специального вида «Операция», то происходит удаление (или пометка) всего документа.

Пример:

Опер = СоздатьОбъект("Операция");

Опер.НайтиОперацию(ВыбрДок);

Опер.Удалить(0);

ПометкаУдаления

Проверяет наличие пометки на удаление текущей операции.

Синтаксис:

ПометкаУдаления()

Англоязычный синоним:

DeleteMark

Возвращаемое значение:

Число: 1 — операция помечена на удаление; 0 — операция не помечена на удаление.

Описание:

Метод используется для проверки, помечена ли на удаление текущая операция или документ, которому принадлежит операция.

Пример:

Опер = СоздатьОбъект("Операция");

Опер.ВыбратьОперации(ДатаНач, ДатаКон);

Пока Опер.ПолучитьОперацию() = 1 Цикл

   Если Опер.ПометкаУдаления() = 1 Тогда

      Сообщить(Опер.Документ);

   КонецЕсли;

КонецЦикла;

СнятьПометкуУдаления

Снять пометку удаления операции.

Синтаксис:

СнятьПометкуУдаления()

Англоязычный синоним:

ClearDeleteMark

Описание:

Метод СнятьПометкуУдаления снимает пометку удаления текущей операции.

Данный метод может использоваться только для объектов, созданных функцией СоздатьОбъект. Если метод СнятьПометкуУдаления применен к операции принадлежащей документу не специального вида «Операция», то происходит снятие пометки удаления всего документа.

Пример:

Опер = СоздатьОбъект("Операция");

Опер.ВыбратьОперации(ДатаНач, ДатаКон);

Пока Опер.ПолучитьОперацию() = 1 Цикл

   Если Опер.ПометкаУдаления() = 1 Тогда

      Опер.СнятьПометкуУдаления();

   КонецЕсли;

КонецЦикла;

ПолучитьВремя

Возвращает время текущей операции.

Синтаксис:

ПолучитьВремя(<Часы>, <Минуты>, <Секунды>)

Англоязычный синоним:

GetTime

Параметры:

<Часы> | Необязательный параметр. Идентификатор переменной, в которую метод возвращает число — час времени операции.
<Минуты> | Необязательный параметр. Идентификатор переменной, в которую метод возвращает число — минуты времени операции.
<Секунды> | Необязательный параметр. Идентификатор переменной, в которую метод возвращает число — секунды времени операции.

Возвращаемое значение:

Строковое значение времени в виде "ЧЧ.ММ.СС".

Описание:

Метод ПолучитьВремя возвращает время операции. Время записывается в переменные, передаваемые как параметры при вызове метода.

Пример:

Перем Час;

Перем Минута;

Перем Секунда;

Опер = СоздатьОбъект("Операция");

Опер.ВыбратьОперации(ДатаНач, ДатаКон);

Пока Опер.ПолучитьОперацию() = 1 Цикл

   Опер.ПолучитьВремя(Час, Минута, Секунда);

КонецЦикла;

УстановитьВремя

Задает время текущей операции.

Синтаксис:

УстановитьВремя(<Часы>, <Минуты>, <Секунды>)

Англоязычный синоним:

SetTime

Пареметры:

<Часы> | Необязательный параметр. Число — час операции.
<Минуты> | Необязательный параметр. Число — минуты операции.
<Секунды> | Необязательный параметр. Число — секунды операции.

Описание:

Метод УстановитьВремя изменяет время операции.

Данный метод может использоваться только для объектов, созданных функцией СоздатьОбъект. Так как время является значением относящимся к документу, то вызов этого метода изменяет время собственно документа, которому принадлежит операция.

Пример:

Перем Час;

Перем Минута;

Перем Секунда;

Опер = СоздатьОбъект("Операция");

Опер.ВыбратьОперации(ДатаНач, ДатаКон);

Пока Опер.ПолучитьОперацию() = 1 Цикл

   Опер.ПолучитьВремя(Час, Минута, Секунда);

   Опер.УстановитьВремя(Час + 1, Минута, Секунда);

КонецЦикла;

ПолучитьДокумент

Возвращает значение типа «Документ» содержащий документ, которому принадлежит операция.

Синтаксис:

ПолучитьДокумент()

Англоязычный синоним:

GetDocument

Возвращаемое значение:

Значение типа «Документ».

Описание:

Метод ПолучитьДокумент возвращает значение типа «Документ» содер-жащий документ, которому принадлежит операция. Его следует использовать, если нужно передать какому либо методу или запомнить в переменную значение типа документ операции. Для доступа к данным документа непосредственно из объекта типа «Операция» следует использовать атрибут объекта «Документ».

Пример:

Опер = СоздатьОбъект("Операция");

Док = СоздатьОбъект("Документ");

Опер.ВыбратьОперации(ДатаНач, ДатаКон);

Пока Опер.ПолучитьОперацию() = 1 Цикл

   Сообщить("Номер " = Опер.Документ.Номер);

   Док.НайтиДокумент(Опер.ПолучитьДокумент());

КонецЦикла;

ВключитьПроводки

Включает/выключает проводки операции.

Синтаксис:

ВключитьПроводки(<Флаг>)

Англоязычный синоним:

EntriesOn

Пареметры:

<Флаг>

Необязательный параметр. 1 — включить проводки операции. 0 — выключить проводки операции. Если параметр не передан — состояние не изменяется.

Возвращаемое значение:

Состояние на момент вызова метода. 1 — проводки операции включены; 0 — проводки операции выключениы.

Описание:

Для каждой бухгалтерской операции может быть выполнено выключение проводок. Это значит, что проводки остаются, но исключаются из итогов. Эти действия могут выполняться пользователем интерактивно и методом ВключитьПроводки для объекта типа «Операция».

Данный метод может использоваться только для объектов, созданных функцией СоздатьОбъект. Изменяется состояние всех выбранной проводок операции одноврменно.

Пример:

Опер = СоздатьОбъект("Операция");

Опер.ВыбратьОперации(ДатаНач, ДатаКон);

Пока Опер.ПолучитьОперацию() = 1 Цикл

   Опер.ВключитьПроводки(0);

КонецЦикла;

НоваяПроводка

Создать новую проводку.

Синтаксис:

НоваяПроводка()

Англоязычный синоним:

NewEntry

Описание:

Метод создает новую проводку для текущей операции. Новая проводка становится текущей.

Во-первых, метод может быть вызван для объекта «Операция», созданного функцией СоздатьОбъект, при создании или изменении операции принадлежащей документу специального вида «Операция».

Во-вторых, метод может быть вызван для объекта, являющегося атрибутом документа, при создании операции принадлежащей документу, в процессе проведения документа.

Созданная проводка будет записана и повлечет изменения в бухгалтерских итогах после вызова метода операции Записать.

Пример:

* Создание и запись новой операции созданной в модуле отчета или обработки

Опер = СоздатьОбъект("Операция");

Опер.Новая();

Опер.Дата = РабочаяДата();

Опер.Содержание = "Деньги по чеку";

Опер.НоваяПроводка();

Опер.Дебет.Счет = СчетПоКоду("5 0");

Опер.Кредит.Счет = СчетПоКоду("51");

Опер.Сумма = 1000000;

Опер.Записать();

* Запись операции в модуле документа в процессе проведения

Процедура ОбработкаПроведения()

   Операция.Содержание = "Выдача денег из кассы";

   Операция.НоваяПроводка();

   Операция.Дебет.Счет = СчетПоКоду("71");

   Операция.Дебет.Сотрудники = Сотрудник;

   Операция.Кредит.Счет = СчетПоКоду("50");

   Операция.Сумма = СуммаВыдачи;

   Операция.Записать();

КонецПроцедуры

НоваяКорреспонденция

Создает новую корреспонденцию проводки.

Синтаксис:

НоваяКорреспонденция()

Англоязычный синоним:

NewCorrespondence

Описание:

Метод НоваяКорреспонденция создает новую корреспонденцию для проводки. Метод должен использоваться после того, как новая проводка создана с использованием метода НоваяПроводка.

Данный метод предназначен для формирования сложных проводок, состоящих из нескольких корреспонденции.

Для проводки может быть создано практически неограниченное число корреспонденции путем последовательного вызова метода НоваяКорреспонденция. После создания корреспонденции изменение атрибутов проводки вызывает изменение атрибутов новой корреспонденции.

Пример:

Процедура ОбработкаПроведения()

   Операция.Содержание = "Выдача денег из кассы";

   Операция.НоваяПроводка();

   Операция.Кредит.Счет = СчетПоКоду("50");

   Операция.Сумма = Итог("СуммаВыдачи");

   ВыбратьСтроки();

   Пока ПолучитьСтроку() = 1 Цикл

      Операция.НоваяКорреспонденция();

      Операция.Дебет.Счет = СчетПоКоду("71");

      Операция.Дебет.Сотрудники = Сотрудник;

      Операция.Сумма = СуммаВыдачи;

   КонецЦикла;

   Операция.Записать();

КонецПроцедуры

ПроверитьПроводку

Проверить проводку на соответствие корректным проводкам.

Синтаксис:

ПроверитьПроводку()

Англоязычный синоним:

CheckEntry

Возвращаемое значение:

Число: 1 — проводка соответствует корректным проводкам; 0 — не соответствует.

Описание:

Метод ПроверитьПроводку проверяет проводку на соответствие корректным проводкам.

Пример:

Опер = СоздатьОбъект("Операция");

Опер.НайтиОперацию(ВыбрДок);

Пока Опер.КоличествоПроводок() > 0 Цикл

   Опер.ПолучитьПроводкуПоНомеру(1);

   Если Опер.ПроверитьПроводку() = 0 Тогда

      Опер.УдалитьПроводку();

   КонецЕсли;

КонецЦикла;

Опер.Записать();

УдалитьПроводку

Удалить проводку.

Синтаксис:

УдалитьПроводку()

Англоязычный синоним:

DeleteEntry

Описание:

Метод удаляет текущую проводку или корреспонденцию операции. Метод может быть вызван объектом «Операция», созданным функцией СоздатьОбъект, при создании или изменении операции принадлежащей документу специального вида «Операция».

Собственно изменение в составе проводок будут записаны и повлекут из-менния в бухгалтерских итогах после вызова метода операции Записать.

Пример:

Опер = СоздатьОбъект("Операция");

Опер.НайтиОперацию(ВыбрДок);

Пока Опер.КоличествоПроводок() > 0 Цикл

   Опер.ПолучитьПроводкуПоНомеру(1);

   Опер.УдалитьПроводку();

КонецЦикла;

Опер.Записать();

Атрибуты контекста модуля формы операции

БИ

Значение, содержащее агрегатный объект типа «БухгалтерскиеИтоги»

Синтаксис:

БИ

Англоязычный синоним:

AT

Описание:

Данный объект включается в контекст формы операции для облегчения доступа в итогам при работе с типовыми операциями. Это позволяет обращаться в формулах типовых операций к этому объекту для получения итогов.

Пример:

* Формула суммы проводки типовой опеарции

БИ.ПериодМ(ДатаОперации);

БИ.СКД(Дебет.Счет)

Методы контекста модуля формы операции

ПоТиповойОперации

Определяет, вводится ли новая операция с использованием типовой, и какая типовая операция используется.

Синтаксис:

ПоТиповойОперации (<Переменная>)

Англоязычный синоним:

ByTemplateOper

Параметры:

<Переменная>

Необязательный параметр. Имя переменной, в которую будет записано наименование типовой операции.

Возвращаемое значение:

Число: 1 — если при вводе операции вручную использована типовая опера-ци; 0 — если при вводе операции вручную не использовалась типовая операция.

Описание:

Определяет, вводится ли новая операция с использованием типовой. Если указан параметр <Переменная>, в переменную будет записано имя типовой операции;

Пример:

Процедура ПриОткрытии()

   Если ПоТиповойОперации() = 0 Тогда

      ИспользоватьВалюту(Константа.ОснВалюта);

   КонецЕсли;

КонецПроцедуры;

ИспользоватьВалюту

Установка валюты используемой по умолчанию.

Синтаксис:

МспользоватьВалюту(<Валюта>)

Англоязычный синоним:

UseCurrency

Параметры:

<Валюта>

Необязательный параметр. Значение типа «Справочник», имеющий вид, определенный при настройке валютного учета. Если параметр не задан, установка не изменяется.

Возвращаемое значение:

Значение установки используемой валюты на момент до вызова метода.

Описание:

Данный метод устанавливает в форме используемую по умолчанию валюту. Она будет автоматически подставляться в валюту вводимых проводок, если в проводках используются валютные счета. После автоматической подстановки пользователь может изменить валюту по своему усмотрению.

Пример:

Процедура ПриОткрытии()

   ИспользоватьВалюту(Константа.ОснВалюта);

КонецПроцедуры;

ИспользоватьКорСчет

Установка корреспондирующего счета используемого по умолчанию.

Синтаксис:

ИспользоватьКорСчет(<Счет>)

Англоязычный синоним:

UseCorAccount

Параметры:

<Счет>

Необязательный параметр. Значение типа «Счет». Если параметр не задан, установка не изменяется.

Возвращаемое значение:

Значение установки используемого по умолчанию корреспондирующего счета на момент до вызова метода.

Описание:

Данный метод устанавливает в форме используемый по умолчанию корреспондирующий счет. Он будет автоматически подставляться проводку взамен не указанных пользователем счетов. Эта возможность может быть использована, например, для ввода первоначальных остатков для автоматической простановки счета, корреспондирующего с введенным.

Пример:

Процедура ПриОткрытии()

   ИспользоватьКорСчет(Константа.СчетПервОстатков);

КонецПроцедуры;

ИспользоватьСубконто

Установка субконто используемого по умолчанию.

Синтаксис:

ИспользоватьСубконто(<ВидСубконто>, <Субконто>)

Англоязычный синоним:

UseSubconto

Параметры:

<ВидСубконто> | Значение типа «ВидСубконто».
<Субконто> | Необязательный параметр. Значение субконто. Если параметр не задан, установка не изменяется.

Возвращаемое значение:

Значение установки используемого по умолчанию субконто на момент до вызова метода.

Описание:

Данный метод устанавливает в форме используемые по умолчанию значения субконто разных видов. Они будут автоматически подставляться субконто проводок, если в проводках используются счета с этими видами субконто. После автоматической подстановки пользователь может изменить субконто по своему усмотрению.

Пример:

Процедура ПриОткрытии()

   ИспользоватьСубконто(ВидыСубконто.Склады, Константа.ОснСклад);

КонецПроцедуры;

ИзменениеПорядкаСтрок

Установить режим изменения порядка строк в форме операции.

Синтаксис:

ИзменениеПорядкаСтрок(<Разрешить>)

Англоязычный синоним:

ChangeLinesOrder

Параметры:

<Разрешить>

Необязательный параметр. Число: 1 — разрешить изменение порядка строк в операции; 0 — запретить. Если параметр не задан, то режим не меняется.

Возвращаемое значение:

Режим изменения порядка строк до исполнения метода. Число: 1 — разрешено изменение порядка строк в операции; 0 — запрещено.

Описание:

Метод ИзменениеПорядкаСтрок позволяет установить режим изменения порядка строк в форме операции.

Пример:

ИзменениеПорядкаСтрок(0);

Предопределенные процедуры модуля формы операции

Описанные в данном разделе системные предопределенные процедуры должны располагаться только в модуле формы операции (см. «Виды программных модулей»).

В основном данные процедуры предназначены для расширения возможности программного управления правами доступа к системе.

Предопределенные процедуры не является встроенными процедурами языка. Для них зарезервированы только название и синтаксис. Тело процедур должно быть написано самим разработчиком в соответствующих программных модулях. Вызов предопределенных процедур на исполнение производится в системе 1С:Предприятие неявно при возникновении соответствующего события. Описание предопределенных процедур также см. гл. «Системные предопределенные процедуры».

ВводНового

Предопределенная процедура при вводе новой операции.

Синтаксис:

ВводНового(<ПризнКопирования>, <ОбъектКопирования>)

Англоязычный синоним:

InputNew

Параметры:

<ПризнКопирования> | Признак того, что объект введен копированием. Число: 1 — объект введен копированием, 0 — просто новый объект. Данный признак может быть использован для анализа необходимости инициализации реквизитов нового объекта.
<ОбъектКопирования> | Объект, который был скопирован.

Описание:

Вызов процедуры ВводНового производится в системе 1С:Предприятие неявно в момент выбора пункта «Новая» из меню «Действия» главного меню системы 1С:Предприятие при работе с журналом операций, или в других случаях при открытии формы операции для ввода новой операции. Данная процедура может использоваться, например, для установки начальных значений (по умолчанию) реквизитов новой операции. Если в данной предопределенной процедуре установить статус возврата 0 (например, если данному пользователю нельзя вводить операции), ввода новой операции и открытие ее формы не будет выполнено.

Процедура ВводНового должна размещаться в модуле формы операции (см. «Виды программных модулей»).

Пример:

Процедура ВводНового()

   ИспользоватьВалюту(Константа.ОснВалюта);

КонецПроцедуры

См. также: СтатусВозврата

ВводНаОсновании

Предопределенная процедура при вводе новой операции на основании.

Синтаксис:

ВводНаОсновании(<ДокОснование>)

Англоязычный синоним:

InputCausedBy

Параметры:

<ДокОснование>

Значение документа, на основании которого вводится новая операция.

Описание:

Вызов процедуры ВводНаОсновании производится в системе 1С:Предприятие неявно после выбора пункта «Ввести на основании» из меню «Действия» главного меню системы 1С:Предприятие при работе с журналом операций или в других случаях, когда форма открывается для ввода на основании. В этот момент система подставляет фактическое значение параметра <ДокОснование>, содержащее объект типа «Документ», на которой находился курсор в момент выполнения данной команды.

Данная процедура может использоваться, например, для установки начальных значений (по умолчанию) реквизитов новой операции, вводимых на основании выбранного документа

Если в данной предопределенной процедуре установить статус возврата 0 (например, если данному пользователю нельзя вводить новые операции), ввода новой операции и открытие формы не будет выполнено.

Процедуру ВводНаОсновании можно размещать только в модуле формы операции (см. «Виды программных модулей»).

Пример:

Процедура ВводНаОсновании(ДокОсн)

   Если ДокОсн.Вид() = "ПлатПор" Тогда

      ИспользоватьСубконто(ВидыСубконто.Организации, ДокОсн.Получатель);

   КонецЕсли;

КонецПроцедуры

См. также: СтатусВозврата

ПриЗаписи

Предопределенная процедура вызывается при записи операции.

Синтаксис:

ПриЗаписи()

Англоязычный синоним:

OnWrite

Описание:

Вызов предопределенной процедуры ПриЗаписи производится в системе 1С:Предприятие при записи операции в форме операции. Если в данной предопределенной процедуре установить статус возврата — 0 (например, если не правильно заполнены реквизиты операции), запись операции не будет выполнена.

Данная предопределенная процедура может располагаться в модулях формы операции (см. «Виды программных модулей»).

Пример:

Процедура ПриЗаписи()

   Если ПустаяСтрока(Содержание) = 1 Тогда

      Предупреждение("Не заполнено содержание операции!");

      СтатусВозврата(0);

   КонецЕсли;

КонецПроцедуры

См. также: СтатусВозврата

ПриНачалеРедактированияСтроки

Предопределенная процедура вызывается при редактировании существующей проводки или корреспонденции операции.

Синтаксис:

ПриНачалеРедактированияСтроки()

Англоязычный синоним:

OnStartEditLine

Описание:

Вызов предопределенной процедуры ПриНачалеРедактированияСтроки производится в системе 1С:Предприятие в момент начала интерактивного редактирования существующей проводки или корреспонденции операции.

Если в данной предопределенной процедуре установить статус возврата 0 (например, если данному пользователю нельзя редактировать проводки операции), то проводка не будет изменена.

Данная предопределенная процедура может располагаться в модуле формы операции (см. «Виды программных модулей»).

Пример:

Процедура ПриНачалеРедактированияСтроки()

   Если НазваниеНабораПрав() = "Оператор" Тогда

      Предупреждение("У вас нет права изменять проводки!");

      СтатусВозврата(0);

   КонецЕсли;

КонецПроцедуры

См. также: СтатусВозврата

ПриВводеСтроки

Предопределенная процедура при вводе новой проводки или корреспонденции операции.

Синтаксис:

ПриВводеСтроки()

Англоязычный синоним:

OnNewLine

Описание:

Вызов предопределенной процедуры ПриВводеСтроки производится в системе ЮПредприятие при интерактивном вводе новой проводки или корреспонденции операции. Если в данной предопределенной процедуре установить статус возврата 0 (например, если данному пользователю редактировать операции), то новая строка не будет инициирована.

Данная предопределенная процедура может располагаться в модуле формы операции (см. «Виды программных модулей»).

Пример:

Процедура ПриНачалеРедактированияСтроки()

   Если НазваниеНабораПрав() = "Оператор" Тогда

      Предупреждение("У вас нет права добавлять проводки!");

      СтатусВозврата(0);

   КонецЕсли;

КонецПроцедуры

См. также: СтатусВозврата

ПриРедактированииНовойСтроки

Предопределенная процедура при редактировании новой проводки или корреспонденции операции.

Синтаксис:

ПриРедактированииНовойСтроки()

Англоязычный синоним:

OnEditNewLine

Описание:

Вызов предопределенной процедуры ПриРедактированииНовойСтроки производится в системе 1С:Предприятие в момент начала интерактивного редактирования новой проводки или корреспонденции операции. Данная процедура может использоваться, например, для установки начальных значений (по умолчанию) проводки. В данной предопределенной процедуре установка статуса возврата не имеет смысла, т. к. отказаться от ввода новой проводки в этот момент уже невозможно.

Данная предопределенная процедура может располагаться в модуле формы операции (см. «Виды программных модулей»).

Пример:

Процедура ПриРедактированияНовойСтроки()

   Фирма = Константа.ОснФирма;

КонецПроцедуры

См. также: СтатусВозврата

ПриУдаленииСтроки

Предопределенная процедура при удалении проводки или корреспонденции операции.

Синтаксис:

ПриУдаленииСтроки()

Англоязычный синоним:

OnDeleteLine

Описание:

Вызов предопределенной процедуры ПриУдаленииСтроки производится в системе 1С:Предприятие при интерактивном удалении проводки или корреспонденции операции.

Если в данной предопределенной процедуре установить статус возврата 0 (например, если данному пользователю нельзя редактировать проводки операции), удаление проводки или корреспонденции операции не будет выполнено.

Данная предопределенная процедура может располагаться только в модуле формы операции (см. «Виды программных модулей»).

Пример:

Процедура ПриНачалеРедактированияСтроки()

   Если НазваниеНабораПрав() = "Оператор" Тогда

      Предупреждение("У вас нет права изменять проводки!");

      СтатусВозврата(0);

   КонецЕсли;

КонецПроцедуры

См. также: СтатусВозврата

ПриИзмененииПорядкаСтрок

Предопределенная процедура при изменении порядка строк операции.

Синтаксис:

ПриМзмененииПорядкаСтрок(<Действие>)

Англоязычный синоним:

OnChangeLinesOrder

Параметры:

<Действие>

Число: 1 — перемещение строки вниз; -1 (минус единица) — перемещение строки вверх.

Описание:

Вызов предопределенной процедуры ПриИзмененииПорядкаСтрок производится системой 1С:Предприятие неявно при интерактивной попытке перемещения строк вверх-вниз и перенумерации (до выполнения действия).

Если в данной предопределенной процедуре установлен статус возврата 0 (например, если данному пользователю нельзя устанавливать данное значение отбора проводок), установка отбора не будет выполнена.

Данная предопределенная процедура может располагаться только в модуле формы операции (см. «Виды программных модулей»).

Пример:

Процедура ПриИзмененииПорядкаСтрок(Направление)

   СтатусВозврата(0);

КонецПроцедуры

См. также: СтатусВозврата


Part18

Глава 18
Работа с Журналами операций

Контекст работы с журналами операций

Журнал операций — средство для работы со списком операций. В терминах языка журнал операций не является специальным типом данных (он не имеет значения, его нельзя создать при помощи функции СоздатьОбъект).

С журналом в системе связана форма отображения списка операций и программный модуль формы журнала операций (см. «Виды программных модулей»). В локальном контексте этого программного модуля непосредственно доступны реквизиты формы. Кроме того, здесь непосредственно доступен объект «Операция», содержащий значение выбранной в журнале операции. Другими словами, в модуле формы журнала операций обращение к атрибутам и методам текущей операции выполняется напрямую.

Методы контекста Модуля формы журнала операций

Описанные в данном разделе методы доступны только в контексте модуля формы журнала операций (см. «Виды программных модулей»).

ВидыОтбора

Установить доступные виды отборов для журнала операций.

Синтаксис:

ВидыОтбора(<СписокОтборов>)

Англоязычный синоним:

KindsOfSelection

Параметры:

<СписокОтборов>

Необязательный параметр. Строковое выражение. Может принимать значения:

список имен отборов (через запятую) — в журнале операций будут доступны только указанные виды отборов;

символ «*» — для журнала используются все назначенные в Конфигураторе виды отборов;

пустая строка ("") — запрещаются все виды отборов.

Если параметр не указан, метод возвращает текущий список разрешенных отборов.

Возвращаемое значение:

Строковое значение, содержащее текущий (на момент до вызова метода) список отборов для журнала операций. Имена отбора в возвращаемой строке разделяются запятыми.

Описание:

Метод ВидыОтбора устанавливает доступные виды отборов журнала операций. Использование данного метода влияет на полноту списка видов отбора, который выдается пользователю в диалоге «Отбор» при работе с системой 1С:Предприятие.

Метод ВидыОтбора позволяет ограничить число видов отбора, доступных конкретному пользователю при работе с журналом операций, или совсем запретить выполнение отбора в журнале. Данный метод доступен только в контексте модуля формы журнала операций (см. «Виды программных модулей»).

Можно выделить 4 варианта использования данного метода.

1. Если параметр <СписокОтборов> не указан, метод возвращает текущий список отборов, установленных для журнала операций.

2. Чтобы ограничить использование отборов какими-либо конкретными видами отбора, список этих видов отбора следует передать методу в качестве параметра. Указывать в списке можно как имена отборов, автоматически задаваемые системой 1С:Предприятие, так и отборы, созданные в процессе конфигурирования: по реквизитам операции и по общим реквизитам документов.

«Системные» отборы задаются включением соответствующих опций в окне редактирования свойств операции в конфигураторе. Каждому виду отбора соответствует «системное» имя отбора — то, которое выдается пользователю в диалоге «Отбор», и которое можно использовать во встроенном языке (в том числе и при вызове метода ВидыОтбора).

Для журнала операций допустимы следующие «системные» имена отборов:

СуммаОперации — отбор по сумме операции;

Содержание — отбор по содержанию операции.

Кроме этого, в конфигураторе можно включить возможность выполнять отборы по дополнительным реквизитам операции. Для этого используется опция «Отбор» в закладке «Дополнительные» палитры свойств дополнительного реквизита операции. В этих случаях в качестве имен отбора следует использовать идентификаторы дополнительных реквизитов операции.

Кроме того в качестве имен отборов могут выступать идентификаторы граф отбора, в которых участвуют бухгалтерские документы или виды субконто, или данные операции или проводки.

Также в жунале операций возможен отбор по видам документов, для которых установлен признак «Бухгалтерский учет». Имена этих отборов определяются идентификаторами видов документов.

3. Если параметр <СписокОтборов> равен «*», разрешаются все виды отборов, установленные для журнала операций в конфигураторе. Вызов метода ВидыОтбора с таким параметром позволяет отключить ранее установленное ограничение на использование видов отборов.

4. Если в качестве параметра методу ВидыОтбора передана пустая строка, метод запрещает пользователю выполнение любых отборов в журнале операций.

Замечание. Ограничение списка отборов, выполненное при помощи метода ВидыОтбора, не исключает использование «запрещенного» отбора средствами встроенного языка. Например, методом ВидыОтбора("") можно запретить использование любых отборов в журнале операций, но тутже из языка установить отбор операций по конкретному содержанию операции. В этом случае пользователь будет просматривать операции с конкретным содержанием, но не будет иметь возможность отобрать операции с другим содержанием.

Пример:

ВидыОтбора("Клиент, Автор");

ЗакладкиОтбора

Установить в форме журнала операций закладки для интерактивного выбора значения отбора.

Синтаксис:

ЗакладкиОтбора(<ИмяОтбора>, <ВИнтервалеЖурнала>, <УстановитьНаЗначение>,

                            <ЗначениеОтбора>)

Англоязычный синоним:

TabCtrlSelection

Параметры:

<ИмяОтбора>

Строковое выражение: имя отбора.

<ВИнтервалеЖурнала>

исловое выражение: признак отбора только в интервале журнала. Может принимать значения:

1 — текущие значения отбора для закладок выбираются только по проводкам в установленном интервале журнала;

0 — текущие значения отбора для закладок выбираются по всем проводкам журнала.

По умолчанию — 0.

<УстановитьНаЗначение>

Числовое выражение: признак выбора значения отбора для показа. Параметр может принимать значения:

1 — для показа выбирается отбор по значению, указанному в параметре <ЗначениеОтбора>;

0 — текущее значение отображаемой закладки отбора устанавливается на первое существующее значение.

По умолчанию — 0.

<ЗначениеОтбора>

Значение отбора.

Описание:

Метод ЗакладкиОтбора устанавливает в форме журнала операций закладки для интерактивного осуществления отбора. При включении закладок в верхней части журнала появляются ярлыки, соответствующие значениям отбора. Щелчком мыши по ярлыку можно открыть «страницу» журнала операций: такая «страница» будет содержать операции, отобранные по указанному значению.

Для включения отбора необходимо в качестве параметра <ИмяОтбора> передать методу имя отбора. Можно использовать как имена отборов, автоматически задаваемые системой 1С:Предприятие, так и отборы, созданные в процессе конфигурирования: по реквизитам операции и по общим реквизитам документов.

«Системные» отборы задаются включением соответствующих опций в окне редактирования свойств операции в конфигураторе. Каждому виду отбора соответствует «системное» имя отбора — то, которое выдается пользователю в диалоге «Отбор», и которое можно использовать во встроенном языке.

Для журнала операций допустимы следующие «системные» имена отборов:

СуммаОперации — отбор по сумме операции;

Содержание — отбор по содержанию операции.

Кроме этого, в конфигураторе можно включить возможность выполнять отборы по дополнительным реквизитам операции. Для этого используется опция «Отбор» в закладке «Дополнительные» палитры свойств дополнительного реквизита операции. В этих случаях в качестве имен отбора следует использовать идентификаторы дополнительных реквизитов операции.

Кроме того в качестве имен отборов могут выступать идентификаторы граф отбора, в которых участвуют бухгалтерские документы или виды субконто, или данные операции или проводки.

Также в жунале операций возможен отбор по видам документов, для которых установлен признак «Бухгалтерский учет». Имена этих отборов определяются идентификаторами видов документов.

Данный метод доступен только в контексте модуля формы журнала операций (см. «Виды программных модулей»).

Пример:

ЗакладкиОтбора("Автор", 1, , );

УстановитьОтбор

Установить отбор журнала операций.

Синтаксис:

УстановитьОтбор(<ИмяОтбора>, <ЗначениеОтбора>)

Англоязычный синоним:

SetSelection

Параметры:

<ИмяОтбора> | Строковое выражение — имя отбора. Если это значение пустое, то отбор отключается.
<ЗначениеОтбора> | Значение отбора.

Описание:

Метод УстановитьОтбор принудительно устанавливает отбор для журнала операций. Для установки отбора методу должны быть переданы 2 параметра: имя отбора и значение отбора.

Возможные виды отбора для журнала операций задаются в конфигураторе. В окне редактирования свойств операции можно включить опции, соответствующие различным видам отбора. Для таких отборов система 1С:Предприятие использует зарезервированные имена:

СуммаОперации — отбор по сумме операции;

Содержание — отбор по содержанию операции.

Кроме этого, в конфигураторе можно включить возможность выполнять отборы по дополнительным реквизитам операции и общим реквизитам документов. Для этого используется опция «Отбор» в закладке «Дополнительные» палитры свойств, соответственно, дополнительного реквизита операции или общего реквизита документа. В этих случаях в качестве имен отбора следует использовать идентификаторы дополнительных реквизитов операции или общих реквизитов документов.

Кроме того в качестве имен отборов могут выступать идентификаторы граф отбора, в которых участвуют бухгалтерские документы или виды субконто, или данные операции или проводки.

Также в жунале операций возможен отбор по видам документов, для которых установлен признак «Бухгалтерский учет». Имена этих отборов определяются идентификаторами видов документов. Эти оборы не имеют значения отбора.

Отбор устанавливается по значению, указанному в параметре <ЗначениеОтбора>.

Данный метод доступен только в контексте модуля формы журнала операций (см. «Виды программных модулей»).

Пример:

Изм = УстановитьОтбор("Склады", Склад!);

ПолучитьОтбор

Возвратить текущее значение отбора журнала операций.

Синтаксис:

ПолучитьОтбор(<ИмяОтбора>, <ЗначениеОтбора>)

Англоязычный синоним:

GetSelection

Параметры:

<ИмяОтбора> | Необязательный параметр. Имя переменной, куда будет записано строковое значение имени отбора.
<ЗначениеОтбора> | Необязательный параметр. Имя переменной, куда будет записано значение отбора.

Возвращаемое значение:

Число: 1 — отбор включен; 0 — отбор не включен.

Описание:

Метод ПолучитьОтбор позволяет получить информацию о текущем состоянии отбора журнала операций. Если отбор в журнале операций включен, метод возвращает 1 и записывает имя отбора и текущее значение отбора в переменные, передаваемые методу ПолучитьОтбор в качестве параметров.

Возвращаемое значение метода может использоваться для определения того, включен отбор в журнале операций или нет.

Данный метод доступен только в контексте модуля формы журнала операций (см. «Виды программных модулей»).

Пример:

Изм = ПолучитьОтбор();

УстановитьИнтервал

Установить интервал журнала операций.

Синтаксис:

УстановитьИнтервал(<ДатаНач>, <ДатаКон>, <ФлагИзменения>)

Англоязычный синоним:

SetRange

Параметры:

<ДатаНач> | Выражение типа «дата» — начальная дата интервала журнала операций.
<ДатаКон> | Выражение типа «дата» — конечная дата интервала журнала операций.
<ФлагИзменения> | Необязательный параметр. Этим флагом регулируется возможность интерактивного изменения интервала журнала. 1 — пользователь может изменить интервал журнала интерактивно, 0 — пользователь не может интерактивно изменить интервал журнала.

Описание:

Метод УстановитьИнтервал позволяет установить интервал видимости записей в журнале операций. При работе с журналом будут доступны операции, даты которых лежат внутри указанного интервала.

Данный метод доступен только в контексте модуля формы журнала операций (см. «Виды программных модулей»).

Пример:

УстановитьИнтервал(НИ, КИ);

НачалоИнтервала

Возвратить дату начала интервала журнала операций.

Синтаксис:

НачалоИнтервала()

Англоязычный синоним:

BegOfRange

Возвращаемое значение:

Значение типа «Дата» — начальная дата интервала журнала операций.

Описание:

Метод НачалоИнтервала позволяет получить текущую начальную дату интервала журнала операций.

Данный метод доступен только в контексте модуля формы журнала операций (см. «Виды программных модулей»).

Пример:

НИ = НачалоИнтервала();

КонецИнтервала

Возвратить дату конца интервала журнала операций.

Синтаксис:

КонецИнтервала()

Англоязычный синоним:

EndOfRange

Возвращаемое значение:

Значение типа «Дата» — конечная дата интервала журнала операций.

Описание:

Метод КонецИнтервала позволяет получить конечную дату интервала журнала операций.

Данный метод доступен только в контексте модуля формы журнала операций (см. «Виды программных модулей»).

Пример:

КИ = КонецИнтервала();

Предопределенные процедуры модуля формы журнала операций

Описанные в данном разделе системные предопределенные процедуры должны располагаться только в модулях форм журнала операций (см. «Виды программных модулей»).

В основном данные процедуры предназначены для расширения возможности программного управления правами доступа к системе.

Предопределенные процедуры не является встроенными процедурами языка. Для них зарезервированы только название и синтаксис. Тело процедур должно быть написано самим разработчиком в соответствующих программных модулях. Вызов предопределенных процедур на исполнение производится в системе 1С:Предприятие неявно при возникновении соответствующего события. Описание предопределенных процедур также см. гл. «Системные предопределенные процедуры».

ПриУстановкеОтбора

Предопределенная процедура при установке отбора в журнале операций.

Синтаксис:

ПриУстановкеОтбора(<ИмяОт6ора>, <Значение>)

Англоязычный синоним:

OnSetSelectInJournal

Параметры:

<ИмяОтбора> | Строковое выражение — имя отбора.
<ЗначениеОтбора> | Значение отбора.

Описание:

Вызов предопределенной процедуры ПриУстановкеОтбора производится системой 1С:Предприятие неявно при интерактивной попытке установить отбор в журнале операций.

Если в данной предопределенной процедуре установлен статус возврата 0 (например, если данному пользователю нельзя устанавливать данное значение отбора операций), установка отбора не будет выполнена.

Данная предопределенная процедура может располагаться в модуле формы журнала операций и в глобальном программном модуле. Если данная процедура присутствует в модуле формы журнала операций, то будет вызвана она, если нет, то будет вызвана процедура из глобального модуля.

Пример:

Процедура ПриУстановкеОтбора(ИмяОтбора, ЗначОтбора)

   Если НазваниеНабораПрав() = "Оператор" Тогда

      Если (ИмяОтбора = "Автор") И (ЗначОтбораоТекПольз) Тогда

         Предупреждение("У вас нет права просматривать чужие Операции!", 2);

         СтатусВозврата(0);

      КонецЕсли;

   КонецЕсли;

КонецПроцедуры

См. также: СтатусВозврата

ПриУстановкеИнтервала

Предопределенная процедура при установке интервала журнала.

Синтаксис:

ПриУстановкеИнтервала(<ДатаНач>, <ДатаКон>)

Англоязычный синоним:

OnSetRange

Параметры:

<ДатаНач> | Дата начала интервала журнала.
<ДатаКон> | Дата конца интервала журнала.

Описание:

Вызов предопределенной процедуры ПриУстановкеИнтервала производится системой 1С:Предприятие неявно при интерактивной попытке установить интервал в журнале документов. Если в данной предопределенной процедуре установить статус возврата — 0 (например, если данному пользователю нельзя изменять интервал журнала), установка не будет выполнена.

Пример:

Процедура ПриУстановкеИнтервала(ДатаНач, ДатаКон)

   Если НазваниеНабораПрав() = "Продавец" Тогда

      Предупреждение("У вас нет права изменять интервал журнала!", 2);

      СтатусВозврата(0);

   КюнецЕсли;

КонецПроцедуры

См. также: СтатусВозврата


Part19

Глава 19
Работа с Журналами проводок

Контекст работы с журналами проводок

Журнал проводок — средство для работы со списком проводок. В терминах языка журнал проводок не является специальным типом данных (он не имеет значения, его нельзя создать при помощи функции СоздатьОбъект).

С журналом в системе связана форма отображения списка проводок и программный модуль формы журнала проводок (см. «Виды программных модулей»). В локальном контексте этого программного модуля непосредственно доступны реквизиты формы. Кроме того, здесь непосредственно доступен объект «Операция», содержащий значение операции, которой принадлежит выбранная в журнале проводка. Другими словами, в модуле формы журнала проводок обращение к атрибутам и методам текущей операции выполняется напрямую.

Методы контекста Модуля формы журнала проводок

Описанные в данном разделе методы доступны только в контексте модуля формы журнала проводок (см. «Виды программных модулей»).

ВидыОтбора

Установить доступные виды отборов для журнала проводок.

Синтаксис:

ВидыОтбора(<СписокОтборов>)

Англоязычный синоним:

KindsOfSelection

Параметры:

<СписокОтборов>

Необязательный параметр. Строковое выражение. Может принимать значения:

список имен отборов через запятую — в журнале проводок будут доступны только указанные виды отборов;

символ «*» — для журнала используются все назначенные в Конфигураторе виды отборов;

пустая строка "" — запрещаются все виды отборов.

Если параметр не указан, метод возвращает текущий список разрешенных отборов.

Возвращаемое значение:

Строковое значение, содержащее текущий (на момент до вызова метода) список отборов для журнала. Имена отбора в возвращаемой строке разделяются запятыми.

Описание:

Метод ВидыОтбора устанавливает доступные виды отборов журнала проводок. Использование данного метода влияет на полноту списка видов отбора, который выдается пользователю в диалоге «Отбор» при работе с системой 1С:Предприятие.

Метод ВидыОтбора позволяет ограничить число видов отбора, доступных конкретному пользователю при работе с журналом проводок, или совсем запретить выполнение отбора в журнале проводок. Данный метод доступен только в контексте модуля формы журнала проводок (см. «Виды программных модулей»).

Можно выделить 4 варианта использования данного метода.

1. Если параметр <СписокОтборов> не указан, метод возвращает текущий список отборов, установленных для журнала проводок.

2. Чтобы ограничить использование отборов какими-либо конкретными видами отбора, список этих видов отбора следует передать методу в качестве параметра. Указывать в списке можно как имена отборов, автоматически задаваемые системой 1С:Предприятие, так и отборы, созданные в процессе конфигурирования: по реквизитам проводки и по субконто проводки.

«Системные» отборы задаются включением соответствующих опций в окне редактирования свойств проводки в конфигураторе. Каждому виду отбора соответствует «системное» имя отбора — то, которое выдается пользователю в диалоге «Отбор», и которое можно использовать во встроенном языке (в том числе, и при вызове метода ВидыОтбора).

Для журнала проводок допустимы следующие «системные» имена отборов:

Сумма — отбор по сумме проводки;

ВалСумма — отбор по валютной сумме проводки;

Валюта — отбор по валюте проводки;

Количество — отбор по количеству проводки;

Счет — отбор по счетам проводки;

СчетДт — отбор по счетам дебета проводки;

СчетКт — отбор по счетам кредита проводки;

ПланСчетов — отбор по плану счетов.

Кроме этого, в конфигураторе можно включить возможность выполнять отборы по субконто проводки и дополнительным реквизитам проводки. Для этого используется опция «Отбор» в закладке «Дополнительные» палитры свойств вида субконто или дополнительного реквизита проводки. В этих случаях в качестве имен отбора следует использовать идентификаторы видов субконто или дополнительных реквизитов проводки.

3. Если параметр <СписокОтборов> равен «*», разрешаются все виды отборов, установленные для журнала проводок в конфигураторе. Вызов метода ВидыОтбора с таким параметром позволяет отключить ранее установленное ограничение на использование видов отборов.

4. Если в качестве параметра методу ВидыОтбора передана пустая строка, метод запрещает пользователю выполнение любых отборов в журнале проводок.

Замечание. Ограничение списка отборов, выполненное при помощи метода ВидыОтбора, не исключает использование «запрещенного» отбора средствами встроенного языка. Например, методом ВидыОтбора("") можно запретить использование любых отборов в журнале проводок, но установить отбор проводок по конкретной организации. В этом случае пользователь будет просматривать проводки, относящиеся только к указанной организации, но не будет иметь возможность изменить организацию.

Пример:

ВидыОтбора("Склад, Клиент, Автор");

ЗакладкиОтбора

Установить в форме журнала проводок закладки для интерактивного отбора.

Синтаксис:

ЗакладкиОтбора(<ИмяОтбора>, <ВИнтервалеЖурнала>, <УстановитьНаЗначение>,

               <ЗначениеОтбора>)

Англоязычный синоним:

TabCtrlSelection

Параметры:

<ИмяОтбора>

Строковое выражение: имя отбора.

<ВИнтервалеЖурнала>

Числовое выражение: признак отбора только в интервале журнала. Может принимать значения:

1 — текущие значения отбора для закладок выбираются только по проводкам в установленном интервале журнала;

0 — текущие значения отбора для закладок выбираются по всем проводкам журнала.

По умолчанию — 0.

<УстановитьНаЗначение>

Числовое выражение: признак выбора значения отбора для показа. Параметр может принимать значения:

1 — для показа выбирается отбор по значению, указанному в параметре <ЗначениеОтбора>;

0 — текущее значение отображаемой закладки отбора устанавливается на первое существующее значение.

По умолчанию — 0.

<ЗначениеОтбора>

Значение отбора.

Описание:

Метод ЗакладкиОтбора устанавливает в форме журнала проводок закладки для интерактивного осуществления отбора. При включении закладок в верхней части журнала проводок появляются ярлыки, соответствующие значениям отбора. Щелчком мыши по ярлыку можно открыть «страницу» журнала проводок: такая «страница» будет содержать проводки, отобранные по указанному значению.

Для включения отбора необходимо в качестве параметра <ИмяОтбора> передать методу имя отбора. Можно использовать как имена отборов, автоматически задаваемые системой 1С:Предприятие, так и отборы, созданные в процессе конфигурирования: по реквизитам проводки и по субконто проводки.

«Системные» отборы задаются включением соответствующих опций в окне редактирования свойств проводки в конфигураторе. Каждому виду отбора соответствует «системное» имя отбора — то, которое выдается пользователю в диалоге «Отбор», и которое можно использовать во встроенном языке.

Для журнала проводок допустимы следующие «системные» имена отборов:

Сумма — отбор по сумме проводки;

ВалСумма — отбор по валютной сумме проводки;

Валюта — отбор по валюте проводки;

Количество — отбор по количеству проводки;

Счет — отбор по счетам проводки;

СчетДт — отбор по счетам дебета проводки;

СчетКт — отбор по счетам кредита проводки;

ПланСчетов — отбор по плану счетов.

Кроме этого, в конфигураторе можно включить возможность выполнять отборы по субконто проводки и дополнительным реквизитам проводки. Для этого используется опция «Отбор» в закладке «Дополнительные» палитры свойств вида субконто или дополнительного реквизита проводки. В этих случаях в качестве имен отбора следует использовать идентификаторы видов субконто или дополнительных реквизитов проводки.

Данный метод доступен только в контексте модуля формы журнала проводок (см. «Виды программных модулей»).

Пример:

ЗакладкиОтбора("Склады", 1, 1, Константа.ОснСклад);

УстановитьОтбор

Установить отбор журнала проводок.

Синтаксис:

УстановитьОтбор(<ИмяОтбора>, <ЗначениеОтбора>)

Англоязычный синоним:

SetSelection

Параметры:

<ИмяОтбора> | Строковое выражение — имя отбора. Если это значение пустое, то отбор отключается.
<ЗначениеОтбора> | Значение отбора.

Описание:

Метод УстановитьОтбор принудительно устанавливает отбор для журнала проводок. Для установки отбора методу должны быть переданы 2 параметра: имя отбора и значение отбора.

Возможные виды отбора для журнала проводок задаются в конфигураторе. В окне редактирования свойств проводки можно включить опции, соответствующие различным видам отбора. Для таких отборов система 1С:Предприятие использует зарезервированные имена:

Сумма — отбор по сумме проводки;

ВалСумма — отбор по валютной сумме проводки;

Валюта — отбор по валюте проводки;

Количество — отбор по количеству проводки;

Счет — отбор по счетам проводки;

СчетДт — отбор по счетам дебета проводки;

СчетКт — отбор по счетам кредита проводки;

ПланСчетов — отбор по плану счетов.

Кроме этого, в конфигураторе можно включить возможность выполнять отборы по субконто проводки и дополнительным реквизитам проводки. Для этого используется опция «Отбор» в закладке «Дополнительные» палитры свойств вида субконто или дополнительного реквизита проводки. В этих случаях в качестве имен отбора следует использовать идентификаторы видов субконто или дополнительных реквизитов проводки.

Отбор устанавливается по значению, указанному в параметре <ЗначениеОтбора>.

Данный метод доступен только в контексте модуля формы журнала проводок (см. «Виды программных модулей»).

Пример:

Изм = УстановитьОтбор("Склады", Склад1);

ПолучитьОтбор

Возвратить текущее значение отбора журнала проводок.

Синтаксис:

ПолучитьОтбор(<ИмяОтбора>, <ЗначениеОтбора>)

Англоязычный синоним:

GetSelection

Параметры:

<ИмяОтбора> | Необязательный параметр. Имя переменной, куда будет записано строковое значение имени отбора.
<ЗначениеОтбора> | Необязательный параметр. Имя переменной, куда будет записано значение отбора.

Возвращаемое значение:

Числовое значение: 1 — отбор включен; 0 — отбор не включен.

Описание:

Метод ПолучитьОтбор возвращает текущее значение отбора журнала. Имя отбора и текущее значение отбора записываются в переменные, передаваемые методу ПолучитьОтбор в качестве параметров.

Возвращаемое значение метода может использоваться для определения того, включен отбор в журнале проводок или нет.

Данный метод доступен только в контексте модуля формы журнала проводок (см. «Виды программных модулей»).

Пример:

Изм = ПолучитьОтбор();

УстановитьИнтервал

Установить интервал журнала проводок.

Синтаксис:

УстановитьИнтервал(<ДатаНач>, <ДатаКон>, <ФлагИзменения>}

Англоязычный синоним:

SetRange

Параметры:

<ДатаНач> | Выражение типа «дата» — начальная дата интервала журнала проводок.
<ДатаКон> | Выражение типа «дата» — конечная дата интервала журнала проводок.
<ФлагИзменения> | Необязательный параметр. Этим флагом регулируется возможность интерактивного изменения интервала журнала. 1 — пользователь может изменить интервал журнала интерактивно, 0 — пользователь не может интерактивно изменить интервал журнала.

Описание:

Метод УстановитьИнтервал позволяет установить интервал видимости записей в журнале проводок. При работе с журналом проводок будут доступны проводки, даты которых лежат внутри указанного интервала.

Данный метод доступен только в контексте модуля формы журнала проводок (см. «Виды программных модулей»).

Пример:

УстановитьИнтервал(НИ, КИ);

НачалоИнтервала

Возвратить дату начала интервала журнала проводок.

Синтаксис:

НачалоИнтервала()

Англоязычный синоним:

BegOfRange

Возвращаемое значение:

Значение типа «Дата» — начальная дата интервала журнала проводок.

Описание:

Метод НачалоИнтервала позволяет получить начальную дату интервала журнала проводок.

Данный метод доступен только в контексте модуля формы журнала проводок (см. «Виды программных модулей»).

Пример:

НИ = НачалоИнтервала();

КонецИнтервала

Возвратить дату конца интервала журнала проводок.

Синтаксис:

КонецИнтервала()

Англоязычный синоним:

EndOfRange

Возвращаемое значение:

Значение типа «Дата» — конечная дата интервала журнала проводок.

Описание:

Метод КонецИнтервала позволяет получить конечную дату интервала журнала проводок.

Данный метод доступен только в контексте модуля формы журнала проводок (см. «Виды программных модулей»).

Пример:

КИ = КонецИнтервала();

Предопределенные процедуры модуля формы журнала проводок

Описанные в данном разделе системные предопределенные процедуры должны располагаться только в модулях форм журнала проводок (см. «Виды программных модулей»).

В основном данные процедуры предназначены для расширения возможности программного управления правами доступа к системе.

Предопределенные процедуры не является встроенными процедурами языка. Для них зарезервированы только название и синтаксис. Тело процедур должно быть написано самим разработчиком в соответствующих программных модулях. Вызов предопределенных процедур на исполнение производится в системе 1С:Предприятие неявно при возникновении соответствующего события. Описание предопределенных процедур также см. гл. «Системные предопределенные процедуры».

ПриУстановкеОтбора

Предопределенная процедура при установке отбора в журнале проводок.

Синтаксис:

ПриУстановкеОтбора(<ИмяОтбора>, <Значение>)

Англоязычный синоним:

OnSetSelectInJournal

Параметры:

<ИмяОтбора> | Строковое выражение — имя отбора.
<ЗначениеОтбора> | Значение отбора.

Описание:

Вызов предопределенной процедуры ПриУстановкеОтбора производится системой 1С:Предприятие неявно при интерактивной попытке установить отбор в журнале проводок.

Если в данной предопределенной процедуре установлен статус возврата 0 (например, если данному пользователю нельзя устанавливать данное значение отбора проводок), установка отбора не будет выполнена.

Данная предопределенная процедура может располагаться в модуле формы журнала проводок и в глобальном программном модуле. Если данная процедура присутствует в модуле формы журнала проводок, то будет вызвана она, если нет, то будет вызвана процедура из глобального модуля.

Пример:

Процедура ПриУстановкеОтбора(ИмяОтбора, ЗначОтбора)

   Если (ИмяОтбора = "Счет") И (ЗначОтбора.Валютный = 1) Тогда

      СтатусВозврата(0);

   КонецЕсли;

КонецПроцедуры

См. также: СтатусВозврата

ПриУстановкеИнтервала

Предопределенная процедура при установке интервала журнала.

Синтаксис:

ПриУстановкеИнтервала(<ДатаНач>, <ДатаКон>)

Англоязычный синоним:

OnSetSelectInJournal

Параметры:

<ДатаНач> | Дата начала интервала журнала.
<ДатаКон> | Дата конца интервала журнала.

Описание:

Вызов предопределенной процедуры ПриУстановкеИнтервала производится системой 1С:Предприятие неявно при интерактивной попытке установить интервал в журнале документов. Если в данной предопределенной процедуре установить статус возврата — 0 (например, если данному пользователю нельзя изменять интервал журнала), установка не будет выполнена.

Пример:

Процедура ПриУстановкеИнтервала(ДатаНач, ДатаКон)

   Если НазваниеНабораПрав() = "Продавец" Тогда

      Предупреждение("У вас нет права изменять интервал журнала!", 2);

      СтатусВозврата(0);

   КонецЕсли;

КонецПроцедуры

См. также: СтатусВозврата

ПриПоказеПроводокПоДокументу

Предопределенная процедура при показе проводок по документу (операции).

Синтаксис:

ПриПоказеПроводокПоДокументу(<Документ>)

Англоязычный синоним:

OnShowEntrysByDoc

Параметры:

<Документ>

Документ по которому выводятся проводки.

Описание:

При работе с журналом операций или журналом документов пользователь имеет возможность включить режим показа проводок текущей операции. При этом открывается окно журнала проводок «синхронизированного» с текущим журналом. В этом журнале проводок будут выдаваться для просмотра проводки операции, на которой стоит курсор в журнале документов(операций). При установке курсора на другой документ(операцию) содержимое журнала проводок будет изменяться, показывая проводки по текущей операции. В журнале операций такой журнал проводок может быть выведен в нижней части окна.

Вызов предопределенной процедуры ПриПоказеПроводокПоДокументу производится системой 1С:Предприятие неявно при обновлении содержимого подчиненного журнала проводок текущей операции.

Переданный в качестве параметра документ может быть использован для определения необходимости показха проводок по данной операции.

Если в данной предопределенной процедуре установлен статус возврата 0, то проводки операции показываться не будут (например, если пользователю запрещен просмотр проводок).

Пример:

Процедура ПриПоказеПроводокПоДокументу(ТекДок)

   Если ТекДок.Операция.Фирма <> ТекФирма Тогда

      СтатусВозврата(0);

   КонецЕсли;

КонецПроцедуры

См. также: СтатусВозврата


Part20

Глава 20
Работа с бухгалтерскими итогами

При наличии в системе 1С:Предприятие компоненты «Бухгалтерский учет» система автоматически реализует специальный механизм работы с бухгалтерскими итогами. Данный механизм обеспечивает хранение, динамический пересчет бухгалтерских итогов и их извлечение средствами встроенного языка.

Система хранения бухгалтерских итогов поддерживается системой 1С:Предприятие автоматически на основе существующих планов счетов. При редактировании планов счетов — в конфигураторе или при работе с системой 1С:Предприятие — для счета могут быть установлены ряд свойств, которые влияют на организацию хранения бухгалтерских итогов: это признаки ведения валютного и количственного учета, а также включение аналитического учета по субконто.

Изменение бухгалтерских итогов может производиться только проводками бухгалтерских операций.

Объект встроенного языка «БухгалтерскиеИтоги» предназначен для организации доступа к итогам в различных разрезах, за различные периоды и с разной степенью детализации.

Контекст работы с бухгалтерскими итогами

Обращение к бухгалтерским итогам выполняется посредством агрегатного объекта типа «БухгалтерскиеИтоги» (Англоязычный синоним: BookkeepingTotals). Объект такого типа должен быть создан при помощи функции СоздатьОбъект

БухИтоги = СоздатьОбъект("БухгалтерскиеИтоги");

Таких объектов может быть в системе несколько (любое необходимое количество). Объект может создаваться непосредственно перед использованием или в глобальном модуле (с объявлением экспортируемой переменной). При этом следует иметь в виду, что различные установки, назначаемые объекту будут действовать до их переустановки или удаления объекта. Поэтому обычно данный объект создается перед его использованием.

Механизм бухгалтерских итогов, поддерживаемый компонентой «Бухгалтерский учет» системы 1С:Предприятие релизует хранение накопленных итогов для обеспечения быстрого обращения к ним при составлении отчетов и выполнения различных вычислений.

Хранение итогов поддерживается системой с детализацией до месяца. Кроме того, хранятся не все возможные итоги, а те, обращение к которым выполняется наиболее часто — это остатки и обороты по счетам с детализацией по объектам аналитики (субконто), а также обороты между счетам (без учета аналитики).

Обращение к этим итогам выполняется системой непосредственно. Для получения других итогов (с детализацией меньше месяца, с получением оборотов между различными объектами аналитики, а также сложных выборок) требуется выполнение предварительных действий — временного расчета или запроса.

Объект «БухгалтерскиеИтоги» может работать в 3-х различных режимах:

· работа с основными итогами;

· работа с временными итогами;

· работа в режиме запроса;

При создании объекта он работает в режиме работы с основными итогами. Переключение его в остальные режимы выполняется методами Рассчитать и ВыполнитьЗапрос. В зависимости от режима изменяется состав и использование атрибутов и методов объекта.

Кроме того некоторые установки объекта влияют на получение итогов во всех режимах. К ним относятся установки используемого плана счетов и разделителя учета.

Общие свойства

Работа объекта «БухгалтерскиеИтоги» во всех режимах имеет некоторые общие особенности.

Значение типа «Счет» в параметры методов объекта может передаваться в виде строки, содержащей код счета. При этом счет определяется исходя из текущей установки используемого плана счетов основного плана счетов, заданного в метаданных.

Там, где методам объекта в качестве параметра должна передаваться валюта должно передаваться значение типа того справочника, который выбран в настройке планов счетов в качестве справочника валют. В тексте описания объекта такие значения будут обозначаться как значение типа «Справочник.Валюты», хотя на прикатике идентификатор справочника может быть иным, в зависимости от выбранного в настройке планов счетов значения.

При ведении учета по нескольким планам счетов или с использованием разделителя учета на получение итогов в различных режимах запроса влияют установки методов ИспользоватьПланСчетов и ИспользоватьРазделительУчета.

ИспользоватьПланСчетов

Назначить план счетов, по которому будут выдаваться итоги.

Синтаксис:

ИспользоватьПланСчетов(<ПланСчетов>)

Англоязычный синоним:

UseChartOfAccounts

Параметры:

<ПланСчетов>

Необязательный параметр. Значение типа «План Счетов». Если не задан установка не меняется.

Возвращаемое значение:

Значение данной установки до вызова метода.

Описание:

Применение данного метода имеет смысл только если используется несколько планов счетов.

Метод ИспользоватьПланСчетов задает план счетов для метода получения итогов и ВыполнитьЗапрос для тех случаев, когда конкретный счет не указан или задается строкой символов.

Если план счетов не установлен функцией ИспользоватьПланСчетов, будет использоваться основной план счетов, заданный в метаданных.

Пример:

БухИтоги.ИспользоватьПланСчетов(ПланыСчетов.Рабочий);

ИспользоватьРазделительУчета

Установить значение разделителя учета.

Синтаксис:

ИспользоватьРазделительУчета(<РазделительУчета>)

Англоязычный синоним:

UseAccountingDivision

Параметры:

<РазделительУчета>

Необязательный параметр. Значение разделителя учета. Если не задан, то установка не меняется.

Возвращаемое значение:

Значение данной установки до вызова метода.

Описание:

Метод ИспользоватьРазделительУчета задает значения разделителя учета для методов получения итогов и ВыполнитьЗапрос.

Применение данного метода имеет смысл только если используется разделителель учета.

Пример:

БухИтоги.ИспользоватьРазделительУчета(Константа.ОснФирма);

Работа с основными итогами

Основными итогами называются остатки и обороты по счетам и объектам аналитического учета, а также обороты между счетами за любой рассчитанный период с детализацией до месяца.

В пункте меню «Управление бухгалтерскими итогами» устанавливается последний рассчитанный период. В режиме работы с основными итогами обращение может выполняться только к итогам по рассчитанный период включительно.

В этом режиме работают два вида методов — получение остатков и оборотов, а также установка периода за который выдаются итоги.

По умолчанию используется период, выбранный пользователем интерактивно через меню «Сервис»-«Параметры»- «Бухгалтерские итоги».

Остатки и обороты по счетам

Для расчета остатков и обротов по счетам существует группа функций со сходным синтаксисом и набором параметров.

СНД, СНК, СКД, СКК, ДО, КО

СНД   дебетовое сальдо по счету на начало периода;

СНК   кредитовое сальдо по счету на начало периода;

СКД   дебетовое сальдо по счету на конец периода;

СКК   кредитовое сальдо по счету на конец периода;

ДО    дебетовый оборот по счету за период;

КО    кредитовый оборот по счету за период.

Синтаксис:

СНД (<Счет>, <ТипСуммы>, <Валюта>, <Субконто1>...)

СНК (<Счет>, <ТипСуммы>, <Валюта>, <Субконто1>...}

СКД (<Счет>, <ТипСуммы>, <Валюта>, <Субконто1>...)

СКК (<Счет>, <ТипСуммы>, <Валюта>, <Субконто1>...)

ДО (<Счет>, <ТипСуммы>, <Валюта>, <Субконто1>...)

КО (<Счет>, <ТипСуммы>, <Валюта>, <Субконто1>...)

Англоязычные синонимы:

IDB

ICB

FDB

FCB

TD

ТС

Параметры:

<Счет>

Значение типа «Счет» — счет расчета итогов. Может использоваться строка — код счета.

<ТипСуммы>

Необязательный параметр. Число или строка — тип возвращаемой суммы. Может принимать одно из следующих значений:

1 ("С", "S")— сумма;

2 ("В", "С")— валютная сумма;

3 ("К", "А")— количество.

Если параметр не указан, метод возвращает сумму.

<Валюта>

Необязательный параметр. Значение типа «Справочник.Валюты». Если параметр не указан итоги выдаются без учета валюты.

<Субконто1>
<Субконто2>…

Необязательный параметр. Значения субконто. Их количество зависит от настройки субконто для данного счета. Если параметры не указаны, итоги выдаются без учета аналитики.

Все параметры кроме счета могут не указываться.

Возвращаемое значение:

Число —сальдо или оборот.

Описание:

Функции СНД, СНК, СКД, СКК, ДО, КО возвращают суммы остатков и оборотов по указанному счету за период. Выдаваться может сумма или валютная сумма или количество, в зависимости от параметра <ТипСуммы>.

Если указана валюта, то данные выдаются по конкретной валюте. Валютная сумма может выдаваться только по конкретной валюте.

Если указаны значения субконто, то данные выдаются по конкретным объектам аналитики.

Пример:

* Вычисляются остатки на счете 51 на начало и конец периода бухгалтерских итогов. Рассчитанные остатки присваиваются переменным.

// Создадим объект для работы с бухгалтерскими итогами

БухИтоги = СоздатьОбъект("БухгалтерскиеИтоги);

// Вычислим остаток на расчетном счете (счет 51) на начало периода

П2623 = БухИтоги.СНД("51");

// Вычислим остаток на расчетном счете (счет 51) на конец периода

П2624 = БухИтоги.СКД("51");

Обороты между счетами

ОБ

Расчет оборотов между счетами.

Синтаксис:

ОБ(<СчетДеб>, <СчетКред>, <ТипСуммы>, <Валюта>)

Англоязычный синоним:

TO

Параметры:

<СчетДеб>, <СчетКред> | Значения типа «Счет» — счета дебета и кредита, для которых необходимо выдать перекрестные обороты. Может использоваться строка — код счета.
<ТипСуммы> | Необязательный параметр. Число или строка — тип возвращаемой суммы. Может принимать одно из следующих значений: 1 ("С", "S")— сумма; 2 ("В", "С")— валютная сумма; 3 ("К", "А")— количество. Если параметр не указан, метод возвращает сумму.
<Валюта> | Необязательный параметр. Значение типа «Справочник.Валюты». Если параметр не указан итоги выдаются без учета валюты.

Возвращаемое значение:

Число —оборот с дебета счета <СчетДеб> в кредит счета <СчетКред>.

Описание:

Функция ОБ предназначена для выдачи перекрестных оборотов между счетами. Коды счетов, оборот между которыми требуется рассчитать, передаются функции в качестве парметров.

Если указана валюта, то данные выдаются по конкретной валюте. Валютная сумма может выдаваться только по конкретной валюте.

Пример:

КассаБанк = БухИтоги.ОБ("50", "51");

Развернутое сальдо по субсчетам

Для получения развернутого сальдо по счетам, имеющим субсчета, существует группа функций со сходным синтаксисом и набором параметров.

СНДР, СНКР, СКДР, СККР

СНДР  дебетовое развернутое сальдо по субсчетам на начало периода;

СНКР  кредитовое развернутое сальдо по субсчетам на начало периода;

СКДР  дебетовое развернутое сальдо по субсчетам на конец периода;

СККР  кредитовое развернутое сальдо по субсчетам на конец периода.

Синтаксис:

СНДР(<Счет>, <ТипСуммы>, <Валюта>)

СНКР(<Счет>, <ТипСуммы>, <Валюта>)

СКДР(<Счет>, <ТипСуммы>, <Валюта>)

СККР(<Счет>, <ТипСуммы>, <Валюта>}

Англоязычные синонимы:

IDBR

ICBR

FDBR

FCBR

Параметры:

<Счет> | Значение типа «Счет» — счет, для которого необходимо рассчитать развернутое сальдо. Может использоваться строка — код счета.
<ТипСуммы> | Необязательный параметр. Число или строка — тип возвращаемой суммы. Может принимать одно из следующих значений: 1 ("С", "S")— сумма; 2 ("В", "С")— валютная сумма; 3 ("К", "А")— количество. Если параметр не указан, метод возвращает сумму.
<Валюта> | Необязательный параметр. Значение типа «Справочник. Валюты». Если параметр не указан итоги выдаются без учета валюты.

Возвращаемое значение:

Число — развернутое сальдо.

Описание:

Функции СНДР, СНКР, СКДР, СККР предназначены для расчета остатков по счетам, у которых учет ведется на субсчетах. Каждая функция из этой группы возвращает остаток как сумму соответствующих остатков (дебетовых или кредитовых) всех субсчетов указанного счета. При этом учитываются остатки по субсчетам являющихся собственно счетами, а не группами.

Если указана валюта, то данные выдаются по конкретной валюте. Валютная сумма может выдаваться только по конкретной валюте.

Пример:

* Для помещения в бухгалтерский баланс вычисляется развернутое сальдо по 68 счету, учет на котором ведется на субсчетах. Дебетовая составляющая должна попасть в актив баланса, кредитовая составляющая — в пассив.

// Создадим объект для работы с бухгалтерскими итогами

БухИтоги = СоздатьОбъект( "БухгалтерскиеИтоги);

// Вычислим дебетовое сальдо на 68 счете на начало периода

П2463 = БухИтоги.СНДР("68");

// Вычислим дебетовое сальдо на 68 счете на конец периода

П2464 = БухИтоги.СКДР("68");

// Вычислим кредитовое сальдо на 68 счете на начало периода

П6263 = БухИтоги.СНКР("68");

// Вычислим кредитовое сальдо на 68 счете на конец периода

П6264 = БухИтоги.СККР("68");

Развернутое сальдо по субконто

Для расчета развернутого сальдо по счетам, имеющим субконто, во встроенном языке существует группа функций со сходным синтаксисом и набором параметров.

СНДРС, СНКРС, СКДРС, СККРС

СНДРС дебетовое развернутое сальдо по субконто на начало периода;

СНКРС кредитовое развернутое сальдо по субконто на начало периода;

СКДРС дебетовое развернутое сальдо по субконто на конец периода;

СККРС кредитовое развернутое сальдо по субконто на конец периода.

Синтаксис:

СНДРС(<Счет>, <ТипСуммы>, <Валюта>, <Субконто1>, <ТипФильтра1>, <Субконто2>,

             <ТипФильтра2>...)

СНКРС(<Счет>, <ТипСуммы>, <Валюта>, <Субконто1>, <ТипФильтра1>, <Субконто2>,

             <ТипФильтра2>...)

СКДРС(<Счет>, <ТипСуммы>, <Валюта>, <Субконто1>, <ТипФильтра1>, <Субконто2>,

             <ТипФильтра2>...)

СККРС(<Счет>, <ТипСуммы>, <Валюта>, <Субконто1>, <ТипФильтра1>, <Субконто2>,

             <ТипФильтра2>...}

Англоязычные синонимы:

IDBRS

ICBRS

FDBRS

FCBRS

Параметры:

<Счет> | Значение типа «Счет» — счет, для которого необходимо рассчитать развернутое сальдо. Может использоваться строка — код счета.
<ТипСуммы> | Необязательный параметр. Число или строка — тип возвращаемой суммы. Может принимать одно из следующих значений: 1 ("С", "S")— сумма; 2 ("В", "С")— валютная сумма; 3 ("К", "А")— количество. Если параметр не указан, метод возвращает сумму.
<Валюта> | Необязательный параметр. Значение типа «Справочник. Валюты». Если параметр не указан итоги выдаются без учета валюты.
<Субконто1> | Необязательный параметр. Значение субконто 1.
<ТипФильтра1> | Необязательный параметр. Тип использования субконто 1. (Строка или число). "*" (1) — Разворачивать по данному субконто. "!" (2) — Отбирать по данному субконто. " " (3) — Не учитывать данное субконто. Значения по умолчанию: "*" (1) — для первого субконто, " " (3) — для остальных субконто.
<Субконто2> | …
<ТипФильтра2> | …

Возвращаемое значение:

Число — развернутое сальдо.

Описание:

Функции СНДРС, СНКРС, СКДРС, СККРС предназначены для расчета остатков по счетам, у которых ведется аналитический учет по субконто. Каждая функция из этой группы возвращает остаток как сумму соответствующих остатков (дебетовых или кредитовых) по всем объектам аналитического учета.

Если аналитический учет по счету ведется по двум и более субконто, то для развернутого сальдо параметр <ТипФильтра> устанавливает участие данног вида субконто в получении развернутого сальдо. В зависимости от значения этого параметра данное субконто может участвовать в «развороте» остатка, или накладывать дополнительное ограничение (отбирать) на анализируемые остатки, или никак не влиять на результат функции.

Пример:

* Получим развернутое сальдо дебетовое на начало периода по счету 60, учет ведется по субконто Организации.

СР60 = БухИтоги.СНДРС("60");

* Получим развернутое сальдо дебетовое на начало периода по счету 10 конкретному складу в разрезе материалов, учет ведется по субконто «Материалы» и «Склады».

СР10 = БухИтоги.СНДРС("10", 1, , , "*", ВыбСклад, "!");

Установка периода итогов

ПериодД

Устанавливает произвольный период в качестве периода расчета итогов.

Синтаксис:

ПериодД(<ДатаНачалаПериода>, <ДатаКонцаПериода>)

Англоязычный синоним:

PeriodD

Параметры:

<ДатаНачалаПериода> | Необязательный параметр. Начальная дата периода выдачи итогов.
<ДатаКонцаПериода> | Необязательный параметр. Конечная дата периода выдачи итогов.

Описание:

Метод ПериодД задает период расчета итогов для функций режима основных итогов.

Период, установленный методом ПериодД, действует до конца вызова другого метода установки периода для этого объекта.

Если параметры не заданы — значения периода берется из периода, заданного пользователем интерактивно в меню «Сервис»-«Параметры»-«Бухгалтерские итоги».

Пример:

БухИтоги.ПериодД('07.01.98', '17.01.98');

ПериодКВ

Устанавливает квартал в качестве периода расчета итогов.

Синтаксис:

ПериодКВ(<Дата>|<НомерКвартала>, <Год>)

Англоязычный синоним:

PeriodQ

Параметры:

<Дата> | Дата — любая дата из квартала, устанавливаемого в качестве периода расчета итогов.
<НомерКвартала> | Число от 1 до 4 — порядковый номер квартала.
<Год> | Год заданный числом (включая век). Используется только, если первый параметр — номер квартала.

Описание:

Метод ПериодКВ задает период расчета итогов для функций режима основных итогов. В качестве параметра метода может передаваться либо дата, лежащая в том квартале, который будет назачен в качестве периода рачета итогов, либо номер квартал — цифра от 1 до 4. Номер квартала задает квартал года, указанного вторым параметром.

Период, установленный методом ПериодКВ, действует до вызова другго метода установки периода.

Пример:

БухИтоги.ПериодКВ('07.01.98');

ПериодКВН

Устанавливает в качестве периода расчета итогов период с начала года до конца указанного квартала.

Синтаксис:

ПериодКВН(<Дата>|<НомерКвартала>, <Год>)

Англоязычный синоним:

PeriodQAccumY

Параметры:

<Дата> | Дата — любая дата квартала, устанавливаемого в качестве периода расчета итогов.
<НомерКвартала> | Число от 1 до 4 — порядковый номер квартала.
<Год> | Год заданный числом (включая век). Используется только, если первый параметр — номер квартала.

Описание:

Метод ПериодКВН задает период расчета итогов для функций режима основных итогов. В качестве периода расчета итогов метод устанавливает период с начала года до конца квартала, задаваемого параметрами.

В качестве параметра метода может передаваться либо дата, лежащая в том квартале, который будет назачен в качестве периода рачета итогов, либо номер квартал — цифра от 1 до 4. Номер квартала задает квартал года, указанного вторым параметром.

Периодом расчета итогов считается период с начала года до конца указанного квартала.

Период, установленный методом ПериодКВН, действует до вызова другого метода установки периода.

Пример:

БухИтоги.ПериодКВН('07.01.98');

ПериодМ

Устанавливает в качестве периода расчета итогов месяц.

Синтаксис:

ПериодМ(<Дата>|<НомерМесяца>, <Год>)

Англоязычный синоним:

PeriodM()

Параметры:

<Дата> | Дата — любая дата из месяца, устанавливаемого в качестве периода расчета итогов.
<НомерМесяца> | Число от 1 до 12 — порядковый номер месяца.
<Год> | Год заданный числом (включая век). Используется только, если первый параметр — номер месяца.

Описание:

Метод ПериодМ задает период расчета итогов для функций режима основных итогов. В качестве параметра метода может передаваться либо дата месяца, который будет назначен в качестве периода рачета итогов, либо номер месяца — число от 1 до 12. Номер месяца задет месяц года переданного в качестве второго пареметра.

Период, установленный методом ПериодМ, действует до вызова другого метода установки периода.

Пример:

БухИтоги.ПериодМ('07.01.98');

ПериодМНК

Устанавливает в качестве периода расчета итогов период с начала квартала до конца указанного месяца.

Синтаксис:

ПериодМНК(<Дата>|<НомерМесяца>, <Год>)

Англоязычный синоним:

PeriodMAccumQ

Параметры:

<Дата> | Дата — любая дата месяца, устанавливаемого в качестве периода расчета итогов.
<НомерМесяца> | Число от 1 до 12 — порядковый номер месяца.
<Год> | Год заданный числом (включая век). Используется только, если первый параметр — номер месяца.

Описание:

Метод ПериодМНК задает период расчета итогов для функций режима основных итогов. В качестве периода расчета итогов метод устанавливает период с начала квартала до конца месяца, задаваемого параметрами.

В качестве параметра метода может передаваться либо дата месяца, который будет использован в качестве периода расчета итогов, либо номер месяца — число от 1 до 12. Номер месяца задает месяц года, заданного вторым параметром.

Периодом расчета итогов считается период с начала квартала до конца указанного месяца.

Период, установленный методом ПериодМНК, действует до вызова другой функции установки периода.

Пример:

БухИтоги.ПериодМНК('07.08.98');

ПериодМНГ

Устанавливает в качестве периода расчета итогов период с начала года до конца указанного месяца.

Синтаксис:

ПериодМНГ(<Дата>|<НомерМесяца>, <Год>}

Англоязычный синоним:

PeriodMAccumY

Параметры:

<Дата> | Дата — любая дата месяца, устанавливаемого в качестве периода расчета итогов.
<НомерМесяца> | Число от 1 до 12 — порядковый номер месяца.
<Год> | Год заданный числом (включая век). Используется только, если первый параметр — номер месяца.

Описание:

Метод ПериодМНГ задает период расчета итогов для функций режима основных итогов. В качестве периода расчета итогов функция устанавливает период с начала года до конца месяца, задаваемого параметрами.

В качестве параметра метода может передаваться либо дата месяца, который будет использован в качестве периода расчета итогов, либо номер месяца — число от 1 до 12. Номер месяца задает месяц года, заданного вторым параметром.

Периодом расчета итогов считается период с начала года до конца указанного месяца.

Период, установленный функцией ПериодМНГ, действует до вызова другой функции установки периода.

Пример:

БухИтоги.ПериодМНГ('07.08.98');

НачПериода

Выдает начальную дату установленного в данный момент периода основных итогов.

Синтаксис:

НачПериода()

Англоязычный синоним:

BeginOfPeriod

Возвращаемое значение: Начальная дата периода.

Описание:

Метод НачПериода используется для определения начальной даты основных итого выдаваемых объектом.

Пример:

Сообщить(ПериодСтр(БухИтоги.НачПериода(), БухИтоги.КонПериода());

КонПериода

Выдает конечную дату установленного в данный момент периода основных итогов.

Синтаксис:

КонПериода()

Англоязычный синоним:

EndOfPeriod

Возвращаемое значение: Конечная дата периода.

Описание:

Метод КонПериода используется для определения конечной даты основных итогов выдаваемых объектом.

Пример:

Сообщить(ПериодСтр(БухИтоги.НачПериода(), БухИтоги.КонПериода());

ОсновныеИтоги

Переводит объект в режим работы с основными итогами.

Синтаксис:

ОсновныеИтоги()

Англоязычный синоним:

MainTotals

Описание:

Метод ОсновныеИтоги переводит объект в режим работы с основными итогами. Вызов этого метода имеет смысл тогда, когда был выполнен расчет временных итогов или запрос, и нужно вернуть объект к работе с основными итогами. При этом результаты запроса или расчета временных итогов теряются.

Пример:

БухИтоги.ОсновныеИтоги();

Работа с временными итогами

Для переключения в режим работы с временными итогами следует выполнить метод Рассчитать. После этого объект позволяет получать остатки и обороты по счетам за произвольный период, заданный при вызове метода Рассчитать.

Для получения временных итогов используются теже методы, что и для получения основных итогов (СНД, СНК , СКД , СКК, ДО, КО, ОБ и другие). Параметры метода Рассчитать определяют итоги, которые будут доступны для получения этими методами.

Рассчитать

Расчет временных итогов.

Синтаксис:

Рассчитать(<НачалоПериода>, <КонецПериода> , <ФильтрПоСчетам>, <ТолькоСинтетика> , <ПланСчетов>, <РазделительУчета>)

Англоязычный синоним:

Calculate

Параметры:

<НачалоПериода> Необязательный параметр. Выражение типа дата, документ или позиция документа начала периода расчета временных итогов. Если этот параметр не указан, будут вычисляться конечные сальдо на момент, указанный в параметре <КонецПериода>.

<КонецПериода> Необязательный параметр. Выражение типа дата, документ или позиция документа конца периода расчета временных итогов. Если этот параметр не указан, будут вычисляться начальные сальдо на момент, указанный в параметре <НачалоПериода>.

<ФильтрП, рСчетам> Необязательный параметр. Счета, для которых

будет выполняться временный расчет итогов. Задается значением типа «Счет» или объектом типа «СписокЗначений», содержащим значения типа «Счет», либо строкой содержащей список кодов счетов, разделенных символом ", " или ";".

<ТолькоСинтетика> Необязательный параметр:

1 — рассчитывать сальдо только по счетам;

0 — или не указан — рассчитывать сальдо по счетам и по субконто.

<ПланСчетов> Необязательный параметр. Значение типа «План Счетов». Ограничение расчета одним планом счетов.

<РазделительУчета> Необязательный параметр. Значение разделителя учета. Ограничение расчета одним значением разделителя учета.

Возвращаемое значение:

Число: 1 — расчет выполнен; 0 — расчет не выполнен.

Описание:

Метод Рассчитать выполняет расчет итогов за период, задаваемый параметрами <НачалоПериода> и <КонецПериода>. Метод задает период, за который будут возвращать остатки и обороты по счетам функции СНД, СКД, снк, скк, до, ко, ОБ и другие.

Если из двух параметров периода задан только параметр начала периода, метод Рассчитать вычислит начальные остатки — без оборотов. Наоборот, если задан параметр конца периода, будут вычисленные конечные остатки.

Параметр <ФильтрПоСчетам> позволяет рассчитать итоги только для конкретного счета или для группы счетов.

Установка параметра <ТолькоСинтетика> в 1 задает выполнение расчета итогов только по счетам, без субконто. В этом случае функции для получения развернутого сальдо по субконто СНДРС, СКДРС, СНКРС, СККРС для счетов, по которым ведется аналитический учет по субконто будут возвращать 0, даже если реально в информационной базе есть остатки по этим счетам.

Если параметр <ТолькоСинтетика> не указан или равен 0, временный расчет итогов будет выполнен и по счетам, и по субконто.

При использовании методов ВыполнитьЗапрос и Рассчитать возможно указание только одной границы интервала. В этом случае будут рассчитываться только остатки на эту границу.

Пример:

БухИтоги.Рассчитать(ДатаНач, ДатаКон);

Актуальность

Устанавливает или сбрасывает признак актуальности временных итогов.

Синтаксис:

Актуальность(<Флаг>)

Англоязычный синоним:

Actual

Параметры:

<Флаг> Необязательный параметр. Число — признак актуальности временного расчета итогов. Параметр может принимать значения:

1 — поддерживать временный расчет в актуальном состоянии;

О—не поддерживать временный расчет в актуальном состоянии;

Если параметр не задан, то значение не меняется.

Возвращаемое значение:

Значение признака актуальности на момент до вызова функции.

Описание:

Данный метод позволяет организовать поддержку временного расчета итогов в актуальном состоянии. При установке объекту «БухгалтерскиеИтоги»

признака поддержки в актуальном состоянии, в нем будут отражаться все изменения в итогах, выполняемые операциями. При этом данный актуальный объект «БухгалтерскиеИтоги» смогут автоматически использовать временные расчеты и запросы других объектов «БухгалтерскиеИтоги» с аналогичными фильтрами, что позволяет оптимизировать время расчета.

Данную возможность следует использовать только в специальных случаях, например, для оптимизации больших регламентных расчетов.

Данная возможность может применяться только при работе программы в монопольном режиме или, если не в монопольном режиме, то только при проведении документа.

Пример:

БухИтоги.Актуальность(1);

Работа в режиме запроса

Для получения большого количества итогов в различных разрезах объект «Бухгалтерские Итоги» переключается в режим работы с запросом. Для переключения в этот режим вызывается метод ВыполнитьЗапрос в параметрах которого, а также дополнительными методами устанавливается состав итогов, которые будут получены запросом. Выполнение данного метода осуществляет выборку данных и их предварительную обработку.

После выполнения запроса с помощью специального набора методов объекта «Бухгалтерские Итоги» осуществляется получение итогов, полученных данным запросом. К этим методам относятся методы обхода итогов в различных разрезах (сформированных запросом) и методы для получения собственно итогов. Кроме того специальный набор атрибутов объекта «Бухгалтерские Итоги» позволяет обращаться процессе обхода результатов запроса к значениям полученных группировок.

ВыполнитьЗапрос

Выборка итогов в различных разрезах.

Синтаксис:

ВыполнитьЗапрос(<НачалоПериода>, <КонецПериода>, <ФильтрПоСчетам>,

       <ФильтрПоКоррСчет>, <Валюта>, <ТипИтогов>, <Периодичность>, <ТипСуммы>)

Англоязычный синоним:

DoQuery

Параметры:

<НачалоПериода>

Необязательный параметр. Выражение типа дата, документ или позиция документа начала периода запроса. Если этот параметр не указан, будут вычисляться начальные сальдо на момент, указанный в параметре <КонецПериода>

<КонецПериода>

Необязательный параметр. Выражение типа дата, документ или позиция документа конца периода запроса. Если этот параметр не указан, будут вычисляться начальные сальдо на момент, указанный в параметре <НачалоПериода>.

<ФильтрПоСчетам>

Необязательный параметр. Счета, для которых будут отбираться итоги в запросе. Задается значением типа «Счет» или объектом типа «Список-Значений», содержащим значения типа «Счет», либо строкой содержащей список кодов счетов, разделенных символом ", " или ";". Если параметр не указан, отбор будет выполняться по всем счетам.

<ФильтрПоКоррСчет>

Необязательный параметр. Значение типа «Счет» — корреспондирующий счет, в корреспонденции с которым будут отбираться итоги счета, указанного в параметре <ФильтрПоСчетам>. Задается значением типа «Счет» или объектом типа «СписокЗначений», содержащим значения типа «Счет», либо строкой содержащей список кодов счетов, разделенных символом "," или ";". Если параметр не указан, будут отбираться итоги в корреспонденции со всеми счетами.

<Валюта>

Необязательный параметр. Значение типа «Справочник.Валюты». Если параметр не указан итоги выдаются без учета валюты.

<ТипИтогов>

Необязательный параметр. Число — тип отбираемых итогов. Может принимать следующие значения:

1 — остатки и обороты по счету в целом;

2 — обороты между счетами;

Первое и второе вместе.

По умолчанию — 1.

<Периодичность>

Необязательный параметр. Позволяет получить дополнительный разрез итогов по периодам. Число или символьная строка (См. ниже). По умолчанию периодичность не задана.

<ТипСуммы>

Необязательный параметр. Число или строка — тип рассчитываемых итогов. Может принимать следующие значения (в скобках указаны строковые синонимы):

1 («С», «S») рассчитывать суммы;

2 («В», «С») рассчитывать валютные суммы;

4 («К», «А») рассчитывать количество.

Если требуется одновременно рассчитывать разные суммы, значение параметра получается путем сложения допустимых значений, например: 5 (1+4) — рассчитывать суммы и количество. При указании параметра строкой в ней указываются все символы, которые обозначают типы сумм, которые нужно рассчитывать. По умолчанию рассчитываются все типы сумм.

Параметр <Периодичность> может принимать следующие значения (в скобках указаны строковые синонимы):

1 («Период», «Period») | Промежуточные итоги не рассчитываются;
2 («Операция», «Entry») | Промежуточные итоги рассчитываются по операциям;
3 («Проводка», «Operation») | По проводкам;
4 («День», «Day») | По дням;
5 («Неделя», «Week») | По неделям;
6 («Декада», «Decade») | По декадам;
7 («Месяц», «Month») | По месяцам;
8 («Квартал», «Quorter») | По кварталам
9 («Год», «Year») | По годам.

Возвращаемое значение:

Число: 1 — запрос выполнен; 0 — запрос не выполнен.

Описание:

Метод ВыполнитьЗапрос выполняет отбор и расчет итогов за период, задаваемый параметрами <НачалоПериода> и <КонецПериода>.

В зависимости от переданных параметров итоги могут быть подготовлены методом ВыполнитьЗапрос в различных разрезах. Кроме того, на результат запроса влияют дополнительные установки, которые выполняются вызовами специальных методов объекта «Бухгалтерские Итоги».

Параметр <Периодичность> позволяет получить итоги запроса в разрезе периодов.

Метод ВключатьСубсчета позволяет получить итоги в разрезе субсчетов.

Применение метода ИспользоватьСубконто (перед вызовом ВыполнитьЗапрос) позволяет сформировать запрос в разрезе субконто.

После выполнения запроса обход запросов в различных разрезах выполняется соответствующими методами объекта.

Для доступа к итогам в разрезе периодов используются методы ВыбратьПериоды и ПолучитьПериод.

При использовании методов ВыполнитьЗапрос и Рассчитать возможно указание только одной границы интервала. В этом случае будут рассчитываться только остатки на эту границу.

Данный метод может использовать предварительно выполненный временный расчет. Для этого у временного расчета должен быть взведен флаг актуальности, система должна находиться в монопольном режиме, или расчет производится в модуле документа и в данном модуле выполняется запрос.

Пример:

В монопольном режиме:

// модуль обработки

ИтРасчет.Актуальность(1);

   ...

   Док.ВыбратьДокументы();

   Пока Док.ПолучитьДокумент() = 1 Цикл

      ИтРасчет.Рассчитать(, Док.ТекущийДокумент());

      ...

      Док.Провести();

   КонецЦикла;

   ...

// модуль документа

...

ИтЗапрос.ВыполнитьЗапрос(, Док.ТекущийДокумент(), СчетПоКоду("41"));

...

в данном случае ИтЗапрос.ВыполнитьЗапрос(...) воспользуется результатами временного расчета ИтРасчет. Данная возможность может использоваться при групповом перепроведении документов.

Пример:

БухИтоги.ВыполнитьЗапрос(ДатаНач, ДатаКон, "60", , 3);

ВключатьСубсчета

Устанавливает режим отбора итогов методом ВыполнитьЗапрос по субсчетам.

Синтаксис:

ВключатьСубсчета(<ФлагСчета>, <ФлагКоррСчета>}

Англоязычный синоним:

IncludeSubAccounts

Параметры:

<ФлагСчета> | Необязательный параметр. Признак развертывания сальдо по субсчетам основного счета. Число: 0 — не разворачить по субсчетам; 1 — разворачивать по субсчетам; -1 (минус единица) — не выдавать итоги по счетам-группам. Значение по умолчанию — 0.
<ФлагКоррСчета> | Необязательный параметр. Признак развертывания сальдо по субсчетам корреспондирующего счета. Число: 0 — не разворачить по субсчетам; 1 — разворачивать по субсчетам; -1 (минус единица) — не выдавать итоги по корреспондирующим счетам-группам. Значение по умолчанию — 0.

Описание:

Метод ВключатьСубсчета должен вызываться до выполнения метода ВыполнитьЗапрос. Он устанавливает режим, при котором итоги отбираемые запросом будут разворачиваться по субсчетам соответвенно основных и корреспондирующих счетов.

Если метод не вызвался, разворот итогов по субсчетам не производится.

Пример:

БухИтоги.ВключатьСубсчета(1, 1);

Опции

Устанавливает режим включения сумм в итоги.

Синтаксис:

Опции(<ВключатьЗабалансовыеСуммы>, <ВключатьОборотныеСубконтоСуммы>)

Англоязычный синоним:

Options

Параметры:

<ВключатьЗабалансовыеСуммы> | Признак включения в итоги сумм по забалансовым счетам. Число: 0 — не включаются суммы по забалансовым счетам; 1 — включаются суммы по забалансовым счетам.
<ВключатьОборотныеСу6контоСуммы> | Признак включения в итоги сумм по оборотным субконто. Число: 0 — не включаются суммы по оборотным субконто; 1 — включаются суммы по оборотным субконто.

Описание:

Метод Опции должен вызываться до выполнения метода ВыполнитьЗапрос. Он устанавливает режимы включения в итоги сумм по забалансовым счетам и оборотным субконто.

Если метод не вызвался, суммы по забалансовым счетам и оборотным субконто не включаются в запрос.

Пример:

БухИтоги.Опции(1, 1);

ИспользоватьСубконто

Устанавливает режим получения итогов методом ВыполнитьЗапрос в разрезе субконто.

Синтаксис:

ИспользоватьСубконто(<ВидСубконто>, <Субконто>, <ТипФильтра>, <ПоГруппам>)

Англоязычный синоним:

UseSubconto

Параметры:

<ВидСубконто> | Значение типа «Вид Субконто» — расчет временных итогов будет выполнен только для субконто указанного вида. Задается значением типа «Вид Субконто» или строкой содержащей имя идентификатора вида субконто, как он назван в конфигураторе.
<Субконто> | Необязательный параметр. Здесь может быть задано или одно конкретное значение субконто, по которому будут отобраны итоги по аналитике или объект типа «Список значений», где можно задать несколько значений субконто. Если параметр не задан — то считается пустым значением субконто.
<ТипФильтра> | Необязательный параметр. Число — тип фильтра по субконто. Может принимать следующие значения: 1 — разворачивать по данному субконто, 2 — отбирать по данному субконто, 3 — не учитывать это субконто вообще. По умолчанию 1.
<ПоГруппам> | Необязательный параметр. Число — группировка др итогов по субконто. Параметр <ПоГруппам> имеет смысл, если параметр <ТипФильтра> равен 1, а вид субконто, заданный параметром <ВидСубконто>, имеет тип значения «Справочник». Параметр может принимать значения: 0 — не показывать итоги по группам справочника; 1 — показывать итоги по группам справочника. По умолчанию 0.

Описание:

Метод ИспользоватьСубконто устанавливает режим отбора итогов по субконто методом ВыполнитьЗапрос.

Метод ИспользоватьСубконто слудет вызывать до вызова метода ВыполнитьЗапрос. После выполнения метода ВыполнитьЗапрос установки метода ИспользоватьСубконто сбрасываются и перед слудеющим запросом их нужно устанавливать заново.

Метод ИспользоватьСубконто может вызываться последовательно несколько раз. В этом случае установки, выполняемые этим методом суммируются.

Использование параметра <ТипФильтра> со значением 1 (разворачивать) в сочетании с выбранной группой справочника в параметре <Субконто> позволяет получить итоги по всем элементам данной группы.

Пример:

* Данный запрос формирует итоги по счету 10 в разрезе материалов по одному складу.

БухИтоги.ИспользоватьСубконто(ВидыСубконто.Материалы, , 1);

БухИтоги.ИспользоватьСубконто(ВидыСубконто.Склады, ВыбСклад, 2);

БухИтоги.ВыполнитьЗапрос(ДатаНач, ДатаКон, "10");

ИспользоватьКорСубконто

Устанавливает режим получения итогов методом ВыполнитьЗапрос в разрезе корреспондирующих субконто.

Синтаксис:

ИспользоватьКорСубконто(<ВидСубконто>, <Субконто>, <ТипФильтра>, <ПоГруппам>)

Англоязычный синоним:

UseCorSubconto

Параметры:

<ВидСубконто> | Значение типа «Вид Субконто» — расчет временных итогов будет выполнен только для субконто указанного вида.
<Субконто> | Необязательный параметр. Значение субконто, по которому будут отобраны итоги по аналитике. Если параметр не задан — то считается пустым значением субконто.
<ТипФильтра> | Необязательный параметр. Число — тип фильтра по субконто. Может принимать следующие значения: 1 — разворачивать по данному субконто, 2 — отбирать по данному субконто, 3 — не учитывать это субконто вообще. По умолчанию 1.
<ПоГруппам> | Необязательный параметр. Число — группировка итогов по субконто. Параметр <ПоГруппам> имеет смысл, если параметр <ТипФильтра> равен 1, а вид субконто, заданный параметром <ВидСубконто>, имеет тип значения «Справочник». Параметр может принимать значения; 0 — не показывать итоги по группам справочника; 1 — показывать итоги по группам справочника. По умолчанию 0.

Описание:

Метод ИспользоватьКорСубконто устанавливает режим отбора итогов по субконто методом ВыполнитьЗапрос.

Метод ИспользоватьКорСубконто слудет вызывать до вызова метода ВыполнитьЗапрос. После выполнения метода ВыполнитьЗапрос установки метода ИспользоватьКорСубконто сбрасываются и перед слудеющим запросом их нужно устанавливать заново.

Метод ИспользоватьКорСубконто может вызываться последовательно несколько раз. В этом случае установки, выполняемые этим методом суммируются.

Использование параметра <ТипФильтра> со значением 1 (разворачивать) в сочетании с выбранной группой справочника в параметре <Субконто> позволяет получить итоги по всем элементам данной группы.

Данный метод применяется для расчета перекрестных оборотов между объектами аналитического учета.

Пример:

* Данный запрос формирует итоги по корреспонденции субконто Товары и Клиенты.

БухИтоги.ИспользоватьСубконто(ВидыСубконто.Товары, , 1);

БухИтоги.ИспользоватьКорСубконто(ВидыСубконто.Клиенты, , 1);

БухИтоги.ВыполнитьЗапрос(ДатаНач, ДатаКон);

Работа с результатами запроса

Атрибуты и методы, описанные в этом разделе, могут использоваться для обработки результатов работы метода ВыполнитьЗапрос.

Методы выборки результатов запроса

ВыбратьСчета

Открывает выборку счетов, для которых были получены итоги методом ВыполнитьЗапрос.

Синтаксис:

ВыбратьСчета(<ФлагВсе>, <ФлагДК>, <Номер>, <РазвСальдо>)

Англоязычный синоним:

SelеctAccounts

Параметры:

<ФлагВсе> | Необязательный параметр. 0 — отбирать те счета, которые имели итоги на этом уровне обхода итогов запроса; 1 — включить в выборку все счета, которые имели итоги в данном запросе; -1, -2 ... — включить в выборку счета, которые имели итоги в группировке n-го вышестоящего уровня. По умолчанию — 0.
<ФлагДК> | Необязательный параметр. 1 — включать в выборку счета только с дебетовыми оборотами; 2 — включать в выборку счета только с кредитовыми оборотами. 0 — включать в выборку счета вне зависимости от дебетовых/кредитовых оборотов. По умолчанию 0.
<Номер> | Необязательный параметр. Положительное целое число — номер выборки. Если параметр не указан, выборке присваивается номер 0.
<РазвСальдо> | Необязательный параметр. Признак необходимости рассчитывать развернутое сальдо по субконто. Используется только если в запросе участвуют субконто. 1 — рассчитывать развернутое сальдо. 0 — не рассчитать развернутое сальдо; По умолчанию 0.

Возвращаемое значение:

Число: 1 — если действие выполнено и в выборке есть хотя бы один счет;

0 — если действие не выполнено или в выборке нет ни одного счета.

Описание:

Метод ВыбратьСчета должен использоваться после получения итогов методом ВыполнитьЗапрос. Метод открывает выборку счетов, вошедших в запрос.

Дополнительные условия на содержание выборки могут накладываться параметрами <ФлагВсе> и <ФлагДК>.

Параметр <РазвСальдо> может указываться только, если в запросе установлено участие субконто. Позволяет указать, рассчитывать ли равернутое сальдо для субконто выборки. Результаты расчета могут быть получены при помощи функций СНДРС , СНКРС , СКДРС , СККРС.

Непосредственно извлечение счетов из выборки осуществляется при помощи метода ПолучитьСчет. Счета извлекаются в порядке возрастания кода счета.

Выборке, открываемой методом ВыбратьСчета, может быть присвоен номер — положительное целое число. Номер — это «метка» выборки. Номер может использоваться для обращения к результатам выборки при помощи метода ПолучитьСчет. Использование этой метки необходимо, если требуется получить две группировки по счету.

Пример:

БухИтоги.Запрос(Дата1, Дата2);

БухИтоги.ВыбратьСчета();

Пока БухИтоги.ПолучитьСчет() = 1 Цикл

   Деб = БухИтоги.ДО();

   Кред = БухИтоги.КО();

КонецЦикла;

ПолучитьСчет

Получить из выборки следующий счет. Выборка должна быть предварительно открыта при помощи метода ВыбратьСчета.

Синтаксис:

ПолучитьСчет(<Номер>, <Счет>)

Англоязычный синоним:

GetAccount

Параметры:

<Номер> | Необязательный параметр. Положительное целое число — номер выборки.
<Счет> | Необязательный параметр. Конкретное значение счета, которое нужно получить из выборки.

Возвращаемое значение:

Число: 1 — следующий счет выбран успешно; 0 — следующий счет не выбран (отсутствует).

Описание:

Метод ПолучитьСчет выбирает очередной счет из выборки, содержащей счета из плана счетов. Перед применением метода ПолучитьСчет выборка должна быть открыта при помощи метода ВыбратьСчета. Счета извлекаются в порядке возрастания кода счета.

Метод ПолучитьСчет позволяет также обращаться к результатам выборки по номеру выборки, если предварительно было открыто несколько выборок. Номер выборки передается методу в качестве параметра <Номер>.

Следует иметь в виду, что, в отличие от аналогичного параметра метода ВыбратьСчета, параметр <Номер> метода ПолучитьСчет используется только для обращения к конкретной выборке.

Метод ПолучитьСчет позволяет также обращаться к конкретному значению результа выборки. Значение счета выборки передается методу в качестве параметра <Счет>.

Если параметр <Счет> не задан, то метод ПолучитьСчет может использоваться для организации цикла по счетам. Условием цикла может служить равенство 1 возвращаемого значения метода: цикл выполняется, пока метод ПолучитьСчет возвращает 1.

Метод возвращает 0, когда очередной счет не выбран. Это происходит, если при предыдущем применении метода был выбран последний счет выборки.

Пример:

БухИтоги.Запрос(Дата1, Дата2);

БухИтоги.ВыбратьСчета();

Пока БухИтоги.ПолучитьСчет() = 1 цикл

   Деб = БухИтоги.ДО();

   Кред = БухИтоги.КО();

КонецЦикла;

ВыбратьКорСчета

Открывает выборку корреспондирующих счетов, для которых были получены итоги методом ВыполнитьЗапрос.

Синтаксис:

ВыбратьКорСчета(<ФлагВсе>, <ФлагДК>, <Номер>)

Англоязычный синоним:

SelectCorAccounts

Параметры:

<ФлагВсе> | Необязательный параметр. 0 — отбирать те счета, которые имели итоги на этом уровне обхода итогов запроса; 1 — включить в выборку все счета, которые имели итоги в данном запросе; -1, -2 ... — включить в выборку счета, которые имели итоги в группировке n-го вышестоящего уровня. По умолчанию — 0.
<ФлагДК> | Необязательный параметр. 1 — включать в выборку счета только с дебетовыми оборотами; 2 — включать в выборку счета только с кредитовыми оборотами. 0 — включать в выборку счета вне зависимости от дебетовых/кредитовых оборотов. По умолчанию 0.
<Номер> | Необязательный параметр. Положительное целое число — номер выборки. Если параметр не указан, выборке присваивается номер 0.

Возвращаемое значение:

Число: 1 — если действие выполнено и в выборке есть хотя бы один счет;

0 — если действие не выполнено или в выборке нет ни одного счета.

Описание:

Метод ВыбратьКорСчета должен использоваться после получения итогов методом ВыполнитьЗапрос. Метод открывает выборку счетов, вошедших в запрос.

Дополнительные условия на содержание выборки могут накладываться параметрами <ФлагВсе> и <ФлагДК>.

Непосредственно извлечение счетов из выборки осуществляется при помощи метода ПолучитьКорСчет. Счета извлекаются в порядке возрастания кода счета.

Выборке, открываемой методом ВыбратьКорСчета, может быть присвоен номер — положительное целое число. Номер — это «метка» выборки. Номер может использоваться для обращения к результатам выборки при помощи метода ПолучитьКорСчет. Использование этой метки необходимо, если требуется получить две группировки по счету.

Пример:

БухИтоги.Запрос(Дата1, Дата2);

БухИтоги.ВыбратьСчета();

Пока БухИтоги.ПолучитьСчет() = 1 Цикл

   БухИтоги.ВыбратьКорСчета();

   Пока БухИтоги.ПолучитьКорСчет() = 1 Цикл

      Деб = БухИтоги.ДО();

      Кред = БухИтоги.КО();

   КонецЦикла;

КонецЦикла;

ПолучитьКорСчет

Получить из выборки следующий корреспондирующий счет. Выборка должна быть предварительно открыта при помощи метода

ВыбратьКорСчета.

Синтаксис:

ПолучитьКорСчет(<Номер>, <Счет>)

Англоязычный синоним:

GetCorAccount

Параметры:

<Номер> | Необязательный параметр. Положительное целое число — номер выборки.
<Счет> | Необязательный параметр. Конкретное значение счета, которое нужно получить из выборки.

Возвращаемое значение:

Число: 1 — следующий счет выбран успешно; 0 — следующий счет не выбран (отсутствует).

Описание:

Метод ПолучитьКорСчет выбирает очередной счет из выборки, содержащей счета из плана счетов. Перед применением метода ПолучитьКорСчет выборка должна быть открыта при помощи метода ВыбратьКорСчета. Счета извлекаются в порядке возрастания кода счета.

Метод ПолучитьКорСчет позволяет также обращаться к результатам выборки по номеру выборки. Номер выборки передается методу в качестве параметра <Номер>.

Следует иметь в виду, что, в отличие от аналогичного параметра метода ВыбратьКорСчета, параметр <Номер> метода ПолучитьКорСчет используется только для обращения к конкретной выборке.

Метод ПолучитьСчет позволяет также обращаться к конкретному значению результа выборки. Значение счета выборки передается методу в качестве параметра <Счет>.

Если параметр <Счет> не задан, то метод ПолучитьКорСчет используется для организации цикла по счетам. Условием цикла может служить равенство 1 возвращаемого значения метода: цикл выполняется, пока метод ПолучитьКорСчет возвращает 1.

Метод возвращает 0, когда очередной счет не выбран. Это происходит, если при предыдущем применении метода был выбран последний счет выборки.

Пример:

БухИтоги.Запрос(Дата1, Дата2);

БухИтоги.ВыбратьСчета();

Пока БухИтоги.ПолучитьСчет() = 1 цикл

   БухИтоги.ВыбратьКорСчета();

   Пока БухИтоги.ПолучитьКорСчет() = 1 цикл

      Деб = БухИтоги.КорДО();

      Кред=БухИтоги.КорКО();

   КонецЦикла;

КонецЦикла;

ВыбратьВалюты

Открывает выборку валют.

Синтаксис:

ВыбратьВалюты(<ФлагВсе>, <ФлагДК>, <Номер> , <РазвСальдо>, <Сортировка>)

Англоязычный синоним:

Select Currencies

Параметры:

<ФлагВсе> | Необязательный параметр. 0 — отбирать те валюты, которые имели итоги на этом уровне обхода итогов запроса; 1 — включить в выборку все валюты, которые имели итоги в данном запросе; -1, -2 ... — включить в выборку валюты, которые имели итоги в группировке n-го вышестоящего уровня. По умолчанию — 0.
<ФлагДК> | Необязательный параметр. 1 — включать в выборку валюты только с дебетовыми оборотами; 2 — включать в выборку валюты только с кредитовыми оборотами. 0 — включать в выборку валюты вне зависимости от дебетовых/кредитовых оборотов. По умолчанию 0.
<Номер> | Необязательный параметр. Положительное целое число — номер выборки. Если параметр не указан, выборке присваивается номер 0.
<РазвСальдо> | Необязательный параметр. Признак необходимости рассчитывать развернутое сальдо по субконто. Используется только если в запросе участвуют субконто. 1 — рассчитывать развернутое сальдо. 0 — не рассчитать развернутое сальдо; По умолчанию 0.
<Сортировка> | Необязательный параметр. Строка — идентификатор реквизита справочника валют, который будет использован для упорядочивания обхода валют методом ПолучитьВалюту. Если значение пустое — используется представление справочника.

Возвращаемое значение:

Число: 1 — если действие выполнено и в выборке есть хотя бы одна валюта;

0 — если действие не выполнено или в выборке нет ни одной валюты.

Описание:

Метод ВыбратьВалюты должен использоваться после выполнения метода ВыполнитьЗапрос. Метод открывает выборку валют.

Дополнительные условия на содержание выборки могут накладываться параметрами <ФлагВсе> и <ФлагДК>.

Параметр <РазвСальдо> может указываться только, если в запросе установлено участие субконто. Позволяет указать, рассчитывать ли равернутое сальдо для субконто выборки. Результаты расчета могут быть получены при помощи функций СНДРС , СНКРС , СКДРС , СККРС.

Непосредственно извлечение валют из выборки осуществляется при помощи метода ПолучитьВалюту.

Выборке, открываемой методом ВыбратьВалюты, может быть присвоен номер — «метка» выборки. Номер может использоваться для обращения к результатам выборки при помощи метода ПолучитьВалюту. Использование этой метки необходимо, если требуется получить две группировки по валюте.

Пример:

БухИтоги.Запрос(Дата1, Дата2);

БухИтоги.ВыбратьСчета();

Пока БухИтоги.ПолучитьСчет() = 1 цикл

   БухИтоги.ВыбратьВалюты();

   Пока БухИтоги.ПолучитьВалюту() = 1 цикл

      ДебВ=БухИтоги.ДО(2);

      КредВ=БухИтоги.КО(2);

   КонецЦикла;

КонецЦикла;

ПолучитьВалюту

Получить из выборки следующую валюту. Выборка должна быть предварительно открыта при помощи метода ВыбратьВалюты.

Синтаксис:

ПолучитьВалюту(<Номер>, <Валюта>}

Англоязычный синоним:

GetCurrency

Параметры:

<Номер> | Необязательный параметр. Положительное целое число — номер выборки.
<Валюта> | Необязательный параметр. Конкретное значение валюты, которое нужно получить из выборки.

Возвращаемое значение:

Число: 1 — следующая валюта выбрана успешно; 0 — следующий валюта не выбрана (отсутствует).

Описание:

Метод ПолучитьВалюту выбирает очередную валюту из выборки, открытой при помощи метода ВыбратьВалюты.

Метод ПолучитьВалюту позволяет также обращаться к результатам конкретной выборки по ее номеру. Номер выборки передается методу в качестве параметра <Номер>.

Метод ПолучитьВалюту позволяет также обращаться к конкретному значению результа выборки. Значение валюты выборки передается методу в качестве параметра <Валюта >.

Если параметр <Валюта> не задан, то метод ПолучитьВалюту используется для организации цикла по валютам. Условием цикла может служить равенство 1 возвращаемого значения метода: цикл выполняется, пока метод ПолучитьВалюту возвращает 1.

Метод возвращает 0, когда очередная валюта не выбрана. Это происходит, если при предыдущем применении метода была выбрана последняя валюта выборки.

Пример:

БухИтоги.Запрос(Дата1, Дата2);

БухИтоги.ВыбратьСчета();

Пока БухИтоги.ПолучитьСчет() = 1 цикл

   БухИтоги.ВыбратьВалюты();

   Пока БухИтоги.ПолучитьВалюту() = 1 цикл

      ДебВ = БухИтоги.ДО(2);

      КредВ = БухИтоги.КО(2);

   КонецЦикла;

КонецЦикла;

ВыбратьПериоды

Открывает выборку периодов.

Синтаксис:

ВыбратьПериоды(<ФлагВсе>, <ФлагДК>, <Номер>, <РазвСальдо>)

Англоязычный синоним:

SelectPeriods

Параметры:

<ФлагВсе> | Необязательный параметр. 0 — отбирать те периоды, которые имели итоги на этом уровне обхода итогов запроса; 1 — включить в выборку все периоды, которые имели итоги в данном запросе; -1, -2 ... — включить в выборку периоды, которые имели итоги в группировке n-го вышестоящего уровня. По умолчанию — 0.
<ФлагДК> | Необязательный параметр. 1 — включать в выборку периоды только с дебетовыми оборотами; 2 — включать в выборку периоды только с кредитовыми оборотами. 0 — включать в выборку периоды вне зависимости от дебетовых/кредитовых оборотов. По умолчанию 0.
<Номер> | Необязательный параметр. Положительное целое число — номер выборки. Если параметр не указан, выборке приваивается номер 0.
<РазвСальдо> | Необязательный параметр. Признак необходимости рассчитывать развернутое сальдо по субконто. Используется только если в запросе участвуют субконто. 1 — рассчитывать развернутое сальдо; 0 — не рассчитывать развернутое сальдо. По умолчанию 0.

Возвращаемое значение:

Число: 1 — если действие выполнено и в выборке есть хотя бы один период;

0 — если действие не выполнено или в выборке нет ни одного периода.

Описание:

Метод ВыбратьПериоды должен использоваться после вызова метода ВыполнитьЗапрос. Метод открывает выборку, содержащую периоды итогов. Получение итогов в разрезе периодов доступно только если в запросе был задан параметр, устанавливающий разворачивание итогов с некоторой периодичностью.

Дополнительные условия на содержание выборки могут накладываться параметрами <ФлагВсе> и <ФлагДК>.

Параметр <РазвСальдо> может указываться только, если в запросе установлено участие субконто. Позволяет указать, рассчитывать ли равернутое сальдо для субконто выборки. Результаты расчета могут быть получены при помощи функций СНДРС , СНКРС , СКДРС , СККРС.

Непосредственно извлечение периодов из выборки осуществляется при помощи метода ПолучитьПериод.

Выборке, открываемой методом ВыбратьПериоды, может быть присвоен номер — «метка» выборки. Номер может использоваться для обращения к результатам выборки при помощи метода ПолучитьПериод. Использование этой метки необходимо, если требуется получить две группировки по периоду. Это позволяет получить две группировки но с одной периодичностью.

Пример:

БухИтоги.ВыполнитьЗапрос(Дата1, Дата2, , , , , "Месяц");

БухИтоги.ВыбратьСчета();

Пока БухИтоги.ПолучитьСчет() = 1 цикл

   БухИтоги.ВыбратьПериоды();

   Пока БухИтоги.ПолучитьПериод() = 1 цикл

      Деб = БухИтоги.ДО();

      Кред = БухИтоги.КО();

   КонецЦикла;

КонецЦикла;

ПолучитьПериод

Получить из выборки следующий период. Выборка должна быть предварительно открыта при помощи метода ВыбратьПериоды.

Синтаксис:

ПолучитьПериод(<Номер>, <ДатаНачалаПериода>}

Англоязычный синоним:

GetPeriod

Параметры:

<Номер> | Необязательный параметр. Положительное целое число — номер выборки.
<ДатаНачалаПериода> | Необязательный параметр. Конкретное значение периода, который нужно получить из выборки.

Возвращаемое значение:

Число: 1 — следующий период выбран успешно; 0 — следующий период не выбран (отсутствует).

Описание:

Метод ПолучитьПериод выбирает очередной период из выборки, открытой при помощи метода ВыбратьПериоды.

Метод ПолучитьПериод позволяет также обращаться к результатам конкретной выборки по ее номеру. Номер выборки передается методу в качестве параметра <Номер>.

Метод ПолучитьПериод позволяет также обращаться к конкретному значению результа выборки. Значение периода выборки передается методу в качестве параметра <ДатаНачалаПериода>.

Если параметр <ДатаНачалаПериода> не задан, то метод ПолучитьПериод используется для организации цикла по периодам. Условием цикла может служить равенство 1 возвращаемого значения метода: цикл выполняется, пока метод ПолучитьПериод возвращает 1.

Метод возвращает 0, когда очередной период не выбран. Это происходит, если при предыдущем применении метода был выбран последний период выборки.

Пример:

БухИтоги.ВыполнитьЗапрос(Дата1, Дата2, , , , , "Месяц");

БухИтоги.ВыбратьСчета();

Пока БухИтоги.ПолучитьСчет() = 1 цикл

   БухИтоги.ВыбратьПериоды();

   Пока БухИтоги.ПолучитьПериод() = 1 цикл

      Деб = БухИтоги.ДО();

      Кред = БухИтоги.КО();

   КонецЦикла;

КонецЦикла;

ВыбратьСубконто

Открывает выборку по субконто.

Синтаксис:

ВыбратьСубконто(<Индекс>, <ФлагВсе>, <ФлагДК>, <Номер>, <РазвСальдо>,

                     <Сортировка>, <РежимОбхода>)

Англоязычный синоним:

SelectSubconto

Параметры:

<Индекс> | Необязательный параметр. Число — порядковый номер вызова метода ИспользоватьСубконто.
<ФлагВсе> | Необязательный параметр. 0 — отбирать те субконто, которые имели итоги на этом уровне обхода итогов запроса; 1 — включить в выборку все субконто, которые имели итоги в данном запросе; -1, -2 ... — включить в выборку субконто, которые имели итоги в группировке n-го вышестоящего уровня. По умолчанию — 0.
<ФлагДК> | Необязательный параметр. 1 — включать в выборку субконто только с дебетовыми оборотами; 2 — включать в выборку субконто только с кредитовыми оборотами. 0 — включать в выборку субконто вне зависимости от дебетовых/кредитовых оборотов. По умолчанию 0.
<Номер> | Необязательный параметр. Положительное целое число — номер выборки. Если параметр не указан, выборке приваивается номер 0.
<РазвСальдо> | Необязательный параметр. Признак необходимости рассчитывать развернутое сальдо. 0 —не рассчитать развернутое сальдо; 1 — рассчитывать развернутое сальдо. По умолчанию 0.
<Сортировка> | Необязательный параметр. Строка — идентификатор реквизита субконто (если субконто — справочник или документ или счет), который будет использован для упорядочивания обхода субконто методом ПолучитьСубконто. Если значение пустое — используется стандартное представление.
<РежимОбхода> | Необязательный параметр. Положительное целое число — порядок выборки результатов: 0 — выборка в прямом порядке, 1 — выборка в обратном порядке; По умолчанию 0.

Возвращаемое значение:

Число: 1 — если действие выполнено и в выборке есть хотя бы одно субконто;

0 — если действие не выполнено или в выборке нет ни одного субконто.

Описание:

Метод ВыбратьСубконто должен использоваться после вызова метода ВыполнитьЗапрос. Метод открывает выборку по субконто.

Если обработка по субконто задавалась путем нескольких вызовов метода ИспользоватьСубконто, то параметр <Индекс> позволяет сослаться на субконто конкретного вида в порядке вызова метода ИспользоватьСубконто. Для этого параметром <Индекс> задается номер вызова метода ИспользоватьСубконто.

Дополнительные условия на содержание выборки могут накладываться параметрами <ФлагВсе> и <ФлагДК>.

Параметр <РазвСальдо> позволяет указать, рассчитывать ли равернутое сальдо для субконто выборки.

Извлечение субконто из выборки осуществляется при помощи метода ПолучитьСубконто.

Выборке, открываемой методом ВыбратьСубконто, может быть присвоен номер — «метка» выборки. Номер может использоваться для обращения к результатам выборки при помощи метода ПолучитьСубконто. Это позволяет получить две группировки по субконто данного вида.

Пример:

БухИтоги.ИспользоватьСубконто(ВидыСубконто.Материалы, , 1);

БухИтоги.ИспользоватьСубконто(ВидыСубконто.Склады, , 1);

БухИтоги.ВыполнитьЗапрос(ДатаНач, ДатаКон, "10");

БухИтоги.ВыбратьСубконто(1);

Пока БухИтоги.ПолучитьСубконто(1) = 1 цикл

   БухИтоги.ВыбратьСубконто(2);

   Пока БухИтоги.ПолучитьСубконто(2) = 1 цикл

      Деб = БухИтоги.ДО();

      Кред = БухИтоги.КО();

   КонецЦикла;

КонецЦикла;

ПолучитьСубконто

Получить из выборки следующее субконто. Выборка должна быть предварительно открыта при помощи метода ВыбратьСубконто.

Синтаксис:

ПолучитьСубконто(<Индекс>, <Номер>, <Субконто>)

Англоязычный синоним:

GetSubconto

Параметры:

<Индекс> | Необязательный параметр. Число —порядковый номер вызова метода ИспользоватьСубконто.
<Номер> | Необязательный параметр. Положительное целое число — номер выборки.
<Субконто> | Необязательный параметр. Конкретное значение субконто, который нужно получить из выборки.

Возвращаемое значение:

Число: 1 — следующее субконто выбрано успешно; 0 — следующе субконто не выбрано (отсутствует).

Описание:

Метод ПолучитьСубконто выбирает очередное субконто из выборки, открытой при помощи метода ВыбратьСубконто.

Метод ПолучитьСубконто позволяет также обращаться к результатам выборки по номеру выборки. Номер выборки передается методу в качестве параметра <Номер>.

Метод ПолучитьСубконто позволяет также обращаться к конкретному значению результа выборки. Значение субконто выборки передается методу в качестве параметра <Субконто>.

Если параметр <Субконто> не задан, то метод ПолучитьСубконто используется для организации цикла по субконто. Условием цикла может служить равенство 1 возвращаемого значения метода: цикл выполняется, пока метод ПолучитьСубконто возвращает 1.

Метод возвращает 0, когда очередное субконто не выбрано. Это происходит, если при предыдущем применении метода было выбрано последнее субконто выборки.

Пример:

БухИтоги.ИспользоватьСубконто(ВидыСубконто.Материалы, , 1);

БухИтоги.ИспользоватьСубконто(ВидыСубконто.Склады, , 1);

БухИтоги.ВыполнитьЗапрос(ДатаНач, ДатаКон, "10");

БухИтоги.ВыбратьСубконто(1);

Пока БухИтоги.ПолучитьСубконто(1) = 1 цикл

   БухИтоги.ВыбратьСубконто(2);

   Пока БухИтоги.ПолучитьСубконто(2) = 1 цикл

      Деб = БухИтоги.ДО();

      Кред = БухИтоги.КО();

   КонецЦикла;

КонецЦикла;

ВыбратьКорСубконто

Открывает выборку по корреспондирующим субконто.

Синтаксис:

ВыбратьКорСубконто(<Индекс>, <ФлагВсе>, <ФлагДК>, <Номер>, <Сортировка>,

                   <РежимОбхода>)

Англоязычный синоним:

SelectCorSubconto

Параметры:

<Индекс> | Необязательный параметр. Число —порядковый номер вызова метода ИспользоватьКорСубконто.
<ФлагВсе> | Необязательный параметр. 0 — отбирать те субконто, которые имели итоги на этом уровне обхода итогов запроса; 1 — включить в выборку все субконто, которые имели итоги в данном запросе; -1, -2 ... — включить в выборку субконто, которые имели итоги в группировке п-го вышестоящего уровня. По умолчанию — 0.
<ФлагДК> | Необязательный параметр. 1 — включать в выборку субконто только с дебетовыми оборотами; 2 — включать в выборку субконто только с кредитовыми оборотами. 0 — включать в выборку субконто вне зависимости от дебетовых/кредитовых оборотов. По умолчанию 0.
<Номер> | Необязательный параметр. Положительное целое число — номер выборки. Если параметр не указан, выборке присваивается номер 0.
<Сортировка> | Необязательный параметр. Строка — идентификатор реквизита субконто (если субконто — справочник или документ или счет), который будет использован для упорядочивания обхода субконто методом ПолучитьКорСубконто. Если значение пустое — используется стандартное представление.
<РежимОбхода> | Необязательный параметр. Положительное целое число — порядок выборки результатов: 0 — выборка в прямом порядке, 1 — выборка в обратном порядке. По умолчанию 0.

Возвращаемое значение:

Число: 1 — если действие выполнено и в выборке есть хотя бы одно субконто; 0 — если действие не выполнено или в выборке нет ни одного субконто.

Описание:

Метод ВыбратьКорСубконто должен использоваться после вызова метода ВыполнитьЗапрос. Метод открывает выборку по корреспондирующим субконто.

Если обработка по корреспондирующим субконто задавалась путем нескольких вызовов метода ИспользоватьКорСубконто, то параметр <Индекс> позволяет сослаться на субконто конкретного вида в порядке вызова метода ИспользоватьКорСубконто. Для этого параметром <Индекс> задается номер вызова метода ИспользоватьКорСубконто.

Дополнительные условия на содержание выборки могут накладываться параметрами <ФлагВсе> и <ФлагДК>.

Извлечение субконто из выборки осуществляется при помощи метода ПолучитьКорСубконто.

Выборке, открываемой методом ВыбратьКорСубконто, может быть присвоен номер — «метка» выборки. Номер может использоваться для обращения к результатам выборки при помощи метода ПолучитьКорСубконто. Это позволяет получить две группировки по субконто данного вида.

Пример:

БухИтоги.ИспользоватьСубконто(ВидыСубконто.Товары, , 1);

БухИтоги.ИспользоватьКорСубконто(ВидыСубконто.Клиенты, , 1);

БухИтоги.ВыполнитьЗапрос(ДатаНач, ДатаКон);

БухИтоги.ВыбратьСубконто();

Пока БухИтоги.ПолучитьСубконто() = 1 цикл

   БухИтоги.ВыбратьКорСубконто();

   Пока БухИтоги.ПолучитьКорСубконто() =1 цикл

      Деб = БухИтоги.КорДО();

      Кред = БухИтоги.КорКО();

   КонецЦикла;

КонецЦикла;

ПолучитьКорСубконто

Получить из выборки следующее субконто. Выборка должна быть предварительно открыта при помощи метода ВыбратьКорСубконто.

Синтаксис:

ПолучитьКорСубконто(<Индекс>, <Номер>, <КорСубконто>)

Англоязычный синоним:

GetCorSubconto

Параметры:

<Индекс> | Необязательный параметр. Число —порядковый номер вызова метода ИспользоватьКорСубконто.
<Номер> | Необязательный параметр. Положительное целое число — номер выборки.
<КорСубконто> | Необязательный параметр. Конкретное значение корсубконто, который нужно получить из выборки.

Возвращаемое значение:

Число: 1 — следующее субконто выбрано успешно; 0 — следующе субконто не выбрано (отсутствует).

Описание:

Метод ПолучитьКорСубконто выбирает очередное корреспондирующее субконто из выборки, открытой при помощи метода ВыбратьКорСубконто.

Метод ПолучитьКорСубконто позволяет также обращаться к результатам выборки по номеру выборки. Номер выборки передается методу в качестве параметра <Номер>.

Метод ПолучитьКорСубконто позволяет также обращаться к конкретному значению результа выборки. Значение корсубконто выборки передается методу в качестве параметра <КорСубконто>.

Если параметр <КорСубконто> не задан, то метод ПолучитьКорСубконто используется для организации цикла по корреспогди-рующим субконто. Условием цикла может служить равенство 1 возвращаемого значения метода: цикл выполняется, пока метод ПолучитьКорСубконто возвращает 1.

Метод возвращает 0, когда очередное корреспондирующее субконто не выбрано. Это происходит, если при предыдущем применении метода было выбрано последнее субконто выборки.

Пример:

БухИтоги.ИспользоватьСубконто(ВидыСубконто.Товары, , 1);

БухИтоги.ИспользоватьКорСубконто(ВидыСубконто.Клиенты, , 1);

БухИтоги.ВыполнитьЗапрос(ДатаНач, ДатаКон);

БухИтоги.ВыбратьСубконто();

Пока БухИтоги.ПолучитьСубконто() = 1 цикл

   БухИтоги.ВыбратьКорСубконто();

   Пока БухИтоги.ПолучитьКорСубконто() = 1 цикл

      Деб = БухИтоги.КорДО();

      Кред = БухИтоги.КорКО();

   КонецЦикла;

КонецЦикла;

Атрибуты для обращения к результатам запроса

Счет

Текущий счет результатов запроса.

Синтаксис:

Счет

Англоязычный синоним:

Account

Описание:

Счет является атрибутом типа «Счет». При обращении к итогам запроса при помощи функций ВыбратьСчета, ПолучитьСчет, атрибут Счет равен текущему счету, выбранному функцией ПолучитьСчет.

Пример:

БухИтоги.Запрос(Дата1, Дата2);

БухИтоги.ВыбратьСчета();

Пока БухИтоги.ПолучитьСчет() = 1 цикл

   Сообщить(БухИтоги.Счет.Код + " ДО = " + БухИтоги.ДО());

КонецЦикла;

КорСчет

Корреспондирующий счет, для которого извлекаются результаты запроса.

Синтаксис:

КорСчет

Англоязычный синоним:

CorAccount

Описание:

КорСчет является атрибутом типа «Счет». При обращении к итогам запроса при помощи функций ВыбратьКорСчета, ПолучитьКорСчет, атрибут Счет равен текущему счету, выбранному функцией ПолучитьКорСчет.

Пример:

БухИтоги.Запрос(Дата1, Дата2);

БухИтоги.ВыбратьСчета();

Пока БухИтоги.ПолучитьСчет() = 1 цикл

   БухИтоги.ВыбратьКорСчета();

   Пока БухИтоги.ПолучитьКорСчет() = 1 цикл

      Сообщить(БухИтоги.КорСчет.Код + " ДО = " + БухИтоги.КорДО());

   КонецЦикла;

КонецЦикла;

Валюта

Валюта, по которой извлекаются результаты запроса.

Синтаксис:

Валюта

Англоязычный синоним:

Currency

Описание:

Атрибут Валюта имеет значение «Справочник.Валюты». Он позволяет получить, текущую валюту при использовании методов ВыбратьВалюты и ПолучитьВалюту.

Пример:

БухИтоги.Запрос(Дата1, Дата2);

БухИтоги.ВыбратьСчета();

Пока БухИтоги.ПолучитьСчет() = 1 цикл

   БухИтоги.ВыбратьВалюты();

   Пока БухИтоги.ПолучитьВалюту() = 1 цикл

      Сообщить(БухИтоги.Счет.Код + "/" + БухИтоги.Валюта + " ДО == " +

               БухИтоги.ДО());

   КонецЦикла;

КонецЦикла;

НачДата

Начальная дата периода, за который извлекаются результаты запроса.

Синтаксис:

НачДата

Англоязычный синоним:

BegDate

Описание:

Атрибут НачДата содержит начальную дату периода, за который извлекаются итоги при использовании методов обхода периодов ВыбратьПериоды и ПолучитьПериод.

Пример:

БухИтоги.ВыполнитьЗапрос(Дата1, Дата2, , , , , "Месяц");

БухИтоги.ВыбратьСчета();

Пока БухИтоги.ПолучитьСчет() = 1 цикл

   БухИтоги.ВыбратьПериоды();

   Пока БухИтоги.ПолучитьПериод() = 1 цикл

      Сообщить("С " + БухИтоги.НачДата.Код + " по " + БухИтоги.КонДата +

               " ДО = " + БухИтоги.ДО());

   КонецЦикла;

КонецЦикла;

КонДата

Конечная дата периода, за который извлекаются результаты запроса.

Синтаксис:

КонДата

Англоязычный синоним:

EndDate

Описание:

Атрибут КонДата содержит конечную дату периода, за который извлекаются итоги при использовании методов обхода периодов ВыбратьПериоды и ПолучитьПериод.

Пример:

БухИтоги.ВыполнитьЗапрос(Дата1, Дата2, , , , , "Месяц");

БухИтоги.ВыбратьСчета();

Пока БухИтоги.ПолучитьСчет() = 1 цикл

   БухИтоги.ВыбратьПериоды();

   Пока БухИтоги.ПопучитьПериод() = 1 цикл

      Сообщить("С " + БухИтоги.НачДата.Код + " по " + БухИтоги.КонДата +

           " ДО = " + БухИтоги.ДО());

   КонецЦикла;

КонецЦикла;

Операция

Текущая операция, по которой выдаются итоги при использовании запроса.

Синтаксис:

Операция

Англоязычный синоним:

Operation

Описание:

Атрибут позволяет обращаться к текущей операции, если запрос получен с детализацией итогов по периоду «Операция» и «Проводка».

Пример:

БухИтоги.ВыполнитьЗапрос(Дата1, Дата2, , , , , "Проводки");

БухИтоги.ВыбратьСчета();

Пока БухИтоги.ПолучитьСчет() = 1 цикл

   БухИтоги.ВыбратьПериоды();

   Пока БухИтоги.ПолучитьПериод() = 1 цикл

      Сообщить("Операция " + БухИтоги.Операция.ПредставлениеПроводки());

   КонецЦикла;

КонецЦикла;

Методы обращения к результатам запроса

Субконто

Субконто, соответствующее текущему итогу.

Синтаксис:

Субконто(<Номер> | <ВидСубконто>)

Англоязычный синоним:

Subconto

Параметры:

<Номер> | Необязательный параметр. Число — номер выборки субконто.
<ВидСубконто> | Необязательный параметр. Значение типа «Вид субконто».

Возвращаемое значение:

Значение субконто, соответствующее текущему итогу.

Описание:

Метод Субконто служит для получения значения субконто, соответствующего текущему итогу.

Метод применяется для получения текущего сукбонто при использовании методов ВыбратьСубконто и ПолучитьСубконто.

Пример:

БухИтоги.ИспользоватьСубконто(ВидыСубконто.Товары, , 1);

БухИтоги.ВыполнитьЗапрос(ДатаНач, ДатаКон);

БухИтоги.ВыбратьСубконто();

Пока БухИтоги.ПолучитьСубконто() = 1 цикл

   Сообщить(БухИтоги.Субконто());

КонецЦикла;

КорСубконто

Корреспондирующее субконто, соответствующее текущему итогу.

Синтаксис:

КорСубконто(<Номер>|<ВидСубконто>)

Англоязычный синоним:

CorSubconto

Параметры:

<Номер> | Необязательный параметр. Число — номер выборки корреспондирующего субконто.
<ВидСубконто> | Необязательный параметр. Значение типа «ВидСубконто».

Возвращаемое значение:

Значение корреспондирующего субконто, соответствующее текущему итогу.

Описание:

Метод КорСубконто служит для получения значения корреспондирующего субконто, соответствующего текущему итогу. Метод применяется для получения текущего сукбонто при использовании методов ВыбратьКорСубконто и ПолучитьКорСубконто.

Пример:

БухИтоги.ИспользоватьСубконто(ВидыСубконто.Товары, , 1);

БухИтоги.ИспользоватьКорСубконто(ВидыСубконто.Клиенты, , 1);

БухИтоги.ВыполнитьЗапрос(ДатаНач, ДатаКон);

БухИтоги.ВыбратьСубконто();

Пока БухИтоги.ПолучитьСубконто() = 1 цикл

   БухМтоги.ВыбратьКорСубконто();

   Пока БухИтоги.ПолучитьКорСубконто() = 1 цикл

      Сообщить(БухИтоги.Субконто() + "-" + БухИтоги.КорСубконто());

   КонецЦикла;

КонецЦикла;

ПредставлениеСубконто

Представление субконто, соответствующего текущему итогу.

Синтаксис:

ПредставлениеСубконто(<Номер>|<ВидСубконто>, <Краткое>]

Англоязычный синоним:

SubcontoPresentation

Параметры:

<Номер> | Необязательный параметр. Число — номер выборки субконто.
<ВидСубконто> | Значение типа «Вид субконто».
<Краткое> | Необязательный параметр. 0 — полное представление субконто; 1 — краткое представление субконто. По умолчанию — 0.

Возвращаемое значение:

Строковое представление для субконто, соответствующего текущему итогу.

Описание:

Представлением называется символьная строка, содержащая информацию из различных реквизитов объекта, являющегося значением субконто. Эта символьная строка может быть использована для отображения значений субконто в различных отчетах.

Представление может быть задано только для видов субконто типа «Справочник» или «Документ». Формат представления определяется в конфигураторе при редактировании свойств вида субконто.

Метод ПредставлениеСубконто позволяет получить представление для субконто, соответствующего текущему итогу.

Метод применяется для текущего сукбонто при использовании методов ВыбратьСубконто и ПолучитьСубконто.

Пример:

БухИтоги.ИспользоватьСубконто(ВидыСубконто.Товары, , 1);

БухИтоги.ВыполнитьЗапрос(ДатаНач, ДатаКон);

БухИтоги.ВыбратьСубконто();

Пока БухИтоги.ПолучитьСубконто() = 1 цикл

   Сообщить(БухИтоги.ПредставлениеСубконто());

КонецЦикла;

ПредставлениеКорСубконто

Представление корреспондирующего субконто, соответствующего текущему итогу.

Синтаксис:

ПредставлениеКорСубконто(<Номер>|<ВидСубконто>, <Краткое>)

Англоязычный синоним:

CorSubcontoPresentation

Параметры:

<Номер> | Необязательный параметр. Число — номер выборки корреспондирующего субконто.
<ВидСубконто> | Значение типа «Вид субконто».
<Краткое> | Необязательный параметр. 0 — полное представление субконто; 1 — краткое представление субконто. По умолчанию — 0.

Возвращаемое значение:

Строковое представление для корреспондирующего субконто, соответствующего текущему итогу.

Описание:

Представлением называется символьная строка, содержащая информацию из различных реквизитов объекта, являющегося значением субконто. Эта символьная строка может быть использована для отображения значений субконто в различных отчетах.

Представление может быть задано только для видов субконто типа «Справочник» или «Документ». Формат представления определяется в конфигураторе при редактировании свойств вида субконто.

Метод ПредставлениеКорСубконто позволяет получить представление для корреспондирующего субконто, соответствующего текущему итогу.

Метод применяется для текущего корреспондирующего сукбонто при использовании методов ВыбратьКорСубконто и ПолучитьКорСубконто.

Пример:

БухИтоги.ИспользоватьСубконто(ВидыСубконто.Товары, , 1);

БухИтоги.ИспользоватьКорСубконто(ВидыСубконто.Клиенты, , 1);

БухИтоги.ВыполнитьЗапрос(ДатаНач, ДатаКон);

БухИтоги.ВыбратьСубконто();

Пока БухИтоги.ПолучитьСубконто() = 1 цикл

   БухИтоги.ВыбратьКорСубконто();

   Пока БухИтоги.ПолучитьКорСубконто() = 1 цикл

      Сообщить(БухИтоги.ПредставлениеСубконто() + "-" +

                 БухИтоги.ПредставлениеКорСубконто());

   КонецЦикла;

КонецЦикла;

ЭтоГруппа

Определяет, является ли текущее значение группироки запроса по субконто группой или нет. Имеет смысл только для субконто типа «справочник».

Синтаксис:

ЭтоГруппа()

Англоязычный синоним:

IsGroup

Возвращаемое значение:

Число: 1 — значение группировки по субконто является группой; 0 — значение группировки по субконто не является группой.

Описание:

Данный метод позволяет определить, является ли текущее значение группироки запроса по субконто группой или нет. Метод можно применять независимо от типа данных вида субконто, однако он имеет смысл только для субконто типа «справочник», а для остальных выдает 0.

Пример:

Пока БухИтоги.ПолучитьСубконто() = 1 Цикл

   Если БухИтоги.ЭтоГруппа() = 1 Тогда

      Таб.ВывестиСекцию("Группа");

   Иначе

      Таб.ВывестиСекцию("Строка");

   КонецЕсли;

КонецЦикла;

СНД, СНК, СКД, СКК, ДО, КО

СНД — дебетовое сальдо на начало периода;

СКД — дебетовое сальдо на конец периода;

СНК — кредитовое сальдо на начало периода;

СКК — кредитовое сальдо на конец периода;

ДО — дебетовый оборот за период;

КО — кредитовый оборот за период.

Синтаксис:

СНД(<ТипСуммы>)

СНК(<ТипСуммы>)

СКД(<ТипСуммы>}

СКК(<ТипСуммы>)

ДО(<ТипСуммы>)

КО(<ТипСуммы>)

Англоязычные синонимы:

IDB

ICB

FDB

FCB

TD

ТС

Параметры:

<ТипСуммы>

Необязательный параметр. Число или строка — тип возвращаемой суммы. Может принимать одно из следующих значений:

1 ("С", "S") — сумма;

2 ("В", "С") — валютная сумма;

3 ("К", "А") — количество.

Если параметр не указан, метод возвращает сумму.

Возвращаемое значение:

Число — сальдо или оборот.

Описание:

При работе с результатами запроса, соответствующие сальдо и обороты в соответствии с текущим уровнем вложенности группировок.

Пример:

БухИтоги.Запрос(Дата1, Дата2);

БухИтоги.ВыбратьСчета();

Пока БухИтоги.ПолучитьСчет() = 1 цикл

   ОстНачД = БухИтоги.СНД();

   ОстНачК = БухИтоги.СНК();

   ОборотД = БухИтоги.ДО();

   ОборотК = БухИтоги.КО();

   ОстКонД = БухИтоги.СКД();

   ОстКонК = БухИтоги.СКК();

КонецЦикла;

СНДРС, СНКРС, СКДРС, СККРС

СНДРС — дебетовое развернутое сальдо на начало периода;

СНКРС — кредитовое развернутое сальдо на начало периода;

СКДРС —дебетовое развернутое сальдо на конец периода;

СККРС —кредитовое развернутое сальдо на конец периода.

Синтаксис:

СНДРС(<ТипСуммы>)

СНКРС(<ТипСуммы>)

СКДРС(<ТипСуммы>}

СККРС(<ТипСуммы>)

Англоязычный синоним:

IDBRS

ICBRS

FDBRS

FCBRS

Параметры:

<ТипСуммы>

Необязательный параметр. Число или строка — тип возвращаемой суммы. Может принимать одно из следующих значений:

1 ("С", "S") — сумма;

2 ("В", "С") — валютная сумма;

3 ("К", "А") — количество.

Если параметр не указан, метод возвращает сумму.

Возвращаемое значение:

Число — рассчитанное сальдо.

Описание:

При работе с итогами, полученными методом ВыполнитьЗапрос функции СНДРС, СНКРС, СКДРС, СККРС позволяют получить развернутое сальдо в контексте текущих группировок запроса.

Пример:

* В данном примере по каждой организации определяется развернутое сальдо по счетам, к которым относится вид субконто "Организации".

БухИтоги.ИспользоватьСубконто(ВидыСубконто.Организации, , 1);

БухИтоги.ВыполнитьЗапрос(ДатаНач, ДатаКон);

БухИтоги.ВыбратьСубконто(1);

Пока БухИтоги.ПолучитьСубконто(1) = 1 цикл

   ОстНачД = БухИтоги.СНДРС();

   ОстНачК = БухИтоги.СНКРС();

   ОстКонД = БухИтоги.СКДРС();

   ОстКонК = БухИтоги.СККРС();

КонецЦикла;

КорДО, КорКО

КорДО — дебетовый оборот между корреспонденциями;

КорКО — кредитовый оборот между корреспонденциями.

Синтаксис:

КорДО(<ТипСуммы>)

КорКО(<ТипСуммы>)

Англоязычные синонимы:

CorTD

СоrТС

Параметры:

<ТипСуммы>

Необязательный параметр. Число или строка — тип возвращаемой суммы. Может принимать одно из следующих значений:

1 ("С", "S") — сумма;

2 ("В", "С") — валютная сумма;

3 ("К", "А") — количество.

Если параметр не указан, метод возвращает сумму.

Возвращаемое значение:

Число — вычисленный оборот.

Описание:

Функции доступны только при работе с итогам, полученными методом

ВыполнитьЗапрос.

Функции КорДО и КорКО предназначены для получения корреспондирующих оборотов между счетам или между субконто. Для их использования должны быть организованы выборки методами ВыбратьСчета, ПолучитьСчет,

ВыбратьКорСчета, ПолучитьКорСчет или ВыбратьСубконто, ПолучитьСубконто, ВыбратьКорСубконто, ПолучитьКорСубконто.

Пример:

* В данном примере в переменной в переменных ОбДТ и ОбКТ образуются обороты с дебета основного счета в кредит корреспондирующего и наоборот соответственно.

БухИтоги.Запрос(Дата1, Дата2);

БухИтоги.ВыбратьСчета();

Пока БухИтоги.ПолучитьСчет() = 1 цикл

   БухИтоги.ВыбратьКорСчета();

   Пока БухИтоги.ПолучитьКорСчет() = 1 цикл

      ОбДТ = БухИтоги.КорДО();

      ОбКТ = БухИтоги.КорКО();

   КонецЦикла;

КонецЦикла;

ВыбранаПоДт, ВыбранаПоКт

ВыбранаПоДт — определение, выбран ли итог по дебету;

ВыбранаПоКт — определение, выбран ли итог по кредиту.

Синтаксис:

ВыбранаПоДт()

ВыбранаПоКт()

Англоязычный синоним:

SelectedByDt

SelectedByKt

Возвращаемое значение:

Число: 0 —данный итог по дебету(кредиту) не выбран; 1 —данный итог по дебету(кредиту) выбран.

Описание:

Данные функция используются при обходе результатов запроса с детализацией периода по операциям и проводкам. Они показывают для текущей операции (проводки) попала ли она в запрос по дебетовой (кредитовой) корреспонденции.

Пример:

БухИтоги.ВыполнитьЗапрос(Дата1, Дата2, "50", , , , "Проводки");

БухИтоги.ВыбратьСчета();

БухИтоги.ВыбратьПериоды();

КолПрих=0;

КолРасх=0;

Пока БухИтоги.ПолучитьПериод() = 1 Цикл

   Если БухИтоги.ВыбранаПоДт() = 1 Тогда

      КолПрих = КолПрих + 1;

   КонецЕсли;

   Если БухИтоги.ВыбранаПоКт() = 1 Тогда

      КолРасх = КолРасх + 1;

   КонецЕсли;

КонецЦикла;


Part21

Глава 21
Работа с Корректными проводками

Для работы с корректными проводками в системе используется специальный тип данных «КорректныеПроводки».

Контекст работы с объектом «КорректныеПроводки»

У объекта типа «КорректныеПроводки» есть набор атрибутов и методов для работы с данным объектом. Во всех программных модулях доступ к атрибутам и вызов методов корректных проводок может выполняться только при помощи переменной со ссылкой на объект типа «КорректныеПроводки». Объект создается функцией СоздатьОбъект, ссылка на который присваивается переменной. Чтобы вызвать метод объекта, имя метода (с указанием необходимых параметров) пишется через точку после идентификатора переменной.

Для создания объекта типа «КорректныеПроводки» в качестве параметра функции СоздатьОбъект передается ключевое слово «КорректныеПроводки».

Англоязычный синоним ключевого слова КорректныеПроводки — CorrectEntries.

Пример:

КП = СоздатьОбъект("КорректныеПроводки");

Атрибуты объекта «КорректныеПроводки»

Комментарий

Описание корректной проводки.

Синтаксис:

Комментарий

Англоязычный синоним:

Description

Описание:

Атрибут Комментарий дает доступ к значению описания корректной проводки.

Пример:

КП = СоздатьОбъект("КорректныеПроводки");

КП.ВыбратьКорректныеПроводки();

Пока КП.ПолучитьКорректнуюПроводку() = 1 Цикл

   Сообщить(КП.Комментарий);

КонецЦикла;

СчетДт

Счет дебета корректной проводки.

Синтаксис:

СчетДт

Англоязычный синоним:

AccountDt

Описание:

Атрибут СчетДт дает доступ к значению счета дебета корректной проводки.

Пример:

КП = СоздатьОбъект("КорректныеПроводки");

КП.ВыбратьКорректныеПроводки();

Пока КП.ПолучитьКорректнуюПроводку() = 1 Цикл

   Сообщить(КП.Комментарий + " счет дебета — " + КП.СчетДт);

КонецЦикла;

СчетКт

Счет кредита корректной проводки.

Синтаксис:

СчетКт

Англоязычный синоним:

AccountKt

Описание:

Атрибут СчетКт дает доступ к значению счета кредита корректной проводки.

Пример:

КП = СоздатьОбъект("КорректныеПроводки");

КП.ВыбратьКорректныеПроводки();

Пока КП.ПолучитьКорректнуюПроводку() = 1 Цикл

   Сообщить(КП.Комментарий + " счет кредита — " + КП.СчетКт);

КонецЦикла;

Методы объекта «КорректныеПроводки»

Выбрана

Проверить факт: выбрана ли корректная проводка.

Синтаксис:

Выбрана()

Англоязычный синоним:

Selected

Возвращаемое значение:

Число: 1 — если корректная проводка выбрана; 0 — если не выбрана.

Описание:

Метод Выбрана возвращает число со значением 1 — объект выбран или 0 — если не выбран.

Пример:

КП = СоздатьОбъект("КорректныеПроводки");

КП.ВыбратьКорректныеПроводки();

Пока КП.ПолучитьКорректнуюПроводку() = 1 Цикл

   Если Кп.Выбрана() = 1 Тогда

      Сообщить(КП.Комментарий + " счет кредита — " + КП.СчетКт);

   КонецЕсли;

КонецЦикла;

ВыбратьКорректныеПроводки

Открыть выборку корректных проводок по плану счетов.

Синтаксис:

ВыбратьКорректныеПроводки(<ПланСчетов>)

Англоязычный синоним:

SelectCorrectEntries

Параметры:

<ПланСчетов>

Необязательный параметр. Значение типа «План счетов». Если не задан, то по всем.

Возвращаемое значение:

Число: 1 — если есть хотя бы одна корректная проводка, удовлетворяющая условию; 0 — нет ни одной корректной проводки.

Описание:

Метод ВыбратьКорректныеПроводки предоставляет возможность выбирать корректные проводки (открывает выборку) при помощи метода ПолучитьКорректнуюПроводку.

Дальнейшая выборка при помощи метода ПолучитьКорректнуюПроводку будет происходить среди корректных проводок указанного плана счетов.

Пример:

КП = СоздатьОбъект("КорректныеПроводки");

КП.ВыбратьКорректныеПроводки();

Пока КП.ПолучитьКорректнуюПроводку() = 1 Цикл

   Если КП.Выбрана() = 1 Тогда

      Сообщить(КП.Комментарий + " счет кредита — " + КП.СчетКт);

   КонецЕсли;

КонецЦикла;

ВыбратьКорректныеПроводкиПоСчету

Открыть выборку корректных проводок для указанного счета.

Синтаксис:

ВыбратьКорректныеПроводкиПоСчету(<Счет>, <ТипСчета>, <ПланСчетов>)

Англоязычный синоним:

SelectCorrectEntriesByAccount

Параметры:

<Счет> | Код счета или сам счет для которого отбирать корректные проводки.
<ТипСчета> | Необязательный параметр. Число: 0 — переданный счет является счетом дебета; 1 — переданный счет является счетом кредита. Значение по умолчанию 0.
<ПланСчетов> | Необязательный параметр. Значение типа «План счетов». Значение по умолчанию — главный план счетов.

Возвращаемое значение:

Число: 1 — если есть хотя бы одна корректная проводка, удовлетворяющая условию; 0 — нет ни одной корректной проводки.

Описание:

Метод ВыбратьКорректныеПроводкиПоСчету предоставляет возможность выбирать корректные проводки (открывает выборку) при помощи метода ПолучитьКорректнуюПроводку.

Дальнейшая выборка при помощи метода ПолучитьКорректнуюПроводку будет происходить среди корректных проводок указанного плана счетов.

Пример:

КП = СоздатьОбъект("КорректныеПроводки");

КП.ВыбратьКорректныеПроводкиПоСчету("41.1");

Пока КП.ПолучитьКорректнуюПроводку() = 1 Цикл

   Если Кп.Выбрана() = 1 Тогда

      Сообщить(КП.Комментарий + " счет кредита — " + КП.СчетКт);

   КонецЕсли;

КонецЦикла;

ПолучитьКорректнуюПроводку

Получить из выборки следующую корректную проводку.

Синтаксис:

ПолучитьКорректнуюПроводку()

Англоязычный синоним:

GetCorrectEntry

Возвращаемое значение:

Число: 1 — корректная проводка получена; 0 — не получена (отсутствует).

Описание:

Метод ПолучитьКорректнуюПроводку выбирает следующую корректную проводку в выборке, открытой перед этим при помощи метода ВыбратьКорректныеПроводки или ВыбратьКорректныеПроводкиПоСчету.

Пример:

КП = СоздатьОбъект("КорректныеПроводки");

КП.ВыбратьКорректныеПроводки();

Пока КП.ПолучитьКорректнуюПроводку() = 1 Цикл

   Если Кп.Выбрана() = 1 Тогда

      Сообщить(КП.Комментарий + " счет кредита — " + КП.СчетКт);

   КонецЕсли;

КонецЦикла;

Новая

Добавить новую корректную проводку.

Синтаксис:

Новая()

Англоязычный синоним:

New

Описание:

Метод Новая добавляет новую корректную проводку.

Пример:

КП = СоздатьОбъект("КорректныеПроводки");

КП.Новая();

КП.Комментарий = "НДС с комисс. вознаграждения";

КП.СчетДт = "46.28";

КП.СчетКт = "68.2";

Кп.Записать();

Записать

Записать измененную или новую корректную проводку.

Синтаксис:

Записать()

Англоязычный синоним:

Write

Возвращаемое значение:

Число: 1 — корректная проводка успешно записана; 0 — не записана.

Описание:

Метод Записать записывает измененную или новую корректную проводку.

Пример:

КП = СоздатьОбъект("КорректныеПроводки");

КП.Новая();

КП.Комментарий ="НДС с комисс. вознаграждения";

КП.СчетДт = "46.28";

КП.СчетКт = "68.2";

Кп.Записать();

Удалить

Удалить корректную проводку.

Синтаксис:

Удалить()

Англоязычный синоним:

Delete

Возвращаемое значение:

Число: 1 — корректная проводка успешно удалена; 0 — не удалена.

Описание:

Метод Удалить удаляет корректную проводку.

Пример:

КП = СоздатьОбъект("КорректныеПроводки");

КП.ВыбратьКорректныеПроводки();

Пока КП.ПояучитьКорректнуюПроводку() = 1 Цикл

   Если КП.Комментарий = "НДС с комисс. вознаграждения" Тогда

      КП.Удалить();

      Прервать;

   КонецЕсли;

КонецЦикла;


Part22

Глава 22
Работа с Журналами расчетов

Журнал расчетов — это средство для просмотра и редактирования результатов расчета. Каждая строка журнала отражает единичное событие расчета для того или иного объекта. Такие события называются «расчетами» и характеризуются следующими данными:

· объект, для которого произведен расчет;

· вид (т. е. способ) расчета;

· документ, на основании которого введен этот расчет;

· результат расчета;

· время действия (т. е. расчет имеет дату начала и дату окончания). период регистрации, во время которого расчет введен в журнал (это понятие не совпадает с понятием времени действия, так как время действия акта расчета и период регистрации, во время которого он введен в систему, могут не совпадать)

Справочник объектов расчета. Одним из самых важных свойств журнала расчетов является ссылка на справочник, элементы которого являются объектами расчета. Справочник объектов расчета может быть как простым, так и иерархическим. Не обязательно все элементы этого справочника должны рассчитываться конкретным журналом расчетов, но, в свою очередь, все строки журнала расчетов должны соответствовать тому или иному элементу справочника объектов расчета. Как правило, журнал расчетов содержит несколько записей по одному объекту расчета, но одна запись журнала расчетов не может соответствовать сразу нескольким объектам.

Расчетный период. Журнал расчетов имеет определенную периодичность, т. е. все расчеты в нем выполняются в пределах определенного временного интервала. Каждая запись журнала расчетов, соответствующая одному акту расчета, также имеет временное протяжение (т. е. имеет дату начала и дату окончания).

Важно! Временной интервал каждой отдельной записи журнала не может лежать в разных расчетных периодах журнала.

Записи, лежащие в текущем расчетном периоде, могут, тем не менее, иметь период действия, не принадлежащий текущему расчетному периоду. Это значит, что даты начала и окончания конкретной записи могут «выпадать» из текущего периода расчета и относиться к одному из прошлых или будущих периодов. Самым очевидным примером здесь может служить перерасчет зарплаты сотрудника за прошлый период или начисления будущего периода.

Примеры. Журнал расчета заработной платы сотрудников предприятия (каждый сотрудник — объект расчета), при этом выполняется расчет тех или иных начислений и удержаний (виды расчета), имеющих определенную продолжительность и результат. Другой пример — журнал расчета амортизации основных средств, где справочником объектов расчета является справочник основных средств предприятия, а видами расчета —алгоритм расчета амортизации, списания, переоценки и т. д. Третий пример — журнал расчета дивидендов для акционеров АО, где объекты расчета — список акционеров предприятия, а виды расчета — способы начислений дивидендов на акции разных типов.

Контекст работы с журналом расчета

Так же, как и при работе с другими данными системы 1С:Предприятие, доступ к атрибутам журнала расчетов и вызов его методов зависит от контекста выполнения модуля программы. В контексте выполнения расчета (см. «Виды программных модулей»), доступны атрибуты, методы журнала расчетов, т. е. они пишутся непосредственно, с указанием необходимых параметров.

Пример:

// Запись рассчитанного значения в атрибут Результат журнала расчетов

Результат = Объект.Оклад * Дни / ВсегоДней;

Во всех остальных случаях доступ к атрибутам и методам журнала расчетов производится через переменную, являющуюся ссылкой на объект типа «Журнал расчетов», т. е. созданную функцией СоздатьОбъект с ключевым словом ЖурналРасчетов.

Англоязычный синоним ключевого слова ЖурналРасчетов — CalcJournal.

Пример:

// Рассчитаем все записи журнала расчетов Зарплата

ЖР = СоздатьОбъект("ЖурналРасчетов.Зарплата");

ЖР.ВыбратьПериод(НачалоТекущегоПериода());

Пока ПолучитьЗапись() = 1 Цикл

   ЖР.Рассчитать();

КонецЦикла;

Контекст работы с записями журнала расчетов

При работе с журналом расчетов приходится сталкиваться с понятием «записи журнала расчетов». Ссылкой на объект типа «запись журнала расчетов» является, например, атрибут ПервичнаяЗапись журнала расчетов. Метод журнала ТекущаяЗапись также возвращает объект такого типа.

Кроме того, объект этого типа передается как параметр предопределенной процедуре формы журнала расчетов ПриРасчете в том случае, если выполняется расчет одной записи журнала расчетов. С точки зрения встроенного языка, ссылки на записи журнала расчетов — агрегатные объекты, имеющие свои атрибуты.

При работе с переменными или параметрами, представляющими собой ссылки на записи журнала расчетов, можно использовать любые атрибуты, присущие журналу расчетов, как агрегатному объекту (см. ниже).

Запись журнала расчетов как агрегатный объект не имеет методов.

Пример:

Процедура ПриРасчете(Объект)

   // определим, что считаем?

   Если ТипЗначения(Объект) = 12 Тогда

      // имеем дело с документом

      Если Объект.Автор <> Расчетчик Тогда

         // если автор данного документа не есть текущий расчетчик

         // запретим расчет чужого документа!

         СтатусВозврата(0);

      КонецЕсли;

   ИначеЕсли ТипЗначения(Объект) = 11 Тогда

      // а это — элемент справочника

      Если Объект.Владелец <> Расчетчик Тогда

         // если рассчитываемый объект лежит в папке текущего

         // расчетчика — считать можно, иначе — нет

         СтатусВозврата(0);

      КонецЕсли;

   Иначе

      // иначе — считаем одну запись

      Если (Объект.Документ.Автор <> Расчетчик) ИЛИ

           (Объект.Объект.Владелец <> Расчетчик) Тогда

         // не дадим считать запись чужого документа или объекта

         СтатусВозврата(0);

      КонецЕсли;

   КонецЕсли;

КонецПроцедуры

Контекст работы с периодом журнала расчетов

При работе с журналом расчетов приходится сталкиваться с понятием «период журнала расчетов». Ссылкой на такого рода объект являются, например, атрибуты ПериодРегистрации и ПериодДействия журнала расчетов. Кроме того, объект этого типа передается в качестве одного из параметров предопределенной процедуре глобального модуля ПриСменеРасчетногоПериода. С точки зрения встроенного языка, период журнала расчетов — агрегатный объект, имеющий свои атрибуты (см. ниже) и методы. Атрибуты периода журнала расчетов предназначены только для чтения.

Атрибуты периода журнала расчетов

ДатаНачала

Дата начала периода журнала расчетов.

Синтаксис:

ДатаНачала

Англоязычный синоним:

DateFrom

Описание:

Атрибут типа «дата» — дата начала периода журнала расчетов.

Пример:

Процедура ПриСменеРасчетногоПериода(ЖР, Период)

   Если ЖР.Вид() = "Зарплата" Тогда

      Предупреждение("Это смена текущего расчетного периода

               | для журнала Зарплата");

   КонецЕсли;

   Если Период.ДатаНачала <= ЖР.НачалоТекущегоПериода Тогда

      //не позволяем откатывать период назад

      СтатусВозврата(0);

   КонецЕсли;

КонецПроцедуры

См. также: ДатаОкончания

ДатаОкончания

Дата окончания периода журнала расчетов.

Синтаксис:

ДатаОкончания

Англоязычный синоним:

DateTill

Описание:

Атрибут типа «дата» — дата окончания периода журнала расчетов.

См. также: ДатаНачала

ОписательПериода

Возвращает строку-описатель периода.

Синтаксис:

ОписательПериода

Англоязычный синоним:

РеriodDescriptor

Описание:

Атрибут ОписательПериода является строковым представлением расчетного периода журнала расчетов. Тип формируемой строки различный для разной периодичности журнала расчетов. Например, для периода журналов с месячной периодичностью строка имеет вид "Январь 1997г", в случае квартальной периодичности журнала расчетов — "1 Квартал 1997г", а в случае недельной периодичности — "12.02.97 - 18.02.97".

Как правило, применяется при формировании отчетов.

Пример:

Процедура ВыводПоПериодам()

   Перем Запрос, ТекстЗапроса, Таб;

   Перем ДатаАкт;

   ЖЗ = СоздатьОбъект("ЖурналРасчетов.Зарплата");

   ДатаАкт = ЖЗ.НачалоТекущегоПериода();

   //Создание объекта типа Запрос

   Запрос = СоздатьОбъект("Запрос");

   ТекстЗапроса = "//{{ЗАПРОС(ВыводПоПериодам)

   |Период с ДатаАкт по ДатаАкт;

   |Сотр = ЖурналРасчетов.Зарплата.Объект;

   |Пер = ЖурналРасчетов.Зарплата.ПериодРегистрации;

   |Рез = ЖурналРасчетов.Зарплата.Результат;

   |Группировка Сотр упорядочить по Сотр.МестоРаботы без групп;

   |Группировка Пер;

   |Функция Сум = Сумма(Рез);

   |"//}}ЗАПРОС

   ;

   // Если ошибка в запросе, то выход из процедуры

   Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда

      Возврат;

   КонецЕсли;

   Пока Запрос.Группировка("Сотр") = 1 Цикл

      Сообщить(Запрос.Сотр.Наименование);

      Пока Запрос.Группировка("Пер") = 1 Цикл

         Сообщить(Запрос.Пер.ОписательПериода + "-" + 3апрос.Сум);

      КонецЦикла;

   КонецЦикла;

КонецПроцедуры

Методы периода журнала расчетов

ПрибавитьПериод

Возвращает очередной период журнала на базе текущего периода.

Синтаксис:

ПрибавитьПериод(<Количество>)

Англоязычный синоним:

AddPeriod

Параметры:

<Количество>

Число периодов, на которое отстоит текущий период от искомого. По умолчанию — 1 (т. е. метод возвращает следующий период).

Возвращаемое значение:

Период журнала, отстоящий от заданного на определяемое параметром <Количество> число периодов.

Описание:

Метод предназначен для получения периода отстоящего от текущего на заданное число периодов. Если <Количество> положительное число, возвращаемое значение — будущий период, в противном случае — прошлый период.

Пример:

ЖР = СоздатьОбъект{"ЖурналРасчетов.Зарплата");

ЖР.ВыбратьПериод(РабочаяДата());

//на три расчетных периода (месяца) назад

Пер = ЖР.ПериодДействия.ПрибавитьПериод(-3);

// теперь отбираем записи по нужному нам периоду

ЖР.ВыбратьПериод(Пер.ДатаНачала);

Всего = 0;

Пока ПолучитьЗапись() = 1 Цикл

   Если ЖР.ВидРасч = ВидРасчета.Доплата Тогда

      Всего = Всего + ЖР.Результат;

   КонецЕсли;

КонецЦикла;

Атрибуты журнала расчетов

Документ

Документ-основание текущей записи журнала расчетов.

Синтаксис:

Документ

Англоязычный синоним:

Document

Описание:

Атрибут типа «Документ». Ссылка на документ, на основании которого данная запись (расчет) введена в журнал расчетов. Это может быть, например, документ «Больничный лист», породивший одну или несколько записей с видом расчета «Оплата больничного листа».

Этот атрибут журнала расчетов заполняется в момент проведения документа ссылкой на этот документ, в случае использования методов ВвестиРасчет, ВвестиПерерасчет, ЗаписатьРасчет, или ссылкой на другой документ, в случае использования методов ВвестиРасчетНаОсновании, ЗаписатьРасчетНаОсновании, ВвестиПерерасчетНаОсновании (см. ниже).

Атрибут Документ предназначен только для чтения.

Пример:

Процедура ПровестиРасчет()

   Календ = Объект.Категория.Получить(ДатаНачала).Календарь;

   Дней = Календ.Дней(ДатаНачала, ДатаОкончания);

   Если ОткрытДок(Документ) = 0 Тогда

      РассчитатьСреднюю(Документ, Константа.МесСреднБЛ,

           ГруппаРасчетов.СредняяДляБЛ, 0);

   КонецЕсли;

   // среднюю зарплату берем из документа породившего расчет

   Результат =Окр(Дней * Документ.СрЗарплата);

   Дни = ?(Сторно = 1, -Дней, Дней);

КонецПроцедуры

См. также: ВвестиРасчет, ЗаписатьРасчет, ВвестиПерерасчет, ЗаписатьРасчетНаОсновании, ВестиРасчетНаОсновании, ВвестиПерерасчетНаОсновании

РодительскийДокумент

Документ, который ввел данную запись в журнал расчетов.

Синтаксис:

РодительскийДокумент

Англоязычный синоним:

ParentDocument

Описание:

Атрибут типа «Документ». Ссылка на документ расчета, который ввел данную запись (расчет) журнала расчетов.

В момент проведения документа, при вводе новых записей в журнал расчетов любым способом, атрибут РодительскийДокумент заполняется ссылкой на тот документ, который проводится.

Атрибут РодительскийДокумент предназначен только для чтения.

Пример:

ЖР = СоздатьОбъект("ЖурналРасчетов.Зарплата");

ЖР.ВыбратьЗаписиПоОбъекту();

Пока ЖР.ПолучитьЗапись() = 1 Цикл

   Если (ЖР.ВидРасч = ВидРасчета.ПоОкладу) И

            (ЖР.РодительскийДокумент.Вид() <> "НачалоМесяца") Тогда

      СообщитьОПерерасчете();

   КонецЕсли;

КонецЦикла;

См. также: ВвестиРасчет, ЗаписатьРасчет, ВвестиПерерасчет, ЗаписатьРасчетНаОсновании, ВвестиРасчетНаОсновании, ВвестиПерерасчетНаОсновании

Объект

Элемент справочника, для которого введена данная запись журнала расчетов.

Синтаксис:

Объект

Англоязычный синоним:

Object

Описание:

Атрибут типа «Справочник». Ссылка на конкретный элемент того справочника, который при конфигурировании журнала расчетов задан как список объектов расчета (справочник объектов расчета). К этому конкретному элементу справочника имеет отношение данная запись (расчет) журнала расчетов.

Атрибут Объект предназначен только для чтения.

Пример:

// Расчет профвзносов

Процедура ПровестиРасчет()

   // объект расчета — сотрудник

   Если Объект.Профсоюз.Получить(ДатаОкончания) = Да Тогда

      // Зануляем результат перед расчетом для того,

      // чтобы не учитывать его при расчете уже взятого налога!!!

      Результат = 0;

      // Журнал расчетов

      ЖР = СоздатьОбъект("ЖурналРасчетов.Зарплата");

      ЖР.ВыбратьЗаписиПоОбъекту(Объект, ЖР.НачалоПериодаПоДате(ДатаНачала),

              ЖР.КонецПериодаПоДате(ДатаНачала));

      Облагаем = 0;

      УжеВзяли = 0;

      Группа = ГруппаРасчетов.ОблагаетсяПроф;

      Пока ЖР.ПолучитьЗапись() > 0 Цикл

         Если ЖР.ВидРасч.ВходитВГруппу(Группа) = 1 Тогда

            Облагаем = Облагаем + ЖР.Результат;

         ИначеЕсли ЖР.ВидРасч = ВидРасчета.ПрофВзносы Тогда

            УжеВзяли = УжеВзяли + ЖР.Результат;

         КонецЕсли;

      КонецЦикла;

      Результат = Окр(Константа.ПроцентПроф.Получить(ДатаНачала) / 100 *

              Облагаем - УжеВзяли);

   Иначе

      Результат = 0;

   КонецЕсли;

КонецПроцедуры

См. также: ВыбратьПериодПоОбъекту, ВыбратьЗаписиПоОбъекту

ВидРасч

Вид расчета текущей записи журнала расчетов.

Синтаксис:

ВидРасч

Англоязычный синоним:

CalculKind

Описание:

Атрибут типа «ВидРасчета». Ссылка на конкретный вид расчета, алгоритм которого будет использован при вычислении результата данной записи журнала расчетов (акта расчета).

Атрибут ВидРасч предназначен только для чтения.

Пример:

// Перечисление в банк

Процедура ПровестиРасчет()

   // Процедура выполняется при проведении расчета

   // посчитаем сумму на руки

   НаРуки = 0;

   ЖР = СоздатьОбъект("ЖурналРасчетов.Зарплата");

   Пока ЖР.ПолучитьЗапись() = 1 Цикл

      // если строка журнала расчетов имеет вид расчета,

      // входящий в группу "Все начисления"

      Если ЖР.ВидРасч.ВходитВГруппу(Группа.ВсеНачислнения) Тогда

         НаРуки = НаРуки + ЖР.Результат;

         // ...или "Все удержания"

      ИначеЕсли ЖР.ВидРасч.ВходитВГруппу(Группа.ВсеУдержания) Тогда

         НаРуки = НаРуки - ЖР.Результат;

      КонецЕсли;

   КонецЦикла;

   Если Документ.Сумма <> 0 Тогда

      Результат = Окр(Мин(Документ.Сумма, НаРуки));

   ИначеЕсли Документ.Процент <> 0 Тогда

      НаРуки = 0;

      Результат = Окр(НаРуки * Процент / 100);

   КонецЕсли;

   Если Документ.Банк.Выбран() Тогда

      ПроцентУд = Документ.Банк.ПроцентУдержания;

   Иначе

      Сообщение("Не указан банк для перечисления средств!");

      Возврат;

   КонецЕсли;

   ЖР.ВвестиРасчет(Объект, ВидРасчета.БанковскиеИздержки,

                ДатаНачала, ДатаОкончания, Окр(Результат * ПроцентУд / 100));

КонецПроцедуры

ДатаНачала

Дата начала действия записи журнала расчетов.

Синтаксис:

ДатаНачала

Англоязычный синоним:

DateFrom

Описание:

Атрибут типа «дата» — дата начала действия текущего акта расчета (записи журнала расчетов). Эта дата может не совпадать с периодом регистрации Атрибут ДатаНачала предназначен только для чтения.

Пример:

// процедура выполняется в контексте журнала расчетов

// ДатаНачала и ДатаОкончания доступны непосредственно!

// календарь

Календ = Объект.Категория.Получить(ДатаНачала).Календарь;

// размер оклада

Тариф = Объект.Тариф.Получить(ДатаОкончания);

Часов = Календ.Часов(ДатаНачала.ДатаОкончания);

Результат = Окр(Тариф*Часов);

Часы = ?(Сторно = 1, -Часов, Часов);

См. также: ДатаОкончания, ПериодДействия, ПериодРегистрации

ДатаОкончания

Дата окончания действия записи журнала расчетов.

Синтаксис:

ДатаОкончания

Англоязычный синоним:

DateTill

Описание:

Атрибут типа «дата» — дата окончания действия текущего акта расчета (записи журнала расчетов).

Атрибут ДатаОкончания предназначен только для чтения.

Пример:

См. предыдущий пример.

См. также: ДатаНачала, ПериодДействия, ПериодРегистрации

ПериодДействия

Период действия записи журнала расчетов.

Синтаксис:

ПериодДействия

Англоязычный синоним:

EffectivePeriod

Описание:

Атрибут типа «период журнала расчетов» — период действия текущей записи журнала расчетов. Под периодом действия подразумевается тот расчетный период журнала, в который попадают ДатаНачала и ДатаОкончания действия записи журнала расчетов (акта расчета).

Атрибут ПериодДействия предназначен только для чтения.

Пример:

Процедура ПоПодр()

   Перем Запрос, ТекстЗапроса, Таб;

   //Создание объекта типа Запрос

   Запрос = СоздатьОбъект("Запрос");

   ТекстЗапроса = "//{{ЗАПРОС(ПоПодр)

   |Период с ДатаНач по ДатаКон;

   |Док = ЖурналРасчетов.Зарплата.ТекущийДокумент;

   |ПД = ЖурналРасчетов.Зарплата.ПериодДействия;

   |Подр = ЖурналРасчетов.Зарплата.Объект.МестоРаботы.Владелец;

   |Рез = ЖурналРасчетов.Зарплата.Результат;

   |Группировка ПД;

   |Группировка Подр без групп;

   |Функция Итог = Сумма(Рез);

   |"//}}ЗАПРОС

   // Если ошибка в запросе, то выход из процедуры

   Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда

      Возврат;

   КонецЕсли;

   // Подготовка к заполнению выходных форм данными запроса

   Таб = СоздатьОбъект("Таблица");

   Таб.ИсходнаяТаблица("ПоПодр");

   // Заполнение полей "Заголовок"

   Таб.ВывестиСекцию("Заголовок");

   Пока Запрос.Группировка("ПД") = 1 Цикл

      // Заполнение полей ПД

      Таб.ВывестиСекцию("ПД");

      Сообщение(Запрос.ПД.Описатель);

      Пока Запрос.Группировка("Подр") = 1 Цикл

         // Заполнение полей Подр

         Таб.ВывестиСекцию("Подр");

      КонецЦикла;

   КонецЦикла;

   // Заполнение полей "Итого"

   Таб.ВывестиСекцию("Итого");

   // Вывод заполненной формы

   Таб.Опции(1, 0, 1, 0);

   Таб.Показать("ПоПодр", "");

КонецПроцедуры

См. также: ДатаНачала, ПериодДействия, ПериодРегистрации

ПериодРегистрации

Период регистрации записи журнала расчетов.

Синтаксис:

ПериодРегистрации

Англоязычный синоним:

RegistrationPeriod

Описание:

Атрибут типа «период журнала расчетов» — расчетный период, в котором текущая запись была введена в журнал расчетов. Это тот расчетный период, который на момент ввода данной записи был установлен для журнала расчетов как текущий.

Атрибут ПериодРегистрации предназначен только для чтения.

Пример:

См. предыдущий пример.

См. также: ДатаНачала, ДатаОкончания, ПериодДействия

Сторно

Признак сторнирующей записи.

Синтаксис:

Сторно

Англоязычный синоним:

Storno

Описание:

Атрибут типа «число», принимает два значения: 1 — для сторнирующих записей журнала расчетов и 0 — для обычных записей. Признак «сторно» равен 1 не только для простых сторно-записей, но и для рассчитанных, отредактированных вручную или зафиксированных (не подлежащих редактированию) сторно-записей.

Сторнирующие записи могут появляться в журнале расчетов в результате выполнения методов ВвестиРасчет, ЗаписатьРасчет и им подобных, если при этом затрагиваются один или несколько прошлых расчетных периодов и вводимый вид расчета является «вытесняющим». При этом система автоматически вводит необходимые сторнирующие записи. Для таких записей (введенных системным образом) признак сторнирования не может быть переопределен.

Если сторнирующая запись введена программным образом, т. е. атрибут Сторно задан за счет применения метода УстановитьРеквизит или непосредственным присвоением:

ЖрнРасчета = СоздатьОбъект("ЖурналРасчета.Зарплата");

ЖрнРасчета.Сторно = 1;

тогда он может быть переопределен программным образом.

Пример:

*

Процедура ПровестиРасчет()

   // календарь

   Календ = Объект.Категория.Получить(ДатаОкончания).Календарь;

   // размер оклада

   Оклад = Объект.Оклад.Получить(ДатаОкончания);

   Дней = Календ.Дней(ДатаНачала, ДатаОкончания);

   ВсегоДней = Календ.Дней(НачалоПериодаПоДате(ДатаНачала),

                КонецПериодаПоДате(ДатаНачала));

   Если ВсегоДней > 0 Тогда

      Результат = Окр(Оклад * Дней / ВсегоДней);

      // если запись-сторно — поставим отрицательные дни!

      Дни = ?(Сторно = 1, -Дней, Дней);

   Иначе

      Результат = 0;

      Дни = 0;

      Сообщить("Неправильный календарь!");

   КонецЕсли;

КонецПроцедуры

*

// вводим сторнирующие рассчитанные записи

ВР = ВидРасчета.ДоплатаКОкладу;

ЖрнЗарплата.УстановитьРеквизит("Сторно", 1);

ЖрнЗарплата.УстановитьРеквизит("Рассчитана", 1);

ЖрнЗарплата.ВвестиРасчет(Сотрудник, ВР, , , Сумма * Процент);

См. также: УстановитьРеквизит, ВвестиРасчет, ЗаписатьРасчет, Рассчитана

Рассчитана

Признак того, что запись рассчитана.

Синтаксис:

Рассчитана

Англоязычный синоним:

Calculated

Описание:

Атрибут типа «число», принимает два значения: 1 — для рассчитанных записей журнала расчетов и 0 — для нерассчитанных записей.

Запись журнала расчетов становится рассчитанной в результате удачного выполнения одной из соответствующих команд меню «Действия» или при выполнении методов журнала расчетов Рассчитать, ВыпролнитьРасчет.

Атрибут Рассчитана предназначен только для чтения.

Пример:

// Перед выводом отчета проверим, все ли записи рассчитаны

ЖрнЗарплата = СоздатьОбъект("ЖурналРасчетов.Зарплата");

ЖрнЗарплата.ВыбратьПериодПоОбъекту(Сотрудник, ДатаОтчета);

// признак нерассчитанности

ПлохоДело=0;

Пока ЖрнЗарплата.ПолучитьЗапись() = 1 Цикл

   Если ЖрнЗарплата.Рассчитана = 0 Тогда

      ПолохоДело = 1;

      Прервать;

   КонецЕсли;

КонецЦикла;

Если ПлохоДело = 1 Тогда

   Предупреждение("Не проведен полный расчет сотрудника!

                   | Формирование отчета невозможно");

   Возврат;

КонецЕсли;

// продолжим формирование документа

См. также: Исправлена, Фиксирована

Исправлена

Признак того, что запись исправлена вручную.

Синтаксис:

Исправлена

Англоязычный синоним:

Updated

Описание:

Атрибут типа «число», принимает два значения: 1 — для записей журнала расчетов, результат которых исправлен «вручную» и 0 — для остальных записей.

Запись журнала расчетов становится исправленной при редактировании результата расчета непосредственно в журнале расчетов. Исправленные вручную записи не редактируются при очередном сеансе расчета, т. е. результат автоматического расчета не заменяет результат ручного ввода. Это значит, что результат ручного редактирования «главнее» результата автоматического расчета.

Атрибут Исправлена предназначен только для чтения.

Пример:

// Проверим, не редактировали ли результаты ЖрнЗарплата = СоздатьОбъект("ЖурналРасчетов.Зарплата");

ЖрнЗарплата.ВыбратьЗаписиПоДокументу(ТекущийДокумент());

Счетчик = 0;

Пока ЖрнЗарплата.ПолучитьЗапись() = 1 Цикл

   Если ЖрнЗарплата.Исправлена = 1 Тогда

      Счетчик = Счетчик + 1;

   КонецЕсли;

КонецЦикла;

Если Счетчик <> 0 Тогда

   Сообщение("Исправленных записей — " + Счетчик);

КонецЕсли;

// продолжим формирование документа

См. также: Рассчитана, Фиксирована

Фиксирована

Признак того, что результат расчета записи защищен от исправления.

Синтаксис:

Фиксирована

Англоязычный синоним:

Locked

Описание:

Атрибут типа «число», принимает два значения: 1 — для фиксированных записей журнала расчетов и 0 — для остальных записей.

Запись журнала расчетов становится фиксированной при выполнении метода журнала расчетов ФиксироватьЗапись. Признак фиксированности записи можно снять, применив метод журнала расчетов ОсвободитьЗапись.

После фиксации записи результат ее расчета не может быть изменен никаким, в том числе, программным способом.

Атрибут Фиксирована предназначен только для чтения.

Пример:

Если ЖрнЗарплата.Фиксирована = 1 Тогда

   Если ДатаДок > ЖрнЗарплата.НачалоТекущегоПериода() Тогда

      ОсвободитьЗапись();

   Иначе

      // отказ от расчета;

      // ....

   КонецЕсли;

КоненцЕсли;

См. также: ФиксироватьЗапись, ОсвободитьЗапись

Перерасчет

Признак того, что запись является перерасчетом другой записи прошлого периода.

Синтаксис:

Перерасчет

Англоязычный синоним:

Recalc

Описание:

Атрибут типа «число», принимает два значения: 1 — для записей-перерасчетов и 0 — для остальных записей.

Записи-перерасчеты вводятся в журнал расчетов при выполнении одного из методов журнала расчетов: ВвестиПерерасчет или ВвестиПерерасчетНаОсновании.

Атрибут Перерасчет предназначен только для чтения.

Пример:

ЖрнЗарплата = СоздатьОбъект("ЖурналРасчетов.Зарплата");

ЖрнЗарплата.ВыбратьПериодПоОбъекту(Сотрудник, ДатаОтчета);

Есть = 0;

Пока ЖрнЗарплата.ПолучитьЗапись() = 1 Цикл

   Если ЖрнЗарплата.Перерасчет = 0 Тогда

      Есть = 1;

      Пер = ЖрнЗарплата.ПервичнаяЗапись.ПериодРегистрации;

      Прервать;

   КонецЕсли;

КонецЦикла;

Если Есть = 1 Тогда

   Предупреждение("За истекший период проводились перерасчеты

          | прошлого периода " + Пер.Описатель);

   Возврат;

КонецЕсли;

// продолжим формирование документа

См. также: ПервичнаяЗапись

ПервичнаяЗапись

Первичная запись записи-перерасчета. Запись, на основании которой введена текущая запись-перерасчет.

Синтаксис:

ПервичнаяЗапись

Англоязычный синоним:

ParentRecord

Описание:

Атрибут типа «запись журнала расчетов». Имеет непустое значение для записей-перерасчетов, т. е. тех записей, которые введены в систему одним из методов журнала расчетов: ВвестиПерерасчет или ВвестиПерерасчетНаОсновании.

Атрибут ПервичнаяЗапись предназначен только для чтения.

Пример:

См. предыдущий пример.

См. также: Перерасчет, ВвестиПерерасчет, ВвестиПерерасчетНаОсновании

Результат

Результат расчета,

Синтаксис:

Результат

Англоязычный синоним:

Result

Описание:

Атрибут типа «число». Используется для доступа к результату расчета записи. Как правило, самым важным действием процедуры ПровестиРасчет модуля расчета является вычисление результата расчета и заполнение атрибута Расчет.

Пример:

*

// Переберем все записи текущего периода журнала расчетов

//по текущему основному средству и просуммируем результат

ЖР = СоздатьОбъект("ЖурналРасчетов.Амортизация");

ЖР.ВыбратьПериодПоОбъекту(Объект, ЖР.НачалоТекущегоПериода());

// Инициализируем переменную

Сумма = 0;

Пока ЖР.ПолучитьЗапись() > 0 Цикл

   Сумма = Сумма + ЖР.Результат;

КонецЦикла

*

Результат = Оклад * Дней / ОтработаноДней;

<Реквизит>

Значение реквизита журнала расчетов.

Синтаксис:

<Реквизит>

Идентификатор реквизита журнала расчетов, как он задан в конфигураторе.

Описание:

Атрибут <Реквизит> предоставляет доступ к значению реквизита записи журнала расчетов. В тексте программного модуля в качестве названия реквизита используется идентификатор конкретного реквизита журнала расчетов, созданного в конфигураторе.

Пример:

//В этом примере журнал расчетов "Зарплата"

// имеет реквизит "ХозОперация"

ЖР = СоздатьОбъект("ЖурналРасчетов.Зарплата");

ЖР.ВыбратьПериод(ЖР.НачалоТекущегоПериода());

Пока ЖР.ПолучитьЗапись() = 1 Цикл

   ЖР.ХозОперация = ПолучитьХО(ЖР.ТекущаяЗапись());

   // вызвали вспомогательную функцию пользователя: ПолучитьХО

КонецЦикла;

Методы журнала расчетов

НачалоТекущегоПериода

Возвращает дату начала текущего расчетного периода.

Синтаксис:

НачалоТекущегоПериода()

Англоязычный синоним:

CurrentPeriodBegin

Возвращаемое значение:

Значение типа «дата» — начало текущего расчетного периода журнала расчетов.

Описание:

Возвращает дату начала текущего периода журнала расчетов. Текущий период — отрезок времени, обсчитываемый журналом расчетов в данный момент. Величина расчетного периода журнала расчетов определяется при конфигурировании журнала и может принимать значения: день, неделя, месяц, квартал, год.

Текущий период журнала расчетов устанавливается при выполнении операции «Установить период расчета» меню «Действия» журнала расчетов. В случае, если периодичность журнала расчетов равна дню, методы НачалоТекущегоПериода и КонецТекущегоПериода возвращают одно и то же значение.

Пример:

//

ЖРЗарп = СоздатьОбъект("ЖурналРасчета.Зарплата");

Начало = ЖРЗарп.НачалоТекущегоПериода();

См. также: КонецТекущегоПериода, ПериодДействия, ПериодРегистрации

КонецТекущегоПериода

Возвращает дату окончания текущего расчетного периода.

Синтаксис:

КонецТекущегоПериода();

Англоязычный синоним:

CurrentPeriodEnd

Возвращаемое значение:

Значение типа «дата» — окончание текущего расчетного периода журнала расчетов.

Описание:

Возвращает дату окончания текущего расчетного периода журнала расчетов. Текущий расчетный период — это отрезок времени, обсчитываемый журналом расчетов в настоящее время. См. описание метода НачалоТекущегоПериода.

Пример:

// ЖРЗарп = СоздатьОбъект("ЖурналРасчета.Зарплата");

Календ = СоздатьОбъект("Календарь.Служащие");

НормаОтработки = Календ.Дней(ЖРЗарп.НачалоТекущегоПериода(),

                              ЖРЗарп.КонецТекущегоПериода());

См. также: НачалоТекущегоПериода, ПериодДействия, ПериодРегистрации

НачалоПериодаПоДате

Возвращает дату начала произвольного расчетного периода.

Синтаксис:

НачалоПериодаПоДате{<Дата>)

Англоязычный синоним:

PeriodBeginByDate

Параметры:

<Дата>

Любая дата, которая попадает в требуемый период.

Возвращаемое значение:

Значение типа «дата» — начало расчетного периода журнала расчетов.

Описание:

Метод позволяет определить дату начала того периода журнала расчетов, в который попадает заданная <Дата>. Работа метода не зависит от наличия в журнале расчетов данных за соответствующий расчетный период.

Пример:

// В каждой строке журнала расчетов проставим в реквизит Дни

// количество банковских дней того периода расчета, в который

// попадает запись

ЖР = СоздатьОбъект("ЖурналРасчетов.Дивиденды");

Календ = СоздатьОбъект("Календарь.РаботаБанка");

ЖР.ВыбратьПериод(ЖР.НачалоТекущегоПериода());

Пока ЖР.ПолучитьЗапись() = 1 Цикл

   ЖР.Дни = Календ.Дней(НачалоПериодаПоДате(ЖР.ДатаНачала),

                         КонецПериодаПоДате(ЖР.ДатаНачала));

КонецЦикла;

См. также: КонецПериодаПоДате

КонецПериодаПоДате

Возвращает дату окончания произвольного расчетного периода.

Синтаксис:

КонецПериодаПоДате(<Дата>)

Англоязычный синоним:

PeriodEndByDate

Параметры:

<Дата>

Любая дата, которая попадает в требуемый период.

Возвращаемое значение:

Значение типа «дата» — окончание расчетного периода журнала расчетов.

Описание:

Метод позволяет определить дату окончания того периода журнала расчетов, в который попадает заданная дата. Работа метода не зависит от наличия в журнале расчетов данных за соответствующий расчетный период.

Пример:

См. предыдущий пример.

См. также: НачалоПериодаПоДате

ПериодПоДате

Возвращает период журнала расчетов по дате.

Синтаксис:

ПериодПоДате(<Дата>)

Англоязычный синоним:

PeriodByDate

Параметры:

<Дата>

Значение типа «дата».

Возвращаемое значение:

Период журнала расчетов.

Описание:

Метод ПериодПоДате возвращает период журнала расчетов по дате — т. е. период, в который попадает заданная дата.

Пример:

ЖР = СоздатьОбъект("ЖурналРасчетов.Зарплата");

Пер = ЖР.ПериодПоДате(РабочаяДата());

См. также: НачалоТекущегоПериода, ПериодДействия, ПериодРегистрации, КонецПериодаПоДате

УстановитьТекущийПериод

Устанавливает текущий период журнала расчетов.

Синтаксис:

УстановитьТекущийПериод(<Период>, <Способ>)

Англоязычный синоним:

SetCurrentPeriod

Параметры:

<Период> | Значение типа «период журнала расчетов».
<Способ> | Необязательный параметр, число: 0 — не отрабатывать системные действия, связанные со сменой периода; 1 -отработать системные процедуры по умолчанию (например, отменить рассчитанность записей при откате назад или провести архивацию документов при смене периода «вперед»). В этом режиме метод ведет себя как интерактивная смена периода но без вопросов. Значение параметра по умолчанию 1.

Возвращаемое значение:

Число: 1 — вополнено; 0 — не выполнено.

Описание:

Метод УстановитьТекущийПериод устанавливает текущий период журнала расчетов. Ведет себя так же, как интерактивная смена текущего периода, но без диалоговых окон.

Пример:

//Установить следующий период

ЖР = СоздатьОбъект("ЖурналРасчетов.Зарплата");

Пер = ЖР.ТекущийПериод();

Пер = Пер.ПрибавитьПериод(1);

Сообщение("Смена периода журнала займет некоторое время...");

ЖР.УстановитьТекущийПериод(Пер);

См. также: НачалоТекущегоПериода, ПериодДействия, ПериодРегистрации, КонецПериодаПоДате

ТекущийПериод

Возвращает текущий расчетный период журнала расчетов.

Синтаксис:

ТекущийПериод()

Англоязычный синоним:

CurrentPeriod

Возвращаемое значение:

Значение типа «Период журнала расчетов».

Описание:

Метод предназначен для определения текущего расчетного периода журнала расчетов.

Пример:

// Модуль формы журнала расчетов

Пер = ТекущийПериод();

// установим границу просмотра записей на два расчетных периода

ГраницаПросмотра(Пер.ПрибавитьПериод(-1));

ПолучитьЗапись

Получить из выборки следующую запись журнала расчетов.

Синтаксис:

ПолучитьЗапись()

Англоязычный синоним:

GetRecord

Возвращаемое значение:

Числовое значение — 1, если очередная запись журнала расчетов найдена, и 0, если очередная запись журнала не найдена или отсутствует (выборка пуста).

Описание:

Метод предназначен для позиционирования очередной записи журнала расчетов в выборке, установленной одним из следующих методов:

· ВыбратьЗаписи

· ВыбратьЗаписиПоОбъекту

· ВыбратьПериод

· ВыбратьПериодПоОбъекту

· ВыбратьЗаписиПоДокументу

Как правило, применяется в цикле после использования одного из вышеперечисленных методов.

Пример:

// Переберем все записи текущего периода журнала расчетов

//по текущему основному средству и просуммируем результат

ЖР = СоздатьОбъект("ЖурналРасчетов.Амортизация");

ЖР.ВыбратьПериодПоОбъекту(Объект, ЖР.НачалоТекущегоПериода());

// Инициализируем переменную

Сумма = 0;

Пока ЖР.ПолучитьЗапись() > 0 Цикл

   Сумма = Сумма + ЖР.Результат;

КонецЦикла;

ВыполнитьРасчет

Выполнить расчет текущей записи журнала расчетов.

Синтаксис:

ВыполнитьРасчет()

Англоязычный синоним:

RunCalculate

Возвращаемое значение:

Числовое значение — 1, если расчет записи выполнен успешно, и 0 — в противном случае (в том числе, при прерывании процедуры расчета пользователем путем нажатия клавиши <Esc>).

Описание:

Выполняет расчет текущей строки журнала расчетов.

Как правило, применяется в цикле, выполняющем перебор записей журнала расчетов при помощи метода ПолучитьЗапись. Работает точно так же, как и метод Рассчитать, но имеет возвращаемое значение. Применяется в том случае, если при обработке в цикле записей журнала расчетов бывает необходимо прервать выполнение расчета.

Пример:

// процедура выполняет расчет по журналу Зарплата

Процедура Выполнить()

   ЖрнЗарплата.ВыбратьПериод{ЖрнЗарплата.НачалоТекущегоПериода());

   Пока ЖрнЗарплата.ПолучитьЗапись() > 0 Цикл

      Если Считать() = 1 Тогда

         Если ЖрнЗарплата.ВыполнитьРасчет()= 0 Тогда

            // прерываем процедуру, если расчет неудачен или

            // пользователь нажал Езс

            Прервать;

         КонецЕсли;

      КонецЕсли;

   КонецЦикла;

КонецПроцедуры

ОписательПериода

Возвращает строку-описатель расчетного периода.

Синтаксис:

ОписательПериода(<Дата>)

Англоязычный синоним:

PeriodDescriptor

Параметры:

<Дата>

Дата периода, описатель которого требуется получить.

Возвращаемое значение:

Строка — описатель расчетного периода.

Описание:

Метод предназначен для получения строкового представления расчетного периода журнала расчетов. Возвращает значение для того расчетного периода, в который попадает параметр <Дата>. Тип формируемой строки различается для разной периодичности журнала расчетов. Например, для журналов с месячной периодичностью строка имеет вид "Январь 1997г", в случае квартальной периодичности — "1 Квартал 1997г", а в случае недельной периодичности — "12.02.97 — 18.02.97".

Как правило, применяется при формировании отчетов.

Пример:

ЖЗ = СоздатьОбъект("ЖурналРасчетов.Зарплата");

Сообщить("Текущий период — " + ЖЗ.ОписательПериода(РабочаяДата()));

См. также: НачалоПериодаПоДате, КонецПериодаПоДате

ТекущаяЗапись

Возвращает значение текущей записи журнала расчетов.

Синтаксис:

ТекущаяЗапись()

Англоязычный синоним:

CurrentRecord

Возвращаемое значение:

Значение текущей записи журнала расчетов.

Описание:

Метод возвращает ссылку на текущую запись (позиционированную в данный момент) журнала расчетов.

Возвращенное значение может, например, затем передаваться в качестве параметра методу журнала расчетов НийтиЗапись.

Пример:

ЖЗ = СоздатьОбъект("ЖурналРасчетов.Зарплата");

ЖЗ.ВыбратьЗаписиПоОбъекту(Сотрудник, ДН, ДО);

Пока ЖЗ.ПолучитьЗапись() = 1 Цикл

   Если ЖЗ.ПлатВедомость.Выбран() = 1 Тогда

      ЗаписьЖР = ЖЗ.ТекущаяЗапись();

   КонецЕсли;

КонецЦикла;

// теперь найдем запись и что-нибудь с ней поделаем

ЖЗ.НайтиЗапись(ЗаписьЖР);

ЖЗ.ПлатВедомость.Проведена = 1;

ЖЗ.ФиксироватьЗапись();

См. также: НайтиЗапись

НайтиЗапись

Позиционирует в журнале расчетов заданную запись.

Синтаксис:

НайтиЗапись(<Запись>)

Англоязычный синоним:

FindRecord

Параметры:

<3апись>

Запись журнала расчетов.

Возвращаемое значение:

Число: 1 — если операция успешно выполнена; 0 — в противном случае.

Описание:

Метод позиционирует запись журнала расчетов, переданную в качестве параметра <3апись>. Передаваемое в качестве параметра значение, как правило, ранее получается за счет применения метода журнала расчетов ТекущаяЗапись. Фактически, данный метод открывает выборку журнала расчетов, заведомо состоящую из одной записи, и позиционирует ее.

Пример:

ЖЗ = СоздатьОбъект("ЖурналРасчетов.Зарплата");

ЖЗ.ВыбратьЗаписиПоОбъекту(Сотрудник, ДН, ДО);

Пока ЖЗ.ПолучитьЗапись() = 1 Цикл

   Если ЖЗ.ПлатВедомость.Выбран() = 1 Тогда

      ЗаписьЖР = ЖЗ.ТекущаяЗапись();

   КонецЕсли;

КонецЦикла;

// теперь найдем запись и что-нибудь с ней поделаем

ЖЗ.НайтиЗапись(ЗаписьЖР);

ЖЗ.ПлатВедомость.Проведена = 1;

ЖЗ.ФиксироватьЗапись();

См. также: ТекущаяЗсшись

ФиксироватьЗапись

Фиксирует текущую запись журнала расчетов, предотвращая редактирование результата ее расчета.

Синтаксис:

ФиксироватьЗапись()

Англоязычный синоним:

LockRecord

Возвращаемое значение:

Число: 1 — если операция успешно выполнена; 0 — в противном случае.

Описание:

Метод фиксирует текущую запись журнала расчетов. После применения этого метода атрибут записи Фиксирована принимает значение 1. Фиксация записи, фактически, означает невозможность отредактировать результат ее расчета любым, в том числе программным, способом.

Пример:

ЖЗ = СоздатьОбъект("ЖурналРасчетов.Зарплата");

ЖЗ.ВыбратьЗаписиПоОбъекту(Сотрудник, ДН, ДО);

Пока ЖЗ.ПолучитьЗапись() = 1 Цикл

   Если (ЖЗ.Документ = ТекущийДокумент()) И

        (ЖЗ.ВидРасч = ВидРасчета.ПоТарифу) Тогда

      ЖЗ.ФиксироватьЗапись();

   КонецЕсли;

КонецЦикла;

См. также: атрибут Фиксирована, метод ОсвободитьЗапись

ОсвободитьЗапись

Снимает фиксацию с текущей записи журнала расчетов.

Синтаксис:

ОсвободитьЗапись()

Англоязычный синоним:

ReleaseRecord

Возвращаемое значение:

Число: 1 — если операция успешно выполнена; 0 — в противном случае.

Описание:

Метод снимает фиксацию с текущей записи журнала расчетов. После при менения этого метода атрибут записи Фиксирована принимает значение 0. Действие, обратное фиксации записи, фактически, означает возможность редактирования результата ее расчета.

Пример:

Если ЖрнЗарплата.Фиксирована = 1 Тогда

   Если ДатаДок > ЖрнЗарплата.НачалоТекущегоПериода() Тогда

      ОсвободитьЗапись();

   Иначе

      // отказ от расчета!

      // ....

   КонецЕсли;

КоненцЕсли;

См. также: Фиксирована, ФиксироватьЗапись

ВвестиПерерасчет

Вводит перерасчет текущей записи журнала расчетов.

Синтаксис:

ВвестиПерерасчет()

Англоязычный синоним:

InsertRecalc

Возвращаемое значение:

Число: 1 — если операция успешно выполнена, и 0 — в противном случае.

Описание:

Метод предназначен для ввода строк-перерасчетов в журнал расчетов. Как правило, используется в модуле документа, но может использоваться и в модуле вида расчета. Метод вводит полную копию текущей записи в журнал расчетов, не заполняя лишь атрибут Результат. Впоследствии система распознает «обычные» записи и записи-перерасчеты.

Записи-перерасчеты могут вводиться только для записей одного из прошлых расчетных периодов. Невозможно ввести перерасчет записи, которая в свою очередь является перерасчетом. При этом система позволяет вводить несколько записей-перерасчетов в разных расчетных периодах для одной и той же записи журнала.

Например, в случае если журнал расчетов имеет месячную периодичность, для «мартовской» записи журнала могут быть введены перерасчеты в апреле, мае и т. д.

Для записей, введенных в журнал одним из методов ВвестиПерерасчет или ВвестиПерерасчетНаОсновании, атрибут Перерасчет принимает значение 1.

При расчете записи-перерасчета результат вычисляется с учетом результата первичной (перерассчитываемой) записи. Это значит, что если в журнале расчетов введен перерасчет записи прошлого периода, то результат перерасчета будет рассчитан за вычетом значения Результат первичной записи.

Пример:

Процедура Перерасчет(Группа, Сотрудник, Основание, Начало, Окончание)

   //Группа расчетов "оплата по среднему"

   ОС = ГруппаРасчетов.ОплатаПоСреднему;

   // перерасчет по журналу "зарплата"

   ЖрнЗарплата = СоздатьОбъект("ЖурналРасчетов.Зарплата");

   // дата, начиная с которой нужно перерассчитывать и начисления

   ДатаНачислений = ЖрнЗарплата.КонецПериодаПоДате(Начало) + 1;

   // выделим все записи ЖР по сотруднику

   ЖрнЗарплата.ВыбратьЗаписиПоОбъекту(Сотрудник,

                    ЖрнЗарплата.НачалоПериодаПоДате(Начало),

                    Минимум(Окончание, ЖрнЗарплата.НачалоТекущегоПериода() - 1));

   Сч = 1;

   Пока ЖрнЗарплата.ПолучитьЗапись() > 0 Цикл

      Если ЖрнЗарплата.ВидРасч.ВходитВГруппу(Группа) = 1 Тогда

         Пересчитать = 1;

         Если ((ЖрнЗарплата.ВидРасч.ВходитВГруппу(ОС) = 1)И

               (ЖрнЗарплата.ДатаНачала<ДатаНачислений)) Тогда

            // надо перерассчитывать начисления, оплачиваемые

            //по среднему заработку только следующего

            // (за началом действия данного документа-основания)

            // периода расчета

            Пересчитать = 0;

         КонецЕсли;

         Если Пересчитать = 1 Тогда

            ЖрнЗарплата.ВвестиПерерасчет(};

         КонецЕсли;

      КонецЕсли;

   КонецЦикла;

КонецПроцедуры

См. также: Перерасчет, ВвестиПерерасчетНаОсновании

ВвестиПерерасчетНаОсновании

Вводит перерасчет текущей записи журнала расчетов на основании произвольного документа.

Синтаксис:

ВвестиПерерасчетНаОсновании(<Документ>)

Англоязычный синоним:

InsertRecalcByReason

Параметры:

<Документ>

Документ, на основании которого вводится запись (или записи) в журнал расчетов.

Возвращаемое значение:

Число: 1 — если операция успешно выполнена; 0 — в противном случае.

Описание:

Метод предназначен для ввода строк-перерасчетов в журнал расчетов на основании произвольного документа. Как правило, используется в модуле документа, но может использоваться и в модуле вида расчета. Метод вводит полную копию текущей записи в журнал расчетов, не заполняя лишь атрибут Результат и вводя в качестве документа-основания параметр <Документ>.

В отличие от метода ВвестиПерерасчет (который вводит записи журнала на основании того документа, в модуле которого используется метод), данный метод вводит записи-перерасчеты, задавая для них произвольный документ-основание.

Записи-перерасчеты могут вводиться только для записей одного из прошлых расчетных периодов. Невозможно ввести перерасчет записи, которая в свою очередь является перерасчетом. При этом система позволяет вводить несколько записей-перерасчетов в разных расчетных периодах для одной и той же записи журнала.

Пример:

Процедура ПровестиПерерасчет(Док)

   //Группа расчетов "оплата по среднему"

   ОС = ГруппаРасчетов.ОплатаПоСреднему;

   // перерасчет по журналу "зарплата"

   ЖрнЗарплата = СоздатьОбъект("ЖурналРасчетов.Зарплата");

   // дата, начиная с которой нужно перерасчитывать и начисления

   ДатаНачислений = ЖрнЗарплата.КонецПериодаПоДате(Начало) + 1;

   // выделим все записи ЖР по сотруднику

   ЖрнЗарплата.ВыбратьЗаписиПоОбъекту(Док.Сотрудник,

                ЖрнЗарплата.НачалоПериодаПоДате(Док.Начало),

                Минимум(Док.Окончание, ЖрнЗарплата.НачалоТекущегоПериода() - 1));

   Сч = 1;

   Пока ЖрнЗарплата.ПолучитьЗапись() > 0 Цикл

      Если ((ЖрнЗарплата.ВидРасч.ВходитВГруппу(ОС) = 1) И

            (ЖрнЗарплата.ДатаНачала < ДатаНачислений)) Тогда

         ЖрнЗарплата.ВвестиПерерасчетНаОсновании(Док);

      КонецЕсли;

   КонецЦикла;

КонецПроцедуры

См. также: Перерасчет, ВвестиПерерасчет

Вид

Название журнала расчетов.

Синтаксис:

Вид()

Англоязычный синоним:

Kind

Возвращаемое значение:

Строка — название журнала расчетов, как оно задано при конфигурировании.

Описание:

Метод возвращает название журнала расчетов, как оно задано при конфигурировании журнала. Один из вариантов использования метода — определение вида журнала в предопределенной процедуре глобального модуля ПриСменеРасчетногоПериода.

Пример:

Процедура ПриСменеРасчетногоПериода(ЖР, Период)

   Если ЖР.Вид() = "Зарплата" Тогда

      Предупреждение("Это смена текущего расчетного периода

                     | для журнала Зарплата");

   КонецЕсли;

   Если Период.ДатаНачала <= ЖР.НачалоТекущегоПериода Тогда

      // не позволяем откатывать период назад

      СтатусВозврата(0);

   КонецЕсли;

КонецПроцедуры

ПредставлениеВида

Определить пользовательское представление вида журнала расчетов.

Синтаксис:

ПредставлениеВида()

Англоязычный синоним:

KindPresent

Возвращаемое значение:

Строковое значение, содержащее пользовательское представление вида журнала расчетов.

Описание:

Метод ПредставлениеВида позволяет получить пользовательское представление вида журнала расчетов, как оно задано в конфигураторе.

Пример:

// отобразим пользовательское представление в строке состояния

Состояние(ЖР.ПредставлениеВида());

НазначитьТип

Назначить тип для реквизита неопределенного вида.

Синтаксис:

НазначитьТип(<ИмяРеквизита>, <ИмяТипа>, <Длина>, <Точность>}

Англоязычный синоним:

SetType

Параметры:

<ИмяРеквизита> | Строковое выражение — название реквизита журнала расчетов неопределенного типа, как он назван в конфигураторе.
<ИмяТипа> | Строковое выражение — название типа данных (или Вид субконто), который назначается реквизиту журнала расчетов. Например, «Строка», «Число», «Справочник.Товары», «Документ.РасходнаяНакладная» и т. п.
<Длина> | Необязательный параметр. Числовое выражение — длина поля представления данных. Имеет смысл только при задании числового или строкового типа.
<Точность> | Необязательный параметр. Числовое выражение — число знаков числа после десятичной точки. Имеет смысл только при задании числового типа.

Описание:

Метод НазначитьТип позволяет назначить тип для реквизита, которому в конфигураторе назначен тип «Неопределенный».

Пример:

ЖЗ = СоздатьОбъект("ЖурналРасчетов.Зарплата");

// будем записывать несколько реквизитов

ЖЗ.НазначитьТип("ТМЦ", "Справочник.Товары");

ЖЗ.УстановитьРеквизит("ТМЦ", ВыбТовар);

ЖЗ.ВвестиРасчет(Сотр, ВР, Нач, Оконч, Сумма * Процент);

УстановитьРеквизит

Установить значение реквизита журнала расчетов для последующей записи.

Синтаксис:

УстановитьРеквизит(<ИмяРеквизита>, <Значение>)

Англоязычный синоним:

SetAttribute

Параметры:

<ИмяРеквизита> | Строка — наименование реквизита журнала расчетов.
<Значение> | Значение, устанавливаемое для записи в реквизит <ИмяРеквизита>.

Описание:

Метод предназначен для организации заполнения дополнительных реквизитов журнала расчетов при вводе новых записей в журнал расчетов. Метод применяется в двух случаях: во-первых, при вводе записей журнала расчетов в процедуре проведения документа одним из перечисленных ниже методов:

· ВвестиРасчет;

· ВвестиРасчетНаОсновании;

· ЗаписатьРасчет;

· ЗаписатьРасчетНаОсновании.

Во-вторых, при вводе произвольных новых записей журнала расчетов (методы Новая и Записать).

В этих двух случаях метод УстановитьРеквизит работает по-разному. В случае, когда метод применяется перед вводом записей при проведении документа, не имеет смысла устанавливать значения для следующих реквизитов:

· Объект,

· Документ,

· РодительскийДокумент,

· ВидРасчета,

· ДатаНачала,

· ДатаОкончания,

· ПервичнаяЗапись.

Данные установки игнорируются последующими методами ВвестиРасчет, ЗаписатьРасчет и им подобными. Т. е. при вводе записей журнала этими методами возможна установка только реквизитов журнала, заданных при конфигурировании, реквизита Результат и таких признаков записи журнала, как: Рассчитана, Исправлена, Сторно, Фиксирована, Перерасчет.

В случае, когда метод применяется при вводе записей методами Новая и Записать, в качестве первого параметра <ИмяРеквизита> могут применятся наименования реквититов журнала расчетов, заданные при конфигураировании системы или следующие атрибуты, соответствующие предопределенным реквизитам журнала расчетов:

· Документ

· РодительскийДокумент

· Объект

· ВидРасч

· ДатаНачала

· ДатаОкончания

· Сторно

· Рассчитана

· Исправлена

· Фиксирована

· Перерасчет

· ПервичнаяЗапись

· Результат

Внимание! Атрибуты журнала расчетов ПериодДействия и ПериодРегистрации не устанавливаются пользователем. Атрибут ПериодРегистрации при вводе записи принимает значение текущего (установленного в данный момент для журнала расчетов) периода, а атрибут ПериодДействия соответствует установленным значениям ДатаНачала и ДатаОкончания.

Замечание. Установленные методом значения используются однократно, при первом же вызове одного из вышеперечисленных методов ввода новых записей журнала расчетов установленные значения «сбрасываются». Для записи нескольких реквизитов необходимо использовать метод несколько раз.

Пример:

Процедура ВвестиЗапись(Сотр, ВР, Сумма, Процент)

   ЖЗ = СоздатьОбъект("ЖурналРасчетов.Зарплата");

   // будем записывать несколько реквизитов

   ЖЗ.УстановитьРеквизит("Сторно", 1);

   ЖЗ.УстановитьРеквизит("Рассчитана", 1);

   // введенные записи будут сторнированными и отмеченными

   // как рассчитанные

   ЖЗ.ВвестиРасчет(Сотр, ВР, Нач, Оконч, Сумма*Процент);

КонецПроцедуры

См. также: ВвестиРасчет, ЗаписатьРасчет

ВвестиРасчет

Ввести запись в журнал расчетов.

Синтаксис:

ВвестиРасчет(<06ъект>, <ВидРасчета>, <ДатаНачала> , <ДатаОкончания>, <Результат>}

Англоязычный синоним:

InsertCalculation

Параметры:

<Объект> | Объект расчета — элемент справочника, заданного при конфигурировании журнала расчетов.
<ВидРасчета> | Вид вводимого расчета — ссылка на агрегатный объект «ВидРасчета».
<ДатаНачала> | Необязательный параметр. Дата начала действия вводимого расчета. По умолчанию — дата начала текущего периода журнала расчетов.
<ДатаОкончания> | Необязательный параметр. Дата окончания действия вводимого расчета. По умолчанию — дата окончания текущего периода журнала расчетов.
<Результат> | Необязательный параметр. Результат расчета. По умолчанию — 0.

Возвращаемое значение:

Число: 1 — если операция успешно выполнена; 0 — в противном случае.

Описание:

Метод ВвестиРасчет предназначен для ввода строк в журнал расчетов. Как правило, используется в модуле расчета документа, но может использоваться и в модуле вида расчета. Метод вводит одну или несколько записей в журнал расчетов, и результат ее действия зависит от того, вводится «вытесняющий» расчет или обычный.

При вводе вытесняющего расчета проводится анализ уже существующих записей журнала расчетш; для интервала времени, заданного параметрами ДатаНачала и ДатаОкончания. Если в этом периоде уже существуют записи, приоритет вытеснения которых меньше либо равен приоритету вытеснения вводимого расчета, будет проводиться редактирование периода их действия или полное их удаление. Это приведет, например, к тому, что вводимая запись будет вытеснять записи с тем же видом расчета.

В том случае, если вытесняемые данные принадлежат не текущему периоду расчета, проводится не корректировка или полное удаление записей, а их сторнирование

Если приоритет вытеснения уже существующих записей больше приоритета вытеснения вводимого расчета, то корректируется период действия вводимой записи. Это может привести, например, к тому, что новая запись вовсе не будет введена, если ее место во времени уже занято записями с большим приоритетом вытеснения.

Для случая ввода невытесняющих расчетов анализ существующих записей журнала расчетов и их протяженности во времени не проводится, и расчет вводится в любом случае.

Во всех вышеописанных случаях ввод записей в журнал расчетов проводится в пределах границ расчетных периодов журнала расчетов. Например, если при месячной периодичности журнала задать дату начала и дату окончания, отстоящие друг от друга более, чем на месяц, будет введено более одной записи журнала расчетов — для всех периодов, затрагиваемых временным интервалом от <ДатаНачала> до <ДатаОкончания>.

Важно! Следует помнить, что ввод записи с временем действия расчета, не принадлежащим текущему расчетному периоду, не означает ввода записей прошлого или будущего периода. Вводимые записи всегда принадлежат текущему периоду (т. е. введены в текущем периоде), хотя и производят расчеты прошлого или будущего периодов.

Атрибуты Документ и РодительскийДокумент журнала расчетов заполняются значением того документа, в модуле расчета которого сработал метод ВвестиРасчет. Этот документ будет «родителем» и «основанием» вводимой записи журнала расчетов. В том случае, когда метод сработал в модуле вида расчета, реквизиты Документ и РодительскийДокумент заполняются значениями этих атрибутов той записи журнала расчетов, при расчете которой выполнен метод ВвестиРасчет.

Таким образом, конкретный документ является «родителем» не только тех записей журнала расчетов, которые введены непосредственно им, но и тех записей, которые порождены при расчете записей, введенных документом. Можно считать, что для таких записей документ является не «родителем», а «прародителем».

Параметр <Результат> можно использовать в том случае, когда сразу при вводе записей журнала расчетов можно записать их результат.

Важно! Метод ВвестиРасчет можно применять только для тех объектов, которые созданы функцией СоздатьОбъект. Это значит, например, что его нельзя использовать непосредственно (без точки) в форме журнала расчетов или в модуле видов расчета.

Пример:

// Ввод выбранного расчета.

// Атрибут "Расчет" — реквизит формы документа

Процедура ПровестиДокумент()

   // Процедура выполняется при проведении документа расчета

   ЖР = СоздатьОбъект("ЖурналРасчетов.Зарплата");

   ЖР.ВвестиРасчет(Сотрудник, Расчет, ДатаН, ДатаК, 0);

КонецПроцедуры

См. также: ВвестиРасчетНаОсновании, ЗаписатьРасчет

ВвестиРасчетНаОсновании

Ввести запись в журнал расчетов на основании произвольного документа.

Синтаксис:

ВвестиРасчетНаОсновании(<Основание>, <Объект>, <ВидРасчета>, <ДатаНачала>,

                <ДатаОконч>, <Результат>)

Англоязычный синоним:

InsertCalculationByReason

Параметры:

<Основание> | Документ, на основании которого вводится запись (или записи) в журнал расчетов.
<Объект> | Объект расчета — элемент справочника, заданного при конфигурировании журнала расчетов.
<ВидРасчета> | Вид вводимого расчета — ссылка на агрегатный объект типа «ВидРасчета».
<ДатаНачала> | Необязательный параметр. Дата начала действия вводимого расчета. По умолчанию — дата начала текущего расчетного периода журнала расчетов.
<ДатаОконч> | Необязательный параметр. Дата окончания действия вводимого расчета. По умолчанию — дата окончания текущего расчетного периода журнала расчетов.
<Результат> | Необязательный параметр. Результат расчета. По умолчанию — ноль.

Возвращаемое значение:

Число: 1 — если операция успешно выполнена; 0 — в противном случае.

Описание:

Метод предназначен для ввода строк в журнал расчетов. Работает так же, как и метод ВвестиРасчет, но при этом реквизит Документ вводимых строк журнала расчетов заполняется значением параметра <Основание>. Использование метода ВвестиРасчетНаОсновании — один из способов непосредственно установить родительские отношения между любым документом и вводимыми записями журнала расчетов.

Важно! Метод ВвестиРасчетНаОсновании можно применять только для тех объектов, которые созданы функцией СоздатьОбъект. Это значит, например, что его нельзя использовать непосредственно (без точки) в форме журнала расчетов или в модуле видов расчета.

Пример:

// Модуль выполняется при проведении документа расчета "Начало месяца"

Процедура ПровестиДокумент()

   // Если можно проводить...

   Если (МожноПроводить = 1) Тогда

      // Журнал расчетов — Зарплата

      ЖР = СоздатьОбъект("ЖурналРасчетов.Зарплата");

      ЖРКомп = СоздатьОбъект("ЖурналРасчетов.Компенсации");

      // конец и начало текущего периода

      КТП = ЖР.КонецТекущегоПериода();

      НТП = ЖР.НачалоТекущегоПериода();

      Сотр = СоздатьОбъект("Справочник.Сотрудники");

      Спр = СоздатьОбъект("Справочник.ПриказыДлительногоДействия");

      Сотр.ВыбратьЭлементы();

      Пока Сотр.ПолучитьЭлемент() > 0 Цикл

         // расчет "приказов длительного действия"

         // типа доплат исп. листов, штрафов и пр...

         Спр.ИспользоватьВладельца(Сотрудник);

         Спр.ВыбратьЭлементы();

         // предполагается, что в каждом приказе есть

         // реквизиты Начало, Окончание и Сотрудник

         Пока Спр.ПолучитьЭлемент() > 0 Цикл

            //. . .

            Если Спр.Приказ.Вид() <> "" Тогда

               Если ((Спр.Приказ.Окончание >= НТП) И

                     (Спр.Приказ.Начало <= КТП)) Тогда

                  // предполагается, что в каждом приказе

                  // есть реквизиты Начало и Окончание

                  ЖР.ВвестиРасчетНаОсновании(Спр.Приказ, Спр.Приказ.Сотрудник,

                        Спр.Приказ.Расчет, Макс(Спр.Прика з.Начало, НТП),

                        Мин(Спр.Приказ.Окончание, КТП), 0);

               КонецЕсли;

            КонецЕсли;

         КонецЦикла;

      КонецЦикла;

   ИначеЕсли МожноПроводить = 0 Тогда

      Сообщить("Документ не проведен!!!");

   КонецЕсли;

КонецПроцедуры

См. также: ВвестиРасчет, ЗаписатьРасчетНаОсновании

ЗаписатьРасчет

Записать расчет в журнал расчетов.

Синтаксис:

ЗаписатьРасчет (<Объект>, <ВидРасчета>, <ДатаНачала>, <ДатаОкончания>,

                <Результат>)

Англоязычный синоним:

EnterCalculation

Параметры:

<Объект> | Объект расчета — элемент справочника, заданного при конфигурировании журнала расчетов.
<ВидРасчета> | Вид вводимого расчета — ссылка на агрегатный объект «Вид Расчета».
<ДатаНачала> | Необязательный параметр. Дата начала действия вводимого расчета. По умолчанию — дата начала текущего периода журнала расчетов.
<датаОкончания> | Необязательный параметр. Дата окончания действия вводимого расчета. По умолчанию — дата окончания текущего периода журнала расчетов.
<Результат> | Необязательный параметр. Результат расчета. По умолчанию — ноль.

Возвращаемое значение:

Число: 1 — если операция успешно выполнена; 0 — в противном случае.

Описание:

Метод предназначен для ввода строк в журнал расчетов так же, как и метод ВвестиРасчет. Отличие заключается в том, что ввод вытесняющих расчетов приводит к вытеснению только тех расчетов, которые имеют меньший приоритет, а не меньший либо равный, как в случае с методом ВвестиРасчет. Это приводит, в частности, к тому, что за счет применения этого метода расчет не вытесняет «сам себя».

При записи невытесняющего расчета ввод новых записей также происходит «осмотрительно» — новые записи вводятся только в том случае, если в журнале расчетов нет точно такой же записи. Под точно такой же записью здесь подразумевается запись с таким же видом расчета, для того же объекта и с тем же периодом действия.

Важно! Метод ЗаписатьРасчет можно применять только для тех объектов, которые созданы функцией СоздатьОбъект. Это значит, например, что его нельзя использовать непосредственно (без точки) в форме журнала расчетов или в модуле видов расчета.

Пример:

См. предыдущий пример.

См. также: ВвестиРасчет, ЗаписатьРасчетНаОсновании

ЗаписатьРасчетНаОсновании

Ввести запись в журнал расчетов на основании произвольного документа.

Синтаксис:

ЗаписатьРасчетНаОсновании(<Основание>, <Объект>, <ВидРасчета>, <ДатаНачала>,

                   <ДатаОконч>, <Результат>)

Англоязычный синоним:

EnterCalculationByReason

Параметры:

<Основание> | Документ, на основании которого вводится запись (или записи) в журнал расчетов.
<Объект> | Объект расчета — элемент справочника, заданного при конфигурировании журнала расчетов.
<ВидРасчета> | Вид вводимого расчета — ссылка на агрегатный объект «Вид Расчета».
<ДатаНачала> | Необязательный параметр. Дата начала действия вводимого расчета. По умолчанию — дата начала текущего периода журнала расчетов.
<ДатаОконч> | Необязательный параметр. Дата окончания действия вводимого расчета. По умолчанию — дата окончания текущего периода журнала расчетов.
<Результат> | Необязательный параметр. Результат расчета. По умолчанию — ноль.

Возвращаемое значение:

Число: 1 — если операция успешно выполнена; 0 — в противном случае.

Описание:

Метод предназначен для ввода строк в журнал расчетов. Работает так же, как и метод ЗаписатьРасчет, но при этом реквизит Документ вводимых строк журнала расчетов заполняется значением параметра <Основание>. Использование метода ЗаписатьРасчетНаОсновании — один из способов непосредственно установить родительские отношения между любым документом и вводимыми записями журнала расчетов.

Данный метод отличается от метода ВвестиРасчетНаОсновании тем, что ввод вытесняющих расчетов приводит к вытеснению только тех расчетов, которые имеют меньший приоритет, а не меньший либо равный, как в случае с методом ВвестиРасчетНаОсновании. Это приводит, в частности, к тому, что за счет применения этого метода расчет не вытесняет «сам себя».

При записи невытесняющего расчета ввод новых записей также происходит «осмотрительно» — новые записи вводятся только в том случае, если в журнале расчетов нет точно такой же записи. Под точно такой же записью здесь подразумевается запись с таким же видом расчета, для того же объекта и с тем же периодом действия.

Важно! Метод ЗаписатьРасчетНаОсновании можно применять только для тех объектов, которые созданы функцией СоздатьОбъект. Это значит, например, что его нельзя использовать непосредственно (без точки) в форме журнала расчетов или в модуле видов расчета.

Пример:

Процедура Перерасчет(Группа, Сотрудник, Основание, Начало, Окончание) Экспорт

   // перерасчет по журналу зарплата

   ЖР = СоздатьОбъект{"ЖурналРасчетов.Зарплата");

   ЖР.ВыбратьЗаписиПоОбъекту(Сотрудник, ЖР.НачалоПериодаПоДате(Начало),

       Мин(Окончание, ЖР.НачалоТекущегоПериода() - 1));

   Сч = 1;

   Пока (Сч < 50...) Цикл

      Если (Расчеты[Сч].ВходитВГруппу(ВсеУд)=1) Тогда

         ЖР.ЗаписатьРасчетНаОсновании(Основание, Сотрудник, Расчеты[Сч],

                  Начала[Сч], Окончания[Сч], 0);

      Иначе

         ЖР.ВвестиРасчетНаОсновании(Основания[Сч], Сотрудник, Расчеты[Сч],

                  Начала[Сч], Окончания[Сч], 0);

      КонецЕсли;

      Сч = Сч + 1;

   КонецЦикла;

КонецПроцедуры

См. также: ВвестиРасчетНаОсновании

Рассчитать

Провести расчет текущей записи.

Синтаксис:

Рассчитать()

Англоязычный синоним:

Calculate

Описание:

Выполняет расчет текущей строки журнала расчетов. Фактически, выполняет модуль вида расчета текущей строки журнала расчетов, точнее — предопределенную процедуру этого модуля ПровестиРасчет. Как правило, применяется в цикле, выполняющем перебор записей журнала расчетов при помощи метода ПолучитьЗапись. Расчет записей прошлых расчетных периодов не производится.

При расчете фиксированных записей текущего расчетного периода, модуль вида расчета выполняется, но изменение результата расчета не производится.

Метод работает только для переменных, созданных функцией СоздатьОбъект.

Пример:

// Рассчитаем все основные средства категории определенного типа

ЖР = СоздатьОбъект("ЖурналРасчетов.Амортизация");

ЖР.ВыбратьПериод(ЖР.НачалоТекущегоПериода());

Пока ЖР.ПолучитьЗапись() > 0 Цикл

   Если ЖР.Объект.Тип = Тип;

      ЖР.Рассчитать();

   КонецЕсли;

КонецЦикла;

См. также: ВыполнитьРасчет

ВыбратьЗаписи

Выбрать записи, действующие в определенном временном интервале.

Синтаксис:

ВыбратьЗаписи(<Начало>, <Окончание>}

Англоязычный синоним:

SelectRecords

Параметры:

<Начало> | Дата начала периода.
<Окончание> | Дата окончания периода.

Возвращаемое значение:

Число: 1 — если операция успешно выполнена и выборка не пуста, т. е. содержит хотя бы одну запись; 0 — в противном случае.

Описание:

Метод открывает выборку записей журнала расчетов. Выбираются все записи, период действия которых хоть на один день затрагивается тем периодом, который задан параметрами <Начало> и <Окончание>. Это значит, например, что если запись журнала расчетов имеет даты начала и окончания '15.12.96' и '25.12.96' то она попадет в выборку, открытую при помощи любого из следующих методов:

· ВыбратьЗаписи(•10.10.96', •15.12.96')

· ВыбратьЗаписи('25.12.96', '01.01.97')

· ВыбратьЗаписи('17.12.96', '17.12.96').

Как правило, после применения данного метода проводится перебор всех записей выборки в цикле при помощи метода журнала расчетов ПолучитьЗапись.

Данный метод работает только для переменных, созданных функцией СоздатьОбъект.

Пример:

// Расчет количества дней, отработанных всеми сотрудниками

// за прошлый период

//

// журнал расчета зарплаты

ЖР = СоздатьОбъект("ЖурналРасчетов.Зарплата");

// дата начала прошлого периода

ДатаНачала = ЖР.НачалоПериодаПоДате(ЖР.НачалоТекущегоПериода() - 1);

ЖР.ВыбратьЗаписи(ДатаНачала, ЖР.КонецПериодаПоДате(ДатаНачала));

Пока ЖР.ПолучитьЗапись() > 0 Цикл

   Сумма = Сумма + ЖР.ДНИ;

КонецЦикла;

См. также: методы ВыбратьЗаписиПоОбъекту, ВыбратьПериод, атрибуты ДатаНачала, ДатаОкончания

ВыбратьПериод

Выбрать записи, введенные в журнал в определенном расчетном периоде.

Синтаксис:

ВыбратьПериод(<Дата>)

Англоязычный синоним:

SelectPeriod

Параметры:

<Дата>

Дата, лежащая в выбираемом периоде.

Возвращаемое значение:

Число: 1 — если операция успешно выполнена и выборка не пуста, т. е. содержит хотя бы одну запись; 0 — в противном случае.

Описание:

Метод открывает выборку записей журнала расчетов. Выбираются все записи за тот расчетный период, в который попадает <Дата>. Выбираются именно те записи, которые введены в заданном периоде, но не записи, имеющие дату начала и дату окончания, лежащие в заданном периоде. Следовательно, метод ВыбратьПериод отличается от метода ВыбратьЗаписи лишь тем, что осуществляет выборку в другом временном разрезе. В первом случае — это выбор записей по времени их появления (регистрации) в системе, т. е. по расчетным периодам, во втором случае — это выбор записей по времени их действия. Как правило, применяется перед циклом, выполняющим перебор записей журнала расчетов при помощи метода ПолучитьЗапись.

Данный метод работает только для переменных, созданных функцией СоздатьОбъект.

Пример:

// Расчет суммы амортизации по результатам всех расчетов

// в текущем периоде

// журнал расчета амортизации

ЖР = СоздатьОбъект("ЖурналРасчетов.Амортизация");

ЖР.ВыбратьПериод(ЖР.НачалоТекущегоПериода());

Пока ЖР.ПолучитьЗапись()>0 Цикл

   Сумма = Сумма + ЖР.Результат;

КонецЦикла;

См. также: методы ВыбратьПериодПоОбъекту, ВыбратьЗаписи, атрибут ПериодРегистрации

ВыбратьЗаписиПоОбъекту

Выбрать записи, действующие в определенном временном интервале и принадлежащие одному объекту расчета.

Синтаксис:

ВыбратьЗаписиПоОбъекту(<Объект>, <Начало>, <Окончание>)

Англоязычный синоним:

SelectRecordsByObject

Параметры:

<Объект> | Объект расчета, записи которого выбираются.
<Начало> | Дата начала периода.
<Окончание> | Дата окончания периода.

Возвращаемое значение:

Число: 1 — если операция успешно выполнена и выборка не пуста, т. е. содержит хотя бы одну запись; 0 — в противном случае.

Описание:

Метод открывает выборку записей журнала расчетов. Выбираются все записи, рассчитанные для объекта, заданного параметром <Объект>, период действия которых хоть на один день затрагивается тем периодом, который задан параметрами <Начало> и <Окончание>. Следовательно, метод ВыбратьЗаписиПоОбъекту отличается от ВыбратьЗаписи лишь тем, что в первом случае в выборку попадают записи по одному конкретному объекту расчета, а во втором — по всем объектам расчета.

Данный метод работает только для переменных, созданных функцией СоздатьОбъект.

Пример:

// Проходя по справочнику акционеров, проведем по некоторому

// условию полный расчет дивидендов

// Готовим справочник акционеров

Акционеры = СоздатьОбъект("Справочник.Акционеры");

Акционеры.ПорядокКодов();

Акционеры.ВыбратьЭлементы();

// Журнал расчетов дивидендов

ЖР = СоздатьОбъект("ЖурналРасчетов.Дивиденды");

// Начало и конец текущего периода

Нач = ЖР.НачалоТекущегоПериода();

Кон = ЖР.КонецТекущегоПериода();

Пока Акционеры.ПолучитьЭлемент() > 0 Цикл

   Если Акционеры.Статус = 2 Тогда

      ЖР.ВыбратьЗаписиПоОбъекту(Акционеры.ТекущийЭлемент(), , );

      Пока ЖР.ПолучитьЗапись() > 0 Цикл

         ЖР.Рассчитать();

      КонецЦикла;

   КонецЕсли;

КонецЦикла;

См. также: ВыбратьПериодПоОбъекту, ВыбратьЗаписи

ВыбратьЗаписиПоДокументу

Выбрать записи по документу-основанию.

Синтаксис:

ВыбратьЗаписиПоДокументу(<Документ>)

Англоязычный синоним:

SelееtRecordsByDocument

Параметры:

<Документ>

Документ расчета, который является документом-основанием для отбираемых записей.

Возвращаемое значение:

Число: 1 — если операция успешно выполнена и выборка не пуста, т. е. содержит хотя бы одну запись; 0 — в противном случае.

Описание:

Метод открывает выборку записей журнала расчетов. Выбираются все записи, документом-основанием для которых служит заданный <Документ>, вне зависимости от того, в каком расчетном периоде записи порождались. Как и все остальные методы выборки журнала расчетов, как правило, применяется перед циклом, в котором перебираются записи. Работает только для переменных, созданных функцией СоздатьОбъект.

Важно! Документом-основанием записи журнала расчетов может являться:

· документ, непосредственно породивший записи в систему за счет применения методов ВвестиРасчет и ЗаписатьРасчет;

· документ, ссылка на который передана в качестве параметра одному из методов: ВвестиРасчетНаОсновании или ЗаписатьРасчетНаОсновании.

Пример:

// Рассчитаем все записи по наряду (процедура выполняется

// в контексте журнала расчетов)

// Журнал расчетов

ЖР = СоздатьОбъект("ЖурналРасчетов.Зарплата");

ЖР.ВыбратьЗаписиПоДокументу(Документ);

Пока ЖР.ПолучитьЗапись() > 0 Цикл

   ЖР.Рас считать();

КонецЦикла;

См. также: методы ВыбратьПериод, ВыбратьтЗаписи, атрибут Документ

ВыбратьПериодПоОбъекту

Выбрать записи по одному объекту расчета, зарегистрированные в определенном расчетном периоде журнала расчетов.

Синтаксис:

ВыбратьПериодПоОбъекту(<Объект>, <Дата>)

Англоязычный синоним:

SelectPeriodByObject

Параметры:

<Объeкт> | Объект расчета, записи которого выбираются.
<Дaтa> | Дата, лежащая в выбираемом периоде.

Возвращаемое значение:

Число: 1 — если операция успешно выполнена и выборка не пуста, т. е. содержит хотя бы одну запись; 0 — в противном случае.

Описание:

Метод открывает выборку записей журнала расчетов. Работает так же, как метод ВыбратьПериод, за исключением того, что выбираются все записи для того объекта расчета, который задан параметром <Объект>.

Данный метод работает только для переменных, созданных функцией СоздатьОбъект.

Пример:

*

Процедура Начислено(Сотрудник)

   Начисл = 0;

   ПН = 0;

   ЖрнЗарплата.ВыбратьПериодПоОбъекту (Сотрудник, ДатаАктуальности);

   Пока ЖрнЗарплата.ПолучитьЗапись() = 1 Цикл

      Если ЖрнЗарплата.ВидРасч.ВходитВГруппу(ГруппаРасчетов.ВсеНачисления)-1 Тогда

         Начисл = Рез + ЖрнЗарплата.Результат;

      ИначеЕсли ЖрнЗарплата.ВидРасч = ВидРасчета.ПодоходныйНалог

         Тогда ПН = ПН+ЖрнЗарплата.Результат;

      КонецЕсли;

   КонецЦикла;

КонецПроцедуры

*

// расчет начального сальдо

ЖрнЗарплата.ВыбратьПериодПоОбъекту(Сотрудник, НТП - 1);

Сальдо = 0;

Пока ЖрнЗарплата.ПолучитьЗапись() = 1 Цикл

   Если ЖрнЗарплата.ВидРасч.ВходитВГруппу(ГруппаРасчетов.ВсеУдержания) = 1 Тогда

      Сальдо = Сальдо-ЖрнЗарплата.Результат;

      // выплаты с деполнента и выплаты дивидендов — не считатем!

   ИначеЕсли ВыплатаЗрп(ЖрнЗарплата.ВидРасч, ЖрнЗарплата.Документ) = 1 Тогда

      Сальдо = Сальдо - ЖрнЗарплата.Результат;

   ИначеЕсли ЖрнЗарплата.ВидРасч.

                  ВходитВГруппу(ГруппаРасчетов.ПоложительноеСальдо) = 1 Тогда

      Сальдо = Сальдо + ЖрнЗарплата.Результат;

   КонецЕсли;

КонецЦикла;

Если Сальдо <> 0 Тогда

   ЖрнЗарплата.ЗаписатьРасчет(Сотрудник,

   ВидРасчета.НачальноеСальдо, НТП, КТП, Сальдо);

КонецЕсли;

См. также: методы ВыбратьПериод, ВыбратьтЗаписи, атрибут Объект

ВыбратьПоЗначению

Осуществляет выборку записей по значению в графе отбора.

Синтаксис:

ВыбратьПоЗначению(<ИмяГрафы>, <ЗначениеОтбора>, <ПериодНачала>,

                  <ПериодОкончания>)

Англоязычный синоним:

SelеctByValue

Параметры:

<ИмяГрафы> | Строковое значение. Наименование графы отбора, как она определена при конфигурировании.
<ЗначениеОтбора> | Отбираемое значение.
<ПериодНачала> | Значение типа «период журнала расчетов» -первый расчетный период отбора.
<ПериодОкончания> | Значение типа «период журнала расчетов» -последний расчетный период отбора.

Возвращаемое значение:

Число: 1 — если отбор успешно установлен; 0 — в противном случае.

Описание:

Метод предназначен для выборки записей журнала расчетов, которые содержат в графе отбора <ИмяГрафы> заданное <ЗначеяиеОтбора>, период регистрации которых лежит в пределах, заданных параметрами <ПериодНачала> и <ПериодОкончания>.

Если первый параметр задан неверно — т. е. нет такой графы отбора, выборка не будет выполнена и метод возвратит 0. Если заданное <ЗначениеОтбора> не содержится ни в одной строке журнала расчетов, выборка окажется пустой (т. е. в нее не попадет ни одна запись журнала расчетов), но метод возвратит значение 1.

Метод используется так же, как и другие методы создающие выборки записей в журнале расчетов, такие как ВыбратьЗаписи, ВыбратьПериод и т. д. Как и все остальные методы выборки журнала расчетов, как правило, применяется перед циклом, в котором перебираются записи. Работает только для переменных, созданных функцией СоздатьОбъект.

Замечание. Наименованиями граф отбора журнала расчетов могут служить реквизиты справочника объектов расчета, заданного для журнала расчетов, а также значения «Владелец» и «Родитель» этого справочника. Это значит, что в общем случае, в качестве первого параметра, методу могут передаваться предопределенные имена «Родитель» и «Владелец», а также названия реквизитов справочника.

Какие именно графы отбора задействованы в журнале расчетов, задается при конфигурировании.

Данный метод работает так же как и метод формы журнала расчетов УстановитьОтбор, но, разумеется не осуществляет визуального управления формой журнала.

Пример:

// Рассчитаем все записи текщего расчетного периода по

// подразделению (переменная Подр)

Процедура РасчетПодразделения(Подр)

   ЖР = СоздатьОбъект("ЖурналРасчетов.Зарплата");

   ТекПер = ЖР.ТекущийПериод();

   ЖР.ВыбратьПоЗначению("Подразделение", Подр, ТекПер.ТекПер);

   Пока ЖР.ПолучитьЗапись() > 0 Цикл

      ЖР.Рассчитать();

   КонецЦикла;

КонецПроцедуры

См. также: УстановитьОтбор

Новая

Создает новую запись журнала расчетов.

Синтаксис:

Новая()

Англоязычный синоним:

New

Описание:

Метод инициализирует создание новой строки журнала расчетов. Собственно запись новой строки журнала расчетов происходит при вызове метода Записать. После инициализации создания новой строки, как правило, производится заполнение ее реквизитов с последующим вызовом метода Записать.

Пример:

ЖР = СоздатьОбъект("ЖурналРасчетов.Зарплата");

ЖР.Новая();

ЖР.Записать();

Записать

Вносит изменения записи в журнал расчетов.

Синтаксис:

Записать()

Англоязычный синоним:

Write

Описание:

Метод Записать вносит изменения записи или новую запись в журнал расчетов. Данный метод применяется после метода Новая и заполнения реквизитов журнала расчетов при помощи метода УстановитьРеквизит.

Данный метод проверяет корректность заполненных реквизитов журнала расчетов. При вводе новых записей журнала расчетов методами Новая и Записать обязательно должны быть заполнены следующие реквизиты записи журнала: Объект, Документ, ВидРасч. Кроме того, проверяется корректность реквизитов ДатаНачала и ДатаОкончания. Если реквизиты ДатаНачала и ДатаОкончания не установленвы явным образом, при записи они устанавливаются как начало и окончание текущего расчетного прериода, соответственно. Реквизит ПериодРегистрации заполняется текущим значением расчетного периода, установленным для журнала расчетов (см. метод УстановитьПериодРасчета). Если реквизит РодительскийДокумент не установлен явным образом, для него устанавливается то же значение, что и для реквизита Документ. Если реквизиты Рассчитана, Сторно, Перерасчет, Фиксирована не установлены, то запись вводится как простая нерассчитанная, нефиксированная запись.

Внимание! При вводе новых записей в журнал расчетов методами Новая и Записать записи вводятся «как есть». Система не выполняет правила перерасчетов, а также правила взаимного вытеснения видов расчета. Ввод произвольных записей журнала расчетов очень ответственная операция. При использовании этих методов следует внимательно следить за логической целостностью журнала расчетов.

Пример:

Перем Док;

Перем Сотр;

Перем Рез;

// документы

Док = СоздатьОбъект("Документ");

// ...позиционируется нужный документ

// сотрудники

Сотр = СоздатьОбъект("Справочник.Сотрудники");

// ...позиционируется нужный элемент справочника сотрудники

// считаем результат...

Рез =

ЖР = СоздатьОбъект("ЖурналРасчетов.Зарплата");

ЖР.Новая();

ЖР.УстановитьПериод(ЖР.ПолучитьпериордПоДате(ТекДата));

ЖР.УстановитьРеквизит("Документ", Док.ТекущийДокумент());

ЖР.УстановитьРеквизит("Объект", Сотр.ТекущийЭлемент());

ЖР.УстановитьРеквизит("ВидРасч", Вид Расчета.ПоОкладу);

ЖР.УстановитьРеквизит("Рассчитана", 1);

ЖР.УстановитьРеквизит("Результат", Рез);

ЖР.Записать();

УдалитьЗапись

Удалить запись журнала расчетов.

Синтаксис:

УдалитьЗапись()

Англоязычный синоним:

DeleteRecord

Возвращаемое значение:

Число: 1 — если операция успешно выполнена; 0 — в противном случае.

Описание:

Метод предназначен для удаления записей журнала расчетов. Данный метод работает только для переменных, созданных функцией СоздатьОбъект.

Пример:

// Процедура выполняется в контексте журнала расчетов

// Удалим записи, по которым нет рабочих дней!

ЖР = СоздатьОбъект("ЖурналРасчетов.Зарплата");

Календ = СоздатьОбъект("Календарь.Служащие");

ЖР.ВыбратьПериод(ЖР.НачалоТекущегоПериода());

Пока ЖР.ПолучитьЗапись() > 0 Цикл

   Если Календ.Дней(ЖР.ДатаНачала, ЖР.ДатаОкончания) = 0 Тогда

      ЖР.УдалитьЗапись();

   КонецЕсли;

КонецЦикла;

Исправить

Исправление результата записи журнала расчетов.

Синтаксис:

Исправить(<НовыйРезультат>)

Англоязычный синоним:

Update

Параметры:

<НовыйРезультат>

Новый результат записи журнала расчетов.

Описание:

Метод выполняет то же действие, что и интерактивная процедура исправления результата, т. е. при исправлении записи текущего расчетного периода просто редактируется результат и метится запись «ручкой», а при исправлении записи прошлого периода — вводится сторно той записи и еще одна запись-исправление. Описание интерактивной процедуры исправления результата можно посмотреть в книге «Руководство пользователя».

ОтменитьИсправление

Отменяет исправление записи журнала расчетов, сделанное ранее.

Синтаксис:

ОтменитьИсправление()

Англоязычный синоним:

UndoUpdate

Описание:

Отменяет исправление, сделанное ранее (вручную или из языка методом Исправить). Метод выполняет те же действие, что и интерактивная процедура отмены исправления записи журнала расчетов. Описание интерактивной процедуры отмены исправления результата записи журнала расчетов можно посмотреть в книге «Руководство пользователя».

Методы контекста Модуля формы журнала расчетов

Описанные в данном разделе методы доступны только в контексте Модуля формы журнала расчетов (см. «Виды программных модулей»).

ВидыОтбора

Установить доступные виды отборов журнала для вызова их в интерактивном режиме.

Синтаксис:

ВидыОтбора(<СписокИмеяОтборов>)

Англоязычный синоним:

KindsOfSelection

Параметры:

<СписокИменОтборов>

Необязательный параметр. Строковое выражение, содержащее список имен отборов для журнала. Виды указываются через запятую. Если вместо списка —символ "*", то значит для журнала используются все назначенные в конфигураторе виды отборов.

Возвращаемое значение:

Строковое значение, содержащее текущий список имен отборов для журнала, разделенных запятыми (на момент до исполнения метода).

Описание:

Метод ВидыОтбора устанавливает доступные виды отборов журнала для вызова их в интерактивном режиме.

Данный метод доступен только в контексте Модуля формы журнала расчетов (см. «Виды программных модулей»).

Пример:

ВидыОтбора("Сотрудник, Расчетчик");

УстановитьОтбор

Установить выборку по графе отбора.

Синтаксис:

УстановитьОтбор(<ИмяГрафыОтбора>, <ЗначениеОтбора>)

Англоязычный синоним:

SetSelection

Параметры:

<ИмяГрафыОтбора> | Строковое значение. Наименование графы отбора, как она определена при конфигурировании.
<ЗначениеОтбора> | Отбираемое значение.

Возвращаемое значение:

Число: 1 — если отбор успешно установлен; 0 — в противном случае.

Описание:

Метод предназначен для выборки записей журнала расчетов, которые содержат в графе отбора <ИмяГрафыОтбора> заданное <ЗначениеОтбора>. Если первый параметр задан неверно — т. е. нет такой графы отбора, выборка не будет выполнена и метод возвратит 0. Если заданное <ЗначениеОтбора> не будет найдено ни в одной строке журнала расчетов, выборка окажется пустой (т. е. в нее не попадет ни одна запись журнала расчетов), но метод возвратит значение 1.

Если метод сработал, т. е. выборка реально установлена, происходит перерисовка окна журнала расчетов так же, как это происходит при интерактивном выполнении операции отбора.

Для отказа от отбора по значению необходимо вызвать данный метод, указав в качестве первого параметра пустую строку.

Замечание. Наименованиями граф отбора журнала расчетов могут служить реквизиты справочника объектов расчета, заданного для журнала расчетов, а также значения «Владелец» и «Родитель» этого справочника. Это значит, что в общем случае, в качестве первого параметра, методу могут передаваться предопределенные имена «Родитель» и «Владелец», а также названия реквизитов справочника.

Какие именно графы отбора задействованы в журнале расчетов, задается при конфигурировании.

Данный метод доступен только в контексте Модуля формы журнала расчетов (см. «Виды программных модулей»).

Пример:

// модуль формы журнала расчетов

// процедура снимает отбор

Процедура ВыбратьВсе();

   УстановитьОтбор("");

КонецПроцедуры

// Установим отбор сразу при открытии журнала расчетов Зарплата

// Расчетчик — глобальная переменная со ссылкой на группу

// сотрудников

УстановитьОтбор("Родитель", Расчетчик);

См. также: ПолучитьОтбор, ЗакладкиОтбора

ПолучитьОтбор

Получить значение предварительно установленного отбора.

Синтаксис:

ПолучитьОтбор(<ИмяГрафыОтбора>, <ЗначениеОтбора>)

Англоязычный синоним:

GetSelection

Параметры:

<ИмяГрафыОтбора> | Переменная в которую будет возвращено строковое значение — наименование графы отбора, как она определена при конфигурировании.
<ЗначениеОтбора> | Переменная, в которую будет возвращено ранее установленное значение отбора.

Возвращаемое значение:

Число: 1 — если отбор был установлен и <ИмяГрафыОтбора> и <ЗначениеОтбора> заполнены установками сделанными ранее методом УстановитьОтбор; 0 — если отбор прежде не был установлен.

Описание:

Метод предназначен для получение текущих значений отбора, установленных в форме журнала расчетов программным образом или интерактивно. Метод заполняет параметры <ИмяГрафыОтбора> и <ЗначениеОтбора>, переданные по ссылке. Если отбор ранее не был установлен, метод возвращает 0, а значения переменных, переданных в качестве параметров, не изменяются.

Данный метод доступен только в контексте Модуля формы журнала расчетов (см. «Виды программных модулей»).

Пример:

// модуль формы журнала расчетов

Перем ИмяОтбора;

Перем ЗначОтб;

Процедура ОтборПодразделения(Подразд)

   // ниже ИмяОтбора и ЗначениеОтбора будут заполнены

   // текущими значениями

   БылОтбор = ПолучитьОтбор(ИмяОтбора, ЗначОтб);

   Если БылОтбор = 1 Тогда

      Если ИмяОтбора = "Родитель" Тогда

         // снимем отбор

         УстановитьОтбор("");

      ИначеЕсли ИмяОтбора = "Подразделение" Тогда

         Сообщить("Было отобрано " + ЗначОтб.Наименование);

         УстановитьОтбор(ИмяОтбора, Подразд);

      КонецЕсли;

   КонецЕсли;

КонецПроцедуры

См. также: УстановитьОтбор, ЗакладкиОтбора

ЗакладкиОтбора

Установить в форме журнала расчетов закладки для интерактивного осуществления отбора.

Синтаксис:

ЗакладкиОтбора(<ИмяОтбора>, <ЗначениеОтбора>)

Англоязычный синоним:

TabCtrlSelection

Параметры:

<ИмяОтбора> | Строковое выражение, содержащее имя графы отбора, по которой будут созданы закладки.
<ЗначениеОтбора> | Значение отбора, соответствующее закладке устанавливаемой первоначально.

Возвращаемое значение:

Число: 1 — если операция успешно выполнена; 0 — в противном случае.

Описание:

Метод ЗакладкиОтбора устанавливает в форме журнала расчетов закладки (tab control), позволяющие быстро переключаться между разными значениями по одному и тому же отбору.

Данный метод доступен только в контексте Модуля формы журнала расчетов (см. «Виды программных модулей»).

Пример:

// в форме журнала расчетов "зарплата" установим закладки

// по умолчанию будет использована закладка, соответств.

// текущему расчетчику

ЗакладкиОтбора("Родитель", Расчетчик);

См. также: УстановитьОтбор, ПолучитьОтбор

ГраницаПросмотра

Установить в форме журнала расчетов границу видимости записей.

Синтаксис:

ГраницаПросмотра(<Период>)

Англоязычный синоним:

ViewBound

Параметры:

<Период>

Значение типа «Период журнала расчетов», которое устанавливается как граница видимости записей журнала расчетов.

Возвращаемое значение:

Значение типа «Период журнала расчетов». Текущее значение границы просмотра записей журнала расчетов, установленное до вызова метода программным образом или интерактивно.

Описание:

Метод ГраницаПросмотра устанавливает в форме журнала расчетов границу видимости записей. Видимыми (т. е. отображаемыми в окне журнала расчетов) становятся записи журнала с периодом регистрации от расчетного периода, заданного параметром <Период> до текущего расчетного периода. После вызова данного метода происходит перерисовка окна, так же как и при интерактивной смене границы просмотра журнала расчетов.

Данный метод доступен только в контексте Модуля формы журнала расчетов (см. «Виды программных модулей»).

Пример:

// в форме журнала расчетов "зарплата" отодвинемся

// на два расчетных периода назад

СтараяГраница = ГраницаПросмотра();

ГраницаПросмотра(Ст.ПрибавитьПериод(-2));

См. также: методы РежимПредставления, УстановитьОтбор, атрибут ПериодРегистрации

УстановитьПредставление

Установить в форме журнала расчетов режим представления записей.

Синтаксис:

УстановитьПредставление(<Режим>, <Объект>)

Англоязычный синоним:

SetPresentation

Параметры:

<Режим> | Числовое значение — режим представления журнала расчетов.
<Объект> | Объект, записи которого отображаются. Если устанавливаемый режим — «по одному документу» (см. ниже), этот параметр должен иметь тип «документ», если режим устанавливаемого представления — «по одному объекту», этот параметр должен иметь тип «элемент справочника».

Возвращаемое значение:

Число: 1, если представление успешно установлено; 0 — если представление по каким-либо причинам не установлено.

Описание:

Метод УстановитьПредставление устанавливает режим вывода записей в форме журнала расчетов. Значение <Режим> может принимать следующие значения:

1. Записи по всем объектам расчета.

2. Записи по одному объекту расчета.

3. Записи по одному документу-основанию.

Параметр <Объект> должен иметь тот или иной тип значения, в зависимости от устанавливаемого режима. Если устанавливается режим просмотра записей по одному документу, то тип значения этого параметра — «документ»; если устанавливается режим просмотра записей по одному объекту расчета (элементу справочника-родителя данного журнала расчетов), то тип значения этого параметра — «элемент справочника».

Если устанавливаемый режим — просмотр записей по всем объектам расчета, параметр <Объект> не используется.

Данный метод доступен только в контексте Модуля формы журнала расчетов (см. «Виды программных модулей»).

Пример:

Перем СтРежим;

Перем СтОбъект;

Перем СменилиРежим;

Процедура ПоОдному(Сотрудник)

   // запомним предыдущие установки

   ПолучитьПредставление(СтРежим, СтОбъект);

   // Сменим режим

   СменилиРежим = УстановитьПредставление(2, Сотрудник);

КонецПроцедуры

Процедура Восстановить()

   Если СменилиРежим = 1 Тогда

      УстановитьПредставление(СтРежим, СтОбъект);

   КонецЕсли;

КонецПроцедуры

См. также: ПолучитьПредставление, ГраницаПросмотра

ПолучитьПредставление

Получить установки представления журнала расчетов — режим представления и отображаемый объект.

Синтаксис:

ПолучитьПредставление(<Режим>, <Объект>}

Англоязычный синоним:

GetPresentation

Параметры:

<Режим> | Переменная, в которую записывается числовое значение — текущий режим представления журнала расчетов.
<Объект> | Переменная, в которую записывается объект, записи которого отображаются. Если текущий режим — «по одному документу» (см. ниже), этот параметр примет значение типа «документ», если режим устанавливаемого представления — «по одному объекту», этот параметр примет значение типа «элемент справочника».

Возвращаемое значение:

Число: 1, если представление успешно установлено; 0 — если представление по каким-либо причинам не установлено.

Описание:

Метод ПолучитьПредставление считывает текущие установки вывода записей в форме журнала расчетов. Параметр <Режим>, переданный по ссылке, в результате работы метода может принять следующие значения:

1. Записи по всем объектам расчета.

2. Записи по одному объекту расчета.

3. Записи по одному документу-основанию.

Параметр <Объект> получит значение того или иного типа, в зависимости от устанавливаемого режима. Если текущий режим — «по одному документу», этот параметр примет значение типа «документ», если режим устанавливаемого представления — «по одному объекту», этот параметр примет значение типа «элемент справочника».

Если текущий режим представления — просмотр записей по всем объектам расчета, параметр <Объект> не заполняется и его значение остается прежним.

Данный метод доступен только в контексте Модуля формы журнала расчетов (см. «Виды программных модулей»).

Пример:

Перем СтРежим;

Перем СтОбъект;

Перем СменилиРежим;

Процедура ПоОдному(Сотрудник)

   // запомним предыдущие установки

   ПолучитьПредставление(СтРежим, СтОбъект);

   // Сменим режим

   СменилиРежим = УстановитьПредставление(2.Сотрудник);

КонецПроцедуры

Процедура Восстановить()

   Если СменилиРежим = 1 Тогда

      УстановитьПредставление(СтРежим, СтОбъект);

   КонецЕсли;

КонецПроцедуры

См. также: УстановитьПредставление, ГраницаПросмотра

РассчитыватьПриОтменеИсправления

Устанавливает значение флага автоматического расчета записи журнала расчетов при интерактивной отмене ее исправления.

Синтаксис:

РассчитыватьПриОтменеИсправления(<Флаг>)

Англоязычный синоним:

CalculateOnEditCancel

Параметры:

<Флаг>

Необязательный параметр. Число: 1 — автоматически рассчитывать записи журнала расчетов при интерактивной отмене ее исправления; 0 — не рассчитывать автоматически.

Возвращаемое значение:

Текущее числовое значение флага (до испольнения метода).

Описание:

Метод РассчитыватьПриОтменеИсправления устанавливает значение флага автоматического расчета записи журнала расчетов при интерактивной отмене ее исправления. По умолчанию форма журнала расчетов всегда открывается со значением флага 0 (не рассчитывать записи журнала расчетов автоматически).

Данный метод доступен только в контексте Модуля формы журнала расчетов (см. «Виды программных модулей»).

Пример:

РассчитыватьПриОтменеИсправления(1);

Предопределенные процедуры Модуля формы журнала расчетов

Описанные в данном разделе системные предопределенные процедуры могут располагаться только в программном модуле формы журнала расчетов (см. «Виды программных модулей»).

Данные процедуры предназначены для расширения возможности программного управления правами пользователей на выполнение тех или иных действий.

Предопределенные процедуры не является встроенными процедурами языка. Для них зарезервированы только название и синтаксис. Тело процедур должно быть написано самим разработчиком в соответствующих программных модулях. Вызов предопределенных процедур на исполнение производится в системе 1С:Предприятие неявно при возникновении соответствующего события. Описание предопределенных процедур также см. гл. «Системные предопределенные процедуры».

ПриИсправленииРезультата

Предопределенная процедура при редактировании результата расчета записи журнала расчетов.

Синтаксис:

ПриИсправленииРезультата(<3апись>}

Англоязычный синоним:

OnResuitUpdate

Параметры:

<3апись>

Ссылка на запись журнала расчетов, результат расчета которой исправляется.

Описание:

Вызов предопределенной процедуры ПриИсправленииРезультата производится системой 1С:Предприятие неявно при попытке «ручного» исправления результата расчета записи журнала расчетов. Если в данной предопределенной процедуре установить статус возврата — 0, то результат не будет отредактирован.

Данная предопределенная процедура может располагаться только в модуле формы журнала расчетов.

Пример:

Процедура ПриИсправленииРезультата(Запись)

   // группа нередактируемых расчетов

   НГ = ГруппаРасчетов.Нередактируемые;

   Если Запись.ВидРасч.ВходитВГруппу(НГ) = 1 Тогда

      Предупреждение("Операция не выполняется");

      СтатусВозврата(0);

   КонецЕсли;

КонецПроцедуры

См. также: СтатусВозврата, ПриОтменеИсправления

ПриОтменеИсправления

Предопределенная процедура при отказе от ручного редактирования записи.

Синтаксис:

ПриОтменеИсправления(<3апись>)

Англоязычный синоним:

OnUpdateCancel

Параметры:

<3aпиcь>

Ссылка на запись журнала расчетов, исправление результата которой отменяется.

Описание:

Вызов предопределенной процедуры ПриОтменеИсправления производится системой 1С:Предприятие неявно при попытке отмены «ручного» исправления результата расчета записи журнала расчетов. Это действие вызывается пунктом «Отменить ручное редактирование» меню «Действия» при работе с журналом расчетов. Если в данной предопределенной процедуре установить статус возврата — 0, то ручное редактирование не будет отменено (будет оставлено).

Данная предопределенная процедура может располагаться только в модуле формы журнала расчетов.

Пример:

Процедура ПриОтменеИсправления(Запись)

   // Расчетчик — элемент справочника со списком расчетчиков

   Если Расчетчик.ПравоНаОтмену = Да Тогда

      // отреагируем на это действие

      ПересчитатьСотрудника(Запись.Объект);

   Иначе

      // иначе — нельзя!

      СтатусВозврата(0);

   КонецЕсли;

КонецПроцедуры

См. также: СтатусВозврата, ПриИсправленииРезультата

ПриРасчете

Предопределенная процедура, вызываемая из формы журнала расчетов при расчете записи журнала расчетов, всего объекта расчета или всех записей по документу.

Синтаксис:

ПриРасчете(<ОбъектРасчета>)

Англоязычный синоним:

OnCalculating

Параметры:

<ОбъектРасчета>

Запись журнала расчетов или элемент справочника, являющийся объектом расчета, или документ, записи которого рассчитываются. Что в данный момент передается системой при вызове процедуры — зависит от выполняемого действия: расчет одной записи, расчет объекта или расчет документа.

Описание:

Вызов предопределенной процедуры ПриРасчете на исполнение производится системой 1С:Предприятие неявно при выполнении одной из трех команд «Рассчитать запись», «РассчитатьОбъект» или «Рассчитать документ» меню «Действия» журнала расчетов. Если в данной предопределенной процедуре установить статус возврата — 0, то расчет проводиться не будет.

Данная предопределенная процедура может располагаться только в модуле формы журнала расчетов.

Пример:

Процедура ПриРасчете(Объект)

   // определим, что считаем?

   Если ТипЗначения(Объект) = 12 Тогда

      // имеем дело с документом

      Если Объект.Автор <> Расчетчик Тогда

         // если автор данного документа не текущий расчетчик, то

         // запретим расчет чужого документа!

         СтатусВозврата(0);

      КонецЕсли;

   ИначеЕсли ТипЗначения(Объект) = 11 Тогда

      // а это — элемент справочника

      Если Объект.Владелец <> Расчетчик Тогда

         // если рассчитываемый объект лежит в папке текущего расчетчика

         // считать можно иначе — нет

         СтатусВозврата(0);

      КонецЕсли;

   Иначе

      // иначе — считаем одну запись

      Если (Объект.Документ.Автор <> Расчетчик) ИЛИ

             (Объект.Объект.Владелец <> Расчетчик) Тогда

         //не дадим считать запись чужого документа или объекта

         СтатусВозврата(0);

      КонецЕсли;

   КонецЕсли;

КонецПроцедуры

См. также: СтатусВозврата

ПриВыбореВладельца

Предопределенная процедура выбора элемента справочника по которому будут выведены расчеты.

Синтаксис:

ПриВыбореВладельца(<Владелед>)

Англоязычный синоним:

OnSetOwner

Параметры:

<Владелец>

Значение устанавливаемого владельца — т. е. элемент справочника по которому будут выведены расчеты.

Описание:

Вызов предопределенной процедуры ПриВыбореВладельца производится в системе 1С:Предприятие при интерактивном выборе владельца журнала расчетов (при интерактивной смене владельца, т. е. смене позиции в справочнике-владельце, которая приводит к смене отображаемых расчетов). Если в данной предопределенной процедуре установить статус возврата — 0, то выбор владельца не будет произведен.

Внимание! Процедура выполняется только в том случае, когда журнал расчетов выводится «по объекту», т. е. в нем отображаются записи по одному объекту расчета. Вызов процедуры происходит в момент смены текущего элемента в «главном» справочнике, для которого создан журнал расчетов.

Данная предопределенная процедура может располагаться только в модуле формы журнала расчетов.

Пример:

Процедура ПриВыбореВладельца(Владелец)

   Если НазваниеНабораПрав() = "Продавец" Тогда

      Если Владелец = ЗапрещенныйВладелец Тогда

         Предупреждение("Нельзя изменять объект расчетов;", 2);

         СтатусВозврата(0);

      КонецЕсли;

   КонецЕсли;

КонецПроцедуры

См. также: СтатусВозврата

ПриУстановкеОтбора

Предопределенная процедура, вызываемая при установке отбора в форме журнала расчетов.

Синтаксис:

ПриУстановкеОтбора(<ИмяОтбора>, <ЗначениеОтбора>)

Англоязычный синоним:

OnSetSelection

Параметры:

<ИмяОтбора> | Строковое значение. Наименование графы отбора, которая выбрана пользователем при интерактивной установке отбора.
<ЗначениеОтбора> | Значение отбора, которое выбрано пользователем при интерактивной установке отбора.

Описание:

Вызов предопределенной процедуры ПриУстановкеОтбора производится системой 1С:Предприятие неявно при интерактивной попытке установить отбор записей в журнале расчетов. Если в данной предопределенной процедуре установить статус возврата — 0 (например, если данному пользователю нельзя устанавливать данное значение отбора документов), установка не будет выполнена.

Данная предопределенная процедура может располагаться только в модуле формы журнала расчетов.

Пример:

Процедура ПриУстановкеОтбора(ИмяОтбора, ЗначОтбора)

   Если НазваниеНабораПрав() = "Расчетчик" Тогда

      Если (ИмяОтбора = "Владелец") И (ЗначОтбора <> ТекущийРасчетчик) Тогда

         Предупреждение("Недостаточно прав!", 2);

         СтатусВозврата(0);

      КонецЕсли;

   КонецЕсли;

КонецПроцедуры

См. также: СтатусВозврата, УстановитьОтбор, ПолучитьОтбор

ПриУстановкеГраницыПросмотра

Предопределенная процедура, вызываемая при установке границы (по периоду регистрации записи) просматриваемых в журнале расчетов записей.

Синтаксис:

ПриУстановкеГраницыПросмотра(<Период>)

Англоязычный синоним:

OnSetViewBound

Параметры:

<Период>

Значение типа «Период журнала расчетов». Период, устанавливаемый пользователем как граница просмотра записей.

Описание:

Вызов этой предопределенной процедуры производится системой 1С:Предприятие неявно при интерактивной попытке установить другую границу просмотра записей в журнале расчетов. Если в данной предопределенной процедуре установить статус возврата — 0 (например, если данному пользователю нельзя просматривать расчеты определенной «давности»), установка не будет выполнена.

Данная предопределенная процедура может располагаться только в модуле формы журнала расчетов.

Пример:

Процедура ПриУстановкеГраницыПросмотра(Период)

   Если НазваниеНабораПрав() = "Расчетчик" Тогда

      ТП = ТекущийПериод();

      // не позволим смотреть более чем на три периода назад

      МинПер = ТП.ПрибавитьПериод(-3);

      Если (Период.ДатаНачала<МинПер.ДатаНачала) Тогда

         Предупреждение("Недостаточно прав 1", 2);

         СтатусВозврата(0);

      КонецЕсли;

   КонецЕсли;

КонецПроцедуры

См. также: СтатусВозврата, ГраницаПросмотра

ПриУстановкеПредставления

Предопределенная процедура, вызываемая при установке режима представления журнала расчетов (по всем объектам расчетов, по одному объекту расчета, по одному документу расчета).

Синтаксис:

ПриУстановкеПредставления(<Режим>}

Англоязычный синоним:

OnSetPresentation

Параметры:

<Режим>

Числовое значение — режим представления записей журнала расчетов, устанавливаемый пользователем.

Описание:

Вызов этой предопределенной процедуры производится системой 1С:Предприятие неявно при интерактивной попытке установить другой режим представления записей в журнале расчетов. Если в данной предопределенной процедуре установить статус возврата 0 (например, если данному пользователю нельзя использовать определенный режим), установка не будет выполнена.

Параметр <Режим> может принимать следующие значения:

1. Записи по всем объектам расчета.

2. Записи по одному объекту расчета.

3. Записи по одному документу-основанию.

Данная предопределенная процедура может располагаться только в модуле формы журнала расчетов.

Пример:

Процедура ПриУстановкеПредставления(Режим)

   Если НазваниеНабораПрав() = "Расчетчик" Тогда

      Если (Режим = 1) Тогда

         Предупреждение("Недостаточно прав!", 2);

         СтатусВозврата(0);

      КонецЕсли;

   КонецЕсли;

КонецПроцедуры

См. также: СтатусВозврата, УстановитьПредставление


Part23

Глава 23
Работа с Видами и Группами расчетов

Контекст работы с видами расчетов и группами расчетов

Так же как константы и регистры, виды расчетов и группы видов расчета являются частью глобального контекста выполнения программы 1С:Предприятие. Таким образом, для использования атрибутов и методов видов расчетов и групп расчетов достаточно писать непосредственно обращение к атрибутам и методам того или иного расчета или группы с использованием ключевого слова «ВидРасчета» или «ГруппаРасчетов». Это исключает необходимость использования функции СоздатьОбъект для получения ссылки на соответствующий агрегатный объект.

Англоязычный синоним ключевого слова ВидРасчета — CalculationKind.

Англоязычный синоним ключевого слова ГруппаРасчетов — CalculationGroup.

Пример:

*

// Узнаем, входит ли вид расчета ОплатаПоОкладу

//в группу ОблагаютсяНалогом

Проверка =

    ВидРасчета.ОплатаПоОкладу.ВходитВГруппу(ГруппаРасчетов.ОблагаютсяНалогом);

*

// Выведем наименование вида расчета

Сообщить(ВидРасчета.Доплата.Наименование);

Кроме того, объекты типа «вид расчета» могут сохраняться в базе данных, т. е. реквизиты справочников, документов, журналов расчета могут иметь тип «ВидРасчета» и хранить ссылки на объекты этого типа.

В глобальном контексте программы 1С:Предприятие есть атрибут «ВидРасчета». Этот объект имеет метод ПолучитьАтрибут, который позволяет получить доступ к объекту вида расчета конкретного вида по его имени. Т. е. допустимы следующие синтаксические конструкции:

Проверка =

   ВидРасчета.ОплатаПоОкладу.ВходитВГруппу(ГруппаРасчетов.ОблагаетсяНалогом);

Проверка =

   ВидРасчета.ПолучитьАтрибут("ОплатаПоОкладу").

                  ВходитВГруппу(ГруппаРасчетов.ОблагаютсяНалогом);

Атрибуты видов расчета и групп видов расчета

Код

Код вида расчета или группы видов расчета.

Синтаксис:

Код

ААнглоязычный синоним:

Code

Описание:

Атрибут типа «строка».

Представляет собой строку, соответствующую идентификатору, заданному при конфигурировании.

Пример:

ВРО1 = ВидРасчета.ПоОкладу;

ВР02 = ВидРасчета.АмортизацияС_НДС;

Группа = ГруппаРасчетов.ОблагаютсяНалогом;

Сообщить(ВРО1.Код);

Сообщить(ВР02.Код);

Сообщить(Группа.Код);

См. также: Наименование

Наименование

Наименование группы видов расчета или вида расчета.

Синтаксис:

Наименование

Англоязычный синоним:

Descriptor

Описание:

Атрибут типа «строка». Представляет собой строку, соответствующую комментарию, заданному при конфигурировании.

Пример:

ВР01 = ВидРасчета.ПоОкладу;

ВРО2 = Вид Расчета.АмортизацияС_НДС;

Группа = ГруппаРасчетов.ОблагаютсяНалогом;

Сообщить("Это расчет " + ВР01.Наименование);

Сообщить(ВР02.Наименование + " " + ВР02.Код);

Сообщить(Строка(Группа.Наименование));

См. также: Наименование

Атрибуты видов расчета

Очередность

Очередность вида расчета.

Синтаксис:

Очередность

Англоязычный синоним:

Priority

Описание:

Атрибут типа «число». Представляет собой число, соответствующее очередности вида расчета, заданной при конфигурировании.

Понятие очередности используется для упорядочивания записей журнала расчетов. Это помогает упорядочить расчет записей, тем самым выполняя, например, расчет всех начислений раньше, чем расчет базирующихся на них удержаний.

Пример:

ВР01 = ВидРасчета.ПоОкладу;

Сообщить("Это расчет "+ВР01.Наименование+"с очередностью "+ВРО1.Очередность);

См. также: ПриоритетВытеснения

ПриоритетВытеснения

Приоритет вытеснения вида расчета.

Синтаксис:

ПриоритетВытеснения

Англоязычный синоним:

ReplacePriority

Описание:

Атрибут типа «число». Представляет собой число, соответствующее приоритету вытеснения вида расчета, заданному при конфигурировании. Система использует приоритет вытеснения при разрешении ситуации, когда полностью или частично пересекаются периоды действия видов расчета. Например, когда метод журнала расчетов ВвестиРасчет вводит расчет в «занятый» временной интервал.

Для невытесняющих видов расчета значение этого атрибута равно нулю.

Замечание. Атрибут сохранен для поддержания совместимости с предыдущими версиями программы. Вместо использования данного атрибута рекомендуется использовать методы ВытесняетВидРасчета и ВытесняетсяВидомРасчета.

Пример:

*

ВР01 = ВидРасчета.ПоОкладу;

Сообщить("Это расчет "+ВР01.Наименование+" с очередностью "+ВР01.Очередность);

*

Процедура ПровестиДокумент()

   ЖрнЗарплата.ВыбратьЗаписиПоОбъекту(Сотрудник, Начало, Окончание};

   Можно = 1;

   Пока ЖрнЗарплата.ПолучитьЗапись() > 0 Цикл

      Если ЖрнЗарплата.ВидРасч.ПриоритетВытеснения >=

           ВидРасчета.ОплатаБЛ.ПриоритетВытеснения Тогда

         Можно = 0;

      КонецЕсли;

   КонецЦикла;

   Если Начало > Окончание Тогда

      Можно = 0;

   КонецЕсли;

   Если Можно = 1 Тогда

      ЖрнЗарплата.ВвестиРасчет(Сотрудник, ВидРасчета.ОплатаБЛ, Начало,

                    Окончание, 0);

      Если Начало < ЖрнЗарплата.НачалоТекущегоПериода() Тогда

         Перерасчет(ГруппаРасчетов.ПересчДляБЛ, Сотрудник, ТекущийДокумент(),

                     Начало, Окончание);

      КонецЕсли;

   Иначе

      Предупреждение("Некорректный больничный лист!

                | Проверьте и исправьте даты начала и окончания.

                | После этого закройте документ, повторно откройте

                | и проведите его");

      НеПроводитьДокумент();

   КонецЕсли;

КонецПроцедуры

См. также: методы журнала расчетов ВвестиРасчет, ЗаписатьРасчет

Методы видов расчета

ПолучитьАтрибут

Получить доступ к объекту вида расчета конкретного вида по его имени.

Синтаксис:

ПолучитьАтрибут(<ИмяВидаРасчета>)

Англоязычный синоним:

GetAttrib

Параметры:

<ИмяВидаРасчета>

Строковое выражение, содержащее идентификатор вида расчета, как он задан в конфигураторе.

Возвращаемое значение:

Объект вид расчета.

Описание:

Метод ПолучитьАтрибут позволяет получить доступ к объекту вида расчета конкретного вида по его имени, как оно задано в конфигураторе.

Этот метод применяется только к объекту глобально контекста ВидРасчета.

Пример:

Начисл = ВидРасчета.ПолучитьАтрибут("Начисления");

ВходитВГруппу

Определяет входимость вида расчетов в группу видов расчета.

Синтаксис:

ВходитВГруппу(<Группа>)

Англоязычный синоним:

BelongsToGroup

Параметры:

<Группа>

Группа расчетов, входимость в которую проверяется.

Возвращаемое значение:

Число: 1 — если вид расчета входит в группу <Группа>; 0 в противном случае.

Описание:

Этот метод предназначен для определения входимости вида расчета в конкретную группу расчетов.

Пример:

*

// В журнале расчетов зарплаты посчитаем все начисления

// для текущего сотрудника

ЖР = СоздатьОбъект("ЖурналРасчетов.Зарплата");

// Начало и конец текущего периода журнала

НТП = ЖР.НачалоТекущегоПериода();

КТП = ЖР.КонецТекущегоПериода();

Группа = Группа.ВсеНачисления;

Всего = 0;

ЖР.ВыбратьЗаписиПоОбъекту(Объект, НТП, КТП);

Пока ЖР.ПолучитьЗапись() = 1 Цикл

   Если (ЖР.ВидРасч.ВходитВГруппу(Группа)=1) Тогда

      Всего = Всего + ЖР.Результат;

   КонецЕсли;

КонецЦикла;

// ...

*

Пока ЖрнЗарплата.ПолучитьЗапись() > 0 Цикл

   Если ЖрнЗарплата.ВидРасч = ВидРасчета.РайонныйКоэФйициент Тогда

      СуммаРайонн = СуммаРайонн + ЖрнЗарплата.Результат;

   КонецЕсли;

   Если ЖрнЗарплата.ВидРасч = ВидРасчета.СевернаяНадбавка Тогда

      СуммаСеверн = СуммаСеверн + ЖрнЗарплата.Результат;

   КонецЕсли;

   Если ЖрнЗарплата.ВидРасч.ВходитВГруппу(Группа) = 1 Тогда

      Сумма = Сумма + ЖрнЗарплата.Результат;

      Если ТипРасчета = 1 Тогда

         Дней = Дней + КалендОтп.Дней(ЖрнЗарплата.ДатаНачала,

                                      ЖрнЗарплата.ДатаОкончания);

      Иначе

         Дней = Дней + ЖрнЗарплата.Дни;

      КонецЕсли;

   КонецЕсли;

КонецЦикла;

См. также: СодержитВидРасчета

Выбран

Возвращает признак того, выбран конкретный вид расчета или нет.

Синтаксис:

Выбран()

Англоязычный синоним:

Selected

Возвращаемое значение:

Число: 1 — если конкретный вид расчета выбран; 0 в противном случае.

Описание:

Этот метод предназначен для определения, не является ли «пустым» значение переменной или реквизита типа «ВидРасчета».

Вид расчета (в отличие от группы расчетов, например) в рамках описываемого встроенного языка — сохраняемый агрегатный тип данных, т. е. объекты этого типа могут сохраняться в информационной базе. Например, реквизиты справочника, документа или журнала расчетов, могут иметь тип «ВидРасчета» и, следовательно, хранить ссылки на конкретные виды расчетов. При этом часто необходимо иметь возможность определить выбрано ли конкретное значение для реквизита (например, справочника или документа) этого типа.

Пример:

// Допл — объект типа "группа расчетов"

Допл = ГруппаРасчетов.Доплаты;

ЖЗ = СоздатьОбъект("ЖурналРасчетов.Зарплата");

// Док — ссылка на документ, имеющий реквизит Сотрудник

ЖЗ.ВыбратьЗаписиПоОбъекту(Док.Сотрудник);

Пока ЖЗ.ПолучитьЗапись() = 1 Цикл

   Если ЖЗ.ВидРасч.ВходитВГРуппу(Допл) = 1 Тогда

      // предполагается, что документы-основания этих

      // видов расчета имеют реквизит ВР

      Если ЖЗ.Документ.ВР.Выбран() = 0 Тогда

         Сообщить("Не указан конкретный вид расчета в документе!");

      КонецЕсли;

   КонецЕсли;

КонецЦикла;

ВытесняетВидРасчета

Определяет, вытесняет ли данный вид расчета, заданный в качестве параметра.

Синтаксис:

ВытесняетВидРасчета(<ВидРасчета>)

Англоязычный синоним:

DisplaceCalc

Параметры:

<ВидРасчета>

Вид расчета, для которого проверяется, вытесняется ли он текущим видом расчета.

Возвращаемое значение:

Число: 1 — если вид расчета, метод которого вызывается, вытесняет заданный в качестве параметра <ВидРасчета>; 0 в противном случае.

Описание:

Метод предназначен для определения взаимного влияния видов расчета при вводе их в журнал расчетов.

Пример:

// ВР — реквизит документа типа "вид расчета",

// тогда при проведении документа

// Сотр — реквизит документа типа "элемент справочника Сотрудники".

// ДтНач, ДтОконч — реквизиты документа типа "дата"

ЖР = СоздатьОбъект("ЖурналРасчетов.Зарплата");

ЖР.ВыбратьПоОбъекту(Сотр, ДтНач, ДтОконч);

Пока ЖР.ПолучитьЗапись() = 1 Цикл

   Если ЖР.ВидРасч.ВытесняетВидРасчета(ВР) = 0 Тогда

      // если нашли вид расчета, который мы не сможем вытеснить

      Сообщить("Невозможно корректное проведение документа");

      СтатусВозврата(0);

      Возврат;

   КонецЕсли;

КонецЦикла;

См. также: ВытесняетсяВидомРасчета

ВытесняетсяВидомРасчета

Определяет, вытесняется ли текущий вид расчета заданным видом расчета.

Синтаксис:

ВытесняетсяВидомРасчета(<ВидРасчета>)

Англоязычный синоним:

DisplaceByCalc

Параметры:

<ВидРасчета>

Вид расчета, для которого проверяется, вытесняет ли он текущий вид расчета.

Возвращаемое значение:

Число: 1 — если вид расчета, метод которого вызывается, вытесняется видом расчета, заданным в качестве параметра <ВидРасчета>; 0 в противном случае.

Описание:

Метод предназначен для определения взаимного влияния видов расчета при вводе их в журнал расчетов.

См. также: ВытесняетВидРасчета

Методы групп видов расчета

СодержитВидРасчета

Определяет, содержит ли группа вид расчета.

Синтаксис:

СодержитВидРасчета(<ВидРасчета>)

Англоязычный синоним:

ContainCalculationKind

Параметры:

<ВидРасчета>

Вид расчета, входимость которого проверяется.

Возвращаемое значение:

Число: 1 — если <ВидРасчета> входит в группу; 0 в противном случае.

Описание:

Метод предназначен для определения того, содержит ли группа заданный вид расчета.

Пример:

Входит = ГруппаРасчетов.ОблНалогом.СодержитВидРасчета(ЖР.ВидРасч);

См. также: ВходитВГруппу

Количество

Количество видов расчета, включенных в группу видов расчета.

Синтаксис:

Количество()

Англоязычный синоним:

Count

Возвращаемое значение:

Целое положительное число — количество видов расчета, входящих в группу.

Описание:

Метод группы видов расчета, который позволяет определить количество видов расчета, включенных в данную группу. Обычно применяется в цикле с методом ПолучитьВидРасчета.

Пример:

// модуль выполняется в контексте журнала расчетов

// текущий сотрудник Сотр = Объект;

// Для всех видов удержаний проведем расчет в

// журнале расчетов зарплаты

ЖР = СоздатьОбъект("ЖурналРасчетов.Зарплата");

ВсеУд = Группа.ВсеУдержания;

Счетчик = 1;

Пока Счетчик <= ВсеУд.Количество() Цикл

   ЖР.ВвестиРасчет(Сотр, ВсеУд.ПолучитьВидРасчета(Счетчик));

   Счетчик = Счетчик + 1;

КонецЦикла;

См. также: ПолучитьВидРасчета

ПолучитьРасчет

Получает ссылку на вид расчета.

Синтаксис:

ПолучитьРасчет(<Номер>)

Англоязычный синоним:

GetCalculation

Параметры:

<Номер>

Номер вида расчета в списке видов расчета данной группы.

Возвращаемое значение:

Агрегатный объект типа «Вид Расчета».

Описание:

Метод позволяет получить ссылку на вид расчета, входящий в данную группу под определенным номером. Обычно применяется в цикле с методом Количество.

Пример:

См. предыдущий пример.

См. также: Количество


Part24

Глава 24
Работа с Правилами перерасчета

«Правила перерасчета» являются вспомогательными объектами метаданных компоненты «Расчет». Они предназначены для автоматического отслеживания актуальности результатов проведенных расчетов при вводе новых записей журнала расчетов.

При создании правила перерасчета в конфигураторе определяются виды расчетов, при редактировании которых правило перерасчета «срабатывает», и виды расчетов, которые должны быть перерасчитаны при срабатывании данного правила.

Список видов расчета, на основании которых срабатывает правило перерасчета условно называется «ведущие виды расчета». Список видов расчета, которые должны быть перерасчитаны при срабатывании данного правила условно называется «зависимые виды расчета».

Для организации правильного перерасчета доплат следует в качестве ведущих видов расчета указать те, на основании которых считаются доплаты (например: оклад, тариф, сдельная оплата), а в качестве зависимых видов расчета следует указать собственно перерасчитываемые доплаты.

После ввода в систему такого правила перерасчетов журнал расчетов будет вести себя описанным ниже образом. При этом сначала рассмотрим случай для взаимосвязи видов расчета в одном периоде.

Итак, если в журнале расчетов появится новая (в результате проведения документа), исчезнет (при отмене проведения) или будет исправлена существующая запись с одним из «ведущих» видов расчета (в нашем примере оклад, тариф, сдельная оплата), то будет снят признак «Рассчитана» со всех записей, соответствующих доплатам, если найдутся таковые с тем же периодом действия, что и введенная, удаленная или исправленная запись.

Если при этом вводится запись с периодом действия не в текущем расчетном периоде, а в одном из прошлых (например, расчет оклада задним числом за прошлый месяц), то система введет записи-перерасчеты для всех доплат соответствующего прошлого периода.

Правило перерасчета может быть двух типов: перерасчет «по текущему периоду» или «по будущим периодам».

В первом случае перерасчитываются заданные виды расчетов с тем же периодом действия, что и новая введенная запись. Во втором — перерасчитываются записи одного или нескольких будущих расчетных периодов.

Контекст работы с правилами перерасчета

Средства языка предоставляют возможность непосредственного доступа к атрибутам и методам правил перерасчета, объявленных в конфигураторе, в любом программном модуле (все объявленные в конфигураторе правила перерасчета принадлежат глобальному контексту конфигурации). Во всех текстах программных модулей для доступа к атрибутам или вызова методов правил перерасчета можно записать соответствующий метод или атрибут через точку после полного имени правила перерасчета.

Полное имя правила перерасчета записывается следующим образом:

ПравилоПерерасчета.<ХХХХХ>,

где <ХХХХХ> — идентификатор Правила Перерасчета, объявленный в конфигураторе.

Англоязычный синоним ключевого слова ПравилоПерерасчета — RecalculationRule.

Пример:

КолПериодов = ПравилоПерерасчета.Главное.КоличествоПериодов;

ВР = ВидРасчета.ПоОкладу;

ЗависитОтОклада = ПравилоПерерасчета.ПересчДоплат.ИмеетВедущий(ВР);

Атрибуты правил перерасчета

Тип

Тип правила перерасчета.

Синтаксис:

Тип

Англоязычный синоним:

Type

Описание:

Атрибут Тип позволяет прочитать/установить значение типа правила перерасчета. Данный атрибут может принимать следующие значения:

· 0 — зависимые виды расчетов должны быть перерасчитаны в том же периоде, что и вводимая запись журнала расчетов;

· 1 — зависимые виды расчетов должны быть перерасчитаны в нескольких периодах, следующих за периодом действия вводимой записи журнала расчетов (количество периодов задано атрибутом КоличествоПериодов).

Пример:

Тип = ПравилоПерерасчета.Главное.Тип;

КоличествоПериодов

Количество перерасчитываемых периодов для правила перерасчета.

Синтаксис:

КоличествоПериодов

Англоязычный синоним:

NumberOfPeriods

Описание:

Атрибут КоличествоПериодов позволяет прочитать/установить количество периодов перерасчета.

Пример:

КолПер = ПравилоПерерасчета.Главное.КоличествоПериодов;

Методы правил перерасчета

КоличествоВедущих

Возвращает количество «ведущих» видов расчета.

Синтаксис:

КоличествоВедущих()

Англоязычный синоним:

NumberOfLeadings

Возвращаемое значение:

Количество «ведущих» видов расчета.

Описание:

Метод КоличествоВедущих возвращает количество «ведущих» видов расчета (при вводе которых в журнал расчетов необходимо произвести перерасчеты согласно данного правила).

Пример:

// выведем все виды расчета от которых зависят доплаты

Для Сч = 1 По ПравилоПерерасчета.Доплаты.КоличествоВедущих() Цикл

   Сообщить(ПравилоПерерасчета.Доплаты.ПолучитьВедущий(Сч));

КонецЦикла;

ИмеетВедущий

Установить принадлежность вида расчета к ведущим для правила перерасчета.

Синтаксис:

ИмеетВедущий(<ВидРасчета>)

Англоязычный синоним:

HasLeading

Параметры:

<ВидРасчета>

Вид расчета.

Возвращаемое значение:

Число: 1, если данное правило перерасчета имеет заданный вид расчета в качестве ведущего (т. е. при вводе этого вида расчета в журнал расчетов сработает данное правило перерасчета); 0, если данное правило перерасчета не имеет заданный вид расчета в качестве ведущего.

Описание:

Метод ИмеетВедущий позволяет установить принадлежность вида расчета к ведущим для правила перерасчета.

Пример:

// зависит ли доплата от премии?

Зависит = ПравилоПерерасчета.Доплаты.ИмеетВедущий(ВидРасчета.Премия);

ПолучитьВедущий

Возвращает вид расчета из списка «ведущих» расчетов.

Синтаксис:

ПолучитьВедущий(<НомерВР>)

Англоязычный синоним:

GetLeading

Параметры:

<НомерВР>

Числовое выражение — номер вида расчета в списке «ведущих» расчетов.

Возвращаемое значение:

Вид расчета с номером <НомерВР> из списка «ведущих» расчетов.

Описание:

Метод ПолучитьВедущий возвращает вид расчета с номером <НомерВР> из списка «ведущих» расчетов.

Пример:

ВидВедРасч = ПравилоПерерасчета.Доплаты.ПолучитьВедущий(Инд);

ДобавитьКакВедущий

Добавляет вид расчета в список «ведущих».

Синтаксис:

ДобавитьКакВедущий(<ВидРасчета>)

Англоязычный синоним:

AddAsLeading

Параметры:

<ВидРасчета>

Вид расчета.

Описание:

Метод ДобавитьКакВедущий добавляет <ВидРасчета> в список «ведущих».

Пример:

ПравилоПерерасчета.Доплаты.ДобавитьКакВедущий(ВидРасчета.Премия);

УдалитьВсеВедущие

Удаляет все виды расчета из списка «ведущих».

Синтаксис:

УдалитьВсеВедущие()

Англоязычный синоним:

DeleteAlILeadings

Описание:

Метод УдалитьВсеВедущие удаляет все виды расчета из списка «ведущих».

Пример:

ПравилоПерерасчета.Доплаты.УдалитьВсеВедущие();

КоличествоПодчиненных

Возвращает количество «подчиненных» видов расчета.

Синтаксис:

КоличествоПодчиненных()

Англоязычный синоним:

NumberOfDependents

Возвращаемое значение:

Количество «подчиненных» видов расчета.

Описание:

Метод КоличествоПодчиненных возвращает количество «подчиненных» видов расчета (для которых необходимо произвести перерасчеты согласно данного правила).

Пример:

Колич = ПравилоПерерасчета.Доплаты.КоличествоПодчиненных();

ИмеетПодчиненный

Установить принадлежность вида расчета к «подчиненным» для правила перерасчета.

Синтаксис:

ИмеетПодчиненный(<ВидРасчета>)

Англоязычный синоним:

HasDependent

Параметры:

<ВидРасчета>

Вид расчета.

Возвращаемое значение:

Число: 1, если данное правило перерасчета имеет заданный вид расчета в качестве подчиненного (т. е. для этого вида расчета в журнале расчетов сработает данное правило перерасчета); 0, если данное правило перерасчета не имеет заданный вид расчета в качестве подчиненного.

Описание:

Метод ИмеетПодчиненный позволяет установить принадлежность вида расчета к подчиненным для правила перерасчета.

Пример:

Подч = ПравилоПерерасчета.Доплаты.ИмеетПодчиненный(ВидРасчета.Премия);

ПолучитьПодчиненный

Возвращает вид расчета из списка «подчиненных» расчетов.

Синтаксис:

ПолучитьПодчиненный(<НомерВР>)

Англоязычный синоним:

GetDependent

Параметры:

<НомерВР>

Числовое выражение — номер вида расчета в списке «подчиненных» расчетов.

Возвращаемое значение:

Вид расчета с номером <НомерВР> из списка «подчиненных» расчетов.

Описание:

Метод ПолучитьПодчиненный возвращает вид расчета с номером <НомерВР> из списка «подчиненных» расчетов.

Пример:

ВидПодчРасч = ПравилоПерерасчета.Доплаты.ПолучитьПодчиненный(Инд);

ДобавитьКакПодчиненный

Добавляет вид расчета в список «подчиненных».

Синтаксис:

ДобавитьКакПодчиненный(<ВидРасчета>)

Англоязычный синоним:

AddAsDependent

Параметры:

<ВидРасчета>

Вид расчета.

Описание:

Метод ДобавитьКакПодчиненный добавляет <ВидРасчета> в список «подчиненных».

Пример:

ПравилоПерерасчета.Доплаты.ДобавитьКакПодчиненный(ВидРасчета.Премия);

УдалитьВсеПодчиненные

Удаляет все виды расчета из списка «подчиненных».

Синтаксис:

УдалитьВсеПодчиненные()

Англоязычный синоним:

DeleteAllDependents

Описание:

Метод УдалитьВсеПодчиненные удаляет все виды расчета из списка «подчиненных».

Пример:

ПравилоПерерасчета.Доплаты.УдалитьВсеПодчиненные();

Применять

Устанавливает необходимость применять или не применять все правила перерасчетов при вводе новых записей в журнал расчетов.

Синтаксис:

Применять(<ФлагПрименения>)

Англоязычный синоним:

Use

Параметры:

<ФлагПрименения>

Число: 1 — применять; 0 — не применять.

Возвращаемое значение:

Текущее значение флага применения (до исполнения метода).

Описание:

Метод Применять устанавливает необходимость применять или не применять все заданные в конфигурации правила перерасчетов при изменении состава или исправлении записей журнала расчетов.

Пример:

ПравилоПерерасчета.Применять(1);


Part25

Глава 25
Работа с Календарями и Праздниками

Объект Календарь в системе 1С:Предприятие предназначен для вычисления временных интервалов на основании произвольных временных графиков. Этот объект может использоваться, например, для учета графика работы предприятия, графика работы внешних организаций, графика учета рабочего времени тех или иных работников предприятия и пр.

Календарь представляет собой объект, который устанавливает для каждой календарной даты некоторое числовое значение, которое может интерпретироваться при работе программы тем или иным образом. Например, в календаре, представляющем собой график работы организации или предприятия, каждому рабочему дню может соответствовать единица, а каждому выходному — ноль. В календаре учета рабочего времени сотрудников предприятия, каждой дате календаря может соответствовать число — продолжительность рабочего дня в часах и т. д.

В глобальном контексте программы 1С:Предприятие есть атрибут "Календари". Этот объект в качестве своих атрибутов имеет значения объектов конкретных видов календарей, заданных в конфигурации. Кроме того, этот объект имеет метод ПолучитьАтрибут, который позволяет получить доступ к объекту календаря конкретного вида по его имени. Т.е. допустимы следующие синтаксические конструкции:

Календари.Служащие.Дней(ТекДата, ТекДата + 5);

Календари.ПолучитьАтрибут("Служащие").Дней(ТекДата, ТекДата + 5);

Праздники в системе 1С:Предприятие представляет собой объект похожий на календарь, но он заполняется выборочно (не все даты подряд) и в нем могут вводиться и удаляться строки для определенных дат. Данный объект используются как набор исключений при заполнении календарей (см. метод календаря УчитыватьПраздники).

Контекст работы с календарями

Доступ к атрибутам и методам календарей осуществляется, например, через объект, созданный системной функцией СоздатьОбъект с ключевым словом

"Календарь".

Англоязычный синоним ключевого слова "Календарь" — "Calendar".

Пример:

// Рассчитать продолжительность месяца в часах по календарю "Служащие"

Календ = СоздатьОбъект("Календарь.Служащие");

Час = Календ.Часов('01.01.96', '31.01.96');

// Рассчитать продолжительность текущего расчетного

// периода журнала расчетов Зарплата по календарю Служащие

Календ = СоздатьОбъект("Календарь.Служащие");

ЖР = СоздатьОбъект("ЖурналРасчетов.Зарплата");

Час = Календ.Часов(ЖР.НачалоТекущегоПериода(), ЖР.КонецТекущегоПериода());

Кроме того, объекты типа «календарь» являются сохраняемыми, т. е. реквизиты справочников, документов, журналов расчета могут иметь тип «календарь» и хранить ссылки на объекты этого типа.

Пример:

Процедура ПровестиРасчет()

   // ВнСовместитель — реквизит журнала расчетов

   // Категории — периодический реквизит справочника ВнутренниеСовместители

   // Календарь — реквизит справочника Категории

   Календ = ВнСовместитель.Категория.Получить(ДатаОкончания).Календарь;

   // размер оклада

   Оклад = ВнСовместитель.Оклад.Получить(ДатаОкончания) *

                       ВнСовместитель.Ставка.Получить(ДатаОкончания);

   Дней = Календ.Дней(ДатаНачала, ДатаОкончания);

   ВсегоДней = Календ.Дней(НачалоПериодаПоДате(ДатаНачала),

                           КонецПериодаПоДате(ДатаНачала));

   Если ВсегоДней > 0 Тогда

      Если Документ.Вид() = "НачалоМесяца" Тогда

         Результат = Окр(Оклад * Дней / ВсегоДней);

      Иначе

         Результат = -Окр(Оклад*Дней/ВсегоДней);

      КонецЕсли;

   Иначе

      Результат = 0;

      Сообщить("Неправильно указан календарь (" + Объект.Наименование + ")");

      Сообщить("Возможно, не задана категория работника");

   КонецЕсли;

КонецПроцедуры

Контекст работы с праздниками

Доступ к атрибутам и методам праздников осуществляется через объект, создаваемый системной функцией СоздатьОбъект с ключевым словом "Праздники".

Англоязычный синоним ключевого слова "Праздники" — "Holidays".

Атрибуты и методы объекта Календари

<ИмяКалендаря>

Установить значение календаря конкретного вида.

Синтаксис:

<ИмяКалендаря>

Описание:

Атрибут <ИмяКалендаря> задает значение календаря конкретного вида. В тексте программного модуля используется название конкретного вида календаря, как он назван в конфигураторе.

Пример:

Календари.Служащие.Дней(ТекДата, ТекДата + 5);

ПолучитьАтрибут

Получить значение объекта конкретного вида календаря по идентификатору.

Синтаксис:

ПолучитьАтрибут(<ИмяАтрибута>)

Англоязычный синоним:

GetAttrib

Параметры:

<ИмяАтрибута>

Строковое выражение, содержащее имя конкретного вида календаря, как оно задано в конфигураторе.

Возвращаемое значение:

Значение атрибута <ИмяАтрибута >.

Описание:

Метод ПолучитьАтрибут позволяет получить значение объекта конкретного вида календаря по идентификатору, как оно задано в метаданных.

Пример:

Календари.ПолучитьАтрибут("Служащие").Дней(ТекДата, ТекДата - 5);

Атрибуты календарей и праздников

Дата

Дата текущей строки календаря/праздника.

Синтаксис:

Дата

Англоязычный синоним:

Date

Описание:

Атрибут Дата (только для чтения) содержит дату текущей (на которой позиционирована выборка) строки календаря/праздника.

Значение

Значение текущей строки календаря/праздника

Синтаксис:

Значение

Англоязычный синоним:

Value

Описание:

Атрибут Значение (доступно чтание и запись) содержит значение текущей (на которой позиционирована выборка) строки календаря/праздника — число с двумя знаками после запятой.

Общие методы календарей и праздников

ПолучитьАтрибут

Получить значение атрибута по идентификатору.

Синтаксис:

ПолучитьАтрибут(<ИмяАтрибута>}

Англоязычный синоним:

GetAttrib

Параметры:

<ИмяАтрибута>

Строковое выражение, содержащее имя атрибута, как оно задано в конфигураторе.

Возвращаемое значение:

Значение атрибута <ИмяАтрибута >.

Описание:

Метод ПолучитьАтрибут позволяет получить значение атрибута по идентификатору, как оно задано в метаданных. Доступные имена атрибутов — "Дата" и "Значение".

Пример:

// Календарь служащих

Календ = СоздатьОбъект("Календарь.Служащие");

Календ.ВыбратьДаты(ДатаНачала, ДатаОкончания);

Пока Календ.СледующаяДата() = 1 Цикл

   Сообщить("" + Календ.ПолучитьАтрибут("Дата") + "; ");

   // ...

КонецЦикла;

УстановитьАтрибут

Установить значение атрибута по имени идентификатора.

Синтаксис:

УстановитьАтрибут(<ИмяРеквизита>, <Значение>)

Англоязычный синоним:

SetAttrib

Параметры:

<ИмяРеквизита> | Строковое выражение, содержащее имя атрибута, как оно задано в конфигураторе.
<Значение> | Выражение, содержащее устанавливаемое значение атрибута.

Описание:

Метод УстановитьАтрибут позволяет установить значение атрибута по имени идентификатора, как оно задано в конфигураторе. Доступные имена атрибутов — "Дата" и "Значение".

Пример:

// Календарь служащих

Календ = СоздатьОбъект("Календарь.Служащие");

Календ.ВыбратьДаты(ДатаНачала, ДатаОкончания);

Пока Календ.СледующаяДата() = 1 Цикл

   Календ.УстановитьАтрибут("Значение", 1);

   // ...

КонецЦикла;

Методы календарей

Выбран

Возвращает признак того, выбран конкретный календарь или нет.

Синтаксис:

Выбран()

Англоязычный синоним:

Selected

Возвращаемое значение:

Число: 1, если конкретный календарь выбран; 0 в противном случае.

Описание:

Этот метод предназначен для определения, не является ли «пустым» значение переменной или реквизита типа «Календарь».

Календарь в рамках описываемого встроенного языка — сохраняемый агрегатный тип данных, т. е. объекты этого типа могут сохраняться в информацион-йой базе. Например, реквизиты справочника, документа или журнала расчетов, Могут иметь тип «Календарь» и, следовательно, хранить ссылки на конкретные календари. При этом часто необходимо иметь возможность определить выбрано ли конкретное значение для реквизита (например, справочника или документа) этого типа.

Пример:

// реквизит справочника Календ имеет тип "Календарь"

Спр = СоздатьОбъект("Справочник.Категории");

Спр.ВыбратьЭлементы();

Пока Спр.ПолучитьЭлемент() = 1 Цикл

   Если Спр.Календ.Выбран() = 0 Тогда

      Сообщить("Не указан конкретный календарь! ");

   КонецЕсли;

КонецЦикла;

ВыбратьДаты

Открывает выборку записей календаря.

Синтаксис:

ВыбратьДаты(<ДатаНачала>, <ДатаОкончания>)

Англоязычный синоним:

SelectDates

Параметры:

<ДатаНачала> | Дата начала периода выборки.
<ДатаОкончания> | Дата окончания периода выборки.

Возвращаемое значение:

Число: 1 — выборка открыта и в ней есть хоть одна запись; 0 — не обнаружено записей.

Описание:

Метод ВыбратьДаты открывает выборку записей календаря. Выбираются все элементы с даты начала по дату окончания включительно.

Пример:

// Календарь служащих

Календ = СоздатьОбъект("Календарь.Служащие");

Календ.ВыбратьДаты(ДатаНачала, ДатаОкончания);

Пока Календ.СледующаяДата() = 1 Цикл

   // ...

КонецЦикла;

См. также: СледующаяДата

СледующаяДата

Выбирает следующий день календаря в выборке.

Синтаксис:

СледующаяДата()

Англоязычный синоним:

NextDate

Возвращаемое значение:

Число: 1 — получена очередна язапись; 0 — не обнаружено очередной записи, т. е. конец выборки.

Описание:

Выбирает следующий день календаря (позиционируется на очередной записи выборки) в порядге дат.

Пример:

// Календарь служащих

Календ = СоздатьОбъект("Календарь.Служащие");

Календ.ВыбратьДаты(ДатаНачала, ДатаОкончания);

Пока Календ.СледующаяДата() = 1 Цикл

   //. . .

КонецЦикла;

См. также: ВыбратьДаты

Дней

Получить количество «ненулевых» дней за период.

Синтаксис:

Дней(<ДатаНачала>, <ДатаОкончания>)

Англоязычный синоним:

Days

Параметры:

<ДатаНачала> | Дата начала периода, в котором определяется количество дней.
<ДатаОкончания> | Дата окончания периода, в котором определяется количество дней.

Возвращаемое значение:

Целое положительное число — количество дней.

Описание:

Метод предназначен для определения количества календарных дней, которым соответствует ненулевое числовое значение. <ДатаНачала> и <ДатаОкончания> включаются в рассматриваемый период. Следовательно, если даты начала и окончания совпадают, метод возвратит ноль или единицу в зависимости от значения числа, соответствующего заданной дате. Если <ДaтaHaчaлa> больше, чем <ДатаОкончания>, будет выведено сообщение об ошибке.

Пример:

// Расчет оплаты по окладу

// Календарь служащих

Календ = СоздатьОбъект("Календарь.Служащие");

// отработал...

Дни = Календ.Дней(ДатаНачала, ДатаОкончания);

// должен был бы работать...

Норма = Календ.Дней(НачалоПериодаПоДате(ДатаНачала),

                    КонецПериодаПоДате(ДатаНачала));

// получим оклад сотрудника на дату начала

// действия данного расчета

Оклад = Объект.Оклад.Получить(ДатаНачала);

// результат

Результат = Дни * Оклад / Норма;

См. также: Часов

Часов

Получить сумму числовых значений дней за определенный период.

Синтаксис:

Часов(<ДатаНачала>, <ДатаОкончания>)

Англоязычный синоним:

Hours

Параметры:

<ДатаНачала> | Дата начала периода, в котором определяется сумма числовых значений, интерпретируемая как количество часов.
<ДатаОкончания> | Дата окончания периода, в котором определяется сумма числовых значений, интерпретируемая как количество часов.

Возвращаемое значение:

Положительное число — сумма числовых значений соответствующих тем дням календаря, которые попадают в заданный период.

Описание:

Метод предназначен для суммирования числовых значений по календарю за промежуток времени с даты начала по дату окончания. Метод удобен при интерпретации числовых значений календаря как продолжительности рабочих дней в часах (что отражается в названии метода). <ДатаНачала> и <ДатаОкончания> включаются в рассматриваемый период. Если <ДатаНачала> больше, чем <ДатаОкончания>, будет выведено сообщение об ошибке.

Пример:

// Расчет оплаты по часовому тарифу

// Календарь рабочих

Календ = СоздатьОбъект("Календарь.Рабочие");

// отработал...

Чс = Календ.Часов(ДатаНачала, ДатаОкончания);

// должен был бы работать...

Норма = Календ.Часов(НачалоПериодаПоДате(ДатаНачала),

                     КонецПериодаПоДате(ДатаНачала));

// получим тариф сотрудника на дату начала действия данного расчета

Тариф = Объект.Тариф.Получить(ДатаНачала);

// результат

Результат = Чс * Тариф / Норма;

См. также: Дней

Автозаполнение

Выполняет автозаполнение календаря в заданном периоде.

Синтаксис:

Автозаполнение(<ДатаНачала>, <ДатаОкончания>)

Англоязычный синоним:

Autolayout

Параметры:

<ДатаНачала> | Дата начала периода автозаполнения.
<ДатаОкончания> | Дата окончания периода автозаполнения.

Возвращаемое значение:

Число: 1 — получилось; 0 — не получилось.

Описание:

Метод Автозаполнение выполняет автозаполнение календаря в заданном периоде. При этом старые данные (в т.ч. «ручные» исправления) в указанном периоде пропадают.

Пример:

// Календарь служащих

Календ = СоздатьОбъект("Календарь.Служащие");

Календ.УчитыватьПраздники(1);

Результат = Календ.Автозаполнение(ДатаНачала, ДатаОкончания);

См. также: УчитыватьПраздники

УчитыватьПраздники

Установка флага учета праздников при автозаполнении.

Синтаксис:

УчитыватьПраздники(<Флаг>)

Англоязычный синоним:

UseHolidays

Параметры:

<Флаг>

Необязательный параметр. Число: 1 — учитываются праздники при автозаполнении; 0 — не учитываются праздники при автозаполнении.

Возвращаемое значение:

Возвращает текущую установку. Число: 1 — учитываются праздники при автозаполнении; 0 — не учитываются праздники при автозаполнении.

Описание:

Метод УчитыватьПраздники выполняет установку флага учета праздников при автозаполнении.

Пример:

// Календарь служащих

Календ = СоздатьОбъект("Календарь.Служащие");

Календ.УчитыватьПраздники(1);

Результат = Календ.Автозаполнение(ДатаНачала, ДатаОкончания);

См. также: Автозаполнение

ПолучитьДату

Получить дату календаря.

Синтаксис:

ПолучитьДату(<ДатаНачала>, <Количество>)

Англоязычный синоним:

GetDate

Параметры:

<ДатаНачала> | Дата начала периода, от которой будут отсчитываться дни.
<Количество> | Количество дней, отсчитываемых от <ДатаНачала>.

Возвращаемое значение:

Значение типа «дата».

Описание:

Метод предназначен для определения даты, отстоящей от заданной даты на известное количество дней. В отличие от простого прибавления числа к дате, результатом которого является дата, смещенная на заданное количество дней, данный метод календаря производит определение итоговой даты, пропуская дни календаря, для которых задано нулевое значение. Это значит, например, что если в конфигурации присутствует календарь, представляющий собой график работы предприятия, то данный метод позволит легко определить дату, отстоящую от заданной на определенное количество «рабочих» дней (т. е. дней, для которых задано ненулевое числовое значение).

Пример:

Процедура ПровестиДокумент()

   Если Число(Окончание) = 0 Тогда

      // календарь

      Календ = Сотрудник.Категория.Получить(Начало).Календарь;

      // при расчете отпуска, запишем дату его окончания

      Календ = СоздатъОбъект("Календарь.Отпуск");

      Окончание = Календ.ПолучитьДату(Начало, КоличДней);

   КонецЕсли;

   Если Расчет <> ВидРасчета.ОтпускПоУходуЗаРебенком Тогда

      Если Окончание > ЖрнЗарплата.КонецТекущегоПериода() Тогда

         РасчетВперед(ГруппаРасчетов.ПересчДляОтпуска, Сотрудник,

                      ТекущийДокумент());

      КонецЕсли;

      ЖрнЗарплата.ВвестиРасчет(Сотрудник, Расчет, Начало, Окончание, 0);

   Иначе

      ЖрнЗарплата. ВвестиРасчет (Сотрудник, Расчет,

             Максимум(Начало, ЖрнЗарплата.НачалоТекущегоПериода()),

                  Минимум(Окончание, ЖрнЗарплата.КонецТекущегоПериода()), 0);

      Зарегистрировать(Контекст, ТекущийДокумент());

   КонецЕсли;

КонецПроцедуры

Методы праздников

Новый

Ввести новый «праздничный» день.

Синтаксис:

Новый(<Дата>, <Значение>)

Англоязычный синоним:

New

Параметры:

<Дата> | Дата нового праздника.
<Значение> | Положительное число с двумя знаками после запятой (не более 100). Поскольку объект «Праздники», как правило, используется для ввода выходных праздничных дней по календарям, то значение, как правило, задают равным нулю.

Описание:

Метод Новый вводит и записывает новую запись (новый «праздничный» день).

Пример:

// Праздничные дни

Празд = СоздатьОбъект("Праздники");

Празд.Новый('01.05.99', 0)

Удалить

Удаляет «праздничный» день.

Синтаксис:

Удалить(<Дата>)

Англоязычный синоним:

Delete

Параметры:

<Дaтa>

Дата удаляемой строки (праздника).

Описание:

Метод Удалить позволяет удалить существующую запись («праздничный» день). Если строка с такой датой не найдена, то метод ничего не делает. Возвращаемого значения нет.

Пример:

// Праздничные дни

Празд = СоздатьОбъект("Праздники");

Празд.Удалить('01.05.99');

ВыбратьДаты

Открывает выборку записей праздников.

Синтаксис:

ВыбратьДаты(<ДатаНачала>, <ДатаОкончания>)

Англоязычный синоним:

SelectDates

Параметры:

<ДатаНачала> | Дата начала периода выборки.
<ДатаОкончания> | Дата окончания периода выборки.

Возвращаемое значение:

Число: 1 — выборка открыта и в ней есть хоть одна запись; 0 — не обнаружено записей.

Описание:

Метод ВыбратьДаты открывает выборку записей праздников. Выбираются все элементы с даты начала по дату окончания включительно.

Пример:

// Праздничные дни

Празд = СоздатьОбъект("Праздники");

Празд.ВыбратьДаты(ДатаНачала, ДатаОкончания);

Пока Празд.СледующаяДата() = 1 Цикл

   // ...

КонецЦикла;

См. также: СледующаяДата

СледующаяДата

Выбирает следующий день праздников в выборке.

Синтаксис:

СледующаяДата()

Англоязычный синоним:

NextDate

Возвращаемое значение:

Число: 1 — получена очередна язапись; 0 — не обнаружено очередной записи, т. е. конец выборки.

Описание:

Выбирает следующий день праздников (позиционируется на очередной записи выборки) в порядке дат.

Пример:

// Праздничные дни

Празд = СоздатьОбъект("Праздники");

Празд.ВыбратьДаты(ДатаНачала, ДатаОкончания);

Пока Празд.СледующаяДата() = 1 Цикл

   // ...

КонецЦикла;

См. также: ВыбратьДаты


Part26

Глава 26
Работа с последовательностями документов

«Последовательности документов» являются вспомогательными объектами метаданных для компонент «Оперативный учет» и «Бухгалтерский учет». Они предназначены для обеспечения проведения определенных документов в непрерывной хронологической последовательности.

При создании последовательности определяется, какие виды документов входят в данную последовательность, а также виды движений, влияющих на последовательность. Виды движений определяют, какие из изменений итогов будут влиять на необходимость перепроведения документов данной последовательности, то есть итоги каких механизмов учета используются документами данной последовательности при проведении.

Например, для организации правильного списания товаров следует в качестве движения, влияющего на последовательность указать регистр оперативного учета, на котором ведется стоимостной учет товаров или, если учет ведется на бухгалтерских счетах, указать счет, на котором ведется учет товаров. В качестве документов, на проведение которых будет влиять данная последовательность, следует указать те виды документов, которые будут анализировать при проведении указанный регистр или остатки по указанному счету. Например, такими документами могут быть расходные накладные, накладные на передачу на реализацию и т. п.

Подробнее о последовательностях документов следует читать в книге «Руководство по конфигурированию и администрированию».

Контекст работы с последовательностями

Несмотря на то, что механизм отслеживания и восстановления последовательности документов отрабатывает системой автоматически, средства языка предоставляют возможность непосредственного доступа к методам последовательностей. Доступ к методам возможен в любом программном модуле (все объявленные в конфигураторе последовательности принадлежат глобальному контексту конфигурации). Во всех текстах программных модулей вызовы методов последовательностей можно записывать просто через точку после полного имени последовательности. Полное имя последовательности записывается следующим образом:

Последовательность.<ХХХХХ>

где <ХХХХХ> — идентификатор последовательности, объявленный в конфигураторе.

Англоязычный синоним ключевого слова Последовательность — Sequence.

Пример:

Последовательность.УправленческийУчет.Установить(ТекущийДокумент())

Методы последовательностей

ПолучитьПозицию

Получить позицию Границы Последовательности.

Синтаксис:

ПолучитьПозицию()

Англоязычный синоним:

GetPosition

Возвращаемое значение:

32-х символьное строковое значение позиции Границы Последовательности.

Описание:

Метод ПолучитьПозицию возвращает позицию Границы Последовательности.

Пример:

ГП = Последовательность.УправленческийУчет.ПолучитьПозицию();

Получить

Получить строковое представление Границы Последовательности.

Синтаксис:

Получить()

Англоязычный синоним:

Get

Возвращаемое значение:

Строковое представление Границы Последовательности.

Описание:

Метод Получить возвращает строковое представление Границы Последовательности.

Пример:

ПредставлениеГП = Последовательность.УправленческийУчет.Получить();

ПолучитьДокумент

Получить документ Границы Последовательности.

Синтаксис:

ПолучитьДокумент()

Англоязычный синоним:

GetDocument

Возвращаемое значение:

Документ Границы Последовательности.

Описание:

Метод ПолучитьДокумент возвращает документ Границы Последовательности.

Пример:

ПокумГП = Последовательность.УправленческийУчет.ПолучитьДокумент();

ПолучитьДату

Получить дату Границы Последовательности.

Синтаксис:

ПолучитьДату()

Англоязычный синоним:

GetDate

Возвращаемое значение:

Дата Границы Последовательности.

Описание:

Метод ПолучитьДату возвращает дату Границы Последовательности.

Пример:

ДатаГП = Последовательность.УправленческийУчет.ПолучитьДату();

ПолучитьВремя

Получить время Границы Последовательности.

Синтаксис:

ПолучитьВремя(<Часы>, <Минуты>, <Секунды>)

Англоязычный синоним:

GetTime

Параметры:

<Часы> | Идентификатор переменной, в которую метод возвращает строковое значение часа ГП.
<Минуты> | Идентификатор переменной, в которую метод возвращает строковое значение минут ГП.
<Ceкyнды> | Идентификатор переменной, в которую метод возвращает строковое значение секунд ГП.

Возвращаемое значение:

Строковое значение времени Границы Последовательности в виде "ЧЧ.ММ.СС".

Описание:

Метод ПолучитьВремя возвращает время Границы Последовательности.

Пример:

Функция ВремяГП()

   Перем Ч;

   Перем М;

   Перем С;

   ВремяГП = Последовательность.УправленческийУчет.ПолучитьВремя();

   Возврат "Время ГП в " + Ч + " час " + М + " мин. " + С + " с";

КонецФункции

Установить

Установить ГП на новую дату документ или позицию.

Синтаксис:

Установить(<ПоложениеГП>)

Англоязычный синоним:

Set

Параметры:

<ПоложениеГП>

Выражение типа «дата», «документ» или «позиция документа», на который устанавливается ГП.

Описание:

Метод Установить изменяет положение Границы Последовательности на начало даты или документа.

Внимание. Следует особо обратить внимание, что механизм последовательности документов отрабатывает системой автоматически, поэтому метод Установить можно применять только в особых случаях, в основном, чтобы ГП принудительно отодвинуть назад, так как при установке вперед документы не перерасчитываются.

Пример:

Последовательность.УправленческийУчет.Установить(ТекущийДокумент());

Сравнить

Сравнить ГП с датой, документом или позицией.

Синтаксис:

Сравнить(<Докум>)

Англоязычный синоним:

Compare

Параметры:

<Докум>

Выражение типа «дата», «документ» или «позиция документа», с которым сравнивается ГП.

Возвращаемое значение:

Число: -1 (минус единица), если ГП меньше (раньше); 0 если равны; 1 если ГП больше (позже).

Описание:

Метод Сравнить сравнивает ГП с датой, документом или позицией документа.

Пример:

Если Последовательность.УправленческийУчет.Сравнить(Док) = 1 Тогда

   Последовательность.УправленческийУчет.Установить(Док);

КонецЕсли;

ПринадлежитПоследовательности

Определить, принадлежит ли последовательности заданный документ или вид, заданный строкой.

Синтаксис:

ПринадлежитПоследовательности(<Докум>}

Англоязычный синоним:

BelongSequence

Параметры:

<Докум>

Выражение типа «документ» или «строка», определяющая вид документа.

Возвращаемое значение:

Число: 1 — если документ принадлежит последовательности; 0 — если не принадлежит.

Описание:

Метод ПринадлежитПоследовательности позволяет определить, принадлежит ли последовательности заданный документ или вид, заданный строкой.

Пример:

Если Последовательность.УпрУчет.ПринадлежитПоследовательности(Док) = 1 Тогда

   Если Последовательность.УпрУчет.Сравнить(Док) = 1 Тогда

      Последовательность.УпрУчет.Установить(Док);

   КонецЕсли;

КонецЕсли;

Проверить

Проверяет, является ли последовательность непрерывной от ГП до заданного документа.

Синтаксис:

Проверить(<Докум>)

Англоязычный синоним:

Validate

Параметры:

<Докум>

Выражение типа «дата», «документ» или «позиция документа», от которой проверяется непрерывность последовательности.

Возвращаемое значение:

Число: 1 если последовательность непрерывна; 0 если есть проведенные документы между ГП и документом.

Описание:

Метод Проверить проверяет, есть ли между ГП и данной точкой проведенные документы входящие в даную последовательность (т. е. является ли последовательность непрерывной от ГП до этой точки).

Пример:

Если Последовательность.УправленческийУчет.Проверить(Док) = 1 Тогда

   Последовательность.УправленческийУчет.Установить(Док);

КонецЕсли;


Part27

Глава 27
Работа с объектом Периодический

Для работы с периодическими реквизитами справочников и периодическими константами в системе используется специальный агрегатный тип данных — «Периодический». Объекты данного типа предназначены для возможности записи, редактирования и удаления значений периодических реквизитов справочников и периодических констант непосредственно из программного модуля, без необходимости прибегать к интерактивным операциям.

Контекст работы с объектом Периодический

Во всех программных модулях доступ к атрибутам и вызов методов объекта Периодический может выполняться только при помощи переменной со ссылкой на объект этого типа. Объект создается при помощи функции СоздатьОбъект, ссылка на который присваивается переменной. Чтобы вызвать метод объекта, имя метода (с указанием необходимых параметров) пишется через точку после идентификатора переменной.

При создании объекта данного типа функции СоздатьОбъект в качестве параметра передается ключевое слово "Периодический".

Англоязычный синоним ключевого слова Периодический — Periodic.

Пример:

ВремРеквизиты = СоздатьОбъект("Периодический");

Атрибуты объекта Периодический

Значение

Значение периодического реквизита справочника или константы.

Синтаксис:

Значение

Англоязычный синоним:

Value

Описание:

Атрибут Значение предоставляет доступ к значению выбранного периодического реквизита справочника или константы.

Пример:

Вал = СоздатьОбъект("Справочник.Валюты");

// Позиционируем созданный объект Вал по известному коду

Вал.НайтиПоКоду(1);

Если Вал.Выбран() = 1 Тогда

   Доллар = Вал.ТекущийЭлемент();

Иначе

   Предупреждение("Не найдена валюта!");

   Возврат;

КонецЕсли;

ПерВал = СоздатьОбъект("Периодический");

ПерВал.ИспользоватьОбъект("Текущ_курс".Доллар);

ПерВал.ОбратныйПорядок(1);

ПерВал.ВыбратьЗначения();

Пока ПерВал.ПолучитьЗначение() = 1 Цикл

   Курс = ПерВал.Значение;

   ДатаКурса = ПерВал.ДатаЗнач;

КонецЦикла;

ДатаЗнач

Дата значения периодического реквизита справочника или константы.

Синтаксис:

ДатаЗнач

Англоязычный синоним:

DateVal

Описание:

Атрибут ДатаЗнач предоставляет доступ к дате значения выбранного периодического реквизита справочника или константы.

Пример:

См. предыдущий пример

Методы объекта Периодический

ИспользоватьОбъект

Задать объект применения.

Синтаксис:

ИспользоватьОбъект(<ИмяРеквизита>, <Объект>)

Англоязычный синоним:

UseObject

Параметры:

<ИмяРеквизита> | Строковое выражение, задающее название периодического реквизита справочника или название периодической константы, как они названы в конфигураторе.
<Объект> | Необязательный параметр. Значение элемента справочника, для которого задается применение объекта «Периодический». Данный параметр требуется задавать только в случае, если <ИмяРеквизита> — периодический реквизит справочника.

Возвращаемое значение:

Число: 1 — если вызов метода закончился успешно, 0 — если нет.

Описание:

Метод ИспользоватьОбъект задает соответствие созданного ранее объекта типа «Периодический» тому периодическому реквизиту справочника или периодической константе, для которой он будет применяться. Если параметр <ИмяРеквизита> не задан (пустая строка), а параметр <Объект> задает элемент справочника, то выборка будет осуществляться по всем периодическим реквизитам справочника.

Пример:

Вал = СоздатьОбъект("Справочник.Валюты");

// Позиционируем созданный справочник Валюты по известному коду

Вал.НайтиПоКоду(1);

Если Вал.Выбран() = 1 Тогда

   Доллар = Вал.ТекущийЭлемент();

Иначе

   Предупреждение{"Не найдена валюта!");

   Возврат;

КонецЕсли;

ПерВал = СоздатьОбъект("Периодический");

ПерВал.ИспользоватьОбъект("Текущ_курс", Доллар);

ПерВал.ОбратныйПорядок(1);

ПерВал.ВыбратьЗначения();

Пока ПерВал.ПолучитьЗначение() = 1 Цикл

   Курс = ПерВал.Значение;

   ДатаКурса = ПерВал.ДатаЗнач;

КонецЦикла;

НазначитьТип

Назначить тип для периодического объекта неопределенного типа.

Синтаксис:

НазначитьТип(<ИмяТипа>, <Длина>, <Точность>)

Англоязычный синоним:

SetType

Параметры:

<ИмяТипа> | Строковое выражение — название типа данных, который назначается периодическому реквизиту справочника или периодической константе неопределенного типа. Например: "Строка", "Число", "Справочник.Товары", "Документ.РасходнаяНакладная" и т. п.
<Длина> | Необязательный параметр. Числовое выражение — длина поля представления данных. Имеет смысл только при задании числового или строкового типа.
<Точность> | Необязательный параметр. Числовое выражение — число знаков числа после десятичной точки. Имеет смысл только при задании числового типа.

Описание:

Метод НазначитьТип позволяет назначить тип периодического реквизита справочника или периодической константе неопределенного типа.

Пример:

Тов = СоздатьОбъект("Справочник.Номенклатура");

// Позиционируем созданный справочник по известному коду

Тов.НайтиПоКоду(51);

Если Тов.Выбран() = 1 Тогда

   ВыбТМЦ = Тов.ТекущийЭлемент();

Иначе

   Предупреждение("Не найден товар!");

   Возврат;

КонецЕсли;

ПерТМЦ = СоздатьОбъект("Периодический");

ПерТМЦ.ИспользоватьОбъект("ТМЦ", ВыбТМЦ);

ПерТМЦ.НазначитьТип("Справочник.Товары");

ЗначениеНаДату

Получить актуальное значение на заданную дату.

Синтаксис:

ЗначениеНаДату(<Дата>)

Англоязычный синоним:

ValueOnDate

Параметры:

<Дата>

Выражение, задающее значение даты, на которую требуется получить периодический реквизит справочника или периодическую константу.

Возвращаемое значение:

Полученное актуальное значение на заданную дату.

Описание:

С помощью метода ЗначениеНаДату можно получить значение, актуальное на заданную дату. Причем текущая позиция выборки (см. ВыбратьЗначение) не сдвигается и не сбрасывается.

Пример:

К = ПерВал.ЗначениеНаДату(ДатаП);

НайтиЗначение

Найти значение на заданную дату.

Синтаксис:

НайтиЗначение(<Дата>, <Режим>)

Англоязычный синоним:

FindValue

Параметры:

<Дата> | Выражение, задающее значение даты, на которую требуется найти периодический реквизит справочника или периодическую константу.
<Режим> | Числовое выражение, значение которого задает режим поиска, если на заданную дату не существует значения периодического реквизита. Если -1 (минус единица) — возвращается значение на предыдущую дату, если 0 — возвращается код завершения неуспешной операции, если 1 — возвращается значение на последующую дату.

Возвращаемое значение:

Число: 1 — если вызов метода закончился успешно, 0 — если нет.

Описание:

Метод НайтиЗначение позволяет найти периодическое значение на заданную дату <Дата>. Режим поиска в случае, если на заданную дату не существует значения периодического реквизита задается параметром <Режим>. Само полученное значение следует считывать из атрибута Значение.

Пример:

Если ПерВал.НайтиЗначение(ДатаП, Нап) = 0 Тогда

   Предупреждение("Не нашли значение!", 3);

   Возврат;

КонецЕсли;

ВыбратьЗначения

Открыть выборку периодических значений по датам.

Синтаксис:

ВыбратьЗначения(<ДатаНачала>, <ДатаКонца>)

Англоязычный синоним:

Selectltems

Параметры:

<ДатаНачала> | Необязательный параметр. Выражение типа «дата» — дата начала периода выборки периодических значений. Если параметр не задан, то выборка начинается с самой ранней имеющейся даты.
<ДатаКонца> | Необязательный параметр. Выражение типа «дата» — дата конца периода выборки периодических значений. Если параметр не задан, то выборка заканчивается самой последней имеющейся датой.

Возвращаемое значение:

Число: 1 — если вызов метода закончился успешно, 0 — если нет.

Описание:

Метод ВыбратьЗначения предоставляет возможность (открывает выборку) выбирать периодические значения при помощи метода ПолучитьЗначение.

Дальнейшая выборка при помощи метода ПолучитьЗначение будет происходить среди периодических значений текущего объекта применения, заданного методом ИспользоватьОбъект.

Пример:

Процедура КурсыВалюты(КодВалюты)

   Вал = СоздатьОбъект("Справочник.Валюты");

   // Позиционируем созданный объект Вал по известному коду

   Вал.НайтиПоКоду(КодВалюты);

   Если Вал.Выбран() = 1 Тогда

      Доллар = Вал.ТекущийЭлемент();

   Иначе

      Предупреждение("Не найдена валюта!");

      Возврат;

   КонецЕсли;

   ПерВал = СоздатьОбъект("Периодический");

   ПерВал.ИспользоватьОбъект("Текуш_курс", Доллар);

   ПерВал.ОбратныйПорядок(1);

   ПерВал.ВыбратьЗначения();

   Пока ПерВал.ПолучитьЗначение() = 1 Цикл

      Сообщить("Курс: " + Строка(ПерВал.ДатаЗнач) + ПерВал.Значение);

   КонецЦикла;

КонецПроцедуры

См. также: ПолучитьЗначение, ИспользоватьОбъект

ВыбратьПоДокументу

Открыть выборку всех изменений периодических реквизитов справочника, сделанных документом.

Синтаксис:

ВыбратьПоДокументу(<Документ>)

Англоязычный синоним:

SelectByDoc

Параметры:

<Документ>

Выражение со значением типа «документ».

Возвращаемое значение:

Число: 1 — если вызов метода закончился успешно, 0 — если нет.

Описание:

Метод ВыбратьПоДокументу предоставляет возможность (открывает выборку) выбирать все периодические значения (по всем справочникам и реквизитам), заданные в справочнике документом.

Дальнейшая выборка осуществляется при помощи метода ПолучитьЗначение. При использовании данного метода не используется (игнорируется) установка объекта применения, задаваемая методом ИспользоватьОбъект.

См. также: УстановитьРеквизитСправочника, ТекущийОбъект, ТекущийРеквизит, ПолучитьЗначение

Пример:

Процедура ПечатьУстановокДокумента(Док)

   Если Док.Выбран() = 0 Тогда

      Возврат;

   КонецЕсли;

   Таб = СоздатьОбъект("Таблица");

   Таб.ИсходнаяТаблица("ПечатьИстории");

   Таб.ВывестиСекцию("Отчет" );

   Ист = СоздатьОбъект ("Периодический");

   Ист.ВыбратьПоДокументу(Док);

   Пока Ист.ПолучитьЗначение() = 1 Цикл

      Таб.ВывестиСекцию("Строка");

   КонецЦикла;

   Таб.Опции(0, 0, 0, 0);

   Таб.ТолькоПросмотр(1);

   Таб.Показать("Отчет");

КонецПроцедуры

ПолучитьЗначение

Получить из выборки следующее периодическое значение.

Синтаксис:

ПолучитьЗначение()

Англоязычный синоним:

GetValue

Возвращаемое значение:

Число: 1 — если элемент выбран успешно, 0 — если элемент не выбран (отсутствует).

Описание:

Метод ПолучитьЗначение выбирает периодическое значение в последовательности выборки, открытой перед этим при помощи метода ВыбратьЗначения или ВыбратьПоДокументу. Само полученное значение следует считывать из атрибута Значение. Дату этого значения можно считать из атрибута ДатаЗнач. Если значение периодического реквизита установлено документом, то этот документ можно получить при помощи метода ТекущийДокумент. Метод ТекущийОбъект позволит определить значение текущего элемента справочника, а метод ТекущийРеквизит — определить наименование текущего реквизита справочника.

Пример:

Процедура КурсыВалюты(КодВалюты)

   Вал = СоздатьОбъект("Справочник.Валюты");

   // Позиционируем созданный объект Вал по известному коду

   Вал.НайтиПоКоду(КодВалюты);

   Если Вал.Выбран() = 1 Тогда

      Доллар = Вал.ТекущийЭлемент();

   Иначе

      Предупреждение("Не найдена валюта!");

      Возврат;

   КонецЕсли;

   ПерВал = СоздатьОбъект("Периодический");

   ПерВал.ИспользоватьОбъект("Текущ_курс", Доллар);

   ПерВал.ОбратныйПорядок(1);

   ПерВал.ВыбратьЗначения();

   Пока ПерВал.ПолучитьЗначение() = 1 Цикл

      Сообщить("Курс на " + Строка(ПерВал.ДатаЗнач) + " = " + ПерВал.Значение);

   КонецЦикла;

КонецПроцедуры

См. также: ВыбратьЗначения, ВыбратьПоДокументу, ТекущийОбъект, ТекущийРеквизит, ТекущийДокумент

ОбратныйПорядок

Установить порядок выборки периодических значений.

Синтаксис:

ОбратныйПорядок(<Режим>)

Англоязычный синоним:

BackwardOrder

Параметры:

<Режим>

Необязательный параметр. Числовое выражение, значение которого задает режим выборки периодических значений. Если 0 — прямой порядок выборки, если значение отлично от 0 — обратный порядок выборки. По умолчанию — 1.

Возвращаемое значение:

Число: 1 — если вызов метода закончился успешно, 0 — если нет.

Описание:

Метод ОбратныйПорядок устанавливает порядок выборки периодических значений. Данный метод используется до вызова метода ВыбратьЗначения, который фактически открывает выборку. Дальнейшая выборка при помощи ПолучитьЗначение будет происходить в заданном порядке.

Пример:

Процедура ЗаполнитьСписокОбр()

   Вал = СоздатьОбъект("Справочник.Валюты");

   // Позиционируем созданный объект Вал по известному коду

   Вал.НайтиПоКоду(1);

   Если Вал.Выбран() = 1 Тогда

      Доллар = Вал.ТекущийЭлемент(};

   Иначе

      Предупреждение("Не найдена валюта!");

      Возврат;

   КонецЕсли;

   ПерВал = СоздатьОбъект("Периодический");

   ПерВал.ИспользоватьОбъект("Текущ_курс", Доллар);

   ПерВал.ОбратныйПорядок(1);

   ПерВал.ВыбратьЗначения();

   Пока ПерВал.ПолучитьЗначение() = 1 Цикл

      СпВал.ДобавитьЗначение(ПерВал.Значение, Строка(ПерВал.ДатаЗнач) +

                             ПерВал.Значение);

   КонецЦикла;

КонецПроцедуры

См. также: ВыбратьЗначения, ПолучитьЗначение

ТекущийДокумент

Возвращает документ, который установил значение периодического реквизита справочника.

Синтаксис:

ТекущийДокумент()

Англоязычный синоним:

Current Document

Возвращаемое значение:

Документа, который задал значение периодического реквизита справочника.

Описание:

Метод ТекущийДокумент возвращает документ, который задал значение периодического реквизита справочника. Метод используется после получения очередного значения из выборки (см. метод ПолучитьЗначение).

Пример:

Процедура ПечатьИстории(Элем)

   Если Элем.Выбран() = 0 Тогда

      Возврат;

   КонецЕсли;

   Таб = СоздатьОбъект("Таблица");

   Таб.ИсходнаяТаблица("ПечатьИстории");

   Таб.ВывестиСекцию("Отчет");

   Ист = СоздатьОбъект("Периодический");

   // Просмотрим все периодические реквизиты справочника

   Ист.ИспользоватьОбъект("", Элем);

   Ист.ВыбратьЗначения();

   Пока Ист.ПолучитьЗначение() = 1 Цикл

      ДокИст = Ист.ТекущийДокумент();

      Если ДокИст.Выбран() = 1 Тогда

         // если значение задано документом

         Таб.ВывестиСекцию("ПоДокументу");

      Иначе

         // если значение задано интерактивно

         Таб.ВывестиСекцию("Строка");

      КонецЕсли;

   КонецЦикла;

   Таб.Опции(0, 0, 0, 0);

   Таб.ТолькоПросмотр(1);

   Таб.Показать("Отчет");

КонецПроцедуры

См. также: УстановитьРеквизитСправочника

ТекущийОбъект

Возвращает значение текущего элемента справочника.

Синтаксис:

ТекущийОбъект()

Англоязычный синоним:

CurrentObj

Возвращаемое значение:

Значение текущего элемента справочника.

Описание:

Метод ТекущийОбъект возвращает значение текущего элемента справочника. Метод используется после получения очередного значения из выборки, особенно полезен при выборке по документу (см. методы ВыбратьПоДокументу, ПолучитьЗначение).

Пример:

Процедура ПечатьУстановокДокумента(Док)

   // выведем все установки, которые произвел документ

   Если Док.Выбран() = 0 Тогда

      Возврат;

   КонецЕсли;

   Таб = СоздатьОбъект("Таблица");

   Таб.ИсходнаяТаблица("ПечатьИстории");

   Таб.ВывестиСекцию("Отчет");

   Ист = СоздатьОбъект("Периодический");

   Ист.ВыбратьПоДокумекту(Док);

   Пока Ист.ПолучитьЗначение() = 1 Цикл

      ИстОбъект = Ист.ТекущийОбъект();

      Если ИстОбъект.Вид() = "Товары" Тогда

         // если документом заданы изменения в справочнике Товары

         Таб.ВывестиСекцию("ПоТовару");

      ИначеЕсли ИстОбъект.Вид() = "Клиенты" Тогда

         // если документом заданы изменения в справочнике Клиенты

         Таб.ВывестиСекцию("ПоКлиенту");

      КонецЕсли;

   КонецЦикла;

   Таб.Опции(0, 0, 0, 0);

   Таб.ТолькоПросмотр(1);

   Таб.Показать("Отчет");

КонецПроцедуры

См. также: УстановитьРеквизитСправочника, ВыбратьПоДокументу, ПолучитьЗначение

ТекущийРеквизит

Возвращает наименование текущего реквизита справочника.

Синтаксис:

ТекущийРеквизит()

Англоязычный синоним:

CurrentAttrubute

Возвращаемое значение:

Строковое значение — наименование текущего реквизита справочника.

Описание:

Метод ТекущийРеквизит возвращает наименование текущего реквизита справочника. Если выборка производится по документу, то в возвращаемом значении сначала записано наименование справочника, а затем через точку наименования реквизита. Метод используется после получения очередного значения из выборки, особенно полезен при выборке по документу или по всем реквизитам.

Пример:

Процедура ПечатьУстановокДокумента(Док)

   // выведем все установки, которые произвел документ

   Если Док.Выбран() = 0 Тогда

      Возврат;

   КонецЕсли;

   Таб = СоздатьОбъект("Таблица");

   Таб.ИсходнаяТаблица("ПечатьИстории");

   Таб.ВывестиСекцию("Отчет");

   Ист = СоздатьОбъект("Периодический");

   Ист.ВыбратьПоДокументу(Док);

   Пока Ист.ПолучитьЗначение() = 1 Цикл

      Если Ист.ТекущийРеквизит() = "Товары.Цена" Тогда

         // если документом заданы изменения Цены Товара

         Таб.ВывестиСекцию("ПоЦенеТовара");

      ИначеЕсли Ист.ТекущийРеквизит() = "Клиенты.Статус" Тогда

         // если документом заданы изменения Статуса Клиента

         Таб.ВывестиСекцию("ПоСтатусу Клиента");

      КонецЕсли;

   КонецЦикла;

   Таб.Опции(0, 0, 0, 0);

   Таб.ТолькоПросмотр(1);

   Таб.Показать("Отчет");

КонецПроцедуры

См. также: УстановитьРеквизитСправочника, ВыбратьЗначения, ВыбратьПоДокументу, ПолучитьЗначение

НомерСтроки

Возвращает номер строки текущего документа, изменившего периодическое значение реквизита справочника.

Синтаксис:

НомерСтроки()

Англоязычный синоним:

LineNurn

Возвращаемое значение:

Числовое значение — номер строки документа, изменившего периодическое значение реквизита справочника.

Описание:

Метод НомерСтроки возвращает значение номера строки документа, изменившего периодическое значение реквизита справочника (в случае, когда в Модуле документа использовали метод ПривязыватьСтроку). Метод используется после получения очередного значения из выборки, особенно полезен при выборке по документу или по всем реквизитам (см. методы ВыбратьЗначения, ВыбратьПоДокументу, ПолучитьЗначение).

Пример:

Процедура ПечатьИстории(Элем)

   Если Элем.Выбран() = 0 Тогда

      Возврат;

   КонецЕсли;

   Таб = СоздатьОбъект("Таблица");

   Таб.ИсходнаяТаблица("ПечатьИстории");

   Таб.ВывестиСекцию("Отчет");

   Ист = СоздатьОбъект("Периодический");

   // Просмотрим все периодические реквизиты справочника

   Ист.ИспользоватьОбъект("", Элем);

   Ист.ВыбратьЗначения();

   Пока Ист.ПолучитьЗначение() = 1 Цикл

      ДокИст = Ист.ТекущийДокумент();

      Если ДокИст.Выбран() = 1 Тогда

         // если значение задано документом

         НомСтрДок = Ист.НомерСтроки();

         Таб.ВывестиСекцию("ПоДокументу");

      Иначе

         // если значение задано интерактивно

         Таб.ВывестиСекцию("Строка");

      КонецЕсли;

   КонецЦикла;

   Таб.Опции(0, 0, 0, 0);

   Таб.ТолькоПросмотр(1);

   Таб.Показать("Отчет");

КонецПроцедуры

См. также: УстановитьРеквизитСправочника, ВыбратьПоДокументу, ПолучитьЗначение

Записать

Записать (обновить) периодическое значение.

Синтаксис:

Записать()

Англоязычный синоним:

Write

Возвращаемое значение:

Число: 1 — если вызов метода закончился успешно, 0 — если нет.

Описание:

Метод Записать выполняет запись периодического значения на заданную дату. Если на заданную дату уже существует запись, то она модифицируется. До вызова данного метода следует само значение записать в атрибут Значение. Дату этого значения следует записать в атрибут ДатаЗнач.

Пример:

Процедура ЗаписьКурсаДоллара(Курс)

   Вал = СоздатьОбъект("Справочник.Валюты");

   // Позиционируем созданный объект Вал по известному коду

   Вал.НайтиПоКоду(1);

   Если Вал.Выбран() = 1 Тогда

      Доллар = Вал.ТекущийЭлемент();

   Иначе

      Предупреждение("Не найдена валюта!");

      Возврат;

   КонецЕсли;

   ПерВал = СоздатьОбъект("Периодический");

   ПерВал.ИспользоватьОбъект("Текущ_курс".Доллар);

   ПерВал.Значение = Курс;

   ПерВал.ДатаЗнач = РабочаяДата();

   ПерВал.Записать();

КонецПроцедуры

Удалить

Удалить периодическое значение.

Синтаксис:

Удалить()

Англоязычный синоним:

Delete

Возвращаемое значение:

Число: 1 — если вызов метода закончился успешно, 0 — если нет.

Описание:

Метод Удалить удаляет периодическое значение на заданную дату. До вызова данного метода атрибут ДатаЗнач должен содержать дату удаляемого периодического значения..

Пример:

Процедура ЧисткаКурсов()

   Вал = СоздатьОбъект("Справочник.Валюты");

   // Позиционируем созданный объект Вал по известному коду

   Вал.НайтиПоКоду(1);

   Если Вал.Выбран() = 1 Тогда

      Доллар = Вал.ТекущийЭлемент();

   Иначе

      Предупреждение("Не найдена валюта!");

      Возврат;

   КонецЕсли;

   ПерВал = СоздатьОбъект("Периодический");

   ПерВал.ИспользоватьОбъект("Текущ_курс".Доллар);

   ПерВал.ВыбратьЗначения();

   Пока ПерВал.ПолучитьЗначение() = 1 Цикл

      Курс = ПерВал.Значение;

      ДатаКурса = ПерВал.ДатаЗнач;

      Если Курс < 1000 Тогда

         ПерВал.Удалить();

      КонецЕсли;

   КонецЦикла;

КонецПроцедуры


Part28

Глава 28
Работа со Списком Значений

При формировании пользовательского интерфейса прикладной задачи довольно часто возникают ситуации, когда для удобства работы пользователя необходимо дать ему возможность выбирать какое-либо значение из заранее подготовленного списка. Возможности работы со справочниками, журналами и перечислениями предоставляют достаточно мощные средства выбора этих объектов. Однако, существует также необходимость в выборе значений из списков, сформированных и отсортированных нестандарнным образом, которые невозможно или неудобно получать непосредственно при работе со стандартными визуальными представлениями журналов, справочников или перечислений. Для этого в системе 1С:Предприятие используется специальный агрегатный тип данных — «СписокЗначений» и специальные элементы форм диалога: «Список» и «Поле со списком».

Объект типа «СписокЗначений» — это средство языка (не сохраняемый в БД объект), которое позволяет строить «динамические массивы» и манипулировать ими (добавлять, редактировать, удалять элементы, сортировать). Список значений может быть наполнен значениями любого типа, т. е. в одном списке типы хранимых значений могут быть разными. Одним из примеров использования данного объекта может служить организация выбора конкретного документа из списка возможных документов, сформированного по сложному алгоритму.

Контекст работы со Списком Значений

Во всех программных модулях вызов соответствующих методов может выполняться при помощи переменной со ссылкой на объект типа «СписокЗначений». Такие объекты можно создавать при помощи функции СоздатьОбъект, ссылка на который присваивается переменной. Кроме того, если в форму диалога при помощи визуальных средств конфигуратора вставлены специальные элементы форм диалога «Список» и «Поле со списком», то идентификаторы этих элементов доступны в контексте программного модуля этой формы как уже существующие объекты типа «СписокЗначений».

Чтобы вызвать метод объекта, имя метода (с указанием необходимых параметров) пишется через точку после имени объекта.

При создании объекта типа «СписокЗначений» при помощи функции СоздатьОбъект, в качестве названия агрегатного типа данных обязательно Должно выступать ключевое слово СписокЗначений.

Англоязычный синоним ключевого слова СписокЗначений — ValueList.

Пример:

МойСписок = СоздатьОбъект("СписокЗначений");

Методы объекта Список Значений

ДобавитьЗначение

Добавить значение в список.

Синтаксис:

ДобавитьЗначение(<Значение>, <Строка>)

Англоязычный синоним:

AddValue

Параметры:

<Значение> | Выражение со значением, которое добавляется в список.
<Строка> | Необязательный параметр. Строковое выражение, содержащее задаваемое символьное представление добавляемого значения. По умолчанию принимает стандартное в системе 1С:Предприятие символьное представление объекта.

Описание:

Метод ДобавитьЗначение добавляет значение и его символьное представление в конец списка. Представление используется в дальнейшем для удобства сортировки и выбора значений из списка (отображается в диалоговом окне выбора).

Пример:

// Объявляем переменные

Перем Список;

Перем ВР;

// процедура выбора значения

Процедура ВыбратьВР()

   Если Список.ВыбратьЗначение(ВР, "Выбор дог: паты") = 1 Тогда

      Расчет = ВР;

      НазваниеВР = Расчет.Код;

   КонецЕсли;

КонецПроцедуры

// инициализация переменных

Список = СоздатьОбъект("СписокЗначений");

Список.ДобавитьЗначение(ВидРасчета.ДоплатаЛроцентом, "Процентом");

Список.ДобавитьЗначение(ВидРасчета.ДоплатаСуммой, "Суммой");

// первоначальное значение

НазваниеВР = Расчет.Код;

ВставитьЗначение

Вставить значение в указанную позицию списка.

Синтаксис:

ВставитьЗначение(<Позиция>, <Знач>, <Строка>, <Колич>)

АНГЛОЯЗЫЧНЫЙ СИНОНИМ:

InsertValue

Параметры:

<Позиция> | Числовое выражение — номер позиции в списке, начиная с которого будут вставлены новые значения. Номер позиции может быть от 1 до РазмерСписка() + 1.
<Знач> | Выражение со значением, которое добавляется в список.
<Строка> | Необязательный параметр. Строковое выражение, содержащее задаваемое символьное представление добавляемого значения. По умолчанию принимает стандартное в системе 1С:Предприятие символьное представление объекта.
<Колич> | Необязательный параметр. Числовое выражение — количество повторов. По умолчанию — 1.

Описание:

Метод ВставитьЗначение добавляет значение и его символьное представление в указанную позицию списка <Позиция> заданное число раз <Колич>. Представление используется в дальнейшем для удобства сортировки и выбора значений из списка (отображается в диалоговом окне выбора).

Пример:

// Объявляем переменные

Перем Список;

Перем ВР;

// процедура выбора значения

Процедура ВыбратьВР()

   Если Список.ВыбратьЗначение(ВР, "Выбор доплаты") = 1 Тогда

      Расчет = ВР;

      НазваниеВР = Расчет.Код;

   КонецЕсли;

КонецПроцедуры

// инициализация переменных

Список = СоздатьОбъект("СписокЗначений");

Список.ВставитьЗначение(1, Вид Расчета.ДоплатаПроцентом, "Процентом");

Список.ВставитьЗначение(1, Вид Расчета.ДоплатаСуммой, "Суммой");

// первоначальное значение

НазваниеВР = Расчет.Код;

РазмерСписка

Определить размер списка.

Синтаксис:

РазмерСписка()

Англоязычный синоним:

GetListSize

Возвращаемое значение:

Числовое значение — количество элементов в списке.

Описание:

Метод РазмерСписка позволяет определить общее количество элементов в списке.

Пример:

Разм = Список.РазмерСписка();

НайтиЗначение

Определить номер позиции в списке для элемента, имеющего заданное значение.

Синтаксис:

НайтиЗначение(<Знач>)

Англоязычный синоним:

FindValue

Параметры:

<Знач>

Выражение со значением, которое необходимо найти в списке.

Возвращаемое значение:

Номер позиции в списке, где расположено требуемое значение. Если значение не найдено, то — 0.

Описание:

С помощью метода НайтиЗначение можно определить номер позиции в списке для элемента, имеющего значение <Знач>.

Пример:

Позиция = Спис.НайтиЗначение(Вид Расчета.ДоплатаПроцентом);

ПолучитьЗначение

Получить значение элемента по номеру в списке.

Синтаксис:

ПолучитьЗначение(<Позиция>, <Перем>)

Англоязычный синоним:

GetValue

Параметры:

<Позиция> | Числовое выражение — номер элемента в списке, значение которого будет возвращено. Номер позиции может быть от 1 до количества элементов в списке.
<Перем> | Идентификатор переменной в которую будет возвращено строковое выражение, содержащее символьное представление получаемого значения.

Возвращаемое значение:

Полученное значение из списка.

Описание:

С помощью метода ПолучитьЗначение можно получить значение элемента, находящегося в указанной позиции списка.

Пример:

ОпредПредст = "";

ОпредВид=Спис.ПолучитьЗначение(1, ОпредПредст);

УстановитьЗначение

Установить значение в указанной позиции списка.

Синтаксис:

УстановитьЗначение(<Позиция>, <Знач>, <Строка>, <Колич>)

Англоязычный синоним:

SetValue

Параметры:

<Позиция> | Числовое выражение — номер позиции в списке, начиная с которого будут установлены новые значения, т. е. «старые» будут заменены. Номер позиции может быть от 1 до РазмерСписка+1.
<Знач> | Выражение со значением, которое добавляется в список.
<Строка> | Необязательный параметр. Строковое выражение, содержащее задаваемое символьное представление добавляемого значения. По умолчанию принимает стандартное в системе 1С:Предприятие символьное представление объекта.
<Колич> | Необязательный параметр. Числовое выражение — количество повторов. По умолчанию — 1.

Описание:

Метод УстановитьЗначение устанавливает значения и его символьные лредставления, начиная с указанной позиции списка <Позиция> заданное число повторов <Колич>. Представление используется в дальнейшем для удобства сортировки и выбора значений из списка (отображается в диалоговом окне выбора).

Пример:

Спис.УстановитьЗначение(1, ВидРасчета.ДоплатаПроцентом, "Процентом");

Получить

Получить значение элемента по указанному представлению.

Синтаксис:

Получить(<Строка>)

Англоязычный синоним:

Get

Параметры:

<Строка>

Строковое выражение, содержащее задаваемое символьное представление получаемого значения.

Возвращаемое значение:

Полученное значение из списка.

Описание:

Метод Получить возвращает значение по указанному представлению. Если значения с таким представлением нет, то возвращается пустое значение.

Пример:

ОпредЗнач = Спис.Получить("ОпредПредст");

Установить

Установить значение с указанным представлением.

Синтаксис:

Установить(<Строка>, <Знач>)

Англоязычный синоним:

Set

Параметры:

<Строка> | Строковое выражение, содержащее задаваемое символьное представление добавляемого значения.
<Знач> | Выражение со значением, которое добавляется в список.

Описание:

Метод Установить устанавливает в списке значение с указанным представлением, если значение с таким представлением уже есть — изменятеся значение, если нет — добавляется в конец списка значение с указанным представлением.

Пример:

Спис.Установить("Процентом", ВидРасчета.ДоплатаПроцентом);

УдалитьЗначение

Удалить значение в указанной позиции списка.

Синтаксис:

УдалитьЗначение(<Позиция>, <Колич>)

Англоязычный синоним:

RemoveValue

Параметры:

<Позиция> | Числовое выражение — номер позиции в списке, начиная с которой будут удалены значения. Номер позиции может быть от 1 до количества элементов в списке.
<Колич> | Необязательный параметр. Числовое выражение — количество повторов. По умолчанию — 1.

Описание:

Метод УдалитьЗначение удаляет <Колич> значений, начиная с указаний позиции <Позиция>.

Пример:

Список.УдалитьЗначение(1, 2);

УдалитьВсе

Удалить все элементы списка.

Синтаксис:

УдалитьВсе()

Англоязычный синоним:

RemoveAll

Описание:

Метод УдалитьВсе удаляет все элементы списка.

Пример:

Список.УдалитьВсе();

Сортировать

Отсортировать список по значениям.

Синтаксис:

Сортировать(<Направление>, <ДокументыПоДате>)

Англоязычный синоним:

Sort

Параметры:

<Направление> | Необязательный параметр. Числовое выражение. Если — 0, то сортировка по возрастанию. Если не 0 то сортировка по убыванию. Значение по умолчанию — 0.
<ДокументыПоДате> | Необязательный параметр. Имеет смысл только в том случае, если значениями списка значений являются документы. В этом случае можно задавать сортировку документов по их хронологии. Число: 1 — сортировка по хронологии документов; 0 — нет. Значение по умолчанию — 0.

Описание:

Метод Сортировать выполняет сортировку списка по значениям. Если первый элемент списка (значение в первой позиции) имеет базовый тип данных (число, строка, дата), то сортировка проводится по значениям элементов, приведенных стандартными правилами к типу первого элемента. В противном случае, если первый элемент имеет агрегатный тип данных, сортировка проводится по значениям элементов, приведенных к строковому представлению типа данных.

Пример:

Спис.Сортировать();

СортироватьПоПредставлению

Отсортировать список по представлению.

Синтаксис:

СортироватьПоПредставлению(<Направление>)

Англоязычный синоним:

SortByPresent

Параметры:

<Направление>

Необязательный параметр. Числовое выражение. Если — 0, то сортировка производится по возрастанию. Если отлично от 0, то сортировка по убыванию.

Описание:

Метод СортироватьПоПредставлению выполняет сортировку списка по символьному представлению в соответствии с порядком, заданным параметром <Направление>.

Пример:

Спис.СортироватьПоПредставлению();

СдвинутьЗначение

Переместить значение списка значений на новую позицию.

Синтаксис:

СдвинутьЗначение(<Колич>, <НомерПоз>)

Англоязычный синоним:

MoveValue

Параметры:

<Колич> | Числовое выражение — количество позиций, на которое надо переместить значение. Если число положительное, то значение сдвигается вниз, если отрицательное, то вверх.
<НомерПоз> | Номер позиции, значение которой надо переместить.

Описание:

С помощью метода СдвинутьЗначение можно переместить значение списка значений на новую позицию.

Пример:

Спис.СдвинутьЗначение(1, Поз);

Принадлежит

Проверяет вхождение в список значений указанного значения.

Синтаксис:

Принадлежит(<Значение>)

Англоязычный синоним:

Belong

Параметры:

<Значение>

Значение, проверяемое на вхождение в список значений.

Возвращаемое значение:

Число: 1 — если проверяемое значение входит в список значений; 0 — если не входит.

Описание:

Метод Принадлежит проверяет вхождение в список значений заданного значения. Другими словами, оператор Список.Принадлежит(ВыбДок) проверяет, является ли значение ВыбДок подмножеством списка значений Список.

Если на принадлежность проверяется значение типа элемент справочника, то проверка выполняется с учетом его возможного вхождения в группы справочников, которые являются значениями списка значений.

Данный метод оптимизирует проверку принадлежности при массовых последовательных сравнениях, если между сравнениями сам список значений не меняется.

Пример:

Процедура ПроверитьКлиентов(СписокГруппКлиентов)

   // в качестве параметра Процедуры передается СписокЗначений

   // в котором записаны как элементы справочника Клиенты, так и

   // группы этого справочника

   Док = СоздатьОбъект("Документ.Накладная");

   Док.ВыбратьДокументы();

   Пока Док.ПолучитьДокумент() = 1 Цикл

      Если СписокГруппКлиентов.Принадлежит(Док.Клиент) = 1 Тогда

         Сообщить(Док.Клиент.Наименование + " " + Док);

      КонецЕсли;

   КонецЦикла;

КонецПроцедуры

ВыбратьЗначение

Открыть окно для интерактивного выбора значения из списка.

Синтаксис:

ВыбратьЗначение(<Значение>, <3аголовок>, <Позиция> , <Таймаут>, <Спосо6Выбора>)

Англоязычный синоним:

ChooseValue

Параметры:

<Значение>

Идентификатор переменной, куда помещается значение — результат выбора.

<3аголовок>

Строковое выражение, значение которого отображается в заголовке диалогового окна. Может использоваться для подсказки пользователю.

<Позиция>

Идентификатор переменной, куда помещается номер позиции выбранного значения в списке.

<Таймаут>

Необязательный параметр. Числовое выражение, значение которого задает время ожидания системы (в секундах) на отклик пользователя.

<СпособВыбора>

Необязательный параметр. Числовое выражение, значение которого задает способ выбора значения:

0 — в виде диалога;

1 — выбор производится в виде меню, которое подстраивается по месту текущего элемента диалога или ячейки таблицы, откуда вызвано;

2 — выбор маленьким списком (список похож на выбор значения перечисления), также привязанным к позиции элемента диалога.

Значение по умолчанию — 0.

Возвращаемое значение:

Число: 1 — если выбор произведен (нажата кнопка «ОК»); 0 — если выбор не призведен (нажата кнопка «ОТМЕНА»); -1 (минус единица) — закончилось время <Таймаут> ожидания отклика пользователя.

Описание:

Метод ВыбратьЗначение вызывает диалоговое окно для интерактивного выбора значения из заранее подготовленного списка. Возвращаемое числовое значение: 1 — если выбор произведен, 0 — если нет. Параметр <Значение> указывает на значение того элемента списка, на котором будет установлен курсор при открытии окна выбора. В этот же параметр возвращается выбранное значение. В параметр <Позиция> возвращается номер позиции выбранного значения в списке. Если выбор отменен, то значение параметров не меняются.

Данный метод может использоваться только для переменных созданных функцией СоздатьОбъект.

Пример:

Процедура ВыбратьКредит(ДокКредита)

   Список = СоздатьОбъект("СписокЗначений");

   Рег = СоздатьОбъект("Регистр.ТоварныйКредит");

   Per.УстановитьФильтр(Клиент, );

   Per.ВыбратьИтоги();

   Пока Per.ПолучитьИтог() = 1 Цикл

      Док = Рег.Документ;

      Список.ДобавитьЗначение(Док, "" + Док + " — Остаток = " + Рег.Долг);

   КонецЦикла;

   Если Список.ВыбратьЗначение(ВыбДок, "Выберите кредит") = 1 Тогда

      ДокКредита = ВыбДок;

   КонецЕсли;

КонецПроцедуры

ОтметитьЗначения

Открыть окно для интерактивной пометки значений списка.

Синтаксис:

ОтметитьЗначения(<Значение>, <3аголовок>, <Позиция>, <Таймаут>)

Англоязычный синоним:

CheckValues

Параметры:

<Значение> | Идентификатор переменной, куда помещается значение — результат выбора.
<Загoлoвoк> | Строковое выражение, значение которого отображается в заголовке диалогового окна. Может использоваться для подсказки пользователю.
<Пoзиция> | Необязательный параметр. Идентификатор переменной, куда помещается номер позиции выбранного значения в списке.
<Tаймayт> | Необязательный параметр. Числовое выражение, значение которого задает время ожидания системы (в секундах) на отклик пользователя.

Возвращаемое значение:

Число: 1 — если выбор произведен (нажата кнопка «ОК»); 0 — если выбоо не произведен (нажата кнопка «ОТМЕНА»); -1 (минус единица) — закончилось время <Таймаут> ожидания отклика пользователя.

Описание:

Метод ОтметитьЗначения вызывает диалоговое окно для интерактивной пометки значений списка из заранее подготовленного списка.

Возможность выбора значения — это дополнительная возможность, предоставляемая данным методом. Параметр <Значение> указывает на значение того элемента списка, на котором будет установлен курсор при открытии окна выбора. В этот же параметр возвращается последнее выбранное значение- В параметр <Позиция> возвращается номер позиции последнего выбранного значения в списке. Если выбор отменен, то значение параметров не меняются.

Данный метод может использоваться только для переменных созданных функцией СоздатьОбъект.

Пример:

Функция ВыбратьКредит (ДокКредита)

   Перем ВыбДок;

   Список = СоздатьОбъект("СписокЗначений");

   Рег = СоздатьОбъект("Регистр.ТоварныйКредит");

   Рег.УстановитьФильтр(Клиент, );

   Рег.ВыбратьИтоги();

   Пока Рег.ПолучитьИтог() = 1 Цикл

      Док = Рег.Документ;

      Список. ДобавитьЗначение(Док, "" + Док + " — Остаток = " + Рег.Долг);

   КонецЦикла;

   Список.ОтметитьЗначения(ВыбДок, "Выберите кредиты");

   Возврат Список;

КонецФункции

Пометка

Пометить значение списка.

Синтаксис:

Пометка(<Позиция>, <Отметка>}

Англоязычный синоним:

Check

Параметры:

<Позиция> Номер позиции выбранного значения в списке.

<Отметка> Необязательный параметр. Число: 1 — установить отметку; 0 — снять отметку. Если данный параметр опущен, то отметка значения списка не изменяется.

Возвращаемое значение:

Значение метки до выполнения метода. Число: 1 — отметка установлена; 0 _- отметка не установлена.

Описание:

Метод Пометка позволяет пометить указанную позицию списка значений.

Пример:

Функция ОтметитьДокумент(Список, ВыбДок)

   Для Н = 1 по Список.РазмерСписка() Цикл

      Док = Список.ПолучитьЗначение(Н);

      Если Док = ВыбДок Тогда

         Список.Пометка(Н, 1);

      КонецЕсли;

   КонецЦикла;

КонецФункции

ТекущаяСтрока

Установить/определить текущий элемент списка в элементе диалога типа «Список» или «Поле со списком».

Синтаксис:

ТекущаяСтрока(<ИндексСтроки>)

Англоязычный синоним:

CurSel

Параметры:

<ИндексСтроки>

Необязательный параметр. Числовое выражение с задаваемым индексом строки для элемента диалога типа «Список» или «Поле со списком», на которое требуется установить курсор. Если параметр не задан, то положение курсора в поле диалога не меняется.

Возвращаемое значение:

Числовое значение, соответствующее индексу текущей строки поля диалога (до его изменения).

Описание:

Метод ТекущаяСтрока в тексте программного модуля можно использовать синтаксически как функцию или процедуру. Данный метод позволяет установить и/или считать текущее положение курсора в элементе диалога типа «Список» или «Поле со списком».

Данный метод можно использовать только для объектов, которые созданы при помощи визуальных средств конфигуратора (в форму вставлены элементы Диалога типа «Список» или «Поле со списком», а идентификаторы этих элементов доступны в контексте программного модуля этой формы как уже существующие объекты типа «СписокЗначений»).

Пример:

Список.ТекущаяСтрока(2);

ИзСтрокиСРазделителями

Заполнить список значениями из переданной строки.

Синтаксис:

ИзСтрокиСРазделителями(<Строка>)

Англоязычный синоним:

FromSeparatedString

Параметры:

<Строка>

Строковое выражение, содержащее строки в двойных кавычках и числа, разделенные запятыми.

Описание:

Метод ИзСтрокиСРазделителями заполняет список значениями из переданной в качестве параметра строки, содержащей строки в двойных кавычках и числа, разделенные запятыми.

Пример:

Спис.ИзСтрокиСРазделителями("5, 6, 12, 68, ""ОпредПредст""");

ВСтрокуСРазделителями

Преобразует список значений в строку, содержащую строки в двойных кавычках и числа, разделенные запятыми.

Синтаксис:

ВСтрокуСРазделителями()

Англоязычный синоним:

ToSeparatedString

Описание:

Метод ВСтрокуСРазделителями преобразует список значений в строку, содержащую строки в двойных кавычках и числа, разделенные запятыми.

Пример:

СтрПроводка = Спис.ВСтрокуСРазделителями();

Выгрузить

Выгрузить список значений в другой список значений или таблицу значений.

Синтаксис:

Выгрузить(<Знач>, <НачПоз>, <Колич>)

Англоязычный синоним:

Unload

Параметры:

<Знач> | Значение типа «Таблица значений» или «Список значений», в которое нужно выгрузить данные. При выгрузке в таблицу значений, в ней добавляется новая колонка. Если переданное значение пустое, тогда система сама создаст объект типа «Список значений».
<НачПоз> | Необязательный параметр. Номер начальной позиции, с которой надо начинать выгрузку. Значение по умолчанию 1.
<Колич> | Необязательный параметр. Количество выгружаемых значений, если не указан то все.

Описание:

Метод Выгрузить позволяет выгрузить список значений в другой список значений или таблицу значений. При выгрузке в таблицу значений, в ней добавляется новая колонка.

Пример:

СтарСписок.Выгрузить(НовСписок);


Part29

Глава 29
Работа с Таблицей Значений

Объект типа «ТаблицаЗначений» ~ это средство языка (не сохраняемый в информационной базе объект), которое позволяет строить «динамические массивы» и манипулировать ими (добавлять, редактировать, удалять элементы, сортировать). Таблица значений может быть наполнена значениями любого типа, т. е. в одной таблице типы хранимых значений могут быть разными. Таблица значений может использоваться и как простой двумерный массив (матрица) значений и как таблица строк определенной структуры, когда колонки типизованы и имеют идентификаторы.

Специальный элемент формы диалога «ТаблицаЗначений» является интерфейсным средством отображения и манипулирования этим объектом в формах диалогов. При формировании пользовательского интерфейса прикладной задачи довольно часто возникают ситуации, когда для удобства работы пользователя необходимо дать ему возможность выбирать какое-либо значение из заранее подготовленной таблицы значений. Возможности работы со справочниками, журналами и перечислениями предоставляют достаточно мощные средства выбора этих объектов. Однако, существует также необходимость в выборе значений из таблиц, сформированных и отсортированных нестандартным образом, которые невозможно или неудобно получать непосредственно при работе со стандартными визуальными представлениями журналов, справочников или перечислений.

Одним из примеров использования данного объекта может служить организация выбора конкретного товара из таблицы возможных товаров, сформированной по сложному алгоритму.

При работе с таблицей значений следует различать два понятия текущей строки таблицы. Во-первых, существует текущая строка объекта «ТаблицаЗначений», которая устанавливается при помощи методов ПолучитьСтрокуПоНомеру, ВыбратьСтроки, ПолучитьСтроку, эта текущая строка меняется программно и служит для обращения к значениям колонок с помощью идентификаторов уже без указания строки. Во-вторых, существует текущая строка элемента формы диалога «ТаблицаЗначений», которая является активной строкой (на ней установлен курсор) в диалоге. Текущая строка элемента диалога возвращается и устанавливается исключительно только при помощи метода ТекущаяСтрока. Например, если программно сменить текущую строку объекта, курсор в визуальном представлении диалога сам собой не передвинется, это можно выполнить только при помощи метода ТекущаяСтрока. Однако, при вызове из формы процедуры обработки, текущая строка объекта будет совпадать с текущей строкой визуального представления.

Контекст работы с Таблицей Значений

Во всех программных модулях вызов соответствующих методов может выполняться при помощи переменной со ссылкой на объект типа «ТаблицаЗначений». Такой объект можно создавать при помощи функции СоздатьОбъект ссылка на который присваивается переменной. Кроме того, если в форму диалога при помощи визуальных средств конфигуратора вставлен специальный элемент формы диалога «ТаблицаЗначений», то идентификатор этого элемента доступен в контексте программного модуля этой формы как уже существующий объект типа «ТаблицаЗначений».

Чтобы вызвать метод объекта, имя метода (с указанием необходимых параметров) пишется через точку после имени объекта.

При создании объекта типа «ТаблицаЗначений» при помощи функции СоздатьОбъект, в качестве названия агрегатного типа данных обязательно должно выступать ключевое слово ТаблицаЗначений.

Англоязычный синоним ключевого слова ТаблицаЗначений — ValueTable.

Пример:

МояТаблицаЗначений = СоздатьОбъект("ТаблицаЗначений");

Атрибуты Таблицы Значений

НомерСтроки

Номер текущей строки таблицы.

Синтаксис:

НомерСтроки

Англоязычный синоним:

LineNo

Описание;

Атрибут (только для чтения) НомерСтроки содержит номер текущей строки таблицы значений.

<ИдентификаторКолонки>

Значение элемента таблицы в текущей строке в колонке, заданной идентификатором.

Синтаксис:

<ИдетификаторКолонки>

Описание:

Данный атрибут содержит значение таблицы значений в текущей строке в колонке, заданной идентификатором. В тексте программного модуля используется идентификатор конкретной колонки, который задается при создании колонки при помощи методов ДобавитьКолонку и ВставитьКолонку. Если при создании колонки идентификатор колонки не указан, то обращение к колонке возможно только по номеру.

Методы объекта Таблица Значений

КоличествоКолонок

Устанавливает/возвращает количество колонок.

Синтаксис:

КоличествоКолонок(<КоличКолонок>)

Англоязычный синоним:

ColumnCount

Параметры:

<КоличКолонок>

Необязательный параметр. Числовое выражение, которое указывает новое количество колонок. Если параметр опущен, то количество колонок не меняется.

Возвращаемое значение: количество колонок до вызова метода.

Описание:

Метод КоличествоКолонок устанавливает/возвращает количество колонок таблицы значений.

Пример:

Разм = ТаблицаТоваров.КоличествоКолонок();

НоваяКолонка

Добавить в конец таблицы значений новую колонку.

Синтаксис:

НоваяКолонка(<Идентификатор>, <Тип>, <Длина>, <Точность>, <3аголовок>, <Ширина>,

              <Формат>, <Положение>)

Англоязычный синоним:

NewColumn

Параметры:

<Идентификатор> | Необязательный параметр. Идентификатор колонки, если не указан обращение к колонке возможно только по номеру.
<Тип> | Необязательный параметр. Строка или вид субкон-то, задающий тип колонки. Если не указан, то можно хранить любой тип.
<Длина> | Необязательный параметр. Длина для числовой или строковой колонки.
<Точность> | Необязательный параметр. Точность (длина дробной части) для числовой колонки.
<3аголовок> | Необязательный параметр. Строковое выражение содержащее заголовок колонки в элементе диалога типа «ТаблицаЗначений».
<Ширина> | Необязательный параметр. Числовое выражение, содержащее ширину колонки (в символах) для представления колонки в элементе диалога типа «ТаблицаЗначений».
<Формат> | Необязательный параметр. Строковое выражение, содержащее форматную строку, которая будет использована при визуальном отображении значений данной колонки.
<Положение> | Необязательный параметр. Определяет вариант выравнивания при визуальном отображении значений данной колонки. Число: 1 — слева; 2 — справа.

Возвращаемое значение: номер новой колонки.

Описание:

Метод НоваяКолонка добавляет в конец таблицы значений новую колонку,

Пример:

Табл.НоваяКолонка("Код", "Число", 6, 0, "Код", 6);

ВставитьКолонку

Вставить новую колонку в таблицу значений в указанную позицию.

Синтаксис:

ВставитьКолонку(<Идентификатор>, <НомерКолонки>, <Тип>, <Длина>, <Точность>,

                <3аголовок>, <Ширина>, <Формат>, <Положение>)

Англоязычный синоним:

InsertColumn

Параметры:

<Идентификатор> | Необязательный параметр. Идентификатор колонки, если не указан обращение к колонке возможно только по номеру.
<НомерКолонки> | Необязательный параметр. Числовое выражение, содержащее позицию, в которую вставляется новая колонка.
<Тип> | Необязательный параметр. Строка или вид суб кон-то, задающий тип колонки. Если не указан, то можно хранить любой тип.
<Длина> | Необязательный параметр. Длина для числовой или строковой колонки.
<Точность> | Необязательный параметр. Точность (длина дробной части) для числовой колонки.
<Заголовок> | Необязательный параметр. Строковое выражение, содержащее заголовок колонки в элементе диалога типа «ТаблицаЗначений».
<Ширина> | Необязательный параметр. Числовое выражение, содержащее ширину колонки (в символах) для представления колонки в элементе диалога типа «ТаблицаЗначений».
<Формат> | Необязательный параметр. Строковое выражение, содержащее форматную строку, которая будет использована при визуальном отображении значений данной колонки.
<Положение> | Необязательный параметр. Определяет вариант выравнивания при визуальном отображении значений данной колонки. Число: 1 — слева; 2 — справа.

Возвращаемое значение: номер новой колонки.

Описание:

Метод ВставитьКолонку вставляет новую колонку в таблицу значений в указанную позицию.

Пример:

Табл.ВставитьКолонку("Код", 1, "Число", 6, 0, "Код", 6);

УдалитьКолонку

Удаляет колонку из таблицы значений.

Синтаксис:

УдалитьКолонку(<Колонка>)

Англоязычный синоним:

DeleteColumn

Параметры:

<Колонка>

Номер или идентификатор колонки.

Описание:

Метод УдалитьКолонку удаляет колонку <Колонка> из таблицы значений.

Пример:

ТаблДокументов.УдалитьКолонку(2);

УстановитьПараметрыКолонки

Устанавливает новые значения параметров колонки.

Синтаксис:

УстановитьПараметрыКолонки(<Колонка>, <Тип>, <Длина>, <Точность>, <3аголовок>,

                           <Ширина>, <Формат>, <Положение>)

Англоязычный синоним:

SetColumnParameters

Параметры:

<Колонка> | Номер или идентификатор колонки, для которой будут установлены новые параметры.
<Тип> | Необязательный параметр. Строка, описывающая тип колонки или вид субконто.
<Длина> | Необязательный параметр. Длина для строковых и числовых значений.
<Точность> | Необязательный параметр. Точность для числовых значений.
<3аголовок> | Необязательный параметр. Заголовок колонки для показа.
<Ширина> | Необязательный параметр. Ширина колонки в таблице.
<Формат> | Необязательный параметр. Строковое выражение, содержащее форматную строку, которая будет использована при визуальном отображении значений данной колонки.
<Положение> | Необязательный параметр. Определяет вариант выравнивания при визуальном отображении значений данной колонки. Число: 1 — слева; 2 — справа.

Описание:

Метод УстановитьПараметрыКолонки устанавливает новые значения параметров колонки (только те которые указаны). Если какой либо параметр при вызове метода не задан, то данный параметр колонки не изменяется.

Пример:

Табл.УстановитьПараметрыКолонки("Код", "Число", 6, 0, "Код", 6);

ПолучитьПараметрыКолонки

Возвращает значения параметров колонки.

Синтаксис:

ПолучитьПараметрыКолонки(<Колонка>, <Тип>, <Длина>, <Точность>, <3аголовок>,

                         <Ширина>, <Формат>, <Положение>)

Англоязычный синоним:

GetColumnParameters

Параметры:

<Колонка> | Номер или идентификатор колонки, для которой требуется получить параметры.
<Тип> | Необязательный параметр. Идентификатор переменной, в которую метод вернет строку, описывающую тип колонки.
<Длина> | Необязательный параметр. Идентификатор переменной, в которую метод вернет длину для строковых и числовых значений.
<Точность> | Необязательный параметр. Идентификатор переменной, в которую метод вернет точность для числовых значений колонки.
<3аголовок> | Необязательный параметр. Идентификатор переменной, в которую метод вернет строку, описывающую заголовок колонки для показа.
<Ширина> | Необязательный параметр. Идентификатор переменной, в которую метод вернет ширину колонки в таблице.
<Формат> | Необязательный параметр. Строковое выражение, содержащее форматную строку, которая будет использована при визуальном отображении значений данной колонки.
<Положение> | Необязательный параметр. Определяет вариант выравнивания при визуальном отображении значений данной колонки. Число: 1 — слева; 2 — справа.

Возвращаемое значение:

Номер или идентификатор колонки. Если в параметре <Колонка> задан номер колонки, то возвращается идентификатор колонки, и наоборот.

Описание:

Метод ПолучитьПараметрыКолонки возвращает значения параметров колонки по номеру колонки или по ее идентификатору.

Пример:

Перем ВыбТип;

Перем ВыбДлина;

Перем ВыбТочность;

Перем ВыбЗаголовок;

Перем ВыбШирина;

Табл.ПолучитьПараметрыКолонки("Код", ВыбТип, ВыбДлина, ВыбТочность, ВыбЗаголовок,

                                ВыбШирина);

КоличествоСтрок

Устанавливает/возвращает количество строк в таблице значений,

Синтаксис:

КоличествоСтрок(<НовоеКоличествоСтрок>)

Англоязычный синоним:

LinesCnt

Параметры:

<НовоеКоличествоСтрок>

Необязательный параметр. Новое количество строк в таблице значений.

Возвращаемое значение:

Числовое значение — количество строк в таблице значений до вызова метода.

Описание:

Метод КоличествоСтрок устанавливает/возвращает количество строк в таблице значений

Пример:

Разм = ТаблицаТоваров.КоличествоСтрок();

НоваяСтрока

Добавляет новую строку в таблицу значений.

Синтаксис:

НоваяСтрока(<НомерСтроки>)

Англоязычный синоним:

NewLine

Параметры:

<НомерСтроки>       Необязательный параметр. Числовое выражение, содержащее позицию, в которую следует вставить новую строку.

Возвращаемое значение: номер новой строки.

Описание:

Метод НоваяСтрока вставляет новую строку в таблицу значений в указанную позицию.

Пример:

Табл.НоваяСтрока(1);

УдалитьСтроку

Удаляет строку из таблицы значений.

Синтаксис:

УдалитьСтроку(<НомерСтроки>)

Англоязычный синоним:

DeleteLine

Параметры:

<НомерСтроки>

Необязательный параметр. Номер строки. Если не указан, то удаляется текущая строка

Описание:

Метод УдалитьСтроку удаляет строку из таблицы значений.

Пример:

ТаблДокументов.УдалитьСтроку(2);

УдалитьСтроки

Удаляет все строки из таблицы значений.

Синтаксис:

УдалитьСтроки()

Англоязычный синоним:

DeleteLines

Описание:

Метод УдалитьСтроки удаляет все строки из таблицы значений.

Пример:

ТаблДокументов.УдалитьСтроки();

ВыбратьСтроки

Открывает выборку строк таблицы значений.

Синтаксис:

ВыбратьСтроки()

Англоязычный синоним:

SelectLines

Описание:

Метод ВыбратьСтроки предоставляет возможность перебирать строки таблицы значений (открывает выборку). Дальнейшая выборка осуществляется при помощи метода ПолучитьСтроку.

Пример:

Табл.ВыбратьСтроки();

Пока Табл.ПолучитьСтроку() = 1 Цикл

   ...

КонецЦикла;

ПолучитьСтроку

Получить из выборки следующую строку таблицы значений.

Синтаксис:

ПолучитьСтроку()

Англоязычный синоним:

GetLine

Возвращаемое значение:

Число: 1 — если строка выбрана успешно, 0 — если строка не выбрана (выборка закончилась).

Описание:

Метод ПолучитьСтроку выбирает следующую строку таблицы значений в последовательности выборки, открытой перед этим при помощи метода ВыбратьСтроки.

Пример:

Табл.ВыбратьСтроки();

Пока Табл.ПолучитьСтроку() = 1 Цикл

   ...

КонецЦикла;

ВыбратьСтроку

Открыть окно для интерактивного выбора строки в таблице значений.

Синтаксис:

ВыбратьСтроку(<Строка>, <3аголовок>, < Таймаут>)

Англоязычный синоним:

ChooseLine

Параметры:

<Строка> | Необязательный параметр. Идентификатор переменной, куда помещается значение — номер выбранной строки. При вызове метода здесь можно передавать значение начального номера строки.
<3аголовок> | Необязательный параметр. Строковое выражение, значение которого отображается в заголовке диалогового окна. Может использоваться для подсказки пользователю.
<Таймаут> | Необязательный параметр. Числовое выражение, значение которого задает время ожидания системы (в секундах) на отклик пользователя. Если не задано, то время ожидания бесконечно.

Возвращаемое значение:

Числовое значение: 1 — если выбор произведен (нажата кнопка «ОК»); 0 — если выбор не произведен (нажата кнопка «ОТМЕНА»); -1 (минус единица) — закончилось время <Таймаут> ожидания отклика пользователя.

Описание:

Метод ВыбратьСтроку вызывает диалоговое окно для интерактивного выбора строки из заранее подготовленной таблицы значений. Параметр <Строка> указывает на ту строку таблицы значений, на которой будет установлен курсор при открытии окна выбора. В этот же параметр возвращается выбранное значение. Если выбор отменен, то значение параметров не меняются.

Пример:

Перем НомСтроки;

Табл.ВыбратьСтроку(НомСтроки, "Выберите строку");

ПолучитьСтрокуПоНомеру

Получить строку таблицы значений по номеру.

Синтаксис:

ПолучитьСтрокуПоНомеру(<НомерСтроки>)

Англоязычный синоним:

GetLineByNumber

Параметры:

<НомерСтроки>

Номер строки, на которую следует переместиться.

Описание:

Метод ПолучитьСтрокуПоНомеру получает строку таблицы значений по заданному номеру. Указанная строка становится текущей.

Пример:

Табл.ПолучитьСтрокуПоНомеру(3);

СдвинутьСтроку

Переместить строку таблицы значений на новую позицию.

Синтаксис:

СдвинутьСтроку(<КоличествоСтрок>, <НомерСтроки>)

Англоязычный синоним:

MoveLine

Параметры:

<КоличествоСтрок> | Число строк, на которое надо переместить строку. Если число положительное, то строка сдвигается вниз, если отрицательное, то вверх.
<НомерСтроки> | Необязательный параметр. Номер строки, которую надо переместить, если не задан, то текущая.

Возвращаемое значение: новая позиция строки

Описание:

Метод СдвинутьСтроку перемещает строку таблицы значений на новую позицию.

Пример:

Табл.СдвинутьСтроку(3, 5);

УстановитьЗначение

Установить значение конкретной колонки в данной строке таблицы значений.

Синтаксис:

УстановитьЗначение(<Строка>, <Колонка>, <Знач>)

Англоязычный синоним:

SetValue

Параметры:

<Строка> | Номер строки.
<Колонка> | Номер или идентификатор колонки.
<Знач> | Устанавливаемое значение.

Описание:

Метод УстановитьЗначение устанавливает значение конкретной колонки в данной строке таблицы значений.

Пример:

Табл.УстановитьЗначение(3, 5, ВыбЗнач);

ПолучитьЗначение

Получить значение конкретной колонки в данной строке таблицы значений.

Синтаксис:

ПолучитьЗначение(<Строка>, <Колонка>)

Англоязычный синоним:

GetValue

Параметры:

<Строка> | Номер строки.
<Колонка> | Номер или идентификатор колонки.

Возвращаемое значение:

Значение конкретной колонки в данной строке.

Описание:

Метод ПолучитьЗначение получает значение конкретной колонки в данной строке таблицы значений.

Пример:

ВыбЗнач = Табл.ПолучитьЗначение(3, 5);

НайтиЗначение

Найти заданное значение в таблице значений.

Синтаксис:

НайтиЗначение(<Знач>, <Строка>, <Колонка>)

Англоязычный синоним:

FindValue

Параметры:

<Знач> | Значение для поиска.
<Строка> | Идентификатор переменной, куда возвращается номер найденной строки. Если при вызове метода передать в этот параметр номер строки, то поиск будет осуществляться только по указанной строке.
<Колонка> | Идентификатор переменной, куда возвращается номер найденной колонки. Если при вызове метода передать в этот параметр номер или идентификатор колонки, то поиск будет осуществляться только по указанной колонке.

Возвращаемое значение:

Число: 0 — значение не найдено; 1 — значение найдено.

Описание:

Метод НайтиЗначение позволяет найти искомое значение в таблице значений и определить номер строки и номер колонки таблицы значений.

Пример:

Перем НомСтр;

Перем НомКолонки;

Табл.НайтиЗначение(ВыбЗнач, НомСтр, НомКолонки);

Сортировать

Сортировать таблицу значений по колонкам.

Синтаксис:

Сортировать(<Колонки>, <ДокументыПоДате>)

Англоязычный синоним:

Sort

Параметры:

<Колонки> | Строковое выражение, которое определяет колонки, порядок и направление сортировки. Формат передаваемой строки — это разделенные запятыми номера или идентификаторы колонок со знаком направления сортировки ("+" по возрастанию, "-" по убыванию, "*" по внутреннему значению). Знак направления сортировки следует указывать до обозначения колонки через пробел или без пробела. По умолчанию направление сортировки принимается по возрастанию. Например: "-Код, +Цена, -8, 5".
<ДокументыПоДате> | Необязательный параметр. Имеет смысл только в том случае, если значениями таблицы значений являются документы. В этом случае можно задавать сортировку документов по их хронологии. Число: 1 — сортировка по хронологии документов; 0 — нет. Значение по умолчанию — 0.

Описание:

Метод Сортировать выполняет сортировку таблицы значений по заданным колонкам, порядку и направлению сортировки.

Пример:

Табл.Сортировать("-Код, +Цена, -8, 5");

Очистить

Очистить таблицу значений и удалить колонки.

Синтаксис:

Очистить()

Англоязычный синоним:

Clear

Описание:

Метод Очистить выполняет очистку таблицы значений и удаляет колонки.

Пример:

Табл.Очистить();

Итог

Вычислить сумму по колонке таблицы значений.

Синтаксис:

Итог(<Колонка>)

Англоязычный синоним:

Total

Параметры:

<Колонка>

Номер или идентификатор колонки, по которой считать сумму.

Возвращаемое значение:

Сумма по колонке.

Описание:

Метод Итог вычисляет сумму по заданной колонке таблицы значений.

Пример:

Табл.Итог(2);

Заполнить

Заполнить значения конкретных колонок в строках таблицы значений переданным значением.

Синтаксис:

Заполнить(<Знач>, <НачСтрока>, <КонСтрока>, <Колонки>)

Англоязычный синоним:

Fill

Параметры:

<Знач> | Одиночное значение или список значений или таблица значений.
<НачСтрока> | Необязательный параметр. Номер начальной строки, с которой надо начинать заполнение. Значение по умолчанию 1.
<КонСтрока> | Необязательный параметр. Номер последней строки, по которую надо заполнять, если не указана то до последней.
<Колонки> | Необязательный параметр. Номера или идентификаторы колонок, которые надо заполнять. Если параметр не задан, то заполняются все колонки.

Описание:

Метод Заполнить позволяет заполнить значения конкретных колонок в строках таблицы значений переданным значением.

Пример:

Табл.Заполнить(ВыбЗнач, 2, 5, "5, 6, 7");

Свернуть

Свернуть таблицу значений но соответствующим значениям колонок.

Синтаксис:

Свернуть(<ГруппКолонки>, <СуммКолонки>)

Англоязычный синоним:

GroupBy

Параметры:

<ГруппКолонки> | Группировочные колонки (номера или идентификаторы колонок через запятую), по которым группировать данные.
<СуммКолонки> | Суммируемые колонки (номера или идентификаторы колонок через запятую), по которым суммировать данные.

Описание:

Метод Свернуть позволяет свернуть таблицу значений по соответствующим значениям колонок, т. е. заменяет на одну строку все дублирующие (по значениям группировочных колонок) строки, суммируя значения но суммируемым колонкам.

Пример:

Табл.Свернуть("1,2,3,4", "5,6,7");

Выгрузить

Выгрузить данные из таблицы значений.

Синтаксис:

Выгрузить(<Знач>, <НачСтрока>, <КонСтрока>, <Колонки>)

Англоязычный синоним:

Unload

Параметры:

<Знач> | Идентификатор переменной, содержащей значение типа «Таблица значений» или «Список значений», в которое нужно выгрузить данные. Если переданное значение пустое, тогда система сама создаст объект типа «Таблица значений».
<НачСтрока> | Необязательный параметр. Номер начальной строки, с которой надо начинать выгрузку. Значение по умолчанию 1.
<КонСтрока> | Необязательный параметр. Номер последней строки, по которую надо выгружать, если не указана, то до последней.
<Колонки> | Необязательный параметр. Номера или идентификаторы колонок, которые надо выгружать. Если параметр не задан, то выгружаются все колонки.

Описание:

Метод Выгрузить позволяет выгрузить заданную область таблицы значений в переданное значение. Если в качестве значения для выгрузки задан список значений, то система выгружает данные из таблицы значений по колонкам.

Пример:

НовТабл = СоздатьОбъект("ТаблицаЗначений");

СтарТабл.Выгрузить(НовТабл, 1, 5, "1,3,5,7");

Загрузить

Скопировать структуру и значения таблицы значений.

Синтаксис:

Загрузить(<ТаблицаЗначений>)

Англоязычный синоним:

Load

Параметры:

<ТаблицаЗначений>

Значение типа «Таблица значений». Структура и значения для загрузки.

Описание:

Метод Загрузить позволяет скопировать структуру и значения таблицы значений. Прежняя структура колонок таблицы значений при этом очищается.

Пример:

НовТабл = СоздатьОбъект("ТаблицаЗначений");

НовТабл.Загрузить(СтарТабл);

ВидимостьКолонки

Показать/скрыть колонки таблицы значений.

Синтаксис:

ВидимостьКолонки(<Колонки>, <Видимость>, <Позиция>)

Англоязычный синоним:

ColumnVisibility

Параметры:

<Колонки> | Строковое выражение, которое определяет список колонок. Формат передаваемой строки — это разделенные запятыми номера или идентификаторы колонок, для которых применяется данный метод. Например: «Код, Цена, 8, 5».
<Видимость> | Необязательный параметр. Число: 1 — показать колонки; 0 — скрыть. По умолчанию — 1.
<Пoзиция> | Необязательный параметр. Позиция, в которой показывать колонку. Если параметр не задан, то колонки отображаются в соответствии с порядком колонок в таблице.

Возвращаемое значение:

Если передана одна колонка, то возвращается значение видимости колонки до вызова метода. Число: 1 — колонка показана; 0 — колонка скрыта.

Описание:

Метод ВидимостьКолонки определяет перечень колонок и их видимость в визуальном представлении таблицы значений.

Пример:

ТаблДиалога.ВидимостьКолонки("Код, Цена, 8, 5");

ТекущаяСтрока

Установить/определить текущую строку таблицы в элементе диалога типа «ТаблицаЗначений».

Синтаксис:

ТекущаяСтрока(<ИндексСтроки>)

Англоязычный синоним:

CurrentLine

Параметры:

<ИндексСтроки>

Необязательный параметр. Числовое выражение с задаваемым индексом строки для элемента диалога типа «ТаблицаЗначений», на которую требуется установить курсор. Если параметр не задан, то положение курсора в поле диалога не меняется.

Возвращаемое значение:

Числовое значение, соответствующее индексу текущей строки поля диалога (до его изменения) или 0, если текущей строки нет.

Описание:

Метод ТекущаяСтрока в тексте программного модуля можно использовать синтаксически как функцию или процедуру. Данный метод позволяет установить и/или считать текущее положение курсора в элементе диалога типа «ТаблицаЗначений».

Данный метод можно использовать только для объектов, которые созданы при помощи визуальных средств конфигуратора (в форму вставлены элементы диалога «ТаблицаЗначений», а идентификаторы этих элементов доступны в контексте программного модуля этой формы как уже существующие объекты типа «ТаблицаЗначений»).

Пример:

ТаблДиалога.ТекущаяСтрока(2);

ТекущаяКолонка

Установить/определить текущую колонку таблицы в элементе диалога типа «ТаблицаЗначений».

Синтаксис:

ТекущаяКолонка(<НоваяКолонка>, <ТекущаяКолонка>)

Англоязычный синоним:

CurrentColumn

Параметры:

<НоваяКолонка> | Необязательный параметр. Номер или идентификатор колонки для элемента диалога типа «ТаблицаЗначений», на которую требуется установить курсор. Если параметр не задан, то текущая колонка в поле диалога не меняется.
<ТекущаяКолонка> | Необязательный параметр. Идентификатор переменной, куда система возвращает номер текущей колонки.

Возвращаемое значение:

Идентификатор текущей колонки поля диалога (до его изменения) или "" (пустая строка), если ее нет.

Описание:

Метод ТекущаяКолонка в тексте программного модуля можно использовать синтаксически как функцию или процедуру. Данный метод позволяет установить и/или считать текущее положение курсора в элементе диалога типа «ТаблицаЗначений».

Данный метод можно использовать только для объектов, которые созданы при помощи визуальных средств конфигуратора (в форму вставлены элементы диалога «ТаблицаЗначений», а идентификаторы этих элементов доступны в контексте программного модуля этой формы как уже существующие объекты типа «ТаблицаЗначений»).

Пример:

Перем НомКолонки;

ТаблДиалога.ТекущаяКолонка(2, НомКолонки);

Фиксировать

Фиксировать в элементе диалога типа «ТаблицаЗначений» колонки и строки.

Синтаксис:

Фиксировать(<КолСтрок>, <КолКолонок>)

Англоязычный синоним:

Fix

Параметры:

<КолСтрок> | Необязательный параметр. Количество фиксируемых строк. Если не указаны, то не изменять фиксацию.
<КолКолонок> | Необязательный параметр. Количество фиксируемых колонок. Если не указаны, то не изменять фиксацию.

Описание:

Метод Фиксировать позволяет фиксировать в элементе диалога типа «ТаблицаЗначений» колонки и строки.

Пример:

ТаблДиалога.Фиксировать(1, 1);

ВыводитьПиктограммы

Выводить в элементе диалога типа «ТаблицаЗначений» пиктограммы.

Синтаксис:

ВыводитьПиктограммы(<Колонка>, <Пиктограмма>)

Англоязычный синоним:

Showlmages

Параметры:

<Колонка> | Номер или идентификатор колонки, которая содержит номера пиктограмм.
<Пиктограмма> | Необязательный параметр. Начальный номер пиктограммы. Значение по умолчанию: 1.

Описание:

Метод ВыводитьПиктограммы устанавливает режим, при котором в колонке выводится не текст, а пиктограмма. Пиктограмма будет браться из картинки, назначенной элементу диалога «ТаблицаЗначений» в закладке «Картинка» в конфигураторе. Картинка должна быть формата .bmp, содержать все пиктограммы для этой таблицы значений, и состоять из последовательности пиктограмм размером 16х15 пикселей. Пиктограммы будут выбираться из картинки по номеру, взятому из числового значения данной колонки в текущей строке. Параметр <Пиктограмма> позволяет установить для данной колонки начальный номер пиктограмм в картинке.

Пример:

ТаблДиалога.ВыводитьПиктограммы(1, 1);

Пример использования объекта Таблица Значений

Пример:

Функция ВыбратьОплаты(ВыбДок)

   ТЗ = СоздатьОбъект("ТаблицаЗначений");

   ТЗ.НоваяКолонка("ДатаДок", "Дата", , , "Дата", 15);

   ТЗ.НоваяКолонка("Номер", "Строка", 20, , "Номер", 15);

   ТЗ.НоваяКолонка("Сумма", "Число", 18, 2, "Сумма", 20);

   ТЗ.НоваяКолонка("РасчетныйСчет", "Справочник.БанковскиеСчета", , ,

                   "Расч.счет", 30);

   ТЗ.НоваяКолонка("ПодчДок", "Документ", , , );

   ТЗ.ВидимостьКолонки("ПодчДок", 0);

   Док = СоздатьОбъект("Документ");

   Док.ВыбратьПодчиненныеДокументы(, , ВыбДок);

   Пока Док.ПолучитьДокумент() = 1 Цикл

      Если Док.Вид() = "ОплатаПоставщикам" Тогда

         ТЗ.НоваяСтрока();

         ТЗ.ДатаДок = Док.ДатаДок;

         ТЗ.Номер = Док.НомерДок;

         ТЗ.Сумма = Док.Итог("Сумма");

         ТЗ.РасчетныйСчет = Док.РасчетныйСчет;

         ТЗ.ПодчДок = Док.ТекущийДокумент();

      КонецЕсли;

   КонецЦикла;

   ВыбСтрока = 0;

   Если ТЗ.ВыбратьСтроку(ВыбСтрока, "Выберите оплату") = 1 Тогда

      Возврат ТЗ.ПолучитьЗначение(ВыбСтрока, "ПодчДок");

КонецФункции


Part30

Глава 30
Атрибуты и методы контекста Модуля формы

Описанные в данной главе атрибуты и методы доступны только в контексте Модуля формы (см. «Виды программных модулей»). К Модулям форм относятся практически все программные модули (исключение составляют Глобальный модуль, Модуль документа, Модуль вида расчета).

Атрибуты контекста Модуля формы

СтрокаДействийФормы

Содержит командную строку системных действий в кнопке формы.

Синтаксис:

СтрокаДействийФормы

Англоязычный синоним:

StringFormActions

Описание:

Атрибут СтрокаДействийФормы предоставляет доступ к значению командной строки кнопки формы (строка системных команд в свойствах кнопки после символа #). Данный атрибут доступен в процедуре, вызываемой перед знаком # из строки формулы кнопки (кнопка — «Свойства» — «Дополнительные» — «Формула»).

Доступ к данному атрибуту возможен только в контексте Модуля формы.

Пример:

* Допустим, что в некоторой форме в свойствах какой-либо кнопки записана следующая формула:

УстКоманд() # Записать? Провести? Закрыть?

В программном модуле можно записать процедуру, которая будет устанавливать значение командной строки действий:

Процедура УстКоманд()

   Если НазваниеНабораПрав() = "Продавец" Тогда

      СтрокаДействийФормы = "Записать? Закрыть?";

   ИначеЕсли НазваниеНабораПрав() = "Менеджер" Тогда

      СтрокаДействийФормы = "Записать? Провести? Закрыть?";

   Иначе

      СтрокаДействийФормы = "Закрыть?";

КонецПроцедуры

Форма

Объект агрегатного типа «Форма».

Синтаксис:

Форма

Англоязычный синоним:

Form

Описание:

Атрибут Форма представляет собой ссылку на объект типа «Форма». Атрибуты и методы объекта «Форма» позволяют в программном модуле изменять свойства визуального отображения диалога в целом (такие как Заголовок, Закладки и т. п.), а также свойства визуального отображения отдельных элементов диалога.

В тексте программного модуля через точку после имени атрибута «Форма» можно записывать идентификаторы элементов диалога, а далее через точку можно вызывать методы управления свойствами этих элементов.

Доступ к данному атрибуту возможен только в контексте Модуля формы.

Пример:

Форма.ТолькоПросмотр(0);

Форма.Prompt.Видимость(0);

Атрибуты объекта Форма

Закладки

Объект типа «СписокЗначений», содержащий описания закладок текущей формы.

Синтаксис:

Закладки

Англоязычный синоним:

TabCtrl

Описание:

Атрибут объекта «Форма» Закладки представляет собой объект типа «СписокЗначений», содержащий описания закладок текущей формы. Данный атрибут предоставляет возможность программно манипулировать порядком и названиями закладок формы. В тексте программного модуля через точку после имени объекта «Форма» можно вызвать атрибут «Закладки», а далее через точку можно вызывать методы управления закладками как объектом типа «СписокЗначений».

Доступ к данному атрибуту возможен только в контексте Модуля формы после применения метода ИспользоватьЗакладки.

Пример:

Процедура ОбработкаКлиектов()

   Если ФлагФранчайзи = 1 Тогда

      Если Форма.Закладки.НайтиЗначение(2) = 0 Тогда

         Форма.Закладки.ДобавитьЗначение(2, "Поставщики");

      КонецЕсли;

   Иначе

      Позиция = Форма.Закладки.НайтиЗначение(2);

      Если Позиция > 0 Тогда

         Форма.Закладки.УдалитьЗначение(Позиция);

      КонецЕсли;

   КонецЕсли;

   форма.Закладки.Сортировать();

КонецПроцедуры

См. также: ИспользоватьЗакладки, ПриВыбореЗакладки, «Работа со СпискомЗначений»

<ЭлементДиалога>

Объект агрегатного типа «элемент диалога».

Синтаксис:

<ЭлементДиалога>

Описание:

Значение атрибута объекта «Форма» <ЭлементДиалога> представляет собой ссылку на элемент диалога. Элементы диалога — это объекты специального агрегатного типа. Методы элементов диалога позволяют в программном модуле изменять их свойства, такие как Цвет, Видимость, Доступность.

В тексте программного модуля через точку после имени объекта «Форма» можно вызвать атрибут <ЭлементДиалога>, а далее через точку можно вызывать методы управления их свойствами. В тексте программного модуля в качестве названия данного атрибута подставляется идентификатор конкретного элемента диалога, существующего в диалоговом окне формы.

Пример:

// в форме диалога существуют элементы

// НазвФирмы, ИнформПоле, Название

// Поменяем свойства этих элементов диалога

Форма.НазвФирмы.Доступность(0);

Форма.ИнформПоле.Видимость(0);

Форма.Название.Цвет(255, 0, 0);

См. также: Цвет, Видимость, Доступность

Параметр

Параметр, переданный при программном открытии формы.

Синтаксис:

Параметр

Англоязычный синоним:

Parameter

Описание:

Атрибут Параметр объекта «Форма» представляет собой значение, переданное данной форме при ее открытии программно с помощью методов Открытьформу, ОткрытьФормуМодально, ОткрытьПодбор. Если форма открыта интерактивно или если параметр при программном открытии не передавался, то данный атрибут содержит значение неопределенного типа.

Доступ к данному атрибуту возможен только в контексте Модуля формы.

Пример:

ПереданныйПараметр = Форма.Параметр;

См. также: ОткрытьФорму, ОткрытьФормуМодально, ОткрытьПодбор

Методы объекта Форма

При помощи объекта «Форма» предоставляется возможность управлять визуальным представлением текущей формы, опрашивать текущее состояние режима работы формы и т. п.

ТолькоПросмотр

Установка режима редактирования формы,

Синтаксис:

ТолькоПросмотр(<Режим>)

Англоязычный синоним:

Readonly

Параметры:

<Режим>

Необязательный параметр. Числовое выражение:

0 — разрешено редактирование элементов формы;

1 — запрещено редактирование.

Возвращаемое значение:

Текущее числовое значение режима редактирования формы (на момент до исполнения метода).

Описание:

Метод ТолькоПросмотр позволяет установить режим редактирования текущей формы.

Доступ к данному методу возможен только в контексте Модуля формы.

Пример:

Форма.ТолькоПросмотр(0);

Обновить

Обновить форму.

Синтаксис:

Обновись(<Флаг>)

Англоязычный синоним:

Refresh

Параметры:

<Флаг>

Числовое выражение:

1 — установить флаг модифицированности (признак изменения реквизитов текущей формы справочника или документа);

0 — не устанавливать флаг модифицированности.

Описание:

Метод Обновить выполняет обновление окна формы. Кроме того, этот метод позволяет программно установить флаг модифицированности формы. Данный метод имеет смысл вызывать, если через контекст формы (извне, из другого программного модуля) были произведены изменения реквизитов формы.

Доступ к данному методу возможен только в контексте Модуля формы.

Пример:

Форма.Обновить(1)

См. также: ОткрытьФорму, ОткрытьПодбор, Модифицированность

ИспользоватьЗакладки

Установить режим использования закладок в форме.

Синтаксис:

ИспользоватьЗакладки(<Флаг>)

Англоязычный синоним:

TabCtrlState

Параметры:

<Флаг>

Необязательный параметр. Числовое выражение:

1 — включить закладки в форме;

0 — выключить закладки в форме.

Возвращаемое значение:

Текущее значение режима использования закладок формы (на момент до исполнения метода).

Описание:

Метод ИспользоватьЗакладки устанавливает режим использования закладок в форме.

Доступ к данному методу возможен только в контексте Модуля формы.

Пример:

Форма.ИспользоватьЗакладки(1)

См. также: Закладки, ПриВыбореЗакладки, ИспользоватьСлой

ИспользоватьСлой

Установить режим отображения слоя в форме.

Синтаксис:

ИспользоватьСлой(<ИмяСлоя>, <Режим>)

Англоязычный синоним:

UseLayer

Параметры:

<ИмяСлоя> | Строковое выражение — название слоя формы как оно задано в конфигураторе. Параметр может быть составным (указывать несколько слоев). В этом случае имена слоев перечисляются через запятую.
<Режим> | Необязательный параметр. Числовое выражение: 0 — скрыть слой <ИмяСлоя> в форме; 1 — показать слой <ИмяСлоя> в форме; 2 — показать слой <ИмяСлоя> и скрыть все остальные. Значение по умолчанию — 2.

Описание:

Метод Использовать Слой устанавливает режим отображения слоя в форме. Доступ к данному методу возможен только в контексте Модуля формы.

Пример:

Форма.ИспользоватьСлой("Основной, КнопкиДиалога, Дополнительный", 1);

См. также: Закладки, ПриВыбореЗакладки

Заголовок

Установка заголовка окна формы.

Синтаксис:

Заголовок(<Название>, <Режим>)

Англоязычный синоним:

Caption

Параметры:

<Название> | Строковое выражение — новый заголовок окна формы.
<Режим> | Числовое выражение: 0 — выводит заданный заголовок вместо стандартного заголовка окна; 1 — выводит заданный загловок вместе со стандартным заголовком окна.

Возвращаемое значение:

Текущий заголовок окна формы, установленный этой функцией.

Описание:

Метод Заголовок позволяет установить новый заголовок окна формы. Доступ к данному методу возможен только в контексте Модуля формы.

Пример:

Форма.Заголовок("Накладная №" + Док.НомерДок, 0 );

ПанельИнструментов

Управление видимостью панели инструментов окна формы.

Синтаксис:

ПаяельИнструментов(<Режим>)

Англоязычный синоним:

ToolBar

Параметры:

<Режим>

Необязательный параметр. Числовое выражение: 1 — показать панель инструментов; 0 — не показывать панель инструментов. Если параметр не задан, то метод просто возвращает текущее состояние видимости панели инструментов.

Возвращаемое значение:

Текущее состояние видимости панели инструментов окна формы.

Описание:

Метод ПанельИнструментов предоставляет возможность управления видимостью панели инструментов окна формы.

Доступ к данному методу возможен только в контексте Модуля формы.

Пример:

Форма.ПанельИнструментов(0);

КнопкаПоУмолчанию

Задает кнопку в форме, которая будет «срабатывать» при нажатии комбинации клавиш Ctrl + Enter.

Синтаксис:

КнопкаПоУмолчанию(<ИдентификаторКнопки>)

Англоязычный синоним:

DefButton

Параметры:

<ИдентификаторКнопки>

Строковое выражение — идентификатор одной из кнопок формы объекта метаданных.

Описание:

Метод КнопкаПоУмолчанию позволяет назначить одну из кнопок формы кнопкой «по умолчанию»: в этом случае нажатие комбинации клавиш Ctrl+Enter приведет к такому же результату, как и нажатие такой кнопки мышью.

В качестве параметра методу передается идентификатор одной из кнопок формы — так, как он указан в палитре свойств соответствующего элемента диалога типа «Кнопка».

Пример:

* В модуле формы документа «ПлатежноеПоручение» кнопкой по умолчанию назначается кнопка с идентификатором " ОК".

Процедура ПриОткрытии()

   Форма.КнопкаПоУмолчанию("ОК");

КонецПроцедуры

ОбработкаВыбораСтроки

Включает в форме списка обработку выбора строки предопределенной процедурой ПриВыбореСтроки.

Синтаксис:

ОбработкаВыбораСтроки(<Флаг>)

Англоязычный синоним:

ProcessSelectLine

Параметры:

<Флаг>

Числовое выражение: 1 — включает обработку выбора предопределенной процедурой; 0 — выключает обработку выбора предопределенной процедурой.

Описание:

Метод ОбработкаВыбораСтроки включает в форме списка (справочника, журнала, счетов, журнала операций, журнала проводок) обработку выбора строки предопределенной процедурой ПриВыбореСтроки.

Доступ к данному методу возможен только в контексте Модуля формы списка.

Пример:

Форма.ОбработкаВыбораСтроки(1)

См. также: ПриВыбореСтроки

ВыполнитьВыбор

Осуществляет выбор из формы подбора.

Синтаксис:

ВыполнитьВыбор(<Знач>)

Англоязычный синоним:

MakeChoise

Параметры:

<Знач>

Значение, которое выбирается в форме, открытой для подбора или выбора значения.

Описание:

Метод ВыполнитьВыбор осуществляет выбор в форме, открытой для подбора или выбора значения (аналогично интерактивному двойному щелчку в подборе). Метод предназначен, прежде всего, для организации подбора из формы отчета.

Доступ к данному методу возможен только в контексте Модуля формы.

Пример:

// осуществим выбор в форме журнала документов

Форма.ВыполнитьВыбор(ТекущийДокумент);

РежимВыбора

Возвращает режим работы формы.

Синтаксис:

РежимВыбора()

Англоязычный синоним:

ChoiseMode

Возвращаемое значение:

Число: 0 — форма открыта не для выбора; 1 — форма открыта для выбора одного значения; 2 — форма открыта для выбора нескольких значений.

Описание:

Метод РежимВыбора возвращает режим работы формы. Доступ к данному методу возможен только в контексте Модуля формы.

Пример:

РежимРаботыФормы = Форма.РежимВыбора();

МодальныйРежим

Возвращает режим работы формы.

Синтаксис:

МодальныйРежим()

Англоязычный синоним:

ModalMode

Возвращаемое значение:

Число: 0 — немодальный режим; 1 — модальный режим.

Описание:

Метод МодальныйРежим возвращает режим работы формы. Доступ к данному методу возможен только в контексте Модуля формы.

Пример:

РежимРаботыФормы = Форма.МодальныйРежим();

ПолучитьАтрибут

Получить значение реквизита по имени идентификатора.

Синтаксис:

ПолучитьАтрибут(<ИмяРеквизита>)

Англоязычный синоним:

GetAttrib

Параметры:

<ИмяРеквизита>

Строковое выражение, содержащее имя реквизита, как оно задано в конфигураторе.

Возвращаемое значение:

Значение реквизита <ИмяРеквизита>.

Описание:

Метод ПолучитьАтрибут позволяет получить значение реквизита по имени идентификатора, как оно задано в конфигураторе.

Пример:

ЦенаТов = Форма.ПолучитьАтрибут("ЦенаРозн");

АктивныйЭлемент

Возвращает идентификатор активного элемента диалога.

Синтаксис:

АктивныйЭлемент()

Англоязычный синоним:

ActiveControl

Возвращаемое значение:

Строковое значение — идентификатор активного элемента диалога.

Описание:

Метод АктивныйЭлемент возвращает идентификатор активного элемента диалога.

Доступ к данному методу возможен только в контексте Модуля формы.

Пример:

ИдАктЭлем = Форма.АктивныйЭлемент();

ТекущаяКолонка

Возвращает идентификатор текущей колонки многострочной части.

Синтаксис:

ТекущаяКолонка()

Англоязычный синоним:

CurrentColumn

Возвращаемое значение:

Строковое значение — идентификатор текущей колонки многострочной части.

Описание:

Метод ТекущаяКолонка возвращает идентификатор текущей колонки многострочной части.

Доступ к данному методу возможен только в контексте Модуля формы.

Пример:

ИдТекКолонки = Форма.ТекущаяКолонка();

Закрыть

Закрыть форму.

Синтаксис:

Закрыть(<ЗапрСохр>)

Англоязычный синоним:

Close

Параметры:

<ЗапрСохр>

Необязательный параметр. Число: 0 — закрыть форму без вопросов; 1 — если документ, счет, элемент справочника изменен, то будет запрос о сохранении изменений. Значение по умолчанию — 1.

Описание:

Метод Закрыть закрывает форму. Доступ к данному методу возможен только в контексте Модуля формы.

Замечание. Действие данного метода не прерывает выполнения текущей процедуры программы, т. е. процедура доработает до конца. Данный метод лишь устанавливает признак, который отрабатывает после окончания выполнения процедуры.

Пример:

Форма.Закрыть();

Методы элементов диалога

При помощи атрибута «Форма» средства языка предоставляют возможность программно управлять свойствами элементов диалога. В тексте программного модуля формы через точку после имени атрибута «Форма» можно записывать идентификаторы элементов диалога, а далее через точку можно вызывать методы управления свойствами этих элементов.

Доступ к данным методам возможен только в контексте Модуля формы.

Видимость

Установка режима отображения.

Синтаксис:

Видимость(<Режим>)

Англоязычный синоним:

Visible

Параметры:

<Режим>

Необязательный параметр. Числовое выражение: 1 — элемент диалога отображается; 0 — элемент диалога скрыт (невидим).

Возвращаемое значение:

Текущее числовое значение режима видимости элемента формы или колонки многострочной части (на момент до исполнения метода).

Описание:

Метод Видимость позволяет установить режим отображения выбранного элемента формы или колонки многострочной части формы.

Доступ к данному методу возможен только в контексте Модуля формы.

Пример:

Форма.ИнформПоле.Видимость(0);

Доступность

Установка режима редактирования.

Синтаксис:

Доступность(<Режим>)

Англоязычный синоним:

Enable

Параметры:

<Режим>

Необязательный параметр. Числовое выражение:

1 — разрешено редактирование элемента формы;

0 — запрещено редактирование.

Возвращаемое значение:

Текущее числовое значение режима редактирования элемента формы (на момент до исполнения метода).

Описание:

Метод Доступность позволяет установить режим редактирования выбранного элемента формы.

Доступ к данному методу возможен только в контексте Модуля формы.

Пример:

Форма.НазвФирмы.Доступность(0);

Редактирование

Определяет возможность редактирования значения элемента диалога.

Синтаксис:

Редактирование(<Флаг>)

Англоязычный синоним:

EnableEdit

Параметры:

<Флаг>

Число: 1 — значение элемента редактируется как обычно; 0 — значение не редактируется но может выбираться кнопкой выбора. Отличие от метода Доступность в том, что Доступность отключает и кнопку выбора.

Описание:

Метод Редактирование определяет возможность редактирования значения непосредственно в элементе диалога для полей ввода типа Число, Строка, Дата, Счет.

Доступ к данному методу возможен только в контексте Модуля формы.

Пример:

Форма.КолонкаЦены.Редактирование(1);

Цвет

Установка режима отображения цвета.

Синтаксис 1:

Цвет(<Цвет>)

Синтаксис 2:

Цвет(<R>, <G>, <В>)

Англоязычный синоним:

Color

Параметры:

<Цвет> | Необязательный параметр. Числовое выражение, значение которого задает RGB цвет. Допустимые значения от 0 до 16'777'215. Значение -1 (минус единица) задает цвет, заданный для всей формы по умолчанию.
<R> | Числовое выражение, значение которого задает красную компоненту цвета. Допустимые значения от 0 до 255.
<G> | Числовое выражение, значение которого задает зеленую компоненту цвета. Допустимые значения от 0 до 255.
<В> | Числовое выражение, значение которого задает синюю компоненту цвета. Допустимые значения от 0 до 255.

Возвращаемое значение:

Текущее числовое значение RGB-цвета элемента формы (на момент до исполнения метода).

Описание:

Метод Цвет позволяет установить режим отображения цвета выбранного элемента формы.

Доступ к данному методу возможен только в контексте Модуля формы.

Пример:

Процедура ОбработкаНаименования()

   Если (Наименование = "") Тогда

      Форма.Название.Цвет(255, 0, 0);

   Иначе

      Форма.Название.Цвет(-1);

   КонецЕсли

КонецПроцедуры

Маска

Установить/определить маску интерактивного ввода для элементов диалога типа «поле ввода».

Синтаксис:

Маска(<СтрокаМаски>)

Англоязычный синоним:

Mask

Параметры:

<СтрокаМаски>

Необязательный параметр. Строковое выражение — посимвольная маска интерактивного ввода для строковых реквизитов диалога (аналогично установке в свойствах реквизита диалога в конфигураторе).

Возвращаемое значение:

Строковое значение — текущая маска интерактивного ввода для строковых реквизитов (на момент до исполнения метода).

Описание:

Метод Маска позволяет установить посимвольную маску интерактивного ввода для элементов диалога типа «поле ввода» (аналогично установке в свойствах реквизита диалога в конфигураторе).

В параметре <СтрокаМаски> допустимы следующие символы:

· ! — введенный символ преобразуется в верхний регистр;

· 9 — произвольный символ цифры;

· # — произвольный символ цифры или - (знак минус) или + (знак плюс) или пробел;

· N — любые алфавитно-цифровые символы (буквы или цифры);

· Х (латинского алфавита) — произвольный символ;

· @ — любые алфавитно-цифровые символы (буквы или цифры) в верхнем регистре.

Доступ к данному методу возможен только в контексте Модуля формы.

Пример:

форма.Телефон.Маска("999-99-99");

ВыборГруппы

Установить режим выборки групп для элемента диалога типа «справочник».

Синтаксис:

ВыборГруппы(<Режим>)

Англоязычный синоним:

SelectGroup

Параметры:

<Режим>

Необязательный параметр. Числовое выражение: 1 — выбирать группы; 0 — не выбирать группы. Значение по умолчанию — 1.

Возвращаемое значение:

Текущее числовое значение режима выборки групп для элемента диалога (на момент до исполнения метода).

Описание:

Метод ВыборГруппы устанавливает режим выборки групп для выбранного элемента диалога типа «справочник».

По умолчанию, выборка элементов справочников для реквизитов в формах документов, журналов и справочников установлена без выбора групп, а в форме отчета — с выбором групп. Поэтому реально имеет смысл применять данный метод только в том случае, если надо изменить режим выборки групп.

Особенно необходим данный метод в случае, когда необходимо установить возможность выбора групп в графе табличной части документа.

Доступ к данному методу возможен только в контексте Модуля формы.

Пример:

* Если в табличной части документа существует какой-либо реквизит, например, «Статус» и необходимо, чтобы он мог принимать значения как элемента, так и группы, то в форме документа этому реквизиту следует установить:

Форма.Статус.ВыборГруппы(1);

ВыполнятьФормулуТолькоПриИзменении

Установка режима выполнения формулы.

Синтаксис:

ВыполнятьФормулуТолькоПриИзменении(<Режим>)

Англоязычный синоним:

ProcessFormulaOnlyWhenChanged

Параметры:

<Режим>

Числовое выражение: 1 — устанавливает режим, при котором в табличной части документа формула («Свойства» — «Дополнительные» — «Формула») вызывается только при изменении значения поля, а не при переходе между полями; 0 — устанавливает режим, при котором в табличной части документа формула вызывается при изменении значения поля и при переходе между полями.

Описание:

Метод ВыполнятьФормулуТолькоПриИзменении позволяет изменить режим выполнения формулы выбранного поля табличной части документа. Доступ к данному методу возможен только в контексте Модуля формы.

Пример:

Форма.Цена.ВыполнятьФормулуТолькоПриИзменении(1);

Заголовок

Устанавливает/выдает заголовок элемента диалога.

Синтаксис:

Заголовок(<Название>)

Англоязычный синоним:

Caption

Параметры:

<Название>

Строковое выражение — новый заголовок колонки многострочной части формы, кнопки, рамки группы, текста, флажка, переключателя.

Возвращаемое значение:

Текущий заголовок элемента диалога.

Описание:

Метод Заголовок позволяет установить/прочитать заголовок колонки многострочной части формы, копки, рамки группы, текста, флажка, переключателя.

Доступ к данному методу возможен только в контексте Модуля формы.

Пример:

Форма.КолонкаЦены.Заголовок("Цена");

УстановитьТип

Установить тип для элемента диалога неопределенного вида.

Синтаксис:

УстановитьТип(<Выражение>)

Англоязычный синоним:

AssignType

Параметры:

<Выражение>

Выражение. Тип значения этого выражения будет присвоен элементу диалога.

Описание:

Метод УстановитьТип позволяет установить тип для элемента диалога, которому в конфигураторе назначен тип «Неопределенный».

Данный метод доступен в контексте Модуля формы (см. «Виды программных модулей»).

Пример:

Форма.ВыбЗнач.УстановитьТип(Товар);

См. также: НазначитьТип, ТипЗначения, ТипЗначенияСтр

НазначитьТип

Назначить тип для элемента диалога неопределенного вида.

Синтаксис:

НазначитьТип(<ИмяТипа>, <Длина>, <Точность>)

Англоязычный синоним:

AssignType

Параметры:

<ИмяТипа> | Строковое выражение — название типа данных, которое назначается элементу диалога. Например: "Строка", "Число", "Справочник.Товары", "Документ.РасходнаяНакладная" и т. п.
<Длина> | Необязательный параметр. Числовое выражение — длина поля представления данных. Имеет смысл только при задании числового или строкового типа.
<Точность> | Необязательный параметр. Числовое выражение — число знаков числа после десятичной точки. Имеет смысл только при задании числового типа.

Описание:

Метод НазначитьТип позволяет назначить тип для элемента диалога, которому в конфигураторе назначен тип «Неопределенный».

Данный метод доступен в контексте Модуля формы (см. «Виды программных модулей»).

Пример:

Форма.ВыбКолич.НазначитьТип("Число", 15, 2);

Форма.ВыбДата.НазначитьТип("Дата");

Форма.ВыбТовар.НазначитьТип("Справочник.Товары");

Форма.ВыбДокум.НазначитьТип("Документ");

См. также: УстановитьТип, ТипЗначения, ТипЗначенияСтр

НеИзменятьВид

Позволяет запретить пользователю при выборе значения справочника, документа, счета неопределенного вида изменять вид.

Синтаксис:

НеИзменятьВид(<Признак>)

Англоязычный синоним:

FixKind

Параметры:

<Признак>

Числовое выражение — признак запрета изменения вида. Может принимать значения:

0 — разрешить изменение вида при выборе значения;

1 — запретить изменение вида при выборе значения.

Возвращаемое значение:

Число — текущее значение признака.

Описание:

Метод НеИзменятьВид применяется для реквизитов диалога формы, имеющих тип справочника, документа, счета неопределенного вида. Он позволяет запретить при выборе значения изменение вида значения.

Предположим, в диалоге существует реквизит типа справочник неопределенного вида. Вид этого элемента устанавливается при помощи встроенного языка процедурой НазначитьВид. Метод НеИзменятьВид(1) позволяет запретить пользователю при выборе значения выбрать вид справочника.

Пример:

* Например, в некотором документе, для его реквизита «Контрагент» типа справочник неопределенного вида, назначается вид «Организации» или «Сотрудники» и запрещается интерактивное изменение вида пользователем.

Процедура ВводНаОсновании(ДокОсн)

   Если ДокОсн.Вид() = "Счет" Тогда

      НазначитьВид(Контрагент, «Организации»);

   Иначе

      НазначитьВид(Контрагент, «Сотрудники»);

   КонецЕсли;

   Форма.Контрагент.НеИзменятьВид(1);

КонецПроцедуры

Методы контекста Модуля формы

Описанные в данном разделе методы доступны только в контексте Модуля формы (см. «Виды программных модулей»). К модулям форм относятся практически все программные модули (исключение составляют Глобальный модуль, Модуль документа, Модуль вида расчета).

ОткрытьПодбор

Открыть форму для подбора значений.

Синтаксис:

ОткрытьПодбор(<ИмяОбъекта>, <ИмяФормы>, <КонтекстФормы>, <ФлагМножВыбора>,

              <ТекЗнач>)

Англоязычный синоним:

OpenPermanentChoice

Параметры:

<ИмяОбъекта>

Строковое выражение — имя объекта агрегатного типа, форму списка которого требуется открыть для подбора. Можно указывать справочник, журнал, документ (при указании документа открывается форма журнала для указанного документа). Имя объекта задается в следующем виде:

· "Справочник.ХХХХХ";

· "Документ.ХХХХХ";

· "Отчет.ХХХХХХ";

· "Обработка.ХХХХХХ";

· "Журнал.ХХХХХ" , где ХХХХХ — имя вида соответствующего объекта, как он задан в конфигураторе, например: "Справочник.Товары";

· "Журнал.Подчиненные";

· "ЖурналОпераций.ХХХХХ", где ХХХХХ — форма журнала пераций.

· "ПланСчетов.ХХХХХ", где ХХХХХ — идентификатор плана счетов, как он задан в конфигураторе. Если ХХХХХ не задан, то открывается подбор из любого (всех) плана счетов.

<ИмяФормы>

Строковое выражение — имя формы подбора, как она задана в конфигураторе. Поскольку и справочники и журналы могут иметь несколько форм представления, то этим параметром можно конкретно указать, какая из форм представления объекта вызывается для подбора значений.

<КонтекстФормы>

Необязательный параметр. Имя переменной, куда можно задать значение любого типа для передачи в открываемую форму. Данное значение будет доступно в открытой форме как атрибут Форма.Параметр.

После исполнения данного метода система вернет в данную переменную контекст формы подбора (см. «Передача контекста в качестве параметра»). С помощью значения этого контекста можно затем произвольно манипулировать формой подбора, пока она открыта. Пока форма открыта, тип значения данного параметра равен 100 (см. ТипЗначения), если закрыта — 0.

<ФлагМножВы6ора>

Необязательный параметр. Число: 1 — выбор нескольких значений; 0 — выбор одного значения, после чего окно закрывается. Значение по умолчанию: 1.

<ТекЗнач>

Необязательный параметр. В случае выбора из списка, здесь можно передать значение, на которое следует изначально установить курсор при открытии формы подбора.

Описание:

Метод ОткрытьПодбор, который доступен только в контексте Модуля формы, выполняет открытие формы для подбора значений. Используется, например, для подбора значения реквизита документа.

При открытии подбора по журналу подчиненных документов, т. е. когда первый параметр <ИмяОбъекта> имеет значение "Журнал.Подчиненные", документ владелец, по которому следует построить журнал подчиненных документов, передается после вызова метода через полученный контекст формы.

Пример:

Процедура Подбор()

   ГруппаДляВыбора = ТекущийЭлемент();

   Если ГруппаДляВыбора.ЭтоГруппа() = 0 Тогда

      ГруппаДляВыбора = ГруппаДляВыбора.Родитель;

   КонецЕсли;

   ОткрытьПодбор("Справочник.Товары", "ДляПодбора", КонтПодб, 0);

   // установим в форме подбора реквизит "ГруппаВыбора"

   // используя полученный контекст формы подбора

   КонтПодб.ГруппаВыбора.ВыборГруппы(1);

   КонтПодб.ГруппаВыбора = ГруппаДляВыбора;

   КонтПодб.Обновить(0);

   УстановитьЗначениеВПодборе("ГруппаВыбора", ГруппаДляВыбора);

КонецПроцедуры

См. также: ОбработкаПодбора, УстановитьЗначениеВПодборе

УстановитьЗначениеВПодборе

Установить значение некоторого реквизита диалога в окне, открытом для подбора значения.

Синтаксис:

УстановитьЗначениеВПодборе(<ИмяРеквизита>, <Значение>)

Англоязычный синоним:

SetValueInPermanentChoice

Параметры:

<ИмяРеквизита> | Строковое выражение, содержащее имя реквизита формы подбора значения.
<Значение> | Выражение, значение которого заносится в реквизит.

Описание:

Метод УстановитьЗначениеВПодборе, который доступен только в контексте Модуля формы, используется для того, чтобы в окне диалога, открытом для подбора значения, установить значение некоторого реквизита диалога (он может быть затем использован для отображения некоторой информации в информационных элементах диалога подбора значения).

Данный метод следует использовать после вызова метода ОткрытьПодбор.

Пример:

Процедура Подбор()

   ГруппаДляВыбора = ТекуцийЭлемент();

   Если ГруппаДляВыбора.ЭтоГруппа() = 0 Тогда

      ГруппаДляВыбора = ГруппаДляВыбора.Родитель;

   КонецЕсли;

   ОткрытьПодбор("Справочник.Товары", "ДляПодбора", КонтПодб);

   // установим в форме подбора реквизит "ГруппаВыбора"

   // используя метод УстановитьЗначениеВПодборе

   УстановитьЗначениеВПодборе("ГруппаВыбора", ГруппаДляВыбора);

КонецПроцедуры

См. также: ОткрытьПодбор, ОбработкаПодбора

ПолучитьЗначениеИзПодбора

Вычислить выражение в контексте открытой формы подбора.

Синтаксис:

ПолучитьЗначениеИзПодбора(<Выражение>)

Англоязычный синоним:

GetValueFromPermanentChoice

Параметры:

<Выражение>

Строковое выражение, которое должно содержать запись выражения на встроенном языке. Значение этого выражения вычисляется в контексте открытой формы подбора.

Возвращаемое значение:

Значение вычисленного в контексте формы подбора выражения.

Описание:

Метод ПолучитьЗначениеИзПодбора, который доступен только в контексте Модуля формы, позволяет получить результат выражения, выполненного в контексте формы подбора (т. е. получить любые данные из той формы, например выбранный элемент списка справочника подбора значения).

Данный метод следует использовать только после вызова метода ОткрытьПодбор.

Пример:

Процедура ОбработкаПодбора(Выб, Конформы)

   Кол = 0;

   Если ВвестиЧисло(Кол, "Введите количество", 10, 0) = 1 Тогда

      НоваяСтрока();

      ТипPaб = Выб;

      Количество = Кол;

      АктивизироватьСтроку();

      Активизировать("Стоимость", 0);

   КонецЕсли;

   // тип выполненной работы

   ТР = ПолучитьЗначениеИзПодбора("Наименование");

КонецПроцедуры

См. также: ОткрытьПодбор, ОбработкаПодбора

Активизировать

Установить курсор на выбранный элемент диалога.

Синтаксис:

Активизировать(<ИмяРеквизита>, <Режим>)

Англоязычный синоним:

Activate

Параметры:

<ИмяРеквизита> | Необязательный параметр. Строковое выражение, содержащее имя элемента диалога, который должен быть активизирован. Пустое имя элемента диалога используется для активизации всей формы.
<Режим> | Необязательный параметр. Имеет смысл только для реквизитов многострочной части формы документа. Числовое выражение: 1 — войти в режим редактирования; 0 — не входить в режим редактирования. Значение по умолчанию — 1.

Описание:

Метод Активизировать, который доступен только в контексте Модуля формы, устанавливает курсор для редактирования нужного элемента диалога. Например, если необходимо установить курсор на реквизит многострочной части документа (в форме документа) после выхода из предопределенной процедуры ОбработкаПодбора.

Метод Активизировать может быть вызван из другого (внешнего) модуля, если в нем известен контекст формы, в которой нужно активизировать элемента диалога.

Пример:

См. предыдущий пример.

АктивизироватьОбъект

Установить курсор в списке на выбранном объекте.

Синтаксис:

АктивизироватьОбъект(<Объект>)

Англоязычный синоним:

ActivateObj

Параметры:

<Объект>

Выражение, которое может содержать значение элемента справочника или документ или запись журнала расчетов (в зависимости от типа модуля формы, в котором должен быть активизирован элемент диалога).

Описание:

Метод АктивизироватьОбъект, который доступен только в контексте Модуля формы, устанавливает курсор на нужной строке списка диалога, например документ в форме журнала или элемент в форме списка справочника, или запись расчета в форме журнала расчетов.

Пример:

АктивизироватьОбъект(ВыбДокумент);

Предопределенные процедуры Модуля формы

Описанные в данном разделе системные предопределенные процедуры должны располагаться только в Модулях форм (см. «Виды программных модулей»). К Модулям форм относятся практически все программные модули (исключение составляют Глобальный модуль, Модуль документа, Модуль вида расчета).

В основном данные процедуры предназначены для расширения возможности программного управления правами доступа к системе.

Предопределенные процедуры не является встроенными процедурами языка. Для них зарезервированы только название и синтаксис. Тело процедур должно быть написано самим разработчиком в соответствующих программных модулях. Вызов предопределенных процедур на исполнение производится в системе 1С:Предприятие неявно при возникновении соответствующего события. Описание предопределенных процедур также см. гл. «Системные предопределенные процедуры».

ПриОткрытии

Предопределенная процедура при открытии формы.

Синтаксис:

ПриОткрытии()

Англоязычный синоним:

OnOpen

Описание:

Вызов предопределенной процедуры ПриОткрытии производится самой системой 1С:Предприятие неявно при интерактивном открытии формы. Если в данной предопределенной процедуре установить статус возврата — 0 (например, если данному пользователю зыпрещено просматривать форму объекта), открытие формы не будет выполнено.

Данная предопределенная процедура может располагаться только в программном модуле формы.

Пример:

Процедура ПриОткрытии()

   ПриЗаписиПерепроводить(1);

КонецПроцедуры

См. также: СтатусВозврата

ПриПовторномОткрытии

Предопределенная процедура при повторном открытии формы.

Синтаксис:

ПриПовторномОткрытии()

Англоязычный синоним:

OnReopen

Описание:

Вызов предопределенной процедуры ПриПовторномОткрытии производится самой системой 1С:Предприятие неявно при открытии формы, в случае, если открывают уже открытую форму — то есть форма просто активизируется.

Если в данной предопределенной процедуре установить статус возврата — 0 (например, если данному пользователю запрещено просматривать форму объекта), открытие формы не будет выполнено.

Данная предопределенная процедура может располагаться только в программном модуле формы.

Пример:

Процедура ПриПовторномОткрытии()

   ПриЗаписиПерепроводить(1);

КонецПроцедуры

См. также: СтатусВозврата

ПриЗакрытии

Предопределенная процедура при закрытии формы.

Синтаксис:

ПриЗакрытии()

Англоязычный синоним:

OnClose

Описание:

Вызов предопределенной процедуры ПриЗакрытии производится самой системой 1С:Предприятие неявно при интерактивном закрытии формы. Если в данной предопределенной процедуре установить статус возврата — 0 (например, если неверно или не полностью заполнены реквизиты объекта), закрытие формы не будет выполнено.

Данная предопределенная процедура может располагаться только в программном модуле формы.

Пример:

Процедура ПриЗакрытии()

   Если ПоСчетуФактуре.Выбран() = 0 Тогда

      Предупреждение("Укажите Счет-Фактуру", 4);

      СтатусВозврата(0);

   КонецЕсли;

КонецПроцедуры

См. также: СтатусВозврата

ПриВыбореЗакладки

Предопределенная процедура смены закладки формы.

Синтаксис:

ПриВыбореЗакладки(<НомерЗакладки>, <Значение3акладки>)

Англоязычный синоним:

OnTabCtrlPosChanged

Параметры:

<НомерЗакладки> | Числовое значение — номер выбранной закладки формы.
<Значение3акладки> | Значение выбранной закладки формы.

Описание:

Вызов предопределенной процедуры ПриВыбореЗакладки производится в системе 1С:Предприятие неявно в момент интерактивного выбора пользователем закладки в форме. При вызове процедуры, система подставляет фактические значения параметров, характеризующие выбранную закладку.

Параметры <НомерЗакладки> и <Значение3акладки> используется в теле процедуры для обработки передаваемого системой события смены закладки формы.

Данная предопределенная процедура может располагаться только в программном модуле формы.

Пример:

Процедура ЗакладкаОбщиеВидимость(ФлагВидимости)

   Форма.Название.Видимость(ФлагВидимости);

   Форма.Наименование.Видимость(ФлагВидимости);

   Форма.Код.Видимость(ФлагВидимости);

   Форма.Статус.Видимость(ФлагВидимости);

   Форма.Адрес.Видимость(ФлагВидимости);

   Форма.Телефон.Видимость(ФлагВидимости);

   Активизировать("Наименование", 0);

КонецПроцедуры

Процедура ЗакладкаЗаметкиВидимость(ФлагВидимости)

   Форма.Заметки.Видимость(ФлагВидимости);

   Активизировать("Заметки", 0);

КонецПроцедуры

Процедура ПриВыбореЗакладки(НомерЗакладки, ЗначениеЗакладки)

   Если Значение3акладки = 1 Тогда

      Закладка.Заметки.Видимость(0);

      Закладка.Общие.Видимость(1);

   ИначеЕсли ЗначениеЗакладки = 2 Тогда

      Закладка.Общие.Видимость(0);

      Закладка.Заметки.Видимость(1);

   КонецЕсли;

КонецПроцедуры

См. также: ИспользоватьЗакладки, Закладки, СтатусВозврата

ПриНачалеВыбораЗначения

Предопределенная процедура при начале выбора значения.

Синтаксис:

ПриНачалеВыбораЗначения(<ИдентЭлемДиалога>, <ФлагСтанд06р>)

Англоязычный синоним:

OnStartValueChoice

Параметры:

<ИдентЭлемДиалога> | Строковое значение — идентификатор элемента диалога формы.
<ФлагСтандОбр> | Изначально, при вызове процедуры равен 1, если в теле процедуры значение этого параметра поменять на 0, то стандартный процесс выбора значения не будет происходить.

Описание:

Вызов предопределенной процедуры ПриНачалеВыбораЗначения производится в системе 1С:Предприятие неявно в момент, когда в форме пользователь интерактивно инициировал выбор значения (выбор может быть интерактивно инициирован в немодальном режиме при помощи элемента диалога с кнопкой выбора или клавишей «F4»). При вызове процедуры, система подставляет фактические значения параметров, характеризующие элемент диалога и флаг стандартной обработки.

Замечание. В теле этой процедуры методы ОткрытьФорму и ОткрытьПодбор работают для выбора.

Данная предопределенная процедура может располагаться только в программном модуле формы.

Пример:

Процедура ПриНачалеВыбораЗначения(Элемент, Флаг)

   Перем КонтПодб;

   Если Элемент = "ИдВыбКлиент" Тогда

      Флаг = 0;

      ОткрытьПодбор("Справочник.Клиенты", "ДляПодбора", КонтПодб);

   КонецЕсли;

КонецПроцедуры

ОбработкаПодбора

Предопределенная процедура обработки подбора значения.

Синтаксис:

ОбработкаПодбора(<ЗначениеПод6ора>, <КонтФормы>)

Англоязычный синоним:

ProcessPermanentChoice

Параметры:

<ЗначениеПодбора> | Элемент справочника или документ, передаваемый для обработки.
<КонтФормы> | Контекст той формы, из которой шел подбор.

Описание:

Вызов предопределенной процедуры ОбработкаПодбора производится в системе 1С:Предприятие неявно после нажатия кнопки «Выбрать» в форме подбора значения (см. метод ОткрытьПодбор). В этот момент система подставляет фактическое значение параметра <ЗначениеПодбора>.

Формальный параметр <ЗначениеПодбора> используется в теле процедуры для приема и обработки передаваемого системой значения элемента подбора.

Данная предопределенная процедура может располагаться только в программном модуле формы.

Пример:

Процедура ОбработкаПодбора(Знач, КонтФормы)

   НоваяСтрока();

   Товар = Знач;

   Знач.ИспользоватьДату(ДатаДок);

   Цена = Знач.Цена;

   Сообщить(Знач.Цена);

   Сообщить(Знач.МОЛ.Наименование);

   АктивизироватьСтроку();

КонецПроцедуры

См. также: ОткрытьПодбор

ОбработкаВыбораЗначения

Предопределенная процедура обработки выбора значения.

Синтаксис:

ОбработкаВыбораЗначения(<Вы6Знач>, <ИдентЭлемДиалога>, <ФлагСтандОбр>)

Англоязычный синоним:

ProcessPermanentChoice

Параметры:

<ВыбЗнач> | Выбранный элемент справочника, документ или иной объект, передаваемый для обработки.
<ИдентЭлемДиалога> | Идентификатор элемента диалога, которым инициализирован выбор значения.
<ФлагСтандОбр> | Флаг, установка которого в теле процедуры в 0 (ноль) приведет к отмене стандартного присвоения значения.

Описание:

Вызов предопределенной процедуры ОбработкаВыбораЗначения производится в системе 1С:Предприятие неявно, после выбора значения в форм6 выбора (выбор может быть инициирован в немодальном режиме интерактивно, при помощи элемента диалога с кнопкой выбора). В момент выбора система автоматически подставляет фактическое значение параметра <Вы6Знач>.

Формальный параметр <ВыбЗнач> используется в теле процедуры для приема и обработки передаваемого системой выбранного значения.

Данная предопределенная процедура может располагаться только в программном модуле формы.

Пример:

Процедура ОбработкаВыбораЗначения(Знач, Идент, Флаг)

   ...

КонецПроцедуры

ПриВыбореСтроки

Предопределенная процедура при выборе строки списка.

Синтаксис:

ПриВыбореСтроки()

Англоязычный синоним:

OnSelectLine

Описание:

Вызов предопределенной процедуры ПриВыбореСтроки производится в системе 1С:Предприятие при интерактивном выборе строки списка в форме списка справочника, журнала документов, счетов, журнала операций, журнала проводок. Если в данной предопределенной процедуре установить статус возврата — 0 (например, если данному пользователю нельзя вводить новые строки списка справочника), то строка списка не будет выбрана.

Замечание: Режим обработки выбора строки (двойной щелчок мыши или клавиша Enter) предопределенной процедурой ПриВыбореСтроки включается в форме списка справочника, журнала, счетов, журнала операций, журнала проводок при помощи метода Форма.ОбработкаВыбораСтроки(1)

Данная предопределенная процедура может располагаться в Модуле формы списка справочника, журнала, счетов, журнала операций, журнала проводок (см. «Виды программных модулей»).

Пример:

Процедура ПриВыбореСтроки()

   Если НазваниеНабораПрав() = "Продавец" Тогда

      Предупреждение("У вас нет права просмотра строки!", 2);

      СтатусВозврата(0);

   КонецЕсли;

КонецПроцедуры

См. также: СтатусВозврата, ОбработкаВыбораСтроки

Атрибуты и методы контекста Модуля формы отчета (обработки)

Таблица

Объект агрегатного типа «Таблица».

Синтаксис:

Таблица

Англоязычный синоним:

Table

Описание:

Атрибут Таблица (только для чтения) представляет собой ссылку на объект типа «Таблица». Доступ к данному атрибуту возможен только в контексте Модуля формы отчета или обработки. При настройке формы отчета (обработки), если табличный документ размещен непосредственно в форме (для этого в диалоге, вызываемом пунктом «Свойства формы» меню «Действия» в параметре «Использовать таблицу» выбирается вариант «Пустую» или «Для ввода данных»), то доступ к такому объекту осуществляется через атрибут контекста формы отчета (обработки) Таблица.

Атрибуты и методы объекта «Таблица» описаны в разделе «Работа с таблицами» и позволяют в программном модуле управлять процессом формирования и визуального отображения таблицы в целом, а также изменять свойства визуального отображения отдельных областей таблицы.

В тексте программного модуля через точку после имени атрибута «Таблица» можно записывать адреса областей таблицы, а далее через точку можно вызывать методы управления свойствами этих областей.

Пример:

Таблица.ИсходнаяТаблица("price");

Таблица.Вывести();

Таблица.ТолькоПросмотр(0);

Таблица.Показать("Каталог", "Catalog.mxl");

Таблица.ТолькоПросмотр(1);

Пример:

ВыбОбласть = Таблица.Область("R8C4");

ВыбОбласть.Шрифт("Arial");

ВыбОбласть.РазмерШрифта(10);

ВыбОбласть.Подчеркнутый(1);

ВыбОбласть.ГоризонтальноеПоложение(3);

ВыбОбласть.Контроль(4);

ВыбОбласть.ЦветФона(34, 126, 211);

См. также: разд. «Работа с таблицами»

<ИмяОбласти>

Возвращает или задает значение, записанное в именованной области таблицы в режиме ввода данных.

Синтаксис:

<ИмяОбласти>

Имя области таблицы, как она задана в табличном документе.

Описание:

Атрибут <ИмяОбласти> позволяет обращаться к значениям, записанным в поименованных областях таблицы в режиме ввода данных. Для обращения к значению конкретной области следует указать имя этой области, заданный в конфигураторе.

Данный атрибут существует и доступен в форме, если при конфигурировании данной формы в свойствах формы выбраны опция «Использовать таблицу» — «Для ввода данных». Установка данной опции в свойствах формы означает наличие у данной формы таблицы в режиме ввода данных. В процессе конфигурирования в таблице можно задать любое число выделенных и поименованных областей.

Доступ к данному атрибуту возможен только в контексте Модуля формы отчета или обработки.

Замечание: Данный атрибут работает на чтение только в том случае, если в качестве области таблицы помечена одна единственная ячейка.

Пример:

* В диалоге формы есть элемент диалога ВыбКод. В форме использована таблица в режиме ввода данных. Одна из ячеек таблицы помечена как область с именем «ВыбранныйКлиент». В этом случае в модуле формы можно задать значение данной области.

Клн = СоздатьОбъект("Справочник.Клиенты");

Клн.НайтиПоКоду(ВыбКод, 0);

ВыбранныйКлиент = Клн.ТекущийЭлемент();

См. также: разд. «Работа с таблицами»

РасположениеФайла

Определить, где располагается данный внешний отчет.

Синтаксис:

РасположениеФайла(<Путь>, <Имя>)

Англоязычный синоним:

FilePath

Параметры:

<Путь> | Идентификатор переменной, куда метод возвращает путь к файлу, где располагается данный внешний отчет.
<Имя> | Идентификатор переменной, куда метод возвращает имя файла, где располагается данный внешний отчет.

Возвращаемое значение:

Строковое значение полного имени (вместе с путем) файла, где располагается данный внешний отчет.

Описание:

Метод РасположениеФайла позволяет узнать, где располагается данный внешний отчет.

Замечание. Данный метод следует использовать только в модуле формы внешнего отчета.

Пример:

Имя = "";

Путь = "";

ПолноеИмя = РасположениеФайла(Путь, Имя);

Предопределенные процедуры модуля формы отчета (обработки)

Предопределенные процедуры не является встроенными процедурами языка. Для них зарезервированы только название и синтаксис. Тело процедур должно быть написано самим разработчиком в соответствующих программных модулях. Вызов предопределенных процедур на исполнение производится в системе 1С:Предприятие неявно при возникновении соответствующего события. Описание предопределенных процедур также см. гл. «Системные предопределенные процедуры».

ВводНового

Предопределенная процедура при открытии формы отчета (обработки) или при восстановлении сохраненной настройки отчета (обработки).

Синтаксис:

ВводНового()

Англоязычный синоним:

InputNew

Описание:

При работе с формой отчета у пользователя существует возможность сохранять и восстанавливать настройки отчета — содержимое реквизитов диалога формы. Предопределенная процедура ВводНового вызывается и в вомент открытия формы и в момент восстановления значений настройки. Это позволяет контролировать содержимое реквизитов диалога во всех случаях их изменения системой.

Пример:

Процедура ВводНового()

   ДатаНач = РабочаяДата();

   ДатаКон = РабочаяДата();

КонецПроцедуры

См. также: СтатусВоз врата

ПриОткрытии

Предопределенная процедура при открытии формы отчета (обработки).

Синтаксис:

ПриОткрытии(<ФлагЧтенияНастройки>)

Англоязычный синоним:

OnOpen

Параметры:

<ФлагЧтенияНастройки>

Числовое значение — признак считывания сохраненной настройки отчета (обработки). Может принимать значения:

1 — при открытии формы была восстановлена последняя сохраненная настройка отчета (обработки);

0 — при открытии формы настройка не восстановлена.

Описание:

Форма любого отчета или обработки в системе 1С:Предприятие обязательно содержит экранный диалог. В диалоге могут размещаться элементы для задания различных параметров построения отчета или выполнения обработки. При Использовании отчета (обработки) набор параметров, использованных при формировании отчета или выполнения обработки, можно запомнить, а при следующем использовании этого же отчета (обработки) — восстановить. Для выполнения этих операций существуют команды в меню «Действия» системы 1С:Предприятие.

Набор параметров формирования отчета или выполнения обработки называется настройкой отчета (обработки). Последняя сохраненная настройка автоматически восстанавливается системой 1С:Предприятие, при вызове отчета (обработки).

Вызов предопределенной процедуры ПриОткрытии производится самой системой 1С:Предприятие неявно при интерактивном открытии отчета (обработки). Параметр <ФлагЧтенияНастройки> позволяет определить, была ли при открытии отчета (обработки) восстановлена сохраненная настройка.

Если в данной предопределенной процедуре установить статус возврата 0 (например, если данному пользователю запрещено формировать выбранный отчет), открытие формы не будет выполнено.

Пример:

Процедура ПриОткрытии(ФлагСохрНастр)

   Если ФлагСохрНастр = 0 Тогда

      ВыбВалюта = Константа.ОснВалюта;

   КонецЕсли;

КонецПроцедуры

См. также: СтатусВозврата


Part31

Глава 31
Работа с Таблицами

Для работы с табличными документами в системе используется специальный агрегатный тип данных «Таблица». Основным назначением табличного документа в системе 1С:Предприятие является создание печатных форм отчетов и первичных документов.

Печатные формы формируются при помощи встроенного языка с использованием агрегатного объекта «Таблица», создаваемого функцией СоздатьОбъект. Наиболее типичным способом заполнения табличного документа является включение в него секций. Для этого используется исходный табличный документ, который может располагаться в той же форме, в тексте программного модуля которого создан агрегатный объект «Таблица». Кроме того, исходная таблица может располагаться и в общих таблицах конфигурации и во внешнем файле. Назначение исходного табличного документа выполняется методом объекта «Таблица» — ИсходнаяТаблица.

Исходная таблица является заготовкой, содержащей текстовые фрагменты отчета, рамки, рисунки и т. д. Исходная таблица может быть включена в создаваемый отчет целиком. Однако часто необходимо включать в отчет отдельные фрагменты заготовки в определенной последовательности. Например, при печати накладной, нужно один раз вывести шапку и много раз вывести строку документа. Для этого части исходной таблицы выделяются в виде фрагментов-секций. Метод ВывестиСекцию позволяет включить выделенный фрагмент исходной таблицы в формируемый табличный документ.

В ячейках исходной таблицы может размещаться обычный текст или выражение встроенного языка 1С:Предприятия. При включении в табличный документ секции исходной таблицы автоматически происходит вычисление всех выражений и в табличный документ уже включается секция, содержащая результаты этих вычислений. Таким образом, происходит заполнение включаемых секций конкретными данными. Описанный способ, с одной стороны, позволяет наиболее наглядным образом визуально в исходной таблице спроектировать внешний вид и содержание отчета, а с другой, позволяет достаточно просто включать подготовленные фрагменты в заполняемый табличный документ.

Приведем пример формирования таким способом печатной формы документа.

Пример:

Таб = СоздатьОбъект("Таблица");

Таб.ИсходнаяТаблица("ПечатьСчета");

Таб.ВывестиСекцию("Шапка");

ВыбратьСтроки();

Пока ПолучитьСтроку() = 1 Цикл

   Таб.ВывестиСекцию("Строка");

КонецЦикла;

Таб.Показать();

В приведенном примере в ячейках секций "Шапка" и "Строка" исходной таблицы располагаются выражения выдающие различные реквизиты документа.

Существует другой способ заполнения данными включаемых секций. Этот способ отличается от описанного тем, что в секциях ячеек не задаются выражения. Заполнение секции данными описывается прямо в алгоритме программного модуля. Для этого секция сначала выбирается из исходной таблицы, затем в ней заполняются значениями ячейки, в которых должны выводиться данные, а затем секция включается в табличный документ. Для получения секции из исходной таблицы используется метод ПолучитьСекцию. Полученная секция запоминается в переменной как специальный объект типа «СекцияТаблицы». Для того, чтобы в этом объекте можно было заполнять отдельные ячейки им нужно предварительно задать имена в исходной таблице. У объекта «СекцияТаблицы» отдельные именованные ячейки являются атрибутами, имеющими тип «ОбластьТаблицы» (область может содержать и несколько ячеек). Заполнение ячеек выполняется присвоением атрибуту "Текст" объекта «ОбластьТаблицы» необходимых значений.

Приведем пример формирования табличного документа этим способом.

Пример:

Таб = СоздатьОбъект("Таблица");

Таб.ИсходнаяТаблица("ПечатьСчета");

Шапка = Таб.ПолучитьСекцию("Шапка");

Шапка.Клиент.Текст = Контрагент;

Шапка = Таб.ВывестиСекцию(Шапка);

......

ВыбратьСтроки();

Пока ПолучитьСтроку () = 1 Цикл

   Строка = Таб.ПолучитьСекцию("Строка");

   Строка.Товар.Текст = Товар;

   ......

   Строка = Таб.ВывестиСекцию(Строка);

КонецЦикла;

Таб.Показать();

Этот способ может применяться в отдельных случаях для ускорения заполнения табличного документа, если для заполнения данными используются достаточно сложные выражения. Кроме того, этот способ позволяет манипулировать при включении секций различными свойствами ячеек. Например, можно для отдельных ячеек устанавливать жирный шрифт.

Кроме описанных способов существует способ заполнения табличного документа путем непосредственного обращения к ячейкам таблицы без использования в качестве заготовки исходной таблицы. Для этого используется метод Область, позволяющий по координатам строки и столбца исходной таблицы получить объект типа «ОбластьТаблицы». Атрибуты и методы этого объекта позволяют задать содержимое и элементы оформления ячеек (текст, цвета, рамки и т. д.).

Приведем фрагмент примера печати документа этим способом.

Пример:

Таб = СоздатьОбъект("Таблица");

Таб.Область(2, 3).Текст = Контрагент;

......

ВыбратьСтроки();

Пока ПолучитьСтроку() = 1 Цикл

   Таб.Область(НомерСтроки + 3, 3).Текст = Товар;

   ......

КонецЦикла;

Таб.Показать();

Этот способ используется в основном для создания универсальных отчетов, для которых невозможно определить заранее их внешний вид. Заметим, что такой способ является наиболее трудоемким с точки зрения написания алгоритма.

Во всех описанных способах основным содержанием ячеек таблицы является текст. При заполнении ячеек все данные преобразуются к текстовому виду. Кроме того, у ячейки может заполняться значение расшифровки. Это дополнительная возможность, которая никак не влияет на внешний вид таблицы при просмотре и печати, а используется для создания связанных отчетов и открытия различных объектов, отображаемых в отчете. При просмотре сформированного отчета в режиме «только просмотр», при подведении курсора к ячейке, у которой заполнено значение расшифровки, курсор принимает форму крестика с лупой и при двойном щелчке мышью или нажатии клавиши <Enter> выполняется отработка значения расшифровки.

Стандартный механизм расшифровки позволяет открыть объект (документ, элемент справочника, счет). Кроме того, использование специальной предопределенной процедуры позволяет определить в модуле формы специальные действия по отработки расшифровки, например построение детализирующего отчета.

Заполнение значения расшифровки при включении секций из исходной таблицы выполняется автоматическим вычислением значения выражения указанного в поле «Расшифровка» закладки «Текст» свойств ячейки. При использовании двух других описанных способов значение расшифровки может быть заполнено с помощью метода Расшифровка объекта типа «ОбластьТаблицы».

Заметим, что указанием "#" в поле «Расшифровка» закладки «Текст» или параметра метода Расшифровка можно включить режим, при котором расшифровка будет действовать на всю строку таблицы, что позволит избежать Дублирования значений для нескольких ячеек и, тем самым, избежать излиш-иих затрат времени при формировании отчета на вычисление выражений расшифровки.

Описанный выше способ заполнения табличного документа созданного функцией СоздатьОбъект открывает табличный документ в отдельном окне при использовании метода Показать. Кроме того, при настройке формы отчета (обработки), существует возможность табличный документ разместить непосредственно в форме. Для этого в диалоге, вызываемом пунктом «Свойства формы» меню «Действия» в параметре «Использовать таблицу» выбирается вариант «Пустую». В этом случае при открытии формы непосредственно в ней размещается табличный документ. Он может заполняться так же, как и табличный документ, созданный функцией СоздатьОбъект. Для доступа к такой таблице используется атрибут контекста формы отчета (обработки) Таблица.

Кроме описанного использования табличного документа для вывода сформированных печатных форм, существует возможность использования табличного документа в специальном режиме для ввода данных. Этот режим доступен только в формах отчета (обработки). Данный режим использования табличного документа включается через свойства формы (вызов свойств формы выполняется из меню «Действия» пунктом «Свойства формы» в параметре «Использовать таблицу» выбирается вариант «Для ввода данных»).

Режим ввода данных позволяет совместить в одной форме отчета (обработки) диалог формы вместе с табличным документом или вовсе заменить диалог табличным документом. Этот режим предполагает обязательное наличие созданной в форме отчета (обработки) таблицы, которая выбирается в свойствах формы, как используемая для ввода данных. В этом режиме в свойствах ячеек табличного документа появляется дополнительная закладка, на которой определяется тип данных хранимых ячейкой, аналогично элементу диалога формы. Для ячеек, в которых предполагается вводить данные, в закладке «Текст» выключается признак «Защита». При открытии формы с установленным свойством использование таблицы для ввода данных, указанная таблица размещается в окне формы и пользователю предоставляется возможность интерактивно вводить значения ячеек, предназначенных для ввода, аналогично вводу в поля диалога.

Работа в режиме ввода данных имеет ряд особенностей с точки зрения обращения к таблице средствами встроенного языка. Прежде всего, доступ к используемой для ввода данных таблице в модуле формы отчета (обработки) осуществляется с помощью ключевого слова "Таблица". Кроме того, в модуле формы возможно непосредственное обращение к значениям именованных ячеек таблицы по их именам. При обращении к области таблицы, используемой в режиме ввода данных, кроме обычных атрибутов используется атрибут "Значение", также предоставляющий доступ к значению ячейки. При этом тип значения определяется типом, выбранным в закладке свойств ячейки «Данные».

Для таблицы, используемой для ввода, в свойствах ячеек данных задаются-формулы. Для ячеек, предназначенных для ввода, формула выполняется после ввода значений, как у реквизитов диалога и используется обычно для вызова процедуры заполнения других ячеек. У ячеек имеющих признак «Защита» формула является выражением и вычисляет собственно значение ячейки как у элементов диалога типа «Текст».

Применение табличного документа для ввода данных используется в специальных случаях, например, когда необходимо ввести большое количество данных или необходимо, чтобы форма ввода была оформлена с использованием разнообразных шрифтов, рамок, картинок и т. п.

Контекст работы с таблицами

Объект типа «Таблица» создается функцией СоздатьОбъект, ссылка на который присваивается переменной. Чтобы вызвать метод объекта, имя метода (с указанием необходимых параметров) пишется через точку после идентификатора переменной.

Для создания объекта типа «Таблица» в качестве параметра функции СоздатьОбъект передается ключевое слово "Таблица".

Англоязычный синоним ключевого слова Таблица — Table.

Пример:

// Подготовка к заполнению выходных форм

Таб = СоздатьОбъект("Таблица");

Пока Запрос.Группировка("Сотр") = 1 Цикл

   // Заполнение полей Сотр

   Таб, ВывестиСекцию("РЛ<");

   Пока Запрос.Группировка("Расч") = 1 Цикл

      // Заполнение полей Расч

      Таб.ВывестиСекцию("ОТ");

   КонецЦикла;

   Таб.ВывестиСекцию("РЛ>");

КонецЦикла;

// Вывод заполненной формы

Таб.Опции(0, 0, 0, 0);

Таб.ТолькоПросмотр(1);

Таб.Показать("Результат");

При настройке формы отчета (обработки), если табличный документ размещен непосредственно в форме (для этого в диалоге, вызываемом пунктом «Свойства формы» меню «Действия» в параметре «Использовать таблицу» выбирается вариант «Пустую»), то доступ к такому объекту осуществляется через атрибут контекста формы отчета (обработки) Таблица.

Атрибуты таблиц

ТекущийОбъект

Значение встроенного объекта таблицы.

Синтаксис:

ТекущийОбъект

Англоязычный синоним:

CurrentObj

Описание:

Атрибут (только для чтения) ТекущийОбъект содержит значение встроенного объекта таблицы типа «Картинка», «Диаграмма» или «OLE объект». Он доступен только в выражении (и в теле процедур, которые вызываются в выражении), которое записывается в конфигураторе в свойствах встроенного объекта таблицы типа «Картинка», «Диаграмма» или «OLE объект» («Свойства» — «Дополнительныо» — «Текст»). Этот атрибут позволяет использовать в программном модуле полученное значение объекта для манипуляции с ним. Например, для взаимодействия с внешним приложением через механизм OLE Automation.

Пример:

* Допустим, в таблицу для построения диаграммы внедрен OLE-объект «MicrosoftGraf97». В свойствах этого объекта («Свойства» — «Дополнительные» — «Текст») в конфигураторе записано выражение:

ПостроитьГрафик(Таб.ТекущийОбъект, Запрос)

в программном модуле, в процедуре ПостроитьГрафик, можно записать алгоритм построения графика, непосредственно управляя внешним приложением MicrosoftGraf97.

Процедура ПостроитьГрафик(График, Запрос)

   Datasheet = График.Application.Datasheet;

   XCounter = 2;

   YCounter = 2;

   Пока Запрос.Группировка("Клиент") = 1 Цикл

      Если Запрос.Клиент.ЭтоГруппа() = 1 Тогда

         Продолжить;

      КонецЕсли;

      range = Datasheet.Cells(1, XCounter);

      range.Value = Запрос.Клиент.Наименование;

      Пока Запрос.Группировка("Товар") = 1 Цикл

         range = Datasheet.Cells(YCounter, 1);

         range.Value = Запрос.Товар.Наименование;

         range = Datasheet.Cells(YCounter, XCounter);

         range.Value = Запрос.ПродСум;

         YCounter = YCounter+1;

      КонецЦикла;

      YCounter = 2;

      XCounter = XCounter+l;

   КонецЦикла;

КонецПроцедуры

Замечание. Следует отметить, что в процессе конфигурирования, когда в таблицу внедряется объект, он может быть визуально предварительно полностью настроен. В данном примере, при внедрении «MicrosoftGraf97» ему установили все параметры требуемой диаграммы: размеры, вид, необходимые надписи и т. п. Атрибут ТекущийОбъект содержит объект таким, как он настроен в конфигураторе, поэтому в режиме исполнения ему достаточно только передать актуальные данные для работы.

См. также: «Работа с Диаграммами», «Связь с внешними приложениями посредством механизмов OLE Automation»

Методы таблиц

ИсходнаяТаблица

Переназначить исходную таблицу.

Синтаксис:

ИсходнаяТаблица(<Строка>)

Англоязычный синоним:

SourceTable

Параметры:

<Строка>

Строковое выражение, содержащее имя исходной таблицы формы, определенное в конфигураторе, или имя файла, содержащего таблицу.

Описание:

Метод ИсходнаяТаблица переназначает в качестве исходной таблицы-шаблона одну из таблиц той формы, в программном модуле которой запущена данная процедура. Имя таблицы сначала ищется в форме модуля, потом в общих таблицах. Если такой таблицы нет, то переданное имя будет рассматриваться как имя файла, содержащего данную таблицу.

Пример:

Таб = СоздатьОбъект("Таблица");

Таб.ИсходнаяТаблица("price");

Таб.Вывести();

Таб.ТолькоПросмотр(0);

Таб.Показать("Каталог", "Catalog.mxl");

Таб.ТолькоПросмотр(1);

ИспользоватьФормат

Устанавливает стандартный формат по умолчанию для вывода всех выражений выводимых секций таблицы.

Синтаксис:

Использоватьформат(<СтрокаФормата>)

Англоязычный синоним:

DefaultFormat

Параметры:

<СтрокаФормата>

Необязательный параметр. Строковое выражение, содержащее форматную строку (см. Формат).

Возвращаемое значение:

Строковое значение, содержащее текущую форматную строку по умолчанию для таблицы (на момент до исполнения метода).

Описание:

Метод Использоватьформат устанавливает стандартный формат по умолчанию для вывода всех выражений выводимых секций таблицы. В ячейках таблицы, при выводе которых требуется формат, отличный от установленного методом ИспользоватьФормат, должен быть установлен формат явным образом. Форматная строка записывается через символ "#" после выражения, заданного для ячейки. Если выражение, заданное для ячейки просто завершается символом "#", то будет использоваться системный формат по умолчанию.

Пример:

Таб.ИспользоватьФормат("415.2");

Открыть

Открыть таблицу из файла.

Синтаксис:

Открыть(<ИмяФайла>)

Англоязычный синоним:

Open

Параметры:

<ИмяФайла>

Строковое выражение с именем файла.

Описание:

Метод Открыть открывает таблицу из файла с именем <ИмяФайла>.

Пример:

Таб = СоздатьОбъект("Таблица");

Таб.Открыть("\v7\db\src.mox");

Таб.Показать();

Вывести

Перенести всю исходную таблицу-шаблон в результирующую таблицу.

Синтаксис:

Вывести()

Англоязычный синоним:

Put

Описание:

Метод Вывести целиком переносит исходную таблицу-шаблон в результирующую таблицу.

Пример:

Таб = СоздатьОбъект("Таблица");

Таб.ИсходнаяТаблица("catalog");

Таб.Вывести();

Таб.ТолькоПросмотр(0);

Таб.Показать("Каталог", "catalog.mxl");

Таб.ТолькоПросмотр(1);

ПолучитьСекцию

Получить значение секции исходной таблицы.

Синтаксис:

ПолучитьСекцию(<ИмяСекции>)

Англоязычный синоним:

GetSection

Параметры:

<ИмяСекции>

Выражение типа строка, задающее имя секции.

Возвращаемое значение:

Объект типа секция.

Описание:

Метод ПолучитьСекцию возвращает именованную секцию исходной таблицы-шаблона. При получении секции, ячейки секции, имеющие тип «Шаблон» и «Выражение» будут заполнены соответствующими данными. Имя секции задается строковым выражением следующего формата:

ИдентификаторСекции1[<|>|-][|ИдентификаторСекции2[<|>|-]]

Символы "<" , ">" , "-" после идентификатора секции указывают на то, что выбирается только часть секции:

< | заголовочная часть (с начала секции до начала вложенной секции).
> | подвальная часть (с конца вложенной секции до конца секции).
— | средняя часть (собственно вложенная секция).

В выражении <ИмяСекции> можно задавать имена двух секций, разделенных знаком "|". При этом будет получена область исходной таблицы, являющаяся пересечением первой и второй указанных секций. При этом одна секция может быть горизонтальной (состоять из строк), а другая — вертикальной (состоять из колонок). В результате получится прямоугольная область таблицы.

Пример:

//Выводим секцию таблицы

Секция = Таб.ПолучитьСекцию("Документ<|ДокументВерт<");

Таб.ВывестиСекцию(Секция);

ВывестиСекцию

Перенести секцию исходной таблицы-шаблона в результирующую таблицу.

Синтаксис:

ВывестиСекцию(<Секция>)

Англоязычный синоним:

PutSection

Параметры:

<Ceкция>

Выражение типа строка, задающее имя выводимой секции, или значение типа секция, полученное при помощи метода ПолучитьСекцию.

Описание:

Метод ВывестиСекцию выполняет перенос именованной секции из исходной таблицы-шаблона в результирующую таблицу. Имя секции задается строковым выражением следующего формата:

ИдентификаторСекции1[<|>|-][|ИдентификаторСекции2[<|>|-]]

Символы "<" , ">" , "-" после идентификатора секции указывают на то, что выбирается только часть секции:

< | заголовочная часть (с начала секции до начала вложенной секции).
> | подвальная часть (с конца вложенной секции до конца секции).
— | средняя часть (собственно вложенная секция).

В выражении <Секция> можно задавать имена двух секций, разделенных знаком "|". При этом перенесена будет область исходной таблицы, являющаяся пересечением первой и второй указанных секций. При этом одна секция может быть горизонтальной (состоять из строк), а другая — вертикальной (состоять из колонок). В результате перенесется прямоугольная область таблицы.

Если в качестве параметра метода задано строковое значение имени секции, то при переносе ячейки таблицы, имеющие тип «Шаблон» и «Выражение», будут заполнены соответствующими данными.

Метод ВывестиСекцию помещает новую секцию со следующей строки вслед за последней выведенной секцией, начиная с первой колонки.

Пример:

//Выводим заглавие таблицы

Таб.ВывестиСекцию("Документ<|ДокументВерт<");

Пока ЗапросКат.Группировка("Ктг") = 1 Цикл

   Таб.ПрисоединитьСекцию("Документ<|Осн2");

КонецЦикла;

Таб.ПрисоединитьСекцию("Документ<|ДокументВерт>");

//Выводим колонтитул таблицы

Таб.ВывестиСекцию("КолонТитул|ДокументВерт<");

Пока 3апросКат.Группировка("Ктг") = 1 Цикл

   Таб.ПрисоединитьСекцию("КолонТитул|Осн2");

КонецЦикла;

Таб.ПрисоединитьСекцию("КолонТитул|ДокументВерт>");

Продолжать = 1;

Пока Запрос.Группировка("Пдр") = 1 Цикл

   // Заполнение полей

   Пдр Таб.ВывестиСекцию("Осн1|ДокументВерт<");

   Далее = 1;

   Пока Продолжать = 1 Цикл

      // Заполнение полей Ктг

      СлКат = ЗапросКат.Группировка("Ктг");

      Если Далее = 1 Тогда

         ОК = Запрос.Группировка("Ктг");

      КонецЕсли;

      Если СлКат = 0 Тогда

         Прервать;

      КонецЕсли;

      Если ЗапросКат.Ктг = Запрос.Ктг Тогда

         Таб.ПрисоединитьСекцию("Осн1|Осн2");

         Далее = 1;

      Иначе

         Таб.ПрисоединитьСекцию("Осн1|Пусто");

         Далее = 0;

      КонецЕсли;

   КонецЦикла;

   Таб.ПрисоединитьСекцию("Осн1|ДокументВерт>");

КонецЦикла;

ПрисоединитьСекцию

Присоединить секцию исходной таблицы-шаблона к результирующей таблице.

Синтаксис:

ПрисоединитьСекцию(<Секция>)

Англоязычный синоним:

AttachSection

Параметры:

<Секция> Выражение типа строка, задающее имя выводимой секции, или значение типа секция, полученное при помощи метода ПолучитьСекцию.

Возвращаемое значение: Нет.

Описание:

Метод ПрисоединитьСекцию выполняет присоединение именованной секции из исходной таблицы-шаблона к результирующей таблице. Имя секции задается строковым выражением следующего формата:

ИдентификаторСекции1[<|>|-][|ИдентификаторСекции2[<|>|-]]

Символы "<" , ">" , "-" после идентификатора секции указывают на то, что выбирается только часть секции:

< | заголовочная часть (с начала секции до начала вложенной секции).
> | подвальная часть (с конца вложенной секции до конца секции).
— | средняя часть (собственно вложенная секция).

В выражении <Секция> можно задавать имена двух секций, разделенных знаком "|". При этом перенесена будет область исходной таблицы, являющаяся пересечением первой и второй указанных секций. При этом одна секция может быть горизонтальной (состоять из строк), а другая — вертикальной (состоять из колонок). В результате перенесется прямоугольная область таблицы.

Если в качестве параметра метода задано строковое значение имени секции, то при переносе ячейки таблицы, имеющие тип «Шаблон» и «Выражение», будут заполнены соответствующими данными.

Метод ПрисоединитьСекцию помещает новую секцию в следующей колонке, правее последней ранее выведенной секции. При этом секция, передаваемая в качестве параметра метода ПрисоединитьСекцию, должна иметь прямоугольную форму, т. е. задаваться как пересечение горизонтальных и вертикальных секций.

Пример:

См. предыдущий пример.

НоваяСтраница

Вставить в результирующую таблицу разделитель страниц.

Синтаксис:

НоваяСтраница(<Ном>)

Англоязычный синоним:

NewPage

Параметры:

<Ном>

Необязательный параметр. Номер строки, после которой начинать новую страницу. Если параметр не указан, то новая страница вставляется по текущей высоте таблицы.

Описание:

Процедура НоваяСтраница вставляет в результирующую таблицу разделитель страниц.

Пример:

Таб.НоваяСтраница();

НоваяКолонка

Вставить в результирующую таблицу разделитель колонок.

Синтаксис:

НоваяКолонка(<Ном>)

Англоязычный синоним:

NewColumn

Параметры:

<Ном>

Необязательный параметр. Номер столбца, после которого начинать новую колонку. Если параметр не указан, то новая колонка вставляется по текущей ширине таблицы.

Описание:

Метод НоваяКолонка вставляет в результирующую таблицу разделитель колонок.

Пример:

Таб.НоваяКолонка();

ЩиринаТаблицы

Определить текущую ширину результирующей таблицы.

Синтаксис:

ЩиринаТаблицы()

Англоязычный синоним:

TableWidth

Возвращаемое значение:

Числовое значение, содержащее количество столбцов в результирующей таблице.

Описание:

Метод ШиринаТаблицы позволяет определить текущее количество столбцов в результирующей таблице.

Пример:

Шир = Таб.ШиринаТаблицы();

ВысотаТаблицы

Определить текущую высоту результирующей таблицы.

Синтаксис:

ВысотаТаблицы()

Англоязычный синоним:

TableHeight

Возвращаемое значение:

Числовое значение, содержащее количество строк в результирующей таблице.

Описание:

Метод ВысотаТаблицы позволяет определить текущее количество строк в результирующей таблице.

Пример:

Выс = Таб.ВысотаТаблицы();

ШиринаСекции

Определить ширину секции таблицы-шаблона.

Синтаксис:

ШиринаСекции(<ИмяСекции>)

Англоязычный синоним:

SectionWidth

Параметры:

<ИмяСекции>

Строковое выражение — название секции таблицы.

Возвращаемое значение:

Числовое значение, содержащее количество столбцов в секции таблицы-шаблона.

Описание:

Метод ШиринаСекции позволяет определить количество столбцов в секции таблицы-шаблона.

Пример:

ШирС = Таб.ШиринаСекции("БоковикОтчета");

ВысотаСекции

Определить высоту секции таблицы-шаблона.

Синтаксис:

ВысотаСекции(<ИмяСекции>)

Англоязычный синоним:

SectionHeight

Параметры:

<ИмяСекции>

Строковое выражение — название секции таблицы.

Возвращаемое значение:

Числовое значение, содержащее количество строк в секции таблицы-шаблона.

Описание:

Метод ВысотаСекции позволяет определить количество столбцов в секции таблицы-шаблона.

Пример:

ВысС = Таб.ВысотаСекции("ШапкаОтчета");

ТолькоПросмотр

Установить режим редактирования таблицы.

Синтаксис:

ТолькоПросмотр(<Режим>)

Англоязычный синоним:

Readonly

Параметры:

<Режим>

Необязательный параметр. Числовое выражение — режим редактирования: 1 — только просмотр, 0 — допускается редактирование.

Возвращаемое значение:

Текущее числовое значение режима редактирования таблицы (на момент до исполнения метода).

Описание:

Метод ТолькоПросмотр устанавливает флаг возможности редактирования таблицы в окне. Данный метод должен вызываться до вызова метода Показать. По умолчанию, для табличных документов устанавливается режим с возможностью редактирования.

Замечание: Режим «только просмотр» позволяет воспринимать сгруппированные ячейки таблицы как единое целое и использовать фиксацию шапки и боковика таблицы при просмотре. Таким образом данный режим рекомендуется для отчетов, которые предназначены в основном для просмотра и печати.

Пример:

Таб = СоздатьОбъект("Таблица");

Таб.Открыть("catalog.txt");

Таб.ТолькоПросмотр(0);

Таб.Показать("Редактирование Прайс-листа", "price.txt");

Очистить

Очищает содержимое табличного документа.

Синтаксис:

Очистить()

Англоязычный синоним:

Clear

Описание:

Метод Очистить очищает текущее содержимое-табличного документа. Его использование позволяет заново заполнить содержимое табличного документа уже открытого в окне методом Показать. Использование данного метода имеет смысл, если сам объект типа «Таблица» не уничтожался после первого заполнения.

Пример:

* Модуль отчета позволяет выводить отчет заново в уже открытое окно.

Перем Таб;

Процедура Сформировать()

   Таб.Очистить();

   Таб.ВывестиСекцию("Отчет");

   Таб.Показать();

КонецПроцедуры

Таб=СоздатьОбъект("Таблица");

Показать

Открыть окно табличного документа.

Синтаксис:

Показать([<3аголовок>], [<ИмяФайла>], [<Активизировать>])

Англоязычный синоним:

Show

Параметры:

<Заголовок> | Необязательный параметр. Строковое выражение — заголовок окна табличного документа.
<ИмяФайла> | Необязательный параметр. Строковое выражение — имя файла для сохранения табличного документа.
<Активизировать> | Необязательный параметр. Числовое выражение — признак активизации. Может принимать значения: 1 — активизировать окно табличного документа; 0 — не активизировать окно табличного документа; -1 (минус единица) — закрыть окно если оно открыто. Значение по умолчанию: 1.

Описание:

Метод Показать открывает окно с табличным документом для просмотра и редактирования.

Параметр <Заголовок> позволяет задать заголовок окна, содержащего табличнй документ. Если параметр не указан, в заголовке будет выдаваться слово «Таблица».

Если указан параметр <ИмяФайла>, то при закрытии окна табличного документа система 1С:Предприятие будет предлагать сохранить документ в файл с указанным именем. Если файла с именем <ИмяФайла> не существует, будет создан новый файл с таким именем.

Если параметр <ИмяФайла> опущен или имеет пустое значение, то при закрытии окна табличного документа система 1С:Предприятие не будет предлагать сохранить данные в файл. Это имеет смысл для документов, которые формируются только для просмотра или печати, и их не обязательно записывать в файл. Вместе с этим, пользователь в любом случае может записать табличный документ в файл, используя команды «Сохранить» и «Сохранить как» из меню «Файл» главного меню системы 1С:Предприятие.

Параметр <Активизировать> позволяет регулировать активизацию окна табличного документа при вызове метода Показать. Если значение параметра — 0 , то окно открывается, но не становится активным.

Пример:

* Создается объект типа «Таблица» для работы с табличными документами, Открывается табличный документ, находящийся в файле SRC.MOX .

// Для работы с табличными документами создаем

// объект типа "Таблица"

Таб = СоздатьОбъект("Таблица");

// Открываем табличный документ из файла

Таб.Открыть("\v7\db\src.mox");

// Показ табличного документа

Таб.Показать();

Защита

Защитить таблицу от изменений.

Синтаксис:

Защита(<Флаг>)

Англоязычный синоним:

Protection

Параметры:

<Флаг>

Необязательный параметр. Числовое выражение — флаг защиты: 1 — установить защиту; 0 — снять защиту. Значение по умолчанию — 1.

Возвращаемое значение:

Текущее значение флага защиты таблицы (на момент до исполнения метода).

Описание:

Метод Защита предназначен для установки режима полной защиты таблицы от редактирования и копирования (в том числе через буфер обмена). Если не использовать метод Защита, то таблица выводится в незащищенном режиме.

Пример:

Таб.3ащита(1);

Записать

Записать таблицу в файл.

Синтаксис:

Записать(<ИмяФайла>, <ТипФайла>)

Англоязычный синоним:

Write

Параметры:

<ИмяФaйлa> | Строковое выражение с именем файла.
<ТипФайла> | Необязательный параметр. Числовое или строковое выражение, определяющее тип файла. · отсутствует, 0 или "MXL" — формат 1С; · 1 или "XLS" — формат MS Excel · 2 или "НТМ" или "HTML" — формат HTML; · 3 или "ТХТ" — формат ТХТ.

Описание:

Метод Записать записывает таблицу в файл с именем <ИмяФайла>.

Пример:

Таб = СоздатьОбъект("Таблица");

Таб.Открыть("tabl_l.mxl");

Таб.Записать("tabl_2.mxl");

Таб.Записать("tabl_2", "XLS");

ЗначениеТекущейЯчейки

Возвращает вычисленное значение, записанное в ячейку таблицы.

Синтаксис:

ЗначениеТекущейЯчейки(<Адрес>)

Англоязычный синоним:

ValueOfCurrentCell

Параметры:

<Адрес>

Необязательный параметр. Идентификатор переменной, куда система возвратит адрес текущей ячейки в формате «RnCn».

Возвращаемое значение:

Значение, записанное в ячейку таблицы.

Описание:

Метод ЗначениеТекущейЯчейки возвращает значение, записанное в ячейку таблицы путем вычисления выражения, заданного в конфигураторе («Свойства» ячейки — закладка «Текст» — поле «Значение»).

Замечание. Для того, чтобы иметь доступ к этому методу, необходимо, чтобы переменная, содержащая таблицу, была объявлена как переменная модуля, а не локальная переменная процедуры. В этом случае во всех процедурах программного модуля вы сможете использовать данный метод и, на основании значения текущей ячейки, формировать, например, более подробные отчеты.

Пример:

Док = Таб.ЗначениеТекущейЯчейки();

См. также: ЗначениеВСтрокуВнутр, ЗначениеИзСтрокиВнутр

Область

Возращает Область выходной таблицы.

Синтаксис 1:

Область(<Адрес>)

Синтаксис 2:

Область(<R1>, <С1>, <R2>, <С2>)

Англоязычный синоним:

Area

Параметры:

<Адрес> | Необязательный параметр. Строковое выражение, задающее имя области или адрес в формате «R1C1:R2C2».
<R1> | Необязательный параметр. Числовое выражение. Номер первой строки области.
<С1> | Необязательный параметр. Числовое выражение. Номер первого столбца области.
<R2> | Необязательный параметр. Числовое выражение. Номер последней строки области.
<С2> | Необязательный параметр. Числовое выражение. Номер последнего столбца области.

Возвращаемое значение:

Значение типа «ОбластьТаблицы».

Описание:

Функция Область возвращает значение области выходной таблицы или таблицы в режиме ввода данных. Если последняя строка и последний столбец отсутствуют, то область задана единственной ячейкой. Если строки или столбцы отсутсвуют, то область задана диапазоном столбцов или строк соответственно. Если метод вызван без параметров, то область задана всей таблицей.

Пример:

Таб = СоздатьОбъект("Таблица");

Таб.Открыть("tabl_l.mxl");

ВыбОбласть = Таб.Область("R1C1:R8C16");

ПовторятьПриПечатиСтроки

Задать строки результирующей таблицы, повторяющиеся при печати в начале каждой страницы.

Синтаксис:

ПовторятьПриПечатиСтроки(<НачСтрока>, <КонСтрока>)

Англоязычный синоним:

RepeatRowsWhilePrinting

Параметры:

<НачСтрока> | Числовое выражение — номер первой строки повторения.
<КонСтрока> | Числовое выражение — номер последней строки повторения.

Описание:

Метод ПовторятьПриПечатиСтроки позволяет задать строки результирующей таблицы, повторяющиеся при печати в начале каждой страницы.

Пример:

Таб.ПовторятьПриПечатиСтроки(1, Таб.ВысотаСекции("ШапкаОтчета"));

ПовторятьПриПечатиСтолбцы

Задать столбцы результирующей таблицы, повторяющиеся при печати на каждой странице слева.

Синтаксис:

ПовторятьПриПечатиСтолбцы(<НачСтолбец>, <КонСтолбец>)

Англоязычный синоним:

RepeatColsWhilePrinting

Параметры:

<НачСтолбец> | Числовое выражение — номер первого столбца повторения.
<КонСтолбец> | Числовое выражение — номер последнего столбца повторения.

Описание:

Метод ПовторятьПриПечатиСтолбцы позволяет задать столбцы результирующей таблицы, повторяющиеся при печати на каждой странице слева.

Пример:

Таб.ПовторятьПриПечатиСтолбцы(1, Таб.ШиринаСекции("БоковикОтчета"));

Опции

Установить флаги вывода сетки, заголовков, фиксации строк и столбцов, опции печати

Синтаксис:

Опции(<ВыводСетки>, <ВыводЗаголовков>, <ФиксСтрок>, <ФиксСтолбцов>,

      <ИмяОпцийПечати>, <ИмяСохрРазмОкна>, <ФлагЧерноБелогоПросмотра>,

      <НаправлениеПерехода>)

Англоязычный синоним:

Options

Параметры:

<ВыводСетки> | Необязательный параметр. Числовое выражение — флаг вывода сетки: 1 — показывать, 0 не показывать. Значение по умолчанию — 1.
<ВыводЗаголовков> | Необязательный параметр. Числовое выражение — флаг вывода заголовков строк и столбцов: 1 — показывать, 0 не показывать. Значение по умолчанию — 1.
<ФиксСтрок> | Необязательный параметр. Числовое выражение — количество фиксируемых строк. Значение по умолчанию — 0.
<ФиксСтолбцов> | Необязательный параметр. Числовое выражение — количество фиксируемых столбцов. Значение по умолчанию — 0.
<ИмяОпцийПечати> | Необязательный параметр. Строковое выражение — идентификатор набора опций печати для данной таблицы. Значение по умолчанию — пустая строка — в этом случае используются системные опции печати по умолчанию.
<ИмяСохрРазмОкна> | Необязательный параметр. Строковое выражение — идентификатор сохраняемых параметров размеров окна. Если этот параметр указан, то система будет сохранять размер окна и использовать его при следующем открытии табличного документа. Фактически, указывая этот параметр можно указать системе режим сохранения и восстановления размеров окна для данного табличного документа, который идентифицируется этой строкой. Параметр необязателен. Значение по умолчанию — пустая строка — в этом случае размеры окна не запоминаются.
<ФлагЧерноБелогоПросмотра> | Необязательный параметр. Число: 1 — чернобелый просмотр; 0 — обычный режим просмотра. Значение по умолчанию — 0.
<НаправлениеПерехода> | Необязательный параметр. Число: 1 — по строкам, т. е. при вводе данных в ячейки при нажатии клавиши <Enter> будет автоматически выполняться переход к следующей вводимой ячейке в этой строке, а если таковых нет, то в самой левой вводимой ячейке следующей строки; 2 — по столбцам, т. е. при вводе данных в ячейки при нажатии клавиши <Enter> будет автоматически выполняться переход к следующей вводимой ячейке в этом столбце, а если таковых нет, то в самой верхней вводимой ячейке следующего столбца; 3 — при вводе данных в ячейки автоматический переход при нажатии клавиши <Enter> выполняться не будет. Значение по умолчанию 1.

Описание:

Метод Опции позволяет перед показом таблицы установить флаги вывода сетки и вывода заголовков строк и столбцов, а также фиксацию строк и столбцов. Если перед отображением таблицы не использовать метод Опции, то для табличных документов устанавливается режим «только для чтения», а все флаги имеют значение 0.

Даный метод позволяет назначить для каждой таблицы свой собственный набор опций печати, который сохраняется в системе под именем <ИмяОпцийПечати>. Набор опций печати привязан к конкретному рабочему месту (компьютеру) и запоминается всякий раз, когда в режиме исполнения при открытом окне редактирования таблицы пользователь перенастраивает параметры настройки печати (главное меню — «Файл» — «Печать»).

Пример: Если при формировании отчетов в методе Опции используются уникальные имена для хранения настройки печати, то, например, для отчета «Прайс-лист» можно установить в параметрах печати ориентацию бумаги — «портрет», а для отчета «Оборотно-сальдовая ведомость» — «ландшафт». В дальнейшем, при формировании этих отчетов параметры печати будут настраиваться автоматически.

Пример:

//Вызов выходного отчета в окно просмотра и редактирования.

Таб.ТолькоПросмотр(1);

Таб.Опции(0, 0, 5, 0, "ОстаткиТоваров");

Таб.Показать("Остатки товаров на складах", "");

ОбластьПечати

Устанавливает из языка область печати табличного документа.

Синтаксис:

ОбластьПечати(<Верх>, <Лево>, <Низ>, <Право>)

Англоязычный синоним:

PrintRange

Параметры:

<Верх> | Числовое выражение — номер верхней строки таблицы, выводимой на печать.
<Лево> | Числовое выражение — номер крайнего левого столбца, выводимого на печать.
<Низ> | Числовое выражение — номер нижней строки таблицы, выводимой на печать.
<Право> | Числовое выражение — номер крайнего правого столбца, выводимого на печать.

Описание:

Метод ОбластьПечати устанавливает из языка область печати табличного

документа

Пример:

Таб.Напечатать(0);

ПараметрыСтраницы

Установить параметры страницы.

Синтаксис:

ПараметрыСтраницы(<Ориентация>, <Масштаб>, <РежимПечатиКопий>, <ПолеСлева>,

                  <ПолеСправа>, <ПолеСверху>, <ПолеСнизу>, <КолонтитулСверху>,

                  <КолонтитулСнизу>, <Автомасштаб> , <ФлагЧерноБелойПечати>,

                  <ИмяПринтера>)

Англоязычный синоним:

PageSetup

Параметры:

<Ориентация> | Необязательный параметр. Числовое выражение — ориентация вывода на печать: 1 — портрет; 2 — ландшафт.
<Масштаб> | Необязательный параметр. Числовое выражение — масштаб (в процентах) вывода на печать.
<РежимПечатиКопий> | Необязательный параметр. Числовое выражение — режим вывода нескольких копий на печать: 0 — (collate) выводить сначала первые страницы всех копий, затем вторые и т. д.;1 — (разобрать) выводить страницы копий по порядку.
<ПолеСлева> | Необязательный параметр. Числовое выражение — расстояние (в миллиметрах) от правого края страницы.
<ПолеСверху> | Необязательный параметр. Числовое выражение — расстояние (в миллиметрах) от верхнего края страницы.
<ПолеСнизу> | Необязательный параметр. Числовое выражение — расстояние (в миллиметрах) от нижнего края страницы.
<КолонтитулСверху> | Необязательный параметр. Числовое выражение — размер (в миллиметрах) верхнего колонтитула.
<КолонтитулСнизу> | Необязательный параметр. Числовое выражение — размер (в миллиметрах) нижнего колонтитула.
<Автомасштаб> | Необязательный параметр. Числовое выражение — указывает режим автоматического подбора масштаба для размещения документа при печате на листе по ширине. 1 — Включить; 0 — Выключить. По молчанию — 0.
<ФлагЧерноБелойПечати> | Необязательный параметр. Число: 1 — черно-белая печать; 0 — обычный режим печати. Значение по умолчанию — 0.
<ИмяПринтера> | Необязательный параметр. Строка как в стандартном диалоге печати.

Описание:

Метод ПараметрыСтраницы позволяет установить параметры страницы вывода на печать.

Пример:

Таб.ПараметрыСтраницы(1, 100, 1, 17, 17, 25, 25, 10, 10);

См. также: Опции

КоличествоЭкземпляров

Установить количество печатаемых экземпляров.

Синтаксис:

КоличествоЭкземпляров(<Колич>)

Англоязычный синоним:

NumberOfCopies

Параметры:

<Колич>

Необязательный параметр. Числовое выражение — количество печатаемых экземпляров.

Возвращаемое значение:

Текущее заданное количество печатаемых экземпляров (на момент до исполнения метода).

Описание:

Метод КоличествоЭкземпляров позволяет установить количество печатаемых экземпляров. Если для текущей таблицы используется набор опций печати (см. Опции), то данный метод следует вызывать только после вызова метода Показать, т. к. иначе будут действовать автоматически устанавливаемые настройки печати.

Пример:

Таб.КоличествоЭкземпляров(5);

См. также: Опции

ЭкземпляровНаСтранице

Установить количество печатаемых экземпляров на странице.

Синтаксис:

ЭкземпляровНаСтранице(<Колич>)

Англоязычный синоним:

CopyesPerPage

Параметры:

<Колич>

Необязательный параметр. Числовое выражение — количество печатаемых экземпляров на странице. Может принимать значения:

1 — один экземпляр на странице;

2 — два экземпляра на странице;

0 — автоматический режим размещения двух экземпляров на странице исходя из размеров документа.

Возвращаемое значение:

Текущее заданное количество печатаемых экземпляров на странице (на момент до исполнения метода).

Описание:

Метод ЭкземпляровНаСтранице позволяет установить количество печатаемых экземпляров на странице.

Пример:

Таб.ЭкземпляровНаСтранице(2);

См. также: Опции

Напечатать

Напечатать таблицу без предварительного просмотра.

Синтаксис:

Напечатать{<Флаг>)

Англоязычный синоним:

Print

Параметры:

<Флаг>

Числовое выражение — режим запроса диалога печати: 1 — запрашивать диалог печати; 0 — не запрашивать диалог печати.

Описание:

Метод Напечатать позволяет вывести таблицу на печать без открытия окна редактирования (см. Показать).

Пример:

Таб.Напечатать(0);

См. также: Показать

Атрибуты и методы объекта «СекцияТаблицы»

<ИмяОбласти>

Возвращает или задает объект «область».

Синтаксис:

<ИмяОбласти>

Идентификатор области секции, как она задана в конфигураторе.

Описание:

В процессе конфигурирования для секции можно задавать практически неограниченное число дополнительно выделенных и поименованных областей для выделения любой необходимой информации.

Атрибут <ИмяОбласти> позволяет обращаться к поименованной области секции. Для обращения к конкретной области секции следует указать ее идентификатор, заданный для этой области в конфигураторе.

Пример:

Таб = СоздатьОбъект("Таблица");

Таб.Открыть("tabl_l.mxl");

Секция = Таб.ПолучитьСекцию("ЗаголовокОтчета");

Секция.Заглавие.Текст = "Товарный отчет";

Таб.ВывестиСекцию(Секция);

Область

Возращает Область секции.

Синтаксис 1:

Область(<Адрес>)

Синтаксис 2:

Область(<R1>, <С1>, <R2>, <С2 >)

Англоязычный синоним:

Area

Параметры:

<Адрес> | Необязательный параметр. Строковое выражение, задающее либо имя области, заданное в конфигураторе, либо адрес в формате «R1C1:R2C2».
<Rl> | Необязательный параметр. Числовое выражение. Номер первой строки области.
<С1> | Необязательный параметр. Числовое выражение. Номер первого столбца области.
<R2> | Необязательный параметр. Числовое выражение. Номер последней строки области.
<С2> | Необязательный параметр. Числовое выражение. Номер последнего столбца области.

Возвращаемое значение:

Значение типа «ОбластьТаблицы».

Описание:

Функция Область возвращает значение области секции. При задании адреса области, номера строк и столбцов задаются относительно начала данной секции. Если последняя строка и последний столбец отсутствуют, то область задана единственной ячейкой. Если строки или столбцы отсутсвуют, то область задана диапазоном столбцов или строк соответственно. Если метод вызван без параметров, то область задана всей секцией.

Пример:

Таб = СоздатьОбъект("Таблица");

Таб.Открыть("tabl_l.mxl");

Секция = Таб.ПолучитьСекцию("ЗаголовокОтчета");

ВыбОбласть = Секция.Область("Заглавие");

ВыбОбласть.Текст = "Товарный отчет";

Таб.ВывестиСекцию(Секция);

Атрибуты и методы объекта «ОбластьТаблицы»

Текст

Прочитать/установить значение текста области.

Синтаксис:

Текст

Англоязычный синоним:

Text

Описание:

Атрибут Текст позволяет прочитать\установить значение текста области (аналогично тому, как в конфигураторе интерактивно задают значение формулы в свойствах ячейки талины «Свойства»- закладка «Текст»).

Пример:

Таб = СоздатьОбъект("Таблица");

Таб.Открыть("tabl_l.mxl");

ВыбОбласть = Таб.Область("R1C1");

ВыбОбласть.Текст = "Товарный отчет";

Расшифровка

Установить расшифровку области.

Синтаксис:

Расшифровка(<Значение>, <ФлагДляВсейСтроки>)

Англоязычный синоним:

Details

Параметры:

<Значение> | Значение расшифровки области.
<ФлагДляВсейСтроки> | Необязательный параметр. Число: 0 — обычный режим; 1 — установить данную расшифровку для всей строки; 2 — не вызывать расшифровку для данной ячейки. Значение по умолчанию — 0.

Описание:

Метод Расшифровка записывает расшифровку области.

Пример:

Таб = СоздатьОбъект("Таблица");

Таб.Открыть("tabl_l.mxl");

ВыбОбласть = Таб.Область("R8C4");

ВыбОбласть.Расшифровка(ВыбДокумент, 1);

Объединить

Объединить ячейки области.

Синтаксис:

Объединить()

Англоязычный синоним:

Merge

Описание:

Метод Объединить объединяет ячейки области.

Пример:

Таб = СоздатьОбъект("Таблица");

Таб.Открыть("tabl_l.mxl");

ВыбОбласть = Таб.Область("R1C1:R8C4");

ВыбОбласть.Объединить();

Шрифт

Получить/установить шрифт области.

Синтаксис:

Шрифт(<ИмяШрифта>)

Англоязычный синоним:

Font

Параметры:

<ИмяШрифта>

Необязательный параметр. Строковое выражение, задающее имя шрифта или «имя, набор символов», где основные наборы символов: 204 — русский; 238 — европейский; 186 — балтийский; 161 — греческий; 162 — турецкий. Если параметр опущен, то шрифт области не изменяется.

Возвращаемое значение:

Имя шрифта до исполнения метода.

Описание:

Метод Шрифт устанавливает шрифт области.

Пример:

Таб = СоздатьОбъект("Таблица");

Таб.Открыть("tabl_l.mxl");

ВыбОбласть = Таб.Область("R8C4");

ВыбОбласть.Шрифт("Arial, 204");

РазмерШрифта

Получить/установить размер шрифта области.

Синтаксис:

РазмерШрифта(<Размер>)

Англоязычный синоним:

FontSize

Параметры:

<Размер>

Необязательный параметр. Числовое выражение, задающее размер шрифта. Если параметр опущен, то размер шрифта области не изменяется.

Возвращаемое значение:

Размер шрифта до исполнения метода.

Описание:

Метод РазмерШрифта устанавливает размер шрифта области.

Пример:

Таб = СоздатьОбъект("Таблица");

Таб.Открыть("tabl_l.mxl");

ВыбОбласть = Таб.Область("R8C4");

ВыбОбласть.Шрифт("Arial");

ВыбОбласть.РазмерШрифта(10);

Полужирный

Получить/установить признак жирного шрифта области.

Синтаксис:

Полужирный(<Жирный>)

Англоязычный синоним:

Bold

Параметры:

<Жирный>

Необязательный параметр. Число: 1 — жирный шрифт; 0 — не жирный шрифт. Если параметр опущен, то жирность шрифта области не изменяется.

Возвращаемое значение:

Признак жирного шрифта до исполнения метода.

Описание:

Метод Полужирный устанавливает признак жирного шрифта области.

Пример:

Таб = СоздатьОбъект("Таблица");

Таб.Открыть("tabl_l.mxl");

ВыбОбласть = Таб.Область("R8C4");

ВыбОбласть.Шрифт("Arial");

ВыбОбласть.РазмерШрифта(10);

ВыбОбласть.Полужирный(1);

Курсив

Получить/установить признак шрифта курсив области.

Синтаксис:

Курсив(<Курсив>)

Англоязычный синоним:

Italic

Параметры:

<Курсив>

Необязательный параметр. Число: 1 — шрифт курсив; 0 — шрифт не курсив. Если параметр опущен, то признак курсив шрифта области не изменяется.

Возвращаемое значение:

Признак шрифта курсив до исполнения метода.

Описание:

Метод Курсив устанавливает признак шрифта курсив области.

Пример:

Таб = СоздатьОбъект("Таблица");

Таб.Открыть("tabl__l.mxl");

ВыбОбласть = Таб.Область("R8C4");

ВыбОбласть.Шрифт("Arial");

ВыбОбласть.РазмерШрифта(10);

ВыбОбласть.Курсив(1);

Подчеркнутый

Получить/установить признак подчеркнутого шрифта области.

Синтаксис:

Подчеркнутый(<Подчеркнутый>)

Англоязычный синоним:

Underline

Параметры:

<Подчеркнутый>

Необязательный параметр. Число: 1 — шрифт подчеркнутый; 0 — шрифт не подчеркнутый. Если параметр опущен, то признак подчеркнутого шрифта области не изменяется.

Возвращаемое значение:

Признак подчеркнутого шрифта до исполнения метода.

Описание:

Метод Подчеркнутый устанавливает признак подчеркнутого шрифта области.

Пример:

Таб = СоздатьОбъект("Таблица");

Таб.Открыть("tabl_l.mxl");

ВыбОбласть = Таб.Область("R8C4");

ВыбОбласть.Шрифт("Arial");

ВыбОбласть.РазмерШрифта(10);

ВыбОбласть.Подчеркнутый(1);

ВертикальноеПоложение

Получить/установить признак вертикального выравнивания текста области.

Синтаксис:

ВертикальноеПоложение(<Положение>)

Англоязычный синоним:

VerticalAlign

Параметры:

<Положение>

Необязательный параметр. Число: 1 — сверху; 2 — снизу; 3 — по центру. Если параметр опущен, то признак вертикального выравнивания текста области не изменяется.

Возвращаемое значение:

Признак вертикального выравнивания текста до исполнения метода.

Описание:

Метод ВертикальноеПоложение устанавливает признак вертикального выравнивания текста области.

Пример:

Таб = СоздатьОбъект("Таблица");

Таб.Открыть("tabl_l.mxl");

ВыбОбласть = Таб.Область("R8C4");

ВыбОбласть.Шрифт("Arial");

ВыбОбласть.РазмерШрифта(10);

ВкбОбласть.Подчеркнутый(1);

ВыбОбласть.ВертикальноеПоложение(3);

ГоризонтальноеПоложение

Получить/установить признак горизонтального выравнивания текста области.

Синтаксис:

ГоризонтальноеПоложение(<Положение>)

Англоязычный синоним:

HorizontalAlign

Параметры:

<Положение>

Необязательный параметр. Число: 1 — слева; 2 — справа; 3 — по центру; 4 — по ширине. (5 – 8) — по выделенным столбцам: слева/справа/по центру/по ширине. Если параметр опущен, то признак горизонтального выравнивания текста области не изменяется.

Возвращаемое значение:

Признак горизонтального выравнивания текста до исполнения метода.

Описание:

Метод ГоризонтальноеПоложение устанавливает признак горизонтального выравнивания текста области.

Пример:

Таб = СоздатьОбъект("Таблица");

Таб.Открыть(" tabl_l.mxl");

ВыбОбласть = Таб.Область("R8C4");

ВыбОбласть.Шрифт("Arial");

ВыбОбласть.РазмерШрифта(10);

ВыбОбласть.Подчеркнутый(1);

ВыбОбласть.ГоризонтальноеПоложение(3);

Контроль

Получить/установить признак контроля текста области.

Синтаксис:

Контроль(<Контроль>)

Англоязычный синоним:

Control

Параметры:

<Контроль>

Необязательный параметр. Число: 1 — Авто; 2 — Обрезать; 3 — Забивать; 4 — Переносить; 5 — Красный; 6 — Забивать+Красный. Если параметр опущен, то признак контроля текста области не изменяется.

Возвращаемое значение:

Признак контроля текста до исполнения метода.

Описание:

Метод Контроль устанавливает признак контроля текста области.

Пример:

Таб = СоздатьОбъект("Таблица");

Таб.Открыть("tabl_l.mxl");

ВыбОбласть = Таб.Область("R8C4");

ВыбОбласть.Шрифт("Arial");

ВыбОбласть.РазмерШрифта(10);

ВыбОбласть.Подчеркнутый(1);

ВыбОбласть.ГоризонтальноеПоложение(3);

ВыбОбласть.Контроль(4);

РамкаСверху

Получить/установить рамку сверху области.

Синтаксис:

РамкаСверху(<Рамка>)

Англоязычный синоним:

TopBorder

Параметры:

<Рамка>

Необязательный параметр. Число: 0 — нет; 1 — очень тонкая; 2 — тонкая точечная; 3 — тонкая сплошная; 4 — средняя сплошная; 5 — толстая сплошная; 6 — двойная; 7 — тонкая средний пунктир; 8 — тонкая длинный пунктир; 9 — толстая пунктир. Если параметр опущен, то рамка сверху области не изменяется.

Возвращаемое значение:

Рамка сверху до исполнения метода.

Описание:

Метод РамкаС верху устанавливает рамку сверху области.

Пример:

Таб = СоздатьОбъект("Таблица");

Таб.Открыть("tabl_l.mxl");

ВыбОбласть = Таб.Область("R8C4");

ВыбОбласть.Шрифт("Arial");

ВыбОбласть.РазмерШрифта(10);

ВыбОбласть.Подчеркнутый(1);

ВыбОбласть.ГоризонтальноеПоложение(3);

ВыбОбласть.Контроль(4);

ВыбОбласть.РамкаСверху(3);

РамкаСнизу

Получить/установить рамку снизу области.

Синтаксис:

РамкаСнизу(<Рамка>)

Англоязычный синоним:

BottomBorder

Параметры:

<Рамка>

Необязательный параметр. Число: 0 — нет; 1 — очень тонкая; 2 — тонкая точечная; 3 — тонкая сплошная; 4 — средняя сплошная; 5 — толстая сплошная; 6 — двойная; 7 — тонкая средний пунктир; 8 — тонкая длинный пунктир; 9 — толстая пунктир. Если параметр опущен, то рамка снизу области не изменяется.

Возвращаемое значение:

Рамка снизу до исполнения метода.

Описание:

Метод РамкаСнизу устанавливает рамку снизу области.

Пример:

Таб = СоздатьОбъект("Таблица");

Таб.Открыть("tabl_l.mxl");

ВыбОбласть = Таб.Область("R8C4");

ВыбОбласть.Шрифт("Arial");

ВыбОбласть.РазмерШрифта(10);

ВыбОбласть.Подчеркнутый(1);

ВыбОбласть.ГоризонтальноеПоложение(3);

ВыбОбласть.Контроль(4);

ВыбОбласть.РамкаСнизу(3 );

РамкаСлева

Получить/установить рамку слева области.

Синтаксис:

РамкаСлева(<Рамка>)

Англоязычный синоним:

LeftBorder

Параметры:

<Рамка>

Необязательный параметр. Число: 0 — нет; 1 — очень тонкая; 2 — тонкая точечная; 3 — тонкая сплошная; 4 — средняя сплошная; 5 — толстая сплошная; 6 — двойная; 7 — тонкая средний пунктир; 8 — тонкая длинный пунктир; 9 — толстая пунктир. Если параметр опущен, то рамка слева области не изменяется.

Возвращаемое значение:

Рамка слева до исполнения метода.

Описание:

Метод РамкаСлева устанавливает рамку слева области.

Пример:

Таб = СоздатьОбъект("Таблица");

Таб.Открыть("tabl_l.mxl");

ВыбОбласть = Таб.Область("R8C4");

ВыбОбласть.Шрифт("Arial");

ВыбОбласть.РазмерШрифта(10);

ВыбОбласть.Подчеркнутый(1);

ВыбОбласть.ГоризонтальноеПоложение(3);

ВыбОбласть.Контроль(4);

ВыбОбласть.РамкаСлева(3);

РамкаСправа

Получить/установить рамку справа области.

Синтаксис:

РамкаСправа(<Рамка>)

Англоязычный синоним:

RightBorder

Параметры:

<Рамка>

Необязательный параметр. Число: 0 — нет; 1 — очень тонкая; 2 — тонкая точечная; 3 — тонкая сплошная; 4 — средняя сплошная; 5 — толстая сплошная; 6 — двойная; 7 — тонкая средний пунктир; 8 — тонкая длинный пунктир; 9 — толстая пунктир. Если параметр опущен, то рамка справа области не изменяется.

Возвращаемое значение:

Рамка справа до исполнения метода.

Описание:

Метод РамкаСправа устанавливает рамку справа области.

Пример:

Таб = СоздатьОбъект("Таблица");

Таб.Открыть("tabl_l.mxl");

ВыбОбласть = Таб.Область("R8C4");

ВыбОбласть.Шрифт("Arial");

ВыбОбласть.РазмерШрифта(10);

ВыбОбласть.Подчеркнутый(1);

ВыбОбласть.ГоризонтальноеПоложение(3);

ВыбОбласть.Контроль(4);

ВыбОбласть.РамкаСправа(3);

Рамка

Установить рамки всех ячеек области.

Синтаксис:

Рамка(<РамкаСлева>, <РамкаСверху>, <РамкаСправа>, <РамкаСнизу>)

Англоязычный синоним:

Border

Параметры:

<РамкаСлева>
<РамкаСверху> <РамкаСправа> <РамкаСнизу>

Необязательные параметры. Число: 0 — нет; 1 — очень тонкая; 2 — тонкая точечная; 3 — тонкая сплошная; 4 — средняя сплошная; 5 — толстая сплошная; 6 — двойная; 7 — тонкая средний пунктир; 8 — тонкая длинный пунктир; 9 — толстая пунктир. Если какой либо параметр опущен, то соответствующая рамка ячеек области не изменяется.

Описание:

Метод Рамка устанавливает рамки всех ячеек области.

Пример:

Таб = СоздатьОбъект("Таблица");

Таб.Открыть("tabl_l.mxl");

ВыбОбласть = Таб.Область("R8C4");

ВыбОбласть.Шрифт("Arial");

ВыбОбласть.РазмерШрифта(10 );

ВыбОбласть.Подчеркнутый(1);

ВыбОбласть.ГоризонтальноеПоложение(3);

ВыбОбласть.Контроль(4);

ВыбОбласть.Рамка(0, 3, 3, 3);

РамкаОбвести

Установить рамки по краям области.

Синтаксис:

РамкаОбвести(<Рамка Слева>, <РамкаСверху>, <РамкаСправа>, <РамкаСнизу>)

днглоязычный синоним:

BorderOutline

Параметры:

<РамкаСлева>
<РамкаСверху> <РамкаСправа> <РамкаСнизу>

Необязательные параметры. Число: 0 — нет; 1 — очень тонкая; 2 — тонкая точечная; 3 — тонкая сплошная; 4 — средняя сплошная; 5 — толстая сплошная; 6 — двойная; 7 — тонкая средний пунктир; 8 — тонкая длинный пунктир; 9 — толстая пунктир. Если какой либо параметр опущен, то соответствующая рамка ячеек области не изменяется.

Описание:

Метод РамкаОбвести устанавливает рамки по краям области.

Пример:

Таб = СоздатьОбъект("Таблица");

Таб.Открыть("tabl_l.mxl");

ВыбОбласть = Таб.Область("R8C4");

ВыбОбласть.Шрифт("Arial");

ВыбОбласть.РазмерШрифта(10);

ВыбОбласть.Подчеркнутый(1);

ВыбОбласть.ГоризонтальноеПоложение(3);

ВыбОбласть.Контроль(4);

ВыбОбласть.РамкаОбвести(0, 3, 3, 3);

ЦветФона

Получить/установить режим отображения цвета фона области.

Синтаксис 1:

ЦзетФона(<Цвет>)

Синтаксис 2:

ЦветФона(<R>, <G>, <B>)

Англоязычный синоним:

BackgroundColor

Параметры:

<Цвет> | Необязательный параметр. Числовое выражение, значение которого задает RGB цвет. Допустимые значения от 0 до 16777'215. Значение -1 (минус единица) задает цвет, заданный для всей области по умолчанию.
<R> | Числовое выражение, значение которого задает красную компоненту цвета. Допустимые значения от 0 до 256.
<G> | Числовое выражение, значение которого задает зеленую компоненту цвета. Допустимые значения от 0 до 256.
<B> | Числовое выражение, значение которого задает синюю компоненту цвета. Допустимые значения от 0 до 256.

Возвращаемое значение:

Текущее числовое значение RGB-цвета фона области (на момент до исполнения метода).

Описание:

Метод ЦветФона позволяет установить режим отображения цвета фона области.

Пример:

Таб = СоздатьОбъект("Таблица");

Таб.Открыть("tabl_l.mxl");

ВыбОбласть = Таб.Область("R8C4");

ВыбОбласть.Шрифт("Arial");

ВыбОбласть.РазмерШрифта(10);

ВыбОбласть.Подчеркнутый(1);

ВыбОбласть.ГоризонтальноеПоложение(3);

ВыбОбласть.Контроль(4);

ВыбОбласть.ЦветФона(34, 126, 211);

ЦветРамки

Получить/установить режим отображения цвета рамки области.

Синтаксис 1:

ЦветРамки(<Цвет>)

Синтаксис 2:

ЦветРамки(<R>, <G>, <В>)

Англоязычный синоним:

BorderColor

Параметры:

<Цвет> | Необязательный параметр. Числовое выражение, значение которого задает RGB цвет. Допустимые значения от 0 до 16777'215. Значение -1 (минус единица) задает цвет, заданный для всей области по умолчанию.
<R> | Числовое выражение, значение которого задает красную компоненту цвета. Допустимые значения от 0 до 256.
<G> | Числовое выражение, значение которого задает зеленую компоненту цвета. Допустимые значения от 0 до 256.
<B> | Числовое выражение, значение которого задает синюю компоненту цвета. Допустимые значения от 0 до 256.

Возвращаемое значение:

Текущее числовое значение RGB-цвета рамки области (на момент до исполнения метода).

Описание:

Метод ЦветРамки позволяет установить режим отображения цвета рамки области.

Пример:

Таб = СоздатьОбъект("Таблица");

Таб.Открыть("tabl_l.mxl");

ВыбОбласть = Таб.Область("R8C4");

ВыбОбласть.Шрифт("Arial");

ВыбОбласть.РазмерШрифта(10);

ВыбОбласть.Подчеркнутый(1);

ВыбОбласть.ГоризонтальноеПоложение(3);

ВыбОбласть.Контроль(4);

ВыбОбласть.ЦветРамки(34, 126, 211);

ЦветТекста

Получить/установить режим отображения цвета текста области.

Синтаксис 1:

ЦветТекста(<Цвет>}

Синтаксис 2:

ЦветТекста(<R>, <G>, <В>)

Англоязычный синоним:

TextColor

Параметры:

<Цвет> | Необязательный параметр. Числовое выражение, значение которого задает RGB цвет. Допустимые значения от 0 до 16777'215. Значение -1 (минус единица) задает цвет, заданный для всей области по умолчанию.
<R> | Числовое выражение, значение которого задает красную компоненту цвета. Допустимые значения от 0 до 256.
<G> | Числовое выражение, значение которого задает зеленую компоненту цвета. Допустимые значения от 0 до 256.
<B> | Числовое выражение, значение которого задает синюю компоненту цвета. Допустимые значения от 0 до 256.

Возвращаемое значение:

Текущее числовое значение RGB-цвета текста области (на момент до исполнения метода).

Описание:

Метод ЦветТекста позволяет установить режим отображения цвета текста области.

Пример:

Таб = СоздатьОбъект("Таблица");

Таб.Открыть("tabl_l.mxl");

ВыбОбласть = Таб.Область("R8C4");

ВыбОбласть.Шрифт("Arial");

ВыбОбласть.РазмерШрифта(10);

ВыбОбласть.Подчеркнутый(1);

ВыбОбласть.ГоризонтальноеПоложение(3);

ВыбОбласть.Контроль(4);

ВыбОбласть.ЦветТекста(34, 126, 211);

ВысотаСтроки

Получить/установить высоту строк, проходящих через область.

Синтаксис:

ВысотаСтроки(<Высота>)

Англоязычный синоним:

RowHeight

Параметры:

<Высота>    Необязательный параметр. Число: высота строк, проходящих через область в пунктах с точностью до 0,25. Если параметр опущен, то высота строк области не изменяется.

Возвращаемое значение:

Высота строк области в пунктах области (на момент до исполнения метода).

Описание:

Метод ВысотаСтроки устанавливает высоту строк, проходящих через область.

Пример:

Таб = СоздатьОбъект("Таблица");

Таб.Открыть("tabl_l.mxl");

ВыбОбласть = Таб.Область("R8C4");

ВыбОбласть.Шрифт("Arial");

ВыбОбласть.РазмерШрифта(10);

ВыбОбласть.Подчеркнутый(1);

ВыбОбласть.ГоризонтальноеПоложение(3);

ВыбОбласть.Контроль(4);

ВыбОбласть.ВысотаСтроки(3 );

ШиринаСтолбца

Получить/установить ширину столбцов, проходящих через область.

Синтаксис:

ШиринаСтолбца(<Ширина>)

Англоязычный синоним:

ColumnWidth

Параметры:

<Ширина>

Необязательный параметр. Число: ширина столбцов, проходящих через область в стандартных символах с точностью до 0, 125. Если параметр опущен, то ширина столбцов области не изменяется.

Возвращаемое значение:

Ширина столбцов области в стандартных символах (на момент до исполнения метода).

Описание:

Метод ШиринаСтолбца устанавливает ширину столбцов, проходящих через область.

Пример:

Таб = СоздатьОбъект("Таблица");

Таб.Открыть("tabl_l.mxl");

ВыбОбласть = Таб.Область("R8C4");

ВыбОбласть.Шрифт("Arial");

ВыбОбласть.РазмерШрифта(10);

ВыбОбласть.Подчеркнутый(1);

ВыбОбласть.ГоризонтальноеПоложение(3);

ВыбОбласть.Контроль(4);

ВыбОбласть.ШиринаСтолбца(13);

Атрибуты и методы таблицы в режиме ввода данных

При работе с таблицей в режиме ввода данных не могут использоваться методы и атрибуты, предназначенные для заполнения таблицы в обычном режиме, например, методы вывода секций, метод Показать и другие, не имеющие смысла для табличного документа в режиме ввода данных. Разумеется, могут использоваться методы управляющие параметрами печати табличного документа, а также собственно метод Напечатать.

В данном разделе приводятся специфические атрибуты и методы, используемые для работы с табличным документом в режиме ввода данных.

<ИмяОбласти>

Предоставляет доступ к именованной области таблицы в режиме ввода данных.

Синтаксис:

<ИмяОбласти>

Имя области таблицы в режиме ввода данных.

Описание:

В процессе конфигурирования для таблицы в режиме ввода данных можно задавать практически неограниченное число поименованных областей.

Атрибут <имяОбласти> позволяет обращаться к поименованной области таблицы. Для обращения к конкретной области следует указать ее имя, заданное для этой области в конфигураторе.

Пример:

Таблица.Заглавие.Текст = "Товарный отчет";

АктивнаяОбласть

Активизировать область таблицы.

Синтаксис:

АктивнаяОбласть(<Адрес>)

Англоязычный синоним:

ActiveArea

Параметры:

<Адрес>

Необязательный параметр. Строковое выражение, задающее имя области или адрес в формате «R1C1:R2C2».

Возвращаемое значение:

Строковое значение имени активной области или адрес в формате «R1C1:R2C2» до начала выполнения метода.

Описание:

Функция АктивнаяОбласть активизирует область таблицы.

Пример:

Таблица.АктивнаяОбласть("tabl_l");

Выгрузить

Выгружает значения и имена для всех предназначенных для ввода ячеек в объект типа «Список значений».

Синтаксис:

Выгрузить(<СписокЗначений>)

Англоязычный синоним:

Load

Параметры:

<СписокЗначений>

Идентификатор объекта типа «Список значений», куда выгружаются парами значения и имена для всех предназначенных для ввода ячеек.

Описание:

Метод Выгрузить выгружает значения и имена для всех предназначенных для ввода ячеек таблицы в объект типа «Список значений», причем имя ячейки становится представлением а данные из ячейки — значением в записи списка значений.

Пример:

Список = СоздатьОбъект("СписокЗначений");

Таблица.Выгрузить(Список);

Загрузить

Загружает значения и имена для всех предназначенных для ввода ячеек из объекта типа «Список значений».

Синтаксис:

Загрузить(<СписокЗначений>)

Англоязычный синоним:

Save

Параметры:

<СписокЗначений> Идентификатор объекта типа «Список значений», откуда загружаются парами значения и имена для всех предназначенных для ввода ячеек.

Описание:

Метод Загрузить загружает значения и имена для всех предназначенных для ввода ячеек таблицы из объекта типа «Список значений», причем представление списка значений становится именем ячейки, а значение записи становится значением ячейки.

Пример:

Процедура ОчиститьТаблицу()

   Список = СоздатьОбъект("СписокЗначений");

   Таблица.Выгрузить(Список);

   ИмяЯчейки = "";

   Для Н = 1 По Список.РазмерСписка() Цикл

      ЗначЯчейки = Список.ПолучитьЗначение(Н, ИмяЯчейки);

      Список.УстановитьЗначение(Н, 0, ИмяЯчейки, 1);

   КонецЦикла;

   Таблица.Загрузить(Список);

КонецПроцедуры;

Атрибуты и методы области таблицы в режиме ввода данных

При работе с областью таблицы в режиме ввода данных не может использоваться метод Расшифровка, а также метод Объединить.

В данном разделе приводятся специфические атрибуты и методы, используемые для работы с областью таблицы в режиме ввода данных.

Значение

Арибут, предоставляет доступ к значению, записанному в области.

Синтаксис:

Значение

Англоязычный синоним:

Value

Описание:

Атрибут Значение позволяет прочитать\установить значение, записанное в области (аналогично тому, как в конфигураторе интерактивно задают значение в свойствах ячейки талины «Свойства»- закладка «Данные»).

Пример:

ВыбОбласть = Таблица.Область("R1C1");

ВыбОбласть.Значение = '01.09.98';

Формат

Устанавливает формат для вывода всех выражений в ячейках области таблицы.

Синтаксис:

Формат(<СтрокаФормата>)

Англоязычный синоним:

Format

Параметры:

<СтрокаФормата>

Необязательный параметр. Строковое выражение, содержащее форматную строку (см. Формат).

Возвращаемое значение:

Строковое значение, содержащее текущую форматную строку по умолчанию для области таблицы (на момент до исполнения метода).

Описание:

Метод Формат устанавливает формат для вывода всех выражений выводимых в ячейках области таблицы.

Пример:

ВыбОбласть.Формат("415.2");

УстановитьТип

Установить тип для значения ячейки неопределенного вида.

Синтаксис:

УстановитьТип(<Выражение>)

Англоязычный синоним:

AssignType

Параметры:

<Выражение>

Выражение. Тип значения этого выражения будет присвоен значению ячейки.

Описание:

Метод УстановитьТип позволяет установить тип для значения ячейки, которому в конфигураторе назначен тип «Неопределенный».

Пример:

ВыбОбласть.УстановитьТип(Товар);

См. также: НазначитьТип, ТипЗначения, ТипЗначенияСтр

НазначитьТип

Назначить тип для значения ячейки неопределенного вида.

Синтаксис:

НазначитьТип(<ИмяТипа>, <Длина>, <Точность>)

Англоязычный синоним:

SetType

Параметры:

<ИмяТипа> | Строковое выражение — название типа данных, которое назначается значению ячейки. Например: "Строка", "Число", "Справочник.Товары", " Документ.РасходнаяНакладная" и т. п.
<Длина> | Необязательный параметр. Числовое выражение — длина поля представления данных. Имеет смысл только при задании числового или строкового типа.
<Точность> | Необязательный параметр. Числовое выражение — число знаков числа после десятичной точки. Имеет смысл только при задании числового типа.

Описание:

Метод НазначитьТип позволяет назначить тип для значения ячейки, которому в конфигураторе назначен тип «Неопределенный».

Пример:

ВыбОбласть.НазначитьТип("Число", 15, 2);

См. также: УстановитьТип, ТипЗначения, ТипЗначенияСтр

Доступность

Установка режима редактирования.

Синтаксис:

Доступность(<Режим>)

Англоязычный синоним:

Enable

Параметры:

<Режим>

Необязательный параметр. Числовое выражение: 1 — разрешено редактирование элемента формы; 0 — запрещено редактирование.

Возвращаемое значение:

Текущее числовое значение режима редактирования области таблицы (на момент до исполнения метода).

Описание:

Метод Доступность позволяет установить режим редактирования выбранной области таблицы.

Пример:

ВыбОбласть.Доступность(0);

Редактирование

Определяет возможность редактирования значения области таблицы.

Синтаксис:

Редактирование(<Флаг>)

Англоязычный синоним:

EnableEdit

Параметры:

<Флаг>

Число: 1 — значения ячеек области таблицы редактируются как обычно; 0 — значения не редактируется но могут выбираться кнопкой выбора. Отличие от метода Доступность в том, что Доступность отключает и кнопку выбора.

Описание:

Метод Редактирование определяет возможность редактирования значения непосредственно в ячейках области таблицы для полей ввода типа «Число», «Строка», «Дата», «Счет».

Пример:

ВыбОбласть.Редактирование(1);

Системные предопределенные процедуры работы с таблицами

ОбработкаЯчейкиТаблицы

Предопределенная процедура обработки ячейки таблицы.

Описание:

ОбработкаЯчейкиТаблицы(<Значение>, <ФлагСтандартнойОбработки> , <КонтекстТаблицы>,

                       <Адрес>)

Англоязычный синоним:

SheetCellProcessing

Параметры:

<Значение> | Здесь в процедуру передается вычисленное значение ячейки (задается в конфигураторе: «Свойства» ячейки, «Текст», «Значение»).
<ФлагСтандартнойОбработки> | Флаг, установка которого в теле процедуры в 1 приведет к выполнению стандартной обработки значения ячейки (открытию документа, элемента справочника и т. п.).
<КонтекстТаблицы> | Необязательный параметр. Имя переменной, куда система передаст контекст всей таблицы (см. Передача контекста в качестве параметра). С помощью значения этого контекста можно произвольно манипулировать данной таблицей пока она открыта, например, вывести туда дополнительные секции или очистить и заполнить всю таблицу заново. Пока данный объект «Таблица» существует, тип значения данного параметра равен 100 (см. ТипЗначения), если закрыта — 0.
<Адрес> | Необязательный параметр. Имя переменной, куда система передаст адрес ячейки/объекта в формате «R1C1:R2C2».

Описание:

Вызов процедуры ОбработкаЯчейкиТаблицы на исполнение производится в системе 1С:Предприятие по двойному щелчку мыши или по нажатию клавиши «Enter» в табличном документе на выбранной ячейке

Замечание ОбработкаЯчейкиТаблицы — предопределенная процедура. Она не является встроенной процедурой языка. Для нее определено только название и синтаксис. Тело процедуры должно быть написано пользователем, осуществляющим конфигурирование, в программном модуле формы, из которой сформирован табличный документ или в глобальном модуле.

Замечание Объект типа «СписокЗначений» может записываться в поле «значение» ячейки таблицы и использоваться затем процедурой ОбработкаЯчейкиТаблицы.

Важно! Если процедура описана в модуле формы, то вызывается она, иначе система запускает одноименную процедуру из глобального модуля.

Внимание! Данная предопределенная процедура не вызывается при выборе ячейки таблицы в режиме ввода данных. Для этого случая вызывается предопределенная процедура ПриВыбореЯчейкиТаблицы.

Пример:

Процедура ОбработкаЯчейкиТаблицы(ЗначениеЯчейки, Флаг)

   // Тело процедуры

   //. . .

КонецПроцедуры

ПриВыбореЯчейкиТаблицы

Предопределенная процедура обработки ячейки таблицы в режиме ввода данных.

Описание:

ПриВыбореЯчейкиТаблицы(<ИмяИлиАдрес>, <Значение>)

Англоязычный синоним:

OnSelectSheetCell

Параметры:

<ИмяИлиАдрес> | Здесь в процедуру системой передается строковое значение имени области таблицы, если выбранная ячейка помечена в таблице как отдельная область, или адрес ячейки в формате «R1C1:R2C2».
<Значение> | Здесь в процедуру системой передается значение даной ячейки, а если диаграмма — значение выбранного элемента.

Описание:

Вызов процедуры ПриВыбореЯчейкиТаблицы на исполнение производится в системе 1С:Предприятие по двойному щелчку мыши или по нажатию клавиши «Enter» на выбранной ячейке в таблице

Внимание! Данная предопределенная процедура вызывается в модуле формы при выборе ячейки только для таблиц в режиме ввода данных.

Замечание ПриВыбореЯчейкиТаблицы — предопределенная процедура. Она не является встроенной процедурой языка. Для нее определено только название и синтаксис. Тело процедуры должно быть написано пользователем, осуществляющим конфигурирование, в программном модуле формы, в которой используется таблица в режиме ввода данных.

Пример:

Процедура ПриВыбореЯчейкиТаблицы(ИмяЯчейки, Знач)

   // Тело процедуры

   // ...

КонецПроцедуры


Part32

Глава 32
Работа с Текстом

Для работы с текстами в системе используется специальный агрегатный тип данных — «Текст». Механизм работы с текстами предназначен для формирования отчетов в текстовом виде, а также для обмена информацией с другими программами посредством текстовых файлов. Средства языка имеют возможность не только вывода строк в текстовые файлы, но и считывания имеющихся файлов с последующим разбором его по строкам.

Контекст работы с текстом

Во всех программных модулях вызов методов текста может выполняться только при помощи переменной со ссылкой на объект типа «Текст». Объект создается при помощи функции СоздатьОбъект, ссылка на который присваивается переменной. Чтобы вызвать метод объекта, имя метода (с указанием необходимых параметров) пишется через точку после идентификатора переменной.

При создании переменной типа «Текст» функции СоздатьОбъект в качестве параметра передается ключевое слово "Текст".

Англоязычный синоним ключевого слова Текст — Text.

Пример:

МойОтчет = СоздатьОбъект("Текст");

ТекстДок = СоздатьОбъект("Текст");

ТекстДок.Открыть("List.txt");

Методы текста

КоличествоСтрок

Возвратить количество строк текста.

Синтаксис:

КоличествоСтрок()

Англоязычный синоним:

LinesCnt

Возвращаемое значение:

Количество строк в тексте.

Описание:

Метод КоличествоСтрок возвращает количество строк в тексте.

Пример:

Процедура ЗагрузкаПродукцииПоКаталогу()

   Прод = СоздатьОбъект("Справочник.ГотоваяПродукция");

   Если ВыбГруппа.Выбран() = 0 Тогда

      Предупреждение("Ошибка! Не выбрана группа!");

      Возврат;

   ИначеЕсли ВыбГруппа.ЭтоГруппа() = 0 Тогда

      Предупреждение("Не выбрана группа! Загрузка в корень!");

   Иначе

      Тов.ИспользоватьРодителя(ВыбГруппа);

   КонецЕсли;

   Текст = СоздатьОбъект("Текст");

   Текст.Открыть(ИмяФайла);

   Если Текст.КоличествоСтрок() = 0 Тогда

      Предупреждение("Текст пустой!");

      Возврат;

   КонецЕсли;

   Для Ном = 1 По Текст.КоличествоСтрок() Цикл

      Стр = Текст.ПолучитьСтроку(Ном);

      Поле = 0;

      Пока СтрДлина(Стр) > 0 Цикл

         Поле = Поле + 1;

         Инд = Найти(Стр, "-");

         Если Инд > 0 Тогда

            Стр1 = Сред(Стр, 2, Инд - 3);

            Стр = Сред(Стр, Инд + 1);

         Иначе

            Стр1 = Сред(Стр, 2, (СтрДлина(Стр) - 2));

            Стр = "";

         КонецЕсли;

         Если Поле = 1 Тогда

            Код = Стр1;

         ИначеЕсли Поле = 2 Тогда

            Имя = Стр1;

         КонецЕсли;

      КонецЦикла;

      Прод.НоваяГруппа();

      Сообщить(Формат(Ном, "ЧЗ") + "-загрузка: " + Формат(Код, "45") + ":" + Имя);

      Прод.Наименование = Имя;

      Прод.Код = Число(Код);

      Прод.Записать();

      Сообщить(" — Загружен!");

   КонецЦикла;

КонецПроцедуры

ПолучитьСтроку

Полнить строку текста по номеру.

Синтаксис:

ПолучитьСтроку(<НомерСтроки>)

Англоязычный синоним:

GetLine

Параметры:

<НомерСтроки>

Числовое выражение — номер строки.

Возвращаемое значение:

Строковое значение — требуемая строка текста.

Описание:

Метод ПолучитьСтроку возвращает значение строки с номером <НомерСтроки>.

Пример:

Процедура Тест()

   Текст = СоздатьОбъект("Текст");

   Текст.Открыть(ИмяФайла);

   Если Текст.КоличествоСтрок() = 0 Тогда

      Предупреждение("Текст пустой!");

      Возврат;

   КонецЕсли;

   Для Ном = 1 по Текст.КоличествоСтрок() Цикл

      Стр = Текст.ПолучитьСтроку(Ном);

      Сообщить(Строка(Ном) + Стр);

   КонецЦикла;

КонецПроцедуры

Открыть

Открыть текстовый файл.

Синтаксис:

Открыть(<ИмяФайла>)

Англоязычный синоним:

Open

Параметры:

<ИмяФайла>

Строковое выражение — имя файла.

Описание:

Метод Открыть открывает файл с именем <ИмяФайла>.

Пример:

ТекстДок = СоздатьОбъект("Текст");

ТекстДок.Открыть("catalog.txt");

Шаблон

Установить флаг добавления строк по шаблону.

Синтаксис:

Шаблон(<Флаг>)

Англоязычный синоним:

Template

Параметры:

<Флаг>

Необязательный параметр. Числовое выражение: 1 — установить флаг добавления строк по шаблону, 0 — отменить.

Возвращаемое значение:

Текущее числовое значение флага добавления строк по шаблону (на момент до исполнения метода).

Описание:

Метод Шаблон устанавливает флаг при котором все добавления строк в текст выполняются с заменой полей ограниченных квадратными скобками на значения содержащихся в них выражений (см. гл. «Системные процедуры и функции», функция Шаблон).

Пример:

ТекстДок = СоздатьОбъект("Текст");

ТекстДок.Открыть("catalog.txt");

ТекстДок.Шаблон(1);

ТекстДок.ЗаменитьСтроку(52, "[Услуга.Наименование],

                        арт.[Услуга.Код]......[Услуга.Цена]");

ТекстДок.Шаблон(0);

ТекстДок.ВставитьСтроку(53, "Вывоз мусора, 6321, 58.000");

ТекстДок.ТолькоПросмотр(1);

См. также: «Системные процедуры и функции», функция Шаблон

ФиксШаблон

Установить флаг добавления строк по фиксированному шаблону.

Синтаксис:

ФиксШаблон(<Флаг>)

Англоязычный синоним:

FixTemplate

Параметры:

<Флаг>

Числовое выражение: 1 — установить флаг добавления строк по фиксированному шаблону, 0 — снять флаг.

Возвращаемое значение:

Текущее числовое значение флага добавления строк по фиксированному шаблону (на момент до исполнения метода).

Описание:

Метод ФиксШаблон устанавливает флаг при котором все добавления строк в текст выполняются с заменой полей ограниченных квадратными скобками на значения содержащихся в них выражений (см. гл. «Системные процедуры и функции», функция ФиксШаблон).

В отличие от метода Шаблон, ограниченные квадратными скобками поля замещаются значениями выражений с сохранением своей длины в символах, то есть обрезаются, если поле короче результата вычисления выражения и дополняются пробелами если длиннее. Если результат числовой, то в границах поля строка прижимается к правой границе.

Пример:

ТекстДок = СоздатьОбъект("Текст");

ТекстДок.Открыть("catalog.txt");

ТекстДок.ФиксШаблон(1);

ТекстДок.ЗаменитьСтроку(52, "[Услуга.Наименование],

                             арт.[Услуга.Код]......[Услуга.Цена]");

ТекстДок.Шаблон(0);

ТекстДок.ВставитьСтроку(53, "Вывоз мусора, 6321, 58.000");

ТекстДок.ТолькоПросмотр(1);

См. также: «Системные процедуры и функции», функция ФиксШаблон

ВставитьСтроку

Вставить строку с указанным номером.

Синтаксис:

ВставитьСтроку(<НомерСтроки>, <Строка>)

Англоязычный синоним:

InsertLine

Параметры:

<НомерСтроки> | Числовое выражение — номер вставляемой строки.
<Строка> | Строковое выражение.

Описание:

Метод ВставитьСтроку вставляет в текст строку <Строка> с номером <НомерСтроки>.

Пример:

ТекстДок = СоздатьОбъект("Текст");

ТекстДок.Открыть("catalog.txt");

ТекстДок.ЗаменитьСтроку(52, "Установка оборудоввания 3456......" + Стоимость);

ТекстДок.ВставитьСтроку(53, "Замена оборудования 5691... ");

ТекстДок.ТолькоПросмотр(1);

ДобавитьСтроку

Добавить строку в конец текста.

Синтаксис:

ДобавитьСтроку(<Строка>)

Англоязычный синоним:

AddLine

Параметры:

<Строка>

Строковое выражение.

Описание:

Метод ДобавитьСтроку добавляет в конец текста строку <Строка>.

Пример:

ТекстДок = СоздатьОбъект("Текст");

ТекстДок.Открыть("catalog.txt");

ТекстДок.ДобавитьСтроку("Работы ..., 3056 ..75 000 руб.");

ТекстДок.ТолькоПросмотр(1).

ЗаменитьСтроку

Заменить строку с указанным номером.

Синтаксис:

ЗаменитьСтроку(<НомерСтроки>, <Строка>)

Англоязычный синоним:

ReplaceLine

Параметры:

<НомерСтроки> | Числовое выражение — номер замещаемой строки.
<Строка> | Строковое выражение.

Описание:

Метод ЗаменитьСтроку замещает строку текста с номером <НомерСтроки> на строку <Строка>.

Пример:

ТекстДок = СоздатьОбъект("Текст");

ТекстДок.Открыть("catalog.txt");

ТекстДок.ЗаменитьСтроку(52, "Работы ..., 3056 ..75 000 руб.");

ТекстДок.ТолькоПросмотр(1).

УдалитьСтроку

Удалить строку с указанным номером.

Синтаксис:

УдалитьСтроку(<НомерСтроки>)

Англоязычный синоним:

DeleteLine

Параметры:

<НомерСтроки>

Числовое выражение — номер удаляемой строки.

Описание:

Метод УдалитьСтроку удаляет из текста строку с номером <НомерСтроки>.

Пример:

ТекстДок = СоздатьОбъект("Текст");

ТекстДок.Открыть("catalog.txt");

ТекстДок.УдалитьСтроку(5 3);

ТолькоПросмотр

Установить режима редактирования текста.

Синтаксис:

ТолькоПросмотр(<Режим>)

Англоязычный синоним:

Readonly

Параметры:

<Режим>

Необязательный параметр. Числовое выражение: 1 — запрещено редактирование текста, 0 — разрешено редактирование текста.

Возвращаемое значение:

Текущее числовое значение режима редактирования текста (на момент до исполнения метода).

Описание:

Метод ТолькоПросмотр позволяет установить режим редактирования текста в окне редактирования.

Пример:

ТекстДок = СоздатьОбъект("Текст");

ТекстДок.Открыть("catalog.txt");

ТекстДок.ТолькоПросмотр(1);

ТекстДок.Показать("Редактирование Прайс-листа", "catalog.txt");

Показать

Открыть окно редактирования текста.

Синтаксис:

Показать(<3аголовок>, <ИмяФайла>)

Англоязычный синоним:

Show

Параметры:

<Заголовок> | Заголовок окна редактирования.
<ИмяФайла> | Строковое выражение с именем файла.

Описание:

Метод Показать открывает окно с текстом для редактирования и просмотра. Если параметр <ИмяФайла> имеет непустое значение, то при закрытии окна система будет предлагать сохранить данные в указанный файл. Если файла с именем <ИмяФайла> не существует, то будет создан новый файл с таким именем для сохранения текста. Если параметр <ИмяФайла> опущен или имеет пустое значение, то при закрытии окна система не будет предлагать сохранить данные в файл. Это имеет смысл для текстовых документов, которые формируются только для просмотра или печати, и их не обязательно записывать в файл. Разумеется, после открытия окна пользователь в любом случае может записать такой текст в файл, используя команды главного меню «Файл».

Пример:

ТекстДок = СоздатьОбъект("Текст");

ТекстДок.Открыть("catalog.txt");

ТекстДок.Показать("Редактирование Прайс-листа", "catalog.txt");

Очистить

Очищает содержимое текстового документа.

Синтаксис:

Очистить()

Англоязычный синоним:

Clear

Описание:

Метод Очистить очищает содержимое текстового документа. Его использование позволяет заново заполнить содержимое текстового документа.

Пример:

ТекстДок = СоздатьОбъект("Текст");

ТекстДок.Открыть("catalog.txt");

ТекстДок.Очистиь();

КодоваяСтраница

Установить/определить режим кодировки.

Синтаксис:

КодоваяСтраница(<Режим>)

Англоязычный синоним:

SetCodePage

Параметры:

<Режим>

Необязательный параметр. Числовое выражение: 0 — Windows-кодировка, 1 — DOS-кодировка. Если параметр не задан, то режим кодировки не меняется (используется для определения текущего режима кодировки без его смены).

Возвращаемое значение:

Текущее числовое значение режима кодировки (на момент до исполнения метода).

Описание:

Метод КодоваяСтраница позволяет установить режим кодировки для чтения и записи строковых значений в файл.

Пример:

ТекстДок = СоздатьОбъект("Текст");

ТекстДок.КодоваяСтраница(0);

ТекстДок.Открыть("catalog.txt");

ТекстДок.Показать("Редактирование Прайс-листа", "catalog.txt");

Записать

Записать текст в файл с указанным именем.

Синтаксис:

Записать(<ИмяФайла>)

Англоязычный синоним:

Write

Параметры:

<ИмяФайла>

Строковое выражение — имя файла.

Описание:

Метод Записать записывает текст в файл с именем <ИмяФайла>.

Пример:

ТекстДок = СоздатьОбъект("Текст");

ТекстДок.Открыть("catalog.txt");

ТекстДок.Записать("price.txt");


Part33

Глава 33
Работа с Запросами

Для формирования и выполнения запросов к документам, справочникам, регистрам, журналам расчетов, планам счетов, бухгалтерским операциям и проводкам в системе используется специальный агрегатный тип данных — «Запрос». Возможности работы со справочниками, документами и журналами расчетов предоставляют достаточно мощные средства получения различной информации об этих объектах. Однако, существует также необходимость в получении информации, сгруппированной определенным образом, которую невозможно или очень сложно получить непосредственно работая с документами, справочниками, регистрами или журналами расчетов. Для получения такой информации и существует механизм запросов.

Одним из классических примеров его применения может служить сводка по состоянию регистра на конкретный момент времени. В более сложных запросах возможно получение сгруппированной информации по справочникам, журналам расчетов и документам.

Кроме того, механизм запросов позволяет легко получать информацию в различных временных разрезах.

Контекст работы с запросами

Во всех программных модулях доступ к атрибутам и методам запросов может выполняться только через переменную, созданную функцией СоздатьОбъект. Чтобы вызвать атрибут или метод объекта, имя этого атрибута, метода (с указанием необходимых параметров) пишется через точку после имени переменной.

При создании объекта типа «Запрос» в качестве параметра функции СоздатьОбъект используется ключевое слово Запрос .

Англоязычный синоним ключевого слова Запрос — Query.

Пример:

Запрос = СоздатьОбъект("Запрос");

Структура запросов и методика их использования

Использование запросов позволяет легко строить простые отчеты и облегчает построение сложных отчетов. При построении сложных отчетов использование запросов может существенно снизить трафик сети, т.к. однажды выбранная лри исполнении запроса информация, хранящаяся во временном наборе данных на локальном компьютере, может многократно использоваться.

Запросы можно использовать не только для построения отчетов, но и для реализации других процедур конфигурации, требующих получения из БД некой сводной информации. Например, реализация алгоритма списания стоимости товара по методам FIFO или LIFO.

Работа с запросами предполагает следующий порядок:

· при помощи функции СоздатьОбъект создается объект типа «Запрос» и ссылка на него присваивается какой-либо переменной. Далее обращение к запросу производится посредством этой ссылки.

· после создания переменной типа «Запрос» следует обращение к методу Выполнить, которому в качестве параметра передается текст запроса, написанный на специальном языке запросов (см. главу «Язык запросов»). Метод Выполнить анализирует текст запроса, выполняет в соответствии с ним выборку данных и формирует временный выходной набор данных (выборку).

· после этого организуется циклическая обработка сформированного временного набора данных (выборки) с целью получения требуемого отчета.

В данном разделе мы рассмотрим структуру создаваемого запросом временного набора данных и работу методов запросов по выборке информации из этого временного набора.

Дальнейшее описание проведем на простом примере: необходимо получить отчет о количестве товаров, хранящихся на складах. Текст процедуры, выполняющей эту операцию приведен ниже.

Пример:

НашЗапрос = СоздатьОбъект("Запрос");

ТекстЗапроса =

"//{{ЗАПРОС(Сформировать)

|СКЛАД = Регистр.ТоварныйЗапас.Склад;

|ТОВАР = Регистр.ТоварныйЗапас.Товар;

|КОЛИЧЕСТВО = Регистр.ТоварныйЗапас.Количество;

|Группировка ТОВАР Упорядочить По ТОВАР.Код;

|Группировка СКЛАД Упорядочить По СКЛАД.Код;

|Функция КОЛ = КонОст(КОЛИЧЕСТВО);

|"//}}ЗАПРОС

;

// Если ошибка в запросе, то выход из процедуры

Если НашЗапрос.Выполнить(ТекстЗапроса) = 0 Тогда

   Возврат;

КонецЕсли;

Структура временного набора данных, созданная запросом "НашЗапрос" после его выполнения, представлена на следующем рисунке:

 | Товар | Склад | Кол.
Итог общий | X | X | 62
Итог по товару Стол | Стол | X | 35
Строка по товару Стол на складе Первый | Стол | Первый | 10
Строка по товару Стол на складе Второй | Стол | Второй | 20
Строка по товару Стол на складе Третий | Стол | Третий | 5
Итог по товару Стул | Стул | X | 9
Строка по товару Стул на складе Второй | Стул | Второй | 7
Строка по товару Стул на складе Третий | Стул | Третий | 2
Итог по товару Шкаф | Шкаф | X | 18
Строка по товару Шкаф на складе Первый | Шкаф | Первый | 8
Строка по товару Шкаф на складе Третий | Шкаф | Третий | 10

После выполнения запроса в программе можно использовать полученный временный набор данных. Изначально объект "НашЗапрос" спозиционирован на первой записи временного набора данных, где содержится общий итог по запросу. Поэтому общие итоги по запросу можно использовать сразу же после выполнения запроса.

Далее, допустим, в цикле мы проходим только по самой внешней группировке запроса: "Товар". В теле этого цикла объект "НашЗапрос" позиционируется во временном наборе данных на записи, содержащие итоги по каждому конкретному товару, поэтому в теле этого цикла мы можем использовать итоги по товарам.

После завершения цикла по самой внешней группировке, объект "НашЗапрос" снова позиционируется на первой записи временного набора данных, где содержится общий итог по запросу. Поэтому, общие итоги по запросу можно использовать в двух местах: до и после цикла по самой внешней группировке запроса.

Продолжение примера:

//Итог общий

Пока НашЗапрос.Группировка("Товар") = 1 Цикл

   //Итог по товару

КонецЦикла;

//Итог общий

Поскольку после первого просмотра временного набора данных (как мы это сделали выше) объект "НашЗапрос" снова спозиционирован на первой записи, то можно запустить просмотр еще раз.

Допустим, теперь нам надо просмотреть в цикле всю информацию по внешней ("Товар") и вложенной группировке запроса ("Склад"). В теле цикла по внешней группировке ("Товар") объект "НашЗапрос" позиционируется во временном наборе данных на записи, содержащие итоги по каждому конкретному товару, поэтому в теле этого цикла мы можем использовать итоги по товарам.

В теле цикла по вложенной группировке ("Склад") объект "НашЗапрос" позиционируется во временном наборе данных на записи, содержащие строки по каждому конкретному товару на конкретном складе, поэтому в теле этого цикла мы можем использовать данные о количестве товара на складе.

После завершения цикла по вложенной группировке ("Склад"), объект "НашЗапрос" снова позиционируется на записи временного набора данных, где содержится общий итог по конкретному товару. Поэтому, общие итоги по конкретному товару можно использовать в двух местах: до и после цикла по вложенной группировке ("Склад").

После завершения цикла по самой внешней группировке, объект "НашЗапрос" снова позиционируется на первой записи временного набора данных, где содержится общий итог по запросу. Поэтому, общие итоги по запросу можно использовать в двух местах: до и после цикла по самой внешней группировке запроса.

Продолжение примера:

//Итог общий

Пока НашЗапрос.Группировка("Товар") = 1 Цикл

   //Итог по товару

   Пока НашЗапрос.Группировка("Склад") = 1 Цикл

      //Строка по товару — складу

   КонецЦикла;

   //Итог по товару

КонецЦикла;

//Итог общий

После выхода из процедуры, где была определена переменная, содержащая объект типа «Запрос» (в нашем примере "НашЗапрос") или после уничтожения объекта типа «Запрос» (Наш3апрос = 0;), временный набор данных на локальной машине пользователя уничтожается.

Из приведенного выше примера можно сделать несколько важных заключений:

· при просмотре временного набора данных, вложенность циклов просмотра должна точно повторять порядок группировок запроса (нельзя входить во вложенную группировку, не войдя в предыдущую);

· допускается просматривать временный набор данных, опуская с некоторого уровня все вложенные (внутренние) группировки;

· не следует прерывать последовательность просмотра временного набора данных (например, оператором Прервать;), если вы собираетесь использовать временный набор дальше или еще раз, т. к. в таком случае теряется точка позиционирования во временном наборе и продолжать просмотр невозможно;

Пример:

Пока Запрос.Группировка("Товар") = 1 Цикл

   Если (Запрос.Товар = НужныйТовар) Тогда

      Пока Запрос.Группировка("Отдел") = 1 Цикл

         Если (Запрос.Отдел = НужныйОтдел) Тогда

            Пока Запрос.Группировка("Сотрудник") = 1 Цикл

               Если (Запрос.Сотрудник = НужныйСотрудник) Тогда

                  Пока Запрос.Группировка("Док") = 1 Цикл

                     Док = Запрос.Док;

                     Если Запрос.ПрихКол <> 0 Тогда

                        Таб.ВывестиСекцию("Приход");

                     ИначеЕсли Запрос.РасхКол <> 0 Тогда

                        Приращение = Запрос.РасхКол;

                        Таб.ВывестиСекцию("Расход");

                     КонецЕсли;

                  КонецЦикла;

               КонецЕсли;

            КонецЦикла;

         КонецЕсли;

      КонецЦикла;

   КонецЕсли;

КонецЦикла;

Атрибуты запросов

Атрибутами запроса являются объявленные в описании запроса внутренние переменные (см. главу «Язык запросов»), имена группировок и функций запроса. Все атрибуты запросов — только для чтения.

Чтобы обратиться к атрибуту запроса, имя этого атрибута пишется через точку после имени ссылки на запрос. Значения атрибутов запроса определяются текущим положением в полученной выборке.

Методы запросов

Выполнить

Выполнить запрос.

Синтаксис:

Выполнить(<ТекстЗапроса>)

Англоязычный синоним:

Execute

Параметры:

<ТекстЗапроса>

Строковое выражение, содержащее текст запроса на языке запросов (см. Главу «Язык запросов»).

Возвращаемое значение:

Число: 1 — если запрос выполнен успешно, 0 — если зафиксирована ошибка при выполнении запроса (синтаксическая или времени выполнения).

Описание:

Метод Выполнить анализирует описание запроса, содержащееся в тексте запроса <ТекстЗапроса>, выполняет выборку данных, формирует временный выходной набор данных (выборку), вычисляет значения функций запроса (см. главу «Язык запросов»).

Язык запросов предназначен для описания запросов к базе данных. Написанный на языке запросов текст описания передается методу Выполнить в качестве параметра. Метод Выполнить непосредственно выполняет запрос, о результате его выполнения формируется временный выходной набор данных, который в дальнейшем используется для заполнения формы отчета.

Пример:

Процедура Сформировать()

   // сформируем данные на начало месяца

   ЖР = СоздатьОбъект("ЖурналРасчетов.Зарплата");

   _Дата = ЖР.НачалоТекущегоПериода();

   // Создание объектов типа "Запрос"

   Запрос = СоздатьОбъект("Запрос");

   ЗапросКат = СоздатьОбъект("Запрос");

   флаг1 = Запрос.Выполнить(

   "//({ЗАПРОС(Двойной)

   |Период с _Дата по _Дата;

   |Оклад = Справочник.Сотрудники.Оклад;

   |Пдр = Справочник.Сотрудники.МестоРаботы.Владелец;

   |Ктг = Справочник.Сотрудники.Категория;

   |Условие((Ктг.Выбран() = 1) И (Пдр.Выбран() = 1));

   |Группировка Пдр без групп;

   |Группировка Ктг без групп;

   |Функция Всего = Сумма(Оклад);

   |"//}} ЗАПРОС

   );

   Флаг2 = ЗапросКат.Выполнить(

   "//{{ЗАПРОС(Одинарный)

   |Период с _Дата по _Дата;

   |Оклад = Справочник.Сотрудники.Оклад;

   |Ктг = Справочник.Сотрудники.Категория;

   |Условие(Ктг.Выбран() = 1);

   |Группировка Ктг без групп;

   |Функция Всего = Сумма(Оклад);

   |"//}}ЗАПРОС

   );

   // Если ошибка в запросе, то выход из процедуры

   Если ((Флаг1 = 0) ИЛИ (Флаг2 = 0)) Тогда

      Сообщить("Ошибка в запросе!");

      Возврат;

   КонецЕсли;

   // Подготовка к заполнению выходных форм данными запроса

   Таб = СоздатьОбъект("Таблица");

   // Выводим заглавие таблицы

   Таб.ВывестиСекцию("Документ<|ДокументВерт<");

   Пока ЗапросКат.Группировка("Ктг") = 1 Цикл

      Таб.ПрисоединитьСекцию("Документ<|Осн2");

   КонецЦикла;

   Таб.ПрисоединитьСекцию("Документ<|ДокументВерт>");

   // Выводим колонтитул таблицы

   Таб.ВывестиСекцию("КолонТитул|ДокументВерт<");

   Пока ЗапросКат.Группировка("Ктг") = 1 Цикл

      Таб.ПрисоединитьСекцию("КолонТитул|Осн2");

   КонецЦикла;

   Таб.ПрисоединитьСекцию("КолонТитул|ДокументВерт>");

   Продолжать = 1;

   Пока Запрос.Группировка("Пдр") = 1 Цикл

      // Заполнение полей

      Пдр Таб.ВывестиСекцию("Осн1|ДокументВерт<");

      Далее = 1;

      Пока Продолжать = 1 Цикл

         // Заполнение полей Ктг

         СлКат = ЗапросКат.Группировка("Ктг");

         Если Далее = 1 Тогда

            ОК = Запрос.Группировка("Ктг");

         КонецЕсли;

         Если СлКат = 0 Тогда

            Прервать;

         КонецЕсли;

         Если ЗапросКат.Ктг = Запрос.Ктг Тогда

            Таб.ПрисоединитьСекцию("Осн1|Осн2");

            Далее = 1;

         Иначе

            Таб.ПрисоединитьСекцию("Осн1|Пусто");

            Далее = 0;

         КонецЕсли;

      КонецЦикла;

      Таб.ПрисоединитьСекцию("Осн1|ДокументВерт>");

   КонецЦикла;

   // Заполнение полей "Итого"

   Таб.ВывестиСекцию("Документ>|ДокументВерт<");

   Пока ЗапросКат.Группировка("Ктг") = 1 Цикл

      Таб.ПрисоединитьСекцию("Документ>|Осн2");

   КонецЦикла;

   Таб.ПрисоединитьСекцию("Документ>|ДокументВерт>");

   // Вывод заполненной формы Таб.Опции(0, 0, 0, 0);

   Таб.ТолькоПросмотр(1);

   Таб.Показать("Результат", );

КонецПроцедуры

ИспользоватьГрафуОтбора

Установить режим использования графы отбора в запросе.

Синтаксис:

ИспользоватьГрафуОтбора(<ГрафаОтбора>)

Англоязычный синоним:

UseSelectionColumn

Параметры:

<ГрафаОтбора>

Строковое выражение — идентификатор графы отбора, как он задан в конфигураторе. Данный параметр устанавливает режим использования определенной графы отбора.

"*" — автоматический выбор графы отбора.

Пустая строка — не использовать графу отбора.

Возвращаемое значение:

Строковое значение: идентификатор использованной реально графы отбора, если метод вызывается после выполнения запроса.

Описание:

Метод устанавливает режим использования графы отбора в запросе. Если метод не используется — по умолчанию устанавливается автоматический выбор графы отбора.

Пример:

Запрос = СоздатьОбъект("Запрос");

ТекстЗапроса =

"//{{ЗАПРОС(ОбработкаДок)

|Период с '01.10.96' по '05.10.96';

|ОбрабатыватьДокументы Все;

|Тов = Документ.РасхНакл.Товар;

|Клиент = Документ.РасхНакл.Клиент;

|Группировка Клиент;

|Группировка Тов;

|Группировка Документ;

|"//)}ЗАПРОС

;

// ЕСЛИ ошибка в запросе, то выход из процедуры

Запрос.ИспользоватьГрафуОтбора("Клиент");

Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда

   Возврат;

КонецЕсли;

Группировка

Получить следующее значение выборки запроса на заданном уровне группировки.

Синтаксис:

Группировка(<Группировка>, <Направление>)

Англоязычный синоним:

Group

Параметры:

<Группировка> | Выражение, содержащее порядковый номер или имя группировки.
<Направление> | Необязательный параметр. Числовое выражение: 1 — выборка значений группировки по возрастанию; -1 (минус единица) — выборка значений группировки по убыванию. Значение по умолчанию: 1.

Возвращаемое значение:

Число: 1 — если получено следующее значение выборки запроса, 0 — если нет.

Описание:

Метод Группировка служит для организации цикла получения данных из выборки, сформированной в результате работы метода Выполнить. Метод Группировка позиционирует в выборке очередную строку в порядке, определенном параметром <Группировка>. Нельзя использовать метод Группировка, задавая в качестве параметра младшие группировки, не использовав предварительно этот метод для позиционирования по старшим группировкам. Старшинство группировок определяется порядком их следования в тексте запроса.

Замечание: Обход группировок по многоуровневым справочникам в порядке убывания не выполняется.

Пример:

Процедура Сформировать()

   Перем Запрос, ТекстЗапроса;

   Если (Число(ДатаНач) = 0) ИЛИ (Число(ДатаКон) = 0) Тогда

      Предупреждение("Не задан период!");

      Возврат;

   КонецЕсли;

   //Создание объекта типа "Запрос" Запрос = СоздатьОбъект("Запрос");

   ТекстЗапроса =

   "//{{ЗАПРОС(Сформировать)

   |с ДатаНач по ДатаКон;

   |Рез = ЖурналРасчетов.Зарплата.Результат;

   |Сотр = ЖурналРасчетов.Зарплата.Объект;

   |Группировка Сотр без групп;

   |Группировка ПериодЖурнала;

   |Функция Сум = Сумма(Рез);

   |"//}}ЗАПРОС

   ;

   Если Сотрудник.Выбран() = 1 Тогда

      ТекстЗапроса = ТекстЗапроса + "Условие(Сотр = Сотрудник);";

   КонецЕсли;

   // Если ошибка в запросе, то выход из процедуры

   Если Запрос.Выполнить(ТекстЗапр) = 0 Тогда

      Возврат;

   КонецЕсли;

   // Подготовка к заполнению выходных форм данными запроса

   Таб = СоздатьОбъект("Таблица");

   // сначала используем группировку по сотрудникам

   // а потом группировку по периоду журнала!!!

   Пока Запрос.Группировка("Сотр") = 1 Цикл

      // Заполнение полей Сотр

      Таб.ВывестиСекцию("Сотр<");

      Пока Запрос.Группировка("ПериодЖурнала") = 1 Цикл

         // Заполнение полей ПериодЖурнала

         Таб.ВывестиСекцию("Мес");

      КонецЦикла;

      Таб.ВывестиСекцию("Сотр>");

   КонецЦикла;

   // Вывод заполненной формы

   // Заполнение полей "Итого"

   Таб.Опции(0, 0, 0, 0);

   Таб.ТолькоПросмотр(1);

   Таб.Показать("Результат", );

КонецПроцедуры

ЭтоГруппа

Возвращает флаг принадлежности группе справочника.

Синтаксис:

ЭтоГруппа(<ИмяГруппировки>)

Англоязычный синоним:

IsItAGroup

Параметры:

<ИмяГруппировки>

Выражение, содержащее порядковый номер или имя группировки (см. Главу «Язык запросов»).

Возвращаемое значение:

Число: 1 — если текущая строка выборки (временного набора данных, сформированного в результате выполнения запроса) является группой справочника, 0 — если это обычный элемент справочника.

Описание:

Метод ЭтоГруппа предназначен для выделения строк временного набора данных, которые являются группой справочника.

Пример:

Пока (Запр.Группировка("Товар") = 1) И (Запр.ЭтоГруппа("Товар") = 1) Цикл

   ...

КонецЦикла;

НачалоПериода

Возвращает дату начала периода формирования запроса.

Синтаксис:

НачалоПериода()

Англоязычный синоним:

BeginOfPeriod

Возвращаемое значение:

Значение типа «дата» — начало периода формирования запроса.

Описание:

Метод НачалоПериода возвращает дату начала периода запроса. Если в тексте запроса (см. «Язык запросов») указана одна из предопределенных группировок типа период ("Год", "Месяц", "День" и т. д.), то при обработке этой и вложенных в нее группировок метод НачалоПериода будет возвращать начало периодов текущих значений этих группировок.

Пример:

ДатаНачала = Запрос.НачалоПериода();

КонецПериода

Возвращает дату конца периода формирования запроса.

Синтаксис:

КонецПериода()

Англоязычный синоним:

EndOfPeriod

Возвращаемое значение:

Значение типа «дата» — конец периода формирования запроса.

Описание:

Метод КонецПериода возвращает дату конца периода запроса. Если в тексте запроса (см. «Язык запросов») указана одна из предопределенных группировок типа период ("Год" , "Месяц" , "День" и т. д.), то при обработке этой и вложенных в нее группировок метод КонецПериода будет возвращать конец периодов текущих значений этих группировок.

Пример:

ДатаКонца = Запрос.КонецПериода();

Получить

Прямое позиционирование на запись в выборке по конкретным значениям группировок.

Синтаксис:

Получить(<ЗначениеГруппировки_1>, ..., <ЗначениеГруппировки_n>)

Англоязычный синоним:

Get

Параметры:

<ЗначениеГруппировки_n>

Выражение, содержащее значение n-ой группировки запроса.

Возвращаемое значение:

Число: 1 — если запись найдена, 0 — если нет.

Описание:

Метод Получить осуществляет прямое позиционирование на запись в выборке по конкретным значениям группировок.

Количество параметров метода зависит от количества группировок в запросе. Можно пропускать значения одной или нескольких последних группировок, в этом случае метод позиционируется на запись, которая будет содержать итоговые значения для указанных группировок. Пропускаемые при вызове метода последние значения группировок должны заменяться запятыми. Если при вызове метода опущены все параметры, то выборка позиционируется на самое начало временного набора данных, на строку итогов.

После выполнения метода Получить может осуществляться дальнейший обход выборки вызовами метода Группировка.

Пример:

// Текст запроса

Текст3апроса = "

| ...

|Группировка Должность;

|Группировка Категория;

| ...

|";

// Текст процедуры обработки запроса

Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда

   Возврат;

КонецЕсли;

Если Запрос.Получить(ВыбДолжн, ВыбКатег) = 0 Тогда

   Если Запрос.Получить(ВыбДолжн, ) = 0 Тогда

      // ...

   КонецЕсли;

КонецЕсли;

ВНачалоВыборки

Осуществляет прямое позиционирование на начало выборки.

Синтаксис:

ВНачалоВыборки()

Англоязычный синоним:

ToSelectionBegin

Возвращаемое значение:

Число: 1 — если операция выполнена успешно, 0 — если нет.

Описание:

Метод ВНачалоВыборки осуществляет прямое позиционирование на начало выборки.

Если необходимо перейти на верхний уровень группировок, чтобы затем организовать проход группировки первого уровня (в любом направлении), следует использовать метод ВНачалоВыборки.

Пример:

// Текст запроса

Текст3апроса = "

| ...

|Группировка Должность;

|Группировка Категория;

| ...

|";

// Текст процедуры обработки запроса

Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда

   Возврат;

КонецЕсли;

Если Запрос.Получить(ВыбДолжн, ВыбКатег) = 0 Тогда

   Если Запрос.Получить(ВыбДолжн, ) = 0 Тогда

      // ...

   КонецЕсли;

КонецЕсли;

Запрос.ВНачалоВыборки();

Пока Запрос.Группировка(1, -1) цикл

   // ...

Конеццикла;

Выгрузить

Выгружает результаты запроса в таблицу значений.

Синтаксис:

Выгрузить(<ТаблЗнач>, <Флаг>, <Итоги>)

Англоязычный синоним:

Unload

Параметры:

<ТаблЗнач> | Таблица значений, куда выгружаются результаты запроса.
<Флаг> | Необязательный параметр. Число: 0 — значения групп и функций (по умолчанию); 1 — значения групп и функций, дополнительных переменных; 2 — значения упорядочиваний групп и функций; 3 — значения упорядочиваний групп и функций, дополнительных переменных; Строка — "Товар(1), Товар(2), Товар, Склад, Приход, Расход" , где Товар(1) — значение первого упорядочивания группировки "Товар".
<Итоги> | Необязательный параметр. Число: 0 — итоги по группировкам не выводить; 1 — итоги по группировкам выводить сверху (по умолчанию); 2 — итоги по группировкам выводить снизу; 3 — итоги по группировкам выводить сверху и снизу.

Возвращаемое значение:

Число: 1 — если выгрузка произошла успешно, иначе — 0.

Описание:

Метод Выгрузить выгружает результаты запроса в таблицу значений.

Пример:

// Текст запроса

Текст3апроса = "

| ...

|Группировка Должность;

|Группировка Категория;

| ...

|";

// Текст процедуры обработки запроса

Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда

   Возврат;

КонецЕсли;

ТаблЗнач = Создать("ТаблицаЗначений");

Запрос.Выгрузить(ТаблЗнач, 0, 0);

ЗначениеУпорядочивания

Возвращает значение поля упорядочивания для заданной группировки.

Синтаксис:

ЗначениеУпорядочивания(<Группировка>, <Упорядочив>)

Англоязычный синоним:

OrderValue

Параметры:

<Группировка> | Выражение, содержащее значение номера или имени группировки (номер работает быстрее).
<Упорядочив> | Необязательный параметр. Порядковый номер параметра упорядочивания указанной группировки. Значение по умолчанию: 1.

Возвращаемое значение:

Значение поля упорядочивания.

Описание:

Метод ЗначениеУпорядочивания возвращает значение поля упорядочивания, выбирая его из временной выборки запроса, не обращаясь к базе данных.

Замечание: Если в тексте запроса для данной группировки не используется конструкция "Упорядочить по", то в этом случае действует упорядочивание по умолчанию:

· для справочников — зависит от основного представления при описании справочника в конфигураторе (код или наименование).

· для документов — дата и время создания документа.

Пример:

// Текст запроса

ТекстЗапроса = "

|ВидРаб = Документ.Наряд.ВидРаботы;

|Сотр = Документ.Наряд.Сотрудник;

|Группировка ВидРаб

|Упорядочить По ВидРаб.Код, ВидРаб.Стоимость;

|Группировка Сотр;

|";

//...

// Фрагмент заполнения таблицы

// Выбираем значение

ВидРаб.Стоимость

Запрос.ЗначениеУпорядочивания("ВидРаб", 2);

// Выбираем имя сотрудника

Запрос.ЗначениеУпорядочивания(2, 1);

ПолучитьАтрибут

Возвращает значение атрибута запроса по его имени.

Синтаксис:

ПолучитьАтрибут(<ИмяАтрибута>)

Англоязычный синоним;

SetAttrib

Параметры:

<ИмяАтрибута>

Строковое выражение, содержащее значение любого атрибута запроса.

Возвращаемое значение:

Значение атрибута запроса.

Описание:

Метод ПолучитьАтрибут возвращает значение атрибута запроса по его имени.

Пример:

// Текст запроса

ТекстЗапроса = "

|ВидРаб = Документ.Наряд.ВидРаботы;

|Сотр = Документ.Наряд.Сотрудник;

|Группировка ВидРаб

|Упорядочить По ВидРаб.Код, ВидРаб.Стоимость;

|Группировка Сотр;

|";

// ...

// Фрагмент заполнения таблицы

// Выбираем значение ВидРаб

Запрос.ПолучитьАтрибут("ВидРаб");

// Выбираем сотрудника

Запрос.ПолучитьАтрибут("Сотр");


Part34

Глава 34
Язык Запросов

Язык запросов предназначен для описания запросов к документам, справочникам, регистрам, журналам расчетов, планам счетов, бухгалтерским операциям и проводкам. Текст описания запроса передается методу Выполнить (см. Главу «Работа с Запросами») в качестве параметра. В результате выполнения этого метода генерируется временный выходной набор данных, который в дальнейшем используется для заполнения формы отчета.

Формат текста описания запроса

Текст описания запроса на языке запросов состоит из последовательности операторов. Концом оператора является символ ";". Операторы могут записываться в любом порядке, однако, следует помнить, что интерпретатор языка запросов однопроходный, следовательно, сначала следует описать переменную, и только потом ее использовать в операторах Группировка, Функция или Условие.

Пример:

ТекстЗапроса =

"//({ЗАПРОС(РасчЛистки)

|  // Задаем интервал запроса

|Период с ДатаНач по ДатаКон;

|  // Определяем внутренние переменные

|Рез = ЖурналРасчетов.Зарплата.Результат;

|Расч = ЖурналРасчетов.Зарплата.ВидРасч;

|Дни = ЖурналРасчетов.Зарплата.Дни;

|Сотр = ЖурналРасчетов.Зарплата.Объект;

|  // Назначаем группировки

|Группировка Сотр без групп;

|Группировка Расч;

|  // Назначаем функции

|Функция Сум = Сумма(Рез);

|Функция Дней = Сумма(Дни);

|  // Назначаем условие

|Условие(Рез <> 0);

|"//}}ЗАПРОС

;

// ...

Соглашения и обозначения

В синтаксических диаграммах языка запросов используются следующие символы:

Символ | Значение
[ ] | В квадратных скобках заключаются необязательные синтаксические элементы.
[ ]+ | В квадратных скобках со знаком "+" заключаются обязательные синтаксические элементы, которые могут использоваться один или более раз.
[ ]* | В квадратных скобках со знаком "*" заключаются необязательные синтаксические элементы, которые могут использоваться один или более раз.
( ) | Круглые скобки заключают в себе список параметров.
| | Вертикальной линией разделяются синтаксические элементы, среди которых нужно выбирать один и только один.

Зарезервированные слова языка запросов

Ключевые слова — это слова, которые используются языком запросов для обозначения встроенных операторов.

Приведенные далее ключевые слова являются зарезервированными и не могут использоваться в качестве имен внутренних переменных описания запросов. Каждое ключевое слово имеет как минимум два представления — русское и английское. Английское представление является традиционным для языков программирования. Ключевые слова в русском и английском представлении могут свободно смешиваться в одном исходном тексте. Регистр букв ключевых слов не имеет значения. Ниже приведен полный список зарезервированных слов языка запросов в обоих представлениях.

Русский яз. | Английский яз.
Без | Without
Год | Year
Групп | Groups
Группировка | Group
День | Day
Документ | Document
И | And
Или | Or
Квартал | Quarter
Когда | When
Месяц | Month
Неделя | Week
НомерСтроки | LineNum
Обрабатывать | Process
ОбрабатыватьДокументы | ProcessDocuments
ОбрабатыватьОперации | PrосessOperations
Период | Period
ПериодЖурнала | Journal Period
По | By
По | Till
С | From
СтрокаДокумента | Document Line
Упорядочить | Order
Условие | Condition
Функция | Function

Все ключевые слова могут быть набраны в любом регистре (верхний и нижний), например: Функция, ФУНКЦИЯ, фУНКЦИЯ .

Комментарий

Комментарий в тексте описания запроса начинается парой символов //и заканчивается концом строки.

Пример:

// Это — комментарий

Группировка Кат;  // Это тоже комментарий

Константы и переменные запросов

Константы

Язык содержит следующие типы констант:

Числовая константа описывается следующей синтаксической диаграммой:

[+|-][0-9]+ | [0-9]*.[0-9]+

Пример:

-17

43.712

.43842

Строковая константа — это строка, заключенная в двойные кавычки.

Пример:

"Это текстовая константа" // ОК

"Это ошибочная константа

и должна находиться на одной строке" // Ошибка

Константа типа "дата" задается в виде строки, заключенной в одинарные кавычки, в формате 'ДД.ММ.ГГ' или 'ДД.ММ.ГГГГ'.

Пример:

'21.05.96'

'25.09.1964'

Внутренние переменные

Внутренняя переменная — это переменная, объявленная в тексте описания запроса. Именем переменной может быть любая последовательность букв, цифр и знаков подчеркивания "_", начинающаяся с буквы или знака подчеркивания "_". Имена внутренних переменных не должны совпадать с зарезервированными словами языка запросов. Распознавание имен переменных, названий операторов, процедур и функций ведется без учета регистра букв.

Пример:

*

// имена внутренних переменных в описании запроса

_43842        // ОК

НачалоПериода // ОК

712piece      // Ошибка: начинается с цифры

Week          // Ошибка: ключевое слово зарезервировано

*

// применение имен внутренних переменных описания запроса

// в программном модуле после позиционирования строки

// выборки функцией Группировка

Сотр = НовЗапрос.Сотр;

Кат = НовЗапрос.Кат;

ИТОГ = НовЗапрос.Итого;

Конкретизация переменной

Конкретизация переменной — это уточнение описания внутренней переменной, если это возможно в текущем контексте. Конкретизации переменной могут использоваться в языке запросов в операторах Группировка ... Упорядочить По и в качестве аргумента оператора Функция (см. далее).

Синтаксис:

<ВнутренняяПеременная>[.<Путь>]+;

Параметры:

<ВнутренняяПеременная> | Идентификатор объявленной ранее внутренней переменной.
<Путь> | Доступный атрибут внутренней переменной или конкретизации переменной (см. «Атрибуты, доступные при описании внутренних переменных»).

Пример:

Запрос = СоздатьОбъект("Запрос");

ТекстЗапроса =

" //{{ЗАПРОС(ОбработкаДок)

|Период с '01.10.96' по '05.10.96';

|ОбрабатыватьДокументы Все;

|Тов = Справочник.Товары.ТекущийЭлемент, Документ.РасхНакл.Товар;

|  // используем конкретизацию внутренней переменной Тов

|Группировка Тов Упорядочить По Тов.Наименование;

|Группировка Документ;

|Группировка СтрокаДокумента;

|"//}}ЗАПРОС

// Если ошибка в запросе, то выход из процедуры

Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда

   Возврат;

КонецЕсли;

Внимание! Запрос не манипулирует величинами типа «Строка неограниченной длины».

Внешние переменные

Внешние переменные — это переменные из области видимости процедуры или функции программного модуля, в теле которого используется данный запрос. Внешние переменные в тексте описания запроса могут использоваться в операторах Период С и Условие.

Пример:

Перем ДатаНач, ДатаКон;

Процедура Сформировать()

   Если (Число(ДатаНач) = 0) ИЛИ (Число(ДатаКон) = 0) Тогда

      Предупреждение("Не задан период!");

      Возврат;

   КонецЕсли;

   // Создание объекта типа "Запрос"

   Запрос = СоздатьОбъект("Запрос");

   ТекстЗапроса =

   "//{{ЗАПРОС(Сформировать)

   |  // используем внешние переменные ДатаНач и ДатаКон

   |с ДатаНач по ДатаКон;

   |Рез = ЖурналРасчетов.Зарплата.Результат;

   |Сотр = ЖурналРасчетов.Зарплата.Объект;

   |Группировка Сотр без групп;

   |Группировка ПериодЖурнала;

   |Функция Сум = Сумма(Рез);

   |"//}}ЗАПРОС

   ;

   // используем внешнюю переменную ВыбСотр

   Если ВыбСотр.Выбран() = 1 Тогда

      // используем в запросе внешнюю переменную ВыбСотр

      ТекстЗапроса = ТекстЗапроса + "Условие(Сотр = ВыбСотр);";

   КонецЕсли;

   // Если ошибка в запросе, то выход из процедуры

   Если Запрос.Выполнить(ТекстЗапр) = 0 Тогда

      Возврат;

   КонецЕсли;

   ...

КонецПроцедуры // ВыбСотр — это реквизит диалога

Атрибуты, доступные при описании внутренних переменных

В языке запросов можно обращаться к атрибутам следующих видов данных:

Русское назв. | Англ. Назв. | Описание
Документ | Document | Данные документов.
Справочник | Reference | Данные справочников.
Регистр | Register | Данные регистров.
ЖурналРасчетов | CalcJournal | Данные журналов расчета.
Счет | Account | Данные счетов.
Операция | Operation | Данные бухгалтерских операций и проводок.

Эти названия являются первыми в пути описания переменных. В качестве атрибутов допускается использовать любые реквизиты, которые заданы для них в конфигураторе в дереве метаданных (реквизиты для справочников, документов и журналов расчетов; измерения и ресурсы для регистров). Кроме этих атрибутов, разрешен так же доступ к следующим предопределенным атрибутам:

Доступные атрибуты объектов типа «Документ»:

Русское назв. | Англ. Назв. | Описание
ВремяДок | DocTime | Время документа.
ДатаДок | DocDate | Дата документа.
НомерДок | DocNum | Номер документа.
НомерСтроки | LineNum | Номер строки документа.
ТекущийДокумент | CurDocument | Значение текущего документа.

Доступные атрибуты объектов типа «Справочник»:

Русское назв. | Англ.назв. | Описание
родитель | Parent | Родитель элемента многоуровневого справочника.
Владелец | Owner | Владелец подчиненного справочника.
Код | Code | Код элемента справочника.
Наименование | Description | Наименование элемента справочника.
ТекущийЭлемент | CurItem | Значение текущего элемента справочника.

Доступные атрибуты объектов типа «Регистр»:

Русское назв. | Англ.назв. | Описание
НомерСтроки | LineNum | Номер строки документа, выполнившего движение регистра (в случае, когда в Модулях документов в конфигурации перед движением регистра использовали метод ПривязыватьСтроку).
ТекущийДокумент | CurDocument | Значение документа, выполнившего движение регистра.

Доступные атрибуты объектов типа «ПланСчетов»:

Русское назв. | Англ. назв. | Описание
БезКорреспонденций | IsSingle | Флаг того, что элемент плана счетов — забалансовый.
Валютный | IsCurrency | Флаг валютного учета элемента плана счетов.
КОД | Code | Код элемента плана счетов.
Количественный | Is Amount | Флаг количественного учета элемента плана счетов.
Наименование | Description | Наименование элемента плана счетов.
ТекущийСчет | CurAccount | Значение текущего счета плана счетов.

Доступные атрибуты объектов типа «Операция»:

Русское назв. | Англ. Назв. | Описание
ВремяОперации | OperTime | Время операции.
ДатаОперации | OperDate | Дата операции.
Содержание | Description | Содержание операции.
СуммаОперации | OperSum | Сумма операции.
ТекущийДокумент | CurDocument | Значение документа создавшего операцию.

Доступные атрибуты объектов типа «Проводка»:

Русское назв. | Англ. назв. | Описание
ВалСумма | CurSum | Валютная сумма проводки (для счетов с валютным учетом).
Валюта | Currency | Валюта проводки.
Количество | Amount | Количество проводки (для счетов с количественным учетом).
КорСчет | CorAccount | Корреспондирующий счет. Корреспондирующим счетом, для которого является Счет.
Сумма | Sum | Сумма проводки.
Счет | Account | Счет, для обработки корреспонденции. Корреспондирующим счетом, для которого является КорСчет.

Пример:

*

Запрос = СоздатьОбъект("Запрос");

ТекстЗапроса = "//{{ЗАПРОС(Сформировать)

|Период с НачДата по КонДата;

|ДОКУМ = Документ.РасходнаяБН.ТекущийДокумент,

|   Документ.РасходнаяКредит.ТекущийДокумент,

|   Документ.РасходнаяНал.ТекущийДокумент,

|   Документ.РасходнаяРеализ.ТекущийДокумент,

|   Документ.Счет.ТекущийДокумент;

|Группировка ДОКУМ; //по документам

|"//}}ЗАПРОС

;

*

//Создание объекта типа Запрос

Запрос = СоздатьОбъект("Запрос");

ТекстЗапроса =

"//{{ЗАПРОС(Печать)

|Товар = Справочник.Товары.ТекущийЭлемент;

|Группировка Товар Упорядочить по Товар.МинЗапас;

|"//}}ЗАПРОС

*

Запрос = СоздатьОбъект("Запрос");

ТекстЗапроса =

"//{{ЗАПРОС(Сформировать)

|Период с НачДата по КонДата;

|ВидТоплива = Регистр.ПокупателиКолво.ВидыТоплива;

|Вес = Регистр.ПокупателиКолво.Кг;

|Покуп = Регистр.ПокупателиКолво.Покупатели;

|Док = Регистр.ПокупателиКолво.ТекущийДокумент;

|Ном = Регистр.ПокупателиКолво.НомерСтроки;

|Группировка ВидТоплива; //по измерению Регистра

|Группировка Док; // по документам, двигавшим Регистр

|Группировка Ном; // по номерам строк документов

|Функция ВсегоКолво = КонОст(Вес);

|Функция ПриходКолво = Приход(Вес);

|Условие(Покуп = ВыбПокупатель);

|"//}}ЗАПРОС

;

Операторы языка запросов

Объявление внутренней переменной

Синтаксис:

<ИмяПеременной> = <ОписаниеПеременной> [, <ОписаниеПеременной>]+;

Параметры:

<ИмяПеременной> | Имя объявляемой внутренней переменной описания запроса.
<ОписаниеПеременной> | Указывает на доступный в языке запросов атрибут документа, справочника, регистра или журнала расчетов (см. «Атрибуты, доступные при описании внутренних переменных»).

Описание:

Внутренние переменные используются в тексте запроса для образования ссылок на объекты конфигурации, чтобы использовать их при построении таких операторов запроса, как Группировка, Функция, Условие.

В объявлении внутренней переменной можно указывать несколько вариантов <ОписанияПеременной>. Все описания должны указывать на один и тот же тип данных (число, строку, справочник или документ). Переменной, указывающей на разные справочники или документы присваивается тип данных «Справочник неопределенного вида» или «Документ неопределенного вида» соответственно.

* Например, можно определить внутреннюю переменную:

Товар = Документ.Перемещение.Товар, Документ.Расходная.Товар;

и использовать ее для создания Группировки. Такой состав внутренней переменной как бы дает Группировке задание — просмотреть все документы видов "Перемещение" и "Расходная" и выбрать все товары, встречающиеся либо в документах вида "Перемещение", либо в документах "Расходная".

* Еще пример. Допустим, у нас есть регистр "Взаиморасчеты" и регистр "Кредиты", и в том и в другом есть измерение "Клиент". Определяем внутреннюю переменную:

Должник = Регистр.Взаиморасчеты.Клиент, Регистр.Кредиты.Клиент;

Если использовать такую внутреннюю переменную для образования Группировки, то она будет означать следующее: пройти по регистру "Взаиморасчеты" и по регистру "Кредиты", вычислить заданные в запросе Функции и выбрать значения "Клиентов", для которых значения хотя бы одной функции будет ненулевой. Здесь мы видим, что формирование запроса по регистрам имеет некоторые особенности (обязательно наличие Функций, причем их вычисленные значения должны быть отличны от нуля, только в этом случае найденные объекты включаются во временный набор данных формируемый запросом).

Если описания внутренней переменной указывают на разные типы данных, например, на «Справочник» и на «Документ», то это просто вызовет сообщение об ошибке. Например, следующее определение внутренней переменной будет ошибочным:

ААА = Справочник.Товары.ТекущийЭлемент, Документ.Счет.ТекущийДокумент;

// ЭТО ОШИБКА !!!

Однако, допускается в описании внутренней переменной указание на разные справочники либо на разные документы. Переменной, указывающей на разные справочники или документы присваивается тип данных «Справочник неопределенного вида» или «Документ неопределенного вида» соответственно.

* Например, правомерно задать такую внутреннюю переменную:

Парам = Документ.Счет.Клиент, Документ.Счет.Фирма;

(Здесь предполагается, что в контексте конфигурации, реквизиты "Клиент" и "Фирма" — это элементы справочников). Если использовать такую внутреннюю переменную для построения Группировки, то она будет означать следующее: пройти по документам "Счет" и выбрать значения клиентов и фирм, встречающихся в них (и, например, упорядочить эти элементы по наименованию). Как интерпретировать результаты полученной выборки при таком запросе — будет зависеть от контекста поставленной задачи.

В языке запросов описание внутренних переменных для агрегатных типов данных типа «Операция» и «Проводка» начинается со слова «Операция» вне зависимости от того, будет ли обращение к бухгалтерским операциям или к проводкам. <ОписаниеПеременной> определяется следующим образом:

Операция.(

   <Реквизиты0перации>

   |  <ПредРеквОпераций>

   |  <РеквизитыПроводок>

   |  <ПредРеквПроводок>

   |  Дебет.(

         Счет

         | <Субконто>

      )

   |  Кредит.(

         Счет

         | <Су6конто>

      )

   |  Субконто.

      <ВидСубконто>

   |  КорСубконто.

      <ВидСубконто>

)

<РеквизитыОперации> | Реквизиты операции объявленные в метаданных.
<ПредРеквОпераций> | Предопределенные реквизиты Операций.
<РеквизитыПроводок> | Реквизиты проводок, объявленные в метаданных.
<ПредРеквПроводок> | Предопределенные реквизиты Проводок.
<ВидСубконто> | Идентификатор вида субконто.

Применение слов "Дебет", "Кредит" в описании переменных позволяют оперировать дебетовой и кредитовой частями проводки, такими как счет и вид субконто.

Применение слов "Субконто" и "КорСубконто" в описании переменных позволяют оперировать как субконто, так и корреспондирующим субконто.

*

Сум = Операция.Сумма;

Сч = Операция.Дебет.Счет, Операция.Кредит.Счет;

Кратко суть этого раздела можно выразить так: при определении внутренних переменных запроса разработчик конфигурации должен ясно себе представлять суть и смысл взаимосвязи объектов конфигурации, которые объединяются в описании единой внутренней переменной, поскольку интерпретация полученных результатов выполнения запроса полностью зависит от контекста решаемой задачи.

Несколько слов о дополнительных именах доступа к стандартной информации, которые определены в языке запросов. Речь идет о конструкции ТекущийЭлемент для справочников и ТекущийДокумент для документов и регистров (не надо путать эти конструкции языка запросов с одноименными методами встроенного языка, хотя их смысл во многом совпадает).

Для справочников использование конструкции ТекущийЭлемент в описании внутренней переменной означает выборку элемента справочника как такового (целиком всей записи справочника).

Аналогично при работе с документами, использование конструкции ТекущийДокумент в описании внутренней переменной, означает выборку документа как такового (целиком всего документа как объекта конфигурации). Сравните два примера:

Пример 1.

* Здесь нас интересуют товары, встречающиеся в документах.

ТОВАР = Документ.РасходнаяБН.Товар,

   Документ.РасходнаяКредит.Товар,

   Документ.РасходнаяНал.Товар,

   Документ.РасходнаяРеализ.Товар,

   Документ.Счет.Товар;

Пример 2.

* Здесь нас интересуют сами документы указанных видов как таковые.

ДОКУМ = Документ.РасходнаяБН.ТекущийДокумент,

   Документ.РасходнаяКредит.ТекущийДокумент,

   Документ.РасходнаяНал.ТекущийДокумент,

   Документ.РасходнаяРеализ.ТекущийДокумент,

   Документ.Счет.ТекущийДокумект;

Использование для документов конструкции НомерСтроки в описании внутренней переменной, означает выборку номеров строк документов (не самих строк, а чисел, обозначающих номера строк в документе).

СТРОКА = Документ.РасходнаяБН.НомерСтроки;

Для регистров использование конструкции ТекущийДокумент в описании внутренней переменной означает выборку документов (целиком всего документа как объекта конфигурации), которые произвели движение по данному регистру.

Использование для регистра конструкции НомерСтроки в описании внутренней переменной, означает выборку связанных номеров строк тех документов, которые произвели движение по регистру (в случае, когда в Модулях документов в конфигурации перед движением регистра использовали метод ПривязыватьСтроку).

Пример:

Запрос = СоздатьОбъект("Запрос");

ТекстЗапроса =

"//{{ЗАПРОС(Сформировать)

|Период с НачДата по КонДата;

|ВидТоплива = Регистр.ПокупателиКолво.ВидыТоплива;

|Покуп = Регистр.ПокупателиКопво.Покупатели;

|Док = Регистр.ПокупателиКолво.ТекущийДокумент;

|Ном = Регистр.ПокупателиКолво.НомерСтроки;

|Вес = Регистр.ПокупателиКолво.Кг;

|Группировка ВидТоплива; // по измерению Регистра

|Группировка Док; //по документам, двигавшим Регистр

|Группировка Ном; // по номерам строк документов

|Функция ВсегоКолво = КонОст(Вес);

|Функция ПриходКолво = Приход(Вес);

|Условие(Покуп = Покупат);

|"//}}ЗАПРОС

;

// Если ошибка в запросе, то выход из процедуры

Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда

   Возврат;

КонецЕсли;

В программном модуле конфигурации (т. е. вне текста запроса) существует доступ (там, где это имеет смысл) к значениям всех объявленных в тексте запроса внутренних переменных, даже тех, которые не участвуют ни в группировках, ни в функциях. Другими словами, если объявленная в тексте запроса внутренняя переменная не задействована в запросе ни в группировке, ни в функции ни в условии, данная внутренняя переменная все же присутствует в запросе.

Период С

Установить временной интервал дат формирования запроса.

Синтаксис:

[[Период] С <Дата>|<ВнешняяПерем> [ПО <Дата>|<ВнешПеременная>];]

Англоязычный синоним:

[[Period] From <Дата>|<ВнешПеременная> [Till <Дата> | <ВнешПеременная>];]

Параметры:

<Дата> | Константа типа «Дата», «Документ» или . позиция документа.
<ВнешПеременная> | Внешняя переменная типа «Дата», «Документ» или позиция документа. Если указан документ, то за момент времени принимается дата и время документа.
По | Добавочное ключевое слово для связки первой части команды со второй, необязательной частью.

Описание:

Оператор Период С устанавливает интервал дат формирования запроса. Если в описании запроса оператор Период С опущен, то интервал дат формирования запроса устанавливается в точку актуальности итогов (ТА) (или на РабочуюДату, если не установлена компонента «Оперативный учет»), запрос формируется только на этот момент времени.

Использование данного оператора актуально только в том случае, если запрос строится для выборки данных по регистрам, журналам расчетов и/или документам. Здесь указывается, в каком интервале выбирать движения регистров и/или подборку документов. При выполнении запроса только по справочникам эта секция не играет никакой роли.

Параметрами оператора Период С являются значения момента времени («Дата», «Документ» или позиция документа) начала и конца временного интервала. Следует особо обратить внимание, что если интервал задается с точностью до даты, то интервал времени считается от начала даты нижней границы интервала до конца даты верхней границы интервала. Если вторая часть оператора после ключевого слова По пропущена или значение второго параметра команды равно нулю, то интервал времени применяется от начального момента времени до ТА (или по РабочуюДату, если не установлена компонента «Оперативный учет»). Это особенно важно при формировании запросов по регистрам, т. к. запрос по регистрам может строиться от любой даты в прошлом до ТА. Поэтому, если вы укажете в запросе верхнюю границу интервала большей или равной дате ТА, то программа скорее всего сообщит «Не могу рассчитать регистры за ТА» (поскольку время ТА лежит где то в пределах даты, а запрос пытается учесть всю дату в целом). Поэтому при формировании текста запроса следует вставлять дополнительную проверку типа той, что приведена в следу ющем примере:

Пример:

Запрос = СоздатьОбъект("Запрос");

ТекстЗапроса =

"Счет = Регистр.Cash.Счет;

|Статья = Регистр.Cash.Статья;

|СуммаЭквивалента2 = Регистр.Cash.СуммаЭквивалента2;

|СуммаЭквивалента1 = Регистр.Cash.СуммаЭквивалента1;

......

Если ДатаКонца >= ПолучитьДатуТА() Тогда

   ТекстЗапроса = ТекстЗапроса + "Период с ДатаНачала;";

Иначе

   ТекстЗапроса = ТекстЗапроса + "Период с ДатаНачала по ДатаКонца;";

КонецЕсли;

Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда

   Возврат;

КонецЕсли;

Работа команды при формировании запросов к журналам расчетов зависит от того, используется ключевое слово "Период" или нет. Применение конструкции "Период С ... По..." приводит к тому, что выборка записей из журнала расчетов осуществляется в разрезе расчетных периодов конкретного журнала, фактически, по времени ввода строк журнала расчетов в систему.

Применение конструкции "С ... По ..." приводит к тому, что выборка записей из журнала расчетов проводится по времени действия записей журнала расчетов, определяемых реквизитами журнала расчетов "ДатаНачала" и "ДатаОкончания", а не временем их ввода в журнал. Более подробно о двойственности временного представления журналов расчетов см. выше, в главе «Работа с Журналами расчетов».

Замечание. Работа запроса с журналами расчетов, с использованием конструкции "Период С ... По ...", аналогична выборке записей в журнале расчетов, организуемой при помощи метода журнала расчетов ВыбратьПериод. С другой стороны, запрос, использующий конструкцию "С ... По ...", аналогичен выборке, организуемой при помощи метода журнала расчетов ВыбратьЗаписи.

Пример:

*

Процедура РасчЛистки()

   Перем Запрос, Флаг;

   Перем ДатаНач, ДатаКон;

   ЖР = СоздатьОбъект{"ЖурналРасчетов.Зарплата");

   Нач = ЖР.НачалоТекущегоПериода();

   Кон = ЖР.КонецТекущегоПериода();

   //Создание объекта типа Запрос

   Запрос = СоздатьОбъект("Запрос");

   Флаг = Запрос.Выполнить(

   "//{{ЗАПРОС(РасчЛистки)

   |Период С ДатаНач По ДатаКон; // выборка по расчетным периодам!

   |Рез = ЖурналРасчетов.Зарплата.Результат;

   |Расч = ЖурналРасчетов.Зарплата.ВидРасч;

   |Дни = ЖурналРасчетов.Зарплата.Дни;

   |Сотр = ЖурналРасчетов.Зарплата.Объект;

   |Группировка Сотр без групп;

   |Группировка Расч;

   |функция Сум = Сумма(Рез);

   |функция Дней = Сумма(Дни);

   |Условие(Рез о 0);

   |"//}}ЗАПРОС

   );

   // ...

КонецПроцедуры;

*

//Создание объекта типа Запрос

Запрос = СоздатьОбъект("Запрос");

// ниже формируется текст запроса с выборкой по времени

// действия записей журнала расчетов, а не по расчетным периодам!

ТекстЗапроса =

"//{{ЗАПРОС(Сформировать)

|С ДатаНач По ДатаКон;

|Рез = ЖурналРасчетов.Зарплата.Результат;

|Сотр = ЖурналРасчетов.Зарплата.Объект;

|ПЖ = ЖурналРасчетов.Зарплата.ПериодРегистрации;

|Группировка Сотр без групп;

|Группировка ПЖ;

|Функция Сум = Сумма(Рез);

"//}}ЗАПРОС

;

Флаг = Запрос.Выполнить(ТекстЗапроса);

// ...

ОбрабатыватьДокументы

Назначить условие обработки документов в запросе.

Синтаксис:

ОбрабатыватьДокументы[Непроведенные|Проведенные|Все];

Англоязычный синоним:

ProcessDocuments[NonTransacted|Transacted|All];

Описание:

Оператор ОбрабатыватьДокументы назначает режим обработки документов в запросе. В операторе указывается, какими документами должен оперировать запрос: проведенными, непроведенными или теми и другими. По умолчанию в запросе обрабатываются только проведенные документы.

Пример:

Запрос = СоздатьОбъект("Запрос");

ТекстЗапроса = "//{{ЗАПРОС(ОбработкаДок)

|Период с '01.10.96' по '05.10.96';

|ОбрабатыватьДокументы Все;

|Тов = Справочник.Товары.ТекущийЭлемент, Документ.РасхНакл.Товар;

|Группировка Тов упорядочить по Тов.Наименование;

|Группировка Документ;

|Группировка СтрокаДокумента;

|"//}}ЗАПРОС

;

// Если ошибка в запросе, то выход из процедуры

Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда

   Возврат;

КонецЕсли;

ОбрабатыватьОперации

Назначить условие обработки бухгалтерских операций в запросе.

Синтаксис:

ОбрабатыватьОперации[Включенные|Выключенные|Все];

Англоязычный синоним:

ProcessOperations[On|Off|All];

Описание:

Оператор ОбрабатыватьОперации назначает режим обработки бухгалтерских операций в запросе. В операторе указывается, какими операциями должен оперировать запрос: с включенными проводками, с выключенными проводками или теми и другими. По умолчанию в запросе обрабатываются только операции с включенными проводками.

Пример:

Запрос = СоздатьОбъект("Запрос");

ТекстЗапроса =

"//{{ЗАПРОС(ОбработкаОпер)

|Период с '01.10.96' по '05.10.96';

|ОбрабатыватьОперации Все;

|Опер = Операция.ТекущийДокумент;

|Группировка Опер;

|"//}}ЗАПРОС

;

// Если ошибка в запросе, то выход из процедуры

Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда

   Возврат;

КонецЕсли;

Обрабатывать

Назначить условие обработки помеченных на удаление объектов в запросе.

Синтаксис:

Обрабатывать[ПомеченныеНаУдаление|НеПомеченныеНаУдаление|Все];

Англоязычный синоним:

Process[MarkedOnRemoving|NonMarkedOnRemoving|All];

Описание:

Оператор Обрабатывать назначает режим обработки помеченных на удаление объектов в запросе. В операторе указывается, какими объектами должен оперировать запрос: не помеченными на удаление, помеченными на удаление или теми и другими. По умолчанию в запросе обрабатываются все объекты.

Пример:

Запрос = СоздатьОбъект("Запрос");

ТекстЗапроса =

"//{{ЗАПРОС(Обработка)

|Период с '01.10.96' по '05.10.96';

|Обрабатывать НеПомеченныеНаУлаление;

|Товар = Справочник.Товар.ТекущийЭлемент;

|Группировка Товар упорядочить по Товар.Наименование;

|"//}}ЗАПРОС

;

// Если ошибка в запросе, то выход из процедуры

Если Запрос.Выполнить(ТекстЗапроса) = 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 Тогда

   Возврат;

КонецЕсли;

// ...

Итог = Запрос.Всего;

// ...

Оператор Функция предназначен для вычисления и накопления некоторых численных значений в процессе формирования выборки по запросу.

Кроме того, при формировании временного набора данных запрос специально формирует итоговые записи, в которые заносит накопленные значения вычисленных функций для каждой вложенной Группировки (подробнее об этом см. главу данной книги «Структура запросов и методика их использования»).

Операторы функций в запросе можно опускать, тогда запрос просто не будет ничего вычислять, а просто во временный набор данных заносятся записи со значениями Группировок. Однако это справедливо только для работы запросов по справочникам и по документам. При работе запроса по регистрам следует помнить, что в этом случае обязательно наличие Функций, причем только в том случае, когда их вычисленные значения отличны от нуля (хотя бы одной из заданных Функций), найденные объекты включаются во временный набор данных, формируемый запросом. Если при работе запроса по регистрам в тексте запроса операторы функций опущены, то программа не выдаст никакого сообщения об ошибке, добросовестно пройдет по всем Группировкам, не вычислит никаких значений Функций и, значит, ничего не запишет во временном файле.

При создании в тексте запроса внутренней переменной, которую вы предполагаете использовать в качестве параметра оператора Функция, надо учитывать, что тип этой внутренней переменной должен быть «число», т. к. функции в языке запросов обрабатывают только численные значения.

В тексте запроса, при описании оператора Функция можно использовать необязательное ключевое слово Когда, использование которого в операторе означает, что вычисление функции следует производить только при условии, что значение логического выражения, заданного в параметре ключевого слова является ИСТИНА. Синтаксис применяемого логического выражения полностью аналогичен синтаксису разрешенному к применению в операторах Условие.

Следует понимать, что не все функции внутри конкретной группировки запроса могут иметь четко интерпретируемый смысл. Например, для группировки по документу движения регистра следующие функции

|Функция ПрихКол = Приход(Количество);

|Функция РасхКол = Расход(Количество);

имеют четкий смысл — приращения, сделанные документом при движении регистра. С другой стороны, в той же группировке следующие функции:

|Функция НачКол = НачОст(Количество);

|Функция КонКол = КонОст(Количество);

явно не имеют смысла (в запросах по регистрам, обычно задают период запроса при помощи оператора Период C. Функция НачКол в данном примере должна по смыслу показывать остаток ресурса "Количество" на начальную дату запроса. Внутри группировки по документу вопрос: «Какой начальный остаток ресурса на дату 10.01.97?» по документу, проведенному, например, 13.01.97, не имеет смысла). Поэтому в таких ситуациях функция будет иметь нулевое значение.

Пример:

Запрос = СоздатьОбъект("Запрос");

Текст3апроса=

'//{{ЗАПРОС(Функции)

|Период с ДатаОтчета;

|Товар = Регистр.КвотыТоваров.Товар;

|Отдел = Регистр.КвотыТоваров.Отдел;

|Сотрудник = Регистр.КвотыТоваров.Сотрудник;

|Партнер = Регистр.КвотыТоваров.Партнер;

|Док = Регистр.КвотыТоваров.ТекущийДокумент;

|Количество = Регистр.КвотыТоваров.КвотаТовара;

|Группировка Товар;

|Группировка Отдел;

|Группировка Сотрудник;

|Группировка Партнер;

|Группировка Док;

|Функция НачКол = НачОст(Количество);

|Функция ПрихКол = Приход(Количество);

|Функция РасхКол = Расход(Количество);

|Функция КонКол = КонОст(Количество);

|// Следующие Функции вычисляем только при определенных

|// условиях, чтобы получить отфильтрованные итоги

|Функция ПрихКолТов = Приход(Количество) Когда (Док.ФлагТовара = 1);

|Функция РасхКолТов = Расход(Количество) Когда (Док.ФлагТовара = 1);

|Функция ПрихКолОтд = Приход(Количество) Когда (Док.ФлагОтдела = 1);

|Функция РасхКолОтд = Расход(Количество) Когда (Док.ФлагОтдела = 1);

|Функция ПрихКолСотр = Приход(Количество) Когда (Док.ФлагСотрудника = 1);

|Функция РасхКолСотр = Расход(Количество) Когда (Док.ФлагСотрудника = 1);

|"//}}ЗАПРОС

;

// Если ошибка в запросе, то выход из процедуры

Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда

   Возврат;

КонецЕсли;

Группировка

Устанавливает порядок выборки информации.

Синтаксис:

Группировка <ИмяГруппировки>|<ПредопредГруппировка>

           [Упорядочить по <Порядок>[, <Порядок>]*]

           [Без Упорядочивания][Без Групп][Все [ВошедшиеВЗапрос]];

Англоязычный синоним:

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);

   Таб.Показать("Результат", );

   // Вывод заполненной формы

КонецПроцедуры

Без итогов

Не накапливать итоги по группировкам.

Синтаксис:

Без итогов;

Англоязычный синоним:

Without Totals;

Описание:

Цель данного оператора — увеличение скорости выполнения запроса, при условии, что итоговые записи при использовании запроса не нужны. Данный оператор языка запросов, дает возможность не накапливать итоги по группировкам. Использовать данный оператор в тексте запроса имеет смысл, когда запрос строится не для формирования сложного отчета, а например, для простой выборки значений из информационной базы для последующей их обработки.

В случае применения данного оператора в тексте запроса, при обходе результатов запроса применяется только один цикл обхода, используя метод объекта «Запрос» Группировка() без параметра.

Пример:

Запрос = СоздатьОбъект("Запрос");

Текст3апроса = "

...

|Группировка Товар;

|Группировка Склад;

|Без Итогов; ";

Если Запрос.Выполнить(ТекстЗапроса) = 1 Тогда

   Возврат;

КонецЕсли;

Пока Запрос.Группировка() = 1 Цикл

   ...

КонецЦикла;

Замечание. Если в тексте запроса используется группировка по многоуровневому справочнику и не указано "Без Групп", то итоги по группам справочника будут накапливаться. Другими словами, если в запросе не нужны итоги по группам справочника, то в тексте запроса кроме использования оператора "Без Итогов" дополнительно следует в операторах "Группировка ..." использовать ключевое слово "Без Групп".

Условие

Назначить условие включения информации в запрос.

Синтаксис:

Условие(<ЛогическоеВыражение>);

Англоязычный синоним:

Condition

Параметры:

<ЛогическоеВыражение>

Логическое выражение встроенного языка 1С:Предприятие.

Описание:

Оператор Условие назначает условие включения информации в запрос. Если значение <ЛогическоеВыражение> верно, то информация включается в запрос, иначе нет.

Пример:

ТекстЗапроса =

"//{{ЗАПРОС(Одинарный)

|Период с ДатаНачала по ДатаКонец;

|Оклад = Справочник.Сотрудники.Оклад;

|Ктг = Справочник.Сотрудники.Категория;

|Группировка Ктг без групп;

|Функция Всего = Сумма(Оклад);

|Условие(Ктг.Выбран() = 1);   // только для тех сотрудников

| //у кого заполнен реквизит Категория

|"//}}ЗАПРОС

;

В логическом выражении могут участвовать как внутренние, так и внешние переменные запроса, т. е. переменные программного модуля, доступные в процедуре, использующей запрос.

Пример:

* Здесь показан отрывок текста процедуры, в которой формируется некоторый отчет, причем переменные:

ВыбТовар, ВыбОтдел, ВыбСотрудник

являются реквизитами диалога отчета, значит, они доступны в программном модуле, поэтому могут быть использованы в логическом выражении оператора Условие. В данном примере операторы Условие использованы для фильтрации в запросе только выбранных значений параметров отчета,

Запрос = СоздатьОбъект("Запрос");

ТекстЗапроса =

"//{{ЗАПРОС(Квоты)

|Товар = Регистр.КвотыТоваров.Товар;

|Отдел = Регистр.КвотыТоваров.Отдел;

|Сотрудник = Регистр.КвотыТоваров.Сотрудник;

|Партнер = Регистр.КвотыТоваров.Партнер;

|Количество = Регистр.КвотыТоваров.КвотаТовара;

|Группировка Товар;

|Группировка Отдел;

|Группировка Сотрудник;

|Группировка Партнер;

|Функция Кол_во = КонОст(Количество);

|Условие(Товар.ПринадлежитГруппе(ВыбТовар) = 1);

|Условие(Отдел = ВыбОтдел);

|Условие(Сотрудник = ВыбСотрудник.Сотрудник);

|"//}}ЗАПРОС

;

// Если ошибка в запросе, то выход из процедуры

Если Запрос.Выполнить(ТекстЗапроса)= 0 Тогда

   Возврат;

КонецЕсли;

В параметре оператора Условие, в принципе, можно записывать логические выражения любой сложности (по правилам встроенного языка 1С:Предприятие), используя любые логические операторы (>, <, =, >=, <>, И, ИЛИ, НЕ и другие), при этом в качестве операндов могут участвовать как внутренние, так и внешние переменные запроса (если существуют внутренняя и внешняя переменные с одинаковым именем, то использоваться по данному имени будет внутренняя переменная).

Пример:

Условие(Цена > 23.5);

Условие((Товар.ПринадлежитГруппе(ВыбТовар) = 1) И (Товар.Розн_Цена = 100));

Если в описании запроса использовано несколько операторов Условие, то они объединяются по логическому "И".

Пример:

* Использование двух операторов:

Условие(Товар.Наименование <> "Стол");

Условие(Товар.Наименование <> "Шкаф");

* аналогично записи одного оператора:

Условие((Товар.Наименование <> "Стол") И (Товар.Наименование<> "Шкаф"));

Логический оператор принадлежности

Кроме обычных логических операторов (>, <, =, >=, <=, <>, И, ИЛИ, НЕ) в операторе "Условие ..." языка запросов можно использовать дополнительный оператор — логический оператор принадлежности.

Синтаксис:

В

Англоязычный синоним:

In

Описание:

Оператор языка запросов "Условие (А в Б);" говорит о том, что условие истинно, когда значение А является подмножеством значения Б.

Следует особо отметить, что если значение Б пустое (объект не выбран), то условие является истинным, в отличии от оператора «=» (равно).

Если на принадлежность проверяется значение типа элемент справочника, то проверка выполняется с учетом его возможного вхождения в группу справочника. Аналогично, проверка на принадлежность субсчета осуществляется с учетом его возможного вхождения в счет-группу.

В качестве включающего подмножества логического оператора принадлежности (второй параметр после слова «в») может выступать как простое значение, так и список значений. В этом случае проверка выполняется с учетом вы-шеотмеченных особенностей для каждой строки списка значений.

Скорость выполнения запросов оптимизирована под использование оператора принадлежности, как в клиент-серверной, так и в файл-серверной версии системы 1С:Предприятие.

Внимание. Логический оператор принадлежности не поддерживается встроенным языком системы 1С:Предприятие, а применяется только в языке запросов.

Оператор принадлежности существенно облегчает написание текстов запроса, делает их более понятными.

Пример:

* без использования логического оператора принадлежности

Текст3апроса =

...

| Товар = Документ.ВидДокумента.Товар;";

...

Если ВыбТовар.Выбран() = 1 Тогда

   Если ВыбТовар.ЭтоГруппа() = 1 Тогда

      ТекстЗапроса = ТекстЗапроса +

               "Условие(Товар.ПринадлежитГруппе(ВыбТовар) = 1);";

   Иначе

      ТекстЗапроса = ТекстЗапроса + "Условие(Товар = ВыбТовар);";

   КонецЕсли

КонецЕсли;

* с использованием логического оператора принадлежности

Текст3апроса=

...

|Товар = Документ.ВидДокумента.Товар;";

...

|Условие (Товар в ВыбТовар);

...

Примеры использования Запросов

Печать каталога товаров

Далее приведена процедура, выполняющая печать всего справочника товаров с использованием формирования запроса. Для простого перебора справочника использование запросов оправдано только в том случае, если мы либо используем полученный временный набор данных многократно, или вычисляем функции, или производим нестандартное упорядочивание объектов. В данном примере запрос используется для сортировки справочника по некоторому реквизиту товара.

//--------------------------------

Процедура ПечатьСправочника()

   // Процедура печати полного справочника товаров

   Перем Запрос, ТекстЗапроса, Таб;

   //Создание объекта типа Запрос

   Запрос = СоздатьОбъект("Запрос");

   ТекстЗапроса = "//{{ЗАПРОС(Печать)

   |Товар = Справочник.Товары.ТекущийЭлемент;

   |Группировка Товар Упорядочить по Товар.МинЗапас;

   |"//}}ЗАПРОС

   // Если ошибка в запросе, то выход из процедуры

   Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда

      Возврат;

   КонецЕсли;

   // Заполнение выходных форм данными запроса

   // Создание Таблицы для выходного отчета

   Таб = СоздатьОбъект("Таблица");

   Таб.ВывестиСекцию("Отчет");

   Пока Запрос.Группировка("Товар") = 1 Цикл

      // Заполнение полей Товар

      Если Запрос.Товар.ЭтоГруппа() = 1 Тогда

         Таб.ВывестиСекцию("Группа");

      Иначе

         Таб.ВывестиСекцию("Товар");

      КонецЕсли;

   КонецЦикла;

   //Отображение выходного отчета

   Таб.ТолькоПросмотр(1);

   Таб.Опции(0, 0, 4, 0);

   Таб.Показать("Список товаров по каталогу", "");

КонецПроцедуры

Отчет по неходовым товарам

Далее приведен пример нетривиального использования запроса для просмотра одновременно многих видов документов. Цель данной процедуры — вывести в отчет перечень неходовых товаров, которые совсем не продавались за заданный период и показать в каждой строке текущий остаток и стоимость этих товаров. В данном примере запрос формируется с целью определить, что в него не вошло.

Процедура Сформировать()

   Перем Запрос, ТекстЗапроса, Таб;

   Рег = СоздатьОбъект("Регистр.ОстаткиТовара");

   Запрос = СоздатьОбъект("Запрос");

   ТекстЗапроса = "//{{ЗАПРОС(Сформировать)

   |Период С ДатаНачала По ДатаКонца;

   |ТОВАР = Документ.РасходнаяБН.Товар,

   |   Документ.РасходнаяКредит.Товар, Документ.РасходнаяНал.Товар,

   |   Документ.РасходнаяРеализ.Товар, Документ.Счет.Товар;

   |Группировка ТОВАР упорядочить по ТОВАР.Наименование без групп;

   |"//}}ЗАПРОС

   ;

   Если ДатаКонца >= ПолучитьДатуТА() Тогда

      ТекстЗапроса = ТекстЗапроса + "Период С ДатаНачала;";

   Иначе

      ТекстЗапроса = ТекстЗапроса + "Период С ДатаНачала По ДатаКонца;";

      Per.ВременныйРасчет();

      РассчитатьРегистрыНа(ДатаКонца);

   КонецЕсли;

   // Выполнение Запроса

   Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда

      Возврат;

   КонецЕсли;

   Тов = СоздатьОбъект("Справочник.Товары");

   // обход включая группировки

   Тов.ВключатьПодчиненные(1);

   // упорядочить по наименованиям

   Тов.ПорядокНаименозаний();

   ИтогоОстаток = 0;

   ИтогоСумма = 0;

   Таб = СоздатьОбъект("Таблица");

   Таб.ВывестиСекцию("Отчет");

   Состояние("В отчет выведено " + ЧислоСтрок + " строк.");

   // Запускаем полный цикл по товарам Справочника

   Тов.ВыбратьЭлементы();

   Пока Тов.ПолучитьЭлемент() > 0 Цикл

      Флаг = 0;

      Товар = Тов.ТекущийЭлемент();

      Если Товар.ЭтоГруппа() = 1 Тогда

         Продолжить;

      КонецЕсли;

      // Здесь пытаемся получить из Запроса информацию о товаре,

      // но используем просто сам факт того, что товар попал во

      // временный набор данных Запроса.

      // Если товар есть в Запросе, то значит он упоминался в

      // каких то документах,

      // иначе — товар не пользуется спросом — неходовой.

      Если Запрос.Получить(Товар) = 1 Тогда

         Продолжить;

      КонецЕсли;

      // находим остатки неходового товара на складе

      Рег.СводныеОстатки(Товар, );

      ТекОстаток = Рег.ОстатокТовара;

      ТекСумма = Рег.БазоваяСтоимость;

      Если ТекОстаток = 0 Тогда

         Продолжить;

      КонецЕсли;

      Таб.ВывестиСекцию("Товар");

      ИтогоОстаток = ИтогоОстаток + ТекОстаток;

      ИтогоСумма = ИтогоСумма + ТекСумма;

   КонецЦикла;

   Таб.ВывестиСекцию("Итоги");

   Таб.ТолькоПросмотр(1);

   Таб.Опции(0, 0, 3, 0);

   Таб.Показать("Отчет о неходовых товарах", "");

КонецПроцедуры

ДатаКонца = РабочаяДата();

ДатаНачала = ДатаКонца — Константа.ПериодАнализа;

Отчет по регистру с точностью до строки документа

Далее приведен пример использования запроса для просмотра регистра с выборкой документов, производивших движение данного регистра, с доступом к каждой строке этих документов. Цель данной процедуры — сформировать отчет, чтобы по каждому из видов топлива, отпущенных за заданный период покупателям, показать перечень номеров автомашин, которыми производилась отгрузка. Особенностью данного отчета является то, что номера автомашин не являются измерениями регистра, а зафиксированы в каждой строке отпускного документа.

Использование в описании внутренней переменной для регистра атрибута НомерСтроки, означает выборку связанных номеров строк тех документов, которые произвели движение по регистру (предполагается, что в конфигурации в Модулях документов перед движением данного регистра использовали метод ПривязыватьСтроку).

Процедура Сформировать()

   Перем Запрос, ТекстЗапроса, Таб;

   //Создание объекта типа Запрос

   Запрос = СоздатьОбъект("Запрос");

   ТекстЗапроса = "//{{ЗАПРОС(Сформировать)

   |Период с НачДата по КонДата;

   |ВидТоплива = Регистр.ПокупателиКолво.ВидыТоплива;

   |Вес = Регистр.ПокупателиКолво.Кг;

   |Покуп = Регистр.ПокупателиКолво.Покупатели;

   |Док = Регистр.ПокупателиКолво.ТекущийДокумент;

   |Ном = Регистр.ПокупателиКолво.НомерСтроки;

   |Группировка ВидТоплива;         //по измерению Регистра

   |Группировка Док;                // по документам, двигавшим Регистр

   |Группировка Ном;                //по номерам строк документов

   |Функция ВсегоКолво = КонОст(Вес);

   |Функция ПриходКолво = Приход(Вес);

   |Условие(Покуп = ВыбПокупатель);

   |"//}}ЗАПРОС

   ;

   // Если ошибка в запросе, то выход из процедуры

   Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда

      Возврат;

   КонецЕсли;

   // Заполнение выходных форм данными Запроса

   Таб = СоздатьОбъект("Таблица");

   Таб.ИсходнаяТаблица("Таблица1");

   Таб.ВывестиСекцию("Шапка");

   Пока Запрос.Группировка(1) = 1 Цикл

      // Отображаем значение измерения — ВидТоплива

      Таб.ВывестиСекцию("ВидТоплива");

      // запускаем вложенную группировку по документам,

      // которые производили движения Регистра

      Пока Запрос.Группировка(2) = 1 Цикл

         Док1 = Запрос.Док;

         // отфильтруем нужные нам документы

         Если НЕ(Док1.Вид() = "Продажа") Тогда

            Продолжить;

         КонецЕсли;

         // запускаем вложенную группировку по строкам

         // документа, связанным с движениями регистра

         Пока Запрос.Группировка(3) = 1 Цикл

            // Получаем в документе строку по найденному номеру

            Док1.ПолучитьСтрокуПоНомеру(Запрос.Ном);

            Таб.ВывестиСекцию("Строка");

         КонецЦикла;

      КонецЦикла;

   КонецЦикла;

   // Вывод заполненной формы

   Таб.Опции(О, О, 0, 0);

   Таб.ТолькоПросмотр(1);

   Таб.Показать("", "");

КонецПроцедуры

Анализ счета

Приводим пример использования запроса для работы с бухгалтерскими операциями и проводками. Запрос обрабатывает корреспонденции счета Сч по счетам КорСч за расчетный период. Значение счета для анализа задается в диалоге установкой ВыбСч.

Процедура АнализСчета()

   Перем Запрос, ТекстЗапроса, Таб;

   //Создание объекта типа Запрос

   Запрос = СоздатьОбъект("Запрос");

   ТекстЗапроса = "//{{ЗАПРОС(Сформировать)

   |Период с ДатаС по ДатаПо;

   |Сч = Операция.Счет;

   |КорСч = Операция.КорСчет;

   |Сумма = Операция.Сумма;

   |Группировка Сч упорядочить по Сч.Код;

   |Группировка КорСч упорядочить по КорСч.Код;

   |Функция КорДо = КорДО(Сумма);

   |Функция КорКо = КорКО(Сумма);

   |Условие(Сч = ВыбСч);

   |"//}}ЗАПРОС

   ;

   // Если ошибка в запросе, то выход из процедуры

   Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда

      Возврат;

   КонецЕсли;

   // Подготовка к заполнению выходных форм данными запроса

   Таб = СоздатьОбъект("Таблица");

   Таб.ИсходнаяТаблица("Сформировать");

   // Заполнение полей "Заголовок"

   Таб.ВывестиСекцию("Заголовок");

   Состояние("Заполнение выходной таблицы...");

   Пока Запрос.Группировка("Сч") = 1 Цикл

      // Заполнение полей Сч

      Таб.ВывестиСекцию("Сч");

      Пока Запрос.Группировка("КорСч") = 1 Цикл

         // Заполнение полей КорСч

         Таб.ВывестиСекцию("КорСч");

      КонецЦикла;

   КонецЦикла;

   // Заполнение полей "Итого"

   Таб.ВывестиСекцию("Итого");

   // Вывод заполненной формы

   Таб.Опции(1, 0. 1, 0);

   Таб.Показать("Сформировать", "");

КонецПроцедуры

Разработка вложенных отчетов

Средства программы 1С:Предприятие по работе с Таблицами позволяют создавать эффектные отчеты, причем на экране монитора отображается не просто мертвая картинка предварительного просмотра печати, а живой отчет, который можно редактировать или непосредственно из него вызывать дополнительную поясняющую информацию.

Поскольку каждая ячейка Таблицы может содержать значение, записанное в нее (см. Конфигуратор, редактор таблиц — Свойства ячейки — Текст — поле: Значение), то в программном модуле формы отчета возможно обрабатывать это значение. Обработка значения ячейки Таблицы вызывается системой по клавише <Enter> или по двойному щелчку мышью на какой-либо ячейке (если режим «только просмотр»). Стандартными действиями системы на обработку такого события являются: для документа — открытие документа, для элемента справочника — открытие формы редактирования элемента справочника. Другими словами, стандартные действия системы зависят от типа данных содержащегося в ячейке значения. Однако, это событие возможно перехватить и обработать нестандарным способом. Для этого предназначена предопределенная процедура встроенного языка ОбработкаЯчейкиТаблицы.

Примером нестандартной обработки значения ячейки таблицы может быть, например, вызов на формирование другого отчета. Таким образом, мы можем создавать как бы вложенные отчеты, которые вызываются один из другого, выдавая с каждым разом более детальную информацию. Допустим отчет «Взаиморасчеты» при формировании всегда выводится в кратком виде, когда виден только сводный баланс по контрагенту. Для того, чтобы получить детальный отчет по данному контрагенту, достаточно встать курсором в готовой форме отчета на этого контрагента и нажать клавишу <Enter>. Тогда сработает процедура ОбработкаЯчейкиТаблицы, в которой можно записать вызов формирования детального отчета. А если, кроме того, завести флаг режима отображения, то можно вместо этого показывать карточку этого контрагента из справочника.

Рассмотрим построение вложенных отчетов на примере. Допустим, у вас есть отчет «ПродажиТоваров», в котором отображается перечень товаров, количество и сумма проданных за некоторый период товаров. Программный модуль формирования такого отчета приведен ниже.

Пример:

Процедура ПродВсего()

   Перем Запрос, ТекстЗапроса, Таб;

   ДатаКон = ДатаКонца;

   Если ДатаКон >= ПолучитьДатуТА() Тогда

      ДатаКон = Дата(0);

   КонецЕсли;

   //Создание объекта типа Запрос

   Запрос = СоздатьОбъект("Запрос");

   ТекстЗапроса = "//{{ЗАПРОС(ПродВсего)

   |Период с ДатаНачала по ДатаКон;

   |ТОВАР = Документ.РасхНакл.Товар;

   |Сумма_Прод = Документ.РасхНакл.СуммаРуб;

   |КОЛВО_Прод = Документ.РасхНакл.Количество;

   |Группировка ТОВАР;

   |Функция Продано = Сумма(КОЛВО_Прод);

   |Функция СуммаПродано = Сумма(Сумма_Прод);

   |"//}}ЗАПРОС

   ;

   // Если ошибка в запросе, то выход из процедуры

   Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда

      Возврат;

   КонецЕсли;

   // Подготовка к заполнению

   Таб = СоздатьОбъект("Таблица");

   Таб.ИсходнаяТаблица("ТабВсего");

   Таб.ВывестиСекцию("Отчет");

   Пока Запрос.Группировка("Товар") = 1 Цикл

      ПродСумма = Запрос.СуммаПродано;

      Если Запрос.Товар.ЭтоГруппа() = 1 Тогда

         Таб.ВывестиСекцию("Группа");

      Иначе

         Таб.ВывестиСекцию("Товар");

      КонецЕсли;

   КонецЦикла;

   // Вывод заполненной формы

   Таб.ТолькоПросмотр(1);

   Таб.Опции(0, 0, 4, 0);

   Таб.Показать("Продажа товаров ", "");

КонецПроцедуры

Text Box: Отчет по продаже товаров с 01.11.96 по 19.11.96 Товар Продано Кол-во Сумма Обувь 12 1270 Сапоги женские 5 920 Туфли мужские 7 350

В режие исполнения у нас получится такой отчет:

Далее, допустим, мы хотим получить более подробный отчет по конкретному товару, так, чтобы указав на товар в отчете, и дважды нажав кнопку мыши, мы получали отчет по продажам именно этого товара с точностью до каждого клиента. Для этого откроем в Конфигураторе редактор таблицы нашего отчета и в свойствах ячейки (Свойства ячейки — Текст — поле: Значение), отображающей наименование товара, проставим значение ячейки. («Запрос.Товар»)

Далее, в программном модуле напишем процедуру формирования дополнительного отчета.

Продолжение примера:

//*********************************

// Процедура дополнительного отчета

Процедура ПродТовар(ВТовар)

   Перем Запрос, ТекстЗапроса, Таб;

   ДатаКон = ДатаКонца;

   Если ДатаКон >= ПолучитьДатуТА() Тогда

      ДатаКон = Дата(0);

   КонецЕсли;

   //Создание объекта типа Запрос

   Запрос = СоздатьОбъект("Запрос");

   ТекстЗапроса = "//{{ЗАПРОС(ПродТовар)

   |Период с ДатаНачала по ДатаКон;

   |КЛИЕНТ = Документ.РасхНакл.Клиент;

   |ТОВАР = Документ.РасхНакл.Товар;

   |СУММ = Документ.РасхНакл.СуммаВал;

   |КОЛВО = Документ.РасхНакл.Количество;

   |Группировка КЛИЕНТ Упорядочить По КЛИЕНТ.Наименование;

   |Группировка ТОВАР Упорядочить По ТОВАР.Наименование;

   |Функция Продано = Сумма(КОЛВО);

   |Функция ПродСум = Сумма(СУММ);

   |"//}}ЗАПРОС

   ;

   Если ВТовар.Выбран() = 1 Тогда

      Если ВТовар.ЭтоГруппа() = 1 Тогда

         ТекстЗапроса = ТекстЗапроса +

             "Условие(Товар.ПринадлежитГруппе(ВТовар) = 1);";

      Иначе

         ТекстЗапроса = ТекстЗапроса + "Условие (Товар = ВТовар);";

         ФОдинТовар = 1;

      КонецЕсли;

   КонецЕсли;

   // Если ошибка в запросе, то выход из процедуры

   Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда

      Возврат;

   КонецЕсли;

   // Подготовка к заполнению выходных форм

   Таб = СоздатьОбъект("Таблица");

   Таб.ВывестиСекцию("Отчет");

   Пока Запрос.Группировка("Клиент") = 1 Цикл

      Таб.ВывестиСекцию("Клиент");

      Пока Запрос.Группировка("Товар") = 1 Цикл

         Если ФОдинТовар = 0 Тогда

            Таб.ВывестиСекцию("Товар");

         КонецЕсли;

      КонецЦикла;

   КонецЦикла;

   // Вывод заполненной формы

   Таб.ТолькоПросмотр(1);

   Таб.Опции(0, 4, 0, 0);

   Таб.Показать("Продажа товара", "");

КонецПроцедуры

Теперь нам осталось написать предопределенную процедуру, которая возьмет на себя обработку события «двойной щелчок мышью на выбранной ячейке таблицы». Главная задача этой процедуры — определить, что выбрана ячейка, где указано значение товара и вызвать на исполнение процедуру формирования дополнительного отчета, написанную ранее.

Продолжение примера:

//-------------------------

Процедура ОбработкаЯчейкиТаблицы(ЗначЯч, ФлагСтандартнойОбработки)

   Если ТипЗначения(ЗначЯч) = 2 Тогда

      ФлагСтандартнойОбработки = 1;

      Возврат;

   КонецЕсли;

   ПродТовар(ЗначЯч);

КонецПроцедуры

Теперь, в режиме исполнения, если в отчете «Продажи товаров» мы укажем курсором на товар, например, «Сапоги женские» и дважды щелкнем на нем мышью, то сформируется дополнительный подробный отчет «Продажа товара».

Способы оптимизации формирования отчетов

Процесс получения отчетов с использованием запросов можно условно разделить на две фазы: сначала формируется запрос, затем полученные данные выводятся в Таблицу. В данном разделе речь пойдет о второй фазе получения отчета — выводе данных в Таблицу.

Рассмотрим следующий пример. Допустим, требуется вывести в отчет полный перечень товаров со всеми их реквизитами. Для этого сначала формируется запрос с одной Группировкой — "Товар", затем полученные данные выводятся в Таблицу. Ниже приведены три варианта вывода данных в Таблицу.

Вариант 1

В программном модуле текст вывода данных в Таблицу следующий

Пока Запрос.Группировка("Товар") = 1 Цикл

   Таб.ВывестиСекцию("Товар");

КонецЦикла;

Секция "Товар" в Таблице имеет следующий формат:

<Запрос.Товар.Наименование> | <Запрос.Товар.Артикул>
<Запрос.Товар.Цена> | <Запрос.Товар.Валюта>

В первом варианте отображаемые реквизиты товара полностью вычисляются в ячейках Таблицы, причем доступ к каждому реквизиту товара происходит по полному пути: Запрос-Товар-Реквизит. Данный вариант вывода данных в Таблицу самый медленный.

Вариант 2

В программном модуле текст вывода данных в Таблицу следующий

Пока Запрос.Группировка("Товар") = 1 Цикл

   ПечНаим = Запрос.Товар.Наименование;

   ПечАртикул = Запрос.Товар.Артикул;

   ПечЦена = Запрос.Товар.Цена;

   ПечВалюта = Запрос.Товар.Валюта;

   Таб.ВывестиСекцию("Товар1");

КонецЦикла;

Секция "Товар1" в Таблице имеет следующий формат:

<ПечНаим> | <ПечАртикул>
<ПсчЦена> | <ПечВалюта>

Во втором варианте отображаемые реквизиты товара вычисляются в программном модуле, а в ячейках Таблицы размещены простые выражения — ссылки на идентификаторы программного модуля. Доступ к каждому реквизиту товара происходит по полному пути: Запрос-Товар-Реквизит. В данном варианте фаза вывода данных в Таблицу работает быстрее первого варианта (выигрыш ~20%), т. к. в программном модуле выражения вычисляются существенно быстрее, чем выражения, помещенные в ячейках Таблицы (программный модуль при загрузке компилируется, а выражения в ячейках таблицы интерпретируются каждый раз при выводе секций).

Вариант 3

В программном модуле текст вывода данных в Таблицу следующий

Пока Запрос.Группировка("Товар") = 1 Цикл

   Тов = Запрос.Товар;

   ПечНаим = Тов.Наименование;

   ПечАртикул = Тов.Артикул;

   ПечЦена = Тов.Цена;

   ПечВалюта = Тов.Валюта;

   Таб.ВывестиСекцию("Товар1");

КонецЦикла;

Секция "Товар1" в Таблице имеет следующий формат:

<ПечНаим> | <ПечАртикул>
<ПсчЦена> | <ПечВалюта>

В третьем варианте отображаемые реквизиты товара вычисляются в программном модуле, а в ячейках Таблицы размещены простые выражения — ссылки на идентификаторы программного модуля. Доступ к каждому реквизиту товара происходит по сокращенному пути — через промежуточную переменную: Товар — Реквизит. В данном варианте фаза вывода данных в Таблицу работает быстрее, чем во втором варианте (выигрыш ~20%) и существено быстрее, чем в первом варианте (выигрыш ~40%), т. к. вычисление значений реквизитов объектов через «одну точку» выполняется быстрее, чем через «две (и более) точки».

Кратко суть этого раздела можно выразить так: при реализации больших отчетов, которые рассчитаны на отображение более сотни строк, следует придерживаться следующих правил:

· не размещайте сложных выражений в ячейках Таблицы. Лучше вычислить необходимые значения непосредственно в программном модуле;

· если необходимо получить несколько реквизитов одного объекта, который сам является составной частью другого объекта, то следует воспользоваться промежуточной переменной, в которую сначала можно записать значение всего объекта «целиком», а затем уже от нее получать требуемые данные.


Part35

Глава 35
Работа с Картинками

При формировании пользовательского интерфейса прикладной задачи иногда требуется отображать в диалоговых формах и печатных документах графические файлы. Для этого в системе 1С:Предприятие используется специальный агрегатный тип данных — Картинка и специальнй элемент формы диалога и таблицы: «Картинка».

Одним из примеров использования данного объекта может служить диалоговая форма справочника «Сотрудники» в которой при выборе сотрудника отображается его фотография.

Контекст работы с картинками

Если в форму диалога или в таблицу при помощи визуальных средств конфигуратора вставлены элементы формы типа «Картинка», система автоматически создает объекты этого типа, причем идентификаторы этих элементов доступны в контексте программного модуля этой формы как уже существующие объекты типа «Картинка». Кроме того, в программных модулях допускается создавать произвольное число объектов типа «Картинка» просто при помощи вызова системной функции СоздатьОбъект.

При создании объекта типа «Картинка» при помощи функции СоздатьОбъект, в качестве названия агрегатного типа данных обязательно должно выступать ключевое слово Картинка.

Англоязычный синоним ключевого слова Картинка — Picture.

Пример:

Фото=СоздатьОбъект("Картинка");

Методы объекта Картинка

Загрузить

Загрузить из файла.

Синтаксис:

Загрузить(<ИмяФайла>)

Англоязычный синоним:

Load

Параметры:

<ИмяФaйлa>

Строковое выражение, которое может задавать или идентификатор картинки в библиотеке картинок конфигурации или имя файла картинки.

Описание:

Метод Загрузить загружает картинку из файла с указанным именем <ИмяФайла> или берет по идентификатору картинку из библиотеки картинок конфигураци. Файл может быть следующих форматов:

.wmf

.emf

.ico

.bmp

.dib

.rle

Пример:

Фото = СоздатьОбъект("Картинка");

Фото.Загрузить("с:\BMP\Boris.bmp");

Сохранить

Сохранить в файл.

Синтаксис:

Сохранить(<ИмяФайла>)

Англоязычный синоним:

Save

Параметры:

<ИмяФайла>

Строковое выражение — имя файла.

Описание:

Метод Сохранить выгружает картинку в файл с именем <ИмяФайла> в формате загрузки (загрузили в формате bmp — в этом формате и сохраним).

Пример:

Фото.Загрузить("с:\ВМР\Boris.bmp");

Фото.Сохранить("с:\lCv7\DBmy\Boris.bmp");

РежимРисования

Установить режим рисования картинки.

Синтаксис:

РежимРисования(<Режим>)

Англоязычный синоним:

SetDrawMode

Параметры:

<Режим>

Числовое выражение: 1 — растягивать; 2 — рисовать по центру с оригинальным размером; 3 — рисовать сохраняя оригинальное соотношение высоты и ширины.

Возвращаемое значение:

Текущее числовое значение режима рисования картинки (на момент до исполнения метода).

Описание:

Метод РежимРисования устанавливает режим рисования картинки.

Пример:

Фото.РежимРисования(2);

Фото.Загрузить("с:\lCv7\DBmy\Boris.bmp");

УстановитьКартинку

Переустановить объект типа "Картинка".

Синтаксис:

УстановитьКартинку(<Объект>)

Англоязычный синоним:

SetPicture

Параметры:

<Объект>

Выражение, имеющее значение оъекта типа «Картинка» встроенного языка или OLE-объект типа I Picture.

Описание:

Метод УстановитьКартинку переписывает (копирует) значение источника <Объект> в текущий объект. (Данный метод копирует все содержимое одного объекта в другой, в отличие от оператора присваивания (=), который передает значение ссылки на уже существующий объект). Например:

А = СоздатьОбъект("Картинка");

В = А;

// в этом случае переменные А и В ссылаются на один и тот же объект

Рассмотрим другой вариант:

А = СоздатьОбъект("Картинка");

В = СоздатьОбъект("Картинка");

А.Загрузить("с:\BMP\Boris.bmp");

В.УстановитьКартинку(А);

// в этом случае переменные А и В ссылаются на два

// разных объекта, хотя и содержат одно и то же

Пример:

// Допустим в Форме диалога у нас есть элемент типа картинка

// с идентификатором Кино.

// Сделаем анимацию изображения в этой форме

Перем фото[5];

// создадим объекты и загрузим в них картинки

Для Н = 1 По 5 Цикл

   Фото[Н] = СоздатьОбъект("Картинка");

   Фото[Н].Загрузить("с:\BMP\Foto" + Строка(Н)+ ".bmp");

КонецЦикла;

// Теперь запустим анимацию

Для Раз = 1 По 100 Цикл

   Для Н = 1 По 5 Цикл

      Кино.УстановитьКартинку(Фото[H]);

   КонецЦикла;

КонецЦикла;


Part36

Глава 36
Работа с Диаграммами

В настоящий момент существует широкий ряд программных продуктов, позволяющих, в дополнение к табличным отчетам, получать графические отчеты (диаграммы). Одними из наиболее известных продуктов, выполняющих эти функции, являются 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С:Предприятия внедрить объект «Диаграмма», используя специальную кнопку инструментальной панели или через главное меню <Таблица>-<Вставить рисунок>-<Диаграмма>.

Процесс внедрения объекта «Диаграмма» в табличный документ подробно описан в документации к 1С:Предприятию (см. книгу «Руководство по конфигурированию и администрированию»). После внедрения объект нужно активизировать, например, двойным щелчком указателя мыши, и настроить его внешний вид.

Настройка диаграммы обычно проводится на этапе конфигурирования. Задача настройки состоит в определении формата, специфического для каждой из областей диаграммы, их размера и расположения.

В свойствах объекта есть закладка «Текст». В поле «Текст» этой закладки нужно внести вызов процедуры, управляющей объектом диаграммы. Сам объект «Диаграмма», в момент вызова этой процедуры, является текущим объектом таблицы (см. атрибут объекта «Таблицы» ТекущийОбъект) и передается в процедуру как параметр. Например, этот вызов будет выглядеть так:

ПостроитьДиаграмму(Таб.ТекущийОбъект);

Наполнение диаграммы данными осуществляется в теле вызываемой процедуры с помощью атрибутов и методов данного объекта.

Таким образом, во всех программных модулях доступ к атрибутам и вызов методов деловой графики может выполняться только при помощи переменной со ссылкой на объект типа «Диаграмма». Данный объект внедряется в таблицу 1С:Предприятие при конфигурировании. При инициировании построения диаграммы, значение этого объекта в качестве фактического параметра передается в обрабатывающую процедуру, где ссылка на объект становится доступна через идентификатор фиктивного параметра. Чтобы вызвать метод деловой графики, имя метода (с указанием необходимых параметров) пишется через точку после идентификатора переменной.

См. также: ТекущийОбъект

Объект «Диаграмма» — основные принципы и понятия,
используемые при визуальной настройке и управлении

Диаграмма представляет собой определенную фигуру, которая строится на основе матрицы данных размером [M, N], где N — количество серий значений (далее серий), М — количество точек, замерами в которых получены значения серий.

Для количественной ориентации в диаграмме используются координатные оси. Каждому значению, отмеченному на оси, соответствует поясняющее имя (метка). В зависимости от типа координатной оси, метка может быть рассчитанной, или определяться при заполнении данными.

С точки зрения настройки, диаграмма состоит из четырех областей:

· область диаграммы — совокупность всех областей образующих диаграмму;

· область построения диаграммы — содержит координатное пространство и изображенную на нем фигуру;

· заголовок диаграммы;

· легенда — вспомогательная область, содержащая список меток, соответствующих сериям.

Настройка размеров и положения областей диаграммы производится визуально. Подробнее о порядке визуальной настройки формата диаграммы следует читать в книге «Руководство по конфигурированию и администрированию».

Атрибуты диаграммы

Заголовок

Заголовок диаграммы.

Синтаксис:

Заголовок

Англоязычный синоним:

TitleText

Описание:

Атрибут Заголовок содержит текст заголовка диаграммы. По умолчанию имеет значение «Диаграмма».

Пример:

Диаграмма.Заголовок = "Пример использования диаграммы";

Методы диаграммы

КоличествоСерий

Явно устанавливает количество серий диаграммы.

Синтаксис:

КоличествоСерий(<Количество>)

Англоязычный синоним:

SeriesCount

Параметры:

<Количество>

Числовое выражение, которое задает количество серий диаграммы.

Возвращаемое значение:

Текущее значение количества серий (до исполнения метода).

Описание:

Метод КоличествоСерий явно устанавливает количество серий диаграммы. Количество серий может быть изменено и в режиме визуальной настройки. Альтернативой использования этого метода является неявное изменение количества серий: в случае если в метод, одним из параметров, использующий номер серии, передается значение превышающее количество серий, количество серий будет неявно увеличено.

Пример:

Диагр.КоличествоСерий(3);       // установим количество серий 3

КоличествоТочек

Явно устанавливает количество точек диаграммы.

Синтаксис:

КоличествоТочек(<Количество>)

Англоязычный синоним:

PointsCount

Параметры:

<Количество>

Числовое выражение, которое задает количество точек диаграммы.

Возвращаемое значение:

Текущее значение количества точек (до исполнения метода).

Описание:

Метод КоличествоТочек явно устанавливает количество точек диаграммы. Количество точек может быть изменено и в режиме визуальной настройки. Альтернативой использования этого метода является неявное изменение количества точек: в случае если в метод, одним из параметров, использующий номер точек, передается значение превышающее количество точек, количество точек будет неявно увеличено.

Пример:

Диагр.КоличествоТочек(4);      // установим количество точек 4

УстановитьИмяСерии

Устанавливает имя серии.

Синтаксис:

УстановитьИмяСерии(<НомерСерии>, <Имя>)

Англоязычный синоним:

SetSeriesLabel

Параметры:

<НомерСерии> | Числовое выражение, которое задает номер серии, для которой устанавливается имя.
<Имя> | Строка, используемая для обозначения серии в легенде и подписях к координатным осям.

Описание:

Метод УстановитьИмяСерии явно устанавливает имя для заданного номера серии.

Пример:

Диаграмма.УстановитьИмяСерии(СчетчикСерий, Запрос.Товар.Наименование);

УстановитьИмяТочки

Устанавливает имя точки.

Синтаксис:

УстановитьИмяТочки(<НомерТочки>, <Имя>)

Англоязычный синоним:

SetPointLabel

Параметры:

<НомерТочки> | Числовое выражение, которое задает номер точки, для которой устанавливается имя.
<Имя> | Строка, используемая для обозначения точки в подписях к координатным осям.

Описание:

Метод УстановитьИмяТочки явно устанавливает имя для заданного номера точки.

Пример:

Диаграмма.УстановитьИмяТочки(1, "Продано на сумму");

ЦветСерии

Устанавливает цвет серии.

Синтаксис:

ЦветСерии(<НомерСерии>, <Красный>, <3еленый>, <Синий>)

Англоязычный синоним:

SetSeriesColor

Параметры:

<НомерСерии> | Числовое выражение, которое задает номер серии, для которой устанавливается цвет.
<Красный> | Число, задающее красную компоненту цвета.
<3еленый> | Число, задающее зеленую компоненту цвета.
<Синий> | Число, задающее синюю компоненту цвета.

Описание:

Метод ЦветСерии устанавливает RGB цвет для серии <НомерСерии>. По умолчанию первые 54 серии имеют уникальный цвет. Серии с большими номерами изображаются в диаграмме повторяя уже использованный цвет, но перестают окрашиваться сплошным цветом, используя более сложный способ заливки.

Пример:

Диаграмма.ЦветСерии(1, 35, 67, 89);

АвтоУстановкаИменСерий

Автоматическая установка имен серий.

Синтаксис:

АвтоУстановкаИменСерий(<флаг>)

Англоязычный синоним:

AutoSeriesLabels

Параметры:

<Флаг>

Числовое значение: 1 — разрешающий. 0 — запрещающий автогенерацию имен серий.

Описание:

Метод АвтоУстановкаИменСерий устанавливает режим автогенерации имен серий диаграммы. В случае, если автогенерация имен разрешена, сериям диаграммы будут автоматически присваиваться имена Серия1, Серия2, ..., Се-рияN. По умолчанию автогенерация запрещена.

Пример:

Диаграмма.АвтоУстановкаИменСерий(1);

АвтоУстановкаИменТочек

Автоматическая установка имен точек.

Синтаксис:

АвтоУстановкаИменТочек(<флаг>)

Англоязычный синоним:

AutoPointLabels

Параметры:

<Флаг>

Числовое значение: 1 — разрешить автогенерацию имен точек. 0 — запретить автогенерацию имен точек.

Описание:

Метод АвтоУстановкаМменТочек устанавливает режим автогенерации имен точек диаграммы. В случае, если автогенерация имен разрешена, точкам диаграммы будут автоматически присваиваться имена 1, 2, ..., N. По умолчанию автогенерация запрещена.

Пример:

Диаграмма.АвтоУстановкаИменТочек(1);

УстановитьЗначение

Установка значения в заданной точке и серии.

Синтаксис:

УстановитьЗначение(<НомерТочки>, <НомерСерии>, <Значен>, <Расшифровка>)

Англоязычный синоним:

SetValue

Параметры:

<НомерТочки> | Числовое выражение, которое задает номер точки, для которой устанавливается значение.
<НомерСерии> | Числовое выражение, которое задает номер серии, для которой устанавливается значение.
<3начен> | Числовое значение — задаваемое значение диаграммы.
<Расшифровка> | Необязательный параметр. Значение любого типа, используемое для расшифровки диаграммы при помощи предопределенной процедуры ОбработкаЯчейкиТаблицы.

Описание:

Метод УстановитьЗначение устанавливает значение серии <НомерСерии> в точке <НомерТочки> равным <Значен> с возможностью его последующей расшифровки.

Расшифровка может быть реализована при помощи предопределенной процедуры ОбработкаЯчейкиТаблицы. Вызов предопределенной процедуры ОбработкаЯчейкиТаблицы на исполнение производится в системе 1С:Предприятие по двойному щелчку мыши в табличном документе на выбранной точке диаграммы. При этом значение расшифровки <Расшифровка> этой точки диаграммы автоматически передается в качестве первого параметра в вызове предопределенной процедуры.

Пример:

Диаграмма.УстановитьЗначение(1, 5, 14);

См. также: ОбработкаЯчейкиТаблицы

Обновление

Установка режима обновления диаграммы.

Синтаксис:

Обновление(<флаг>)

Англоязычный синоним:

RedrawFlag

Параметры:

<Флаг>

Числовое значение: 1 — разрешить перерисовку диаграммы. 0 — запретить перерисовку диаграммы.

Описание:

Метод Обновление устанавливает режим обновления диаграммы. Запрет перерисовки диаграммы рекомендуется в целях ускорения работы системы на ьремя наполнения данными. По умолчанию перерисовка разрешена.

Пример:

Диаграмма.Обновление(1);         // включим перерисовку

Очистить

Очищает диаграмму.

Синтаксис:

Очистить()

Англоязычный синоним:

Clear

Описание:

Метод Очистить очищает диаграмму, т. е. удаляет все ранее установленные значения; количество серий и точек устанавливает нулевым; стирает все ранее установленные имена.

Пример:

Диагр.Очистить();      // очистить диаграмму

Пример использования

Предположим, что проектируется отчет о продаже товара. Внешний вид отчета визуально настроен. Мы предполагаем, что будет построена объемная гистограмма с одной точкой («Продано на сумму») и количеством серий равным количеству товаров.

Фрагментом модуля отчета, является процедура ПостроитьДиаграмму. Вызов этой процедуры находится в закладке «Текст» свойств внедренного в табличный документ, объекта «Диаграмма», он выглядит так:

ПостроитьДиаграмму(Таб.ТекущийОбъект, Запрос)

Параметрами процедуры являются:

· Объект «Диаграмма», переданный как текущий объект табличного документа (подробнее см. в главе Работа с таблицами);

· запрос к базе данных, сформированный и выполненный ранее.

Пример:

Процедура ПостроитьДиаграмму(Диаграмма, Запрос)

   //На время наполнения данными, запретим перерисовку

   Диаграмма.Обновление(0);

   // задаем текст заголовка

   Диаграмма.Заголовок = "Пример использования диаграммы";

   // задаем текст метки точки

   Диаграмма.УстановитьИмяТочки(1, "Продано на сумму");

   СчетчикСерий = 1;

   Пока Запрос.Группировка("Товар") = 1 Цикл

      ПродСумма = Запрос.СуммаПродано;

      // задаем очередное значение

      Диаграмма.Значение(1, СчетчикСерий, ПродСумма);

      // задаем метку очередной серии

      Диаграмма.УстановитьИмяСерии(СчетчикСерий, Запрос.Товар.Наименование)

      СчетчикСерий = СчетчикСерий + 1;

   КонецЦикла;

   // После заполнения данных, включим перерисовку

   Диаграмма.Обновление(1);

КонецПроцедуры


Part37

Глава 37
Работа с Файлами

Для работы с файлами в системе используется специальный агрегатный тип данных — ФС. Механизм работы с файлами предназначен для обеспечения возможности манипулирования файлами непосредственно из встроенного языка программы 1С:Предприятия.

Контекст работы с Файлами

Во всех программных модулях для работы с файлами следует использовать методы объекта типа «ФС». По умолчанию в системе всегда доступен уже существующий объект с именем ФС (англоязычный синоним — FS) (имя существующего объекта совпадает с названием типа данных), к которому можно непосредственно применять методы объекта ФС. Кроме того, можно создать произвольное число объектов типа «ФС» при помощи функции СоздатьОбъект. Чтобы вызвать метод объекта, имя метода (с указанием необходимых параметров) пишется через точку после имени объекта.

Англоязычный синоним ключевого слова ФС — FS.

Пример:

* Здесь приведены примеры различных способов вызова методов объекта «ФС».

ФС.УдалитьФайл("Текст1.txt");

ВАКФайлы = СоздатьОбъект("ФС");

ВАКФайлы.УдалитьФайл("Текст3.txt");

Методы объекта «ФС»

ВыбратьФайл

Открывает окно диалога выбора/сохранения файла.

Синтаксис:

ВыбратьФайл(<ТипДиалога>, <ИмяФайла>, <ИмяНачКаталога>, <3аголовокОкна>, <Фильтр>,

            <Расширение>, <Таймаут>)

Англоязычный синоним:

SelectFile

Параметры:

<TипДиaлoгa> | Числовое выражение, значение которого определяет тип открываемого диалога. Допустимые значения: 0 — диалог типа «открыть», 1 — диалог типа «сохранить».
<ИмяФайла> | Имя переменной, содержащей строковое значение с именем файла. В эту же переменную система возвращает имя выбранного файла.
<ИмяНачКаталога> | Имя переменной, содержащей строковое значение с именем начального каталога. В эту же переменную система возвращает имя выбранного каталога.
<ЗаголовокОкна> | Строковое выражение, с помощью которого можно задать заголовок открываемого окна.
<Фильтр> | Строковое выражение, с помощью которого можно задать список фильтров отбора файлов. Фильтр состоит из двух частей, разделенных сиволом "" (вертикальная черта): строки представления, которая отображается в окне выбора файла, и непосредственно строки маски. В строке маски можно использовать символ "*", что означает наличие любого числа произвольных символов. Символ "?" в строке маски означает наличие одного произвольного символа. Одновременно можно задавать несколько фильтров в виде списка, в качестве разделителей используется символ "|" (вертикальная черта). Например, список из двух фильтров: "Текст(*.txt)|*.txt| Таблицы(*.mxl)|*.mxl"
<Расширение> | Строковое выражение, с помощью которого можно задать расширение файла по умолчанию, которое используется системой при записи файла.
<Таймаут> | Необязательный параметр. Числовое выражение, значение которого задает время ожидания системы (в секундах) на отклик пользователя.

Возвращаемое значение:

Число: 0 — если в окне диалога нажата кнопка «Отмена»; 1 — если в окне диалога нажата кнопка «ОК», при этом в переменную <ИмяФайла> возвращается выбранное имя файла, а в переменную <ИмяНачКаталога> возвращается имя выбранного каталога; -1 (минус единица) — закончилось время <Таймаут> ожидания отклика пользователя.

Описание:

Метод ВыбратьФайл открывает окно диалога выбора/сохранения файла.

Пример:

* В данном примере приведена процедура вызова диалога выбора файла.

Процедура УдалФ()

   ИмяВыбрФайла = "";

   ИмяПути="";

   Если ФС.ВыбратьФайл(0, ИмяВыбрФайла, ИмяПути, "Выберите файл",

           "Все файлы (*.*)!*.*", , ) = 1 Тогда

      ФС.УдалитьФайл(ИмяПути + ИмяФайла);

   КонецЕсли;

КонецПроцедуры

ВыбратьФайлКартинки

Открывает окно диалога выбора/сохранения файла картинки.

Синтаксис:

ВыбратьФайлКартинки(<ТипДиалога>, <ИмяФайла>, <ИмяНачКаталога>, <3аголовокОкна>,

                    <Расширение>, <Таймаут>)

Англоязычный синоним:

SelectPictFile

Параметры:

<ТипДиалога> | Числовое выражение, значение которого определяет тип открываемого диалога. Допустимые значения: 0 — диалог типа «открыть», 1 — диалог типа «сохранить».
<ИмяФайла> | Имя переменной, содержащей строковое значение с именем файла. В эту же переменную система возвращает имя выбранного файла.
<ИмяНачКаталога> | Имя переменной, содержащей строковое значение с именем начального каталога. В эту же переменную система возвращает имя выбранного каталога.
<3аголовокОкна> | Строковое выражение, с помощью которого можно задать заголовок открываемого окна.
<Расширение> | Строковое выражение, с помощью которого можно задать расширение файла по умолчанию, которое используется системой при записи файла.
<Таймаут> | Необязательный параметр. Числовое выражение, значение которого задает время ожидания системы (в секундах) на отклик пользователя.

Возвращаемое значение:

Число: 0 — если в окне диалога нажата кнопка «Отмена»; 1 — если в окне диалога нажата кнопка «ОК», при этом в переменную <ИмяФайла> возвращается выбранное имя файла, а в переменную <ИмяНачКаталога> возвращается имя выбранного каталога; -1 (минус единица) — закончилось время <Таймаут> ожидания отклика пользователя.

Описание:

Метод ВыбратьФайлКартинки открывает окно диалога (с возможностью предварительного просмотра) выбора/сохранения файла картинки.

Пример:

* В данном примере приведена процедура вызова диалога выбора файла картинки.

// Фото — Объект типа "Картинка"

Процедура ЗагрКарт()

   ИмяВыбрФайла = "";

   ИмяПути = "";

   // Выбор файла с просмотром

   Если ФС.ВыбратьФайлКартинки(0, ИмяВыбрФайла, ИмяПути,

         "Выберите файл", "bmp", ) = 1 Тогда

      Фото.Загрузить(ИмяПути + ИмяВыбрФайла);

   КонецЕсли;

КонецПроцедуры

ВыбратьКаталог

Открывает окно диалога выбора каталога.

Синтаксис:

ВыбратьКаталог(<ИмяКаталога>, <3аголовок>, <Таймаут>)

Англоязычный синоним:

SelectDirectory

Параметры:

<ИмяКаталога> | Имя переменной, содержащей строковое значение с именем начального каталога. В эту же переменную система возвращает имя выбранного каталога.
<3аголовок> | Строковое выражение, с помощью которого можно задать заголовок открываемого окна.
<Таймаут> | Необязательный параметр. Числовое выражение, значение которого задает время ожидания системы (в секундах) на отклик пользователя.

Возвращаемое значение:

Число: 0 — если в окне диалога нажата кнопка «Отмена»; 1 — если в окне диалога нажата кнопка «ОК», при этом в переменную <ИмяНачКаталога> возвращается имя выбранного каталога; -1 (минус единица) — закончилось время <Таймаут> ожидания отклика пользователя.

Описание:

Метод ВыбратьКаталог открывает окно диалога выбора каталога.

Пример:

* В данном примере приведена процедура вызова диалога выбора каталога.

Функция УстКат(ИмяПути)

   Если ФС.ВыбратьКаталог(ИмяПути, "Выберите каталог", 10) = 1 Тогда

      Возврат ИмяПути;

   Иначе

      Возврат КаталогПользователя();

   КонецЕсли;

КонецПроцедуры

СуществуетФайл

Проверяет существование файла.

Синтаксис:

Существуетфайл(<ИмяФайла>)

Англоязычный синоним:

ExistFile

Параметры:

<ИмяФайла>

Строковое выражение с именем файла.

Возвращаемое значение:

Число: 1 — файл существует; 0 — не существует.

Описание:

Метод СуществуетФайл проверяет существование файла.

Пример:

Процедура СущФ(ИмяФайла)

   Если ФС.СуществуетФайл(ИмяФайла) = 1 Тогда

      Сообщить("Файл " + ИмяФайла + " — существует");

   КонецЕсли;

КонецПроцедуры

КопироватьФайл

Копирует файл.

Синтаксис:

КопироватьФайл(<ИмяФайлаИсточника>, <ИмяФайлаПриемника>, <ФлагОтказаПерезаписи>)

Англоязычный синоним:

FileCopy

Параметры:

<ИмяФайлаИсточника> | Строковое выражение с именем файла источника.
<ИмяФайлаПриемника> | Строковое выражение с именем файла приемника.
<ФлагОтказаПерезаписи> | Числовое выражение: 0 — при существовании файла приемника заменяет его на копируемый; 1 — при существовании файла приемника копирования не производится.

Описание:

Метод КопироватьФайл копирует файл-источник в файл-приемник.

Пример:

* В данном примере приведена процедура копирования файла.

Процедура КопирФ()

   ФС.КопироватьФайл(ИмяВыбрФайла, ФПриемник, 1);

КонецПроцедуры

УдалитьФайл

Удалить файл.

Синтаксис:

УдалитьФайл(<ИмяФайла>)

Англоязычный синоним:

DeleteFile

Параметры:

<ИмяФайла>

Строковое выражение с именем удаляемого файла.

Описание:

Метод УдалитьФайл удаляет указанный файл.

Пример:

* В данном примере приведена процедура удаления файла.

Процедура УдалФ()

   ФС.УдалитьФайл(ИмяФайла);

КонецПроцедуры

ПереименоватьФайл

Переименовать файл.

Синтаксис:

ПереименоватьФайл(<ИмяФайлаИсточника>, <ИмяФайлаПриемника>, <ФлагПерезаписи>)

Англоязычный синоним:

MoveFile

Параметры:

<ИмяФайлаИсточника> | Строковое выражение с именем файла источника.
<ИмяФайлаПриемника> | Строковое выражение с требуемым именем файла.
<ФлагПерезаписи> | Числовое выражение: 0 — запрещает перемещение файла между дисками и при существовании файла приемника копирования не производится; 1 — разрешает перемещение файла (только для файлов) между дисками и при существовании файла приемника замещает его на копируемый.

Описание:

Метод ПереименоватьФайл выполняет переименование (перемещение) указанного файла.

Пример:

* В данном примере приведена процедура переименования файла.

Процедура ПереимФ()

   ФС.ПереименоватьФайл(Результат, ФПриемник, 1);

КонецПроцедуры

НайтиПервыйФайл

Открывает выборку файлов по заданной маске и находит первый файл.

Синтаксис:

НайтиПервыйФайл(<МаскаИмени>)

Англоязычный синоним:

FindFirstFile

Параметры:

<МаскаИмени>

Строковое выражение с маской имен файлов. В строке маски можно использовать символ "*", что означает наличие любого числа произвольных символов. Символ "?" в строке маски означает наличие одного произвольного символа.

Возвращаемое значение:

Строка с именем найденного файла.

Описание:

Метод НайтиПервыйФайл находит первый файл и открывает выборку файлов по заданной маске.

Замечание. Методы НайтиПервыйФайл и НайтиСледующийФайл возвращают имена файлов в той же последовательности, как это делает команда Dir операционной системы MS DOS, т. е. если задана маска "*.*"для некорневого каталога, первым возвращаемым значением будет "." — обозначающая ссылку на текущий каталог. Имя следующего файла будет ".." — обозначающее ссылку на каталог уровнем выше. При получении следующих файлов возвращаемым значением будет имя найденного файла.

Пример:

* В данном примере приведена процедура открытия выборки файлов по заданной маске.

Процедура ПервФ()

   Результат = ФС.НайтиПервыйФайл("*.*");

КонецПроцедуры

См. также: НайтиСледующийФайл

НайтиСледующийФайл

Находит следующий файл по открытой выборке файлов.

Синтаксис:

НайтиСледующийФайл()

Англоязычный синоним:

FindNextFile

Возвращаемое значение:

Строка с именем найденного файла.

Описание:

Метод НайтиСледующийФайл находит следующий файл по открытой выборке файлов.

Пример:

* В данном примере приведена процедура взятия следующего файла выборки файлов.

Процедура СледФ()

   Результат = ФС.НайтиСледующийФайл();

КонецПроцедуры

См. также: НайтиПервыйФайл

АтрибутыФайла

Возвращает атрибуты файла.

Синтаксис:

АтрибутыФайла(<ИмяФайла>, <РазмерФайла> , <АтрибутыФайла>, <ВремяСоздания>,

            <ВремяПоследнДоступа>, <ВремяПоследнЗаписи>, <РасширенноеИмяФайла>)

Англоязычный синоним:

GetFileAttr

Параметры:

<ИмяФайла> | Строковое выражение с именем файла.
<РазмерФайла> | Возвращаемое Числовое значение размера файла в байтах.
<АтрибутыФайла> | Возвращаемое строковое значение длиной 9 символов, в котором закодированы атрибуты файла. Символы могут принимать значения "0" или "1": Первый символ: если "1" — файл только для чтения; Второй символ: если "1" — скрытый файл; Третий символ: если "1" — системный файл; Четвертый символ: если "1" — каталог; Пятый символ: если "1" — архивный файл; Шестой символ: если "1" — обычный файл (все другие атрибуты не установлены); Седьмой символ: если "1" — временный файл; Восьмой символ: если " 1" — файл, сжатый каким-либо архиватором; Девятый символ: если "1" — нет доступа к файлу. Для проверки атрибута можно применять выражение: Цел(ПолученныйАтрибут/КодАтрибута)/2 где кодАтрибута — 1/2/4/16/32... это выражение возвращает 1 или 0, в зависимости от того, установлен атрибут или нет.
<ВремяСоздания> | Возвращаемое строковое значение, содержащее дату и время создания файла.
<ВремяПоследнДоступа> | Возвращаемое строковое значение, содержащее дату и время последнего доступа к файлу.
<ВремяПоследнЗаписи> | Возвращаемое строковое значение, содержащее дату и время последней записи файла.
<РасширенноеИмяФайла> | Возвращаемое строковое значение, содержащее полное имя файла.

Описание:

Метод АтрибутыФайла считывает атрибуты файла и записывает их значения в передаваемые параметры.

Пример:

* В данном примере приведена процедура считывания атрибутов файла.,

Лроцедура АттрФ()

   ФС.АтрибутыФайла(ИмяВыбрФайла, A, B, C, D, E, F);

КонецПроцедуры

СоздатьКаталог

Создает новый каталог файлов.

Синтаксис:

СоздатьКаталог(<ИмяКат>)

Англоязычный синоним:

CreateDirectory

Параметры:

<ИмяКат>

Строковое выражение с именем создаваемого каталога.

Описание:

Метод СоздатьКаталог создает новый каталог файлов.

Пример:

* В данном примере приведена процедура создания нового каталога файлов.

Процедура СоздДир()

   ФС.СоздатьКаталог(ИмяВыбрДир);

КонецПроцедуры

УдалитьКаталог

Удаляет каталог файлов.

Синтаксис:

УдалитьКаталог(<ИмяКат>)

Англоязычный синоним:

RemoveDirectory

Параметры:

<ИмяКат>    Строковое выражение с именем удаляемого каталога файлов.

Описание:

Метод УдалитьКаталог удаляет каталог файлов.

Пример:

* В данном примере приведена процедура удаления каталога файлов.

Процедура УдалДир()

   ФС.УдалитьКаталог(ИмяВыбрДир);

КонецПроцедуры

УстТекКаталог

Устанавливает текущий каталог файлов.

Синтаксис:

УстТекКаталог(<ИмяКат>)

Англоязычный синоним:

GetCurrentDirectory

Параметры:

<ИмяКат>

Строковое выражение с именем текущего каталога файлов.

Описание:

Метод УстТекКаталог устанавливает текущий каталог файлов.

Пример:

* В данном примере приведена процедура установки текущего каталога файлов

Процедура УстТекДир()

   ФС.УстТекКаталог(ИмяВыбрДир);

КонецПроцедуры

См. также: ТекКаталог

ТекКаталог

Возвращает текущий каталог файлов.

Синтаксис:

ТекКаталог()

Англоязычный синоним:

GetCurrentDirectory

Возвращаемое значение:

Строковое значение имени текущего каталога файлов.

Описание:

Метод ТекКаталог возвращает строковое значение имени текущего каталога файлов.

Пример:

ТекКат = ФС.ТекКаталог();

См. также: УстТекКаталог

WindowsКаталог

Возвращает имя Windows директории.

Синтаксис:

WindowsКаталог()

Англоязычный синоним:

GetWindowsDirectory

Возвращаемое значение:

Строковое значение — имя Windows директории.

Описание:

Метод WindowsКаталог возвращает имя Windows директории.

Пример:

WinKaT = ФC.WindowsКаталог();

СвободноеМестоНаДиске

Определить размер свободного дискового пространства.

Синтаксис:

СвободноеМестоНаДиске(<ИмяДиска>)

Англоязычный синоним:

GetDiskFreeSpace

Параметры:

<ИмяДиска>

Строковое выражение с именем диска.

Возвращаемое значение:

Численое значение — размер свободного дискового пространства в байтах.

Описание:

Метод СвободноеМестоНаДиске возвращает численое значение размера

свободного дискового пространства.

Пример:

* В данном примере приведена процедура определения свободного дискового пространства диска С:

Процедура РазмД()

   Рез = ФС.СвободноеМестоНаДиске("С:");

КонецПроцедуры


Part38

Глава 38
Работа с базами данных формата DBF

Основные понятия

Для облегчения понимания материала данного раздела читателем, не имеющим опыта работы с базами данных, ниже приводятся пояснения терминов, использованных при описании средства встроенного языка для работы с базами данных — агрегатного типа данных XBase.

Поля и записи

Если Вы не знакомы с концепцией базы данных, то ее можно себе представить в виде упорядоченного хранилища информации типа картотеки. Хорошим примером базы данных может служить телефонный справочник организации. Он содержит фамилии, номера телефонов и номера комнат всех сотрудников организации. Каждая строка справочника соответствует одной записи, а каждая колонка — полю. Каждое поле имеет наименование и характеристики информации для хранения которой оно предназначено: тип, длина, точность. Содержимое поля для конкретной записи называется значением поля. Отрывок телефонного справочника, приведенный ниже, иллюстрирует вышесказанное:

 | Поле | Поле | Поле
 | "Фамилия" | "№ комнаты" | "Телефон"
 | Иванов | 25 | 513
Запись № 2 —> | Петров | 31 | 274
 | Сидоров | 25 | 513
 | … | … | …

Таблица, структура таблицы, файл базы данных

Весь справочник целиком в терминах баз данных называется таблицей. Состав входящих в таблицу полей определяет структуру таблицы, а состав входящих в таблицу записей — ее содержание. Каждая запись в таблице состоит из того же набора полей, что и таблица целиком, поэтому иногда употребляется термин структура записи. Это понятие адекватно структуре таблицы, хотя употребление первого термина представляется более корректным, т.к. таблица имеет структуру независимо от того, имеется ли в ней хотя бы одна запись.

Реализация баз данных формата DBF подразумевает, что каждая таблица хранится в отдельном файле. Поэтому в дальнейшем мы будем применять термин «файл базы данных» или «файл БД», имея в виду таблицу базы данных.

Индексы, выражения индекса и фильтра

Для организации упорядочивания содержимого файла БД и поиска в ней по значению одного или нескольких полей применяется механизм индексов. Его применение можно сравнить с сортировкой картотеки по определенному признаку (совокупности признаков). Однако, в отличие от картотеки, файл БД может иметь сразу несколько индексов, и, соответственно, являться упорядоченным одновременно по нескольким признакам. Каждый индекс имеет наименование, признак уникальности, выражение индекса и фильтр. Наименование индекса используется для идентификации индекса. Выражение индекса и фильтр представляют собой написанные на специальном языке выражения, вычисление значения которых для каждой записи позволяет определить ее место при упорядочивании и необходимость помещения ее в упорядоченный список (индекс может содержать упоминание не обо всех записях таблицы, а только об удовлетворяющих выражению фильтра). Подробнее выражения индекса и фильтра, применительно к объектам XBase, рассмотрены в конце данного раздела. Уникальный индекс (имеющий установленным признак уникальности) позволяет иметь в индексе ссылки на записи только с различным значением индексного выражения.

Индексный файл

Индексы хранятся в индексном файле. Индексный файл может содержать информацию более чем об одном индексе.

Назначение агрегатного типа данных XBase

Для работы с базами данных формата DBF в системе может использоваться специальный агрегатный тип данных — XBase. Механизм работы с базами данных формата DBF предназначен для обеспечения возможности манипулирования ими непосредственно из встроенного языка программы 1С:Предприятие. Каждый XBase-объект может быть связан с одним файлом базы данных.

Атрибуты объекта и поля базы данных

Объекты XBase имеют динамически изменяемый набор атрибутов, состав и тип которых зависит от структуры файла базы данных, с которым связан конкретный объект. Объект содержит в своих атрибутах информацию об одной текущей записи. Каждому полю файла базы данных соответствует один атрибут объекта. Наименование атрибута совпадает с именем поля.

Запись изменений в базу данных

Каждый объект представляет собой структуру данных, расположенных в памяти компьютера и изменение содержимого его атрибутов не вызывает немедленного изменения в файлах базы данных. При включенном режиме автосохранения запись содержимого объекта в файлы БД происходит при изменении позиционирования (переход с следующей записи, поиск по ключу и т. д.), при выключенном режиме автосохранения запись изменений происходит только при вызове соответствующего метода объекта.

Работа с индексными файлами

Следует иметь в виду, что одновременно XBase-объект может быть связан не более, чем с одним индексным файлом. Все изменения в базе данных, сделанные в сеансе работы с одним индексным файлом, никак не отражаются на остальных. Поэтому не рекомендуется иметь более одного индексного файла для БД. В противном случае, после каждого открытия БД с индексным файлом, отличным от открытого в предыдущем сеансе работы с базой, следует производить переиндексацию (обновление содержимого индексного файла).

Удаление записей

Удаление записи из базы данных не приводит к физическому уничтожению ее на диске. В этом случае в специальном служебном поле записи, не доступном обычными средствами, ставится пометка об удалении. На записи, помеченные удаленными, позиционирования не происходит, если не включен специальный режим просмотра удаленннх записей. Имеется набор методов для включения/выключения специального режима просмотра, а также определения, является ли спозиционированная запись удаленной, и восстановления удаленной записи.

Метод сжатия базы вызывает физическое уничтожение записей, помеченных как удаленные. Метод очистки базы вызывает физическое уничтожение всех записей. После применения этих методов восстановление удаленных записей становится невозможным.

Создание базы данных, индекса, индексного файла

Помимо работы с существующими базами данных, агрегатный тип XBase имеет набор методов, позволяющих создать новую базу данных произвольной структуры, новые индексы и новый индексный файл. Следует отметить, что, если использование методов, изменяющих структуру БД, возможно только для объектов, не связанных с базой данных (т. е. для вновь создаваемых БД), то создание новых индексов и индексного файла возможно как для создаваемых БД, так и для уже существующих и открытых.

Ограничения

Основное назначение объектов XBase — организация экспорта-импорта информации в/из внешних файлов формата DBF. Использование методов Xbase для доступа непосредственно к данным информационной базы системы 1С:Предприятие не рекомендуется.

Объекты XBase не поддерживают поля типа memo (см. ДобавитьПоле).

Поддерживаемые объектом XBase фукции, которые можно использовать в выражениях и фильтрах индексов перечислены в разделе «Выражение и фильтр индекса».

Объекты XBase поддерживают только монопольный доступ к файлам. XBase-объекты поддерживают индексные файлы в формате CDX. Однако, использование внешними программами (например, FoxBase) индексных файлов, созданных с помощью объектов XBase, так же, как и использование объектами индексных файлов, созданных внешними программами, не рекомендуется из-за возможной несовместимости версий.

Контекст работы с XBase

Во всех программных модулях для работы с базами данных формата DBF следует использовать объекты типа XBase. Можно создать произвольное число объектов типа XBase при помощи функции СоздатьОбъект. Чтобы обратиться к атрибуту объекта или вызвать его метод, имя атрибута или метода (с указанием необходимых параметров) пишется через точку после имени объекта.

Русскоязычное написание ключевого слова XBase отсутствует.

Пример:

ДБФ = СоздатьОбъект("XBase");

ИмяФайла = "";

ИмяПути = "";

ФС.ВыбратьФайл(0, ИмяФайла, ИмяПути, , "*.*", , );

ПутьДБ = ИмяПути + ИмяФайла;

ДБФ.ОткрытьФайл(ПутьДБ);

Если ДБФ.Открыта() = 1 Тогда

   Предупреждение("База открыта", 2);

   ДБФ.Первая();

   ФИО = ДБФ.FIO;      // Подразумевается, что поле FIO имеется в открытой БД

   Предупреждение("Первым в " + ПутьДБ + " упомянут т." + ФИО, 5);

Иначе

   Предупреждение("НЕ смогли открыть Базу!", 2);

КонецЕсли;

Атрибуты объекта XBase

<Поле>

Предоставляет доступ к полю записи с именем «Поле». Имя поля должно совпадать с именем поля базы данных, с которой связан объект.

Синтаксис:

<Поле>

Описание:

Атрибут <Поле> предоставляет доступ к полю записи с именем «Поле». В тексте программного модуля под термином <Поле> понимается имя конкретного столбца файла базы данных, с которым связан объект.

Атрибут имеет смысл только если файл базы данных находится в открытом состоянии.

Состав атрибутов объекта может динамически изменяться в процессе исполнения 1С:Предприятия и определяется набором полей файла базы данных, с которым объект связан в данных момент времени.

Пример:

ФИО = ДБФ.FIO;

Ключ

Предоставляет доступ к агрегатному типу данных типа «Ключ».

Синтаксис:

Ключ

Англоязычный синоним:

Key

Описание:

Агрегатный тип данных типа «Ключ» имеет только атрибуты. Состав атрибутов полностью повторяет атрибуты XBase-объекта за исключением того, что отсутствует атрибут «Ключ». Значения атрибутов используются XBase-объектом для вычисления выражения индекса при использовании метода НайтиПоКлючу.

Пример:

ДБФ.Ключ.FIO = ФИО;

ЗаписьНайдена = ДБФ.НайтиПоКлючу(0);

Методы объекта XBase

СоздатьФайл

Создать новый файл базы данных.

Синтаксис:

СоздатьФайл(<ПутьКБазе>, <ПутьКИндексу>)

Англоязычный синоним:

CreateFile

Параметры:

<ПутьКБазе> | Строковое выражение, содержащее путь к файлу базы данных формата DBF.
<ПутьКИндексу> | Необязательный параметр. Строковое выражение, содержащее путь к индексному файлу базы данных.

Описание:

Метод СоздатьФайл создает новый файл базы данных формата DBF. Если база с таким именем существует, то выдается ошибка.

Пример:

ДБФ = СоздатьОбъект("XBase");

// Определение полей и индексов новой БД

.....................

.....................

// Теперь физически создаем базу

ДБФ.СоздатьФайл("mydb.dbf", "mydb.cdx");

См. также: ДобавитьПоле, ДобавитьИндекс

ОткрытьФайл

Открыть существующую базу.

Синтаксис:

ОткрытьФайл(<ПутьКБазе>, <ПутьКИндексу>, <ТолькоЧтение>)

Англоязычный синоним:

OpenFile

Параметры:

<ПутьКБазе> | Строковое выражение, содержащее путь к файлу базы данных формата DBF.
<ПутьКИндексу> | Необязательный параметр. Строковое выражение, содержащее путь к индексному файлу базы данных.
<ТолькоЧтение> | Необязательный параметр. Число: 1 — файл открывается в режиме только чтение; 0 — файл открывается в режиме полного доступа (при этом файл открывается в эксклюзивном режиме). Значение по умолчанию — 0.

Описание:

Метод ОткрытьФайл открывает существующую базу данных формата DBF.

Пример:

// Подразумевается, что объект ДБФ уже создан и

// доступен в данном контексте

Процедура ОткрДБ()

   ИмяФайла = "";

   ИмяПути = "";

   ФС.ВыбратьФайл(0, ИмяФайла, ИмяПути, , "*.*", , );

   ПутьДБ = ИмяПути + ИмяФайла;

   ДБФ.ОткрытьФайл(ПутьДБ);

   Если ДБФ. Открыта() = 1 Тогда

      Предупреждение("База открыта", 2);

   Иначе

      Предупреждение("Не смогли открыть Базу!", 2);

   КонецЕсли;

КонецПроцедуры

Открыта

Прочитать значение флага открытия файла.

Синтаксис:

Открыта()

Англоязычный синоним:

IsOpen

Возвращаемое значение:

Число: 1 — база открыта; 0 — база не открыта.

Описание:

Метод Открыта возвращает значение флага открытия файла базы данных.

Пример:

См. предыдущий пример.

ЗакрытьФайл

Закрыть базу.

Синтаксис:

ЗакрытьФайл()

Англоязычный синоним:

CloseFile

Описание:

Метод ЗакрытьФайл закрывает ранее открытую или созданную базу данных формата DBF.

Пример:

Процедура ЗакрДБ()

   Если ДБФ.Открыта() = 1 Тогда

      ДБФ.ЗакрытьФайл();

   КонецЕсли;

КонецПроцедуры

ОчиститьФайл

Очистить все записи в базе.

Синтаксис:

ОчиститьФайл()

Англоязычный синоним:

Zap

Описание:

Метод ОчиститьФайл удаляет все записи в базе. При этом все существующие записи удаляются физически и не могут быть впоследствии восстановлены.

Пример:

Процедура ОчистДБ()

   Если Вопрос("Вы уверены, что надо очистить базу?", 1, 5) = 1 Тогда

      ДБФ.ОчиститьФайл();

   КонецЕсли;

КонецПроцедуры

См. также: Удалить, Восстановить

Сжать

Сжать базу, убрать удаленные записи.

Синтаксис:

Сжать()

Англоязычный синоним:

Pack

Описание:

Метод Сжать уменьшает размер файла базы данных, убирая записи, помеченные как удаленные.

Пример:

Процедура СжатьДБ()

   Если Вопрос("Уничтожить записи, помеченные как удаленные?", 1, 5) = 1 Тогда

      ДБФ.Сжать();

   КонецЕсли;

КонецПроцедуры

См. также: Удалить, Восстановить

Переиндексировать

Переиндексировать базу.

Синтаксис:

Переиндексировать()

Англоязычный синоним:

Reindex

Описание:

Метод Переиндексировать выполняет переиндексирование базы. Объекты XBase автоматически выполняют индексацию при изменениях базы данных, однако, при работе более чем с одним индексным файлом или после аварийных завершений может потребоваться принудительная переиндексация (для «своих» БД система 1С:Предприятие выполняет это автоматически).

Пример:

Процедура ПерИндДБ()

   Если ФлагАварийногоЗавершения = 1 Тогда

      ДБФ.Переиндексировать();

   КонецЕсли;

КонецПроцедуры

ПоказыватьУдаленные

Установить режим показа удаленных записей в базе.

Синтаксис:

ПоказыватьУдаленные(<Режим>)

Англоязычный синоним:

ShowDeleted

Параметры:

<Режим>

Необязательный параметр. Числовое выражение: 1 — установить режим показа удаленных записей в базе. 0 — снять режим.

Возвращаемое значение:

Текущее числовое значение режима показа удаленных записей в базе (на момент до исполнения метода).

Описание:

Метод ПоказыватьУдаленные позволяет определить и изменить режим показа удаленных записей в базе. В случае, если параметр не указан, изменения режима не происходит.

Пример:

Процедура ПоказатьНомераУдалЗап()

   РежПокУд = ДБФ.ПоказыватьУдаленные(1);

   ДБФ.Первая();

   Пока ДБФ.ВКонце() = 0 Цикл

      Если ДБФ.ЗаписьУдалена() = 1 Тогда

         Предупреждение("Номер удаленной записи — " +

                         Строка(ДБФ.НомерЗаписи()), 3);

      КонецЕсли;

      Если ДБФ.Следующая() = 0 Тогда

         Прервать;

      КонецЕсли;

   КонецЦикла;

   ДБФ.ПоказыватьУдаленные(РежПокУд);

КонецПроцедуры

См. также: Удалить, Восстановить

Первая

Перейти на первую запись.

Синтаксис:

Первая()

Англоязычный синоним:

First

Возвращаемое значение:

Число: 1 — если действие выполнено; 0 — если действие не выполнено.

Описание:

Метод Первая предназначен для перехода на первую запись. Если не установлен текущий индекс, объект позиционируется на первую запись в базе данных, если установлен — на запись, имеющую самое младшее значение выражения текущего индекса (если индекс создавался с установленным флагом «Убывание», то наоборот).

Пример:

// Обнуляет значения всех полей первой записи

Процедура ОчистПервуюЗап()

   ДБФ.Первая();

   ДБФ.Очистить();

   ДБФ.Записать();

КонецПроцедуры

Последняя

Перейти на последнюю запись.

Синтаксис:

Последняя()

Англоязычный синоним:

Last

Возвращаемое значение:

Число: 1 — если действие выполнено; 0 — если действие не выполнено.

Описание:

Метод Последняя предназначен для перехода на последнюю запись. Если не установлен текущий индекс, объект позиционируется на последнюю запись в базе данных, если установлен — на запись, имеющую самое старшее значение выражения текущего индекса (если индекс создавался с установленным флагом «Убывание», то наоборот).

Пример:

// Вычисляет сумму полей AMOUNT всех существующих записей,

// начиная с последней записи и двигаясь к первой

Функция ВычислитьСумму()

   ДБФ.Последняя();

   Сумма = 0;

   Пока ДБФ.Вначале() = 0 Цикл

      Сумма = Сумма + ДБФ.AMOUNT;

      ДБФ.Предыдущая();

   КонецЦикла;

   Возврат Сумма;

КонецФункции

Следующая

Перейти на следующую запись.

Синтаксис:

Следующая()

Англоязычный синоним:

Next

Возвращаемое значение:

Число: 1 — получена следующая запись; 0 — следующая запись не найдена.

Описание:

Метод Следующая предназначен для позиционирования объекта на следующую запись. В зависимости от того, установлен ли текущий индекс, позиционирование происходит либо в порядке возрастания физического номера записи, либо в порядке возрастания значения выражения текущего индекса (если индекс создавался с установленным флагом "Убывание", то в порядке убавания).

Пример:

// Обнуляет значения всех полей всех существующих записей

Процедура ОчистЗап() ДБФ.Первая();

   Пока 1 = 1 Цикл

      ДБФ.Очистить();

      ДБФ.Записать();

      Если ДБФ.Следующая() = 0 Тогда

         Возврат;

      КонецЕсли;

   КонецЦикла;

КонецПроцедуры

Предыдущая

Перейти на предыдущую запись.

Синтаксис:

Предыдущая()

Англоязычный синоним:

Prev

Возвращаемое значение:

Число: 1 — получена предыдущая запись; 0 — предыдущая запись не найдена.

Описание:

Метод Предыдущая предназначен для перехода на предыдущую запись. В зависимости от того, установлен ли текущий индекс, позиционирование происходит либо в порядке убывания физического номера записи, либо в порядке убывания значения выражения текущего индекса (если индекс создавался с Установленным флагом «Убывание», то в порядке возрастания).

Пример:

См. пример метода Последняя

НомерЗаписи

Возвращает значение номера текущей записи.

Синтаксис:

НомерЗаписи()

Англоязычный синоним:

RecNo

Возвращаемое значение:

Числовое значение — номер текущей записи.

Описание:

Метод НомерЗаписи возвращает физический порядковый номер текущей записи в файле базы данных. Результат не зависит от установки текущего индекса.

Пример:

Процедура ПоказатьНомераУдалЗап()

   РежПокУд = ДБФ.ПоказыватьУдаленные(1);

   ДБФ.Первая();

   Пока ДБФ.Вконце() = 0 Цикл

      Если ДБФ.ЗаписьУдалена() = 1 Тогда

         Стр1 = "Номер удаленной записи — ";

         Стр2 = Строка(ДБФ.НомерЗаписи());

         Предупреждение(Стр1 + Стр2, 3);

      КонецЕсли;

      Если ДБФ.Следующая() = 0 Тогда

         Прервать;

      КонецЕсли;

   КонецЦикла;

   ДБФ.ПоказыватьУдаленные(РежПокУд);

КонецПроцедуры

См. также: Перейти

Перейти

Перейти на запись по ее номеру записи.

Синтаксис:

Перейти(<НомерЗаписи>)

Англоязычный синоним:

GoTo

Параметры:

<НомерЗаписи>

Числовое выражение — физический порядковый номер записи в базе данных.

Описание:

Метод Перейти позволяет перейти на запись по ее физическому порядковому номеру в базе данных. Позволяет перейти на запись, помеченную удаленной, даже если не установлен режим просмотра удаленных записей.

Пример:

Процедура ИнформацияОЗаписи(НЗап)

   ДБФ.Перейти(НЗап);

   Стр3ап = "н." + ДБФ.НомерЗаписи();

   Стр3ап = Стр3ап + " Уд. " + ДБФ.ЗаписьУдалена();

   Стр3ап = СтрЗап + " Содержит -";

   Для КП = 1 По ДБФ.КоличествоПолей() Цикл

      СтрЗап = СтрЗап + Строка(ДБФ.ПолучитьЗначениеПоля(КП)) + "; ";

   КонецЦикла;

   Предупреждение(СтрЗап, 10);

КонецПроцедуры

См. также: НомерЗаписи

ВКонце

Прочитать значение флага конца файла базы банных.

Синтаксис:

ВКонце()

Англоязычный синоним:

EOF

Возвращаемое значение:

Число: 1 — указатель в файле находится за последней записью; 0 — конец файла не достигнут.

Описание:

Метод ВКонце возвращает значение флага конца файла.

Пример:

Функция МаксимальнаяПокупка()

   ДБФ.Первая();

   Уплачено = 0;

   Пока ДБФ.Вконце() = 0 Цикл

      Если ДБФ.AMOUNT > Уплачено Тогда

         Уплачено = ДБФ.AMOUNT;

      КонецЕсли;

      ДБФ.Следующая();

   КонецЦикла;

   Возврат Уплачено;

КонецПроцедуры

ВНачале

Прочитать значение флага начала файла.

Синтаксис:

ВНачале()

Англоязычный синоним:

BOF

Возвращаемое значение:

Число: 1 — указатель в файле находится перед первой записью; 0 — начало файла не достигнуто.

Описание:

Метод ВНачале возвращает значение флага начала файла.

Пример:

Функция СреднСтоимПокупки()

   ДБФ.Последняя();

   Уплачено = 0;

   Записей = 0;

   Пока ДБФ.ВКонце() = 0 Цикл

      Уплачено = Уплачено + ДБФ.AMOUNT;

      Записей = Записей + 1;

      ДБФ.Следующая();

   КонецЦикла;

   Если Записей > 0 Тогда

      Уплачено = Уплачено / Записей;

   КонецЕсли;

   Возврат Уплачено;

КонецПроцедуры

ТекущийИндекс

Установить/определить текущий индекс.

Синтаксис:

ТекущийИндекс(<НазваниеИндекса>)

Англоязычный синоним:

CurrentIndex

Параметры:

<НазваниеИндекса>

Необязательный параметр. Строковое выражение с названием индекса. Если параметр опущен, изменения текущего индекса не происходит.

Возвращаемое значение:

Строковое значение с названием текущего индекса (на момент до выполнения метода).

Описание:

Метод ТекущийИндекс устанавливает/определяет текущий индекс работы с базой. Установка текущего индекса работы с базой оказывает влияние на работу методов Найти, НайтиПоКлючу, Первая, Последняя, Следующая, Предыдущая.

Пример:

Процедура НайтиМладшийПоИндексу(Инд)

   ИмяТекИнд = ДБФ.ТекущийИндекс(Инд);

   ДБФ.Первая();

   ДБФ.ТекущийИндекс(ИмяТекИнд);

КонецПроцедуры

Найти

Найти запись по индексу.

Синтаксис:

Найти(<Ключ>, <Режим>)

Англоязычный синоним:

Find

Параметры:

<Ключ> | Строковое выражение со значением выражения текущего индекса.
<Режим> | Числовое выражение. Режим поиска записей: 0 — ищет запись на точное соответствие ключу (=); 1 — ищет запись на точное соответствие с ключом или большую (>=); 2 — ищет запись с большим ключом (>); -1 (минус единица) — ищет запись на точное соответствие с ключом или меньшую(<=); -2 (минус два) — ищет запись с меньшим ключом (<).

Возвращаемое значение:

Число: 1 — если действие выполнено (запись найдена); 0 — если действие не выполнено.

Описание:

Метод Найти позволяет найти запись, соответствующую данному значению <Ключ> ключа по текущему индексу и режиму поиска, переданному в качестве параметра. Указатель устанавливается на найденную запись.

Следует отметить, что вычисление значения индекса при работе XBase-объекта с базой данных производится объектом самостоятельно на основании выражения, переданного ему при создании ключа (см. описание метода ДобавитьИндекс). При вызове данного метода значение <Ключ> должно быть вычислено средствами встроенного языка, что может представлять определенные трудности, если индекс составной, поля, включенные в выражение индекса, отличны от строковых, и т. д. Поэтому применимость данного метода ограничена случаем использования простых строковых выражений индекса. В более сложных случаях следует применять универсальный метод НайтиПоКлючу.

Пример:

ЗаписьНайдена = ДБФ.Найти("Иванов", 0);

НайтиПоКлючу

Найти запись по индексу.

Синтаксис:

НайтиПоКлючу(<Режим>)

Англоязычный синоним:

FindByKey

Параметры:

<Режим>

Числовое выражение. Режим поиска записей:

0 — ищет запись на точное соответствие ключу (=);

1 — ищет запись на точное соответствие с ключом или большую (>=);

2 — ищет запись с большим ключом (>);

-1 (минус единица) — ищет запись на точное соответствие с ключом или меньшую(<=);

-2 (минус два) — ищет запись с меньшим ключом (<).

Возвращаемое значение:

Число: 1 — если действие выполнено (запись найдена); 0 — если действие не выполнено.

Описание:

Метод НайтиПоКлючу позволяет найти запись, соответствующую значениям атрибутов агрегатного объекта типа «Ключ» XBase-объекта по текущему индексу и режиму поиска, переданному в качестве параметра. Указатель устанавливается на найденную запись. Перед вызовом метода следует установить значения всех атрибутов агрегатного объекта типа «Ключ», которые участвуют в вычислении выражения текущего индекса (см. описание метода ДобавитьИндекс).

Пример:

ДБФ.Ключ.Name = "Иванов";

ДБФ.Ключ.DIV_ID = 15; // отдел новых разработок

ЗаписьНайдена = ДБФ.НайтиПоКлючу(0);  // поиск по составному, неоднородному ключу

ПолучитьЗначениеПоля

Получить значение поля записи.

Синтаксис:

ПолучитьЗначениеПоля(<НазваниеПоля>)

Англоязычный синоним:

GetFieldValue

Параметры:

<НазваниеПоля>

Строковое выражение с названием поля или числовое выражение с номером поля.

Возвращаемое значение:

Значение поля записи, тип зависит от типа поля.

Описание:

Метод ПолучитьЗначениеПоля позволяет определить значение поля текущей записи. Метод позволяет работать с базами данных неизвестной заранее структуры.

Пример:

Процедура ПерНаЗап(НЗап)

   ДБФ.Перейти(НЗап);

   Стр3ап = "" + ДБФ.НомерЗаписи() + "; " + ДБФ.ЗаписьУдалена() + "; ";

   Для КП = 1 По ДБФ.КоличествоПолей() Цикл

      СтрЗап = СтрЗап + Строка(ДБФ.ПолучитьЗначениеПоля(КП)) + "; ";

   КонецЦикла;

КонецПроцедуры

УстановитьЗначениеПоля

Установить значение поля.

Синтаксис:

УстановитьЗначениеПоля(<НазваниеПоля>, <Значение>)

Англоязычный синоним:

SetFieldValue

Параметры:

<НазваниеПоля> | Строковое выражение с названием поля или числовое выражение с номером поля.
<Значение> | Значение поля.

Описание:

Метод УстановитьЗначениеПоля позволяет установить новое значение атрибута объекта, соответствующего полю текущей записи. Для записи изменений в базу данных необходимо инициировать запись (см. «Назначение агрегатного типа данных Xbase»). Метод позволяет работать с базами данных неизвестной заранее структуры.

Пример:

ДБФ.УстановитьЗначениеПоля(НаименованиеПоля, 1234);

Добавить

Добавить новую пустую запись.

Синтаксис:

Добавить()

Англоязычный синоним:

Add

Описание:

Метод Добавить добавляет новую пустую запись. Атрибуты объекта обнуляются (см. метод Очистить). Для записи изменений в базу данных необходимо инициировать запись (см. «Назначение агрегатного типа данных Xbase»).

Пример:

Процедура ДобЗап(Поле!, Поле2)

   ДБФ.Добавить();

   // Определяем поля новой записи

   ДБФ.FIELD1 = Поле1;

   ДБФ.FIELD2 = Поле2;

   ДБФ.Записать();

КонецПроцедуры

Скопировать

Скопировать текущую запись.

Синтаксис:

Скопировать()

Англоязычный синоним:

Copy

Описание:

Метод Скопировать добавляет новую запись, копирующую текущую запись. Для записи изменений в базу данных необходимо инициировать запись (см. «Назначение агрегатного типа данных Xbase»).

Пример:

Процедура КопирЗап()

   ДБФ.Скопировать();

   ДБФ.Записать();

КонецПроцедуры

Автосохранение

Установить режим автоматического сохранения изменений в базе.

Синтаксис:

Автосохранение(<Режим>)

Англоязычный синоним:

AutoSave

Параметры:

<Режим>

Необязательный параметр. Числовое выражение: 1 — установить режим автоматического сохранения изменений в базе. 0 — снять режим.

Возвращаемое значение:

Текущее числовое значение режима автоматического сохранения изменений в базе (на момент до исполнения метода).

Описание:

Метод Автосохранение позволяет изменить режим автоматического сохранения изменений в базе.

При установленном режиме автосохранения любые изменения позиционирования объекта приводит к автоматической записи изменений атрибутов (если они происходили с текущей записью) в базу данных. Таким образом, применение метода Записать не имеет смысла при установленном режиме автосохранения. Чтобы отказаться от записи изменений в базу данных следует вызвать метод Отменить — при этом восстанавливаются значения атрибутов объекта до изменений и запись не происходит при изменении позиционирования.

При сброшенном режиме автосохранения записи при изменении позиционирования не происходит — для этого нужно вызвать метод Записать, причем до выполнения позиционирования. В этом режиме не имеет смысла метод Отменить, т. к. достаточно просто не выполнять записи.

Пример:

ДБФ.Автосохранение(1);

ДБФ.Новая();

ДБФ.РЮ = "Иванов";

ДБФ.PHONE = 215;

ДБФ.Новая();   // Произошла запись

ДБФ.FIO = "Петров";

ДБФ.PHONE = 215;

ДБФ.Отменить();

ДБФ.Новая(); // Записи не произошло

ДБФ.Автосохранение(0);

ДБФ.FIO = "Петров";

ДБФ.PHONE = 314;

ДБФ.Записать(); // Произошла запись

ДБФ.Новая();

ДБФ.FIO = "Сидоров";

ДБФ.PHONE = 215;

ДБФ.Новая(); // Записи не произошло

Записать

Записать изменения в базу.

Синтаксис:

Записать()

Англоязычный синоним:

Save

Описание:

Метод Записать выполняет запись изменений в базу данных. До его вызова все изменения объекта производились только в памяти и будут потеряны при осуществлении перехода к другой записи или закрытии базы данных, если отключен режим автосохранения (см. Автосохранение).

Пример:

См. пример метода Автосохранение

Отменить

Отменить запись изменения в базу.

Синтаксис:

Отменить()

Англоязычный синоним:

Cancel

Описание:

Метод Отменить отменяет запись изменения в базу (см. Автосохранение).

Пример:

см. пример метода Автосохранение

Удалить

Удалить текущую запись.

Синтаксис:

Удалить()

Англоязычный синоним:

Del

Описание:

Метод Удалить ставит пометку «удалена» на текущую запись. Физически запись из базы данных не удаляется и может быть впоследствии восстановлена. Полное удаление записей из БД с освобождением дискового пространства, занятого ими, производится вызовом методов Сжать и ОчиститьФайл.

Пример:

Процедура УдалЗап()

   ДБФ.Первая();

   Пока 1 = 1 Цикл

      ДБФ.Удалить();

      ДБФ.Записать();

      Если ДБФ.Следующая() = 0 Тогда

         Возврат;

      КонецЕсли;

   КонецЦикла;

КонецПроцедуры

ЗаписьУдалена

Возвращает значение флага удаления текущей записи.

Синтаксис:

ЗаписьУдалена()

Англоязычный синоним:

RecDeleted

Возвращаемое значение:

Число: 1 — запись удалена; 0 — запись не удалена.

Описание:

Метод ЗаписьУдалена возвращает значение флага удаления текущей записи.

Пример:

Процедура Восст3ап()

   ТекРежим = ДБФ.ПоказыватьУдаленные(1);

   ДБФ.Первая(};

   Пока 1 = 1 Цикл

      Если ДБФ.ЗаписьУдалена() = 1 Тогда

         ДБФ.Восстановить();

         ДБФ.Записать();

      КонецЕсли;

      Если ДБФ.Следующая() = 0 Тогда

         ДБФ.ПоказыватьУдаленные(ТекРежим);

         Возврат;

      КонецЕсли;

   КонецЦикла;

КонецПроцедуры

Восстановить

Восстановить текущую запись.

Синтаксис:

Восстановить()

Англоязычный синоним:

Recall

Описание:

Метод Восстановить восстанавливает текущую запись.

Пример:

См. пример метода Удалить

Очистить

Очистить текущую запись. Обнуляет все атрибуты объекта.

Синтаксис:

Очистить()

Англоязычный синоним:

Clear

Описание:

Метод Очистить обнуляет все атрибуты объекта. Атрибуты, соответствующие полям типа строковый приобретают значение «пустая строка», числовой — 0, логический — 0, дата — «пустая дата».

Пример:

Процедура ОчистЗап()

   ДБФ.Первая();

   Пока 1=1 Цикл

      ДБФ.Очистить();

      ДБФ.Записать();

      Если ДБФ.Следующая() = 0 Тогда

         Возврат;

      КонецЕсли;

   КонецЦикла;

КонецПроцедуры

КоличествоЗаписей

Возвращает количество записей в базе.

Синтаксис:

КоличествоЗаписей()

Англоязычный синоним:

RecCount

Возвращаемое значение:

Числовое значение — количество записей в базе.

Описание:

Метод КоличествоЗаписей возвращает количество записей в базе вместе с записями, помеченными, как удаленные.

Пример:

Предупреждение("Записей — " + Строка(ДБФ.КоличествоЗаписей()));

КоличествоПолей

Возвращает количество полей базы.

Синтаксис:

КоличествоПолей()

Англоязычный синоним:

FieldCount

Возвращаемое значение:

Числовое значение — количество полей базы.

Описание:

Метод КоличествоПолей возвращает количество полей базы. Может быть использован при работе с базой данных неизвестной заранее структуры.

Пример:

Процедура ОписПол()

   Перем Назв;

   Перем Тип;

   Перем Длин;

   Перем Точн;

   СпЗнач = СоздатьОбъект("СписокЗначений");

   СпЗнач.УдалитьВсе();

   Для КП = 1 По ДБФ.КоличествоПолей() Цикл

      ДБФ.ОписаниеПоля(КП, Назв, Тип, Длин, Точн);

      СпЗнач.ДобавитьЗначение("" + КП + "; " + Назв + "; " + Тип + "; " + Длин +

                              "; "+Точн);

   КонецЦикла;

КонецПроцедуры

КоличествоИндексов

Возвращает количество индексов в открытом индексном файле.

Синтаксис:

КоличествоИндексов()

Англоязычный синоним:

IndexCount

Возвращаемое значение:

Числовое значение — количество индексов в открытом индексном файле.

Описание:

Метод КоличествоИндексов возвращает количество индексов в открытом индексном файле. Может быть использован при работе с базой данных неизвестной заранее структуры.

Пример:

Процедура ОписИнд()

   Перем Назв;

   Перем Выр;

   Перем Уник;

   Перем Убыв;

   Перем Филт;

   СпЗнач = СоздатьОбъект("СписокЗначений");

   СпЗнач.УдалитьВсе();

   Для КП = 1 По ДБФ.КоличествоИндексов() Цикл

      ДБФ.ОписаниеИндекса(КП.Назв, Выр, Уник, Убыв, Филт);

      СпЗнач.ДобавитьЗначение("" + КП + "; " + Назв + "; " + Выр + "; " + Уник +

                              "; " + Убыв + "; " + Филт);

   КонецЦикла;

КонецПроцедуры

ОписаниеПоля

Возвращает описание поля.

Синтаксис:

ОписаниеПоля(<НомерПоля>, <НазваниеПоля>, <Тип>, <Длина>, <Точность>)

Англоязычный синоним:

GetFieldInfo

Параметры:

<НомерПоля> | Числовое выражение — номер поля, для которого требуется получить описание.
<НазваниеПоля> | Идентификатор переменной, в которую данный метод вернет строковое значение названия поля.
<Тип> | Идентификатор переменной, в которую данный метод вернет числовое значение типа поля. Допустимые значения см. в описании метода ДобавитьПоле.
<Длина> | Идентификатор переменной, в которую данный метод вернет числовое значение — общую длину поля.
<Точность> | Идентификатор переменной, в которую данный метод вернет числовое значение — длину поля после десятичной точки (только для числовых полей).

Описание:

Метод ОписаниеПоля возвращает в параметрах <НазваниеПоля>, <Тип>, <Длина>, <Точность> описание поля с номером <НомерПоля>.

Пример:

См. пример метода КоличествоПолей

ОписаниеИндекса

Возвращает описание индекса.

Синтаксис:

ОписаниеИндекса(<НомерИндекса>, <НазваниеИндекса>, <Выражение>, <Уникальность>,

                <Убывание>, <Фильтр>)

Англоязычный синоним:

Getlndexinfo

Параметры:

<НомерИндекса> | Числовое выражение — номер индекса, для которого требуется получить описание.
<НазваниеИндекса> | Идентификатор переменной, в которую данный метод вернет строковое значение названия индекса.
<Выражение> | Идентификатор переменной, в которую данный метод вернет строковое значение — выражение индекса.
<Уникальность> | Идентификатор переменной, в которую данный метод вернет числовое значение — флаг уникальности индекса. 1 — уникальный. 0 — не уникальный.
<Убывание> | Идентификатор переменной, в которую данный метод вернет числовое значение — флаг направления убывания индекса. 1 — индекс по убыванию значения ключа. 0 — по возрастанию значения ключа.
<Фильтр> | Идентификатор переменной, в которую данный метод вернет строковое значение — фильтр индекса.

Описание:

Метод ОписаниеИндекса возвращает в параметрах <НазваниеИндекса>, <Выражение>, <Уникальность>, <Убывание>, <Фильтр> описание индекса с номером <НомерИндекса>. Выражение индекса и фильтр индекса описаны в разделе «Выражение и фильтр индекса».

Пример:

См. пример метода КоличествоИндексов

НомерПоля

Определить номер поля по названию.

Синтаксис:

НомерПоля(<НазваниеПоля>)

Англоязычный синоним:

FieldNo

Параметры:

<HaзвaниeПoля>

Строковое выражение с названием поля.

Возвращаемое значение:

Числовое значение номера поля.

Описание:

Метод НомерПоля предназначен для определения номера поля по его на-^анию.

Пример:

НомП = ДБФ.НомерПоля("CODE");

ДобавитьПоле

Добавить поле в структуру базы.

Синтаксис:

ДобавитьПоле(<Название>, <Тип>, <Длина>, <Точность>)

Англоязычный синоним:

AddField

Параметры:

<Название> | Строковое выражение — имя создаваемого поля.
<Тип> | Строковое или числовое выражение — тип создаваемого поля. Допустимые значения: 1 или"N" — число; 2 или "S" — строка; 3 или "D" — дата; 4 или "L" — логическое; 5 или "F" — то же, что и 1, т. е. число; 6 или "М" — memo (не поддерживается).
<Длина> | Числовое выражение — общая длина создаваемого поля.
<Точность> | Числовое выражение — длина создаваемого поля после десятичной точки (только для числовых полей).

Описание:

Метод ДобавитьПоле добавляет поле в описание структуры базы. Данный метод можно использовать только перед созданием новой базы.

Пример:

ДБФ = СоздатьОбъект("XBase");

ДБФ.ДобавитьПоле("CODE", 1, 19, 3);

ДБФ.ДобавитьПоле("NAME", 2, 25, 0);

ДБФ.СоздатьФайл("mydb.dbf");

См. также: СоздатьФайл, ДобавитьИндекс

ДобавитьИндекс

Добавить индекс в структуру базы.

Синтаксис:

ДобавитьИндекс(<Название>, <Выражение>, <Уникальность>, <Убывание>, <Фильтр>)

Англоязычный синоним:

AddIndex

Параметры:

<Название> | Строковое выражение — имя создаваемого индекса.
<Выражение> | Строковое выражение — выражение индекса.
<Уникальность> | Числовое выражение — флаг уникальности индекса. 1 — уникальный. 0 — не уникальный.
<Убывание> | Числовое выражение — флаг направления убывания индекса: 1 — индекс по убыванию значения ключа. 0 — по возрастанию значения ключа.
<Фильтр> | Строковое выражение — фильтр индекса.

Описание:

Метод ДобавитьИндекс добавляет индекс в описание структуры базы. Выражение индекса и фильтр индекса описаны в разделе «Выражение и фильтр индекса».

Пример:

ДБФ = СоздатьОбъект("XBase");

ДБФ.ДобавитьПоле("CODE", 1, 19, 3);

ДБФ.ДобавитьПоле("NAME", 2, 25, 0);

ДБФ.ДобавитьИндекс("IDXCODE", "CODE", 1, 0, "");

ДБФ.ДобавитьИндекс("IDXNAME", "NAME", 0, 0, "");

ДБФ.СоздатьФайл("mydb.dbf", "mydb.cdx");

См. также: СоздатьФайл, ДобавитьПоле

СоздатьИндексныйФайл

Создать индексный файл.

Синтаксис:

СоздатьИндексныйФайл(<ИмяФайла>)

Англоязычный синоним:

CreateIndex

Параметры:

<ИмяФайла>

Строковое выражение — имя индексного файла.

Описание:

Метод СоздатьИндексныйФайл создает индексный файл. Создаваемый индексный файл будет содержать все индексы, которые были созданы на текущий момент методом ДобавитьИндекс.

Пример:

ДБФ.ДобавитьИндексСЧОХСОПЕ" , "CODE" , 1, 0, "" );

ДБФ.ДобавитьИндекс("IDXROOM", "ROOM+FIO", 0, 0, "");

ДБФ.СоздатьИндексныйФайл("IDXCNEW.CDX");

См. также: СоздатьФайл, ДобавитьИндекс, ОткрытьФайл

КодоваяСтраница

Установить режим кодировки.

Синтаксис:

КодоваяСтраница(<Режим>)

Англоязычный синоним:

SetCodePage

Параметры:

<Режим>

Необязательный параметр. Числовое выражение: 0 — Windows-кодировка; 1 — DOS-кодировка. Если параметр не задан, то режим кодировки не меняется (используется для определения текущего режима кодировки без его смены).

Возвращаемое значение:

Текущее числовое значение режима кодировки (на момент до исполнения метода).

Описание:

Метод КодоваяСтраница позволяет установить режим кодировки для чтения и записи значений строковых полей в файл базы данных.

Замечание. После открытия, XBase-объект всегда находится в режиме DOS-кодировки.

Пример:

ДБФ.КодоваяСтраница(1);

КодОшибки

Возвращает код последней ошибки.

Синтаксис:

КодОшибки()

Англоязычный синоним:

ErrorCode

Возвращаемое значение:

Числовое значение — код последней ошибки.

Описание:

Метод КодОшибки возвращает код завершения последней выполненной операции.

Пример:

КО = ДБФ.КодОшибки();

Возвращаемые коды ошибок:

Код ошибки | Причина ошибки
-10 | Ошибка закрытия файла
-20 | Ошибка создания файла
-30 | Ошибка определения длины файла
-40 | Ошибка установки длины файла
-50 | Ошибка при попытке заблокировать файл
-60 | Ошибка при открытии файла
-70 | Ошибка чтения файла
-80 | Ошибка удаления файла
-90 | Ошибка переименования файла
-100 | Ошибка позиционирования в файле
-110 | Ошибка снятия блокировки с файла
-120 | Ошибка записи в файл
-200 | Файл не является базой данных DBF-формата
-210 | Неопознанное имя поля
-220 | Неопознанный тип поля
-230 | Запись слишком длинная
-300 | Индексный файл не содержит информации о записи
-310 | Нарушение структуры индексного файла
-330 | Указанное имя индекса недоступно
-340 | Ошибка уникальности индекса
-400 | Ожидается запятая или скобка
-410 | Выражение не завершено
-422 | IIF() требует параметров одинаковой длины
-425 | У STR() и SUBSTR.O 2-й и 3-й параметры — константы
-430 | Неверное число параметров
-440 | Слишком сложное выражение
-450 | Пропущена правая скобка
-460 | Неверный тип подвыражения
-470 | Неопознанная функция
-480 | Неопознанный оператор
-490 | Неопознанное значение
-500 | Выражение не завершено символом двойной кавычки
-920 | Недостаточно памяти

Выражение и фильтр индекса

При работе с индексами во время исполнения 1С:Предприятия XBase-объекты производят вычисление выражения индекса и фильтра. Выражение индекса и фильтра — это строковые выражения, составленные на специальном языке объектов XBase.

Выражение индекса используется для вычисления значения ключа для каждой записи базы данных. Результатом вычисления выражение должно быть значение одного из следующих типов: числовое, строковое, дата или булево. Выражение фильтра должно возвращать результат типа булево. Если значение выражения фильтра для конкретной записи базы данных равно истине, информация об этой записи будет включена в индексный файл, в противном случае индексный файл не будет содержать информацию об этой записи и позиционирование на эту запись XBase-объекта с данным текущим индексом производиться не будет.

Атрибуты (кроме "Ключ"), константы и функции могут быть использованы как части выражений. Части выражения могут объединяться с помощью других функций или операторов. Простейшим выражением может быть имя атрибута: "FULL_NAME". В таком случае тип выражения будет соответствовать типу атрибута.

Константы могут иметь числовой, строковый и булевый тип. Строковые константы заключаются в одиночные кавычки ('Строковая константа'). При необходимости включить в состав строковой константы символа двойной кавычки, его следует предварять обратной косой чертой, например, 'Фирма \"Вега\" '. Булевы константы записываются как .TRUE. или .Т. для обозначения истины и .FALSE. или .F. в противном случае.

Операторы используются для объединения частей выражения. Части выражения должны иметь тип, соответствующий оператору, например, оператор "/" (деление) работает с двумя числовыми значениями.

Порядок выполнения операторов в выражении соответствует общепринятому — с учетом скобок и приоритетов операторов. Например выражение "1+2*3" возвратит 7, а "(1+2)*3" возвратит 9.

Числовые операторы:

Имя оператора | Обозначение | Приоритет
Сложение | + | 5
Вычитание | - | 5
Умножение | * | 6
Деление | / | 6
В степень | ** или ^ | 7

Строковые операторы:

Имя оператора | Обозначение | Приоритет
Объединение 1 | + | 5
Объединение 2 | - | 5

Оператор "Объединение 2" немного отличается тем, что пробелы в конце первой строки будут перемещены в конец результата. Например, результатом вычисления выражения " 'Иванов ' + 'И. И.' " будет "Иванов И. И.', а " 'Иванов ' - 'И. И.' " — 'ИвановИ.И. '.

Операторы отношений:

Имя оператора | Обозначение | Приоритет
Равно | = | 4
Не равно | <> или # | 4
Меньше | < | 4
Больше | > | 4
Меньше или равно | <= | 4
Больше или равно | >= | 4
Содержит | $ | 4

Пример:

" 'CD' $ 'ABCD' " вернет ".Т."

" 8 < 7 " вернет ".F."

Логические операторы:

Имя оператора | Обозначение | Приоритет
Отрицание | .NOT. | 3
И | .AND. | 2
ИЛИ | .OR. | 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 — дата. | Число. Год.


Part39

Глава 39
Работа с Метаданными

Глобальный атрибут «Метаданные» является вспомогательным объектом системы, предназначенным для доступа к свойствам структуры метаданных конфигурации. Возможность доступа к метаданным средствами встроенного языка является дополнительной возможностью и применяется в специальных случаях, например, для создания универсальных отчетов или обработок, которые обращаются к объектам различных видов (документам, справочникам и т. п.). В основных алгоритмах конфигурации данная возможность, как правило, не используется.

Контекст работы с метаданными

Работа с метаданными выполняется через глобальный атрибут «Метаданные», имеющий тип «Метаданные». Объект типа «Метаданные» нельзя создать, используя метод СоздатьОбъект.

Объект типа «Метаданные» имеет атрибуты для доступа к свойствам объекта метаданных и методы для доступа к массивам подчиненных объектов метаданных. Глобальный атрибут «Метаданные» предоставляет доступ к общим свойствам конфигурации и к основным объектам метаданных (документам, справочникам и т. п.). Полученный из глобального атрибута подчиненный объект метаданных — документ предоставляет в свою очередь доступ к свойствам документа и к объектам метаданных являющихся реквизитами документа.

Значения, имеющие тип «Метаданные», можно напрямую использовать в качестве параметров в тех методах, где требуется строковый идентификатор метаданного, например, в методе справочника: Вид(НаименовСправочника).

Кроме того, объект типа «Метаданные» можно использовать в качестве параметров, в тех методах, где требуется указать тип данных строкой, например в третий параметр метода ВвестиЗначение(, , , ), но передавать можно только значения метаданных, описывающие типизированные объекты, например, Метаданные.Справочник(1).Реквизит(1), т. к. реквизит справочника — типизированный объект.

Англоязычный синоним ключевого слова Метаданные — Metadata.

Пример:

ВыбМетодУдаления = Метаданные.НепосредедственноеУдалениеОбъектов;

Атрибуты и методы объекта «Метаданные»

В документации не приводится полный перечень возможных значений атрибутов. Полный перечень атрибутов метаданных можно получить, сформировав в конфигураторе текстовый файл «Описание метаданных». Установленные значения атрибутов можно также узнать из текстового описания структуры метаданных.

Атрибуты, являющиеся по сути признаками с двумя возможными значениями имеют числовой тип и принимают значения 0 или 1. Атрибуты, которые могут иметь несколько возможных значений, выдают строку, отражающую установленный вариант. Атрибуты, отражающие свойство метаданных, выбираемое как ссылка на другой объект метаданных (например, журнал документа) имеют тип «Метаданные».

Пример:

ВыбМетодУдаления=Метаданные.НепосредственноеУдалениеОбъектов;

У объекта «Метаданные» могут существовать методы для доступа к массивам подчиненных метаданных. Например, для глобального атрибута «Метаданные» для обращения к документам используется метод «Документ».

В качестве параметра методов для доступа к массивам подчиненных метаданных передается:

· число — выдает объект метаданных по указанному номеру;

· строка — выдает объект метаданных по указанному идентификатору;

· параметр не указан — выдает количество подчиненных объектов этого типа.

Пример получения списка документов конфигурации:

Для Инд = 1 По Метаданные.Документ() Цикл

   Сообщить(Метаданные.Документ(Инд).Идентификатор);

КснецЦикла;

У объекта типа «Метаданные» могут существовать атрибуты, содержащие массив ссылок на объекты метаданных, к ним применяются методы Количество() и Получить(Ном) для перебора ссылок. Например, для граф отбора таким атрибутом является атрибут «Ссылки», позволяющий получить объекты метаданных включенные в данную графу отбора (реквизиты документов и др.).

Пример:

Для Инд = 1 До Метаданные.ГрафаОтбора(Идент).Ссылки.Количество() Цикл

   Сообщить(Метаданные.ГрафаОтбора(Идент).

              Ссылки.Получить(Инд).ПолныйИдентификатор());

КонецЦикла;

Методы работы с метаданными

Перечень методов метаданных предназначенных для доступа к подчиненным объектам метаданных можно получить, сформировав в конфигураторе текстовый файл «Описание структуры метаданных».

Дополнительные методы работы с метаданными приведены ниже.

Выбран

Проверяет спозиционирован ли объект типа «Метаданные» на конкретном объекте метаданных или нет.

Синтаксис:

Выбран()

Англоязычный синоним:

Selected

Возвращаемое значение:

Число: 1 — если объект соответствует объекту метаданных (спозиционирован); 0 — если не соответствует.

Описание:

Метод Выбран возвращает число со значением 1 — объект соответствует объекту метаданных (спозиционирован), 0 — если не соответствует. Например, при обращении к массиву подчиненных метаданных по идентификатору, если метаданного с таким идентификатором не существует, возвращается не спозиционированный объект типа «Метаданные».

Пример:

Если Метаданные.Справочник("Организации").Выбран() = 1 Тогда

   Сообщить("Есть справочник органиазаций");

КонецЕсли;

Родитель

Возвращает объект метаданных, которому подчинен данный объект.

Синтаксис:

Родитель()

Англоязычный синоним:

Parent

Возвращаемое значение:

Объект метаданных, которому подчинен данный объект.

Описание:

Метод Родитель возвращает объект метаданных, которому подчинен данный объект.

Пример:

Сообцить("Реквизит принадлежит документу" + РеквМД.Родитель().Идентификатор);

ПолныйИдентификатор

Возвращает полный идентификатор объекта.

Синтаксис:

ПолныйИдентификатор()

Англоязычный синоним:

FullIdentifier

Возвращаемое значение:

Идентификатор объекта с идентификаторами его родителей через точку.

Описание:

Метод ПолныйИдентификатор возвращает идентификатор объекта с идентификаторами его родителей через точку, например: "Документ.Счет.Цена".

Пример:

Сообщить("Реквизит " + РеквМД.ПолныйИдентификатор());

Представление

Возвращает представление объекта.

Синтаксис:

Представление()

Англоязычный синоним:

Present

Возвращаемое значение:

Строковое значение представления объекта.

Описание:

Метод Представление возвращает синоним объекта, а если он не задан, то идентификатор.

Пример:

Получение списка видов документов:

Спис = СоздатьОбъект("СписокЗначений");

Для Инд = 1 По Метаданные.Документ() Цикл

   Идент = Метаданные.Документ(Инд).Идентификатор;

   Предст = Метаданные.Документ(Инд).Представление();

   Спис.ДобавитьЗначение(Идент, Предст);

КонецЦикла;

ДлинаПредставленияЗначения

Возвращает длину представления значения.

Синтаксис:

ДлинаПредставленияЗначения(<Мин>, <Макс>, <ДлПоУмолч>)

Англоязычный синоним:

ValuePresentLen

Параметры:

<Мин> | Необязательный параметр. Метод не будет возвращать значение меньше указанной в данном параметре величины.
<Макс> | Необязательный параметр. Метод не будет возвращать значение больше указанной в данном параметре величины.
<ДлПоУмолч> | Необязательный параметр. Метод будет возвращать данную величину для метаданных, для которых длина представления не определена. Параметр задает длину для типов данных, таких как Справочник неопределенного типа и аналогичных, у которых не определена длина.

Возвращаемое значение: возвращает длину представления значения.

Описание:

Метод ДлинаПредставленияЗначения для типизированных объектов типа Реквизит и аналогичных, выдает длину представления значения. Данный метод может использоваться, например, для определения ширины столбца в универсальных отчетах, выводящих данные объектов различных видов.

Пример:

Ширина =

   Метаданные.Документ(1).РеквизитШапки(2).ДлинаПредставленияЗначения(5, 50, 30)


Part40

Глава 40
Связь с внешними приложениями посредством
механизмов DDE и OLE Automation

При формировании пользовательского интерфейса прикладной задачи довольно часто существуют ситуации, когда для удобства работы пользователя необходимо дать возможность обрабатывать имеющиеся данные с помощью других, имеющихся на компьютере программ.

Одним из примеров использования такой возможности может служить запуск программы Microsoft Excel (непосредственно из программы 1С:Предприятие ) с одновременным выводом в нее результатов расчета. Далее пользователь может обрабатывать полученные результаты (просматривать, редактировать, печатать и т. п.) непосредственно в среде Microsoft Excel.

Одну из возможностей запуска и управления внешними приложениями дает механизм OLE Automation. Встроенный язык системы 1С:Предприятие поддерживает технологию управления объектами OLE. Непосредственно при помощи операторов языка можно управлять, например, программами, входящими в Microsoft Office.

Контекст работы с внешними приложениями

Внешнее приложение, с которым предполагается устанавливать связь, должно отвечать следующим условиям: внешнее приложение должно поддерживать механизм OLE Automation и должно быть установлено на том компьютере, где его намечено использовать.

Во всех программных модулях вызов процедур или функций внешнего приложения может выполняться только при помощи переменной со ссылкой на объект, который создается функцией СоздатьОбъект. Чтобы вызвать метод внешнего приложения, имя метода (с указанием необходимых параметров) пишется через точку после идентификатора переменной.

При создании переменной со ссылкой на внешнее приложение, в качестве имени объекта в операторе СоздатьОбъект должен выступать зарегистрированный OLE идентификатор внешнего приложения.

Зарегистрированный OLE идентификатор внешнего приложения — это уникальный идентификатор программного продукта, который записывается в регистрационную базу Windows при инсталляции программы.

Примеры OLE идентификаторов:

Excel | "Excel.Application"
LotusApproach | "Approach.Application"
MSGraph | "MSGraph.Application"
PowerPoint | "PowerPoint.Application"

Пример:

// Создаем объект Excel (запускаем программу Excel)

Ехсеl = СоздатьОбъект("Excel.Application");

// делаем окно программы Excel видимым и активным

Excel.Visible = l;

Методы внешних приложений

Методы внешних приложений, а также синтаксис их использования у каждого приложения свои. Описание процедур и функций внешнего приложений можно получить только в документации данного приложения. Например, практически все программы, входящие в пакет Microsoft Office используют для своего управления версию языка Visual Basic.

Чтобы вызвать метод внешнего приложения в языке системы 1С:Предприятие, имя метода (с указанием необходимых параметров) пишется через точку после имени ссылки на объект внешнего приложения.

Пример:

// Создаем объект Excel и присвоим его переменной языка

ОкноЕхсеl = СоздатьОбъект("Excel.Application");

// устанавливаем имя окна Excel

ОкноЕхсеl.Caption = "Отчет";

// создадим новую рабочую книгу

НовыеРабочиеКниги = ОкноЕхсеl.Workbooks;

РабочаяКнига = НовыеРабочиеКниги.Add();

Ограничения:

Не поддерживаются значения, передаваемые по ссылке;

Не поддерживаются массивы, в точности SAFEARRAY;

Не поддерживаются значения типа IUnknown.

Эти ограничения не столь серьезны, т. к. например, все типы данных, с которыми работает Excel и большинство других наиболее распространенных программ, полностью поддерживаются.

Типы поддерживаемых данных:

Boolean

Currency

Date

Double-precision floating-point

Integer

Long integer

Object

Single-precision floating-point

String

Пример:

//В данном примере запускается программа Excel,

// затем в нее передаются некоторые данные, и затем

// на их основе строится диаграмма.

// Создаем объект Excel и присвоим его переменной языка

ОкноЕхсеl = СоздатьОбъект("Excel.Application");

// устанавливаем имя окна Excel

ОкноЕхсеl.Caption = "Отчет";

// создадим новую рабочую книгу

НовыеРабочиеКниги = ОкноЕхсеl.Workbooks;

РабочаяКнига = НовыеРабочиеКниги.Аdd();

ЧислоРядов = 10;

ЧислоСтолбцов = 5;

// проставим названия строк

Для Ряд = 1 По ЧислоРядов Цикл

   Ячейка = ОкноЕхсеl.Cells(Ряд + 1, 1);

   Ячейка.Value = "Строка " + Строка(Ряд);

КонецЦикла;

// проставим названия столбцов

Для Столбец = 1 По ЧислоСтолбцов Цикл

   Ячейка = ОкноЕхсеl.Cells(1, Столбец + 1);

   Ячейка.Value = "Столбец " + Строка(Столбец);

КонецЦикла;

// заполним ячейки таблицы значениями

Для Ряд = 1 По ЧислоРядов Цикл

   Для Столбец = 1 По ЧислоСтолбцов Цикл

      Ячейка = ОкноЕхсеl.Cells(Ряд + 1, Столбец + 1);

      Ячейка.Value = Ряд + Столбец;

   КонецЦикла;

КонецЦикла;

// выделим область в таблице и присвоим ее переменной языка

Область = ОкноЕхсеl.Range(ОкноЕхсеl.Cells(1, 1),

                          ОкноЕхсеl.Cells(ЧислоРядов + 1, ЧислоСтолбцов + 1));

// зададим имя выделенной области

Область.Name = "ОбластьДанных";

// определим рамку выделенной области и присвоим ее переменной языка

Рамка = Область.Borders;

// установим стили для рамки выделенной области

Рамка.LineStyle = 1;

Рамка.Colorlndex = 3;

// построим диаграмму Лист=РабочаяКнига.Worksheets(1);

Диаграмма = Лист.ChartObjects();

Диаграмма = Диаграмма.Add(5, 5 + Область.Тор + Область.Height,

                          Область.Width, Область.Height);

МояДиаграмма = Диаграмма.Chart;

МояДиаграмма.ChartWizard("ОбластьДанных ", -4102, 6, 1, 1, 1, 1, "Отчет");

// сделаем окно Excel видимым и активным

ОкноЕхсеl.Visible = 1;

Работа системы 1С:Предприятие в качестве OLE Automation сервера

Система 1С:Предприятие может быть запущена внешним приложением в качестве OLE Automation сервера и предоставляет доступ ко всем атрибутам и методам своего глобального контекста (см. «Контекст выполнения программного модуля»). Кроме того, OLE-сервер 1С:Предприятие имеет дополнительные методы, с помощью которых можно выполнить последовательность операторов или вычислить выражение, заданное на встроенном языке 1С:Предприятие.

Для запуска системы 1С:Предприятие в качестве OLE Automation сервера из внешнего приложения, выполняется следующая последовательность действий:

· создается объект с OLE идентификатором:

o        V1СEnterprise.Application — версия независимый ключ;

o        V77.Application — версия зависимый ключ;

o        V77S.Application — версия зависимый ключ, SQL версия;

o        V77L.Application — версия зависимый ключ, локальная версия;

o        V77M.Application — версия зависимый ключ, сетевая версия.

· выполняется инициализация системы 1С:Предприятие методом Initialize.

· вызываются атрибуты и методы системы 1С:Предприятие как OLE Automation сервера

Замечание 1: Поскольку программа 1С:Предприятие является одновременно OLE Automation сервером и OLE Automation клиентом, то возможно из 1С:Предприятие обращаться к другой копии 1С:Предприятие (например, к другой конфигурации) для обмена данными. В основном все современные программные продукты поддерживают механизм OLE Automation, это касается в частности MS Office, MS FoxPro и приложений на них написанных, DAO и т. п., поэтому программа 1С:Предприятие может полностью интегрироваться с ними.

Замечание 2: Не локализованные версии внешних программ, обращающихся к программе 1С:Предприятие посредством OLE Automation, могут неправильно интерпретировать русские идентификаторы объектов агрегатных типов данных, например, реквизитов справочников. Данное замечание не относится к продуктам MS Office и к программам, использующим в качестве языка обращения к OLE объектам Microsoft Visual Basic. Рекомендуется использовать локализованные версии программных продуктов, либо в конфигурации использовать идентификаторы без символов кириллицы. Для обращения к атрибутам и методам агрегатных типов данных системы 1С:Предприятие из внешних приложений рекомендуется использовать их англоязычные синонимы.

Замечание 3: Все созданные объекты OLE Automation существуют до тех пор, пока существует переменная, которая содержит значение данного объекта. Следовательно, сама программа 1С:Предприятие, выступающая в качестве объекта OLE Automation в другой программе, будет находиться в памяти компьютера до удаления или изменения значения переменной, содержащей ее в качестве объекта.

Атрибуты системы 1С:Предприятие как OLE Automation сервера

Система 1С:Предприятие в качестве OLE Automation сервера предоставляет полный доступ к своему глобальному контексту (см. «Контекст выполнения программного модуля»). Поэтому объект OLE-сервер 1С:Предприятие в качестве своих атрибутов может иметь: системные константы, значения заданных в конфигураторе констант, перечислений, регистров, видов расчета, групп видов расчета, а также переменные, объявленные в глобальном программном модуле с ключевым словом Экспорт.

Методы системы 1С:Предприятие как OLE Automation сервера

Система 1С:Предприятие в качестве OLE Automation сервера предоставляет полный доступ к своему глобальному контексту (см. «Контекст выполнения программного модуля»). Поэтому объект OLE-сервер 1С:Предприятие в качестве своих методов может иметь: системные процедуры и функции, а также процедуры и функции глобального программного модуля, объявленные с ключевым словом Экспорт. Кроме того, OLE-сервер 1С:Предприятие имеет три дополнительных метода: Initialize, EvalExpr, ExecuteBatch.

Initialize

Выполнить инициализацию системы 1С:Предприятие.

Синтаксис:

Initialize(<Имя_Объекта>.RMTrade, <КоманднаяСтрока>, <ПустаяСтрока>)

Англоязычный синоним:

Initialize

Параметры:

<Имя_Объекта> | Идентификатор созданного OLE объекта 1С:Предприятие.
RMTrade | Добавочное ключевое слово.
<КоманднаяСтрока> | Строковое выражение — командная строка запуска 1С:Предприятие.
<ПустаяСтрока> | Строковое выражение. Параметр может содержать пустую строку или строковое значение "NO_SPLASH_SHOW" — отключить заставку при запуске системы 1С:Предприятие в режиме OLE Automation сервера.

Возвращаемое значение:

Значение логического типа: TRUE, если инициализация прошла удачно, или FALSE, если нет.

Замечание: В OLE Automation TRUE и FALSE имеют соответственно значения: -1 (минус единица) и 0.

Описание:

Метод Initialize выполняет инициализацию системы 1С:Предприятие.

Пример:

* здесь пример приводится на языке MS Visual Basic:

Dim v7 As Object

Set v7 = CreateObject("V77.Application")

result = v7.Initialize(v7.RMTrade, "/DC:\V7\DB /M", "")

EvalExpr

Вычислить выражение системы 1С:Предприятие.

Синтаксис:

EvalExpr(<СтрокаВыражения>)

Англоязычный синоним:

EvalExpr

Параметры:

<СтрокаВыражения>

Строковое выражение — выражение, записанное на встроенном языке 1С:Предприятие.

Возвращаемое значение:

Результат вычисленного выражения.

Описание:

Метод EvalExpr вычисляет выражение, записанное в параметре <СтрокаВыражения> на встроенном языке 1С:Предприятие и возвращает результат вычисления. Результатом выражения может быть число, строка, дата или значение любого агрегатного типа данных. Результат с неопределенным типом данных преобразуются к строковому типу.

Пример:

* здесь пример приводится на языке MS Visual Basic:

Dim v7 As Object

Dim Товары As Object

Set v7 = CreateObject("V77.Application")

result = v7.Initialize(v7.RMTrade, "/DC:\V7\DB /M", "")

Set Товары = v7.EvalExpr("ОтдатьСправочникТоваров()");

CreateObject

Создает объект агрегатного типа данных системы 1С:Предприятие и возвращает ссылку на него.

Синтаксис:

CreateObject(<ИмяАгрегатногоТипа>)

Англоязычный синоним:

CreateObject

Параметры:

<ИмяАгрегатногоТипа>

Строковое выражение, значение которого содержит имя агрегатного типа данных, объявленного в конфигураторе.

Возвращаемое значение:

Ссылка на созданный объект агрегатного типа данных.

Описание:

Метод CreateObject создает объект агрегатного типа данных системы 1С:Предприятие и возвращает ссылку на него. Данная функция обычно используется одновременно с неявным определением переменной и присвоением ей ссылки на объект агрегатного типа данных.

Пример:

Процедура Загрузить()

   Если ФС.Существуетфайл(Путь + "\NUL") = 0 Тогда

      Предупреждение("Путь информационной базы не найден!");

   Иначе

      V7 = СоздатьОбъект("V77.Application");

      Открыта = V7.Initialize(V7.RMTrade, "/d" + Путь +

                              " /M /N" + Пользователь, "");

      Если Открыта = 0 Тогда

         Предупреждение("Ошибка открытия информационной базы");

         Возврат;

      КонецЕсли;

      Импорт = V7.CreateObject("Справочник.Контрагенты");

      Импорт.ВыбратьЭлементы();

      Пока Импорт.ПолучитьЭлемент() = 1 Цикл

         Если Импорт.ЭтоГруппа() = 0 Тогда

            Сообщить(Импорт.Наименование);

         КонецЕсли;

      КонецЦикла;

   КонецЕсли;

КонецПроцедуры

ExecuteBatch

Выполнить последовательность операторов системы 1С:Предприятие.

Синтаксис:

ExecuteBatch(<СтрокаОператоров>)

Англоязычный синоним:

ExecuteBatch

Параметры:

<СтрокаОператоров>

Строковое выражение — текст программы на встроенном языке 1С:Предприятие.

Возвращаемое значение:

Значение логического типа: TRUE, если последовательность операторов выполнены успешно, или FALSE, если нет.

Замечание: В OLE Automation TRUE и FALSE имеют соответственно значения: -1 (минус единица) и 0.

Описание:

Метод ExecuteBatch выполняет последовательность операторов, записанную в параметре <СтрокаОператоров> на встроенном языке 1С:Предприятие.

Пример:

* здесь пример приводится на языке MS Visual Basic:

Sub Command1_Click ()

   Dim v7 As Object

   Dim Price As Object

   Set v7 = CreateObject("V77.Application")

   result = v7.Initialize(v7.RMTrade, "/DC:\V7\DB /M", "")

   Set Price = v7.EvalExpr("ОтдатьСправочникТоваров()")

   Price.New

   Price.Code = "112233"

   Price.Description = "Test string"

   Price.Write;

   BoolResult = v7.ExecuteBatch("ПроцедураРегл1();ПроцедураРегл2()")

End Sub

* Обращение к программе 1С:Предприятие из модуля MS Excel. В данном примере запускается и инициализируется конфигурация 1С:Предприятие с базой данных в каталоге C:\V7\DB в монопольном режиме. Далее в программе 1С:Предприятие создается объект типа "Справочник.Товары", где создается новая группа элементов с названием "***** Экспорт из Excel ******". Во вновь созданную группу каталога записываются данные из таблицы MS Excel. Здесь пример приводится на языке MS Visual Basic.

Sub Excel_to_trade()

   Dim trade As Object

   Dim Товар As Object

   Set trade = CreateObject("V77 .Application")

   result = trade.Iinitialize(trade.RMTrade, "/DC:\V7\DB /M", "")

   Set Товар = trade.EvalExpr("CreateObject(""Справочник.Товары"")")

   Товар.НоваяГруппа

   Товар.Наименование = "***** Экспорт из Excel ******"

   Товар.Записать

   Товар.ИспользоватьРодителя Товар.ТекущийЭлемент

   N = 100 'Количество строк в документе

   For Count = 1 То N Товар.Новый

      Товар.Наименование = Application.Cells(Count, 2).Value

      Товар.Розн_Цена = Application.Cells(Count, 3).Value

      Товар.Мел_Опт_Цена = Application.Cells(Count, 4).Value

      Товар.Onт_Цена = Application.Cells(Count, 5).Value

      Товар.Записать

   Next Count

End Sub

Работа системы 1С:Предприятие в качестве DDE сервера

Другим способом обращения к данным 1С:Предприятие а из внешних программ является режим DDE. Основное преимущество данного режима является динамическое обновление получаемых из 1С:Предприятие данных.

Система 1С:Предприятие является DDE сервером и предоставляет свой сервис в получении данных и уведомлении DDE клиента об их изменении.

В качестве DDE сервера 1С:Предприятие может возвращать значение некоторого выражения, записанного на встроенном языке 1С:Предприятие. Возвращаемое значение является строкой. Для того, чтобы рассматривать результат выражения в качестве числа или даты, например в ячейке MS Excel, может потребоваться задание формата значения.

Для доступа к 1С:Предприятие посредством DDE следует использовать DDE-объект с именем 1CV7|DDE.

Пример:

* Ниже приведены примеры размещения в ячейках MS Excel DDE связей с программой 1С:Предприятие. Первое выражение в примере обращается к стандартной функции встроенного языка 1С:Предприятие. Второе выражение в примере обращается к функции, записанной в глобальном модуле конфигурации программы 1С:Предприятие.

='1CV7'|DDE!'РабочаяДата()'

='1CV7'|DDE!'СуммаПоНарядам()'

Замечание 1: Для правильной интерпретации значения выражения в качестве числа или даты в MS Excel, нужно в операционной системе установить соответствующий формат представления даты и числа, как он принят в 1С:Предприятие.

Замечание 2: Не рекомендуется обращаться посредством DDE к функциям 1С:Предприятие, которые могут выполняться продолжительное время. Это связано с тем, что обращение к данной функции будет выполняться достаточно часто при обновлениях DDE связей.