Условное оформление ячейки "Таблицы Значений"
На УФ 1с8 есть таблица значений на форме с двумя колонками-реквизитами:
1. "Документ", который имеет ссылку на документ "Заказ клиента";
2. "Количество", количество товара в документе.
Как сделать так, что бы в ТЗ на форме ячейка с ссылкой на документ "Заказ клиента" была зеленого цвета, если документ проведен, красного, если документ помечен на удаление, и желтого, если документ не проведен.
Важно: именно не всю строку условно оформить, а конкретную ячейку.
1. "Документ", который имеет ссылку на документ "Заказ клиента";
2. "Количество", количество товара в документе.
Как сделать так, что бы в ТЗ на форме ячейка с ссылкой на документ "Заказ клиента" была зеленого цвета, если документ проведен, красного, если документ помечен на удаление, и желтого, если документ не проведен.
Важно: именно не всю строку условно оформить, а конкретную ячейку.
По теме из базы знаний
- Условное оформление дерева значений на управляемой форме
- Цветовое оформление вертикальных группировок таблиц СКД
- Быстрая выгрузка в Excel с оформлением (числа, даты, колонтитулы, гиперссылки) через OpenXML
- Перечень множественных значений в ячейке динамического списка. Как стало и как было
- Вывод условного оформления дерева значений или табличной части в эксель
Найденные решения
Добавить колонку статус (1 - удален, 2 - отмена проведения, 3 - проведен), от нее рисовать УО
Прикрепленные файлы:
(5)
1. Надеюсь, тот код, который вы написали - он весь на сервере выполняется? Включая цикл?
2. И зачем вы цикле "по ссылке через точку" дергаете СУБД? Каждое обращение через точку- это неявный запрос к СУБД. Сделайте правильнее - одним общим запросом, который получает данные таблицы одной транзакцией.
Я имел ввиду что реквизит "Проведен" - это отдельный реквизит в табличной части, который никак не связан с реквизитом по ссылке на документ. И этот реквизит нужно заполнять отдельно.
Именно. При автообновлении списка (таблицы) - обновляется допколонка в таблице формы (читай - перечитывается признак "Проведен" у документов), на основании которой и строится Условное оформление.
1. Надеюсь, тот код, который вы написали - он весь на сервере выполняется? Включая цикл?
2. И зачем вы цикле "по ссылке через точку" дергаете СУБД? Каждое обращение через точку- это неявный запрос к СУБД. Сделайте правильнее - одним общим запросом, который получает данные таблицы одной транзакцией.
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Добавить колонку статус (1 - удален, 2 - отмена проведения, 3 - проведен), от нее рисовать УО
Прикрепленные файлы:
(2) Спасибо, всё понятно,но...
Реквизит "Проведен" не зависит от документа. Мне нужно в любом случае как то реализовывать контроль того, что если документ изменяется, то форма должна быть "уведомлена"?
Например, один человек открыл форму в которой при открытии заполнилась ссылка на документ, а так же был определён признак для условного оформления, допустим документ не проведён. Далее второй человек провёл документ, но у первого человека признак того, что документ не проведённый остался, так как форма не была обновлена.
Как реализовать контроль в таких ситуациях? При каких условиях снова рассчитывать признак "Проведен?
Реквизит "Проведен" не зависит от документа. Мне нужно в любом случае как то реализовывать контроль того, что если документ изменяется, то форма должна быть "уведомлена"?
Например, один человек открыл форму в которой при открытии заполнилась ссылка на документ, а так же был определён признак для условного оформления, допустим документ не проведён. Далее второй человек провёл документ, но у первого человека признак того, что документ не проведённый остался, так как форма не была обновлена.
Как реализовать контроль в таких ситуациях? При каких условиях снова рассчитывать признак "Проведен?
(3)
Реквизит "Проведен" не зависит от документа.
А от чего он зависит, если не секрет?
Далее второй человек провёл документ, но у первого человека признак того, что документ не проведённый остался, так как форма не была обновлена
Автообновление динамического списка, только так. Оповещений на формы другим пользователям не существует. Если только сервер взаимодействия использовать.
(4)
Я имел ввиду что реквизит "Проведен" - это отдельный реквизит в табличной части, который никак не связан с реквизитом по ссылке на документ. И этот реквизит нужно заполнять отдельно.
У меня таблица формы, а не динамический список.
На данный момент добавил в ТЗ столбец реквизита формы и заполняю его на событие "ПриСозданииНаСервере", а так же "ПриИзмененииЭлемента", то есть ловлю событие, после чего получаю по ссылке данные о документе и в отдельный реквизит заполняю признак, по которому условно оформляю ТЧ...
А от чего он зависит, если не секрет?
Я имел ввиду что реквизит "Проведен" - это отдельный реквизит в табличной части, который никак не связан с реквизитом по ссылке на документ. И этот реквизит нужно заполнять отдельно.
У меня таблица формы, а не динамический список.
На данный момент добавил в ТЗ столбец реквизита формы и заполняю его на событие "ПриСозданииНаСервере", а так же "ПриИзмененииЭлемента", то есть ловлю событие, после чего получаю по ссылке данные о документе и в отдельный реквизит заполняю признак, по которому условно оформляю ТЧ...
//вызов
Для каждого СтрДокументы Из Объект.Документы Цикл
СтрДокументы.СтатусТТН=ПолучитьСтатусДокумента(СтрДокументы.ТТН);
КонецЦикла;
&НаСервереБезКонтекста
Функция ПолучитьСтатусДокумента(СсылкаНаДокумент)
Если СсылкаНаДокумент.ПометкаУдаления Тогда //помечен на удаление
Возврат 3;
ИначеЕсли СсылкаНаДокумент.Проведен Тогда //проведен
Возврат 1;
Иначе //записан
Возврат 2;
КонецЕсли;
КонецФункции
Показать
(5)
1. Надеюсь, тот код, который вы написали - он весь на сервере выполняется? Включая цикл?
2. И зачем вы цикле "по ссылке через точку" дергаете СУБД? Каждое обращение через точку- это неявный запрос к СУБД. Сделайте правильнее - одним общим запросом, который получает данные таблицы одной транзакцией.
Я имел ввиду что реквизит "Проведен" - это отдельный реквизит в табличной части, который никак не связан с реквизитом по ссылке на документ. И этот реквизит нужно заполнять отдельно.
Именно. При автообновлении списка (таблицы) - обновляется допколонка в таблице формы (читай - перечитывается признак "Проведен" у документов), на основании которой и строится Условное оформление.
1. Надеюсь, тот код, который вы написали - он весь на сервере выполняется? Включая цикл?
2. И зачем вы цикле "по ссылке через точку" дергаете СУБД? Каждое обращение через точку- это неявный запрос к СУБД. Сделайте правильнее - одним общим запросом, который получает данные таблицы одной транзакцией.
Примерно понял проблему. Вы хотите чтобы расскраска была актуальна, если другой пользователь меняет статус в другом сеансе. Что ж, будет достаточно того, что вы обновляете статус при изменении таблицы. Можно также повестить обновление раз в минуту и кнопку "обновить статусы".
(6) Верно поняли, спасибо за совет. Как то подобно и реализовал.
У меня практически на все кнопки формы прописан в конце серверный метод "УстановитьДоступность", который снова проверяет все данные формы и нас траивает доступы на форме. Просто добавил в этот метод заполнение доп. реквизитов, а так же на изменение непосредственно в самой ячейке тоже прописал перезаполнение по изменяемой строке.
Если кто то поменяет, а пользователь сразу не заметит - подумал не критично.
У меня практически на все кнопки формы прописан в конце серверный метод "УстановитьДоступность", который снова проверяет все данные формы и нас траивает доступы на форме. Просто добавил в этот метод заполнение доп. реквизитов, а так же на изменение непосредственно в самой ячейке тоже прописал перезаполнение по изменяемой строке.
Если кто то поменяет, а пользователь сразу не заметит - подумал не критично.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот