Имя: Пароль:
1C
 
как лучше осуществить перенос данных?
0 Logan
 
09.01.04
07:36
Существует самописаная кофигурация на торговой компоненте, теперь заводим новую базу для бухгалтерии на основе типовой для "упрощенки". Необходимо перенести накопленную информацию за прошедший год некоторые документы необходимые для бух. учета и соответственно кучу справочников. В дальнейшем необходимо будет добовлять внов введенные документы и изменения справочников. Каким способом лучше всего осуществлять данный перенос? Кто нибудь делал что-то подобное?
1 345
 
09.01.04
08:20
Все решают эту задачу .... Судя по самописке - проще всего своими обработками ...
2 Alexandr
 
09.01.04
09:54
Здесь есть все http://www.vitalikk.ru/html/programm.html
Смотри первую позицию в списке...
3 Valentin
 
10.01.04
20:50
1c7hippo.ru  называется EximDocs
4 klon
 
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» -- мне это сэкономило много времени. Огромное спасибо Дмитрию Гончарову -- разработчику данного курса.
5 Logan
 
12.01.04
06:35
Огромное Спасибо klon! За обстоятельное разъяснение... я не знаком с конфигурацией "Конвертация данных" :-(
Будет ли она работать с самописаными конфами? И ИТС-овских дисков у меня нет :-(
используя разнличные обработки с hippo собрал на основе OLE (поскольку использовать выгрузку/загрузку при синхронизации несколько раз в день на мой взгляд не рационально) обработку... но сделать ее универсальной действительно займет много времени. А с другой стороны работая на  SQL-базах почему не использовать его преимущества? у меня обе базы размером за гиг будут... я думаю скорость обработки увеличилась бы. Или нет?
6 klon
 
12.01.04
19:44
Поработав в свое время с самопальными обработками обмена, я пришел к выводу, что лучше использовать конфигурацию "Конвертация данных" и универсальные обработки обмена от 1С. Прелесть конфигурации "Конвертация данных" в том, что с ее помощью можно настраивать обмен между ЛЮБЫМИ конфигурациями на платформе 1С. Настройка происходит быстро, результат гарантирован.
Диска ИТС нет … А база более 1 Гб. Могли бы и оплатить тебе покупку хотя бы одного диска. Ну хоть за (поза-) прошлый месяц. Там все есть.
Описание технологии работы с базой, которое есть на ИТС сохранять в электронном виде не умею. Саму конфигурацию могу кинуть, но без описания будет очень тяжело.
По поводу OLE: первоначальная выгрузка и загрузка будет в любом случае долгой. Эту долгую операцию лучше все-таки разделить на две части: выгрузка-загрузка. А перекачку изменений не заметишь и при использовании выгрузки в файл.
Кроме того, никаких преимуществ у SQL, в монопольном режиме (а единовременный перенос данных делаем именно в нем), не вижу. Более того: для ускорения единовременной загрузки придется базу перегонять в dbf (и будет она у тебя 300-400 Мб).
7 PrService
 
10.03.04
11:57
Очень нужна документация на конфигурацию "Конвертация Данных". Помогите кто может, буду очень благодарен. PrService@list.ru
8 romix
 
10.03.04
18:36
9 Vldmar
 
09.04.04
18:14
Копаю 1С Конфу - Конвертация данных. Сделал свои правила. Но чето не паут. Данные переносятся из Док.НачисленияУдержанияСписком -> Док.ОтпускТМП.
Так вот. Есть готовый файл с правилами. Когда происходит загрузка данных, то в спр. создается Док.ОтпускТНП. А вот когда происходит загрузка с моего файла правил, то ничего не происходит? Где я торможу? :( С данной конфой я сильно не знаком, а доки в нете нет.
Может че посоветуете?
Файл правил делал сам на основе готового, интуитивно.
10 Vldmar
 
09.04.04
18:25
Копаю 1С Конфу - Конвертация данных. Сделал свои правила. Но чето не паут. Данные переносятся из Док.НачисленияУдержанияСписком -> Док.ОтпускТМП.
Так вот. Есть готовый файл с правилами. Когда происходит загрузка данных, то в спр. создается Док.ОтпускТНП. А вот когда происходит загрузка с моего файла правил, то ничего не происходит? Где я торможу? :( С данной конфой я сильно не знаком, а доки в нете нет.
Может че посоветуете?
Файл правил делал сам на основе готового, интуитивно.
11 SnarkHunter
 
09.04.04
20:44
Вот зачем ИД длиной 53 символа кто бы мне подсказал... И тормозной ХМЛ...
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс