Добрый день.
Если в датасете ds_Opportunity снять галочку "Для отображения" на нужной колонке,
то мы эту колонку не увидим, когда откроем датасет.
Я пытаюсь сделать так:
Dataset.Datafields.ItemsByName('Title').IsDisplayField= false;
}
Как я понял это должно быть равносильно снятию галочки. Но колонка не пропадает. Что я делаю не так?
Нравится
Галка "Для отображения" в датасете означает, что когда открывается окно выбора из справочника, и в качестве источника установлен этот датасет - в гриде выбора автоматически будет сгенерирована колонка.
Но при просмотре списка продаж (wnd_OpportunityGridArea) колонки сгенерированы в этом окне, и от галочки не зависят. Вам надо в сервисе wnd_OpportunityGridArea у компонента dlData указать событие OnDatasetBeforeOpen, в котором скрыть колонку кодом типа:
colTItle.IsVisible = false;
где colTItle - имя колонки в гриде.
Выставил везде IsVisible = false, и все равно все вижу... наверное где-то, кто-то что-то раньше прописал, что сейчас придется искать и исправлять.
Отображение пропадает, только если галку в датасете снимать. Может это можно как то кодом сделать? Не снимая руками
function dlDataOnDatasetBeforeOpen(Dataset) { debugger; }
Когда открываю раздел "Проекты", дебаг не срабатывает. Значит скрипт не выполняется.
Я как понял надо на OnPrepare вешать перед инициализацией окна.
function wnd_BaseGridAreaOnPrepare(Window) { // debugger; ShowInformationDialog('Hello'); colTitledgvData.IsVisible = false; Initialize(Window); }
Делаю так, но колонка все равно не пропадает. Беда... Так же пробовал после инициализации, та же ерунда...
function wnd_BaseGridAreaOnPrepare(Window) { // debugger; Initialize(Window); Window.ComponentsByName('colTitledgvData').IsVisible = false; }
Так тоже не катит
Дебагер показывает, что значение false. А в террасофте столбец все равно виден
Какая у вас версия?
Я попробовал в базовой конфигурации 3.3.2, добавил в скрипт wnd_OpportunitiesGridAreaScript одну строчку - все нормально, колонка прячется при открытии раздела Продажи:
function wnd_BaseGridAreaOnPrepare(Window) { Initialize(Window); colTitle.IsVisible = false; }
Здрававствуйте Олег,
С руководства Администратора, по поводу опции [Поле для отображения]:
"Если установить опцию [Поле для отображения], то это поле появится
среди колонок справочника в случае, если реестр, в котором содержится
поле, используется в качестве справочника для другого реестра в продукте
Terrasoft."
Страница 55, Руководства Terrasoft Administrator (версия Terrasoft CRM X25 + ServiceDesk, TSAdmin_UG_3.3.0)
"Зголич Олег Александрович" написал:Если в датасете ds_Opportunity снять галочку "Для отображения" на нужной колонке,
то мы эту колонку не увидим, когда откроем датасет.
Олег, насколько я понимаю, изменение данного свойства поля в датасете не решит поставленную вами задачу.
Может я вас не до конца понял, но подобный вопроос обсужадлся в теме http://www.community.terrasoft.ru/forum/topic/6730
Проверял на версии CRM 3.0.4.112
Задача: Скрыть колонку "Индекс" в DataGridView контрагентов
Получил следующие результаты:
Полный код окна :
function wnd_BaseGridAreaOnPrepare(Window) { var Dataset = Window.ComponentsByName('dlData').Dataset; Window.ComponentsByName('colZIPDataGridView').IsVisible = false; Dataset.Open(); } function Main() { var Window = Services.GetNewItemByUSI('Window'); Window.IsDesigning = false; Window.Prepare(); Window.Show(); }
Также прикрепляю сервисы.
Спасибо за советы. Значит беда где-то поглубже находится. Не знаю почему, но даже если скрыть все столбцы вручную, они все равно видны.
Скорее всего где-то профиль грузится после того, как я висибл фолс делаю. Буду искать через дебаг.
Может быть подскажете в каком скрипте грузится профиль пользователя?
Олег,
Загрузите, пожалуйста, сервисы, которые я прикрепил к предыдущему посту (hide_srv_304112.rar). Воспроизводится ли проблема на моих сервисах?
Я просто понял в чем собственно проблема. После того, как я почистил профиль пользователя, колонки отобразились как следует. Получается, что профиль грузится в самом конце и по этому я не вижу результата.