Добрый день форумчане
1С:Предприятие 8.3 (8.3.17.1549)
Управління невеликою фірмою для України, редакція 1.6 (1.6.9.1)
общий модуль самописный
подскажите что то не выходит
ситуация такая при проведении задания на работу(у каждой работы есть свой признак это верстка и доставка) с состоянием завершено проставляется состояние заказ наряда - допустим выполнена доставка или выполнена верстка
все отрабатывает отлично
но когда понадобилось прикрутить такую штуку при приведении задания на работу он проверяет - если все работы с состояние завершено - в заказ наряде должно стать "заказ готов"
Выборка не отрабатывает правильно - возвращает одно значение, хотя в консоли делаешь выборку все норм
что то подзапутался
Процедура УстановитьСостояниеЗаказНарядаПриЗаписи(Источник, Отказ) Экспорт
Если Источник.Состояние = Справочники.СостоянияСобытий.НайтиПоНаименованию ("Завершено") тогда
СписокЗаказов = Новый СписокЗначений;
Для Каждого СтрокаТЧ Из Источник.Работы Цикл
Если ЗначениеЗаполнено(СтрокаТЧ.Заказчик) Тогда
Если СписокЗаказов.НайтиПоЗначению(СтрокаТЧ.Заказчик) = Неопределено Тогда
СписокЗаказов.Добавить(СтрокаТЧ.Заказчик);
Если Не ПроверитьЗаказЗавершено(СтрокаТЧ.Заказчик) Тогда
УстановитьСтатусЗавершено(СтрокаТЧ.Заказчик,СтрокаТЧ.Операция, Источник.ТТН);
Иначе
УстановитьСтатусЗавершено(СтрокаТЧ.Заказчик,"Завершено",Источник.ТТН);
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Функция ПроверитьЗаказЗавершено(ЗаказСсылка)
Запрос = Новый Запрос(
"ВЫБРАТЬ
| МИНИМУМ(ВЫБОР
| КОГДА ЗаданиеНаРаботуРаботы.Ссылка.Состояние <> ЗНАЧЕНИЕ(Справочник.СостоянияСобытий.Завершено)
| ТОГДА 0
| ИНАЧЕ 1
| КОНЕЦ) КАК Сумма,
| ЗаданиеНаРаботуРаботы.Заказчик КАК Заказчик
|ИЗ
| Документ.ЗаданиеНаРаботу.Работы КАК ЗаданиеНаРаботуРаботы
|ГДЕ
| ЗаданиеНаРаботуРаботы.Заказчик = &Заказ
| И ЗаданиеНаРаботуРаботы.Ссылка.Проведен
| И (ЗаданиеНаРаботуРаботы.Операция = ""Верстка""
| ИЛИ ЗаданиеНаРаботуРаботы.Операция = ""Доставка"")
|
|СГРУППИРОВАТЬ ПО
| ЗаданиеНаРаботуРаботы.Заказчик");
Запрос.УстановитьПараметр("Заказ",ЗаказСсылка);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Сумма = 1 Тогда
Возврат Истина;
Иначе
Возврат Ложь;
КонецЕсли;
КонецФункции