Основная страница

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


 

Функции работы с позицией документа

СформироватьПозициюДокумента

Формирует позицию документа согласно переданным параметрам

Синтаксис 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 Тогда

      ЗафиксироватьТранзакцию();

   Иначе

      ОтменитьТранзакцию();

   КонецЕсли;

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

 



Перейти  к оглавлению: Описание встроенного языка

Hosted by uCoz