1C: EDT: фиксим баги доработанной и устаревшей конфигурации УТ

13.08.21

Разработка - EDT

В этом году у меня появилась возможность использовать 1С: EDT весь рабочий день. В работе конфигурация УТ 11.1, прилично доработанная. Целиком перейти на актуальную конфигурацию УТ 11.4 проблематично, поэтому переходим кусочками в ходе текущих работ.

Первым делом, конечно, повышаем версию платформы конфигурации - режим совместимости.

Режим совместимости конфигурации существенно влияет и на работу приложения и на структуру конфигурации. Обнаружено, что после переключения режима совместимости с 8.3.8 на 8.3.14 (платформа 8.3.18)  в УТ 11.1 перестала работать загрузка адресного классификатора. Появилось сообщение типа "Ошибка доступа к файлу 01.zip"

Ошибка трудно локализуется, так как возникает внутри метода платформы.

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

ЗапуститьФоновуюЗагрузкуИзКаталогаКлиентаПослеИнициализации(Файл, ДополнительныеПараметры) Экспорт

Поиск в интернет ничего не дает о том, что не так в методе платформы НачатьПолучениеУниверсальногоВремениИзменения.

Зато кнопка "Инспектировать" в режиме отладки на переменной "Файл" показывает пустое свойство "ПолноеИмя". То есть файлы не скопированы.

Ошибка возникает в модуле формы ЗагрузкаАдресногоКлассификатора в Процедуре ЗапуститьФоновуюЗагрузкуИзКаталогаКлиентаПродолжение(). Не выполняется метод платформы НачатьПомещениеФайлов.

Лечится довольно просто. Комментируем переставшую работать процедуру НачатьПомещениеФайлов.

//    НачатьПомещениеФайлов(ОписаниеОповещения, ПомещаемыеФайлы,, Ложь, УникальныйИдентификатор);

Копипастим код из УТ11.4:

ПараметрыЗагрузкиФайла = ФайловаяСистемаКлиент.ПараметрыЗагрузкиФайла();
ПараметрыЗагрузкиФайла.ИдентификаторФормы = УникальныйИдентификатор;
ПараметрыЗагрузкиФайла.Интерактивно = Ложь;
ФайловаяСистемаКлиент.ЗагрузитьФайлы(ОписаниеОповещения,ПараметрыЗагрузкиФайла , ПомещаемыеФайлы);

Так это выглядит в среде разработки:

 

 

В 1С: EDT удобно: сразу два проекта  в одной среде открыты, и перепиленная устаревшая конфигурация и текущая актуальная версия. Можно сравнивать, объединять, например, две формы между собой. Именно эта фишка EDT позволяет быстро найти решение.

Внимательный читатель замети на скриншоте выше в левом нижнем углу в окне "трассировка стеков" сообщение: "Поле объекта не обнаружено (Интерактивно)". Сообщение осталось от предыдущего шага багофикса.

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

Если выскочат ошибки, тогда уже откатить изменения и погрузиться в детали кода и вдумчиво его объединить. В случае с загрузкой классификатора автоматическое объединение не сработало. После объединения появилось обилие синтаксических ошибок (контактная информация существенно переработана на уровне БСП). Откатываемся легко благодаря связке 1c EDT+Git. Переходим в окно "Индексирование Git", выделяем все неиндексированные изменения и нажимаем в подменю выделения "Заменить на Head ревизию". Конфигурация возвращается в состояние перед объединением. Переходим к ручному копипасту.

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

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

Вот например, в этой же УТ 11.1 в обработке регистрации объектов для обмена при попытке зарегистрировать объекты по отбору возникала ошибка:

Ошибка отображения типов:
Отсутствует отображение для типа 'ДинамическийСписок'
{Обработка.РегистрацияИзмененийДляОбменаДанными.Форма.Форма.Форма(1079)}:    ТекПараметры = Новый Структура("ДействиеВыбора, ИмяТаблицы", 
{Обработка.РегистрацияИзмененийДляОбменаДанными.Форма.Форма.Форма(379)}:        ДобавитьРегистрациюВСписокОтбор();

по причине:
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
Запись значения свойства 'param':
    форма: Элемент
    имя: {http://v8.1c.ru/8.2/managed-application/modules}param
по причине:
Ошибка отображения типов:
Отсутствует отображение для типа 'ДинамическийСписок'

Кликаем удерживая Ctrl на обработку РегистрацияИзмененийДляОбменаДанными в обеих проектах конфигураций, в подменю выделения выбираем сравнить/объединить. Обнаруживаем, что объединение произошло по 20 объектам без синтаксических ошибок (ни одной пиктограмки ):

 

 

Запускаем отладку, убеждаемся, что регистрация работает:

 

 

Описанным методом выполнена адаптация модулей интеграции 1С Sbis и 1С Диадок - в текущую конфигурацию подгружены модули контактной информации, в которых происходили ошибки. Таким же образом добавлен обмен с БП 3.0 в формате EnterpriseData_1_3_2. 

Успешные изменения добавляем в индекс, указываем сообщение коммита и очередное изменение уходит в историю:

 

 

Внимательный читатель, знакомый с Git, заметил прямую линию с точками коммитов, вместо ветвления и слияния веток. Почему так вышло, тема отдельной статьи: 1С:EDT + Git (сколько человек в команде для рационального использования), которая выйдет позже.

EDT

См. также

EDT Программист Бесплатно (free)

Новый механизм отладки в 1С: Предприятие значительно упрощает процесс отладки приложений на пустой базе данных. Он позволяет разработчикам подключаться к базе данных, предоставленной пользователем или бизнесом, и отлаживать конфигурацию без необходимости иметь все данные у себя. Этот механизм особенно полезен для отладки внешней обработки обмена данными в Enterprise Data, где используется множество баз источников данных. Настройка сервера отладки и подключение к нему через EDT позволяет разработчикам эффективно перехватывать сеансы и отлаживать базы данных, которые не находятся в их проекте.

20.09.2024    7794    kraspila    25    

3

EDT Групповая разработка (Git, хранилище) Программист Платформа 1С v8.3 Бесплатно (free)

Заказчики любят EDT+Git за прозрачность и контроль качества. А у разработчиков есть две основные причины не любить EDT – это тормоза и глюки. Расскажем о том, что нужно учесть команде при переходе на EDT+Git.

14.08.2024    7695    lekot    34    

8

DevOps и автоматизация разработки EDT Бесплатно (free)

Даже в рамках одной компании подходы к организации командной разработки могут отличаться: методикой работы с ветками, организацией тестовых и разработческих контуров, параллельным использованием хранилищ или полным переходом на Git. Расскажем, какие варианты распределения серверных стендов и организации CI/CD выбрали для своих команд тимлиды двух отделов, и как у них происходило внедрение 1С:EDT.

05.09.2023    1934    WhatIsLoveMakoveev    0    

5

DevOps и автоматизация разработки EDT Программист Бесплатно (free)

Использование EDT дает преимущества даже для тех, кто до сих пор остается в конфигураторе. Достаточно настроить разбор основного хранилища разработки в GitConverter и автоматизировать CI на GitLab с помощью скриптов на 1С:Исполнителе. Статья о том, как задействовать для кодовой базы проекта валидацию EDT, используя встроенный механизм GitLab Code Quality, и генерировать дымовые тесты для Vanessa Automation.

23.08.2023    6016    doublesun    25    

37

EDT Тестирование QA Программист Бесплатно (free)

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

19.07.2023    4875    yukon    12    

40

EDT Программист Россия Бесплатно (free)

Проблема не активирующегося контекста проекта в EDT и вариант ее обхода.

12.12.2022    2842    AntonChausov    2    

6

EDT Программист Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

EDT позволяет работать с кодовой базой конфигураций напрямую – использовать GIT, помещать изменения в ветки и запускать тесты до попадания в основную кодовую базу, чтобы добиться «зеленых ночных сборок» для конфигурации. Разработчик из компании «Первый БИТ» Валерий Дыков на конференции Infostart Event 2021 Post Apocalypse рассказал, как безболезненно перейти на EDT и получить преимущества работы с GIT, продолжая работать в конфигураторе.

01.09.2022    10453    Begemoth80    21    

42

EDT Механизмы платформы 1С Программист Платформа 1С v8.3 Россия Абонемент ($m)

Внешняя обработка позволяет выполнять выборочную выгрузку и загрузку объектов конфигурации 1С.

1 стартмани

26.08.2022    4580    10    user1041830    4    

9
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. pa240775 24 20.08.21 06:02 Сейчас в теме
интересно, 600+ просмотров и ни одного помидора не прилетело. В EDT кто-нибудь работает?
2. dmitry1975 341 20.08.21 11:29 Сейчас в теме
(1) Я когда-то давно пробовал запустить EDT, но быстро закрыл. С тех пор пока руки не доходили :))
3. pa240775 24 23.08.21 04:43 Сейчас в теме
(2) время пришло. начнешь работать уже не откажешься. Но надо перестроить себя от работы с целыми снимками к работе с изменениями.
4. AshWork 29.01.22 07:30 Сейчас в теме
Кто-нибудь сталкивался с тем, что под Linux в 1C EDT Навигатор не показывает объекты 1С?
Оставьте свое сообщение