Как определить переменную в 1с
Переменные 1С могут быть объявлены внутри функции или процедуры, а также в начале модуля (кроме общих модулей). Если переменная 1С объявлена в начале модуля — то ее можно назвать глобальной переменной 1С — для этого модуля.
Чтобы иметь к глобальной переменной 1С из другого модуля — необходимо объявить ее экспортной (слово ЭКСПОРТ после имени переменной 1С). Чтобы обратиться к такой переменной 1С необходимо написать имя модуля, точка, имя экспортной переменной 1С.
Далее — подробнее про переменные 1С, с примерами.
Создание переменной 1С в модуле, например:
ПЕРЕМ Переменная1;
Начальное значение у такой переменной 1С будет Неопределено (см. далее), пока далее в коде не будет присвоено явно другое значение.
ПЕРЕМ можно использовать только в начале модуля или в начале процедуры/функции. Нельзя использовать в общих модулях.
Так как переменную 1С гораздо проще создать, когда она нужна, просто назначив ей значение, например:
Переменная1 = 22;
, то ПЕРЕМ обычно используют для создания глобальных (экспортных) переменных 1С.
Простая переменная 1С доступна («видна») в том модуле (в той процедуре/функции), где она создана. Если же переменная 1С глобальная, то она будет видна из других модулей.
Особенностью является то, что переменные 1С объявленные внутри цикла, условия Если — видны во всей функции/процедуре, а не только в объявленной части модуля. Если при выполнении в данное «Если» захода не было, то значение переменной НЕОПРЕДЕЛЕНО.
Пример создания экспортной переменной 1С:
Только зарегистрированные пользователи VIP группы могут видеть этот контент.
Пример доступа к экспортной переменной 1С, созданной в модуле объекта справочника Номенклатура:
Только зарегистрированные пользователи VIP группы могут видеть этот контент.
Пример доступа к экспортной переменной 1С, созданной в модуле формы элемента справочника Номенклатура:
Только зарегистрированные пользователи VIP группы могут видеть этот контент.
Проголосовать за этот пост:
Переменные в 1С 8.2 и 8.3
Во встроенном языке программирования 1С используются переменные. Имена переменных должны начинаться с английского или русского символа, или подчеркивания. Нельзя чтобы наименование переменной начиналось с цифры. Не рекомендуется именовать переменные зарезервированными синтаксическими конструкциями. Имена переменных должны носить осмысленный характер. Это улучшает читабельность программного кода. Что в последующем увеличивает скорость разработки или доработки приложения. При объявлении переменных не требуется указывать тип значения, как это делается во многих других языках программирования. Тип значения определяется автоматически системой.
Локальные переменные
Локальные переменные определяются внутри процедур или функций. Перед ними необязательно писать ключевое слово «Перем». Область доступности таких переменных ограничена границами своей процедуры или функции. То есть, к такой переменной нельзя обратиться в другой процедуре или функции или из глобального контекста.
Функция РассчитатьСумму()
Сумма = 1;
Возврат Сумма;
КонецФункции;
Глобальные переменные
Во многих языках программирования предусмотрено создание глобальных переменных. Во встроенном языке 1С, так же есть возможность создавать глобальные переменные. Такие переменные доступны во всех процедурах и функциях модуля в котором они определены. В языке программирования 1С глобальные переменные могут быть определены в любых модулях (объектов, форм, и т.д) кроме общих модулей. Глобальные переменные задаются в самом верху модуля, перед определением всех процедур и функций. Перед именем переменной пишется ключевое слово «Перем». Значение указывать нельзя. Значение глобальной переменной можно задать в процедурах, функциях модуля или в конце модуля после всех процедур и функций.
Перем гСумма;
Функция РассчитатьСумму()
гСумма = 1;
КонецФункции;
//При данном варианте, значение переменной устанавливается при создании объекта
гСумма = 2;
Экспортные переменные
Глобальную переменную можно сделать экспортной, указав ключевое слово «Экспорт». Например, если экспортная переменная создаётся в модуле объекта справочника, то к ней можно обратиться через объект этого справочника, СправочникОбъект.ИмяПеременной.
Перем гСумма Экспорт;
Комментарии (0)
| О сайте | Обратная связь | Правила | Новости 1С | Copyright © 2023 Цитирование материалов (тексты, изображения, программный код) допускается только с размещением активной ссылки на сайт 1CLenta.ru |
1С объявление переменных
Это именованное значение данных для хранения и последующего доступа.
Могут быть произвольного допустимого в рамках 1С и контекста типа.
Далее под «модулем» будет подразумеваться блок исполнения кода, который связан с объектами системы (приложение,форма, справочник, документ и другие), детально будут рассмотрены в других разделах.
Под «контекстом» будет подразумеваться модуль и окружение которому этот модуль принадлежит.
Объявление переменных
Явное объявление переменных в 1с, в общем случае, не обязательно и может производится непосредственно перед использованием.
Для явного используется служебное имя «Перем«, которое регистронезависимое (допустимо использование, например»ПеРЕМ«).
Примеры явного объявления переменной:
// обычная переменная Перем МояПеременная1; // экспортная переменная Перем МояВидимаяПеременная2 Экспорт;
Пример объявления в функции:
В данном случае мы видим две переменные :
- «ПараметрФункции«, которую нам передали при вызове, она объявлена в месте вызова, и возможно с другим именем.
- «ПеременнаяФункции1» — новая переменная, которая действует только в рамках функции
Функция НекаяФункция(ПараметрФункции) Перем ПеременнаяФункции1; //Далее код КонецФункции
Именование переменных
Переменные должны именоваться, начинаясь с символов русского или английского алфавита или символа подчеркивания(«_»).
Не могут начинаться на цифру, но могут ее содержать.
Не рекомендуется именовать переменные используя имена конструкций языка, свойств реквизитов объектов, в некоторых случаях система не даст этого сделать, в других может привести к неявным ошибкам.
Например, находясь в контексте формы, нельзя использовать имя переменной Заголовок, т.к. в этом случае будет происходить непосредственное изменение заголовка окна формы.
Имя должно быть понятным, запоминаемым. Допускается использование префиксов для удобства восприятия, например: лЛокальнаяПеременная, фПеременнаяФормы.
Обычно применяется выделение регистром для визуального осмысления: ВременнаяПеременнаяДляХраненияПромежуточныхРасчетов
Длина имени переменных не ограничена в разумных пределах, опирайтесь на удобство чтения кода.
Инициализация переменных
Платформа инициализирует переменные значением «Неопределено» по умолчанию
В момент объявления переменные явно присвоить значение возможно только, если это параметр функции
- ПараметрфункцииИнициализируемый — если не передан параметр в функцию он будет инициализирован строковым значением 123
- ПеременнаяФункции2 — переменная инициализирована после объявления
- ПеременнаяФункции3 — переменная инициализирована по имени и значением, без явного объявления
Функция НекаяФункция(ПараметрФункцииИнициализируемый="123") Перем ПеременнаяФункции2; ПеременнаяФункции2 = 321; ПеременнаяФункции3 = "321Пуск"; КонецФункции
Последний вариант ничем не хуже второго и повсеместно используется, но явная инициализация, признается более «правильной«
Также не является обязательным инициализация ранее объявленной переменной сразу, это может быть сделано непосредственно перед использование.
Допустимо не переопределять значение «Неопределено«, т.к. всегда можно проверить тип значение или содержимое
Видимость переменных
В версии 8 в отличии от 7.7. глобальных переменных не существует и их видимость определяется контекстом исполнения
- под контекстом в данном случае понимается модуль текущего объекта
- в некоторых модулях допустима инициализация переменных в начале, что позволит использовать переменных неограниченно в любой точке данного модуля (модуль приложения, формы, объекта и другие)
- в других такое недопустимо (модуль команды, модуль веб-сервисов)
- допустима передача значений или ссылки на значение переменой в функции(процедуры)
- к экспортным переменным допустимо обращение из других объектов (модулей, объявляются служебным регистронезависимым словом «Экспорт» через пробел от имени)
Передача значений переменных
- Не ограничивается передача значений внутри процедуры или функции
- Передача значений между процедурами внутри модуля объекта, допустимо при совместимых местах исполнения («клиентклиент»,»серверсервер»)
- Ограниченная передача при несовместимых местах выполнения кода или передача в другие объект
- примитивные типы: строка, число, дата переносятся без ограничений
- объектные типы и коллекции переносятся, если в среде возможно использование данных типов, либо не запрещается их передача («мутабельные» типы)
Более подробно на последнем случае останавливаться не буду, т.к. это один уроков, который вы должны пройти самостоятельно. Система вам сообщит, когда вы наступите на «грабли«, а объяснить простыми не получится.
В случае, если вам все-таки требуется передать значение, необходимо:
- подумать над тем, верный ли выбрали тип или место исполнения (возможно вы гоняете не те данные или не туда)
- использовать более универсальный тип для передачи
- преобразовывать тип в более простой перед транспортировкой, и обратно преобразовывать в месте получения
Конвертация значений будет рассмотрена в других разделах.
Замечу лишь, что примитивные типы конвертируется более просто, при соблюдении условий «авто-приведения», объекты обычно через их методы, либо уже написанием кода преобразования.
Если новая модель не удалась, позаботься о рекламе изделия.
— Артур Блох
Глава 3
Объявление переменныхВ языке переменные не обязательно объявлять в явном виде. Неявным определением переменной является первое ее появление в левой части оператора присваивания. Возможно также явное объявление переменной при помощи оператора Перем . Тип переменной определяется типом присвоенного ей значения. Не допускается использование в выражениях переменных с неопределенным значением (то есть переменных, которым никогда не присваивалось значения).
Переменные могут объединяться в массивы. В данной реализации программы предусмотрены только одномерные массивы.
Оператор объявления переменной
Перем
Объявление переменной в явном виде.
Англоязычный синоним:
Необязательная числовая константа (записывается в квадратных скобках), указывается только в том случае, если объявляется массив и должна представляться в виде положительного целого числа.
Необязательное ключевое слово Экспорт указывает, что данная переменная станет доступна для других модулей. Использование данного ключевого слова имеет смысл только в глобальном программном модуле.
Оператор Перем в явном виде объявляет переменную.
Область использования переменной
Область использования переменных зависит от места их определения в конфигурации задачи. Существует три области, в которых можно объявить переменные:
· В разделе определения переменных глобального программного модуля. Если переменные определены с ключевым словом Экспорт (см. оператор Перем ), то это будут глобальные переменные.
· В разделе определения переменных модуля. Это переменные модуля.
· В процедуре или функции. Это локальные переменные.
Глобальные переменные доступны для использования в исполняемых операторах, выражениях, в любой процедуре и функции любого программного модуля конфигурации задачи.
Переменные модуля доступны для использования в исполняемых операторах, выражениях, в любой процедуре и функции того программного модуля, в пределах которого они объявлены.
Локальные переменные доступны в пределах той процедуры или функции, в которой они объявлены.
Если переменная определена как глобальная переменная, то она видна из всех процедур и функций любого программного модуля конфигурации задачи. Если же переменная определена внутри процедуры, то её областью видимости является данная процедура или функция. Таким образом, если две переменные с одинаковыми именами используются в двух различных процедурах модуля, и имя этой переменной не упоминается как глобальная переменная, то это две различные переменные, локальные для процедур. Если же переменная определена как глобальная переменная, то любое использование имени этой переменной будет приводить к обращению к одной и той же переменной.
Единственный способ создать для процедуры локальную переменную с именем, совпадающим с именем переменной, определенной как глобальная переменная — это объявить ее явно при помощи оператора Перем .
