Удаленый доступ через WEB-сервис

Добрый день. Ситуация:
1. В карточке "Проект", справочник поля Status сделали с возможностью назначать права доступа на каждую запись;
2. Часть пользователей системы - доменные, часть - удаленый доступ через WEB-сервис;
Проблема: при создании удалеными пользователями новой карточки "Проект" поле Status становится только для чтения (при том, что все установленные права как на карточку и ее поля так и на сам справочник Status проверены не единожды), в то время, как у доменных пользователей с теми же правами все работает нормально. Так же хочу добавить, что при редактировании уже созданных карточек проектов все работает нормально как и у доменных так и WEB-сервисных пользователей.
Собственно вопрос: в чем может быть проблема и возможна ли эта проблема из-за того, что удаленый доступ сделан через WEB-сервис?

Нравится

21 комментарий

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

Работа удаленно через web-сервисы ничем не отличается от обычной (локальной) работы.

В данном случае, видимо, имеет значение отличие в пользователях. Попробуйте зайти под пользователем, для которого наблюдается данная ситуация, используя обычный доступ -- эффект должен быть такой же.

Нужно смотреть логику обработки поля Status в конфигурации.

Олег Лабьяк,
разработчик,
3-я линия Службы поддержки Terrasoft.

Добрый день. С озвученной выше проблемой разобрался. Достаточно было снять галочку "Администрируется по полям" в таблице Проект. Заработало. Но, сделав по образу и подобию администриуемый справочник поля Статус для карточки Инцидент, получаем у пользователей ошибку "SELECT permission denied on column 'IsFinish' of object 'vw_IncidentStatus', database 'TCCRM', schema 'dbo'". Все, что можно проверили, но причину не смогли установить.
И еще. При открытии новой карточки Инцидент, выскакивает ошибка "Ошибка выполнения метода 'SelfOnDatasetAfterAppend'", хотя до определенного момента работало нормально. Скрипт прилагаю

У Вас таблица tbl_IncidentStatus администрируется по полям? Если да, проверьте, пожалуйста, доступ на поле IsFinish для каждого пользователя или группы. Проверьте также, входит ли таблица tbl_IncidentStatus в группу таблиц "Справочники".

Может помочь пересохранение этой таблицы (например, добавьте и удалите пробел в название; после этого таблицу можно будет пересохранить).

Если проблема не устранится, проверьте доступ на таблицу tbl_IncidentStatus, представление vw_IncidentStatus и их поля непосредственно в базе данных (посредством SQL Server Enterprise Manager). Возможно, запрет стоит на уровне СУБД.

По поводу второй проблемы сказать ничего не могу, она не воспроизвелась. Скорее всего, она связана с первой проблемой: запретом на SELECT из представления vw_IncidentStatus в момент установки значения по умолчанию для StatusID:

Dataset.Values('StatusID') = GetStartStatusIDByDataset(Dataset);

и устранится, когда будет устранена первая проблема.

Олег Лабьяк,
разработчик,
3-я линия Службы поддержки Terrasoft.

IncidentStatus сначало администрировался по полям, теперь нет. Пересохранение не помогло. Сервер перерыли - все вроде впорядке. Даже профайлер с кэшем почистили от безысходности.

Если IncidentStatus раньше администрировался по полям, возможно, остались какие-либо запреты на поля таблицы. Попробуйте опять установить в таблице признак администрирования. После этого, когда таблица появится в списке администрируемых, проверьте для каждого пользователя и группы доступ на поля этой таблицы. Если будут попадаться запреты на поля, установите для всех полей полный доступ. Затем в администраторе снимите признак администрирования.

Олег Лабьяк,
разработчик,
3-я линия Службы поддержки Terrasoft.

Первая часть проблемы решилась. Действительно остались запреты. Но, вторая проблема с SelfOnDatasetAfterAppend к сожалению осталась. Она, кстати, если я правильно помню, появилась после того, как в wnd_IncidentEdit, поле StatusID удалили и поставили в другое место (потом конечно не понравилось и вернули обратно).

Можете выложить сервисы, касающиеся карточки редактирования инцидентов (wnd_IncidentEdit, wnd_IncidentEditScript)? А также, если добавлялись поля, можно и tbl_Incident, sq_Incident, ds_Incident. Кстати, как выглядит полное сообщение об ошибке?

Олег Лабьяк,
разработчик,
3-я линия Службы поддержки Terrasoft.

Полное сообщение "[09.10.22 10.33.59.546] (E) Ошибка выполнения метода 'SelfOnDatasetAfterAppend'. Неопознанная ошибка «Call Stack»". Сервисы прилагаю все, т.к. поля и добавлялись и менялись. Наверняка какая-то глупая ошибка, а найти не можем, глаз замылился.

После загрузки Ваших сервисов проблема с SelfOnDatasetAfterAppend по прежнему не воспроизводится. Может, попробуйте почистить кеш? Если включить отладчик, он фиксируется на какой-либо строчке скрипта во время возникновения ошибки?

Олег Лабьяк,
разработчик,
3-я линия Службы поддержки Terrasoft.

Еще раз почистил кэш - не помогло, вываливается в scr_Common, функция function CheckAssigned, строка throw ErrorMgs

Скорее всего, проблема в одном из фильтров. Нужно посмотреть по Call Stack'у, с каким именно (есть подозрение, что "валится" на фильтре IsStart запроса sq_IncidentStatus). Проверьте, пожалуйста.

Олег Лабьяк,
разработчик,
3-я линия Службы поддержки Terrasoft.

глупый вопрос, а как по Call Stack посмотреть?

В Вашем отладчике должно быть окно списка вызовов (Call Stack). Оно находится в большинстве случаев в меню Debug. Вы можете выбрать из списка функцию, которая Вас интересует, и по двойному клику на ней должен открыться код, на котором Вы остановились в данный момент. Нужно посмотреть, какие функции выполнялись до свала и значения их параметров, чтобы точнее идентифицировать проблему.

Олег Лабьяк,
разработчик,
3-я линия Службы поддержки Terrasoft.

Заработало. Действительно, все дело было в фильтре IsStart. Спасибо большое.

Добрый день! Возникла следующая проблема: при попытке пользователем открыть карточку проекта (неважно новую или для внесения изменений) карточка на мониторе не отображается, хотя в строке быстрого запуска отмечается как открытая. Это наблюдается только у двоих пользователей. В чем может быть дело?
И еще один вопрос. Если пользователю сделать права администратора, то пропадает дерево динамических фильтров.

Добрый день.

Подозреваю, что дело в разрешении монитора. Если карточка редактирования проекта несколько больше стандартной, она может просто не помещаться на экран. Такие проблемы возникают в основном на ноутбуках, когда нет возможности установить разрешение побольше. Возможный вариант решения - немного уменьшить размер карточки редактирования в Terrasoft CRM Администратор (уменьшить размер полей, либо их расположение в карточке), чтобы она могла поместиться на экран.

Что касается фильтров, необходима дополнительная информация. Такое происходит для любого пользователя, если его установить администратором, или же для конкретных? Что Вы подразумеваете под "деревом динамических фильтров"? Это ветка в дереве групп раздела?

Олег Лабьяк,
разработчик,
3-я линия Службы поддержки Terrasoft.

"Chaus" написал:карточка на мониторе не отображается, хотя в строке быстрого запуска отмечается как открытая.

а 'alt+tab' переключиться на нее позволяет?

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

"Синюшные" это те, которые создал не тот пользователь, который зашел в систему, то есть "чужие группы". Если на них дать права соответствующим пользователям (группам), то они останутся "синими", но будут уже видны ему по-умолчанию при входе в раздел. Поправьте если не прав:smile:

да вроде права стоят какие надо. Еще раз проверю :exclaim: А на счет разрешения монитора - в самую точку. Сработало. Спасибо!

Да, всё верно. Но только для обычных пользователей. Что касается администратора, то он видит по умолчанию только группы, создателем которых он является. Так реализовано для того, чтобы не загромождать менеджер групп ненужными группами. Поскольку для администратора доступна любая группа остальных пользователей, он при необходимости может отобразить все группы и найти нужную.

Олег Лабьяк,
разработчик,
3-я линия Службы поддержки Terrasoft.

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