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

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

  1. TopicStarter Overlay
    Korostelev
    Offline

    Korostelev

    Регистрация:
    17 мар 2015
    Сообщения:
    40
    Симпатии:
    0
    Баллы:
    1
    &НаСервере
    Функция ПолучитьДанныеРасшифровки(Расшифровка, СтруктураДанных)

    Данные = ПолучитьИзВременногоХранилища(ДанныеРасшифровки);

    Поля=Данные.Элементы[Расшифровка].ПолучитьПоля();

    Поле = Поля.Найти(СтруктураДанных);
    Если Поле = Неопределено Тогда
    Возврат Неопределено
    Иначе
    Возврат Поле.Значение;
    КонецЕсли;

    КонецФункции // ПолучитьДанныеРасшифровки()
    --- Объединение сообщений, 21 май 2015 ---
    он выдает значение поля на котором мы встаем , а не значение договора
    --- Объединение сообщений, 21 май 2015 ---
    Draco,
    как сделать чтоб он возвращал мне договор ,в любой колонке??
    Последнее редактирование: 21 май 2015
  2. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.628
    Симпатии:
    946
    Баллы:
    204
    Ну мне так сложно объяснить вообще каждое поле СКд оно содержит инфу о родиетльских полях и полях поля их просто надо получить
    ну это не так просто и объяснит то же

    Самый простой вариант, который могу Вам предложить сейчас - это сделать все это через макет оформления
  3. TopicStarter Overlay
    Korostelev
    Offline

    Korostelev

    Регистрация:
    17 мар 2015
    Сообщения:
    40
    Симпатии:
    0
    Баллы:
    1
    неужели больше нет способа??
  4. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.628
    Симпатии:
    946
    Баллы:
    204
    есть но как объяснит Вам это в рамках данного контента, я не знаю тут надо на пальцах показывать.
  5. TopicStarter Overlay
    Korostelev
    Offline

    Korostelev

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

    1с-ник Профессионал в 1С

    Регистрация:
    5 окт 2014
    Сообщения:
    303
    Симпатии:
    49
    Баллы:
    54
    Korostelev, Вы решили эту проблему?)
    --- Объединение сообщений, 22 сен 2016 ---
    Я случайно наткнулся на эту ветку.
    Я решил этот вопрос добавлением параметра расшифровки для моего поля.
    А дальше все делаю как Вы - беру данные расшифровки и делаю с полученным значением, что необходимо.
    ===
    Т.е. для поля "ДатаПоследнегоИзменения" беру расшифровку "КонтактноеЛицо".

    Вложения:

    Последнее редактирование: 22 сен 2016
  7. TopicStarter Overlay
    Korostelev
    Offline

    Korostelev

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

    1с-ник Профессионал в 1С

    Регистрация:
    5 окт 2014
    Сообщения:
    303
    Симпатии:
    49
    Баллы:
    54
    Скорее всего с ТабДоком мучаться) А чем такое решение плохо? Я макет поля добавил, на структуру отчета никак не влияет.
  9. shurikvz
    Offline

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

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Там не все так просто, геморройные эти расшифровки в СКД.
    Вообще можно.

    Вот две процедуры из моего работающего отчета, думаю должно подойти.
    Должна в первую очередь интересовать то что получается в строке:
    Отборы = ПолучитьРекурсивноСтруктуруОтбора(ДанныеРасшифровки.Элементы[Расшифровка]);
    Код:
    Процедура РезультатОстаткиОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)
        Перем ВыполненноеДействие;
       
        СтандартнаяОбработка = Ложь;
    
        ПолеРасшифровки = ДанныеРасшифровки.Элементы[Расшифровка].ПолучитьПоля()[0].Поле;
        Если ПолеРасшифровки = "КоличествоРезерв" Тогда
           
            Отборы = ПолучитьРекурсивноСтруктуруОтбора(ДанныеРасшифровки.Элементы[Расшифровка]);
            Номенклатура = Отборы.Получить("Номенклатура");
            Если Номенклатура <> Неопределено Тогда
                СформироватьОтчетАнализДоступностиТоваров(Номенклатура);
            КонецЕсли;
           
        ИначеЕсли ПолеРасшифровки = "КоличествоОстатокРезерв" Тогда
           
            Отборы = ПолучитьРекурсивноСтруктуруОтбора(ДанныеРасшифровки.Элементы[Расшифровка]);
            Номенклатура = Отборы.Получить("Номенклатура");
            Если Номенклатура <> Неопределено Тогда
                СформироватьОтчетТовары(Номенклатура);
            КонецЕсли;
           
        Иначе
           
            СхемаКомпоновкиДанных = ПолучитьМакет("ОтчетОстатки");     
           
            // Создадим и инициализируем обработчик расшифровки
            ОбработкаРасшифровки = Новый ОбработкаРасшифровкиКомпоновкиДанных(ДанныеРасшифровки, Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
            ДоступныеДействия = Новый Массив;
            ДоступныеДействия.Добавить(ДействиеОбработкиРасшифровкиКомпоновкиДанных.ОткрытьЗначение);
       
            Настройки = ОбработкаРасшифровки.Выполнить(Расшифровка, ВыполненноеДействие, ДоступныеДействия);
           
        КонецЕсли;
       
    КонецПроцедуры
    
    
    Функция ПолучитьРекурсивноСтруктуруОтбора(ТекущееПоле, СтруктураОтбора = Неопределено)
       
      Если СтруктураОтбора = Неопределено Тогда
      СтруктураОтбора = Новый Соответствие;
      КонецЕсли;
       
      Если ТипЗнч(ТекущееПоле) = Тип("ЭлементРасшифровкиКомпоновкиДанныхПоля")  Тогда
      Для каждого ТекЭл Из ТекущееПоле.ПолучитьПоля() Цикл
      СтруктураОтбора.Вставить(ТекЭл.Поле, ТекЭл.Значение);
      КонецЦикла;
      КонецЕсли;
       
      Для каждого ТекЭл Из ТекущееПоле.ПолучитьРодителей() Цикл
      ПолучитьРекурсивноСтруктуруОтбора(ТекЭл, СтруктураОтбора);   
      КонецЦикла;
       
      Возврат СтруктураОтбора;
    
    КонецФункции // ПолучитьРекурсивноСтруктуруОтбора()
    
    
  10. 1с-ник
    Offline

    1с-ник Профессионал в 1С

    Регистрация:
    5 окт 2014
    Сообщения:
    303
    Симпатии:
    49
    Баллы:
    54
    shurikvz, привет! Вот сделал я обработку расшифровки - добавил своё подменю. Но я хотел только для конкретного поля добавить подменю, а у меня теперь оно для всех выскакивает. Ппц эта расшифровка уже столько нервов..
    Не знаешь, как для отдельного поля исправить?
    ===
    Не актуально. Проверяю, есть ли в полях данных расшифровки моё: если есть - то добавляю своё подменю.
    Последнее редактирование: 22 сен 2016

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