From dbe6d4c7e4f0a2f86263b4bb3eb9dc40b9014768 Mon Sep 17 00:00:00 2001 From: Yury Kamisov <69485624+infina15@users.noreply.github.com> Date: Wed, 29 May 2024 23:35:11 +0300 Subject: [PATCH 1/5] Update README.md for https://github.com/infina15/oproxy/issues/15 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4f2d453..cb30e1a 100644 --- a/README.md +++ b/README.md @@ -57,7 +57,7 @@ oproxy init Функция ПостОбработкаПомещенияВХранилище() Экспорт ``` ПараметрыЗапроса - это структура, в которой всегда есть поля: -- ИмяСистемы - Строка - название хранилища в нижнем регистре. Название такое же, как при подключении конфигуратора к хранилищу. Например для подключения tcp://server.local:1544/BAZA ИмяСистемы будет baza +- ИмяБазы - Строка - название хранилища в нижнем регистре. Название такое же, как при подключении конфигуратора к хранилищу. Например для подключения tcp://server.local:1544/BAZA ИмяСистемы будет baza - ИмяМетода - Строка - DevDepot_commitObjects (для помещения в хранилище) или DevDepot_changeVersion (для изменения версии хранилища) - ВерсияПлатформы - Строка - версия платформы, с которой обращается конфигуратор, например 8.3.22.2143 - Проверять - Булево - всегда Истина From c298fba352863701730827d60e1d8e9cb38c7592 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=98=D0=B2=D0=B0=D0=BD=20=D0=9A=D0=B0=D1=80=D0=BB=D0=BE?= Date: Thu, 6 Jun 2024 09:58:12 +0300 Subject: [PATCH 2/5] =?UTF-8?q?doc:=20=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B0=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BA=D0=B0?= =?UTF-8?q?=20=D0=B2=20=D0=B4=D0=BE=D0=BA=D1=83=D0=BC=D0=B5=D0=BD=D1=82?= =?UTF-8?q?=D0=B0=D1=86=D0=B8=D0=B8=20(#16)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * docs: исправлена ошибка в описании параметров [skip ci] Исправлен параметр ИмяБазы на ИмяСистемы --------- Co-authored-by: Karlo Ivan --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index cb30e1a..02196f4 100644 --- a/README.md +++ b/README.md @@ -57,7 +57,7 @@ oproxy init Функция ПостОбработкаПомещенияВХранилище() Экспорт ``` ПараметрыЗапроса - это структура, в которой всегда есть поля: -- ИмяБазы - Строка - название хранилища в нижнем регистре. Название такое же, как при подключении конфигуратора к хранилищу. Например для подключения tcp://server.local:1544/BAZA ИмяСистемы будет baza +- ИмяСистемы - Строка - название хранилища в нижнем регистре. Название такое же, как при подключении конфигуратора к хранилищу. Например для подключения tcp://server.local:1544/BAZA ИмяСистемы будет baza - ИмяМетода - Строка - DevDepot_commitObjects (для помещения в хранилище) или DevDepot_changeVersion (для изменения версии хранилища) - ВерсияПлатформы - Строка - версия платформы, с которой обращается конфигуратор, например 8.3.22.2143 - Проверять - Булево - всегда Истина @@ -72,7 +72,7 @@ oproxy init ```bsl Функция ОбработкаПомещенияВХранилище(ПараметрыЗапроса) Экспорт СообщениеОбОшибке = ""; - Если ПараметрыЗапроса.ИмяБазы = "baza1" Тогда + Если ПараметрыЗапроса.ИмяСистемы = "baza1" Тогда Если НЕ СтрНачинаетсяС(ПараметрыЗапроса.Комментарий, "ERP-") Тогда СообщениеОбОшибке = "Комментарий должен начинаться с ""ERP-""!"; Иначе From f698fca4520bb28cbfb105b75b70687c9f69ee68 Mon Sep 17 00:00:00 2001 From: dvb1t Date: Fri, 10 Oct 2025 15:53:06 +0300 Subject: [PATCH 3/5] feat: fix post processing --- ...21\200\320\270\320\274\320\265\321\200.os" | 2 +- ...20\275\320\265\320\275\320\270\320\271.os" | 33 ++++++++++++++----- 2 files changed, 26 insertions(+), 9 deletions(-) diff --git "a/features/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\270\320\237\321\200\320\276\320\272\321\201\320\270\320\241\320\265\321\200\320\262\320\265\321\200\320\260_\320\237\321\200\320\270\320\274\320\265\321\200.os" "b/features/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\270\320\237\321\200\320\276\320\272\321\201\320\270\320\241\320\265\321\200\320\262\320\265\321\200\320\260_\320\237\321\200\320\270\320\274\320\265\321\200.os" index cdaf1fe..55978e1 100644 --- "a/features/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\270\320\237\321\200\320\276\320\272\321\201\320\270\320\241\320\265\321\200\320\262\320\265\321\200\320\260_\320\237\321\200\320\270\320\274\320\265\321\200.os" +++ "b/features/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\270\320\237\321\200\320\276\320\272\321\201\320\270\320\241\320\265\321\200\320\262\320\265\321\200\320\260_\320\237\321\200\320\270\320\274\320\265\321\200.os" @@ -45,7 +45,7 @@ //СИСТЕМНЫЙ КОД --- //СИСТЕМНЫЙ КОД +++ -Функция ПостОбработкаПомещенияВХранилище() Экспорт +Функция ПостОбработкаПомещенияВХранилище(ПараметрыЗапроса) Экспорт РезультатБулево = Истина; //СИСТЕМНЫЙ КОД --- diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\236\320\261\321\200\320\260\320\261\320\276\321\202\321\207\320\270\320\272\320\241\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\270\320\271.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\236\320\261\321\200\320\260\320\261\320\276\321\202\321\207\320\270\320\272\320\241\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\270\320\271.os" index 73ee397..a73b774 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\236\320\261\321\200\320\260\320\261\320\276\321\202\321\207\320\270\320\272\320\241\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\270\320\271.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\236\320\261\321\200\320\260\320\261\320\276\321\202\321\207\320\270\320\272\320\241\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\270\320\271.os" @@ -11,18 +11,26 @@ КонецПроцедуры Процедура ОбработатьСоединение(Соединение_Конфигуратор) Экспорт + Соединение_Хранилище = Неопределено; + ПараметрыЗапроса = Неопределено; Пока Соединение_Конфигуратор.Активно Цикл - Если ИзКонфигуратораВХранилище(Соединение_Конфигуратор, Соединение_Хранилище) Тогда + ВыполнитьПостОбработку = Ложь; + Если ИзКонфигуратораВХранилище(Соединение_Конфигуратор, Соединение_Хранилище, ПараметрыЗапроса, ВыполнитьПостОбработку) Тогда ИзХранилищаВКонфигуратор(Соединение_Конфигуратор, Соединение_Хранилище); - ПостОбработкаПомещенияВХранилище(); + КонецЕсли; + Если ВыполнитьПостОбработку Тогда + ПостОбработкаПомещенияВХранилище(ПараметрыЗапроса); КонецЕсли; КонецЦикла; + Соединение_Конфигуратор.Закрыть(); Соединение_Хранилище.Закрыть(); + КонецПроцедуры -Функция ИзКонфигуратораВХранилище(Соединение_Конфигуратор, Соединение_Хранилище) +Функция ИзКонфигуратораВХранилище(Соединение_Конфигуратор, Соединение_Хранилище, + ПараметрыЗапроса, ВыполнитьПостОбработку) ДанныеСоединения = Неопределено; ЕстьПодключениеКХранилищу = Соединение_Хранилище <> Неопределено; Если НЕ ЕстьПодключениеКХранилищу Тогда @@ -41,7 +49,8 @@ ПараметрыЗапроса = ОбработкаДанных.ПолучитьПараметрыЗапроса(ДанныеСоединения); Если ПараметрыЗапроса <> Неопределено И ПараметрыЗапроса.Проверять = Истина Тогда - ПродолжитьСоединение = ОбработатьПроверяемыйЗапрос(Соединение_Конфигуратор, Соединение_Хранилище, ДанныеСоединения); + ПродолжитьСоединение = ОбработатьПроверяемыйЗапрос(Соединение_Конфигуратор, Соединение_Хранилище, + ДанныеСоединения, ВыполнитьПостОбработку); Возврат ПродолжитьСоединение; КонецЕсли; КонецЕсли; @@ -56,7 +65,8 @@ Возврат НЕ ЭтоПинг; КонецФункции -Функция ОбработатьПроверяемыйЗапрос(Соединение_Конфигуратор, Соединение_Хранилище, ДанныеСоединения) +Функция ОбработатьПроверяемыйЗапрос(Соединение_Конфигуратор, Соединение_Хранилище, + ДанныеСоединения, ВыполнитьПостОбработку) МассивДДЗапроса = Новый Массив; МассивДДЗапроса.Добавить(ДанныеСоединения); Пока НЕ ОбработкаДанных.ЕстьКонецСообщения(ДанныеСоединения) Цикл @@ -73,6 +83,7 @@ ТекстОшибки = ПроверкиПроксиСервера.ОбработкаИзмененияВерсииХранилища(ПараметрыЗапроса); КонецЕсли; Исключение + ВыполнитьПостОбработку = Ложь; ТекстОшибки = СтрШаблон("Ошибка вызова функции в файле ""ПроверкиПроксиСервера.os"": %1", ОписаниеОшибки()); КонецПопытки; ЕстьОшибка = НЕ ПустаяСтрока(ТекстОшибки); @@ -85,7 +96,11 @@ Соединение_Хранилище.ОтправитьДвоичныеДанные(ДанныеСоединения); КонецЦикла; КонецЕсли; + + ВыполнитьПостОбработку = НЕ ЕстьОшибка; + Возврат НЕ ЕстьОшибка; + КонецФункции Процедура ИзХранилищаВКонфигуратор(Соединение_Конфигуратор, Соединение_Хранилище) @@ -104,6 +119,8 @@ Соединение_Хранилище.ПрочитатьДвоичныеДанные(); КонецПроцедуры -Процедура ПостОбработкаПомещенияВХранилище() - РезультатБулево = ПроверкиПроксиСервера.ПостОбработкаПомещенияВХранилище(); -КонецПроцедуры +Процедура ПостОбработкаПомещенияВХранилище(ПараметрыЗапроса) + Если ПараметрыЗапроса <> Неопределено Тогда + РезультатБулево = ПроверкиПроксиСервера.ПостОбработкаПомещенияВХранилище(ПараметрыЗапроса); + КонецЕсли; +КонецПроцедуры \ No newline at end of file From 4c9583fa4cdf6a3e001afdaebea0d7dd8455d2d4 Mon Sep 17 00:00:00 2001 From: dvb1t Date: Fri, 10 Oct 2025 15:54:45 +0300 Subject: [PATCH 4/5] fix: update version --- packagedef | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packagedef b/packagedef index e0009cb..b1cbd01 100644 --- a/packagedef +++ b/packagedef @@ -5,7 +5,7 @@ Описание.Имя("oproxy") - .Версия("0.0.6") + .Версия("0.0.7") .Автор("Юрий Камисов") .АдресАвтора("https://github.com/infina15") .Описание("TCP прокси-сервер хранилища конфигураций 1С") From a110121aaf337bf49dab2ae1f1ad3f581ad51428 Mon Sep 17 00:00:00 2001 From: dvb1t Date: Tue, 14 Oct 2025 09:56:13 +0300 Subject: [PATCH 5/5] fix: add logger, add exception handling --- packagedef | 3 +- src/main.os | 1 + ...21\202\320\260\321\206\320\270\321\217.os" | 5 ++ ...20\275\320\265\320\275\320\270\320\271.os" | 46 ++++++++++++------- 4 files changed, 37 insertions(+), 18 deletions(-) create mode 100644 "src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\233\320\276\320\263\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217.os" diff --git a/packagedef b/packagedef index b1cbd01..4248504 100644 --- a/packagedef +++ b/packagedef @@ -9,7 +9,7 @@ .Автор("Юрий Камисов") .АдресАвтора("https://github.com/infina15") .Описание("TCP прокси-сервер хранилища конфигураций 1С") - .ВерсияСреды("1.9.1") + .ВерсияСреды("1.9.2") .ВключитьФайл("src") .ВключитьФайл("tests") .ВключитьФайл("tasks") @@ -17,6 +17,7 @@ .ВключитьФайл("packagedef") .ЗависитОт("autumn", "4.0.0") .ЗависитОт("autumn-cli", "1.0.6") + .ЗависитОт("autumn-logos", "1.2.0") .ЗависитОт("asserts", "1.4.0") .ЗависитОт("1commands", "1.5.0") .РазработкаЗависитОт("1testrunner") diff --git a/src/main.os b/src/main.os index d9ed0c7..790cc34 100644 --- a/src/main.os +++ b/src/main.os @@ -1,5 +1,6 @@ #Использовать autumn #Использовать autumn-cli +#Использовать autumn-logos #Использовать ".." Поделка = Новый Поделка; diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\233\320\276\320\263\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\233\320\276\320\263\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217.os" new file mode 100644 index 0000000..9bb6b70 --- /dev/null +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\233\320\276\320\263\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217.os" @@ -0,0 +1,5 @@ +&Аннотация("ЛогОпрокси") +&Лог("oscript.lib.oproxy") +Процедура ПриСозданииОбъекта() + +КонецПроцедуры \ No newline at end of file diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\236\320\261\321\200\320\260\320\261\320\276\321\202\321\207\320\270\320\272\320\241\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\270\320\271.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\236\320\261\321\200\320\260\320\261\320\276\321\202\321\207\320\270\320\272\320\241\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\270\320\271.os" index a73b774..1ee84bb 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\236\320\261\321\200\320\260\320\261\320\276\321\202\321\207\320\270\320\272\320\241\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\270\320\271.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\236\320\261\321\200\320\260\320\261\320\276\321\202\321\207\320\270\320\272\320\241\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\270\320\271.os" @@ -4,6 +4,9 @@ Перем ПриветствиеХранилища; Перем ПустыеДД; +&ЛогОпрокси +Перем Лог; + &Желудь Процедура ПриСозданииОбъекта() ПриветствиеХранилища = ПолучитьДвоичныеДанныеИзHexСтроки("53F5C61A7B"); @@ -13,24 +16,25 @@ Процедура ОбработатьСоединение(Соединение_Конфигуратор) Экспорт Соединение_Хранилище = Неопределено; - ПараметрыЗапроса = Неопределено; Пока Соединение_Конфигуратор.Активно Цикл - ВыполнитьПостОбработку = Ложь; - Если ИзКонфигуратораВХранилище(Соединение_Конфигуратор, Соединение_Хранилище, ПараметрыЗапроса, ВыполнитьПостОбработку) Тогда + + ПараметрыЗапросаПостОбработка = Неопределено; + Если ИзКонфигуратораВХранилище(Соединение_Конфигуратор, Соединение_Хранилище, ПараметрыЗапросаПостОбработка) Тогда ИзХранилищаВКонфигуратор(Соединение_Конфигуратор, Соединение_Хранилище); КонецЕсли; - Если ВыполнитьПостОбработку Тогда - ПостОбработкаПомещенияВХранилище(ПараметрыЗапроса); + + Если ПараметрыЗапросаПостОбработка <> Неопределено Тогда + ПостОбработкаПомещенияВХранилище(ПараметрыЗапросаПостОбработка); КонецЕсли; + КонецЦикла; Соединение_Конфигуратор.Закрыть(); Соединение_Хранилище.Закрыть(); - + КонецПроцедуры -Функция ИзКонфигуратораВХранилище(Соединение_Конфигуратор, Соединение_Хранилище, - ПараметрыЗапроса, ВыполнитьПостОбработку) +Функция ИзКонфигуратораВХранилище(Соединение_Конфигуратор, Соединение_Хранилище, ПараметрыЗапросаПостОбработка) ДанныеСоединения = Неопределено; ЕстьПодключениеКХранилищу = Соединение_Хранилище <> Неопределено; Если НЕ ЕстьПодключениеКХранилищу Тогда @@ -49,8 +53,8 @@ ПараметрыЗапроса = ОбработкаДанных.ПолучитьПараметрыЗапроса(ДанныеСоединения); Если ПараметрыЗапроса <> Неопределено И ПараметрыЗапроса.Проверять = Истина Тогда - ПродолжитьСоединение = ОбработатьПроверяемыйЗапрос(Соединение_Конфигуратор, Соединение_Хранилище, - ДанныеСоединения, ВыполнитьПостОбработку); + ПродолжитьСоединение = ОбработатьПроверяемыйЗапрос(Соединение_Конфигуратор, Соединение_Хранилище, + ДанныеСоединения, ПараметрыЗапросаПостОбработка); Возврат ПродолжитьСоединение; КонецЕсли; КонецЕсли; @@ -62,11 +66,13 @@ ЭтоКонецСообщения = ОбработкаДанных.ЕстьКонецСообщения(ДанныеСоединения); КонецЕсли; КонецЦикла; + Возврат НЕ ЭтоПинг; + КонецФункции -Функция ОбработатьПроверяемыйЗапрос(Соединение_Конфигуратор, Соединение_Хранилище, - ДанныеСоединения, ВыполнитьПостОбработку) +Функция ОбработатьПроверяемыйЗапрос(Соединение_Конфигуратор, Соединение_Хранилище, + ДанныеСоединения, ПараметрыЗапросаПостОбработка) МассивДДЗапроса = Новый Массив; МассивДДЗапроса.Добавить(ДанныеСоединения); Пока НЕ ОбработкаДанных.ЕстьКонецСообщения(ДанныеСоединения) Цикл @@ -79,17 +85,20 @@ Попытка Если ПараметрыЗапроса.ИмяМетода = "DevDepot_commitObjects" Тогда ТекстОшибки = ПроверкиПроксиСервера.ОбработкаПомещенияВХранилище(ПараметрыЗапроса); + ПараметрыЗапросаПостОбработка = ПараметрыЗапроса; ИначеЕсли ПараметрыЗапроса.ИмяМетода = "DevDepot_changeVersion" Тогда ТекстОшибки = ПроверкиПроксиСервера.ОбработкаИзмененияВерсииХранилища(ПараметрыЗапроса); + ПараметрыЗапросаПостОбработка = ПараметрыЗапроса; КонецЕсли; Исключение - ВыполнитьПостОбработку = Ложь; ТекстОшибки = СтрШаблон("Ошибка вызова функции в файле ""ПроверкиПроксиСервера.os"": %1", ОписаниеОшибки()); + Лог.Ошибка(ТекстОшибки); КонецПопытки; ЕстьОшибка = НЕ ПустаяСтрока(ТекстОшибки); Если ЕстьОшибка Тогда ДД = ОбработкаДанных.ПолучитьДвоичныеДанныеОтветаОшибки(ТекстОшибки); Соединение_Конфигуратор.ОтправитьДвоичныеДанные(ДД); + ПараметрыЗапросаПостОбработка = Неопределено; Возврат Ложь; Иначе Для Каждого ДанныеСоединения Из МассивДДЗапроса Цикл @@ -97,8 +106,6 @@ КонецЦикла; КонецЕсли; - ВыполнитьПостОбработку = НЕ ЕстьОшибка; - Возврат НЕ ЕстьОшибка; КонецФункции @@ -120,7 +127,12 @@ КонецПроцедуры Процедура ПостОбработкаПомещенияВХранилище(ПараметрыЗапроса) - Если ПараметрыЗапроса <> Неопределено Тогда + + Попытка РезультатБулево = ПроверкиПроксиСервера.ПостОбработкаПомещенияВХранилище(ПараметрыЗапроса); - КонецЕсли; + Исключение + ТекстОшибки = СтрШаблон("Ошибка вызова функции пост обработки в файле ""ПроверкиПроксиСервера.os"": %1", ОписаниеОшибки()); + Лог.Ошибка(ТекстОшибки); + КонецПопытки; + КонецПроцедуры \ No newline at end of file