Изменяем заголовок 1С. Для удобства (разработки) или защиты "от дурака" =)

На работе бывают ситуации, когда ты реально не знаешь, в какой базе работаешь.
Где то вроде одна рабочая открыта, возможно еще одна рабочая открыта и тестовые точно есть.
С опытом приходит и каждый раз чтоб не ошибиться заходишь в Справка- О программе.
Даже когда хочешь сразу тестовые данные забить, раздражает немного =)

Так вот — надоело.

Да и защита от дурака это неплохая, когда был помоложе — пару раз на базе живой неправильные обработки запускал =)
Плюсы такого подхода, нам не надо ничего контролировать и переименовывать, мы просто делаем копию и работаем.

Сделал внешнюю обработку. Подключается через параметр запуска 1с или  файл конфига(1cestart.cfg) .
Код обработки ниже. Меньше тратится времени на анализ, где мы сейчас.

У ярлыка запуска дополнительный параметр /ExecuteD:zapusk.epf

Процедура ПриОткрытии()   

  //+Gavrikprog 24102011
   
Если Метаданные.НайтиПоПолномуИмени(«Константа.ЗаголовокСистемы»)<> Неопределено  Тогда
       
ЗаголовокСистемы = Константы.ЗаголовокСистемы.Получить();
        Если 
ЗаголовокСистемы=«» Тогда
           
ЗаголовокСистемы=ПолучитьЗаголовокСистемы();
        КонецЕсли;
    Иначе
       
ЗаголовокСистемы=ПолучитьЗаголовокСистемы();
    КонецЕсли;
   
//-Gavrikprog 24102011
    СтрокаСоединения = СтрокаСоединенияИнформационнойБазы();
   
СтрокаСоединения = СтрЗаменить(СтрокаСоединения, «;», Символы.ПС);

    Если абОпределитьЭтаИнформационнаяБазаФайловая()  Тогда
       
Стр2 = СтрПолучитьСтроку(СтрокаСоединения, 1);
    Иначе
       
Стр1 = СтрПолучитьСтроку(СтрокаСоединения, 1);
       
Стр2 = СтрПолучитьСтроку(СтрокаСоединения, 2);
    КонецЕсли;
   
ЗаголовокСистемы=Строка(ЗаголовокСистемы)+» (» +Строка(Стр2)+«)»;
   

   
Если НЕ Пустаястрока(ЗаголовокСистемы) Тогда
       
УстановитьЗаголовокСистемы(ЗаголовокСистемы);
    КонецЕсли;

    Закрыть();

КонецПроцедуры

Функция абОпределитьЭтаИнформационнаяБазаФайловая(СтрокаСоединенияСБД = «») Экспорт

    СтрокаСоединенияСБД = ?(ПустаяСтрока(СтрокаСоединенияСБД), СтрокаСоединенияИнформационнойБазы(), СтрокаСоединенияСБД);

    // в зависимости от того файловый это вариант БД или нет немного по-разному путь в БД формируется
   
ПозицияПоиска = Найти(Врег(СтрокаСоединенияСБД), «FILE=»);

    Возврат ПозицияПоиска = 1;

КонецФункции

//Дополнительная информация!!!

//Изменено: 24.10.2011 Поддерживаются управляемые формы

//Изменено: 26.10.2011 чтоб обработка отрабатывала при запуске отладки из конфигуратора надо ее прописать Дополнительные параметры
//запуска
при добавлении/изменении базы. так
/ExecuteD:zapusk.epf
//Но мне не мешает. Приспособился уже.
//Если же добавить просто параметром дополнительным у ярлыка запуска, то будет работать, если запускаем просто 1С Предприятие, при
//отладке обработка отрабатывать не будет.

 


Иполнитель: 2012 г. www.rt-finance.ru

30 Comments

  1. flybread

    А чем стандартная обработка «Настройка программы» не подходит?

    Указал поле «Заголовок программы» 1 раз и постоянно будет отображаться. И в cfg ничего править не надо.

    Reply
  2. gavrikprog

    я очень часто делаю копии, разрабатываю всегда на актуальной копии.

    А при таком режиме работы уже влом каждый раз делать лишние движения.

    Как и у всех впрочем.

    Чтоб что-то работало — оно должно быть автоматическим.

    Для такого ответа в теле публикации ответ уже был дан.

    Плюсы такого подхода, нам не надо ничего контролировать и переименовывать, мы просто делаем копию и работаем.

    cfg необязательно править, есть параметр запуска- по-быстрому

    а так всегда есть недовольные любым фишкам =).

    к примеру разработка, ты что-то делал — оставил на сервере 3 конфигурации.

    Подключается твой стажер и что-то делает там, не там где надо — хотел на копии. Случайно …

    Это может иногда не допустить необдуманных действий … ИНОГДА

    Reply
  3. anig99

    Ни о чём… Тем более, что в типовых есть механизм заголовка, а в старых вообще заголовок периодически возвращается к стандартным.

    Reply
  4. gavrikprog

    МЕХАНИЗМ ЗАГОЛОВКА(где надо каждый раз менять руками) — НЕ БУДЕТ ИСПОЛЬЗОВАТЬ БОЛЬШИНСТВО ПРОГРАММИСТОВ, ПОТОМУ ЧТО ЭТО РУЧНОЙ ТРУД =)

    Я уверен в этом.

    Reply
  5. gavrikprog

    Фишка как раз в том, что это все автоматически.

    и название базы в SQL , и путь к файловой в заголовке.

    Reply
  6. gavrikprog

    воспринимается критика только от тех, кто успел поработать с этим механизмом.

    Reply
  7. anig99

    (5) Минус не за то, что я не понял — я всё понял. И не за то, что МНЕ это не надо. А за то, что нафига изобретать велосипед? практическая польза минимальна. пусть нас другие рассудят.

    мой минус против 4 плюсов. Или Ваш минус против 60 плюсов.

    Reply
  8. WKBAPKA

    нормальная фича… мне понравилось… ничего сложного, но когда ты работаешь с несколькими базами разных клиентов, такая фича очень даже может быть полезна… больше всего времени и сил тратишь на мелочи, когда переключаешься между базами, и еще приходиться смотреть, что бы ничего не перепутать…

    от меня плюс

    Reply
  9. anig99

    (8) и чем типовой механизм не угодил? Нормально нужно работу организовывать, чтобы не уходило время на мелочи.

    (6) извини мил человек, но тут даже пользоваться не надо, чтобы понять, что это велосипед. Неубедительно. Даже если работаешь с 20 базами. Предлагаю другой вариант. Поинтереснее. К пути базы добавлять её псевдоним и имя пользователя. И вторую обработку, которая выводила бы имя компьютера и ip-адрес. Вот с такого побольше плюсов соберешь

    Reply
  10. WKBAPKA
    anig99 пишет:

    (8) и чем типовой механизм не угодил? Нормально нужно работу организовывать, чтобы не уходило время на мелочи.

    (6) извини мил человек, но тут даже пользоваться не надо, чтобы понять, что это велосипед. Неубедительно. Даже если работаешь с 20 базами. Предлагаю другой вариант. Поинтереснее. К пути базы добавлять её псевдоним и имя пользователя. И вторую обработку, которая выводила бы имя компьютера и ip-адрес. Вот с такого побольше плюсов соберешь

    абсолютно не согласен… в смысле, типовый механизм? имеется ввиду возможность установить заголовок системы?

    если я буду на клиентских базах устанавливать заголовки системы — это будет ололо

    в любом случае, это более интеллектуальная публикация, чем эта: http://infostart.ru/public/92075/?PAGEN_1=1#comm480676

    Reply
  11. WKBAPKA

    тут еще есть публикация, как итоги отключить…

    Reply
  12. gavrikprog

    можно еще в конфигураторе синоним конфигурации менять (к сожалению тут как сделать автоматически

    , я не знаю)…

    Тогда и у конфигуратора видно, что неосновная база.

    Ориентироваться всписке открытых баз Конфигуратором тоже чуть проще.

    Reply
  13. anig99

    (12) вот-вот. При разработке легче спутать конфигураторы, а поменяв синоним меняется и заголовок. Поэтому и считаю, что в таком виде бесполезно. Вот если бы выводить информацию, о которой говорил выше, то было бы на +

    Reply
  14. gavrikprog

    (13)заголовок при смене синонима не меняется. я проверил. (УПП 1.3)

    Берется из константы, если задана константа.

    Так что насчет бесполезности — не был и не буду согласен.

    Очень часто забиваю тестовые данные для проверки, и у меня почти все всегда открыто в 2-х экземплярах.

    Мне помогает быстрее ориентироваться, у тебя от зубов отскакивает, где лежит база с кот. ты работаешь.

    А смена синонима — помощь только для конфигуратора.

    Процедура ПриНачалеРаботыСистемы()

    ЗаголовокСистемы = Константы.ЗаголовокСистемы.Получить();

    Если НЕ Пустаястрока(ЗаголовокСистемы) Тогда

    УстановитьЗаголовокСистемы(ЗаголовокСистемы);

    КонецЕсли

    Reply
  15. tslk

    Подскажите что нужно прописать в 1CEStart.cfg чтобы запускалась обработка при начале работы системы.

    Reply
  16. gavrikprog

    у ярлык запуска 1С добавляем параметр /ExecuteD:zapusk.epf

    «C:Program Files1cv82common1cestart.exe» /ExecuteD:zapusk.epf

    Reply
  17. gavrikprog
    anig99 пишет:

    Предлагаю другой вариант. Поинтереснее. К пути базы добавлять её псевдоним и имя пользователя. И вторую обработку, которая выводила бы имя компьютера и ip-адрес. Вот с такого побольше плюсов соберешь

    имя пользователя — это тоже интересно, из разряда улучшений. Взял на вооружение.

    Тоже ориентироваться иногда поможет.

    От остального не понял толку.

    Reply
  18. Inkeeper

    занятная обработка, действительно, когда работаешь с дофига базами одновременно — помогает.

    Reply
  19. gavrikprog

    заметил один косяк, если отладку запускаем из конфигуратора — обработка не отрабатывает, если мы ее параметром Дополнительные параметры запуска у базы прописывать не будем.

    Но мне не мешает, могу и через файл открыть когда надо подопнуть

    При простом запуске 1С предприятие как в (16) все работает

    Reply
  20. anig99

    (17) остальное — это уже в процессе эксплуатации. Чтобы по радмину подключаться или отладчиком не диктуя пользователям, где искать ip и имя компьютера

    Reply
  21. almas

    Зер гут. Примерно такую-же фичу используем уже порядка 7 лет. Помогает неплохо.

    Пользователь направляет «принскрин» ошибки в службу поддержки и сразу видно в какой базе работает, на каком сервере, под каким логином работает работник.(У нас порядка 10 баз 1с, при направлении письма об «ошибке» сильно не задумываются).

    Еще на базе проверки «что за база» сделали доработку — отрубать обмены данными и проч… т.к. были случаи, когда копию разворачиваешь, а регл задания отключить забыл или отключать нельзя по некоторым причинам..

    Reply
  22. gavrikprog

    Обработка для управляемых форм, есть ошибка СтрокаСоединенияИнформационнойБазы() исполняется на сервере.

    Следовательно при клиент-серверной архитектуре будет врать немного.

    Пока изменять нет времени

    Reply
  23. curys

    Огромное спасибо!

    Reply
  24. ARL

    Проверил обработку — мне понравилась. «Лишняя защита» — никогда лишней не бывает. Про «велосипед» — я бы не обращал внимание, типовые механизмы есть не во всех конфигурациях. Да и эти механизмы — несколько не то. Надо еще помнить, что надо поменять заголовок.

    Reply
  25. fomix

    Автору спасибо за обработку! Брюзгам, использующим «типа» встроенный механизм, могу сказать одно: 1. не все им пользуются и не везде он реализован, 2. для работы на отладочной базе весьма полезен!

    Reply
  26. NSerget

    По моему проще было бы делать так:

    ЗаголовокСистемы(КаталогИБ());

    Или сравнивать

    Если Каталогиб() = «D:Base» Тогда

    ЗаголовокСистемы(«Оригинал»);

    ИначеЕсли Каталогиб() = «D:Base2» Тогда

    ЗаголовокСистемы(«Копия2»);

    КонецЕсли

    *Пример образный и на 1с7, но смысл думаю Вы поняли

    Reply
  27. pumbaE

    Для конфигуратора дайте заголовок!

    Reply
  28. Raminus

    Во времена 77 и 80 тема была очень актуальна 🙂 Сейчас все же не очень, но может кому и будет полезна.

    Reply
  29. NE_ZNAIY

    Отлично!!! Всё работает!

    Как раз надо.

    Если в бухгалтерии или зарплате можно стандартными средствами прописать (для пользователя), то в торговле, если несколько баз ведешь одновременно точно весь упутаешься без «Заголовка»

    Reply
  30. AlexanderKai

    Для конфигуратора есть такая же штука?

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *