Имя: Пароль:
1C
1С v8
Подчинённая табличная часть в Управляемом приложении
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
В итоге реализовал всё с помощью таблицы значений.
При выборе родительского элемента достаю в реквизит формы ТЗ только нужные строки, сделал свои обработчике перемещения, при начале добавления , при удалении и окончании редактирования. Пришлось также свое поле (НомераСтроки) обозвал НомСтроки и сделать чтоб высчитывалось правильно во всех ситуациях и упорядочиваю постоянно по нему вот и всё :)
И всё работает пока без проблем.