Вход | Регистрация
 
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 или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.