forum.bitel.ru
http://forum.bitel.ru/

7.1 и группы договоров
http://forum.bitel.ru/viewtopic.php?f=19&t=12788
Страница 1 из 1

Автор:  skyb [ 13 фев 2018, 08:38 ]
Заголовок сообщения:  7.1 и группы договоров

Раньше я удачно использовал конструкцию вида
Код:
ContractParameterManager cpm = new ContractParameterManager( con );
cpm.setGroup( cid, 9 );

и вроде бы все всех устраивало, после обновления на 7.1 компилятор мне говорит мол нет такого метода, лезу в доку, а там))))
Код:
setGroup(int cid, int group)
Установка группы для договора TODO что оно тут делает?

вроде бы и действительно, но работает и всех устраивает, но метода грит мне компилятор всеравно нету, окей, лезу смотреть в Contract
Код:
setGroups(long groups)
Установка битовой маски групп.

ок, переписываем, вроде все понятно и просто
Код:
String groups = "9"; //коды групп договоров через запятую
long groupMask = Utils.enumToMask( groups );
Contract contract = cm.getContractById(cid);
contract.setGroups(groupMask);
cm.updateContract(contract);

что в итоге, ту группу в которую я хотел запихать договора она появилась на них, в sql запросе как и в редакторе справочников появилась битовая маска группы 512, но открыть договор нельзя, говорит что с ним работать нельзя и договор открывается без ничего и с названием UNDEF, в поиске вообще ненашел, а в sql редакторе только вот с таким успехом О_о
поставил другую группу - и о чудо, договора снова заработали ))))
Непонятно что это было и зачем и как это победить
и было удобно именно добавлять группу, одну, а не ловить в каждом договоре свою группу, прибавлять к ней битовую маску нужной и обновлять все группы
Код:
Сервер: вер. 7.1.960 / 09.02.2018 12:37:38
    os: Linux; java: Java HotSpot(TM) Server VM, v.1.8.0_162

Автор:  skyb [ 13 фев 2018, 11:03 ]
Заголовок сообщения:  Re: 7.1 и группы договоров

Спасибо dimOn'у, можно делать так
Добавление
Код:
int GROUP = 1;//id группы из справочника
long groupMask = Utils.enumToMask( GROUP );
Contract contract = cm.getContractById(cid);
contract.setGroups(contract.getGroups() | GROUP);
cm.updateContract(contract);

удаление
Код:
int GROUP = 1;//id группы из справочника
long groupMask = Utils.enumToMask( GROUP );
Contract contract = cm.getContractById(cid);
contract.setGroups(contract.getGroups() ^ GROUP);
cm.updateContract(contract);

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/