Все способы получения системных перечислений на платформах 1С 8.x (включая мобильное приложение) из строки

06.03.25

Разработка - Механизмы платформы 1С

В статье рассматривается вопрос работы с системными приложениями на различных платформах версии 1С 8.х. Рассматриваются способы получения значения по умолчанию или конкретного значения системного перечисления. Для мобильных приложений приведены необходимые комментарии.

При программировании собственной консоли запросов, особенно для экранов смартфонов, и поддержки платформы 1С 8.0 столкнулся со следующими неприятными особенностями старых мобильных платформ:

 

 

Этот баг был выявлен на версии платформы: 

 

 

Поэтому встал вопрос: как получить значение системного перечисления из строки? Для системных перечислений нет описания того, как определить наличие этого перечисления на нужной версии платформы в документации. 

ПРИМЕЧАНИЕ: Статья написана в справочных целях как памятка, и также для того, чтобы закрыть этот не слишком приятный момент в документации. 

По итогу разбора полетов (учитывая многострадальный IOS), получилась следующая таблица основных способов вызова системных перечислений:

 

Способ Достоинства Недостатки

1. Использование внутреннего формата 1С (функции времен 1с 7.7).

Универсально для всех компьютерных платформ Не поддерживается в мобильном приложении
2. Получение значения при помощи конструкции ОписаниеТипов.  Работает везде, включая мобильное приложение. Допускает возврат только значения по умолчанию.
3. Использование оператора Вычислить или Выполнить Работает как на компьютерных платформах, так и на мобильных приложениях. IOS не поддерживает операторы Вычислить или Выполнить
4. Использование функции  ПредопределенноеЗначение Работает везде, включая мобильное приложение. Требует платформы 1с 8.2.9 и выше.

 

Примеры исходного кода первых двух способов:

//Для первого способа:
ЗначениеИзСтрокиВнутр(Значение)); 
//Для второго способа: 
//ОбходРезультатаЗапроса - генерация прямой для древней 1С платформы (мобильная - в первых версиях не был определен).
Попытка
 Массив = новый Массив;
 Массив.Добавить(Тип("ОбходРезультатаЗапроса"));
 ОписаниеТипов1 = новый ОписаниеТипов(Массив);
 Значение =  ОписаниеТипов1.ПривестиЗначение(Неопределено); 
исключение
  Значение = Неопределено;
КонецПопытки;
Сообщить(Значение);

Последние 2 способа удобно объединить в следующую конструкцию:

 //Вызов осуществляется на стороне Сервера для Управляемых форм.  
 Попытка		
		#Если Клиент ИЛИ Сервер ИЛИ ВнешнееСоединение Тогда		
			Значение_тест = Вычислить(НаименованиеПараметра); //Для компьютерных платформ!!!			
		#иначе
			Значение_тест = ПредопределенноеЗначение(НаименованиеПараметра); // Для мобильного телефона
		#КонецЕсли   			
	Исключение
		Значение_тест = Неопределено;
	КонецПопытки;

 

Заключение: Некоторые системные перечисления можно получить при помощи сериализации или функции XMLСтрока, однако приведенные методы позволяют это сделать и с несериализуемыми типами данных.

мобильная платформа Системные перечисления 1с 8.0 1с 8.1 1с 8.2 1с 8.3

См. также

Механизмы платформы 1С Работа с интерфейсом Программист Стажер Платформа 1С v8.3 Бесплатно (free)

Про ООП в 1С и о том, как сделать свой код более кратким и выразительным при помощи использования текучего интерфейса (fluent interface).

03.02.2025    5833    bayselonarrend    126    

59

Механизмы платформы 1С Программист Платформа 1С v8.3 Бесплатно (free)

В платформе 8.3.27 появилась возможность использовать WebSocket-клиент. Давайте посмотрим, как это все устроено и чем оно нам полезно.

14.01.2025    7574    dsdred    57    

98

Механизмы платформы 1С Программист Стажер Платформа 1С v8.3 1C:Бухгалтерия Бесплатно (free)

Эта небольшая статья - некоторого рода шпаргалка по файловым потокам: как и зачем с ними работать, какие преимущества это дает.

23.06.2024    11303    bayselonarrend    21    

162

Механизмы платформы 1С Программист Стажер Платформа 1С v8.3 1C:Бухгалтерия Бесплатно (free)

Пример использования «Сервисов интеграции» без подключения к Шине и без обменов.

13.03.2024    7768    dsdred    18    

82

Механизмы платформы 1С Программист Стажер Платформа 1С v8.3 Бесплатно (free)

Все мы используем массивы в своем коде. Это один из первых объектов, который дают ученикам при прохождении обучения программированию. Но умеем ли мы ими пользоваться? В этой статье я хочу показать все методы массива, а также некоторые фишки в работе с массивами.

24.01.2024    26608    YA_418728146    33    

73
Оставьте свое сообщение