|
Как обратиться к ТЧ документа Корректировка записей регистров УПП 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) Засуньте в массив индексы записей и попробуйте удалять с конца.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |