Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ oproxy init
```bsl
Функция ОбработкаПомещенияВХранилище(ПараметрыЗапроса) Экспорт
СообщениеОбОшибке = "";
Если ПараметрыЗапроса.ИмяБазы = "baza1" Тогда
Если ПараметрыЗапроса.ИмяСистемы = "baza1" Тогда
Если НЕ СтрНачинаетсяС(ПараметрыЗапроса.Комментарий, "ERP-") Тогда
СообщениеОбОшибке = "Комментарий должен начинаться с ""ERP-""!";
Иначе
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@
//СИСТЕМНЫЙ КОД ---

//СИСТЕМНЫЙ КОД +++
Функция ПостОбработкаПомещенияВХранилище() Экспорт
Функция ПостОбработкаПомещенияВХранилище(ПараметрыЗапроса) Экспорт
РезультатБулево = Истина;
//СИСТЕМНЫЙ КОД ---

Expand Down
5 changes: 3 additions & 2 deletions packagedef
Original file line number Diff line number Diff line change
Expand Up @@ -5,18 +5,19 @@


Описание.Имя("oproxy")
.Версия("0.0.6")
.Версия("0.0.7")
.Автор("Юрий Камисов")
.АдресАвтора("https://github.com/infina15")
.Описание("TCP прокси-сервер хранилища конфигураций 1С")
.ВерсияСреды("1.9.1")
.ВерсияСреды("1.9.2")
.ВключитьФайл("src")
.ВключитьФайл("tests")
.ВключитьФайл("tasks")
.ВключитьФайл("features")
.ВключитьФайл("packagedef")
.ЗависитОт("autumn", "4.0.0")
.ЗависитОт("autumn-cli", "1.0.6")
.ЗависитОт("autumn-logos", "1.2.0")
.ЗависитОт("asserts", "1.4.0")
.ЗависитОт("1commands", "1.5.0")
.РазработкаЗависитОт("1testrunner")
Expand Down
1 change: 1 addition & 0 deletions src/main.os
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
#Использовать autumn
#Использовать autumn-cli
#Использовать autumn-logos
#Использовать ".."

Поделка = Новый Поделка;
Expand Down
5 changes: 5 additions & 0 deletions src/Классы/ЛогАннотация.os
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
&Аннотация("ЛогОпрокси")
&Лог("oscript.lib.oproxy")
Процедура ПриСозданииОбъекта()

КонецПроцедуры
45 changes: 37 additions & 8 deletions src/Классы/ОбработчикСоединений.os
Original file line number Diff line number Diff line change
Expand Up @@ -4,25 +4,37 @@
Перем ПриветствиеХранилища;
Перем ПустыеДД;

&ЛогОпрокси
Перем Лог;

&Желудь
Процедура ПриСозданииОбъекта()
ПриветствиеХранилища = ПолучитьДвоичныеДанныеИзHexСтроки("53F5C61A7B");
ПустыеДД = ПолучитьДвоичныеДанныеИзHexСтроки("");
КонецПроцедуры

Процедура ОбработатьСоединение(Соединение_Конфигуратор) Экспорт

Соединение_Хранилище = Неопределено;
Пока Соединение_Конфигуратор.Активно Цикл
Если ИзКонфигуратораВХранилище(Соединение_Конфигуратор, Соединение_Хранилище) Тогда

ПараметрыЗапросаПостОбработка = Неопределено;
Если ИзКонфигуратораВХранилище(Соединение_Конфигуратор, Соединение_Хранилище, ПараметрыЗапросаПостОбработка) Тогда
ИзХранилищаВКонфигуратор(Соединение_Конфигуратор, Соединение_Хранилище);
ПостОбработкаПомещенияВХранилище();
КонецЕсли;

Если ПараметрыЗапросаПостОбработка <> Неопределено Тогда
ПостОбработкаПомещенияВХранилище(ПараметрыЗапросаПостОбработка);
КонецЕсли;

КонецЦикла;

Соединение_Конфигуратор.Закрыть();
Соединение_Хранилище.Закрыть();

КонецПроцедуры

Функция ИзКонфигуратораВХранилище(Соединение_Конфигуратор, Соединение_Хранилище)
Функция ИзКонфигуратораВХранилище(Соединение_Конфигуратор, Соединение_Хранилище, ПараметрыЗапросаПостОбработка)
ДанныеСоединения = Неопределено;
ЕстьПодключениеКХранилищу = Соединение_Хранилище <> Неопределено;
Если НЕ ЕстьПодключениеКХранилищу Тогда
Expand All @@ -41,7 +53,8 @@
ПараметрыЗапроса = ОбработкаДанных.ПолучитьПараметрыЗапроса(ДанныеСоединения);
Если ПараметрыЗапроса <> Неопределено
И ПараметрыЗапроса.Проверять = Истина Тогда
ПродолжитьСоединение = ОбработатьПроверяемыйЗапрос(Соединение_Конфигуратор, Соединение_Хранилище, ДанныеСоединения);
ПродолжитьСоединение = ОбработатьПроверяемыйЗапрос(Соединение_Конфигуратор, Соединение_Хранилище,
ДанныеСоединения, ПараметрыЗапросаПостОбработка);
Возврат ПродолжитьСоединение;
КонецЕсли;
КонецЕсли;
Expand All @@ -53,10 +66,13 @@
ЭтоКонецСообщения = ОбработкаДанных.ЕстьКонецСообщения(ДанныеСоединения);
КонецЕсли;
КонецЦикла;

Возврат НЕ ЭтоПинг;

КонецФункции

Функция ОбработатьПроверяемыйЗапрос(Соединение_Конфигуратор, Соединение_Хранилище, ДанныеСоединения)
Функция ОбработатьПроверяемыйЗапрос(Соединение_Конфигуратор, Соединение_Хранилище,
ДанныеСоединения, ПараметрыЗапросаПостОбработка)
МассивДДЗапроса = Новый Массив;
МассивДДЗапроса.Добавить(ДанныеСоединения);
Пока НЕ ОбработкаДанных.ЕстьКонецСообщения(ДанныеСоединения) Цикл
Expand All @@ -69,23 +85,29 @@
Попытка
Если ПараметрыЗапроса.ИмяМетода = "DevDepot_commitObjects" Тогда
ТекстОшибки = ПроверкиПроксиСервера.ОбработкаПомещенияВХранилище(ПараметрыЗапроса);
ПараметрыЗапросаПостОбработка = ПараметрыЗапроса;
ИначеЕсли ПараметрыЗапроса.ИмяМетода = "DevDepot_changeVersion" Тогда
ТекстОшибки = ПроверкиПроксиСервера.ОбработкаИзмененияВерсииХранилища(ПараметрыЗапроса);
ПараметрыЗапросаПостОбработка = ПараметрыЗапроса;
КонецЕсли;
Исключение
ТекстОшибки = СтрШаблон("Ошибка вызова функции в файле ""ПроверкиПроксиСервера.os"": %1", ОписаниеОшибки());
Лог.Ошибка(ТекстОшибки);
КонецПопытки;
ЕстьОшибка = НЕ ПустаяСтрока(ТекстОшибки);
Если ЕстьОшибка Тогда
ДД = ОбработкаДанных.ПолучитьДвоичныеДанныеОтветаОшибки(ТекстОшибки);
Соединение_Конфигуратор.ОтправитьДвоичныеДанные(ДД);
ПараметрыЗапросаПостОбработка = Неопределено;
Возврат Ложь;
Иначе
Для Каждого ДанныеСоединения Из МассивДДЗапроса Цикл
Соединение_Хранилище.ОтправитьДвоичныеДанные(ДанныеСоединения);
КонецЦикла;
КонецЕсли;

Возврат НЕ ЕстьОшибка;

КонецФункции

Процедура ИзХранилищаВКонфигуратор(Соединение_Конфигуратор, Соединение_Хранилище)
Expand All @@ -104,6 +126,13 @@
Соединение_Хранилище.ПрочитатьДвоичныеДанные();
КонецПроцедуры

Процедура ПостОбработкаПомещенияВХранилище()
РезультатБулево = ПроверкиПроксиСервера.ПостОбработкаПомещенияВХранилище();
КонецПроцедуры
Процедура ПостОбработкаПомещенияВХранилище(ПараметрыЗапроса)

Попытка
РезультатБулево = ПроверкиПроксиСервера.ПостОбработкаПомещенияВХранилище(ПараметрыЗапроса);
Исключение
ТекстОшибки = СтрШаблон("Ошибка вызова функции пост обработки в файле ""ПроверкиПроксиСервера.os"": %1", ОписаниеОшибки());
Лог.Ошибка(ТекстОшибки);
КонецПопытки;

КонецПроцедуры