Україна понад усе! Приєднуйтеся до допомоги!
Еще одна функция загрузки из .xls
Обработку для выгрузки из 1С выложу немного позднее.
function ImportOffMov() {
var ExlApp = new ActiveXObject("Excel.Application");
var WorkBook = ExlApp.Workbooks.Open(xlfile);
var Sheet = WorkBook.ActiveSheet;
var ds_Store = Services.GetNewItemByUSI('ds_Store');
var ds_Account = Services.GetNewItemByUSI('ds_Account');
var ds_Offering = Services.GetNewItemByUSI('ds_Offering');
var ds_OfferingMovement = Services.GetNewItemByUSI('ds_OfferingMovement');
var ds_OfferingInMovement = Services.GetNewItemByUSI('ds_OfferingInMovement');
ds_Store.Open();
ds_Offering.Open();
ds_Account.Open();
ds_OfferingMovement.Open();
ds_OfferingInMovement.Open();
for(var i=1;iSheet.UsedRange.Rows.Count;i++){
if(Sheet.Cells(i, 1).Value=='Ш'){
ds_Account.Locate('INN' , Sheet.Cells(i, 4));
ds_OfferingMovement.Append();
ds_OfferingMovement('Number')=Sheet.Cells(i, 2);
ds_OfferingMovement('AccountID')=ds_Account('ID');
ds_OfferingMovement('TypeID')='{A48368CD-E28D-458D-8AE8-E2A314186C5C}';
ds_OfferingMovement('Amount')=Sheet.Cells(i, 5).Value;
ds_OfferingMovement('Date')=StrToDate(Sheet.Cells(i, 3).Value).getVarDate();
ds_OfferingMovement.Post();
}
if(Sheet.Cells(i, 1).Value=='С'){
ds_Offering.Locate('OfferingName', Sheet.Cells(i, 2));
ds_OfferingInMovement.Append();
ds_OfferingInMovement('OfferingMovementID')=ds_OfferingMovement('ID');
ds_OfferingInMovement('OfferingID')=ds_Offering('ID');
ds_OfferingInMovement('UnitName')='Шт.';
ds_OfferingInMovement('StoreID')=ds_Store('ID');
ds_OfferingInMovement('Quantity')=Sheet.Cells(i, 4).Value;
ds_OfferingInMovement('Cost')=Sheet.Cells(i, 3).Value;
ds_OfferingInMovement('Amount')=Sheet.Cells(i, 5).Value;
ds_OfferingInMovement('SignedAmount')=Sheet.Cells(i, 5).Value;
ds_OfferingInMovement('SignedQuantity')=Sheet.Cells(i, 4).Value;
ds_OfferingInMovement.Post();
}
}
ds_Store.Close();
ds_Account.Close();
ds_Offering.Close();
ds_OfferingMovement.Close();
ds_OfferingInMovement.Close();
WorkBook.Close();
ExlApp.Quit();
}
var ExlApp = new ActiveXObject("Excel.Application");
var WorkBook = ExlApp.Workbooks.Open(xlfile);
var Sheet = WorkBook.ActiveSheet;
var ds_Store = Services.GetNewItemByUSI('ds_Store');
var ds_Account = Services.GetNewItemByUSI('ds_Account');
var ds_Offering = Services.GetNewItemByUSI('ds_Offering');
var ds_OfferingMovement = Services.GetNewItemByUSI('ds_OfferingMovement');
var ds_OfferingInMovement = Services.GetNewItemByUSI('ds_OfferingInMovement');
ds_Store.Open();
ds_Offering.Open();
ds_Account.Open();
ds_OfferingMovement.Open();
ds_OfferingInMovement.Open();
for(var i=1;iSheet.UsedRange.Rows.Count;i++){
if(Sheet.Cells(i, 1).Value=='Ш'){
ds_Account.Locate('INN' , Sheet.Cells(i, 4));
ds_OfferingMovement.Append();
ds_OfferingMovement('Number')=Sheet.Cells(i, 2);
ds_OfferingMovement('AccountID')=ds_Account('ID');
ds_OfferingMovement('TypeID')='{A48368CD-E28D-458D-8AE8-E2A314186C5C}';
ds_OfferingMovement('Amount')=Sheet.Cells(i, 5).Value;
ds_OfferingMovement('Date')=StrToDate(Sheet.Cells(i, 3).Value).getVarDate();
ds_OfferingMovement.Post();
}
if(Sheet.Cells(i, 1).Value=='С'){
ds_Offering.Locate('OfferingName', Sheet.Cells(i, 2));
ds_OfferingInMovement.Append();
ds_OfferingInMovement('OfferingMovementID')=ds_OfferingMovement('ID');
ds_OfferingInMovement('OfferingID')=ds_Offering('ID');
ds_OfferingInMovement('UnitName')='Шт.';
ds_OfferingInMovement('StoreID')=ds_Store('ID');
ds_OfferingInMovement('Quantity')=Sheet.Cells(i, 4).Value;
ds_OfferingInMovement('Cost')=Sheet.Cells(i, 3).Value;
ds_OfferingInMovement('Amount')=Sheet.Cells(i, 5).Value;
ds_OfferingInMovement('SignedAmount')=Sheet.Cells(i, 5).Value;
ds_OfferingInMovement('SignedQuantity')=Sheet.Cells(i, 4).Value;
ds_OfferingInMovement.Post();
}
}
ds_Store.Close();
ds_Account.Close();
ds_Offering.Close();
ds_OfferingMovement.Close();
ds_OfferingInMovement.Close();
WorkBook.Close();
ExlApp.Quit();
}
24 августа 2009 14:13
да, тут беда какая то со вставкой - надо сначала отправить, потом уже менять чтобы вручную теги не удалать
25 августа 2009 10:38
ds_OfferingMovement('TypeID')='{A48368CD-E28D-458D-8AE8-E2A314186C5C}';
IDшники желательно определять в скрипте scr_Consts, читать удобнее и в случае изменения нужно будет поправить только в одном месте.
25 августа 2009 11:58
И опять же я бы на Update переделал. Хотя по ситуации, конечно. Скажу Вам как новичку: датасеты на массовых апдейтах - зло :)
31 августа 2009 16:33
посчитайте строки перед циклом
... var RowsCount = Sheet.UsedRange.Rows.Count; for(var i=1;i<RowsCount;i++) ...
при больших Excel-файлах заметите невероятное ускорение в скорости )
Видимо коварный ексель при обращению к свойству Count пересчитывает UsedRange...
Была подобная задача. На файлах в 5000 строк разнится по скорости отработки цикла - 10-ки раз.
Показать все комментарии
Войдите или зарегистрируйтесь, что бы комментировать