Setting the statuses of individual construction elements within an order
Go to navigation
Go to search
Внутри заказа каждому элементу конструкции - так же как и всему заказу - может быть прописано определенное состояние.
Пример установки этапа выполнения для отдельного элемента конструкции (или для всех элементов конструкции) приведен ниже.
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.