1218 При проверке практического задания, отображается ошибка
-
-
Добрый день, обращение в работе
-
Отправьте пожалуйста код скрипта, после которого происходит данная ошибка
-
om.environment.loadFromMulticube("М01.09 Привязка мультикубов", "4s") // Получение элементов фильтров карточки const filters = om.environment.get("cardFilters"); function getNamesByLongIds(longIds) { let collection = om.common.entitiesInfo().getCollection(longIds); return collection.map(entity => {return entity.name()}); } // Получение имен элементов в фильтре let longId = [] filters.forEach(elem => { longId.push(elem["entityLongId"]) }); const names = getNamesByLongIds(longId); print(names); // Чтение названий сущностей для текущих фильтров карточки const mc_name = om.environment.get("4s")[names[0]][names[1]]["Мультикуб"]; const src_name = om.environment.get("4s")[names[0]][names[1]]["Куб источник"]; const dest_name = om.environment.get("4s")[names[0]][names[1]]["Куб приемник"]; const formula = om.environment.get("4s")[names[0]][names[1]]["Тип данных"]; const func = om.environment.get("4s")[names[0]][names[1]]["функция"]; const ENV = { MULTICUBE_SRC: mc_name, MULTICUBE_SRC_VIEW: null, CUB_SRC: src_name, MULTICUBE_DST: "М01.02 Результаты", MULTICUBE_DST_VIEW: "М01.02 Результаты - скрипт", CUB_DST: "Ответ к заданию", JOB_INDEX: dest_name, JOB_NAME: names[0], FUNC: func, TYPE: formula, } om.common.resultInfo() .actionsInfo() .makeMacrosAction('core_testing_formula') .appendAfter() .environmentInfo() .set('ENV', ENV);
-
Проблема была в том, что на первую кнопку проверки был привязан 1 скрипт, в то время как он должен был вызываться в цепочке скриптов, на данный момент я исправил эту ошибку.
-
-
Добрый день!
Это не ошибка, а лог ответа скрипта, ошибок в нем нет, только информационный вывод. Если у вас проблема с тем, что система неверно проверяет выполненное задание, то прошу вас обратиться к тому кто предоставлял вам тестовую модель и подготавливал ее. -
Добрый день, ядро проверки ключей core_testing_formula обращается в ОЛТП, нужно либо сделать проброс к ОЛТП https://csp-stand.casplan.tech/oltp/mysql/ (или если это уже работает, то предоставить креды в личном сообщении мне), либо развернуть ОЛТП на данном ВС.
core_testing_formula:
const ENV = om.environment.get('ENV', null); if (!ENV) { throw new Error('Данные через переменное окружение переданы некорректно'); } var d = new Date(); var cur_date = d.toLocaleDateString('ru-RU', { year: 'numeric', month: '2-digit', day: '2-digit', }); // Чтение формулы из куба const multicubesTab = om.multicubes.multicubesTab(); let multicubeTab = null; let find_error = false; let formula = null; try { multicubeTab = multicubesTab.open(ENV.MULTICUBE_SRC); } catch { console.log(`Не найден мультикуб с формулой ${ENV.MULTICUBE_SRC}\n`); find_error = true; } if (!find_error) { let generator = multicubeTab.cubesTab().pivot() .columnsFilter([ENV.TYPE]) .create() .range(1) .generator(); for (const chunk of generator) { chunk.rows().all().forEach(cube => { let cubeInfo = []; cube.cells().all().forEach(cell => { if (cell.columns().first().name() === ENV.TYPE && ENV.CUB_SRC === cube.first().name()) { formula = cell.getValue(); } }); }); } if (formula === null) { throw new Error('Указанный куб в мультикубе не найден'); } } if (!find_error) { if (formula.length === 0) { formula = "Нет формулы" } // Запись формулы в куб const multicubeTab2 = multicubesTab.open(ENV.MULTICUBE_DST); const pivot = multicubeTab2.pivot(ENV.MULTICUBE_DST_VIEW); const grid = pivot.columnsFilter(['Ответ к заданию', 'Дата ответа']).create(); const generator = grid.range().generator(5000); for (let chunk of generator) { // Перебор строк chunk.rows().all().forEach(row => { const rowLabels = []; row.all().forEach(labels => { rowLabels.push(labels.label()); }); row.cells().all().forEach( element => { if (ENV.JOB_NAME === rowLabels[0] && ENV.JOB_INDEX === rowLabels[1]) { if (element.columns().first().name() === 'Ответ к заданию' ) { element.setValue(formula); } if (element.columns().first().name() === 'Дата ответа' && formula.length > 0 ) { element.setValue(cur_date); } } }); }); } console.log(`Формула из куба "${ENV.CUB_SRC}" скопирована для проверки.\n`) } formula = formula.replace(/"/g, `\\"`);; const ENV2 = { FUNCTION: ENV.JOB_NAME, DEST: ENV.JOB_INDEX, FORMULA: formula, FUNC: ENV.FUNC, } om.common.resultInfo() .actionsInfo() .makeMacrosAction("Проверка формулы") .appendAfter() .environmentInfo() .set('ENV2', ENV2);
Проверка формулы:
const ENV2 = om.environment.get('ENV2', null); const ANS = om.variables.get('Table name').getValue(); const ANSS = om.variables.get('Table name 2').getValue(); const SST = om.variables.get('Table name 3').getValue(); if (!ENV2) { throw new Error('Данные через переменное окружение переданы некорректно'); } const email = om.variables.get("E-mail").getValue().trim(); const ENV = { CORE: "core_export_import", SHOUTER_LVL: 'INFO', SHOUTER_LOGGER_LVL: 'DEBUG', SHOW_ERROR_STACK: true, SRC: { TYPE: "MYSQL", PARAMS: { QUERY: { TYPE: "RAW_QUERY", PARAMS: { PRE_QUERIES: [ `DELETE FROM I03_student_statistics WHERE студент = "${email}" AND функция_код = "${ENV2.FUNC}" AND задание = "${ENV2.DEST}"`,`INSERT INTO I03_student_statistics (студент, функция_код, задание, формула, ключ) VALUES ("${email}", "${ENV2.FUNC}", "${ENV2.DEST}", "${ENV2.FORMULA}", (SELECT ключ FROM I03_answers WHERE функция_код = "${ENV2.FUNC}" AND задание = "${ENV2.DEST}" AND формула = "${ENV2.FORMULA}" LIMIT 1))`, `INSERT INTO I03_answers_students ( функция_код, задание, formula) SELECT "${ENV2.FUNC}", "${ENV2.DEST}", "${ENV2.FORMULA}" WHERE NOT EXISTS (SELECT 1 FROM I03_answers_students WHERE функция_код = "${ENV2.FUNC}" AND задание = "${ENV2.DEST}" AND formula = "${ENV2.FORMULA}" UNION SELECT 1 FROM I03_answers WHERE функция_код = "${ENV2.FUNC}" AND задание = "${ENV2.DEST}" AND формула = "${ENV2.FORMULA}" LIMIT 1 );` ], VALUE: `SELECT функция_код, задание, ключ, "Задание выполнено верно." AS description FROM I03_answers WHERE функция_код = "${ENV2.FUNC}" AND задание = "${ENV2.DEST}" AND формула = "${ENV2.FORMULA}" AND standart = 1 UNION ALL SELECT функция_код, задание, ключ, CONCAT( "Формула работает верно. Но оптимальная формула – ", ( SELECT формула FROM I03_answers WHERE функция_код = "${ENV2.FUNC}" AND задание = "${ENV2.DEST}" AND standart = 1 LIMIT 1 ), ".\n", description ) AS description FROM I03_answers WHERE функция_код = "${ENV2.FUNC}" AND задание = "${ENV2.DEST}" AND формула = "${ENV2.FORMULA}" UNION ALL SELECT функция_код, задание, "" AS ключ, CONCAT("Формула неверная.\n", description) AS description FROM I03_answers_students WHERE функция_код = "${ENV2.FUNC}" AND задание = "${ENV2.DEST}" AND formula = "${ENV2.FORMULA}" LIMIT 1;`, } }, CONNECTION: { HOST: om.variables.get('HOST').getValue(), PORT: om.variables.get('PORT').getValue(), USER: om.variables.get('USER').getValue(), PASSWORD: om.variables.get('PASSWORD').getValue(), DB: om.variables.get('DB').getValue(), }, } }, DEST : { TYPE : "OM_MULTICUBE", PARAMS : { NAME : "М01.02 Результаты", TRANSFORM : { DOWNLOAD_TRANSFORM_FILE : false, DOWNLOAD_IMPORT_REPORT_FILE : false, CHARSET : "UTF-8", //"WINDOWS-1251", SRC_TO_DEST_COLUMN_MAP : { "ключ":"Ключ", "description":"Результат решения", }, DIMENSIONS : { dim1 : { NAME : "Функции", SRC_COLUMN_NAME : "функция_код", CAN_USE_IN_CLEANER : true, ON_VALUE : "AS_IS" }, dim2 : { NAME : "Задания", SRC_COLUMN_NAME : "задание", CAN_USE_IN_CLEANER : false, ON_VALUE : "AS_IS" }, }, CUSTOM_COLUMNS : [], SRC_COLUMN_PREPARE_DATA_MAP : {} }, CLEANER : { STATUS : false, FORMAT_FORMULA_MAP : { "No Data" : null, "Date" : `DATE("")`, "Entity" : `""`, "Time Entity" : `""`, "Version" : `""`, "Line Item Subset" : `""`, "Number" : `0`, "Boolean" : `FALSE`, "Text" : `""` } } } } }; om.common.resultInfo() .actionsInfo() .makeMacrosAction(ENV.CORE) .appendAfter() .environmentInfo() .set('ENV', ENV);
-
спасибо, теперь модель отрабатывает верно, топик можно закрывать.
@aassanova проверить.