8.х Расшифровка ячеек управляемая форма

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Korostelev, 21 май 2015.

  1. TopicStarter Overlay
    Korostelev
    Offline

    Korostelev

    Регистрация:
    17 мар 2015
    Сообщения:
    40
    Симпатии:
    0
    Баллы:
    1
    Прошу помочь разобраться с расшифровкой в скд
    есть доступные поля , хочу чтоб при нажатии на любую колонку в строке открывался договор
    причем сама ссылка на договор есть в доступных полях
    --- Объединение сообщений, 21 май 2015 ---
    это если нажимаем на сам договор ,но в дальнейшем эта колонка будет не доступной

    Вложения:

  2. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.771
    Симпатии:
    509
    Баллы:
    204
    На форуме поднимался подобный вопрос, поиском воспользуйтесь
  3. TopicStarter Overlay
    Korostelev
    Offline

    Korostelev

    Регистрация:
    17 мар 2015
    Сообщения:
    40
    Симпатии:
    0
    Баллы:
    1
    Код:
    &НаКлиенте
    Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;
          Договор= ПолучитьДанныеРасшифровки(Расшифровка,"Договор");
        Если  Договор <> Неопределено Тогда
         
            ПараметрыФормы = Новый Структура("Ключ", Договор);
            ОткрытьФорму("Справочник.Договоры.ФормаОбъекта", ПараметрыФормы);
        КонецЕсли;
    
    КонецПроцедуры
    
    &НаСервере
    Функция ПолучитьДанныеРасшифровки(Расшифровка, СтруктураДанных)
         
        Данные = ПолучитьИзВременногоХранилища(ДанныеРасшифровки);
     
       Поля=Данные.Элементы[Расшифровка].ПолучитьПоля();
     
        Поле = Поля.Найти(СтруктураДанных);
        Если Поле = Неопределено Тогда
            Возврат Неопределено
        Иначе
            Возврат Поле.Значение;
        КонецЕсли;  
    
    КонецФункции // ПолучитьДанныеРасшифровки()
    --- Объединение сообщений, 21 май 2015 ---
    нас сколько я понял ответ ещё не найден , формулирую ещё раз
    как при нажатии на любую колонку в строке получать значение договора ,который есть в доступных полях??
    Последнее редактирование: 21 май 2015
  4. TopicStarter Overlay
    Korostelev
    Offline

    Korostelev

    Регистрация:
    17 мар 2015
    Сообщения:
    40
    Симпатии:
    0
    Баллы:
    1
    давайте пока разберемся как получить значения всей строки при нажатии на любую колонку...
  5. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.771
    Симпатии:
    509
    Баллы:
    204
    Посмотрите в СП методы и свойства табличного документа.
  6. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.639
    Симпатии:
    948
    Баллы:
    204
    Давайте так вы при нажатии на любую колонку будет выпадть список и там будет только одно "Открыть договор" так пойдет?
  7. TopicStarter Overlay
    Korostelev
    Offline

    Korostelev

    Регистрация:
    17 мар 2015
    Сообщения:
    40
    Симпатии:
    0
    Баллы:
    1
    да,давайте
  8. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.639
    Симпатии:
    948
    Баллы:
    204
    Попробуйте что то вроде этого
    на коленке писал, сейчас времени в обрез

    Код:
    Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)
        Перем ВыбранноеДействие, ПараметрыВыбранногоДействия;
       
        СтандартнаяОбработка = Ложь;
       
        ОбработкаРасшифровки = Новый ОбработкаРасшифровкиКомпоновкиДанных(ДанныеРасшифровки,
            Новый ИсточникДоступныхНастроекКомпоновкиДанных(Отчет));
           
        МассивДоступныхДействий = Новый Массив;
        ДополнительныеПунктыМеню = Новый СписокЗначений;
        ДополнительныеПунктыМеню.Добавить("Договор", "Открыть договор");
           
        ОбработкаРасшифровки.ВыбратьДействие(
            Расшифровка, ВыбранноеДействие, ПараметрыВыбранногоДействия,
                МассивДоступныхДействий, ДополнительныеПунктыМеню, Ложь);   //Истина - Основное действие,
                                                                            //ПараметрыВыбранногоДействия - Открываемое значение или Настройки или ничего
                                                                            //см. Синтакс-помощник (есть ограничения - простая структура). Настройки, кот. можно
                                                                            //применить получаются через объект "ОбработкаРасшифровки"
        Если ВыбранноеДействие = ДействиеОбработкиРасшифровкиКомпоновкиДанных.Нет Тогда
        ИначеЕсли ВыбранноеДействие = "Договор" Тогда
                ///тут берете из расшифровки свой договор и открываете его
        КонецЕсли;        
    КонецПроцедуры
    
  9. TopicStarter Overlay
    Korostelev
    Offline

    Korostelev

    Регистрация:
    17 мар 2015
    Сообщения:
    40
    Симпатии:
    0
    Баллы:
    1
    это для обычных форм ,а мне нужно в управляемых
  10. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.639
    Симпатии:
    948
    Баллы:
    204
    Всмысле - этот код работает на управляемой форме.
  11. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Ну как по умному сделать не знаю, не люблю расшифровки (да и не знаю можно ли в принципе).

    Полей то много в отчете?
    Сделайте так:
    Например у вас есть поля Договор, Контрагент, КакаяНибудьДата, НеважноЧтоЕще.
    Если вам нужно чтобы для всех 4-х полей открывался только соответствующий договор, то выведите не эти 4 поля, а 4-ре раза поле Договор, а в выражении представления для каждого из полей поставьте ну соответственно эти 4-ре поля из отчета.
  12. TopicStarter Overlay
    Korostelev
    Offline

    Korostelev

    Регистрация:
    17 мар 2015
    Сообщения:
    40
    Симпатии:
    0
    Баллы:
    1
    извиняюсь ,это работает , но проблема как взять договор ?? если в расшифровке я выбираю другие данные
  13. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    P.S. Может и криво - но явно есть один плюс: не надо никакого кода писать.
  14. TopicStarter Overlay
    Korostelev
    Offline

    Korostelev

    Регистрация:
    17 мар 2015
    Сообщения:
    40
    Симпатии:
    0
    Баллы:
    1
    shurikvz а можно скриншот , где это представление
  15. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
  16. TopicStarter Overlay
    Korostelev
    Offline

    Korostelev

    Регистрация:
    17 мар 2015
    Сообщения:
    40
    Симпатии:
    0
    Баллы:
    1
    Draco вся проблем как раз получить этот договор нажимая на другую колонку , в расшифровке содержится номер ячейки со значение
  17. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.639
    Симпатии:
    948
    Баллы:
    204
  18. TopicStarter Overlay
    Korostelev
    Offline

    Korostelev

    Регистрация:
    17 мар 2015
    Сообщения:
    40
    Симпатии:
    0
    Баллы:
    1
    Draco есть идеи как это сделать?
  19. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.639
    Симпатии:
    948
    Баллы:
    204
    Подождите, отчетик допишу, осовбожусь и буду писать
  20. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.639
    Симпатии:
    948
    Баллы:
    204
    С кодом там есть возможность но как объяснить я не совсем понимаю.
    Суть в том что там надо утсановить значение расшифровки
    чт то вроде вот такого
    Код:
    ДанныеРасшифровкиОбъект = ПолучитьИзВременногоХранилища(ДанныеРасшифровки);
        
        ЗначанияПолейРасшифровки = ДанныеРасшифровкиОбъект.Элементы[Расшифровка].ПолучитьПоля();
        Если ЗначанияПолейРасшифровки.Количество() > 1 Тогда
             Индекс = 1;
        Иначе
             Индекс = 0;
        КонецЕсли;
        ЗначениеРасшифровки = ЗначанияПолейРасшифровки[Индекс].Значение;
       
        Возврат ЗначениеРасшифровки;
    Т.е тут в знаячеение расшифровки устанавливаю конкретное значение

    Самы простой способ
    Это для ваших полей сделать макет оформления и там указать расшифроку, тогда кодить по сути ничего не надо будет

Поделиться этой страницей