Добрый день!
Есть следующая задача: необходимо проимпортировать из 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) , то все работает.
Нравится
Александра, уточните, пожалуйста, какая у Вас версия 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].ПолучитьАтрибут('НомерДок')) все работает, спасибо! =)