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

База знаний Одина — Одинэсника Форумы ODIN — Форум по 1С Предприятию Как заменить текущее наименование контрагента на предыдущее в ERP?

Просмотр 1 ветки ответов
  • Автор
    Сообщения
    • #33135
      Телеграм группа https://t.me/odineskiOdineski
      Участник

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

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

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

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

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

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

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

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

      Просмотр 1 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С