Здравствуйте Террасофт!

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

Нравится

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

Нужно на событие OnPrepareSelectWindow лукапа выбора поставщика повесить обработчик вроде:

function edtSupplierOnPrepareSelectWindow(LookupDataControl) {
	var LookupDataset = LookupDataControl.DataField.LookupDataset;	
	var TypeID = atOur;//константа с GUID, описать в scr_Consts
	ApplyDatasetFilter(LookupDataset, 'TypeID', TypeID, true);
}

Содержание константы - ID записи в tbl_AccountType с текстом "Наша компания".

Опробовал предложенный метод, при нажатии на поиск в поле поставщика, появляется ошибка - что-то вроде: "не нравится atOur". Прошу рабочее решение?
В начале темы выразился не корректно:
На данный момент в поле поставщика по умолчанию стоит контрагент "Ваша компания", мне требуется сделать так, что бы по умолчанию было пусто и что бы отображал в поиске только контрагентов с типом "Наша компания".

"Березин Игорь Викторович" написал:"не нравится atOur". Прошу рабочее решение?

Нужно посмотреть значение поля ID в записи в таблице tbl_AccountType с текстом "Наша компания". Это можно сделать в СУБД или нажатием кнопки "предпросмотр" и затем "выполнить SQL" на sq_AccountType.

Потом в скрипт scr_Consts внести строку вроде:

//Наша компания
var atOur= '{12B90989-C863-42D4-A90B-DDD6024A7FED}';

Тогда заработает. Только значение константы может быть другим.

А ещё такая константа может быть изначально, попробуйте вместо atOur написать так:

 var TypeID = OurCompanyAccountType;

И ничего смотреть в БД не понадобится.

"Березин Игорь Викторович" написал:мне требуется сделать так, что бы по умолчанию было пусто

См. аналогичное решение здесь.

Не работает!
Версия Террасофта 3.3.2.107 - ни какой реакции.
Версия Террасофта 3.3.2.262 - ошибка, появляется дебагер.
В итоге такой скрипт получился:

function edtSupplierOnPrepareSelectWindow(LookupDataControl) {
	//TODO
	var LookupDataset = LookupDataControl.DataField.LookupDataset;  
    var TypeID = '{12B90989-C863-42D4-A90B-DDD6024A7FED}';//константа с GUID, описать в scr_Consts
    ApplyDatasetFilter(LookupDataset, 'TypeID', TypeID, true);
}

Александр вы случаем не представитель компании Террасофт?
Когда вы отвечаете, мне почему то 7 сообщений подряд на почту приходит.
Не знаю куда сообщить о данном баге?

А так:

function edtSupplierOnPrepareSelectWindow(LookupDataControl) {
         var LookupDataset = LookupDataControl.DataField.LookupDataset;  
         var TypeID = OurCompanyAccountType;
         ApplyDatasetFilter(LookupDataset, 'AccountTypeID', TypeID, true);
}

Сообщения приходят при каждой правке комментария.

Ситуация со скриптом не изменилась.
OurCompanyAccountType - присутствует в scr_Consts.

По сообщениям понятно, спасибо.

"Березин Игорь Викторович" написал:Ситуация со скриптом не изменилась.

А какое сообщение об ошибке возникает?

Здравствуйте, Игорь!

Откройте MS SQL Management Studio и выполните следующий запрос:

select * from tbl_AccountType where Name = 'Наша компания'

1

После этого измените функцию следующим образом:

function edtSupplierOnPrepareSelectWindow(LookupDataControl) {
         var LookupDataset = LookupDataControl.DataField.LookupDataset;  
         var TypeID = '{12B90989-C863-42D4-A90B-DDD6024A7FED}';
         ApplyDatasetFilter(LookupDataset, 'AccountTypeID', TypeID, true);
}

В случае возникновения ошибки, пожалуйста, укажите здесь её текст.

"Березин Игорь Викторович" написал:По сообщениям понятно, спасибо.

Как я вас понимаю...:smile:

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

Дмитрий выполнил запрос к бзае, код у меня такой же как и у вас с Александром. Сделал вставку вашего кода, проверил и ни каких изменений не произошло.
Версия Террасофта 3.3.2.107 - ни какой реакции.
Версия Террасофта 3.3.2.262 - ошибка, появляется дебагер.

Здравствуйте, Игорь!

Для того чтобы в списке контрагентов, при выборе поставщика в счете, отображались только контрагенты с типом "Наша компания" необходимо:

1) Запустить Terrasoft Administrator;
2) Открыть сервис sq_Account и добавить входящий параметр AccountTypeID типа уникальный идентификатор:
1
3) В этом же сервисе в блоке "Where" добавить фильтр сравнения AccountTypeID:
2
4) На событие OnPrepareSelectWindow лукапа выбора поставщика повесить обработчик:

function edtSupplierOnPrepareSelectWindow(LookupDataControl) {
         var LookupDataset = LookupDataControl.DataField.LookupDataset;  
         var AccountTypeID = '{12B90989-C863-42D4-A90B-DDD6024A7FED}';
         ApplyDatasetFilter(LookupDataset, 'AccountTypeID', AccountTypeID, true);
}

5) Сохранить изменения и перезапустить клиентское приложение Terrasoft .

"Олейник Дмитрий" написал:Открыть сервис sq_Account и добавить входящий параметр AccountTypeID типа уникальный идентификатор:

Неужели этот фильтр не существует "в коробке" изначально? Удивительно.

Ура заработало!

Всем спасибо за помощь.

Проявилась проблема, теперь во всех карточках, где требуется выбрать контрагента, пусто и поиск не срабатывает (все время пусто). Как справиться с этой ситуацией?

Видимо, новосозданный фильтр AccountTypeID стал включенным. Надо снять галку у него.

Открыл ds_Account нашел "Поле фильтрации" и убрал галку. Ни каких изменений не произошло.
Александр возможно вы имели ввиду другую галку, в другом месте?

В sq_Account фильтр сравнения AccountTypeID должен быть отключён по умолчанию и включаться только когда надо.

Заработало!
Спасибо Александр.

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