|   |   | 
| 
 | Запись с такими ключевыми полями существует! | ☑ | ||
|---|---|---|---|---|
| 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) ну я в Экселе сравнил верхнюю строчку со следующей если интересует как именно сравнил) везде нули - совпадений нет.
 строчки отсортировал естественно предварительно. | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |