Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: БухИтоги  (Прочитано 8406 раз)
0 Пользователей и 1 Гость смотрят эту тему.
ge4r
Участник

ru
Offline Offline

« : 26-08-2009 09:03 » 

задача:
есть 3 счета 012.1 , 012.2 , 10.1
во всех трех ведется учет материалов,  их места хранения,при чем кол-во определенного наименования по 10.1му счету должно быть равно сумме кол-в по 12.1 и 12.2
нужно сделать отчет,что бы таблица имела вид
Место хранения   | 012.1  |  012.2  | 10.1
Наименование        тут кол-ва

как это лучше делать? бух итогами или ВыбратьОперацииСПроводками?
Записан
ge4r
Участник

ru
Offline Offline

« Ответ #1 : 26-08-2009 11:48 » 

Код:
Опер.ВыбратьОперацииСПроводками (ВыбДата,ВыбДата,"10.1",,,);
Пока Опер.ПолучитьОперацию() = 1 Цикл
Опер.ВыбратьПроводки();
Пока Опер.ПолучитьПроводку() = 1 Цикл
С1 = Опер.Дебет.Субконто(1);
С2 = Опер.Дебет.Субконто(2);
К1 = Опер.Количество;
Таб.ВывестиСекцию("Строка");
КонецЦикла;
КонецЦикла;
вот,что написал...и так для каждого счета...но вот как это все это свести к таблице пока плохо представляю...не 2-3 ТЗ же создавать?
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #2 : 26-08-2009 13:35 » 

Создай сначала таблицу значений:
Код:
	ТЗ=СоздатьОбъект("ТаблицаЗначений");
ТЗ.НоваяКолонка("Материал");
ТЗ.НоваяКолонка("МестоХранения");
ТЗ.НоваяКолонка("Кво0121");
ТЗ.НоваяКолонка("Кво0122");
ТЗ.НоваяКолонка("Кво101");
Потом заполнить таблицу (ИМХО лучше с помощью бух.итогов):
Код:
	Ит=СоздатьОбъект("БухгалтерскиеИтоги");
Ит.ИспользоватьСубконто(ВидыСубконто.МестаХранения);
Ит.ИспользоватьСубконто(ВидыСубконто.Материалы);
Ит.ВыполнитьЗапрос(НачДата,КонДата,"012.1,012.2,10.1",,,"К");
Ит.ВыбратьСубконто(ВидыСубконто.МестаХранения);
Пока Ит.ПолучитьСубконто(ВидыСубконто.МестаХранения)=1 Цикл
МестоХранения=Ит.Субконто(ВидыСубконто.МестаХранения);

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

ТЗ.НоваяСтрока();
ТЗ.МестоХранения=МестоХранения;
ТЗ.Материал=Материал;

Ит.ВыбратьСчета();
Пока Ит.ПолучитьСчет()=1 Цикл
Кво=Ит.ДО(3); // Количественный дебетовый оборот по счету
Если Ит.Счет.Код="012.1" Тогда
ТЗ.Кво0121=Кво;
ИначеЕсли Ит.Счет.Код="012.2" Тогда
ТЗ.Кво0122=Кво;
ИначеЕсли Ит.Счет.Код="10.1" Тогда
ТЗ.Кво101=Кво;
Иначе
Сообщить("Упсь! Не опознан счет: "+Ит.Счет.Код);
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецЦикла;
А потом ее вывести:
Код:
	Таб=СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Таблица");
Таб.ВывестиСекцию("Шапка");
ТЗ.ВыбратьСтроки();
Пока ТЗ.ПолучитьСтроку()=1 Цикл
Таб.ВывестиСекцию("Строка");
КонецЦикла;
Таб.ВывестиСекцию("Подвал");
Таб.Показать();
Записан
ge4r
Участник

ru
Offline Offline

« Ответ #3 : 26-08-2009 16:07 » 

спасибо...над почитать поболее о бух итогах...
Записан
ge4r
Участник

ru
Offline Offline

« Ответ #4 : 27-08-2009 06:07 » 

вот,пытался сделать,что бы был отбор по материалу или  по месту хранения, + с флагом "по остаткам"
но почему то вылетают пустые таблицы

Код:
Процедура Сформировать()
Перем Таб,ТЗ,БухИтог;
Таб=СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Таблица");
Таб.ВывестиСекцию("Шапка");
ТЗ=СоздатьОбъект("ТаблицаЗначений");
ТЗ.НоваяКолонка("Материал");
ТЗ.НоваяКолонка("МестоХранения");
ТЗ.НоваяКолонка("Кво0121");
ТЗ.НоваяКолонка("Кво0122");
ТЗ.НоваяКолонка("Кво101");
Ит=СоздатьОбъект("БухгалтерскиеИтоги");
Ит.ИспользоватьСубконто(ВидыСубконто.МестаХранения);
Ит.ИспользоватьСубконто(ВидыСубконто.Материалы);
Ит.ВыполнитьЗапрос(ВыбДата,ВыбДата,"012.1,012.2,10.1",,,"К");

Ит.ВыбратьСубконто(ВидыСубконто.МестаХранения);
Пока Ит.ПолучитьСубконто(ВидыСубконто.МестаХранения)=1 Цикл
МестоХранения=Ит.Субконто(ВидыСубконто.МестаХранения);

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

ТЗ.НоваяСтрока();
ТЗ.МестоХранения=МестоХранения;
ТЗ.Материал=Материал;

Ит.ВыбратьСчета();
Пока Ит.ПолучитьСчет()=1 Цикл
Кво=Ит.ДО(3) ; // Количественный дебетовый оборот по счету
Если Ит.Счет.Код="012.1" Тогда
ТЗ.Кво0121=Кво;
ИначеЕсли Ит.Счет.Код="012.2" Тогда
ТЗ.Кво0122=Кво;
ИначеЕсли Ит.Счет.Код="10.1" Тогда
ТЗ.Кво101=Кво;
Иначе
Сообщить("Не опознан счет: "+Ит.Счет.Код);
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецЦикла;
   

Если ВыбМесто.Выбран()= 1 Тогда
С1 = ВыбМесто;
Таб.ВывестиСекцию ("Заголовок");
ТЗ.ВыбратьСтроки();
Пока ТЗ.ПолучитьСтроку()=1 Цикл
Если ТЗ.МестоХранения = С1 Тогда
Если ВыбОстатки = 1 Тогда
Если (ТЗ.Кво0121+ ТЗ.Кво0122 <>0) и (ТЗ.Кво101<>0) Тогда
С2 = ТЗ.Материал;
Кво0121 = ТЗ.Кво0121;   
Кво0122 = ТЗ.Кво0122 ;
Кво101 = ТЗ.Кво101 ;
Таб.ВывестиСекцию("Строка");
Иначе
С2 = ТЗ.Материал;
Кво0121 = ТЗ.Кво0121;   
Кво0122 = ТЗ.Кво0122 ;
Кво101 = ТЗ.Кво101 ;
Таб.ВывестиСекцию("Строка");
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;       

Если ВыбМатериал.Выбран()= 1 Тогда
С1 = ВыбМатериал;
Таб.ВывестиСекцию ("Заголовок");
ТЗ.ВыбратьСтроки();
Пока ТЗ.ПолучитьСтроку()=1 Цикл
Если ТЗ.Материал = С1 Тогда
Если ВыбОстатки = 1 Тогда
Если (ТЗ.Кво0121+ ТЗ.Кво0122 <>0) и (ТЗ.Кво101<>0) Тогда
С2 = ТЗ.МестоХранения;
Кво0121 = ТЗ.Кво0121;   
Кво0122 = ТЗ.Кво0122 ;
Кво101 = ТЗ.Кво101 ;
Таб.ВывестиСекцию("Строка");
КонецЕсли;
Иначе

С2 = ТЗ.МестоХранения;
Кво0121 = ТЗ.Кво0121;   
Кво0122 = ТЗ.Кво0122 ;
Кво101 = ТЗ.Кво101 ;
Таб.ВывестиСекцию("Строка");
    КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;
// Таб.ВывестиСекцию("Подвал");
Таб.Показать();


       Таб.Опции(0,0,0,0);
Таб.Показать();
КонецПроцедуры

* ОтчетСВГК.ert (86 Кб - загружено 894 раз.)
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 27-08-2009 07:32 » 

А без отбора работает?
Вообще-то отбор правильно делать при получении бух итогов:
Код:
	Если ВыбМесто.Выбран()=1 Тогда
Ит.ИспользоватьСубконто(ВидыСубконто.МестаХранения,ВыбМесто,2,0);
Иначе
Ит.ИспользоватьСубконто(ВидыСубконто.МестаХранения,,1,0);
КонецЕсли;
Записан
ge4r
Участник

ru
Offline Offline

« Ответ #6 : 27-08-2009 07:46 » 

спс,так работает
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines