Имя: Пароль:
1C
1С v8
Удалить запись из регистра сведений
0 Emilio
 
10.06.12
15:33
Делаю обработку записей из регистра сведений, но не могу придумать функцию по удалению. Если кто может подскажите пожалуйста.
на данный момент вот что сделал:


Перем мРезЗапроса; //Переменная для результата запроса

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


КонецПроцедуры // ЗагрузитьРезультат()

   

Процедура КнопкаВыполнитьНажатие(Кнопка)
       // Вставить содержимое обработчика.
    Предупреждение("Сейчас будут удалены штрихкоды");
       
КонецПроцедуры



Хотелось бы прикрутить удаление к кнопке выполнить.
удаление через перезаписывание набора записей не подходит, ругается, что поле обязательно.
Подскажите уже всю голову сломал.
З.ы. 1с только начал изучать прошу строго не ругаться)))
1 Zeldan
 
10.06.12
15:49
так заполни обязательное поле...
2 Jaffar
 
10.06.12
15:50
"удаление через перезаписывание набора записей не подходит, ругается, что поле обязательно. "
обязательное поле должно быть заполнено.
как варинат - сделай фиктивную запись в справочнике и заполняй регистр с ее помощью (хотя тоже нужно проверять, что дубля не было).
3 Emilio
 
10.06.12
15:56
Вероятно я не правильно процедуру написал, т.к. сейчас попробовал руками очистить запись в поле - она очистилась
4 Emilio
 
10.06.12
15:56
т.е. поле не обязательное %)
5 Emilio
 
10.06.12
18:43
Сделал так:

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


КонецПроцедуры // ЗагрузитьРезультат()

Процедура УдалитьШтрихкоды()
   //НаборЗаписей = РегистрыСведений.Штрихкоды.Выбрать();
   //НаборЗаписей.Загрузить(ТаблицаРезультата);
   //НаборЗаписей.Записать();
   Если ШК = ЭлементыФормы.ТаблицаРезультата.Значение и ШК = РегистрыСведений.ПоРегистратору(РегистрыСведений.Штрихкоды) тогда
   Для каждого ШК из РегистрыСведений.Штрихкоды Цикл
   ШК.Удалить();
   КонецЦикла;
   КонецЕсли
   КонецПроцедуры


Процедура КнопкаВыполнитьНажатие(Кнопка)
       // Предупреждение
   Предупреждение("Сейчас будут удалены штрихкоды");
   УдалитьШтрихКоды();    
КонецПроцедуры

теперь ошибки перестали выпадать, но и из регистра не удаляет. Что я не так сделал подскажите?
6 Emilio
 
10.06.12
18:52
Блин, мозг уже пухнет ((( <_>
7 DSSS
 
10.06.12
18:55
8 Emilio
 
10.06.12
19:09
Нет, я только что увидел компьютер и системник называю исключительно процессором.
Спасибо за гениальную помощь.
9 Jaffar
 
11.06.12
12:20
ШК - переменная модуля? моветон.
чем не подходит очистка набора записей?
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.