Перейти к

Подскажите, пожалуйста, как добавить элемент в список контекстного меню "Перейти к"?

Например: раздел "Договоры" - Деталь "Счета" - в меню "Перейти к" есть элемент "Счёт".
А мне надо аналогично сделать для собственноручно добавленной детали "Накладные"

Когда-то делал такое, но сейчас не могу вспомнить как :(

Спасибо.

Нравится

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

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

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

В это действие, попадут все элементы, к которым есть возможность перейти от Вашей записи реестра: те, с которыми у нее есть связь, а также, обязательно, чтобы у этих элементов был свой Workspace, так как переход будет выполняться функцией GotoWorkspace(WorkspaceWindowUSI, IDDataFieldValue).
Формирование элементов этого меню должно произойти автоматически при вызове функции mGridOnPrepare скрипта scr_BaseGridArea (в этой функции вызывается GridPopupMenuPrepare, а в ней уже и далее происходит формирование действия).

Инна Безверхняя,
II линия службы поддержки Terrasoft.

"Bezverkhnia Inna" написал:с которыми у нее есть связь, а также, обязательно, чтобы у этих элементов был свой Workspace,

Что подразумевается под связью? Foreign Key?
Workspace у накладных есть.

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

Разобрался.
Для грида накладных надо задать параметры AddSelfReference со значением true.

Я создал раздел "Акты техосмотра" и свяал с ним документы на уровне таблицы, прописал для него код if (!IsEmptyValue(Window.Attributes('ParentItemFieldName'))) {
SetAttribute(Window,'AddSelfReference',true);
SetAttribute(Window,'SelfReferenceCaption', "Акты техосмотра");
}
однако ссылка в меню "перейти" раздела документов так и не появилась. Где обеспечивается значение атрибута Window.Attributes('ParentItemFieldName'), оно ведь не должно быть пустым.

Скорее всего, либо у Вас в карточке "документа" отсутствует поле типа справочник "Акты техосмотра", либо не существует Workspace для нового раздела. Также необходимо проверить наличие Вашего dataset и workspacr нового раздела в теле функции FillReferencesDictionary скрипта scr_WindowUtils.

Спасибо! Получилось.

Добрый день.
В гриде в воркспейсе задач кнопки "доабвить", изменить" неавтивны. Условие активности зависит от текущего пользователя и прописано в функциях wnd_BriefGridAreaOnPrepare(Window) и wnd_BriefWorkspaceOnShow(Window). Но при переходе из грида задач на детали воркспейса проектов (напрмиер) в воркспейс задач, кнопки становятся активны.

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

Елена, здравствуйте.

При переходе к разделу из контекстного меню срабатывает функция GotoWorkspace. В скрипте scr_WindowUtils есть аналогичная функция, но с Notify'ем. Предлагаю добавить Notify также в стандартную функцию, и затем на событии OnNotify в нужном Вам разделе повторить логику деактивации кнопок.

Помогло. Спасибо

Здравствуйте! Сделал как сказано здесь: http://www.community.terrasoft.ru/forum/topic/7319#comment-31632
Действительно, добавился новый пунктик в "Перейти к" (переход к заявкам), но почему-то после этого все счета отображаются как удалённые, (хотя, пошарив в MS SQL, я записи увидел, и на другой машине, где не был перезагружен клиент после изменения конфигурации, доступ к записям счетов сохранился). В чём проблема?

Здравствуйте Алексей! При переходе устанавливается фильтр ID. Не мог быть включен другой фильтр кроме этого?

"Тюльпа Владимир" написал:

Здравствуйте Алексей! При переходе устанавливается фильтр ID. Не мог быть включен другой фильтр кроме этого?


Благодарю, действительно, ошибка была в лишнем включенном фильтре.

Здравствуйте!
Ещё одна ситуация при подобном переходе:
Раздел "Договоры", деталь "Банковские счета" - если счетов несколько то переход осуществляется к первому в списке, а не к тому, на котором стоит курсор. Если сменить сортировку - снова будет переход к первой записи. Если переходить из первой записи - всё верно.)
Профайлер ничего такого "плохого" не показывает.
Где можно поискать причину?

Здравствуйте, Алексей!
Попробуйте поставить отладчик в функции "GotoWorkspace" и посмотреть, какой идентификатор записи передается.

Алексей, процесс перехода начинается в функции GotoReference() из scr_BaseGridArea и там определяются выделенные в реестре записи функцией GetGridSelectedIDsArray(). Поставьте точку останова в этой функции и "пройдитесь" по ней отладчиком.
Проще всего ответ получить изучая состояния объектов по ходу отладки.

Также понадобилось добавить в Перейти к в пункт меню связки Продукты - Движение(деталь) в Движение(деталь).
Хочу в деталь Движение добавить в Перейти к пункт "Накладная" (Складские документы).

Добавил в wnd_OfferingMovementGridAreaScript (Накладная)

function Initialize(Window) {
        if (!IsEmptyValue(Window.Attributes('ParentItemFieldName'))) {
                SetAttribute(Window,'AddSelfReference',true);
                SetAttribute(Window,'SelfReferenceCaption',"Накладная");
        }

Проверил в scr_WindowUtils присутствие

RefDictionary.Add('ds_OfferingMovement', 'wnd_OfferingMovementWorkspace');

Но, пункта меню "Накладная" в детали Движение не появилось.
Что-то я упустил?

Alex, чтобы работал переход из детали в раздел, к выделенной записи реестра, необходимо чтобы у датасета детали были заполнены:
- Ключевое поле
- Первичное поле для отображения.
Более того, по ключевому и первичному для отображения полям происходит поиск записи для дальнейшего перехода к ней.
В случае с деталью [Движение], ключевое и первичное поле датсета ds_MovementInOfferingMovement не являются ключевым и первичным полем складского документа, поэтому реализация не применима.
Подобная реализация применима для окон scr_AccountsGridArea, wnd_CampaignsGridAreaScript, wnd_CashflowGridAreaScript и т.п

P.S: для отображения детали [Движение] используется окно wnd_MovementInOfferingMovementGridArea.

Здравствуйте.
Помогите решить один вопрос:
Существует отчет выводимый, с помощью фильтра, в таблицу Excel. Возможно ли добавить в контекстное меню, вызываемое правой кнопкой мыши, этот отчет отдельным пунктом.
Например:
1. заходим в список физ.лиц
2. на нужном клиенте нажимаем ПКМ
3. в контекстном меню выбираем пункт "Действия -> Отчеты" или "Перейти к -> отчеты"
4. выбираем нужный отчет
5. формируем таблицу Excel

Спасибо.

Михаил, обсуждение Вашего вопроса перенесено в эту тему

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