Как программно присвоить строковое значение в ячейку табличной части

1. lordpox 03.12.18 18:25 Сейчас в теме
Всем доброго вечера !
1С УПП 8.3, формы обычные. Есть документ "Отчет производства за смену" , в нем на форме добавлена колонка "Признак", необходимо заполнять эту колонку только при открытии документа, либо при создании, то есть только визуальная информация во время работы с документом, хранить эту информацию в базе не надо. Если с хранением, то решение сделал, но хочется все-таки чтобы в базе это не хранилось.

Сразу оговорюсь, в синтаксисе пока плаваю и частенько путаю к чему я обращаюсь, буквально просмотрел 2 начальных курса. Днем есть на работе наставник, который подсказывает, но самостоятельно экспериментирую обычно вечером, поэтому спросить не у кого, решил зарегистрироваться, так как частенько находил ответы на свои вопросы именно здесь.

Продукция - это табличная часть

СтрокаТабличнойЧасти = ЭлементыФормы.Продукция.ТекущиеДанные;

Если СтрокаТабличнойЧасти.Номенклатура.СправочнаяНоменклатура Тогда
// ЭлементыФормы.Продукция.ТекущиеДанные.Признак="С"; - так работает через реквизит табличной части, пробую исправить строку с признаком "П"
КонецЕсли;

Если СтрокаТабличнойЧасти.Номенклатура.ВестиУчетПоСериям Тогда
ЭлементыФормы.Продукция.Колонки.Признак.Данные="П";
КонецЕсли;


В отладчике если вычислить выражение ЭлементыФормы.Продукция.Колонки.Признак.Данные - значение ""
Но если рассчитать ЭлементыФормы.Продукция.Колонки.Признак - то все нормально мы попадем в эту колонку, но как присвоить ей значение в текущей строке ?
По теме из базы знаний
Найденные решения
12. independ 1520 04.12.18 10:04 Сейчас в теме
(9) Вот так правильно, цикл не нужен
Процедура ПродукцияПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)

            Если ДанныеСтроки.Номенклатура.СправочнаяНоменклатура Тогда
                ОформлениеСтроки.Ячейки.Признак.ОтображатьТекст=Истина;
                ОформлениеСтроки.Ячейки.Признак.УстановитьТекст("С");
                //ОформлениеСтроки.Ячейки.Признак.ЦветФона=WebЦвета.СветлоРозовый;
            КонецЕсли;
            Если ДанныеСтроки.Номенклатура.ВестиУчетПоСериям Тогда
                ОформлениеСтроки.Ячейки.Признак.ОтображатьТекст=Истина;
                ОформлениеСтроки.Ячейки.Признак.УстановитьТекст("П");
                //ОформлениеСтроки.Ячейки.Признак.ЦветФона=WebЦвета.СветлоНебесноГолубой;
            КонецЕсли;
            
    КонецПроцедуры
Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. independ 1520 03.12.18 20:43 Сейчас в теме
(1) Можно использовать Событие ПриВыводеСтроки, пример
Процедура ВесыПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
	ТипВесов="";
	Если ДанныеСтроки.Тип=0 Тогда 
		ТипВесов="CAS-LP 1.5";
	ИначеЕсли ДанныеСтроки.Тип=1 Тогда 
		ТипВесов="CAS-LP 1.6";
	Иначе
		ТипВесов="Неверный тип весов";
	КонецЕсли;
	ОформлениеСтроки.Ячейки.Тип.УстановитьТекст(ТипВесов);
КонецПроцедуры
Показать
4. lordpox 04.12.18 09:11 Сейчас в теме
Да, пытаюсь делать именно процедуре ПродукцияПриВыводеСтроки

Кстати, подскажите как вставлять блок текста с цветовой гаммой как в 1С =) ?
5. independ 1520 04.12.18 09:17 Сейчас в теме
(4)
ОформлениеСтроки.Ячейки.ИмяТвоейЯчейки.ЦветФона=WebЦвета.Красный;

а вопрос был о другом :)
6. tvm 04.12.18 09:22 Сейчас в теме
(4) при написании сообщения есть панелька. на ней надо нажать кнопку "</>".
8. lordpox 04.12.18 09:42 Сейчас в теме
3. dandykry 9 04.12.18 07:18 Сейчас в теме
(1) "Колонки" лишнее. Это описание колонок самой таблицы. Буквально Таблица1 состоит из колонок Колонка1 - тип Строка, Колонка2 - тип Число и т д.
Менять нужно в строке таблицы.


СтрокаТабличнойЧасти = ЭлементыФормы.Продукция.ТекущиеДанные;  //Это сама строка. Можно получить ее данные а так же что-то в ней менять

Если СтрокаТабличнойЧасти.Номенклатура.СправочнаяНоменклатура Тогда  //тут вы получили из строки
	СтрокаТабличнойЧасти.Признак="С";  //Тут изменили
КонецЕсли; 

Если СтрокаТабличнойЧасти.Номенклатура.ВестиУчетПоСериям Тогда 
СтрокаТабличнойЧасти.Признак="П";  //было добавлено еще Данные. Не могу знать что это. 
КонецЕсли; 
Показать
7. lordpox 04.12.18 09:39 Сейчас в теме
(3)
СтрокаТабличнойЧасти = ЭлементыФормы.Продукция.ТекущиеДанные; //Это сама строка. Можно получить ее данные а так же что-то в ней менять

Если СтрокаТабличнойЧасти.Номенклатура.СправочнаяНоменклатура Тогда  //тут вы получили из строки
//А я думал в этой строке я обращаюсь напрямую к реквизиту объекта номенклатуры, если Истина, тогда в строке в колонке "признак" проставляю строку "С" 
    СтрокаТабличнойЧасти.Признак="С";  //Тут изменили
КонецЕсли; 


Вот эта верхняя часть работает, если в табличную часть "Продукция" я добавляю реквизит "Признак" и на форме в свойствах колонки "признак" выставляю данные- признак

Но хочу чтобы всё это работало без реквизита, чтобы не хранилась в базе информация )

Если СтрокаТабличнойЧасти.Номенклатура.ВестиУчетПоСериям Тогда 
СтрокаТабличнойЧасти.Признак="П";  //было добавлено еще Данные. Не могу знать что это.
КонецЕсли; 


Я думал, что через "Данные" можно присвоить значение в эту ячейку строки
9. lordpox 04.12.18 09:49 Сейчас в теме
Пробовал сделать так:
Процедура ПродукцияПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)

	СтрокаТабличнойЧасти = ЭлементыФормы.Продукция.ТекущиеДанные;

	
	Для каждого СтрокаТабличнойЧасти  из Продукция Цикл
			Если СтрокаТабличнойЧасти.Номенклатура.СправочнаяНоменклатура Тогда
				ОформлениеСтроки.Ячейки.Признак.ОтображатьТекст=Истина;
				ОформлениеСтроки.Ячейки.Признак.Текст="С";
				//ОформлениеСтроки.Ячейки.Признак.ЦветФона=WebЦвета.СветлоРозовый;
			КонецЕсли;
			Если СтрокаТабличнойЧасти.Номенклатура.ВестиУчетПоСериям Тогда
				ОформлениеСтроки.Ячейки.Признак.ОтображатьТекст=Истина;
				ОформлениеСтроки.Ячейки.Признак.Значение="П";
				//ОформлениеСтроки.Ячейки.Признак.ЦветФона=WebЦвета.СветлоНебесноГолубой;
			КонецЕсли;
			
		КонецЦикла;
	КонецПроцедуры
	
Показать


Но видимо в таком виде работает только в форме списка(когда открываем при выборе список номенклатуры, там у меня всё получилось)
10. independ 1520 04.12.18 09:56 Сейчас в теме
(9) Нужно использовать метод УстановитьТекст()
ОформлениеСтроки.Ячейки.ИмяВашейЯчейки.УстановитьТекст(ВашТекст);
11. lordpox 04.12.18 09:59 Сейчас в теме
(10) Попробую!

Кстати, если делать как в (9), то при вычислении выражения: ОформлениеСтроки.Ячейки.Признак.Значение
Отладчик показывает, что всё здорово, значение этого выражения "П" , но в документе почему то не отображается (
12. independ 1520 04.12.18 10:04 Сейчас в теме
(9) Вот так правильно, цикл не нужен
Процедура ПродукцияПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)

            Если ДанныеСтроки.Номенклатура.СправочнаяНоменклатура Тогда
                ОформлениеСтроки.Ячейки.Признак.ОтображатьТекст=Истина;
                ОформлениеСтроки.Ячейки.Признак.УстановитьТекст("С");
                //ОформлениеСтроки.Ячейки.Признак.ЦветФона=WebЦвета.СветлоРозовый;
            КонецЕсли;
            Если ДанныеСтроки.Номенклатура.ВестиУчетПоСериям Тогда
                ОформлениеСтроки.Ячейки.Признак.ОтображатьТекст=Истина;
                ОформлениеСтроки.Ячейки.Признак.УстановитьТекст("П");
                //ОформлениеСтроки.Ячейки.Признак.ЦветФона=WebЦвета.СветлоНебесноГолубой;
            КонецЕсли;
            
    КонецПроцедуры
Показать
13. lordpox 04.12.18 10:05 Сейчас в теме
(12) А если не сложно, объясните почему не нужен цикл ? Мне для себя что бы уяснить и глупых ошибок не делать )
14. independ 1520 04.12.18 10:08 Сейчас в теме
(13) Событие ПриВыводеСтроки срабатывает для всех строк таблицы
15. lordpox 04.12.18 10:34 Сейчас в теме
(14)Аа, это именно в этой процедуре, понятно, спасибо.
16. lordpox 04.12.18 10:41 Сейчас в теме
(12)
Если ДанныеСтроки.Номенклатура.ВестиУчетПоСериям Тогда
ОформлениеСтроки.Ячейки.Признак.ОтображатьТекст=Истина;
ОформлениеСтроки.Ячейки.Признак.УстановитьТекст("П");
//ОформлениеСтроки.Ячейки.Признак.ЦветФона=WebЦвета.СветлоНебесноГолубой;


Огромное Вам спасибо, действительно так работает, и почитав справку, понял почему )))
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот