Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Вычисляемое поле

Вычисляемое поле
Я
   Илья1111
 
08.09.19 - 20:09
Доброго времени суток!
Подскажите пожалуйста. Делаю внешний отчет по изменению основного менеджера в справочнике Партнеры.В вычисляемом поле функцией из "Общего модуля" я возвращаю таблицу значений. Как из нее мне получить содержимое определенной ячейки?
 
 
   Илья1111
 
1 - 08.09.19 - 20:11
(0) В отчете нужно получить все факты изменения основного менеджера в Партнере из Истории изменений по Справочнику Партнеры. А таблица значений, результат функции, это версия объекта.
   Chameleon1980
 
2 - 08.09.19 - 20:17
Перебирая строки, получай через точку из очередной строки значение ячейки
   Chameleon1980
 
3 - 08.09.19 - 20:18
Предысторию мог бы и не писать.
   Chameleon1980
 
4 - 08.09.19 - 20:18
Ответ гуглится на раз два
   Илья1111
 
5 - 09.09.19 - 20:12
(4) А в каком модуле нужно осуществить перебор строк таблицы значений?
Для этого подойдет модуль формы внешнего отчета?Внешний отчет делаю на СКД.
   Chameleon1980
 
6 - 10.09.19 - 04:26
Тз оттуда видно? Вперёд. Может уже к делу?
   ДенисЧ
 
7 - 10.09.19 - 04:58
Эту фигню нужно делать запросом, а не каким-то левым общим модулем и ещё более левой тз.
   Chameleon1980
 
8 - 10.09.19 - 05:14
Пусть учится в т.ч. С тз работать
   Илья1111
 
9 - 13.09.19 - 06:09
(6) Не получается обратиться к ТЗ из этого модуля.
   Илья1111
 
10 - 13.09.19 - 06:14
(9) Пытаюсь выбрать текст из ячейки
Результат1=Менеджер.Область("R2C3").Текст;
Где Менеджер это имя поля, где хранится таблица, ошибка: Переменная не определена (Менеджер)
   AneJIbcuH
 
11 - 13.09.19 - 06:33
(10) Что-то невероятное делаете. Какие исходные данные? Есть справочник "Партнеры", это понятно. Что есть история изменений? Регистр Сведений? Как отчет в итоге должен выглядеть?  

-Партнер 1
-- Изменение 1
-- Изменение 2
-- Изменение 3

-Партнер 2
-- Изменение 1
-- Изменение 2

Так?
   Chameleon1980
 
12 - 13.09.19 - 07:42
аааааааааааааааа
   Илья1111
 
13 - 13.09.19 - 20:41
(11) (11) Партнер 1
-- Изменение 1
-- Изменение 2
-- Изменение 3

по Основному менеджеру в Партнер1. Группировка по умолчанию должна быть установлена по Партнер1.
   Илья1111
 
14 - 13.09.19 - 20:45
все данные беру из Регистр Сведений 
Версии Объектов
все получилось, однако поле
ВерсииОбъектов.Объект.ОсновнойМенеджер 
мне возвращает значение реквизита из последней версии (одно и то же в 
-- Изменение 1
-- Изменение 2
-- Изменение 3)
   Илья1111
 
15 - 13.09.19 - 20:49
(14) подумалось, что более правильный подход, вызвать готовую функцию из Общего модуля
ВерсионированиеОбъектов.ОтчетПоВерсииОбъекта(Партнер,Номер,Номер)
она возвращает результат ТабличныйДокумент. Вот из него то и хочу взять и вывести данные.
   hhhh
 
16 - 13.09.19 - 20:57
(15) лучше найти функцию, которая возвращает не табличный документ. Неужели нет попроще функций?
   Илья1111
 
17 - 15.09.19 - 08:08
Еще особенность: все действия нужно проводить в рамках Внешего отчета.
Т.е. конфигурацию не менять, из готовых функций Общих модулей нашел только такую.
   МимохожийОднако
 
18 - 15.09.19 - 09:19
(17) Может быть, проще написать нужную тебе функцию и не костылить?
   Илья1111
 
19 - 15.09.19 - 19:22
(18) Эта функция может быть расположена в модуле Внешнего отчета?
   ДенисЧ
 
20 - 15.09.19 - 19:25
(19) нет
   Илья1111
 
21 - 15.09.19 - 19:57
у меня по задаче недопустимо менять конфу..то есть, кроме модуля Внешнего отчета и не где делать
   shuhard
 
22 - 15.09.19 - 20:13
(21) что мешает в твоем отчете на СКД использовать ПриКомпоновкеРезультата ?
получи список Партнеров, добудь ТЗ и выведи её в отчет
вычисляемые поля для данной задачи не нужны
   Илья1111
 
23 - 16.09.19 - 06:30
https://expert.chistov.pro/public/334440/ так?
т.е. добавить одно поле-колонку в таблицу, и в нее вывести (полученное запросом)?
   shuhard
 
24 - 16.09.19 - 06:52
(23) да
   Илья1111
 
25 - 16.09.19 - 19:17
Полю Менеджер указал тип значения ОпределяемыйТип.ФизическоеЛицо.
Запрос = Новый Запрос;

            Запрос.Текст = 
    "ВЫБРАТЬ
    |    ВерсииОбъектов.Объект.ОсновнойМенеджер.Ссылка КАК ОсновнойМенеджер
    |ИЗ
    |    РегистрСведений.ВерсииОбъектов КАК ВерсииОбъектов";
    

    

    Выборка = Запрос.Выполнить().Выбрать();
    Если Выборка.Следующий() Тогда
    Результат1 = Новый Структура("ОсновнойМенеджер",Выборка);
    Результат1.ОсновнойМенеджер = Результат1.ОсновнойМенеджер.Получить();
    СтрокаТЗ.Менеджер=Результат1.ОсновнойМенеджер;
         КонецЕсли;   
        КонецЦикла;
но почему то вылазит ошибка Поле не найдено "Менеджер"
   Илья1111
 
26 - 21.09.19 - 18:46
Запрос = Новый Запрос;

            Запрос.Текст = 
    "ВЫБРАТЬ
    |    ВерсииОбъектов.Объект.ОсновнойМенеджер.Ссылка КАК ОсновнойМенеджер,
    |    ВерсииОбъектов.НомерВерсии КАК Номер
    |ИЗ
    |    РегистрСведений.ВерсииОбъектов КАК ВерсииОбъектов";
        Результат = Запрос.Выполнить();
    Выборка = Результат[2].Выгрузить();
    Менеджер= Выборка.ВыгрузитьКолонку(0);Номер= Выборка.ВыгрузитьКолонку(1);   
    ТЗ = Новый ТаблицаЗначений;
    ТЗ.Колонки.Добавить("Менеджер", Новый ОписаниеТипов("СправочникСсылка.Пользователи"));
    ТЗ.Колонки.Добавить("Номер", Новый КвалификаторыЧисла(10,0));
    ТЗ.ЗагрузитьКолонку(Менеджер,"Менеджер"); 
    ТЗ.ЗагрузитьКолонку(Номер,"Номер"); 

    ВнешнийНаборДанных = Новый Структура;
    ВнешнийНаборДанных.Вставить("НаборДанных2", ТЗ);  
    //МакетКомпоновки = КомпоновщикМакета.Выполнить(ПолучитьМакет("Макет")

    //,КомпоновщикНастроек.ПолучитьНастройки(),ДанныеРасшифровки, );

     ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
    
    ДокументРезультат.Очистить();

    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, ВнешнийНаборДанных, ДанныеРасшифровки, Истина);
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
    ПроцессорВывода.Вывести(ПроцессорКомпоновки);    

пишет "Получение элемента по значения по индексу не определено"
   Илья1111
 
27 - 22.09.19 - 12:06
(7) В "Основная схема компоновки данных" у меня сейчас вот так:
ВЫБРАТЬ
    ВерсииОбъектов.НомерВерсии КАК Номер,
    ВерсииОбъектов.АвторВерсии КАК КтоУстановил,
    ВерсииОбъектов.Объект.Ссылка КАК Партнер,
    ВерсииОбъектов.ДатаВерсии КАК КогдаУстановил,
    ВерсииОбъектов.ВерсияОбъекта
ИЗ
    РегистрСведений.ВерсииОбъектов КАК ВерсииОбъектов
ГДЕ
    ВерсииОбъектов.Объект.Ссылка = &Партнер
все поля отлично выбираются запросом, и выводятся в отчет, кроме одного единственного поля - ОсновнойМенеджер. Если его добавить в выборку,то во всех строках выводит значение этого реквизита из самой последней версии (например, 5-ой), то есть видимо,значение реквизита Объекта Справочник Партнеры. Не получается вывести в отчет основного менеджера из каждой версии нужного, установленного в ней.
   Илья1111
 
28 - 13.10.19 - 14:40
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
    
    СтандартнаяОбработка = Ложь;  
    //Настройки=КомпоновщикНастроек.ПолучитьНастройки(); ДанныеРасшифровки=Новый ДанныеРасшифровкиКомпоновкиДанных;

    // ДанныеРасшифровки.Настройки=КомпоновщикНастроек.ПолучитьНастройки();

    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновки = КомпоновщикМакета.Выполнить(
        ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных"),                      // Первая схема компоновки

        ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных").НастройкиПоУмолчанию,  ДанныеРасшифровки,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
    
    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;  
    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки,,ДанныеРасшифровки);
        ДокументРезультат.Очистить();
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
    ТаблицаРезультат = Новый ТаблицаЗначений;
    ПроцессорВывода.УстановитьОбъект(ТаблицаРезультат);
    ПроцессорВывода.Вывести(ПроцессорКомпоновки);
        
            
    ТаблицаРезультат.Колонки.Добавить("Манагер");// Не забываем добавить поле "Манагер" и в набор данных схемы "СхемаКомпоновкиДанныхВнешняя"

            Для Н=1 По ТаблицаРезультат.Количество() Цикл
    ТаблицаРезультат.Добавить();
КонецЦикла;
            Для каждого СтрокаТЗ Из ТаблицаРезультат Цикл
            
            //Если Выборка.Следующий() Тогда

             СтрокаТЗ.Манагер = СтрокаТЗ.Менеджер.Область("R20C3").Текст;
            Если СтрокаТЗ.Менеджер.Область("R20C3").Текст="Нет"  Тогда               
                    СтрокаТЗ.Манагер=СтрокаТЗ.Менеджер.Область("R21C3").Текст;

            
                КонецЕсли; 
                
                //КонецЕсли;   

        КонецЦикла;
        инд0 = ТаблицаРезультат.Колонки.Индекс(ТаблицаРезультат.Колонки.Менеджер);    
        Если ТипЗнч(инд0) = Тип("Число") Тогда   
        ТаблицаРезультат.Колонки.Удалить(инд0); КонецЕсли;
                             
    НаборДанных = Новый Структура;
    НаборДанных.Вставить("НаборДанных2", ТаблицаРезультат);  
    МакетКомпоновки = КомпоновщикМакета.Выполнить(ПолучитьМакет("СхемаКомпоновкиДанныхВнешняя")    ,КомпоновщикНастроек.ПолучитьНастройки(),ДанныеРасшифровки, );
    //ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;    

    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, НаборДанных, ДанныеРасшифровки);
    //ДокументРезультат.Очистить();    

    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
    ПроцессорВывода.Вывести(ПроцессорКомпоновки);    
    
КонецПроцедуры
   Илья1111
 
29 - 13.10.19 - 14:40
(28) Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
    
    СтандартнаяОбработка = Ложь;  
    //Настройки=КомпоновщикНастроек.ПолучитьНастройки(); ДанныеРасшифровки=Новый ДанныеРасшифровкиКомпоновкиДанных;

    // ДанныеРасшифровки.Настройки=КомпоновщикНастроек.ПолучитьНастройки();

    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновки = КомпоновщикМакета.Выполнить(
        ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных"),                      // Первая схема компоновки

        ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных").НастройкиПоУмолчанию,  ДанныеРасшифровки,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
    
    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;  
    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки,,ДанныеРасшифровки);
        ДокументРезультат.Очистить();
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
    ТаблицаРезультат = Новый ТаблицаЗначений;
    ПроцессорВывода.УстановитьОбъект(ТаблицаРезультат);
    ПроцессорВывода.Вывести(ПроцессорКомпоновки);
        
            
    ТаблицаРезультат.Колонки.Добавить("Манагер");// Не забываем добавить поле "Манагер" и в набор данных схемы "СхемаКомпоновкиДанныхВнешняя"

            Для Н=1 По ТаблицаРезультат.Количество() Цикл
    ТаблицаРезультат.Добавить();
КонецЦикла;
            Для каждого СтрокаТЗ Из ТаблицаРезультат Цикл
            
            //Если Выборка.Следующий() Тогда

             СтрокаТЗ.Манагер = СтрокаТЗ.Менеджер.Область("R20C3").Текст;
            Если СтрокаТЗ.Менеджер.Область("R20C3").Текст="Нет"  Тогда               
                    СтрокаТЗ.Манагер=СтрокаТЗ.Менеджер.Область("R21C3").Текст;

            
                КонецЕсли; 
                
                //КонецЕсли;   

        КонецЦикла;
        инд0 = ТаблицаРезультат.Колонки.Индекс(ТаблицаРезультат.Колонки.Менеджер);    
        Если ТипЗнч(инд0) = Тип("Число") Тогда   
        ТаблицаРезультат.Колонки.Удалить(инд0); КонецЕсли;
                             
    НаборДанных = Новый Структура;
    НаборДанных.Вставить("НаборДанных2", ТаблицаРезультат);  
    МакетКомпоновки = КомпоновщикМакета.Выполнить(ПолучитьМакет("СхемаКомпоновкиДанныхВнешняя")    ,КомпоновщикНастроек.ПолучитьНастройки(),ДанныеРасшифровки, );
    //ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;    

    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, НаборДанных, ДанныеРасшифровки);
    //ДокументРезультат.Очистить();    

    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
    ПроцессорВывода.Вывести(ПроцессорКомпоновки);    
    
КонецПроцедуры
   Илья1111
 
30 - 13.10.19 - 14:42
Отчет генерится без ошибок, но выдает пустую таблицу.
Поля
Партнер1
Номер КтоУстановил КогдаУстановил
 
 Рекламное место пустует
   Илья1111
 
31 - 15.10.19 - 19:54
(24)Я могу предположить, что поле "Основной менеджер", которое мне предстоит вывести в отчет, нужно получить из каких то Виртуальных таблиц, которые связаны с Партнером...
Как мне "добраться" до них?У меня вот в этом проблема, понять, где это лежит в базе.
ВерсииОбъектов.Объект.ОсновнойМенеджер.Ссылка мне не даст то что я хочу.
Это будет ссылка на ОсновногоМенеджера, значение реквизита Партнера (установленного в последней версии).
   Илья1111
 
32 - 16.10.19 - 06:17
(31) (11) Я могу предположить, что поле "Основной менеджер", которое мне предстоит вывести в отчет, нужно получить из каких то Виртуальных таблиц, которые связаны с Партнером...
Как мне "добраться" до них?У меня вот в этом проблема, понять, где это лежит в базе.
ВерсииОбъектов.Объект.ОсновнойМенеджер.Ссылка мне не даст то что я хочу.
Это будет ссылка на ОсновногоМенеджера, значение реквизита Партнера (установленного в последней версии).
   hhhh
 
33 - 16.10.19 - 07:16
(32) посмотри в других отчетах, как выводится. Основной менеджер, он во всех отчетах есть.
   Илья1111
 
34 - 14.01.20 - 21:24
(24) Почти готово. Партнер1 База "Электроника и бытовая техника" - нужно оставить только эти две строки, т.е. 3-ю и 4-ю, и сгруппировать по Партнер1. Как это сделать?Снимок1 это файл где видно как настроен вывод информации в виде таблицы.
   Илья1111
 
35 - 14.01.20 - 21:27
(34)
Тут никак снимок не прикрепить:
Партнер1                             Номер  Когда установил    Кто установил                Менеджер
База "Электроника и бытовая техника" 1     29.09.2019 10:06:57 Орлов Александр Владимирович Королев Сергей Васильевич
База "Электроника и бытовая техника" 2     29.09.2019 10:06:57 Орлов Александр Владимирович Мазалова Ирина Львовна


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.