Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Запросы 7.7  (Прочитано 27889 раз)
0 Пользователей и 1 Гость смотрят эту тему.
undercover
Новенький

ru
Offline Offline

« : 12-04-2013 15:06 » 

Есть  следующий код:
Код: (1C v8)
Процедура Сформировать()
    тз = создатьОбъект("ТаблицаЗначений");
        тз.НоваяКолонка("НомерДок");
        тз.НоваяКолонка("ДатаДок");
        тз.НоваяКолонка("Контрагент");
        тз.НоваяКолонка("Сумма");
        тз.НоваяКолонка("Итог");
        тз.НоваяКолонка("НеОпл");
        тз.НоваяКолонка("Админ");
        тз.НоваяКолонка("Сотрудник");
        тз.НоваяКолонка("Цех");
        тз.НоваяКолонка("Услуга");
        Если Долги = 1 Тогда
        Запрос = создатьОбъект("Запрос");
        ТекстЗапроса = "
        |Период С НачДата По КонДата;
        |ОбрабатыватьДокументы Проведенные;
        |Док = Документ.ЧекККМ.ТекущийДокумент;
        |Контрагент = Документ.ЧекККМ.Контрагент;
        |НомерДок = Документ.ЧекККМ.НомерДок;
        |ДатаДок = Документ.ЧекККМ.ДатаДок;
        |Сумма = Документ.ЧекККМ.Сумма;
        |НеОпл = Документ.ЧекККМ.НеОплачен;
        |Группировка НомерДок;
        |Условие (Контрагент в ВыбКонтрагенты);
        |"
;
    Если Запрос.Выполнить(ТекстЗапроса)=0 Тогда
                Возврат;
        КонецЕсли;

        Пока Запрос.Группировка(1)=1 Цикл
                Док = Запрос.Док;
            тз.НоваяСтрока();
                тз.ДатаДок = Запрос.ДатаДок;
                тз.НомерДок = Запрос.НомерДок;
                тз.Контрагент = Запрос.Контрагент;
                тз.НеОпл = Запрос.НеОпл;
            тз.Сумма = Запрос.Док.Итог("Сумма");
        КонецЦикла;

       
        Таб = создатьОбъект("Таблица");
        Таб.ИсходнаяТаблица("Долги");
        Таб.ВывестиСекцию("Шапка");
        тз.ВыбратьСтроки();
        НомПП = 0;
        Пока тз.ПолучитьСтроку()=1 Цикл
        НомПП = НомПП + 1;
                Если ТЗ.НеОпл = 1 Тогда
                Таб.ВывестиСекцию("Строка");
            Иначе
                Продолжить;
            КонецЕсли
    КонецЦикла;
        Таб.Опции(0);
        Таб.Показать();
Иначе //Выводим отчет по доходам
        ЗапросДоходы = создатьОбъект("Запрос");
        ТекстЗапроса = "
        |Период С НачДата По КонДата;
        |ОбрабатыватьДокументы Проведенные;
        |Док = Документ.ЧекККМ.ТекущийДокумент;
        |Контрагент = Документ.ЧекККМ.Контрагент;
        |НомерДок = Документ.ЧекККМ.НомерДок;
        |ДатаДок = Документ.ЧекККМ.ДатаДок;
        |Сумма = Документ.ЧекККМ.Сумма;
        |НеОпл = Документ.ЧекККМ.НеОплачен;
        |Услуга = Документ.ЧекККМ.Номенклатура;
        |Цех = Документ.ЧекККМ.Цех;
        |Сотрудник = Документ.ЧекККМ.Исполнитель;
        |Админ = Документ.ЧекККМ.Администратор;
        |Группировка НомерДок;
        //|Группировка Услуга;
        //|Группировка Сумма;
        //|Группировка Контрагент;
        |Условие (Контрагент в ВыбКонтрагенты);
        |Условие (Услуга в ВыбУслуга);
        |Условие (Цех в ВыбЦех);
        |Условие (Сотрудник в ВыбСотрудник);
        |Условие (Админ в ВыбАдмин);
        |"
;
    Если ЗапросДоходы.Выполнить(ТекстЗапроса)=0 Тогда
                Возврат;
        КонецЕсли;
   
        Пока ЗапросДоходы.Группировка(1)=1 Цикл
                Док = ЗапросДоходы.Док;
            тз.НоваяСтрока();
                тз.ДатаДок = ЗапросДоходы.ДатаДок;
                тз.НомерДок = ЗапросДоходы.НомерДок;
                тз.Контрагент = ЗапросДоходы.Контрагент;
                тз.НеОпл = ЗапросДоходы.НеОпл;
            тз.Сумма = ЗапросДоходы.Сумма;
                тз.Админ = ЗапросДоходы.Админ;
            тз.Цех = ЗапросДоходы.Цех;
                тз.Сотрудник = ЗапросДоходы.Сотрудник;
                тз.Услуга = ЗапросДоходы.Услуга;
            Если тз.НеОпл = 0 Тогда
                Итог = тз.Итог("Сумма");
            Иначе
                Продолжить;
                КонецЕсли;
        КонецЦикла;
   
        Таб1 = СоздатьОбъект("Таблица");
        Таб1.ИсходнаяТаблица("Доходы");
        Таб1.ВывестиСекцию("Шапка");
       
        тз.ВыбратьСтроки();
        НомПП = 0;
        Пока тз.ПолучитьСтроку()=1 Цикл

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

Задача - вывести в отчет все строки документа ЧекККМ
« Последнее редактирование: 15-04-2013 07:06 от Kivals » Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 12-04-2013 17:18 » 

Задача кому?
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
undercover
Новенький

ru
Offline Offline

« Ответ #2 : 12-04-2013 17:37 » 

Задача кому?
Мне, второй день голову ломаю....
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 12-04-2013 17:51 » 

undercover, как новичку поясняю: повелительное наклонение при общении с незнакомыми людьми неприлично, особенно если тебе что-то он них нужно. Это на будущее. Улыбаюсь
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
undercover
Новенький

ru
Offline Offline

« Ответ #4 : 12-04-2013 18:21 » 

undercover, как новичку поясняю: повелительное наклонение при общении с незнакомыми людьми неприлично, особенно если тебе что-то он них нужно. Это на будущее. Улыбаюсь
Извиняюсь, просто не правильно сформулировал.
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 12-04-2013 20:04 » 

undercover, так сформулируй понятней...
Поверь, здесь есть люди, которые  могут и смогут подсказать, но включать свои экстрасенсорные способности включать не хотят.
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
undercover
Новенький

ru
Offline Offline

« Ответ #6 : 12-04-2013 20:40 » 

undercover, так сформулируй понятней...
Поверь, здесь есть люди, которые  могут и смогут подсказать, но включать свои экстрасенсорные способности включать не хотят.
Запрос должен выбирать все строки из документов ЧекККМ за выбранный интервал времени. При выводе таблицы отображаются не все строки а только последняя строка из каждого документа.
Записан
Radistka
Помогающий

ru
Offline Offline
Пол: Женский

« Ответ #7 : 15-04-2013 04:31 » 

очень неудобно читать код, оберни его в теги [ code=e1cv8 ]  [ / code ] хотя бы..

а вообще я помню что было чтото вроде:

Код: (1C v8)
//Создание объекта типа Запрос
 Запрос = СоздатьОбъект("Запрос");
 ТекстЗапроса =
 "//{{ЗАПРОС(Сформировать)
 |Период с ВыбНачПериода по ВыбКонПериода;
 |ОбрабатыватьДокументы Проведенные;
 |ПоступлениеМатериалов = Документ.ПоступлениеМатериалов.ТекущийДокумент;
 |Группировка Документ;
 |Группировка СтрокаДокумента;
 |"
//}}ЗАПРОС
 ;
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #8 : 15-04-2013 07:12 » 

Radistka, +1 Улыбаюсь

Только "Группировка НомерСтроки":
Код: (1C v8)
ТекстЗапроса =
 "//{{ЗАПРОС(Сформировать)
 |Период с ВыбНачПериода по ВыбКонПериода;
 |ОбрабатыватьДокументы Проведенные;
 |ТекущийДокумент = Документ.ПоступлениеМатериалов.ТекущийДокумент;
 |НомерСтроки = Документ.ПоступлениеМатериалов.НомерСтроки;
...
 |Группировка ТекущийДокумент;
 |Группировка НомерСтроки;
 |"
//}}ЗАПРОС
 ;
Записан
Radistka
Помогающий

ru
Offline Offline
Пол: Женский

« Ответ #9 : 16-04-2013 06:57 » 

"Документ" и "СтрокаДокумента" - предопределённые группировки, так что тоже должны рабить.
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #10 : 16-04-2013 07:11 » new

Radistka, возможно. Никогда не пользовался такой возможностью, предпочитаю указывать явно...
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines