Имя: Пароль:
1C
1С v8
Вычисляемое поле в списке регистра сведений
0 Vladal
 
24.06.16
09:26
Всем привет!
УПП, обычные формы, 8.3.
Создал регистр сведений с дополнительными данными физлиц, вроде регистра сведений "Сведения об инвалидности", в котором хранятся различные сведения для предоставления льгот.
У регистра есть два измерения - физлицо и категория (чернобылец, ветеран, участник боевых действий, инвалид детства, дети войны и прочие), и несколько ресурсов с дополнительной информацией - вроде как ГруппаЧернобыльца, номер и дата удостоверения, комментарий.

Для некоторых категорий, например, чернобыльцев я хочу совместить в одной ячейке текст из Категории и текст ГруппаЧернобыльца, получается "Чернобылец, II группа".

В ПриПолученииДанных делаю вот так:
ОформлениеСтроки.Ячейки.ТекстоваяКолонка.Текст = ОформлениеСтроки.Ячейки.Категории + " " + ОформлениеСтроки.Ячейки.ГруппаЧернобыльца

Но если седлать невидимой колонку "ГруппаЧернобыльца", то этих данных нет.
Я пробовал такое на динамических списках стправочника - там работает "Реквизит1 + Реквизит2" при скрытых колонках.

Хотя... может в ПриПолученииДанных получить все данные и сформировать выборку запросом, которую уже поместить в табличное поле на форме?

Как бы лучше это провернуть?
1 xxTANATORxx
 
24.06.16
09:28
(0)запросом
2 aleks_default
 
24.06.16
09:30
(1)+1. Вроде да, в ПриПолученииДанных можно сделать.
3 Vladal
 
24.06.16
09:32
(1) А как получить источник? перебирать всю коллекцию ОформленияСтрок в цикле? метод ОформленияСтрок.Выгрузить() не сработал, пишет нет такого метода.
4 xxTANATORxx
 
24.06.16
09:32
(1)
1.только не делай запрос в цикле
2.я бы советовал модуль повторногоИспользования
5 Vladal
 
24.06.16
09:34
(4) Ну, это понятно - запросы в цикле нагрузят сервер. Я в цикле сформирую список данных, потом его вставлю в запрос. Смотрю, во всех типовых модулях всегда делается обход всей коллекции, то есть выгрузить колонку из ОформленияСтрок нельзя.
6 xxTANATORxx
 
24.06.16
09:35
(3)
Процедура ЖурналДокументовСписокПриПолученииДанных(Элемент, ОформленияСтрок)
    
    МассивСсылок = Новый Массив;
    НаборСтрок = Новый Соответствие;
    Для каждого СтрокаОформления Из ОформленияСтрок Цикл
    
        МассивСсылок.Добавить(СтрокаОформления.ДанныеСтроки.Договор);
        
        Если НаборСтрок[СтрокаОформления.ДанныеСтроки.Договор] = Неопределено Тогда
            НаборСтрок.Вставить(СтрокаОформления.ДанныеСтроки.Договор, Новый Массив);
        КонецЕсли;
        НаборСтрок[СтрокаОформления.ДанныеСтроки.Договор].Добавить(СтрокаОформления);
        
        СтрокаОформления.Ячейки.Этап.ОтображатьТекст = Истина;
        СтрокаОформления.Ячейки.Этап.УстановитьТекст("");
    
    КонецЦикла;

    Если МассивСсылок.Количество() <> 0 Тогда
    
        Запрос = Новый Запрос;
        Запрос.Текст =
        "ВЫБРАТЬ РАЗРЕШЕННЫЕ
        |    Табл.Ссылка КАК Договор,
        |    Табл.Этап.Наименование КАК Этап
        |ИЗ
        |    Справочник.Договора КАК Табл
        |ГДЕ
        |    Табл.Ссылка В(&МассивСсылок)";
        
        Запрос.УстановитьПараметр("МассивСсылок", МассивСсылок);
        
        Выборка = Запрос.Выполнить().Выбрать();
        Пока Выборка.Следующий() Цикл
            
            Если НЕ ЗначениеЗаполнено(Выборка.Этап) Тогда
                Продолжить;
            КонецЕсли;
            
            Для каждого СтрокаОформления Из НаборСтрок[Выборка.Договор] Цикл
            
                СтрокаОформления.Ячейки.Этап.УстановитьТекст(Выборка.Этап);
            
            КонецЦикла;
        
        КонецЦикла;
    
    КонецЕсли;
    
КонецПроцедуры
7 Vladal
 
24.06.16
09:38
Да. Подобное я видел списках документов в УАТ и УПП. Это уже попробовал.

В журнале документов или списке справочника такое проходит. Я так и делал.
Проблема уже потом, когда я на форме скрываю колонку с группоЧернобыльца и ... в следующий раз в ПриПолученииДанных этой колонки нет.

Может, я что-то делаю не так.
8 Vladal
 
24.06.16
09:39
(только я всегда упрощаю условие вида Если МассивСсылок.Количество() <> 0 Тогда
до просто Если МассивСсылок.Количество() Тогда)
9 HardBall
 
24.06.16
09:46
(0) Баловство.
Свистелки и прочее.
10 xxTANATORxx
 
24.06.16
09:48
(7)смотри по "неотключаемым" полям, у рег сведения это типа ключ записи, т.е. набор измерений, емнип
11 Vladal
 
24.06.16
09:55
(9) Вот именно. Но надо сделать так.
(10) Я сопоставляю Категорию (измерение) и Группу (ресурс). Скрыть надо колонку ресурса, потому как получается дублирующая запись:

| Физлицо| Категория            | Группа    | Удостоверение
|        |                      |чернобыльца| (дата, номер)
| Иванов |Чернобылец, II группа | II группа | Удостоверение АА00001 |
| Петров |Дети войны            |           | Удостоверение АА00002 |
| Сидоров|Чернобылец, II группа | II группа | Удостоверение АА00001 |
12 Timon1405
 
24.06.16
09:58
(11)
(0)>>Создал регистр
Что мешает добавить туда еще колонку, записывать ее для чернобыльцев и выводить ее вместо вашей рассчитываемой?
13 Vladal
 
24.06.16
10:08
(12) Добавить новую колонку в регистре? Или на форме списка регистра?
Интересная идея - добавить реквизит Представление и его заполнять при записи, потом выводить
14 Timon1405
 
24.06.16
10:21
(13) в регистре конечно. вы же пишете, что регистр ваш, зачем эти пляски с выводом, вы же разработчик
в тему об идиотских постановках задач

-Убейте дракона .... -Ок, вот, убил
-А почему Вы это сделали не зубочисткой, выструганной из двадцать третьей от края леса сосны, в полнолуние на ведьминой горе, отсчитав ровно двадцать три крика ворона, будучи одетым в костюм шута и рыцарский шлем?
15 Vladal
 
24.06.16
10:23
Решил добавлением реквизита Представление, который заполняю на форме записи.
А то когда свою таблицу заполняю, надо было много танцевать с отборами, выводом и т.д.

Так что "убил бракона" "как разработчик", тупо, а не зубочисткой, выструганной на третьей фазе луны.
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс