19.12.2012, 15:06 | #1 |
Участник
|
В таблице Sales Header достигнут предел объёма памяти, занимаемый полями одной записи таблицы, и всё равно необходимо добавить новые текстовые поля. Выбран вариант решения, когда создаётся дополнительная новая таблица связанная по первичному ключу как 1:1 к Sales Header. В таком варианте никаких препятствий для добавления новых текстовых полей нет, но есть проблема с отображением всего этого "добра" на форме 42 Sales Order. Хочется чтобы для пользователя подобные технические решения остались незаметными, не доставляли неудобств:
Спасибо |
|
19.12.2012, 20:44 | #2 |
Участник
|
Само собой FlowFields в должны быть в таблице Editable=No, такие поля в НАВ'е не для редактирования !
У нас тоже дошло до предела с полями, сделали: 1. На карточке 42, где вы показываете FlowField, надо заменить в SourceExpression FlowField из Sales Header на глобальную переменную. 3. В OnOpenForm(), OnAfterGetRecord(), OnAfterGetCurrRecord: - делаете CALCFIELDS на требуемый FlowField и показываете его значение в глоб. переменнной 4. В OnAfterValidate поля (где SourceExpression=глобальную перемення!) запускаете функцию, которая передаёт значение глоб. переменнной (которое user именил) в поле доп. таблицы. Само собой из-за подмены на карточке в SourceExpression табл. поля на глобальную переменную теряется возможность F7-фильтрации, но остаётся по прежнему возможность CTRL+F7 фильтрации |
|
20.12.2012, 09:31 | #3 |
Участник
|
Вот этого и хотелось избежать путём перехватывания изменения FlowField. Пользователям будет трудно объяснить почему старые поля фильтруются нормально, а с новыми надо работать по другому
|
|
20.12.2012, 10:26 | #4 |
Участник
|
Видимо, остается такой вариант - в дополнительной таблице должны быть все поля, которые видны в форме 42. Включая дублирующие из 36-й. Уж суммарная длина видимых на форме полей точно не превысит максимальную для таблицы. Источником в 42 форме должна стать новая таблица. Повесить на новую таблицу триггеры, обновляющие соответствующие поля в 36-й (и наоборот, чтобы избежать вычисляемых полей). Лучше, конечно, сделать новую форму вместо 42-й.
|
|
20.12.2012, 11:04 | #5 |
Участник
|
Выводите новые поля из доп таблицы на новую закладку и объясните пользователям, что по полям на этой закладке ничего фильтроваться не будет.
|
|
20.12.2012, 12:49 | #6 |
NavAx
|
Оставьте отображение полей как есть (только запретите редактирование, разумеется)
Тогда фильтроваться все будет как обычно Нарисуйте к этим полям, например, ассистедиты, напишите там код, обновляющий значение в связанной таблице, научите юзеров
__________________
"Моей лошадке ядрышком полмордочки снесло..." А.В.Суворов, письма к дочери |
|
20.12.2012, 15:24 | #7 |
Участник
|
Спасибо всем за внимание. Раз нет обходного решения, придётся пользователям "прогнуться"
|
|
20.12.2012, 17:25 | #8 |
Участник
|
Никто не предложил вроде бы, но можно еще вьюшку сделать и открывать списочную форму на ней. Кнопки открытия карточек документов придется переделывать.
Как пример делал вьюшку для поставщик оборотной ведомости только по тем поставщикам по которым в организации есть операции. (Справочник поставщиков глобальный и их очень много, при том что в каждой организации используется хоть и небольшая но местами пересекающаяся часть поставщиков).
__________________
Want to believe... |
|
20.12.2012, 22:33 | #9 |
Участник
|
Цитата:
Ведь тогда придётся заодно переписать весь код во всех menue-buttons, Info-Pane итд. 42-й формы (или заново сдублировать в новой форме), потом не забыть обыскать все обьекты в базе, в которых используется 42-я форма и там всё поменять итд. |
|
21.12.2012, 13:36 | #10 |
Участник
|
Согласен, что звучит страшновато. Но по сути, в каждом случае, где используется Rec, достаточно написать пару строчек - получить его и подставить. За несколько часов можно управиться, я думаю. Но неизящно, конечно... />
|
|