Вход | Регистрация


1С:Предприятие ::

Метки:

Туплю с регистром. Помогите

Я
   Diter
 
09.12.04 - 10:47
Есть регистр "Заявки"
Измерения : Фирма, Товар, Клиент
Ресурс : Количество
Реквизит : Статус
Регист служит для учёта заявок от клиентов. Статус - число, которое меняется в зависимости от состояния заявки (1-записана, 2-проведена, 3-исполнена, 4-отменена). При проведении документа "Заявка" статус=2.
Тип статуса "Число". делаю запрос (нужно отловить все заявки у которых статус=2). Не работает.
текст запроса :
ЗапросПоЗаявкам=СоздатьОбъект("Запрос");
ТекстЗапросаПоЗаявкам="
|Период с ДатаЗапроса по ДатаЗапроса;
|ФирмаВЗапросе=Регистр.Заявки.Фирма;
|Товар=Регистр.Заявки.Товар;   
|Заявлено=Регистр.Заявки.Количество;
|Статус=Регистр.Заявки.Статус;
|Функция ЗаявленоТовара=КонОст(Заявлено);
|Группировка ФирмаВЗапросе без групп;
|Группировка Товар без групп; 
|Условие (Статус=2);
|Условие (СписокТовар.Принадлежит(Товар)=1);";
Если (ПустоеЗначение(Фирма)=1) и (ПоВсемФирмам=0) Тогда
    ТекстЗапросаПоЗаявкам=ТекстЗапросаПоЗаявкам+"
    |Условие (ПустоеЗначение(ФирмаВЗапросе)=1);";
ИначеЕсли (ПустоеЗначение(Фирма)=1) и (ПоВсемФирмам=1) Тогда 
    ТекстЗапросаПоЗаявкам=ТекстЗапросаПоЗаявкам+"
    |Условие (ПустоеЗначение(ФирмаВЗапросе)=0);";
Иначе    
    ТекстЗапросаПоЗаявкам=ТекстЗапросаПоЗаявкам+"
    |Условие (ФирмаВЗапросе=Фирма);";
КонецЕсли;    
ТекстЗапросаПоЗаявкам=ТекстЗапросаПоЗаявкам+"
|Без итогов;";

выдаёт пустую ТЗ. Заявки проведённые есть. Статус в них - 2.
Где туплю?
 
 
   SnarkHunter
 
1 - 09.12.04 - 10:49
По реквизитам остатки не получишь, только движения...
   Diter
 
2 - 09.12.04 - 10:53
(1) А я по ним и не получаю вроде. В функции только ресурс.
   Asmody
 
3 - 09.12.04 - 10:53
что есть в СписокТовар?
   Diter
 
4 - 09.12.04 - 10:54
(+2) забыл сказать - убираю условие по статусу - всё ОК, но естественно хватает и выполненные заявки :(
   Diter
 
5 - 09.12.04 - 10:55
(3) Список товаров, для которых делается запрос. Формируется на основании списка на форме, в котором юзер может выбрать как группы так и конкретные товары.
   MAG
 
6 - 09.12.04 - 10:56
Тип значения реквизита "Статус" число/строка?
   Diter
 
7 - 09.12.04 - 10:57
(6) Число. Длина - 1. Точность - 0.
   ZyXEL
 
8 - 09.12.04 - 11:01
попробуй
Условие (Товар в СписокТовар);
   ZyXEL
 
9 - 09.12.04 - 11:03
Статус <=2 или Статус <3. А движек какой? Какая версия движка..
   Diter
 
10 - 09.12.04 - 11:03
(8) См (4)
 
 
   SnarkHunter
 
11 - 09.12.04 - 11:05
Млин... Ты получаешь остаток и накладываешь условие на реквизит. Это полная бессмыслица, ибо реквизит характеризует движение...

Короче, в сад...
   Diter
 
12 - 09.12.04 - 11:06
(9) Движок 23 Конфа ТиС 8 (Украина)
Ещё. Решил попробовать сделать с помощью конструктора запросов (есть у меня такая обработка). Так вот - при установке группировки по реквизиту "статус" (для вывода в печатную форму) выдаёт везде пустое значение статуса.
   Diter
 
13 - 09.12.04 - 11:07
(11) ОК. Может я и дурак. как сделать?
   SnarkHunter
 
14 - 09.12.04 - 11:16
Введи Статус в измерения и регистр сделай оборотным...
Или суммируй движения с начала веков...
   Diter
 
15 - 09.12.04 - 11:18
(14) Нифига не понял. А как тогда работает регистр "ОстаткиТоваров" с реквизитом "ФлагУчета" и отбором по нему в запросах?
   Diter
 
16 - 09.12.04 - 11:22
(+15) Ты что-то явно недоговариваешь. Или причина не в этом. Вот строки из отчёта по товарам
....
|ФлагУчета=Регистр.ОстаткиТоваров.ФлагУчета;
....
ТекстЗапроса = ТекстЗапроса + "Условие (ФлагУчета <> 1);";
....
   SnarkHunter
 
17 - 09.12.04 - 11:24
И функции в этом запросе какие?
   Diter
 
18 - 09.12.04 - 11:26
|Функция НачКол  = НачОст(Кол);
|Функция КонКол  = КонОст(Кол);
|Функция ПрихКол = Приход(Кол);
|Функция РасхКол = Расход(Кол);
|Условие (Фирма=ВыбФирма);
   SnarkHunter
 
19 - 09.12.04 - 11:30
У тебя в запросе приход или расход есть?
   Diter
 
20 - 09.12.04 - 11:32
О пля. кажись нашёл.
поставил статус<>1 и всё заработало.
ставлю статус=2 и всё умирает.
Кстати сделал запрос по регистру остатков та же фигня
ставлю ФлагУчета=0 (управленческий) - пустая ТЗ
ставлю ФлагУчета<>1 (не бухгалтерский) - есть ТЗ
   Diter
 
21 - 09.12.04 - 11:36
(+20) Да точно оно. Поставил
|Условие ((Статус<>1) и (Статус<>3) и (Статус<>4));
и всё заработало. Интересно, кто то знал о такой фигне?
   SnarkHunter
 
22 - 09.12.04 - 12:16
Что-то новое в 1С...
   Diter
 
23 - 09.12.04 - 12:22
(22) Проверь. Хочешь я тебе обработку кину, которая в режиме 1С предприятия может делать запросы к регистрам? Там я и сделал то, о чём писал в (20) про запрос к регистру "ОстаткиТовара". Скажу сразу - этот конструктор работал всегда без проблем и ошибок не допускал никогда. Мало того, сгенерированный им текст запроса по регистру остатков я кидал в обработку и проверял на корректность - всё ОК. Могу привести текст полность.
   SnarkHunter
 
24 - 09.12.04 - 12:23
Сюда...
   SnarkHunter
 
25 - 09.12.04 - 12:24
Текст тоже давай... Полный...
   Diter
 
26 - 09.12.04 - 12:31
(25) МД кидать?
   SnarkHunter
 
27 - 09.12.04 - 12:36
угу
   Diter
 
28 - 09.12.04 - 12:39
(27) Для дальнейшего общения предлагаю в аську
214741092
   321
 
29 - 09.12.04 - 12:44
Нельзя так каждый завих в мозгу выдавать за глюк 1с...
   Diter
 
30 - 09.12.04 - 12:46
(29) А где я сказал. что это глюк 1С? Может так и быть должно. Просто за всё время работы я ниразу не сталкивался. И понять сущность этого явления хоть убей не могу.
   321
 
31 - 09.12.04 - 12:52
(30) А сколько ты работаешь?
   YF
 
32 - 09.12.04 - 13:13
(21)

все заработало? и выбирает все только со статусом 2?

ведь "2"<>2

я бы попробовал так

Два="2";

Запрос
...
|Условие (Статус=Два);
   YF
 
33 - 09.12.04 - 13:15
+(32)

поправка:
|Условие (СокрЛП(Статус)=Два);
 
  Рекламное место пустует
   SnarkHunter
 
34 - 09.12.04 - 13:19
Я в шоке...
   MAG
 
35 - 09.12.04 - 13:35
обратите внимение на пост 19
   MAG
 
36 - 09.12.04 - 13:35
внимание :)
   Diter
 
37 - 09.12.04 - 13:36
(31) 2,5 года во франче
   Diter
 
38 - 09.12.04 - 13:39
(36) Есть приход и расход тоже. Приход - формирование заявки, расход - её выполнение, разница - невыполненные заявки по товарам
   321
 
39 - 09.12.04 - 14:05
(34) В какую ветку не заглянишь,ты всегда в шоке.Это может плохо кончится...
   JIe)-|-(uK
 
40 - 09.12.04 - 14:09
Чтоб запрос формировался по каждому движению надо добавить
|ТекДок = Регист.Заявки.ТекущийДокумент;
Так попробуй.
   SnarkHunter
 
41 - 09.12.04 - 14:13
Сегодня магнитные бури что ли?
   Diter
 
42 - 09.12.04 - 14:15
Блин теперь отбирает все заявка (со всеми статусами). Ну чего делать то ума не приложу. Как мне отобрать только те товары из регистра, по которым статус=2. Менять можно всё что угодно. Это проект - переделка стандартной ТиС и изменения в структуре регистра не критичны.
   MAG
 
43 - 09.12.04 - 14:17
Добавить в запрос функцию Приход(Количество)
   JIe)-|-(uK
 
44 - 09.12.04 - 14:19
Так вот так то попробовал??
|ТекДок = Регист.Заявки.ТекущийДокумент;
|Статус = регистр.Заявки.Стутус;
|Условие (Стутус = 2);
   SnarkHunter
 
45 - 09.12.04 - 14:22
(44)Прекрати глупости говорить
   SnarkHunter
 
46 - 09.12.04 - 14:22
(42)См. (14)
   Diter
 
47 - 09.12.04 - 14:24
(44) Каким боком текущий документ присобачен к условию по реквизиту регистра?
Повторяю ещё раз - при удалении строки с условием по реквизиту - всё работает. В (21) тоже выбирает данные, но все, без отбора по конкретному значению реквизита. SnarkHunter говорил, что нельзя условие по реквизиту в регистре остатков делать. Тогда вопрос - как мне сделать учёт статуса заявок?
   Де Лопа де Вега
 
48 - 09.12.04 - 14:27
(47) Условие по реквизиту делать можно, иначе на херь он тогда нужен. Просто для того чтобы использовать условие по реквизиту, надо задействовать в запросе, движения регистра. Как это сделать, тебе уже сказали несколько раз!
   JIe)-|-(uK
 
49 - 09.12.04 - 14:28
Текущий документ нужен что бы запрос сделать по таблице регистра в разрезе проводок, т.е. в по каждому движению в отдельности. А когда рассмативается каждое движение в отдельности, тут уже реквизит Статус имеет смысл, так как он задан только для движения. Следовательно фильтр можно сделать.
Попробуй так, я сто раз так делал по реквизиту "КодОперации"
 
  Рекламное место пустует
   JIe)-|-(uK
 
50 - 09.12.04 - 14:29
Текущий документ нужен чтобы запрос сделать по таблице регистра в разрезе проводок, т.е. в по каждому движению в отдельности. А когда рассмативается каждое движение в отдельности, тут уже реквизит Статус имеет смысл, так как он задан только для движения. Следовательно фильтр можно сделать.
Попробуй так, я сто раз так делал по реквизиту "КодОперации"
   JIe)-|-(uK
 
51 - 09.12.04 - 14:31
пардон за два одинаковых сообщения, инет глючит
   Де Лопа де Вега
 
52 - 09.12.04 - 14:31
(50) Да что ты преципился к этому ТекущемуДокументу!
Муйню же поришь откровейнейшую!
   JIe)-|-(uK
 
53 - 09.12.04 - 14:37
Да ладно муйню, возьми да проверь испанец или хотя бы один отчет в ТиС посмотри
где фильтр по Коду операции делается, и познаешь ты истину.
   Diter
 
54 - 09.12.04 - 14:38
(50) Теже яйца только в профиль :(
   Де Лопа де Вега
 
55 - 09.12.04 - 14:39
(53) То есть всё дело в ТекущемДокументе?
Ты мне напоминаешь беднягу Лопеса. Он умер от передозировки!
   Diter
 
56 - 09.12.04 - 14:40
(53) Извените господа, что вмешиваюсь в вашу беседу, но... в ТиС КодОперации - строка, а не число.
   JIe)-|-(uK
 
57 - 09.12.04 - 14:41
:))) Ну фактически да.
   JIe)-|-(uK
 
58 - 09.12.04 - 14:43
Какая разница, стока число, главное хвост.....:))
Смысл один - реквизит присваивается отдельной записи проводки, когда отдельную запись рассматриваешь, тогда определить его можно
   Лошадка в пальто
 
59 - 09.12.04 - 14:44
На самом деле главное, что Гук умнее Дитера...
   Де Лопа де Вега
 
60 - 09.12.04 - 14:44
(58) Это правильно. А ТекущийДокумент здесь при чем?
   JIe)-|-(uK
 
61 - 09.12.04 - 14:49
Да просто 1С 7.7 так устроена что если ты хочешь запрос по записям сделать то надо это указать, или указать какой нить реквизит этого документа движения, например
|Фирма = Регистр.ХХХ.ТекущийДокумент.Фирма;
Кстати это будет работать только если Фирма - общий реквизит для документов
   Де Лопа де Вега
 
62 - 09.12.04 - 14:50
Ну что могу сказать, вся Испания в шоке!
   Diter
 
63 - 09.12.04 - 14:53
(61) Не работает твоя конструкция. Вот код
ЗапросПоЗаявкам=СоздатьОбъект("Запрос");
        ТекстЗапросаПоЗаявкам="
        |Период с ДатаЗапроса по ДатаЗапроса;
        |ФирмаВЗапросе=Регистр.Заявки.Фирма;  
        |ТекДок=Регистр.Заявки.ТекущийДокумент;
        |Товар=Регистр.Заявки.Товар;   
        |Заявлено=Регистр.Заявки.Количество;
        |Статус=Регистр.Заявки.Статус;
        |Функция ЗаявленоТовара=КонОст(Заявлено);
        |Группировка ФирмаВЗапросе без групп;
        |Группировка Товар без групп; 
        |Условие ((Статус<>1) и (Статус<>3) и (Статус<>4));
        |Условие (СписокТовар.Принадлежит(Товар)=1);";
        Если (ПустоеЗначение(Фирма)=1) и (ПоВсемФирмам=0) Тогда
            ТекстЗапросаПоЗаявкам=ТекстЗапросаПоЗаявкам+"
            |Условие (ПустоеЗначение(ФирмаВЗапросе)=1);";
        ИначеЕсли (ПустоеЗначение(Фирма)=1) и (ПоВсемФирмам=1) Тогда 
            ТекстЗапросаПоЗаявкам=ТекстЗапросаПоЗаявкам+"
            |Условие (ПустоеЗначение(ФирмаВЗапросе)=0);";
        Иначе    
            ТекстЗапросаПоЗаявкам=ТекстЗапросаПоЗаявкам+"
            |Условие (ФирмаВЗапросе=Фирма);";
       КонецЕсли;
Привязка строки стоит.
(59) Иди к свадьбе готовся.
   Де Лопа де Вега
 
64 - 09.12.04 - 14:56
Да ну вас в задницу.
Или на самом деле такие тупые оба, или разводят не по детски!
   JIe)-|-(uK
 
65 - 09.12.04 - 15:02
А приход, расход где??
Короче пример взгляни в ТиС, в ТорговомОтчете.
   Diter
 
66 - 09.12.04 - 15:09
(64) Поверь. я разводами не занимаюсь. Реальная фигня в реальной работе.
(65) Мне не нужен приход-расход. Мне нужен остаток товара. Мне чего его, как "приход"-"расход" получать?

Вот как в типовой :

ТекстЗапроса = ТекстЗапроса +
        "//{{ЗАПРОС(ТоварыЗаПериоды)         

        |ПЕРИОД С Дата1 По Дата2;
        |Фирма=Регистр.ОстаткиТоваров.Фирма;
        |Склад=Регистр.ОстаткиТоваров.Склад;
        |ФлагУчета=Регистр.ОстаткиТоваров.ФлагУчета;
        |Товар=Регистр.ОстаткиТоваров.Товар;
        |Док=Регистр.ОстаткиТоваров.ТекущийДокумент;
        |Кол=Регистр.ОстаткиТоваров.ОстатокТовара;
        |Функция НачКол  = НачОст(Кол);
        |Функция КонКол  = КонОст(Кол);
        |Функция ПрихКол = Приход(Кол);
        |Функция РасхКол = Расход(Кол);
        |Условие (Фирма=ВыбФирма);
        |Группировка Товар;
        |//}}ЗАПРОС

        ;

    Если ДеталПоСкладам=1 Тогда
        ТекстЗапроса = ТекстЗапроса + "
        |Группировка Склад упорядочить по Склад.Наименование;";
    КонецЕсли;

    Если ДеталПоДокументам=1 Тогда
        ТекстЗапроса = ТекстЗапроса + "
        |Группировка Док;";
    КонецЕсли;
    
    Заг="";
    Заг1="";                           
    
    глЗаголовокФирма(ВыбФирма,Заг,Язык);
    
    Если ФильтрыИЗаголовкиПоТоварамИСкладам(ТекстЗапроса,Заг,Заг1)=0 Тогда
        Возврат;
    КонецЕсли;    
                            
    Если (ДеталПоСкладам=0)И(ВыбСклад.Выбран()=0)И(МФВыбСклады.РазмерСписка()=0) Тогда
        Заг1=?(Язык="у","Одночасно по всім складам. ","Одновременно по всем складам. ");
        ТекстЗапроса = ТекстЗапроса + "Условие (ФлагУчета <> 1);";
        ПоВсейФирмеВЦелом = 1;
    Иначе
        ПоВсейФирмеВЦелом = 0;
    КонецЕсли;
   Diter
 
67 - 09.12.04 - 15:13
(+66) В моей типовой нет такого отчёта. Этот кусок из отчёта "Остатки товаров". И стоит отбор по условию значения реквизита. Тип реквизита - "строка". Всё работает.
   корум
 
68 - 09.12.04 - 15:27
(67) не тупи!
не нужен тебе приход, ну и х... с ним. не выводи никуда.
А функцию Приход в запрос - ПОСТАВЬ!
   Diter
 
69 - 09.12.04 - 15:33
(68) Пля, ты умный?
Я не могу поставить вместо остатка приход. Это не отразит того чего мне надо.
Кроме того - это ничего не даёт. Код выложить?
   Diter
 
70 - 09.12.04 - 15:35
Мне нужен именно остаток, а его как раз и нет в этом случае. Да, приход=1, но остаток=0 (расходов-выполнения заявок небыло)
   корум
 
71 - 09.12.04 - 15:38
(70) Совсем зациклился? смотри:
     |Функция ЗаявленоТовара=КонОст(Заявлено); 
     |Функция ФиктивнаяДляРаботыУсловияПоРеквизиту=Приход(Заявлено); 
и ВСЁ.
   MAG
 
72 - 09.12.04 - 15:40
Сделай все-таки так: попробуй добавить в запрос функцию приход(количество),
ничего больше не меняя.
И скажи каков результат.
   Де Лопа де Вега
 
73 - 09.12.04 - 15:41
(69) Андрей, поизучай на досуге, откуда 1С берёт остатки, а откуда движения!
Там, откуда она берёт остатки, про движения ни гу гу!
   Diter
 
74 - 09.12.04 - 15:48
Уф блин запутался уже.
Тогда задача :
Заявка - документ, формируемый менеджером по телефону со слов клиента. После в конце дня (если заявки не срочные) заявки обрабатываются - просматриваются и автоматически на основании нужных формируются пакеты документов (заявки поставщикам продукции, расходные документы, налоговые и счета). Заказан отчёт по минимальным остаткам с требованием, чтобы на основании его данных автоматом формировалась заявка поставщику (есть подчинённый справочник "поставщики товара"). Нужно, чтобы при этом формировании учитывалось три цифры : минимальный остатко по товару, остаток на складе и невыполненные заявки по товару.
Заявка создана (движений нет) - 1
Заявка проведена, но не выполнена - 2
Заявка "закрыта" какими либо документами (счета, накладные и т.п.) - 3
Заявка отменена (при этом по желанию юзера отменяются проведения документов-"наследников") - 4

Подскажите как организовать такой учёт на регистрах. Структуру имеющегося привел в (0) там же недостающая здесь инфа.
   корум
 
75 - 09.12.04 - 15:56
(74) Регистр ОстаткиТоваров
состав - какой хочешь.
Плюс регистр Заявки (остатковый).
Измерения - Товар
           Заявка
            СтатусЗаявки
ресурсы   Количество
          Сумма (по желанию)

в запросе обращайся к двум регистрам...
   Diter
 
76 - 09.12.04 - 15:59
(73) я тебя знаю?
   Де Лопа де Вега
 
77 - 09.12.04 - 15:59
(76) Не видел, но знаешь!
   Diter
 
78 - 09.12.04 - 16:09
(75) Почему статус в измерениях а не в ресурсах?
   корум
 
79 - 09.12.04 - 16:13
(78) Потому что! тебе нужен остаток по невыполненным заявкам, однако.
   Diter
 
80 - 09.12.04 - 16:15
(77) Намекни :)
   Diter
 
81 - 09.12.04 - 16:27
(79) И что? Расшифруй мысль. Я не прикалываюсь, а действительно понять не могу.
   корум
 
82 - 09.12.04 - 16:39
почему не измерение:
По измерению нельзя получить остаток.
почему нужен именно остаток?

Дык в отчетах много чего заходят увидеть - а скока у нас по недоделанным заявкам, скока по непроведённым + по проведённым, и т.д.

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

Необходим реквизит ВидДвижения - по нему будешь отслеживать причину прихода/расхода - изменение статуса, проведение закрывающих документов, отказ от заявки.

Ещё - как у непроведённого документа может быть движение в регистре? так что надо просто несколько режимов проведения заявки.
   Diter
 
83 - 09.12.04 - 16:40
Всё получилось. Отдельное спасибо коруму за идею с измерением "статус". Но всё равно непонятно, почему не работает по реквизиту. ну и бог с ним. Всем спасибо огромное.
   Diter
 
84 - 09.12.04 - 16:42
(82) Может ты перепутал? и в (82) нужно вместо "измерение" "реквизит"?
   JIe)-|-(uK
 
85 - 09.12.04 - 16:42
Так а статус заявки присутствует ведь в реквизитах самой завки, или какой нить реквизит заявки дает однозначный ответ о ее статусе??
   Diter
 
86 - 09.12.04 - 16:46
(85) В документе есть реквизит "Статус", который даёт чёткое представление о текущем состоянии заявки. Именно он равен 1 когда заявка не проведена и нет движений по регистру
   JIe)-|-(uK
 
87 - 09.12.04 - 16:47
Ладно, все проехали. Получилось это хорошо. Удачи тебе.
   Diter
 
88 - 09.12.04 - 16:50
СПАСИБО !!!!!!!!!!!!!



Список тем форума
Рекламное место пустует   Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Ветка сдана в архив. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует