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

Новая тема
Показывать по сообщений
"БухИт1=СоздатьОбъект("БухгалтерскиеИтоги");<br>БухИт1.ИспользоватьСубконто(ВидыСубконто.ОсновныеСредства);<br>БухИт1.ВыполнитьЗапрос(,КонДата,"01.1,02.1");<br><br>БухИт2=СоздатьОбъект("БухгалтерскиеИтоги");<br>БухИт2.ИспользоватьСубконто(ВидыСубконто.ОсновныеСредства);<br>БухИт2.ВыполнитьЗапрос(НачДата,КонДата,"01.1","83",,2);"
я тоже так думала по началу, но только потом я заметила что всё глючить когда проходишь цикл, т.е. объекты стираются<br><br>Пока (БИ.ПолучитьСубконто(ВидыСубконто.ОсновныеСредства) = 1) и (БИ1.ПолучитьСубконто(ВидыСубконто.ОсновныеСредства) = 1) и (БИ2.ПолучитьСубконто(ВидыСубконто.ОсновныеСредства) = 1) Цикл<br><br>я вот только не знаю можно ли как-то сделать чтобы все эти выражения были равны<br><br>БИ.ПолучитьСубконто(ВидыСубконто.ОсновныеСредства) = БИ1.ПолучитьСубконто(ВидыСубконто.ОсновныеСредства) = БИ2.... и т.д.
"Вы с функциями не работали?? может как-нить через функцию их прописать?? то что я пыталась вначале, просто может косо написала:<br><br>//__________________________________________________­___________________________<br>Функция ПолучитьСумму(БИ,ТекСчет,Формула,ТекЭлСпр)  <br> Рез=0;<br> БИ.ВыбратьСчета(,,1);<br> Если БИ.ПолучитьСчет(1,ТекСчет) = 1 Тогда<br> Если ПустоеЗначение(ТекЭлСпр)=0 Тогда<br> //БИ.ВыбратьСубконто(1);<br>    Если БИ.ПолучитьСубконто(1,1,ТекЭлСпр)=0 Тогда<br> Возврат Рез;<br> КонецЕсли; <br> КонецЕсли; <br> Если Формула="СНД" Тогда <br> Рез = БИ.СНД();         <br> ИначеЕсли Формула="СНК" Тогда        <br> Рез = БИ.СНК(); <br> ИначеЕсли Формула="СКК" Тогда        <br> Рез = БИ.СКК(); <br> ИначеЕсли Формула="СКД" Тогда        <br> Рез = БИ.СКД(); <br> ИначеЕсли Формула="КО" Тогда        <br> Рез = БИ.КО();  <br> Если БИ.ПолучитьКорСчет(,СчетПоКоду("02.10",ПланыСчетов.Основной)) = 1 Тогда <br> //сообщить(БИ.КорДО());<br> Рез=Рез-БИ.КорДО();<br> КонецЕсли;<br><br> ИначеЕсли Формула="ДО" Тогда        <br> Рез = БИ.ДО(); <br> ИначеЕсли Формула="КорДО" Тогда<br> Если БИ.ПолучитьКорСчет(,СчетПоКоду("83.01",ПланыСчетов.Основной)) = 1 Тогда<br> Рез=БИ.КорДО();<br> КонецЕсли;<br> ИначеЕсли Формула="КорКО" Тогда<br> Если БИ.ПолучитьКорСчет(,СчетПоКоду("83.01",ПланыСчетов.Основной)) = 1 Тогда<br> Рез=БИ.КорКО();<br> КонецЕсли;<br> КонецЕсли; <br> КонецЕсли; <br> Возврат Рез;<br>КонецФункции  "
мой вариант более быстрый и читабельный, мне кажется
"мне тоже он больше нравиться!!! Только что с этим делать там где стоят вопросы?? их объединить или как то по другому нельзя..??<br><br>БИ3 = СоздатьОбъект("БухгалтерскиеИтоги");<br>БИ3.ИспользоватьСубконто(ВидыСубконто.ОсновныеСредства, , 1);<br>БИ3.ВыполнитьЗапрос(ВыбНачПериода, ВыбКонПериода, "01", "08.30.02",, 3, "Проводка", "СК");<br><br>Таб.ВывестиСекцию("Шапка");<br>Таб.Опции(0,0,Таб.ВысотаТаблицы(),0); <br>    <br>БИ.ВыбратьСубконто(ВидыСубконто.ОсновныеСредства);              ?????????<br>БИ2.ВыбратьСубконто(ВидыСубконто.ОсновныеСредства);             ?????????   <br>БИ3.ВыбратьСубконто(ВидыСубконто.ОсновныеСредства);              ?????????<br><br>ном=0;<br>СКД = 0;<br>СКК = 0;     <br><br>Пока (БИ.ПолучитьСубконто(ВидыСубконто.ОсновныеСредства) = 1) и (БИ1.ПолучитьСубконто(ВидыСубконто.ОсновныеСредства) = 1) и (БИ2.ПолучитьСубконто(ВидыСубконто.ОсновныеСредства) = 1) Цикл ????????????<br><br>    <br>        ном    = ном + 1;          <br>        Группа = БИ.Субконто(ВидыСубконто.ОсновныеСредства).Группа;<br>        ИнвОС  = БИ.Субконто(ВидыСубконто.ОсновныеСредства).Код;<br>        НаимОС = БИ.Субконто(ВидыСубконто.ОсновныеСредства).Наименование;<br>        ТекДата   = РабочаяДата();<br>        ДатаВВода = БИ.Субконто(ВидыСубконто.ОсновныеСредства).ТекущийЭлемент().ДатаВводаВЭксплуатацию.Получить(ТекДата);<br>        ДО01 = БИ.ДО(СчетПоКоду ("01"));  <br>....................<br>"
"БИ = СоздатьОбъект("БухгалтерскиеИтоги");<br>БИ.ИспользоватьСубконто(ВидыСубконто.ОсновныеСредства, , 1);<br>БИ.ВыполнитьЗапрос(ВыбНачПериода, ВыбКонПериода, "01",,, 3, , "С");  <br><br>БИ2 = СоздатьОбъект("БухгалтерскиеИтоги");<br>БИ2.ИспользоватьСубконто(ВидыСубконто.ОсновныеСредства, , 1);<br>БИ2.ВыполнитьЗапрос(ВыбНачПериода, ВыбКонПериода, "01","83.01",, 3, "Проводка", "СК");  <br><br>БИ3 = СоздатьОбъект("БухгалтерскиеИтоги");<br>БИ3.ИспользоватьСубконто(ВидыСубконто.ОсновныеСредства, , 1);<br>БИ3.ВыполнитьЗапрос(ВыбНачПериода, ВыбКонПериода, "01", "08.30.02",, 3, "Проводка", "СК");<br><br>Таб.ВывестиСекцию("Шапка");<br>Таб.Опции(0,0,Таб.ВысотаТаблицы(),0); <br>    <br>БИ.ВыбратьСубконто(ВидыСубконто.ОсновныеСредства);<br>БИ2.ВыбратьСубконто(ВидыСубконто.ОсновныеСредства);  <br>БИ3.ВыбратьСубконто(ВидыСубконто.ОсновныеСредства);<br><br>ном=0;<br>СКД = 0;<br>СКК = 0;     <br><br>Пока (БИ.ПолучитьСубконто(ВидыСубконто.ОсновныеСредства) = 1) Цикл<br><br>    <br>        ном    = ном + 1;          <br>        Группа = БИ.Субконто(ВидыСубконто.ОсновныеСредства).Группа;<br>        ИнвОС  = БИ.Субконто(ВидыСубконто.ОсновныеСредства).Код;<br>        НаимОС = БИ.Субконто(ВидыСубконто.ОсновныеСредства).Наименование;<br>        ТекДата   = РабочаяДата();<br>        ДатаВВода = БИ.Субконто(ВидыСубконто.ОсновныеСредства).ТекущийЭлемент().ДатаВводаВЭксплуатацию.Получить(ТекДата);<br>        ДО01 = БИ.ДО(СчетПоКоду ("01"));  <br>        КО02 = БИ.КО(СчетПоКоду ("02"));<br>        ОстСтоим  = БИ.СКД() - БИ.СКК();<br><br><br>Пока (БИ2.ПолучитьСубконто(ВидыСубконто.ОсновныеСредства) = 1) Цикл<br>        //Переоценка <br>        КО83 = БИ2.ДО(СчетПоКоду("01"));  <br>        ДО83 = БИ2.КО(СчетПоКоду("02"));<br>        //Модернизация <br>КонецЦикла;<br>................<br><br>       Таб.ВывестиСекцию("Строка");  <br>        <br>КонецЦикла;<br>"
я вот еще, что подумала может вот эту группировку Пока (БИ.ПолучитьСубконто(ВидыСубконто.ОсновныеСредства) = 1) и (БИ1.ПолучитьСубконто(ВидыСубконто.ОсновныеСредства) = 1) и (БИ2.ПолучитьСубконто(ВидыСубконто.ОсновныеСредства) = 1) Цикл заменить на группировку по группам? Как это сделать чтобы было лучше не знаю.........
Что то вы всего туда написали и даже 3 раза к бухитогам обратились. Давайте проще сделаем. Скажите, какие данные нужно увидеть в отчете?
Группу основных средств<br>Группу, которая иерархически разделена<br>Инвентарный код<br>Наименование<br>Срок полезного использования<br>СКД 01<br>СКК 02<br>Д 01 К 83 - на начало года<br>Д 83 К 02 - на начало года<br>Д 01 К 08<br>Нал 01<br>Нал 02<br>Нал 04<br>и т.д.<br><br><br>
"Простите, стормозил. Все можно запихать в один запрос. Я попробовал, все работает нормально:<br>ТекстЗапроса="ОсновноеСредство=Справочник.ОсновныеСредства.ТекущийЭлемент;<br>             |АмортизационнаяГруппа=Справочник.ОсновныеСредства.АмортизационнаяГруппа;<br>             |Группировка АмортизационнаяГруппа;<br>             |Группировка ОсновноеСредство упорядочить по ОсновноеСредство.Наименование;";<br> <br>Запрос=СоздатьОбъект("Запрос");<br>Если Запрос.Выполнить(ТекстЗапроса)=1 Тогда<br>   БухИтоги=СоздатьОбъект("БухгалтерскиеИтоги");<br>   БухИтоги.ИспользоватьСубконто(ВидыСубконто.ОсновныеСредства);<br>   БухИтоги.ВыполнитьЗапрос(НачДата,КонДата,"01.1,02.1","83.1",,3);<br> <br>   Пока Запрос.Группировка("АмортизационнаяГруппа")=1 Цикл<br>      Таб.ВывестиСекцию("СтрокаАмортизационнойГруппы");<br>      Пока Запрос.Группировка("ОсновноеСредство")=1 Цикл<br>         Если Запрос.ОсновноеСредство.ЭтоГруппа()=1 Тогда<br>            Таб.ВывестиСекцию("СтрокаГруппыСправочникаОС");<br>         Иначе<br>            БалансоваяСтоимость=0;<br>            Износ=0;<br>            Переоценка=0;<br>            Если БухИтоги.ПолучитьСчет(,Сч01_1)=1 Тогда<br>               Если (БухИтоги.ПолучитьСубконто(,,Запрос.ОсновноеСредство)=1) Тогда<br>                  БалансоваяСтоимость=БухИтоги.СКД();<br>                  Если БухИтоги.ПолучитьКорСчет(,Сч83_1)=1 Тогда<br>                     Переоценка=БухИтоги.КорДО();<br>                  КонецЕсли;<br>               КонецЕсли;<br>            КонецЕсли;<br> <br>            Если БухИтоги.ПолучитьСчет(,Сч02_1)=1 Тогда<br>               Если (БухИтоги.ПолучитьСубконто(,,Запрос.ОсновноеСредство)=1) Тогда<br>                  Износ=БухИтоги.СКК();<br>               КонецЕсли;<br>            КонецЕсли;<br>            Таб.ВывестиСекцию("СтрокаСведенийОбОС");<br>         КонецЕсли;<br>      КонецЦикла;<br>   КонецЦикла;<br>КонецЕсли;<br><br>P.S. По идее, функции обращения к бухитогам можно прямо в текстовый запрос затолкать. Раньше 1С в типовых конфигурациях эим пользовалась, а потом не стала, не знаю почему"
Читают тему
(гостей: 1)

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