oneCInteraction 1.4.2__tar.gz → 1.4.4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. {onecinteraction-1.4.2/src/oneCInteraction.egg-info → onecinteraction-1.4.4}/PKG-INFO +1 -1
  2. {onecinteraction-1.4.2 → onecinteraction-1.4.4}/src/oneCInteraction/log.py +6 -2
  3. {onecinteraction-1.4.2 → onecinteraction-1.4.4}/src/oneCInteraction/nomenclature.py +28 -11
  4. {onecinteraction-1.4.2 → onecinteraction-1.4.4}/src/oneCInteraction/orders.py +16 -9
  5. {onecinteraction-1.4.2 → onecinteraction-1.4.4/src/oneCInteraction.egg-info}/PKG-INFO +1 -1
  6. onecinteraction-1.4.4/src/oneCInteraction.egg-info/scm_version.json +8 -0
  7. onecinteraction-1.4.2/src/oneCInteraction.egg-info/scm_version.json +0 -8
  8. {onecinteraction-1.4.2 → onecinteraction-1.4.4}/.github/workflows/publish.yml +0 -0
  9. {onecinteraction-1.4.2 → onecinteraction-1.4.4}/.gitignore +0 -0
  10. {onecinteraction-1.4.2 → onecinteraction-1.4.4}/LICENSE +0 -0
  11. {onecinteraction-1.4.2 → onecinteraction-1.4.4}/README.md +0 -0
  12. {onecinteraction-1.4.2 → onecinteraction-1.4.4}/pyproject.toml +0 -0
  13. {onecinteraction-1.4.2 → onecinteraction-1.4.4}/setup.cfg +0 -0
  14. {onecinteraction-1.4.2 → onecinteraction-1.4.4}/src/oneCInteraction/__init__.py +0 -0
  15. {onecinteraction-1.4.2 → onecinteraction-1.4.4}/src/oneCInteraction/categories.py +0 -0
  16. {onecinteraction-1.4.2 → onecinteraction-1.4.4}/src/oneCInteraction/characteristics.py +0 -0
  17. {onecinteraction-1.4.2 → onecinteraction-1.4.4}/src/oneCInteraction/connection.py +0 -0
  18. {onecinteraction-1.4.2 → onecinteraction-1.4.4}/src/oneCInteraction/customers.py +0 -0
  19. {onecinteraction-1.4.2 → onecinteraction-1.4.4}/src/oneCInteraction/discounts.py +0 -0
  20. {onecinteraction-1.4.2 → onecinteraction-1.4.4}/src/oneCInteraction/groups.py +0 -0
  21. {onecinteraction-1.4.2 → onecinteraction-1.4.4}/src/oneCInteraction/properties.py +0 -0
  22. {onecinteraction-1.4.2 → onecinteraction-1.4.4}/src/oneCInteraction/structures.py +0 -0
  23. {onecinteraction-1.4.2 → onecinteraction-1.4.4}/src/oneCInteraction.egg-info/SOURCES.txt +0 -0
  24. {onecinteraction-1.4.2 → onecinteraction-1.4.4}/src/oneCInteraction.egg-info/dependency_links.txt +0 -0
  25. {onecinteraction-1.4.2 → onecinteraction-1.4.4}/src/oneCInteraction.egg-info/requires.txt +0 -0
  26. {onecinteraction-1.4.2 → onecinteraction-1.4.4}/src/oneCInteraction.egg-info/scm_file_list.json +0 -0
  27. {onecinteraction-1.4.2 → onecinteraction-1.4.4}/src/oneCInteraction.egg-info/top_level.txt +0 -0
  28. {onecinteraction-1.4.2 → onecinteraction-1.4.4}/tests/test_lib.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: oneCInteraction
3
- Version: 1.4.2
3
+ Version: 1.4.4
4
4
  Summary: A Python library for interacting with 1C:Enterprise databases via COM connection.
5
5
  Author: agcl
6
6
  Classifier: Programming Language :: Python :: 3
@@ -2,6 +2,9 @@ import inspect
2
2
  import os
3
3
  from datetime import datetime
4
4
  import sys
5
+ import threading
6
+
7
+ _log_lock = threading.Lock()
5
8
 
6
9
  # Determine the root directory of the project importing this library
7
10
  main_module = sys.modules.get('__main__')
@@ -29,5 +32,6 @@ def log_sys(message, errorFlag = 0, user_id = None):
29
32
  log(log_path, log_text)
30
33
 
31
34
  def log(file_path, log_text):
32
- with open(file_path, "a", encoding="utf-8") as f:
33
- f.write(log_text)
35
+ with _log_lock:
36
+ with open(file_path, "a", encoding="utf-8") as f:
37
+ f.write(log_text)
@@ -335,7 +335,7 @@ class NomenclatureManager:
335
335
  ON GeneralWholesalePrices.Номенклатура = MainTable.Ссылка
336
336
  LEFT JOIN РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&CurrentDate, Номенклатура В (&ProductRefs) AND ТипЦен = &PurchasePriceType AND ХарактеристикаНоменклатуры = ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка)) AS GeneralPurchasePrices
337
337
  ON GeneralPurchasePrices.Номенклатура = MainTable.Ссылка
338
- LEFT JOIN РегистрНакопления.ТоварыНаСкладах.Остатки(&CurrentDate, Номенклатура В (&ProductRefs)) AS Stocks
338
+ LEFT JOIN РегистрНакопления.ТоварыНаСкладах.Остатки(, Номенклатура В (&ProductRefs)) AS Stocks
339
339
  ON Stocks.Номенклатура = MainTable.Ссылка AND Stocks.ХарактеристикаНоменклатуры = ISNULL(Chars.Ссылка, ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка))
340
340
  WHERE
341
341
  MainTable.Ссылка В (&ProductRefs)
@@ -451,7 +451,7 @@ class NomenclatureManager:
451
451
 
452
452
  c_query = self.c_v8.NewObject("Query")
453
453
  c_query.Text = """
454
- SELECT Объект AS ProductRef, Ссылка AS ImageRef, ХешФайла AS DataVersion, ИмяФайла AS FileName
454
+ SELECT Объект AS ProductRef, Ссылка AS ImageRef, ХешФайла AS FileHash, ВерсияДанных AS DataVersion, ИмяФайла AS FileName
455
455
  FROM Справочник.ХранилищеДополнительнойИнформации
456
456
  WHERE Объект В (&ProductRefs) AND ПометкаУдаления = ЛОЖЬ
457
457
  ORDER BY Наименование
@@ -466,15 +466,24 @@ class NomenclatureManager:
466
466
  while c_sel.Next():
467
467
  s_productUuid = self.c_v8.String(c_sel.ProductRef.UUID())
468
468
  s_imageUuid = self.c_v8.String(c_sel.ImageRef.UUID())
469
- # ВерсияДанных is a guaranteed system field. Convert via XMLСтрока.
469
+
470
470
  s_version = ""
471
471
  try:
472
- s_version = self.c_v8.XMLСтрока(c_sel.DataVersion)
472
+ # Спершу пробуємо ХешФайла
473
+ s_version = self.c_v8.String(c_sel.FileHash)
473
474
  except Exception:
475
+ pass
476
+
477
+ # Якщо ХешФайла пустий, використовуємо ВерсияДанных як фолбек
478
+ if not s_version:
474
479
  try:
475
- s_version = self.c_v8.String(c_sel.DataVersion)
480
+ s_version = self.c_v8.XMLСтрока(c_sel.DataVersion)
476
481
  except Exception:
477
- pass
482
+ try:
483
+ s_version = self.c_v8.String(c_sel.DataVersion)
484
+ except Exception:
485
+ pass
486
+
478
487
  try:
479
488
  s_fname = self.c_v8.String(c_sel.FileName)
480
489
  if s_fname:
@@ -555,7 +564,7 @@ class NomenclatureManager:
555
564
  ON ИСТИНА
556
565
  LEFT JOIN РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&CurrentDate, Номенклатура = &ProductRef AND ТипЦен = &PurchasePriceType AND ХарактеристикаНоменклатуры = ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка)) AS GeneralPurchasePrices
557
566
  ON ИСТИНА
558
- LEFT JOIN РегистрНакопления.ТоварыНаСкладах.Остатки(&CurrentDate, Номенклатура = &ProductRef) AS Stocks
567
+ LEFT JOIN РегистрНакопления.ТоварыНаСкладах.Остатки(, Номенклатура = &ProductRef) AS Stocks
559
568
  ON Stocks.ХарактеристикаНоменклатуры = ISNULL(Chars.Ссылка, ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка))
560
569
  WHERE
561
570
  (Chars.Ссылка ЕСТЬ НЕ NULL)
@@ -716,7 +725,7 @@ class NomenclatureManager:
716
725
 
717
726
  c_query = self.c_v8.NewObject("Query")
718
727
  c_query.Text = """
719
- SELECT Ссылка, ХешФайла AS DataVersion, ИмяФайла AS FileName
728
+ SELECT Ссылка, ХешФайла AS FileHash, ВерсияДанных AS DataVersion, ИмяФайла AS FileName
720
729
  FROM Справочник.ХранилищеДополнительнойИнформации
721
730
  WHERE Объект = &ProductRef AND ПометкаУдаления = ЛОЖЬ
722
731
  ORDER BY Наименование
@@ -727,14 +736,22 @@ class NomenclatureManager:
727
736
  c_sel = c_res.Select()
728
737
  while c_sel.Next():
729
738
  s_imgUuid = self.c_v8.String(c_sel.Ссылка.UUID())
739
+
730
740
  s_ver = ""
731
741
  try:
732
- s_ver = self.c_v8.XMLСтрока(c_sel.DataVersion)
742
+ s_ver = self.c_v8.String(c_sel.FileHash)
733
743
  except Exception:
744
+ pass
745
+
746
+ if not s_ver:
734
747
  try:
735
- s_ver = self.c_v8.String(c_sel.DataVersion)
748
+ s_ver = self.c_v8.XMLСтрока(c_sel.DataVersion)
736
749
  except Exception:
737
- pass
750
+ try:
751
+ s_ver = self.c_v8.String(c_sel.DataVersion)
752
+ except Exception:
753
+ pass
754
+
738
755
  try:
739
756
  s_fname = self.c_v8.String(c_sel.FileName)
740
757
  if s_fname:
@@ -37,15 +37,22 @@ class OrdersManager:
37
37
 
38
38
  # Date
39
39
  log_sys("Trying to add date to order...")
40
- if getattr(c_orderObjIn, "dt_date", None) is not None:
41
- order_date = c_orderObjIn.dt_date
42
- if order_date.tzinfo is not None:
43
- order_date = order_date.astimezone(self.c_connection.tz_kiev).replace(tzinfo=None)
44
- c_newOrder.Дата = order_date
45
- log_sys(f"Date from order object successfully added: {order_date}")
46
- else:
47
- c_newOrder.Дата = datetime.now(self.c_connection.tz_kiev).replace(tzinfo=None)
48
- log_sys("Current date/time successfully added")
40
+ try:
41
+ if getattr(c_orderObjIn, "dt_date", None) is not None:
42
+ order_date = c_orderObjIn.dt_date
43
+ if order_date.tzinfo is not None:
44
+ order_date = order_date.astimezone(self.c_connection.tz_kiev).replace(tzinfo=None)
45
+ c_newOrder.Дата = order_date
46
+ log_sys(f"Date from order object successfully added: {order_date}")
47
+ else:
48
+ c_newOrder.Дата = datetime.now(self.c_connection.tz_kiev).replace(tzinfo=None)
49
+ log_sys("Current date/time successfully added")
50
+ except Exception as e:
51
+ log_sys(f"Failed to set date ({e}), trying fallback", 1)
52
+ try:
53
+ c_newOrder.Дата = datetime.now()
54
+ except Exception:
55
+ pass
49
56
 
50
57
  # Client / Counteragent
51
58
  c_clientRef = None
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: oneCInteraction
3
- Version: 1.4.2
3
+ Version: 1.4.4
4
4
  Summary: A Python library for interacting with 1C:Enterprise databases via COM connection.
5
5
  Author: agcl
6
6
  Classifier: Programming Language :: Python :: 3
@@ -0,0 +1,8 @@
1
+ {
2
+ "tag": "1.4.4",
3
+ "distance": 0,
4
+ "node": "g31e960fe434d18b693afc7a4950f43255eb7441d",
5
+ "dirty": false,
6
+ "branch": "HEAD",
7
+ "node_date": "2026-09-10"
8
+ }
@@ -1,8 +0,0 @@
1
- {
2
- "tag": "1.4.2",
3
- "distance": 0,
4
- "node": "gcfe51e6b4a107f559d67be8762bb7526f86e3c1a",
5
- "dirty": false,
6
- "branch": "HEAD",
7
- "node_date": "2026-09-05"
8
- }
File without changes