Имя: Пароль:
1C
1С v8
Проверить формирование бригады.
,
0 Vitev777
 
28.05.19
12:51
Есть документ формирование бригады реквизиты водитель, грузчик1, грузчик2, машина, и т.д. с него инфа идет в регистр сведений состав бригады, далее есть док заявка на транспорт, который рассматривает менеджер и если на дату не сформированна бригада, выводим предупреждение и очищаем реквизит "Машина".   Я правильно понял, что мне нужно в МашинаПриИзменении() в элементе формы машина(Заявка на транспорт)    запросом проверить наличие по машине документа ФормированиеБригады и если отсутствует - очистить поле. Если да то, помогите разобраться как это сделать, вот начал:
Процедура МашинаПриИзмененииНаСервере()
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |   СоставБригадыСрезПоследних.Период КАК Период,
    |   СоставБригадыСрезПоследних.НомерСтроки КАК НомерСтроки,
    |   СоставБригадыСрезПоследних.Водитель КАК Водитель,
    |   СоставБригадыСрезПоследних.Грузчик1 КАК Грузчик1,
    |   СоставБригадыСрезПоследних.Грузчик2 КАК Грузчик2
    |ИЗ
    |   РегистрСведений.СоставБригады.СрезПоследних(&Дата, Машина = &Машина) КАК СоставБригадыСрезПоследних";
    
    Запрос.УстановитьПараметр("Дата", Дата);
    Запрос.УстановитьПараметр("Машина", Машина);
    Результат = Запрос.Выполнить();
    Выборка = Результат.Выбрать();
    
    Если Выборка.??? Тут не знаю если предыдущее вообще правильно?! ! !
      
        КонецЕсли;
КонецПроцедуры
1 Vitev777
 
28.05.19
13:08
То есть как я понимаю нужно проверить есть ли сформированный документ регистратор формирование бригады на данное число для реквизита машина? Но как это сделать?
2 Eg0rkas
 
28.05.19
13:44
в какой момент нужно выводить предупреждение и очищать значение реквизита "Машина"? может быть в момент открытия формы документа Заявка на транспорт?
3 Vitev777
 
28.05.19
13:48
Нет в момент изменения реквизита машина, то есть при изменении так описал преподаватель в подсказках цитирую

"В документе "Заявка на транспорт" в форме создаем обработчик "При изменении" для элемента формы "Машина". На сервере запросом из регистра сведений получаем информацию по бригаде на дату доставки и по установленной машине. Если информации нет, выводим предупреждение и очищаем реквизит "Машина". В противном случае заполняем реквизиты Водитель, Грузчик1, Грузчик2."
4 Автосервис
 
28.05.19
14:00
В чем проблема-то?

Если Выборка.Следующий() Тогда
Водитель = Выборка.Водитель;
Грузчик1 = Выборка.Грузчик1;
Грузчик2 = Выборка.Грузчик2;
Иначе
Сообщить("Бригада не сформирована");
Машина = Справочники.Автомобили.ПустаяССылка();
КонецЕсли;

Или я что-то не так понял?
5 sqr4
 
28.05.19
14:01
короче загугли есть полное решение твоей задачи в инете
6 Автосервис
 
28.05.19
14:02
(5) Да человек может сам разобраться хочет :)
7 Vitev777
 
28.05.19
14:07
попробовал так сообщение пишется даже если на эту дату бригада уже сформирована, а нужно чтоб только при не сформированной бригаде на дату
8 Vitev777
 
28.05.19
14:08
конечно самому пытаться надо иначе как научишься а то в голове каша
9 sqr4
 
28.05.19
14:12
(8) какая разница, перепишешь ты решение с готового примера или его тебе напишут тут на форуме? Ты же даже не попытался что то сделать
10 Vitev777
 
28.05.19
14:14
бригада не сформирована для авто камаз например сообщение и поля очищаются, сформирована автоматом заносятся реквизиты водитель грузчик
11 Vitev777
 
28.05.19
14:15
а насчет пытался, так седьмой час сижу только над этой подзадачей
12 sqr4
 
28.05.19
14:32
(7) проверь, какая дата в регистре и что у тебя в параметре, не на форме, а в параметре
13 Vitev777
 
28.05.19
15:03
В регистре сведения состав бригады бригада сформирована этим числом в параметре &Дата  
Запрос.УстановитьПараметр("Дата", Объект.Дата); Это я уже раньше исправил на объект

&НаСервере
Процедура МашинаПриИзмененииНаСервере()
    Запрос = Новый Запрос;
    Запрос.Текст =
     "ВЫБРАТЬ
     |  СоставБригадыСрезПоследних.Водитель КАК Водитель,
     |  СоставБригадыСрезПоследних.Грузчик1 КАК Грузчик1,
     |  СоставБригадыСрезПоследних.Грузчик2 КАК Грузчик2,
     |  СоставБригадыСрезПоследних.Машина КАК Машина
     |ИЗ
     |  РегистрСведений.СоставБригады.СрезПоследних(&Дата, Машина = &Машина) КАК СоставБригадыСрезПоследних";
    
    Запрос.УстановитьПараметр("Дата", Объект.Дата);  //Отбор по дате

    Запрос.УстановитьПараметр("Машина", Объект.Машина);    //отбор по машине
     Результат = Запрос.Выполнить();
     Выборка = Результат.Выбрать();
    
Если Выборка.Следующий() Тогда
Водитель = Выборка.Водитель;
Грузчик1 = Выборка.Грузчик1;
Грузчик2 = Выборка.Грузчик2;
Иначе
Сообщить("Бригада не сформирована");
Машина = Справочники.ТранспортныеСредства.ПустаяССылка();
КонецЕсли;
  
КонецПроцедуры
14 Vitev777
 
28.05.19
17:07
Уже вот так сделал один фиг пишет не сформированна бригада:
&НаСервере
Процедура ПодборБригады()
    Запрос = Новый Запрос;
    Запрос.Текст =
     "ВЫБРАТЬ
     |  СоставБригадыСрезПоследних.Водитель КАК Водитель,
     |  СоставБригадыСрезПоследних.Грузчик1 КАК Грузчик1,
     |  СоставБригадыСрезПоследних.Грузчик2 КАК Грузчик2,
     |  СоставБригадыСрезПоследних.Машина КАК Машина,
     |  СоставБригадыСрезПоследних.Период КАК Период
     |ИЗ
     |  РегистрСведений.СоставБригады.СрезПоследних(&Дата, Машина = &Машина) КАК СоставБригадыСрезПоследних
     |ГДЕ
     |  СоставБригадыСрезПоследних.Период = &Дата
     |  И СоставБригадыСрезПоследних.Машина = &Машина
     |  И СоставБригадыСрезПоследних.Период = &ОкончаниеДня";
    
    Дата = НачалоДня(Объект.Дата);    
    ОкончаниеДня = КонецДня(Объект.Дата);
    
    Запрос.УстановитьПараметр("Дата", Дата);  //Отбор по дате
     Запрос.УстановитьПараметр("ОкончаниеДня", ОкончаниеДня);
    Запрос.УстановитьПараметр("Машина", Объект.Машина);    //отбор по машине
     Результат = Запрос.Выполнить();
      ВыборкаДетальныеЗаписи = Результат.Выбрать();
    
Если ВыборкаДетальныеЗаписи.Следующий() Тогда
Объект.Водитель =  ВыборкаДетальныеЗаписи.Водитель;
Объект.Грузчик1 =  ВыборкаДетальныеЗаписи.Грузчик1;
Объект.Грузчик2 =  ВыборкаДетальныеЗаписи.Грузчик2;
КонецЕсли;
  
КонецПроцедуры

&НаКлиенте
Процедура МашинаПриИзменении(Элемент)
      ПодборБригады();
      Если Объект.Водитель.Пустая() = Истина Тогда
          ПоказатьПредупреждение(, "Не сформированна бригада", 10);
          Объект.Машина = "";
      КонецЕсли;
      
      КонецПроцедуры
15 Vitev777
 
28.05.19
17:08
даже на ту машину и дату где сформирована
16 sqr4
 
28.05.19
17:14
Сделай скрин документа и регистра
Основная теорема систематики: Новые системы плодят новые проблемы.