Связывание таблиц как Счета из стандартного конфига
#1
Отправлено 11 Март 2013 - 09:06
Хотел бы реализовать функционал схожий с таблицой "Счета" и "Позиции счета" из стандартной конфигурации.
Хотел при создании нового входящего платежа сделать выборку неоплаченных счетов по текущему контрагенту, чтобы автоматичеки помечать эти счета оплаченными.
Но пока не получилось даже вывести таблицу (типа Позиции счета) снизу при добавлении нового платежа, хотя она помечена как подчиненная и есть поля связи.
Поясните, пожалуйста, механизм создания таких связей между таблицами и возможно ли будет "на лету" создавать список неоплаченных счетов для только что выбранного контрагента?
#2
Отправлено 11 Март 2013 - 13:11
Цитата
При добавлении новой записи подтаблицы не выводятся, для этого необходимо вначале сохранить запись (нажать на кнопку Сохранить), либо включить в настройках таблицы автосохранение при добавлении. Вы это имеете ввиду? Или ваша подтаблица не появляется даже после нажатия на "Сохранить"?
#3
Отправлено 13 Март 2013 - 15:20
CbCoder (11 Март 2013 - 13:11) писал:
Может немного поясните механизм подобной связки?
Сообщение отредактировал ZeroCooL: 13 Март 2013 - 15:21
#4
Отправлено 13 Март 2013 - 15:39
Цитата
Цитата
Цитата
#5
Отправлено 13 Март 2013 - 16:19
CbCoder (13 Март 2013 - 15:39) писал:
Цитата
Давайте начнем по порядку и рассмотрим таблицы из демо конфига.
Есть таблицы: "Платежи" и "Оплачиваемые счета" (по аналогии "Счета" и "Позиции счета"). Ну еще есть таблица "Контрагенты", конечно.
Добавляю Платеж (контрагента выбираем из списка - все ОК, связь работает) и хочу указать по каким неоплаченным счетам поступает оплата.
Для этого создал подчиненную таблицу "Оплачиваемые счета" и поля связи "Номер платежа" (связь с таблицей платежей) и Номер оплачиваемого счета (связь с таблицей счетов) ну и всякие доп поля типа комментов.
+ для удобства отключаем видимость у подчиненной таблицы.
Этого достаточно для дальнейшей взаимосвязи?
Цитата
У меня есть вычисления которые срабатывают по определенным событиям и в фоне что-то вычисляют и укладывают в разные таблицы.
А тут к какой кнопке привязаться? В идеале, такая схема:
1. Юзер забивает новое п/п
2. Выбирает из списка Контрагента
3. Тут же внизу в распадающемся списке (в связанной таблице) у него появляются счета ТОЛЬКО того контрагента, которого он выбрал
4. Он выбирает всё что нужно и сохраняет Платеж
5. Во время сохранения в выбранные счета записывается статус "Оплачен".
К чему привязаться (к какому изменению/сохранению), чтобы выполнился пункт 3?
Сообщение отредактировал ZeroCooL: 13 Март 2013 - 16:21
#6
Отправлено 14 Март 2013 - 11:44
Цитата
Для появления таблицы в списке подчиненных необходимы две вещи:
- Установить галку "подчиненная"
- Наличие поля связи с родительской таблицей, причем это поле связи должно быть первым по порядку (не обязательно среди всех полей, главное - среди других полей связи, иначе таблица также будет подчиненной, но уже у другой таблицы (то, чье поле связи первей)
Насчет отключения видимости вы правы - это всего лишь вопрос удобства. Истинно подчинённую таблицу обычно нет смысла отображать отдельно от основной (как позиции счета к примеру), но сейчас функционал стал шире - и кому-то те же счета удобно видеть как отдельно, так и в подчиненной вкладке у контрагентов.
Да, и еще один момент, который может влиять на отображение подтаблицы. Если у данного пользователя нет прав доступа ни на одно поле данной таблицы, то она становится полностью невидимой - т.е. не отображается в том числе и на подчиненной вкладке.
#7
Отправлено 14 Март 2013 - 12:02
Цитата
Я же написал - к кнопке "Сохранить". Т.е вычисление на событие "сохранение записи". Вычисление в основной записи разумеется.
Подробнее ниже:
Цитата
1. Юзер забивает новое п/п
2. Выбирает из списка Контрагента
3. Тут же внизу в распадающемся списке (в связанной таблице) у него появляются счета ТОЛЬКО того контрагента, которого он выбрал
4. Он выбирает всё что нужно и сохраняет Платеж
5. Во время сохранения в выбранные счета записывается статус "Оплачен".
Да, примерно такая схема, за исключением того что в пункте 3 не "тут же", а после нажатия на кнопку Сохранить.
Т.е.:
- Юзер нажимает на Добавить запись (Добавить платеж)
- Юзер забивает все необходимые данные платежа, включая выбор Контрагента
- Юзер нажимает на кнопку Сохранить.
- Срабатывает вычисление на сохранение, в результате которого у него появляются счета ТОЛЬКО того контрагента, которого он выбрал (вычисление по сути добавляет записи в подтаблицу)
- Он выбирает всё что нужно и сохраняет Платеж
- Во время сохранения в выбранные счета записывается статус "Оплачен".
#8
Отправлено 29 Апрель 2013 - 18:43
У вас в демо конфигурации в шаблоне счета есть такой цикл {foreach from=$Zakazy item=subtable name=Zakazy}{if $subtable.Schet_nomer=ID} вот можно делать то же самое только не в подтаблица а допустим в какой то таблице по условию "связь" этой записью в шаблоне печати.
В общем то же самое только не subtable?
#9
Отправлено 30 Апрель 2013 - 08:37
Андрей Гуляев (29 Апрель 2013 - 18:43) писал:
Что значит "подчинить 2 поля связи", не совсем понял? Вы имеете ввиду подчиненность одновременно двум главным таблицам?
Если речь об этом - это пока только в планах, хотя и в достаточно близких, т.к. назрело давно. Реализовано будет скорее всего во второй половине мая. Пока же можно подчинять подтаблицу только одной основной.
#10
Отправлено 30 Апрель 2013 - 09:03
#11
Отправлено 30 Апрель 2013 - 09:04
#12
Отправлено 30 Апрель 2013 - 09:31
Андрей Гуляев (30 Апрель 2013 - 09:03) писал:
Нет, любые данные в шаблоне можно получать только из текущей записи и связанных с нею записей. Иначе, пришлось бы добавлять в настройки шаблона отдельное окно для кода подготовки данных (т.к. иначе их извлечь невозможно). Собственно, данный вариант реализован в представлениях (отчетах) - там вы можете подготовить любые произвольные данные хоть из 10 разных таблиц и затем вывести их примерно тем же механизмом, что и в шаблонах.
#13
Отправлено 30 Апрель 2013 - 09:43
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных