1C-Code → Теория → Язык: что ведёт себя не так, как ждёшь
Язык: что ведёт себя не так, как ждёшь в 1С
Параметры по ссылке и Знач, копии коллекций, исключения, кэш повторного использования, Асинх.
Ниже — 2 вопроса с разбором. Всего по этой теме
8 вопросов, и в тренажёре они задаются вперемешку
и без подсказок: там проверяется, что тема уложилась, а не что её
приятно читать.
Процедура Изменить(Сумма) присваивает Сумма = 0. Что будет с переменной, которую передали при вызове?
Не изменится: процедура работает с копией значения
Станет 0: без Знач параметр передаётся по ссылке — верно
Станет 0, только если процедура помечена Экспорт
Не изменится, но в отладчике будет видна как 0
Без Знач параметр передаётся по ссылке, и присваивание внутри меняет переменную вызывающего. Знач перед именем параметра делает копию, и тогда внешняя переменная останется прежней.
Функция Обработать(Знач Список) вызывает Список.Добавить(1). Что станет с массивом, который передали?
Ничего: Знач сделал копию массива целиком
Будет ошибка: параметр со Знач менять нельзя
В нём тоже появится 1: Знач скопировал ссылку — верно
Изменится, только если это ФиксированныйМассив
Для массива, структуры, таблицы значений Знач копирует ссылку, а не сам объект. Присвоить параметру другой массив внешний код не заметит, но Добавить меняет тот же самый массив.
О чём ещё спрашивают по этой теме
Написали Т2 = Т1 для таблицы значений и удалили строку из Т2. Что с Т1?
Внутри Исключение ... КонецПопытки нужно записать в журнал полный текст ошибки со стеком. Что взять?
Что делает ВызватьИсключение без параметров внутри блока Исключение?
Функция общего модуля с повторным использованием «на время сеанса» возвращает Массив. Чем это опасно?
В обработке строку из поля ввода передают в Выполнить(). Что не так?
Что возвращает функция, объявленная с ключевым словом Асинх?