Имя: Пароль:
1C
1C 7.7
v7: Вывести столбец курс валют. ПУБ 7.7
,
0 Pechka
 
29.08.12
08:11
Доброе утро..Формирую отчет "Движения по счетам",выходят столбцы - контрагент,договор,первичный документ (напр, реализация от 05.07.12) и нужен столбец рядом  "курсы валют",то есть напротив каждой даты чтоб курс выходил. 05.07.12 - 32.2065. Как это сделать,помогите пожалуйста
1 SED
 
29.08.12
08:51
ТвойДокумент.Валюта.Курс.Получить(ТвойДокумент.ДатаДок)
2 Pechka
 
29.08.12
09:03
документ записан только на печатной форме у меня - <Ит.Операция.Документ>,в программе про него ничего не сказано,есть договор - <Ит.Субконто(2)>..Я не понимаю,как записать это все?
3 SED
 
29.08.12
09:07
Ит.Операция.Документ.Валюта.Курс.Получить(Ит.Операция.Документ.ДатаДок)
4 KUBIK
 
29.08.12
09:11
(3) Это когда у дока есть реквизит "Валюта".
ТС наверное проще задачу надо: выводить курсы какой-то валюты(???) на дату дока
5 Pechka
 
29.08.12
09:50
у документа есть реквизит - ВалютаЦен только,самой Валюта нет.. и ругается на ДатаДок - Переменная не определена (ДатаДок)
6 Pechka
 
29.08.12
10:09
вот мой код,посмотрите пожалуйста,сначала выводятся пустые  строки контрагентов,договоров, в строках документа пишется- объект не найден,курс выходит напротив этих строк,а ниже уже перечисление документов- реализация,но рядом курс - 0.000

Функция ПоказатьКурс()
   Перем Стр;

   Если Валюта.Выбран() = 1 Тогда
       Стр = Валюта.Курс.Получить();
   Иначе
       Стр = "";
   КонецЕсли;

   Возврат Стр;
КонецФункции // ПоказатьКурс()




    Процедура Сформировать()
   
   
   
   
   
   Таб = СоздатьОбъект("Таблица");
   Таб.ИсходнаяТаблица("Сформировать");
               
   
       Расшифровка = СоздатьОбъект("СписокЗначений");
   Расшифровка.Установить("Отчет", "Сформировать");
   Расшифровка.Установить("ДатаНач", ВыбНачПериода);
   Расшифровка.Установить("ДатаКон", ВыбКонПериода);
   Расшифровка.Установить("Валюта", Валюта);
   
   
   Сч= СоздатьОбъект("Счет");
   
   Ит = СоздатьОбъект("БухгалтерскиеИтоги");
   Ит.ИспользоватьСубконто(ВидыСубконто.Контрагенты);
   Ит.ИспользоватьСубконто(ВидыСубконто.Договоры);
   Ит.ИспользоватьКорСубконто(Сч.ВидСубконто(1),, 1);
   Ит.ИспользоватьКорСубконто(Сч.ВидСубконто(2),, 1);
   Ит.ИспользоватьКорСубконто(Сч.ВидСубконто(3),, 1);    
   Ит.ВключатьСубсчета(-1,-1);
   Ит.ВыполнитьЗапрос(ВыбНачПериода, ВыбКонПериода,"62,76.5",,,3,"Проводка", "С");  
   
   ИстВал = СоздатьОбъект("Периодический");
   ИстВал.ИспользоватьОбъект("Курс",Валюта);  
   
   

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

           Пока ИстВал.ПолучитьЗначение()=1 Цикл
               Таб.ВывестиСекцию("Строка");
           КонецЦикла;
   
   Ит.ВыбратьСубконто(1);
   Пока Ит.ПолучитьСубконто(1) = 1 Цикл
       Ит.ВыбратьСубконто(2);
       Пока Ит.ПолучитьСубконто(2) = 1 Цикл
           
           ДоговорСУчастием3Лиц = Ит.Субконто(2).КМ_ДоговорСУчастием3Лиц;
           
           Если (ДоговорСУчастием3Лиц <> ВыбДоговорСУчастием3Лиц)
              и (Ит.Субконто(2) <> ВыбДоговорСУчастием3Лиц) Тогда
               Продолжить;
           КонецЕсли;
              //
           
           
                       
           
           
           Ит.ВыбратьСчета();
           Пока Ит.ПолучитьСчет() = 1 Цикл
           
               Ит.ВыбратьКорСчета();
               Пока Ит.ПолучитьКорСчет() = 1 Цикл
                   
                   Субконто1 = "";
                   Субконто2 = "";
                   Субконто3 = "";
               
                   Если Ит.КорСчет.КоличествоСубконто()>0 Тогда
                       
                       Ит.ВыбратьКорСубконто(1);
                       Пока Ит.ПолучитьКорСубконто(1) = 1 Цикл
                           
                           Если Ит.КорСчет.КоличествоСубконто()>1 Тогда
                               
                               Ит.ВыбратьКорСубконто(2);
                               Пока Ит.ПолучитьКорСубконто(2) = 1 Цикл
                                   
                                   Если (Ит.Субконто(1) = Ит.КорСубконто(1)) и (Ит.Субконто(2) = Ит.КорСубконто(2))  Тогда
                                       Продолжить;
                                   КонецЕсли;
                                   
                                   Если Ит.КорСчет.КоличествоСубконто()>2 Тогда
                                       
                                       Ит.ВыбратьКорСубконто(3);
                                       Пока Ит.ПолучитьКорСубконто(3) = 1 Цикл
                                           
                                           Ит.ВыбратьПериоды(1);
                                           Пока Ит.ПолучитьПериод() = 1 Цикл
                                               
                                               Если Ит.ВыбранаПоДт() = 1 Тогда
                                                   СчетДт    = Ит.Счет;
                                                   СчетКт    = Ит.КорСчет;
                                               Иначе
                                                   СчетДт    = Ит.КорСчет;
                                                   СчетКт    = Ит.Счет;
                                               КонецЕсли;
                                               
                                               Если (Ит.КорДО("С")<>0) или (Ит.КорКО("С")<>0) Тогда
                                                   Субконто1 = Ит.КорСубконто(1);
                                                   Субконто2 = Ит.КорСубконто(2);
                                                   Субконто3 = Ит.КорСубконто(3);
                                                   Таб.ВывестиСекцию("Строка");
                                               КонецЕсли;
                                               
                                           КонецЦикла;
                                           
                                       КонецЦикла;
                                       
                                   Иначе
                                       
                                       Ит.ВыбратьПериоды(1);
                                       Пока Ит.ПолучитьПериод() = 1 Цикл
                                           
                                           Если Ит.ВыбранаПоДт() = 1 Тогда
                                               СчетДт    = Ит.Счет;
                                               СчетКт    = Ит.КорСчет;
                                           Иначе
                                               СчетДт    = Ит.КорСчет;
                                               СчетКт    = Ит.Счет;
                                           КонецЕсли;
                                       
                                           Если (Ит.КорДО("С")<>0) или (Ит.КорКО("С")<>0) Тогда    
                                               Субконто1 = Ит.КорСубконто(1);
                                               Субконто2 = Ит.КорСубконто(2);
                                               Субконто3 = Ит.КорСубконто(3);
                                               Таб.ВывестиСекцию("Строка");
                                           КонецЕсли;
                                       
                                       КонецЦикла;
                                       
                                   КонецЕсли;
                                   
                               КонецЦикла;
                               
                           Иначе
                               
                               Ит.ВыбратьПериоды(1);
                               Пока Ит.ПолучитьПериод() = 1 Цикл
                                   
                                   Если Ит.ВыбранаПоДт() = 1 Тогда
                                       СчетДт    = Ит.Счет;
                                       СчетКт    = Ит.КорСчет;
                                   Иначе
                                       СчетДт    = Ит.КорСчет;
                                       СчетКт    = Ит.Счет;
                                   КонецЕсли;
                               
                                   Если (Ит.КорДО("С")<>0) или (Ит.КорКО("С")<>0) Тогда
                                       Субконто1 = Ит.КорСубконто(1);
                                       Субконто2 = Ит.КорСубконто(2);
                                       Субконто3 = Ит.КорСубконто(3);
                                       Таб.ВывестиСекцию("Строка");
                                   КонецЕсли;
                                   
                                     
                                   
                                   
                               КонецЦикла
                               
                           КонецЕсли;
                       КонецЦикла;
                       
           
                       
                   
                   Иначе
                       
                       Ит.ВыбратьПериоды(1);
                       Пока Ит.ПолучитьПериод() = 1 Цикл
                           
                           Если Ит.ВыбранаПоДт() = 1 Тогда
                               СчетДт    = Ит.Счет;
                               СчетКт    = Ит.КорСчет;
                           Иначе
                               СчетДт    = Ит.КорСчет;
                               СчетКт    = Ит.Счет;
                           КонецЕсли;
                   
                           Если (Ит.КорДО("С")<>0) или (Ит.КорКО("С")<>0) Тогда
                               Таб.ВывестиСекцию("Строка");
                           КонецЕсли;
                           
                       КонецЦикла;
                         
                         
                    ИстВал.ВыбратьЗначения(ВыбНачПериода,ВыбКонПериода);
                   
                   Пока ИстВал.ПолучитьЗначение()=1 Цикл
                       Таб.ВывестиСекцию("Строка");
                   КонецЦикла;    

                       
                       
                       
                   КонецЕсли;
               КонецЦикла;
           КонецЦикла;
       КонецЦикла;
   КонецЦикла;
   
   
   Таб.ТолькоПросмотр(1);
   Таб.Показать("Сформировать","");
КонецПроцедуры
//}}БУХГАЛТЕРСКИЙ ЗАПРОС  

Процедура ПриОткрытии()  
   

   Если глФлагРасшифровки = 1 Тогда
       Обновить = глОбновить;
       ВыбНачПериода = глРасшифровка.Получить("ДатаНач");
       ВыбКонПериода = глРасшифровка.Получить("ДатаКон");
       Валюта = глРасшифровка.Получить("Валюта");

       Если Обновить <> 0 Тогда
           Таб = глТаблица;
       КонецЕсли;

       Если Обновить <> 2 Тогда
           Сформировать();
           СтатусВозврата(0);
           Возврат;
       КонецЕсли;
   Иначе
       Обновить = 0;
   

   
//{{ИНИЦИАЛИЗАЦИЯ БУХГАЛТЕРСКОГО ЗАПРОСА(Сформировать)
   ВыбНачПериода = НачалоПериодаБИ();
   ВыбКонПериода = КонецПериодаБИ();
//{{ИНИЦИАЛИЗАЦИЯ БУХГАЛТЕРСКОГО ЗАПРОСА

     Если Валюта.Выбран()=0 Тогда
           ВосстановитьЗначение("Сформировать",Валюта);
       КонецЕсли;
   КонецЕсли;



КонецПроцедуры
7 SED
 
29.08.12
11:54
в документах есть реквизит "Курс" можно в печ форме просто добавитиь <Ит.Операция.Документ.Курс>
8 SED
 
29.08.12
12:02
Либо через Договор.Валюта
9 Pechka
 
29.08.12
12:36
в печ форме добавила ИстВал.ЗначениеНаДату(Ит.Операция.Документ.ДатаДок)- получилось) спасибо!
10 Pechka
 
29.08.12
13:06
помогите пожалуйста еще вычислить Количество документа,также столбец,чтоб вышел
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший