Как изменить количество разрядов в поле табличной части документов
Сильно переделанная конфа.
В ППВ табличной части расшифровка платежа есть реквизит Курс. В конфигураторе добавили количество разрядов в это поле. Но на форме количество разрядов должно зависить от значения константы. Никак не могу это сделать. Пробовал через условное оформление. Не получилось.
Что я делаю не так?
В ППВ табличной части расшифровка платежа есть реквизит Курс. В конфигураторе добавили количество разрядов в это поле. Но на форме количество разрядов должно зависить от значения константы. Никак не могу это сделать. Пробовал через условное оформление. Не получилось.
Что я делаю не так?
По теме из базы знаний
- Расчет хэш-функции в запросе
- Загрузка квитанций от Яндекс.Деньги в Управление торговлей 11.1 для создания документов "Поступление безналичных ДС"
- Универсальные функции ЗУП 3.1 / ЗКГУ 3.1, которые помогут в разработке
- Не спеша, эффективно и правильно – путь разработки. Часть 3. Практика
- Мобильное приложение на 1С?
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)можно попробовать завести реквизит ТЧ курса с другой разрядностью, и показывать на форме в зависимости от константы нужную колонку. Это конечно костыль, но в чем смысл разной разрядности? можно курс в зависимости от константы округлять до нужного разряда, тогда оставшиеся разряды будут нулевые.
Что вы в константе собираетесь ставить и какой тип?
Обычно проблема с недостаточной разрядностью решается указанием кратности курса валюты. В каждой валюты может быть своя кратность, притом может меняться с течением времени.
Обычно проблема с недостаточной разрядностью решается указанием кратности курса валюты. В каждой валюты может быть своя кратность, притом может меняться с течением времени.
Блин, так ничего и не получилось. Изменить разрядность числа в поле табличной части на управляемой форме не получается. Релиз платформы 8.3.8.1933
(18) ну попробуй сам. Фактически тебе в элемент формы нужно записать ограничение типа, и если это табличная часть, то в свойство "формат" элемента нужно записать соответствующую форматную строку. Типа если константа = истина тогда элемент.ограниченитипа = ...; элемент.формат = "..." иначе ...
(21) чтобы в табличной части сработало, нужно установить формат, причем на сервере. Если делать на клиенте, то требуется ОбновитьИнтерфейс.
Разрядность = 15;
РазрядностьДробнойЧасти = 5;
Элементы.ИмяТЧНаФорме.ПодчиненныеЭлементы.ИмяТЧНаФормеИмяКолонки.Формат = "ЧЦ="+Разрядность +"; ЧДЦ="+РазрядностьДробнойЧасти;
Жесть какая-то, а чем такой код не устраивает?
Все прекрасно работает на клиенте, а что константа была доступна на клиенте ее можно поместить в параметры сеанса, либо при создании формы получать, и кэшировать ее значение.
Элементы.Реквизит1.ОграничениеТипа = Новый ОписаниеТипов("Число",,,Новый КвалификаторыЧисла(Разрядность,РазрядностьДробнойЧасти));
Все прекрасно работает на клиенте, а что константа была доступна на клиенте ее можно поместить в параметры сеанса, либо при создании формы получать, и кэшировать ее значение.
Выбрал время, чтобы проверить всё. (Делать нефиг на праздники, да?!)
Так вот, всё, что вы мне посоветовали действительно работает, когда речь идёт о таблице на форме или о табличной части внешней обработки. Для документа это не действует. Или действует не совсем. На рисунке видно, что если начинаешь редактировать элемент, то Формат и ОграничениеТипа срабатывает.
Код применил вот такой
Там два раза я пытался обновить внешний вид, так это я пробовал, может хоть какой-нибудь метод сработает.
Ещё раз: во внешней обработке это работает. Для табличной части документа - нет.
Так вот, всё, что вы мне посоветовали действительно работает, когда речь идёт о таблице на форме или о табличной части внешней обработки. Для документа это не действует. Или действует не совсем. На рисунке видно, что если начинаешь редактировать элемент, то Формат и ОграничениеТипа срабатывает.
Код применил вот такой
Если _аКонстатнта Тогда
Разрядность = 6;
РазрядностьДробнойЧасти = 1;
Элементы.Товары.ПодчиненныеЭлементы.ТоварыКоличество.ОграничениеТипа = Новый ОписаниеТипов("Число",,,Новый КвалификаторыЧисла(Разрядность,РазрядностьДробнойЧасти));
Элементы.Товары.ПодчиненныеЭлементы.ТоварыКоличество.Формат = "ЧЦ="+Разрядность +"; ЧДЦ="+РазрядностьДробнойЧасти;
Элементы.Товары.Обновить();
КонецЕсли;
ОбновитьИнтерфейс();
ПоказатьТам два раза я пытался обновить внешний вид, так это я пробовал, может хоть какой-нибудь метод сработает.
Ещё раз: во внешней обработке это работает. Для табличной части документа - нет.
Прикрепленные файлы:
(34) все работает и для табличной части документа. В каком обработчике используете?
Условие убрать пробовали?
Достаточно вот этого кода (разрядность только подставить):
Если _аКонстатнта Тогда
Это опечатка в коде?
Условие убрать пробовали?
Достаточно вот этого кода (разрядность только подставить):
Элементы.ТоварыКоличество.Формат = "ЧЦ=10; ЧДЦ=2";
Элементы.ТоварыКоличество.ОграничениеТипа = Новый ОписаниеТипов("Число",,,Новый КвалификаторыЧисла(10,2));
Элементы.Товары.Обновить();
Если _аКонстатнта Тогда
Это опечатка в коде?
(35) Oleg Space
Я на картинке показал ситуацию. На первой строке 10 знаков после запятой, на второй - та, где количество в данный момент редактируется - 1 знак после запятой. Это документ.
Условие "Если _аКонстатнта Тогда" - это в принципе по задаче надо: если константа выставлена, то уменьшаем количество знаков.
Платформа 8.3.9.1850
Ставил и в ПриСозданииНаСервере() и в ПриОткрытии(), т.е. и на сервере и на клиенте.
Если выложишь тестовую конфу с работающим кодом, буду очень благодарен.
Я на картинке показал ситуацию. На первой строке 10 знаков после запятой, на второй - та, где количество в данный момент редактируется - 1 знак после запятой. Это документ.
Условие "Если _аКонстатнта Тогда" - это в принципе по задаче надо: если константа выставлена, то уменьшаем количество знаков.
Платформа 8.3.9.1850
Ставил и в ПриСозданииНаСервере() и в ПриОткрытии(), т.е. и на сервере и на клиенте.
Если выложишь тестовую конфу с работающим кодом, буду очень благодарен.
Там впереди такая строка
_аКонстатнта = Константы._аКонстатнта.Получить();
Я тут подумал: а может быть в коде как-то заблокировано необходимое мне изменение вида поля формы? Тогда какой это может быть код?
_аКонстатнта = Константы._аКонстатнта.Получить();
Я тут подумал: а может быть в коде как-то заблокировано необходимое мне изменение вида поля формы? Тогда какой это может быть код?
(42) Oleg Space
Не пойму, на что это повлияет...
Нет не пробовал, но я не вижу смысла. Я отладчиком смотрел - сам по себе код выполняется. Отлавливаю в отладчике состояние элемента поля формы ПриИзменении элемента ТоварыКоличество - так там и свойства Формат и ОграничениеТипа стоят именно те, которые я проставляю: 6-1.
Не пойму, на что это повлияет...
Нет не пробовал, но я не вижу смысла. Я отладчиком смотрел - сам по себе код выполняется. Отлавливаю в отладчике состояние элемента поля формы ПриИзменении элемента ТоварыКоличество - так там и свойства Формат и ОграничениеТипа стоят именно те, которые я проставляю: 6-1.
Внимание! Тема сдана в архив
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот