На примере реального отчета показывается, как заставить 1С выполнять одновременно 1, 2 и более заданий, в то время как пользователь продолжает спокойно работать с базой.
Файлы
ВНИМАНИЕ:
Файлы из Базы знаний - это исходный код разработки.
Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы.
Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных.
Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».
0% комиссии — оплата напрямую исполнителю;
Исполнители любого масштаба — от отдельных специалистов до команд под проект;
Прямой обмен контактами между заказчиком и исполнителем;
Безопасная сделка — при необходимости;
Рейтинги, кейсы и прозрачная система откликов.
Для организации фоновых процессов используется OLE и WSH. Внешние компоненты не используются. Сам отчет выводит в таблицу документы базы вместе со всеми реквизитами шапок и табличных частей. Отчет простенький, но универсальный и весьма ресурсоемкий (что в данном случае является плюсом).
В связи с тем, что используется OLE, необходимо выполнение двух условий: база не должна быть запущена в монопольном режиме; в базе должен быть заведен пользователь с именем "process", паролем "system" и пустым пользовательским каталогом (то есть с каталогом по умолчанию) - это необходимо для того, чтобы было возможно создание нескольких одновременных OLE-подключений. В дальнейшем разработчик может сам организовать доступ к базе по своему усмотрению.
Возможно запустить одновременно несколько отчетов. В таблице запущенных процессов отображается время старта, время завершения, статус выполнения каждого отчета. Возможно прекратить формированание любого отчета, щелкнув по ячейке колонки "Убить". Если пользователь закрывает форму отчета до окончания формирования, то "убиваются" все незавершенные отчеты из списка. То есть важным условием является не закрывать форму отчета до окончания его (их) формирования. Можно часть кода (процедуру обработки ожидания) вынести в глобальный модуль, тогда это условие будет являться уже необязательным.
Во время выполнения отчета (отчетов) можно заниматься другими делами, то есть работать с базой в полном объеме. Когда один из отчетов завершается, на экран будет выведена таблица завершенного отчета.
Простецкий скрипт переименования файлов в папке в нижний регистр, будет полезен программистам и системным администраторам имеющим навыки програмирования в 1С. Можно легко настроить под себя, спасает мне периодически час времени, может, кому еще будет полезен.
Боремся с бардаком. Работы в прошлых датах запрещены. Непроведенные документы (по разным причинам) - автоматом переносятся в начало текущего дня при запуске любого первого сеанса 1С в текущем дне. Задержка старта 1С - практически незначима. Не требует настройки, не требует допрограммирования (исключая один оператор вставки в процедуру старта системы). Можно обработку выполнять вручную с любой периодичностью.
Рассмотрим систему на базе Elasticsearch, Logstash и Kibana (ELK Stack) для анализа логов 1С Предприятие 7.7 с целью визуализации и анализа событий 1С.
Скрипт позволяет выполнить объединение конфигураций и реструктуризацию из командной строки. Объединение выполняется штатными средствами конфигуратора 1С 7.7, взаимодействие с которым происходит путем посылки нажатий клавиш.
Пригодится, если есть необходимость обновить или постоянно обновлять множество ИБ.
Периодически сталкивался со следующими проблемами при печати в 1С: 7.7 работающей под терминалом:
1) После замены принтера на клиентской машине 1С пытается печатать на старый принтер.
2) Отсутствует предварительный просмотр при печати.
3) Не работает печать без предварительного просмотра (пакетная печать документов).
4) В некоторых формах печатает, в некоторых нет.
Часто бывает необходимо отслеживать состояние часто повторяющихся регламентных заданий. Например, синхронизация данных с IP-телефонией, которая может производиться каждую минуту, синхронизация с сайтами, синхронизация данных с различными системами.
Использовать для этих целей логирование 1С чрезвычайно неэффективно и не удобно.
В таких случаях удобно использовать подход, применяемый в Unix-системах: писать логи в обычные текстовые файлы, а потом делать их обработку через эффективно работающие Unix-команды: grep, tail, cat, less и т.п.
по сети гемор в плане скорости получится.... + висяки процессов если сетка упадет или ишбка в отчете будет... хотя сама идея хорошая - мы работаем и обработки работают :) хорошобы сделать так чтобы обработки выполнялись только на компе где база... для терминального варианта кстати нормально будет.
В плане скорости все нормально. Увеличение времени формирования отчета незначительное - время создания подключения плюс время на обновление лога, не путайте формирование отчета в оле-среде и работу с объектами, созданными через оле-подключение. Висяки в случае падения сети могут быть - но это уже к разряду форс-мажоров.
(10) Хрен ты где встречал. Был функционал фоновых процессов в одной из внешних компонент, перенесенный потом по моей инициативе в формэкс, и благополучно оттуда похеренный в последствии. А дело в том, что параллельно в 1С можно выполнить только простейшие вещи типа 2+2 (утрирую), попытка выполнения более сложных вещей приводит к вылету 1С. Потому разработчики формэкс и 1с++ отказались от этой затеи и пришли к выводу что параллельные процессы в одном сеансе 1С принципиально невозможны. Можно создать фоновый внутрисеансовый отчет по подсчету документов базы, но не отчет по продажам или подобный. Я работал с фоновыми потоками еще до Альфа, и знаю что даже банальный запрос приводит к вылету.
Схема в общем-то похожа, но есть отличия :) - работа через COM+, DCOM и т.д.
Одно из самых интересных отличий - возможна работа с удаленным компьютером :)
(13) Это я знаю. Хорошая вещь. Но даже он не сумел в одном сеансе сделать фоновые процессы. Говорю же, чебур - это невозможно. Ну а у меня хоть и не сервер приложений, зато не требует никаких компонент и внешних модулей. Сойдет на тот случай, когда надо порадовать чем-то директора или главбуха. :)
(15) угумс.. сервер приложений/не сервер приложений - нужен "фоновый процесс" который по расписанию обсчитывает некие алгоритмы по данным из базы и кладет "куда-то" (?) резудьтаты расчета.. я в нужный _мне_ момент времени - беру последний просчитанный вариант данных и юзаю его... (при этом надо чтобы не было грязного чтения)... - держать для этого тривиального робота - хз.. надо подумать...
(20) Тебе может и не нужная... На мелких конфигурах вообще смысла нет внедрять - если отчет максимум 30 секунд выполняется, а на больших базах с отчетами по 15 и более минут - есть смысл. Доработка типового отчета под фоновое выполнение занимает где-то 1 час, зато потом начальство оценит старания (особенно если грамотно преподнести).
А помнится, я видел пример фонового процесса в 7.7 , сделанного без ОЛЕ. Только с помощью текстового поля на форме. Не запомнил, где видел, помню только суть Или это мне приснилось? Кто-то же наверняка видел, если я видел не во сне ? :)