|
Как очистить несколько записей из РБ?
|
Я
|
|
Козинак 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 | |
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 | |
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 | |
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) вот именно |
Ошибка? Это не ошибка, это системная функция.