ForeignKeyManagerExtension
===================================

.. currentmodule:: axioma.core.dp

.. class:: ForeignKeyManagerExtension

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

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

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

	Унаследован от: :class:`~axioma.core.plugin.Extension`

		.. py:method:: ForeignKeyManagerExtension()

			Конструктор

		.. py:method:: registerForeignKeyByData(jdTable, jdDict, keyFields)

			Регистрация внешнего ключа в расширении

			:param jdTable: Описание основной таблицы
			:type jdTable: :class:`JsonDefinition`
			:param jdDict: Описание справочника
			:type jdDict: :class:`JsonDefinition`
			:param keyFields: Атрибуты, участвующие в формировании внешнего ключа
			:type keyFields: :class:`~axioma.core.dp.ForeignKey`


		.. py:method:: unregisterForeignKeyByData(jdTable)

			Отмена регистрация внешних ключей таблицы в расширении

			:param jdTable: Описание основной таблицы
			:type jdTable: :class:`JsonDefinition`
			:return: True, если успешно. В противном случае False
			:rtype: :class:`bool`


ForeignKey
=================

.. currentmodule:: axioma.core.dp

.. class:: ForeignKey

	Данные по внешнему ключу

	Унаследован от: :class:`~PyQt5.QtCore.QObject`

			.. class:: FromTo

			Структура с данными

			.. py:attribute:: attributeKey

				Атрибут с кодом основной таблицы

			:type: :class:`str` 

			.. py:attribute:: attributeKeyForeign

				Атрибут с кодом таблицы-справочника

			:type: :class:`str` 

			.. py:attribute:: attributeNameForeign

				Атрибут с описанием в таблице-справочнике

			:type: :class:`str` 



Пример использования:

.. literalinclude:: ../../../../../../examples/ForeignKey.py
	:language: python
	:linenos:
