Как выйти из процедуры 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) оттуда-же
Возврат []
— значение возвращаемое функцией.
Замечание:
Возвращаемое значение обязательно. при завершении функции

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

PROИТ

Office 365, AD, Active Directory, Sharepoint, C#, Powershell. Технические статьи и заметки.

1С 8.3. Как прервать выполнение процедуры (принудительный выход)

Дано : 1С, версия платформы 8.3. Написан определенный код процедуры.
Задача : прервать выполнение процедуры, чтобы не выполнялся определенный код.

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

Процедура ДПВ_ПредставлениеПредставительВузаНачалоВыбора ( Элемент , ДанныеВыбора , СтандартнаяОбработка )

// здесь много кода
ЭлементПредставительВуза = Элементы . Найти ( «ПредставительВуза» );
// если не найден элемент «представитель вуза»,
// тогда принудительно выходим из процедуры
Если ЭлементПредставительВуза = Неопределено Тогда Возврат ; КонецЕсли ;
// здесь много кода
КонецПроцедуры

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

Если же нужно прервать выполнение функции без возвращения какого-либо значения, то можно написать так:

Возврат Неопределено ;

Если Вам понравилась статья, пожалуйста, поставьте лайк, сделайте репост или оставьте комментарий. Если у Вас есть какие-либо замечания, также пишите комментарии.

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

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

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

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

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

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

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

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

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

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

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

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

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

См. также

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

Как выйти из процедуры 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 группы могут видеть этот контент.

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

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

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