Замена одного элемента справочника, счета или перечисления другим

Обработка позволяющая заменить одно значение справочника, счета или перечисления на другое везде, где оно присутствует (реквизиты справочников, общие реквизиты, реквизиты шапки и реквизиты табличных частей документов, сменить владельца у подчиненных элементов справочников, ссылки в других справочниках,константах, и в проводках где может присутствовать в виде субконто).
+ Может изменять движения документа ( периодических реквизитов установленных в документах через УстановитьРеквизитСправочника(), а также регистров Оперативного учета )
После замены можно например удалить дубликаты справочников (для этого собственно данная обработка и писалась).
Обработка предназначена для компонент Бухгалтерский учет и Оперативный учет 7.7

Используется внешняя компонента FormEx.dll  (у меня 2.0.5.97, можно более ранние — нужна реализация этой компоненты    ВыполнитьФункцию()  )

Только для того чтобы изменять движения документа, нужно в этих документах ввести некоторые изменения :

1. Определить глобальную переменную в глоб.модуле (можно определить ее в модуле проведения документа)
  

  Перем глСервисFormEx Экспорт;
       .........
    ЗагрузитьВнешнююКомпоненту("FormEx.dll");
    глСервисFormEx=СоздатьОбъект("Сервис");

2. Изменить процедуру ОбработкаПроведения() в модуле документа на:

Процедура ОбработкаПроведения(_Параметр)
    Если ТипЗначенияСтр(_Параметр)="СписокЗначений" Тогда
        Если Число(_Параметр.Получить("ИзменениеДвиженийДокумента"))=1 Тогда
            _КонтекстОбработки=_Параметр.Получить("КонтекстОбработкиИзменения");
            _Функция=_Параметр.Получить("Функция");
            _Параметр.Установить("КонтекстДокумента",Контекст);
            _СЗ=СоздатьОбъект("СписокЗначений");
            _СЗ.ДобавитьЗначение(_Параметр);
            _Результат=0;
            глСервисFormEx.ВыполнитьФункцию(_КонтекстОбработки,_Функция,_СЗ,_Результат);
            Возврат;
        КонецЕсли;
    КонецЕсли;

   <далее ваше проведение>

    ...
 КонецПроцедуры

 вот собственно и все.

6 Comments

  1. djam_arttek

    А uchoice.ert из ИТС разве не тоже самое делает?

    Reply
  2. ingah3

    (1) … делает и даже без ВК 🙂

    Reply
  3. VladimirB

    не согласен с комментами 1 и 2. Uchoice.ert например не меняет периодический Реквизит созданный движением документа, а добавляет свой если датаПер не равна дате установке периодических реквизитов и вовсе ничего не делает если эти даты равны. После моей же обработки можно безболезненно удалить дубликаты справочников.

    Кроме того можно менять движения регистров «БЕЗ ПРОВЕДЕНИЯ ДОКУМЕНТА» (на самом деле при проведении используется ТЗ)

    это и достигается модифицированной обработкой проведения и с помощью ВК.

    Насколько я знаю средства языка не позволяют изменять движения регистра вне контекста документа

    или я ошибаюсь?

    Странно конечно, что разработчики в свое время этого не сделали так же как с операцией документа (ее можно менять без контекста документа)

    Reply
  4. misha226

    спасибо VladimirB попробую! хотел сам написать для торговли… манагеры понаплодили двойной номенклатуры!!! Жалко во все доки надо прописывать, но понятно что иначе никак. 😀

    Reply
  5. karaw

    А в Зарплате похоже не работает :(((

    Reply
  6. cbr900

    Супер! Замена плана счетов — то, что надо!

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *