Создаём системную службу для запуска БД 1С в скрытом виде. (Обновление)

15.11.12

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

Обработка создает в системе Windows службу при помощи утилит из комплекта Windows 2000 Server Resource Kit ( INSTSRV.EXE и SRVANY.EXE) для запуска БД 1С в скрытом от пользователей виде для выполнения регламентных заданий, рассылки смс, электронной почты, востановления последовательности в документах и т. д.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Файл обработки для 8.2 (обновление от 11.01.2012)
.epf 18,70Kb
76
76 Скачать (1 SM) Купить за 1 850 руб.
Утилиты Windows
.rar 18,93Kb
47
47 Скачать (1 SM) Купить за 1 850 руб.

Для начала необходимо скопировать эти утилиты ( INSTSRV.EXE и SRVANY.EXE) в системную директорию C:\Windows\System32 (для этого нужно чтобы ваша учетная запись имела права администратора) и всё. После запускаем обработку в режиме 1С Предприятия. Указываем название службы (любое понятное вам), параметры запуска БД 1С и жмём кнопку "Создать Windows службу". Обработка при помощи утилит создаст в системе службу, пропишем в системный реестр все нужные параметры и вам останется только нажать на кнопку запустить службу, а вместе с ней произойдет запуск БД которую вы указали в параметрах. Нажав на кнопку Остановить службу, произойдет остановка службы и выход пользователя из БД. Нажав на кнопку "Удалить службу", вы удалите службу указанную в наименовании. Вы можете создать любое нужное количество служб, для этого просто в наименовании указываете новое название, после события "При изменении" наименования получите возможность ввести новые параметры БД и т.д. Тоже самое с удалением службы. Вводите наименование, после события "при изменении" обработка анализирует состояние службы и если такая служба есть в системе можете её удалить (но, увлекаться не стоит, удаляйте только то что сами создали, ну или на 100% уверены в том что удаляете не нужную службу). Есть одно узкое место в коде которое мне не удалось оптимизировать. Это получение состоятия системной службы (запущена она или остановлена). В моей обработке, это занимает около минуты, но определяет точно. Может быть кто нибудь знает более правильное решение, буду признателен т.к. сам я не программист, а программирование моё хобби. Код открыт. Буду рад если кому нибудь пригодится... Обработка написана на платформе 8.2.14.537 Обычное приложение. Тестировал на Windows 7 32 bit. , но уверен что под XP будет работать.

Обновление обработки!!! 1. Оптимизированна функция получения состояния службы! 2. Добавлена возможность менять пользователя или пароль пользователя БД. 3. Добавлена возможность изменять подключение к БД (путь для файловой и имя сервера и имя БД для серверного варианта). Для того, чтобы воспользоваться новыми возможностями, нажмите на картинку в нужной группе реквизитов и откроется режим редактирования. После редактирования реквизитов, жмём кнопку "Сохранить изменения" и обновлённые данные запишутся в системный реестр ОС.

См. также

Инструментарий разработчика Роли и права Запросы СКД Программист Руководитель проекта Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Платные (руб)

Инструменты для разработчиков 1С 8.3: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

12000 руб.

02.09.2020    172138    964    403    

924

Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Программист Руководитель проекта Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы. Может выполнять свертку сразу нескольких баз данных и выполнять их автоматически без непосредственного участия пользователя. Решение в Реестре отечественного ПО

8400 руб.

20.08.2024    14687    108    46    

108

Пакетная печать Печатные формы Инструментарий разработчика Программист Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

Инструмент, позволяющий абсолютно по-новому взглянуть на процесс разработки печатных форм. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и "прозрачность" разработки, а также навести порядок в многообразии корпоративных печатных форм.

22200 руб.

06.10.2023    17354    43    15    

75

Инструментарий разработчика Программист Платформа 1С v8.3 1C:Бухгалтерия Платные (руб)

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

9360 руб.

17.05.2024    27398    96    48    

139

Инструменты администратора БД Инструментарий разработчика Роли и права Программист Платформа 1С v8.3 1C:Бухгалтерия Россия Платные (руб)

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

15000 руб.

10.11.2023    11968    45    33    

67

SALE! %

Инструментарий разработчика Инструменты администратора БД Системный администратор Программист Платформа 1С v8.3 Управляемые формы 1C:Бухгалтерия Россия Платные (руб)

Универсальный инструмент программиста для администрирования конфигураций. Сборник наиболее часто используемых обработок под единым интерфейсом.

4800 3840 руб.

14.01.2013    191383    1153    0    

920

Инструментарий разработчика Программист 8.3.14 Россия Платные (руб)

Расширение для конфигурации “Конвертация данных 3”. Добавляет подсветку синтаксиса, детальную контекстную подсказку, глобальный поиск по коду.

20000 руб.

07.10.2021    18120    7    32    

42

Инструментарий разработчика Платформа 1С v8.3 1C:Бухгалтерия 1С:ERP Управление предприятием 2 Платные (руб)

Разработка Конструктор автоматизированных рабочих мест "Конструктор АРМ" реализована в виде расширения и является универсальным инструментом для создания АРМ любой сложности в пользовательском режиме.

3600 руб.

27.12.2024    1156    2    0    

5
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. IvanSusanin 04.01.12 10:47 Сейчас в теме
Безусловно разработчик получил навыки при реализации этой обработки но в практическом применении считаю ее бесполезной т.к. проще настроить это в windiws.
2. MNevgeny 55 04.01.12 11:39 Сейчас в теме
(1) IvanSusanin, Видите ли перенумерацию документов тоже можно провести в ручную, но мы пишем разного рода обработки. Потому что так удобней.
3. kondrat1C 55 04.01.12 12:03 Сейчас в теме
Если нет возможности запускать, созданные службы, по расписанию, то не вижу особого практического применения
4. MNevgeny 55 04.01.12 12:24 Сейчас в теме
(3) kondrat1C, Вот! это хорошая идея. Но запуск того или иного действия можно прописать в коде конфигурации(хоть по расписанию, хоть произвольно) главное, чтобы она запускалась и не мешала пользователям. А, вот насчет применения, я в описании в кратце привел несколько примеров. Я например использую для управления службой которая запускает базу\останавливает для смс оповещения клиентов и сотрудников разного рода информацией. Обработка вам поможет создать службу, настроить базу данных для запуска, а вот для чего??? Это вы сами решите...
5. r00t 04.01.12 13:12 Сейчас в теме
andrej260276 пишет:
главное, чтобы она запускалась и не мешала пользователям

дваждую

Кошерная обработка, очевидный плюс за работу
6. sound 536 04.01.12 13:59 Сейчас в теме
Есть одно узкое место в коде которое мне не удалось оптимизировать. Это получение состоятия системной службы (запущена она или остановлена).


Для получения/изменения состояния служб можно использовать, например, WMI, привожу пример функции:


// Возвращает таблицу значений, содержащую 
// сведения о службах компьютера
// для локального компьютера HostName = "."
Функция ПолучитьСведенияОСлужбах(HostName) Экспорт
	ТЗСлужбы = Новый ТаблицаЗначений;
	ТЗСлужбы.Колонки.Добавить("Name",,"Имя файла",25);
	ТЗСлужбы.Колонки.Добавить("Caption",,"Имя",);
	ТЗСлужбы.Колонки.Добавить("Description",,"Описание",);
	ТЗСлужбы.Колонки.Добавить("State",,"Состояние",);
	ТЗСлужбы.Колонки.Добавить("StartMode",,"Тип запуска",);
	ТЗСлужбы.Колонки.Добавить("PathName",,"Строка запуска",);
	Попытка
		ServicesSet = GetComObject("winmgmts:{impersonationLevel=impersonate}!\\" + СокрЛП(HostName) + "\root\cimv2");
		Items = ServicesSet.ExecQuery("SELECT Name,Caption,Description,State,StartMode,PathName From Win32_Service");
		Для каждого Item Из Items Цикл
			НоваяСтрока = ТЗСлужбы.Добавить();
			НоваяСтрока.Name        = Item.Name;
			НоваяСтрока.Caption     = Item.Caption;
			НоваяСтрока.Description = Item.Description;
			НоваяСтрока.State       = Item.State;
			НоваяСтрока.StartMode   = Item.StartMode;
			НоваяСтрока.PathName    = Item.PathName;
		КонецЦикла;
		ТЗСлужбы.Сортировать("Name");
	Исключение
		Возврат Неопределено;
	КонецПопытки;
	Возврат ТЗСлужбы;
КонецФункции // ПолучитьСведенияОСлужбах()
Показать
Spacer; stal76; +2 Ответить
7. sound 536 04.01.12 14:00 Сейчас в теме
Еще до кучи :)

// Start, Stop или Restart службы компа
Функция ИзменитьСостояниеСлужбы(HostName, Name, State) Экспорт
	Попытка
		ServicesSet = GetComObject("winmgmts:{impersonationLevel=impersonate}!\\" + СокрЛП(HostName) + "\root\cimv2");
		Items = ServicesSet.ExecQuery("SELECT Name From Win32_Service WHERE Name=""" + СокрЛП(Name) + """");
		Для каждого Item Из Items Цикл
			Если State = 1 Тогда
				Item.StartService();
			ИначеЕсли State = 2 Тогда
				Item.StopService();
			ИначеЕсли State = 3 Тогда
				Item.StopService();
				Item.StartService();
			КонецЕсли;	
		КонецЦикла;
		Возврат Истина;
	Исключение
		Возврат Ложь;
	КонецПопытки;
КонецФункции // ИзменитьСостояниеСлужбы()	
Показать
8. MNevgeny 55 04.01.12 14:09 Сейчас в теме
Спасибо за пример кода. Обязательно воспользуюсь и переделаю в обработке функцию получение состояния службы.
9. zavedeev 04.01.12 17:14 Сейчас в теме
молодец, респект разработчику!!!
10. Genneral 04.01.12 22:46 Сейчас в теме
Полезная обработка, у меня сборка/рассылка данных с wi-fi терминалов реализован на прямую в 1с, попробую запускать как службу, когда будет контроль состояния службы.
11. echo77 1916 05.01.12 07:22 Сейчас в теме
В разделе файлы: чем файл "Файл обработки для 8.2" отличается от "Файл обработки для 8.2"?

Написано хорошо - молодец.
Только непонятно зачем в обработке присутствует вариант создания службы для серверной 1с? Регламентные задания в 1с никто не отменял - все должно получиться без доп. функционала
12. MNevgeny 55 05.01.12 15:19 Сейчас в теме
Genneral пишет:
попробую запускать как службу, когда будет контроль состояния службы.
Контроль состояния службы присутствует и работает 100% правильно. Я имел ввиду, что эту функцию в модуле я хочу оптимизировать увеличив быстродействие получения состояния.
13. It-developer 26 06.01.12 16:43 Сейчас в теме
Да, интересная обработка. Интересна больше идея создания-удаление службы.
Регламентные задания правда все это заменяют, но этот подход тоже имеет право жить - может кому то и понадобится.
Ну и плюс - все регламентные как бы в одном месте. Но вопрос будут ли 2 регламентных работать параллельно в одной/разных базах?
19. Spartan 366 10.01.12 17:44 Сейчас в теме
(13) Для запуска регламентных заданий в файловом варианте, как раз-таки нужен отдельный сеанс - вот его-то лучше всего и запустить как службу.
14. go3i 08.01.12 12:51 Сейчас в теме
для чего может пригодится си Е изобретение ???
15. MNevgeny 55 08.01.12 14:42 Сейчас в теме
Уважаемый go3i, внимательней читайте описание! Там всё написано, а ещё можете ознакомиться с системным программированием если посмотрите код данной разработки. Я думаю вы найдёте для себя много интересного.
16. softest 08.01.12 19:43 Сейчас в теме
Спасибо автору! Я тоже применяю эту обработку для отсылки смс польователям!
17. dandrontiy 10.01.12 15:25 Сейчас в теме
Интересная разработка. А можно сделать так, чтобы служба созданная стартовала при запуске системы ?
18. MNevgeny 55 10.01.12 15:58 Сейчас в теме
(17) dandrontiy, Очень легко. Помотрите процедуру ЗапускОстановкаНажатие, которая запускает созданную службу и останавливает её при следующем нажатии. А, если коротко то вот этот код
КомандаСистемы("net start " + СокрЛП(НазваниеСлужбы));
пропишите в модуле приложения в процедуре ПриНачалеРаботыСистемы().
20. Imm 12.01.12 04:11 Сейчас в теме
Грамотное решение. Автору +
21. agent007 28.02.12 08:13 Сейчас в теме
Автор молодец! Идея грамотная и полезная... Очень много конфигураций используются в файловом режиме. Вот здесь, эта обработка будет крайне необходима для выполнения регламентный заданий. И пользователям мешать не будет.
22. ITEkb 19.12.13 10:13 Сейчас в теме
Спасибо! То, что надо! Даже на не очень хорошем сервере со странно работающим планировщиком завелась.

Прежде чем проверять на рабочем сервере, где вертится 2008 server, хотел уточнить, на нем такая обработка заведется? Или нужны другие версии файлов?
23. MNevgeny 55 19.12.13 13:59 Сейчас в теме
В (22) OrsoBear, На 2008 server не тестировал, но предполагаю, что должна сработать без проблем. Это же тоже Windows...
24. bambucho 27.10.21 15:50 Сейчас в теме
Подскажите,а возможно ли написать службу,запускающую файловую базу (конфигурацию) фоново (как серверная служба),после запуска компьютера,без входа пользователя в пользовательское окружение ОС?
Много ли зависимостей подтягивает 1с приложение?
Оставьте свое сообщение