Изменение или отключение режима совместимости. Изменение или отключение режима совместимости Обновляем формы в расширении

07.04.2024

Стоимость работ и варианты переводов с разных релизов

Перевод 8.1 → 8.2.13 Перевод 8.2.13 → 8.2.16 Перевод 8.2.16 → 8.3.10
Цена, руб. * 54 000 ₽ 12 000 ₽ 76 800 ₽

Список всех изменений в различных версиях платформы доступен по ссылкам:
Для платформы 8.2:
http://downloads.v8.1c.ru/content/Platform/8_2_19_106/1cv8upd.htm

Перед началом работ по переводу на 8.3 нужно:

Проверить режим управляемых блокировок. Если используется “Автоматический”, то при переходе на 8.3 могут потребоваться дополнительные затраты на перевод в режим управляемых блокировок.
Если используется режим совместимости с 8.2.16 и выше, то нужно проверить, выполнена ли реструктуризация таблиц
Определить, какие типы клиентов используются (тонкий, толстый, веб-клиент)
Определить, есть ли машины, которые работают под linux

Перевод конфигурации 8.1 → 8.2.13

Стоимость работ: 54 000 руб.

Перевод конфигурации 8.2.13 → 8.2.16 (включая реструктуризацию)

Ключевые изменения:
Изменен режим хранения констант и настроек регистров накопления. Для каждого объекта используется своя таблица базы данных
Переработана реализация механизма управляемых блокировок.
Для события технологического журнала «TLOCK» свойство «Txt» записывается только в режиме совместимости с версией 8.2.13
Уменьшено влияние режима отладки на скорость работы в режиме «1С:Предприятие» для тонкого клиента, толстого клиента, сервера и внешнего соединения.
Оптимизировано выполнение запроса вида «ТипЗначения(Поле1) = ТипЗначения(Поле2)», если «Поле1» и «Поле2» содержат значения ссылочного типа.
Для полей управляемой формы, отображающих реквизит составного типа, ускорено открытие списка быстрого выбора в тех случаях, когда в составной тип входят ссылочные типы с разными настройками быстрого выбора.
Для нового независимого и непериодического регистра сведений, индекс по измерениям является кластерным

Изменения, требующие изменений в конфигурациях:

При отключенном режиме совместимости, параметр «Период» метода менеджера периодического регистра сведений «Получить()» является обязательным. В режиме совместимости с версией 8.2.13 и версией 8.1 поведение не изменилось (метод можно использовать без указания параметра, но результат является неопределенным).
При одновременном использовании методов «УстановитьЗначение()» и «ИспользоватьИзИсточникаДанных()» объекта «ЭлементБлокировкиДанных» вызывается исключение. В режиме совместимости с версией 8.2.13 поведение не изменилось (приоритетным считается значение, установленное методом «ИспользоватьИзИсточникаДанных()»).
Не поддерживается помещение в хранилище значения данных, которые не поддерживают сериализацию. В режиме совместимости поведение не изменилось.
Если база файловая, то должно быть выполнено преобразование информационной базы. После начала преобразования работа с данной информационной базой предыдущими версиями платформы «1С:Предприятие 8» будет невозможна. Если разработка выполняется с использованием хранилища конфигураций, перед преобразованием информационной базы нужно обязательно сделать копию хранилища

ВАЖНО. Для получения эффекта от изменения режима совместимости надо сделать реструктуризацию через конфигуратор: “Администрирование → Тестирование и исправление → Реструктуризация таблиц информационной базы”.

Предварительно необходимо выполнить реструктуризацию на тестовой базе и замерить время выполнения данной операции.
Если используется сервер 1С версии старше 8.2.19, например, версии 8.3, то при выполнении реструктуризации могут возникнуть ошибки следующего вида:

В таком случае необходимо сделать следующее:
Установить отдельно сервер 1С версии 8.2.19 и развернуть на нем исследуемую базу
Открыть базу в конфигураторе на сервере 1С версии 8.2.19, изменить режим совместимости на “Не использовать”
Выполнить реструктуризацию таблиц информационной базы
После того как реструктуризация будет выполнена, переместить информационную базу на исходный сервер 1С версии 8.3

Стоимость работ по переводу конфигурации из режима совместимости 8.2.13 в режим 8.2.16 (режим без совместимости, при использовании платформы 8.2.16, 8.2.19 и режим совместимости 8.2.16 при использовании платформы 8.3) составляет 12 000 руб.

Шаблон договора на работы можно скачать .

Перевод конфигурации 8.2.16 → 8.3.10

В состав работ по переводу конфигурацию входят следующие доработки конфигурации:

1. Устранение конфликт имен свойств. Изменение имен переменных, совпадающие с новыми свойствами, которые появились в «1С:Предприятии 8.3».
2. Устранение конфликт имен картинок. Переименование имен картинок с именами, совпадающеми с именами из библиотеки картинок.
3. Доработка кода при изменение свойств фиксированной структуры. Замена указания свойств фиксированной структуры на пересоздание фиксированной структуры или замена ее использование на аналогичный тип «Структура».
4. Замена помещения во временное хранилище несериализуемых значений, на код поддерживаемый в «1С:Предприятии 8.3».
5. Замена использования вызова метода «Показать» для реквизитов управляемой формы, на использование свойств «ТекущийЭлемент», «ТекущаяСтраница», метода «Активировать»
6. Замена имен объектов метаданных с длинной более 80 символов, на имена с длиной имени в 80 символов или меньше для объектов метаданных
7. Переименования методов и свойств, согласно методике перехода на версию 8.3.
8. Доработка механизмов работы с отборами, условным оформлением, группировками и порядком в динамических списках.
9. Доработка кода для запросов с ключевым словом «ИТОГИ ПО ОБЩИЕ», выгруженный в режиме
«ОбходРезультатаЗапроса.ПоГруппировкам», с целью сохранения прежней логики работы.
10. Изменения имен классов COM-объектов. Замена имен «V82.COMConnector» на «V83.COMConnector», и «V82.Application» на «V83.Application».
11. Отказ в коде программы от события «НачалоВыбораИзСписка» для полей ввода в режиме выбора из списка
12. Отказ в коде программы от свойства «КнопкаСпискаВыбора» для полей ввода, путем установки свойства «КнопкаВыпадающегоСписка».
13. Изменение кода с учетом изменения типа значения, возвращаемого методом глобального контекста «БезопасныйРежим()»
14. Изменение кода с учетом изменение результата запроса к константам (при обращение к полю «Значение» таблицы константы, если константа хранит значение типа «ХранилищеЗначения», «УникальныйИдентификатор» или «ВнешнийИсточникДанныхТаблицаСсылка».
15. Замена свойства конфигурации «ОсновнаяРоль» на «ОсновныеРоли»
16. Отказ от свойств «Пользователь» и «Пароль» для объекта «ИнтернетПрокси» и замена на методы «Установить()», «Пользователь()», «Пароль()».
17. Доработка кода для поддержки команды «Показать в списке», согласно методике перехода на версию 8.3.
18. Доработка кода для поддержания прежней логики работы системы при изменившемся возвращаемом значении свойства СистемнаяИнформация.ВерсияОС,
19. Доработка кода для поддержания прежней логики работы системы при отказе от использования системного перечисление ВариантОткрытияОкна, которое более не доступно в версии 8.3.
20. Доработка кода с учетом отказа от использования модальных окон.
21. Доработка кода по поддержке веб-клиента, а именно отказ от серверных вызовов и открытия окон в «ПередЗакрытием», отказ от серверных вызовов в «ПриЗакрытии».
22. Доработка кода для возможности корректного использования функции РольДоступна(), при передачи функции в качестве параметра отсутствующей роли.
23. Для управляемого приложения: начиная с версии 8.3.8 в обработчиках событий управляемого приложения ПередЗавершениемРаботыСистемы,ПриЗавершенииРаботыСистемы, а также в обработчиках событий управляемой формы, находящейся в режиме закрытия, ПередЗакрытием, ПриЗакрытии, запрещено открывать окна и выполнять любые серверные вызовы . Необходима доработка конфигурации, чтобы закрытие форм выполнялось корректно — без серверных вызовов.
24. Конфликт имен переменных: в модуле формы нельзя использовать имя переменной ПараметрыФормы. Поэтому необходимо доработать все модули управляемых форм, где используются переменные с именем ПараметрыФормы, переименовав эти переменные.

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

Стоимость работ: 76 800 руб.

Шаблон договора на работы можно скачать .

Стоимость работ по переводу конфигурации в режим совместимости с 8.3.10 может быть увеличена , если:
В конфигурации используются управляемые формы
Необходимо отказаться от использования модальности
Нужно поддерживать работоспособность конфигурации в ОС Linux

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

Прежде всего необходимо знать об ограничениях, которые имеют расширения.

Ограничение на создаваемые объекты

На данный момент можно создавать:

  • Справочники
  • Документы
  • Регистры сведений
  • Планы обмена

Можно добавлять реквизиты в:

  • Справочники
  • Документы

Что мы имеем в итоге? Добавлять можно не все типы объектов метаданных. Самые распространенные и востребованные, но все-таки не все. Кроме того, в регистры сведений нельзя добавлять новые измерения и ресурсы. Можно только создать полностью новый регистр.

Функционал расширений зависит от режима совместимости конфигурации, к которой применяется расширение.

Режим совместимости 8.3.8 - можно менять только формы объектов и их модули, добавлять свои отчеты и обработки.

Режим совместимости 8.3.10 - можно менять общие модули, модули объекта и менеджера, роли, использовать директивы "Перед", "После", "Вместо" для любых модулей.

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

На данный момент в типовой УТ 11.3 стоит режим совместимости 8.3.8. В УТ 11.4 режим совместимости 8.3.10, то есть, например, для УТ, большая часть функционала расширений недоступна, включая создание объектов метаданных.

Казалось бы, напрашивается вопрос: почему бы просто не снять с поддержки корень, установить режим совместимости "Не использовать" и спокойно использовать расширения? При смене режима совместимости могут измениться поведение форм, результаты запросов, т.е. поведение системы в целом. Настоятельно рекомендуется не менять режим совместимости без предварительного тестирования. Но очевидно, что оттестировать полностью (или хотя бы в части используемых документов) целое прикладное решение представляется возможным. Поэтому использовать данный вариант не стоит.

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


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


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

Выводы

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

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

С помощью расширений появляется возможность вносить доработки, оставляя конфигурации БЕЗ изменений (то есть не снимая «с замка» ).

В качестве примера мы расширим функционал типовой “1С:Бухгалтерии 8” – добавим проверки на заполненность реквизитов документов. В результате система будет выдавать диагностику, если реквизиты заполнены “неправильными” значениями.

Буквально за 15 минут Вы научитесь приемам, которые сможете использовать для решения разных задач.

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

Мечты о собственной нетленке могут стать реальностью:)

Итак, приступаем:

Видео 1. Приемы работы с расширениями – на примере “1С:Бухгалтерии 8”

Изучив видео, Вы научитесь:

  • Создавать и подключать расширения к конфигурации
  • Выполнять отладку расширений
  • Дорабатывать типовые формы обработок/документов с помощью расширений
  • Перехватывать события форм типовой конфигурации
  • Хранить данные не в таблицах ИБ (хранилище настроек)
  • Использовать обработки как хранилище алгоритмов

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

Видео 2. Создание универсальных механизмов с помощью расширений

В этом видео мы покажем:

  • Подключение расширения в пользовательском режиме (без конфигуратора )
  • Пример универсальной проверки заполнения
  • Особенности реализации расширений – создание форм с произвольными отборами и хранение данных в расширениях

Всем привет!

Замечательная конфигурация 1С "БИТ:Управление медицинским центром" вплоть до релиза 2.0.28.3 в логике своей работы имеет пару досадных неточностей, не позволяющих основательно получать удовольствие от её использования.

Привожу здесь два варианта разрешения этих трудностей с оговоркой, что мне лично больше нравится тот что связан с изменением конфигурации - старые дедовские способы работают как должно пока ещё. И да - это моё ИМХО и это работает.

Проблема №1. Не проставляются цены на работы в документе "Оказание услуг".

Нарушение в логике работы программы следующее: регистр сведений "Цены номенклатуры" имеет измерение "ЕдиницаИзмерения", а табличная часть "Работы" вышеуказанного документа не имеет никакого подобного подходящего реквизита для того, чтобы при заполнении строки данной табличной части легко и свободно можно было подставить её в запрос по ценам. Далее, функция "ПолучитьЦену" общего модуля "Ценообразование" содержит строки:

Если ЗначениеЗаполнено(ЕдиницаИзмерения) Тогда СтруктураОтбора.Вставить("ЕдиницаИзмерения",ЕдиницаИзмерения); Иначе СтруктураОтбора.Вставить("ЕдиницаИзмерения",Справочники.ЕдиницыИзмерения.ПустаяСсылка()); КонецЕсли;

Вот здесь, на мой взгляд, применено крайне неверное решение: при нормальных условиях в измерении "ЕдиницаИзмерения" регистра "Цены номенклатуры" никак не могут оказаться пустые ссылки. Скорее там будут ссылки на элементы справочника "Единицы измерения" из реквизитов "ЕдиницаТоваров" соответствующих номенклатур. Используем же их скорее:

Если ЗначениеЗаполнено(ЕдиницаИзмерения) Тогда СтруктураОтбора.Вставить("ЕдиницаИзмерения",ЕдиницаИзмерения); Иначе Если ТипЗнч(Номенклатура) = Тип("СправочникСсылка.Номенклатура") Тогда СтруктураОтбора.Вставить("ЕдиницаИзмерения",Номенклатура.ЕдиницаТоваров); КонецЕсли; КонецЕсли;

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

Проблема №2. Не совсем работают внешние печатные формы с видом использования "ВызовКлиентскогоМетода".

Во-первых, форма внешней обработки должна называться "Форма1". Да. Именно так.

Во-вторых, в модуле объекта обработки должна находиться функция:

Функция РежимЗапускаКлиент() Экспорт Возврат Истина; КонецФункции

Тоже так надо.

В-третьих, и что самое неприятное, конфигурация в открывающуюся форму не передаёт ссылку на документ, из которого эта форма открывается... И, как следствие, внешняя печатная форма не знает, что ей печатать.

Варианты решения:
а) добавить строки:

после строки

Форма = ПолучитьФорму("ВнешняяОбработка."+Рез+".Форма.Форма1");

в функции "НапечататьВнешнююФормуСПроверкойРежимаКлиент" общего модуля "ПечатьДокументовКлиент"

б) вынести всё это дело в расширение.

Сложности в применении расширений.

На данный момент используем платформу 8.3.10.2505.

Рассматриваемая конфигурация имеет режим совместимости "Версия 8.3.6". Не зря, конечно.

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

Вот тут-то и начинаются поводные камни:

  • директиву &Вместо("ПолучитьЦену"), поддерживаемую платформой 8.3.10, не даёт использовать режим совместимости;
  • метод "УстановитьВыполнениеОбработчиковСобытия" из платформы 8.3.6 вызывает бурную реакцию платформы 8.3.10 типа: "Переопределение свойств заимствованных объектов в расширениях недопустимо в режиме совместимости 8.3.8 и ниже".

По всему видно, что для использования расширений необходимо усановить режим совместимости конфигурации в "Не использовать". Однако, такое решение привносит ряд дополнительных проблем и "неразрешимых" ситуаций в нашу конфигурацию. В основном, начинают хромать методы при и перед закрытием форм и самой системы. Решаются они частично при помощи методик из документа Перевод конфигураций на платформу "1С:Предприятие 8.3" без режима совместимости с версией 8.2 , находящегося на сайте 1С ИТС. Почему частично - потому что не все серверные вызовы можно переделать на клиентские и не от всех можно отказаться. Подробности - в прикрепленном расширении "ЗавершениеРаботы".

В списке файлов три расширения, решающие проблемы с внешней печатной формой, ценами и ошибками при закрытии форм и приложения в конфигурации 1С: "БИТ:Управление медицинским центром" релиза 2.0.28.3.