Перевод конфигураций на платформе «1С:Предприятие 8.2» на платформу «1С:Предприятие 8.3» без режима совместимости с версией 8.2

1С Разработка

В документе приведена методика по обеспечению совместимости прикладных решений, разработанных на платформе «1С:Предприятие 8.2«, с платформой «1С:Предприятие 8.3«. Этот процесс условно делится на два этапа — Подготовительный и Финальный.

  • Подготовительный этап
    • Конфликт имен свойств
    • Конфликт имен картинок
    • Изменение свойств фиксированной структуры
    • Помещение во временное хранилище несериализуемых значений
    • Пересмотр работы с предопределенными элементами в РИБ
    • Вызов метода «Показать» для реквизитов управляемой формы
    • Максимальная длина имен объектов метаданных
    • Пересмотр форм с элементами, связанными с недоступными командами
    • Отключение режима совместимости в расширениях
  • Финальный этап
    • Переименования методов и свойств
    • Доработка механизмов работы с отборами, условным оформлением, группировками и порядком в динамических списках
    • Запрос с ключевым словом «ИТОГИ ПО ОБЩИЕ», выгруженный в режиме «ОбходРезультатаЗапроса.ПоГруппировкам»
    • Изменения имен классов COM-объектов
    • Отказ от события «НачалоВыбораИзСписка» для полей ввода в режиме выбора из списка
    • Отказ от свойства «КнопкаСпискаВыбора» для полей ввода
    • Изменение типа значения, возвращаемого методом глобального контекста «БезопасныйРежим()»
    • Изменение результата запроса к константам
    • Замена свойства конфигурации «ОсновнаяРоль» на «ОсновныеРоли»
    • Отказ от свойств «Пользователь» и «Пароль» для объекта «ИнтернетПрокси»
    • Поддержка команды «Показать в списке»
    • Пересмотр внешнего вида всех форм
    • Перевести картинки в наборы картинок
    • Изменение возвращаемого значения  СистемнаяИнформация.ВерсияОС
    • Системное перечисление ВариантОткрытияОкна более не доступно
    • Конфликт имен стандартных команд
    • Конфликт имен методов глобального контекста
    • Удалить пустые обработчики оповещения
    • Ключевое слово Экспорт для процедур и функций формы
    • Новое свойство ПолноеИмя объекта ОписаниеПереданногоФайла
    • Отказ от неиспользуемых свойств пользовательских настроек компоновки данных
    • Поле временной таблицы, значение которого NULL, преобразуется в составной тип
  • Поддержка работы конфигураций в ОС Linux и OS X
  • Отказ от всех модальных окон
  • Поддержка веб-клиента

Подготовительный этап

Действия этого этапа рекомендуется выполнить до перехода на «1С:Предприятие 8.3» с отключенным режимом совместимости. Выполнение этих действий не нарушает обратную совместимость – конфигурация может продолжать выпускаться на «1С:Предприятии 8.2» или «1С:Предприятии 8.3» свключенным режимом совместимости с 8.2.

По каждой проблеме несовместимости дается краткая инструкция по выявлению проблемных мест в конфигурации и выполнению адаптации.

Конфликт имен свойств

Нельзя использовать имена переменных, совпадающие с новыми свойствами, которые появились в «1С:Предприятии 8.3«:

  • Новое свойство ЭтотОбъект в управляемых формах и общих модулях.
  • Новые свойства в управляемых формах:
    • АвтоНавигационнаяСсылка,
    • НавигационнаяСсылка,
    • ВертикальнаяПрокрутка,
    • ОписаниеОповещенияОЗакрытии,
    • ПараметрыВыбора.
  • Зарезервированное имя реквизитов, табличных частей объектов (начиная с версии 8.3.13):
    • Представление

Для устранения несовместимости необходимо найти переменные и реквизиты форм с такими названиями и переименовать их.

Поиск реквизитов, табличных частей объектов с именем Представление рекомендуется выполнить посредством проверки конфигурации (Конфигуратор – Конфигурация – Проверка конфигурации) с включенной опцией Проверка логической целостности конфигурации.

Конфликт имен картинок

Нельзя использовать имена картинок, совпадающие с именами из библиотеки картинок. При реструктуризации выдается сообщение о неуникальности имен картинок.

Для устранения несовместимости необходимо выявить картинки с неуникальными именами (провести реструктуризацию в версии 8.3 на копии метаданных) и переименовать их.

Изменение свойств фиксированной структуры

В «1С:Предприятии 8.3» при присвоении значений свойствам фиксированной структуры (ФиксированнаяСтруктура) возникает ошибка «Поле объекта недоступно для записи».

Для устранения несовместимости необходимо:

  • Выявить все места присваивания значений свойствам фиксированной структуры:
    • функциональным тестированием основных сценариев работы;
    • или поиском конструктора Новый ФиксированнаяСтруктура по модулям конфигурации и анализом на предметизменения отдельных свойств созданной структуры;
  • Вместо изменения отдельных свойств фиксированной структуры следует пересоздавать фиксированную структуру целиком или заменить ее использование на аналогичный тип Структура.

Помещение во временное хранилище несериализуемых значений

В «1С:Предприятии 8.3» при помещении во временное хранилище значений, сериализация которых не поддерживается (например, ДокументОбъект.<Имя документа>, СправочникОбъект.<Имя справочника> и пр.), возникает ошибка «Переданное значение не может быть помещено во временное хранилище».

Для устранения несовместимости необходимо:

  • выявить все места помещения значений во временное хранилище (поиском метода глобального контекста ПоместитьВоВременноеХранилище);
  • проверить, что возможна сериализация типов значений объектов, помещаемых во временное хранилище. Для этого необходимо свериться с синтакс-помощником, убедившись, что в группе «Доступность» явно указана фраза «Сериализуется«. При этом следует отличать сериализацию от XDTO-сериализации и XML-сериализации. Например, для типов СправочникОбъект.<Имя справочника> сериализация не поддерживается, хотя поддерживается XDTO-сериализация и XML-сериализация;
  • если во временное хранилище значений помещается несериализуемое значение, следует пересмотреть проектное решение.

Пересмотр работы с предопределенными элементами в РИБ

В «1С:Предприятии 8.3″ в дочерних узлах РИБ предопределенные элементы автоматически не создаются (и не обновляются при изменении в метаданных), а должны быть переданы из главного узла вместе с изменениями конфигурации.

Для устранения несовместимости необходимо:

a) обеспечить загрузку сообщения обмена в подчиненный узел РИБ до выполнения другого прикладного кода, который обращается к получаемым из главного узла предопределенным элементам;

b) в прикладной логике загрузки данных из главного узла (обработчик события ПриПолученииДанныхОтГлавного, правила регистрации объектов) избегать обращений к предопределенным элементам, поскольку нет гарантии, что они уже были загружены из сообщения обмена;

c) код обработчиков обновления ИБ, который обрабатывает предопределенные элементы, не должен выполняться в подчиненных узлах РИБ:

СОВЕТ
При использовании в конфигурации подсистемы «Обмен данными» Библиотеки стандартных подсистем (БСП) версии 2.1.4 и выше требования (а) и (б) снимаются.

Вызов метода «Показать» для реквизитов управляемой формы

В «1С:Предприятии 8.3» для реквизитов управляемых форм с типами ТабличныйДокументГрафическаяСхема и ТекстовыйДокумент при вызове метода Показать() возникает ошибка «Недопустимая операция для реквизита формы».

Для перехода на версию 8.3.6 необходимо найти все места в коде, в которых для реквизитов управляемых форм указанных типов (или их копий «по ссылке») вызывается метод Показать(), и далее:

  • Если документ не выводится в элементах формы, тогда следует отказаться от реквизита формы, а для хранения использовать локальную клиентскую переменную (если это необходимо).
  • Если документ выводится в элементах формы, тогда следует отказаться от метода Показать(), заменив его на:
    • Если требуется активизировать элемент формы — документ, тогда необходимо использовать свойство формы ТекущийЭлемент.
    • Если требуется активизировать страницу окна с документом, тогда необходимо использовать свойство ТекущаяСтраница группы формы с видом Страницы.
    • Если требуется активизировать окно с документом, тогда необходимо вызывать метод формы Активировать.

Максимальная длина имен объектов метаданных

В «1С:Предприятии 8.3» (версия 8.3.7) введено ограничение длины имени объекта метаданных в 80 символов. Это требование предъявляется к новым объектам метаданных и при изменении имени существующих.

При переходе на версию 8.3 рекомендуется найти все объекты метаданных с именами более 80 символов и сократить их.

Подробнее см. параграф «Основные свойства» главы «Объекты конфигурации» в документации «Руководство разработчика».

Пересмотр форм с элементами, связанными с недоступными командами

Начиная с версии 8.3.12,  в режиме 1С:Предприятие на формах отсутствуют элементы (в коллекции Элементы), связанные с командами и реквизитами форм и объектов, которые не доступны в конкретных режимах работы формы и по правам доступа.

Например, в тех случаях, когда форма выступает одновременно как форма списка и как форма выбора (режим выбора устанавливается программно), и на ней размещен элемент формы для стандартной команды Выбрать, то при открытии формы в режиме формы списка и обращении к свойствам этого элемента возникнет ошибка:

Поле объекта не обнаружено (СписокВыбрать)
 Элементы.СписокВыбрать.Видимость  = РежимВыбора;

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

  1. В конфигураторе установить у динамического списка свойство РежимВыбора в Истина.
  2. Обращение к свойствам элементов, связанных со стандартной командой Выбрать, следует делать в коде только после проверки существования элемента в коллекции Элементы.

Для конфигураций, использующих Библиотеку стандартных подсистем, рекомендуется воспользоваться процедурой ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы.
Например, было:

Элементы.СписокВыбрать.Видимость = РежимВыбора;
Элементы.СписокСоздать.Видимость = ПравоДоступа(«Добавление», Метаданные.Справочники.Валюты);

следует удалить код установки видимости, т.к. он более не требуется.

Было:

Элементы.СписокВыбрать.КнопкаПоУмолчанию = РежимВыбора;

стало:

ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, «СписокВыбрать», «КнопкаПоУмолчанию», РежимВыбора);

Отключение режима совместимости в расширениях

В расширениях конфигурации необходимо отключить режим совместимости:Режим совместимости расширения конфигурации: Не использовать;Режим совместимости: Не использовать.

Финальный этап

Данную процедуру необходимо обязательно выполнять непосредственно после перевода разработки конфигурации на «1С:Предприятие 8.3» и отключения режима совместимости. После переключения режима совместимости рекомендуется перезагрузить конфигуратор.

По каждой проблеме дается краткая инструкция по выявлению «проблемных» мест в конфигурации и выполнению перехода.

Переименования методов и свойств

В «1С:Предприятии 8.3» изменены имена свойств и методов некоторых объектов (см. таблицу 1).

Для перехода на версию 8.3 необходимо найти места использования этих свойств и методов и заменить все их использования в конфигурации согласно таблице.

Таблица 1. Переименования методов и свойств в версии 8.3

