helpf.pro
Регистрация

v8: Здрасте! Запросом в консоли выводит всё что нужно, переношу в обработку. упорно

asdfr1
15.07.2014 14:13Прочитано: 4973
Код 1C v 8.х
 "ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ПоступлениеИзделия.СЦ_Состояние.Ссылка,
| РАЗНОСТЬДАТ(ПоступлениеИзделия.Дата, &НачПериода, ДЕНЬ) КАК КолВоДней,
| ПоступлениеИзделия.Дата КАК ДатаПоступления
|ИЗ
| Документ.ПоступлениеИзделия КАК ПоступлениеИзделия
|ГДЕ
| (ПоступлениеИзделия.СЦ_Состояние.Ссылка = &СЦ_СостояниеСсылка5 
| ИЛИ ПоступлениеИзделия.СЦ_Состояние.Ссылка = &СЦ_СостояниеСсылка6)
| И ПоступлениеИзделия.Дата >= &НачалоГода1";
Результат_ВПроцессеРемонта = Запрос5.Выполнить().Выгрузить();
Yandex
Возможно, вас также заинтересует
Реклама на портале
E_Migachev
15.07.2014 14:25Ответ № 1

так что в обработке?

DJ_Serega
15.07.2014 14:36Ответ № 2

(1) консолько, скорее всего выполняется через ПостроитетьЗапросов. А там оно само знает что нужно выводить )

asdfr1
15.07.2014 14:58Ответ № 3

обработка выбирает все документы с начала года, с заданным статусом и считает количество дней для каждого документа начиная с текущей даты. 

asdfr1
15.07.2014 14:59Ответ № 4

ВЫБРАТЬ РАЗРЕШЕННЫЕ

ПоступлениеИзделия.СЦ_Состояние.Ссылка,

РАЗНОСТЬДАТ(ПоступлениеИзделия.Дата, &ТекДата, ДЕНЬ) КАК КолВоДней,

ПоступлениеИзделия.Дата КАК ДатаПоступления

ИЗ

Документ.ПоступлениеИзделия КАК ПоступлениеИзделия

ГДЕ

(ПоступлениеИзделия.СЦ_Состояние.Ссылка = &СЦ_СостояниеСсылка9

ИЛИ ПоступлениеИзделия.СЦ_Состояние.Ссылка = &СЦ_СостояниеСсылка10)

И ПоступлениеИзделия.Дата >= &НачалоГода1 

DJ_Serega
15.07.2014 15:03Ответ № 5

не понял что я имел ввиду в (2) ?

asdfr1
15.07.2014 15:04Ответ № 6

нет

asdfr1
15.07.2014 15:06Ответ № 7

поясни

E_Migachev
15.07.2014 15:14Ответ № 8

покажи полный код обработки

asdfr1
15.07.2014 15:19Ответ № 9

Запрос5 = Новый Запрос;

Запрос5.Текст =

"ВЫБРАТЬ РАЗРЕШЕННЫЕ

|ПоступлениеИзделия.СЦ_Состояние.Ссылка,

|РАЗНОСТЬДАТ(ПоступлениеИзделия.Дата, &НачПериода, ДЕНЬ) КАК КолВоДней,

|ПоступлениеИзделия.Дата КАК ДатаПоступления

|ИЗ

|Документ.ПоступлениеИзделия КАК ПоступлениеИзделия

|ГДЕ

|(ПоступлениеИзделия.СЦ_Состояние.Ссылка = &СЦ_СостояниеСсылка5

|ИЛИ ПоступлениеИзделия.СЦ_Состояние.Ссылка = &СЦ_СостояниеСсылка6)

|И ПоступлениеИзделия.Дата >= &НачалоГода1";

Запрос5.УстановитьПараметр("НачПериода", ТекущаяДата());// '20120101');

Запрос5.УстановитьПараметр("СЦ_СостояниеСсылка5", Перечисления.СЦ_ИзделияНаРемонт_Состояние.ВРаботеУИнженера);

Запрос5.УстановитьПараметр("СЦ_СостояниеСсылка6", Перечисления.СЦ_ИзделияНаРемонт_Состояние.КРемонтуНеПриступили);

Запрос5.УстановитьПараметр("НачалоГода1", НачалоГода(ТекущаяДата()));

F1 = 0 ; // колво до месяца

F2 = 0 ; // колво свыше месяца

Результат_ВПроцессеРемонта = Запрос5.Выполнить().Выгрузить();

ОткрытьЗначение(Результат_ВПроцессеРемонта);

Для Каждого Строчка1 ИЗ Результат_ВПроцессеРемонта Цикл

//Сообщить(Строчка1.ДатаПоступления);

Если Строчка1.КолВоДней <= 29 Тогда

F1 = F1+1;

Сообщить(СТРОКА(Строчка1.ДатаПоступления)+"менее 29 "+" КолВо дней "+СТРОКА(Строчка1.КолВоДней));

ИначеЕсли Строчка1.КолВоДней >= 29 Тогда

F2 = F2+1;

//Сообщить(СТРОКА(Строчка1.ДатаПоступления)+"более 29 "+" КолВо дней "+СТРОКА(Строчка1.КолВоДней));

КонецЕсли;

КонецЦикла;

asdfr1
15.07.2014 15:21Ответ № 10

догадываюсь, из-за синонима в перечислениях

asdfr1
15.07.2014 15:40Ответ № 11

проверил через функцию: в результате ничего не выбирает

Код 1C v 8.х
 Функция обИмяПеречисления(Ссылка) Экспорт
    
Если НЕ (Ссылка = Неопределено) Then
Иначе
ИмяПеречисления = Ссылка.Метаданные().Имя;
Индекс = Перечисления[ИмяПеречисления].Индекс(Ссылка);
Возврат Метаданные.Перечисления[ИмяПеречисления].ЗначенияПеречисления[Индекс].Имя;


EndIf;


//Возврат Метаданные.Перечисления[ИмяПеречисления].ЗначенияПеречисления[Индекс].Имя;


КонецФункции 
DJ_Serega
15.07.2014 15:58Ответ № 12

(6) и (7). Обычно, консоли запросов выполняют твой запрос через ПостроительЗапросов. Это не просто Запрос.Выполнить().Выгрузить(). Там еще проходят механизмы улучшения результата ) Как-то так )

Не раз было на практике что управляемая консоль показывала один результат а Запрос.Выполнит().Выгрузить() совсем другое.

В этом может быть проблема.

E_Migachev
15.07.2014 16:26Ответ № 13

запрос всегда должен выдавать одно, без разницы где он выполняется - вся разница может быть только от устанавливаемых параметров

asdfr1
15.07.2014 16:29Ответ № 14

вот упорно и ловлю эту разницу параметров, подскажите Дата как то различается в запросе и консоле

asdfr1
15.07.2014 16:34Ответ № 15

Утро вечера мудреней! Всем спасибо!

E_Migachev
15.07.2014 16:43Ответ № 16

дата может различаться временем / начало и конец дня/

asdfr1
16.07.2014 15:28Ответ № 17

Здравствуйте!

Сделал параметры через список значений - результат тот же, выводит не то 

Как начинающему, поясните: может ли порядок в перечислениях изменится?

Код 1C v 8.х
 Список2 = Новый СписокЗначений;
   Список2.Добавить(2);
   Список2.Добавить(1);
    Запрос5 = Новый Запрос;
    Запрос5.Текст = 
"ВЫБРАТЬ 
| ПоступлениеИзделия.СЦ_Состояние.Ссылка,
| РАЗНОСТЬДАТ(ПоступлениеИзделия.Дата, &ТекДата, ДЕНЬ) КАК КолВоДней,
| ПоступлениеИзделия.Дата КАК ДатаПоступления,
| ПоступлениеИзделия.Ссылка
|ИЗ
| Документ.ПоступлениеИзделия КАК ПоступлениеИзделия
|ГДЕ
| ПоступлениеИзделия.Дата >= &НачалоГода1 
| И ПоступлениеИзделия.СЦ_Состояние.Порядок В (&Список2)";
    Запрос5.УстановитьПараметр("Список2",Список2);  
    Запрос5.УстановитьПараметр("НачалоГода1", НачалоГода(ТекущаяДата()));
    Запрос5.УстановитьПараметр("ТекДата", ТекущаяДата());
asdfr1
17.07.2014 07:54Ответ № 18
Вопрос закрыт!
E_Migachev
17.07.2014 14:13Ответ № 19

у тебя всегда будет разный результат! так как всегда разная дата:

Запрос5.УстановитьПараметр("ТекДата", ТекущаяДата());[/pre]
asdfr1
17.07.2014 16:38Ответ № 20

хм, спасибо, уже исправил на НачПериода

в учебнике рекомендуется передавать параметры через массив  - в таком варианте значения отличались

ПоступлениеИзделия.СЦ_Состояние.Ссылка, а вот с ПоступлениеИзделия.СЦ_Состояние.Порядок количество совпадает и с консолью и с таблицейЗначений из обработки

Вобщем, работает и ладно

ещё раз всем спасибо

Подсказка: Щелникни по Имени пользователя напротив ответа, и тем самым покажешь, что сообщение адресовано ему.
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.