Как отобразить сумму по колонке таблицы 1с
Все работает хорошо, но при добавлении копированием выбранной строки (F9) в первый случай копирования значение Объект.СуммаПоДокументу не обновляется. В дальнейшем расчет идет без данных этой строки. Последующее использование F9 (несколько раз) для любой строки вызывает пересчет за исключением бедной строки. При добавлении строки стандартным способом (ins) и вводе значений - расчет получается правильный. Если добавить копированием (F9) – опять появляется неучтенная в итогах сумма для новой строки.
Рассмотрел значения полей по шагам. В процедуру
Код 1C v 8.2 УП
Передается элемент с типом ТаблицаФормы с новой строкой с нулевыми значениями, установлено значение только в поле НомерСтроки:
Элемент.ТекущиеДанные.НомерСтроки
Вопрос знатокам: это глюк системы или можно обойтись другими программными средствами? Например отслеживать F9 и вызывать функцию РсчетСуммыПоДокументу()
Выбор (S_election)
ВыборЗначения (ValueChoice)
НачалоПеретаскивания (DragStart)
ОбработкаВыбора (ChoiceProcessing)
ОбработкаЗаписиНового (NewWriteProcessing)
ОкончаниеПеретаскивания (DragEnd)
ПередНачаломДобавления (BeforeAddRow)
ПередНачаломИзменения (BeforeRowChange)
ПередОкончаниемРедактирования (BeforeEditEnd)
ПередРазворачиванием (BeforeExpand)
ПередСворачиванием (BeforeCollapse)
ПередУдалением (BeforeDeleteRow)
Перетаскивание (Drag)
ПослеУдаления (AfterDeleteRow)
ПриАктивизацииПоля (OnActivateField)
ПриАктивизацииСтроки (OnActivateRow)
ПриАктивизацииЯчейки (OnActivateCell)
ПриИзменении (OnChange)
ПриНачалеРедактирования (OnStartEdit)
ПриОкончанииРедактирования (OnEditEnd)
ПриСменеТекущегоРодителя (OnCurrentParentChange)
ПроверкаПеретаскивания (DragCheck)
Разбирал глюки системы:
В табличном поле установим флаг «Подвал».
В 1С 8.0 в табличном поле для колонки можно было установить флаг «Показывать итог в подвале». В 1С 8.2 такого нет. Приходится указывать для реквизита «СписокНоменклатурыСумма» путь к данным подвала «Объект.СписокНоменклатуры.ИтогСумма». Для наглядности в окне редактирования формы в правом верхнем углу (в окне реквизитов формы) раскроем основной реквизит формы «Объект», потом раскроем «СписокНоменклатуры». Мышкой «схватим» элемент «ИтогСумма» и перетащим в окно элементов формы (левая верхняя часть окна редактирования формы). Получим поле надписи «СписокНоменклатурыИтогСумма», а на форме надпись «Сумма (итог):». При этом, остается пустым свойство «Заголовок» поля надписи «СписокНоменклатурыИтогСумма».
Для устойчивости добавим процедуру:
В результате на форме отображаются два поля надписи:
«Сумма по документу»,
«Сумма (итог):».
При изменении данных в таблице происходит пересчет суммы, отображаются одинаковые данные. Но если добавить новый элемент копированием текущего (кнопкой или F9), то в подвале таблицы и в поле «Сумма (итог):» отображаются правильные данные, а в поле «Сумма по документу» - нет.
Не получается получить значение (текст) из Элементы.СписокНоменклатурыИтогСумма.
Для дальнейших расчетов в документе «ПриходнаяНакладная» реквизит «СуммаПоДокументу» будет показывать правильное значение.
Продолжаем изучать программирование в системе 1С Предприятие. Сегодня поговорим о том, как подсчитать итоги по колонке в табличной части. Нам нужно чтобы итог подсчитывался автоматически.
В предыдущих статья я рассказывал, как создать новый документ потом мы с вами написали пару процедур для автоматического подсчета суммы в табличной части. Теперь сделаем итог для этой колонки. Сегодня в примере я буду использовать тот же документ, который мы создали ранее. Поэтому советую вам ознакомиться с предыдущими статья, Создание документа, Подсчет итогов в строке табличной части.
Авто подсчёт итогов по колонке в табличной части 1С
И так преступим, запускаем 1С в режиме конфигуратора. Далее переходим в созданный ранее документ. Открываем его и переходим на вкладку формы и открываем её.
В окне формы нужно кликнуть два раза на табличную часть справа должно появиться окно свойств таблицы. В нем ищем пункт Подвал и ставим галочку.
После чего на форме в табличной части снизу должен появиться подвал.
Теперь на нужно чтобы в колонке Сумма подсчитывался итого. Для этого на вкладке Элементы ищем пункт с Название МатериалыСумма и кликаем на нем два раза. Справа появиться свойства поля в них ищем пункт
ТекстПодвала и вписываем Итого. А в пункте ПутьКДаннымПОдвала кликаем на три точечки.
В открывшемся окне нужно выбрать ИтогоСумма.
Теперь запускаем отладку и проверяем считается ли итог по колонке в табличной части документа.
Вот мы и сделали автоматический подсчет итогов по колонке. Таким образом можно подсчитать итого во всех колонках и в любых документах.
Скриншоты, опубликованные в данной статье, являются цитатами и иллюстрациями программного продукта «1C:Предприятие», авторское право на который принадлежит ЗАО 1С.
ТаблицаЗначений — это программный объект встроенного языка, позволяющий строить произвольные наборы данных в памяти компьютера, отображать их в табличном виде, а также программно и интерактивно манипулировать ими (добавлять, редактировать, удалять и сортировать).
Таблицы состоят из строк и колонок. Строки располагаются вниз по вертикали, а колонки — вправо по горизонтали. Строки и колонки имеют индексы, по которым к ним можно обращаться напрямую (начинаются с 0). Кроме этого, к колонкам можно обращаться по идентификатору.
Пересечения строк и колонок образуют ячейки, в которых содержатся значения. Тип значения определяется типом значения колонки.
Таблица значений является полностью динамическим объектом, т.е. Вы можете манипулировать не только строками таблицы, добавляя и удаляя их, но и колонками.
Таблица значений может использоваться явно при создании в коде необходимого количества переменных типа ТаблицаЗначений , либо неявно: при добавлении элемента управления ТабличноеПоле на обычную форму, и ТаблицаФормы — на управляемую. Здесь мы рассмотрим только программную работу с таблицей значений.
Создание таблицы значений
Как и большинство объектов встроенного языка, новая таблица значений может быть создана с помощью оператора Новый :
Колонки таблицы значений
Прежде чем начать работу с таблицей значений, необходимо создать структуру колонок. Каждая колонка характеризуется следующими свойствами:
- Имя — идентификатор колонки (может содержать только алфавитные символы, цифры и знаки подчеркивания. Причем, начинаться имя колонки может только с буквы или символа подчеркивания);
- Заголовок — представление колонки в диалогах (может содержать произвольные символы);
- ТипЗначения — тип значения содержимого ячеек в этой колонке. Если тип не задан, в ячейке можно хранить значения произвольного типа;
- Ширина — ширина колонки в диалогах;
Доступ к колонкам производится через свойство Колонки объекта ТаблицаЗначений . Для добавления новой колонки используется метод Добавить():
Для того, чтобы определить наличие колонки с нужным именем используется метод Найти():
Перебор колонок выполняется следующим образом:
Для удаления колонки используется метод Удалить():
Свойства колонки таблицы значений
Имя | Тип | Описание |
---|---|---|
Имя | Строка | символьный идентификатор колонки, по которому к ней можно обращаться из кода |
Заголовок | Строка | строковое представление колонки на форме |
ТипЗначения | ОписаниеТипов | свойство органичивает пространство доступных значений, которые можно указать в данной колонке |
Ширина | Число | ширина колонки на форме (выражается в количестве символов) |
Методы коллекции колонок таблицы значений
Вставить() | Вставляет новую колонку в указанную позицию коллекции |
Добавить() | Добавляет новую колонку в конец коллекции |
Количество() | Возвращает количество колонок в коллекции |
Найти() | Ищет колонку в коллекции по имени |
Очистить() | Удаляет все колонки из коллекции |
Сдвинуть() | Сдвигает колонку влево или вправо |
Удалить() | Удаляет колонку из коллекции |
Строки таблицы значений
С колонками разобрались. Давайте теперь разберемся со строками. Строки таблицы значений можно программно добавлять и удалять, перемещать и сортировать, а также выполнять операции поиска и отбора.
Добавление и удаление строк
Для добавления новой строки используется метод Добавить() объекта ТаблицаЗначений . Метод возвращает объект СтрокаТаблицыЗначений , с которым доступны дальнейшие манипуляции:
И только теперь мы можем заполнить строку данными. Для этого обращаемся к ячейкам строки, указывая идентификаторы колонок через точку:
Обратите внимание, что каждая СтрокаТаблицыЗначений ссылается на таблицу значений с помощью метода Владелец():
Для удаления строки используется метод Удалить() объекта ТаблицаЗначений . Строку можно удалить либо передав методу непосредственно строку, либо ее индекс:
Перебор строк таблицы значений
Для перебора строк удобнее всего использовать оператор цикла Для Каждого . В редких случаях оправдано применение цикла Для :
Поиск строк
Все методы таблицы значений:
Вставить() | Вставляет строку на указанное место |
ВыбратьСтроку() | Позволяет интерактивно выбрать строку в диалоговом окне |
ВыгрузитьКолонку() | Выгружает значения ячеек указанной колонки в массив значений |
Добавить() | Добавлет новую строку в таблицу значений |
ЗагрузитьКолонку() | Загружает значения в ячейки указанной колонки из массива |
ЗаполнитьЗначения() | Заполняет ячейки указанных колонок определенным значением |
Индекс() | Возвращает индекс строки таблицы значений |
Итог() | Возвращает просуммированный итог по колонке таблицы значений |
Количество() | Возвращает количество строк в таблице значений |
Найти() | Выполняет поиск строки по значению |
НайтиСтроки() | Выполняет поиск строк по указанным параметрам |
Очистить() | Очищает строки таблицы значений |
Получить() | Возвращает строку по ее индексу |
Свернуть() | Выполняет сжатие строк и колонок таблицы значений |
Сдвинуть() | Сдвигает строку вверх или вниз по таблице |
Скопировать() | Создает новую таблицу значений копированием текущей |
СкопироватьКолонки() | Создает новую пустую таблицу значений путем копирования колонок текущей таблицы |
Сортировать() | Выполняет сортировку строк таблицы значений по указанным колонкам |
Удалить() | Удаляет строку таблицы значений |
Иерархию свойств и типов значений, связанных с таблицей значений, схематически можно представить в виде дерева:
Чот я редко пишу, ну и ладно. Продолжаю сражаться, глава 7 и 8.
Для чего предназначен объект конфигурации Отчет?
Объект конфигурации отчет служит для описания алгоритмов, при помощи которых пользователь может получать необходимые ему выходные данные.
Как создать отчет с помощью конструктора схемы компоновки данных?
В конфигураторе выбираем ветсь "Отчеты", правый клик мыши - команда "Добавить". На вкладке "Основные" выберем кнопку "Открыть схему компоновки данных"
Далее жмем кнопку "Добавить набор данных". Тут в качестве набора данных можно выбрать запрос, объект, объединение.
Запрос идет через консоль запросов. На закладке "Настройки" происходит управление выводом данных отчета, тут необходимо поставить галочки в окошке "выбранные поля"
На самом деле, скажу я честно, эта "система компоновки данных" мне совсем не нравится. Гораздо проще работать с кодом, проще и понятнее, чесслово.
Как отобразить отчет в разделах прикладного решения?
Правый клик по отчету - вкладка "Подсистемы"
Занятие 8
Для чего предназначен объект конфигурации макет?
Объект конфигурации макет предназначен для хранения различных форм представления данных, которые могут потребоваться каким-либо объектам конфигурации или всему прикладному решению в целом; Одно из предназначений подчиненного макета - создание печатной формы этого объекта;
Что такое конструктор печати?
Конструктор печати - это инструмент для создания печатных форм (хотя на самом деле удобнее не пользоваться конструктором)
Как создать макет с помощью конструктора печати?
Выбираем объект конфигурации, которому нужен макет (это может быть документ, отчет, внешняя обработка), правый клик по нему, команда "Изменить", вкладка "Макеты", кнопка "Конструктор Печати".
Так же будет возможность заполнить подвал печатной формы.
Как изменить табличный документ?
Изменение размеров ячеек происходит аналогично Excell, а другие свойства - правый клик по ячейке, свойства, справа выползет палитра свойств.
Какая разница в заполнении ячейки табличного документа текстом, параметром или шаблоном?
Текст - то, что будет показано на экране в любом случае;
Параметр - будет заменен некоторым значением, которое может быть присвоено ему (параметру) средствами встроенного языка. Например, запросом можно заполнить таблицу с колонкой номенклатура. При выводе на печать таблица будет построчно выводится, причем колонка Номенклатура будет выгружаться на место, где стоял параметр Номенклатура. Естественно, это требует дополнительной работы, но тут мне сейчас лениво описывать.
Шаблон - текстовая строка, в определенные места которой будут вставлены значения параметров.
Как с помощью встроенного языка вывести в табличный документ новую область?
С помощью следующей конструкции:
ОбластьИмяОбласти = Макет.ПолучитьОбласть("ИмяОбласти");
Перед этим надо создать на макете данную область. Выделяем колонку или строку, правый клик, команда "Свойства" и именуем нужную область.
Как изменить внешний вид и поведение формы?
Внешний вид формы меняется непосредственно при редактировании формы, а поведение формы - правый клик по открытой форме, команда свойства. В палитре свойств есть целая куча настроек поведения
Как отобразить сумму по колонке таблицы?
Вводим в форму подвал, в окошке формы выбираем колонку, прописываем путь к данным подвала
В отличие от регистра накопления устанавливает при движении документов-регистраторов новые значения ресурса, а регистр накопления лишь изменяет существующие. Так же при необходимости может хранить данные с привязкой по времени;
Ключ записи (Однозначно позволяет идентифицировать запись) является совокупностью значений измерений регистра и периода;
Правый клик в конфигурации по ветке «Регистры сведений», команда «Добавить», на вкладке «Основные» выбрать периодичность
Ведущее – запись регистра сведений имеет смысл, когда существует в базе данных объект, на который ссылается данное измерение;
Где АктуальнаяДата – параметр типа «Дата», определяет точку на оси времени, в которой нас интересует значение розничной цены.
Так же можно узнать с помощью запроса. В таком случае необходимо выбирать виртуальную таблицу регистра «СрезПоследних»;
Перечисление – описание структуры хранения постоянных наборов значений, не изменяемых в процессе работы конфигурации;
Правый клик по дереву конфигурации на ветке «Перечисления», команда «Добавить». На вкладке «данные» - установить значение перечисления
суббота, 8 июня 2013 г.
1сное же!
Чот я редко пишу, ну и ладно. Продолжаю сражаться, глава 7 и 8.
Для чего предназначен объект конфигурации Отчет?
Объект конфигурации отчет служит для описания алгоритмов, при помощи которых пользователь может получать необходимые ему выходные данные.
Как создать отчет с помощью конструктора схемы компоновки данных?
В конфигураторе выбираем ветсь "Отчеты", правый клик мыши - команда "Добавить". На вкладке "Основные" выберем кнопку "Открыть схему компоновки данных"
Далее жмем кнопку "Добавить набор данных". Тут в качестве набора данных можно выбрать запрос, объект, объединение.
Запрос идет через консоль запросов. На закладке "Настройки" происходит управление выводом данных отчета, тут необходимо поставить галочки в окошке "выбранные поля"
На самом деле, скажу я честно, эта "система компоновки данных" мне совсем не нравится. Гораздо проще работать с кодом, проще и понятнее, чесслово.
Как отобразить отчет в разделах прикладного решения?
Правый клик по отчету - вкладка "Подсистемы"
Занятие 8
Для чего предназначен объект конфигурации макет?
Объект конфигурации макет предназначен для хранения различных форм представления данных, которые могут потребоваться каким-либо объектам конфигурации или всему прикладному решению в целом; Одно из предназначений подчиненного макета - создание печатной формы этого объекта;
Что такое конструктор печати?
Конструктор печати - это инструмент для создания печатных форм (хотя на самом деле удобнее не пользоваться конструктором)
Как создать макет с помощью конструктора печати?
Выбираем объект конфигурации, которому нужен макет (это может быть документ, отчет, внешняя обработка), правый клик по нему, команда "Изменить", вкладка "Макеты", кнопка "Конструктор Печати".
Так же будет возможность заполнить подвал печатной формы.
Как изменить табличный документ?
Изменение размеров ячеек происходит аналогично Excell, а другие свойства - правый клик по ячейке, свойства, справа выползет палитра свойств.
Какая разница в заполнении ячейки табличного документа текстом, параметром или шаблоном?
Текст - то, что будет показано на экране в любом случае;
Параметр - будет заменен некоторым значением, которое может быть присвоено ему (параметру) средствами встроенного языка. Например, запросом можно заполнить таблицу с колонкой номенклатура. При выводе на печать таблица будет построчно выводится, причем колонка Номенклатура будет выгружаться на место, где стоял параметр Номенклатура. Естественно, это требует дополнительной работы, но тут мне сейчас лениво описывать.
Шаблон - текстовая строка, в определенные места которой будут вставлены значения параметров.
Как с помощью встроенного языка вывести в табличный документ новую область?
С помощью следующей конструкции:
ОбластьИмяОбласти = Макет.ПолучитьОбласть("ИмяОбласти");
Перед этим надо создать на макете данную область. Выделяем колонку или строку, правый клик, команда "Свойства" и именуем нужную область.
Как изменить внешний вид и поведение формы?
Внешний вид формы меняется непосредственно при редактировании формы, а поведение формы - правый клик по открытой форме, команда свойства. В палитре свойств есть целая куча настроек поведения
Как отобразить сумму по колонке таблицы?
Вводим в форму подвал, в окошке формы выбираем колонку, прописываем путь к данным подвала
Читайте также: