Доработка отчета "Структура подчиненности"

Отчеты - Анализ учета

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

Несколько небольших изменений в коде общей команды и общей форме  "Структура подчиненности" позволяют получить удобный отчет по всему дереву подчиненных документов. 

Вся информация по доработке представлена на рисунках к публикации.

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

В качестве оригинала для доработки использовался код Библиотеки стандартных подсистем, редакция 2.2 (2.2.4.45).
Отчет "Структура подчиненности" используется во всех типовых конфигурациях 1С.

Скачать файлы

Наименование Файл Версия Размер
ФайлыПубликации
.rar 214,15Kb
07.11.16
33
.rar 1.0 214,15Kb 33 Скачать

См. также

Комментарии
1. Владимир Астапов (vlastapov) 45 28.03.15 22:35 Сейчас в теме
Да, очень необходимо, спасибо!
2. Владимир Астапов (vlastapov) 45 28.03.15 22:38 Сейчас в теме
Жаль только с изменением исходной конфигурации. Может 1С сама встроит этот механизм?
3. Андрей Ро (AndrewVVS) 13.05.15 17:34 Сейчас в теме
Да, жесть! убрать суммы из прошлого варианта. А чтобы еще и вернуть возможность прямо из структуры проводить, распроводить, помечать на удаление документы - долго делать?
4. Александр Загребельный (hobi) 490 13.05.15 22:48 Сейчас в теме
(3) AndrewVVS, делать не долго.

Добавьте в модуль общей формы "СтруктураПодчиненности", например такой код:

&НаСервере
Процедура Действие(Док,Действие)
	
	Попытка
		Об = Док.ПолучитьОбъект();
		Если Действие = "Проведение" Тогда
			Если Об.ПометкаУдаления Тогда
				Об.УстановитьПометкуУдаления(Ложь);
			КонецЕсли;
			Если Об.Проведен Тогда
				Об.Записать(РежимЗаписиДокумента.ОтменаПроведения);
			Иначе	
				Об.Записать(РежимЗаписиДокумента.Проведение);
			КонецЕсли;	
		ИначеЕсли Действие = "ПометкаУдаления" Тогда
			Об.УстановитьПометкуУдаления(Не Об.ПометкаУдаления);
		КонецЕсли;	
		ОбновитьДеревоСтруктурыПодчиненности();
	Исключение
		Сообщить("Не удалось выполнить: " + Действие);
	КонецПопытки;
	
КонецПроцедуры

&НаСервереБезКонтекста
Функция СтатусДокумента(Док)
	
	Возврат Новый Структура("Проведен,ПометкаУдаления",Док.Проведен,Док.ПометкаУдаления);
	
КонецФункции

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


И не забудьте связать функцию ТаблицаОтчетаОбработкаДополнительнойРасшифровки() с событием обработка дополнительной расшифровки для элемента формы ТаблицаОтчета.
Тогда по правой кнопке мышки можно проводить/распроводить и изменять пометку удаления.
AndrewVVS; +1 Ответить
5. Андрей Ро (AndrewVVS) 14.05.15 11:33 Сейчас в теме
Спасибо! Заработало!! Правда все время пишет: "Использование модальных окон в данном режиме запрещено!" + когда стал переносить код В модуль команды пишет ошибку: Переменная не определена (Ссылка). ОткрытьФорму("ОбщаяФорма.СтруктураПодчиненности",Новый Структура("ОбъектОтбора,ВыбранныйОбъект", Ссылка, ПараметрКоманды),
6. Александр Загребельный (hobi) 490 14.05.15 14:57 Сейчас в теме
Про модальные окна: я не стал заморачиваться для краткости кода. Если сильно мешает, есть два пути убрать сообщение о запрете модальности:

1. В свойствах конфигурации (всё равно уже сняли с поддержки, если исправили код общего модуля и общей формы) установить "Режим использования модальности" в значение "Использовать". Если не работаете в режиме Web-клиента, это быстрее и проще.

2. Сделать рефакторинг строки (как рекомендует 1С):
ВыбранныйЭлемент = СписокЗн.ВыбратьЭлемент("Действие:",АктивнаяСтрока);
Заменить процедуру ВыбратьЭлемент() на ПоказатьВыборЭлемента(). Как это сделать - есть пример в справке по процедуре
ПоказатьВыборЭлемента().

Про модуль команды не совсем понятно, что вы сделали. В публикации шла речь только об изменениях в общей форме и общем модуле.
Нужен ваш код, чтобы ответить.
7. Александр Загребельный (hobi) 490 14.05.15 15:07 Сейчас в теме
(5) AndrewVVS, кажется я понял, в чем проблема с "Переменная не определена (Ссылка)". Обычно реквизит "Ссылка" не размещают на форме, поэтому из модуля формы в клиентской процедуре обратиться к нему нельзя. Поэтому опять же, есть два пути:

1. Создать функцию &НаСервере, которая возвращает значение ссылки для использования в вызове формы.
2. В самой форме у реквизита "Ссылка" установить флажок "Использовать всегда".

Надеюсь, поможет.
8. Андрей Ро (AndrewVVS) 14.05.15 16:08 Сейчас в теме
(6) hobi, и снова: СПАСИБО! уже заморочился с ВыбранныйЭлемент = СписокЗн.ПоказатьВыборЭлемента(Новый ОписаниеОповещения("Действие", ЭтотОбъект),"Действие:",АктивнаяСтрока);
http://its.1c.ru/db/metod8dev#content:5293:hdoc
P.S. в режиме Web-клиента не работаем, это ДЕЙСТВИТЕЛЬНО быстрее и проще!! :) установить "Режим использования модальности" в значение "Использовать"
9. Андрей Ро (AndrewVVS) 14.05.15 18:09 Сейчас в теме
(7) hobi, хотел убрать действия: "проведение документа" и "отмена проведения документа" для тех документов, которые не проводятся, например счета или инвентаризации по Метаданные.СвойстваОбъектов.Проведение.Разрешить, НО оказалось, что в версии 3.0 у этих документов свойство Проведение из "запретить" - стало "разрешить"!!, хотя никаких движений они так и не делают :).
10. Александр Загребельный (hobi) 490 14.05.15 19:55 Сейчас в теме
Проверку возможности проведения для документов, которые не проводятся, я не реализовал.
Просто минимальный код привел. Но сделать не проблема.
11. Константин Куликов (Светлый ум) 202 06.11.16 07:59 Сейчас в теме
-1. Обработки в архиве нет.
Оставьте свое сообщение