|   |   | 
| 
 | удаление записей из регистра бухгалтерии | ☑ | ||
|---|---|---|---|---|
| 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 | 
        спасибо всем     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |