diff --git a/Result9/Src/Logics/Services/logging.py b/Result9/Src/Logics/Services/logging.py new file mode 100644 index 0000000..174faee --- /dev/null +++ b/Result9/Src/Logics/Services/logging.py @@ -0,0 +1,50 @@ +from Src.errors import error_proxy +from Src.Storage.storage import storage +from Src.Logics.Services.storage_observer import storage_observer +from Src.Logics.Services.service import service +from Src.Models.event_type import event_type +from Src.Logics.convert_factory import reference_convertor +import json + +class logging(service): + __storage = None + __log = None + __save_path = './logs.txt' + __save_path_json = './logs.json' + + def __init__(self): + self.__storage = storage() + storage_observer.observers.append(self) + + def handle_event(self, event: str): + event = event.split(' ') + if event[0] == event_type.make_log_key(): + self._create_log(event[1], event[2], event[3]) + self._save_log() + + def _create_log(self, log_type: str, text: str, source: str): + self.__log = error_proxy(text, source) + self.__log.log_type = log_type + print(list(self.__storage.data.keys())) + self.__storage.data[storage.logs_key()].append(self.__log) + + def _save_log(self): + ref = reference_convertor(error_proxy) + ref = ref.convert(self.__log) + get = None + to_write = json.dumps(ref, ensure_ascii=False) + + with open(self.__save_path, 'a') as saved: + if saved.tell() != 0: + saved.write('\n') + saved.write(to_write) + + with open(self.__save_path_json, 'a') as saved_json: + if saved_json.tell() != 0: + saved_json.write('\n') + get = json.load(saved_json) + get['logs'].append(to_write) + saved_json.seek(0) + json.dump(get, saved_json) + + diff --git a/Result9/Src/Logics/Services/post_processing_service.py b/Result9/Src/Logics/Services/post_processing_service.py index 2dde182..5ff486e 100644 --- a/Result9/Src/Logics/Services/post_processing_service.py +++ b/Result9/Src/Logics/Services/post_processing_service.py @@ -12,8 +12,7 @@ def __init__(self, data: list, nomenclature) -> None: super().__init__(data) self.nomenclature = nomenclature - # storage_observer.observers.append(self) - + storage_observer.observers.append(self) def handle_event(self, handle_type: str): @@ -23,6 +22,7 @@ def handle_event(self, handle_type: str): def nomenclature_deleted(self, nomenclature: nomenclature_model): for recipe in self.data: - if self.nomenclature.name in recipe._rows: - del recipe._rows[self.nomenclature.name] + if self.nomenclature in recipe._rows: + del recipe._rows[self.nomenclature] recipe.__calc_brutto() + diff --git a/Result9/Src/Logics/Services/reference_service.py b/Result9/Src/Logics/Services/reference_service.py index 4fba18f..dcc9726 100644 --- a/Result9/Src/Logics/Services/reference_service.py +++ b/Result9/Src/Logics/Services/reference_service.py @@ -21,6 +21,8 @@ def add(self, item: reference) -> bool: if len(found) > 0: return False + storage_observer().raise_event(event_type.debug_log(), f"Добавлен новый элемент: (ID: {item.id}; NAME: {item.name})") + self.data.append(item) return True @@ -34,11 +36,11 @@ def delete(self, item: reference) -> bool: found = list(filter(lambda x: x.id == item.id , self.data)) if len(found) == 0: return False - - item_to_delete = found[0] # Сохраняем объект, который мы собираемся удалить - self.data.remove(item_to_delete) - storage_observer.raise_event(event_type.nomenclature_deleted(item_to_delete)) + storage_observer().raise_event(event_type.debug_log(), f"Удалён элемент: (ID: {item.id}; NAME: {item.name})") + + self.data.remove( found[0] ) + storage_observer.raise_event( event_type.nomenclature_deleted() ) return True diff --git a/Result9/Src/Logics/Services/storage_observer.py b/Result9/Src/Logics/Services/storage_observer.py index 2745e49..b5c3117 100644 --- a/Result9/Src/Logics/Services/storage_observer.py +++ b/Result9/Src/Logics/Services/storage_observer.py @@ -8,7 +8,7 @@ class storage_observer: _observers = [] - def raise_event(handle_event: str, reference: None): + def raise_event(handle_event: str, reference = None): """ Сформировать события """ exception_proxy.validate( handle_event, str ) @@ -16,4 +16,5 @@ def raise_event(handle_event: str, reference: None): if object is not None: object.handle_event(handle_event) - + + diff --git a/Result9/Src/Logics/Services/storage_service.py b/Result9/Src/Logics/Services/storage_service.py index 9196112..1be6a20 100644 --- a/Result9/Src/Logics/Services/storage_service.py +++ b/Result9/Src/Logics/Services/storage_service.py @@ -85,6 +85,10 @@ def create_turns(self, start_period: datetime, stop_period:datetime ) -> list: # Рассчитанные обороты calculated_turns = self.__build_turns( filter. data ) + + storage_observer().raise_event(event_type.debug_log(), + f"Вызов create_turns (ARGS: {start_period.strftime('%m/%d/%Y')}, { + stop_period.strftime('%m/%d/%Y')})") # Сформируем результат aggregate_key = process_factory.aggregate_key() @@ -120,7 +124,11 @@ def create_turns_by_nomenclature(self, start_period: datetime, stop_period: date raise operation_exception(f"Невозможно сформировать обороты по указанным данных: {filter.error}") # Рассчитанные обороты - calculated_turns = self.__build_turns( filter. data ) + calculated_turns = self.__build_turns( filter. data ) + + storage_observer().raise_event(event_type.debug_log(), + f"Вызов create_turns_by_nomenclature (ARGS: {start_period.strftime('%m/%d/%Y')}, + {stop_period.strftime('%m/%d/%Y')}, {nomenclature.id})") # Сформируем результат aggregate_key = process_factory.aggregate_key() @@ -141,6 +149,9 @@ def create_turns_only_nomenclature(self, nomenclature: nomenclature_model) -> li filter = prototype.filter_by_nomenclature( nomenclature ) if not filter.is_empty: raise operation_exception(f"Невозможно сформировать обороты по указанным данных: {filter.error}") + + storage_observer().raise_event(event_type.debug_log(), + f"Вызов create_turns_only_nomenclature (ARGS: {nomenclature.id})") return self.__build_turns( filter. data ) @@ -168,6 +179,9 @@ def create_turns_by_receipt(self, receipt: receipe_model) -> list: transactions.append( transaction ) filter.data = self.data + + storage_observer().raise_event(event_type.debug_log(), + f"Вызов create_turns_by_receipt (ARGS: {receipt.id})") return self.__build_turns( transactions ) @@ -206,6 +220,9 @@ def handle_event(self, handle_type: event_value, reference: None): # Дор super().handle_event(handle_type) + storage_observer().raise_event(event_type.debug_log(), + f"Вызов handle_event:changed_block_period") + if handle_type == event_type.changed_block_period: self.__build_blocked_turns() diff --git a/Result9/Src/Logics/start_factory.py b/Result9/Src/Logics/start_factory.py index c3546f3..9085388 100644 --- a/Result9/Src/Logics/start_factory.py +++ b/Result9/Src/Logics/start_factory.py @@ -6,6 +6,9 @@ from Src.Models.receipe_model import receipe_model from Src.Models.storage_row_model import storage_row_model from Src.Models.storage_model import storage_model +from Src.Logics.Services.storage_observer import storage_observer +from Src.Logics.Services.post_processing_service import post_processing_service +from Src.Models.event_type import event_type # Системное from Src.settings import settings @@ -230,7 +233,12 @@ def create_storage_transactions(data: dict) -> list: result.append(row) return result - + + """ @staticmethod + def create_observers(data: dict) -> list: + observers = [] + storage.data """ + # Основной метод def create(self) -> bool: @@ -241,7 +249,7 @@ def create(self) -> bool: """ if self.__storage == None: - self.__storage = storage() + self.__storage = storage() if self.__oprions.is_first_start == True: @@ -273,16 +281,14 @@ def create(self) -> bool: # Другой вариант. Загрузка из источника данных try: self.__storage.load() + except Exception as ex: raise operation_exception(f"Ошибка при формировании шаблонных данных!\n{ex}") - - - - - - - - - - \ No newline at end of file + + # Добавляем наблюдателя к каждому элементу номенклатуры + for nomen in self.__storage.data: + if nomen == storage.nomenclature_key(): + storage_observer.raise_event(event_type.nomenclature_deleted()) + + diff --git a/Result9/Src/Models/event_type.py b/Result9/Src/Models/event_type.py index d8da4e8..7681faf 100644 --- a/Result9/Src/Models/event_type.py +++ b/Result9/Src/Models/event_type.py @@ -19,4 +19,18 @@ def nomenclature_deleted() -> str: """ Событие удаления номенклатуры из рецептов """ - return "nomenclature_deleted" \ No newline at end of file + return "nomenclature_deleted" + + @staticmethod + def create_log() -> str: + """ + Событие для логирования + """ + return "create_log" + + @staticmethod + def debug_log() -> str: + """ + Событие для логирования + """ + return "debug_log" \ No newline at end of file diff --git a/Result9/Src/errors.py b/Result9/Src/errors.py index cb29788..52b8642 100644 --- a/Result9/Src/errors.py +++ b/Result9/Src/errors.py @@ -1,4 +1,6 @@ import json +from Src.Logics.Services.storage_observer import storage_observer +from Src.Models.event_type import event_type # # Класс для обработки и хранения текстовой информации об ошибке @@ -40,6 +42,9 @@ def set_error(self, exception: Exception): return self._error_text = "Ошибка! " + str(exception) + + storage_observer.raise_event( event_type.create_log(), str(exception) ) + @property def is_empty(self) -> bool: @@ -82,6 +87,8 @@ def create_error_response( app, message: str, http_code: int = 0): # Формируем описание json_text = json.dumps({"details" : message}, sort_keys = True, indent = 4, ensure_ascii = False) + + storage_observer.raise_event( event_type.create_log(), f"error response: {message}" ) # Формируем результат result = app.response_class( diff --git a/Result9/Src/settings.py b/Result9/Src/settings.py index e774fe9..fd28844 100644 --- a/Result9/Src/settings.py +++ b/Result9/Src/settings.py @@ -95,5 +95,7 @@ def block_period(self, value): raise argument_exception("Некорректно переданы параметры!") if legacy_period == self._block_period: - storage_observer.raise_event( event_type.changed_block_period() ) + arg1 = event_type.changed_block_period( ) + arg2 = None + storage_observer.raise_event( arg1, arg2 ) diff --git a/Result9/Tst/service_test.py b/Result9/Tst/service_test.py index 20ed6ce..67b2281 100644 --- a/Result9/Tst/service_test.py +++ b/Result9/Tst/service_test.py @@ -257,17 +257,15 @@ def test_check_observer_nomenclature_deleted(self): manager = settings_manager() start = start_factory(manager.settings) start.create() - nomenclature = nomenclature_model() - service = reference_service(nomenclature) + key = storage.nomenclature_key() + nomen_data = start.storage.data[ key ] + service = reference_service( nomen_data ) # Действие try: storage_observer.raise_event( event_type.nomenclature_deleted() ) - service.delete(nomenclature) pass except Exception as ex: print(f"{ex}") - # Проверка - assert nomenclature is None \ No newline at end of file diff --git a/Result9/Tst/settings_test.py b/Result9/Tst/settings_test.py index 9a687af..9750fd3 100644 --- a/Result9/Tst/settings_test.py +++ b/Result9/Tst/settings_test.py @@ -97,10 +97,3 @@ def test_fail_open_settings(self): # Проверки assert manager.error.is_empty == False - - - - - - - diff --git a/Result9/csv_report.csv b/Result9/csv_report.csv index c0a6851..fb6892a 100644 --- a/Result9/csv_report.csv +++ b/Result9/csv_report.csv @@ -1,2 +1,2 @@ description;group;id;is_error;name;unit -Ингредиент для салата;1c9b78ecc0cf4465ac07a682a518ad86;0d6674afc728471b99b30ced559b87bb;True;Тушка бройлера;c9161d641ac44f1f80d784cc105de86f +Ингредиент для салата;0e5258cab7af471ab085e3bf0f498fac;6bbb34ba07864c50abebf9f6e55327cf;True;Тушка бройлера;65c8db5eedec4d37a8eb8fe3a3247d0e diff --git a/Result9/main.py b/Result9/main.py index 331da6c..484ae8a 100644 --- a/Result9/main.py +++ b/Result9/main.py @@ -9,6 +9,9 @@ from Src.Models.nomenclature_model import nomenclature_model from Src.Logics.Services.service import service from Src.Logics.Services.reference_service import reference_service +from Src.Logics.Services.storage_observer import storage_observer +from Src.Models.event_type import event_type +from Src.Logics.Services.logging import logging @@ -20,6 +23,8 @@ start = start_factory(options.settings) start.create() +logger = logging([]) + # Отчетность @@ -36,6 +41,8 @@ def get_report(storage_key: str): # Создаем фабрику report = report_factory() data = start.storage.data + + storage_observer.raise_event( event_type.create_log(), f"Вызов get_report (storage_key: {storage_key})" ) # Формируем результат try: @@ -62,6 +69,8 @@ def get_turns(): if "stop_period" not in args.keys(): return error_proxy.create_error_response(app, "Необходимо передать параметры: start_period, stop_period!") + storage_observer.raise_event( event_type.create_log(), f"Вызов get_turns" ) + start_date = datetime.strptime(args["start_period"], "%Y-%m-%d") stop_date = datetime.strptime(args["stop_period"], "%Y-%m-%d") @@ -98,6 +107,8 @@ def get_turns_nomenclature(nomenclature_id): if nomenclature_id not in ids: return error_proxy.create_error_response(app, "Некорректно передан код номенклатуры!", 400) + storage_observer.raise_event( event_type.create_log(), f"Вызов get_turns_nomenclature (nomenclature_id: {nomenclature_id})" ) + nomenclature = nomenclatures[nomenclature_id] data = storage_service( transactions_data ).create_turns_by_nomenclature( start_date, stop_date, nomenclature ) @@ -117,6 +128,9 @@ def add_nomenclature(): item = nomenclature_model().load(data) source_data = start.storage.data[ storage.nomenclature_key() ] result = reference_service( source_data ).add( item ) + + storage_observer.raise_event( event_type.create_log(), f"Вызов add_nomenclature (data.name: {data.name})" ) + return service.create_response( {"result": result} ) except Exception as ex: return error_proxy.create_error_response(app, f"Ошибка при добавлении данных!\n {ex}") @@ -132,6 +146,9 @@ def delete_nomenclature(): item = nomenclature_model().load(data) source_data = start.storage.data[ storage.nomenclature_key() ] result = reference_service( source_data ).delete( item ) + + storage_observer.raise_event( event_type.create_log(), f"Вызов delete_nomenclature (item.id: {item.id})" ) + return service.create_response( {"result": result} ) except Exception as ex: return error_proxy.create_error_response(app, f"Ошибка при удалении данных!\n {ex}") @@ -147,6 +164,9 @@ def change_nomenclature(): item = nomenclature_model().load(data) source_data = start.storage.data[ storage.nomenclature_key() ] result = reference_service( source_data ).change( item ) + + storage_observer.raise_event( event_type.create_log(), f"Вызов change_nomenclature (item.id: {item.id})" ) + return service.create_response( {"result": result} ) except Exception as ex: return error_proxy.create_error_response(app, f"Ошибка при изменении данных!\n {ex}") @@ -157,6 +177,9 @@ def get_nomenclature(): Получить список номенклатуры """ args = request.args + + storage_observer.raise_event( event_type.create_log(), f"Вызов get_nomenclature" ) + if "id" not in args.keys(): # Вывод всех элементов source_data = start.storage.data[ storage.nomenclature_key() ] @@ -177,6 +200,9 @@ def get_nomenclature(): @app.route("/api/block_period", methods=["GET"]) def get_block_period(): args = request.args + + storage_observer.raise_event( event_type.create_log(), f"Вызов get_nomenclature" ) + if "period" in args.keys(): try: diff --git a/Result9/markdown_report.md b/Result9/markdown_report.md index ffc2722..c651902 100644 --- a/Result9/markdown_report.md +++ b/Result9/markdown_report.md @@ -1,4 +1,4 @@ # unit_model |base_unit|coefficient|description|id|is_error|name| |--|--|--|--|--|--| -||1||7ac7371cc3f44255bdd2b26406ff6a10|True|грамм| \ No newline at end of file +||1||c81fc331694640a3bccb56ea1015948f|True|грамм| \ No newline at end of file diff --git a/Result9/nomenclature.json b/Result9/nomenclature.json index 4385441..e3c78e3 100644 --- a/Result9/nomenclature.json +++ b/Result9/nomenclature.json @@ -2,11 +2,11 @@ "description": "", "group": { "description": "", - "id": "d949c361b783415aae902a113f9f1a9f", + "id": "d48786301a9f480f966a6f0b1219cbe2", "is_error": false, "name": "\u0418\u043d\u0433\u0440\u0435\u0434\u0438\u0435\u043d\u0442\u044b" }, - "id": "68f056781b9c4b84a807da07d1a25837", + "id": "65ad636813324e9c904b4caa6f9fae17", "is_error": false, "name": "\u041c\u0443\u043a\u0430 \u043f\u0448\u0435\u043d\u0438\u0447\u043d\u0430\u044f", "unit": { @@ -14,13 +14,13 @@ "base_unit": null, "coefficient": 1, "description": "", - "id": "153ab681b116494196f28813a5ab3c74", + "id": "2bf29c146c50467ea03b6da41b0b42ec", "is_error": false, "name": "\u0433\u0440\u0430\u043c\u043c" }, "coefficient": 1000, "description": "", - "id": "ea40ac391066490cbd1ff03d51fce03d", + "id": "909145ebced740c09dad96863d20361e", "is_error": false, "name": "\u043a\u0438\u043b\u043b\u043e\u0433\u0440\u0430\u043c\u043c" } diff --git a/Result9/nomenclatures.json b/Result9/nomenclatures.json index 9f0e6a8..032fac3 100644 --- a/Result9/nomenclatures.json +++ b/Result9/nomenclatures.json @@ -3,11 +3,11 @@ "description": "", "group": { "description": "", - "id": "52ba9b32e5be4bfa998750ed48ef2f8a", + "id": "5043b5f304c9492da227fcfe26c03480", "is_error": false, "name": "\u0418\u043d\u0433\u0440\u0435\u0434\u0438\u0435\u043d\u0442\u044b" }, - "id": "6ce4120463424c70a6cd64ea4f5b0744", + "id": "eb76fc172a334f5db320e220aead94a6", "is_error": false, "name": "\u041c\u0443\u043a\u0430 \u043f\u0448\u0435\u043d\u0438\u0447\u043d\u0430\u044f", "unit": { @@ -15,13 +15,13 @@ "base_unit": null, "coefficient": 1, "description": "", - "id": "e5145fa9464e4f219504e9d0c0b7286c", + "id": "a367bb887f2242c691e1739128f1a577", "is_error": false, "name": "\u0433\u0440\u0430\u043c\u043c" }, "coefficient": 1000, "description": "", - "id": "69a80144d0774bfe84a3c44519a214b9", + "id": "2747e0a2bfef481d89dffc67aa47fe94", "is_error": false, "name": "\u043a\u0438\u043b\u043b\u043e\u0433\u0440\u0430\u043c\u043c" } @@ -30,11 +30,11 @@ "description": "", "group": { "description": "", - "id": "52ba9b32e5be4bfa998750ed48ef2f8a", + "id": "5043b5f304c9492da227fcfe26c03480", "is_error": false, "name": "\u0418\u043d\u0433\u0440\u0435\u0434\u0438\u0435\u043d\u0442\u044b" }, - "id": "008efbfd935046179fa57b6cbcf8c4cf", + "id": "145afed26b1b4a0c87ef6e3dac1bc0c7", "is_error": false, "name": "\u0421\u0430\u0445\u0430\u0440", "unit": { @@ -42,13 +42,13 @@ "base_unit": null, "coefficient": 1, "description": "", - "id": "e5145fa9464e4f219504e9d0c0b7286c", + "id": "a367bb887f2242c691e1739128f1a577", "is_error": false, "name": "\u0433\u0440\u0430\u043c\u043c" }, "coefficient": 1000, "description": "", - "id": "69a80144d0774bfe84a3c44519a214b9", + "id": "2747e0a2bfef481d89dffc67aa47fe94", "is_error": false, "name": "\u043a\u0438\u043b\u043b\u043e\u0433\u0440\u0430\u043c\u043c" } @@ -57,11 +57,11 @@ "description": "", "group": { "description": "", - "id": "52ba9b32e5be4bfa998750ed48ef2f8a", + "id": "5043b5f304c9492da227fcfe26c03480", "is_error": false, "name": "\u0418\u043d\u0433\u0440\u0435\u0434\u0438\u0435\u043d\u0442\u044b" }, - "id": "7573e196bb144633b20b7539bddc1125", + "id": "c451342e2a4742da8e16c8b8824b027d", "is_error": false, "name": "\u0421\u043b\u0438\u0432\u043e\u0447\u043d\u043e\u0435 \u043c\u0430\u0441\u043b\u043e", "unit": { @@ -69,13 +69,13 @@ "base_unit": null, "coefficient": 1, "description": "", - "id": "e5145fa9464e4f219504e9d0c0b7286c", + "id": "a367bb887f2242c691e1739128f1a577", "is_error": false, "name": "\u0433\u0440\u0430\u043c\u043c" }, "coefficient": 1000, "description": "", - "id": "69a80144d0774bfe84a3c44519a214b9", + "id": "2747e0a2bfef481d89dffc67aa47fe94", "is_error": false, "name": "\u043a\u0438\u043b\u043b\u043e\u0433\u0440\u0430\u043c\u043c" } @@ -84,18 +84,18 @@ "description": "", "group": { "description": "", - "id": "52ba9b32e5be4bfa998750ed48ef2f8a", + "id": "5043b5f304c9492da227fcfe26c03480", "is_error": false, "name": "\u0418\u043d\u0433\u0440\u0435\u0434\u0438\u0435\u043d\u0442\u044b" }, - "id": "f52f3015d17446539539466806a82866", + "id": "09c0d08d1ba04b6986b61e1d68f556e1", "is_error": false, "name": "\u042f\u0439\u0446\u0430", "unit": { "base_unit": null, "coefficient": 1, "description": "", - "id": "3954d1c883864df58de4ba2d7448aa8e", + "id": "5147d443c7824e15a0a897d962e6f167", "is_error": false, "name": "\u0448\u0442\u0443\u043a\u0430" } @@ -104,18 +104,18 @@ "description": "", "group": { "description": "", - "id": "52ba9b32e5be4bfa998750ed48ef2f8a", + "id": "5043b5f304c9492da227fcfe26c03480", "is_error": false, "name": "\u0418\u043d\u0433\u0440\u0435\u0434\u0438\u0435\u043d\u0442\u044b" }, - "id": "25bac2aaee504df2a582e46f41b67a90", + "id": "ed2cfc08dde147c994a9646458195e28", "is_error": false, "name": "\u0412\u0430\u043d\u0438\u043b\u0438\u043d", "unit": { "base_unit": null, "coefficient": 1, "description": "", - "id": "18ac789bf337459aac21b1ea03a0a8f6", + "id": "711164721d774f7ea7c658e345d3416b", "is_error": false, "name": "\u0433\u0440\u0430\u043c\u043c" } @@ -124,11 +124,11 @@ "description": "", "group": { "description": "", - "id": "52ba9b32e5be4bfa998750ed48ef2f8a", + "id": "5043b5f304c9492da227fcfe26c03480", "is_error": false, "name": "\u0418\u043d\u0433\u0440\u0435\u0434\u0438\u0435\u043d\u0442\u044b" }, - "id": "bf9d231c73454fb28e4a73f0fe211088", + "id": "af712b3289a84dc4a15c1165e0b8a89b", "is_error": false, "name": "\u041a\u0443\u0440\u0438\u043d\u043d\u043e\u0435 \u0444\u0438\u043b\u0435", "unit": { @@ -136,13 +136,13 @@ "base_unit": null, "coefficient": 1, "description": "", - "id": "e5145fa9464e4f219504e9d0c0b7286c", + "id": "a367bb887f2242c691e1739128f1a577", "is_error": false, "name": "\u0433\u0440\u0430\u043c\u043c" }, "coefficient": 1000, "description": "", - "id": "69a80144d0774bfe84a3c44519a214b9", + "id": "2747e0a2bfef481d89dffc67aa47fe94", "is_error": false, "name": "\u043a\u0438\u043b\u043b\u043e\u0433\u0440\u0430\u043c\u043c" } @@ -151,18 +151,18 @@ "description": "", "group": { "description": "", - "id": "52ba9b32e5be4bfa998750ed48ef2f8a", + "id": "5043b5f304c9492da227fcfe26c03480", "is_error": false, "name": "\u0418\u043d\u0433\u0440\u0435\u0434\u0438\u0435\u043d\u0442\u044b" }, - "id": "071f1e2b3b154f17a9248663d4928e58", + "id": "9b7d630bac2a40c2be7af052eed464dd", "is_error": false, "name": "\u0421\u0430\u043b\u0430\u0442 \u0420\u043e\u043c\u0430\u043d\u043e", "unit": { "base_unit": null, "coefficient": 1, "description": "", - "id": "18ac789bf337459aac21b1ea03a0a8f6", + "id": "711164721d774f7ea7c658e345d3416b", "is_error": false, "name": "\u0433\u0440\u0430\u043c\u043c" } @@ -171,11 +171,11 @@ "description": "", "group": { "description": "", - "id": "52ba9b32e5be4bfa998750ed48ef2f8a", + "id": "5043b5f304c9492da227fcfe26c03480", "is_error": false, "name": "\u0418\u043d\u0433\u0440\u0435\u0434\u0438\u0435\u043d\u0442\u044b" }, - "id": "8e4075a9e7ea4b379deb0f7be2ff47e5", + "id": "c913e60d359e49b1b3fc06674faddb1f", "is_error": false, "name": "\u0421\u044b\u0440 \u041f\u0430\u0440\u043c\u0435\u0437\u0430\u043d", "unit": { @@ -183,13 +183,13 @@ "base_unit": null, "coefficient": 1, "description": "", - "id": "e5145fa9464e4f219504e9d0c0b7286c", + "id": "a367bb887f2242c691e1739128f1a577", "is_error": false, "name": "\u0433\u0440\u0430\u043c\u043c" }, "coefficient": 1000, "description": "", - "id": "69a80144d0774bfe84a3c44519a214b9", + "id": "2747e0a2bfef481d89dffc67aa47fe94", "is_error": false, "name": "\u043a\u0438\u043b\u043b\u043e\u0433\u0440\u0430\u043c\u043c" } @@ -198,11 +198,11 @@ "description": "", "group": { "description": "", - "id": "52ba9b32e5be4bfa998750ed48ef2f8a", + "id": "5043b5f304c9492da227fcfe26c03480", "is_error": false, "name": "\u0418\u043d\u0433\u0440\u0435\u0434\u0438\u0435\u043d\u0442\u044b" }, - "id": "67ad382c5e94419cb793b40b5f01d95e", + "id": "fce0e87d600b44b6b4fb33e56d55c527", "is_error": false, "name": "\u0427\u0435\u0441\u043d\u043e\u043a", "unit": { @@ -210,13 +210,13 @@ "base_unit": null, "coefficient": 1, "description": "", - "id": "e5145fa9464e4f219504e9d0c0b7286c", + "id": "a367bb887f2242c691e1739128f1a577", "is_error": false, "name": "\u0433\u0440\u0430\u043c\u043c" }, "coefficient": 1000, "description": "", - "id": "69a80144d0774bfe84a3c44519a214b9", + "id": "2747e0a2bfef481d89dffc67aa47fe94", "is_error": false, "name": "\u043a\u0438\u043b\u043b\u043e\u0433\u0440\u0430\u043c\u043c" } @@ -225,11 +225,11 @@ "description": "", "group": { "description": "", - "id": "52ba9b32e5be4bfa998750ed48ef2f8a", + "id": "5043b5f304c9492da227fcfe26c03480", "is_error": false, "name": "\u0418\u043d\u0433\u0440\u0435\u0434\u0438\u0435\u043d\u0442\u044b" }, - "id": "f769b3a2bb3d4467b7c39675ffa787be", + "id": "34d18b8d9aa04321b692a21d8661aad4", "is_error": false, "name": "\u0411\u0435\u043b\u044b\u0439 \u0445\u043b\u0435\u0431", "unit": { @@ -237,13 +237,13 @@ "base_unit": null, "coefficient": 1, "description": "", - "id": "e5145fa9464e4f219504e9d0c0b7286c", + "id": "a367bb887f2242c691e1739128f1a577", "is_error": false, "name": "\u0433\u0440\u0430\u043c\u043c" }, "coefficient": 1000, "description": "", - "id": "69a80144d0774bfe84a3c44519a214b9", + "id": "2747e0a2bfef481d89dffc67aa47fe94", "is_error": false, "name": "\u043a\u0438\u043b\u043b\u043e\u0433\u0440\u0430\u043c\u043c" } @@ -252,11 +252,11 @@ "description": "", "group": { "description": "", - "id": "52ba9b32e5be4bfa998750ed48ef2f8a", + "id": "5043b5f304c9492da227fcfe26c03480", "is_error": false, "name": "\u0418\u043d\u0433\u0440\u0435\u0434\u0438\u0435\u043d\u0442\u044b" }, - "id": "798e5e7488fe4a229556fbf2ee6ad728", + "id": "e4f0c05751a343d7951e1b353f937d7e", "is_error": false, "name": "\u0421\u043e\u043b\u044c", "unit": { @@ -264,13 +264,13 @@ "base_unit": null, "coefficient": 1, "description": "", - "id": "e5145fa9464e4f219504e9d0c0b7286c", + "id": "a367bb887f2242c691e1739128f1a577", "is_error": false, "name": "\u0433\u0440\u0430\u043c\u043c" }, "coefficient": 1000, "description": "", - "id": "69a80144d0774bfe84a3c44519a214b9", + "id": "2747e0a2bfef481d89dffc67aa47fe94", "is_error": false, "name": "\u043a\u0438\u043b\u043b\u043e\u0433\u0440\u0430\u043c\u043c" } @@ -279,18 +279,18 @@ "description": "", "group": { "description": "", - "id": "52ba9b32e5be4bfa998750ed48ef2f8a", + "id": "5043b5f304c9492da227fcfe26c03480", "is_error": false, "name": "\u0418\u043d\u0433\u0440\u0435\u0434\u0438\u0435\u043d\u0442\u044b" }, - "id": "1b976bcdbe914a3f81fb6ad6ba510200", + "id": "64714212a8ab4448a33876534e52f98b", "is_error": false, "name": "\u0427\u0435\u0440\u043d\u044b\u0439 \u043f\u0435\u0440\u0435\u0446", "unit": { "base_unit": null, "coefficient": 1, "description": "", - "id": "18ac789bf337459aac21b1ea03a0a8f6", + "id": "711164721d774f7ea7c658e345d3416b", "is_error": false, "name": "\u0433\u0440\u0430\u043c\u043c" } @@ -299,11 +299,11 @@ "description": "", "group": { "description": "", - "id": "52ba9b32e5be4bfa998750ed48ef2f8a", + "id": "5043b5f304c9492da227fcfe26c03480", "is_error": false, "name": "\u0418\u043d\u0433\u0440\u0435\u0434\u0438\u0435\u043d\u0442\u044b" }, - "id": "1f3d5f94b829448697f24b911a3c3a9b", + "id": "4a6531b4aa2643cb983e24dafb1430d1", "is_error": false, "name": "\u041e\u043b\u0438\u0432\u043a\u043e\u0432\u043e\u0435 \u043c\u0430\u0441\u043b\u043e", "unit": { @@ -311,13 +311,13 @@ "base_unit": null, "coefficient": 1, "description": "", - "id": "0ef5d7fdedaa4dbeba902116f6d83e59", + "id": "2773fdec6951409dbf54c3fac9268c9d", "is_error": false, "name": "\u043c\u0438\u043b\u043b\u0438\u043b\u0438\u0442\u0440" }, "coefficient": 1000, "description": "", - "id": "be61d5f9a0d64d1e9664acab55f33cac", + "id": "b573939c52c0465da1c0970e4bcc82d4", "is_error": false, "name": "\u043b\u0438\u0442\u0440" } @@ -326,11 +326,11 @@ "description": "", "group": { "description": "", - "id": "52ba9b32e5be4bfa998750ed48ef2f8a", + "id": "5043b5f304c9492da227fcfe26c03480", "is_error": false, "name": "\u0418\u043d\u0433\u0440\u0435\u0434\u0438\u0435\u043d\u0442\u044b" }, - "id": "3d560f3d72d74e85b6df878ead757733", + "id": "107341e97784494abbff2848dcf0300d", "is_error": false, "name": "\u041b\u0438\u043c\u043e\u043d\u043d\u044b\u0439 \u0441\u043e\u043a", "unit": { @@ -338,13 +338,13 @@ "base_unit": null, "coefficient": 1, "description": "", - "id": "0ef5d7fdedaa4dbeba902116f6d83e59", + "id": "2773fdec6951409dbf54c3fac9268c9d", "is_error": false, "name": "\u043c\u0438\u043b\u043b\u0438\u043b\u0438\u0442\u0440" }, "coefficient": 1000, "description": "", - "id": "be61d5f9a0d64d1e9664acab55f33cac", + "id": "b573939c52c0465da1c0970e4bcc82d4", "is_error": false, "name": "\u043b\u0438\u0442\u0440" } @@ -353,18 +353,18 @@ "description": "", "group": { "description": "", - "id": "52ba9b32e5be4bfa998750ed48ef2f8a", + "id": "5043b5f304c9492da227fcfe26c03480", "is_error": false, "name": "\u0418\u043d\u0433\u0440\u0435\u0434\u0438\u0435\u043d\u0442\u044b" }, - "id": "1e3975f4600c4078afc3a56130f4fcea", + "id": "da91d9816d564222b164df7e505b05cf", "is_error": false, "name": "\u0413\u043e\u0440\u0447\u0438\u0446\u0430 \u0434\u0438\u0436\u043e\u043d\u0441\u043a\u0430\u044f", "unit": { "base_unit": null, "coefficient": 1, "description": "", - "id": "18ac789bf337459aac21b1ea03a0a8f6", + "id": "711164721d774f7ea7c658e345d3416b", "is_error": false, "name": "\u0433\u0440\u0430\u043c\u043c" } @@ -373,18 +373,18 @@ "description": "", "group": { "description": "", - "id": "52ba9b32e5be4bfa998750ed48ef2f8a", + "id": "5043b5f304c9492da227fcfe26c03480", "is_error": false, "name": "\u0418\u043d\u0433\u0440\u0435\u0434\u0438\u0435\u043d\u0442\u044b" }, - "id": "6068a0365d2944439e1560f7d6cb6d73", + "id": "a8a74d0cda894e26825332474672d88b", "is_error": false, "name": "\u0421\u0430\u0445\u0430\u0440\u043d\u0430\u044f \u043f\u0443\u0434\u0440\u0430", "unit": { "base_unit": null, "coefficient": 1, "description": "", - "id": "18ac789bf337459aac21b1ea03a0a8f6", + "id": "711164721d774f7ea7c658e345d3416b", "is_error": false, "name": "\u0433\u0440\u0430\u043c\u043c" } @@ -393,18 +393,18 @@ "description": "", "group": { "description": "", - "id": "52ba9b32e5be4bfa998750ed48ef2f8a", + "id": "5043b5f304c9492da227fcfe26c03480", "is_error": false, "name": "\u0418\u043d\u0433\u0440\u0435\u0434\u0438\u0435\u043d\u0442\u044b" }, - "id": "d1e715d6f7a04a0bb7a564f77dfb236f", + "id": "cfc9c6b34b3f4c65a718de72407ee0d1", "is_error": false, "name": "\u0412\u0430\u043d\u0438\u043b\u0438\u0438\u043d", "unit": { "base_unit": null, "coefficient": 1, "description": "", - "id": "18ac789bf337459aac21b1ea03a0a8f6", + "id": "711164721d774f7ea7c658e345d3416b", "is_error": false, "name": "\u0433\u0440\u0430\u043c\u043c" } @@ -413,18 +413,18 @@ "description": "", "group": { "description": "", - "id": "52ba9b32e5be4bfa998750ed48ef2f8a", + "id": "5043b5f304c9492da227fcfe26c03480", "is_error": false, "name": "\u0418\u043d\u0433\u0440\u0435\u0434\u0438\u0435\u043d\u0442\u044b" }, - "id": "5ca1f43a0a50477da8460e9f316a501d", + "id": "b499269d97aa4338aef2934b8f9d4d08", "is_error": false, "name": "\u041a\u043e\u0440\u0438\u0446\u0430", "unit": { "base_unit": null, "coefficient": 1, "description": "", - "id": "18ac789bf337459aac21b1ea03a0a8f6", + "id": "711164721d774f7ea7c658e345d3416b", "is_error": false, "name": "\u0433\u0440\u0430\u043c\u043c" } @@ -433,11 +433,11 @@ "description": "", "group": { "description": "", - "id": "52ba9b32e5be4bfa998750ed48ef2f8a", + "id": "5043b5f304c9492da227fcfe26c03480", "is_error": false, "name": "\u0418\u043d\u0433\u0440\u0435\u0434\u0438\u0435\u043d\u0442\u044b" }, - "id": "64159be615094a028c4cf26071f08a8d", + "id": "0d6545636e834c6689abb09fb743663e", "is_error": false, "name": "\u041a\u0430\u043a\u0430\u043e", "unit": { @@ -445,13 +445,13 @@ "base_unit": null, "coefficient": 1, "description": "", - "id": "e5145fa9464e4f219504e9d0c0b7286c", + "id": "a367bb887f2242c691e1739128f1a577", "is_error": false, "name": "\u0433\u0440\u0430\u043c\u043c" }, "coefficient": 1000, "description": "", - "id": "69a80144d0774bfe84a3c44519a214b9", + "id": "2747e0a2bfef481d89dffc67aa47fe94", "is_error": false, "name": "\u043a\u0438\u043b\u043b\u043e\u0433\u0440\u0430\u043c\u043c" } diff --git a/Result9/receipts.json b/Result9/receipts.json index 321cb79..c378917 100644 --- a/Result9/receipts.json +++ b/Result9/receipts.json @@ -5,18 +5,18 @@ "consist": { "\u041c\u0443\u043a\u0430 \u043f\u0448\u0435\u043d\u0438\u0447\u043d\u0430\u044f": { "description": "", - "id": "37d4d81cb939457a8a485f21c957ea56", + "id": "d00cfe3e82db4f779608c79e54d9a846", "is_error": false, "name": "\u041c\u0443\u043a\u0430 \u043f\u0448\u0435\u043d\u0438\u0447\u043d\u0430\u044f", "nomenclature": { "description": "", "group": { "description": "", - "id": "b98ad33f66b64a149ce4c3be34bbc116", + "id": "d8c0b9f7371a49ceaea4d7c86943a656", "is_error": false, "name": "\u0418\u043d\u0433\u0440\u0435\u0434\u0438\u0435\u043d\u0442\u044b" }, - "id": "b9bfcf89fe834f17906e3f093d13b414", + "id": "19df120b9e634483ac41911b53ae0bd4", "is_error": false, "name": "\u041c\u0443\u043a\u0430 \u043f\u0448\u0435\u043d\u0438\u0447\u043d\u0430\u044f", "unit": { @@ -24,13 +24,13 @@ "base_unit": null, "coefficient": 1, "description": "", - "id": "6b2f766223044776944a8a7078c1e36b", + "id": "88a5e528e9da41b5a8169db96b28892d", "is_error": false, "name": "\u0433\u0440\u0430\u043c\u043c" }, "coefficient": 1000, "description": "", - "id": "4f780e91e4f544cb90ab579f19fc6463", + "id": "126b164af0304958a081a9af5c999569", "is_error": false, "name": "\u043a\u0438\u043b\u043b\u043e\u0433\u0440\u0430\u043c\u043c" } @@ -40,25 +40,25 @@ "base_unit": null, "coefficient": 1, "description": "", - "id": "6b2f766223044776944a8a7078c1e36b", + "id": "88a5e528e9da41b5a8169db96b28892d", "is_error": false, "name": "\u0433\u0440\u0430\u043c\u043c" } }, "\u0421\u0430\u0445\u0430\u0440": { "description": "", - "id": "070644f547824814bebbbc67cfbf696b", + "id": "0045b9dd65014273a6ffacd832141ef5", "is_error": false, "name": "\u0421\u0430\u0445\u0430\u0440", "nomenclature": { "description": "", "group": { "description": "", - "id": "b98ad33f66b64a149ce4c3be34bbc116", + "id": "d8c0b9f7371a49ceaea4d7c86943a656", "is_error": false, "name": "\u0418\u043d\u0433\u0440\u0435\u0434\u0438\u0435\u043d\u0442\u044b" }, - "id": "dd24bb55e7704b2fbe27dd0488fa6266", + "id": "f4c4e9b0a6e944c1a67d6814ffa4b007", "is_error": false, "name": "\u0421\u0430\u0445\u0430\u0440", "unit": { @@ -66,13 +66,13 @@ "base_unit": null, "coefficient": 1, "description": "", - "id": "6b2f766223044776944a8a7078c1e36b", + "id": "88a5e528e9da41b5a8169db96b28892d", "is_error": false, "name": "\u0433\u0440\u0430\u043c\u043c" }, "coefficient": 1000, "description": "", - "id": "4f780e91e4f544cb90ab579f19fc6463", + "id": "126b164af0304958a081a9af5c999569", "is_error": false, "name": "\u043a\u0438\u043b\u043b\u043e\u0433\u0440\u0430\u043c\u043c" } @@ -82,25 +82,25 @@ "base_unit": null, "coefficient": 1, "description": "", - "id": "6b2f766223044776944a8a7078c1e36b", + "id": "88a5e528e9da41b5a8169db96b28892d", "is_error": false, "name": "\u0433\u0440\u0430\u043c\u043c" } }, "\u0421\u043b\u0438\u0432\u043e\u0447\u043d\u043e\u0435 \u043c\u0430\u0441\u043b\u043e": { "description": "", - "id": "3df6ad6a7a3b4febbd09b8c9881e43f0", + "id": "d3b58a2bd4b8467c81ec61849ce38cd5", "is_error": false, "name": "\u0421\u043b\u0438\u0432\u043e\u0447\u043d\u043e\u0435 \u043c\u0430\u0441\u043b\u043e", "nomenclature": { "description": "", "group": { "description": "", - "id": "b98ad33f66b64a149ce4c3be34bbc116", + "id": "d8c0b9f7371a49ceaea4d7c86943a656", "is_error": false, "name": "\u0418\u043d\u0433\u0440\u0435\u0434\u0438\u0435\u043d\u0442\u044b" }, - "id": "46d0ce6a74594431b63c33b6d5965af0", + "id": "204107a14ba74e88843a2eba9b500eca", "is_error": false, "name": "\u0421\u043b\u0438\u0432\u043e\u0447\u043d\u043e\u0435 \u043c\u0430\u0441\u043b\u043e", "unit": { @@ -108,13 +108,13 @@ "base_unit": null, "coefficient": 1, "description": "", - "id": "6b2f766223044776944a8a7078c1e36b", + "id": "88a5e528e9da41b5a8169db96b28892d", "is_error": false, "name": "\u0433\u0440\u0430\u043c\u043c" }, "coefficient": 1000, "description": "", - "id": "4f780e91e4f544cb90ab579f19fc6463", + "id": "126b164af0304958a081a9af5c999569", "is_error": false, "name": "\u043a\u0438\u043b\u043b\u043e\u0433\u0440\u0430\u043c\u043c" } @@ -124,32 +124,32 @@ "base_unit": null, "coefficient": 1, "description": "", - "id": "6b2f766223044776944a8a7078c1e36b", + "id": "88a5e528e9da41b5a8169db96b28892d", "is_error": false, "name": "\u0433\u0440\u0430\u043c\u043c" } }, "\u042f\u0439\u0446\u0430": { "description": "", - "id": "25fbacf28a944bf3833727d92556e27a", + "id": "58b074dbff7e4a2186963b581e8378d6", "is_error": false, "name": "\u042f\u0439\u0446\u0430", "nomenclature": { "description": "", "group": { "description": "", - "id": "b98ad33f66b64a149ce4c3be34bbc116", + "id": "d8c0b9f7371a49ceaea4d7c86943a656", "is_error": false, "name": "\u0418\u043d\u0433\u0440\u0435\u0434\u0438\u0435\u043d\u0442\u044b" }, - "id": "201c716dab504bd3b5901d197ab7ae06", + "id": "0568be120bba416c9be71831355f1e08", "is_error": false, "name": "\u042f\u0439\u0446\u0430", "unit": { "base_unit": null, "coefficient": 1, "description": "", - "id": "cc4c8224e80a437d86c0e4b5c481906d", + "id": "50e4e04ee80e4d0c85596323454e9714", "is_error": false, "name": "\u0448\u0442\u0443\u043a\u0430" } @@ -159,14 +159,14 @@ "base_unit": null, "coefficient": 1, "description": "", - "id": "cc4c8224e80a437d86c0e4b5c481906d", + "id": "50e4e04ee80e4d0c85596323454e9714", "is_error": false, "name": "\u0448\u0442\u0443\u043a\u0430" } } }, "description": "", - "id": "37519e71920d4f54870d62cf93bff852", + "id": "8aca385d90fc4b4587455893ae574bc3", "instructions": [ { "instructions": "\u041c\u0430\u0441\u043b\u043e \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435 \u0432 \u0441\u043e\u0442\u0435\u0439\u043d\u0438\u043a \u0441 \u0442\u043e\u043b\u0441\u0442\u044b\u043c \u0434\u043d\u043e\u043c. \u0420\u0430\u0441\u0442\u043e\u043f\u0438\u0442\u0435 \u0435\u0433\u043e \u043d\u0430 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u043e\u043c \u043e\u0433\u043d\u0435 \u043d\u0430 \u043f\u043b\u0438\u0442\u0435, \u043d\u0430 \u0432\u043e\u0434\u044f\u043d\u043e\u0439 \u0431\u0430\u043d\u0435 \u043b\u0438\u0431\u043e \u0432 \u043c\u0438\u043a\u0440\u043e\u0432\u043e\u043b\u043d\u043e\u0432\u043a\u0435." @@ -194,18 +194,18 @@ "consist": { "\u0411\u0435\u043b\u044b\u0439 \u0445\u043b\u0435\u0431": { "description": "", - "id": "15aecc37e6964f88ac538c581b22408f", + "id": "4b0fd3806ba74edb8081d1e39d3f8b2e", "is_error": false, "name": "\u0411\u0435\u043b\u044b\u0439 \u0445\u043b\u0435\u0431", "nomenclature": { "description": "", "group": { "description": "", - "id": "b98ad33f66b64a149ce4c3be34bbc116", + "id": "d8c0b9f7371a49ceaea4d7c86943a656", "is_error": false, "name": "\u0418\u043d\u0433\u0440\u0435\u0434\u0438\u0435\u043d\u0442\u044b" }, - "id": "53b72f78aa0f4b8fa4e046443f0a07f4", + "id": "b006676b43a747209e271d48c0dd35e1", "is_error": false, "name": "\u0411\u0435\u043b\u044b\u0439 \u0445\u043b\u0435\u0431", "unit": { @@ -213,13 +213,13 @@ "base_unit": null, "coefficient": 1, "description": "", - "id": "6b2f766223044776944a8a7078c1e36b", + "id": "88a5e528e9da41b5a8169db96b28892d", "is_error": false, "name": "\u0433\u0440\u0430\u043c\u043c" }, "coefficient": 1000, "description": "", - "id": "4f780e91e4f544cb90ab579f19fc6463", + "id": "126b164af0304958a081a9af5c999569", "is_error": false, "name": "\u043a\u0438\u043b\u043b\u043e\u0433\u0440\u0430\u043c\u043c" } @@ -229,32 +229,32 @@ "base_unit": null, "coefficient": 1, "description": "", - "id": "6b2f766223044776944a8a7078c1e36b", + "id": "88a5e528e9da41b5a8169db96b28892d", "is_error": false, "name": "\u0433\u0440\u0430\u043c\u043c" } }, "\u0413\u043e\u0440\u0447\u0438\u0446\u0430 \u0434\u0438\u0436\u043e\u043d\u0441\u043a\u0430\u044f": { "description": "", - "id": "4590bd0ed696489e8a4343134d95b859", + "id": "93608b3924a84e8d9484b257bbd0e206", "is_error": false, "name": "\u0413\u043e\u0440\u0447\u0438\u0446\u0430 \u0434\u0438\u0436\u043e\u043d\u0441\u043a\u0430\u044f", "nomenclature": { "description": "", "group": { "description": "", - "id": "b98ad33f66b64a149ce4c3be34bbc116", + "id": "d8c0b9f7371a49ceaea4d7c86943a656", "is_error": false, "name": "\u0418\u043d\u0433\u0440\u0435\u0434\u0438\u0435\u043d\u0442\u044b" }, - "id": "02d251e8ec6a41a181dd6659a5fc6fcc", + "id": "398dbdb1b660492b93848311928f572f", "is_error": false, "name": "\u0413\u043e\u0440\u0447\u0438\u0446\u0430 \u0434\u0438\u0436\u043e\u043d\u0441\u043a\u0430\u044f", "unit": { "base_unit": null, "coefficient": 1, "description": "", - "id": "6ab9c3fe9f5f4ed1b2b2d646352effd5", + "id": "671256d2e5064092bec3fc2df7f9c630", "is_error": false, "name": "\u0433\u0440\u0430\u043c\u043c" } @@ -264,25 +264,25 @@ "base_unit": null, "coefficient": 1, "description": "", - "id": "6ab9c3fe9f5f4ed1b2b2d646352effd5", + "id": "671256d2e5064092bec3fc2df7f9c630", "is_error": false, "name": "\u0433\u0440\u0430\u043c\u043c" } }, "\u041a\u0443\u0440\u0438\u043d\u043d\u043e\u0435 \u0444\u0438\u043b\u0435": { "description": "", - "id": "84e43acba92142539d570d9615d77692", + "id": "4653df93f31348b3a5fc21e7930246b6", "is_error": false, "name": "\u041a\u0443\u0440\u0438\u043d\u043d\u043e\u0435 \u0444\u0438\u043b\u0435", "nomenclature": { "description": "", "group": { "description": "", - "id": "b98ad33f66b64a149ce4c3be34bbc116", + "id": "d8c0b9f7371a49ceaea4d7c86943a656", "is_error": false, "name": "\u0418\u043d\u0433\u0440\u0435\u0434\u0438\u0435\u043d\u0442\u044b" }, - "id": "69da6c4defb341a8b17d90f688cc4747", + "id": "4b46287bd403476db7f8df004a919808", "is_error": false, "name": "\u041a\u0443\u0440\u0438\u043d\u043d\u043e\u0435 \u0444\u0438\u043b\u0435", "unit": { @@ -290,13 +290,13 @@ "base_unit": null, "coefficient": 1, "description": "", - "id": "6b2f766223044776944a8a7078c1e36b", + "id": "88a5e528e9da41b5a8169db96b28892d", "is_error": false, "name": "\u0433\u0440\u0430\u043c\u043c" }, "coefficient": 1000, "description": "", - "id": "4f780e91e4f544cb90ab579f19fc6463", + "id": "126b164af0304958a081a9af5c999569", "is_error": false, "name": "\u043a\u0438\u043b\u043b\u043e\u0433\u0440\u0430\u043c\u043c" } @@ -306,25 +306,25 @@ "base_unit": null, "coefficient": 1, "description": "", - "id": "6b2f766223044776944a8a7078c1e36b", + "id": "88a5e528e9da41b5a8169db96b28892d", "is_error": false, "name": "\u0433\u0440\u0430\u043c\u043c" } }, "\u041b\u0438\u043c\u043e\u043d\u043d\u044b\u0439 \u0441\u043e\u043a": { "description": "", - "id": "956f5f02ad464379af83bc62e0ee2787", + "id": "7ffad85a005744e98e07a63c22cc577b", "is_error": false, "name": "\u041b\u0438\u043c\u043e\u043d\u043d\u044b\u0439 \u0441\u043e\u043a", "nomenclature": { "description": "", "group": { "description": "", - "id": "b98ad33f66b64a149ce4c3be34bbc116", + "id": "d8c0b9f7371a49ceaea4d7c86943a656", "is_error": false, "name": "\u0418\u043d\u0433\u0440\u0435\u0434\u0438\u0435\u043d\u0442\u044b" }, - "id": "37c6f449d5254611ae354f1b65bb2d1d", + "id": "093dc1c4a242403982c7900b8e6516aa", "is_error": false, "name": "\u041b\u0438\u043c\u043e\u043d\u043d\u044b\u0439 \u0441\u043e\u043a", "unit": { @@ -332,13 +332,13 @@ "base_unit": null, "coefficient": 1, "description": "", - "id": "5addd6db1a5e437bbf89c7fe49ef24b0", + "id": "ce13523c33a4459a85d68af44b89f0d0", "is_error": false, "name": "\u043c\u0438\u043b\u043b\u0438\u043b\u0438\u0442\u0440" }, "coefficient": 1000, "description": "", - "id": "9d69adc76ab84bd58f02e4471c092179", + "id": "36f5e136c4594f9d9c0dc6d7dd1aa80c", "is_error": false, "name": "\u043b\u0438\u0442\u0440" } @@ -348,25 +348,25 @@ "base_unit": null, "coefficient": 1, "description": "", - "id": "5addd6db1a5e437bbf89c7fe49ef24b0", + "id": "ce13523c33a4459a85d68af44b89f0d0", "is_error": false, "name": "\u043c\u0438\u043b\u043b\u0438\u043b\u0438\u0442\u0440" } }, "\u041e\u043b\u0438\u0432\u043a\u043e\u0432\u043e\u0435 \u043c\u0430\u0441\u043b\u043e": { "description": "", - "id": "39c528c94f814f5c8f5274d14c48f853", + "id": "f2d767fd474645e993799f2a081e2456", "is_error": false, "name": "\u041e\u043b\u0438\u0432\u043a\u043e\u0432\u043e\u0435 \u043c\u0430\u0441\u043b\u043e", "nomenclature": { "description": "", "group": { "description": "", - "id": "b98ad33f66b64a149ce4c3be34bbc116", + "id": "d8c0b9f7371a49ceaea4d7c86943a656", "is_error": false, "name": "\u0418\u043d\u0433\u0440\u0435\u0434\u0438\u0435\u043d\u0442\u044b" }, - "id": "973f1fd272634eabb7e0ed9439b09023", + "id": "92d2a2822c164a0db531a5b85f353c65", "is_error": false, "name": "\u041e\u043b\u0438\u0432\u043a\u043e\u0432\u043e\u0435 \u043c\u0430\u0441\u043b\u043e", "unit": { @@ -374,13 +374,13 @@ "base_unit": null, "coefficient": 1, "description": "", - "id": "5addd6db1a5e437bbf89c7fe49ef24b0", + "id": "ce13523c33a4459a85d68af44b89f0d0", "is_error": false, "name": "\u043c\u0438\u043b\u043b\u0438\u043b\u0438\u0442\u0440" }, "coefficient": 1000, "description": "", - "id": "9d69adc76ab84bd58f02e4471c092179", + "id": "36f5e136c4594f9d9c0dc6d7dd1aa80c", "is_error": false, "name": "\u043b\u0438\u0442\u0440" } @@ -390,32 +390,32 @@ "base_unit": null, "coefficient": 1, "description": "", - "id": "5addd6db1a5e437bbf89c7fe49ef24b0", + "id": "ce13523c33a4459a85d68af44b89f0d0", "is_error": false, "name": "\u043c\u0438\u043b\u043b\u0438\u043b\u0438\u0442\u0440" } }, "\u0421\u0430\u043b\u0430\u0442 \u0420\u043e\u043c\u0430\u043d\u043e": { "description": "", - "id": "29ed510765524089837986278a00a3a6", + "id": "a492560eb7004e979edce853741243fd", "is_error": false, "name": "\u0421\u0430\u043b\u0430\u0442 \u0420\u043e\u043c\u0430\u043d\u043e", "nomenclature": { "description": "", "group": { "description": "", - "id": "b98ad33f66b64a149ce4c3be34bbc116", + "id": "d8c0b9f7371a49ceaea4d7c86943a656", "is_error": false, "name": "\u0418\u043d\u0433\u0440\u0435\u0434\u0438\u0435\u043d\u0442\u044b" }, - "id": "ac6af82bdd6348febf6070debc57ff59", + "id": "6ee6d349cdf948eab9c90b7423409d9a", "is_error": false, "name": "\u0421\u0430\u043b\u0430\u0442 \u0420\u043e\u043c\u0430\u043d\u043e", "unit": { "base_unit": null, "coefficient": 1, "description": "", - "id": "6ab9c3fe9f5f4ed1b2b2d646352effd5", + "id": "671256d2e5064092bec3fc2df7f9c630", "is_error": false, "name": "\u0433\u0440\u0430\u043c\u043c" } @@ -425,25 +425,25 @@ "base_unit": null, "coefficient": 1, "description": "", - "id": "6ab9c3fe9f5f4ed1b2b2d646352effd5", + "id": "671256d2e5064092bec3fc2df7f9c630", "is_error": false, "name": "\u0433\u0440\u0430\u043c\u043c" } }, "\u0421\u043e\u043b\u044c": { "description": "", - "id": "edc00bb4b7384b3d9e748b862ff1f1fd", + "id": "072ba83db4924f0ca1fd5a0d037aaa0b", "is_error": false, "name": "\u0421\u043e\u043b\u044c", "nomenclature": { "description": "", "group": { "description": "", - "id": "b98ad33f66b64a149ce4c3be34bbc116", + "id": "d8c0b9f7371a49ceaea4d7c86943a656", "is_error": false, "name": "\u0418\u043d\u0433\u0440\u0435\u0434\u0438\u0435\u043d\u0442\u044b" }, - "id": "2aa0ba1ba94c44e19f2b249b82c6c0a8", + "id": "a3ebeb5907bf411f820273ac1c4986f4", "is_error": false, "name": "\u0421\u043e\u043b\u044c", "unit": { @@ -451,13 +451,13 @@ "base_unit": null, "coefficient": 1, "description": "", - "id": "6b2f766223044776944a8a7078c1e36b", + "id": "88a5e528e9da41b5a8169db96b28892d", "is_error": false, "name": "\u0433\u0440\u0430\u043c\u043c" }, "coefficient": 1000, "description": "", - "id": "4f780e91e4f544cb90ab579f19fc6463", + "id": "126b164af0304958a081a9af5c999569", "is_error": false, "name": "\u043a\u0438\u043b\u043b\u043e\u0433\u0440\u0430\u043c\u043c" } @@ -467,25 +467,25 @@ "base_unit": null, "coefficient": 1, "description": "", - "id": "6b2f766223044776944a8a7078c1e36b", + "id": "88a5e528e9da41b5a8169db96b28892d", "is_error": false, "name": "\u0433\u0440\u0430\u043c\u043c" } }, "\u0421\u044b\u0440 \u041f\u0430\u0440\u043c\u0435\u0437\u0430\u043d": { "description": "", - "id": "4c01cc31745f48aea8ffb585280f8c58", + "id": "1fa6afa2677e4d1880fee782c9b4a4bf", "is_error": false, "name": "\u0421\u044b\u0440 \u041f\u0430\u0440\u043c\u0435\u0437\u0430\u043d", "nomenclature": { "description": "", "group": { "description": "", - "id": "b98ad33f66b64a149ce4c3be34bbc116", + "id": "d8c0b9f7371a49ceaea4d7c86943a656", "is_error": false, "name": "\u0418\u043d\u0433\u0440\u0435\u0434\u0438\u0435\u043d\u0442\u044b" }, - "id": "b3f122f0ed4a46fe8848d16238633186", + "id": "341d075fa2024fa28d45e90e5ed696df", "is_error": false, "name": "\u0421\u044b\u0440 \u041f\u0430\u0440\u043c\u0435\u0437\u0430\u043d", "unit": { @@ -493,13 +493,13 @@ "base_unit": null, "coefficient": 1, "description": "", - "id": "6b2f766223044776944a8a7078c1e36b", + "id": "88a5e528e9da41b5a8169db96b28892d", "is_error": false, "name": "\u0433\u0440\u0430\u043c\u043c" }, "coefficient": 1000, "description": "", - "id": "4f780e91e4f544cb90ab579f19fc6463", + "id": "126b164af0304958a081a9af5c999569", "is_error": false, "name": "\u043a\u0438\u043b\u043b\u043e\u0433\u0440\u0430\u043c\u043c" } @@ -509,32 +509,32 @@ "base_unit": null, "coefficient": 1, "description": "", - "id": "6b2f766223044776944a8a7078c1e36b", + "id": "88a5e528e9da41b5a8169db96b28892d", "is_error": false, "name": "\u0433\u0440\u0430\u043c\u043c" } }, "\u0427\u0435\u0440\u043d\u044b\u0439 \u043f\u0435\u0440\u0435\u0446": { "description": "", - "id": "749fe9b908074b288b52ac5bedf4d3c3", + "id": "2280446ef89746e59eaadd413bed1be3", "is_error": false, "name": "\u0427\u0435\u0440\u043d\u044b\u0439 \u043f\u0435\u0440\u0435\u0446", "nomenclature": { "description": "", "group": { "description": "", - "id": "b98ad33f66b64a149ce4c3be34bbc116", + "id": "d8c0b9f7371a49ceaea4d7c86943a656", "is_error": false, "name": "\u0418\u043d\u0433\u0440\u0435\u0434\u0438\u0435\u043d\u0442\u044b" }, - "id": "0303a20c8e0443168cc296faa3592b99", + "id": "b23432909622457891912c61fa3e7f5d", "is_error": false, "name": "\u0427\u0435\u0440\u043d\u044b\u0439 \u043f\u0435\u0440\u0435\u0446", "unit": { "base_unit": null, "coefficient": 1, "description": "", - "id": "6ab9c3fe9f5f4ed1b2b2d646352effd5", + "id": "671256d2e5064092bec3fc2df7f9c630", "is_error": false, "name": "\u0433\u0440\u0430\u043c\u043c" } @@ -544,25 +544,25 @@ "base_unit": null, "coefficient": 1, "description": "", - "id": "6ab9c3fe9f5f4ed1b2b2d646352effd5", + "id": "671256d2e5064092bec3fc2df7f9c630", "is_error": false, "name": "\u0433\u0440\u0430\u043c\u043c" } }, "\u0427\u0435\u0441\u043d\u043e\u043a": { "description": "", - "id": "e23a5cece6214bacb2f0d5a3575eb1a6", + "id": "ca1312b3371948ea8b0741534be6d149", "is_error": false, "name": "\u0427\u0435\u0441\u043d\u043e\u043a", "nomenclature": { "description": "", "group": { "description": "", - "id": "b98ad33f66b64a149ce4c3be34bbc116", + "id": "d8c0b9f7371a49ceaea4d7c86943a656", "is_error": false, "name": "\u0418\u043d\u0433\u0440\u0435\u0434\u0438\u0435\u043d\u0442\u044b" }, - "id": "d87de5c794d14deba04e492255e10fb8", + "id": "b8e51013e1854928b87fbc1585a95027", "is_error": false, "name": "\u0427\u0435\u0441\u043d\u043e\u043a", "unit": { @@ -570,13 +570,13 @@ "base_unit": null, "coefficient": 1, "description": "", - "id": "6b2f766223044776944a8a7078c1e36b", + "id": "88a5e528e9da41b5a8169db96b28892d", "is_error": false, "name": "\u0433\u0440\u0430\u043c\u043c" }, "coefficient": 1000, "description": "", - "id": "4f780e91e4f544cb90ab579f19fc6463", + "id": "126b164af0304958a081a9af5c999569", "is_error": false, "name": "\u043a\u0438\u043b\u043b\u043e\u0433\u0440\u0430\u043c\u043c" } @@ -586,32 +586,32 @@ "base_unit": null, "coefficient": 1, "description": "", - "id": "6b2f766223044776944a8a7078c1e36b", + "id": "88a5e528e9da41b5a8169db96b28892d", "is_error": false, "name": "\u0433\u0440\u0430\u043c\u043c" } }, "\u042f\u0439\u0446\u0430": { "description": "", - "id": "8b6dc84ec2184b08be26e797b0f128a2", + "id": "e2a36e26960c45759348804b17ecbff2", "is_error": false, "name": "\u042f\u0439\u0446\u0430", "nomenclature": { "description": "", "group": { "description": "", - "id": "b98ad33f66b64a149ce4c3be34bbc116", + "id": "d8c0b9f7371a49ceaea4d7c86943a656", "is_error": false, "name": "\u0418\u043d\u0433\u0440\u0435\u0434\u0438\u0435\u043d\u0442\u044b" }, - "id": "201c716dab504bd3b5901d197ab7ae06", + "id": "0568be120bba416c9be71831355f1e08", "is_error": false, "name": "\u042f\u0439\u0446\u0430", "unit": { "base_unit": null, "coefficient": 1, "description": "", - "id": "cc4c8224e80a437d86c0e4b5c481906d", + "id": "50e4e04ee80e4d0c85596323454e9714", "is_error": false, "name": "\u0448\u0442\u0443\u043a\u0430" } @@ -621,14 +621,14 @@ "base_unit": null, "coefficient": 1, "description": "", - "id": "cc4c8224e80a437d86c0e4b5c481906d", + "id": "50e4e04ee80e4d0c85596323454e9714", "is_error": false, "name": "\u0448\u0442\u0443\u043a\u0430" } } }, "description": "", - "id": "05aba11d24cc4d56957e5d6930b329b7", + "id": "77892e827be7456daa154b8086b93c99", "instructions": [], "is_error": false, "name": "\u0426\u0435\u0437\u0430\u0440\u044c \u0441 \u043a\u0443\u0440\u0438\u0446\u0435\u0439", @@ -640,25 +640,25 @@ "consist": { "\u0412\u0430\u043d\u0438\u043b\u0438\u0438\u043d": { "description": "", - "id": "fd81f9b466ad4382a8e595619a1db5cf", + "id": "bf4ffedb25254974b6a861a8d585b9a7", "is_error": false, "name": "\u0412\u0430\u043d\u0438\u043b\u0438\u0438\u043d", "nomenclature": { "description": "", "group": { "description": "", - "id": "b98ad33f66b64a149ce4c3be34bbc116", + "id": "d8c0b9f7371a49ceaea4d7c86943a656", "is_error": false, "name": "\u0418\u043d\u0433\u0440\u0435\u0434\u0438\u0435\u043d\u0442\u044b" }, - "id": "a18090224c4e4551884c0d2fe52e2c91", + "id": "377d0660ab024b678588dba86af5ba25", "is_error": false, "name": "\u0412\u0430\u043d\u0438\u043b\u0438\u0438\u043d", "unit": { "base_unit": null, "coefficient": 1, "description": "", - "id": "6ab9c3fe9f5f4ed1b2b2d646352effd5", + "id": "671256d2e5064092bec3fc2df7f9c630", "is_error": false, "name": "\u0433\u0440\u0430\u043c\u043c" } @@ -668,25 +668,25 @@ "base_unit": null, "coefficient": 1, "description": "", - "id": "6ab9c3fe9f5f4ed1b2b2d646352effd5", + "id": "671256d2e5064092bec3fc2df7f9c630", "is_error": false, "name": "\u0433\u0440\u0430\u043c\u043c" } }, "\u041a\u0430\u043a\u0430\u043e": { "description": "", - "id": "e72614fc7c2d4f0abef0d8db070ef048", + "id": "b469ac0a73d744188bf8a8046eaf8642", "is_error": false, "name": "\u041a\u0430\u043a\u0430\u043e", "nomenclature": { "description": "", "group": { "description": "", - "id": "b98ad33f66b64a149ce4c3be34bbc116", + "id": "d8c0b9f7371a49ceaea4d7c86943a656", "is_error": false, "name": "\u0418\u043d\u0433\u0440\u0435\u0434\u0438\u0435\u043d\u0442\u044b" }, - "id": "57be2d4763f143789aced9133d90e351", + "id": "1606a447ec2a40038e2e212e0df17c99", "is_error": false, "name": "\u041a\u0430\u043a\u0430\u043e", "unit": { @@ -694,13 +694,13 @@ "base_unit": null, "coefficient": 1, "description": "", - "id": "6b2f766223044776944a8a7078c1e36b", + "id": "88a5e528e9da41b5a8169db96b28892d", "is_error": false, "name": "\u0433\u0440\u0430\u043c\u043c" }, "coefficient": 1000, "description": "", - "id": "4f780e91e4f544cb90ab579f19fc6463", + "id": "126b164af0304958a081a9af5c999569", "is_error": false, "name": "\u043a\u0438\u043b\u043b\u043e\u0433\u0440\u0430\u043c\u043c" } @@ -710,32 +710,32 @@ "base_unit": null, "coefficient": 1, "description": "", - "id": "6b2f766223044776944a8a7078c1e36b", + "id": "88a5e528e9da41b5a8169db96b28892d", "is_error": false, "name": "\u0433\u0440\u0430\u043c\u043c" } }, "\u041a\u043e\u0440\u0438\u0446\u0430": { "description": "", - "id": "9a9a0e800c5844b6991ec0160c373ad7", + "id": "1eb499f9610342469d1fc6bf3033ec20", "is_error": false, "name": "\u041a\u043e\u0440\u0438\u0446\u0430", "nomenclature": { "description": "", "group": { "description": "", - "id": "b98ad33f66b64a149ce4c3be34bbc116", + "id": "d8c0b9f7371a49ceaea4d7c86943a656", "is_error": false, "name": "\u0418\u043d\u0433\u0440\u0435\u0434\u0438\u0435\u043d\u0442\u044b" }, - "id": "63df5a9ec4cd44889743c09197b297a6", + "id": "ca482a772efe410daf0be25bfe4bc7e6", "is_error": false, "name": "\u041a\u043e\u0440\u0438\u0446\u0430", "unit": { "base_unit": null, "coefficient": 1, "description": "", - "id": "6ab9c3fe9f5f4ed1b2b2d646352effd5", + "id": "671256d2e5064092bec3fc2df7f9c630", "is_error": false, "name": "\u0433\u0440\u0430\u043c\u043c" } @@ -745,32 +745,32 @@ "base_unit": null, "coefficient": 1, "description": "", - "id": "6ab9c3fe9f5f4ed1b2b2d646352effd5", + "id": "671256d2e5064092bec3fc2df7f9c630", "is_error": false, "name": "\u0433\u0440\u0430\u043c\u043c" } }, "\u0421\u0430\u0445\u0430\u0440\u043d\u0430\u044f \u043f\u0443\u0434\u0440\u0430": { "description": "", - "id": "ebf7ce33a8604e7f8f2aa4ba19171152", + "id": "a779a64a982f46b699c72b89c5820032", "is_error": false, "name": "\u0421\u0430\u0445\u0430\u0440\u043d\u0430\u044f \u043f\u0443\u0434\u0440\u0430", "nomenclature": { "description": "", "group": { "description": "", - "id": "b98ad33f66b64a149ce4c3be34bbc116", + "id": "d8c0b9f7371a49ceaea4d7c86943a656", "is_error": false, "name": "\u0418\u043d\u0433\u0440\u0435\u0434\u0438\u0435\u043d\u0442\u044b" }, - "id": "00869dd3ce6744b2ae97a7f54d86c1bb", + "id": "39d3df26f80e466b9c4949d53a2cae8a", "is_error": false, "name": "\u0421\u0430\u0445\u0430\u0440\u043d\u0430\u044f \u043f\u0443\u0434\u0440\u0430", "unit": { "base_unit": null, "coefficient": 1, "description": "", - "id": "6ab9c3fe9f5f4ed1b2b2d646352effd5", + "id": "671256d2e5064092bec3fc2df7f9c630", "is_error": false, "name": "\u0433\u0440\u0430\u043c\u043c" } @@ -780,32 +780,32 @@ "base_unit": null, "coefficient": 1, "description": "", - "id": "6ab9c3fe9f5f4ed1b2b2d646352effd5", + "id": "671256d2e5064092bec3fc2df7f9c630", "is_error": false, "name": "\u0433\u0440\u0430\u043c\u043c" } }, "\u042f\u0439\u0446\u0430": { "description": "", - "id": "5a14fa59332046f9ba142ed4e41fd3a4", + "id": "4deb578576d94073b306b3761ee31fdb", "is_error": false, "name": "\u042f\u0439\u0446\u0430", "nomenclature": { "description": "", "group": { "description": "", - "id": "b98ad33f66b64a149ce4c3be34bbc116", + "id": "d8c0b9f7371a49ceaea4d7c86943a656", "is_error": false, "name": "\u0418\u043d\u0433\u0440\u0435\u0434\u0438\u0435\u043d\u0442\u044b" }, - "id": "201c716dab504bd3b5901d197ab7ae06", + "id": "0568be120bba416c9be71831355f1e08", "is_error": false, "name": "\u042f\u0439\u0446\u0430", "unit": { "base_unit": null, "coefficient": 1, "description": "", - "id": "cc4c8224e80a437d86c0e4b5c481906d", + "id": "50e4e04ee80e4d0c85596323454e9714", "is_error": false, "name": "\u0448\u0442\u0443\u043a\u0430" } @@ -815,14 +815,14 @@ "base_unit": null, "coefficient": 1, "description": "", - "id": "cc4c8224e80a437d86c0e4b5c481906d", + "id": "50e4e04ee80e4d0c85596323454e9714", "is_error": false, "name": "\u0448\u0442\u0443\u043a\u0430" } } }, "description": "", - "id": "da5fb9eb29824f3cade8151a520a5950", + "id": "3d1d35a4b2874e0a9cb6a5c11ebeadbd", "instructions": [], "is_error": false, "name": "\u0411\u0435\u0437\u0435",