Не могу присвоить субконто в кассовых ордерах (импорт из операции)

Использую код:

docDocument.Счет                    = Clause;
                                Message("  Импорт приходного касового ордера - " + DocumentNumber);
                                if (EmptyValue(AccountID) = 0) then    
                                        Account                                 = GetCurrentItemFind(AccountID, "sq_Account", "Reference.Контрагенты");
                                        docDocument.Субконто    = Account.CurrentItem();                  
                                elsif (EmptyValue(ContactID) = 0) then
                                        Contact                                 = GetCurrentItemFind(ContactID, "sq_Contact", "Reference.Конрагенты");
                                        docDocument.Субконто    = Contact.CurrentItem();
                                endif;

функция GetCurrentItemFind возвращает значение нормально, но оно не присваеваетса в docDocument.Субконто .

Ордера создаютса но с пустым Субконто (Вид Субконто в Счете = Контрагент) , подскажыте в чем причина??? И как эту проблему обойти....

Нравится

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

Добрый день, Павел!

В Вашем случае нужно убедиться, что:
1) все входные параметры для функции GetCurrentItemFind() заданы верно (т.е. AccountID - это действительно ID некоторого существующего контрагента)
2) в сервисе sq_Account есть все необходимые фильтры, с помощью Profiler убедиться, что запрос формируется правильный и возвращает результат
3) в функции GetCurrentItemFind() в наборе данных успешно считывается значение поля IntegrationID
4) и по найденному значению найден требуемый контрагент в системе
5) найденное значение можно успешно присвоить в поле docDocument.Субконто
Как видите, для выяснения причины необходима отладка кода в 1С.

Функция GetCurrentItemFind() возвращает значение нормально, вот выписка из дебагера :

DocumentNumber = "8"
docDocument.Субконто = 
Сontact.CurrentItem()	 = Семен Іван Степанович
ContactID = "{B4825837-5D7C-4529-B749-4ED8A128A550}"

но на следующем шаге :

docDocument.Субконто    = Contact.CurrentItem();

docDocument.Субконто не изменяетса .

Этот же код работает нормально при импорте договоров.

if (EmptyValue(AccountID) = 0) then	
					Account					= GetCurrentItemFind(AccountID, "sq_Account", "Reference.Контрагенты");
					docContract.Контрагент	= Account.CurrentItem();                   
				elsif (EmptyValue(ContactID) = 0) then
					Contact				= GetCurrentItemFind(ContactID, "sq_Contact", "Reference.Контрагенты");
					docContract.Контрагент	= Contact.CurrentItem();
				endif; 

такшо здесь не проблема в GetCurrentItemFind().

Значит, проблема именно с присваиванием. Может быть, в docDocument.Субконто нельзя сохранить полученное значение (причины - ограничение доступа, неправильный тип или другая, неизвестная причина). Точно назвать причину ошибки затрудняюсь.

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