function uuid() {
function randomDigit() {
if (crypto && crypto.getRandomValues) {
var rands = new Uint8Array(1);
crypto.getRandomValues(rands);
return (rands[0] % 16).toString(16);
} else {
return ((Math.random() * 16) | 0).toString(16);
}
}
var crypto = window.crypto || window.msCrypto;
return 'xxxxxxxx-xxxx-4xxx-xxxx-xxxxxxxxxxxx'.replace(/x/g, randomDigit);
}
async function createRegistry() {
try {
let seq1 = await getSeqSmevRegister();
let seq2 = await getSeqSmevRegister();
let seq3 = await getSeqSmevRegister();
QueryAction.action("UNV_CREATE_REGISTRY", {
actionComplete: function (data) {
registryJournal.reload();
}
}, function () {
return {
guid1: uuid(),
guid2: uuid(),
guid3: uuid(),
registry_id_1: seq1.id,
registry_id_2: seq2.id,
registry_id_3: seq3.id
};
});
} catch (error) {
console.error("Ошибка при создании реестра УНВ:", error);
}
}
INSERT INTO report.smev_register (
id,
smev_register_type_code,
smev_register_codes_id,
"year",
"date",
"type",
sample_status,
guid
)
SELECT id, type_code, codes_id, year_val, date_val, type_val, status_val, guid_val
FROM (
VALUES
(
CAST(:registry_id_1 AS int),
'УНВ',
(SELECT id FROM report.smev_register_codes WHERE short_name = 'УНВ'),
CAST(EXTRACT(YEAR FROM CURRENT_DATE) AS int) - 1,
CURRENT_DATE,
'OUT',
'Сформирован',
CAST(:guid1 AS varchar)
),
(
CAST(:registry_id_2 AS int),
'УНВ',
(SELECT id FROM report.smev_register_codes WHERE short_name = 'УНВ'),
CAST(EXTRACT(YEAR FROM CURRENT_DATE) AS int) - 2,
CURRENT_DATE,
'OUT',
'Сформирован',
CAST(:guid2 AS varchar)
),
(
CAST(:registry_id_3 AS int),
'УНВ',
(SELECT id FROM report.smev_register_codes WHERE short_name = 'УНВ'),
CAST(EXTRACT(YEAR FROM CURRENT_DATE) AS int) - 3,
CURRENT_DATE,
'OUT',
'Сформирован',
CAST(:guid3 AS varchar)
)
) AS v(id, type_code, codes_id, year_val, date_val, type_val, status_val, guid_val)
WHERE NOT EXISTS (
SELECT 1
FROM report.smev_register r
WHERE r."year" = v.year_val
AND r.smev_register_type_code = 'УНВ'
AND r.sample_status <> 'Удалён'
)