Ошибка в Cleverence.Hosting
Дополнительная информация:
- используется самописный коннектор.
- раньше была установлена другая версия Cleverence Soft
Ответ
Что выполняется в Вашем коннекторе? Там происходит захват каких-либо ресурсов, создание COM-объектов, обращение к внешним системам? В коннекторе выполняется обработка исключений? Попробуйте обернуть вызов в try ... catch. Коннектор можкт реализовывать интерфейс Cleverence.Connectivity.ILogClient, тогда можно из коннектора писать в лог Log.Write("...");
1; 11; 15.10.2015 17:49:21.714 ERROR
Прошу прощения не правильно выложил логи после ошибки. Файл с таким содержанием создается после подобной ошибки:
2; 11; 17.10.2015 13:18:53.742 ERROR
Добрый день!
Исправления есть в новом MSI на сайте, в самом последнем релизе, но нужно будет произвести переустановку драйвера
Здравствуйте! Тестируем новую версию программы. Но появилась новая ошибка не возникавшая никогда ранее.
Порядок наших действий:
1. Удалили старую версию программы, а также все её папки и файлы.
2. Установили новую версию.
3. К нашему проекту коннектора подключили библиотеки из новой версии.
4. Скомпилированные файлы коннектора добавил в "C:\Program Files (x86)\Cleverence Soft\Driver1C WiFi\Server\bin" и в "C:\Program Files (x86)\Cleverence Soft\Driver1C WiFi\Control Panel\Addins" (папки Addins по умолчанию не было как в прежней версии, создавал вручную)
5. В панели управления добавляю соединение. Выбираю свой BPMConnector.
6. Нажимаю "Сохранить внешние соединения" или "Выгрузить внешние соединения" и получаю ошибку. (см. скриншот)
В предыдущей используемой версии такого не наблюдалось. Коннектор добавлялся без проблем.
Также прилагаю логи сервера после ошибки:
2; 13; 02.11.2015 11:17:11.090 ERROR
Добрый день!
Перезапустите сервер терминалов после добавления.
Перепроверьте название коннектора и запрашиваемой функции, BPMconnector1 и BpmConnector
Сервер терминалов перезагрузил в первую очередь. Название коннектора даже копировал из проекта.
Вот ещё лог панели управления
1; 1; 02.11.2015 12:51:29.604 ERROR
В логах почему-то везде "BPMConnector1 " но на самом деле название я пишу BPMConnector. Ещё раз:
Отключите сервер, откройте папку через панель Server/documents - произведите изменения, сохраните, запустите сервер.
Не понял фразу "откройте папку через панель сервера/документы"
при запуске сервера он берет конфигурацию из папки Documents, если вы локально её там и настроите и сохраните, то она и запустится, и выгружать на сервер ничего не нужно.
А вот этого не знал. Сделал конфигурацию локально сохранил в документы сервера. Запустил сервер - и он подтянул новую конфигурацию. Интересно что теперь при попытке подключится к серверу из панели управления - получаю ту же ошибку, что делает невозможным правки на горячую. Но с этим можно жить. А также после перезагрузки сервера коннектор отваливается. Его невозможно дебажить и кажется его совсем перестает видеть сервер терминалов и пишет в логи ошибки об этом.
Логи эмулятора:
1; 7; 02.11.2015 14:02:07.763 ошибка
Очистите папку документов от номенклатуры и от документов, так же в папке Server/Documents
Cleverence.Warehouse.ProductBook и Product, файлы начинающиеся на doc, перезапустите сервер.
Как я понял ошибки сыпались из-за того, что при перезагрузки сервера он не подтягивает коннектор.
Итак что я делаю.
1. Останавливаю сервер
2. Удаляю все документы с сервера и с эмулятора
3. Удаляю библиотеку коннектора. Добавляю библиотеку коннектора.
4. Запускаю сервер. Запускаю эмулятор
5. Список документов формируется отлично. Пытаюсь сканировать товар:
1; 14; 02.11.2015 15:13:53.392 ERROR
Прошу прощения, я вам дал не тот архив, дал от обычного Wi-fi, скачайте ПРОФ. чуть выше ссылка.
Да. На этом дистрибутиве определённо лучше. Но возникла ещё одна проблема.
Система обращается к коннектору для получения записей документа. Коннектор возвращает объект с списком продуктов и штрих-кодами. Но при попытке считать штрихкод терминал не может найти продукт с таким штрихкодом. На прошлом дистрибутиве всё работало, коннектор после этого не меняли.
Прилагаю скриншот объекта, который возвращает коннектор. Что интересно в списке продуктов на терминале все эти продукты отображаются.
Сканирую штрихкод: "0003101115" - продукт с таким штрихкодом не найден!
Добрый день!
В логе ТСД или вин клиента нет описания ошибки получения товара по ШК, может быть там что то написано?
Нет. В логи вообще ничего не записывается после ошибки.
На всякий случай сделал ещё скриншот конфигурации. Но повторюсь от предыдущего дистрибутива ничего не менялось. Конфигурацию скопировали.
После сканирования система переходит к пункту "Заявка с таким штрихкодом не найдена", хотя коннектор точно отправляет продукт с тем штрихкодом, который вносится в вин клиент.
Возьмите реальный шк из 1с, он обычно привязан к упаковке, а не товару, на 0000 начинается код товара, нужно включить поиск по коду в промежуточной в настройках поиска номенклатуры.
Не могли бы вы подробнее объяснить что нужно сделать. Не понял если честно.
"Возьмите реальный шк из 1с" - у нас нет 1с...
"он обычно привязан к упаковке, а не товару" - пробовал в коннекторе проставлять штрихкод и упаковке - результат тот же.
"нужно включить поиск по коду в промежуточной в настройках поиска номенклатуры." - это где?
Сейчас ещё решил попробовать сделать так. Загрузил на сервер дефолтную конфигурацию из папки Batch . Открыл список номенклатуры, пробую сканировать на вин клиенте штрих-код и он тоже не может быть найден.
Обнаружил ещё одну интересную вещь. После того как я завершаю документ, он приходит на сервер с пустым DeclaredItems , хотя при формировании документа я ведь отдавал на терминал заполненные DeclaredItems.
Это при варианте моей конфигурации с коннектором.
Добрый!
Действие "Выгрузка на склад" получает список маршрутов (тут всё отлично). Открываем маршрут - загружаются заявки в этом маршруте (казалось тоже без проблем). Заявки отображаются, но не находятся по штрих-коду. После завершения документа - документ приходит на сервер с пустым DeclaredItems.
Наша конфигурация:
Спасибо!
Все корректно работает, создал документ на ТСД в Выгрузке на склад, убрал ограничение при поиске номенклатуры из строк документа. Отсканировалось нормально по ШК товара 00000000047
Очистите содержимое папки документов на ТСД, возможно, у вас там хранится старая номенклатура.
Ввести количество неудалось, из за особенностей конфигурации.
"создал документ на ТСД в Выгрузке на склад" - но наша конфигурация не позволяет создавать документы на терминале. Они могут формироваться только на сервере. И как мне кажется это основная проблема в синхронизации документов от коннектора к терминалу. Не могу понять почему заявки видно, но по штих-коду не бьются, и почему документ возвращается без них.
"убрал ограничение при поиске номенклатуры из строк документа" - будьте добры, расскажите подробнее что за ограничение и где оно устанавливается?
"Очистите содержимое папки документов на ТСД" - сделал в первую очередь.
1) В настройках типа документа
3) А на сервере есть номенклатура? Тот скрин что вы присылали не с сервера, а из папки. Подключитесь к серверу и посмотрите, есть ли она там.
А. Не ограничивать товарами документа нам не подходит.
Сделал так: Загрузил свою конфигурацию. Подключился к серверу. Получил от коннектора документ. Номенклатура есть. Штрихкоды есть. Сканирую - не находит.
Завтра с вами свяжется программист, опишите процедуру работы документа, где какие данные должен получать документ, из каких источников, где лежит номенклатура, и что указано в документе.
1. Пользователь выбирает действие "Выгрузка на склад". Получает список маршрутов из БД.
2. Пользователь выбирает маршрут. Получает список заявок в этом маршруте c штрихкодами и количеством.
3. Пользователь сканирует штрихкод. Указывает кол-во. Всё что он сканировал записывается в CurrentItems.
4. Пользователь завершает документ. Коннектор его получает и вносит необходимые правки в БД.
Вот кусок кода отвечающий за формирование документа на этапе 2:
/// Обработка события ПолучитьДокумент.
// Формируем документ
var getRouteSqlString = "select r.SxNumber, r.CreatedOn, v.SxNumber " +
}
// Заполняем документ заявками
var getRequestSqlString = "select s.SxNumberRequestId, r.SxNumber, COUNT(s.SxNumberRequestId), r.SxBarCode from SxRequest r " +
return doc;
Добрый день!
У Вас:
documentItem.ProductId = requestId;
и
product.Id = new Guid(requestId).ToString();
Т.е. в документе и в справочнике номенклатуры будут разные товары, т.к. Id разный. Соответвенно, если стоит настройка Ограничивать товарами документа, товар не находится по ШК. И в строке документа packingId нужно заполнять:
documentItem.PackingId = "requestPack";
Вообще, если нужно ограничить сканирование только строками документа, номенклатуру можно вообще не использовать.
Можно в строках документа выгружать специальный "неизвестный товар", а штрихкод записывать в доп. поле:
documentItem.ProductId = "*"; // ид. неизв. товара
documentItem.PackingId = "шт";
documentItem.SetField("Barcode", BarCode;); // добавьте в строка документа в конфигурации поле Barcode
documentItem.SetField(... // другие поля, если требуется
В конфигурации для сканирования используйте действие Редактирование поля (в нем сканер работает). Для поиска строки документа Выбор строки с поиском по полю Barcode.
Но Ваш вариант тоже должен работать, если documentItem.ProductId и product.Id будут одинаковые.
Сервис поддержки клиентов работает на платформе UserEcho
Добрый день!
У Вас:
documentItem.ProductId = requestId;
и
product.Id = new Guid(requestId).ToString();
Т.е. в документе и в справочнике номенклатуры будут разные товары, т.к. Id разный. Соответвенно, если стоит настройка Ограничивать товарами документа, товар не находится по ШК. И в строке документа packingId нужно заполнять:
documentItem.PackingId = "requestPack";
Вообще, если нужно ограничить сканирование только строками документа, номенклатуру можно вообще не использовать.
Можно в строках документа выгружать специальный "неизвестный товар", а штрихкод записывать в доп. поле:
documentItem.ProductId = "*"; // ид. неизв. товара
documentItem.PackingId = "шт";
documentItem.SetField("Barcode", BarCode;); // добавьте в строка документа в конфигурации поле Barcode
documentItem.SetField(... // другие поля, если требуется
В конфигурации для сканирования используйте действие Редактирование поля (в нем сканер работает). Для поиска строки документа Выбор строки с поиском по полю Barcode.
Но Ваш вариант тоже должен работать, если documentItem.ProductId и product.Id будут одинаковые.