Перенос документов.
29.07.2005
14:03
#1
"Стоит задача перетащить документы с одной конфы в другую.
причем обе конфы идентичные, сложность в том что необходимо перекинуть не все доки, а только за определенные период.
пробовал это сделать при помощи обработок Export77.ert и Import77.ert
не получается.
выгрузка проходит нормально, а при загрузке вылетает ошибка уникальности
"Объект.Записать();
{C:\!EXPIMP771\IMPORT77.ERT(167)}: Код не уникальный! "
в обработке загрузки прописан механизм поиска сущ-щих объектов но почему то он работает коряво. получается что он пытается перезаписать уже существующий объект.
кто имел дело с этими обработками подскажите как быть? в чем косяк.
или может кто посоветует воспользоваться другими обработками? заведомо рабочими.
"
причем обе конфы идентичные, сложность в том что необходимо перекинуть не все доки, а только за определенные период.
пробовал это сделать при помощи обработок Export77.ert и Import77.ert
не получается.
выгрузка проходит нормально, а при загрузке вылетает ошибка уникальности
"Объект.Записать();
{C:\!EXPIMP771\IMPORT77.ERT(167)}: Код не уникальный! "
в обработке загрузки прописан механизм поиска сущ-щих объектов но почему то он работает коряво. получается что он пытается перезаписать уже существующий объект.
кто имел дело с этими обработками подскажите как быть? в чем косяк.
или может кто посоветует воспользоваться другими обработками? заведомо рабочими.
"
30.07.2005
08:41
#2
"Согласен, обработка часто глючит и после нее в справочниках вылазит *-ня. Давно приловчился таскать через 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);
Таб.НоваяКолонка("ВхДата","Дата");
Таб.НоваяКолонка("ВхНомерДок","Текст");
Таб.НоваяКолонка("Комм","Текст");
КонецПроцедуры
"
Процедура Сформировать()
Док=СоздатьОбъект("Документ.Выписка");
Док.ВыбратьДокументы(ДатаНачала,ДатаКонца);
Пока Док.ПолучитьДокумент()=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);
Таб.НоваяКолонка("ВхДата","Дата");
Таб.НоваяКолонка("ВхНомерДок","Текст");
Таб.НоваяКолонка("Комм","Текст");
КонецПроцедуры
"
Как получить информацию через контрагента? Очень срочно!!! Помогите!!!ЗиК Удержание за неотработанные дни отпуска
Читают тему
(гостей: 1)