Когда-то я работал консультантом
SAP . В SAPe есть настройка изменения цвета главного окна программы и у нас было негласное правило:
Рабочая программа - Красный фон ,
Тестовая - Зеленый ,
Разработка - Синий .
Работая в 1С, всегда открыто по 5-6 программ, и перепутать рабочую базу с базой для тестирования, не составляет труда.
Конечно, можно зайти
Справка - О программе и посмотреть значения
Режим, База, Каталог . Но я решил применить опыт SAP проектов к 1С:
1. Нужно чтобы в заголовке программы всегда отображалось с какой базой работаем.
Для этого в Модуль приложения, в самый конец процедуры ПриНачалеРаботыСистемы() добавляем:
Код 1C v 8.х // Мигачев Евгений
УстановитьЗаголовокСистемы(Метаданные.Синоним+" ( База: "+СтрокаСоединенияИнформационнойБазы()+" )");
2. Нужно чтобы рабочая база была в стандартных цветах, а база разработки
Сине-бирюзовый
У нас разделение следующее, на сервере только рабочие базы, базы разработки на локальных компьютерах, соответственно серверные базы должны быть как обычно, локальные
Сине-бирюзовые .
Для этого открываем конфигурацию - Общие -Стили - Копируем и вставляем слой
Основной , получается
Основной1 , меняем его название на
Разработка и открываем. В своем примере я меняю только цвет
Фона кнопки на
Сине-бирюзовый и в Модуль приложения, в самый конец процедуры ПередНачаломРаботыСистемы() добавляю:
Код 1C v 8.х // Мигачев Евгений Изменение Стиля в зависимости от базы
СтрокаСоединенияСБД = СтрокаСоединенияИнформационнойБазы();
// в зависимости от того файловый это вариант БД или нет, по-разному отображается путь в БД
ПозицияПоиска = Найти(Врег(СтрокаСоединенияСБД), "FILE=");
Если ПозицияПоиска = 1 тогда
//База "Файловая", меняем стиль отображения
ГлавныйСтиль=БиблиотекаСтилей["Разработка"];
Иначе
//База "Серверная" - оставляем все как есть
КонецЕсли;
Так выглядит Рабочая база, только еще
Строка Соединения Информационной Базы в заголовке:
А так
Сине-бирюзовая база для разработок:
Автор: Мигачев Евгений Функция возвращает вариант базы данных "Файловая" или "Серверная":
Код 1C v 8.х Функция КакаяБаза()
СтрокаСоединенияСБД = СтрокаСоединенияИнформационнойБазы();
// в зависимости от того файловый это вариант БД или нет, по-разному отображается путь в БД
ПозицияПоиска = Найти(Врег(СтрокаСоединенияСБД), "FILE=");
Если ПозицияПоиска = 1 тогда
Возврат "Файловая";
Иначе
Возврат "Серверная";
КонецЕсли;
КонецФункции
В 8-ых версий нет встроенной функции получения каталога базы данных, так напишем ее,
Код 1C v 8.2 УП //Получить представление информационной базы для отображения пользователю.
// Пример возвращаемого результата:
// - для ИБ в файлом режиме: \\FileServer\1c_ib\
// - для ИБ в серверном режиме: ServerName:1111 / information_base_name
Функция ПолучитьПредставлениеИнформационнойБазы() Экспорт
Если ПустаяСтрока(СтрокаСоединенияИнформационнойБазы) Тогда
СтрокаСоединенияИнформационнойБазы = СтрокаСоединенияИнформационнойБазы();
КонецЕсли;
ЭтоФайловаяИБ = Найти(Врег(СтрокаСоединенияИнформационнойБазы), "FILE=") = 1;
Если ЭтоФайловаяИБ Тогда
ПутьКБД = Сред(СтрокаСоединенияСБД, 6, СтрДлина(СтрокаСоединенияСБД) - 6);
ФайловаяБД = Истина;
Иначе
// надо к имени сервера прибавить имя пути информационной базы
ПозицияПоиска = Найти(Врег(СтрокаСоединенияСБД), "SRVR=");
Если ПозицияПоиска <> 1 Тогда
Возврат Неопределено;
КонецЕсли;
ПозицияТочкиСЗапятой = Найти(СтрокаСоединенияСБД, ";");
НачальнаяПозицияКопирования = 6 + 1;
КонечнаяПозицияКопирования = ПозицияТочкиСЗапятой - 2;
ИмяСервера = Сред(СтрокаСоединенияСБД, НачальнаяПозицияКопирования, КонечнаяПозицияКопирования - НачальнаяПозицияКопирования + 1);
СтрокаСоединенияСБД = Сред(СтрокаСоединенияСБД, ПозицияТочкиСЗапятой + 1);
// позиция имени сервера
ПозицияПоиска = Найти(Врег(СтрокаСоединенияСБД), "REF=");
Если ПозицияПоиска <> 1 Тогда
Возврат Неопределено;
КонецЕсли;
НачальнаяПозицияКопирования = 6;
ПозицияТочкиСЗапятой = Найти(СтрокаСоединенияСБД, ";");
КонечнаяПозицияКопирования = ПозицияТочкиСЗапятой - 2;
ИмяИБНаСервере = Сред(СтрокаСоединенияСБД, НачальнаяПозицияКопирования, КонечнаяПозицияКопирования - НачальнаяПозицияКопирования + 1);
ПутьКБД = ИмяСервера + "/ " + ИмяИБНаСервере;
ФайловаяБД = Ложь;
КонецЕсли;
Возврат ПутьКБД;
КонецФункции
ТОЛЬКО эта функция работает для файлового варианта базы данных:
Код 1C v 8.х
Функция КаталогИБ()
СтрокаСоединенияСБД = СтрокаСоединенияИнформационнойБазы();
// в зависимости от того файловый это вариант БД или нет, по-разному отображается путь в БД
ПозицияПоиска = Найти(Врег(СтрокаСоединенияСБД), "FILE=");
Если ПозицияПоиска = 1 тогда
// Файловая
Возврат Сред(СтрокаСоединенияСБД,7,СтрДлина(СтрокаСоединенияСБД)-8)+"\";
Иначе
// Серверная - Используем КаталогВременныхФайлов()
Возврат КаталогВременныхФайлов();
КонецЕсли;
КонецФункции
Для серверного - используйте другие каталоги, например:
Код 1C v 8.х
КаталогВременныхФайлов(); //Возвращает что-то типо: C:\Documents and Settings\E.S.Migachev\Local Settings\Temp\
КаталогПрограммы(); //Возвращает что-то типо: C:\Program Files\1cv81\bin\
Код 1C v 7.x
//Встроенная КаталогИБ() - Возвращает имя каталога базы данных.
КаталогИБ(); //Возвращает что-то типо: C:\Basa1C\buh\
Ниже приведен код функции, которая определяет - Файловая или SQL.
Код 1C v 8.х
//Функция возвращает: Истина - Файловая, Ложь - SQL
Функция ОпределитьЭтаИнформационнаяБазаФайловая() Экспорт
СтрокаСоединенияСБД = СтрокаСоединенияИнформационнойБазы();
// в зависимости от того файловый это вариант БД или нет, по-разному отображается путь в БД
ПозицияПоиска = Найти(Врег(СтрокаСоединенияСБД), "FILE=");
Возврат ПозицияПоиска = 1;
КонецФункции