Форумы » Вопросы и ответы по интеграции »
Ошибка ГашениеВСД2. Фильтровать
Добавил(а) Pentyukhov Sergey около 7 лет назад
Ошибка в процедуре Фильтровать()
В ТЗ 843 строки В троцедуре пытаетесь искать строку №844

Фильтр по поставщику: 5f2ead88-7ac8-4326-b79e-e13fb8ffb934 [Колбаса сыровяленная "От бабушки по-домашнему"] пропущен
ТтнНомер = тз.ПолучитьЗначение(ТекСтрока, "ТтнНомер");
{E:\MILKOOPT\2007_OLD\EXTFORMS\MERC_VSD\МЕРКУРИЙ_ГАШЕНИЕ_ВСД2.ERT(517)}: Номер за пределами значения!
Ответы (8)
RE: Ошибка ГашениеВСД2. Фильтровать
-
Добавил(а) Pentyukhov Sergey около 7 лет назад
Наверное Если есть вход в Условие
если ПустоеЗначение(ВыбПоставщик)=0 Тогда
И
тз.УдалитьСтроку(ТекСтрока);
То наверное и переменную "ТекСтрока" надо уменьшить? :)
RE: Ошибка ГашениеВСД2. Фильтровать
-
Добавил(а) кб99 Филипп около 7 лет назад
посмотрите код : ТекСтрока = тз.КоличествоСтрок() = 843
как у вас получается 844 ???
RE: Ошибка ГашениеВСД2. Фильтровать
-
Добавил(а) Pentyukhov Sergey около 7 лет назад
В прикрепленном файле, перед началом цикла в ТЗ 844 строки
Далее Если ТекПоставщик <> ВыбПоставщик то из ТЗ удаляется строка, а сама ПЕРЕМЕННАЯ ТекСтрока не изменяется
Себе исправил где фильтр по Поставщику на:
ТекСтрока = ТекСтрока - 1; ПродолЖить;
RE: Ошибка ГашениеВСД2. Фильтровать
-
Добавил(а) Pentyukhov Sergey около 7 лет назад

RE: Ошибка ГашениеВСД2. Фильтровать
-
Добавил(а) кб99 Филипп около 7 лет назад
так вы 1 строку пропускаете без условия...
правильнее будет
Процедура Фильтровать()
Попытка
ТЗВСД.УдалитьСтроки();
тз = СоздатьОбъект("ТаблицаЗначений");
ТЗВСД_Исходная.Выгрузить(тз);
тз.ВыбратьСтроки();
ТекСтрока =тз.КоличествоСтрок();
Пока ТекСтрока >0 Цикл
ТекПоставщик = тз.ПолучитьЗначение(ТекСтрока, "Отправитель_ХозСубъект");
ТтнНомер = тз.ПолучитьЗначение(ТекСтрока, "ТтнНомер");
если ПустоеЗначение(ВыбПоставщик)=0 Тогда
Если ТекПоставщик <> ВыбПоставщик Тогда
Сообщить("Фильтр по поставщику: "+ СокрЛП(тз.ПолучитьЗначение(ТекСтрока, "uuid")) +" ["+ СокрЛП(тз.ПолучитьЗначение(ТекСтрока, "НаименованиеПродукции")) + "] пропущен");
тз.УдалитьСтроку(ТекСтрока);
КонецЕсли;
ИначеЕсли Найти( ТтнНомер, СокрЛП(НомерТТН))=0 Тогда
Сообщить("Фильтр по № ТТН: "+СокрЛП(тз.ПолучитьЗначение(ТекСтрока, "uuid")) +" ["+ СокрЛП(тз.ПолучитьЗначение(ТекСтрока, "НаименованиеПродукции")) + "] пропущен");
тз.УдалитьСтроку(ТекСтрока);
КонецЕсли;
ТекСтрока=ТекСтрока-1;
КонецЦикла;
ТЗВСД.Загрузить(тз);
ТЗВСД.ВыводитьПиктограммы("Пометка");
ТЗВСД.ТекущаяСтрока(1);
Исключение
ГМ.СообщитьОбОшибке( ОписаниеОшибки() );
КонецПопытки;
КонецПроцедуры
RE: Ошибка ГашениеВСД2. Фильтровать
-
Добавил(а) Pentyukhov Sergey около 7 лет назад
Я ничего не пропускаю(Первая стока не причем), я показал на Вашу ошибку в условиях.
При данной логике условия в функции не отработают.
Я просто сделал быстрый "КОСТЫЛЬ" при котором Если в строке ТЗ поставщик не подпадающий под выборку Счетчик "ТекСтрока" тоже уменьшался.
У Вас это не было учтено.
RE: Ошибка ГашениеВСД2. Фильтровать
-
Добавил(а) кб99 Филипп около 7 лет назад
Не обижайтесь, просто ваш костыль потребует еще других костылей...
Но тема которую вы подняли - важная, чтобы понимать какие ошибки и как часто возникают вводим отправку ошибок в багтреккер.
Начинаем тестировать новую "фичу", поэтому просьба сильно не пинать... :)
RE: Ошибка ГашениеВСД2. Фильтровать
-
Добавил(а) Pentyukhov Sergey около 7 лет назад
У ВАС Есть в планах перевести ТАБЛИЦЫ на форме на "ТабличноеПоле"?
Пока очень не удобно, особенно если длинные наименования в ячейках