Записки фрилансера о внедрении 8.2
Эти записки не претендуют на полноту понимания вопроса, наоборот это приглашение к обсуждению подводных камней и краткое описание тех граблей, на которые я наступил.
Так получилось, что в течение года я веду два проекта средней сложности. Начинались оба на 8.1 но затем заказчик второго проекта очень впечатлился настраиваемым интерфейсом 8.2 и при вялом сопротивлении с моей стороны проект перетек на новую платформу, а мне представилась возможность сравнить два внедрения.
Сложность проектов примерно сравнима.
Первый - переход с не 1с через выгрузку начальных остатков в EXCELL на комплексную автоматизацию. Дописаны ячеистое хранение, функционал для сервисных работ, рабочие места менеджеров на основе менеджера контактов для планирования сервисных работ, автоматическая генерация серий номенклатуры, управленческий баланс, подключены ТСД и сканеры штрихкодов. Проект прошел очень удачно, два месяца уже идет только добавление функционала и наведение лоска. Во многом спасибо заказчику – он четко знал чего хотел и взял на себя всю настройку прав доступа.
Второй проект – переход с 7 на управление торговлей через перенос данных за 8 лет документ в документ. Дописаны рабочее место кассира (за основу взято РМК из конфигурации розница), встроен механизм ценообразования из поступлений, добавлен функционал для торговли товаром из другого магазина через расходные ордера, автозаказ поставщикам, много чего по мелочи.
И вот в середине внедрения мы переходим на 8.2. Первая сложность – подключение торгового оборудования. Нужны либо специализированные обработки под 8.2, либо доработка существующих обработок. Сложность в том, что я не нашел способа вызвать неуправляемую форму внешней обработки по имени. Два варианта. Либо переписывать вызываемую форму настройки в управляемую, что относительно сложно, либо вставлять обработку в конфигурацию и переписывать вызов, что быстро, но не универсально.
Вторая сложность. В не управляемых формах перестал работать предварительный просмотр при отправке на печать. Работает только для управляемых форм. Пришлось ипмортировать всю подсистему печати из «Управления небольшой фирмой». Дальше больше. В управляемых форм ах не работает компонента 1С:Barcode. В табличный документ компоненты ActiveX теперь не вставить, только рисунок, сгенерированный новой компонентой, как УНФ. Пришлось импортировать всю подсистему печати штрихкодов и этикетов из УНФ. Как бонус – отличный редактор ценников и этикеток. Конечно, здорово использовать все возможности компоновки данных, но очень часто ошибки в запросе и неправильные настройки источников приводят не к диагностической ошибке, а к вылету всей системы. Искать ошибки при этом можно только эмпирическими методами. При переписывании запросов под управление торговлей не раз помянуты были даже родственники разработчиков системы компоновки данных. Дальше опять привет разработчикам типовых конфигураций. Размер штрихкода в УНФ получается следующим образом. Берется размер картинки шрихкода из макета этикетки, созданного в редакторе макетов и хранящегося в справочнике ценников и этикеток. Из компоненты получается минимальная ширина, сравнивается с шириной картинки. Если ширина меньше максимума берется максимум +10. Компонента генерирует новый рисунок штрихкода. Все это отлично работает на больших этикетках. На маленьких этикетках размер штрихкода получается микроскопический, окруженный гигантскими полями.
Мое решение (не претендует на идеал). Зафиксируем размеры штрихкода на которых он получается без полей и их передаем в компоненту. Рисунок на макете сделаем растягивающимся на все поле. Текст штрихкода лучше печатать самостоятельно, он не будет масштабироваться и будет печататься четче. Не забудьте добавить строчку для задания имени настроек печатного документа, иначе все настройки надо настраивать каждый раз заново.
Сложность 3. Неправильная реакция табличного поля на выбор двойным кликом. Не происходит активация ячейки, на которой стоит курсор, а происходит выбор уже активного поля. Очень критично в подборе номенклатуры по наименованию в РМК. Происходит выбор не той номенклатуры и кассир может этого не заметить. Как бороться непонятно, одна надежда, что 1С это когда-нибудь выправит. Работа РМК и многих других рабочих мест возможна только в режиме неуправляемых форм. Сложность этих форм настолько высока, что реализовать их функционал в управляемых формах практически не реально. Так что полностью отказаться от неуправляемых форм не получиться.
Хорошая идея переноса нагрузки на сервер, но вот реализация вызывает много вопросов, почему именно так? Написание управляемой формы с разбивкой кода между сервером и клиентом в 2-3 раза более трудоемко, чем написание неуправляемой формы. Почему нельзя было реализовать свой аналог протокола RDP и передавать на клиент только изменения картинки, а обратно действия пользователей?
Сложность 4. Отчеты. Повторный клик по нажатию кнопки сформировать , если отчет уже формируется, по прежнему приводит к неинформативному вылету 1С, не смотря на последний релиз платформы. Методы борьбы мне неизвестны.
Сложность 5. Почти перед запуском столкнулся с критической ошибкой, которая заставила отказаться от запуска толстого клиента в режиме управляемого приложения а вернуться к режиму обычного приложения, до исправления 1С ошибки. Текущий релиз платформы 1С:Предприятие 8.2 (8.2.11.235).
Во всех неуправляемых формах (формы списка номенклатуры, контрагентов и т.д.) где есть поиск по подстроке (быстрый поиск по первым символам), 1С вылетает, если производится поиск комбинации символов, которой нет в столбце поиска.
Ошибка в базе данных исключается - также пробовали на пустой базе с 1 товаром.
Откатывали платформу до 8.2.9.260 - ошибка сохраняется.
Текст ошибки :An unhandled win32 exception occured in 1cv.exe[16500].
В целом проект вызывает противоречивые чувства. С одной стороны 8.2 это очень мощный импульс к развитию функционала, это очень красивый интерфейс и масса новых возможностей.
С другой стороны переход на управляемые формы ощутимо затягивает проект и приносит массу новых сложностей. Слава Богу, почти все сложности преодолимы или не фатальны и проект уже на стадии запуска.
Молочников Олег.
пятница, 18 июня 2010 г. Санкт-Петербург.