1с виснет при подключении торгового оборудования
В любой организации, временами случается проблема с «подвисанием» компьютерных программ. Пожалуй, самая неприятная ситуация, это когда зависает 1С Бухгалтерия. Программа теряет свое главное преимущество в глазах пользователей — «Быстродействие».
Так как, практически вся финансовая деятельность организаций завязывается на этом программном продукте, эффект от неприятного торможения обязательно скажется на всей инфраструктуре компании. Сделки не осуществляются, работа стоит, продажи падают, клиенты недовольны. Поэтому, устранение неприятности становится самой приоритетной задачей.
Чтобы разрешить проблему, в первую очередь, необходимо зафиксировать те участки программы, пользователей и виды операций, которые зависают. Нужно постараться составить наиболее точную картину ситуации: время происшествия, характер затруднения, разница в скорости выполнения требуемой операции. Все это поможет более точно описать возникшие проблемы, во время обращения к программистам за помощью.
В любой организации, временами случается проблема с «подвисанием» компьютерных программ. Пожалуй, самая неприятная ситуация, это когда из-за слабой работоспособности компьютера зависает 1С Бухгалтерия. Программа теряет свое главное преимущество в глазах пользователей — «Быстродействие».
Так как, практически вся финансовая деятельность организаций завязывается на этом программном продукте, эффект от неприятного торможения обязательно скажется на всей инфраструктуре компании. Сделки не осуществляются, работа стоит, продажи падают, клиенты недовольны. Поэтому, устранение неприятности становится самой приоритетной задачей.
Чтобы разрешить проблему, в первую очередь, необходимо зафиксировать те участки программы, пользователей и виды операций, которые зависают. Нужно постараться составить наиболее точную картину ситуации: время происшествия, характер затруднения, разница в скорости выполнения требуемой операции. Все это поможет более точно описать возникшие проблемы, во время обращения к программистам за помощью.
Общие причины зависаний 1C:
- Нехватка мощности рабочего компьютера;
- Слишком большой объем информации;
- Не целевое использование программного продукта;
- Излишек дополнительных, второстепенных функций;
- Ошибки в установленных настройках.
Наиболее распространенные виды проблем, возникающих при эксплуатации:
Очень долгий запуск системы
Причины замедления запуска 1С могут быть различны. Распространенные факторы, мешающие программе правильно запуститься:
При сложной конфигурации, первый запуск программы действительно может занять некоторое время. Замедление, является результатом обязательного стандартного кэширования. Этот процесс проводится один раз, при первом запуске и в дальнейшем старт будет проходить более оперативно.
Причиной медленного запуска 1С может быть массовое обращение к различным модулям, большое количество обработок.
- Скорость компиляции и исполнение второстепенных задач
В процессе отсылки к тексту какого-нибудь модуля может замедлиться компиляция. Значительное количество модулей вызывает заметное торможение.
На заметку! Эта проблема может быть разрешена проведением своевременной модификации—оптимизации. В итоге отключится исполнение многих второстепенных задач подключенных к старту системы, тем самым «облегчив» сам запуск.
- Разрешение на авто подключение к интернету, автообновление, автопоиск информации.
Возможно, программа при запуске автоматически обращается в интернет для считывания необходимой информации. Это тоже весомый повод для зависания.
Очень долгое открытие форм
Причиной очень долгого открывания форм может быть:
Большое количество элементов управления требует значительного времени на создание форм, и их взаимной увязки с компонентами. Для решения этой проблемы желательно упростить сами формы. Оставить только необходимые компоненты, а второстепенным элементам создать новую форму.
Количество алгоритмов при инициализации влияет на скорость автоматической проверки условий или считыванию необходимой информации из базы. Облегчить процесс можно оптимизировав создание и открытие формы. Отключить неактуальные алгоритмы и упростить инициализацию.
Очень долгая реакция на интерактивные действия пользователя
Если программа медленно реагирует на действия пользователя при попытке выбрать значение в элементе формы, то «виновников» возникновения проблемы необходимо искать:
Каждый раз при выполнении данного действия, алгоритмами производится проверка или просчитывание сведений, влияющих на режим выбора значения. Применив «Замер производительности» можно отыскать проблемные алгоритмы, изучить затруднения, созданные ими и оптимизировать процесс.
Формы выбора настроены на погрузку всего ассортимента элементов из базы. Устранить это недоразумение можно, тоже тщательным изучением реализации формы выбора. Проверить установленные свойства, настройки и отключить «тяжелые» алгоритмы.
Очень долгая реакция на обновления
Еще одна существенная проблема при использовании 1С Бухгалтерия — это зависание программы во время стандартного обновления. Как правило, сбои возникают во время запуска резервного копирования. В основном, такое случается в момент обновления программы через интернет. Поводом для возникновения внештатной ситуации бывает:
- Не соблюдение установленных сроков обновления.
Несвоевременные обновления, в результате чего релизы вынужденно устанавливаются друг на друга в хаотичном порядке, создадут в итоге ошибку. Для предупреждения таких обстоятельств, желательно вовремя проводить обновления или установить автоматическое обновление программы.
Кстати! Фоновое обновление программного обеспечения тоже может стать причиной для замедления некоторых процессов во время работы. Этот фактор нужно обязательно учитывать, при выяснении причин зависаний 1С.
Возможно, программе попросту не хватает оперативной памяти компьютера, и добавление объема может положительно отразиться в динамике работы.
Долгая запись объектов/проведение документов
Для выявления точной причины долгой записи или блокировки, желательно провести статистический анализ. Опция «Замер производительности» поможет проанализировать журнал регистрации, где зафиксированы и идентифицированы все транзакции. Итоги анализа могут указать на закономерные причины зависаний 1С:
Если по результатам анализа на зависание влияет не количество пользователей, а определенное время суток, вполне вероятно, что в момент произведения записи сервер в фоновом режиме проводит процедуры, установленные регламентом.
Причина монопольных блокировок интуитивно понятна — количество пользователей. Кто-то из сослуживцев занял что-то для проведения какой-то операции. Оставшимся специалистам остается только ждать, когда получится продолжить свой рабочий процесс. Причем блокировка будет длиться до конца транзакции. Например, чтобы не создавать подобных «пробок», лучше выбирать запрос — для чтения и объектную модель — при записи.
Одна из возможных причин может крыться в состоянии оборудования, которое имеет низкую пропускную способность.
Квалифицированное решение
Зависание 1С может возникнуть не только от вышеуказанных проблем. Чаще всего торможение может быть результатом неудачной установки самой платформы на компьютер. Как бы то ни было, разбираться в ситуации самостоятельно, без знания технических основ программы очень рискованно. Даже самый лучший бухгалтер с многолетним стажем и уверенный пользователь программы, не всегда сможет правильно оценить причины возникшей проблемы. Поэтому, лучше всего доверить разрешение конфликта с квалифицированным специалистам. Техническая услуга «Оптимизация производительности 1С» поможет разом решить все наболевшие проблемы.
Проведение оптимизации по повышению производительности включает в себя: поиск и устранение блокировок в коде, включение управляемых блокировок, настройку СУБД, подбор подходящего сервера и необходимых составляющих для 1С.
Мы имеем обширный опыт в оптимизации программы 1С, и оказываем комплексные услуги «скорой» технической помощи. Чтобы связаться с нами и узнать условия сотрудничества:
- Оставьте заявку на нашем сайте или позвоните нам по телефону;
- Менеджер уточнит причины обращения и зафиксирует проблему;
- Наши специалисты проведут технический аудит и экспертизу;
- Проведут полную оптимизацию 1С.
После проведения оптимизации производительности 1С, значительно повысится производительность программы. Улучшится работа систем, что в свою очередь, повысит эффективность работы всего персонала. Вы сможете, наконец, спокойно заниматься своим любимым и важным делом.
Методика расследования причин медленной работы операции на примере открытия управляемой формы
Для начала необходимо убедиться, что проблема стабильно воспроизводится (в одинаковых условиях) и что все пункты с описанием применения методики выполнены. Для этого можно сделать следующее:
Сбор и анализ стандартных данных
Разберем пример для операции открытия формы документа "Табель учёта рабочего времени".
Мы организовали тестовый стенд, на котором наша проблема воспроизводится под пользователем с полными правами. К этому стенду мы можем подключаться как напрямую с удаленной рабочей станции в режиме тонкого клиента, так и в режиме веб-клиента через публикацию на веб-сервере.
Настройка технологического журнала на клиенте может быть такой:
Фильтр по имени процесса для нашей задачи избыточен и нужен для того, чтобы в случае ошибочной настройки такого лога на сервере не получить сбор всех событий для серверных процессов, что может занять значительный объем. С другой стороны, при осознанном включении такой настройки на сервере (если клиентские приложения запускаются там же, где может быть развернут и сервер приложений 1С:Предприятие) мы в отдельном каталоге Client_Full увидим данные только клиентских приложений (хотя при этом подкаталоги других процессов тоже будут созданы, но они буду пустыми). Свойство Interface не собираем, так как оно дублируется более "человек читаемым" свойством IName (хотя даже последнее нам в данном примере не обязательно нужно).
После настройки технологических журналов и проверки корректности замера времени ОценкиПроизводительности БСП выполняем повторение операции с включенной отладкой.
Замеры времени средствами БСП будут выглядеть следующим образом:
Везде далее будем рассматривать верхний в этом списке замер от последнего повторения, его длительность 13,022 секунды.
Замер отладчиком конфигуратора изображен на следующем рисунке:
Как видно, сумма длительности всех строк, связанных с открытием формы составила всего 1,523 секунды.
'00010101' + ТекущаяУниверсальнаяДатаВМиллисекундах() / 1000
а для миллисекунд взять остаток от деления на 1000 (то есть просто последние три цифры, обратите внимание на "779" на следующей картинке).
Точное время начала замера (минут:секунд.миллисекунд): 25:10.779
Точное время окончания замера (минут:секунд.миллисекунд): 25:23.801
Найдем теперь записи технологического журнала, соответствующие данному замеру, они будут примерно следующими:
Здесь видно, что соответствующий нашему замеру серверный вызов SCALL завершился примерно за 10,1 секунды, это соответствует интервалу между запросом VRSREQUEST и ответом VRSRESPONSE.
Причем время начала замера почти совпадает с началом вызова, то есть событием VRSREQUEST, что собственно ожидаемо, так как замер БСП начинается на клиенте и должен быть непосредственно перед командой открытия формы. А вот окончание вызова сервера случилось раньше, чем окончание замера, что значит, что эта разница во времени пришлась на часть работы клиентского приложения.
Итак, промежуточный итог по длительностям замеров разными способами показывает соответствие нашей ситуации ограничениям и выполнение неравенства: 1,5 < 10,1 < 13.
Стандартными инструментами не удается увидеть причину проблем низкой производительности работы (открытия) управляемой формы, поэтому воспользуемся следующими помощниками:
- Отладчик операционной системы: Windows Performance Recorder для сбора метрик и Windows Performance Analyzer для их визуализации и анализа;
- Анализатор сетевых протоколов Wireshark или прокси-сервер Fiddler Web Debugger.
Установим и запустим Windows Performance Recorder ("C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\WPRUI.exe"), укажем настройки:
После того, как их подготовили, перейдем в тонкий клиент 1С, откроем форму списка документов и непосредственно перед воспроизведением проблемной операции запустим сбор данных WPR (кнопка Start).
После открытия формы в тонком клиенте запись можно остановить и открыть ее для анализа. В открывшемся окне найдем по PID 5508 (его можно определить в диспетчере задач ОС или по логам ТЖ) наш тонкий клиент 1С и должны получить примерно следующую картинку:
По данным Windows Performance Analyzer видим, что у нас нет серьезной нагрузки по дискам, а поток тонкого клиента потребляет 100% ЦП на протяжении длительного времени вплоть до завершения замера.
Запомним этот результат и проанализируем траффик.
Запустим Wireshark и повторим проблемную операцию в тонком клиенте 1С:Предприятие с прямым подключением к серверу приложений 1С.
При сборе данных с помощью Wireshark (и отбору по пакетам с сервером-источником равным серверу приложений 1С:Предприятие) запуск открытия формы документа будет выглядеть примерно так:
Здесь каждая такая строка – это пакет (или если точнее, то "кадр", frame), который в свою очередь является частью общего большого пакета поверх протокола TCP (PDU – Protocol Data Unit). Если их сложить, получим пакет около 70 Кб. Стоит обратить внимание, что это будет размер с учётом сжатия, а если без него – то должны получить что-то около 2500 – 3500 Кб данных.
Устанавливаем и запускаем Fiddler, на панели инструментов ищем "Browse", выбираем любимый браузер и запускаем в нем необходимое нам приложение (информационную базу 1С:Предприятие). После запуска переходим в форму списка документов (готовимся воспроизвести сценарий), возвращаемся в Fiddler и включаем сбор траффика (кнопка F12), переходим в браузер и открываем форму документа. После её открытия сбор траффика можно отключить и заняться его анализом. Мы должны получить примерно следующее:
В данном дампе достаточно быстро находится относительно большой пакет искомого размера, выбираем его в списке слева, а в правой части окна переключаемся на страницу Inspectors, выбираем там просмотр заголовков (Headers), и так как у нас пакет является сериализованным json (Content-Type: application/json), то попросим Fiddler десериализовать его для нас.
После этого в окне предпросмотра отобразится древовидная структура ответа (response), которая передается с сервера на клиент и содержит так много данных. Далее нам необходимо проанализировать её и найти наиболее проблемные места. Может помочь кнопка Expand All, которая развернёт все элементы дерева, но это может занять некоторое время. Чтобы его сократить, сначала поймем, что именно нужно искать.
Подведем промежуточный итог:
- Проблем с медленной работой прикладного кода 1С или запросов нет.
- Большая часть времени открытия формы состоит из сетевого взаимодействия.
- Размер пакета с формой подозрительно велик.
- После получения пакетов имеем высокую утилизацию ЦП тонким клиентом 1С (или веб-клиентом).
- Потерянное время находится где-то между окончанием/началом работы прикладного кода 1С и сетевой передачей.
Из всех этих пунктов для нас наиболее полезным и требующим дополнительного анализа является тезис "Размер пакета с формой подозрительно велик".
Какие могут быть причины для такой ситуации? В общем случае их несколько:
- Сама по себе большая и сложная форма с большим количеством экранных элементов и реквизитов. Наверное, редкий и точно не очень правильный случай, лучше такого избегать на этапе проектирования систем.
- Простая форма, но много данных в реквизитах формы (включая данные объекта), в особенности:
- Хранилище значения, Строка(0);
- Большие коллекции (Таблица, Дерево, Список);
- Произвольный тип (концентрация проблем).
Так как наша проблема (у вас может быть по-другому) воспроизводится даже при очень небольшом количестве данных в ТЧ, и реквизитов у документа (т.е. объекта формы) совсем не много, то их мы не рассматриваем. Остаются реквизиты формы, не равные основному реквизиту "Объект".
Среди них находится несколько реквизитов, имеющих произвольный тип. Могут выглядеть так:
Сопоставляем эти данные с уже собранным ранее замером с помощью конфигуратора, и видим заполнение этих структур достаточно большим количеством элементов (например, можно 5059 в реквизите "СвойстваИзмерений").
Снова вернемся к дампу траффика в Fiddler и найдем там элемент, отвечающий за параметры формы (response/props). Увидим там примерно следующее:И если развернем далее эти элементы, убедимся, что их там несколько тысяч, каждый из которых представляет собой вложенную структуру вида:
Найдем прикладной код, заполняющий эти параметры, и убедимся, что данных там действительно достаточно много (2-3 Мб), и они представляют собой большое количество сложных вложенных структур.
Отключив заполнение данных реквизитов, убеждаемся, что проблема с производительностью формы исчезает, что значит, что причина была найдена правильно.
Выводы и рекомендации
Длительная работа открытия формы обусловлена сериализацией и десериализацией больших коллекций значений при передаче их между клиентом и сервером.
Для того чтобы оценить степень влияния всех факторов, которые имеют значения в этом процессе, можно сделать несколько тестов (замеров), изменяя эти факторы и оценивая корреляцию их значений и длительности. В нашем случае причиной проблем были структуры, хранящие данные справочников территорий и условий труда, поэтому изменяли количество этих элементов и пробовали замерять передачу с клиента на сервер этих данных (процедура ДанныеДляРедактированияВХранилище).
В следующей таблице приведены результаты таких замеров в нашем примере. Сразу следует оговориться, что не стоит никаким образом рассматривать в ней абсолютные значения, так как это будет зависеть еще и от конфигурации компьютера, сети, версии платформы и многого другого, связанного именно с нашим примером. Для нас же важны зависимости и их характер (линейная, экспоненциальная и т.д.). Предлагаем вам проанализировать их самостоятельно (или даже повторить замеры на актуальной версии платформы в вашей среде).
Принимая во внимание полученные таким образом данные, можно предложить следующие возможные пути решения:
Выпала учесть подключать онлайн кассы в двум старым учетным системам.
Исходные данные:
УТ10.3.3, но с обновленной библиотекой стандартных подсистем и режимом совместимости 8.3.6
УТ11.1.9 сильно измененная.
ККТ онлайн производства Атол и Штрих.Изучение мат. части показало, что изменения для работы с онлайн кассами небольшие: отключен ряд функций по скидкам на весь чек, добавлен функционал по печати налогов. Есть фиксация имени кассира. Расширена параметрия, особенно в части состояния ФН. Часть этой парамтерии обязательно нужно собирать и показывать пользователям в учетной системе.
Первым подопытным стал Атол 55Ф. В целом сильных проблем при подключении на стороне 1с я не нашел. Есть описание драйвера и оно работает. Попробовал на этой ККТ печать по стандарту 1С. Тоже работает, но с логическими ошибками. Параллельно обнаружил для себя, что с момента моего последнего изучения свойств драйвера, функционал драйвера Атол сильно прибавил. Появилась возможность печати по сети. Появилась возможность работы с устройством, подключенному к другому ПК. Это натолкнуло на мысль, что один кассовый аппарат без проблем можно использовать на 2 кассовых местах. Небольшая доработка 1С 10.3 - в данный функционал реализован. Для себя решили, что на втором рабочем месте будем принимать только оплату картами, чтобы разделить за наличность отвечал кассир одного рабочего места. Для этого режима использовали подключение к ПК. Тесты показали, что ККТ работает по сети тоже, но как-то неуверенно, с задержкой 2-3 сек.
С Атолом 55Ф была только одна сложность - он просто не подключался к ПК. Инструкция не могла нам помочь ничем. Обращение в ЦТО (Весы - там где покупали кассу) закончилось ничем. Предлагали только платную регистрацию ККТ и заключение договора обслуживания. С мастером связаться так и не удалось. Общение на официальном форуме Атола дало более значимый результат. Оказалось, что по умолчанию все интерфейсы ККТ отключены (зачем. ), включаются методом, который неверное описан в инструкции..Стало легче. Одна учетная система и один ККТ подключен.
Воодушевившись успехом, взялись за Штрих. Предположили, что нужно будет только переписать существующую обработку на методы штриха. В целом так и должно было быть.. Но драйвер штриха наупор отказался сохранять параметры подключения ККТ. Если их выбрать визуально - то без проблем. Программно - нет. Перепроверили несколько раз - делаем все по описанию (Да и раньше использовались такие же методы.). Штрих без проблем подключается по стандарту 1С, а вот через универсальный драйвер - нет. Изучение всей информации на сайте штриха, форумов, инструкций закончилось ничем. Мы не нашли ни примеров, ни инструкций. Не получили никакой поддержки на официальном форуме. На наше обращение support ответил просто отказом.
Собственные мысли иссякли, мы решили обратиться в профессионалам, в одному из Франчей 1С. На удивление, франч в Нижнем нам ничем помочь не смог (или не захотел). мотивировал это отсутствием специалистов и опыта. Но обещали посодействовать в переадресации нашего вопроса в Москву. Через несколько дней пришел ответ из Москвы, что готовы решить наши проблемы. ориентировочное время решения 15 рабочих дней. 3-5 дней нужно на составление ТЗ, которое должно быть оплачено в любом случае из расчета 3000 руб/час.
Понимая, что нас не слышат, а у самих уже не остается времени, решили просто поменять штрих на Атол. Почему не заработал штрих через обычную библиотеку - осталось загадкой для нас.Проблема : Оператор одной из торговых точек попробовал поработать в 1С, однако при попытке начала внесения приходной накладной получил ошибку, как указано выше.
Ошибка : При подключении оборудования произошла ошибка "Не удалось подключить устройство "1С: Сканеры штрихкода (NativeApi) на <<Пользователь>> (Server11)": Ошибка подключения. Проверьте доступность устройства (999)"
Немного о всех вот этих надписях в ошибке : Когда возникает подобная ошибка по странному стечению обстоятельств её никто не наблюдает. Звонят очень часто и говорят нечто в стиле: "А не работает. Почему - не знаю!"
Когда же после некоторых разговоров и разъяснений всё-таки получается сказать, что за ошибка должна появиться перед глазами, почему она появиться должна именно там, как она выглядит, такая надпись просто дико всех пугает!
Не надо пугаться! Тут всё просто и ясно:
1С: Сканеры штрихкода (NativeApi) - Так обозначается в 1С драйвер сканера штрихкода, если он подключен к компьютеру через USB
<<Пользователь>> - Под таким именем вы вошли в Windows. Вы даже можете об этом не знать
(Server11) - Так и именно так называется ваш компьютер, все остальные компьютеры его видят именно так (ну, точней, компьютеры-то видят вообще по IP, но для удобства человека отображается именно так и ещё немного бла-бла-бла. )
Решение ошибки: Вы не поверите, но ошибку я решил быстрее, чем написал слово "Проблема" в начале всего этого текста статьи.
Всё дело в том, что внизу, если вы присмотритесь к картинке, есть две запущенные версии 1С. И запущена одна и та же база (более того - запущены под Администратором, то есть под одним паролем; как такое дала сделать 1С я понятия не имею!!). А при запуске какой-либо копии под настроенным пользователем 1С автоматически блокирует устройства, которые будет использовать. Ну, это как занять место в автобусе. Если его не уступить (не закрыть ранее открытую 1С), то с трудом сможет сесть на это место кто-то ещё.
Потому есть несколько вариантов устранения:
1) Закрыть все открытые 1С и открыть после заново
2) Закрыть ту 1С, где ошибка, и начать работать в ранее открытой 1С
3) Закрыть ранее открытую 1С
Ну, и как бы смотреть, что у вас свёрнуто в трей.
Ну, и не забывайте подписываться на канал "Кассовик" . И тогда ни одна, даже самая малейшая проблема не доставит Вам совершенно никаких неприятностей.
Читайте также: