Многие спрашивают А где хранится лицензия на 1С: Предприятие 8? или Где посмотреть лицензионный ключ в 1С?
В 1С информацию о полученной лицензии можно посмотреть нажав «Справка» — «О программе»
В разделе Лицензия: сначала идет клиентская лицензия, затем, если это серверный вариант, лицензия сервера 1С
Например будет указан Регистрационный номер комплекта и будет указан путь к файлу лицензии «file://C:/ProgramData/1C/1Cv82/conf/20120430015941.lic».
Начиная с версии платформы 1С:Предприятия — 8.2.15 список сеансов инф. базы в консоли Администрирование серверов 1С:Предприятия содержит колонку с информацией о лицензии, используемой каждым сеансом. Так что учет используемых лицензий аппаратных и программных можно вести в Консоли Администрирования серверов 1С. В средствах программного администрирования имеется свойство License объекта ISessionInfo. В более ранних версиях платформы 1С:Предприятия 8.2 таких средств нет.
Дополнительно:
Файл однопользовательской лицензии лежит в каталоге
C:\Documents and Settings\All Users\1C\1Cv82\conf
файл называется примерно так:
20120302155201.lic
...
Только что установил как описано в статье: сначала после активации в один сеанс пустило, а на втором: "Ключ защиты не обнаружен ....".
Проблема решилась копированием файла лицензии (она по умолчанию сразу попала в каталог:"C:\Users\All Users\1C\1Cv82\conf\2*.lic") в каталог:
C:\Program Files (x86)\1cv82\conf\
...
Если используются программная лицензия на сервер 1С-64x и многопользовательские лицензии лучше сразу отредактировать файлы:
C:\Program Files (x86)\1cv82\8.2.##.###\bin\conf\conf.cfg
C:\Program Files\1cv82\8.2.##.###\bin\conf\conf.cfg
указав один и тот же путь к программным лицензям, например:
ConfLocation=C:\Program Files\1cv82\conf
и в этот каталог положить обе лицензии.
Без этого на платформе 8.2.15 периодически наблюдались траблы типа: лицензию на сервер вижу, а много пользовательские не вижу.
Из всех других файлы лицензий убрать - иначе возможна ситуация когда 1С сама допишет файл лицензии текстом:
"На компьютере *** используются две копии одного и того же файла программной лицензии: file://C:/Program Files/1cv82/conf/2*.lic и file://C:/Program Files (x86)/1cv82/8.2.15.289/bin/conf/2*.lic"
ОСОБЕННОСТИ ЛИЦЕНЗИЙ С ПРОГРАММНОЙ ЗАЩИТОЙ
Клиентские программные лицензии разделяются на однопользовательские и многопользовательские.
Однопользовательская лицензия предназначена для установки на компьютер пользователя и разрешает запуск с этого компьютера произвольного количества сеансов с системой "1С:Предприятие 8". Информационные базы в этих сеансах могут быть созданы с различными конфигурациями. Поддерживается работа клиента как в файловом, так в клиент-серверном варианте.
Многопользовательская лицензия устанавливается:
на компьютер сервера "1С:Предприятия" в случае клиент-серверного варианта информационной базы;
на компьютер веб-сервера в случае файлового варианта информационной базы.
Многопользовательская лицензия позволяет запускать не более обозначенного в Лицензионном соглашении количества сеансов с системой "1С:Предприятие". Данная лицензия не привязана к какому-либо компьютеру пользователя, подсчет количества сеансов выполняется на сервере.
В основные поставки, обеспечивающие запуск приложения на одном рабочем месте, а также в клиентскую лицензию на одно рабочее место входит комплект пинкодов для получения одной однопользовательской лицензии (аналог ключа аппаратной защиты на одно рабочее место).
В каждую клиентскую лицензию на 5, 10 и 20 рабочих мест входит по два комплекта пинкодов: для получения соответствующего количества однопользовательских лицензий и многопользовательской лицензии на соответствующее количество рабочих мест. Перед получением первой лицензии из такого продукта необходимо определиться, как ее предполагается использовать:
установить по одной однопользовательской лицензии на определенные компьютеры и запускать с них произвольное количество сеансов с "1С:Предприятием"
или
установить лицензию на сервер и запускать "1С:Предприятие" с произвольных компьютеров, но при этом ограничить количество одновременно запущенных сеансов.
Важно сделать выбор типа клиентской лицензии перед первым получением лицензии, так как получение лицензии по пинкоду для однопользовательской лицензии сделает невозможным получение лицензии по пинкоду для многопользовательской лицензии, и наоборот, получение многопользовательской лицензии сделает невозможным получение из данного комплекта однопользовательской лицензии.
В клиентских лицензиях на 50, 100, 300 и 500 рабочих мест поставляется комплект пинкодов для получения многопользовательской лицензии на соответствующее количество рабочих мест.
Если требуется увеличить число рабочих мест, то следует докупить нужное количество программных лицензий и установить их на компьютеры пользователей либо на сервер. На сервер может быть установлено произвольное количество программных лицензий в любых комбинациях из поставляемых вариантов.
Программная лицензия на сервер устанавливается на компьютер сервера "1С:Предприятия". Как и в лицензиях на сервер с аппаратной защитой, программная лицензия на 64-разрядный сервер поддерживает также работу 32-разрядного сервера.
Если взамен 32-разрядного сервера с программной защитой потребуется использовать 64-разрядный сервер, то для этого необходимо сделать апгрейд, см. далее раздел "Апгрейд лицензии на сервер".
Программные лицензии представляют собой файл, который в зашифрованном виде содержит параметры лицензии и характеристики компьютера, для которого данная лицензия получена. Доступ к этому файлу определяется правами доступа файловой системы. Если файл лицензии находится в каталоге, к которому нет доступа у пользователя, от имени которого работает экземпляр 1С:Предприятия, пытающегося получить лицензию - значит лицензия не будет получена!
2. Как работает программная лицензия?
Приложение 1С:Предприятия (клиентское или серверное) при необходимости получения лицензии выполняет поиск файлов по всем доступным путям. Далее из файлов получаются параметры самой лицензии и характеристики компьютера, для которого лицензия получена. Если параметры текущего компьютера не совпадают с полученными - файл лицензии отвергается. В противном случае выполняются проверки, связанные с количеством пользователей и типом лицензии (клиентская или серверная).
3. Что есть что в диалоге получения лицензии.
В диалоге получения лицензии есть два момента, которые вызывают наибольшие трудности - такое ощущение складывается по этому форуму.
Это страницы помощника с выбором компьютера, для которого должна быть установлена лицензия и выбор доступности лицензии (текущему пользователю или всем пользователям).
При получении программных лицензий необходимо выбрать, характеристики какого компьютера будут использоваться при привязке лицензии. От вида лицензии и компьютера, на котором запущен Конфигуратор, зависит, какой пункт следует выбирать при получении лицензии.
"На компьютер сервера 1С:Предприятия" имеет смысл выбирать в случае получения любых программных лицензий, если использование полученной лицензии предполагается на компьютере, где расположен сервер "1С:Предприятия" и это не тот компьютер, на котором выполняется получение программной лицензии. В этом случае файл с полученной программной лицензией всегда будет размещаться в каталоге профиля того пользователя, от имени которого работает сервер "1С:Предприятия" (по умолчанию — USR1CV82) на том компьютере, на котором работает сервер "1С:Предприятия".
"На этот компьютер" имеет смысл выбирать во всех остальных случаях. Исключением является многопользовательская программная лицензия, для которой выбирать пункт "На этот компьютер" имеет смысл только при запуске Конфигуратора на терминальном сервере или в терминальной сессии. Также в этом случае можно будет выбирать, куда будет помещен файл с активированной лицензией — в каталог профиля текущего пользователя или в каталог, доступный всем пользователям системы. Это будет каталог того компьютера, на котором выполняется активация программной лицензии.То, какой набор лицензий будет доступен для использования, зависит от того, куда будут размещены файлы с активированными лицензиями. Если они размещены в каталоге профиля пользователя, от имени которого выполняется активация лицензии, то другие пользователи этого же компьютера не получат доступ к этим лицензиям. Например, если на терминальном сервере активирована однопользовательская программная лицензия, и она размещена в каталоге профиля текущего пользователя (например, User1), то другой пользователь (например, User2) не сможет работать в то время, когда пользователь User1 не работает. Для того чтобы активированная лицензия была доступна всем пользователям компьютера, ее надо размещать в каталоге, предназначенном для всех пользователей системы. Тогда однопользовательская лицензия из примера, приведенного выше, будет доступна любому пользователю терминального сервера, при условии, что другие пользователи не используют данную лицензию (т.к. она однопользовательская).
4. Как активировать дополнительную программную лицензию?
Если требуется активировать дополнительную клиентскую программную лицензию на компьютере, на котором уже активирована программная лицензия, то делать это необходимо в точности так, как и при первой активации программной лицензии на выбранном компьютере.
Если выполняется получение серверной и многопользовательской программной лицензии и существует возможность запустить Конфигуратор на компьютере с установленным сервером "1С:Предприятия", то рекомендуется выполнять получение обеих лицензий на компьютере сервера, при этом получать лицензию следует "На этот компьютер" и "Всем пользователям данного компьютера".
ВНИМАНИЕ! Не рекомендуется размещать один файл программной лицензии одновременно в нескольких различных каталогах, доступных приложениям "1С:Предприятия". Это может привести к тому, что файл с лицензией станет непригодным для использования, т. к. является одним из вариантов нарушения лицензионного соглашения.
5. Рекомендации по получению программных лицензий
5.1. Файловый вариант информационной базы
5.1.1. Лицензия получается на клиентском компьютере
Однопользовательскую лицензию рекомендуется получать "На этот компьютер" и "Всем пользователям данного компьютера".Многопользовательскую лицензию активировать не имеет смысла.
5.1.2. Лицензия получается на терминальном сервере
Программную лицензию (любую) рекомендуется получать "На этот компьютер" и "Всем пользователям данного компьютера".
5.2. Файловый вариант информационной базы через веб-сервер
5.2.1. На компьютере, где получается лицензия, возможно запустить Конфигуратор
Рекомендуется установить на компьютер с веб-сервером толстый клиент и с помощью Конфигуратора получить лицензию (любую) "На этот компьютер" и "Всем пользователям данного компьютера". Так можно поступить, если веб-сервер развернут на ОС Windows.
5.2.2. На компьютере, где получается лицензия, невозможно запустить Конфигуратор
Установить на этот компьютер сервер необходимой разрядности и получить лицензию для компьютера сервера с любого компьютера в сети, на котором установлен толстый клиент. Серверное приложение позволит получать программную лицензию даже в том случае, если отсутствует серверная лицензия. Рекомендуется получать лицензию (любую) "На компьютер сервера 1С:Предприятия". С помощью этого способа можно получить, например, многопользовательскую программную лицензию для работы с файловой информационной базой через веб-сервер, развернутый на ОС Linux.
5.3. Клиент-серверный вариант информационной базы
5.3.1. Лицензия получается на клиентском компьютере
Однопользовательскую лицензию рекомендуется получать "На этот компьютер" и "Всем пользователям данного компьютера".
Многопользовательскую лицензию рекомендуется получать "На компьютер сервера 1С:Предприятия".
Получать многопользовательскую лицензию "На этот компьютер" не имеет смысла.
5.3.2. Лицензия получается на терминальном сервере
Программную лицензию (любую) рекомендуется получать "На этот компьютер" и "Всем пользователям данного компьютера".
5.3.3. Лицензия получается на компьютере сервера "1С:Предприятия"
Программную лицензию (любую) рекомендуется получать "На этот компьютер" и "Всем пользователям данного компьютера".
5.4. Серверная лицензия
5.4.1. Лицензия получается на клиентском компьютере
Рекомендуется получать программную лицензию (любую) "На компьютер сервера 1С:Предприятия".
5.4.2. Лицензия получается на компьютере сервера "1С:Предприятия"
Рекомендуется получать программную лицензию (любую) "На этот компьютер" и "Всем пользователям данного компьютера".
Часто при ведении учета в различных конфигурациях 1с возникает необходимость выполнения обмена данных. Для решения этой задачи принято использовать Универсальный обмен данными XML или другие внешние обработки, общим у которых является использование текстовых файлов посредников.
Я предлагаю использовать Web-сервисы 1с. В чем необходимость обмена: Обмен данными между базами требуется для исключения дублирующих вводов одних и тех же данных в различных учетных системах. В чем необходимость обмена в режиме online: Обмен в онлайн режиме требуется когда функции учета комплекса учетных систем выполняются в разных учетных системах.
1. Например компания использует: CRM систему учета, для ведения учета взаимоотношений с клиентами; БП 2.0 для ведения взаиморасчетов с клиентами в разрезе счетов; Счета выставляемые клиентам создаются в торговой базе, а оформление заказов поставщикам исходя из потребности клиентов в базе ориентированной на работу с пайсами поставщиков. При таком разделенном построении учета, для выставления счета в одной из баз к примеру требуется завести карточку клиента в другой базе с тем чтобы данные о контрагенте так же были доступны в базе со счетами.
2. Помимо синхронизации первичных данных, может возникнуть необходимость построения сводного отчета по данным из нескольких баз, что тоже потребует обращения к внешним данным в online режиме.
Вариант автоматизации данного процесса с использованием файлов обмена, потребует подключения обработчика ожиданий, что сможет обеспечить обмен данными только с установленной задержкой времени обмена, кроме того любая обработка ожидания будет не эффективно использовать машинное время.
Обращение к Web сервисам, возможно при возникновении любых событий (ПриЗаписи, ПриПроведении, при нажатии кнопки и т.д.). при этом не возникнет ни какой задержки реакции информационной базы к которой происходит обращение, (в отличие от запуска еще одного приложения 1с в качестве com объекта).
Итак рассмотрим вариант реализации синхронизации элементов справочников, начнем с наиболее простого со справочника "Товары" в базах "Продажи" и "Закупки". Синхронизация для начала будет односторонней, предположим что перечень товаров заводится в базе "Продажи", а в "Закупки" он передается.
Что нам потребуется для того чтобы задача возникла и могла быть решена.
1. Сервер 1с, с установленной web компонентой;
2. веб-сервер (например IIS 6.0);
3. Две или более конфигурации учетных систем.
Что нам потребуется для решения задачи.
1. Создадим в базе "Закупки" Web-сервис "Синхронизация", и добавим ему Операцию "СинхронизироватьТовар", со строковыми параметрами.
1. "GuidТовара" - сюда будем передавать уникальный идентификатор товара присвоенный в базе Продаж.
2. "GuidРодителя" - уникальный идентификатор родителя данного товара.
3. "стрСтруктураРеквизитов" - Структура реквизитов товара в виде примитивных типов (число,строка,дата,булево) преобразованная в строку.
4. "этоГруппа" - реквизит котрый позволит нам не раскрывая всей структуры реквизитов товара узнатья явлется ли товар группой и соответственно его обработать.
5. "стрТаблицаЕденицИзмерения" - Таблица содержащая описание доступных единиц измерения для товара
Далее потребуется опубликовать данный сервис на веб сервере. для этого нужно будет создать текстовый файл "wssinhron.1cws", в каталоге сайта опубликованном на веб сервере. Библиотека wsisapi.dll, должна быть подключена. Проще всего корректную настройку работы веб сервера с 1с можно провести опубликовав веб приложение через конфигуратор Администрирование->"Публикация на веб сервере". Единственным минусом является, то что в версии 8.2 файлы веб сервисов *.1cws, сами не создаются. Возможно просто мне не хватает знаний по этому вопросу но для публикации веб сервисов я пользуюсь блокнотом.
Также следует учесть что на серверах 64x следует использовать wsisapi.dll из поставки 1с 64x, даже если сам сервер 1с у вас 86x.
Итак создаем файл "wssinhron.1cws" с текстом.
{Название вашего сервера 1с}";Ref="{Назваение базы. у нас это "Market"}";"/>
Далее перейдем в модуль обработки нашего Сервиса, для наглядности я приведу пример кода своей разработки
Теперь, как вызвать веб сервис не зациклив при этом систему.
в нашем справонике "Товары" в базах "Продажи" и "Закупки" нам потребуются служебные реквизиты. 1. "GUIDтовара" - строковый реквизит (50)
2. "ВремяСинхронизации" - Реквизит с типом Дата и Время
3. "Синхронизирован" - тип булево.
В модуль объекта Справочника добавим предопределенные обработчики событий "ПередЗаписью()", "ПриЗаписи()" функцию "Синхронизация()" и общую переменную "передавать", и под текстом модуля присвоим этой переменной значение Истина. Перем передавать Экспорт;
Процедура ПередЗаписью(Отказ)
Процедура ПриЗаписи(Отказ)
Функция Синхронизация()
передавать = истина;
Таким образом получится что при любой инициализации модуля наша переменная всегда имеет значение истина.
Рассмотрим наши процедуры:
Таким образом остается добавить в событие формы элемента "ПриЗаписи()"
И мы сможем записывать наш элемент сколько угодно раз не вызывая зацикливания.
Для варианта двусторонней синхронизации, (когда элемент справочника может редактироваться в обоих базах) нам потребуется скопировать наш веб сервис из базы закупок в базу продаж переименовав имя файла публикации и URI пространство имен и внести соответствующие изменения в вызов веб сервиса из базы продаж в базу закупок и опубликовать его. Важно: При успешном срабатывание вызванного сервиса из базы "Продажи", в качестве результата работы должен быть возвращен уникальный идентификатор элемента справочника из базы "Продажи". Данный результат необходимо будет присвоить соответсвующиму реквизиту справочника из базы закупок.
Аналогично приведенному примеру можно синхронизировать данные любого справочника или документа.
Построение сводных отчетов
Для получения сводного отчета нам также потребуется вызов веб сервиса из какой - либо базы. Данный веб сервис должен будет возвращать преобразованною в строку, таблицу с данными которые мы хотим использовать в нашем отчете (Например таблицу содержащую "Код товара" и "Актуальную цену поставщика на данный товар"). Далее можно преобразовать эту строку в таблицу и использовать в качестве вложенной временной таблицы любом запросе к базе "Продажи" с соединением по Коду. Исключением является использование данной таблицы в Построителе отчетов, для случая построителя нам понадобится создание, дополнительного справочника с предопределенным элементом и табличной частью, с реквизитами соответствующими полям таблицы.
Автор: allert73
Все чаще и чаще встречаются обмены, используя технологию Web-Сервисов. Это удобно, т.к для хостовой базы данных достаточно установить расширение Web-Сервиса и обработчик данных, а для клинтского решения подключиться к Web-Сервису. Технология является мультиплатформенной и на данный момент ее использование весьма актуально.
Примерами таких веб-сервисов можно назвать:
http://www.cbr.ru/scripts/Root.asp?Prtid=DWS веб-сервис Центробанка, для получения ежедневных данных.
http://api.yandex.ru/speller/doc/dg/concepts/api-overview.xml веб-сервис Яндекса проверки правописания.
https://www.flightstats.com/developers/bin/view/Web+Services/WSDL ряд веб сервисов авиастатистики, для мониторинга полетов, сведений о погоде, и.т.п.
WSDL (Web Services Description Language) — язык описания веб-сервисов и доступа к ним, основанный на языке XML. (спецификация http://www.w3.org/TR/wsdl).
SOAP (Simple Object Access Protocol — простой протокол доступа к объектам) — протокол обмена структурированными сообщениями в распределенной вычислительной среде. SOAP используется для обмена произвольными сообщениями в формате XML и удалённого вызова процедур (RPC). (спецификация http://www.w3.org/TR/soap/).
XDTO (XML Data Transfer Objects) — механизм объектного моделирования данных, описываемых с помощью схемы XML (подробнее http://v8.1c.ru/overview/xdto.htm).
Большинство примитивных типов сериализованных объектов разработана компание W3 и их описание находится в пространстве имен «http://www.w3.org/2001/XMLSchema».
 
и так: Задание 1: Установка платформы 1С: Предприятие, установка компоненты IIS сервера, связь Web-Расширения 1С с сервером IIS.
При установке платформы 1С: Предприятие необходимо установить Web-Расширение.
Рис. 1. Выбранные компоненты в момент установки 1С
В меню «Панель управленияВсе элементы панели управленияПрограммы и компоненты» Необходимо выполнить установку дополнительных компонентов Windows «Включение или отключение компонентов Windows» где указать все компоненты IIS (за исключением FTP, для текущей работы он не требуется). После установки рекомендуется перезапустить операционную систему.
Рис. 2. Выбранные компоненты в момент установки IIS
В меню «Панель управленияВсе элементы панели управленияАдминистрирование» запустить консоль «Диспетчер служб IIS», где открыть элемент «Пулы приложений» открыть пул «DefaultAppPool» в контекстном меню выбрать «Дополнительные параметры…» где элемент «Разрешены 32-рязрядные приложения» надо установить «True». Это необходимо для работы Web-Расширения 1С, т.к. оно является 32-битным прилодением.
В той же консоли «Диспетчер служб IIS», выбрать элемент «Default Web Site», выбрать действие «Проверка подлинности» где необходимо включить варианты: «Анонимная проверка подлинности», «Обычная проверка подлинности», «Проверка подлинности Windows».
Теперь возможна публикация Web-Сервисов 1С на сервере IIS. Но для того, чтобы было возможно выполнить эту публикацию, необходимо запустить Конфигуратор 1С: Предприятия от имени пользователя «Администратор».
Задание 2: Создание простой конфигурации 1С.
Считаем, что в базе данных есть информация информации обо всех заказах, содержащая количество и тип номенклатуры, который был заказан, в одном заказе может быть список, содержащий номенклатуру и количество, заказ так же имеет свой номер и дату его создания. Информацию обо всех заказах надо передать через Web-Сервис.
Для описания этого необходимо создать объекты базы данных:
Рис. 3. Структура данных в созданной конфигурации 1С
Справочник «Номенклатура», без дополнительных реквизитов. В реквизитах «по умолчанию» содержится информацию о наименовании и коде номенклатуры.
Документ «Заказ покупателя», который будет содержать табличную часть «Товары», каждая строка которой будет иметь информацию о номенклатуры (элемент типа «СправочникСсылка.Номенклатура») и количестве (элемент «Количество» типа «Число» беззнаковое с 15 знаками до запятой и 3 после).
Далее можно запустить 1С в режиме предприятия и создать несколько документов, заполненных созданными нами же номенклатурами и соответствующим количеством.
Задание 3: Создание и публикация Веб-Сервиса 1С.
В группировке «Общие» конфигурации создать новый элемент типа «XDTO-пакеты», первоначально для передачи номенклатуры. Его можно назвать, например «NomenclatureXDTO». URL пространство имен, в соответствии со спецификацией WSDL необходимо назначить в виде URL адреса спецификации данного пакета, например
«company.com/1C/Nomenclature». В этом пакете необходимо создать тип объекта, например «Nomenclature», в котором есть реквизиты «Code» и «Name», с соответствующим типом «string (http://www.w3.org/2001/XMLSchema)».
Теперь надо создать второй XDTO пакет, который будет содержать информацию о заказах покупателей, его можно назвать «ClientOrderXDTO» в пространсте имен «company.com/1C/ClientOrder». В первую очередь необходимо подключить директиву импорта «company.com/1C/Nomenclature», для того, чтобы можно было использовать созданный нами пакет сериализации номенклатуры. Это необходимо для передачи номенклатуры, содержащейся в табличной части документа «Заказы покупателей».
Теперь надо создать тип объекта «ClientOrderRow», содержащий одну строку табличной части. Этот тип будет состоять из совокупности реквизитов «Nomenclature» и «Count», соответственно для номенклатуры необходимо указать тип объекта «Nomenclature (http://company.com/1C/Nomenclature)», а для количества, «double (http://www.w3.org/2001/XMLSchema)».
Тип объекта, содержащий сам заказ можно назвать «ClientOrder» должен содержать номер заказа, дату создания и массив элементов из табличной части заказа. «Number» типа строка, «Date» типа «dateTime (http://www.w3.org/2001/XMLSchema)» и «Products» типа «ClientOrderRow (http://company.com/1C/ClientOrder)», при этом необходимо указать, что минимальное количество «0», а максимальное количество «-1», это говорит о том, что этот объект будет массивом.
Но, поскольку необходимо возвращить список заказов, то необходимо создать тип объекта, содержащий этот массив, потому надо создать еще один элемент, называемый «ArrayOfClientOrders», у которого будет всего один реквизит, называемый «ClientOrder» типа «ClientOrder (http://company.com/1C/ClientOrder)».
Рис 4. Структуры XDTO пакетов в 1С
На этом создание описания передаваемых значений можно считать оконченным. Необходимо описать сам веб сервис и его методы.
В группировке «Общие» конфигурации надо создать объект, Web-Сервиса. Его можно назвать «Service». Во вкладке «Прочее» надо указать пространство имен, которому принадлежит веб-сервис, например «company.com/1C», а так же список XDTO пакетов, содержащий только что созданные пакеты «company.com/1C/Nomenclature, company.com/1C/ClientOrder». Во вкладке «Операции» создать метод «GetClientOrders», который будет возвращать значения «ArrayOfClientOrders (http://company.com/1C/ClientOrder )», при этом установить возможность возвращать пустые значения и нажать на поле с лупой, называемое «Имя метода», тем самым в модуле веб-сервиса будет создана функция, который будет вызвана при обращении к данному методу веб-сервиса.
Для того, чтобы корректно описать функцию, получающую из базы данных и возвращающую список заказов покупателей, необходимо знать внутренний язык 1С, потому код этой функции находится в приложении 1. В пояснении нуждается то, что «ФабрикаXDTO», это некоторый менеджер, который выполняет сериализацию объектов, и этот сериализованный объект необходимо возвратить. При этом происходит выборка всех заказов, содержащихся в базе данных, сериализация полей номера, даты, и строк табличной части, при этом номенклатура, нуждается в дополнительной сериализации, и уже упакованный объект вставляется в общую структуру. Собирается массив упакованных объектов, сериализуется в пакет массива. И отправляется клиенту, как результат вызванной функции.
Для публикации веб-сервиса в меню конфигуратора 1С выбрать «АдминистрированиеПубликация на веб-сервере…», после чего указать название публикации веб-сервиса, например «Company», имя сервиса, например «Service» и адрес «service.1cws», а так же указать путь для публикации, например «C:\inetpub\www\root\Company».
После этого WSDL структура Web-Сервиса будет доступна по адресу «localhost/Company/ws/service.1cws?wsdl»
Задание 4: Создание клиента на C# платформы .NET 4.0.
В Visual Studio создать новое консольное приложение C#.
Далее вызвать контекстное меню над элементом проекта «Reference», и выполнить действие «Add service reference…», в открывшемся меню нажать на кнопку «Advanced…», откроется окно, где необходимо нажать на кнопку «Add Web Reference…».
Откроется меню, в которое необходимо вставить ссылку на WSDL описание веб-сервиса.
Рис. 5. Подключение веб-сервиса к проекту на C#
Для созданного в 1С веб-сервиса эта ссылка будет иметь вид «localhost/Company/ws/service.1cws?wsdl», после корректного получения описания веб-сервиса надо указать название пространства имен .NET, из под которого будет доступно обращение к веб-сервису, например «CompanyService», затем нажать на кнопку «Add Reference…», Visual Studio автоматически сгенерирует классы по этому описанию. В проекте достаточно будет вызывать методы сгенерированного класса, при этом сериализация и вызов будут выполнять платформой .NET.
Далее необходимо написать программу, которая будет обращаться к веб сервису, и выводить пользователю полученные данные. Для этого необходимо знать язык C#, код программы представлен в приложении 2. Из этого кода надо пояснить, то, что создание объекта «Service», есть не что иное, как создание менеджера обращения к сервису. От этого имени будут вызывать методы веб-сервиса.
«_1CWebServiceClientConsole» — это общее пространство имени проекта, оно выбирается при создании. Пространство имени веб-сервиса, полученное из WSDL структуры полностью включено в пространство имени проекта, что позволяет вызывать удаленные методы «как свои».
Построение такой архитектуры является прозрачной для программистов, но при этом необходимо понимать в какие моменты и что проходит сериализацию для последующей передачи. Подобная архитектура клиент-серверных приложений на данный момент самая популярная.
Приложение 1: код функции GetClientOrders на языке 1С
Приложение 2: код программы на C# осуществляющий обращение к веб-сервису
Оповещение пользователей в 1с в управляемом приложении могут быть вызваны как самой платформой, например, при записи документа, так и разработчиком, если он применит метод глобального контекста ПоказатьОповещениеПользователя().
Оповещения появляются в отдельном не модальном окне, по умолчанию привязанному к панели задач операционной системы, и затухают через несколько секунд после появления.
Если вывести несколько оповещений подряд, то пользователь сможет увидеть только последнее.
Последние несколько оповещений можно увидеть на панели истории.
При программном формировании оповещений важно помнить, что метод ПоказатьОповещениеПользователя()доступен только в контексте клиентской части, то есть при работе тонкого, толстого клиента или веб-клиента.
В качестве параметров метода ПоказатьОповещениеПользователя() передается строка с текстом оповещения, навигационная ссылка, текст с пояснением и картинка.
Навигационная ссылка будет представлена в области пояснения как гиперссылка, а в том случае если текст с пояснением не задан, то именно представление навигационной ссылки будет отображено в области пояснения. Получить навигационную ссылку можно для любого объекта базы с помощью глобального метода ПолучитьНавигационнуюСсылку().
Проиллюстрируем вывод оповещения при открытии документа, редактирование которого запрещено.
В приведенном примере производится проверка даты запрета редактирования, установленной в константе, и в том случае если открывается документ, попадающий в период запрета, пользователю выводится оповещение. В оповещении установлена навигационная ссылка на открываемый документ, однако в окне оповещения ссылка будет установлена к тексту «Разрешен только просмотр документа».
еще пример:
Для Толстого клиента kojinandrej предложил следующий механизм:
1. В модуле обычного приложения в процеду ПриНачалеРаботыСистемы добавляем текст
2. Создаем ОбщийМодуль под названием "опМодуль" в модуле вставляем текст
4. Добавляем в конфигурацию необходимые Обработки и формы - пользуемся.
Принцип Работы:
При запуске 1с справой стороны в трее открыто оповещение пользователей. Открываем обработку Оповестить, пишим текст сообщения и отметив получателей отправляем сообщение.
Когда сообщение приходит получателю, то форма оповещени появляется с правой стороны. Что бы сообщение считалось прочитаным, его необходимо открыть двойным щелчком правой клавиши мыши и оно откроется в новом окне как показао на третем изображении. В дальнейшем эти сообщения можно будет просматривать во вкладке "Просмотреные"
Вариант 1: ОкноКлиентскогоПриложения (ClientApplicationWindow)
ПолучитьНавигационнуюСсылку (GetURL)
Синтаксис:
Возвращаемое значение:
Тип: Строка.
Описание: Получает навигационную ссылку в формате 1С:Предприятия на текущую форму.
Доступность: Тонкий клиент, веб-клиент, толстый клиент, внешнее соединение.
Вариант 2: Глобальный контекст (Global context)
ПолучитьНавигационнуюСсылку (GetURL)
Синтаксис:
Параметры: <Объект> (обязательный)
Тип: Ссылка на объект информационной базы. Ссылка на объект. <ИмяРеквизита> (необязательный)
Тип: Строка. Имя реквизита объекта или ресурса Регистра сведений, для которого нужно выяснить ссылку. Если это реквизит табличной части объекта, то параметр указывается как <имя табличной части>.<имя реквизита>, то есть с разделителем "." (точка).
<Индекс> (необязательный)
Тип: Число. Индекс строки в табличной части, в том случае если объект является реквизитом табличной части. Первая строка имеет индекс равный 0.
Возвращаемое значение: Тип: Строка.
Описание: Получает текст ссылки на объект информационной базы или его реквизит в формате 1С:Предприятия.
В первом случае принимает в качестве параметра ссылку на объект (это может быть как ссылка, так и ключ записи регистра сведений). Объектом могут быть: справочник, документ, ключ записи регистра сведений, бизнес процессы, задачи.
Во втором, в качестве параметров принимает ключ объекта (это может быть как ссылка, так и ключ записи регистра сведений) и имя реквизита (ресурса). Если нужно получить ссылку на реквизит табличной части, перед именем реквизита необходимо добавить имя табличной части и точку ".".
Доступность: Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.
Примечание: Выполняет обращение к серверу только при получении ссылки на реквизит. При получении ссылки на объект информационной базы запрос на сервер не выполняется.
Получить навигационную ссылку для константы?
Вопрос: В конфигурации есть константа с типом ХранилищеЗначения для хранения изображения. Пытаюсь реализовать Загрузку и Выгрузку изображения: СсылкаНаКартинку = ПолучитьНавигационнуюСсылку(Константы.Логотип.Получить());
где СсылкаНаКартинку - реквизит формы с типом строка, а на форме есть элемент, у которого путь к данным = СсылкаНаКартинку
Возможно ли реализовать отображение картинки таким образом, или стоит хранить картинку где-либо еще? Ответ:
Навигационную ссылку на константу получить не получится(
Получится только так:
т.е. в процедуру ПриСозданииНаСервере поместить картинку во временное хранилище и она там сидит пока закроете форму
Есть форма списка справочника "Сотрудники".
В нем есть реквизит "Фото", который имеет тип "СправочникСсылка.ХранилищеДополнительнойИнформации" (справочник "ХранилищеДополнительнойИнформации" по структуре полностью совпадает анологичным справочником в 1С 8.1).
В реквизиты формы списка добавил "АдресКартинки" тип "строка", в элементы добавил поле "Картинка" (вид - поле картинки) с путем к данным "АдресКартинки". Как вывести Картинку?
Ответ:
"Хранилище" - это "стандартный" реквизит справочника "ХранилищеДополнительнойИнформации".
Имеется регистр сведений с именем "Изображения" следующей структуры:
Измерения:
- ИдИзображения (тип - уникальный идентификатор);
Реквизиты:
- Изображение (тип - ХранилищеЗначений)
Реализовать возможность записи изображений в него, проблемы не составило. А застрял на получении навигационной ссылки на нужную запись регистра? Ответ - Для регистра сведений первым параметром должен быть ключ записи, а не ссылка на объект.
Т.е. если есть регистр сведений ХранилищеКартинок с изменением Ном (тип справочник Ном) и ресурс Картинка (тип хранилище значений) - код для получения навигационной ссылки должен быть примерно таким:
При использовании в web-клиенте
Стояла следующая задача: отправлять уведомления о изменениях в документах на почту и вкладывать в письмо гиперссылку на измененный документ. База опубликована на web-севере. Полученная в 1С ссылка методом ПолучитьНавигационнуюСсылку() имела следующий вид https://localhost/#e1cib/data/Документы.Счет?ref="ab99005056c0000811e00f627bcddd55"
Вложенная в таком виде ссылка не открывала нужный документ, а лишь инициировала переход в базу.
Как оказалось проблема была в следующем, в URL-адресах не должны присутствовать кавычки, их заменяем на %22 https://localhost/#e1cib/data/Документы.Счет?ref=%22ab99005056c0000811e00f627bcddd55%22