![]() |
|
Запись с такими ключевыми полями существует! | ☑ | ||
---|---|---|---|---|
0
Bigbro
22.11.13
✎
07:37
|
понимаю что тема баян, в базе действительно могут быть записи с такими же измререниями, как быть? в наборе записей который я подготовил все уникально, хочется записать либо:
- с удалением предыдущих, перезаписать поверх; - без удаления просто пропуская эти строки; как то можно? |
|||
1
Wobland
22.11.13
✎
07:38
|
да
|
|||
2
anaed
22.11.13
✎
07:39
|
попытку не предлагать?
|
|||
3
Рэйв
22.11.13
✎
07:39
|
НаборЗаписей.Записать(Истина)
|
|||
4
Bigbro
22.11.13
✎
07:40
|
Записать(Истина) не помогает.
(1) как? |
|||
5
Godofsin
22.11.13
✎
07:40
|
Но я бы сначала разобрался, откуда берутся одинаковые записи с уникальными полями. А то наперезаписываешь там.
|
|||
6
Wobland
22.11.13
✎
07:40
|
(4) можно не читать НЗ, можно пытаться писать туда разные записи
|
|||
7
chelentano
22.11.13
✎
07:41
|
(4) если Записать(Истина) не помогает, значит, в том наборе, который ты записываешь, есть неуникальные записи
|
|||
8
Bigbro
22.11.13
✎
07:44
|
одинаковые берутся по той причине что свойство которое я пытаюсь заполнить - заполнено у части объектов. вручную. сейчас я его заполняю программно, скорее всего теми же данными.
(7) а как они могут быть, если я взял этот набор записей с того же регистра? только для другого свойства. периодичность та же, одно из измерений сохранил. второе измерение был отбор один элемент я поставил другой. |
|||
9
Bigbro
22.11.13
✎
07:47
|
попробую пояснить. это продолжение прошлой темы..
есть компьютеры. есть регистр свойств объектов, в котором измерениями является объект(компьютеры в данном случае) и свойство - процессор. я выбрал эти записи, заменил свойство другим, значение тоже, пытаюсь записать.. ошибка. как могут в регистре который я читаю быть неуникальные записи? |
|||
10
chelentano
22.11.13
✎
07:48
|
(9) в регистре не могут, а вот после твоих "заменил свойство другим, значение тоже" вполне могут возникнуть
|
|||
11
Bigbro
22.11.13
✎
07:55
|
(10) если могут возникнуть то я делаю Записать(Истина) и это не должно быть проблемой верно?
но ошибка сохраняется. |
|||
12
Bigbro
22.11.13
✎
08:13
|
Запрос.Текст = "ВЫБРАТЬ
|ТЗ1.Процессор, |ТЗ1.Уровень |Поместить ТЗ2 |из &ТЗ1 как ТЗ1; |//////////////////////////////// |Выбрать | ЗначенияСвойствОбъектовСрезПоследних.Период, | ЗначенияСвойствОбъектовСрезПоследних.Объект, | ЗначенияСвойствОбъектовСрезПоследних.Свойство, | ЗначенияСвойствОбъектовСрезПоследних.Значение как СтароеЗначение, | ТЗ2.Уровень как Значение |ИЗ | РегистрСведений.ЗначенияСвойствОбъектов.СрезПоследних КАК ЗначенияСвойствОбъектовСрезПоследних | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТЗ2 |ПО ЗначенияСвойствОбъектовСрезПоследних.Значение = ТЗ2.Процессор |ГДЕ | ЗначенияСвойствОбъектовСрезПоследних.Свойство = &ТипПроцессора | И ЗначенияСвойствОбъектовСрезПоследних.Объект В иерархии (&ГруппаНоменклатуры)"; Запрос.УстановитьПараметр("ТипПроцессора",_типПроц); Запрос.УстановитьПараметр("ГруппаНоменклатуры",_грНом); Запрос.УстановитьПараметр("ТЗ1",ТЗ1); рез=Запрос.Выполнить(); выборка=рез.Выбрать(); тз=рез.Выгрузить(); ТЗ.ЗаполнитьЗначения(_ФактУровень,"Свойство"); ТЗ.Колонки.Удалить("СтароеЗначение"); НаборЗаписейРегистра = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьНаборЗаписей(); НаборЗаписейРегистра.Загрузить(ТЗ); НаборЗаписейРегистра.Записать(Истина); взгляните на код, может что-то не так совсем? |
|||
13
Wobland
22.11.13
✎
08:20
|
ТЗ.ЗаполнитьЗначения(_ФактУровень,"Свойство");
|
|||
14
Wobland
22.11.13
✎
08:20
|
(13) хотя.. сторно
|
|||
15
chelentano
22.11.13
✎
08:22
|
(11) если в твоём новом наборе записей есть дублирующиеся значения, то Записать(Истина) тебе никак не поможет
|
|||
16
Bigbro
22.11.13
✎
08:23
|
(13)а что не так? там было одно свойство - уникальность была. стало другое - уникальность в полученном наборе должна сохраниться, неуникальность с учетом записей в базе не волнует - потому как записать(истина)..
(15) откуда они могут быть? это тот же самый регистр, я его только что прочитал.. |
|||
17
1dvd
22.11.13
✎
08:24
|
(16) проверить не судьба?
|
|||
18
Bigbro
22.11.13
✎
08:25
|
(17) как? там десятки тысяч записей..
подскажите как внутри запроса отладку делать |
|||
19
anaed
22.11.13
✎
08:27
|
(18) что в тз1?
|
|||
20
1dvd
22.11.13
✎
08:29
|
(18) для начала проверь ТЗ1 - Добавь колонку, заполни её единичками, потом сверни ТЗ1 по ключевым полям, единички суммируй при свертке. Если в ТЗ где-то будет больше 1, то ССЗБ
|
|||
21
Bigbro
22.11.13
✎
08:29
|
ок, это проверим сейчас.
|
|||
22
anaed
22.11.13
✎
08:30
|
(18) если в тз1 есть записи с повторяющимися процессорами, то по 1му объекту выберет несколько одинаковых записей.
|
|||
23
Bigbro
22.11.13
✎
09:09
|
в ТЗ1 исходной записи по процессорам разные.
|
|||
24
1dvd
22.11.13
✎
09:13
|
(23) т.е. один процессор - одна строка?
|
|||
25
hhhh
22.11.13
✎
09:25
|
(23) вот это что за бред?
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТЗ2 |ПО ЗначенияСвойствОбъектовСрезПоследних.Значение = ТЗ2.Процессор зачем по значению соединяете? А по объекту не соединяете? Вообще полностью вы Петросян. |
|||
26
anaed
22.11.13
✎
09:27
|
(25) может потому что в тз1 нет объекта, только старое и новое значение
|
|||
27
hhhh
22.11.13
✎
09:49
|
(26) уникальность проверяется по объекту вообще-то. КАк это нет объекта?
|
|||
28
hhhh
22.11.13
✎
09:54
|
(23) в общем, выяснили. Ваша программа в (12) вообще не проверяет объекты (компьютеры). Легко могло попасть два одинаковых компьютера в выборку.
|
|||
29
hhhh
22.11.13
✎
09:55
|
(28)+ а процессоров можно хоть тысячу одинаковых. Это не критично.
|
|||
30
Bigbro
22.11.13
✎
09:59
|
(28) конечно не проверяет.
я подразумеваю что выбираются только одно последнее значение при использовании срезпоследних для данного значения фильтра. я неправ? (26) да там нет объекта. только соответствие процессора и его производительности. |
|||
31
Bigbro
22.11.13
✎
10:09
|
(24) да
(25) потому что если бы у меня было соответствие объекта и нового свойства то задача была бы выполнена. |
|||
32
hhhh
22.11.13
✎
10:15
|
(30) если у вас
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТЗ2 |ПО ЗначенияСвойствОбъектовСрезПоследних.Значение = ТЗ2.Процессор разные объекты слева и справа, то получится две строчки одинаковых |
|||
33
Bigbro
22.11.13
✎
10:19
|
справа нет объектов вообще. откуда появятся лишние строчки?
я зрительно просматривал таблицу - добавлялась просто новая колонка, никаких задвоений. собственно мне это и нужно было. |
|||
34
hhhh
22.11.13
✎
10:40
|
попробуйте
ВЫБРАТЬ РАЗЛИЧНЫЕ |ТЗ1.Процессор, |ТЗ1.Уровень |Поместить ТЗ2 |из &ТЗ1 как ТЗ1 |
|||
35
Bigbro
22.11.13
✎
10:54
|
(34) Шайтан, сработало! почему так? значения точно разные, их там меньше 300 штук глазами все пересмотрел..
|
|||
36
anaed
22.11.13
✎
12:17
|
(35) глазами? 300 штук? пересмотрел? вы программист или где?
Вам в (20) расписали как за 5 минут проверить на дубли вашу тз1. |
|||
37
Bigbro
22.11.13
✎
12:23
|
(36) ну я в Экселе сравнил верхнюю строчку со следующей если интересует как именно сравнил) везде нули - совпадений нет.
строчки отсортировал естественно предварительно. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |