Авторегистрация внешних отчётов/обработок средствами БСП

11.02.15

База данных - Инструменты администратора БД

Вы сделали клиенту красивую печатную форму, или доп.обработку, или заполнение таб.части; но надо ещё зарегистрировать её. Клиенту это не всегда объяснишь, дистанционно не всегда сделаешь. А дальше её ещё обновлять каждый раз... Предлагаю код, который исключительно штатным образом "сделает всё сам".

Идея родилась из общения с крайне малограмотными клиентами, для которых в БП 3.0 добраться до справочника "Дополнительные отчёты и обработки" было нереально. Удалённого администрирования добиться не удалось. И тогда я подумал - а пусть внешка сама себя регистрирует. Уж проделать стандартное "Файл" - "Открыть" нынче всякий сможет.

И вот, стало быть, надо просто из "ПриОткрытии" основной формы отчёта/обработки что-то вызывать. Ниже приведено, что именно. Единственно, важно, чтобы в форме были параметр "ОбъектыНазначения" (произвольный) - ну, он-то для многих случаев необходим согласно требованиям БСП; и придуманный мной параметр "НезависимоеОткрытие" (булев, ключевой), он позволяет отличить, как вызвана внешка - через "Файл" - "Открыть" или уже штатно самой конфой. А если хотите, придумайте другие признаки, по которым в ПриОткрытии надо дёргать "ОбновлениеИзФайлаПомещениеНаКлиенте".

Проверялось для всех 36 случаев настроек регистрации внешки, на БСП 2.2.3.36 и 2.2.4.43; пока без прибамбасов вроде автоперезаполнения "Назначения" или расписания вызова команд (где оно возможно); но это тоже планирую сделать.

Особенно эта штука полезна, когда идут мелкие частые правки и надо отдавать все эти варианты клиенту на тест; например, печатные формы. Словом, вставьте вот это в код модуля формы и будет сразу легче.


#Область СобытияФормы

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    Если
ТипЗнч(ЭтаФорма.Параметры.ОбъектыНазначения)<>Тип("Массив") Тогда
       
ЭтаФорма.Параметры.НезависимоеОткрытие=Истина;
    КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытии(Отказ)
    Если
ЭтаФорма.Параметры.НезависимоеОткрытие Тогда
       
ОбновлениеИзФайлаПомещениеНаКлиенте();
    КонецЕсли;
КонецПроцедуры

#КонецОбласти


#Область ОбслуживаниеАвторегистрацииПриОткрытииФормы

// Внимание! Все сообщения выдаются только из расчёта на русский язык, без использования НСтр!

&НаСервере
Процедура ОбновлениеИзФайлаМеханикаНаСервере(ПараметрыРегистрации)
   
//=============================================================================
    // Определяемся с самим объектом

    // Подключение и получение имени, под которым объект будет подключаться
   
Менеджер=?(ПараметрыРегистрации.ЭтоОтчет,ВнешниеОтчеты,ВнешниеОбработки);

   
// исходим из того, что у нас только тонкий или веб-клиент, получаем имя подключённой ВПФ
   
ИмяРегистрируемогоОбъекта=СокрЛП(Менеджер.Подключить(ПараметрыРегистрации.АдресДанныхОбработки,,Истина)); // в безопасном

    // проверим, есть ли уже такой объект (по ИмяОбъекта и Вид); будем считать, что блок используется (т.к. только это даёт конфликт имён)
   
тз="ВЫБРАТЬ ПЕРВЫЕ 1
    |   ТаблицаСправочника.Ссылка КАК ВПФ
    |ИЗ
    |   Справочник.ДополнительныеОтчетыИОбработки КАК ТаблицаСправочника
    |ГДЕ
    |   ТаблицаСправочника.ИмяОбъекта = &УслИмяОбъекта
    |   И ТаблицаСправочника.Публикация = ЗНАЧЕНИЕ(Перечисление.ВариантыПубликацииДополнительныхОтчетовИОбработок.Используется)
    |   И ТаблицаСправочника.ПометкаУдаления = Ложь"
;
   
//
   
Если ПараметрыРегистрации.ЭтоОтчет Тогда
       
тз=тз+"
        |   И ТаблицаСправочника.Вид В (
        |   ЗНАЧЕНИЕ(Перечисление.ВидыДополнительныхОтчетовИОбработок.ДополнительныйОтчет),
        |   ЗНАЧЕНИЕ(Перечисление.ВидыДополнительныхОтчетовИОбработок.Отчет))"
;
    Иначе
       
тз=тз+"
        |   И НЕ (ТаблицаСправочника.Вид В (
        |   ЗНАЧЕНИЕ(Перечисление.ВидыДополнительныхОтчетовИОбработок.ДополнительныйОтчет),
        |   ЗНАЧЕНИЕ(Перечисление.ВидыДополнительныхОтчетовИОбработок.Отчет)))"
;
    КонецЕсли;
   
//
   
з=Новый Запрос(тз);
   
з.УстановитьПараметр("УслИмяОбъекта",ИмяРегистрируемогоОбъекта);
   
//
   
УстановитьПривилегированныйРежим(Истина);
   
трез=з.Выполнить().Выгрузить(ОбходРезультатаЗапроса.Прямой);
   
УстановитьПривилегированныйРежим(Ложь);
   
//
   
Если трез.Количество()=0 Тогда // создаём новый объект в корне
       
ОбъектСправочника=Справочники.ДополнительныеОтчетыИОбработки.СоздатьЭлемент();
       
// считаю правильным проставить сразу же
       
ОбъектСправочника.ИспользоватьДляФормыСписка=Истина;
       
ОбъектСправочника.ИспользоватьДляФормыОбъекта=Истина;
    Иначе
       
ОбъектСправочника=трез[0].ВПФ.ПолучитьОбъект();
    КонецЕсли;

   
//=============================================================================
    // Обрабатываем объект справочника

   
КомандыСохраненные=ОбъектСправочника.Команды.Выгрузить(); // запомним команды
    //
    // запомним состояние реквизита Публикация и выключим временно, чтобы в регистрации обработки не делался поиск (мы уже его сделали)
   
ПубликацияСохраненная=ОбъектСправочника.Публикация;
   
ОбъектСправочника.Публикация=Перечисления.ВариантыПубликацииДополнительныхОтчетовИОбработок.Отключена;

   
// Разрешения используются для всех, кроме глобальных обработок и отчётов, т.е. кроме ВидДопОбработка и ВидДопОтчет

    // Назначения используются для всех, кроме глобальных обработок и отчётов, т.е. кроме ВидДопОбработка и ВидДопОтчет
    // Единожды указанные Назначения не изменяются, если сведения о них не были переданы (т.е. удалённое - остаётся).
    // чтобы они перечитались, надо так: ОбъектСправочника.Назначение.Очистить(); // причём именно ДО вызова ЗарегистрироватьОбработку

    // собственно выполним большинство штатных действий по считыванию рег.сведений и регистрации в системе
   
РезультатРегистрации=ДополнительныеОтчетыИОбработки.ЗарегистрироватьОбработку(ОбъектСправочника,ПараметрыРегистрации);

   
// закинем данные из РезультатРегистрации в ПараметрыРегистрации и дальше будем работать с ней
   
ОбщегоНазначенияКлиентСервер.ДополнитьСтруктуру(ПараметрыРегистрации,РезультатРегистрации,Истина);

    Если не
ПараметрыРегистрации.Успех Тогда
        Если не
ПустаяСтрока(ПараметрыРегистрации.КраткоеПредставлениеОшибки) Тогда
           
Сообщить("Ошибка регистрации внешнего блока: "+СокрЛП(ПараметрыРегистрации.КраткоеПредставлениеОшибки),СтатусСообщения.Важное);
        Иначе
           
// считаем, что "занявших" имя не существует, и неуспех произошёл по другой причине:
            // а) не хватило прав на подключения обработки, запускаемой в небезопасном режиме;
            // б) не удалось сменить вид (обработка/отчёт итд) для уже имеющегося эл-та спр-ка;
            // в) вид ВПФ, указанный в регистрационных данных, противоречит расширению файла.
           
Сообщить("Общая недиагностированная ошибка регистрации внешнего блока!",СтатусСообщения.ОченьВажное);
        КонецЕсли;
        Возврат;
    КонецЕсли;

   
ОбъектСправочника.Публикация=ПубликацияСохраненная; // восстановим значение реквизита Публикация

    // занимаемся таб.частью Команды
   
тз="ВЫБРАТЬ
    |   ДанныеРегистра.ИдентификаторКоманды,
    |   ДанныеРегистра.Пользователь
    |ИЗ
    |   РегистрСведений.ПользовательскиеНастройкиДоступаКОбработкам КАК ДанныеРегистра
    |ГДЕ
    |   ДанныеРегистра.ДополнительныйОтчетИлиОбработка = &УслСсылка
    |   И ДанныеРегистра.Доступно = Истина"
;
   
з=Новый Запрос(тз);
   
з.УстановитьПараметр("УслСсылка",ОбъектСправочника.Ссылка);
   
УстановитьПривилегированныйРежим(Истина);
   
БыстрыйДоступ=з.Выполнить().Выгрузить(ОбходРезультатаЗапроса.Прямой);
   
УстановитьПривилегированныйРежим(Ложь);

   
рАдресРазрешений=ПоместитьВоВременноеХранилище(ОбъектСправочника.Разрешения.Выгрузить(),ЭтотОбъект.УникальныйИдентификатор);

   
тКоманд=ОбъектСправочника.Команды.Выгрузить();
   
тКоманд.Сортировать("Представление");

   
// изменить вид единожды созданного элемента уже нельзя, таково положение БСП (см.перед записью объекта)
   
ВидДополнительнаяОбработка=Перечисления.ВидыДополнительныхОтчетовИОбработок.ДополнительнаяОбработка;
   
ВидДополнительныйОтчет=Перечисления.ВидыДополнительныхОтчетовИОбработок.ДополнительныйОтчет;
   
ВидОбъекта=ОбъектСправочника.Вид;
   
ПредставлениеПустогоРасписания=Строка(Новый РасписаниеРегламентногоЗадания);

   
// в таблице Команды нужны колонки, которых нет как реквизитов табчасти Команды, добавим
   
тКоманд.Колонки.Добавить("РегламентноеЗаданиеИспользование",Новый ОписаниеТипов("Булево"));
   
тКоманд.Колонки.Добавить("РегламентноеЗаданиеПредставление"); // строка0
   
тКоманд.Колонки.Добавить("РегламентноеЗаданиеРазрешено",Новый ОписаниеТипов("Булево"));
   
тКоманд.Колонки.Добавить("РегламентноеЗаданиеРасписание",Новый ОписаниеТипов("СписокЗначений")); // обычно 1 элемент типа "РасписаниеРегламентногоЗадания"
   
тКоманд.Колонки.Добавить("БыстрыйДоступПредставление"); // строка0

   
Для каждого строКоманд Из тКоманд Цикл
       
строКоманд.РегламентноеЗаданиеИспользование=Ложь; // по умолчанию
       
строКоманд.РегламентноеЗаданиеРазрешено=Ложь; // по умолчанию
        //
       
Если ВидОбъекта=ВидДополнительнаяОбработка или ВидОбъекта=ВидДополнительныйОтчет    Тогда
           
// сделаем представление строки в зависимости от количества пользователей, найденных по этой команде в регистре доступа
           
мНайденных=БыстрыйДоступ.НайтиСтроки(Новый Структура("ИдентификаторКоманды",строКоманд.Идентификатор));
            Если
мНайденных.Количество()=0 Тогда
               
строКоманд.БыстрыйДоступПредставление="Нет";
            Иначе
// схалявим - незачем красивости разводить
               
строКоманд.БыстрыйДоступПредставление="Пользователей: "+СокрЛП(мНайденных.Количество());
            КонецЕсли;
        КонецЕсли;
       
//
       
Если ВидОбъекта=ВидДополнительнаяОбработка
        И (строКоманд.ВариантЗапуска=Перечисления.СпособыВызоваДополнительныхОбработок.ВызовСерверногоМетода
        ИЛИ строКоманд.ВариантЗапуска=Перечисления.СпособыВызоваДополнительныхОбработок.СценарийВБезопасномРежиме)
        Тогда
           
строКоманд.РегламентноеЗаданиеРазрешено=Истина;
           
//
           
РегламентноеЗаданиеGUID=строКоманд.РегламентноеЗаданиеGUID;
           
НайденнаяСтрока=КомандыСохраненные.Найти(строКоманд.Идентификатор,"Идентификатор");
            Если
НайденнаяСтрока<>Неопределено Тогда
               
РегламентноеЗаданиеGUID=НайденнаяСтрока.РегламентноеЗаданиеGUID;
            КонецЕсли;
           
//
           
Если ЗначениеЗаполнено(РегламентноеЗаданиеGUID) Тогда // ID задания есть, разбираемся с самим заданием
               
РегламентноеЗадание=ДополнительныеОтчетыИОбработкиРегламентныеЗадания.НайтиЗадание(РегламентноеЗаданиеGUID);
                Если
РегламентноеЗадание<>Неопределено Тогда
                   
ПараметрыЗадания=ДополнительныеОтчетыИОбработкиРегламентныеЗадания.ПолучитьПараметрыЗадания(РегламентноеЗадание);
                   
// ставим параметры задания в строку команд
                   
строКоманд.РегламентноеЗаданиеGUID=РегламентноеЗаданиеGUID;
                   
строКоманд.РегламентноеЗаданиеПредставление=Строка(ПараметрыЗадания.Расписание);
                   
строКоманд.РегламентноеЗаданиеИспользование=ПараметрыЗадания.Использование;
                   
строКоманд.РегламентноеЗаданиеРасписание.Вставить(0,ПараметрыЗадания.Расписание);
                   
// выключаем, если надо
                   
Если строКоманд.РегламентноеЗаданиеПредставление=ПредставлениеПустогоРасписания Тогда
                       
строКоманд.РегламентноеЗаданиеИспользование=Ложь;
                    КонецЕсли;
                КонецЕсли;
            КонецЕсли;
           
//
           
Если Не строКоманд.РегламентноеЗаданиеИспользование Тогда
               
строКоманд.РегламентноеЗаданиеПредставление="Расписание не задано";
            КонецЕсли;
        Иначе
           
// если это не глобальная доп.обработка
           
строКоманд.РегламентноеЗаданиеПредставление="Неприменимо для команд с вариантом запуска """+СокрЛП(строКоманд.ВариантЗапуска)+"""!";
        КонецЕсли;
    КонецЦикла;
// по таблице команд

   
ОбъектСправочника.Команды.Загрузить(тКоманд);

   
// обратно включим использование
   
ОбъектСправочника.Публикация=Перечисления.ВариантыПубликацииДополнительныхОтчетовИОбработок.Используется;

    Если
ДополнительныеОтчетыИОбработки.ВозможнаЗагрузкаОбработкиИзФайла(ОбъектСправочника.Ссылка) Тогда
       
ддОбработки=ПолучитьИзВременногоХранилища(ПараметрыРегистрации.АдресДанныхОбработки);
       
ОбъектСправочника.ХранилищеОбработки=Новый ХранилищеЗначения(ддОбработки,Новый СжатиеДанных(9));
    КонецЕсли;

    Если
ВидОбъекта=ВидДополнительнаяОбработка или ВидОбъекта=ВидДополнительныйОтчет Тогда
       
ОбъектСправочника.ДополнительныеСвойства.Вставить("АктуальныеКоманды",тКоманд);
    Иначе
       
БыстрыйДоступ.Очистить();
    КонецЕсли;
   
ОбъектСправочника.ДополнительныеСвойства.Вставить("БыстрыйДоступ",БыстрыйДоступ);

   
ОбъектСправочника.Разрешения.Загрузить(ПолучитьИзВременногоХранилища(рАдресРазрешений));
   
ОбъектСправочника.Ответственный=ПараметрыСеанса.ТекущийПользователь;

   
// собственно запишем
   
Попытка
       
ОбъектСправочника.Записать();
       
ПараметрыРегистрации.Вставить("СсылкаНаОбъект",ОбъектСправочника.Ссылка);
    Исключение
       
Сообщить("Ошибка финальной записи регистрации: "+ОписаниеОшибки(),СтатусСообщения.ОченьВажное);
       
ПараметрыРегистрации.Вставить("Успех",Ложь);
    КонецПопытки;

КонецПроцедуры

&НаСервере
Функция ОпределитьИмяИспользуемогоФайла()
   
рОбъект=РеквизитФормыВЗначение("Объект");
    Возврат
рОбъект.ИспользуемоеИмяФайла;
КонецФункции

&НаКлиенте
Процедура ОбновлениеИзФайлаПомещениеНаКлиенте()
   
рПутьИмяФайла=ОпределитьИмяИспользуемогоФайла();

   
// помещаем файл в хранилище на сервере
   
рДопПараметры=Новый Структура("Успешность",Истина); // предполагаем, что так
   
рОбработчик=Новый ОписаниеОповещения("ПомещениеФайлаНаСерверЗавершение",ЭтотОбъект,рДопПараметры);
   
//
   
Если ПодключитьРасширениеРаботыСФайлами() Тогда
       
мПомещенныхФайлов=Новый Массив;
        Если не
ПоместитьФайлы(,мПомещенныхФайлов,рПутьИмяФайла,Ложь,ЭтаФорма.УникальныйИдентификатор) Тогда
           
Сообщить("Ошибка при помещении файла внешнего отчёта/обработки на сервер!",СтатусСообщения.Важное);
           
рДопПараметры.Вставить("Успешность",Ложь);
        Иначе
           
// мПомещенныхФайлов содержит элемент - служебку вида Имя (путь) и Хранение (GUID)
           
рДопПараметры.Вставить("Успешность",Истина);
        КонецЕсли;
       
ВыполнитьОбработкуОповещения(рОбработчик,мПомещенныхФайлов);
    Иначе
       
НачатьПомещениеФайла(рОбработчик,,рПутьИмяФайла,Ложь,ЭтаФорма.УникальныйИдентификатор);
    КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура ПомещениеФайлаНаСерверЗавершение(мПомещенныхФайлов,рПараметрыРегистрации) Экспорт
   
рОписаниеФайла=мПомещенныхФайлов.Получить(0);
   
//
   
мстро=СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(рОписаниеФайла.Имя,"\");
   
рПараметрыРегистрации.Вставить("ИмяФайла",мстро.Получить(мстро.ВГраница()));
   
рПараметрыРегистрации.Вставить("АдресДанныхОбработки",рОписаниеФайла.Хранение);
   
//
    // выясним тип, исходя из расширения (если бы не веб-клиент, можно было бы через объект "Файл")
   
рРасширение=ВРег(Прав(рПараметрыРегистрации.ИмяФайла,3));
    Если
рРасширение="ERF" Тогда
       
рПараметрыРегистрации.Вставить("ЭтоОтчет",Истина);
    ИначеЕсли
рРасширение="EPF" Тогда
       
рПараметрыРегистрации.Вставить("ЭтоОтчет",Ложь);
    Иначе
       
Сообщить("Расширение файла не соответствует расширению внешнего отчёта (ERF) или обработки (EPF)!",СтатусСообщения.Важное);
       
рПараметрыРегистрации.Вставить("Успешность",Ложь);
        Возврат;
    КонецЕсли;
   
//
   
рПараметрыРегистрации.Вставить("ОтключатьПубликацию",Ложь);
   
рПараметрыРегистрации.Вставить("ОтключатьКонфликтующие",Ложь);
   
рПараметрыРегистрации.Вставить("Конфликтующие",Новый СписокЗначений);

   
// Подготовка к вызову сервера.
    //ОбработчикРезультата = ПараметрыРегистрации.ОбработчикРезультата;
    //ПараметрыРегистрации.Удалить("ОбработчикРезультата");

    //============================================================================
    // Вызов сервера.
   
ОбновлениеИзФайлаМеханикаНаСервере(рПараметрыРегистрации);

   
//============================================================================

   
Если рПараметрыРегистрации.Успех Тогда
        Если
рПараметрыРегистрации.Свойство("СсылкаНаОбъект") и ЗначениеЗаполнено(рПараметрыРегистрации.СсылкаНаОбъект) Тогда
           
гипСсылка=ПолучитьНавигационнуюСсылку(рПараметрыРегистрации.СсылкаНаОбъект);
           
ПоказатьОповещениеПользователя("Авторегистрация выполнена",гипСсылка,"Для перехода к регистрационной карточке щёлкните по ссылке.",гипСсылка);
           
ЭтаФорма.Закрыть();
           
//парф=Новый Структура("Ключ",рПараметрыРегистрации.СсылкаНаОбъект);
            //ОткрытьФорму("Справочник.ДополнительныеОтчетыИОбработки.Форма.ФормаЭлемента",парф);
       
Иначе
           
ПоказатьОповещениеПользователя("При завершении авторегистрации внешнего блока произошла ошибка!");
        КонецЕсли;
    Иначе
       
ПоказатьОповещениеПользователя("Авторегистрация внешнего блока не удалась!");
    КонецЕсли;

КонецПроцедуры

#КонецОбласти

 

Кто найдёт ошибки - пожалуйста, сообщайте, буду исправлять. Вообще, заранее оговорюсь, что развитие БСП в любой момент может сделать любую из вышеприведённых строк неактуальной, но, по идее, капитальных изменений идеологии быть уже не должно.

P.S. Если будет время, попробую разобрать каждый вариант подключения и использования внешки в отдельной статье, т.к. там есть весьма любопытные и нетривиальные заморочки.

Внешние печатные формы БСП Дополнительные отчеты и обработки

См. также

Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Программист Руководитель проекта Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP, УНФ, КА и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы. Может выполнять свертку сразу нескольких баз данных и выполнять их автоматически без непосредственного участия пользователя. Решение в Реестре отечественного ПО

8400 руб.

20.08.2024    16430    113    51    

115

Инструменты администратора БД Инструментарий разработчика Роли и права Программист Платформа 1С v8.3 1C:Бухгалтерия Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

15000 руб.

10.11.2023    12362    49    33    

69

Инструменты администратора БД Роли и права Системный администратор Программист Пользователь 8.3.14 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Документооборот 1С:Зарплата и кадры государственного учреждения 3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Роли… Вы тратите много времени и сил на подбор ролей среди около 2400 в ERP или 1500 в Рознице 2, пытаясь понять какими правами они обладают? Вы все время смотрите права в конфигураторе или отчетах чтоб создать нормальные профили доступа? Вы хотите наглядно видеть какие права дает профиль и редактировать все в простом виде? А может хотите просто указать подсистему и дать права на просмотр и добавление на объекты и не лезть в дебри прав и чтоб обработка сама подобрала нужные роли? Все это теперь стало возможно! Обновление от 18.09.2024, версия 1.2

18000 руб.

06.12.2023    11292    48    8    

78

Закрытие периода Инструменты администратора БД Корректировка данных Бухгалтер Пользователь Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Расширение «Оперативное проведение» в 4 раза уменьшает время проведения документов и закрытия месяца. Является комплексным решением проблем 62 и 60 счетов. Оптимизирует проведение при включенной функциональной опции «Раздельный учет НДС». Используется в более 10 организациях уже 2 года. Совместимо с конфигурацией Бухгалтерия 3.0 (+КОРП).

14400 руб.

29.04.2020    34165    109    152    

75

БСП (Библиотека стандартных подсистем) Программист Платные (руб)

Синтакс-помощник БСП - cправочник по библиотекам стандартных подсистем и электронных документов. В состав справочника входит описание экспортных процедур и функций, размещенных в областях кода ПрограммныйИнтерфейс БСП и БЭД.

1800 руб.

21.11.2024    4233    17    15    

20

Инструменты администратора БД Системный администратор Программист Платформа 1С v8.3 1C:Бухгалтерия Платные (руб)

Брандмауэр для сервера 1С включает в себя управление возможностью начала и возобновления сеансов пользователей по различным условиям, ограничение общего числа возможных сеансов для работы с информационной базой, резервирование возможности работы с информационной базой определенных польззователей, запрет запуска нескольких сеансов для пользователя, журнализация событий начала (возобновления) и завершения (гибернации) сеансов, ведение списка активных сеансов для информационных баз кластера серверов

3600 руб.

06.02.2017    32822    145    18    

51

Архивирование (backup) Инструменты администратора БД Платформа 1С v8.3 Управляемые формы 1C:Бухгалтерия 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Управление торговлей 11 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Данная разработка позволит решить вопрос с резервным копированием Ваших баз в автоматическом режиме, расположенных на сервере 1С. Система умеет ставить блокировки на вход, блокировать фоновые задания, принудительно отключать сеансы пользователей. И все это система делает в автоматически при создании бэкапа (или через команду). Выгрузка происходит в родной формат 1С - .dt. Так же система умеет архивировать данные выгрузки с установкой пароля. Умеет менять расширение файла zip или dt на любое указанное вами, что позволит сохранить выгрузки от шифровальщика. Может удалять старые копии выгрузок, оставляя указанное количество резервных копий, начиная с самой поздней. Только для WINDOWS!

6000 руб.

06.11.2012    74003    629    45    

88
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Поручик 4665 11.02.15 07:20 Сейчас в теме
Всё давно придумано http://infostart.ru/public/181707/ , а сама идея идёт со времён расцвета УТ 10.3 http://infostart.ru/public/75166/
3. Yashazz 4809 11.02.15 09:40 Сейчас в теме
(1), Поручик, спасибо. Конечно, были подозрения, что идея - баян) В данном случае делюсь с коллегами исключительно реализацией под нынешние БСП, никак не "ноу-хау"))) Пардон, сбаянил)

(2) Так и я по основной работе сижу на режиме совместимости 8.1 в очень толстом клиенте... Это так, результат небольших левых работ.
2. DoctorRoza 11.02.15 08:25 Сейчас в теме
М-да!! Люди БСП юзают, тонкие клиенты всякие .. а я сижу в древней УПП 1.2, толстый клиент .. гоняю! :(
Gureev; smit1c; +2 Ответить
7. mbreaker 1418 12.02.15 15:44 Сейчас в теме
(2) DoctorRoza, прямо так и напрашивается дополнить фразой "И бед не знаю, в отличие от вас!" :)))))
ixijixi; ybatiaev; +2 Ответить
9. DoctorRoza 13.02.15 08:26 Сейчас в теме
(7) mbreaker, не соглашусь! Нет! Конечно, намного меньше проблем и заморочек с решением задач. Но, новые технологии нужно изучать, тем более 8.3.6 на подходе. :|
10. Swetlana 26 13.02.15 09:00 Сейчас в теме
(9) DoctorRoza, да ктож вам мешает то? Вместо вас никто этого делать не будет ;)
Ну или ... идите во франч, они загрузят по самое ...любят они ставить изощрённые задачи. )))
4. DAnry 9 11.02.15 17:53 Сейчас в теме
М-да!! два раза! А в старой доброй 8.2 с обычным НЕ управляемым интерфейсом всё намного проще...
5. vandalsvq 1598 12.02.15 01:35 Сейчас в теме
Почему используешь "Сообщить" вместо "СообщениеПользователю" (или БСП-шной процедуры ОбщегоНазначенияКлиентСервер.СообщитьПользователю)?
Понимаю не критично, но все-таки. Из-за возможности использовать статус сообщения?

Цитата "Методические рекомендации 1С"
При использовании в конфигурации Библиотеки стандартных подсистем рекомендуется использовать процедуру СообщитьПользователю общего модуля ОбщегоНазначенияКлиентСервер, которая работает с объектом СообщениеПользователю.

6. Yashazz 4809 12.02.15 10:10 Сейчас в теме
(5) vandalsvq, да просто привычка. В БСП-то эта функция есть, а я уж привык делать универсалы. Только и всего.
8. Yashazz 4809 12.02.15 18:51 Сейчас в теме
По здравому размышлению советую добавить
и не Параметры.Свойство("ИдентификаторКоманды")
в условие вызова всего механизма в ПриОткрытии, т.к. иначе глобальная обработка в режиме открытия формы будет почём зря вызывать автообновление.
11. jobkostya1c_ERP 100 16.02.15 21:32 Сейчас в теме
Ну если уже
из общения с крайне малограмотными клиентами, для которых в БП 3.0 добраться до справочника "Дополнительные отчёты и обработки" было нереально
то точно с такими клиентами беда.
13. Поручик 4665 16.04.15 14:09 Сейчас в теме
(11) Я все свои внешние формы с авторегистрацией делаю. Не потому, что лень или малограмотный, а для ускорения отладки. Ну и для удобства. Открыл и ВПФ зарегистрировалась сама.
jobkostya1c_ERP; +1 Ответить
12. Patriot1S 101 16.04.15 13:45 Сейчас в теме
(0) Для очень ленивых предлагаю http://infostart.ru/public/343316/
jobkostya1c_ERP; +1 Ответить
Оставьте свое сообщение