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

Новая тема
Показывать по 10 20 40 сообщений
"Всем приветики :-)) Извините за беспокойство, я совсем новичок в 1с 7.7. Можно ли так делать или как то нуна по другому? Попросили собрать ОС по 01, 83, 84, 02,..... Я решила каждый счет прописать в функцию, а потом записать все в таблицу значений, а из неё уже выгрузить в отчет.

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

Если БИ.ПолучитьКорСчет(СчетПоКоду("01",ПланыСчетов.Основной)) = 1 Тогда
Рез=Рез-БИ.КорДО();
КонецЕсли;

Если БИ.ПолучитьКорСчет(СчетПоКоду("83",ПланыСчетов.Основной)) = 1 Тогда
Рез=Рез-БИ.КорДО();
КонецЕсли;
КонецЕсли;
КонецЕсли;
Возврат Рез;
КонецФункции

//*******************************************
Процедура Сформировать()


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

Таб=СоздатьОбъект("Таблица");
ТабЗнач=СоздатьОбъект("ТаблицаЗначений");
ТабЗначИтог=СоздатьОбъект("ТаблицаЗначений");
Таб.ИсходнаяТаблица("Таблица");

// Создадим структурированную таблицу
ТабЗнач = СоздатьОбъект ("ТаблицаЗначений");
ТабЗнач.НоваяКолонка("ОС","Число",19,2);
ТабЗнач.НоваяКолонка("Первонач","Число",19,2);
ТабЗнач.НоваяКолонка("Реконструкция","Число",19,2);

ТабЗнач.НаимОС = БИ.Субконто(ВидыСубконто.ОсновныеСредства).Наименование;
ТабЗнач.ПервоначСтоим = ПолучитьСумму(БИ,"83","КО",ТабЗнач);
ТабЗнач.Реконструкция = ПолучитьСумму(БИ,"01","КО",ТабЗнач);

КонецПроцедуры
"
"Может и так будет работать, но я бы проще делал, наверное. Кстати, у вас ниака не задан период, за который вы желаете получить сведения.

Сч01_1=СчетПоКоду("01.1");
Сч02_1=СчетПоКоду("02.1");
БухИт=СоздатьОбъект("БухгелтерскиеИтоги");
БухИт.ИспользоватьСубконто(ВидыСубконто.ОсновныеСредства);
БухИт.ВыполнитьЗапрос(,НужнаяДата,"01.1,02.1");
БухИт.ВыбратьСубконто(ВидыСубконто.ОсновныеСредства);
Пока БухИт.ПолучитьСубконто(ВидыСубконто.ОсновныеСредства)=1 Цикл
  БалансоваяСтоимость=0;
  Износ=0;
  Если БухИт.ПолучитьСчет(,Сч01_1)=1 Тогда
      БалансоваяСтоимость=БухИт.СКД();
  КонецЕсли;
  Если БухИт.ПолучитьСчет(,Сч02_1)=1 Тогда
      Износ=БухИт.СКК();
  КонецЕсли;
 
  Если (БалансоваяСтоимость<>0) ИЛИ (Износ<>0) Тогда
      Таб.ВывестиСекцию("Строка"); //вывод сведений в какую нибудь таблицу
  КонецЕсли;
КонецЦикла;

P.S. Как связаны основные средства и счета 83, 84? Если у вас меняный план счетов и там в самом деле что то есть по основным, то измените мой алгоритм, добавив туда их"
"в этом месте они завязываются между собой или нет, т.е. каждый независимо выгружать в будущем можно?
БухИт.ВыполнитьЗапрос(,НужнаяДата,"01.1,02.1");

"
"выгружать в будущем можно:
БухИт.ВыбратьСчета();
Пока БухИт.ПолучитьСчет()=1 Цикл
...

будет перебор итогов по каждому счету. если обратиться к БухИт.ХХХХ() до проведения выборки (до ВыбратьСчета())или до прямого позиционирования (ПолучитьСчет()), то получим "завязываются между собой", а конкретнее - сводный остаток или оборот. В общем и то и другое можно достать"
"Если мне нужно к примеру так:
первоначальная стоимость = ДО(01);
амортизация = КО(02)
переоценка = Д01 К83
и т.д. Если брать из твоего примера:

Сч01_1=СчетПоКоду("01.1");
Сч02_1=СчетПоКоду("02.1");
Сч83=СчетПоКоду("83");

БухИт=СоздатьОбъект("БухгелтерскиеИтоги");
БухИт.ИспользоватьСубконто(ВидыСубконто.ОсновныеСредства);

БухИт.ВыполнитьЗапрос(,НужнаяДата,"01.1,02.1"); здесь все счета описывать?? или здесь написать БухИт.ВыбратьСчета("перечислить тут все счета");

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

переоценка = 0;

 Если БухИт.ПолучитьСчет(,Сч01_1)=1 Тогда
     БалансоваяСтоимость=БухИт.СКД();
 КонецЕсли;

 Если БухИт.ПолучитьСчет(,Сч02_1)=1 Тогда
     Износ=БухИт.СКК();
 КонецЕсли;


 Если БухИт.ПолучитьСчет(,Сч83)=1 Тогда
     Износ=БухИт.СКК();
 КонецЕсли;

  Если (БалансоваяСтоимость<>0) ИЛИ (Износ<>0) Тогда
     Таб.ВывестиСекцию("Строка"); //вывод сведений в какую нибудь таблицу
 КонецЕсли;
КонецЦикла;

"
И еще чтобы прописать проводку - Д01 К83 через БИ.ОБ или СКК(83). Как будет правильнее?
"> первоначальная стоимость = ДО(01);
> амортизация = КО(02)
> переоценка = Д01 К83

почему "первоначальная стоимость" = ДО()? ДО - дебетовый оборот! Это изменение балансовой стоимости за какой то период. То есть, по сути "приобретенные основные средства с НачДата по КонДата".
Читаем описания функций класса "БухгалтерскиеИтоги":
СНД() - сальдо начальное дебетовое
СНК() - сальдо начальное кредитовое
ДО() - дебетовый оборот
...

короче, надо ознакомиться с тем что такое план счетов и что означает признак у счета "Активный", "Пассивный", "Активно-Пассивный". Именно это позволит вам понять то ли брать нам дебетовый, то ли кредитовый остаток. В двух словах: для активных счетов берем дебетовый, для пассивных - кредитовый, для активно-пассивных я делаю "дебетовый минус кредитовый".
Кроме того, надо пообщаться с бухгалтером, чтобы она рассказала элементарные принципы ведения учета. На это надо 10 минут, это позволит вам понять в каких ситуациях мы должны обращаться к остаткам (к сальдо), а в каких к оборотам.

Теперь к делу:
> БухИт.ВыполнитьЗапрос(,НужнаяДата,"01.1,02.1"); здесь все счета описывать?? или здесь написать БухИт.ВыбратьСчета("перечислить тут все счета");
читаем желтую книжку, с чего вы решили, что конструкция БухИт.ВыбратьСчета("перечислить тут все счета"); имеет смысл?

ВыбратьСчета(,,,)
Синтаксис:
ВыбратьСчета(<ФлагВсе>,<ФлагДК>,<Номер>,<РазвСальдо>)

Куда вы тут счета напишете? Надо так:
БухИт.ВыполнитьЗапрос(,НужнаяДата,"01.1,02.1");// тут пишем ВСЕ НУЖНЫЕ для нашей задачи счета, по которым нужно получить остатки. Если нам нужно получить переоценку, я так понял, что для вас это обороты вида Д01.1 - К83. Для такого нужен не такой запрос, причем он имеет смысл только для какого то диапазона
БухИт.ВыполнитьЗапрос(НачДата,КонДата,"01.1","83",,2); //читайте в ЖКК что означает 2

"
Что за желтая книжка? и ЖКК??
тогда будет много запросов?
Мне хотелось в один запрос их все пройти, разделить не могу так как всего в отчете 30 колонок :((
ЖКК (желтокрасные книжки) и желтая книжка - словая синонимы. Это книги, которые идут в комплекте с купленной программой. Запросов будет 2
Если запроса будет 2 их как то нужно называть 1 и 2 или как пишутся 2 запроса?
Читают тему
(гостей: 1)

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