Имя: Пароль:
1C
1C 7.7
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): отказ от неразумных запросов - вполне себе результат.