|   |   | 
| 
 | Независимый регистр сведений: как проще получить измененный набор записей? | ☑ | ||
|---|---|---|---|---|
| 0
    
        dave2000 22.11.15✎ 21:08 | 
        Нужно по определенному узлу обмена программно получить весь измененный набор записей регистра сведений в виде таблицы значений. Делаю так:
 1. Запросом (ВЫБРАТЬ * ИЗ РегистрСведений.ИмяРС.Изменения) получаю выборку измерений, по которым были изменения значений. 2. Создаю набор записей регистра, в цикле перебираю каждую строку выборки п.1, устанавливаю значения отбора по каждому измерению, делаю Прочитать(). 3. После каждого чтения набора п.3 все записи постепенно перекидываю в отдельную таблицу значений. Выходит длинный и мудрёный кусок кода. Проще никак нельзя? Скопом как-то прочитать. Либо я туплю, либо не знаю.. | |||
| 1
    
        dave2000 22.11.15✎ 21:19 | 
        Как вариант, можно получать сразу всё одним запросом п.1 через левое соеднинением с самим регистром. Выходит чуть проще.     | |||
| 2
    
        Fedor-1971 22.11.15✎ 21:47 | 
        (0) тебе нужен просто набор или ты его будешь изменять?     | |||
| 3
    
        RomanYS 22.11.15✎ 21:47 | 
        если прочитать то конечно (1), а записывать проще циклом, иначе много заморочек с отборами и риск зацепить что-либо лишнее     | |||
| 4
    
        dave2000 22.11.15✎ 21:56 | 
        (2) Только прочитать, изменять не нужно 
 (3) Просто думал может можно как-то еще проще. | |||
| 5
    
        Fedor-1971 22.11.15✎ 22:01 | 
        (4) возможно, понятнее и нагляднее будет работать через НаборЗаписей с установленным отбором, но не факт что это будет оптимальнее и проще.     | |||
| 6
    
        RomanYS 22.11.15✎ 22:23 | 
        "еще проще" - позови программиста, сделает тебе кнопку)
 вместо соединения можно сделать выбрать * из Регистр где (измерение1, измерение2...) В (выбрать измерение1, измерение2... из Изменения) Не факт, что проще и оптимальнее... но вариант | |||
| 7
    
        dave2000 22.11.15✎ 22:40 | 
        (5) (6) Сделал всё таки через левое соединение, т.к. если вдруг запись была удалена, мне нужно получать значения ресурсов NULL (т.е. ничего не присоединено)     | |||
| 8
    
        ЧеловекДуши 23.11.15✎ 07:14 | 
        (0) Как вариант, сперва определись, что есть "Изменение". После уже пляши далее :)
 И лучше всего работать с прямыми запросами. Коль нужна скорость. | |||
| 9
    
        ЧеловекДуши 23.11.15✎ 07:17 | 
        (7) Если запись была удалена, то надо там где "Изменен", отметить или удалить её тоже :)     | |||
| 10
    
        ЧеловекДуши 23.11.15✎ 07:18 | 
        ....Я не вижу что у вас там, для чего там. И что такое "Изменен". Несть только абстрактное представление кусочка в (0). :) ...     | |||
| 11
    
        dave2000 23.11.15✎ 13:12 | 
        (9) Имелось в виду так:
 ВЫБРАТЬ РегИзменения.Измерение1, РегИзменения.Измерение2, РегИзменения.Измерение3, РегИзменения.Ресурс1, РегИзменения.Ресурс2, РегИзменения.Ресурс3 ИЗ РегистрСведений.ИмяРС.Изменения КАК РегИзменения ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ИмяРС КАК Рег ПО РегИзменения.Измерение1 = Рег.Измерение1 И РегИзменения.Измерение2 = Рег.Измерение2 И РегИзменения.Измерение3 = Рег.Измерение3 Т.е. ресурсы тех записей, которые были удалены, в выборке будут иметь значение NULL. | |||
| 12
    
        dave2000 23.11.15✎ 13:14 | 
        (11) Ой, вернее вот так:
 ВЫБРАТЬ РегИзменения.Измерение1, РегИзменения.Измерение2, РегИзменения.Измерение3, Рег.Ресурс1, Рег.Ресурс2, Рег.Ресурс3 ИЗ РегистрСведений.ИмяРС.Изменения КАК РегИзменения ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ИмяРС КАК Рег ПО РегИзменения.Измерение1 = Рег.Измерение1 И РегИзменения.Измерение2 = Рег.Измерение2 И РегИзменения.Измерение3 = Рег.Измерение3 | |||
| 13
    
        dave2000 23.11.15✎ 13:21 | 
        Ещё такой вопрос по поводу УдалитьРегистрациюИзменений(Узел, НаборЗаписей).
 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=651643&msg=7002964 Здесь пишут, что после установки значений отборов НаборЗаписей.Прочитать() делать не обязательно. Это так? | |||
| 14
    
        dave2000 24.11.15✎ 22:33 | 
        (13) Проверено: набор можно не читать, достаточно лишь установить все отборы. Да и действительно, записи могут быть и удалены - там нечего будет читать.     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |