как перенести между базами ТЗ, содержащую ссылки на справочник Всем привет. Имеем такую ситуацию: Есть база на 7.7, и в ней есть некоторый справочник. В справочнике есть реквизит строка неограниченной длины В этом реквизите хранится таблица значений, преобразованная в строку методом ЗначениеВСтрокуВнутр(). |
В этой таблице - ссылки на элементы справочника Контрагенты (или какого-нибудь другого справочника, не суть важно). Выглядит это примерно так: |
[img]https://cdn1.radikalno.ru/uploads/2019/12/12/8b84ed20c09f72471f44c50858075755-full.png[/img] |
Переношу этот справочник в другую базу через текстовый файл, с помощью Export77 / Import77. (Перенос по OLE невозможен, базы находятся в разных сетях.) При переносе наткнулся на неприятный сюрприз: если переносить строковый реквизит "дословно", то при преобразовании в ТЗ получаю фигу - все ссылки на справочник пустые. В общем-то понятно, почему это произошло (потому что я перенёс внутренние идентификаторы). Непонятно другое - как это пофиксить? Кто что посоветует? |
Пока родилась следующая идея: перед переносом выполнить конвертацию ссылок. То есть, в каждом элементе справочника сделать следующее: 1) распаковать строку в ТЗ методом ЗначениеИзСтрокиВнутр() 2) запаковать обратно методом ЗначениеВСтроку() 3) записать элемент. При такой конвертации в строке будут не внутренние идентификаторы, а нормальные коды элементов, и это всё должно поехать норм. |
Нахрена передавать ТЗ, если используешь текстовый файл? Формируй сразу нормальный текстовый файл, который удобно обработать на стороне приемника. И будет счастье |
[quote=USSR;47314996] Нахрена передавать ТЗ, если используешь текстовый файл? [/quote] Я не передаю тз. Я выгружаю в текстовый файл (через Export77) справочник, в котором есть реквизит длинная строка. В этой длинной строке - ТЗ со ссылками на контрагентов. Всё это нормально затягивается в приёмник (через Import77), но когда из строки распаковываешь ТЗ, получается хрень (ссылки невалидны). Блин по новой весь сабж пришлось повторить. |
Возникает конечно резонный вопрос - кто додумался хранить таблицу значений в длинной строке в реквизите справочника? Но так исторически сложилось, это данность, с которой мне остаётся только смириться на данном этапе. (За "переделать по-нормальному" деньги не заплатят) |
(6)Ну уж извините, что заставил повториться. Как вариант, можно сделать модифицированную (нетиповую) Export77. В ней поймать выгрузку этой строки, преобразовать в ТЗ, сделать "правильную" ТЗ без ссылок, снова превратить в строку и выгрузить. То есть сделать своеобразное правило конвертации. Это дело вкуса, но мне больше нравится правильно готовить данные на стороне источника. |
8-USSR > да, это хорошее решение, допилю Export77 |
Текущее время: 08:27. Часовой пояс GMT +3. |