Перенос БД

Новая тема
Обращаюсь за помощью.

Проблема:

Возникла необходимость в создании новой конфигурации на основании исходной (т.е. таже структура, с добавлением нового и удалением лишнего, но обязательно НОВАЯ). Конфигурация почти закончена. Теперь нужна подготовиться к тому чтобы прийти на фирму и за день произвести перенос информационной базы из старой в новую. Вот тут то и проблема. Для справочников обработчик написал в 2 вариантах (один переносит через txt-файл, другой через V77.Application). Но вот с другими данными я так до конца не осознал что нужно сделать.



ВОПРОСЫ:

1) Какие еще необходимо перенести данные (документы, журналы операций, регистры??)?

2) Какой способ лучше выбрать (пробовал перенести через dbf - ковырялся через FoxPro, там заморочки, структура базы не совсем понятно - перенос не сработал выдавалась ошибка при открытиии "чего-нить" в переносимой конфигурации). Получается обработчик самое надежное???

3) Какие-нить обработчики, программы, советы...что-нить что может мне помочь.



ОЧЕНЬ БУДУ БЛАГОДАРЕН. ЗАРАНЕЕ СПАСИБО!
Насколько велики изменения?



Не проще ли скопировать старую базу и сделать объединение с новым вариантом?...

Если новая БД  - передаленная старая, то система сама перенесет все данные, естественно за исключением тех, которые были удалены в новом варианте.
"Изменение, если честно не насколько велики, но они есть. Да и главное условие начальства - сделать отдельную базу и перенос из одной в другую.

Кстати, сюда же вопрос.

Делаю перенос Документов, но в документе присутствует справочник.контрагенты, но данные в документе на момент ввода документа, то есть начинаю сравнивать значение со справочником и вносить его в документ - он вносит новое значение (Например, "Скидка для контрагента").Что делать? Привожу кусок обработки



 Если ФС.Существуетфайл("d:\1с\sent_all" + "\NUL") =  0 Тогда

  Предупреждение("Путь информационной базы не найден!");

  Иначе

  V7 = СоздатьОбъект("V77.Application");

  Открыта = V7.Initialize(V7.RMTrade, "/D" + "d:\1с\sent_all" +" /M /NLogin", """");

  Если Открыта = 0 Тогда

  Предупреждение("Ошибка открытия информационной базы");  

  Возврат;

  КонецЕсли;

  Импорт1 = V7.CreateObject("Документ.РасхНакл");

  Док1=СоздатьОбъект("Документ.РасхНакл");

  Док1.Новый();

ДатаHачала='01.01.01';

ДатаКонца=РабочаяДата();

Импорт1.ВыбратьДокументы(ДатаHачала,ДатаКонца);

Импорт1.ПолучитьДокумент();

//Шапка запись  

КонтрИмпорт=V7.CreateObject("Справочник.Контрагенты");

Контр=СоздатьОбъект("Справочник.Контрагенты");  

Тов=СоздатьОбъект("Справочник.Номенклатура");

КонтрИмпорт.НайтиПоКоду(Импорт1.Контрагент.ПолныйКод(),2);

Док1.Контрагент=КонтрИмпорт.ТекущийЭлемент();

 //вот тут я в активирую элемент справочника, но данные переносятся не все.

Жду ответа, заранее спасибо."
НайтиПоКоду(,)-это функция, которая возвращает значение 0 или 1.

поставь условие на нахождение элемента... :)
"Данный ваш совет относится к случаям, когда элемента нет в справочнике - у меня такой вариант не возможен, проблема совершенно в другом.



Дело в том, что данные из справочников для документа берутся на момент переноса (например, Скидка для Дилеров aka Контрагентов, но она изменяется со временем), а мне нужно что бы переносились данные актуальные на тот момент, когда был создан документ, т.е. чтобы переносился один в один. Надеюсь, я корректно задал вопрос. Попробовал временно изменять значение реквизита справочника, а потом менять обратно после запись…Почему-то не помогает. Показываю кусок кода.



//Код урезал до минимума, чтобы не посчитали за флуд

 Импорт1 = V7.CreateObject("Документ.РасхНакл");

  Док1=СоздатьОбъект("Документ.РасхНакл");

  Док1.Новый();

ДатаHачала='01.01.01';

ДатаКонца=РабочаяДата();

Импорт1.ВыбратьДокументы(ДатаHачала,ДатаКонца);

Импорт1.ПолучитьДокумент();

КонтрИмпорт=V7.CreateObject("Справочник.Контрагенты");

Контр=СоздатьОбъект("Справочник.Контрагенты");

Тов=СоздатьОбъект("Справочник.Номенклатура");

Контр.НайтиПоКоду(Импорт1.Контрагент.ПолныйКод(),2);

Знач1=Контр.КО;

Контр.КО=Импорт1.КО1;

Док1.Контрагент=Контр.ТекущийЭлемент();

//Многое вырезанно ....

           Док1.ВидДокумента=Импорт1.ВидДокумента;

           Док1.ДатаДо=Импорт1.ДатаДо;

           Док1.НомерДок=Импорт1.НомерДок;

           Док1.ДатаДок=Импорт1.ДатаДок;

Док1.Записать();

  Импорт1.ВыбратьСтроки();



 Пока Импорт1.ПолучитьСтроку()=1 Цикл  



//Табличная часть ...



 КонецЦикла;

Док1.Записать();          

Контр.КО=Знач1;  

// КОНЕЦ



Жду ответа."
Ну дык если скидка "изменяется со временем" значит она есть периодический реквизит. Тогда надо получать его значение на ДатаДок(). (смотри как работать с пер-ми рекв-ми)
Кстати, возник по ходу такой вопрос. Открываю базу через FoxPro, смотрю - многие данные о документе хранятся в статическом ввиде - часть в ссылках.

Так вот - делаю перенос документа, если открываю документ, то из-за того что он не проведен - данные меняются в соответствиями с модулем формы, если просто просмотр - то все как нужно. Маленький побочный вопрос. Сделать Документ.Провести() я не могу, там обход документов неправильно делается. Как можно сделать пометку на документ - проведен, чтобы он не трогался, то есть не обсчитывался?
Читают тему
(гостей: 1)

Быстрый переход