Важной основой для этого материала была статья //infostart.ru/1c/articles/1343740, чтобы не повторяться, рекомендую прочитать сначала статью по ссылке.
Но в версии ERP 2.5.8.245 все выглядит немного по-другому, поэтому, пока разбирался, параллельно возникла необходимость в документировании для самого себя.
Проведение документа состоит из методов модуля объекта: ПередЗаписью, ОбработкаПроведения, ПослеЗаписи.
Практически во всех методах рано или поздно можно найти методы вида ...Локализация.<имяМетода>, которые можно перекрывать или дополнять в расширениях.
Итак, на входе для примера имеем документ РеализацияТоваровУслуг с дополнительной ТЧ Тара (Номенклатура, Характеристика, Количество, Сумма) и новый РН.ТараУКлиента, изменения метаданных внесены в конфигурацию.
Материал с конкретным кодом быстро устаревает, поэтому не вижу смысла копипастить весь код, перечислю только точки внесения изменений.
Потребуются следующие изменения:
1. Забираем РН.Тара в расширение. Вносим изменения:
1.1. РН.Модуль объекта
Процедура ПередЗаписью(Отказ, Замещение)
Процедура ПриЗаписи(Отказ, Замещение)
1.2. РН.Менеджер
Функция ТекстЗапросаКонтрольДатыЗапрета(Запрос) Экспорт
2. При проведении используются общие модули РеализацияТоваровУслугЛокализация и ПроведениеДокументовЛокализация, забираем их в расширение
2.1. В общем модуле РеализацияТоваровУслугЛокализация
//перехватываем пару процедур модуля
&После("ЗарегистрироватьУчетныеМеханизмы")
Процедура стЗарегистрироватьУчетныеМеханизмы(МеханизмыДокумента) Экспорт
&После("ДополнитьТекстыЗапросовПроведения")
Процедура стДополнитьТекстыЗапросовПроведения(Запрос, ТекстыЗапроса, Регистры) Экспорт
//добавляем свой текст запроса, процедура вызывается из стДополнитьТекстыЗапроосовПроведениия
Функция стТекстЗапросаУчетТарыУКлиентов(Запрос, ТекстыЗапроса, Регистры)
2.2. В общем модуле ПроведениеДокументовЛокализация добавляем свой учетный механизм
&После("ДополнитьУчетныеМеханизмыКонфигурации")
Процедура стДополнитьУчетныеМеханизмыКонфигурации(МеханизмыКонфигурации) Экспорт
3. Добавляем общий модуль учетного механизма (название модуля = названию учетного механизма)
Функция ПараметрыДляПроведенияДокумента(Документ, Свойства) Экспорт
Процедура ОтразитьДвижения(ТаблицыДляДвижений, Движения, Отказ) Экспорт
Процедура ИнициализироватьДанныеКонтроляИзменений(Запрос, ТекстыЗапроса, Документ) Экспорт
Процедура СообщитьОРезультатахКонтроляИзменений(РезультатыКонтроля, Документ, Отказ) Экспорт
Функция ТекстыЗапросовКонтрольДатыЗапретаПоТаблицеИзменений(Запрос) Экспорт
Вроде бы все.
[upd]
Кроме того не очень хочется удерживать в голове эту сложную последовательность вызовов, задуманную создателями этого фреймворка. Поэтому один раз проставил точки остановки во всех местах доработки и вот что получилось. Несколько раз пригодилась, как памятка, когда приходилось отлаживать процесс проведения.
Документ.РеализацияТоваровУслуг.МодульОбъекта.ПередЗаписью
Документ.РеализацияТоваровУслуг.МодульОбъекта.ПриЗаписи
Документ.РеализацияТоваровУслуг.МодульОбъекта.ОбработкаПроведения
ОбщийМодуль.РеализацияТоваровУслугЛокализация.ЗарегистрироватьУчетныеМеханизмы
ОбщийМодуль.ПроведениеДокументовЛокализация.ДополнитьУчетныеМеханизмыКонфигурации
ОбщийМодуль.УчетТарыУКлиентов.ПараметрыДляПроведенияДокумента*
ОбщийМодуль.РеализацияТоваровУслугЛокализация.ДополнитьТекстыЗапросовПроведения
ОбщийМодуль.УчетТарыУКлиентов.ОтразитьДвижения
РегистрНакопления.ТараУКлиентов.МодульНабораЗаписей.ПередЗаписью**
РегистрНакопления.ТараУКлиентов.МодульНабораЗаписей.ПриЗаписи
ОбщийМодуль.УчетТарыУКлиентов.ТекстыЗапросовКонтрольДатыЗапретаПоТаблицеИзменений
РегистрНакопления.ТараУКлиентов.МодульМенеджера.ТекстЗапросаКонтрольДатыЗапрета
ОбщийМодуль.УчетТарыУКлиентов.ИнициализироватьДанныеКонтроляИзменений
ОбщийМодуль.УчетТарыУКлиентов.СообщитьОРезультатахКонтроляИзменений
ОбщийМодуль.ПроведениеДокументовЛокализация.ДополнитьУчетныеМеханизмыКонфигурации***
*ОбщийМодуль.УчетТарыУКлиентов - добавленный модуль учетного механизма
**РегистрНакопления.ТараУКлиентов - добавленный регистр накопления
*** так и не понял, зачем еще раз вызов этой процедуры был