Имя: Пароль:
1C
1C 7.7
v7: Вывести данные из Регистра
0 america2013
 
07.04.14
16:30
Доброго времени суток, уважаемые!!!

Есть задача, получить данные из Регистра (товары, количество проданного). Основная проблема - сделать это на 7.7. Платформа 7.70.027, конф. ТиС 7.70.009 (Казахстан).

Структура регистра (Продажи):
- Измер. Покупатель, Поставщик, Организация, ТМЦ
- Ресур. Количество, ПродСтоимость

Есть возможность получить запросом, но я их никогда не писал. Пробую:




    //Создание объекта типа Запрос
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(Сформировать)
    |Период с ДатаНачала по ДатаКонца;
    |Организация    = Регистр.Продажи.Организация;
    |УпрАналитика    = Регистр.Продажи.Организация.УпрАналитика;
    |Покупатель     = Регистр.Продажи.Покупатель;
    |Номенклатура    = Регистр.Продажи.ТМЦ;                
    |Поставщик    = Регистр.Продажи.Поставщик;";

    
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
        Возврат;
    КонецЕсли;

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




Рассчитываю, что выведет весь проданный товар за период. Но не выдает ничего((( Хотя отчет о продажах за этот же период данные показывает. Пытаюсь увидеть в Конфигураторе, как это делает отчет, но понятно плохо.

Пожалуйста, помогите, как вывести проданный товар?
1 ДенисЧ
 
07.04.14
16:32
функций в запросе нет
2 Ёпрст
 
07.04.14
16:32
Прописать в тексте запроса функцию вестимо
3 Chum
 
07.04.14
16:34
Универсальная печать содержимого регистров: regprint.ert
4 america2013
 
07.04.14
16:45
(3) Какую-то скачал, но там справочники, в общем буду смотреть...

(1)(2) Переписал на:


    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(продажи)
    |Период с ВыбНачПериода по ВыбКонПериода;
    |КолВоТМЦ = Регистр.Продажи.Количество;
    |Функция ТМЦСумма = Сумма(КолВоТМЦ);
    |"//}}ЗАПРОС
    ;
    // Если ошибка в запросе, то выход из процедуры
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
        Возврат;
    КонецЕсли;

    ТаблицаЗапроса = "";
    Запрос.Выгрузить(ТаблицаЗапроса,0,0);            
    
    ТаблицаЗапроса.ВыбратьСтроки();
    Пока ТаблицаЗапроса.ПолучитьСтроку()=1 Цикл
        Сообщить(ТаблицаЗапроса.КолВоТМЦ);
    КонецЦикла;  


Ругается на:

Поле агрегатного объекта не обнаружено (КолВоТМЦ)


Правильно ли я понял, что
Сообщить(ТаблицаЗапроса.КолВоТМЦ);
сообщает переменную из запроса?
5 Chum
 
07.04.14
16:46
(4) для справочника refprint.ert
6 aka AMIGO
 
07.04.14
16:51
(4)
    ТекстЗапроса =
    "//{{ЗАПРОС(Сформировать)
    |Товар = Регистр.ОстаткиТоваров.Товар;
    |Склад = Регистр.ОстаткиТоваров.Склад;
    |ОстатокТовара = Регистр.ОстаткиТоваров.ОстатокТовара;
    |Функция ОстатокТовараРасход = Расход(ОстатокТовара);
    |Группировка Товар;
    |"//}}ЗАПРОС
    ;

примерный запрос, выведется Расход = количество проданного товара
7 aka AMIGO
 
07.04.14
16:53
для количественного ресурса функции
начост
приход
расход
коност

а не Сумма
8 пипец
 
07.04.14
17:00
(0) открой для себя конструктор запросов
9 america2013
 
07.04.14
17:02
(8) Открывал, мои первоначальные знания о запросах оттуда.

(7) По этим функциям выдает 0...


А если :

    "//{{ЗАПРОС(продажи)
    |Период с ВыбНачПериода по ВыбКонПериода;
    |Товар    = Регистр.Продажи.ТМЦ;
    |КолВоТМЦ = Регистр.Продажи.Количество;
    |Функция ТМЦСумма = коност(КолВоТМЦ);
    |"//}}ЗАПРОС


...то ругается:

Поле агрегатного объекта не обнаружено (Товар)
10 Ёпрст
 
07.04.14
17:03
(4)

    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(Сформировать)

    |Период с ДатаНачала по ДатаКонца;
    |Организация    = Регистр.Продажи.Организация;
    |УпрАналитика    = Регистр.Продажи.Организация.УпрАналитика;
    |Покупатель      = Регистр.Продажи.Покупатель;
    |Номенклатура    = Регистр.Продажи.ТМЦ;                
    |Поставщик       = Регистр.Продажи.Поставщик;
    |Количество      = Регистр.Продажи.Количество;
    |ПродСтоимость   = Регистр.Продажи.ПродСтоимость;
    |Функция ПродалиКоличество = Сумма(Количество);
    |Функция ПродалиСумма = Сумма(ПродСтоимость);";

    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
        Возврат;
    КонецЕсли;

    ТаблицаЗапроса = "";
    Запрос.Выгрузить(ТаблицаЗапроса,0,0);
    ТаблицаЗапроса.ВыбратьСтроку();


наслаждайся
11 america2013
 
08.04.14
08:58
(10)Ошибку выдает(((

Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
{C:\USERS\USER\DESKTOP\ВЫГРАЗКАЕЖК\ВЫГРАЗКАЕЖК V0.2.ERT(16)}: Функция СуммаКоличество = Сумма(Количество <<?>> );
Запрос[8] : Ошибка в выражении 'Количество'
12 america2013
 
08.04.14
09:10
Простите, не ту ошибку скопировал, вот на что ругается:

Сообщить(ТаблицаЗапроса.Номенклатура);
{C:\USERS\USER\DESKTOP\ВЫГРАЗКАЕЖК\ВЫГРАЗКАЕЖК V0.2.ERT(88)}: Поле агрегатного объекта не обнаружено (Номенклатура)


Если без Номенклатуры, то сумму выдает какую-то общую, а я рассчитывал увидеть по строкам на каждый товар...
13 america2013
 
08.04.14
09:11
Ругается здесь:

    Пока ТаблицаЗапроса.ПолучитьСтроку()=1 Цикл
        Сообщить(ТаблицаЗапроса.Номенклатура);
        Сообщить(ТаблицаЗапроса.ПродалиСумма);
    КонецЦикла;
14 DmitriyDI
 
08.04.14
09:12
(0) тебе нужна обработка стандартная regprint !
15 america2013
 
08.04.14
10:26
Отыскал диск ИТС, нашел обработку.
Отстроил, как надо, в отладке встал на строку выполнения запроса и вывел текст. Текст скопировал себе:


    ТекстЗапроса = "Период с ДатаНачала по ДатаКонца;
    |ТМЦ = Регистр.Продажи.ТМЦ;
    |пзСебестоимость = Регистр.Продажи.Себестоимость;
    |пзПродСтоимость = Регистр.Продажи.ПродСтоимость;
    |пзКоличество = Регистр.Продажи.Количество;
    |пзСебестоимостьВ = Регистр.Продажи.СебестоимостьВ;
    |пзПродСтоимостьВ = Регистр.Продажи.ПродСтоимостьВ;
    |пзКоличествоВ = Регистр.Продажи.КоличествоВ;
    |Группировка ТМЦ;
    |Функция СуммаСебестоимость = Сумма(пзСебестоимость);
    |Функция СуммаПродСтоимость = Сумма(пзПродСтоимость);
    |Функция СуммаКоличество = Сумма(пзКоличество);
    |Функция СуммаСебестоимостьВ = Сумма(пзСебестоимостьВ);
    |Функция СуммаПродСтоимостьВ = Сумма(пзПродСтоимостьВ);
    |Функция СуммаКоличествоВ = Сумма(пзКоличествоВ);";



Выгрузка в ТЗ, перебор строк ТЗ, все как и хотел! Даже регистратор удалось вывести)))

Спасибо вам, уважаемые!!!!!!