Продвинутый курс. Занятие №2
Приступайте ко второму занятию продвинутого курса.
ps. На этой странице не нужно отчитываться о выполнении ДЗ.
Приступайте ко второму занятию продвинутого курса.
ps. На этой странице не нужно отчитываться о выполнении ДЗ.
(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)
ваш отчет принят.
"
Блок 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.
Путем выгрузки из «Новой ИБ » продв.курса и загрузки содана еще одна база для работы нового разработчика Иванов. В «Новой ИБ » создано хранилище для совместной работы по модификации конфигурации. База пользователя Иванов была подключена к хранилищу . Проведены все тестовые действия по совместной работе двух пользователей с хранилищем.
Здравствуйте. tsergey, ваш отчет принят.
Хранилище поднял, без проблем – работаю с ним каждый день.
Настройки для технологического журнала получились следующие (Для файловой базы.):
<?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>
dmnblg, ваш отчет принят.