Как программно присвоить строковое значение в ячейку табличной части
Всем доброго вечера !
1С УПП 8.3, формы обычные. Есть документ "Отчет производства за смену" , в нем на форме добавлена колонка "Признак", необходимо заполнять эту колонку только при открытии документа, либо при создании, то есть только визуальная информация во время работы с документом, хранить эту информацию в базе не надо. Если с хранением, то решение сделал, но хочется все-таки чтобы в базе это не хранилось.
Сразу оговорюсь, в синтаксисе пока плаваю и частенько путаю к чему я обращаюсь, буквально просмотрел 2 начальных курса. Днем есть на работе наставник, который подсказывает, но самостоятельно экспериментирую обычно вечером, поэтому спросить не у кого, решил зарегистрироваться, так как частенько находил ответы на свои вопросы именно здесь.
Продукция - это табличная часть
СтрокаТабличнойЧасти = ЭлементыФормы.Продукция.ТекущиеДанные;
Если СтрокаТабличнойЧасти.Номенклатура.СправочнаяНоменклатура Тогда
// ЭлементыФормы.Продукция.ТекущиеДанные.Признак="С"; - так работает через реквизит табличной части, пробую исправить строку с признаком "П"
КонецЕсли;
Если СтрокаТабличнойЧасти.Номенклатура.ВестиУчетПоСериям Тогда
ЭлементыФормы.Продукция.Колонки.Признак.Данные="П";
КонецЕсли;
В отладчике если вычислить выражение ЭлементыФормы.Продукция.Колонки.Признак.Данные - значение ""
Но если рассчитать ЭлементыФормы.Продукция.Колонки.Признак - то все нормально мы попадем в эту колонку, но как присвоить ей значение в текущей строке ?
1С УПП 8.3, формы обычные. Есть документ "Отчет производства за смену" , в нем на форме добавлена колонка "Признак", необходимо заполнять эту колонку только при открытии документа, либо при создании, то есть только визуальная информация во время работы с документом, хранить эту информацию в базе не надо. Если с хранением, то решение сделал, но хочется все-таки чтобы в базе это не хранилось.
Сразу оговорюсь, в синтаксисе пока плаваю и частенько путаю к чему я обращаюсь, буквально просмотрел 2 начальных курса. Днем есть на работе наставник, который подсказывает, но самостоятельно экспериментирую обычно вечером, поэтому спросить не у кого, решил зарегистрироваться, так как частенько находил ответы на свои вопросы именно здесь.
Продукция - это табличная часть
СтрокаТабличнойЧасти = ЭлементыФормы.Продукция.ТекущиеДанные;
Если СтрокаТабличнойЧасти.Номенклатура.СправочнаяНоменклатура Тогда
// ЭлементыФормы.Продукция.ТекущиеДанные.Признак="С"; - так работает через реквизит табличной части, пробую исправить строку с признаком "П"
КонецЕсли;
Если СтрокаТабличнойЧасти.Номенклатура.ВестиУчетПоСериям Тогда
ЭлементыФормы.Продукция.Колонки.Признак.Данные="П";
КонецЕсли;
В отладчике если вычислить выражение ЭлементыФормы.Продукция.Колонки.Признак.Данные - значение ""
Но если рассчитать ЭлементыФормы.Продукция.Колонки.Признак - то все нормально мы попадем в эту колонку, но как присвоить ей значение в текущей строке ?
По теме из базы знаний
Найденные решения
(9) Вот так правильно, цикл не нужен
Процедура ПродукцияПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
Если ДанныеСтроки.Номенклатура.СправочнаяНоменклатура Тогда
ОформлениеСтроки.Ячейки.Признак.ОтображатьТекст=Истина;
ОформлениеСтроки.Ячейки.Признак.УстановитьТекст("С");
//ОформлениеСтроки.Ячейки.Признак.ЦветФона=WebЦвета.СветлоРозовый;
КонецЕсли;
Если ДанныеСтроки.Номенклатура.ВестиУчетПоСериям Тогда
ОформлениеСтроки.Ячейки.Признак.ОтображатьТекст=Истина;
ОформлениеСтроки.Ячейки.Признак.УстановитьТекст("П");
//ОформлениеСтроки.Ячейки.Признак.ЦветФона=WebЦвета.СветлоНебесноГолубой;
КонецЕсли;
КонецПроцедуры
ПоказатьОстальные ответы
В избранное
Подписаться на ответы
Сортировка:
Древо развёрнутое
Свернуть все
(1) Можно использовать Событие ПриВыводеСтроки, пример
Процедура ВесыПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
ТипВесов="";
Если ДанныеСтроки.Тип=0 Тогда
ТипВесов="CAS-LP 1.5";
ИначеЕсли ДанныеСтроки.Тип=1 Тогда
ТипВесов="CAS-LP 1.6";
Иначе
ТипВесов="Неверный тип весов";
КонецЕсли;
ОформлениеСтроки.Ячейки.Тип.УстановитьТекст(ТипВесов);
КонецПроцедуры
Показать
(1) "Колонки" лишнее. Это описание колонок самой таблицы. Буквально Таблица1 состоит из колонок Колонка1 - тип Строка, Колонка2 - тип Число и т д.
Менять нужно в строке таблицы.
Менять нужно в строке таблицы.
СтрокаТабличнойЧасти = ЭлементыФормы.Продукция.ТекущиеДанные; //Это сама строка. Можно получить ее данные а так же что-то в ней менять
Если СтрокаТабличнойЧасти.Номенклатура.СправочнаяНоменклатура Тогда //тут вы получили из строки
СтрокаТабличнойЧасти.Признак="С"; //Тут изменили
КонецЕсли;
Если СтрокаТабличнойЧасти.Номенклатура.ВестиУчетПоСериям Тогда
СтрокаТабличнойЧасти.Признак="П"; //было добавлено еще Данные. Не могу знать что это.
КонецЕсли;
Показать
(3)
СтрокаТабличнойЧасти = ЭлементыФормы.Продукция.ТекущиеДанные; //Это сама строка. Можно получить ее данные а так же что-то в ней менять
Вот эта верхняя часть работает, если в табличную часть "Продукция" я добавляю реквизит "Признак" и на форме в свойствах колонки "признак" выставляю данные- признак
Но хочу чтобы всё это работало без реквизита, чтобы не хранилась в базе информация )
Я думал, что через "Данные" можно присвоить значение в эту ячейку строки
СтрокаТабличнойЧасти = ЭлементыФормы.Продукция.ТекущиеДанные; //Это сама строка. Можно получить ее данные а так же что-то в ней менять
Если СтрокаТабличнойЧасти.Номенклатура.СправочнаяНоменклатура Тогда //тут вы получили из строки
//А я думал в этой строке я обращаюсь напрямую к реквизиту объекта номенклатуры, если Истина, тогда в строке в колонке "признак" проставляю строку "С"
СтрокаТабличнойЧасти.Признак="С"; //Тут изменили
КонецЕсли;
Вот эта верхняя часть работает, если в табличную часть "Продукция" я добавляю реквизит "Признак" и на форме в свойствах колонки "признак" выставляю данные- признак
Но хочу чтобы всё это работало без реквизита, чтобы не хранилась в базе информация )
Если СтрокаТабличнойЧасти.Номенклатура.ВестиУчетПоСериям Тогда
СтрокаТабличнойЧасти.Признак="П"; //было добавлено еще Данные. Не могу знать что это.
КонецЕсли;
Я думал, что через "Данные" можно присвоить значение в эту ячейку строки
Пробовал сделать так:
Но видимо в таком виде работает только в форме списка(когда открываем при выборе список номенклатуры, там у меня всё получилось)
Процедура ПродукцияПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
СтрокаТабличнойЧасти = ЭлементыФормы.Продукция.ТекущиеДанные;
Для каждого СтрокаТабличнойЧасти из Продукция Цикл
Если СтрокаТабличнойЧасти.Номенклатура.СправочнаяНоменклатура Тогда
ОформлениеСтроки.Ячейки.Признак.ОтображатьТекст=Истина;
ОформлениеСтроки.Ячейки.Признак.Текст="С";
//ОформлениеСтроки.Ячейки.Признак.ЦветФона=WebЦвета.СветлоРозовый;
КонецЕсли;
Если СтрокаТабличнойЧасти.Номенклатура.ВестиУчетПоСериям Тогда
ОформлениеСтроки.Ячейки.Признак.ОтображатьТекст=Истина;
ОформлениеСтроки.Ячейки.Признак.Значение="П";
//ОформлениеСтроки.Ячейки.Признак.ЦветФона=WebЦвета.СветлоНебесноГолубой;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
ПоказатьНо видимо в таком виде работает только в форме списка(когда открываем при выборе список номенклатуры, там у меня всё получилось)
(9) Вот так правильно, цикл не нужен
Процедура ПродукцияПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
Если ДанныеСтроки.Номенклатура.СправочнаяНоменклатура Тогда
ОформлениеСтроки.Ячейки.Признак.ОтображатьТекст=Истина;
ОформлениеСтроки.Ячейки.Признак.УстановитьТекст("С");
//ОформлениеСтроки.Ячейки.Признак.ЦветФона=WebЦвета.СветлоРозовый;
КонецЕсли;
Если ДанныеСтроки.Номенклатура.ВестиУчетПоСериям Тогда
ОформлениеСтроки.Ячейки.Признак.ОтображатьТекст=Истина;
ОформлениеСтроки.Ячейки.Признак.УстановитьТекст("П");
//ОформлениеСтроки.Ячейки.Признак.ЦветФона=WebЦвета.СветлоНебесноГолубой;
КонецЕсли;
КонецПроцедуры
Показать
(12)
Огромное Вам спасибо, действительно так работает, и почитав справку, понял почему )))
Если ДанныеСтроки.Номенклатура.ВестиУчетПоСериям Тогда
ОформлениеСтроки.Ячейки.Признак.ОтображатьТекст=Истина;
ОформлениеСтроки.Ячейки.Признак.УстановитьТекст("П");
//ОформлениеСтроки.Ячейки.Признак.ЦветФона=WebЦвета.СветлоНебесноГолубой;
ОформлениеСтроки.Ячейки.Признак.ОтображатьТекст=Истина;
ОформлениеСтроки.Ячейки.Признак.УстановитьТекст("П");
//ОформлениеСтроки.Ячейки.Признак.ЦветФона=WebЦвета.СветлоНебесноГолубой;
Огромное Вам спасибо, действительно так работает, и почитав справку, понял почему )))
Вакансии
Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)