Имя: Пароль:
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) ОформленияСтроки.Ячейки.Управляющая.Текст = Результат.УК;

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

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