|
БП: обработка ТЧ док-та (удалить ненужные строки) | ☑ | ||
---|---|---|---|---|
0
листопад
13.04.12
✎
22:12
|
Пишу обработку заполнения табличных частей док-та, подключила через Сервис - Доп.ВнешниеОбработкиТЧ. Обработка должна перебрать строки и удалить те, у которых счет 19.05 или 19.06. В результате, убирает только где счет 19.05. Подскажите, где ошибка?
Вот код: Процедура Инициализировать (ДокОбъект, ИмяТабЧасть, ТабЧасть) Экспорт; Счет1905 = ПланыСчетов.Хозрасчетный.НДСуплачиваемыйТаможеннымОрганам; Счет1906 = ПланыСчетов.Хозрасчетный.АкцизыПоОплаченнымМатериальнымЦенностям; ТабЧасть = ДокОбъект[ИмяТабЧасть]; Для каждого Строка Из ТабЧасть Цикл Если (Строка.СчетУчетаНДС = Счет1905) ИЛИ (Строка.СчетУчетаНДС = Счет1906) Тогда ТабЧасть.Удалить(Строка); КонецЕсли; КонецЦикла; КонецПроцедуры |
|||
1
zak555
13.04.12
✎
22:13
|
а движения не интересуют ?
|
|||
2
листопад
13.04.12
✎
22:16
|
(1)Нет, док-т потом будет проводиться, уже с оставшимися строками.
|
|||
3
GenV
13.04.12
✎
22:19
|
(0) Неправильно. Сбиваешь выборку "для каждого" при удалении строки. Перебирай по номеру строки.
|
|||
4
zak555
13.04.12
✎
22:20
|
(2) ноутбук есть ?
|
|||
5
листопад
13.04.12
✎
22:21
|
(3) а можно поподробнее?
|
|||
6
zak555
13.04.12
✎
22:22
|
(5) он тебе с конца предлагает удалять
|
|||
7
листопад
13.04.12
✎
22:25
|
(6) Я это поняла. А как это прописать?
|
|||
8
GenV
13.04.12
✎
22:26
|
(5) http://www.google.ru/search?sourceid=chrome&ie=UTF-8&q=удаление+строк+Табличной+части+1С
первая строчка в конце ссылка на правильное решение |
|||
9
zak555
13.04.12
✎
22:26
|
(7) ну так это же коллекцтя => обратись по индексу
|
|||
10
zak555
13.04.12
✎
22:27
|
(8) первая ссылка про 1 тв
|
|||
11
GenV
13.04.12
✎
22:28
|
(10) Да, это ссылка тут обрезалась, т.ч. копируй текст
|
|||
12
zak555
13.04.12
✎
22:29
|
(11) самообрезание ?
|
|||
13
ОбычныйЧеловек
13.04.12
✎
22:31
|
(0)
Процедура Инициализировать (ДокОбъект, ИмяТабЧасть, ТабЧасть) Экспорт; Счет1905 = ПланыСчетов.Хозрасчетный.НДСуплачиваемыйТаможеннымОрганам; Счет1906 = ПланыСчетов.Хозрасчетный.АкцизыПоОплаченнымМатериальнымЦенностям; МассивСтрок=Новый Массив; ТабЧасть = ДокОбъект[ИмяТабЧасть]; Для каждого Строка Из ТабЧасть Цикл Если (Строка.СчетУчетаНДС = Счет1905) ИЛИ (Строка.СчетУчетаНДС = Счет1906) Тогда МассивСтрок.Добавить(Строка); КонецЕсли; КонецЦикла; Для каждого Строка Из МассивСтрок Цикл ТабЧасть.Удалить(Строка); КонецЦикла; КонецПроцедуры |
|||
14
Один С
13.04.12
✎
22:32
|
я за попкорном..
|
|||
15
GenV
13.04.12
✎
22:33
|
(12) Да, не надо было в юникоде копировать
Тест: http://www.google.ru/search?sourceid=chrome&ie=UTF-8&q=удаление+строк+Табличной+части+1С |
|||
16
GenV
13.04.12
✎
22:34
|
15+ фиг )
|
|||
17
zak555
13.04.12
✎
22:35
|
листопад так ноут есть или нет ?
|
|||
18
листопад
13.04.12
✎
22:36
|
(13) Спасибо, сделала как Вы написали, выдает ошибку:
Ошибка при получении значения атрибута контекста (СчетУчетаНДС): Выполнение операции невозможно, так как строка была удалена. |
|||
19
листопад
13.04.12
✎
22:36
|
(17) Есть, а с какой целью интересуетесь )))
|
|||
20
ОбычныйЧеловек
13.04.12
✎
22:38
|
(18) Быть такого не может.
|
|||
21
zak555
13.04.12
✎
22:39
|
(19) видишь как замечательно
у нас уже с тобой общие точки соприкосновения ты чувствуешь ? |
|||
22
ОбычныйЧеловек
13.04.12
✎
22:41
|
Процедура Инициализировать (ДокОбъект, ИмяТабЧасть, ТабЧасть) Экспорт;
Счет1905 = ПланыСчетов.Хозрасчетный.НДСуплачиваемыйТаможеннымОрганам; Счет1906 = ПланыСчетов.Хозрасчетный.АкцизыПоОплаченнымМатериальнымЦенностям; МассивСтрок=Новый Массив; ТабЧасть = ДокОбъект[ИмяТабЧасть]; Для каждого Строка Из ТабЧасть Цикл Если (Строка.СчетУчетаНДС = Счет1905) ИЛИ (Строка.СчетУчетаНДС = Счет1906) Тогда МассивСтрок.Добавить(Строка); КонецЕсли; КонецЦикла; Для каждого Строка1 Из МассивСтрок Цикл ТабЧасть.Удалить(Строка1); КонецЦикла; КонецПроцедуры |
|||
23
листопад
13.04.12
✎
22:43
|
(22) Простите, код в (13) - рабочий. Это была моя ошибка. Еще раз СПАСИБО!!!
|
|||
24
ОбычныйЧеловек
13.04.12
✎
22:44
|
(23) Конечно рабочий - я никогда не ошибаюсь :) особенно когда я прав :)
|
|||
25
zak555
13.04.12
✎
22:45
|
*23( и всё 7
|
|||
26
Один С
13.04.12
✎
22:48
|
(25) дык а чо ты хотел. так всегда - вроде коллектив хороший, но обязательно найдется белая ворона, которая все стадо испортит..
|
|||
27
zak555
13.04.12
✎
22:55
|
так листопад замужем или как ?
|
|||
28
листопад
13.04.12
✎
22:58
|
Еще подскажите пож-та, как вставить, чтобы выдавал сообщение, если не находит с ТЧ строки с указанными счетами?
Вот итоговый код: МассивСтрок=Новый Массив; ТабЧасть = ДокОбъект[ИмяТабЧасть]; Для каждого Строка Из ТабЧасть Цикл Если (Строка.СчетУчетаНДС = Счет1905) ИЛИ (Строка.СчетУчетаНДС = Счет1906) Тогда МассивСтрок.Добавить(Строка); КонецЕсли; КонецЦикла; Для каждого Строка Из МассивСтрок Цикл Сообщить ("cчет " + Строка.СчетУчетаНДС+ " " + Строка.Поставщик + " сумма - "+ Строка.СуммаВсего + " НДС - " + Строка.НДСВсего); ТабЧасть.Удалить(Строка); КонецЦикла; |
|||
29
zak555
13.04.12
✎
22:59
|
(28) > чтобы выдавал сообщение
сообщить() ? =) |
|||
30
листопад
13.04.12
✎
23:00
|
+(28) т.е. обрабатывать (удалять строки) не надо, т.к. их нет.
|
|||
31
листопад
13.04.12
✎
23:00
|
(29) Да, а куда это вставить:
Сообщить("Нет строк со счетом 19.05 или 19.06!!!"); |
|||
32
ОбычныйЧеловек
13.04.12
✎
23:01
|
МассивСтрок=Новый Массив;
ТабЧасть = ДокОбъект[ИмяТабЧасть]; Для каждого Строка Из ТабЧасть Цикл Если (Строка.СчетУчетаНДС = Счет1905) ИЛИ (Строка.СчетУчетаНДС = Счет1906) Тогда МассивСтрок.Добавить(Строка); Иначе Сообщить("Нет строк со счетом 19.05 или 19.06!!!"); КонецЕсли; КонецЦикла; Для каждого Строка Из МассивСтрок Цикл Сообщить ("cчет " + Строка.СчетУчетаНДС+ " " + Строка.Поставщик + " сумма - "+ Строка.СуммаВсего + " НДС - " + Строка.НДСВсего); ТабЧасть.Удалить(Строка); КонецЦикла; |
|||
33
zak555
13.04.12
✎
23:02
|
(31) ты почему-то выборочно отвечаешь на мои вопросы
|
|||
34
ОбычныйЧеловек
13.04.12
✎
23:02
|
МассивСтрок=Новый Массив;
ТабЧасть = ДокОбъект[ИмяТабЧасть]; Для каждого Строка Из ТабЧасть Цикл Если (Строка.СчетУчетаНДС = Счет1905) ИЛИ (Строка.СчетУчетаНДС = Счет1906) Тогда МассивСтрок.Добавить(Строка); КонецЕсли; КонецЦикла; Если МассивСтрок.Количество()=0 Тогда Сообщить("Нет строк со счетом 19.05 или 19.06!!!"); КонецЕсли; Для каждого Строка Из МассивСтрок Цикл Сообщить ("cчет " + Строка.СчетУчетаНДС+ " " + Строка.Поставщик + " сумма - "+ Строка.СуммаВсего + " НДС - " + Строка.НДСВсего); ТабЧасть.Удалить(Строка); КонецЦикла; |
|||
35
zak555
13.04.12
✎
23:03
|
(34) дав прохода - это много
|
|||
36
ОбычныйЧеловек
13.04.12
✎
23:04
|
(35) Это бесплатный код - учитывай это.
|
|||
37
zak555
13.04.12
✎
23:08
|
(36) так ты учитель плохого ?
|
|||
38
листопад
13.04.12
✎
23:09
|
(36) Спасибо, добрый человек!!!
|
|||
39
ОбычныйЧеловек
13.04.12
✎
23:16
|
(37)я не учитель, а если нужен учитель то это к GROOVY
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |