Импорт документов 1С

Добрый день!

Есть следующая задача: необходимо проимпортировать из 1C данные типа Документы. Одним из полей импорта является номер счета. Счета уже проимпортированны и номер счета совпадает с полем [НомерДок]. Для того, чтобы заполнить поле [Счет] в скрипте инпорта пишу следующее:

function OnBeforeRecordImport(Param, Dataset, Select1C) {
var InvoiceNumber = Select1C.QueryLink.НомерДок;
var DatasetInvoice = Services.GetSingleItemByUSI('ds_Invoice');
DatasetInvoice.Close();
ApplyDatasetFilter(DatasetInvoice, 'InvoiceNumber', InvoiceNumber, true);
DatasetInvoice.Open();
Dataset.Values('InvoicesID') = DatasetInvoice.Values('ID');
Dataset.Values('Number') = InvoiceNumber;
DatasetInvoice.Close();
EnableDatasetFilters(DatasetInvoice, false, 'InvoiceNumber');
}

Но после фильтрации записей в DatasetInvoice нет, хотя точно известно, что запись с номером [InvoiceNumber] существует. Если вместо InvoiceNumber поставить конкретное число, например,
ApplyDatasetFilter(DatasetInvoice, 'InvoiceNumber', 1, true) , то все работает.

Нравится

4 комментария

Александра, уточните, пожалуйста, какая у Вас версия 1С?

Вероятнее всего, у Вас пусто в Select1C.QueryLink.НомерДок

Для старых версий рекомендуется использовать следующую конструкцию:

var InvoiceNumber = Select1C[QueryLink].СчетНаОплатуПокупателю.НомерДок;

Рекомендуется активировать отладчик и посмотреть, что у Вас в Select1C.QueryLink.НомерДок в момент импорта.

Версия 1С 7.7, версия Terrasoft 3.4.0.97, установлен только Microsoft Script Debugger, а он ничего не показывает, посмотрела что находится в Select1C.QueryLink.НомерДок с помощью ShowInformationDialog, значения там есть

Уточните, пожалуйста, удалось ли получить НомерДок при помощи конструкции, указанной в предыдущем сообщении?

Особенность работы с 1С 7.7 в том, что значения в БД обрамлены служебными символами. В результате данные символы включаются в фильтрацию, и результат - пустой датасет.

таким образом, содержимое поля 1С необходимо обрезать:

Trim(Select1C[QueryLink].ПолучитьАтрибут('НомерДок'))

Первая конструкция не помогла, а вот с Trim(Select1C[QueryLink].ПолучитьАтрибут('НомерДок')) все работает, спасибо! =)

Показать все комментарии