Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
26 ноя 2024, 01:40

Как получить значение ячейки??

Автор 1С-Ученик, 21 окт 2010, 11:37

0 Пользователей и 1 гость просматривают эту тему.

1С-Ученик

Есть документ Поступление товаров и услуг, в этом документе есть табличная часть товары.

Как получить конкретное значение ячейки в колоке Цена, т.е. нужно при активизации конкрентной ячейки получить ее значение

Код предполагаю писать в следующие процедуры:

Процедура ТоварыПриАктивизацииСтроки(Элемент)

Процедура ТоварыПриАктивизацииЯчейки(Элемент)

Но вот какой код - для меня это загадка.
Пробовал вот так:
ЭлементыФормы.Товары.Колонки.Цена.Данные
Не подходит.

Господа профи подскажите как быть?

progmikon

Попробуйте так:
Процедура ТабличнаяЧасть1ПриАктивизацииСтроки(Элемент)
      ТекущиеДанные = ЭлементыФормы.ТабличнаяЧасть1.ТекущиеДанные;
        Сообщить(ТекущиеДанные.Реквизит1);
КонецПроцедуры

1С-Ученик

Цитата: progmikon от 21 окт 2010, 11:58
Попробуйте так:
Процедура ТабличнаяЧасть1ПриАктивизацииСтроки(Элемент)
      ТекущиеДанные = ЭлементыФормы.ТабличнаяЧасть1.ТекущиеДанные;
        Сообщить(ТекущиеДанные.Реквизит1);
КонецПроцедуры


Браво!!! Все работает!!!!!  :zebzdr: :zebzdr: :zebzdr:

:befhbt:А теперь вот еще задачка - продолжение предыдущей:

Нужно чтобы при открытии документа Поступление товаров и услуг (документ проведен) запретить изменять ячейку в колоке цена, если значение НЕ пустое (т.е. цена есть)
Я делаю:
ПриОткрытии()
ЭлементыФормы.Товары.Колонки.Цена.Доступность = Ложь;

Тем самы я блокирую всю колонку Цена

А затем в этот же документ если добавить новую строку, то то колонака Цена будет заблокирована и не помогает такой код:
Процедура ТоварыПередНачаломДобавления(Элемент, Отказ, Копирование)
ЭлементыФормы.Товары.Колонки.Цена.Доступность = Истина;
КонецПроцедуры


В этом случае разблокируется вся колонка Цена, а нужно чтобы можно было добавить новое значение, если ячейка пустая
Как так сделать?

progmikon

Интересная задачка. :) Что-то сходу оптимального решения не придумаю.
Но подход можно и такой выбрать:

Перем ТекРеквизит;

Процедура ТабличнаяЧасть1ПриАктивизацииСтроки(Элемент)
ТекущиеДанные = ЭлементыФормы.ТабличнаяЧасть1.ТекущиеДанные;
ТекРеквизит = ТекущиеДанные.Реквизит1;
КонецПроцедуры

Процедура ТабличнаяЧасть1Реквизит1ПриИзменении(Элемент)
ТекущиеДанные = ЭлементыФормы.ТабличнаяЧасть1.ТекущиеДанные;
Если ЗначениеЗаполнено(ТекРеквизит) Тогда
Сообщить("НЕЛЬЗЯ!");
ТекущиеДанные.Реквизит1 = ТекРеквизит;
КонецЕсли;
КонецПроцедуры

progmikon

То есть проверяем был ли пустой реквизит и если был то все ОК, если нет, то меняем на старое значение.

1С-Ученик

Увы...не работает. Цену все равно можно редактировать, закрыв табло. А при выделении курсором ячейки, ее значение становить нулевым...
Я уже весь мосг сломал над этой задаче, а решения увы так и не нашел

progmikon


1С-Ученик

Заработало!!!
Процедура ТоварыПередНачаломИзменения(Элемент, Отказ)
//fortis
ТекущиеДанные = ЭлементыФормы.Товары.ТекущиеДанные;
Если ЗначениеЗаполнено(ТекущиеДанные.Цена) Тогда
ЭлементыФормы.Товары.Колонки.Цена.Доступность = ложь;
Сообщить ("Цена Есть");
иначе
Сообщить ("Цены НЕТ");
ЭлементыФормы.Товары.Колонки.Цена.Доступность = истина;


КонецЕсли;


КонецПроцедуры


Все ок!
Но! При добавлении новой строки в табличную часть, ячейка новой строки в колонке цена не редактируется - также как и все остальные ячейки в этой колонки. Для того чтобы вписать цену в ячейку новой строки нужно щелкнуить на соседнию ячейку в этой строке и тогда ячейка в колонке цена будет активна!!
Чудеса, хотя их не бывает...

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск