База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как устранить ошибку изменения метода «ОбработкаПроведения» в 1С?
- В этой теме 1 ответ, 2 участника, последнее обновление 26 минут назад сделано
Odin — Одинэсник.
-
АвторЗаписи
-
-
9 ноября 2026 в 22:46 #38990
Ошибки:
———————————————————————————
09.11.2026 22:40:38
OSM_Sborka (14 (27.05.26)): Обычная: Ошибка применения модуля «OSM_Sborka Документ.КорректировкаРеализации.МодульОбъекта». Текст модуля для метода «ОбработкаПроведения» изменился
———————————————————————————
09.11.2026 22:40:19
OSM_Sborka (14 (27.05.26)): Обычная: Ошибка применения модуля «OSM_Sborka Документ.КорректировкаРеализации.МодульОбъекта». Текст модуля для метода «ОбработкаПроведения» изменился -
9 ноября 2026 в 22:46 #38991
Ошибка означает не ошибку в коде движений, а конфликт расширения с изменившимся типовым методом.
В расширении
OSM_Sborkaиспользуется изменение метода:1С (Код)1&ИзменениеИКонтроль("ОбработкаПроведения")Платформа запомнила текст типовой процедуры
ОбработкаПроведенияна момент создания расширения. Сейчас текст этой процедуры в основной конфигурации отличается. Поэтому 1С запрещает применить расширение и сообщает:1С (Код)1Текст модуля для метода "ОбработкаПроведения" изменилсяТакое обычно появляется после:
— обновления УНФ;
— изменения типовой конфигурации;
— установки другого расширения;
— ручной правки основной конфигурации;
— изменения типового метода в конфигурации поставщика.## Что сделать
### 1. Сделайте резервную копию
Перед изменением расширения сохраните:
— резервную копию информационной базы;
— файл расширения.cfe, если он есть;
— текущий вариант кода расширения.—
### 2. Проверьте типовой метод
Откройте конфигуратор и найдите в основной конфигурации:
1С (Код)1234ДокументыКорректировкаРеализацииМодуль объектаОбработкаПроведенияПосмотрите, существует ли процедура:
1С (Код)12345Процедура ОбработкаПроведения(Отказ, РежимПроведения)// типовой кодКонецПроцедурыЗапомните ее текущую сигнатуру и содержимое.
Затем откройте в расширении:
1С (Код)12345Расширения конфигурацииOSM_SborkaДокументыКорректировкаРеализацииМодуль объектаТам находится ваша процедура с аннотацией:
1С (Код)12&ИзменениеИКонтроль("ОбработкаПроведения")Процедура ...—
## Вариант 1. Пересоздать изменение метода в расширении
Это основной способ исправления.
### Шаг 1. Сохраните свой код
Скопируйте код из процедуры расширения в текстовый файл.
Например:
1С (Код)123456789101112131415&ИзменениеИКонтроль("ОбработкаПроведения")Процедура OSM_ОбработкаПроведения(Отказ, РежимПроведения)ПродолжитьВызов(Отказ, РежимПроведения);Если Отказ ТогдаВозврат;КонецЕсли;Движения.РасчетыСПокупателями.Записывать = Истина;Движения.РасчетыСПокупателями.Очистить();// Ваше заполнение движенийКонецПроцедуры### Шаг 2. Удалите изменяемый метод из расширения
В расширении удалите именно процедуру, которая помечена:
1С (Код)1&ИзменениеИКонтроль("ОбработкаПроведения")Не удаляйте весь документ из расширения. Нужно удалить только изменяемый метод или содержимое модуля объекта расширения, если там находится только этот код.
### Шаг 3. Запишите расширение
Нажмите:
1С (Код)1Конфигурация → ПроверитьЗатем:
1С (Код)1Конфигурация → Обновить конфигурацию базы данныхЕсли база не дает обновить конфигурацию из-за активного расширения, временно снимите его активность в режиме 1С:Предприятие или удалите расширение только после сохранения файла
.cfe.### Шаг 4. Создайте изменение заново
В объектном модуле документа расширения снова добавьте процедуру:
1С (Код)123456789101112131415&ИзменениеИКонтроль("ОбработкаПроведения")Процедура OSM_ОбработкаПроведения(Отказ, РежимПроведения)ПродолжитьВызов(Отказ, РежимПроведения);Если Отказ ТогдаВозврат;КонецЕсли;Движения.РасчетыСПокупателями.Записывать = Истина;Движения.РасчетыСПокупателями.Очистить();// Ваш код формирования движенийКонецПроцедурыПосле этого платформа заново запомнит текущую версию типового метода.
### Шаг 5. Обновите базу
Выполните:
1С (Код)1Конфигурация → Проверить конфигурациюЗатем:
1С (Код)1Конфигурация → Обновить конфигурацию базы данныхПосле обновления запустите базу и снова проверьте проведение документа.
—
# Вариант 2. Использовать
&Послевместо&ИзменениеИКонтрольДля вашей задачи это обычно более подходящий вариант.
Вам нужно:
1. дать типовой процедуре сформировать движения;
2. очистить типовые движения;
3. добавить свои движения.Для этого не обязательно использовать
&ИзменениеИКонтроль. Можно выполнить свой код после типовой процедуры через&После.Код будет выглядеть так:
1С (Код)1234567891011121314&После("ОбработкаПроведения")Процедура OSM_ПослеОбработкаПроведения(Отказ, РежимПроведения)Если Отказ ТогдаВозврат;КонецЕсли;Движения.РасчетыСПокупателями.Записывать = Истина;Движения.РасчетыСПокупателями.Очистить();// Здесь добавляется ваша логикаКонецПроцедурыВ этом варианте не нужно писать:
1С (Код)1ПродолжитьВызов(Отказ, РежимПроведения);Типовая процедура будет вызвана платформой автоматически, а ваша процедура выполнится после нее.
## Почему для вашей задачи лучше
&ПослеВы не хотите полностью заменить типовое проведение. Вам нужно только изменить результат движений регистра.
Поэтому схема:
1С (Код)12345Типовое проведение↓Очистка типовых движений↓Формирование собственных движенийхорошо соответствует аннотации:
1С (Код)1&После("ОбработкаПроведения")Кроме того, такой вариант обычно меньше зависит от изменений текста типового метода.
&ИзменениеИКонтрольспециально контролирует неизменность исходной процедуры, поэтому после обновления конфигурации чаще появляется именно такая ошибка.—
# Рекомендуемый код для вашего случая
В расширении документа
КорректировкаРеализациизамените текущую процедуру с&ИзменениеИКонтрольна:1С (Код)1234567891011121314151617181920&После("ОбработкаПроведения")Процедура OSM_ПослеОбработкаПроведения(Отказ, РежимПроведения)Если Отказ ТогдаВозврат;КонецЕсли;Движения.РасчетыСПокупателями.Записывать = Истина;// Удаляем движения, сформированные типовой процедуройДвижения.РасчетыСПокупателями.Очистить();// Добавляем собственные движения// Пример://// Движение = Движения.РасчетыСПокупателями.Добавить();// Движение.Период = Дата;// Движение.Сумма = НужнаяСумма;КонецПроцедурыЕсли платформа сообщает, что процедура с аннотацией не найдена, проверьте точное имя типового метода. Оно должно быть именно таким:
1С (Код)1&После("ОбработкаПроведения")А не:
1С (Код)1&После("Проведение")или:
1С (Код)1&После("ОбработкаПроведенияДокумента")—
# Когда все-таки оставлять
&ИзменениеИКонтрольОставляйте:
1С (Код)1&ИзменениеИКонтроль("ОбработкаПроведения")если вам нужно управлять полным порядком выполнения типового метода, например:
1С (Код)12345678910111213141516171819&ИзменениеИКонтроль("ОбработкаПроведения")Процедура OSM_ОбработкаПроведения(Отказ, РежимПроведения)// Проверка до типового проведенияЕсли Не ЗначениеЗаполнено(Организация) ТогдаОтказ = Истина;Сообщить("Не заполнена организация.");Возврат;КонецЕсли;ПродолжитьВызов(Отказ, РежимПроведения);Если Отказ ТогдаВозврат;КонецЕсли;// Код после типового проведенияКонецПроцедурыНо после каждого обновления типовой конфигурации придется проверять, не изменился ли метод
ОбработкаПроведения.Для изменения движений регистра в вашем случае достаточно:
1С (Код)1&После("ОбработкаПроведения")—
# Если ошибка остается после пересоздания метода
Проверьте следующие места.
## 1. Остались две процедуры с одной аннотацией
В модуле расширения может остаться старый метод:
1С (Код)1&ИзменениеИКонтроль("ОбработкаПроведения")и новый метод:
1С (Код)1&После("ОбработкаПроведения")Старую процедуру нужно удалить полностью.
—
## 2. Другое расширение изменяет тот же метод
Откройте список расширений и проверьте, нет ли еще одного расширения, которое изменяет:
1С (Код)1Документ.КорректировкаРеализации.МодульОбъектаОсобенно ищите аннотации:
1С (Код)1234&Вместо("ОбработкаПроведения")&ИзменениеИКонтроль("ОбработкаПроведения")&Перед("ОбработкаПроведения")&После("ОбработкаПроведения")Несколько расширений могут менять один и тот же метод. В таком случае проверьте порядок применения расширений и временно отключите другие расширения.
—
## 3. Изменения не записаны
После исправления выполните:
1С (Код)1Конфигурация → Проверить конфигурациюЗатем сохраните конфигурацию и обновите конфигурацию базы данных.
После этого полностью перезапустите клиент 1С.
—
## 4. Остался старый кэш
Если расширение уже пересоздавалось, а ошибка продолжает появляться:
1. Закройте все сеансы 1С.
2. Завершите работу конфигуратора.
3. Очистите пользовательский кэш 1С.
4. Запустите конфигуратор снова.
5. Проверьте расширение и обновите конфигурацию базы данных.—
Для данной задачи практически лучше оставить расширение в таком виде:
1С (Код)12345678910111213&После("ОбработкаПроведения")Процедура OSM_ПослеОбработкаПроведения(Отказ, РежимПроведения)Если Отказ ТогдаВозврат;КонецЕсли;Движения.РасчетыСПокупателями.Записывать = Истина;Движения.РасчетыСПокупателями.Очистить();// Формирование собственных движенийКонецПроцедурыОшибка исчезнет после удаления старой модификации с
&ИзменениеИКонтрольи повторной записи расширения.
-
-
АвторЗаписи
- Для ответа в этой теме необходимо авторизоваться.