Имя: Пароль:
1C
1C 7.7
v7: Забыл язык запросов 7.7
,
0 Sevish
 
14.05.18
21:02
Добрый день.
Задача вывести все ПКО и значения реквизитов, например, в табличный документ, чтобы показать и сохранить в xls.
Делаю:
    Перем Запрос, ТекстЗапроса, Таб;
    //Создание объекта типа Запрос
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(ПКО)
    |Период с ВыбНачПериода по ВыбКонПериода;
    |Без итогов;
    |ПринятоОт = Документ.ПриходныйОрдер.ПринятоОт;
    |Основание = Документ.ПриходныйОрдер.Основание;
    |Приложение = Документ.ПриходныйОрдер.Приложение;
    |КоррСчет = Документ.ПриходныйОрдер.КоррСчет;
    |Субконто1 = Документ.ПриходныйОрдер.Субконто1;
    |Субконто2 = Документ.ПриходныйОрдер.Субконто2;
    |Субконто3 = Документ.ПриходныйОрдер.Субконто3;
    |ФормироватьПроводки = Документ.ПриходныйОрдер.ФормироватьПроводки;
    |Количество = Документ.ПриходныйОрдер.Количество;
    |Сумма = Документ.ПриходныйОрдер.Сумма;
    |СтавкаНДС = Документ.ПриходныйОрдер.СтавкаНДС;
    |НДС = Документ.ПриходныйОрдер.НДС;
    |ДвижениеДенежныхСредств = Документ.ПриходныйОрдер.ДвижениеДенежныхСредств;
    |Контрагент = Документ.ПриходныйОрдер.Контрагент;
    |ТекущийДокумент = Документ.ПриходныйОрдер.ТекущийДокумент;
    |"//}}ЗАПРОС
    ;
    // Если ошибка в запросе, то выход из процедуры
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
        Возврат;
    КонецЕсли;

    // Подготовка к заполнению выходных форм данными запроса
    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("ПКО");
    // Заполнение полей "Заголовок"
    Таб.ВывестиСекцию("Заголовок");
    Состояние("Заполнение выходной таблицы...");
    Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
    Пока Запрос.Группировка() = 1 Цикл
        // Заполнение полей ПКО
        Таб.ВывестиСекцию("ПКО");
    КонецЦикла;
    // Вывод заполненной формы
    Таб.ТолькоПросмотр(1);
    Таб.Показать("ПКО", "");

Результат - пусто, что не так?
1 ildus78
 
14.05.18
21:08
а группировки в запросе, собственно, где? цикл не выполняется?
2 Остап Сулейманович
 
14.05.18
21:18
(0) Запрос по документам без функций не але. По справочнику - да. По документам - нет.
3 goodzone
 
14.05.18
23:52
(0) И правильно сделал! ))
4 goodzone
 
14.05.18
23:54
(0) Что бы по документам сработало, нужно что-то просуммировать
5 big
 
15.05.18
04:37
(0) Не слушай этих неграмотных и неопытных ))

Надо добавить строку ОбрабатыватьДокументы Проведенные|Непроведенные|Все

И не надо никаких ни суммирований, ни функций ))
6 Chameleon1980
 
15.05.18
04:49
(4), (5)
только группировку нужно таки
7 Chameleon1980
 
15.05.18
04:50
и потом можно или обойти или
Запрос.Выгрузить(ТЗ,1,0)
8 Sevish
 
15.05.18
05:02
Воспользовался советами, получилось так, но в таблице я вижу только документ и две суммы, а мне нужно значения реквизитов :(

    ТекстЗапроса =
    "//{{ЗАПРОС(ПКО)
    |Период с ВыбНачПериода по ВыбКонПериода;
    |Обрабатывать НеПомеченныеНаУдаление;
    |Без итогов;
    |ПринятоОт = Документ.ПриходныйОрдер.ПринятоОт;
    |Основание = Документ.ПриходныйОрдер.Основание;
    |Приложение = Документ.ПриходныйОрдер.Приложение;
    |КоррСчет = Документ.ПриходныйОрдер.КоррСчет;
    |Субконто1 = Документ.ПриходныйОрдер.Субконто1;
    |Субконто2 = Документ.ПриходныйОрдер.Субконто2;
    |Субконто3 = Документ.ПриходныйОрдер.Субконто3;
    |ФормироватьПроводки = Документ.ПриходныйОрдер.ФормироватьПроводки;
    |Количество = Документ.ПриходныйОрдер.Количество;
    |Сумма = Документ.ПриходныйОрдер.Сумма;
    |СтавкаНДС = Документ.ПриходныйОрдер.СтавкаНДС;
    |НДС = Документ.ПриходныйОрдер.НДС;
    |ДвижениеДенежныхСредств = Документ.ПриходныйОрдер.ДвижениеДенежныхСредств;
    |Контрагент = Документ.ПриходныйОрдер.Контрагент;
    |ТекущийДокумент = Документ.ПриходныйОрдер.ТекущийДокумент;
    |Функция СуммаСумма = Сумма(Сумма);
    |Функция НДССумма = Сумма(НДС);
    |Группировка ТекущийДокумент;
    |"//}}ЗАПРОС
9 big
 
15.05.18
05:30
(8) убери функции попробуй
10 big
 
15.05.18
05:31
(9) + кстати, НеПомеченныеНаУдаление - это для справочников. Для документов - это как в (5)
11 Chameleon1980
 
15.05.18
06:34
Даты норм задал?
12 vladko
 
15.05.18
09:06
(8) 1.Убери
|Обрабатывать НеПомеченныеНаУдаление;
|Без итогов;
2. в Макете вывода прописывай вручную нужные тебе реквизиты: например, Запрос.КоррСчет или Запрос.Основание, т.к. по умолчанию конструктор запроса прописывает там только значения группировок и функций.
13 trk415e76
 
15.05.18
09:54
Молодежь, целую конференцию устроили. Есть замечательная стандартная обработка для 7.7 docprint.ert. Выводит любой документ со всеми реквизитами в табличном виде. Там же можно и запрос посмотреть. Только как ее прицепить к сообщению не знаю.
14 Chameleon1980
 
15.05.18
13:04
...Только как ее прицепить к сообщению не знаю... Молодежь. :)
я тоже не знаю, если честно.
15 PC
 
15.05.18
13:10
(13) Да она небось на ИТСе есть.
16 Sevish
 
15.05.18
21:59
Так, спасибо, разобрался, добавил в макет поля и понеслось :)

Теперь другой важный вопрос: есть список контрагентов (наименование) 800-900 строк в экзеле, вбрать их из БД никак не получится, я и так выбрал всех, человек оставил в списке нужных. Теперь мне надо выбрать по ним договора. Вроде не проблема, но как в запрос этот отбор внести? В 8ке я бы разместил этот список в макете, а потом из макета прочитал и через поиск в справочнике по наименованию добавил бы в "СписокЗначений", отбр и все готово. А тут как сделать?
Задача усложняется тем, что список сделан по "НаименованиеПолное"...

Подскажите, пожалуйста.
17 Злопчинский
 
16.05.18
00:35
(16) "В 8ке я бы разместил этот список в макете,"
- восьмерочники такие выдумщики-проказники-извращенцы - из простоко текстового файла или из экселя не читается? если вставлять в макет - то нахрена? не проще вставить в многострочное поле и тупо прочиатть строку с разделителями? нахрена сюда в восьмерке макет хренячить..? хотя я в 8-ке - ноль, может, оно, конечно, есть скрытые смыслы...
18 Злопчинский
 
16.05.18
00:36
(16) тупо построчно читаешь список
для текущей строки списка перебираешь тупо записи справочника и сравниваешь полные наименования. для совпадающих - выдергиваешь договор.
19 Chameleon1980
 
16.05.18
04:22
(17)
ну как тебе сказать.
Я бы в 8, как один из вариантов, например, сделал бы через построитель

т.е. загрузил в макет и скормил бы нужную область построителю
получил бы и отборы (если нужно) по колонкам и быструю загрузку с результатом запроса.
20 Sevish
 
17.05.18
06:33
Ещё раз спасибо, и правда прочитал тупо из текстового файла.
Ошибка? Это не ошибка, это системная функция.