|  30.03.2006, 10:19 | #1 | 
| Участник |  Определить, через какую виртуальную компанию доступна таблица 
			
			Ниже приводится пример вспомогательного класса для определения, используется ли та или иная таблица через виртуальную компанию и если да, то через какую. Написан по мотивам этого обсуждения. Надеюсь, кому-нибудь кроме меня еще пригодится    X++: class TableId2VirtualCompanyId { } static boolean isTableVirtual(TableId _tableId) { DataArea dataArea; ; return (select firstonly dataArea where dataArea.id == new DictTable(_tableId).makeRecord().dataAreaId).isVirtual; } static boolean isTableVirtualForCompany(TableId _tableId, CompanyId _companyId = curExt()) { return (TableId2VirtualCompanyId::getVirtualCompanyIdForCompany(_tableId, _companyId) != ''); } static str getVirtualCompanyId(TableId _tableId) { return new DictTable(_tableId).makeRecord().dataAreaId; } static str getVirtualCompanyIdForCompany(TableId _tableId, CompanyId _companyId = curExt()) { VirtualDataAreaList virtualDataAreaList; TableCollectionList tableCollectionList; SysDictTableCollection dictTableCollection; TableName tableName; ; while select virtualDataAreaList where virtualDataAreaList.id == _companyId join tableCollection from tableCollectionList where tableCollectionList.virtualDataArea == virtualDataAreaList.virtualDataArea { dictTableCollection = new SysDictTableCollection(tablecollectionlist.tableCollection); do { tableName = dictTableCollection.nextTable(); if (tablename2id(tableName) == _tableId) return virtualDataAreaList.virtualDataArea; } while (tableName); } return ''; } P.S. Спасибо Maxim Gorbunov за рецепт с DictTable   Последний раз редактировалось gl00mie; 31.03.2006 в 12:46. | 
|  |