Устанавливал клиенту Розницу 1С и сканер штрихкода Honeywell Voyager 1450. При стандартной настройке - сканер работает в режиме клавиатуры. Но в таком режиме, как известно, работать невыносимо: Приходится перед вводом штрих кода вызывать окно ввода через Alt+7. Добавление префикса не помогло
Было решено подключить через COM:
1. До подсоединения сканера, установить драйвер «Honeywell Scanning and Mobility (HSM) USB Serial Driver» с страницы (раздел «Программное Обеспечение»). На сайте производителя
2. Подсоединить сканер к USB порту ПК. Дождаться установки устройств.
3. Считать управляющий штрих-код «USB Serial» (TERMID130) из руководства по установке. Вот его скрин:
Должно появиться новое устройство в секции «Порты (COM и LPT)».
В свойствах настройки я переключил на COM4.
В 1С выбираем драйвер 1С Native Api - он подходит и работает. Стандартный COM не подошел, т.к. суффикс NONE нам отсутствует!
В открывшемся окне нажмите кнопки Функции -> Тест устройства
В новом окне нажмите кнопку очистить , а затем сосканируйте любой ШК и в окне появится результат сканирования и будет ясно к какому по номеру СОМ подключен сканер.
Закройте окно Теста устройства и Запишите настройки сканера ШК.
Замечание:В моем случаем поле Суффикс нужно было указать NONE, но бывает что нужно устанавливать (13)CR - зависит от модели сканера.
Все - сканер работает
Для возвращения к режиму USB сосканируйте TRMUSB130 из скрина выше или вот код восстановления стандартных настроек сканера:
В этой статье я расскажу, как загружать данные в 1с 8 из простейших текстовых файлов с разделителями. Обычно они имеют расширение csv (Comma-Separated Values). Т. е. название подразумевает, что в каждой строке такого текстового файла значения разделены запятой. Но на самом деле, запятую, в качестве разделителя, использовать не надёжно. Поэтому применяют другие разделители, которые в обычном тексте встречаются редко. Это могут быть символы «^», «~»,«|» и другие. Итак, наша задача состоит в том, чтобы загрузить имеющуюся в csv файле информацию в базу данных 1с. Например, в файле будут содержаться товары интернет - магазина. В качестве образца, я взял выгрузку из магазина на скрипте virtuemart. Посмотрим, как выглядит файл.
Привожу две первых строки из него:
Посмотрим на файл.
Первая строка служебная. В ней описан формат нашего файла. Т. е. в какой ячейке, что находится. Однако, имейте в виду, что такой строки может и не быть.
Ячейки образуются при помощи разделителя «^», а данные в ячейках обрамляются символом «~».
В любой конфигурации 1с есть иерархический справочник товаров. В него и будем загружать информацию.
Создадим внешнюю обработку. Добавим строковый реквизит «путьКФайлуЗагрузки» для хранения имени файла. Добавим на форму поле ввода, связанное с данным реквизитом. Включим в свойствах поля ввода кнопку выбора и создадим обработчик события «НачалоВыбора» и напишем в нём такой код:
Т. о. мы организовали диалог для выбора файла в нашей обработке.
Хорошо. Теперь, для удобства и наглядности я предлагаю создать временную табличку, в которую мы загрузим текстовый файл, а уже после её заполнения - будем осуществлять загрузку в базу 1с. Для этого, на форму добавим табличное поле «табЗагрузки», с типом значения «ТаблицаЗначений» и командной панелью. В панели поместим кнопку «Заполнить» и создадим обработчик её нажатия «КоманднаяПанель1Заполнить». Также для элемента универсальности, добавим в обработку два строковых реквизита «символОграничения» и «разделительПолей». В них мы будем хранить «^», и «~». Можно в теле модуля формы осуществить их начальную инициализацию:
разделительПолей = "^";
символОграничения = "~";
Это позволит пользователю задать свои значения и при желании сохранить настройку, которая впоследствии не затрется нашей инициализацией.
Функцию разложения строки с разделителями в массив можно разместить как в одном из общих модулей, так и непосредственно в обработке.
Отлично. В итоге, после заполнения, получим примерно такую картинку:
Теперь приступим непосредственно к загрузке товаров. Рядом с кнопкой «заполнить» добавим кнопку «загрузить» и добавим обработчик её нажатия «КоманднаяПанель1Загрузить», а также добавим реквизит «ПапкаЗагрузкиВыгрузкиТоваров» с типом вашего справочника товаров для опциональной их загрузки в определенную папку. Текст обработчика будет такой:
В приведенном коде две новые функции «вернутьТовар» и «ЗаписатьЭлементСпр». Вот их текст:
И осталась последняя новая функция для обработки родителя товара вернутьРодителяТовара. Текст её смотрите ниже. Комментарии по тексту.
Подключимся и загрузим из файла Excel данные в таблицу значений 1С. Сделать теперь это очень просто.
1. В конфигурации добавляет новый объект метаданных типа "Внешние источники данных" и назовем его просто "Excel".
2. На закладке "Данные" созданного объекта "Excel" добавляем новую таблицу. При этом появится окно мастера добавления таблицы внешнего источника.
Выбираем первый пункт "Вручную", т.к. лично у меня второй пункт "Выбрать из списка таблиц внешнего источника данных" работает нестабильно.
Если Вы все же хотите попробовать добавить таблицу через второй пункт, то в качестве строки соединения в появившемся окне указываем: Driver={Microsoft Excel Driver (*.xls)};DBQ=C:\Documents and Settings\Admin\Мои документы\finance3.xls; DriverID=790
В этой строке укажите путь к своему файлу. Имя пользователя и пароль я не указывал.
Отмечу, что путь к файлу и строка соединения в дальнейшем не запоминается и нужны эти параметры единожды, чтобы создать автоматически описание полей таблицы источника.
Если соединение прошло нормально, то должен отобразиться список таблиц источника. Флажком можно выбрать нужную таблицу и ее поля.
3. Даем имя новой таблице "Данные". Переходим на вкладку таблицы "Данные". В поле "Имя в источнике данных" указываем имя листа в файле Excel и добавляем в конце знак "$". В моем случае это "Данные$". В табличной части "Поля" добавляем поля и редактируем их тип.
У каждого поля в свойствах должно быть задано как минимум "Имя" и "Имя в источнике данных".
4. Создаем процедуру в которой пишем подключение к источнику и запрос:
Так как работа с ДеревомЗначений и ТаблицейЗначений в данном контексте практически не отличается, в примере будет использоваться ДеревоЗначений, все тоже самое за исключением иерархии применимо и к ТаблицеЗначений. Как известно, в платформе 1С 8.1 не составляло никакого труда связать дерево значений с табличным полем на форме, единственное что при этом нужно было не забыть так это СоздатьКолонки(). В управляемом приложении 1С 8.2 сделать это не так просто как кажется на первый взгляд.
Обращаю внимание, что ДеревоЗначений доступно только на сервере, в толстом клиенте и внешнем соединение. В данных самой управляемой формы для моделирования дерева используется тип ДанныеФормыДерево. Для преобразования ДеревоЗначений <-> ДанныеФормыДерево используются методы управляемой формы ЗначениеВРеквизитФормы() и РеквизитФормыВЗначение(). Для непосредственного отображения дерева используется элемент формы типа ТаблицаФормы связанный через реквизит ПутьКДанным с реквизитом формы типа ДанныеФормыДерево. Если Вам не очень понятна вышеописанная связь объектов, не огорчайтесь, ниже рассмотрим практический пример и все встанет на свои места.
Задача: Имеется дерево значений, необходимо отобразить его на управляемой форме.
Создаем новую внешнюю обработку ( Скачивать файлы может только зарегистрированный пользователь! ), добавляем управляемую форму и создаем обработчик ПриСозданииНаСервере(). Никаких реквизитов и элементов “вручную” не добавляем, будем делать это программно.
Механизм Drag and D_rop (или проще говоря “Перетаскивания”) для ДереваЗначений расположенного на управляемой форме управляемого приложения
Основная сложность реализации механизма перетаскивания заключается в том, что у строки ДереваЗначений платформа не позволяет просто изменить родителя, т.е. переподчинить строку. Единственный способ это сделать – создать новую строку вместе со всеми подчиненными строками, т.е. полностью скопировать всю ветку дерева вместе со всей иерархией и подчинить ее требуемой строке-родителю, после чего удалить исходную ветку. Данная задача распадается на две подзадачи:
1). Перед перетаскиванием необходимо проверить корректность данной операции, узел дерева нельзя переносить в узлы подчиненные ему самому, т.е. родительский узел нельзя переносить в дочерние, т.к. это приведет к “бесконечной рекурсии” и “падению” платформы. Это реализуется с помощью обработчика события ЭлементДеревоПроверкаПеретаскивания(…)
2). Если перетаскивание возможно, то при помощи обработчика ЭлементДеревоПеретаскивание(…) запускается рекурсивная функция, которая создает новую ветку дерева, подчиненную требуемому родителю, а исходную удаляет.
Обращаю особое внимание на то, что в платформе 8.2 реализован механизм множественного выбора элементов, поэтому вышеуказанные операции необходимо произвести для всех выбранных пользователем элементов. ( Скачивать файлы может только зарегистрированный пользователь! )
Реализовать трехпозиционный флажок в ДеревеЗначений на управляемой форме
который работает по следующему алгоритму:
* Если у элемента ДереваЗначений нет подчиненных элементов, то флажок может быть либо “включен”, либо “выключен”.
* Если у элемента есть подчиненные, то флажок “включен”, если ВКЛЮЧЕНЫ флажки у ВСЕХ подчиненных элементов, “выключен” если ВЫКЛЮЧЕНЫ флажки у ВСЕХ подчиненных элементов.
Если у некоторых подчиненных элементов флажки включены, а у некоторых выключены, то флажок родительского элемента имеет значение “неопределенно”.
* При включении флажка у родительского элемента, включаются флажки ВСЕХ подчиненных, при выключении флажка у родительского элемента, выключаются флажки ВСЕХ подчиненных.
Возьмем из первой статьи процедуру построения дерева значений и доработаем ее, добавив в дерево еще одну колонку, которая будет содержать элемент управления флажок и реализуем для него обработчик события “ПриИзменении”. Весь алгоритм сводится к обработке изменения флажка: у всех подчиненных элементов необходимо включить/выключить флажки в зависимости от состояния флажка текущего элемента, а у всех родителей текущего элемента (которые расположены на верхних уровнях иерархии) проставить флажки в состояния “включен”/”выключен”/”неопределенно” в соответствии с вышеописанным алгоритмом. ( Скачивать файлы может только зарегистрированный пользователь! )
Ошибка возникла при установке драйвера защиты на ПК под управлением Windows Vista:
Failed to start the Aladdin Device Driver
Failed to start service in the Service Control Manager Database0x20080070x20007
Для решения проблемы установите драйвер защиты версии 4.102,
совместимый с Windows Vista.
Файлы из полученного архива нужно скопировать в каталог установки
программных файлов 1С:Предприятия 7.7 (по умолчанию C:\Program Files\1Cv77\BIN)
и установить драйвер защиты из меню
Пуск - Программы - 1С:Предприятие 7.7 - Установка драйвера защиты.
При этом следует помнить, что драйвер защиты должен быть установлен
только на том компьютере, к которому присоединен ключ HASP.
1)НЕ СТАВЬТЕ МЕНЕДЖЕР ЛИЦЕНЗИЙ В ТЕРМИНАЛЕ (точнее устанавливайте в 0-й сессии, запуская %SystemRoot%system32mstsc.exe /console
2) сначала ставьте менеджер лицензий, и только потом устанавливайте сетевой ключ
3) если клиент 1С 8.0 видит ключ, это не значит что увидит 8.1 (файл теперь обычно C:Program Files1cv81inconf
ethasp.ini)
4) в терминале локальные ключи не видны, надо в nethasp.ini прописывать в явном виде место расположения сетевого ключа и менеджера лицензий
NH_SERVER_ADDR = 192.168.159.1 ;;(IP-адрес должен быть правильный)
5) клиент 8.1 сначала ищет локальный ключ и если его находит, никогда не будет искать сетевой
6) несколько сетевых ключей или локальный и сетевой ключ на один компьютер ставить нельзя
7) для серверной части 1С надо бывают ТОЛЬКО ЛОКАЛЬНЫЕ НЕ КЛИЕНТСКИЕ ключи
Здорово серверный 64 битный ключ (он зеленый) поддерживает 32битный сервер, в том числе 8.0, но серверный 32битный ключ не поддерживает 64битный сервер 1С
9) для SQL ключей не надо, он не проверяет даже купленные свои лицензии, но покупать их надо : )
10) если большая нагрузка в сети и много клиентов, то менеджер лицензий может не успеть выдать лицензию : ), чтобы это решить, увеличьте интервал опроса к менеджера лицензий клиентов в C:Program Files1cv81inconf
ethasp.ini
NH_SESSION = 5
NH_SEND_RCV = 4
NH_USE_BROADCAST = Disabled
И ограничьте в C:Program FilesAladdinHASP LM nhsrv.ini компьютеры с которых могут подключаться пользователи, например
NHS_IP_LIMIT = 10.24.2.18-99
11) для 64битных менеджеров лицензий или просто свежие скачайте драйвера с http://www.aladdin.ru/support/download/category260
12) на сервере с менеджером лицензий должен быть статический ip-адрес
13) при большом количестве пользователей раздавайте менеджеры лицензий для каждого клиента персонально, указывая конкретный компьютер
NH_SERVER_ADDR = 192.168.159.1 ;;(IP-адрес должен быть правильный)