Как восстановить значения реквизита в документах 1с 8.3?

1. user1041556 31.07.20 17:05 Сейчас в теме
Есть документы "Заказы", табличная часть, в ней колонка-реквизит (заполняется из справочника).
Так вышло кривыми руками, что значения очистились.
Есть копия БД и с помощью обработки - ВыгрузкаЗагрузкаXML могу заменить все документы, тем самым восстановив потерянные значения.
Но дело в том, что обработка восстанавливает все поля (реквизиты), тем самым затирая данные, которые могли измениться после создания копии, это статус заказа, комментарии и тому подобное.

Как из копии выгрузить заказы только с одним конкретным реквизитом и восстановить значение этого реквизита в рабочей БД, на затрагивая другие поля?
(версия 8.3, самописная).
Вознаграждение за ответ
Показать полностью
Найденные решения
11. o.nikolaev 199 31.07.20 19:32 Сейчас в теме +0.2 $m
(1) Самое тупое и простое:
- обработка бежит по копии базы, выгружает в текстовый документ строку с ид дока и значением реквизита
- в рабочей читаешь файл, находишь док по ид, восстанавливаешь значение реквизита.

С помощью кд 2 можно собственно написать правила чтобы восстанавливать только значение нужного реквизита. Вариантов масса в общем.
Остальные ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
4. user856012 12 31.07.20 18:03 Сейчас в теме
(1)
дело в том, что обработка восстанавливает все поля (реквизиты), тем самым затирая данные, которые могли измениться после создания копии, это статус заказа, комментарии и тому подобное.
А состав табличной части не мог измениться? Например, количество строк?
(версия 8.3, самописная)
Тогда вполне очевидно: для самописной конфигурации - самописная обработка, которая будет делать то, что уже посоветовали выше.

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

Но если файл большой (документов много), то как это сделать, если не с помощью обработки? Возвращаемся к п.1.
5. user1041556 31.07.20 18:14 Сейчас в теме
(4) Да, как раз, забыл сказать, что реквизит в табличной части.
6. user856012 12 31.07.20 18:17 Сейчас в теме
(5)
забыл сказать, что реквизит в табличной части.
Еще вы забыли ответить на уточняющий вопрос: если состав табличной части поменялся, то что делать с реквизитом в измененных строках? Например, в добавленных?
7. user1041556 31.07.20 18:22 Сейчас в теме
(6)Нет таких, с табличной части после создания ничего не меняется у нас. Только в основной части меняется.
В табличной части товары и характеристики.
У меня отличия в базах в 2 дня, я глазами уже пробежался.
Мне бы как нибудь код написать, который выгрузит документы только с одним реквизитом из ТЧ.
8. user856012 12 31.07.20 18:27 Сейчас в теме
(7)
Мне бы как нибудь код написать
Так напишите, кто мешает? Или чтобы его за вас кто-то написал и выложил... за 0.2 $m? ;-)
9. user1041556 31.07.20 18:30 Сейчас в теме
(8)Бесполезный ответ у вас, а то я сам не понимаю, что нужно писать обработку. Кроме того, можно подумать, что это какая то уникальная ситуация и ни у кого нет такой обработки, чтобы поделиться ею.
10. aka Любитель XML 31.07.20 18:54 Сейчас в теме
(9) готовое решение искать в данной ситуации не имеет смысла, по-скольку у всех "уникальные" ситуации возникают. ЗЫ: за 1,5 часа уже бы решили проблему
11. o.nikolaev 199 31.07.20 19:32 Сейчас в теме +0.2 $m
(1) Самое тупое и простое:
- обработка бежит по копии базы, выгружает в текстовый документ строку с ид дока и значением реквизита
- в рабочей читаешь файл, находишь док по ид, восстанавливаешь значение реквизита.

С помощью кд 2 можно собственно написать правила чтобы восстанавливать только значение нужного реквизита. Вариантов масса в общем.
12. user1041556 31.07.20 21:08 Сейчас в теме
(11)
кд 2

Сижу пишу код, вроде получается, думаю выгружу.
Но вопрос по загрузке - как значения реквизита попадут в нужные строки табличной части?
У строки есть код?
13. o.nikolaev 199 31.07.20 21:22 Сейчас в теме
(12) У строки есть НомерСтроки
20. gmw 02.08.20 10:42 Сейчас в теме
(13)Номер строки мог измениться при редактировании. Надёжнее искать сразу по нескольким реквизитам строки, например: Номенклатура И Количество И Сумма.
2. QuickMix 31.07.20 17:38 Сейчас в теме
Из рабочей базы подключись по COM к копии, найди нужные документы в ней, и запиши значение нужного реквизита в этот же документ в рабочей базе.
3. Albert_2008 31.07.20 17:42 Сейчас в теме
Например написать обработку которая из копии сохраняет в текстовый файл значение реквизита и номера документа. и соответственно обработку, которая будет находить в реальной базе этот документ и записывать реквизит полученный из файла.
starjevschik; +1 Ответить
14. AlexandrSmith 67 02.08.20 09:35 Сейчас в теме
Выгрузить из заранее сделанного архива все документы и восстановить обработкой:
https://its.1c.ru/db/metod8dev/content/4126/hdoc
https://its.1c.ru/db/files/1CITS/EXE/EXTREPS/UNIREPS83/UploadToXML/UploadTo­XML.zip
Наверняка, хоть один архив то у вас есть, восстановите в отдельную базу выгрузите этой обработкой и загрузите снова.
15. AlexandrSmith 67 02.08.20 09:42 Сейчас в теме
Самое большое количество способов восстановления реквизитов, элементов справочников предлагает прежде всего конфигурация Конвертация данных. В ней вы найдете массу полезных обработок, которые позволяют довольно успешно восстановить данных из разных источников данных, из разных конфигураций, пусть даже не равных по версии.
16. AlexandrSmith 67 02.08.20 09:46 Сейчас в теме
Сейчас используется Конфигурация данных 3.0
https://its.1c.ru/db/metod8dev/content/5848/hdoc
Версия 3.0.5
Новое в версии
Расширены возможности конвертации табличных частей и общих составных свойств
Оптимизирован формат выгрузки менеджера обмена
Прочие улучшения, связанные с разработкой конвертации, исправление ошибок
17. AlexandrSmith 67 02.08.20 09:48 Сейчас в теме
Статьи по восстановлению при помощи Конфигурации данных 3.0
https://its.1c.ru/db/metod8dev/content/5870/hdoc
Механизм сопоставления данных при обмене через универсальный формат

https://its.1c.ru/db/metod8dev/content/5846/hdoc
Методика работы с конфигурацией "Конвертация данных 3.0"
18. AlexandrSmith 67 02.08.20 09:51 Сейчас в теме
Достаточно установить ПКО - правило конвертации объекта. Правила создаются автоматически в большинстве случаев довольно успешно, таким образом вы сможете сконвертировать из любого архива нужный вам реквизит и данные. Если правильно создадите правила, то я уверен ничего не затрется и свободно обновиться.
19. AlexandrSmith 67 02.08.20 09:54 Сейчас в теме
Если конфигурации совершенно одинаковые используется выгрузка загрузка данных. В ней вы совершенно спокойно восстановите каждый объект. Но нужно помнить, что обычно объект восстанавливается со всеми вложениями. Это означает, если у вас были изменения во вложенных и зависимых объектах, то они соответственно затрутся.
21. user1079872 03.08.20 09:56 Сейчас в теме
Уточните, тот реквизит который восстанавливаете имеет одно значение или разные?
22. Bazin 5 03.08.20 13:31 Сейчас в теме
ИМХО: В таких случаях я пользуюсь замечательной функцией ЗначениеВФайл.
Запросом кладу данные (прям ссылки) в таблицу значений и файл, в базе-приемнике (а это копия) получаю эти же ссылки (не парясь: с состовными типа данный, НайтиПоКоду, НайтиПоНомеру.....), код сводится к "трем" строкам: ПолучитьОбъект, Установить значение, Записать.
Оставьте свое сообщение
Вопросы с вознаграждением