1с что необходимо для того чтобы написанная программистом процедура дополнила

Обновлено: 05.07.2024

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

Прочитав статью, вы узнаете:

  • Что такое контекстная подсказка и как она помогает при написании программного кода?
  • Для чего нужны шаблоны текста и как их применять на практике?
  • Зачем использовать группировку строк программного кода?
  • Как выделение цветом может улучшить удобство работы с редактором кода?
  • В чем удобство нового поиска в дереве конфигурации?
  • Как быстро отобразить объекты нужной подсистемы?
  • Какие инструменты рефакторинга и отказа от модальности существуют и как ими пользоваться?

Применимость

В статье рассматривается возможности конфигуратора на примере платформы «1С:Предприятие» редакций 1C 8.3.5 – 8.3.11, поэтому вся информация актуальна.

Улучшения в конфигураторе платформы «1С:Предприятие 8.3»

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

Контекстная подсказка

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

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

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

Контекстная подсказка

Для увеличения нажмите на изображение.

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

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

Автоматическая подсказка при наборе

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

Параметры процедур и функций в контекстной подсказке

Для увеличения нажмите на изображение.

Напомним, что существует документ “Система стандартов и методик разработки конфигураций для платформы 1С:Предприятие 8”, в котором описаны рекомендации фирмы “1С” к разрабатываемому программному коду.

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

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

Анализ комментариев для отображения посказки в конфигураторе

Для увеличения нажмите на изображение.

Чтобы избежать ручного написания комментария по приведенному формату, в платформе предусмотрены шаблоны текста, ознакомиться с которыми можно, нажав сочетание клавиш Ctrl + Shift + T.

Шаблон с наименованием “Процедура (с заголовком)” как раз и формирует правильный комментарий.

Чтобы этот шаблон сработал, достаточно набрать в редакторе символы “Проц”, нажать Ctrl+Q и выбрать нужный шаблон из предлагаемого системой списка.

Шаблоны текста для формирования комментария

Группировка строк программного кода

Модули типовых решений на платформе “1С:Предприятие 8” достаточно объемные, содержат достаточно большое количество строк кода.

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

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

Группировка операторов и процедур

Для увеличения нажмите на изображение.

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

Настройка группировки строк программного кода

Выделение цветом конструкций

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

Подсветка конструкций

Посветка конструкций в конфигураторе

Для увеличения нажмите на изображение.

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

Выделение цветом скобок

Для увеличения нажмите на изображение.

Параметры - Текущий идентификатор

Подсветка программного кода

Для увеличения нажмите на изображение.

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

Параметры - Выбранный идентификатор

Выделение идентификаторов в тексте модуля

Для увеличения нажмите на изображение.

При выполнении поиска в тексте модуля при помощи строки поиска или после нажатия сочетания клавиш Ctrl + F найденное слово выделяется, а все такие же найденные слова подсвечиваются.

Подсветка найденных слов

Для увеличения нажмите на изображение.

Объединение ячеек табличного документа

Ранее ячейки табличного документа можно было объединить только с помощью пункта меню или соответствующей кнопки командной панели.

Теперь появилось сочетание клавиш Ctrl + M, при нажатии которого и происходит объединение ячеек табличного документа. Также операция “Объединить” доступна в контекстном меню табличного документа.

Объединение ячеек в таблице конфигуратора

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

Новые возможности для разработчика в «1С:Предприятие 8.3.5»

Поиск в конфигураторе

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

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

До выхода платформы 8.3.5 поиск по дереву метаданных можно было осуществить следующим образом:

  • набирать с клавиатуры название объекта, при этом система будет искать по совпадению наименования с первой буквы названия, но только в развернутых строках дерева конфигурации;
  • при помощи сочетания клавиш Ctrl+F открыть окно поиска:

Поиск объектов метаданных

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

В платформе 8.3.5 появилось новое поле поиска, расположенное над деревом конфигурации:

Новое поле поиска в конфигурации

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

Причем дерево конфигурации фильтруется “на лету”: в нем остаются только объекты, удовлетворяющие введенному фильтру.

Поиск в конфигурации

Рассмотрим, что обозначают цвета, которыми раскрашены объекты, оставшиеся в дереве после применения фильтра.

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

Если кроме того искомая строка присутствует в имени объекта (не в синониме, не в комментарии), то такие вхождения выделяются красным цветом.

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

На приведенном выше рисунке реквизит ИдентификаторПользователяИБ справочника Пользователи отображается в дереве, т.к. его синоним содержит подстроку “пост”:

Объект поиска

Допустимо вводить для поиска несколько подстрок, разделенных пробелами:

Поиск по нескольким подстрокам

Аналогичная строка поиска появилось и у окна, содержащего набор свойств выделенного объекта (палитра свойств):

Поиск в палитре свойств

Поиск в палитре свойств

Найденные свойства будут выведены общим списком, без разбивки по категориям.

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

Переключиться между режимами имя/представление можно с помощью команды “Отображать имена свойств” контекстного меню:

Отображать имена свойств

Такая же строка поиска была добавлена в окне выбора типа данных:

Поиск в окне Редактирование типа данных

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

Поиск в окне Выбор объекта метаданных

Быстрое отображение объектов подсистемы

Для быстрого отображения объектов, входящих в одну конкретную подсистему, в контекстном меню появился новый пункт “Объекты подсистемы”:

Быстрое отображение объектов подсистемы

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

Нужно было открыть окно отбора по подсистемам, установить в нем галочку на требуемую подсистему, со всех остальных подсистем галочки снять:

Отбор по подсистемам в старой версии платформы

Теперь получить тот же самый результат можно быстрее. Кроме того, чаще всего используется и наиболее востребован отбор именно по одной подсистеме.

А, следовательно, это маленькое удобное новшество сэкономит время разработчика.

Быстрое отображение объектов, захваченных в хранилище

Если конфигурация подключена к хранилищу, то в командной панели над самим деревом конфигурации доступна кнопка “Захваченные объекты”:

Фильтр Захваченные объекты

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

Инструменты рефакторинга

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

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

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

Поэтому в конфигураторе платформы 8.3.5 появились механизмы рефакторинга кода и инструменты работы с модальными вызовами.

Они доступны в контекстном меню текстового редактора конфигуратора в отдельном меню Рефакторинг.

Рефакторинг кода

Для увеличения нажмите на изображение.

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

1. Выделить фрагмент

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

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

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

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

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

Имя_проц Назначает имя процедуры.
Знач Необязательное ключевое слово, которое указывает на то, что следующий за ним параметр передается по значению, то есть изменение значения формального параметра при выполнении процедуры никак не повлияет на фактический параметр, переданный при вызове процедуры. Если это ключевое слово не указано, то параметр процедуры передается по ссылке, то есть изменение внутри процедуры значения формального параметра приведет к изменению значения соответствующего фактического параметра.
Парам1 , . ПарамN Необязательный список формальных параметров, разделяемых запятыми. Значения формальных параметров должны соответствовать значениям передаваемых при вызове процедуры фактических параметров. В этом списке определяются имена каждого из параметров так, как они используются в тексте процедуры. Список формальных параметров может быть пуст.
= ДефЗнач Необязательная установка значения параметра по умолчанию. Параметры с установленными значениями по умолчанию можно располагать в любом месте списка формальных параметров.
Экспорт Необязательное ключевое слово, которое указывает на то, что данная процедура является доступной из других программных модулей.
// Объявления локальных переменных Объявляются локальные переменные, на которые можно ссылаться только в рамках этой процедуры.
// Операторы Исполняемые операторы процедуры.
Возврат Необязательное ключевое слово, которое завершает выполнение процедуры и осуществляет возврат в точку программы, из которой было обращение к процедуре. Использование данного оператора в процедуре не обязательно.
КонецПроцедуры Обязательное ключевое слово, обозначающее конец исходного текста процедуры, завершение выполнения процедуры. Возврат в точку, из которой было обращение к процедуре.

Функция

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

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

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

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

Что необходимо для того, чтобы написанная программистом процедура дополнила контекст документа (объекта типа ДокументОбъект)?

?) Она должна быть определена с ключевым словом Экспорт

Тема/шкала: Лёгкий,Объектная модель прикладного решения

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

Тема/шкала: Лёгкий,Объектная модель прикладного решения

Что необходимо выполнить в процедуре "ОбработкаПроведения" в модуле документа для отмены проведения?

Тема/шкала: Лёгкий,Объектная модель прикладного решения

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

?) У элемента будет другой внутренний идентификатор (ссылка) и это может повлиять на логику программы

Тема/шкала: Лёгкий,Объектная модель прикладного решения

?) для определения предопределенных процедур "ПриНачалеРаботыСистемы" и т.п.

?) как место определения предопределенных процедур, которые инициализируются при старте и окончании работы системы в режиме внешнего единения

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

Тема/шкала: Лёгкий,Объектная модель прикладного решения

С какого значения начинается индексирование элементов коллекций?

?) С начального индекса, заданного программистом при создании коллекции

Тема/шкала: Лёгкий,Объектная модель прикладного решения

Алгоритмы в модуле обычной формы могут исполняться?

?) Обычный параметр существует только при открытии формы, ключевой — только при закрытии формы

?) Возможность определяется для каждой процедуры и функции модуля

Тема/шкала: Лёгкий,Объектная модель прикладного решения

Какие функции отсутствуют во встроенном языке "1С:Предприятие 8":

?) Все перечисленные функции имеются во встроенном языке

Тема/шкала: Лёгкий,Объектная модель прикладного решения

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

?) Использовать англоязычные варианты только для конструкций встроенного языка

?) Использовать англоязычные варианты встроенных процедур и функций, операторных скобок, языковых конструкций и англоязычных синонимов идентификаторов объектов и их реквизитов

?) Использовать англоязычные варианты встроенных процедур/функций, операторных скобок и языковых конструкций

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

Тема/шкала: Лёгкий,Объектная модель прикладного решения

?) Для перебора (выборки) документов средствами встроенного языка

?) Для операций над документами как объектами базы данных, создания к удаления документов

?) Для управления списком документов, выводимых в табличное поле, т.е. для решения интерфейсных задач

Тема/шкала: Лёгкий,Объектная модель прикладного решения

Тема/шкала: Лёгкий,Объектная модель прикладного решения

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

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

?) язык и форматы отображения чисел, даты и времени будут определяться настройками операционной системы

Тема/шкала: Лёгкий,Объектная модель прикладного решения

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

?) определяется разработчиком исходя из практической задачи

Тема/шкала: Лёгкий,Объектная модель прикладного решения

?) Для описания (на стадии разработки конфигурации) алгоритмов функционирования прикладной задачи

Тема/шкала: Лёгкий,Объектная модель прикладного решения

Тема/шкала: Лёгкий,Объектная модель прикладного решения

Тип анализа "Поиск последовательностей" подразумевает:

?) Поиск часто встречаемых вместе групп объектов или значений характеристик

?) Построение иерархической структуры классифицирующих правил

Тема/шкала: Лёгкий,Объектная модель прикладного решения

Какой режим используется для выполнения задач локализации (создания интерфейса на другом языке)?

Тема/шкала: Лёгкий,Объектная модель прикладного решения

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

?) вся транзакция будет выполнена в автоматическом режиме

?) вся транзакция будет выполнена в управляемом режиме

Тема/шкала: Лёгкий,Объектная модель прикладного решения

?) нельзя описывать переменные, процедуры и функции без ключевого слова "Экспорт"

?) нет ограничений на описание переменных, процедур, функций

Тема/шкала: Лёгкий,Объектная модель прикладного решения

?) Перечень значений, заданный в платформе "1С:Предприятие 8.0"

?) Перечень значений, заданный на этапе разработки конфигурации (ветвь Перечисления в дереве конфигурации)

?) Конструкция встроенного языка, используемая разработчиком для объявления перечислимых типов данных

?) Системные перечисления отсутствуют в системе "1С:Предприятие 8.0"

Тема/шкала: Лёгкий,Объектная модель прикладного решения

Тема/шкала: Лёгкий,Объектная модель прикладного решения

В каком обработчике события модуля объекта можно отказаться от записи объекта, например, элемента справочника?

Тема/шкала: Лёгкий,Объектная модель прикладного решения

Пусть Переменная1 имеет тип Дата (состав даты — "Дата") и значение, равное 1 марта 2005 года. Чему будет равно значение выражения "Переменная1+20"?

Тема/шкала: Лёгкий,Объектная модель прикладного решения

Что обозначает параметр Л(L) в форматной строке функции форматирования ЧислоПрописью()?

Тема/шкала: Лёгкий,Объектная модель прикладного решения

К чему приведет изменение кода языка в свойстве "Код языка", если уже введены тексты в свойствах "Синоним" или "Заголовок" на этом языке?

?) К "потере" введенных текстов с возможностью "восстановления" при указании прежнего значения кода языка

?) К "потере" введенных текстов без возможности "восстановления"

?) К потере данных это действие не приведет, введенные тексты будут соответствовать языку с новым кодом

Тема/шкала: Лёгкий,Объектная модель прикладного решения

Где располагаются процедуры-обработчики событий прикладных объектов, например, ПриЗаписи, ПередУдалением?

Тема/шкала: Лёгкий,Объектная модель прикладного решения

При определении подписки на событие количество таких подписок:

?) Любое количество, процедуры обработчики могут располагаться как в одном, так и в разных общих неглобальных модулях

?) Любое количество, процедуры обработчики должны обязательно располагаться в разных общих неглобальных модулях

Тема/шкала: Лёгкий,Объектная модель прикладного решения

Тема/шкала: Лёгкий,Объектная модель прикладного решения

Какая коллекция из нижеперечисленных не относится к универсальным?

Тема/шкала: Лёгкий,Объектная модель прикладного решения

При определении подписки на событие процедура — обработчик должна располагаться:

Тема/шкала: Лёгкий,Объектная модель прикладного решения

Объект какого типа позволяет изменить элемент справочника в базе данных?

Тема/шкала: Лёгкий,Объектная модель прикладного решения

?) Для создания интерфейса программы на разных языках

?) Для создания текстовых документов на разных языках

Тема/шкала: Лёгкий,Объектная модель прикладного решения

Тема/шкала: Лёгкий,Объектная модель прикладного решения

В каком формате хранятся тексты конфигурации и базы данных в системе 1С:Предприятие?

?) В зависимости от настроек, заданных при создании информационной базы

?) Тексты конфигурации и базы данных хранятся в формате UNICODE

Тема/шкала: Лёгкий,Объектная модель прикладного решения

У регистра сведений установлен режим записи "Независимый". Редактирование осуществляется в диалоге, ни одна из форм регистра не определена. При попытке интерактивного добавления в него "Записи" со значениями измерений, комбинация которых уже прописана в регистре:

?) На экран выводится предупреждение, но запись все равно записывается в базу данных

Тема/шкала: Лёгкий,Объектная модель прикладного решения

Какого типа является свойство глобального контекста "Справочники"?

Тема/шкала: Лёгкий,Объектная модель прикладного решения

Какая процедура выполняет обработку события ввода документа "на основании"?

?) "ОбработкаЗаполнения" с формальным параметром "Основание" произвольного типа

?) "ВводНаОсновании" с формальным параметром "Основание" типа "Документ"

?) Ввода документа "на основании" не требует дополнительных методов обработки, т.к. это процесс полностью автоматический

?) "ОбработкаЗаполнения" с формальным параметром "Основание" типа "Документ"

Тема/шкала: Лёгкий,Объектная модель прикладного решения

С помощью объекта какого типа можно перебирать элементы справочника?

Тема/шкала: Лёгкий,Объектная модель прикладного решения

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

?) в начале отработает процедура, определенная по подписке, затем процедура, расположенная в модуле объекта

?) процедура модуля объекта вызываться не будет (событие отрабатывается по подписке)

?) процедура подписки на событие вызываться не будет (событие отрабатывается в модуле объекта)

?) в начале отработает процедура, расположенная в модуле объекта, затем процедура, определенная по подписке

Тема/шкала: Лёгкий,Объектная модель прикладного решения

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

?) Адаптация программы под конкретные национальные требования

Тема/шкала: Лёгкий,Объектная модель прикладного решения

?) для разных объектов, но только одного вида (например, для нескольких справочников или для нескольких документов)

