Перенос документов.

Новая тема
"Стоит задача перетащить документы с одной конфы в другую.

причем обе конфы идентичные, сложность в том что необходимо перекинуть не все доки, а только за определенные период.



пробовал это сделать при помощи обработок Export77.ert и Import77.ert

не получается.

выгрузка проходит нормально, а при загрузке вылетает ошибка уникальности



"Объект.Записать();

{C:\!EXPIMP771\IMPORT77.ERT(167)}: Код не уникальный! "

в обработке загрузки прописан механизм поиска сущ-щих объектов но почему то он работает коряво. получается что он пытается перезаписать уже существующий объект.

кто имел дело с этими обработками подскажите как быть? в чем косяк.

или может кто посоветует воспользоваться другими обработками? заведомо рабочими.

"
"Согласен, обработка часто глючит и после нее в справочниках вылазит *-ня. Давно приловчился таскать через dbf , вот пример обработки по переносу Выписок.Для накладных я добавляю проверку существования в справочнике переносимого товара. Можно импортировать и подключаясь к базе, но тогда в ней не должен (при подключении) сидеть народ.



Процедура Сформировать()

Док=СоздатьОбъект("Документ.Выписка");

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

Пока Док.ПолучитьДокумент()=1 Цикл

Если Док.Проведен()=0 Тогда

Продолжить;

КонецЕсли;

Таб.НоваяСтрока();

Таб.Дата=Док.ДатаДок;

Таб.НомерДок=Док.НомерДок;

Таб.Счет=Док.БанковскийСчет.Код;

Таб.Комм=Док.Комментарий;

Док.ВыбратьСтроки();

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

Таб.НоваяСтрока();

Таб.ВидДвижения=Док.ВидДвижения.Код;

Таб.НазнПлатежа=Док.НазначениеПлатежа;

Таб.КорСчет=Док.КоррСчет;

Таб.СК1=Формат(Док.Субконто1,"""");

Таб.СК2=Формат(Док.Субконто2,"""");

Таб.СК3=Формат(Док.Субконто3,"""");

Таб.Приход=Док.Приход;

Таб.Расход=Док.Расход;

Таб.ВхДата=Док.ДатаДокВходящий;

Таб.ВхНомерДок=Док.НомерДокВходящий;

КонецЦикла;

КонецЦикла;

БД=СоздатьОбъект("XBase");

Если ФС.СуществуетФайл("c:\zp.dbf")=1 Тогда

БД.ОткрытьФайл("c:\zp.dbf");

   БД.ОчиститьФайл();

Иначе

БД.ДобавитьПоле("P1",3,12,0);//Дата выписки

БД.ДобавитьПоле("P2",2,8,0);//Номер выписки

БД.ДобавитьПоле("P3",2,5,0);//Счет

БД.ДобавитьПоле("P4",2,5,0);//Вид движения

БД.ДобавитьПоле("P5",2,250,0);//Назначение платежа

БД.ДобавитьПоле("P6",2,10,0);//Кор счет

БД.ДобавитьПоле("P7",2,100,0);//Ск1

БД.ДобавитьПоле("P8",2,50,0);//Ск2

БД.ДобавитьПоле("P9",2,50,0);//Ск3

БД.ДобавитьПоле("P10",1,15,2);//Приход

БД.ДобавитьПоле("P11",1,15,2);//Расход

БД.ДобавитьПоле("P12",3,12,0);//Вх дата

БД.ДобавитьПоле("P13",2,10,0);//Вх док

БД.ДобавитьПоле("P14",2,50,0);//Комент

БД.СоздатьФайл("c:\zp.dbf");

КонецЕсли;

Таб.ВыбратьСтроки();

Пока Таб.ПолучитьСтроку()=1 Цикл

   БД.Добавить();

   БД.P1=Таб.Дата;

   БД.P2=Формат(Таб.НомерДок,"""");

   БД.P3=Формат(Таб.Счет,"""");

   БД.P4=Формат(Таб.ВидДвижения,"""");

   БД.P5=Формат(Таб.НазнПлатежа,"""") ;

   БД.P6=Формат(Таб.КорСчет,"""");

   БД.P7=Формат(Таб.Ск1,"""");

   БД.P8=Формат(Таб.Ск2,"""");

   БД.P9=Формат(Таб.Ск3,"""");

   БД.P10=Таб.Приход;

   БД.P11=Таб.Расход;

   БД.P12=Таб.ВхДата;

   БД.P13=Формат(Таб.ВхНомерДок,"""");

   БД.P14=Формат(Таб.Комм,"""");

   БД.Записать();

КонецЦикла;

КонецПроцедуры

//**************************************************************************

Процедура Загрузить()

БД=СоздатьОбъект("XBase");

БД.ОткрытьФайл("c:\zp.dbf");

Если БД.Открыта()=1 Тогда

   Таб.УдалитьСтроки();

       Если БД.Первая()=1 Тогда;

Таб.НоваяСтрока();

Таб.Дата=БД.P1;

Таб.НомерДок=БД.P2;

Таб.Счет=БД.P3;

Таб.ВидДвижения=БД.P4;

Таб.НазнПлатежа=БД.P5;

Таб.КорСчет=БД.P6;

Таб.Ск1=БД.P7;

Таб.Ск2=БД.P8;

Таб.Ск3=БД.P9;

Таб.Приход=БД.P10;

Таб.Расход=БД.P11;

Таб.ВхДата=БД.P12;

Таб.ВхНомерДок=БД.P13;

Таб.Комм=БД.P14;

  КонецЕсли;

  Пока БД.Следующая()=1 Цикл

Таб.НоваяСтрока();

Таб.Дата=БД.P1;

Таб.НомерДок=БД.P2;

Таб.Счет=БД.P3;

Таб.ВидДвижения=БД.P4;

Таб.НазнПлатежа=БД.P5;

Таб.КорСчет=БД.P6;

Таб.Ск1=БД.P7;

Таб.Ск2=БД.P8;

Таб.Ск3=БД.P9;

Таб.Приход=БД.P10;

Таб.Расход=БД.P11;

Таб.ВхДата=БД.P12;

Таб.ВхНомерДок=БД.P13;

Таб.Комм=БД.P14;

  КонецЦикла;

   Иначе

   Сообщить("Не найден файл переноса, создайте его еще раз");

КонецЕсли;







КонецПроцедуры

//**************************************************************************

Процедура ПриОткрытии()

Таб.НоваяКолонка("Дата","Дата");

Таб.НоваяКолонка("НомерДок","Текст");

Таб.НоваяКолонка("Счет","Текст",,,"Счет");

Таб.НоваяКолонка("ВидДвижения","Текст");

Таб.НоваяКолонка("НазнПлатежа","Текст");

Таб.НоваяКолонка("КорСчет","Текст");

Таб.НоваяКолонка("Ск1","Текст");

Таб.НоваяКолонка("Ск2","Текст");

Таб.НоваяКолонка("Ск3","Текст");

Таб.НоваяКолонка("Приход","Число",15,2);

Таб.НоваяКолонка("Расход","Число",15,2);

Таб.НоваяКолонка("ВхДата","Дата");

Таб.НоваяКолонка("ВхНомерДок","Текст");

Таб.НоваяКолонка("Комм","Текст");

КонецПроцедуры

"
А через эксюльку походу быстрее получается...
При больших объемах в Excel попадаешь на ограничение по количеству строк.




Люди, есть готовые реально работающие обработки или нет???



Что е-щ-е подробнее, чем Serga написал?? Там же только копи-пэйст остался?!
блин



в конфе 60 разных документов.

не охото все ручками для этого писать.

хотел стандартную обработку. причем перенос то прямой

т.е. конфы эдентичные.
Читают тему
(гостей: 1)

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