Форум программистов, компьютерный форум, киберфорум
1С: Собственные программы
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.61/75: Рейтинг темы: голосов - 75, средняя оценка - 4.61
 Аватар для felicita_091
8 / 8 / 2
Регистрация: 24.10.2012
Сообщений: 430
1C 8.x

Сложение строк

27.06.2014, 10:52. Показов 15954. Ответов 47
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как сложить таблицу значений по строкам?
Миниатюры
Сложение строк  
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.06.2014, 10:52
Ответы с готовыми решениями:

Сложение строк
Есть программа которая должна складывать строки(не надо мне говорить про функцию Concat). Вводные данные str1:='11111111111111111111' ...

Сложение строк
есть две строки вида 00:00:000 нужно сложить их, при чем если 01 + 02 то должно быть не 3, а 03

Сложение строк
Как сложить 2 строки по символьно ?

47
 Аватар для felicita_091
8 / 8 / 2
Регистрация: 24.10.2012
Сообщений: 430
27.06.2014, 14:47  [ТС]
Студворк — интернет-сервис помощи студентам
GreenkO, прости
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Для Н=1 по ТЗМен.Количество() Цикл                
            НаименованиеКолонки = "КолМенедж" +Н;
            СтруктураПараметровСтроки1 = Новый Структура;
            СтруктураПараметровСтроки1.Вставить("Сумма",  СтрокаТзМенОтгр[НаименованиеКолонки]);
            Если  ТзМенОтгр.Итог(НаименованиеКолонки) = 0  Тогда 
                СтруктураПараметровСтроки1.Вставить("Процент", "0%");
            Иначе 
                СтруктураПараметровСтроки1.Вставить("Процент", Формат((СтрокаТзМенОтгр[НаименованиеКолонки]/ТзМенОтгр.Итог(НаименованиеКолонки))*100,"ЧЦ=16; ЧДЦ=2; ЧН=Ноль")+"%");
            КонецЕсли;
            СтрокаМакета1 = Макет.ПолучитьОбласть("Строка | КолМен");
            СтрокаМакета1.Параметры.Заполнить(СтруктураПараметровСтроки1);
            Таб.Присоединить(СтрокаМакета1); 
        КонецЦикла;
 
        
        СтруктураПараметровСтроки = Новый Структура;
        СтруктураПараметровСтроки.Вставить("СуммаБрен", СтрокаТзМенОтгр.СуммаСтрок);
        Если  ТзМенОтгр.Итог(НаименованиеКолонки) = 0  Тогда 
            СтруктураПараметровСтроки.Вставить("ПроцентБренд", "0%");
        Иначе 
            СтруктураПараметровСтроки.Вставить("ПроцентБренд", Формат((СтрокаТзМенОтгр.СуммаСтрок/СтрокаТзМенОтгр.СуммаСтрок)*100,"ЧЦ=16; ЧДЦ=2; ЧН=Ноль")+"%");
        КонецЕсли;
        СтрокаМакета = Макет.ПолучитьОбласть("Строка | СумМен");
        СтрокаМакета.Параметры.Заполнить(СтруктураПараметровСтроки);
        Таб.Присоединить(СтрокаМакета);
Миниатюры
Сложение строк  
0
Эксперт 1С
 Аватар для GreenkA
3066 / 2013 / 526
Регистрация: 25.06.2009
Сообщений: 6,964
27.06.2014, 14:57
felicita_091, т.е. ты считаешь, что так куда понятнее?
где описание задачи?
где весь код?
Откуда это СтрокаТзМенОтгр, где ты вообще вывод в табдок начинаешь...
0
 Аватар для felicita_091
8 / 8 / 2
Регистрация: 24.10.2012
Сообщений: 430
27.06.2014, 15:01  [ТС]
GreenkO,
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
Таб = Новый ТабличныйДокумент;
    Таб.АвтоМасштаб = Истина;
    Таб.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
    Макет = ПолучитьМакет("БрендыИМенеджеры");
 
    СтруктураПараметровЗаголовки = Новый Структура;
    СтруктураПараметровЗаголовки.Вставить("НачДата", Формат(НачалоМесяца(НачДата),"ДФ=dd.MM.yyyy"));
    СтруктураПараметровЗаголовки.Вставить("КонДата", Формат(КонецМесяца(КонДата),"ДФ=dd.MM.yyyy"));
    ЗаголовокМакета = Макет.ПолучитьОбласть("Заголовок");
    ЗаголовокМакета.Параметры.Заполнить(СтруктураПараметровЗаголовки);
    Таб.Вывести(ЗаголовокМакета);
 
    ШапкаМакета = Макет.ПолучитьОбласть("Шапка |КолБренд");
    Таб.Вывести(ШапкаМакета);
    
    //******************Формируем менеджер**************
    ТзМен = Новый ТаблицаЗначений;
    ТзМен.Колонки.Добавить("Менеджер");
    
    БренМен = Справочники.Менеджеры.Выбрать();
    
    Пока БренМен.Следующий() Цикл
        СтрокаТЗ = ТзМен.Добавить();   
        СтрокаТЗ.Менеджер = БренМен.Ссылка;
    КонецЦикла;
 
    Если Режим Тогда Сообщить("***Формируем Менеджер***") КонецЕсли;
    //Если Режим Тогда Сообщить(БренМен) КонецЕсли;
 
    Для Каждого СтрокаТЗМен из ТЗМен Цикл
 
        ТекстКолонки =  СтрокаТЗМен.Менеджер.Ссылка.Наименование;
        СтруктураПараметровШапки = Новый Структура;
        СтруктураПараметровШапки.Очистить();
        СтруктураПараметровШапки.Вставить("Менеджер", ТекстКолонки);
        ШапкаМакета = Макет.ПолучитьОбласть("Шапка | КолМен");
        ШапкаМакета.Параметры.Заполнить(СтруктураПараметровШапки);   
        Таб.Присоединить(ШапкаМакета);
        
        Если Режим Тогда Сообщить(СтрокаТЗМен.Менеджер.Ссылка.Наименование) КонецЕсли;
     КонецЦикла;
 
     //****************************************************************
    Если Режим Тогда Сообщить("***Заполняем строки таблицы***") КонецЕсли;
 
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |   ОтгрузкаТМЦ.Регистратор,
        |   ОтгрузкаТМЦ.ТМЦ,
        |   ОтгрузкаТМЦ.СуммаВсего,
        |   ОтгрузкаТМЦ.Период
        |ИЗ
        |   РегистрНакопления.ОтгрузкаТМЦ КАК ОтгрузкаТМЦ
        |ГДЕ
        |   ОтгрузкаТМЦ.Период МЕЖДУ &ДатаНач И &ДатаКон"; 
                    
    Запрос.УстановитьПараметр("ДатаНач",НачалоМесяца(НачДата));            
    Запрос.УстановитьПараметр("ДатаКон",КонецМесяца(КонДата));
        
    Результат = Запрос.Выполнить();
    ВыборкаДетальныеЗаписи = Результат.Выбрать();
    
    ТзМенОтгр = Новый ТаблицаЗначений;
    ТзМенОтгр.Колонки.Добавить("Бренды");                           
    ТзМенОтгр.Колонки.Добавить("ГруппаБренды");
    ТзМенОтгр.Колонки.Добавить("СуммаСтрок");
    КолонкиСуммирования = "";
    
    
    Для Н=1 по ТЗМен.Количество() Цикл
            ТзМенОтгр.Колонки.Добавить("КолМенедж"+Н);
            КолонкиСуммирования = КолонкиСуммирования  + ",КолМенедж" + Н;  
    КонецЦикла;
    КолонкиСуммирования = Прав(КолонкиСуммирования,СтрДлина(КолонкиСуммирования)-1);
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        СтрокаТзМенОтгр = ТзМенОтгр.Добавить();
        СтрокаТзМенОтгр.Бренды  = ВыборкаДетальныеЗаписи.ТМЦ.КлассификаторТМЦ;
        СтрокаТзМенОтгр.ГруппаБренды  = ВыборкаДетальныеЗаписи.ТМЦ.КлассификаторТМЦ.Родитель;
        Для Н=1 по ТЗМен.Количество() Цикл
            ТекМен = ТзМен.Получить(Н-1);
            НаименованиеКолонки = "КолМенедж"+Н;
            Если ТекМен.Менеджер=ВыборкаДетальныеЗаписи.Регистратор.Ссылка.Менеджер  Тогда
                СтрокаТзМенОтгр[НаименованиеКолонки] = ВыборкаДетальныеЗаписи.СуммаВсего;
                СтрокаТзМенОтгр.СуммаСтрок = ВыборкаДетальныеЗаписи.СуммаВсего;
            Иначе 
                СтрокаТзМенОтгр[НаименованиеКолонки] = 0;
            КонецЕсли;  
        КонецЦикла;   
    КонецЦикла;
        
    ТзМенОтгр.Свернуть("Бренды,ГруппаБренды",КолонкиСуммирования + ",СуммаСтрок");
    ТзМенОтгр.Сортировать("ГруппаБренды,Бренды");
    
    Элементыформы.ТабМен.Значение=ТзМенОтгр;
    Элементыформы.ТабМен.СоздатьКолонки();
    Элементыформы.ТабМен.ОбновитьСтроки();
    
 
    СуммаМакета = Макет.ПолучитьОбласть("Сумма |КолБренд");
    Таб.Вывести(СуммаМакета);
    
    Для Н=1 по ТЗМен.Количество() Цикл
        НаименованиеКолонки = "КолМенедж" +Н;
        СтруктураПараметровСтроки = Новый Структура;
        СтруктураПараметровСтроки.Вставить("СуммаВсего",  ТзМенОтгр.Итог(НаименованиеКолонки));
        Если  ТзМенОтгр.Итог(НаименованиеКолонки) = 0  Тогда 
            СтруктураПараметровСтроки.Вставить("Проц", "0%");
        Иначе 
            СтруктураПараметровСтроки.Вставить("Проц", Формат((ТзМенОтгр.Итог(НаименованиеКолонки)/ТзМенОтгр.Итог(НаименованиеКолонки))*100,"ЧЦ=16; ЧН=Ноль")+"%");
        КонецЕсли;
        СтрокаМакета = Макет.ПолучитьОбласть("Сумма | КолМен");
        СтрокаМакета.Параметры.Заполнить(СтруктураПараметровСтроки);
        Таб.Присоединить(СтрокаМакета);
    КонецЦикла;
    
        Для Каждого СтрокаТзМенОтгр Из ТзМенОтгр   Цикл 
        СтруктураПараметровСтроки = Новый Структура;
        СтруктураПараметровСтроки.Вставить("ГрупБренд", СтрокаТзМенОтгр.ГруппаБренды);
        СтруктураПараметровСтроки.Вставить("Бренд",  СтрокаТзМенОтгр.Бренды);
        СтрокаМакета = Макет.ПолучитьОбласть("Строка | КолБренд");
        СтрокаМакета.Параметры.Заполнить(СтруктураПараметровСтроки);
        Таб.Вывести(СтрокаМакета);
                
        Для Н=1 по ТЗМен.Количество() Цикл                
            НаименованиеКолонки = "КолМенедж" +Н;
            СтруктураПараметровСтроки1 = Новый Структура;
            СтруктураПараметровСтроки1.Вставить("Сумма",  СтрокаТзМенОтгр[НаименованиеКолонки]);
            Если  ТзМенОтгр.Итог(НаименованиеКолонки) = 0  Тогда 
                СтруктураПараметровСтроки1.Вставить("Процент", "0%");
            Иначе 
                СтруктураПараметровСтроки1.Вставить("Процент", Формат((СтрокаТзМенОтгр[НаименованиеКолонки]/ТзМенОтгр.Итог(НаименованиеКолонки))*100,"ЧЦ=16; ЧДЦ=2; ЧН=Ноль")+"%");
            КонецЕсли;
            СтрокаМакета1 = Макет.ПолучитьОбласть("Строка | КолМен");
            СтрокаМакета1.Параметры.Заполнить(СтруктураПараметровСтроки1);
            Таб.Присоединить(СтрокаМакета1); 
        КонецЦикла;
        
        СтруктураПараметровСтроки = Новый Структура;
        СтруктураПараметровСтроки.Вставить("СуммаБрен", СтрокаТзМенОтгр.СуммаСтрок);
        Если  ТзМенОтгр.Итог(НаименованиеКолонки) = 0  Тогда 
            СтруктураПараметровСтроки.Вставить("ПроцентБренд", "0%");
        Иначе 
            СтруктураПараметровСтроки.Вставить("ПроцентБренд", Формат((ТзМенОтгр.Итог(НаименованиеКолонки)/СтрокаТзМенОтгр.СуммаСтрок),"ЧЦ=16; ЧДЦ=2; ЧН=Ноль")+"%");
        КонецЕсли;
        СтрокаМакета = Макет.ПолучитьОбласть("Строка | СумМен");
        СтрокаМакета.Параметры.Заполнить(СтруктураПараметровСтроки);
        Таб.Присоединить(СтрокаМакета);
 
        
    КонецЦикла;
0
Эксперт 1С
 Аватар для GreenkA
3066 / 2013 / 526
Регистрация: 25.06.2009
Сообщений: 6,964
27.06.2014, 15:21
felicita_091, где текст задачи?? описание?
ох... почему я должна разбираться, что тебе нужно вывести по твоему коду? расписала бы нормально какие где проценты и как должны рассчитываться. считаем проценты по всем менеджерам или по итогу по каждому?
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
   //здесь ты выводишь итоговый процент по всей таблице, так?? где для каждого менеджера процент = Итог по колонке / Итог по сумме строк.
    Для Н=1 по ТЗМен.Количество() Цикл
        НаименованиеКолонки = "КолМенедж" +Н;
        СтруктураПараметровСтроки = Новый Структура;
        СтруктураПараметровСтроки.Вставить("СуммаВсего",  ТзМенОтгр.Итог(НаименованиеКолонки));
        Если  ТзМенОтгр.Итог(НаименованиеКолонки) = 0  Тогда 
            СтруктураПараметровСтроки.Вставить("Проц", "0%");
        Иначе 
//что ты тут получить собиралась - без понятия, 100% у тебя будет, всегда
//            СтруктураПараметровСтроки.Вставить("Проц", Формат((ТзМенОтгр.Итог(НаименованиеКолонки)/ТзМенОтгр.Итог(НаименованиеКолонки))*100,"ЧЦ=16; ЧН=Ноль")+"%");
 
//возможно... меняем эту строку
            СтруктураПараметровСтроки.Вставить("Проц", Формат((ТзМенОтгр.Итог(НаименованиеКолонки)/ТзМенОтгр.Итог("СуммаСтрок"))*100,"ЧЦ=16; ЧН=Ноль")+"%");
        КонецЕсли;
        СтрокаМакета = Макет.ПолучитьОбласть("Сумма | КолМен");
        СтрокаМакета.Параметры.Заполнить(СтруктураПараметровСтроки);
        Таб.Присоединить(СтрокаМакета);
    КонецЦикла;
 
//здесь ты обходишь каждую строку
        Для Каждого СтрокаТзМенОтгр Из ТзМенОтгр   Цикл 
        СтруктураПараметровСтроки = Новый Структура;
        СтруктураПараметровСтроки.Вставить("ГрупБренд", СтрокаТзМенОтгр.ГруппаБренды);
        СтруктураПараметровСтроки.Вставить("Бренд",  СтрокаТзМенОтгр.Бренды);
        СтрокаМакета = Макет.ПолучитьОбласть("Строка | КолБренд");
        СтрокаМакета.Параметры.Заполнить(СтруктураПараметровСтроки);
        Таб.Вывести(СтрокаМакета);
                
        Для Н=1 по ТЗМен.Количество() Цикл                 
            НаименованиеКолонки = "КолМенедж" +Н;
            СтруктураПараметровСтроки1 = Новый Структура;
            СтруктураПараметровСтроки1.Вставить("Сумма",  СтрокаТзМенОтгр[НаименованиеКолонки]);
            Если  ТзМенОтгр.Итог(НаименованиеКолонки) = 0  Тогда 
                СтруктураПараметровСтроки1.Вставить("Процент", "0%");
            Иначе 
//процент для каждого менеджера = значение текущей колонки/итог по текущей колонке, точно?    
                СтруктураПараметровСтроки1.Вставить("Процент", Формат((СтрокаТзМенОтгр[НаименованиеКолонки]/ТзМенОтгр.Итог(НаименованиеКолонки))*100,"ЧЦ=16; ЧДЦ=2; ЧН=Ноль")+"%");
            КонецЕсли;
            СтрокаМакета1 = Макет.ПолучитьОбласть("Строка | КолМен");
            СтрокаМакета1.Параметры.Заполнить(СтруктураПараметровСтроки1);
            Таб.Присоединить(СтрокаМакета1);    
        КонецЦикла;
        
        СтруктураПараметровСтроки = Новый Структура;
        СтруктураПараметровСтроки.Вставить("СуммаБрен", СтрокаТзМенОтгр.СуммаСтрок);
        Если  ТзМенОтгр.Итог(НаименованиеКолонки) = 0  Тогда 
            СтруктураПараметровСтроки.Вставить("ПроцентБренд", "0%");
        Иначе 
//это что??? вообще не понимаю эту конструкцию.
            СтруктураПараметровСтроки.Вставить("ПроцентБренд", Формат((ТзМенОтгр.Итог(НаименованиеКолонки)/СтрокаТзМенОтгр.СуммаСтрок),"ЧЦ=16; ЧДЦ=2; ЧН=Ноль")+"%");
        КонецЕсли;
        СтрокаМакета = Макет.ПолучитьОбласть("Строка | СумМен");
        СтрокаМакета.Параметры.Заполнить(СтруктураПараметровСтроки);
        Таб.Присоединить(СтрокаМакета);
 
        
    КонецЦикла;
0
 Аватар для felicita_091
8 / 8 / 2
Регистрация: 24.10.2012
Сообщений: 430
27.06.2014, 15:31  [ТС]
GreenkO, все спасибо, я уже разобралась)) прости..
0
 Аватар для duk337
2956 / 1768 / 84
Регистрация: 03.11.2011
Сообщений: 8,280
27.06.2014, 17:31
Цитата Сообщение от felicita_091 Посмотреть сообщение
только руками
тогда придётся ведь и голову включать. Всё будет зависеть от алгоритма в целом, начиная с запроса и заканчивая построением вертикальных и горизонтальных областей макета. Т.о, помощь будет заключаться в отчете от и до.
Я не готов.
Может, кто другой.
0
 Аватар для felicita_091
8 / 8 / 2
Регистрация: 24.10.2012
Сообщений: 430
27.06.2014, 17:38  [ТС]
duk337, спасибо за подсказку, но у меня все получилось)
0
27.06.2014, 17:41

Не по теме:

ух ты! Растём!! :good:

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.06.2014, 17:41

Сложение строк!
Подскажите как сделать действие??? Сложение процедуры +(кол материала* цену матер+кол материала*цену)=ответ

Сложение строк
Добрый день! Есть три таблицы: В первой, 4тыре столбика, название строки "Т1" (текстовый) и три аргумента x, y, z...

сложение строк
пишу программу для сложения двух строк в одну, но в консоли просто какие-то 3 символа рандомных выводит, английские строки тоже пробовал,...

Сложение строк в Си
Добрый день. Пытаюсь решить другим способом (чтобы было короче) задачу по марио в cs50. Добрые люди помогли по функции printf. Сейчас завис...

Сложение строк
смысл программы: вводим с клавиатуры строки....они запихиваются в вектор, когда мы прекращаем ввод они суммируются алгоритмом accumulate()...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
48
Ответ Создать тему
Новые блоги и статьи
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
Запись в регистр сведений независимо от заполненности табличной части
Maks 25.08.2026
Реализация из решения ниже выполнена на нетиповом документе с несколькими табличными частями, разработанного в КА2. Задача: Обеспечить запись документа в регистр сведений независимо от. . .
Ноутбук Альфария
kumehtar 24.08.2026
Встретился тут в сети ноутбук Альфария, примарха Альфа-Легиона. Хотя возможно, это ноутбук Омегона, разумеется. Ну как вам?
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания источниках данных и элементов формы(текстовые поля и метки), опирается все это на технологию событий и мета. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru