Меню

Ошибка открытия файла импорта таблицы root

19.02.2019

Небольшая заметка, как удалось вылечить битую файловую базу 1С, с помощью утилиты tools 1cd.

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

Описание ситуации:
База Бухгалтерия предприятия 3.0, файловая, не хочет обновлять базу, выдает ошибку:
    «В процессе обновления информационной базы произошла критическая ошибка по причине:
        Ошибка СУБД:
        Ошибка SQL: Таблица не найдена ‘_Document349_VT9553’
    по причине:
        Ошибка SQL: Таблица не найдена ‘_Document349_VT9553’

    

Выгрузка базы данных в файл dt тоже выдает ошибка, но менее подробная («Ошибка СУБД»)

Тестирование и исправление отправляло конфигуратор в дамп.
Утилита chdbfl показывала «Ошибок не обнаружено»
Утилита tools_1cd, по команде «Проверка состава таблица» нашла такие ошибки:
    Проверка состава таблиц завершена с ошибками, и список из трех таблиц: _VT9553, _DataSeparationUse18106, _DataSeparationUse16595


    

При этом:

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

Проблему удалось решить с помощью утилиты Tools1C (Огромное спасибо ее создателю)

Далее список шагов, которые привели к успеху:

  1.  Определил с помощью метода ПолучитьСтруктуруХраненияБазыДанных что это за таблица, на которое ругается программа. Оказалась эта таблица «Документ.ПоступлениеИзПереработки.ВозвратнаяТара»
    Выяснил, что таких документов в базе нету вообще, и можно просто заменить эту таблицу пустой таблицей.
  2. Выгрузил конфигурацию поставщика, и создал новую базу на основании этой конфигурации. Замечание. Установил используемую платформу 8.3.8 из-за проблем совместимости с tools1C
  3. С помощью метода ПолучитьСтруктуруХраненияБазыДанных нашел название нужной таблицы в новой базе. 
    Название оказалось совсем другим: «Document452.VT13246»
  4.  Открыл новую базу утилитой tools1C, нашел нужную таблицу и выгрузил ее в файл.
  5. Изменил название таблицы на название из старой базы
    • В самой папке
    • В файле descr
    • Также поменял номер таблицы с 452 на 349 в полях ссылках, правда другие номера в ссылочных полях оставил такими, какие есть
  6.  открыл старую базу утилитой tools1C, и нажал создать таблицу из файла
  7. После этого база позволила мне выгрузить ее в файл dt.
  8. Ну а после я ее перезагрузил из dt файла. И эта уже была полностью рабочая база.

ВЫВОДЫ:

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

Добрый день!

не могли бы помочь с вопросом настройки интеграции 1С.
Дело в том, что клиент настраивает выгрузку из 1С и в ответ получает «ошибку открытия файла».

Список запросов к сайту и ответов сервера:
«type=catalog&mode=checkauth»     «success PHPSESSID 8006748f426f54badf69d25d61cc0878»
«type=catalog&mode=init»               «zip=yes file_limit=204800»
«type=type=catalog&mode=file&filename=v8_6C4F_f4.zip»    «success»
«type=catalog&mode=import&filename=import.xml»                «progress Распаковка архива завершена.»
«type=catalog&mode=import&filename=import.xml»                «progress Временные таблицы удалены.»
«type=catalog&mode=import&filename=import.xml»                «progress Временные таблицы созданы.»

Далее следует строка:
«type=catalog&mode=import&filename=import.xml»                «failure Ошибка открытия файла импорта.»  

Каталог интернет-магазина запчастей, в 1с есть номенклатурные группы и свойства товаров (производитель, марка, модель, год начала выпуска, год окончания выпуска и пр.), причем судя по всему, вместо свойств товаров, клиент использует реквизиты (это принципиально для битрикса?).

Могу показать файл выгрузки (тестовый с 2-3 наименованиями), чтобы посмотреть, в чем ошибка, хотя возможно этого и не нужно?
Помогите, пожалуйста, с чем может быть связана ошибка открытия файла импорта?

Спасибо.

С уважением,
Иван Поспелов.

I had a similar problem with one database and I’d like to share with you a possible cause/solution:

I have imported a .sql file as you did and then I went to phpmyadmin, selected the database and surprise: No tables in the database, but I went to mysql command line and did a SHOW TABLES and they do exist.

So this is what happened in my case, the original database had some VIEWS defined by a user that did not exist in my computer’s mysql users. Example:

CREATE ALGORITHM=UNDEFINED DEFINER=admin@% SQL SECURITY DEFINER VIEW cantidades AS select (…)

The user admin@% was available on the original server from where I’ve exported the database, but not on my computer.

So the fix to this solution was either to add that user, or to drop the views and create them again with a existing user.

I have choosen the second option:
DROP VIEW cantidades;
CREATE ALGORITHM=UNDEFINED DEFINER=root@localhost SQL SECURITY DEFINER VIEW cantidades AS select (…)

I’ve used root because that is the default user for my local XAMPP installation, but for security purposes I recommend using the same user you use to connect to that database.

I had a similar problem with one database and I’d like to share with you a possible cause/solution:

I have imported a .sql file as you did and then I went to phpmyadmin, selected the database and surprise: No tables in the database, but I went to mysql command line and did a SHOW TABLES and they do exist.

So this is what happened in my case, the original database had some VIEWS defined by a user that did not exist in my computer’s mysql users. Example:

CREATE ALGORITHM=UNDEFINED DEFINER=admin@% SQL SECURITY DEFINER VIEW cantidades AS select (…)

The user admin@% was available on the original server from where I’ve exported the database, but not on my computer.

So the fix to this solution was either to add that user, or to drop the views and create them again with a existing user.

I have choosen the second option:
DROP VIEW cantidades;
CREATE ALGORITHM=UNDEFINED DEFINER=root@localhost SQL SECURITY DEFINER VIEW cantidades AS select (…)

I’ve used root because that is the default user for my local XAMPP installation, but for security purposes I recommend using the same user you use to connect to that database.

Нельзя просто взять и интегрировать сайт с 1С. (с) Народное творчество.

Цель написания поста  – изложить всю информацию по теме человеческим языком.

Интеграция сайта на 1С-Битрикс: Управление сайтом и 1С — неисчерпаемый источник вопросов и проблем. На сайте идей для Битрикс в соответствующем разделе 16 страниц, на форуме про это больше 23 000 сообщений. В форме обращения в техподдержку Битрикса есть даже отдельный тип заявки «Обмен с 1С».

Считается, что интеграция 1С и сайта на Битриксе должна работать из коробки. Самые простые функции действительно можно запустить за час-два. А вот на доработку обмена можно потратить и 10, и 100 часов. 

Доработка обмена сайта и 1С — это уже магия уровня «эксперт», пугает даже бородатого опытного разработчика. В этой статье мы поговорим о том, как происходит обмен данными между этими двумя монстрами и как можно расширять возможности этого обмена. Статья содержит множество технических деталей обмена и будет полезна в основном программистам, которые хотят разобраться в предмете.

В данной статье будет рассмотрена общая теория обмена между двумя IT-системами и два стандартных обмена между 1С и сайтом на 1С-Битрикс: обмен товарами и обмен справочниками.

Немного теории

Интеграция — обмен информацией между двумя IT-системами. Иногда называют просто обмен. Определяется форматом данных, протоколом (стандартом) передачи данных, алгоритмом работы

Формат = как выглядят данные (например, XML, YML, JSON, CSV).

Протокол = как данные оказываются в другом месте (например, HTTP, SIP, SMTP, FTP). 

Алгоритм = что при этом происходит. Представляется блок-схемой или диаграммой UML Activity.

Примеры интеграций:

  1. обмен товарами между самописной учетной системой и сайтом (протокол FTP, формат CSV);

  2. парсинг курсов валюты с сайта ЦБ РФ (протокол HTTP, формат XML);

  3. интеграция сайта с Яндекс.Маркет (протокол HTTP, формат YML).

Процедуру обмена можно разделить на 3 части:

  1. Экспорт данных из системы А в требуемый формат

  2. Передача данных

  3. Импорт данных требуемого формата в систему Б.

Часто весь обмен называют «импорт» («загрузка») и «экспорт» («выгрузка»). Это не ошибка, по такой формулировкой говорящий показывает, точка зрения какой системы ему ближе. То, что для 1С экспорт товаров, для Битрикса импорт. В дальнейшем тексте статьи мы не будем использовать эти понятия, чтобы не порождать двусмысленности.

И еще одно важное уточнение. «1С» — в зависимости от контекста, это может быть компания-легенда «ООО 1С», их разработка «1С:Предприятие» или конкретная конфигурация (например, «1С: Управление торговлей» или «1С:ERP Управление предприятием») с установленным модулем обмена с сайтом .  В мире веб-разработки имеется в виду как раз последнее определение. В статье будет действовать аналогичное соглашение. Так же и с сайтом на платформе 1С-Битрикс: Управление сайтом — обычно это просто «Битрикс».

Резюме

Интеграция — обмен данными между двумя системами.

Формат — как выглядят данные.

Протокол — как передаются данные. 

1С — софт.

Битрикс — сайт.

Краткость — сестра. 

Стандартные возможности обмена 1С и Битрикса

«Из коробки» (без доработок программиста) работают 4 типа обмена:

  1. товары из 1С на сайт (тип «catalog»);

  2. справочники из 1С на сайт (тип «reference»);

  3. пользователей/контрагентов из 1С на сайт (тип «sale»);

  4. заказы (тип «sale»):

    1. из 1С на сайт;

    2. из сайта в 1С.

Протокол

Все взаимодействия между 1С и Битриксом проводятся по HTTP, синхронно. Т.о. 1С подобна браузеру, она «открывает» специальную страницу, отправляет данные (методами POST и GET) и получает текстовый ответ. Есть даже способ имитировать выгрузку из 1С браузером (и мы часто используем этот трюк во время разработки и отладки). Подробнее про отладку мы рассказали в предыдущей статье «Типовые ошибки интеграции между 1С и 1С-Битрикс».

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

Протокол синхронный. 1С отправляет следующий запрос на сайт только после получения ответа на предыдущий (или получения ошибки таймаута).

Формат

Данные передаются в двух форматах. 

Первый формат — текстовый для ответов сайта на запросы из 1С. Сайт выводит в первой строке ответа «success», если завершил некую процедуру, «progress», если продолжает ее выполнять и «error» или «failure», если была ошибка. В последующих строках могут быть дополнительные данные (зависит от каждого конкретного запроса).

Второй формат — CommerceML 2 . Основан на XML, в этом формате передаются товары, предложения, цены, склады, заказы и контрагенты (пользователи+платежные профили).

Алгоритм

Подготовка к обмену

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

Авторизация

Запрос

GET-параметры:

type=<тип обмена>

mode=checkauth

Basic access логин:

Логин сайта из настроек 1С

Basic access пароль:

Пароль сайта из настроек 1С

Ответ

Если успех:

success

<имя Cookie авторизации>

<значение Cookie авторизации>

sessid=<ID сессии>

<параметр1>=<значение1>

<параметр2>=<значение2>

Если ошибка:

failure

<текст ошибки>

Любой обмен начинается с авторизации 1С на сайте методом Basic access. В случае успеха сайт выводит «success»,  имя и значение Cookie (которую будет проверять во всех последующих запросах), id сессии и прочие параметры (зависят от type — типа обмена).

Возможные ошибки

Текст ошибки

Что делать

Ошибка авторизации. Неверное имя пользователя или пароль.

Проверить логин и пароль в Битрикс

У Вас нет прав для импорта каталога. Проверьте настройки компонента импорта.

Проверить права пользователя в Битрикс

Ошибка проверки источника запроса. Обновите модуль обмена или отключите проверку в настройках компонента

Обновить модуль обмена в 1С или выполнить php-код на сайте:

COption::SetOptionString(«catalog», «DEFAULT_SKIP_SOURCE_CHECK», «Y»);

COption::SetOptionString(«sale», «secure_1c_exchange», «N»);

Модуль Информационных блоков не установлен.

Проверить модуль iblock в Битрикс. Должен быть скачан и установлен

Включена смена идентификатора сессий. В файле подключения компонента обмена, до подключения пролога определите константу BX_SESSION_ID_CHANGE: define(‘BX_SESSION_ID_CHANGE’, false);

Выполнить предложенное действие

Время на сервере базы данных отличается от времени на веб-сервере больше, чем на 10 минут. Вероятно неправильно настроены временные зоны. Выполните настройку и повторите обмен.

Проверить настройку часовых поясов на веб-сервере и на сервере БД

Запрос настроек сайта

Запрос

GET-параметры:

type=<тип обмена>

mode=init

sessid=<ID сессии>

Cookie:

<имя Cookie авторизации>=<значение Cookie авторизации>

Ответ

Если успех:

zip=<yes|no>

file_limit=<число>

На этом шаге 1С узнает важные для обмена настройки сайта. Управление этими параметрами на сайте происходит на странице «Интеграция с 1С» в панели управления сайтом.

Параметр

Назначение

Возможные значения

zip

Сайт умеет распаковывать zip-архивы. Если yes — 1С будет загружать файлы обмена в архивах, что сильно экономит время и трафик.

yes

no

file_limit

Максимально допустимый размер файла в байтах для передачи за один HTTP-запрос. Если системе 1С понадобится передать файл большего размера, они будут разбиты на несколько частей.

целое число >= 0

Получив эти параметры, 1С начинает формирование данных для передачи на сайт. Если «zip=yes», то все файлы будут переданы как zip-архив. Иначе каждый выгружается по отдельности. Желательно включать всегда.

Возможные ошибки

Текст ошибки

Что делать

Ошибка инициализации временного каталога

При создании каталога для хранения файлов выгрузки произошла ошибка. Проверить права и путь для хранения файлов или закончилось место на диске. По умолчанию сайт складывает файлы в папку /upload/1c_catalog/.

Обмен товарами (1С -> Битрикс)

Данный тип обмена (type=catalog) используется для создания и обновления на сайте следующих сущностей:

  • инфоблок товаров;

  • UF-поля разделов в этом инфоблоке;

  • свойства элементов в этом инфоблоке;

  • инфоблок SKU;

  • типы цен;

  • склады;

  • разделы в инфоблоке товаров;

  • элементы в инфоблоке товаров (товары);

  • цены товаров;

  • наличие товаров по складам.

При обмене товарами 1С формирует XML-файлы, передает их на сайт и контролирует их обработку сайтом. 1С может передать 4 вида файлов:

В файлах с префиксом import_ — разделы каталога, товары, свойства товаров.

В файлах с префиксом offers_ — SKU.

В файлах с префиксом prices_ — цены товаров и предложений.

В файлах с префиксом rests_ — остатки товаров и предложений по складам.

На шаге авторизации в случае успеха сервер вернет дополнительный параметр timestamp (текущее время). 1С сохранит timestamp и передаст на сайт на последнем шаге обмена товарами. 

Обмен товарами

Обмен товарами

Шаг 1. Передача файла (повторяющийся)

Запрос

GET-параметры:

type=catalog

mode=file

sessid=<ID сессии>

filename=<имя файла>

POST:

Содержимое файла в виде строки

Cookie:

<имя Cookie>=<значение Cookie>

Ответ

Если успех:

success

Если ошибка:

failure

<текст ошибки>

Шаг может выполняется несколько раз. Каждый файл выгружается частями не более file_limit байт (см. предыдущий шаг) в бинарном виде через сырой POST-запрос. Сайт создает файл, если его нет. Имя файла берет из GET-параметра filename и дописывает в него переданный контент. Так продолжается до тех пор, пока 1С не передаст все части этого файла. 

Возможные ошибки

Текст ошибки

Что делать

Ошибка чтения HTTP данных

Проверить сетевое соединение между сайтом и 1С.

Ошибка открытия файла <имя файла> для записи

Проверить права на файл и папку файла у пользователя apache, под которым работает Битрикс.

Ошибка записи в файл <имя файла>

Проверить права на файл и папку файла у пользователя apache, под которым работает Битрикс.

Шаг 2. Основной

Запрос

GET-параметры:

type=<тип обмена>

mode=import

sessid=<ID сессии>

filename=<имя файла>

Cookie:

<имя Cookie>=<значение Cookie>

Ответ

Если импорт завершен:

success

Если импорт продолжается:

progress

<текущий статус>

Если ошибка:

failure

<текст ошибки>

Этот шаг — особенный. Файл уже целиком загружен на сайт и Битрикс готов его обработать. Его обработка может состоять из 11 более мелких операций, о которых 1С ничего не знает. Поэтому в параметре GET приходит mode=import (один и тот же запрос!), но сайт выполняет совершенно разные операции. Текущий прогресс Битрикс сохраняет в сессии в переменной $_SESSION[BX_CML2_IMPORT][NS]. Например, узел STEP в этом массиве отвечает как раз за номер внутренней операции импорта.

Шаг 2.1 Распаковка архива (повторяющийся, необязательный)

Ответ

Если файл распакован:

progress

Идет распаковка архива

Если файл распаковывается:

progress

Распаковка архива завершена

Если ошибка:

failure

<текст ошибки>

Шаг исполняется, только если 1С передала файл в формате ZIP. Распаковка происходит в той же директории, где лежат все файлы обмена товарами (по умолчанию — /upload/1c_catalog/). Эта операция не нумеруется внутри Битрикса (значение STEP в сессии не изменяется).

Возможные ошибки

Текст ошибки

Что делать

Ошибка распаковки архива

Проверьте работоспособность функции PHP zip_open и расширение Zip . Если все корректно — скачайте архив с сайта и проверьте его корректность вручную.

Шаг 2.2 Удаление временных таблиц

Ответ

Если успех:

progress

Временные таблицы удалены

Сессия ($_SESSION[BX_CML2_IMPORT][NS])

STEP

0

Работать напрямую с файлом XML (тем более, если он большой) неудобно и неэффективно. Поэтому все данные прочитываются во временную таблицу b_xml_tree. На этом подготовительном шаге таблица b_xml_tree, если она существует, удаляется.

Шаг 2.3 Создание временных таблиц

Ответ

Если успех:

progress

Временные таблицы созданы

Сессия ($_SESSION[BX_CML2_IMPORT][NS])

STEP

1

Таблица b_xml_tree создается. Если объявлена PHP константа BX_XML_CREATE_INDEXES_IMMEDIATELY, таблица сразу же индексируется. В конце этого шага Битрикс испускает событие OnBeforeCatalogImport1C .

Возможные ошибки

Текст ошибки

Что делать

Ошибка создания временных таблиц

Проверить права и подключение СУБД.

Шаг 2.4 Загрузка файла во временную таблицу (повторяющийся)

Ответ

Если файл читается:

progress

Обработано <число>% файла

Если файл прочитан:

progress

Файл импорта прочитан

Если ошибка:

failure

<текст ошибки>

Сессия ($_SESSION[BX_CML2_IMPORT][NS])

STEP

2

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

Возможные ошибки

Текст ошибки

Что делать

Ошибка открытия файла импорта

Проверить доступ к файлу

Шаг 2.5 Индексация временных таблиц

Ответ

Если успех:

progress

Временные таблицы проиндексированы

Если ошибка:

failure

<текст ошибки>

Сессия ($_SESSION[BX_CML2_IMPORT][NS])

STEP

3

Для повышения скорости работы импорта таблица b_xml_tree индексируется после прочтения файла.

Возможные ошибки

Текст ошибки

Что делать

Ошибка создания индекса для временных таблиц

Возможная причина: проблемы с СУБД, правами в ней или подключением.

Шаг 2.6 Импорт метаданных

Ответ

Если успех:

progress

Метаданные импортированы успешно

Если ошибка:

failure

Ошибка импорта метаданных

<текст ошибки>

Сессия ($_SESSION[BX_CML2_IMPORT][NS])

STEP

4

На этом шаге создаются или обновляются следующие данные:

  1. Инфоблоки товаров и SKU

  2. Служебные свойства каталога (с префиксом CML2_: CML2_BAR_CODE, CML2_ARTICLE, CML2_ATTRIBUTES…)

  3. Торговый каталог

  4. Свойства инфоблоков

  5. UF-поля разделов инфоблоков

  6. Типы цен

  7. Склады

  8. Единицы измерения

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

Возможные ошибки

Текст ошибки

Что делать

Отсутствует модуль «Торговый каталог». Импорт торговых предложений и цен невозможен

Пояснения не требуются

Ошибка создания типа информационных блоков

После этого сообщения следует текст ошибки API, который пояснит причину ошибки.

Ошибка добавления новой единицы измерения (код единицы: <код>)

Текст ошибки Битрикс не выведет, необходимо разобрать XML файл самостоятельно и найти причину ошибки.

Количество импортированных складов превышает разрешенное для данной редакции

Пояснения не требуются

Ошибка импорта пользовательского свойства (xml_id: <код>)

Проверить параметры пользовательского свойства

Название справочника должно начинаться с буквы и состоять только из латинских букв и цифр.

Пояснения не требуются

В выгрузке настроены цены с одинаковым названием. Продолжение обмена невозможно.

Пояснения не требуются

В редакции Малый Бизнес нет возможности иметь более одного типа цены. Настройте выгрузку из 1С или перейдите на другую редакцию БУС.

Пояснения не требуются

Шаг 2.7 Импорт разделов каталога

Ответ

Если успех:

progress

Группы импортированы

Если ошибка:

failure

Ошибка импорта метаданных

<текст ошибки>

Сессия ($_SESSION[BX_CML2_IMPORT][NS])

STEP

5

На этом шаге в инфоблоке создаются и обновляются все разделы каталога, которые были в XML файле. Сопоставление разделов из XML-файла и в БД происходит по XML_ID.

Если на сайте нет раздела с XML_ID из файла, он создается. Если есть, то выполняется сравнение полей из XML файла с аналогичными полями в БД. Если изменения нет, то Битрикс только обновляет поле TIMESTAMP_X и пропускает раздел. Если изменения есть — происходит полноценное обновление. Это происходит независимо от настроек сайта.

Для экономии ресурсов сервера добавление разделов происходит без пересчета дерева (речь о полях LEFT_MARGIN и RIGHT_MARGIN).

Возможные ошибки

Так как импорт разделов не пошаговый, при обмене большом дереве разделов на сайте может возникать ошибка превышения времени исполнения. Решения три.

  1. Увеличить время исполнения на странице «Интеграция с 1С» и в настройках сервера (nginx).

  2. Доработать 1С, чтобы ошибки на этом этапе игнорировались пока не будет получен ответ «progress».

  3. Повторить всю выгрузку несколько раз.

Объясним, как поможет повтор шага или всей выгрузки. Допустим, в XML-файле и на сайте 20001 раздел. Пусть за один проход Битрикс успевает импортировать только 10000 разделов.

№ Обмена/шага

Пропущено т.к. нет изменений

Обработано

Ответ

1

0

10000

Ошибка сервера

2

10000

10000

Ошибка сервера

3

20000

1

progress

Группы импортированы

Битрикс каждый раз обрабатывает столько разделов, сколько успевает. При повторении выгрузки первые 10000 разделов он пропустит (обновит только TIMESTAMP_X) и обновит еще 10000 разделов, пока не наступил тайм-аут. И только на 3-ей выгрузке из 1С шаг будет завершен корректно.

Шаг 2.8 Пересчет дерева разделов

Ответ

Если успех:

progress

Деактивация/удаление групп завершено

Если ошибка:

failure

Ошибка импорта метаданных

<текст ошибки>

Сессия ($_SESSION[BX_CML2_IMPORT][NS])

STEP

6

На этом шаге Битрикс выполняет две задачи:

  1. Удаление/деактивация разделов (в старых версиях модуля обмена в 1С)

  2. Перестройка дерева разделов

В старых версиях 1С отличить полную выгрузку от частичной просто: при частичной в узле «Классификатор» был атрибут СодержитТолькоИзменения=»true», при полной его не было.

В 2019 году 1С всегда выгружает этот атрибут. Если этого атрибута нет, Битрикс мог (и до сих пор может, просто этот код не используется) удалить, деактивировать старые разделы (или пропустить их). На выбор влиял параметр на странице «Интеграция с 1С». Сейчас эта настройка уже ни на что не влияет и ни деактивации, ни удаления не происходит.

Также на этом шаге пересчитываются служебные поля LEFT_MARGIN и RIGHT_MARGIN всех разделов.

Шаг 2.9 Импорт товаров (повторяющийся)

Ответ

Если идет процесс импорта:

progress

Обработано <число> из <число> элементов

Если импорт завершен:

progress

Загрузка элементов завершена

Если ошибка:

failure

<текст ошибки>

Сессия ($_SESSION[BX_CML2_IMPORT][NS])

STEP

7

DONE

Ассоциативный массив, счетчик обработанных товаров и всех товаров в файле

На этом шаге в инфоблоке создаются и обновляются все товары, которые были в XML файле. Сопоставление товаров в файле товарам на сайте происходит по полю XML_ID.

Если на сайте нет товара с XML_ID из файла, он создается. Если есть, то выполняется сравнение полей из XML файла с аналогичными полями в БД. 

Если изменения нет, и задан параметр «Использовать контрольные суммы элементов для оптимизации обновления каталога», Битрикс только обновляет поле TIMESTAMP_X и пропускает товар. Иначе происходит полноценное обновление.

При импорте товара заполняется поле TMP_ID. Значение для этого поля хранится в узле <НомерВерсии>. Если узла нет — Битрикс вычисляет контрольную сумму от всей информации о товаре из XML файла.

Возможные ошибки

Текст ошибки

Что делать

Временная таблица не существует

Ошибка возникает если с сайтом работает несколько 1С или одна 1С присылает несколько запросов одновременно. В одном потоке выполняется шаг 4.9, а другой запустил шаг 4.2.

Шаг 2.10 Деактивация/удаление товаров (повторяющийся)

Ответ

Если идет обработка:

progress

Обработано <число> из <число> элементов

Если обработка завершена:

progress

Деактивация/Удаление элементов завершены

Если ошибка:

failure

<текст ошибки>

Сессия ($_SESSION[BX_CML2_IMPORT][NS])

STEP

8

DONE

Ассоциативный массив, счетчик обработанных товаров и всех товаров в файле

На этом шаге раньше (как и на шаге  2.8 Пересчет дерева разделов ) Битрикс проводил чистку товаров. Чистка товаров происходила только если в узле “Классификатор” XML файла не было пометки СодержитТолькоИзменения=»true» (старый формат выгрузки). Есть аналогичная настройка для выбора, что делать с товарами.

В 2019 году на этом шаге ничего не происходит.

Шаг 2.11 Завершение импорта

Ответ

Если успех:

success

Импорт успешно завершен

Если ошибка:

failure

<текст ошибки>

Сессия ($_SESSION[BX_CML2_IMPORT][NS])

STEP

9

Служебный шаг. Обработки данных нет, только испускается событие OnSuccessCatalogImport1C .

Шаг 3. Деактивация старых данных

Запрос

GET-параметры:

type=<тип обмена>

mode=deactivate

sessid=<ID сессии>

timestamp=<время на сервере>

Cookie:

<имя Cookie>=<значение Cookie>

Ответ

Если успех:

success

Деактивация элементов завершена

Если ошибка:

failure

Ошибка деактивации элементов

На этом шаге в 2019 году Битрикс деактивирует все товары и разделы каталога, не затронутые в текущей сессии. Для этого время последнего изменения сравнивается с timestamp, который передает 1С — время начала текущей сессии, полученное на шаге авторизации.

Напомним, что эти настройки в панели управления сайта сейчас ни на что не влияют (всегда происходит деактивация):

Этот шаг будет выполнен, только если современная 1С делает полную выгрузку. Для выгрузки изменений и в старых версиях 1С этого шага нет.

Шаг 4. Завершение импорта

Запрос

GET-параметры:

type=<тип обмена>

mode=complete

sessid=<ID сессии>

Cookie:

<имя Cookie>=<значение Cookie>

Ответ

Если успех:

success

Завершение процедуры импорта

Если ошибка:

failure

<текст ошибки>

Служебный шаг. Обработки данных нет, только испускается недокументированное событие модуля catalog OnCompleteCatalogImport1C. Аргументы обработчика аналогичны обработчикам события OnSuccessCatalogImport1C , возвращаемого значения нет.

Обмен справочниками (1С -> Битрикс)

Данный тип обмена (type=reference) используется для создания и обновления на сайте HL-блоков. Этот тип намного короче чем обмен товарами и повторяет многие из его шагов.

Часто обмен справочниками — простой и быстрый способ расширить стандартные функции обмена.

Обмен справочниками

Обмен справочниками

Шаг 1. Передача файла (повторяющийся)

см. аналогичный шаг обмена товарами, (отличается только mode, в данном типе обмена mode=reference).

Шаг 2. Основной

Запрос

GET-параметры:

type=reference

mode=import

sessid=<ID сессии>

Cookie:

<имя Cookie>=<значение Cookie>

Шаг 2.1 Распаковка архива (повторяющийся, необязательный)

см. аналогичный шаг обмена товарами.

Шаг 2.2 Подготовка справочника

Ответ

Если успех:

progress

Найден или создан справочник. Код справочника: <ID>

Если ошибка:

failure

<текст ошибки>

На этом шаге Битрикс создает HL-блок (если не существует) и все UF-поля. В начале шага испускается событие модуля catalog OnBeforeCatalogImportHL. Событие недокументированное, в обработчики передаются массив параметров компонента и путь к XML-файлу. Обработчик может вызвать ошибку и вернуть произвольное сообщение.

Важно знать следующие особенности импорта справочников:

  • 1С не может удалить справочник или поле, только создать;

  • 1С может создать только поля следующих типов: Строка, Булево, Дата, Число;

  • все поля, создаваемые 1С будут одиночными, необязательными, скрытыми в фильтре, показанными и редактируемыми в таблице;

  • Битрикс автоматически создает поля: UF_NAME, UF_XML_ID, UF_VERSION, UF_DESCRIPTION.

Возможные ошибки

Текст ошибки

Что делать

Ошибка при создании поля в справочнике <Текст ошибки>

Изучить текст и исправить в 1С или на сайте

Ошибка при создании справочника <Текст ошибки>

Изучить текст и исправить в 1С или на сайте

Ошибка разбора XML. Код ошибки: <Код ошибки>

Расшифровать код и исправить в 1С или на сайте

Расшифровка кодов ошибок.

Код

Объяснение

10

Неизвестная ошибка парсинга XML файла

20

Невалидный XML файл

110

В XML файле отсутствует или пустой узел <Ид> справочника

120

В XML файле отсутствует или пустой узел <Наименование> справочника

210

Во время импорта UF-полей не был найден higloadblock

220

В XML файле отсутствует или пустой узел <Ид> в <Реквизит>

230

В XML файле отсутствует или пустой узел <Наименование> в <Реквизит>

240

Неизвестный <ТипЗначений> в узле <Реквизит> (допустимы только: Строка, Булево, Дата, Число)

250

Неизвестная ошибка при создании UF-поля highload блока

310

Во время элементов справочника не был найден higloadblock

320

В XML файле отсутствует или пустой узел <Ид> в <ЭлементСправочника>

330

В XML файле отсутствует или пустой узел <ЗначениеРеквизита> в <ЗначенияРеквизитов> в <ЭлементСправочника>

Шаг 2.3 Импорт элементов (повторяющийся)

Ответ

Если импорт завершен:

success

Импорт успешно завершен

Если импорт в процессе:

progress

Импортировано элементов: <число>

Если ошибка:

failure

<текст ошибки>

На этом шаге Битрикс импортирует все элементы HL-блока.

Если выгрузка была полной, Битрикс удаляет все элементы HL-блока, у которых значение поля UF_VERSION не начинается с <ID текущей сессии> + «#»

В конце шага Битрикс испускает событие модуля catalog OnSuccessCatalogImportHL. Аргументы — массив параметров компонента и путь к файлу.

Возможные ошибки

Аналогичны ошибкам на предыдущем шаге.

Формат файлов

Формат файла обмена товарами

Формат файла обмена предложениями

Формат файла обмена ценами товаров и предложений

pasted image 0 (35).png

pasted image 0 (35).png

Формат файла обмена остатками товаров и предложений

Формат файла обмена справочниками

Поясним некоторые места этого XML.

  • Узел <Ид>

    • Значение становится названием сущности (после транслитерации).

    • С префиксом «b_» становится названием таблицы (после транслитерации).

  • Узел <Наименование> Не используется. Вообще. Но если узла не будет в файле, Битрикс выдаст ошибку (sic!)

  • Каждый <Реквизит> описывается тремя узлами:

    • <Ид>

      • Значение становится XML ID поля

      • С префиксом «UF_» становится кодом поля

    • <Наименование>

      • Значение становится названием UF-поля.

    • <ТипЗначений>

      • 4 допустимых значения: Строка, Булево, Дата, Число

  • Каждый <ЭлементСправочника> описывается полями:

  • <Ид>

    • Становится значением поля UF_XML_ID

  • <НомерВерсии>

    • C префиксом <ID текущей сессии> + «#» становится значением поля UF_VERSION

  • <ЗначенияРеквизитов>

    • Реквизит Код

      • Становится значением поля UF_NAME

    • Реквизит Наименование

      • Становится значением поля UF_DESCRIPTION

    • Реквизит ПометкаУдаления

      • Не используется

    • Прочие реквизиты

      • Поля типа «Дата» представлены в формате YYYY-MM-DD HH:MI:SS.

      • Поля типа «Булево» представлены строками true или false (или пустой строкой).

Как дорабатывать обмен?

Все запросы (при стандартном обмене) 1С присылает на служебную страницу /bitrix/admin/1c_exchange.php. Но если заглянуть в файл, выяснится что вся логика скрыта в недрах модуля «Торговый каталог»  в файле /bitrix/modules/sale/admin/1c_exchange.php. Эти страницу нельзя изменять, но можно скопировать (обычно мы копируем в /bitrix/admin/1c_exchange_custom.php) и изменить адрес в 1С.

На этой странице, в зависимости от переданных GET-параметров (совсем как комплексные компоненты в режиме не-ЧПУ) подключаются разные простые компоненты. Компоненты без шаблонов.

Значительная часть логики вынесена из этих компонентов в классы. Связь видов обмена, GET-параметров, компонентов и основных классов приведена ниже в таблице. 

Тип данных

GET[type]

Компонент

Класс с логикой

Путь к классу

Заказы, контрагенты

sale

bitrix:sale.export.1c

CSaleOrderLoader

/bitrix/modules/sale/general/order_loader.php

Товары, предложения, склады, цены, наличие

catalog

bitrix:catalog.import.1c

CIBlockCMLImport

/bitrix/modules/iblock/classes/general/cml2.php

Справочники

reference

bitrix:catalog.import.hl

CBitrixCatalogImportHl

В папке с компонентом

Существует 3 принципиально разных способа доработать обмен с 1С:

  1. Не трогать стандартный обмен, использовать обработчики событий.

  2. Кастомизировать файлы обмена на стороне сайта и доработать по требованиям

  3. Выгружать нужные данные как справочники и обрабатывать самостоятельно.

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

Второй способ реализуется так:

  1. Создать собственную страницу обмена. Обычно это /bitrix/admin/1c_exchange_custom.php.

  2. На эту страницу перенести код из /bitrix/modules/sale/admin/1c_exchange.php.

  3. Кастомизировать нужный компонент обмена и заменить вызов системного компонента на вызов собственного (например, bitrix:catalog.import.1c на intervolga:catalog.import.1c) на новой странице обмена.

  4. Может понадобиться изменение логики класса. Используйте наследование (например, класс IntervolgaCustomExchangeCml может быть наследником CIBlockCMLImport и переопределять метод ImportElements).

После правок на сайте нужно изменить параметр «Адрес сайта и путь до скрипта обмена» в 1С. Имя пользователя и пароль одинаковые как для стандартного обмена, так и для доработанного.

Настройка обмена в 1С с интернет-магазином

Настройка обмена в 1С с интернет-магазином

Третий способ (через справочники) подходит, если у нужной сущности 1С совсем нет аналога на сайте или по каким-то причинам стандартный импорт совсем не годится. У модуля highloadblock есть все необходимые события (создание, редактирование, удаление) и для ненагруженных проектов это достаточно неплохое решение. 

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

Отладка обмена — отдельный больной вопрос. Обычно решается логированием всех происходящих в недрах Битрикса процессов. В ИНТЕРВОЛГЕ разработали свою систему логирования обмена, которая представляет весь процесс в виде диаграммы Гантта. На ней сразу видно, если идут одновременно 2 обмена или 1С не дожидается ответа и начинает слать новые запросы.

Заключение

Часто самой сложной задачей в процессе разработки является именно интеграция с 1С. Отчетливое понимание происходящих в Битриксе процессов необходимо для серьезных проектов. 

Источник: блог ИНТЕРВОЛГИ.

Среди многих фирм, выполняющих продажу и установку 1С, наша компания имеет ряд неоспоримых преимуществ:

  • Работа в IT-сфере с 2003 года

    Многолетний опыт обеспечивает возможность решать задачи любой сложности – от типового внедрения 1С до разработки и настройки индивидуальных программных продуктов. Знания и умения специалистов компании подтверждены сертификатами.

  • Безупречная репутация

    Мы дорожим своей репутацией, безупречность которой подтверждают наши клиенты – более 4500 компаний и 400 государственных учреждений России.

  • Специалисты высшего уровня

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

  • Нацеленность на результат.

    Любая задача по автоматизации бизнеса — системы быстрого внедрения программного обеспечения, специально разработанные специалистами компании.

  • Разумные цены

    Привлекательные цены – официальные программы

ошибка считывания вторичной информации (

Я
   ДенисЧ

14.01.16 — 09:21

Вот и мне пришлось с таким разбираться.

буха (по-моему 2).

По словам пользователя: под новый год всё честно выключено было. Без сбоев питания и аварийных отключений. После нового года одна из 6 баз выдаёт такое сообщение.

Забрал 1cd себе (то есть кеш ни причём).

Конфигуратор не запускается, предприятие не запускается.

chkdbfl ошибок не выдаёт.

Что делал: по статье http://catalog.mista.ru/public/175344/ прогнал обе обработки — всё вроде прочиталось и видно.

tool_1cd тоже прочитал.

в ней делаю выгрузку конфигурации (обеих, и рабочей, и БД) — файлы получаются по 166М — вроде нормальные.

Загружаю в пустую — процесс идёт похожим на штатную. После завершения — конфигурация всё равно пустая.

Что ещё можно пробовать? Или сразу в морг?

Да, в 1с пользователь запрос отправил, пока ждёт.

   Лефмихалыч

1 — 14.01.16 — 09:26

а версии платформы у пользователя до НГ, у пользователя после НГ и у тебя какие?

   Лефмихалыч

2 — 14.01.16 — 09:30

перечисленные тут таблички сносить пробовал?

v8: Ошибка считывания вторичной информации

   Лефмихалыч

3 — 14.01.16 — 09:31

точнее не таблички, а записи из params

   ДенисЧ

4 — 14.01.16 — 09:37

(1) У пользователя не менялись, 8.3.6 какая то

У меня я пробовал на 8,3,5,1248, 8,3,5,1517, 8,3,6,2299

   ДенисЧ

5 — 14.01.16 — 09:39

(2) Снёс. Результат тот же.

   vde69

6 — 14.01.16 — 09:44

бекапы надеюсь есть?

   ДенисЧ

7 — 14.01.16 — 09:49

(6) Если бы они были, я бы не парился так )))

   mehfk

8 — 14.01.16 — 09:55

Если БП все-таки вторая, может ее под 8.2 попробовать запустить?

   ДенисЧ

9 — 14.01.16 — 10:05

(8) То же самое.

   vde69

10 — 14.01.16 — 10:13

tool_1cd — выгрузи конфигурацию (все три по очереди) и попробуй ее загрузить в пустую базу

если в конфигурациях нет ошибок — иди по (2)

   Guk

11 — 14.01.16 — 10:23

(7) эхххх. ничему вас жизнь не учит…

   ДенисЧ

12 — 14.01.16 — 10:23

(10) Ты внимательно прочитал (0)? )))

Я выгружал конфигурации (все две) и далее по тексту…

(11) я об этой конторе узнал только вчера ))) Мои все базы, разумеется, регулярно архивируются…

   PuhUfa

13 — 14.01.16 — 10:31

А что если взять типовую рабочую базу и из нее таблицу CONFIG засунуть в битую?

   Лефмихалыч

14 — 14.01.16 — 10:33

(12) если выгрузить конфигурацию из больной базы и загрузить конфигурацию в пустую базу, конфигуратор будет пустой или нет?

   ДенисЧ

15 — 14.01.16 — 10:34

(13) Если ты расскажешь, как это сделать в файловой базе…

(14) кто ж вас читать-то учит… Не заходит в конфигуратор…

   Лефмихалыч

16 — 14.01.16 — 10:36

(15) > Если ты расскажешь, как это сделать в файловой базе…

а как ты тогда записи из params удалял?

   ДенисЧ

17 — 14.01.16 — 10:38

(16) Через Tool_CD

   Лефмихалыч

18 — 14.01.16 — 10:45

(17) конфигурацию через него что мешает выгрузить?

   ДенисЧ

19 — 14.01.16 — 10:47

(18) Откуда? Из типовой?

Судя по содержанию конфига — там она обновлялась… На какую — не знаю.

   PuhUfa

20 — 14.01.16 — 10:48

   Лефмихалыч

21 — 14.01.16 — 10:49

(19) в configsave есть записи?

   ДенисЧ

22 — 14.01.16 — 11:02

(21) Есть.

   PuhUfa

23 — 14.01.16 — 11:02

+(20) Еще как вариант:

Сохраняем проблемную таблицу CONFIG в xml.

Сохраняем из рабочей базы таблицу CONFIG в xml.

Утилитами сравнения файлов сверяем их и смотрим расхождения. Тем же Tool_CD правим руками найденные расхождения.

   bolobol

24 — 14.01.16 — 11:10

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

   ДенисЧ

25 — 14.01.16 — 11:14

(24) Какой ты умный… Я промо тащусь, как удав по стеклобазе…

База скопирована на другой комп! Её там в списке вообще не было!

   Одинесю

26 — 14.01.16 — 11:14

(24) Сейчас дядьки тебе все скажут)

   Лефмихалыч

27 — 14.01.16 — 11:20

(22) а если их иопнуть?

   PuhUfa

28 — 14.01.16 — 11:23

+(23) Ну и под конец -)

В Tool_CD 0.3.0 Alfa

реализован экспорт/импорт таблиц

http://catalog.mista.ru/upload/iblock/f2d/ss05.png

   bolobol

29 — 14.01.16 — 11:23

(25) Ну, тащись дальше тогда) приятного путешествия!

   PuhUfa

30 — 14.01.16 — 11:24

Кнопка «Экспорт текущей таблицы»

По этой кнопке создается каталог с именем текущей таблицы в каталоге импорта/экспорта таблиц. В созданный каталог записываются все 4 файла текущей таблицы (DESCR, DATA, INDEX и BLOB), а также вспомогательный файл root.

Кнопка «Импорт текущей таблицы»

По этой кнопке в директории импорта/экспорта таблиц ищется каталог с именем текущей таблицы. Если каталог найден, у текущей таблицы перезаписываются файлы DATA, INDEX и BLOB файлами из найденного каталога. Файл DESCR при этом остается неизменным! Это позволяет, например, переносить данные из другой базы с такой же конфигурацией, но с другими именами таблиц (другой нумерацией объектов конфигурации). Для этого нужно будет только переименовать каталог с именем выгруженной таблицы, и присвоить ему имя таблицы, в которую мы импортировать данные. Если при этом порядок полей, количество и тип (но не имена!) будут не совпадать, таблица получится битая!

   ДенисЧ

31 — 14.01.16 — 11:30

(27) Из CONFIGSAVE грохнул всё с именами гуидов — не помогло.

сейчас пытаюсь то же сделать с config… но там много…

   ДенисЧ

32 — 14.01.16 — 11:31

(27) или предлагаешь всё из саве грохнуть?

   ДенисЧ

33 — 14.01.16 — 13:17

Прогнал тестирование формата потока через TOOL_1CD

выдала пачку ошибок на таблицы с гуидными именами в CONFIG.

Эти таблицы важны? Их можно просто грохнуть?

   Лефмихалыч

34 — 14.01.16 — 13:23

(32) да, предлагаю. В норме конфигсэйв пустой.

(33) давай закончим с конфигсэйвом сначала. Я б конфиг б не трогдал б…

   ДенисЧ

35 — 14.01.16 — 13:47

(34) Конфигсейв почистил. результата 0.

   Лефмихалыч

36 — 14.01.16 — 13:52

(35) попробуй при помощи tool_1cd выгрузить CONFIG из больной базы и подменить им CONFIG  в пустой базе и потом зайти в пустую эту базу. Чтоб, значит, убедиться, что проблема в конфигурации, а не в чем-то еще.

   PuhUfa

37 — 14.01.16 — 13:54

(36) делал же уже в (0)

   ДенисЧ

38 — 14.01.16 — 14:07

(37) я не это делал.

(36) сейчас попробую.

   ДенисЧ

39 — 14.01.16 — 14:17

   PuhUfa

40 — 14.01.16 — 14:21

(39) почему ты не хочешь в больную базу загрузить CONFIG из аналогичной здоровой?

   ДенисЧ

41 — 14.01.16 — 14:22

(40) Потому что я не знаю, что брать за аналогичную.

Я эту базу живой никогда не видел.

   PuhUfa

42 — 14.01.16 — 14:30

(41) в константах записана. Например для типовой БП 2.0.64.42 — таблица:

_CONST10142

   ДенисЧ

43 — 14.01.16 — 14:35

(42) Значит, у меня другая. Ибо такой константы нет…

Только если методом тыка искать по содержаниююю

   ДенисЧ

44 — 14.01.16 — 14:36

(42) Нашёл 10003. 2,0.64,42

так что…

попробую, конечно…

   Лефмихалыч

45 — 14.01.16 — 14:55

(39) я думаю — это писец…

   Масянька

46 — 14.01.16 — 14:56

А не вирусы?

Теперь пользователь научится (и главное!) запомнит, что нужно делать бекапы 🙁

   ДенисЧ

47 — 14.01.16 — 15:05

(46) Вирусы избирательные? Одну из 6?

(45) Вот и я боюсь этого…

   ДенисЧ

48 — 14.01.16 — 15:13

Сотворил чистую 2,0.64,42 — там вообще другие таблицы констант…

так что такой способ не подойдёт

   PuhUfa

49 — 14.01.16 — 15:21

(48) тебе же не константы загружать а табличку CONFIG (это cf’ник) Отсортируй по FILENAME и сравни.

У меня сейчас перед глазами 2.0.64.42 и 2.0.54.12

Значения в FILENAME таблицы CONFIG совпадают, хотя это базы разных фирм и никак между собой не были связаны

   PuhUfa

50 — 14.01.16 — 15:23

Терять то тебе нечего.

Если это не прокатит, то останется руками попробовать прибить записи на которые тебе TOOL_1CD в (33) ругался.

У меня больше других вариантов пока нет

   Масянька

51 — 14.01.16 — 15:32

(47) Ну, увидели не сразу или открыли только одну. Или фиг его знает. Ты настолько хорошо понимаешь вирусописателя?

На первой работе — пришел новый админ… Очень он увлекался написанием бяки… Так вот я одну запустила… Через пару секунд просто выключили комп — около 40% инфы капут.

Ну, тебе виднее.

Инфы там много было? Бэкапов нет в принципе?

   ДенисЧ

52 — 14.01.16 — 15:33

(51) Инфы не знаю, я же живую базу не видел )))

350 метров CD.

   Лефмихалыч

53 — 14.01.16 — 15:34

(49) с учетом того, что в загружаемом конфиге ссылки на объекты, которые в больной базе называются иначе (и вероятно имеют другие гуиды), этот ход добьет базу окончательно

   Масянька

54 — 14.01.16 — 15:37

(52) Спроси у зверей. А бэкапов (хоть старых) нет точно?

   mehfk

55 — 14.01.16 — 15:43

(53) Если конфа не менялась и схема живая, то не прибьет. Это вообще чуть ли не первое что делается — проверяется конфигурация путем выгрузки в tool_1cd и попытке создания базы, при необходимости загружается с помощью него же загружается.

   ДенисЧ

56 — 14.01.16 — 15:48

(55) Если ты внимательно прочитал (0), то это уже было сделано. Тоже почти в первую очередь.

   mehfk

57 — 14.01.16 — 15:53

Где написано, что ты загрузил рабочую конфигурацию в поломанную базу?

   ДенисЧ

58 — 14.01.16 — 16:00

(57) Написано, что для начала я её загрузил в пустую. и написан результат.

   ДенисЧ

59 — 14.01.16 — 16:01

(57) Кроме того, где я тебе рабочую из поломанной возьму?

   mehfk

60 — 14.01.16 — 16:04

(59) Скучно будет — высылай базу, попробую сам поднять.

  

   PuhUfa

61 — 14.01.16 — 16:06

   PuhUfa

62 — 14.01.16 — 16:11

Вся информационная база представляется в базе данных в виде набора таблиц. Среди них есть несколько таблиц, которые обязательно присутствуют в представлении любой информационной базы:

Config — основная конфигурация информационной базы. Эта конфигурация соответствует реальной структуре данных и используется 1С:Предприятием 8.0 в режиме Предприятия.

ConfigSave — конфигурация, редактируемая Конфигуратором. Конфигурация из ConfigSave переписывается в Config при выполнении «Обновления конфигурации базы данных» в Конфигураторе, а наоборот — при выполнении в Конфигураторе операции «Конфигурация — Конфигурация базы данных — Вернуться к конфигурации БД».

Files содержит служебную информацию, например, о работе с хранилищем конфигурации.

Params содержит параметры информационной базы. Среди них:

Национальные настройки информационной базы.

Таблица соответствия объектов метаданных и объектов базы данных (таблиц, полей, индексов).

Некоторая другая информация.

_YearOffset — смещение дат в базе данных. Эта таблица создается только при использовании Microsoft SQL Server.

DBSchema содержит информацию о структуре базы данных 1С:Предприятия и определяет другие объекты базы данных, используемые данной информационной базой.

v8users  — cписок пользователей.

_UsersWorkHistory  — история работы пользователей.

_SystemSettings  — хранилище системных настроек.

_RepSettings  — хранилищe настроек отчетов.

_RepVarSettings  — хранилище настроек вариантов отчетов.

_CommonSettings  — хранилище общих настроек.

_FrmDtSettings — хранилище настроек данных форм.

   mehfk

63 — 14.01.16 — 16:14

  

PuhUfa

64 — 14.01.16 — 16:19

(63) номер он уже в таблицах _CONST нашел -)

Самая частая причина ошибки режима доступа к файлу базы данных (файл 1Cv8.1CD в версии 1C 8.3) — права доступа «только на чтение». Они устанавливаются автоматически при копировании файлов с DVD, CD-диска или иного внешнего носителя.

В результате 1C видит файл, но не может что-то записать в него или считать оттуда из-за отсутствия прав. Проблема с доступом «только для чтения» актуальна для Windows. В MacOS и Ubuntu другие проблемы — к примеру, ошибка появляется при отсутствии root-прав у пользователя.

Быстрые решения (от наиболее вероятного — к наименее):

  1. Убрать флажок «только для чтения» в Свойствах файла.
  2. Проверить права доступа пользователей: текущего и Сервера 1C (вкладка Безопасность).
  3. Открыть Диспетчер задач и завершить скрытые процессы 1cv8.exe.
  4. Проверить, не блокирует ли антивирус файлы или процессы.
  5. Перезагрузить компьютер и, если есть возможность, рабочий сервер.

Подробные инструкции:

  • Решение для 1С на Windows
  • Решение для Mac OS и Ubuntu

Ошибка режима доступа к БД в MacOS

Решение ошибки на Windows

Если режим доступа к файлу БД был нарушен из-за копирования или переноса файлов, проблема решается в несколько кликов. Нужно зайти в свойства базы данных и снять галочку «только для чтения», чтобы 1С смог получить доступ к содержимому.

  1. Нажать правой кнопкой мыши на базе данных 1Cv8.1CD.
  2. В контекстном меню выбрать Свойства.
  3. В открывшемся окне перейти на вкладку Общие.
  4. Убрать галочку Только для чтения, сохранить изменения.

В 90% случаев эти действия помогают, поскольку ошибка из-за прав доступа при копировании — самая частая и самая безобидная. Ошибка режима доступа к файлам базы данных может возникать из-за других проблем с доступом или безопасностью.

  1. Проверить права доступа к базам данных для всех пользователей. Выделить папку или файлы — 1Cv8.1CD, 1Cv8.log и другие связанные с БД, если есть. Нажать по ним правой кнопкой мыши, перейти в Свойства -> Безопасность и выбрать Добавить -> Полные права для всех нужных пользователей. Если при подключении к БД не указывается пользователь, значит работа ведется под аккаунтом Гостя — ему необходимо установить полные права.
  2. Добавить файл 1Cv8.1CD или другую базу данных (разрешение *.1CD) в списки исключений антивирусов. Касперский и ряд других популярных антивирусных программ могут часто перепроверять этот файл, что приводит к сбоям при подключении.
  3. Ошибка может возникать, если база данных располагается на диске C://, если их несколько. Решение — перенести БД на диск D:// (буква диска может быть другой).

Сложный случай — с «плавающей ошибкой», когда она то возникает, то пропадает. Это значит, что к базе данных в это время подключается какая-то другая программа, поэтому запись или чтение ограничено. Исправить проблему не получится, если не найти, каким еще софтом используется программа.

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

Решение для Mac OS и Ubuntu

Ошибка с режимом доступа по сети к базе данных 1Cv8.1cd возникает и на MacOS/Ubuntu. Решение простое — если 1C запускать в режиме root, то проблемы с доступом к файлу БД не возникает.

Чтобы пользователь мог работать без root-прав, нужно:

  1. Сделать открытую папку в разделе /home.
  2. Дать полные права для этой папки для нужного пользователя или группы пользователей.

Для назначения прав можно воспользоваться командой %ГруппаПользователей ALL=NOPASSWD: /bin/mount, /bin/umount. Суть проблемы с правами аналогична Windows, только на Mac OS и Ubuntu сложнее организована система прав доступа к файлам.

Версия 1C 8.3.7.1845 и выше для Mac OS имеет статус бета-версии. В этой версии не поддерживается работа с информационной базой, если она расположена на сетевом ресурсе (подробнее). Иначе говоря, 1C работает только с локальными БД и не будет работать с сетевыми.

Приложил скриншоты со список файлов.

Я изначально сделал предположение, что проблема из-за «выгрузки изменений». Но судя по выгрузке — она полная, и способ обхода, описанный выше, тут ни при чем. Собственно, файла diff.txt в котором список изменений — нет.

у нас GitConverter работает на Debian 9.9 без GUI, используем Fake Xserver xvfb-run. Для этого в конфигурации внесли небольшие изменения, типа
СтрокаКоманды = «bash -c «»/usr/bin/xvfb-run -a » + СтрЗаменить(СтрокаКоманды,»»»»,»») + «»»»;.

Предполагалось, что команду /usr/bin/xvfb-run -a /opt/1С/1cv8/bin нужно прописывать в константе «Путь к версиям платформы на сервере».

Рандомным образом получаем ошибку выше.
При этом если запустить команду в Ubuntu 18.04 Desktop (с GUI) — ошибки нет.

Можете провести эксперимент:

  1. Выполните импорт текущей полной выгрузки в EDT в режиме без GUI из консоли ring edt workspace import ... как тут https://github.com/1C-Company/GitConverter/blob/master/GitConverter/src/CommonModules/КонвертацияХранилища/Module.bsl#L1422 если возникает ошибка — значит в EDT теперь что-то зависит от UI при импорте (хотя раньше не было).
  2. Выполните импорт текущей выгрузки через /usr/bin/xvfb-run -a ring edt workspace import ... — если ошибки стабильно нет — то пока, как временное решение, можно стартовать весь сервер 1С через xvfb-run тогда каждая команда будет выполняться в UI.

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

А вот еще интересные материалы:

  • Яшка сломя голову остановился исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
  • Ошибка открытия файла документа этот формат файла не поддерживается t flex
  • Ошибка открытия файла блокировок 1cv8tmp 1cd