Имя: Пароль:
1C
1С v8
Справочник - Редактирование реквизита
0 darkghostnt
 
24.04.14
14:08
Процедура КнопкаВыполнитьНажатие(Кнопка)
//Выбираем время из талонов
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    ДокТалон.ВремяПриёма КАК Время
                   |ИЗ
                   |    Документ.Талон КАК ДокТалон
                   |ГДЕ
                   |    ДокТалон.ФИОВрача = &Врач
                   |    И ДокТалон.ДатаПриема = &ДатаПриема";
    Запрос.УстановитьПараметр("Врач", ЭлементыФормы.Врач.Значение);
    Запрос.УстановитьПараметр("ДатаПриема", ЭлементыФормы.ДатаПриема.Значение);

    Результат = Запрос.Выполнить().Выбрать();
    Пока Результат.Следующий() > 0 ЦИКЛ
            Вр = Формат(Результат.Время, "ДЛФ=В");
            СпрСм = Справочники.Смена.НайтиПоРеквизиту("Время", Вр);
            Объект = СпрСм.ПолучитьОбъект();
            Объект.Занято = Истина;
            Объект.Записать();
        КонецЦикла;
КонецПроцедуры

Справочник.Смена

|Код |Наименование        |Время  |Занято   |

| 01 |     1              |  9:00 |         |

| 02 |     1              | 10:00 |         |

| 13 |     2              | 14:00 |         |

Как Поставить Занято = Истина, если известно Время?
1 МойКодУныл
 
24.04.14
14:09
(0) Вы спрашиваете или хвастаетесь?
2 Kurbash
 
24.04.14
14:10
если
Результат.Время<>"" тогда
конецесли;
3 darkghostnt
 
24.04.14
14:13
{Обработка.Обработка1.Форма.Форма(19)}: Ошибка при вызове метода контекста (ПолучитьОбъект): Элемент не выбран!
            Объект = СпрСм.ПолучитьОбъект();

Выдаёт ошибку.
4 Molinor
 
24.04.14
14:14
Значит ничего найти не может.
5 neo_matrix_123
 
24.04.14
14:15
во первых
выбраете запросом просто дату
цикл Пока Результат.Следующий() > 0 ЦИКЛ
так не делается плюс смотрим правила работы с примитивными типами Дата

во вторых смотрим в конфе правила работы с примитивными типами булево
Если ТипЗнч(Реквизит) = Тип("Булево")  Тогда
    Значение = Булево(Значение);
КонецЕсли;
6 darkghostnt
 
24.04.14
14:19
Результат обрабатывает Время находит, проверял построением СпискаЗначений.

Нужно Определив Время, найти его в СправочникеСмены и поставить галочку.
7 darkghostnt
 
24.04.14
14:20
Потом буду составлять ПолеВыбора из Времени без галочки.
8 Molinor
 
24.04.14
14:22
Отладчик в руки и пошагово смотреть что где не так.
9 darkghostnt
 
24.04.14
14:24
Ошибка выше написана.
10 Molinor
 
24.04.14
14:25
Ответ выше написан.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший