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


Связывание таблиц как Счета из стандартного конфига

таблицы связанные подчиненные

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

#1 ZeroCooL

    Участник

  • Пользователи
  • PipPip
  • 17 сообщений
  • Пол:Мужчина

Отправлено 11 Март 2013 - 09:06

Добрый день

Хотел бы реализовать функционал схожий с таблицой "Счета" и "Позиции счета" из стандартной конфигурации.

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

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

#2 CbCoder

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

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

Отправлено 11 Март 2013 - 13:11

Цитата

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

При добавлении новой записи подтаблицы не выводятся, для этого необходимо вначале сохранить запись (нажать на кнопку Сохранить), либо включить в настройках таблицы автосохранение при добавлении. Вы это имеете ввиду? Или ваша подтаблица не появляется даже после нажатия на "Сохранить"?

#3 ZeroCooL

    Участник

  • Пользователи
  • PipPip
  • 17 сообщений
  • Пол:Мужчина

Отправлено 13 Март 2013 - 15:20

Просмотр сообщенияCbCoder (11 Март 2013 - 13:11) писал:

При добавлении новой записи подтаблицы не выводятся, для этого необходимо вначале сохранить запись (нажать на кнопку Сохранить), либо включить в настройках таблицы автосохранение при добавлении. Вы это имеете ввиду? Или ваша подтаблица не появляется даже после нажатия на "Сохранить"?
Да, таблицы связаны, но даже после сохранения не видно нигде связанных таблиц.

Может немного поясните механизм подобной связки?

Сообщение отредактировал ZeroCooL: 13 Март 2013 - 15:21


#4 CbCoder

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

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

Отправлено 13 Март 2013 - 15:39

Цитата

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

Цитата

хотя она помечена как подчиненная и есть поля связи
Поле связи - с родительской таблицей? Есть ли другие поля связи в таблице? Если да, то поле связи с родительской таблицей стоит первым по порядку?

Цитата

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

#5 ZeroCooL

    Участник

  • Пользователи
  • PipPip
  • 17 сообщений
  • Пол:Мужчина

Отправлено 13 Март 2013 - 16:19

Просмотр сообщенияCbCoder (13 Март 2013 - 15:39) писал:

Т.е. даже пустой вкладки внизу нет?
Чудеса, переприсвоил связь - появилась пустая строка с полями )


Цитата

Поле связи - с родительской таблицей? Есть ли другие поля связи в таблице? Если да, то поле связи с родительской таблицей стоит первым по порядку?
И все же хотелось бы во всем разобраться.
Давайте начнем по порядку и рассмотрим таблицы из демо конфига.
Есть таблицы: "Платежи" и "Оплачиваемые счета" (по аналогии "Счета" и "Позиции счета"). Ну еще есть таблица "Контрагенты", конечно.
Добавляю Платеж (контрагента выбираем из списка - все ОК, связь работает) и хочу указать по каким неоплаченным счетам поступает оплата.
Для этого создал подчиненную таблицу "Оплачиваемые счета" и поля связи "Номер платежа" (связь с таблицей платежей) и Номер оплачиваемого счета (связь с таблицей счетов) ну и всякие доп поля типа комментов.

+ для удобства отключаем видимость у подчиненной таблицы.

Этого достаточно для дальнейшей взаимосвязи?

Цитата

Возможно, после нажатия на кнопку Сохранить, если написать соответствующее вычисление.
Эээ, а можно чуть подробнее?
У меня есть вычисления которые срабатывают по определенным событиям и в фоне что-то вычисляют и укладывают в разные таблицы.
А тут к какой кнопке привязаться? В идеале, такая схема:
1. Юзер забивает новое п/п
2. Выбирает из списка Контрагента
3. Тут же внизу в распадающемся списке (в связанной таблице) у него появляются счета ТОЛЬКО того контрагента, которого он выбрал
4. Он выбирает всё что нужно и сохраняет Платеж
5. Во время сохранения в выбранные счета записывается статус "Оплачен".

К чему привязаться (к какому изменению/сохранению), чтобы выполнился пункт 3?

Сообщение отредактировал ZeroCooL: 13 Март 2013 - 16:21


#6 CbCoder

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

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

Отправлено 14 Март 2013 - 11:44

Цитата

Этого достаточно для дальнейшей взаимосвязи?

Для появления таблицы в списке подчиненных необходимы две вещи:
  • Установить галку "подчиненная"
  • Наличие поля связи с родительской таблицей, причем это поле связи должно быть первым по порядку (не обязательно среди всех полей, главное - среди других полей связи, иначе таблица также будет подчиненной, но уже у другой таблицы (то, чье поле связи первей)
Так понятнее механизм?

Насчет отключения видимости вы правы - это всего лишь вопрос удобства. Истинно подчинённую таблицу обычно нет смысла отображать отдельно от основной (как позиции счета к примеру), но сейчас функционал стал шире - и кому-то те же счета удобно видеть как отдельно, так и в подчиненной вкладке у контрагентов.


Да, и еще один момент, который может влиять на отображение подтаблицы. Если у данного пользователя нет прав доступа ни на одно поле данной таблицы, то она становится полностью невидимой - т.е. не отображается в том числе и на подчиненной вкладке.

#7 CbCoder

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

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

Отправлено 14 Март 2013 - 12:02

Цитата

А тут к какой кнопке привязаться?

Я же написал - к кнопке "Сохранить". Т.е вычисление на событие "сохранение записи". Вычисление в основной записи разумеется.
Подробнее ниже:

Цитата

В идеале, такая схема:
1. Юзер забивает новое п/п
2. Выбирает из списка Контрагента
3. Тут же внизу в распадающемся списке (в связанной таблице) у него появляются счета ТОЛЬКО того контрагента, которого он выбрал
4. Он выбирает всё что нужно и сохраняет Платеж
5. Во время сохранения в выбранные счета записывается статус "Оплачен".

Да, примерно такая схема, за исключением того что в пункте 3 не "тут же", а после нажатия на кнопку Сохранить.

Т.е.:
  • Юзер нажимает на Добавить запись (Добавить платеж)
  • Юзер забивает все необходимые данные платежа, включая выбор Контрагента
  • Юзер нажимает на кнопку Сохранить.
  • Срабатывает вычисление на сохранение, в результате которого у него появляются счета ТОЛЬКО того контрагента, которого он выбрал (вычисление по сути добавляет записи в подтаблицу)
  • Он выбирает всё что нужно и сохраняет Платеж
  • Во время сохранения в выбранные счета записывается статус "Оплачен".


#8 Андрей Гуляев

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

  • Пользователи
  • PipPipPip
  • 94 сообщений
  • Пол:Мужчина

Отправлено 29 Апрель 2013 - 18:43

Наличие поля связи с родительской таблицей, причем это поле связи должно быть первым по порядку (не обязательно среди всех полей, главное - среди других полей связи, иначе таблица также будет подчиненной, но уже у другой таблицы (то, чье поле связи первей) - Вот этого можно как-то избежать? У меня проблемма не нужно подчинить 2 поля связи. И первым не всегда удобно его ставить.

У вас в демо конфигурации в шаблоне счета есть такой цикл {foreach from=$Zakazy item=subtable name=Zakazy}{if $subtable.Schet_nomer=ID} вот можно делать то же самое только не в подтаблица а допустим в какой то таблице по условию "связь" этой записью в шаблоне печати.
В общем то же самое только не subtable?

#9 CbCoder

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

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

Отправлено 30 Апрель 2013 - 08:37

Просмотр сообщенияАндрей Гуляев (29 Апрель 2013 - 18:43) писал:

У меня проблемма не нужно подчинить 2 поля связи. И первым не всегда удобно его ставить.

Что значит "подчинить 2 поля связи", не совсем понял? Вы имеете ввиду подчиненность одновременно двум главным таблицам?

Если речь об этом - это пока только в планах, хотя и в достаточно близких, т.к. назрело давно. Реализовано будет скорее всего во второй половине мая. Пока же можно подчинять подтаблицу только одной основной.

#10 Андрей Гуляев

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

  • Пользователи
  • PipPipPip
  • 94 сообщений
  • Пол:Мужчина

Отправлено 30 Апрель 2013 - 09:03

В шаблоне счета можно получать иным способом данные из не связанной таблици? Можно и не делать таблицу подчиненной, но нужно как-то сканирировать циклом и условием не связанную таклицу и получать из неё данные, это возможно?

#11 Андрей Гуляев

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

  • Пользователи
  • PipPipPip
  • 94 сообщений
  • Пол:Мужчина

Отправлено 30 Апрель 2013 - 09:04

Понял как обяснить, мне нужно получать позиции счета из 3х таблиц. Вот в чем идея, много подчиненность решит вопрос, но сейчас как быть?

#12 CbCoder

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

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

Отправлено 30 Апрель 2013 - 09:31

Просмотр сообщенияАндрей Гуляев (30 Апрель 2013 - 09:03) писал:

В шаблоне счета можно получать иным способом данные из не связанной таблици? Можно и не делать таблицу подчиненной, но нужно как-то сканирировать циклом и условием не связанную таклицу и получать из неё данные, это возможно?

Нет, любые данные в шаблоне можно получать только из текущей записи и связанных с нею записей. Иначе, пришлось бы добавлять в настройки шаблона отдельное окно для кода подготовки данных (т.к. иначе их извлечь невозможно). Собственно, данный вариант реализован в представлениях (отчетах) - там вы можете подготовить любые произвольные данные хоть из 10 разных таблиц и затем вывести их примерно тем же механизмом, что и в шаблонах.

#13 Андрей Гуляев

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

  • Пользователи
  • PipPipPip
  • 94 сообщений
  • Пол:Мужчина

Отправлено 30 Апрель 2013 - 09:43

Мда, это сложно буду ждать апдейт.





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

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