1ceunt dll что это
Описание проблемы
Есть RDS ферма в режиме HA, построенная на базе серверов Windows Server 2012 R2. В совершенно разное время появляются жалобы, что пользователь не может корректно выйти из системы(/na-terminalnom-servere-visit-vyhod-iz-sistemy/), ряд мер я описывал по данному вопросу, но они к сожалению срабатывают не всегда. В такой ситуации пока алгоритм был такой, пользователям отправлялось уведомление на терминальный стол, после чего шла перезагрузка. Просматривая логи событий, во всех случаях присутствовали одни и те же ошибки, и все они указывали на какой-то косяк со стороны 1С 8.3.14.1630. Вот вам примеры текущих ошибок:
События с кодом ID 1000 журнал Application Error: Имя сбойного приложения: 1cv8c.exe, версия: 8.3.14.1630, метка времени: 0x5c6e4c97
Имя сбойного модуля: wbase83.dll, версия: 8.3.14.1630, метка времени: 0x5c6e4bb7
Код исключения: 0xc0000005
Смещение ошибки: 0x00006895
Идентификатор сбойного процесса: 0x266c
Время запуска сбойного приложения: 0x01d547768b10a80e
Путь сбойного приложения: C:\Program Files (x86)\1cv8\8.3.14.1630\bin\1cv8c.exe
Путь сбойного модуля: C:\Program Files (x86)\1cv8\8.3.14.1630\bin\wbase83.dll
Идентификатор отчета: 3c6e27af-b37a-11e9-815f-0050568dcf1e
Полное имя сбойного пакета:
Код приложения, связанного со сбойным пакетом:
События с кодом ID 1000 журнал Application Error: Имя сбойного приложения: EXCEL.EXE, версия: 16.0.4873.1000, метка времени: 0x5cffdabb
Имя сбойного модуля: EXCEL.EXE, версия: 16.0.4873.1000, метка времени: 0x5cffdabb
Код исключения: 0xc0000005
Смещение ошибки: 0x0002b78b
Идентификатор сбойного процесса: 0x2d80
Время запуска сбойного приложения: 0x01d546ec7c1c1a1f
Путь сбойного приложения: C:\Program Files (x86)\Microsoft Office\Office16\EXCEL.EXE
Путь сбойного модуля: C:\Program Files (x86)\Microsoft Office\Office16\EXCEL.EXE
Идентификатор отчета: bc1811e7-b2df-11e9-815f-0050568dcf1e
Полное имя сбойного пакета:
События с кодом ID 1000 журнал Application Error: Имя сбойного приложения: 1cv8.exe, версия: 8.3.14.1630, метка времени: 0x5c6e4d23
Имя сбойного модуля: rtrsrvc.dll, версия: 8.3.14.1630, метка времени: 0x5c6e4d21
Код исключения: 0xc0000005
Смещение ошибки: 0x00031042
Идентификатор сбойного процесса: 0xb37c
Время запуска сбойного приложения: 0x01d5388ac2b67852
Путь сбойного приложения: C:\Program Files (x86)\1cv8\8.3.14.1630\bin\1cv8.exe
Путь сбойного модуля: C:\Program Files (x86)\1cv8\8.3.14.1630\bin\rtrsrvc.dll
Идентификатор отчета: 87f52a22-a4da-11e9-815c-0050568dcf1e
Полное имя сбойного пакета:
Код приложения, связанного со сбойным пакетом:
События с кодом ID 1000 журнал Application Error: Имя сбойного приложения: mstsc.exe, версия: 6.3.9600.18980, метка времени: 0x5ab67164
Имя сбойного модуля: ntdll.dll, версия: 6.3.9600.19304, метка времени: 0x5c7f684f
Код исключения: 0xc0000374
Смещение ошибки: 0x00000000000f1cd0
Идентификатор сбойного процесса: 0x49f0
Время запуска сбойного приложения: 0x01d5387f8ab96e71
Путь сбойного приложения: C:\Windows\system32\mstsc.exe
Путь сбойного модуля: C:\Windows\SYSTEM32\ntdll.dll
Идентификатор отчета: d802c5d7-a472-11e9-815c-0050568dcf1e
Видно, что из-за этой ошибки 1С так же повис проводник Windows:
Thread 6 - System ID 118516
This thread is not fully resolved and may or may not be a problem. Further analysis of these threads may be required.
Thread 3 - System ID 118148
Asmwsoft PC Optimizer — это пакет утилит для Microsoft Windows, призванный содействовать управлению, обслуживанию, оптимизации, настройке компьютерной системы и устранению в ней неполадок.
Всего голосов ( 181 ), 115 говорят, что не будут удалять, а 66 говорят, что удалят его с компьютера.
Файлы
Текст файла регистрации:
Как вы поступите с файлом _ceunt.dll?
(_ceunt.dll) отсутствует или не обнаружен.
Related Posts
Настройка Windows для открытия ссылок в тонком или толстом клиенте
Вариант реестрового файла для x86 программы.
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\e1c]
@="URL:e1c"
"URL Protocol"="e1c"
"EditFlags"=hex:02,00,00,00
[HKEY_CLASSES_ROOT\e1c\DefaultIcon]
@="C:\\Program Files (x86)\\1cv8\\common\\1ceunt.dll,17"
[HKEY_CLASSES_ROOT\e1c\shell] [HKEY_CLASSES_ROOT\e1c\shell\open]
[HKEY_CLASSES_ROOT\e1c\shell\open\command]
@="\"C:\\Program Files (x86)\\1cv8\\common\\1cestart.exe\" /URL \"%1\""
Вариант реестрового файла для x64 программы.
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\e1c]
@="URL:e1c"
"URL Protocol"="e1c"
"EditFlags"=hex:02,00,00,00
[HKEY_CLASSES_ROOT\e1c\DefaultIcon]
@="C:\\Program Files\\1cv8\\common\\1ceunt.dll,17"
[HKEY_CLASSES_ROOT\e1c\shell] [HKEY_CLASSES_ROOT\e1c\shell\open]
[HKEY_CLASSES_ROOT\e1c\shell\open\command]
@="\"C:\\Program Files\\1cv8\\common\\1cestart.exe\" /URL \"%1\""
Стоит отметить, перед добавлением данного файла в реестр Windows необходимо убедиться в том, что по указанному пути каталогов, находится исполняемый файл 1сestart.exe. После этого сохраняем как файл реестра. Следующий шаг, это добавление данного файла непосредственно в сам реестр Windows. Для этого запускаем редактор реестра от имени администратора, нажимаем кнопку «Файл» - «Импорт», выбираем созданный файл и нажимаем открыть (Готовые реестровый файл будет прикреплен к публикации для скачивания). В принципе настройка операционной системы Windows, да и всего механизма закончена. В завершении остается только оценить работу функционала. Спасибо за внимание, удачи и успехов.
ВНИМАНИЕ. Данный функционал будет доступен, начиная с версии 3.1.7.0.
_CEUNT.DLL
Описание файла: _ceunt.dll Файл _ceunt.dll из 1C является частью 1C Enterprise 8 2. _ceunt.dll, расположенный в c:windowsinstaller$patchcache$managed99505bada73078d4d9ce5d181f7091148 .2 .16 \\ _ceunt .dll с размером файла 1385304 байт, версия файла 8.2.16.363, подпись cd27ac0e9e2385767de808a2d3e95191.
Проверьте процессы, запущенные на вашем ПК, используя базу данных онлайн-безопасности. Можно использовать любой тип сканирования для проверки вашего ПК на вирусы, трояны, шпионские и другие вредоносные программы.
Path: c:> windows> installer> $patchcache$> managed> dfd80c62de269c440a016e7327b86add> 8.3.8> _ceunt.dll
version: 8.3.8.1675 // size: 1471848 byte
Antivirus scan result for this process ad77978a6682fa59bb21fe2967afe3fa
Path: c:windowsinstaller$patchcache$managedef53fba46af36184da46dcbbb61d4b298.3.3\ _ceunt.dll
version: 8.3.3.641 // size: 1379120 byte
Antivirus scan result for this process b2acfbb0dec53aafe6aecdaa2ebcff8a
Path: c:windowsinstaller$patchcache$managedd83c93c78e4718b41a3b7bc93c4bc92b8.3.3\ _ceunt.dll
version: 8.3.3.721 // size: 1379120 byte
Antivirus scan result for this process e1a3b05f6352677a7f90b3ba27ef9e22
Path: c:windowsinstaller$patchcache$managedde594fa14073f354d8e9d4d4b5d66e4b8.3.4\ _ceunt.dll
version: 8.3.4.482 // size: 1379120 byte
Antivirus scan result for this process 2657f3d97841006be3d2fce9cacc81d3
Path: c:windowsinstaller$patchcache$managed85bb32c8cf2749b4b9a2234a791a96f68.3.4\ _ceunt.dll
version: 8.3.4.389 // size: 1379120 byte
Antivirus scan result for this process 4f5c0671d5ec577056c9c0c3c8074dbe
Path: c:windowsinstaller$patchcache$managed5b92f8e73f8f4ae4b9fcf65f5fe193368.3.4\ _ceunt.dll
version: 8.3.4.465 // size: 1379120 byte
Antivirus scan result for this process 1dd3ac808f527876a36716d17e424417
Path: c:windowsinstaller$patchcache$managedfbee747bbea2fc0489b4ad414c617feb8.2.18\ _ceunt.dll
version: 8.2.18.44 // size: 1385744 byte
Antivirus scan result for this process 7729c7509f3ef850826625758903d0c1
Path: c:windowsinstaller$patchcache$managedd702dd87d06498b4e9d4ce3cbc5bf8ee8.3.3\ _ceunt.dll
version: 8.3.3.715 // size: 1379120 byte
Antivirus scan result for this process eb16501a4bcf8951a367bcf1354c0b3d
Path: c:windowsinstaller$patchcache$manageda37921fe55bab45449f7945feddcf97d8.2.15\ _ceunt.dll
version: 8.2.15.310 // size: 1385264 byte
Antivirus scan result for this process b0fdd2247d3e5916571b637840782872
Path: c:windowsinstaller$patchcache$managed8b4e3196d280df946ba10ccacedb66a08.2.14\ _ceunt.dll
version: 8.2.14.540 // size: 1385264 byte
Antivirus scan result for this process e0b2cfe8ccfdf3f2793de4f53bf57bc5
Path: c:windowsinstaller$patchcache$manageda78ae874abd249749b91cd55854c679e8.3.3\ _ceunt.dll
version: 8.3.3.687 // size: 1379120 byte
Antivirus scan result for this process 4eb2bfa02c0160417b942c5e751ffd7b
Path: c:windowsinstaller$patchcache$managed238c44f15b5c65544a508ed0f561abf88.2.17\ _ceunt.dll
version: 8.2.17.157 // size: 1385744 byte
Antivirus scan result for this process 365a693b9fafd4c3593ad011c27d3276
Path: c:windowsinstaller$patchcache$managedc04e98cb7ecc68b4596838835f4be81c8.2.15\ _ceunt.dll
version: 8.2.15.301 // size: 1385264 byte
Antivirus scan result for this process 9268bf91f10a633d802a5a8859c0eb69
Path: c:windowsinstaller$patchcache$managed9cfc407c953e0b94e9692467cd1c6e2b8.2.17\ _ceunt.dll
version: 8.2.17.153 // size: 1385896 byte
Antivirus scan result for this process b7416313cf440c262175556140b0483f
Path: c:windowsinstaller$patchcache$manageddf96f189632bddb4fa5d77bc7aa38ba68.2.18\ _ceunt.dll
version: 8.2.18.96 // size: 1386288 byte
Antivirus scan result for this process 6338dc35093798521fd544b87f715530
Эта статья дает представление о работе внешних компонент в системе «1С: Предприятие».
Будет показан процесс разработки внешней компоненты для системы «1С: Предприятие» версии 8.2, работающей под управлением ОС семейства Windows с файловым вариантом работы. Такой вариант работы используется в большинстве решений, предназначенных для предприятий малого бизнеса. ВК будет реализована на языке программирования C++.
Внешние компоненты «1C: Предприятие»
- с использованием Native API
- с использованием технологии COM
Структура ВК
Внешняя компонента системы «1С: Предприятие» представлена в виде DLL-библиотеки. В коде библиотеки описывается класс-наследник IComponentBase. В создаваемом классе должны быть определены методы, отвечающие за реализацию функций внешней компоненты. Более подробно переопределяемые методы будут описаны ниже по ходу изложения материала.
Запуск демонстрационной ВК
- Выполнить сборку внешней компоненты, поставляемой с подпиской ИТС и предназначенной для демонстрации основных возможностей механизма внешних компонент в 1С
- Подключить демонстрационную компоненту к конфигурации 1С
- Убедиться в корректной работоспособности заявленных функций
Компиляция
Демонстрационная ВК расположена на диске подписки ИТС в каталоге «/VNCOMP82/example/NativeAPI».
Для сборки демонстрационной ВК будем использовать Microsoft Visual Studio 2008. Другие версии данного продукта не поддерживают используемый формат проекта Visual Studio.
Открываем проект AddInNative. В настройках проекта подключаем каталог с заголовочными файлами, необходимыми для сборки проекта. По умолчанию они располагаются на диске ИТС в каталоге /VNCOMP82/include.
Результатом сборки является файл /bind/AddInNative.dll. Это и есть скомпилированная библиотека для подключения к конфигурации 1С.
Подключение ВК к конфигурации 1С
Создадим пустую конфигурацию 1С.
Ниже приведен код модуля управляемого приложения.
Если при запуске конфигурации 1С не было сообщено об ошибке, то ВК была успешно подключена.
В результате выполнения приведенного кода в глобальной видимости конфигурации появляется объект ДемоКомп, имеющий свойства и методы, которые определены в коде внешней компоненты.
Демонстрация заложенного функционала
Произвольное имя внешней компоненты
Задача: Изменить имя внешней компоненты на произвольное.
В предыдущем разделе использовался идентификатор AddInNativeExtension, смысл которого не был пояснен. В данном случае AddInNativeExtension — это наименование расширения.
В коде ВК определен метод RegisterExtensionAs, возвращающий системе «1С: Предприятие» имя, которое необходимо для последующей регистрации ВК в системе. Рекомендуется указывать идентификатор, который в известной мере раскрывает суть внешней компоненты.
Приведем полный код метода RegisterExtensionAs с измененным наименованием расширения:
В приведенном примере имя ВК изменено на SomeName. Тогда при подключении ВК необходимо указывать новое имя:
Расширение списка свойств ВК
- Изучить реализацию свойств ВК
- Добавить свойство строкового типа, доступное для чтения и записи
- Добавить свойство строкового типа, доступное для чтения и записи, которое хранит тип данных последнего установленного свойства. При установке значения свойства никаких действий не производится
- Убедиться в работоспособности произведенных изменений
Полное описание методов, включая список параметров подробно описан в документации, поставляемой на диске ИТС.
Рассмотрим реализацию приведенных методов класса CAddInNative.
В демонстрационной ВК определены 2 свойства: Включен и ЕстьТаймер (IsEnabled и IsTimerPresent).
В глобальной области видимости кода библиотеки определено два массива:
которые хранят русское и английское названия свойств. В заголовочном файле AddInNative.h определяется перечисление:
- Добавить имя добавляемого свойства в массивы g_PropNames и g_PropNamesRu (файл AddInNative.cpp)
- В перечисление Props (файл AddInNative.h) перед ePropLast добавить имя, однозначно идентифицирующее добавляемое свойство
- Организовать память под хранение значений свойств (завести поля модуля компоненты, хранящие соответствующие значения)
- Внести изменения в методы GetPropVal и SetPropVal для взаимодействия с выделенной на предыдущем шаге памятью
- В соответствии с логикой приложения внести изменения в методы IsPropReadable и IsPropWritable
Перечисление Props будет иметь вид:
Для значительного упрощения кода будем использовать STL C++. В частности, для работы со строками WCHAR, подключим библиотеку wstring.
Для сохранения значения метода Тест, определим в классе CAddInNative в области видимости private поле:
Для передачи строковых параметров между «1С: Предприятие» и внешней компонентов используется менеджер памяти «1С: Предприятие». Рассмотрим его работу подробнее. Для выделения и освобождения памяти соответственно используются функции AllocMemory и FreeMemory, определенные в файле ImemoryManager.h. При необходимости передать системе «1С: Предприятие» строковый параметр, внешняя компонента должна выделить под нее память вызовом функции AllocMemory. Ее прототип выглядит следующим образом:
где pMemory — адрес указателя, в который будет помещен адрес выделенного участка памяти,
ulCountByte — размер выделяемого участка памяти.
Пример выделения памяти под строку:
Для удобства работы с строковыми типами данными опишем функцию wstring_to_p. Она получает в качестве параметра wstring-строку. Результатом функции является заполненная структура tVariant. Код функции:
Тогда соответствующая секция case оператора switch метода GetPropVal примет вид:
Метода SetPropVal:
Для реализации второго свойства определим поле класса CaddInNative
в котором будем сохранять тип последнего переданного значения. Для этого в метод CaddInNative::SetPropVal добавим команду:
Теперь при запросе чтения значения второго свойства будем возвращать значение last_type, чего требует обозначенное задание.
Проверим работоспособность произведенных изменений.
Для этого приведем внешний вид конфигурации 1С к виду:
Расширение списка методов
- Расширить функционал внешней компоненты следующим функционалом:
- Изучить способы реализации методов внешней компоненты
- Добавить метод-функцию Функц1, которая в качестве параметра принимает две строки («Параметр1» и «Параметр2»). В качестве результата возвращается строка вида: «Проверка. Параметр1, Параметр2»
- Убедиться в работоспособности произведенных изменений
- Добавить имя метода в массивы g_MethodNames и g_MethodNamesRu (файл AddInNative.cpp)
- Добавить осмысленный идентефикатор метода в перечисление Methods (файл AddInNative.h)
- Внести изменения в код функции GetNParams в соответствии с логикой программы
- При необходимости внести изменения в код метода GetParamDefValue, если требуется использовать значения по умолчанию параметров метода.
- Внести изменения в функцию HasRetVal
- Внести изменения в логику работы функций CallAsProc или CallAsFunc, поместив туда непосредственно исполняемый код метода
Отредактируем функцию GetNProps, чтобы она возвращала количество параметров метода «Тест»:
Внесем изменения в функцию CAddInNative::GetParamDefValue:
Благодаря добавленной строке
в случае отсутствия одного или нескольких аргументов соответствующие параметры будут иметь пустое значение (VTYPE_EMPTY). Если необходимо наличие значения по умолчанию для параметра, следует задать его в секции eMethTest оператора switch функции CAddInNative::GetParamDefValue.
Так как метод «Тест» может возвращать значение, необходимо внести изменения в код функции HasRetVal:
И добавим исполняемый код метода в функцию CallAsFunc:
Скомпилируем компоненту и приведем код конфигурации к виду:
Таймер
- Изучить реализацию таймера в демонстрационной ВК
- Модифицировать метод «СтартТаймер», добавив возможность передавать в параметрах интервал срабатывания таймера (в миллисекундах)
- Убедиться в работоспособности произведенных изменений
Рассмотрим реализацию таймера в демонстрационной ВК.
Так как мы рассматриваем процесс разработки внешней компоненты для ОС семейства Windows, не будем рассматривать реализацию таймера в других операционных системах. Для ОС GNU/Linux, в частности, реализация будет отличаться синтаксисом функции SetTimer и TimerProc.
В исполняемом коде вызывается метод SetTimer, в который передается функция MyTimerProc:
Идентефикатор созданного таймера помещается в переменную m_uiTimer, чтобы в последствии его можно было отключить.
Функция MyTimerProc выглядит следующим образом:
Приведем код метода CallAsProc к виду:
Теперь проверим работоспособность. Для этого в модуле управляемого приложения конфигурации напишем код:
Взаимодействие с системой «1С: Предприятие»
Тип данных tVariant
При обмене данными между внешней компонентой и системой «1С: Предприятие» используется тип данных tVariant. Он описан в файле types.h, который можно найти на диске с ИТС:
- смесь (union), предназначенную непосредственно для хранения данных
- идентификатор типа данных
- Определение типа данных, которые в данный момент хранятся в переменной
- Обращение к соответствующему полю смеси, для непосредственного доступа к данным
Приложение
Ежедневно работающие в 1С коллеги не дадут соврать, что часто сталкиваемся с ситуацией, когда необходимо из браузера или почты быстро открыть документ в 1С и не в браузере, а именно в тонком или толстом клиенте. Например, согласовываем какой-то документ и хотим уведомить подписанта о том, что необходимо поставить автограф в соответствующем бланке. Следовательно, подписывающему сотруднику отправляем письмо на почту в виде напоминания. Получатель открывает уведомление и видит, что все ждут, когда появится его подпись на согласованном документе. Сразу приходится открывать тонкий клиент 1С, искать этот документ, в котором нужно поставить галочку, ставить и закрывать 1С. Согласитесь, это очень неудобно и отнимает время, которого и так не хватает. Но хочу обрадовать читателей этой статьи, выход есть! Мы в компании используем собственно разработанную программу Управление IT-отделом 8 для решения задач клиентов. Зачастую программа находится в закрытом состоянии и дабы не столкнуться с ситуацией, описанной в примере, было принято решение облегчить процесс открывания объектов базы из электронной почты одним щелчком мыши. Как известно лень – это двигатель прогресса, а программисты люди ленивые и хотят жить проще. Поэтому перейдем к разбору и покажем, как мы открываем задания (тикеты) в тонком клиенте 1С, но не ищем их, когда приходит уведомление на почту, а щелкаем по на объект 1С.
Сразу оговорюсь, что данный способ открытия внешних ссылок объектов базы в тонком клиенте можно использовать только в конфигурациях, работающих на платформе 1С:Предприятие 8.3.. Это связано с тем, что только в этой версии поддерживается возможность работы с командной строкой. Ближе к делу, первым делом настроим саму программу, для это запускаем конфигурацию и переходим в раздел «Администрирование» - «Общие настройки» и раскроем подраздел «Публикация информационной базы». В данном подразделе доступны для заполнения два реквизита:
- Адрес в интернете – это адрес, который используется для формирования ссылок на объекты информационной базы, доступных через публикацию в сети интернет. Другими словами, в данном реквизите указывается адрес публикации базы на веб-сервере;
- Локальный адрес – это адрес, который используется для формирования ссылок на объекты информационной базы, доступных через публикацию в локальной сети.
Адрес файловой базы
Адрес серверной базы
31 Comments
как полагаете почему нет плюсов? Вроде как люди скачали а плюсов нет )))
раскройте код в статье и люди потянутся ))
Было бы хорошо, если 1cestart.exe понимал ссылки без прямого пути к базе, например по заранее настроенному соответствию.
достаточно было указать:
а в настройках 1cestart.exe имелась возможность указать соответствие:
«Условное_Имя» соответствует «server_name/base_name»
Если бы была такая возможность
Кстати, если использовать этот метод для 1С:Документооборота, то в настройках уведомлений веб-адрес базы можно указать:
В письме почему-то ссылка e1c:// не выделяется как гиперссылка, а если ее скопировать-вставить в адресную строку то работает только через Internet Explorer, через Google Chrome не работает. У вас не так?
Как заставить outlook воспринимать e1c:// как гиперссылку?
(6) Zhilyakovdr, Зависит от того, каким образом формируется письмо:
1. Если письмо формируется программно, то достаточно сформировать его в формате HTML и оформить ссылку соответствующим образом.
2. Если письмо создается вручную и ссылка вставляется руками (через буфер обмена, например), то необходимо, при вставке адреса, самостоятельно оформить его как гиперссылку средствами редактора Outlook (ВставкаГиперссылка).
Почему 1Ска сама при установке это в реестр не прописывает? Интересно…
А по теме однозначно плюс.
Подскажите, пожалуйста, можно ли при открытии таких ссылок записать, например, новых контрагентов в базе… Есть ли у вас какой-то пример использования данного метода? Или может посоветуете где найти информацию?
(9) wmonref1, Нет, эти ссылки предназначены только для открытия объектов. На тему манипуляции данными ИБ по ссылкам рекомендую поискать информацию по интерфейсу OData.
В версии 8.2 переход по ссылке не работает. Открывается нужна ИБ, авторизация, но ссылка не открывается. Можно дополнить в реестре строчку, добавив параметр:
@=»»C:\Program Files (x86)\1cv8\common\1cestart.exe» /URL «%1» /C «%1″» и обработать переданный параметр ПриНачалеРаботы(). Но и тут сложность. Если ИБ не прописана в загрузчике, то параметр будет пустым.
(11) colinsn, я собственно и написал, что работает начиная с 8.3. С 8.2 можно настроить только открытие объекта через web-клиент.
Наверное, кликабельность ссылок блокируется в целях безопасности.
Есть варианты, как сделать так, что бы при переходе по ссылке не открывалась новая 1Ска, еси она уже открыта (сейчас оно так работает, при каждом клике открывает новую)?
(14) Таких экспериментов не ставил. Подозреваю, что т.к. может быть открыто несколько экземпляров 1С с разными ИБ, то поиска экземпляра с «нужной» ИБ не происходит.
1. При необходимости внести в реестр изменения без административных прав, можно воспользоваться ключом в пользовательской ветке. То есть, вместо
узла HKEY_CLASSES_ROOT использовать узел HKEY_CURRENT_USERSoftwareClasses
Если необходимо в путях использовать расширяемые переменные (например %AppData%), то текст следует задавать в параметрах типа REG_EXPAND_SZ, а в файле реестра это будет выглядеть как @=hex(2):25,00…. Чтобы сформировать параметр по умолчанию в таком виде подручными средствами, можно в реестре в нужном узле создать параметр такого типа, и вставить в него текст с расширяемыми переменными , затем экспортировать узел с параметром, отредактировать экспортированный файл так, чтобы вместо названия параметра в кавычках был установлен знак @ (без кавычек). После импорта файла в реестр, параметр по умолчанию будет иметь нужный тип.
Thread 0 - System ID 118120
Утилита Logman.exe
Про утилиту Logman.exe я еще подробно расскажу в отдельной статье, в ее задачи входит записывать счетчики производительности или лог работы приложения, его трассировки, и еще много чего, наверняка вы видели ее графический интерфейс в виде сеансов отслеживания событий.
Когда вы захватываете через утилиту Logman.exe трассировку событий, то создается очень объемный лог, и если вы его не ограничите, то он забьет ваш диск за час. Для того, чтобы его слегка минимизировать мы может явным образом указать какие именно провайдеры Windows вы должны захватывать, как их определить я покажу чуть ниже. Откройте командную строку, лучше в режиме администратора, чтобы всякие UAC вам не мешали. Далее посмотрим всех доступных поставщиков, если не будет влезать на экран, то можете воспользоваться ключом | more или запустить все в PowerShell.
Как видим их приличное количество, но нам бы хотелось анализировать только те, что относятся к 1С. Чтобы отфильтровать, поставщиков Windows, вы можете использовать PID процесса. В диспетчере задач найдите нужный вас процесс, предположим в моем примере это ID 42424
В командной строке пишем:
На выходе вы получите уже меньшее количество поставщиков Windows, у меня это получилось вот так для 1С 8.3.14.1630. Тут нас будут интересовать исключительно GUID.
Вам необходимо в текстовый файл сохранить именно GUID значения, по одному значению в строке. Далее этот файл нам будет нужен, при мониторинге. Создайте у себя для удобства отдельную папку. в которую сохраните файл со списком GUID. у меня это будет путь C:\tmp\provaders8.txt. Далее вам нужно определиться сколько вы готовы отдать под файл лога, учтите что он заполняется молниеносно, и сохраняется в сжатом виде в формате .etl, но если вы его потом распакуете, то например 50 МБ превратятся в 750, это нужно учитывать, но есть и обратная сторона нужно больше данных для диагностики, поэтом маленьким его делать так же нет смысла. Я в своем поиске сделаю его 3 ГБ.
В командной строке создаем новую трассировку в Logman.exe:
Далее нам необходимо обновить наше задание и сказать, что собирать данные нужно по определенным провайдер, которые находятся у нас в файле:
В итоге у вас начинается наполнение файла .etl
Посмотреть статус и список работающих провайдеров вы можете командой:
Я вижу, что мой сеанс отслеживания событий под именем 1С8 работает. Кстати если вы откроете оснастку "Управление компьютером" и перейдете в раздел "Производительность - Группы сборщиков данных - Сеансы отслеживания событий", то вы увидите тот же список заданий. Тут проще будет потом вносить изменения, например по ключевым словам или уровнем событий, так как по умолчанию у меня стоит уровень 0, подразумевающий собирать все.
Теперь ждем сбоя, после которого вам нужно остановить ваше задание, можно из графического интерфейса
или же командой:
Далее нам необходим из данного архива получить дамп приложения и его лог, для анализа. Сделать, это можно командой:
Напоминаю, что у вам потребуется много места. Все начинается распаковка лога, вы будите видеть таскбар. В итоге из своих 3 ШБ, я получил файл дамп (dumpfile.xml) приложения 1С Предприятие в размере 41 ГБ и текстовый файл summary.txt
Получив такой огромный лог, я не смог его прочитать, утилита Microsoft Message Analyzer писала, что недостаточно памяти для продолжения выполнения программы. Пришлось уменьшать размер epl файла до 100 МБ и собирать меньшее количество провайдеров, исключив некоторые Microsoft и фиксировать только ошибки, уровня 2.
Так же я параллельно создал ключи реестра, которые при сбое определенного приложения будут записывать его дамп.
В итоге я получил небольшого вида файлы, которые чуть больше смогли ответить, в чем проблема связанная с появлением ошибки с ID 1000.
Откройте DebugDiag Analysis, выберите пункты:
- crashHangAnalysis
- MemoryAnalysis
- KernelCrashHangAnalysys
После чего нажимаем кнопку "Add data Files".
После чего нажмите "Start Analysis"
На выходе вы получаете веб отчет, у меня выглядело вот так:
WARNING - DebugDiag was not able to locate debug symbols for \wbase83.dll, so the information below may be incomplete.
In 1cv8c.exe.10324.dmp the assembly instruction at wbase83!wbase::BaseWindow::windowProc+fe4 in C:\Program Files (x86)\1cv8\8.3.14.1630\bin\wbase83.dll from 1C-Soft LLC has caused an access violation exception (0xC0000005) when trying to read from memory location 0x13380954 on thread 0
Please follow up with the vendor 1C-Soft LLC for C:\Program Files (x86)\1cv8\8.3.14.1630\bin\wbase83.dll
Далее хотя бы видно, к какой базе данных было подключение, для этого есть ключ /IBName.
Далее вы увидите более детальную отладочную информацию по Thread - System ID, она может быть полезна для разработчиков 1С.
Алгоритм поиска проблемы
Сразу скажу, что внятного ответа ни разработчики 1С ни техническая поддержка мне дали, все сказали, что у вас проблема с системой. И так, что я делал при поиске проблемы:
1. Вводил абсолютно свежий сервер с установленным Windows Server 2012 R2, эффекта не дало, ошибка все так же появилась
2. Удалил все неиспользуемые версии 1С, остались на текущий момент
3. Пробовал удалять кэш 1С, эффекта не дало
4. Переустановка самого клиента 1С, эффекта нет
Далее я решил попробовать собрать трассировку работы приложения по определенным провайдерам Winows и 1С, я такое делал уже при проблеме временного профиля на терминальных серверах. Для этих целей я использовал утилиту logman.exe.
Читайте также: