|   |   | 
| 
 | Как обратиться к ТЧ документа Корректировка записей регистров УПП 1.3 | ☑ | ||
|---|---|---|---|---|
| 0
    
        makkut 11.04.18✎ 14:48 | 
        Есть необходимость создать обработку которая пробегат циклом по ТЧ документа Корректировка записей регистров одного регистра накопления НДСсАвансом и по определенным параметром удаляет строки. Но не пойму как обратится к ТЧ документа. Подскажите пожалуйста.     | |||
| 1
    
        Малыш Джон 11.04.18✎ 14:49 | 
        (0) у него нет ТЧ, у него есть Движения     | |||
| 2
    
        Cyberhawk 11.04.18✎ 14:49 | 
        У этого документа нет ТЧ. Вернее у него есть ТЧ со списком имен затронутых регистров, но это не та ТЧ с движениями, которую ты видишь.     | |||
| 3
    
        Tateossian 11.04.18✎ 14:51 | 
        (0) Движение = ДокументОбъект.Движения["НДСсАвансом"];
 Движение.Прочитать(); // а дальше работаешь с движением, в конце Движение.Записать(); | |||
| 4
    
        Cyberhawk 11.04.18✎ 14:53 | 
        (3) Неправильно. Надо модифицированность взвести у формы документа, чтобы пользователь сам решил, записать или нет     | |||
| 5
    
        Tateossian 11.04.18✎ 15:12 | 
        (4) Да, если интерактивно обрабатывать, но, судя по условию задачи, тут не требуется интерактивная работа.     | |||
| 6
    
        Cyberhawk 11.04.18✎ 15:17 | 
        (5) А, ну да, вполне возможно.
 Я почему-то подумал, что ему внешняя обработка заполнения ТЧ нужна, т.е. интерактивчик. | |||
| 7
    
        makkut 11.04.18✎ 15:21 | 
        спасибо, буду пробовать     | |||
| 8
    
        makkut 13.04.18✎ 06:58 | 
        (3) в продолжении темы.... 
 есть одна таблица "ТаблицаРеестра" в которой есть записи. У этой таблицы всего две колонки "покупатель" и "документ". Нужно осуществить удаление всех записей кроме тех что в таблице "ТаблицаРеестра" в документе корректировки регистров. Движение = СсылкаНаобъект.ПолучитьОбъект().Движения["НДСсАвансов"]; Движение.Прочитать(); й = Движение.Количество()- 1; Пока й>=0 Цикл н = ТаблицаРеестра.Количество()-1; Пока н>=0 Цикл Если СокрЛП(Строка(Движение[й].СчетФактура)) = СокрЛП(Строка(ТаблицаРеестра[н].Документ)) И Движение[й].Покупатель = ТаблицаРеестра[н].Покупатель Тогда Сообщить("УДАЛЕНА строка " + Движение[й].Покупатель + " " + Строка(Движение[й].СчетФактура) ); Движение.Удалить(й); Прервать; КонецЕсли; н = н - 1; КонецЦикла; й = й - 1; КонецЦикла; Движение.Записать(); Так записи удаляются те что есть в таблице. когда делаю так: й = Движение.Количество()- 1; Пока й>=0 Цикл н = ТаблицаРеестра.Количество()-1; Пока н>=0 Цикл Если СокрЛП(Строка(Движение[й].СчетФактура)) = СокрЛП(Строка(ТаблицаРеестра[н].Документ)) И Движение[й].Покупатель = ТаблицаРеестра[н].Покупатель Тогда Сообщить("НЕ УДАЛЕНА строка " + Движение[й].Покупатель + " " + Строка(Движение[й].СчетФактура)); Иначе Сообщить("УДАЛЕНА строка " + Движение[й].Покупатель); Движение.Удалить(й); Прервать; КонецЕсли; н = н - 1; КонецЦикла; й = й - 1; КонецЦикла; Движение.Записать(); то работает всё криво.... удаляются почти все записи, нужные и не нужные. Помогите пожалуйста с задачей. | |||
| 9
    
        Рэйв 13.04.18✎ 07:03 | 
        (8)К чему эти загадочные танцы с бубном?
 Движения - это обычная коллекция. //-- Об=СсылкаНаобъект.ПолучитьОбъект(); Движения =Об.Движения["НДСсАвансов"]; Движения.Прочитать(); Для Каждого Запись Из Движения Цикл // делаемштохатим КонецЦикла; Об.Записать(); | |||
| 10
    
        Chameleon1980 13.04.18✎ 07:07 | 
        выгрузи движения в тз
 обойди циклом в цикле сложи строки под удаление в массив после цикла по тз делай цикл по массиву к тз примени удалить(элементМассива) далее загрузи движения из тз как-то так, вроде | |||
| 11
    
        Рэйв 13.04.18✎ 07:10 | 
        (10) для удаления можно легко использовать (9)
 //-- Об=СсылкаНаобъект.ПолучитьОбъект(); Движения =Об.Движения["НДСсАвансов"]; мУдалить=Новый Массив; Движения.Прочитать(); Для Каждого Запись Из Движения Цикл Если УсловиеУдаления Тогда мУдалить.Добавить(Запись); КонецЕсли; КонецЦикла; Для Каждого Запись Из мУдалить Цикл Движения.Удалить(Запись); КонецЦикла; Об.Записать(); | |||
| 12
    
        makkut 13.04.18✎ 07:14 | 
        (11) УсловиеУдаления тут мне надо сравнить записи с движением и таблицей.... То есть ещё сделать перебор по записям     | |||
| 13
    
        Рэйв 13.04.18✎ 07:15 | 
        (12)Движения  сами с собой сравнивать что ли?     | |||
| 14
    
        Рэйв 13.04.18✎ 07:15 | 
        (12)Ну в общем тебе примеров накидали бесплатно, придумаешь что-нибудь:-)     | |||
| 15
    
        makkut 13.04.18✎ 07:15 | 
        (13) нет записи движений с таблицей отдельной. И удалить все записи движения кроме тех что есть в таблице     | |||
| 16
    
        Chameleon1980 13.04.18✎ 07:16 | 
        (11) не увидел. или пока писал - отвлекся и в тот миг ты нарисовал. Но, видимо ТС еще не понял.     | |||
| 17
    
        Chameleon1980 13.04.18✎ 07:17 | 
        (15) ну как нет?
 сделай из движений после прочитать типа: выгрузи, обойди, удали, загрузи | |||
| 18
    
        Chameleon1980 13.04.18✎ 07:17 | 
        ну или даже выгрузи, загрузи можно убрать     | |||
| 19
    
        Chameleon1980 13.04.18✎ 07:18 | 
        по движениям ходить тебе уже разрешили
 и собирать нужные строки по условиям Рэйв жеж тебе говорит в (14) | |||
| 20
    
        makkut 13.04.18✎ 07:20 | 
        (17) ок буду пробовать, отпишусь)     | |||
| 21
    
        makkut 13.04.18✎ 12:28 | 
        (19) не получается чего то
 Движение = СсылкаНаобъект.ПолучитьОбъект().Движения["НДСсАвансов"]; Движение.Прочитать(); Движение.Выгрузить(); мУдалить=Новый Массив; Для Каждого Запись Из Движение Цикл Для Каждого Запись2 Из ТаблицаРеестра Цикл Если СокрЛП(Строка(запись.СчетФактура)) = СокрЛП(Строка(Запись2.Документ)) И запись.Покупатель = Запись2.Покупатель Тогда Сообщить("НЕ УДАЛЕНА строка " + запись.Покупатель + " " + Строка(запись.СчетФактура)); Иначе мУдалить.Добавить(Запись); КонецЕсли; КонецЦикла; КонецЦикла; Для Каждого Запись Из мУдалить Цикл Движение.Удалить(Запись); КонецЦикла; Движение.Записать(); выходит ошибка {ВнешняяОбработка.Обработка.Форма.Форма.Форма(35)}: Ошибка при вызове метода контекста (Удалить) Движение.Удалить(Запись); по причине: Недопустимое значение параметра (параметр номер '1') что не так делаю? | |||
| 22
    
        Михаил Козлов 13.04.18✎ 12:50 | 
        (21) В Движение.Удалить(Запись); тип значения Запись какой?
 Ошибка возникает и на 1-ом удалении? | |||
| 23
    
        makkut 13.04.18✎ 13:10 | 
        (22) на втором удалении, потому что как я понял записи походу одинаковые     | |||
| 24
    
        Chameleon1980 13.04.18✎ 13:59 | 
        а куда у тебя идет
 Движение.Выгрузить(); ??? | |||
| 25
    
        Михаил Козлов 13.04.18✎ 14:02 | 
        (23) Засуньте в массив индексы записей и попробуйте удалять с конца.     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |