четверг, 22 января 2009 г.

Миграция базы

Т.к. 1С:Предприятие за год насчитывает >> 500000 документов, и 1С-ка стала заметно медленнее работать, мне было поручено перенести документы за 2009 год в новую базу. Первое что напрашивалось, выгрузить документы в файл, и загрузить их в новой базе. Желания писать выгрузку всех видов документов как-то не было. Поэтому было решено скопировать старую базу данных, снять остатки на начало 2009 года, и удалить все документы до 2009 г. Снять остатки и внести их лучше всего документом, т.к. при необходимости можно будет восстановить хронологию. Для каждого регистра создаю документ, и объединяю в один журнал.


Рис1. Документы




Рис 2. Журнал

Выборка остатков осуществляется циклом (это вешаем на кнопку):


Рег = СоздатьОбъект("Регистр.ХХХ");
Рег.ВременныйРасчет(1);
РассчитатьРегистрыПО(ДатаДок);

Рег.ВыбратьИтоги();
Пока Рег.ПолучитьИтог() = 1 Цикл
  НоваяСтрока();
  ... ...
КонецЦикла;



Осталось только написать обработку которая удалит все документы до 31.12.08


Док = СоздатьОбъект("Документ");
Док.ВыбратьДокументы(,'31.12.08');

Пока Док.ПолучитьДокумент() = 1 Цикл
  Док.СделатьНеПроведенным();
  Док.Удалить();
КонецЦикла;

Вот и все, провожу документы в которых сохранены остатки, и запускаю пересчет за месяц

4 комментария:

  1. объяснял начальнику управления программистов, как устроен RubyOnRails. Услышав про миграции, он спросил: "это как в 1С?" (:

    ОтветитьУдалить
  2. :) да уж, 1С 7.7 убогий язык, но приносящий прибыль

    ОтветитьУдалить
  3. мне совсем непонятно, почему убогие вещи приносят прибыль больше чем отличные вещи.

    ОтветитьУдалить
  4. компания 1С заняла прочное место на рынке систем бухгалтерского и учета, и аналитического учета.
    для времени своего появления этот язык был просто великолепным, времена меняются, а язык остался на прежнем уровне, я не говорю о дополнительных возможностях которые можно использовать вместе с библиотеками v7++.
    в своей работе я стараюсь использовать стандартные возможности системы.
    после появления 8 версии многое изменилось, но 7 по прежнему остается популярна, многие организации в своей практике используют именно эту версию платформы, кроме того маркетинговая политика компании 1С построена таким образом что с клиентами на прямую они практически не работают, бОльшая часть продаж идет через дистрибьюторов, которые по прежнему продолжают поддерживать 7 версию. Кроме того 8 значительно требовательнее к ресурсам клиентской машины, что так же ограничивает возможность внедрения этой версии в организацию

    ОтветитьУдалить