Ведомость объемов и стоимости работ |
Порядок настройки пресета
С помощью команды "Создать новый пресет" создайте пресет "Ведомость объемов и стоимости работ". На вкладке "Строки" формы "Настройка пресетов" настройте стоки Объект. -> Документ. Рис. 1432 Сохраните настройки пресета. Подробно о настройке строк смотри раздел "Вкладка "Строки" формы "Настройка пресетов" или раздел "Настройка пресета в форме "Настройка пресетов". Для избежания ошибок при выполнении настроек переименуйте строку "Документ" в "Документ объекта". Добавьте в строку "Документ объекта" строку "Группа работ". Переименуйте группу в "Группа работ документа" с настройкой фильтров как на рис. 1433 Рис. 1433 Сохраните настройки пресета. Добавьте в строку "Группа работ документа" строку "Работа". Переименуйте строку в "Работа группы работ документа" с настройкой фильтров как на рис. 1434 Рис. 1434 Сохраните настройки пресета. Для реализации возможности группировать документы добавьте вложенную группу документов как показано на рис. 1435 Рис. 1435 Сохраните настройки пресета. Добавьте в строку "Группа документов" строку "Документ". Переименуйте строку в "Документ группы документов" с настройкой фильтров как на рис. 1436 Рис. 1436 Сохраните настройки пресета. Добавьте в строку "Документ группы документов" строку "Группа работ". Переименуйте строку в "Группа работ документа группы документов" с настройкой фильтров как на рис. 1437 Рис. 1437 Сохраните настройки пресета. Добавьте в строку "Группа работ документа группы документов" строку "Работы". Переименуйте строку в "Работа ГР документа ГД" документа группы документов" с настройкой фильтров как на рис. 1438 Рис. 1438 Сохраните настройки пресета. Создана структура данных с указанием типов строк и родительских связей для вложенных записей для основной колонки создаваемой нами таблицы. Далее необходимо указать параметры выбранных нами типов данных (атрибуты). Параметры объектов и документов (ведомость объемов и стоимости работ) отображаются в колонках. На вкладке "Колонки" формы "Настройка пресетов" настройте колонки
Рис. 1439 Сохраните изменения в пресете. Подробно о настройке колонок смотри раздел "Вкладка "Колонки" формы "Настройка пресетов" или в разделе "Настройка пресета в форме "Настройка пресетов". Форма "Управление данными" при наличии соответствующих данных примет следующий вид. Рис. 1440 Для настройки фильтров по типу документа "Ведомость объемов и стоимости работ (услуг)" на вкладке "Фильтры" формы "Настройка пресетов" настройте фильтр по типу документа "Ведомость объемов и стоимости работ (услуг)" как показано на рис. 1441 Рис.1441 Сохраните изменения в пресете. Подробно о настройке фильтров смотри раздел "Вкладка "Фильтры" формы "Настройка пресетов" или в разделе "Настройка пресета в форме "Настройка пресетов". Форма "Управление данными" после обновления формы примет следующий вид Рис. 1442 Для отображения во вкладке "Данные" формы "Объект" только текущего объекта настройте фильтр текущей записи объекта как показано на рис 1443 Рис. 1443 Сохраните изменения в пресете. Вкладка "Данные" формы "Объект" после обновления примет следующий вид Рис. 1444 Для отображения во вкладке "Данные" формы "Объект" и форме "Управления данными" только активных записей объекта настройте фильтр текущей записи объекта как показано на рис 1445 Рис. 1445 Сохраните изменения в пресете. Также необходимо установить фильтр по группам записей, которые в данном случае являются вложенными в другие записи. Настройте фильтр текущей записи группы как показано на рис 1446 Рис. 1446 Сохраните изменения в пресете. Также необходимо установить фильтр по записям документов без привязки к группам, Настройте фильтр текущей записи документа как показано на рис 1447 Рис. 1447 Сохраните изменения в пресете. Также необходимо установить фильтр записям документов привязанным к группам, Настройте фильтр текущей записи документа как показано на рис 1448 Рис. 1448 Сохраните изменения в пресете. Также необходимо установить фильтр записям документов привязанным к другой записи, Настройте фильтр текущей записи документа как показано на рис 1449 Рис. 1449 Сохраните изменения в пресете. Также необходимо установить фильтр записям работ привязанным к группе записей. Настройте фильтр текущей записи документа как показано на рис 1450 Рис. 1450 Сохраните изменения в пресете. Форма "Управление данными" после обновления формы примет следующий вид. Рис. 1451 Подробно о порядке группировки данных смотрите к разделе "Варианты группировки данных" Для расчета итоговой стоимости группы работ добавьте с помощью команды "Добавить вычисляемую строку" вычисляемую строку, которую переименуйте в "Итого по разделу работ документа". и выберите язык написания скрипта. Рис. 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 в разделе "Содержимое скрипта" напишите скрипт следующего содержания
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 Для вывода таких позиций, как например, Тех.присоединение энергопринимающих устройств, Разработка рабочей документации, Непредвиденные работы и затраты можно добавить любой тип данных имеющий стоимость. В данном случае выбран тип данных работы. Добавьте типовую строку, переименуйте её в "Работа документа" и настройте фильтр связи как показано на рис. 1474 Рис. 1474 Сохраните изменения в пресете. Форма "Управление данными" после обновления примет следующий вид. Рис. 1475 В строке "Работы документа" отражаются все работы связанные с документом "Ведомость стоимости и объемов работ". Нам же необходимо чтобы на этой позиции строк отражались записи типа непредвиденные расходы стоимость временных зданий и сооружений и т.д. Решить эту задачу можно двумя способами. Рассмотрим способ связанный с нормативными базами. С помощью пресета "Сметные нормы на строительные работы" или похожего на него пресета создайте группу индивидуальных работ "Дополнительные атрибуты" . Рис. 1476 Добавьте в созданную группу записи в помощью команду "Добавить новую нормативную работу к выбранной записи" Рис. 1477 например, Непредвиденные работы и затраты. Рис. 1478 Далее необходимо настроить фильтрацию доя строки "Работы документа" по созданным "работам" из группы "Дополнительные атрибуты" Для настройки фильтра во вкладке "Фильтры" формы "Настройка пресета" вызовите команду "Добавить типовой фильтр". В форме добавления данных выберите вкладку "Данные", выберите пресет "Сметные нормы на строительные работы" и отметьте флагами необходимые работы как показано на рис. 1479 Рис. 1479 Завершите поиск с выбранным результатом. Во вкладке "Фильтры" настройте фильтрацию по выбранным "работам" как показано на рис 1480 Рис. 1480 Сохраните изменения в пресете. Форма "Управление данными" после обновления примет следующий вид. Рис. 1481 С помощью команды "Добавить новую работу на основе нормативной работы к выбранной записи" Рис. 1482 добавьте необходимые записи к документу "Ведомость стоимости и объемов работ" из созданной ранее группы "Дополнительные атрибуты". После вызова команды "Добавить новую работу на основе нормативной работы к выбранной записи" откроется форма "Проектные параметры работ", прейдите на вкладку "Работы выберите созданную в группе "Дополнительные атрибуты" работу Рис. 1483 Сохраните изменения и перейдите на предыдущую вкладку. Форма "Управление данными" после обновления примет следующий вид Рис. 1484 В колонке "Стоимость сметная работ" укажите стоимость выбранных работ, если она не была указана заранее в индивидуальных расценках. Сохраните изменения. Форма "Управление данными" примет следующий вид Рис. 1485 Далее необходимо добавить вычисляемую строку "Итого" которая будет учитывать результат строки "Итого по ведомости" и сумму указанные в дополнительных расходах. Добавьте вычисляемую строку "Итого" в документ "Ведомость стоимости и объемов работ" и укажите язык скрипта Рис. 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 Далее необходимо добавить вычисляемую строку "НДС" которая будет рассчитывать налог на добавленную стоимость. Добавьте вычисляемую строку "НДС 18%" в документ "Ведомость стоимости и объемов работ" и укажите язык скрипта Рис. 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 Далее необходимо добавить вычисляемую строку "Страхование СМР" которая будет рассчитывать стоимость страхования строительно-монтажных работ 0,01% от суммы указанной в строке "Итого". Добавьте вычисляемую строку "Страхование СМР 0,01%" в документ "Ведомость стоимости и объемов работ" и укажите язык скрипта Рис. 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 Далее необходимо добавить вычисляемую строку "ВСЕГО" которая будет рассчитывать общую стоимость работ. Добавьте вычисляемую строку "ВСЕГО" в документ "Ведомость стоимости и объемов работ" и укажите язык скрипта Рис. 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 Настройка части пресета выполнена. Аналогичным образом самостоятельно настройте строки для группы документов как показано на рис. 1493 Рис. 1493 После настройки пресета форма "Управление данными" примет следующий вид. Рис. 1494 Пользователь может самостоятельно изменить настройки фильтрации и скриптов пресета
Для полного понимания процесса создания пресета рекомендуем ознакомится со всеми описаниями создания пресетов в разделе: - Группа пресетов "Управление проектной документацией" - Конфигурация АС "Стройформ": Управление проектом |
Руководство пользователя версия 7.4.2013.51, скачать в формате HelpFile.chm, HelpFile.pdf, HelpFile.doc При полном или частичном использовании материалов сайта, ссылка на сайты www.stroyform.ru и www.stroyform.su обязательна support@stroyform.ru. |