Руководство разработчика

Запуск программ из кода

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

// в программе СуммаПропиью
ВЫЧИСЛИТЬ(ЧИСЛО: сумма; СТРОКА: язык; ПЕРЕМ СТРОКА: текст)
    ВЫБОР (язык)
    #"rus": текст = СУММАП(сумма)
    #"eng": текст = СУММАП_АНГЛ(сумма)
    ИНАЧЕ
        текст = "???"
    КОНЕЦ_ВЫБОРА
КОНЕЦ

Эта программа принимает два входных параметра сумма и язык. Результат своей работы программа передает в выходном параметре текст. То, что параметр текст является выходным, задается ключевым словом ПЕРЕМ.

Пусть при компиляции данной программы получился локальный файл "СуммаПрописью.ibx". Теперь сделает другую программу, которая будет вызывать программу "СуммаПрописью" и обмениваться с ней параметрами:

ВЫЧИСЛИТЬ
    ПЕРЕМ СТРОКА: сумма_проп
    ВЫПОЛНИТЬ(["СуммаПрописью.ibx"](12345, "rus", ПЕРЕМ сумма_проп))
    СООБЩЕНИЕ(сумма_проп)
КОНЕЦ

Указание имени ibx-файла в квадратных скобках означает, что файл расположен локально. Далее следует список фактических параметров вызова. Для выходного параметра, передаваемого по ссылке, явно указывается ключевое слово ПЕРЕМ.

Обмен значениями параметров между программами возможен, если типы этих значений известны и одинаковы в обеих программах. Это условие соблюдается для стандартных типов (строка, число и т.п.), а также для типов, объявленных в подключаемых модулях.

В Инфо-Бухгалтер 8 возможен запуск программ без обмена параметрами с помощью функции СТАРТ_ПРОГ.