|
связь нескольких таблиц на форме | ☑ | ||
---|---|---|---|---|
0
falselight
21.10.16
✎
08:06
|
На форме справочника расположены 3 таблицы.
Как между ними можно устанавливать связь? К примеру что бы выделенная строка в первой, отображала соответствующие только ей данные во второй. А выделенная строка во второй, отображала соответствующие ей данные в третьей. И даже управляла видимостью третьей таблицы, в зависимости от выбранного значения в определенном поле строки второй таблицы. |
|||
1
falselight
21.10.16
✎
08:06
|
интерфейс такси
|
|||
2
AlexToo
21.10.16
✎
08:07
|
(1) в типовых конфах правда на обычных формах, это реализовано через ключевые поля типа "номер строки"
|
|||
3
falselight
21.10.16
✎
08:25
|
(2) Формы обычные. Но не думаю что есть какое то существенное различие. Можете подсказать по алгоритму как это сделать? Честно не соображаю пока сам.
|
|||
4
catena
21.10.16
✎
08:29
|
Создать ключ связи таблиц, при активизации строки управлять отборами в подчиненных таблицах.
|
|||
5
DrShad
21.10.16
✎
08:30
|
каким образом заполняются эти три таблицы? если запросами, то ставь отборы и будет тебе счастье
|
|||
6
falselight
21.10.16
✎
08:32
|
(5) нет не запросами, в ручную
важно что бы строки соответствовали главной таблице |
|||
7
falselight
21.10.16
✎
08:33
|
(4) да, так примерно я и думаю делать
|
|||
8
falselight
21.10.16
✎
08:39
|
(4) Заполнять ключ связи во второй таблице, нужно видимо считывая номер строки в первой таблице? Какая там выделена строка, да?
|
|||
9
catena
21.10.16
✎
08:41
|
(8)По идее, ключом может быть любое удобное для отбора поле.
|
|||
10
falselight
21.10.16
✎
08:46
|
(9) вот и пытаюсь понять как лучше.
Но как любое? Я думаю номер строки из первой таблицы основной. Иначе какие варианты? И в какой процедуре заполнять ключ связи во второй таблице? |
|||
11
catena
21.10.16
✎
08:48
|
(10)Ну все же зависит от логики заполнения таблиц. Я ж откуда знаю, как заполняются, по каким принципам связываются?
|
|||
12
DrShad
21.10.16
✎
08:53
|
(9) лучше использовать поле со значением УникальныйИдентификатор(), тогда не будет траблов если вдруг изменят состав таблицы или еще что
|
|||
13
falselight
21.10.16
✎
08:54
|
(11) да вот особых наставлений не дали, покрайней мере пока их не получил, пытаюсь придумать сам
|
|||
14
DDwe
21.10.16
✎
08:55
|
(13) Вот с этого и нужно начинать.
|
|||
15
falselight
21.10.16
✎
08:55
|
(21) А как это будет выглядеть? Делать отбор по уникальному идентификатору не по номеру строки?
&НаКлиенте Процедура АлгоритмыПриАктивизацииСтроки(Элемент) Если ЗначениеЗаполнено(Объект.Ссылка) Тогда Элементы.Направления.ОтборСтрок = Новый ФиксированнаяСтруктура("КлючСвязи", Элемент.ТекущиеДанные.НомерСтроки); КонецЕсли; КонецПроцедуры |
|||
16
DrShad
21.10.16
✎
08:56
|
(15) точно также
|
|||
17
falselight
21.10.16
✎
08:57
|
(15) это к (12), пора бы правку сообщений сделать на мисте
|
|||
18
falselight
21.10.16
✎
08:57
|
(16) А в какой момент писать это в ключ связи второй таблицы?
|
|||
19
DrShad
21.10.16
✎
08:59
|
в момент заполнения таблиц естественно
|
|||
20
falselight
21.10.16
✎
09:00
|
(19) заполняю первую таблицу, второя же не заполняется в этот момент. Ввожу строку во вторую таблицу, в каком событии заполняется ключ связи????
|
|||
21
DrShad
21.10.16
✎
09:04
|
*рукалицо*
|
|||
22
catena
21.10.16
✎
09:08
|
(20)Встать на таблице в конфигураторе и посмотреть список доступных событий что мешает?
|
|||
23
falselight
21.10.16
✎
09:14
|
В процедуре при окончании редактирования нормально будет? Там есть параметр НоваяСтрока, отслеживающая ввод новой строки или редактирование существующей, что важно
|
|||
24
DrShad
21.10.16
✎
09:20
|
имхо вы сейчас оба вообще не в ту степь ушли
|
|||
25
DrShad
21.10.16
✎
09:22
|
а еще готовься к бесконечному циклу )))
|
|||
26
falselight
21.10.16
✎
09:35
|
(24) почему не в ту? подскажите правильное направление?
|
|||
27
DrShad
21.10.16
✎
09:36
|
(26) ключ связи нужно заполнять в момент формирования таблиц, не в момент их вывода на форму, а именно в момент формирования
|
|||
28
falselight
21.10.16
✎
09:37
|
(27) в процедуре при окончании редактирования, это и есть в момент формирования, добавления строк в таблицу
|
|||
29
falselight
21.10.16
✎
09:47
|
почему при добавлении строк номер строки не реальный???? К примеру добавляю строку в табличную часть а у неё номер 4 стоит
|
|||
30
DDwe
21.10.16
✎
09:56
|
Пятница!
|
|||
31
catena
21.10.16
✎
10:15
|
(27)Он до вывода еще не дошел, пока только до ввода. У него данные вручную вводятся.
|
|||
32
catena
21.10.16
✎
10:15
|
(29)Отстань от номера строки, не мучай честную женщину, зачем она тебе?
|
|||
33
falselight
21.10.16
✎
10:23
|
при вводе строк, я так буду получать уникальный идентификатор строки??? И добавлять его в поле КлючСвязи.
|
|||
34
falselight
21.10.16
✎
10:24
|
&НаКлиенте
Процедура АлгоритмыПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования) Если НоваяСтрока Тогда Элементы.Алгоритмы.ТекущиеДанные.КлючСвязи = УникальныйИдентификатор(); КонецЕсли; КонецПроцедуры |
|||
35
DDwe
21.10.16
✎
10:24
|
(33) Сформулируй яснее..
|
|||
36
catena
21.10.16
✎
10:28
|
(33)Ты сперва заполняешь верхнюю таблицу иерархии или нижнюю?
|
|||
37
DDwe
21.10.16
✎
10:29
|
(36) Ну, зачем ты так?
|
|||
38
catena
21.10.16
✎
10:36
|
(37)Что, слова слишком длинные?
|
|||
39
catena
21.10.16
✎
10:39
|
||||
40
falselight
21.10.16
✎
10:43
|
(36) верхнюю
|
|||
41
DrShad
21.10.16
✎
11:18
|
(31) откуда инфа?
|
|||
42
catena
21.10.16
✎
11:21
|
(41)
falselight автор 18 - 21.10.16 - 08:57 ((16)) А в какой момент писать это в ключ связи второй таблицы? DrShad 19 - 21.10.16 - 08:59 в момент заполнения таблиц естественно falselight автор 20 - 21.10.16 - 09:00 ((19)) заполняю первую таблицу, второя же не заполняется в этот момент. Ввожу строку во вторую таблицу, в каком событии заполняется ключ связи???? |
|||
43
falselight
21.10.16
✎
11:22
|
правильное получение изначального уникального идентификатора при вводе данных в первую таблицу???
&НаКлиенте Процедура АлгоритмыПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования) Если НоваяСтрока Тогда УникальныйИдентификатор = Новый УникальныйИдентификатор; Элементы.Алгоритмы.ТекущиеДанные.КлючСвязи = Строка(УникальныйИдентификатор); КонецЕсли; КонецПроцедуры // |
|||
44
catena
21.10.16
✎
11:22
|
+(42)
DrShad 5 - 21.10.16 - 08:30 каким образом заполняются эти три таблицы? если запросами, то ставь отборы и будет тебе счастье falselight автор 6 - 21.10.16 - 08:32 (5) нет не запросами, в ручную |
|||
45
DrShad
21.10.16
✎
11:25
|
(44) ну тут как бы вручную понятие сомнительное, там может циклом заполняется или еще как
|
|||
46
DrShad
21.10.16
✎
11:26
|
(43) сделай во всех трех таблицах поле с типом УникальныйИдентификатор и не парь нам мозг
|
|||
47
DrShad
21.10.16
✎
11:27
|
при добавлении строки во вторую таблицу в событии при начале редактирования сразу заполняй это поле значением из текущей строки первой таблицы
|
|||
48
falselight
21.10.16
✎
11:32
|
(46) я сделал
но идет ошибка, на строке УникальныйИдентификатор = Новый УникальныйИдентификатор; {Справочник.Производители.Форма.ФормаЭлемента.Форма(106)}: Поле объекта недоступно для записи (УникальныйИдентификатор) УникальныйИдентификатор = Новый УникальныйИдентификатор; как это делается? |
|||
49
Lexey_
21.10.16
✎
11:34
|
(48) УникальныйИдентификатор - свойство формы
|
|||
50
falselight
21.10.16
✎
11:37
|
(49) понял, поправил на
&НаКлиенте Процедура АлгоритмыПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования) Если НоваяСтрока Тогда УнИд = Новый УникальныйИдентификатор; Элементы.Алгоритмы.ТекущиеДанные.КлючСвязи = Строка(УнИд); КонецЕсли; КонецПроцедуры |
|||
51
falselight
21.10.16
✎
11:41
|
не получается (((( ТекущиеДанные не определены в этот момент
&НаКлиенте Процедура АлгоритмыПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования) Если НоваяСтрока Тогда УнИд = Новый УникальныйИдентификатор; Элементы.Алгоритмы.ТекущиеДанные.КлючСвязи = Строка(УнИд); КонецЕсли; КонецПроцедуры |
|||
52
falselight
21.10.16
✎
11:42
|
(51) как получить доступ к добавляемой строке? не та процедура?
|
|||
53
Lexey_
21.10.16
✎
11:45
|
(51) ты бредишь, всё определено
|
|||
54
falselight
21.10.16
✎
12:08
|
(53) при вводе первой строки там нет данных
|
|||
55
falselight
21.10.16
✎
12:12
|
итак создаю первичный уникальный идентификатор в первой таблицы (после обычных форм постоянно заморачиваюсь с этими управляемыми)
&НаКлиенте Процедура АлгоритмыПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования) Если НоваяСтрока Тогда УнИд = Новый УникальныйИдентификатор; Если Объект.Алгоритмы.Количество() = 1 Тогда Инд = 0; Иначе Инд = Объект.Алгоритмы.Индекс(Элементы.Алгоритмы.ТекущиеДанные); КонецЕсли; Объект.Алгоритмы[Инд].КлючСвязи = Строка(УнИд); КонецЕсли; КонецПроцедуры // |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |