1С 8.3 Процедуры и Функции
Данные > Примеры кода 1С > 1С 8.3 Процедуры и Функции
Процедуры и функции в 1С 8.3 - это обработчики событий, служащие для вызова из разных мест программного кода для выполнения различных операций. Функция в отличии от процедуры может вернуть результат вычислений без определения параметра. Параметры в функциях и процедурах 1С - это ссылки на переменные (или их значения "ЗНАЧ"), существующие в месте вызова.
Оглавление:
Возврат значения из функции в 1С 8.3:
&НаКлиенте
Функция Округление1(ПараметрЧисло, ПараметрЗнОкр)
Возврат Окр(ПараметрЧисло,ПараметрЗнОкр);//3.1415926535, 2
КонецФункции
&НаКлиенте
Процедура ИсполняемаяПроцедура1(Команда)
ТекущееЧисло=3.1415926535;
КолЗнОкр=2;
ОкругленноеЧисло = Округление1(ТекущееЧисло,КолЗнОкр);
Сообщить(ОкругленноеЧисло); // 3.14
КонецПроцедуры
Функция Округление1(ПараметрЧисло, ПараметрЗнОкр)
Возврат Окр(ПараметрЧисло,ПараметрЗнОкр);//3.1415926535, 2
КонецФункции
&НаКлиенте
Процедура ИсполняемаяПроцедура1(Команда)
ТекущееЧисло=3.1415926535;
КолЗнОкр=2;
ОкругленноеЧисло = Округление1(ТекущееЧисло,КолЗнОкр);
Сообщить(ОкругленноеЧисло); // 3.14
КонецПроцедуры
Вызов функции без некоторых параметров в 1С 8.3:
&НаКлиенте
Функция СообщениеПараметров2(ПараметрЧисло, ПараметрДата, ПараметрСтрока = "Строковое значение")
Сообщить(ПараметрЧисло);// 2020
Сообщить(ПараметрДата);// Неопределено
Сообщить(ПараметрСтрока);// "Строковое значение"
КонецФункции
&НаКлиенте
Процедура ИсполняемаяПроцедура2(Команда)
// Если у функции несколько параметров, то ненужный можно пропустить (указав запятую)
// при этом будет передано или Неопределено или значение по-умолчанию (в параметрах самой функции)
СообщениеПараметров2(2020,,); // <2020> <Неопределено> <"Строковое значение">
КонецПроцедуры
Функция СообщениеПараметров2(ПараметрЧисло, ПараметрДата, ПараметрСтрока = "Строковое значение")
Сообщить(ПараметрЧисло);// 2020
Сообщить(ПараметрДата);// Неопределено
Сообщить(ПараметрСтрока);// "Строковое значение"
КонецФункции
&НаКлиенте
Процедура ИсполняемаяПроцедура2(Команда)
// Если у функции несколько параметров, то ненужный можно пропустить (указав запятую)
// при этом будет передано или Неопределено или значение по-умолчанию (в параметрах самой функции)
СообщениеПараметров2(2020,,); // <2020> <Неопределено> <"Строковое значение">
КонецПроцедуры
Передача в процедуру параметра (в виде ссылки) в 1С 8.3:
&НаКлиенте
Процедура ИзменениеПараметра3(ПараметрСсылка)
// Изменение значения внутри и снаружи
ПараметрСсылка = 2020;
КонецПроцедуры
&НаКлиенте
Процедура ИсполняемаяПроцедура3(Команда)
Перем ГодЗаписи;
ГодЗаписи = 2019;
Сообщить(ГодЗаписи);// ГодЗаписи = 2019
ИзменениеПараметра3(ГодЗаписи);
Сообщить(ГодЗаписи);// ГодЗаписи = 2020
КонецПроцедуры
Процедура ИзменениеПараметра3(ПараметрСсылка)
// Изменение значения внутри и снаружи
ПараметрСсылка = 2020;
КонецПроцедуры
&НаКлиенте
Процедура ИсполняемаяПроцедура3(Команда)
Перем ГодЗаписи;
ГодЗаписи = 2019;
Сообщить(ГодЗаписи);// ГодЗаписи = 2019
ИзменениеПараметра3(ГодЗаписи);
Сообщить(ГодЗаписи);// ГодЗаписи = 2020
КонецПроцедуры
Передача в процедуру параметра (в виде значения) в 1С 8.3:
&НаКлиенте
Процедура ИзменениеПараметра4(Знач ПараметрЗначение)
// Изменение значения только внутри процедуры
ПараметрЗначение = 2020;
КонецПроцедуры
&НаКлиенте
Процедура ИсполняемаяПроцедура4(Команда)
Перем ГодЗаписи;
ГодЗаписи = 2019;
Сообщить(ГодЗаписи);// ГодЗаписи = 2019
// Только для простых типов (строка, число, дата), сложные объекты всё равно будут переданы в виде ссылки
ИзменениеПараметра4(ГодЗаписи);
Сообщить(ГодЗаписи);// ГодЗаписи = 2019 (остался прежним)
КонецПроцедуры
Процедура ИзменениеПараметра4(Знач ПараметрЗначение)
// Изменение значения только внутри процедуры
ПараметрЗначение = 2020;
КонецПроцедуры
&НаКлиенте
Процедура ИсполняемаяПроцедура4(Команда)
Перем ГодЗаписи;
ГодЗаписи = 2019;
Сообщить(ГодЗаписи);// ГодЗаписи = 2019
// Только для простых типов (строка, число, дата), сложные объекты всё равно будут переданы в виде ссылки
ИзменениеПараметра4(ГодЗаписи);
Сообщить(ГодЗаписи);// ГодЗаписи = 2019 (остался прежним)
КонецПроцедуры
Передача в процедуру массива (в виде значения) в 1С 8.3:
&НаКлиенте
Процедура ИзменениеПараметра5(ПараметрМассив)
// Изменение первого элемента массива
ПараметрМассив[0] = 2021;
// ПараметрМассив = 2021 и 2020
КонецПроцедуры
&НаКлиенте
Процедура ИсполняемаяПроцедура5(Команда)
Года = Новый Массив();
Года.Добавить(2019);
Года.Добавить(2020);
// Создание копии массива через список значений
КопияГода = Новый СписокЗначений;
КопияГода.ЗагрузитьЗначения(Года);
КопияГода = КопияГода.ВыгрузитьЗначения();
// Вызов процедуры, меняющую переданный массив (копия: Года)
ИзменениеПараметра5(КопияГода);
// После вызова процедуры в массиве Года по прежнему = 2019 и 2020
КонецПроцедуры
Процедура ИзменениеПараметра5(ПараметрМассив)
// Изменение первого элемента массива
ПараметрМассив[0] = 2021;
// ПараметрМассив = 2021 и 2020
КонецПроцедуры
&НаКлиенте
Процедура ИсполняемаяПроцедура5(Команда)
Года = Новый Массив();
Года.Добавить(2019);
Года.Добавить(2020);
// Создание копии массива через список значений
КопияГода = Новый СписокЗначений;
КопияГода.ЗагрузитьЗначения(Года);
КопияГода = КопияГода.ВыгрузитьЗначения();
// Вызов процедуры, меняющую переданный массив (копия: Года)
ИзменениеПараметра5(КопияГода);
// После вызова процедуры в массиве Года по прежнему = 2019 и 2020
КонецПроцедуры
Установка значения (по умолчанию) для параметра процедуры в 1С 8.3:
&НаКлиенте
Процедура ИзменениеПараметра6(Фамилия = "Не задано", Имя = "Дмитрий", Отчество)
Сообщить(Фамилия + " " + Имя + " " + Отчество);
КонецПроцедуры
&НаКлиенте
Процедура ИсполняемаяПроцедура6(Команда)
ИзменениеПараметра6("Протасов", "Илья", "Константинович"); // <Протасов> <Илья> <Константинович>
ИзменениеПараметра6(, "Илья", "Константинович"); // <Не задано> <Илья> <Константинович>
ИзменениеПараметра6(, , "Константинович"); // <Не задано> <Дмитрий> <Константинович>
ИзменениеПараметра6(, , ); // <Не задано> <Дмитрий> <Неопределено>
КонецПроцедуры
Процедура ИзменениеПараметра6(Фамилия = "Не задано", Имя = "Дмитрий", Отчество)
Сообщить(Фамилия + " " + Имя + " " + Отчество);
КонецПроцедуры
&НаКлиенте
Процедура ИсполняемаяПроцедура6(Команда)
ИзменениеПараметра6("Протасов", "Илья", "Константинович"); // <Протасов> <Илья> <Константинович>
ИзменениеПараметра6(, "Илья", "Константинович"); // <Не задано> <Илья> <Константинович>
ИзменениеПараметра6(, , "Константинович"); // <Не задано> <Дмитрий> <Константинович>
ИзменениеПараметра6(, , ); // <Не задано> <Дмитрий> <Неопределено>
КонецПроцедуры
Объявление локальных переменных в процедуре в 1С 8.3:
&НаКлиенте
Процедура ОбъявлениеПеременных7()
// Объявляние переменных может быть только в самом начале перед выполнением кода
Перем ГодЗаписи1, ГодЗаписи2;
Перем ГодЗаписи3;
ГодЗаписи1 = 2019;
ГодЗаписи2 = 2020;
ГодЗаписи3 = 2021;
КонецПроцедуры
&НаКлиенте
Процедура ИсполняемаяПроцедура7(Команда)
ОбъявлениеПеременных7();
КонецПроцедуры
Процедура ОбъявлениеПеременных7()
// Объявляние переменных может быть только в самом начале перед выполнением кода
Перем ГодЗаписи1, ГодЗаписи2;
Перем ГодЗаписи3;
ГодЗаписи1 = 2019;
ГодЗаписи2 = 2020;
ГодЗаписи3 = 2021;
КонецПроцедуры
&НаКлиенте
Процедура ИсполняемаяПроцедура7(Команда)
ОбъявлениеПеременных7();
КонецПроцедуры
Создание и вызов общей процедуры из локальных модулей в 1С 8.3:
&НаКлиенте
Процедура Инициализация8() Экспорт // Процедура в общем модуле <Назначения>
Сообщить("Экспортная процедура Инициализация8 вызвана!");
КонецПроцедуры
&НаКлиенте
Процедура ИсполняемаяПроцедура8(Команда)
// Вызов экспортной процедуры Инициализация8 из общего модуля <Назначения>
Назначения.Инициализация8();
КонецПроцедуры
Процедура Инициализация8() Экспорт // Процедура в общем модуле <Назначения>
Сообщить("Экспортная процедура Инициализация8 вызвана!");
КонецПроцедуры
&НаКлиенте
Процедура ИсполняемаяПроцедура8(Команда)
// Вызов экспортной процедуры Инициализация8 из общего модуля <Назначения>
Назначения.Инициализация8();
КонецПроцедуры
💡 Шаблоны (готовые модели) кода 1С 8.3 с тегом #Процедуры и функции:
0
комментарии
____________________
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник