Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

Как очистить несколько записей из РБ?

Как очистить несколько записей из РБ?
Я
   Козинак
 
03.10.16 - 08:40
Добрый день, как очистить несколько записей по условию из движения регистра бухгалтерии? Вот так пытаюсь делать, но таким образом все записи очищаются.
    Запрос = Новый Запрос;
    Запрос.Текст = 
    "ВЫБРАТЬ
    |   ХозрасчетныйОбороты.Регистратор.Ссылка КАК Ссылка
    |ИЗ
    |   РегистрБухгалтерии.Хозрасчетный.Обороты(&НачДата, &КонДата, Запись, , , Организация = &Организация, , ) КАК ХозрасчетныйОбороты
    |ГДЕ
    |   ТИПЗНАЧЕНИЯ(ХозрасчетныйОбороты.Регистратор) = ТИП(Документ.РегламентнаяОперация)
    |           И ХозрасчетныйОбороты.Регистратор.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыРегламентныхОпераций.ИмпортЗарплатыВодителейИМеханизаторов)";
    мКонГраница= новый Граница(КонецМесяца(СтруктураШапкиДокумента.Дата),ВидГраницы.Включая);
    Запрос.УстановитьПараметр("КонДата", мКонГраница);
    Запрос.УстановитьПараметр("НачДата", НачалоМесяца(СтруктураШапкиДокумента.Дата));
    Запрос.УстановитьПараметр("Организация", СтруктураШапкиДокумента.Организация);
    Результат1 = Запрос.Выполнить();
    Выборка1 = Результат1.Выбрать();    
    Пока Выборка1.Следующий() Цикл
        НаборЗаписей  = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
        НаборЗаписей.Отбор.Регистратор.Значение = Выборка1.Ссылка;
        НаборЗаписей.Прочитать();
       Для Каждого Проводка ИЗ НаборЗаписей Цикл
          Если Проводка.СчетДт=ПланыСчетов.Хозрасчетный.НайтиПоКоду("20.01")Тогда
           НаборЗаписей.Очистить();
          КонецЕсли; 
       КонецЦикла;
      НаборЗаписей.Записать();
    КонецЦикла;


 
 
   jsmith
 
1 - 03.10.16 - 08:41
рукалицо
   DrShad
 
2 - 03.10.16 - 08:42
НаборЗаписей.Отбор.Регистратор.УстановитьОтбор()
   DrShad
 
3 - 03.10.16 - 08:42
набор записей выгружать в ТЗ, модифицировать и снова загрузить
   KSergey1C
 
4 - 03.10.16 - 08:43
(3) С субконто такая халява не пройдет.

Надо те проводки которые не нужны выгрузить в список а потом обойти этот список удаляя проводки из набора записей.
   zak555
 
5 - 03.10.16 - 08:44
(4) чего не пройдёт ?
   zak555
 
6 - 03.10.16 - 08:45
Обходи с конца выборку и Удалить (Индекс)
   DrShad
 
7 - 03.10.16 - 08:49
можно и не с конца, а удалять передавая строки вместо индексов
   DrShad
 
8 - 03.10.16 - 08:50
(4) 100500 раз так делал - все работает
   zak555
 
9 - 03.10.16 - 08:54
(7) точно?
запись идентифицируется номером
   DrShad
 
10 - 03.10.16 - 08:54
(9) а ты проверь
 
 Рекламное место пустует
   zak555
 
11 - 03.10.16 - 08:55
(10) на планшете нет конфигуратора
   Козинак
 
12 - 03.10.16 - 09:00
всем спасибо, буду пробовать
   DrShad
 
13 - 03.10.16 - 09:02
(11) ща у себя открою и дам справку из СП
   DrShad
 
14 - 03.10.16 - 09:05
ТаблицаЗначений (ValueTable)
Удалить (Delete)
Вариант синтаксиса: Удаление по объекту

Синтаксис:

Удалить(<Строка>)
Параметры:

<Строка> (обязательный)

Тип: СтрокаТаблицыЗначений.
Удаляемая строка таблицы значений. 
Вариант синтаксиса: Удаление по индексу

Синтаксис:

Удалить(<Индекс>)
Параметры:

<Индекс> (обязательный)

Тип: Число.
Индекс строки, которую необходимо удалить.
Описание:

Удаляет строку таблицы значений.

Доступность:

Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер).
   Рэйв
 
15 - 03.10.16 - 09:09
(0)Это кривая идея. Документ проведут заново и ты даже не узнаешь , что у тебя все обратно вернулось.
Делай режим проведения документа без ненужных тебе движений
   KSergey1C
 
16 - 03.10.16 - 09:13
(15) если подписку сделает то все нормально будет.
   ovrfox
 
17 - 03.10.16 - 09:26
В чем твоя ошибка
Во первых для удаления одной строки ты используешь команду
НаборЗаписей.Очистить(), который очищает всю таблицу значений, а не удаляет одну строку.
Во вторых, когда ты записываешь набор записей, он предварительно удалет все уже существующие записи по установленному отбору ( в твоем случае отбор установлен по конкретному документу)
Оптимальнее сделать так:
1. Создать массив
2. Вместо удаления в цикле - дополнить массив проводками для удаления
3. Добавить цикл по элементам массива и удалить их из набора записей
И только после этого записать набор записей.

Для обработки набора записей лучше его выгружать в Таблицу значений а в конце загружать назад.
   zak555
 
18 - 03.10.16 - 09:34
(14) а теперь удалить для записи набора
   zak555
 
19 - 03.10.16 - 09:40
(17) какой же бред
   DrShad
 
20 - 03.10.16 - 10:00
(18) а я изначально говорил про выгрузку набора
   zak555
 
21 - 03.10.16 - 10:02
(20) зачем промежуточные действия ?
   DrShad
 
22 - 03.10.16 - 10:02
(21) чтобы не заморачиваться с индексами )))
   zak555
 
23 - 03.10.16 - 10:07
(22) у набора удалить -- тоже можно передать запись, вместо индекса
   DrShad
 
24 - 03.10.16 - 10:09
(23) возможно, но я привык через промежуточные танцы
   DrShad
 
25 - 03.10.16 - 10:15
в принципе согласен что через сам набор покошернее будет, а то часто встречаются умельцы, у которых по документу идет более 10К записей и их выкидывать в ТЗ геммор
   zak555
 
26 - 03.10.16 - 10:59
(24) бросай такую привычку

(25) вот именно


Список тем форума
Рекламное место пустует  Рекламное место пустует
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует