![]() |
|
Вычисляемое поле | ☑ | ||
---|---|---|---|---|
0
Илья1111
08.09.19
✎
20:09
|
Доброго времени суток!
Подскажите пожалуйста. Делаю внешний отчет по изменению основного менеджера в справочнике Партнеры.В вычисляемом поле функцией из "Общего модуля" я возвращаю таблицу значений. Как из нее мне получить содержимое определенной ячейки? |
|||
1
Илья1111
08.09.19
✎
20:11
|
(0) В отчете нужно получить все факты изменения основного менеджера в Партнере из Истории изменений по Справочнику Партнеры. А таблица значений, результат функции, это версия объекта.
|
|||
2
Chameleon1980
08.09.19
✎
20:17
|
Перебирая строки, получай через точку из очередной строки значение ячейки
|
|||
3
Chameleon1980
08.09.19
✎
20:18
|
Предысторию мог бы и не писать.
|
|||
4
Chameleon1980
08.09.19
✎
20:18
|
Ответ гуглится на раз два
|
|||
5
Илья1111
09.09.19
✎
20:12
|
(4) А в каком модуле нужно осуществить перебор строк таблицы значений?
Для этого подойдет модуль формы внешнего отчета?Внешний отчет делаю на СКД. |
|||
6
Chameleon1980
10.09.19
✎
04:26
|
Тз оттуда видно? Вперёд. Может уже к делу?
|
|||
7
ДенисЧ
10.09.19
✎
04:58
|
Эту фигню нужно делать запросом, а не каким-то левым общим модулем и ещё более левой тз.
|
|||
8
Chameleon1980
10.09.19
✎
05:14
|
Пусть учится в т.ч. С тз работать
|
|||
9
Илья1111
13.09.19
✎
06:09
|
(6) Не получается обратиться к ТЗ из этого модуля.
|
|||
10
Илья1111
13.09.19
✎
06:14
|
(9) Пытаюсь выбрать текст из ячейки
Результат1=Менеджер.Область("R2C3").Текст; Где Менеджер это имя поля, где хранится таблица, ошибка: Переменная не определена (Менеджер) |
|||
11
AneJIbcuH
13.09.19
✎
06:33
|
(10) Что-то невероятное делаете. Какие исходные данные? Есть справочник "Партнеры", это понятно. Что есть история изменений? Регистр Сведений? Как отчет в итоге должен выглядеть?
-Партнер 1 -- Изменение 1 -- Изменение 2 -- Изменение 3 -Партнер 2 -- Изменение 1 -- Изменение 2 Так? |
|||
12
Chameleon1980
13.09.19
✎
07:42
|
аааааааааааааааа
|
|||
13
Илья1111
13.09.19
✎
20:41
|
(11) (11) Партнер 1
-- Изменение 1 -- Изменение 2 -- Изменение 3 по Основному менеджеру в Партнер1. Группировка по умолчанию должна быть установлена по Партнер1. |
|||
14
Илья1111
13.09.19
✎
20:45
|
все данные беру из Регистр Сведений
Версии Объектов все получилось, однако поле ВерсииОбъектов.Объект.ОсновнойМенеджер мне возвращает значение реквизита из последней версии (одно и то же в -- Изменение 1 -- Изменение 2 -- Изменение 3) |
|||
15
Илья1111
13.09.19
✎
20:49
|
(14) подумалось, что более правильный подход, вызвать готовую функцию из Общего модуля
ВерсионированиеОбъектов.ОтчетПоВерсииОбъекта(Партнер,Номер,Номер) она возвращает результат ТабличныйДокумент. Вот из него то и хочу взять и вывести данные. |
|||
16
hhhh
13.09.19
✎
20:57
|
(15) лучше найти функцию, которая возвращает не табличный документ. Неужели нет попроще функций?
|
|||
17
Илья1111
15.09.19
✎
08:08
|
Еще особенность: все действия нужно проводить в рамках Внешего отчета.
Т.е. конфигурацию не менять, из готовых функций Общих модулей нашел только такую. |
|||
18
Мимохожий Однако
15.09.19
✎
09:19
|
(17) Может быть, проще написать нужную тебе функцию и не костылить?
|
|||
19
Илья1111
15.09.19
✎
19:22
|
(18) Эта функция может быть расположена в модуле Внешнего отчета?
|
|||
20
ДенисЧ
15.09.19
✎
19:25
|
(19) нет
|
|||
21
Илья1111
15.09.19
✎
19:57
|
у меня по задаче недопустимо менять конфу..то есть, кроме модуля Внешнего отчета и не где делать
|
|||
22
shuhard
15.09.19
✎
20:13
|
(21) что мешает в твоем отчете на СКД использовать ПриКомпоновкеРезультата ?
получи список Партнеров, добудь ТЗ и выведи её в отчет вычисляемые поля для данной задачи не нужны |
|||
23
Илья1111
16.09.19
✎
06:30
|
https://expert.chistov.pro/public/334440/ так?
т.е. добавить одно поле-колонку в таблицу, и в нее вывести (полученное запросом)? |
|||
24
shuhard
16.09.19
✎
06:52
|
(23) да
|
|||
25
Илья1111
16.09.19
✎
19:17
|
Полю Менеджер указал тип значения ОпределяемыйТип.ФизическоеЛицо.
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ВерсииОбъектов.Объект.ОсновнойМенеджер.Ссылка КАК ОсновнойМенеджер |ИЗ | РегистрСведений.ВерсииОбъектов КАК ВерсииОбъектов"; Выборка = Запрос.Выполнить().Выбрать(); Если Выборка.Следующий() Тогда Результат1 = Новый Структура("ОсновнойМенеджер",Выборка); Результат1.ОсновнойМенеджер = Результат1.ОсновнойМенеджер.Получить(); СтрокаТЗ.Менеджер=Результат1.ОсновнойМенеджер; КонецЕсли; КонецЦикла; но почему то вылазит ошибка Поле не найдено "Менеджер" |
|||
26
Илья1111
21.09.19
✎
18:46
|
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ | ВерсииОбъектов.Объект.ОсновнойМенеджер.Ссылка КАК ОсновнойМенеджер, | ВерсииОбъектов.НомерВерсии КАК Номер |ИЗ | РегистрСведений.ВерсииОбъектов КАК ВерсииОбъектов"; Результат = Запрос.Выполнить(); Выборка = Результат[2].Выгрузить(); Менеджер= Выборка.ВыгрузитьКолонку(0);Номер= Выборка.ВыгрузитьКолонку(1); ТЗ = Новый ТаблицаЗначений; ТЗ.Колонки.Добавить("Менеджер", Новый ОписаниеТипов("СправочникСсылка.Пользователи")); ТЗ.Колонки.Добавить("Номер", Новый КвалификаторыЧисла(10,0)); ТЗ.ЗагрузитьКолонку(Менеджер,"Менеджер"); ТЗ.ЗагрузитьКолонку(Номер,"Номер"); ВнешнийНаборДанных = Новый Структура; ВнешнийНаборДанных.Вставить("НаборДанных2", ТЗ); //МакетКомпоновки = КомпоновщикМакета.Выполнить(ПолучитьМакет("Макет") //,КомпоновщикНастроек.ПолучитьНастройки(),ДанныеРасшифровки, ); ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ДокументРезультат.Очистить(); ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, ВнешнийНаборДанных, ДанныеРасшифровки, Истина); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ДокументРезультат); ПроцессорВывода.Вывести(ПроцессорКомпоновки); пишет "Получение элемента по значения по индексу не определено" |
|||
27
Илья1111
22.09.19
✎
12:06
|
(7) В "Основная схема компоновки данных" у меня сейчас вот так:
ВЫБРАТЬ ВерсииОбъектов.НомерВерсии КАК Номер, ВерсииОбъектов.АвторВерсии КАК КтоУстановил, ВерсииОбъектов.Объект.Ссылка КАК Партнер, ВерсииОбъектов.ДатаВерсии КАК КогдаУстановил, ВерсииОбъектов.ВерсияОбъекта ИЗ РегистрСведений.ВерсииОбъектов КАК ВерсииОбъектов ГДЕ ВерсииОбъектов.Объект.Ссылка = &Партнер все поля отлично выбираются запросом, и выводятся в отчет, кроме одного единственного поля - ОсновнойМенеджер. Если его добавить в выборку,то во всех строках выводит значение этого реквизита из самой последней версии (например, 5-ой), то есть видимо,значение реквизита Объекта Справочник Партнеры. Не получается вывести в отчет основного менеджера из каждой версии нужного, установленного в ней. |
|||
28
Илья1111
13.10.19
✎
14:40
|
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь; //Настройки=КомпоновщикНастроек.ПолучитьНастройки(); ДанныеРасшифровки=Новый ДанныеРасшифровкиКомпоновкиДанных; // ДанныеРасшифровки.Настройки=КомпоновщикНастроек.ПолучитьНастройки(); КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить( ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных"), // Первая схема компоновки ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных").НастройкиПоУмолчанию, ДанныеРасшифровки,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений")); ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(МакетКомпоновки,,ДанныеРасшифровки); ДокументРезультат.Очистить(); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений; ТаблицаРезультат = Новый ТаблицаЗначений; ПроцессорВывода.УстановитьОбъект(ТаблицаРезультат); ПроцессорВывода.Вывести(ПроцессорКомпоновки); ТаблицаРезультат.Колонки.Добавить("Манагер"); // Не забываем добавить поле "Манагер" и в набор данных схемы "СхемаКомпоновкиДанныхВнешняя" Для Н=1 По ТаблицаРезультат.Количество() Цикл ТаблицаРезультат.Добавить(); КонецЦикла; Для каждого СтрокаТЗ Из ТаблицаРезультат Цикл //Если Выборка.Следующий() Тогда СтрокаТЗ.Манагер = СтрокаТЗ.Менеджер.Область("R20C3").Текст; Если СтрокаТЗ.Менеджер.Область("R20C3").Текст="Нет" Тогда СтрокаТЗ.Манагер=СтрокаТЗ.Менеджер.Область("R21C3").Текст; КонецЕсли; //КонецЕсли; КонецЦикла; инд0 = ТаблицаРезультат.Колонки.Индекс(ТаблицаРезультат.Колонки.Менеджер); Если ТипЗнч(инд0) = Тип("Число") Тогда ТаблицаРезультат.Колонки.Удалить(инд0); КонецЕсли; НаборДанных = Новый Структура; НаборДанных.Вставить("НаборДанных2", ТаблицаРезультат); МакетКомпоновки = КомпоновщикМакета.Выполнить(ПолучитьМакет("СхемаКомпоновкиДанныхВнешняя") ,КомпоновщикНастроек.ПолучитьНастройки(),ДанныеРасшифровки, ); //ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, НаборДанных, ДанныеРасшифровки); //ДокументРезультат.Очистить(); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ДокументРезультат); ПроцессорВывода.Вывести(ПроцессорКомпоновки); КонецПроцедуры |
|||
29
Илья1111
13.10.19
✎
14:40
|
(28) Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь; //Настройки=КомпоновщикНастроек.ПолучитьНастройки(); ДанныеРасшифровки=Новый ДанныеРасшифровкиКомпоновкиДанных; // ДанныеРасшифровки.Настройки=КомпоновщикНастроек.ПолучитьНастройки(); КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить( ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных"), // Первая схема компоновки ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных").НастройкиПоУмолчанию, ДанныеРасшифровки,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений")); ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(МакетКомпоновки,,ДанныеРасшифровки); ДокументРезультат.Очистить(); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений; ТаблицаРезультат = Новый ТаблицаЗначений; ПроцессорВывода.УстановитьОбъект(ТаблицаРезультат); ПроцессорВывода.Вывести(ПроцессорКомпоновки); ТаблицаРезультат.Колонки.Добавить("Манагер"); // Не забываем добавить поле "Манагер" и в набор данных схемы "СхемаКомпоновкиДанныхВнешняя" Для Н=1 По ТаблицаРезультат.Количество() Цикл ТаблицаРезультат.Добавить(); КонецЦикла; Для каждого СтрокаТЗ Из ТаблицаРезультат Цикл //Если Выборка.Следующий() Тогда СтрокаТЗ.Манагер = СтрокаТЗ.Менеджер.Область("R20C3").Текст; Если СтрокаТЗ.Менеджер.Область("R20C3").Текст="Нет" Тогда СтрокаТЗ.Манагер=СтрокаТЗ.Менеджер.Область("R21C3").Текст; КонецЕсли; //КонецЕсли; КонецЦикла; инд0 = ТаблицаРезультат.Колонки.Индекс(ТаблицаРезультат.Колонки.Менеджер); Если ТипЗнч(инд0) = Тип("Число") Тогда ТаблицаРезультат.Колонки.Удалить(инд0); КонецЕсли; НаборДанных = Новый Структура; НаборДанных.Вставить("НаборДанных2", ТаблицаРезультат); МакетКомпоновки = КомпоновщикМакета.Выполнить(ПолучитьМакет("СхемаКомпоновкиДанныхВнешняя") ,КомпоновщикНастроек.ПолучитьНастройки(),ДанныеРасшифровки, ); //ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, НаборДанных, ДанныеРасшифровки); //ДокументРезультат.Очистить(); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ДокументРезультат); ПроцессорВывода.Вывести(ПроцессорКомпоновки); КонецПроцедуры |
|||
30
Илья1111
13.10.19
✎
14:42
|
Отчет генерится без ошибок, но выдает пустую таблицу.
Поля Партнер1 Номер КтоУстановил КогдаУстановил |
|||
31
Илья1111
15.10.19
✎
19:54
|
(24)Я могу предположить, что поле "Основной менеджер", которое мне предстоит вывести в отчет, нужно получить из каких то Виртуальных таблиц, которые связаны с Партнером...
Как мне "добраться" до них?У меня вот в этом проблема, понять, где это лежит в базе. ВерсииОбъектов.Объект.ОсновнойМенеджер.Ссылка мне не даст то что я хочу. Это будет ссылка на ОсновногоМенеджера, значение реквизита Партнера (установленного в последней версии). |
|||
32
Илья1111
16.10.19
✎
06:17
|
(31) (11) Я могу предположить, что поле "Основной менеджер", которое мне предстоит вывести в отчет, нужно получить из каких то Виртуальных таблиц, которые связаны с Партнером...
Как мне "добраться" до них?У меня вот в этом проблема, понять, где это лежит в базе. ВерсииОбъектов.Объект.ОсновнойМенеджер.Ссылка мне не даст то что я хочу. Это будет ссылка на ОсновногоМенеджера, значение реквизита Партнера (установленного в последней версии). |
|||
33
hhhh
16.10.19
✎
07:16
|
(32) посмотри в других отчетах, как выводится. Основной менеджер, он во всех отчетах есть.
|
|||
34
Илья1111
14.01.20
✎
21:24
|
(24) Почти готово. Партнер1 База "Электроника и бытовая техника" - нужно оставить только эти две строки, т.е. 3-ю и 4-ю, и сгруппировать по Партнер1. Как это сделать?Снимок1 это файл где видно как настроен вывод информации в виде таблицы.
|
|||
35
Илья1111
14.01.20
✎
21:27
|
(34)
Тут никак снимок не прикрепить: Партнер1 Номер Когда установил Кто установил Менеджер База "Электроника и бытовая техника" 1 29.09.2019 10:06:57 Орлов Александр Владимирович Королев Сергей Васильевич База "Электроника и бытовая техника" 2 29.09.2019 10:06:57 Орлов Александр Владимирович Мазалова Ирина Львовна |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |