Кнопка Добавить в новом справочнике

Всем привет,



Для некоторых справочников доступна кнопка добавления записи из режима выбора, для некоторых нет (см. скриншот).

Как добавить такую кнопку для справочника, у которых нет такой кнопки?

Попробовал создать страницу редактирования и зарегистрировать в SysModule и SysModuleEdit, но это не сработало - справочник вообще перестал работать. Версия системы - 7.13, справочник создал сам.

Заранее спасибо за помощь.

Изображение удалено.

Нравится

5 комментариев
Лучший ответ

Проверьте что пользователь имеет права на добавление записи!

Проверьте что заголовки для кнопоки добавить в режиме редактирования не пусты

select  Value from SysModuleEditlcz
where recordid in (
    select id from SysModuleEdit where SysModuleEntityId in
        (select id from SysModuleEntity where SysEntitySchemaUId in
            (select uid from sysschema where name = 'UsrCroppPlants') --название объекта раздела
        )
    )
 
GO
 
select ActionKindCaption from SysModuleEdit
where SysModuleEntityId in
    (select id from SysModuleEntity where SysEntitySchemaUId in
        (select uid from sysschema where name = 'UsrCroppPlants') --название объекта раздела
    )

Вместо UsrCroppPlants вставьте название вашего объекта (справочника) Если пусто добавте заголовок

update SysModuleEditlcz
set Value = 'Добавить'
where recordid in (
    select id from SysModuleEdit where SysModuleEntityId in
        (select id from SysModuleEntity where SysEntitySchemaUId in
            (select uid from sysschema where name = 'UsrCroppPlants') --название объекта раздела
        )
    )
 
update SysModuleEdit
set ActionKindCaption = 'Добавить'
where SysModuleEntityId in
    (select id from SysModuleEntity where SysEntitySchemaUId in
        (select uid from sysschema where name = 'UsrCroppPlants') --название объекта раздела
    )

Очистите редис и перевойдите в систему

Дмитрий, здравствуйте!



Начиная с версии 7.9.2 если у справочника нет страницы редактирования, то нет возможности добавить новое значение на странице редактирования раздела.



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



Также можно использовать "тихое" добавление значение в справочное поле (вводите новое значение и в выпадающем списке нажимаете на него). Наглядное изображение прикрепил.



Если же при добавлении приложение будет ругаться, что у Вас нет страницы и добавлять нужно через раздел "Справочник", то Вам необходимо на уровне БД выполнить SQL скрипт (http://ftp.bpmonline.com/support/Pub/D.Vilshansky/включить_фичу_Feature…). Если у Вас приложение "SQL консоль" (https://marketplace.terrasoft.ru/app/pt-sql-executor-bpmonline) не установлено, то сообщите нам и мы с нашей стороны выполним скрипт.

 

Затем необходимо перезайти в приложение и почистить кэш браузера.

Вильшанский Дмитрий,

Спасибо за ответ. Проблема в том, что добавление страницы редактирования для объекта не решает этой проблемы.

Тёскин Дмитрий Валерьевич,

Дмитрий, здравствуйте!

Я проверил повторно если создать страницу и создать записи в таблицах SysModuleEntity и SysModuleEdit, то кнопка "Добавить" отображается и новые значения добавляются без ошибок.

Сложно сказать в чем проблема, когда Вы не предоставили более подробной информации (результат отладки, как реализовали и т.д.).

Со своей стороны пример реализовал на триале - https://041232-crm-bundle.bpmonline.com/ (1/1) (раздел "Контакты" - поле "ТЕСТ").

Приблизительный алгоритм реализации:

1. Создание необходимых элементов в конфигурации:

- справочное поле (родительский объект "Базовый справочник") с необходимыми полями;

- создать страницу, которая будет открываться при нажатии на кнопку "Добавить" (родительский объект "BasePageV2" (Базовая схема карточки) (!!!)). Для того, чтобы создать схему с наследованием. то нужно в разделе конфигурации нажать на "Добавить" - в расширенных выбрать "Схема модели представления карточки".

- в схему вставить минимум кода, который необходим для работы:

define("UsrTEST2019PageV2", ["UsrTEST2019PageV2Resources"], function() {

    return (resources) {

        entitySchemaName: "Usrtest",

        attributes: {},

        modules: /**SCHEMA_MODULES*/{}/**SCHEMA_MODULES*/,

        details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,

        businessRules: /**SCHEMA_BUSINESS_RULES*/{}/**SCHEMA_BUSINESS_RULES*/,

        methods: {},

        dataModels: /**SCHEMA_DATA_MODELS*/{}/**SCHEMA_DATA_MODELS*/,

        diff: /**SCHEMA_DIFF*/[

                                               {

                                                                "operation": "insert",

                                                                "name": "Name",

                                                                "parentName": "Header",

                                                                "propertyName": "items",

                                                                "values": {

                                                                                "bindTo": "Name",

                                                                                "layout": {

                                                                                                "column": 0,

                                                                                                "row": 0,

                                                                                                "colSpan": 12

                                                                                }

                                                                }

                                                }

        ]/**SCHEMA_DIFF*/

    };

});

 

 

2. Создание записей на уровне БД в таблицах SysModuleEntity и SysModuleEdit:

SELECT * FROM SysSchema Where Name = 'UsrTEST2019PageV2'

-- UId карточки редактирования = a1eab082-195b-4f2d-a64c-68bb3c09eb54

 

SELECT * FROM SysSchema Where Name = 'UsrTEST'

-- колонка UId объекта = ddcfdbfd-ecc0-44ea-9b49-9591b6b68044

-- проверяем развязочную таблицу

SELECT * FROM SysModuleEntity

WHERE SysEntitySchemaUId = 'ddcfdbfd-ecc0-44ea-9b49-9591b6b68044'

 

-- если нет там записи, добавляем:

INSERT INTO SysModuleEntity (SysEntitySchemaUId) VALUES ('ddcfdbfd-ecc0-44ea-9b49-9591b6b68044')

 

-- проверяем развязочную таблицу

SELECT * FROM SysModuleEntity

WHERE SysEntitySchemaUId = 'ddcfdbfd-ecc0-44ea-9b49-9591b6b68044'

-- берем от туда Id = 2988ae6b-2566-42ec-b240-5b00082252bc

 

INSERT INTO SysModuleEdit (SysModuleEntityId, CardSchemaUId, ActionKindCaption,

ActionKindName, PageCaption) VALUES ('2988ae6b-2566-42ec-b240-5b00082252bc', 'a1eab082-195b-4f2d-a64c-68bb3c09eb54', 'test',

'UsrTEST','Test')

 

SELECT * FROM SysModuleEdit WHERE SysModuleEntityId = '2988ae6b-2566-42ec-b240-5b00082252bc'

3. Для того, чтобы наверняка проверить решения необходимо очистить кеш браузера и перезапустить пул приложения.

P.S. Если возникнуть проблемы, то рекомендую использовать отладку клиентского кода. В консоли должна быть более подобная информация.

 

 

Вильшанский Дмитрий,

Попробовал сделать по вашему мануалу - всё равно не хочет работать. Ковыряние UI кода показывает, что моего справочника (как и многих других моих справочников) нет в Terrasoft.configuration.EntityStructure. По какому условия туда попадают объекты и почему там нет моего объекта ?

Проверьте что пользователь имеет права на добавление записи!

Проверьте что заголовки для кнопоки добавить в режиме редактирования не пусты

select  Value from SysModuleEditlcz
where recordid in (
    select id from SysModuleEdit where SysModuleEntityId in
        (select id from SysModuleEntity where SysEntitySchemaUId in
            (select uid from sysschema where name = 'UsrCroppPlants') --название объекта раздела
        )
    )
 
GO
 
select ActionKindCaption from SysModuleEdit
where SysModuleEntityId in
    (select id from SysModuleEntity where SysEntitySchemaUId in
        (select uid from sysschema where name = 'UsrCroppPlants') --название объекта раздела
    )

Вместо UsrCroppPlants вставьте название вашего объекта (справочника) Если пусто добавте заголовок

update SysModuleEditlcz
set Value = 'Добавить'
where recordid in (
    select id from SysModuleEdit where SysModuleEntityId in
        (select id from SysModuleEntity where SysEntitySchemaUId in
            (select uid from sysschema where name = 'UsrCroppPlants') --название объекта раздела
        )
    )
 
update SysModuleEdit
set ActionKindCaption = 'Добавить'
where SysModuleEntityId in
    (select id from SysModuleEntity where SysEntitySchemaUId in
        (select uid from sysschema where name = 'UsrCroppPlants') --название объекта раздела
    )

Очистите редис и перевойдите в систему

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