От чего можно отказаться при разработке расширений 1С

Разработка расширений 1С и оптимизация через механизм БСП: Дополнительные отчеты и обработки.

Расширения 1С — удобный и адекватный механизм при работе с типовыми конфигурациями. Я использую его регулярно, и за все время работы с этим механизмом накопил некоторый опыт по его разработке, а именно, необязательно все доработки создавать и использовать в расширении, удобней применять другой инструмент типовых конфигураций на базе БСП: Дополнительные отчеты и обработки.

К примеру, нужно создать свою альтернативную форму подбора Быстрые товары списком в РМК 1С: Розница, или форму списка справочника Справочник номенклатуры расширенный.  

Для этого создаем внешнюю обработку, в которой реализуем всю необходимую логику работы и сохраняем в справочнике Дополнительные отчеты и обработки. А в расширении делаем вызов формы допобработки из справочника и в случае необходимости (к примеру подбор) обрабатываем через оповещения данные.

 

 Пример кода в расширении: Быстрые товары списком

 

 Пример кода в расширении: Справочник номенклатуры расширенный

Преимущества использования такой связки:

1. Во внешней обработке нам доступны все объекты конфигурации, в отличие от расширения, например при использовании Конструктора запросов или создания реквизитов ссылочного типа на форме.

2. Закрытие и открытие внешней обработки для отладки не требуют перезапуска 1С Предприятия, экономия времени налицо

3. Если нужно что-то изменить в работающей системе, то обновление допобработки в справочнике, не потребует от работающих пользователей перезапуска 1С Предприятия

Вывод: Связка Расширения конфигурации + Дополнительные отчеты и обработки делают для разработку более эргономичной и удобной

Всем Спасибо.

