Установка пометки удаления документов прямым обращением к MSSQL #750883


#0 by Elisy
Многим может быть полезно. Написал статью c описанием прямого доступа к MSSQL. Метод позволяет значительно экономить время: Возникла задача пометить на удаление документы за 1 год. Пробное удаление штатными средствами одного месяца заняло 4 часа. Это означало, что 12 месяцев удалялись бы 48 часов (2 суток). Забегая вперед, скажу, что прямым доступом к 1С документы удаляются за 30-40 минут.
#0 by Elisy
Многим может быть полезно. Написал статью c описанием прямого доступа к MSSQL. Метод позволяет значительно экономить время: Возникла задача пометить на удаление документы за 1 год. Пробное удаление штатными средствами одного месяца заняло 4 часа. Это означало, что 12 месяцев удалялись бы 48 часов (2 суток). Забегая вперед, скажу, что прямым доступом к 1С документы удаляются за 30-40 минут.
#1 by Кадош
. Не публикуйте алгоритмы взлома и ссылки на такие алгоритмы, а также всевозможные "патчи", "крэки", "эмуляторы", "серийные номера", "коды активации" и т.д.
#2 by Maniac
1 месяц 4 часа???? Ты не думал что проблема у тебя совершенно не в 1С? а например сервак дохлый. 4 часа не может месяц удалятся. Либо у тебя там 2 миллиона документов в месяц либо просто сервак тухлый. И прямым 40 минут тоже фантастика.
#3 by Ненавижу 1С
регистры говоришь? а итоги потом пересчитывать но как разовая операция вполне, мы примерно так и резали базу
#4 by Ненавижу 1С
почему не может? может, если это очень старый период, то система будет пересчитывать итоги по остаточным регистрам по всем последующим периодам
#5 by Elisy
Вполне реально - в комментариях парень пишет, что "в компании где я работал, управление структурой изделия и ряд других функций производственного блока реализованы в виде хранимых процедур и функций. Т.к. «штатный» 1С код на два порядка медленнее, что делает операции, по сути, невозможными." Его комментарий подтверждает замеры.
#6 by Смотрящий
Борцуны за лицензионную чистоту. И эти люди запрещаю ковыряться мне в носу ...
#7 by Elisy
Где здесь алгоритм взлома, можно узнать?
#8 by Смотрящий
Лицуху нарушаете
#9 by Timon1405
вопрос: а сколько потом пересчет итогов идет+какой порядок размеров задействованных таблиц?
#10 by Mirnin
Видел эту статью. При прочтении возникает уточняющий вопрос, "все документы за год" - это сколько? Тысяча, десять, миллион, квинтильон?
#11 by scanduta
У тебя ссылки проверяются на каждый объект перед удалением? Индексы обновляются в базе? Права проверяются?
#12 by scanduta
Такой обработкой можно и базу убить
#13 by mehfk
Итоги пересчитывать кто будет?
#14 by mehfk
Допиши обработку, чтобы она сама итоги пересчитывала
#15 by Elisy
Пересчет итогов делался менее часа.
#16 by Lama12
Нарушение лицензии.
#17 by Elisy
Все документы сложно посчитать. Посчитал быстро - около 90000 документов реализации в конфигурации УТ.
#18 by Elisy
Можно узнать, зачем проверять ссылки, если документы физически не исчезают? Зачем проверять права, если операция с полными правами идет? Индексы пусть MSSQL обновляет.
#19 by Kvant1C
А в чем магический смысл прямого удаления? Ну допустим, что штатными средствами удаляется медленно. В чем проблема-то? Нужно непременно в рабочий день нужно уложиться? Можно ж вообще частями удалять, в ночь например запускать пометку на удаление, если это днем создает нежелательную нагрузку.
#20 by ГеннадийУО
90 000 это немного... я тут недавно 800 000 удалял, часов за 6 средствами 1С удалилось...
#21 by Elisy
Очень некомфортно штатными средствами получается. Происходит обрезка живой базы. Все пользователи в базе. Если 2 дня выполнять обрезку, постоянно остатки будут скакать. Плюс начнется обмен по РИБ с блокировкой таблиц. Плюс такой же прием, удаление в центральной базе на 2 дня с блокировкой таблиц.
#22 by Дык ё
статья не про удаление, а про рекламу .Net Bridge
#23 by Широкий
Я подобную обработку написал несколько лет назад. На инфостарте лежит, но правда за денежку
#24 by Serginio1
.Net Bridge всегда можно заменить бесплатным решением. Но так или иначе нужно знать Net
#25 by rs_trade
Есть золотая середина. Написать собственную обработку не требующую монопольного доступа. И пусть она спокойно фоново помечает.
#26 by ДенисЧ
" Но так или иначе нужно знать Net" Зачем?
#27 by Зеленый пень
Если пишешь статью - пиши понятными терминами. А то "Возникла задача пометить на удаление документы за 1 год. Пробное удаление штатными средствами одного месяца заняло 4 часа". Так пометка или удаление? Пометка на удаление и удаление - совсем разные вещи. Путаешь читателей с первых же строк!
#28 by Serginio1
Остатки будут прыгать.
#29 by Serginio1
Ну если тебе весь код напишут, то конечно знать не нужно. Нужно только платить, за то, кто это напишет.
#30 by ДенисЧ
Ещё раз. Зачем для прямого доступа к базе нужно знать NET?
#31 by Зеленый пень
Присоединюсь - зачем еще какой-то Elisy.NetBridge ? Нафиг такое счастье.
#32 by Бубка Гоп
шта? нафейхоа энтот бридж? и тем более знание Net?
#33 by Serginio1
Я про это не говорил. Мое сообщение касалось 22. Все можно сделать без Net
#34 by Elisy
Перепишите на любой метод обращения к СУБД. Код открыт, запросы схожие. Мне ближе .Net - на нем и пишу.
#35 by Ёпрст
Как зачем ? Чтоб все спрашивали!
#36 by Бубка Гоп
ы. А чем обращения в Net будут отличаться от обращений из 1с? Или оно не на ADODB работает?
#37 by Elisy
Фоновая обработка будет также изменять остатки товаров в реальной базе. Остатки будут скакать 2 дня. Плюс 2 дня в связанной по РИБ базе.
#38 by Elisy
Обработка спокойно сработает на бесплатной демо-версии .Net Bridge. Алгоритм для других способов прямого обращения схож. Мне ближе .Net - на нем и написал.
#39 by Serginio1
Тогда лучше в Command загрузить как пакет все запросы. А внутри Использовать транзакции Хотя ...
#40 by qwerty2469
А не проще создать хранимую процедуру и ее вызывать?
#41 by Serginio1
База 1С и имя SQL может быть разными
#42 by Elisy
Видел, скорее всего, вашу обработку на Инфостарт. Она также позволяет ставить отборы, что не реализовано у меня. Но для задачи обрезки базы нам не требовались гибкие отборы.
#43 by Serginio1
Кстати, а пересчет остатков делается автоматически? Отстал я от жизни.
#44 by grayshadow
а вот у меня такой вопрос... если скулем установить пометку удаления, движуха из регистров сама исчезнет?:)
#45 by ДенисЧ
нет, разумеется. читай статью винмательней
#46 by grayshadow
я догадывалась что не исчезнет, а удалять ее средствами скуля - адский изврат, который не факт что даст выигрыш в скорости:) я бы для начала отключила итоги и замерила производительность в 1с...
#47 by qwerty2469
И ни какого "адского изврата" в этом нет, просту на SQL получаешь УИД документа, по этим УИДам находишь записи в регистре и удаляешь. Проще простого, а по скорости в раз 20 быстрее
#48 by Serg_1960
PS: у автора РИБ, о чём он сказал в , и я не вижу для него смысла использовать прямые обращения к MSSQL. Обрезку базы я бы делал штатными средствами на специально созданном узле в монопольном режиме. Миграция итогов обрезки в рабочую базу - сообщением обмена (будете приятно удивлены скоростью :)
#49 by Elisy
Пересчет в моем случае выполняется через Конфигуратор - Тестирование и Исправление
#50 by Гёдза
а что в обработке сразу не добавил?
#51 by Гёдза
А производился ли замер удаления документов с ВЫКЛЮЧЕННЫМИ итогами?
#52 by Elisy
Ваше предложение, несомненно, имеет право на жизнь. Но вся моя интуиция против такого способа, зная стиль работы 1С. Потому что не понимаю принципиальной разности между удалением документов групповой обработкой и удалением в плане обмена. Экспериментировать я не буду, так как моя проблема решена.
#53 by Ёпрст
надо было хотя бы поделку на нет вложить в макет самой обработки, а прям неуважение какое-то к пользователям - ищи еще и саму ВК потом.
#54 by Serginio1
53+ её кстати можно и зарегистрировать из 1С
#55 by Serg_1960
"Потому что не понимаю принципиальной разности..." - Вы действительно не понимаете разности :( Механизм распределенной информационной базы отключает контроль ссылочной целостности и имеет высший приоритет. Достаточно, например, напомнить о том, что изменение(или удаление) документа произойдет даже если пользователь открыл документ для редактирования (тем самым заблокировав его)...
#56 by Mikeware
Как говорится, КГ/АМ... Никакой особой особой разницы между клюшками и снеговиком нет. А механизм для клюшек известен  лет 14. Единственный нюанс - 90 000 удаляется в течение минут а не часов...
#57 by Asirius
а скорость создания специально-созданного узла обмена для монопольного удаления не подскажите?!
#58 by Elisy
Господи, сколько пафоса, аж противно. "Поделка на нет" имеет официальный статус 1С-совместимо, на ней основано примерно 30 проектов и примеров помимо этого. И она, на мой скромный взгляд, заслуживает отдельной страницы. Вам ближе будет эта ссылка
#59 by Kupogun
а почему этой ссылке нет в статье из ?
#60 by magicSan
Нормальная тема, особено когда много загружать надо. Загружали раньше из джестори часов 10-15 с 20ти магазинов. А документы все однотипные, без аналитики по товару. выцепили в итоге какие должны быть ссылки в СУБД и грузили напрямую, в итоге за часа 2 и доки загружены и проведено.
#61 by Записьдампа
Вот кстати да. Напомни, плз, номер информационного письма от 1С о сертификации. Беглый поиск говорит о том, что сертификат на продукт "Elisy .Net Bridge", выданный для 8.1 протух три года назад - 20.05.2012. Какая версия сертифицировалась?
#62 by Elisy
Я действительно не понимаю разности. Зачем при пометке на удаление 1С проверять ссылочную целостность, если объект физически не удаляется? Не проверяет она ее. И при обмене не проверяет. Разницы никакой нет. Пользователь, кстати, в моем случае не сможет записать документ, потому что процесс обмена заблокирует таблицы, по которым идет обмен.
#63 by ifso
это закладка такая для последующего "исправлю поломанную базу", не ?)
#64 by Elisy
Статья описывает алгоритм, который можно реализовать любым методом доступа к СУБД. На Хабре мало 1С-ников, кто захочет поиграться с обработкой. Ссылку на .Net Bridge привел в
#65 by Serginio1
Ты так сильно не расстраивайся. К сожалению, даже такой продвинутый Ёпрст не хочет применять .Net. Хотя  профит от его  применения огромный. Можно использовать сборки гак из GAC а, так и пользовательские без регистрации, использовать события через подключитьОбработчик итд. Это намного больше чем разного рода скрипты. Но вот почему, то вся это мощь мало кому нужна.
#66 by magicSan
Чтоб вместо 2ух суток ждать 40 минут.
#67 by 18_plus
почитал. тем, кто не понимает, что и как делает обработка, в руки давать нельзя. те, кто понимает, сами накидают запрос и, при необходимости, оформят в обработку.
#68 by Elisy
Факт сертификации есть. 3я или 4я версия на тот момент сертифицировалась.
#69 by vhl
А что, через обычный ADO нельзя уже? Обязательно какой-то НЕТ-Бридж надо городить?
#70 by ДенисЧ
не, он уже смилостивился и разрешил
#71 by Elisy
Реальная база неделю работает стабильно. Это скорее вкладка для поиска единомышленников.
#72 by Записьдампа
Нашёл, спасибо. Нет факта сертификации. По правилам 1С 1) Новые редакции ранее сертифицированных продуктов, отличающиеся по функциональности от предыдущих версий, имеют право на использование логотипа «Совместимо! Система программ 1С:Предприятие» только после пересертификации продукта. 2) Сертификат выдается сроком на два года. По истечении этого срока продукт должен быть подан на сертификацию заново. Исключения составляют продукты, сертифицируемые по категории "Программы для удаленного банковского обслуживания". Так что в сухом остатке - то, как ты сейчас это продаешь, это несертифицированное поделие с использованием типа "а сейчас, дружок, я расскажу тебе, как написать программу, которая нарушает лицензию и после применения которой надо будет запускать тестирование и исправление базы". Попробуй сфокусироваться на других примерах использования дотнета, вещь-то забавная =)
#73 by МуМу
Забавно, сегодня обсуждали один из проектов. Стоп фактором был вопрос посвященный обрезке базы.(БД под террабайт). Вообще подобные проекты не люблю категорически. Изначально, архитектурно нужно планировать обрезку БД. В случае нормальной структуры и простейших правил.(прямые сслыки, избыточные реквизиты даты и т.п.) этот процесс очень простой. Если же не задумываться то об этом изначально - начинаются приключения. Заказчика как правило в этом убеждать очень сложно(как правило в силу его слабой компетенции).  Я к чему - в 95-и случаях из 100-а правильный программист все сделает стандартными средствами 1С. В редких случаях нужно написать несложный код на T-SQL(для не более 5-и процентов объектов) в силу ограничений по времени переноса.  Средствами 1С есть тоже масса вариантов для ускорения, учитывая уровень параллелизма 8.2-8.3.
#74 by Elisy
Когда все исследовано и разжевано до 3х SQL-запросов конечно уже можно и ADO применить.
#75 by Elisy
Если вы боитесь поноса от просроченного .Net Bridge я специально для вас найду старую версию, конкретно на которую был выдан сертификат 1С-совместимо.
#76 by Elisy
Часто выбирать-то особо не приходится. Есть задача обрезки конкретной базы - ее нужно выполнять. Не реально тратить недели времени на ее оптимизацию, как некоторые предлагают.
#77 by magicSan
"учитывая уровень параллелизма 8.2-8.3." - чо?
#78 by Serginio1
Вообще для усечения базы есть две стратегии копирование и удаление. А вот массовые операции по усечению базы 1С могла бы и предусмотреть создав для этого инструменты которые бы генерили запросы для массовых операций.
#79 by Зеленый пень
Когда регистры накопления в десятки миллионов записей, то чистить их средствами 1С при любой параллельности - слишком долго. Штатный механизм записи строго "по регистратору" слишком медлителен.
#80 by Serginio1
Ты можешь создать несколько фоновых заданий которые будут удалять движения документов, предварительно отключив пересчет итогов УстановитьИспользованиеИтогов(ложь)
#81 by Serginio1
Кстати при обновлении записей вполне могли бы использовать Merge, что бы не трогать неизмененные записи в том числе и при пересчете итогов
#82 by Славен
А автор молодец, статья норм. А еще понравлся коммент автора по поводу русскоязычного названия переменных
#83 by magicSan
Это не параллельность
#84 by Записьдампа
Благодарю за сочувствие. Согласно пункту 2.2.2, ваш сертификат уже можно использовать как бумажку при поносе, да.
#85 by Elisy
Я как бы догадывался, что сертификаты 1С не очень уважают, но не думал, что до такой степени ))))))))
#86 by Записьдампа
Сертификаты-то уважают. Торгашей, размахивающих просроченной лицензией - не очень. Особенно когда это пафосно подаётся как одно из достоинств продукта за 6000.
#87 by Serginio1
По поводу пересчета итогов
#88 by Serginio1
Можно назначить потоки, которые будут удалять данные только по одному регистру.
#89 by Elisy
То есть, если сертификат не просроченный, то почет и уважение, а если просрочен - презрение? )))) Не подскажете, кстати, презрение когда начинается: с времени регистрации плюс 2 года или с 12:00 ночи того же дня? В пункте 2.2.2 непонятно выразились.
#90 by Elisy
Про специально созданный узел в РИБ и обрезку итогов. На периферийной базе продолжились массовые операции. На основе их был сформирован незаархивированный пакет обмена весом в 5,5Гбайт. Он не вошел в центральый узел. 1С после 4х часов работы вывалилась с ошибкой: "Ошибка преобразования данных XML: [file://E....... ][40796033,8]". Я это пишу к тому, что при огромных обменах лучше не надеяться на 1С.
#91 by magicSan
Всё ровно не паралельность
#92 by Elisy
Если кому-то интересно, вероятнее всего, в плане обмена не допустима строчка <ДокументОснование xsi:nil="true"/>. А именно тэг xsi:nil. Явный баг платформы 1С - источник сгенерировал такой XML, приемник - не принял.
#93 by Serginio1
А что же это такое, когда запросы выполняются параллельно? Может ты придумал свое понимание этого понятия? Тогда огласи его.
#94 by rsv
Америку не открыли . Напишите лучше статью как генерится значение для поля _IDRRef для INSERT новых строк .  А UPDATE строк  это  не сложно  .
#95 by Serginio1
94 Наверное как то так
#96 by rsv
Переходите к модели одной БД . И не будет " огромных обменов ". Прикупить лучше Enterp. версию скуля и железок.
#97 by rsv
Не то .
#98 by Гёдза
Говорят это еще в 8.2 исправили
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С