![]() |
![]() |
![]() |
|
v8: Как перебрать документы в форме списка | ☑ | ||
---|---|---|---|---|
0
vvf
06.10.08
✎
10:59
|
Есть форма списка РеализацияТоваровУслуг. На форме есть колонка с галочками, которые можно произвольно ставить. Необходимо добавить кнопку по очистке этих галочек. Не пойму как
сделать чтобы по кнопке происходил перебор документов, которые сейчас отображаются в форме списка? |
|||
1
ТелепатБот
гуру
06.10.08
✎
10:59
|
||||
2
Альберт_Уфа
06.10.08
✎
11:04
|
(0) может так попробовать:
Для Каждого ТекСтрока из ЭлементыФормы.ТЧ Цикл ТекСтрока.Флаг = Ложь; КонецЦикла; |
|||
3
vvf
06.10.08
✎
13:18
|
Написал
Для Каждого Стр из ЭлементыФормы.Список Цикл Стр.ФлагПечати = Истина; КонецЦикла; Ошибка: Итератор для значения не определен, как быть? |
|||
4
Salvador Limones
06.10.08
✎
13:19
|
(3) Да, всё верно. Это же динамический список.
|
|||
5
globalasax
06.10.08
✎
13:45
|
Попробуй
Для Каждого Стр из ЭлементыФормы.Список.Значение Цикл Стр.ФлагПечати = Истина; КонецЦикла; |
|||
6
MoneG
06.10.08
✎
14:41
|
Ну вы чего?? Нужно не с элементом формы работать, а с элементом, содержащим коллекцию значений! А именно, с соответствующим реквизитом (реквизитом формы):
Для Каждого Стр из Список Цикл Стр.ФлагПечати = Истина; КонецЦикла; |
|||
7
MoneG
06.10.08
✎
14:42
|
поспешил..
Для Каждого Стр из ЭлементыФормы.Список.Значение Цикл Стр.Значение.ФлагПечати = Истина; КонецЦикла; |
|||
8
MoneG
06.10.08
✎
14:44
|
тьфу, блин..
Для Каждого ЭлементСписка Из Список Цикл ЭлементСписка.Значение.ФлагПечати = Истина; КонецЦикла; |
|||
9
vvf
06.10.08
✎
15:13
|
Не работает, в этом случае ругается на синтаксический контроль.
Переменная не определена (Список) Для Каждого ЭлементСписка Из Список Цикл ЭлементСписка.Значение.ФлагПечати = Истина; КонецЦикла; Если пишу ДокументСписок - это название реквизита формы Для Каждого ЭлементСписка Из ДокументСписок Цикл ..... ругается опять - Итератор для значения не определен |
|||
10
MoneG
06.10.08
✎
15:29
|
"Список" - это реквизит формы (или обработки) с типом "СписокЗначений" и он тогда содержит коллекцию. А "ЭлементыФормы.Список" - это всего лишь элемент управления на форме типа "Список".
|
|||
11
Krom
06.10.08
✎
15:33
|
(10), ты хочешь сказать, что ЭлементыФормы.Список не содержит коллекцию значений?
|
|||
12
MoneG
06.10.08
✎
15:40
|
Ну работать нужно не с элементом управления, а со списком значений
|
|||
13
Дуб
06.10.08
✎
15:42
|
(0) Стаж: 4 г. 6 мес.
Чем занимался всю дорогу? |
|||
14
MoneG
06.10.08
✎
15:43
|
создал реквизит формы (обработки), элементу управления "привязал" данные этого реквизита и забыл про элемент управления. Пусть он там себе работает..
|
|||
15
vvf
06.10.08
✎
15:44
|
В отладчике все просмотрел, нет такого элемента с типом "СписокЗначений"
Конфигурация типовая-УТ, журнал РеализацияТоваровУслуг. Как мне перебрать этот список? |
|||
16
Дуб
06.10.08
✎
15:47
|
(15) запросом перебери. Дался тебе этот список..
|
|||
17
MoneG
06.10.08
✎
15:51
|
так и скажи, что это журнал вообще. я понял, что ты свою обработку не можешь сделать.. Запрос тебе в помощь
|
|||
18
fillIn
06.10.08
✎
15:55
|
> перебор документов, которые сейчас отображаются в форме списка
Т.е. только видимые строки? Флаг - это реквизит документа РеализацияТоваровУслуг или колонка табличного поля Список? |
|||
19
vvf
06.10.08
✎
15:58
|
> Флаг - это реквизит документа РеализацияТоваровУслуг или колонка табличного поля Список?
Это колонка табличного поля Список. Смысл в следующем, есть галочки их надо снять по кнопке. |
|||
20
Дуб
06.10.08
✎
16:10
|
(19) ты ещё и читать не умеешь? Запросом делай!
|
|||
21
fillIn
06.10.08
✎
16:18
|
Если это колонка табличного поля, то PgUp, PgDn - готово. Аналогично должно сработать [ЭтаФорма.]Обновить();
Если не убрались, значит Флаг связан с реквизитом документа, значит (16). |
|||
22
fillIn
06.10.08
✎
16:20
|
Для чего Флаг-то предназначен?
|
|||
23
vvf
06.10.08
✎
16:26
|
> Для чего Флаг-то предназначен?
оператор отмечает галочками в журнале те накладные, которые ему нужно распечатать, формируется по типу реестра. нужно сделать, чтобы эти галочки сбрасывались по кнопке. Запросом не знаю как сделать. |
|||
24
fillIn
06.10.08
✎
16:35
|
Обновить() не сработало?
Какие события таб.поля обрабатываются? Глянь в его свойствах. Ради интереса, что написано в свойствах табличного поля Данные и ТипЗначения? |
|||
25
vvf
06.10.08
✎
16:40
|
>Какие события таб.поля обрабатываются?
СписокПриВыводеСтроки СписокПриПолученииДанных СписокПриИзмененииФлажка >что написано в свойствах табличного поля Данные и ТипЗначения? Данные ДокументСписок ТипЗначения ДокументСписок.ЗаказПокупателя >Обновить() не сработало? нет, потом еще нужна будет кнопка и установить все пометки, так что не решает проблему |
|||
26
fillIn
06.10.08
✎
16:43
|
Да, главное. С чем Флаг связан? С какой-то таблицей значений, реквизитом документа или что-то еще?
Это должно быть в свойстве колонки Данные. Если там пусто, значит надо в коде обработки событий смотреть. Доберешься до места, где эти галки хранятся, там уже и разберешься как с ними бороться. |
|||
27
fillIn
06.10.08
✎
16:44
|
СписокПриИзмененииФлажка() в студию
|
|||
28
fillIn
06.10.08
✎
16:44
|
если код не большой, то и остальные тоже
|
|||
29
fillIn
06.10.08
✎
16:46
|
> ТипЗначения ДокументСписок.ЗаказПокупателя
А говорил РеализацияТоваровУслуг... |
|||
30
vvf
06.10.08
✎
16:49
|
> С чем Флаг связан?
ни с чем, просто Элемент управления Флажок. Данные - пусто. Процедура СписокПриИзмененииФлажка(Элемент, Колонка) Если Колонка.Имя = "ФлагПечати" Тогда Зн = ТЗ_ДляПечати.Найти(ЭтаФорма.ЭлементыФормы.Список.ТекущаяСтрока, "Документ"); Если Зн <> Неопределено Тогда ТЗ_ДляПечати.Удалить(Зн); Иначе НовСтрока = ТЗ_ДляПечати.Добавить(); НовСтрока.Документ = ЭтаФорма.ЭлементыФормы.Список.ТекущаяСтрока; НовСтрока.Дата = ЭтаФорма.ЭлементыФормы.Список.ТекущаяСтрока.Дата; КонецЕсли; КонецЕсли; КонецПроцедуры Процедура СписокПриПолученииДанных(Элемент, ОформленияСтрок) Для Каждого Стр Из ОформленияСтрок Цикл ЯчИзм = Стр.Ячейки.ФлагПечати; ЯчИзм.ОтображатьФлажок = Истина; КонецЦикла; КонецПроцедуры |
|||
31
vvf
06.10.08
✎
16:50
|
ТипЗначения ДокументСписок.ЗаказПокупателя
А говорил РеализацияТоваровУслуг... там тоже он сделан, разницы нет никакой |
|||
32
fillIn
06.10.08
✎
16:59
|
Что такое ТЗ_ДляПечати?
В начале модуля есть строка Перем ТЗ_ДляПечати; ? Или это реквизит формы? Какой тип? Попробуй: ТЗ_ДляПечати.Очистить(); Обновить(); // эта строка может нужна, а может и нет |
|||
33
vvf
06.10.08
✎
17:07
|
Что такое ТЗ_ДляПечати?
ТЗ_ДляПечати - ТаблицаЗначений - реквизит на форме списка, куда записываются те документы, которые помечаются галочками, чтобы вывести в реестр ТЗ_ДляПечати.Очистить(); мы очистим список, но не удалим галочки с формы Попробуй: ТЗ_ДляПечати.Очистить(); Обновить(); не помогло |
|||
34
fillIn
06.10.08
✎
17:17
|
По идее после очистки ТЗ_ДляПечати галочки с формы должны убраться сами при отработке СписокПриВыводеСтроки()
Кстати, что там? |
|||
35
Maloc
06.10.08
✎
17:20
|
Хороший и до конца неразрешенный вопрос.
Пока что придумано только запросом перебирать, но это очень неудобно и подчас медленно. Никаких идей больше не появлялось? > СписокПриВыводеСтроки() > Кстати, что там? это всё ерунда, отрабатывается только видимая часть списка. |
|||
36
fillIn
06.10.08
✎
17:23
|
(35) Сколько постов и насколько внимательно Вы прочли?
Галки хранятся в реквизите формы типа ТаблицаЗначений. Что Вы собираетесь выбирать запросом? |
|||
37
Maloc
06.10.08
✎
17:29
|
Если б это была таблица значений, тогда бы никаких проблем не было, вам не кажется?
|
|||
38
vvf
06.10.08
✎
17:29
|
>СписокПриВыводеСтроки()
>Кстати, что там? К галочкам там нет ничего, только раскраска строк. >Галки хранятся в реквизите формы типа ТаблицаЗначений нет их там, это лишь поле на форме флажок |
|||
39
MoneG
06.10.08
✎
17:31
|
Давайте, начнем сначала.. Если ТаблицаЗначений хранит галки, то как эти данные привязаны к элементу управления Список? Если же привязаны, то нужно
Процедура ОбработатьКолонкуФлага(Флаг) Для Каждого Строка Из ТаблицаЗначений Цикл Строка.Флаг = Флаг; КонецЦикла; КонецПроцедуры Если данные связаны, ничего обновлять не нужно. Элемент управления сам все сделает. А если не связаны.. пожалуй, стоит связать |
|||
40
Maloc
06.10.08
✎
17:32
|
Уточню у автора - таки речь о стандартном списке документов? Т.е. о динамическом списке?
> К галочкам там нет ничего, только раскраска строк. обращаться к содержимому списка можно, но опять же, только к видимой части объектов списка. |
|||
41
fillIn
06.10.08
✎
17:38
|
(38) Что и ТЗ_ДляПечати никак не анализируется?
|
|||
42
vvf
06.10.08
✎
17:40
|
Уточню у автора - таки речь о стандартном списке документов? Т.е. о динамическом списке?
Да, именно такой. |
|||
43
fillIn
06.10.08
✎
17:42
|
(38) Там должно быть что-то вроде
Зн = ТЗ_ДляПечати.Найти(ЭтаФорма.ЭлементыФормы.Список.ТекущаяСтрока, "Документ"); Если Зн <> Неопределено Тогда Стр.Ячейки.ФлагПечати = Истина; Иначе Стр.Ячейки.ФлагПечати = Ложь; КонецЕсли; (Грубо приближенно) |
|||
44
ptiz
06.10.08
✎
17:43
|
(42) Колись, какой строкой кода галочку рисуешь.
|
|||
45
vvf
06.10.08
✎
17:45
|
Что и ТЗ_ДляПечати никак не анализируется?
нет, в нее данные помещаются по галочке, чтобы напечатать реестр документов. |
|||
46
fillIn
06.10.08
✎
17:45
|
Колись, не жалей. Дай код СписокПриВыводеСтроки().
|
|||
47
vvf
06.10.08
✎
17:46
|
>Там должно быть что-то вроде
Процедура СписокПриИзмененииФлажка(Элемент, Колонка) Если Колонка.Имя = "ФлагПечати" Тогда Зн = ТЗ_ДляПечати.Найти(ЭтаФорма.ЭлементыФормы.Список.ТекущаяСтрока, "Документ"); Если Зн <> Неопределено Тогда ТЗ_ДляПечати.Удалить(Зн); Иначе НовСтрока = ТЗ_ДляПечати.Добавить(); НовСтрока.Документ = ЭтаФорма.ЭлементыФормы.Список.ТекущаяСтрока; НовСтрока.Дата = ЭтаФорма.ЭлементыФормы.Список.ТекущаяСтрока.Дата; КонецЕсли; КонецЕсли; КонецПроцедуры все верно |
|||
48
fillIn
06.10.08
✎
17:48
|
ПриИзмененииФлажка я вижу
Я не вижу как его значение в таб. поле отображается. Дай, говорю, СписокПриВыводеСтроки() в студию |
|||
49
vvf
06.10.08
✎
17:49
|
Процедура СписокПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
Если ЗначениеЗаполнено(ДанныеСтроки.Ссылка.ДатаОтгрузки) Тогда ОформлениеСтроки.ЦветФона = WebЦвета.БледноЗолотистый; КонецЕсли; Если ДанныеСтроки.Ссылка.ПометкаУдаления Тогда //не помечаем никак ИначеЕсли ДанныеСтроки.Ссылка.ЗаказВыполнен Тогда ОформлениеСтроки.ЦветФона = WebЦвета.НейтральноЗеленый; ИначеЕсли ДанныеСтроки.Ссылка.ЗаказВыполненЧастично Тогда ОформлениеСтроки.ЦветФона = WebЦвета.БледноБирюзовый; КонецЕсли; КонецПроцедуры как и говорил никаких галок тут нет |
|||
50
MoneG
06.10.08
✎
17:49
|
Речь идет о ЖурналеДокументов или о самодельной форме со списком документов и колонкой галочек?
|
|||
51
ptiz
06.10.08
✎
17:50
|
(47) А ответ на (0) простой: ТЗ_ДляПечати.Очистить()
|
|||
52
vvf
06.10.08
✎
17:50
|
Я не вижу как его значение в таб. поле отображается
вот здесь Процедура СписокПриПолученииДанных(Элемент, ОформленияСтрок) Для Каждого Стр Из ОформленияСтрок Цикл ЯчИзм = Стр.Ячейки.ФлагПечати; ЯчИзм.ОтображатьФлажок = Истина; КонецЦикла; КонецПроцедуры |
|||
53
vvf
06.10.08
✎
17:51
|
>Речь идет о ЖурналеДокументов или о самодельной форме со списком документов и >колонкой галочек?
самодельная форма со списком галочек >(47) А ответ на (0) простой: ТЗ_ДляПечати.Очистить() не верно |
|||
54
fillIn
06.10.08
✎
18:02
|
(49) Шайтан!
(52) Здесь только говорится "Отобрази флажок в этом поле" (ЯчИзм.ОтображатьФлажок = Истина;), но не говорится какого значения |
|||
55
fillIn
06.10.08
✎
18:10
|
Весь код модуля большой? Сколько строк?
У тебя код "ТЗ_ДляПечати.Очистить()" отрабатывает? Проверь в отладчике. Нажми PgUp, PgDn, Сверни, разверни окно. Галки остались? Если остались, значит он их как-то читает из ТЗ_ДляПечати. |
|||
56
MoneG
06.10.08
✎
18:12
|
Определимся сразу - Список - реквизит Вашей формы (он по умолчанию создается при добавлении элемента управления).
Тогда: //Поиск документов на печать: ... СтруктураПоиска = Новый Структура; СтруктураПоиска.Вставить("НаПечать",Истина); //СтруктураПоиска.Вставить("ЕщеКакиеТоПоля",_Значение_); СтрокиНаПечать = Список.НайтиСтроки(СтруктураПоиска); ... //Сброс/установка флага: ... ЗначениеФлага = Истина; // (Ложь) Для Каждого Строка Из Список Цикл Строка.Флаг = ЗначениеФлага; КонецЦикла; //--------------- //Обработка флажка: Процедура СписокПриИзмененииФлажка(Элемент, Колонка) //Работа со списком как с элементом управления ВыделенныеСтроки = ЭлементыФормы.Список.ВыделенныеСтроки; Для Каждого ВыделеннаяСтрока Из ВыделенныеСтроки Цикл Если ВыделеннаяСтрока = ЭлементыФормы.Список.ТекущаяСтрока Тогда Продолжить; КонецЕсли; ВыделеннаяСтрока.Флаг = Не ВыделеннаяСтрока.Флаг; КонецЦикла; КонецПроцедуры |
|||
57
fillIn
06.10.08
✎
18:14
|
(56) Список - ОСНОВНОЙ реквизит формы, но значение нашего Флага берется не из него, а из неосновного (он там не жирный) реквизита ТЗ_ДляПечати.
|
|||
58
fillIn
06.10.08
✎
18:16
|
Задача: по кнопке вроде "Выкл. все" выключить все флаги.
|
|||
59
fillIn
06.10.08
✎
18:17
|
Листинги всех приведенных событий работают нормально. Проблема не в них
|
|||
60
vvf
06.10.08
✎
18:18
|
265 строк всего там. могу в почту выслать или аськи давайте
|
|||
61
fillIn
06.10.08
✎
18:22
|
Давай в аську : Двести шестьдесят пять 228 777
(Это я так от спам-ботов шифруюсь) :) |
|||
62
Стрелок
06.10.08
✎
18:34
|
или я чего то не понимаю... или такая простая задача так сложно реализовывается?
вообще я смотрю что то что в 7.7. было сложно в 8 сделано легко. и наоборот |
|||
63
ptiz
06.10.08
✎
18:36
|
(62) Автор на славу постарался: это надо суметь так всех запутать в таком вопросе.
|
|||
64
vvf
06.10.08
✎
18:38
|
это простая задача, так сложно реализуется
|
|||
65
ptiz
06.10.08
✎
18:59
|
(64) Если это динамический список, то галки должны либо храниться в самом документе, тогда колонка связана с реквизитом документа, либо рисоваться в процедурах ПриВыводеСтроки() или ПриПолученииДанных(). Пока непонятно, рисуются ли они у тебя вообще.
|
|||
66
MoneG
06.10.08
✎
19:01
|
(63) Действительно, перечитайте исходный вопрос и поймите, о чем сейчас речь...
|
|||
67
fillIn
06.10.08
✎
19:19
|
Гы!
Подвело незнание матчасти (моё незнание)... Я-то думал, что колонки таб.поля, не связанные с данными, при каждом ПриПолученииДанных() заполняются значением по умолчанию (если их не заполнить в это событии), а они оказывается живут своей жизнью. Значит 1. Таки очищаем ТЗ Процедура ПометитьСписок(Кнопка) ТЗ_ДляПечати.Очистить(); Обновить(); КонецПроцедуры 2. Процедура СписокПриПолученииДанных(Элемент, ОформленияСтрок) Для Каждого Стр Из ОформленияСтрок Цикл ЯчИзм = Стр.Ячейки.ФлагПечати; ЯчИзм.ОтображатьФлажок = Истина; // Освежим данные флажка, чтобы он не отрывался от реальности Зн = ТЗ_ДляПечати.Найти(Стр.ДанныеСтроки.Ссылка, "Документ"); ЯчИзм.Флажок = (Зн <> Неопределено); КонецЦикла; КонецПроцедуры |
|||
68
fillIn
06.10.08
✎
19:25
|
С включением всех флажков будет посложнее, но думаю сам справишься.
Надо просто заполнить ТЗ_ДляПечати документами из ОформленияСтрок или в соответствии с отбром списка. |
|||
69
MoneG
06.10.08
✎
19:28
|
(67) поясните, как поможет ПометитьСписок(Кнопка), если Список и ТЗ_ДляПечати никак не связаны?
|
|||
70
vvf
06.10.08
✎
19:28
|
Спасибо! Заработало!
|
|||
71
fillIn
06.10.08
✎
19:33
|
(69) Вот в том-то и штука. На первый взгляд как будто и не связаны...
:-) |
|||
72
MoneG
06.10.08
✎
19:35
|
так как связь-то "получается" ?
|
|||
73
fillIn
06.10.08
✎
19:38
|
см. СписокПриИзмененииФлажка
|
|||
74
MoneG
06.10.08
✎
19:42
|
СписокПриИзмененииФлажка - согласен. Все равно руками тереть как таблицу, так и галки. Зачем Обновить() ?
|
|||
75
fillIn
06.10.08
✎
19:48
|
(74) Чтобы СписокПриПолученииДанных сработала
|
|||
76
Михаил Козлов
06.10.08
✎
20:26
|
(0) Тема (как перебрать документы в списке) обсуждалась раз ...дцать.
Например, так: пост = Новый ПостроительОтчета; пост.ИсточникДанных = Новый ОписаниеИсточникаДанных(ДокументСписок); Выборка = пост.Результат.Выбрать(); Пока Выборка.Следующий() Цикл ... КонецЦикла; ДокументСписок - реквизит формы типа ДокументСписок. |
|||
77
fillIn
06.10.08
✎
20:36
|
(76) Ну да... Конечно...
на 75 постов народ мается простым перебором документов в списке |
|||
78
Immortal
06.10.08
✎
20:40
|
"Кто ж его посадит, он же памятник"(С)
з.ы. автору читать ЖКК до просветления. |
|||
79
vvf
07.10.08
✎
08:33
|
А теперь предстоит обратная задача, нужно пометить галочками даный список. Какие идеи?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |