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

Как подставить в табл.часть значение реквизита выбранного элемента справочника?

Автор detka_cccp, 21 фев 2012, 11:00

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


detka_cccp

Спасибо великим хэлперам!
написал вот так


   |  ГДЕ
   |  Статус.Код = 1 ";

и все получилось..
Эх, ма! знать бы прикуп..

sergejK74

Кнопочка Спасибо - слева!

detka_cccp

блин какая же загадочная штука, этот 1с!
вот давно мучаюсь таким вопросом -
как сделать так, чтобы в форме списка справочника, можно было редактировать данные не заходя в форму элемента?
я пробывал в полях формы списка изменять свойства, ставил там значения типа -КнопкаСпискаВыбора, РежимВыбораИзСписка и т.д., но так ниче и не получалось((
Все равно открывалась форма элемента.
Уважаемые гуру, подскажите плиз, где я туплю..

sergejK74

Вот такая вот загадка - нигде не описано! Это недокументированная функция. Но могу по секрету рассказать, что в 8.1 (у тебя ведь 8.1?), что у справочников на закладке формы есть пунктик Редактирование - а в нем переключатель В списке, В диалоге, Обоими способами (выбери в списке). Иногда помогает.
Кнопочка Спасибо - слева!

detka_cccp

OMG..
Спасибо! Все получилось.
Однако есть вот такой волнующий вопрос - например есть форма списка справочника Исполнители, в ней два поля реквизитов этого справочника.
Данные одного из полей выбираются из другого справочника Сотрудники.
Хочу чтобы юзер, добавляя новую строку в эту форму нового исполнителя, когда он выбирает значение из справочника Сотрудники, не смог бы добавить нового исполнителя, если таковой уже присутствует в списке справочника исполнители.
Пишу такую процедуру:
        Запрос = Новый Запрос;
   Запрос.Текст = "ВЫБРАТЬ
   |  Исполнитель КАК Исполнитель2,
   |  ИЗ
   |  Справочник.Исполнители";
   
   Результат = Запрос.Выполнить().Выбрать();
   
   Пока Результат.Следующий() Цикл
      Если Результат.Исполнитель2 =  ????? тогда
         Предупреждение("Выбрано не то тело", 1);
      КонецЕсли
      КонецЦикла

Подскажите плиз, что подставить вместо ??? (как описывается выбранное значение)

detka_cccp

Нашел че туда стваить, попробовал, но выдает лишь предупреждение, а выбор не отменяет.
Дальше попробывал с помощью функции Возврат Истина, разделив код на процедуру и функцию, теперь кроме предупреждения еще и выдает сообщение - обьект помечен на удаление, отменить выбор - да, нет..
Код вот такой

Процедура СправочникСписокФИООбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка, Отказ)
      // Проверяем не выбран ли мойщик, уже присутствующий в списке
   Отказ = СравнениеИсполнителя(ВыбранноеЗначение)
КонецПроцедуры

Функция СравнениеИсполнителя(ВыбранноеЗначение)Экспорт
Запрос = Новый Запрос;
   Запрос.Текст = "ВЫБРАТЬ
   |  Исполнитель.Код КАК Код2
   |  ИЗ
   |  Справочник.Исполнители";
   Результат = Запрос.Выполнить().Выбрать();
   Пока Результат.Следующий() Цикл
      Если Результат.Код2 = ВыбранноеЗначение.Код тогда
         Предупреждение("Этот сотрудник уже имеется в списке");
         Возврат Истина;
      КонецЕсли;
   КонецЦикла;
   КонецФункции



detka_cccp

Но нужно то чтобы  выбор был отменён! Как это сделать, товарищи?!

sergejK74

Подскажи, пожалуйста, ты запросом выбираешь всех исполнителей из справочника и сравниваешь с одним из них.
Возможна ли здесь ложь?
И зачем (читать как на @@@) такой запрос? Может перечитать на ночь томик google, немного подумать?
Кнопочка Спасибо - слева!

detka_cccp

Ну так подскажите, в чем ошибка? если намекаете на то что нужно использовать эту процедуру в другом моменте, нежели ОбработкаВыбора, то я уже искал процедуру ПередВыбором или типа того там нет.
А в чем еще может быть ошибка, догадаться не могу.

Теги:

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

Рейтинг@Mail.ru

Поиск