Продвинутый курс. Занятие №2

Приступайте ко второму занятию продвинутого курса.

ps. На этой странице не нужно отчитываться о выполнении ДЗ.

комментариев 7 на “Продвинутый курс. Занятие №2”

  1. (?xml version="1.0" encoding="UTF-8"?)
    (config xmlns="http://v8.1c.ru/v8/tech-log")
     (dump create="false"/)
     (log location="E:\Журнал\5" history="168")
      (event)
       (eq property="name" value="sdbl"/)
      (/event)
      (property name="context")
       (event)
        (eq property="name" value="sdbl"/)
        (eq property="context" value="Система.ПолучитьФорму : Документ.ПоступлениеТоваровИУслуг.Форма.ФормаСписка; Документ.ПоступлениеТоваровИУслуг.ФормаОбъекта"/)
       (/event)
      (/property)
      (property name="usr")
       (event)
        (eq property="name" value="sdbl"/)
       (/event)
      (/property)
     (/log)
    (/config)
  2.  Моя настройка технологического журнала. Хоть и стоит условие на context, но всё равно записывает открытие форм всех документов. Платформа 8.2.15.301"

     
     
     
       
     
     
       
       
       
       
     
     
       
       
       
     
     
    "
  3. Блок 0 задание 2.
    Добрый день! Предоставляю отчет по ДЗ  №2 Блока 0.
     
    Задание №1
    Для фиксирования  обращений  пользователей  к  форме докум. РеализацияТоваровИУслуг  используется внешняя обработка  З_4_ДоступКФормеРеализации_В_ЖР.
    <code>
    &НаКлиенте
    Процедура СменитьДоступ(Команда)
                   
                    ОчиститьСообщения();
                   
                    УстановитьДоступНаСервере(Установить);
                   
    КонецПроцедуры
    &НаСервереБезКонтекста
    Процедура УстановитьДоступНаСервере(Установить)
     
                    Доступ=Новый Массив;
                   
                    ПоляДоступа=Новый Массив;
                    ПоляДоступа.Добавить(“Ссылка”);
                     //ПоляДоступа.Добавить(“”);
     
                    ПоляРегистрации=Новый Массив;
                    ПоляРегистрации.Добавить(“Ссылка”);
                    ПоляРегистрации.Добавить(“Товары”);
                   
                    Описание=Новый ОписаниеИспользованияСобытияДоступЖурналаРегистрации;
                    Описание.Объект=”Документ.РеализацияТоваровИУслуг”; 
                    //Описание.Объект=”Документ.ПоступлениеТоваровИУслуг”;
                    Описание.ПоляДоступа = ПоляДоступа;
                    Описание.ПоляРегистрации=ПоляРегистрации;
                   
                    Доступ.Добавить(Описание);
                   
                    Использование=Новый ИспользованиеСобытияЖурналаРегистрации;
                    Использование.Использование=Истина;
                    Использование.ОписаниеИспользования=Доступ;
                   
                    Если Установить Тогда
                       ВидДоступа= “_$Access$_.Access” ;
                       Сообщить(“Установлен контроль доступа к Док.Реализация”);
                    Иначе 
                       ВидДоступа= “_$Access$_.AccessDenied” ;
                       Сообщить(“ЗАПРЕЩЕН контроль доступа к Док.Реализация”)
                    КонецЕсли;
                   
                    УстановитьИспользованиеСобытияЖурналаРегистрации(ВидДоступа,Использование);
    КонецПроцедуры // УстановитьДоступНаСервере()
     
    </code>
     
    Для  получении отчета о действиях пользователей в базе  применяются две внешние обработки.
    Внешняя обработка  З_3_ПрочитатьСобытиеИзЖР  подключает внешнюю обработку  МакетДляПрочитатьСобытиеИзЖР ,которая формирует отчет о  действиях  пользовтелей в базе.
    Вн.обработка  З_3_ПрочитатьСобытиеИзЖР  .
    <code>
    &НаКлиенте
    Процедура ПрочитатьСобытие(Команда)
                    ТекПараметры=Новый Структура;
                    ТекПараметры.Вставить(“Режим”,Режим);
                    ТекПараметры.Вставить(“ВыбПериод”,ВыбПериод);
                    АдресХранилища=””;
                    МИмяОбработки=”C:\ut\1c_prodw\ПродвВнОбработки\МакетДляПрочитатьСобытиеИзЖР.epf”;
                    ПоместитьФайл(АдресХранилища,МИмяОбработки,,Ложь);
                    ТекОбработка=ПодключитьВнешнююОбработку(АдресХранилища);
                   
                    ОткрытьФорму(“ВнешняяОбработка.”+ТекОбработка+”.Форма”,ТекПараметры);
                   
                    //ТекОбработка=”МакетДляПрочитатьСобытиеИзЖР” ;
                    //ОткрытьФорму(“Обработка.”+ТекОбработка+”.Форма”,ТекПараметры);
                   
    КонецПроцедуры      //  ПечФорма
    &НаСервере
    Функция ПодключитьВнешнююОбработку(АдресХранилища)
                     Возврат ВнешниеОбработки.Подключить(АдресХранилища);
    КонецФункции
    </code>
     Вн.обработка  МакетДляПрочитатьСобытиеИзЖР
    <code>
     
     
    &НаКлиенте
    Процедура ПрочитатьСобытие(Режим,ВыбПериод)  //   Команда
                   
                    ПечФорма=ПрочитатьСобытиеНаСервере(Режим,ВыбПериод);
                    Если ТипЗнч(ПечФорма)=Тип(“ТабличныйДокумент”)           Тогда
                                   ПечФорма.ФиксацияСверху=5;
                        ПечФорма.Показать();
                    КонецЕсли;
                   
                    ПечФорма= Неопределено;
                   
                    Закрыть();
                   
    КонецПроцедуры      //  ПечФорма
     
    &НаСервереБезКонтекста
    Функция  ПрочитатьСобытиеНаСервере(Режим,ВыбПериод)
                   
                    Таблица=Новый ТаблицаЗначений;
                   
                    //ТекДата=Дата(2012,04,22,17,37,06);
                   
                    МДатаНачала= ВыбПериод.ДатаНачала; 
                    МДатаОкончания=ВыбПериод.ДатаОкончания;
     
                    Фильтр=Новый Структура;
                    Если Режим= “ИзменениеЦенОтгрузки” Тогда
                        Фильтр.Вставить(“Событие”, “ИзменениеЦенОтгрузки” );
                    ИначеЕсли Режим= “РеализацияТоваровИУслуг” Тогда
                                   Фильтр.Вставить(“Событие”, “_$Access$_.Access” );
                                   Фильтр.Вставить(“ДатаНачала”,МДатаНачала);
                                   Фильтр.Вставить(“ДатаОкончания”,МДатаОкончания);
                    ИначеЕсли Режим= “ПоступлениеТоваровИУслуг” Тогда     
                                   Фильтр.Вставить(“Событие”, “_$Access$_.Access” );
                                   Фильтр.Вставить(“ДатаНачала”,МДатаНачала);
                                   Фильтр.Вставить(“ДатаОкончания”,МДатаОкончания);
                    КонецЕсли;
                                  
                    ВыгрузитьЖурналРегистрации(Таблица,Фильтр);
                   
                    Если Таблица.Количество()=0 Тогда
                        Возврат Неопределено;
                    КонецЕсли;
                    Если Режим= “ИзменениеЦенОтгрузки” Тогда
                                   Таблица.Сортировать(“ИмяПользователя”);
                    Иначе 
                                   Таблица.Сортировать(“ИмяПользователя,Дата”);
                    КонецЕсли;
                   
                    ТабДок=Новый ТабличныйДокумент;
                   
                    МИмяОбработки=”C:\ut\1c_prodw\ПродвВнОбработки\МакетДляПрочитатьСобытиеИзЖР.epf”;
                    ТекОбработка=ВнешниеОбработки.Создать(МИмяОбработки) ;
                   
                    ТекМакет=ТекОбработка.ПолучитьМакет(“Макет”);
                   
                    //ТекМакет= Обработки.З_3_ПрочитатьСобытиеИзЖР.ПолучитьМакет(“Макет”); Макет.
                    //ТекМакет= ПолучитьОбщийМакет(“МакетДляЖР”);
     
                    ОбластьШапка=ТекМакет.ПолучитьОбласть(“Шапка”);
                    ОбластьСтрока=ТекМакет.ПолучитьОбласть(“Строка”);
                   
                    МНазваниеОтчета=”Контроль событий : “+Режим;
                    ОбластьШапка.Параметры.МНазваниеОтчета=МНазваниеОтчета;
                   
                    ТабДок.Вывести(ОбластьШапка);
                                  
                    Для каждого ТекСтрока Из Таблица Цикл
                         МИмяПользователя=ТекСтрока.ИмяПользователя;
                                    МДанные= ТекСтрока.Данные ;                 //?(ТекСтрока.Данные=Неопределено,””,Строка(ТекСтрока.Данные));
                                    МКомментарий=ТекСтрока.Комментарий;
                                    
                                    ОбластьСтрока.Параметры.ИмяПользователя=МИмяПользователя;
                                    ОбластьСтрока.Параметры.Комментарий=МКомментарий;
                                    
                                    ВывСтроки=Истина;
                                    Если Режим= “ИзменениеЦенОтгрузки”  Тогда
                                                    ОбластьСтрока.Параметры.Данные=МДанные;
                                    Иначе
                                                    ТекЗначение=””;
                                                    Если ТипЗнч(МДанные)=Тип(“Структура”) Тогда
                                                                    ТаблицаДанных=””;
                                                                    МДанные.Свойство(“Данные”,ТаблицаДанных);
                                                                    Если ТипЗнч(ТаблицаДанных)=Тип(“ТаблицаЗначений”) Тогда
                                                                                   Если ТаблицаДанных.Количество()<>0 Тогда
                                                                                                  ТаблКолонка=ТаблицаДанных.Колонки.Получить(0);
                                                                                                   МИмя= ТаблКолонка.Имя;
                                                                                                   Если Найти(МИмя,Режим)>0 Тогда
                                                                                                                   ТаблСтрока=ТаблицаДанных.Получить(0);
                                                                                                                   ТекЗначение=ТаблСтрока[МИмя];
                                                                                                                   МКомментарий= ТекСтрока.Дата;
                                                                                                   КонецЕсли;
                                                                                   КонецЕсли;
                                                                    КонецЕсли;
                                                    КонецЕсли;
                                                    Если ТекЗначение<>”” Тогда
                                                        ОбластьСтрока.Параметры.Данные=ТекЗначение;
                                                                    ОбластьСтрока.Параметры.Комментарий=МКомментарий;
                                                    Иначе
                                                        ВывСтроки = Ложь;
                                                    КонецЕсли;
                                    КонецЕсли;                                                      
                                    Если ВывСтроки  Тогда
                                       ТабДок.Вывести(ОбластьСтрока);
                                    КонецЕсли;
                     КонецЦикла;
                     ТекОбработка=Неопределено;
                     Возврат ТабДок;
    КонецФункции // ПрочитатьСобытиеНаСервере()
     &НаКлиенте
     Процедура ПриОткрытии(Отказ)
                     ПрочитатьСобытие(Режим,ВыбПериод);
    КонецПроцедуры
    &НаСервере
    Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
                   
                     Режим= Параметры.Режим;
                     ВыбПериод=Параметры.ВыбПериод;
     
     КонецПроцедуры
    </code>
     
    Задание № 2.
    Успешно создан установочный дистрибутив каркасной конфигурации с исходными данными.
    При выполнении инсталляции из дистрибутива создаются шаблоны  конфигураций  пустиой   базы
    И  демо базы с заполненными значениями объектов.
    Задание № 3.
    Путем выгрузки  из «Новой ИБ » продв.курса и загрузки содана еще одна база для работы нового разработчика Иванов. В  «Новой ИБ »  создано хранилище  для совместной работы по модификации конфигурации. База пользователя Иванов  была подключена к хранилищу . Проведены все тестовые действия по совместной работе двух пользователей  с хранилищем.

    • Dobrenko Oleg 25.04.2012 в 12:51

      Здравствуйте. tsergey, ваш отчет принят.

  4. Хранилище поднял, без проблем – работаю с ним каждый день.

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

    <?xml version=”1.0″ encoding=”UTF-8″?>
    <config xmlns=”http://v8.1c.ru/v8/tech-log“>
    <dump create=”false”/>
    <log location=”x:\spec8\techlogs” history=”168″>
    <event>
    <eq property=”name” value=”dbv8dbeng”/>
    <eq property=”func” value=”readfile”/>
    </event>
    <property name=”all”>
    <event>
    <eq property=”name” value=”dbv8dbeng”/>
    </event>
    </property>
    </log>
    </config>