Изменение разрядности чисел в количестве ТМЦ

1. konkeror 05.06.12 21:59 Сейчас в теме
Здравствуйте, прошу знающим людям помочь. У меня установленна 1с 7,7 торговля и склад. Помогите настроить нужным образом разрядность чисел в количестве тмц в печатной форме "перемещение тмц". Фирма занимается продажей стройматериалов. В остатках тмц у нас есть и дробные и целые числа, так обои исчесляются в рулонах, кафель и ламинат в метрах квадратных, а плинтус в погонных метрах. Чтобы указать точное значение остатков ламината требуется пять знаков после запятой, плинтуса - один знак. Нужно избавиться от лишних нулей в печатной форме "перемещение тмц", то есть чтобы выводились и целые чилсла без нулей и полные дробные. Например: получить из 1,00000рул-1рул; 2,50000п.м-2,5п.м; и просто 0,26634 м.кв
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
8. konkeror 09.06.12 19:55 Сейчас в теме
Чесно говоря, я в этом деле новичек. Вот модуль моей печатной формы:
//******************************************************************************
// Печать(Докум)
//
// Параметры:
// Нет
//
// Возвращаемое значение:
// Нет
//
// Описание:
//
Процедура Печать(Докум, Устройство=0, КолвоКопий=1)

Перем НачПовт, КонПовт;

Если Докум.Проведен() = 0 Тогда
Предупреждение("Документ может быть распечатан только после проведения", 60);
Возврат;
КонецЕсли;

ИсхТабл = СоздатьОбъект("Таблица");
ЭтоПеремещениеВРозницу = ?(Докум.СкладПолучатель.РозничныйСклад = 1, 1, Докум.Склад.РозничныйСклад);
Если ЭтоПеремещениеВРозницу = 1 Тогда
ИсхТабл.ИсходнаяТаблица("ВРозницу");
КонецЕсли;
НачПовт = 0; КонПовт = 0;

// секция Заголовок

ИсхТабл.ВывестиСекцию("Заголовок");
НачПовт = НачПовт + ИсхТабл.ВысотаСекции("Заголовок");

// Секция Организация
Организация = СокрЛП(Докум.Фирма.ЮрЛицо.ПолнНаименование) + " " + глПредставлениеАдреса(Докум.Фирма.ЮрЛицо.ЮрАдрес);
ИсхТабл.ВывестиСекцию("Организация");
НачПовт = НачПовт + ИсхТабл.ВысотаСекции("Организация");


// Секция Шапка таблицы
ИсхТабл.ВывестиСекцию("ШапкаТаблицы");
КонПовт = НачПовт + ИсхТабл.ВысотаСекции("ШапкаТаблицы");
ИсхТабл.ПовторятьПриПечатиСтроки(НачПовт + 1, КонПовт);

Если ЭтоПеремещениеВРозницу = 0 Тогда

ТабДвиж = СоздатьОбъект("ТаблицаЗначений");
ТабДвиж.НоваяКолонка("Номенклатура");
ТабДвиж.НоваяКолонка("Количество");
ТабДвиж.НоваяКолонка("Сумма");

// сформируем таблицу с учетными цена из движений документа по регистру ПартииНаличие.
РегПартии = СоздатьОбъект("Регистр.ПартииНаличие");

РегПартии.ВыбратьДвиженияДокумента(Докум.ТекущийДокумент());
Пока РегПартии.ПолучитьДвижение() = 1 Цикл
Если РегПартии.Расход = 1 Тогда
ТабДвиж.НоваяСтрока();
ТабДвиж.Номенклатура = РегПартии.Номенклатура;
ТабДвиж.Количество = РегПартии.Количество;
ТабДвиж.Сумма = РегПартии.СуммаБезНДС;
КонецЕсли;
КонецЦикла;
КонецЕсли;

// выводим строки документа
ВсегоСумма = 0;
НомСтроки = 0;

Докум.ВыбратьСтроки();
Пока Докум.ПолучитьСтроку() = 1 Цикл

Если ЭтоПеремещениеВРозницу = 0 Тогда

КолвоДок = Докум.Количество;
Поз = 0;

Пока (КолвоДок > 0) // есть что погашать
и (ТабДвиж.НайтиЗначение(Докум.Номенклатура, Поз, "Номенклатура") <> 0) // есть чем погашать
Цикл
КолвоРег = ТабДвиж.ПолучитьЗначение(Поз, "Количество");
СуммаРег = ТабДвиж.ПолучитьЗначение(Поз, "Сумма");

// преобразуем количество из регистра (в базовой единице)
// в единицу из строки документа
Если Докум.Коэффициент <> 0 Тогда
КолвоРег = КолвоРег / Докум.Коэффициент;
КонецЕсли;

КолвоПеч = Мин(КолвоДок, КолвоРег);

// пытаемся уменьшить потерю точности,
// поэтому сначала считаем сумму, а только потом цену
СуммаПеч = СуммаРег * КолвоПеч / КолвоРег;
ЦенаПеч = ?(КолвоПеч = 0, СуммаПеч, СуммаПеч / КолвоПеч);


ОстРег = КолвоРег - КолвоПеч;
Если ОстРег <= 0 Тогда
// количество из движений регистра полностью погасилось количеством из накладной
// удалим строку таблицы значений
ТабДвиж.УдалитьСтроку(Поз);
Иначе
// количество движений регистра оказалось больше, чем количество документа
ТабДвиж.УстановитьЗначение(Поз, "Количество", ОстРег * Докум.Коэффициент);
ТабДвиж.УстановитьЗначение(Поз, "Сумма" , СуммаРег - СуммаПеч);
КонецЕсли;

НомСтроки = НомСтроки + 1;
ИсхТабл.ВывестиСекцию("Строка");

// уменшаем непогашенное количество из строки документа
КолвоДок = КолвоДок - КолвоПеч;

// вычисляем итоги
ВсегоСумма = ВсегоСумма + СуммаПеч;

Поз = 0;
КонецЦикла;

Если КолвоДок > 0 Тогда
// по регистру прошло не все количество, которое было в докмуенте

КолвоПеч = КолвоДок;
СуммаПеч = 0;
ЦенаПеч = 0;

НомСтроки = НомСтроки + 1;
ИсхТабл.ВывестиСекцию("Строка");

КонецЕсли;

Иначе // ЭтоПеремещениеВРозницу = 1

НомСтроки = НомСтроки + 1;
ИсхТабл.ВывестиСекцию("Строка");

// Вычисляем итоги
ВсегоСумма = ВсегоСумма + Докум.Сумма;
КонецЕсли;

КонецЦикла;

ИсхТабл.ВывестиСекцию("Итого");
ИсхТабл.ВывестиСекцию("СуммаПрописью");
ИсхТабл.ВывестиСекцию("Подписи");

Если Устройство = 0 Тогда
ИсхТабл.Опции(0,0,0,0,"ОпцииПечатиПеремещениеТМЦ");
Если глПолучитьПолномочие("РазрешитьРедактированиеТаблиц") = 0 Тогда
ИсхТабл.ТолькоПросмотр(1);
Иначе
ИсхТабл.ТолькоПросмотр(0);
КонецЕсли;
ИсхТабл.Показать(глНазваниеДокументаВжурнале(Докум),"");
Иначе
ИсхТабл.ПараметрыСтраницы(,,,,,,,,,1,,);
ИсхТабл.КоличествоЭкземпляров(КолвоКопий);
ИсхТабл.Напечатать(0);
КонецЕсли;

КонецПроцедуры // Печать()


//******************************************************************************
// ПоКнопкеПечать()
//
// Параметры:
// Нет
//
// Возвращаемое значение:
// Нет
//
// Описание:
//
Процедура ПоКнопкеПечать()

Если Док.Выбран() = 0 Тогда
Предупреждение("Не выбран документ!", 60);
Возврат;
КонецЕсли;

Печать(Док);

КонецПроцедуры // ПоКнопкеПечать()

//******************************************************************************
// Предопределенная процедура
//
Процедура ПриОткрытии()

Если ПустоеЗначение(Форма.Параметр) = 0 Тогда

Докум = Форма.Параметр.Получить("Контекст");
Устройство = Форма.Параметр.Получить("Устройство");
КолвоКопий = Форма.Параметр.Получить("КоличествоКопий");

Печать(Докум, Устройство, КолвоКопий);
Статусвозврата(0);
Возврат;
КонецЕсли;

КонецПроцедуры // ПриОткрытии()
9. volodya1122 8 09.06.12 22:16 Сейчас в теме
(8) Не в модуле, а на самой печатной форме, там где проставляется это Ваше количество. Правда у Вас может быть несколько печатных форм. нужно опытным путем узнать какая из них используется. Напишите в "шапке" какой то текст и посмотрите какая из печатных форм отобразит текст (потом не забудьте вернуть все назад). И в найденной печатной форме сделайте так как я написал.
НАСТОЯТЕЛЬНО РЕКОМЕНДУЮ СНАЧАЛА ВСЕ ЭТО ПРОДЕЛАТЬ НА КОПИИ БАЗЫ!!!!
12. konkeror 10.06.12 19:30 Сейчас в теме
(9) volodya1122,
Вас понял щас попробую
2. volodya1122 8 05.06.12 22:36 Сейчас в теме
я так понял у Вас в документе установлено для количества 5 знаков дробной части. Если все настроено правильно и по регистрах проводится(перемещается) товар действительно с пятью знаками после запятой, тогда мой первый вопрос снимается (который я хотел задать)- правильно ли все проводится/перемещается (в количественном измерении).
Теперь насчет отбрасывания нулей справа на печатной форме. У вас в Печатной форме наверное явно указано сколько печатать чисел после запятой. Может что-то такое:
Формат(Количество,"Ч14.5") 

Напишите проще:
Число(Количество)

Тогда у числа автоматически уберутся лишние нули справа до первого ненулевого значения.
7. konkeror 09.06.12 19:51 Сейчас в теме
(2) volodya1122, (2) volodya1122, (2) volodya1122,
здравствуйте. В модуле печатной формы ничего похожего (Формат(Количество,"Ч14.5")) я не обнаружил.
3. Harry_udm 2 05.06.12 22:48 Сейчас в теме
В глобальном модуле есть функция
Функция глФРМКоличество(Знач ЧислЗнач,Единица="", РаздТриад=" ") Экспорт
Она отвечает за вывод количества в печатных формах.
Формируемая строка печати
Стр=СокрЛ(Формат(ЧислЗнач,"Ч015.3." + РаздТриад));
Вот с ней и надо экспериментировать.
4. Oracll 06.06.12 01:45 Сейчас в теме
Можете в табличной части сразу форматирование использовать:

Количество#Ч15.3
5. swi76 06.06.12 02:57 Сейчас в теме
Можно еще так

Количество #Ч15.3. после точки можно маоставить пробел тогда отображатся бутет так 15 665.34 если пробел нре ставить то так 15665.34
Если написать #Количество #Ч15.3- то так 15 665-34
6. volodya1122 8 06.06.12 10:35 Сейчас в теме
Народ, вы читали сообщение, что нужно автору? Ему нужно отбрасывать лишние нули справа в дробной части числа. причем в разных строках может быть разное количество знаков после запятой.
10. MakNat 3 09.06.12 22:42 Сейчас в теме
выводите просто числа без формата, правда скорее всего надо будет обрабатывать дробную часть что бы не получить 0,23648897787987
11. gregf 09.06.12 22:49 Сейчас в теме
В таблицах с макетами "Таблица" и "ВРозницу" в свойствах ячейки с количеством на закладке "Текст" уберите вызов глФРМКоличество, т.е. вместо глФРМКоличество(Докум.Количество) оставьте Докум.Количество (табл. ВРозницу) и вместо глФРМКоличество(КолвоПеч) оставьте КолвоПеч (табл. Таблица).
13. konkeror 10.06.12 20:05 Сейчас в теме
Вот смотрите, файл PEREMES.EFD в папке PRNFORMS, подчинен докемунту "перемещение ТМЦ" его я чуть чуть отредактировал - убрал ненужные столбцы и строки, ее функции я не повредил. Все работает хорошо. Щас только нули лишние выдает. Вообщем я попробывал: конфигуратор - открыть PEREMES.EFD, вкладка таблица. В ячейке количества прописано "глФРМКоличество(КолвоПеч)". То, что Вы имеете в виду я уже читал на этом или другом форуме в похожей теме, только по разрядам в цене. Так и не нашел эти строки.
14. konkeror 10.06.12 20:45 Сейчас в теме
уррра, получилось спасибо всем вам. Сделал так как написал товарищ gregf
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот