[ Разбор вопросов ] Практические вопросы использования расширений 1С

Механизм расширений прочно вошел в нашу жизнь :) В Мастер-группы поступает много вопросов, так или иначе связанных с расширениями. Ниже подборка некоторых из них – тут и про активность расширений, и про использование в РИБ, и про практический опыт наших тренеров, и про использование в 1С:Розница для быстрого исправления программных ошибок. Приятного прочтения!

 

Вопрос №1: Возможно ли использовать расширение только в подчиненном узле РИБ?

Подскажите, пожалуйста, есть ли возможность использовать расширение только в подчиненном узле РИБ?

Ответ

Да, в таком случае нужно добавить расширение непосредственно в подчиненном узле, не устанавливать для него галочку «Используется в распределенной ИБ».

Расширения конфигурации

Тогда такое расширение не будет мигрировать в другие узлы РИБ.

 

Вопрос №2: Для чего предназначается свойство активности у расширения?

Подскажите какой-нибудь пример из реальной практики, где может использоваться признак активности у расширения? Складывается такое ощущение, что это вообще бесполезная вещь, так как вызывает ошибки, а не только скрывает и отключает доп. функциональность конфигурации.

Ответ

Это “технический” признак. Он не предназначен для решения каких-либо учетных задач и позволяет отключить расширение, не удаляя его полностью из информационной базы. То есть можно проверить, как будет работать система без какого-то конкретного расширения.

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

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

 

Вопрос №3: Какими принципами руководствоваться при разработке с использованием расширений?

Поделитесь практическим опытом по поводу того, каким принципом руководствоваться при программировании через расширения? Например:

  • создать одно расширение, в котором адаптировать все существующие объекты, или на каждую мелкую задачу создавать свое расширение?
  • а вот с “большими” задачами, наверное, лучше создать отдельное расширение?
  • на новые реквизиты объектов нужно создать одно общее расширение или отдельно по задачам? Ведь если нам потребуется из соседнего расширения получить реквизиты текущего расширения, то это будет проблематично. Какая здесь практика?
  • урок с константами – если мы сделаем отдельное расширение только для констант, то в соседних расширениях мы ведь не сможем ими пользоваться? Поэтому лучше создавать константы в основной конфигурации? Какая здесь практика?

Ответ

Рекомендую создавать отдельное расширение на каждую подсистему (не обязательно в терминах 1С) – большую задачу. В куче мелких расширений сложно искать, в каких расширениях дорабатывался объект, кто его менял, в каком расширении мне теперь нужно выполнить свои доработки.

Еще один подход при наличии на проекте нескольких исполнителей, команд, франчайзи – один автор – одно расширение. Так проще “искать концы” – кто и для чего выполнял доработки.

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

При большом количестве расширений сложно получить общую картину доработок в целом. Если доработки расположены в основной конфигурации, достаточно сравнить её с конфигурацией поставщика – видно все изменения. При работе с расширениями это уже не так просто.

Считаю, что новые реквизиты и объекты метаданных нужно добавлять в основную конфигурацию. Это позволит всем расширениям “видеть” эти реквизиты. Также при отключении какого-то расширения добавленные реквизиты будут доступны без всяких ограничений.

 

Вопрос №4: Как в 1С:Розница настроить шаблоны этикеток при работе в РИБ?

В 1С:Розница на одном рабочем месте настроил шаблон этикетки, распечатал  –  результат “всё хорошо”, перешел на другое рабочее место, там распечатал – результат “всё плохо”. Поправил параметры страницы, выбрал принтер второго рабочего места, распечатал – результат “всё хорошо”. Перешел на первое рабочее место – результат “всё плохо”. Сформировал РИБ, настроил третье рабочее место – результат “всё стало ещё хуже” (так как шаблоны участвуют в правилах обмена и перезатирают друг друга). Вопрос  –  если много рабочих мест и не один РИБ, то как быть в данном случае?

Ответ

Сейчас сложно протестировать описанную ситуацию, но если все действительно ведет себя так, как вы говорите, то дальше варианта два:

1) Обратиться на линию консультаций 1С, и может разработчики оперативно эту ситуацию обработают

2) Как всегда, своими силами (зато оперативно) доработать справочник шаблонов. Вместо сложностей с методикой сохранения/восстановления настроек можно просто доработать ограничение выбора и отображения списка шаблонов (отбором, или жестче). Тогда вы будете видеть все 18 шаблонов, как администратор системы, а у пользователей выбор будет ограничен.

Более простого пути при таких недостатках, увы, не вижу.

Комментарий слушателя

Спасибо за идею! Добавил расширение, в котором вывел у формы элемента справочника “ХранилищеШаблонов” реквизит “ПользовательСоздал” (который там существует, но почему-то не используется). Заполнил его при создании макета формы, а в форме выбора у пользователя (стандартным способом) сделал отбор по реквизиту “ПользовательСоздал”. Это конечно “кривое” решение, но всё же теперь пользователи не будут видеть чужие шаблоны в форме выбора.

Комментарии / обсуждение (2):

  1. SnowMan83

    Добрый день. Можно ли как то отключить оповещение о том, что расширение не активно? Если оно не активно, ну так пусть себе сидит в уголке и молчит. Зачем каждый раз предупреждать об этом? Вроде бы параметры запуска какие то есть с отключением лишних сообщений, они действуют на это?

    • Василий Ханевич

      Добрый день!
      Не нашел красивого способа решения этой проблемы.
      Находил в интернете радикальное предложение – вместо отключения активности сохранять резервную копию расширения в файл, временно удалять из расширения в базе весь код, оставлять только добавленные/измененные реквизиты и объекты (чтобы не потерять данные). Тогда расширение можно будет не отключать.
      Затем восстанавливать расширение из сохраненного файла.
      Это, конечно, ужасный костыль. К тому же есть риск потерять данные. Но зато уведомление не будет отображаться:)

Добавить комментарий

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

Вход на сайт

Зарегистрироваться

Подтверждение регистрации будет отправлено на указанный e-mail.

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

Восстановить доступ

E-mail или логин

Ссылка на создание нового пароля будет отправлена на указанный e-mail.