Добрый день!

Можно ли сделать 2 раздела, которые будут использовать 1 объект, 1 страницу редактирования, но 2 разные страницы раздела (Section)?

Нравится

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

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

Можно сделать прямым запросом в БД.
Создаем раздел Emails, взяв за основу раздел Activity:

insert into SysModule
(Caption, SysModuleEntityId, Image16, Image20, FolderModeId, GlobalSearchAvailable, HasAnalytics, HasActions, HasRecent, Code, ModuleHeader, CardSchemaUId, SectionModuleSchemaUId, SectionSchemaUId, CardModuleUId, Image32Id, LogoId)
values
('Emails', 'a2e7bf65-7380-e011-afbc-00155d04320c', (select Image16 from SysModule where Id = '055063c9-8180-e011-afbc-00155d04320c'), (select Image20 from SysModule where Id = '055063c9-8180-e011-afbc-00155d04320c'), 'b659d704-3955-e011-981f-00155d043204',
1, 1, 1, 0, 'Email', 'List of mails', '80918b27-ff37-4d8c-ba73-c985d74d3dc2', 'df58589e-26a6-44d1-b8d4-edf1734d02b4', '569aaf1a-5943-4f87-ab47-948d941e4920', '4e1670dc-10db-4217-929a-669f906e5d75', 'abe30a95-e663-43a9-a881-834b70de5206', '631b1018-9b82-43fe-9f5e-aad272aae679' )

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

Спасибо. Я добавил раздел, но при переходе на него меня перекидывает на активности, можно ли это исправить? И можно ли страницу реестра изменить?

"Демьяник Алексей" написал:Создаем раздел Emails, взяв за основу раздел Activity:

Как интересно. И это всё, что нужно сделать для нового раздела Emails?

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

"Колебянов Виталий Романович" написал:

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

Спасибо. Я добавил раздел, но при переходе на него меня перекидывает на активности, можно ли это исправить? И можно ли страницу реестра изменить?

Это был пример запроса, который создает новый раздел, взяв за основу существующий.

При необходимости можно изменить:
1) Страницу раздела (поле SysModule.SectionSchemaUId)
2) Страницу редактирования раздела (поле SysModule.CardSchemaUId)
3) Страницу миникарточки и много чего другого

Предварительно страницу раздела необходимо создать в конфигурации.

"Владимир Соколов" написал:

Как интересно. И это всё, что нужно сделать для нового раздела Emails?

Это будет полная копия раздела "Активности", которая будет называться Emails. Логика раздела "Активности" останется.
Для изменения логики необходимо менять схему раздела, страницы разделов.

"Демьяник Алексей" написал:

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

Колебянов Виталий Романович пишет:

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

Спасибо. Я добавил раздел, но при переходе на него меня перекидывает на активности, можно ли это исправить? И можно ли страницу реестра изменить?

Это был пример запроса, который создает новый раздел, взяв за основу существующий.

При необходимости можно изменить:

1) Страницу раздела (поле SysModule.SectionSchemaUId)

2) Страницу редактирования раздела (поле SysModule.CardSchemaUId)

3) Страницу миникарточки и много чего другого

Предварительно страницу раздела необходимо создать в конфигурации.

Владимир Соколов пишет:

Как интересно. И это всё, что нужно сделать для нового раздела Emails?

Это будет полная копия раздела "Активности", которая будет называться Emails. Логика раздела "Активности" останется.

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

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

Виталий, необходимо обратиться в службу поддержки - для понимания необходимо провести отладку. При обращении в службу поддержки рекомендую предоставить результат собственной отладки.

Здравствуйте!
Получилось ли решить проблему с фокусом на неправильном разделе? Не поделитесь ли способом?

У меня кейс заключается в следующем: на основе имеющегося объекта создать раздел с новой страницей раздела и с новой страницей редактирования.
Появилась проблема - при открытии страницы редактирования объекта открывается не та, что была указана в CardSchemaUId, а старая. Как это можно решить?
Спасибо!

Здравствуйте, Михаил!

Попробуйте в мастере раздела настроить типизацию страниц для каждого из разделов.
Также, посмотрите необходимые связи:
- [SysEntitySchemaUId] в таблице SysModuleEntity (таблица, где хранится информация объектах разделов). Где [SysEntitySchemaUId] - колонка Uid объекта раздела (например, "UsrRK") в таблице SysSchema.

- В таблице SysModuleEdit (страница редактирования "Page"):
где [SysModuleEntityId] - колонка Id записи таблицы SysModuleEntity из первого этапа (проверка Select Id from SysModuleEntity Where SysEntitySchemaUId='AF6DD4AD-1398-4FCE-8837-78DC65AE0F9E')
[CardSchemaUId] - колонка Uid страницы редактирования объекта (например, "UsrRK1Page") в таблице SysSchema (проверка Select Uid,Name from SysSchema where name like '%UsrRK%').

- В таблице SysModule (страница раздела "Section"):
где [SysModuleEntityId] - колонка Id записи таблицы SysModuleEntity из первого этапа (проверка Select Id from SysModuleEntity Where SysEntitySchemaUId='AF6DD4AD-1398-4FCE-8837-78DC65AE0F9E').

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

Помогите разрешить кое какую проблему с выгрузкой 1с.
Как известно, в террасофте есть возможность выгрузки контрагентов в 1с. В базе данных имеются соответственно поля ...Объект1с УИД1с и конечно же Код1С. Так вот, все это работает.НО! для одной базы 1с. Есть необходимость выгружать одного контрагента в две базы данных. То есть Либу туда либо сюда, а может даже в обе. Как можно решить данную проблему? Ведь в полях Контрагентов(tbl_Account) есть место только для одной базы... Ну допустим я хочу выгрузитьь и туда и сюда..В поле UID1C соответственно запишется ID объекта 1с либо с той либо с иной базы данных. Как быть помогите пожалуйста! Начальство требует!

Нравится

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

Я вижу пока только 2 варианта:
1) Создать поля Code1C, Object1C, UID1C для второй базы, т.е. Code1CBase2 и т.д. и перенастроить интеграцию с одной из баз на них.
2) Забыть про все эти поля и действовать через универсальное поле, такое как ИНН.

Да, именно по первому варианту и хотел сделать.Добавил поля. Даже сделал выгрузку. Теперь , могу присвоить код. Но никак не могу понять где и как он заполняет поля UID1C и Object1C. Поискал в Администраторе. Нашел только огромную тучу стандартных скриптов, и то прототипы.. А где и как присваивается - непонятно.

А разве не просто в интеграции на настройке полей? По моему там же где и настраиваются все другие поля, просто они по умолчанию сразу проставляются на Code1C и Object1C, надо их просто на свои поменять.
Или я что-то не догоняю?

Ну все верно, прост у нас выгрузка в 1с не через стандартную интеграцию реализована а програмно. Скриптами. В том ся поблема.

А еще я знаю не всю структуру и где менять.Сейчас наткнулся на таблицу AccountBillingInfo там тоже есть Коды 1с И УИДы1С.. И там дублировать получается.. Че то как то все через..

Вопрос остается... Где и как присваевается UID1C и Object1C??? В Синхронизации это не указывается..

В scr_Dataflow1CConsts описаны поля связанные с 1С:

var KeyFieldName1C = 'UID1C';
var KeyFieldName1CCaption = "UID записи в 1C";
var KeyCodeFieldName1C = 'Code1C';
var KeyCodeFieldName1CCaption = "Код записи в 1C";
var KeyDateFieldName1C = 'Date1C';
var KeyDateFieldName1CCaption = "Дата синхронизации записи с 1C";
var KeyObjectName1C = 'Object1C';
var KeyObjectName1CCaption = "Объект 1C";

А их присвоение идет в scr_Dataflow1CUtils.
Например UID1C:

...
var UID1C;
...
UID1C = Param.Obj1C.XMLString(Select1C[QueryLink].UUID());
...
Dataset(KeyFieldName1C) = '{' + UID1C + '}';
...

Вам будет легче все таки копаться не тут, а создать скрипт на интеграцию и присвоить эти поля в OnBeforeRecordImport

Александ конечно предложил интересный и правильный метод решения. В своем сообщение я только дополню и приведу пример Функции OnBeforeRecordImport в части получения из 1С и присвоения в Террасофте полей UID1C и Object1C. Пример получения UID1C и Object1C Справочника 1С "Организации":

function ParseUUIDtoGUID(input) {
	var TrimResult = Trim(input.toString());
	var Result = TrimResult.toUpperCase().replace(/^[\s\r\n]+|[\{\}]|[\s\r\n]+$/g, "");
 
	if ((/[A-F0-9]{8}\-[A-F0-9]{4}\-[A-F0-9]{4}\-[A-F0-9]{4}\-[A-F0-9]{12}/).test(Result)) {
		return Result;
	} else {
		return null;
	}
}
 
function OnBeforeRecordImport(Param, Dataset, Select1C) {
...
        var GUID1C = ParseUUIDtoGUID(Param.Obj1C.String(Select1C.Организация.Ссылка.UUID()));
        if (!IsEmptyValue(GUID1C)) {
                GUID1C = '{' + GUID1C + '}';
        }
...
	TestDS.Values('UID1C') = GUID1C;
	TestDS.Values('Object1C') = Select1C.Организация.Ссылка.Метаданные().ПолноеИмя();					
...
}
Показать все комментарии