Очень забавная ошибка, т.к. при сохранении конфигурации система о ней не оповещает.
Поэтому, перед тем как применять измененную конфигурацию расширения с использованием аннотации ИзменениеИКонтроль нужно выполнить проверку применения:
Если все хорошо, то система так и ответит, иначе получим ошибку и предложение вернуть все обратно. Вы дальше открываете код и ищите возможную ошибку, но не находите ее? оказывается, чтобы аннотация работала исправно, необходимо вставлять так, чтобы при удалении этого куска метод (процедура, функция) был идентичен оригинальному. К чему я это, а вот к чему — я попался на желании выделить свою вставкой пустой строкой перед и после:
![]() |
Оригинал содержит один символ перевода строки |
![]() |
Как я хотел сделать и получил в итоге ошибку |
![]() |
А вот как правильно вставлять |
ПыСы
В этом примере в процедуре нужны были изменения в середине, поэтому вопросы почему я не использовал ВызыватьПосле прошу не задавать.
UP 11/2022
Случайно увидел ссылки на эту страницу на инфостарте и мисте, поэтому решил еще кое-что добавить
Ввиду наличия расширений часто изменяющихся модулей (НДС и прочие) приходится часто искать различия между оригинальными модулями и измененными, по началу юзал два окна в конфигураторе, но там не все видно, теперь для этого я использую Notepad++ с плагином сравнения
Установка плагина:
После чего создаем два пустых файла, в один кидаем оригинал, во второй измененный, Ctrl+Shift+C и он выведет сравнение с подсветкой. Я обычно развожу сам по областям два файла:
Собственно вот так выглядит:
Поправили в нашем коде, нажали Ctrl+Shift+C и проверяем дальше
Давайте разберем пример использования аннотации &ИзменениеИКонтроль (изменение и контроль). Для начала работы Вам потребуется создать расширение конфигурации. Для этого откройте список расширений и добавьте в него новое расширение. При этом обратите внимание на правильный выбор варианта назначения расширения конфигурации.
Возможность использования аннотации ИзменениеИКонтроль появилась начиная с версии платформы 8.3.15. В отличии от аннотаций &Перед, &После, &Вместо с помощью аннотации &ИзменениеИКонтроль Вы сможете делать точечные вставки в код типовой конфигурации. Основная проблема при изменении кода в больших процедурах и функциях с помощью расширений конфигурации — это постоянный контроль за постоянством этого кода. А в случае, если часть кода изменилась — необходимо сразу обновлять расширение. Использование аннотации &ИзменениеИКонтроль частично упрощает обновление расширений — теперь платформа будет контролировать неизменность кода в вынесенной в расширение процедуры.
Давайте разберем основные вставки, которые Вы можете выполнять в процедурах и функциях с аннотацией &ИзменениеИКонтроль:
- Для удаления кода типовой конфигурации Вы используете вставки #Удаление и#КонецУдаления. Таким образом, весь код, который будет обрамлен этими вставками будет игнорироваться при компиляции модуля.
- Для добавления своего кода Вы используете вставки #Вставка и #КонецВставки.
Теперь давайте рассмотрим, как добавить процедуру в расширение. Для этого на нужной процедуре кликните правой клавишей мыши и вызовите контекстное меню:
В контекстном меню выберите пункт «Добавить в расширение». Далее выберите «Вызывать вместо (с контролем):
В результате в модуль расширения будет добавлен текст процедуры с обрамлением в аннотацию &ИзменениеИКонтроль:
&ИзменениеИКонтроль("ПредупредитьОбОтсутствииСтрокЗаполняемыхПоFEFO") Процедура Доп_ПредупредитьОбОтсутствииСтрокЗаполняемыхПоFEFO() ТекстПредупреждения = НСтр("ru = 'В табличной части нет товаров, по которым серии можно заполнить по FEFO.'"); ПоказатьПредупреждение(Неопределено, ТекстПредупреждения); КонецПроцедуры
Теперь давайте внесем изменения в этот код:
&ИзменениеИКонтроль("ПредупредитьОбОтсутствииСтрокЗаполняемыхПоFEFO") Процедура Доп_ПредупредитьОбОтсутствииСтрокЗаполняемыхПоFEFO() #Удаление ТекстПредупреждения = НСтр("ru = 'В табличной части нет товаров, по которым серии можно заполнить по FEFO.'"); #КонецУдаления #Вставка ТекстПредупреждения = НСтр("ru = 'Мой текст предупреждения.'"); #КонецВставки ПоказатьПредупреждение(Неопределено, ТекстПредупреждения); КонецПроцедуры
Таким образом, мы заменили текст предупреждения на свой. При этом весь остальной код процедуры будет контролироваться платформой при обновлении конфигурации. И еще хотели бы отметить еще один момент. Если Вы получаете ошибку вида:
{Дополнение ОбщийМодуль.НоменклатураКлиент.Модуль(5,3)}: Ожидается оператор препроцессора
#<<?>>Удалить (Проверка: Тонкий клиент)
Это значит Вы используете неверные операторы препроцессора. В своих пресс-релизах 1С объявило об одних наименованиях, а сделали по другому). Ну ничего — мы быстро адаптируемся!
Наши разработки:
Содержание:
1. Почему возникает ошибка при расширении конфигурации
2. Решение проблемы с ошибкой при расширении конфигурации
1. Почему возникает ошибка при расширении конфигурации
Описан готовый механизм решения следующей проблемы:
При добавлении ролей в расширение конфигурации 1С 8.3 нет возможности в режиме предприятия корректно назначить их пользователю с полными правами (Администратору). Т.к. отрабатывает стандартный код общего модуля 1С УправлениеДоступомСлужебный процедуры ОбновитьРолиПользователей, который сбрасывает все роли, переназначая основную (ПолныеПрава) и дополнительную (ИнтерактивноеОткрытиеВнешнихОтчетовИОбработок).
А теперь разберем пример на «простом языке».
Была задача создать новые роли в расширении. Режим совместимости конфигурации ниже 8.3.13 (т.е. нет возможности применения «Основные роли» в том числе). При назначении ролей полноправным пользователям выявлена проблема: роли из расширения конфигурации 1С 8.3 недоступны (по вышеуказанной причине).
2. Решение проблемы с ошибкой при расширении конфигурации
Решение можно реализовать как в текущем, так и в отдельном расширении:
1. Добавить в расширение общий модуль УправлениеДоступомСлужебный:
2. Заменить процедуру ОбновитьРолиПользователей
Копировать код 1С:Предприятия из основной конфигурации. Между строк вставить код:
(!) Тут укажите имя своего расширения, которое содержит ваши роли:
3. Подключите (или обновите) расширение.
4. Назначьте эти роли в режиме 1С:Предприятия (Роли – в Профиле, Профиль – в Группе доступа, Группу доступа – полноправному пользователю).
Специалист компании «Кодерлайн»
Антонова Юлия.
Что делать, если после обновления конфигурации 1С выходит сообщение об ошибке инициализация модуля EF — скорее всего «свежего» патча.
Буквально на днях помогли исправить похожую ошибку в 1С БП, которая не запускалась из-за EF_1954_14.
В октябре т. г. публиковали материал по ошибке в модуле EF_00_00406132 «Процедура или функция с указанным именем не определена». В общем, алгоритм схожий.
Причина
Наиболее вероятно, что при автоматическом обновлении 1С не смогла удалить ранее установленный патч с исправлениями или произошел внутренний сбой. И теперь один из модулей препятствует корректному запуску программы.
Поэтому, проблемный патч необходимо удалить вручную.
Одно важное замечание
Перед выполнением каких-либо действий, пожалуйста, сделайте копию вашей информационной базы. Это будет правильным шагом.
В случае каких-то ошибочных действий, вы сможете вернуться к исходной точке. Это ваша страховка. Поэтому, будьте внимательны. Сделайте бэкап, а только потом приступайте к операциям с расширениями.
Если ошибка не дает выполнить запуск в пользовательском режиме, то используйте другие способы.
- Перейдите в список установленных исправлений через меню «Администрирование — Обслуживание — Обновление программы — Установленные исправления (патчи)».
- В списке выберите патч, который необходимо удалить, и нажмите кнопку «Удалить исправление».
Альтернативный вариант открытия списка — через команду «Функции для технического специалиста».
Путь такой: «Главное меню — Функции для технического специалиста — Стандартные — Управление расширениями конфигурации».
Как включить показ всех функций на панели: Главное меню — Настройки — Параметры — ✔ Режим технического специалиста.
Способ 2. Удаление расширения через Конфигуратор
Этот вариант доступен только в 1С версии ПРОФ. У базовых версий в Конфигураторе нет пункта меню «Расширения конфигурации» — используйте 3-й способ.
- Откройте 1С в режиме Конфигуратора.
- Главное меню — Конфигурация — Расширения конфигурации.
Если пункт недоступен, выполните команду «Конфигурация — Открыть конфигурацию». - В списке установленных расширений выберите удаляемый патч и нажмите кнопку «Удалить» (или через меню «Действия — Удалить»).
Способ 3. Удаление патча с помощью параметра запуска
Описание формата:
/DeleteCfg [-Extension <Имя расширения>] [-AllExtensions]
Где «/DeleteCfg» — указание на действие удаления. Два варианта:
- «/DeleteCfg -Extension <Имя расширения>»— удаление конкретного расширения или патча с указанным именем.
- «/DeleteCfg -AllExtension» — удаление всех расширений и патчей из информационной базы.
Эту команду необходимо добавить в дополнительные параметры запуска информационной базы или командную строку, вызывающую старт 1С.
Например, чтобы удалить расширение EF_1954_14 (у вас будет свой идентификатор патча), необходимо указать:
/DeleteCfg -Extension EF_1954_14
План следующий:
- Добавьте дополнительные параметры запуска ИБ на удаление одного или всех расширений.
- Разово откройте программу 1С в режиме Конфигуратор — после выполнения команды /DeleteCfg с указанной опцией Конфигуратор будет автоматически закрыт.
- Очистите поле дополнительных параметров запуска ИБ в исходное состояние и запустите её в режиме 1С:Предприятие.
Примеры удаления патча через командную строку
Для файловой базы:
"C:Program Files1cv8common1cestart.exe" DESIGNER /F <Путь> /N <Имя> /P <Пароль> /DeleteCfg -Extension <Имя расширения>
Для клиент-серверного варианта:
"C:Program Files1cv8common1cestart.exe" DESIGNER /S <Адрес> /N <Имя> /P <Пароль> /DeleteCfg -Extension <Имя расширения>
Где:
/F <Путь> — путь к файловой информационной базе;
/S <Адрес> — адрес базы на сервере 1С;
/N <Имя> — имя пользователя из общего списка, необходимы полные административные права для этого пользователя;
/P <Пароль> — пароль пользователя, имя которого указано в /N (если пароля нет, то параметр не указывается);
/DeleteCfg -Extension <Имя расширения> — имя расширения, которое необходимо удалить. Либо /DeleteCfg -AllExtensions для удаления всех расширений и патчей.
Один из этих способов должен помочь. Также рекомендуем на время отключить автоматическую установку патчей, чтобы ситуация не повторилась. Успехов вам.
Если не получается или требуется дополнительная поддержка, наши программисты 1С готовы помочь. +7-911-500-10-11
Добрый вечер, дорогие друзья.
Появились проблемы с расширением после обновления платформы с 8.3.13.1334 на 8.3.18.1741
Расширение и конфигурация не изменялись, просто была установлена новая платформа.
Вдруг некоторые процедуры изменённые методом — «ИзменениеИКонтроль» перестали работать, а многие другие продолжили работать, как ни в чём не бывало.
Например не получается внести изменения в код процедуры — «ПриНачалеВыбораНоменклатуры» модуля «СобытияФормИСКлиентПереопределяемый» в УТ 11.4
Пробовал вот такое например:
#Вставка
#КонецВставки
Всё норм, ошибки нет
Делаешь вот так
#Вставка
//
#КонецВставки
И всё, ошибка изменения текста процедуры..
Кто-нибудь в курсе в чём может быть дело?
Или может быть кто-нибудь попробует внести изменения в эту процедуру, чтобы мне понять это она такая заколдованная, или может ещё с чем проблемы.
Кэш был почищен.
Очень забавная ошибка, т.к. при сохранении конфигурации система о ней не оповещает.
Поэтому, перед тем как применять измененную конфигурацию расширения с использованием аннотации ИзменениеИКонтроль нужно выполнить проверку применения:
Если все хорошо, то система так и ответит, иначе получим ошибку и предложение вернуть все обратно. Вы дальше открываете код и ищите возможную ошибку, но не находите ее? оказывается, чтобы аннотация работала исправно, необходимо вставлять так, чтобы при удалении этого куска метод (процедура, функция) был идентичен оригинальному. К чему я это, а вот к чему — я попался на желании выделить свою вставкой пустой строкой перед и после:
![]() |
Оригинал содержит один символ перевода строки |
![]() |
Как я хотел сделать и получил в итоге ошибку |
![]() |
А вот как правильно вставлять |
ПыСы
В этом примере в процедуре нужны были изменения в середине, поэтому вопросы почему я не использовал ВызыватьПосле прошу не задавать.
UP 11/2022
Случайно увидел ссылки на эту страницу на инфостарте и мисте, поэтому решил еще кое-что добавить
Ввиду наличия расширений часто изменяющихся модулей (НДС и прочие) приходится часто искать различия между оригинальными модулями и измененными, по началу юзал два окна в конфигураторе, но там не все видно, теперь для этого я использую Notepad++ с плагином сравнения
Установка плагина:
После чего создаем два пустых файла, в один кидаем оригинал, во второй измененный, Ctrl+Shift+C и он выведет сравнение с подсветкой. Я обычно развожу сам по областям два файла:
Собственно вот так выглядит:
Поправили в нашем коде, нажали Ctrl+Shift+C и проверяем дальше
Здравствуйте, Светлана,
ошибка показывается в общем модуле Загрузка выписки по банковскому счету в функциях хозяйственных операций Получения займа от контрагента и Уплаты процентов по займу контрагента.
Поскольку в коде общего модуля ссылок на эти функции нет — я проверила (привожу скрины), то при обработке загрузки выписок программа, попадая в этот модуль, видит несоответствие по операциям и сообщает об этом.
Данные по ошибке приходят из патча EF_60002641. У вас подключена автоматическая загрузка исправления ошибок 1С, поэтому в Конфигурации в списке расширений всегда присутствуют те, или иные исправления от разработчиков.
Указанного патча не нашла ни в БП 3.0, ни в БП КОРП 3.0, максимальное там сейчас EF_60002611, а у вас EF_60002641, но не суть. Вам нужно открыть конфигуратор. В разделе Конфигурация — Расширения найти указанный патч и по кнопке Удалить — удалить его из списка.
Что делать, если после обновления конфигурации 1С выходит сообщение об ошибке инициализация модуля EF — скорее всего «свежего» патча.
Буквально на днях помогли исправить похожую ошибку в 1С БП, которая не запускалась из-за EF_1954_14.
В октябре т. г. публиковали материал по ошибке в модуле EF_00_00406132 «Процедура или функция с указанным именем не определена». В общем, алгоритм схожий.
Причина
Наиболее вероятно, что при автоматическом обновлении 1С не смогла удалить ранее установленный патч с исправлениями или произошел внутренний сбой. И теперь один из модулей препятствует корректному запуску программы.
Поэтому, проблемный патч необходимо удалить вручную.
Одно важное замечание
Перед выполнением каких-либо действий, пожалуйста, сделайте копию вашей информационной базы. Это будет правильным шагом.
В случае каких-то ошибочных действий, вы сможете вернуться к исходной точке. Это ваша страховка. Поэтому, будьте внимательны. Сделайте бэкап, а только потом приступайте к операциям с расширениями.
Если ошибка не дает выполнить запуск в пользовательском режиме, то используйте другие способы.
- Перейдите в список установленных исправлений через меню «Администрирование — Обслуживание — Обновление программы — Установленные исправления (патчи)».
- В списке выберите патч, который необходимо удалить, и нажмите кнопку «Удалить исправление».
Альтернативный вариант открытия списка — через команду «Функции для технического специалиста».
Путь такой: «Главное меню — Функции для технического специалиста — Стандартные — Управление расширениями конфигурации».
Как включить показ всех функций на панели: Главное меню — Настройки — Параметры — ✔ Режим технического специалиста.
Способ 2. Удаление расширения через Конфигуратор
Этот вариант доступен только в 1С версии ПРОФ. У базовых версий в Конфигураторе нет пункта меню «Расширения конфигурации» — используйте 3-й способ.
- Откройте 1С в режиме Конфигуратора.
- Главное меню — Конфигурация — Расширения конфигурации.
Если пункт недоступен, выполните команду «Конфигурация — Открыть конфигурацию». - В списке установленных расширений выберите удаляемый патч и нажмите кнопку «Удалить» (или через меню «Действия — Удалить»).
Способ 3. Удаление патча с помощью параметра запуска
Описание формата:
/DeleteCfg [-Extension <Имя расширения>] [-AllExtensions]
Где «/DeleteCfg» — указание на действие удаления. Два варианта:
- «/DeleteCfg -Extension <Имя расширения>»— удаление конкретного расширения или патча с указанным именем.
- «/DeleteCfg -AllExtension» — удаление всех расширений и патчей из информационной базы.
Эту команду необходимо добавить в дополнительные параметры запуска информационной базы или командную строку, вызывающую старт 1С.
Например, чтобы удалить расширение EF_1954_14 (у вас будет свой идентификатор патча), необходимо указать:
/DeleteCfg -Extension EF_1954_14

План следующий:
- Добавьте дополнительные параметры запуска ИБ на удаление одного или всех расширений.
- Разово откройте программу 1С в режиме Конфигуратор — после выполнения команды /DeleteCfg с указанной опцией Конфигуратор будет автоматически закрыт.
- Очистите поле дополнительных параметров запуска ИБ в исходное состояние и запустите её в режиме 1С:Предприятие.
Примеры удаления патча через командную строку
Для файловой базы:
"C:Program Files1cv8common1cestart.exe" DESIGNER /F <Путь> /N <Имя> /P <Пароль> /DeleteCfg -Extension <Имя расширения>
Для клиент-серверного варианта:
"C:Program Files1cv8common1cestart.exe" DESIGNER /S <Адрес> /N <Имя> /P <Пароль> /DeleteCfg -Extension <Имя расширения>
Где:
/F <Путь> — путь к файловой информационной базе;
/S <Адрес> — адрес базы на сервере 1С;
/N <Имя> — имя пользователя из общего списка, необходимы полные административные права для этого пользователя;
/P <Пароль> — пароль пользователя, имя которого указано в /N (если пароля нет, то параметр не указывается);
/DeleteCfg -Extension <Имя расширения> — имя расширения, которое необходимо удалить. Либо /DeleteCfg -AllExtensions для удаления всех расширений и патчей.
Один из этих способов должен помочь. Также рекомендуем на время отключить автоматическую установку патчей, чтобы ситуация не повторилась. Успехов вам.
Если не получается или требуется дополнительная поддержка, наши программисты 1С готовы помочь. +7-911-500-10-11