Имя: Пароль:
1C
1С v8
Регистр Сведений запись и удаление
,
0 smile03
 
23.11.14
14:12
Добрый день. Уважаемые, программисты, подскажите в чем причина. Добавил в конфигурацию УПП непериодический, независимый регистр сведений. В нем содержатся 2 измерения(Товары и Аксессуары). Записи добавляю через обработку, методом СоздатьНаборЗаписей и т.д
Для Каждого СтрокаНоменклатура Из ТаблицаНоменклатуры Цикл
            Для Каждого СтрокаАксессуар Из ТаблицаАксессуаров Цикл
                
                  Отбор = Новый Структура;
                  Отбор.Вставить("Товар",СтрокаНоменклатура.Товар);
                  Отбор.Вставить("Аксессуар", СтрокаАксессуар.Аксессуар);
                      НаборЗаписей = РегистрыСведений.сбТоварыИАксессуары.СоздатьНаборЗаписей();
                      НаборЗаписей.Прочитать();
                      Запись = НаборЗаписей.Добавить();
                      Запись.Товар = СтрокаНоменклатура.Товар;
                      Запись.Аксессуар = СтрокаАксессуар.Аксессуар;
                                   
                Попытка
                      НаборЗаписей.Записать();
                      Сообщить("К основному товару """+СтрокаНоменклатура.Товар+""" привязан аксессуар """+СтрокаАксессуар.Аксессуар+"""");
                Исключение
                      
                      Сообщить(ОписаниеОшибки());
                КонецПопытки;
                                    
            КонецЦикла;
        КонецЦикла;
Проверяю записи через список записей регистра, некоторый записей нет. Пытаюсь вручную удалить одну запись, она удаляется. Переоткрываю форму списка регистра, она вновь появилась. Почему возникают такие глюки? База sql, количество сеансов около 50. Проверяю тоже самое на тестовой базе, такого не наблюдаю.
1 zulu_mix
 
23.11.14
14:16
какой то адский ковнокод
2 Крошка Ру
 
23.11.14
15:03
(0)Честно говоря, не понимаю, зачем при добавлении каждой записи считывать весь регистр.
Если уж пишешь в регистр без отборов, пиши НаборЗаписи.Записать(Ложь), без предварительного чтения регистра.
Но, вообще, лучше конечно устанавливать отборы.
3 su_mai
 
23.11.14
15:08
(0) Используй "МенеджерЗаписи"
4 Wobland
 
23.11.14
15:08
и нечего в цикле записывать набор
5 Wobland
 
23.11.14
15:12
(3) это тот, который предназначен для интерактивной работы с записью регистра сведений?
6 su_mai
 
23.11.14
15:18
(5) какой то адский ковнокод
7 su_mai
 
23.11.14
15:24
8 smile03
 
23.11.14
15:27
Для Каждого СтрокаНоменклатура Из ТаблицаНоменклатуры Цикл
            НаборЗаписей = РегистрыСведений.сбТоварыИАксессуары.СоздатьНаборЗаписей();
            НаборЗаписей.Отбор.Товар.Установить(СтрокаНоменклатура.Товар);
            Для Каждого СтрокаАксессуар Из ТаблицаАксессуаров Цикл
                                                                      
                      Запись = НаборЗаписей.Добавить();
                      Запись.Товар = СтрокаНоменклатура.Товар;
                      Запись.Аксессуар = СтрокаАксессуар.Аксессуар;
                                                     
            КонецЦикла;
            НаборЗаписей.Записать();    
        КонецЦикла;


Так правильно писать?
9 su_mai
 
23.11.14
15:31
(8) Все правильно главное шоб работало :)
10 Wobland
 
23.11.14
15:33
(8) 1. создать набор
2. в цикле понадобавлять записей
3. записать набор
11 Wobland
 
23.11.14
15:33
(10) я б создание набора из цикла вынес
12 smile03
 
23.11.14
15:35
(11), а если я хочу несколько наборов записать?
13 Wobland
 
23.11.14
15:36
(12) видал НаборЗаписей.Отбор.Товар.Установить?
14 smile03
 
23.11.14
15:46
(13) вот так?

НаборЗаписей = РегистрыСведений.сбТоварыИАксессуары.СоздатьНаборЗаписей();
        Для Каждого СтрокаНоменклатура Из ТаблицаНоменклатуры Цикл
            
            НаборЗаписей.Отбор.Товар.Установить(СтрокаНоменклатура.Товар);
            Для Каждого СтрокаАксессуар Из ТаблицаАксессуаров Цикл
                                                                      
                      Запись = НаборЗаписей.Добавить();
                      Запись.Товар = СтрокаНоменклатура.Товар;
                      Запись.Аксессуар = СтрокаАксессуар.Аксессуар;
                                                     
            КонецЦикла;
            НаборЗаписей.Записать();    
        КонецЦикла;
15 Wobland
 
23.11.14
15:47
(14) похоже, ты путаешь меня с отладчиком
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn