Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Запрос 1С 7.7
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 7.7
Yoja
Добрый день!
Помогите правильно написать запрос!

1П:Предприятие 7.7 для SQL (7.70.027)
Конфигурация
"Бухгалтерский учет" для Украины (7.70.252)

Нужно в таблицу с полями (№п/п, Дата, Документ, Касса, Сумма, Примечание)
вывести ПриходныйКассовый ордер (ПКО) и РасходныйКассовый ордер (РКО) за период
с сортировкой 1) Касса 2) Дата

КодЗапроса ="
      |Период с Дата1 По Дата2;
      |ДокПКО = Документ.ПриходныйКассовый.ТекущийДокумент;
//   |ДокРКО = Документ.РасходныйКассовый.ТекущийДокумент;
      |Группировка ДокПКО Упорядочить По ДокПКО.Субконто;
      |";


ДокРКО пока закоментил, так как сортировка еще не работает


Спасибо БОЛЬШОЕ
vadim007
ТекстЗапроса = "
      |Период с Дата1 По Дата2;
      |Дата = Документ.ПриходныйКассовый.ДатаДок, Документ.РасходныйКассовый.ДатаДок;
      |Документ = Документ.ПриходныйКассовый.ТекущийДокумент, Документ.РасходныйКассовый.ТекущийДокумент;
      |Касса = Документ.ПриходныйКассовый.РСчет, Документ.РасходныйКассовый.РСчет;
      |Сумма = Документ.ПриходныйКассовый.СуммаВал, Документ.РасходныйКассовый.СуммаВал;
      |Примечание = Документ.ПриходныйКассовый.Примечание, Документ.РасходныйКассовый.Примечание;
      |";

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

ТаблЗнач = Создать("ТаблицаЗначений");
Запрос.Выгрузить(ТаблЗнач, 0, 0);
ТаблЗнач.Сортировать("Касса, Дата");

ТаблЗнач.ВставитьКолонку("Номер", 1);
Для Инд=1 По ТаблЗнач.КоличествоСтрок() Цикл
     ТаблЗнач.УстановитьЗначение(Инд,"Номер",Инд);
КонецЦикла;
Yoja
щас протестируем, (ток у меня все выводиться не в ТЗ а в Таблицу)
Yoja
Не работает ((
1) Ошибка в запросе, закоментив строку в запросе с Примечанием, проходим дальше
{U:\TEST1C\18.06.2014\004M.ERT(36)}: Примечание = Документ.ПриходныйКассовый.ТекущийДокумент.Примечание <<?>> , Документ.РасходныйКассовый.ТекущийДокумент.Примечание;
   Запрос[7] : Запрос не оперирует величинами типа "Строка" неопределенной длины
   Запрос.Выполнить(КодЗапроса);
   {U:\TEST1C\18.06.2014\004M.ERT(36)}: Примечание = Документ.ПриходныйКассовый.ТекущийДокумент.Примечание, Документ.РасходныйКассовый.ТекущийДокумент.Примечание <<?>>;
   Запрос[7] : Запрос не оперирует величинами типа "Строка" неопределенной длины
   Если Запрос.Выполнить(КодЗапроса) = 0 Тогда
   {U:\TEST1C\18.06.2014\004M.ERT(37)}: Примечание = Документ.ПриходныйКассовый.ТекущийДокумент.Примечание <<?>> , Документ.РасходныйКассовый.ТекущийДокумент.Примечание;
   Запрос[7] : Запрос не оперирует величинами типа "Строка" неопределенной длины
   Если Запрос.Выполнить(КодЗапроса) = 0 Тогда
   {U:\TEST1C\18.06.2014\004M.ERT(37)}: Примечание = Документ.ПриходныйКассовый.ТекущийДокумент.Примечание, Документ.РасходныйКассовый.ТекущийДокумент.Примечание <<?>>;
   Запрос[7] : Запрос не оперирует величинами типа "Строка" неопределенной длины


2. Показывает что выполнил запрос и вернул одну строку
Запрос.Выгрузить(ТаблЗнач,0,0); 
Сообщить(ТаблЗнач.КоличествоСтрок())


3.
ТаблЗнач.Сортировать("Касса ,Дата");        
{U:\TEST1C\18.06.2014\004M.ERT(59)}: Неверный идентификатор колонки!



64000000.gif
nysysimara
попробуйте так:
Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(Сформировать)  
    |ДатаДок = Документ.ПриходныйКассовый.ДатаДок, Документ.РасходныйКассовый.ДатаДок;
    |ТекущийДокумент = Документ.ПриходныйКассовый.ТекущийДокумент, Документ.РасходныйКассовый.ТекущийДокумент;
    |Касса = Документ.ПриходныйКассовый.РСчет, Документ.РасходныйКассовый.РСчет;
    |СуммаВал = Документ.ПриходныйКассовый.СуммаВал, Документ.РасходныйКассовый.СуммаВал;
    |Функция СуммаВалСумма = Сумма(СуммаВал);
    |Группировка Касса;
    |Группировка ДатаДок;
    |"//}}ЗАПРОС
;
    // Если ошибка в запросе, то выход из процедуры
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
        Возврат;
    КонецЕсли;
    
    ТаблЗнач = СоздатьОбъект("ТаблицаЗначений");
    Запрос.Выгрузить(ТаблЗнач, 0, 0);

а примечание можно потом вывести
ТаблЗнач.ТекущийДокумент.Примечание
Yoja
Спасибо, запрос работает !!!

Нашел еще один способ решить эту задачу:
1: Создаем таблицу значений
2: Получаем объект документ РКО
3: Выгружаем то что нужно
4: Получаем объект документ ПКО
5: Выгружаем то что нужно
6: Сортируем
7: Выгружаю в Таблицу
8: Сохраняем в Excel

Седьмой пункт можно было бы и пропустить, однако таблица сохраняется в Excel файл одной строкой


ТаблЗнач = СоздатьОбъект("ТаблицаЗначений");    
       ТаблЗнач.Очистить();
      
       ТаблЗнач.НоваяКолонка("ТабП");
       ТаблЗнач.НоваяКолонка("ТабД");
       ТаблЗнач.НоваяКолонка("ТабДок");
      
      
           row=1; //первая строка
           ДокПК = СоздатьОбъект("Документ.ПриходныйКассовый");
           ДокПК.ВыбратьДокументы(Дата1,Дата2);    
       .....                                          
           Пока ДокПК.ПолучитьДокумент() = 1 Цикл
        ТаблЗнач.НоваяСтрока();
        ТаблЗнач.ТабП     = row;
        ТаблЗнач.ТабД     = СокрЛП(ДокПК.ДатаДок);  
        ТаблЗнач.ТабДок   = СокрЛП(ДокПК.НомерДок);
       .....
              
           row=row+1;//переходим на следующую строку
           КонецЦикла;
       .......
     ТаблЗнач.Сортировать("ТабК+, ТабД+");
    
       Таб.Записать(КаталогИБ()+"ExtForms\004m.xls", 1);
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.