Каталог решений - Добавление состояния согласования из 1С: Документооборот

Добавление состояния согласования из 1С: Документооборот

Добавление состояния согласования из 1С: Документооборот

В наличии

Добавляем статус согласования из подключенной базы 1С Документооборот в типовые и нетиповые конфигурации с использованием библиотеки интеграции с 1С: Документооборотом.
Статусы добавляются в формы списка и формы объектов.

Категория:

Описание

Добавим статус согласования из подключенной базы 1С: Документооборот:

1. Создадим регистр сведений для хранения состояний и быстрого чтения из него

СостоянияСогласованияОбъектовДО измерение ОбъектСогласования, реквизит Состояние

2. Добавить код в ИнтеграцияС1СДокументооборотПереопределяемый.ПриИзмененииСостоянияСогласования

	ТипПредмета = ТипЗнч(ПредметСогласования);
	
	Если РегистрыСведений.СостоянияСогласованияОбъектовДО.ВозможноСохранениеСогласования(ТипПредмета) Тогда
		
		РегистрыСведений.СостоянияСогласованияОбъектовДО.СохранитьСостояниеОбъекта(ПредметСогласования, Состояние);
		
		Возврат;
		
	КонецЕсли;	

3. Добавить код в модуль менеджера регистра СостоянияСогласованияОбъектовДО

Процедура СохранитьСостояниеОбъекта(ПредметСогласования, Состояние) Экспорт

	УстановитьПривилегированныйРежим(Истина);
	
	Набор = РегистрыСведений.СостоянияСогласованияОбъектовДО.СоздатьНаборЗаписей();
	Набор.Отбор.ОбъектСогласования.Установить(ПредметСогласования);
	
	Запись = Набор.Добавить();
	Запись.ОбъектСогласования = ПредметСогласования;
	Запись.Состояние = Состояние;
	
	Набор.Записать();	
	
КонецПроцедуры

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

	ДоступныеТипы.Добавить(Тип("ДокументСсылка._ДемоРеализацияТоваров"));
	
	Если ДоступныеТипы.Найти(ТипПредмета) = Неопределено Тогда
		Возврат Ложь;
	Иначе 
		Возврат Истина;
	КонецЕсли;	

КонецФункции

4. Изменим динамический список объекта по добавлению колонки состояние (Пример):

ИЗ
	Документ._ДемоРеализацияТоваров КАК Документ_ДемоРеализацияТоваров
		{ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НаличиеФайлов КАК НаличиеФайлов
		ПО (Документ_ДемоРеализацияТоваров.Ссылка = НаличиеФайлов.ОбъектСФайлами)}
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостоянияСогласованияОбъектовДО КАК СостоянияСогласованияОбъектовДО
		ПО (Документ_ДемоРеализацияТоваров.Ссылка = СостоянияСогласованияОбъектовДО.ОбъектСогласования)

5. Добавим модуль ОбнСост_СостоянияСервер с текстом 

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

	Если ЭлементПередКоторым = Неопределено Тогда
		Если РодительскийЭлемент = Неопределено Тогда
			ПолеВвода = ЭтаФорма.Элементы.Добавить("ФормаСостояниеСогласования", Тип("ПолеФормы"), ЭтаФорма);
		Иначе 
			ПолеВвода = ЭтаФорма.Элементы.Добавить("ФормаСостояниеСогласования", Тип("ПолеФормы"), РодительскийЭлемент);		
		КонецЕсли;	
	Иначе 
		Если РодительскийЭлемент = Неопределено Тогда
			ПолеВвода = ЭтаФорма.Элементы.Вставить("ФормаСостояниеСогласования", Тип("ПолеФормы"), ЭтаФорма, ЭлементПередКоторым);
		Иначе 
			ПолеВвода = ЭтаФорма.Элементы.Вставить("ФормаСостояниеСогласования", Тип("ПолеФормы"), РодительскийЭлемент, ЭлементПередКоторым);		
		КонецЕсли;	
	КонецЕсли;
		
	ПолеВвода.Вид = ВидПоляФормы.ПолеНадписи;
	ПолеВвода.ПутьКДанным = "СостояниеСогласования";	
	
КонецПроцедуры

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

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

и для отображения статуса в формах объектов и формах списков добавим процедуру ДобавитьПолеСтатуса в ПриСозданииНаСервере формы объекта, и ДобавлениеКолонкиСтатуса в ПриСозданииНаСервере формы списка объекта.

Тестирование проводилось на библиотеке интеграции с ДО 1.1.18.6.

has been added to your cart:
Оформление заказа