1. lordpox 03.12.18 18:25 Сейчас в теме

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

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

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

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

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

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

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


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

            Если ДанныеСтроки.Номенклатура.СправочнаяНоменклатура Тогда
                ОформлениеСтроки.Ячейки.Признак.ОтображатьТекст=Истина;
                ОформлениеСтроки.Ячейки.Признак.УстановитьТекст("С");
                //ОформлениеСтроки.Ячейки.Признак.ЦветФона=WebЦвета.СветлоРозовый;
            КонецЕсли;
            Если ДанныеСтроки.Номенклатура.ВестиУчетПоСериям Тогда
                ОформлениеСтроки.Ячейки.Признак.ОтображатьТекст=Истина;
                ОформлениеСтроки.Ячейки.Признак.УстановитьТекст("П");
                //ОформлениеСтроки.Ячейки.Признак.ЦветФона=WebЦвета.СветлоНебесноГолубой;
            КонецЕсли;
            
    КонецПроцедуры
Показать
Остальные ответы
Избранное Подписка Сортировка: Древо
2. independ 172 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 172 04.12.18 09:17 Сейчас в теме
(4)
ОформлениеСтроки.Ячейки.ИмяТвоейЯчейки.ЦветФона=WebЦвета.Красный;

а вопрос был о другом :)
6. tvm 04.12.18 09:22 Сейчас в теме
(4) при написании сообщения есть панелька. на ней надо нажать кнопку "</>".
8. lordpox 04.12.18 09:42 Сейчас в теме
3. dandykry 3 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 172 04.12.18 09:56 Сейчас в теме
(9) Нужно использовать метод УстановитьТекст()
ОформлениеСтроки.Ячейки.ИмяВашейЯчейки.УстановитьТекст(ВашТекст);
11. lordpox 04.12.18 09:59 Сейчас в теме
(10) Попробую!

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

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


Огромное Вам спасибо, действительно так работает, и почитав справку, понял почему )))
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Разработчик 1С
Москва
зарплата от 100 000 руб. до 160 000 руб.
Полный день

Программист 1С
Москва
зарплата от 80 000 руб.
Полный день

Консультант-аналитик 1С
Санкт-Петербург
Полный день

Консультант-аналитик 1С
Москва
зарплата от 120 000 руб. до 120 000 руб.
Полный день

Senior 1C Developer ЛЮБОЙ ГОРОД
Москва
зарплата от 80 000 руб.
Полный день