Ошибка ГашениеВСД2. Фильтровать - 1Cv7 ВСД в ГИС Меркурий - КБ99 Redmine

Проект

Общее

Профиль

Ошибка ГашениеВСД2. Фильтровать

Добавил(а) Pentyukhov Sergey больше 6 лет назад

Ошибка в процедуре Фильтровать()
В ТЗ 843 строки В троцедуре пытаетесь искать строку №844

Фильтр по поставщику: 5f2ead88-7ac8-4326-b79e-e13fb8ffb934 [Колбаса сыровяленная "От бабушки по-домашнему"] пропущен
ТтнНомер = тз.ПолучитьЗначение(ТекСтрока, "ТтнНомер");
{E:\MILKOOPT\2007_OLD\EXTFORMS\MERC_VSD\МЕРКУРИЙ_ГАШЕНИЕ_ВСД2.ERT(517)}: Номер за пределами значения!

Ответы (8)

RE: Ошибка ГашениеВСД2. Фильтровать - Добавил(а) Pentyukhov Sergey больше 6 лет назад

Наверное Если есть вход в Условие

    если ПустоеЗначение(ВыбПоставщик)=0 Тогда 

И

тз.УдалитьСтроку(ТекСтрока);

То наверное и переменную "ТекСтрока" надо уменьшить? :)

RE: Ошибка ГашениеВСД2. Фильтровать - Добавил(а) кб99 Синявский Филипп больше 6 лет назад

посмотрите код : ТекСтрока = тз.КоличествоСтрок() = 843
как у вас получается 844 ???

RE: Ошибка ГашениеВСД2. Фильтровать - Добавил(а) Pentyukhov Sergey больше 6 лет назад

В прикрепленном файле, перед началом цикла в ТЗ 844 строки
Далее Если ТекПоставщик <> ВыбПоставщик то из ТЗ удаляется строка, а сама ПЕРЕМЕННАЯ ТекСтрока не изменяется

Себе исправил где фильтр по Поставщику на:

ТекСтрока = ТекСтрока - 1;
ПродолЖить;

RE: Ошибка ГашениеВСД2. Фильтровать - Добавил(а) кб99 Синявский Филипп больше 6 лет назад

так вы 1 строку пропускаете без условия...
правильнее будет

Процедура Фильтровать()
    Попытка
        ТЗВСД.УдалитьСтроки();    

        тз = СоздатьОбъект("ТаблицаЗначений");
        ТЗВСД_Исходная.Выгрузить(тз);    

        тз.ВыбратьСтроки();
        ТекСтрока =тз.КоличествоСтрок();
        Пока ТекСтрока >0 Цикл

            ТекПоставщик     = тз.ПолучитьЗначение(ТекСтрока, "Отправитель_ХозСубъект");
            ТтнНомер         = тз.ПолучитьЗначение(ТекСтрока, "ТтнНомер");

            если ПустоеЗначение(ВыбПоставщик)=0 Тогда 
                Если ТекПоставщик <> ВыбПоставщик Тогда
                    Сообщить("Фильтр по поставщику: "+ СокрЛП(тз.ПолучитьЗначение(ТекСтрока, "uuid")) +" ["+ СокрЛП(тз.ПолучитьЗначение(ТекСтрока, "НаименованиеПродукции")) + "] пропущен");
                    тз.УдалитьСтроку(ТекСтрока);
                КонецЕсли;
            ИначеЕсли Найти( ТтнНомер, СокрЛП(НомерТТН))=0 Тогда
                Сообщить("Фильтр по № ТТН: "+СокрЛП(тз.ПолучитьЗначение(ТекСтрока, "uuid")) +" ["+ СокрЛП(тз.ПолучитьЗначение(ТекСтрока, "НаименованиеПродукции")) + "] пропущен");
                тз.УдалитьСтроку(ТекСтрока);            
            КонецЕсли;        

            ТекСтрока=ТекСтрока-1;
        КонецЦикла;

        ТЗВСД.Загрузить(тз);
        ТЗВСД.ВыводитьПиктограммы("Пометка");    
        ТЗВСД.ТекущаяСтрока(1);
    Исключение
        ГМ.СообщитьОбОшибке( ОписаниеОшибки() ); 
    КонецПопытки;

КонецПроцедуры

RE: Ошибка ГашениеВСД2. Фильтровать - Добавил(а) Pentyukhov Sergey больше 6 лет назад

Я ничего не пропускаю(Первая стока не причем), я показал на Вашу ошибку в условиях.
При данной логике условия в функции не отработают.
Я просто сделал быстрый "КОСТЫЛЬ" при котором Если в строке ТЗ поставщик не подпадающий под выборку Счетчик "ТекСтрока" тоже уменьшался.
У Вас это не было учтено.

RE: Ошибка ГашениеВСД2. Фильтровать - Добавил(а) кб99 Синявский Филипп больше 6 лет назад

Не обижайтесь, просто ваш костыль потребует еще других костылей...

Но тема которую вы подняли - важная, чтобы понимать какие ошибки и как часто возникают вводим отправку ошибок в багтреккер.
Начинаем тестировать новую "фичу", поэтому просьба сильно не пинать... :)

RE: Ошибка ГашениеВСД2. Фильтровать - Добавил(а) Pentyukhov Sergey больше 6 лет назад

У ВАС Есть в планах перевести ТАБЛИЦЫ на форме на "ТабличноеПоле"?

Пока очень не удобно, особенно если длинные наименования в ячейках

    (1-8/8)