Выполнение модуля в зависимости от номера версии 1С
Добрый день!!!
Пишу обработку, которая должна запускаться на различных версий 1С в легком клиенте.
В ней нужно открыть окно Конструктора запроса.
Для версии 8.2 в толстом клиенте для этого пишу.
Конструктор = Новый КонструкторЗапроса();
Конструктор.ОткрытьМодально()
Для версии 8.3 (начиная с определенной версии) в легком клиенте можно открыть конструктор:
Конструктор = Новый КонструкторЗапроса();
Оповещение = Новый ОписаниеОповещения("ОткрытьКонструкторЗапросаЗавершение", ЭтотОбъект);
Конструктор.Показать(Оповещение);
Хочу, чтобы в зависимости от версии 1С открывался Конструктор тем или другим способом.
Но проблема в том, что при открытии формы в старых версиях выводиться ошибка:
Тип не определен (КонструкторЗапроса)
Конструктор = Новый <<?>>КонструкторЗапроса(ЭлементДерева.ТекстЗапроса); (Проверка: Тонкий клиент)
Пишу обработку, которая должна запускаться на различных версий 1С в легком клиенте.
В ней нужно открыть окно Конструктора запроса.
Для версии 8.2 в толстом клиенте для этого пишу.
Конструктор = Новый КонструкторЗапроса();
Конструктор.ОткрытьМодально()
Для версии 8.3 (начиная с определенной версии) в легком клиенте можно открыть конструктор:
Конструктор = Новый КонструкторЗапроса();
Оповещение = Новый ОписаниеОповещения("ОткрытьКонструкторЗапросаЗавершение", ЭтотОбъект);
Конструктор.Показать(Оповещение);
Хочу, чтобы в зависимости от версии 1С открывался Конструктор тем или другим способом.
Но проблема в том, что при открытии формы в старых версиях выводиться ошибка:
Тип не определен (КонструкторЗапроса)
Конструктор = Новый <<?>>КонструкторЗапроса(ЭлементДерева.ТекстЗапроса); (Проверка: Тонкий клиент)
По теме из базы знаний
- Загрузка документов из Excel в 1С: УПД, ТОРГ-12, отчеты маркетплейсов, заказы, счета, прайсы
- Загрузка данных из ОФД в 1С:БП 3.0, 1С:КА 2.4/2.5, УНФ 3.0 о денежных поступлениях (чеках)
- Модуль "Ответственное хранение" в 1С:УТ 11.5, КА 2.5, ERP 2.5 для фулфилмента FBS / FBO
- Интеграция 1С с маркетплейсами из одного окна: Озон, ВБ, Яндекс, Сбер, Али, ЛаМода - для УНФ, УТ, КА, ERP
- Система управления интеграциями на базе 1С:Шины
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) Надо почитать СП:
Синтаксис (вариант 2):
Новый(<Тип>[, <ПараметрыКонструктора>])
Параметры:
Тип
Имя типа или значение типа Тип
ПараметрыКонструктора
Массив параметров конструктора
Описание:
Оператор позволяет создать значение указанного типа. Допустим только для тех типов, для которых разрешено создание с помощью данного оператора (подробнее см. описание объектов языка).
Для прикладных объектов необходимо использовать функциональную форму оператора Новый (вариант 2), так как при проверке модулей в конфигураторе не определены типы для прикладных объектов.
Если в качестве второго параметра указано значение, отличное от массива, то параметр полностью игнорируется.
Синтаксис (вариант 2):
Новый(<Тип>[, <ПараметрыКонструктора>])
Параметры:
Тип
Имя типа или значение типа Тип
ПараметрыКонструктора
Массив параметров конструктора
Описание:
Оператор позволяет создать значение указанного типа. Допустим только для тех типов, для которых разрешено создание с помощью данного оператора (подробнее см. описание объектов языка).
Для прикладных объектов необходимо использовать функциональную форму оператора Новый (вариант 2), так как при проверке модулей в конфигураторе не определены типы для прикладных объектов.
Если в качестве второго параметра указано значение, отличное от массива, то параметр полностью игнорируется.
я использовал такой код
(это пример)
(это пример)
//определение версии и совместимости
ВерсияПлатформы = ПолучитьВерсиюПлатформы();
...
Если ВерсияПлатформы >= "8.3.08.0" Тогда
Попытка
Дата1 = ТекущаяУниверсальнаяДатаВМиллисекундах();//ТекущаяДата();
МассивРезультатов = лкЗапрос.ВыполнитьПакетСПромежуточнымиДанными();
Дата2 = ТекущаяУниверсальнаяДатаВМиллисекундах();//ТекущаяДата();
Исключение
лкОшибка = ОписаниеОшибки();
//Сообщить(лкОшибка);
Возврат лкОшибка;
КонецПопытки;
лкИмена = ПолучитьИменаТаблиц(лкЗапрос.Текст);
ПоместитьРезультатВХранилище(МассивРезультатов, "Peзультaт", лкИмена);
//ПоместитьВремТабВХранилище_838(лкЗапрос);
Иначе
Если лкЗапрос.МенеджерВременныхТаблиц = Неопределено Тогда
лкЗапрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц();
КонецЕсли;
лкЗапрос.Текст = ЗакоментаритьКоманду(лкЗапрос.Текст,"УНИЧТОЖИТЬ");
Попытка
Дата1 = ТекущаяУниверсальнаяДатаВМиллисекундах();//ТекущаяДата();
МассивРезультатов = лкЗапрос.ВыполнитьПакет();
Дата2 = ТекущаяУниверсальнаяДатаВМиллисекундах();//ТекущаяДата();
Исключение
лкОшибка = ОписаниеОшибки();
//Сообщить(лкОшибка);
Возврат лкОшибка;
КонецПопытки;
ПоместитьРезультатВХранилище(МассивРезультатов, "Peзультaт");
ПоместитьВремТабВХранилище_81(лкЗапрос);
лкЗапрос.МенеджерВременныхТаблиц.Закрыть();
КонецЕсли;
Показать
На самом деле меня интересует не конкретная проблема, а механизм как правильно писать код с учетом изменений вносимых в написании операторов в процессе выхада новых версий.
В данном примере в старых версиях 8.3 не существовала возможность открывать конструктор в легком клиенте, начиная с определенного номера версии эта возможность появилась.
Как исключить код компиляции если версия не поддерживает этот оператор.
В данном примере в старых версиях 8.3 не существовала возможность открывать конструктор в легком клиенте, начиная с определенного номера версии эта возможность появилась.
Как исключить код компиляции если версия не поддерживает этот оператор.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот