Имя: Пароль:
1C
1С v8
Чем вылечить битую конфигурацию исходя из конкретных симптомов? (решено)
,
0 LevelUP
 
20.10.22
09:09
Конфигурация БП3.0 доработанная
Симптомы
1. При глобальном поиске в модулях по строке - вылет "Ошибка формата потока"
2. Просто добавление документа, реквизита с последующим сохранением конфы и принятием изменений - ок
3. Сравнение с конфигурацией поставщика - ошибка "формата потока" на 70%, но потом продолжается и выводит таблицу сравнения/объединения
4. Попытка обновления - также ошибка "формата потока" на 70%, не вылетает, выдает окно сравнения/объединения. После нажатия ок в окне сравнения/объединения, на вспомогательном этапе "Создание списка ссылок" валится с ошибкой формата потока (Завершить/перезапустить...)

Ваши мнения как починить конфигурацию?
1 mikecool
 
20.10.22
09:16
Тестирование и исправление
2 DGorgoN
 
20.10.22
09:16
Кэш чистил?
3 DGorgoN
 
20.10.22
09:17
Ну и место на диске. А по сути бэкап наше всё
4 Fedor-1971
 
20.10.22
09:20
(0) пробуй создать чистую БД, обновить её CF из битой.
Пообновляй и попробуй свои сравнения

Если всё нормально, то укради конфигурационные таблицы и положи в битую (только сначала на копии !!!)
5 LevelUP
 
20.10.22
09:21
(1) нет результата
(2) да, и пробовал на другом компе и в серверном и в файловом варианте. И вообще без данных (пустая база с конфой)
6 Kassern
 
20.10.22
09:25
(5) Конфу пробовали выгружать в файлы и загружать из файлов?
7 LevelUP
 
20.10.22
09:28
(6) Нет. Попробую
8 Kassern
 
20.10.22
09:29
Ведь по сути, конфа это просто xml файлы со структурой и текстовые файлики с модулями. Там нет никакой магии.
9 Kassern
 
20.10.22
09:29
Попробуйте еще платформу обновить
10 TormozIT
 
гуру
20.10.22
09:30
Выгрузить конфигурацию в файлы
https://i.imgur.com/4zF4iLw.png
11 LevelUP
 
20.10.22
09:36
(10) Можете пояснить картинку? У меня при выгрузке конфы в файлы средствами конфигуратора - нет такого интерфейса с галками.
12 Alexor
 
20.10.22
10:25
Сталкивался на файловых.

Попробовать на другом компе и на другой платформе.

Если не поможет, накатить cf типовой, затем внести  доработки
13 LevelUP
 
20.10.22
10:36
(12) Я сейчас вношу все доработки на типовую в отдельной базе. С целью потом перелить в новую все данные через выгрузку/загрузку XML. Но вот интересно, эта боработка реквизиты (и др. объекты метаданных) по идентификаторам ищет или по имени? Есть риск того, что в новой добавленные реквизиты будут с другими идентификаторами и данные не найдут объекта в который им грузиться. Кто нибудь знает по какому принципу работает стандартная выгрузка/загрузка XML?
14 Kassern
 
20.10.22
10:37
(13) по гуидам
15 LevelUP
 
20.10.22
10:40
(14) а копипаст из конфигуратора в другой конфигуратор копирует гуид?
16 dmt
 
20.10.22
10:42
(15) Нет
17 Kassern
 
20.10.22
10:44
(15) Блин вы о чем? Вы копируете структуру базы в конфигураторе, а не данные! Гуид это идентификатор данных
18 Фрэнки
 
20.10.22
10:46
(17) да он вообще абстрактно рассуждает пока еще. Не думает, что хоть и есть универсальная загрузка выгрузка, но ей для запуска выгрузки нужен файл с правилами конвертации
19 LevelUP
 
20.10.22
10:49
(18) я про выгрузку/загрузку между идентичными, ей правила не нужны https://its.1c.ru/db/metod8dev/content/4126/hdoc
20 Фрэнки
 
20.10.22
10:50
(19) ну так сделай тестовую выгрузку одного или двух объектов на выбор и посмотри, что оно будет выгружать и где там гуиды будут использованы.
21 LevelUP
 
20.10.22
10:54
(20) Это понятно. Просто может кто знает уже.
22 Kassern
 
20.10.22
10:57
(21) Я уже написал как она работает. Вот есть у вас справочник Валюты. Если вы в новой базе создадите пару валют, то при выгрузке/загрузке данных вы задублите валюты, так как будет пофиг на код и наименование, важен будет только гуид, а он будет разным.
23 LevelUP
 
20.10.22
11:04
(22) Я не совсем про то. Вообще не про данные, а про метаданные.
Вот есть в базе источнике у документа добавленный реквизит, скажем "ИФ". Я выгружаю его вышепомянутой обработкой в файл. Затем загружаю в другую базу, в которую тоже добавил этот реквизит, с тем же именем "ИФ", ну и с тем же типом. Встанут ли данные этого реквизита "ИФ" при загрузке документа? Или он останется пуст, потому что не сойдутся идентификаторы метаданных (не данных).
Или как таковых ИД объектов метаданных не существует вообще...
24 Фрэнки
 
20.10.22
11:10
(23) Так а идентичность конфигураций в разных база обеспечишь?
Если обеспечишь, то в файле выгрузки все значения данных идут внутри тегов с именами метаданных. А при загрузки по именам и загрузится.
Но в выгрузке от каждого экземпляра объекта будет в том числе и гуид этого экземпляра, который тоже переписывается при загрузке в пустую базу или по которому идет поиск существующего экзепляра объекта в базе-приемнике
25 Kassern
 
20.10.22
11:11
(23) Встанут и заполнятся. Вот вы добавили новый реквизит в документ, как статус заказа (справочник). Такой же добавили в новую базу. Так вот, если вы Выгрузите документ с этим новым реквизитом, то в новой базе заполнится этот справочник данными из документа и с гуидами из базы источника
26 Kassern
 
20.10.22
11:12
Гуиды внутренних объектов кофнигурации вас заинтересуют, если вы вдруг решитесь, через ВИД (внешние источники данных) напрямую цепляться к таблицам другой базы. Так вот там у таблицы будет другой идентификатор.
27 Kassern
 
20.10.22
11:13
(25) а вот если вы зайдете в новую базу и в новый реквизит, в справочник на создаете вручную элементов, то будут дубли после загрузки.
28 LevelUP
 
20.10.22
11:16
<V8Exch:Data>
        <v8:CatalogObject.ИФ_ИсточникиФинансирования>
            <v8:Ref xsi:type="v8:CatalogRef.ИФ_ИсточникиФинансирования">663b9efe-b7e9-11e4-a2d8-50e549275eda</v8:Ref>
            <v8:DeletionMark>false</v8:DeletionMark>
            <v8:Code>000000002</v8:Code>
            <v8:Description>РЖД</v8:Description>
        </v8:CatalogObject.ИФ_ИсточникиФинансирования>
        <v8:ConstantValueManager.ИФна86>
            <v8:Value xsi:type="v8:CatalogRef.ИФ_ИсточникиФинансирования">663b9efe-b7e9-11e4-a2d8-50e549275eda</v8:Value>
        </v8:ConstantValueManager.ИФна86>
    </V8Exch:Data>
    <PredefinedData/>

Кусок XML c выгрузкой единственной константы.
Да верно, встанут по имени объекта метаданных, гуид метаданных вообще не выгружается в файл, все по имени делается.
29 LevelUP
 
20.10.22
11:17
(27) с данными все ясно, понятно что по гуид.
30 Kassern
 
20.10.22
11:19
(29) тогда в чем вопрос? Если вы зайдете в скуль и посмотрите как называются таблицы и какие у них идентификаторы, то поймете, что созданная новая таблица в другой базе, скорее всего будет иметь другое название. Но в вашей ситуации это ни на что не повлияет
31 LevelUP
 
20.10.22
11:24
(30) Закралось сомнение, по какому принципу один реквизит ищет свое подобие в другой базе при такой выгрузке. Проверить не было возможности сразу. Ваш ответ в (14) смутил. Потом я понял что вы про данные, а я про метаданные.
32 Фрэнки
 
20.10.22
11:28
(31) в данном случае это даже метаданными назвать нельзя, потому что только имена полей используются в качестве имен в тегах xml
33 LevelUP
 
20.10.22
11:31
А по первоначальному вопросу, в итоге удалось откачать конфу. Совет в (6) помог. Не в том смысле, что выгрузил в файлы, загрузил из файлов и все заработало. Но выгрузка останавливалась с ошибкой на определенном проценте выполнения, при этом в строке состояния можно увидеть в каком объекте ошибка. Я просто удалил эти объекты из конфигурации, их было два, на которых все падало, и оба регламентированные отчеты, которые не используются в базе. Всем спасибо!
34 Serg_1960
 
20.10.22
13:29
На будущее:
- выгрузить/загрузить конфигурацию - лучший тестер. Мало будет - есть ещё конфигурация базы данных, кроме основной. С ними двумя можно играться как хочется;
- тестировать можно не только данные (ТиИ), но конфигурацию (конфигуратор, Конфигурация - Проверка конфигурации);
- "Метаданные и их идентификаторы" https://infostart.ru/1c/articles/1168375/
- при перемещении между конфигурациями, идентификаторы  - не изменяются, они изменяются при копировании (т.е. когда новый элемент метаданных конфигурации создаётся копированием существующего).
35 LevelUP
 
20.10.22
14:00
(34) К слову, в моем случае это "Конфигурация - Проверка конфигурации" тоже валилось с ошибкой формата потока.
36 Kassern
 
20.10.22
14:08
(35) скорее всего впихнули в макет какую-то хрень, либо записалось туда инфа не полностью и чтение приводило данных приводило к формату потока.
37 LevelUP
 
20.10.22
14:25
(34) >>при перемещении между конфигурациями, идентификаторы  - не изменяются
Что понимается под перемещением? сравнение/объединение конфигураций?
38 Elf_80_lvl
 
20.10.22
14:41
(34) Тоже такое ловил. Делал проверку конфигурации и когда она валилась смотрел в строке состояние элемент. Там какая то форма крашилась, удалили её, обновился, потом через сравнение с типовым релизом её добавил обратно. Проблема ушла.
39 Serg_1960
 
20.10.22
14:51
(37) Эээ... перечитал своё собственное сообщение ещё раз... реально не совсем понятно :( Поэтому просто озвучу первоисточники отвечу цитатой:
"Общие правила обмена объектами метаданных между конфигурациями" - https://its.1c.ru/db/metod8dev/content/2291/hdoc
"Таким образом, механизмы переноса объектов можно разделить по трем уровням:
1. Механизмы которые требуют и обеспечивают строгое соответствие идентификаторов. К ним относятся сохранение / загрузка конфигурации, работа с хранилищем конфигурации, обновление конфигурации базы данных и обновление конфигурации, находящейся на поддержке при отключенной возможности изменений.
2. Механизмы, которые используют соответствие по идентификаторам, но не гарантируют их неизменность. К ним относится обновление конфигурации, находящейся на поддержке при включенной возможности изменений.
3. Механизмы, которые не используют и не обеспечивают неизменность идентификаторов. К ним относятся копирование через буфер обмена и объединение конфигурации."

(36) +1 Не всегда, но довольно часто можно успеть прочитать в строке состояния наименование объект, на котором заглючило платформу.
40 rudnitskij
 
21.10.22
00:06
(34) Кстати, мне как-то выгрузка/загрузка помогла, когда на тестовой нужный реквизит удалил, потом добавил с таким же названием и обнаружил, что теряются данные.
Выгрузил тестовую, основную, подменил гуид нужных реквизитов и все взлетело
41 TormozIT
 
гуру
23.10.22
08:24
(39) Про копирование через буфер обмена надо детальнее рассказать. Если вставка выполняется в конфигурацию, где уже есть объект с таким же ID как в буфере, то новому объекту назначается новый ID, иначе у него остается оригинальный ID.
42 TormozIT
 
гуру
23.10.22
08:57
(41) Извиняюсь. Наврал. Провел тест - скопировал справочник в буфер, выгрузил в его в файл, удалил, вставил из буфера, выгрузил в файл. Действительно ID всегда изменяется при вставке из буфера, как и обещано в ИТС.
https://i.imgur.com/Z4pP3vh.png