Учет фактического расходования материалов по объектам строительства без планирования

Top  Previous  Next

 

Пресет "Учет фактического расходования материалов по объектам строительства без планирования" позволяет организациям организовать учет фактического расходования материалов по объектам капитального строительства без планирования расходования материалов.

 

Скачать настройки пресета "Учет фактического расходования материалов по объектам строительства без планирования" можно здесь

 

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

 

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

 

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

Ucet_Materialov_Fakt_Obekt_Vid_1

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

 

С помощью команды "Создать новый пресет" создайте пресет "Учет фактического расходования материалов по объектам строительства без планирования". На вкладке "Строки" формы "Настройка пресетов" настройте стоки Группа ресурсов -> Ресурс.

Рис. 1501

Рис. 1501

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

Добавьте строку "Поступление ресурса" и настройте фильтр как показано на рис. 1502.

Рис. 1502

Рис. 1502

Сохраните настройки пресета. Добавьте строку "Расход ресурса" и настройте фильтр как показано на рис. 1503.

Рис. 1503

Рис. 1503

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

Рис. 1504

Рис. 1504

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

 

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

 

      'SFScriptExecuteTester - функция тестирования скрипта SFScriptExecute()

      Public Function SFScriptExecuteTester() As DataTable

          'Файл sf_table4script.xml можно получить при экспорте таблицы для написания скриптов

          Dim dtMain As New DataTable

           dtMain.ReadXml(Application.StartupPath & "\sf_table4script.xml")

 

          'Замените FillObject на соответствующее обозначение колонки для которой Вы пишете скрипт.

          Dim sCurrentColumn As String = "FillObject"

          Dim pCurrentColumn As DataColumn = dtMain.Columns.Item(sCurrentColumn)

 

          For Each pCurrentRow As DataRow In dtMain.Rows

              Me.SFScriptExecute(dtMain, pCurrentRow, pCurrentColumn)

          Next

 

          Return dtMain

      End Function

 

      '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 IDDimension As Long = CommonLibrary.SF.Convert.ToLong(pCurrentRow("IDDimension")) ' Единица измерения объема/количества

          Dim MaterialEntity_iVolumeSmeta As Decimal = CommonLibrary.SF.Convert.ToDecimal(pCurrentRow("MaterialEntity_iVolumeSmeta")) ' Объем/количество поступления

          Dim CoveredWorkMaterial_iVolumeSmeta As Decimal = CommonLibrary.SF.Convert.ToDecimal(pCurrentRow("CoveredWorkMaterial_iVolumeSmeta")) ' Объем/количество расхода

          Dim CustomCol__16 As String = CommonLibrary.SF.Convert.ToString(pCurrentRow("CustomCol__16")) ' Остаток ресурса

 

 

          Select Case iObjectType

              Case eObjectType.tBaseClassObject

                  Dim pDT As DataTable = dtMain.Clone

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

 

                  Dim Summa4_MaterialEntity_iVolumeSmeta As Decimal = 0

                  Dim Summa4_CoveredWorkMaterial_iVolumeSmeta As Decimal = 0

 

                  For Each row As DataRow In pDT.Rows

                      Dim iVolumePostuplenie As Decimal = CommonLibrary.SF.Convert.ToDecimal(row("MaterialEntity_iVolumeSmeta")) ' Объем/количество расхода

                      Dim iVolumeRashod As Decimal = CommonLibrary.SF.Convert.ToDecimal(row("CoveredWorkMaterial_iVolumeSmeta")) ' Объем/количество расхода

                       Summa4_MaterialEntity_iVolumeSmeta += iVolumePostuplenie

                       Summa4_CoveredWorkMaterial_iVolumeSmeta += iVolumeRashod

                  Next

 

                   pCurrentRow("MaterialEntity_iVolumeSmeta") = Summa4_MaterialEntity_iVolumeSmeta

                   pCurrentRow("CoveredWorkMaterial_iVolumeSmeta") = Summa4_CoveredWorkMaterial_iVolumeSmeta

                   pCurrentRow("CustomCol__16") = GetVolumeAsString(Summa4_MaterialEntity_iVolumeSmeta - Summa4_CoveredWorkMaterial_iVolumeSmeta)

          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

 

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

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

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

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

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

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

Номер записи

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

Статус записи

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

Дата поступления и расхода

Типовая колонка: Общие даты: Начало, общее

Единица измерения объема/количества

Типовая колонка: Общие объемы и цены: Единица измерения объема/количества, общая

Объем/количество поступления

Типовая колонка: Поступление ресурса: Количество, ресурса

Объем/количество расхода

Типовая колонка: Расход ресурса: Количество, расхода ресурса

Остаток ресурса

Вычисляемая колонка

Единица измерения стоимости, поступления и расхода

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

Цена за единицу объема, поступления и расхода

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

Стоимость поступления и расхода

Типовая колонка: Общие объемы и цены: Стоимость сметная, общая

 

Рис. 1505

Рис. 1505

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

Для расчета количество расхода по ресурсу в колонке "Объем/количество расхода" выберите язык написания скрипта.

Рис. 1506

Рис. 1506

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

 

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

 

      'SFScriptExecuteTester - функция тестирования скрипта SFScriptExecute()

      Public Function SFScriptExecuteTester() As DataTable

          'Файл sf_table4script.xml можно получить при экспорте таблицы для написания скриптов

          Dim dtMain As New DataTable

           dtMain.ReadXml(Application.StartupPath & "\sf_table4script.xml")

 

          'Замените FillObject на соответствующее обозначение колонки для которой Вы пишете скрипт.

          Dim sCurrentColumn As String = "FillObject"

          Dim pCurrentColumn As DataColumn = dtMain.Columns.Item(sCurrentColumn)

 

          For Each pCurrentRow As DataRow In dtMain.Rows

              Me.SFScriptExecute(dtMain, pCurrentRow, pCurrentColumn)

          Next

 

          Return dtMain

      End Function

 

 

      '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 IDDimension As Long = CommonLibrary.SF.Convert.ToLong(pCurrentRow("IDDimension")) ' Единица измерения объема/количества

          Dim MaterialEntity_iVolumeSmeta As Decimal = CommonLibrary.SF.Convert.ToDecimal(pCurrentRow("MaterialEntity_iVolumeSmeta")) ' Объем/количество поступления

          Dim CoveredWorkMaterial_iVolumeSmeta As Decimal = CommonLibrary.SF.Convert.ToDecimal(pCurrentRow("CoveredWorkMaterial_iVolumeSmeta")) ' Объем/количество расхода

          Dim CustomCol__16 As String = CommonLibrary.SF.Convert.ToString(pCurrentRow("CustomCol__16")) ' Остаток ресурса

 

 

          Select Case iObjectType

              Case eObjectType.tMaterialEntity

                  Dim pDT As DataTable = dtMain.Clone

                   GetChildRowsClone(dtMain, ID, pDT, eObjectType.tCoveredWorkMaterial)

 

                  Dim Summa4_CoveredWorkMaterial_iVolumeSmeta As Decimal = 0

 

                  For Each row As DataRow In pDT.Rows

                      Dim iVolumeSmeta As Decimal = CommonLibrary.SF.Convert.ToDecimal(row("CoveredWorkMaterial_iVolumeSmeta")) ' Объем/количество расхода

                       Summa4_CoveredWorkMaterial_iVolumeSmeta += iVolumeSmeta

                  Next

 

                   pCurrentRow("CoveredWorkMaterial_iVolumeSmeta") = Summa4_CoveredWorkMaterial_iVolumeSmeta

          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

 

Сохраните изменения в пресете. Для расчета остатка ресурса в колонке "Остаток ресурса" выберите язык написания скрипта.

Рис. 1507

Рис. 1507

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

 

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

 

      'SFScriptExecuteTester - функция тестирования скрипта SFScriptExecute()

      Public Function SFScriptExecuteTester() As DataTable

          'Файл sf_table4script.xml можно получить при экспорте таблицы для написания скриптов

          Dim dtMain As New DataTable

           dtMain.ReadXml(Application.StartupPath & "\sf_table4script.xml")

 

          'Замените FillObject на соответствующее обозначение колонки для которой Вы пишете скрипт.

          Dim sCurrentColumn As String = "FillObject"

          Dim pCurrentColumn As DataColumn = dtMain.Columns.Item(sCurrentColumn)

 

          For Each pCurrentRow As DataRow In dtMain.Rows

              Me.SFScriptExecute(dtMain, pCurrentRow, pCurrentColumn)

          Next

 

          Return dtMain

      End Function

 

 

      '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 IDDimension As Long = CommonLibrary.SF.Convert.ToLong(pCurrentRow("IDDimension")) ' Единица измерения объема/количества

          Dim MaterialEntity_iVolumeSmeta As Decimal = CommonLibrary.SF.Convert.ToDecimal(pCurrentRow("MaterialEntity_iVolumeSmeta")) ' Объем/количество поступления

          Dim CoveredWorkMaterial_iVolumeSmeta As Decimal = CommonLibrary.SF.Convert.ToDecimal(pCurrentRow("CoveredWorkMaterial_iVolumeSmeta")) ' Объем/количество расхода

          Dim CustomCol__16 As String = CommonLibrary.SF.Convert.ToString(pCurrentRow("CustomCol__16")) ' Остаток ресурса

 

 

          Select Case iObjectType

              Case eObjectType.tMaterialEntity

                   pCurrentRow("CustomCol__16") = GetVolumeAsString(MaterialEntity_iVolumeSmeta - CoveredWorkMaterial_iVolumeSmeta)

          End Select

 

          Return Nothing

      End Function

  End Class

End Namespace

 

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

Рис. 1508

Рис. 1508

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

Рис. 1509

Рис. 1509

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

Рис. 1510

Рис. 1510

Сохраните изменения в пресете. Добавьте колонку для вывода информации по объекту поступления ресурса

Рис. 1511

Рис. 1511

Сохраните изменения в пресете. Настройте фильтры по фактическому поступлению ресурса как показано на рис. 1512

Рис. 1512

Рис. 1512

Сохраните изменения в пресете. Настройте фильтры по фактическому расходу ресурса

- для строк как показано на рис. 1513

Рис. 1513

Рис. 1513

- для колонок как показано на рис. 1514

Рис. 1514

Рис. 1514

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

Рис. 1515

Рис. 1515

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

Рис. 1516

Рис. 1516

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

Рис. 1517

Рис. 1517

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

Рис. 1518

Рис. 1518

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

Рис. 1519

Рис. 1519

 

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

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

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

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

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

 



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