Условное оформление ячейки "Таблицы Значений"

1. SantiouS 02.03.21 10:59 Сейчас в теме
На УФ 1с8 есть таблица значений на форме с двумя колонками-реквизитами:
1. "Документ", который имеет ссылку на документ "Заказ клиента";
2. "Количество", количество товара в документе.
Как сделать так, что бы в ТЗ на форме ячейка с ссылкой на документ "Заказ клиента" была зеленого цвета, если документ проведен, красного, если документ помечен на удаление, и желтого, если документ не проведен.
Важно: именно не всю строку условно оформить, а конкретную ячейку.
По теме из базы знаний
Найденные решения
2. ixijixi 1913 02.03.21 11:21 Сейчас в теме
Добавить колонку статус (1 - удален, 2 - отмена проведения, 3 - проведен), от нее рисовать УО
Прикрепленные файлы:
ВнешняяОбработка1.epf
SantiouS; +1 Ответить
7. FatPanzer 03.03.21 11:47 Сейчас в теме
(5)
Я имел ввиду что реквизит "Проведен" - это отдельный реквизит в табличной части, который никак не связан с реквизитом по ссылке на документ. И этот реквизит нужно заполнять отдельно.
Именно. При автообновлении списка (таблицы) - обновляется допколонка в таблице формы (читай - перечитывается признак "Проведен" у документов), на основании которой и строится Условное оформление.

1. Надеюсь, тот код, который вы написали - он весь на сервере выполняется? Включая цикл?
2. И зачем вы цикле "по ссылке через точку" дергаете СУБД? Каждое обращение через точку- это неявный запрос к СУБД. Сделайте правильнее - одним общим запросом, который получает данные таблицы одной транзакцией.
SantiouS; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. ixijixi 1913 02.03.21 11:21 Сейчас в теме
Добавить колонку статус (1 - удален, 2 - отмена проведения, 3 - проведен), от нее рисовать УО
Прикрепленные файлы:
ВнешняяОбработка1.epf
SantiouS; +1 Ответить
3. SantiouS 03.03.21 10:45 Сейчас в теме
(2) Спасибо, всё понятно,но...
Реквизит "Проведен" не зависит от документа. Мне нужно в любом случае как то реализовывать контроль того, что если документ изменяется, то форма должна быть "уведомлена"?
Например, один человек открыл форму в которой при открытии заполнилась ссылка на документ, а так же был определён признак для условного оформления, допустим документ не проведён. Далее второй человек провёл документ, но у первого человека признак того, что документ не проведённый остался, так как форма не была обновлена.
Как реализовать контроль в таких ситуациях? При каких условиях снова рассчитывать признак "Проведен?
4. FatPanzer 03.03.21 10:54 Сейчас в теме
(3)
Реквизит "Проведен" не зависит от документа.
А от чего он зависит, если не секрет?
Далее второй человек провёл документ, но у первого человека признак того, что документ не проведённый остался, так как форма не была обновлена
Автообновление динамического списка, только так. Оповещений на формы другим пользователям не существует. Если только сервер взаимодействия использовать.
5. SantiouS 03.03.21 11:10 Сейчас в теме
(4)
А от чего он зависит, если не секрет?

Я имел ввиду что реквизит "Проведен" - это отдельный реквизит в табличной части, который никак не связан с реквизитом по ссылке на документ. И этот реквизит нужно заполнять отдельно.
У меня таблица формы, а не динамический список.
На данный момент добавил в ТЗ столбец реквизита формы и заполняю его на событие "ПриСозданииНаСервере", а так же "ПриИзмененииЭлемента", то есть ловлю событие, после чего получаю по ссылке данные о документе и в отдельный реквизит заполняю признак, по которому условно оформляю ТЧ...

//вызов
Для каждого СтрДокументы Из Объект.Документы Цикл
		СтрДокументы.СтатусТТН=ПолучитьСтатусДокумента(СтрДокументы.ТТН);
КонецЦикла;

&НаСервереБезКонтекста
Функция ПолучитьСтатусДокумента(СсылкаНаДокумент)
	Если СсылкаНаДокумент.ПометкаУдаления Тогда //помечен на удаление
		Возврат 3;
	ИначеЕсли СсылкаНаДокумент.Проведен Тогда //проведен 
		Возврат 1;	
	Иначе //записан
		Возврат 2;
	КонецЕсли; 
КонецФункции
Показать
7. FatPanzer 03.03.21 11:47 Сейчас в теме
(5)
Я имел ввиду что реквизит "Проведен" - это отдельный реквизит в табличной части, который никак не связан с реквизитом по ссылке на документ. И этот реквизит нужно заполнять отдельно.
Именно. При автообновлении списка (таблицы) - обновляется допколонка в таблице формы (читай - перечитывается признак "Проведен" у документов), на основании которой и строится Условное оформление.

1. Надеюсь, тот код, который вы написали - он весь на сервере выполняется? Включая цикл?
2. И зачем вы цикле "по ссылке через точку" дергаете СУБД? Каждое обращение через точку- это неявный запрос к СУБД. Сделайте правильнее - одним общим запросом, который получает данные таблицы одной транзакцией.
SantiouS; +1 Ответить
8. SantiouS 03.03.21 11:50 Сейчас в теме
(7) 1. Да, цикл "НаСервере".
2. Вы имеете ввиду выгрузить таблицу формы в ТЗ и засунуть ее в запрос 1с8 в котором сразу же заполнить реквизит, после чего снова загрузить полученную ТЗ после запроса в таблицу формы?
10. FatPanzer 03.03.21 11:54 Сейчас в теме
(8) 2. Ну можно и не таблицу целиком, а хотя бы массив ссылок на документы. Заодно и всякие другие данные актуализируете по необходимости... Смысл такой, да. Сразу получать готовый результат для ТаблицаДокументов.Загрузить(РезультатЗапроса).
SantiouS; +1 Ответить
6. SlavaKron 03.03.21 11:44 Сейчас в теме
Примерно понял проблему. Вы хотите чтобы расскраска была актуальна, если другой пользователь меняет статус в другом сеансе. Что ж, будет достаточно того, что вы обновляете статус при изменении таблицы. Можно также повестить обновление раз в минуту и кнопку "обновить статусы".
9. SantiouS 03.03.21 11:53 Сейчас в теме
(6) Верно поняли, спасибо за совет. Как то подобно и реализовал.
У меня практически на все кнопки формы прописан в конце серверный метод "УстановитьДоступность", который снова проверяет все данные формы и нас траивает доступы на форме. Просто добавил в этот метод заполнение доп. реквизитов, а так же на изменение непосредственно в самой ячейке тоже прописал перезаполнение по изменяемой строке.
Если кто то поменяет, а пользователь сразу не заметит - подумал не критично.
Оставьте свое сообщение

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