Имя: Пароль:
1C
1С v8
Получение таблицы значения, оформление строк.
0 lopolopserg
 
14.07.14
10:33
Учусь. Такую штуку делаю первый раз. Суть:
1. В карточке номенкалатуры создал страницу "спецификация". В ней создаем элементы из формы. Реквизит в Форме, которые присутсвуют в Спецификации --  "Название Спецификации".
2. Есть Регистр сведений, в который записываются "Спецификация", "номенкалатура", "Период", "пользователь".
3. Мне надо добавить в колонки (которые я создал на странице "Спецификации" "Период" и "пользователь", которые бы соотвествовали текущей спецификации.
4. в Процедуре Запросом выцепил Таблицу значений. Но дальше тупик.
Вроде надо сделать как-то Ссылку на спецификацию, но не пойму как.

Процедура СпецификацииПриПолученииДанныхЗаказной(Элемент, ОформленияСтрок)
    

    Данные = ЭтотОбъект.Ссылка;
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ РАЗРЕШЕННЫЕ
    |    МАКСИМУМ(СпецификацииПоЗаказной.Период) КАК Период,
    |    СпецификацииПоЗаказной.Номенклатура,
    |    СпецификацииПоЗаказной.Спецификация
    |ПОМЕСТИТЬ макс
    |ИЗ
    |    РегистрСведений.СпецификацииПоЗаказной КАК СпецификацииПоЗаказной
    |ГДЕ
    |    СпецификацииПоЗаказной.Номенклатура.Ссылка = &Ссылка
    |
    |СГРУППИРОВАТЬ ПО
    |    СпецификацииПоЗаказной.Номенклатура,
    |    СпецификацииПоЗаказной.Спецификация
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |    макс.Период,
    |    СпецификацииПоЗаказной.Пользователь,
    |    макс.Номенклатура,
    |    СпецификацииПоЗаказной.Спецификация
    |ИЗ
    |    макс КАК макс
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СпецификацииПоЗаказной КАК СпецификацииПоЗаказной
    |        ПО макс.Период = СпецификацииПоЗаказной.Период
    |            И макс.Спецификация = СпецификацииПоЗаказной.Спецификация
    |ГДЕ
    |    СпецификацииПоЗаказной.Номенклатура.Ссылка = &Ссылка";
    
    Запрос.УстановитьПараметр("Ссылка", Данные);
    
      Результат=Запрос.Выполнить();
      Таблица=Результат.Выгрузить();
      
       //Сообщить (Период);
      
       Для каждого СтрокаТаблицы Из Таблица Цикл
          Строка.Ячейки.Актуальность.Значение = СтрокаТаблицы.Период;
          Строка.Ячейки.Колонка1.Значение  = СтрокаТаблицы.Пользователь;
    КонецЦикла;

КонецПроцедуры
1 Рэйв
 
14.07.14
10:40
ТЗ выкинь на помойку.
Сделай табличное поле с типом РегистрСведенийНабрЗаписей.Твой
и ставь отбор на набор
2 lopolopserg
 
14.07.14
10:43
(1) А можно спросить, а почуму ТЗ на помойку ?
3 Рэйв
 
14.07.14
10:44
(2)Потому что поддерживать актуальность тяжело. А при реализации отбора на набор записей все за тебя сделает платформа.
4 lopolopserg
 
14.07.14
10:46
(3) Хммм. А можно тогда для расширения кругозора всё-таки сделать через ТЗ? (Для своего понимания).

И есть ли примерчик отбора на набор?

Спасибо!
5 Рэйв
 
14.07.14
10:56
(4) Я ошибся слегка:-)
Тип таб поля должен быть РегистрСведенийСписок.Твой

А отбор устанавливается просто:

ИмяТабПоля.Отбор.ИмяОтбора.Установить(Значение);


А в какой момент тебе его воткнуть уж сам смотри
6 Рэйв
 
14.07.14
10:57
т.е в таоем варианте:


ИмяТабПоля.Отбор.Спецификация.Установить(ТекСпецификация);
7 lopolopserg
 
14.07.14
10:59
(6) Спасибо, Дружище! Выручил. Успешной рабочей недели!