Имя: Пароль:
1C
1С v8
Запись в РегистрСведений (замещаются записи, если даты совпадают)
0 dft2014
 
17.05.14
12:57
Подскажите, как справиться с проблемой при программной записи в РегистрСведений "Заметки". Его структура:
Измерения (Дата, Объект);
Ресурсы (Автор, Содержание, ВидЗаметки).

В регистре уже есть записи с Датой=15.05.2014 и ВидомЗаметки="доверенность". Проблема возникает при новом добавлении записей с совпадающей датой. Например, надо добавить новые записи с ВидомЗаметки="договор", при этом уже существующие записи с ВидомЗаметки="доверенность" не изменять.

А у меня получается так, что при загрузке, если у новых записей дата, отличная от 15.05.2014, то все хорошо (в регистре появляется новая запись с ВидомЗаметки "Договор" и не затирается старая запись с ВидомЗаметки "Доверенность"), если же дата новой записи совпадает с 15.05.2014, то все старые записи затираются, хотя у них был ВидЗаметки="доверенность", а вместо них создаются новые записи с ВидомЗаметки="договор".

Вот код:


Функция ЗаписатьЛС(ТаблМас)

Для Каждого стрНом Из ТаблМас Цикл
    
    ВидЗ = Справочники.ВидыЗаметок.НайтиПоНаименованию("договор");
    
    Если  НЕ ВидЗ.Пустая() Тогда
        ВидЗаметки = ВидЗ.Ссылка;
        
        з=Новый Запрос;
        з.Текст=        
        "ВЫБРАТЬ
        |    Заметки.Дата,
        |    Заметки.Объект,
        |    Заметки.ВидЗаметки
        |ИЗ
        |    РегистрСведений.Заметки КАК Заметки
        |ГДЕ
        |    Заметки.Объект = &ФЛ
        |    И Заметки.ВидЗаметки = &Вид";
        
        з.УстановитьПараметр("ФЛ",стрНом.ФИО);
        з.УстановитьПараметр("Вид", ВидЗаметки);
        
        ТаблРез = З.Выполнить().Выгрузить();
        ТаблРезКол = ТаблРез.Количество();            
        
        Если ТаблРезКол = 0 Тогда
            
            ЗаписьРС = РегистрыСведений.Заметки.СоздатьМенеджерЗаписи();
            ЗаписьРС.Дата = стрНом.ДатаАД;      
            ЗаписьРС.Объект = ТаблФИО[0].Ссылка;
            //        ЗаписьРС.Автор = ;
            ЗаписьРС.Содержание = стрНом.НомерАД;
            ЗаписьРС.ВидЗаметки = ВидЗаметки;
            ЗаписьРС.Записать();  
            //     ЗаписьРС.Записать(Ложь);
            
        КонецЕсли;
        
    КонецЕсли;
    
КонецЦикла;

Возврат Истина;

КонецФункции
1 Адский плющ
 
17.05.14
12:59
Например, надо добавить новые записи с ВидомЗаметки="договор", при этом уже существующие записи с ВидомЗаметки="доверенность" не изменять.


ты букварь читал?
2 dft2014
 
17.05.14
13:00
+(0) РС - непериодический.

Если вместо:
ЗаписьРС.Записать();
пишу:
ЗаписьРС.Записать(Ложь);
то выдает ошибку, что запись с такими ключевыми полями существует! Хотя у старых записей ВидЗаметки - доверенность, а у новых - договор.
3 Tateossian
 
17.05.14
13:01
ВидЗаметки переделать на измерения. Но не удалив ресурс, разумеется. И все обращения к регистру поправить.
4 Адский плющ
 
17.05.14
13:02
(2) ВидЗаметки это ресурс, а не измерение. Мозг включи.
5 dft2014
 
17.05.14
13:03
(1) А что не так? При ручном добавлении, в пользовательском режиме - все нормально, дает добавить хоть сколько записей физ.лицу, с любыми датами и ВидамиЗаметок.
6 dft2014
 
17.05.14
13:06
(5) А нет, не дает при ручном добавлении запись делать, если даты совпадают ((( Это никак не обойти???
7 Defender aka LINN
 
17.05.14
13:15
(6) Ты ответов принципиально не читаешь?
8 dft2014
 
17.05.14
13:34
Вопрос закрыт.
Независимо от того, куда вы едете — это в гору и против ветра!