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

1. nany11 01.07.09 10:57 Сейчас в теме
Всем приветики :-)) Извините за беспокойство, я совсем новичок в 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","КО",ТабЗнач);

КонецПроцедуры
+
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
10. nany11 01.07.09 12:27 Сейчас в теме
у меня раньше было

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


Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Сформировать");

БИ = СоздатьОбъект("БухгалтерскиеИтоги");
БИ.ИспользоватьСубконто(ВидыСубконто.ОсновныеСредства, , 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.ПолучитьСубконто(ВидыСубконто.ОсновныеСредства) = 1) и (БИ2.ПолучитьСубконто(ВидыСубконто.ОсновныеСредства) = 1) Цикл
Цикл


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

СрокПолСтоим = БИ.Субконто(ВидыСубконто.ОсновныеСредства).ТекущийЭлемент().СрокИспользования.Получить(ТекДата);
//норма = 100 / срок * 12
НормаБух = (100 / (БИ.Субконто(ВидыСубконто.ОсновныеСредства).ТекущийЭлемент().СрокИспользования.Получить(ТекДата))) * 12;


//сумма месячной амортизации в БУ
МесАмортБУ = ((ДО01 * НормаБух)/12)/100;
ОстСрокБУ = ОстСтоим / МесАмортБУ;

.....

Таб.ВывестиСекцию("Строка");

КонецЦикла;

// Вывод заполненной формы

Таб.ТолькоПросмотр(1);
Таб.ВывестиСекцию("Подвал");
Таб.Опции(0,0,13,0,"ОпцииПечати");
Таб.Показать("Сформировать","");

КонецПроцедуры

потом я заметила что всё глючить, т.е. объекты стираются
вместо этого выражения
Пока (БИ.ПолучитьСубконто(ВидыСубконто.ОсновныеСредства) = 1) и (БИ1.ПолучитьСубконто(ВидыСубконто.ОсновныеСредства) = 1) и (БИ2.ПолучитьСубконто(ВидыСубконто.ОсновныеСредства) = 1) Цикл
нужно как-то сделать что все эти выражения были равны
БИ.ПолучитьСубконто(ВидыСубконто.ОсновныеСредства) = БИ1.ПолучитьСубконто(ВидыСубконто.ОсновныеСредства) и т.д.
+
16. nany11 01.07.09 16:13 Сейчас в теме
БИ.ВыполнитьЗапрос(ВыбНачПериода, ВыбКонПериода, "01; 02; НАЛ 01","08.30.02; 83; 84; НАЛ 02",, 3, , "СК");
Если потом каждый счет можно оттуда выбрать, т.е.
первоначальная стоимость = ДО(01);
амортизация = КО(02)
переоценка = Д01 К83
и т.д.
+
2. Tatitutu 3855 01.07.09 11:53 Сейчас в теме
нет так не пойдет
сама внимательно код прочитай
ТабЗнач=СоздатьОбъект("ТаблицаЗначений"); //2 раза

колонку создаешь ОС и почему то число ТабЗнач.НоваяКолонка("ОС","Число",19,2);
а заполнить хочешь как НаимОС
ТабЗнач.НаимОС = БИ.Субконто(ВидыСубконто.ОсновныеСредства).Наименование;

и чтобы начать заполнять нужно инициировать новую строку
ТабЗнач.НоваяСтрока();
+
3. nany11 01.07.09 12:01 Сейчас в теме
Спасибо :-), правда теперь другая ошибка..

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

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

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

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


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

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

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

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

КонецПроцедуры

ТабЗнач.НаимОС = БИ.Субконто(ВидыСубконто.ОсновныеСредства).Наименование;
{C:\DOCUMENTS AND SETTINGS\АДМИНИСТРАТОР\РАБОЧИЙ СТОЛ\7.ERT(54)}: Данная операция допустима только в режиме запроса по аналитике !
+
4. Tatitutu 3855 01.07.09 12:05 Сейчас в теме
подумай немного....представь что ты хочешь в итоге получить ?
таблицу с 1 строкой ?
+
5. nany11 01.07.09 12:14 Сейчас в теме
цикл, точно ..... только ошибка не исчезает

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


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

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

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

Для ии=1 по ТабЗнач.КоличествоСтрок() Цикл
ТабЗнач.ПолучитьСтрокуПоНомеру(ии);

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

КонецПроцедуры
+
6. Tatitutu 3855 01.07.09 12:17 Сейчас в теме
что ты хочешь в итоге получить ?
Для ии=1 по ТабЗнач.КоличествоСтрок() Цикл // вот это что она у тебя пустая где ты ее заполняешь я про ТабЗнач

и вот это
БИ.ИспользоватьСубконто(ВидыСубконто.ОсновныеСредства); //посмотри подумай
+
7. nany11 01.07.09 12:17 Сейчас в теме
перепутала

Для ном =1 по ТабЗнач.КоличествоСтрок() Цикл
ТабЗнач.ПолучитьСтрокуПоНомеру(ии);

ном = ном + 1;
ТабЗнач.НоваяСтрока();
ТабЗнач.НаимОС = БИ.Субконто(ВидыСубконто.ОсновныеСредства).Наименование;
ТабЗнач.Первонач = ПолучитьСумму(БИ,"83","КО",ТабЗнач);
ТабЗнач.Реконструкция = ПолучитьСумму(БИ,"01","КО",ТабЗнач);
КонецЦикла;
+
8. nany11 01.07.09 12:17 Сейчас в теме
перепутала

Для ном =1 по ТабЗнач.КоличествоСтрок() Цикл
ТабЗнач.ПолучитьСтрокуПоНомеру(ном);

ном = ном + 1;
ТабЗнач.НоваяСтрока();
ТабЗнач.НаимОС = БИ.Субконто(ВидыСубконто.ОсновныеСредства).Наименование;
ТабЗнач.Первонач = ПолучитьСумму(БИ,"83","КО",ТабЗнач);
ТабЗнач.Реконструкция = ПолучитьСумму(БИ,"01","КО",ТабЗнач);
КонецЦикла;
+
9. nany11 01.07.09 12:20 Сейчас в теме
11. Tatitutu 3855 01.07.09 12:48 Сейчас в теме
честно пытался, но не понял.
ты пока код не копируй, а поэтапно напиши что и чего ты хочешь получить
это отчет будет или обработка (изменение данных)
+
12. nany11 01.07.09 15:12 Сейчас в теме
я тут подумала а вот так мона:
 БИ.ВыполнитьЗапрос(ВыбНачПериода, ВыбКонПериода, "01; 02; НАЛ 01","08.30.02; 83; 84; НАЛ 02",, 3, , "СК");

или они завяжутся между собой, т.е. каждый независимо выгружать?
+
13. nany11 01.07.09 15:18 Сейчас в теме
извините, что Вас загрузила. Это обработка будет.
+
14. Tatitutu 3855 01.07.09 15:30 Сейчас в теме
еще не загрузила. Я жду от тебя исходной информации.
+
15. nany11 01.07.09 15:32 Сейчас в теме
:-)) я вот насчёт 12 это по отдельности или все взаимосвязаны?
+
Внимание! Тема сдана в архив

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот