Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

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

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

[/1c]
 
 
   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) вот именно


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