Здравствуйте. Есть потребность создать новый тип документа в разделе "Документы".
Какова последовательность действий должна быть ? Может кто уже реализовывал у себя. Поделитесь, пожалуйста.
Здравствуйте, Павел!
Для того, чтобы добавить новый тип, необходимо зарегистрировать страницу редактирования данного типа в таблице "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-сценарии" в разделе "Конфигурация". Затем необходимо из контекстного меню скрипта выбрать пункт "Установить выбранные".
Павел, да. Можете, конечно попробовать использовать страницу редактирования договора или страницу другого документа, если Вам подойдет прописаная там логика и набор полей.
Павел, почему Вы создали страницу в старом интерфейсе?
Эти страницы не используются в версиях 7.х, разве что в справочниках, и вызвать эту страницу из нового интерфейса у Вас не получится.
Павел, почему Вы создали страницу в старом интерфейсе?
Эти страницы не используются в версиях 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', 'Добавить ТКП')
Спасибо, Андрей. Хотя я понял результат скрипта как добавление в таблицу новой записи. Почему произошло
"Андрей Каспаревич" написал:Вы же по факту заменили страницу для типа "Документ"
мне не понятно.
"Андрей Каспаревич" написал:Так как я не знал, какой код у Вашего типа, то для примера взял стандартный.
"Андрей Каспаревич" написал:Павел, да. Можете, конечно попробовать использовать страницу редактирования договора или страницу другого документа, если Вам подойдет прописаная там логика и набор полей.
Я счел, что мне подойдет тип "договор" и я смогу скрыть ненужные поля, поэтому взял Договор.
Я ожидал, что в результате появится новый тип документа. Он появился. Но Тип Договор тоже остался.
Андрей, подскажите, мне нужно обратиться в техподдержку или я смогу исправить мои "труды" с вашей помощью ?
Павел, подытожив все вышенаписанное, давайте сформулируем актуальную задачу.
На текущем этапе Вас все устраивает, кроме того, что остался тип "Документ", его нужно убрать. Правильно?
Задача.
Оставить все типы документов, которые были изначально. Чтобы они открывались так, как было изначально.
+ Добавить новый тип документа "ТКП" с такими же полями, как у карточки договора (с учетом того, что можно будет скрыть ненужные колонки).
Задача такая.
Павел, в таком случае, нужно будет все-таки создавать свою карточку, возможно скопировать существующую, либо дописывать логику скрытия полей, так как страница будет использоваться одна и скрыв поля на ней, они будут скрыты вне зависимости от типа записи.
Для того, чтобы подправить ситуацию на данный момент, попробуйте выполнить скрипт:
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.5. Добавить исходный код схемы раздела. Код может быть написан вручную либо сгенерирован генератором шаблонов стандартного раздела NUISchemaGenerator. Пример использования генератора шаблонов для генерации кода схемы карточки раздела приведен выше."
Как писать вручную не знаю, сгенерировать не знаю как.
В итоге где код странице пусто, прилагаю скриншот http://yadi.sk/d/vynZY4t2QYk7u
Собственно, в цитируемом вами тексте сказано, что пример использования генератора шаблонов есть в этой же инструкции, в начале. Раздел так и называется "Генератор шаблонов схем стандартного раздела".
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', 'Пункт меню добавить')
Происходит, еще раз, следующее.
Открываю раздел Документы, создаю Договор - отображает страницу Договора, но заголовок Кредитного договора.
Открываю раздел Документы, создаю Кредитный Договор - отображает страницу Кредитного Договора и заголовок Кредитного договора.
Редактирую Контакт, в детали Документы добавляю Договор - открывается карточка Договора и заголовок Кредитного Договора.
Редактирую Контакт, в детали Документы добавляю Кредитный Договор - открывается карточка Договора и заголовок Кредитного Договора.
Здравствуйте, Илья!
Предоставленные данные не дают полной картины, так как нет колонок связи. Прошу предоставить таблицу со значениями всех колонок таблиц SysModuleEdit и SysModuleEditLcz.
Как импортировать полностью таблицы? Пробую через Excel, а испортируется в Excel только часть столбцов.
Вот скриншот: http://joxi.ru/sCqRUxjKTJAgHxJFRCM
Илья, Вам следует создать новый тип документа (кредитный договор), добавив запись в соответствующий справочник. И использовать значение его идентификатора в колонке TypeColumnValue таблицы SysModuleEdit для записи страницы кредитного договора. У Вас используется общий тип записи для разных карточек.
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', 'Договор с нами')