Добрый день!
подскажите пожалуйста, как можно сделать группы отраслей и вид деятельности взаимосвязанными, чтобы работало как связка страна-территория?
Нравится
Здравствуйте,
Для этого выполните такую последовательность действий:
- Добавить новое поле в сервис таблицы tbl_Field с типом идентификатор, которое будет ссылаться на таблицу tbl_Activity
- Добавьте два поля на выборку в сервис sq_Field; 1 поле - поле которое добавили ранее и 2 поле - это выборка поля Name из таблицы tbl_Activit по новому добавленному полю
- Добавить лукапное поле в сервис датасета ds_Field
Чтобы не ошибиться, делайте по аналогии с таблицей tbl_Country.
Сделал все изменения в файлах tpl, sq и ds по аналогии с country и terrytory, но справочники не объединяются
Немного не понятно, что имеете ввиду под "справочники не объединяются".
Добавьте свой справочник редактирования наследуясь от базового окна редактирования wnd_BaseDBEdit. Как пример, можете взять окно редактирования wnd_CityEdit.
После этого, в разделе [Справочники] необходимо изменить свойство справочника [Отрасли]. Установить значение полю [Окно реестре] = 'wnd_FieldEdit'.
Если изменение свойств будет заблокировано, в токам случае, выполните sql скрипт:
[sql]
UPDATE tbl_Dictionary SET EditWindowCode = 'wnd_FieldEdit' WHERE DatasetCode = 'ds_Field'
[/sql]
где wnd_FieldEdit - Ваше окно редактирования справочника
заработало)))), а как сделать так, чтобы при выборе вида деятельности, отрасли сами добавлялись? у меня отрасль родительская категория, а вид деятельности дочерняя.
Здравствуйте,
приведу пример на окне редактирования [Контрагенты].
- 1. Открываем окно редактирования wnd_AccountEdit
- 2. Переходим в событие dlDataOnDatasetDataChange, не визуального компонента dlData
- 3. В событии dlDataOnDatasetDataChange добавляем строчку кода var FieldValue = DataField.Value;. Должно получится, что-то виде такого:
[javascript]
var FieldName = DataField.Name;
var Dataset = DataField.ParentDataFields.ParentDataset;
var FieldValue = DataField.Value;
[/javascript] - 4. В конец функции дописываем код:
[javascript]
if (FieldName == 'FieldID') {
if (IsEmptyValue(FieldValue)) {
Dataset.DataFields('ActivityID').Value = null;
} else {
Dataset.DataFields('ActivityID').Value =
GetFieldValueFromLookupDatasetByLookupField(DataField, 'ActivityID');
}
}
[/javascript] - 5. Сохраняем сервис
В результате у Вас должна получится функция:
[javascript]
function dlDataOnDatasetDataChange(DataField) {
var FieldName = DataField.Name;
var Dataset = DataField.ParentDataFields.ParentDataset;
var FieldValue = DataField.Value;
if (FieldName.indexOf('Communication') == 0) {
var Index = FieldName.substr(13, 1);
var CommTypeDataControl =
Self.ComponentsByName('edtCommunication' + Index + 'Type');
var CommDataControl =
Self.ComponentsByName('edtCommunication' + Index);
RefreshCommunicationActionSmartTag(CommTypeDataControl, CommDataControl,
(FieldName.indexOf('Type') > -1));
}
if (FieldName == 'FieldID') {
if (IsEmptyValue(FieldValue)) {
Dataset.DataFields('ActivityID').Value = null;
} else {
Dataset.DataFields('ActivityID').Value =
GetFieldValueFromLookupDatasetByLookupField(DataField, 'ActivityID');
}
}
}
[/javascript]
Содержимое функции может немного отличаться, это зависит от продукта.