Откладка модулей, переменные и параметры сеанса в 1С (8 из 100 дней)

Откладка модулей, переменные и параметры сеанса в 1С (8 из 100 дней)

Откладка в модулях

Откладка - это этап разработки компьютерной программы, на котором обнаруживают, локализуют и устраняют ошибки

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

- Чтобы установить точку останова, нужно выбрать строку, где надо прервать выполнение и нажать на клавиатуре "F9" или дважды щелкнуть мышкой на серое поле

Откладка модулей, переменные и параметры сеанса в 1С (8 из 100 дней)

- Перед установкой точки программный код должен быть сохранен

- Точка останова отображается в виде красного круга:

Откладка модулей, переменные и параметры сеанса в 1С (8 из 100 дней)

- Установив точку, нужно вызывать соответствующее событие в режиме откладки

- Когда 1С остановится в точке, желтой стрелкой будет подсвечена та строка, которая ещё не выполнена:

Откладка модулей, переменные и параметры сеанса в 1С (8 из 100 дней)

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

Чтобы пошагово выполнить код, нужно использовать:

- Клавишу "F10" - перейти к следующей строке текущего алгоритма

- Клавишу "F11" - в этом случае 1С попытается зайти во вложенный алгоритм (подпрограмму)

- При помощи специальных кнопок в конфигураторе

Откладка модулей, переменные и параметры сеанса в 1С (8 из 100 дней)

Просмотр значений переменных

Чтобы посмотреть значение в переменной, когда выполнение программы остановлено в режиме откладки, надо выделить переменную и нажать сочетание клавиш "Shift+F9" или выбрать соответствующий пункт в контекстном меню.

1. В открывшемся окне будет видно текущее значение переменной

Откладка модулей, переменные и параметры сеанса в 1С (8 из 100 дней)

2. Для динамического отслеживания переменной можно поместить её в табло

Откладка модулей, переменные и параметры сеанса в 1С (8 из 100 дней)

3. В конфигураторе откроется дополнительная панель, в которой можно наблюдать значение переменной

Процесс откладки - это один из важнейших этапов при разработке программного обеспечения.

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

Давайте рассмотрим на примере:

1. Поставим точки останова в модуле формы нашем документе

Откладка модулей, переменные и параметры сеанса в 1С (8 из 100 дней)

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

Откладка модулей, переменные и параметры сеанса в 1С (8 из 100 дней)

3. Теперь шагнем на пару шагов вперед, через "F10" и увидим, что результат вычислился в конечном итоге

Откладка модулей, переменные и параметры сеанса в 1С (8 из 100 дней)

Теперь давайте проследим в динамике за "показателем":

1. Запустим откладку, перейдем внутрь функции и выберем следующий пункт "Вычислить выражение"

Откладка модулей, переменные и параметры сеанса в 1С (8 из 100 дней)

2. В открытом окне выберем "Включить в табло", чтобы отслеживать значение динамически

Откладка модулей, переменные и параметры сеанса в 1С (8 из 100 дней)

3. Шагнем на несколько строк вперед до "Возврат показатель" и увидим, что у нас определился тип и значение параметра

Откладка модулей, переменные и параметры сеанса в 1С (8 из 100 дней)

4. Завершая ход выполнения программы, увидим наш ответ на платформе

Откладка модулей, переменные и параметры сеанса в 1С (8 из 100 дней)

Переменные и параметры сеанса

Переменная - это некая переменная величина, которая в данный момент неизвестна. Вместо неё в формулу может быть подставлено нечто, и формула будет правильной.

Примеры "переменной":

Откладка модулей, переменные и параметры сеанса в 1С (8 из 100 дней)

"Именованный контейнер" для значения

Откладка модулей, переменные и параметры сеанса в 1С (8 из 100 дней)

Такая запись "МояПеременная" называется "Присваивание", а само символ "=" - оператор присваивания.

Мы можем использовать эту же переменную для объявления других переменных, например:

Откладка модулей, переменные и параметры сеанса в 1С (8 из 100 дней)

То как мы воспользовались переменной называется "Неявным" объявлением переменных, однако есть объявление переменных явно:

Откладка модулей, переменные и параметры сеанса в 1С (8 из 100 дней)

Давайте разберемся на практике:

1. Создадим новую обработку "ОбработкаПеременной", а также зададим ровно одну команду "СозданиеПеременной"

Откладка модулей, переменные и параметры сеанса в 1С (8 из 100 дней)

2. Пропишем три переменные с разным типом объявления

Откладка модулей, переменные и параметры сеанса в 1С (8 из 100 дней)

- Объявление через "Перем" и через "Неопределено" выполняет одну и ту же функцию, но объявление "Перем" требует, что она всегда находилась в НАЧАЛЕ модуля.

