Добавить колонку реквизита в табличную часть

Опытные программисты 1С в основном добавляют какие либо реквизиты на форму программно, это касается в первую очередь типовых конфигураций в которые вносятся изменения. Так как в этом случае гораздо проще потом производить обновление, сравнивать конфигурации. Поэтому это должен уметь каждый даже самый начинающий 1С -ник. Тем более что сделать это достаточно просто, в предыдущих статьях я уже затрагивал эту тему, рассказывал про программное добавление команд, сегодня же попробуем поработать с табличной частью документа, а именно добавить новый реквизит ТЧ программно, использовать будем управляемые формы.

Программное добавление колонок в ТЧ управляемой формы

Что бы на первых порах не запутаться я возьму в качестве примера простенький созданный мной документ «Поступление» у которого есть табличная часть, со следующими реквизитами «Номер», «Наименование», Количество» и «Цена».

1С Добавление колонок в ТЧ

Давайте программно добавим еще один реквизит скажем «Комментарий». Для этого необходимо через конфигуратор открыть событие «При создании на сервере».

Как программно добавить реквизит табличной части управляемой форм

И в эту процедуру добавить следующий код.

// добавим реквизит в табличную часть
	МассивРеквизитов = Новый Массив;
	МассивРеквизитов.Добавить(Новый РеквизитФормы("Комментарий", Новый ОписаниеТипов("Строка"), "Объект.Товары", "Комментарий", Ложь));
	ИзменитьРеквизиты( МассивРеквизитов );
	
	Эл = Элементы.Добавить("Колонка1", Тип("ПолеФормы"), Элементы.Товары);
	Эл.Вид = ВидПоляФормы.ПолеВвода;
	Эл.ПутьКДанным = "Объект.Товары.Комментарий"; 

Программное добавление колонок в ТЧ управляемой формы

Сохраняем изменения и проверяем что получилось, и видим что в табличной части появился еще один реквизит.

1С как программно добавить реквизит табличной части

Это программный реквизит который создается в момент создания документа, в конфигураторе вы его не увидите.

1С как программно добавить колонку в табличную часть любого документа

Таким образом можно добавить реквизит табличной части в любой конфигурации 1С.

Очень важный момент, в таком варианте внесенные данные в эту колонку не будут сохраняться в базе.

Я уже писал об общем принципе программного добавления элементов на управляемую форму, теперь напишу конкретно о том, как добавить колонку табличной части или таблицы значений.

Итак, у нас есть справочник «Тест» с табличной частью «Тест», в табличной части присутствуют реквизиты «Тест1» и «Тест2», а нам нужно добавить еще один реквизит — «Тест3» и показать его на форме.

Выглядит это приблизительно так:

&НаСервере

Процедура ДобавитьКолонкуНаСервере()

нРеквизиты = Новый Массив;

нРеквизиты.Добавить(Новый РеквизитФормы(«Тест3», Новый ОписаниеТипов(«Строка»), «Объект.Тест», «Тест3», Истина));

ИзменитьРеквизиты(нРеквизиты);

нЭлемент = Элементы.Добавить(«Тест3», Тип(«ПолеФормы»), Элементы.Тест);

нЭлемент.Вид = ВидПоляФормы.ПолеВвода;

нЭлемент.ПутьКДанным = «Объект.Тест.Тест3»;

КонецПроцедуры

Не думаю, что приведенный код нуждается в комментариях, но на всякий случай скажу, что первые три строки создают новый реквизит типа «Строка» — тут важно указать путь к создаваемому реквизиту — третий параметр.

Точно также можно добавить колонку любой таблице значений (не табличной части) — в этом случае нужно убрать часть «Объект.» из кода.

Следующие три строки добавляют саму колонку на форму.

На этом все, надеюсь данная статья Вам помогла.

Если Вы нашли ошибку или неточность, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Загрузка…

Дополнительная вычисляемая колонка в табличной части

Иногда возникает необходимость вывода в табличное поле документа (или любого другого объекта, имеющего табличную часть) дополнительных колонок с данными, которые не содержатся непосредственно в табличной части. Реализовать это на платформе 1С: Предприятие 8.1 или 8.2 в режиме обычного приложения (без использования управляемых форм) было достаточно просто, чего не скажешь об управляемых формах в 1С 8.2.

Быстрый переход

  • Реализация на платформе 1С: Предприятие 8.1 (или в обычном приложении)
  • Реализация на платформе 1С: Предприятие 8.2 (8.3 управляемое приложение)
  • Как добавить реквизит объекта в таблицу формы

Реализация на платформе 1С: Предприятие 8.1 (или в обычном приложении)

В начале коротко о том, как добавить дополнительную колонку в табличное поле на платформе 1С 8.1.

Предположим, что у нас есть некий документ с табличной частью “Товары” (с колонками “Номенклатура” и “Количество”) и нам нужно вывести дополнительную колонку “Цена”, которая бы содержала данные реквизита “Цена” элементов справочника “Номенклатура”, выбранных в строках табличной части.

Для этого нам достаточно добавить в форме документа новую колонку “Цена” в табличное поле, содержащее данные табличной части документа и написать следующий код в обработчике события “ПриПолученииДанных” этого табличного поля:

// обработчик события «ПриПолученииДанных» табличного поля «Товары»
Процедура ТоварыПриПолученииДанных(Элемент, ОформленияСтрок)
    Для Каждого ОформлениеСтроки Из ОформленияСтрок Цикл
        Номенклатура = ОформлениеСтроки.ДанныеСтроки.Номенклатура;
        Если ЗначениеЗаполнено(Номенклатура) Тогда
            ОформлениеСтроки.Ячейки.Цена.ОтображатьТекст = Истина;
            ОформлениеСтроки.Ячейки.Цена.Текст = Формат(Номенклатура.Цена,«ЧЦ=15; ЧДЦ=2»);
        КонецЕсли;
    КонецЦикла;
КонецПроцедуры

Хочу обратить внимание на то, что строки табличного поля обрабатываются порциями, по мере прокрутки списка.

Реализация на платформе 1С: Предприятие 8.2 (8.3 управляемое приложение)

На платформе 8.2 с использованием управляемых форм решение данной задачи потребует бóльших усилий. Это связано с тем, что за счет своей клиент-серверной ориентированности в платформе 8.2 в управляемом режиме отсутствуют некоторые привычные возможности – например, у табличного поля отсутствуют обработчики событий “ПриПолученииДанных” и “ПриВыводеСтроки”, которые мы могли бы использовать для этих целей в 1С 8.1 или 8.2 в обычных формах.

Пусть в нашей конфигурации есть документ “ВводОстатковДолга” с табличной частью “Контрагенты” (с колонками “Контрагент” и “Сумма”). В свою очередь у справочника “Контрагенты” есть реквизит “ИНН”, значение которого необходимо выводить в строках табличного поля.

[qu_spoiler title=»Примечание от ‘Капитально:» open=»yes» icon=»chevron-circle»]в статье взят неудачный пример т.к. реквизиты вынести можно получить гораздо проще, но тем не менее статья полезна для рассмотрения в учебных целях[/qu_spoiler]

Откроем управляемую форму документа, добавим новую колонку “ИНН” реквизита “Контрагенты” и перенесём её на закладку “Элементы” (для отображения в форме).

kontargentinn-dobalvenie-v-polya-tablitsy

Откроем палитру свойств поля “КонтрагентыКонтрагент” и добавим обработчик события “ПриИзменении”

// служебная функция получения значения реквизита объекта (выполняется на сервере)
&НаСервере
Функция ЗначениеРеквизита(Объект,ИмяРеквизита);
    Возврат Объект[ИмяРеквизита];
КонецФункции

// обработчик события «ПриИзменении» поля «Контрагент» в табличном поле «Контрагенты»
&НаКлиенте
Процедура КонтрагентыКонтрагентПриИзменении(Элемент)
    ТекДанные = Элементы.Контрагенты.ТекущиеДанные;
    ТекДанные.ИНН = ЗначениеРеквизита(ТекДанные.Контрагент,«ИНН»);
КонецПроцедуры

Это обеспечит нам изменение значения поля “ИНН” при выборе контрагента в строке табличного поля.
Теперь необходимо предусмотреть заполнение колонки “ИНН” при открытии формы документа, а так же после записи и при чтении на сервере.

Обновление данных после записи и при чтении на сервере необходимо в связи с тем, что иначе значения колонки “ИНН” будут очищаться каждый раз при возникновении этих событий. Для заполнения колонки “ИНН” опишем в модуле формы служебную серверную процедуру:

// служебная процедура для заполнения колонки «ИНН» табличного поля «Контрагенты»
&НаСервере
Процедура ОбновитьДанныеКолонкиИНН()
    Запрос = Новый Запрос(
    «ВЫБРАТЬ РАЗРЕШЕННЫЕ
    |    Контрагенты.Ссылка КАК Контрагент,
    |    Контрагенты.ИНН
    |ИЗ
    |    Справочник.Контрагенты КАК Контрагенты
    |ГДЕ
    |    Контрагенты.Ссылка В(&СписокКонтрагентов)»
    );
    Запрос.УстановитьПараметр(«СписокКонтрагентов»,Объект.Контрагенты.Выгрузить().ВыгрузитьКолонку(«Контрагент»));
    Выборка = Запрос.Выполнить().Выбрать();
    Для Каждого Стр Из Объект.Контрагенты Цикл
        Если Выборка.НайтиСледующий(Стр.Контрагент,«Контрагент») Тогда
            Стр.ИНН = Выборка.ИНН;
        Иначе
            Стр.ИНН = «»;
        КонецЕсли;
    КонецЦикла;
КонецПроцедуры

Затем добавим в модуль формы документа обработчики событий “ПриОткрытии”, “ПриЧтенииНаСервере” и “ПослеЗаписиНаСервере”, в каждой из которых будем вызвать описанную ранее служебную процедуру “ОбновитьДанныеКолонкиИНН”

&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
    ОбновитьДанныеКолонкиИНН();
КонецПроцедуры

&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
    ОбновитьДанныеКолонкиИНН();
КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытии(Отказ)
    ОбновитьДанныеКолонкиИНН();
КонецПроцедуры 

Всё готово. Можно посмотреть на результат.

primer-dopolnitelnoj-kolonki-v-spiske

Статья найдена на просторах интернета

Как добавить реквизит объекта в таблицу формы

dobavit-rekvizit-obekta-v-spisok-tablitsy-formy

Реклама – это не выигрывание призов Эффи и Золотых Львов. Это зарабатывание денег рекламодателям.

Программное удаление и добавление колонок в табличной части управляемой формы 1С 8.3

Часто бывает ситуация, когда необходимо программно управлять составом табличной части в управляемой форме.
В данном примере рассмотрим следующую ситуацию: есть управляемая форма, на управляемой форме есть таблица — связанная с реквизитом формы. Нам надо удалить одни колонки и добавить другие программным способом. Массив удаляемых и добавляемых колонок определен нами заранее.

Перед добавлением новых элементов на форму, необходимо добавить сами реквизиты формы:

МассивДобавляемыхРеквизитов = Новый Массив;
Для Каждого тЭлемент из МассивИмен Цикл //массив имен содержит названия колонок. для упрощения примера все колонки имеют строковый тип реквизита.
     МассивДобавляемыхРеквизитов.Добавить(Новый РеквизитФормы(тЭлемент, Новый ОписаниеТипов("Строка"),"Данные")); //тип реквизита, название реквизита, родитель, в нашем случае название табличной части
КонецЦикла;

Теперь определим удаляемые реквизиты:

МассивУдаляемыхРеквизитов = Новый Массив;
Для Каждого тЭлемент из МассивУдаляемыхИмен Цикл
     Если ЭтаФорма.Элементы.Найти("Данные"+тЭлемент) <> Неопределено Тогда
          МассивУдаляемыхРеквизитов.Добавить("Данные."+тЭлемент);
     КонецЕсли;
КонецЦикла;

После подготовки массивов — редактируем реквизты формы

ЭтаФорма.ИзменитьРеквизиты(МассивДобавляемыхРеквизитов, МассивУдаляемыхРеквизитов);

После редактирования реквизитов можно приступать к редактированию элементов формы:

Удаление колонок:

Для Каждого тЭлемент из МассивУдаляемыхИмен Цикл
     нЭлемент = ЭтаФорма.Элементы.Найти("Данные"+тЭлемент);
     Если нЭлемент <> Неопределено Тогда
          Элементы.Удалить(нЭлемент);
     КонецЕсли;
КонецЦикла;

Добавление новых колонок:

Для Каждого тЭлемент из МассивИмен Цикл
     нЭлемент = ЭтаФорма.Элементы.Добавить("Данные"+тЭлемент, Тип("ПолеФормы"), ЭтаФорма.Элементы.Данные);
     нЭлемент.Вид = ВидПоляФормы.ПолеВвода;
     нЭлемент.ПутьКДанным = "Данные."+тЭлемент;
     нЭлемент.Видимость = Истина;
КонецЦикла;

Ведущий программист 1С

Тельнова Яна

Как программно добавить колонку в табличную часть формы документа. Форма обычная

Я
   unk2

16.05.13 — 07:17

Задача такая. У документа добавлен новый реквизит табличной части «Кононка1». Тип число. Необходимо программно вывести эту колонку на форму, в табличное поле. Я пробовал подобным образом:

ЭлементыФормы.РаботникиОрганизации.Колонки.Добавить(«Колонка1»,  «Дни»);

Колонка появляется на форме, но в нее нет возможности ввести значение. Посмотрел по отладчику, реквизит колонки «ЭлементУправления» = неопределенно. Возможно в этом проблема. Форма обычная.

На форуме поискал, именно того что мне нужно к удивлению не нашел.

  

Партнерская программа EFSOL Oblako

   Любопытная

1 — 16.05.13 — 07:21

Почему обязательно программно?

   Milana

2 — 16.05.13 — 07:21

(0)

может тип колонки надо задать при добавлении

НоваяКолонка = ЭлементыФормы.Товары.Колонки.Добавить(«Кол»);

НоваяКолонка.УстановитьЭлементУправления(Тип(«ПолеВвода»));

   kosts

3 — 16.05.13 — 07:32

    эл = ЭлементыФормы.РаботникиОрганизации.Колонки.Вставить(Позиция, "ПродолжительностьВредность", "За вредные условия труда");
    эл.Имя = "ПродолжительностьВредность";
    эл.Видимость = Истина;
    эл.Положение = ПоложениеКолонки.ВТойЖеКолонке;
    эл.Данные = "ПродолжительностьВредность";
    эл.ТекстШапки = "Вредность";
    эл.УстановитьЭлементУправления(Тип("ПолеВвода"));
    эл.ЭлементУправления.УстановитьДействие("ПриИзменении", Новый Действие("РаботникиОрганизацииПродолжительностьНенормированныйПриИзмененииПодключаемая"));

   unk2

4 — 16.05.13 — 07:35

Milana да вы правы. Все сработало! Спасибо!

   Cube

5 — 16.05.13 — 07:36

(1) Обновлять потом проще.

   unk2

6 — 16.05.13 — 07:40

Да проще обновлять. Именно за этим такой «изысканный» способ размещения элементов на форме. Вот такой код работает. Спасибо всем за помощь.

ЭлементыФормы.РаботникиОрганизации.Колонки.Добавить(«Колонка1»,  «Дней компенсации»);

ЭлементыФормы.РаботникиОрганизации.Колонки.Колонка1.Данные = «Колонка1»;

ЭлементыФормы.РаботникиОрганизации.Колонки.Колонка1.УстановитьЭлементУправления(Тип(«ПолеВвода»));

   Milana

7 — 16.05.13 — 07:46

(4) Мне приятно было вам помочь. Сама недавно с этими колонками мучилась. Добрые люди помогли.

   andreymongol82

8 — 16.05.13 — 07:52

(7) Это вы еще на УФ колонки не добавляли, и мучения с обычной формой вам не покажутся мучениями :)

   kosts

9 — 16.05.13 — 07:54

(8) Бусят эти УФ. Ширину колонки нормально и то не задать…

   cw014

10 — 16.05.13 — 07:56

(7)(8) Хорош на УФ гнать — нормально все там добавляется, не надо париться

   Cube

11 — 16.05.13 — 08:51

(10) +100 УФ рулят и педалят!

   cw014

12 — 16.05.13 — 08:58

(11) А так же штырят, плющат и колбасят

   andreymongol82

13 — 16.05.13 — 09:08

(10) Ага добавляются нормально. Только кода раз так в шесть больше

   cw014

14 — 16.05.13 — 09:11

(13) Да ну ты брось

   cw014

15 — 16.05.13 — 09:11

(13) Для тч кода одинаково. Для реквизитов формы — раз так в 10 меньше (ибо исключаются «Лево»,»Верх»,»Ширина»,»Высота»,»УстановитьПривязки» и прочая ересь)

   andreymongol82

16 — 16.05.13 — 09:15

Для обычной формы, достаточной сказать типа ЭлементыФормы.ТЧ.СоздатьКолонки(), для УФ надо сначала добавить реквизит формы, типа таблица или как ее, потом по отдельности каждую колонку, потом создать элементы формы и потом передать значение в реквизит формы

   andreymongol82

17 — 16.05.13 — 09:16

раз так в 10 меньше (ибо исключаются «Лево»,»Верх»,»Ширина»,»Высота»,»УстановитьПривязки» и прочая ересь) — а вот с эти согласен

  

andreymongol82

18 — 16.05.13 — 09:19

(14) И, кстати, разу пошла такая пьянка, как добавить колонку в для реквизита УФ формы, который не создавался программно?

Опытные программисты 1С в основном добавляют какие либо реквизиты на форму программно, это касается в первую очередь типовых конфигураций в которые вносятся изменения. Так как в этом случае гораздо проще потом производить обновление, сравнивать конфигурации. Поэтому это должен уметь каждый даже самый начинающий 1С -ник. Тем более что сделать это достаточно просто, в предыдущих статьях я уже затрагивал эту тему, рассказывал про программное добавление команд, сегодня же попробуем поработать с табличной частью документа, а именно добавить новый реквизит ТЧ программно, использовать будем управляемые формы.

Программное добавление колонок в ТЧ управляемой формы

Что бы на первых порах не запутаться я возьму в качестве примера простенький созданный мной документ «Поступление» у которого есть табличная часть, со следующими реквизитами «Номер», «Наименование», Количество» и «Цена».

1С Добавление колонок в ТЧ

Давайте программно добавим еще один реквизит скажем «Комментарий». Для этого необходимо через конфигуратор открыть событие «При создании на сервере».

Как программно добавить реквизит табличной части управляемой форм

И в эту процедуру добавить следующий код.

Программное добавление колонок в ТЧ управляемой формы

Сохраняем изменения и проверяем что получилось, и видим что в табличной части появился еще один реквизит.

1С как программно добавить реквизит табличной части

Это программный реквизит который создается в момент создания документа, в конфигураторе вы его не увидите.

1С как программно добавить колонку в табличную часть любого документа

Таким образом можно добавить реквизит табличной части в любой конфигурации 1С.

Очень важный момент, в таком варианте внесенные данные в эту колонку не будут сохраняться в базе.

Как в 1С добавлять на форму списка различные колонки

Любой документ в 1с имеет определенную форму. Если нам необходимо ее изменить, например добавить для видимости колонку, то сделать это можно следующим способом:

1) Заходим в документ и в правом верхнем углу нажимаем на кнопку «Еще».

2) В появившемся списке выбираем «Изменить форму».

3) В открывшейся окне настройки формы проверяем проставленные «V» — возможно у нужного поля галочка не стоит.

Если ее нет, то проставляем и нажимаем «Ок» (Для примера добавим в «Тип»).

Также можно расположить колонки в нужно порядке. Для этого повторно заходим в «Настройка формы» (п.1, 2) и воспользуемся синими стрелочками. Нужно выделить строчку, которую нужно переместить и нажимаем на нужную стрелочку («Вверх», «Вниз» в зависимости от того куда его нужно переместить колонку на форме- правее или левее).

Для примера переместим «Тип» сразу за колонкой «Номенклатура».

Если в списке нет нужного реквизита, то можно воспользоваться кнопкой «Добавить поля», но это работает не всегда — там где возможно кнопка будет активна.

Для примера выведем на форму «Вид номенклатуры». Для этого открываем «Настройка формы» (п.1, 2), выбираем строчку «Номенклатура» и нажимаем «Добавить поля».

В появившемся списке ставим галочку возле «Вид номенклатуры» и нажимаем «ОК».

В списке «Настройка формы» появится соответствующая строчка. Нажимаем «ОК».

Текстовое примечание в документах 1С

Подходит для 1с для россии1с для казахстана1с для белоруссии1с для украины

Bерсия для печати

При оформении документов закупок, продаж, а также внутренних складских документов у пользователей часто возникает необходимость оставлять произвольные текстовые примечания. Для этого в документах как правило есть поле Комментарий .

Но что делать если примечание должно относиться не ко всему документу, а к конкретной строке товаров? И что делать, если это примечание необходимо указать не только на форме документа, но и вывести в печатные формы? Например, для работников склада, у которых вообще нет доступа в 1С.

Именно для решения озвученных проблем и предназначена эта разработка. В первую очередь она добавляет колонку Примечание в таблицу товаров заказов и документов товародвижения:

  • заказ клиента,
  • заказ поставщику,
  • заказ на перемещение,
  • приобретение товаров и услуг,
  • реализация товаров,
  • сборка товаров,
  • перемещение товаров.

Посмотрим на примере заказа клиента (для остальных все аналогично).

примечание в заказе клиента

Добавлены печатные формы с выводом примечания.

заказ клиента с примечаниемпечатная форма с примечанием

Примечание можно заполнить как вручную, так и автоматически:

кнопка заполнения примечания

Можно заполнить его значением дополнительного реквизита номенклатуры, выбранной ячейкой хранения (для справочного адресного хранения), штрихкодом или складом.

варианты заполнения примечания

Зачем склад в примечании

Как известно, одним документом можно оформить отгрузку сразу с нескольких складов. Представьте, что у вас в накладной пара десятков товарных позиций, которые необходимо набрать на нескольких складах. Какой именно товар откуда брать? Непонятно. А если в отдельной колонке будет информация о складе-отправителе, это сильно упростит задачу. Если предварительно перед печатью накладной еще и отсортировать табличную часть документа по складу, то работа кладовщика упростится в разы.

Для корректной работы расширения необходимо отключить безопасный режим.

отключение безопасного режима расширения

В отличие от типовых, печатные формы с примечаниями можно распечатать из непроведенного документа.

Как добавить дополнительную колонку в табличном поле?
Добавляете колонку, а все вычисления реализуются с помощью события ПриВыводеСтроки табличного поля:

Код 1C v 8.х

 // 1-й вариант:
Процедура НоменклатураПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
СамаЯчейка = ОформлениеСтроки.Ячейки.ИмяЯчейки;
СамаЯчейка.ОтображатьТекст = Истина;
СамаЯчейка.Текст = "Лалала";
КонецПроцедуры

// 2-й вариант:
Процедура НоменклатураПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
ОформлениеСтроки.Ячейки.ИмяЯчейки.УстановитьТекст("Лалала");
КонецПроцедуры

// 3-й вариант:
Процедура НоменклатураПриПолученииДанных(Элемент, ОформленияСтрок)
Для каждого ОформлениеСтроки Из ОформленияСтрок Цикл
СамаЯчейка = ОформлениеСтроки.Ячейки.ИмяЯчейки;
СамаЯчейка.ОтображатьТекст = Истина;
СамаЯчейка.Текст = "Лалала";
КонецЦикла;
КонецПроцедуры

С помощью этого события можно выводить не только текст, но также флажки и картинки, например:
Картинка:

Код 1C v 8.х

 Ячейка = ОформлениеСтроки.Ячейки.ТипСобытия;
Ячейка.ОтображатьТекст = Ложь;
Ячейка.ОтображатьФлажок = Ложь;
Ячейка.ОтображатьКартинку = Истина;
Ячейка.ИндексКартинки = 1;

// или другой пример:
ТЗ=Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("ПометкаУдаления",,"ПометкаУдаления");
ТЗ.Колонки.Добавить("Проведен",,"Проведен");

КолонкаКартинки=ЭлементыФормы.ТЗ.Колонки.Вставить(0,"<");
КолонкаКартинки.Имя="Картинка";
КолонкаКартинки.Ширина=5;
КолонкаКартинки.ДанныеКартинки="ИндексКартинки";
КолонкаКартинки.КартинкиСтрок= БиблиотекаКартинок.СостоянияДокумента;

Процедура ТЗПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
Если ДанныеСтроки.Проведен Тогда
ОформлениеСтроки.Ячейки.Картинка.ИндексКартинки=0;
ИначеЕсли НЕ ДанныеСтроки.Проведен Тогда
ОформлениеСтроки.Ячейки.Картинка.ИндексКартинки=2;
ИначеЕсли ДанныеСтроки.ПометкаУдаления Тогда
ОформлениеСтроки.Ячейки.Картинка.ИндексКартинки=1;
КонецЕсли;

Флажки:

Код 1C v 8.х

 ОформлениеСтроки.Ячейки.Колонка2.ОтображатьФлажок= Истина;
ОформлениеСтроки.Ячейки.Колонка2.УстановитьТекст("");
ОформлениеСтроки.Ячейки.Колонка2.Флажок = Истина;

Еще можно менять цвет фона и текста, шрифт и другие характеристики оформления:

Код 1C v 8.х

 ОформлениеСтроки.Ячейки.<ИмяКолонки>.ЦветФона = Новый Цвет (255,100,100);
ОформлениеСтроки.Ячейки.<ИмяКолонки>.Шрифт = Новый Шрифт(,,Истина);

Можно также управлять доступностью отдельных строк и ячеек табличного поля:

Код 1C v 8.х

 ОформлениеСтроки.Ячейки.Назв.ТолькоПросмотр = Истина;   

Обычно колонка должна быть рассчитываемой, или зависимой от данных, поэтому нужно задействовать второй параметр ДанныеСтроки. Этот механизм можно использовать для отображения остатков товаров в форме подбора, текущих цен, долга контрагента, другой информации по строкам.

Но здесь нужно быть осторожным! Событие ПриВыводеСтроки вызывается довольно часто при перерисовке табличного поля. Поэтому процедура должна отрабатывать довольно быстро, чтобы не тормозить вывод списка. Если в ней происходит обращение к базе данных, то вывод может резко замедлиться.

Если начались тормоза, то рекомендуется сделать следующее:
1. Кеширование результата запроса в переменной модуля формы (таблица значений или массив, еще можно использовать соответствие, которое индексируется для примитивных типов данных, например, код товара или артикул)
2. При отключенной колонке (видимость) запрос к базе НЕ должен выполняться.
По умолчанию колонку держать выключенной, включение только по кнопке в форме или при личных настройках определенного пользователя.
3. Лучше выполнять один большой запрос на несколько товаров, чем несколько маленьких запросов на один товар.
4. Список товаров нужно передавать как ПАРАМЕТР виртуальной таблицы Остатки, а не как параметр условия ГДЕ.
5. При повышенных требованиях к скорости отображения списка и большом количестве пользователей можно завести регистр сведений, хранящий актуальные остатки. Для поддержки его актуальности можно создать последовательность.
6. Еще вариант через обработчик — при ПолученииДанных (вроде так называется)… Там сразу передается массив ОформленияСтрок — в нем все строки сразу и вызывается он реже, чем при выводе строки…
7. Завести в табличной части реквизит, куда при открытии формы и по мере надобности помещать остатки, это значительно ускорит вывод остатков, правда будет не лучшим образом влиять на флаг Модифицированность.

Источник.

Понравилась статья? Поделить с друзьями:
  • Добавить реквизит в справочнике номенклатура
  • Европочта в гомеле на хатаевича время работы
  • Добромысленский переулок 3 гувд время работы
  • Евроремонт полевской часы работы в праздники
  • Добрый день отправляю реквизиты для договора