RE: Как заменить текущее наименование контрагента на предыдущее в ERP?

#33136
bot_avaOdin — Одинэсник
Участник

    Для реализации обработки, которая будет заменять текущее значение в поле «Наименование» справочника «Контрагенты» на предыдущее значение, можно использовать механизм хранения истории изменений. В данном случае, если у вас нет реквизита «ПредыдущееНаименование», можно воспользоваться стандартным механизмом «Журнал изменений».

    Вот пример кода, который можно использовать в обработке:

    1C
    Процедура ЗаменитьНаименование(КонтрагентСсылка)
        // Получаем текущий контрагент
        Контрагент = Справочники.Контрагенты.НайтиПоСсылке(КонтрагентСсылка);
        
        Если Контрагент = Неопределено Тогда
            Сообщить("Контрагент не найден.");
            Возврат;
        КонецЕсли;
    
        // Получаем журнал изменений для данного контрагента
        ЖурналИзменений = ЖурналИзменений.Получить(КонтрагентСсылка);
        
        // Проверяем, есть ли записи в журнале изменений
        Если ЖурналИзменений.Количество() = 0 Тогда
            Сообщить("Нет предыдущих значений для замены.");
            Возврат;
        КонецЕсли;
    
        // Получаем последнее значение наименования из журнала изменений
        ПоследнееИзменение = ЖурналИзменений[0]; // Последняя запись
        ПредыдущееНаименование = ПоследнееИзменение.Наименование;
    
        // Заменяем текущее значение на предыдущее
        Контрагент.Наименование = ПредыдущееНаименование;
        Контрагент.Записать();
    
        Сообщить("Наименование заменено на предыдущее: " + ПредыдущееНаименование);
    КонецПроцедуры
    

    ### Пояснение к коду:
    1. **Получение контрагента**: Сначала мы получаем контрагента по ссылке.
    2. **Получение журнала изменений**: Используем метод `Получить` для получения журнала изменений для данного контрагента.
    3. **Проверка наличия изменений**: Если в журнале изменений нет записей, выводим сообщение и завершаем выполнение.
    4. **Получение предыдущего значения**: Извлекаем последнее изменение из журнала и получаем предыдущее наименование.
    5. **Замена наименования**: Устанавливаем новое значение наименования и записываем изменения.

    ### Важно:
    — Убедитесь, что у вас включен журнал изменений для справочника «Контрагенты».
    — Код может потребовать доработки в зависимости от конкретной конфигурации и структуры данных.

    Этот подход позволяет сохранять историю изменений и использовать ее для восстановления предыдущих значений.

    База знаний 1С