|
v7: Работа с ТЗ что неправильно в коде? | ☑ | ||
---|---|---|---|---|
0
IceHummer
07.07.12
✎
23:04
|
В ТИС на основании "отчета ККМ" вводим "Возврат от покупателя". При этом модально открываем форму обработки. Суть обработки: возможность галками отметить в списке товар и количесво подлежащее возврату, выгрузить в табличную часть "Возврат от покупателя".
На форме есть элемент ТЗ - "Таблица". В нее выгружаем ТЗ из документа "возврат от покупателя"(табличную часть). Добавляем 2 колонки "Вернуть"(в ней ставим галки) и ВозврКол(Количество к возврату). Далее нужно удалить неотмеченые строки. Здесь у меня проблема. Написал код. Вроде должно работать, но получается какая-то ерунда. Посмотрите, пожалуйста, в чем ошибка. Процедура Сформировать() Таблица.ВыбратьСтроки(); Пока Таблица.ПолучитьСтроку()=1 Цикл Если Таблица.вернуть=2 тогда Таблица.количество=таблица.ВозврКол; Таблица.Сумма=Таблица.количество*Таблица.цена; иначе Таблица.УдалитьСтроку(); КонецЕсли; КонецЦикла; Таблица.УдалитьКолонку("Вернуть"); Таблица.УдалитьКолонку("ВозврКол"); КонецПроцедуры |
|||
1
andrewks
07.07.12
✎
23:05
|
Пока Таблица.ПолучитьСтроку()=1 Цикл
... Таблица.УдалитьСтроку(); Расстрелять |
|||
2
Злопчинский
07.07.12
✎
23:07
|
строку удалил - какая строка стала текущей и как она изменится при сдедующем ПолучитьСтроку().?
обходи ТЗ обратной выборкой с конца в начало. тогда удаленныен строки не будут ни на что влиять |
|||
3
Скользящий
07.07.12
✎
23:08
|
||||
4
IceHummer
07.07.12
✎
23:11
|
Спасибо, сейчас переделаю.
|
|||
5
andrewks
07.07.12
✎
23:12
|
(3) чё-то там оба варианта какие-то извращенские.
вар.1 Для нс=-ТЗ.КоличествоСтрок() по -1 Цикл вар.2 нс=1; Пока нс<=ТЗ.КоличествоСтрок() Цикл ... Если (Условие) Тогда ТЗ.УдалитьСтроку(); Иначе нс=нс+1; КонецЕсли; ... КонецЦикла; |
|||
6
IceHummer
07.07.12
✎
23:19
|
Еще раз спасибо всем. Все заработало!!
Воспользовался вариантом из (3) Пока Таблица.ПолучитьСтроку()=1 Цикл ~начало: Если Таблица.вернуть=2 тогда Таблица.количество=таблица.ВозврКол; Таблица.Сумма=Таблица.количество*Таблица.цена; иначе Таблица.УдалитьСтроку(); Если Таблица.НомерСтроки<>0 Тогда Перейти ~начало; КонецЕсли; КонецЕсли; КонецЦикла; |
|||
7
IceHummer
07.07.12
✎
23:21
|
Еще есть вопрос, но для него лучше создам другую тему.
|
|||
8
Злопчинский
07.07.12
✎
23:22
|
уродское решение неправославное с метками.
. КС = ТЗ.КоличествоСтрок(); для ы=-КС по -1 цикл ТЗ.ПолучитьСтрокуПоНомеру(-ы); Если (Условие) тогда ТЗ.УдалитьСтроку(); конецЕсли; КонецЦикла; |
|||
9
SnarkHunter
07.07.12
✎
23:31
|
(8)+100500
|
|||
10
Азат
07.07.12
✎
23:33
|
(8) а чо цикл "пока" как вариант не катит?
|
|||
11
SnarkHunter
07.07.12
✎
23:34
|
(10)Как вариант и метки катят...
|
|||
12
IceHummer
07.07.12
✎
23:34
|
(8)
(9) Главное, работает))) |
|||
13
SnarkHunter
07.07.12
✎
23:37
|
(12)Месье знает толк в извращениях...
|
|||
14
Азат
07.07.12
✎
23:39
|
(11) за метки по рукам на первом курсе били((
|
|||
15
SnarkHunter
07.07.12
✎
23:40
|
(14)Надо было по голове, при чем тут руки... :-)
|
|||
16
FN
08.07.12
✎
00:03
|
(0) а не проще ли будет пользователя ввести на основании и удалить лишние строки?
|
|||
17
IceHummer
08.07.12
✎
00:14
|
(16) Что-то я не понял вопроса))
Самому интересно стало. Кто что думает, может и правда проще будет? Как это сделать? |
|||
18
IceHummer
08.07.12
✎
00:16
|
Кстати, как можно грамотно передать ТЗ из модальной формы обратно в "Возврат от покупателя"? Я сделал через глПеременную. Может можно лучше и правильнее.
|
|||
19
FN
08.07.12
✎
00:16
|
(17)
Суть обработки: возможность галками отметить в списке товар и количесво подлежащее возврату, выгрузить в табличную часть "Возврат от покупателя". вот нафига это? при вводе на основании обычно копируется вся табличная часть в новый документ - пользователю достаточно удалить лишние строки. В чем суть обработки? |
|||
20
GreyK
08.07.12
✎
00:21
|
(18) Через обработку подбора правильно будет.
|
|||
21
IceHummer
08.07.12
✎
00:31
|
(19) Такая задача была поставлена. При вводе возврата на основании отчет ккм, нужно выбирать конкретный товар из всего отчета. Отчет - это массив всех продаж за день, а от туда нужно выбрать отдельную продажу. В таблице галочками нужно отметить какой товар возвращается, какое количество и именно этот товар и должен пробрасываться. Так же нельзя вернуть одним возвратом товар проданный разными продавцами(условие задачи). Обязательно пробрасывать продавца.
|
|||
22
КонецЦикла
08.07.12
✎
00:33
|
(21) Сделай по аналогии с заполнением заказа поставщику (см. кнопку "Заполнить")
Будет зашибенско универсально (если нужно конечно) и по-типовому, всем понятно |
|||
23
IceHummer
08.07.12
✎
00:33
|
(19) Если из большова массива удалять вручную строки и менять количество, то будет долго и неудобно. Плюс замут с продавцами.
|
|||
24
Мимохожий Однако
08.07.12
✎
07:33
|
Если метки есть в таблице на форме, то достаточно при переносе в другую табличную часть взять только нужные. Удалять непомеченные из ТЗ не обязательно при этом.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |