Фишка первая. Удаление города меняет страну.
- Логинимся в систему
- Переходим в раздел Контрагенты
- Нажимаем Добавить
- В карточке редактирования выбираем какой-нибудь город. Например,Симферополь, тогда заполняется страна (Украина) и территория (Восточная Европа).
- Нажимаем Отмену, т.е. выходим из карточки без сохранения.
- Открываем карточку другого контрагента из другой страны, например, Казахстана.
- Выделяем и удаляем содержимое поля Город.
- Наблюдаем, что страна и территория поменялась на Украину и Восточную Европу.
Фишка вторая. Пропавший город.
- Проводим предварительную подготовку. Нужен один контрагент с заполненными городом и страной и пустым регионом (Например Украина, Киев). И второй из другой страны с регионом (например Россия, Центральный ФО, Москва).
- Выходим из системы
- Заходим в систему
- Переходим в раздел Контрагенты.
- Открываем карточку первого (киевского) контрагента
- Открываем справочник поля Город (там, естественно, только Киев).
- Закрываем справочник и карточку отменой.
- Открываем карточку второго (московского) контрагента.
- Открываем справочник поля Город. А там ничего...
Результаты получены на MS SQL демо-версии CRM 3.3.2.170 и на нескольких более ранних.
Нравится
Да, действительно данная некорректная работа Системы воспроизводится. Данное сообщение передано в отдел разработки. О решении мы Вас известим.
Работы по данному вопросу в отделе Разработки запланированы на апрель.
Решение по первому вопросу:
1) Необходимо внести следующие изменения в функцию FilterDatasetParentFieldByField скрипта scr_DB:
function FilterDatasetParentFieldByField(Dataset, Field, ParentField,
FieldValue, ParentFieldValue) {
if (Field.LookupDataset.State != dstInactive) {
if (GetDatasetFieldValue(Field.LookupDataset,
ParentField.Name) == ParentFieldValue ) {
return
}
if ((GetDatasetFieldValue(Field.LookupDataset,
ParentField.Name) == null) || IsEmptyValue(FieldValue)) {
Dataset.DataFields.ItemsByName(ParentField.Name).Value = null;
return
}
ParentField.Value = GetDatasetFieldValue(Field.LookupDataset,
ParentField.Name)
}
}
2) Необходимо внести изменения в функцию UpdateTerritoryIDByCountryID скрипта scr_AddressUtils:
function UpdateTerritoryIDByCountryID(Dataset, TerritoryFieldName,
CountryFieldName) {
var CountryDataField = Dataset.DataFields(CountryFieldName);
var CountryID = CountryDataField.Value;
if (CountryID) {
var CountryDataset = CountryDataField.LookupDataset;
if (CountryDataset.IsActive &&
(CountryDataset.Values('ID') == CountryID)) {
var TerritoryID =
GetFieldValueFromDisabledField(CountryDataField.LookupDataset,
'TerritoryID');
} else {
var CountryDataset = GetSingleItemByCode('ds_Country',
'AddressUtils');
if (CountryDataset.IsActive) {
CountryDataset.Close();
}
ApplyDatasetFilter(CountryDataset, 'ID', CountryID, true);
CountryDataset.Open();
var TerritoryID = CountryDataset.Values('TerritoryID');
CountryDataset.Close();
}
Dataset.Values(TerritoryFieldName) = TerritoryID;
} else {
Dataset.Values(TerritoryFieldName) = null;
}
}
"Смоляков Станислав Игоревич" написал:1) Необходимо внести следующие изменения в функцию FilterDatasetParentFieldByField скрипта scr_DB:
"Смоляков Станислав Игоревич" написал:2) Необходимо внести изменения в функцию UpdateTerritoryIDByCountryID скрипта scr_AddressUtils:
С этим нет больших проблем. На одной конкретной конфигурации внести изменение не трудно, но вот делать это от раза к разу...
Существуют ли на данный момент бинарники содержащие указанные корректировки?
Для решения второй части вопроса необходимо изменить функцию edtCityOnPrepareSelectWindow скрипта scr_AccountEdit:
function edtCityOnPrepareSelectWindow(LookupDataControl) {
FilterLookupDataControlLookupDatasetByState(LookupDataControl,
edtState.DataField.Value);
if (IsEmptyValue(edtState.DataField.Value)) {
FilterLookupDataControlLookupDatasetByCountry(LookupDataControl,
edtCountry.DataField.Value);
} else {
FilterLookupDataControlLookupDatasetByCountry(LookupDataControl, null);
}
}
В ближайшее время выйдут бинарники версии 3.3.2.193. В неё будут включены данные изменения.
"Смоляков Станислав Игоревич" написал:В ближайшее время выйдут бинарники версии 3.3.2.193. В неё будут включены данные изменения.
Таки бинарники или сборка базы самой? :wink: поведение самих контролов подправите или все ж скрипты?
Александр, изменения будут внесены в следующие собранные релизы, т.к. внести изменения запросов в исполняемые файлы невозможно. Для обновления же более ранних сборок будут созданы сервисы, которые нужно будет загрузить в текущую конфигурацию.
Спасибо за замечание.