Тема/шкала: Лёгкий,Объектная модель прикладного решения

Тема/шкала: Лёгкий,Объектная модель прикладного решения

?) Построение иерархической структуры классифицирующих правил

?) Получение общестатистических показателей в виде дерева

?) Поиск часто встречаемых вместе групп объектов или значений характеристик

Тема/шкала: Лёгкий,Объектная модель прикладного решения

На что влияют региональные установки информационной базы?

Тема/шкала: Лёгкий,Объектная модель прикладного решения

Где может размещаться процедура-обработчик события "Нажатие" кнопки диалога?

?) Возможно либо в модуле формы, либо в модуле объекта. Определяется разработчиком

Тема/шкала: Лёгкий,Объектная модель прикладного решения

Каким образом можно сменить язык просмотра (редактирования) конфигурации?

?) Через пункт меню "Конфигурация — Язык редактирования конфигурации"

?) С помощью кнопки выбора языка, расположенной в строке состояния справа от кнопки "NUM"

Тема/шкала: Лёгкий,Объектная модель прикладного решения

?) Получение общестатистических показателей в виде дерева

?) Построение иерархической структуры классифицирующих правил

?) Поиск часто встречаемых вместе групп объектов или значений характеристик

Тема/шкала: Лёгкий,Объектная модель прикладного решения

?) Поиск часто встречаемых вместе групп объектов или значений характеристик

?) Построение иерархической структуры классифицирующих правил

?) Получение общестатистических показателей в виде дерева

Тема/шкала: Лёгкий,Объектная модель прикладного решения

Какой метод документа обеспечивает вызов события отмены проведения документа?

?) Записать(РежимЗаписиДокумента.ОтменаПроведения), где Записать — метод формы документа

?) ОтменитьПроведение(), где ОтменитьПроведение — метод формы документа

?) ОтменитьПроведение(), где ОтменитьПроведение — метод объекта документа

?) Записать(РежимЗаписиДокумента.ОтменаПроведения), где Записать — метод объекта документа

Тема/шкала: Лёгкий,Объектная модель прикладного решения

Какие виды программных модулей существуют в "1С:Предприятие 8"?

?) Модуль обычного приложения, модуль управляемого приложения, модуль внешнего соединения, модуль сеанса, общие модули и модули форм

?) Модуль обычного приложения, модуль управляемого приложения, общие модули, модуль сеанса, модули объектов, модули форм

?) Модуль обычного приложения, модуль управляемого приложения, модуль внешнего соединения, модуль сеанса, модуль команды, общие модули, модули менеджера, модули форм, модули объектов и модули набора записей

?) Модуль приложения, модуль внешнего соединения, модуль сеанса, общие модули, модули форм, модули макетов, модули объектов и модули набора записей

Эта статья продолжает цикл статей «Первые шаги в разработке на 1С». В ней будут рассмотрены следующие вопросы:

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

Применимость

Материал полностью актуален для платформы «1С:Предприятие 8» редакций 8.2. и 8.3.

Процедуры и функции

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

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

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

В итоге облегчается сопровождение прикладного решения.

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

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

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

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

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

Процедура или функция начинает описываться со слова Процедура (Функция). Далее следует Имя процедуры (функции). После имени обязательно указываются круглые скобки. Внутри скобок могут находиться описываемые параметры.

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

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

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

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

Описание процедур и функций

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

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

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

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

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

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

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

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

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

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

Если в теле процедуры-обработчика установить данному параметру значение Истина, то процедура не отработает.

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

Чтобы обратиться к списку процедур текущего модуля в панели конфигуратора можно нажать на кнопку в виде лупы с надписью «PROC» или использовать горячие клавиши (Ctrl+Alt+P).

Откроется диалоговое окно, в котором описаны функции F(x) и процедуры P( ). К ним возможно обращаться.

Список может быть отсортирован в алфавитном порядке (для этого устанавливается галочка «Сортировка»).

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

Список процедур в панели конфигуратора

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

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

Справа от кнопки с надписью «PROC» располагается поле. В этом поле указано имя текущей процедуры (функции).

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


PDF-версия статьи

Статья в PDF-формате

Читайте также: