Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Не работает пауза #76

Open
zeegin opened this issue Sep 3, 2021 · 6 comments
Open

Не работает пауза #76

zeegin opened this issue Sep 3, 2021 · 6 comments

Comments

@zeegin
Copy link
Contributor

zeegin commented Sep 3, 2021

Если РеальныйТаймаут < МинимальныйТаймаутВМиллисекундах Тогда

Операции сравнения на больше-меньше допустимы только для значений совпадающих примитивных типов (Булево, Число, Строка, Дата)
{ОбщийМодуль.РаспознаваниеДокументовHTTP.Модуль(2855)}:		Если РеальныйТаймаут < МинимальныйТаймаутВМиллисекундах Тогда
{ОбщийМодуль.РаспознаваниеДокументовHTTP.Модуль(1613)}:		Приостановить(ДлительностьПриостановки);
{ОбщийМодуль.РаспознаваниеДокументовHTTP.Модуль(943)}:	Ответ = ОтправитьЗапрос(Сессия, ПодготовленныйЗапрос, НастройкиПодключения);
{ОбщийМодуль.РаспознаваниеДокументовHTTP.Модуль(123)}:	Возврат ВызватьHTTPМетод(ТекущаяСессия, "POST", URL, ДополнительныеПараметры);

Запрос на периодической переотправке к лежачему серверу.

	Параметры.Вставить("МаксимальноеКоличествоПовторов", 3);
	Параметры.Вставить("КоэффициентЭкспоненциальнойЗадержки", 5);

image

@zeegin
Copy link
Contributor Author

zeegin commented Sep 3, 2021

Процедура Приостановить(ДлительностьОстановкиВСекундах)

	Если ДлительностьОстановкиВСекундах < 1 Тогда
		Возврат;
	КонецЕсли;

	ТекущаяДата = ТекущаяУниверсальнаяДата();
	ЖдатьДо = ТекущаяДата + ДлительностьОстановкиВСекундах;

	// BSLLS:UsingHardcodeNetworkAddress-off
	ЛокальныйХост = "127.0.0.0";
	КакойНибудьСвободныйПорт = 56476;
	// BSLLS:UsingHardcodeNetworkAddress-on
	Пока ТекущаяДата < ЖдатьДо Цикл
		Таймаут = ЖдатьДо - ТекущаяДата;
		Начало = ТекущаяУниверсальнаяДатаВМиллисекундах();
		Попытка
			РеальныйТаймаут = 0; // <== ИСПРАВИТЬ ЗДЕСЬ
			Соединение = Новый HTTPСоединение(
				ЛокальныйХост, КакойНибудьСвободныйПорт, Неопределено, Неопределено, Неопределено, Таймаут);
			Соединение.Получить(Новый HTTPЗапрос("/does_not_matter"));
		Исключение
			РеальныйТаймаут = ТекущаяУниверсальнаяДатаВМиллисекундах() - Начало;
		КонецПопытки;
		МинимальныйТаймаутВМиллисекундах = 1000;
		Если РеальныйТаймаут < МинимальныйТаймаутВМиллисекундах Тогда
			ВызватьИсключение(НСтр("ru = 'Процедура Приостановить не работает должным образом'"));
		КонецЕсли;
		ТекущаяДата = ТекущаяУниверсальнаяДата();
	КонецЦикла;

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

@vbondarevsky
Copy link
Owner

У тебя обращение на локалхост запрещено политиками?

@zeegin
Copy link
Contributor Author

zeegin commented Sep 9, 2021

Неа, случайный порт оказался не случайным :)

@vbondarevsky
Copy link
Owner

Неа, случайный порт оказался не случайным :)

Ну вот такая вот пауза в 1С :)
Ты можешь поменять порт прямо в коде.
Можно наверное сделать в таком случае замену порта на другой какой-нибудь (и так не более скажем 3 раз)

@trumanleks
Copy link
Contributor

trumanleks commented Oct 22, 2021

код из свежей БСП

Процедура Пауза(Секунд) Экспорт

ТекущийСеансИнформационнойБазы = ПолучитьТекущийСеансИнформационнойБазы();
ФоновоеЗадание = ТекущийСеансИнформационнойБазы.ПолучитьФоновоеЗадание();

Если ФоновоеЗадание = Неопределено Тогда
    Параметры = Новый Массив;
    Параметры.Добавить(Секунд);
    ФоновоеЗадание = ФоновыеЗадания.Выполнить("ОбщегоНазначенияБТС.Пауза", Параметры);
КонецЕсли;
    
ФоновоеЗадание.ОжидатьЗавершенияВыполнения(Секунд);

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

@zeegin
Copy link
Contributor Author

zeegin commented Nov 17, 2021

код из свежей БСП

Это не заработает на клиенте.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants