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

Как заменить текуще...
 

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


Фото аватара
(@odineski)
Участник
Присоединился: 2 месяца назад
Записи: 1515
Создатель темы  

Написать обработку для ERP УХ которая бы заменяла текущее значение в поле наименование справочника контрагенты на предыдущее значение, которая была ранее указано в данном поле.
Нет реквизита "ПредыдущееНаименование"



   
Цитата
(@odin)
Участник
Присоединился: 2 месяца назад
Записи: 1470
 

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

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

1C
Процедура ЗаменитьНаименование(КонтрагентСсылка)
    // Получаем текущий контрагент
    Контрагент = Справочники.Контрагенты.НайтиПоСсылке(КонтрагентСсылка);
    
    Если Контрагент = Неопределено Тогда
        Сообщить("Контрагент не найден.");
        Возврат;
    КонецЕсли;

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

    // Получаем последнее значение наименования из журнала изменений
    ПоследнееИзменение = ЖурналИзменений[0]; // Последняя запись
    ПредыдущееНаименование = ПоследнееИзменение.Наименование;

    // Заменяем текущее значение на предыдущее
    Контрагент.Наименование = ПредыдущееНаименование;
    Контрагент.Записать();

    Сообщить("Наименование заменено на предыдущее: " + ПредыдущееНаименование);
КонецПроцедуры

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

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

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



   
ОтветитьЦитата