Имя: Пароль:
1C
1C 7.7
v7: Основы вывода информации
, ,
0 Wefast
 
08.06.18
10:26
Понадобилось тут из 7 вывести данные в нужном формате.

А конкретно остатки товаров

Делаю

   перем Таб, Запрос, ТекстЗапроса,ячс;            
    
    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("Таблица");
    Таб.ВывестиСекцию("Шапка|Нач");
    Таб.Опции(0,0,Таб.ВысотаТаблицы(),0);
    
    Максим = 7;
    Для Счетчик = 1 По Максим Цикл            
        н = Счетчик;
        Таб.ПрисоединитьСекцию("Шапка|Родители");
    КонецЦикла;
    

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

    Таб.Показать("Таблица","");



1) так понимаю для получения остатков обязательно нужно указать дату С и По. Она одна и та же?
2) После запрос без периода что то выводилось. Но Код, Артикул были пустые. Для вывода приходилось делать
Запрос.Наименование.ТекущийЭлемент().Код
1 1Сергей
 
08.06.18
10:30
Группировки где?

Без периода остатки берутся на дату ТА
2 Wefast
 
08.06.18
14:12
(1) спасибо
3 Builder
 
08.06.18
14:14
(2) Вот это что за условие???? Пропустить 40-ю строку???
Пока( Запрос.Группировка(1) = 1) и (ячс <>40) Цикл
4 Wefast
 
08.06.18
14:42
(3) ограничил вывод 40 строк для отладки. Хз где это в запросе сделать
5 Cool_Profi
 
08.06.18
14:55
А где группировка?
Да и за такое "Наименование = Регистр.ОстаткиТоваров.Товар;" - бить линейкой по рукам...
6 Карст
 
08.06.18
17:36
Запрос.Наименование.ТекущийЭлемент().Код чойто??
Запрос.Наименование.Код
ЗЫ хотя я б не стал использовать регулярные названия
7 Wefast
 
09.06.18
08:55
(5) почему? Надо было Наименование = Регистр.ОстаткиТоваров.Товар.Наименование?

Или именно "наименование" в название поля нельзя использовать?

(6) Не заполнялась выходная таблица данными из запроса. И я пробовал разное что в голову приходило.

Особого знания как в 7 что работает у меня нет, сталкиваюсь с ней раз в год наверное(так что надеюсь однажды она полностью канет в лету), так что разбираться от и до и после помнить все это нет желания
8 Cool_Profi
 
09.06.18
09:02
(7) Потому что название поля должно отражать его смысл. У тебя номенклатура, так и назови его так
9 Злопчинский
 
09.06.18
11:18
(7) добавлю к (8)
у тебя в запросе переменная запроса "наименование" является ссылкой. А по принятым стандартам отрасли - "наименование" - это строка. Пипл впадает в когнитивный диссонанс (нравится мне это словосочетание ;-)
10 AliAksA
 
11.06.18
10:49
упс, народ, а что, такое " |с (ТекущаяДата()) по (ТекущаяДата());" прокатывает?
11 Карст
 
13.06.18
12:20
(10) если итоги актуальны то запросто, а чо бы и нет ))) более того !!! , открой конструктор запросов в 7-ке , при выборе периода выбери "выражение"  и выбери предлагаемые варианты
Независимо от того, куда вы едете — это в гору и против ветра!