1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
| unit uImportForm;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, ComCtrls, CommCtrl, IniFiles, CheckLst, DateUtils, DB, ADODB;
type
TImportForm = class(TForm)
cbListFiles: TComboBox;
lbListFiles: TLabel;
lbPathFiles: TLabel;
btnImport: TButton;
btnCancel: TButton;
btnRepErr: TButton;
pnlRepImp: TPanel;
lblEdtInpZap: TLabeledEdit;
LabeledEdit1: TLabeledEdit;
lblNumErrZap: TLabeledEdit;
pnlIndicImp: TPanel;
ProgressBarInp: TProgressBar;
ProgressBarOut: TProgressBar;
ProgressBarErr: TProgressBar;
ChlbPathFiles: TCheckListBox;
ListBoxKey: TListBox;
DateTimePickerImport: TDateTimePicker;
lblDatTimeImport: TLabel;
StatusBar1: TStatusBar;
procedure ChlbPathFilesClickCheck(Sender: TObject);
procedure btnImportClick(Sender: TObject);
procedure cbListFilesSelect(Sender: TObject);
procedure btnCancelClick(Sender: TObject);
procedure FormActivate(Sender: TObject);
//function GetAfter(substr, str:string):string;
private
{ Private declarations }
public
{ Public declarations }
end;
var
ImportForm: TImportForm;
Ini: TIniFile;
ExistProc: Boolean; // переменная для проверки наличия процедуры загрузки
// файлов по ключу из Ini-файла
Path_File: string;
Name_File: string;
Name_File_Ext: string;
F_DBF : File; // Файловая переменная нетипизированного файла
Full_Name_DBF : string; //полное имя файла DBF
DBF_Fields_Perv : array[1..17] of string;
function GetAfter(substr, str:string):string;
procedure ZagPERV;
procedure ZagSOST;
procedure ZagTRUD;
implementation
uses DAFLOWLINE, uMainForm;
{$R *.dfm}
function GetAfter(substr, str:string):string;
begin
if pos(substr,str)>0 then
result:=copy(str,pos(substr,str)+length(substr),length(str))
else
result:='';
end;
procedure TImportForm.btnCancelClick(Sender: TObject);
begin
Close;
end;
procedure TImportForm.btnImportClick(Sender: TObject);
var
i: integer;
begin //запуск процедуры импорта файлов
for i := 0 to ChlbPathFiles.Items.Count - 1 do
begin
if ChlbPathFiles.Checked[i] then
begin
// проверка существования выбранного файла
Name_File := ExtractFileName(ChlbPathFiles.Items[i]);
Path_File := ExtractFilePath(ChlbPathFiles.Items[i]);
// проверка расширения файла в Name_File на DBF
Name_File_Ext := ExtractFileExt(Name_File);
if (Name_File_Ext <> '.DBF') then
begin
ShowMessage('Файл '+ Name_File + ' не имеет расширения DBF');
ChlbPathFiles.Checked[i] := False;
Exit; // переход на начало цикла для выбора следующего файла
end;
// проверка существования файла DBF по указанному пути
if FileSearch(Name_File, Path_File) = '' then
begin
ShowMessage('Файла ' + Name_File + ' в директории ' + Path_File + ' не существует');
ChlbPathFiles.Checked[i] := False;
Exit; // переход на начало цикла для выбора следующего файла
end;
// запись пути и имени импортируемого файла в ADODataSetDBF
Full_Name_DBF := ChlbPathFiles.Items[i];
DataModuleFlow.ADODataSetDBF.Active := False;
DataModuleFlow.ADODataSetDBF.CommandText := UpperCase(copy(Name_File, 1, Length(Name_File)-4)); // без расширения .DBF
DataModuleFlow.ADODataSetDBF.ConnectionString := ConnStr1+copy(Path_File, 1, Length(Path_File)-1);
// проверка соединения с ADOCOnnectionDBF
try
DataModuleFlow.ADODataSetDBF.Active := True;
ChlbPathFiles.Checked[i] := False;
// формирование имени вызываемой процедуры для импорта файлов раздела
// имя формируется из Zag + имя ключа раздела Ini файла
ExistProc := False;
if ListBoxKey.Items[i] = 'PERV' then
begin
ExistProc := True;
ZagPERV;
end;
if ListBoxKey.Items[i] = 'SOST' then
begin
ExistProc := True;
ZagSOST;
end;
if ListBoxKey.Items[i] = 'TRUD' then
begin
ExistProc := True;
ZagTRUD;
end;
if ExistProc = False then
begin
ShowMessage('В Ini файле неверный ключ ' + ListBoxKey.Items[i] +
' либо отсутствует процедура обработки данного ключа');
Exit;
end;
except
ShowMessage('Ошибка открытия файла ' + Full_Name_DBF);
ChlbPathFiles.Checked[i] := False;
// переход на выбор следующего файла из списка
end;
end;
end;
btnImport.Enabled := False;
end;
procedure TImportForm.cbListFilesSelect(Sender: TObject);
var
i: integer;
begin
Ini := TIniFile.Create(ExtractFilePath(ParamStr(0))+'PDB.INI');
if not Ini.SectionExists(cbListFiles.Text) then
begin
ShowMessage('В файле параметров PDB.INI раздела ['+ cbListFiles.Text + '] не существует');
ChlbPathFiles.Clear;
Exit;
end
else
begin
Ini.ReadSectionValues(cbListFiles.Text, ChlbPathFiles.Items);
for i := 0 to ChlbPathFiles.Items.Count - 1 do
begin
ChlbPathFiles.Items[i] := GetAfter('=', ChlbPathFiles.Items[i]);
ChlbPathFiles.Checked[i] := True;
end;
ChlbPathFiles.ItemIndex := 0;
if ChlbPathFiles.Items.Count > 0 then
btnImport.Enabled := True
else
btnImport.Enabled := False;
end;
end;
procedure TImportForm.ChlbPathFilesClickCheck(Sender: TObject);
var
i: integer;
AllCheck: boolean;
begin //проверка установки переключателей импортирования файлов
i := ChlbPathFiles.ItemIndex;
if ChlbPathFiles.Checked[i] then
btnImport.Enabled := True
else
begin
AllCheck := False;
for i := 0 to ChlbPathFiles.Items.Count - 1 do
begin
if ChlbPathFiles.Checked[i] then
AllCheck := True;
end;
if AllCheck = True then
btnImport.Enabled := True
else
btnImport.Enabled := False;
end;
end;
procedure TImportForm.FormActivate(Sender: TObject);
var
i: integer;
begin
btnImport.Enabled := False;
Ini := TIniFile.Create(ExtractFilePath(ParamStr(0))+'PDB.INI');
try
if not Ini.SectionExists('импорт файлов DBF') then
begin
ShowMessage('В файле параметров PDB.INI раздела [импорт файлов DBF] не существует');
Exit;
end
else
begin
Ini.ReadSectionValues('импорт файлов DBF', cbListFiles.Items);
Ini.ReadSection('импорт файлов DBF', ListBoxKey.Items);
for i := 0 to cbListFiles.Items.Count - 1 do
begin
cbListFiles.Items[i] := GetAfter('=', cbListFiles.Items[i]);
end;
cbListFiles.ItemIndex := 0;
ListBoxKey.ItemIndex := 0;
end;
finally
Ini.Free;
end;
CEH_IZG := '160';
// присвоение имен полей файла DBF в массиве
DBF_Fields_Perv[1] := 'CEXI';
DBF_Fields_Perv[2] := 'UCH';
DBF_Fields_Perv[3] := 'CEXP';
DBF_Fields_Perv[4] := 'ZAK';
DBF_Fields_Perv[5] := 'DET';
DBF_Fields_Perv[6] := 'POZ';
DBF_Fields_Perv[7] := 'NOM';
DBF_Fields_Perv[8] := 'SDANM';
DBF_Fields_Perv[9] := 'SDAND';
DBF_Fields_Perv[10] := 'PRIM';
DBF_Fields_Perv[11] := 'ZIKL';
DBF_Fields_Perv[12] := 'TREBS';
DBF_Fields_Perv[13] := 'DATS';
DBF_Fields_Perv[14] := 'DATM';
DBF_Fields_Perv[15] := 'NK';
DBF_Fields_Perv[16] := 'SERT';
DBF_Fields_Perv[17] := 'NAIM';
end;
procedure ZagPERV;
label
Step3;
type
TZag = record // Начало заголовка DBF файла
Memo : byte;
Date : array[0..2] of byte;
RecCount : integer; // количество записей с учетом удаленных
SizeZag : word; //Длина заголовка DBF
SizeRec : word; // Длина записи включая признак удаления
end;
var
Zag : TZag; // Структура части заголовка DBF
Size_File : integer; // размер всего файла
dbf_date : array [1..3] of string [4]; // расчетная дата Первоочередных
full_dbf_date : string [10]; // полная расчетная дата Первоочередных
i, j, kol_left_poz_bez_cifr, sizeKOD_DET: Integer;
Gruppa_N_Id, Id_Prizn_Izg, Id_Ed_Izm, Id_KEI : Integer;
begin
AssignFile(F_DBF, Full_Name_DBF);
Reset(F_DBF, 1);
Size_File := FileSize(F_DBF);
BlockRead(F_DBF, Zag, SizeOf(Zag)); // читаем часть заголовка
if Zag.RecCount = 0 then
begin
ShowMessage('файл Первоочередных ' + Name_File + 'пустой');
Exit; // выход из процедуры загрузки Первоочередных
end;
if (Zag.SizeZag + Zag.RecCount * Zag.SizeRec + 1 <> Size_File) then
begin
ShowMessage('Структура ' + Name_File + 'не соответствует DBF');
Exit;
end;
ImportForm.DateTimePickerImport.Enabled := False; // замораживаем дату на момент импорта
// проверка даты файла DBF и наличия данных с такой датой в SQL
DataModuleFlow.ADODataSetDBF.First;
if (DataModuleFlow.ADODataSetDBF.FindField('DATS') = nil) or
(DataModuleFlow.ADODataSetDBF.FindField('DATM') = nil) then
begin
ShowMessage('В файле Первоочередных нет полей DATS и/или DATM' + #13 +
'Обратитесь к Администратору');
Exit;
end;
dbf_date[1] := IntToStr(DataModuleFlow.ADODataSetDBF.FieldValues['DATS']);
dbf_date[2] := IntToStr(DataModuleFlow.ADODataSetDBF.FieldValues['DATM']);
dbf_date[3] := IntToStr(YearOf(Today()));
full_dbf_date := dbf_date[1]+'.'+dbf_date[2]+'.'+dbf_date[3];
// открытие таблицы Первоочередные - Обеспеченность c проверкой на дату DBF
DAFLOWLINE.DataModuleFlow.ADODataSetPervObes.Active := False;
DAFLOWLINE.DataModuleFlow.ADODataSetPervObes.CommandText := 'Select * from PervObes';
try
DAFLOWLINE.DataModuleFlow.ADODataSetPervObes.Active := True;
except
ShowMessage('Ошибка доступа к Серверу для таблицы Первоочередных');
Exit;
end;
DataModuleFlow.ADODataSetPervObes.First;
if DAFLOWLINE.DataModuleFlow.ADODataSetPervObes.Locate('Data_Perv', StrToDate(full_dbf_date), []) then
// в Первоочередных уже есть данные с такой датой
if MessageDlg('в Первоочередных уже есть данные с такой датой.' + #13#10 +
'Импорт новых данных уничтожит старые. Уничтожить - Нажмите Ok?', mtConfirmation, [mbOk, mbCancel], 0) = mrCancel
then Exit
else
begin // удаляем из PervObes данные на дату из DBF
ImportForm.StatusBar1.Panels[0].Text := 'Step0 - удаление записей из Первоочередных с датой из DBF';
DAFLOWLINE.DataModuleFlow.ADODataSetPervObes.Active := False;
DAFLOWLINE.DataModuleFlow.ADODataSetPervObes.Parameters.CreateParameter('par1', ftDate, pdInput, 10, Null);
DAFLOWLINE.DataModuleFlow.ADODataSetPervObes.Parameters.ParamValues['par1'] := StrToDate(full_dbf_date);
DAFLOWLINE.DataModuleFlow.ADODataSetPervObes.CommandText := 'Select * from PervObes where (Data_Perv = :par1)';
DAFLOWLINE.DataModuleFlow.ADODataSetPervObes.Active := True;
With DAFLOWLINE.DataModuleFlow do
while not ADODataSetPervObes.Eof do
begin
ADODataSetPervObes.Delete;
ADODataSetPervObes.Next;
end;
ShowMessage('Удаление прошло успешно');
end;
// проверка наличия и структуры необходимых полей файла Первоочередных DBF
DAFLOWLINE.DataModuleFlow.ADODataSetPervObes.Active := False;
DAFLOWLINE.DataModuleFlow.ADODataSetPervObes.CommandText := 'Select * from PervObes';
DAFLOWLINE.DataModuleFlow.ADODataSetPervObes.Active := True;
for i := 1 to 17 do
if (DataModuleFlow.ADODataSetDBF.FindField(DBF_Fields_Perv[i]) = nil) then
begin
ShowMessage('В файле DBF-Первоочередных нет поля с именем' + #13 +
DBF_Fields_Perv[i]+' Обратитесь к Администратору');
Exit;
end;
// заносим данные из DBF в PervObes с одновременным формированием номенклатуры
//если ее нет в файле Nomenkl
// Step1. заносим запись из DBF в PervObes полностью все записи
sizeKOD_DET := 13;
ImportForm.StatusBar1.Panels[0].Text := 'Step1 - Формирование файла Первоочередных из DBF-файла';
// Set bar color ProgressBarOut to yellow
SendMessage(ImportForm.ProgressBarOut.Handle, PBM_SETBARCOLOR, 0, clYellow);
With DAFLOWLINE.DataModuleFlow do
for i := 1 to ADODataSetDBF.RecordCount do
begin
ADODataSetPervObes.Append;
ADODataSetPervObes.FieldValues['CEH_OTPR'] := ADODataSetDBF.FieldValues['CEXI'];
ADODataSetPervObes.FieldValues['UCH_OTPR'] := ADODataSetDBF.FieldValues['UCH'];
ADODataSetPervObes.FieldValues['CEX_POLUCH'] := ADODataSetDBF.FieldValues['CEXP'];
ADODataSetPervObes.FieldValues['Zakaz'] := ADODataSetDBF.FieldValues['ZAK'];
ADODataSetPervObes.FieldValues['KOD_DET'] := ADODataSetDBF.FieldValues['DET'];
if Length(TrimRight(ADODataSetPervObes.FieldValues['KOD_DET'])) < sizeKOD_DET then
begin
kol_left_poz_bez_cifr := sizeKOD_DET - Length(TrimLeft(ADODataSetPervObes.FieldValues['KOD_DET']));
for j := 1 to kol_left_poz_bez_cifr do
ADODataSetPervObes.FieldValues['KOD_DET'] := '0' + ADODataSetPervObes.FieldValues['KOD_DET'];
end;
ADODataSetPervObes.FieldValues['CHERT_N_DET'] := ADODataSetDBF.FieldValues['SERT'];
ADODataSetPervObes.FieldValues['NAIM_DET'] := ADODataSetDBF.FieldValues['NAIM'];
ADODataSetPervObes.FieldValues['PozKonv'] := ADODataSetDBF.FieldValues['POZ'];
ADODataSetPervObes.FieldValues['NomObesp'] := ADODataSetDBF.FieldValues['NOM'];
ADODataSetPervObes.FieldValues['SdanMes'] := ADODataSetDBF.FieldValues['SDANM'];
ADODataSetPervObes.FieldValues['SdanDay'] := ADODataSetDBF.FieldValues['SDAND'];
ADODataSetPervObes.FieldValues['Prim'] := ADODataSetDBF.FieldValues['PRIM'];
ADODataSetPervObes.FieldValues['zikl'] := ADODataSetDBF.FieldValues['ZIKL'];
ADODataSetPervObes.FieldValues['TrebSdat'] := ADODataSetDBF.FieldValues['TREBS'];
ADODataSetPervObes.FieldValues['nk'] := ADODataSetDBF.FieldValues['NK'];
ADODataSetPervObes.FieldValues['Data_Perv'] := StrToDate(full_dbf_date);
ADODataSetPervObes.Post;
ImportForm.ProgressBarInp.Position := Round(i / (ADODataSetDBF.RecordCount / 100));
ImportForm.ProgressBarOut.Position := Round(i / (ADODataSetDBF.RecordCount / 100));
ADODataSetDBF.Next;
end;
ImportForm.ProgressBarInp.Position := 0;
ImportForm.ProgressBarOut.Position := 0;
// Step2. Корректировка файла номенклатуры NOMENKL_PF данными из PERVOBES
ImportForm.StatusBar1.Panels[0].Text := 'Step2 - Корректировка файла Номенклатуры по Обеспеченности';
// Выбор из Первоочередных заказов, которых нет в номенклатуре
DAFLOWLINE.DataModuleFlow.ADODataSetPervObes.Active := False;
DAFLOWLINE.DataModuleFlow.ADODataSetPervObes.CommandText := 'Select distinct Zakaz from PervObes ' +
'where (Zakaz NOT IN (Select distinct KOD_DET from NOMENKL_PF, SPRAV_GRUPPA_NOMENKL ' +
'where KOD_GR_NOM = ''заказ''))';
DAFLOWLINE.DataModuleFlow.ADODataSetPervObes.Active := True;
if DAFLOWLINE.DataModuleFlow.ADODataSetPervObes.IsEmpty() then // нет не опознанных заказов
GOTO Step3;
// выбор ID файла SPRAV_GRUPPA_NOMENKL для KOD_GR = ''заказ''
DAFLOWLINE.DataModuleFlow.ADODataSetSPRAV.Active := False;
DAFLOWLINE.DataModuleFlow.ADODataSetSprav.CommandText := 'Select GRUPPA_N_ID from SPRAV_GRUPPA_NOMENKL ' +
'where KOD_GR_NOM = ''заказ'''; // заказы
DAFLOWLINE.DataModuleFlow.ADODataSetSprav.Active := True;
if DAFLOWLINE.DataModuleFlow.ADODataSetSprav.IsEmpty() then
begin
ShowMessage('В справочнике Групп Номенклатуры нет поля с кодом -заказы' + #13 +
' Обратитесь к Администратору');
Exit;
end;
Gruppa_N_Id := DAFLOWLINE.DataModuleFlow.ADODataSetSprav.FieldValues['GRUPPA_N_ID'];
// выбор ID файла SPRAV_PRIZNAK_IZG для Kod_Prizn_Izg = 1 = ???
DAFLOWLINE.DataModuleFlow.ADODataSetSPRAV.Active := False;
DAFLOWLINE.DataModuleFlow.ADODataSetSprav.CommandText := 'Select Id_Prizn_Izg from SPRAV_PRIZNAK_Izg ' +
'where KOD_Prizn_Izg = 1'; // 1 = собственного изготовления
DAFLOWLINE.DataModuleFlow.ADODataSetSprav.Active := True;
if DAFLOWLINE.DataModuleFlow.ADODataSetSprav.IsEmpty() then
begin
ShowMessage('В справочнике Признак Изготовления нет поля с кодом 1-собственные' + #13 +
' Обратитесь к Администратору');
Exit;
end;
Id_Prizn_Izg := DAFLOWLINE.DataModuleFlow.ADODataSetSprav.FieldValues['ID_PRIZN_IZG'];
// выбор ID файла SPRAV_PRIZNAK_IZG для Kod_Prizn_Izg = 1 = ???
DAFLOWLINE.DataModuleFlow.ADODataSetSPRAV.Active := False;
DAFLOWLINE.DataModuleFlow.ADODataSetSprav.CommandText := 'Select Id_Ed_Izm from SPRAV_ED_IZM ' +
'where (SNAME = ''шт'')'; // = штуки
DAFLOWLINE.DataModuleFlow.ADODataSetSprav.Active := True;
if DAFLOWLINE.DataModuleFlow.ADODataSetSprav.IsEmpty() then
begin
ShowMessage('В справочнике Единиц Измерения нет поля с кодом ШТ-штуки' + #13 +
' Обратитесь к Администратору');
Exit;
end;
Id_Ed_Izm := DAFLOWLINE.DataModuleFlow.ADODataSetSprav.FieldValues['ID_ED_IZM'];
// выбор ID файла SPRAV_KOD_ERR_IMPORT KodErr = 1
DAFLOWLINE.DataModuleFlow.ADODataSetSPRAV.Active := False;
DAFLOWLINE.DataModuleFlow.ADODataSetSprav.CommandText := 'Select Id_KEI from SPRAV_KOD_ERR_IMPORT ' +
'where KodErr = 1'; // 1 = Импорт из Первоочередных
DAFLOWLINE.DataModuleFlow.ADODataSetSprav.Active := True;
if DAFLOWLINE.DataModuleFlow.ADODataSetSprav.IsEmpty() then
begin
ShowMessage('В справочнике Кодов Ошибок Импорта нет поля с кодом 1-сформировано Импортом' + #13 +
' Обратитесь к Администратору');
Exit;
end;
Id_KEI := DAFLOWLINE.DataModuleFlow.ADODataSetSprav.FieldValues['ID_KEI'];
// добавление новых заказов в Nomenkl_pf
DAFLOWLINE.DataModuleFlow.ADODataSetNomenklPF.Active := False;
DAFLOWLINE.DataModuleFlow.ADODataSetNomenklPF.CommandText := 'Select * from NOMENKL_PF';
DAFLOWLINE.DataModuleFlow.ADODataSetNomenklPF.Active := True;
DAFLOWLINE.DataModuleFlow.ADODataSetNomenklPF.Edit;
// добавление новых заказов в Nomenkl_pf
With DAFLOWLINE.DataModuleFlow do
while not DAFLOWLINE.DataModuleFlow.ADODataSetPervObes.Eof do
begin
ADODataSetNomenklPF.Append;
ADODataSetNomenklPF.FieldValues['KOD_DET'] := ADODataSetPervObes.FieldValues['Zakaz'];
ADODataSetNomenklPF.FieldValues['CHERT_N_DET'] := '';
ADODataSetNomenklPF.FieldValues['NAIM_DET'] := '';
ADODataSetNomenklPF.FieldValues['GRUPPA_N_ID'] := Gruppa_N_Id;
ADODataSetNomenklPF.FieldValues['ID_PRIZN_IZG'] := Id_Prizn_Izg;
ADODataSetNomenklPF.FieldValues['ID_ED_IZM'] := Id_Ed_Izm;
ADODataSetNomenklPF.FieldValues['VES_ZAG'] := 0.0;
ADODataSetNomenklPF.FieldValues['PRIM'] := '';
ADODataSetNomenklPF.FieldValues['CHIST_VES'] := 0.0;
ADODataSetNomenklPF.FieldValues['DATA_VVOD'] := Now(); // текущая дата формирования записи
ADODataSetNomenklPF.FieldValues['ID_KEI'] := Id_KEI;
ADODataSetNomenklPF.Post;
ADODataSetPervObes.Next;
end;
Step3: // Добавление и корректировка деталей и узлов в Номенклатуру для Первоочередных
ImportForm.StatusBar1.Panels[0].Text := 'Step3 - Корректировка Номенклатуры';
DAFLOWLINE.DataModuleFlow.ADODataSetPervObes.Active := False;
DAFLOWLINE.DataModuleFlow.ADODataSetPervObes.Parameters.CreateParameter('par2', ftString, pdInput, 3, Null);
DAFLOWLINE.DataModuleFlow.ADODataSetPervObes.Parameters.ParamValues['par2'] := CEH_IZG;
DAFLOWLINE.DataModuleFlow.ADODataSetPervObes.CommandText := 'Select * from PervObes where (CEX_POLUCH = :par2) ORDER BY KOD_DET, Zakaz, CEH_OTPR, UCH_OTPR';
DAFLOWLINE.DataModuleFlow.ADODataSetPervObes.Active := True;
// *********************
DAFLOWLINE.DataModuleFlow.ADODataSetNomenklPF.Active := False;
DAFLOWLINE.DataModuleFlow.ADODataSetNomenklPF.CommandText := 'SELECT N.*, N1.KOD_DET AS Zakaz' +
' FROM NOMENKL_PF N INNER JOIN' +
' SOSTAV S ON N.ID_DET = S.ID_DET_CHTO INNER JOIN' +
' NOMENKL_PF N1 ON S.ID_DET_KUDA = N1.ID_DET' +
' WHERE (N1.GRUPPA_N_ID IN (SELECT GR.gruppa_n_id FROM sprav_gruppa_nomenkl GR WHERE (GR.kod_gr_nom = ''заказ''))) ORDER BY N.KOD_DET,Zakaz';
DAFLOWLINE.DataModuleFlow.ADODataSetNomenklPF.Active := True;
end;
procedure ZagSOST;
begin
ShowMessage('Вызов процедуры загрузки Состава узлов');
end;
procedure ZagTRUD;
begin
ShowMessage('Вызов процедуры загрузки Трудовых нормативов');
end;
end. |