Что переименованоСтарое наименованиеНовое наименование
Имя свойства Режим использования синхронных вызовов расширений платформы и внешних компонент.РежимИспользованияСинхронныхВызововРасширенийИВнешнихКомпонент.РежимИспользованияСинхронныхВызововРасширенийПлатформыИВнешнихКомпонент.
Свойство управляемой формыЭтаФорма (ThisForm)ЭтотОбъект (ThisObject)
Тип менеджера перерасчетов регистра расчетаРегистрРасчетаПерерасчеты<Имя регистра расчета>ПерерасчетыМенеджер<Имя регистра расчета>
Запись таблицы внешнего источника данных. Изменены только английские именаExternalDataSourceRecordExternalDataSourceTableRecord
Набор записей внешнего источника данных. Изменены только английские именаExternalDataSourceRecordSetExternalDataSourceTableRecordSet
Методы установки и получения рассчитанных итогов 
менеджеров регистров накопления остатков и бухгалтерии
ПолучитьПериодРассчитанныхИтогов (GetTotalsPeriod)ПолучитьМаксимальныйПериодРассчитанныхИтогов (GetMaxTotalsPeriod)
УстановитьПериодРассчитанныхИтогов (SetTotalsPeriod)УстановитьМаксимальныйПериодРассчитанныхИтогов (SetMaxTotalsPeriod)
Имя свойства объекта, описывающего тестируемые элементы формыЗаголовок (Title)ТекстЗаголовка (TitleText)
Элементы системного перечисления ОтображениеОбычнойГруппыЛиния (Line)СлабоеВыделение (WeakSeparation)
Отступ (Margin)ОбычноеВыделение (NormalSeparation)
РамкаГруппы (GroupBox)СильноеВыделение (StrongSeparation)
Методы получения и установки заголовка окна клиентского приложенияПолучитьЗаголовокПриложения (GetApplicationCaption)ПолучитьЗаголовокКлиентскогоПриложения (GetClientApplicationCaption),
УстановитьЗаголовокПриложения (SetApplicationCaprion)УстановитьЗаголовокКлиентскогоПриложения (SetClientApplicationCaption)
Свойство поля вводаШиринаСпискаВыбора (ListSelWidth)ШиринаВыпадающегоСписка (DropListWidth)
Метод Выбрать() объектов РезультатЗапроса и ВыборкаИзРезультатаЗапроса
Изменены только английские имена
ChooseSelect
Имя метода глобального контекста. Старый метод поддерживается для совместимости.Найти (Find)СтрНайти (StrFind)
Имя параметра события ОбработкаНавигационнойСсылки.НавигационнаяСсылка (URL)НавигационнаяСсылкаФорматированнойСтроки (FormattedStringURL)
Имя параметра событий АвтоПодбор и ОкончаниеВводаТекста для полей ввода.ПараметрыПараметрыПолученияДанных
Ключ отбора, используемого в методах ПолучитьИдентификаторы и ПолучитьЗаголовки объекта ИнтернетПочта.ПолученОтветНедавние
Имя метода объекта СредстваГеопозиционирования (мобильная платформа). Изменены только английские имена.GetMostAcurateProviderGetMostAccurateProvider
Свойство табличного документа.КодЯзыкаМакета (TemplateLanguageCode)КодЯзыка (LanguageCode)
Имя параметра, содержащего имя создаваемого каталога в методе НачатьСозданиеКаталога().КаталогИмяКаталога
8.3.9
Наименование системного перечисления, содержащего варианты выравнивания элементов и их заголовков.ВыравниваниеЭлементовИЗаголовковВариантВыравниванияЭлементовИЗаголовков
Значение колонки Назначение для таблицы ExtensionInfo в таблице значений, возвращаемой методом ПолучитьСтруктуруХраненияБазыДанных().Основная (Main)ИнформацияОРасширенияхКонфигурации (ConfigurationExtensionsInformation)
Значение колонки Назначение для таблицы ODataSettings в таблице значений, возвращаемой методом ПолучитьСтруктуруХраненияБазыДанных().Основная (Main)НастройкиСтандартногоИнтерфейсаOData (StandardODataInterfaceOptions)
8.3.10
Методы загрузки таблицы стилей XSL объекта ПреобразованиеXSL (XSLTransform).ЗагрузитьИзСтроки()ЗагрузитьТаблицуСтилейXSLИзСтроки(LoadXSLStylesheetFromString)
ЗагрузитьИзУзла()ЗагрузитьТаблицуСтилейXSLИзУзла(LoadXSLStylesheetFromNode)
ЗагрузитьИзФайла()ЗагрузитьТаблицуСтилейXSLИзФайла(LoadXSLStylesheetFromFile)
Методы управления основным окном клиентского приложения.УстановитьКраткийЗаголовокПриложенияКлиентскоеПриложение.УстановитьКраткийЗаголовок(ClientApplication.SetShortCaption)
ПолучитьКраткийЗаголовокПриложенияКлиентскоеПриложение.ПолучитьКраткийЗаголовок(ClientApplication.GetShortCaption)
УстановитьЗаголовокКлиентскогоПриложенияКлиентскоеПриложение.УстановитьЗаголовок(ClientApplication.SetCaption)
ПолучитьЗаголовокКлиентскогоПриложенияКлиентскоеПриложение.ПолучитьЗаголовок(ClientApplication.GetCaption)
ТекущийВариантОсновногоШрифтаКлиентскогоПриложенияКлиентскоеПриложение.ТекущийВариантОсновногоШрифта(ClientApplication.CurrentBaseFontVariant)
ТекущийВариантИнтерфейсаКлиентскогоПриложенияКлиентскоеПриложение.ТекущийВариантИнтерфейса(ClientApplication.CurrentInterfaceVariant)
8.3.12
Системное перечисление.ОриентацияМетокДиаграммыОриентацияПодписейДиаграммы
Свойства объекта ОбластьПостроенияДиаграммы.ОтображатьШкалуОтображатьШкалы
ЛинииШкалыЛинииШкал
ЦветШкалыЦветШкал
Cвойства и методы объекта Диаграмма.ПалитраЦветовОписаниеПалитрыЦветов.ПалитраЦветов
ЦветНачалаГрадиентнойПалитрыОписаниеПалитрыЦветов.ЦветНачалаГрадиентнойПалитры
ЦветКонцаГрадиентнойПалитрыОписаниеПалитрыЦветов.ЦветКонцаГрадиентнойПалитры
МаксимальноеКоличествоЦветовГрадиентнойПалитрыОписаниеПалитрыЦветов.МаксимальноеКоличествоЦветовГрадиентнойПалитры
ПолучитьПалитру()ОписаниеПалитрыЦветов.ПолучитьПалитру()
УстановитьПалитру()ОписаниеПалитрыЦветов.УстановитьПалитру()
ОтображатьПодписиШкалыСерииШкалаСерий.ПоложениеПодписейШкалы
ОтображатьПодписиШкалыТочекШкалаТочек.ПоложениеПодписейШкалы
Cвойства объекта ОбластьПостроенияДиаграммы.ОтображатьПодписиШкалыЗначенийШкалаЗначений.ПоложениеПодписейШкалы
ОтображатьЛинииЗначенийШкалыШкалаЗначений.ОтображениеЛинийСетки
ФорматШкалыЗначенийШкалаЗначений.ФорматПодписей
ОриентацияМетокШкалаТочек.ОриентацияПодписей
8.3.12
Свойство объекта Шрифт.ЖирныйЖирный
8.3.14
Обработчик события поля табличного документа.ПриАктивизацииОбластиПриАктивизации
Имя типа формы.УправляемаяФормаФормаКлиентскогоПриложения

Кроме того, начиная с версии 8.3.12,  для объектов ДиаграммаДиаграммаГантаСводнаяДиаграмма свойства ОтображатьЛегенду и ОтображатьЗаголовок устарели. Вместо них следует использовать свойства расположения объектов:

  1. ОбластьЛегендыДиаграммы
  2. ОбластьЛегендыДиаграммыГанта
  3. ОбластьЛегендыСводнойДиаграммы
  4. ОбластьПостроенияДиаграммы
  5. ОбластьПостроенияДиаграммыГанта
  6. ОбластьПостроенияСводнойДиаграммы
  7. ОбластьЗаголовкаДиаграммы
  8. ОбластьЗаголовкаДиаграммыГанта
  9. ОбластьЗаголовкаСводнойДиаграммы.

В версии 8.3.13 устарело свойство АдресаУведомленияОДоставке объекта ИнтернетПочтовоеСообщение. Вместо него следует использовать свойство УведомитьОПрочтении.

Доработка механизмов работы с отборами, условным оформлением, группировками и порядком в динамических списках

В «1С:Предприятии 8.3» для работы с отборами, условным оформлением, группировками и порядком в динамических списках используются механизмы системы компоновки данных. Подробнее см. главу «Система компоновки данных» в документации «Руководство разработчика».

Отборы и элементы условного оформления, устанавливаемые в конфигураторе в редакторе настроек динамического списка (далее — в конфигураторе), помещаются в коллекцию КомпоновщикНастроек.Настройки, а устанавливаемые программно через свойства «.Отбор» и «.УсловноеОформление» – в коллекцию КомпоновщикНастроек.ФиксированныеНастройки. Таким образом:

  • ДинамическийСписок.Отбор соответствует свойству ДинамическийСписок.КомпоновщикНастроек.ФиксированныеНастройки.Отбор,
  • ДинамическийСписок.УсловноеОформление соответствует свойству ДинамическийСписок.КомпоновщикНастроек.ФиксированныеНастройки.УсловноеОформление.

Например, схема работы свойства ДинамическийСписок.Отбор и настроек, выполняемых в конфигураторе:

При этом если отбор по одному и тому же полю одновременно присутствует в коллекциях Настройки.Отбор и ФиксированныеНастройки.Отбор, то возникает ошибка времени выполнения «Невозможно применить фиксированные настройки. Пересекаются элементы отбора».

В отличие от отборов и условного оформления, свойство Порядок соответствует свойству КомпоновщикНастроек.Настройки.Порядок. Когда порядок выводится в пользовательские настройки (в конфигураторе установлен флажок «Включать в пользовательские настройки«), тогда Порядок используется только как значение по умолчанию (т. е. изменения не применятся до тех пор, пока пользователь не нажмет «Все действия» — «Установить стандартные настройки«). Это следует учитывать при программной работе с порядком.

В отличие от остальных, свойство Группировка не связано напрямую с новыми коллекциями, однако имеет аналоги: КомпоновщикНастроек.ФиксированныеНастройки.Структура и КомпоновщикНастроек.Настройки.Структура. Группировки, программно добавленные через свойство Группировка, отключаются, если пользователь перенастроил состав группировок либо если заполнено свойство КомпоновщикНастроек.Настройки.Структура.

Для перехода на версию 8.3 необходимо найти все места установки отборов, условного оформления, группировок и порядка в динамических списках, которые выполняются программно из кода и в конфигураторе с помощью редактора формы (см. Настройка списка в свойствах динамического списка).

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

  • для отборов, условного оформления и группировок следует перенести создание настроек и работу с ними в программный код и использовать свойства динамического списка ОтборУсловноеОформление и Группировка;
  • для порядка следует исключить всю коллекцию из состава пользовательских настроек в конфигураторе (сняв флажок Включать в пользовательские настройки) или программно (установив пустую строку в свойстве Порядок.ИдентификаторПользовательскойНастройки).

В тех случаях, когда необходимо задать настройки динамического списка по умолчанию, которые пользователи смогут изменять при своей работе с помощью команды Все действия — Настроить список (либо в предусмотренной группе элементов формы для редактирования пользовательских настроек), нужно сделать следующее:

  • для отборов, условного оформления и группировок, которые установились программно, использовать соответствующие свойства коллекции КомпоновщикНастроек.Настройки;
  • для порядка и настроек в конфигураторе ничего предпринимать не требуется.

В тех случаях, когда для настройки динамического списка ранее были предусмотрены собственные элементы управления на форме (например, поля с быстрыми отборами сверху списка, команды для быстрой смены группировки и пр.), следует выбрать один из двух вариантов:

  • для задействования новых возможностей платформы перенести создание настроек в конфигуратор (см. Настройка списка в свойствах динамического списка) и задать свойство Группа пользовательских настроек таблицы формы, связанной с этим динамическим списком;
  • для сохранения текущего поведения перенести создание настроек в программный код и использовать свойства динамического списка Отбор и УсловноеОформление. А для сохранения текущего поведения с группировками и порядком, следует:
    • при программной работе использовать свойство КомпоновщикНастроек.ПользовательскиеНастройки, если пользователи должны иметь возможность перенастраивать группировки и порядок с помощью команды Все действия — Настроить список;
    • в противном случае снять флажок Включать в пользовательские настройки в свойствах группировок динамического списка в конфигураторе и работать в коде со свойствами Группировка и Порядок.

Запрос с ключевым словом «ИТОГИ ПО ОБЩИЕ», выгруженный в режиме «ОбходРезультатаЗапроса.ПоГруппировкам»

Запрос, в котором указано ключевое слово ИТОГИ ПО ОБЩИЕ и который выгружен в режиме ОбходРезультатаЗапроса.ПоГруппировкам в «1С:Предприятии 8.3», возвращает результат, отличающийся от версии 8.2. Узлы группировок в версии 8.2 располагались на одном уровне с общим итогом, в версии 8.3 они будут вложены в общий итог, который располагается в корне дерева значений.

Для перехода на версию 8.3 необходимо:

  • выявить все запросы с ИТОГИ ПО ОБЩИЕ, выгружаемые в режиме ОбходРезультатаЗапроса.ПоГруппировкам;
  • пересмотреть обработку дерева значений, перенеся обход строк с группировками внутрь обхода строки с общим итогом.

Пример запроса и выгрузки результата, которые потребуют пересмотра:

Изменения имен классов COM-объектов

В «1С:Предприятии 8.3» изменено имя класса COM-объектов – для COM-соединителя вместо «V82.COMConnector» используется «V83.COMConnector», а вместо «V82.Application» используется «V83.Application».

Для устранения несовместимости необходимо заменить все вхождения старых имен на новые.

СОВЕТ
При использовании «Библиотеки стандартных подсистем» рекомендуется использовать универсальную функцию ОбщегоНазначения.ИмяCOMСоединителя().

Отказ от события «НачалоВыбораИзСписка» для полей ввода в режиме выбора из списка

В «1С:Предприятии 8.3» у поля ввода не вызывается НачалоВыбораИзСписка. Это связано с появлением нового свойства поля ввода КнопкаВыпадающегоСписка, которое позволяет по кнопке выводить выпадающий список, формирующийся автоматически. Подробнее см. документацию «Руководство разработчика».

Для устранения несовместимости необходимо найти поля ввода с обработчиком НачалоВыбораИзСписка и перенести его код в другие обработчики согласно критериям:

  • код по добавлению элементов в список выбора следует разместить в обработчике формы ПриСозданииНаСервере. Кроме того, если состав списка выбора зависит от значений других полей, то код по изменению элементов списка выбора следует вызывать в обработчиках изменения соответствующих полей, например при помощи обработчиков ПриИзменении;
  • реализацию кода, не связанного с заполнением списка выбора, необходимо пересмотреть с использованием тех средств, которые предоставляет платформа «1С:Предприятие» версии 8.3.3.

СОВЕТ
Для значений ссылочного типа рекомендуется заполнять свойство Представление элемента списка значений во избежание лишних серверных вызовов.

Отказ от свойства «КнопкаСпискаВыбора» для полей ввода

В «1С:Предприятии 8.3» у поля ввода отсутствует свойство КнопкаСпискаВыбора. Вместо него теперь следует использовать новое свойство КнопкаВыпадающегоСписка. Подробнее см. документацию «Руководство разработчика».

Для устранения несовместимости необходимо при помощи приложенного отчета найти поля ввода, у которых в свойстве КнопкаСпискаВыбора было установлено значение «Да«, и явно установить в свойстве КнопкаВыпадающегоСписка значение «Да» в том случае, если кнопка выпадающего списка не выводится при значении «Авто«.

Изменение типа значения, возвращаемого методом глобального контекста «БезопасныйРежим()»

В «1С:Предприятии 8.3» метод глобального контекста БезопасныйРежим() возвращает тип Строка, если безопасный режим был установлен с указанием имени профиля безопасности.

Для устранения несовместимости необходимо найти все места использования метода БезопасныйРежим(), в которых результат неявно преобразовывался к типу Булево, и исправить на код с явным сравнением результата со значением Ложь. Таким образом, при установленном профиле безопасности код будет выполняться так же, как и в безопасном режиме.

Например, было:

Стало:

Изменение результата запроса к константам

В случае, если константа хранит значение типа ХранилищеЗначенияУникальныйИдентификатор или ВнешнийИсточникДанныхТаблицаСсылка, обращение к полю Значение таблицы константы, при обработке выборки из запроса к этой таблице, возвращает значение соответствующего типа.

Замена свойства конфигурации «ОсновнаяРоль» на «ОсновныеРоли»

В «1С:Предприятии 8.3» у объекта ОбъектМетаданных: Конфигурация отсутствует свойство ОсновнаяРоль (тип ОбъектМетаданных: Роль). Вместо него теперь следует использовать новое свойство ОсновныеРоли (тип КоллекцияЗначенийСвойстваОбъектаМетаданных).

Для устранения несовместимости необходимо при помощи приложенного отчета найти места обращения к свойству ОсновнаяРоль и выполнить переход на свойство ОсновныеРоли.

Например, было:

Стало:

Отказ от свойств «Пользователь» и «Пароль» для объекта «ИнтернетПрокси»

В «1С:Предприятии 8.3» у объекта ИнтернетПрокси отсутствуют свойства Пользователь и Пароль. Эти параметры теперь следует передавать в методе Установить() а читать при помощи новых методов Пользователь() и Пароль().

Для устранения несовместимости необходимо найти все места работы с объектом ИнтернетПрокси, в которых использовались свойства Пользователь и Пароль, и исправить их:

  • Если код изменял свойства Пользователь и Пароль, тогда соответствующие значения следует передавать в методе Установить().
  • Если код читал свойства Пользователь и Пароль, тогда следует использовать новые методы Пользователь() и Пароль().

СОВЕТ
При использовании конфигурации «Библиотека стандартных подсистем» для получения объекта ИнтернетПрокси рекомендуется использовать программный интерфейс подсистемы «Получение файлов из интернета».

Поддержка команды «Показать в списке»

В «1С:Предприятии 8.3» в формах всех ссылочных объектов предусмотрена стандартная команда «Показать в списке». Эта команда выводится автоматически, но для некоторых списков может не срабатывать.

Для устранения несовместимости необходимо провести анализ форм списков ссылочных объектов метаданных:

  • Если для объекта метаданных используется несколько форм списков, тогда в его модуле менеджера необходимо определить событие ОбработкаПолученияФормы, в котором зачитать значение параметра ТекущаяСтрока и, если он не пустой, уточнить какую форму списка следует использовать для отображения этой ссылки.
  • Если в форме списка используются собственные отборы, тогда в модуле формы следует определить событие ОбработкаПерехода, в котором либо очищать отборы, либо устанавливать их таким образом, чтобы они не скрывали выделенный элемент списка (ссылка элемента передается в параметре ОбъектПерехода).

Подробнее про эти события см. главу «Формы» в документации «Руководство разработчика».

Пересмотр внешнего вида всех форм

В «1С:Предприятии 8.3» (версия 8.3.7) изменился механизм отображения элементов управляемой формы. В частности, исчезло свойство ШиринаПодчиненныхЭлементов, но появились свойства АвтоМаксимальнаяШиринаМаксимальнаяШиринаАвтоМаксимальнаяВысотаМаксимальнаяВысотаОбъединенная и другие.

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

Подробнее про эти свойства см. параграф «Правила размещения элементов формы» главы «Формы» в документации «Руководство разработчика».

Перевести картинки в наборы картинок

Для возможности масштабирования картинок управляемой формы в интерфейсе Такси на платформе «1С:Предприятие 8.3» версии 8.3.10 и выше рекомендуется все картинки в конфигурации перевести в наборы картинок. Для этого необходимо выполнить следующие действия:
Сделать несколько вариантов картинки в размерах для масштаба в 85, 100, 125, 150, 175, 200, 300 и 400 %%, так же вариант для приложения в интерфейсе 8.2 и 8.2 (обычное приложение), если предусмотрены эти режимы работы. 
Поместить картинку в zip-архив. 
Включить в архив файл manifest.xml с описанием соответствия размеров и типов экрана.
Загрузить zip-архив в конфигурацию как картинку.
Пример manifest.xml для набора из картинок:

Изменение возвращаемого значения  СистемнаяИнформация.ВерсияОС

На платформе «1С:Предприятие 8.3» версии 8.3.10 изменено представление операционной системы Windows, начиная с версии Vista и далее, в свойстве СистемнаяИнформация.ВерсияОС. Текст свойства содержит пользовательское представление названия операционной системы в дополнение к технической информации (версия, номер сборки и т.д.).
Необходимо пересмотреть места использования данного свойства.
К примеру, для Windows 7 значения свойства «ВерсияОС» будет «Microsoft Windows 7 version 6.1 Service Pack 1 (Build 7601)» вместо «version 6.1 Service Pack 1 (Build 7601)».

Системное перечисление ВариантОткрытияОкна более не доступно

В тонком и веб-клиентах на платформе «1С:Предприятие 8.3» версии 8.3.10 стало невозможно открыть форму в отдельном окне при работе в режиме интерфейса В закладках.
Игнорируется указание варианта открытия окна (параметр Окно) при использовании методов ОткрытьФорму(), ПолучитьФорму(), а также в значении свойства структуры ПараметрыВыполненияКоманды.Окно с помощью системного перечисления ВариантОткрытияОкна.
Необходимо найти все места использования системного перечисления ВариантОткрытияОкна и пересмотреть код с отказом от его использования.
В большинстве случаев такие формы можно перевести на открытие в режиме блокирования окна владельца или независимо (что технически не приводит к открытию отдельного окна в веб-браузере, но визуально будет выглядеть для пользователя так же, как открытие отдельного окна).

Конфликт имен стандартных команд

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

Команды с конфликтующими имена выявляются проверкой конфигурации. Такие команды в конфигурации следует переименовать.

Конфликт имен методов глобального контекста

Начиная с версии 8.3.12, реализованы новые методы глобального контекста, которые могут совпадать по имени с существующими функциями в коде конфигурации:

  1. ПроверитьБит
  2. ПроверитьПоБитовойМаске
  3. УстановитьБит
  4. ПобитовоеИ
  5. ПобитовоеИли
  6. ПобитовоеНе
  7. ПобитовоеИНе
  8. ПобитовоеИсключительноеИли
  9. ПобитовыйСдвигВлево
  10. ПобитовыйСдвигВправо

Необходимо выполнить проверку конфигурации с синтаксическим контролем модулей по предметам: «Тонкий клиент», «Веб-клиент», «Сервер», «Внешнее соединение», «Внешнее соединение (вариант клиент-сервер)». Исправить все найденные ошибки вида «Процедура или функция с указанным именем уже определена» путем переименования функций в конфигураторе.

Удалить пустые обработчики оповещения

Ранее для некоторых асинхронных клиентских методов платформы требовалось обязательное создание обработчиков оповещения, указывая их в конструкторе объекта ОписаниеОповещения. Начиная с версии 8.3.12,  в тех случаях, когда реальная обработка результата не требовалась и были созданы пустые обработчики оповещения, их рекомендуется удалить.

Для этого ребуется выполнить проверку конфигурации в режиме «Логическая проверка модулей – Поиск пустых обработчиков». Удалить найденные пустые обработчики и исправить конструктор ОписаниеОповещения.

Например, было:

Оповещение = Новый ОписаниеОповещения(«ОткрытьПроводникЗавершение», ЭтотОбъект);
НачатьЗапускПриложения(Оповещение, «explorer.exe /select, «»» + ИмяФайла + «»»»);


Процедура ОткрытьПроводникЗавершение (КодВозврата, Контекст) Экспорт
  …
КонецПроцедуры

стало:

Оповещение = Новый ОписаниеОповещения;
НачатьЗапускПриложения(Оповещение, «explorer.exe /select, «»» + ИмяФайла + «»»»);

Ключевое слово Экспорт для серверных процедур и функций формы

Начиная с версии 8.3.13 в определении серверных процедур и функций формы, вызываемых из общих модулей, следует добавить ключевое слово Экспорт. Такая потребность возникает при встраивании подключаемых механизмов в произвольные формы конфигурации, которые предполагают выполнение контекстного серверного вызова в форме. Например, для изменения состава реквизитов формы или получения настроек компоновки данных.
Большую часть случаев возможно выявить посредством глобального поиска по подстроке «.Подключаемый». Далее проанализировать вызовы найденных процедур и функций с директивой компиляции &НаСервере.

Новое свойство ПолноеИмя объекта ОписаниеПереданногоФайла

Новое свойство ПолноеИмя объекта ОписаниеПереданногоФайла, содержит полный путь к файлу, а свойство Имя – только краткое имя файла (начиная с версии 8.3.13). При этом в веб-клиенте значение свойства ПолноеИмя пустое.

Необходимо выполнить глобальный поиск подстрок НачатьПолучениеФайлов( и НачатьПомещениеФайлов(. Проанализировать реализации обработчиков оповещения и в случае пустого значения свойства ПолноеИмя, использовать свойство Имя:

Процедура ПриПолученииФайлов(ПолученныеФайлы, ДополнительныеПараметры) Экспорт
 Для Каждого ПолученныйФайл Из ПолученныеФайлы Цикл
  ИмяФайла = ?(ЗначениеЗаполнено(ПолученныйФайл.ПолноеИмя), ПолученныйФайл.ПолноеИмя, ПолученныйФайл.Имя);
 КонецЦикла;
КонецПроцедуры

СОВЕТ
При использовании БСП рекомендуется применять процедуры СохранитьФайлы и ЗагрузитьФайлы общего модуля ФайловаяСистемаКлиент.

Отказ от неиспользуемых свойств пользовательских настроек компоновки данных

Начиная с версии 8.3.13, не допустимо чтение и запись значений следующих свойств пользовательских настроек компоновки данных:

Выбор, ЗначенияВложенныхПараметров, Идентификатор, Имя, ИспользоватьВГруппировке, ИспользоватьВЗаголовке, ИспользоватьВЗаголовкеПолей, ИспользоватьВИерархическойГруппировке, ИспользоватьВОбщемИтоге, ИспользоватьВОтборе, ИспользоватьВПараметрахобъекта, Колонки, ЛевоеЗначение, Отбор, Параметр (только при попытке установить значение свойства), ПараметрыВывода, Поля, ПоляГруппировки, Порядок, Представление, ПредставлениеПользовательскойНастройки Применение, РежимОтображенияобъекта, Родитель, Серии, Состояние, Строки, Структура, ТипГруппы, Точки, УсловноеОформление.

Рекомендуется выполнить глобальный поиск по подстроке «.ПользовательскиеНастройки«. После проанализировать найденные места на предмет обращения к неиспользуемым свойствам, выполнив одно из следующих действий:

  • Заменить на обращение к свойствам основных настроек.
  • При использовании метода ЗаполнитьЗначенияСвойств:

ЗаполнитьЗначенияСвойств(<Приемник>, ЭлементПользовательскойНастройки);
ЗаполнитьЗначенияСвойств(ЭлементПользовательскойНастройки, <Источник>);

указать явно заполняемые свойства:

ЗаполнитьЗначенияСвойств(<Приемник>, ЭлементПользовательскойНастройки, «Использование, ВидСравнения, ПравоеЗначение»);
ЗаполнитьЗначенияСвойств(ЭлементПользовательскойНастройки, <Источник>, «Значение»);

Например, в БСП в форме УсловияОтборовОтчета хранилища настроек ХранилищеВариантовОтчетов, строка:

ЗаполнитьЗначенияСвойств(Строка, ЭлементПользовательскойНастройки);

заменена на:

ЗаполнитьЗначенияСвойств(Строка, ЭлементОсновнойНастройки, «Представление, ПредставлениеПользовательскойНастройки»);
Строка.ВидСравнения = ЭлементПользовательскойНастройки.ВидСравнения;

Поле временной таблицы, значение которого NULL, преобразуется в составной тип

Рекомендуется провести анализ использования полей временных таблиц, которые могут принимать NULL и применить функцию языка запросов ЕСТЬNULL().

Например, на ERP 2.0.10.51 была зарегистрирована ошибка (00-00192919):

  • В тексте запроса в функции ТекстЗапросаРеквизитыСчетовФактурПостановление735КнигаПродаж общего модуля УчетНДСПереопределяемый определяется временная таблица ВТ_ЗаписиКнигиПродажПоДаннымПервичныхДокументов. В ней выбирается значение NULL для поля СчетФактураДокумент.
  • Однако, ниже для формирования таблицы ВТ_ТаблицаСчетаФактурыДокументы используется выборка из этой таблицы и индексируется данное поле (со значением NULL).

Поддержка работы конфигураций в ОС Linux и OS X

В случае, если планируется поддержать работоспособность конфигурации в ОС Linux и OS X, необходимо выявить механизмы, которые не работают в ОС Linux и OS X (согласно описанию ниже). По каждому из них принять решение о том, является ли он ключевым для прикладного решения или второстепенным (вспомогательным, обслуживающим).

Затем на первом этапе:

  • корректно отключить в ОС Linux и OS X второстепенные механизмы;
  • для ключевых механизмов — задействовать возможности платформы 8.3 по унификации работы на различных операционных системах.

На втором этапе задействовать возможности платформы 8.3 по унификации работы на различных операционных системах и для второстепенных механизмов, ранее отключенных на первом этапе.

Скрыть или отключить механизмы в, которые рассчитаны только на работу в ОС Windows

Выявить механизмы, которые не работают в ОС Linux и OS X, согласно списку ограничений клиентского приложения, работающего под ОС Linux и OS X:

  • не поддерживается технология COM и весь перечень возможностей, связанных с этой технологией:
    • не поддерживается работа с объектом COMОбъект;
    • запуск клиента «1С:Предприятия» в режиме Automation-сервера;
    • внешние компоненты, созданные с использованием COM-технологии;
  • не поддерживается работа с объектом Почта;
  • не поддерживается механизм поставки конфигурации;
  • не поддерживается использование метафайлов Windows (WMF и EMF).

Далее либо скрыть команды этих механизмов из командного интерфейса, либо (если скрыть невозможно), выводить сообщение вида «<Операция> доступна только при работе в ОС Windows».

Например:

СОВЕТ
При использовании «Библиотеки стандартных подсистем» рекомендуется использовать универсальные функции ЭтоLinuxКлиент()ЭтоWindowsКлиент() и ЭтоOSXКлиент() из общего модуля ОбщегоНазначенияКлиентСервер.

Элемент управления «ПолеHTMLДокумента» и поле формы вида «Поле HTML документа»

Внешний вид ПоляHTMLДокумента может отличаться в зависимости от ОС, в которой запущено клиентское приложение. Это связано с тем, что в OC Linux и OS X вывод реализован на основе библиотеки WebKit вместо Internet Explorer.

Учесть, что внешний вид и объектная модель HTML-документа (DOM-модель), доступ к которому осуществляется с помощью свойства ПолеHTMLДокумента.Документ, могут отличаться от таковых при работе в клиентском приложении, работающего на ОС Windows.

  • Задействовать только стандартные элементы DOM-модели, которые доступны во всех вариантах работы.
  • При подготовке HTML содержимого ориентироваться на стандарты — не следует использовать специфичные для конкретного браузера методы и свойства.

Задействовать возможности платформы «1С:Предприятие 8.3» по унификации работы в различных операционных системах

Аналоги COM-технологии

В ряде случаев использование COM-технологий можно перевести на механизмы «1С:Предприятия 8.3«:

  • для администрирования кластера серверов «1С:Предприятия» следует использовать сервер администрирования (ras) и утилиту администрирования (rac). При работе в OS X утилиты rac и ras недоступны.
  • для получения путей к рабочим каталогам следует использовать методы глобального контекста РабочийКаталогДанныхПользователя()КаталогДокументов()КаталогВременныхФайлов().

В остальных случаях следует рассмотреть альтернативы COM-технологии, работающие в ОС Linux и OS X, например технологию создания внешних компонентов Native API.

Подробнее см. главу «Внешние компоненты» в документации «Руководство разработчика».

Аналоги объекта «Почта»

Рассмотреть альтернативные варианты:

  • по переводу механизмов, работавших с объектом Почта, на объект ИнтернетПочта;
  • по разработке внешних компонент для ОС Linux и OS X, работающих с установленными почтовыми клиентами в ОС Linux и OS X.

Аналог метафайлов Windows

Заменить картинки в формате WMF и EMF, включенные в состав конфигурации, на растровые, например PNG или JPG.

Отказ от всех модальных окон

В платформе «1С:Предприятие 8.3» появилась возможность полностью отказаться от модальных методов, заменив их на блокирующие, что позволит улучшить отзывчивость интерфейса и повысить удобство работы в закладочном режиме.

Данная процедура является обязательной после установки свойства конфигурации «Режим использования модальности» в «Не использовать«.

Следует найти все вызовы модальных методов и согласно таблице 2 заменить их немодальными методами с блокированием окна владельца или всего интерфейса.

Таблица 2. Модальные и немодальные методы в версии 8.3

Модальный методНемодальный метод
Глобальный контекст
ВопросПоказатьВопрос
ПредупреждениеПоказатьПредупреждение
ОткрытьЗначениеПоказатьЗначение
ВвестиДатуПоказатьВводДаты
ВвестиЗначениеПоказатьВводЗначения
ВвестиСтрокуПоказатьВводСтроки
ВвестиЧислоПоказатьВводЧисла
УстановитьВнешнююКомпонентуНачатьУстановкуВнешнейКомпоненты
УстановитьРасширениеРаботыСФайламиНачатьУстановкуРасширенияРаботыСФайлами
УстановитьРасширениеРаботыСКриптографиейНачатьУстановкуРасширенияРаботыСКриптографией
ПоместитьФайлНачатьПомещениеФайла
ОткрытьФормуМодальноОткрытьФорму
ДиалогРедактированияСтандартногоПериода
РедактироватьПоказать
КонструкторФорматнойСтроки
ОткрытьМодальноПоказать
ДиалогРасписанияРегламентногоЗадания
ОткрытьМодальноПоказать
ДиалогВыбораШрифта
ВыбратьПоказать
ДиалогВыбораЦвета
ВыбратьПоказать
ОбработкаРасшифровкиКомпоновкиДанных
ВыбратьДействиеПоказатьВыборДействия
СписокЗначений
ОтметитьЭлементыПоказатьОтметкуЭлементов
ВыбратьЭлементПоказатьВыборЭлемента
УправляемаяФорма
ВыбратьИзМенюПоказатьВыборИзМеню
ВыбратьИзСпискаПоказатьВыборИзСписка
ОткрытьМодальноОткрыть

Параметры новых немодальных методов соответствуют параметрам модальных методов, за одним исключением:

  • в состав параметров включен параметр ОписаниеОповещенияОЗавершении, указывающий, куда возвращать результат выбора.

Рассмотрим далее на примерах основные приемы, которые можно использовать для перехода к немодальным методам.

Пример перевода метода глобального контекста «ОткрытьФормуМодально на ОткрытьФорму»

Необходимо выявить все случаи использования метода глобального контекста ОткрытьФормуМодально. Затем выполнить замену модального метода на аналогичный ему немодальный метод ОткрытьФорму. Для этого необходимо:

  • установить у открываемой формы свойство РежимОткрытияОкна в значение Блокировать окно владельца или Блокировать весь интерфейс:
    • если форма подразумевает несколько сценариев открытия — и как блокирующая, и как независимая, то свойство формы РежимОткрытияОкна необходимо устанавливать в Независимый и передавать режим открытия в параметрах методов ОткрытьФормуи Открыть;
  • если открываемая форма возвращает результат в вызывающую форму, тогда потребуется:
    • передавать объект ОписаниеОповещения в параметрах методов ОткрытьФорму и Открыть;
    • разделить алгоритм работы с формой логически на две части: «Подготовка к открытию формы» и «Обработка результата работы формы». Пример разделения алгоритма:

В форме-владельце (было):

В форме-владельце (стало):

Исключение составляют редкие случаи, когда выполнение кода должно быть приостановлено до момента получения результата работы формы и когда алгоритм логически нельзя разбить на две части «Подготовка к открытию формы» и «Обработка результата работы формы»:

  • когда форма открывается модально в обработчиках глобального контекста — при запуске или завершении работы с программой;
  • когда диалог открывается в обработчиках событий элементов формы, при этом СтандартнаяОбработка остается Истина;
  • в других случаях, когда открываемая модальная форма возвращает результат и вызывающей формы не предусмотрено.

В таких случаях рекомендуется полностью перепроектировать взаимодействие с пользователем.

Пример перевода вопроса в обработчиках «ПередЗакрытием»

Необходимо выявить все случаи использования модальных методов в обработчике ПередЗакрытием управляемых форм. Затем выполнить замену модального метода на аналогичный ему немодальный метод, разделив код на две части: «До открытия диалога» и «Обработка результата редактирования». Дополнительно в коде «До открытия диалога» следует устанавливать Отказ = Истина и прекращать выполнение кода в том случае, если форма закрывается при закрытии приложения (параметр ЗавершениеРаботы = Истина).

Пример разделения алгоритма:

Было:

&НаКлиенте
Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка)
   
   
    Если Модифицированность Тогда
        Ответ = Вопрос(НСтр("ru = 'Сохранить изменения?'"), РежимДиалогаВопрос.ДаНетОтмена);
       
       
        Если Ответ = КодВозвратаДиалога.Да Тогда
            СохранитьИзменения(); // Сохранение изменений и сброс флага Модифицированность.
       
       
        ИначеЕсли Ответ = КодВозвратаДиалога.Отмена Тогда
            Отказ = Истина;
       
       
        КонецЕсли;
   
   
    КонецЕсли;
КонецПроцедуры

Стало:

Пример перевода метода «ОткрытьМодально» объекта «ДиалогРасписанияРегламентногоЗадания» на «Показать»

Необходимо выявить все случаи использования метода ОткрытьМодально объекта ДиалогРасписанияРегламентногоЗадания. Затем выполнить замену модального метода на аналогичный ему немодальный метод Показать, разделив код на две части: «До открытия диалога» и «Обработка результата редактирования».

Пример разделения алгоритма:

В управляемой форме (было):

В управляемой форме (стало):

В общем модуле РегламентныеЗаданияКлиент (было):

В общем модуле РегламентныеЗаданияКлиент (стало):

Дополнительные сведения по работе с объектом «ОписаниеОповещения»

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

При этом не следует использовать другие возможности платформы, которые могут быть похожи на методику работы с объектом ОписаниеОповещения, но предназначены для решения других задач:

  • метод Оповестить и обработчик события ОбработкаОповещения. Их нужно использовать только для широковещательной рассылки сообщения всем открытым формам;
  • метод ОповеститьОВыборе и обработчик события ОбработкаВыбора. Их нужно использовать только для выбора значений применительно к полям ввода и таблицам.

В тех случаях, когда необходимо передавать параметры работы кода «до вызова оповещения» в код обработчика оповещения, рекомендуется использовать свойство ДополнительныеПараметры объекта ОписаниеОповещения.

Подробнее см. документацию «Руководство разработчика».

СОВЕТ
Для вывода информационных сообщений о завершении какой-либо операции вместо предупреждений рекомендуется использовать оповещения (метод ПоказатьОповещениеПользователя). Например, для вывода сообщения об успешной отправке отчета по почте.

Поддержка веб-клиента

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

В противном случае при закрытии приложения возникнет ошибка «Серверные вызовы при завершении работы запрещены».

Отказаться от серверных вызовов и открытия окон в «ПередЗакрытием»

С помощью параметров ЗавершениеРаботы и ТекстПредупреждения обработчика события управляемой формы ПередЗакрытием следует особым образом обрабатывать режим завершения работы приложения.

Было:

Стало:

Отказаться от серверных вызовов в «ПриЗакрытии»

Аналогичного подхода следует придерживаться и в обработчика события управляемой формы ПриЗакрытии. В зависимости от его содержимого следует выбрать один из вариантов:

1) Если в ПриЗакрытии выполняется оповещение открытых форм и обновление связанных списков, то при завершении работы приложения такой код следует отключить с помощью параметра ЗавершениеРаботы:

Было:

Стало:

2) Если в ПриЗакрытии выполняется сохранение настроек формы, то следует отказаться от обработчика ПриЗакрытии и перенести этот код в обработчики событий, вызываемые при действиях пользователя.

Было:

Стало:

&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) … // Сохраняем дату последнего отображения. ОбщегоНазначения.ХранилищеОбщихНастроекСохранить(«Настройка», «ДатаПоследнегоОтображенияПредложения», ТекущаяДатаСеанса()); … КонецПроцедуры

Если событие, которое возникает при действиях пользователя, вызывается на стороне клиента, рекомендуется выполнять сохранение настроек в безконтекстном серверном вызове, чтобы избежать перерисовки формы:


Отчет по проблемам совместимости, возникающим при переходе на платформу «1С:Предприятие» версии 8.3, содержится в каталоге \EXE\EXTREPS\83compatible

Скачать отчет

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *