Добрый день!
У нас группа компаний. Имеется куча юрлиц. Соответственно, много одинаковых баз - та же БП3.
Стал прикидывать, как можно уменьшить количество физических баз. Какие варианты есть?
1. RLS. Недостатков больше, чем достоинств. Основные недостатки - общие справочники.
2. 1C-Fresh. Описание выглядит многообещающе. Как показывает практика, коль скоро 1С сама использует и продает данный продукт - продукт рабочий, но, боюсь, для наших целей слишком большой, тяжеловесный и дорогой.
Однако, обычная типовая конфигурация адаптирована под работу в модели сервиса.
Не пробовал ли кто-нибудь из читающих попробовать запустить конфигурацию с разделением данных без технологии Fresh? можно поменять значения пары констант - конфигурация будет запускаться в модели сервиса. Можно создать отдельную область данных. Пользователей добавлять не получается - добавление пользователей требует наличие агента сервиса 1C-Fresh. Хотя, как мне кажется, все может быть гораздо проще.
1С отправляет к франчикам. Франчики говорят про 1С Fresh. То, что разделение данных не равно Fresh - даже не хотят вникать. Может быть, кто-нибудь уже разбирался в этом?
Чтобы полноценно использовать 1СФреш необходимо регистрироваться в 1С как поставщик услуг - платить % за использование и отсылать отчёты по использованию. По поводу попытки использования разделения данных были статьи компании Кнопка.
(4) не обязательно, технология 1CFresh продается конечным клиентам, быть партнером 1С и/или заключать договор на предоставление 1С в аренду для его приобретения не требуется
(6)Пользоваться то можно, только вот, например, как заставить работать сервис 1С:Контрагент во Фреше без заключения договора на предоставление 1С в аренду?
(8)Вы сами пробовали прикрутить ИТС или 1С:Контрагент к Фрешу? Или полагаете что я тут просто так про агентский договор упомянул? Если знаете способ заставить работать 1С:Контрагент для всех пользователей Фреш без агентского договора - поделитесь с нами.
&Вместо("ПроксиСервиса")
Функция ПроксиСервисаАрМ(URLМестоположенияWSDL, URIПространстваИмен, ИмяСервиса, ИмяТочкиПодключения, ОписаниеОшибки)
Прокси = Неопределено;
Если ОбщегоНазначения.РазделениеВключено() Тогда
// Создание WSПрокси с аутентификацией по тикету аутентификации.
ПараметрыПодключения = ОбщегоНазначения.ПараметрыПодключенияWSПрокси();
ПараметрыПодключения.АдресWSDL = URLМестоположенияWSDL;
ПараметрыПодключения.URIПространстваИмен = URIПространстваИмен;
ПараметрыПодключения.ИмяСервиса = ИмяСервиса;
ПараметрыПодключения.ИмяТочкиПодключения = ИмяТочкиПодключения;
ПараметрыПодключения.Таймаут = 60;
ОшибкаАутентификации = Ложь;
// Попытка создания объекта без аутентификации (по данным Кэш).
Попытка
Прокси = ОбщегоНазначения.СоздатьWSПрокси(ПараметрыПодключения);
Исключение
ОписаниеОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
КонецПопытки;
Если Не ПустаяСтрока(ОписаниеОшибки) Тогда
ОписаниеОшибкиВРег = ВРег(ОписаниеОшибки);
ОшибкаАутентификации = (СтрНайти(ОписаниеОшибкиВРег, """STATUS"":401") > 0
Или СтрНайти(ОписаниеОшибкиВРег, "SERVER-9:") > 0);
КонецЕсли;
Если ОшибкаАутентификации Тогда
// Нет описания WSDL в кэше программных интерфейсов.
// Получить новое описание с использованием тикета, новое описание
// будет сохранено в кэше программных интерфейсов.
ОписаниеОшибки = "";
УстановитьПривилегированныйРежим(Истина);
// Работа в модели сервиса.
МодульИнтернетПоддержкаПользователейВМоделиСервиса =
ОбщегоНазначения.ОбщийМодуль("ИнтернетПоддержкаПользователейВМоделиСервиса");
РезультатПолученияТикета = МодульИнтернетПоддержкаПользователейВМоделиСервиса.ТикетАутентификацииНаПорталеПоддержки(
URLМестоположенияWSDL);
УстановитьПривилегированныйРежим(Ложь);
Если Не ПустаяСтрока(РезультатПолученияТикета.КодОшибки) Тогда
ЗаписатьИнформациюВЖурналРегистрации(
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалось получить тикет аутентификации для создания описания сервиса %1.
|Код ошибки: %2.
|Для аутентификации использован логин ""fresh"".'"),
URLМестоположенияWSDL,
РезультатПолученияТикета.КодОшибки),
"РаботаСКонтрагентами");
ПараметрыПодключения.ИмяПользователя = "%ITS_IF%";
ПараметрыПодключения.Пароль = "%ITS_PASS%";
Иначе
ПараметрыПодключения.ИмяПользователя = "AUTH_TOKEN";
ПараметрыПодключения.Пароль = РезультатПолученияТикета.Тикет;
КонецЕсли;
Попытка
Прокси = ОбщегоНазначения.СоздатьWSПрокси(ПараметрыПодключения);
Исключение
ОписаниеОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
КонецПопытки;
КонецЕсли;
Иначе
// Создание WSПрокси в обычном режиме с аутентификацией по логину и паролю.
УстановитьПривилегированныйРежим(Истина);
ДанныеАутентификации = ИнтернетПоддержкаПользователей.ДанныеАутентификацииПользователяИнтернетПоддержки();
УстановитьПривилегированныйРежим(Ложь);
Если ДанныеАутентификации = Неопределено Тогда
ОписаниеОшибки = "НеУказаныПараметрыАутентификации";
Возврат Неопределено;
КонецЕсли;
ПараметрыПодключения = ОбщегоНазначения.ПараметрыПодключенияWSПрокси();
ПараметрыПодключения.АдресWSDL = URLМестоположенияWSDL;
ПараметрыПодключения.URIПространстваИмен = URIПространстваИмен;
ПараметрыПодключения.ИмяСервиса = ИмяСервиса;
ПараметрыПодключения.ИмяТочкиПодключения = ИмяТочкиПодключения;
ПараметрыПодключения.ИмяПользователя = ДанныеАутентификации.Логин;
ПараметрыПодключения.Пароль = ДанныеАутентификации.Пароль;
ПараметрыПодключения.Таймаут = 60;
Попытка
Прокси = ОбщегоНазначения.СоздатьWSПрокси(ПараметрыПодключения);
Исключение
ОписаниеОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
КонецПопытки;
КонецЕсли;
Возврат Прокси;
КонецФункции
&Вместо("ЗаполнитьТикетАутентификации")
Процедура ЗаполнитьТикетАутентификацииАрМ(ПроксиСервиса, АдресСервиса, ИмяМетода, ОписаниеОшибки)
Если Не ОбщегоНазначения.РазделениеВключено() Тогда
Возврат;
КонецЕсли;
// Получение тикета.
УстановитьПривилегированныйРежим(Истина);
// Работа в модели сервиса.
МодульИнтернетПоддержкаПользователейВМоделиСервиса =
ОбщегоНазначения.ОбщийМодуль("ИнтернетПоддержкаПользователейВМоделиСервиса");
РезультатПолученияТикета = МодульИнтернетПоддержкаПользователейВМоделиСервиса.ТикетАутентификацииНаПорталеПоддержки(
АдресСервиса + "#" + ИмяМетода);
УстановитьПривилегированныйРежим(Ложь);
Если Не ПустаяСтрока(РезультатПолученияТикета.КодОшибки) Тогда
ЗаписатьИнформациюВЖурналРегистрации(
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалось получить тикет аутентификации для вызова операции %1 сервиса %2.
|Код ошибки: %3.
|Для аутентификации использован логин ""fresh"".'"),
ИмяМетода,
АдресСервиса,
РезультатПолученияТикета.КодОшибки),
"РаботаСКонтрагентами");
ПроксиСервиса.Пользователь = "%ITS_ID%";
ПроксиСервиса.Пароль = "%ITS_PASS%";
Иначе
ПроксиСервиса.Пользователь = "AUTH_TOKEN";
ПроксиСервиса.Пароль = РезультатПолученияТикета.Тикет;
КонецЕсли;
КонецПроцедуры
(11) прикручивать в конкретную базу, в общие модули (делал через расширения, БП3.0.67.70, при обновлении на 3.0.67.74 всё работает).%ITS_ID% и %ITS_PASS% поменять на свои, и о чудо, это дело всё заводится, и 1С:Контрагент прикручен.