Вход | Регистрация

1С:Предприятие ::

Метки:

как лучше осуществить перенос данных?

Я
   Logan
 
09.01.04 - 07:36
Существует самописаная кофигурация на торговой компоненте, теперь заводим новую базу для бухгалтерии на основе типовой для "упрощенки". Необходимо перенести накопленную информацию за прошедший год некоторые документы необходимые для бух. учета и соответственно кучу справочников. В дальнейшем необходимо будет добовлять внов введенные документы и изменения справочников. Каким способом лучше всего осуществлять данный перенос? Кто нибудь делал что-то подобное?
 
  Рекламное место пустует
   345
1 - 09.01.04 - 08:20
Все решают эту задачу .... Судя по самописке - проще всего своими обработками ...
   Alexandr
 
2 - 09.01.04 - 09:54
Здесь есть все http://www.vitalikk.ru/html/programm.html
Смотри первую позицию в списке...
   Valentin
3 - 10.01.04 - 20:50
1c7hippo.ru  называется EximDocs
   klon
4 - 11.01.04 - 04:32
Насколько я понял, Logan только что столкнулся с такой проблемой, поэтому предложение написать такую обработку самому (345) не может быть реализовано быстро (сужу конечно по себе :-). Кроме того, необходимо не просто единовременно перенести справочники и документы из одной базы в другую, а обеспечить дальнейший перенос обновленных данных из одной базы в другую. Т.е. необходима синхронизация элементов справочников и документов по уникальным идентификаторам. Поэтому обработки указанные Alexandr'ом здесь не решают всех проблем.
Я решаю эту проблему следующим образом:
Сам перенос данных осуществляется при помощи конфигурации «Конвертация данных», а синхронизация – по внутреннему идентификатору, который не изменяется при изменении кода или номера. Итак, последовательность действий :
1.    добавляем в справочники и документы (требующие синхронизации) поля ИД (строка 53 символа) и ИЗМ (неотрицательное число, длина 1, точность 0). (Спасибо 345 за разъяснения на форуме по моему вопросу). Оба реквизита с отбором.
2.    ИД заполняем для начала обработкой

Процедура ЗаполнитьИД()
    Для Ном=1 по СписокСправ.РазмерСписка() Цикл   
        Если СписокСправ.Пометка(Ном) = 1 Тогда
            СправочникИдент = "";
            СправочникПредставл = "";
            СправочникИдент=СписокСправ.ПолучитьЗначение(Ном,СправочникПредставл);  
            Справ=СоздатьОбъект("Справочник."+СправочникИдент);
            гXMLАнализатор        =    СоздатьОбъект("AddIn.XMLParser");
            XML_DOM                    =    гXMLАнализатор.СоздатьДокумент();
            УзелСсылки                =    XML_DOM.СоздатьУзел(1, "Ссылка");
           //Перебор элементов справочника с незаполненным "Ид"

            Если Справ.ВыбратьЭлементы(0) = 1 Тогда
                
                НачатьТранзакцию();
               //Если Справ.ВыбратьЭлементыПоРеквизиту("Ид","",0,0) = 1 Тогда

                Пока Справ.ПолучитьЭлемент() = 1 Цикл
                    Если СокрЛП(Справ.Ид) = "" Тогда
                        Стр = ЗначениеВСтрокуВнутр(Справ.ТекущийЭлемент());
                        Ид = УзелСсылки.ПреобразоватьВ_ИД(Стр);
                        Справ.УстановитьАтрибут("Ид",Ид);
                        Справ.Записать();
                       //Сообщить(" "+Справ+" = "+Ид);

                    КонецЕсли;
                КонецЦикла;
                ЗафиксироватьТранзакцию();
                
                Сообщить(" Справочник = "+СправочникИдент+" -- ИД заполнено.");
            Иначе
                Сообщить(" Справочник = "+СправочникИдент+" -- элементы не выбраны.");
               //Сообщить("Нечего заполнять.");

            КонецЕсли;
        КонецЕсли;
    КонецЦикла; 
КонецПроцедуры  

3.    В формы справочников и документов (синхронизируемых) (а также некоторые справочники) добавляем:
Процедура ПриЗаписи()
    Если Модифицированность() = 1 Тогда
        Изм = 1;
    КонецЕсли;
КонецПроцедуры// ПриЗаписи()


4.    Настраиваем при помощи конфигурации «Конвертация данных» правила единовременного начального переноса. Об этом смотри документацию ИТС или (и) курсы 3-го учебного центра по применению этой конфигурации.
5.    Проводим единовременный начальный перенос данных при помощи стандартных обработок обмена через формат XML и настроенные выше (4) правила.
6.    Настраиваем при помощи конфигурации «Конвертация данных» правила переноса измененных данных.
При этом добавляем правило отбора данных для переноса:
//    Измененные элементы

Функция Условие_ID567A000001(Объект, ИдПравила)
    Объект.ТекущийЭлемент();
    Если Объект.Изм = 1 Тогда
       //При выгрузке в файл переноса данных меняем флаг изменения элемента справочника

       // с 1 ("изменен") на 2 ("выгружен")

        Справ=СоздатьОбъект("Справочник."+Объект.Вид());
        Справ.НайтиЭлемент(Объект);
        Справ.ТекущийЭлемент();
        Справ.УстановитьАтрибут("Изм",2);  
        
       //Чтобы отдельно не запускать обработку заполнения реквизита ИД

        гXMLАнализатор2    = СоздатьОбъект("AddIn.XMLParser");
        XML_DOM2 = гXMLАнализатор2.СоздатьДокумент();
        УзелСсылки2    = XML_DOM2.СоздатьУзел(1, "Ссылка");
        Если СокрЛП(Справ.Ид) = "" Тогда
            Стр = ЗначениеВСтрокуВнутр(Справ.ТекущийЭлемент());
            Ид = УзелСсылки2.ПреобразоватьВ_ИД(Стр);
            Справ.УстановитьАтрибут("Ид",Ид);
            Справ.Записать();
           //Сообщить(" "+Справ+" = "+Ид);

        КонецЕсли;
        Справ.Записать();
        
       //Очищаем память

        гXMLАнализатор2 = 0;      
        XML_DOM2 = 0;      
        УзелСсылки2 = 0;      
        Справ = 0;      
        Возврат(1);
    Иначе// Изм = 0

        Возврат(0);
    КонецЕсли;
КонецФункции

7.    Проводим периодический перенос данных при помощи стандартных обработок обмена через формат XML и настроенные выше (6) правила.

Полезную информацию я почерпнул на
http://www.kuban.ru/cgi-bin/forum/forum9.cgi
Точной ссылки, к сожалению, сейчас не нашел.
Однако, отдельное спасибо Natalia и mszsuz с того форума.
Очень советую пройти обучение в 3-ем учебном центре 1С по курсу «Основы XML» -- мне это сэкономило много времени. Огромное спасибо Дмитрию Гончарову -- разработчику данного курса.
   Logan
 
5 - 12.01.04 - 06:35
Огромное Спасибо klon! За обстоятельное разъяснение... я не знаком с конфигурацией "Конвертация данных" :-(
Будет ли она работать с самописаными конфами? И ИТС-овских дисков у меня нет :-(
используя разнличные обработки с hippo собрал на основе OLE (поскольку использовать выгрузку/загрузку при синхронизации несколько раз в день на мой взгляд не рационально) обработку... но сделать ее универсальной действительно займет много времени. А с другой стороны работая на  SQL-базах почему не использовать его преимущества? у меня обе базы размером за гиг будут... я думаю скорость обработки увеличилась бы. Или нет?
   klon
 
6 - 12.01.04 - 19:44
Поработав в свое время с самопальными обработками обмена, я пришел к выводу, что лучше использовать конфигурацию "Конвертация данных" и универсальные обработки обмена от 1С. Прелесть конфигурации "Конвертация данных" в том, что с ее помощью можно настраивать обмен между ЛЮБЫМИ конфигурациями на платформе 1С. Настройка происходит быстро, результат гарантирован.
Диска ИТС нет … А база более 1 Гб. Могли бы и оплатить тебе покупку хотя бы одного диска. Ну хоть за (поза-) прошлый месяц. Там все есть.
Описание технологии работы с базой, которое есть на ИТС сохранять в электронном виде не умею. Саму конфигурацию могу кинуть, но без описания будет очень тяжело.
По поводу OLE: первоначальная выгрузка и загрузка будет в любом случае долгой. Эту долгую операцию лучше все-таки разделить на две части: выгрузка-загрузка. А перекачку изменений не заметишь и при использовании выгрузки в файл.
Кроме того, никаких преимуществ у SQL, в монопольном режиме (а единовременный перенос данных делаем именно в нем), не вижу. Более того: для ускорения единовременной загрузки придется базу перегонять в dbf (и будет она у тебя 300-400 Мб).
   PrService
7 - 10.03.04 - 11:57
Очень нужна документация на конфигурацию "Конвертация Данных". Помогите кто может, буду очень благодарен. PrService@list.ru
   romix
 
8 - 10.03.04 - 18:36
   Vldmar
9 - 09.04.04 - 18:14
Копаю 1С Конфу - Конвертация данных. Сделал свои правила. Но чето не паут. Данные переносятся из Док.НачисленияУдержанияСписком -> Док.ОтпускТМП.
Так вот. Есть готовый файл с правилами. Когда происходит загрузка данных, то в спр. создается Док.ОтпускТНП. А вот когда происходит загрузка с моего файла правил, то ничего не происходит? Где я торможу? :( С данной конфой я сильно не знаком, а доки в нете нет.
Может че посоветуете?
Файл правил делал сам на основе готового, интуитивно.
   Vldmar
10 - 09.04.04 - 18:25
Копаю 1С Конфу - Конвертация данных. Сделал свои правила. Но чето не паут. Данные переносятся из Док.НачисленияУдержанияСписком -> Док.ОтпускТМП.
Так вот. Есть готовый файл с правилами. Когда происходит загрузка данных, то в спр. создается Док.ОтпускТНП. А вот когда происходит загрузка с моего файла правил, то ничего не происходит? Где я торможу? :( С данной конфой я сильно не знаком, а доки в нете нет.
Может че посоветуете?
Файл правил делал сам на основе готового, интуитивно.
 
  Рекламное место пустует
   SnarkHunter
 
11 - 09.04.04 - 20:44
Вот зачем ИД длиной 53 символа кто бы мне подсказал... И тормозной ХМЛ...


Список тем форума
  Рекламное место пустует
Прочитай, хотя бы, Митичкина "Разработка в системе 1С:Предприятие 8". Волшебник
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Ветка сдана в архив. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует