23.11.23

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

В "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)

    Тип менеджера перерасчетов регистра расчета

    РегистрРасчетаПерерасчеты<Имя регистра расчета>

    ПерерасчетыМенеджер<Имя регистра расчета>

    Запись таблицы внешнего источника данных. Изменены только английские имена

    ExternalDataSourceRecord

    ExternalDataSourceTableRecord

    Набор записей внешнего источника данных. Изменены только английские имена

    ExternalDataSourceRecordSet

    ExternalDataSourceTableRecordSet

    Методы установки и получения рассчитанных итогов
    менеджеров регистров накопления остатков и бухгалтерии

    ПолучитьПериодРассчитанныхИтогов (GetTotalsPeriod)

    ПолучитьМаксимальныйПериодРассчитанныхИтогов (GetMaxTotalsPeriod)

    УстановитьПериодРассчитанныхИтогов (SetTotalsPeriod)

    УстановитьМаксимальныйПериодРассчитанныхИтогов (SetMaxTotalsPeriod)

    Имя свойства объекта, описывающего тестируемые элементы формы

    Заголовок (Title)

    ТекстЗаголовка (TitleText)

    Элементы системного перечисления ОтображениеОбычнойГруппы

    Линия (Line)

    СлабоеВыделение (WeakSeparation)

    Отступ (Margin)

    ОбычноеВыделение (NormalSeparation)

    РамкаГруппы (GroupBox)

    СильноеВыделение (StrongSeparation)

    Методы получения и установки заголовка окна клиентского приложения

    ПолучитьЗаголовокПриложения (GetApplicationCaption)

    ПолучитьЗаголовокКлиентскогоПриложения (GetClientApplicationCaption),

    УстановитьЗаголовокПриложения (SetApplicationCaprion)

    УстановитьЗаголовокКлиентскогоПриложения (SetClientApplicationCaption)

    Свойство поля ввода

    ШиринаСпискаВыбора (ListSelWidth)

    ШиринаВыпадающегоСписка (DropListWidth)

    Метод Выбрать() объектов РезультатЗапроса и ВыборкаИзРезультатаЗапроса
    Изменены только английские имена

    Choose

    Select

    Имя метода глобального контекста. Старый метод поддерживается для совместимости.

    Найти (Find)

    СтрНайти (StrFind)

    Имя параметра события ОбработкаНавигационнойСсылки.

    НавигационнаяСсылка (URL)

    НавигационнаяСсылкаФорматированнойСтроки (FormattedStringURL)

    Имя параметра событий АвтоПодбор и ОкончаниеВводаТекста для полей ввода.

    Параметры

    ПараметрыПолученияДанных

    Ключ отбора, используемого в методах ПолучитьИдентификаторы и ПолучитьЗаголовки объекта ИнтернетПочта.

    ПолученОтвет

    Недавние

    Имя метода объекта СредстваГеопозиционирования (мобильная платформа). Изменены только английские имена.

    GetMostAcurateProvider

    GetMostAccurateProvider

    Свойство табличного документа.

    КодЯзыкаМакета (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.16

    Имя системного фонового задания индексации полнотекстового поиска.

    BackgroundJob.FullTextSearchIndexAdditionalUpdate

    BackgroundJob.FullTextSearchIndexUpdate

    Методы и события формы клиентского приложения.

    ЗаполнитьПриПереоткрытии()

    ЗаполнитьПриПереоткрытииСДругогоСервера()

    ПередПереоткрытием()

    ПередПереоткрытиемСДругогоСервера()

    ПриПереоткрытии()

    ПриПереоткрытииСДругогоСервера()

    Свойства объектов, используемых для работы с диаграммами.

    ЗначениеДиаграммы.РежимРедактирования

    ЗначениеДиаграммы.СостояниеРедактирования

    ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент.ОформлениеДляЗначений

    ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент.ОформлениеЗначений

    Картинка библиотеки картинок.

    ОформлениеКвадратыЗаполненныеЧетыре

    ОформлениеКвадратыЗаполненные

    Значение системного перечисления ТипСвязиВложенияPDF.

    НеУказано

    НеУстановлено

    Значения системного перечисления РазрешенияДоступаИзмененияPDF.

    ЗаполнениеИПодпись

    ЗаполнениеПодписание

    ЗаполнениеПодписьИАннотация

    ЗаполнениеПодписаниеАннотирование

    8.3.17

    Переименованы некоторые элементы библиотеки картинок. Старые имена сохранены для совместимости, но могут указывать на другие картинки.

    Календарь

    ПолеВводаКалендарь

    Калькулятор

    ПолеВводаКалькулятор

    Лупа

    ПолеВводаОткрыть

    ВыбратьТип

    ПолеВводаВыбратьТип

    Выбрать

    ПолеВводаВыбрать

    Очистить

    ПолеВводаОчистить

    Справка

    СправкаФормы

    Имена, использующие фразу «все функции». Cтарые имена используются для совместимости.

    РежимВсеФункции

    РежимТехническогоСпециалиста

    СтандартныйВидГлобальногоПоиска.ВсеФункции

    СтандартныйВидГлобальногоПоиска.ФункцииДляТехническогоСпециалиста

    DisplayAllFunctions

    TechnicalSpecialistMode

    8.3.18

    Системные имена событий журнала регистрации.

    _$InfoBase$_.InfoBaseAdmParamsUpdate

    _$InfoBase$_.ParametersUpdate

    _$InfoBase$_.InfoBaseAdmParamsUpdateError

    _$InfoBase$_.ParametersUpdateError

    _$InfoBase$_.TARInfo

    _$InfoBase$_.VerifyAndRepairInfo

    _$InfoBase$_.TARMess

    _$InfoBase$_.VerifyAndRepairMessage

    _$InfoBase$_.TARImportant

    _$InfoBase$_.VerifyAndRepairImportant

    _$InfoBase$_.SecondFactorAuthTemplateNew

    _$InfoBase$_.SecondAuthenticationFactorTemplateNew

    _$InfoBase$_.SecondFactorAuthTemplateUpdate

    _$InfoBase$_.SecondAuthenticationFactorTemplateUpdate

    _$InfoBase$_.SecondFactorAuthTemplateDelete

    _$InfoBase$_.SecondAuthenticationFactorTemplateDelete

    Английские варианты имени метода Файл.Существует() и имени свойства ДиалогВыбораФайла.ПроверятьСуществованиеФайла.

    File.Exist

    File.Exists

    FileDialog.CheckFileExist

    FileDialog.CheckFileExistence

    Английский вариант наименования метода КопироватьФайл().

    FileCopy()

    CopyFile()

    Наименование метода проверки того, что покупка была приобретена.

    Приобретена()

    ПроверитьПриобретение()

    Свойство глобального контекста, которое позволяет получить доступ к данным ссылки, которая использовалась для запуск прикладного решения.

    НавигационнаяСсылкаЗапуска

    ДанныеПереходаПоНавигационнойСсылкеЗапуска

    8.3.20

    Метод проверки доступности видеоконференций системы взаимодействия.

    ВидеоконференцииДоступны()

    ПоддерживаютсяВидеоконференции()

    Англоязычное представление свойства СхемаКомпоновкиДанных.ВложенныеСхемыКомпоновкиДанных.

    NestedDataCompositionSchema

    NestedDataCompositionSchemas

    Свойство объекта НастройкиОбработкиОшибок, указывающее необходимость отправки отчета об ошибке.

    ОтправлятьОчет

    ОтправлятьОтчет

    Английское наименование свойства ПодписьМобильногоКлиента для объекта метаданных Конфигурация.

    MobileClientSign

    MobileClientSignature

    8.3.21

    Свойства объекта НастройкиОбработкиОшибок.

    ВключатьИмяПользователяВОтчет

    ВключатьИмяПользователяВОтчетНаКлиенте

    ВключатьИнформациюОСистемеВОтчет

    ВключатьИнформациюОСистемеВОтчетНаКлиенте

    ВключатьПодробныйТекстОшибкиВОтчет

    ВключатьПодробныйТекстОшибкиВОтчетНаКлиенте

    ВключатьСведенияОбИнформационнойБазеВОтчет

    ВключатьСведенияОбИнформационнойБазеВОтчетНаКлиенте

    ВключатьСнимокОконВОтчет

    ВключатьСнимокОконВОтчетНаКлиенте

    ОтправлятьОтчетОбАварийномЗавершении

    ОтправлятьОтчетОбАварийномЗавершенииНаКлиенте

    ОтправлятьОтчетОбАварийномЗавершенииВСервисРегистрацииОшибокПлатформы

    ОтправлятьОтчетОбАварийномЗавершенииНаКлиентеВСервисРегистрацииОшибокПлатформы

    ОтправлятьОтчет

    ОтправлятьОтчетНаКлиенте

    Свойство, предназначенное для указания адреса сервиса регистрации ошибок объекта НастройкиОбработкиОшибок.

    АдресСервисаРегистрацииОшибок

    АдресСервисаОбработкиОшибок

    Русские имена картинок библиотеки картинок (старые имена содержат латинскую букву «c»).

    ОформлениеЗнакВоcклицательныйЗнак

    ОформлениеЗнакВосклицательныйЗнак

    ОформлениеВоcклицательныйЗнак

    ОформлениеВосклицательныйЗнак

    8.3.22
    Английский вариант наименования метода РасчетСистемЛинейныхУравнений.РассчитатьСистемыЛинейныхУравнений(). SolveSystemOfLinearEquations SolveSystemsOfLinearEquations

    Англоязычные имена следующих параметров оформления системы компоновки данных:

    • МаксимальнаяВысота
    • МаксимальнаяШирина
    • МинимальнаяВысота
    • МинимальнаяШирина

    MaximumHeight

    MaxHeight

    MaximumWidth

    MaxWidth

    MinimumHeight

    MinHeight

    MinimumWidth

    MinWidth

    Английское имя свойства формы клиентского приложения ОписаниеОповещения.

    NotifyDescription

    CallbackDescription

    Английский вариант имени метода глобального контекста ВыполнитьОбработкуОповещения.

    ExecuteNotifyProcessing

    RunCallback

    Английское имя свойства формы клиентского приложения ОписаниеОповещенияОЗакрытии.

    OnCloseNotifyDescription

    CallbackDescriptionOnClose

    8.3.23

    Имена свойств и объектов, связанных с полем планировщика.

    ПараметрыФормированияКомандПланировщика

    ПараметрыФормированияКомандПоляПланировщика

    ОписаниеКомандПланировщика

    ОписаниеКомандПоляПланировщика

    ИсточникКомандПланировщика

    ИсточникКомандПоляПланировщика

    СтандартнаяКомандаПланировщика

    СтандартнаяКомандаПоляПланировщика

    Английское написание методов менеджера обработки ошибок.

    GetCategoryForUser()

    ErrorCategoryForUser()

    GetMessageForUser()

    ErrorMessageForUser()

    GetDescriptonForUser()

    ErrorDescriptionForUser()

    GetBriefDescription()

    BriefErrorDescription()

    GetDetailDescription()

    DetailErrorDescription()

    8.3.24

    Англоязычное написание имени параметра ОписаниеОповещения в методах встроенного языка.

    NotifyDescription

    CallbackDescription

    Кроме того, начиная с версии 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" у поля ввода отсутствует свойство КнопкаСпискаВыбора. Вместо него теперь следует использовать новое свойство КнопкаВыпадающегоСписка. Подробнее см. документацию "Руководство разработчика".

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

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

    В "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 для набора из картинок:

    Копировать в буфер обмена
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <Picture>
        <PictureVariant name="85.png" screenDensity="bldpi" glyphWidth="14" glyphHeight="14"/>
        <PictureVariant name="100.png" screenDensity="ldpi" glyphWidth="16" glyphHeight="16"/>
        <PictureVariant name="125.png" screenDensity="aldpi" glyphWidth="20" glyphHeight="20"/>
        <PictureVariant name="150.png" screenDensity="mdpi" glyphWidth="24" glyphHeight="24"/>
        <PictureVariant name="175.png" screenDensity="amdpi" glyphWidth="28" glyphHeight="28"/>
        <PictureVariant name="200.png" screenDensity="hdpi" glyphWidth="32" glyphHeight="32"/>
        <PictureVariant name="300.png" screenDensity="xdpi" glyphWidth="48" glyphHeight="48"/>
        <PictureVariant name="400.png" screenDensity="udpi" glyphWidth="64" glyphHeight="64"/>
        <PictureVariant name="Picture.png" interfaceVariant="version8_2" screenDensity="ldpi" glyphWidth="16" glyphHeight="16"/>
        <PictureVariant name="Picture.png" interfaceVariant="version8_2_OrdinaryApp" screenDensity="ldpi" glyphWidth="16" glyphHeight="16"/>
    </Picture>

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

    На платформе "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, не допустимо чтение и запись значений следующих свойств пользовательских настроек компоновки данных:

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

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

    Копировать в буфер обмена

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

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

    Копировать в буфер обмена Копировать в буфер обмена

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

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

    Копировать в буфер обмена

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

    заменена на:

    Копировать в буфер обмена Копировать в буфер обмена

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

    Отказ от неиспользуемого элемента интерфейса ПанельИнструментов

    Начиная с версии 8.3.15, объект ЭлементНастройкиСоставаИнтерфейсаКлиентскогоПриложения невозможно создать для панели ПанельИнструментов:

    Рекомендуется выполнить глобальный поиск по подстроке "ПанельИнструментов". Далее проанализировать на предмет использования данного литерала в добавлении элемента интерфейса, например:

    Копировать в буфер обмена Копировать в буфер обмена

    ГруппаСверху.Добавить(Новый ЭлементНастройкиСоставаИнтерфейсаКлиентскогоПриложения("ПанельИнструментов"));

    Если используется, то удалить строку.

    Рефакторинг вычисляемых полей схемы компоновки данных, содержащих выражения представления

    Начиная с версии 8.3.15, компоновщик макета компоновки данных, при формировании выражения групповых и итоговых записей для вычисляемых полей, не использует выражение представления, указанное у вычисляемого поля.

    В связи с этим, необходимо найти макеты с типом СхемаКомпоновкиДанных, содержащими вычисляемые поля, для которых определены выражения представления.

    Для примера см. отчет Результаты проверки учета (БСП):

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

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

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

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

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

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

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

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

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

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

    Например:

    Копировать в буфер обмена
    &НаКлиенте
        Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
            Информация = Новый СистемнаяИнформация;
           
           
            Если Информация.ТипПлатформы <> ТипПлатформы.Windows_x86 Или Информация.ТипПлатформы <> ТипПлатформы.Windows_x86_64 Тогда
                ПоказатьПредупреждение(, НСтр("ru = 'Печать в Microsoft Word доступна только при работе в ОС Windows"));
               
               
                Возврат;
           
           
            КонецЕсли;
           
           
            // ...
        КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Модальный метод

    Немодальный метод

    Глобальный контекст

    Вопрос

    ПоказатьВопрос

    Предупреждение

    ПоказатьПредупреждение

    ОткрытьЗначение

    ПоказатьЗначение

    ВвестиДату

    ПоказатьВводДаты

    ВвестиЗначение

    ПоказатьВводЗначения

    ВвестиСтроку

    ПоказатьВводСтроки

    ВвестиЧисло

    ПоказатьВводЧисла

    УстановитьВнешнююКомпоненту

    НачатьУстановкуВнешнейКомпоненты

    УстановитьРасширениеРаботыСФайлами

    НачатьУстановкуРасширенияРаботыСФайлами

    УстановитьРасширениеРаботыСКриптографией

    НачатьУстановкуРасширенияРаботыСКриптографией

    ПоместитьФайл

    НачатьПомещениеФайла

    ОткрытьФормуМодально

    ОткрытьФорму

    ДиалогРедактированияСтандартногоПериода

    Редактировать

    Показать

    КонструкторФорматнойСтроки

    ОткрытьМодально

    Показать

    ДиалогРасписанияРегламентногоЗадания

    ОткрытьМодально

    Показать

    ДиалогВыбораШрифта

    Выбрать

    Показать

    ДиалогВыбораЦвета

    Выбрать

    Показать

    ОбработкаРасшифровкиКомпоновкиДанных

    ВыбратьДействие

    ПоказатьВыборДействия

    СписокЗначений

    ОтметитьЭлементы

    ПоказатьОтметкуЭлементов

    ВыбратьЭлемент

    ПоказатьВыборЭлемента

    УправляемаяФорма

    ВыбратьИзМеню

    ПоказатьВыборИзМеню

    ВыбратьИзСписка

    ПоказатьВыборИзСписка

    ОткрытьМодально

    Открыть

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

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

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

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

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

    Копировать в буфер обмена
    &НаКлиенте
        Процедура ДобавитьХарактеристику(Команда)
           
           
            // Выбор вида характеристики
            ВидХарактеристики = ОткрытьФормуМодально("ПланВидовХарактеристик.ФормаВыбора");
           
           
            Если ВидХарактеристики = Неопределено Тогда
               
               
                Возврат;
           
           
            КонецЕсли;
           
           
            // Обработка результата выбора
           
           
            // ...
        КонецПроцедуры

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

    Копировать в буфер обмена
    &НаКлиенте
        Процедура ДобавитьХарактеристику(Команда)
           
           
            // Выбор вида характеристики
            Обработчик = Новый ОписаниеОповещения("ДобавитьХарактеристикуЗавершение", ЭтотОбъект);
            Режим = РежимОткрытияОкнаФормы.БлокироватьВеcьИнтерфейс;
            ОткрытьФорму("ПланВидовХарактеристик.ВидыХарактеристик.ФормаВыбора",,,,,, Обработчик, Режим);
        КонецПроцедуры
        
        &НаКлиенте
        Процедура ДобавитьХарактеристикуЗавершение(ВидХарактеристики, Параметры) Экспорт
           
           
            Если ВидХарактеристики = Неопределено Тогда
               
               
                Возврат;
           
           
            КонецЕсли;
           
           
            // Обработка результата выбора
           
           
            // ...
        КонецПроцедуры

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

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

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

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

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

    Было:

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

    Стало:

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

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

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

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

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

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

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

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

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

    Копировать в буфер обмена
    Функция ИзменитьРасписание(Расписание) Экспорт
            ДиалогРасписания = Новый ДиалогРасписанияРегламентногоЗадания(Расписание);
           
           
            Если ДиалогРасписания.ОткрытьМодально() Тогда
                Расписание = ДиалогРасписания.Расписание;
               
               
                Возврат Истина;
           
           
            КонецЕсли;
           
           
            Возврат Ложь;
        КонецФункции
        

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

    Копировать в буфер обмена
    Процедура ИзменитьРасписание(ОписаниеОповещения, Расписание) Экспорт
            ДиалогРасписания = Новый ДиалогРасписанияРегламентногоЗадания(Расписание);
            ДиалогРасписания.Показать(ОписаниеОповещения);
        КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

    Было:

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

    Стало:

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

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

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

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

    Было:

    Копировать в буфер обмена Копировать в буфер обмена
    &НаКлиенте
        Процедура ПриЗакрытии()
            ОбновитьИнтерфейсПрограммы();
        КонецПроцедуры

    Стало:

    Копировать в буфер обмена Копировать в буфер обмена
    &НаКлиенте
        Процедура ПриЗакрытии(ЗавершениеРаботы)
            Если ЗавершениеРаботы Тогда
                Возврат;
            КонецЕсли;
            ОбновитьИнтерфейсПрограммы();
        КонецПроцедуры

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

    Было:

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

    Стало:

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

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

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

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

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