Closed uramalyutin closed 5 years ago
Сходу могу предложить такой вариант:
Режим исключения (так иногда делает 1С) через выполнить произвольный код Что-то вроде...
СтрокаПустая = Истина; Попытка СтрокаПустая = ТекущаяПеременная.ПерейтиКСтроке(); // к любой строке Истина если ок, ложь если нет // Или мПараметрыКлиент["ИмяПеременной"]..ПерейтиКСтроке(); Исключение // в старых версиях вызывало исключение, если не могла перейти КонецПопытки; мСцен_УстановитьЗначениеПараметра("СтрокаПустая",СтрокаПустая);
@uramalyutin удалось проверить?
Прошу прощения за молчание, некоторое время не было доступа к компьютеру. Прошу не закрывать запрос, завтра (из офиса) выложу код, который у нас работает.
Собственно код такой же, что и приведенный выше:
// СписокПустой - Булево // Истина - список пустой (значение по умолчанию) // Ложь - список не пустой СписокПустой = Истина; Попытка // Вызываться этот код будет после того, как по ходу выполнения сценария найдена таблица на форме, в которой требуется проверять наличие строк // Сначала получаем активное окно в тестируемом клиенте, // затем получаем активную форму, // затем получаем текущий элемент на форме (в нашем случае это будет Список) // и пробуем перейти к любой строке списка (Истина - удалось перейти (как минимум одна строка в списке есть), Ложь - в списке нет ни одной строки), // получаем числовое представление полученного результата, СписокПустой = Не ТестовоеПриложение.ПолучитьАктивноеОкно().ПолучитьОбъект().ПолучитьТекущийЭлемент().ПерейтиКСтроке(); Исключение // Если невозможно перейти к строке, считаем, что список пустой КонецПопытки; мСцен_УстановитьЗначениеПараметра("СписокПустой",СписокПустой);
Этот код оформлен как отдельный библиотечный сценарий и вызывается как готовый блок шагов. Поскольку код выполняется только после того, как была успешно найдена таблица на форме, то нет необходимости в коде проверять наличие этой таблицы, поэтому можно сразу попытаться перейти к строке в таблице. В нашем случае (платформа 8.3.12.1595 и ЗУП КОРП 3.1.8.246) если список пустой, то попытка перехода к строке вызывает исключение. В результате выполнения кода возвращаемое значение сохраняется в параметре, которое потом анализируется в условии.
Спасибо за помощь! Запрос можно закрывать.
Форматирование кода не сохраняется, прикладываю картинкой (легче читается).
@uramalyutin Для код клиент не обязательно делать обвязку из процедур "подключить тестируемое приложение" или отключить, если предполагается вызов этого кода внутри подключения. Т.е. в этом случае лучше уберите эти лишнюю обвязку из файла библиотеки.
@ivanov660, прокомментируйте, пожалуйста. Обвязка "Подключить/отключить тестируемое приложение" делалась для проверки работы этого кода и осталась на случай проверки возможных изменений этого кода в дальнейшем. Вообще я не заметил, чтобы наличие этой обвязки оказывало влияние на выполнение сценария и у меня сложилось ощущение, что если тестируемый клиент уже был подключен ранее, то эти команды просто игнорируются. Во всяком случае у меня еще пока проблем не возникало из-за наличия этой обвязки, может быть еще все впереди =)
@uramalyutin
Я изложил мысль в рамках присутствия лишних шагов в вашем случае (которые ничего не делают полезного и не несут никакой смысловой нагрузки). Т.е. что-то вроде "мусора" в скрипте, обычно мы чистим такое. Маленький скрипт-ревью с моей стороны) Но это ваше решение и оно остается за вами.
@ivanov660, спасибо за подробное описание. Да, вы правы, в обоих случая настройки подключения не были заданы. Получается, что обвязка "Подключить/отключить тестируемое приложение" в данном случае даже вредна и нужно ее убрать, т.к, исходя из вашего описания, она вызовет проблемы, если этот код будет вызываться из сценария, в котором подключение к клиенту тестирования осуществляется не с пустыми настройками подключения. Спасибо за ревью)
Добрый день. Подскажите, пожалуйста, решение или хотя бы в какую сторону копать. Столкнулся с проблемой, сам решение не придумал. Казалось, что где-то уже видел решение, но не нашел (может все-таки просто показалось, что видел). Собственно вопрос: как проверить, что в списке на форме нет ни одной строчки? Понимаю, что нужно использовать "Условие", но как заполнить параметр, который нужно проверять в условии я не придумал.