Как рассчитать сумму в строке табличной части 1с
Перейти к содержимому

Как рассчитать сумму в строке табличной части 1с

  • автор:

Как рассчитать сумму в 1С?

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

Чтобы сделать что-то похожее, необходимо произвести несколько простых действий. В частности, открыть конфигуратор, открыть форму нужного документа.

Как рассчитать сумму в 1С?

Как рассчитать сумму в 1С?

Далее нужно создать обработчик события «ПриИзменении» для колонок «Цена» и «Количество». Это можно сделать двумя способами.

  1. Правой кнопкой мыши вызвать меню колонки и выбрать обработчик во вкладке «События»:

Как рассчитать сумму в 1С?

  1. Создать обработчик в свойствах (нажать на лупу возле обработчика «ПриИзменении»)

Как рассчитать сумму в 1С?

После этого нужно выбрать подходящую директиву выполнения обработки. В данном случае «На клиенте»:

Как рассчитать сумму в 1С?

Откроется модуль формы с созданным обработчиком:

Как рассчитать сумму в 1С?

Далее требуется вписать следующий программный код:

То же самое нужно сделать и для колонки «Цена».

В переменную «СтрокаТабличнойЧасти» помещается текущая выделенная строка в табличной части (в которой меняется количество или цена товара). Для подсчета суммы необходимо обратиться к нужным реквизитам объекта («Количество» и «Цена») и перемножить их значения. Результат поместить в реквизит «Сумма».

Если данный процесс автоматического расчета нужен сразу для нескольких документов, можно внести вышеуказанный код в общий модуль. Например, процедуру «РассчитатьСумму» поместить в модуль «РаботаСДокументами». Если в модуле будут только функции, выполняемые на клиенте (обработки событий, связанные только с элементами формы), то в свойствах общего модуля нужно отметить «Клиент», чтобы к модулю можно было обратиться из функций с директивой «&НаКлиенте».

Как рассчитать сумму в 1С?

После имени процедуры «РассчитатьСумму» необходимо добавить «Экспорт», чтобы процедуру можно было вызвать из формы документа.

Данный код выглядит так:

Процедура РассчитатьСумму(СтрокаТабличнойЧасти) Экспорт

Затем в модуле формы нужного документа следует создать обработчик события под названием «ПриИзменении» для колонок «Количество» и «Цена», и вызвать процедуру «РассчитатьСумму» из общего модуля.

Как посчитать сумму в «1С»?

В короткой статье мы расскажем, как в «1С» посчитать сумму чисел быстрее, чем на калькуляторе. Эти знания пригодятся вам при взаимодействии с интерфейсом «1С» и позволят экономить время.

В короткой статье мы расскажем, как в «1С» посчитать сумму чисел быстрее, чем на калькуляторе. Эти знания пригодятся вам при взаимодействии с интерфейсом «1С» и позволят экономить время.

Этот лайфхак «1С» поможет посчитать сумму чисел быстрее, чем на калькуляторе. В нашем примере мы зашли в оборотно-сальдовую ведомость раздела «Отчеты – Оборотно-сальдовая ведомость». Выделим ячейки, которые хотим суммировать. Программа сложила нужные значения, итоговая сумма отображается в правом верхнем углу в окне ∑ (рис.1).

Рис.1. Сложение чисел без калькулятора в «1С»

Этот прием вы можете использовать в любых отчетах и документах с любыми числовыми колонками и табличными частями (сумма, количество и т.д.).

Помимо этого, вы можете выделить не все документы, а только нужные при помощи следующего способа:

  • зажмите на клавиатуре клавишу Ctrl;
  • левой кнопкой мыши выделите (или отмените выделение) нужных строк. Отметим, что выделять строки в этом случае следует только в пределах одной колонки, которую вам требуется суммировать.

Подведем итоги

В короткой статье мы рассказали о хитрости в «1С», о которой мало кто знает и использует в работе. Эти знания пригодятся вам при взаимодействии с интерфейсом «1С» и позволят экономить время.

Расчет суммы в строке табличной части

  • Недостаточно рейтинга для добавления отрицательного голоса. Шаблон будет скрыт из ваших результатов поиска.

    Шаблоны кода 1С

    Секреты TurboConf

    TurboConf ИР

    Нейросети и AI

    Лайфхаки 1С

    Бубен админа

    1С не всерьез

    Комментарии

    См. также

    sale

    fastcode_tg

    courses_fastcode

    courses_fastcode

    Подтверждение действия

    Вы действительно хотите удалить комментарий?

    Отмена Удалить

    • © 2013-2023 FastCode
    • Контакты
    • Пользовательское соглашение

    × Канал FastCode 1C в Телеграм! Шаблоны кода, статьи, полезные советы, курсы по 1С (6К участников)
    Присоединиться

    Работа с табличной частью объектов в 1С

    Табличные части позволяют хранить неограниченное количество структурированной информации, принадлежащей одному объекту.

    Рассмотрим некоторые приемы работы с табличными частями.

    Как обойти табличную часть

    Для обхода табличной части можно использовать цикл Для каждого

    Для каждого Строка из ТабличнаяЧасть Цикл

    Сообщить ( Строка . РеквизитТабличнойЧасти ) ;

    На каждой итерации в переменную Строка передается очередная строка табличной части. Значения реквизитов строки можно получить выражением Строка.ИмяРеквизита.

    Как получить и обойти выделенные строки табличной части

    Для вывода информации из табличной части объекта служит элемент формы Табличное поле. Для включения возможности выделения нескольких строк на табличном поле нужно установить значение Множественный у его свойства Режим выделения.

    Работа с табличной частью объектов в 1С

    Для получения перечня выделенных строк используется следующий код:

    ВыделенныеСтроки = ЭлементыФормы . ИмяТабличногоПоля . ВыделенныеСтроки ;

    Для того чтобы обойти выделенные строки используется цикл Для каждого:

    ВыделенныеСтроки = ЭлементыФормы . ИмяТабличногоПоля . ВыделенныеСтроки ;

    Для каждого Строка из ВыделенныеСтроки Цикл

    Как программно выделить строки табличной части (табличного поля) и снять выделение

    Чтобы программно снять выделение строк табличного поля:

    ЭлементыФормы . ИмяТабличногоПоля . ВыделенныйСтроки . Очистить ( ) ;

    Чтобы программно выделить все строки табличного поля:

    Для каждого ТекущаяСтрока Из ТабличнаяЧасть Цикл
    ЭлементыФормы . ИмяТабличногоПоля . ВыделенныеСтроки . Добавить ( ТекущаяСтрока ) ;
    КонецЦикла ;

    Как очистить табличную часть

    ТабличнаяЧасть . Очистить ( ) ;

    Как получить текущую строку табличной части

    Текущая строка — это срока, в которой у пользователя в данный момент находится курсор. Чтобы ее получить, нужно обратиться к элементу управления на форме, который связан с табличной частью.

    Для обычных форм код будет выглядеть так:

    ЭлементыФормы . ИмяТабличногоПоля . ТекущиеДанные ;

    Для управляемых форм:

    Элементы . ИмяТабличногоПоля . ТекущиеДанные ;

    Как добавить новую строку в табличную часть

    Добавление новой строки в конец табличной части:

    НоваяСтрока = ТабличнаяЧасть . Добавить ( ) ;
    НоваяСтрока . Реквизит 1 = «Значение» ;

    Добавление новой строки в любое место табличной части (последующие строки будут сдвинуты):

    НоваяСтрока = ТабличнаяЧасть . Вставить ( Индекс )
    //Индекс — номер добавляемой строки. Нумерация строк начинается с нуля.

    НоваяСтрока . Реквизит 1 = «Значение» ;

    Как программно заполнить реквизиты строки табличной части

    Если нужно программно заполнить реквизиты строки табличной части, которую добавляет пользователь, необходимо использовать обработчик события табличной части ПриНачалеРедактирования.

    Создаваемая обработчиком процедура имеет три параметра:

    • Элемент — содержит элемент управления ТабличноеПоле.
    • НоваяСтрока — булево. Содержит значение Истина, если добавляется новая строка табличной части, и Ложь, если пользователь начал редактировать уже существующую строку.
    • Копирование — булево. Содержит значение Истина, если пользователь копирует строку, и Ложь в остальных случаях.

    Рассмотрим пример. Допустим, нам нужно заполнить реквизит табличной части СчетУчета, в случае, когда добавляется новая строка. При редактировании существующей строки изменять счет учета не нужно.

    Процедура ТабличнаяЧастьПриНачалеРедактирования ( Элемент , НоваяСтрока , Копирование )

    //Если пользователь редактирует существующую строку, то ничего не делаем
    Если НЕ НоваяСтрока Тогда
    Возврат ;
    КонецЕсли ;

    //Если же строка новая, устанавливаем счет учета
    ТекСтрока = Элемент . ТекущиеДанные ; //Получили текущую строку табличной части
    ТекСтрока . СчетУчета = ПланыСчетов . Хозрасчетый . НужныйСчетУчета ;
    КонецПроцедуры

    Работа с табличной частью объектов в 1С : 14 комментариев

    1. Юрий 13.06.2019 Приветствую!
      Только начал изучать 1С.
      Кое что уже знаю, но мало и опыта практически ноль.
      Создал свою конфигурацию, пока только для тестов.
      В данной конфигурации есть документ, назовем его «Заявка».
      В данной заявке, есть табличная часть, в которой есть реквизит «Стоимость».
      Получается, что таких документов много и мне нужно сложить все реквизиты «Стоимость» из всех документов «Заявка».
      Вопрос.
      Как мне это сделать?
      Предполагаю, что нужно использовать функцию с экспортом, в которой будет цикл «Для Каждого ……»
      Но как это оформить, пока не могу понять…
    1. Нестандартные решения в 1С Автор записи 14.06.2019 Добрый день. Сделать это можно по-разному. Цикл Для каждого, на мой взгляд, не очень подходящий вариант, т.к. будет работать слишком долго. Да и надо еще где-то список документов брать. Я бы порекомендовал сделать запрос к табличной части документа (именно к табличной части, а не к документу). Выбрать там ваш столбец Стоимость и другие столбцы, если нужно. И применить функцию СУММА к этому столбцу. Подробнее и с примерами смотрите в статье Группировки в запросах 1С http://chel1c.ru/querry_group/
    1. Юрий 14.06.2019 Спасибо!
      Буду пробовать.
    1. Нестандартные решения в 1С Автор записи 10.09.2019 Это подошло бы, если бы нужно было суммировать колонку в одном документе. А Юрию нужно суммировать колонку Стоимость всех документов.
    1. Нестандартные решения в 1С Автор записи 10.09.2019 Не совсем понял, о чем конкретно вопрос.
      Если о том, как получать и работать с текущей строкой табличной части, то в модуле менеджера ничего писать не нужно.
    1. Нестандартные решения в 1С Автор записи 18.01.2020 Добрый день. Информацию о выделенных строках вы можете получить только в модуле формы документа, причем, если мне не изменяет память, это должна быть клиентская процедура. По ссылке на документ выделенные строки получить нельзя.
    1. Нестандартные решения в 1С Автор записи 11.02.2020 Да, логика такая. Только учтите, что таблица значений не передается с клиента на сервер.
      Выделенный строки табличного поля на форме — это массив строк. Надо попробовать, передастся ли он. Если да, хорошо. Если нет — надо думать, как его передать.
    1. Александр 27.07.2022 Можно представить каждую строку как структуру и потом структуры поместить в массив. Получится массив структур и так передать. НУ если уж совсем извратиться то можно например сериализовать все с JSON …)))
    1. Автоматизация малого бизнеса Автор записи 15.12.2020 Добрый день.
      Попробуйте вот так: https://forum.infostart.ru/forum9/topic84727/

    Добавить комментарий Отменить ответ

    Теперь мы в соцсетях! Подписывайтесь, чтобы получать информацию о последних обновлениях или задать вопрос.

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *