Этюд: Ручное восстановление таблицы из бэкапа

Публикация № 143258

Администрирование - Администрирование данных 1С - Тестирование и исправление

13
У меня случилась неприятность – в личной базе данных полетела колонка с текстом в таблице, где хранились сообщения, накопленные в почтовой переписке за 5 лет. После запуска CHDBFL текст сообщений исчез во всей таблице, в каждой ее записи!

Всё остальное не пострадало. Я решил не восстанавливать базу из архива (с потерей последних нескольких дней), а ручками перенести тексты из бэкапа. Об этом этюд. Он будет полезен в плане демонстрации ручных навыков работы с XML.

Структура данных

Сообщения хранились в документе пимСообщение. В нем было всего две колонки для текста сообщения:

  • В колонке text хранился обычный текст сообщения
  • В колонке texth хранился текст сообщения в виде HTML, RTF и в других вариантах, в общем случае в виде Структуры, упакованной в ХранилищеЗначения.

Соответственно, нужно было восстановить только два этих поля.

Сообщений было 500 000. Стандартная ВыгрузкаЗагрузкаДанныхЧерезXML от 1С не справилась, написала – не хватает памяти.

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

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

Код выполняю непосредственно в консоли кода.

Выгрузка в XML

Код по выгрузке выглядит так:

З = Новый Запрос("ВЫБРАТЬ Ссылка, ШаблонСообщения ИЗ Документ.пимСообщение");
Выборка = З.Выполнить().Выбрать();
ИмяФайла = "R:\1.xml";

ЗаписьXML = Новый ЗаписьXML();
ЗаписьXML.ОткрытьФайл(ИмяФайла, "windows-1251");
ЗаписьXML.ЗаписатьОбъявлениеXML();
ЗаписьXML.ЗаписатьНачалоЭлемента("items");

Сч = 0;
Пока Выборка.Следующий() Цикл
    Сч = Сч + 1;
    Если Сч % 100 = 0 Тогда
        Состояние("" + Сч + " из " + Выборка.Количество());
    КонецЕсли;
 
    ЗаписьXML.ЗаписатьНачалоЭлемента("item");

    ЗаписьXML.ЗаписатьНачалоЭлемента("link");
    ЗаписьXML.ЗаписатьТекст(ЗначениеВСтрокуВнутр(Выборка.Ссылка));
    ЗаписьXML.ЗаписатьКонецЭлемента();

    Попытка
        Значение = Выборка.Ссылка.Текст;
        ЗаписьXML.ЗаписатьНачалоЭлемента("text");
        ЗаписьXML.ЗаписатьТекст(Значение);
        ЗаписьXML.ЗаписатьКонецЭлемента();
    Исключение
    КонецПопытки;

    Попытка
        Значение = ЗначениеВСтрокуВнутр(Выборка.Ссылка.ТекстХран);
        ЗаписьXML.ЗаписатьНачалоЭлемента("texth");
        ЗаписьXML.ЗаписатьТекст(Значение);
        ЗаписьXML.ЗаписатьКонецЭлемента();
    Исключение
    КонецПопытки;

    ЗаписьXML.ЗаписатьКонецЭлемента();

КонецЦикла;

ЗаписьXML.ЗаписатьКонецЭлемента();

ЗаписьXML.Закрыть();

Загрузка из XML

Код по загрузке выглядит так:

ЧтениеXML = Новый ЧтениеXML();
ИмяФайла = "R:\1.xml";
ЧтениеXML.ОткрытьФайл(ИмяФайла);

Сч = 0;
ТекОбъект = Неопределено;
Пока ЧтениеXML.Прочитать() Цикл
    Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
        //Сообщить("" + ЧтениеXML.ТипУзла + ":" + ЧтениеXML.Имя );
        Если ЧтениеXML.Имя = "item" Тогда
            Сч = Сч + 1;
            Если Сч % 100 = 0 Тогда
                Состояние(Сч);
            КонецЕсли;
            Если ТекОбъект <> Неопределено Тогда
                ТекОбъект.Записать();
                //Сообщить(ТекОбъект);
            КонецЕсли;
            ТекОбъект = Неопределено;

        ИначеЕсли ЧтениеXML.Имя = "link" Тогда
            ЧтениеXML.Прочитать();
            ТекСсылка = ЗначениеИзСтрокиВнутр(ЧтениеXML.Значение);
            ТекОбъект = ТекСсылка.ПолучитьОБъект();
        ИначеЕсли ЧтениеXML.Имя = "text" Тогда
            ЧтениеXML.Прочитать();
            Если ТекОбъект <> Неопределено Тогда
                ТекОбъект.Текст = ЧтениеXML.Значение;
            КонецЕсли;
        ИначеЕсли ЧтениеXML.Имя = "texth" Тогда
            ЧтениеXML.Прочитать();
            ТекЗначение = ЗначениеИзСтрокиВнутр(ЧтениеXML.Значение);
            //Сообщить("" + ТекОбъект + "" + ТекЗначение);
            Если ТекОбъект <> Неопределено Тогда
                ТекОбъект.ТекстХран = ТекЗначение;
            КонецЕсли;
        КонецЕсли;
    КонецЕсли;
КонецЦикла;

Если ТекОбъект <> Неопределено Тогда
    ТекОбъект.Записать();
    //Сообщить(ТекОбъект);
КонецЕсли;

ЧтениеXML.Закрыть();
13

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
1. frc 12.07.12 14:40 Сейчас в теме
А о чем статья? как блоками выгрузить данные в xml, т.к. "типовой" механизм, как всегда, не справился с объемом данных?
4. fixin 3897 12.07.12 14:53 Сейчас в теме
(1) КЭП! ;-) именно. Ключевое слово - ЭТЮД. Слова-синонимы - мастер-класс, кейс и т.п.
2. frc 12.07.12 14:41 Сейчас в теме
И Сергей, есть же раскраска кода... Воспользуйтесь, не побрезгуйте :)
3. fixin 3897 12.07.12 14:52 Сейчас в теме
(2) воспользовался, не побрезговал, но он почему то весь код после раскраски вытянул в одну строку.
я запарился и оставил как есть.
Брал отсюда: http://www.oscomp.ru/1Color.php
5. VasMart 18.07.12 14:29 Сейчас в теме
"Зачем нам готовое когда мы сами программисты?"
6. fixin 3897 18.07.12 14:40 Сейчас в теме
Оставьте свое сообщение

См. также

Обмен через Конвертацию данных 2.1 во внешней обработке + Запуск внешней обработки по расписанию (БСП)
20

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Обмен через XML

Сделаем ежедневную выгрузку и загрузку данных через конвертацию данных 2.1 из одной базы в другую. Но весь код и правила конвертации будут располагаться во внешней обработке.

сегодня в 14:10    319    John_d    8       

Подборка решений для взаимодействия со ФГИС «Меркурий» Промо

С 1 июля 2019 года все компании, участвующие в обороте товаров животного происхождения, должны перейти на электронную ветеринарную сертификацию (ЭВС) через ФГИС «Меркурий». Инфостарт предлагает подборку программ, связанных с этим изменением.

Зависает полнотекстовый поиск! Что было? Что я сделал?
14

Статья Системный администратор Программист Стажер Нет файла v8 БП3.0 Россия MS SQL Бесплатно (free) Тестирование и исправление

Всем привет. После непредвиденного выключения компьютера, глюк системы, в одной из моих баз произошел глюк, а именно, в части поиска. Я спокойно вхожу в программу, могу все делать, но как только я начинаю пользоваться поиском, программа зависает и не отвисает, ну или нужно очень долго ждать (я этого не делал). Сначала я подумал, что глючит индексация поиска, и хотел ее перенумеровать, но зайти в настройки индексации полнотекстового поиска у меня тоже не вышло, глючит при попытке проникновения в настройки, я попробовал отключить полнотекстовый поиск, программа заработала без глюков, но при использовании поиска не выполняла свою функцию.

10.01.2020    2194    VID1234    14       

Как сделать обмен данными через универсальный формат быстрее? Реализация многопоточного обмена данными
38

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Обмен данными 1С Обмен через XML

Предлагаю Вашему вниманию интересный кейс по реализации обмена данными через универсальный формат между современными типовыми конфигурациями в режиме многопоточности. Учитывая все тонкости механизмов обмена данными и сложности типовых правил конвертации, сделать это оказалось совсем не так просто.

31.12.2019    3445    ids79    14       

Перенос данных УТ 10.3 => УТ 11 / КА 2 / ERP 2 (ЕРП 2) (документы, остатки и справочная информация из "1С:Управление торговлей, ред. 10.3" в УТ 11 / КА 2 / ERP 2). Обновлен до УТ 10.3.56.х, УТ 11.4.10.х, КА 2.4.10.х и ERP 2.4.10.х! Промо

Уже более 100 компаний приобрели перенос и выполнили переход на УТ 11 / КА 2 / ERP 2 с помощью нашей разработки! Обработка перехода с УТ 10.3 на УТ 11 / КА 2 / ERP 2 позволяет перенести не только остатки на указанную дату (как типовой перенос), но и все возможные документы за выбранный период. При выходе новых релизов этих программ оперативно выпускаем обновление обработки. Предоставляем техническую поддержку. Можем сделать бесплатный тестовый перенос!

29700 руб.

"Объект не найден" - не приговор! Простой способ восстановить удаленный объект
10

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Тестирование и исправление

В статье будет рассмотрен простой способ восстановления удаленного объекта с помощью обработки «Выгрузка и загрузка данных XML».

12.11.2019    2481    OlesiaM    10       

Решение для клиент-серверной архитектуры на базе POSTGRE SQL при возникновении ошибки "Нарушена целостность структуры конфигурации"
23

Статья Системный администратор Программист Нет файла v8 1cv8.cf Бесплатно (free) Тестирование и исправление

При динамическом обновлении возможно нарушении структуры конфигурации. Об этом можно узнать по характерному сообщению: "Нарушена целостность структуры конфигурации", после чего предлагается перезапуск или завершение. Решение описано для клиент-серверной конфигурации на PostgreSQL

07.11.2019    3348    leaguener    5       

Программы для исполнения 54-ФЗ Промо

С 01.02.2017 контрольно-кассовая техника должна отправлять электронные версии чеков оператору фискальных данных - правила установлены в 54-ФЗ ст.2 п.2. Инфостарт предлагает подборку программ, связанных с применением 54-ФЗ, ККТ и электронных чеков.

Использование XML-схемы из макета внешней обработки
23

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Обмен через XML Универсальные функции

Простой способ использования XML-схем из макета внешней обработки.

28.10.2019    5039    OlesiaM    10       

Преобразование XML в таблицу значений или иной объект 1С методом XSL преобразования
42

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Универсальные функции Обмен через XML

Сразу открою интригу, напрямую прочитать XML, не содержащий объект 1С, не удастся. Статья раскрывает способы привести XML к формату, который возможно прочитать средствами платформы.

24.10.2019    5482    kraspila    27       

Новый раздел на Инфостарте - Electronic Software Distribution Промо

Инфостарт напоминает: на нашем сайте можно купить не только ПО, связанное с 1С. В нашем арсенале – ESD-лицензии на ПО от ведущих вендоров: Microsoft, Kaspersky, ESET, Dr.Web, Аскон и другие.

  • Низкие цены, без скрытых платежей и наценок
  • Оперативная отгрузка
  • Возможность оплаты с личного счета (кешбек, обмен стартмани на рубли и т.п.)
  • Покупки идут в накопления для получения скидочных карт лояльности Silver (5%) и Gold (10%)

Доработка конвертации данных КД2 (версии 2.1). Расширенная диагностическая информация при выгрузке по правилам из 1С 7.7 и при загрузке в 1С 7.7
3

Статья Программист Нет файла v7.7 v8 КД Бесплатно (free) Обмен данными 1С Перенос данных из 1С7.7 в 1C8.X Обмен через XML

Есть очень неприятная особенность при настройке обмена по правилам КД2 в момент отладки на стороне 1С 7.7, как при выгрузке из 1С 7.7, так и при загрузке в 1С 7.7. Непонятно, в каком конкретно месте формирования или разбора данных XML файла в какой именно момент споткнулась программа (произошел сбой). Я нашел способ вывода дополнительной диагностики, теперь точно известно, на каком элементе данных XML споткнулся модуль выгрузки V77Exp.ert (модуль загрузки V77Imp.ert). Теперь отладка правил обмена на стороне 1С 7.7 стала простой, выполняется на порядок проще.

18.10.2019    2638    ksnik    0       

Восстановление индексов СУБД
10

Статья Программист Нет файла v8 1cv8.cf Россия Бесплатно (free) Тестирование и исправление

Восстановление индексов СУБД на основе структуры хранения базы данных 1С.

09.10.2019    2571    kadr    2       

Академическое ГиперРасширение для 1С:Документооборота Промо

Улучшим 1С:Документооборот без снятия с поддержки

от 13 000 руб.

Практика XDTO. Нюансы
56

Статья Программист Нет файла v8 Бесплатно (free) Практика программирования Обмен через XML

Некоторые практические моменты работы с XDTO. Дополнения к очевидному.

23.09.2019    6137    Yashazz    27       

Подборка программ для взаимодействия с ЕГАИС Промо

ЕГАИС (Единая государственная автоматизированная информационная система) - автоматизированная система, предназначенная для государственного контроля за объёмом производства и оборота этилового спирта, алкогольной и спиртосодержащей продукции. Инфостарт рекомендует подборку проверенных решений для взаимодействия с системой.

Запись/Чтение XML, пример обмена по COM соединению
9

Статья Программист Нет файла v8 1cv8.cf Россия Бесплатно (free) Обмен через XML

Пример работы с XML, запись и чтение, обмен по COM между одинаковыми конфигурациями.

08.09.2019    4102    user5300    7       

Конвертация данных 2.0. Перенос справочника с иерархией групп и элементов
1

Статья Программист Нет файла v8 1cv8.cf Россия Бесплатно (free) Обмен через XML

Детективная история о том, как при переносе элементы справочника становились не "видимыми".

09.08.2019    2318    chagbig    4       

Программы для исполнения 488-ФЗ: Маркировка товаров Промо

1 января 2019 года вступил в силу ФЗ от 25.12.2018 № 488-ФЗ о единой информационной системе маркировки товаров с использованием контрольных (идентификационных) знаков, который позволяет проследить движение товара от производителя до конечного потребителя. Инфостарт предлагает подборку программ, связанных с применением 488-ФЗ и маркировкой товаров.

Исправление ошибки при открытии внешнего отчета "Не удалось обновить вспомогательные данные расширений"
2

Статья Программист Стажер Нет файла v8 Россия Бесплатно (free) Тестирование и исправление

Способы исправления ошибки при открытии внешнего отчета "Не удалось обновить вспомогательные данные расширений. Обратитесь к администратору."

30.05.2019    2845    AlkB    4       

Перенос данных КА 1.1 / УПП 1.3 => БП 3.0 (перенос остатков, документов и справочников из "1С:Комплексная автоматизация 1.1" / УПП 1.3 в "1С:Бухгалтерия 3.0"). Обновлен до версий КА 1.1.115.х, УПП 1.3.130.х! Промо

Разработка позволяет перенести остатки по всем счетам бух.учета в программу "1С:Бухгалтерия предприятия 8", ред. 3.0 на выбранную дату начала ведения учета. Также переносятся документы за период и вся необходимая справочная информация. Правила оперативно обновляю при выходе новых релизов. Рассылка обновлений правил бесплатно в течение 12 месяцев. Есть видеодемонстрация проведения переноса данных. Конфигурации при использовании обмена остаются полностью типовыми. Перенос данных возможен в Бухгалтерию 3.0 версии ПРОФ, КОРП или базовую.

24700 руб.

Конвертация 3.0. Пример доработки: два справочника в один
33

Статья Программист Нет файла v8 КД ERP2 БП3.0 Россия Бесплатно (free) Обмен через XML

Доработка правил конвертации путем расширения конфигурации: номенклатура и характеристика (ERP) в номенклатуру (БП).

15.05.2019    4626    forusing    4       

Базовый курс по разработке мобильных 1C-приложений для Android-устройств. Третий поток. Онлайн-интенсив с 11 февраля по 05 марта 2020 г. Промо

Данный онлайн-курс предусматривает изучение базовых принципов создания приложений для операционной системы Android, работающих на мобильной платформе “1С:Предприятие”. Курс предназначен для тех, кто уже имеет определенные навыки конфигурирования и программирования в системе “1С:Предприятие” при разработке прикладных решений для “обычных” компьютеров, но пока ещё не занимался разработкой 1С-приложений, предназначенных для работы на мобильных устройствах.

7500 рублей

MS SQL Ошибка СУБД: Предоставленный поток статистики разрушен. Как решить проблему с разрушенной статистикой
17

Статья Системный администратор Нет файла v8 1cv8.cf Бесплатно (free) Тестирование и исправление

MS SQL Ошибка СУБД: Предоставленный поток статистики разрушен... Как решить проблему с разрушенной статистикой

16.04.2019    3840    ikorulev    1       

Обмен данными между УПП 1.3.64.х и БП 3.0 по расписанию через Универсальный обмен данными + План обмена
3

Статья Программист Нет файла v8 УПП1 Россия Windows Бесплатно (free) Обмен через XML Перенос данных из 1C8 в 1C8

Описание доработки конфигурации УПП 1.3.64.х для выполнения обмена данными по расписанию в БП 3.0. через обработку Универсальный Обмен Данными XML и План Обмена.

09.04.2019    3936    mrcamomile    0       

Онлайн-курс "Подготовка к экзамену 1С:Эксперт и 1С:Профессионал по технологическим вопросам" с 7 по 24 апреля 2020 г. Промо

На курсе вы получите практические навыки решения задач производительности 1С, в том числе характерных для высоконагруженных информационных систем (более 1000 пользователей). Подготовка к экзамену – только одна из составляющих курса. 70% слушателей приходят за знаниями, которые позволят расти и зарабатывать, делать сложные задачи на крупных проектах.

16450 рублей

RabbitMQ + Конвертация Данных 3.0
185

Статья Системный администратор Программист Бизнес-аналитик Руководитель проекта Нет файла v8 КД Бесплатно (free) Внешние источники данных Обмен через XML Интеграция Перенос данных из 1C8 в 1C8

Предлагаем ознакомиться с хронологией проекта, проследить ход мыслей от снятия потребностей до реализации, и решить, удалось ли проектной команде найти оптимальное архитектурное решение под конкретный кейс заказчика путем совмещения двух известных, но до сих пор не пересекавшихся технологий, и получилось ли сложить плюсы и устранить минусы каждой из них.

21.03.2019    17025    barelpro    82       

22 января состоится вебинар "Использование технологии блокчейн в 1С" Промо

На вебинаре вы узнаете как использовать современную технологию блокчейн при проектировании и создании учетных систем, почему эту технологию следует рассматривать как одну из базовых. Ведущий Михаил Калимулин поделится своими знаниями основ технологии и опытом внедрения.

990 рублей

Малоизвестная хитрость определения модуля и номера строки при возникновении исключения (без запуска отладки и конфигуратора). Несколько очень удобных, но малоиспользуемых возможностей работы в конфигураторе
311

Статья Программист Нет файла v8 Россия Бесплатно (free) Тестирование и исправление

В статье описана возможность получить место возникновения исключения при работе пользователей без участия конфигуратора. Подробно описаны еще некоторые очень полезные приемы при работе в отладке.

17.01.2019    20020    PoZiTiFFF    53       

Восстановление базы 1С, ошибка источника потока
89

Статья Системный администратор Программист Нет файла v8 Бесплатно (free) Тестирование и исправление

Очередной кирпичик в основу решения проблемы восстановления работоспособности базы после динамического обновления.

09.01.2019    13591    idle    25       

Готовые переносы данных из различных конфигураций 1C Промо

Рекомендуем готовые решения для переноса данных из различных конфигураций 1C. C техподдержкой от разработчиков и гарантией от Инфостарт.

EnterpriseData – часть 2. Процесс выгрузки данных
130

Статья Программист Нет файла v8 v8::УФ Россия Бесплатно (free) Практика программирования Обмен через XML

Основные этапы выгрузки данных через ED, обработчики событий выгрузки, правила обработки данных, правила конвертации объектов, конвертация свойств первого и второго этапов, процедуры БСП, используемые при выгрузке данных, структура «КомпонентыОбмена».

26.12.2018    17140    ids79    27       

Неполадки в работе функционала конфигурации "Бухгалтерия предприятия 3.0" после переноса данных из одной конфигурации в другую через XML
6

Статья Программист Нет файла v8 БП3.0 Россия Бесплатно (free) Обмен через XML

«Подводные камни» в работе конфигурации «Бухгалтерия предприятия 3.0» после переноса данных из одной конфигурации в другую средствами XML.

18.12.2018    3161    faust0923    1