Форум программистов, компьютерный форум, киберфорум
1С: Собственные программы
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
4 / 4 / 0
Регистрация: 16.01.2013
Сообщений: 1,228
1
1C 8.x

Суммировать количество

23.12.2015, 15:20. Показов 2222. Ответов 44
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Подскажите как можно суммировать Количество заявок, чтобы потом проверить по условию.

1C
1
2
3
4
5
    Фильтр = Новый Структура();     
    Фильтр.Вставить("Маршрут",Маршрут);
    КоличествоЗаявок=РегистрыСведений.ЗаявкиНаПоставку.ПолучитьПоследнее(КонецДня(ДатаПоставки),Фильтр).Количество;    
    Если КоличествоЗаявок > 5  Тогда
....
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.12.2015, 15:20
Ответы с готовыми решениями:

Как в реквизит справочника вывести значения из реквизитов других справочников и суммировать?
Всем привет! Такой вопрос. Есть справочник Договор, с реквизитом СуммаДоговора, в него нужно...

Суммировать количество
Ребят, вот никак не ожидала что 1с будет для меня запутанным. Пишу конфигурацию. Есть справочник...

Суммировать элементы матрицы, возвеси в квадрат каждое число и снова суммировать
Всем привет! Предположим, есть некий массив 10 на 10, ну то есть 100 чисел. Эти числа такие...

Суммировать количество квадратуру
В таблице суммирует квадратуру одного продукта после этой нужно суммировать <th><script...

44
4 / 4 / 0
Регистрация: 16.01.2013
Сообщений: 1,228
25.12.2015, 10:27  [ТС] 21
Author24 — интернет-сервис помощи студентам
А нужно если Xomych, Вот код

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
Процедура ОбработкаПроведения(Отказ, Режим)   
    
    Фильтр = Новый Структура();     
    Фильтр.Вставить("Маршрут",Маршрут);
    КоличествоЗ=РегистрыСведений.ПланировщикЗаявокНаПоставкуБаллонов.ПолучитьПоследнее(КонецДня(Дата),Фильтр).Количество;
    КоличествоФормы=КоличествоЛгт+Количество;
    
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    |   ЗаявкиНаПоставку.Период,
    |   СУММА(ЕСТЬNULL(ЗаявкиНаПоставку.Количество, 0)) КАК Количество,
    |   ЗаявкиНаПоставку.Маршрут
    |ИЗ
    |   РегистрСведений.ЗаявкиНаПоставку КАК ЗаявкиНаПоставку
    |ГДЕ
    |   ЗаявкиНаПоставку.Маршрут = &Маршрут
    |   И ЗаявкиНаПоставку.Период МЕЖДУ &ДатаНач И &ДатаКон
    |
    |СГРУППИРОВАТЬ ПО
    |   ЗаявкиНаПоставку.Период,
    |   ЗаявкиНаПоставку.Маршрут";
    Запрос.УстановитьПараметр("Маршрут",Маршрут);
    Запрос.УстановитьПараметр("ДатаНач",НачалоДня(Дата));
    Запрос.УстановитьПараметр("ДатаКон",КонецДня(Дата));
    
    Результат = Запрос.Выполнить().Выбрать();         
    Пока Результат.Следующий() Цикл            
        КоличествоЗаявок=Результат.Количество;
        КоличествоИтого=КоличествоЗаявок+КоличествоФормы;         
        
        Если КоличествоИтого < КоличествоЗ или КоличествоИтого = КоличествоЗ Тогда          
            
            Движение = Движения.СтатусЗаявок.Добавить();
            Движение.Период = НачалоДня(Дата);
            Движение.ДатаЗаявки=НачалоДня(Дата);
            Движение.Маршрут=Маршрут; 
            Движение.Заявка = Ссылка;
            Движение.ЛицевойСчет = ЛицевойСчет;
            Движение.Статус=Перечисления.СтатусЗаявки.Новая;
            
            Движение = Движения.ЗаявкиНаПоставку.Добавить();
            Движение.Период = Дата;
            Движение.ЛицевойСчет = ЛицевойСчет;
            Движение.Маршрут=Маршрут;
            Движение.Количество=Количество+КоличествоЛгт;
        Иначе
            Предупреждение("Лимит изчерван!");
            Возврат
        КонецЕсли;
    КонецЦикла;
КонецПроцедуры
0
857 / 656 / 111
Регистрация: 01.11.2012
Сообщений: 2,411
25.12.2015, 10:31 22
Лучший ответ Сообщение было отмечено Ermak27 как решение

Решение

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
Процедура ОбработкаПроведения(Отказ, Режим)     
    
    Фильтр = Новый Структура();     
    Фильтр.Вставить("Маршрут",Маршрут);
    КоличествоЗ=РегистрыСведений.ПланировщикЗаявокНаПоставкуБаллонов.ПолучитьПоследнее(КонецДня(Дата),Фильтр).Количество;
    КоличествоФормы=КоличествоЛгт+Количество;
    
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    |   ЗаявкиНаПоставку.Период,
    |   СУММА(ЕСТЬNULL(ЗаявкиНаПоставку.Количество, 0)) КАК Количество,
    |   ЗаявкиНаПоставку.Маршрут
    |ИЗ
    |   РегистрСведений.ЗаявкиНаПоставку КАК ЗаявкиНаПоставку
    |ГДЕ
    |   ЗаявкиНаПоставку.Маршрут = &Маршрут
    |   И ЗаявкиНаПоставку.Период МЕЖДУ &ДатаНач И &ДатаКон
    |
    |СГРУППИРОВАТЬ ПО
    |   ЗаявкиНаПоставку.Период,
    |   ЗаявкиНаПоставку.Маршрут";
    Запрос.УстановитьПараметр("Маршрут",Маршрут);
    Запрос.УстановитьПараметр("ДатаНач",НачалоДня(Дата));
    Запрос.УстановитьПараметр("ДатаКон",КонецДня(Дата));
    КоличествоИтого=0;
    Результат = Запрос.Выполнить().Выбрать();        
    Пока Результат.Следующий() Цикл              
        КоличествоЗаявок=Результат.Количество;
        КоличествоИтого=КоличествоЗаявок+КоличествоФормы;           
 
    КонецЦикла;
 Если КоличествоИтого <= КоличествоЗ Тогда          
            
            Движение = Движения.СтатусЗаявок.Добавить();
            Движение.Период = НачалоДня(Дата);
            Движение.ДатаЗаявки=НачалоДня(Дата);
            Движение.Маршрут=Маршрут; 
            Движение.Заявка = Ссылка;
            Движение.ЛицевойСчет = ЛицевойСчет;
            Движение.Статус=Перечисления.СтатусЗаявки.Новая;
            
            Движение = Движения.ЗаявкиНаПоставку.Добавить();
            Движение.Период = Дата;
            Движение.ЛицевойСчет = ЛицевойСчет;
            Движение.Маршрут=Маршрут;
            Движение.Количество=Количество+КоличествоЛгт;
        Иначе
            Предупреждение("Лимит исчерван!");
         
        КонецЕсли;
КонецПроцедуры
1
4 / 4 / 0
Регистрация: 16.01.2013
Сообщений: 1,228
25.12.2015, 10:39  [ТС] 23
Все работает, спасибо большое!
0
4 / 4 / 0
Регистрация: 16.01.2013
Сообщений: 1,228
28.12.2015, 10:50  [ТС] 24
Почему то не работает, что не так

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
Фильтр = Новый Структура();     
    Фильтр.Вставить("Маршрут",ЛицевойСчет.Участок);
    КоличествоЗ=РегистрыСведений.ПланировщикРемонтныхЗаявок.ПолучитьПоследнее(КонецДня(Дата),Фильтр).Количество;
    
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    РемонтныеЗаявки.Период КАК Период,
                   |    СУММА(ЕСТЬNULL(РемонтныеЗаявки.Количество, 0)) КАК Количество,
                   |    РемонтныеЗаявки.Участок
                   |ИЗ
                   |    РегистрНакопления.РемонтныеЗаявки КАК РемонтныеЗаявки
                   |ГДЕ
                   |    РемонтныеЗаявки.Участок = &Маршрут
                   |    И РемонтныеЗаявки.Период МЕЖДУ &ДатаНач И &ДатаКон
                   |
                   |СГРУППИРОВАТЬ ПО
                   |    РемонтныеЗаявки.Период,
                   |    РемонтныеЗаявки.Участок";
    Запрос.УстановитьПараметр("Маршрут",ЛицевойСчет.Участок);
    Запрос.УстановитьПараметр("ДатаНач",НачалоДня(Дата));
    Запрос.УстановитьПараметр("ДатаКон",КонецДня(Дата));
    КоличествоЗаявок=0;
    Результат = Запрос.Выполнить().Выбрать();
    
    Пока Результат.Следующий() Цикл              
        КоличествоЗаявок=Результат.Количество;
    КонецЦикла;
    
Если КоличествоЗаявок <= КоличествоЗ Тогда              
        
        Движение = Движения.СтатусЗаявокНаРемонт.Добавить();
        Движение.Период = НачалоДня(Дата);
        Движение.ДатаЗаявки=НачалоДня(Дата);
        Движение.Участок=ЛицевойСчет.Участок; 
        Движение.Заявка = Ссылка;
        Движение.ЛицевойСчет = ЛицевойСчет;
        Движение.Статус=Перечисления.СтатусЗаявки.Новая; 
        
    Иначе
        Предупреждение("На этот день количество заявок закончились!");       
    КонецЕсли;
Добавлено через 5 минут
В отладчике перед циклом пишет ошибка чтения значения.
0
Модератор
Эксперт 1С
3784 / 2964 / 589
Регистрация: 10.03.2011
Сообщений: 11,669
Записей в блоге: 1
28.12.2015, 11:09 25
Цитата Сообщение от Ermak27 Посмотреть сообщение
В отладчике перед циклом пишет ошибка чтения значения.
Это не ошибка, так и должно работать! Значения появятся только после метода Следующий()
0
4 / 4 / 0
Регистрация: 16.01.2013
Сообщений: 1,228
28.12.2015, 11:58  [ТС] 26
Dethmontt, а почему тогда не работает.

Добавлено через 15 секунд
Не заходит в цикл
0
Модератор
Эксперт 1С
3784 / 2964 / 589
Регистрация: 10.03.2011
Сообщений: 11,669
Записей в блоге: 1
28.12.2015, 12:02 27
Цитата Сообщение от Ermak27 Посмотреть сообщение
Не заходит в цикл
Значит нет записей - в синт. помощнике почитай про метод Следующий()
0
4 / 4 / 0
Регистрация: 16.01.2013
Сообщений: 1,228
28.12.2015, 12:06  [ТС] 28
Dethmontt, а как тогда быть, запись есть только вот опять Период не работает, почему то
1C
1
2
Запрос.УстановитьПараметр("ДатаНач",НачалоДня(Дата));
    Запрос.УстановитьПараметр("ДатаКон",КонецДня(Дата));
0
Модератор
Эксперт 1С
3784 / 2964 / 589
Регистрация: 10.03.2011
Сообщений: 11,669
Записей в блоге: 1
28.12.2015, 12:09 29
Цитата Сообщение от Ermak27 Посмотреть сообщение
а как тогда быть
Включаем МОЗг и начинаем ДУМАТЬ!
0
4 / 4 / 0
Регистрация: 16.01.2013
Сообщений: 1,228
28.12.2015, 12:11  [ТС] 30
Dethmontt, я не понимаю, у меня же правильно прописано установка параметра по периоду
0
Модератор
Эксперт 1С
3784 / 2964 / 589
Регистрация: 10.03.2011
Сообщений: 11,669
Записей в блоге: 1
28.12.2015, 12:35 31
Цитата Сообщение от Ermak27 Посмотреть сообщение
у меня же правильно
Конечно правильно, только вот какие данные у тебя в регистре известно только тебе одному!
0
4 / 4 / 0
Регистрация: 16.01.2013
Сообщений: 1,228
28.12.2015, 14:01  [ТС] 32
Dethmontt, Не понял.
0
4 / 4 / 0
Регистрация: 16.01.2013
Сообщений: 1,228
29.12.2015, 17:34  [ТС] 33
Dethmontt, я не понимаю почему тогда этот код работает, тут тоже сначала заявок 0

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
    Фильтр = Новый Структура();     
    Фильтр.Вставить("Маршрут",Маршрут);
    КоличествоЗ=РегистрыСведений.ПланировщикЗаявокНаПоставкуБаллонов.ПолучитьПоследнее(КонецДня(Дата),Фильтр).Количество;
    КоличествоФормы=КоличествоЛгт+Количество;
    
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    |   ЗаявкиНаПоставку.Период,
    |   СУММА(ЕСТЬNULL(ЗаявкиНаПоставку.Количество, 0)) КАК Количество,
    |   ЗаявкиНаПоставку.Маршрут
    |ИЗ
    |   РегистрСведений.ЗаявкиНаПоставку КАК ЗаявкиНаПоставку
    |ГДЕ
    |   ЗаявкиНаПоставку.Маршрут = &Маршрут
    |   И ЗаявкиНаПоставку.Период МЕЖДУ &ДатаНач И &ДатаКон
    |
    |СГРУППИРОВАТЬ ПО
    |   ЗаявкиНаПоставку.Период,
    |   ЗаявкиНаПоставку.Маршрут";
    Запрос.УстановитьПараметр("Маршрут",Маршрут);
    Запрос.УстановитьПараметр("ДатаНач",НачалоДня(Дата));
    Запрос.УстановитьПараметр("ДатаКон",КонецДня(Дата));
    КоличествоИтого=0;
    Результат = Запрос.Выполнить().Выбрать();
    
    Пока Результат.Следующий() Цикл              
        КоличествоЗаявок=Результат.Количество;
        КоличествоИтого=КоличествоЗаявок+КоличествоФормы;
    КонецЦикла;
    
    Если КоличествоИтого <= КоличествоЗ Тогда                
        
        Движение = Движения.СтатусЗаявок.Добавить();
        Движение.Период = НачалоДня(Дата);
        Движение.ДатаЗаявки=НачалоДня(Дата);
        Движение.Маршрут=Маршрут; 
        Движение.Заявка = Ссылка;
        Движение.ЛицевойСчет = ЛицевойСчет;
        Движение.Статус=Перечисления.СтатусЗаявки.Новая;
        
        Движение = Движения.ЗаявкиНаПоставку.Добавить();
        Движение.Период = Дата;
        Движение.ЛицевойСчет = ЛицевойСчет;
        Движение.Маршрут=Маршрут;
        Движение.Количество=Количество+КоличествоЛгт;
0
Модератор
Эксперт 1С
3784 / 2964 / 589
Регистрация: 10.03.2011
Сообщений: 11,669
Записей в блоге: 1
29.12.2015, 17:57 34
Цитата Сообщение от Ermak27 Посмотреть сообщение
я не понимаю почему
Потому что код нужно писать, а не ТУПО копировать.

З.Ы. Включаешь СВОЙ МОЗГ и много думаешь!!!
0
4 / 4 / 0
Регистрация: 16.01.2013
Сообщений: 1,228
30.12.2015, 09:04  [ТС] 35
Dethmontt, хороший ответ, помог
0
857 / 656 / 111
Регистрация: 01.11.2012
Сообщений: 2,411
30.12.2015, 09:31 36
Цитата Сообщение от Ermak27 Посмотреть сообщение
НачалоДня(Дата)
Не надо использовать слово Дата как переменную
0
4 / 4 / 0
Регистрация: 16.01.2013
Сообщений: 1,228
30.12.2015, 09:34  [ТС] 37
Xomych, а как тогда, если у меня реквизит называется Дата
0
857 / 656 / 111
Регистрация: 01.11.2012
Сообщений: 2,411
30.12.2015, 09:40 38
Цитата Сообщение от Ermak27 Посмотреть сообщение
Xomych, а как тогда, если у меня реквизит называется Дата
А, это реквизит, тогда норм.
0
4 / 4 / 0
Регистрация: 16.01.2013
Сообщений: 1,228
30.12.2015, 09:44  [ТС] 39
Xomych, Да это реквизит в документе
0
Модератор
Эксперт 1С
3784 / 2964 / 589
Регистрация: 10.03.2011
Сообщений: 11,669
Записей в блоге: 1
30.12.2015, 11:06 40
Ermak27, что за поле Количество ? Что в нем храниться и зачем ты его суммируешь в запросе?
0
30.12.2015, 11:06
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.12.2015, 11:06
Помогаю со студенческими работами здесь

Суммировать количество одинаковых строк
Добрый день, Уважаемые! Нужна помощь!!! Как автоматизировать редактирование таблицы excel (окала...

Суммировать значения 1 столбца таблицы (количество)
У меня есть акцесс (база) и уже более-менее реализвоано в билдере. При желании могу скинуть. Мне...

Обновить (суммировать данные) Stringgrid определенное количество раз
Приветствую!:yes: Случайным образом (рандомно) моргают (меняют цвет) буквы А и В, когда...

Суммировать общее количество символов внутри каждого слова
Помогите пожалуйста сделать задание: пользователь вводит несколько слов латинскими буквами....


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru