Установка статусов состояния отдельных элементов конструкций внутри заказа
Перейти к навигации
Перейти к поиску
Внутри заказа каждому элементу конструкции - так же как и всему заказу - может быть прописано определенное состояние.
Пример установки этапа выполнения для отдельного элемента конструкции (или для всех элементов конструкции) приведен ниже.
uses SysUtils;
procedure Set_Elem_State(zk_id, izd_id, okpi_num, state, value: integer);
// устанавливает состояние одному или всем элементам внутри конструкции указанного заказа
// zk_id - идентификатор заказа
// izd_id - идентификатор изделия
// okpi_num - номер элемента изделия (нумерация начинается с 0) для устанвки всем элементам следует передать -1
// state - номер этапа (1..16 - соответствуют номерам в списке)
// value - состояние (0 - не установлен, 1 - нужен, 2 - в работе, 3 - выполнен)
var
zk: TZakaz; // объект заказа
izd: TIzdTyp; // объект конструкции
okpi: TOneKonProcessItem; // объект изделия внутри конструкции
i, j: integer; // счетчики
flag: boolean; // флаг необходимости сохранения внесенных изменений
begin
flag := false; // изменений не было
zk := gd.Zakazes.Items.GetById(zk_id); // получаем объект заказа по идентификатору
if assigned(zk) then // если заказ найден
begin
gd.Zakazes.ReloadNew2(zk, true);
// загружаем заказ полностью из базы (во избежание потери некоторых данных из него)
izd := zk.Izd.Items.GetById(izd_id); // получаем объект конструкции
if assigned(izd) then // если конструкция получена
begin
if (okpi_num = -1) then // блок установки состояния для всех элементов конструкции
begin
for j:=0 to (izd.OneKonProcessItems.Count - 1) do // идем по всем изделиям определенной конструкции
begin
okpi := izd.OneKonProcessItems.GetByNum(j); // получаем информацию об изделии
okpi.KonState.SetStateById(state, value); // устанавливаем требуемое состояние
flag := true; // произошли изменения
end;
end
if (okpi_num > -1) then // блок установки состояния одному элементу конструкции
begin
okpi := izd.OneKonProcessItems.GetByNum(okpi_num); // получаем информацию об изделии
if assigned(okpi) then
begin
okpi.KonState.SetStateById(state, value); // устанавливаем требуемое состояние
flag := true; // внесены изменения
end else
ShowMessage('Элемент конструкции не найден');
end
end else
ShowMessage('Конструкция не найдена'); // сообщаем о проблеме;
if flag then // если были внесены изменения
begin
gd.Zakazes.Items.Update(zk); // сохраним их в базу
ShowMessage('Работа успешно завершена'); // сообщаем о положительном результате
end;
end else
ShowMessage('Заказ не найден'); // сообщаем о проблеме
end;
begin
Set_Elem_State(61271, 2, -1, 6, 1);
end.