При изучении программирования в среде 1С:Предприятие 7.7 новички часто сталкиваются с ситуацией, когда в модуле формы вызываются функции, определение которых отсутствует в текущем тексте. Рассмотрим ситуацию на примере процедуры ОбновитьНадписи(), которая отвечает за визуальное отображение выбранной фирмы и склада на форме документа или справочника. Разберем по шагам, откуда берутся эти данные, как работает механизм глобальных функций и как эффективно использовать инструменты разработчика для анализа чужого кода.
Рассмотрим фрагмент кода, вызвавший вопрос:
Процедура ОбновитьНадписи()
Форма.ТекстФирмы.Заголовок(глСтрокаФирмы(Контекст));
Форма.ТекстСклада.Заголовок(глСтрокаСклада(Склад));
КонецПроцедуры
В данном примере мы видим обращение к объекту Форма. Проанализируем его составляющие:
ТекстФирмы и ТекстСклада — это идентификаторы текстовых элементов (надписей), размещенных на визуальном слое формы в редакторе диалогов.Заголовок() — это стандартный метод 1С 7.7, который устанавливает видимый текст для данного элемента.глСтрокаФирмы и глСтрокаСклада — это функции, которые возвращают строковое значение. Именно они являются "источником" данных.В практике разработки на платформе 1С 7.7 принято использовать префикс "гл" для обозначения глобальных переменных и функций. Рассмотрим подробнее, где они могут располагаться:
Глобальный модуль: Это основное место хранения общего кода. Чтобы открыть его, необходимо в Конфигураторе перейти в дерево метаданных (корень дерева), нажать правую кнопку мыши и выбрать пункт "Открыть глобальный модуль". Все функции и процедуры, помеченные ключевым словом Экспорт в этом модуле, доступны из любой точки конфигурации.
Глобальные общие модули: Хотя в 7.7 классических "общих модулей" как в 8.3 нет, некоторые специализированные решения могут использовать внешние компоненты или дополнительные файлы, но в 99% случаев в типовых конфигурациях (ТиС, Бухгалтерия) код находится именно в Глобальном модуле.
Проанализируем самый быстрый способ поиска определения функции — использование клавиши F12. Если вы установите курсор на название функции глСтрокаФирмы и нажмете F12, Конфигуратор должен автоматически открыть модуль, в котором она описана, и перейти к строке с её определением.
Если нажатие F12 приводит к открытию отладчика или не дает результата, воспользуемся Глобальным поиском:
Ctrl + Shift + F.глСтрокаФирмы.Функция — это и будет её описание.Выясним, что передается внутрь функций в качестве аргументов. В строке глСтрокаФирмы(Контекст) используется служебное слово Контекст. В 1С 7.7 это специальный объект, который передает ссылку на текущую форму со всеми её реквизитами, данными и методами в глобальную функцию. Это позволяет функции "заглянуть" внутрь формы и вытащить оттуда значение выбранной фирмы.
В строке глСтрокаСклада(Склад) передается переменная Склад. Проанализируем, откуда она могла появиться:
Перем Склад;.Экспорт.Если чтение кода не дает полной картины, воспользуемся отладчиком. Это самый надежный способ понять, "откуда берутся данные". Разберем по шагам:
ОбновитьНадписи).глСтрокаФирмы.Важное замечание для пользователей современных ОС: В Windows 7 и выше отладчик 1С 7.7 может работать нестабильно. Если при попытке отладки программа "вылетает" или ведет себя странно, попробуйте в диспетчере задач завершить процесс dvm.exe (если он запущен) или запускать Конфигуратор от имени администратора в режиме совместимости.
Разберем ситуацию, упомянутую в обсуждении: автору необходимо добавить смену вида налогообложения (СНО) для печати чека. Важно понимать, что процедура ОбновитьНадписи() отвечает только за визуальный интерфейс. Она просто выводит текст на экран для удобства пользователя.
Для реализации печати на кассе с нужной СНО необходимо искать код, отвечающий за взаимодействие с торговым оборудованием. Посмотрим на алгоритм поиска решения этой задачи:
ЧекККМ.ПечатьЧека).глФРПечатьЧека().
// Пример логики установки СНО в 7.7 (зависит от используемой компоненты)
Драйвер.TaxVariant = НомерСНО; // 0 - ОСН, 1 - УСН Доход и т.д.
Драйвер.OpenCheck();
Таким образом, разобравшись с тем, как работают простые функции обновления надписей, вы получите ключ к пониманию всей архитектуры конфигурации и сможете решать более сложные задачи по автоматизации учета.