| 
    
            
         
         | 
    
    
  | 
v7: 1С++ Хочу прямой запрос на удаление записей из регистров по условию Номенклатура | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        Злопчинский    
     23.04.17 
            ✎
    16:46 
 | 
         
        ТиС, SQL
 
        сам ламер. ..хочу прямой запрос удалить из регистра (например, остаткиТМЦ, и движения, и итоги) все записи по измерению "Номенклатура" где Номенклатура.ПометкаУдаления()=1 . кому не в лом, набросайте шаблончик, плиз, со строкой подключения хотя бы на вычерк из итогов спсб  | 
|||
| 
    1
    
        vcv    
     23.04.17 
            ✎
    17:46 
 | 
         
        Тебе разово? Есть отличная обработка, пересчитывающая итоги по регистрам. А удалить записи из движений - запрос простой. Удалить движения и пересчитать обработкой итоги.     
         | 
|||
| 
    2
    
        vcv    
     23.04.17 
            ✎
    17:50 
 | 
         
        Запрос где-то такой, если ничего не путаю
 
        DELETE FROM $Регистр.ОстаткиТМЦ AS ОстаткиТМЦ INNER JOIN $Справочник.Номенклатура AS Номенклатура ON $ОстаткиТМЦ.Номенклатура = Номенклатура.ID WHERE (Номенклатура.ISMARK = 1)  | 
|||
| 
    3
    
        vcv    
     23.04.17 
            ✎
    17:55 
 | 
         
        не, запрос не такой. Вот такой, кажется, будет правильным. Но всё  равно, пишу без проверки и за себя не отвечаю :)
 
        DELETE FROM $Регистр.ОстаткиТМЦ AS ОстаткиТМЦ WHERE $ОстаткиТМЦ.Номенклатура IN ( SELECT Номенклатура.ID [Ссылка $Справочник.Номенклатура] FROM $Справочник.Номенклатура AS Номенклатура WHERE (Номенклатура.ISMARK = 1) )  | 
|||
| 
    4
    
        vcv    
     23.04.17 
            ✎
    17:57 
 | 
         
        И "AS ОстаткиТМЦ" убрать надо, для DELETE алиас без надобности     
         | 
|||
| 
    5
    
        Злопчинский    
     23.04.17 
            ✎
    18:02 
 | 
         
        ага, попробую
 
        сначал Select'ом проверить? . запрос из (3) не будет молотить часами с учетом того, что помеченных на удаление порядка 50 тыс?  | 
|||
| 
    6
    
        spock    
     23.04.17 
            ✎
    18:04 
 | 
         
        (5) нужно смотреть запрос из (2). После выполнения запроса, запустить ТиИ и итоги пересчитаются сами.     
         | 
|||
| 
    7
    
        vcv    
     23.04.17 
            ✎
    18:14 
 | 
         
        (5) А ты проверь на реальных данных сначала вложенный селект, время замерить. Но на мой взгляд, твои 50000 удалённых для нормального SQL-сервера так, на несколько секунд. 
 
        (6) ТИИ дело не быстрое. На моих 400+ гигах подобные вещи штатными средствами я стараюсь запустить в субботу, что бы гарантированно успеть к понедельнику. Обычно ночи хватает, но запас карман не тянет, так же?  | 
|||
| 
    8
    
        trdm    
     23.04.17 
            ✎
    18:25 
 | 
         
        (7) Есть обработка пересчета итогов регистров.     
         | 
|||
| 
    9
    
        vcv    
     23.04.17 
            ✎
    18:32 
 | 
         
        Предложи еще обработку пересчета бухитогов, да всяческих отборов и я буду счастлив :)     
         | 
|||
| 
    10
    
        spock    
     23.04.17 
            ✎
    18:50 
 | 
         
        (7) Полностью согласен. Не думаю, что у (0) большие базы, иначе бы он t-sql и 1с++ изучил на изусть - значит ТиИ реально.     
         | 
|||
| 
    11
    
        Злопчинский    
     23.04.17 
            ✎
    19:24 
 | 
         
        при удалении прямыми запросами записей по номенклатуре - нафига ТИИ?     
         | 
|||
| 
    12
    
        vcv    
     23.04.17 
            ✎
    19:45 
 | 
         
        (11) ТИИ или пересчет итогов. Что бы не разбираться, что и как устроено в таблице итогов регистра. Удаляешь движения, потом пересчитываешь итоги штатно, или обработкой, написанной в древние времена каким-то забытым архимагом :) :) :)     
         | 
|||
| 
    13
    
        Злопчинский    
     23.04.17 
            ✎
    19:47 
 | 
         
        (12) не, это не наш путь.
 
        буду удялять и движения и итоги. и ничего пересчитывать не нужно. ибо вычищается под ноль  | 
|||
| 
    14
    
        vcv    
     23.04.17 
            ✎
    19:56 
 | 
         
        (13) Думаю, ты прав. Не вижу, почему бы при таком удалении могло что-то пойти не так. Но, всё равно, из принципа, я бы сделал пересчет итогов после чистки :)     
         | 
|||
| 
    15
    
        vcv    
     23.04.17 
            ✎
    20:02 
 | 
         
        +(14) У себя этот пересчет итогов в любом случае регулярно делаю. Хотя бы потому, что в своей базе внедрил самопальные "гибкие группировки", которые иногда косячат на массовых операциях типа обмена УРБД.     
         | 
|||
| 
    16
    
        Злопчинский    
     23.04.17 
            ✎
    20:25 
 | 
         
        ща попробую (2)     
         | 
|||
| 
    17
    
        Злопчинский    
     24.04.17 
            ✎
    15:33 
 | 
         
        потестил (2) на выборку в консоли скуля
 
        выбрать из регистра.продажи (таблица итогов) SP2343 - это Регистр.Продажи.Номенклатура Select top 100 SP2343 FROM RG2351 AS ОстаткиТМЦ INNER JOIN SC84 AS Номенклатура ON ОстаткиТМЦ.SP2343 = Номенклатура.ID WHERE (Номенклатура.ISMARK = 1) вроде норм. как пристегнуть в вывод выборки наименование номенклатуры?  | 
|||
| 
    18
    
        Ёпрст    
     гуру 
    24.04.17 
            ✎
    15:38 
 | 
         
        (17) 
 
        and Номенклатура.descr = 'Вася'  | 
|||
| 
    19
    
        Злопчинский    
     24.04.17 
            ✎
    15:40 
 | 
         
        (18) не, не условие, а как это в 1С++ - типизировать вывод SP2343 (ссылка номенклатура) в виде номенклатура.наименование     
         | 
|||
| 
    20
    
        Ёпрст    
     гуру 
    24.04.17 
            ✎
    15:52 
 | 
         
        (19) хз, че тебе надо, если в QA, то тупо select  Номенклатура.descr в запросе из (17)     
         | 
|||
| 
    21
    
        Злопчинский    
     24.04.17 
            ✎
    16:00 
 | 
         
        (20) непонятно (тупой я)
 
        выбрать из таблицы итогов регистра продажи записи, в которых номенклатура из измерения "номенклатура" помечена на удаление. в качестве визуального представления записи вывести наименование номенклатуры, соответствующее измерению регистра продажи - типа так  | 
|||
| 
    22
    
        Злопчинский    
     24.04.17 
            ✎
    16:06 
 | 
         
        вот так получилось ожидаемое вроде
 
        Select top 100 Номенклатура.descr, SP2343 FROM RG2351 AS ОстаткиТМЦ INNER JOIN SC84 AS Номенклатура ON ОстаткиТМЦ.SP2343 = Номенклатура.ID WHERE (Номенклатура.ISMARK = 1)  | 
|||
| 
    23
    
        Злопчинский    
     24.04.17 
            ✎
    16:07 
 | 
         
        даже вот так
 
        Select top 100 Номенклатура.descr FROM RG2351 AS ОстаткиТМЦ INNER JOIN SC84 AS Номенклатура ON ОстаткиТМЦ.SP2343 = Номенклатура.ID WHERE (Номенклатура.ISMARK = 1)  | 
|||
| 
    24
    
        Злопчинский    
     24.04.17 
            ✎
    16:07 
 | 
         
        ломает мозг конструкция
 
        Select top 100 Номенклатура.descr FROM RG2351 AS ОстаткиТМЦ  | 
|||
| 
    25
    
        Злопчинский    
     24.04.17 
            ✎
    16:21 
 | 
         
        ага, посмотрел, вроде то что надо получаю
 
        3П/МТТ, елы-палы.  | 
|||
| 
    26
    
        Злопчинский    
     24.04.17 
            ✎
    16:23 
 | 
         
        А какой правильной 1С-ной QA юзаться? их несколько с разными доработками/усовершенстования от авторов...?     
         | 
|||
| 
    27
    
        Ёпрст    
     гуру 
    24.04.17 
            ✎
    16:42 
 | 
         
        (26) да пофик какой, обычно, их под себя переписываю, я к примеру, переписывал под оледб провайдера для дбф     
         | 
|||
| 
    28
    
        Злопчинский    
     24.04.17 
            ✎
    16:45 
 | 
         
        (27) вот я поэтому тренировочно-одноразово через консоль скуля.
 
        для меня оледб, одбц и прочее - китайская грамота  | 
|||
| 
    29
    
        Ёпрст    
     гуру 
    24.04.17 
            ✎
    16:56 
 | 
         
        (28) консоль, то конечно, круто. Вот только в ней нет метапарсера имён, типизации и.. ну ты понял :)     
         | 
|||
| 
    30
    
        Ёпрст    
     гуру 
    24.04.17 
            ✎
    16:57 
 | 
         
        так что, делай запросы хотя бы в 1cqa и пользуй всё мощь 1cpp     
         | 
|||
| 
    31
    
        Злопчинский    
     24.04.17 
            ✎
    16:58 
 | 
         
        (30) ну так и я про это! какой  1cqa взять? их несколько     
         | 
|||
| 
    32
    
        Ёпрст    
     гуру 
    24.04.17 
            ✎
    17:18 
 | 
         
        бери тот, который заработает :)     
         | 
|||
| 
    33
    
        Ёпрст    
     гуру 
    24.04.17 
            ✎
    17:18 
 | 
         
        некоторые к форма.привязки пользует, где-то еще какие плюшки     
         | 
|||
| 
    34
    
        Ёпрст    
     гуру 
    24.04.17 
            ✎
    17:19 
 | 
         
        на вот, для разнообразия
 
        http://www.1cpp.ru/forum/YaBB.pl?num=1157967835/all  | 
|||
| 
    35
    
        Злопчинский    
     24.04.17 
            ✎
    17:41 
 | 
         
        (32) вот вам болванка и напильник, автомат калашникова сделаете сами ;-)     
         | 
|||
| 
    36
    
        vcv    
     24.04.17 
            ✎
    19:32 
 | 
         
        (35) Русский человек с помощью напильника и такой-то матери любую микросхему сделает. И самое главное - хочешь сделать хорошо, сделай это сам. Потому что 99% разработок под 1С обладают всеми основными недостатками opensource. И нормально работать без доработки напильником могут только у автора.     
         | 
|||
| 
    37
    
        spock    
     24.04.17 
            ✎
    19:47 
 | 
         
        (36) :)     
         | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |