Паузы при исполнении кода (Sleep для 1С)

Публикация № 706204 28.11.17

Приемы и методы разработки - Инструментарий разработчика

пауза sleep

Решил проверить все найденные варианты паузы для 1С. В результате получилась обработка для тестирования и небольшая статья с итогом.

По результатам чтения форума http://forum.infostart.ru/forum9/topic42820/ и некоторых других форумов, остался вопрос: а какой вариант работает, какой лучше использовать. Для проверки была создана предлагаемая обработка. В ней можно протестировать найденные варианты. Для себя я нашел только 2 варианта: с использованием ping и winmgmts.

Более подробно про проверенные варианты:

1) ping и winmgmts. Оба варианта прекрасно работают, практически не нагружая процессор.

2) Пустой цикл. Вариант работающий, часто предлагаемый на форумах. Имеет большой минус - грузит процессор.

3) Вариант с использованием Sleep. Насколько я понимаю, требуют наличия программы sleep.exe. На моем компьютере такой нет, варианты проверить не удалось.

4) SleepJs и SleepVbs. Работают. Неплохой вариант. Варианты отличаются только алгоритмом запуска команды.

5) TimeoutWs и Timeout. Работают. Неплохой вариант. Варианты отличаются только алгоритмом запуска команды. Timeout показывает черное окно при каждом запуске паузы.

6) DynamicWrapper. Нужна dll. Этот вариант не проверял, так как искал вариант без внешних компонент.

В прилагаемой обработке все варианты можно протестировать в своей базе и выбрать наиболее подходящий.

Есть обычная и управляемая форма, поэтому запускать можно в любой базе. Код открыт.

Протестировано на версиях 8.2 и 8.3.11.

 
Процедура СделатьПаузу(ЗадержкаСекунд = 3, Вариант = "Ping")
	
    Если ЗадержкаСекунд = 0 Тогда
        Возврат
    КонецЕсли;
	
	Если ТранзакцияАктивна() Тогда
		ЗафиксироватьТранзакцию();
	КонецЕсли;
	
	Сообщить("начало: "+ТекущаяДата());
	
	Если Вариант = "Ping" Тогда
		
		СтрокаЗапроса = "ping -n 1 -w "+Формат(1000 * ЗадержкаСекунд, "ЧДЦ=0; ЧГ=") + " 127.255.255.255"; 
		WshShell = Новый COMОбъект("WScript.Shell"); 
		WshShell.Run(СтрокаЗапроса, 0, -1); 
		
	ИначеЕсли Вариант = "smaharbA" Тогда
		
		Для к = 1 По ЗадержкаСекунд Цикл
			ПолучитьCOMОбъект("winmgmts:").ExecNotificationQuery("Select * from __instancemodificationevent where TargetInstance isa 'Win32_UTCTime'").NextEvent();
		КонецЦикла;
		
	ИначеЕсли Вариант = "Пустой цикл" Тогда
		
		// грузит процессор
		ДатаВыхода = ТекущаяДата() + ЗадержкаСекунд;
		Пока ТекущаяДата() < ДатаВыхода Цикл
			ОбработкаПрерыванияПользователя();
		КонецЦикла;
		
	ИначеЕсли Вариант = "Sleep" Тогда
		
		// не работает
		
		scr = Новый ComОбъект("WScript.Shell"); 
		scr.Run("sleep "+Формат(ЗадержкаСекунд, "ЧДЦ=0; ЧГ="), 0, 1);
		
	ИначеЕсли Вариант = "SleepJs" Тогда
		
		// работает
		
		Скрипт = Новый ТекстовыйДокумент(); 
		Скрипт.УстановитьТекст 
		( 
		"if (WScript.Arguments.Count()==0) 
		| WScript.Quit(); 
		|else 
		| if (isNaN(parseInt(WScript.Arguments(0)))) 
		| WScript.Quit(); 
		|WScript.Sleep(WScript.Arguments(0));" 
		); 
		Скрипт.Записать(КаталогВременныхФайлов()+"sleep.js", КодировкаТекста.ANSI); 
		WshShell = Новый COMОбъект("wscript.shell"); 
		WshShell.Run("wscript.exe """+КаталогВременныхФайлов()+"sleep.js"" "+Формат(ЗадержкаСекунд*1000,"ЧГ=0"), 0, -1); 
		УдалитьФайлы(КаталогВременныхФайлов()+"sleep.js"); 
		
	ИначеЕсли Вариант = "SleepVbs" Тогда
		
		// работает
		
		Сигнатура = Формат(ТекущаяДата(), "ДФ=yyyyMMddhhmmss");
		ПутьСкрипта = КаталогВременныхФайлов()+"SleepScript"+Сигнатура+".vbs";
		СкриптФайл = Новый ТекстовыйДокумент;
		СкриптФайл.ДобавитьСтроку("WScript.Sleep("+Формат(ЗадержкаСекунд*1000, "ЧГ=0")+")");
		СкриптФайл.Записать(ПутьСкрипта, КодировкаТекста.OEM);
		WSHShell = Новый COMОбъект("WScript.Shell");
		WSHShell.Run("wscript.exe """+ПутьСкрипта+"""", 0, 1);
		УдалитьФайлы(ПутьСкрипта);
		
	ИначеЕсли Вариант = "TimeoutWS" Тогда
		
		// работает
		
		КомандаWindows = "Timeout /T " + Формат(ЗадержкаСекунд, "ЧГ=0") + " /NoBreak";
		
		WshShell = Новый COMОбъект("WScript.Shell"); 
		WshShell.Run(КомандаWindows, 0, -1);
		
	ИначеЕсли Вариант = "Timeout" Тогда
		
		// работает, показывает черное окно
		
		КомандаWindows = "Timeout /T " + Формат(ЗадержкаСекунд, "ЧГ=0") + " /NoBreak";
		ЗапуститьПриложение(КомандаWindows,,Истина);
		
	ИначеЕсли Вариант = "DynamicWrapper" Тогда
		
		// нужна библиотека
		
		Wrapper = Новый ComОбъект("DynamicWrapper"); 
		Wrapper.Register("KERNEL32.DLL", "Sleep", "i=l", "f=s"); 
		
		Wrapper.Sleep(ЗадержкаСекунд);
		
	КонецЕсли;
	
	Сообщить("^^^^^^: "+ТекущаяДата());
		
КонецПроцедуры

 

 

Скачать файлы

Наименование Файл Версия Размер
Паузы при исполнении кода (Sleep для 1с):

.epf 11,61Kb
19
.epf 11,61Kb 19 Скачать

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. CyberCerber 911 28.11.17 17:45 Сейчас в теме
Странно, что не работает SleepVbs. Я обычно таким методом пользуюсь, на компах с Виндовс работает.
13. swimdog 774 29.11.17 13:04 Сейчас в теме
(1) Сравнил с (7). Работает, у меня пауза была не в секундах, а в миллисекундах, поэтому я решил, что не работает.
2. Infector 182 29.11.17 07:11 Сейчас в теме
Процедура Ожидание(Секунд)
	
	КомандаWindows = "Timeout /T " + Строка(Секунд) + " /NoBreak";
	ЗапуститьПриложение(КомандаWindows,,Истина);
	
КонецПроцедуры	
rtihov; user1525588; s0u1; Grubly; Емельянов Алексей; +5 Ответить
15. swimdog 774 29.11.17 13:20 Сейчас в теме
(2) Добавил в статью
Емельянов Алексей; +1 Ответить
3. maikl007 87 29.11.17 08:04 Сейчас в теме
Все работает...

Процедура ПаузаWSH(Секунд) Экспорт
	
	ПолноеИмяФайла  = КаталогВременныхФайлов() + "sleep.vbs";
	Текст = Новый ТекстовыйДокумент;
	Текст.ДобавитьСтроку("wscript.sleep wscript.arguments(0)");
	Текст.Записать(ПолноеИмяФайла, КодировкаТекста.OEM);
	
	WshShell = Новый COMОбъект("Wscript.Shell");
	WshShell.Run("Wscript.exe """+ПолноеИмяФайла+""" "+Секунд*1000, 0, 1);
  
КонецПроцедуры
Показать
4. japopov 64 29.11.17 08:15 Сейчас в теме
Почему-то забыли для УФ асинхронный диалог вопроса? Он принимает параметр Таймаут (который нам и нужен), и заодно выводит юзеру сообщение - а обратная связь не помешает, ведь так? Я обычно вызываю что-то вроде

&НаКлиенте
Процедура ПриОткрытии(Отказ)

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

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

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

Показать


Кроме очевидного - задержки, не нагружая системные ресурсы - этот метод даёт пользователю возможность прервать длительный процесс, а нам - корректно отработать это прерывание и сделать всё красиво.

Ах, да, и самое, наверное, важное: этот метод работает с любым клиентом в любой операционной системе. В отличие от.
Ali_q; Irwin; user1334089; viktor3d; independ; Merkalov; hydro2588_2015; user1058740; SV6; adhocprog; seperblunt2; DarkUser; y.dyachenko; TreeDogNight; necropunk; jif; Yakud3a; Gluk_1C; mickey.1cx; vano-ekt; forseil; NeviD; WizaXxX; +23 Ответить
5. zqzq 23 29.11.17 08:41 Сейчас в теме
(4) +1, какой-то набор вредных советов в статье :) Если только нужно именно на сервере пауза, в очень редких случаях.

Есть ещё
ПодключитьОбработчикОжидания()

работает и в обычных и в управляемых формах.
semagin@gmail.com; mutoc@mail.ru; +2 2 Ответить
27. gigabyte_artur 26.12.18 12:31 Сейчас в теме
Найдено в недрах БСП:

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


Платформо-независимо, работает на сервере, не нагружает процессор.
Вызов из БСП:

ОбщегоНазначенияБТС.Пауза(5);
user1374747; Ali_q; user1114234; Orlando Skibraves; Egovigor; Tangram; alenakrr; Samson-lim; Vovhik; ybatiaev; kyrasol; Irwin; Jeka44; fuser; Andrei_Ivanov; FuJluH; user1188623; Smallrat; Anosov_EP; wolder; sodrk; KirinaAS; Aleskey_K; Invodev; KostyaLavr; Merkalov; axsebur; serg1c; vita8383; beardlyhich; Mi4man; hydro2588_2015; KilloN; davdykin; user990914; Anything; batusai_00; Alex_Prodigy; aezdakov; QZet; json; dreamerr7; adhocprog; Vampeg; leonidt84; boogie; noon; uno-c; +48 Ответить
28. gigabyte_artur 26.12.18 12:34 Сейчас в теме
Найдено в недрах БСП:

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


Платформо-независимо, работает на сервере, не загружает процессор.
Вызов из БСП (пример):

ОбщегоНазначенияБТС.Пауза(5);
Samson-lim; oneworker; user1525588; Irwin; suepifanov; beardlyhich; MrBukas; Anything; Емельянов Алексей; user774630; Alogy; Vampeg; +12 Ответить
45. Reserv1st 01.04.21 16:36 Сейчас в теме
46. WSeReGaW 01.04.21 19:58 Сейчас в теме
(45) Все верно, это старый метод, с 8.3.13 использовать надо "ОжидатьЗавершенияВыполнения"
51. sodrk 13.08.21 08:59 Сейчас в теме
БСП жеж, (3.1.3.548):
// Останавливает выполнение кода на заданное время.
//
// Параметры:
//  Секунд - Число - время ожидания в секундах.
//
Процедура Пауза(Секунд) Экспорт
	
	ТекущийСеансИнформационнойБазы = ПолучитьТекущийСеансИнформационнойБазы();
	ФоновоеЗадание = ТекущийСеансИнформационнойБазы.ПолучитьФоновоеЗадание();
	
	Если ФоновоеЗадание = Неопределено Тогда
		Параметры = Новый Массив;
		Параметры.Добавить(Секунд);
		ФоновоеЗадание = ФоновыеЗадания.Выполнить("ОбщегоНазначенияБТС.Пауза", Параметры);
	КонецЕсли;
		
	ФоновоеЗадание.ОжидатьЗавершенияВыполнения(Секунд);
	
КонецПроцедуры
Показать
48. NoRazum 29 05.07.21 12:04 Сейчас в теме
(5) Эти очень редкие случаи когда встречаются. То вредные советы очень нужны.
16. bulpi 201 29.11.17 13:53 Сейчас в теме
(4)
То, что Вы предлагаете, принципиально не годится, именно из-за асинхронности. Нужна ПАУЗА! А у Вас не будет никакой паузы. Висящий вопрос в асинхронном режиме - это не пауза, т.к. программа уже пошла вовсю дальше работать.
17. japopov 64 29.11.17 14:44 Сейчас в теме
(16)
То, что Вы предлагаете, принципиально не годится, именно из-за асинхронности. Нужна ПАУЗА! А у Вас не будет никакой паузы. Висящий вопрос в асинхронном режиме - это не пауза, т.к. программа уже пошла вовсю дальше работать.


То есть, как делать формы для работы в асинхронном режиме, Вы не умеете. Но это - недостаток Вас как специалиста, а не моего ответа как алгоритма.

Подскажу для тех, кто в танке: код в методе ПриОткрытииЗавершение() выполнится только после завершения ожидания.
Переносите в него всё, что должно было отработать после паузы, и всё!

А вообще, сайт its.1c.ru, и RTFM
victorree; +1 2 Ответить
21. bulpi 201 29.11.17 17:54 Сейчас в теме
(17)
То есть, смысл моего замечания Вы не поняли. Но это - недостаток Вас как специалиста, а не моего замечания :).
Уж конечно, я понимаю, что "код в методе ПриОткрытииЗавершение() выполнится только после завершения ожидания". Но вот то, что ПОСЛЕ ПоказатьВопрос - выполнится сразу. И вот этот "гениальный" подход : "Переносите в него всё, что должно было отработать после паузы, и всё" - применим не всегда. Или для этого нужно извратиться так, как рвать гланды через Ж. Статья вообще не об этом, а о паузе. А это не ПАУЗА ( впрочем, что-то я повторяюсь, а зачем ? )
6. d_protos 29.11.17 09:33 Сейчас в теме
Статья не настолько полезна, насколько вредна.
Если нужна пауза в клиентском коде, то есть ПодключитьОбработчикОжидания() и не нужно изобретать велосипед.
Если нужна пауза в серверном коде, то что-то не так с логикой приложения.
semagin@gmail.com; DarkUser; +2 12 Ответить
8. ediks 332 29.11.17 10:16 Сейчас в теме
(6)
Если нужна пауза в серверном коде, то что-то не так с логикой приложения.

Вы считаете, что обработкам, выполняющимся на сервере, совсем никогда не нужна задержка выполнения?
Реальный пример кода, где обработка ждет, когда все задания отправятся на принтер. Кстати, применен один из методов паузы, описанный автором статьи:
Пока пОбъектПринтер.cCountOfPrintjobs < пКоличествоЗадачПечати И ТекущаяДата() <= ПаузаОкончание Цикл
	//Wait until all print jobs have entered the print queue
	Если пКоличествоЗадачПечати = 0 Тогда Прервать КонецЕсли; 
КонецЦикла;
9. Yimaida 35 29.11.17 10:40 Сейчас в теме
(6) пример из жизни. нужна была пауза при отправке смс, т.к. оператор устанавливал лимит на количество сообщений в очереди в секунду.
P.S. Сделал через ПодключитьОбработчикОжидания()
Egovigor; Cерый; arsvlg; Емельянов Алексей; echo77; sasha777666; +6 Ответить
7. ediks 332 29.11.17 09:53 Сейчас в теме
(0)
3) Варианты с использованием Sleep. Насколько я понимаю, требуют наличия программы sleep.exe.

Не соглашусь с автором - вариант SleepJs прекрасно работает.

СкриптФайл  = Новый ТекстовыйДокумент;
СкриптФайл.УстановитьТекст("WScript.Sleep(5000)");
СкриптФайл.Записать(КаталогВременныхФайлов() + "clean.vbs",КодировкаТекста.ANSI);
Сообщить(ТекущаяДата());
ЗапуститьПриложение("""" + КаталогВременныхФайлов() + "clean.vbs""",, Истина);
Сообщить(ТекущаяДата());
14. swimdog 774 29.11.17 13:04 Сейчас в теме
(7) Работает, у меня пауза была не в секундах, а в миллисекундах, поэтому я решил, что не работает.
10. МихаилМ 29.11.17 11:25 Сейчас в теме
все варианты работают в windows. укажите чисто 1с метод через HTTPСоединение или ожидания блокировки
19. Darklight 27 29.11.17 16:34 Сейчас в теме
(10) Через HTTPСоединение
функция ОжидатьЧерезHTTP(Знач Таймаут)
	хтп = новый HTTPСоединение("1C.ru",11111,,,,Таймаут);
	Попытка
		хтп.получить(новый HTTPЗапрос (""));
	исключение
		
	Конецпопытки;
КонецФункции
Показать


Будет платформенонезависимо, будет работать на клиенте. Но опять-таки, не работает в безопасном режиме (хотя на сервере профиль безопасности можно настроить, чтобы работало - для КОРП лицензии сервера).

И, главное, чтобы строка соединения в "HTTPСоединение" была указана корректная - чтобы доступ к HTTP ресурсу в принципе был!
alk; adhocprog; +2 Ответить
11. troubleshooter 29.11.17 11:28 Сейчас в теме
Если очень хочется ждать на сервере, то на мой взгляд наименее костыльный способ - это ожидание фоновым заданием самого себя.

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


Процедура ЖдатьЗавершенияФонового(Таймаут,Ключ,Наименование) Экспорт
	
	Попытка
		ФоновыеЗадания.ПолучитьФоновыеЗадания(Новый Структура("Наименование,Ключ", Наименование, Ключ))[0].ОжидатьЗавершения(Таймаут);
	Исключение
	КонецПопытки;	
	
КонецПроцедуры
Показать
json; adhocprog; uno-c; KEV_SZK; JohnyDeath; Evil Beaver; Krio2; Darklight; nixel; azubar; Labotamy; +11 Ответить
18. Darklight 27 29.11.17 15:48 Сейчас в теме
Ожидание на фоновом задании - самое интересное решение (сам только что хотел предложить такое же) - но, надо бы проверить как будет вести себя в файловой базе. Предложу ещё фичу - один раз запустить "бесконечное" регл. задание (аналогично ждущее завершения самого себя) - и всем остальным сеансам обращаться на ожидание завершения ФЗ этого регл. задания. Но будет одна пользовательская лицензия расходоваться на регл. задание. Но ФЗ доступны только на сервере или в толстом клиенте - но для длительного ожидания можно и в серверный контекст переходить - это не проблема.

Остальные все советы платформенозависимые (хотя некоторые подходы можно переработать так, чтобы они имели реализацию для разных платформ).
Использовать WshShell
WshShell = Новый COMОбъект("Wscript.Shell");
WshShell.Run("Wscript.exe...")

Всё же не рекомендую - 10-я версия платформы на это может ругаться, да ещё и в безопасном режиме работать не будет.
Но если надо так - то лучше "ЗапуститьПриложение(КомандаWindows,,Истина);" - по крайней мере будет работать в Windows, Linux и MacOS (c WEB-клиентом могут быть проблемы), где теперь тоже есть клиенты 1С.

Если нужно чисто на клиенте - то придётся извращаться с "ПодключитьОбработчикОжидания" - если нужно платформеннонезависимое решение, работающее в безопасном режиме, без модальности.

Но прямо среди кода остановиться так не получится - но, на мой взгляд, если такой код разбить на части через "ПодключитьОбработчикОжидания" не получится - значит там явно очень плохой дизайн.

Либо, нужно просто написать классический бесконечный цикл (думаю, что сюда попадут лишь короткие паузы - не более пары секунд- можно и покрутить проц клиента - коли уж очень нужно).

Или писать платформеннозависимый не безопасный код через вызов «ЗапуститьПриложение» или, ожидать на фоновом задании (регламентном или специально запускаемом), ждущим самого себя; с заходом в серверный контекст выполнения (если это не толстый клиент).

В общем всё ещё ждём, когда 1С встроит в платформу системную функцию паузы... давно ждём....
sulfur17; uno-c; Krio2; troubleshooter; +4 Ответить
12. azubar 39 29.11.17 12:27 Сейчас в теме
Можно еще так фоновое задание+блокировки:

// Процедура - Ожидание
//
// Параметры:
// Длительность - Число - длительность ожидания в секундах.
//
Процедура Ожидание(Длительность) Экспорт
 
     Идентификатор = Новый УникальныйИдентификатор;
 
     НачатьТранзакцию();
 
     Блокировка = Новый БлокировкаДанных; 
     Элемент = Блокировка.Добавить("РегистрСведений.сшпБлокировкаОчереди");
     Элемент.Режим = РежимБлокировкиДанных.Исключительный;
     Элемент.УстановитьЗначение("Идентификатор", Идентификатор); 
     Блокировка.Заблокировать();
 
     мсвПараметров = Новый Массив;
     мсвПараметров.Добавить(Идентификатор);
     Задание = ФоновыеЗадания.Выполнить("сшпОбщегоНазначения.ВыполнитьПаузу", мсвПараметров,, "Выполнить паузу "+Длительность+" сек.");
 
     Попытка
          Задание.ОжидатьЗавершения(Длительность);
          Исключение
     КонецПопытки; 
 
     ОтменитьТранзакцию();
 
КонецПроцедуры
Показать


// Процедура - Выполнить паузу
//
// Параметры:
// Идентификатор - УникальныйИдентификатор - идентификатор сессии ожидания.
//
Процедура ВыполнитьПаузу(Идентификатор) Экспорт
 
     НачатьТранзакцию();
     Блокировка = Новый БлокировкаДанных;
 
     Элемент = Блокировка.Добавить("РегистрСведений.сшпБлокировкаОчереди");
     Элемент.Режим = РежимБлокировкиДанных.Исключительный;
     Элемент.УстановитьЗначение("Идентификатор", Идентификатор);
 
     Попытка
          Блокировка.Заблокировать();
     Исключение
     КонецПопытки;
     ОтменитьТранзакцию();
 
КонецПроцедуры
Показать
20. opx 736 29.11.17 16:40 Сейчас в теме
Я думаю, что это хороший пример того как писать не надо.
sashapere; +1 1 Ответить
24. user966794 27.04.18 21:13 Сейчас в теме
(20)Павел, здравствуйте! Пишу не по теме, но хотелось бы проконсультироваться с Вами по поводу Вашего плагина для вордпресс opcity. Как с Вами можно связаться?
55. opx 736 24.09.21 16:06 Сейчас в теме
Я не там комментарий написал
54. sulfur17 40 24.09.21 16:02 Сейчас в теме
(20) я думаю это хороший пример как не надо писать комментарии.
Если хотите подсказать как надо - напишите как надо.
А так полезной информации вы даете ноль, только автора демотивируете.
22. Infector 182 30.11.17 12:34 Сейчас в теме
Думаю, что многие уже сами догадались, но все-таки нужно поотделять мух от котлет хотя бы для новичков, которые могут это читать:

Вариант с пингами:
&НаКлиенте
Процедура Ping_01(Секунд)
	
	КомандаWindows = "ping -n 1 -w "+Формат(1000 * Секунд, "ЧДЦ=0; ЧГ=") + " 127.255.255.255"; 
	WshShell = Новый COMОбъект("WScript.Shell"); 
	WshShell.Run(КомандаWindows, 0, -1); 
	
КонецПроцедуры


Трансформируется в:
&НаКлиенте
Процедура Ping_02(Секунд)
	
	КомандаWindows =  "ping -n 1 -w "+Формат(1000 * Секунд, "ЧДЦ=0; ЧГ=") + " 127.255.255.255"; 
    ЗапуститьПриложение(КомандаWindows,,Истина);
	
КонецПроцедуры


Аналогично Timeout, который я выложил в комментариях
&НаКлиенте
Процедура Timeout_03(Секунд)
	
	КомандаWindows = "Timeout /T " + Строка(Секунд) + " /NoBreak";
    ЗапуститьПриложение(КомандаWindows,,Истина);
	
КонецПроцедуры


Трансформируется в:
&НаКлиенте
Процедура Timeout_04(Секунд)            
	
	КомандаWindows = "Timeout /T " + Строка(Секунд) + " /NoBreak";

	WshShell = Новый COMОбъект("WScript.Shell"); 
	WshShell.Run(КомандаWindows, 0, -1); // Вставить содержимое обработчика.
	
КонецПроцедуры
Показать


Соответственно все эти варианты обращаются к командам, которые можно вводить через консольку операционной системы, использовать в CMD-файлах, но следует различать:
Во-первых обратиться можно к разным командам ОС (Ping, Timeout)
Во-вторых способ, которым можно обратиться - (Оператор платформы "ЗапуститьПриложение" и COMОбъект("WScript.Shell"); )

Соответственно - на клиенте "ЗапуститьПриложение" выкидывает черное окно с консолью, на сервере его никто не видит
COMОбъект("WScript.Shell") - обходится без визуальных эффектов.

А что из этого использовать - дело другое Timeout команда для задержки собственно и предназначенная, но в старых операционных системах (Windows 2000 точно, Windows XP не помню точно) отсутствовала. Проблема с CMD в те времена решалась похишением Timiout.exe с серверной операционной системы аналогичной давности и помещением в System32 на целевой машине.

А вот найти машину не поддерживающую Ping и лишенную TCP/IP напрочь уже тогда было сложно. (Хотя мне это удалось)
leemuar; Yasasha; serg_infostart; Alligator84; swimdog; +5 Ответить
23. fish249 05.12.17 09:45 Сейчас в теме
Спасибо, очень полезная статья.
25. swimdog 774 06.06.18 11:16 Сейчас в теме
Кусок функционала из БСП:

Функция ПроверитьДоступностьСервера(АдресСервера)
                
                СистемнаяИнформация = Новый СистемнаяИнформация();
                ЭтоWindows = (СистемнаяИнформация.ТипПлатформы = ТипПлатформы.Windows_x86) 
                               Или (СистемнаяИнформация.ТипПлатформы = ТипПлатформы.Windows_x86_64);
                               
                Если ЭтоWindows Тогда
                               ШаблонКоманды = "ping %1 -n 2 -w 500";
                Иначе
                               ШаблонКоманды = "ping -c 2 -w 500 %1";
                КонецЕсли;
                
                СтрокаКоманды = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонКоманды, АдресСервера);
                
                Результат = ЗапуститьПрограмму(СтрокаКоманды, ПараметрыЗапускаПрограммы);
Показать
26. nordcomp 05.12.18 09:43 Сейчас в теме
Ссылка на эту статью есть в публикации, которую использовали. Взяли на заметку
29. mevgenym 87 14.03.19 12:46 Сейчас в теме
+ в копилку
типовой из подсистемы Меркурий (первая версия подсистемы опубликована в июле 2018)

Функция Ожидать(ВремяОжидания) Экспорт
	
	Если ВремяОжидания <> 0 Тогда
		
		НастройкиПрокси = Новый ИнтернетПрокси(Ложь);
		НастройкиПрокси.НеИспользоватьПроксиДляЛокальныхАдресов = Истина;
		НастройкиПрокси.НеИспользоватьПроксиДляАдресов.Добавить("127.0.0.0");
		
		Попытка
			Loopback = Новый HTTPСоединение(
				"127.0.0.0",,,,НастройкиПрокси,
				ВремяОжидания);
			Loopback.Получить(Новый HTTPЗапрос());
		Исключение
			ВремяОжидания = 0;
		КонецПопытки;
		
	КонецЕсли;
	
КонецФункции
Показать


Подобный вариант уже предлагали выше и обсуждали на мисте
https://www.forum.mista.ru/topic.php?id=686617

понравилось :)
Функция Слиип(Сек)
  КонДата = ТекущаяДата() + Сек;
  Пока ТекущаяДата() < КонДата Цикл
      ОтправитьПисьмоНуралиеву("Боря добавь Sleep() в 1С");
  КонецЦикла;
КонецФункции
user859207; ImHunter; mart-sha; SerVer1C; KilloN; EMelihoff; acanta; uno-c; +8 Ответить
30. uno-c 191 19.03.19 01:35 Сейчас в теме
(29)Сами же мучаются, но написать встроенную в язык паузу - все никак ... Автору спасибо и за статью, и за то, что статья получилась собиратель полезных комментариев. Конструктивным комментаторам тоже ++. Мой пример серверной потребности в паузе: в регламентном задании отправляю на сторонний php скрипт картинки порциями, скрипт их закачивает и параллельно создает миниатюры, иногда не успевает к моей следующей отправке порции картинок - нужна пауза несколько секунд.
31. juker 244 02.06.19 18:14 Сейчас в теме
Спасибо автору и комьюнити, не пришлось изобретать велосипед.
32. SirYozha 210 04.06.19 12:12 Сейчас в теме
Еще из БСП (обработка УправлениеДоступом):
&НаКлиенте
Процедура Пауза(ИнтервалОжидания)
	
	ЗапуститьСОжиданиемЗавершенияРаботыПриложения("timeout /t " + Формат(ИнтервалОжидания, "ЧГ=0"), "Пауза", 0);
	
КонецПроцедуры

&НаКлиенте
Функция ЗапуститьСОжиданиемЗавершенияРаботыПриложения(СтрокаЗапуска, Контекст, ВидОкнаЗапускаемогоПриложения = 1)
	
#Если МобильныйКлиент Тогда
	ПоказатьПредупреждение(, НСтр("ru = 'Инструмент ""Управление доступом"" не доступен в веб-клиенте и мобильном клиенте, необходимо использовать тонкий клиент.'"));
	Возврат Неопределено;
#Иначе
	КодВозврата = -1;
	СистемныйПроцесс = Новый COMОбъект("WScript.Shell");
	
	Попытка
		КодВозврата = СистемныйПроцесс.Run(СтрокаЗапуска, ВидОкнаЗапускаемогоПриложения, Истина);
	Исключение
		ТекстОшибки = НСтр("ru = 'Ошибка запуска в %1: %2
			|Строка запуска: %3'");
		
		ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
			ТекстОшибки, Контекст, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), СтрокаЗапуска);
		
	КонецПопытки;
	
	Возврат КодВозврата;
#КонецЕсли

КонецФункции
Показать
33. scream 25 15.10.19 14:14 Сейчас в теме
34. andryandry 100 08.12.19 14:59 Сейчас в теме
САМЫЙ КОШЕРНЫЙ SLEEP - платформонезависимый, не требует прав пользователя\расширения на запуск внешних процессов

Процедура Sleep(КоличествоСекунд)
   Попытка
     Соединение = Новый HTTPСоединение("127.0.0.0",,,,,КоличествоСекунд);
     Соединение.Получить(Новый HTTPЗапрос());
   Исключение
   Конецпопытки;	
КонецПроцедуры
Показать
Infector; Sothale; TimIrkutsk; soci0pat; Eeeehhhh; Sergey_Borisovi4; b00ker; unichkin; KUAvanesov; stvorl; curdate; Leo_A; acanta; +13 Ответить
35. user799503 5 01.02.20 12:01 Сейчас в теме
Делаем что-то

Для н=1 По 75000 Цикл
//ожидание
КонецЦикла;

Делаем что-то другое

у меня 75000 - приблизительно 2/3 секунды
36. user799503 5 02.02.20 09:14 Сейчас в теме
Кстати с секундной задержкой ещё проще

ТДата=ТекущаяДата()+х, где х - это количество целых секунд.

Пока ТДата>ТекущаяДата() Цикл
КонецЦикла;
37. swimdog 774 02.02.20 17:33 Сейчас в теме
(36) Вариант 2 в статье. Там же написаны его минусы.
38. user1096076 09.03.20 17:18 Сейчас в теме
Мой вариант:

ВремяЗавершения = ТекущаяДата() + Время;
	Пока ТекущаяДата() < ВремяЗавершения Цикл
	КонецЦикла;
39. nuctoh 29 30.04.20 12:18 Сейчас в теме
(38) Сильно нагружает процессор и жрет память. Никогда так не делай!
40. user1096076 27.05.20 08:46 Сейчас в теме
(39) так в КА типовой сделано)).
41. swimdog 774 31.05.20 12:43 Сейчас в теме
(40) Это потому, что они инфостарт мало читают.
Merkalov; KilloN; +2 Ответить
47. Alien_job 182 21.06.21 03:39 Сейчас в теме
(42) Вроде нет - там не добавили Спать(), Ждать можно только другой код и мы возвращаемся к изначальной проблеме.
43. Sergynia 4 08.01.21 14:07 Сейчас в теме
44. berezin84 27.01.21 19:27 Сейчас в теме
// Код из ут 10.3
// Время в секундах
Процедура Пауза(Время)

	ВремяЗавершения = ТекущаяДата() + Время;
	Пока ТекущаяДата() < ВремяЗавершения Цикл
	КонецЦикла;

КонецПроцедуры
sashapere; GATTUSO; b00ker; Maximysis; +4 1 Ответить
49. Aligator69 08.07.21 11:47 Сейчас в теме
Мне больше всего нравиться такая реализация

Процедура ПаузаWSH(Секунд) Экспорт
    
    ПолноеИмяФайла  = КаталогВременныхФайлов() + "sleep.vbs";
    Текст = Новый ТекстовыйДокумент;
    Текст.ДобавитьСтроку("wscript.sleep wscript.arguments(0)");
    Текст.Записать(ПолноеИмяФайла, КодировкаТекста.OEM);
    
    WshShell = Новый COMОбъект("Wscript.Shell");
    WshShell.Run("Wscript.exe """+ПолноеИмяФайла+""" "+Секунд*1000, 0, 1);
  
КонецПроцедуры

Показать
50. ImHunter 232 04.08.21 07:37 Сейчас в теме
Кстати, Паузу из БТС нужно немного допилить, если Пауза требуется при работе фонового задания.
	
// Останавливает выполнение кода на заданное время.
//
// Параметры:
//  Секунд - Число - время ожидания в секундах.
//	ИдентификаторЗадания	-	УникальныйИдентификатор - Уникальный идентификатор задания, если Пауза выполняется в фоновом задании.
//
Процедура Пауза(Секунд, ИдентификаторЗадания = Неопределено) Экспорт
	
	ТекущийСеансИнформационнойБазы = ПолучитьТекущийСеансИнформационнойБазы();
	ФоновоеЗадание = ТекущийСеансИнформационнойБазы.ПолучитьФоновоеЗадание();
	Если ИдентификаторЗадания<>Неопределено И ФоновоеЗадание.УникальныйИдентификатор=ИдентификаторЗадания Тогда
		ФоновоеЗадание = Неопределено
	КонецЕсли;
	
	Если ФоновоеЗадание = Неопределено Тогда
		Параметры = Новый Массив;
		Параметры.Добавить(Секунд);
		Параметры.Добавить(ИдентификаторЗадания);
		ФоновоеЗадание = ФоновыеЗадания.Выполнить("АвтоматическийРасчет.Пауза", Параметры);
	КонецЕсли;
		
	ФоновоеЗадание.ОжидатьЗавершенияВыполнения(Секунд);
	
КонецПроцедуры
Показать
52. ImHunter 232 13.08.21 12:14 Сейчас в теме
(51) Только не БСП, а БТС. Теор, в конфе БТС может и не быть.
53. aleksey.kubovtsov 102 06.09.21 10:49 Сейчас в теме
smaharbA работает, процессор не нагружает
Клиент-Серверный режиме, sql
1С:Предприятие 8.3 (8.3.17.2231)
1С:Комплексная автоматизация 2 (2.4.13.243)
Вариант с фоновыми не проверял
...
ФоновоеЗадание.ОжидатьЗавершенияВыполнения(Секунд)
56. quick 581 09.02.22 11:26 Сейчас в теме
А ведь что стоило разрабам платформы добавить одну простую функцию?!!! Приходится заниматься всякими извращениями.
57. Lubocka 36 08.05.22 22:59 Сейчас в теме
а можно без секунд?
мне нужно что то на подобии как в VBA EXCEL
Application.ScreenUpdating = True
Application.ScreenUpdating = False

а то у меня экран прыгает)
Оставьте свое сообщение

См. также

HTTP-клиент Промо

Инструментарий разработчика v8 1cv8.cf Абонемент ($m)

Подсистема 1С для работы с HTTP.

1 стартмани

28.07.2021    7891    20    SpaceOfMyHead    41    

Групповое изменение формата картинок с PNG на JPG

Универсальные обработки v8 Платформа 1C v8.2 УТ10 Россия Абонемент ($m)

Простой способ массово менять формат картинок с помощью 1С и программы Irfanview.

1 стартмани

21.01.2022    1288    0    TokarevV    0    

Программное формирование существующих печатных форм

Инструментарий разработчика v8 1cv8.cf Россия Абонемент ($m)

Получение списка печатных форм, формирование выбранной печатной формы и сохранение ее в файл.

1 стартмани

17.12.2021    3774    9    RocKeR_13    3    

Универсальный редактор данных (УРД)

Инструментарий разработчика v8 Абонемент ($m)

Универсальный редактор данных (УРД) - это лучший инструмент в своем классе, который позволяет редактировать реквизиты и движения объектов

1 стартмани

27.08.2021    9348    158    Adeptus    53    

Навигатор по конфигурации базы 1С 8.3 Промо

Инструментарий разработчика v8 v8::УФ 1cv8.cf Россия Абонемент ($m)

Универсальная внешняя обработка для просмотра метаданных конфигураций баз 1С 8.3. Отображает свойства и реквизиты объектов конфигурации, их количество, основные права доступа и т.д. Отображаемые характеристики объектов: свойства, реквизиты, стандартные рекизиты, реквизиты табличных частей, предопределенные данные, регистраторы для регистров, движения для документов, команды, чужие команды, подписки на события, подсистемы. Отображает структуру хранения объектов базы данных, для регистров доступен сервис "Управление итогами". Платформа 8.3, управляемые формы. Версия 1.1.0.87 от 02.12.2021

3 стартмани

28.10.2018    49887    449    ROL32    72    

Подсистема "Показатели объектов"

Инструментарий разработчика v8 1cv8.cf Абонемент ($m)

Если вашим пользователям нужно вывести в динамический список разные показатели, которые нельзя напрямую получить из таблиц ссылочных объектов, и вы не хотите изменять структуру справочников или документов - тогда эта подсистема для вас. С помощью нее вы сможете в пользовательском режиме создать свой показатель, который будет рассчитываться по формуле или с помощью запроса. Этот показатель вы сможете вывести в динамический список, как любую другую характеристику объекта. Также можно будет настроить отбор или условное оформление с использованием созданного показателя.

2 стартмани

06.03.2021    9619    6    pila86    16    

FormCodeGenerator Программная доработка форм. Часть 2 (Режим работы "Режим сравнения форм") на примере ERP 2.5

Инструментарий разработчика v8 1cv8.cf Абонемент ($m)

Данная публикация является продолжением описания функционирования обработки "FormCodeGenerator " в режиме сравнения форм и генерирования кода на основании сравнения. Подходит для перевода уже доработанных форм с интерактивной доработки на программную. Данный режим работы обработки снизит издержки при дальнейших обновлениях конфигураций.

5 стартмани

21.12.2020    13218    27    huxuxuya    11    

Консоль кода для управляемых форм

Инструментарий разработчика v8 v8::УФ 1cv8.cf Абонемент ($m)

Консоль кода для управляемых форм с подсказками и подсветкой синтаксиса.

1 стартмани

17.07.2020    32753    472    salexdv    364    

Удаление и/или копирование сохраненных в 1С настроек (например настроек печати табличных форм) Промо

Инструментарий разработчика v8 Абонемент ($m)

Иногда нужно удалить сохраненную в 1С "покореженную" настройку или скопировать "удачную" другому пользователю...

1 стартмани

01.09.2012    70318    1388    AnryMc    46    

Внешний регламент для 1С

Инструментарий разработчика v8 Россия Абонемент ($m)

Внешний регламент сделан для тех, кто ценит свое время и время заказчика. После одноразового встраивания в конфигурацию, внешний регламент на лету позволяет добавлять, изменять внешние модули, которые могут выполнятся как регламентные задачи с указанным интервалом или запускаться в ручном режиме для отладки. Все модули (внешние обработки) находятся и выполняются на стороне сервера, что позволяет исключить подмену алгоритмов со стороны клиента.

1 стартмани

05.03.2020    11316    9    moolex    12    

CF & SQL : конструктор прямых запросов к БД 1С

Инструментарий разработчика v8 1cv8.cf Россия Абонемент ($m)

Программа для чтения и анализа внутренней структуры данных 1С V8.х, Содержит конструктор прямых SQL запросов, позволяет обрабатывать и редактировать тексты SQL-запросов, выполнять прямые запросы к базе данных 1С и обрабатывать полученные результаты.

1 стартмани

02.10.2019    35821    340    dmitrydemenew    66    

Конвейер проверки качества кода

Инструментарий разработчика v8 1cv8.cf Абонемент ($m)

Jenkinsfile для выполнения проверки качества кода. Собирает информацию с АПК, EDT и BSL-LS. Сопоставляет ошибки с гит-репозиторием, выгруженным ГитКонвертором. Отправляет в Сонар.

3 стартмани

04.09.2019    42894    31    Stepa86    46    

Faster - многофункциональный ускоритель работы программиста 1С и других языков программирования Промо

Инструментарий разработчика v8 1cv8.cf Россия Абонемент ($m)

Программа Faster 9.4 позволяет ускорить процесс работы программиста (работает в любом текстовом редакторе). Подсказка при вводе текста на основе ранее введенного текста и настроенных шаблонов. Программа Faster позволяет делится кодом с другими программистами в два клика или передать ссылку через QR Код. Исправление введенных фраз двойным Shift (с помощью speller.yandex). Переводчик текста. Переворачивает текст случайно набранный на другой раскладке. Полезная утилита для тех, кто печатает много однотипного текста, кодирует в среде Windows на разных языках программирования. Через некоторое время работы с программой у вас соберется своя база часто используемых словосочетаний и кусков кода. Настройка любых шорткатов под себя с помощью скриптов. Никаких установок и лицензий, все бесплатно.

1 стартмани

24.05.2012    88347    971    moolex    157    

Markdown-editor в 1С (с сохранением в HTML)

Инструментарий разработчика v8::УФ 1cv8.cf Абонемент ($m)

В этой обработке вы пишете свой текст, используя синтаксис Markdown, а на выходе получаете чистый HTML-код, избавленный от JS-библиотеки, которая его сформировала. Совместим с Webkit и IE.

1 стартмани

04.07.2019    15108    24    riposte    6    

Запуск 1С под любым пользователем (без необходимости указания пароля)

Пароли Инструменты администратора БД Инструментарий разработчика v8 v8::Права 1cv8.cf Абонемент ($m)

Предназначается для запуска сеанса другого пользователя из своего сеанса 1С (если пароль вам неизвестен).

1 стартмани

02.07.2019    32645    346    sapervodichka    0    

Модель объекта

Инструментарий разработчика v8 Абонемент ($m)

Подсистема позволяет описать модель данных объекта, где описана зависимость между реквизитами, и затем использовать эту модель в разных сценариях работы с объектом. Версия платформы: 8.3.6 и выше. С небольшими доработками будет работать на 8.2.

1 стартмани

30.06.2019    19158    1    vadim1980    5    

Консоль запросов с графом (Анализатор сложных запросов) Промо

Инструментарий разработчика v8::УФ v8::Запросы 1cv8.cf Абонемент ($m)

Консоль запросов для анализа запросов с большим количеством временных таблиц и вложенных запросов. Отображает структуру взаимосвязей временных таблиц в виде графа. Позволяет быстро передвигаться по тексту запроса и получать результат выполнения подзапросов. Единственная консоль запросов, которая позволяет выводить результат выполнения вложенных запросов и любой части объединения запроса. Удобное получение данных запроса из отладчика включая временные таблицы. Текст запроса в структурированном виде (можно свернуть, развернуть текст подзапроса). И еще много другого, чего вы не найдете в других консолях запросов. Поддержка УФ и ОФ. Версия 0.9.1 от 18.10.2019 (поддержка WebKit).

10 стартмани

03.05.2017    109637    514    manuel    294    

Универсальный HTTP-сервис на платформе 1С, аля HTTP-сервер с примером

Инструментарий разработчика v8 1cv8.cf Абонемент ($m)

Практический кейс построения HTTP-сервиса, который работает по принципу HTTP-сервера, с разбором всех методов построения и разработки класса задач построения личных кабинетов и сопряжения их с центральной базой.

1 стартмани

13.05.2019    43320    173    Diversus    44    

Блин, мы забыли включить регламентные задания…

Инструментарий разработчика v8 Абонемент ($m)

Привет, Инфостарт! Сегодня расскажу, как я решил проблему с выключенными регламентными заданиями в рабочих базах. Желая исключить человеческий фактор и минимизировать количество ошибок, я написал небольшую конфигурацию.  В конфигурации два регламентных задания. Первое периодически подключается к кластеру и сохраняет текущие параметры: имя, Сервер БД, базу СУДБ, блокировки входа и регламентных заданий и т.д. Второе задание периодически проверяет эти параметры на ошибки.

1 стартмани

08.04.2019    28331    22    slozhenikin_com    37    

Конструктор мобильного клиента Simple WMS Client: способ создать полноценный ТСД без мобильной разработки. Теперь новая версия - Simple UI (обновлено 14.11.2019)

Оптовая торговля Производство готовой продукции (работ, услуг) Розничная торговля Учет ОС и НМА Склад и ТМЦ Инструментарий разработчика v8 v8::Mobile БУ УУ Абонемент ($m)

Simple WMS Client – это визуальный конструктор мобильного клиента для терминала сбора данных(ТСД) или обычного телефона на Android. Приложение работает в онлайн режиме через интернет или WI-FI, постоянно общаясь с базой посредством http-запросов (вариант для 1С-клиента общается с 1С напрямую как обычный клиент). Можно создавать любые конфигурации мобильного клиента с помощью конструктора и обработчиков на языке 1С (НЕ мобильная платформа). Вся логика приложения и интеграции содержится в обработчиках на стороне 1С. Это очень простой способ создать и развернуть клиентскую часть для WMS системы или для любой другой конфигурации 1С (УТ, УПП, ERP, самописной) с минимумом программирования. Например, можно добавить в учетную систему адресное хранение, учет оборудования и любые другие задачи. Приложение умеет работать не только со штрих-кодами, но и с распознаванием голоса от Google. Это бесплатная и открытая система, не требующая обучения, с возможностью быстро получить результат.

5 стартмани

09.01.2019    67266    277    informa1555    239    

Легкое и гибкое управление списком доступных баз 1С у пользователей

Инструментарий разработчика v8 1cv8.cf Россия Абонемент ($m)

Когда в локальной сети много пользователей, а еще большое количество различных баз и при этом каждому нужны свои, то администрирование этого зоопарка превращается в АД! Этот комплекс позволяет централизованно управлять списком доступных баз в разрезе пользователей. За пару кликов можно добавить или убрать базу у всех пользователей.

7 стартмани

05.12.2018    24612    27    RomikR    11    

Создание Проекта и Задач в проекте из 1С 8.3 в MS Project 2016 (обычные формы)

Внешние источники данных v8 УПП1 Россия УУ Абонемент ($m)

Внешняя обработка (используя методы HTTP запросов и Json) для создания из 1С Проекта в MS Project Server 2016 и создание Задачи в Проекте. Обработка тестировалась на конфигурации 1С:УПП+CRM (SQL) 1.3.112/1.4.11 платформа 1С Предприятие: 8.3.10.2252, обычные формы.

2 стартмани

04.12.2018    7480    9    SurmachAU    0    

Очистка кэша 1С 8 (8.0, 8.1, 8.2, 8.3). Грамотная чистка кэша 1С с сохранением настроек.

Инструментарий разработчика v8 1cv8.cf Россия Абонемент ($m)

Эффективное средство для устранения ошибок, возникающих в локальном кэше 1С на клиенте, которым легко сможет воспользоваться пользователь с любым уровнем знаний. Wsf-скрипт, созданный на стандартном языке автоматизации Windows - "WSH JScript", очищает кэш 1С просто, быстро и безопасно. Кроме варианта, очищающего кэш текущего пользователя, имеется также вариант для чистки кэша 1С всех пользователей терминального-сервера.

1 стартмани

04.11.2018    58090    566    Eugen-S    36    

Управляемая консоль запросов, отчетов 3.8.9 (расширение, внешняя обработка)

Инструментарий разработчика v8 v8::УФ v8::Запросы v8::СКД 1cv8.cf Абонемент ($m)

Работа с запросом и СКД, Полная поддержка пакетных запросов, временных таблиц, Сравнение результатов, текстов, Разбор структуры запроса в виде дерева, Анализ плана запроса, Групповая обработка

5 стартмани

14.08.2018    136139    3179    Evg-Lylyk    771    

Позиционирование в помещении с помощью нейросети по сигналу Wi-Fi. Интерактивная карта склада в 1С с показом позиции

Инструментарий разработчика v8 Абонемент ($m)

Данная публикация содержит в себе редактор и интерактивную карту склада или иного помещения, на которой в реальном времени отображается позиция устройства, координаты которого вычисляются по уровням сигнала нескольких роутеров Wi-Fi. В статье и приложенным к ней разработкам предлагаются инструменты и методика для реализации вычисления точной геопозиции внутри помещений с помощью нейронной сети. Конфигурация написана на релизе 1С:Предприятие 8.3.12.1412, клиентское приложение имеет минимальный уровень совместимости SDK -16.

5 стартмани

09.08.2018    40296    35    informa1555    30    

Консоль HTTP-запросов с генерацией кода

Инструментарий разработчика v8 v8::УФ 1cv8.cf Абонемент ($m)

Консоль HTTP-запросов, которая не только выполняет запросы и получает результат их выполнения, но и генерирует необходимый код. Использую на 8.3.11.2899.

1 стартмани

25.05.2018    35763    351    leongl    20    

Регистры правил [Расширение]

Инструментарий разработчика v8 v8::Права УТ11 Абонемент ($m)

Регистры правил - права доступа, запрет редактирования, автоподстановка реквизитов и т.д.

10 стартмани

15.03.2018    26079    31    33lab    5    

Заполняем по шаблону (по умолчанию)

Инструментарий разработчика v8 v8::УФ 1cv8.cf Абонемент ($m)

Простой в подключении, универсальный и достаточно удобный механизм заполнения реквизитов произвольных документов/справочников значениями по умолчанию. Реализован в расширении, но может быть и непосредственно включен практически в любую конфигурацию на управляемых формах простым копированием одной формы и двух команд. Весь код в статье.

1 стартмани

08.02.2018    38068    21    mvxyz    17    

Программное формирование форматированной строки в стиле html+inline CSS

Инструментарий разработчика v8 1cv8.cf Абонемент ($m)

Если вам приходилось работать с форматированными строками программно, то вы знаете, какая это боль. Данное решение облегчает программное формирование таких строк.

1 стартмани

18.11.2017    48365    48    bonv    13    

Быстрое удаление неиспользуемых версий 1С:Предприятие 8, кэша метаданных и информационных баз

Инструментарий разработчика v8 Абонемент ($m)

При обновлении платформы 1С:Предприятие 8 предыдущие версии не удаляются. Со временем количество неиспользуемых версий платформы растет. Они занимают место на диске. Для решения этой проблемы предназначена программа OneCleaner. Она позволяет быстро удалить неиспользуемые версии платформы, а также почистить кэш метаданных и удалить ненужные информационные базы данных.

1 стартмани

14.11.2017    32195    100    bonv    15    

Закрываем всплывающие сообщения платформы

Инструментарий разработчика v8::УФ Абонемент ($m)

Принудительное закрывание сообщений платформы 8.3.10.

1 стартмани

10.11.2017    17437    13    RomaH    8    

Трансформатор 1С - SQL

Инструментарий разработчика v8 v8::УФ 1cv8.cf Абонемент ($m)

Обработка для представления SQL запросов в терминах 1С, с возможностью захвата SQL запросов трассировкой.  Поддерживается также форматирование текста запроса через интернет сервис. Работает в управляемых и обычных формах, в том числе на веб-клиенте.

1 стартмани

28.06.2017    46547    411    Synoecium    54    

Набор подсистем "Умные таблицы"

Инструментарий разработчика v8 Беларусь Россия Казахстан Абонемент ($m)

Данный набор подсистем – прикладная библиотека, призванная помочь программисту 1С быстрее решать ряд типовых задач бизнес-логики, таких как: ведение статусов объектов, отправка почтовых сообщений в определенное время, ведение произвольных таблиц с возможностью редактирования, сохранения и группировки, ориентированные на расчет бюджетных таблиц (план продаж, ретробонусы B2C, проценты по договорам B2B и договорные условия по КАМ), расчет коммерческой политики для бюджетных таблиц, исполнение произвольных алгоритмов с хранением кода в информационной базе, определение рабочих баз, хранение файлов во внешних СУБД (Postgre SQL, MS SQL и MongoDB) и выполнение произвольного кода после изменений ссылочного объекта вне транзакции изменения.

1 стартмани

22.05.2017    41360    107    Silenser    34    

Автокликер для 1С

Инструментарий разработчика v8 1cv8.cf Абонемент ($m)

Внешняя обработка, запускаемая в обычном (неуправляемом) режиме для автоматизации действий пользователя (кликер). ActiveX компонента, используемая в обработке, получает события от клавиатуры и мыши по всей области экрана в любом приложении и транслирует их в 1С, получает информацию о процессах, текущем активном приложении, выбранном языке в текущем приложении, умеет сохранять снимки произвольной области экрана, активных окон, буфера обмена, а также, в режиме воспроизведения умеет активировать описанные выше события. Все методы и свойства компоненты доступны при непосредственной интеграции в 1С. Примеры обращения к компоненте представлены в открытом коде обработки.

1 стартмани

03.04.2017    39924    84    slava_1c    67    

Регулярные выражения – это просто. Построитель и отладчик регулярных выражений

Инструментарий разработчика v8 1cv8.cf Абонемент ($m)

Предлагается к использованию построитель регулярных выражений. Выполненный в виде внешней обработки, он позволит строить сложно-структурированные выражения на основе параметрического описания, тестировать их, и в результате получить программный код 1С.

1 стартмани

13.03.2017    43495    127    romasna    53    

Сценарное тестирование в помощь программисту 1С

Инструментарий разработчика v8 Абонемент ($m)

Альтернативное решение для организации сценарного тестирования конфигураций, разработанных на управляемых формах

1 стартмани

11.11.2016    34050    60    grumagargler    62    

Несколько шаблонов для доработки типовых конфигураций

Инструментарий разработчика v8 v8::УФ Абонемент ($m)

Предлагаю несколько каркасов для создания новых объектов в типовых конфигурациях. Это выжимка из кода нескольких конфигураций, которая позволит быстро и красиво создавать и дорабатывать объекты метаданных с соблюдением идеологии исходной системы

1 стартмани

03.10.2016    45391    101    json    25    

Управление задачами: Канбан доска

Инструментарий разработчика v8 Абонемент ($m)

Конфигурация "Управление задачами" с использованием БСП. Канбан доска. Открытый код.Загрузка изменений из хранилища конфигураций 1С и связь с задачами. Проект выложен на github (ссылка в публикации). Управляемые формы. Рассылка уведомлений.

1 стартмани

02.10.2016    86885    692    BlizD    320    

Конструктор-тестер http запросов в 1С

Инструментарий разработчика v8 1cv8.cf Россия Абонемент ($m)

Данная обработка позволяет в несколько кликов конструировать http запросы на языке 1С и просматривать результаты их выполнения.

3 стартмани

19.08.2016    51863    330    hlopik    19    

Подсистема обмена данными с порталом ИМНС по электронным счетам-фактурам (автоматический обмен)

Инструментарий разработчика v8 1cv8.cf Беларусь БУ НДС Абонемент ($m)

Подсистема включает документы и обработки для автоматического обмена данными с порталом ИМНС через web-сервис. Присутствует возможность заполнения данными типовых операций за период, учёта входящих документов, учёта произвольных исходящих документов. Приложены обработки для запуска задания планировщика на автоматический обмен данными.

1 стартмани

28.07.2016    40873    20    c1nil    4    

Навигатор по структуре и данным баз 1С 8

Инструментарий разработчика v8 v8::УФ 1cv8.cf Абонемент ($m)

Просмотр структуры и данных информационных баз 1С:Предприятие 8.2, 8.3. Состав, типы объектов, табличных частей, движений. Размер, структура хранения объекта. Для администраторов и разработчиков. Версия 1 - на обычных формах, версия 2 - на управляемых.

1 стартмани

11.07.2016    36166    148    o.nikolaev    17    

БСП 2.3 и БСП 3.0: Просто про выполнение внешней обработки в фоне (c индикацией прогресса выполнения)

Инструментарий разработчика v8 1cv8.cf Абонемент ($m)

Простое пояснение о том, как сделать внешнюю обработку с фоновым выполнением и индикацией процесса для любой конфигурации на основе БСП 2.3.2. UPDATE 20/09/19: добавлен вариант обработки с индикацией процента выполнения и статусом выполнения для БСП 3.0.

1 стартмани

18.05.2016    82307    238    rozer    69