Добрый день, уважаемые коллеги! Вопрос по Excel reports builder (разработчик DevLabs). В описании пакета сказано, что данные можно выгружать в шаблон.

А можно ли настроить шаблон следующим образом: 1) на лист с данными выгружаются данные из Creatio 2) На другом листе сводная таблица, которая имеет источником выгруженную таблицу. И пользователь просто нажимает на сводной таблице Обновить и она наполняется актуальными данными.

У меня в шаблоне настроена таблица Table1,  которая присутствует в Диспетчере имен и на которую "смотрит" Сводная таблица. При выгрузке сейчас получается, что выгружаемые в шаблон данные затирают эту таблицу ( в диспетчере имен все пропадает).

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

Подскажите, пожалуйста, по этой ситуации 

Нравится

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

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

 

Насколько мне известно, сделать то, что Вы описали, через приложение Excel reports builder стандарными средствами нельзя.

 

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

Марина, здравствуйте,

 

в настройках отчета в поле "Имя листа" вы указываете название вкладки, куда выгружаются данные. Лучше название листа для выгрузки данных переименовать и оно должно точно соответствовать названию листа в файле шаблона. Проверьте, что данные выгружаются в указанную вами вкладку. После этого можете в файл шаблона добавлять другие вкладки и там настраивать сводные таблицы, графики. По результатам настройки загрузите шаблон файла в настройках отчета.

 

Добрый день, уважаемые коллеги! Спасибо за Ваши комментарии. Ирина, я как раз так все и делаю, данные выгружаются на указанный лист. Но во время выгрузки "теряется" имя сводной таблицы. И если даже выгруженный массив назвать, как источник данных сводной таблицы (также, например, СводнаяТаблица1), они друг друга "не узнают") 

Добрый день, Марина,

 

проверьте, что названия полностью совпадают (сравнение названий регистрозависимо) и нет лишних пробелов либо в настройках отчетах, либо в шаблоне excel.

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

Подскажите как забиндить настройку страниц в разделе? Это я так вижу таблица и должна отдельно от настройки раздела быть, но не как не найду ее. При сохранение настроек (нажатие "Сохранить" в настройках раздела) нужные данные не сохраняются в пакет, и при установке его на другую среду таблица со списком есть но вторая колонка (справа) пустая, данные не сохраняются в ней

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

Нравится

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

Александр Тыра,

1. Уточните, пожалуйста, версию bpm'online, в которой Вы выполняете настройки?

2. Я правильно понимаю, что при создании нескольких страниц редактирования, через мастер разделов, не выполняется автоматическая привязка данных об этих страницах в таблицу SysModuleEdit?

Если Вы используете последнюю версию и там не работает такая привязка данных, то это является недоработкой мастера раздела.

У нас был похожий опыт переноса дополнительных страниц редактирования для стандартных разделов году в 2018. На сколько я помню, все кастомные разделы с несколькими страницами редактирования переносятся нормально, а для стандартных разделов нужно выполнить это не привязкой данных, а SQL скриптом на целевой среде после переноса. Я попробую поискать вариант скрипта в архивах. Если найду - вышлю вам.



 

Нашел.

Необходимо добавить связь в таблицу SysModuleEdit. Детальнее можно почитать здесь. Нам помогло.

 https://community.terrasoft.ru/questions/rucnaa-registracia-razdela

Сидоров Александр Валерьевич,

Спасибо, как раз привязку делал через эту таблицу, но не могу найти колонку что отвечает за справочник (таблицу в которой значения на основе которых разные страницы прописываются)

Александр Тыра,

1. Уточните, пожалуйста, версию bpm'online, в которой Вы выполняете настройки?

2. Я правильно понимаю, что при создании нескольких страниц редактирования, через мастер разделов, не выполняется автоматическая привязка данных об этих страницах в таблицу SysModuleEdit?

Если Вы используете последнюю версию и там не работает такая привязка данных, то это является недоработкой мастера раздела.

Александр Тыра пишет:

не могу найти колонку что отвечает за справочник (таблицу в которой значения на основе которых разные страницы прописываются)

В таблице SysModuleEntity колонка TypeColumnUId.

В этой колонке нужно указать "UId" колонки из таблицы раздела, которая ссылается на справочник, используемый в качестве типа записей раздела.

Алла Савельева,

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

Алла Савельева,

Колонка TypeColumnUId заполнена у страниц, проверил на корректность. Но справочник (выделенное поле) не заполнен, и потому думаю не происходит установка значений из пакета (связка видимо не дает)

Алла Савельева,

Думаю это оно и есть, просто уже перенес данные и думаю потому не вижу разницы, но вот думаю это оно. Спасибо большое

Александр Тыра,

Интересно, исправлено ли это в последней актуальной на текущий момент версии 7.15.4?

Алла, с версии 7.14.3 заведена проблема «Перенос пакетов. При переносе пакетами раздела с несколькими страницами редактирования настройка типизированных страниц не переносится - используемые значения справочников не переносятся пока для колонки  TypeColumnValue не установить признак Force Update», она ещё не решена.

Зверев Александр,

Решил попробовать то что Вы процетировали, и после того как указал принудительное обновление колонок все перенеслось.

На сколько я понимаю это не баг а фитца, и смысл ее заключается в том что запись уже существует, и значение в колонке есть в модуле и в Entity, а если без галочки принудительного обновления записи оно и не перезаписывает (на уровне системы это прекрасная функция, к примеру значения номера договора в dev среде не перетрут номер в продуктивной среде если не стоит галочка), так что если мыслить с такой точки зрения то логично. Но конечно было вы удобнее что бы создавалось уже с проставленными галочками принудительной перезаписи а не идти и менять руками при создании новых страниц

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

Коллеги, подскажите пожалуйста логику оформление розничной продажи физическому лицу в Creatio 7.15

Ранее создавали контрагента и контакт контрагента - фактически вели двойные записи. На контрагента Иванова Ивана Ивановича создавалась продажа, заказ, договор. Не очень удобно так делать. Может изменилось что то?

Нравится

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

Есть три основных подхода:



1. Вести юридические лица в контрагентах, физические - в контактах. И модифицировать Лиды, Продажи, Договора, Документы, Счета, Заказы для использования обоих типов клиентов. Зато для маркетинга всё хорошо, и информация не дублируется (зато часто дублируется клиентский функционал в Контрагентах и Контактах)



2. Вести всех клиентов (физ. и юр. лица) в контрагентах, а их контактные лица - в контактах. Тогда вся Sales часть работает по базовой логике, но начинает страдать Marketing часть, либо надо дублировать информацию о клиентах-физ.лицах в контрагентах и контактах (можно, конечно, писать БП для синхронизации)



3. Завести раздел Клиенты, который связан с контрагентом или контактом. В нём вести клиентсткую информацию, и модифицировать Лиды, Продажи, Договора, Документы, Счета, Заказы для использования нового раздела.



В каждом проекте приходится серьезно взвешивать плюсы и минусы. Универсального решения пока не нашёл

Есть три основных подхода:



1. Вести юридические лица в контрагентах, физические - в контактах. И модифицировать Лиды, Продажи, Договора, Документы, Счета, Заказы для использования обоих типов клиентов. Зато для маркетинга всё хорошо, и информация не дублируется (зато часто дублируется клиентский функционал в Контрагентах и Контактах)



2. Вести всех клиентов (физ. и юр. лица) в контрагентах, а их контактные лица - в контактах. Тогда вся Sales часть работает по базовой логике, но начинает страдать Marketing часть, либо надо дублировать информацию о клиентах-физ.лицах в контрагентах и контактах (можно, конечно, писать БП для синхронизации)



3. Завести раздел Клиенты, который связан с контрагентом или контактом. В нём вести клиентсткую информацию, и модифицировать Лиды, Продажи, Договора, Документы, Счета, Заказы для использования нового раздела.



В каждом проекте приходится серьезно взвешивать плюсы и минусы. Универсального решения пока не нашёл

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

При попытке "Скомпилировать все" через несколько секунд пропадает фон загрузки, что не свойственно и в консоли видим следующее: 

 

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

Сама система после этого зависает на длительное время. 

Дефолтные действия типа перезагрузки IIS/MSSQL и чистки кэша Redis проблему не решают. 

При попытке публиковать отчет через DevExpress получаем, то что в этой теме.

При попытке запустить новый метод в сервисе написанном серверным кодом получаем ошибку "Конечная точка не найдена" или видим следующее при попытке вызвать в строке url:

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

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

Есть идеи? 

Нравится

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

Проверьте права доступа на папку где лежи сайт для IIS_USERS

Проверьте права доступа на папку где лежи сайт для IIS_USERS

Александр Тыра,

Помогло, спасибо. Есть ли гайд по правам доступа где-то, а то не очевидно какой доступ нужно давать?  

Есть инструкция по установке, там говорится в том числе и об этом:

Пользователю, от имени которого в IIS запущен пул приложения, необходимо предоставить права на чтение, запись и удаление файлов и вложенных каталогов для каталога .\Terrasoft.WebApp\Terrasoft.Configuration.

Для включения русского языка необходимо, чтобы пользователю, от имени которого в IIS запущен пул приложения, были предоставлены права на чтение, запись и удаление файлов и вложенных каталогов статического контента приложения (каталог .\Terrasoft.WebApp\conf). 

Ошибка вернулась и при этом проделанные выше действия и игры с правами на папки сайта в IIS не действуют.

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

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

Коллеги, приветствую.

 

Помогите, пожалуйста, с формированием кода запроса.

Я формирую таблицу, в столбец (логического типа) которой подзапросом вывожу 1 или 0 в зависимости от наличия записи в другой таблице: в дополнение к Продаже вывожу столбец, в котором отмечаю была ли эта Продажа на стадии, например, Контрактование.

При этом нужно именно значение 1 или 0.

 

Нашёл 2 решения в виде sql-запроса:

1. select "O"."Id", "O"."Title"

, (select exists(select 1 from "OpportunityInStage" AS "OinS" where "OinS"."OpportunityId" = "O"."Id" and "OinS"."StageId" = 'fb563df2-5ae6-df11-971b-001d60e938c6')) AS "Contracting"

from "Opportunity" AS "O"

2. либо через count(*) делённый сам на себя

1. select "O"."Id", "O"."Title"

, coalesce(select count(*) / count(*) as "cnt" from "OpportunityInStage" AS "OinS" where "OinS"."OpportunityId" = "O"."Id" and "OinS"."StageId" = 'fb563df2-5ae6-df11-971b-001d60e938c6') AS "Contracting"

from "Opportunity" AS "O"

 

Я закодировал подзапрос с одним count таким образом

var stagePresentSubSelect = new Select(userConnection).Count("*").As("cnt")

    .From("OpportunityInStage", "OinS")

    .Where("OinS", "OpportunityId").IsEqual("O", "Id");

 

Подскажите, пожалуйста, как можно добавить в код exists (не в фильтр) или деление count на себя?

Нравится

1 комментарий

У меня на MSSQL ни первый, ни второй запросы не заработали. Что за база у Вас?

Если переписать первый так, результат будет тот же?

select "O"."Id", "O"."Title",
 isnull((select 1 from "OpportunityInStage" AS "OinS" where "OinS"."OpportunityId" = "O"."Id" and "OinS"."StageId" = 'fb563df2-5ae6-df11-971b-001d60e938c6'),0) AS "Contracting"
from "Opportunity" AS "O"

А с IsNull мы уже работать сможем, примерно так:

.Column(Func.IsNull(Column.SubSelect(mySubSelect), Column.Const(0)))

А по второму примеру вообще не не понял, зачем делить само на себя, там же будет либо 1, либо ошибка деления на 0.

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

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

- классификация

- взращивание

- перевод в продажу

- ожидание продажи

- потребность удовлетворяет

- потребность отсутствует

- дисквалифицирован

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

Нравится

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

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

 

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

Или применить нумерацию значений.



Мы зафиксировали данное обращение. И вопрос о возможности добавления кастомной сортировки в данном графике будет максимально детально рассмотрен с перспективой использования в будущих версиях.

 

Через некоторое время планируется новый интерфейс настройки графиков на основе Angular, там будут значительные изменения, в том числе и в возможностях отсортировать серии.

Добрый день.

 

В справочнике названий стадий откорректируйте название стадий - в начале строки добавьте номер стадии, например, '1. Квалификация', '2. Взращивание' и т.д. А потом настройте сортировку по названию.

 

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

Алла Савельева,

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

А то, что Вы хотите построить, не заменяет ли стандартная воронка лидов?

Зверев Александр,

Первоначальная цель построить такой график:

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

 

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

Или применить нумерацию значений.



Мы зафиксировали данное обращение. И вопрос о возможности добавления кастомной сортировки в данном графике будет максимально детально рассмотрен с перспективой использования в будущих версиях.

 

Через некоторое время планируется новый интерфейс настройки графиков на основе Angular, там будут значительные изменения, в том числе и в возможностях отсортировать серии.

LabRus,

 

Учитывая предыдущий ответ, можно попробовать реализовать ещё один вариант - настроить представление с сортировкой в нужном порядке и потом использовать его в качестве источника данных для Вашего графика.

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

Может кто сталкивался с таким.

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

Можно зафильтровать добавив в замещаемом модуле код для атрибута

"Owner": {
	"dataValueType": Terrasoft.DataValueType.LOOKUP,
	"lookupListConfig": {
		filter: function() {
			var filterGroup = Ext.create("Terrasoft.FilterGroup");
			filterGroup.add("IsUser",
				Terrasoft.createColumnIsNotNullFilter("[SysAdminUnit:Contact].Id"));
			filterGroup.add("IsActive",
				Terrasoft.createColumnFilterWithParameter(
					Terrasoft.ComparisonType.EQUAL,
					"[SysAdminUnit:Contact].Active",
					true));
			return filterGroup;
		}
}

В продаже это нормально сработало, но в активностях не как не хочет работать фильтр.

Может кто в курсе почему?

Но вообще было бы не плохо сделать это глобально конечно, что бы ответственных можно было добавить только активных пользователей, но я такого не нашел

Нравится

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

Александр, может, в карточке активности в одном из пакетов есть своя логика на этом поле и она мешает Вашей?

Попробуйте посмотреть, какой запрос идёт в одном и другом случае. Сначала — запрос от браузера к веб-сервису, его можно увидеть в «Инструментах разработчика». Если не поможет понять и сайт развёрнут локально, можно запустить SQL-профайлер и посмотреть запросы уже на уровне базы.

Зверев Александр,

Проверил все наследования - только в ActivityPageV2 в NUI rfgtnt есть логика через атрибут

"Owner": {
	dataValueType: Terrasoft.DataValueType.LOOKUP,
	lookupListConfig: {filter: BaseFiltersGenerateModule.OwnerFilter}
}

и наследование идет от модуля что наследовался от выше указанного в NUI пакете. У себя в замещенном модуле его и заместил

Теперь попробуйте посмотреть запрос. Если Ваш фильтр идёт одновременно с этим и их условия мешают, это должно быть видно.

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

Добрый день, коллеги!

Стоит задача обновить стенд (с этим всё ясно) + сменить продукт с SalesEnterprise на SalesEnterprise_Marketing_ServiceEnterprise.

Попробовал в лоб, вписал в поле "Product" файла downloader.json заданный задачей продукт. Updater.exe выдаёт на такое: "You are using an invalid build type. You need to obtain SalesEnterprise..."

 

Смена продукта "на лету" вообще возможна? Может кто сталкивался? Как решается данный вопрос?

Нравится

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

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

Здравствуйте, Сергей!

Чтобы обновиться на бандл, необходимо и достаточно только установить в конфиге утилиты обновления значение Feature-SkipProductValidation  в true:

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

Подскажите, есть ли возможность заблокировать деталь со страницей редактирования?

По документации есть механизм бокировки "IsModelItemsEnabled", он блокирует поля, убирает кнопки "+" на детали и кнопки "Копировать", "Изменить", "Удалить", но если два раза клацнуть на запись детали то она открывается в странице редактирования и дальше делай что хочешь. Понимаю что можно заблокировать ее прочитав связанную продажу и там уже на основании какого-то признака блокировать, но может есть уже встроенный механизм и велосепед не нужно изобретать

Нравится

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

Зверев Александр пишет:

Тогда механизм прав Вам не поможет, он регулирует доступность вне зависимости от раздела, где на детали видна запись.

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

Мы оставляли возможность открытия по двойному щелчку (а также с помощью "Изменить"), чтобы была возможность увидеть запись на странице детали.

А возможность сохранения регулировали правами на объект или запись

Владимир Соколов,

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

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

Думаю удобнее сделать наследование блокировки как это реализовано для детали с редактируемым реестром но в открывающейся странице (удобно потому что полей много бывает и просто для просмотра надо бы открывать как сейчас реализовано)

Владимир Соколов,

 

И тогда вопрос - доступы раздела можно посмотреть в таблице "Sys + название схемы + Right", а вот где смотреть доступы для деталей? К примеру нужно скопировать все доступы из раздела в деталь, как это можно сделать?

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

Тогда механизм прав Вам не поможет, он регулирует доступность вне зависимости от раздела, где на детали видна запись.

 И тогда вопрос - доступы раздела можно посмотреть в таблице "Sys + название схемы + Right", а вот где смотреть доступы для деталей?

Так же само. 

К примеру нужно скопировать все доступы из раздела в деталь, как это можно сделать?

Если разово, то проще всего написать SQL-запрос. Если постоянно, то выдавать можно БП. Но если хотите завязаться на событие именно выдачи прав в самом объекте, то такого события вроде бы нет, разве что SQL-триггером. 

Зверев Александр пишет:

Тогда механизм прав Вам не поможет, он регулирует доступность вне зависимости от раздела, где на детали видна запись.

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

Спасибо за предложенные варианты. Решил сделать привязку к одному разделу и через бизнеспроцес отбирать права на изменение записи в детали. Благо такая деталь сейчас в доработке только одна. А вообще вопрос думаю интересный и нужно будет подумать. Всем Спасибо

Владимир Соколов пишет:   сделал похоже, но не много по другом. Использовал механизм блокировки всех полей на странице редактирования по условию - запрос в базу данных про этап текущий продажи (а в самих этапах добавил булевую строку с отметкой нужно ли блокировать поля на этапе)

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

Подскажите как динамически делать пункт меню в "Действие" карточки в совмещенном режиме.

В обычном режиме все работает нормально.

attributes: {
	"IsCanVisaStatus": {
		dataValueType: Terrasoft.DataValueType.BOOLEAN,
		value: true,  // Значение по умолчанию которое передаеться при загрузке страницы на нашу кнопку
		dependencies: [{
			columns: ["KtState"], // Отслеживаем изменение поля состояния 
			methodName: "setCanVisaStatusContract" // и запускаем нашу функция если состояние изменчется
		}]
	}
},
methods: {
	onEntityInitialized: function() {
		this.callParent(arguments);
		this.setCanVisaStatusContract(); // Запускаем функцию при входе на страницу когда поля уже заполненны
	},
	getActions: function() {
		var actionMenuItems = this.callParent(arguments);
		actionMenuItems.addItem(this.getButtonMenuItem({
			Type: "Terrasoft.MenuSeparator",
			Caption: ""
		}));
		actionMenuItems.addItem(this.getButtonMenuItem({
			"Caption": VisaHelper.resources.localizableStrings.SendToVisaCaption,
			"Tag": VisaHelper.SendToVisaMenuItem.methodName,
			"Enabled": {"bindTo": "IsCanVisaStatus"} // мониторим через привязку состояние значения атрибута
		}));
		return actionMenuItems;
	},
	setCanVisaStatusContract: function(){
		var stateId = this.get("KtState").value; // Текущая стадия
		var esq = this.Ext.create("Terrasoft.EntitySchemaQuery", {  // Запрос к базе данных о том нужна ли кнопка отправки на визирования
			rootSchemaName: "KtContractKarTelState"
		});
		esq.addColumn("KtCanVisa", "KtCanVisa"); // Сама колонка указывающая что нужна кнопка
		esq.getEntity(stateId, function(result) {
			if (result.success) {
				if (result.entity.get("KtCanVisa") && this.canEntityBeOperated()) {   // this.canEntityBeOperated() - стандартный класс отвечает за то что если карточка на в режиме редактирования то false.
					this.set("IsCanVisaStatus", true);
				} else {									// Присваивает атрибуту значение true или false в зависимости от результата запроса
					this.set("IsCanVisaStatus", false);
				}
 
			}
		}, this);
	}
}

В отоге весь код работает хорошо но только в обычном режиме карточки, а совмещенном кнопка не видет атрибут хоть по девагу все запускается так же и значения поля в атрибуте меняется по кнопка просто его не видит. Пробовал атрибут вписать в Section - не помогло, атрибут видит кнопка но изменить его не получается.

Нравится

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

Нужно использовать механизм сообщений. Вот пример. Моем случае бинд был на аттрибут (в странице редакирования) "Enabled": {"bindTo": "enabledPlanPaymentDate"}

В секции пишем

		messages: {
			"GetEnabledPlanPaymentDate": {
				mode: Terrasoft.MessageMode.PTP,
				direction: Terrasoft.MessageDirectionType.SUBSCRIBE
			}
		},
		attributes: {
			"enabledPlanPaymentDate": {
				"type": this.Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
				"dataValueType": this.Terrasoft.DataValueType.BOOLEAN,
				"value": false
			}
		},
		methods: {
			init:function() {
				this.callParent(arguments);
				this.sandbox.subscribe("GetEnabledPlanPaymentDate",  function(args){this.$enabledPlanPaymentDate = args}, this, ["SectionModuleV2_InvoiceSectionV2"]);
			},
		}

В странице реадактирования:

		messages: {
			"GetEnabledPlanPaymentDate": {
				mode: Terrasoft.MessageMode.PTP,
				direction: Terrasoft.MessageDirectionType.PUBLISH
			}
		},
 
		methods: {
			onEntityInitialized: function() {
				this.callParent(arguments);
				this.sandbox.publish("GetEnabledPlanPaymentDate", this.checkEnabledChangePlanPaymentDate(), ["SectionModuleV2_InvoiceSectionV2"]);
			},
			checkEnabledChangePlanPaymentDate: function() {
				return this.$enabledPlanPaymentDate;
			}
}

 

Нужно использовать механизм сообщений. Вот пример. Моем случае бинд был на аттрибут (в странице редакирования) "Enabled": {"bindTo": "enabledPlanPaymentDate"}

В секции пишем

		messages: {
			"GetEnabledPlanPaymentDate": {
				mode: Terrasoft.MessageMode.PTP,
				direction: Terrasoft.MessageDirectionType.SUBSCRIBE
			}
		},
		attributes: {
			"enabledPlanPaymentDate": {
				"type": this.Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
				"dataValueType": this.Terrasoft.DataValueType.BOOLEAN,
				"value": false
			}
		},
		methods: {
			init:function() {
				this.callParent(arguments);
				this.sandbox.subscribe("GetEnabledPlanPaymentDate",  function(args){this.$enabledPlanPaymentDate = args}, this, ["SectionModuleV2_InvoiceSectionV2"]);
			},
		}

В странице реадактирования:

		messages: {
			"GetEnabledPlanPaymentDate": {
				mode: Terrasoft.MessageMode.PTP,
				direction: Terrasoft.MessageDirectionType.PUBLISH
			}
		},
 
		methods: {
			onEntityInitialized: function() {
				this.callParent(arguments);
				this.sandbox.publish("GetEnabledPlanPaymentDate", this.checkEnabledChangePlanPaymentDate(), ["SectionModuleV2_InvoiceSectionV2"]);
			},
			checkEnabledChangePlanPaymentDate: function() {
				return this.$enabledPlanPaymentDate;
			}
}

 

Трефилов Павел Сергеевич,

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

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