Настройка отладки на сервере 1С


Обработка для настройки отладки на сервере, включение отладки COM-соединений и отладки Web-сервисов.

   Часто требуется отлаживать код на месте у заказчика, и каждый, каждый раз приходится включать отладку на сервере 1С (прописывая ручками в реестре ключи запуска службы сервера 1С:Предприятия), копировать файлы настроек comcntrcfg.xml и webservicecfg.xml для включения отладки COM-соединений и Web-сервисов, перекреститься, постучать в бубен и т.д. и т.п. Все это мелочи, которые которые сильно раздражают и сжирают время, особенно когда нужно что-то очень срочно отладить в авральном режиме. В связи с эти сделал себе обработку из которой можно все это включить тремя кликами мыши.

Настройка отладки

   Для включения/отключения отладки на сервере 1С, обработку естественно нужно запускать на том компьютере где установлен сервер 1С:Предприятия. При установке галочки "Включить отладку на сервере 1С" в строку запуска службы просто добавляется параметр запуска "-debug". Кроме того есть возможность произвольного редактирования параметра ImagePath реестра отвечающего за запуск службы сервера 1С:Предприятия (к примеру можно изменить сетевые порты). Также же из обработки можно вызвать непосредственно редактор реестра. После принятия изменений, если параметры запуска службы были изменены, будет предложено открыть оснастку служб Windows (к примеру для ручного перезапуска службы).

   При включении галочек "Отладка COM-соединений (файл comcntrcfg.xml)" и "Отладка Web-сервисов (файл webservicecfg.xml)" в каталоге conf текущей платформы создаются (если они отсутствуют) файлы comcntrcfg.xml и webservicecfg.xml соответственно. Файлы comcntrcfg.xml и webservicecfg.xml уже встроены обработку и хранятся в текстовых макетах. Если кого не устраивают стандартные настройки этих файлов, тот может закинуть туда свои настройки. При отключении отладки COM-соединений и Web-сервисов файлы не удаляются, а переименовываются в файлы с расширением .bak. Кроме того из обработки можно перейти непосредственно в каталог conf текущей платформы  нажав на ссылку с именем каталога (к примеру для ручного удаления или редактирования файлов настройки).

   Для использования обработки, 1С:Предприятие требуется запускать от имени администратора, иначе может не оказаться прав для доступа к реестру Windows или каталогу настроек. Обработка будет видеть только службу 1С:Предприятия 8.3, так же не рекомендуется пользоваться обработкой если на одном компьютере запущено несколько версий сервера 1С:Предприятия (например одновременно работают службы сервера 1С:Предприятия 8.2 и 8.3). Обработкой пользоваться на свой страх и риск. Код обработок открыт, так что перед использованием можете сами посмотреть какие манипуляции производятся с настройками. Обработки тестировалась и использовались на версии платформы 8.3.10.2650, соответственно должны работать и на более старших релизах 8.3. В публикации представлены обработки для обычного и управляемого приложения. Функционал обработок полностью идентичен.

 

 Обновление 2024/09/24

 

31 Comments

  1. capitan

    Толково )

    Reply
  2. frkbvfnjh

    (1) Спасибо

    Reply
  3. Darklight

    Вот бы ещё порты эта обработка умела проверять и настраивать — цены бы не было…

    Reply
  4. SerVer1C

    оффтоп: Можно 2 обработки запихнуть в 1, которая будет запускаться и в обычном, и в управляемом приложении.

    Reply
  5. maxdmt

    Нет настройки отладки по http.

    Reply
  6. webester
    Кроме того есть возможность произвольного редактирования параметра ImagePath

    Может проще эту строку закинуть в cmd файл? Все равно отлаживаться надо в тестовой базе. В таком случае лучше через cmd файл запустить отладку на отдельном экземпляре сервера1с, чем править реестры на машине заказчика. Разобрался в чем проблема остановил сервер и все осталось как и было.

    Reply
  7. frkbvfnjh

    (6) Да не вопрос, хороший способ, кому то он однозначно пригодится, но мне удобнее так.

    Reply
  8. frkbvfnjh

    (5) В это я не увидел особого смысла, т.к. это очень просто настраивается через конфигуратор, вот когда http-сервисы только появились в 1С, то такой возможности не было, там нужно было править ручками, а сейчас будет дольше писать такую обработку, чем в конфигураторе галочку поставить.

    Reply
  9. tormozit

    (9) Точнее к отладке на продуктивной базе нужно допускать только квалифицированных специалистов.

    Reply
  10. myxins1989

    (9) Ок, развернули, ошибка не повторяется. Что делать? А если проблема во взаимодействии нескольких баз? Разворачивать весь контур, чтобы отловить маленькую ошибочку? А если база весит 500+ Гб, а ошибку отловить надо сейчас, а не после обеда? А еще можно поторопиться, развернуть и забыть про обмены, копия базы начнет жрать не свои файлы обмена. Если толпа пользователей стоит над душой, то вполне такое возможно.

    При нехватке опыта надо прислушиваться к тому, что пишут в книжках. Но по мере развития понимаешь, что из каждого правила есть исключения.

    Reply
  11. yaroslavkravets
    При нехватке опыта надо прислушиваться к тому, что пишут в книжках. Но по мере развития понимаешь, что из каждого правила есть исключения

    При нехватке опыта не нужно лезть ремонтировать грузовик 2019 года выпуска обладая знаниями по ремонту Жигулей.

    Разворачивать весь контур, чтобы отловить маленькую ошибочку?

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

    Согласитесь, подход в котором нужно сделать срочно и сейчас, или «нужно было на вчера» потом порождает новые ошибки и баги.

    А если база весит 500+ Гб, а ошибку отловить надо сейчас, а не после обеда?

    Не интересно сломать такую базу, а восстанавливать — тем более.

    Reply
  12. acanta

    (11) при базе 500+ толпа пользователей закрывает дверь с другой стороны и входит по приглашению с предварительным согласованием необходимости посещения ИТ отдела у отдела безопасности.

    И выделенный консультант, для протирки мышек пользователям.

    Reply
  13. myxins1989

    (13) Ага, конечно! Просто над душой будет стоять не менеджер, а финансовый директор, не бухгалтер, а главный бухгалтер. Когда встает работа организации с такой большой базой, к программисту приходят люди, которые выше отдела безопасности.

    Reply
  14. acanta

    (14) если в организации финансовый директор и главный бухгалтер стоят над душой у программиста вместо выполнения прямых обязанностей — выделить бюджет на сисадмина и консультанта, то пусть постоят еще.

    Reply
  15. myxins1989

    (15) А что им еще делать, если у них и у всех их подчиненных база не работает?

    Reply
  16. acanta

    (16) например, пойти к генеральному директору и постоять у него, или посидеть на внеочередном совещании по чрезвычайной ситуации.

    Программист то точно денег не даст на новых сотрудников.

    Варианты есть всегда.

    Reply
  17. myxins1989

    (12) Печально, что за 2 года не попадалось такого случая. На тестовом контуре может не быть того оборудования, которое стоит у конечного пользователя, подключение к тому же ВЕТИС, которое нельзя просто так отправить из тестового контура.

    И 500+ базы тоже дорабатывают, а не ошибается только тот, кто ничего не делает.

    Reply
  18. myxins1989

    (17) Попадали хоть раз в такую ситуацию? Генеральный тоже где-то неподалеку, за соседним столом, обсуждают чрезвычайную ситуацию — база не работает из-за ошибки в коде.

    Reply
  19. acanta

    (19) Ну вот видите как удачно. И что они говорят?

    Reply
  20. yaroslavkravets

    (18)

    оборудования

    работаем на базе больше 1 ТБ, у нас есть тестовое оборудование. Что нельзя нельзя подключить физически — делаем веб сервис для тестирования.

    Reply
  21. myxins1989

    (21) И какой же у вас штат тестировщиков, что в продакшн ошибки не уходят? Или работа с базой сводится к созданию пользователей?

    Reply
  22. yaroslavkravets

    Тестировщиков 5, ошибки бывают, но править на основной базе — никто не правит. Если есть баг — его воспроизводят на тестовом контуре, и там же правят, потом переносят. Критических ошибок которые останавливали работу компании уже давно не было.

    Reply
  23. Разумов

    Разрешите, пожалуйста, пару нубских и немного оффтопных вопросов, просто общего мнения по ним нет, а в этой теме плотность хороших специалистов гораздо выше среднего.

    Насколько параметр -debug влияет на производительность 1С? Ухудшение производительности на уровне нескольких процентов, или значительней?

    Если в базе 200 пользователей, то насколько замедлится 1С? А если 1000 пользователей?

    Кроме ухудшения производительности и возможности дать криворукому программисту всё испортить — есть ли ещё проблемы с этим параметром?

    Reply
  24. frkbvfnjh

    (24) https://forum.mista.ru/topic.php?id=672538

    https://forum.infostart.ru/forum86/topic194162/

    Ответа на этот вопрос походу нет… Тут да же и не понятно как замерить правильно.

    Reply
  25. tormozit

    Влияние режима отладки на производительность в реальных сценариях по моим ощущениям очень мало. Механизм отладки даже тогда, когда не подключен отладчик, делает вычисления после каждой строки кода. Поэтому если в трассе выполнения потока кода по длительности будут преобладать короткие строки (например А = 2+3), то накладные расходы на работу механизма отладки будут заметны и могут составить по моим ощущениям до 5%. Если же отладчик подключен, то он может замедлить выполнение кода в этом случае до 50%. Однако повторюсь, в реальных сценариях такой код встречается редко.

    Reply
  26. Разумов

    (25) Ну да, в процессе собственного гугления я эти темы видел — и тоже остался с одними вопросами. 🙂

    Reply
  27. myxins1989

    (24) это еще надо постараться, чтобы механизмом отладки все испортить.

    Reply
  28. Lapitskiy

    Интересное решение!

    Reply
  29. IsiKosta

    {ВнешняяОбработка.НастройкаОтладкиУФ.Форма.Форма.Форма(535,28)}: Процедура или функция с указанным именем не определена (REG_HKLM)

    ПутьКПараметрамВРеестре = <<?>>REG_HKLM() + «SYSTEMCurrentControlSetServices1C:Enterprise 8.3 Server Agent»;

    УПП 1.3.106.2 (8.3.11.3034) в Толстом клиенте (управляемое приложение)

    Reply
  30. frkbvfnjh

    (30) Это очень странно. Потому, что у меня ошибок не возникло. Откройте тогда модуль формы и замените строку 535 на

    ПутьКПараметрамВРеестре = «HKLMSYSTEMCurrentControlSetServices1C:Enterprise 8.3 Server Agent»;

    т.е. без вызова функции REG_HKLM()

    Reply
  31. frkbvfnjh

    (30) Чуть позже сделаю тогда более топорную версию, что бы избежать тонкой душевной организации платформы

    Reply

Leave a Comment

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