Разберем ещё один вопрос, который часто возникает у начинающих программистов при разработке печатных форм с применением табличных документов. Иногда, возникают случаи, когда в табличном документе необходимо использовать расшифровку: сделать так, чтобы при двойном клике на ячейку печатной формы выходила какая-либо информация. В этой статье я расскажу о двух простых способах применения расшифровки в табличном документе. В первом случае, мы будем просто открывать основную форму элемента справочника при двойном клике мышкой по ячейке с названием этого справочника. Во втором случае, мы будем выводить строку с номером и датой документа при двойном клике по ячейке в шапке, где эта информация отображается.
Расшифровка в табличном документе это возможность вывести дополнительную информацию по двойному клику мышки на какую-либо ячейку документа. Если событие расшифровки специально как-то не обрабатывается (а обрабатывать расшифровку можно только тогда, когда мы выводим табличный документ на форме, а не в отдельном окне), то может быть отработано два варианта: или будет открыта основная форма объекта, если мы имеем дело с ссылочным типом, или просто выйдет строка для всех остальных типов. Поскольку в нашем примере, табличный документ открывается в отдельном окне, а не где-то на управляемой форме, то в расшифровку мы будем передавать или ссылочный тип, или какую-нибудь строку.
Для этой статьи я использую макет табличного документа, сделанный ранее.
>>Создание и оформление макета табличного документа<<<
Применение расшифровки с ссылочным типом
Реализуем следующую расшифровку: при двойном клике на ячейку со складом откроется основная форма элемента склада, который указан в ячейке.
Первым делом, доработаем наш макет следующим образом: в область шапки добавим новое поле, в котором будем выводить название склада.
У этой ячейки в свойстве Заполнение укажем значение Параметр, и также заполним свойства Параметр и ПараметрРасшифровки, где укажем значения Склад и СкладСсылка.
Параметр отвечает за то, что будет выведено в печатную форму. А ПараметрРасшифровки отвечает за то, что будет отработано при двойном клике на эту область.
Теперь доработаем вывод нашей печатной формы. Подробная информация, как я это сделал есть в этой статье:
>>>Выводим печатную форму, используя подчиненную команду<<<
Первым делом нам нужно сделать так, чтобы табличный документ открывался только на просмотр (иначе при двойном клике мы будем «проваливаться» в ячейку), поэтому установим соответствующему свойству значение Истина.
ТабДокумент = Новый ТабличныйДокумент; ТабДокумент.ТолькоПросмотр = Истина;
Следующим шагом доработаем запрос: будем выводить наименование склада (его запишем в простой параметр), и ссылку на склад для расшифровки.
Запрос.Текст = "ВЫБРАТЬ | ПриходТовара.Проведен КАК Проведен, | ПриходТовара.Номер КАК Номер, | ПриходТовара.Дата КАК Дата, | ПриходТовара.Склад КАК СкладСсылка, | ПриходТовара.Склад.Наименование КАК Склад, | ПриходТовараСписокТоваров.НомерСтроки КАК НомерСтроки, | ПриходТовараСписокТоваров.Номенклатура.Наименование КАК Номенклатура, | ПриходТовараСписокТоваров.Количество КАК Количество, | ПриходТовараСписокТоваров.Цена КАК Цена, | ПриходТовараСписокТоваров.Сумма КАК Сумма, | ПриходТовара.Ссылка КАК Ссылка |ИЗ | Документ.ПриходТовара.СписокТоваров КАК ПриходТовараСписокТоваров | ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПриходТовара КАК ПриходТовара | ПО ПриходТовараСписокТоваров.Ссылка = ПриходТовара.Ссылка |ГДЕ | ПриходТовара.Ссылка В(&Массив) |ИТОГИ ПО | Ссылка";
Запрос готов, теперь осталось заполнить параметры и вывести их в табличную область.
Пока ВыборкаДокумент.Следующий() Цикл Шапка = Макет.ПолучитьОбласть("Шапка"); Шапка.Параметры.НомерДок = ВыборкаДокумент.Номер; Шапка.Параметры.ДатаДок = Формат(ВыборкаДокумент.Дата,"ДФ=dd.MM.yyyy"); Шапка.Параметры.Склад = ВыборкаДокумент.Склад; Шапка.Параметры.СкладСсылка = ВыборкаДокумент.СкладСсылка; ТабДокумент.Вывести(Шапка); //остальное тело цикла.... КонецЦикла;
На этом наша доработка вывода печатной формы закончилась.
Теперь, если мы выведем нашу печатную форму и кликнем на склад в шапке документа, то откроется форма склада.
Применение расшифровки со строкой
Реализуем еще более простой способ расшифровки: при клике на ячейку, где отображается информация о документе с номером и датой, будем выводить дублирующую строку с более расширенной информацией.
Для этого перейдем в палитру свойств нужной ячейки и заполним свойство ПараметрРасшифровки.
Нам осталось в месте, где заполняется шапка этого табличного документа отработать заполнение нового параметра для области шапки.
Шапка.Параметры.РасшифровкаДок = "Документ ""Поступление товаров"" № " + ВыборкаДокумент.Номер + " от " + Формат(ВыборкаДокумент.Дата,"ДЛФ=DD");
Посмотрим, как будет отрабатывать расшифровка в этом случае.
В общем виде процедура заполнения табличного документа с применением обеих расшифровок будет иметь следующий вид:
Функция СформироватьПечатныйДокумент(МассивДокументов) Экспорт ТабДокумент = Новый ТабличныйДокумент; ТабДокумент.ТолькоПросмотр = Истина; Макет = ПолучитьМакет("Макет"); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ПриходТовара.Проведен КАК Проведен, | ПриходТовара.Номер КАК Номер, | ПриходТовара.Дата КАК Дата, | ПриходТовара.Склад КАК СкладСсылка, | ПриходТовара.Склад.Наименование КАК Склад, | ПриходТовараСписокТоваров.НомерСтроки КАК НомерСтроки, | ПриходТовараСписокТоваров.Номенклатура.Наименование КАК Номенклатура, | ПриходТовараСписокТоваров.Количество КАК Количество, | ПриходТовараСписокТоваров.Цена КАК Цена, | ПриходТовараСписокТоваров.Сумма КАК Сумма, | ПриходТовара.Ссылка КАК Ссылка |ИЗ | Документ.ПриходТовара.СписокТоваров КАК ПриходТовараСписокТоваров | ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПриходТовара КАК ПриходТовара | ПО ПриходТовараСписокТоваров.Ссылка = ПриходТовара.Ссылка |ГДЕ | ПриходТовара.Ссылка В(&Массив) |ИТОГИ ПО | Ссылка"; Запрос.УстановитьПараметр("Массив",МассивДокументов); ВыборкаДокумент = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Ссылка"); Пока ВыборкаДокумент.Следующий() Цикл Если Не ВыборкаДокумент.Проведен Тогда Сообщить("Документ №" + ВыборкаДокумент.Номер + " от " + ВыборкаДокумент.Дата + " не проведен!"); Продолжить; КонецЕсли; Шапка = Макет.ПолучитьОбласть("Шапка"); Шапка.Параметры.НомерДок = ВыборкаДокумент.Номер; Шапка.Параметры.ДатаДок = Формат(ВыборкаДокумент.Дата,"ДФ=dd.MM.yyyy"); Шапка.Параметры.Склад = ВыборкаДокумент.Склад; Шапка.Параметры.СкладСсылка = ВыборкаДокумент.СкладСсылка Шапка.Параметры.РасшифровкаДок = "Документ ""Поступление товаров"" № " + ВыборкаДокумент.Номер + " от " + Формат(ВыборкаДокумент.Дата,"ДЛФ=DD"); ТабДокумент.Вывести(Шапка); ШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы"); ТабДокумент.Вывести(ШапкаТаблицы); Выборка = ВыборкаДокумент.Выбрать(ОбходРезультатаЗапроса.Прямой); ОбластьСтрокаТаблицы = Макет.ПолучитьОбласть("СтрокаТаблицы"); Пока Выборка.Следующий() Цикл ОбластьСтрокаТаблицы.Параметры.Заполнить(Выборка); ТабДокумент.Вывести(ОбластьСтрокаТаблицы); КонецЦикла; ОбластьПодвал = Макет.ПолучитьОбласть("Подвал"); ТабДокумент.Вывести(ОбластьПодвал); ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц(); КонецЦикла; ЕстьПечать = ТабДокумент.Области.Количество() > 0; Возврат ?(ЕстьПечать, ТабДокумент, Неопределено); КонецФункции
Вывод табличного документ на управляемой форме
Табличный документ на управляемой форме 1С 8.3
Как использовать расшифровку табличного документа на управляемой форме 1С
Расшифровка в табличном документе на управляемой форме 1С 8.3
Более подробно и основательно разработка в 1С дается в моей книге: «Программировать в 1С за 11 шагов»
Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»
- Книга написана понятным и простым языком — для новичка.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника;
О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
- Очень доступный и понятный язык изложения
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Поймете идеологию управляемого приложения 1С
- Узнаете, как разрабатывать управляемое приложение;
- Научитесь разрабатывать управляемые формы 1С;
- Сможете работать с основными и нужными элементами управляемых форм
- Программирование под управляемым приложением станет понятным
Промо-код на скидку в 15% — 48PVXHeYu
Вступайте в мои группы:
Вконтакте: https://vk.com/1c_prosto
Фейсбуке: https://www.facebook.com/groups/922972144448119/
ОК: http://ok.ru/group/52970839015518
Твиттер: https://twitter.com/signum2009
Уважаемый Ильяс, сделайте пожалуйста в телеграмме возможность задавать вопросы, очень нуждаюсь в вашей помощи. Заранее спасибо.
а как скопировать текст в последнем примере?