Имя: Пароль:
1C
1С v8
Великие гуру прошу помощи в написании запроса...
,
0 KIraA
 
18.05.17
06:08
Задача вытянуть данные по номенклатуре, количество и цену и занести в таблицу.

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

        Запрос.УстановитьПараметр( "Дата", Объект.Дата);
        
        рез= Запрос.Выполнить().Выгрузить();
        Если рез.Количество() =0 Тогда
        Сообщить("Нет установленных цен на товар.");
    иначе
        стрТч.Себестоимость= рез.Получить(0).Цена;
стрТч.Количество= рез.Получить(0).Количество;

        КонецЕсли;
        КонецЦикла;
1 mehfk
 
18.05.17
06:14
Все не так. Даже следов того что "Так" нет.
2 VladZ
 
18.05.17
06:18
(0) Ваш генератор кода сломался. Исходя из текста могу предположить, что он перешел в режим "бредогенератор".
3 KIraA
 
18.05.17
06:22
Тогда как надо? (((
4 mehfk
 
18.05.17
06:24
5 alkorolev
 
18.05.17
06:27
(0) 1ое правило бойцовского клуба: не пиши запросы в цикле
6 УспешныйЧел
 
18.05.17
06:29
(3) элементарно, титьки в студию!
7 alkorolev
 
18.05.17
06:29
во-первых, ОДНИМ запросом выдерни данные по ценам.
во-вторых, сам текст смущает. Почему цены берутся из инвентаризации?
8 KIraA
 
18.05.17
06:34
Руководство не хочет из Цен Номенклатуры, они заполняют их в инвентаризацию.
9 catena
 
18.05.17
06:46
(7) + к тому
- зачем в цикле запрос без параметров
- зачем устанавливать параметры запросу без параметров
10 catena
 
18.05.17
06:47
(8)Интересный подход. Вести цены в инвентаризации и не платить программисту.
11 shadow_sw
 
18.05.17
07:02
(8) что, простите? О_о
12 KIraA
 
18.05.17
07:19
Сначало забивается таблица с определенным перечнем товаров

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

        Запрос.УстановитьПараметр("Ссылка",Справочники.Значения.НайтиПоНаименованию("Товары"));
    рез = запрос.Выполнить().Выгрузить();
    Если рез.Количество()>0 Тогда
        Для каждого стр Из рез Цикл
            стрТч = Объект.ОСТовары.Добавить();
            СтрТч.Номенклатура = стр.Номенклатура;
            СтрТч.ЕдиницаИзмерения = стр.Номенклатура.БазоваяЕдиницаИзмерения;
            
        КонецЦикла;
    КонецЕсли;
КонецПроцедуры


А теперь по этой номенклатуре мне нужно заполнить цены установленные в документе Инвентаризация, ТЧ Товары
13 alkorolev
 
18.05.17
07:29
(12) O_o
14 Redkiy
 
18.05.17
07:30
(12) этот запрос никогда не выдаст результат
15 KIraA
 
18.05.17
07:34
Все работает, я подчищала код, возможно удалила лишнее ))) но основной принцип такой. Данные приходят и таблица заполняется, теперь по данной номенклатуре как получить цены с ДОКУМЕНТА Инвентаризация, табл. части Товары, за последнее число.
16 KIraA
 
18.05.17
07:37
Для каждого стрТч Из Объект.ОСТовары Цикл
        
    Запрос = новый Запрос;
    Запрос.Текст="ВЫБРАТЬ
                 |    ИнвентаризацияТоваровНаСкладеТовары.Ссылка,
                 |    ИнвентаризацияТоваровНаСкладеТовары.Номенклатура,
                 |    ИнвентаризацияТоваровНаСкладеТовары.Количество,
                 |    ИнвентаризацияТоваровНаСкладеТовары.Цена
                 |ИЗ
                 |    Документ.ИнвентаризацияТоваровНаСкладе.Товары КАК ИнвентаризацияТоваровНаСкладеТовары";
Запрос.УстановитьПараметр("Номенклатура",стрТч.Номенклатура);
    рез= Запрос.Выполнить().Выгрузить();
17 KIraA
 
18.05.17
07:37
Дальше как?
18 alkorolev
 
18.05.17
07:40
(15) за последнюю инвентаризацию? или последнюю установленную цену товара?
19 KIraA
 
18.05.17
07:42
за последнюю инвентаризацию
20 alkorolev
 
18.05.17
07:45
(19)
|...
|ГДЕ ИнвентаризацияТоваровНаСкладеТовары.Ссылка В
|(ВЫБРАТЬ ПЕРВЫЕ 1
|   ИнвентаризацияТоваровНаСкладе.Ссылка КАК Ссылка
|ИЗ
| Документ.ИнвентаризацияТоваровНаСкладе КАК ИнвентаризацияТоваровНаСкладе
| УПОРЯДОЧИТЬ ПО
| ИнвентаризацияТоваровНаСкладе.Дата УБЫВ)
21 catena
 
18.05.17
07:47
(16)Зачем задавать вопрос и не читать ответы? Ты не исправила ни одного замечания из 7 и 9.
22 Antony8x
 
18.05.17
07:47
(1) ))
23 shadow_sw
 
18.05.17
07:49
коллеги, Вам не кажется, что какое то нашествие троллей?
вчера про обновление, сегодня (0)
24 1dvd
 
18.05.17
07:49
Справочник.ЗначенияТовары

Это что за сущность такая7
25 catena
 
18.05.17
07:51
(24)У этой сущности есть ссылка.ссылка!
26 Redkiy
 
18.05.17
07:52
кошерно!
ЗначенияТовары.Ссылка.Ссылка = &Ссылка
27 KIraA
 
18.05.17
07:59
alkorolev Преклоняюсь перед Вашим пониманием и спокойствием, почти все получилось, осталось запустить цикл, потомучто для всех проставляется только первое значение

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

        Запрос.УстановитьПараметр( "Дата", Объект.Дата);
        
        
        рез= Запрос.Выполнить().Выгрузить();
        Если рез.Количество() =0 Тогда
        Сообщить("Нет установленных цен на товар.");
    иначе
        стрТч.Себестоимость= рез.Получить(0).Количество;
    стрТч.Количество= рез.Получить(0).Количество;
    КонецЕсли;
    КонецЦикла;
28 1dvd
 
18.05.17
08:05
(25) у каждой ссылки есть ссылка
http://www.aikido-kfa.ru/netcat_files/Image/morihey.jpg
29 alkorolev
 
18.05.17
08:06
(27) сделай проще:

ТЗ = РезультатТвоегоХитрогоЗапросаБезУстановленногоПараметраНоменклатура.Выгрузить();

Для каждого стрТч Из Объект.ОСТовары Цикл
    
    СтрокаТЗ = ТЗ.Найти(СтрокаТч.Номенклатура, "Номенклатура");
    Если СтрокаТЗ = Неопределено Тогда
        Сообщить("Нет установленных цен на товар.");
    иначе
        стрТч.Себестоимость = СтрокаТЗ.СуммаИлиЧтоТам;
        стрТч.Количество = СтрокаТз.Количество;
    КонецЕсли;
    
КонецЦикла;
30 KIraA
 
18.05.17
08:20
alkorolev УРРРРРРАААА все заработало, мне бы такого учителя(подсказчика) как Вы!!! Как можно с Вами связываться, если Вы не против, чтоб высказывания не очень хороших людей не выслушивать.

ЛЮДИ к ВАМ обращаюсь...."Вам КОРОНА мозг не жмет, Вы ведь не с рождением знания получали?
31 catena
 
18.05.17
08:24
(30)Милая Ирина, вам с первого сообщения пытались помочь получить знания, а вы усвоили только копи-паст. Будем надеяться, что alkorolev не бросит того, кого приручил и будет продолжать выполнять за вас работу :)
32 KIraA
 
18.05.17
08:28
УВ. catena с первых сообщений меня отправили читать мат. часть)), согласитесь пока не покажут как это надо было сделать, я бы не пришла к этому, т.к. обращение сюда было последним выходом, после моих тчетных попыток.
33 Масянька
 
18.05.17
08:31
(32) За два месяца можно было бы (при желании) прочитать первые 10 страниц.
А если нужно показывать "как читать мат. часть" - в школу.
PS "тчетных" - тщетных.
34 ТупойЖадный
 
18.05.17
08:31
(17) Юдальше зовите программиста
35 catena
 
18.05.17
08:31
(32)Матчасть прочитали? на (7) и (9) ответить хотя бы себе пытались?  Сейчас после этой темы сами можете сказать, что в (0) "не так"?
Судя по (27) нет.
Так что, получается, то, что вам "покажут как это надо было сделать" пользы никакой не принесло.
36 Мимохожий Однако
 
18.05.17
08:32
(32) Лучше научиться ловить рыбу, нежели кушать рыбку с рук. Не моё.
37 KIraA
 
18.05.17
08:34
Сколько людей, столько и мнений...Всем спасибо
38 alkorolev
 
18.05.17
09:42
(30) не за что) в профиле есть контакты. Обращайся)