8.х Расшифровка в СКД. Получить параметры.

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем Ignat, 17 июн 2013.

  1. TopicStarter Overlay
    Ignat
    Offline

    Ignat Опытный в 1С

    Регистрация:
    18 мар 2012
    Сообщения:
    68
    Симпатии:
    0
    Баллы:
    26
    Добрый вечер. Есть отчет на СКД. Необходимо сделать следующее. При расшифровке детальных записей необходимо формировать новую СКД. Вопрос в том, как получить параметры, которые передаются в расшифровке? Пример. См скриншот. Необходимо в явном виде получить склад и номенклатуру в случае если пользователь 2 раза щелкает на любое числовое поле. Подскажите пожалуйста.

    Эти параметры прекрасно передаются если например Действие будет Отфильтровать.

    Вложения:

  2. mialord
    Offline

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

    Регистрация:
    31 июл 2009
    Сообщения:
    5.398
    Симпатии:
    40
    Баллы:
    54
    Держите пример, тут в расшифровке по параметру добавляется новый документ
    Код:
    Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)
    
    Перем ВыполненноеДействие;
    
    // Запретим стандартную обработку расшифровки
    СтандартнаяОбработка = Ложь;
    
    // Создадим и инициализируем обработчик расшифровки
    ОбработкаРасшифровки = Новый ОбработкаРасшифровкиКомпоновкиДанных(ДанныеРасшифровки, Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
    
    СписокДействий = Новый СписокЗначений;
    СписокДействий.Добавить("Создать документ " + """" + "Обслуживание клиента" + """");
    
    ДоступныеДействия = Новый Массив();
    ДоступныеДействия.Добавить(ДействиеОбработкиРасшифровкиКомпоновкиДанных.ОткрытьЗначение);
    ДоступныеДействия.Добавить(ДействиеОбработкиРасшифровкиКомпоновкиДанных.Упорядочить);
    ДоступныеДействия.Добавить(ДействиеОбработкиРасшифровкиКомпоновкиДанных.Отфильтровать);
    
    ИндексРасшифровки = Число(Расшифровка) + 1;
    Если ДанныеРасшифровки.Элементы.Количество() > ИндексРасшифровки И ТипЗнч(ДанныеРасшифровки.Элементы[ИндексРасшифровки]) = Тип("ЭлементРасшифровкиКомпоновкиДанныхГруппировка") Тогда
    ДоступныеДействия.Добавить(ДействиеОбработкиРасшифровкиКомпоновкиДанных.Расшифровать);
    КонецЕсли;
    
    // Осуществим выбор действия расшифровки пользователем
    Настройки = ОбработкаРасшифровки.Выполнить(Расшифровка, ВыполненноеДействие, ДоступныеДействия, СписокДействий);
    
    Если Настройки <> Неопределено Тогда
    // Пользователь выбрал действие, для которого нужно менять настройки
    
    Если ВыполненноеДействие = ДействиеОбработкиРасшифровкиКомпоновкиДанных.Упорядочить Тогда
    
    // Если требется упорядочить - упорядочим в текущем отчете
    КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);
    ДействияФормыСформировать(Неопределено);
    
    Иначе
    
    // При других действиях - создадим новый отчет, откроем форму, сформируем отчет в ней
    Отчет = Отчеты[Метаданные().Имя].Создать();
    Отчет.КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);
    Форма = Отчет.ПолучитьФорму();
    Форма.ДействияФормыСформировать(Неопределено);
    Форма.Открыть();
    
    КонецЕсли;
    
    КонецЕсли;
    
    Если ВыполненноеДействие = "Создать документ " + """" + "Обслуживание клиента" + """" Тогда
    
    Попытка
    Задача = ДанныеРасшифровки.Элементы[Расшифровка].ПолучитьРодителей()[0].ПолучитьПоля().Найти("Задача").Значение;
    Исключение
    Возврат;
    КонецПопытки;
    
    Если НЕ ТипЗнч(Задача) = Тип("ДокументСсылка.xЗадача") Тогда
    Возврат;
    КонецЕсли;
    
    Если Задача.Состояние = Перечисления.xСостояниеКонсультации.Запущена Тогда
    Сообщить("Задача на данный момент находится в работе и не может быть закрыта");
    Возврат;
    КонецЕсли;
    
    Если Задача.ЭтоТЗ и НЕ Задача.ТЗЗакрыто Тогда
    Сообщить("Задача не закрыта программистом и не может быть выставлена");
    Возврат;
    КонецЕсли;
    
    Если Задача.Выставлено Тогда
    Сообщить("Задача уже выставлена");
    Возврат;
    КонецЕсли;
    
    Док = Документы.ОбслуживаниеКлиента.СоздатьДокумент();
    Док.Дата = Задача.Дата;
    Док.Организация = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(ПараметрыСеанса.ТекущийПользователь, "ОсновнаяОрганизация");
    Док.Контрагент = Задача.Контрагент;
    Док.Сотрудник = Задача.Ответственный.ФизЛицо;
    Док.СтоимостьЧаса = 950;
    Док.Заметки = Задача.Описание;
    
    // Заполнение ТЧ
    Форма = Док.ПолучитьФорму("ФормаДокумента");
    Структура = Новый Структура;
    Структура.Вставить("РежимОповещения", "Добавление");
    Структура.Вставить("Ссылка", Задача);
    Форма.ОбработкаВыбора(Структура, Неопределено);
    
    Форма.Открыть();
    
    КонецЕсли;
    
    КонецПроцедуры
  3. TopicStarter Overlay
    Ignat
    Offline

    Ignat Опытный в 1С

    Регистрация:
    18 мар 2012
    Сообщения:
    68
    Симпатии:
    0
    Баллы:
    26
    Огромное спасибо за отчет, но Вы меня немного не правильно поняли. Получить не то значение ячейки, которую щелкнул пользователь, а всю строку + значение группировки верхнего уровня. Т.е. получить склад и номенклатуру, когда пользователь щелкает на количество. Такое реально?
  4. mialord
    Offline

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

    Регистрация:
    31 июл 2009
    Сообщения:
    5.398
    Симпатии:
    40
    Баллы:
    54
    Вы на отладчике смотрели строку ДанныеРасшифровки.Элементы[Расшифровка]
    Завтра если не забуду гляну на работе, у меня база эта на сервере крутится в файл не влазит так что к серверу доступ нужен
  5. nbIpKuH_BaH9I
    Online

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.980
    Симпатии:
    398
    Баллы:
    104
    Кстати, очень интересная тема. А
    Код:
    ДанныеРасшифровки.Элементы[Расшифровка]
    не канает. Вот что показывает. Че то самому даже в голову ничего не лезет. :D
  6. mialord
    Offline

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

    Регистрация:
    31 июл 2009
    Сообщения:
    5.398
    Симпатии:
    40
    Баллы:
    54
    Ну так не тормозим, методы вызываем и смотрим результат :D
    Код:
    ДанныеРасшифровки.Элементы[Расшифровка].ПолучитьРодителей()[0].ПолучитьПоля()
    Не забывайте в СП смотреть методы типов коих в СКД много
  7. nbIpKuH_BaH9I
    Online

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.980
    Симпатии:
    398
    Баллы:
    104
    А ты ничего не путаешь? Я читал помощник. Ничего внятного на этот счет там не обнаружил. Если не веришь, вот.

    А если просто получить поля, то получает значение только именно поля расшифровки, а не всей строки.
  8. mialord
    Offline

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

    Регистрация:
    31 июл 2009
    Сообщения:
    5.398
    Симпатии:
    40
    Баллы:
    54
    Да не должен, у меня этот отчет манагеры франча уже пол года юзают :D
    Если не забуду вопрос, завтра посмотрю с утра у себя еще раз в crm, ибо код полностью из рабочего отчета, манагеры только из него имеют возможность часы спецам закрывать, если бы чего то не работало у меня бы весь отдел пол года зп не получал :D.
  9. nbIpKuH_BaH9I
    Online

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.980
    Симпатии:
    398
    Баллы:
    104
    Я тоже интересовался этим когда-то. Сейчас подумаю, что можно сделать здесь. :D
  10. mialord
    Offline

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

    Регистрация:
    31 июл 2009
    Сообщения:
    5.398
    Симпатии:
    40
    Баллы:
    54
    А чет я не помню чтобы ты такой вопрос задавал, а то бы ответил :)
  11. nbIpKuH_BaH9I
    Online

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.980
    Симпатии:
    398
    Баллы:
    104
    Не, я просто задумывался как то. Некоторое время подумал и плюнул. А сейчас вот опять чето загорелось :D
  12. mialord
    Offline

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

    Регистрация:
    31 июл 2009
    Сообщения:
    5.398
    Симпатии:
    40
    Баллы:
    54

    Вложения:

    • 1.png
      1.png
      Размер файла:
      6,6 КБ
      Просмотров:
      182
    • xДинамика.erf
      Размер файла:
      38,1 КБ
      Просмотров:
      38
  13. nbIpKuH_BaH9I
    Online

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.980
    Симпатии:
    398
    Баллы:
    104
    Вот, колонка то одна, а не вся строка.
  14. mialord
    Offline

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

    Регистрация:
    31 июл 2009
    Сообщения:
    5.398
    Симпатии:
    40
    Баллы:
    54

    Вложения:

    • 2.png
      2.png
      Размер файла:
      10,9 КБ
      Просмотров:
      182
    • 1.png
      1.png
      Размер файла:
      13,1 КБ
      Просмотров:
      220
  15. nbIpKuH_BaH9I
    Online

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.980
    Симпатии:
    398
    Баллы:
    104
    Вот здесь по подробнее. Это как надо настроить отчет?
  16. TopicStarter Overlay
    Ignat
    Offline

    Ignat Опытный в 1С

    Регистрация:
    18 мар 2012
    Сообщения:
    68
    Симпатии:
    0
    Баллы:
    26
    Ребят, можно чуть по подробнее?
  17. mialord
    Offline

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

    Регистрация:
    31 июл 2009
    Сообщения:
    5.398
    Симпатии:
    40
    Баллы:
    54
    Попробую описать подробно с примером на пальцах, у меня просто чет народ хлынул второй день без продыху, не успеваю. Как только сейчас тут раскидаюсь, думаю в четверг - пятницу напишу подробный пример, поразбираемся, я еще и сам полажу, тоже кое что хотел посмотреть. Чуток потерпите
  18. nbIpKuH_BaH9I
    Online

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.980
    Симпатии:
    398
    Баллы:
    104
  19. nbIpKuH_BaH9I
    Online

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.980
    Симпатии:
    398
    Баллы:
    104
    Игорь, ты не забыл про расшифровку то? ))) Мне тоже очень интересен этот вопрос.
  20. Kc93
    Offline

    Kc93 Опытный в 1С

    Регистрация:
    27 фев 2012
    Сообщения:
    190
    Симпатии:
    0
    Баллы:
    26
    Здравствуйте. Кто-нибудь разобрался с расшифровкой данных в СКД? В поиске выдает много разных вариантов, но реализовать их никак не получается. Полностью не могу найти вариант создания расшифровки.
    Нужно, чтобы при клике по остаткам выходило новое окно отчета, где были показаны документы движения (регистраторы) по данной номенклатуре (по принципу работы отчета "Ведомость товаров на складах").

    Один из вариантов, которые мне предложил поисковик:
    В СКД создала макет, добавила поля, параметры, параметры расшифровки этих полей. Добавила в формах ФормуОтчета и к таблич.части привязала процедуру:
    Код:
    Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)
    
    Перем ВыполненноеДействие;
    СтандартнаяОбработка=Ложь;
    ОбработкаРасшифровки=Новый ОбработкаРасшифровкиКомпоновкиДанных(ДанныеРасшифровки,Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
    ДополнительныеДействия=Новый СписокЗначений;
    ДополнительныеДействия.Добавить("Действие1","Дополнительное действие 1"); // добавляем свое действие
    Настройки=ОбработкаРасшифровки.Выполнить(Расшифровка,ВыполненноеДействие,,ДополнительныеДействия);
    Если Настройки&lt;&gt;Неопределено Тогда
    КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);
    ЭлементыФормы.Результат.Очистить();
    СкомпоноватьРезультат(ЭлементыФормы.Результат,ДанныеРасшифровки);
    Иначе
    Если ВыполненноеДействие="Действие1" Тогда
    ВыполнитьДействие1(Расшифровка); // процедура выполняемая при выборе пункта меню "Дополнительное действие 1"
    КонецЕсли;
    КонецЕсли;
    
    КонецПроцедуры
    Процедура ВыполнитьДействие1(Расшифровка)
    Ссылка=ДанныеРасшифровки.Элементы[Расшифровка].ПолучитьПоля()[0].Значение;
    Ссылка.ПолучитьФорму().Открыть();
    КонецПроцедуры  
    
    При клике по остаткам выдает ошибку:
    {Отчет.AA_РекомендацииКЗакупуОбщий1.Форма.ФормаОтчета.Форма(24)}: Значение не является значением объектного типа (ПолучитьФорму)
    Ссылка.ПолучитьФорму().Открыть();
    Значение Ссылка является числовым...
Похожие темы
  1. mhl
    Ответов:
    3
    Просмотров:
    866
Загрузка...

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