0. dmitrydemenew 433 15.11.19 14:52 Сейчас в теме

Свертка БД 1С: обрезка до выбранной даты средствами MS SQL

Внешняя обработка, позволяющая произвести анализ размера БД и грубую обрезку данных до выбранной даты средствами MS SQL. Управляемые формы, 1С:Предприятие 8.3 (8.3.9.1818).

Перейти к публикации

Комментарии
Избранное Подписка Сортировка: Древо
1. imh9305 10 16.11.19 10:49 Сейчас в теме
лицензионное соглашение не просто так придумано. предположим вы или кто-то другой ошибетесь в процессе работы с базой напрямую мимо методов 1С. кроме как восстановить из бэкапа другого варианта нет. но и восстановление из бэкапа базы - это также возможные дополнительные проблемы, плюс простой в работе. поэтому такие обработки лучше не выкладывать в общий доступ. каждый для себя сам может решить, когда это оправдано, понимая что он делает и в связи с чем. а если он понимает, что он делает, то он и скрипт сам напишет.
3. zabaluev 416 17.11.19 09:04 Сейчас в теме
(1) Не надо умничать, если не в теме. Базу размером более 100Гб, с несколькими миллионами документов невозможно свернуть без прямой работы с SQL. Такие обработки очень нужны и плохо только, что 1с сама не даёт такие методики по сверке больших баз.
cmax; SerVer1C; practik1c; WellMaster; michmich; bug256; SVSVSV999; trickster; black_wizard; qvvert; zakiap; jamirza; Nefilimus; dj_tol; +14 Ответить
4. imh9305 10 17.11.19 10:48 Сейчас в теме
(3) не знаю, почему вы позволили себе указывать другим что им нужно делать, да еще и хамским способом.

если человек - эксперт по технологическим вопросам, еще понятно. но если нет - то возможны непредвиденные проблемы. если любой будет использовать подобные обработки (пусть автор не сочтет это за неуважение к себе, в реальной жизни всякое может быть), то еще и не проверив работоспособность бэкапа может в худшем случае оставить организацию вообще без базы.

Лицензионное соглашение не позволяет использовать недокументированные фирмой "1С" средства для построения решений на платформе "1С:Предприятие". Это означает, что средства СУБД (или любые другие внесистемные средства) можно использовать только в том случае, если документация по продуктам линейки "1С:Предприятие" (включая 1С:ИТС) содержит явную рекомендацию использовать данное средство для решения данной задачи.

Во всех остальных случаях лицензионное соглашение позволяет использовать для построения решений только штатные средства платформы. В частности, можно обращаться к данным информационной базы только при помощи объектов "1С:Предприятия", специально предназначенных для работы с данными (запросы, справочники, документы и т. д.). Нельзя обращаться к данным информационной базы напрямую, минуя уровень объектов работы с данными "1С:Предприятия", например при помощи средств СУБД или при помощи внешних компонент, которые реализуют прямой доступ к СУБД. Это ограничение распространяется на любые действия с данными, в том числе на изменение их структуры, а так же на чтение или изменение самих данных информационной базы или служебных данных "1С:Предприятия".

Данное ограничение необходимо для обеспечения стабильности работы механизмов системы, осуществления поддержки и возможности перехода на новые версии "1С:Предприятия".

https://v8.1c.ru/predpriyatie/questions_licence.htm#65
5. zabaluev 416 18.11.19 10:16 Сейчас в теме
(4) Извините, может и резковато я ответил, но не надо приводить лицензионное соглашение, как аргумент. В данном случае это выглядит немного по детски. Вы не работали с большими базами, у Вас нет опыта в данной области. По этому критиковать наработки экспертов вы не можете. Сами эксперты 1С, которые работают в 1С и преподают на курсах 1С используют методы прямого доступа SQL к данным 1с. Это примерно, как использовать хирургические методы при лечении пациента, опасно, но жизненно необходимо.
А лицензионное соглашение говорит о том, что 1с не гарантирует нормальную работу информационной базы, если вы напрямую лезете к данным. Все на свой страх и риск. Но программа 1с при этом не становиться пиратской, это не взлом и не кряк.
И кстати, делать бэкапы и восстанавливать базу 1С надо именно из бэкапов SQL, а не из DT файла. На это есть четкая рекомендация самой 1С: https://its.1c.ru/db/metod8dev/content/2922/hdoc
trickster; +1 Ответить
8. imh9305 10 18.11.19 12:47 Сейчас в теме
(5) ну как бы понятно, что dt-шник нужен только для перехода от файловой к клиент-серверной и от ms sql server к постгресу, и что битые данные могут не выгрузиться.

эксперты если так делают - так я и не против них писал вообще-то, на то он и эксперт.

предположу, что найдется "эксперт", который подобной обработкой что-то сломает в рабочей базе.

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

dmitrydemenew - спасибо за обработку.

автор удаленного сообщения, которое в уведомлениях я прочел - в личку напиши.
9. buganov 59 18.11.19 18:44 Сейчас в теме
(8)
для перехода от ms sql server к постгресу

Попробуйте выгрузить несколько терабайт в ДТ и отпишитесь, пожалуйста, о результатах.

предположу, что найдется "эксперт", который подобной обработкой что-то сломает в рабочей базе.

Зря Вы так. Если к базе действительно требуется такой скальпель, то это база не ООО Вектор, а вполне себе из разряда Highload. И в таких компаниях в 99.99% есть хотя бы один да специалист, который знает, что он делает и для чего. А базенки на несколько Гб режутся и стандартными средствами вполне себе приемлемо.
11. imh9305 10 18.11.19 19:29 Сейчас в теме
(9) понятия не имею, зачем выгружать базу в несколько терабайт в ДТ как и то, откуда у Вас статистика в 99,99%.

честно говоря не ожидал, что тут за высказывание своего мнения могут заклевать, как будто я кому-то навредить хотел. на этом прекращаю этот бесполезный спор.
12. buganov 59 18.11.19 19:33 Сейчас в теме
(11)Я не хотел заклевать или обидеть. Просто Вы написали, что ДТшник нужен для перехода на постгю. Новичок прочитает Ваше высказывание и примет к сведению не совсем верное мнение.

По поводу высказывания мнения, то это узконаправленное сообщество, где люди делятся рабочими решениями, задают вопросы и получают ответы. Это не пикабу и мнение здесь в идеале должно быть либо технически верным, либо обязательно исправленным.
7. dmitrydemenew 433 18.11.19 12:29 Сейчас в теме
(6)Уважаемые коллеги! Как автор публикации, я не вижу ни малейшего повода реагировать на мнение imh9305 настолько грубо и оскорбительно. Оно аргументировано и имеет место быть. Давайте не будем опускаться до оскорблений и превращать техническое обсуждение наших разработок в посиделки тролей.
WellMaster; michmich; SVSVSV999; Jogeedae; trickster; nata_07; +6 Ответить
2. Dach 290 16.11.19 14:47 Сейчас в теме
Обработка хорошая, скачал и использую для создания тестовой базы уменьшенного размера.

Есть пару замечаний:

1. Не всегда корректно группирует метаданные в дереве таблиц - в корневой элемент Регистр.РН1 запихнула таблицы других регистров.

2. Выводит только топ 30 больших таблиц. Хотелось бы этот вопрос самостоятельно задавать, 30 или 50 или 100

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

А так, в целом - достойная вещь, лично мне кучу времени сэкономила для подготовки тестовой среды. Автору спасибо
Nefilimus; +1 Ответить
10. buganov 59 18.11.19 18:48 Сейчас в теме
(2) для создания тестовых баз Вы можете секционировать большие таблицы и при создании тестовой просто транкейтить по partition. Очень удобно и быстро. И, кстати, для Вашей задачи будет даже лучшим решением, нежели обстригать обработкой из сабжа, что, конечно же, НЕ УМАЛЯЕТ ее качества.
13. Dach 290 18.11.19 23:01 Сейчас в теме
(10) это все известно и чудесно, но когда дают бэкап продуктивной базы и говорят: "вот, обрежь его", там никаких партиций и секционирования нет и в помине. Вот и приходится сидеть, писать скрипты ручками
14. Wi5hMaCTeP 2 20.11.19 11:07 Сейчас в теме
Коллеги, добрый день!
Только у меня такая ошибка?
Ткните пальцем плиз, где посмотреть решение.
Спасибо!
Прикрепленные файлы:
15. Wi5hMaCTeP 2 20.11.19 14:31 Сейчас в теме
В итоге сам решил. Нужно внести пару записей в реестр и перезарузиться.

Подробности в статье:
https://support.microsoft.com/ru-ru/help/4077486/secdoclienthandshake-ssl-security-error-installing-dynamics-crm-server
dmitrydemenew; +1 Ответить
16. Wi5hMaCTeP 2 20.11.19 14:49 Сейчас в теме
Продолжаем разговор :)

УТ 11.4.6. Платформа 8.3.12.1685. Сборка SQL - 14.0.2072.2.

Пытаюсь обрезать РС.ВерсииОбъектов на дату. (типовой регистр, не менялся).
Получаю ошибку на скрине 1. (про неправильный синтаксис).

Смотрим итоговый запрос (Скрин 2) на что ругается SQL.
Видим 2 выделенных строки.

Далее смотрим описание на сайте microsoft, а там сказано следующее - скрин 3.
То есть передан аргумент неверного типа.

Вот тут я совсем не силен и поправить сам не смог :)

И еще одна ошибка при нажатии кнопки "Рассчитать время обрезки таблиц" (скрин 4)
Прикрепленные файлы:
17. dmitrydemenew 433 20.11.19 15:31 Сейчас в теме
Какие типы полей регистра в 1С?
18. Wi5hMaCTeP 2 20.11.19 15:47 Сейчас в теме
_Fld12610 - ВерсияОбъекта. Тип ХранилищеЗначения.
_Fld12611 - ТабличныеДокументы. Тип ХранилищеЗначения.
Прикрепленные файлы:
19. dmitrydemenew 433 20.11.19 16:07 Сейчас в теме
20. demka123 22.11.19 23:51 Сейчас в теме
Добрый день

А как shrink применяется? Есть скрипт, написанный вручную. Все прекрасно, но shrink работает бесконечно долго. База 4Тб. Гугл выводит на статью где сказано: если у вас внутри БД есть строки неограниченной длины (text, varchar и т.п.) - смиритесь и страдайте. А без shrink теряется всякий смысл таких очисток (по-крайней мере для нашего случая). Не возникало такой проблемы?
21. dmitrydemenew 433 23.11.19 08:44 Сейчас в теме
(20)Да, к сожалению shrink - достаточно длительная операция. На днях обрезали базу документооборота исходным размером 1.4Тб. Пусть не 4Тб, но размер все же внушительный. Для интереса, замерил скорость сжатия - около 10 Мб/с. (300 Гб за ~8,5ч.).
без shrink теряется всякий смысл таких очисток
- не соглашусь, обрезание базы производится часто не только ради освобождения дискового пространства, а для решения проблем производительности системы, возникающих при работе с таблицами большого размера
22. WellMaster 99 23.12.19 12:18 Сейчас в теме
Вопрос к автору:
в УТ10.3 есть незакрытый РН ЗаказыПокупателей за 7 лет работы.
Данные в нем занимают около 2.5 Гб, Итоги - 16 Гб, Индексы к нему 12 Гб.

Поможет данная обрабокта? Закрывать регистр за все года не очень хочется. Да и валится на том, что файл транзакций разрастается до критического максимума при ТиИ.
23. dmitrydemenew 433 23.12.19 13:26 Сейчас в теме
(22)Обработка позволяет произвести непосредственное удаление всех записей из выбранных таблиц до указанной даты. Если Вам требуется оставить незначительную часть исходных записей, зарегистрированных с некоторой даты, а остальное очистить без доп. проверок - обработка поможет сделать это наиболее быстрым способом.
24. dmitrydemenew 433 27.12.19 13:00 Сейчас в теме
Обновление от 2019.12.27:

- Добавлена возможность выбора количества отбираемых таблиц и установки минимального ограничения размера;

- Добавлена возможность отбора по типу объектов (справочник, документ и т.п.);

- Добавлена возможность определения среза данных по справочному значению выбранного реквизита: к примеру, когда нужно оставить только данные по выбранным организациям;
25. d.snissarenko 152 31.12.19 10:12 Сейчас в теме
Возникла ошибка при:
Рассчитать время обрезки таблиц
Обрезка выбранных таблиц до границы среза

Не удалось выполнить обрезку таблиц: {ВнешняяОбработка.ОчисткаТаблиц.Форма.Форма.Форма(1098)}: Ошибка при вызове метода контекста (Execute): Произошла исключительная ситуация (Microsoft OLE DB Provider for SQL Server): Syntax error or access violation
26. d.snissarenko 152 31.12.19 10:14 Сейчас в теме
[_Fld468Dt] [NUMERIC](15,3) NULL,
[_Fld468Ct] [NUMERIC](15,3) NULL,
[_Fld469Dt] [NUMERIC](15,2) NULL,
[_Fld469Ct] [NUMERIC](15,2) NULL,
[_Fld470Dt] [NUMERIC](15,2) NULL,
[_Fld470Ct] [NUMERIC](15,2) NULL,
[_Fld471Dt] [NUMERIC](15,2) NULL,
[_Fld471Ct] [NUMERIC](15,2) NULL,
[_Fld472] [NVARCHAR](150) NOT NULL,
[_Fld473] [BINARY](1) NOT NULL,
[_Fld12599] [NUMERIC](7,0) NOT NULL,
[_EDHashDt] [NUMERIC](10,0) NOT NULL,
[_EDHashCt] [NUMERIC](10,0) NOT NULL
);

{ВнешняяОбработка.ОчисткаТаблиц.Форма.Форма.Форма(1098)}: Ошибка при вызове метода контекста (Execute): Произошла исключительная ситуация (Microsoft OLE DB Provider for SQL Server): Incorrect syntax near '40151231'.

CREATE UNIQUE CLUSTERED INDEX [_AccRg462_ByPeriod] ON [dbo].[_AccRg462_svtmp]([_Period],[_RecorderTRef],[_RecorderRRef],[_LineNo],[_Fld12599]);

и так по всему скрипту
28. dmitrydemenew 433 31.12.19 11:48 Сейчас в теме
27. dmitrydemenew 433 31.12.19 10:45 Сейчас в теме
Для анализа нужен полный текст скрипта, скиньте в личку
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Программист 1С
Санкт-Петербург
зарплата от 80 000 руб. до 120 000 руб.
Полный день

Консультант по 1С:Документооборот
Санкт-Петербург
зарплата от 120 000 руб. до 150 000 руб.
Полный день

Программист по 1С:Бухгалтерии
Санкт-Петербург
зарплата от 120 000 руб. до 150 000 руб.
Полный день

Программист по 1С:ЗУП
Санкт-Петербург
зарплата от 120 000 руб. до 150 000 руб.
Полный день

Консультант-аналитик 1С
Москва
зарплата от 100 000 руб. до 150 000 руб.
Полный день