Заказы на доработку 1С (сервис удаленной работы)

Хранилище

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

Здравствуйте, гость ( Вход | Зарегистрироваться )



> обработка ячейки макета          
Lada Подменю пользователя
сообщение 12.08.10, 15:20
Сообщение #1

Общительный
**
Группа: Пользователи
Сообщений: 16
Из: Одесса
Спасибо сказали: 4 раз
Рейтинг: 0

Здравствуйте!
Подскажите пожалуйста как можно обработать выбор ячейки в макете.
Есть макет сделанный через конструктор печати. Нужно чтоб при выборе заголовка колонки или ячейки колонки происходило какое-либо действие.

Спасибо.

World1С Подменю пользователя
сообщение 12.08.10, 17:04
Сообщение #2

Оратор
Иконка группы
Квалифицированному 1С программисту
Группа: Местный
Сообщений: 358
Из: г.Луганск, обл.Луганская
Спасибо сказали: 110 раз
Рейтинг: 0

ПарвметРасшифровки - Укажите параметр, а лучше в типовой откройте в конфигураторе отчет оборотно-сальдовую ведомость и посмотрите как там реализован параметр расшифровки


Signature
В наше время люди всему знают цену, но понятия не имеют о подлинной ценности.
Оскар Уайлд

Спасибо сказали: Lada,

Lada Подменю пользователя
сообщение 13.08.10, 9:26
Сообщение #3

Общительный
**
Группа: Пользователи
Сообщений: 16
Из: Одесса
Спасибо сказали: 4 раз
Рейтинг: 0

Цитата(World1С @ 12.08.10, 19:04) *
ПарвметРасшифровки - Укажите параметр, а лучше в типовой откройте в конфигураторе отчет оборотно-сальдовую ведомость и посмотрите как там реализован параметр расшифровки


Спасибо за подсказку в каком направлении копать.
Разобралась))
Пример нашла на одном сайте. Спасибо Шумейко Светлане Ивановне за хорошее описание.
На всякий случай скопирую сюда, может кому пригодится.

Расшифровки бывают стандартные и нестандартные.
I) Стандартные:
может использоваться как непосредственно в табличном документе, так и в объекте ПолеТабличногоДокумента (т.е.табличный документ, размещенный не в отдельном окне, а непосредственно на форме).
Чтобы Расшифровка сработала, должны выполняться 3 условия:
1) Для ячейки табличного документа, из которой мы хотим вызвать Расшифровку, должно быть установлено свойство ПараметрРасшифровки. Например, мы хотим, чтобы по двойному щелчку на ячейке с названием контрагента открывалась форма элемента справочника Контрагента, чтобы можно было уточнить какие-то данные, которые в отчет не выводятся. Задаем свойству ПараметрРасшифровки какое-нибудь значение, например, РасшифровкаКонтрагента.
2)В процессе вывода областей макета в результирующий табличный документ нужно ОБЯЗАТЕЛЬНО ПРИСВОИТЬ параметру расшифровки значение нужного типа, например:

     ТабДок = Новый ТабличныйДокумент;
     Выборка = Справочники.Контрагенты.Выбрать();
     Пока Выборка.Следующий() Цикл
        Область = Макет.ПолучитьОбласть("Строка");
        Область.Параметры.Контрагент = Выборка.Наименование;
        ...........................................................................
.......................
        Область.Параметры.РасшифровкаКонтрагента = Выборка.Ссылка;
        ТабДок.Вывести(Область);
     КонецЦикла;


3)Должен быть обеспечен запрет редактирования ячейки с расшифровкой, т.е. нужно указать
ТабДок.ТолькоПросмотр = Истина;
иначе, несмотря на многообещающий вид курсура при наведении на ячейку можно щелкать по ней сколько угодно, но ничего происходить не будет.


II) Нестандартные:
по двойному щелчку на ячейке с расшифровкой можно вызвать свою процедуру. Для реализации этого следует выполнить несколько условий:
1)Вывод табличного документа должен осуществляться в объект ПолеТабличногоДокумента;
2)Должно быть присвоено значение свойству ячейки ПараметрРасшифровки, например, РасшифровкаКонтрагента.
3)Параметру расшифровки РасшифровкаКонтрагента присваивается заполненный при формировании табличного документа нужными значениями СписокЗначений или чаще Структура. В частности, может передаваться имя стандартного отчета конфигурации и параметров, которые нужно задать в форме отчета, например, период дат, номер счета и т.д. А потом этот отчет вызывается как процедура.
4)Для объекта ПолеТабличногоДокумента свойство ТолькоПросмотр нужно установить в значение Истина.
5)Код пользовательской процедуры помещается в процедуру
ПолеТабличногоДокумента1ОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка), и первой строкой в ней должна быть такая:
СтандартнаяОбработка = Ложь;

Приведу небольшой примерчик, открывающий для "щелкнутого" контрагента подчиненный справочник.
Процедура КнопкаСформироватьНажатие(Кнопка)
  Контрагенты = Справочники.Контрагенты;
  Выборка = Контрагенты.Выбрать();
  Таб = ЭлементыФормы.ПолеТабличногоДокумента1;
  Макет = ПолучитьМакет("Макет");
  Пока Выборка.Следующий() Цикл
     Если Выборка.ЭтоГруппа = Ложь Тогда
        Область = Макет.ПолучитьОбласть("Строка");
        Область.Параметры.Контрагент = Выборка.Наименование;
        ...........................................................................
......................
        СтруктураРасшифровки = Новый Структура;
        СтруктураРасшифровки.Вставить("Контрагент",Выборка.Ссылка);
        СтруктураРасшифровки.Вставить(".......",.........);
        .........................................................................
        Область.Параметры.РасшифровкаКонтрагента = СтруктураРасшифровки;
        ЭлементыФормы.ПолеТабличногоДокумента1.Вывести(Область);
     Иначе
        Продолжить;
     КонецЕсли;
     КонецЦикла;
     ЭлементыФормы.ПолеТабличногоДокумента1.ТолькоПросмотр = Истина;
КонецПроцедуры

Процедура ПолеТабличногоДокумента1ОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)
  СтандартнаяОбработка = Ложь;
  Договоры = Справочники.Договоры.ПолучитьФормуСписка();
  Договоры.ПараметрОтборПоВладельцу = Расшифровка.Контрагент;
  Договоры.Открыть();
КонецПроцедуры


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

World1С Подменю пользователя
сообщение 13.08.10, 9:36
Сообщение #4

Оратор
Иконка группы
Квалифицированному 1С программисту
Группа: Местный
Сообщений: 358
Из: г.Луганск, обл.Луганская
Спасибо сказали: 110 раз
Рейтинг: 0

Пожалуйста!


Signature
В наше время люди всему знают цену, но понятия не имеют о подлинной ценности.
Оскар Уайлд

Lada Подменю пользователя
сообщение 13.08.10, 10:23
Сообщение #5

Общительный
**
Группа: Пользователи
Сообщений: 16
Из: Одесса
Спасибо сказали: 4 раз
Рейтинг: 0

Только возник ещё вопрос
если при нажатии на кнопку у нас вызывается процедура сделанная конструктором печати
Процедура Печать1(Элемент)
    //{{_КОНСТРУКТОР_ПЕЧАТИ_ЭЛЕМЕНТ(Печать1)
    // Данный фрагмент построен конструктором.
    // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

    ТабДок = Новый ТабличныйДокумент;
    Макет = Документы.ОказаниеУслуги.ПолучитьМакет("Печать1");
    // Заголовок
    Область = Макет.ПолучитьОбласть("Заголовок");
    ТабДок.Вывести(Область);
    // Шапка
    ...
    // ПереченьНоменклатуры
    Область = Макет.ПолучитьОбласть("ПереченьНоменклатурыШапка");

    Область.Параметры.СуммаСортировка = 1; //параметр расшифровки

    ТабДок.Вывести(Область);
    ...
    
    ТабДок.ТолькоПросмотр = Истина;
    ТабДок.ОтображатьЗаголовки = Ложь;
    ТабДок.Показать();
    
    //}}_КОНСТРУКТОР_ПЕЧАТИ_ЭЛЕМЕНТ
КонецПроцедуры


стандартная обработка расшифровки происходит при нажатии на нужную ячейку.
А где в таком случае привязывать свою обработку?
на форме есть только кнопка.

World1С Подменю пользователя
сообщение 13.08.10, 10:45
Сообщение #6

Оратор
Иконка группы
Квалифицированному 1С программисту
Группа: Местный
Сообщений: 358
Из: г.Луганск, обл.Луганская
Спасибо сказали: 110 раз
Рейтинг: 0

Цитата
А где в таком случае привязывать свою обработку?
на форме есть только кнопка.

не понятен вопрос. Попробуйте еще раз задать вопрос.

Создайте свою форму в объекте внешняя обработка или отчет и вызовите открытие формы, или воспользуйтесь событием (ПолеТабличногоДокумента1ОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)) внутри напишите там все что Вам необходимо.
ЗЫ: Надеюсь с ответом угадал! smile.gif


Signature
В наше время люди всему знают цену, но понятия не имеют о подлинной ценности.
Оскар Уайлд

Lada Подменю пользователя
сообщение 13.08.10, 11:31
Сообщение #7

Общительный
**
Группа: Пользователи
Сообщений: 16
Из: Одесса
Спасибо сказали: 4 раз
Рейтинг: 0

Цитата(World1С @ 13.08.10, 12:45) *
не понятен вопрос. Попробуйте еще раз задать вопрос.

Создайте свою форму в объекте внешняя обработка или отчет и вызовите открытие формы, или воспользуйтесь событием (ПолеТабличногоДокумента1ОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)) внутри напишите там все что Вам необходимо.
ЗЫ: Надеюсь с ответом угадал! smile.gif



В книге Радченко есть такой пример: мы создаём документ "ОказаниеУслуги", у документа есть форма которую заполняем. Потом решили сделать макет с помощью конструктора печати . Процедуру формирования печатной формы засунули в модуль формы(та форма которую заполняем при формировании документа, других форм нет) на которую потом вставили кнопочку. При нажатии на кнопку вызывается процедура формирования печатной формы.
ТабДок = Новый ТабличныйДокумент;
Макет = Документы.ОказаниеУслуги.ПолучитьМакет("Печать1"); // Печать1 - название нашего макета
...
ТабДок.Показать();

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

А в этом случае никакого поля табличного документа, который мы ручками на форму поставили, нет. И вроде как некуда привязывать процедуру. Мы на ходу создаём Новый ТабличныйДокумент. А стандартная обработка тем временем работает и как-то понимает, что ей нужно обрабатывать.
Надеюсь, что смогла объяснить.
Хотелось разобраться можно ли без создания специальной формы и вставки полей таблицы всё сделать обойдясь только конструктором печати.

World1С Подменю пользователя
сообщение 13.08.10, 12:03
Сообщение #8

Оратор
Иконка группы
Квалифицированному 1С программисту
Группа: Местный
Сообщений: 358
Из: г.Луганск, обл.Луганская
Спасибо сказали: 110 раз
Рейтинг: 0

СтандартнаяОбработка = Ложь. Вот и все работать стандартная обработка не будет.


Signature
В наше время люди всему знают цену, но понятия не имеют о подлинной ценности.
Оскар Уайлд

Lada Подменю пользователя
сообщение 13.08.10, 12:15
Сообщение #9

Общительный
**
Группа: Пользователи
Сообщений: 16
Из: Одесса
Спасибо сказали: 4 раз
Рейтинг: 0

Цитата(World1С @ 13.08.10, 14:03) *
СтандартнаяОбработка = Ложь. Вот и все работать стандартная обработка не будет.


Это понятно, а как заставить использовать мою обработку?)
У меня есть только табличный документ макета(никаких событий у него не наблюдается) и форма с кнопкой вызова процедуры формирования печатной формы(у которой тоже нет события "обработка расшифровки"), которая использует макет.

World1С Подменю пользователя
сообщение 13.08.10, 14:01
Сообщение #10

Оратор
Иконка группы
Квалифицированному 1С программисту
Группа: Местный
Сообщений: 358
Из: г.Луганск, обл.Луганская
Спасибо сказали: 110 раз
Рейтинг: 0

Попробуйте так:
ОбластьЯчеекТабличногоДокумента (SpreadsheetDocumentRange)
Расшифровка (Details)
Использование:
Чтение и запись.
Описание:
Тип: Произвольный. Содержит расшифровку ячеек области.
Примечание:
Применяется только для прямоугольных областей.


Signature
В наше время люди всему знают цену, но понятия не имеют о подлинной ценности.
Оскар Уайлд

ира Подменю пользователя
сообщение 14.12.10, 15:11
Сообщение #11

Молчаливый
*
Группа: Пользователи
Сообщений: 5
Спасибо сказали: 0 раз
Рейтинг: 0

Если можно - подробнее, куда поставить стандартнаяОбработка = ложь, и как прописать обработку для расшифровки
для ячейки табличного документа, а не для табличного поля.

Vofka Подменю пользователя
сообщение 14.12.10, 16:06
Сообщение #12

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4519 раз
Рейтинг: 3641.2

Ира, почитайте это

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 19.04.24, 5:14
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!