Форумы » Вопросы и ответы по интеграции »
Ошибка ГашениеВСД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 лет назад
У ВАС Есть в планах перевести ТАБЛИЦЫ на форме на "ТабличноеПоле"?
Пока очень не удобно, особенно если длинные наименования в ячейках