×
×
Содержание




Позиции документа (макрокоманды)

Для работы со списком позиций в документе используется коллекция Document.Positions.

Если в макросе используются макрокоманды из коллекции Positions и при этом макрос выполняется для открытого документа, то при запуске макроса автоматически добавляется выбор диапазона для операции: Вся смета, Выделенные позиции или Текущий раздел. Если макрос выполняется из вкладки Объекты, то обработаны будут все позиции документа.

// Перебор позиций в документе
for i := 0 to Document.Positions.Count - 1 do
begin
   pos := Document.Positions.GetItem(i);
end;

Тип позиции

Для документов: ЛС

// Возвращает тип позиции:
//    smrtNone    ­– позиция не ресурс (работа)
//    smrtTzr     ­– трудозатраты рабочих
//    smrtTzm     ­– трудозатраты машинистов
//    smrtMch     ­– эксплуатация машин
//    smrtMat     ­– материал
//    smrtEquip   ­– оборудование
//    smrtTransp  ­– перевозка
//    smrtLoad    ­– погрузка/разгрузка
Value := pos.ResourceType;

Основная информация о позиции

// Номер по порядку
Value := pos.NumberAsString;
// Наименование позиции
Value := pos.Caption;
// Единица измерения (измеритель)
Value := pos.Units;

Физобъём позиции

Для документов: ЛС

2025-02-19-13-49-12.png

Для работы со значением физобъёма позиции используется коллекция Document.Positions.Quantity.

q := pos.Quantity;

// Ввод значения или формулы расчёта физобъёма
q.InputFx := Value;
// Возвращает значение расчёта физобъёма
Value := q.Value;
// Коэффициент кратности физобъёма
q.K := Value;
// Формула расчёта физобъёма
Value := q.Fx;
// Развёрнутая формула расчёта физобъёма
Value := q.ExpandedFx;
// Очистка формул расчёта физобъёма
q.ClearCalcRows;

Пример использования в макросе: Удаление формул

// Копирование физобъёма в акт из сметы (в режиме Акта)
q.CopyFromSmeta;

Пример использования в макросе: Изменение физобъёмов в акте

Настройка точности расчёта физобъёма для текущей или выделенных позиций доступна на панели инструментов на вкладке Физобъем.

// Точность расчета физобъема (для позиций), 
//    где Value – величина от 7 до -3; '6' - 0.0000001, '0' - 1, '-3' - 1000
pos.SetQuantityPrecision(Value);

Пример использования в макросе: Точность физобъёма

Стоимость позиции на единицу

Для документов: ЛС

// Взять значение цены на единицу из ячейки
Value := pos.GetStringValue(ColId, EditMode);
// где
//    <ColId> – идентификатор колонки, один из:
//       sdmQtTot       – Количество (лучше обрабатывать через pos.Quantity)
//       sdmOneBase      – ВСЕГО базисная
//       sdmOneOzpBase   – ОЗП базисная
//       sdmOneEmBase    – ЭМ базисная
//       sdmOneZpmBase   – ЗПМ базисная
//       sdmOneMatBase   – МАТ базисная
//       sdmOneCurr      – ВСЕГО текущая
//       sdmOneOzpCurr   – ОЗП текущая
//       sdmOneEmCurr    – ЭМ текущая
//       sdmOneZpmCurr   – ЗПМ текущая
//       sdmOneMatCurr   – МАТ текущая
//    <EditMode> – какие значение брать:
//       True  – значение, как оно введено (формула)
//       False – значение, как оно отображается (результат)

// Запись значения <Value> в ячейку
pos.SetStringValue(ColId, Value);

// Удаление формул расчёта цены
// Работает для документов ЛС и КА
pos.RemovePriceFx;

Для значений акта используются аналогичные имена переменных, но с префиксом SdmAct. Например, sdmActOneOzpCur. В режиме Акта не могут меняться базисные стоимости позиций.

Ресурс. Обоснование цены

Для документов: ЛС

2025-02-19-14-19-08.png

// Обоснование базисной цены
pos.PriceObosnBase := Value;
// Обоснование текущей цены
pos.PriceObosnCurr := Value;

Пример использования в макросе: Обоснование цен материалов и оборудования 

Начальный уровень цен позиции

Для документов: ЛС

2025-02-19-14-21-11.png

// Возможность задать начальный уровень цен позиции.
//    где <Value> одно из: 
//       0 – текущие цены, 
//       1 – цены 2001 г., 
//       3 – цены 1984 г.
pos.PriceLevel := Value;

Примечания

Для документов: ЛС ПИР

2025-02-19-14-26-59.png

Ввод или изменение примечания для текущей позиции доступно в окне Дополнительная информация о позиции, поле Примечания.

// Добавление примечания к позиции
pos.SetComments(Value);
// Изменение примечания к позиции
pos.Comment := Value;

Пример использования в макросе: Примечания к позициям

Комментарии

Для документов: ВОР ТК ЛС ПИР СК КА

2025-02-19-14-42-04.png

Ввод или изменение комментариев для текущей позиции доступно в окне Дополнительная информация о позиции, раздел Комментарии, поля Ссылка на чертежи, спецификации и т. п. и Заметки, пояснения, примечания и т. п.

// Ссылка на чертежи, спецификации и т. п.
pos.UserComment1 := Value;
// Заметки, пояснения, примечания и т. п.
pos.UserComment2 := Value;

Пример использования в макросе: Комментарий к позиции

Отсутствует в СНБ

Для документов: ЛС

2025-02-19-14-47-40.png

Окно Дополнительная информация о позиции – КАЦ – Позиция отсутствует в СНБ.

// Позиция отсутствует в СНБ
pos.NotInNB := True|False;

Пример использования в макросе: Материалы из конъюнктурного анализа

Не учитывать

Для документов: ЛС

2025-02-19-14-51-44.png

// Не учитывать позицию в расчёте
pos.Inactive := True;

Материал заказчика

Для документов: ЛС

Для позиций материалов и оборудования возможность проверить, установить или снять признак Материал заказчика.

// Проверка позиции-ресурса на признак 'Материал заказчика'
Value := pos.CanSetIsReturn(sretmOwnerMat);
// Установить/снять признак 'Материал заказчика'
pos.SetIsReturn(sretmOwnerMat, True|False);

Дополнительная перевозка ресурсов

2025-02-20-15-15-29.png

Расчёт дополнительной перевозки согласно Методике 2020 выполняется для каждого ресурса. Это может быть ресурс отдельной позицией сметы или ресурс из ресурсной части позиции сметы. Окно Дополнительная информация (<F3>) на строке позиции или ресурса, раздел Ресурс – Перевозка.

// Удаляет расчёт дополнительной перевозки по позиции сметы
pos.ClearTransportation;

// Удаляет строки дополнительной перевозки по всей смете
Document.Positions.ClearTransportation;

Пример использования в макросе: Удаление допперевозки

Ресурсная часть позиции

Для документов: ЛС

Для чтения и изменения информации в ресурсной части позиции используется коллекция Document.Positions.Resources

// Перебор ресурсов в ресурсной части позиции локальной сметы
for j = 0 to pos.Resources.Count - 1 do
begin
   res := pos.Resources.GetItem(j);
end;

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

  • тип строки
  • основная информация
  • определение стоимости ресурса на единицу
  • обоснование цены материала или оборудования
  • признак Материала заказчика

Примеры использования макрокоманд для ресурсных частей позиций сметы приведены в макросах раздела Ресурсы.

Вложенные позиции

Для документов: КА СК

Для чтения и изменения информации вложенных позиций используется коллекция Document.Positions.SubPositions

// Перебор ресурсов в ресурсной части позиции локальной сметы
for j = 0 to pos.SubPositions.Count - 1 do
begin
   subpos := pos.SubPositions.GetItem(j);
end;

Пример использования в макросе: Комментарий к позиции

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

















Теги: