|
Цикл 2.0) | ☑ | ||
---|---|---|---|---|
0
Singenor
23.11.12
✎
16:37
|
вопрос в следующем: пробегаюсь по циклу, значения которые в цикле находятся пишу в ТаблицуЗначений, но они перезаписываются, как сделать чттобы не было такого?
|
|||
1
FoxFox
23.11.12
✎
16:38
|
Как пишешь?
|
|||
2
Нуф-Нуф
23.11.12
✎
16:38
|
не было чего?
|
|||
3
mikecool
23.11.12
✎
16:39
|
(0) добавляй строки
|
|||
4
shuhard
23.11.12
✎
16:39
|
(0) пиши с флагом -f
|
|||
5
YF
23.11.12
✎
16:40
|
Пятничное шаманство
|
|||
6
orefkov
23.11.12
✎
16:41
|
Чтобы не перезаписывались, надо у кассеты такой язычок сзади выломать.
|
|||
7
Singenor
23.11.12
✎
16:41
|
пока -//- Цикл
НоваяТЗ = ТаблицаЗначений.Добавить(); Номер = тут данные по номеру НоваяТЗ.Номер = Номер и так далее конеццикла |
|||
8
mikecool
23.11.12
✎
16:41
|
(6) вот это память )
|
|||
9
Singenor
23.11.12
✎
16:41
|
и цикл повторяется пока выполняется условие, но данные перезатираются
|
|||
10
YF
23.11.12
✎
16:42
|
(9) Что значит "перезатираются"?
|
|||
11
Heckfy
23.11.12
✎
16:42
|
(9) Давай код.
|
|||
12
Нуф-Нуф
23.11.12
✎
16:43
|
так они там добавляются. чему там перезатираться?
|
|||
13
Reset
23.11.12
✎
16:45
|
добавляет какую-нибудь одну и ту же структуру, созданную вне цикла, а в цикле перезаполняет ее св-ва
|
|||
14
Besometr
23.11.12
✎
16:45
|
там каждый раз новая ТЗ создается
НоваяТЗ = ТаблицаЗначений.Добавить(); |
|||
15
mikecool
23.11.12
✎
16:45
|
(14) чо?
|
|||
16
Reset
23.11.12
✎
16:46
|
(14) Это добавление строки, не ловись на кривое название переменной
|
|||
17
Besometr
23.11.12
✎
16:46
|
соответветственно в результате там должна быть одна строка, последняя удовлетварившая условия
|
|||
18
Besometr
23.11.12
✎
16:46
|
тьфу, просмотрел, сорь
|
|||
19
Singenor
23.11.12
✎
16:46
|
ТаблицаЗначений = Новый ТаблицаЗначений;
//ТаблицаЗначений.Колонки.Добавить("Номер", ОписаниеТиповЧ, "Номер строки"); ТаблицаЗначений.Колонки.Добавить("КодНоменклатуры", , "Код номенклатуры"); ТаблицаЗначений.Колонки.Добавить("НаименованиеНоменклатуры", , "Наименование номенклатуры"); ТаблицаЗначений.Колонки.Добавить("Количество", , "Количество"); ТаблицаЗначений.Колонки.Добавить("Цена", , "Цена"); ТаблицаЗначений.Колонки.Добавить("Сумма", , "Цена"); ТаблицаЗначений.Колонки.Добавить("Номенклатура",,"Номенклатура"); ТаблицаЗначений.Колонки.Добавить("СтавкаНДС",,"Ставка НДС"); ТаблицаЗначений.Колонки.Добавить("СуммаНДС",,"Сумма НДС"); ТаблицаЗначений.Колонки.Добавить("Всего",,"Всего"); НомерСтроки = НачСтрока; Пока Док.Sheets(1).Cells(НомерСтроки, 11).Value <> Неопределено Цикл НоваяТЗ = ТаблицаЗначений.Добавить(); Если ЗначениеЗаполнено(ЭлементыФормы.НомерСтроки.Значение) Тогда Номер = СокрЛП(Док.Sheets(1).Cells(НомерСтроки,ЭлементыФормы.НомерСтроки.Значение).Value); КонецЕсли; НомерСтроки = НомерСтроки + 1; КонецЦикла; |
|||
20
Besometr
23.11.12
✎
16:47
|
а точно выше по коду не создается? :)
|
|||
21
Нуф-Нуф
23.11.12
✎
16:47
|
и?
|
|||
22
YF
23.11.12
✎
16:47
|
(19) НоваяТЗ.Номер = Номер ГДЕ?
|
|||
23
Singenor
23.11.12
✎
16:47
|
ТаблицаЗначений = Новый ТаблицаЗначений;
//ТаблицаЗначений.Колонки.Добавить("Номер", ОписаниеТиповЧ, "Номер строки"); ТаблицаЗначений.Колонки.Добавить("КодНоменклатуры", , "Код номенклатуры"); ТаблицаЗначений.Колонки.Добавить("НаименованиеНоменклатуры", , "Наименование номенклатуры"); ТаблицаЗначений.Колонки.Добавить("Количество", , "Количество"); ТаблицаЗначений.Колонки.Добавить("Цена", , "Цена"); ТаблицаЗначений.Колонки.Добавить("Сумма", , "Цена"); ТаблицаЗначений.Колонки.Добавить("Номенклатура",,"Номенклатура"); ТаблицаЗначений.Колонки.Добавить("СтавкаНДС",,"Ставка НДС"); ТаблицаЗначений.Колонки.Добавить("СуммаНДС",,"Сумма НДС"); ТаблицаЗначений.Колонки.Добавить("Всего",,"Всего"); НомерСтроки = НачСтрока; Пока Док.Sheets(1).Cells(НомерСтроки, 11).Value <> Неопределено Цикл НоваяТЗ = ТаблицаЗначений.Добавить(); Если ЗначениеЗаполнено(ЭлементыФормы.НаименованиеТовара.Значение) Тогда НаименованиеНоменклатуры = СокрЛП(Док.Sheets(1).Cells(НомерСтроки,ЭлементыФормы.НаименованиеТовара.Значение).Value); КонецЕсли; НоваяТЗ.НаименованиеНоменклатуры = НаименованиеНоменклатуры; НомерСтроки = НомерСтроки +1; КонецЦикла; вот так |
|||
24
Нуф-Нуф
23.11.12
✎
16:48
|
(23) и?
|
|||
25
Singenor
23.11.12
✎
16:48
|
(22) смотри 23
|
|||
26
Singenor
23.11.12
✎
16:48
|
(24) че и? проходит цикл, находится наименование, например свин, потом цикл заного идет, находит наименование лошадь, и т.д. и данные перетираются, то есть вместо свина уже лошадь и т.д.
|
|||
27
YF
23.11.12
✎
16:49
|
Если ЗначениеЗаполнено(ЭлементыФормы.НаименованиеТовара.Значение) Тогда
НаименованиеНоменклатуры = СокрЛП(Док.Sheets(1).Cells(НомерСтроки,ЭлементыФормы.НаименованиеТовара.Значение).Value); ИНАЧЕ НаименованиеНоменклатуры = "ХРЕНЬ КАКАЯ_ТО" КонецЕсли; |
|||
28
Fragster
гуру
23.11.12
✎
16:49
|
(6) а не заклеить?
|
|||
29
Reset
23.11.12
✎
16:49
|
(28) Заклеить - это когда снова хочешь записать, а уже выломал
|
|||
30
Heckfy
23.11.12
✎
16:50
|
Так сделай:
Если ЗначениеЗаполнено(ЭлементыФормы.НаименованиеТовара.Значение) Тогда НаименованиеНоменклатуры = СокрЛП(Док.Sheets(1).Cells(НомерСтроки,ЭлементыФормы.НаименованиеТовара.Значение).Value); НоваяТЗ = ТаблицаЗначений.Добавить(); НоваяТЗ.НаименованиеНоменклатуры = НаименованиеНоменклатуры; КонецЕсли; |
|||
31
orefkov
23.11.12
✎
16:50
|
А что показывает ТаблицаЗначений.ВыбратьСтроку ?
|
|||
32
Singenor
23.11.12
✎
16:51
|
(30) то же самое
|
|||
33
ParinovS
23.11.12
✎
16:53
|
Cells(НомерСтроки,ЭлементыФормы.НаименованиеТовара.Значение)
Это как бы определить ячейку (12, "Лошадь") что ли?)) |
|||
34
Chin
23.11.12
✎
16:53
|
(33) Возможно там число! У автора сложности с наименованиями :)
|
|||
35
Reset
23.11.12
✎
16:54
|
(33) В НаименованиеТовара.Значение номер колонки в экселе поди.
|
|||
36
Singenor
23.11.12
✎
16:54
|
(33) ну там не совсем "лошадь" там вообще типа индекса, по которому ведется поиск по файлу экселевскому)
|
|||
37
Chin
23.11.12
✎
16:54
|
(32) В отладчике проверял?
|
|||
38
Singenor
23.11.12
✎
16:55
|
(34) да, там число)
|
|||
39
orefkov
23.11.12
✎
16:55
|
(33)
Я так понял, что в ЭлементыФормы.НаименованиеТовара.Значение лежит номер колонки, с которой наименование загружать. Вообще, названия переменных просто праздник криворукости какой-то. |
|||
40
orefkov
23.11.12
✎
16:56
|
||||
41
Heckfy
23.11.12
✎
16:57
|
(32) Сделай так:
ТЗ = Новый ТаблицаЗначений; //ТаблицаЗначений.Колонки.Добавить("Номер", ОписаниеТиповЧ, "Номер строки"); ТЗ.Колонки.Добавить("НомСтроки"); ТЗ.Колонки.Добавить("КодНоменклатуры", , "Код номенклатуры"); ТЗ.Колонки.Добавить("НаименованиеНоменклатуры", , "Наименование номенклатуры"); ТЗ.Колонки.Добавить("Количество", , "Количество"); ТЗ.Колонки.Добавить("Цена", , "Цена"); ТЗ.Колонки.Добавить("Сумма", , "Цена"); ТЗ.Колонки.Добавить("Номенклатура",,"Номенклатура"); ТЗ.Колонки.Добавить("СтавкаНДС",,"Ставка НДС"); ТЗ.Колонки.Добавить("СуммаНДС",,"Сумма НДС"); ТЗ.Колонки.Добавить("Всего",,"Всего"); НомерСтроки = НачСтрока; Пока Док.Sheets(1).Cells(НомерСтроки, 11).Value <> Неопределено Цикл НоваяТЗ = ТЗ.Добавить(); Если ЗначениеЗаполнено(ЭлементыФормы.НаименованиеТовара.Значение) Тогда НаименованиеНоменклатуры = СокрЛП(Док.Sheets(1).Cells(НомерСтроки,ЭлементыФормы.НаименованиеТовара.Значение).Value); КонецЕсли; НоваяТЗ.НаименованиеНоменклатуры = НаименованиеНоменклатуры; НомерСтроки = НомерСтроки +1; НоваяТЗ.НомСтроки=НомерСтроки; КонецЦикла; ТЗ.ВыбратьСтроку(); Что на выходе? |
|||
42
orefkov
23.11.12
✎
17:04
|
Или код не весь, или развод.
|
|||
43
zladenuw
23.11.12
✎
17:06
|
да прочитай область с Ёкселя и в тз запихни.
|
|||
44
Heckfy
23.11.12
✎
17:12
|
(32) Точнее так:
ТЗ = Новый ТаблицаЗначений; //ТаблицаЗначений.Колонки.Добавить("Номер", ОписаниеТиповЧ, "Номер строки"); ТЗ.Колонки.Добавить("НомСтроки"); ТЗ.Колонки.Добавить("КодНоменклатуры", , "Код номенклатуры"); ТЗ.Колонки.Добавить("НаименованиеНоменклатуры", , "Наименование номенклатуры"); ТЗ.Колонки.Добавить("Количество", , "Количество"); ТЗ.Колонки.Добавить("Цена", , "Цена"); ТЗ.Колонки.Добавить("Сумма", , "Цена"); ТЗ.Колонки.Добавить("Номенклатура",,"Номенклатура"); ТЗ.Колонки.Добавить("СтавкаНДС",,"Ставка НДС"); ТЗ.Колонки.Добавить("СуммаНДС",,"Сумма НДС"); ТЗ.Колонки.Добавить("Всего",,"Всего"); НомерСтроки = НачСтрока; Пока Док.Sheets(1).Cells(НомерСтроки, 11).Value <> Неопределено Цикл НоваяТЗ = ТЗ.Добавить(); Если ЗначениеЗаполнено(ЭлементыФормы.НаименованиеТовара.Значение) Тогда НаименованиеНоменклатуры = СокрЛП(Док.Sheets(1).Cells(НомерСтроки,ЭлементыФормы.НаименованиеТовара.Значение).Value); Иначе НаименованиеНоменлатуры="ЗначениеНеЗаполнено"; КонецЕсли; НоваяТЗ.НаименованиеНоменклатуры = НаименованиеНоменклатуры; НомерСтроки = НомерСтроки +1; НоваяТЗ.НомСтроки=НомерСтроки; КонецЦикла; ТЗ.ВыбратьСтроку(); |
|||
45
Singenor
24.11.12
✎
14:35
|
У меня на форме есть флажок, искать пустые строки или нет, то есть поиск идет по экселевскому файлу, и игнорируются строки в которых данные не найдены, как такое условие прописать?
В этом цикле: Пока Док.Sheets(1).Cells(НомерСтроки, 11).Value <> Неопределено Цикл что нить типа Если Игнорировать = Истина Тогда (вот какое тут условие?) КонецЕсли |
|||
46
Singenor
25.11.12
✎
01:41
|
Cells(НомерСтроки, 11) B cells тут может передать два нуля? И поьлм продолжить?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |