Имя: Пароль:
1C
1С v8
v8: Есть проблема при получении данных запроса (на самом деле - про убогий intellisence 1с8)
0 memogolik
 
19.01.12
10:03
Процедура КнопкаВыполнитьНажатие(Кнопка)
   // Вставить содержимое обработчика.
    Макет = ПолучитьМакет("Макет");
    ТабДок=ЭлементыФормы.ТабДок;
    ОблШапка = Макет.ПолучитьОбласть("Шапка");
    ОблСтрока = Макет.ПолучитьОбласть("Строка");
    ТабДок.Вывести(ОблШапка);
   
    Запрос = Новый Запрос();
    Запрос.Текст = "
       |ВЫБРАТЬ
       |    Номенклатура, Ссылка, Регистратор, Коэффициент, Цена, Цена1
       |ИЗ
       |(ВЫБРАТЬ
       |      *
       |ИЗ
       |    Документ.ПоступлениеТоваровУслуг.Товары КАК Док
       |ЛЕВОЕ СОЕДИНЕНИЕ
       |    РегистрСведений.ЦеныНоменклатурыКонтрагентов КАК  Цены
       |ПО
       |    Док.Номенклатура = Цены.Номенклатура и Док.Цена<>Цены.Цена
       |) КАК ВложЗапрос
       |УПОРЯДОЧИТЬ ПО
       |    Номенклатура, Ссылка.Дата, Регистратор.Дата
       |";
   Выборка = Запрос.Выполнить().Выбрать();
   Пока Выборка.Следующий() Цикл
       ОблСтрока.Параметры.Номенклатура = Выборка.Номенклатура;
       ОблСтрока.Параметры.Ссылка = Выборка.Ссылка;
       ОблСтрока.Параметры.Регистратор = Выборка.Регистратор;
       ОблСтрока.Параметры.Цена = Выборка.Цена;
       ОблСтрока.Параметры.Цена1 = Выборка.Цена1;
       ОблСтрока.Параметры.Коэффициент = Выборка.Коэффициент;
       
       ТабДок.Вывести(ОблСтрока);
   КонецЦикла;
КонецПроцедуры

Но почему то в выборке после точки данные на передаются. Т.е. когда я печатаю Выборка.  то там нет ни "Номенклатуры ни регистратора ни цены". Есть "Группировка(), Следующий(), Количество()".
Заранее спасибо за ответ.
1 Fragster
 
гуру
19.01.12
10:06
телепат в снеговике - УГ. можешь попробовать погуглить "снегопат"
2 Wobland
 
19.01.12
10:07
получение данных запроса тут при чём?
3 Maxus43
 
19.01.12
10:09
нормально это. в будущем может добавят это, телепат в 8-ке тоже развивается. Щас например Тип("ДокументСсылка...") - уже помогает набирает, в 8.1 писали руками всё.
4 memogolik
 
19.01.12
10:09
{Форма.Форма.Форма(29)}: Поле объекта не обнаружено (Номенклатура)
       ОблСтрока.Параметры.Номенклатура = Выборка.Номенклатура;
Прошу прощение - вот код ошибки )
5 xarann
 
19.01.12
10:09
Все нормально. Это "by design" :)
6 Wobland
 
19.01.12
10:10
(4) неужели поля нет?
7 Maxus43
 
19.01.12
10:10
(4) отладчиком пользуйся, после Выборка.Следующий() покажет что у тебя в выборке
8 Wobland
 
19.01.12
10:11
(7) да у него в ВЫБРАТЬ только цена
9 Wobland
 
19.01.12
10:11
(8) пардоньте, не разглядел. тогда поля нет у области
10 Wobland
 
19.01.12
10:11
пля, что за запрос?
11 xarann
 
19.01.12
10:11
ОблСтрока.Параметры.Номенклатура - Может эта номенклатура не найдена?
12 Wobland
 
19.01.12
10:12
автор, конструктор возьми в руки
13 1с-кин
 
19.01.12
10:12
(3) что, серьезно??
как посмотреть сие чудо?
14 memogolik
 
19.01.12
10:12
в консоле запросов он отрабатывает нормально
15 Wobland
 
19.01.12
10:13
(14) а в консоли?
16 1с-кин
 
19.01.12
10:14
(15) да у него мешаются реквизиты Формы и переменные запроса...
17 xarann
 
19.01.12
10:14
(14) Перепиши без вложенных запросов, через временные таблицы, не выбирай в запросах * это раздувает выборку. Что такое ОблСтрока.Параметры?
18 Maxus43
 
19.01.12
10:14
(13) в 8.2.14 точно есть, набирай ТИП(" - далее включит телепата 1с
19 Fragster
 
гуру
19.01.12
10:14
(14) см. (11)
20 1с-кин
 
19.01.12
10:15
Называть "номенклатурой" Номенклатуру можно в 1с только объекты, а не переменные....
21 1с-кин
 
19.01.12
10:15
(18) че т я прям загорелся...
а еще что есть такого? недокументированного? :))
22 xarann
 
19.01.12
10:16
В макете у секции строки есть параметр Номенклатура?
23 Maxus43
 
19.01.12
10:19
(21) да хз даже, всё не проверить) суть в том что наращиваются потихоньку возможности встроенного телепата
24 memogolik
 
19.01.12
10:19
(22)название переменных в макете полностью совпадает с названием переменных в запросе
Номенлатура    Ссылка    Регистратор    Цена    Цена1    Коэффициент
25 1с-кин
 
19.01.12
10:20
(18) ух ты, эт надо ж, полторы тысячи релизов ждали и - как они только сумели такое?
это ж ведь в текстовой строке :))
26 memogolik
 
19.01.12
10:20
(17) Передаю параметр в секцию макета
27 Maxus43
 
19.01.12
10:21
(24) отладчик то запустиш в конце концов?
28 1с-кин
 
19.01.12
10:21
(24) отладчик - и разберитесь сначала, какой Номенклатуры нет.
Ругается на Номенклатура на Форме - значит, подцепляется к реквизитам формы.
29 hhhh
 
19.01.12
10:24
(26) ну вот же

   Пока Выборка.Следующий() Цикл
       ОблСтрока.Параметры.Заполнить(Выборка);
       ТабДок.Вывести(ОблСтрока);
   КонецЦикла;

зачем вы размахади на 10 строчек?
30 memogolik
 
19.01.12
10:27
(29) я так и делал, после ошибки стал параноить..
(27) в отладчике на строке
  ОблСтрока.Параметры.Номенклатура = Выборка.Номенклатура;
самое интересное он значение Выборка.Номенклатура правильно высчитывает.
Наверно реально дело в именах переменных? )
31 1с-кин
 
19.01.12
10:29
(30) нет, случайное совпадение Номенклатура у вас и Номенклатура (какой-то реквизит) ничтожны :)))
Выборка у вас правильна, ругается на что-то на форме - измените название переменных, наконец.
32 1с-кин
 
19.01.12
10:30
+ вероятно, параметр макета и реквизит формы - оба Номенклатура?
33 Maxus43
 
19.01.12
10:30
ОблСтрока.Параметры.Номенклатура - вот это в отладчике что? видимо ничто
34 Feanor
 
19.01.12
10:31
(30) или у "ОблСтрока.Параметры", или у "Выборка" нет свойства "Номенклатура", скорее у области макета. Смотри макет внимательно.
(31) бред
(32) бред
35 Feanor
 
19.01.12
10:32
+(34) проверь правильность написания параметра "Номенклатура" в макете, мб буквой ошибся
36 memogolik
 
19.01.12
10:32
Заменил цикл на

Пока Выборка.Следующий() Цикл
       ОблСтрока.Параметры.Заполнить(Выборка);
       ТабДок.Вывести(ОблСтрока);
КонецЦикла;

Стал выдавать что то...
Но нет номенлктуры и регистратора...
Номенлатура    Поступление    УстановкаЦен    Цена из документы    Цена из справочника    Коэффициент
              Поступление товаров и услуг БОЛ00000001 от 05.01.2012 12:19:25        330,55        12
37 memogolik
 
19.01.12
10:34
(35) +100500 к телепатизму!!! )
38 memogolik
 
19.01.12
10:35
а вот для Регистратора почему то не прокатило...
написание проверил... это колонку в макете не печатается почему то(
39 memogolik
 
19.01.12
10:37
также как и для параметр "Цена1"...
40 Feanor
 
19.01.12
10:37
(38) в запросе явно укажи поля вместо "*"
41 memogolik
 
19.01.12
10:42
Всем спасибо...  просто в самом запросе эти колонки пустые были (база тестовая была).
42 xarann
 
19.01.12
10:45
"Ну и дай то Бог!" :)
43 xarann
 
19.01.12
10:46
А запрос все-таки перепиши нормально ;)
44 memogolik
 
19.01.12
11:20
А вот можно еще вопросик по запросу ....
Запрос.Текст = "
       |ВЫБРАТЬ
       |    Номенклатура, Ссылка, Регистратор, Коэффициент, Цена, Цена1
       |ИЗ
       |(ВЫБРАТЬ
       |       *
       |ИЗ
       |    Документ.ПоступлениеТоваровУслуг.Товары КАК Док
       |ЛЕВОЕ СОЕДИНЕНИЕ
       |    РегистрСведений.ЦеныНоменклатурыКонтрагентов КАК  Цены
       |ПО
       |    Док.Номенклатура = Цены.Номенклатура и Док.Цена<>Цены.Цена
       |) КАК ВложЗапрос
       |УПОРЯДОЧИТЬ ПО
       |    Номенклатура, Ссылка.Дата, Регистратор.Дата
       |";

Я не сильно опытен в сиквеле, как в данный вопрос поставить условие на документы ПоступлениеТоваров по фильтру склад
Пытался поставить так:
       |ИЗ
       |    Документ.ПоступлениеТоваровУслуг.Товары КАК Док
       |ГДЕ
       |    Док.Склад=&ВыбСклад
       |ЛЕВОЕ СОЕДИНЕНИЕ
Где выбсклад переменная типа справочник.склады, но похоже синтаксически это не правильно (
45 Feanor
 
19.01.12
11:38
(44) Док.Ссылка.Склад
46 xarann
 
19.01.12
11:41
Может просто вот так:
ВЫБРАТЬ
   Док.Номенклатура,
   Док.Ссылка,
   Цены.Регистратор,
   НеЗнаюИзКакойТаблицыПоле.Коэффициент,
   НеЗнаюИзКакойТаблицыПоле.Цена,
   НеЗнаюИзКакойТаблицыПоле.Цена1
ИЗ
   Документ.ПоступлениеТоваровУслуг.Товары КАК Док
ЛЕВОЕ СОЕДИНЕНИЕ
   РегистрСведений.ЦеныНоменклатурыКонтрагентов КАК  Цены
ПО
   Док.Номенклатура = Цены.Номенклатура и Док.Цена<>Цены.Цена
ГДЕ
   Док.Склад = &ВыбСклад    
УПОРЯДОЧИТЬ ПО
   Док.Номенклатура, Док.Ссылка.Дата, Цены.Регистратор.Дата
47 xarann
 
19.01.12
11:42
+ (45) !!!
48 memogolik
 
19.01.12
11:43
(46)

{Форма.Форма.Форма(27)}: Ошибка при вызове метода контекста (Выполнить)
   Выборка = Запрос.Выполнить().Выбрать();
по причине:

по причине:
{(12, 74)}: Поле не найдено "Док.Ссылка.Склад"
Док.Номенклатура = Цены.Номенклатура и Док.Цена<>Цены.Цена и Док.Ссылка.<<?>>Склад=&ВыбСклад
49 acsent
 
19.01.12
11:44
(4) он тебе поругался что нет ПАРАМЕТРА номенклатура
50 xarann
 
19.01.12
11:46
(48) Документ.ПоступлениеТоваровУслуг у этого документа есть реквизит "Склад" может он называется иначе типа СкладПоступления...
51 Feanor
 
19.01.12
11:47
(48) а точно у дока есть реквизит "Склад"? мб он как-то по-другому называется
(49) мы это уже побелили))
52 xarann
 
19.01.12
11:47
Отладь запрос сначала в консоли, потом уже втыкай в конфигурацию.
53 Feanor
 
19.01.12
11:47
+(51) тьху, победили
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.