Добрый день!
подскажите пожалуйста, как можно сделать группы отраслей и вид деятельности взаимосвязанными, чтобы работало как связка страна-территория?
Нравится
Здравствуйте,
Для этого выполните такую последовательность действий:
- Добавить новое поле в сервис таблицы 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 скрипт:
UPDATE tbl_Dictionary SET EditWindowCode = 'wnd_FieldEdit' WHERE DatasetCode = 'ds_Field'
где wnd_FieldEdit - Ваше окно редактирования справочника
заработало)))), а как сделать так, чтобы при выборе вида деятельности, отрасли сами добавлялись? у меня отрасль родительская категория, а вид деятельности дочерняя.
Здравствуйте,
приведу пример на окне редактирования [Контрагенты].
- 1. Открываем окно редактирования wnd_AccountEdit
- 2. Переходим в событие dlDataOnDatasetDataChange, не визуального компонента dlData
- 3. В событии dlDataOnDatasetDataChange добавляем строчку кода var FieldValue = DataField.Value;. Должно получится, что-то виде такого:
var FieldName = DataField.Name; var Dataset = DataField.ParentDataFields.ParentDataset; var FieldValue = DataField.Value;
- 4. В конец функции дописываем код:
if (FieldName == 'FieldID') { if (IsEmptyValue(FieldValue)) { Dataset.DataFields('ActivityID').Value = null; } else { Dataset.DataFields('ActivityID').Value = GetFieldValueFromLookupDatasetByLookupField(DataField, 'ActivityID'); } }
- 5. Сохраняем сервис
В результате у Вас должна получится функция:
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'); } } }
Содержимое функции может немного отличаться, это зависит от продукта.