Процедура расшифровки ячейки таблицы в отчетах 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 расшифровка

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

Универсальные функции Работа с интерфейсом Программист 1С:Предприятие 7.7 1C77 Россия Абонемент ($m)

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

1 стартмани

27.09.2016    20294    3    HAMMER_59    6    

2

Информационная безопасность Универсальные функции Программист 1С:Предприятие 7.7 Бесплатно (free)

При использовании терминалок для удаленных баз, иногда при входе в базу данных необходимо исключить возможность входа пользователей с компьютеров с другим часовым поясом. Например, работают в Новосибирской базе с временем UTC +6 и пытаются зайти в базу с UTC +3.

16.05.2016    14805    kudenzov    3    

11

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

Суммирование чисел в столбце, выделенных мышкой, для 1С:Предприятие 7.7. В любом отчете, печатной форме или текстовом документе выделяете мышкой столбец с числами или группу ячеек в колонке таблицы, нажимаете на кнопку панели инструментов и в строке состояния получаете сумму. Пользоваться очень просто, удобно и быстро.

1 стартмани

09.03.2016    20567    4    электра    9    

4

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

Человек, работающий в 1С, в силу своей практики и опыта может нуждаться в средствах программирования, в 1С не представленных. В публикации описаны средства отложенного вызова функций, каринга параметров, композиции и др., в основе которых лежит вызов функции посредством функции Шаблон. Несмотря на простоту, созданный за несколько лет работы в 1С 7.7 набор функций обрел мощь, достаточную для лаконичной реализации указанных целей.

1 стартмани

17.09.2015    17142    3    rozhkovdmitriy    21    

25

Универсальные функции Запросы Программист 1С:Предприятие 7.7 1С:Предприятие 8 Бесплатно (free)

На эту тему уже есть статьи, но этот способ нигде не описан. Хотя я его использую с тех пор, как занимаюсь программированием. Его преимущество в простоте и универсальности: можно применять на 1С, SQL, а также в любом другом языке программирования.

05.07.2015    24392    json    3    

22

Универсальные функции Программист 1С:Предприятие 7.7 1С:Предприятие 8 1C:Бухгалтерия 1C77 Абонемент ($m)

Я очень часто использую группировку данных по полю и полям, как в восьмерке, так и в семерке. Это аналог запроса Итоги, но там строится дерево, а в большинстве случаев нужны "плоские данные". Да и делать запрос в большинстве случаев более накладный процесс, чем работа с ТЗ. Все достоинства такого подхода приведены на примере метода универсального списания по париям, а так же отбора строк в ТЗ по произвольному условию. Для 7.7 еще отчеты сравнения двух ТЗ. Работая с различными базами для упрощения сравнения номенклатуры, или как аналог джойнов(join), сделал сравнение двух таблиц значений по нескольким полям. Пока группировки полей должны быть уникальны. Часто приходится искать дубли, для универсального поиска есть ДублиВТзПоПолю и пример в Тест.ert.

1 стартмани

25.06.2015    41923    4    Serginio    4    

4

Универсальные функции Программист 1С:Предприятие 7.7 1C77 Бесплатно (free)

Вывод числительных прописью в родительном падеже штатными средствами в три строчки кода.

20.06.2015    15563    gimalaj    3    

14

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

Запуск программ PHP на сервере по прямому адресному запросу. Дополнительная возможность - передавать параметры методом GET-запросов.

1 стартмани

15.09.2014    12191    7    kwadro    1    

0
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. CheBurator 3234 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. Доня 289 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 Сейчас в теме
Процедура тоже хороша. Но главное - спасибо за пример работы с процедурой.
Для отправки сообщения требуется регистрация/авторизация