|
удаление записей из регистра бухгалтерии | ☑ | ||
---|---|---|---|---|
0
razerw
07.10.14
✎
10:37
|
Уважаемые программисты, подскажите пожалуйста правильно ли я удаляю запись из регистра хоз Бухгалтерии. Представленный код отрабатывает уже более часа, по оборотке по счету 10.11 вижу что записи то удаляются то снова появляются, прыгают суммы.
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ХозрасчетныйОстатки.Счет, | ХозрасчетныйОстатки.Субконто1, | ХозрасчетныйОстатки.Субконто2, | ХозрасчетныйОстатки.Субконто3, | ХозрасчетныйОстатки.Организация КАК Организация, | ХозрасчетныйОстатки.СуммаОстаток КАК СуммаОстаток, | ХозрасчетныйОстатки.КоличествоОстаток |ИЗ | РегистрБухгалтерии.Хозрасчетный.Остатки КАК ХозрасчетныйОстатки |ГДЕ | ХозрасчетныйОстатки.Счет = &Счет | И ХозрасчетныйОстатки.СуммаОстаток = 0 | И ХозрасчетныйОстатки.КоличествоОстаток < 0 | И ХозрасчетныйОстатки.Организация = &Организация |ИТОГИ ПО | Организация"; Запрос.УстановитьПараметр("Счет", ПланыСчетов.Хозрасчетный.СпецоснасткаИСпецодеждаВЭксплуатации); Запрос.УстановитьПараметр("Организация", Орг); ВыборкаЗапроса = Запрос.Выполнить().Выбрать(); Набор = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей(); Набор.Отбор.Регистратор.Установить(Сылка); Набор.Прочитать(); Пока ВыборкаЗапроса.Следующий() Цикл // изменение существующих записей Для Каждого Движение Из Набор Цикл Если ВыборкаЗапроса.Субконто1 = Движение.СубконтоКт.Номенклатура Тогда Набор.Прочитать(); Набор.Удалить(0); Набор.Записать(); Сообщить("Удалено"); КонецЕсли; КонецЦикла; КонецЦикла; моя цель удалять конкретные записи |
|||
2
Maxus43
07.10.14
✎
10:40
|
Вот ты выбрал остатки по всегму регистру, а удаляешь записи только у
Набор.Отбор.Регистратор.Установить(Сылка); только из проводок конкретного документа, причем по много много раз, короче смысла нет в коде |
|||
4
razerw
07.10.14
✎
10:44
|
в запросе, я отобрал номенклатуру с нулевыми остаткими, теперь по документу Операция (бух и нал) я ищу эти записи и удаляю
|
|||
5
Зеленый пень
07.10.14
✎
10:45
|
(0) Сравниваешь текущую запись набора, а удаляешь всегда запись с индексом 0 - и будет у тебя это продолжаться до тех пор, пока нужная запись не станет первой. Шикарно!
Ну и запись/чтение после каждого удаления - это ой. |
|||
6
razerw
07.10.14
✎
10:47
|
(5) подскажи как определить точный индекс?
|
|||
8
tridog
07.10.14
✎
10:47
|
(0) Посмотрел приведенный код. Ушел плакать кровью.
|
|||
9
Maxus43
07.10.14
✎
10:48
|
Набор.Прочитать();
Набор.Удалить(0); Набор.Записать(); кто сказал что удаляешь нужную строку? удаляешь первую всегдв... Это вот Набор.Прочитать(); возможно даже превращает цикл в бесконечный... |
|||
10
razerw
07.10.14
✎
10:50
|
я тоже иногда плачу от того что пишу )))
|
|||
11
Мыш
07.10.14
✎
10:50
|
(6) Что удалить то хочешь? Все движения по определенной номенклатуре?
|
|||
12
tridog
07.10.14
✎
10:51
|
(10) Может пора остановиться?
|
|||
13
Мыш
07.10.14
✎
10:52
|
(12) На ошибках учатся, пусть движется )
|
|||
14
razerw
07.10.14
✎
10:55
|
(7) представленный тобой код не плох имеет шанс на успех, но Набор.Удалить(ЗаписьДляУдаления); так нельзя удалять, в виде аргумента требуется индекс строки
|
|||
17
Мыш
07.10.14
✎
10:57
|
(14) Ты неправ. Либо индекс, либо ссылку на запись.
|
|||
18
razerw
07.10.14
✎
10:58
|
я пробовал
{Форма.Форма.Форма(44)}: Ошибка при вызове метода контекста (Удалить) Набор.Удалить(ЗаписДляУдаления); по причине: Недопустимое значение параметра (параметр номер '1') |
|||
20
Мыш
07.10.14
✎
10:59
|
(18) Тип значения не тот, значит.
Вариант синтаксиса: По объекту записи Синтаксис: Удалить(<Запись>) Параметры: <Запись> (обязательный) Тип: >>>>>>>>>>>>> РегистрБухгалтерииЗапись. Удаляемая запись. |
|||
21
razerw
07.10.14
✎
10:59
|
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ | ХозрасчетныйОстатки.Счет, | ХозрасчетныйОстатки.Субконто1, | ХозрасчетныйОстатки.Субконто2, | ХозрасчетныйОстатки.Субконто3, | ХозрасчетныйОстатки.Организация КАК Организация, | ХозрасчетныйОстатки.СуммаОстаток КАК СуммаОстаток, | ХозрасчетныйОстатки.КоличествоОстаток |ИЗ | РегистрБухгалтерии.Хозрасчетный.Остатки КАК ХозрасчетныйОстатки |ГДЕ | ХозрасчетныйОстатки.Счет = &Счет | И ХозрасчетныйОстатки.СуммаОстаток = 0 | И ХозрасчетныйОстатки.КоличествоОстаток < 0 | И ХозрасчетныйОстатки.Организация = &Организация |ИТОГИ ПО | Организация"; Запрос.УстановитьПараметр("Счет", ПланыСчетов.Хозрасчетный.СпецоснасткаИСпецодеждаВЭксплуатации); Запрос.УстановитьПараметр("Организация", Орг); ВыборкаЗапроса = Запрос.Выполнить().Выбрать(); Набор = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей(); Набор.Отбор.Регистратор.Установить(Сылка); Набор.Прочитать(); МассивДляУдаления = Новый Массив; Пока ВыборкаЗапроса.Следующий() Цикл // изменение существующих записей Для Каждого Движение Из Набор Цикл Если ВыборкаЗапроса.Субконто1 = Движение.СубконтоКт.Номенклатура Тогда МассивДляУдаления.Добавить(Движение); КонецЕсли; КонецЦикла; КонецЦикла; Для Каждого ЗаписДляУдаления Из МассивдляУдаления Цикл Набор.Удалить(ЗаписДляУдаления); КонецЦикла; Набор.Записать(); |
|||
23
razerw
07.10.14
✎
11:06
|
спасибо всем
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |