Доработки 1с как перенести в расширение

Обновлено: 04.07.2024

Нужно в КА 2.4 сделать много доработок: новые документы, отчеты.
Есть ли смысл делать это с помощью расширений?

1) Первый вопрос по сложности доработок с помощью расширений.

Нам исполнитель сказал, что расширением делать доработки намного сложнее.
Например, подключить механизм подбора номенклатуры к документу без расширений занимает 6-8 часов, а с расширением 20-24 часов.
Действительно ли реализация доработок с помощью расширений - так сложно?
Зачем тогда вообще придуман механизм?

2) Второй вопрос - по дальнейшему сопровождению.

Будет ли какая-то польза от расширений в дальнейшем сопровождении программы?
Как я понимаю, проще будет устанавливать обновления.
Какие еще есть плюсы-минусы от использования расширений?

3) Вывод.
И в итоге что посоветуете? Дорабатывать расширениями? Или конфигурацию снимать с поддержки?

Если совсем новые - можно и прямо в конфигурации. Обновлению они не мешают. Если дорабатывать имеющиеся - то в расширении разработать, протестировать и потом желательно переносить в конфигурацию

- у него есть готовые костыли без расширений и хочет их впарить
логично делать доработки максимально в расширениях и точечно добавлять некоторые объекты/реквизиты в основную, не снимая полностью с поддержки.

если вы на еще 7.7, то такая логика не верна.

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

>>Действительно ли реализация доработок с помощью расширений - так сложно?
Не особо, но сложно - поддерживать потом, если таких расширений - достаточно, и в них выполнены объемные глубокие доработки.

>>Зачем тогда вообще придуман механизм?
Простые доработки, выпуск быстрых латок.

>>Будет ли какая-то польза от расширений в дальнейшем сопровождении программы?
В общем и лично вашем случае (новые документы, отчеты и прочее) если стоят обособленно вообще и не используют типовые механизмы - да, будет. Если все ваше будет подключено к бсп и вы сами будет активно использовать у себя функционал типовой, заимствовать экспортные какие-то процедуры/функции и прочее - то нужно будет очень серьезно тестить после обновлений, и возможно - дорабатывать расширения. В случае изменений в самой конфе - все это делается на этапе обновлений.

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

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

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

Однозначного ответа на Ваш вопрос нет.
Всё зависит от конкретной доработки.

Например, доработка какого-нибудь алгоритма расчета НДС целесообразнее делать в самой конфигурации. В таком случае при каждом обновлении в окне сравнения/объединения конфигураций разработчик будет сразу видеть все отличия - что изменил в этом алгоритме поставщик (1С), что изменил ваш внедренец, и как это всё корректно поженить. Если такая доработка сделана в расширении, то никакого прозрачного и понятного инструмента у вас не будет. 1С что-то поменяла, а расширение об этом изменении ничего не знает, и в лучшем случае отвалится с ошибкой, а в худшем - молча перестанет работать так как вам надо.

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

Расширения прекрасны для:
1. временные патчи и исправления, которые со временем будут включены в рабочую конфигурацию.
2. незначительные доработки форм.
3. Дополнительный функционал к конфигурациям, в которых нельзя включать возможность изменения. В таком случае по сути расширения - это единственно возможный путь доработки.

(2) Оценочные суждения, не имеющие под собой никаких оснований.

(3) >> обслуживание функционала в расширениях сложнее.

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

(0) Сложнее.Но и плюсы тоже огромные.Особенно быстрота доработки патчей,можно динамически обновить и все заработает.Со временем 1с доработает сравнение расширений и наступит всеобщее счастье).

(1) >> Обновлению они не мешают.

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

(0) Трудоемкость создания новых документов на расширениях преувеличена.При создании новой подсистемы первоначальные усилия конечно превышают простое добавление вконфигурацию нового документа,но в уже созданном расширении это нивелируется, так ка заимствования уже проведены в достаточном объёме.

(0) >> расширением делать доработки намного сложнее.

Смотря какие доработки. Но зачастую это действительно так.

>> Например, подключить механизм подбора номенклатуры к документу без расширений занимает 6-8 часов, а с расширением 20-24 часов.

Насчёт конкретных часов - не знаю. Но порядок в части разницы примерно похож.
Изменение нескольких строчек кода в паре - тройке процедур занимает (условно) 10 минут. А получить тот же самый результат через расширение иногда требует час. Причём получаем кучу процедур вызванных ДО, ПОСЛЕ, ВМЕСТО, в логике работы которых без поллитра не разберешься даже по комментариям в коде (а многие ли разработчики подробно комментируют своё творчество).

Тема «аккуратной» доработки типовых конфигураций является всегда актуальной.

С помощью расширений появляется возможность вносить доработки, оставляя конфигурации БЕЗ изменений (то есть не снимая «с замка»).

Буквально за 15 минут Вы научитесь приемам, которые сможете использовать для решения разных задач.

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

Мечты о собственной нетленке могут стать реальностью :)

Изучив видео, Вы научитесь:

  • Создавать и подключать расширения к конфигурации
  • Выполнять отладку расширений
  • Дорабатывать типовые формы обработок/документов с помощью расширений
  • Перехватывать события форм типовой конфигурации
  • Хранить данные не в таблицах ИБ (хранилище настроек)
  • Использовать обработки как хранилище алгоритмов

Также мы разберем оптимизацию состава объектов расширений и ограничения расширений в текущих релизах платформы.

Видео 2. Создание универсальных механизмов с помощью расширений

В этом видео мы покажем:


Чтобы освоить разработку интерфейсов и форм в 1С:Предприятие 8.3
на профессиональном уровне, рекомендуем записаться на курс:

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

добрый день, перестали запускаться некоторые курсы. Возможно из-за того, что поменял клавиатуру на ноутбуке. Не напомните порядок восстановления? Спасибо

Далее для активации плеера выполните следующие действия:
1. Запустите плеер, откройте в нем файл плейлиста (с расширением .xml)
2. В открывшемся окне не нужно ничего вводить (!), просто нажмите кнопку Активировать.
3. После этого в Вашем браузере откроется страница с формой активации, которую нужно заполнить и нажать Активировать.

Добрый день!
Да, можно. Для этого нужно создать в основной конфигурации структуры данных, аналогичные используемым в расширении. Обработкой или вручную перенести данные из расширения в основную конфигурацию. Также нужно будет перенести весь программный код из расширения в основную конфигурацию, при необходимости адаптировать его (например, в расширении был префикс Расш_, а в основной конфигурации пр_). После протестировать, убедиться, что всё работает корректно, затем окончательно удалить расширение.

Добрый день!
Столкнулся со странным поведение расширения на платформе 8.3.9.1850 (без совместимостей).

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

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

точно такая же проблема, на 8.3.10, УТ 11.3.4

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

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

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

Добрый день!
Да, в дереве объектов метаданных для расширения есть кнопка Измененные и добавленные в расширении, которая накладывает фильтр на дерево, оставляет в нем только заимствованные объекты, модифицированные в этом расширении, и новые объекты, созданные в этом расширении. Т.е. убрирает из списка объекты, которые были только заимствованы (например, для отображения форм).
А вот сравнить объекты расширения и объекты основной конфигурации (чтобы понять, что конкретно изменилось) на сегодняшний день нельзя. Платформа пока не даёт такой возможности.

Добрый день!
Стандартно, сначала исполняется код обработчика из расширения, потом из основной конфигурации. Начиная с платформы 8.3.9 механизм расширений серьезно доработали и теперь при создании обработчика система спрашивает Перед, Вместо или После должен срабатывать обработчик расширения.

Добрый день!
Менеджер расширений не предназначен для программной генерации расширений. Он предназначен для программной загрузки и удаления расширений аналогично тому, как это делается в пользовательском режиме.

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

Добрый день! К сожалению, нет. Расширения на текущий момент используются крайне редко.

Спасибо большое, лишних знаний не бывает. Как, все-таки, приятно, когда есть люди, готовые делиться знаниями и опытом и не думающие только о наживе, в отличие от доржиков-коржиков. Удачи Вам!

Я не вижу ссылки на видео, браузер гуглхром

Добрый день!
Проверка не выявила никаких ошибок при просмотре. Попробуйте перезагрузить страницу или открыть ее в другом браузере.
Также чистка кэша должна помочь.

Скажите пожалуйста а расширение можно помещать в хранилище? Каким образом над расширением могут одновременно работать несколько человек?

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

Т.е. ошибка у меня возникала потому что не все таблицы к которым я обращался в запросе присутствовали в расширении? Если были бы все то ошибки при повторном открытии не было бы?

Подскажите, а если не все таблицы присутствуют в расширении, то сам запрос корректно отработает но просто через конструктор не откроется? У меня проблема со стандартными реквизитами(родитель, владелец,ЭтоГруппа и т.д)

Да, именно так.
Отмечайте в расширении свойства Владельцы, Иерархический как контролируемые. Тогда конструктор будет открываться без ошибок.

Спасибо, я бы никогда не догадалась))

А подскажете, как это сделать? Как в расширении увидеть свойство Владелец? Ведь это свойство не появляется среди реквизитов добавленного объекта(Номенклатуры в моем случае). Есть ли в принципе возможность в расширении на форме подчиненного объекта(Спецификации номенклатуры в моем случае) поместить поле, ссылающееся на владельца этого объекта?

Добрый день!
Давайте рассмотрим на примере, на пустой базе.

Пусть у нас есть справочник Спецификации, подчиненный справочнику Номенклатура:

Создадим расширение конфигурации, заимствуем оба справочника в расширение.
В расширении воспользуемся конструктором запроса. Для справочника Спецификации поле Владелец недоступно:

Теперь отметим для справочника Спецификации свойство Владельцы как контролируемое:

После этого в конструкторе запроса появляется поле Владелец:

На форме объекта в расширении можно отобразить владельца:

Скажите есть ли какой-то способ следить за изменением материала для тех кто прошел/приобрел курс ранее. Может реализовать механизм рассылки?

Расширения позволяют вести доработки, не изменяя конфигурацию.

В результате обновления можно выполнять автоматически – это может сделать даже сам пользователь, без привлечения специалиста.

В итоге – сокращаются затраты на сопровождение 1С.

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

А у специалиста по 1С теперь появляется время на другие задачи: проработку методологии учета, повышение удобства работы пользователей, WoT :)

Но тут возникает интересный вопрос : )

Или еще распространенная ситуация.

Так как же это сделать?

Видео – перенос доработок в расширение и приведение конфигурации к абсолютно типовой

Хотите быстро изучить механизм расширений?

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

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

Не получается добавить табличную часть на форму документа в расширении. ТЧ была создана в расширении. Что не так делаем?

Добавить в расширение

Добрый день!
Для этого необходимо выполнить явное заимствование реквизита формы Объект в расширение:

Спасибо. Потом догадался.

Добрый день, а можно ли при помощи конвертации данных 2.0 перенести данные в реквизит из расширения?

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

Можно ли сделать справочник Должности иерархическим и ограничить количество уровней иерархии в ЗУП КОРП 3.1.9.108 через расширение?

Добрый день!
Нет, такого сделать на сегодняшний день нельзя.
Свойство Иерархический у справочника является контролируемым, т.е. будет проверяться значение свойства в расширении со значением этого же свойства в основной конфигурации.
Если значения этих свойств не совпадут, то расширение не будет применено, система выдаст ошибку:
Значение контролируемого свойства Иерархический у объекта Справочник.Должности не совпадает со значением в расширяемой конфигурации

Спасибо вам большое за ответ!

Пожалуйста! Хорошего обучения!

То есть о случаях, когда изменения можно было сделать существующими средствами типовых конфигураций, а не изобретать велосипед. Никакого обобщения нет :)

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

Благодарим Вас за напоминание!
Видео добавили к материалам курса. Доступно по ссылке.

Спасибо большое за ответ, Василий! Будем ждать с нетерпением. Но, я хотел просто повторить как у Вас на видео. Какую платформу Вы использовали?

Взял УТ 11 с таким-же релизом как у Вас и на платформе 8.3.12.1529 все заработало. Очень странно, что в новом релизе (на котором я пробовал) разработчик вернул режим проверки совместимости. Еще раз спасибо за ответы!

Я использовал платформу 8.3.12.1412.

В истории данных можно использовать поля, добавленные расширением конфигурации, только начиная с релиза 8.3.12
Если используется 8.3.11, необходимо указать, что такие поля не используются в истории данных.

Добрый день!
Подскажите,пожалуйста, как поставить, что поля не используются в истории данных?

Добрый день!
Проверьте, какой режим совместимости для расширения используется. Нужен как минимум Версия 8.3.12. Если будет ниже, то поле История данных становится недоступным для редактирования.

Спасибо! Буду ждать выхода новой версии платформы!

На пользовательском сайте выложили тестовую 8.3.13, попробуйте еще на ней, на копии базы, конечно.

Аналогичная ошибка. 8.3.13 проблему не решила

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


Добавили (заимствовали) форму Заказа в расширение. Вывели на заимствованную форму добавленные в расширении реквизиты. Все хорошо…

Выходит новый релиз конфигурации поставщика, где у документа добавлен КакойТоНовыйРеквизит, который выведен на форму документа в конфигурации поставщика.

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

И с этим надо что-то делать:)

Дело в том, что платформа использует сразу 3 формы:

  • Форму из основной конфигурации
  • Сохраненную форму
  • Форму из расширения.

12 минут видео, 100% полезности :)


Профессиональная доработка 1С не должна вызывать проблем с обновлениями

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

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

Musthave для внедренцев.

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

Добрый день!
Предполагаю, что дело в правах доступа к добавленному реквизиту. Если у пользователя нет прав на просмотр реквизита, то на форме в пользовательском режиме он не отобразится.

Извиняюсь, пока писал сам разобрался.

Добрый день!
Спасибо.
Хорошая новость, потому что пути к данным действительно слетают, это мешает использовать расширения на практике.

Добавил форму документа в расширение. На форме есть дерево значений, добавляю новую колонку но система почему то не дает изменить ни название ни тип колонки.
Подскажите пожалуйста, что нужно сделать, чтобы система дала изменить название и тип колонки?

Так что попробуйте платформу посвежее использовать.

Пожалуйста!
Интересного обучения!

Ольга, спасибо за ответ. Да, платформа 8.3.15.
Мне этот реквизит совсем не нужен (реализовала задачу по другому), и добавляла я только его одного, поэтому вариант, который я написала (удалила сам реквизит “тфПараметрыНазначения” и добавила его в расширение обратно) мне подошёл. Проверила работу в данной форме, вроде ничего не поломалось.
Конечно, если бы я добавила много реквизитов, а потом захотела бы удалить один, то получается при таком подходе (удалении реквизита и добавлении его обратно) пришлось бы остальные добавленные мной реквизиты обратно добавлять, что не удобно, но всё таки правильней, а вариант с видимостью на мой взгляд не очень корректный, так как вызывает в последующем непонимание зачем был добавлен данный реквизит и наверно затрачивает дополнительный объем памяти.

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

Добрый день!
У меня не воспроизвелось. Возможно, зависит от типа объекта, который Вы пытаетесь добавить в расширение. Или проблема конкретного релиза платформы.

Добрый день!
В тестовую конфигурацию загрузил расширение, в котором в документе добавил реквизит.
При помощи обработки MD82Exp.epf из Конвертации данных выгружаю структуру конфигурации в xml-файл. В полученном файле новый реквизит из расширения присутствует.

А что если ситуация интереснее?! Вы только добавили реквизиты в только что созданную форму расширения и они не показываются. В чем дело если сохраненная форма не причем?

Добрый день!
Возможно, дело в правах доступа.

Добрый день!
В конструкторе формы добавляю Объект в расширение:

После этого на форму можно вынести созданный в расширении реквизит:

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

2. На этой странице нельзя добавлять скриншоты, только на страницах Мастер-группы.

Конфигурация Зарплата и управление персоналом КОРП, редакция 3.1 (3.1.10.50), платформа 8.3.14.1565

Первоначально задача не казалась трудозатратной, пока не выполнили сравнение конфигурации с типовой.

Получили множество мелких доработок, причём актуальность которых не известна.

Так как сопровождать конфигурацию быстрее/удобнее, когда доработки вынесены в расширение, то возникла потребность вплотную изучить этот механизм.

Принцип работы расширений описан здесь:

Причём заметим, что этот механизм постоянно совершенствуется, поэтому нововведения имеет смысл отслеживать самостоятельно (пример последних изменений):

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

Кратко рассмотрим аннотации.

&Перед и &После это то, что будет выполняться «до» процедуры/функции или «после». Это идеальный вариант для переноса доработок в расширение. Необходимо стремиться использовать именно эти аннотации!

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

Для удобства дальнейшего переноса в расширение развернули 2 конфигурации:

1) до обновления (которая с доработками) и сравнивали её с типовой

Сравнение производили следующим образом (в конфигураторе):

Конфигурация-Поддержка-Настройка поддержки и тут нажимаем на кнопку "Сравнить, объединить". Видим список модулей, в которых есть доработки.

2) обновленная до последней версии, в нашем случае 2.4.13.243

Расширение будем добавлять в обновленную конфигурацию.

Итак, мы создаём расширение (Конфигурация - Расширения конфигурации).

Вводим название расширения и в свойствах расширения указываем адаптация, активно.

В базе до обновления находим процедуру/функцию доработки которой нужно перенести. Затем переходим в эту же процедуру/функцию в обновлённой конфигурации, нажимаем правой кнопкой мыши на её название, в выпадающем списке выбираем «Добавить в расширение» («хоткей» Alt+Shift+F2), и вот тут видим список доступных аннотаций. В зависимости от масштабов доработки выбираем подходящий для нас. Ещё раз отметим, что необходимо стремиться использовать аннотации &Перед и &После, возможно придётся немного переписать код и на это потребуется дополнительное время, но сокращение времени на сопровождение того стоит.

Рассмотрим использование аннотаций на примерах.

На рисунке представлен код (сравнение доработанной и типовой):


Рисунок 1 - Сравнение доработанной и типовой конфигураций

В зависимости от места выполнения кода доработки, выносим её либо до выполнения основной процедуры, либо после. Если после выполнения вызываются ещё какие-то процедуры, то их вызов тоже нужно вынести в расширение. Данный пример показан на рисунке 2.


Рисунок 2 - Сравнение доработанной и типовой конфигураций (повторный вызов процедур)

Результат вынесение доработок в расширение с помощью аннотаций &Перед и &После представлен на рисунке 3:


Рисунок 3 - Вынесение доработок

Аннотация &ИзменениеИКонтроль позволяет удалить или добавить код.

Если необходимо, чтобы часть кода типовой не выполнялась, то можно этот участок кода вынести в расширение с помощью аннотации &ИзменениеИКонтроль в блок:

Если вместо этого участка кода нужно выполнить свой, то добавляем

Результат вынесения доработок в расширение с помощью аннотации &ИзменениеИКонтроль представлен на рисунке 4:


Рисунок 4 - Вынесение доработок в расширение с помощью аннотации &ИзменениеИКонтроль

При проверке кода расширения на наличие синтаксических ошибок можно встретить ошибки. Ошибки такого рода говорят о том, что расширение ничего не знает о содержимом объектов, поэтому их тоже необходимо добавлять в расширение. Ошибки и путь решения таких ошибок представлен на рисунке 5.


Рисунок 5 - Ошибки в расширении

После того, как доработки вынесены в расширение имеет смысл проверить, а "взлетит" ли наше расширение.

Для этого идём (режим конфигуратора) в пункт меню Конфигурация - Расширения конфигурации, правой кнопки мыши щёлкаем на наше расширение и выбираем "Проверка возможности применения всех расширений". Внизу, появляется окно со списком, где расширение не работает.

Барабанная дробь и знакомство с новым инструментом. Исходя из статистики работы моих коллег с инструментами, самый популярный это Kdiff3.

Буду очень рада, если поделитесь информацией о том, каким инструментом пользуетесь Вы и почему.

Итак, продолжим рассматривать инструмент Kdiff3.

Он бесплатный, лёгкий и удобный.

Затем его требуется установить на тот компьютер, где работаете с конфигурацией.

И в конфигураторе выбрать этот инструмент следующим образом:

Сервис - Параметры - Сравнение/объединение

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

Например, у нас он выглядит следующим образом: C:\Users\1C_User1\AppData\Local\KDiff3\kdiff3.exe

Остальные настройки оставляем без изменений и нажимаем "ОК". Во вкладке "Сравнение/объединение", Режим "Объединить с помощью внешней программы" выбираем Kdiff3. Нажимаем "Применить".

Выше указанные действия показаны на рисунке 6.


Рисунок 6 - Подключение инструмента Kdiff3

Возвращаемся к проверке возможности применения всех расширений. Информация о проверке возможности применения показана на рисунке 7.


Рисунок 7 - Обнаруженные проблемы подключения расширения

Справа указана ссылка на конфликт, произошедший в коде. Так как мы установили инструмент Kdiff3, то теперь при нажатии на ссылку (колонка "Действие") открывается программа, причём с тремя столбцами (далее - колонками) для сравнения.

Рассмотрим инструмент Kdiff3 в разрезе устранения конфликтов применения расширения в конфигурации.

Пойдем слева направо.

Первая колонка - это заимствованный "модуль" из расширения, восстановленный к первоначальному состоянию. Обозначается буквой А.

Вторая колонка - это "модуль" расширения. Обозначается буквой В.

Третья колонка - "модуль" из конфигурации. Обозначается буквой С.

Рассмотрим, на простом примере, как необходимо действовать в случае возникновения конфликтов в коде.

Код, вынесенный в расширение и присутствующий в основной конфигурации отличается, об этом программа Kdiff3 сообщает в окне снизу в виде следующего текста: <Merge Conflict>, который показан на рисунке 8.


Рисунок 8 - Инструмент Kdiff3

Щелкаем правой кнопкой мыши на строку <Merge Conflict>. Видим выпадающий список. Необходимо выбрать с какого модуля (колонки) требуется использовать код в данной строке. Обратите внимание, что последовательность выбора колонок влияет на порядок добавляемого кода, т.е. какой код будет добавлен в первую очередь. В данном случае это колонка В, а затем С. Мы их выбираем в выпадающем списке. Выше написанные действия показаны на рисунке 9.


Рисунок 9 - Инструмент Kdiff3

В результате мы получаем следующий код, показанный на рисунке 10.


Рисунок 10 - Инструмент Kdiff3

P.S.: задача была в том, чтобы на старом релизе обновить «Печатную форму накладной» в срочном режиме. Поэтому идеальным решением стал механизм расширения. Когда мы приступили к обновлению конфигурации на новый релиз, то инструмент Kdiff3 показывает нам какие есть различия. В данном случае, верным решением является полное удаление данной доработки из расширения. Это связано с тем, что вставка полностью дублирует код в обновлённой конфигурации.

Если больше конфликтов в данном модуле нет, то нажимаем на кнопку "Сохранить" (дискета сверху).

Итак, отрабатываем каждый конфликт применения расширения.

После того, как все конфликты устранены можно использовать данное расширение в работе.

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

Проверяем проводки с помощью отчёта оборотно-сальдовая ведомость. Сравниваем значения в базах до обновления и после обновления. Пример сравнения отчётов показан на рисунке 11.


Рисунок 11 - Сравнение оборотно-сальдовых ведомостей

Если данные отчётов совпадают, то это значит, что проводки не слетели.

После того, как выполнено тестирование конфигурации имеет смысл её заливать в рабочую конфигурацию.

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

Читайте также: