Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Сбилась нумерация платежных поручений
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.2 > Программирование обычных форм 1С 8.2 и не интерфейсной логики
Zakker
"Управление производственным предприятием для Украины", редакция 1.1
1с 8.2

При создании нового документа "Платежное поручение исходящее" номер ПП завис на 1000 отметке и формирует все последующие документы 1000 номером. В ручную номер меняется но автоматом все равно не растет больше 1000. Пробовал ставить начальный номер 1001, тогда все они нумеруются 1001. Перепробовал кучу внешних обработок, не помогло. Что за ерунда, товарищи??
Сама процедура:

Процедура УстановитьНомерПорученияИсх()
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("ДатаНачалаГода", НачалоГода(Дата));
    Запрос.УстановитьПараметр("ДатаКонцаГода", КонецГода(Дата));    

    Запрос.Текст =
    
    "ВЫБРАТЬ
    |    ПлатежноеПоручение.НомерПоручения КАК НомерПоручения
    |ИЗ
    |    Документ.ПлатежноеПоручениеИсходящее КАК ПлатежноеПоручение
    |ГДЕ
    |    ПлатежноеПоручение.Дата >= &ДатаНачалаГода
    |    И ПлатежноеПоручение.Дата <= &ДатаКонцаГода";
    СписокПлатежек = Запрос.Выполнить().Выбрать();
    
    ТаблицаЗначений = Новый ТаблицаЗначений;
    
    ТаблицаЗначений.Колонки.Добавить("Номер");
    ТаблицаЗначений.Колонки.Добавить("Длина");

    Пока СписокПлатежек.Следующий() Цикл
        НоваяСтрока = ТаблицаЗначений.Добавить();
        // турков 04.08.2006 13:27:01 у нас в номере может быть точка
        НомерДляДобавления = СтрЗаменить(СписокПлатежек.НомерПоручения, ".", "");
        Если НЕ Найти(СписокПлатежек.НомерПоручения, "/") = 0 Тогда
            НомерДляДобавления = Сред(СписокПлатежек.НомерПоручения, 1, Найти(СписокПлатежек.НомерПоручения, "/") - 1);
        КонецЕсли;
        НоваяСтрока.Номер = НомерДляДобавления;
        НоваяСтрока.Длина = СтрДлина(НомерДляДобавления);
        // турков 04.08.2006 13:27:15 ...
    КонецЦикла;
    
    ТаблицаЗначений.Сортировать("Длина Возр, Номер Возр");    
    
    КоличествоНомеров = ТаблицаЗначений.Количество();
    НайденнаяСтрока = Ложь;
    тНОМЕР = "1";
        Для Сч = 90 По КоличествоНомеров Цикл
        тНомерПоручения = Формат(Сч,"ЧГ=0");
        Присутствует = Ложь;
        Если НайденнаяСтрока = Ложь Тогда
               Для Каждого Стр Из  ТаблицаЗначений Цикл
            Если СокрЛП(Строка(тНомерПоручения)) = СокрЛП(Стр.Номер) Тогда
                 Присутствует = Истина;
                 тНОМЕР = СокрЛП(Строка(Сч+1));
            КонецЕсли;
        КонецЦикла;
        Если Присутствует = Ложь Тогда
            НайденнаяСтрока = Истина;
            НомерПоручения = СокрЛП(тНОМЕР);
        КонецЕсли;
    КонецЕсли;
    
        КонецЦикла;
    Если НомерПоручения = "" Тогда
        НомерПоручения = 1;
    КонецЕсли;

КонецПроцедуры
Zaval
Если происходит что-то непонятное, то первый вопрос - После чего(каких событий или действий) это началось?

А вообще - пройдитесь по этой части кода Отладчиком.

На первый взгляд, вот эта строчка мне не нравится
 Если Присутствует = Ложь Тогда
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.