ВыгрузкаЗагрузкаДанныхXML по плану обмена

1. Вадим Хорошев (hvs) 28.12.16 21:17 Сейчас в теме
Здравствуйте,

Столкнулся с такой проблемой: есть план обмена (не типовой) и данные, которые зарегистрированы к обмену, как мне можно выгрузить эти данные в XML что бы загрузить их в другую конфигурацию? Конфигурации идентичные, доработанные (УТ 10.3)
есть стандартная обработка "ВыгрузкаЗагрузкаДанныхXML", там можно выгрузить данные с определенным отбором, но нельзя выгрузить данные которые зарегистрированы к обмену для определенного узла... можно просмотреть данные для выгрузки через обработку "Регистрация изменений для обмена" - но там вобще нельзя выгрузить данные...
Есть обработка "Универсальный обмен данными в формате XML" - но там необходимо указывать правила, по которым выгружать данные, но если у меня две идентичные конфигурации можно ли сделать это без написания правил обмена типовым способом? или нужно писать обработку, читать данные и выгружать их программно (или писать правила обмена? а если да, то можно ли как-то быстро их написать)?
Найденные решения
4. Sergey Andreev (starik-2005) 1291 28.12.16 22:38 Сейчас в теме
(3) а что тут показывать? Открываешь консоль запросов, в ней жамкаешь кнопочку, чтобы изменения таблиц тоже показывалось. Дальше читаешь изменения (типа "ВЫБРАТЬ Ссылка, Узел ИЗ Документ.ДокументНомерАдын.Изменения"), дальше уже по результату запроса пробежался, объекты получил и в массивчик положил, массивчик сериализовал и записал в файлик или в строку текста, из которого в другой базе прочитал, по массивчику пробежался и "ЭлементикМассивчика.Записать();" сделал. Ну 30 минут максимум.
Остальные ответы
2. Sergey Andreev (starik-2005) 1291 28.12.16 21:49 Сейчас в теме
(1) любой объект 1С можно выгрузить/загрузить тремя строчками:
Запись = Новый ЗаписьXML;
Запись.УстановитьСтроку();
СериализаторXDTO.ЗаписатьXML(Запись, Объект);
ОбъектВСтроке = Запись.Закрыть();
Чтение - в обратную сторону. написать такую обработку - дело пяти минут.
3. Вадим Хорошев (hvs) 28.12.16 22:31 Сейчас в теме
(2) Спасибо, но нужно написать код, который будет читать изменения для определенного узла и каждый объект выгружать в файл, вы не подскажете, как можно прочитать изменения, например, только документов или только записей регистра? Я новичок в планах обмена, мне бы помог хоть какой-нибудь кусочек кода... :)
4. Sergey Andreev (starik-2005) 1291 28.12.16 22:38 Сейчас в теме
(3) а что тут показывать? Открываешь консоль запросов, в ней жамкаешь кнопочку, чтобы изменения таблиц тоже показывалось. Дальше читаешь изменения (типа "ВЫБРАТЬ Ссылка, Узел ИЗ Документ.ДокументНомерАдын.Изменения"), дальше уже по результату запроса пробежался, объекты получил и в массивчик положил, массивчик сериализовал и записал в файлик или в строку текста, из которого в другой базе прочитал, по массивчику пробежался и "ЭлементикМассивчика.Записать();" сделал. Ну 30 минут максимум.
5. Вадим Хорошев (hvs) 28.12.16 23:02 Сейчас в теме
(4) Спасибо! Это гениально!
Скажите, а при выгрузке / загрузке последовательностей есть какие-то "подводные камни"? или их можно так же как обычные объекты выгрузить и загрузить и ничего перепроводить / перезаписывать не нужно?
И еще при загрузке объекта, если в каком-то его реквизите объекта нет в базе, в реквизит проставится что типо "<Объект не найден *и идентификатор объекта*> при последующей загрузке этого объекта (которого не было в реквизите) он подставится вместо <Объект не найден ...> верно?
т.е. например, загружается документ, в табличной части которого есть номенклатура, которой нет в базе, за место нее подставится <Объект не найден...> а при последующей загрузке этой номенклатуры она подставится в документ, верно? (это если выгружать без ссылок на подчиненные объекты)
И еще... можно ли как-то очистить регистрацию изменений только для определенного типа данных? т.е. для всех справочников, или для конкретного справочника / документа
6. Sergey Andreev (starik-2005) 1291 28.12.16 23:14 Сейчас в теме
(5) И? Ты ж рулишь - залей в массив все объекты. Чтобы не повторяться используй "ВЫБРАТЬ РАЗЛИЧНЫЕ". Если регистры прочитать, то они тоже сериализуются. Просто все, что тебе надо - взять и сделать, а не ждать, пока кто-то даст тебе обработку. С другой стороны, за это время можно было бы допилить "стандартную обработку" до нужного функционала.
7. Вадим Хорошев (hvs) 28.12.16 23:24 Сейчас в теме
(6) Нет нет, я как раз не жду, пока мне кто-то даст готовую обработку, я сейчас и допиливаю типовую "ВыгрузкаЗагрузкаДанныхXML" пробегаюсь по всем объектам метаданных и добавляю в выгрузку все объекты, у которых есть регистрация изменений для определенного узла. Просто, для контроля, я хотел выгружать частями, что бы мониторить выгрузку / загрузку... поэтому и задал вопросы выше... что бы после выгрузки данных определенного типа убирать только у них регистрацию изменений, что бы в следующий раз уже не выгружать их...
8. Сергей necropunk (necropunk) 5 29.12.16 10:33 Сейчас в теме
Попробуйте подсистему "Инструменты Разработчика". Можно портативную, если не хотите ничего менять. В ее составе есть обработка "Выгрузка/загрузка данных через файл", она без проблем выгружает данные по узлу.
Оставьте свое сообщение