С нуля: собираем расширение для доработки 1С
Представьте, что клиент увидел какую-то новую фишку – и просит добавить в свою конфигурацию.
Вопрос не в том, чтобы скопировать – это было бы нарушением прав 1С.
Вопрос в том, как сделать это быстро, тиражируемо и безвредно для клиента :)
В сегодняшних видео мы разберем, как в 1С:Бухгалтерию добавить функцию быстрого создания документов “Реализации товаров и услуг”, как в УТ 11.
И даже выложим само расширение, чтобы Вы его попробовали :)
Постановка задачи
В справочнике Контрагенты должна появиться кнопка / команда “Создать реализацию”, как в УТ 11.
При нажатии на кнопку – создается новый документ и заполняется данными последней отгрузки на этого клиента.
Видео № 1 – разработка расширения для типовой 1С:Бухгалтерии
Видео № 2 – Оптимизация решения
А теперь мы рассмотрим, как оптимизировать наше расширение конфигурации, речь идет об уменьшении контролируемых свойств.
Профессиональный разработчик это точно должен знать :)
Для тех, кто хочет пощупать :)
Подключите его к последнему релизу 1С:Бухгалтерии 8 (нужна платформа 8.3.10 или 8.3.11).
Результат налицо :)
Думаете о своей нетленке? Используете доработки для нескольких клиентов?
Сливки снимают только первые :)
Добрый день!
А нет ли где-нить инфы, скоро ли ожидается работа расширений с планом счетов?
Появилась необходимость на 20-м счете изменить свойство “Только обороты” у субконто Статьи затрат, жаль, что не получается решить вопрос только с помощью расширения. Придется изменять свойство в конфе, и таскать всегда с собой.
Добрый день!
У меня такой информации нет.
В плановых изменениях механизма расширений конфигураций для 8.3.12 указано следующее: расширение регистров, возможность создавать в расширении собственные планы обмена, возможность хранить расширения в хранилище.
А где обрабатываются структуры ЗначенияЗаполнения и ЗначениеКопирования? В модуле документа и модуле формы документа РеализацияТУ такого не увидел.
Добрый день!
Это поведение на уровне платформы.
мне кажется, что бездумно убирая контролируемые свойства мы получим ошибки во время работы, а не во время компиляции расширений. Естественно, если таблицы или реквизиты задействованные в том же запросе, вдруг перестанут существовать или переименуются, сменят тип т.д.
Спорная оптимизация :)
Добрый день!
Бездумно вообще ничего делать не стоит:)
В видео показывалось, что после уменьшения количества контролируемых свойств разработанное расширение работает корректно.
Если в расширении доработан текст запроса либо внесены другие изменения, а потом при обновлении конфигурации на следующий релиз перестанут существовать реквизиты, то расширение в любом случае необходимо доработать.
Что касается оптимизации, то в видео специально отмечаем, что это оптимизация только с точки зрения количества контролируемых свойств. Но при этом могут возникать трудности при доработке такого расширения, например, при открытии в конфигураторе текста запроса динамического списка.
Добрый день!
Пробую создать расширение с добавлением регистра сведений на конфигурации ERP 2.4.1.206
Выдает следующую ошибку: Имя команды не может совпадать с именем стандартной команды.
Режим совместимости конфигурации установлен в “Не использовать”.
Добрый день!
Это особенность платформы 8.3.11. В списке новшеств такое изменение отражено:
http://downloads.v8.1c.ru/content/Platform/8_3_11_2867/1cv8upd.htm#72efc32a-0573-11e7-a3f7-0050569f678a
Добрый день, у меня одна конфигурация выдаёт такое сообщение, но тем не менее позволяет применить конфигурацию, а другая не позволяет. Почему поведение различное на одной платформе? Можете подсказать где это настраивается?
Добрый день!
Возможно, дело в режиме совместимости используемых конфигураций.
Спасибо. Точно. Конфигурация работающая на платформе 8.3.11 в режиме совместимости 8.3.8 на такие ошибки указывает, но обновить конфигурацию БД позволяет.
Большое спасибо за курс. Будем пробовать малыми порциями:)
Пожалуйста!
До встречи в Мастер-группе.
Добрый день!
БП 3.0.54.20 подключаю расширение (скачал по вашей ссылке) в режиме пользователя через управление расширениями/добавить, получаю вот такое сообщение: (Критичная) : Значение контролируемого свойства РежимСовместимостиИнтерфейса у объекта не совпадает со значением в расширяемой конфигурации.
Подскажите пожалуйста, что я делаю не так?
Спасибо.
Добрый день!
Расширение создавалось под БП 3.0.53. В этом релизе значение свойства Режим совместимости интерфейса установлено в Такси:
А в БП 3.0.54.20 значение свойства Режим совместимости интерфейса изменилось на Такси. Разрешить Версия 8.2.
Получается, что не совпадает значение контролируемого свойства в расширении и в основной конфигурации.
Чтобы это расширение подключилось и в 3.0.54, нужно в свойствах расширения изменить свойство Режим совместимости интерфейса на Такси. Разрешить Версия 8.2:
Спасибо, в плане подключения помогло.
Расширение подключил, только команда создать реализацию не срабатывает.
Посмотрите комментарий. Скорее всего, это Ваш случай.
Сделал: “Странно, но как сделал команду
СозданиеРеализации с типом вызова Перед (а не После) на 8.3.11 все заработало”.
Помогло.
Спасибо за материал.
Не пойму. На 8.3.10 пример работает, на 8.3.11.2867 нет
Добрый день!
Расширение разрабатывалось на 8.3.10. Что именно не получается на 8.3.11?
Просто не срабатывает команда, в отладке не останавливается. Конфигурация одна и та же, на 8.3.10 все работает.
Странно, но как сделал команду
СозданиеРеализации с типом вызова Перед (а не После) на 8.3.11 все заработало
Похоже на ошибку платформы.
Первым делом я бы проверил, включена ли отладка на сервере (ключ -debug в строке запуска службы сервера 1С:Предприятие). Каких-то явных проблем с точками останова в 8.3.11 я не обнаружил. Возможно, они просто мне не попались.
У меня тоже сначала не отработало. Потом проставил в форме команды нужную процедуру два раза (там два окошка), заработало.
На bugboard.v8.1c.ru не нашел похожей ошибки. Возможно, еще не зарегистрирована.
Нормальный голос. Нужно уметь абстрагироваться от собственных пунктиков.
Подскажите как расширение работает с распределенной базой?
Добрый день!
Расширения не передаются с обменом. Нужно выполнять это вручную или реализовать свой функционал. В комментарии описан пример реализации.
Добрый день. Хотелось бы услышать пару слов о возможностях расширений при групповой разработке? Всегда пытаемся начать с расширений, но в итоге возвращаемся обратно в Хранилище (разработчик поработал, сохранил, потом поработал другой разработчик… ну очень не удобно). Может быть реальные практические идеи?
Добрый день!
Хранилище конфигурации не поддерживает работу с расширениями. В релизе 8.3.12, который по планам выйдет в феврале 2018, заявлена поддержка работы с расширениями при помощи хранилища. Так что пока ждем.
Пока придется вручную объединять наработки всех программистов. Расширение для загрузки в рабочую базу получаем в одной тестовой базе. Разработчик в собственной базе вносит в расширение изменения, сохраняет расширение в файл. В тестовой базе при помощи сравнения-объединения собираются изменения всех разработчиков. Для удобства лучше изменять номер версии расширения в тестовой базе. Такое расширение после тестирования можно загружать в рабочую базу. Также рекомендуется хранить версии расширений в виде файлов на диске.
Да много интересного!Вот это реальный шаг вперед.Век живи,век учись.
Молодцы ребята что такой курс сделали.
А вот вопрос по существу.
А где расширение хранит данные?
Н-р я делаю расширение для документа “Заказ клиента” (ERP), у меня появляются поля связанные со справочником номенклатура, т.е. по сути я выбираю туда свою номенклатуру
Если расширение “отпадёт” по каким-то причинам, но я его потом подключу вновь, данные мои “подхватятся”? или будут утрачены на веке вечные?!
Если расширение добавляет новый реквизит в справочник, то для этого справочника создаётся отдельная (“расширенная”) таблица с полем для нового реквизита. Подробнее, с демонстрацией таблиц СУБД во втором видео на странице Расширения в 8.3.11: то, что изменит стандарты доработки 1С. Плюс видео, конечно :)
При удалении расширения из базы данных будут навсегда удалены все данные, которые были добавлены при помощи этого расширения.
Если из-за ошибки при проверке контролируемых свойств расширение не подключится, то добавленные расширениями данные в таблицах базы физически останутся. Данные, находящиеся в этих полях, будут недоступны до тех пор, пока не будет решена проблема с подключением расширения. После этого будет возможна полноценная работа с этими данными. Данные удаляются из базы только при удалении самого расширения.
А если второе поле – таблица одна “расширенная” ? Похоже они пошли по тому же пути, что и Zibel, там тоже создаются дополнительные таблицы при добавлении полей, только их может быть несколько, в результате в базе таблиц около 5000, а реально используются около 800. Не экономичная модель для БД, лишние связи.
Расширенная таблица для конкретного справочника всегда будет одна. При этом неважно, сколько расширений, изменяющих этот справочник загружено в базу. В расширенной таблице будут все поля из всех расширений.
Итак, резюмируя ваш ответ, сделал вывод:
Пока я расширение сам не отключу, какие-то сбои при его работе не удалят данные вносимые с помощью расширение
Да, но с важной оговоркой – если Вы не столкнетесь с ошибкой платформы, с недокументированным поведением:(
Ну, от этого, увы, никто не застрахован =(
Главное знать поведение программы в документированных случаях ))
Спасибо, здорово. Подробно, информативно, без лишних слов. Как всегда на высоте!!!
Круто, спасибо, очень познавательно :)
Как всегда … всё очень доступно и понятно!
зЫ: Я не знаю почему, но голос данного диктора у меня вызывает дикую улыбку )))))))))))))))))))))))))))))))))))
Хорошо, что не слёзы! На ускоренном воспроизведении смотрите? :))
нет, на обычном )))
я думаю на ускоренном побегут слёзы уже )))))))))))))))