Функции, таблицы значений
01.07.2009
21:03
#11
"БухИт1=СоздатьОбъект("БухгалтерскиеИтоги");
БухИт1.ИспользоватьСубконто(ВидыСубконто.ОсновныеСредства);
БухИт1.ВыполнитьЗапрос(,КонДата,"01.1,02.1");
БухИт2=СоздатьОбъект("БухгалтерскиеИтоги");
БухИт2.ИспользоватьСубконто(ВидыСубконто.ОсновныеСредства);
БухИт2.ВыполнитьЗапрос(НачДата,КонДата,"01.1","83",,2);"
БухИт1.ИспользоватьСубконто(ВидыСубконто.ОсновныеСредства);
БухИт1.ВыполнитьЗапрос(,КонДата,"01.1,02.1");
БухИт2=СоздатьОбъект("БухгалтерскиеИтоги");
БухИт2.ИспользоватьСубконто(ВидыСубконто.ОсновныеСредства);
БухИт2.ВыполнитьЗапрос(НачДата,КонДата,"01.1","83",,2);"
02.07.2009
03:12
#12
я тоже так думала по началу, но только потом я заметила что всё глючить когда проходишь цикл, т.е. объекты стираются
Пока (БИ.ПолучитьСубконто(ВидыСубконто.ОсновныеСредства) = 1) и (БИ1.ПолучитьСубконто(ВидыСубконто.ОсновныеСредства) = 1) и (БИ2.ПолучитьСубконто(ВидыСубконто.ОсновныеСредства) = 1) Цикл
я вот только не знаю можно ли как-то сделать чтобы все эти выражения были равны
БИ.ПолучитьСубконто(ВидыСубконто.ОсновныеСредства) = БИ1.ПолучитьСубконто(ВидыСубконто.ОсновныеСредства) = БИ2.... и т.д.
Пока (БИ.ПолучитьСубконто(ВидыСубконто.ОсновныеСредства) = 1) и (БИ1.ПолучитьСубконто(ВидыСубконто.ОсновныеСредства) = 1) и (БИ2.ПолучитьСубконто(ВидыСубконто.ОсновныеСредства) = 1) Цикл
я вот только не знаю можно ли как-то сделать чтобы все эти выражения были равны
БИ.ПолучитьСубконто(ВидыСубконто.ОсновныеСредства) = БИ1.ПолучитьСубконто(ВидыСубконто.ОсновныеСредства) = БИ2.... и т.д.
02.07.2009
03:24
#13
"Вы с функциями не работали?? может как-нить через функцию их прописать?? то что я пыталась вначале, просто может косо написала:
//__________________________________________________ ___________________________
Функция ПолучитьСумму(БИ,ТекСчет,Формула,ТекЭлСпр)
Рез=0;
БИ.ВыбратьСчета(,,1);
Если БИ.ПолучитьСчет(1,ТекСчет) = 1 Тогда
Если ПустоеЗначение(ТекЭлСпр)=0 Тогда
//БИ.ВыбратьСубконто(1);
Если БИ.ПолучитьСубконто(1,1,ТекЭлСпр)=0 Тогда
Возврат Рез;
КонецЕсли;
КонецЕсли;
Если Формула="СНД" Тогда
Рез = БИ.СНД();
ИначеЕсли Формула="СНК" Тогда
Рез = БИ.СНК();
ИначеЕсли Формула="СКК" Тогда
Рез = БИ.СКК();
ИначеЕсли Формула="СКД" Тогда
Рез = БИ.СКД();
ИначеЕсли Формула="КО" Тогда
Рез = БИ.КО();
Если БИ.ПолучитьКорСчет(,СчетПоКоду("02.10",ПланыСчетов.Основной)) = 1 Тогда
//сообщить(БИ.КорДО());
Рез=Рез-БИ.КорДО();
КонецЕсли;
ИначеЕсли Формула="ДО" Тогда
Рез = БИ.ДО();
ИначеЕсли Формула="КорДО" Тогда
Если БИ.ПолучитьКорСчет(,СчетПоКоду("83.01",ПланыСчетов.Основной)) = 1 Тогда
Рез=БИ.КорДО();
КонецЕсли;
ИначеЕсли Формула="КорКО" Тогда
Если БИ.ПолучитьКорСчет(,СчетПоКоду("83.01",ПланыСчетов.Основной)) = 1 Тогда
Рез=БИ.КорКО();
КонецЕсли;
КонецЕсли;
КонецЕсли;
Возврат Рез;
КонецФункции "
//__________________________________________________
Функция ПолучитьСумму(БИ,ТекСчет,Формула,ТекЭлСпр)
Рез=0;
БИ.ВыбратьСчета(,,1);
Если БИ.ПолучитьСчет(1,ТекСчет) = 1 Тогда
Если ПустоеЗначение(ТекЭлСпр)=0 Тогда
//БИ.ВыбратьСубконто(1);
Если БИ.ПолучитьСубконто(1,1,ТекЭлСпр)=0 Тогда
Возврат Рез;
КонецЕсли;
КонецЕсли;
Если Формула="СНД" Тогда
Рез = БИ.СНД();
ИначеЕсли Формула="СНК" Тогда
Рез = БИ.СНК();
ИначеЕсли Формула="СКК" Тогда
Рез = БИ.СКК();
ИначеЕсли Формула="СКД" Тогда
Рез = БИ.СКД();
ИначеЕсли Формула="КО" Тогда
Рез = БИ.КО();
Если БИ.ПолучитьКорСчет(,СчетПоКоду("02.10",ПланыСчетов.Основной)) = 1 Тогда
//сообщить(БИ.КорДО());
Рез=Рез-БИ.КорДО();
КонецЕсли;
ИначеЕсли Формула="ДО" Тогда
Рез = БИ.ДО();
ИначеЕсли Формула="КорДО" Тогда
Если БИ.ПолучитьКорСчет(,СчетПоКоду("83.01",ПланыСчетов.Основной)) = 1 Тогда
Рез=БИ.КорДО();
КонецЕсли;
ИначеЕсли Формула="КорКО" Тогда
Если БИ.ПолучитьКорСчет(,СчетПоКоду("83.01",ПланыСчетов.Основной)) = 1 Тогда
Рез=БИ.КорКО();
КонецЕсли;
КонецЕсли;
КонецЕсли;
Возврат Рез;
КонецФункции "
03.07.2009
03:47
#15
"мне тоже он больше нравиться!!! Только что с этим делать там где стоят вопросы?? их объединить или как то по другому нельзя..??
БИ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"));
....................
"
БИ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"));
....................
"
03.07.2009
05:30
#16
"БИ = СоздатьОбъект("БухгалтерскиеИтоги");
БИ.ИспользоватьСубконто(ВидыСубконто.ОсновныеСредства, , 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);
БИ.ВыполнитьЗапрос(ВыбНачПериода, ВыбКонПериода, "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"));
//Модернизация
КонецЦикла;
................
Таб.ВывестиСекцию("Строка");
КонецЦикла;
"
03.07.2009
07:36
#17
я вот еще, что подумала может вот эту группировку Пока (БИ.ПолучитьСубконто(ВидыСубконто.ОсновныеСредства) = 1) и (БИ1.ПолучитьСубконто(ВидыСубконто.ОсновныеСредства) = 1) и (БИ2.ПолучитьСубконто(ВидыСубконто.ОсновныеСредства) = 1) Цикл заменить на группировку по группам? Как это сделать чтобы было лучше не знаю.........
03.07.2009
11:28
#18
Что то вы всего туда написали и даже 3 раза к бухитогам обратились. Давайте проще сделаем. Скажите, какие данные нужно увидеть в отчете?
03.07.2009
18:32
#19
Группу основных средств
Группу, которая иерархически разделена
Инвентарный код
Наименование
Срок полезного использования
СКД 01
СКК 02
Д 01 К 83 - на начало года
Д 83 К 02 - на начало года
Д 01 К 08
Нал 01
Нал 02
Нал 04
и т.д.
Группу, которая иерархически разделена
Инвентарный код
Наименование
Срок полезного использования
СКД 01
СКК 02
Д 01 К 83 - на начало года
Д 83 К 02 - на начало года
Д 01 К 08
Нал 01
Нал 02
Нал 04
и т.д.
05.07.2009
10:18
#20
"Простите, стормозил. Все можно запихать в один запрос. Я попробовал, все работает нормально:
ТекстЗапроса="ОсновноеСредство=Справочник.ОсновныеСредства.ТекущийЭлемент;
|АмортизационнаяГруппа=Справочник.ОсновныеСредства.АмортизационнаяГруппа;
|Группировка АмортизационнаяГруппа;
|Группировка ОсновноеСредство упорядочить по ОсновноеСредство.Наименование;";
Запрос=СоздатьОбъект("Запрос");
Если Запрос.Выполнить(ТекстЗапроса)=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 Тогда
БухИтоги=СоздатьОбъект("БухгалтерскиеИтоги");
БухИтоги.ИспользоватьСубконто(ВидыСубконто.ОсновныеСредства);
БухИтоги.ВыполнитьЗапрос(НачДата,КонДата,"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.2.19.1 заполнение документа "Регитстрация оплат от покупателей для НДС"Как обновить, не удаляя данные
Читают тему
(гостей: 1)