Как изменить количество разрядов в поле табличной части документов

1. newborn 09.12.16 17:12 Сейчас в теме
Сильно переделанная конфа.
В ППВ табличной части расшифровка платежа есть реквизит Курс. В конфигураторе добавили количество разрядов в это поле. Но на форме количество разрядов должно зависить от значения константы. Никак не могу это сделать. Пробовал через условное оформление. Не получилось.
Что я делаю не так?
По теме из базы знаний
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
3. lefthander 10.12.16 12:08 Сейчас в теме
(1)можно попробовать завести реквизит ТЧ курса с другой разрядностью, и показывать на форме в зависимости от константы нужную колонку. Это конечно костыль, но в чем смысл разной разрядности? можно курс в зависимости от константы округлять до нужного разряда, тогда оставшиеся разряды будут нулевые.
4. newborn 10.12.16 12:49 Сейчас в теме
(3)
Ню, буду иметь в виду такое решениее. Хотя, конечно, это некрасиво и может потребовать допонительного кода, если от содержания поля Курс может зависеть другие реквизиты.
5. alxarz 31 10.12.16 15:43 Сейчас в теме
(4) так у этого поля же есть свойство формат - меняйте его и будет нужное количество знаков отображаться
6. newborn 10.12.16 17:52 Сейчас в теме
(5)
Вот я попробовал. Нифига. Есть примеры кода?
7. lefthander 10.12.16 18:21 Сейчас в теме
(6)учитывая совет из (4) можно попробовать на форме реквизит создать и управлять разрядностью через константу, и писать курс в реквизит объекта.
8. alxarz 31 10.12.16 21:07 Сейчас в теме
(6) а) если менять через конфигуратор - изменения происходят?
б) после того как пробовали менять, вызывали что-то типа форма.обновить() ?
9. newborn 10.12.16 21:53 Сейчас в теме
(8)
И из конфигуратора тоже пробовал. А вот из меню формы [Изменить форму]. Получилось. Но - получилось насовсем. Я там изменил разрядность. Но это не то, что нужно, ибо непрограммно, а ручками...
11. starik-2005 3033 10.12.16 23:43 Сейчас в теме
(1) есть у поля такая штука, как ограничение типа.
karpik666; +1 Ответить
13. newborn 11.12.16 12:44 Сейчас в теме
(11)
И как эта штука влияет на мою задачу?
2. newborn 10.12.16 11:01 Сейчас в теме
10. as 10.12.16 22:51 Сейчас в теме
Что вы в константе собираетесь ставить и какой тип?
Обычно проблема с недостаточной разрядностью решается указанием кратности курса валюты. В каждой валюты может быть своя кратность, притом может меняться с течением времени.
12. newborn 11.12.16 12:43 Сейчас в теме
(10)
Нет, константа булева. Клиент сформулировал задачу так: нужно увеличить разрадность поля Курс и по константе изменять видимость разрядов на форме. Все два возможных состояния.
14. newborn 13.12.16 16:08 Сейчас в теме
Блин, так ничего и не получилось. Изменить разрядность числа в поле табличной части на управляемой форме не получается. Релиз платформы 8.3.8.1933
16. starik-2005 3033 13.12.16 17:26 Сейчас в теме
(14) а что не так с ограничением типа?
Прикрепленные файлы:
18. newborn 13.12.16 17:34 Сейчас в теме
(16)
Код дай. У меня не получилось.
19. starik-2005 3033 13.12.16 17:41 Сейчас в теме
(18) ну попробуй сам. Фактически тебе в элемент формы нужно записать ограничение типа, и если это табличная часть, то в свойство "формат" элемента нужно записать соответствующую форматную строку. Типа если константа = истина тогда элемент.ограниченитипа = ...; элемент.формат = "..." иначе ...
21. newborn 13.12.16 17:52 Сейчас в теме
(19)
Дык я пробовал так. В том-то и дело, что не получилось.
22. spacecraft 13.12.16 18:05 Сейчас в теме
(21) чтобы в табличной части сработало, нужно установить формат, причем на сервере. Если делать на клиенте, то требуется ОбновитьИнтерфейс.
Разрядность = 15;
РазрядностьДробнойЧасти = 5;
Элементы.ИмяТЧНаФорме.ПодчиненныеЭлементы.ИмяТЧНаФормеИмяКолонки.Формат = "ЧЦ="+Разрядность +"; ЧДЦ="+РазрядностьДробнойЧасти;
23. newborn 13.12.16 18:08 Сейчас в теме
26. starik-2005 3033 13.12.16 18:43 Сейчас в теме
(23) и стоит иметь ввиду, что при изменении разрядности если не использовать ограничения типа, то будет так:
Прикрепленные файлы:
24. starik-2005 3033 13.12.16 18:35 Сейчас в теме
(22) зачем так много точек-то?
Элементы.ТаблицаЧисло1.Формат = "...";
И, да... У меня все и на клиенте работает.
Прикрепленные файлы:
25. spacecraft 13.12.16 18:37 Сейчас в теме
(24) согласен. Но суть от этого не меняется.
27. spacecraft 13.12.16 18:53 Сейчас в теме
(24) для самого документа с его ТЧ работает и на клиенте.
Я пробовал во внешней обработке, со ссылкой. Там и требовался сервер.
28. starik-2005 3033 13.12.16 19:36 Сейчас в теме
(27) тоже это во внешней обработке делал - сервер дергать оказалось не нужно. Платформа 8.3.9.какая-то-там.
29. spacecraft 13.12.16 19:47 Сейчас в теме
(28) потому что ТЧ самой обработки. Я же использовал ссылку. И ТЧ на форме была от ссылки.
17. starik-2005 3033 13.12.16 17:31 Сейчас в теме
(14) с табличной частью то же самое + формат.
15. SGordon1 13.12.16 16:15 Сейчас в теме
3 сообщение по моему Ваш случай... А программно добавить в ТЧ свою колонку не получится?
20. newborn 13.12.16 17:50 Сейчас в теме
(15) Разрядность поля табличной части зависит только от количества знаков после запятой в описании этого поля в конфигураторе. Во вском случае я это проверял на платформе 8.3.8.1933.
30. karpik666 3760 13.12.16 20:07 Сейчас в теме
Жесть какая-то, а чем такой код не устраивает?
Элементы.Реквизит1.ОграничениеТипа = Новый ОписаниеТипов("Число",,,Новый КвалификаторыЧисла(Разрядность,РазрядностьДробнойЧасти));

Все прекрасно работает на клиенте, а что константа была доступна на клиенте ее можно поместить в параметры сеанса, либо при создании формы получать, и кэшировать ее значение.
31. spacecraft 13.12.16 20:14 Сейчас в теме
(30) без Формат для табличной части не изменится отображение.
32. karpik666 3760 13.12.16 20:42 Сейчас в теме
(31) что-то такого не помню, ну если так. то что мешает использовать команду "Обновить" для конкретного элемента формы, а не с помощью "ОбновитьИнтерфейс"?
33. spacecraft 13.12.16 20:50 Сейчас в теме
(32) да как бы уже определились. Для родной ТЧ все работает.
Не хочу повторяться. Лучше еще раз перечитать все сообщения.
34. newborn 03.01.17 00:24 Сейчас в теме
Выбрал время, чтобы проверить всё. (Делать нефиг на праздники, да?!)
Так вот, всё, что вы мне посоветовали действительно работает, когда речь идёт о таблице на форме или о табличной части внешней обработки. Для документа это не действует. Или действует не совсем. На рисунке видно, что если начинаешь редактировать элемент, то Формат и ОграничениеТипа срабатывает.
Код применил вот такой

	Если _аКонстатнта Тогда
	
		Разрядность = 6;
		РазрядностьДробнойЧасти = 1;
		Элементы.Товары.ПодчиненныеЭлементы.ТоварыКоличество.ОграничениеТипа = Новый ОписаниеТипов("Число",,,Новый КвалификаторыЧисла(Разрядность,РазрядностьДробнойЧасти));
		Элементы.Товары.ПодчиненныеЭлементы.ТоварыКоличество.Формат = "ЧЦ="+Разрядность +"; ЧДЦ="+РазрядностьДробнойЧасти;
		Элементы.Товары.Обновить();	
	
	КонецЕсли;
	
	ОбновитьИнтерфейс();
Показать


Там два раза я пытался обновить внешний вид, так это я пробовал, может хоть какой-нибудь метод сработает.
Ещё раз: во внешней обработке это работает. Для табличной части документа - нет.
Прикрепленные файлы:
35. spacecraft 03.01.17 01:43 Сейчас в теме
(34) все работает и для табличной части документа. В каком обработчике используете?
Условие убрать пробовали?
Достаточно вот этого кода (разрядность только подставить):
Элементы.ТоварыКоличество.Формат = "ЧЦ=10; ЧДЦ=2";
Элементы.ТоварыКоличество.ОграничениеТипа = Новый ОписаниеТипов("Число",,,Новый КвалификаторыЧисла(10,2));
Элементы.Товары.Обновить();


Если _аКонстатнта Тогда
Это опечатка в коде?
36. newborn 03.01.17 01:52 Сейчас в теме
(35) Oleg Space
Я на картинке показал ситуацию. На первой строке 10 знаков после запятой, на второй - та, где количество в данный момент редактируется - 1 знак после запятой. Это документ.
Условие "Если _аКонстатнта Тогда" - это в принципе по задаче надо: если константа выставлена, то уменьшаем количество знаков.
Платформа 8.3.9.1850
Ставил и в ПриСозданииНаСервере() и в ПриОткрытии(), т.е. и на сервере и на клиенте.
Если выложишь тестовую конфу с работающим кодом, буду очень благодарен.
37. spacecraft 03.01.17 01:59 Сейчас в теме
(36) на пустой конфе с одним документом все работает.
Для начала, убрать проверку на время тестирования.
Код поместить в ПриОткрытии() в самый конец.
39. newborn 03.01.17 02:02 Сейчас в теме
(37) Oleg Space
А я, кстати, пробовал и в конец процедуры ПриОткрытии() ставить.
38. newborn 03.01.17 02:00 Сейчас в теме
Там впереди такая строка

_аКонстатнта = Константы._аКонстатнта.Получить();

Я тут подумал: а может быть в коде как-то заблокировано необходимое мне изменение вида поля формы? Тогда какой это может быть код?
40. spacecraft 03.01.17 02:04 Сейчас в теме
(38) _аКонстатнта это реквизит формы документа, или Перем в коде?
41. newborn 03.01.17 02:05 Сейчас в теме
(40) Oleg Space
Реквизит формы.
Люди уже как-то обошлись без этого. Просто мне самому непонятно, почему так происходит...
42. spacecraft 03.01.17 02:06 Сейчас в теме
(41) убирать проверку пробовали?
43. newborn 03.01.17 02:10 Сейчас в теме
(42) Oleg Space
Не пойму, на что это повлияет...
Нет не пробовал, но я не вижу смысла. Я отладчиком смотрел - сам по себе код выполняется. Отлавливаю в отладчике состояние элемента поля формы ПриИзменении элемента ТоварыКоличество - так там и свойства Формат и ОграничениеТипа стоят именно те, которые я проставляю: 6-1.
44. spacecraft 03.01.17 02:41 Сейчас в теме
(43) при отладке желательно исключить все возможные неопределенности.
Для колонки на форме в свойствах Формат указан? Если указан, попробуйте убрать.
Ну и версия платформы не исключается.
На 8.3.9.1818 работает.
45. newborn 03.01.17 10:27 Сейчас в теме
(44) Oleg Space
Нет ничего такого
46. spacecraft 03.01.17 10:51 Сейчас в теме
(45) тогда надо смотреть саму конфигурацию.
Может там не реквизит табличной части "Количество" выводится, а (например) КоличествоУпаковок.
Попробовал на типовых. Все работает.
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)