Как заменить номера поступлений в 1С по заданному шаблону?

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

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

        Внешняя обработка; для специальной конфигурации 1С:Предприятие под Бюро переводов; обработка должна заменить номера поступлений денежных средств с текущих на новые по шаблону: [первые две буквы наименования организации]-[номер поступления в очередности по дате создания]; написать код внешней обработки

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

          Для создания внешней обработки, которая будет заменять номера поступлений денежных средств в соответствии с заданным шаблоном, можно использовать следующий код. Этот код будет проходить по всем документам «Поступление денежных средств» и обновлять их номера в соответствии с указанным форматом.

          1C
          // Обработка для замены номеров поступлений денежных средств
          Процедура ЗаменитьНомераПоступлений()
              // Получаем выборку документов "Поступление денежных средств"
              Выборка = Документы.ПоступлениеДенежныхСредств.Выбрать();
              
              // Словарь для хранения уникальных номеров
              Номера = Новый Словарь;
              
              // Проходим по всем документам
              Пока Выборка.Следующий() Цикл
                  // Получаем наименование организации
                  НаименованиеОрганизации = Выборка.Организация.Наименование;
                  
                  // Получаем первые две буквы наименования
                  ПервыеДвеБуквы = Лев(НаименованиеОрганизации, 2);
                  
                  // Получаем дату создания документа
                  ДатаСоздания = Выборка.Дата;
                  
                  // Формируем уникальный ключ для даты
                  Ключ = Формат(ДатаСоздания, "YYYY-MM-DD");
                  
                  // Увеличиваем счетчик для данной даты
                  Если Номера.Содержит(Ключ) Тогда
                      Номера[Ключ] = Номера[Ключ] + 1;
                  Иначе
                      Номера.Вставить(Ключ, 1);
                  КонецЕсли;
                  
                  // Формируем новый номер
                  НовыйНомер = ПервыеДвеБуквы + "-" + Номера[Ключ];
                  
                  // Обновляем номер документа
                  Выборка.Номер = НовыйНомер;
                  
                  // Записываем изменения
                  Выборка.Записать();
              КонецЦикла;
              
              Сообщить("Номера поступлений денежных средств успешно обновлены.");
          КонецПроцедуры
          
          // Процедура для вызова замены номеров
          Процедура КнопкаВыполнитьНажатие(Кнопка)
              ЗаменитьНомераПоступлений();
          КонецПроцедуры
          

          ### Описание кода:
          1. **Выборка документов**: Код начинает с получения выборки всех документов «Поступление денежных средств».
          2. **Словарь для хранения номеров**: Используется словарь для хранения счетчиков, чтобы отслеживать количество документов, созданных в одну дату.
          3. **Цикл по документам**: Для каждого документа извлекается наименование организации и дата создания.
          4. **Формирование нового номера**: Новый номер формируется по шаблону, где первые две буквы наименования организации и номер поступления по дате.
          5. **Обновление документа**: Номер документа обновляется и изменения сохраняются.
          6. **Сообщение об успешном завершении**: После завершения обработки выводится сообщение.

          ### Как использовать:
          1. Создайте новую внешнюю обработку в конфигураторе 1С.
          2. Вставьте приведенный код в модуль обработки.
          3. Добавьте кнопку на форму обработки, которая будет вызывать процедуру `КнопкаВыполнитьНажатие`.

          Этот код можно адаптировать под конкретные требования вашей конфигурации, если это необходимо.

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