Обычная задача - есть внешняя программа (чаще всего это внешний отчет), ее нужно запустить из меню Скалы и как-то передать необходимые параметры - код компании, финансовый год, строку подключения к базе данных и т.д.
Первое, что приходит в голову - это сделать VBA приложение, запускающее нужную программу и передающее нужные параметры в командной строке. Но далеко не всегда лицензия включает в себя VBA (его наличие скорее исключение).
Второй способ - подключаем программу в меню, выбирая тип "Выполняемый модуль Windows"/"Windows executable" и указываем путь к программе. Все у нас теперь запускается, осталось определить нужные параметры. Если эту программу пишете вы сами, то есть способ определить все что нужно. Вот как это будет выглядеть на примере Visual Basic 6:
- Создаем новый проект
- В References добавляем ссылку на SfwIII
- Кидаем на форму черыре Label, обзываем их llCompanyCode, llScalaYear, llScalaDate, llConnectionString
- Добавляем следующий код
Private Sub Form_Load()
llCompanyCode.Caption = SfwIII.ActiveProcess.UserContext.CompanyCode
llScalaYear.Caption = Right(CStr(SfwIII.ActiveProcess.UserContext.FinYear), 2)
llScalaDate.Caption = SfwIII.ActiveProcess.ScalaDateStr
llConnectionString.Caption = SfwIII.ActiveProcess.UserContext.GetConnectionString(2)
End Sub - Настраиваем новый пунт меню
- Запускаем
Программа получила все нужные параметры и дальше уже нужно заставить ее делать то, что надо.
Исходник примера можно взять здесь.
Не обошлось у этого способа без недостатков. Неприятности начинаются когда пользователь запускает несколько копий Скалы. В этом случае программа всегда будет получать параметры из программы запущенной первой. Правда, если открыть второе окно с помощью пункта меню "Изменить Компанию/Год" с галочкой "Запуск новой сессии", то все будет работать нормально.
О способе запуска, правильно определяющем сессии, расскажу в следующий раз.