#0
by artist
Дано: Документ, с табличной частью, с колонками "Количество" и "Цена" Хочу, что бы для строк, у которых Количество = 0 невозможно было изменить цену (что бы ячейка цена в строке с Количество = 0 было недоступно). Сразу приходит на ум процедура ПередНачаломИзменения, и она прекрасно работает, на уже существующих строках. Если добавить новую строку, указать Количество = 0 и нажать энтер - процедура ПередНачаломИзменения не срабатывает, и поле Цена становится доступным для редактирования. Что можно ещё предпринять?
#1
by artist
Всё, разобрался, надо в КоличествоПриИзмении и в ПриАктивизацииСтроки добавить проверку на количество, и в зависимости результата устанавливать Элементы.Цена.ТолькоПросмотр... Или это я через зад гланды оперирую?
#2
by kosts
Для установки отдельным ячейкам только просмотр хорошо использовать событие ПриПолученииДанных.
#3
by Cube
Ты что-то прогнал - нельзя установить ТолькоПросмотр ячейке, можно установить только колонке... Поэтому в ПриПолученииДанных не взлетит...
#6
by kosts
ОформлениеЯчейки.ТолькоПросмотр (CellAppearance.ReadOnly) ТолькоПросмотр (ReadOnly) Использование: Чтение и запись. Описание: Тип: Булево. Определяет возможность редактирования ячейки.
#9
by Лодырь
Если управляемые, есть хороший вариант изменения всего через условное оформление формы.
#11
by kosts
Задержки тут будут микроскопические. Другое дело, что нужно проверить как это будет работать, когда количество будут изменять на ноль и наоборот с нуля на число.
#12
by Cube
Что в 10 раз быстрее? Говори конкретно. Пример: алгоритм вычисления доступности поля слишком сложен и занимает 1 секунду. На экране отображается 10 строк ТЧ. Вариант "ПриАктивизацииСтроки" затормозит открытие документа на 1 секунду и будет тормозить КАЖДЫЙ переход по строкам на 1 секунду. То есть, каждый клик мышкой будет стоить 1 секунду простоя. Вариант "ПриПолученииДанных" затормозит открытие документа на 10 секунд, но не будет тормозить при переходе по строкам. Каждый для себя выбирает сам, что ему предпочтительней...
#13
by hhhh
ну например, пользователь открыл документ просто посмотреть и не собирается никакие цены редактировать. А у него при этом во всех 20-ти ячейках только просмотр установится. Оно ему надо? А Вариант "ПриАктивизацииСтроки" запустится в любом случае. В обоих вариантах.
#14
by Cube
Ну... Если так рассуждать: например, пользователю нужно посмотреть комментарий в счете на оплату. Приходится включать компьютер, открывать 1С, искать счет, открывать счет... Оно ему надо? :)
#15
by hhhh
в твоем варианте он должет открыть 1000 счетов, в одном из них посмотреть комментарий. В остальных не смотреть, закрывать глаза ладошкой.
#16
by artist
Забыл сказать - управляемая форма. Можно в этом месте поподробнее. ЗЫ Я так понимаю в УФ нет события при получении данных? Это только для обычных форм, или я не туда гляжу?
#17
by Лодырь
Пример установки доступности ячеек таблицы в зависимости от реквизита. Аналогично делается раскраска.
#18
by artist
Спасибищи, сейчас попробую. Я так понимаю через это оформление можно и цветом недоступные ячейки подсветить? (или наоборот доступные, не принципиально)
#19
by artist
А как точно определить имя поля? В одном случае у тебя через точку: "ДеревоОшибок.Тип" А в другом сплошняком: "ДеревоОшибокПометка" Так и задумано или это опечатка?
#21
by Feunoir
Попробуй всё это настроить прямо в конфигураторе. В свойствах формы. Там есть редактор условного оформления. Может оттуда будет проще.
#22
by artist
Так гораздо понятнее, спасибо! Правильно ли я понимаю, что к реквизиту ТЧ через точку не обратишься в отборе? т.е. Объект.Товары.Номенклатура.НужныйРеквизит.
#23
by Лодырь
Обратишся. Смотри пример, там есть обращение ЭлементУсловия.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДеревоОшибок.Тип"); Тут тип это реквизит дерева. Если же речь идет не о отборе а о оформляемых полях, то там обращение через точку недопустимо.
#24
by artist
Я так понимаю ДеревоОшибок - у тебя таблица, а Тип - это реквизит(колонка) таблицы, поэтому смело обращаешься. А вот ДеревоОшибок.Тип.Код - уже нельзя сделать.
#25
by Лодырь
Угу нельзя. Хотя это еще спорно. Возможно тут могут выручить внешние функции, но не проверял.
#26
by Feunoir
Это (тонко)клиентский контекст. Там нет реквизитов у ссылок. Можешь просто ради интереса в тонком клиенте посмотреть как выглядит значение любого ссылочного типа на клиенте. Много вопросов отпадет (или наоборот, возникнет :) )
#27
by artist
Ок. Итого. Если надо делать доступность просто по реквизиту ТЧ - можно использовать УсловноеОформление. Если нужен отбор по реквизиту реквизита ТЧ - то только через ПриАктивизацииСтроки... :(
#29
by Feunoir
ПриАктивизацииСтроки не сработает при редактировании ячейки. То есть вошли в строку - количество нулевое, цену менять нельзя. Поменяли количество на не нулевое, но событие не сработает, поэтому цену всё-равно менять нелья. Придется строку переступать. Я вытаскиваю эти реквизиты в скрытый служебный реквизит ТЧ. Надо только корректно его заполнять при чтении и создании документа. Динамический список по табличной части нового документа? Научи, плз.
#32
by Лодырь
Можно извратиться, добавить табличку в реквизиты формы, читать ее при открытии (для нового пустая),и записывать ее при записи.
#33
by Feunoir
Ну уж нет. У меня есть пара объектов, в которых мне пришлось такую табличную часть делать. Нет ни малейшего желания повторять :) А так вообще-то добавляется реквизит в ТЧ формы (!), этот реквизит заполняется в событиях при чтении объекта, после записи и в момент изменения реквизита, к которому эти поля относятся. Ну а потом по этому реквизиту уже делай что хочешь, хоть отбирай, хоть сортируй, хоть оформление накладывай.
#35
by Лодырь
Не спорю. Встречалось и такое. Однако все описанные нами способы все же скорее относятся к "вырезанию аппендицита через задницу". )
#36
by artist
А я ещё в КоличествоПриИзменении проверяю и устанавливаю ТолькоДоступность. В итоге связка ПриАктивизацииСтроки + ПриИзменении работает идеально. Я просто думал что в 8.2 есть более красивое решение. Как вариант - и делаем через УсловноеОформление, но ради такой маленькой задачи городить реквизит ТЧ не очень интересно...
#37
by Лодырь
Для относительно простых проверок решение вполне красивое. Для сложных - не очень ) Кстати, будь относительно сторожен с обвешиванием табличных частей сложными пересчетами и проверками, у меня почему то они кушают дохрена ресурсов.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- изменить шрифт в ВвестиЧисло(), как ?
- Как программно изменить тип реквизита табличной части?
- Значение зависимой ячейки изменить программно...
- ЗиК. Изменить Вид расчета.
- Как программно изменить текущие данные в табличной части
- Как программно изменить имя параметра в макете?
- Как активизировать определенную ячейку табличной части программно
- Как программно изменить значение реквизита табличной части документа
- Изменить реквизит программно в табличной части
- Программно изменить свойства формы.
- Как программно изменить цвет фона ячейки табличной части документа?
- можно ли изменить найти и изменить значение в дереве значений
В этой группе 1С
- поиск по родителю в динамическом списке (типовая УТ 11)
- Параметры RAID - DWC и RA
- Как ввести символ "/" на ТСД?
- Узнать версию платформы сервера
- УТ11 как указать по какой реализации оплата по кассе или по банку?
- Как получить параметры отбора в форме списка ?
- Конвертация данных. Перенос документа с ТЧ
- invalid barcode ut 11
- Бухгалтерия 3,0. Проверка актуальности регламентированного отчета
- Корректировка реализации УПП 8.2
- Как разбить строку с разделителями на подстроки?
- Выборка по документам или регистрам
- Как получить в модуль основной формы ДополнительныеСвойства объекта?
- v7: 1с 7.7 Бухгалтерская справка задним числом
- ЗУП - пермия по итогам квартала уволенным
- Глюк при отображении формы документа
- Из COMSafeArray в ДвоичныеДанные.
- v7: Обновления регламентной отчётности для 1С: Предприятия 7.7
- v8: УПП погашение стоимости спец одежды идет на ВР по налоговому учету
- Как сохранить в табличное поле значения при множественном выборе?