Имя: Пароль:
1C
1С v8
Как заполнить добавленные поля ФормыСписка справочника
0 LivingStar
 
15.04.13
08:21
Для справочника сделан регистр сведений, где есть история изменения некоторых реквизитов не имеющихся у справочника. В форме списка добавил 4 поля, как их заполнить данными? Из регистра сведений что бы сделать выборку, где получать ссылки на элементы справочника? В какой процедуре заполнять дополнительные поля?
1 LivingStar
 
15.04.13
08:23
ПриВыводеСтроки() наверное
2 Defender aka LINN
 
15.04.13
08:26
(1) Расстрелять
3 Рэйв
 
15.04.13
08:32
>>изменения некоторых реквизитов не имеющихся у справочника

завис..
4 Рэйв
 
15.04.13
08:33
может ТС так пытается представить периодический РС?
5 cw014
 
15.04.13
08:33
Даже подсказывать не собираюсь. ТС видимо читать не умеет
6 LivingStar
 
15.04.13
08:35
Процедура СправочникСписокПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
   Запрос       = Новый Запрос;
   Запрос.Текст = "
       |ВЫБРАТЬ
       |    ИсторияОборотовПоКатегориямМагазиновСрезПоследних.Период,
       |    ИсторияОборотовПоКатегориямМагазиновСрезПоследних.НедельныйОборотОт,
       |    ИсторияОборотовПоКатегориямМагазиновСрезПоследних.НедельныйОборотДо,
       |    ИсторияОборотовПоКатегориямМагазиновСрезПоследних.НижняяПланка
       |ИЗ
       |    РегистрСведений.ИсторияОборотовПоКатегориямМагазинов.СрезПоследних(&Период, КатегорияМагазина = &КатегорияМагазина) КАК ИсторияОборотовПоКатегориямМагазиновСрезПоследних";
   Запрос.УстановитьПараметр("Период",            ТекущаяДата());
   Запрос.УстановитьПараметр("КатегорияМагазина", ДанныеСтроки.Ссылка);
   Рез = Запрос.Выполнить();
   Если Не Рез.Пустой() Тогда
       Выборка = Рез.Выбрать();
       Пока Выборка.Следующий() Цикл
           ОформлениеСтроки.Ячейки.Период.Значение            = Выборка.Период;
           ОформлениеСтроки.Ячейки.НедельныйОборотОт.Значение = Выборка.НедельныйОборотОт;
           ОформлениеСтроки.Ячейки.НедельныйОборотДо.Значение = Выборка.НедельныйОборотДо;
           ОформлениеСтроки.Ячейки.НижняяПланка.Значение      = Выборка.НижняяПланка;
       КонецЦикла;
   КонецЕсли;
КонецПроцедуры
7 cw014
 
15.04.13
08:38
ОформлениеСтроки.Ячейки.Период.УстановитьТекст( Выборка.Период);
           ОформлениеСтроки.Ячейки.НедельныйОборотОт.УстановитьТекст(Выборка.НедельныйОборотОт);
           ОформлениеСтроки.Ячейки.НедельныйОборотДо.УстановитьТекст(Выборка.НедельныйОборотДо);
           ОформлениеСтроки.Ячейки.НижняяПланка.УстановитьТекст(Выборка.НижняяПланка);


Ведь вынудил же...

А за запрос в ПриВыводеСтроки - пожизненный расстрел
8 Defender aka LINN
 
15.04.13
08:40
(6) Пожизненный эцих с гвоздями за такое!
9 Cube
 
15.04.13
08:44
(6) Юзай ПриВыводеСтроки()...
10 Cube
 
15.04.13
08:45
(9) Тьфу! ПриПолученииДанных() конечно же :)))
11 LivingStar
 
15.04.13
08:58
и как мне использовать ОформленияСтрок в ПриПолученииДанных() ? ОформлениеСтроки() то понятно!!!
12 Cube
 
15.04.13
09:00
(11) Достаточно в отладчике посмотреть тип у ОформленияСтрок ну или посмотреть в СП...
13 cw014
 
15.04.13
09:01
А ОформлениеСтрок - не понятно. И СП глухо о нем молчит и не говорит, что это коллекция из "ОформлениеСтроки"
14 cw014
 
15.04.13
09:01
А еще СП вообще бесполезен, если его НЕ ЧИТАТЬ
15 LivingStar
 
15.04.13
09:09
почему нельзя при выводе строки? там все работало!!!

тут сейчас заполняется только одна строка в справочнике
16 cw014
 
15.04.13
09:09
Люди, объясните ему, что не так, я уже устал...
17 LivingStar
 
15.04.13
09:12
Процедура СправочникСписокПриПолученииДанных(Элемент, ОформленияСтрок)
   Й = 0;
   Запрос       = Новый Запрос;
   Запрос.Текст = "
       |ВЫБРАТЬ
       |    ИсторияОборотовПоКатегориямМагазиновСрезПоследних.Период,
       |    ИсторияОборотовПоКатегориямМагазиновСрезПоследних.НедельныйОборотОт,
       |    ИсторияОборотовПоКатегориямМагазиновСрезПоследних.НедельныйОборотДо,
       |    ИсторияОборотовПоКатегориямМагазиновСрезПоследних.НижняяПланка
       |ИЗ
       |    РегистрСведений.ИсторияОборотовПоКатегориямМагазинов.СрезПоследних(&Период, КатегорияМагазина = &КатегорияМагазина) КАК ИсторияОборотовПоКатегориямМагазиновСрезПоследних";
   Запрос.УстановитьПараметр("Период",            ТекущаяДата());
   Запрос.УстановитьПараметр("КатегорияМагазина", Элемент.ТекущаяСтрока.Ссылка);
   Рез = Запрос.Выполнить();
   Если Не Рез.Пустой() Тогда
       Выборка = Рез.Выбрать();
       Пока Выборка.Следующий() Цикл
           ОформленияСтрок[й].Ячейки.Период.УстановитьТекст(Выборка.Период);
           //ОформлениеСтроки.Ячейки.Период.Значение            = Выборка.Период;
           //ОформленияСтрок.Ячейки.Период.УстановитьТекст(Выборка.Период);
           ОформленияСтрок[й].Ячейки.НедельныйОборотОт.УстановитьТекст(Выборка.НедельныйОборотОт);
           //ОформлениеСтроки.Ячейки.НедельныйОборотОт.Значение = Выборка.НедельныйОборотОт;
           //ОформленияСтрок.Ячейки.НедельныйОборотОт.УстановитьТекст(Выборка.НедельныйОборотОт);
           ОформленияСтрок[й].Ячейки.НедельныйОборотДо.УстановитьТекст(Выборка.НедельныйОборотДо);
           //ОформлениеСтроки.Ячейки.НедельныйОборотДо.Значение = Выборка.НедельныйОборотДо;
           //ОформленияСтрок.Ячейки.НедельныйОборотДо.УстановитьТекст(Выборка.НедельныйОборотДо);
           ОформленияСтрок[й].Ячейки.НижняяПланка.УстановитьТекст(Выборка.НижняяПланка);
           //ОформлениеСтроки.Ячейки.НижняяПланка.Значение      = Выборка.НижняяПланка;
           //ОформленияСтрок.Ячейки.НижняяПланка.УстановитьТекст(Выборка.НижняяПланка);
           й = й + 1;
       КонецЦикла;
   КонецЕсли;
КонецПроцедуры
18 LivingStar
 
15.04.13
09:15
что там запрос в цикле нужно делать?
19 Cube
 
15.04.13
09:16
(15) "почему нельзя при выводе строки"
Это запрос в цикле, к тому же, отрабатывает платформа его чаще, чем ПриПолученииДанных()
20 Cube
 
15.04.13
09:17
(18) Не надо. Собери данные, сделай один запрос, обработай его результат.
21 LivingStar
 
15.04.13
09:20
(20) что мне передавать в этот параметр   Запрос.УстановитьПараметр("КатегорияМагазина", Элемент.ТекущаяСтрока.Ссылка);

вижу что там всегда одна строка списка
22 Cube
 
15.04.13
09:22
(21) Так ты посмотрел отладчиком, что есть у ОформленияСтрок? Там и данные строк есть вообще-то...
23 LivingStar
 
15.04.13
09:28
Процедура СправочникСписокПриПолученииДанных(Элемент, ОформленияСтрок)
Й = 0;
Для каждого ОформлениеСтроки Из ОформленияСтрок Цикл
   Запрос       = Новый Запрос;
   Запрос.Текст = "
       |ВЫБРАТЬ
       |    ИсторияОборотовПоКатегориямМагазиновСрезПоследних.Период,
       |    ИсторияОборотовПоКатегориямМагазиновСрезПоследних.НедельныйОборотОт,
       |    ИсторияОборотовПоКатегориямМагазиновСрезПоследних.НедельныйОборотДо,
       |    ИсторияОборотовПоКатегориямМагазиновСрезПоследних.НижняяПланка
       |ИЗ
       |    РегистрСведений.ИсторияОборотовПоКатегориямМагазинов.СрезПоследних(&Период, КатегорияМагазина = &КатегорияМагазина) КАК ИсторияОборотовПоКатегориямМагазиновСрезПоследних";
   Запрос.УстановитьПараметр("Период",            ТекущаяДата());
   Запрос.УстановитьПараметр("КатегорияМагазина", ОформлениеСтроки.Данныестроки.Ссылка);
   Рез = Запрос.Выполнить();
   Если Не Рез.Пустой() Тогда
       Выборка = Рез.Выбрать();
       Пока Выборка.Следующий() Цикл
           ОформленияСтрок[й].Ячейки.Период.УстановитьТекст(Выборка.Период);
           ОформленияСтрок[й].Ячейки.НедельныйОборотОт.УстановитьТекст(Выборка.НедельныйОборотОт);
           ОформленияСтрок[й].Ячейки.НедельныйОборотДо.УстановитьТекст(Выборка.НедельныйОборотДо);
           ОформленияСтрок[й].Ячейки.НижняяПланка.УстановитьТекст(Выборка.НижняяПланка);
           й = й + 1;
       КонецЦикла;
   КонецЕсли;
КонецЦикла;
24 LivingStar
 
15.04.13
09:29
(23+) что то сумбурно на вид, но результат выводит
25 cw014
 
15.04.13
09:30
Epic fail, рукалицо
26 Cube
 
15.04.13
09:30
(23) Расстрелять...
27 cw014
 
15.04.13
09:37
Процедура СправочникСписокПриПолученииДанных(Элемент, ОформленияСтрок)
   
   СписокКатегорий = Новый Массив;
   Для каждого ОформлениеСтроки Из ОформленияСтрок Цикл
       СписокКатегорий.Добавить(ОформлениеСтроки.ДанныеСтроки.Ссылка);
   КонецЦикла;

   Запрос       = Новый Запрос;
   Запрос.Текст = "ВЫБРАТЬ
       |    ИсторияОборотовПоКатегориямМагазиновСрезПоследних.Период,
           |    ИсторияОборотовПоКатегориямМагазиновСрезПоследних.НедельныйОборотОт,
           |    ИсторияОборотовПоКатегориямМагазиновСрезПоследних.НедельныйОборотДо,
       |    ИсторияОборотовПоКатегориямМагазиновСрезПоследних.НижняяПланка,
       |    ИсторияОборотовПоКатегориямМагазиновСрезПоследних.КатегорияМагазина
       |ИЗ
       |    РегистрСведений.ИсторияОборотовПоКатегориямМагазинов.СрезПоследних(&Период, КатегорияМагазина В (&КатегорияМагазина)) КАК ИсторияОборотовПоКатегориямМагазиновСрезПоследних";
   Запрос.УстановитьПараметр("Период",            ТекущаяДата());
   Запрос.УстановитьПараметр("КатегорияМагазина", СписокКатегорий);
   Таблицакатегорий = Запрос.Выполнить().Выгрузить();
   Для каждого ОформлениеСтроки Из ОформленияСтрок Цикл
       СтрокаТаблицы = Таблицакатегорий.Найти(ОформлениеСтроки.ДанныеСтроки.Ссылка, "КатегорияМагазина");
       Если СтрокаТаблицы <> Неопределено тогда
           ОформлениеСтроки.Ячейки.Период.УстановитьТекст(Выборка.Период);
           ОформлениеСтроки.Ячейки.НедельныйОборотОт.УстановитьТекст(Выборка.НедельныйОборотОт);
           ОформлениеСтроки.Ячейки.НедельныйОборотДо.УстановитьТекст(Выборка.НедельныйОборотДо);
           ОформлениеСтроки.Ячейки.НижняяПланка.УстановитьТекст(Выборка.НижняяПланка);
       КонецЕсли;
   КонецЦикла;
КонецПроцедуры
28 cw014
 
15.04.13
09:38
С тебя 1000 р
29 cw014
 
15.04.13
09:52
Так нравится как ТС сразу линяет, как решение приходит. Игнорирует все сообщения дальше )))
30 LivingStar
 
15.04.13
09:54
да думаю над таблицей, слышал что не совсем правильно выгружать в таблицу результат запроса
31 cw014
 
15.04.13
10:10
Выгрузка в таблицу тут только для того, что бы не перебирать каждый раз запрос, а вести поиск по таблице
32 Cube
 
15.04.13
10:12
(30) Ну если хочешь кошерно, то вместо

СписокКатегорий = Новый Массив;

делай

СписокКатегорий = Новый ТаблицаЗначений;

из двух колонок: "Порядок" и "Ссылка". Передавай эту таблицу в запрос (через временные таблицы), а уж в запросе отсортируй по полю "Порядок". Тогда порядоку строк в выборке будет таким же, как в ОформленияСтрок и пройти эту выборку можно будет за один проход.
33 cw014
 
15.04.13
10:18
(32) Как вариант, только для ТС это сложно уже
34 cw014
 
15.04.13
10:18
(33) Только в любом случае два цикла будет
35 cw014
 
15.04.13
10:23
Показали рабочий б/м корректный вариант, нет... Теперь сидим, думаем...

(C) Садимся в кресло идей, думаем, думаем, дууумаеееем... (Blue's Clues)
36 cw014
 
15.04.13
10:39
Куку, где моя тыща??? :)))))))
37 cw014
 
15.04.13
11:03
Тишина... :)
38 Cube
 
15.04.13
11:05
(36) Тариф на мисте 300 рублей)
39 cw014
 
15.04.13
11:20
(38) Это еще за предыдущие посты :)))
40 cw014
 
15.04.13
11:27
:))))))))))))0
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.