![]() |
|
8.3 Список общий инф.баз на интернет-сервисе | ☑ | ||
---|---|---|---|---|
0
Deon
04.10.12
✎
13:22
|
В 8.3 можно добавить ссылку на интернет-сервис со списком общих информационных баз. В каком виде сервис должен возвращать этот список?
|
|||
1
shuhard
04.10.12
✎
13:28
|
(0) здесь смотрел ?
http://its.1c.ru/db/v83doc#content:30:1 |
|||
2
Deon
04.10.12
✎
13:29
|
(1) У меня доступу туды нет
|
|||
3
rs_trade
04.10.12
✎
13:30
|
(1) только неудачники сначала читают документацию. успешные 1с-неги сначала создают ветку на мисте.
|
|||
4
shuhard
04.10.12
✎
13:30
|
(2) быстро копируй, пока модераторы не удалили =)
6.1. Получение списка общих информационных баз При удаленной работе (например, через веб-сервер) возникает необходимость получения списка общих информационных баз. В этом случае параметр CommonInfoBases конфигурационного файла 1cestart.cfg не позволяет получить этот список. Для получения этого списка можно воспользоваться возможностью публикации списка общих информационных баз через Интернет-сервис. При этом доступно получение списка как через HTTP-запросы и через Web-сервисы. 6.1.1. Получение через Web-сервис Для получения списка общих информационных баз через Web-сервис необходимо опубликовать специальный Web-сервис, который будет возвращать этот список. Рассмотрим работу этого Web-сервиса более подробно. 6.1.1.1 Описание функционирования Интерактивная программа запуска (1cv8s) может получить список общих баз, как из локальной сети, так и через Интернет. Получение списка баз через Интернет выполняется только в случае интерактивного запуска и если указан адрес для получения списка общих информационных баз (параметр InternetService или WebCommonInfoBases файла 1cestart.cfg). Первым шагом осуществляется вызов метода WebCommonInfoBases.CheckInfoBases(). Если для этого компьютера и для этого пользователя интерактивная программа запуска вызывается впервые, то в качестве параметров ClientID и InfoBaseCheckCode передается значение 00000000-0000-0000-0000-000000000000. Если вызов не первый, то в качестве параметров передаются код клиента и значение хеш-функции текущего списка общих информационных баз. Метод Web-сервиса должен определить, нужно обновлять список общих информационных баз для данного клиента или нет. Если такая необходимость есть – то выходной параметр InfoBasesChanged должен получить значение Истина. Хеш-функция, используемая для проверки неизменности списка общих информационных баз, не регламентируется и может быть любой (например, объект встроенного языка ХешФункция). Необходимо понимать, что интерактивная программа запуска не занимается расчетом значения хеш-функции, а просто хранит значение, которое было передано при предыдущем вызове Web-сервиса. Если вызов метода WebCommonInfoBases.CheckInfoBases() указал на необходимость обновления списка, интерактивная программа запуска вызывает метод Web-сервиса WebCommonInfoBases.GetInfoBases(). Данный метод должен вернуть три значения: ? Код клиента (если он не задан); ? Список общих информационных баз в формате v8i (см. здесь); ? Значение хеш-функции для переданного списка общих информационных баз. Это значение будет передано в метод WebCommonInfoBases.CheckInfoBases() при следующей проверке необходимости обновления списка общих информационных баз. Если список общих информационных баз получается впервые, то код клиента (параметр ClientID) будет равно значению 00000000-0000-0000-0000-000000000000. 6.1.1.2 Описание Web-сервиса Имя Web-сервиса: WebCommonInfoBases. Тайм-аут на выполнение любого метода Web-сервиса составляет 3 секунды. Методы Web-сервиса перечислены ниже. CheckInfoBases Описание: Данный метод используется интерактивной программой запуска (1cv8s) для определения необходимости получения списка общих информационных баз. Параметры: ClientID входной Тип: Строка. Содержит идентификатор клиента, для которого проверяется актуальность списка общих информационных баз. InfoBaseCheckCode входной Тип: Строка. Значение хеш-функции списка общих информационных баз для указанного идентификатора клиента. InfoBasesChanged выходной Тип: Булево. Признак того, что список общих информационных баз необходимо получить повторно. Возвращаемое значение: Тип произвольный, значение игнорируется. GetInfoBases Описание: Параметры: ClientID входной/выходной Тип: Строка. Содержит идентификатор клиента, для которого выполняется получение списка общих информационных баз. Если идентификатор клиента не задан (равен значению 00000000-0000-0000-0000-000000000000), то метод должен назначить идентификатор клиента и вернуть его в этом параметре. InfoBaseCheckCode входной/выходной Тип: Строка. Значение хеш-функции списка общих информационных баз, который возвращается данным методом в параметре InfoBases. InfoBases входной/выходной Тип: Строка. Список общих информационных баз в формате v8i (см. здесь). Возвращаемое значение: Тип произвольный, значение игнорируется. 6.1.1.3 Пример реализации Рассмотрим пример Web-сервиса для получения списка общих информационных баз. Примечание. Пример, приведенный в данном разделе, не является законченным. Он предназначен для демонстрации работы механизма. В качестве Web-сервиса используется простая конфигурация, которая содержит один справочник и один Web-сервис. Справочник имеет следующие характеристики: ? Имя СписокОбщихБаз. ? Тип кода Строка. ? Реквизиты: ? Имя Хеш, тип Строка(32), переменной длины. ? Имя ПутьКФайлуСписка, тип Строка, неограниченной длины. ? Остальные параметры заданы по умолчанию. Данный справочник будет хранить список идентификаторов клиентов (стандартный реквизит Код), пути к списку общих информационных баз (реквизит ПутьКФайлуСписка) и значение хеш-функции (реквизит Хеш), рассчитанной при последнем получении списка для данного клиента. Также в конфигурации должен быть создан Web-сервис WebCommonInfoBases, для которого должны быть определены операции: ? CheckInfoBases, свойство Тип возвращаемого значения установлено в значение string, флажок Возможно пустое значение установлен. Остальные свойства установлены в значения по умолчанию. Параметры метода и их типы см. здесь. ? GetInfoBases, свойство Тип возвращаемого значения установлено в значение string, флажок Возможно пустое значение установлен. Остальные свойства установлены в значения по умолчанию. Параметры метода и их типы см. здесь. Текст операций Web-сервиса: Функция CheckInfoBases(ClientID, InfoBaseCheckCode, InfoBaseChanged) Если ClientID = "00000000-0000-0000-0000-000000000000" И InfoBaseCheckCode = "00000000-0000-0000-0000-000000000000" Тогда // это первое обращение клиента InfoBaseChanged = Истина; Возврат ""; КонецЕсли; Клиент = Справочники.СписокОбщихБаз.НайтиПоКоду(ClientID); Если Клиент.Пустая() Тогда // нет такого клиента InfoBaseChanged = Ложь; Иначе // проверим: тот файл, который сейчас на стороне Web-сервиса // отличается от того файла, который на стороне клиента? Хеш = Новый ХешированиеДанных(ХешФункция.MD5); Хеш.ДобавитьФайл(Клиент.ПутьКФайлуСписка); Хеш = СтрЗаменить(Хеш.ХешСумма, " ", ""); InfoBaseChanged = ?(InfoBaseCheckCode = Хеш, Ложь, Истина); КонецЕсли; Возврат ""; КонецФункции Функция GetInfoBases(ClientID, InfoBaseCheckCode, InfoBases) Если ClientID = "00000000-0000-0000-0000-000000000000" Тогда // необходимо завести нового клиента Объект = Справочники.СписокОбщихБаз.СоздатьЭлемент(); Объект.УстановитьНовыйКод(); // сформируем имя клиента Объект.Наименование = "Клиент " + Строка(Объект.Код); Объект.ПутьКФайлуСписка = "C:\CommonIBs\cib"+Строка(Объект.Код)+".v8i"; // запишем пустой файл списка, потом его можно наполнить Текст = Новый ТекстовыйДокумент; Текст.Записать(Объект.ПутьКФайлуСписка, КодировкаТекста.UTF8); // рассчитаем хеш-функцию Хеш = Новый ХешированиеДанных(ХешФункция.MD5); Хеш.ДобавитьФайл(Объект.ПутьКФайлуСписка); Объект.Записать(); // сформируем возвращаемые значения Web-сервиса InfoBaseCheckCode = СтрЗаменить(Хеш.ХешСумма, " ", "");; InfoBases = Текст.ПолучитьТекст(); ClientID = Объект.Код; Иначе // здесь получим данные для существующего кода клиента Клиент = Справочники.СписокОбщихБаз.НайтиПоКоду(ClientID); Если Клиент.Пустая() Тогда // нет такого клиента InfoBaseCheckCode = ""; InfoBases = ""; Иначе // рассчитаем хеш-функцию для возвращаемого файла списка Хеш = Новый ХешированиеДанных(ХешФункция.MD5); Хеш.ДобавитьФайл(Клиент.ПутьКФайлуСписка); // прочитаем список общих баз Текст = Новый ТекстовыйДокумент; Текст.Прочитать(Клиент.ПутьКФайлуСписка); // сформируем возвращаемые значения Web-сервиса InfoBaseCheckCode = СтрЗаменить(Хеш.ХешСумма, " ", ""); InfoBases = Текст.ПолучитьТекст(); КонецЕсли; КонецЕсли; Возврат ""; КонецФункции После создания конфигурации следует опубликовать Web-сервис на веб-сервере (см. здесь). Затем необходимо запомнить адрес опубликованного Web-сервиса. Предположим, что Web-сервис опубликован по адресу http://localhost/listservice. В форме настройки окна запуска (см. здесь) необходимо добавить Интернет-сервис с указанным выше адресом, с указанием суффикса ws: http://localhost/listservice/ws. Теперь при следующем запуске в информационной базе Web-сервиса будет создана запись в справочнике СписокОбщихБаз, а в каталоге C:\CommonIBs (должен существовать) будет расположен пустой файл cib000000001.v8i. Если в этот файл внести информацию об информационной базе, то при следующем запуске интерактивной программы запуска, созданная информационная база будет отображена в списке (в группе с именем Группа cib000000001). Пример файла: [cib000000001] Connect=File="<Путь к информационной базе>"; Folder=Группа cib000000001 [Группа cib000000001] |
|||
5
rs_trade
04.10.12
✎
13:31
|
(2) как можно жить без ИТС?
|
|||
6
Deon
04.10.12
✎
13:33
|
(5) Миста заменяет мне ИТС )
А если серьезно, то контора новая, доступа ещё просто не дали |
|||
7
Deon
04.10.12
✎
13:35
|
(4) Оказывается всё не сильно просто, как казалось. Спасибо )
|
|||
8
shuhard
04.10.12
✎
13:43
|
(7) чё так сразу сдался ?
|
|||
9
Deon
04.10.12
✎
13:44
|
(8) Нет, почему же. Сделаю, штука-то полезная. Но не так быстро, как казалось )
|
|||
10
Deon
04.10.12
✎
13:47
|
(8) Интересно, а уже готовых конфигураций управления инф.базами как в (4) ещё не написано?
|
|||
11
shuhard
04.10.12
✎
13:50
|
(10) видел очень похожее на инфостарте, в суть не вникал
|
|||
12
Deon
04.10.12
✎
13:54
|
(11) Спасибо, поищу
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |