Перейти к содержимому


Подчиненные таблицы


Сообщений в теме: 56

#1 Alexander

    Активный участник

  • Пользователи
  • PipPipPip
  • 121 сообщений

Отправлено 21 Ноябрь 2011 - 08:55

У нас в компании есть несколько продуктов. Каждый контрагент может пользоваться несколькими нашими продуктами. Соответственно для "Контрагента" созданно много подчиненных таблиц например "тех поддержка продукт А" "тех поддержка продукт Б" "тех поддержка продукт Ц" "Лицензии продукт А" "Лицензии продукт Б" "Лицензии продукт Ц" и тд. Соответственно эти названия занимают очень много места внизу (при просмотре и редактировании поля "Контрагент". Вопрос: можно ли каким-то образом чтобы была возможность выбора продукта и только тогда открывались бы релевантные поля?

#2 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 21 Ноябрь 2011 - 10:08

Т.е. несколько подтаблиц для разных продуктов создано исключительно из-за разного набора полей для них? Тогда вам сюда: http://clientbase.ru...?showtopic=2509

#3 Alexander

    Активный участник

  • Пользователи
  • PipPipPip
  • 121 сообщений

Отправлено 21 Ноябрь 2011 - 10:52

Просмотр сообщенияРазработчик (21.11.2011, 10:08) писал:

Т.е. несколько подтаблиц для разных продуктов создано исключительно из-за разного набора полей для них? Тогда вам сюда: http://clientbase.ru...?showtopic=2509
Я видел эту тему. Вопрос или можно это сделать для отображеняия подчиненных таблиц.? Мне еще нужно сохранять историю. Поэтому использую разные таблицы и не могу использовать одну таблицу с разными полями.

Сообщение отредактировал Alexander: 21 Ноябрь 2011 - 10:54


#4 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 21 Ноябрь 2011 - 12:21

А каким образом история может на это повлиять? Пока я не вижу причин почему бы не сделать одну общую подтаблицу с выбором продукта внутри нее и отображением соответсвующих полей. Создавать несколько однотипных подтаблиц в любом случае нерационально. Что касается отображения/скрытия самих подтаблиц, то такой возможности на данный момент нет (хотя теоретически возможно доработать)

#5 Alexander

    Активный участник

  • Пользователи
  • PipPipPip
  • 121 сообщений

Отправлено 21 Ноябрь 2011 - 14:39

Просмотр сообщенияРазработчик (21.11.2011, 12:21) писал:

А каким образом история может на это повлиять? Пока я не вижу причин почему бы не сделать одну общую подтаблицу с выбором продукта внутри нее и отображением соответсвующих полей. Создавать несколько однотипных подтаблиц в любом случае нерационально. Что касается отображения/скрытия самих подтаблиц, то такой возможности на данный момент нет (хотя теоретически возможно доработать)
1. Если я сделал одну общую подтаблицу с выбором продукта. Теперь я хочу добавить только тех вызов по одному продукту. Что происходит со всеми остальными полями таблицы?

2.Что значит теоретически возможнмо доработать? Можно ли это практически доработать для нас?

#6 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 21 Ноябрь 2011 - 16:34

1. Не совсем понял что имеется ввиду. Если вы про поле "Тех. вызов" по одному продукту, то скрываете его при выборе других.

2. Практически возможна текущая доработка программы по заказу за отдельную плату, либо бесплатная просьба об изменении в будущих версиях. Во втором варианте нет гарантии что в обозримом времени будет реализовано.

#7 Alexander

    Активный участник

  • Пользователи
  • PipPipPip
  • 121 сообщений

Отправлено 21 Ноябрь 2011 - 17:04

Просмотр сообщенияРазработчик (21.11.2011, 16:34) писал:

1. Не совсем понял что имеется ввиду. Если вы про поле "Тех. вызов" по одному продукту, то скрываете его при выборе других.

2. Практически возможна текущая доработка программы по заказу за отдельную плату, либо бесплатная просьба об изменении в будущих версиях. Во втором варианте нет гарантии что в обозримом времени будет реализовано.

Попробую обьяснить. У нас в компании есть несколько продуктов. Каждый контрагент может пользоваться несколькими нашими продуктами. Соответственно для "Контрагента" создается по Вашему совету одна подтаблица с полями "тех поддержка продукт А" "тех поддержка продукт Б" "тех поддержка продукт Ц" "Лицензии продукт А" "Лицензии продукт Б" "Лицензии продукт Ц" и тд. Таблица создается с выбором продукта внутри нее и отображением соответсвующих полей. Нам нужно, например, чтобы каждое действие техподдержки по каждому продукту записывалось и мы потом эту историю видели (так же как в подтаблице "Работа с клиентом" в демо конфигурации Клиентской базы).Теперь я хочу добавить только действие техподдержки по продукту" А", Я добавляю ведь строку на всей большой подтаблице а заполняюю только одно действие техподдержки по одному продукту . Что происходит со всеми остальными полями большой таблицы?

К кому надо обратиться, чтобы узнать стоимость такой разработки?

#8 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 21 Ноябрь 2011 - 17:31

Вы похоже неправильно поняли суть создания одной подтаблицы (точнее, в вашем случае 2-х - Техподдержка и Лицензии). Никаких полей "тех поддержка продукт А" и т.д. создавать разумеется не надо. Добавляете одно поле "Продукт" типа "список" со списком продуктов "А", "Б", "Ц" и т.д. - сколько их в наличии - в обе подтаблицы. Если остальные поля совпадают для разных продуктов - оставляете как есть. Если нет - добавляете скрытие/показ полей в зависимости от выбора. Насчет истории все равно недопонял - это какая-то отдельная таблица, или вы имеете под ней ввиду разные записи в подтаблице Техподдержка? Тогда не понимаю к чему вы заостряли на этом внимание, это не меняет сути.

#9 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 21 Ноябрь 2011 - 17:34

Просмотр сообщенияAlexander (21.11.2011, 18:04) писал:

К кому надо обратиться, чтобы узнать стоимость такой разработки?
Все контакты есть на сайте: http://clientbase.ru/contacts. Вам ответят менеджеры по продажам.

#10 Alexander

    Активный участник

  • Пользователи
  • PipPipPip
  • 121 сообщений

Отправлено 22 Ноябрь 2011 - 17:20

В категории "Компании" создал подчиненную таблицу "Тех. инфо" с полем связи "Контрагент", Добавил поле "Продукт" с типом поля- список. Список значений: Продукт1, Продукт2 и Продукт3. Таблицу сделал с выбором продукта внутри нее и отображением соответсвующих полей. Все хорошо работает если я нахожусь внутри самой таблицы. Если же я пытаюсь записать в эту подчинённую таблицу непосредственно из родительской,при помощи кнопки "добавить", то с выбором продукта никакого сокрытия полей не происходит, все поля отображаются сразу. Возможно ли сделать, чтобы при выборе продукта отображались только релевантные поля. Я имею ввиду если делать выбор из родительской таблицы?

Сообщение отредактировал Alexander: 22 Ноябрь 2011 - 17:30


#11 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 22 Ноябрь 2011 - 18:05

В подчиненной таблице код javascript отличается от кода в основной, т.к. там несколько другие имена элементов. Приведите пример вашего кода.

#12 arsenal

    Активный участник

  • Пользователи
  • PipPipPip
  • 448 сообщений

Отправлено 23 Ноябрь 2011 - 07:50

Попробуйте посмотреть здесь. Это уже обсуждалось.

#13 Alexander

    Активный участник

  • Пользователи
  • PipPipPip
  • 121 сообщений

Отправлено 23 Ноябрь 2011 - 15:32

Просмотр сообщенияarsenal (23.11.2011, 7:50) писал:

Попробуйте посмотреть здесь. Это уже обсуждалось.
На данный момент код в поле "Продукт" тип список выглядит так
function onchange_{$one_field.id}()
{
display_field(1090, document.getElementById('value{$one_field.id}').value=="Продукт1");
display_field(1091, document.getElementById('value{$one_field.id}').value=="Продукт2"); 
display_field(1092, document.getElementById('value{$one_field.id}').value=="Продукт3");
display_field(1093, document.getElementById('value{$one_field.id}').value=="Продукт1");
display_field(1094, document.getElementById('value{$one_field.id}').value=="Продукт2");
display_field(1095, document.getElementById('value{$one_field.id}').value=="Продукт3");
}
addHandler(document.getElementById('value{$one_field.id}'), 'onchange', onchange_{$one_field.id});
А в полях которые должны появляться при выборе определенного продукта код выглядит так:
display_field({$one_field.id}, document.getElementById('value1089').value=="Продукт1");
Вы предлагаете следующий код:
{if $one_field.table_id!=$table_id}
display_field('{$one_field.id}_{$one_field.line_id}', document.getElementById('value{$one_field.id}_{$one_field.line_id}').value=="");
{else}
display_field('{$one_field.id}', document.getElementById('value{$one_field.id}').value=="");
{/if}
В этом коде какие данные надо вставлять? И где этот код записать - в каких полях?

Сообщение отредактировал Разработчик: 23 Ноябрь 2011 - 16:00


#14 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 23 Ноябрь 2011 - 15:56

Как было сказано в той теме, присоединяете {$one_field.line_id} ко всем id:

function onchange_{$one_field.id}_{$one_field.line_id}()
{
display_field('1090_{$one_field.line_id}', document.getElementById('value{$one_field.id}_{$one_field.line_id}').value=="Продукт1");
display_field('1091_{$one_field.line_id}', document.getElementById('value{$one_field.id}_{$one_field.line_id}').value=="Продукт2");
display_field('1092_{$one_field.line_id}', document.getElementById('value{$one_field.id}_{$one_field.line_id}').value=="Продукт3");
display_field('1093_{$one_field.line_id}', document.getElementById('value{$one_field.id}_{$one_field.line_id}').value=="Продукт1");
display_field('1094_{$one_field.line_id}', document.getElementById('value{$one_field.id}_{$one_field.line_id}').value=="Продукт2");
display_field('1095_{$one_field.line_id}', document.getElementById('value{$one_field.id}_{$one_field.line_id}').value=="Продукт3");
}
addHandler(document.getElementById('value{$one_field.id}_{$one_field.line_id}'), 'onchange', onchange_{$one_field.id}_{$one_field.line_id});
display_field('{$one_field.id}_{$one_field.line_id}', document.getElementById('value1089_{$one_field.line_id}').value=="Продукт1");

Если нужно чтобы код работал и режиме таблицы, и в режиме подчиненной записи, добавляете условие, опять же как было написано там:

{if $one_field.table_id!=$table_id}
код с {$one_field.line_id}
{else}
код без {$one_field.line_id}
{/if}


#15 Alexander

    Активный участник

  • Пользователи
  • PipPipPip
  • 121 сообщений

Отправлено 24 Ноябрь 2011 - 08:44

Огромное спасибо!

Не подскажите, когда будут фильтры в подчиненных таблицах (при просмотре ис родительских)?

#16 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 24 Ноябрь 2011 - 09:40

Пока не могу точно сказать, в ближайших планах этого нет.

#17 Alexander

    Активный участник

  • Пользователи
  • PipPipPip
  • 121 сообщений

Отправлено 24 Ноябрь 2011 - 13:09

В продолжении темы появился вопрос. В подчиненной таблице "Тех инфо" сделал фильтр на "Продукт1" и в фильтре поставил скрытие полей относящихся к другому продукту. Когда я нахожусь в полной таблице и добавляю запись то нет никаких проблем - прив ыборе продукта появляются нужные поля. Теперь когда я нахожусь в отфильтрованной таблице, хочу добавить запись, то при выборе продукта, который стоит в фильтре появляется всего одно поле из 3. А если выбираю другой продукт, то вообще никаких полей не появляется

#18 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 24 Ноябрь 2011 - 14:10

Про какой фильтр вы говорите, не понял? При чем тут фильтр? Скрытие полей при выборе реализуется через javascript, в не через фильтры.

#19 Alexander

    Активный участник

  • Пользователи
  • PipPipPip
  • 121 сообщений

Отправлено 24 Ноябрь 2011 - 14:55

В таблице тех инфо Прикрепленное изображение: posle_filtra.JPG я добавляю запись выбираю в списке продуктов- продукт и сразу появиться поля, которые надо заполнить для данного продукта (рисунок 3а )Прикрепленное изображение: dobavlenie.JPG .
В таблице "Тех инфо" создал фильтр "Продукт1". В опциях редактирования фильтра есть опция "Скрыть поля", где я и скрыл все поля, которые принадлежат другим продуктам. Потом, после нажатия на фильтр, в отфильтрованной таблице Прикрепленное изображение: posle_filtra.JPG пытаюсь добавить новую строку. Там в выпадающем списке я выбираю продукт. По логике, должны сразу появиться поля, которые надо заполнить для данного продукта , но ничего не происходит. Если я выбираю "Продукт1" то появляется одно поле из 3 (рисунок 3б Прикрепленное изображение: dobavlenie.JPG), а если я выбираю "продукт2" или "продукт3" (рисунок 3в Прикрепленное изображение: dobavlenie.JPG) то вообще никаких доп полей не появляется

Прикрепленные изображения

  • Прикрепленное изображение: vid_obichnii.JPG

Сообщение отредактировал Alexander: 24 Ноябрь 2011 - 15:28


#20 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 24 Ноябрь 2011 - 15:46

Кто вам вообще сказал что для этого нужно использовать фильтр? Выше в теме разве об этом речь шла?





Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных