В карточках секции событие "init" происходит при открытии секции, еще до того к в ней в Combined режиме будет открыта какая либо карточка. А существует ли какое-то системное событие для мекции которое срабатывает как раз при открытии карточки в Combined режиме, т.е. такое состояние в котором уже будет объявлен ActiveRow ?
Ну юзкейс у такого положения вещей есть:
Уже "притчей во-языцах" становится извечная проблема открытия карточек в Combined и Separated режимах, и добавлением какого либо функционала в верхнее горизонтальное меню.
Приходится описывать свою бизнес-логику как для секции так и для карточки, причем логика в сути идентичная, кроме способа получения данных самой карточки (для секции это отдельные трудности, так как прямого доступа к модели карточки не имеется, разве что через "GridData"), так же секцию выделяет то что там необходимо реагировать на отдельные события инициализации карточки.
Вообщем все это порождает офигенный оверхед по коду.
Решение было найдено через Миксин-модуль и события.
Таким образом специально сконфигурированный миксин можно подключать и к карточке и к схеме - логика описана в едином месте, в едином виде, в сути все происходит в карточке, а секция просто соответствующим образом реагирует и подписывается на ряд событий.
Так вот сейчас приходится разделять Миксин-модуль | Модуль экспортирующий публикации | Модуль экспортирующий подписки.
Ну и проскочила мысль, что сами messages можно в рамках одной схемы объявить (одного миксина) а уже подписываться/публиковать по ситуации в схемах куда миксин подключен.
"Севостьянов Илья Сергеевич" написал:Вообщем все это порождает офигенный оверхед по коду.
Именно поэтому мы используем прямой переход из секции в карточку (банально window.open) по клику на запись в реестре. Ибо дублировать логику/пилить кучу сообщений из секции в карточку тупо не хватает терпения. Ууууух. Руку бы пожал тому человеку, который додумался до combined-режима))
Combined режим сам по себе не вызывает каких либо нареканий, даже наоборот это весьма интересное решение, и проблемы возникают только с функциональностью верхнего горизонтального меню, а так как оно все равно в самой секции не демонстрируется, а появляется только вместе с карточкой, то вполне логично было бы обогащать его логикой из соответствующего меню карточки каррируя ее.
Проблему понял, но все же в одной схеме нельзя и подписыватся и публиковать, так что либо как сделали вы, либо миксин один на всех, а вот объявлять сообщение непосредственно в карточке\секции.
1) Осуществлять запросы в БД (ESQ запрос), например если Вам необходимо получить какое либо значение из текущей карточки (в которой деталь находиться), то в коде выполняемом в окружении детали всегда доступно значение
this.get("MasterRecordId")
Которое возвращает Вам то поле по которому деталь связана с карточкой (как правило это ее Id).
По нему - ESQ запросом можно получить уже любые данные из карточки (сохраненные на данный момент в БД)
2) Публикация события-запроса, подписка на событие-ответ, публикация события-ответа происходит в подписке на событие-запрос в необходимых вам схемах других объектов (н/п карточки, других деталях)
в событие-ответ передаются необходимые данные. (в виде JS-объекта вторым аргументом в вызове метода this.sundbox.publish)
Может кто сталкивался. Прошу прокомментировать или помочь
5 версия Сервис деск.
В реестре, для всех ролей, кроме "системный администратор" появляются надписи нет доступа>.
На самом деле, доступ к объектам, колонкам и всему, что только возможно - предоставлен группе "Все сотрудники".
Снятие администрирования к колонкам и прочему - ни к чему не приводит. куки и редис - чистили.
Странно, что эта надпись не появляется для полей с типом "справочник". Б
Буду очень благодарна :)
Марина, судя по скриншоту, это какой-то новый или значительно переработанный раздел. Возможно, в нём работа с администрированием по записям не предусматривалась или специально ограничена.
Лучше обратиться к тем, кто его разработали, и уточнить по работе этого механизма для указанного раздела.
В стандартном разделе контактов таких полей нет. Возможно, все эти поля пустые в базе и таким образом отображаются в окне. По ссылке выше дан ряд рекомендаций, в том числе пересоздание колонок и перезапуск пула.
Александр, это не новый раздел.
Это я сама создала новое окно, куда вывела отфильтрованные данные из объекта Контакты
там, где есть значения в карточке раздела КОНТАКТЫ- они отображаются. Если значения отсутствуют, то пишется - нет доступа
Например, Имя и Фамилия - есть в карточках. они отображаются в окне
А поле Отчество - не отображается. Хотя я могу войти в карточку Контакта и внести Отчество.
Вот как раз у меня вопрос: что не раздалось? если войдя в карточку КОНТАКТЫ, я могу всё редактировать.
Александр, это вот Вы зачем мне написали, что что-то не раздалось, хотя у меня был вопрос: коллеги, что могло не раздаться?
К сожалению, поскольку это окно, колонки и прочее не являются стандартными, по одному скриншоту сложно понять причину такого поведения.
Вы можете провести отладку и посмотреть, что реально находится в полях Entity текущей строки реестра при работе под администратором и под пользователем.
В системе есть группы контактов, как я понимаю, они хранятся в объекте ContactFolder.
Можно ли запросом получить список всех групп?
Можно ли каким-то образом по id группы получить список всех относящихся к ней контактов?
Если что, нужно для организации рассылки. Что-то вроде детали с выбором из справочника, после чего нужно получить список всех контактов, относящихся к выбранным группам.
Для того, чтобы получить список контактов из группы нужно выполнить esq с фильтром в таблицу ContactInFolder, выбрать ContactId, предварительно отфильтровав по FolderId.
Спасибо, уже нашёл :) Проглядел вчера вечером эту таблицу.
Можно здесь же задать ещё один вопрос, просто он связан с основной задачей. Какой метод вызывается при удалении записи на детали с реестром (см. скриншот)?
Интересует, как оследить id удаляемой записи перед её удалением? OnDeleted в данном случае не подходит - он вызывается уже когда всё удалено.
Добрый день! Версия 7.9
Коллеги, подскажите пжлст как решаете вопрос ведения курсов именно по датам... насколько трудоемка разработка и подводные камни.
Применение - Счет может быть выставлен вчерашним днем.. и с текущим функционалом "сразу приезхали" что называется).
Спасибо!
Здравствуйте, Елена!
А почему бы просто не загружать каждый день курсы с актуальных ресурсов через интеграцию себе на сайт? Подобные вопросы уже неоднократно поднимались здесь на форуме и есть примеры. Таким образом ведения счета "за вчера" и потянет вчерашний курс. Если пройтись по ключевым словам то можно найти несколько нужных Вам примеров, например http://www.community.terrasoft.ru/forum/topic/13012 и др.
Мария, спасибо!
Да, например , и эту тему вижу http://www.community.terrasoft.ru/blogs/7673.
Но здесь мы получаем курс на текущую дату. А если менеджер забыл выставить счет за вчера, а мы уже загрузили сегодняшний курс, то все получается...сумма будет некорректной...
Ну в таком случае просто в счете установить вчерашнюю дату. В таком случае система вам автоматически и пересчитает по "вчерашнему" курсу, а не по новому загруженному.
Мария,вот в этом и вопрос. Вы говорите о создании своей таблицы, где курс будет к дате привязан и тогда будет пересчет выполняться? В стандарте же мы затираем вчерашний курс новым...
Имеется две среды. На одной среде подотовили пакет (не Custom), который содержит раздел и событийный подпроцесс, который срабатывает перед добавлением записи. Этот процесс добавлен через дизайнер объекта как Event.
Данный пакет зафиксировали в хранилище. На другой среде зафиксировали этот пакет из хранилища. Выполнили 5 шагов после установки(компиляция, генерация, обновления и пр).
После всего этого раздел стал доступен для добавления в рабочие места. то есть перенос прошел корректно. Но не перенесся связанный процесс. В событиях пусто, хотя на исходной среде этот процесс был.
В чем может быть проблема?
"Zaitova Liubov" написал:о не перенесся связанный процесс
В составе пакета схема этого процесса присутствует (на среде куда осуществляли установку) ?
Возможно БП создан мастером и сохранен в "текущий пакет" (Custom как правило) а не в тот который вы переносите, в таком случае в редакторе БП - существует возможность сменить пакет.
В составе пакета схема этого процесса присутствует (на среде куда осуществляли установку) ?
Возможно БП создан мастером и сохранен в "текущий пакет" (Custom как правило) а не в тот который вы переносите, в таком случае в редакторе БП - существует возможность сменить пакет.
бизнес - процесс не был создан отдельно мастером. Он был создан в рамках сущности дизайнером объекта(процесс отрабатывает на событие). Как этот процесс добавлялся я показала на скрине
Доброго времени суток всем! Вопрос к тем, кто уже работал с такой деталью и разобрал всё по полочкам.
Каким образом можно получить доступ к уровню записи в иерархии детали?
Можете пробежатся по всем строкам в коллекции грида, и подсчитать количество связанных строк через колонку "родитель", пока "родитель" не будет незаполнен. Это и будет индикатор уровня вложенности.