Имя: Пароль:
1C
1С v8
Удаление нескольких записей из регистра сведений
, ,
0 Web00001
 
06.09.13
19:24
Доброго всем времени суток. Необходимо из непериодического регистра сведений удалить несколько записей, а оставить одну. Хотелось бы просто записать набор с установленным отбором и одной записью. Но 1С возражает что так не пойдет и такая запись уже есть. Конечно есть! И я с ней согласен. Но по идее она должна старый набор заменить заменить новым, а этого не происходит. Конечно можно очистить набор и добавить запись в уже чистый набор, но не хотелось бы записывать набор два раза.


Процедура УдалитьВсеКромеУказанного(НужныйКод, НужныйВладелец)
    НаборЗаписей = РегистрыСведений.Штрихкоды.СоздатьНаборЗаписей();
    НаборЗаписей.Отбор.Штрихкод.Установить(НужныйКод);
    
    НоваяЗаписьНабора = НаборЗаписей.Добавить();
    НоваяЗаписьНабора.Владелец = НужныйВладелец;
    НоваяЗаписьНабора.ЕдиницаИзмерения = НужныйВладелец.ЕдиницаХраненияОстатков;
    НоваяЗаписьНабора.ТипШтрихкода = ПланыВидовХарактеристик.ТипыШтрихкодов.EAN13;
    НоваяЗаписьНабора.Штрихкод = НужныйКод;
    НоваяЗаписьНабора.Качество = Справочники.Качество.Новый;
    
    НаборЗаписей.Записать();    
КонецПроцедуры
1 Живой Ископаемый
 
06.09.13
19:27
выгрузи в тз, удали там строки, добавь одну, загрузи тз в набор, запиши, ???, получм профит
2 ale-sarin
 
06.09.13
19:28
(0) У набора записей можно удалять записи
А также есть МенеджерЗаписи
3 Web00001
 
06.09.13
19:33
(2)Так точно не надо делать
4 Web00001
 
06.09.13
19:34
(1)Как вариант, надо попробовать.
5 ale-sarin
 
06.09.13
19:35
(3) Как не надо делать?
6 Пират
 
06.09.13
19:35
Який хлопчик неопытный
7 Web00001
 
06.09.13
19:36
Делать запись в базу столько раз, сколько лишних записей в регистре.
8 Web00001
 
06.09.13
19:37
(7) к (5)
(6) Особенно твой коментарий был самым нужным.
9 ЧашкаЧая
 
06.09.13
19:37
Нужно очистить записи по определенному штирхкоду?

НаборЗаписей = РегистрыСведений.Штрихкоды.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Штрихкод.Установить(НужныйКод);
НаборЗаписей.Записать();
10 Fragster
 
модератор
06.09.13
19:38
(7) тут все зависит от того, какие галочки у измерения стоят
11 Web00001
 
06.09.13
19:39
(9) нет :) Нужно удалить все записи кроме одной одной записью в регистр.
12 ale-sarin
 
06.09.13
19:39
(7) Зависит от примера.
Удаление записей из набора, а потом его запись - это один раз.
А через ТЗ, тоже самое, только дольше.
13 ЧашкаЧая
 
06.09.13
19:43
(11) Имхо, одной записью не получится (если нужно удалить разные наборы измерений). Предлагаю сначала очистить, а потом добавить одну запись.

НаборЗаписей = РегистрыСведений.Штрихкоды.СоздатьНаборЗаписей();
НаборЗаписей.Записать();

Запись = НаборЗаписей.Добавить();
...
НаборЗаписей.Записать();
14 Web00001
 
06.09.13
19:49
(10)
Штрихкод - Основной отбор
Владелец - Все галки стоят

(12) ты имеешь ввиду вот так?
Процедура УдалитьВсеКромеУказанного(НужныйКод, НужныйВладелец)
    НаборЗаписей = РегистрыСведений.Штрихкоды.СоздатьНаборЗаписей();
    НаборЗаписей.Отбор.Штрихкод.Установить(НужныйКод);
    НаборЗаписей.Прочитать();
    
    Для Каждого ЗаписьНабора Из НаборЗаписей Цикл
        Если ЗаписьНабора.Владелец = НужныйВладелец Тогда Продолжить; КонецЕсли;    
        НаборЗаписей.Удалить(ЗаписьНабора);
    КонецЦикла;
    
    НаборЗаписей.Записать();
КонецПроцедуры
15 Fragster
 
модератор
06.09.13
19:52
(14) ну вставь в ПередЗаписью Сообщить("Гыгыгы") и удивись
при записи набора с отбором по ШК, в котором несколько строк
16 Web00001
 
06.09.13
19:52
(13)С предварительной очисткой регистра по отбору, то конечно все и так понятно. Хотелось бы как то поинтереснее.
17 Web00001
 
06.09.13
19:59
(15)Специально сделал 10 записей с одним штрихкодом и запустил вот такой код:
Процедура УдалитьВсеКромеУказанного(НужныйКод, НужныйВладелец)
    НаборЗаписей = РегистрыСведений.Штрихкоды.СоздатьНаборЗаписей();
    НаборЗаписей.Отбор.Штрихкод.Установить(НужныйКод);
    НаборЗаписей.Записать();
    
    НоваяЗаписьНабора = НаборЗаписей.Добавить();
    НоваяЗаписьНабора.Владелец = НужныйВладелец;
    НоваяЗаписьНабора.ЕдиницаИзмерения = НужныйВладелец.ЕдиницаХраненияОстатков;
    НоваяЗаписьНабора.ТипШтрихкода = ПланыВидовХарактеристик.ТипыШтрихкодов.EAN13;
    НоваяЗаписьНабора.Штрихкод = НужныйКод;
    НоваяЗаписьНабора.Качество = Справочники.Качество.Новый;
    
    НаборЗаписей.Записать();    
КонецПроцедуры
Отработало 2 раза. Юмор не догнал.