Не присваиваются ссылочные атрибуты

classic Classic list List threaded Threaded
6 messages Options
igorstr igorstr
Reply | Threaded
Open this post in threaded view
|

Не присваиваются ссылочные атрибуты

При переносе работающего кода на Windows 7 и 1С версии 8.2.15.294 обнаружилась неожиданная проблема с присваиванием ссылочных атрибутов (примитивные атрибуты - строки и числа - присваиваются нормально). Вот простой тестовый код:

OCCatalogManager productManager = app.getCatalogManager("Номенклатура");
OCCatalogObject testObject = productManager.createItem();
OCCatalogRef unitsRef = app.getCatalogManager("КлассификаторЕдиницИзмерения").findByDescription("шт");

System.out.println(unitsRef.getDescription());

testObject.setAttributeValue("БазоваяЕдиницаИзмерения", new OCVariant(unitsRef));
OCCatalogRef testUnits = testObject.getAttributeValue("БазоваяЕдиницаИзмерения").value();

System.out.println(testUnits.getDescription());
System.out.println(testUnits.isEmpty());

На WinXP и 1С версии 8.2.11.232 выдаются сообщения:
шт
шт
false

Т.е. присваивание работает.

На Win7 и 1С версии 8.2.15.294 выдается:
шт

true

Т.е. поиск в справочнике работает, а присваивание - нет. И так с любым ссылочным атрибутом. Никаких исключений не наблюдается.
В чем может быть проблема?
IgorKonovalov IgorKonovalov
Reply | Threaded
Open this post in threaded view
|

Re: Не присваиваются ссылочные атрибуты

Вообще после set-ов логично сделать write, т.е. фиксировать объект. Потом на всякий пожарный можно перечитать объект read-ом и потом уже делать get-ы.
Но разница в поведении 1С мне все равно неясна.
OCTitbit developer.
igorstr igorstr
Reply | Threaded
Open this post in threaded view
|

Re: Не присваиваются ссылочные атрибуты

В том-то и дело, что часто не удается записать объект из-за пустых ссылок - срабатывают проверки в 1С. И даже там, где записать удается, - ссылочные атрибуты записываются пустыми, т.е. последовательность write и read ничем не поможет.

Есть ли подтвержденные случаи, что библиотека работает с 1С 8.2.15 (кстати, пробовали octitbit и 0.5.3, и 0.6.0)? Странно также то, что все остальное прекрасно работает: запись простых атрибутов, чтение любых атрибутов и т.д. От конфигурации, похоже, это также не зависит - т.к. пробовали на одной конфигурации: в 1С 8.2.11 работает, в 8.2.15 - нет. Правда, 8.2.11 стоит на XP, а 8.2.15 - на Win7. Но вроде бы где-то в форуме сказано, что в Win7 все должно работать...
IgorKonovalov IgorKonovalov
Reply | Threaded
Open this post in threaded view
|

Re: Не присваиваются ссылочные атрибуты

Библиотеку уже гоняли на 1С-ках установленных на  XP, Vista, 7, 2003, чем закончилась установка на 2008 я не знаю, но раз больше не писали, думаю успешно.

У 1С столько версий и подверсий + конфигурации... так что сказать что-то определенное именно по 8.2.15 трудно.

Если бы Вы мне сделали доступ к тестовому полигону, ну или сделали какой-нибудь sand-box через VPN, я могу бы попробовать. А так у меня под рукой сейчас нет вообще никакой 1С... кстати уже довольно давно, больше года. Консультирую по памяти )) Возможно уже пора развивать библиотек дальше.
OCTitbit developer.
IgorKonovalov IgorKonovalov
Reply | Threaded
Open this post in threaded view
|

Re: Не присваиваются ссылочные атрибуты

In reply to this post by igorstr
Кстати! Попробуйте заменить .value() на .getAsOCObject()

OCCatalogRef testUnits = new OCCatalogRef (testObject.getAttributeValue("БазоваяЕдиницаИзмерения").getAsOCObject())
OCTitbit developer.
igorstr igorstr
Reply | Threaded
Open this post in threaded view
|

Re: Не присваиваются ссылочные атрибуты

Вопрос закрыт. К счастью, проблема была не в версии 1С и не в библиотеке. Увы, докопаться до сути этой странной ошибки так и не удалось, но переустановка Windows и 1С полностью решили проблему. Так что могу подтвердить, что в Win7 с 1С 8.2.15 библиотека работает.