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

Публикация № 329326

Администрирование - Администрирование данных 1С

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

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

Идея родилась из общения с крайне малограмотными клиентами, для которых в БП 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. Поручик 4409 11.02.15 07:20 Сейчас в теме
Всё давно придумано http://infostart.ru/public/181707/ , а сама идея идёт со времён расцвета УТ 10.3 http://infostart.ru/public/75166/
3. Yashazz 3263 11.02.15 09:40 Сейчас в теме
(1), Поручик, спасибо. Конечно, были подозрения, что идея - баян) В данном случае делюсь с коллегами исключительно реализацией под нынешние БСП, никак не "ноу-хау"))) Пардон, сбаянил)

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

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

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

См. также

Как я начал администрировать сервер 1С: Предприятие 8.3 с телефона Промо

Администрирование данных 1С Мобильная разработка v8 Бесплатно (free)

Развитие инструментов управления кластером серверов 1С:Предприятие 8.3.

14.04.2017    59055    0    user700211_a.straltsou    27    

Полезные функции БСП (Часть 2)

БСП (Библиотека стандартных подсистем) v8 1cv8.cf Россия Бесплатно (free)

Список полезных функций из состава Библиотеки стандартных подсистем 3.1.

10.03.2020    9849    0    user5300    15    

Сходство Джаро - Винклера. Нечеткое сравнение строк

Универсальные функции v8 Россия Бесплатно (free)

В области информатики и статистики сходство Джаро - Винклера представляет собой меру схожести строк для измерения расстояния между двумя последовательностями символов. В публикации рассмотрены некоторые особенности алгоритма, и представлен вариант его реализации на языке 1С.

25.12.2019    6300    0    brooho    17    

[БСП] Внешняя печатная форма: как перед печатью выводить форму настроек

Печатные формы документов БСП (Библиотека стандартных подсистем) v8 КА2 Бесплатно (free)

Во внешней печатной форме перед печатью нужно выводить форму настроек. Для примера рассматриваю печатную форму "Акт сверки взаимных расчетов " .

19.12.2019    9693    0    John_d    8    

Копирование числовых ячеек из 1С в Excel Промо

Загрузка и выгрузка в Excel Администрирование данных 1С v8 1cv8.cf Бесплатно (free)

Решение проблемы, когда значения скопированных ячеек из табличных документов 1С в Excel воспринимаются последним как текст, т.е. без дополнительного форматирования значений невозможно применить арифметические операции. Поводом для публикации послужило понимание того, что целое предприятие с более сотней активных пользователей уже на протяжении года мучилось с такой, казалось бы на первый взгляд, тривиальной проблемой. Варианты решения, предложенные специалистами helpdesk, обслуживающими данное предприятие, а так же многочисленные обсуждения на форумах, только подтвердили убеждение в необходимости описания способа, который позволил мне качественно и быстро справиться с ситуацией.

15.01.2019    21594    0    itriot11    23    

Шпаргалка (БСП). Добавление в новый документ механизма печати дополнительных печатных форм

Печать БСП (Библиотека стандартных подсистем) v8 1cv8.cf Бесплатно (free)

Постоянно приходится вспоминать, как добавить механизм печати (БСП) в новый документ. Поэтому решил написать шпаргалку.

10.10.2019    14931    0    John_d    14    

От чего можно отказаться при разработке расширений 1С

Практика программирования БСП (Библиотека стандартных подсистем) Расширения v8 Бесплатно (free)

Разработка расширений 1С и оптимизация через механизм БСП: Дополнительные отчеты и обработки.

23.09.2019    10029    0    independ    24    

Как настроить сервер 1С по умолчанию для ПРОФ лицензии после 10.09.2019

Администрирование данных 1С v8 Бесплатно (free)

Здесь мы собираем все данные по настройкам сервера для работы ПРОФ лицензии.

11.09.2019    64806    0    Infostart    90    

Отчет по размерам таблиц в базе данных как одно из средств анализа проблем Промо

Статистика базы данных v8 1cv8.cf Бесплатно (free)

Зачастую, когда пользователи обращаются с жалобами на производительность, бывает полезно посмотреть на отчет по размерам таблиц базы данных. Он может отчетливо показать ряд распространенных проблем, устранение которых даст существенный эффект. Приведенная информация вряд ли покажется чем-то новым для опытных специалистов.

21.07.2015    32806    0    Aleksey.Bochkov    15    

Использование Zabbix для сбора информации о серверных вызовах и управляемых блокировках с сервера 1С Предприятия, работающего на платформе GNU/Linux

Администрирование данных 1С Zabbix v8 Бесплатно (free)

Описанные в данном опусе механизмы ни в коей мере не противопоставляются тому, что реализует КИП от 1С или какие-либо другие инструменты (решения)! Это всего лишь еще один взгляд на "проблему", который может быть полезен в некоторых ситуациях.

10.09.2019    17450    0    Sloth    24    

Нарушение целостности системы

Администрирование данных 1С v8 1cv8.cf Россия Бесплатно (free)

Причины возникновения ошибки "Обнаружено нарушение целостности системы" и способы ее устранения.

07.09.2019    20969    0    Rain88    18    

Свой веб интерфейс к 1С: побеждаем CORS на IIS, сохраняя авторизацию

WEB Администрирование данных 1С v8 Бесплатно (free)

Если "веб морда" расположена не по тому же адресу, что и публикация 1С (что часто бывает, например, при разработке, публикация 1С на http://localhost/1c, а разрабатываемое веб-приложение на http://localhost:8080) или, например, мы заходим на веб приложение то по ip адресу, то по имени сервера, или просто веб сервер и сервер, на котором опубликована 1С - это разные сервера, то для большинства запросов от браузера к 1С срабатывает политика CORS, которая заключается в том, что браузер сначала посылает запрос OPTIONS, на который сервер должен ответить определенным образом, заголовками, содержащими разрешения, а потом уже (если разрешение есть), браузер посылает основной запрос. В случае, когда в публикации 1С (default.vrd) жестко прописан логин и пароль, разрулить ситуацию можно средствами 1С. В случае же, когда нужно сохранить авторизацию (или используется стандартный интерфейс odata), начинаются проблемы.

20.08.2019    10482    0    Fragster    9    

Использование классов .Net в 1С для новичков Промо

Практика программирования Разработка внешних компонент Универсальные функции v7.7 v8 Бесплатно (free)

Руководство для новичков. Написав статью http://infostart.ru/public/238584/, я понял, что многие не понимают того, что написано. Поэтому в этой статье постараюсь более подробно остановиться на азах и без кода на вражеском языке (C#)

27.01.2016    73372    0    Serginio    108    

Отслеживание выполнения фонового задания

Практика программирования Универсальные функции Разработка v8 1cv8.cf Бесплатно (free)

Запуск фонового задания из модуля внешней обработки. Отслеживание выполнения задания в виде прогресса, расположенного на форме.

17.08.2019    28218    0    ids79    16    

Уверенное обновление

Администрирование данных 1С v8 Бесплатно (free)

Уверенное обновление. Анализ файла ОтчетОСравнении.txt. Bash

18.07.2019    11426    0    vasilev2015    36    

Почему Вы не обслуживаете итоги?

Администрирование данных 1С v8 Бесплатно (free)

Небольшая заметка по обслуживанию итогов. Все ли Вы делаете правильно?

04.07.2019    18151    0    YPermitin    27    

Чем PostgreSQL может быть полезен разработчику 1С Промо

Администрирование данных 1С v8 1cv8.cf Бесплатно (free)

В статье будут рассмотрены примеры, которые могут оказаться полезными в повседневной работе разработчика 1С и не только: как можно сделать снимок рабочей базы без файла резервной копии, как можно эффективно использовать табличные пространства СУБД PostgreSQL, а также как организовать простой и удобный доступ к админке СУБД посредством мобильных устройств.

20.12.2018    22077    0    Shmell    38    

Подсистема "Варианты отчетов". Используете ли Вы ее правильно?

Работа с интерфейсом БСП (Библиотека стандартных подсистем) v8 1cv8.cf Бесплатно (free)

Небольшая история про использование подсистемы "Варианты отчетов" из БСП. Используете ли Вы ее правильно?

04.06.2019    37213    0    YPermitin    52    

За 5 шагов добавляем мониторинг счетчиков производительности серверов MS SQL и 1С

Статистика базы данных Производительность и оптимизация (HighLoad) v8 Бесплатно (free)

Мы расскажем и покажем, как добавить данные счетчиков производительности серверов 1С и MS SQL в нашу базу мониторинга за 15 минут. Приведем список наиболее важных из них, опишем основные особенности.

28.05.2019    17697    0    ivanov660    9    

Подсистема БСП «Управление доступом», основные объекты и регистры

БСП (Библиотека стандартных подсистем) Роли и права v8 v8::УФ v8::Права 1cv8.cf Бесплатно (free)

Основные принципы работы подсистемы «Управление доступом» из состава БСП. Виды доступа, ограничение доступа на уровне записей. Описание основных объектов и регистров, используемых подсистемой.

23.05.2019    19544    0    ids79    8    

Зачем в 1С нужно периодически пересчитывать итоги по регистрам? Промо

Администрирование данных 1С v8 1cv8.cf Бесплатно (free)

Мы часто слышим рекомендацию о том, что пересчет итогов нужно проводить регулярно и эта операция проводит к улучшению производительности, но что скрывается за этой процедурой и какие именно проблемы решаются?

10.03.2013    218243    0    Aleksey.Bochkov    140    

Опыт обновления до 8.3.14 - лицензии и утилита ring

Администрирование данных 1С v8 Бесплатно (free)

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

29.04.2019    39501    0    Sander80    30    

Практика перехода на Linux и Postgres в небольшой компании (10 пользователей)

Администрирование данных 1С v8 1cv8.cf Бесплатно (free)

Почему я решил поставить давнему клиенту Linux + Postgres вместо Windows + MS SQL? Что меня останавливало раньше?

22.04.2019    27843    0    starik-2005    169    

Доработка проведения типовых документов в УТ 11.4, КА 2.4, ЕРП 2.4

Практика программирования Универсальные функции Разработка v8 v8::УФ ERP2 УТ11 КА2 Россия УУ Бесплатно (free)

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

22.03.2019    16591    0    ids79    16    

Универсальные функции с примерами использования Промо

Универсальные функции v8 Бесплатно (free)

14 универсальных функций, с примерами использования - для обычного и управляемого интерфейса

26.02.2016    40446    0    unichkin    38    

Cannot insert duplicate key. Кто виноват и что делать

Распределенная БД (УРИБ, УРБД) Тестирование и исправление v8 Бесплатно (free)

Ошибка "CANNOT INSERT DUPLICATE KEY" в базах 1С и связанная с ней "магия".

25.02.2019    19902    0    YPermitin    32    

Возможности типовых шаблонов ограничения доступа на уровне записей (RLS)

Практика программирования БСП (Библиотека стандартных подсистем) Роли и права v8 v8::Права Бесплатно (free)

Краткий обзор применения типовых шаблонов ограничения доступа на уровне записей в конфигурациях, созданных на базе БСП: #ПоЗначениям, #ПоНаборамЗначений, #ПоЗначениямРасширенный, #ПоЗначениямИНаборамРасширенный

03.02.2019    34557    0    ids79    9    

1С и Яндекс.Облако Compute Cloud. Вдоль и поперек

Администрирование данных 1С v8 Бесплатно (free)

Бороться и искать. Найти и перепрятать. Достаточно популярная поговорка во времена Союза. Вот и сейчас, те у кого сервер 1С в локальной сети мечтают вынести его в облако, а те у кого в облаке прикупить свой в локальную сеть. Тестирование Яндекс.Облако Compute Cloud для 1С Предприятие оставило у меня приятное впечатление. Возможно кто-то повторит его и внесет больше ясности в настройки виртуальных серверов, использованию API и так далее. Пока же пользуйтесь чем я послал. Интересующихся прошу под кат…

20.01.2019    16797    0    capitan    29    

Минимализмы 3 Промо

Практика программирования Универсальные функции v8 Бесплатно (free)

Очередная серия "минимализмов" [http://infostart.ru/public/306536/, https://infostart.ru/public/460935/]. Также, как и в предыдущих статьях, здесь приведена подборка коротких оригинальных авторских решений некоторых задач. Ранее эти решения были разбросаны по моим комментариям к чужим публикациям.

19.02.2018    44888    0    ildarovich    45    

Малоизвестная хитрость определения модуля и номера строки при возникновении исключения (без запуска отладки и конфигуратора). Несколько очень удобных, но малоиспользуемых возможностей работы в конфигураторе

Тестирование и исправление v8 Россия Бесплатно (free)

В статье описана возможность получить место возникновения исключения при работе пользователей без участия конфигуратора. Подробно описаны еще некоторые очень полезные приемы при работе в отладке.

17.01.2019    26215    0    PoZiTiFFF    53    

Восстановление базы 1С, ошибка источника потока

Тестирование и исправление v8 Бесплатно (free)

Очередной кирпичик в основу решения проблемы восстановления работоспособности базы после динамического обновления.

09.01.2019    18783    0    idle    25    

Сервер 1С:Предприятие на Ubuntu 16.04 и PostgreSQL 9.6, для тех, кто хочет узнать его вкус. Рецепт от Капитана

Администрирование данных 1С v8 Бесплатно (free)

Если кратко описать мое отношение к Postgres: Использовал до того, как это стало мейнстримом. Конкретнее: Собирал на нем сервера для компаний среднего размера (до 50 активных пользователей 1С). На настоящий момент их набирается уже больше, чем пальцев рук пары человек (нормальных, а не фрезеровщиков). Следуя этой статье вы сможете себе собрать такой же и начать спокойную легальную жизнь, максимально легко сделать первый шаг в мир Linux и Postgres. А я побороться за 1. Лучший бизнес-кейс (лучший опыт автоматизации предприятия на базе PostgreSQL). Если, конечно, статья придется вам по вкусу.

25.12.2018    35782    2    capitan    147    

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

Практика программирования БСП (Библиотека стандартных подсистем) v8 1cv8.cf Бесплатно (free)

Конфигурации в 1С пишутся для пользователей и по их «правилам» (клиент всегда прав), поэтому в основном все конфигурации разные, но достаточно часто в них используются одни и те же объекты, которые незначительно отличаются друг от друга. Действительно, сложно представить конфигурацию, где не фигурировали бы такие сущности как номенклатура, контрагенты, пользователи, валюта. И некоторые задачи являются типичными: возможность базового разграничения прав, работа с электронной почтой, задачи пользователям и т.д. Но...!

03.03.2017    65310    0    V.Stavinsky    21    

Заметки про лицензии 1С

Администрирование данных 1С v8 Бесплатно (free)

Решил собрать шпаргалку по лицензиями 1С о разных нюансах, с которыми успел столкнуться.

15.12.2018    20439    0    MrWonder    24    

Тонкости настройки IIS

Администрирование данных 1С v8 v8::УФ 1cv8.cf Бесплатно (free)

Тонкости и возможные проблемы при настройке IIS для работы с 1C. С учетом обновления платформ большинство инструкций стало неактуально и отнимает лишние время, заставляя выполнять ненужные пункты.

11.12.2018    27193    0    kas205    23    

Универсальные функции ЗУП 3.1 / ЗКГУ 3.1, которые помогут в разработке

Универсальные функции Зарплата Управление персоналом (HRM) Зарплата v8 v8::СПР ЗКГУ3.0 ЗУП3.x БУ Бесплатно (free)

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

14.11.2018    74665    0    GeterX    112    

Создание пользователя СУБД MS SQL Промо

Администрирование данных 1С v8 Бесплатно (free)

Создание пользователя MS SQL для развертывания базы 1С.

15.02.2017    38571    0    hayroff    9    

Когда 1С падает в дамп

Администрирование данных 1С v8 Бесплатно (free)

Мой опыт устранения проблемы, при которой вылетала платформа 1С.

11.10.2018    50106    0    987ww765    42    

[Шпаргалка] Несколько версий сервера 1С на одном сервере (компьютер)

Администрирование данных 1С v8 1cv8.cf Бесплатно (free)

Публикация-шпаргалка. Если у вас возникала необходимость в размещение нескольких серверов 1С разных версий на одном сервере (компьютере).

14.05.2018    25043    0    rpgshnik    27    

Несколько версий сервера 1С на одном компьютере

Администрирование данных 1С v8 Бесплатно (free)

Как установить несколько экземляров сервера 1С на один компьютер. Как установить несколько служб агента 1С на один сервер? Как запустить сервера разных платформ на одном компьютере.

18.04.2018    76806    0    spezc    85    

Выполнение произвольного кода в фоновых заданиях Промо

Универсальные функции v8 Бесплатно (free)

Если надо быстро провести 100`000 документов...

13.01.2016    24230    4    unichkin    13    

Запуск Apache 2.4 с модулем 1С внутри Docker контейнера

Администрирование данных 1С WEB docker Apache v8 Бесплатно (free)

Про Apache и про Linux слышали, наверное, все. А вот про Docker пока нет, но он сильно набирает популярность последнее время и не зря. Поделюсь своим опытом и дам пошаговую инструкцию настройки веб-сервера Apache с модулем 1С внутри Docker контейнера на Linux хосте. При этом сам сервер 1С может находиться совсем на другой машине и на другой операционной системе. Это не важно, главное чтобы Apache смог достучаться до сервера 1С по TCP. В статье дам подробное пояснение по каждой используемой команде со ссылками на документацию по Docker, чтобы не создавалось ощущение непонятной магии. Также прилагаю git репозиторий с описанием всей конфигурации, можете попробовать развернуть у себя буквально за 10 минут.

04.04.2018    27511    0    petr.myazin    35    

Сервер администрирования кластера серверов 1C:Предприятия и deployka

Сервисные утилиты Администрирование данных 1С v8 Бесплатно (free)

В данной статье познакомимся с сервером администрирования кластера серверов 1С:Предприятия, а конкретно с утилитами rac.exe и ras.exe, а также программой deployka, с помощью которых становится возможным администрирование кластера серверов 1С:Предприятие из командной строки.

04.04.2018    57706    0    Tavalik    35    

О лицензиях 1С

Администрирование данных 1С v8 Россия Бесплатно (free)

Разбираем вопросы по получению и переполучению лицензии 1С.

30.03.2018    118747    0    D_e_X_T_e_R    166    

Все, что надо знать о технологической платформе 1С:Предприятие: компоненты, архитектуры, операционные системы, лицензии Промо

Администрирование данных 1С v8 Бесплатно (free)

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

19.12.2015    70527    0    barelpro    50    

1C + Linux + PostgreSQL + Apache

Администрирование данных 1С Apache v8 Бесплатно (free)

Дружим 1С с Линуксом ИЛИ Установка окружения для работы с 1С на Линуксе под Постгресом и Апачем (в 2020-м году).

26.03.2018    41004    0    SerVer1C    50    

Таблица значений в Таблицу HTML - функция с возможностью настройки цвета шапки, заголовков, выравнивания и размера колонок

Практика программирования Универсальные функции v8 1cv8.cf Бесплатно (free)

Если вам нужно быстро получить таблицу значений в виде строкового типа 1С в формате HTML, вам поможет эта функция, включена возможность автоматического вывода столбца пункт по порядку.

22.12.2017    24471    0    rpgshnik    22    

Параллельное использование нескольких версий COM control (несколько версий платформ)

Администрирование данных 1С v8 Бесплатно (free)

Краткая инструкция по использованию нескольких версий com control.

13.10.2017    22243    0    qvvert    32    

Добавление команд печати в конфигурациях на БСП 2.4.3 (в частности, в самописных документах в Бухгалтерии 3.0 после релиза 3.0.52.35)

Печатные формы документов Практика программирования БСП (Библиотека стандартных подсистем) v8 v8::БУ БП3.0 Россия Бесплатно (free)

В статье https://infostart.ru/public/237013/ пользователя nick max рассматривался список действий для подключения команд печати в Бухгалтерии 3.0, работающей на БСП 2.3.6. В новом релизе Бухгалтерии 3.0.52.35 от 15.09.2017г. стала использоваться БСП 2.4.3, из-за чего произошли изменения в процедурах общих модулей, связанных с механизмом печати, и в процедурах их вызова в формах документов и в формах списков. Рассмотрим их.

18.09.2017    64896    0    bugtester    49