|
Подчинённая табличная часть в Управляемом приложении | ☑ | ||
---|---|---|---|---|
0
Aston86
08.12.12
✎
19:46
|
Привет всем.
Я когда то маялся с этим вопросом, но опять вернулся к нему. Как советовали многие сделать две табличные части, в обоих сделать реквизит УникальныйИдентификаторСтроки. При каждом добавлении строк в родительской таблице заполнять этот реквизит, а при добавлении в дочернюю таблицу заполнять этот реквизит из родительской (по текущей строке) и постоянно делать отбор строк по текущей Родительское строке (если она есть). В дочерней таблице убрал колонку номера строк - так как они беспорядочны. Командные панели оставил по умолчанию. Первая проблема с которой я столкнулся - это Переместить текущий элемент вверх или вниз. Покажу на примере: в дочерних указываю номер строки Родитель1 Дочерний 3 Дочерний 4 Дочерний 5 Родитель2 Дочерний 1 Дочерний 2 Дочерний 6 Такая ситуация возникнет если в родитель два добавили сначало 2 строки, потом в родитель 1 3 строки и одну в родитель два. Пользователь находясь на родителе два в дочерней таблице пытается переместить 3 строку на вторую и нажимает (Переместить текущий элемент вверх) - ничего не произошло, так как шестая строка поменялась с пятой, для того чтобы переместить на 2 строку надо нажать четыре раза на переместить вверх. Что неправильно как минимум а вдруг будет 20 строк в каждом элементе и тогда нервы пользователя просто не выдержат. Этот подход мне уже кажется неправильным, подскажите плиз как правильно делать подчинённые табличные части и чтоб номер строки в дочерней табличной части тоже отображался и работал нормально. Или как бы сделал и вы. Есть документ такой называется Экспликация к плану строения. В нём описываются этажи, у каждого этажа есть комнаты (сколько их неизвестно), у каждой комнаты есть различные виды площадей. И хотелось бы это всё видеть в одном документе. (На бумаге тоже один документ) С площадями я разобрался а по поводу этажей и комнат сделал подчинённую таблицу и решил как описал выше. Заранее спасибо. |
|||
1
Надсмотрщик
08.12.12
✎
19:53
|
Виртуальную таблицу не предлагать?
|
|||
2
Aston86
08.12.12
✎
22:57
|
А поподробнее?
|
|||
3
Кокос
08.12.12
✎
23:00
|
делал в УТ11. Только кода под рукой нет.
|
|||
4
Кокос
08.12.12
✎
23:18
|
(0) короче там делаешь не по номеру строки. В основной табличной части делаешь поле КлючСтроки. Ну и в подчиненное его тоже. При добавлении строки в основную таблицу обработке изменения строки в серверной функции приизмененииноменклатуры или еще какого поля какомто там общем модуле этот ключ тупо инкрементом заполняешь, соответственно при удалении строк он всегда остается уникальным. В подчиненной таблице делаешь всегда отбор при изменении положения курсора в основной таблице. Ну и в подчиненке при добавлении строки устанавливаешь ключстроки из текущей строки основной. Все мучения будут из-за клиент-серверных передач контекста формы.
|
|||
5
Aston86
09.12.12
✎
00:01
|
(4)KazanKokos ты как внимательно читал что я писал выше или нет. Я так и делаю как ты написал ключ у родителя и по этому ключу отбор строк у дочерней, только вот беда в самом реквизите на форме количество строк не меняется отбор идёт в отображении и при отборе есть лажи когда пытаешься поднять строку выше в подчинённой таблице - почитай что я выше написал внимательно. Если не веришь сам попробуй или покажи пример с подчинённой таблицей где нет проблемы с Переместить текущий элемент вверх или вниз.
|
|||
6
Кокос
09.12.12
✎
00:05
|
(5) ну я тоже помучился с этим. Просто код у клиента на серваке. И я проблему решил еще в прошлом январе. Наизусть не помню.
|
|||
7
Кокос
09.12.12
✎
00:07
|
(5) вся лажа возникала из-за того что присвоения ключа делал не в том месте. ну допустим делал в клиентской функции а надо было на сервере. там особая система клиент-серверных вызовов нужна.
|
|||
8
Aston86
09.12.12
✎
00:20
|
(7)Да у меня проблема не с ключами, отбор идёт верно, проблема состоит в том, что в дочерней таблице хранятся все подчинённые строки родительской, при отборе он отображает всё красиво но при перемещении строк в отобранном родителе бывает ничего не происходит внимательно почитай что я написал выше. На форме в таблице все строки упорядочиваются по номеру строки, хоть отображаешь ты его хоть нет - смотри (0)
|
|||
9
Кокос
09.12.12
✎
00:28
|
(8) ну я решил эту проблему насколько я помню. Вот как это вопрос. Надо запрашивать доступ на сервер и скачивать конфу. а это не раньше следующей недели :)
|
|||
10
Кокос
09.12.12
✎
00:29
|
(8) у меня был расчет площади листов кровли под заказ по нарезку. под каждый лист формировалась таблица профилей в УТ11. Все работало.
|
|||
11
Aston86
09.12.12
✎
00:37
|
Тогда жду как решил эту проблему, и до следующей недели не так долго осталось.
|
|||
12
Надсмотрщик
09.12.12
✎
11:02
|
Твоя "подчиненная таблица", при открытой форме, хранится в виртуале, а на экран выводишь только нужные тебе строки
|
|||
13
Aston86
09.12.12
✎
12:26
|
(12) Как в виртуале хранится? - тут поподробнее плиз.
В дополнительном реквизите формы (Таблица Значений?) и как на экран выводить только нужные строки? |
|||
14
Надсмотрщик
09.12.12
✎
12:31
|
В дополнительном реквизите формы ТаблицаЗначений.
и на экран выводить только нужные строки - запросом. |
|||
15
Aston86
09.12.12
✎
12:41
|
Как я понимаю есть ТаблицаЗначений, где хранятся все строки и дополнительная ТаблицаЗначений, где хранятся только подчинённые строки текущего родителя. А в поле формы таблица указать ПУТЬКДанным = дополнительная ТаблицаЗначений?
|
|||
16
Надсмотрщик
09.12.12
✎
12:55
|
(15) Примерно
|
|||
17
vmv
09.12.12
✎
16:00
|
(0) если речь об УФ, то для реализации мастер-детали в виде двух таблиц (одна мастер по которой отбираються записи детали) я бы использовал дерево значений
Особенности: Дз должно быть двухуровневое (уровни 0 и 1) это дерево значений объявляешь на форме элементами как таблицы формы и представление списком. в первой(мастер) устанвливаешь не сбрасываемый отбор (уровень = 0) при создании формы, во второй(деталь) уровень = 1 и родитель = мастер.текущаястрока ну и обработчики там попрописывать |
|||
18
Aston86
10.12.12
✎
19:04
|
(17) У меня чисто человеческая просьба, дайте более подробную информацию если можно. С деревом значений не работал. Примерно знаю что это такое с C#. TreeView типо я так понимаю.
Меня интересует два вопроса.1) Как задать только два уровня в дереве. 2) Второе что на первом уровне должны быть строки определённой структура а на втором совершенно другой? Заранее спасибо. |
|||
19
Кокос
10.12.12
✎
19:05
|
(18) мне только в среду код дадут :)
|
|||
20
ChAlex
10.12.12
✎
19:59
|
а что так важно строки вверх вниз смыкать? А смысл?
|
|||
21
Aston86
10.12.12
✎
20:06
|
(20)Не смыкать а перемещать вверх и вниз - это важно и нужно!
|
|||
22
Надсмотрщик
10.12.12
✎
20:45
|
(18) На первом уровне - элементы РОДИТЕЛИ
На втором - подчиненные |
|||
23
ChAlex
12.12.12
✎
23:53
|
(21) - есть еще такой механизм, как перетащить. И если так уж нужно вверх и вниз - то опять же рисуешь свою функцию.
|
|||
24
Aston86
14.12.12
✎
21:31
|
В итоге реализовал всё с помощью таблицы значений.
При выборе родительского элемента достаю в реквизит формы ТЗ только нужные строки, сделал свои обработчике перемещения, при начале добавления , при удалении и окончании редактирования. Пришлось также свое поле (НомераСтроки) обозвал НомСтроки и сделать чтоб высчитывалось правильно во всех ситуациях и упорядочиваю постоянно по нему вот и всё :) И всё работает пока без проблем. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |