![]() |
|
Независимый регистр сведений: как проще получить измененный набор записей? | ☑ | ||
---|---|---|---|---|
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) Проверено: набор можно не читать, достаточно лишь установить все отборы. Да и действительно, записи могут быть и удалены - там нечего будет читать.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |