Package com.ipc.oce.objects

Source Code of com.ipc.oce.objects.OCTabularSectionManager

package com.ipc.oce.objects;

import org.jinterop.dcom.common.JIException;
import org.jinterop.dcom.core.JIVariant;
import org.jinterop.dcom.impls.automation.IJIDispatch;

import com.ipc.oce.OCObject;
import com.ipc.oce.OCValueTable;


/**
* Используется для доступа к методам табличной части прикладного объекта в целом.
* Максимальное число строк в табличной части 99999.
* Имя табличной части объекта формируется следующим образом:
* <Префикс полного имени объекта>ТабличнаяЧасть.<Имя прикладного объекта>.<Имя табличной части>.
* Например: СправочникТабличнаяЧасть.Номенклатура.Состав, где "Номенклатура" - имя справочника, как оно задано в конфигураторе, "Состав" - имя табличной части справочника "Номенклатура".
* @author Konovalov
*
*/

public class OCTabularSectionManager extends OCObject {
 
  public static final int READ_WRITE = 89;
 
  public static final int READ_ONLY = 90;
 
  private int accessMode = READ_WRITE;
 
  private String tabSectionName = null;
 
  public OCTabularSectionManager(OCObject object) {
    super(object);
  }

  public OCTabularSectionManager(IJIDispatch aDispatch) {
    super(aDispatch);
  }
 
  public OCTabularSectionManager(JIVariant aDispatch) throws JIException {
    super(aDispatch);
  }

  public OCTabularSectionManager(JIVariant aDispatch, String tabSectionName) throws JIException {
    super(aDispatch);
    this.tabSectionName = tabSectionName;
  }
 
  /**
   * Добавляет строку в конец табличной части.
   * @return OCTabularSectionRow
   * @throws JIException
   */
  public OCTabularSectionRow add() throws JIException{
    return new OCTabularSectionRow(callMethodA("Add"));
  }
 
  /**
   * Вставляет в табличную часть строку с указанным индексом.
   * Использование метода допустимо только в том случае, если табличная часть получена из свойства объекта. Если табличная часть получена из свойства ссылки (или выборки), то использование этого метода будет вызывать ошибку выполнения.
   * @param rowIndex
   * @return OCTabularSectionRow
   * @throws JIException
   */
  public OCTabularSectionRow insert(Integer rowIndex) throws JIException{
    return new OCTabularSectionRow(callMethodA("Insert",
        new Object[] { JIVariant.makeVariant(rowIndex) })[0]);
  }
 
  /**
   * Выгружает табличную часть в таблицу значений.
   * @return OCValueTable
   * @throws JIException
   */
  public OCValueTable upload() throws JIException{
    return new OCValueTable(callMethodA("Unload"));
  }
 
  /**
   * Выгружает табличную часть в таблицу значений. Если указаны строки и колонки, то только они будут скопированы. Если не указаны - то табличная часть будет выгружена полностью.
   * @param columns  Список колонок для копирования в формате: "Колонка1, Колонка2...". Если список не задан, то будут скопированы все колонки.
   * @return OCValueTable
   * @throws JIException
   */
  public OCValueTable upload(String columns) throws JIException{
    return new OCValueTable(callMethodA("Unload", new Object[]{null, new JIVariant(columns)})[0]);
  }
 
  /**
   * Загружает табличную часть из таблицы значений. При этом все прежние строки табличной части удаляются. При загрузке значения в колонках табличной части заполняются значениями из колонок таблицы значений с совпадающими именами.
   * Использование метода допустимо только в том случае, если табличная часть получена из свойства объекта. Если табличная часть получена из свойства ссылки (или выборки), то использование этого метода будет вызывать ошибку выполнения.
   * @param table Таблица значений, откуда загружается табличная часть. Колонки таблиц совмещаются по именам.
   * @throws JIException
   */
  public void load(OCValueTable table) throws JIException{
    callMethod("Load", new Object[]{new JIVariant(ocObject2Dispatch(table))});
  }
 
  /**
   * Индекс указанной строки табличной части. Если не найдено, то возвращается -1.
   * @param row строка табличной части.
   * @return Integer индекс row
   * @throws JIException
   */
  public Integer indexOf(OCTabularSectionRow row) throws JIException{
    return callMethodA("IndexOf", new Object[]{row.dispatch()})[0].getObjectAsInt();
  }
 
  /**
   * Суммирует значения всех строк в указанной колонке. Если в колонке
   * установлен тип и он единственный, то при суммировании будет
   * предприниматься попытка преобразования значения к типу Число. Если
   * колонке не присвоены типы, то в процессе суммирования будут принимать
   * участие только значения, имеющие тип Число, значения других типов будут
   * игнорироваться. Если в колонке несколько типов и среди них есть тип
   * Число, то в процессе суммирования будут принимать участие только
   * значения, имеющие тип Число, значения других типов будут игнорироваться.
   * Если в колонке несколько типов и среди них нет типа Число, то результатом
   * будет значение Неопределено.
   *
   * @param columnName
   *            Имя колонки, по которой подсчитывается итог.
   * @return Integer
   * @throws JIException
   */
  public Integer total(String columnName) throws JIException{
    return callMethodA("Total", new Object[]{JIVariant.makeVariant(columnName)})[0].getObjectAsInt();
  }
 
  /**
   * Суммирует значения всех строк в указанной колонке.
   * Если в колонке установлен тип и он единственный, то при суммировании будет предприниматься попытка преобразования значения к типу Число.
   * Если колонке не присвоены типы, то в процессе суммирования будут принимать участие только значения, имеющие тип Число, значения других типов будут игнорироваться.
   * Если в колонке несколько типов и среди них есть тип Число, то в процессе суммирования будут принимать участие только значения, имеющие тип Число, значения других типов будут игнорироваться.
   * Если в колонке несколько типов и среди них нет типа Число, то результатом будет значение Неопределено.
   * @param columnIndex Индекс по которому подсчитывается итог.
   * @return Integer
   * @throws JIException
   */
  public Integer total(Integer columnIndex) throws JIException{
    return callMethodA("Total", new Object[]{new JIVariant(columnIndex)})[0].getObjectAsInt();
  }
 
  /**
   * Удаляет все строки табличной части.
   * Примечание:
   * Использование метода допустимо только в том случае, если табличная часть получена из свойства объекта. Если табличная часть получена из свойства ссылки (или выборки), то использование этого метода будет вызывать ошибку выполнения.
   * @throws JIException
   */
  public void clear() throws JIException{
    callMethod("Clear");
  }
 
  /**
   * Получает значение по индексу. Применяется в случаях, когда использование оператора [] невозможно.  (PS В java этих случаев чуть больше чем всегда)
   * @param index
   * @return
   * @throws JIException
   */
  public OCTabularSectionRow get(Integer index) throws JIException{
    return new OCTabularSectionRow(callMethodA("Get",
        new Object[] { JIVariant.makeVariant(index) })[0]);
  }
 
  /**
   * Сдвигает указанную строку табличной части на указанное смещение.
   * Примечание:
   * Использование метода допустимо только в том случае, если табличная часть получена из свойства объекта. Если табличная часть получена из свойства ссылки (или выборки), то использование этого метода будет вызывать ошибку выполнения.
   * @param rowIndex  Число, Строка табличной части. Индекс строки, которую нужно сдвинуть
   * @param offset Количество строк, на которое необходимо переместить строку. Положительное значение означает, что строка будет передвинута ближе к концу табличной части (вниз), отрицательное - ближе к началу (вверх).
   * @throws JIException
   */
  public void move(Integer rowIndex, Integer offset) throws JIException{
    callMethod("Move", new Object[]{JIVariant.makeVariant(rowIndex), JIVariant.makeVariant(offset)});
  }
 
  /**
   * Сдвигает указанную строку табличной части на указанное смещение.
   * Примечание:
   * Использование метода допустимо только в том случае, если табличная часть получена из свойства объекта. Если табличная часть получена из свойства ссылки (или выборки), то использование этого метода будет вызывать ошибку выполнения.
   * @param row  Строка табличной части (OCTabularSectionRow). Сама сдвигаемая строка.
   * @param offset Количество строк, на которое необходимо переместить строку. Положительное значение означает, что строка будет передвинута ближе к концу табличной части (вниз), отрицательное - ближе к началу (вверх).
   * @throws JIException
   */
  public void move(OCTabularSectionRow row, Integer offset) throws JIException{
    callMethod("Move", new Object[]{new JIVariant(row.dispatch()), JIVariant.makeVariant(offset)});
  }
 
  /**
   * Осуществляет свертку табличной части по указанным колонкам группировки. Строки, у которых совпадают значения в колонках, указанных в первом параметре, сворачиваются в одну строку. Значения этих строк, хранящиеся в колонках, указанных во втором параметре, накапливаются.
   * Важно! Оба списка колонок должны покрывать всю табличную часть. Списки колонок не должны пересекаться.
   * Примечание:
   * Если в колонке установлен тип и он единственный, то при суммировании будет предприниматься попытка преобразования значения к типу Число.
   * Если колонке не присвоены типы, то в процессе суммирования будут принимать участие только значения, имеющие тип Число, значения других типов будут игнорироваться.
   * Если в колонке несколько типов и среди них есть тип Число то в процессе суммирования будут принимать участие только значения, имеющие тип Число, значения других типов будут игнорироваться.
   * Если в колонке несколько типов и среди них нет типа Число, то результат суммирования будет 0, который будет присвоен в соответствующую колонку, где будет преобразован к значению по умолчанию для типа, установленного в колонке.
   * Использование метода допустимо только в том случае, если табличная часть получена из свойства объекта. Если табличная часть получена из свойства ссылки (или выборки), то использование этого метода будет вызывать ошибку выполнения. 
   * @param columnNamesGroup  Имена колонок, разделенные запятыми, по которым необходимо группировать строки табличного поля.
   * @param columnNamesSum Имена колонок, разделенные запятыми, по которым необходимо суммировать значения в строках табличного поля.
   * @throws JIException
   */
  public void groupBy(String columnNamesGroup, String columnNamesSum) throws JIException{
    callMethod("GroupBy",
        new Object[] {
            new JIVariant(columnNamesGroup),
            (columnNamesSum != null ? new JIVariant(columnNamesSum)
                : null) });
  }
 
  /**
   * Сортирует табличную часть в соответствии с указанными правилами сортировки.
   * Примечание:
   * Использование метода допустимо только в том случае, если табличная часть получена из свойства объекта. Если табличная часть получена из свойства ссылки (или выборки), то использование этого метода будет вызывать ошибку выполнения.
   * Пример:
   * ТаблицаЦен.Сортировать("Цена Убыв, Товар Возр");
   * @param columnName
   * @throws JIException
   */
  public void sort(String columnName) throws JIException{
    callMethod("Sort", new Object[]{JIVariant.makeVariant(columnName)});
  }
 
  /**
   * Удаляет строку с указанным индексом из табличной части.
   * @param rowIndex Индекс удаляемой строки в табличной части
   * @throws JIException
   */
  public void delete(Integer rowIndex) throws JIException{
    callMethod("Delete", new Object[]{JIVariant.makeVariant(rowIndex)});
  }
 
  /**
   * Удаляет строку с указанным индексом из табличной части.
   * @param row удаляемая строка
   * @throws JIException
   */
  public void delete(OCTabularSectionRow row) throws JIException{
    callMethod("Delete", new Object[]{new JIVariant(row.dispatch())});
  }
 
  /**
   * Получает количество строк табличной части
   * @return
   * @throws JIException
   */
  public Integer size() throws JIException{
    return callMethodA("Count").getObjectAsInt();
  }
}
TOP

Related Classes of com.ipc.oce.objects.OCTabularSectionManager

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.