Максимум изменений в стандартной конфигурации при их минимуме с использованием formex.dll
Восстанавливаю ранее опубликованную статью. Может кому пригодится…
Иногда очень хочется что-нибудь добавить в стандартную конфигурацию, но потом возникают проблемы, связанные с "затиранием" кода при обновлении. Каждый раз помнить где и что — напряжно.
При данном подходе в Глобальный Модуль добавляется всего одна (!) строчка
- Описание
- Подробнее
Описание
В Глобальный Модуль добавляем всего одну строчку:
Процедура ПриНачалеРаботыСистемы()
//………………………………
ОткрытьФорму(«Отчет»,Контекст,КаталогИБ()+«СтартСистемы.ert»);
КонецПроцедуры // ПриНачалеРаботыСистемы()
Запускаемая при старте системы обработка «СтартСистемы.ert»:
Перем Путь,Имя;
Перем лСервис; // местная
Процедура Сформировать()
// здесь процедуры, ктр. необходимо выполнить при входе ВСЕХ пользователей
РасположениеФайла(Путь,Имя);
ФС.УстТекКаталог(Путь);
лСервис.ДобавитьГлобальныйМодуль(«#ЗагрузитьИзФайла ДопГМ.txt»);
КонецПроцедуры
Процедура СформироватьАвтопилот()
//— тут можно написать что-то для режима автозапуска программы
//— например, стартануть обработку восстановления последовательности
КонецПроцедуры
Процедура ПриОткрытии()
ЗагрузитьВнешнююКомпоненту(КаталогПрограммы()+«FormEx.dll»);
// лСервис — локальный контекст, только для загрузки дополнительного Глобального Модуля
лСервис = СоздатьОбъект(«Сервис»);
Сформировать();
Если ВРЕГ(ИмяПользователя())=«AUTOPILOT» Тогда
СформироватьАвтопилот();
КонецЕсли;
СтатусВозврата(0);
КонецПроцедуры
Примерный текст дополнительного Глобального модуля уже подгруженного formex
Перем Сервис Экспорт;
Перем L Экспорт;
//— любые другие глобальные переменные
Процедура ПослеОткрытия(Конт)
ФормаРасш = СоздатьОбъект(«РасширениеФормы»);
//— да! забыл… тут лучше поставить блок попытка-исключение,
//—а то ругается на список Констант
Попытка
ФормаРасш.УстановитьФорму(Конт.Форма);
Исключение
Возврат;
КонецПопытки;
Тип=ФормаРасш.ТипОбъекта();
ПолныйТип=ФормаРасш.ПолныйТипОбъекта();
// — далее полный простор для творчества
КонецПроцедуры
//————————————————————————————————
//— в теле модуля — это фактически продолжение ПриНачалеРаботыСистемы()
Сервис= СоздатьОбъект(«Сервис»); // это уже глобальная для всей системы
//— грузим любые необходимые нам DLL
//— или выполняем другие действия при старте системы
ЗагрузитьВнешнююКомпоненту(КаталогПрограммы()+«MiracleV8.dll»);
L=СоздатьОбъект(«AddIn.MiracleClass»);
L.RUS();
ТекстОкна=» Мой текст»;
L.SetMainText(ТекстОкна);
L.SetMainIcon(КаталогИБ()+«Main.ico»);
Преимущества подхода:
1. Всего одну строчку добавить в ГМ после обновления.
2. СтартСистемы.ert, и ДопГМ правятся «на лету», никого выгонять из базы не надо.
Изменения станут доступными пользователю после его перезахода в 1С
Недостаток:
При синтаксис-контроле система, естественно, не видит глобальные процедуры, функции и
переменные (например, при их вызове в отчете), объявленные в ДопГМ, и ругается.

