Имя: Пароль:
1C
1С v8
История изменения объектов - как лучше?
0 Мэс33
 
06.01.14
11:16
Вопрос назрел, други.

Да, про историю.
Стою перед выбором:
- использовать решение отсюда: http://wastie.ru/istoriya/164384/index.html
- или взять из УПП подсистему версионирования.

Кто -что думает?
1 zulu_mix
 
06.01.14
11:19
по ссылке жоский копрокод
2 Нууф-Нууф
 
06.01.14
11:20
версионирование. и не надо лохматить бабушку
3 Reaper_1c
 
06.01.14
11:53
(0) Версионирование из БСП
4 Жан Пердежон
 
06.01.14
12:00
(3) видимо, у ТС не УФ
5 Мэс33
 
06.01.14
12:11
Не УФ.
6 Рэйв
 
06.01.14
12:16
(1)Неотформатированно и поэтому нечитаемо.
Слямзили вот отсюда:-)
http://www.ravepoint.narod.ru/aticles/tricks/methods/keephistory.htm
7 acsent
 
06.01.14
12:29
Проверка совпадения версий при записи объекта может выйти боком ой-ой-ой как
8 mehfk
 
06.01.14
12:51
9 mehfk
 
06.01.14
12:52
10 mehfk
 
06.01.14
12:52
11 Reaper_1c
 
06.01.14
13:06
(5) Покер. Подсистема из БСП прекрасно встраивается, формы нарисовать - вообще не проблема.
12 Torquader
 
06.01.14
13:06
Весь вопрос в том, насколько нужно часто лазить в запись изменений. Если изредка, то просто писать в журнал регистрации или другой текстовый файл всё, что изменил пользователь (простой обход по метаданным) - писать можно только изменения (а не всё сразу, как в стандартной системе).
С проведением сложнее - перепроведение даже неизменённого документа даёт совершенно другой результат, а также затрагивает множество данных - поэтому, скорость проведения из-за логирования сильно уменьшится.
13 Torquader
 
06.01.14
13:06
(7) А что такого - перед записью делаем сравнение и пишем только то, что поменялось.
14 zulu_mix
 
06.01.14
13:17
(6) дело не в форматировании а в том, что этот код из 150 практически одинаковых строк можно переделать в код из 20 строк
15 zulu_mix
 
06.01.14
13:17
кроме этого, существуют подписки на события, куда спокойно можно это дело положить
16 Torquader
 
06.01.14
13:19
(15) Подписка позволяет получить факт изменения, а данные - их всё равно придётся выбирать по метаданным.
17 Рэйв
 
06.01.14
13:23
(15)Я позднее так и сделал. :-)  Все руки не доходят статью поправить.
18 zulu_mix
 
06.01.14
13:23
(16) да ладно?
19 Torquader
 
06.01.14
13:27
(18) Ну а как иначе - подписка на событие ПриЗаписи.
Получаем элемент - можем или весь его в xml сложить или сравнивать с тем, что было до этого (а до этого где-то нужно взять).
20 zulu_mix
 
06.01.14
13:28
(19) значит про событие ПередЗаписью ты кагбэ не в курсе?
21 Torquader
 
06.01.14
13:35
(20) Как бы в (13) я про это и писал.
Только перед записью - это ещё не факт, что запись состоялась.
22 zulu_mix
 
06.01.14
13:36
(21) ну и что? не состоялась значит не состоялась. делов то
23 Torquader
 
06.01.14
13:38
(22) Нужно где-то сохранять изменения, полученные по подписке ПередЗаписью и писать их в базу уже по ПриЗаписи (хотя можно обойтись флагом)
24 zulu_mix
 
06.01.14
13:40
(23) не вижу проблем. ХЗ отняли?
25 zulu_mix
 
06.01.14
13:40
точнее ВХ
26 Torquader
 
06.01.14
13:41
(24) А как узнать, что запись не прошла ?
27 Torquader
 
06.01.14
13:42
(25) Где сохранить - это уже отдельная тема - для реализации, а до этого, нужно понять, что делать "в исключительных ситуациях".
28 zulu_mix
 
06.01.14
13:45
(27) ПередЗаписью заполняешь ВХ
ПослеЗаписи переносишь в ХЗ и делаешь запись в РС ИсторияИзменений
29 Torquader
 
06.01.14
13:51
(28) Это я уже понял, а что делать, если ПередЗаписью прошло (потом кто-то что-то отменил), а ПриЗаписи уже не дошло - остаётся значение "на память", а потом база становится очень большой - или при запуске следующего сеанса нужно чистить всё, что в прошлый раз было незафиксировано.
30 zulu_mix
 
06.01.14
13:53
(29) если ПриЗаписи не прошло то ПослеЗаписи не возникнет
31 acsent
 
06.01.14
13:55
Единственная проблема подсистемы версионирования, что через некоторое время большая часть базы (до 80%) будет именно версиями объектов
32 Torquader
 
06.01.14
13:57
(31) И в чём проблема - чистить базу от старых версий не так уж и сложно - маловероятно, что кто-то будет искать изменения полгода назад.
33 zulu_mix
 
06.01.14
13:57
(31) ну можно ведь без фанатизма настроить
34 acsent
 
06.01.14
13:58
(32) Как только почистишь, так сразу и потребуется )))
35 acsent
 
06.01.14
13:58
Есть решение - экспорт данных в другую базу
36 Torquader
 
06.01.14
13:58
(34) Backup-ы никто не отменял.
37 Torquader
 
06.01.14
13:59
Кстати, система версионирования с выгрузкой изменений вполне годится как система BackUp-а в реальном времени.
38 acsent
 
06.01.14
13:59
(35) Но почему то стандартная подсистема такого не умеет
39 zulu_mix
 
06.01.14
14:00
(37) лучше система версионирования с автоматическим сохранением в другую базу
40 Torquader
 
06.01.14
14:00
(38) Другая база - это очень нестандартное решение для 1С.
41 zulu_mix
 
06.01.14
14:01
(40) ты это скажешь когда будет запись во внешние источники данных?
42 Torquader
 
06.01.14
14:02
(39) Не обязательно - можно регламентом - только "звери" про доступ к другой базе вообще ничего не знают, а сервер, где живёт регламент - знает, но ничего исправить не может - да и будет всего одно подключение вместо нескольких (по количеству пользователей).
43 Torquader
 
06.01.14
14:03
(41) Когда будет - тогда можно будет считать, что 1С уже "созрела", а пока - только всякие Web-сервисы.
Хотя, некоторые "умные" базы данных позволяют в себя писать запросом на чтение (SELECT).
44 zulu_mix
 
06.01.14
14:03
(42) с чего ты взял что одно? выполняй на клиенте и будет по количеству пользователей.
45 Torquader
 
06.01.14
14:06
(44) В целях безопасности от клиента подключаться к другой базе - нет смысла - подключаться имеет смысл только от сервера, и, в принципе, периодически. Если кто-то править один элемент несколько раз, то можно записать результат правки за один раз.
46 User_Agronom
 
06.01.14
14:09
(0) По ссылке жесть. Как минимум регистр сведений, а не реквизит. Парсить потом не придутся, если несколько изменений.
Ну и подписку на событие, конечно же.
47 Diversus
 
06.01.14
14:19
Рекомендую разработку:
http://softonit.ru/journal.html
48 Мэс33
 
06.01.14
14:23
Я пока поставил вариант от УПП.
Скорость записи немного, да снизился.
49 Torquader
 
06.01.14
14:26
Может быть, когда-нить 1С дорастёт до встроенного отслеживания изменений внутренними механизмами, чтобы был, так называемый аудиторский след.
50 IamAlexy
 
06.01.14
14:27
(49) а причем тут аудиторский след и 1С?
нужно - реализуй программно... в чем собственно проблема то ?
51 Torquader
 
06.01.14
14:29
(50) В том, что неплохо бы иметь встроенный в систему механизм, чтобы не нужно было городить кучу кода и ловить события, когда всё можно сделать просто и ясно.
52 zulu_mix
 
06.01.14
14:32
(45) а в чем проблема? в 1с клиентом можно гадить а в базу с версиями нет?
53 Torquader
 
06.01.14
14:33
(52) Ну да, чтобы в базу журналирования никто лишний раз не лазил.
54 User_Agronom
 
06.01.14
14:33
(50) Реализовать программно: нужно програмить самому или платить другим. А ларьку это накладно. Но функционал очень нужный. ИМХО, скоро в типовых будет появляться штатно.
Так что тема полезная и нужная.
Вариант по ссылке в (0) жесть, ИМХО к использованию не годен. Но сама идея очень хорошая.
55 IamAlexy
 
06.01.14
14:34
(51) я подозреваю что в платформе сапа тоже нет аудиторского следа на уровне платформы и языка - а все реализовано просто напросто программно...

не ?
56 Мэс33
 
06.01.14
14:34
(55) работал в SAPе, там есть аудиторский след реализованный на уровне ядра.
57 Пеппи
 
06.01.14
14:35
(56) а как это выглядит?
58 Torquader
 
06.01.14
14:36
(55) Как бы, если есть SQL-база, то в ней есть триггеры, которые работают тогда, когда ничто другое уже не работает.
И работают так, как надо - только у 1С есть файловый вариант, где это не работает.
Пока файловый вариант "не забьют камнями", будет проблема.
А все предпосылки есть - сервер на пять рабочих мест.
Осталось - сервер на одно рабочее место - и в путь к светлому будущему.
59 Torquader
 
06.01.14
14:37
(56) В любой SQL базе есть журнал транзакций, база знает, что и кто поменял, и только нужно эту информацию собрать.
60 zulu_mix
 
06.01.14
14:39
(53) кажется у тебя в корне неверное представление о связке клиента и сервера...
61 Мэс33
 
06.01.14
14:40
(57) Там есть специальные таблицы, куда пишутся изменения (не по всем документам, конечно же, но в массе своей - по всем). Отслеживать можно по полям, по авторам изменений.
62 Нууф-Нууф
 
06.01.14
14:41
всю ветку не читал. про типовое версионирование уже было?
63 Мэс33
 
06.01.14
14:42
(62) Это в вопросе уже :). Ветку он не читал...
64 IamAlexy
 
06.01.14
14:42
(61) то есть есть аналог подписки на события который пишет события в специальный аналог регистра сведений?
и чем это принципиально отличается от типового версионирования которое тоже с точки зреиня конфигурации "зашито в ядро"  конфигурации 1С? :)
65 zulu_mix
 
06.01.14
14:45
(64) скорее там аналог ЖР, только с преферансом и поэтессами
66 IamAlexy
 
06.01.14
14:46
(65) какая разница для конечного пользователя?
67 Torquader
 
06.01.14
14:46
(64) Насколько я понимаю, там триггеры везде понапиханы.
68 Мэс33
 
06.01.14
14:46
(64) Наверное - ничем. Кроме скорости. Версионирование работает довольно не шустро.
69 Torquader
 
06.01.14
14:47
(60) Предположим клиент-сервер, мы подключаемся с сервера - но для каждого клиента подключение всё равно своё будет.
70 IamAlexy
 
06.01.14
14:47
(68) пытаясь установить фильтр на журнал регистраций я бы так не сказал..
71 Мэс33
 
06.01.14
14:48
(70) Ну вроде в 8.3 ЖР пишется в MySQL?
72 Мэс33
 
06.01.14
14:49
(70) Я и говорю - ЖР работает в 1С медленно. Версионирование добавляет свои тормоза.
73 zulu_mix
 
06.01.14
14:51
(69) н.и.а.с.и.л.и.л :(
74 IamAlexy
 
06.01.14
14:52
(71) пока не заметил..
(72) вот именно.. а версионирование весьма шустро работает..

подключал версионирование на БП16, БП2, БП3 с большим документооборотом на все документы/справочники.. пользователи ухудшения быстродействия не заметили..
с УТ11 постоянно пользую - тоже разницы на уровне пользователя с включенными/выключенным версионированием не видно..

да, замедление есть ибо это дополнительные операции выполняются, но они пользователю незаметны
75 Мэс33
 
06.01.14
14:56
(74) Я делал замер - после включения на 1-4% медленнее проводятся документы.
Хотя я еще пробовал одно хорошее решение от Куканова Андрея.
Неплохая с точки зрения использования, но тормознутая в части реализации. Там столько циклов крутятся при каждой записи, что версионирование гораздо проще - тупо записал версию документа. А сравнение делать уже в отчетах.
76 Torquader
 
06.01.14
14:57
(73) Ты в (60) Пытаешься сказать, что в связке клиент-сервер можно подключаться к другой базе на сервере.
Можно, только количество подключений будет по количеству клиентов.
77 IamAlexy
 
06.01.14
14:57
(75) 1-4% это простому пользователю не заметно.
об чем и речь...
78 Torquader
 
06.01.14
14:58
(75) Можно тупо писать версии, а вечером в регламенте их уже "потрошить" на детализацию изменений. Объект в xml одной командой пишется - поэтому - должно быть быстро - конечно, циклы тоже есть, но они уже внутри платформы.
79 Torquader
 
06.01.14
14:59
Вообще, хорошее версионирование заметно только по размеру BackUp-ов.
80 IamAlexy
 
06.01.14
15:03
(78) раньше так и было..
дописывал в версионирование свои обработки на выявление дублей версий..

потом из за нытья 1Сников на тему "зачем оно пишет столько одинаковых версий, пусть сразу проверяет ибо база растет и пухнет" разработчики БСП видимо это включили штатной функцией видимо посчитав что замедление незначительно..