Доброго дня!
Подскажите пожалуйста, стоит задача сделать кнопку для импорта из excel файла в деталь раздела
Я вроде нашел пример, но пока что ничего не получается. Не могу понять в чем проблема, поскольку проходит все без ошибок, но позиции не импортируются.
{
var FileName = GetNewValue();
if (!(System.OpenDialog(FileName, '*', EmptyStr, EmptyStr, EmptyStr))) {
return;
}
var ExelApp = new ActiveXObject("Excel.Application");
var WorkBook = ExelApp.Workbooks.Open(FileName.Value);
var Sheet = WorkBook.ActiveSheet;
var startRow = 2;
var currentRow = startRow;
var rate = Sheet.Cells(2, 12).Value;
var OfferingInContractDS = GetSingleItemByCode('ds_OfferingInOrderX', 'OfferingInOrderX');
EnableDatasetFilters(OfferingInContractDS, false);
OfferingInContractDS.Open();
var offeringsNotFound = 0;
try {
while(Sheet.Cells(currentRow, 12).Value != null)
{
OfferingInContractDS.Append();
var num = Sheet.Cells(currentRow, 12).Value;
OfferingInContractDS('Name') = num;
var partNumber = Sheet.Cells(currentRow, 12).Value;
OfferingInContractDS('Description') = partNumber;
OfferingInContractDS.Post();
currentRow++;
}
} finally {
OfferingInContractDS.Close();
}
dlData.Dataset.Close();
dlData.Dataset.Open();
WorkBook.Close();
ShowWarningDialog('Загружено: ' + (currentRow - startRow));
}
Заранее спасибо!
Нравится
Может, у Вас просто Excel «не хочет» работать по ActiveX?
Если пройти пошагово в отладчике, то на какой строке виснет?
Я немного подправил скрипт и теперь вылетает ошибка:
"Ошибка выполнения метода 'btnImportOnClick'. Ошибка сохранения записи. Оригинальное сообщение об ошибке: The statement has been terminated.
Cannot insert the value NULL into column 'SpecificationID', table 'TSXRM3.dbo.tbl_OfferingInOrderX'; column does not allow nulls. INSERT fails «Call Stack»"
Хотя я вроде в эту колонку ничего не импортирую
function importQuote() { var FileName = GetNewValue(); if (!(System.OpenDialog(FileName, '*', EmptyStr, EmptyStr, EmptyStr))) { return; } var ExelApp = new ActiveXObject("Excel.Application"); var WorkBook = ExelApp.Workbooks.Open(FileName.Value); var Sheet = WorkBook.ActiveSheet; var startRow = 12; var currentRow = startRow; var rate = Sheet.Cells(12, 2).Value; var OfferingInContractDS = GetSingleItemByCode('ds_OfferingInOrderX', 'OfferingInOrderX'); EnableDatasetFilters(OfferingInContractDS, false); OfferingInContractDS.Open(); var offeringsNotFound = 0; try { while(Sheet.Cells(currentRow, 2).Value != null) { OfferingInContractDS.Append(); var num = Sheet.Cells(currentRow, 2).Value; OfferingInContractDS('Name') = num; var partNumber = Sheet.Cells(currentRow, 3).Value; OfferingInContractDS('Description') = partNumber; OfferingInContractDS.Post(); currentRow++; } } finally { OfferingInContractDS.Close(); } dlData.Dataset.Close(); dlData.Dataset.Open(); WorkBook.Close(); ShowWarningDialog('Загружено: ' + (currentRow - startRow)); }
"Родненок Дмитрий Павлович" написал:Хотя я вроде в эту колонку ничего не импортирую
В том и дело. Вы не заполняете значением обязательное поле.
Понял, спасибо!
Теперь все импортирует!
Есть еще маленький вопрос:
У меня имеется поле с номером, который является автоинкрементом и храниться в системных настройках.
Каким образом я могу проставлять на все импортируемые файлы этот номер +1 и записывать последнее значение в системные настройки?Чтобы каждая позиция имела уникальный номер
И может быть сможете подсказать, как реализовать вложенность при импорте, поскольку деталь древовидная