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

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 человек.
Рекламное место пустует