Имя: Пароль:
1C
1С v8
Удаление документов с движениями за период
0 Franchiser
 
03.05.24
12:07
Хочу удалить средствами SQL документы с движениями средствами SQL.
Как удалить документы примерно понятно, но как сделать чтобы параллельно удалились ТЧ документов, движения, данные из таблиц регистраций изменений?
1 AlexeyKh
 
03.05.24
12:16
Сэээр понимает толк в извращениях!
(даже можно не спрашивать: - А зачем так?)
2 АгентБезопасной Нацио
 
03.05.24
12:31
(0) взять СтруктуруХраненияДанных, посмотреть имена соответствующих таблиц, и удалять так же, как "примерно понятно"
3 Franchiser
 
03.05.24
12:37
(2) Проблема в том что если к примеру таблица содержит табличные части, то там нет периода и если к примеру я запомню айдишники, а перед этим удалю все данные из таблицы документов и к примеру обработка вылетит после этого, то потом уже не смогу ничего удалить из табличных частей.
4 Aleksey
 
03.05.24
12:40
(3) Для этого придумали транзакции
5 Franchiser
 
03.05.24
12:41
Нашел такой код:
ComSafeArray = RecordSet.Fields("_idRRef").Value;
                Hex = "0x"+Из_Число_В_XСчисл(ComSafeArray.GetValue(0),"0123456789ABCDEF")+Из_Число_В_XСчисл(ComSafeArray.GetValue(1),"0123456789ABCDEF")
                          +Из_Число_В_XСчисл(ComSafeArray.GetValue(2),"0123456789ABCDEF")+Из_Число_В_XСчисл(ComSafeArray.GetValue(3),"0123456789ABCDEF")
                          +Из_Число_В_XСчисл(ComSafeArray.GetValue(4),"0123456789ABCDEF")+Из_Число_В_XСчисл(ComSafeArray.GetValue(5),"0123456789ABCDEF")
                          +Из_Число_В_XСчисл(ComSafeArray.GetValue(6),"0123456789ABCDEF")+Из_Число_В_XСчисл(ComSafeArray.GetValue(7),"0123456789ABCDEF")
                          +Из_Число_В_XСчисл(ComSafeArray.GetValue(8),"0123456789ABCDEF")+Из_Число_В_XСчисл(ComSafeArray.GetValue(9),"0123456789ABCDEF")
                          +Из_Число_В_XСчисл(ComSafeArray.GetValue(10),"0123456789ABCDEF")+Из_Число_В_XСчисл(ComSafeArray.GetValue(11),"0123456789ABCDEF")
                          +Из_Число_В_XСчисл(ComSafeArray.GetValue(12),"0123456789ABCDEF")+Из_Число_В_XСчисл(ComSafeArray.GetValue(13),"0123456789ABCDEF")
                          +Из_Число_В_XСчисл(ComSafeArray.GetValue(14),"0123456789ABCDEF")+Из_Число_В_XСчисл(ComSafeArray.GetValue(15),"0123456789ABCDEF");

                СтрокаТЗДвоичныхДанных.Hex = Hex;

Для чего нужно преобразовывать _idRRef в HEX, чтобы потом удалять по ниму из табличных частей данные?
6 RVN
 
03.05.24
12:43
(3) а сначала удалить движения, потом таб. части и только потом документы, не?
7 Franchiser
 
03.05.24
12:43
(5) для этого нужно делать одну общую транзакцию на выполняемый скрипт sql, а для этого нужно как-то сделать 1 скрипт в котором одновременно удаляются и ТЧ документов и сами документы
8 Franchiser
 
03.05.24
12:44
(6) ну как бы да, я думал может у кого то уже есть готовое решение
9 Franchiser
 
03.05.24
12:45
может есть пример какой-то где открывается транзакция в sql  и внутри нее удаляется вид документа вместе с ТЧ и с движениями.
10 RVN
 
03.05.24
12:47
(8) Так-то, ЕМНИП, 1С прямо запрещает таким заниматься.
и уж если кого-то приперло то пишет под свою ситуацию. Так что вряд-ли есть готовое решение в общем виде.
11 Aleksey
 
03.05.24
12:47
(8) А какой смысл это делать средствами скуля? Чтобы в конце получить "Хотели как лучше, а получилось как всегда"?
12 Aleksey
 
03.05.24
12:48
13 RVN
 
03.05.24
12:48
(11) я комсомолка! я люблю трудности! (с)
14 АгентБезопасной Нацио
 
03.05.24
12:49
(5) нужно не "искать код", а думать.
(3) а удалить сначала из табличных частей и т.п., а уж затем удалять сами "шапки" документов - слишком сложно?
15 Aleksey
 
03.05.24
12:50
(9) После удаления движения нужно еще итоги пересчитывать. ТОже будешь средствами скуля все итоги считать?
16 АгентБезопасной Нацио
 
03.05.24
12:50
(13) это метод албанских пионеров®: создать себе трудности, а затем мужественно их преодолевать.
17 Franchiser
 
03.05.24
12:51
(14) я хочу все это сделать в одном скрипте SQL, не используя 1С. Вот только какая там связь между _idref и данными в таблицах табличных частей пока не пойму, нужно там какие-то преобразования делать или нет
18 Aleksey
 
03.05.24
12:52
Такое чувство кто от таким образом хочет сделать свертку базы, но еще не понимает, что так не получится
19 АгентБезопасной Нацио
 
03.05.24
12:52
(15) тоже можно. В клюшках это было достаточно просто, а вот в снеговике не пробовал, но принцип тот же. Только зачем?
20 Aleksey
 
03.05.24
13:04
(17) что делать со справочниками, которые могут содержать ссылки на документы
Что делать с документами введенные на основание, которые тоже содержат ссылки на удаляемый документ
что делать с движениям содержащий удаляемый документ, но сформированные другими документами (закрытие месяца, движения по регистру взаиморасчетов)
Что делать с движением по регистрам сведений без регистратора, но который содержит ссылку на удаляемый документ?
Ну ив конце концов, что делать с итогами регистров? Они сами себя не пересчитают.


При условии что ты на скуль с вилами ходишь, уверен что это то что тебе нужно?
21 Garykom
 
03.05.24
13:02
(0) А составные поля?
Где ссылки на документы могут быть
22 Aleksey
 
03.05.24
13:03
А есть еще расширения
23 Мультук
 
03.05.24
13:04
(0)

Хочу удалить средствами SQL документы с движениями средствами SQL, ПОТОМУ ЧТО:

а) почему бы и нет ?
б) скоро майские праздники, а у тебя  аллергия на алкоголь и шашлыки и нужно чем-то заняться
в) это стильно/модно/молодежно
г) ?????
д) Типовые методы "пример кода, псевдокода" я пробовал, но они не подошли "потому что"
24 PLUT
 
03.05.24
13:04
(11) ну например, когда продают компанию и нужно базу передать учетную на ERP и выпилить из нее всю инфу по организациям и прочую сопутствующую, кроме одной...

стандартными средствами 1С вы это не сделаете никогда :) ну или времени жизни не хватит

средствами SQL и доп.обормотками по поиску сопутствующей инфы (не связанной по сцылкам с организацией) можно за несколько раб.дней управиться без этих ваших вот <Объект не найден> (при жОском удалении без контроля сцЫлочной целостности)
25 АгентБезопасной Нацио
 
03.05.24
13:07
(17) скрипт-то тоже будете вручную писать?
Не, ну можете заодно разобрать таблицы Config и DBShema...
26 Aleksey
 
03.05.24
13:08
(24) для этого скуль мучить не нужен, можно спокойно взять Инструмент разработчика и там спокойно настроить отборы и удалять средствами скуля из 1С.
27 Franchiser
 
03.05.24
13:11
Появление битых ссылок не проблема
28 PLUT
 
03.05.24
13:14
(26) скулю фиолетово. но на больших объемах базы и большом количестве организаций скуль молотит несколько часов/иногда суток

средствами 1С по "феншую" нереально
29 Aleksey
 
03.05.24
13:57
(28) ? Я тебе предлагаю средствами 1С сформировать скрипт для скуля и из 1с по оле (ADODB.Connection) запустить этот скрипт на скуле