Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
7 сем / 3 / мисприс-2.3_1374_Наволоцкий_Зырянов_Харитонов.docx
Скачиваний:
3
Добавлен:
29.03.2025
Размер:
1.79 Mб
Скачать

4.6 Процедура, возвращающая список нЕконфигурируемых параметров данного объекта-изделия:

функция: find_obj_param_nonconfigurable - процедура, возвращающая список НЕконфигурируемых параметров данного объекта-изделия

-- вход:

-- 1. obj_id_val - id продукции

-- выход: id и названия всех параметров

-- эффекты:

-- 1. нет

-- требования:

-- 1. передаваемые аргументы должны существовать

def find_obj_param_nonconfigurable(obj_id_val: int):

try:

# Проверка существования продукции в таблице product

if not (is_exist_by_id_in_table(obj_id_val, PRODUCT_TABLE)):

raise ValueError(f'продукции с id={obj_id_val} нет в таблице product')

# Поиск id параметров, которые НЕ являются конфигурируемыми

cursor.execute("""

SELECT param_id

FROM prod_param

WHERE prod_id = ? AND is_configurable = 0

""", (obj_id_val,))

res_id = cursor.fetchall() # Список кортежей, например [(2,), (3,)]

# Если параметры не найдены

if not res_id:

print(f'НЕконфигурируемых параметров для продукции с id={obj_id_val} не найдено')

return 0

# Список для хранения имён параметров

res_nonconfigurable_params_names = []

# Перебор всех найденных параметров

for param_id_tuple in res_id:

param_id = param_id_tuple[0] # Достаём id из кортежа

cursor.execute("""

SELECT param_name

FROM param

WHERE id = ?

""", (param_id,))

param_name = cursor.fetchone()

if param_name:

res_nonconfigurable_params_names.append(param_name[0]) # Добавляем имя параметра

# Вывод результатов

print(f'\nid НЕконфигурируемых параметров для продукции с id={obj_id_val}: {[id[0] for id in res_id]}')

print(f'res_nonconfigurable_params_names - {res_nonconfigurable_params_names}\n')

# Возвращаем все id и названия параметров

return [[id[0] for id in res_id], res_nonconfigurable_params_names]

except (sqlite3.Error, ValueError) as e:

print(f"Ошибка в find_obj_param_nonconfigurable: {e}")

conn.rollback()

return 0

4.7 Процедура, возвращающая список всех параметров данного объекта-изделия:

функция: find_all_obj_params - процедура, возвращающая список всех параметров данного объекта-изделия

-- вход:

-- 1. obj_id_val - id продукции

-- выход: id и названия всех параметров

-- эффекты:

-- 1. нет

-- требования:

-- 1. передаваемые аргументы должны существовать

def find_all_obj_params(obj_id_val: int):

try:

if not (is_exist_by_id_in_table(obj_id_val, PRODUCT_TABLE)):

raise ValueError(f'продукции с id={obj_id_val} нет в таблице product')

res_configurable = []

res_nonconfigurable = []

# конфигурируемые:

res_of_func_configurable = find_obj_param_configurable(obj_id_val)

param_ids_configurable=[]

param_names_configurable=[]

# НЕконфигурируемые:

res_of_func_nonconfigurable = find_obj_param_nonconfigurable(obj_id_val)

param_ids_nonconfigurable=[]

param_names_nonconfigurable=[]

if (res_of_func_configurable):

param_ids_configurable = [res_of_func_configurable[0]]

param_names_configurable = res_of_func_configurable[1]

for i in range(len(param_ids_configurable)):

res_configurable.append([param_ids_configurable[i], param_names_configurable[i]])

if (res_of_func_nonconfigurable):

param_ids_nonconfigurable = [res_of_func_nonconfigurable[0]]

param_names_nonconfigurable = res_of_func_nonconfigurable[1]

for i in range(len(param_ids_nonconfigurable)):

res_nonconfigurable.append([param_ids_nonconfigurable[i], param_names_nonconfigurable[i]])

print(f'\n\n\n')

print(f'НЕконфигурируемые параметры: {res_nonconfigurable}')

print(f'конфигурируемые параметры: {res_configurable}')

return [[param_ids_configurable, param_names_configurable], [param_ids_nonconfigurable, param_names_nonconfigurable]]

except (sqlite3.Error, ValueError) as e:

print(f"Ошибка в find_all_obj_params: {e}")

conn.rollback()

return 0

Соседние файлы в папке 3