Скрипты
Разработка

как связать отрасль и вид деятельности?

Добрый день!
подскажите пожалуйста, как можно сделать группы отраслей и вид деятельности взаимосвязанными, чтобы работало как связка страна-территория?

Нравится

6 комментариев

Здравствуйте,

Для этого выполните такую последовательность действий:

  1. Добавить новое поле в сервис таблицы tbl_Field с типом идентификатор, которое будет ссылаться на таблицу tbl_Activity
  2. Добавьте два поля на выборку в сервис sq_Field; 1 поле - поле которое добавили ранее и 2 поле - это выборка поля Name из таблицы tbl_Activit по новому добавленному полю
  3. Добавить лукапное поле в сервис датасета 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. 1. Открываем окно редактирования wnd_AccountEdit
  2. 2. Переходим в событие dlDataOnDatasetDataChange, не визуального компонента dlData
  3. 3. В событии dlDataOnDatasetDataChange добавляем строчку кода var FieldValue = DataField.Value;. Должно получится, что-то виде такого:
    [javascript]
    var FieldName = DataField.Name;
    var Dataset = DataField.ParentDataFields.ParentDataset;
    var FieldValue = DataField.Value;
    [/javascript]
  4. 4. В конец функции дописываем код:
    [javascript]
    if (FieldName == 'FieldID') {
    if (IsEmptyValue(FieldValue)) {
    Dataset.DataFields('ActivityID').Value = null;
    } else {
    Dataset.DataFields('ActivityID').Value =
    GetFieldValueFromLookupDatasetByLookupField(DataField, 'ActivityID');
    }
    }
    [/javascript]
  5. 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]

Содержимое функции может немного отличаться, это зависит от продукта.

спасибо большое))

Показать все комментарии