![]() |
#1 |
Участник
|
![]()
Ситуация банальна - есть две компании в Аксапте, необходимо использовать общий справочник номенклатуры, при этом данные на закладках "Цена/Скидка" и "Количество" карточки номенклатуры в каждой компании должы быть свои.
Делаю табличную коллекцию, пихаю туда InventTable, делаю виртуальную компанию, и, как вы уже догадались, при создании номенклатуры в одной компании в другой её не вижу. Как вы уже догадались, происходит это от того, что к InventTable привязвна InventTableModule, которая не является общей для компаний, и при добавлении записи в InventTable, в InventTableModule добавляются связанные записи только с кодом текущей компании, в результате в другой компании для добавленной в общий справочник номенклатуры отсутствуют связанные записи в InventTableModule, из-з чего, в свою очередь, выходит полная фигня (я не очень путано выражаюсь?). Вопрос: Господа, сталкивался ли кто-нить с подобной проблемой и как она решалась? Мне не трудно переписать Insert и Delete на InventTableModule чтобы пихать записи ещё и в соседнюю компанию, но можт существует более изящный способ? Заранее благодарен. VVN. |
|
![]() |
#2 |
NavAx
|
Сталкивался с этой проблемой. Решал её именно таким образом.
__________________
С уважением, Игорь Ласийчук. |
|
![]() |
#3 |
Moderator
|
Кстати на technet было обсуждение этой проблемы - "Share data between companies. " Пришли примерно к такому же результату.
|
|
![]() |
#4 |
Участник
|
![]() Цитата:
Сообщение от Garic
Сталкивался с этой проблемой. Решал её именно таким образом.
Код: select id from VirtualDataAreaList where VirtualDataAreaList.virtualDataArea == <код_виртуальной_компании>
![]() Последний раз редактировалось gl00mie; 29.03.2006 в 15:31. |
|
![]() |
#5 |
Участник
|
![]() Цитата:
Сообщение от gl00mie
Как определить, через какую виртуальную компанию в текущей "реальной" компании доступна та или иная таблица?
PHP код:
|
|
![]() |
#6 |
Administrator
|
Цитата:
Сообщение от VadimVN
СМне не трудно переписать Insert и Delete на InventTableModule чтобы пихать записи ещё и в соседнюю компанию, но можт существует более изящный способ?
Цитата:
Сообщение от gl00mie
На буржуйском форуме нашел такой вот рецепт определения...
![]() X++: boolean isVirtual; ; isVirtual = (select firstonly DataArea where DataArea.id == new DictTable(tableId).makeRecord().dataAreaId).isVirtual;
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
|
За это сообщение автора поблагодарили: gl00mie (1). |
![]() |
#7 |
Участник
|
Цитата:
Сообщение от Maxim Gorbunov
А почему бы не переписать insert и delete на InventTable и не заморачиваться с виртуальными компаниями?
Цитата:
Сообщение от Maxim Gorbunov
Или, еще лучше, написать периодическое задание, которое будет синхронизировать справочники номенклатуры в компаниях.
Цитата:
Сообщение от Maxim Gorbunov
X++: select firstonly DataArea where DataArea.id == new DictTable(tableId).makeRecord().dataAreaId; ![]() |
|
![]() |
#8 |
Administrator
|
Цитата:
Сообщение от gl00mie
Судя по моим ковыряниям с отладчиком, эти вставки делаются из формы InventTable (в стеке вызова значится \Classes\FormDataSource\write)
![]() Цитата:
Сообщение от gl00mie
Ситуация такая: таблица InventTable - общая меж н-цати компаний, InventTableModule - везде своя. В одной компании создаем новую номенклатуру, все остальные ее не видят, потому что запись с новым InventTable.ItemId у них есть, а записей в InventTableModule с этим ItemId у них нет. При чем тут периодические задания?..
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
![]() |
#9 |
Участник
|
Цитата:
Сообщение от Maxim Gorbunov
если Вы все это затеваете только для того, чтобы иметь общий номенклатурный справочник, может проще этот справочник просто синхронизировать периодически.
![]() |
|
![]() |
#10 |
Administrator
|
Да я понимаю, что напрограммить-то несложно. Поддерживать БД с виртуальными компаниями просто сложнее, чем без них. Если все это затевается только ради общих кодов номенклатуры, подумайте, есть ли в этом смысл.
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
![]() |
#11 |
Banned
|
Обратите внимание: если нужно только цены держать в отдельных компаниях, то можно "виртуализировать" как InventTable, так и InventTableModule. Только PriceDiscTable будет находиться в каждой отдельной компании. И никакого программирования.
|
|
![]() |
#12 |
Участник
|
Цитата:
Сообщение от EVGL
Обратите внимание: если нужно только цены держать в отдельных компаниях, то можно "виртуализировать" как InventTable, так и InventTableModule.
|
|
![]() |
#13 |
Участник
|
Цитата:
Сообщение от Maxim Gorbunov
X++: select firstonly DataArea where DataArea.id == new DictTable(tableId).makeRecord().dataAreaId; ![]() X++: static str getVirtualCompanyId(TableId _tableId, CompanyId _companyId = curExt()) { VirtualDataAreaList virtDataAreaLst; TableCollectionList tableColList; SysDictTableCollection dictTableCol; ; while select virtDataAreaLst where virtDataAreaLst.id == _companyId join tableCollection from tableColList where tableColList.virtualDataArea == virtDataAreaLst.virtualDataArea { dictTableCol = new SysDictTableCollection(tableColList.tableCollection); do { if (tablename2id(dictTableCol.nextTable()) == _tableId) return virtDataAreaLst.virtualDataArea; } while (tableName); } return ''; } |
|
![]() |
#14 |
Administrator
|
Пусть я буду пессимистом, но все же...
Если вы включаете InventTable в табличную коллекцию, необходимо так же включить все таблицы, на которые есть ссылки из InventTable. Это, как минимум, InventItemGroup, InventDimGroup и InventModelGroup. К ним могут добавиться и такие таблицы, как BOMCostGroup, CommissionItemGroup, InventNumGroup и т.п. Разумеется, при этом придется включить и все таблицы, на которые ссылаются эти таблицы. Например, для InventNumGroup это NumberSequenceTable. Готовы вы к тому, что номерные серии будут общими между компаниями?
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
![]() |
#15 |
Консультант
|
Номерная серия - это такая вещь, которую можно настроить "один раз и навсегда".
Необязательно делать таблицу виртуальной, можно лишь в это самый "один раз" синхронизировать (тем или иным способом) коды номерных серий в компаниях |
|
![]() |
#16 |
Administrator
|
Ага, сделать и убежать побыстрее, пока не накрылось.
![]() В любом случае, номерные серии - это только пример. Можете найти другие примеры, если покопаетесь в остальных таблицах, на которые ссылается InventTable.
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
![]() |
#17 |
Administrator
|
Цитата:
Сообщение от gl00mie
А можно поподробней относительно смысловой нагрузки этого выражения с DictTable? А то я такой класс в AOT не нашел...
![]() new DictTable(tableId) - создает новый объект класса DictTable для таблицы tableId makeRecord() - возвращает пустой буфер для таблицы (хоть буфер и пустой, dataAreaId в нем уже инициализирован).
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
![]() |
#18 |
Участник
|
Цитата:
Сообщение от Maxim Gorbunov
В любом случае, номерные серии - это только пример. Можете найти другие примеры, если покопаетесь в остальных таблицах, на которые ссылается InventTable.
![]() ![]() |
|
![]() |
#19 |
Модератор
|
И не забудьте при вводе новой номенклатуры делать проверку в соседних компаниях - вдруг она уже заведена?
![]() С Уважением, Георгий |
|
![]() |
#20 |
Участник
|
![]() Цитата:
Сообщение от gl00mie
Представляется обновление InventTableModule сделать примерно так:
![]() X++: changeCompany(virtualDataAreaList.id) { super(); } ![]() ![]() ![]() |
|
Теги |
виртуальные компании, как правильно, номенклатура, компания |
|
![]() |
||||
Тема | Ответов | |||
Виртуальные компании | 8 | |||
виртуальные компании | 5 | |||
Таблица DocuRef и виртуальные компании | 2 | |||
Виртуальные компании или фин. отчеты | 20 | |||
Виртуальные компании | 7 |
|