22 Comments

  1. leosoft

    А можно поподробнее про отладку.

    >2. Закрытие и открытие внешней обработки для отладки не требуют перезапуска 1С Предприятия, экономия времени >налицо

    Reply
  2. ellavs

    (1) это типовой механизм, вроде. Тоже часто этим пользуюсь. В конфигураторе открываете на редактирование обработку. Её же открываете в режиме предприятия (запущенном в режиме отладки) через Файл — открыть. Всё, точки останова работают и т.п. функционал отладки…

    Reply
  3. leosoft

    (2) Тут речь идет о подключенной внешней обработке.

    Reply
  4. ellavs

    Действительно, так можно облегчить разработку. Есть определенные сомнения в вопросе производительности, если дорабатываемая часть функционала часто используемая. Но это чисто ИМХО. Ведь обращение к обработке (ПодключитьВнешнююОбработку) по факту производит каждый раз запись обработки во временное хранилище (хотя возможно механизм платформы делает определенное кэширование и повторное обращение уже будет менее ресурсозатратным). Хотелось бы знать, конечно, это момент более подробно.

    Reply
  5. independ

    (4) Я не чистый разработчик, а практик с опытом (программирование это примерно 10% моей работы, основное техподдержка и администрирование), и клиенты у меня небольшие. Поэтому что-то сказать про производительность мне трудно. Но удобство разработки для меня — это важно, поэтому все что можно и нужно добавить/изменить стараюсь делать во внешних файлах обработок, а в расширениях — минимум кода и интерфейса, так что если есть просадка по производительности, она не очень заметна. И еще — много клиентов на базовых версиях, здесь расширения не работают, а открыть к примеру альтернативную форму справочника номенклатуры в пару кликов — вполне приемлемо.

    Reply
  6. independ

    (6) вы имеете в виду работу конфигураторе с расширением? Можно и так, но есть важный момент: если это делать в рабочем режиме, то при сохранении расширения в конфигураторе через некоторое время у работающих пользователей будет выведено сообщение о необходимости перезапуска, что не есть хорошо, например на кассах продаж с приличным клиентопотоком. А так обновил внешнюю обработку в справочнике Допообработки и никто ничего и не заметил, и если есть ошибки, то исправление и перезапись внешнего файла менее чувствительна, болезненна для активно работающих пользователей в рабочем режиме, чем редактирование и пересохранение работающего расширения, требующего рестарта приложения.

    Мое мнение, чем меньше объектов и кода в расширениях тем лучше.

    Reply
  7. mvxyz

    Хорошая мысль. Спасибо. Удобно тем, что не нужно добавлять массу объектов в расширение, например, для того, чтобы отладить запрос. Кроме того, чем меньше объектов в расширении, тем меньше проблем при обновлении.

    Reply
  8. independ

    Я как раз все свои ранние наработки например https://infostart.ru/public/665065/ переделываю под этот механизм: одна внешняя обработка с несколькими диалоговыми формами.

    Reply
  9. ВикторП

    Вы по факту рассказываете, что вы свои доработки делаете в продуктивных базах без какого- либо тестирования.

    Для вас очень удобно, бесспорно.

    Reply
  10. feva

    Добрый день!

    «От чего можно отказаться при разработке расширений 1С» — расширения 1С;

    «Расширения 1С — удобный и адекватный механизм при работе с типовыми конфигурациями.» — аж глаз задергался.

    Статья весьма в правильном направлении, есть масса способов обойти это проклятое место стороной!

    Имел ряд негативных опытов в работе с сеим детищем и могу выделить два момента. Первое — это обновление платформы, ты никогда не знаешь, что на этот раз появится или от чего откажутся, а перелопачивать уйму. Второе — поддержка. Если где-то будет получаться не то, что хотелось бы, то с первого раза можно и не догадаться, что кто-то делал это в расширении и времязатраты будут колоссальными. Расширения хороши когда нужно срочно, буквально вчера, поправить ошибку, а монопольный доступ к базе не получить.

    Reply
  11. amd1986

    Не согласен со статьей. Так как описано — делать не нужно. Может это и удобно, но в один прекрасный день внешняя обработка исчезнет. И все, приплыли.

    Reply
  12. independ

    Не нужно хранить яйца в одной корзине, что-то во внешних обработках, что-то в расширении, иногда надо приходится менять саму конфигурацию

    Разные варианты и решения — это хорошо и правильно

    Reply
  13. Yashazz

    (11) Вот да, насчёт «удобного и адекватного» — это очень суровое преувеличение. Не к ночи будь помянута сия кривая поделка. И совершенно верно замечено — никогда не знаешь, что где накроется и сломается.

    Reply
  14. milanse

    Как контролировать что ничего не сломалось при обновлении ? Как вести версионирование доработок ? Очень спорное предложение.

    Reply
  15. independ

    «Если в машине нет какой-то опции, значит она не сломается (опция)», дословная цитата от Генри Форда. Так и с расширениями, если чего-то избыточного нет, то и надежность расширения выше. А внешнюю обработку, которая лежит в справочнике, сломать сложно, и наличие этой обработки вряд ли влияет к примеру на процесс обновления конфигурации.

    Reply
  16. AneJIbcuH
    Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию(ИмяОтчетаОбработки).Ссылка

    Уберите в конце «.Ссылка», глаз режет )

    Reply
  17. deminded

    А если ее переименуют, иди собирай по коду где она искалась…

    Reply
  18. independ

    (17) Вы правы, исправил

    Reply
  19. yurikmellon

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

    Reply
  20. ids79

    (11)Автор же пишет, что в основном поддержкой занимается. И компании не большие, значит и доработок мало. В его случае, я думаю, такой вариант будет удобным.

    Если доработок много, то, как ни крути, удобнее в основной конфигурации дорабатывать. Тут и версионирование, отладка удобнее, ну про обновление уже много говорили.

    Reply
  21. maxx88

    (4) https://kb.1c.ru/articleView.jsp?id=111

    Влияние внешних обработок на производительность:

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

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

    Reply
  22. script

    Вариант сто пудов рабочий.

    Reply

Leave a Comment

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