#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С код на два порядка медленнее, что делает операции, по сути, невозможными." Его комментарий подтверждает замеры.
#9
by Timon1405
вопрос: а сколько потом пересчет итогов идет+какой порядок размеров задействованных таблиц?
#10
by Mirnin
Видел эту статью. При прочтении возникает уточняющий вопрос, "все документы за год" - это сколько? Тысяча, десять, миллион, квинтильон?
#11
by scanduta
У тебя ссылки проверяются на каждый объект перед удалением? Индексы обновляются в базе? Права проверяются?
#17
by Elisy
Все документы сложно посчитать. Посчитал быстро - около 90000 документов реализации в конфигурации УТ.
#18
by Elisy
Можно узнать, зачем проверять ссылки, если документы физически не исчезают? Зачем проверять права, если операция с полными правами идет? Индексы пусть MSSQL обновляет.
#19
by Kvant1C
А в чем магический смысл прямого удаления? Ну допустим, что штатными средствами удаляется медленно. В чем проблема-то? Нужно непременно в рабочий день нужно уложиться? Можно ж вообще частями удалять, в ночь например запускать пометку на удаление, если это днем создает нежелательную нагрузку.
#20
by ГеннадийУО
90 000 это немного... я тут недавно 800 000 удалял, часов за 6 средствами 1С удалилось...
#21
by Elisy
Очень некомфортно штатными средствами получается. Происходит обрезка живой базы. Все пользователи в базе. Если 2 дня выполнять обрезку, постоянно остатки будут скакать. Плюс начнется обмен по РИБ с блокировкой таблиц. Плюс такой же прием, удаление в центральной базе на 2 дня с блокировкой таблиц.
#23
by Широкий
Я подобную обработку написал несколько лет назад. На инфостарте лежит, но правда за денежку
#24
by Serginio1
.Net Bridge всегда можно заменить бесплатным решением. Но так или иначе нужно знать Net
#25
by rs_trade
Есть золотая середина. Написать собственную обработку не требующую монопольного доступа. И пусть она спокойно фоново помечает.
#27
by Зеленый пень
Если пишешь статью - пиши понятными терминами. А то "Возникла задача пометить на удаление документы за 1 год. Пробное удаление штатными средствами одного месяца заняло 4 часа". Так пометка или удаление? Пометка на удаление и удаление - совсем разные вещи. Путаешь читателей с первых же строк!
#29
by Serginio1
Ну если тебе весь код напишут, то конечно знать не нужно. Нужно только платить, за то, кто это напишет.
#34
by Elisy
Перепишите на любой метод обращения к СУБД. Код открыт, запросы схожие. Мне ближе .Net - на нем и пишу.
#36
by Бубка Гоп
ы. А чем обращения в Net будут отличаться от обращений из 1с? Или оно не на ADODB работает?
#37
by Elisy
Фоновая обработка будет также изменять остатки товаров в реальной базе. Остатки будут скакать 2 дня. Плюс 2 дня в связанной по РИБ базе.
#38
by Elisy
Обработка спокойно сработает на бесплатной демо-версии .Net Bridge. Алгоритм для других способов прямого обращения схож. Мне ближе .Net - на нем и написал.
#39
by Serginio1
Тогда лучше в Command загрузить как пакет все запросы. А внутри Использовать транзакции Хотя ...
#42
by Elisy
Видел, скорее всего, вашу обработку на Инфостарт. Она также позволяет ставить отборы, что не реализовано у меня. Но для задачи обрезки базы нам не требовались гибкие отборы.
#44
by grayshadow
а вот у меня такой вопрос... если скулем установить пометку удаления, движуха из регистров сама исчезнет?:)
#46
by grayshadow
я догадывалась что не исчезнет, а удалять ее средствами скуля - адский изврат, который не факт что даст выигрыш в скорости:) я бы для начала отключила итоги и замерила производительность в 1с...
#47
by qwerty2469
И ни какого "адского изврата" в этом нет, просту на SQL получаешь УИД документа, по этим УИДам находишь записи в регистре и удаляешь. Проще простого, а по скорости в раз 20 быстрее
#48
by Serg_1960
PS: у автора РИБ, о чём он сказал в , и я не вижу для него смысла использовать прямые обращения к MSSQL. Обрезку базы я бы делал штатными средствами на специально созданном узле в монопольном режиме. Миграция итогов обрезки в рабочую базу - сообщением обмена (будете приятно удивлены скоростью :)
#52
by Elisy
Ваше предложение, несомненно, имеет право на жизнь. Но вся моя интуиция против такого способа, зная стиль работы 1С. Потому что не понимаю принципиальной разности между удалением документов групповой обработкой и удалением в плане обмена. Экспериментировать я не буду, так как моя проблема решена.
#53
by Ёпрст
надо было хотя бы поделку на нет вложить в макет самой обработки, а прям неуважение какое-то к пользователям - ищи еще и саму ВК потом.
#55
by Serg_1960
"Потому что не понимаю принципиальной разности..." - Вы действительно не понимаете разности :( Механизм распределенной информационной базы отключает контроль ссылочной целостности и имеет высший приоритет. Достаточно, например, напомнить о том, что изменение(или удаление) документа произойдет даже если пользователь открыл документ для редактирования (тем самым заблокировав его)...
#56
by Mikeware
Как говорится, КГ/АМ... Никакой особой особой разницы между клюшками и снеговиком нет. А механизм для клюшек известен лет 14. Единственный нюанс - 90 000 удаляется в течение минут а не часов...
#57
by Asirius
а скорость создания специально-созданного узла обмена для монопольного удаления не подскажите?!
#58
by Elisy
Господи, сколько пафоса, аж противно. "Поделка на нет" имеет официальный статус 1С-совместимо, на ней основано примерно 30 проектов и примеров помимо этого. И она, на мой скромный взгляд, заслуживает отдельной страницы. Вам ближе будет эта ссылка
#60
by magicSan
Нормальная тема, особено когда много загружать надо. Загружали раньше из джестори часов 10-15 с 20ти магазинов. А документы все однотипные, без аналитики по товару. выцепили в итоге какие должны быть ссылки в СУБД и грузили напрямую, в итоге за часа 2 и доки загружены и проведено.
#61
by Записьдампа
Вот кстати да. Напомни, плз, номер информационного письма от 1С о сертификации. Беглый поиск говорит о том, что сертификат на продукт "Elisy .Net Bridge", выданный для 8.1 протух три года назад - 20.05.2012. Какая версия сертифицировалась?
#62
by Elisy
Я действительно не понимаю разности. Зачем при пометке на удаление 1С проверять ссылочную целостность, если объект физически не удаляется? Не проверяет она ее. И при обмене не проверяет. Разницы никакой нет. Пользователь, кстати, в моем случае не сможет записать документ, потому что процесс обмена заблокирует таблицы, по которым идет обмен.
#64
by Elisy
Статья описывает алгоритм, который можно реализовать любым методом доступа к СУБД. На Хабре мало 1С-ников, кто захочет поиграться с обработкой. Ссылку на .Net Bridge привел в
#65
by Serginio1
Ты так сильно не расстраивайся. К сожалению, даже такой продвинутый Ёпрст не хочет применять .Net. Хотя профит от его применения огромный. Можно использовать сборки гак из GAC а, так и пользовательские без регистрации, использовать события через подключитьОбработчик итд. Это намного больше чем разного рода скрипты. Но вот почему, то вся это мощь мало кому нужна.
#67
by 18_plus
почитал. тем, кто не понимает, что и как делает обработка, в руки давать нельзя. те, кто понимает, сами накидают запрос и, при необходимости, оформят в обработку.
#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
Часто выбирать-то особо не приходится. Есть задача обрезки конкретной базы - ее нужно выполнять. Не реально тратить недели времени на ее оптимизацию, как некоторые предлагают.
#78
by Serginio1
Вообще для усечения базы есть две стратегии копирование и удаление. А вот массовые операции по усечению базы 1С могла бы и предусмотреть создав для этого инструменты которые бы генерили запросы для массовых операций.
#79
by Зеленый пень
Когда регистры накопления в десятки миллионов записей, то чистить их средствами 1С при любой параллельности - слишком долго. Штатный механизм записи строго "по регистратору" слишком медлителен.
#80
by Serginio1
Ты можешь создать несколько фоновых заданий которые будут удалять движения документов, предварительно отключив пересчет итогов УстановитьИспользованиеИтогов(ложь)
#81
by Serginio1
Кстати при обновлении записей вполне могли бы использовать Merge, что бы не трогать неизмененные записи в том числе и при пересчете итогов
#82
by Славен
А автор молодец, статья норм. А еще понравлся коммент автора по поводу русскоязычного названия переменных
#84
by Записьдампа
Благодарю за сочувствие. Согласно пункту 2.2.2, ваш сертификат уже можно использовать как бумажку при поносе, да.
#85
by Elisy
Я как бы догадывался, что сертификаты 1С не очень уважают, но не думал, что до такой степени ))))))))
#86
by Записьдампа
Сертификаты-то уважают. Торгашей, размахивающих просроченной лицензией - не очень. Особенно когда это пафосно подаётся как одно из достоинств продукта за 6000.
#89
by Elisy
То есть, если сертификат не просроченный, то почет и уважение, а если просрочен - презрение? )))) Не подскажете, кстати, презрение когда начинается: с времени регистрации плюс 2 года или с 12:00 ночи того же дня? В пункте 2.2.2 непонятно выразились.
#90
by Elisy
Про специально созданный узел в РИБ и обрезку итогов. На периферийной базе продолжились массовые операции. На основе их был сформирован незаархивированный пакет обмена весом в 5,5Гбайт. Он не вошел в центральый узел. 1С после 4х часов работы вывалилась с ошибкой: "Ошибка преобразования данных XML: [file://E....... ][40796033,8]". Я это пишу к тому, что при огромных обменах лучше не надеяться на 1С.
#92
by Elisy
Если кому-то интересно, вероятнее всего, в плане обмена не допустима строчка <ДокументОснование xsi:nil="true"/>. А именно тэг xsi:nil. Явный баг платформы 1С - источник сгенерировал такой XML, приемник - не принял.
#93
by Serginio1
А что же это такое, когда запросы выполняются параллельно? Может ты придумал свое понимание этого понятия? Тогда огласи его.
#94
by rsv
Америку не открыли . Напишите лучше статью как генерится значение для поля _IDRRef для INSERT новых строк . А UPDATE строк это не сложно .
#96
by rsv
Переходите к модели одной БД . И не будет " огромных обменов ". Прикупить лучше Enterp. версию скуля и железок.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
В этой группе 1С
- 1С8.3 не срабатывает подписка при записи набора записей регистров бухгалтерии
- УПП игнорирует продукцию и отказывается распределять на неё 25 счет
- БП 3. Дублирование ссылок
- КАК в УФ при закрытии формы передать какие-то значения в форму владельца?
- Устанавливаю веб сервер апач, почему то не работает
- v7: Как программно изменить размер окна сообщений 1с 7.7 ?
- хитрая выборка для табеля учёта рабочего времени
- Создание пользователя в подчиненном узле РИБ. УТ11.
- Дубли в регистре сведений.
- Активация сервера 1с
- Как вызвать процедуру модуля формы из модуля объекта
- Передача данных между управляемыми формами
- прочитать комментарий в xml. как ?
- Как при выборе значения ячейки таблицы значений на УФ делать отбор по владельцу?
- Как привязать оплату, полученную за заказ через агента, к заказу клиента
- Порядковый номер в днамическом списке
- УПП, УФ, структура подчиненности
- Себестоимость в УТ 11.1
- УПП Встречный выпуск?
- Не найден файл внешней компоненты (Просклонять)