Ведомость объемов и стоимости работ

Top  Previous  Next

 

Стоимость работ при строительстве объекта капитального строительства помимо сметных расчетов, выполненных  базисно-индексного или ресурсно-индексного методами определяется ведомостью объемов и стоимости работ.

 

Скачать настройки пресета "Ведомость объемов и стоимости работ" можно здесь

 

Ознакомится с порядком добавления настройки пресета в базу данных можно в разделе "Экспорт/импорт настроек пресетов"

 

При установке пресета в форме "Управления данными" или вкладке "Данные" основных форм данные отображаются в виде показанном на рисунке с права.

 

Порядок создания пресета описан ниже. Пользователь может самостоятельно внести изменения в пресет

Vedomost_obemov_i_stoimosti_rabot_Vid_19

Порядок настройки пресета

 

С помощью команды "Создать новый пресет" создайте пресет "Ведомость объемов и стоимости работ". На вкладке "Строки" формы "Настройка пресетов" настройте стоки Объект. -> Документ.

Рис. 1432

Рис. 1432

Сохраните настройки пресета. Подробно о настройке строк смотри раздел "Вкладка "Строки" формы "Настройка пресетов" или раздел "Настройка пресета в форме "Настройка пресетов".

Для избежания ошибок при выполнении настроек переименуйте строку "Документ" в "Документ объекта". Добавьте в строку "Документ объекта" строку "Группа работ". Переименуйте группу в "Группа работ документа" с настройкой фильтров как на рис. 1433

Рис. 1433

Рис. 1433

Сохраните настройки пресета. Добавьте в строку "Группа работ документа" строку "Работа". Переименуйте строку в "Работа группы работ документа" с настройкой фильтров как на рис. 1434

Рис. 1434

Рис. 1434

Сохраните настройки пресета. Для реализации возможности группировать документы добавьте вложенную группу документов как показано на рис. 1435

Рис. 1435

Рис. 1435

Сохраните настройки пресета. Добавьте в строку "Группа документов" строку "Документ". Переименуйте строку в "Документ группы документов" с настройкой фильтров как на рис. 1436

Рис. 1436

Рис. 1436

Сохраните настройки пресета. Добавьте в строку "Документ группы документов" строку "Группа работ". Переименуйте строку в "Группа работ документа группы документов" с настройкой фильтров как на рис. 1437

Рис. 1437

Рис. 1437

Сохраните настройки пресета. Добавьте в строку "Группа работ документа группы документов" строку "Работы". Переименуйте строку в "Работа ГР документа ГД" документа группы документов" с настройкой фильтров как на рис. 1438

Рис. 1438

Рис. 1438

Сохраните настройки пресета.

Создана структура данных с указанием типов строк и родительских связей для вложенных записей для основной колонки создаваемой нами таблицы. Далее необходимо указать параметры выбранных нами типов данных (атрибуты). Параметры объектов и документов (ведомость объемов и стоимости работ) отображаются в колонках.

На вкладке "Колонки" формы "Настройка пресетов" настройте колонки

Наименование колонки

Обозначение типа данных колонки

Номер записи по ведомости

Типовая колонка: Общие: Номер записи по смете

Обозначение записи

Типовая колонка: Общие: Обозначение записи

Единица измерения

Типовая колонка: Работы: Единица измерения объема, работ

Объем сметный работ

Типовая колонка: Работы: Объем сметный, работ

Цена сметная за единицу объема

Типовая колонка: Работы: Цена сметная за единицу объема, работ

Стоимость ПЗ сметная работ

Типовая колонка: Работы: Стоимость ПЗ сметная, работ

 

Рис. 1439

Рис. 1439

Сохраните изменения в пресете. Подробно о настройке колонок смотри раздел "Вкладка "Колонки" формы "Настройка пресетов" или в разделе "Настройка пресета в форме "Настройка пресетов".

Форма "Управление данными" при наличии соответствующих данных примет следующий вид.

Рис. 1440

Рис. 1440

Для настройки фильтров по типу документа "Ведомость объемов и стоимости работ (услуг)" на вкладке "Фильтры" формы "Настройка пресетов" настройте фильтр по типу документа "Ведомость объемов и стоимости работ (услуг)" как показано на рис. 1441

Рис.1441

Рис.1441

Сохраните изменения в пресете. Подробно о настройке фильтров смотри раздел "Вкладка "Фильтры" формы "Настройка пресетов" или в разделе "Настройка пресета в форме "Настройка пресетов".

Форма "Управление данными" после обновления формы примет следующий вид

Рис. 1442

Рис. 1442

Для отображения во вкладке "Данные" формы "Объект" только текущего объекта настройте фильтр текущей записи объекта как показано на рис 1443

Рис. 1443

Рис. 1443

Сохраните изменения в пресете. Вкладка "Данные" формы "Объект" после обновления примет следующий вид

Рис. 1444

Рис. 1444

Для отображения во вкладке "Данные" формы "Объект" и форме "Управления данными" только активных записей объекта настройте фильтр текущей записи объекта как показано на рис 1445

Рис. 1445

Рис. 1445

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

Рис. 1446

Рис. 1446

Сохраните изменения в пресете. Также необходимо установить фильтр по записям документов без привязки к группам,  Настройте фильтр текущей записи документа как показано на рис 1447

Рис. 1447

Рис. 1447

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

Рис. 1448

Рис. 1448

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

Рис. 1449

Рис. 1449

Сохраните изменения в пресете. Также необходимо установить фильтр записям работ привязанным к группе записей. Настройте фильтр текущей записи документа как показано на рис 1450

Рис. 1450

Рис. 1450

Сохраните изменения в пресете. Форма "Управление данными" после обновления формы примет следующий вид.

Рис. 1451

Рис. 1451

Подробно о порядке группировки данных смотрите к разделе "Варианты группировки данных"

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

Рис. 1471

Рис. 1471

в разделе "Содержимое скрипта" напишите скрипт следующего содержания

 

Imports System

Imports System.Text

Imports System.Data

Imports System.Drawing

Imports System.Xml

Imports System.Collections

Imports System.Collections.Generic

Imports System.ComponentModel

Imports System.Reflection

Imports System.IO

Imports System.Text.RegularExpressions

Imports System.Windows.Forms

Imports Microsoft.VisualBasic

Imports CommonLibrary

 

 

Namespace SFExpressionEvaluator

 

  Public Class CSFScript4TreeViewManagerData

 

      'SFScriptExecute - скрипт, который вызывается программой Стройформ для каждой строки таблицы и указанной колонки

      Public Function SFScriptExecute(ByRef dtMain As DataTable, ByRef pCurrentRow As DataRow, ByRef pCurrentColumn As DataColumn) As Object

          'Замените ниже расположенные строки на аналогичные строки, полученные при экспорте таблицы для написания скриптов

          Dim ID As Long = CommonLibrary.SF.Convert.ToLong(pCurrentRow("ID")) ' ID строки

          Dim ParentID As Long = CommonLibrary.SF.Convert.ToLong(pCurrentRow("ParentID")) ' ID родительской строки

          Dim CurrentObjectID As Long = CommonLibrary.SF.Convert.ToLong(pCurrentRow("CurrentObjectID")) ' ID записи в базе данных

          Dim iObjectType As Long = CommonLibrary.SF.Convert.ToLong(pCurrentRow("iObjectType")) ' Тип записи

          'Dim CoveredWork_IDDimension As Long = CommonLibrary.SF.Convert.ToLong(pCurrentRow("CoveredWork_IDDimension"))  ' Единица измерения

          'Dim CoveredWork_iVolumeSmeta As Decimal = CommonLibrary.SF.Convert.ToDecimal(pCurrentRow("CoveredWork_iVolumeSmeta"))  ' Объем сметный работ

          'Dim CoveredWork_iPriceSmeta As Decimal = CommonLibrary.SF.Convert.ToDecimal(pCurrentRow("CoveredWork_iPriceSmeta"))  ' Цена сметная за единицу объема работ

          'Dim CoveredWork_iPriceSummaSmeta As Decimal = CommonLibrary.SF.Convert.ToDecimal(pCurrentRow("CoveredWork_iPriceSummaSmeta"))  ' Стоимость ПЗ сметная работ

 

          Select Case iObjectType

              Case eObjectType.tBaseClassObject

                  Dim pDT As DataTable = dtMain.Clone

                   GetChildRowsClone(dtMain, ParentID, pDT, eObjectType.tCoveredWork)

 

                  Dim Summa4_CoveredWork_iPriceSummaSmeta As Decimal = 0

 

                  For Each row As DataRow In pDT.Rows

                      Dim iVolume As Decimal = CommonLibrary.SF.Convert.ToDecimal(row("CoveredWork_iPriceSummaSmeta"))

                       Summa4_CoveredWork_iPriceSummaSmeta += iVolume

                  Next

                   pCurrentRow("CoveredWork_iPriceSummaSmeta") = Summa4_CoveredWork_iPriceSummaSmeta

                   pCurrentRow("FillObject") = "Итого по разделу"

 

          End Select

 

          Return Nothing

      End Function

 

      Private Sub GetChildRowsClone(ByRef dtMain As DataTable, ByVal ParentID As Long, ByRef pDT As DataTable, ByVal iDestObjectType As eObjectType)

          For Each row As DataRow In dtMain.Select(" [ParentID] = " & ParentID)

              Dim iObjectType As Long = CommonLibrary.SF.Convert.ToLong(row("iObjectType")) ' Тип записи

 

              If iObjectType = iDestObjectType Then

                   pDT.ImportRow(row)

              End If

 

               GetChildRowsClone(dtMain, SF.Convert.ToLong(row("ID")), pDT, iDestObjectType)

          Next

      End Sub

       

  End Class

End Namespace

 

Сохраните изменения в пресете. Подробно о написании скрипта смотри раздел "Написание скриптов при настройке пресета".

ВНИМАНИЕ! Указанный скрипт написан на языке Microsoft Visual Basic

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

Рис. 1472

Рис. 1472

в разделе "Содержимое скрипта" напишите скрипт следующего содержания

 

Imports System

Imports System.Text

Imports System.Data

Imports System.Drawing

Imports System.Xml

Imports System.Collections

Imports System.Collections.Generic

Imports System.ComponentModel

Imports System.Reflection

Imports System.IO

Imports System.Text.RegularExpressions

Imports System.Windows.Forms

Imports Microsoft.VisualBasic

Imports CommonLibrary

 

 

Namespace SFExpressionEvaluator

 

  Public Class CSFScript4TreeViewManagerData

 

      'SFScriptExecute - скрипт, который вызывается программой Стройформ для каждой строки таблицы и указанной колонки

      Public Function SFScriptExecute(ByRef dtMain As DataTable, ByRef pCurrentRow As DataRow, ByRef pCurrentColumn As DataColumn) As Object

          'Замените ниже расположенные строки на аналогичные строки, полученные при экспорте таблицы для написания скриптов

          Dim ID As Long = CommonLibrary.SF.Convert.ToLong(pCurrentRow("ID")) ' ID строки

          Dim ParentID As Long = CommonLibrary.SF.Convert.ToLong(pCurrentRow("ParentID")) ' ID родительской строки

          Dim CurrentObjectID As Long = CommonLibrary.SF.Convert.ToLong(pCurrentRow("CurrentObjectID")) ' ID записи в базе данных

          Dim iObjectType As Long = CommonLibrary.SF.Convert.ToLong(pCurrentRow("iObjectType")) ' Тип записи

          'Dim CoveredWork_IDDimension As Long = CommonLibrary.SF.Convert.ToLong(pCurrentRow("CoveredWork_IDDimension"))  ' Единица измерения

          'Dim CoveredWork_iVolumeSmeta As Decimal = CommonLibrary.SF.Convert.ToDecimal(pCurrentRow("CoveredWork_iVolumeSmeta"))  ' Объем сметный работ

          'Dim CoveredWork_iPriceSmeta As Decimal = CommonLibrary.SF.Convert.ToDecimal(pCurrentRow("CoveredWork_iPriceSmeta"))  ' Цена сметная за единицу объема работ

          'Dim CoveredWork_iPriceSummaSmeta As Decimal = CommonLibrary.SF.Convert.ToDecimal(pCurrentRow("CoveredWork_iPriceSummaSmeta"))  ' Стоимость ПЗ сметная работ

 

          Select Case iObjectType

              Case eObjectType.tBaseClassObject

                  Dim pDT As DataTable = dtMain.Clone

                   GetChildRowsClone(dtMain, ParentID, pDT, eObjectType.tCoveredWork)

 

                  Dim Summa4_CoveredWork_iPriceSummaSmeta As Decimal = 0

 

                  For Each row As DataRow In pDT.Rows

                                    Dim IDBCODestRow As Long = CommonLibrary.SF.Convert.ToLong(row("IDBCODestRow")) ' Тип записи

                                         if IDBCODestRow = 15 then continue for

 

 

                             Dim iVolume As Decimal = CommonLibrary.SF.Convert.ToDecimal(row("CoveredWork_iPriceSummaSmeta"))

                             Summa4_CoveredWork_iPriceSummaSmeta += iVolume

                  Next

                   pCurrentRow("CoveredWork_iPriceSummaSmeta") = Summa4_CoveredWork_iPriceSummaSmeta

                   pCurrentRow("FillObject") = "Итого по ведомости"

 

          End Select

 

          Return Nothing

      End Function

 

      Private Sub GetChildRowsClone(ByRef dtMain As DataTable, ByVal ParentID As Long, ByRef pDT As DataTable, ByVal iDestObjectType As eObjectType)

          For Each row As DataRow In dtMain.Select(" [ParentID] = " & ParentID)

              Dim iObjectType As Long = CommonLibrary.SF.Convert.ToLong(row("iObjectType")) ' Тип записи

 

              If iObjectType = iDestObjectType Then

                   pDT.ImportRow(row)

              End If

 

               GetChildRowsClone(dtMain, SF.Convert.ToLong(row("ID")), pDT, iDestObjectType)

          Next

      End Sub

  End Class

End Namespace

 

Сохраните изменения в пресете. Подробно о написании скрипта смотри раздел "Написание скриптов при настройке пресета".

ВНИМАНИЕ! Указанный скрипт написан на языке Microsoft Visual Basic

Форма "Управление данными" после обновления формы примет следующий вид.

Рис. 1473

Рис. 1473

Для вывода таких позиций, как например, Тех.присоединение энергопринимающих устройств, Разработка рабочей документации, Непредвиденные работы и затраты можно добавить любой тип данных имеющий стоимость. В данном случае выбран тип данных работы. Добавьте типовую строку, переименуйте её в "Работа документа" и настройте фильтр связи как показано на рис. 1474

Рис. 1474

Рис. 1474

Сохраните изменения в пресете. Форма "Управление данными" после обновления  примет следующий вид.

Рис. 1475

Рис. 1475

В строке "Работы документа" отражаются все работы связанные с документом "Ведомость стоимости и объемов работ". Нам же необходимо чтобы на этой позиции строк отражались записи типа непредвиденные расходы стоимость временных зданий и сооружений и т.д. Решить эту задачу можно двумя способами. Рассмотрим способ связанный с нормативными базами.

С помощью пресета "Сметные нормы на строительные работы" или похожего на него пресета создайте группу индивидуальных работ "Дополнительные атрибуты" .

Рис. 1476

Рис. 1476

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

Рис. 1477

Рис. 1477

например, Непредвиденные работы и затраты.

Рис. 1478

Рис. 1478

Далее необходимо настроить фильтрацию доя строки "Работы документа" по созданным "работам" из группы "Дополнительные атрибуты" Для настройки фильтра во вкладке "Фильтры" формы "Настройка пресета" вызовите команду "Добавить типовой фильтр". В форме добавления данных выберите вкладку "Данные", выберите пресет "Сметные нормы на строительные работы" и отметьте флагами необходимые работы как показано на рис. 1479

Рис. 1479

Рис. 1479

Завершите поиск с выбранным результатом. Во вкладке "Фильтры" настройте фильтрацию по выбранным "работам" как показано на рис 1480

Рис. 1480

Рис. 1480

Сохраните изменения в пресете. Форма "Управление данными" после обновления  примет следующий вид.

Рис. 1481

Рис. 1481

С помощью команды "Добавить новую работу на основе нормативной работы к выбранной записи"

Рис. 1482

Рис. 1482

добавьте необходимые записи к документу "Ведомость стоимости и объемов работ" из созданной ранее группы "Дополнительные атрибуты". После вызова команды "Добавить новую работу на основе нормативной работы к выбранной записи" откроется форма "Проектные параметры работ", прейдите на вкладку "Работы выберите созданную в группе "Дополнительные атрибуты" работу

Рис. 1483

Рис. 1483

Сохраните изменения и перейдите на предыдущую вкладку.  Форма "Управление данными" после обновления  примет следующий вид

Рис. 1484

Рис. 1484

В колонке "Стоимость сметная работ" укажите стоимость выбранных работ, если она не была указана заранее в индивидуальных расценках. Сохраните изменения. Форма "Управление данными"  примет следующий вид

Рис. 1485

Рис. 1485

Далее необходимо добавить вычисляемую строку "Итого" которая будет учитывать результат строки "Итого по ведомости" и сумму указанные в дополнительных расходах. Добавьте вычисляемую строку "Итого" в документ "Ведомость стоимости и объемов работ" и укажите язык скрипта

Рис. 1486

Рис. 1486

в разделе "Содержимое скрипта" напишите скрипт следующего содержания

 

Imports System

Imports System.Text

Imports System.Data

Imports System.Drawing

Imports System.Xml

Imports System.Collections

Imports System.Collections.Generic

Imports System.ComponentModel

Imports System.Reflection

Imports System.IO

Imports System.Text.RegularExpressions

Imports System.Windows.Forms

Imports Microsoft.VisualBasic

Imports CommonLibrary

 

 

Namespace SFExpressionEvaluator

 

  Public Class CSFScript4TreeViewManagerData

 

      'SFScriptExecute - скрипт, который вызывается программой Стройформ для каждой строки таблицы и указанной колонки

      Public Function SFScriptExecute(ByRef dtMain As DataTable, ByRef pCurrentRow As DataRow, ByRef pCurrentColumn As DataColumn) As Object

          'Замените ниже расположенные строки на аналогичные строки, полученные при экспорте таблицы для написания скриптов

          Dim ID As Long = CommonLibrary.SF.Convert.ToLong(pCurrentRow("ID")) ' ID строки

          Dim ParentID As Long = CommonLibrary.SF.Convert.ToLong(pCurrentRow("ParentID")) ' ID родительской строки

          Dim CurrentObjectID As Long = CommonLibrary.SF.Convert.ToLong(pCurrentRow("CurrentObjectID")) ' ID записи в базе данных

          Dim iObjectType As Long = CommonLibrary.SF.Convert.ToLong(pCurrentRow("iObjectType")) ' Тип записи

          'Dim CoveredWork_IDDimension As Long = CommonLibrary.SF.Convert.ToLong(pCurrentRow("CoveredWork_IDDimension"))  ' Единица измерения

          'Dim CoveredWork_iVolumeSmeta As Decimal = CommonLibrary.SF.Convert.ToDecimal(pCurrentRow("CoveredWork_iVolumeSmeta"))  ' Объем сметный работ

          'Dim CoveredWork_iPriceSmeta As Decimal = CommonLibrary.SF.Convert.ToDecimal(pCurrentRow("CoveredWork_iPriceSmeta"))  ' Цена сметная за единицу объема работ

          'Dim CoveredWork_iPriceSummaSmeta As Decimal = CommonLibrary.SF.Convert.ToDecimal(pCurrentRow("CoveredWork_iPriceSummaSmeta"))  ' Стоимость ПЗ сметная работ

 

          Select Case iObjectType

              Case eObjectType.tBaseClassObject

                  Dim Summa4_CoveredWork_iPriceSummaSmeta As Decimal = 0

 

                         if True Then

                  Dim pDT As DataTable = dtMain.Clone

                   GetChildRowsClone(dtMain, ParentID, pDT, 12)

 

                  For Each row As DataRow In pDT.Rows

                      Dim iVolume As Decimal = CommonLibrary.SF.Convert.ToDecimal(row("CoveredWork_iPriceSummaSmeta"))

                       Summa4_CoveredWork_iPriceSummaSmeta += iVolume

                  Next

                         End if

 

                         if True Then

                  Dim pDT As DataTable = dtMain.Clone

                   GetChildRowsClone(dtMain, ParentID, pDT, 15)

 

                  For Each row As DataRow In pDT.Rows

                      Dim iVolume As Decimal = CommonLibrary.SF.Convert.ToDecimal(row("CoveredWork_iPriceSummaSmeta"))

                       Summa4_CoveredWork_iPriceSummaSmeta += iVolume

                  Next

                         End if

 

                   pCurrentRow("CoveredWork_iPriceSummaSmeta") = Summa4_CoveredWork_iPriceSummaSmeta

          End Select

 

          Return Nothing

      End Function

 

      Private Sub GetChildRowsClone(ByRef dtMain As DataTable, ByVal ParentID As Long, ByRef pDT As DataTable, ByVal IDBCODestRow As Long)

          For Each row As DataRow In dtMain.Select(" ([ParentID] = " & ParentID & ") AND ([IDBCODestRow] = " & IDBCODestRow & ") ")

               pDT.ImportRow(row)

               GetChildRowsClone(dtMain, SF.Convert.ToLong(row("ID")), pDT, IDBCODestRow)

          Next

      End Sub

  End Class

End Namespace

 

Сохраните изменения в пресете. Подробно о написании скрипта смотри раздел "Написание скриптов при настройке пресета".

ВНИМАНИЕ! Указанный скрипт написан на языке Microsoft Visual Basic

Форма "Управление данными" после обновления формы примет следующий вид.

Рис. 1487

Рис. 1487

Далее необходимо добавить вычисляемую строку "НДС" которая будет рассчитывать налог на добавленную стоимость. Добавьте вычисляемую строку "НДС 18%" в документ "Ведомость стоимости и объемов работ" и укажите язык скрипта

Рис. 1488

Рис. 1488

в разделе "Содержимое скрипта" напишите скрипт следующего содержания

 

Imports System

Imports System.Text

Imports System.Data

Imports System.Drawing

Imports System.Xml

Imports System.Collections

Imports System.Collections.Generic

Imports System.ComponentModel

Imports System.Reflection

Imports System.IO

Imports System.Text.RegularExpressions

Imports System.Windows.Forms

Imports Microsoft.VisualBasic

Imports CommonLibrary

 

 

Namespace SFExpressionEvaluator

 

  Public Class CSFScript4TreeViewManagerData

 

      'SFScriptExecute - скрипт, который вызывается программой Стройформ для каждой строки таблицы и указанной колонки

      Public Function SFScriptExecute(ByRef dtMain As DataTable, ByRef pCurrentRow As DataRow, ByRef pCurrentColumn As DataColumn) As Object

          'Замените ниже расположенные строки на аналогичные строки, полученные при экспорте таблицы для написания скриптов

          Dim ID As Long = CommonLibrary.SF.Convert.ToLong(pCurrentRow("ID")) ' ID строки

          Dim ParentID As Long = CommonLibrary.SF.Convert.ToLong(pCurrentRow("ParentID")) ' ID родительской строки

          Dim CurrentObjectID As Long = CommonLibrary.SF.Convert.ToLong(pCurrentRow("CurrentObjectID")) ' ID записи в базе данных

          Dim iObjectType As Long = CommonLibrary.SF.Convert.ToLong(pCurrentRow("iObjectType")) ' Тип записи

          'Dim CoveredWork_IDDimension As Long = CommonLibrary.SF.Convert.ToLong(pCurrentRow("CoveredWork_IDDimension"))  ' Единица измерения

          'Dim CoveredWork_iVolumeSmeta As Decimal = CommonLibrary.SF.Convert.ToDecimal(pCurrentRow("CoveredWork_iVolumeSmeta"))  ' Объем сметный работ

          'Dim CoveredWork_iPriceSmeta As Decimal = CommonLibrary.SF.Convert.ToDecimal(pCurrentRow("CoveredWork_iPriceSmeta"))  ' Цена сметная за единицу объема работ

          'Dim CoveredWork_iPriceSummaSmeta As Decimal = CommonLibrary.SF.Convert.ToDecimal(pCurrentRow("CoveredWork_iPriceSummaSmeta"))  ' Стоимость ПЗ сметная работ

 

          Select Case iObjectType

              Case eObjectType.tBaseClassObject

                  Dim pDT As DataTable = dtMain.Clone

                   GetChildRowsClone(dtMain, ParentID, pDT, 16)

 

                  Dim Summa4_CoveredWork_iPriceSummaSmeta As Decimal = 0

 

                  For Each row As DataRow In pDT.Rows

                      Dim iVolume As Decimal = CommonLibrary.SF.Convert.ToDecimal(row("CoveredWork_iPriceSummaSmeta"))

                       Summa4_CoveredWork_iPriceSummaSmeta += iVolume

                  Next

                   pCurrentRow("CoveredWork_iPriceSummaSmeta") = Summa4_CoveredWork_iPriceSummaSmeta * 0.18

          End Select

 

          Return Nothing

      End Function

 

      Private Sub GetChildRowsClone(ByRef dtMain As DataTable, ByVal ParentID As Long, ByRef pDT As DataTable, ByVal IDBCODestRow As Long)

          For Each row As DataRow In dtMain.Select(" ([ParentID] = " & ParentID & ") AND ([IDBCODestRow] = " & IDBCODestRow & ") ")

               pDT.ImportRow(row)

               GetChildRowsClone(dtMain, SF.Convert.ToLong(row("ID")), pDT, IDBCODestRow)

          Next

      End Sub

  End Class

End Namespace

 

Сохраните изменения в пресете. Подробно о написании скрипта смотри раздел "Написание скриптов при настройке пресета".

ВНИМАНИЕ! Указанный скрипт написан на языке Microsoft Visual Basic

Форма "Управление данными" после обновления формы примет следующий вид.

Рис. 1489

Рис. 1489

Далее необходимо добавить вычисляемую строку "Страхование СМР" которая будет рассчитывать стоимость страхования строительно-монтажных работ 0,01% от суммы указанной в строке "Итого". Добавьте вычисляемую строку "Страхование СМР 0,01%" в документ "Ведомость стоимости и объемов работ" и укажите язык скрипта

Рис. 1489

Рис. 1489

в разделе "Содержимое скрипта" напишите скрипт следующего содержания

 

Imports System

Imports System.Text

Imports System.Data

Imports System.Drawing

Imports System.Xml

Imports System.Collections

Imports System.Collections.Generic

Imports System.ComponentModel

Imports System.Reflection

Imports System.IO

Imports System.Text.RegularExpressions

Imports System.Windows.Forms

Imports Microsoft.VisualBasic

Imports CommonLibrary

 

 

Namespace SFExpressionEvaluator

 

  Public Class CSFScript4TreeViewManagerData

 

      'SFScriptExecute - скрипт, который вызывается программой Стройформ для каждой строки таблицы и указанной колонки

      Public Function SFScriptExecute(ByRef dtMain As DataTable, ByRef pCurrentRow As DataRow, ByRef pCurrentColumn As DataColumn) As Object

          'Замените ниже расположенные строки на аналогичные строки, полученные при экспорте таблицы для написания скриптов

          Dim ID As Long = CommonLibrary.SF.Convert.ToLong(pCurrentRow("ID")) ' ID строки

          Dim ParentID As Long = CommonLibrary.SF.Convert.ToLong(pCurrentRow("ParentID")) ' ID родительской строки

          Dim CurrentObjectID As Long = CommonLibrary.SF.Convert.ToLong(pCurrentRow("CurrentObjectID")) ' ID записи в базе данных

          Dim iObjectType As Long = CommonLibrary.SF.Convert.ToLong(pCurrentRow("iObjectType")) ' Тип записи

          'Dim CoveredWork_IDDimension As Long = CommonLibrary.SF.Convert.ToLong(pCurrentRow("CoveredWork_IDDimension"))  ' Единица измерения

          'Dim CoveredWork_iVolumeSmeta As Decimal = CommonLibrary.SF.Convert.ToDecimal(pCurrentRow("CoveredWork_iVolumeSmeta"))  ' Объем сметный работ

          'Dim CoveredWork_iPriceSmeta As Decimal = CommonLibrary.SF.Convert.ToDecimal(pCurrentRow("CoveredWork_iPriceSmeta"))  ' Цена сметная за единицу объема работ

          'Dim CoveredWork_iPriceSummaSmeta As Decimal = CommonLibrary.SF.Convert.ToDecimal(pCurrentRow("CoveredWork_iPriceSummaSmeta"))  ' Стоимость ПЗ сметная работ

 

          Select Case iObjectType

              Case eObjectType.tBaseClassObject

                  Dim pDT As DataTable = dtMain.Clone

                   GetChildRowsClone(dtMain, ParentID, pDT, 16)

 

                  Dim Summa4_CoveredWork_iPriceSummaSmeta As Decimal = 0

 

                  For Each row As DataRow In pDT.Rows

                      Dim iVolume As Decimal = CommonLibrary.SF.Convert.ToDecimal(row("CoveredWork_iPriceSummaSmeta"))

                       Summa4_CoveredWork_iPriceSummaSmeta += iVolume

                  Next

                   pCurrentRow("CoveredWork_iPriceSummaSmeta") = Summa4_CoveredWork_iPriceSummaSmeta * 0.01

          End Select

 

          Return Nothing

      End Function

 

      Private Sub GetChildRowsClone(ByRef dtMain As DataTable, ByVal ParentID As Long, ByRef pDT As DataTable, ByVal IDBCODestRow As Long)

          For Each row As DataRow In dtMain.Select(" ([ParentID] = " & ParentID & ") AND ([IDBCODestRow] = " & IDBCODestRow & ") ")

               pDT.ImportRow(row)

               GetChildRowsClone(dtMain, SF.Convert.ToLong(row("ID")), pDT, IDBCODestRow)

          Next

      End Sub

  End Class

End Namespace

 

Сохраните изменения в пресете. Подробно о написании скрипта смотри раздел "Написание скриптов при настройке пресета".

ВНИМАНИЕ! Указанный скрипт написан на языке Microsoft Visual Basic

Форма "Управление данными" после обновления формы примет следующий вид.

Рис. 1490

Рис. 1490

Далее необходимо добавить вычисляемую строку "ВСЕГО" которая будет рассчитывать общую стоимость работ. Добавьте вычисляемую строку "ВСЕГО" в документ "Ведомость стоимости и объемов работ" и укажите язык скрипта

Рис. 1491

Рис. 1491

в разделе "Содержимое скрипта" напишите скрипт следующего содержания

 

Imports System

Imports System.Text

Imports System.Data

Imports System.Drawing

Imports System.Xml

Imports System.Collections

Imports System.Collections.Generic

Imports System.ComponentModel

Imports System.Reflection

Imports System.IO

Imports System.Text.RegularExpressions

Imports System.Windows.Forms

Imports Microsoft.VisualBasic

Imports CommonLibrary

 

 

Namespace SFExpressionEvaluator

 

  Public Class CSFScript4TreeViewManagerData

 

      'SFScriptExecute - скрипт, который вызывается программой Стройформ для каждой строки таблицы и указанной колонки

      Public Function SFScriptExecute(ByRef dtMain As DataTable, ByRef pCurrentRow As DataRow, ByRef pCurrentColumn As DataColumn) As Object

          'Замените ниже расположенные строки на аналогичные строки, полученные при экспорте таблицы для написания скриптов

          Dim ID As Long = CommonLibrary.SF.Convert.ToLong(pCurrentRow("ID")) ' ID строки

          Dim ParentID As Long = CommonLibrary.SF.Convert.ToLong(pCurrentRow("ParentID")) ' ID родительской строки

          Dim CurrentObjectID As Long = CommonLibrary.SF.Convert.ToLong(pCurrentRow("CurrentObjectID")) ' ID записи в базе данных

          Dim iObjectType As Long = CommonLibrary.SF.Convert.ToLong(pCurrentRow("iObjectType")) ' Тип записи

          'Dim CoveredWork_IDDimension As Long = CommonLibrary.SF.Convert.ToLong(pCurrentRow("CoveredWork_IDDimension"))  ' Единица измерения

          'Dim CoveredWork_iVolumeSmeta As Decimal = CommonLibrary.SF.Convert.ToDecimal(pCurrentRow("CoveredWork_iVolumeSmeta"))  ' Объем сметный работ

          'Dim CoveredWork_iPriceSmeta As Decimal = CommonLibrary.SF.Convert.ToDecimal(pCurrentRow("CoveredWork_iPriceSmeta"))  ' Цена сметная за единицу объема работ

          'Dim CoveredWork_iPriceSummaSmeta As Decimal = CommonLibrary.SF.Convert.ToDecimal(pCurrentRow("CoveredWork_iPriceSummaSmeta"))  ' Стоимость ПЗ сметная работ

 

          Select Case iObjectType

              Case eObjectType.tBaseClassObject

                  Dim Summa4_CoveredWork_iPriceSummaSmeta As Decimal = 0

 

                         if True Then

                  Dim pDT As DataTable = dtMain.Clone

                   GetChildRowsClone(dtMain, ParentID, pDT, 16)

 

                  For Each row As DataRow In pDT.Rows

                      Dim iVolume As Decimal = CommonLibrary.SF.Convert.ToDecimal(row("CoveredWork_iPriceSummaSmeta"))

                       Summa4_CoveredWork_iPriceSummaSmeta += iVolume

                  Next

                         End if

 

                         if True Then

                  Dim pDT As DataTable = dtMain.Clone

                   GetChildRowsClone(dtMain, ParentID, pDT, 17)

 

                  For Each row As DataRow In pDT.Rows

                      Dim iVolume As Decimal = CommonLibrary.SF.Convert.ToDecimal(row("CoveredWork_iPriceSummaSmeta"))

                       Summa4_CoveredWork_iPriceSummaSmeta += iVolume

                  Next

                         End if

 

                         if True Then

                  Dim pDT As DataTable = dtMain.Clone

                   GetChildRowsClone(dtMain, ParentID, pDT, 18)

 

                  For Each row As DataRow In pDT.Rows

                      Dim iVolume As Decimal = CommonLibrary.SF.Convert.ToDecimal(row("CoveredWork_iPriceSummaSmeta"))

                       Summa4_CoveredWork_iPriceSummaSmeta += iVolume

                  Next

                         End if

 

 

                   pCurrentRow("CoveredWork_iPriceSummaSmeta") = Summa4_CoveredWork_iPriceSummaSmeta

          End Select

 

          Return Nothing

      End Function

 

      Private Sub GetChildRowsClone(ByRef dtMain As DataTable, ByVal ParentID As Long, ByRef pDT As DataTable, ByVal IDBCODestRow As Long)

          For Each row As DataRow In dtMain.Select(" ([ParentID] = " & ParentID & ") AND ([IDBCODestRow] = " & IDBCODestRow & ") ")

               pDT.ImportRow(row)

               GetChildRowsClone(dtMain, SF.Convert.ToLong(row("ID")), pDT, IDBCODestRow)

          Next

      End Sub

  End Class

End Namespace

 

Сохраните изменения в пресете. Подробно о написании скрипта смотри раздел "Написание скриптов при настройке пресета".

ВНИМАНИЕ! Указанный скрипт написан на языке Microsoft Visual Basic

Форма "Управление данными" после обновления формы примет следующий вид.

Рис. 1492

Рис. 1492

Настройка части пресета выполнена. Аналогичным образом самостоятельно настройте строки для группы документов как показано на рис. 1493

Рис. 1493

Рис. 1493

После настройки пресета форма "Управление данными"  примет следующий вид.

Рис. 1494

Рис. 1494

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

 

Для полного понимания процесса создания пресета рекомендуем ознакомится со всеми описаниями создания пресетов в разделе:

- Группа пресетов "Управление проектной документацией"

- Конфигурация АС "Стройформ": Управление проектом

- Графики (отчеты) проверок органов ГСН

- Графики проверок в системе качества



  Руководство пользователя версия 7.4.2013.51, скачать в формате HelpFile.chm, HelpFile.pdf, HelpFile.doc
  При полном или частичном использовании материалов сайта,
  ссылка на сайты www.stroyform.ru и www.stroyform.su обязательна support@stroyform.ru.