Имя: Пароль:
1C
1С v8
Добавление записей в регистр сведений: перезаписываются...
,
0 листопад
 
08.07.14
21:57
БП 3.0 упр.формы.

Есть функция, с помощью которой получаю данные из другой программы (не 1С), а затем записываю полученные данные в регистр сведений "ЗапросДубликатов".
Регистр сведений "ЗапросДубликатов" состоит из измерений:
- CodeContract
- DMPro
- Email
- CentrOffice
- Division
- Date
- Status

Подскажите, почему при записи в этот регистр, данные перезаписываются. Мне надо, чтобы они добавлялись. Вот код:

Функция Duplicate(CodeContract, DMPro, Email, CentrOffice, Division, Error)
    
    Попытка
        
        Запрос = Новый Запрос;
        Запрос.Текст =
        "ВЫБРАТЬ
        |    ДоговорыКонтрагентов.КодДоговора,
        |    ДоговорыКонтрагентов.Ссылка
        |ИЗ
        |    Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
        |ГДЕ
        |    ДоговорыКонтрагентов.КодДоговора = &KodDog";
        
        Запрос.УстановитьПараметр("KodDog", CodeContract);
        
        ВыборкаДоговоров = Запрос.Выполнить().Выбрать();
        
        Пока ВыборкаДоговоров.Следующий() Цикл
            
            КодДоговора =       ВыборкаДоговоров.КодДоговора;
            прервать;
            
        КонецЦикла;
        
        НаборЗаписей = РегистрыСведений.ЗапросДубликатов.СоздатьНаборЗаписей();
        НоваяЗапись = НаборЗаписей.Добавить();
        НоваяЗапись.CodeContract = CodeContract;
        НоваяЗапись.DMProject    = DMProject;
        НоваяЗапись.Email        = Email;
        НоваяЗапись.CentrOffice  = CentrOffice;
        НоваяЗапись.Division     = Division;
        НоваяЗапись.Date          = ТекущаяДата();
        НоваяЗапись.Status         = "Получен запрос из CRM";
        
        НаборЗаписей.Записать(Ложь);
        
        Error = "No Error";
    Исключение
        Error = ОписаниеОшибки();
    КонецПопытки;
    
КонецФункции
1 GreatOne
 
08.07.14
22:10
почему все молчат? вся таблица перезаписывается?
2 листопад
 
08.07.14
22:11
(1) Да
3 Armando
 
08.07.14
22:11
Аукцион по продаже СП объявляется открытым!
4 Крошка Ру
 
08.07.14
22:11
(2) Точно перезаписывается? Может все-таки ошибку выдает?
5 GreatOne
 
08.07.14
22:13
(4) да не, без отборов все перезапишет и не чихнет
6 Крошка Ру
 
08.07.14
22:14
(5)Если измерения совпадают с ранее введенной записью, то чихнет
7 Крошка Ру
 
08.07.14
22:15
+(6) А, хотя ТекущаяДата() же
8 hhhh
 
08.07.14
22:17
(2) вы пьяны? Почему отбора нет у набора записей?
9 GreatOne
 
08.07.14
22:17
(7) Даже проверил. правда ругается
10 листопад
 
08.07.14
22:19
(5) Про отбор тоже думала, но незнаю как его применить к моему регистру. Т.к. измерения у меня таких типов:

- CodeContract (строка)
- DMPro (булево)
- Email (булево)
- CentrOffice (булево)
- Division (строка)
- Date (дата)
- Status (строка)
11 GreatOne
 
08.07.14
22:19
(10) так и применить
12 листопад
 
08.07.14
22:19
(8) смотрите (10)
13 листопад
 
08.07.14
22:21
(11) Как применить? Не срабатывает, если пишу:
НаборЗаписей.Отбор.CodeContract.Установить(CodeContract);
14 Крошка Ру
 
08.07.14
22:23
Да причем здесь Отбор? Это РС, можно без отбора.
А вот почему весь регистр перезаписывается - это странно...
Могу посоветовать перед добавлением НовойЗаписи, применить метод НаборЗаписи.Прочитать()
Но все равно странно.
15 Крошка Ру
 
08.07.14
22:23
*НаборЗаписей
16 GreatOne
 
08.07.14
22:23
17 GreatOne
 
08.07.14
22:24
(14)"А вот почему весь регистр перезаписывается - это странно... " это как раз и не странно!
18 Крошка Ру
 
08.07.14
22:27
(17) Это почему?
19 GreatOne
 
08.07.14
22:29
20 GreatOne
 
08.07.14
22:30
(19) хотя по правде говоря, просто помню, что так всегда происходит, а объяснить толком не понимаю как. Вот вчитался в описание и что-то выцепил)
21 Крошка Ру
 
08.07.14
22:30
(19) 1)Обращаю внимание на слово "может"
2)"Синтаксис:

Записать(<Замещать>)
Параметры:

<Замещать> (необязательный)

Тип: Булево.
Определяет режим замещения существующей записи в соответствии с текущими установками отбора. Истина - перед записью существующие записи будут удалены. Ложь - записи будут дописаны к уже существующим в информационной базе записям"
22 листопад
 
08.07.14
22:33
(21) Так я и написала:
НаборЗаписей.Записать(Ложь);
23 GreatOne
 
08.07.14
22:34
я даже напрягся... но надо собаку вести срочно. Помню же, что всегда отборы надо делать, что регистр не убить, приду гляну точнее
24 Крошка Ру
 
08.07.14
22:35
(22) К тебе претензий нет
Если добавить "НаборЗаписей.Прочитать()", работает?
25 Крошка Ру
 
08.07.14
22:36
(23) Для РН - да обязательно, как минимум - по регистратору, для независимого РС - нет.
26 Крошка Ру
 
08.07.14
22:53
(22) О, и кстати...

Я правильно понимаю, что первая часть функции(которая до набора записей) работает так: ты в запрос передаешь код договора, а он возвращает его обратно? Ты подаешь, а он отбивает?