Добрый день.
В карточке продукта(номенклатура) в 1С 7.7 находится поле ставка НДС
Это справочник, который содержит следующие поля:
В Terrasoft я создал таблицу, запрос на быборку и датасет для хранения ставки НДС:
Провел синхронизацию(импорт из 1С) этой созданной в TS таблицы с вышеописанным справочником СтавкаНДС из 1С.В результате в таблицe tbl_StavkaNDS поппала необходимые записи 18%, 10% и Без НДС как и в 1С и главное заполнилось поле Code1C, теми же значениями что и в 1С:
BB566896-2B86-4FC0-B438-5D50656EEADE 10% 10.0000 3
D61137E2-4323-4D0C-AE55-B537A92FD821 18% 18.0000 1
C1409CC5-09E0-4B16-B3B2-20C6DCA220E6 Без налога НДС 0.0000 2
Добавил в справочник продукты соответствующее поле StavkaID и теперь на карточке продукта доступна для выбора ставка НДС:

В настройку интергации добавил соответствие полей:

Но при попытке импорта продуктов стал получать ошибку:
"Исключение брошено, но не поймано"
Отладчик останавливается на строках скрипта scr_Common:
if (!Assigned(Object)) {
var ErrorMgs = FormatStr(ObjectNotAssignedError, ObjectName);
throw ErrorMgs; // ERROR
}
}
Подскажите пожалуйста, в чем может быть причина ошибки и как ее устранить?
Нравится
"Сидоров Павел" написал:function CheckAssigned(Object, ObjectName)
Посмотрите с помощью отладчика какой объект здесь ищется. В общем, советую для начала отладчиком поработать здесь, чтобы было понятнее в каком месте и почему возникает ошибка.
Проверьте существует ли фильтры Code1C, Object1C (с такими названиями по одноименным полям) в sq_StavkaNDS
В function CheckAssigned(Object, ObjectName)
Object = null
ObjectName = "Parameter"
ObjectNotAssignedError - "объект '%1' не присвоен"
"Кривонос Максим" написал:Проверьте существует ли фильтры Code1C, Object1C (с такими названиями по одноименным полям) в sq_StavkaNDS
Да, такие фильтры существуют
Павел, Вам необходимо к Продуктам привязать справочник кодов 1С, и использовать его при интеграции.
Порядок действий следующий:
1) создаете подчиненную запись;
2) указываете соответствие справочников в Terrasoft и 1C;
3) запускаете синхронизацию.
"Alimova Anna" написал:Павел, Вам необходимо к Продуктам привязать справочник кодов 1С, и использовать его при интеграции.
Спасибо за совет,Анна. Попробую и таким способом.
Например при интеграции счетов была похожая ситуация - нужно было перенести ответственных из счета в TS в счет 1С.
Там я действовал аналогичным образом - сначала синхронизировал справочник Контактов в TS и Сотрудников в 1С, чтобы ответственные получили значение Code1C и затем уже не требовалось создавать никаких подчиненных объектов, просто устанавливал соответствие Ответственный менеджер в 1С = Ответственный(OwnerID) в TS, и это прекрасно работало.
В этом случае я проделал абсолютно аналогичные действия.
"Alimova Anna" написал:Павел, Вам необходимо к Продуктам привязать справочник кодов 1С, и использовать его при интеграции.Порядок действий следующий:
1) создаете подчиненную запись;
2) указываете соответствие справочников в Terrasoft и 1C;
3) запускаете синхронизацию.
Данный подход не подойдет в данной ситуации. Так как создать подчиненный элемент Ставка НДС можно для объекта синхронизации Продукт, но установить поле родителя для таблицы в TS tbl_StavkaNDS не получится, так как его просто нет. В этой таблице нет поля OfferingID, оно по смыслу там не должно быть, так как в этой таблице всего 3 записи( без НДС, 10% и 18%), если бы там было поле OfferingID, то записей в ней было бы столько же сколько продуктов, для каждого по одной - но этого совершенно не требуется. По сути таблица tbl_StavkaNDS является перечислением.
Поэтому необходимо настроить корректную работу соответствия полей(СтавкаНДС -- StavkaID) именно в главном объекте продукт.
Постараюсь путем отладки найти более конкретную причину ошибки, описанной в начале темы.
Причина проблемы нашлась.
Искать нужно было именно в том направлении, в котором посоветовал проверить Максим.
В в sq_StavkaNDS отсутствовал фильтр по параметру ID, как только его добавил, поле Ставка НДС корректно проэкспортировалась в 1С.
Спасибо всем за советы.
Фильтр по ID добавляю "на автомате" во все sq_* поэтому даже не вспомнил о нем =)