Добавить новый тип документа раздела "Документы"

Здравствуйте.
Есть потребность создать новый тип документа в разделе "Документы".
Какова последовательность действий должна быть ? Может кто уже реализовывал у себя. Поделитесь, пожалуйста.

PS
Возможно последовательность действий будет похожа на "Создание стандартного действия", но хотел бы уточнить.

Спасибо.

Нравится

52 комментария

Здравствуйте, Павел!
Для того, чтобы добавить новый тип, необходимо зарегистрировать страницу редактирования данного типа в таблице "SysModuleEdit" с указанием "SysModuleEntityId", "TypeColumnValue", "CardSchemaUId", "ActionKindCaption" и "ActionKindName", а также записи для локализаций в "SysModuleEditLcz" (если у Вас 7.0.1 и выше).

Спасибо, Андрей. Такой информации явно недостаточно(для меня во всяком случае). Есть возможность получить более подробно в виде инструкции ?

Павел, вот пример sql-скрипта для регистрации типа документа и страницы редактирования. Для примера новый тип не создавался, а был использован тип "Договор":

insert into SysModuleEdit(SysModuleEntityId, TypeColumnValue, UseModuleDetails, Position, CardSchemaUId, ActionKindCaption, ActionKindName, PageCaption)
values ((select SysModuleEntityId from SysModule where Code = 'Document'), (select Id from DocumentType where Code = 'Contract'), '1', '3', 'f54e682d-19c0-45ad-84c6-c71cb441dc38', 'testCaption', 'testName', 'Test')
insert into SysModuleEditLcz (RecordId, ColumnUId, SysCultureId,Value)
values ( (select Id from SysModuleEdit where ActionKindName = 'testName'), '55132174-2B96-4E0A-830C-B8E952B12C45', '1A778E3F-0A8E-E111-84A3-00155D054C03', 'Заголовок страницы')
 
insert into SysModuleEditLcz (RecordId, ColumnUId, SysCultureId,Value)
values ( (select Id from SysModuleEdit where ActionKindName = 'testName'), 'A19BF4BF-E22B-49B5-B6E0-918FF6290020', '1A778E3F-0A8E-E111-84A3-00155D054C03', 'Пункт меню добавить')

CardSchemaUId можно посмотреть в метаданных страницы редактирования (поле "Uid"). Метаданные можно посмотреть в конфигурации. Все остальные идентификаторы редактировать не нужно.
Скрипт также можно выполнить из конфигурации, добавив его в свой пакет на вкладке "SQL-сценарии" в разделе "Конфигурация". Затем необходимо из контекстного меню скрипта выбрать пункт "Установить выбранные".

Спасибо, Андрей. Попробую разобраться.


CardSchemaUId можно посмотреть в метаданных страницы редактирования (поле "Uid").

Для этого сперва нужно создать эту страницу редактирования. Верно ?

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

Создал страницу "Страница карточки Коммерческое предложение" по аналогии с "Страница карточки Входящая корреспонденция".

Опубликовал.

Далее Конфигурация, выбираю свой пакет, sql-сценарии, добавить.

Потом из контекстного меню скрипта "Установить выбранные". Не получается. Ничего не происходит.

Павел, сообщите, пожалуйста, установлено ли свойство "Требует установки в БД" и какая информация содержится в поле "Текст последней ошибки"?

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

"Резвов Роман" написал:

Павел, сообщите, пожалуйста, установлено ли свойство "Требует установки в БД" и какая информация содержится в поле "Текст последней ошибки"?


Роман. А у меня нет последней колонки. Но после написания скрипта выходит ошибка:

Ошибка проверки SQL сценария
Incorrect syntax near '48'. Incorrect syntax near ','. Incorrect syntax near ','.

"Андрей Каспаревич" написал:

Павел, почему Вы создали страницу в старом интерфейсе?

Эти страницы не используются в версиях 7.х, разве что в справочниках, и вызвать эту страницу из нового интерфейса у Вас не получится.


Хороший вопрос, Андрей. Если честно, не до конца его понял, так как не знаю как создать страницу в старом интерфейсе, а как в новом. Делал через Конфигурация, Добавить, Страница.
Версия 7.1.0.172. Если они не используются в 7.х, как я тогда ее добавил. Подскажите, что не так делал ?

Павел, для создания страниц нового интерфейса используется пункт "Схема модели представления карточки", см. пункт 3 инструкции:
http://www.terrasoft.ua/bpmonlinesdk/CreateStandartSection.html
То, что страницы старого интерфейса не используются не означает, что Вы не можете их содавать, ведь страница настроек все еще в старом интерфейсе. И страницы могут использоваться, например, при добавлении стравочников.
На счет ошибки SQL нужно посмотреть код, который Вы пытаетесь добавить.

Сделал карточку правильно.
Но появляются ошибки при вводе когда срипта

Здравствуйте, Павел!
Во-первых, название скрипта должно состоять из латинских символов и не содержать пробелов, а во-вторых, Вы не туда вставили Id.
В том месте, гда Вы его вставили, должно быть название заполняемого поля, а Id должен стоять дальше в соответствующей позиции в скобках после ключевого слова "VALUES".
Посмотрите внимательнее этот комментарий, а также, если интересно, документацию по использованию инструкции INSERT.

Спасибо, Андрей.
Вот ваш код

INSERT INTO SysModuleEdit(SysModuleEntityId, TypeColumnValue, UseModuleDetails, Position, CardSchemaUId, ActionKindCaption, ActionKindName, PageCaption)
VALUES ((SELECT SysModuleEntityId FROM SysModule WHERE Code = 'Document'), (SELECT Id FROM DocumentType WHERE Code = 'Contract'), '1', '3', 'f54e682d-19c0-45ad-84c6-c71cb441dc38', 'testCaption', 'testName', 'Test')
INSERT INTO SysModuleEditLcz (RecordId, ColumnUId, SysCultureId,Value)
VALUES ( (SELECT Id FROM SysModuleEdit WHERE ActionKindName = 'testName'), '55132174-2B96-4E0A-830C-B8E952B12C45', '1A778E3F-0A8E-E111-84A3-00155D054C03', 'Заголовок страницы')

Я правильно понял, что нужно на место CardSchemaUId поставить значение поля Uid ?
Например, в карточке договора оно выглядит так:

Если до этого я все далаю правильно, то в скрипте такие ошибки:

Вроде бы все делаю правильно: после Position идет единственное значение, которое нужно поменять. (согласно вашему комментарию)

Павел, неправильно.
Если опираться на мой код, то значение поля Uid должно быть вместо "f54e682d-19c0-45ad-84c6-c71cb441dc38" и в одинарных кавычках, так как это значение.
CardSchemaUId - это название поля.
Position - это тоже название поля и про него я ничего не говорил. Имелась ввиду именно позиция, то есть расположение.

Все. До меня наконец дошло. Сейчас попробую.

Андрей. Благодаря вашему терпению все получилось ) Спасибо.

Только у меня теперь почему-то перестал добавляться документ с типом Договор. Выбираешь его, а он перекидывает на карточку ТКП

Скрипт выполнил такой:

INSERT INTO SysModuleEdit(SysModuleEntityId, TypeColumnValue, UseModuleDetails, Position, CardSchemaUId, ActionKindCaption, ActionKindName, PageCaption)
VALUES ((SELECT SysModuleEntityId FROM SysModule WHERE Code = 'Document'), (SELECT Id FROM DocumentType WHERE Code = 'Contract'), '1', '3', 'f54e682d-19c0-45ad-84c6-c71cb441dc38', 'OfferCaption', 'OfferName', 'Offer')
INSERT INTO SysModuleEditLcz (RecordId, ColumnUId, SysCultureId,Value)
VALUES ( (SELECT Id FROM SysModuleEdit WHERE ActionKindName = 'OfferName'), '55132174-2B96-4E0A-830C-B8E952B12C45', '1A778E3F-0A8E-E111-84A3-00155D054C03', 'ТКП')
 
INSERT INTO SysModuleEditLcz (RecordId, ColumnUId, SysCultureId,Value)
VALUES ( (SELECT Id FROM SysModuleEdit WHERE ActionKindName = 'OfferName'), 'A19BF4BF-E22B-49B5-B6E0-918FF6290020', '1A778E3F-0A8E-E111-84A3-00155D054C03', 'Добавить ТКП')

Павел, Вы же по факту заменили страницу для типа "Документ". Этот Id выбирается здесь:

(SELECT Id FROM DocumentType WHERE Code = 'Contract')

Так как я не знал, какой код у Вашего типа, то для примера взял стандартный.

Спасибо, Андрей. Хотя я понял результат скрипта как добавление в таблицу новой записи. Почему произошло

"Андрей Каспаревич" написал:Вы же по факту заменили страницу для типа "Документ"
мне не понятно.

"Андрей Каспаревич" написал:Так как я не знал, какой код у Вашего типа, то для примера взял стандартный.

"Андрей Каспаревич" написал:Павел, да. Можете, конечно попробовать использовать страницу редактирования договора или страницу другого документа, если Вам подойдет прописаная там логика и набор полей.

Я счел, что мне подойдет тип "договор" и я смогу скрыть ненужные поля, поэтому взял Договор.
Я ожидал, что в результате появится новый тип документа. Он появился. Но Тип Договор тоже остался.

Андрей, подскажите, мне нужно обратиться в техподдержку или я смогу исправить мои "труды" с вашей помощью ?

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

Задача.
Оставить все типы документов, которые были изначально. Чтобы они открывались так, как было изначально.
+ Добавить новый тип документа "ТКП" с такими же полями, как у карточки договора (с учетом того, что можно будет скрыть ненужные колонки).
Задача такая.

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

update SysModuleEdit
set TypeColumnValue = (SELECT Id FROM DocumentType WHERE Code = 'Offer') -- название Вашего типа
where ActionKindName = 'OfferName'

После этого для и для типа "Документ", и для "ТКП" будет использоваться старница документа, но с разными подписями сверху.
Затем, нужно уже будет что-то решать с полями карточки. Но не скрывайте их самостоятельно с помощью дизайнера, так как они скроются и для типа "Документ".
Думаю, лучше будет написать нам в поддержку для предоставления дальнейших рекомендаций.

Спасибо большое за помощь и консультацию!

Я прочитав все так и не понял, нужно ли создавать объект или достаточно создать страницу на основании существующего объекта Document.

В системе преднастроены типы документов Акт и Договор, но в объекте Document нет поля тип документа. Допустим я хочу добавить тип документа "Кредитный Договор", то какая последовательность действий должна быть?

Здравствуйте, Илья!
В объекте "Document" есть поле "Тип" ("Type"):

Никаких дополнительных объектов Вам создавать не нужно, достаточно создать страницу и зарегистировать ее в БД. В моем первом ответе содержится послеждовательность действий после того, как Вы создали страницу.

"Андрей Каспаревич" написал:Для того, чтобы добавить новый тип, необходимо зарегистрировать страницу редактирования данного типа в таблице "SysModuleEdit" с указанием "SysModuleEntityId", "TypeColumnValue", "CardSchemaUId", "ActionKindCaption" и "ActionKindName", а также записи для локализаций в "SysModuleEditLcz" (если у Вас 7.0.1 и выше).

Хочу сгенерировать, как написано тут

"3.2.5. Добавить исходный код схемы раздела. Код может быть написан вручную либо сгенерирован генератором шаблонов стандартного раздела NUISchemaGenerator. Пример использования генератора шаблонов для генерации кода схемы карточки раздела приведен выше.

3.2.6. Опубликовать схему."

в итоге получаю следующую ошибку при попытке
http://joxi.ru/Cv9eU_3JTJDhZwLhssE
http://joxi.ru/HP9eU_3JTJD0Z9AjoLk

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

Пишу еще раз!

Я полностью проделал 3ий пункт из инструкции http://www.terrasoft.ua/bpmonlinesdk/CreateStandartSection.html

Там в инструкции написано "3.2.5. Добавить исходный код схемы раздела. Код может быть написан вручную либо сгенерирован генератором шаблонов стандартного раздела NUISchemaGenerator. Пример использования генератора шаблонов для генерации кода схемы карточки раздела приведен выше."

Как писать вручную не знаю, сгенерировать не знаю как.
В итоге где код странице пусто, прилагаю скриншот http://yadi.sk/d/vynZY4t2QYk7u

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

да теперь нашел NUISchemaGenerator
вот добавляю договор http://yadi.sk/d/7zLlm8msQZ4FA
http://yadi.sk/d/nvK9St_FQZ4bJ
и нажимаю кнопку Генерировать
в итоге результат (ошибка) такой: http://yadi.sk/d/aaTLpcwIQZ4xT

Объектом раздела является "Документ". Договор - это страница редактирования. Генерировать тело страницы редактирования следует для объекта Документ.

при публикации страницы появляются ошибки JS, или это не страшно?
вот скрин http://yadi.sk/d/urum9BDxQZTWU

SQL запрос на добавление документа не выполлняется, пишет ошибку:

Сообщение 207, уровень 16, состояние 1, строка 2
Недопустимое имя столбца "PageCaption".

Илья, можно увидеть запрос, который Вы выполняли?

"Резвов Роман" написал:

Илья, можно увидеть запрос, который Вы выполняли?

С уважением,

Роман Резвов

Специалист службы поддержки II линии

Группа компаний Terrasoft

use [BPMonline CRM]
INSERT INTO SysModuleEdit(SysModuleEntityId, TypeColumnValue, UseModuleDetails, Position, CardSchemaUId, ActionKindCaption, ActionKindName, PageCaption)
VALUES ((SELECT SysModuleEntityId FROM SysModule WHERE Code = 'Document'), (SELECT Id FROM DocumentType WHERE Code = 'Contract'), '1', '3', '6576bcda-88c7-4ed1-aa33-882454712239', 'testCaption', 'testName', 'Test')
INSERT INTO SysModuleEditLcz (RecordId, ColumnUId, SysCultureId,Value)
VALUES ( (SELECT Id FROM SysModuleEdit WHERE ActionKindName = 'testName'), '55132174-2B96-4E0A-830C-B8E952B12C45', '1A778E3F-0A8E-E111-84A3-00155D054C03', 'Заголовок страницы')
 
INSERT INTO SysModuleEditLcz (RecordId, ColumnUId, SysCultureId,Value)
VALUES ( (SELECT Id FROM SysModuleEdit WHERE ActionKindName = 'testName'), 'A19BF4BF-E22B-49B5-B6E0-918FF6290020', '1A778E3F-0A8E-E111-84A3-00155D054C03', 'Пункт меню добавить')

Илья, скопировал Ваш запрос, выполнил успешно:

Как называется база, для которой Вы пытаетесь выполнить запрос, возможно ее имя не BPMonline CRM?

"Резвов Роман" написал:

в 7.0 не работало - не было такого поля, обновились до 7.2 - работает запрос

Илья, проверял именно для 7.2

Добавил в типы документов "Кредитный договор"
В 7.2 работает корректно в разделе Документы.

Если же создавать "Кредитный договор" в делали Контакта, то создается почему-то обычный договор, а не кредитный.

в базе в таблице SysModuleEditLcz
http://joxi.ru/qL6GU_3JTJD3UwfEkuE

в таблице SysModuleEdit
http://joxi.ru/K7-GU_3JTJD2UxgJtAE

Илья, здравствуйте.

Совсем не информативные скриншоты. Лучше сделайте выборку всего из SysModuleEdit, скопируйте результат в Excel и выложите здесь. Будем смотреть.

Происходит, еще раз, следующее.
Открываю раздел Документы, создаю Договор - отображает страницу Договора, но заголовок Кредитного договора.
Открываю раздел Документы, создаю Кредитный Договор - отображает страницу Кредитного Договора и заголовок Кредитного договора.

Редактирую Контакт, в детали Документы добавляю Договор - открывается карточка Договора и заголовок Кредитного Договора.
Редактирую Контакт, в детали Документы добавляю Кредитный Договор - открывается карточка Договора и заголовок Кредитного Договора.

Файл таблиц прикрепляю.

Здравствуйте, Илья!
Предоставленные данные не дают полной картины, так как нет колонок связи. Прошу предоставить таблицу со значениями всех колонок таблиц SysModuleEdit и SysModuleEditLcz.

Как импортировать полностью таблицы? Пробую через Excel, а испортируется в Excel только часть столбцов.
Вот скриншот: http://joxi.ru/sCqRUxjKTJAgHxJFRCM

Илья, Вы можете сделать выборку запросом из базы. Пример запроса: select * from SysModuleEdit

"Резвов Роман" написал:

Илья, Вы можете сделать выборку запросом из базы. Пример запроса: select * from SysModuleEdit

С уважением,

Роман Резвов

Специалист службы поддержки II линии

Группа компаний Terrasoft

Илья, Вам следует создать новый тип документа (кредитный договор), добавив запись в соответствующий справочник. И использовать значение его идентификатора в колонке TypeColumnValue таблицы SysModuleEdit для записи страницы кредитного договора. У Вас используется общий тип записи для разных карточек.

Спасибо, заработало!

Решил добавить еще тип документа - "Договор с нами", теперь в меню название документов задваиваются. Вот скриншоты:
http://joxi.ru/XmyeU_3JTJAmY8-0bLM
http://joxi.ru/emyeUxjKTJBMH1FNpbI

Выполнил запрос:

USE [720]
INSERT INTO SysModuleEdit(SysModuleEntityId, TypeColumnValue, UseModuleDetails, Position, CardSchemaUId, ActionKindCaption, ActionKindName, PageCaption)
VALUES ((SELECT top 1 SysModuleEntityId FROM SysModule WHERE Code = 'Document'), 'f8fc7d81-13d8-4ffc-b8bf-f12d9eb5adb4', '1', '3', 'c82ba00e-f4a1-4301-89eb-efde73076b3d', 'testCaption', 'testName', 'Договор с нами')
INSERT INTO SysModuleEditLcz (RecordId, ColumnUId, SysCultureId,Value)
VALUES ( (SELECT top 1Id FROM SysModuleEdit WHERE ActionKindName = 'testName'), '55132174-2B96-4E0A-830C-B8E952B12C45', '1A778E3F-0A8E-E111-84A3-00155D054C03', 'Договор с нами - страница')
 
INSERT INTO SysModuleEditLcz (RecordId, ColumnUId, SysCultureId,Value)
VALUES ( (SELECT top 1Id FROM SysModuleEdit WHERE ActionKindName = 'testName'), 'A19BF4BF-E22B-49B5-B6E0-918FF6290020', '1A778E3F-0A8E-E111-84A3-00155D054C03', 'Договор с нами')

копии таблиц прилагаю

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