Загрузка метаданных в СППР под Linux (исправление ошибки)

02.07.24

Разработка - Групповая разработка (Git, хранилище)

Столкнулся с проблемой при загрузке метаданных в СППР из GitLab на сервере 1С под Linux (РЭД ОС 7.3). При загрузке метаданных конфигурации, процесс загрузки длился несколько секунд и "благополучно" (без сообщений об ошибке) завершался. При этом метаданные не загружались.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Расширение с исправлением:
.cfe 12,40Kb
1
1 Скачать (1 SM) Купить за 1 850 руб.

Ошибка возникает на версии СППР 2.0.10.8. На версии 2.0.12.9 предположительно тоже, так как изменений в описанных ниже модулях не произошло.

В ходе разбирательств выяснились два момента:

  1. Для загрузки файлов конфигурации из Git-репозитория, создается файл скрипта. И проблема заключается в том, что этот файл записывается без признака x (executable) и командой bash не запускается. А еще, под Linux, по какой-то причине, файл сохраняется в формате dos, а не unix (из за символов на конце строк скрипт выполняется с ошибкой). Решить эту проблему удалось с помощью команды chmod и утилиты dos2unix
     
     Установка dos2unix

    И пришлось немного дописать код модуля: ОбщийМодуль.ОбщегоНазначенияСППР -> Функция ПолучитьФайлыИзGIT(...)
    Во всех местах, где встречается конструкция: 
    Если ЭтоWindowsСервер Тогда
    	ФайлКоманды.Записать(ФайлКомандыGit, КодировкаТекста.OEM);
    Иначе
    	ФайлКоманды.Записать(ФайлКомандыGit, КодировкаТекста.Системная);
    КонецЕсли;

    сделал вставку
     

    Если ЭтоWindowsСервер Тогда
    	ФайлКоманды.Записать(ФайлКомандыGit, КодировкаТекста.OEM);
    Иначе
    	ФайлКоманды.Записать(ФайлКомандыGit, КодировкаТекста.Системная);
    	//Вставка
    	ЗапуститьПриложение("chmod a+x " + ФайлКомандыGit, КаталогGitРепозитория, Истина);
    	ЗапуститьПриложение("dos2unix " + ФайлКомандыGit, КаталогGitРепозитория, Истина);
    	//КонецВставки
    КонецЕсли;

    Честно сказать, в Linux не силен, так что если кто подскажет, как сделать правильнее, буду благодарен )

  1. После загрузки файлов конфигурации из репозитория начинается их разбор. Но в коде, пути к файлам Linux содержат явным образом указанный разделитель "\", по этому элементы метаданных создавались с ошибками. Для исправления внес изменения в код модуля: ОбщийМодуль.ЗагрузкаМетаданныхEDT -> Процедура ОбработатьОбъектыСодержащиеСсылкиПоТипамМетаданных(Параметры)

    все строки вида
    ТипЗначения = СтрСоединить(ЭлемТипЗнч, "\");
    заменить на
    ТипЗначения = СтрСоединить(ЭлемТипЗнч, ПолучитьРазделительПути());


После этих изменений, метаданные начали корректно загружаться.

СППР загрузка метаданных git расширение

См. также

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

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

05.02.2025    3020    Nonik    10    

18

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

Когда в хранилище одновременно разрабатывают несколько команд, сортировка сделанного и несделанного при формировании релиза и проведение code review по задачам превращаются в непроходимый квест. В таких случаях нужен бранчинг. Расскажем об опыте перехода на новую схему хранения кода для ИТ-департамента.

23.09.2024    7323    kraynev-navi    3    

26

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

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

17.09.2024    6987    vatkir    16    

10

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

Называть Git новой технологией – уже смешно, но для многих 1С-ников это действительно «новое и неизведанное». Расскажем о плюсах и минусах двух главных систем контроля версий в мире 1С: Git и хранилища.

17.09.2024    13704    Golovanoff    81    

26

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

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

05.09.2024    6036    ardn    12    

15

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

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

14.08.2024    12036    lekot    35    

8
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Armando 1402 05.07.24 21:42 Сейчас в теме
Есть подозрение, что разработчики СППР ни разу его не тестировали в Linux. Загрузка метаданных из хранилища тоже не работает.
2. check2 388 23.07.24 07:38 Сейчас в теме
(1) 100% проверенная инфа они работают под форточками.
3. bo0s 17 09.08.24 23:18 Сейчас в теме
Доброго времени суток, может подскажете почему может грузить метаданные частично причем без каких либо ошибок ?
5. Live 46 03.09.24 14:29 Сейчас в теме
(3) Посмотрите имена метаданных какие формируются. У меня такое было из-за некорректного разделителя пути (если речь идет о загрузке под Linux). Как раз это вторая из двух проблем.
4. newtraveller 24 30.08.24 17:32 Сейчас в теме
Спасибо, добрый человек! В файловом варианте на ubuntu 22.04 так же из гитлаба не загружалось.

Мне помогла замена на

ТипЗначения = СтрСоединить(ЭлемТипЗнч, ПолучитьРазделительПути());


и добавить аргумент в запись файла скрипта (пример такой в этой же конфигурации в другом месте есть):

		Если ЭтоWindowsСервер Тогда
			ФайлКоманды.Записать(ФайлКомандыGit, КодировкаТекста.OEM);
		Иначе
			ФайлКоманды.Записать(ФайлКомандыGit, КодировкаТекста.Системная, Символы.ПС);
		КонецЕсли;

и все заработало!
Student1C; Alex_Iz; Live; +3 Ответить
Оставьте свое сообщение