Встановлення статусів стану окремих елементів конструкцій усередині замовлення
Перейти до навігації
Перейти до пошуку
Усередині замовлення кожному елементу конструкції - так само як і всьому замовленню - може бути прописано певний стан.
Приклад встановлення етапу виконання для окремого елемента конструкції (або для всіх елементів конструкції) наведено нижче.
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.