При обновлении ERP на версию 2.5.11.96 возникает ошибка, если отключен режим совместимости.

1. dima_home 254 20.04.23 14:38 Сейчас в теме
Решили обновиться с ERP версии 2.5.10.93 на версию 2.5.11.96.
Используем движок 1С 8.3.22.1923
В конфигурации отключен режим совместимости! - это важно.
При попытке накатить обновление, 1С жалуется на запрос в общем модуле "НоменклатураСервер" в процедуре "ПроверитьОкруглениеКоличестваВнутреннийи".

Оказывается программист 1С применил обращение к реквизиту через точку для данных из таблицы значений, переданной в виде параметра.
А ведь все знают, что начиная с движка 1С версии 8.3.18 и более поздние такие запросы не работают.
Пример, который не работает на последних движках:
"ВЫБРАТЬ
|    ВЫРАЗИТЬ(ТЧ.Номенклатура КАК Справочник.Номенклатура).ЕдиницаИзмерения
|ИЗ
|    &ТЧ КАК ТЧ";


Что бы запрос заставить работать, нужно таблицу значений, переданную в виде параметра, предварительно поместить во временную таблицу запроса.

Соответственно, вносим исправления в Общий модуль "НоменклатураСервер"
в Процедуру "ПроверитьОкруглениеКоличестваВнутренний"

    ТекстЗапроса =
    #Вставка
    "ВЫБРАТЬ *
    |ПОМЕСТИТЬ ТЧ
    |из &ТЧ как ТЧ;";
    ТекстЗапроса = ТекстЗапроса +
    #КонецВставки
    "ВЫБРАТЬ
    |    ТЧ.НомерСтроки КАК НомерСтроки,
    |    ТЧ.Номенклатура КАК Номенклатура,
    |    ВЫРАЗИТЬ(ТЧ.Номенклатура КАК Справочник.Номенклатура).ЕдиницаИзмерения.ТипИзмеряемойВеличины КАК ТипИзмеряемойВеличины,
    |    ТЧ.КоличествоУпаковок КАК КоличествоУпаковок,
    |    ТЧ.Количество КАК КоличествоВДокументе,
    |    ВЫРАЗИТЬ(ТЧ.Упаковка КАК Справочник.УпаковкиЕдиницыИзмерения) КАК Упаковка,
    |    ВЫРАЗИТЬ(ТЧ.Упаковка КАК Справочник.УпаковкиЕдиницыИзмерения).ТипУпаковки КАК ТипУпаковки,
    |    &ТекстЗапросаКоэффициентУпаковки КАК КоэффициентУпаковки,
    |    &ИмяПоляКоличествоУпаковокСуффикс КАК КоличествоУпаковокСуффикс,
    |    &ИмяПоляКоличествоСуффикс КАК КоличествоВДокументеСуффикс,
    |    &ДополнительныеПоля
    |ПОМЕСТИТЬ ВТДляЗапроса
    |ИЗ
    #Удаление
    |    &ТЧ КАК ТЧ
    #КонецУдаления
    #Вставка
    |    ТЧ КАК ТЧ
    #КонецВставки
    |ГДЕ
    |    ТЧ.Упаковка <> ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
    |    И &УсловиеОтбораСтрокДляОкругления
    |
    |ИНДЕКСИРОВАТЬ ПО
    |    ТипИзмеряемойВеличины
    |;
    |
    //... там еще длинный запрос..."
Показать


Теперь можно обновиться с отключенным режимом совместимости с версией 17.
В 1С ошибку направил.
user867197; +1 Ответить
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. dima_home 254 25.04.23 13:50 Сейчас в теме
Еще выявил отказ работы стандартного отчета "Карточка счета" в последнем обновлении. Работает только в включенным режимом совместимости.
user867197; +1 Ответить
3. user1826630 25.04.23 16:05 Сейчас в теме
Режим совместимости - он не просто так придуман.
4. dima_home 254 28.04.23 14:06 Сейчас в теме
(3)
он не просто так придуман.

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

*сарказм* ;)
5. user1826630 28.04.23 18:27 Сейчас в теме
(4) Как раз наоборот. Для своих разработок вы можете использовать новые движки. А вот типовые обновляются не быстро (причина в основном - в БСП, там самые тормоза). Поэтому чтобы не падали типовые на боевых базах - придуман режим совместимости.
6. dima_home 254 02.05.23 14:37 Сейчас в теме
(5)
Для своих разработок вы можете использовать новые движки.

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

Какой-то холивар получается. :)
7. user1826630 02.05.23 14:59 Сейчас в теме
(6) да нет, не холивар. Нормальная забота о регрессионной совместимости...
8. dima_home 254 03.05.23 10:35 Сейчас в теме
Вот еще странное поведение при отключении режима совместимости на движке 8.3.22.
Отчет "карточка счета" перестает формироваться, если выбран только один показатель.

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

Обращение в 1С (#HL-668188)...
интересен их ответ:
Отключение режима совместимости это изменение типового функционала программы. Соответственно, это не поддерживается в официальных релизах.
Штатно повышение режима совместимости планируется в версии 2.5.13.

Соответственно и наш ответ Чембилену:
Я это прекрасно понимаю, и не выставляю претензий к 1С.
Однако, я думаю, что Вы пишите свой продукт ЕРП с оглядкой на его работоспособность в ваших выпущенных релизах движков, которые вы все время рекомендуете обновлять.

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

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот