Добавим статус согласования из подключенной базы 1С: Документооборот:
1. Создадим регистр сведений для хранения состояний и быстрого чтения из него
СостоянияСогласованияОбъектовДО измерение ОбъектСогласования, реквизит Состояние
2. Добавить код в ИнтеграцияС1СДокументооборотПереопределяемый.ПриИзмененииСостоянияСогласования
ТипПредмета = ТипЗнч(ПредметСогласования);
Если РегистрыСведений.СостоянияСогласованияОбъектовДО.ВозможноСохранениеСогласования(ТипПредмета) Тогда
РегистрыСведений.СостоянияСогласованияОбъектовДО.СохранитьСостояниеОбъекта(ПредметСогласования, Состояние);
Возврат;
КонецЕсли;
3. Добавить код в модуль менеджера регистра СостоянияСогласованияОбъектовДО
Процедура СохранитьСостояниеОбъекта(ПредметСогласования, Состояние) Экспорт
УстановитьПривилегированныйРежим(Истина);
Набор = РегистрыСведений.СостоянияСогласованияОбъектовДО.СоздатьНаборЗаписей();
Набор.Отбор.ОбъектСогласования.Установить(ПредметСогласования);
Запись = Набор.Добавить();
Запись.ОбъектСогласования = ПредметСогласования;
Запись.Состояние = Состояние;
Набор.Записать();
КонецПроцедуры
Функция ПолучитьСостояниеСогласования(ПредметСогласования) Экспорт
УстановитьПривилегированныйРежим(Истина);
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| СостоянияСогласованияОбъектовДО.Состояние КАК Состояние
|ИЗ
| РегистрСведений.СостоянияСогласованияОбъектовДО КАК СостоянияСогласованияОбъектовДО
|ГДЕ
| СостоянияСогласованияОбъектовДО.ОбъектСогласования = &ОбъектСогласования";
Запрос.УстановитьПараметр("ОбъектСогласования", ПредметСогласования);
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
Возврат Неопределено;
КонецЕсли;
СостояниеСогласования = РезультатЗапроса.Выгрузить()[0].Состояние;
Возврат СостояниеСогласования;
КонецФункции
Функция ВозможноСохранениеСогласования(ТипПредмета) Экспорт
ДоступныеТипы = Новый Массив;
ДоступныеТипы.Добавить(Тип("ДокументСсылка._ДемоРеализацияТоваров"));
Если ДоступныеТипы.Найти(ТипПредмета) = Неопределено Тогда
Возврат Ложь;
Иначе
Возврат Истина;
КонецЕсли;
КонецФункции
4. Изменим динамический список объекта по добавлению колонки состояние (Пример):
ИЗ
Документ._ДемоРеализацияТоваров КАК Документ_ДемоРеализацияТоваров
{ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НаличиеФайлов КАК НаличиеФайлов
ПО (Документ_ДемоРеализацияТоваров.Ссылка = НаличиеФайлов.ОбъектСФайлами)}
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостоянияСогласованияОбъектовДО КАК СостоянияСогласованияОбъектовДО
ПО (Документ_ДемоРеализацияТоваров.Ссылка = СостоянияСогласованияОбъектовДО.ОбъектСогласования)
5. Добавим модуль ОбнСост_СостоянияСервер с текстом
Процедура ДобавитьПолеСтатуса(ЭтаФорма,
РодительскийЭлемент = Неопределено,
ЭлементПередКоторым = Неопределено) Экспорт
Если Не ЗначениеЗаполнено(ЭтаФорма.Объект.Ссылка) Тогда
Возврат;
КонецЕсли;
ДобавляемыеРеквизиты = Новый Массив;
ТипРеквизита = Новый ОписаниеТипов("ПеречислениеСсылка.СостоянияСогласованияВДокументообороте");
РеквизитФормы = Новый РеквизитФормы(
"СостояниеСогласования",
ТипРеквизита,
"",
"Состояние согласования");
ДобавляемыеРеквизиты.Добавить(РеквизитФормы);
ЭтаФорма.ИзменитьРеквизиты(ДобавляемыеРеквизиты);
ЭтаФорма.СостояниеСогласования = РегистрыСведений.СостоянияСогласованияОбъектовДО.ПолучитьСостояниеСогласования(ЭтаФорма.Объект.Ссылка);
Если ЭлементПередКоторым = Неопределено Тогда
Если РодительскийЭлемент = Неопределено Тогда
ПолеВвода = ЭтаФорма.Элементы.Добавить("ФормаСостояниеСогласования", Тип("ПолеФормы"), ЭтаФорма);
Иначе
ПолеВвода = ЭтаФорма.Элементы.Добавить("ФормаСостояниеСогласования", Тип("ПолеФормы"), РодительскийЭлемент);
КонецЕсли;
Иначе
Если РодительскийЭлемент = Неопределено Тогда
ПолеВвода = ЭтаФорма.Элементы.Вставить("ФормаСостояниеСогласования", Тип("ПолеФормы"), ЭтаФорма, ЭлементПередКоторым);
Иначе
ПолеВвода = ЭтаФорма.Элементы.Вставить("ФормаСостояниеСогласования", Тип("ПолеФормы"), РодительскийЭлемент, ЭлементПередКоторым);
КонецЕсли;
КонецЕсли;
ПолеВвода.Вид = ВидПоляФормы.ПолеНадписи;
ПолеВвода.ПутьКДанным = "СостояниеСогласования";
КонецПроцедуры
Процедура ДобавлениеКолонкиСтатуса(Элементы, ЭлементПередКоторым) Экспорт
Элемент = Элементы.Вставить("СтатусСогласования", Тип("ПолеФормы"), Элементы.Список, ЭлементПередКоторым);
Элемент.ПутьКДанным = "Список.СтатусСогласования";
Элемент.Заголовок = "Статус согласования";
КонецПроцедуры
и для отображения статуса в формах объектов и формах списков добавим процедуру ДобавитьПолеСтатуса в ПриСозданииНаСервере формы объекта, и ДобавлениеКолонкиСтатуса в ПриСозданииНаСервере формы списка объекта.
Тестирование проводилось на библиотеке интеграции с ДО 1.1.18.6.