TGViewer
QA в 1C — все о тестировании в мире 1С QA в 1C — все о тестировании в мире 1С @qa_1c · 670 subscribers
Post #40 947
🤔 [#ВопросОтвет] Как проверить, что документ проведен? Не могу найти подходящий шаг в библиотеке.

Вопрос: Пишу сценарий проверки функционала, который должен создать и провести документ и мне нужно проверить, что этот документ проведен. Если документ не проведен, шаг должен упасть. Но в библиотеке шагов не нахожу подходящего шага. Как проверить, что документ проведен? Я знаю номер документа и могу найти его по номеру.


Готового шага, который бы мог проверить состояние проведения документа по номеру в библиотеке в VA нет

Из готовых шагов максимально близко к тому, чтобы реализовать нужное поведение, это шаги расширения VAExtension

И я получаю состояние текущего объекта (Расширение)
И я получаю состояние объекта по навигационной ссылке "НавСсылка" (расширение)


Оба считывают состояние объекта в автоматически создаваемые переменные, среди которых есть переменная Проведен булева типа Истина/Ложь в зависимости от того, проведен или нет документ.

С его помощью для решения поставленной задачи нужно по номеру найти нужный документ, получить состояние объекта, и если документ не проведен, то упасть с ошибкой:

  И Я запоминаю в переменную "НомерДок" значение "000000018"
И Я открываю навигационную ссылку "e1cib/list/Документ.Заказ"
И Я очищаю фильтр на форме списка
И Я устанавливаю фильтр на список если это возможно
| 'Номер' | 'равно' | '$НомерДок$' |
И в таблице 'Список' я выбираю текущую строку
Тогда открылось окно "Заказ * от *"
И я получаю состояние текущего объекта (Расширение)
И я выполняю код встроенного языка
"""bsl
Если Не Контекст.Проведен Тогда
ВызватьИсключение СтрШаблон("Документ Заказ %1 не проведен, а ожидалось, что будет проведен", Контекст.НомерДок);
КонецЕсли;
"""


Такой способ работает в том числе в случае, когда менеджер и клиент тестирования находятся в разных базах. Но выглядит, честно говоря, громоздко, и как минимум эти шаги надо спрятать в группу или еще лучше вынести в экспортный сценарий. Если же задача не разовая, то стоит рассмотреть возможность написать свой собственный шаг "кодом".

У нас на одном небольшом внутреннем проекте менеджер и клиент запускаются в одной базе, и там мы для решения подобной задачи реализовали более универсальный и компактный экспортный сценарий, использующий шаги, которые выполняются в контексте менеджера тестирования:

Сценарий: документ "[ВидДокумента]" с реквизитами проведен 
И я удаляю переменную '__ДокСсылка'
Тогда я сохраняю в переменную "__ДокСсылка" ссылку на документ "[ВидДокумента]" с реквизитами
| Номер | '000000001' |
И я выполняю код встроенного языка на сервере без контекста с передачей переменных
"""bsl
Если Не Контекст.__ДокСсылка.Проведен Тогда
ВызватьИсключение СтрШаблон("Документ %1 не проведен!", Контекст.__ДокСсылка);
КонецЕсли;
"""


Используется этот шаг так:

И документ "Заказ" с реквизитами проведен 
| Номер | '000000018' |


Это была еженедельная рубрика #ВопросОтвет. Присылайте вопросы по теме тестирования в комментариях к постам или в личные сообщения и я постараюсь на них ответить в формате подобных постов или лично.


🦋 @QA_1C
  • 🔥 16
  • 👍 5
More from @qa_1c
  1. Sep 10, 2026# Опубликован релиз 1.2.043.42 # Описание изменений в релизе тут. ### AI * MCP: подключени…
  2. Aug 31, 2026📝 На Инфостарте опубликовали мои ответы на вопросы по итогам вебинара про создание автоте…
  3. Aug 21, 2026🎥 Как создавать и проверять сценарии 1С с помощью AI Вчера прошёл наш вебинар с Александр…
  4. Aug 12, 2026Может ли AI написать автотест для 1С: демонстрация Vanessa Automation Vanessa Automation –…
  5. Jun 19, 2026🎙 Продолжаем знакомить вас с модераторами INFOSTART TECH EVENT 2026 и их докладами Алекса…
  6. May 22, 2026Как запустить Vanessa Automation MCP (быстрый старт) По настройке/запуску там все просто:…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →