Очищает набор имен файлов, заданный методом УстановитьРезультатДиалогаВыбораФайла.
Синтаксис
ОчиститьРезультатДиалогаВыбораФайла()Полное описание, параметры и ограничения
ТестируемоеПриложение.ОчиститьРезультатДиалогаВыбораФайла (TestedApplication.ClearFileDialogResult)
ТестируемоеПриложение (TestedApplication)
ОчиститьРезультатДиалогаВыбораФайла (ClearFileDialogResult)
Доступен, начиная с версии 8.3.25.
Синтаксис:
ОчиститьРезультатДиалогаВыбораФайла()
Описание:
Очищает набор имен файлов, заданный методом УстановитьРезультатДиалогаВыбораФайла.
Доступность:
Тонкий клиент, толстый клиент.
Использование в версии:
Доступен, начиная с версии 8.3.25.
Методическая информация
Практические примеры
Автоматизировать отмену своего файлового диалога без чтения файла
До нажатия кнопки ставим в очередь результат Отмена, ждём собственный статус и очищаем оставшуюся учебную очередь.
Где и как запускать
Полный клиентский модуль формы обработки в менеджере тестов, запущенном с /TESTMANAGER. Это не модуль тестируемой таблицы.
Подготовка
Создайте собственную пустую учебную конфигурацию УчебнаяКонфигурацияСинтаксиса. Первый урок содержит полный модуль отдельной внешней обработки УчебнаяТаблицаТестирования; её данные только в памяти.
Запустите два отдельных тонких клиента собственной учебной базы: тестируемый с /TESTCLIENT -TPort15380, менеджер с /TESTMANAGER. Порт 15380 — собственный учебный; убедитесь, что на нём не работает другой клиент. Не подключайте менеджер к рабочей базе/чужому приложению.
В тестируемом клиенте вручную откройте собственную обработку из первого урока. В менеджере создайте другую внешнюю обработку с командой ВыполнитьПример; полный код одного теста вставьте в её модуль формы.
Перед каждым тестом закройте и заново откройте таблицу в тестируемом клиенте. Исходно в ней A-01/Книга/3, B-02/Ручка/1, C-00/Бумага/2, без ранее установленной сортировки и редактирования.
Каждый тест ищет точный учебный заголовок и таблицу ТаблицаТоваров внутри этой формы. Не заменяйте селекторы на * или первый найденный элемент рабочего приложения.
Это код штатного механизма тестирования 1С, не браузерная проверка HTML. В данном окружении выполнение UI-тестов в настоящей 1С не подтверждено.
&НаКлиенте
Процедура ВыполнитьПример(Команда)
Приложение = Новый ТестируемоеПриложение("127.0.0.1", 15380);
Приложение.УстановитьСоединение();
ИсходныйЛимит = Неопределено;
ОшибкаТеста = "";
Попытка
Форма = Приложение.ПолучитьОбъект(Тип("ТестируемаяФорма"), "Учебная таблица guide-owned-ui-2026", , 10);
Таблица = Форма.ПолучитьОбъект(Тип("ТестируемаяТаблицаФормы"), , "ТаблицаТоваров", 10);
ИсходныйЛимит = Приложение.ПолучитьМаксимальноеВремяВыполненияДействия();
Приложение.УстановитьМаксимальноеВремяВыполненияДействия(10);
Кнопка = Форма.ПолучитьОбъект(Тип("ТестируемаяКнопкаФормы"), , "КнопкаУчебныйДиалогФайла", 10);
Приложение.ОчиститьРезультатДиалогаВыбораФайла();
ОшибкаДиалога = "";
Попытка
Приложение.УстановитьРезультатДиалогаВыбораФайла(Ложь);
Кнопка.Нажать();
ПараметрыПроверки = Новый Структура("Форма,ИмяПоля,ОжидаемыйТекст", Форма, "ПолеУчебногоСтатуса", "Отмена");
Условие = Новый ОписаниеОповещения("УчебноеПолеДостиглоСостояния", ЭтотОбъект, ПараметрыПроверки);
Если Не Приложение.ОжидатьСостояния(Условие, 5) Тогда
ВызватьИсключение "Отмена собственного файлового диалога не подтверждена статусом";
КонецЕсли;
Исключение
ОшибкаДиалога = ОписаниеОшибки();
КонецПопытки;
Попытка
Приложение.ОчиститьРезультатДиалогаВыбораФайла();
Исключение
ВызватьИсключение "Учебная очередь не очищена: " + ОписаниеОшибки() + "; ошибка диалога: " + ОшибкаДиалога;
КонецПопытки;
Если Не ПустаяСтрока(ОшибкаДиалога) Тогда
ВызватьИсключение ОшибкаДиалога;
КонецЕсли;
Сообщить("Собственный диалог отменён, файлы не читались");
Исключение
ОшибкаТеста = ОписаниеОшибки();
КонецПопытки;
ОшибкиЗавершения = ЗавершитьСобственныйУчебныйТест(Приложение, ИсходныйЛимит);
Если Не ПустаяСтрока(ОшибкаТеста) Или Не ПустаяСтрока(ОшибкиЗавершения) Тогда
ВызватьИсключение "Ошибка учебного UI-теста: " + ОшибкаТеста + " " + ОшибкиЗавершения;
КонецЕсли;
Сообщить("Сценарий завершён без исключения. Отдельно сверяйте контрольные Истина и видимые данные учебного клиента");
КонецПроцедуры
&НаКлиенте
Функция ЗавершитьСобственныйУчебныйТест(Приложение, ИсходныйЛимит)
ОшибкиЗавершения = "";
Если ТипЗнч(ИсходныйЛимит) = Тип("Число") Тогда
Попытка
Приложение.УстановитьМаксимальноеВремяВыполненияДействия(ИсходныйЛимит);
Исключение
ОшибкиЗавершения = "Не восстановлен лимит действий: " + ОписаниеОшибки();
КонецПопытки;
КонецЕсли;
Попытка
Приложение.РазорватьСоединение();
Исключение
ОшибкиЗавершения = ОшибкиЗавершения + " Не разорвано соединение: " + ОписаниеОшибки();
КонецПопытки;
Возврат ОшибкиЗавершения;
КонецФункции
&НаКлиенте
Функция УчебноеПолеДостиглоСостояния(ДополнительныеПараметры) Экспорт
Поле = ДополнительныеПараметры.Форма.НайтиОбъект(Тип("ТестируемоеПолеФормы"), , ДополнительныеПараметры.ИмяПоля, 1);
Если Поле = Неопределено Тогда
Возврат Ложь;
КонецЕсли;
Возврат Поле.ПолучитьОтображаемыйТекст() = ДополнительныеПараметры.ОжидаемыйТекст;
КонецФункцииРазбор по шагам
Сначала открываем собственную таблицу в отдельном клиенте тестирования. Подключаемся только к 127.0.0.1:15380, ищем точный заголовок и внутреннее имя таблицы с таймаутами 10 секунд.
Нужен расширенный fixture с собственным диалогом и статусом. Он не открывает и не записывает выбранный файл, только обрабатывает результат диалога.
УстановитьРезультатДиалогаВыбораФайла вызывается до кнопки, открывающей диалог. Значения ставятся в очередь; одна установка применяется к одному вызову диалога.
Ложь имитирует отмену; имя файла и индекс фильтра при этом не нужны. Для Истина они обязательны — не переносите сокращённый вызов в пример выбора.
Показать диалог завершает через экспортную процедуру с массивом имён или Неопределено. Ожидаем собственный текст Отмена через функцию, не немедленно после Нажать.
Очищаем очередь только отдельного собственного теста. Если системный диалог открылся без подготовленного результата, действия менеджера могут выдавать ошибку до ручного закрытия; не кликайте произвольное окно.
После теста восстанавливаем исходный лимит действий и отдельно пытаемся разорвать соединение, даже при исключении. Ошибки завершения не скрываем; разрыв соединения не закрывает тестируемое приложение.
Как проверить результат
Статус собственного fixture стал Отмена в пределах ожидания; отсутствие подтверждения вызывает объясняющую ошибку.
Не выбран/прочитан/записан ни один файл. Очередь учебных результатов очищена и соединение разорвано.
Ожидаемый результат
Подготовлен конкретный безопасный тест отмены диалога с правильной очередностью действий.
На что обратить внимание
Не очищайте очередь общих тестов или чужого менеджера.
При сбое очереди закрывайте только фактически распознанный собственный системный диалог вручную.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.
Отменить Сохранить как собственной таблицы через клиент тестирования
Перед вызовом настоящего API сохранения задаём native-результат диалога Ложь. Проверяем неизменённый собственный документ и пустое имя сохранения; файловый путь и индекс фильтра не выдумываются.
Где и как запускать
Полный отдельный модуль формы менеджера тестирования собственного тонкого клиента и два полных supporting-модуля для создания/открытия своей таблицы. В1С не запускался.
Подготовка
НОВАЯ пустая отдельная конфигурация УчебнаяОтменаСохранения85 на8.5.1.1343, совместимость Не использовать, Русский, интерфейс Такси. Нет рабочих справочников, документов, регистров, общих реквизитов, расширений, подписок и заданий. Только свои формы/команда этого урока; модули вручную пустые до вставки приведённого кода.
Конфигуратор → Общие формы → УчебнаяТаблицаТест85: реквизит МеткаСеанса Строка100, одиночное поле ввода МеткаСеанса с тем же путём и ТолькоПросмотр=Да; реквизит УчебныйДокумент типа ТабличныйДокумент, поле УчебнаяТаблица85 вида ПолеТабличногоДокумента с ПутьКДанным=УчебныйДокумент. Вставьте весь модуль fixture ниже; событие ПриСозданииНаСервере назначьте одноимённой процедуре.
Общая команда ОткрытьУчебнуюТаблицу85: модуль ниже полностью открывает ОбщаяФорма.УчебнаяТаблицаТест85. Включите команду в интерфейс своей подсистемы УчебныеТесты85. Не создавайте похожую команду для рабочего отчёта. Будущая ручная подготовка: сохранить конфигурацию, обновить базу F7.
Будущий ручной запуск ТОЛЬКО собственного стенда: первый отдельный тонкий клиент /TESTCLIENT -TPort15384, второй /TESTMANAGER. Собственный localhost-порт15384 заранее свободен и выделен только этому уроку; если выбран другой собственный порт, одинаково измените ручной ключ и конструктор. Здесь клиенты, порт и сетевое соединение не запускались.
В своём /TESTCLIENT откройте ровно одну собственную форму общей командой. Скопируйте реально показанный МеткаСеанса UUID. В таблице обычным щелчком выберите только R2C1, ячейку Книга; не выделяйте диапазон или объединённый заголовок.
Своя внешняя обработка УчебныйМенеджерТаблицы85 → новая управляемая Форма в /TESTMANAGER: реквизиты Согласие Булево, МеткаСеанса Строка100, Итог Строка1000. Видимые поля с этими путями, Итог ТолькоПросмотр=Да. Команда/кнопка ВыполнитьСвойТест, действие ВыполнитьСвойТест; ПриОткрытии назначьте одноимённой процедуре. Вставьте весь основной модуль, вставьте настоящую скопированную метку и подтвердите Согласие только своему тесту.
Для этого отдельного урока Вывод собственного поля=Разрешить, Редактирование=Ложь. В других уроках вывод запрещён: тот запрет не переносить сюда. Документ только что создаётся в памяти, ИспользуемоеИмяФайла пусто.
В source-форме добавьте реквизит ИмяСохранения85 Строка1000, одиночное поле с тем же внутренним именем/ПутьКДанным и ТолькоПросмотр=Да; команду/кнопку ОбновитьСвоёИмя85, действие ОбновитьСвоёИмя85. Полный обработчик приведён в fixture.
Нужен новый собственный /TESTCLIENT без незавершённых системных файловых диалогов, без других тестов/пользователей/очередей. Здесь Согласие разрешает только тест отказа своего диалога. Не запускайте другие команды сохранения во время опыта.
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Согласие = Ложь;
МеткаСеанса = "";
Итог = "Сначала подготовьте свою таблицу и выберите только R2C1";
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьСвойСтенд()
Если Не Согласие Тогда
ВызватьИсключение "Разрешите только тест своей таблицы без редактирования, файлов и печати";
КонецЕсли;
UUIDМетки = Новый УникальныйИдентификатор(МеткаСеанса);
Если Строка(UUIDМетки) <> МеткаСеанса Тогда
ВызватьИсключение "Скопируйте фактическую метку своего открытого клиента тестирования";
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция НайтиСвоюТаблицу(Приложение)
Заголовок = "Учебная таблица85 " + МеткаСеанса;
Формы = Приложение.НайтиОбъекты(Тип("ТестируемаяФорма"), Заголовок, , 10);
Если ТипЗнч(Формы) <> Тип("ФиксированныйМассив") Или Формы.Количество() <> 1 Тогда
ВызватьИсключение "Должна быть одна фактически открытая собственная форма";
КонецЕсли;
Форма = Приложение.ПолучитьОбъект(Тип("ТестируемаяФорма"), Заголовок, , 10);
Метка = Форма.ПолучитьОбъект(Тип("ТестируемоеПолеФормы"), , "МеткаСеанса", 10);
Если Метка.ПолучитьПредставлениеДанных() <> МеткаСеанса Тогда
ВызватьИсключение "Не подтверждена настоящая метка собственной таблицы";
КонецЕсли;
Поле = Форма.ПолучитьОбъект(Тип("ТестируемоеПолеФормы"), , "УчебнаяТаблица85", 10);
Если ТипЗнч(Поле) <> Тип("ТестируемоеПолеФормы") Или Поле.Имя <> "УчебнаяТаблица85"
Или Поле.Вид <> ВидПоляФормы.ПолеТабличногоДокумента Тогда
ВызватьИсключение "Нужно своё поле именно вида ПолеТабличногоДокумента";
КонецЕсли;
Если Не Поле.ТекущаяВидимость() Или Не Поле.ТекущаяДоступность() Тогда
ВызватьИсключение "Собственное поле должно быть видимым и доступным для выбора ячейки";
КонецЕсли;
Возврат Поле;
КонецФункции
&НаКлиенте
Процедура ПроверитьСвоюМатрицу(Поле)
Если Поле.ПолучитьРазмерОбластиДанныхДокументаПоВертикали() <> 3
Или Поле.ПолучитьРазмерОбластиДанныхДокументаПоГоризонтали() <> 2 Тогда
ВызватьИсключение "Свой документ должен иметь последние данные в строке3 и колонке2";
КонецЕсли;
Если Поле.ПолучитьТекстОбласти("R1C1") <> "Учебная таблица85"
Или Поле.ПолучитьТекстОбласти("R2C1") <> "Книга"
Или Поле.ПолучитьТекстОбласти("R2C2") <> "3"
Или Поле.ПолучитьТекстОбласти("R3C1") <> "Ручка"
Или Поле.ПолучитьТекстОбласти("R3C2") <> "1" Тогда
ВызватьИсключение "Все пять текстов собственной таблицы должны совпасть полностью";
КонецЕсли;
Объединение = Поле.ВходитВОбъединеннуюОбласть("R1C1");
Если ТипЗнч(Объединение) <> Тип("Строка") Или Объединение <> "R1C1:R1C2" Тогда
ВызватьИсключение "Заголовок должен входить именно в собственную объединённую область";
КонецЕсли;
Если Поле.ВходитВОбъединеннуюОбласть("R2C1") <> Неопределено Тогда
ВызватьИсключение "Ячейка Книга не должна быть объединена";
КонецЕсли;
Если Поле.ТекущийРежимРедактирование() Тогда
ВызватьИсключение "Не начинайте редактировать собственную таблицу этого урока";
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВыполнитьСвойТест(Команда)
ПроверитьСвойСтенд();
Приложение = Новый ТестируемоеПриложение("127.0.0.1", 15384);
Поле = Неопределено;
ИсходныйЛимит = Неопределено;
СвояОбластьПодтверждена = Ложь;
СвояОчередьИспользована = Ложь;
Ошибка = "";
Итог = "Проверка ещё не завершена";
Попытка
Приложение.УстановитьСоединение();
ИсходныйЛимит = Приложение.ПолучитьМаксимальноеВремяВыполненияДействия();
Приложение.УстановитьМаксимальноеВремяВыполненияДействия(10);
Поле = НайтиСвоюТаблицу(Приложение);
ПроверитьСвоюМатрицу(Поле);
Если Поле.ПолучитьАдресТекущейОбласти() <> "R2C1" Тогда
ВызватьИсключение "До старта вручную выберите одну собственную ячейку Книга, R2C1";
КонецЕсли;
СвояОбластьПодтверждена = Истина;
СвояФорма = Приложение.ПолучитьОбъект(Тип("ТестируемаяФорма"), "Учебная таблица85 " + МеткаСеанса, , 10);
Обновить = СвояФорма.ПолучитьОбъект(Тип("ТестируемаяКнопкаФормы"), , "ОбновитьСвоёИмя85", 10);
ИмяСохранения = СвояФорма.ПолучитьОбъект(Тип("ТестируемоеПолеФормы"), , "ИмяСохранения85", 10);
Обновить.Нажать();
Если ИмяСохранения.ПолучитьПредставлениеДанных() <> "" Тогда
ВызватьИсключение "Свой новый документ не должен иметь прежнего имени сохранения";
КонецЕсли;
СвояОчередьИспользована = Истина;
Приложение.ОчиститьРезультатДиалогаВыбораФайла();
Приложение.УстановитьРезультатДиалогаВыбораФайла(Ложь);
Поле.ЗаписатьСодержимоеВФайл(Истина);
Приложение.ОчиститьРезультатДиалогаВыбораФайла();
Обновить.Нажать();
Если ИмяСохранения.ПолучитьПредставлениеДанных() <> "" Тогда
ВызватьИсключение "После отказа диалога имя собственного документа должно остаться пустым";
КонецЕсли;
ПроверитьСвоюМатрицу(Поле);
Исключение
Ошибка = ОписаниеОшибки();
КонецПопытки;
Если СвояОбластьПодтверждена Тогда
Попытка
Если СвояОчередьИспользована Тогда
Приложение.ОчиститьРезультатДиалогаВыбораФайла();
КонецЕсли;
Поле.УстановитьТекущуюОбласть("R2C1");
Если Поле.ПолучитьАдресТекущейОбласти() <> "R2C1" Тогда
ВызватьИсключение "Не восстановлена подтверждённая исходная ячейка";
КонецЕсли;
ПроверитьСвоюМатрицу(Поле);
Исключение
Ошибка = Ошибка + " Восстановление собственной области: " + ОписаниеОшибки();
КонецПопытки;
КонецЕсли;
Если ТипЗнч(ИсходныйЛимит) = Тип("Число") Тогда
Попытка
Приложение.УстановитьМаксимальноеВремяВыполненияДействия(ИсходныйЛимит);
Исключение
Ошибка = Ошибка + " Восстановление фактического лимита: " + ОписаниеОшибки();
КонецПопытки;
КонецЕсли;
Попытка
Приложение.РазорватьСоединение();
Исключение
Ошибка = Ошибка + " Разрыв собственного соединения: " + ОписаниеОшибки();
КонецПопытки;
Если Ошибка <> "" Тогда
Итог = "Свой тест не завершён: " + Ошибка;
ВызватьИсключение Итог;
КонецЕсли;
Итог = "Своё Сохранить как отменено native-Ложь; имя и таблица сохранены, очередь очищена, фактический лимит и соединение восстановлены";
КонецПроцедурыУчебнаяТаблицаТест85
Конфигуратор → Общие формы → УчебнаяТаблицаТест85 → Модуль
Полный самостоятельный модуль управляемой общей формы: создание собственной таблицы на сервере; не выполнялся.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ПроверитьСвойПустойСтенд();
МеткаСеанса = Строка(Новый УникальныйИдентификатор);
ЭтотОбъект.АвтоЗаголовок = Ложь;
ЭтотОбъект.Заголовок = "Учебная таблица85 " + МеткаСеанса;
Документ = Новый ТабличныйДокумент;
Заголовок = Документ.Область(1, 1, 1, 2);
Заголовок.Объединить();
Заголовок.Текст = "Учебная таблица85";
Документ.Область(2, 1).Текст = "Книга";
Документ.Область(2, 2).Текст = "3";
Документ.Область(3, 1).Текст = "Ручка";
Документ.Область(3, 2).Текст = "1";
Документ.Область(1, 1, 3, 2).ШиринаКолонки = 30;
Документ.ТолькоПросмотр = Истина;
УчебныйДокумент = Документ;
Элементы.УчебнаяТаблица85.ИспользуемоеИмяФайла = "";
ИмяСохранения85 = "";
Элементы.УчебнаяТаблица85.Редактирование = Ложь;
Элементы.УчебнаяТаблица85.Вывод = ИспользованиеВывода.Разрешить;
Элементы.УчебнаяТаблица85.РазрешитьНачалоПеретаскивания = Ложь;
Элементы.УчебнаяТаблица85.РазрешитьПеретаскивание = Ложь;
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ПроверитьСвойПустойСтенд()
Если Метаданные.Справочники.Количество() <> 0 Или Метаданные.Документы.Количество() <> 0 Или Метаданные.Перечисления.Количество() <> 0 Или Метаданные.РегистрыСведений.Количество() <> 0 Или Метаданные.РегистрыНакопления.Количество() <> 0 Или Метаданные.РегистрыБухгалтерии.Количество() <> 0 Или Метаданные.РегистрыРасчета.Количество() <> 0 Или Метаданные.ПланыВидовХарактеристик.Количество() <> 0 Или Метаданные.ПланыВидовРасчета.Количество() <> 0 Или Метаданные.ПланыСчетов.Количество() <> 0 Или Метаданные.ПланыОбмена.Количество() <> 0 Или Метаданные.Последовательности.Количество() <> 0 Или Метаданные.БизнесПроцессы.Количество() <> 0 Или Метаданные.Задачи.Количество() <> 0 Или Метаданные.ОбщиеРеквизиты.Количество() <> 0 Или Метаданные.ПодпискиНаСобытия.Количество() <> 0 Или Метаданные.РегламентныеЗадания.Количество() <> 0 Или Метаданные.ВнешниеИсточникиДанных.Количество() <> 0 Тогда
ВызватьИсключение "Нужен только свой новый пустой учебный стенд";
КонецЕсли;
Если Метаданные.ЕстьИзмененияРасширениямиКонфигурации() Тогда
ВызватьИсключение "Свой сеанс не должен изменяться расширениями";
КонецЕсли;
Источники = Новый Массив;
Источники.Добавить(ИсточникРасширенийКонфигурации.БазаДанных);
Источники.Добавить(ИсточникРасширенийКонфигурации.СеансАктивные);
Источники.Добавить(ИсточникРасширенийКонфигурации.СеансОтключенные);
Для Каждого Источник Из Источники Цикл
Расширения = РасширенияКонфигурации.Получить(, Источник);
Если ТипЗнч(Расширения) <> Тип("Массив") Тогда
ВызватьИсключение "Native список расширений должен иметь тип Массив";
КонецЕсли;
Если Расширения.Количество() <> 0 Тогда
ВызватьИсключение "В своём новом стенде нет расширений базы или сеанса";
КонецЕсли;
КонецЦикла;
Если ТранзакцияАктивна() Тогда
ВызватьИсключение "Чужая или вложенная активная транзакция не допускается";
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьСвоёИмя85(Команда)
ИмяСохранения85 = Элементы.УчебнаяТаблица85.ИспользуемоеИмяФайла;
КонецПроцедурыОткрытьУчебнуюТаблицу85
Конфигуратор → Общие команды → ОткрытьУчебнуюТаблицу85 → Модуль
Полный модуль собственной общей команды с ОбработкаКоманды; не выполнялся.
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
ОткрытьФорму("ОбщаяФорма.УчебнаяТаблицаТест85");
КонецПроцедурыРазбор по шагам
Через собственную source-кнопку читается ИспользуемоеИмяФайла и выводится в readonly-реквизит. Менеджер требует пустое имя ДО операции: он не принимает документ с уже известным чужим путём.
Только после подтверждения собственной формы и исходной матрицы очищается очередь результатов диалога своего нового клиента. УстановитьРезультатДиалогаВыбораФайла(Ложь) ставится ПЕРЕД вызовом сохранения.
ЗаписатьСодержимоеВФайл(Истина) инициирует Сохранить как. Native-Ложь означает отказ пользователя; имя файла и индекс фильтра при отказе игнорируются, поэтому не подставляются выдуманные значения.
Очередь очищается после операции и на завершении. Собственная кнопка обновляет имя: оно должно остаться пустым. Все пять текстов/размер/объединение проверяются заново; выбор R2C1, фактический лимит и соединение восстанавливаются отдельно.
Как проверить результат
Будущий результат: операция инициирует собственный диалог с отказом, исходное имя остаётся пустым, данные таблицы не меняются. Ошибка или открытый неотвеченный диалог не принимаются за успех.
Будущий отрицательный контроль: в fixture задайте ИспользуемоеИмяФайла непустой учебной строкой и откройте новую собственную форму с новым UUID. Проверка должна остановиться ДО метода сохранения. Верните полный fixture после опыта.
Этот урок показывает настоящий сценарий отмены API, не пример успешного создания файла. Успешную запись следует выполнять отдельно в явно собственный новый путь с другими условиями. Здесь файловые операции в1С не выполнялись.
Ожидаемый результат
Своё Сохранить как отменено native-Ложь; имя и таблица сохранены, очередь очищена, фактический лимит и соединение восстановлены
На что обратить внимание
runtimeVerifiedScenarios=0: BSL, UI, клиенты тестирования, соединения, файлы и печать здесь не запускались. Это полные исходники для будущего ручного опыта только на своём стенде.
Нужен новый отдельный /TESTCLIENT только этого урока, не рабочая конфигурация и не общий тестовый клиент. Настоящий UUID копируется из своей формы; ни похожие имена, ни новый выдуманный UUID не заменяют подтверждение источника.
У разных уроков одинаковые имена модулей/форм/процедур, но разные точные имена конфигураций. Каждый урок готовится отдельно; модули не склеивать.
Без предварительного native-ответа системный файловый диалог блокирует последующие действия менеджера до ручного закрытия. Поэтому порядок установки отказа и вызова строго фиксирован.
Очистка результатов диалога касается очереди своего изолированного клиента, не удаления файлов. Нельзя применять этот код к общему клиенту, где кто-то уже поставил свои ответы диалогов.
Метод вызывается только с Истина. Ложь у СохранитьКак могла бы сохранять под текущим именем; такой вариант и реальная запись/перезапись не выполняются этим уроком.
Пустое ИспользуемоеИмяФайла — проверка состояния UI, не самостоятельный аудит файловой системы. Не выдавайте её за доказательство отсутствия любого постороннего файла на диске.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.