Процедура расшифровки ячейки таблицы в отчетах 1С 7.7

24.09.15

Разработка - Универсальные функции

Хочу поделиться с вами универсальной процедурой для расшифровки ячеек печатной формы отчетов в 1С 7.7.

Процедура проста в эксплуатации: все, что надо сделать, это вставить ее в модуль печатной формы процедуры или обработки. После этого добавить в свойстве ячейки в поле Расшифровка – ссылку на объект (справочник, или документ).

Процедура ОбработкаЯчейкиТаблицы(Расшифровка,Флаг,Табл,Адрес)
    Перем ТекТип,ТекСписок, ТекЗнач, Конт;
    Если ПустоеЗначение(Расшифровка)=0 Тогда
        ТекСписок=СоздатьОбъект("СписокЗначений");
        ТекТип=ТипЗначенияСтр(Расшифровка);
        Если ТекТип="Справочник" Тогда
            ТекСписок.ДобавитьЗначение("1","Редактировать элемент");
            ТекСписок.ДобавитьЗначение("2","Просмотреть элемент");
            ТекСписок.ДобавитьЗначение("3","Найти в форме списка");
            Если ТекСписок.ВыбратьЗначение(ТекЗнач,,,,1)=1 Тогда
				Если ТекЗнач="1" Тогда
					ОткрытьФорму(Расшифровка,,0);
				ИначеЕсли ТекЗнач="2" Тогда
					ОткрытьФорму(Расшифровка,,1);
				ИначеЕсли ТекЗнач="3" Тогда
					Если ПустоеЗначение(Расшифровка.владелец)=0 тогда
						ОткрытьФорму(Расшифровка,,0);
					Иначе
						Конт="";
						ОткрытьФорму("Справочник." + Расшифровка.Вид() + "." + Метаданные.Справочник(Расшифровка.Вид()).ОсновнаяФорма.Идентификатор, Конт);
						Конт.АктивизироватьОбъект(Расшифровка);
						
					КонецЕсли;
				КонецЕсли;
			КонецЕсли;
		ИначеЕсли ТекТип="Документ" Тогда
			ТекСписок.ДобавитьЗначение("1","Редактировать документ");
			ТекСписок.ДобавитьЗначение("2","Просмотреть документ");
			ТекСписок.ДобавитьЗначение("3","Найти в своем журнале");
			ТекСписок.ДобавитьЗначение("4","Найти в общем журнале");
			Если ТекСписок.ВыбратьЗначение(ТекЗнач,,,,1)=1 Тогда
				Если ТекЗнач="1" Тогда
					ОткрытьФорму(Расшифровка,,0);
				ИначеЕсли ТекЗнач="2" Тогда
					ОткрытьФорму(Расшифровка,,1);
				ИначеЕсли ТекЗнач="3" Тогда
					Конт="";
					ТекЖурнал=Метаданные.Документ(Расшифровка.Вид()).Журнал.Идентификатор;
					ОткрытьФорму("Журнал." + ТекЖурнал + "." + Метаданные.Журнал(ТекЖурнал).ОсновнаяФорма.Идентификатор, Конт);
					Конт.УстановитьИнтервал(Расшифровка.ДатаДок, ПолучитьДатуТА());
					Конт.АктивизироватьОбъект(Расшифровка);
				ИначеЕсли ТекЗнач="4" Тогда
					Конт="";
					ТекЖурнал=Метаданные.ПолныйЖурнал.Идентификатор;
					ОткрытьФорму("Журнал." + ТекЖурнал + "." + Метаданные.Журнал(ТекЖурнал).ОсновнаяФорма.Идентификатор, Конт);
					Конт.УстановитьИнтервал(Расшифровка.ДатаДок, ПолучитьДатуТА());
					Конт.АктивизироватьОбъект(Расшифровка);
				КонецЕсли;
			КонецЕсли;
		Иначе
			Флаг=1;
		КонецЕсли;
	Иначе
		Флаг=1;
	КонецЕсли;
КонецПроцедуры

Отчеты обработки 1с 77 расшифровка

См. также

Библиотека процедур и функций для технологической платформы "1С: Предприятие 7.7"

Универсальные функции Платформа 1С v7.7 Россия Абонемент ($m)

В библиотеку собраны различные функции по работе с документами, журналами, типами данных, строками, датой и временем, таблицами значений, Excel, файлами, XML, JSON, Http-сервисами, SMTP серверами и т.п.

1 стартмани

22.12.2023    631    8    user706545_kseg1971    0    

4

1С 7.7 и новый 1С:Контрагент

Универсальные функции Платформа 1С v7.7 Конфигурации 1cv7 Россия Бесплатно (free)

Получение реквизитов контрагентов из 1С:Контрагент для старых конфигураций под 1с 7.7.

25.04.2022    1802    zhenyat    7    

6

Печать таблицы значений в 1С 7.7 при отладке

Универсальные функции Платформа 1С v7.7 Россия Бесплатно (free)

Функция выводит таблицу значений в табличный документ. (v7.7) Особенно полезно при отладке. Не нужно вносить изменения в код, вызываем функцию как вычисляемое выражение при останове. Если таблица обрабатывается в несколько этапов, можно вывести её после каждого и визуально проследить эволюцию.

30.06.2021    4371    Zoltan_Black    11    

2

Установка принтера по умолчанию для 1С 7.7

Универсальные функции Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Установка принтера по умолчанию в 1С 7.7. Обработка может быть полезна в том случае, когда нужно установить принтер по умолчанию, а доступа к рабочему столу нет (например, терминальный режим без рабочего стола или remoteApp)

1 стартмани

13.02.2019    13259    4    alsen    3    

3

Формирование строки json в 1С: 7.7

Универсальные функции Платформа 1С v7.7 Конфигурации 1cv7 1С:Комплексная 7.7 Абонемент ($m)

Предлагается набор функций 1с 7.7 для формирования строки json стандартными средствами.

1 стартмани

10.12.2018    10045    malovandrey    1    

17

Как создать индикатор в 1С:Предприятии 7.7

Универсальные функции Работа с интерфейсом Платформа 1С v7.7 Конфигурации 1cv7 Россия Абонемент ($m)

В статье дано описание создания индикатора на форме в среде разработки 1С:Предприятие 7.7 исключительно типовыми средствами.

1 стартмани

27.09.2016    18658    2    HAMMER_59    6    

2
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. CheBurator 3119 24.09.15 21:37 Сейчас в теме
Этот же код можно переписать с количеством если и иначе уполовиненым. Задолбали восьмиэтажные конструкции
3. vcv 89 25.09.15 12:07 Сейчас в теме
(1) CheBurator,
"Если Вам в программе нужно условие, то если в нём должны быть ещё несколько вложенных условий, то если без них совсем-совсем никак не обойтись, то если вам позволяет ваше время, то снабдите программу отступами и комментариями, иначе потом будет очень трудно читать такой текст, иначе сделайте это позже - когда будете посвободней, иначе минимизируйте количество условий, иначе не захламляйте код условиями, иначе обойдитесь вообще без условий."
Slypower; rimma_n; +2 Ответить
2. Anzhey 17 25.09.15 10:16 Сейчас в теме
Это просто работает, Я не претендую на идеал и прошу строго не судить :)
4. Доня 284 25.09.15 12:25 Сейчас в теме
Вставила, посмотрела.
но я пользуюсь другим способом, если очень необходимо, то
не в модуле а в форме документа > свойство ячейки > в окне Расшифровка > ставлю Документ.ТекущийДокумент()# или Справочник.ТекущийСправочник()#
и работает.
Ваше решение тоже работает,
Спасибо
но модуль ковырять не хочется
flou; kepka; +2 Ответить
5. vcv 89 25.09.15 14:07 Сейчас в теме
(4) Доня, Если есть желание и возможность "поковырять", такие мелкие фишки могут неплохо экономить время пользователей. Например, вот так http://1drv.ms/1LBVb8Y
8. Isay 15.06.17 18:20 Сейчас в теме
(5) Владислав, ссылка на шикарные фото с шикарными примерами. Ребята, может кто то поделиться живыми рабочими примерами как такие фишки сделать для пользователе? Заранее спасибо. Почта для ответов plastcon@mail.ru
9. vcv 89 15.06.17 20:40 Сейчас в теме
(8)
Владислав, ссылка на шикарные фото с шикарными примерами. Ребята, может кто то поделиться живыми рабочими примерами как такие фишки сделать для пользователе? Заранее спасибо. Почта для ответов plastcon@mail.ru

Подозреваю, что кто хотел/мог поделиться, тот уже поделился. Ищите на этом сайте.
У меня много подобных удобств, но так как конфигурация переписанная практически полностью, выделить небольшие независимые куски кода, которые реализуют функционал, слишком трудозатратно.
10. Isay 16.06.17 08:30 Сейчас в теме
(9) Владислав, а md-файлом не могли бы поделиться? Не сочтите за наглость. Заранее спасибо.
11. vcv 89 16.06.17 14:17 Сейчас в теме
(10) Не могу. Политика предприятия запрещает. Это же собственность компании, за зарплату купленная.
6. rimma_n 160 30.09.15 11:13 Сейчас в теме
(4) Доня, здесь в отличие от Документ.ТекущийДокумент() / Справочник.ТекущийСправочник() можно не только открыть форму, но и посмотреть в журнале / списке. Возьму на заметку.
7. debby 14.10.15 09:15 Сейчас в теме
Не поняла, зачем это вообще надо... :(
12. user618970_bsgrti 03.08.17 09:33 Сейчас в теме
Спасибо за код. Давно с 1С и открытие в журнале использую, но алгоритм другой и позиционируется на док со второго раза. У Вас позаимствовал (а заодно вспомнил) после открытия журнала: Конт.АктивизироватьОбъект(Расшифровка); а то собирался редактировать модуль журнала, чтобы фокусироваться на переданный документ.
Также хочу предложить код по "Найти в форме списка" для подчиненного справочника:
 ИначеЕсли ТекЗнач="3" Тогда
    Конт="";
    ОткрытьФорму("Справочник." + Расшифровка.Вид() + "." + Метаданные.Справочник(Расшифровка.Вид()).ОсновнаяФорма.Идентификатор, Конт);
    Если ПустоеЗначение(Расшифровка.владелец)=0 тогда
        Конт.ИспользоватьВладельца(Расшифровка.владелец);
    КонецЕсли;
    Конт.АктивизироватьОбъект(Расшифровка);
КонецЕсли;
13. pakko 10 09.07.18 10:47 Сейчас в теме
Если ПустоеЗначение(Расшифровка.владелец)=0 тогда

А не надо через метаданные проверять, есть ли у справочника владелец
или это поле всегда гарантированно есть у любого справочника, просто без подчинения оно пустое
14. vivaldi 02.09.20 13:18 Сейчас в теме
Процедура тоже хороша. Но главное - спасибо за пример работы с процедурой.
Оставьте свое сообщение