Полезные советы для разработки и применения расширений.
Как подключить отладку, как сохранять данные, последовательность обработчиков, использование модуля менеджера и другое.
Очень талантливо сделана публикация! Спасибо! Пишите еще!
* Не знал про отладку в расширениях, очень бывает нужно.
* Запросы можно и в консоле запросов стряпать, удобнее.
* Багфикс согласен, очень действенно.
Очень талантливо сделана публикация! Спасибо! Пишите еще!
* Не знал про отладку в расширениях, очень бывает нужно.
* Запросы можно и в консоле запросов стряпать, удобнее.
* Багфикс согласен, очень действенно.
И при последующем обновлении конфигурации расширение может перестать работать
Кажется, это не так. Еще не проверял, но разработчики платформы заявляли, что расширение должно подхватить изменения основной конфигурации и расширение должно продолжить работать. После того как проверю, еще раз напишу.
Пока в некоторых ситуациях удобнее программно добавлять элементы на форму.
Безусловно Вы правы!
(3) white_sochi,
Огромное спасибо! Перевод получил и очень Вам признателен.
Кажется, это не так. Еще не проверял, но разработчики платформы заявляли...
Проверял таким образом: в БП 3.0.42 в форму документа АктОбОказанииПроизводственныхУслуг добавил элемент, например декорацию. Сохранил это расширение и загрузил в БП 3.0.41. Появилась ошибка, ругается на отсутствующий справочник.
Попробовал в расширении удалить все штатные элементы формы и добавить свой элемент. В предприятии при открытии этого документа пропали все элементы и форма не открылась.
До появления расширений несколько лет эта конфигурация обновлялась с дополнительным общим модулем, где изменения в формы документов вносились программно. Конфликтов небыло ни разу. Расширение пока не решило этот вопрос.
(11) MaxS, (12) JohnyDeath,
Да, тут вы правы. Расширение еще не умеет всего делать.
Лично меня в расширениях очень радует, что для изменений не нужно снимать с поддержки.
А поправить расширение после обновления, для меня лично, проще, чем обновлять измененную конфу.
Я к нему отношусь как к еще одному инструменту, который может подходить для каких-то задач. А для каких-то быть совсем не пригодным. И это нормально, ведь только из-за того, что оно что-то не умеет не нужно ставить на нем крест.
(11) MaxS, Добрый день!
Насколько я знаю, форму в расширении можно обновить из основной конфы, кнопка в конструкторе форм "Обновить расширение формы", при обновлении все изменения остаются, применяются только изменения из основной конфы.
А ещё, если, например, нужно с помощью расширения всего лишь добавить кнопку на форму документа, то придётся тянуть в расширение всю форму. И при последующем обновлении конфигурации расширение может перестать работать.
Почему нет режима объединения элементов расширения с основной конфигурацией? Добавил бы несколько элементов на форму и они бы объединились по именам.
Пока в некоторых ситуациях удобнее программно добавлять элементы на форму. Расширение и здесь плохо помогает, т.к. в общий модуль нельзя внедриться.
(2) Думаю, что эта проблема не проблема. Просто в расширении описываешь код кнопки и программно создаешь кнопку при создании на сервере формы. Таким образом, при обновлении формы из основной конфигурации работа сводится не к приведению общего вида формы в порядок (кнопочки пропали/появились) а к приведению в порядок только написанного кода на форме (точнее проверки того, что код расширения не изменился).
Тем более добро пожаловать в 8.3.9 и т.д. где теперь можно почти со всеми модулями проводить махинации.
(97) Код в общем модуле доработанной конфигурации содержит несколько строк и не зависит от метаданных. А при попытке перетянуть форму в расширение переносится ещё и куча ссылок на документы и справочники.
Типовых конфигураций на 8.3.9, в которых ведётся учет я пока не встречал.
Внес свои 5 копеек ))) точнее 4.98, все что было. Спасибо за труд.
Не знал про отладку, раньше писал все в внеш обработках, потом переносил в расширение.
Вот проблемы сейчас писать расширения нет, уже много инфы. А вот четкой уверенности, что после обновления измененной типовой формы не приедятся также перерабатывать эту форму в расширении у меня нет. Вот это тормозит применение расширений при доработках конфигурации.
(5) вот и я немного прилип после обновления типовой бухгалтерии 3.0. В справочнике "Контрагенты" был переименован реквизит "ОсновнойДоговорКонтрагента" (теперь он "УдалитьОсновнойДоговорКонтрагента") и всё, теперь расширение нерабочее. А допиливал я по мелочи: формы ПКО, РКО, договоры контрагентов
(8) JohnyDeath,
Кажется, что в этом случае правильно, что отвалилось расширение.
Потому что если стал реквизит Удалить_, то скорее всего его использовать больше не надо. Было бы гораздо больше проблем, если расширение осталось рабочим, но делало что-то совсем другое.
(9) конкретно в этом случае я просто немного правил под себя типовую форму. А когда первый раз добавлял ее в расширение, то все реквизиты объекта автоматом перешли в расширение. Переименованные реквизиты в расширении вообще не используются, но вот работать перестало все расширение.
Скажите, я правильно понимаю, что теперь благодаря расширениям - можно по сути подписываться на события форм?
"а) Выполнить сначала типовой код, затем код из расширения:"
То есть, например, я хочу знать, что пользователь на форме документа нажал некую очень важную кнопку. Создав расширение и обработчик - могу отслеживать без изменения конфигурации, так?
(7) Никита подскажит поподробнее. создал в расширении подсистему, создал роль и обработку. в итоге подсистема не видна. не подскажите какие подводные камни имеются?
Никита, хорошая статья.
Сделали расширение с командой "открыть" "свою" добавленную форму.
На платформе 8.3.8 работало. ничего не меняли .на платформе 8.3,9 и на 8.3.10 Выдает ошибку "Неизвестное имя формы".
Что надо поменять для 8.3.9(10)?
вот модуль
Процедура Расш_TXT_НОФ(Команда)
Если Объект.Проведен Тогда
Иначе
ЭтаФорма.Записать();
Конецесли;
Если НЕ ТолькоПросмотр Тогда
ЗаблокироватьДанныеФормыДляРедактирования();
КонецЕсли;
ПараметрыФормы = Новый Структура();
ПараметрыФормы.Вставить("Организация", Объект.Организация);
ПараметрыФормы.Вставить("ДатаДокумента", Объект.Дата);
ПараметрыФормы.Вставить("НомерДок", Объект.Номер);
ПараметрыФормы.Вставить("ДокСсылка", Объект.Ссылка);
ОткрытьФорму("Документ.РеализацияТоваровУслуг.Форма.Расш_TXT_Форма", ПараметрыФормы, ЭтаФорма);
// Вставить содержимое обработчика.
КонецПроцедуры
Показать
--------------
текст Ошибки
{ТХТ_ГТД Документ.РеализацияТоваровУслуг.Форма.ФормаДокументаТовары.Форма(166)}: Ошибка при вызове метода контекста (ОткрытьФорму)
ОткрытьФорму("Документ.РеализацияТоваровУслуг.Форма.Расш_TXT_Форма", ПараметрыФормы, ЭтаФорма);
по причине:
Неизвестное имя формы. Имя: "Документ.РеализацияТоваровУслуг.Форма.Расш_TXT_Форма"
(133)
Если ничего не меняли, то скорее всего это ошибка платформы и можете написать им.
Я бы попробовал перенести форму в другое место или скопировать ее и обратиться заново.
Гифки хороши только для поверхностного просмотра. На них очень мелко и деталей не видно и нельзя на паузу нажать. Поэтому лучше видеоролики, которые например бы открывались по клику на гифке.
(14) Если интересно, есть хитрый удобный способ сделать паузу гифки. Для этого надо нажать в нужный тебе момент на кнопку закрытия браузера, но не отпускать кнопку мыши (чтоб не закрыть браузер :-) ) потом просто отвести указать в сторону и отпустить.
Очень удобный механизм расширений, когда нужно доработать управляемые формы... Иногда правда, когда разработчики меняют названия реквизитов, приходится допиливать расширения заново... Но это не так часто происходит, поэтому можно и пережить этот момент.
Сейчас столкнулась с такой проблемкой, может кто поможет разобраться:
Добавляю в расширение форму, которая вызывается из основной формы объекта, по гиперссылке (например: Конфигурация БП 3.0, документ "Реализация", форма "ФормаДоставка").
Хочу заполнить часть реквизитов на основании данных из основной формы документа. Как это можно сделать?
Как в расширении обратиться к самому объекту?
Коллеги! Всех поздравляю.
В 8.3.9 будет существенное развитие механизма Расширения конфигурации.
Почитать можно в зазеркалье.
Если кратко, то суть изменений:
Перехват Вы можете перехватывать любые методы типовой конфигурации, обрамляя их собственными, или даже заменяя целиком.
Собственные обработчики Вы можете добавлять собственные обработчики событий типовой конфигурации. Если, например, в типовой конфигурации они не назначены.
Собственные модули Вы можете создавать в расширении собственные общие модули.
Вызов И, наконец, вы можете вызывать в своём расширении любые методы типовой конфигурации.
Когда вы заимствуете и расширяете какой-нибудь модуль типовой конфигурации, то ваш расширяющий модуль будет находиться в одном пространстве имён с типовым модулем. Поэтому, находясь в расширяющем модуле, вы можете обращаться к любым переменным и методам типового модуля напрямую.
Если же вы находитесь в другом модуле, существующем в расширении, то вам будут доступны ваши же экспортируемые переменные и методы расширяющего модуля. Потому что они добавляются в результирующий публичный контекст типового модуля.
Добрый день.
Подскажите пожалуйста куда рыть дальше.
Проблема с ошибкой блокировки расширения конфигуратором. Всё сделал как описано в п.4. Ошибка блокировки не ушла.
На вкладке Дополнительно поставил флажок "Устанавливать режим разрешения отладки". Ошибка блокировки не ушла.
И в запуске предприятия поставил режим отладки.
Снимки экранов приложил в файле. Подскажите пожалуйста что забыл сделать.
(31) bondar_vy@mail.ru,
Такое может быть при первом подключении расширения или если изменился Поставщик расширения или номер версии.
Для исправления попробуйте следующие действия:
1. В конфигураторе закрыть это расширение
2. В режиме предприятия открыть форму связанную с расширением
3. Открыть расширение в конфигураторе
4. Перезапустить отладку.
День добрый.
Есть ещё один теоретический вопрос. При обновлении основной конфигурации каким образом в расширение подтянуть все изменения. Я такого механизма не нашёл. Нашёл что можно сделать обновление расширенной формы. А всё остальное, то что присутствует в расширении и попало туда с формой как? Или оно обновится автоматически или в расширении только ссылки?
И можно ли обновить скажем все изменённые в расширении формы оптом или надо по одной?
Обновлял зуп. с расширением от внедренца- гемор полный
Инструмент очень далек от реалли и пользоваться им нормально не получится. Это глубокая альфа заявленная в 2014г и до сих пор ею остается.
Если кто соскучился по танцам, то флаг вам в руки.
Вообще странно, что я прохлопал эту публикацию и не отметился в комментах. Так вот, отмечаюсь. Всё, изложенное в статье, конечно, очень демонстративно, круто и замечательно, только вот нихрена вам не поможет. Количество глюков и косяков в этом сыром убожестве от 1С таково, что мануалами тут делу не поможешь, только личный опыт. Что делать можно, что нельзя, где её заклинит, и где платформа тихо рухнет. Мне ещё в прошлом году по самое не балуйся хватило.
Добрый совет: если можете - пилите конфу и не связывайтесь с расширениями. Это полное и безысходное г****.
И ещё - ребятушки, а что, пересказ материалов с ИТС без указания копирайта так высоко котируется?
Всё, изложенное в статье, конечно, очень демонстративно, круто и замечательно
Спасибо за оценку!
И ещё - ребятушки, а что, пересказ материалов с ИТС без указания копирайта так высоко котируется?
Странно, я думал ссылка на вашу публикацию и на материалы ИТС в самом начале помогут ознакомиться детальнее с расширениями.
В своей публикации я постарался свести все к маленьким практическим кейсам.
Если, считаете, что это плохо - то можете поставить публикации минус. И тогда, возможно, таких публикаций будет меньше.
(39) Yashazz, Уважаемый, но разве у всех есть под рукой ИТС? Да и остальные не всегда читают весь ИТС, а ведут рубрикатор опубликованного и того меньше.
Статья полезна системным подходом, благодарность автору.
На мой взгляд не хватает предостережений, в этой части с Вами полностью согласен, правильно заточенный инструмент, конфа, надёжней в эксплуатации.
(44) white-mount, вы знаете, что такое нарушение копирайта? Это, на минуточку, нарушение законодательства. А на ИС прям-таки стандартная реакция типа "нуачо" или "а у меня нет ИТС". Вы вообще понимаете, что это статья УК? А не повод вешать плюсики за плагиат?
white-mount, вы знаете, что такое нарушение копирайта?
Ответ: Да
Вы вообще понимаете, что это статья УК?
Ответ: Нет
Подайте на меня в суд за то, что я на форуме направил Вам message:
Yashazz, Уважаемый, но разве у всех есть под рукой ИТС? Да и остальные не всегда читают весь ИТС, а ведут рубрикатор опубликованного и того меньше.
Статья полезна системным подходом, благодарность автору.
На мой взгляд не хватает предостережений, в этой части с Вами полностью согласен, правильно заточенный инструмент, конфа, надёжней в эксплуатации.
Кто знает, добавляются ли в расширение глобальные параметризуемые команды формы? А то добавил форму, а этих команд нет, без низ мне смысл использовать расширение 0 ((
(45) smaximaa,
а программно создавать при открытии формы не получается?
Хотя есть задача в которой это и мне может потребоваться, нужно будет попробовать.
(49) Milanick, (59) TreeDogNight,
Гифки я делал так:
1. Снимал видео через Snagit
2. Потом через сервис http://makeagif.com/ переделывал из видео в gif
есть проблема, в определяемых типах нельзя менять тип, выходит ошибка и расширение не запускается, как можно это обойти?
ps. смысл тогда добавлять их в расширение если редактировать нельзя...
(55) смотри, просто мне попалось расширение и в нем добавлена только одна форма для документа, и та без реквизитов, я такого смог добиться только удалив все ненужное потом , как то это странно, неужели все так делают
(61) oslokot,
Нужно в расширении установить проверку свойство "Иерархический".
Либо сделать запрос в другом месте. При выполнении ошибки быть не должно.
(63) Wefast,
Такая возможность появилась в платформе 8.3.9.
Но чтобы она работала в конфигурации должен быть снят режим совместимости с 8.3.8.
На сколько мне известно, таких типовых еще нет.
(68) По сообщениям с партнерского форума сделал вывод, что поддержки расширений как и внешних обработок в текущей версии нет. Думаю она появится в самом конце.
Как массово добавить объекты из конфигурации (CF) в расширение (CFE)?
Наше решение должно помочь https://infostart.ru/public/689299/ Добавляются, естественно, измененные объекты типовых конфигураций, а не все подряд.
Делали для упрощения обновления измененных типовых конфигураций
(70) В подсистеме "Инструменты разработчика" теперь есть общая форма "ирВыпускРасширения". Она преобразует конфигурацию в расширение (конечно же с ограничениями).
Сегодня была задача по изменению общего модуля. Расширение помогло. Добавил общий модуль и скопировал в общий модуль процедуру. К этим процедурам надо добавлять дерективы &Перед("НашаПроцедура"), &После("НашаПроцедура") и &Вместо("НашаПроцедура"). Если использовать &Вместо к ней можно еще в конце процедуры или функции добавить метод ПродолжитьВызов(), как я понял этот метод выполняет сначала процедуру из расширения потом эту же процедуру там от куда мы ее взяли. Не знаю за чем это. Вот источник http://v8.1c.ru/o7/201603module/index.htm
(72) Цитата: "Добавил общий модуль и скопировал в общий модуль процедуру.".
1. Что здесь означает слово "Добавил" - скопировал в расширение или реально добавил?!
2. Аналогично слово "Скопировал"?!
Например, я добавил в свое расширение ОбщийМодуль из основной конфы и пытаюсь переопределить там функцию аннотацией &Вместо("ИмяФункции") - при компиляции в ответ получаю
{Расширение1 ОбщийМодуль.Расш1_ОбщийМодуль_ИмяМодуля.Модуль(2,8)}: Ожидается определение процедуры/функции &Вместо<<?>>("ПолучитьФорматЗаписиИзДереваФормата") (Проверка: Сервер).
Что не так?! В тырнете ответа НЕ НАШЕЛ!
Подскажите кто нибудь. Встретился с проблемой, модуль менеджера документа с директивой &Вместо не перехватывается в фоновом задании, в частности при групповом перепроведении документов. Как решить?
В обычном приложении и внешнем соединении расширения не работают. Вроде там какую то ошибку 1С собирается исправить, но все равно гарантировать полностью корректную работу не будет. Открыть обычную форму в управляемом режиме из расширения мне тоже не удалось - ошибка "Неизвестное имя формы". У кого нибудь получилось?