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