Имя: Пароль:
1C
1С v8
нужна срочная помощь
🠗 (Волшебник 31.05.2013 10:46)
0 iQwerty
 
31.05.13
09:56
пер="";                                                                            
   Текст3.Параметры.Текст3 = "1.1.Предметом ""Договора"" является выполнение ""Подрядчиком"" работ по строительству: методом "+СведенияДК.ЛП_ОписаниеРабот+" на объекте: ";
          для каждого Строка из ТабличнаяЧасть1 цикл
                       
           ТЗ = Новый ТаблицаЗначений;
           ТЗ = ТабличнаяЧасть1.Выгрузить();
       // Перем <пер> [Экспорт];
               стр=Строка.Объект;
       если стр=пер тогда Текст3.Параметры.Текст3=Текст3.Параметры.Текст3+"";
           иначе
                                      ТЗ.Область(ТЗ.Объединить("Объект"));
                       Текст3.Параметры.Текст3 = Текст3.Параметры.Текст3 +Символы.ПС+""""+Строка.Объект+""""+". А именно:";
                                 стр=Строка.Объект;  
               //если стр=пер тогда прервать;
                           // иначе
                    для каждого Строка из ТабличнаяЧасть1 цикл
                        если стр = Строка.Объект тогда
                               Текст3.Параметры.Текст3=Текст3.Параметры.Текст3+ Символы.ПС+"-"+Строка.ОписаниеРабот+";";
                             
                              иначе Текст3.Параметры.Текст3=Текст3.Параметры.Текст3+"";
                         КонецЕсли;
                    КонецЦикла;
                       
                               
           конецесли;            
               пер=стр;
конеццикла;

прошу меня извинить, в этом деле я новичок, нужно чтобы из таблицы каждый объект(Строка.Объект) выводился только один раз. Заранее очень благодарен
1 Wobland
 
31.05.13
10:00
и что? выбрось это и сделай медленно и вдумчиво с самого начала
2 Mitriy
 
31.05.13
10:01
пойду от косоглазия лечиться...
3 Любопытная
 
31.05.13
10:01
(0)Мама дорогая... Ты чего хотел сделать?
4 cw014
 
31.05.13
10:01
(0) Код отструктурируй
5 samozvanec
 
31.05.13
10:02
(0) я знаю отличный способ. попробуй понять, что делает каждая строчка, которую ты написал.
6 iQwerty
 
31.05.13
10:02
да я понимаю
7 Wobland
 
31.05.13
10:03
Текст3.Параметры.Текст3=Текст3.Параметры.Текст3+"";
это прекрасно!
8 salvator
 
31.05.13
10:03
Дошел до
Текст3.Параметры.Текст3 =
дальше читать не стал
9 samozvanec
 
31.05.13
10:03
(6) значит стебешься?
10 Wobland
 
31.05.13
10:03
ТЗ.Область(ТЗ.Объединить("Объект"))
это что такое?
11 Любопытная
 
31.05.13
10:03
(6) Понимаешь? Ты обходишь циклом ТЧ, при этом в цикле ВЫГРУЖАЕШЬ ЭТУ ЖЕ ТЧ И ОБХОДИШЬ ЕЕ ЗАНОВО!!!
чего ради? Какой смысл в этом?
12 iQwerty
 
31.05.13
10:04
хотел сделать вот,что в таблице заполняю объекты и их описание. нужно для каждого объекта все описания...
13 Wobland
 
31.05.13
10:04
(12) поптыка не удалась. выплюнь жвачку и скажи ещё раз
14 cw014
 
31.05.13
10:05
стр=пер???
15 vicof
 
31.05.13
10:05
(0) Сходи на курсы в любой франч
16 iQwerty
 
31.05.13
10:07
заполняю так
объект1-описание1;
объект2-описание2;
объект1-описание3;
объект3-описание4;
объект2-описание5;
объект1-описание6;
нужно получить так
объект1-описание1;описание3;описание6;
объект2-описание2;описание5;
объект3-описание4
17 samozvanec
 
31.05.13
10:07
(15) я бы даже сказал месяца на 3 поработать. и результат будет лучше, и может даже тарелка супа перепадет. а за курсы платить надо.
18 Godofsin
 
31.05.13
10:07
мля, поржал)))))
19 Godofsin
 
31.05.13
10:08
стр=пер
бугагашечки)))))))
20 cw014
 
31.05.13
10:09
Картинку кинь, какой макет у тебя сейчас и какой таб документ на выходе должен получить
21 cw014
 
31.05.13
10:09
(10) +100500 причем это для таблицы значений (см. код выше)
22 iQwerty
 
31.05.13
10:09
не поможете?! учусь я...
23 samozvanec
 
31.05.13
10:10
(22) давай учиться) раз ты такой понимательный, скажи, пожалуйста, что делает вот эта строка:

если стр=пер тогда Текст3.Параметры.Текст3=Текст3.Параметры.Текст3+"";
24 Wobland
 
31.05.13
10:10
(22) запрос к ТЧ с итогами по объектам. на обходе результата склеиваешь описания в строку и выводишь
25 salvator
 
31.05.13
10:10
(22) Ты русским понятным языком задачу сформулировать не можешь. А еще кодить лезешь.
26 Wobland
 
31.05.13
10:12
(25) всякий умеющий сформулировать, пишет нормальный код ;)
27 samozvanec
 
31.05.13
10:13
(26) но не всяк, кто пишет нормальный код, есть умеющий сформулировать)
28 iQwerty
 
31.05.13
10:14
как на обходе результата склеивать?
29 salvator
 
31.05.13
10:15
(28) А ты знаешь как сделать запрос к ТЧ? О.о
30 iQwerty
 
31.05.13
10:15
можете написать алгоритм пожалуйста?
31 samozvanec
 
31.05.13
10:16
(30) алгоритм:
1. выбрал запросом че надо
2. сделал с этим че надо
3. профит
32 Wobland
 
31.05.13
10:18
(30) мне лениво, там слишком много букв. идею я тебе дал
33 salvator
 
31.05.13
10:20
ВыборкаПоОбъектам = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаПоОбъектам.Следующий() Цикл
 ВыборкаСтрок = ВыборкаПоОбъектам.Выбрать();
 Описание = "";
 Пока ВыборкаСтрок.Следующий() Цикл
   Описание = Описание+ВыборкаСтрок.Описание+";";
 КонецЦикла;
 Сообщить(""+ВыборкаПоОбъектам.Объект+" - "+Описание);
КонецЦикла;

А запрос пиши сам, если что есть гугл ;)
34 vicof
 
31.05.13
10:20
(30) 2000
35 iQwerty
 
31.05.13
10:21
спасибо;) уф почувствовал себя идиотом
36 samozvanec
 
31.05.13
10:21
вангую, как только "склеит" результат, спросит, как вывести на печать
37 zippygrill
 
31.05.13
10:21
ого.
38 Wobland
 
31.05.13
10:22
(35) ответь на (10) прежде чем убегать
39 Wobland
 
31.05.13
10:22
(36) до склейки ему запрос надо будет написать
40 iQwerty
 
31.05.13
10:24
я тут, не знаю, я это закомментил, это не мое
41 salvator
 
31.05.13
10:26
(40) Генератор случайных фраз?
42 iQwerty
 
31.05.13
10:27
=))
43 iQwerty
 
31.05.13
10:30
вот это место вам понятно?
стр=Строка.Объект;
для каждого Строка из ТабличнаяЧасть1 цикл
                        если стр = Строка.Объект тогда
                               Текст3.Параметры.Текст3=Текст3.Параметры.Текст3+ Символы.ПС+"-"+Строка.ОписаниеРабот+";";
                             
                              иначе Текст3.Параметры.Текст3=Текст3.Параметры.Текст3+"";
                         КонецЕсли;
44 salvator
 
31.05.13
10:32
(43) Из того, что в (0) вообще ничего не понятно. Одни сплошной бред.
Тебе уже ответили, как нужно сделать. Какие еще вопросы?
45 Wobland
 
31.05.13
10:33
(43) выплюни это
46 iQwerty
 
31.05.13
10:33
так вот нужно, чтобы если новый объект совпадал с любым предыдущим, то он этот объект перескакивал(пропускал)
47 Wobland
 
31.05.13
10:34
(46) итоги дадут тебе дерево. и не нужно никуда перескакивать
48 vicof
 
31.05.13
10:34
(46) Иди во франч, реально тебе говорю
49 samozvanec
 
31.05.13
10:35
(46) сверни ТЗ.
(47) ты так подсказываешь, как будто понимаешь, что он хочет)
50 Wobland
 
31.05.13
10:36
(49) ага. сгруппировать по одному полю, а второе сконкатерировать
51 iQwerty
 
31.05.13
10:42
я не разобрался с тем, что вы мне предложили, а в (43) что то не то?то есть для меня там все ясно- переменная заполняется первым объектом проходит по всем объектам и если переменная=объекту  выдает описание этих объектов, потом переменная заполняется вторым объектом и так далее. задача в том чтобы объекты на выходе не повторялись
52 iQwerty
 
31.05.13
10:42
ещё раз код
для каждого Строка из ТабличнаяЧасть1 цикл
стр=Строка.Объект;
для каждого Строка из ТабличнаяЧасть1 цикл
                        если стр = Строка.Объект тогда
                               Текст3.Параметры.Текст3=Текст3.Параметры.Текст3+ Символы.ПС+"-"+Строка.ОписаниеРабот+";";
                             
                              иначе Текст3.Параметры.Текст3=Текст3.Параметры.Текст3+"";
                         КонецЕсли;
конеццикла;
конеццикла;
53 Wobland
 
31.05.13
10:43
сдаюсь
54 Любопытная
 
31.05.13
10:44
(51) таки свернуть ТЗ по объекту. Правда я не очень уверена, сконкатенируются ли строки, если это строки. Числовые значения суммируются, а вот строковые...
55 vicof
 
31.05.13
10:45
(52) Настойчиво тебе третий раз говорю - сходи обучись программированию на 1с хоть немного
(54) Не свернутся
56 iQwerty
 
31.05.13
10:45
(54) что значит свернуть ТЗ по объекту и как это делается?
57 Wobland
 
31.05.13
10:46
(56) Описание:

Осуществляет свертку табличной части по указанным колонкам группировки. Строки, у которых совпадают значения в колонках, указанных в первом параметре, сворачиваются в одну строку. Значения этих строк, хранящиеся в колонках, указанных во втором параметре, накапливаются.
58 iQwerty
 
31.05.13
10:46
(55) я сам обучусь, подскажите пожалуйста
59 Wobland
 
31.05.13
10:47
(56) именно метод свернуть тут не поможет, поэтому я и предложил выгрузку в дерево итогами с последующим обходом
60 iQwerty
 
31.05.13
10:47
(57) ясно, ну мне это и надо, а как это делается?
61 Wobland
 
31.05.13
10:48
(60) -> (33)
62 iQwerty
 
31.05.13
10:48
(59) а это что значит и как это делается. спасибо огромное
63 Любопытная
 
31.05.13
10:48
(62) Запрос. Посмотри в СП
64 salvator
 
31.05.13
10:49
Автор, погугли как делается запрос к таблице значений.
Напишешь рабочий запрос, возвращайся в топик.
65 Wobland
 
31.05.13
10:50
(64) ТЧ у него
66 vicof
 
31.05.13
10:50
(58) Чтобы учиться - у тебя должен быть эталон, к которому стремиться. Ну напишу я тебе решение, в следующей подобной задаче ты также будешь пятками по клаве елозить, не понимая, что и зачем делается. Обучение даст возможность понять, что делает система, и основные принципы, которые ты сможешь сопоставить с решением задач.
67 iQwerty
 
31.05.13
10:51
(66)-точно нет. (64)-спасибо
68 vicof
 
31.05.13
10:52
(67) Удачи
69 salvator
 
31.05.13
10:54
(65) После Стр=Пер я уже сомневаюсь, что переменная ТабличнаяЧасть1 - это именно табличная часть объекта :))
70 samozvanec
 
31.05.13
11:00
(52) больше не надо кода, пожалуйста!
71 iQwerty
 
31.05.13
11:02
вот это больше похоже на правду?
ТЗ = Новый ТаблицаЗначений;
           ТЗ = ТабличнаяЧасть1.Выгрузить();
           Область = ТЗ.Область(ТЗ.Объединить("Объект"));
           Текст3.Параметры.Текст3 = Текст3.Параметры.Текст3 +Символы.ПС+""""+ТабличнаяЧасть1.ВыгрузитьКолонку("Объект")+
                   +""""+". А именно:"+ Символы.ПС+"- бурение скважины, укладка в нее "+КК_Просклонять.ПросклонятьФразуПоСловам(СТрока.МатериалТрубы,2)+" трубы "+Строка.Количество+" "+КК_Просклонять.ПросклонятьФразуПоСловам(Строка.Номенклатура,2)+" диаметром "+Строка.Диаметр+". Общей протяженностью переходов - "+Строка.Протяженность+" м.";
           ЗапросОР = Новый Запрос;
           ЗапросОР.Текст =
                           | ВЫБРАТЬ
72 salvator
 
31.05.13
11:03
(71) Делай запрос напрямую к табличной части объекта. Не надо в таблицу значений выгружать.
73 iQwerty
 
31.05.13
11:04
то есть?
74 Wobland
 
31.05.13
11:06
ТЗ.Область(ТЗ.Объединить("Объект"));
и всё же.. что это такое?
75 Wobland
 
31.05.13
11:08
(74) то, что хрень, понятно. что этим автор хотел добиться?
76 salvator
 
31.05.13
11:10
(73) То и есть.