Word
отчет
сумма прописью
Отчёты
Разработка

Есть в TS замечательная функция - сумма прописью. А как ее результат вставить в Word-отчет? Создавать много лишних полей в таблице не хотелось бы.

Спасибо за идеи!

Нравится

9 комментариев

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

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

Добрый день!

Мне кажется, оба приведённых примера несколько выходят за рамки основного предназначения механизма пользовательских запросов и отчётов. В первую очередь они выполняют задачу создания отчёта на основании имеющихся в таблицах БД данных без каких-либо навыков программирования (простым перетаскиванием колонок таблицы). В Ваших же примерах без программирования не обойтись в любом случае.

Думаю, обе эти задачи, а также много других, решила бы реализация в пользовательском запросе CustomSQL-колонки. Предлагаю создать соответствующую идею, и если она получит достаточную поддержку, думаю, её реализуют в базовой версии. Пока же придётся для подобных задач либо создавать дополнительное поле в таблице, либо не использовать для построения отчёта пользовательские запросы, а строить отчёт в своём скрипте, как это было в версиях до 3.2.0.

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

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

Подскажите пожалуйста, как вывести число прописью (без копеек, гривен и прочего) а просто число к примеру 26 как (двадцать шесть)
ValueStrRUR = AmountToStr(ValueStr, 'ru', 'RUB');
только изменяя функцию Convert_utils и добавляя в нее нужное ???

Попробуйте так:
[javascript]
var s = new String(AmountToStr(ValueStr, 'ru', 'RUB'));
s = s.substr(0, s.indexOf(' руб'));
[/javascript]

Спасибо огромное, то что нужно!

а как оставить сумму с рублями, без копеек?

Здравствуйте, Вениамин.

Попробуйте сделать так:

[javascript]
if (Str.indexOf('руб') != -1) {
var StrTemp = Str.substr(Str.indexOf('руб'),Str.length);
if (StrTemp.indexOf(' ') !=-1){
var Kop = StrTemp.substr(StrTemp.indexOf(' '),StrTemp.length);
Str = Str.substr(0, Str.indexOf(Kop));
}
}
else Str = "";
[/javascript]

Инна Безверхняя,
II линия службы поддержки Terrasoft.

Показать все комментарии
накладная
сумма прописью
Отчёты
Разработка

Добрый день. У меня возникла необходимость создать отчет по накладной. В нём нужно писать цифры прописью, причем, если у меня дробное число, чтобы дробная часть тоже писалась буквами. Например, 12.128 писалось бы как Двенадцать т. Сто двадцать восемь кг. Может кто-нибудь сталкивался с подобной проблемой и может предложить её решение?

Нравится

4 комментария

А чтобы изменить рубли на тонны или кг, мне нужно немного модифицировать функцию ???

"Vichka" написал:немного модифицировать

ну в общем да:wink:

Спасибо за ответы, буду пробовать

Показать все комментарии
отчет
сумма прописью
функция
Отчёты
Разработка

При разработке отчета возникла следующая проблемма. В отчет выводится таблица с цифровой и текстовой информацией. Колонка таблицы, где содержатся цифры, суммируется по строкам и эта сумма печатается прописью. Попытка использовать функцию AmountToStr() в датасете не увенчалась успехом, так как итоговая сумма по колонке подсчитывается уже в самом отчете. Подскажите пожалуйста, как решить эту проблему.

Нравится

6 комментариев

Самым быстро реализуемым, но не самым элегантным решением будет подсчет итога в самом наборе данных.

Спасибо.А пример скрипта можно привести.

Подсчет суммы можно выполнить с помощью подзапроса или вычисляемых полей.
В другое вычисляемое поле записать значение функции AmountToStr().
Привожу наброски кода для подсчета суммы.

[javascript]
var DatasetObject = new Object;

function ds_ReportInvoicesByPeriodOnDatasetCalcFields(Dataset) {
Dataset.DisableEvents();
if (!DatasetObject.IsCalculated) {
var SumDataset = Dataset;
SumDataset.GotoFirst();
var Sum = 0;
while (!SumDataset.IsEOF) {
Sum = Sum + SumDataset('BasicAmount');
SumDataset.GotoNext();

}
var StringSum = Sum.toString()
DatasetObject.IsCalculated = true;
var Result = AmountToStr(StringSum, 'ru', 'UAH');
Dataset.Values('Sum') = Result;
}
Dataset.EnableEvents();
}
[/javascript]

При использовании указанного кода, поле "Sum" не удается вывести в отчет. Не в DetailData, не в Footer. Либо выдает ошибку "Невозможно изменить значение вычисляемого поля", либо выводит в таблице только одну строчку.

Ну наброски "почти" работающими были :)
Замените
[javascript]
var Dataset = Dataset;
[/javascript]
на
[javascript]
var Dataset = Dataset.SelectQuery.Open();
[/javascript]
Думаю, причина ошибки "Невозможно изменить значение вычисляемого поля" была в состоянии набора данных в событии OnCalcDataFields. Точнее смогут ответить сотрудники поддержки.

Повторюсь метод не претендует на элегантность.
[javascript]
var DatasetObject = new Object;

function ds_ReportInvoicesByPeriodOnDatasetCalcFields(Dataset) {
Dataset.DisableEvents();
if (!DatasetObject.IsCalculated) {
// SumDataset = Dataset; - неправильное копирование
var SumDataset = Dataset.SelectQuery.Open();
SumDataset.GotoFirst();
var Sum = 0;
while (!SumDataset.IsEOF) {
Sum = Sum + SumDataset('BasicAmount');
SumDataset.GotoNext();
}
var StringSum = Sum.toString()
DatasetObject.IsCalculated = true;
var Result = AmountToStr(StringSum, 'ru', 'UAH');
Dataset.Values('Sum') = Result;
}
Dataset.EnableEvents();
}
[/javascript]

Спасибо за помощь. Все заработало.

Показать все комментарии