Добавление поля в карточку редактирования "Проект"

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

Судя по всему раздел "Проекты" не такой простой как кажется. Мне нужно добавить поля в карточку редактирования, но при добавления поля у меня уже возникла ошибка. Может я что-то не учла, в этом разделе, подскажите пожалуйста.
Значит мне нужно создать такие поля как:
1. Инициатор проекта (Справочник) ProjectProponent
2. Куратор проекта (Справочник) CuratorProject
3. Номер проекта (Number) NumberProject
4. Руководитель проекта (Справочник) ProjectManager
5. Исполнитель (Справочник) PerformerFIO
6. Версия плана проекта (Number) Version
7. Отдел (Справочник) Section
8. Департамент (Справочник) Department

Начала с простого, создания поля NumberProject.
1 Шаг. В tbl_Project, добавила Поле: Название NumberProject, Тип данных: Целое число
2 Шаг. В sq_Project, добавила Основную колонку "General Column" Поле tbl_Project.NumberProject AS NumberProject. Union All, добавила Основную колонку "General Column" Поле tbl_Project2.NumberProject AS NumberProject.
3 Шаг. ds_Project, добавила Целочисленное поле, Колонка: NumberProject, Заголовок NumberProject
4 Шаг. wnd_ProjectEdit, добавила поле IntegerDataControl, в свойствах DataFieldName -NumberProject

Но при проверке, возникает ошибка "Ошибка выполнения метода 'wnd_ProjectEditOnPrepare'. Dataset not in edit or insert mode"

В коде

// wnd_ProjectEditScript

var ProjectEdit = new Object();

function Initialize(Window) {
        ProjectEdit.EnableChangeName = true;
        var Dataset = dlData.Dataset;
        var HasChilds = Dataset.ValAsBool('HasChilds');
        ProjectEdit.LockedByID = Dataset.Values('LockedByID');
        ProjectEdit.LockedState = GetProjectLockedState(ProjectEdit.LockedByID);
        var IsNewRecord = (Dataset.State == dstInsert);
        ProjectEdit.IsNewRecord = IsNewRecord;
        if (HasChilds || IsNewRecord) {
                Dataset.DisableEvents();                                                
                Dataset.Values('CalcActualValues') = true;
                Dataset.EnableEvents();
        }
        var ExecutorTeamRoleID = Dataset.Values('ExecutorTeamRoleID');
        if (IsEmptyValue(ExecutorTeamRoleID)) {
                Dataset.DisableEvents();
                Dataset.Values('ExecutorCalcActualManHour') = true; //Тут возникает ошибка
                Dataset.EnableEvents();

Спасибо заранее, за помощь!

Нравится

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

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

"Гакало Игорь Александрович" написал:

Добрый день!

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

Спасибо попробую.

Здравствуйте!
Возник немного другой вопрос, но в разделе "Проекта". Вот необходимо в реестре проектов, отобразить в цветом решении состояния проекта. Но надо, чтобы отображалась цветовое решение, только в "Проектах", а не в "Работах" и в "Стадиях".
Так как поля одинаковые в "Работах" и в "Стадиях", накладывая условия на параметры, например на поле "Состояние", накладывается условия и на "Работу" и на "Стадию". А мне необходимо, чтобы условия накладывались только на "Проект".
Вот пример в коде:

if (Dataset ('ResourcesExpended') <= Dataset('Budget')){
	Color.Value = clRed;     
	TextColor.Value=clBlack; 
	}

Тут я сравниваю два покателя и если условия выполняются, то закрашивается в красный цвет, по всем работам, стадиям, проектам.
Подскажите пожалуйста, как это можно сделать цевтовое отображение только по "Проектам"?

Добрый день!
Вам необходимо отталкиваться от значения ParentID в датасете проектов. Если оно равно NULL, то запись корневая, то есть является проектом.

"Гакало Игорь Александрович" написал:

Добрый день!

Вам необходимо отталкиваться от значения ParentID в датасете проектов. Если оно равно NULL, то запись корневая, то есть является проектом.


Спасибо, помогло:)

Здравствуйте, уважаемые коллеги!

Возник еще один вопрос по разделу "Проекты". Возникла необходимость создать поле (тип поля справочник) в разделе "Проекты", но поле необходимо создать, только для карточки редактирования "Работа Проект". Но при создания поля создаётся и в карточках редактирования "Проект" и "Стадию". Я попыталась это решить с помощью запроса (sq_Project) в Администраторе, но ничего не вышло. Может вы меня наведете на путь истинный:)

Благодарю заранее!

Добрый день!

Воспользуйтесь базовым функционалом пользовательских полей.

Файл - Настройки - Пользовательские поля. Добавьте поле в таблицу "Проект", затем укажите типы для проекта.

Да поле я таким образом и создала. Но при определения типа, поле все таки отображается на всех 3х карточках. Скидываю вам скрин.

Добрый день!

Валентина, необходимо, чтобы для выбранных типов было значение по умолчанию для одной записи. У Вас для всех трех установлено "Нет".

Здравствуйте!
У меня возник вопрос в следствии работы с вычисляемыми полями.
В карточке редактирования "Прокты" в закладке финансы. Я создала два поля "Плановый доход" и "Процент планового дохода". Поле "Плановый доход" расчитывается так как нужно и сохраняет значение после того как расчет был совершен. А вот поле "Процент планового дохода" расчитывается так как нужно, но результат после расчета в самой карточке редактирования не сохраняет, после того как закрывается карточка "Проект". Что я уже только не делала. Подскажите пожалуйста в чем может быть причина.
Опишу подробно как я создала это поле.

В ds_Project добавила "Вычисляемое поле" - EstimatedYieldPercent.
В wnd_ProjectEdit добавила NumericEdit - edtEstimatedYieldPercent (Свойства - IsReadOnly - True)
В скрипте ds_ProjectScript

	function CalculateFinanceFields(Dataset) {
........
Dataset.Values('EstimatedYieldPercent') = GetPercentDeviation(EstimatedYield, EstimatedBudget);
.....
if (EstimatedYield !=0) {       //new
		Dataset.Values('EstimatedYieldPercent') =
			100 * EstimatedYield / EstimatedBudget;
	} else {
		Dataset.Values('EstimatedYieldPercent') = 0;
	}
}
function ds_ProjectOnDatasetCalcFields(Dataset) {
...
DataFields('EstimatedYieldPercent').IsEnabled ||
...

В wnd_ProjectGridAreaScript

function CheckProjectRequiredDataFieldsAreEnabled(Dataset) {
....
DataFields('EstimatedYieldPercent').IsEnabled; // new
...
}

В wnd_ProjectEditScript

function ClearFinanceControls() {
	edtEstimatedYieldPercent.Value = 0;
}
function FillFinanceControls(Dataset) {
	edtEstimatedYieldPercent.Value = Dataset.ValAsFloat('EstimatedYieldPercent'); 
}

Добрый день!

Данные и не должны сохраняться.

Для решения попробуйте проводить расчет при открытии карточки (к примеру, на событии OnPrepare или OnShow) либо создайте полноценное поле.

Я решила, может у нас в системе были внесены доработки по сохранению значений расчитываемых в закладке "Финансы". И решила предварительно посмотреть в демо версии. И там тоже сохраняются данные, которые были расчитаны. Как и у нас.
Может я не правильно выразилась. Мне необходимо новое поле "Процент планового дохода" EstimatedYieldPercent чтобы себя вело как и другие поля, которые расчитывают процент. Кодово я изменила все в точности как созданы другие поля отражающие процент, в карточке редактирования "Проект" в закладке "Финансы". Что может повлиять на то что значение не сохраняется?

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

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