|
v7: Сделать печать журнала регистрации из документа. | ☑ | ||
---|---|---|---|---|
0
Босечка
17.08.12
✎
08:36
|
Бухи просят создать такую печатную форму из документа, в которой бы были все изменения документа (кто его изменял), наподобие журнала регистрации, может кто знает как?
|
|||
1
Karambol
17.08.12
✎
08:39
|
парсить файл 1cv7.mlg
|
|||
2
Галахад
гуру
17.08.12
✎
08:43
|
Лучше не делать.
|
|||
3
SED
17.08.12
✎
08:48
|
||||
4
Босечка
17.08.12
✎
08:49
|
(1) Такого файла я не нашла в каталоге, где база.
(2) Что лучше не делать? |
|||
5
alkov
17.08.12
✎
08:50
|
(4) А в каталоге SYSLOG базы не смотрели?
|
|||
6
Karambol
17.08.12
✎
08:50
|
(4)В SYSLOG лежит
|
|||
7
Красный рассвет
17.08.12
✎
08:50
|
(4) 2. Просто научи бухов пользоваться журналом регистрации
|
|||
8
vcv
17.08.12
✎
08:59
|
У меня примерно так. С использованием 1C++ и Йоксель
[code] Процедура глПросмотрЖурналаРегистрации(Знач Объект) Экспорт Перем ТипОбъекта, ЖурналРегистрации, ДатаСозданияОбъекта, ТаблицаЖурналаРегистрации, СекцияТаблицы; Если ПравоДоступа("Монитор") = 0 Тогда глПредупреждениеСистемыЗащиты("Просмотр журнала регистрации запрещен."); Иначе ТипОбъекта = ТипЗначенияСтр(Объект); Если ТипОбъекта = "ГрупповойКонтекст" Тогда Попытка Объект = Объект.ТекущийДокумент(); Исключение Объект = Объект.ТекущийЭлемент(); КонецПопытки; ТипОбъекта = ТипЗначенияСтр(Объект); КонецЕсли; Если (ТипОбъекта<>"Документ") И (ТипОбъекта<>"Справочник") Тогда глВнутренняяОшибка("Просмотр журнала регистрации не поддерживается для объектов типа """+ТипОбъекта+"""","глПросмотрЖурналаРегистрации"); ИначеЕсли Объект.Выбран()=0 Тогда Предупреждение("Объект не записан. |Перед просмотром журнала регистрации по объекту необходимо его записать."); Иначе Состояние("Чтение журнала регистрации..."); ДатаСозданияОбъекта = ?(ТипОбъекта="Документ",Объект.ДатаСозданияДокумента,ПолучитьПустоеЗначение("Дата")); ЖурналРегистрации = СоздатьОбъект("ПоставщикДанныхЖурналРегистрации"); ЖурналРегистрации.ОткрытьФайл(); ЖурналРегистрации.ПросмотрАрхивов = 0; ЖурналРегистрации.УстановитьПериод(ДатаСозданияОбъекта,ТекущаяДата()); Если ТипОбъекта = "Документ" Тогда ЖурналРегистрации.ИзменитьФильтр(141,Объект.ТекущийДокумент()); Иначе ЖурналРегистрации.ИзменитьФильтр(141,Объект.ТекущийЭлемент()); КонецЕсли; ЖурналРегистрации.УстановитьФильтр(1); ТаблицаЖурналаРегистрации = СоздатьОбъект("Таблица"); ТаблицаЖурналаРегистрации.ИсходнаяТаблица("ЖурналРегистрации"); Если ТипОбъекта = "Документ" Тогда Заголовок = "Журнал регистрации: "+глПредставлениеДокумента(Объект,0); Иначе Заголовок = "Журнал регистрации: "+Объект; КонецЕсли; Сообщение = ""; СекцияТаблицы = ТаблицаЖурналаРегистрации.ПолучитьСекцию("Шапка"); ТаблицаЖурналаРегистрации.ВывестиСекцию(СекцияТаблицы); СекцияТаблицы = ТаблицаЖурналаРегистрации.ПолучитьСекцию("Строка"); Если ЖурналРегистрации.ВыбратьСтроки()=1 Тогда глЧислоСтрок = 0; Пока ЖурналРегистрации.ПолучитьСтроку() = 1 Цикл СекцияТаблицы.Дата = ЖурналРегистрации.Дата; СекцияТаблицы.Время = ЖурналРегистрации.Время; СекцияТаблицы.Пользователь = ЖурналРегистрации.Пользователь; СекцияТаблицы.Событие = ЖурналРегистрации.Событие.Описание; СекцияТаблицы.Комментарий = ЖурналРегистрации.Комментарий; СекцияТаблицы.Представление = ЖурналРегистрации.ПредставлениеОбъекта; Категория = ЖурналРегистрации.Категория; Если Категория = 0 Тогда // сеанс СекцияТаблицы.Категория = "Сеанс"; СекцияТаблицы.Область(1,4,1,4).ЦветФона(255,255,255); СекцияТаблицы.Область(1,4,1,4).TextColor(0,0,0); ИначеЕсли Категория = 1 Тогда // административное СекцияТаблицы.Категория = "Администрирование"; СекцияТаблицы.Область(1,4,1,4).ЦветФона(255,255,255); СекцияТаблицы.Область(1,4,1,4).TextColor(80,80,80); ИначеЕсли Категория = 2 Тогда // изменение данных СекцияТаблицы.Категория = "Изменение данных"; СекцияТаблицы.Область(1,4,1,4).ЦветФона(255,255,255); СекцияТаблицы.Область(1,4,1,4).TextColor(160,0,160); ИначеЕсли Категория = 3 Тогда // информация СекцияТаблицы.Категория = "Информация"; СекцияТаблицы.Область(1,4,1,4).ЦветФона(255,255,255); СекцияТаблицы.Область(1,4,1,4).TextColor(0,0,80); ИначеЕсли Категория = 4 Тогда // предупреждение СекцияТаблицы.Категория = "Предупреждение"; СекцияТаблицы.Область(1,4,1,4).ЦветФона(240,240,160); СекцияТаблицы.Область(1,4,1,4).TextColor(160,160,80); ИначеЕсли Категория = 5 Тогда // ошибка СекцияТаблицы.Категория = "Ошибка"; СекцияТаблицы.Область(1,4,1,4).ЦветФона(240,240,160); СекцияТаблицы.Область(1,4,1,4).TextColor(240,0,0); КонецЕсли; ТаблицаЖурналаРегистрации.ВывестиСекцию(СекцияТаблицы); глОживить(1); КонецЦикла; КонецЕсли; ЖурналРегистрации.ЗакрытьФайл(); ТаблицаЖурналаРегистрации.Опции(0,0,3); ПараметрыЙоксель = СоздатьОбъект("СписокЗначений"); ПараметрыЙоксель.Установить("ОтступСверху",3); ПараметрыЙоксель.Установить("ОтступСнизу",0); //ПараметрыЙоксель.Установить("АнализФормата","ЦветФона,Полужирный,РазмерШрифта"); //ПараметрыЙоксель.Установить("ПанельИнструментов", ПанельИнструментов); //ПараметрыЙоксель.Установить("ГруппыСтрок", ГруппыСтрок); //ПараметрыЙоксель.Установить("ОтступСлева",3); глПоказатьТаблицуОтчета(Объект,ТаблицаЖурналаРегистрации,Заголовок,,ПараметрыЙоксель); КонецЕсли; КонецЕсли; Состояние(""); КонецПроцедуры // глПросмотрЖурналаРегистрации [/code] |
|||
9
Галахад
гуру
17.08.12
✎
09:08
|
(4) Хотелку эту. Зачем дублировать уже готовый функционал? Только если делать совсем нечего.
|
|||
10
Mikeware
17.08.12
✎
09:11
|
(9) "готовый функционал" в существующем виде - УГ.
|
|||
11
Галахад
гуру
17.08.12
✎
09:12
|
(11) И чего? В (0) не разработка нового, а дубль текущего.
|
|||
12
Красный рассвет
17.08.12
✎
09:15
|
(0) Кстати журнал регистрации не фиксирует, что конкретно изменяли в документе, а часто нужно знать именно это. Можно накодить систему запоминания и сохранять эти данные в отдельном справочнике или внешнем файле.
|
|||
13
Босечка
17.08.12
✎
09:16
|
(8) Спасибо, если можно глПоказатьТаблицуОтчета(...) и глОживить()
|
|||
14
vcv
17.08.12
✎
09:26
|
(13) глПоказатьТаблицуОтчета заменить на шатное ТаблицаЖурналаРегистрации.Показать()
глОживить штатная процедура в ТиС, выводить в строку состояния строку "В отчет выведено ... строк.", можно совсем выкинуть. |
|||
15
Босечка
17.08.12
✎
09:31
|
(14) Я уже додумалась, спасибо.У меня ругается на
Неудачная попытка создания объекта (ПоставщикДанныхЖурналРегистрации), это 1с++? Где ее взять и как зарегистрировать? |
|||
16
Karambol
17.08.12
✎
09:31
|
На Инфостарте видел готовую обработку
|
|||
17
vcv
17.08.12
✎
09:32
|
(15) 1cpp.ru
|
|||
18
WoodMan
17.08.12
✎
09:35
|
(0) а че бы бухам не воспользоваться монитором и не посмотреть журнал регистрации самим?
вечно одинэсники занимаются не тем чем должны бы заниматься, а именно автоматизацией учета, а вместо этого изобретают какие-то велосипеды |
|||
19
Босечка
17.08.12
✎
09:39
|
(16) Какую?
|
|||
20
Босечка
17.08.12
✎
09:39
|
(18) У них мозгов не хватает нажать 3 кнопки, хотят видеть все сразу.
|
|||
21
Босечка
17.08.12
✎
10:42
|
(17) работает очень медленно.
|
|||
22
WoodMan
17.08.12
✎
11:21
|
(20) скажи,
что для этого есть спец инструмент. других вариантов реализации нету. |
|||
23
Mikeware
17.08.12
✎
11:25
|
(22) врать нехорошо...
|
|||
24
andrewalexk
17.08.12
✎
11:29
|
:) надо парсить через findstr - рулит такие объемы которые даже ворд полчаса открывает
|
|||
25
vcv
17.08.12
✎
11:35
|
(21) Зависит от размера журнала регистрации. В общем случае да, журнал регистрации 1С быстро не читается. Наверное убрала фильтр по периоду и читается весь журнал? Тогда быстро не будет. У меня журнал регистрации по документу за последние два месяца открывается в течении полуминуты. Рост журнала регистрации порядка 100 мегабайт в месяц. Вот с такой скоростью работает "ПоставщикДанныхЖурналРегистрации".
(24) Через findstr конечно хорошо, но тоже не быстро. Мой журнал регистрации (с начала года, 8 месяцев) findstr фильтрует по идентификатору документа примерно за минуту. ПоставщикДанныхЖурналРегистрации за ото время способен прочитать ЖР примерно месяца за 3-4. То есть, получается, findstr всего раза в два быстрее. Приятно, но не сказать, что бы быстро рулил. |
|||
26
andrewalexk
17.08.12
✎
11:46
|
:)) "всего раза в два быстрее"
да вы батенька....максималист! |
|||
27
vcv
17.08.12
✎
11:50
|
(26) Для редко используемой операции, которая, к тому же, не создаёт любимых 1Сных блокировок всего и вся, это не то место, которое срочно нужно бросаться оптимизировать.
|
|||
28
andrewalexk
17.08.12
✎
11:53
|
:) ну речь пока про выбор инструмента
|
|||
29
andrewalexk
17.08.12
✎
11:53
|
:) тут еще можно...броситься в нужную сторону
|
|||
30
Cthulhu
17.08.12
✎
11:54
|
чтобы что-то откуда-то взять - сначала его туда нужно положить, причем в такм виде, который бы позволял взять именно то, что надо, затратив ресурс (время получения данных) в разумных объемах.
существующий штатный функционал (журнал регистрации в текстовом виде и просмотр средствами монитора пользователей) позволяет выполнять оперативный и не(!)полный просмотр указанніх сведений. разработка любого функционала с реализацией хранения, получения и анализа указанной информации в полном объеме - требует затрат ресурсов (по разработке, хранению, сопровождению) в объемах, делающих подобный геморрой вряд ли разумным. |
|||
31
andrewalexk
17.08.12
✎
11:55
|
:))..и не лень же было флудить
|
|||
32
Cthulhu
17.08.12
✎
12:00
|
(31): такой частый вопрос, что болтается в списке востребованных копипаст. ;)
|
|||
33
andrewalexk
17.08.12
✎
12:01
|
:)) фига себе у тебя база шаблонов
|
|||
34
andrewalexk
17.08.12
✎
12:01
|
:) на снеговике?
|
|||
35
vcv
17.08.12
✎
12:02
|
(30) Ну ты просто как депутат! Слов много, все правильные, а толку все равно не будет... :-)
|
|||
36
Cthulhu
17.08.12
✎
12:07
|
(35): отказ от неразумных запросов - вполне себе результат.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |