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

Как заменить номера...
 

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


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

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



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

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

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

// Процедура для вызова замены номеров
Процедура КнопкаВыполнитьНажатие(Кнопка)
    ЗаменитьНомераПоступлений();
КонецПроцедуры

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

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

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



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