8.х хочу ограничить юзверя в реквизите табличном поля

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем makfromkz, 14 фев 2011.

  1. TopicStarter Overlay
    makfromkz
    Offline

    makfromkz

    Регистрация:
    12 июн 2009
    Сообщения:
    25
    Симпатии:
    0
    Баллы:
    1
    есть реквизит табличного поля на форме документа, юзверь выбирает документ из списка.
    Стоит задача при неправильном выборе значения реквизита назначать программно реквизит из первой строки.

    В процедуре ПриИзмененииРевизита, вроде прописал, а потом система вызывает ОбработкуВыбораСпискаДокументов внутри которого есть ОповеститьОВыборе(ВыбраннаяСтрока.ссылка);
    Которая возвращает значение выбранное пользователем.

    Как правильно сделать подмену реквизита?
  2. ximera
    Offline

    ximera Опытный в 1С

    Регистрация:
    5 фев 2008
    Сообщения:
    205
    Симпатии:
    0
    Баллы:
    26
    СтандартнаяОбработка = Ложь; пробовали писать?
  3. TopicStarter Overlay
    makfromkz
    Offline

    makfromkz

    Регистрация:
    12 июн 2009
    Сообщения:
    25
    Симпатии:
    0
    Баллы:
    1
    Нет, а где ее пишут?
    Код:
    Процедура ПрочееПриказПриИзменении(Элемент)
    приз = Ложь;
    СтрокаТабличнойЧасти = ЭлементыФормы.Прочее.ТекущиеДанные;
    Если ЭлементыФормы.Прочее.ТекущиеДанные.НомерСтроки	= 1 Тогда
    ПерваяСтрока = ЭлементыФормы.Прочее.ТекущиеДанные;
    ИначеЕсли (ЭлементыФормы.Прочее.ТекущиеДанные.НомерСтроки > 1)И(ПерваяСтрока <> Неопределено) Тогда
    СтрокаТабличнойЧасти = ПерваяСтрока;
    приз = Истина;
    ИначеЕсли (ЭлементыФормы.Прочее.ТекущиеДанные.НомерСтроки > 1)И(ПерваяСтрока = Неопределено) Тогда
    Для Каждого строка1 Из ЭлементыФормы.Прочее.Значение Цикл
    ПерваяСтрока = строка1;
    приз = Истина;
    Прервать;
    КонецЦикла;
    СтрокаТабличнойЧасти = ПерваяСтрока;
    КонецЕсли;
    СтрокаТабличнойЧасти.НомерВходящегоДокумента = СтрокаТабличнойЧасти.Приказ.Номер;
    СтрокаТабличнойЧасти.ДатаВходящегоДокумента = СтрокаТабличнойЧасти.Приказ.Дата;
    Если приз Тогда
    ЭлементыФормы.Прочее.ОбновитьСтроки();
    КонецЕсли;
    КонецПроцедуры
    
  4. Requin
    Offline

    Requin Опытный в 1С

    Регистрация:
    10 май 2010
    Сообщения:
    1.911
    Симпатии:
    2
    Баллы:
    29
    В 8-ке нет СтандартнаяОбработка. Используется параметр Отказ, если он поддерживается процедурой (ПриИзменении() Отказ отсутствует).
  5. Requin
    Offline

    Requin Опытный в 1С

    Регистрация:
    10 май 2010
    Сообщения:
    1.911
    Симпатии:
    2
    Баллы:
    29
    Код:
    Процедура ПрочееПриказПриИзменении(Элемент)
    Если НеправильныйВыбор Тогда
    Если Прочее.Количество() > 1 Тогда
    ПерваяСтрока = Прочее[0];
    ТекСтрока = ЭлементыФормы.Прочее.ТекущиеДанные;
    
    ТекСтрока.Приказ = ПерваяСтрока.Приказ;
    ТекСтрока.НомерВходящегоДокумента = ТекСтрока.Приказ.Номер;
    ТекСтрока.ДатаВходящегоДокумента = ТекСтрока.Приказ.Дата;
    Иначе
    // действия при 1 строке
    КонецЕсли;
    КонецЕсли;
    КонецПроцедуры
    
  6. Requin
    Offline

    Requin Опытный в 1С

    Регистрация:
    10 май 2010
    Сообщения:
    1.911
    Симпатии:
    2
    Баллы:
    29
    Вернее так:

    Код:
    Процедура ПрочееПриказПриИзменении(Элемент)
    Если НеправильныйВыбор Тогда
    ТекСтрока = ЭлементыФормы.Прочее.ТекущиеДанные;
    Если ТекСтрока.НомерСтроки > 1 Тогда
    ПерваяСтрока = Прочее[0];
    
    ТекСтрока.Приказ = ПерваяСтрока.Приказ;
    ТекСтрока.НомерВходящегоДокумента = ТекСтрока.Приказ.Номер;
    ТекСтрока.ДатаВходящегоДокумента = ТекСтрока.Приказ.Дата;
    Иначе
    // действия при изменении 1-ой строки
    КонецЕсли;
    КонецЕсли;
    КонецПроцедуры
    
  7. TopicStarter Overlay
    makfromkz
    Offline

    makfromkz

    Регистрация:
    12 июн 2009
    Сообщения:
    25
    Симпатии:
    0
    Баллы:
    1
    весь фокус в том, что программно я меняю реквизит, но потом срабатывает ОповеститьОВыборе() в форме выбора из списка и она все труды мои затирает на выбор пользователя
  8. Requin
    Offline

    Requin Опытный в 1С

    Регистрация:
    10 май 2010
    Сообщения:
    1.911
    Симпатии:
    2
    Баллы:
    29
    Кстати ошибся - есть СтандартнаяОбработка в процедурах.

    Реквизит выбирается только через обработку?
    Тогда ПриИзменении() не используйте. Используйте ОбработкаВыбора(), в котором, как рекомендовал ximera, СтандартнаяОбработка = Ложь.

Поделиться этой страницей