Имя: Пароль:
1C
1С v8
маленький запрос
0 dron4ikkk
 
07.06.13
08:34
всем привет! проблема в том, что запрос в одном поле выводит пустоту..
это поле касячное  - item.статус = Строка(Результат.Поле1);
ДатаОтчета = ТекущаяДата();
   dataType = ФабрикаXDTO.Тип("http://www.sample-package.org", "Getalldata");    
   rowType = ФабрикаXDTO.Тип("http://www.sample-package.org", "Getallrow");    
   data = ФабрикаXDTO.Создать(dataType);
   

Запрос = Новый Запрос;
   Запрос.Текст =        "ВЫБРАТЬ
   |
   | РаботникиОрганизацийСрезПоследних.Должность.Наименование КАК Долж,
   | РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации.Наименование КАК Подразд,
   | РаботникиОрганизацийСрезПоследних.Сотрудник.Наименование КАК ФИО,
   |      ВЫБОР
   |        КОГДА СостояниеРаботниковОрганизацийСрезПоследних.ПериодЗавершения >= &ДатаОтчета
   |                ИЛИ СостояниеРаботниковОрганизацийСрезПоследних.ПериодЗавершения = &НулеваяДата
   |            ТОГДА СостояниеРаботниковОрганизацийСрезПоследних.Состояние
   |        ИНАЧЕ СостояниеРаботниковОрганизацийСрезПоследних.СостояниеЗавершения
   |    КОНЕЦ КАК Поле1,
   |    РаботникиОрганизацийСрезПоследних.Сотрудник
   |ИЗ
   |    РегистрСведений.РаботникиОрганизаций.СрезПоследних(&ДатаОтчета) КАК РаботникиОрганизацийСрезПоследних
   |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостояниеРаботниковОрганизаций.СрезПоследних(&ДатаОтчета) КАК СостояниеРаботниковОрганизацийСрезПоследних
   |        ПО (СостояниеРаботниковОрганизацийСрезПоследних.Сотрудник = РаботникиОрганизацийСрезПоследних.Сотрудник)";
   
   Запрос.УстановитьПараметр("ДатаОтчета", ДатаОтчета);
   Запрос.УстановитьПараметр("НулеваяДата", '00010101');

   Результат = Запрос.Выполнить().Выбрать();
     
   Пока Результат.Следующий() Цикл
       item = фабрикаXDTO.Создать(rowType);
       item.fio = Строка(Результат.ФИО);
       item.dolgnost = Строка(Результат.Долж);
       item.podrazdelenie = Строка(Результат.Подразд);
       item.статус = Строка(Результат.Поле1);
       
       data.items.Добавить(item);
       
   КонецЦикла;

возврат data
1 vicof
 
07.06.13
08:37
я угадаю, в каком поле, с 4 нот
2 dron4ikkk
 
07.06.13
08:37
вот тут пустота: Строка(Результат.Поле1);
3 Defender aka LINN
 
07.06.13
08:38
Это печально ©
4 shuhard
 
07.06.13
08:42
(0) OFF: можно ли написать игру типа дума 3 на 1c 8.3?
а как круто всё начиналось
5 dron4ikkk
 
07.06.13
08:43
shuhard? это другая тема балбес
6 andreymongol82
 
07.06.13
08:48
(5) То есть они никак не взаимосвязаны? Даже косвенно?
7 dron4ikkk
 
07.06.13
08:55
ни как не связаны.
8 Defender aka LINN
 
07.06.13
08:59
(7) Даже аффтаром?
9 shuhard
 
07.06.13
09:04
(8) =)
10 Серго62
 
07.06.13
09:52
Попорбуй вместо:
ВЫБОР
   |        КОГДА СостояниеРаботниковОрганизацийСрезПоследних.ПериодЗавершения >= &ДатаОтчета
   |                ИЛИ СостояниеРаботниковОрганизацийСрезПоследних.ПериодЗавершения = &НулеваяДата
   |            ТОГДА СостояниеРаботниковОрганизацийСрезПоследних.Состояние
   |        ИНАЧЕ СостояниеРаботниковОрганизацийСрезПоследних.СостояниеЗавершения
   |    КОНЕЦ КАК Поле1,

вывести по отдельности поля:
СостояниеРаботниковОрганизацийСрезПоследних.Состояние
и
СостояниеРаботниковОрганизацийСрезПоследних.СостояниеЗавершения

и посмотри что возвращает запрос.
11 dron4ikkk
 
07.06.13
10:04
это как мне модифицировать запрос? так чтоли:

ВЫБОР

СостояниеРаботниковОрганизацийСрезПоследних.Состояние
СостояниеРаботниковОрганизацийСрезПоследних.СостояниеЗавершения
12 Серго62
 
07.06.13
10:05
(11) да
13 RomaH
 
naïve
07.06.13
10:17
СостояниеРаботниковОрганизацийСрезПоследних не всегда есть, однако
14 RomaH
 
naïve
07.06.13
10:17
если состояния нет - то работает
15 rs_trade
 
07.06.13
10:18
Пустота, это новый тип в 8.3?
16 salvator
 
07.06.13
10:20
(11) И поле ПериодЗавершения еще выведи, так сказать, для полноты картины.
17 dron4ikkk
 
07.06.13
10:31
Запрос.Текст =        "ВЫБРАТЬ
   |
   | РаботникиОрганизацийСрезПоследних.Должность.Наименование КАК Долж,
   | РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации.Наименование КАК Подразд,
   | РаботникиОрганизацийСрезПоследних.Сотрудник.Наименование КАК ФИО,
   |      ВЫБОР
   |  ТОГДА КОГДА СостояниеРаботниковОрганизацийСрезПоследних.Состояние,
   |    СостояниеРаботниковОрганизацийСрезПоследних.СостояниеЗавершения";


вот ошибка какая {Обработка.Обработка2.Форма.Отчет.Форма(151)}: Ошибка при вызове метода контекста (Выполнить)
   Результат = Запрос.Выполнить().Выбрать();
по причине:
{(7, 3)}: Синтаксическая ошибка "ТОГДА"
<<?>>ТОГДА КОГДА СостояниеРаботниковОрганизацийСрезПосл
18 andreymongol82
 
07.06.13
10:32
Такими темпами дум3 напишешь лет так через 50
19 dron4ikkk
 
07.06.13
10:34
еще один невтемщик
20 piter3
 
07.06.13
10:34
к (17) может конструктор использовать проще
21 1Сергей
 
07.06.13
10:35
(15) Неопределено, NULL, ПустаяСсылка. А теперь ещё и пустота. Афигеть! Спаси меня Чапай
22 andreymongol82
 
07.06.13
10:41
" ВЫБОР
   |  ТОГДА КОГДА СостояниеРаботниковОрганизацийСрезПоследних.Состояние,
   |    Состояние"
Вот здесь после выбора - выбор из чего? Какое условие?
23 dron4ikkk
 
07.06.13
10:48
вот такой запрос у меня был..который ничего не возвращал:

ВЫБОР
   |        КОГДА СостояниеРаботниковОрганизаций.СрезПоследних.ПериодЗавершения >= &ДатаОтчета
   |                ИЛИ СостояниеРаботниковОрганизаций.СрезПоследних.ПериодЗавершения = &НулеваяДата
   |            ТОГДА СостояниеРаботниковОрганизаций.СрезПоследних.Состояние
   |        ИНАЧЕ СостояниеРаботниковОрганизацийСрезПоследних.СостояниеЗавершения
   |    КОНЕЦ КАК Поле1,
   |    РаботникиОрганизацийСрезПоследних.Сотрудник
   |ИЗ
   |    РегистрСведений.РаботникиОрганизаций.СрезПоследних(&ДатаОтчета) КАК РаботникиОрганизацийСрезПоследних
   |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостояниеРаботниковОрганизаций.СрезПоследних(&ДатаОтчета) КАК СостояниеРаботниковОрганизацийСрезПоследних
   |        ПО (СостояниеРаботниковОрганизацийСрезПоследних.Сотрудник = РаботникиОрганизацийСрезПоследних.Сотрудник)";


предложили такой вариант:

СостояниеРаботниковОрганизацийСрезПоследних.Состояние
и
СостояниеРаботниковОрганизацийСрезПоследних.СостояниеЗавершения
24 salvator
 
07.06.13
10:49
(23) И? В голове ПУСТОТА?
25 Серго62
 
07.06.13
10:50
вот это сотри:
|      ВЫБОР
   |  ТОГДА КОГДА
тогда взлетит
26 dron4ikkk
 
07.06.13
11:01
сделал так:

Запрос.Текст =        "ВЫБРАТЬ
   |
   | РаботникиОрганизацийСрезПоследних.Должность.Наименование КАК Долж,
   | РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации.Наименование КАК Подразд,
   | РаботникиОрганизацийСрезПоследних.Сотрудник.Наименование КАК ФИО,
   |     ИЗ
   | РегистрСведений.РаботникиОрганизаций.СрезПоследних КАК РаботникиОрганизацийСрезПоследних,
   |    СостояниеРаботниковОрганизацийСрезПоследних.Состояние КАК ст,
   |    СостояниеРаботниковОрганизацийСрезПоследних.СостояниеЗавершения";
27 dron4ikkk
 
07.06.13
11:01
но ошибка:

{Обработка.Обработка2.Форма.Отчет.Форма(152)}: Ошибка при вызове метода контекста (Выполнить)
   Результат = Запрос.Выполнить().Выбрать();
по причине:
{(6, 6)}: Синтаксическая ошибка "ИЗ"
<<?>>ИЗ
28 andreymongol82
 
07.06.13
11:04
(27)  КАК ФИО, запятую сотри
29 ИсчадиеADO
 
07.06.13
11:07
мухаха
в зупе стандартный оборот

ВЫБОР КОГДА НЕ КадроваяИсторияСрезПоследних.ПериодЗавершения ЕСТЬ NULL И КадроваяИсторияСрезПоследних.ПериодЗавершения <= &ДатаОтчета ТОГДА КадроваяИсторияСрезПоследних.СостояниеЗавершения ИНАЧЕ КадроваяИсторияСрезПоследних.Состояние КОНЕЦ

пора б уже запомнить
30 ИсчадиеADO
 
07.06.13
11:12
тьфу пля, не null, а проверка на пустую дату, ес-но, чет меня заглючило

ВЫБОР КОГДА КадроваяИсторияСрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1,1,1) И КадроваяИсторияСрезПоследних.ПериодЗавершения <= &ДатаОтчета ТОГДА КадроваяИсторияСрезПоследних.СостояниеЗавершения ИНАЧЕ КадроваяИсторияСрезПоследних.Состояние КОНЕЦ
31 dron4ikkk
 
07.06.13
11:12
сделал так...но выдает ошибку:


{Обработка.Обработка2.Форма.Отчет.Форма(153)}: Ошибка при вызове метода контекста (Выполнить)
   Результат = Запрос.Выполнить().Выбрать();
по причине:
{(10, 6)}: Синтаксическая ошибка "ИЗ"
<<?>>ИЗ




"ВЫБРАТЬ
   |
   | РаботникиОрганизацийСрезПоследних.Должность.Наименование КАК Долж,
   | РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации.Наименование КАК Подразд,
   | РаботникиОрганизацийСрезПоследних.Сотрудник.Наименование КАК ФИО
   |     ИЗ
   | РегистрСведений.РаботникиОрганизаций.СрезПоследних КАК РаботникиОрганизацийСрезПоследних,
   |    СостояниеРаботниковОрганизацийСрезПоследних.Состояние КАК ст,
   |    СостояниеРаботниковОрганизацийСрезПоследних.СостояниеЗавершения
   |     ИЗ
   |  РегистрСведений.СостояниеРаботниковОрганизацийСрезПоследних КАК  СостояниеРаботниковОрганизацийСрезПоследних";
32 ИсчадиеADO
 
07.06.13
11:15
(31) ты сам то читал, чаво написал? :)
33 andreymongol82
 
07.06.13
11:18
(31) так, вот тебе для начала
Книга знаний: v8: Язык запросов 8.0. Пока не прочтешь - не берись за запросы.
34 hhhh
 
07.06.13
11:18
(31) пятничный вопрос: почему-то везде пишешь Наименование, Должность.Наименование, Сотрудник.Наименование и так далее, а Состояние просто по-лоховски лепишь, без наименования?
35 ИсчадиеADO
 
07.06.13
11:20
(34) не, там перечисление емнип, соображает немного :)
36 Trainee
 
07.06.13
11:23
Попробую прервать веселье, напиши ЕСТЬNULL(СостояниеРаботниковОрганизацийСрезПоследних.Состояние, "") и для второго в своем запросе.
37 salvator
 
07.06.13
11:24
(36) Не взлетит. Ему надо запрос целиком скидывать.
38 dron4ikkk
 
07.06.13
11:28
(37) да не взлетит мне нужен целиком запрос..
39 salvator
 
07.06.13
11:28
(38) 1000 руб
40 ИсчадиеADO
 
07.06.13
11:30
(39) 999 :)
41 ИсчадиеADO
 
07.06.13
11:30
каждому :)
42 Серго62
 
07.06.13
11:42
Запрос.Текст =         "ВЫБРАТЬ
   |
   | РаботникиОрганизацийСрезПоследних.Должность.Наименование КАК Долж,
   | РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации.Наименование КАК Подразд,
   | РаботникиОрганизацийСрезПоследних.Сотрудник.Наименование КАК ФИО
   |     ИЗ
   | РегистрСведений.РаботникиОрганизаций.СрезПоследних КАК РаботникиОрганизацийСрезПоследних,
   |    СостояниеРаботниковОрганизацийСрезПоследних.Состояние КАК ст,
   |    СостояниеРаботниковОрганизацийСрезПоследних.СостояниеЗавершения";

Если и так не взлетит, то все иди писать doom...
43 salvator
 
07.06.13
11:44
(42) Вы одну траву курите с ТС?
44 Серго62
 
07.06.13
11:46
(43) Да не это я че-то погорячился, не дочитал до конца, думал там просто запятая лишняя после ФИО
45 dron4ikkk
 
07.06.13
11:46
(42), я же так делал писал тут (26)
46 Серго62
 
07.06.13
11:52
Попробуй вот так:

   Запрос.Текст =         "ВЫБРАТЬ
   |
   | РаботникиОрганизацийСрезПоследних.Должность.Наименование КАК Долж,
   | РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации.Наименование КАК Подразд,
   | РаботникиОрганизацийСрезПоследних.Сотрудник.Наименование КАК ФИО,
   | СостояниеРаботниковОрганизацийСрезПоследних.Состояние,
   | СостояниеРаботниковОрганизацийСрезПоследних.СостояниеЗавершения,
   |    РаботникиОрганизацийСрезПоследних.Сотрудник
   |ИЗ
   |    РегистрСведений.РаботникиОрганизаций.СрезПоследних(&ДатаОтчета) КАК РаботникиОрганизацийСрезПоследних
   |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостояниеРаботниковОрганизаций.СрезПоследних(&ДатаОтчета) КАК СостояниеРаботниковОрганизацийСрезПоследних
   |        ПО (СостояниеРаботниковОрганизацийСрезПоследних.Сотрудник = РаботникиОрганизацийСрезПоследних.Сотрудник)";

и посмотри что попадает в
СостояниеРаботниковОрганизацийСрезПоследних.Состояние
и
СостояниеРаботниковОрганизацийСрезПоследних.СостояниеЗавершения
47 dron4ikkk
 
07.06.13
12:04
Запрос.Текст =         "ВЫБРАТЬ
   |
   | РаботникиОрганизацийСрезПоследних.Должность.Наименование КАК Долж,
   | РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации.Наименование КАК Подразд,
   | РаботникиОрганизацийСрезПоследних.Сотрудник.Наименование КАК ФИО,
   | СостояниеРаботниковОрганизацийСрезПоследних.Состояние КАК Ст,
   | СостояниеРаботниковОрганизацийСрезПоследних.СостояниеЗавершения,
   |    РаботникиОрганизацийСрезПоследних.Сотрудник
   |ИЗ
   |    РегистрСведений.РаботникиОрганизаций.СрезПоследних(&ДатаОтчета) КАК РаботникиОрганизацийСрезПоследних
   |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостояниеРаботниковОрганизаций.СрезПоследних(&ДатаОтчета) КАК СостояниеРаботниковОрганизацийСрезПоследних
   |        ПО (СостояниеРаботниковОрганизацийСрезПоследних.Сотрудник = РаботникиОрганизацийСрезПоследних.Сотрудник)";
   
   
   
   
   
   
   
   
   
   Запрос.УстановитьПараметр("ДатаОтчета", ДатаОтчета);
   Запрос.УстановитьПараметр("НулеваяДата", '00010101');
   


   Результат = Запрос.Выполнить().Выбрать();
     
   Пока Результат.Следующий() Цикл
       item = фабрикаXDTO.Создать(rowType);
       item.fio = Строка(Результат.ФИО);
       item.dolgnost = Строка(Результат.Долж);
       item.podrazdelenie = Строка(Результат.Подразд);
       item.status = Строка(Результат.Ст);
       data.items.Добавить(item);


в цикле постави точку останова чтоб глянуть что возвращает..но там ничего не показывает..а в остальных вернее в этих

item = фабрикаXDTO.Создать(rowType);
       item.fio = Строка(Результат.ФИО);
       item.dolgnost = Строка(Результат.Долж);
       item.podrazdelenie = Строка(Результат.Подразд);


данные есть
48 salvator
 
07.06.13
12:11
(47) Ну значит нет данных по состоянию.
49 hhhh
 
07.06.13
12:16
(47) покажи нам скрин регистра сведений, где это состояние
50 Серго62
 
07.06.13
12:17
(47) Ну тогда смотри в регистр СостояниеРаботниковОрганизаций, есть там вообще что-нибудь в "Состоянии" или нет. Если ничего нет - разбирайся почему нет и вообще должно ли там что-то быть.