![]() |
![]() |
![]() |
|
Заполнение табличного поля | ☑ | ||
---|---|---|---|---|
0
Joshim
03.10.11
✎
15:43
|
Табличное поле выводит данные табличной части документа. На поле есть колонка, которой нет в табличной части документа. Как в эту колонку можно вывести данные?
|
|||
1
Шапокляк
03.10.11
✎
15:47
|
ПриВыводеСтроки(), ПриПолученииДанных()
|
|||
2
shuhard
03.10.11
✎
15:47
|
(0) в 8.2 или 8.1 ?
|
|||
3
Joshim
03.10.11
✎
15:48
|
(2) в 8.2
|
|||
4
shuhard
03.10.11
✎
15:49
|
(3) заполняй при создании на сервере и в событиях изменения/добавления строк ТЧ
|
|||
5
Joshim
03.10.11
✎
16:00
|
(4)
я и спрашиваю как заполнить ее? например: ЭлементыФормы.Товары.Колонки.Добавить("Колонка1"); НовСтр = Товары.Добавить(); НовСтр.Номенклатура = Номенкл; ... //Вывод значения в "Колонка1" //как вывести значение в "Колонка1" ? |
|||
6
Шапокляк
03.10.11
✎
16:17
|
У табличного поля в свойствах есть обработчик. Объясню на примере
ПроцедураПриВыводеСтроки() ОформлениеСтроки.Ячейки.Колонка1.УстановитьТекст(ДанныеСтрок.Номенклатура.Артикул); КонецПроцедуры |
|||
7
Шапокляк
03.10.11
✎
16:22
|
||||
8
shuhard
03.10.11
✎
16:24
|
(5)ЭлементыФормы - это ж не управляемая форма,
кури (1) |
|||
9
Joshim
03.10.11
✎
16:35
|
(6)(7)(8) у меня нет доступа к этим процедурам! Документ заполняется из модуля внешней обработки, которая создает и заполняет документ, затем открывает форму и добавляет колонку, затем в эту колонку необходимо вывести данные пользователю.
|
|||
10
shuhard
03.10.11
✎
16:36
|
(9) будь проще,
сделай ТЧ в обработке и кнопку "Перенести в документ" |
|||
11
Шапокляк
03.10.11
✎
16:40
|
(9) Да пофиг откуда документ заполняется. У документа есть форма, в которой размещено табличное поле - или форма как-то динамически строится и элементы на него программно добавляются?
|
|||
12
Mort
03.10.11
✎
16:41
|
(9) Без подпиливания формы никак.
|
|||
13
Joshim
03.10.11
✎
16:43
|
(10)(11)(12) а если перед заполнением формы назначить в модуле обработки обработчик события формы ПриВыводеСтроки() и затем заполнить форму? как думаете прокатит?
|
|||
14
Joshim
03.10.11
✎
16:44
|
(10) как вариант, если более быстрого решения не найдется
|
|||
15
shuhard
03.10.11
✎
16:48
|
(14) это идеологически верно,
зачем пользователю в документе данные, которые не хранятся в системе и не влияют на проведение и которые он ни когда потом не увидит ? есть понятие подбор, помощник планирования, управление запасами всё это обработки и результат их работы переносится в ТЧ документа |
|||
16
Joshim
03.10.11
✎
17:32
|
Процедура ПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
Элемент.ТекущиеДанные.Номенклатура Элемент.ТекущаяСтрока.Номенклатура в чем разница или что лучше использовать для доступа к данным? |
|||
17
Шапокляк
03.10.11
✎
17:35
|
ДанныеСтроки?
|
|||
18
Joshim
03.10.11
✎
17:43
|
(6) Колонку добавил, но в ОформлениеСтроки.Ячейки ее нет! Как по другому вывести в колонку значение?
|
|||
19
Шапокляк
03.10.11
✎
17:45
|
(18) На вопрос в (11) как ответите?
|
|||
20
Joshim
03.10.11
✎
17:49
|
У документа есть форма, в которой размещено табличное поле. А колонка программно добавляется (нет на форме), в нее затем выводятся данные
|
|||
21
Шапокляк
03.10.11
✎
18:03
|
Ну так что мешает проверить наличие колонке в этом обработчике? Если ТабличноеПоле.Колонки.Найти("Колонка1") <> Неопределено Тогда
ОформлениеСтроки.Ячейки.Колонка1.УстановитьТекст(ДанныеСтрок.Номенклатура.Артикул); Конецесли; |
|||
22
Joshim
03.10.11
✎
18:09
|
(21)
ТекКолонка = ЭлементыФормы.Товары.Колонки.Найти(ИмяКолонки); Если ТекКолонка = Неопределено Тогда ТекКолонка = ЭлементыФормы.Товары.Колонки.Добавить(ИмяКолонки)); КонецЕсли; А как теперь заполнить значение в колонке?? В ОформлениеСтроки.Ячейки этой колонки нет!!!!! |
|||
23
Шапокляк
03.10.11
✎
18:16
|
(22) Дык ведь добавил же ты ее в (22)! Почему ее нету? Почему в обработчике ПриВыводеСтроки не написать как в (21)? Вот на клавиатуре набираем "ОформлениеСтроки.Ячейки." и не ждем, что нам программа предложит, а продолжаем: "Колонка1.УстановитьТекст(ДанныеСтроки.Номенклатура.Артикул)" или как там колонка называется и что там надо вывести.
|
|||
24
shuhard
03.10.11
✎
18:20
|
(22) ты отладчиком конечно смотрел ?
|
|||
25
Joshim
03.10.11
✎
18:20
|
(24) Форма.ПодготовкаТаблицПоступленияТоваровУслуг.Форма(464)}: Поле объекта не обнаружено (Колонка1)
ОформлениеСтроки.Ячейки.Колонка1.УстановитьТекст(ЗначениеПараметра); |
|||
26
Joshim
03.10.11
✎
18:21
|
(24) да
|
|||
27
Шапокляк
03.10.11
✎
18:27
|
(25) Как колонку назвал? В какой обработчик добавил строку? Весь текст Обработчика ПривыводеСтроки дай.
|
|||
28
Joshim
03.10.11
✎
18:30
|
Процедура ТоварыПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
Если Не ВыводитьСвойстваПриходныхОрдеров Тогда Возврат; КонецЕсли; СсылкаНаДокумент = Элемент.ТекущиеДанные.ПриходныйОрдер.Ссылка; Если Не ЗначениеЗаполнено(СсылкаНаДокумент) Тогда Возврат; КонецЕсли; ОбрЗначенияСвойствОбъекта = Обработки.ЗначенияСвойствОбъекта.Создать(); ОбрЗначенияСвойствОбъекта.НазначениеСвойств = ОбщегоНазначения.ПолучитьСписокНазначенийСвойствКатегорийОбъектовПоСсылке(СсылкаНаДокумент); ОбрЗначенияСвойствОбъекта.ОбъектОтбораЗначений = СсылкаНаДокумент; ОбрЗначенияСвойствОбъекта.ОбъектОтбораНазначений = СсылкаНаДокумент; ОбрЗначенияСвойствОбъекта.ПрочитатьЗаполнитьСвойстваИЗначения(); Для Каждого ТекСтрока Из ОбрЗначенияСвойствОбъекта.СвойстваИЗначения Цикл Если (Не ТекСтрока.ПометкаУдаления) И ЗначениеЗаполнено(ТекСтрока.Значение) Тогда Свойство = ТекСтрока.Свойство; КолонкаСвойства = ЭлементыФормы.Товары.Колонки.Найти(Свойство.Код); Если КолонкаСвойства = Неопределено Тогда КолонкаСвойства = ЭлементыФормы.Товары.Колонки.Добавить(СокрЛП(Свойство.Код), СокрЛП(Свойство.Наименование)); КонецЕсли; Если ТипЗнч(ТекСтрока.Значение) = Тип("Дата") Тогда Если НачалоДня(ТекСтрока.Значение) = ТекСтрока.Значение Тогда ЗначениеПараметра = Формат(ТекСтрока.Значение, "ДФ=dd.MM.yyyy; ЧЧ=''"); Иначе ЗначениеПараметра = ТекСтрока.Значение; КонецЕсли; Иначе ЗначениеПараметра = СокрЛП(ТекСтрока.Значение); КонецЕсли; //ОформлениеСтроки.Ячейки[КолонкаСвойства].УстановитьТекст(ЗначениеПараметра); ОформлениеСтроки.Ячейки.ВН.УстановитьТекст(ЗначениеПараметра); КонецЕсли; КонецЦикла; КонецПроцедуры |
|||
29
Шапокляк
03.10.11
✎
18:38
|
Если ЭлементыФормы.Товары.Колонки.Найти("ВН") <> Неопределено Тогда
Для Каждого ТекСтрока Из ОбрЗначенияСвойствОбъекта.СвойстваИЗначения Цикл Если (Не ТекСтрока.ПометкаУдаления) И ЗначениеЗаполнено(ТекСтрока.Значение) Тогда Свойство = ТекСтрока.Свойство; КолонкаСвойства = ЭлементыФормы.Товары.Колонки.Найти(Свойство.Код); Если КолонкаСвойства = Неопределено Тогда КолонкаСвойства = ЭлементыФормы.Товары.Колонки.Добавить(СокрЛП(Свойство.Код), СокрЛП(Свойство.Наименование)); КонецЕсли; Если ТипЗнч(ТекСтрока.Значение) = Тип("Дата") Тогда Если НачалоДня(ТекСтрока.Значение) = ТекСтрока.Значение Тогда ЗначениеПараметра = Формат(ТекСтрока.Значение, "ДФ=dd.MM.yyyy; ЧЧ=''"); Иначе ЗначениеПараметра = ТекСтрока.Значение; КонецЕсли; Иначе ЗначениеПараметра = СокрЛП(ТекСтрока.Значение); КонецЕсли; //ОформлениеСтроки.Ячейки[КолонкаСвойства].УстановитьТекст(ЗначениеПараметра); ОформлениеСтроки.Ячейки.ВН.УстановитьТекст(ЗначениеПараметра); КонецЕсли; КонецЦикла; КонецЕсли; P.S. То, что в цикле делаешь...страшно это, все тормозить будет ппц |
|||
30
shuhard
03.10.11
✎
18:39
|
(26) странно
не поленился залезть в древний 8.1 вот так работает Процедура ПриОткрытии() ЭлементыФормы.Товары.Колонки.Добавить("Инна"); СтрокаТЧ=Товары.Добавить(); СтрокаТЧ.Цена=100; КонецПроцедуры Процедура ТоварыПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки) ОформлениеСтроки.Ячейки.Инна.ОтображатьТекст=Истина; ОформлениеСтроки.Ячейки.Инна.Текст="Пипец"; КонецПроцедуры |
|||
31
Шапокляк
03.10.11
✎
18:44
|
+(29) Да...все-таки поглядела на цикл, не удержалась. ПриВыводеСтроки - не то место, где колонки в табличное поле добавляют. Судя по всему, задача стоит вывести все свойства всех имеющихся товаров в ТЧ. К процедуре формирования табличной части лучше заблаговременно прикрутить вычисление состава всех этих свойств и присобачить соответствующие колонки, а уж в ПриВыводеСтроки организовать их заполнение. Да и в твоей проыцедуре колонки добавляешь, но не факт, что они все ВН называются :)
|
|||
32
Joshim
03.10.11
✎
19:22
|
(30) да так работает, только если колонки создавать не в ТоварыПриВыводеСтроки()
спасибо |
|||
33
Joshim
03.10.11
✎
19:23
|
(31) а от Вас реальной помощи 0
|
|||
34
Шапокляк
03.10.11
✎
19:29
|
(33) Молодец, парень далеко пойдешь. Сказать гадость человеку, который потратил свое время, чтоб тебе помочь - это так круто!
|
|||
35
shuhard
03.10.11
✎
20:26
|
(34) кто людям помогает, тот тратит время зря ...
ты чё мать, собственную песню забыла ? |
|||
36
Joshim
03.10.11
✎
21:54
|
(34) помочь это когда помощь пользу приносит. Сам бы я точно не разобрался. Спасибо!
(35) думаю этот форум исключение, тут все друг другу помогают ) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |