Здравствуйте Террасофт!
Помогите разрешить ситуацию с выбором контрагента для поставщика в счете. Сейчас список выбора поставщика включает в себя всех контрагентов имеющихся в системе, а как сделать что бы в этом списке отображались только контрагенты, у которых тип "Наша компания"?
Нравится
Нужно на событие 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 = 'Наша компания'
После этого измените функцию следующим образом:
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 типа уникальный идентификатор:
3) В этом же сервисе в блоке "Where" добавить фильтр сравнения AccountTypeID:
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 должен быть отключён по умолчанию и включаться только когда надо.