Расшифровка табличного документа, сформированного СКД

29.06.17

Разработка - СКД

Функция делает постобработку табличного документа, чтобы можно было открыть поля ссылочного типа, не имея данных расшифровки (например, после сохранения в mxl)

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Консоль отчетов СКД+
.erf 55,05Kb
11
11 Скачать (2 SM) Купить за 2 150 руб.

При стандартном формировании отчета на СКД  в расшифровке хранится идентификатор расшифровки, при этом объекты ссылочного типа не открываются. Таким образом, если сохранить табличный документ в формате mxl, а затем его снова открыть, то при клике в ячейку открывается идентификатор расшифровки(просто число), а не сам объект, ссылка на который была сохранена

Чтобы победить эту проблему, необходимо заменить значение расшифровки в ячейках табличного документа просто на объекты ссылочного типа

Процедура ОбработатьРасшифровкиОтчетаНаСКД(ТабДок, ДанныеРасшифровки)
	
	Если ТабДок.ШиринаТаблицы * ТабДок.ВысотаТаблицы > 10000 Тогда
		Ответ = Вопрос("You are about to save document " + ТабДок.ШиринаТаблицы + " x " + ТабДок.ВысотаТаблицы + " in dimensions.
		|This will take at least " + Цел(ТабДок.ШиринаТаблицы * ТабДок.ВысотаТаблицы/700) + " sec. Are you sure?", РежимДиалогаВопрос.ДаНет,,, Метаданные().Синоним);
		Если Ответ = КодВозвратаДиалога.Нет Тогда
			Возврат
		КонецЕсли;
	КонецЕсли;
	
	Состояние("Окучиваем табличный документ...");
	ПрошлоВремени = ТекущаяДата();
	
	ТипВсеСсылкиСправочники = Справочники.ТипВсеСсылки();
	ТипВсеСсылкиДокументы = Документы.ТипВсеСсылки();
	
	КэшНужныхТипов = Новый Соответствие;
	Для Каждого Тип Из ТипВсеСсылкиСправочники.Типы() Цикл
		КэшНужныхТипов.Вставить(Тип, Истина);
	КонецЦикла;
	
	Для Каждого Тип Из ТипВсеСсылкиДокументы.Типы() Цикл
		КэшНужныхТипов.Вставить(Тип, Истина);
	КонецЦикла;
	
	Для Row = 1 По ТабДок.ВысотаТаблицы Цикл
		Для Col = 1 По ТабДок.ШиринаТаблицы Цикл
			
			Ячейка = ТабДок.Область(Row, Col);
			
			Если ТипЗнч(Ячейка.Расшифровка) <> Тип("ИдентификаторРасшифровкиКомпоновкиДанных") Тогда
				Продолжить;
			КонецЕсли;
			
			// Так же из данных расшифровки возьмем ссылку на номенклатуру
			//МассивПолейРасшифровки = ТиповыеОтчеты.ПолучитьМассивПолейРасшифровки(Ячейка.Расшифровка, ДанныеРасшифровки);
			ЭлементРасшифровки = ДанныеРасшифровкиКонсоли.Элементы[Ячейка.Расшифровка];
			Если ЭлементРасшифровки.ОсновноеДействие = ДействиеОбработкиРасшифровкиКомпоновкиДанных.ОткрытьЗначение Тогда
				МассивПолейРасшифровки = ЭлементРасшифровки.ПолучитьПоля();
				Для Каждого ЭлементМассива Из МассивПолейРасшифровки Цикл
					
					ТипЗначения = ТипЗнч(ЭлементМассива.Значение);
					
					Если ТипЗнч(ЭлементМассива) = Тип("ЗначениеПоляРасшифровкиКомпоновкиДанных")
						И (КэшНужныхТипов.Получить(ТипЗначения) = Истина)
						И	 ЭлементМассива.Иерархия = Ложь Тогда
						
						Ячейка.Расшифровка = ЭлементМассива.Значение;
						Прервать;
						
					КонецЕсли;
				КонецЦикла;
			КонецЕсли;
			
			ОбработкаПрерыванияПользователя();
			
		КонецЦикла;
	КонецЦикла;
	
	ПрошлоВремени = ТекущаяДата()-ПрошлоВремени;
	Сообщить("Затрачено времени на выполнение процесса: "+Формат('00010101'+ПрошлоВремени,"ДЛФ=T; ДП=0")+" сек");
	
КонецПроцедуры

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

Про расшифровку табличного документа на сайте ИТС

В качестве примера доработанная Консоль отчетов СКД+ (обычное приложение).

См. также

SALE! 15%

Инструментарий разработчика Роли и права Запросы СКД Программист Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

10000 руб.

02.09.2020    159431    872    399    

861

Запросы СКД Программист Стажер Система компоновки данных Россия Бесплатно (free)

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

15.05.2024    8684    implecs_team    6    

47

Инструментарий разработчика СКД Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

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

3 стартмани

05.02.2024    6996    56    obmailok    21    

79

Запросы СКД Программист Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Есть список полей в виде текста, или запрос - закидываем в набор СКД.

1 стартмани

31.01.2024    3148    5    Yashazz    1    

34

СКД WEB-интеграция Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Долгое время поддерживаю web-портал, в котором появилась необходимость создавать отчеты. Просмотрев различные фреймворки на js, я решил сделать свое решение, которое позволяло бы быстро разрабатывать и добавлять новые отчеты на web-портал.

2 стартмани

11.12.2023    10804    23    John_d    25    

124

СКД Программист Платформа 1С v8.3 Система компоновки данных Конфигурации 1cv8 Бесплатно (free)

Рассмотрим еще не получивший широкого распространения способ работы с внешними данным в СКД. В процессе обсуждения работы с СКД выяснилось, что многие не знакомы со способом помещения туда временной таблицы, полученной предварительно. Статья будет полезна разработчикам, знакомым с программным созданием СКД.

05.12.2023    8017    PROSTO-1C    15    

68
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. ixijixi 1913 29.06.17 10:57 Сейчас в теме
Тогда уж
Состояние("Spuding spreadsheet document...");
=)
А вообще, неплохо бы добавить очистку ячеек от элементов расшифровки типа ДействиеОбработкиРасшифровкиКомпоновкиДанных.Расшифровать и т.п.
2. SITR-utyos 1429 29.06.17 19:48 Сейчас в теме
(1) Дельная мысль, спасибо. Доработаем
3. Aurius 30.06.17 12:08 Сейчас в теме
Спасибо, интересно. Возьму на заметку.
4. chipolini 05.09.18 11:07 Сейчас в теме
Делал печатную форму документа используя СКД. Расшифровка выдавала цифры. Эта процедура решила проблему. Спасибо.
5. serpanik 03.12.19 15:21 Сейчас в теме
Именно этот вопрос сейчас и интересовал. Пытаюсь вернуть на мобильную платформу с помощью HTTP-сервиса табличный документ и вместо расшифровки были цифры. Спасибо автору.
Вот как бы вообще отключить в табличном документе все реакции, кроме как открытие/закрытие группировок? (СтандартнаяОбработка в Ложь изменял, не получилось добиться результата)
6. 028 09.12.20 15:11 Сейчас в теме
У меня ошибка Переменная не определена (ДанныеРасшифровкиКонсоли)
ЭлементРасшифровки = <<?>>ДанныеРасшифровкиКонсоли.Элементы[Ячейка.Расшифровка]; (Проверка: Толстый клиент (обычное приложение))
7. echo77 1906 09.12.20 15:15 Сейчас в теме
(6) Скачайте отчет - там нет ошибки :-)
Видимо, автор намеренно привнес ошибку в код, чтобы не копировали бездумно. Её легко исправить :-)
8. 028 10.12.20 08:31 Сейчас в теме
(7) Спасибо уже исправил))
11. user1508952 04.05.23 14:38 Сейчас в теме
(6) Добрый день! А как все таки исправить данную ошибку?
9. folo 226 15.04.21 09:58 Сейчас в теме
Большое человеческое спасибо. Помогло даже через несколько лет
10. user1544628 22.06.21 11:29 Сейчас в теме
Большое спасибо. Мне тоже помогло через несколько лет.
Оставьте свое сообщение