Имя: Пароль:
1C
 
Как в форму списка справочника связать с реквизитом формы документа?
,
0 AlexBor
 
naïve
16.06.15
12:35
8.2 Самописная. Есть на форме реквизит УправляющаяКомпания связан с регистром Свед. УправляющиеКомпании. Запросом нахожу последнюю запись:
Запрос.Текст =
        "ВЫБРАТЬ
        |    МАКСИМУМ(УправляющиеКомпании.Период) КАК Период,
        |    МАКСИМУМ(УправляющиеКомпании.УК) КАК УК,
        |    УправляющиеКомпании.Адрес
        |ИЗ
        |    РегистрСведений.УправляющиеКомпании КАК УправляющиеКомпании
        |ГДЕ
        |    УправляющиеКомпании.Адрес = &Адрес
        |
        |СГРУППИРОВАТЬ ПО
        |    УправляющиеКомпании.Адрес
        |
        |УПОРЯДОЧИТЬ ПО
        |    Период УБЫВ";

    Запрос.УстановитьПараметр("Адрес", ЭтотОбъект.Ссылка);

    Результат = Запрос.Выполнить().Выбрать();


КАК мне в форму списка справочника в колонку УК получить "Результат"?
1 DmitrO
 
16.06.15
12:41
прикольный запрос: собственно период может не соответствовать управляющей компании :)
2 AlexBor
 
naïve
16.06.15
12:43
(1) Сам удивляюсь прикольный работающий запрос ))))
3 DmitrO
 
16.06.15
12:50
(2)когда у адреса сначала была назначена новая компания, а с какой-то следующей даты старая (из старых, ранее заведенных), тогда действительно удивишься
4 AlexBor
 
naïve
16.06.15
12:56
(3) Ну прав ты ... я удивился .... и как сделать правильно подскажеш?
5 DmitrO
 
16.06.15
13:03
выбрать
  УправляющиеКомпании.Период,
  УправляющиеКомпании.УК
из РегистрСведений.УправляющиеКомпании.СрезПоследних(, Адрес = &Адрес) КАК УправляющиеКомпании
6 DmitrO
 
16.06.15
13:06
или так:

выбрать
  Данные.Период,
  УправляющиеКомпании.УК
из (
  выбрать
    МАКСИМУМ(УправляющиеКомпании.Период) КАК Период,
  из РегистрСведений.УправляющиеКомпании КАК УправляющиеКомпании
  где УправляющиеКомпании.Адрес = &Адрес
) как Данные
левое соединение РегистрСведений.УправляющиеКомпании КАК УправляющиеКомпании
  по УправляющиеКомпании.Адрес = &Адрес и УправляющиеКомпании.Период = Данные.Период

что в общем-то одно и тоже
7 DmitrO
 
16.06.15
13:07
теперь перейдем к теме ветки.
УФ или ОФ?
8 AlexBor
 
naïve
16.06.15
13:11
(7) Согласен .....  тоько не большое дополнение к (5) если позволите сделал :

"ВЫБРАТЬ Первые 1
        |    УправляющиеКомпании.Период КАК Период,
        |    УправляющиеКомпании.УК КАК УК,
        |    УправляющиеКомпании.Адрес
        |ИЗ
        |    РегистрСведений.УправляющиеКомпании КАК УправляющиеКомпании
        |ГДЕ
        |    УправляющиеКомпании.Адрес = &Адрес
        |
        |СГРУППИРОВАТЬ ПО
        |    УправляющиеКомпании.Адрес,
        |    УправляющиеКомпании.Период,
        |    УправляющиеКомпании.УК
        |
        |УПОРЯДОЧИТЬ ПО
        |    Период УБЫВ,
        |    УК УБЫВ";

и теперь все вроде как нормально
9 AlexBor
 
naïve
16.06.15
13:12
(7) Да к теме ветке и так как реализовать?
10 AlexBor
 
naïve
16.06.15
13:20
(7) Очень благодарен что нашли ошибку в запросе а по теме ветки?
11 Timon1405
 
16.06.15
13:22
(10) пока не озвучено ОФ или УФ, дальнейший разговор бессмысленный
12 DmitrO
 
16.06.15
13:25
(10)ждем ответа на (7)
13 AlexBor
 
naïve
16.06.15
13:26
(11) да простите виноват -  ОФ
14 AlexBor
 
naïve
16.06.15
13:26
(12) ОФ
15 Timon1405
 
16.06.15
13:31
(13) тогда вам по аналогии с этим Книга знаний: Вывод остатков в форме списка только вам нужно переделать запрос чтобы он получал связанные данные сразу для всех элементов. ну или используйте "при выводе строки", но тут за такое бьют)
16 turrist
 
16.06.15
13:33
Можно так:
В форму списка справочника добавить колонку ТвойРеквизит.
Заполнять её в предопределённой процедуре "ПриПолученииДанных".
В которой:
Для каждого ОформлениеСтроки Из ОформленияСтрок Цикл
        
СтрокаТаблицыОформления = ТаблицаТвоегоЗапроса.Найти(ОформлениеСтроки.ДанныеСтроки.УК);
        
        Если СтрокаТаблицыОформления <> Неопределено Тогда        
            ОформлениеСтроки.Ячейки.ТвойРеквизит.Значение = ТаблицаТвоегоЗапроса.ТвойРеквизит;
            
            
        Иначе
            ОформлениеСтроки.Ячейки.ТвойРеквизит.Значение = "";

        КонецЕсли;
        
    КонецЦикла;
17 DmitrO
 
16.06.15
13:38
1 вариант:
использовать событие ПриВыводеСтроки вычисляя УК собственно таким же запросом, и использовать результат для оформления ячеек в табличном поле списка. Недостаток в том что много мелких запросов.

2 вариант:
использовать событие ПриПолученииДанных при этом сначала придется собрать массив адресов, потом получить запросом таблицу (Адрес,Период,УК) по ним (запрос будет несколько сложнее), и опять же расставить оформление ячеек. Так эффективнее, но коду еще больше.

3 вариант:
а можно написать управляемую форму, включить итоги по этому РС, и написать произвольный запрос в динамическом списке, так в модуле формы коду вообще не будет, и будет максимально эффективно. Обычное приложение вполне нормально показывает и работает с управляемыми формами.
18 AlexBor
 
naïve
16.06.15
13:40
Я понял  Спасибо  все отвечавшим особенно благодарен    DmitrO
19 AlexBor
 
naïve
16.06.15
20:27
(17) Процедура СправочникСписокПриВыводеСтроки(Элемент, ОформленияСтроки, ДанныеСтроки)
    
        
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ Первые 1
        |    УправляющиеКомпании.Период КАК Период,
        |    УправляющиеКомпании.УК КАК УК,
        |    УправляющиеКомпании.Адрес
        |ИЗ
        |    РегистрСведений.УправляющиеКомпании.СрезПоследних(, Адрес = &Адрес) КАК УправляющиеКомпании
        |ГДЕ
        |    УправляющиеКомпании.Адрес = &Адрес
        |
        |СГРУППИРОВАТЬ ПО
        |    УправляющиеКомпании.Адрес,
        |    УправляющиеКомпании.Период,
        |    УправляющиеКомпании.УК
        |
        |УПОРЯДОЧИТЬ ПО
        |    Период УБЫВ,
        |    УК УБЫВ";

    //
        
    Запрос.УстановитьПараметр("Адрес", ДанныеСтроки.Ссылка);
    Результат = Запрос.Выполнить().Выбрать();
    
     ОформленияСтроки.Ячейки.Управляющая.Значение = ДАнныеСтроки.Ссылка.Результат.УК;
      
    
        
    

     КонецПроцедуры
Выдает ошибку что не правильно?
20 hhhh
 
16.06.15
20:34
Результат вроде отдельно ссылка отдельно. А пишешь прикольно: Ссылка.Результат.
21 AlexBor
 
naïve
16.06.15
20:38
(20) Сделал вот так: ОформленияСтроки.Ячейки.Управляющая.Значение = Результат.УК;
Получилось но обрезает до 10 символов где можно исправить?
22 hhhh
 
16.06.15
20:49
(21) ОформленияСтроки.Ячейки.Управляющая.Текст = Результат.УК;

и там что-то типа

ОформленияСтроки.Ячейки.Управляющая.ОтображатьТекст = Истина;