В процессе перестройки совместимой консоли запросов выяснился очень неприятный факт: на старых платформах 8.3, а именно 8.3.7 эта консоль не хотела запускаться - не было файловых функций - не поддерживалась функция НачатьПолучениеФайлаССервера (она появилась в платформе 8.3.15). И в консоли для того, чтобы обеспечить работу в web-клиенте, достаточно было сделать дополнительную форму обработки и потом просто вызвать эту функцию вместе с формой при необходимости, то с мобильным приложением этот фокус не пройдёт...
Поэтому пришлось обернуть в препроцессор Web-клиента. Но потом выяснилось, что это не единственная проблема - диалога выбора файлов не было на платформе 8.3.7 в мобильном приложении.
В данной публикации я рассмотрю общий способ как объединить новые версии 1С, где уже работают нормальные системные диалоги и также заготовку для работы на старых версиях 1С. Однако, предварительно нужно создать аналог диалога для старых мобильных устройств, а потом уже рассмотреть вопрос об том, как их соединить.
Аналог Диалога для старых мобильных платформ 1С 8.3
Отдельно необходимо отметить, что если нужен файловый менеджер, то сейчас на infostart таких решений полно для обычных и управляемых форм, здесь рассматриваются все действия исключительно с помощью функций 1С без любых дополнений и излишеств:
1. Пройтись по каталогам.
2. Выбрать или сохранить файл.
Очевидно, что похожие диалоги и ранее могли создаваться для мобильных приложений 1С. Здесь приведен простейший код заготовки как это можно сделать с учетом имеющихся возможностей 1с мобильного клиента и платформы.
Сам диалог выглядит таким образом (тест из режима УФ в конфигураторе).
Код этого диалога находится в прикрепленной обработке. Обработать полученные изменения можно уже на исходной форме. Открывать рекомендую с помощью ключа в событии ОписаниеОповещенияОЗакрытии. Например, для расширения файлов .q1c диалог выглядит таким образом:

Техника объединения с новыми мобильными платформами
Для того, чтобы на новых мобильных платформах можно было использовать системный диалог файлов, а не это или иное самописное решение, необходимо при открытии формы определить необходимые системные перечисления работы с файловым диалогом:
// Это вставить в ПередОткрытием!!!
// но здесь и так сойдет!!!
Попытка
Стр=Тип("ДиалогВыбораФайла");
Исключение
Стр = Неопределено;
КонецПопытки;
//Ставим заглушку на обращение к системным
//перечислениям, обходим ограничения системы на системные перечисления
Если Стр = Неопределено Тогда
РежимДиалогаВыбораФайла = Неопределено;
КонецЕсли;
Если РежимДиалогаВыбораФайла = Неопределено Тогда
// Установка произвольного нужного значения, когда нет типа!!!
ВыборФайлаОткрытие = "Открытие";
ВыборФайлаСохранение = "Сохранение";
иначе
//Кэшируем системные перечисления
ВыборФайлаОткрытие = РежимДиалогаВыбораФайла.Открытие;
ВыборФайлаСохранение = РежимДиалогаВыбораФайла.Сохранение;
КонецЕсли;
И потом, когда будет вызов диалога реализовывать это объединение так:
Если ВыборФайлаОткрытие="Открытие" Тогда
//
//Костыль для старой Мобильной платформы и мобильного приложения!!! Использовать этот
// или любой другой файловый менеджер!!!
//
Иначе
//Компьютерная 1С/новая мобильная платформа 1С с синтаксисом не
// ломая старые мобильные платформы.
МассивАргументов = новый Массив;
МассивАргументов.Добавить(ВыборФайлаСохранение);
ДиалогВыбора = новый("ДиалогВыбораФайла",МассивАргументов);
КонецЕсли;
Проверено на следующих конфигурациях и релизах:
- 1С:Библиотека стандартных подсистем, редакция 3.1, релизы 3.1.11.392
Вступайте в нашу телеграмм-группу Инфостарт
