Функции, таблицы значений

Новая тема
Показывать по 10 20 40 сообщений
"БухИт1=СоздатьОбъект("БухгалтерскиеИтоги");
БухИт1.ИспользоватьСубконто(ВидыСубконто.ОсновныеСредства);
БухИт1.ВыполнитьЗапрос(,КонДата,"01.1,02.1");

БухИт2=СоздатьОбъект("БухгалтерскиеИтоги");
БухИт2.ИспользоватьСубконто(ВидыСубконто.ОсновныеСредства);
БухИт2.ВыполнитьЗапрос(НачДата,КонДата,"01.1","83",,2);"
я тоже так думала по началу, но только потом я заметила что всё глючить когда проходишь цикл, т.е. объекты стираются

Пока (БИ.ПолучитьСубконто(ВидыСубконто.ОсновныеСредства) = 1) и (БИ1.ПолучитьСубконто(ВидыСубконто.ОсновныеСредства) = 1) и (БИ2.ПолучитьСубконто(ВидыСубконто.ОсновныеСредства) = 1) Цикл

я вот только не знаю можно ли как-то сделать чтобы все эти выражения были равны

БИ.ПолучитьСубконто(ВидыСубконто.ОсновныеСредства) = БИ1.ПолучитьСубконто(ВидыСубконто.ОсновныеСредства) = БИ2.... и т.д.
"Вы с функциями не работали?? может как-нить через функцию их прописать?? то что я пыталась вначале, просто может косо написала:

//__________________________________________________­___________________________
Функция ПолучитьСумму(БИ,ТекСчет,Формула,ТекЭлСпр)  
Рез=0;
БИ.ВыбратьСчета(,,1);
Если БИ.ПолучитьСчет(1,ТекСчет) = 1 Тогда
Если ПустоеЗначение(ТекЭлСпр)=0 Тогда
//БИ.ВыбратьСубконто(1);
   Если БИ.ПолучитьСубконто(1,1,ТекЭлСпр)=0 Тогда
Возврат Рез;
КонецЕсли;
КонецЕсли;
Если Формула="СНД" Тогда
Рез = БИ.СНД();        
ИначеЕсли Формула="СНК" Тогда        
Рез = БИ.СНК();
ИначеЕсли Формула="СКК" Тогда        
Рез = БИ.СКК();
ИначеЕсли Формула="СКД" Тогда        
Рез = БИ.СКД();
ИначеЕсли Формула="КО" Тогда        
Рез = БИ.КО();  
Если БИ.ПолучитьКорСчет(,СчетПоКоду("02.10",ПланыСчетов.Основной)) = 1 Тогда
//сообщить(БИ.КорДО());
Рез=Рез-БИ.КорДО();
КонецЕсли;

ИначеЕсли Формула="ДО" Тогда        
Рез = БИ.ДО();
ИначеЕсли Формула="КорДО" Тогда
Если БИ.ПолучитьКорСчет(,СчетПоКоду("83.01",ПланыСчетов.Основной)) = 1 Тогда
Рез=БИ.КорДО();
КонецЕсли;
ИначеЕсли Формула="КорКО" Тогда
Если БИ.ПолучитьКорСчет(,СчетПоКоду("83.01",ПланыСчетов.Основной)) = 1 Тогда
Рез=БИ.КорКО();
КонецЕсли;
КонецЕсли;
КонецЕсли;
Возврат Рез;
КонецФункции  "
мой вариант более быстрый и читабельный, мне кажется
"мне тоже он больше нравиться!!! Только что с этим делать там где стоят вопросы?? их объединить или как то по другому нельзя..??

БИ3 = СоздатьОбъект("БухгалтерскиеИтоги");
БИ3.ИспользоватьСубконто(ВидыСубконто.ОсновныеСредства, , 1);
БИ3.ВыполнитьЗапрос(ВыбНачПериода, ВыбКонПериода, "01", "08.30.02",, 3, "Проводка", "СК");

Таб.ВывестиСекцию("Шапка");
Таб.Опции(0,0,Таб.ВысотаТаблицы(),0);
   
БИ.ВыбратьСубконто(ВидыСубконто.ОсновныеСредства);              ?????????
БИ2.ВыбратьСубконто(ВидыСубконто.ОсновныеСредства);             ?????????  
БИ3.ВыбратьСубконто(ВидыСубконто.ОсновныеСредства);              ?????????

ном=0;
СКД = 0;
СКК = 0;    

Пока (БИ.ПолучитьСубконто(ВидыСубконто.ОсновныеСредства) = 1) и (БИ1.ПолучитьСубконто(ВидыСубконто.ОсновныеСредства) = 1) и (БИ2.ПолучитьСубконто(ВидыСубконто.ОсновныеСредства) = 1) Цикл ????????????

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

БИ2 = СоздатьОбъект("БухгалтерскиеИтоги");
БИ2.ИспользоватьСубконто(ВидыСубконто.ОсновныеСредства, , 1);
БИ2.ВыполнитьЗапрос(ВыбНачПериода, ВыбКонПериода, "01","83.01",, 3, "Проводка", "СК");  

БИ3 = СоздатьОбъект("БухгалтерскиеИтоги");
БИ3.ИспользоватьСубконто(ВидыСубконто.ОсновныеСредства, , 1);
БИ3.ВыполнитьЗапрос(ВыбНачПериода, ВыбКонПериода, "01", "08.30.02",, 3, "Проводка", "СК");

Таб.ВывестиСекцию("Шапка");
Таб.Опции(0,0,Таб.ВысотаТаблицы(),0);
   
БИ.ВыбратьСубконто(ВидыСубконто.ОсновныеСредства);
БИ2.ВыбратьСубконто(ВидыСубконто.ОсновныеСредства);  
БИ3.ВыбратьСубконто(ВидыСубконто.ОсновныеСредства);

ном=0;
СКД = 0;
СКК = 0;    

Пока (БИ.ПолучитьСубконто(ВидыСубконто.ОсновныеСредства) = 1) Цикл

   
       ном    = ном + 1;          
       Группа = БИ.Субконто(ВидыСубконто.ОсновныеСредства).Группа;
       ИнвОС  = БИ.Субконто(ВидыСубконто.ОсновныеСредства).Код;
       НаимОС = БИ.Субконто(ВидыСубконто.ОсновныеСредства).Наименование;
       ТекДата   = РабочаяДата();
       ДатаВВода = БИ.Субконто(ВидыСубконто.ОсновныеСредства).ТекущийЭлемент().ДатаВводаВЭксплуатацию.Получить(ТекДата);
       ДО01 = БИ.ДО(СчетПоКоду ("01"));  
       КО02 = БИ.КО(СчетПоКоду ("02"));
       ОстСтоим  = БИ.СКД() - БИ.СКК();


Пока (БИ2.ПолучитьСубконто(ВидыСубконто.ОсновныеСредства) = 1) Цикл
       //Переоценка
       КО83 = БИ2.ДО(СчетПоКоду("01"));  
       ДО83 = БИ2.КО(СчетПоКоду("02"));
       //Модернизация
КонецЦикла;
................

      Таб.ВывестиСекцию("Строка");  
       
КонецЦикла;
"
я вот еще, что подумала может вот эту группировку Пока (БИ.ПолучитьСубконто(ВидыСубконто.ОсновныеСредства) = 1) и (БИ1.ПолучитьСубконто(ВидыСубконто.ОсновныеСредства) = 1) и (БИ2.ПолучитьСубконто(ВидыСубконто.ОсновныеСредства) = 1) Цикл заменить на группировку по группам? Как это сделать чтобы было лучше не знаю.........
Что то вы всего туда написали и даже 3 раза к бухитогам обратились. Давайте проще сделаем. Скажите, какие данные нужно увидеть в отчете?
Группу основных средств
Группу, которая иерархически разделена
Инвентарный код
Наименование
Срок полезного использования
СКД 01
СКК 02
Д 01 К 83 - на начало года
Д 83 К 02 - на начало года
Д 01 К 08
Нал 01
Нал 02
Нал 04
и т.д.


"Простите, стормозил. Все можно запихать в один запрос. Я попробовал, все работает нормально:
ТекстЗапроса="ОсновноеСредство=Справочник.ОсновныеСредства.ТекущийЭлемент;
            |АмортизационнаяГруппа=Справочник.ОсновныеСредства.АмортизационнаяГруппа;
            |Группировка АмортизационнаяГруппа;
            |Группировка ОсновноеСредство упорядочить по ОсновноеСредство.Наименование;";

Запрос=СоздатьОбъект("Запрос");
Если Запрос.Выполнить(ТекстЗапроса)=1 Тогда
  БухИтоги=СоздатьОбъект("БухгалтерскиеИтоги");
  БухИтоги.ИспользоватьСубконто(ВидыСубконто.ОсновныеСредства);
  БухИтоги.ВыполнитьЗапрос(НачДата,КонДата,"01.1,02.1","83.1",,3);

  Пока Запрос.Группировка("АмортизационнаяГруппа")=1 Цикл
     Таб.ВывестиСекцию("СтрокаАмортизационнойГруппы");
     Пока Запрос.Группировка("ОсновноеСредство")=1 Цикл
        Если Запрос.ОсновноеСредство.ЭтоГруппа()=1 Тогда
           Таб.ВывестиСекцию("СтрокаГруппыСправочникаОС");
        Иначе
           БалансоваяСтоимость=0;
           Износ=0;
           Переоценка=0;
           Если БухИтоги.ПолучитьСчет(,Сч01_1)=1 Тогда
              Если (БухИтоги.ПолучитьСубконто(,,Запрос.ОсновноеСредство)=1) Тогда
                 БалансоваяСтоимость=БухИтоги.СКД();
                 Если БухИтоги.ПолучитьКорСчет(,Сч83_1)=1 Тогда
                    Переоценка=БухИтоги.КорДО();
                 КонецЕсли;
              КонецЕсли;
           КонецЕсли;

           Если БухИтоги.ПолучитьСчет(,Сч02_1)=1 Тогда
              Если (БухИтоги.ПолучитьСубконто(,,Запрос.ОсновноеСредство)=1) Тогда
                 Износ=БухИтоги.СКК();
              КонецЕсли;
           КонецЕсли;
           Таб.ВывестиСекцию("СтрокаСведенийОбОС");
        КонецЕсли;
     КонецЦикла;
  КонецЦикла;
КонецЕсли;

P.S. По идее, функции обращения к бухитогам можно прямо в текстовый запрос затолкать. Раньше 1С в типовых конфигурациях эим пользовалась, а потом не стала, не знаю почему"
Читают тему
(гостей: 1)

Быстрый переход