Программируя под 8.2, работающем в режиме управляемого приложения, я столкнулся с проблемой печати штрихкода. Для платформы 8.1 и платформы 8.2 в режиме обычного приложения такой проблемы не было: устанавливаем элемент «1С:Печать штрихкодов» в макет и наслаждаемся вертикальными черточками. В режиме управляемого приложения вываливается ошибка:
Что же случилось?
Дело в том, что для управляемого приложения внешние компоненты разрабатываются по другой технологии. Пример внешней компоненты для печати штрих-кода в 8.2 есть в демонстрационной конфигурации "Управляемое приложение" в макетах справочника Товары либо в конфигурации «1С:Управление торговлей» версии 11, макеты обработки «Печать этикеток и ценников».
Данная компонента, получив в качестве параметра строку штрихкода, возвращает картинку – штрихкод, которую программисту предлагается поместить в любое удобное место печатной формы.
Теперь как это сделать.
Всего обработок аж четыре штуки: КомпонентаПечатиШтрихкодовWindows32
КомпонентаПечатиШтрихкодовWindows64
КомпонентаПечатиШтрихкодовLinux32
КомпонентаПечатиШтрихкодовLinux64
Все они загружены в одноименные макеты. Функция, подключающая внешнюю компоненту в зависимости от платформы может выглядеть так:
В коде выше все компоненты загружены в макеты обработки «ПечатьЭтикетокИЦенников». В принципе ничто не мешает поместить их в любое иное место. Вызов функции осуществляется командой:
Если что-то не получилось – возвращает НЕОПРЕДЕЛЕНО.
Далее опишем функцию, которая, получив данные, сформирует нужную нам картинку с штрихкодом:
В данной функции используется автоопределение типа штрихкода командой
Можно тип штрихкода указать вручную:
ТипКода - число от 0 до 15: 0 - EAN8, 1 - EAN13, 2 - EAN128. Вот полный список типов по порядку: EAN8, EAN13, EAN128, Code39, Code128, Code16k, PDF417, Standart (Industrial) 2 of 5, Interleaved 2 of 5, Расширение Code39, Code93, ITF14, RSS14, CodaBar, EAN13 AddOn 2, EAN13 AddOn 5.
Кроме типа штрихкода, компонента имеет ряд других свойств, например ВнешняяКомпонента.ОтображатьТекст, ВнешняяКомпонента.РазмерШрифта и прочие, можно посмотреть в свойствах.
Наконец последнее - вывод штрихкода. Для этого в макет поместим картинку с именем «Штрихкод». Получаем и выводим штрихкод в область командой:
Где Штрихкод – переменная, содержащая строку штрихкода номенклатуры, 50 – требуемая ширина, 30 – высота картинки. В макете размер картинки лучше всего поставить «Реальный размер».
Замечание. Сразу бросается в глаза то, что я вручную указываю размер требуемой картинки – 50 на 30. Возникает вопрос, а нельзя ли размеры требуемой картинки получить из картинки на макете? Конечно можно:
К сожалению, цифры получаемые этими командами почему-то слишком малы. Как получить реальный видимый размер картинки я пока не знаю, может кто подскажет? Источник
Регулярные выражения - это то, что все время забывается из-за не слишком частого использования.
Управляющие символы (., ?, *, +, {}, [], |, $, ^):
. Заменяет один произвольный символ a.c aac, abc ...
^ Отрицание [^0-9] Все кроме цифр. (Ставится внутри скобок)
^ Начало строки ^a Все строки, которые начинаются с буквы a (Ставится в начале строки)
| Альтернативный оператор a|b|c или [abc] Строка содержит либо "a" либо "b" либо "c".
* НОЛЬ или более символов [a-z]* Подряд может идти сколь угодно букв
+ ОДНО или более повторений [a-z]+ Должна быть минимум одна буква
? Ноль или одно повторение 0?7 7, 07
{n,k} [a-z]{1,3} Подряд может идти от одного до трех букв
{n} [a-z]{n}[0-9]{k} Сначала в строке идут n символов, потом k цифр
{n,} [a-z]{0,} Символ может встречаться n и более раз. Тоже самое [a-z]*
$ Конец строки zz$ Все строки, которые заканчиваются строкой "zz"
() Сохранение результата [a-z]{0,} Символ может встречаться n и более раз. Тоже самое [a-z]*
/s Пробел, табуляция, новая строка
/S Все, что не совпадает с /s
/w Слово
/W Все, что не совпадает с /w
/d Цифры
/D Все, что не совпадает с /d
Примеры:
"\\[text\\]" - Поиск строки "[text]" (с управляющим символом).
"/^[a-zA-Z0-9]+$/" - Имя пользователя состоит из букв и цифр.
ПОДОБНО - Оператор проверки строки на подобие шаблону. Аналог LIKE в SQL.
Оператор ПОДОБНО позволяет сравнить значение выражения, указанного слева от него, со строкой шаблона, указанной справа. Значение выражения должно иметь тип строка. Если значение выражения удовлетворяет шаблону – результатом оператора будет ИСТИНА, иначе – ЛОЖЬ.
Следующие символы в строке шаблона являются служебными и имеют смысл, отличный от символа строки:
• % (процент): последовательность, содержащая любое количество произвольных символов
• _ (подчеркивание): один произвольный символ
• […] (в квадратных скобках один или несколько символов): любой одиночный символ из перечисленных внутри квадратных скобок
В перечислении могут встречаться диапазоны, например a-z, означающие произвольный символ, входящий в диапазон, включая концы диапазона.
• [^…] (в квадратных скобках значок отрицания, за которым следует один или несколько символов): любой одиночный символ, кроме тех, которые перечислены следом за значком отрицания
Любой другой символ означает сам себя и не несет никакой дополнительной нагрузки.
Если в качестве самого себя необходимо записать один из перечисленных символов, то ему должен предшествовать <Спецсимвол>. Сам <Спецсимвол> (любой подходящий символ) определяется в этом же операторе после ключевого слова СПЕЦСИМВОЛ. Например, шаблон “%АБВ[0-9][абвг]\_абв%” СПЕЦСИМВОЛ “\” означает подстроку, состоящую из последовательности символов:
буквы А; буквы Б; буквы В; одной цифры; одной из букв а, б, в или г; символа подчеркивания; буквы а; буквы б; буквы в.
Причем перед этой последовательностью может располагаться произвольный набор символов.
Примеры использования:
Нужно, что бы в "Договора по умолчанию" попадали только Наименования Основной договор и т.д:
Идентификационный номер налогоплательщика
Идентификационный номер налогоплательщика (ИНН) - в Российской Федерации уникальный код используемый при учете в налоговом органе юридических и физических лиц. ИНН юридических лиц (организаций) состоит из 10 цифр. ИНН физических лиц, в т.ч. индивидуальных предпринимателей состоит из 12 цифр.
ИНН указывается налогоплательщиками в документах, предусмотренных законодательством, подаваемых в налоговые органы. Для идентификации отдельного подразделения организации, в связи с постановкой на учет в разных налоговых органах применяется код причины постановки (КПП).
Структура ИНН юридического лица
ИНН юридического лица состоит из 10 последовательных цифр.
1-2: код субъекта Российской Федерации.
3-4: номер налоговой инспеции в субъекте РФ.
1-4: код налоговой инспекции по СОУН (Справочник кодов обозначения налоговых органов для целей учёта налогоплательщиков) осуществивщей регистрацию.
5-9: номер записи в территориальном разделе ЕГРН (Единый государственный реестр налогоплательщиков).
10: контрольная цифра.
Структура ИНН физического лица
ИНН юридического лица состоит из 10 последовательных цифр.
1-2: код субъекта Российской Федерации.
3-4: номер налоговой инспеции в субъекте РФ.
1-4: код налоговой инспекции по СОУН осуществивщей регистрацию.
5-10: номер записи в территориальном разделе ЕГРН.
11-12: контрольные цифры.
Для проверки ИНН можно обратиться в налоговый орган за выпиской из ЕГРН или провести проверку контрольных цифр в соответствии со следующим алгоритмом:
1. Для расчета десятого контрольного разряда в 10-ти значном ИНН каждая цифра ИНН (кроме десятой) умножается на соответствующий множитель в соответствии с таб.1 , ззатем все значения суммируются , сумма берется по модулю 11, затем полученное число берется по модулю 10 это и есть десятый разряд.
2. Для расчета 11-ого контрольного разряда (1-ой контрольной цифры) в 12-ти значном ИНН каждая цифра ИНН (кроме 11-ой и 12-ой) умножается на соответствующий множитель в соответствии с таб.1 , затем все значения суммируются , сумма берется по модулю 11, затем полученное число берется по модулю 10 это и есть 11-ый разряд.
3. Для расчета 12-ого контрольного разряда (2-ой контрольной цифры) в 12-ти значном ИНН каждая цифра ИНН (кроме12-ой) ,11-ая вычисляется в соотв. с пред. пунктом, умножается на соответствующий множитель в соответствии с таб.1 , затем все значения суммируются , сумма берется по модулю 11, затем полученное число берется по модулю 10 это и есть 12-ый разряд.
Конкретные примеры
ИНН 500100732259 — 12 цифр (первый попавшийся в Интернете ИНН).
Установка:
1. Убедитесь, что на сервере установлена MS Windows NT Server и он является PDC; MS IE (не ниже 4.01) и протокол TCP/IP.
2. Запустить установку MS SQL Server 7.0-2000, выбрав следующие параметры:
* Install SQL Server 7.0-2000 Components
* Database Server – Standard Edition
* SQL Server authentication
* Оставить по умолчанию Login: System Account (sa)
Остальные пункты оставить по умолчанию.
3. Запустить установку MS SQL Service Pack 1, используя параметры по умолчанию, кроме указанных выше.
Перезагрузить сервер.
Настройка на сервере Enterprise Manager:
1. Убедиться, что SQL Server запускается автоматически при старте системы (Control PanelServices).
2. Запустить MS SQL ServerEnterprise Manager и сделать следующее:
* Databasesправой кнопкой мышиNew Database
* Задать Name: (например Cv77) не должно начинаться с цифры
* Установить GeneralInitial Size – 64 MB
* Установить Transaction LogInitial Size – 32 MB
* SERVER_NAMEправой кнопкой мышиEdit SQL Server Registration:Use SQL Server Log: sa, Pas: задать.
* SERVER_NAMEправой кнопкой мышиProperties
* GeneralAutostart SQL Server
* SecurityAuthenticationSQL Server and Windows NT
* SecurityStartup and run SQL Server in the following accountSystem Account (sa)
3. В Windows 2000 Server в свойствах сетевого подключения выбрать "служба доступа к файлам ...", в ее свойствах установить "макс. пропускная способность для сетевых приложений", а в свойствах "мой компьютер", закладка "дополнительно", параметры быстродействия "для служб ...", нажать "изменить" проверить объем файла подкачки: исходный размер = размер_операт._памяти х 1,5; максимальный размер = размер_операт._памяти х 2, также проверить объем свободного место на диске, где расположен файл подкачки.
Выключить сервер.
Установка на сервер 1С:Предприятие 7.7 для SQL:
1. Выключить сервер и установить ключ защиты на LPT порт.
2. Установить 1С:Предприятие для SQL.
3. Установить драйвер защиты, скопировать его в папку Startup (All Users) и запустить (он всегда должен быть запущен!).
4. Создать новую папку (например DbSQL).
5. Скопировать в DbSQL из существующего каталога базы данных или каталога типовой конфигурации (если создается новая база): каталоги пользователей (как правило совпадают с именами пользователей), каталог USERDEF.
6. Запустить Конфигуратор (в формате DBF), указав путь к существующей (DBF) базе или типовой конфигурации (если создается новая база).
7. В Конфигураторе: АдминистрированиеВыгрузить данные, в папку DbSQL, задав имя zip-файла (например Db.zip), закрыть Конфигуратор.
8. Запустить Конфигуратор в формате SQL, указав путь к новому каталогу DbSQL.
9. В Конфигураторе: АдминистрированиеПараметры базы данных, указать: Сервер: (имя сервера в сети), База Данных: (созданная в Enterprise ManagerDatabases) Cv77, Пользователь: sa, Пароль: ранее заданный.
10. В Конфигураторе: АдминистрированиеЗагрузить данные из DbSQLDb.zip, закрыть Конфигуратор.
Пути к старой базе DBF лучше не удалять!
Установка на рабочую станцию клиента MS SQL Server 7.0-2000:
1. ТОЛЬКО в Windows-95: Запустить установку MS SQL Server 7.0-2000, выбрав следующие параметры:
* Install SQL Server 7.0-2000 Prerequisites
* Windows-95
* DCOM95
2. Далее на всех клиентах установка производится точно так же, как на сервер, за исключением следующего:
* Необходимо выбрать только компоненту Client Connectivity, остальные галочки убрать.
3. В MS SQL ServerClient Network Utility выбрать протокол TCP/IP.
4. Установить MDAC_2.7 или более позднюю версию (устанавливается при наличие MS IE не ниже 4.01).
Установка на рабочую станцию 1С:Предприятие 7.7 для SQL:
1. Установка производится точно так же, как на сервер, потом прописать путь к каталогу SQL базы DbSQL.