Имя: Пароль:
1C
1С v8
Обойти Таблицу Элемента Формы
, ,
0 55reg
 
22.11.19
12:00
Итак Есть Таблица документа с реквизитами, Есть форма документа - на ней Таблица с типом "Таблица документа с реквизитами". Эту таблицу легко и просто обойти и что то то там поменять...
Мне нужно добавить в ЭлементФормы."Таблица документа с реквизитами" - свою колонку (без проблем и добавил на форме свою колонку) с какими то значениями которые будут рассчитываться "на лету" - теперь встал вопрос как обойти ЭлементФормы."Таблица документа с реквизитами" для изменения моей доп колонки которую я добавил на форме.

Я не хочу хранить в реквизитах Таблицы документа это доп значение, но мне нужно его дополнительно вывести в колонку таблицы на форме. Как это сделать ?
1 acht
 
22.11.19
12:04
ОФ, УФ?
2 Nikifforoff96
 
22.11.19
12:35
Ты не можешь хранить значение в элементе. Добавляй реквизит формы в табличную часть документа (не в сам документ, а на форме) и в него пиши значение
3 Nikifforoff96
 
22.11.19
12:38
4 acht
 
22.11.19
12:39
(2) Он может желать просто отображать значение, которое вычисляется по другим, хранящимся значениям.
Вот только сказать про это не может.
5 1С Ассенизатор ПРОФ
 
22.11.19
12:54
ПриВыводеСтроки событие
6 55reg
 
22.11.19
13:10
(4) А я как сказал ?

НЕ хочу хранить в реквизитах Таблицы документа это доп значение, но мне нужно его дополнительно ВЫВЕСТИ в колонку таблицы на форме. Как это сделать ?
7 55reg
 
22.11.19
13:13
(5) Спасибо! Не сообразил в таком ключе посмотреть...
8 acht
 
22.11.19
13:19
(7) Только ПриПолученииДанных все-таки лучше.
9 55reg
 
22.11.19
13:41
(8) что то через ПриПолученииДанных - толком ни к чему не обратиться, а при ПриВыводеСтроки - сама срока в форме не изменяется хотя в обработчике все высчитывается и присваивается... Через отладчик это видно
10 55reg
 
22.11.19
13:46
(8) А чем это лучше ?
11 acht
 
22.11.19
13:49
(9) > толком ни к чему не обратиться
Неверно. У тебя там есть коллекция точно таких же отображений, как в ПриВыводеСтроки

Ну и не присваивать надо, а уставливать текст/картинку и т. п. Ты же сам не хочешь нигде хранить, а от платформы почему-то этого требуешь.
12 55reg
 
22.11.19
13:55
.УстановитьТекст(Выборка.Количество); да к чему же это присобачить ! )))


Процедура ТоварыПриПолученииДанных(Элемент, ОформленияСтрок)
13 55reg
 
22.11.19
14:11
(8) Увы в обработчике ТоварыПриПолученииДанных не удалось присвоить значение (установить текст) нужной ячейке...

В обработчике ТоварыПриВыводеСтроки все получилось...

Так и не понял в чем разница и почему лучше ТоварыПриПолученииДанных вариант?
И к чему там обратиться для установки значения ???
14 55reg
 
22.11.19
14:14
Эти обработчики отличаются
Процедура ТоварыПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
Процедура ТоварыПриПолученииДанных(Элемент, ОформленияСтрок)

В первом через ОформлениеСтроки присваивается значение Ячейки во втором ОформленияСтрок - это малость не то
15 D_E_S_131
 
22.11.19
15:12
"Так и не понял в чем разница и почему лучше..." - если для вывода значения в доп.колонку достаточно данных в строке, то можно это делать ПриВыводеСтроки. Если же требуется получить из базы какие-то данные, то лучше это делать ПриПолученииДанных, т.к. тут есть возможность обратиться ко всей коллекции ОформленияСтрок и получить данные для всех строк за один запрос.
16 acht
 
22.11.19
15:14
(14) Обратись, пожалуйста к ДенисЧ, он продаст тебе синтакс помощник, в котором описаны как обработчики, так и типы их аргументов.
17 D_E_S_131
 
22.11.19
15:24
(14) А там так

МассивТоваров = Новый Массив;

СоответствиеТоваровСтрокам = Новый Соответствие;

Для Каждого ОформлениеСтроки Из ОформленияСтрок Цикл
   ТекДанные = ОформлениеСтроки.ТекущиеДанные;
   МассивТоваров.Добавить(ТекДанные.Номенклатура);
   СоответствиеТоваровСтрокам.Вставить(ТекДанные.Номенклатура, ОформлениеСтроки);
КонецЦикла;

Запрос = Новый Запрос;
Запрос.Текст = <Текст запроса на получение остатков по номенклатуре из &ВыбТовары>;
Запрос.УстановитьПараметр("ВыбТовары", МассивТоваров);
Результат = Запрос.Выполнить();

Если Результат.Пустой() Тогда
   Возврат;
КонецЕсли;

Выборка = Результат.Выбрать();

Пока Выборка.Следующий() Цикл
   ОформлениеСтроки = СоответствиеТоваровСтрокам[Выборка.Номенклатура];
   ОформлениеСтроки["ОстатокПоТовару"].УстановитьТекст(Выборка.КоличествоОстаток);
КонецЦикла;
18 D_E_S_131
 
22.11.19
15:28
(17) "ТекущиеДанные" скорее всего надо заменить на "ДанныеСтроки". "Возьму в дар СП по ОФ" :)
19 55reg
 
22.11.19
17:04
(17) Проверю, разберу спасибо

(18)  "Возьму в дар СП по ОФ" :) - что это значит  ))
20 D_E_S_131
 
22.11.19
17:23
(19) Это то, что в (16) предлагалось, но только по Обычным формам (если у конфигурации основной режим запуска "Управляемое приложение" и совместимость интерфейса "Такси", то в справке нет материалов по обычному интерфейсу). :)
Основная теорема систематики: Новые системы плодят новые проблемы.