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

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

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

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

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

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

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

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