Учебно-методические материалы для студентов кафедры АСОИУ

Тема 3.7 Библиотечные процедуры и функции

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

Для организации диалогового режима в языке 1С поддерживается ряд функций, которые относятся к категории "системные функции ввода-вывода".

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

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

Системные процедуры и функции доступны в любом программном модуле конфигурации. Перечислим некоторые из них, сгруппировав их по их назначению (табл. 18 - 21).

Таблица 18. Математические функции

Окр(Число1, [Число2], [Способ]) Округлить Число1 до Числа2 знаков после запятой (по умолчанию 0) одним из двух способов: Способ=0 - 1.5=1; Способ=1 - 1.5=2. Возвращаемое значение - результат округления.
Цел(Число) Получение целой части Числа
Мин(Элемент1, ...,ЭлементN)Макс(Элемент1, ...,ЭлементN) Возвращает значение минимального (максимального) элемента из списка. По типу Элемента1 осуществляет преобразование типов остальных элементов в случае несовпадения. Тип Элемента1 обязательно должен быть базовым типом.
Лог10(Число) Лог(Число) Возвращает десятичный и натуральный логарифмы Числа соответственно. При отрицательном и нулевом значении параметра возвращает 0.

Таблица 19. Строковые функции

СтрДлина(Строка) Возвращает длину Строки
ПустаяСтрока(Строка) Возвращает 1, если Строка пустая или состоит только их пробелов, и 0 - в противном случае.
СокрЛ(Строка) СокрП(Строка) СокрЛП(Строка) Возвращает строку, в которой отсечены все стоящие слева (справа или с обеих сторон) пробелы Строки.
Лев(Строка,Число) Прав(Строка,Число) Возвращает первые слева (справа) символы Строки в количестве, задаваемом параметром Число.
Сред(Строка,Число1,Число2) Возвращает подстроку параметра Строка, начиная с символа с номером Число1 общим количеством Число2. Позиции в строке считаются, начиная с 1. Параметр Число2 может быть опущен, тогда конечным символом подстроки считается последний символ Строки.
Найти(Строка1,Строка2) Возвращает позицию первого знака подстроки Строка2 в Строке1. Если такой подстроки не найдено, возвращает 0.
СтрЗаменить(СтрИсточник,СтрПодстрока,СтрЗамена) Возвращает строку СтрИсточник, в которой подстрока СтрПодстрока заменена подстрокой СтрЗамена. Исходная строка СтрИсточник при этом не меняется.
СтрКоличествоСтрок(Строка) Возвращает число строк в многострочном тексте, заданном параметром Строка, в котором строки разделены символами перевода строк.
СтрПолучитьСтроку(Текст,НомерСтроки) Возвращает строку с номером НомерСтроки из многострочного текста, заданного параметром Текст.
ВРег(Строка) НРег(Строка) Переводит Строку в верхний (нижний регистр).

Таблица 20. Функции работы с датой

РабочаяДата(Дата,РежимСменыРабДаты) Позволяет получить/установить рабочую дату. Возвращает рабочую дату на момент до выполнения функции. Второй параметр РежимСменыРабДаты обозначает режим смены даты в полночь: 0 - не менять; 1 - менять с предупреждением; 2 - менять без предупреждения.
ТекущаяДата() Возвращает текущую(системную) дату.
ДобавитьМесяц(Дата,ЧислоМесяцев) Добавляет к дате, заданной первым параметром число месяцев, заданное вторым параметром.
НачМесяца(Дата) НачКвартала(Дата) НачГода(Дата) НачНедели(Дата) Возвращает дату, которая является началом соответствующего периода.
КонМесяца(Дата)

КонКвартала(Дата)

КонГода(Дата)

КонНедели(Дата)

Возвращает дату, которая является концом соответствующего периода.
ДатаГод(Дата)

ДатаМесяц(Дата)

ДатаЧисло(Дата)

Возвращает запрашиваемую составляющую Даты.
НомерНеделиГода(Дата) НомерДняГода(Дата) НомерДняНедели(Дата) Возвращает номер соответствующей составляющей Даты.
ПериодСтр(ДатаНачалаПериода, ДатаКонцаПериода) Возвращает строковое представление периода, начало и конец которого указаны в качестве параметров. Наиболее часто такие строки используются при формировании отчетов. Если рассматриваемый период будет являться кварталом, годом или месяцем, то строковое выражение отобразит это соответствующим образом, например, "2 квартал 2002 г."

Таблица 21. Функции преобразования типов

Дата(Год,Месяц,Число) Формирует из значений параметров значение типа Дата.
Строка(Парам) Преобразует значение, переданное в качестве параметра, в символьную строку.
Число(Парам) Преобразует параметр в число.

Системные функции ввода/вывода

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

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

ВвестиЗначение(3нач, Подсказка, Тип, Длина, Точность) 

Данная функция выводит на экран окно диалога, заголовком которого является значение параметра Подсказка. В результате работы диалога в переменную, задаваемую параметром Знач (переменная должна быть объявлена заранее), вводится значение, тип которого определяется параметром Тип (строковое выражение, например, "Строка", "Число"). Последние два параметра определяют возможную длину значения и количество знаков после запятой для вещественных чисел. Функция возвращает значение 1, если окончание работы диалога было инициировано нажатием кнопки OK, и 0 - в противном случае.

Для ввода числа можно использовать следующую функцию.

ВвестиЧисло(Число, Подсказка, Длина, Точность, Таймаут) 

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

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

ВвестиСтроку(Стр, Подсказка, ДлинаСтр, Признак, Таймаут) 

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

ВвестиДату(Дата, Подсказка, Таймаут) 

Можно ввести период посредством диалогового окна. Это осуществляет функция

ВвестиПериод (НачПериода, КонПериода, Подсказка) 

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

Вопрос(ТекстВопроса, Режим, Таймаут) 

Параметр Режим можно задавать в числовом или строковом виде. Возможны следующие варианты: ОК (0), ОК+Отмена(1), Стоп+Повтор+Пропустить (2), Да+Нет+Отмена (3), Да+Нет (4), Повтор+Отмена (5). Соответственно выбранному режиму вывода диалога функция может возвращать следующие строковые или числовые константы: Таймаут (-1), ОК (1), Отмена (2), Стоп (3), Повтор (4), Пропустить (5), Да (6), Нет (7). Для вывода упрощенного сообщения-предупреждения, не требующего ответа, можно использовать два эквивалентных способа. Во-первых, можно использовать функцию Вопрос следующим образом:

Вопрос("Сообщение",0); 

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

Предупреждение(ТекстСообщения, Таймаут) 

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

Сообщить(ТекстСообщения, ИмиджМаркера) 

Здесь ИмиджМаркера - строковое выражение, определяющее тип пиктограммы, оно может принимать следующие значения: "I", "!", "!!", "!!!", "." - обычное сообщение, " " - сообщение без маркера.

Можно очистить окно сообщений, используя процедуру

ОчиститьОкноСообщений() 

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

Состояние(ТекстСообщения) 

Предопределенные процедуры

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

Предопределенная процедура ВводНового() используется при вводе нового элемента справочника. Для ее оформления удобно воспользоваться синтаксис-помощником.

В системе 1С существуют следующие виды предопределенных процедур:

Вид предопределенных процедур Примеры
Предопределенные процедуры глобального модуля ПриНачалеРаботыСистемы()
ПриЗавершенииРаботыСистемы()
ПриЗаписиКонстанты()
ПриЗаписиИстории()
ПриСменеРасчетногоПериода()
Модуль формы списка справочника ПриОткрытии()
ПриЗакрытии()
ПриЗаписи()
ПриВводеСтроки()
ПриВыбореРодителя()
ПриВыбореВладельца()
Модуль формы элемента справочника ВводНового()
ПриЗаписи()
Модуль журнала документов ПриУстановкеИнтервала()
ПриУстановкеОтбора()
Модуль формы документа ВводНового()
ВводНаОсновании()
ПриЗаписи()
ПриВводеСтроки()
ПриУдаленииСтроки()
Модуль документа ОбработкаПроведения()
ОбработкаУдаленияПроведения()
АрхивироватьДокумент()
Модуль журнала расчетов ПриУстановкеОтбора()
ПриИсправленииРезультата()
ПриВыбореВладельца()
Модуль вида расчета ПровестиРасчет()
Модуль журнала операций ПриУстановкеОтбора()
ПриУстановкеИнтервала()
Модуль формы операции ВводНового()
ПриЗаписи()
ПриВводеСтроки()
ПриУдаленииСтроки()
Модуль журнала проводок ПриУстановкеОтбора()
ПриУстановкеИнтервала()
ПриПоказеПроводокПоДокументу()
Предопределенные процедуры для Таблиц ОбработкаЯчейкиТаблицы()
ПриВыбореЯчейкиТаблицы()
Модуль формы списка счетов ПриВводеСтроки()
ПриВыбореРодителя()
ПриЗаписи()
Модуль формы счета ВводНового()
ПриЗаписи()
Для организации подбора ОбработкаПодбора()

Полный список предопределенных процедур и их параметров см. в Синтакс-помощнике.

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

Если в предопределенной процедуре вызвать команду СтатусВозврата(0), то действие не будет выполнено, например, документ не будет записан или форма не откроется. Следует помнить, что после вызова СтатусВозврата(0), предопределенная процедура продолжает свое выполнение. Чтобы выйти из процедуры, используйте команду Возврат.


CC-BY-CA Анатольев А.Г., 24.04.2014