Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Не добавляет правильно следующий номер по порядку реквизиту табличной части

Не добавляет правильно следующий номер по порядку  реквизиту  табличной части
Я
   1сЮлия
 
04.07.19 - 10:25
Доброе утро! Добавила подписку на событие передзаписью документа, формируется НомерПаспортаДетали там нужно чтобы вытягивался последний номер в табличной части НомерПаспортаДетали и добавлялась 1  он мне тянет писваивает к примеру 3311 добавил 1 = 3312, а остальным тоже лепит 3312,3312 в таб части,а должен 3312,след 3313 и тд.  вот код: перем сч,НомерПаспортаДеталиЧисло;
     Для каждого Строка Из Источник.Серии Цикл

        Если ЗначениеЗаполнено(СокрЛП(Строка.НомерПаспортаДетали )) тогда
            возврат;
        КонецЕсли;
        
        Если РежимЗаписи<>РежимЗаписиДокумента.Проведение тогда
            возврат;
        КонецЕсли;
        
        
        Если Строка.РезультатСертификации<>Перечисления.РезультатыСертификацииНоменклатуры.Сертификат тогда
            Возврат;        
        КонецЕсли;
    
    КонецЦикла;    
    
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    аэсСертификацияСерии.НомерПаспортаДетали КАК НомерДокумента
    |ИЗ
    |    Документ.аэсСертификация.Серии КАК аэсСертификацияСерии
    |ГДЕ
    |    аэсСертификацияСерии.РезультатСертификации = &РезультатСертификации
    |    И аэсСертификацияСерии.Ссылка.Дата >= &ДатаНачалаГода
    |    И аэсСертификацияСерии.Ссылка.Дата <= &ДатаКонцаГода
    |
    |УПОРЯДОЧИТЬ ПО
    |    аэсСертификацияСерии.НомерПаспортаДетали УБЫВ";
    
    Запрос.УстановитьПараметр("РезультатСертификации", Перечисления.РезультатыСертификацииНоменклатуры.Сертификат);
    Запрос.УстановитьПараметр("ДатаНачалаГода", НачалоГода(Источник.Дата));
    Запрос.УстановитьПараметр("ДатаКонцаГода", КонецГода(Источник.Дата));


    Выборка = Запрос.Выполнить().Выбрать();
    
    ТаблицаЗначений = Новый ТаблицаЗначений;
    
    ТаблицаЗначений.Колонки.Добавить("Номер");
    ТаблицаЗначений.Колонки.Добавить("Длина");

    Пока Выборка.Следующий() Цикл
        НоваяСтрока = ТаблицаЗначений.Добавить();
        НоваяСтрока.Номер = Выборка.НомерДокумента;
        НоваяСтрока.Длина = СтрДлина(Выборка.НомерДокумента);
    КонецЦикла;
    
    ТаблицаЗначений.Сортировать("Длина Убыв, Номер Убыв");
    сч = 1;    
    Для каждого Строка Из Источник.Серии Цикл
        Попытка
            НомерПаспортаДеталиЧисло             = Число(ТаблицаЗначений[0].Номер);
            НомерПаспортаДеталиЧисло = НомерПаспортаДеталиЧисло+сч;
            Строка.НомерПаспортаДетали     = Формат(НомерПаспортаДеталиЧисло, "ЧГ=0");
             cч =сч+1;
        Исключение
            Строка.НомерПаспортаДетали = 1;
        КонецПопытки;
   КонецЦикла;
 
 
   Zmich
 
1 - 04.07.19 - 10:44
(0). После присвоения номера 3312 в строке не происходит записи документа, поэтому следующий запрос (Вы же в курсе, что запрос в цикле - это нехорошо?) вернет то же самое значение.
   catena
 
2 - 04.07.19 - 10:46
(1)А где там запрос в цикле?
   1сЮлия
 
3 - 04.07.19 - 10:50
А как правильно тогда сделать?
   Zmich
 
4 - 04.07.19 - 11:06
(2). Ошибся
   1сЮлия
 
5 - 04.07.19 - 11:07
Не в подписке на событие?
   1сЮлия
 
6 - 04.07.19 - 11:08
Где прописать,чтобы видел следующий.
   catena
 
7 - 04.07.19 - 11:14
(6)Отладчик, Юленька, пройдитесь отладчиком.
   1сЮлия
 
8 - 04.07.19 - 13:50
Спасибо большое! Сделала.
   Simod
 
9 - 04.07.19 - 13:53
После удаления документа нумерация откатывается назад. Профит!!!

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует