Форум программистов, компьютерный форум CyberForum.ru

1С: Собственные программы

Войти
Регистрация
Восстановить пароль
 
 
Tatiana21
0 / 0 / 0
Регистрация: 01.11.2015
Сообщений: 104
#1

1с отчет скд по нажатию на строку открыть форму документа - 1С

26.12.2016, 16:17. Просмотров 1585. Ответов 44

Здравствуйте. Платформа 1С: Предприятие 8.3.
Столкнулась с такой проблемой. Имеется отчет "Отчет по грузоперевозкам", созданный с помощью СКД на основании данных документа "CMR", который выводит следующие поля за указываемый период:
Получатель | Грузополучатель | Разрешение | Заявление
Тип полей "Получатель" и "Грузополучатель" = СправочникСсылка.Контрагенты, тип полей "Разрешение" и "Заявление" = Дата.
Необходимо реализовать возможность открытия формы документа "CMR" по нажатию на строку. Я так понимаю, за это будет отвечать функция Расшифровать.
Подскажите, пожалуйста, можно ли реализовать эту возможность в СКД. Если да, то каким образом? Заранее спасибо!
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.12.2016, 16:17
Здравствуйте! Я подобрал для вас темы с ответами на вопрос 1с отчет скд по нажатию на строку открыть форму документа (1С):

Обычные формы, отчет на СКД - вывод параметров на форму - 1С
Обычная форма, делаю отчет на СКД. Задаю параметры , на форме размещаю Табличное поле - В его свойствах указываю : Данные - ОтчетОбъект -...

Отчет СКД. Пересчет значения поля табличного документа при изменении другого поля - 1С
Народ, есть отчет без СКД, нужно разрешить ввод пользователем 5 графы отчета, и на основе введенного рассчитать другие две графы...

Открыть форму конкретного документа (тонкий клиент) - 1С
Здравствуйте. Мне нужно при записи элемента справочника открывать форму документа УстановкаЦенНоменклатуры. Форму нового документа...

1C 8.x Открыть форму и заполнить поле табличного документа - 1С
Привет, народ! подскажите, как открыть форму программно , сформировать макет и выводить этот макет в табличное поле на этой форме? ...

1C 7.x Как можно открыть форму нового документа с уже некоторыми заполненными полями? - 1С
Хочу сделать это из обработки. Алгоритм приблизительно следующий: Программа берёт XML файл, извлекает из него какието данные, затем...

Отчет в СКД - 1С
Добрый день. Делаю простенький отчет в системе компановки данных. За основу беру регистр сведений "СоставГруппСотрудников". ВЫБРАТЬ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Nath
1 / 1 / 1
Регистрация: 03.12.2013
Сообщений: 38
29.12.2016, 11:35 #31
если это толстый клиент, то в 5 раз проще - должно быть что-то типа
1C
1
2
3
4
5
6
7
8
&НаКлиенте
Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)
    СтандартнаяОбработка=Ложь;
    РасшифровкаДанные=ПолучитьИзВременногоХранилища(ДанныеРасшифровки);
    ЗначениеВЯчейке=РасшифровкаДанные.Элементы[Расшифровка].ПолучитьПоля()[0].Значение;
    ЗначениеВЯчейке.ПолучитьФорму("ВашаФорма");
    Форма.Открыть();
КонецПроцедуры
Tatiana21
0 / 0 / 0
Регистрация: 01.11.2015
Сообщений: 104
29.12.2016, 11:51  [ТС] #32
Сейчас попробую

Добавлено через 2 минуты
Ошибка при вызове метода контекста (ПолучитьФорму)
{Отчет.ОтчетПоГрузоперевозкам.Форма.ФормаОтчета.Форма(6)}: Значение не является значением объектного типа (ПолучитьФорму)
Форма = ЗначениеВЯчейке.ПолучитьФорму("Документ.CMR.Форма.ФормаТД");

1C
1
2
3
4
5
6
7
8
&НаКлиенте
Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)
    СтандартнаяОбработка=Ложь;
    РасшифровкаДанные=ПолучитьИзВременногоХранилища(ДанныеРасшифровки);
    ЗначениеВЯчейке=РасшифровкаДанные.Элементы[Расшифровка].ПолучитьПоля()[0].Значение;
    Форма = ЗначениеВЯчейке.ПолучитьФорму("Документ.CMR.Форма.ФормаТД");
    Форма.Открыть();
КонецПроцедуры
Добавлено через 7 минут
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
&НаКлиенте
Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)
    СтандартнаяОбработка=Ложь;
    ЗначениеВЯчейке=ПолучитьЗначениеВЯчейке(Расшифровка);
    Форма = ПолучитьФорму("Документ.CMR.Форма.ФормаТД", ЗначениеВЯчейке);
    Форма.Открыть();
КонецПроцедуры
 
&НаСервере
Функция ПолучитьЗначениеВЯчейке(Расшифровка)
    РасшифровкаДанные=ПолучитьИзВременногоХранилища(ДанныеРасшифровки);
    ЗначениеВЯчейке=РасшифровкаДанные.Элементы[Расшифровка].ПолучитьПоля()[0].Значение;
    Возврат ЗначениеВЯчейке;
КонецФункции
Та же ошибка...
Nath
1 / 1 / 1
Регистрация: 03.12.2013
Сообщений: 38
29.12.2016, 11:59 #33
ЗначениеВЯчейке какой тип имеет? ДокументСсылка должно быть - если нет, чё-то не то
Tatiana21
0 / 0 / 0
Регистрация: 01.11.2015
Сообщений: 104
29.12.2016, 12:15  [ТС] #34
ДокументСсылка

Добавлено через 2 минуты
Тип CMR

Добавлено через 4 минуты
CMR - это мой документ. Но есть поля, с типом Дата, Строка, как в самом документе
Nath
1 / 1 / 1
Регистрация: 03.12.2013
Сообщений: 38
29.12.2016, 12:34 #35
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Ну так канеш будет ошибка - вы путаете метод глобального контекста ПолучитьФорму и метод ссылки на документ Получить форму - они принимают разные параметры. Нужно написать так:
1C
1
2
3
4
5
6
7
8
&НаКлиенте
Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)
    СтандартнаяОбработка=Ложь;
    РасшифровкаДанные=ПолучитьИзВременногоХранилища(ДанныеРасшифровки);
    ЗначениеВЯчейке=РасшифровкаДанные.Элементы[Расшифровка].ПолучитьПоля()[0].Значение;
    Форма = ЗначениеВЯчейке.ПолучитьФорму("ФормаТД");
    Форма.Открыть();
КонецПроцедуры
Если у вас действительно 1) толстый клиент, 2) у отчета УФ, отчет встроен в конфу, не внешний 3) у документа обычная форма, она имеет тип форма документа, тогда всё должно работать.
Tatiana21
0 / 0 / 0
Регистрация: 01.11.2015
Сообщений: 104
29.12.2016, 16:49  [ТС] #36
Все получилось, большое спасибо) да, я и вправду не так задавала параметры

Добавлено через 4 часа 12 минут
Возник вопрос. В отчете тип ДокументСсылка имеет только 1 ячейка - Номер. Можно ли реализовать такую возможность, чтобы при нажатии на любую другую ячейку, система обращалась бы к ячейке Номер в текущей строке и осуществляла расшифровку по ячейке Номер?
Dethmontt
Модератор
Эксперт 1С
2503 / 2312 / 362
Регистрация: 10.03.2011
Сообщений: 8,114
Записей в блоге: 1
Завершенные тесты: 1
29.12.2016, 17:20 #37
Tatiana21, А если пользователь зайдет в настройки отчета и отключит вывод документа (номера документа) и по другому сгруппирует данные (где в одной строке может быть больше 1-ого документа) то как быть тогда?
Nath
1 / 1 / 1
Регистрация: 03.12.2013
Сообщений: 38
29.12.2016, 17:32 #38
Можно, например, выбрать ссылку в запросе несколько раз и у каждого из этих полей проставить нужное представление - нет нужды обращаться именно к полю номер.
Dethmontt
Модератор
Эксперт 1С
2503 / 2312 / 362
Регистрация: 10.03.2011
Сообщений: 8,114
Записей в блоге: 1
Завершенные тесты: 1
29.12.2016, 17:41 #39
Nath, А если я через плюсик добавлю еще одно поле в выбранные поля)))))? (я как пользователь отчета)
Nath
1 / 1 / 1
Регистрация: 03.12.2013
Сообщений: 38
29.12.2016, 22:33 #40
хаха - 1) берём и обрезаем пользователю возможность менять выбранные поля или 2) находим по имени среди имеющихся полей нужное или 3) убираем все поля, которые не являются ссылкой (но имеют другие представления) из доступных пользователю для выбора - тогда для расшифровки можно брать любое, например, первое )))

Но вообще, всё проще - пользователи обычно туповаты и поэтому 4) нет нужды чё-то делать, они не в курсе как вообще чё-то поменять )))
Tatiana21
0 / 0 / 0
Регистрация: 01.11.2015
Сообщений: 104
30.12.2016, 09:07  [ТС] #41
Сделать все поля ссылками - это самое простое. А я хочу попробовать найти по имени нужное поле.

Добавлено через 40 минут
Скажите, а можно ли сделать расшифровку не по ссылочному полю, а по всей строке?
Dethmontt
Модератор
Эксперт 1С
2503 / 2312 / 362
Регистрация: 10.03.2011
Сообщений: 8,114
Записей в блоге: 1
Завершенные тесты: 1
30.12.2016, 10:33 #42
Цитата Сообщение от Nath Посмотреть сообщение
хаха - 1) берём и обрезаем пользователю возможность менять выбранные поля или 2) находим по имени среди имеющихся полей нужное или 3) убираем все поля, которые не являются ссылкой (но имеют другие представления) из доступных пользователю для выбора - тогда для расшифровки можно брать любое, например, первое )))
Все это костыли какие-то

Добавлено через 1 минуту
Цитата Сообщение от Tatiana21 Посмотреть сообщение
А я хочу попробовать найти по имени нужное поле.
По какому такому имени?
Nath
1 / 1 / 1
Регистрация: 03.12.2013
Сообщений: 38
30.12.2016, 11:33 #43
Цитата Сообщение от Dethmontt Посмотреть сообщение
Все это костыли какие-то
Нормальные костыли, не хуже, чем у других )))

Цитата Сообщение от Tatiana21 Посмотреть сообщение
А я хочу попробовать найти по имени нужное поле.
Добавлено через 40 минут
Скажите, а можно ли сделать расшифровку не по ссылочному полю, а по всей строке?
Ну у коллекции полей расшифровки есть метод Найти() - подставляешь туда имя поля - он найдет - если, канеш, пользователь не удалит поле со ссылкой в настройке. По строке вроде как-то делают расшифровку, ток надо порыться, поискать - уж это самостоятельно можно найти - новогодние каникулы кажутся длинными )
Dethmontt
Модератор
Эксперт 1С
2503 / 2312 / 362
Регистрация: 10.03.2011
Сообщений: 8,114
Записей в блоге: 1
Завершенные тесты: 1
30.12.2016, 11:39 #44
Цитата Сообщение от Nath Посмотреть сообщение
Нормальные костыли, не хуже, чем у других )))
Nath, ну раз уж на то пошло)))

вот еще один вариант (как пример)
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)
    
    СтандартнаяОбработка = Ложь;
    
    КолКолонок = КомпоновщикНастроек.Настройки.Выбор.Элементы.Количество();
    
    ВсегоСтрок = ДанныеРасшифровки.Элементы.Количество()/КолКолонок;
    
    Сообщить(Цел(ВсегоСтрок));
    Сообщить("Всего ячеек = "+ДанныеРасшифровки.Элементы.Количество());
    
    РасшифровкаЧисло = Число(Расшифровка);
    
    НомерСтроки = Цел((РасшифровкаЧисло-1+КолКолонок)/КолКолонок);
    
    ПерваяЯчейка = НомерСтроки*КолКолонок-КолКолонок+1;
    ПоследняяЯчейка = НомерСтроки*КолКолонок;
    
    Сообщить("ПерваяЯчейка = "+ПерваяЯчейка);
    Сообщить("ПоследняяЯчейка = "+ПоследняяЯчейка);
    
    Для н=ПерваяЯчейка По ПоследняяЯчейка Цикл
        Если ДанныеРасшифровки.Элементы[н].ПолучитьПоля()[0].Поле = "Ссылка" Тогда
            ОткрытьЗначение(ДанныеРасшифровки.Элементы[н].ПолучитьПоля()[0].Значение);
        КонецЕсли; 
    КонецЦикла; 
    
КонецПроцедуры
Добавлено через 1 минуту
З.Ы. код врядли будет работать с группировками с выбранными полями через точку и т.д. (это все нужно пилить и пилить))))
Tatiana21
0 / 0 / 0
Регистрация: 01.11.2015
Сообщений: 104
30.12.2016, 12:08  [ТС] #45
Я вариант попроще все-таки сделала прописала параметры расшифровки на каждую ячейку в макете.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.12.2016, 12:08
Привет! Вот еще темы с ответами:

1C 8.x (тонкий) Отчет в СКД - 1С
Здравствуйте! Помогите пожалуйста разобраться с отчетом в СКД! Нужно чтобы в строках были наименования: Животное, Болезнь, Район, а в...

Отчет СКД - 1С
Создала внешний отчет с помощью СКД. Результат вывожу на форму в Поле табличного документа. Ка мне сделать расшифровку результата? С чего...

1C 8.x Отчет в СКД - 1С
Здравствуйте.У меня отчет вида как на рисунке 1,подскажите пожалуйста, как в СКД преобразовать отчет до такого вида как на 2 рисунке?

Отчет СКД - 1С
Добрый день. Пытаюсь какой уже день, все мысли исчерпаны. Пытаюсь сделать отчет при помощи СКД Вот то что у меня имеется, но...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
30.12.2016, 12:08
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru