Вход | Регистрация



связь нескольких таблиц на форме

связь нескольких таблиц на форме
Я
   falselight
 
21.10.16 - 08:06
На форме справочника расположены 3 таблицы.
Как между ними можно устанавливать связь?
К примеру что бы выделенная строка в первой,
отображала соответствующие только ей данные во второй.
А выделенная строка во второй, отображала соответствующие ей данные
в третьей. И даже управляла видимостью третьей таблицы, в зависимости
от выбранного значения в определенном поле строки второй таблицы.
 
 
   falselight
 
1 - 21.10.16 - 08:06
интерфейс такси
   AlexToo
 
2 - 21.10.16 - 08:07
(1) в типовых конфах правда на обычных формах, это реализовано через ключевые поля типа "номер строки"
   falselight
 
3 - 21.10.16 - 08:25
(2) Формы обычные. Но не думаю что есть какое то существенное различие. Можете подсказать по алгоритму как это сделать? Честно не соображаю пока сам.
   catena
 
4 - 21.10.16 - 08:29
Создать ключ связи таблиц, при активизации строки управлять отборами в подчиненных таблицах.
   DrShad
 
5 - 21.10.16 - 08:30
каким образом заполняются эти три таблицы? если запросами, то ставь отборы и будет тебе счастье
   falselight
 
6 - 21.10.16 - 08:32
(5) нет не запросами, в ручную
важно что бы строки соответствовали главной таблице
   falselight
 
7 - 21.10.16 - 08:33
(4) да, так примерно я и думаю делать
   falselight
 
8 - 21.10.16 - 08:39
(4) Заполнять ключ связи во второй таблице, нужно видимо считывая номер строки в первой таблице? Какая там выделена строка, да?
   catena
 
9 - 21.10.16 - 08:41
(8)По идее, ключом может быть любое удобное для отбора поле.
   falselight
 
10 - 21.10.16 - 08:46
(9) вот и пытаюсь понять как лучше.
Но как любое? Я думаю номер строки из первой таблицы основной.
Иначе какие варианты? И в какой процедуре заполнять ключ связи во второй таблице?
 
 Рекламное место пустует
   catena
 
11 - 21.10.16 - 08:48
(10)Ну все же зависит от логики заполнения таблиц. Я ж откуда знаю, как заполняются, по каким принципам связываются?
   DrShad
 
12 - 21.10.16 - 08:53
(9) лучше использовать поле со значением УникальныйИдентификатор(), тогда не будет траблов если вдруг изменят состав таблицы или еще что
   falselight
 
13 - 21.10.16 - 08:54
(11) да вот особых наставлений не дали, покрайней мере пока их не получил, пытаюсь придумать сам
   DDwe
 
14 - 21.10.16 - 08:55
(13) Вот с этого и нужно начинать.
   falselight
 
15 - 21.10.16 - 08:55
(21) А как это будет выглядеть? Делать отбор по уникальному идентификатору не по номеру строки?

&НаКлиенте
Процедура АлгоритмыПриАктивизацииСтроки(Элемент)
    Если ЗначениеЗаполнено(Объект.Ссылка) Тогда
        Элементы.Направления.ОтборСтрок = Новый ФиксированнаяСтруктура("КлючСвязи", Элемент.ТекущиеДанные.НомерСтроки);
    КонецЕсли; 

КонецПроцедуры
   DrShad
 
16 - 21.10.16 - 08:56
(15) точно также
   falselight
 
17 - 21.10.16 - 08:57
(15) это к (12), пора бы правку сообщений сделать на мисте
   falselight
 
18 - 21.10.16 - 08:57
(16) А в какой момент писать это в ключ связи второй таблицы?
   DrShad
 
19 - 21.10.16 - 08:59
в момент заполнения таблиц естественно
   falselight
 
20 - 21.10.16 - 09:00
(19) заполняю первую таблицу, второя же не заполняется в этот момент. Ввожу строку во вторую таблицу, в каком событии заполняется ключ связи????
   DrShad
 
21 - 21.10.16 - 09:04
*рукалицо*
   catena
 
22 - 21.10.16 - 09:08
(20)Встать на таблице в конфигураторе и посмотреть список доступных событий что мешает?
   falselight
 
23 - 21.10.16 - 09:14
В процедуре при окончании редактирования нормально будет? Там есть параметр НоваяСтрока, отслеживающая ввод новой строки или редактирование существующей, что важно
   DrShad
 
24 - 21.10.16 - 09:20
имхо вы сейчас оба вообще не в ту степь ушли
   DrShad
 
25 - 21.10.16 - 09:22
а еще готовься к бесконечному циклу )))
   falselight
 
26 - 21.10.16 - 09:35
(24) почему не в ту? подскажите правильное направление?
   DrShad
 
27 - 21.10.16 - 09:36
(26) ключ связи нужно заполнять в момент формирования таблиц, не в момент их вывода на форму, а именно в момент формирования
   falselight
 
28 - 21.10.16 - 09:37
(27) в процедуре при окончании редактирования, это и есть в момент формирования, добавления строк в таблицу
   falselight
 
29 - 21.10.16 - 09:47
почему при добавлении строк номер строки не реальный???? К примеру добавляю строку в табличную часть а у неё номер 4 стоит
   DDwe
 
30 - 21.10.16 - 09:56
Пятница!
   catena
 
31 - 21.10.16 - 10:15
(27)Он до вывода еще не дошел, пока только до ввода. У него данные вручную вводятся.
   catena
 
32 - 21.10.16 - 10:15
(29)Отстань от номера строки, не мучай честную женщину, зачем она тебе?
   falselight
 
33 - 21.10.16 - 10:23
при вводе строк, я так буду получать уникальный идентификатор строки??? И добавлять его в поле КлючСвязи.
 
 
   falselight
 
34 - 21.10.16 - 10:24
&НаКлиенте
Процедура АлгоритмыПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
    Если НоваяСтрока Тогда
        Элементы.Алгоритмы.ТекущиеДанные.КлючСвязи = УникальныйИдентификатор();    
    КонецЕсли; 
КонецПроцедуры
   DDwe
 
35 - 21.10.16 - 10:24
(33) Сформулируй яснее..
   catena
 
36 - 21.10.16 - 10:28
(33)Ты сперва заполняешь верхнюю таблицу иерархии или нижнюю?
   DDwe
 
37 - 21.10.16 - 10:29
(36) Ну, зачем ты так?
   catena
 
38 - 21.10.16 - 10:36
(37)Что, слова слишком длинные?
   catena
 
39 - 21.10.16 - 10:39
(34)Вот, думай:

http://savepic.ru/11880325.png
   falselight
 
40 - 21.10.16 - 10:43
(36) верхнюю
   DrShad
 
41 - 21.10.16 - 11:18
(31) откуда инфа?
   catena
 
42 - 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)) заполняю первую таблицу, второя же не заполняется в этот момент. Ввожу строку во вторую таблицу, в каком событии заполняется ключ связи????
   falselight
 
43 - 21.10.16 - 11:22
правильное получение изначального уникального идентификатора при вводе данных в первую таблицу???

&НаКлиенте
Процедура АлгоритмыПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
    Если НоваяСтрока Тогда
        УникальныйИдентификатор                    = Новый УникальныйИдентификатор;
        Элементы.Алгоритмы.ТекущиеДанные.КлючСвязи = Строка(УникальныйИдентификатор);     
    КонецЕсли; 
КонецПроцедуры
//
   catena
 
44 - 21.10.16 - 11:22
+(42)
   DrShad
5 - 21.10.16 - 08:30
каким образом заполняются эти три таблицы? если запросами, то ставь отборы и будет тебе счастье
   falselight автор 
6 - 21.10.16 - 08:32
(5) нет не запросами, в ручную
   DrShad
 
45 - 21.10.16 - 11:25
(44) ну тут как бы вручную понятие сомнительное, там может циклом заполняется или еще как
   DrShad
 
46 - 21.10.16 - 11:26
(43) сделай во всех трех таблицах поле с типом УникальныйИдентификатор и не парь нам мозг
   DrShad
 
47 - 21.10.16 - 11:27
при добавлении строки во вторую таблицу в событии при начале редактирования сразу заполняй это поле значением из текущей строки первой таблицы
   falselight
 
48 - 21.10.16 - 11:32
(46) я сделал
но идет ошибка, на строке

УникальныйИдентификатор                    = Новый УникальныйИдентификатор;

{Справочник.Производители.Форма.ФормаЭлемента.Форма(106)}: Поле объекта недоступно для записи (УникальныйИдентификатор)
        УникальныйИдентификатор                    = Новый УникальныйИдентификатор;

как это делается?
   Lexey_
 
49 - 21.10.16 - 11:34
(48) УникальныйИдентификатор - свойство формы
 
 Рекламное место пустует
   falselight
 
50 - 21.10.16 - 11:37
(49) понял, поправил на
&НаКлиенте
Процедура АлгоритмыПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
    Если НоваяСтрока Тогда
        УнИд                                        = Новый УникальныйИдентификатор;
        Элементы.Алгоритмы.ТекущиеДанные.КлючСвязи = Строка(УнИд);     
    КонецЕсли; 
КонецПроцедуры
   falselight
 
51 - 21.10.16 - 11:41
не получается (((( ТекущиеДанные не определены в этот момент

&НаКлиенте
Процедура АлгоритмыПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
    Если НоваяСтрока Тогда
        УнИд                                        = Новый УникальныйИдентификатор;
        Элементы.Алгоритмы.ТекущиеДанные.КлючСвязи = Строка(УнИд);     
    КонецЕсли; 
КонецПроцедуры
   falselight
 
52 - 21.10.16 - 11:42
(51) как получить доступ к добавляемой строке? не та процедура?
   Lexey_
 
53 - 21.10.16 - 11:45
(51) ты бредишь, всё определено
   falselight
 
54 - 21.10.16 - 12:08
(53) при вводе первой строки там нет данных
   falselight
 
55 - 21.10.16 - 12:12
итак создаю первичный уникальный идентификатор в первой таблицы (после обычных форм постоянно заморачиваюсь с этими управляемыми)


&НаКлиенте
Процедура АлгоритмыПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
    Если НоваяСтрока Тогда
        УнИд = Новый УникальныйИдентификатор;
        Если Объект.Алгоритмы.Количество() = 1 Тогда
            Инд = 0;
        Иначе
            Инд = Объект.Алгоритмы.Индекс(Элементы.Алгоритмы.ТекущиеДанные);
        КонецЕсли;  
        Объект.Алгоритмы[Инд].КлючСвязи = Строка(УнИд);                 
    КонецЕсли; 
КонецПроцедуры
//


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует