Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
29 мар 2024, 13:38

Бухгалтерские итоги. Выборка по субконто

Автор Fianit, 04 сен 2014, 12:22

0 Пользователей и 1 гость просматривают эту тему.

Fianit

Добрый день!
Помогите, пожалуйста, разобраться. Скорее всего я просто не понимаю чего-то в механизме формирования Бух. Итогов. Проблема такая: мне нужно получить бух итоги по счёту развернутые по одному субконто и отобранные по второму. Второе субконто - подразделения. В цикле, перебирая справочник подразделений, я пытаюсь получить итоги по всем подразделениям по очереди, но, в итоге, получаю только по первому. По остальным не выбирается.

Fianit

1С v7.7 Сетевая (7.70.027)
Бух. учёт, редакция 4.5 (7.70.479)


Процедура Выполнить()

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

Счет = СчетПоКоду("44.1");

Если Счет.КоличествоСубконто() <> 2 Тогда
Сообщить("У счёта 44.1 изменилось количество субконто. Внесите соответствующие изменения в процедуру выгрузки");
Возврат;
Иначе
НазначитьСчет(ВидСубконто1,Счет,1);
НазначитьСчет(ВидСубконто2,Счет,2);
КонецЕсли;

БухгалтерскиеИтоги.ИспользоватьСубконто(ВидСубконто1,,1,0);

СправочникПодразделений = СоздатьОбъект("Справочник.Подразделения");

Если СправочникПодразделений.ВыбратьЭлементы() = 0 Тогда
Сообщить("Отсутствуют элементы в справочнике подразделений!");
Возврат;
КонецЕсли;

Пока СправочникПодразделений.ПолучитьЭлемент() = 1 Цикл

Подразделение = СправочникПодразделений.ТекущийЭлемент();
Если (Подразделение.ПометкаУдаления() = 1) или (Подразделение.Код = "14") Тогда
Продолжить;
КонецЕсли;

Сообщить(Подразделение.Наименование);

БухгалтерскиеИтоги.ИспользоватьСубконто(ВидСубконто2,Подразделение,2,0);
Если БухгалтерскиеИтоги.ВыполнитьЗапрос(НачалоПериода,КонецПериода,Счет) = 0 Тогда
Возврат;
КонецЕсли;
Если БухгалтерскиеИтоги.ВыбратьСубконто() = 1 Тогда
Сообщить("Есть элементы");
Иначе
Сообщить("Нет элементов");
КонецЕсли;

Пока БухгалтерскиеИтоги.ПолучитьСубконто() = 1 Цикл
Сообщить(БухгалтерскиеИтоги.ПредставлениеСубконто() + ": " + БухгалтерскиеИтоги.ДО());
КонецЦикла;

КонецЦикла;

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


Результаты:

Подразделение 1
Есть элементы

Амортизация основных средств:0
АРЕНДА:210000
ГСМ и запчасти на автомобиль:10450
ИНКАССАЦИЯ:0
Налоги и сборы:0
ОБОРУДОВАНИЕ:0
ОПЛАТАТРУДА:273346.38
ОРГТЕХНИКА:4560
ОХРАНА:0
Потери товаров и технологические отходы:0
ПРОЧИЕ РАСХОДЫ:1320
Расходы за регистрацию автомобиля:0
Расходы на КОМАНДИРОВКИ:0
Расходы на бензин:0
Расходы на КАНЦЕЛЯРСКИЕ товары:15319.23
Расходы на мебель:0
Расходы на обслуживание автомобиля:0
Расходы на подготовку и переподготовку кадров:0
Расходы на ПОДПИСКУ, консультант:11979.5
Расходы на почтовые,телефонные, телеграфные ус,:0
Расходы на ремонт основных средств арендованных:0
РЕКЛАМА (по нормативу):11250
Транспортные расходы:0
УСЛУГИ СВЯЗИ:5264.08
ХОЗ. НУЖДЫ:7327.11

Подразделение2
Нет элементов
Подразделение3
Нет элементов
Подразделение4
Нет элементов
Подразделение5
Нет элементов

Herby

фрагмент кода приведите и пример более наглядный:   Имеем то-то то-то и в таком количестве, хотелось бы получить вот это...

Fianit

Цитата: Herby от 04 сен 2014, 12:56
фрагмент кода приведите и пример более наглядный:   Имеем то-то то-то и в таком количестве, хотелось бы получить вот это...
Да-да! Уже исправился: сначала случайно только шапку без кода отправил.
В итоге хочу получить то, что получилось по первому подразделению (см. результаты), только по всем в цикле. Цикл перебирает все подразделения, но для остальных кроме первого нет результатов в выборке.

Herby

почему здесь в параметре 0

Цитата: Fianit от 04 сен 2014, 12:55Если БухгалтерскиеИтоги.ВыбратьСубконто(0) = 1 Тогда

а здесь вообще не указан?

Цитата: Fianit от 04 сен 2014, 12:55Пока БухгалтерскиеИтоги.ПолучитьСубконто() = 1 Цикл

мне кажется с этим проблемы.

Вы же только одно субконто используете, значит в параметре должна стоять "1"

примерно так:
ВыбратьСубконто(1)
и ПолучитьСубконто(1)

Fianit

Я пробовал и так, и так: результат одинаков. Вообще, субконто два: одно жестко фиксированное (Подразделения, Субконто2), второе - разворачивается (Субконто1)
Добавлено: 04 сен 2014, 13:30


Прошу прощения: где получить не ставил 1. Сейчас попробую
Добавлено: 04 сен 2014, 14:00


Цитата: Herby от 04 сен 2014, 13:07
почему здесь в параметре 0

Цитата: Fianit от 04 сен 2014, 12:55Если БухгалтерскиеИтоги.ВыбратьСубконто(0) = 1 Тогда

а здесь вообще не указан?

Цитата: Fianit от 04 сен 2014, 12:55Пока БухгалтерскиеИтоги.ПолучитьСубконто() = 1 Цикл

мне кажется с этим проблемы.

Вы же только одно субконто используете, значит в параметре должна стоять "1"

примерно так:
ВыбратьСубконто(1)
и ПолучитьСубконто(1)

Пробовал подставлять "0", "1", и "". Результат одинаковый. При подстановке "2" говорит, что я выполз за диапазон субконто, что не удивительно, в принципе.

Herby

Цитата: Fianit от 04 сен 2014, 13:28При подстановке "2" говорит

естественно. у вас же всего один вызов ИспользоватьСубконто().

а может у вас просто по второму подразделению ничего и не двигалось? вы уверены что должны быть итоги по нему? попробуйте без цикла получить значению по подразделению 2


Fianit

Цитата: Herby от 04 сен 2014, 14:22
Цитата: Fianit от 04 сен 2014, 13:28При подстановке "2" говорит

естественно. у вас же всего один вызов ИспользоватьСубконто().

а может у вас просто по второму подразделению ничего и не двигалось? вы уверены что должны быть итоги по нему? попробуйте без цикла получить значению по подразделению 2

У меня 2 вызова ИспользоватьСубконто():
БухгалтерскиеИтоги.ИспользоватьСубконто(ВидСубконто1,,1,0);
...
БухгалтерскиеИтоги.ИспользоватьСубконто(ВидСубконто2,Подразделение,2,0);

Herby

Цитата: Fianit от 04 сен 2014, 14:30БухгалтерскиеИтоги.ИспользоватьСубконто(ВидСубконто1,,1,0);

не увидел это..

если несколько субконто используете, то их выборка должна быть в таком примерно виде:


БухгалтерскиеИтоги.ВыбратьСубконто(1)
Пока БухгалтерскиеИтоги.ПолучитьСубконто(1) = 1 Цикл
  БухгалтерскиеИтоги.ВыбратьСубконто(2);
  Пока БухгалтерскиеИтоги.ПолучитьСубконто(2) = 1 Цикл
   // и вот здесь уже рассчитывать ваши суммы для подразделений
  КонецЦикла;
КонецЦикла;

Fianit

Спасибо! Уже начал думать в этом направлении, после вашего вопроса. Сейчас отредактирую и отпишусь!
Добавлено: 04 сен 2014, 17:11


Получилось. Я во втором субконо (подразделения) поставил разворачивать и сделал два цикла, как вы и предлагали. Ещё раз большое спасибо!

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск