Первый и второй способы предполагают включение возможности изменения в конфигураторе, и признак проведённости выглядит так:
Первый способ (все делаем "ручками", но без "единой строчки кода"):
Работаем в конфигураторе. Включаем возможность изменений в форме каждого документа, в котором хотим видеть признак проведенности.
Находим в дереве метаданных, нужный документ, нужную форму (Реализация товаров и услуг, ФормаДокумента), открываем ее, и щелкаем мышью на поле "Номер" в "образе" формы (активизируется соответствующий элемент сверху):
В свойствах Объекта находим свойство Проведен и перетаскиваем его мышью на поле Номер:
Это приведет к тому что на поле "образа" появится флажек "Проведен":
Далее нужно несколько скорректировать свойства вновь добавленного поля "Проведен":
Сначала изменим Вид на "Поле картинки":
Затем зададим картинку, которая будет отображаться в случае, если документ будет иметь статус Проведен (предлагаю использовать из Стандартных, картинку "Синтактический контроль"):
Отключаем вывод заголовка (чтобы не сильно корежить форму):
Зададим Рамку и Размер (убираем рамку, устанавливаем Ширину: 3, Высоту: 1):
Сохраняем конфигурацию, пробуем, радуемся (омрачает только то, что подобное, нужно проделать со всеми документами, где хочется видеть признак проведённости).
Второй способ (все делаем при помощи кода):
Работаем в конфигураторе. Включаем возможность изменений в Общем Модуле ДополнительныеОтчетыИОбработки. Способ включает отображение признака проведённости сразу для всех документов, которые могут быть проведены.
Открываем указанный модуль и находим процедуру ПриСозданииНаСервере(Форма) Экспорт, и в конце перед КонецПроцедуры, добавляем код:
Если ИмяФормыМассив[0] = "Документ" и ИмяФормыМассив[3] = "ФормаДокумента" Тогда
Если Метаданные.Документы[ИмяФормыМассив[1]].Проведение = Метаданные.СвойстваОбъектов.Проведение.Разрешить
И Не Форма.Элементы.Найти("Номер") = Неопределено
Тогда
ПолеПроведен = Форма.Элементы.Вставить("Проведен", Тип("ПолеФормы"), Форма.Элементы.Номер.Родитель, Форма.Элементы.Номер);
ПолеПроведен.Вид = ВидПоляФормы.ПолеКартинки;
ПолеПроведен.ПутьКДанным = "Объект.Проведен";
ПолеПроведен.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет;
ПолеПроведен.КартинкаЗначений = БиблиотекаКартинок.СинтаксическийКонтроль;
ПолеПроведен.Рамка = Новый Рамка(ТипРамкиЭлементаУправления.БезРамки);
ПолеПроведен.Ширина = 3;
ПолеПроведен.Высота = 1;
ПолеПроведен.РастягиватьПоГоризонтали = Ложь;
ПолеПроведен.РастягиватьПоВертикали = Ложь;
ПолеПроведен.Подсказка = "Проведен";
КонецЕсли;
КонецЕсли;
(Возможно придется заменить переменную Форма на ЭтаФорма)
Даннай код делает тоже самое, что мы делали "ручками" (работоспособно в УТ11 в трех последних конфигурациях до 11.0.9.15 включительно и в последних БП3.0) в процедуре, которая вызывается из всех документов (иногда журналов). Одновременное использование первого и второго способа будет приводить к ошибке (т.к. программный код второго способа будет пытаться добавить поле с именем ("Проведен"), которое уже существует по первому способу). На мой взгляд - этот способ наиболее предпочтителен, т.к. "включает" признак проведённости сразу для всех документов, причем правке подвергается один единственный общий модуль.
Третий способ (все делаем "ручками" в режиме Предприятие, для каждого пользователя, не нужно включать возможность изменений конфигурации, действие сохраняется при обновлении конфигурации):
Это как бы косвенный способ отображения признака проведенности на форме, без включения возможности изменения, указанный в частности TVM (за что ему отдельное спасибо):
Вместо картинки проведенности отображаем на форме (обычно скрытую) кнопку "отмена проведения", действуем через настройки формы, непосредственно из рабочей среды из формы документа (ключевым здесь является установка свойства "Только во Все действия" кнопки "Отмена проведения" в значение "Нет"):
В случае использования этого метода: если документ проведен - картинка проведенности будет "яркой" (кнопка доступной), в случае не проведенности - "тусклой" (кнопка недоступной):
Преимущества третьего способа:
- отсутствие необходимости включать возможность изменений в конфигураторе;
- сохранение его действия при обновлении конфигурации;
Недостатки третьего способа:
- нужно проделать подобную операцию для каждого пользователя (или скопировать для каждого пользователя);
- если у пользователя нет права распроведения документа, то он не увидит разницы (значок будет всегда "заблокирован");
- пользователь "случайно" может распровести документ (просто нажав на эту кнопку);
- на мой взгляд - меньшая наглядность.
UPD: 05.06.2013 Вариант программной настройки для УТ 11.1.х (проверено на 11.1.2.8 и более ранних)
В любой процедуре, вызываемой из модуля формы ПриСозданииНаСервере документа, например в ОбщемМодуле.ДополнительныеОтчетыИОбработки в экспортной процедуре ПриСозданииНаСервере, в самом начале добавляем вызов процедуры ДобавитьПризнакПроведенностиНаФорму(ЭтаФорма), которая практически повторяет вышеописанный код:
//Добавлена вся процедура (Картинка проведенности Начало)
Процедура ДобавитьПризнакПроведенностиНаФорму(Форма)
ИмяФормыМассив = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(Форма.ИмяФормы, ".");
Если ИмяФормыМассив[0] = "Документ" и ИмяФормыМассив[3] = "ФормаДокумента" Тогда
Если Метаданные.Документы[ИмяФормыМассив[1]].Проведение = Метаданные.СвойстваОбъектов.Проведение.Разрешить
И Не Форма.Элементы.Найти("Номер") = Неопределено
Тогда
ГруппаПроведенИНомер = Форма.Элементы.Вставить("ГруппаПроведенИНомер", Тип("ГруппаФормы"), Форма.Элементы.Номер.Родитель, Форма.Элементы.Номер);
ГруппаПроведенИНомер.Вид = ВидГруппыФормы.ОбычнаяГруппа;
ГруппаПроведенИНомер.Отображение = ОтображениеОбычнойГруппы.Нет;
ГруппаПроведенИНомер.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Горизонтальная;
ГруппаПроведенИНомер.РастягиватьПоГоризонтали = Форма.Элементы.Номер.РастягиватьПоГоризонтали;
ГруппаПроведенИНомер.РастягиватьПоВертикали = Форма.Элементы.Номер.РастягиватьПоВертикали;
ГруппаПроведенИНомер.ОтображатьЗаголовок = Ложь;
Форма.Элементы.Переместить(Форма.Элементы.Номер, ГруппаПроведенИНомер);
ПолеПроведен = Форма.Элементы.Вставить("Проведен", Тип("ПолеФормы"), Форма.Элементы.Номер.Родитель, Форма.Элементы.Номер);
ПолеПроведен.Вид = ВидПоляФормы.ПолеКартинки;
ПолеПроведен.ПутьКДанным = "Объект.Проведен";
ПолеПроведен.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет;
ПолеПроведен.КартинкаЗначений = БиблиотекаКартинок.СинтаксическийКонтроль;
ПолеПроведен.Рамка = Новый Рамка(ТипРамкиЭлементаУправления.БезРамки);
ПолеПроведен.Ширина = 3;
ПолеПроведен.Высота = 1;
ПолеПроведен.РастягиватьПоГоризонтали = Ложь;
ПолеПроведен.РастягиватьПоВертикали = Ложь;
ПолеПроведен.Подсказка = "Проведен";
КонецЕсли;
КонецЕсли;
КонецПроцедуры // Картинка проведенности Окончание
Здесь группа ГруппаПроведенИНомер обеспечивает нормальное отображение признака проведенности в формах, в которых элемент Номер входит в группу, элементы которой сгруппированы вертикально, например форма документа СчетФактураВыданный.