Свертка любой базы за считанные минуты!
Обработка бесплатна!
Краткое описание механизма:
Изначально обработка «Универсальная консоль SQL» разрабатывалась для свертки объемных баз, которые необходимо свернуть в очень сжатые сроки (1-2 сутки). Но, я решил сделать универсальный инструмент, типа стандартной обработки — «Групповая обработка справочников и документов» и все изменения производить непосредственно в SQL таблицах базы данных. Вот и родилась эта обработка, которая умеет работать с любой SQL базой и с любым объектом, будь то справочник, документ или регистр (кроме регистров расчета).
Возможности обработки «Универсальная консоль SQL»:
-
· Анализировать объекты (справочники, документы, регистры) с любыми возможными отборами, путем формирования 1С запросов и вывода результата в табличную часть.
· Удалять данные средствами SQL (справочники, документы, записи регистров) с любыми возможными отборами.
-
· Изменять данные средствами SQL (справочники, документы, записи регистров) с любыми возможными отборами.
-
· Перед выполнением SQL скрипта его можно просмотреть!
-
· Свертка регистров накопления и регистров бухгалтерии с любыми возможными отборами.
-
· Пересчет итогов регистров накопления и бухгалтерии.
-
· Сохранение настроек в файл XML.
Универсальная консоль SQL (Общие настройки)
Универсальная консоль SQL (Удаление данных)
Универсальная консоль SQL (Апдейт данных)
Универсальная консоль SQL (Свертка базы)
Универсальная консоль SQL (Сохранение настроек в XML)
Свертка периодических регистров сведений и очистка документов при свертке в стадии разработки.
Важно!
Функционал обработки «Универсальная консоль SQL» позволяет сделать любые изменения таблиц 1С базы. Каждый пользователь этой обработки должен понимать, что делает, так как откатить изменения в прежнее состояние будет невозможно!
Не рекомендуется использовать обработку на рабочих базах!
После любых изменений регистров накопления и бухгалтерий не забывайте пересчитывать итоги!
Разработчик данного продукта не несет ответственности за утерянные данные.
Обновление 04.04.2013:
1. Изменение процедуры «Установить субконто». Для универсальности процедура перенесена в обработку.
Обновление 11.04.2013:
1. Добавлена возможность выполнения SQL запросов в форме просмотра.
2. Исправлена ошибка при формировании УИД-а перечисления.
ВНИМАНИЕ:
Функционал изменения данных работает НЕ корректно!
Сейчас думаю как это исправить. Подробнее комментарии к публикации 22-26.
Надо было алый сделать ))
(1) DimaP,
Я попытался сделать максимально удобный интерфейс. Работал довольно долго с обработкой, и понял, что начинаю путаться и тыкать на кнопки не на тех страницах, которых хотел. Плюс на моем мониторе сильно рябило в глазах. С этим цветом мне обработка легче воспринимается. Надеюсь что и другим тоже…
после удаления, апдейта записей, связанных с регистром накопления, бухгалтерии, расчета…. Как поведут себя итоги? Или надо пересчет итогов выполнять?
(3) Valerich,
Обязательно необходимо пересчитывать, да, кстати, совсем забыл, работа с регистрами расчета в этой обработке не реализована. Укажу это в публикации в ближайшее время.
+ , чтобы дальше было развитие! Нужный инструмент!
DoctorRoza,
Спасибо, высказывайте свое мнение и рекомендации по функционалу обработки. Буду дорабатывать.
поглядим.
+ кинул
Думаю, такого рода инструмент будет полезен в первую очередь для огромных таблиц. Мелкие операции выполнять им пока не вижу смысла.
Пожелания
1. В большинстве случаев отбор компоновки можно было бы использовать. Это будет удобнее и современнее.
2. Сделать классическую (стандартную) гамму диалога.
3. При вставке текста удаления ссылочных (объектных) данных предупреждать о возможных нарушениях ссылочной целостности.
4. Хочется опции обычных представлений объектов метаданных и их реквизитов.
5. Убрать из роликов песню. Если уж хочется музыки вставить, то надо выбирать без песни (речи), т.к. она отвлекает от основного материала.
(9) tormozit,
Спасибо,
Эта обработка полезна для огромных баз. На этих выходных обрезал 560 гиговую базу. Урезал ровно за сутки. Таких результатов я не мог добиться другими решениями.
1. Возможно, но в этом случае нет большой разници.
2. Когда с обработкой работаешь долгое время, классический цвет начинает рябить. Начинаешь путать страницы… Допускал ошибки, с этим цветом, лично мне легче работать.
Над 3-4-5 я уже думал. Наверное скоро начну изменять.
При открытии ошибка
<<?>>БухгалтерскийУчет.УстановитьСубконто(Проводка[«Счет» + ДТ_КТ], Проводка[«Субконто» + ДТ_КТ], н, ВыборкаОстатков.Субконто1);
{ВнешняяОбработка.УниверсальнаяКонсольSQL.МодульОбъекта(2573,5)}: Переменная не определена (БухгалтерскийУчет)
<<?>>БухгалтерскийУчет.УстановитьСубконто(Проводка[«Счет» + ДТ_КТ], Проводка[«Субконто» + ДТ_КТ], н, ВыборкаОстатков.Субконто2);
{ВнешняяОбработка.УниверсальнаяКонсольSQL.МодульОбъекта(2580,5)}: Переменная не определена (БухгалтерскийУчет)
<<?>>БухгалтерскийУчет.УстановитьСубконто(Проводка[«Счет» + ДТ_КТ], Проводка[«Субконто» + ДТ_КТ], н, ВыборкаОстатков.Субконто3);
{ВнешняяОбработка.УниверсальнаяКонсольSQL.МодульОбъекта(2587,5)}: Переменная не определена (БухгалтерскийУчет)
<<?>>БухгалтерскийУчет.УстановитьСубконто(Проводка[«Счет» + ДТ_КТ], Проводка[«Субконто» + ДТ_КТ], н, ВыборкаОстатков.Субконто4);
{ВнешняяОбработка.УниверсальнаяКонсольSQL.МодульОбъекта(2594,5)}: Переменная не определена (БухгалтерскийУчет)
<<?>>БухгалтерскийУчет.УстановитьСубконто(Проводка[«Счет» + ДТ_КТ], Проводка[«Субконто» + ДТ_КТ],н, ВыборкаОстатков.Субконто5);
{ВнешняяОбработка.УниверсальнаяКонсольSQL.МодульОбъекта(2568,5)}: Переменная не определена (ОбщегоНазначения)
<<?>>ОбщегоНазначения.УстановитьСубконто(Проводка[«Счет» + ДТ_КТ], Проводка[«Субконто» + ДТ_КТ], н, ВыборкаОстатков.Субконто1);
{ВнешняяОбработка.УниверсальнаяКонсольSQL.МодульОбъекта(2575,5)}: Переменная не определена (ОбщегоНазначения)
<<?>>ОбщегоНазначения.УстановитьСубконто(Проводка[«Счет» + ДТ_КТ], Проводка[«Субконто» + ДТ_КТ], н, ВыборкаОстатков.Субконто2);
{ВнешняяОбработка.УниверсальнаяКонсольSQL.МодульОбъекта(2582,5)}: Переменная не определена (ОбщегоНазначения)
<<?>>ОбщегоНазначения.УстановитьСубконто(Проводка[«Счет» + ДТ_КТ], Проводка[«Субконто» + ДТ_КТ], н, ВыборкаОстатков.Субконто3);
{ВнешняяОбработка.УниверсальнаяКонсольSQL.МодульОбъекта(2589,5)}: Переменная не определена (ОбщегоНазначения)
<<?>>ОбщегоНазначения.УстановитьСубконто(Проводка[«Счет» + ДТ_КТ], Проводка[«Субконто» + ДТ_КТ], н, ВыборкаОстатков.Субконто4);
{ВнешняяОбработка.УниверсальнаяКонсольSQL.МодульОбъекта(2596,5)}: Переменная не определена (ОбщегоНазначения)
<<?>>ОбщегоНазначения.УстановитьСубконто(Проводка[«Счет» + ДТ_КТ], Проводка[«Субконто» + ДТ_КТ],н, ВыборкаОстатков.Субконто5);
Показать
Забыл в требованиях написать, что обработка только для типовых конфигураций?
Получается что обработка то не универсальная?
И с функционалом апдейта, эта обработка будет полезна в формировании каких-то тестовых баз. Баз для проверок, где нужно обрезать или заменить многое. Эта обработка с такими задачами справляется очень быстро.
(11) tormozit,
Создание остатков происходит через документ «КорректировкаЗаписейРегистров».
(11) tormozit,
Да, спасибо, определение субконто нужно будет по другому сделать.
(11) tormozit,
Исправил
Поставил +, но обработку не качал — люблю когда разработчик не считает что связан по рукам и ногам отсутствием нужного ему механизма, а добивается результата
(2) Может описание стоит корректно писать ?
Возможности обработки:
· Удалять данные средствами SQL (справочники, документы, записи регистров) с любыми возможными отборами.
и где то далеко внизу «удаление документов в стадии разработки».
(17) laduk,
Сори,
Свертка периодических регистров сведений и очистка документов ПРИ СВЕРТКЕ в стадии разработки.
Для какой платформы предназначена обработка? у меня вот например 1С:Предприятие 8.1 (8.1.15.14), не открывает ни конфигуратором, ни пользовательским режимом. в конфигураторе просит конвертацию, потом выдаёт сообщение что не может прочитать текущей версией программы и вылетает.
(19) Mogilnikova, у меня стоит 1С:Предприятие 8.2 (8.2.16.368).
Начал работы по свертке переодических рег. сведений. Буду держать в курсе…
Вопрос: реквизиту ДокументОприходования в регистре ПартииТоваровНаСкладах в SQL соответствует 3 колонки.
При формировании update к этому полю изменяется только одна из них, при чем не совсем корректно как мне кажется.
Так задумано или это ошибка ?
Думаю не плохо было бы добавить возможность выполнения любого скрипта SQL, то есть получил скрипт авто формированием, подредактировал в том же окне и выполнил.
(23) laduk, Это идея, спасибо.
(22) laduk, Сейчас гляну.
(22) laduk, Да, это ошибка, когда разрабатывал этот функционал, не мог найти документацию о хранении и получении значений ссылок на таблицу и тип, а потом и вовсе забыл. Буду думать как исправить. Если есть идеи, подскажите…
Где то пользовался обработкой по изменению документов через СКЛ, была сдесь на сайте.
Спасибо, посмотрю. Изменение составного типа на сиквеле как то проблематично, пока внятной документации не нашел.
Нашел еще одну серьезную ошибку: формат даты не соответствует реальному формату на сервере.
соответственно когда я задал Период<«01.07.2011 0:00:00» то удалил записи регистра только до 7 января.
(28)http://habrahabr.ru/post/164913/ тут описание составных полей
На сколько я понял указал в отборах период. Я всегда работал с стандартным периодом. Скорее всего не до тестировал. Спасибо. Проверю…
_Fld8818_RTRef(binary(4)) — В данном поле, при условии что в записи хранится ссылка, будет указан тип ссылки. То есть, на какую таблицу ссылается, справочник это или документ, что за документ или справочник; — Вот как это получить в сиквеле имея ссылку документа например?
(29) laduk, Проверил формат дат, ошибок не нашел.
(33) внутренний формат хранения дат может отличаться в различных версиях сервера (у меня 2012)
поэтому лучше установить формат программно при начале сессии: set DATEFORMAT ymd
(5) artem666, можно ссылки на парочку ?
(34) laduk, Может ты и прав. Да, все же сделаю так. Обновил сегодня обработку. Исправил ошибку при апдейте, не верную колонку выбирало, если не было отбора.
Приветствую!
Пытаюсь свернуть базу — ничего не получается. При свертке регистра бухгалтерии выпадает окно с 1С запросом, при нажатии на кнопку Выполнить соответственно выпадает ошибка. Т.е. с приложенным видео ничего общего.
В настройках флаг «снять предохранитель»
1. Должна работать на самописной.
2. Обрезал 600 гб за 8 часов.
3. Оракла не знаю, ответить не могу. Качайте пробуйте…
Есть база 1.2 Тб. Конфигурация УТ 10.2. Обрежет?
(41) Bajo, Пробуйте, я обрезал 600-700 гб, проблем небыло.
Изучаю обработку и сделал следующее в тестовой базе: хотел удалить записи регистра накопления «Заказы покупателей» за январь 2011 года и текст запроса на картинке. Выбрал условие интервал и результат как на картинке 1. А когда выбрал больше меньше результат как на картинке 2. Текст запроса в первом случае неправильный, а во втором правильный. Просто хочу сказать что нужно проверять текст запроса перед выполнением. И я не совсем понимаю зачем предохранитель, если при выводе текста запроса стоит кнопка «Выполнить». При его нажатии запрос уже выполняется. А так обработка и сама схема реализации классная. Смотрю дальше
Поправка порядок картинок поменялся первый правильный, второй — это условие, третий — неправильный
Ребят че то баг на сайте походу до этого было как писал выше, а сейчас 1- условие, 2- неправильный, 3 — правильный
Надо модеру сообщить короче по смыслу поймете
Довольно полезная свертка, для крупных баз будет замечательным подспорьем! У меня база 1.5 гб, поэтому не вижу смысла использовать — я делал все через стандартную обработку свертки и потом уже подчищал все через «Групповую обработку справочников и документов» . Но все-же за идею спасибо, автору однозначно респект!
Спасибо, гляну.
(ozaycev) Скажите, методология свёртки у Вашей обработки такая же, как и уhttp://infostart.ru/public/195043 (ибо чего лесопед изобретать — всё итак лежит на поверхности) отличие лишь в том, что используете прямые запросы к БД. Или концепция свёртки у Вас принципиально другая… Спасибо.
(49) zzz_natali, (9), (10)…
Продолжаю тестировать. Действительно через запросы SQL намного быстрее, но есть еще 1 ошибка. Когда выбираешь удаление одного вида документа, он автоматически в запрос кидает связанные журналы документов с операцией TRUNCATE это не совсем правильно, так как в связанных журналах могут быть документы не только одного документа.
Так же у меня возникла идея со сверткой. Вместо того что чтобы удалять периодические объекты через DEL при свертке использовать TRUNCATE, изначально отобрав объекты по нужному периоду закинуть во временную таблицу, удалить таблицу применением TRUNCATE затем просто временную таблицу поместить вместо удаленной. Эффект в производительности просто нереальный. 550 гб за 1 секунду у меня он удалил. Думаю если грамотно применить данный метод автор может реально заработать.
(50) Вы меня не поняли. В том варианте живопырочная базёнка схлопывалась за четверо суток, что совершенно неприемлимо. Есть мысль загнать БД на скуль, свернуть с помощью Вашей обработки и обратно слить в файловый режим для последующей работы.
Отсюда вопрос: есть смысл в этих возвратно-поступательных движениях или овчинка выделки? Спасибо.
(52) zzz_natali, как вариант, если другого варианта у Вас нет. Я обрезал огромные базы двумя способами.
Так как времени для свертки очень мало, примерно 30 часов а база 600-700 гиг. Я сворачивал так:
1. Писал правила обмена, и переносил месяцами все данные в чистую базу. А потом подменял всем пользователям подключение.
2. Этой обработкой, которая обрезает ее за часов 8-10. Только рег. накопления и бухгалтерии.
Все зависит от Вас. Юзайте то что Вам подходит.
(53) А почему п.1 у Вас не получил продолжения? Мне кажется, что это наиболее эффективный путь: в чистую базку тупо залить топологию(учетная политика, пользователи с их настройками и проч), срез последнего состояния на закрытый налоговый период через корректировку регистров(если нет мудрёных взаиморасчётов по 60/62 счетам) + все шевеления по зарплате, ибо нужно(да и места не так много) + текучку после последнего закрытия периода.
ЗЫ: надеюсь, я не ерунду тут протаскиваю?
(54) zzz_natali, п.1 = год могут закрывать в марте, так и делают. Поэтому, в этом случае нужно создавать остатки на конец года и загружать обороты до марта… А если документооборот велик, сделать это оочень проблематично. Проверил на себе.
(55) поддерживаю. У нас в день 8000-10000 документов начал выгружать по документам. Файлы обмена весили по 50-60 гб. Такими темпами это через недели две перенес бы данные за 1.5 месяца, а так чистка через SQL-запросы намного быстрее. А можно по подробнее про свертку рассказать?
(56) Bajo, Все просто, создаешь остатки, потом удаляешь все движения, которые меньше равно периода свертки и регистратор НЕ равно ново-созданные документы остатков.
Если в обработке нажать кнопку «Заполнить» на вкладке Документы или Регистры накопления/сведений, а потом переключиться на вкладку Регистры бухгалтерии, обработка отваливается с ошибкой:
{Форма.Форма.Форма(1135)}: Поле объекта не обнаружено (НастройкаСчетов)
ОформлениеСтроки.Ячейки.НастройкаСчетов.УстановитьТекст(«< Настройка >»);
PS. Конфа — Комплексная автоматизация, движок 8.3.4.408
(51) Вот было бы здорово, если бы эта обработка могла бы перелопачивать другие обработки на язык запросов T-SQL, то цены бы ей не было… 🙂
(ozaycev) Александр, что-то ролик по удалению частного порядка слишком заумный . Можете подсказать порядок действий, если я хочу удалить абсолютно ВСЁ(доки, движения, регистры) до определенного периода?
Запрос T-SQL в чистом виде тоже приветствуется.
Спасибо.
(60) zzz_natali, проще я рассказать не смогу, сори.
(61) А что по поводу 58го моего поста?
Чей косяк, Ваш или я сахеру слишком много кладу в чай?
(62) zzz_natali, Не знаю, как только будет свободная минутка сразу гляну.
Можно вопрос? Если мы удаляем некий тип документов, например Поступление товаров, то надо ли потом дополнительно делать какие-то манипуляции с регистрами сведений/накоплений? Ведь, скажем РегистрНакопленияУчетЗатрат содержит записи по многим складским операциям: приход, отгрузка, перемещение и т.д. Прокомментируйте, пожалуйста, правильный подход к спрашиваемой операции. Спасибо.
(64) Свертка периодических регистров сведений и очистка документов при свертке в стадии разработки.
Останутся битые ссылки.
(65) А вот тут чел пишет фу-фу или дело(?):http://www.softpoint.ru/article_id63.htm
Получается, что битые ссылки потом причесать мона через ТиИ в конфигураторе?
(66) zzz_natali, Я не оставляю после себя битых ссылок. Битые ссылки — это плохо.
(66) zzz_natali, Это не фу-фу но действительно для 7ки а вот если бы кто смог для 8ки наисать то сразу бы опробовал потому что снести все разом такое можно опробовать а остатки внести не проблема. Если кто для 8ки скрипт скульный написал запостите пожалуйста.
(66) zzz_natali, и да через ТиИ можно битые ссылки причесать тока долгая это песня например на моей базе полный ТиИ идет порядка 2 суток непозволительная роскошь поэтому только логику и физику гоняю. Все остальное стандартными методами 1С или SQL делаю.
что-то попробовал я обработку, решил почистить РН ВнутренниеЗаказы в УПП по определенную дату в результате увидел, что обработка вроде как чистит только Виртуальную таблицу остатков а Основная таблица остается на месте … неужели так и подразумевалось??
При выполнении запроса по свертке остатков по регистрам накопления выходит ошибка:
{ВнешняяОбработка.УниверсальнаяКонсольSQL.МодульОбъекта(441)}: Ошибка при вызове метода контекста (Execute): Произошла исключительная ситуация (Microsoft OLE DB Provider for SQL Server): Incorrect syntax near ‘/’.
Что я сделал не так?
SQL 2005, Windows Server 2008 R2 Standart
(70) unoDosTres, да бывает такое. попробуйте сделать пересчет итогов
При выполнении команды «Создать остатки» по регистру ЗаказыПокупателей
уже час происходит этап «Включаю использование итогов…»
В регистре конечно ~2млн записей, но почему так долго?
Может я что-то пропустил?
(73) NewmanFX,
Может у Вас отключены итоги?…
Понимаю что дело не в обработке, но уже не знаю куда копать.
Выдаёт ошибку:
{ВнешняяОбработка.УниверсальнаяКонсольSQL.МодульОбъекта(32)}: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (ADODB.Connection): Операция не допускается, если объект закрыт.
Пробую на Win7Ult, платформа 8.3, SQL 2012. Что может быть ?
Спасибо за обработку, вещь очень полезная. Использовал для удаления организаций и всех связанных с ними документами.
Подскажите, не разбирались ли с записью в таблицы изменений регистров?
в sql в таблице изменений есть поле
_NodeTRef binary(4)
Не могу разобраться что туда необходимо записывать.
(77) it@contlog.ru,
Добрый день, с этим разбираться не доводилось.
{ВнешняяОбработка.УниверсальнаяКонсольSQL.МодульОбъекта(441)}: Ошибка при вызове метода контекста (Execute): Произошла исключительная ситуация (Microsoft OLE DB Provider for SQL Server): Неправильный синтаксис около конструкции «/».
Что это за ошибка?
Довелось массово вычищать из консолидированой базы более 60 организаций полностью, плюс часть сворачивать.
Инструментарий очень помог, но есть и замечания по консоли:
1. Сформированные запросы копировал непосредственно в SQL, поскольку по необъяснимым причинам через подключение почему-то чистилась только часть данных.
2. Количество метаданных довольно большое (порядка 10000 подзапросов) вследствие чего хотелось бы хотя бы примерно понимать на какой стадии находится выполнение (в моем случае на стороне MS SQL). Заменил закомментированные блоки на вывод сообщения. Пример: PRINT N’ЖурналДокументов.ДокументыКонтрагентов < Основная > ‘;
2. Пришлось допилить формирование запросов по очистке таблиц значений субконто для бухгалтерских регистров.
3. Пришлось допилить возможность групповых отборов (единых для всех отобранных метаданных).
добрый день!
А возможно адаптировать эту обработку под 1С Отель?
(81) Точно не могу сказать, но должна подойти
(82)
проблема в том, что не подходит.
вопрос в следующем — можете ли Вы адаптировать, и какова цена вопроса?
Добрый день!
В ролике про свертку регистра накопления вы сначала создаете остатки на дату 31.05 а затем удаляете данные на 31.05. Не удалятся ли движения документов «Корректировка записей регистров» за 31.05?
(80)Добрый день!
У меня непосредственно из 1с тоже не все чистит. Скажите пожалуйста, вы сначала отключали итоги в 1с, а затем запускали скрипт в SQL?
(85) Вам в любом случае придется пересчитывать, потому можете отключить сразу. Но технически можно и после, это не повлияет на сам процесс очистки.
(84)
В ролике про свертку регистра накопления вы сначала создаете остатки на дату 31.05 а затем удаляете данные на 31.05. Не удалятся ли движения документов «Корректировка записей регистров» за 31.05?
Добрый день,
Нет, если установить отборы
Добрый день.
Какая актуальная версия обработки, на какую дату?
Проводились ли модификации после 11.04.2013?
(88) к сожалению да