Вход | Регистрация

1С:Предприятие ::

Метки:Запросы и построители

Бухгалтерский запрос

Я
   Press
19.04.04 - 15:52
Формирую отчет по контрагентам и договорам.
Контрагент
  Договор1
  Договор2
  ...
Мне нужно чтобы при нажатии на ячейку договора, формировался отчет
с итогом по этому договору. Делаю так:

Перем Расшифровка,Ит,Ит1,Таб,Документ;
//____________________________________________________________________


Функция ФункцияРасш()

Расшифровка.УдалитьВсе();
Расшифровка.ДобавитьЗначение(Ит.Субконто(ВидыСубконто.Контрагенты).ТекущийЭлемент(),"Контрагент");
Расшифровка.ДобавитьЗначение(Ит.Субконто(ВидыСубконто.Договоры).ТекущийЭлемент(),"Договор");
Возврат Расшифровка;

КонецФункции    
//____________________________________________________________________


Процедура ОбработкаЯчейкиТаблицы(Расш,Флаг)

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

     Если ТипЗначенияСтр(Расш) = "СписокЗначений" Тогда
          Ит1.ВыбратьСубконто(ВидыСубконто.Договоры);
          Пока Ит1.ПолучитьСубконто(ВидыСубконто.Договоры) = 1 Цикл
               Ит1.ВыбратьПериоды();
               Пока Ит1.ПолучитьПериод()=1 Цикл
   //не заходит в этот цикл, хотя итоги есть по договору

               КонецЦикла; 
          КонецЦикла; 
      Иначе
          Ит1.ВыбратьПериоды();
          Пока Ит1.ПолучитьПериод()=1 Цикл
   //работает

          КонецЦикла; 
      КонецЕсли;
 КонецЦикла;

КонецПроцедуры//ОбработкаЯчейкиТаблицы


Однако обработка не заходит в цикл с получением итогов по данному
договору. Почему?
 
  Рекламное место пустует
   427
 
1 - 19.04.04 - 21:13
Счет где в
Ит1.ВыполнитьЗапрос(ВыбНачПериода, ВыбКонПериода,,,, 1,"Проводка", "С"); 

Без указания счета будет трындец....

или попробуй счета в цикле повыбирать...

P.S. вообще то как то криво все.... я бы по другому сделал ....
   Press
2 - 20.04.04 - 06:19
Мне по всем счетам надо смотреть. Самое интересное что
Процедура Сформировать()
 Расшифровка = СоздатьОбъект("СписокЗначений");      
 Ит = СоздатьОбъект("БухгалтерскиеИтоги");
 Ит.ИспользоватьСубконто(ВидыСубконто.Контрагенты, ВыбСубконто1, 1);
 Ит.ИспользоватьСубконто(ВидыСубконто.Договоры, ВыбСубконто2, 1);
 Ит.ВыполнитьЗапрос(ВыбНачПериода, ВыбКонПериода,,,, 1,, "С");
 Ит.ВыбратьСубконто(ВидыСубконто.Контрагенты);
 Пока Ит.ПолучитьСубконто(ВидыСубконто.Контрагенты) = 1 Цикл
    Ит.ВыбратьСубконто(ВидыСубконто.Договоры);
    Пока Ит.ПолучитьСубконто(ВидыСубконто.Договоры) = 1 Цикл      
        
    КонецЦикла;
 КонецЦикла;
КонецПроцедуры
Нормально работает, отчет формируется, а вот с расшифровкой не получается.
По контрагенту расшифровывает, а по конкретному договору нет.
ЗЫ. Расскажи как не криво, был бы очень благодарен.
   Поп Гапон
3 - 20.04.04 - 07:40
В листинге (0) есть строка:
  Договор = Расшифровка.Получить("Договор");     
В отладчике посмотри, переменная Договор будет пустым значением.

(2) Стиля не чувствуется, поэзии :-).

П.С. В этом форуме почти все поэты, поэтому что такое стиль и рифма и не спрашивай - затопчут . Ж-)
   Press
4 - 20.04.04 - 12:07
(3) Почти попал ;), я в отладчике смотрел и договор и контр там были, только вот то что договор и контр не с той ячейки, я внимания не обратил. Немного подумав, сделал так:
Перем Расшифровка,Ит,Ит1,Таб,Документ;
Процедура Сформировать()
Расшифровка = СоздатьОбъект(\"СписокЗначений\");      
Ит = СоздатьОбъект(\"БухгалтерскиеИтоги\");
Ит.Опции(0,0);
Ит.ИспользоватьСубконто(ВидыСубконто.Контрагенты, ВыбСубконто1, 1);
Ит.ИспользоватьСубконто(ВидыСубконто.Договоры, ВыбСубконто2, 1);
Ит.ВыполнитьЗапрос(ВыбНачПериода, ВыбКонПериода,,,, 1,, \"С\");
Ит.ВыбратьСубконто(ВидыСубконто.Контрагенты);
Пока Ит.ПолучитьСубконто(ВидыСубконто.Контрагенты) = 1 Цикл
    Расшифровка.Установить(\"Значение\",
    Ит.Субконто(ВидыСубконто.Контрагенты).ТекущийЭлемент());
    Расшифровка.Установить(\"ВидСубконто\",ВидыСубконто.Контрагенты);
    Ит.ВыбратьСубконто(ВидыСубконто.Договоры);
    Пока Ит.ПолучитьСубконто(ВидыСубконто.Договоры) = 1 Цикл
        Договор = Ит.Субконто(ВидыСубконто.Договоры).ТекущийЭлемент();
        Расшифровка.Установить(\"Значение\",Договор);
        Расшифровка.Установить(\"ВидСубконто\",ВидыСубконто.Договоры);
    КонецЦикла;                                                                                 
КонецЦикла;
КонецПроцедуры

Процедура ОбработкаЯчейкиТаблицы(Расшифровка,Флаг)
Флаг = 0;
Отбор = Расшифровка.Получить(\"Значение\");
ВидСубконто = Расшифровка.Получить(\"ВидСубконто\");
Ит1 = СоздатьОбъект(\"БухгалтерскиеИтоги\");
Ит1.Опции(0,0);
Ит1.ИспользоватьСубконто(ВидСубконто,Отбор,2);
Ит1.ВыполнитьЗапрос(ВыбНачПериода, ВыбКонПериода,,,, 1,\"Проводка\", \"С\");
Ит1.ВыбратьПериоды();
Пока Ит1.ПолучитьПериод()=1 Цикл

КонецЦикла; 
КонецПроцедуры//ОбработкаЯчейкиТаблицы
Работает. Так не \"криво\"? :)
ЗЫ. Только вот опять проблема возникла - почему-то берет забалансовые счета, я ведь ясно написал Ит1.Опции(0,0)????
   Press
5 - 20.04.04 - 15:26
Взял всеми любимую ЖКК прочитал, все равно не могу понять почему итоги по забалансовым счетам попадают ;(
   427
 
6 - 20.04.04 - 15:46
Потому что кончается на У.... Потому что запрос по всем счетам ... идет ...


Список тем форума
Рекламное место пустует  
Закон Брукера: Даже маленькая практика стоит большой теории.
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Ветка сдана в архив. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует