Версионирование справочников, документов и регистров сведений на SQL-сервере

История изменений реквизитов и табличных частей справочников, документов, независимых регистров сведений, возможность отката изменения, восстановление удаленных объектов, сбор статистики использования базы 1С. Альтернативный журнал регистрации.

Арт.: 702046

Продано: 24

НастройкиЛогирования.png
НоваяНастройкаЛогированияПрочее.png
Просмотр истории из объекта.png
ПоказатьИзмененные.png
ВывестиИсториюВОтчет.png
МониторАктивности.png
ПоСреднему.png
СтоТыщЗаписейВЧас.png
Расшифровка из монитора активности
Журнал регистрации
Отбор.png
ЖурналОтбор.png
ЖурналОтбор1.png
ЖурналРегистрации.png
перенос и очистка истории
ИсторияРегистраСведений.png
ОтборЖурналаРегистрации.png
ОткатКТочке.png
НастройкаПрочиеДействия.png
ПодключениеКSQL.png
ТестПодключенияСоздатьБазу.png
ТестПодключенияОшибка.png
ПутьКБазеЛога.png
СоставКонфигурации.png
ОтборКомпьютеры.png
ОбновлениеВерсии.png
ОбъектыЛогирования20.png
ПоискПоЗначению.png
НастройкаОбновленияВерсии1_to_2.png
ИзмененныеТочкиОбъекта.png
ПоискПоЗначению.png
ПоискПоЗначению_СОтбором.png
ПоискПоЗначениюСОтбором.png
ПоискПоЗначению_С_Отбором.png
ПоискПоЗначению_Отбор.png
ОтображениеТипаЗначения.png
РасшифровкаТипаЗначения.png
РасшифровкаТипаЗначенияРеквизита.png
НовоеВ_cf.png
изображение.png
изображение.png
изображение.png
изображение.png
изображение.png
ГрупповойОткатИзменений.png
НастройкиЛогирования.png
НоваяНастройкаЛогированияПрочее.png
Просмотр истории из объекта.png
ПоказатьИзмененные.png
ВывестиИсториюВОтчет.png
МониторАктивности.png
ПоСреднему.png
СтоТыщЗаписейВЧас.png
Расшифровка из монитора активности
Журнал регистрации
Отбор.png
ЖурналОтбор.png
ЖурналОтбор1.png
ЖурналРегистрации.png
перенос и очистка истории
ИсторияРегистраСведений.png
ОтборЖурналаРегистрации.png
ОткатКТочке.png
НастройкаПрочиеДействия.png
ПодключениеКSQL.png
ТестПодключенияСоздатьБазу.png
ТестПодключенияОшибка.png
ПутьКБазеЛога.png
СоставКонфигурации.png
ОтборКомпьютеры.png
ОбновлениеВерсии.png
ОбъектыЛогирования20.png
ПоискПоЗначению.png
НастройкаОбновленияВерсии1_to_2.png
ИзмененныеТочкиОбъекта.png
ПоискПоЗначению.png
ПоискПоЗначению_СОтбором.png
ПоискПоЗначениюСОтбором.png
ПоискПоЗначению_С_Отбором.png
ПоискПоЗначению_Отбор.png
ОтображениеТипаЗначения.png
РасшифровкаТипаЗначения.png
РасшифровкаТипаЗначенияРеквизита.png
НовоеВ_cf.png
изображение.png
изображение.png
изображение.png
изображение.png
изображение.png
ГрупповойОткатИзменений.png

22800 руб.

7200 руб.

6000 руб.

• история изменений реквизитов справочников/документов/регистров сведений;
• лог действий, определенных администратором и не связанных с объектами ИБ
• подробная история изменений из формы объекта;
• поиск в истории по значению реквизита;

• откат к выбранной версии объекта;
• групповой откат изменений;
• восстановление удаленных объектов с сохранением ссылочной целостности;
• хранение истории на SQL-сервере;
• сбор статистики (монитор активности в 1С);

• отказ от типового версионирования из Библиотеки Стандартных Подсистем с сохранением накопленной истории;
• открытый код

        

      Разработка решает вышеперечисленные задачи следующим образом:

      В момент записи объекта в регистре сведений сохраняются его свойства - реквизиты и табличные части. Также регистрируется открытие форм объектов (формы списка, выбора, объекта), открытие отчетов/обработок.

      Сохранение истории не происходит в SQL напрямую. Вся история хранится в регистре сведений до момента переноса на сервер. Перенос истории осуществляет регламентное задание. 

      Состав регистрируемых объектов, а также способ их регистрации (регистрируется сам факт открытия/изменения, или регистрация с сохранением значений реквизитов) настраивается администратором.

 

Интерфейс

      История изменений доступна из формы объекта (панель навигации формы). Для пользователя это единственная возможность доступа к истории. Для администратора есть возможность независимого использования этого функционала в подсистеме Логирование, а также журнал регистрации, монитор активности и возможность отката объекта к выбранной точке истории.

 

Просмотр истории из объекта

      Панель навигации объектов (справочники и документы), содержит ссылку перехода в историю изменений:

      В левой части окна представлена хронология изменения объекта. При выборе точки истории отображается состояние объекта: значения реквизитов и его табличные части, если они имеются. Если значение реквизита для выбранной точки отличается от его значения для предыдущей точки, оно подсвечивается красным шрифтом и флажком. При наведении курсора всплывает подсказка, в которой отображается его предыдущее значение, а также кем и когда оно установлено: 

      Историю регистра сведений можно посмотреть только из журнала регистрации. История будет отображать содержание набора записей в разрезе отбора:

      Состояние точки истории можно вывести в документ mxl:

      Когда у объекта длинная история изменений, удобно видеть те точки, в которых есть какие-либо изменения по сравнению с предыдущим состоянием объекта, чтобы исключить из анализа те точки, когда объект записывался "вхолостую", без изменений.

      Также очень удобно в незнакомой конфигурации видеть тип значения реквизитов объекта. Для этого в интерфейсе предусмотрена возможность переключения в режим отображения дополнительной информации о типе значений реквизитов: гиперссылка "[тип значения]"

      При включенном режиме "[тип значения]" отображается не синоним, а имя реквизита, плюс его тип. Если тип реквизита является составным, то отображаются все его доступные типы. Кликнув такой на реквизит, можно получить подробную расшифровку типа значения:

 

Возможности администратора

      Администратору доступна подсистема Логирование:

 

Журнал регистрации

      В журнале отражаются события, регистрация которых была включена:

       - справочник;  - документ;  - регистр сведений;  - обработка;  - отчет.

      Записанные/измененные объекты помечаются иконкой . Двойной клик на такой строке открывает историю изменения объекта, спозиционировав курсор на точке хронологии, соответствующей текущей строке журнала регистрации.

      Отбор журнала позволяет настроить фильтр по виду регистрируемых объектов, пользователю, периоду, представлению объекта и по самому объекту (справочник или документ):

 

Монитор активности

      Отображает, на основе данных лога, статистику использования базы в разрезе времени и количества обращений. Шкала времени разбита по часам суток.

      Позволяет сформировать график:

  • за выбранный период:

  • среднюю суточную активность за указанный период:

 

      Кликнув на интересующую точку графика, можно получить расшифровку:

 

Восстановление состояния объекта. Откат к предыдущей точке. 

      У администратора есть возможность откатить состояние объекта к определенной точке истории, а также восстановить удаленные объекты ИБ. При попытке открыть удаленный объект (объект, который не найден в базе по ссылке), будет открыта форма истории его изменений:

 

      В открывшейся форме в контекстном меню на текущей строке следует выбрать "Вернуться к текущей точке":

 

Групповой откат измененных объектов.

      В случае работы с различными алгоритмами, связанными с групповым изменением данных, есть возможность для группы объектов определенного вида откатить сделанные изменения на шаг назад в хронологии. Для этого нужно выбрать вид объекта (справочник или документ), указать при необходимости пользователя, и выбрать период, в котором было групповое изменение объектов, нажать "Сформировать".

Будет сформирована таблица с измененными объектами за указанный период, а также предыдущая точка в истории. Нужно отметить откатываемые объекты, и нажать "Откатить изменения"

 

Поиск в истории по значению реквизита.

      Механизм позволяет найти точки истории, в которых реквизит объекта или реквизит табличной части объекта принимал определенное значение или был изменен. Это может быть полезно, когда неизвестно кем и неизвестно в каком именно документе определенного вида было изменено значение реквизита, но примерно известно, когда это было сделано. Например, "...еще вчера все было хорошо, а сегодня поехал отчет". Очевидно, что кто-то изменил сумму/номенклатуру/количество в заказе, но в каком?.. Обработка "Поиск по значению реквизита" вам в помощь!

      Обработка доступна для администратора. Настройка обработки заключается в указании периода, и позиционирования курсора на исследуемом реквизите. После чего жмем "Сформировать".

  • Может отображать как сам факт изменения реквизита:

 

  • так и поиск конкретного значения реквизита:

 

  • также возможен поиск в табличной части с отбором по значениям реквизитов.* Для этого необходимо указать значение реквизита отбора, и спозиционировать курсор на исследуемом реквизите.

 

Пример: выловить факт изменения количества, где указан реквизит шапки "склад" и реквизит "номенклатура" табличной части

* - при исследовании реквизитов шапки объекта, указать отбор возможно только по реквизитам шапки объекта, но не по реквизитам табличной части

 

 

Перенос истории на сервер / очистка истории.

      Перенос истории на SQL-сервер осуществляет регламентное задание . Интервал запуска задания можно установить = 10мин. Для регламентного задания ОчисткаЛога интервал запуска установить = раз в сутки.

 

      Все механизмы подсистемы получают данные одновременно как с сервера так и из регистра сведений*. Таким образом, для корректной работы подсистемы допускается отключить задание переноса истории на SQL-сервер. В этом случае вся история будет храниться непосредственно в базе 1С, со всеми вытекающими последствиями. Однако, в случае, если в базу заведен новый пользователь, а история после этого события не переносилась на сервер, то могут возникать ошибки при открытии истории изменений объекта.

* - поиск в истории по значению реквизита работает только в случае хранения истории на SQL-сервере

      (!) Есть возможность полностью вычистить из базы историю по тем настройкам регистрации, для которых выключена регистрация, и [Хранить, дней] = 0: рег.задание "ЛогированиеОчисткаПоВидамОбъектов"

 

Установка и настройка подсистемы

Состав разработки

- Общие модули ЛогированиеПодписки, ЛогированиеРегламентныеЗадания: процедуры обработки перехвата событий, подлежащих регистрации; процедура регламентного задания переноса лога на сервер

- Роль: SQLЛогирование – необходимый и достаточный доступ для работы обычного пользователя;

- Роль: SQLЛогированиеАдминистратор – необходимый доступ для настройки подключения к SQL-серверу, настройкам логирования, монитору активности и журналу регистрации, возможность отката состояния объекта к выбранной точке истории;

- Подписки на события – перхватчики событий, подлежащих регистрации

- Регламентное задание ПереносЛогаНаSQL – перенос истории изменений из регистра сведений на сервер SQL

- Регламентное задание ОчисткаЛога – Удаление истории, время хранения которой истекло

- Регламентное задание Переход_с_БСП_2_3_6_92 – Перенос истории из типового регистра ВерсииОбъектов и его очистка 

- Константа БазаЛога_СтрокаПодключения – настройки подключения к серверу

- Справочник ЛогированиеОбъекты: хранилище настроек правил регистрации объектов

- Обработка ИсторияИзмененийПоОбъекту: интерфейс для исследования истории изменений объекта (справочника/документа/регистра сведений), а также отката к выбранной точке истории. Вызывается как независимо, так и из формы объекта

- Обработка ЛогированиеСтруктураМетаданных: Вспомогательная обработка для исследования типа значений реквизитов, а также для расшифровки значения реквизита типа "ХранилищеЗначения"

- Обработка ЛогированиеГрупповойОткатИзменений: Обработка для группового отката измененных объектов к предыдущей точки истории

- Обработка МониторАктивностиВ1С: – интерфейс для наглядного представления о нагрузке на базу в разрезе указанного периода, типа (Среднее за период, весь период), и выбранного пользователя.

 

- Обработка ЖурналЛогирование: – интерфейс для просмотра лога - Журнал регистрации.

 

- РегистрСведений Логирование: хранилище истории до момента ее переноса на сервер, процедуры отправки и получения данных с сервера

Порядок обновления

1. Обновить конфигурацию путем сравнения/объединения с конфигурацией из файла.

1.1. В окошке сравнения снять галку "Свойства" конфигурации; снять галку у справочника "Пользователи"; выполнить обновление

1.2. В некоторых случаях (как правило, в самописных базах) справочник, соответствующий типовому "Пользователи" может называться как угодно, а пользователь сеанса может быть получен каким угодно способом. В этом случае следует прописать это в соответствующих функциях в модуле РегистрСведений.Логирование.МодульМенеджера:

	Функция ТекущийПользователь() Экспорт
	    Возврат ПараметрыСеанса.ТекущийПользователь
	КонецФункции 

	Функция ИмяСправочникаПользователи() Экспорт
	    Возврат "Пользователи";
	КонецФункции 

1.3. Проследить, корректно ли установлены типы, соответствующие справочнику "Пользователи" в следующих объектах

    Обработка.МониторАктивностиВ1С.Макет.МакетРасшифровка.НаборДанных1
        Тип поля Пользователь

    Обработка.МониторАктивностиВ1С.Макет.МакетНастройки.Параметры
        Тип параметра Пользователь

    Обработка.ЛогированиеГрупповойОткатИзменений.Форма
        Типы реквизитов формы: ввПользователь, ТЗИстория.Пользователь, ТЗИстория.ПредПользователь

    РегистрСведений.Логирование.Измерение.Пользователь.Тип

 

1.4. Команда Обработка.ИсторияИзмененийПоОбъекту.Команды.ИсторияИзмененийПоОбъекту

- установить тип параметра составным и добавить типы объектов, из формы которых предполагается просматривать историю изменений.

  

1.5. Если предполагается использовать как управляемое, так и обычное приложение, то в свойствах общего модуля ЛогированиеПодписки установить галку Клиент (обычное приложение)Если предполагается подключение к базе по COM-соединению, то в свойствах общего модуля ЛогированиеПодписки  установить галку "Внешнее соединение"

 

1.6 Модуль управляемого приложения:

- для корректного определения имени компьютера добавить в модуль функцию ПолучитьИмяКомпьютера()  (функция присутствует в файле *.cf);

- в процедуру ПриНачалеРаботыСистемы() добавить строку: ЛогированиеПодписки.УстановитьИмяКомпьютераСервер(ПолучитьИмяКомпьютера());

 

1.7. Установить роль SQLЛогирование всем пользователям базы (необходимый и достаточный доступ к подсистеме логирования для корректной работы); установить роль SQLЛогированиеАдминистратор администратору 1С (настройка подключения к SQL, настройка правил регистрации, использование журнала регистрации, откат состояния объекта к ранней точке истории).

 

2. В режиме предприятия настроить подключение к SQL-серверу: Логирование => Лог => Соединение с SQL:

 
 Пример

 

3. Настроить правила регистрации событий: Логирование => Объекты логирования.

 
 Пример

 

4. Если в конфигурации используется типовой механизм версионирования из БСП (регистр ВерсииОбъектов), и нужно сохранить накопленную историю изменений, то в БСП требуется отключить сохранение версий объектов, после чего перенести всю историю из регистра ВерсииОбъектов на SQL. Таким образом, сохранятся все те изменения справочников и документов, которые попали в историю до момента установки подсистемы Логирование. Перенос истории и очистку регистра ВерсииОбъектов осуществляет регламентное задание Логирование_Переход_с_БСП_2_3_6_92. Количество точек истории, которое будет переноситься при запуске задания можно указать в процедуре регламентного задания (по умолчанию = 30тыс точек истории за один запуск задания)

4.1 Для пользователя, от имени которого будет запускаться регламентное задание следует снять галку "Защита от опасных действий"

 

Лог действий, не связанных с объектами ИБ и определенных администратором

      Кроме событий просмотра/записи объектов ИБ есть возможность регистрировать прочие действия в базе, например, вывод печатных форм, открытие файлов, запуск процедур обмена, и прочих действий.

      Для этого можно использовать код такого вида:

Комментарий = "Дополнительная информация";
Действие = Перечисления.ЛогированиеДействия["<Значение перечисления>"];
РегистрыСведений.Логирование.ЗаписатьВЛогПрочееДействие("Тип","Действие","Наименование",Действие,Комментарий);

      В результате в настройках логирования появится раздел "Прочее":

!!! Следует внимательно отнестись к регистрации прочих действий (не связанных с объектами метаданных).

Например, если в процедуре РегистрыСведений.Логирование.ЗаписатьВЛогПрочееДействие(...) в качестве первых трех параметров передавать ссылку на документ/справочник, то будет создано правило регистрации для представления каждого переданного объекта, которые могут исчисляться тысячами. Решение предусматривает не более 65536 различных правил регистрации. Если количество правил регистрации превысит это количество, это вызовет ошибку переполнения типа smallint на sql-сервере. 

В случае, если это всё-таки произошло, то нужно отключить такие правила регистрации, после чего запустить регламентное задание ЛогированиеОчисткаПоВидамОбъектов. Это задание будет вычищать историю по всем неактуальным правилам регистрации. А поскольку эта операция в случае большой базы ресурсозатратна, то вычищаться будет по 100 правил регистрации за один запуск.

 
 Если ошибка после этого не исчезла, то следует на SQL-сервере запустить следующий скрипт:

! В версиях платформы 8.2.х не предусмотрены подписки на события получения форм. В этом случае регистрация событий просмотра работать не будет.

! Регистр сведений Логирование, в теории, является слабым звеном разработки. Следует это учитывать при работе с высоконагруженными базами. Подсистема хорошо себя показала при среднем времени записи в регистр ~0.04 сек, ~1,2млн. регистрируемых событий в сутки и ~50 активных пользователей. Заметного снижения скорости работы не наблюдалось.

! Перенос истории из типового механизма версионирования тестировался на БСП версии 2.3.6.92. Для более старших версий БСП тестирование не проводилось

! Разработка предназначена исключительно для Micrоsoft SQL-Sеrvеr. Совместимость с PostgreSQL не проверялась и не предполагалась изначально 

! Компоненты и алгоритмы разработки независимы от стандартных компонентов и алгоритмов типовых конфигураций 1С, и не влияют друг на друга и на нормальную работу типовых или самописных конфигураций, за исключением механизма переноса накопленной истории на SQL-сервер из типового регистра ВерсииОбъектов, регистрацию в котором следует отключить (см. п.4 Порядка обновления). Также в любой типовой или самописной конфигурации должен присутствовать справочник пользователей, под которым происходит вход в 1С в режиме предприятия (в конфигурациях на основе БСП это справочник "Пользователи") (см. п.1.2 Порядка обновления)

! Код разработки открыт, что означает: скачиваешь раз, и пользуешься всю жизнь бесплатно, дорабатывая механизм под нужды очередного конкретного предприятия, принимая на себя всю ответственность за работоспособность доработанных алгоритмов

 

      Все механизмы были протестированы на версиях платформы: 8.2.14.528, 8.3.6.2332, 8.3.10.2580, 8.3.13.1513, 8.3.17.1549, 8.3.18.1208. В зависимости от версии платформы, возможны некоторые различия в отрисовках графика монитора активности, расшифровках точек монитора активности, а также отрисовки дерева настроек регистрации.

 

      Проверено на версиях SQL-сервера:

• 2014;
• 2008;
• SQL-Express

 

      Проверено на конфигурациях:

• УТ 11.0.4.5; УТ 11.4.3.160; УТ 11.5.7.402;
• УПП 1.3.59.1;

• 1С:Общепит 3.0.51.27;
• Бухгалтерия предприятия КОРП 3.0 (3.0.115.19);
• Самописные конфигурации на платформе 8.3.хх

      Интерфейс для обычного приложения не предусмотрен. В случае работы в обычном приложении все компоненты подсистемы доступны через меню "Операции". Если есть потребность работать в обычном приложении, интерфейс для этой цели предлагается написать тебе, программист 1С-ник!

 

UPD  29.11.2018

  • добавлено регламентное задание "ОчисткаЛога"
  • добавлена возможность указания количества дней хранения истории для каждой настройки регистрации

UPD  01.02.2019

  • Корректно определяется имя компьютера в случае работы в 1С через терминал

UPD  07.02.2019

  • Доработан интерфейс обработки отображения истории, настроек логирования
  • Добавлен функционал быстрого отображение только измененных точек истории объекта
  • Добавлена возможность регистрировать события, не связанные с метаданными базы

UPD  03.03.2019

  • Ускорено чтение истории c SQL
  • Монитор активности: добавление возможности группировки событий в отдельные показатели

UPD  15.03.2019

  • Добавлен механизм поиска в истории по значениям реквизитов

UPD  24.05.2019

  • Реализован механизм развёртывания пустой базы хранения лога из 1С

UPD  28.06.2019

  • Реализован переход с типового версионирования: перенос истории в подсистему Логирование, и очистка регистра ВерсииОбъектов

UPD  31.10.2019

  • Исправление выявленных ошибок; Тестирование на SQL2008
  • Добавление выбора режима записи при откате объекта к предыдущей точки истории: - в обычном режиме; - в режиме ОбменДанными.Загрузка
  • При записи объекта (СправочникОбъект, ДокументОбъект, РегистрСведенийНаборЗаписей), при наличии в дополнительных свойствах объекта свойства "НеРегистрировать", в зависимости от НеРегистрировать = Истина или НеРегистрировать = Ложь, событие, соответственно, будет зарегистрировано, или не будет зарегистрировано

UPD  28.02.2020

  • Фоновое формирование в Мониторе активности

UPD  20.04.2021 Версия 2.0

  • Оптимизирована структура хранения данных на SQL-сервере
    • более чем в пять раз уменьшен размер базы данных
    • ускорено получение данных:
      •  
         отборы в журнале
      •  
         определение измененных точек истории. Теперь при анализе истории измененные точки отображаются автоматически
      •  
         поиск по значению реквизита

         

  •  
     Сжатие базы на SQL-сервере во время выполнения регламентного задания очистки лога

     

  • Фоновое формирование в обработке "Поиск по значению реквизита"
  • Устранение ошибок в отчете "Поиск по значению реквизита"
 
 Обновление с версии 1.х на версию 2.0

 

UPD  22.12.2021

  •  
     Добавлена возможность видеть тип значения реквизитов в интерфейсе просмотра истории

     

UPD  25.07.2022

  •  
     Регламентное задание "ЛогированиеОчисткаПоВидамОбъектов"

     

  • При создании нового правила регистрации автоматически задается время хранения его истории = 30дней. При необходимости это можно изменить в настройках регистрации

 

UPD  28.02.2023

  • Добавлена возможность сохранения настроек отбора в журнале регистрации;
  •  
     Монитор активности: гибкий фильтр по объектам с использованием сохраненных настроек отбора

     

UPD  25.07.2023

  •  
     При очистке истории добавлена возможность сохранения последней версии объекта

 

UPD  16.08.2023

  • Добавлена возможность группового отката изменений для группы объектов определенного вида

 

UPD  14.02.2024

  • Исправление ошибки в регламентном задании "ОчисткаЛога" и его оптимизация

 

Статистика:
Просмотры 35700
Загрузки 58
Рейтинг 55
Создание 22.02.18 15:38
Обновление 26.02.24 20:19
№ Публикации 702046
Характеристики:
Теги

Журнал регистрации Версионирование История Лог Восстановление данных базы библиотека стандартных подсистем БСП ВерсииОбъектов

Рубрики Журнал регистрации
Кому Системный администратор
Тип файла Архив с данными
Платформа Платформа 1С v8.3 ,
Управляемые формы
Конфигурация Конфигурации 1cv8
Операционная система Windows
Страна Россия
Отрасль Не имеет значения
Налоги Не имеет значения
Вид учета Не имеет значения
Доступ к файлу Платные (руб)
Код открыт Да
1. пользователь 22.02.18 16:09
Сообщение было скрыто модератором.
...
2. WellMaster 28.02.18 10:24 Сейчас в теме
Не будет ли этот самый РегистрСведений.Логирование узким местом в производительности?
3. Техподдержка 28.02.18 15:11
(2) я делал замеры. Вклад логирования в общее время записи тех же документов пренебрежительно мал.
И потом, регистр не будет разрастаться бесконечно - он переносится на сервер. Если тормозит - поиграй с индексацией.

Это далеко не первый "релиз". Как минимум, раза три мне приходилось менять структуру регистра для снижения тормозов - уже после внедрения, и сейчас его структура оптимальна.

А если уж контора настолько огромна, что транзакций записи/просмотра/открытия форм стотыщ в секунду, и все алгоритмы оптимизированы настолько, насколько это возможно, тогда, возможно, вклад регистра в производительность окажется существенен. Но в таком случае странно предполагать, что руководитель ИТ-отдела такой серьезной конторы решит внедрять подсистему с инфостарта за 10sm.
30. pavel_D 02.05.18 14:04 Сейчас в теме
hren77, здравствуйте.
Как раз сейчас нужна подобная конфигурация, чтобы сократить размер информационной базы, вынеся версионирование в отдельную базу.
Скажите, пожалуйста, в вашем решении, как я понимаю, так и реализовано? Версионирование ведется в отдельной конфигурации, в отдельной базе? И каким образом рабочая конфигурация будет связана с конфигурацией версионирования? Подключена через COM-соединение? Или каким-то другим образом?
И как версии объектов будут появляться в этой базе? Посредством чего?
5. AlexO 01.03.18 12:46 Сейчас в теме
(2) любой регистр в 1С - узкое место.
У 1С вообще плохо с производительностью.
Поэтому везде, где возможно - все объемы данных выносить на внешнюю SQL (может быть не только MS SQL, хотя и предпочтительно), и обрабатывать там, возвращая в 1С лишь результат обработки.
Собственно, это - невозможность обработки больших объемов, - косвенно признает и демонстрирует сама 1С - в частности, переводом своего журнала регистрации на рельсы MySQL, да вот только не очень хорошо у неё все время все получается...
7. Техподдержка 01.03.18 15:08
(5)
любой регистр в 1С - узкое место

То есть, правильней было бы не использовать в качестве буфера регистр сведений, а писать прямо на sql?
8. AlexO 01.03.18 15:20 Сейчас в теме
(7) если большие объемы (миллионы или сотни миллионов записей в обработке) - то да, лучше сразу в SQL, "минуя" 1С.
Например, делаете доптаблицу к основной базе, но лучше - отдельную базу, чтобы и структуру 1С-баз не повредить, и не быть ограниченным в обработке.
Делаете там поиск, удаление, сортировку, обратно - уже результат, например, для дальнейшей обработки в документах 1С.
Т.е. чтобы основная нагрузка по перелопачиванию данных не ложилась на 1С-сервер, а чтобы "сырой", первичной обработкой больших объемов данных занимался специализированный сервер.
Аналогично, хранение, поиск, обработка картинок, видео - все хранить во внешней базе, в 1С только ссылки и вытаскивать нужное по мере необходимости. Иначе через полгода база 1С еле будет ворочаться, не говоря уже про выполнение прямых функций по обработке документов.
4. WellMaster 01.03.18 12:23 Сейчас в теме
Речь как раз про многозадачность, а не скорость записи в регистр.
И уж тем более не про размер регистра.
Даже типовое 1с-овское версионирование начинает жутко лагать, если его использовать на полную катушку. В той же КА 2.0.

В этой разработке хорошим плюсом является подрезка регистра с выносом инфы во внешнюю базу. В остальном все аналогично.

Да и речь не идет о руководителе ИТ-отдела.
6. Техподдержка 01.03.18 15:06
(4) Про многозадачность поподробней можно?
9. AlexO 01.03.18 15:27 Сейчас в теме
(6) возможно, имелось ввиду - "многопоточность" поступления данных в регистр, когда сразу несколько объектов вносят данные, а не "многозадачность".
Хотя и тут - вопрос упирается в скорость записи в регистр, на уровне таблиц хранения все равно будет блокировка всей таблицы для внесения каждой записи, если писать из 1С. А не блокировка только записи, как многие думают.
Блокировку же записей можно делать только на уровне SQL-сервера, а не 1С-сервера.
10. Техподдержка 01.03.18 15:36
(9)
на уровне таблиц хранения все равно будет блокировка всей таблицы

А вот тут да, может быть затык. Тут можно подумать насчет прямой записи в таблицу регистра.
Займусь, как будет скучно
12. AlexO 01.03.18 15:45 Сейчас в теме
(10) во-первых, прямая запись, даже если удасться соблюсти "полярность" (заполнение всех нужных полей) и последовательность, рано или поздно приведет к "повреждению" физической таблицы - ведь вы будете заполнять таблицу параллельно с 1С-сервером, о чем он знать не знает, и, поэтому, не контролирует целостность вашей записи на своем уровне.
Не говоря уже - о конфликтах доступа к таблицам и записям между вами и сервером 1С, которые вообще непонятно как вы сможете разрулить - 1С-сервер не дает таких инструментов и возможностей, и в нем нет обратной связи для устранения таких конфликтов (ну разве что сообщения об отказе в доутупе или ошибках - можно считать такой "обратной связью"), а на уровне SQL - оба обращения будут тождественны и приоритетны, как два обычных пользователя, вы их тоже не разделите никак.
14. Техподдержка 01.03.18 16:12
(12)
физической таблицы - ведь вы будете заполнять таблицу параллельно с 1С-сервером

Почему параллельно с сервером, если я буду заполнять и очищать конкретный регистр только прямой записью - и никак более?
Или я что-то не понял?
15. AlexO 01.03.18 16:16 Сейчас в теме
(14)так вы же написали:
Тут можно подумать насчет прямой записи в таблицу регистра


а у SQL-баз нет "регистров", это сугубо название из 1С в данном случае, поэтому - регистры только в базе 1С, ну и, далее, вы обращаетесь вместе с сервером 1С к одним и тем же регистрам базы 1С.
17. Техподдержка 01.03.18 16:31
(15)
а у SQL-баз нет регистров

Ну хорошо: не в регистр, а в соответствующие таблицы на sql-сервере.
обращаетесь вместе с сервером 1С к одним и тем же регистрам

Почему вместе с сервером, если я условился обращаться к регистру соответствующим регистру таблицам только прямыми запросами?

Когда я говорю "прямое обращение к регистру", я подразумеваю обращение к таблицам, из которых состоит сущность 1с "регистр сведений".
18. AlexO 02.03.18 09:43 Сейчас в теме
(17)
Почему вместе с сервером, если я условился обращаться к регистру соответствующим регистру таблицам только прямыми запросами?

Потому что, а кто будет "разруливать" ваше совместное обращение к одной таблице? При условии, что вы обращаетесь к таблице базы 1С, а не к "левой".
SQL-ю вы равны, 1С-сервер о вас знать не знает, вы сами - поймать не можете (нет средств).
Т.е., вы считаете, что при одновременном обращении к одной таблице и блокировке SQL-ем этой таблицы "для вас", 1С-сервер скажет "ну хорошо, подожду, пока кто-то копается в "моей" таблице"? ))
И не забывайте, еще худо-бедно можно было бы рассчитывать "ну это маловероятно, что будем читать одно и то же" при обращении к строкам (хотя это и не так - очень даже вероятно, что к одним строкам и будете обращаться, данные-то одни, вы со своей стороны работаете "по документу", 1С-сервер - со своей), так ведь 1С блокирует всю таблицу "под себя".
Или попытается это сделать.
19. Техподдержка 02.03.18 10:12
(18)
Т.е., вы считаете, что при одновременном обращении к одной таблице и блокировке SQL-ем...

Еще раз: почему будет одновременное обращение средствами sql и сервером 1С к одному регистру, если я условился обращаться к этому регистру только прямыми запросами - как на запись так и на чтение?...
Хотя, при таком раскладе, чем городить алгоритм корректного обращения прямыми запросами к таблице, возможно, будет правильней расположить на этом же сервере базу лога. Тогда и с настройками подключения не надо будет заморачиваться...
20. AlexO 02.03.18 10:30 Сейчас в теме
(19)
почему будет одновременное обращение средствами sql и сервером 1С

А как вы запретите 1С работать с его же базой? Вот понадобилось ему что-то, он и обратился.
А там - вы работаете (читаете, пишете в таблицу). SQL сообщает 1С-серверу - "обожди, брат, тут пока не до тебя".
Что, и как, по-вашему, среагирует на такую "бестактность" 1С? ))
И причем тут "прямые-непрямые" запросы, у 1С свои задачи, она их и будет решать без оглядки на то, что еще кто-то работает с этими данными.
Вы просто забываете, что блокировать будет уже не 1С-сервер, а SQL на своем уровне.
Вы для него - равноправные "пользователи" базы, он вас не разделяет на "это сервер, а это - прямой запрос админа".
21. Техподдержка 02.03.18 12:05
(20)
у 1С свои задачи, она их и будет решать без оглядки на то

Например?
22. AlexO 02.03.18 13:07 Сейчас в теме
(21) обработка документов другими пользователями - подойдет? )
23. Техподдержка 03.03.18 11:48
(22) Если эта обработка будет затрагивать регистр лога, то каким образом?... если к регистру будут только прямые запросы
24. AlexO 03.03.18 12:00 Сейчас в теме
(23) если это только ваш "регистр" (таблица), и 1С о нем "не знает" - то не будет.
А если регистр из конфигурации - то будет.
У вас же указано - "регистр сведений или справочник", но не указано, свой ли будете делать, или типовой.
Да и потом, всегда есть соблазн обратится к такому регистру "изнутри", средствами 1С-сервера, как к элементу ИБ - данные собрать, проанализировать там...
Лучше всегда делать отдельную SQL-базу, чтобы процессы обработки не пересекались. И вам удобнее, никаких ограничений и "оглядок" на 1С, и структура базы не будет нарушена, в случае чего.
27. Техподдержка 03.03.18 20:45
(24) Ну, понятно.
На самом деле все объекты этой разработки нетиповые. В т.ч регистр лога...
Но вот отдельная база на том же сервере - тут да, согласен, оптимальней. Не надо будет прописывать подключение, и лишнего посредника-регистра не будет. Как и регламентного задания переноса на сервер.
Появится время - доделаю.
16. AlexO 01.03.18 16:18 Сейчас в теме
(14)или вы про "реляционные таблицы"? ))
Это несколько другое, чем регистры 1С, даже по отношению к РС, не говоря про - регистры накопления ))
11. Техподдержка 01.03.18 15:38
(9) Это может быть актуально только для очень крупной конторы - с тысячами пользователей
13. AlexO 01.03.18 15:48 Сейчас в теме
(11) не обязательно.
Может быть просто контора с большим объемом обрабатываемых данных, которые собираются и поступают в автоматическом и полуавтоматическом режиме.
А то и просто - куча менеджеров из филиалов (даже не сотрудников) через веб заполняют центральную базу по своим филиалам.
Вот вам и тысячи новых документов в день, а в каждом - несколько ТЧ и сотни и тысячи строк.
А к концу дня - десятки миллионов записей, требующих "утряски" и обработки ))
25. aspirator23 03.03.18 15:38 Сейчас в теме
(11)Обработка логирования выглядит продуманной. Для оценки влияния ее на систему мы знаем что при добавлении записи в регистр сведений время все же меньше чем вставка. Стоит посмотреть на поведение обработки, запустив разных роботов на изменение разных объектов, чтобы они не пересекались по этим объектам. Далее постепенно увеличивать количество роботов. Будет ли критична запись в логирование и при какой нагрузке? Где произойдет блокировка? На записи объектов или логировании? Тогда можно обоснованно сделать вывод о влиянии логирования на поведение системы.
26. AlexO 03.03.18 16:25 Сейчас в теме
(25)
мы знаем что при добавлении записи в регистр сведений время все же меньше чем вставка.

вы уже научились разделять вставку и добавление? Т.е., разделили INSERT?
Я вот полагал, что этим занимается анализатор СУБД, возможно, вы знаете то, чего не знаю я.
28. aspirator23 06.03.18 10:03 Сейчас в теме
Чтобы увеличить быстродействие записи можно попробовать следующее:
1.Попробовать максимально упростить и сократить количество полей регистра сведений. Отказаться от индексирования полей.
2.Попробовать вместо регистра сведений использовать справочник, где отключить код и наименование. В этом случае не будет индексирования.
При записи в справочник не будет проверяться уникальность элементов.
3. Использовать стороннюю не реляционную базу. Быстродействие их выше.
29. AlexO 06.03.18 12:51 Сейчас в теме
(28)
2.Попробовать вместо регистра сведений использовать справочник, где отключить код и наименование.
Это встроенные поля, как вы их отключите? Они все равно останутся.
Задание в "0" лишь укажет 1С-серверу "не смотреть" эти поля.
Индексирование - будет в любом случае, иначе - как вы вообще полагаете что-либо выудить из таблицы справочника? )
Просто поиск будет по одному ключу (он же GUID поля, он же идентификатор, binary 16-bit) - IDRRef.
Вот полнотекстовый поиск стоит отключить. Желательно, по всем объектам.
При записи в справочник не будет проверяться уникальность элементов

Средствами 1С - да, не будет.
"Уникальность" не будет проверяться на уровне "Код-наименование" (т.е. пользователю "визуально" покажут много якобы "одинаковых" элементов), а реально каждый объект будет все равно уникальным.
3. Использовать стороннюю не реляционную базу. Быстродействие их выше.

Это самый верный и производительный вариант.
Потому как основные тормоза при работе с данными - это использование механизмов 1С для работы с ними.
Использование специально разработанной для целей обработки данных СУБД - увеличивает производительность на порядки, даже не в разы.
31. ice-net 26.12.18 15:06 Сейчас в теме
(0)

(!) В версиях платформы 8.2.х не предусмотрены подписки на события получения форм. В таком случае регистрация событий просмотра работать не будет.

Речь именно о платформе 8.2? Другими словами, на конфигурации с обычными формами, в режиме совместимости 8.2 на платформе 8.3 будет работать регистрация событий просмотра?
32. Техподдержка 26.12.18 22:14
(31) Речь именно о платформе. На 8.3 просмотр будет работать, в т.ч. и в режиме совместимости с 8.2
33. xico 11.02.19 11:40 Сейчас в теме
Будет ли работать с sql 2008? файл 1Clogs.bak я так понимаю для 2014 -го сервера, а нет ли версии для 2008 сервера?
34. Техподдержка 11.02.19 12:44
(33) На 2008 не пробовал. В любом случае можно создать базу вручную - всего одна таблица:
Прикрепленные файлы:
35. xico 11.02.19 13:32 Сейчас в теме
36. AzagTot 14.02.19 19:56 Сейчас в теме
Не рассматривали возможность создания подобной доработки (или перевода этой) в виде расширения конфигурации?
37. Техподдержка 14.02.19 21:35
(36) Хорошая идея. Как только придётся внедрять это на типовой конфигурации, именно так и сделаю
38. Техподдержка 14.02.19 21:37
(36) Хотя... Все равно придется снимать с поддержки. Разработка использует свой справочник, свой регистр сведений. Так что, думаю, смысла в этом нет
39. AzagTot 15.02.19 00:15 Сейчас в теме
(38) Можно в расширение добавить справочник и РС.
40. Техподдержка 15.02.19 11:44
(39) в расширение, похоже, нельзя добавить подписки на события. Точнее, добавить можно, но только из основной конфигурации.
41. AzagTot 15.02.19 18:59 Сейчас в теме
(40) Да, свои подписки нельзя добавить в расширение, к сожалению, можно только заимствовать существующие в конфигурации.
Из-за этого практически не возможно будет сделать универсальное расширение. При этом, под конкретную конфигурацию сделать расширение из вашей подсистемы будет возможно, хоть и с частичной потерей функциональности.
42. xico 19.02.19 11:13 Сейчас в теме
После установки системы стали часто появляться ошибки блокировки
44. Техподдержка 19.02.19 12:00
(42) Какая конфигурация, сколько пользователей и какие именно блокировки?
45. xico 19.02.19 12:23 Сейчас в теме
Конфа "Управление торговлей", редакция 10.3 (10.3.49.4)
Пользователей примерно 15. Блокировки возникают при проведении реализации (реализаций довольно много).
Возникает ошибка "Конфликт блокировок при выполнении транзакции". При этом соединение у пользователя захватывает СУБД, и так и висит. Пока не сбросишь соединение, у всех возникают аналогичные ошибjav * ascript:void(0);ки. Пока я не копался что именно там происходит
46. Техподдержка 19.02.19 12:59
(45) Хм... не сталкивался с подобными ошибками. Тем более, что пользователей всего 15.
А заблокирована именно реализация? Или рег. сведений.Логирование?
47. xico 19.02.19 13:54 Сейчас в теме
49. Техподдержка 21.02.19 16:54
(47) Доработал. Прописал блокировки при записи регистра
48. Техподдержка 19.02.19 15:38
Ну, значит надо с управляемыми блокировками поэкспериментировать.
Займусь на досуге
50. xico 22.02.19 15:16 Сейчас в теме
Спасибо! поставил версию с блокировками, вроде пока ошибок не было
51. Demosm 02.04.19 07:55 Сейчас в теме
Если не выполнять пункты настройки 2 и 3 - тогда как это работает? Сейчас дает ошибку:

{РегистрСведений.Логирование.МодульМенеджера(1278)}: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (ADODB.Recordset): Невозможно использование подключения для выполнения операции. Оно закрыто или не допускается в данном контексте.
52. Техподдержка 02.04.19 12:28
(51 в какой момент возникает эта ошибка?
При открытии журнала? или в какой-то другой?
53. Техподдержка 02.04.19 15:16
И еще: как именно "дает ошибку"? Возможно, в случае отсутствия подключения к sql, такой текст выводится в окне сообщений. Но при этом, алгоритм отрабатывает нормально
54. AndrewAks 20.04.19 20:23 Сейчас в теме
Алексей, напишите мне в личку, не могу отправить Вам сообщение
55. пользователь 23.05.19 18:27
Сообщение было скрыто модератором.
...

Оставьте свое сообщение

См. также

Мониторинг серверов и баз 1С

В сферу обязанностей при работе с клиентами входит контроль работы баз данных и серверов 1С. Нужно понимать что происходит в базах, есть ли ошибки, зависания у пользователей и фоновых задач, блокировки или какое-то необычное поведение систе...

9000 руб.

LogiCH - хранение и анализ журнала регистрации в сверхбыстрой СУБД ClickHouse

Конфигурация LogiCH эффективно решает проблему хранения и анализа записей журналов регистрации. Разработка использует столбцовую СУБД ClickHouse, одну из самых быстрых Big Data OLAP СУБД. Любой анализ журнала можно выполнить в одном отчете,...

5000 руб.

Журнал работы с партнером для УТ 11.4

Расширение добавляет в интерфейс справочника «Партнеры» удобный журнал работы с клиентом, в котором будет доступна вся информация по данному партнеру.

2400 руб.

Регистрация статусов документов для УТ 11.5, УТ 11.4, КА 2.4 и ERP 2.4 (расширение конфигурации)

Расширение "Регистрация статусов документов" - это простое дополнение для УТ 11.5, УТ 11.4, КА 2.4 и ERP 2.4, предназначенное для сохранения истории редактирования документов в конфигурациях 1С. Просто установить и удалить, удобно...

4900 руб.

ВНОД: Версионирование регистров сведений 1С (необъектных данных) - история изменений по версиям записей регистров сведений

ВНОД – отдельная (дополнительная) подсистема, которая построена на основе типовой подсистемы «Версионирование объектов». Предназначена для сохранения и анализа изменений независимых (периодических и непериодических) регистров сведений в 1С,...

3360 руб.

Уведомления на почту по событиям журнала регистрации на email и в Telegram (для УНФ, УТ 11, БП 3.0, ЗУП 3.0, ERP)

Рассылка уведомлений о событиях журнала регистрации на электронную почту и в Телеграмм. Программа позволяет анализировать журнал регистрации по заданным критериям, находить в нём интересующие события, и отправлять уведомления об этих с...

10800 руб.

Журнал регистрации изменений документов в 1С с восстановлением состояния ссылочных объектов и архивацией по HTTP / COM (расши...

База данных «сама» меняет данные в документах/справочниках? Тогда данный журнал регистрации изменений документов в 1С для Вас! Практически не влияет на скорость записи объектов за счет быстрого алгоритма! Скорость работы почти в 2 раза выше...

21600 руб.

Версионирование объектов для Альфа-авто, ред 4 и 5.

Подсистема версионирования объектов для конфигураций Рарус: Альфа-авто на базе типовой подсистемы от 1С. Позволяет хранить историю изменений документов и справочников, кто, что, когда и какие данные изменял, а так же вернуться к предыдущим ...

4800 руб.

Журнал регистрации изменений реквизитов во внешней базе 1С (управляемые и обычные формы)

"Журнал" позволяет быстро определить когда, кем и какие документы и справочники были изменены с детализацией по значениям реквизитов. Также фиксируются изменения регистров сведений. Таким образом можно быстро без привлечения адми...

15840 руб.

LogManager - Внешний журнал регистрации в 1С SQL

Журнал регистрации платформы 1С в SQL. Общая база хранения всех журналов. Через com-подключение регламентным заданием периодически догружает журналы регистраций из рабочих баз. Предоставляет настраиваемый доступ к журналам по правам подразд...

12000 руб.