Имя: Пароль:
1C
1С v8
Цикл 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 тут может передать два нуля? И поьлм продолжить?
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.