Вопрос

Сумма сумм в печатной форме

Добрый день!

Столкнулся с задачей следующего характера:

Имеются 2 детали, по обоим надо посчитать сумму и выдать в печатную форму итоговую сумму. Можно ли это как-то компактно реализовать или только созданием дополнительного поля в которое и будет писаться эта сумма? 

Пример: В первой детали услуги на сумму в 100р, во второй детали материалы на 200р. В итоге, в печатной форме я увижу 300р.

У меня такой же вопрос

6 комментариев
Лучший ответ

Быстров Сергей пишет:

Да, верно, вы передаете в макрос параметр по которому хотите найти ваши значения. Делаете 2 выборки, одну из таблицы А и вторую из таблицы Б, суммируете их между собой, а затем result = А + Б;
return result; = это значение вернется в место вызова на самой печатной форме. Могу сбросить примеры

Если делаете в Word, то воспользуйтесь макросами и за 5 минут решите вашу проблему
https://academy.terrasoft.ua/documents/technic-sdk/7-13/kak-sozdat-makr…

Литвинко Павел,

Интересное решение, но текущих примеров недостаточно. Я правильно понимаю, что в моем случае я буду вытаскивать в печатную форму ID обращения (к которому подключены 2 детали), а потом искать в макросе эту самую сумму путем перебора?

Быстров Сергей пишет:

Да, верно, вы передаете в макрос параметр по которому хотите найти ваши значения. Делаете 2 выборки, одну из таблицы А и вторую из таблицы Б, суммируете их между собой, а затем result = А + Б;
return result; = это значение вернется в место вызова на самой печатной форме. Могу сбросить примеры

namespace Terrasoft.Configuration
{
    using System;
    using System.CodeDom.Compiler;
    using System.Collections.Generic;
    using System.Data;
    using System.Linq;
    using System.Runtime.Serialization;
    using System.ServiceModel;
    using System.ServiceModel.Web;
    using System.ServiceModel.Activation;
    using System.Text;
    using System.Text.RegularExpressions;
    using System.Web;
    using Terrasoft.Common;
    using Terrasoft.Core;
    using Terrasoft.Core.DB;
    using Terrasoft.Core.Entities;
    using Terrasoft.Core.Packages;
    using Terrasoft.Core.Factories;
 
    [ExpressionConverterAttribute("Название макроса по которому будете вызывать его из печатной формы")]
    class CurrentDateConveter : IExpressionConverter
    {
        private UserConnection _userConnection;
 
        public string Evaluate(object value, string arguments = "")
        {
            try
            {
                _userConnection = (UserConnection)HttpContext.Current.Session["UserConnection"];
                Guid paramId = new Guid(value.ToString());
                return GetAmount(_userConnection, paramId);
            }
            catch (Exception err)
            {
                return err.Message;
            }
        }
        private string GetAmount(UserConnection userConn, Guid value)
        {
            string result = "";
            EntityCollection collection1 = GetEntity(userConn, "Таблица", "Колонка для фильтра", value.ToString());
            EntityCollection collection2 = GetEntity(userConn, "Таблица2", "Колонка для фильтра", value.ToString());
            foreach (var entity in collection1)
            {
               // var recCol1 = Посчитали сумму
            }
            foreach (var entity in collection2)
            {
                // var recCol2 = Посчитали сумму
            }
            result = recCol1 + recCol2;
            return result;
        }
        private EntityCollection GetEntity(UserConnection userConn, string schemaName, string filterColumnName, string filterValue)
        {
            var esq = new EntitySchemaQuery(userConn.EntitySchemaManager, schemaName);
            esq.AddAllSchemaColumns();
            esq.Filters.Add(esq.CreateFilterWithParameters(
                FilterComparisonType.Equal,
                filterColumnName,
                filterValue));
            var entityCollection = esq.GetEntityCollection(userConn);
            return entityCollection;
        }
    }
}

 

Литвинко Павел,

Неловкий вопрос - result  в данном случае строка, а у меня же это сумма. Или я чего-то не понимаю? Да и сумма у меня дробная. 

В итоге получилось вот так:
 

private string GetAmount(UserConnection userConn, Guid value)
{
	EntityCollection collection1 = GetEntity(userConn, "UsrPrice", "UsrWorkObr", value.ToString());
	EntityCollection collection2 = GetEntity(userConn, "UsrMaterialCost", "UsrCase", value.ToString());
	float recCol1 = 0;
	float recCol2 = 0;
	foreach (var entity in collection1)
	{
		recCol1 = float.Parse(entity.GetTypedColumnValue<string>("UsrCostSummVAT")) + recCol1;
	}
	foreach (var entity in collection2)
	{
		recCol2 = float.Parse(entity.GetTypedColumnValue<string>("UsrCostSumm")) + recCol2;
	}
	return (recCol1 + recCol2).ToString("R");
}

 

Войдите или зарегистрируйтесь, чтобы комментировать