Внезапно 1С перестала видеть программные лицензии выдавая ошибку:
Не найдена лицензия. Не обнаружен ключ защиты программы или полученная программная лицензия!по причине:
Поиск лицензии на клиенте:
локальный ключ недоступен: Status=-10, ORGL8 Локальный, не установлен
Ошибка программного лицензирования. Неверный формат файла программного лицензирования: file://C:/ProgramData/1C/licenses/file0.lic
Решение:
Сообщение "Неверный формат файла программного лицензирования" обычно говорит о том, что лицензия автоматически заблокировалась из-за того, что продолжает использоваться на другом компьютере, либо на данном компьютере в этом же или в другом каталоге присутствует другой файл, также содержащий эту же самую работоспособную лицензию.
Файл лицензии на компьютере должен быть один.
Файл лицензии можно перемещать, но нельзя копировать.
Для решения проблемы следует на всех компьютерах, где ранее ставилась эта лицензия, найти и удалить все файлы 2*.lic и все файлы conn8211.pfl (или 1cv8conn.pfl, если версия 8.3)
Если используется клиент-серверный вариант работы, то перестартуйте службу агента сервера.
Затем на данном компьютере выполните обновление (восстановление) всех ранее установленных на нем лицензий по последнему использованному пин-коду.
Если при этом появится сообщение "Пинкод уже активирован. Повторная активация этого пинкода на другой компьютер запрещена", значит у компьютера изменились ключевые параметры. В таком случае произведите повторное получение лицензии, используя резервный пин-код. Не используйте резервный пин-код, если такого сообщения не получено.
Способ №1 На сервере: удалить conn8211.pfl или 1cv8conn.pfl
Способ №2 Перегенерация ключей в 1С удалить старые ключи: *.lic
И перегенируем ключи используя скан лицензии и те данные которые вводились изначально(на кого активировалась лицензия)
Если лицензия по прежнему не обнаруживается:
1. Убедитесь, что используется версия платформы не ниже 8.2.15. Если ниже - скачайте с пользовательского сайта.
2. В окне с перечнем информационных баз нажмите "Настройка" и поставьте галочку "Использовать аппаратную лицензию...", если она не стоит.
3. При появлении сообщения об отсутствии лицензии откажитесь получать лицензию и нажмите кнопку "Подробно" и прислать в 1С текст появившегося Журнала поиска ключа.
в Windows файлы lic и pfl обычно находятся в:
\ProgramData\1С\conf\;
\Program Files (x86)\1cv8\conf;
%ИмяПользователя%\AppData\Local\1C.
в Linux файлы lic и pfl обычно находятся в:
/home/usr1cv82/.1cv82/1C/1Cv82/conf
/home/usr1cv8/.1cv8/1C/conf
и /opt/1C/v8.2/x86_64/conf/
Строка для удаления rm /home/usr1cv82/.1cv82/1C/1Cv82/conn8211.pfl& /etc/init.d/srv1cv82 restart
Передача команд 1С на выполнение через ссылки в письме. web-сервисы помогают интегрировать 1С с различными программами, делая её более гибкой. Статей в интеренете достаточно можно, но в основном там описывается выгрузка из 1С, обмен между двумя 1С или 1С и каким-то мощным программным продуктом написанным на C или других языках.
Для меня же была поставлена задача возможности управление 1С через браузер. Как пример: обрабатывать завершение задачи БП в 1С по ссылке в письме (примерно такого типа http://site.ru/?user=000000001&bp=000000555, т.е. отсюда видно, что пользователь 000000001 хочет закрыть задачу 000000555), т.е. пользователь со своего смартфона не имеющего доступа к 1С как таковому, должен получить возможность управлять ею извне. Собственно, более сложной задачей можно поставить написание собственных web-форм, более легких и компактных, с произвольным дизайном для управления 1С.
Задача с точки зрения написания кода 1С очень легкая. Основная сложность заключалась в освоении HTML и JavaScript для управления извне. Начальные знаний по этому вопросу я подчерпнул из статьи Примеры пользования web сервисов 1С из браузера.
Настройка 1С
Для возможности использовать 1С в вебе необходимо:
1. Установить модуль расширения веб-сервера;
Программирование 1С
Теперь можно приступить к конфигурированию.
1. Создадим Web-сервис Input:
1.1. Input имеет операцию InputData которая принимает два параметра: User и Command, и возвращает параметр типа "boolean (http://www.w3.org/2001/XMLSchema)". Текст функции InputData:
1.2. Устанавливаем для Input URI пространства имен = "http://infostart.ru". Здесь может быть любое уникальное имя, обычно это ссылка на сайт.
1.3. Устанавливаем для Input имя файла публикации = "input.1cws". Это имя web-сервиса к которому будем устанавливать соединение.
2. Для наглядности примера создадим справочник Данные, все параметры оставим по умолчанию.
3. Публикуем нашу конфигурацию и web-сервис: Администрирование -> Публикация на веб сервере...
На этом конфигурирование заканчивается, всё остальное сделает за нас 1С.
Разработка HTML страницы
Эта часть далась для меня тяжело, т.к. я ещё только делаю первые шаги в этой теме. Буду рад замачаниям и советам. А так, я постараюсь объяснить всё на пальцах тем, кто как и я знаком по большей части с 1С.
После установки ISS (я уже давал ссылку в начале статьи) на диске C появится каталог C:\inetpub\wwwroot, в этом каталоге располагается сайт. Для локальной машины (на которой установили ISS) он виден так http://localhost/, ну а для пользователей извне, как-то так http://infostart.ru (по правде там немного сложнее, но не суть, мы сейчас не про это). Заглавная страница сайта будет грузиться из файла index.htm каталога C:\inetpub\wwwroot
Автоматизация обмена между базами используя обработку "Универсальный обмен данными в формате XML" В основу данной публикации положены найденные мною материалы по cозданию обмена между двумя базами с использованием обработки "Универсальный обмен данными в формате XML" . Но предлагается вариант автоматизации решения задачи которая позволяет выполнять обмен неквалифицированным пользователям, либо по регламенту. Скажем такой обмен применим если вы не можите по ряду причин использовать РБД, либо совсем разные конфигурации баз (случаи бывают разные, а хочется максимально настраиваемой гибкости).
Вначале безусловно воспользуемся конфигурацией "Конвертация данных" чтобы создать необходимые нам правила обмена (как - это отдельная тема).
Итак Собственно сама ВЫГРУЗКА:
Настройка ОТБОРА:
Тут надо обратить внимание на массив "ВременнаяТаблицаПравил.Строки[1]" и в частности на индекс массива строк,
1 - это ветка "Справочники". Ну и так далее по аналогии
Сдесь вы определяете искомое правило выгрузки которое нужно оставить включенным на определенной ветке (сами можите варьировать чего и сколько)
Теперь настраиваем ОТБОР смысл которого передать в нашу выгрузку ссылку на документ(ты) который(е) хотим выгрузить:
Обработка.ТаблицаПравилВыгрузки = ВременнаяТаблицаПравил.Скопировать();
Ну и собственно запускаем саму выгрузку и получаем файл для загрузки:
Далее процесс загрузки:
Он довольно прост
Расширение .zip для файлов обмена пусть вас не смущает, обработка самостоятельно упакует .xml файл в архив:
И также самостоятельно уже без дополнительных указаний распакует и загрузит. Это существенно уменьшает размеры файла обмена.
Платформа 1С версии 8.х предоставляет слабые возможности по работе с изображением.
Для работы с изображениями можно использовать библиотеку Windows Image Acquisition Automation Library. Библиотеку с описанием можно скачать здесь (в Windows 7 уже входит в состав дистриботива).
После того, как загрузили архив, распакуйте. Саму библиотеку wiaaut.dll придется зарегистрировать командой regsvr32. После регистрации доступен COM-объект "WIA.ImageFile". Приведем пример работы:
Библиотека была протестирована на самых распространенных форматах файлов-картинок: jpeg, gif, bmp, ico, png, tif.
Здесь можно скачать готовую обработку: Скачивать файлы может только зарегистрированный пользователь!
Помимо данных о картинке, библиотека может многое другое: изменить размер изображения, повернуть, получить изображение со сканера и прочее. Надеюсь, мы еще вернемся к этой библиотеке. Источник
Встроенный язык программирования 1С : Предприятие — язык программирования, который используется в семействе программ «1С:Предприятие». Данный язык является предварительно компилируемым предметно-ориентированным языком высокого уровня.
Средой исполнения языка является программная платформа «1С:Предприятие». Визуальная среда разработки («Конфигуратор») является неотъемлемой частью пакета программ «1С:Предприятие».
Диалекты языка для платформ 1С версий (7.x) совместимы «снизу вверх» с незначительными исключениями. Языки для платформ 1С:7х и 1С:8х совместимы по основным операторам, но значительно отличаются в работе с прикладными объектами, вследствие чего перенос кода из 1С:7х в 1С:8х не имеет смысла.
Для того, чтобы настраивать программы в зависимости от потребностей конкретной организации, необходимо знание программирования 1с. Знания в этой области позволяют вносить изменения в программные решения таким образом, чтобы пользователи могли применять их максимально эффективно. Опыт и навыки дают возможность настраивать базы данных и обновлять систему. Навыки помогут специалистам ИТ-отдела поддерживать систему в рабочем состоянии.
Для того, чтобы получить навыки конфигурирования 1С, Вы можете пройти в учебных центрах 1С программу обучения. Изучение предмета поможет как начинающим, так и опытным ИТ-специалистам. Все курсы преподаются опытными педагогами-практиками, которые помогут Вам не только получить теоретическую основу, но рассмотреть решение конкретных задач. Такой комплексный подход к изучению 1С программирования позволяет получить самую необходимую информацию, и быстро справляться с любыми проблемами.
Программирует, настраивает и конфигурирует системы 1С - 1С программист!
Программист 1С может:
- Выполнить необходимые работы у вас в офисе на почасовой основе - это удобно, если у вас много задач по программированию и конфигурированию 1С, которые проще решить на месте.
- Помочь вам составить техническое задание и оценить объем и стоимость предстоящих работ по нему для задач с фиксированным договорным объемом работ.
- Выполнить работы по имеющемуся у вас техническому заданию удаленно или у вас в офисе, при этом стоимость работ мы можем оговорить заранее и зафиксировать в договоре.
В услуги 1С программиста входят: - Услуга программирование 1с - доработка конфигурации 1С под ваши потребности - написание дополнительных отчетов, модификация проведения документов по счетам бухгалтерского учета, отражение специфики деятельности Вашей организации в учетных программах 1С - Услуга настройка 1с - безопасность данных, права доступа, связь с клиент-банком и другими програмами - Услуга обслуживание 1с - профилактика и оптимизация баз 1с, восстановление после сбоев - Услуга сопровождение 1с - обновление баз 1С и отчетности, обеспечение сохранности данных
Использование транзакций в 1С Транзакция предназначена для записи в информационную базу согласованных изменений. Все изменения, внесенные в информационную базу после начала транзакции, будут затем либо целиком записаны, либо целиком отменены. Ключевыми функциями для работы в транзакции всегда являлись: начать, завершить, отменить. Вспомогательные: активность другой транзакции, возможность начала транзакции.
Простой пример использования транзакций приведен в коде ниже, который устанавливает зависимость создания элемента справочника номенклатуры и элемента справочника единицы измерения, владельцем которого является номенклатура. Если не удалось создать базовую единицу измерения, то и нельзя сохранять саму новую номенклатуру. Все действия происходят в транзакции:
В современном мире люди используют Интернет не только для поиска информации, но и для приобретения каких либо товаров и услуг. Поэтому организации, например имеющие статус среднего бизнеса, стараются разместить свои прайс-листы в интернете или даже создать Интернет-магазин. Создать его не так-то просто. Если вы имеете «реальный» бизнес и используете определенную систему учета товаров (или услуг), нужно учитывать несколько немаловажных факторов:
* Каждый уважающий себя Интернет-магазин должен показывать остаток товара на складе, а также не показывать тот товар, которого уже нет в наличии. (а может быть что товар есть на разных региональных складах)
* Цены не должны расходиться с ценами в реальном магазине. Не учитывая доставку, хотя и это уже давно стало бесплатным практически везде.
Я привел только 2 факта, в действительности их может быть гораздо больше, всё зависит от того, какую цель вы ставите перед своим Интернет-проектом.
Многие организации для ведения учета товаров или оказанных услуг используют ПО «1С» и как показывает практика, большая часть организаций работает с версией 7.7, и не торопятся перейти на 8.х. так как это влечет за собой накладные расходы.
Для Реализации работы с WEB в 1С7.7 есть прекрасное решение - WEB-расширение, но оно работает только с Microsoft Internet Information Server (IIS). IIS используют не все хостинг – провайдеры, да и те кто использует вряд ли разрешат подключить свой сервер к чужой БД.
А держать «у себя» IIS сервер достаточно накладно для организаций среднего бизнеса (оборудование + интернет канал + лицензии ОС и ПО = увеличение стоимости товара).
Другое дело «свободное» ПО и ОС: Linux, Apache, PHP, MySQL. Эти четыре продукта использует большинство хостинг – провадеров, поэтому их использование как платформы для создания Интернет-проектов наиболее оптимально.
Как связать 1С 7.7 с MySQL? Можно использовать внешнюю компоненту MySQL,dll, но её использование не всегда возможно, особенно если ваш Веб-сервер находиться удаленно или вы покупаете хостинг у сторонней организации, так как не безопасно открывать доступ к БД из Интернета.
Для решения этой задачи я использовал технологию передачи данных через URL.
Возможно, звучит это немного дико, и многие подумают, что это неправильное решение. Однако эта система работает и работает достаточно хорошо и корректно.
И сейчас я бы хотел поделиться с коллегами приобретенным опытом реализации это технологии.
Кратко о принципе:
Выглядит это так: из 1С вызывается url и через него же передаются данные PHP-скрипу, который в свою очередь делает с ними все, что необходимо.
Например, нам нужно передать остаток товара на складе: из 1С должен будет сформироваться url: http://www.server.com/script.php?good=201&count=302&date=2009-06-09, где:
* http://www.server.com – адрес сервера
* script.php – исполняющий скрипт
* good=201 – переменная и код товара
* count=302 – переменная и количество остатка
* date=2009-06-09 – дата на которую передается остаток
причем для работы данной схемы достаточно лишь иметь доступ в Интернет с того компьютера на котором выполняется операция по передачи данных. (сервер БД нет необходимости подключать к Интернету)
Встреча с возможными ошибками:
Для начала хотелось бы рассказать о тех проблемах, с которыми я столкнулся и о том, как можно их наиболее эффективно решить:
1. Проблема передачи дробных чисел, а именно трудности, возникающие при использовании символа «точка» (.)
Если необходимо передать любое дробное число, то в 1С оно будет храниться виде 1.1. При передаче числа через url точка, отделяющая целую часть от дробной, вызывает ошибку, так как символ «точка» служит для разделения доменов. Следовательно, необходимо преобразовать эту самую «точку» в другой символ наиболее подходящий для этого. И этот символ - «запятая» (,). Для того чтобы осуществить это преобразование, я написал функцию, листинг которой приведен ниже:
Эта функция возвращает строку в которой все символы «.» заменены на «,» в строковой переменной Стр. Применимо это не только к числам, но и к текстовым данным.
Теперь при передаче число 1.1 будет иметь формат 1,1. Далее при получении мы должны привести это число обратно в «привычный» вид, это можно сделать на стороне PHP-скрипта функцией strtr() . краткое её описание я привел ниже:
Описание функции string strtr ( string $str , string $from , string $to ):
Эта функция возвращает строку str , в которой каждое вхождение любого символа из перечисленных в from заменено на соответствующий символ из строки to . (www.php.net)
Т.е. в нашем случае функция будет иметь вид strtr("1,1", ",", ".") и результатом её работы будет: 1.1
2. Проблема передачи даты. В 1С дата имеет вид «ДД.ММ.ГГГГ» например, 01.01.2009. При передаче такого вида данных будет вызвана такая же ошибка, как и при передаче числовых данных. Конечно, для решения и этой проблемы можно использовать указанную выше функцию ЧислоURL, но я решил пойти другим путём и конвертировал дату в формат MySQL, то есть «ГГГГ-ММ-ДД». Для этого я написал функцию МуДата, вот ее листинг:
Функция работает следующим образом – опять же выделяет из переменной Стр, Год, Месяц, Число и выстраивает их в формате ГГГГ-ММ-ДД, наиболее привычным при работе с MySQL. Об ошибках все.
Подготовка 1С:
Теперь расскажу о том, как заставить 1С работать с WEB.
Для того, чтобы иметь возможность работать с протоколом HTTP в 1С, я использовал библиотеку V7+, которая поставляется фирмой 1С и служит для расширения возможностей 1С 7.7.
Для начала необходимо подключить внешнюю компоненту (подробнее здесь), используя функцию «ЗагрузитьВнешнююКомпоненту("v7plus.dll")». Далее необходимо создать объект addin.v7httpreader, для этого я использовал переменную НТТР. А для передачи и получения данных используется метод ПолучитьКакСтроку(адрес, СтрокаДляПриёма); который получает данные в переменную СтрокаДляПриёма с адреса указанного в переменной адрес. В целом все это будет выглядеть примерно так:
Выше указанная процедура выведет в окно сообщений HTML-код заглавной страницы сайта http://www.google.ru
Таким образом, теперь мы знаем, как, из 1С, обратиться к нужному сайту, и получить его HTML-код.
Немного о PHP:
Теперь напишем PHP-скрипт, который просто будет выводить данные полученные методом GET. (ознакомиться с тем, как PHP получает данные можно здесь) Листинг такого скрипта:
Назовем его test.php и поместим в корневую папку web-сервера. Далее для проверки работы скрипта введем в адресную строку браузера http://localhost/test.php?text=hello%20wolrd В том случае, если все сделано верно, на экране появиться страница с текстом hello world.
«Соединяем» 1С и PHP:
Далее создаем в 1С внешнюю обработку и вставим в её модуль следующий код:
Отличается она от алгоритма, который мы создавали выше лишь значением в переменной адрес.
И так в случае успешной работы 1С и РНР-скпипта в окне сообщений 1С мы увидим надпись hello world.
Теперь очевидно, что с помощью 1C можно передать данные PHP-скриптам, а они в свою очередь делают с ними все что необходимо, например, записывают их в БД.
Пример записи данных в БД MySQL:
Запись в БД MYSQL будет производиться средствами PHP, об этом сказано уже не мало. Поэтому чтобы не повторяться, опишу пример из собственной практики.
Для начала создадим обработку в 1С:
На форму положим поле ввода и присвоим ему идентификатор текст, далее немного переделаем процедуру описанную в разделом выше:
Теперь необходимо создать БД в MySQL (как это сделать описано здесь). Создадим БД и присвоим ей имя TESTDB. Далее создадим таблицу с именем TEST:
Как видно из запроса, в таблице всего 2 поля:
* id – уникальный номер сроки;
* text – текстовое поле, куда будут помещаться данные из 1С.
Теперь необходимо написать PHP-скрипт, который и будет записывать данные из 1С в MySQL. Листинг данного скрипта приведен ниже:
Все готово! Теперь открываем Внешнюю обработку в 1С и пишем в поле ввода слово Hello! Нажимаем кнопку «Сформировать». Если все сделано правильно, то в созданной нами таблице появится запись со словом Hello! В противном случае, в окне сообщений 1С появится текст ошибки.
Заключение:
Весь тот опыт, которым я поделился в этой статье, можно использовать не только в Интернет-торговли, но и в корпоративных целях, например для того, чтобы:
* Консолидировать данные в единую БД MySQL;
* Предоставлять отчеты компетентным лицам, где бы они не находились.
И это еще далеко не весь перечень, ведь WEB-технологии - очень гибкий инструмент с неограниченным спектром возможностей, при условии умелого их использования.
В общем-то, мной был не только реализован механизм отправки данных, но и приема через HTTP, но вот это уже совсем другая история!
Для получения подчиненных элементов иерархического справочника в языке запросов предусмотрена конструкция В ИЕРАРХИИ. Пример использования В ИЕРАРХИИ:
В данном примере будут получены все записи справочника Номенклатура, находящиеся в группе &Группа, включая ее саму, ее подчиненные группы и элементы, принадлежащие подчиненным группам.
Если же нас интересуют только элементы и группы, находящиеся непосредственно в заданной группе, то такие элементы мы можем получить установив условие на поле Родитель:
Такой запрос выберет группы и элементы, находящиеся в подчинении группы со ссылкой &Группа.