Форум на Kuban.ru (http://forums.kuban.ru/)
-   Территория 1С (http://forums.kuban.ru/f1040/)
-   -   как перенести между базами ТЗ, содержащую ссылки на справочник (http://forums.kuban.ru/f1040/kak_perenesti_mezhdu_bazami_tz_soderzhashuyu_ssylki_na_spravochnik-8997023.html)

EarlyBird 12.12.2019 20:46

как перенести между базами ТЗ, содержащую ссылки на справочник
 
Всем привет.
Имеем такую ситуацию:
Есть база на 7.7, и в ней есть некоторый справочник.
В справочнике есть реквизит строка неограниченной длины В этом реквизите хранится таблица значений, преобразованная в строку методом ЗначениеВСтрокуВнутр().

EarlyBird 12.12.2019 20:50

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

EarlyBird 12.12.2019 20:54

[img]https://cdn1.radikalno.ru/uploads/2019/12/12/8b84ed20c09f72471f44c50858075755-full.png[/img]

EarlyBird 12.12.2019 20:59

Переношу этот справочник в другую базу через текстовый файл, с помощью Export77 / Import77.
(Перенос по OLE невозможен, базы находятся в разных сетях.)
При переносе наткнулся на неприятный сюрприз: если переносить строковый реквизит "дословно", то при преобразовании в ТЗ получаю фигу - все ссылки на справочник пустые.
В общем-то понятно, почему это произошло (потому что я перенёс внутренние идентификаторы).
Непонятно другое - как это пофиксить?
Кто что посоветует?

EarlyBird 12.12.2019 21:08

Пока родилась следующая идея: перед переносом выполнить конвертацию ссылок. То есть, в каждом элементе справочника сделать следующее:
1) распаковать строку в ТЗ методом ЗначениеИзСтрокиВнутр()
2) запаковать обратно методом ЗначениеВСтроку()
3) записать элемент.

При такой конвертации в строке будут не внутренние идентификаторы, а нормальные коды элементов, и это всё должно поехать норм.

USSR 12.12.2019 22:51

Нахрена передавать ТЗ, если используешь текстовый файл? Формируй сразу нормальный текстовый файл, который удобно обработать на стороне приемника. И будет счастье

EarlyBird 13.12.2019 06:42

[quote=USSR;47314996] Нахрена передавать ТЗ, если используешь текстовый файл? [/quote]
Я не передаю тз. Я выгружаю в текстовый файл (через Export77) справочник, в котором есть реквизит длинная строка. В этой длинной строке - ТЗ со ссылками на контрагентов.
Всё это нормально затягивается в приёмник (через Import77), но когда из строки распаковываешь ТЗ, получается хрень (ссылки невалидны).
Блин по новой весь сабж пришлось повторить.

EarlyBird 13.12.2019 06:48

Возникает конечно резонный вопрос - кто додумался хранить таблицу значений в длинной строке в реквизите справочника?
Но так исторически сложилось, это данность, с которой мне остаётся только смириться на данном этапе. (За "переделать по-нормальному" деньги не заплатят)

USSR 13.12.2019 07:23

(6)Ну уж извините, что заставил повториться. Как вариант, можно сделать модифицированную (нетиповую) Export77. В ней поймать выгрузку этой строки, преобразовать в ТЗ, сделать "правильную" ТЗ без ссылок, снова превратить в строку и выгрузить. То есть сделать своеобразное правило конвертации. Это дело вкуса, но мне больше нравится правильно готовить данные на стороне источника.

EarlyBird 13.12.2019 09:11

8-USSR > да, это хорошее решение, допилю Export77


Текущее время: 08:27. Часовой пояс GMT +3.