Как выйти из процедуры 1с
Перейти к содержимому

Как выйти из процедуры 1с

  • автор:

Как выйти из процедуры 1с

Да вы что, все тупые тут что-ли.
Вам же сказали, что Возврат — это для функции!! А вы продолжаете долбить.
Наберут, блин, дятлов от ларька.

Если возврат не для процедуры. то 1С точно не для тебя
(21) я на 77 99% времени
(18) Убеждения крепче веры?
Та напиши ты уже в своей процедуре

Возврат;
А точно спасибо))) яж говорил что у меня ошибка в ДНК))))
Ура! В конце то концов нашел то наконец как выйти из процедуры!
И немного критики )
wiki:Спагетти-код
(0)че бы не возврат?
v8: Подскажите какие беруши выбрать для работы?
Выбрал все-таки, наверное.
(24) Ты удивишься, но в 7.7 возврат и для процедуры работает.
(33) что черьёзно. блин с 2003 года работаю не знал((( знал бы раньше легче работать былоб))))
(18) кто тебе такое сказал. Открой хотя бы процедуру ПриНачалеРаботыСистемы() и увидишь там возврат
Самое Тупо — кнопка reset
(34) А еще из функции можно не делать Возврат 🙂
(37) упс, в 77?
(0) ЗавершитьРаботуСистемы(ЛОЖЬ); гы!
+(38) гы, действительно необязательно . прикольненько 🙂

Стаж: 3г. и 6мес. и не научиться пользоваться Синтакс-Помощником.

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

(41) оттуда-же
Возврат []
— значение возвращаемое функцией.
Замечание:
Возвращаемое значение обязательно. при завершении функции

и при этом нижеследующая функция ничего про «обязательно» не знает :))
Функция Сформировать()
Сообщить(«Сформировать»);
КонецФункции

1С функции и процедуры

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

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

С помощью команды «Возврат;» осуществляется «выход» из выполняемой функции и процедуры 1С.

Функцией (и в этом заключается ее отличие от процедуры), выполняется «возврат» полученного результата вычислений, если будет написано «Возврат ЗНАЧЕНИЕ;».

Типизация функции 1С отсутствует, а потому возможно возвращение значения различных типов. Зависит это от параметров либо условий.

Возвращение функцией результата вычислений

Возврат Параметр * 2;

//Переменная1 будет равна 20

Параметры функции 1С и процедуры являются ссылками на переменные, присутствующие в месте вызова. Они подразумевают, что, если изменится параметр в «теле» функции1С, то аналогичное действие произойдет и «снаружи». Чтобы это исключить, передача параметра осуществляется со значением ПЕРЕМ.

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

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

Параметр = Параметр * 2;

//Результатом будет 20

Передача в процедуру значения переменной

Процедура Процедура1(ЗНАЧ Параметр)

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

Действия внутри функции, процедуры

Функция Функция1(Параметр1, Параметр2, Параметр3 = “Строковое значение”)

//Вызов функции без некоторых параметров

//параметр2 будет равен Неопределено

//параметр3 будет равен “Строковое значение”

//Вызов функции без второго параметра

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

  • нажимает кнопки;
  • открывает, закрывает форму;
  • прочие подобные действия.

Или платформой:

  • осуществляет запуск;
  • закрывает;
  • прочие подобные действия.

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

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

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

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

  • О компании
  • Контакты
  • Статусы компании
  • Вакансии
  • Акции
  • Отправить заявку
  • Часто задаваемые вопросы
  • Политика конфиденциальности
  • Оцените работу сотрудника
  • Обучающие материалы
  • Карта сайта
  • Реквизиты

Как выйти из процедуры 1с

Функции 1С и процедуры в 1С работают аналогично другим языкам — функция это именованная подпрограмма для вызова из других мест программного кода.

Далее подробнее про функции 1С и процедуры 1С.

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

Чтобы «выйти» из выполнения функции 1С и процедуры — используют команду «Возврат;». Функция (в отличии от процедуры) «возвращает» результат вычислений, то есть необходимо написать «Возврат ЗНАЧЕНИЕ;». Функции 1С не типизированы, значит могут возвращать значение разных типов, в зависимости от параметров или условий.

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

Функция Функция1(Параметр)
Возврат Параметр * 2;
КонецФункции

Переменная1 = Функция1(10);
//Переменная1 будет равна 20

Параметры функции 1С и процедуры — это ссылки на переменные, существующие в месте вызова. «Ссылка» — значит при изменении значения параметра «внутри» функции 1С, он будет изменен и «снаружи». Чтобы такого не происходило — параметр передают со значением ПЕРЕМ. Однако это не работает со значениями-объектами (списками, таблицами, объектами базы данных), они все-равно будут переданы по ссылке.

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

Процедура Процедура1(Параметр)
Параметр = Параметр * 2;
КонецПроцедуры

Переменная1 = 10;
Процедура1(Переменная1);
Сообщить(Переменная1);
//Результатом будет 20

Чтобы передать внутрь процедуры значение переменной, а не ее саму:

Процедура Процедура1(ЗНАЧ Параметр)
//действия..
КонецПроцедуры

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

Функция Функция1(Параметр1, Параметр2, Параметр3 = «Строковое значение»)
//Чтото делаем
КонецФункции

//Вызов функции без некоторых параметров
//параметр2 будет равен Неопределено
//параметр3 будет равен «Строковое значение»
Функция1(10);

//Вызов функции без второго параметра
Функция1(10, , «Значение»);

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

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

Только зарегистрированные пользователи VIP группы могут видеть этот контент.

Проголосовать за этот пост:

Работа с параметром «Отказ» в обработчиках событий

Область применения: управляемое приложение, мобильное приложение, обычное приложение.

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

Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты) . Отказ = ЕстьОшибкиЗаполнения(); . КонецПроцедуры
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты) . . . Если ЕстьОшибкиЗаполнения() Тогда Отказ = Истина; КонецЕсли; . КонецПроцедуры
Отказ = Отказ Или ЕстьОшибкиЗаполнения();

2. Эти же требования справедливы для других аналогичных параметров обработчиков событий: СтандартнаяОбработка , Выполнение и др.
Например:

Процедура ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка) Если Параметры.Свойства(. ) Тогда СтандартнаяОбработка = Ложь; . КонецЕсли; КонецПроцедуры

3. Неприемлемо в событиях объекта ПриЗаписи , ПередЗаписью , ПередУдалением , ОбработкаПроведения , ОбработкаПроверкиЗаполнения и т.п устанавливать параметр Отказ в значение Истина без информирования пользователя о причинах:

Процедура ОбработкаПроведения(Отказ, РежимПроведения)   Если Не ТоваровНаСкладеДостаточно() Тогда Отказ = Истина; Возврат; КонецЕсли;  . КонецПроцедуры

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

Не удалось записать «Заказ покупателя»!

Следует согласно пп. 1.1 и 1.3 стандарта Информирование пользователя корректно уведомить пользователя о причинах отказа с помощью сообщения или вызова исключения.

Процедура ОбработкаПроведения(Отказ, РежимПроведения)  Если Не ТоваровНаСкладеДостаточно() Тогда  ТекстСообщения = СтрШаблон(НСтр("ru='Не хватает %1 %2 товара %3, на складе %4'"), Количество, ЕдиницаИзмерения, Товар, Склад); ОбщегоНазначения.СообщитьПользователю(ТекстСообщения,, "Объект.Товары",, Отказ);  КонецЕсли;  . 

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

См. также

  • Информирование пользователя
  • Перехват исключений в коде
  • Сообщения пользователю

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *