Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
15 Дек 2017, 05:42
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Как сложить значения Столбца "Объем"  (Прочитано 13530 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн anton.kislov

  • *
  • Сообщений: 33
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2013-05-23
  • Сайт: 
  • Профессия: Разработчик 1С
Добавил в подвал документа надпись ИтогоОбъем
Рядом хотел добавить СуммуОбъемов по данным столбца Объем, сделать как автосумма..

Подскажите как это сделать?


Оффлайн Новенькая

  • ****
  • Сообщений: 250
  • РЕПУТАЦИЯ: 21
  • КПД: 8%
  • Регистрация: 2011-02-21
  • Сайт: 
  • Профессия: Программист 1С
СуммаОбъемов =ТвояТаблица.Итог("Объем");

Оффлайн mixqn

  • Администратор
  • *****
  • Сообщений: 1346
  • РЕПУТАЦИЯ: 166
  • КПД: 12%
  • Who is John Galt?
  • Регистрация: 2012-08-15
  • Сайт: 3gmaster.net
  • Профессия: Программист 1С
В свойствах колонки табличного поля поставьте флажок у поля ОтображатьИтогиВПодвале

Оффлайн anton.kislov

  • *
  • Сообщений: 33
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2013-05-23
  • Сайт: 
  • Профессия: Разработчик 1С
В свойствах колонки табличного поля поставьте флажок у поля ОтображатьИтогиВПодвале
У колонки Сумма есть данное Флажок, а у Объема нет((
Добавлено: 07 Окт 2013, 10:54

СуммаОбъемов =ТвояТаблица.Итог("Объем");
Дело в том, что данные (объем и вес) у меня хранятся в Массиве, который я получаю запросом, а потом расставляю согласно номенклатурам...

Последний раз редактировалось: anton.kislov; 07 Окт 2013, 10:54. Причина: Объединение сообщений

Оффлайн Новенькая

  • ****
  • Сообщений: 250
  • РЕПУТАЦИЯ: 21
  • КПД: 8%
  • Регистрация: 2011-02-21
  • Сайт: 
  • Профессия: Программист 1С
Ты сумму объемов где хочешь вывести-то? в таблице? или отдельно? Формы у тебя обычные или управляемые? Тип у реквизита "Объем" - число?

Оффлайн mixqn

  • Администратор
  • *****
  • Сообщений: 1346
  • РЕПУТАЦИЯ: 166
  • КПД: 12%
  • Who is John Galt?
  • Регистрация: 2012-08-15
  • Сайт: 3gmaster.net
  • Профессия: Программист 1С
Дело в том, что данные (объем и вес) у меня хранятся в Массиве, который я получаю запросом, а потом расставляю согласно номенклатурам...
раз так, то и текст в подвале устанавливайте программно: рассчитайте итог и через свойство ТекстПодвала соответствующей колонки разместите.
Итог предварительно нужно отформатировать в нужном виде.

Оффлайн anton.kislov

  • *
  • Сообщений: 33
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2013-05-23
  • Сайт: 
  • Профессия: Разработчик 1С
Ты сумму объемов где хочешь вывести-то? в таблице? или отдельно? Формы у тебя обычные или управляемые? Тип у реквизита "Объем" - число?
Сумму хочу вывести в подвале.. Формы обычные, не управляемые.. Тип у реквизита - число
Добавлено: 08 Окт 2013, 03:35

Дело в том, что данные (объем и вес) у меня хранятся в Массиве, который я получаю запросом, а потом расставляю согласно номенклатурам...
раз так, то и текст в подвале устанавливайте программно: рассчитайте итог и через свойство ТекстПодвала соответствующей колонки разместите.
Итог предварительно нужно отформатировать в нужном виде.
Я понимаю, что программно..
СуммаОбъем = Структура.Итог("Объем");	
ЭлементыФормы.ВсегоОбъем.Значение = СуммаОбъем;
Пытаюсь вот так... Структура - массив со значениями объема..
Но не выходит

Добавлено: 08 Окт 2013, 06:27

Процедура ТоварыПриПолученииДанных(Элемент, ОформленияСтрок)		

// в этот массив соберем всю номенклатуру, которая присутствует в выводимых строках.
МассивНоменклатуры = Новый Массив;

// в этот массив соберем все единицы измерения, которые присутствуют в выводимых строках.
МассивЕдиницИзмерения = Новый Массив;

// обходим выводимые строки и одним циклом собираем сразу и номенклатуру, и единицы измерения.
Для Каждого ОформлениеСтроки Из ОформленияСтрок Цикл

МассивНоменклатуры.Добавить(ОформлениеСтроки.ДанныеСтроки.Номенклатура);
МассивЕдиницИзмерения.Добавить(ОформлениеСтроки.ДанныеСтроки.ЕдиницаИзмерения);


КонецЦикла;
// все данные будем доставать тремя запросами, выполняемыми за один вызов БД.
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЕдиницыИзмерения.Ссылка,
| ЕдиницыИзмерения.Объем
|ИЗ
| Справочник.ЕдиницыИзмерения КАК ЕдиницыИзмерения
|ГДЕ
| ЕдиницыИзмерения.Ссылка В(&ЕдиницыИзмерения)
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| НоменклатураКонтрагентов.Номенклатура,
| НоменклатураКонтрагентов.АртикулНоменклатурыКонтрагента
|ИЗ
| РегистрСведений.НоменклатураКонтрагентов КАК НоменклатураКонтрагентов
|ГДЕ
| НоменклатураКонтрагентов.Контрагент = &Контрагент
| И НоменклатураКонтрагентов.Номенклатура В(&Номенклатура)
|;
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| НоменклатураКонтрагентов.Номенклатура,
        |   НоменклатураКонтрагентов.НаименованиеНоменклатурыКонтрагента
|ИЗ
| РегистрСведений.НоменклатураКонтрагентов КАК НоменклатураКонтрагентов
|ГДЕ
| НоменклатураКонтрагентов.Контрагент = &Контрагент
| И НоменклатураКонтрагентов.Номенклатура В(&Номенклатура)
|;
|ВЫБРАТЬ
| ЕдиницыИзмерения.Ссылка,
| ЕдиницыИзмерения.Вес
|ИЗ
| Справочник.ЕдиницыИзмерения КАК ЕдиницыИзмерения
|ГДЕ
| ЕдиницыИзмерения.Ссылка В(&ЕдиницыИзмерения)";




// устанавливаем параметры запроса

// это контрагент, для которого доставать артикулы
Запрос.УстановитьПараметр("Контрагент", Контрагент);

// список номенклатуры, для которой доставать артикулы
Запрос.УстановитьПараметр("Номенклатура", МассивНоменклатуры);

// список единиц измерения, для которых доставать веса и объемы
Запрос.УстановитьПараметр("ЕдиницыИзмерения", МассивЕдиницИзмерения);

// выполняем разом запросы за одно обращение к БД
// возвращается массив результатов каждого запроса
Результаты = Запрос.ВыполнитьПакет();


СоответствиеЕдиницИзмерения = Новый Соответствие;

// обходим результат первого запроса
Выборка = Результаты[0].Выбрать();
Пока Выборка.Следующий() Цикл
// собираем в соответствие веса и объемы.
СоответствиеЕдиницИзмерения.Вставить(Выборка.Ссылка, Новый Структура("Объем", Выборка.Объем));

КонецЦикла;

// и такая же оптимизация для поиска артикула по номенклатуре
СоответствиеАртикулов = Новый Соответствие;

// обходим результат второго запроса
Выборка = Результаты[1].Выбрать();
Пока Выборка.Следующий() Цикл
// сгребаем в кучу артикулы.
СоответствиеАртикулов.Вставить(Выборка.Номенклатура, Выборка.АртикулНоменклатурыКонтрагента);
КонецЦикла;

//для номенклатур
СоответствиеНоменклатурКонтрагента = Новый Соответствие;
// обходим результат третьего запроса
Выборка = Результаты[2].Выбрать();
Пока Выборка.Следующий() Цикл
// сгребаем в кучу номенклатуры.
СоответствиеНоменклатурКонтрагента.Вставить(Выборка.Номенклатура, Выборка.НаименованиеНоменклатурыКонтрагента);
КонецЦикла;

СоответствиеВес = Новый Соответствие;

// обходим результат четвертого запроса
Выборка = Результаты[3].Выбрать();
Пока Выборка.Следующий() Цикл
// собираем в соответствие веса.
СоответствиеВес.Вставить(Выборка.Ссылка, Новый Структура("Вес", Выборка.Вес));

КонецЦикла;


//предварительные данные готовы.
// обходим еще раз оформления строк и расставляем куда чего нужно.
Для Каждого ОформлениеСтроки Из ОформленияСтрок Цикл


ОформлениеСтроки.Ячейки.АртикулКонтрагента.ОтображатьТекст = Истина;
ОформлениеСтроки.Ячейки.Вес.ОтображатьТекст = Истина;
ОформлениеСтроки.Ячейки.Объем.ОтображатьТекст = Истина;
ОформлениеСтроки.Ячейки.НоменклатураКонтрагента.ОтображатьТекст = Истина;

// ищем артикул
Артикул = СоответствиеАртикулов.Получить(ОформлениеСтроки.ДанныеСтроки.Номенклатура);
Если Артикул <> Неопределено Тогда

// нашли - показываем его
ОформлениеСтроки.Ячейки.АртикулКонтрагента.Текст = Артикул;

Иначе

// не нашли - показываем пустую строку.
ОформлениеСтроки.Ячейки.АртикулКонтрагента.Текст = "!!!";

КонецЕсли;
//---------------конец Артикулы
//ищем НаименованиеНоменклатурыКонтрагента
НаименованиеНоменклатурыКонтрагента = СоответствиеНоменклатурКонтрагента.Получить(ОформлениеСтроки.ДанныеСтроки.Номенклатура);
Если НаименованиеНоменклатурыКонтрагента <> Неопределено Тогда

// нашли - показываем его
ОформлениеСтроки.Ячейки.НоменклатураКонтрагента.Текст = НаименованиеНоменклатурыКонтрагента;

Иначе

// не нашли - показываем пустую строку.
ОформлениеСтроки.Ячейки.НоменклатураКонтрагента.Текст = "!!!";

КонецЕсли;
      //-------------конец Наименования

// ищем объемы по единице измерения
Структура = СоответствиеЕдиницИзмерения.Получить(ОформлениеСтроки.ДанныеСтроки.ЕдиницаИзмерения);
Если Структура <> Неопределено Тогда

// нашли - считаем цифры и показываем
ОформлениеСтроки.Ячейки.Объем.Текст = Формат(Структура.Объем * ОформлениеСтроки.ДанныеСтроки.Количество, "ЧЦ=15; ЧДЦ=3");

Иначе

// не нашли - ничего не показываем
ОформлениеСтроки.Ячейки.Объем.Текст = "";

КонецЕсли;
   
//----------------------конец объемы

// ищем вес по единице измерения
Структура = СоответствиеВес.Получить(ОформлениеСтроки.ДанныеСтроки.ЕдиницаИзмерения);
Если Структура <> Неопределено Тогда

// нашли - считаем цифры и показываем
ОформлениеСтроки.Ячейки.Вес.Текст = Формат(Структура.Вес * ОформлениеСтроки.ДанныеСтроки.Количество, "ЧЦ=15; ЧДЦ=3");

Иначе

// не нашли - ничего не показываем
ОформлениеСтроки.Ячейки.Вес.Текст = "";

КонецЕсли;

КонецЦикла;
        //Итого Объем в подвале
Для Каждого ОформлениеСтроки Из ОформленияСтрок Цикл
         //Итого объемы по единице измерения
Структура = СоответствиеЕдиницИзмерения.Получить(ОформлениеСтроки.ДанныеСтроки.ЕдиницаИзмерения);
Итог = Формат(Структура.Объем * ОформлениеСтроки.ДанныеСтроки.Количество, "ЧЦ=15; ЧДЦ=3");
Для каждого Элемент из Структура Цикл
        Если ТипЗнч(Элемент) = Тип("Число") Тогда //Проверим что элемент массива является числом для математической операции сложения
          Итог = Итог + Элемент;
         КонецЕсли;
КонецЦикла;


ЭлементыФормы.ВсегоОбъем.Значение = Итог;



КонецЦикла;

КонецПроцедуры
Весь код процедуры...
Выводит в "ЭлементыФормы.ВсегоОбъем.Значение" - последнее значение объема, но никак не сумму..
Может кто что подскажет?

Последний раз редактировалось: anton.kislov; 08 Окт 2013, 06:27. Причина: Объединение сообщений

Оффлайн sdilshod

  • **
  • Сообщений: 76
  • РЕПУТАЦИЯ: 11
  • КПД: 14%
  • Регистрация: 2013-09-30
  • Сайт: 
  • Профессия: Программист 1С
Что у тебя конкретно не получается. Не получает просчитывать сумму или не получается вставлять полученную сумму в подвал таблицы?

Оффлайн anton.kislov

  • *
  • Сообщений: 33
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2013-05-23
  • Сайт: 
  • Профессия: Разработчик 1С
Что у тебя конкретно не получается. Не получает просчитывать сумму или не получается вставлять полученную сумму в подвал таблицы?
Не получается рассчитать сумму..
В подвал попадает последнее значение столбца объем..
 //Итого Объем в подвале
   Для Каждого ОформлениеСтроки Из ОформленияСтрок Цикл
         //Итого объемы по единице измерения
      Структура = СоответствиеЕдиницИзмерения.Получить(ОформлениеСтроки.ДанныеСтроки.ЕдиницаИзмерения);
      Итог = Формат(Структура.Объем * ОформлениеСтроки.ДанныеСтроки.Количество, "ЧЦ=15; ЧДЦ=3");
      Для каждого Элемент из Структура Цикл
        Если ТипЗнч(Элемент) = Тип("Число") Тогда //Проверим что элемент массива является числом для математической операции сложения
             Итог = Итог + Элемент;
         КонецЕсли;
      КонецЦикла;
вот этим кодом пытаюсь вычислить сумму, но видимо плохо пытаюсь

Оффлайн mixqn

  • Администратор
  • *****
  • Сообщений: 1346
  • РЕПУТАЦИЯ: 166
  • КПД: 12%
  • Who is John Galt?
  • Регистрация: 2012-08-15
  • Сайт: 3gmaster.net
  • Профессия: Программист 1С
ПриПолученииДанных отрабатывает несколько раз, кажется, 2 раза ( я уже писал на форуме, можно поискать по истории) - первый раз для первой строки, потом для всех остальных.
Не суть важно, 2, 3 или 4 раза отрабатывает событие, факт в том, что не 1 раз, и при каждом срабатывании события обрабатывается только часть строк.

Что это значит для нас? Это значит, что мы не можем получать итог в этой процедуре. Нужен более хитрый алгоритм. Должна быть переменная модуля, в которой мы накапливаем итог. Я подобные задачи решал, но примера "под рукой" нет. Попробуйте подумать в этом направлении: проанализируйте, сколько в точности раз отрабатывает ПриПолученииДанных, для каких строк и на основе этого продумайте алгоритм.
Если время позволит, позже постараюсь пример подготовить и выложить.
Добавлено: 08 Окт 2013, 10:14

нашел ту тему про ПриПолученииДанных, там есть обработка для демонстрации, в общем, почитайте


Теги:
 

Значения некоторых колонок являются суммами некоторых колонок, которые в свою очередь так же являются суммами других. Как упорядочить?

Автор acces969Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 2
Просмотров: 281
Последний ответ 26 Июн 2017, 14:32
от AsadRoman
Что быстрее: Загрузить табличную часть в запрос и там добавить колонки, или пробежаться циклом по ТЧ и добавить значения в колонки

Автор ZeedРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 985
Последний ответ 11 Июл 2016, 09:00
от vitasw
Склеить значения 2-х объектов формы (поле) в другое поле

Автор ConstantusРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 1207
Последний ответ 15 Июн 2015, 07:15
от cska-fanat-kz
Присвоить начение для реквизита из значения реквизита справочника для печатной формы

Автор ВосходящийРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 18
Просмотров: 9367
Последний ответ 21 Май 2014, 11:01
от cska-fanat-kz
Передача значения переменной из формы документа на поле ввода формы справочника

Автор Rusf1nРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 2
Просмотров: 631
Последний ответ 01 Фев 2017, 17:18
от alex0402

* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

Смотрите бесплатно более 300 видеоуроков по работе в 1С:Бухгалтерия 8 и 1C:ЗУП 8 ред. 3.0

СМОТРЕТЬ >>

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
175 Сообщений
ilyay ilyay
69 Сообщений
oleg-x
48 Сообщений
alex0402
44 Сообщений
AIFrame
39 Сообщений
andron81_81
38 Сообщений
MuI_I_Ika MuI_I_Ika
33 Сообщений
Golickoff Golickoff
31 Сообщений
BuhRust
30 Сообщений
Dima Dddd Dima Dddd
26 Сообщений

* Кто онлайн

  • Точка Гостей: 287
  • Точка Скрытых: 0
  • Точка Пользователей: 3
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal