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

См. также

Командная разработка облачных продуктов, используя 1С:EDT

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

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

05.09.2023    968    WhatIsLoveMakoveev    0    

4

Доработка типовой конфигурации в 1С:EDT. Разработка, тестирование, слияние, выпуск

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

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

23.08.2023    3759    doublesun    25    

33

EDT и полный стек CI/CD

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

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

19.07.2023    3161    yukon    12    

35

EDT. Не активируется проектный контекст

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

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

12.12.2022    1849    AntonChausov    2    

5

Куда привели 2 года работы с EDT

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

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

01.09.2022    8085    Begemoth80    21    

38

Ручная выгрузка и загрузка конфигурации

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

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

1 стартмани

26.08.2022    4059    10    user1041830    4    

9

Быстрое обновление базы 1С из XML-файлов конфигурации (EDT-GIT)

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

Быстрое обновление конфигурации и базы данных 1С, вместо долгого обновления из EDT (1C:Enterprise Development Tools) при использовании хранилища GIT. Непосредственное обновлении базы на сервере баз данных (минуя сервер 1С) из XML-файлов конфигурации при помощи утилиты автономного сервера 1С - ibcmd.

1 стартмани

13.07.2022    12129    8    Bitnikov    19    

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