Простейшим аналогом в реальной жизни может быть заметка в блокноте:

Откладка модулей, переменные и параметры сеанса в 1С (8 из 100 дней)

Важно:

- При присваивании нового значения в переменную старое значение исчезает

- Одна переменная может хранить только одно значение

Посмотрим на практике:

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

Откладка модулей, переменные и параметры сеанса в 1С (8 из 100 дней)

2. Пройдем несколько шагов и увидим, что значение приобрели следующее

Откладка модулей, переменные и параметры сеанса в 1С (8 из 100 дней)

3. Пройдя ещё несколько шагов, увидим что случилось переобъявление переменных

Откладка модулей, переменные и параметры сеанса в 1С (8 из 100 дней)

И это показывает, что переменная может хранить только одно значение, а старое стирается, когда объявляют его заново.

Теперь рассмотрим, как можно менять значения переменных местами:

1. Объявим наши переменные

2. Создадим переменную "Временная" и присвоим ей "МояПеременная1", а для "МояПеременная1" присвоим "МояПеременная2" и сделать это наоборот соответственно

Откладка модулей, переменные и параметры сеанса в 1С (8 из 100 дней)

3. Увидим, как изменились значения

Откладка модулей, переменные и параметры сеанса в 1С (8 из 100 дней)

Именование переменных

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

- Регистр букв (прописные или строчные) и алфавит (латиница или кириллица) не имеют значения

- Программе все равно, как вы назовете переменную

- Существуют рекомендации в самой фирме 1С, они являются стандартами разработки

Откладка модулей, переменные и параметры сеанса в 1С (8 из 100 дней)

Называть переменные нужно:

1. С большой буквы, избегать подчеркивания и излишние сокращения

2. Называть переменные на том языке, на котором вы пишите код модулей

3. Должны полно и точно описывать её значение в терминах предметной области

Откладка модулей, переменные и параметры сеанса в 1С (8 из 100 дней)

Для более быстрой разработки используйте "ctrl + backspace (пробел)"

Откладка модулей, переменные и параметры сеанса в 1С (8 из 100 дней)

Область видимости

Каждая переменная имеет имя, и это имя несет какой-то значение.

Существует определенная "популярность" имен. Например, переменная "Сумма" довольно часто может использоваться в финансовой программе во многих местах

Переменная "Сумма" может использоваться для разных смыслов и разных сумм:

- Сумма зарплаты

- Сумма по счету

- Сумма НДС

ВАЖНО:

В одной и той же области видимости нельзя объявить две разные переменные с одним

Область видимости - это зона, граница, в которой имя переменной считается одним и тем же контейнером значения.

Существует 3 области видимости:

1. Глобальный контекст

2. Контекст модуля

3. Контекст метода

- Большинство переменных существуют и доступны только в той области кода, где созданы

Значение переменной "ТекстСообщения" недоступно вне обработчика события "ПриНачалеРаботыСистемы" и не существует после завершения обработчика.

Откладка модулей, переменные и параметры сеанса в 1С (8 из 100 дней)

- Не стоит объявлять переменные вдали от места их первого использования. Это ухудшает читаемость кода и приводит к ошибкам.

- Созданные объекты не нужно специально уничтожать. Платформа сама следит за тем, чтобы ненужные переменные не занимали память, и уничтожает их

Ключевое слово "Экспорт"

Существует возможность "расширить" область видимости для того или иного имени.

Если нужно, чтобы переменная была видна за пределами модуля, её нужно пометить словом "Экспорт".

Это сделает её доступной извне модуля.

Давайте на примере рассмотрим область видимости переменных:

1. Создадим в нашей обработке ещё две новые команды "ОбластьВидимости1" и "ОбластьВидимости2", а также пропишем следующий код, установив две точки остановки

Откладка модулей, переменные и параметры сеанса в 1С (8 из 100 дней)

2. Проследим ход работы увидим два разных значения при выполнении двух обработчиков, что говорит нам о том, что переменная "Сумма" находится только в области видимости конкретного обработчика.

Откладка модулей, переменные и параметры сеанса в 1С (8 из 100 дней)

Попробуем расширить область определения:

1. Создадим в форме реквизит "Сумма", который будет работать глобально в рамках этого модуля

Откладка модулей, переменные и параметры сеанса в 1С (8 из 100 дней)

2. Попробуем запустить обработчик и проследим, что изначально сумма уже объявлена, как число со значением "0". Пока мы будем проходить наши обработки, то сумма будет записывать/перезаписывать в себя результат работы и запоминать его.

Откладка модулей, переменные и параметры сеанса в 1С (8 из 100 дней)

Чтобы объявлять переменные, процедуры, функции и многое другое глобально - нужно прописывать в конце всего "Экспорт"

Модуль сеанса и параметры сеанса

Сеанс - это один конкретный вход пользователя в систему

В 1С это важное понятие

Например:

- Если пользователь с одного компьютера откроет пять окон 1С и каждое будет открыто под его учетными данными, все равно будет пять сеансов

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

- Сеанс начинается в момент входа в система, сразу после ввода пароля

- Сеанс начинается на сервере, и в момент начала сеанса мы можем вмешаться в процесс и определить какие-либо настройки нового сеанса

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

Важно

Параметры сеанса существуют только на сервере.

Параметр сеанса - это способ сохранить какое-либо значение на время работы сеанса пользователя, переменная на сервере, характеризующая сеанс.

Примеры параметра сеанса:

- Текущий пользователь

- Тип запущенного приложения: мобильное приложение, веб-клиент, тонкий клиент

- Операционная система

- Настройки

Параметры сеанса добавляются в дереве метаданных, в ветке "Общие".

Откладка модулей, переменные и параметры сеанса в 1С (8 из 100 дней)

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

- Обычно начальные значения параметров сеанса устанавливают в модуле сеанса

- Модуль сеанса вызывает первым при начале работы пользователя с системой. В момент открытия клиентского окна уже можно обращаться к сеансовым параметрам

Директивы препроцессора

Препроцессор означает "Предобработчик":

Откладка модулей, переменные и параметры сеанса в 1С (8 из 100 дней)

1. Препроцессор вырезает из кода программы те или иные конструкции

2. Получившийся текст отдается программе для выполнения

3. Внутри вырезаемого блока может быть любой текст, даже тот, который не является синтаксически корректной программой

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

- Параметров сеанса должно быть немного, а их изменение - происходить как можно реже.

Давайте рассмотрим работу параметра сеанса на практике:

1. Создадим "параметр сеанса" с именем "ВидКлиента" с длинной "25" и пропишем следующий код в модуле сеанса:

Откладка модулей, переменные и параметры сеанса в 1С (8 из 100 дней)

2. Соберем протип кода в "модуле приложения" с помощью директив препроцессора, так как модуль приложения выполняется на стороне клиентского сервера, а модуль сеанса на стороне сервере, нам понадобится общий модуль для сервера

Откладка модулей, переменные и параметры сеанса в 1С (8 из 100 дней)

3. Создадим общий модуль "ПараметрыСеансаСервер" и пропишем следующий код

Откладка модулей, переменные и параметры сеанса в 1С (8 из 100 дней)

4. Для работы с сервером создадим общий модуль "ПараметрыСеансаВызовСервера" и пропишем следующий код, который несет в себе интерфейсные процедуры (Выполняют лишь вызов этих функций)

Откладка модулей, переменные и параметры сеанса в 1С (8 из 100 дней)

5. Вызовем наши процедуры в модуле приложения

Откладка модулей, переменные и параметры сеанса в 1С (8 из 100 дней)

6. Поставим точку постановки в модуле сеанса и запусти откладку в разных клиентах

Сначала увидим, что переменная "ВидКлиента" - "не задан".

Откладка модулей, переменные и параметры сеанса в 1С (8 из 100 дней)

Когда мы пройдем весь по всей программе значение изменится и мы увидим, что клиент запущен с тонкого клиента:

Откладка модулей, переменные и параметры сеанса в 1С (8 из 100 дней)

Возможно пример не понятен, поэтому рассмотрим другой - позволим клиенту видеть сколько секунд прошла с момента запуска сеанса:

0. Создадим новый параметр сеанса "ТекущаяДата" с типом дата и объявим это в модуле сеанса

1. Создадим новую команду в форме обработке "СколькоСекундПрошло"

2. Пропишем следующий код в общем модуле "ПараметрыСеансаСервер"

Откладка модулей, переменные и параметры сеанса в 1С (8 из 100 дней)

3. Пропишем код в общем модуле "ПараметрыСеансаВызовСервера"

Откладка модулей, переменные и параметры сеанса в 1С (8 из 100 дней)

4. Пропишем код для формы обработки

Откладка модулей, переменные и параметры сеанса в 1С (8 из 100 дней)

Запустим платформу и пройдемся через точки остановки по нашим значениям:

- Увидим, что поступила текущая дата

Откладка модулей, переменные и параметры сеанса в 1С (8 из 100 дней)

- Теперь шагнем дальше и увидим, что уже вычислилась наша переменная и вывелось сообщение

Откладка модулей, переменные и параметры сеанса в 1С (8 из 100 дней)

На сегодня все, встретимся с вами уже завтра!

1