Версия для печати темы (https://pro1c.org.ua/index.php?s=a26d09a08976b67c6e96a393a0abbf7d&showtopic=59370)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование обычных форм 1С 8.2 и не интерфейсной логики _ Как получить доступ к ячейке табличной части на форме

Автор: BeLuY 02.06.20, 15:46

Добрый день! Нужна помощь - совсем запутался: Есть документ с табличной частью Товары с реквизитами Номенклатура, ЕдиницаИзмерения, Цена, ЦенаБазовая, ХарактеристикаНоменклатуры, БазоваяЕдиницаИзмерения, ЦенаБезАкции. На форме документа, в эту же таблицу добавлена одна колонка ЦенаСтарая, значение которой заполняется в процедуре ПриОткрытии() (Вроде правильно описал crazy.gif)

Задача стоит в том, чтобы иметь возможность выделять строку табличной части, и при нажатии на определенную кнопку, происходил расчет значения ячейки ЦенаБезАкции, на основании значения ячейки ЦенаСтарая, но у меня не получается получить доступ к данной ячейке.

СтрокаТЧ= ЭлементыФормы.Товары.ТекущаяСтрока;

В данном случае я могу получить доступ к реквизитам табличной части, что прописаны в документе (СтрокаТЧ.Цена, СтрокаТЧ.ЦенаСоСкидкой и прочие), но не могу получить доступ к полю ЦенаСтарая (при обращению к СтрокаТЧ.ЦенаСтарая выдает ошибку "Поле объекта не обнаружено (ЦенаСтарая)")

Каким образом можно получить значение этой ячейки?

Спасибо!

Цитата
Программирование обычных форм 1С 8.2 и не интерфейсной логики

Блин, кажется с разделом промахнулся.... Если так, прошу переместить в правильный (сорри, еще не полностью изучил структуру форума)

Автор: mut 02.06.20, 20:37

Попробуйте через

СтрокаТЧ= ЭлементыФормы.Товары.ТекущиеДанные;

Автор: BeLuY 02.06.20, 21:08

mut @ Сегодня, 21:37 * ,

Делал и через СтрокаТЧ = ЭлементыФормы.Товары.ТекущиеДанные, и через СтрокаТЧ = ЭлементыФормы.Товары.ТекущаяСтрока - результат один и тот же (а если честно, не понимаю в чем разница, если пройти отладчиком - структура и данные одни и те же)

Автор: kooperdj 02.06.20, 21:50

а не проще повторить алгоритм расчета из ПриОткрытии() для текущей строки и дорасчитать что вам надо? Если поле не связано с данными - то там текст, доступный только в ОформленииСтроки.

Автор: Vofka 03.06.20, 8:16

BeLuY, покажите как оно заполняется в ПриОткрытии()

Автор: BeLuY 03.06.20, 10:28

Упс, ошибся, не в процедуре ПриОткрытии()

Процедура ТоварыПриПолученииДанных(Элемент, ОформленияСтрок)
    дкТоварыПриПолученииДанных(ЭтаФорма, Элемент, ОформленияСтрок, Права);
    
    // ..........................................        
        
    Для Каждого ОформлениеСтроки Из ОформленияСтрок Цикл
               ДанныеСтроки = ОформлениеСтроки.ДанныеСтроки;

        // ..........................................                
            
        Если Элемент.Колонки.ЦенаСтарая.Видимость Тогда
            Если (НЕ ДанныеСтроки.Номенклатура.Пустая()) И (НЕ ТипЦен.Пустая()) тогда
                ОформлениеСтроки.Ячейки.ЦенаСтарая.ОтображатьТекст=Истина;
                // получим предыдущую цену
                ЦенаСтарая = ПолучитьСтаруюЦену(ДанныеСтроки);
                ОформлениеСтроки.Ячейки.ЦенаСтарая.Текст=Формат(ЦенаСтарая,"ЧЦ=15; ЧДЦ=2");
                
                // ..........................................
                    
            КонецЕсли;

        // ..........................................
        
    КонецЦикла;
КонецПроцедуры

Автор: kooperdj 03.06.20, 10:44

BeLuY @ Сегодня, 11:28 * ,
У вас есть функция ПолучитьСтаруюЦену(ДанныеСтроки); пользуйтесь ей. Мне кажется, логика приложения прихрамывает smile.gif

Автор: BeLuY 03.06.20, 11:15

kooperdj @ Сегодня, 11:44 * ,

Вижу, что ничего другого не остается... Но все же, хотелось бы понять как получить доступ к данной ячейке smile.gif

Автор: kooperdj 03.06.20, 11:49

BeLuY @ Сегодня, 12:15 * ,
Такие поля доступны в двух процедурах ...ПриВыводеСтроки() и ...ПриПолученииДанных() обе жрут ресурсы, вторая чуть поменьше. Отображаются там обычно доп. инфа, флажки, картинки (то что в базе не сохраняется). По таким колонкам не считаются итоги. При этом данные меняются динамически, при каждом скроллинге таб части. Если сильно хочется обложиться костылями - можно источником данных указать ТаблицаЗначений, загружать в нее данные из ТабЧасти документа, обрабатывать и выгружать назад (пример - Установка цен номенклатуры в типовых)

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua