|
Связь поля таблицы с другой таблицей | ☑ | ||
---|---|---|---|---|
0
Kertis138
17.09.17
✎
11:08
|
Здравствуйте!
В документе есть 1 табличная часть. В реквизитах 1ой ТЧ есть ХранилищеЗначений, в котором я хотел хранить другую таблицу. На форме 1ая таблица естественно не может отображать ХранилищеЗначений и поэтому ПриАктивацииСтроки, я хочу выводить таблицу этого поля из ХранилищаЗначений во вторую табличную форму, которая чуть ниже. Подскажите как это реализовывается? По моим предположениям ПриАктивацииСтроки я выгружаю ХранилищеЗначений на вторую табличную форму. Только как получить доступ к этому ХранилищуЗначений? |
|||
1
vicof
17.09.17
✎
11:12
|
Сделай две таблицы. С хранилищем кривая архитектура.
|
|||
2
Kertis138
17.09.17
✎
11:16
|
Дело в том, что мне нужно каждую запись первой таблицы ассоциировать с другой таблицей.
Проблема изначально была такая: Каждая запись таблицы имеет поле УСЛУГИ. Туда может быть записано либо ничего, либо несколько услуг. Думаю, можно сделать многострочное поле с услугами через разделитель. А во второй таблице, при активации строки первой таблицы, выводить эти услуги в удобном видеКак думаете? |
|||
3
Филиал-msk
17.09.17
✎
11:17
|
Сделай. Две. Таблицы.
|
|||
4
Kertis138
17.09.17
✎
11:22
|
А как будет все это выглядеть с двумя таблицами?
В одной таблице список из всех товаров. А во второй Товар-Услуга? А если на один товар несколько услуг? |
|||
5
Филиал-msk
17.09.17
✎
11:26
|
То тогда во второй таблице у тебя будет несколько строк. Так-то!
|
|||
6
Cyberhawk
17.09.17
✎
11:30
|
У каждой строки первой таблицы должен быть уникальный ключ, который будет присутствовать во второй таблице и таким образом ты сможешь из второй таблицы отбирать строки, относящиеся к конкретной строке первой таблицы (по этому ключу)
|
|||
7
Kertis138
17.09.17
✎
11:33
|
Идея с уникальными ключами хорошо подойдет.
То есть вторая ТЧ хранить ID-услугу и в форме уже выводит объединение двух таблиц - НазваниеТовара-Услуга, верно? |
|||
8
Kertis138
17.09.17
✎
11:38
|
Проблема в том, что работники жаловались на неудобство.
Неудобно, когда на один товар несколько строк для услуг. Хотелось бы это все объединить. Или сгруппировать по Услугам. Возможно ли в форме документа сделать такую группировку? |
|||
9
Cyberhawk
17.09.17
✎
11:44
|
(7) Не верно. Ключ первой таблицы - товар, ключ второй составной "товар + услуга". На форме выведены обе таблицы
|
|||
10
Kertis138
17.09.17
✎
12:01
|
Две таблицы сделал. А как теперь сделать их "соединение".
Например, чтобы при нажатии на строку в первой таблице, создавалась строка во второй с заполненным ID ? |
|||
11
Cyberhawk
17.09.17
✎
12:02
|
(10) Руками (писать код)
|
|||
12
Cyberhawk
17.09.17
✎
12:02
|
При навигации по строкам первой таблицы во второй ничего создаваться не должно - это же навигация для просмотра
|
|||
13
Cyberhawk
17.09.17
✎
12:03
|
Устанавливай отбор во второй таблице по товару, который сейчас выделен в строке первой таблицы
|
|||
14
Cyberhawk
17.09.17
✎
12:03
|
Добавление строк во вторую таблицу - вручную с уже заполненным полем "Товар" из выделенной строки первой таблицы
|
|||
15
Kertis138
17.09.17
✎
12:43
|
(13) Спасибо! Этот вариант - то, что нужно. А Вы случайно не знаете, может есть в Инете нормальные туториалы, чтобы разобраться в этом всем? Например, как получить вторую таблицу, когда происходит события выбора строки на первой? Как сделать отбор?
Или может есть книга, в которой этим моменты описываются? В Инете сколько не гуглил, нормального ничего не могу найти. |
|||
16
Филиал-msk
17.09.17
✎
12:53
|
Миста, между прочим, тоже интернет
|
|||
17
Kertis138
17.09.17
✎
12:59
|
(16) У меня не хватает опыта, чтобы просто сформировать верный запрос в поисковике :)
В итоге я получаю совсем не то, что мне нужно. Где мне найти примеры отбора таблиц в форме документа с составным ключем? |
|||
18
Злопчинский
17.09.17
✎
13:23
|
Ну, для начала почитать теорию реляционных баз данных
|
|||
19
breezee
17.09.17
✎
13:26
|
(17) ОткрытьФорму()
|
|||
20
Филиал-msk
17.09.17
✎
13:29
|
(17) Ты не поверишь
https://www.google.ru/search?q=синхронизация+таблиц+на+форме+1с |
|||
21
Kertis138
17.09.17
✎
13:29
|
(18) С ней я знаком. А в 1с я недавно и мне пока нужен небольшой толчок. Базовые вещи я делаю, а что-то посложней пока не могу
|
|||
22
Филиал-msk
17.09.17
✎
13:30
|
(18) Вот ещё, скажешь тоже! Это же путь для неудачников. Настоящие креативные менеджеры всегда программируют методом тыка (:
|
|||
23
Злопчинский
17.09.17
✎
13:30
|
(21) как-то у меня сложилось другое мнение
|
|||
24
Kertis138
17.09.17
✎
13:34
|
У меня там все ссылки помечены, как прочитанные :)
Там везде про форму списка. А с формой документа если и есть, то не очень понятно. В первой таблице происходит событие ПриАктивацииСтроки, когда я выбираю какую-то строку. Теперь мне надо отобрать во второй таблице данные по Товару. &НаКлиенте Процедура ТоварыПриАктивизацииСтроки(Элемент) //Вот я нахожусь в таблице 1 //Мне нужно получить таблицу 2 и сделать отбор КонецПроцедуры Вроде порядок действий такой, но вот примеры реализации везде странные :) |
|||
25
Kertis138
17.09.17
✎
13:36
|
Вот один из примеров.
//установить отбор ЭлементыФормы.ИмяТабПоля.ОтборСтрок.Колонка1.Установить(ЗначениеОтбора); Вот так я пытаюсь дойти до второй таблицы: Элемент.Родитель.ПодчиненныеЭлементы.ТаблицаУслуг Верно? |
|||
26
Kertis138
17.09.17
✎
13:40
|
||||
27
Kertis138
17.09.17
✎
14:23
|
Вылетает ошибка
Элементы.Услуги.ОтборСтрок.ИД.Значение = Данные.ИД; {Документ.ТестовыйДокумент.Форма.ФормаДокумента.Форма(121)}: Значение не является значением объектного типа (ИД) Элементы.Услуги.ОтборСтрок.ИД.Значение = Данные.ИД; И что тут не так? |
|||
28
Kertis138
17.09.17
✎
15:01
|
Очень странно, но в версии 8.3.9 название методом отличается.
Почти все получилось. Единственное не удается сделать отбор строк. Видимо, тут тоже никакой совместимости... |
|||
29
Kertis138
17.09.17
✎
15:25
|
Наконец-то все получилось! Спасибо за информацию.
Прикладываю код. Может кому поможет. Версия 8.3.9 Главная таблица - НомераТруб Производная таблица - Услуги Реквизит связи - ИД &НаКлиенте Процедура НомераТрубПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование) Данные = Элементы.НомераТруб.ТекущиеДанные; Если НоваяСтрока Тогда Данные.ИД = Новый УникальныйИдентификатор; КонецЕсли; КонецПроцедуры &НаКлиенте Процедура УслугиТаблицаПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование) Данные = Элементы.НомераТруб.ТекущиеДанные; ТекДанные = Элементы.Услуги.ТекущиеДанные; Если НоваяСтрока Тогда ТекДанные.ИД = Данные.ИД; КонецЕсли; КонецПроцедуры &НаКлиенте Процедура НомераТрубПередУдалением(Элемент, Отказ) Данные = Элементы.НомераТруб.ТекущиеДанные; Отбор = Новый Структура("ИД",Данные.ИД); Масс = Объект.Услуги.НайтиСтроки(Отбор); Для каждого Строка из Масс Цикл Объект.Услуги.Удалить(Строка); КонецЦикла; КонецПроцедуры &НаКлиенте Процедура НомераТрубПриАктивизацииСтроки(Элемент) Данные = Элементы.НомераТруб.ТекущиеДанные; Если Данные = Неопределено Тогда Возврат; КонецЕсли; ФМ=Новый ФиксированнаяСтруктура("ИД",Данные.ИД); Элементы.Услуги.ОтборСтрок = ФМ; КонецПроцедуры |
|||
30
Филиал-msk
17.09.17
✎
21:02
|
(29) Поломается, если начать добавлять строку в услуги, когда нет ни одного товара
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |