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

29.06.17

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

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

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

Наименование Файл Версия Размер
Консоль отчетов СКД+
.erf 55,05Kb
10
.erf 55,05Kb 10 Скачать

При стандартном формировании отчета на СКД  в расшифровке хранится идентификатор расшифровки, при этом объекты ссылочного типа не открываются. Таким образом, если сохранить табличный документ в формате 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 и впоследствии открыть в этой же базе, при этом сохранится возможность открывать объекты ссылочного типа.

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

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

См. также

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

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

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

13000 руб.

02.09.2020    120006    656    389    

702

Генератор схемы компоновки данных (СКД), написание кода схемы программно

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

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

3 стартмани

05.02.2024    3897    24    obmailok    17    

63

Набор-объект для СКД по тексту или запросу

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

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

1 стартмани

31.01.2024    1964    2    Yashazz    0    

29

СКД на JavaScript в 1С

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

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

2 стартмани

11.12.2023    8040    20    John_d    25    

122

Использование менеджера временных таблиц в СКД

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

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

05.12.2023    4529    PROSTO-1C    13    

61

Модель СКД

Инструментарий разработчика СКД Платформа 1С v8.3 Система компоновки данных Абонемент ($m)

DSL для работы с СКД.

1 стартмани

15.11.2023    5712    15    kalyaka    5    

85

Пользовательские настройки отчетов 1С. Часть 1. Простые и расширенные настройки

СКД Инструкции пользователю Платформа 1С v8.3 Конфигурации 1cv8 1С:Бухгалтерия 3.0 Россия Бесплатно (free)

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

18.09.2023    6361    accounting_cons    5    

29

Разрыв страницы в СКД. Легко!

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

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

01.09.2023    4414    KVIKS    15    

80
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. ixijixi 1761 29.06.17 10:57 Сейчас в теме
Тогда уж
Состояние("Spuding spreadsheet document...");
=)
А вообще, неплохо бы добавить очистку ячеек от элементов расшифровки типа ДействиеОбработкиРасшифровкиКомпоновкиДанных.Расшифровать и т.п.
2. SITR-utyos 1419 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 1868 09.12.20 15:15 Сейчас в теме
(6) Скачайте отчет - там нет ошибки :-)
Видимо, автор намеренно привнес ошибку в код, чтобы не копировали бездумно. Её легко исправить :-)
8. 028 10.12.20 08:31 Сейчас в теме
(7) Спасибо уже исправил))
11. user1508952 04.05.23 14:38 Сейчас в теме
(6) Добрый день! А как все таки исправить данную ошибку?
9. folo 222 15.04.21 09:58 Сейчас в теме
Большое человеческое спасибо. Помогло даже через несколько лет
10. user1544628 22.06.21 11:29 Сейчас в теме
Большое спасибо. Мне тоже помогло через несколько лет.
Оставьте свое сообщение