8.х ТекущаяДата

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

  1. TopicStarter Overlay
    Ania_44
    Offline

    Ania_44

    Регистрация:
    11 ноя 2009
    Сообщения:
    3
    Симпатии:
    0
    Баллы:
    1
    Здравствуйте, меня вот интересует такой вопрос. Задание такое, вернее часть. На начало дня создаётся бригада, которая состоит из водителя и грузчика, к бригаде прикрепляется машина. Далее создаётся заявка на транспорт. Если на сегодняшний день к выбранной машине прикреплена бригада, то выдаётся сообщение соотвествующее. Так вот как написать, что именно на выбранную дату есть бригада? Код такой
    Код:
    Процедура МашинаПриИзменении(Элемент)
    Выборка = Документы.Бригада.Выбрать();
    пока Выборка.Следующий() цикл
    если ДатаИВремяДоставки=выборка.ДатаСозданияБригады тогда
    если (Выборка.Машина=ЭлементыФормы.Машина.Значение) тогда
    Бригада = Выборка.Ссылка;
    КонецЕсли;
    КонецЕсли;      
    конеццикла;
    Если не Машина.Пустая() тогда
    Предупреждение("К данной машине прикреплена бригада");
    ЭлементыФормы.Машина.Значение=Бригада.Машина;
    ЭлементыФормы.Водитель.Значение=Бригада.Водитель;
    ЭлементыФормы.Грузчик1.Значение=Бригада.Грузчик1;
    ЭлементыФормы.Грузчик2.Значение=Бригада.Грузчик2;   
    иначе
    Предупреждение("К данной машине не прикреплена бригада");
    ЭлементыФормы.Машина.Значение = Неопределено;
    ЭлементыФормы.Водитель.Значение = Неопределено;
    ЭлементыФормы.Грузчик1.Значение = Неопределено;
    ЭлементыФормы.Грузчик2.Значение = Неопределено;
    КонецЕсли;
    КонецПроцедуры
    
    
    Строчка с датой какая то не правильная, и после иначе ничего не работает. т.е. если на данную машину не определена бригада, он просто ничего не выдаёт, может кто поможет, если время будет.
  2. Dmitrij
    Offline

    Dmitrij Опытный в 1С

    Регистрация:
    6 май 2008
    Сообщения:
    844
    Симпатии:
    1
    Баллы:
    26
    Код:
    Процедура МашинаПриИзменении(Элемент)
    Выборка = Документы.Бригада.Выбрать(Дата(НачалоДня(ТекущаяДата())));
    пока Выборка.Следующий() цикл
    если ДатаИВремяДоставки=выборка.ДатаСозданияБригады тогда
    если (Выборка.Машина=ЭлементыФормы.Машина.Значение) тогда
    Бригада = Выборка.Ссылка;
    КонецЕсли;
    КонецЕсли;      
    конеццикла;
    Если не Машина.Пустая() тогда
    Предупреждение("К данной машине прикреплена бригада");
    ЭлементыФормы.Машина.Значение=Бригада.Машина;
    ЭлементыФормы.Водитель.Значение=Бригада.Водитель;
    ЭлементыФормы.Грузчик1.Значение=Бригада.Грузчик1;
    ЭлементыФормы.Грузчик2.Значение=Бригада.Грузчик2;   
    иначе
    Предупреждение("К данной машине не прикреплена бригада");
    ЭлементыФормы.Машина.Значение = Неопределено;
    ЭлементыФормы.Водитель.Значение = Неопределено;
    ЭлементыФормы.Грузчик1.Значение = Неопределено;
    ЭлементыФормы.Грузчик2.Значение = Неопределено;
    КонецЕсли;
    КонецПроцедуры
    
    
    
    
    Попробуйте так

    [warn=Оверквотинг!]
    Не нужно цитировать предшествующее сообщение, да еще и когда оно такое большое.
    [/warn]
  3. lazy
    Offline

    lazy Модераторы Команда форума Модератор

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    Хм. Начнем с того, что оптимальнее было бы работать через запрос. Вместо перебора документов предпочтительно использовать регистр сведений.

    Сам перебор документов(Выборка в коде) не учитывает вариантов столкновения с непроведенными, помеченными на удаление документами, а это может привести к ошибочным данным.

    Что вы проверяете кодом
    Код:
    Если не Машина.Пустая() тогда
    
    ? Выбрал ли пользователь машину или нет?

    Каким образом это условие соотносится с впереди идущей выборкой по документам? А я Вам скажу - никаким. Вы перебираете документы, и ищите бригаду, а проверяете потом Машину...
  4. Stack_G
    Offline

    Stack_G Опытный в 1С

    Регистрация:
    10 дек 2007
    Сообщения:
    786
    Симпатии:
    2
    Баллы:
    26
    Как-то все очень замучено :).
    Ответ на вопрос
    Код:
    Если НачалоДня(ТекущаяДата()) = НачалоДня(Выборка.ДатаСозданияБригады) Тогда
    
    Ну или
    Код:
    Если НачалоДня(ТекущаяДата()) = НачалоДня(Выборка.Дата) Тогда
    

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