Форум программистов, компьютерный форум, киберфорум
Наши страницы
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/121: Рейтинг темы: голосов - 121, средняя оценка - 4.75
Prokrommyr_Hord
0 / 0 / 0
Регистрация: 28.11.2008
Сообщений: 35
1

Бухгалтерский запрос

17.09.2009, 13:11. Просмотров 21793. Ответов 17
Метки нет (Все метки)

Мне нужно узнать все субконто(номенклатура) проводок счета 41.2 за период.
Те нужны все проводки где в д*цензура*е или кредите фигурирует счет 41.2

Код
би=СоздатьОбъект("БухгалтерскиеИтоги");
би.ИспользоватьСубконто(ВидыСубконто.Номенклатура);
би.ВыполнитьЗапрос(ДатаН,ДатаК,"41.2",,,2,,"СК");
би.ВыбратьСубконто(1);
Пока би.ПолучитьСубконто(1)=1 Цикл
Сообщить(би.Субконто(1));
КонецЦикла;
но я получаю только номенклатуру из проводок 41.2 : **
проводки **:41.2 получается не попадают в результат бухзапроса, или может я что-то напутал.

Перечитал еще раз о бухгалтерских итогах/запросах не нашел ответа как сделать. Получается надо выполнить еще 1 бухзапрос би.ВыполнитьЗапрос(ДатаН,ДатаК,,"41.2",,2,,"СК"); ?? Чото я сомневаюсь что так... Смотрю как в карточке счета реализовано, но пока не понимаю как )

И еще как сделать чтобы не учитывать(или наоборот учитавать) проводки 41.2:41.2

Заранее примного благодарен, тк с этими вопросами постоянно путаюсь..., пробел в знаниях(
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.09.2009, 13:11
Ответы с готовыми решениями:

7.7 Бухгалтерский запрос
Всем доброго дня! Никак не могу побороть такую проблему: если запрос выполнять по счету целиком,...

7.7 Запрос или бухгалтерский запрос?
Добрый день. Задача такова: необходимо сформировать отчет о доходах и расходах за период с...

Выгрузка Из 1с 7.7 В 1с 7.7 Конфигурация Бухгалтерский Учет 4.5
Есть готовая выгрузка, выгружает документы (не операции) в базу для бухгалтеров, но есть одно но -...

Торговля+Склад 9.2 -> Бухгалтерский учет 4.5
Привет Всем! необходимо перенести из "Торговля+Склад" в "Бух.учет" некоторые справочники, типа...

Нужен релиз бухгалтерский учёт 7.70.479
Устроился на новую работу и хочу понять что там начудил до меня программист 1с, а делал он всё на...

17
Hryv
0 / 0 / 0
Регистрация: 24.07.2008
Сообщений: 658
17.09.2009, 14:03 2
Для начала можно в цикле проверять ДО() и КО() и выводить разные сообщения

И я бы делал би.ВыполнитьЗапрос(ДатаН,ДатаК,"41.2",,,1,,"СК");

Правда тогда полезут еще остатки, но их можно отбросить в теле цикла

Можно еще попробовать разворачивать не по субконто, а по периоду "проводка"

Не совсем просто понятно для какой цели, поэтому трудно дать конкретный совет
0
Prokrommyr_Hord
0 / 0 / 0
Регистрация: 28.11.2008
Сообщений: 35
17.09.2009, 14:32 3
Цель: получить список всех товаров которые участвовали в розничной торговле(участвовали в проводках со счетом 41.2) за определенный период (в моем случае с начала текущего года). Те по сути мне нужно тоже, что показывает карточка счета 41.2 с "показывать обороты за период"
0
kyr
0 / 0 / 0
Регистрация: 04.12.2005
Сообщений: 1,588
17.09.2009, 14:46 4
Цитата Сообщение от Hryv
би.ВыполнитьЗапрос(ДатаН,ДатаК,"41.2",,,1,,"СК");
Programmer_Hard, это вполне приемлимый вариант - попробуй причем 1 можно даже не ставить - оно по умолчанию равно 1 и не забудь также про


Цитата Сообщение от Hryv
проверять ДО() и КО() и выводить разные сообщения
0
Prokrommyr_Hord
0 / 0 / 0
Регистрация: 28.11.2008
Сообщений: 35
20.09.2009, 15:52 5
Код
    би=СоздатьОбъект("БухгалтерскиеИтоги");
би.ИспользоватьСубконто(ВидыСубконто.Номенклатура);
би.ВыполнитьЗапрос("01.01.09","02.01.09","41.2",,,1,,"СК");
би.ВыбратьСубконто(1);
Пока би.ПолучитьСубконто(1)=1 Цикл
ИспользуемыеТовары.ДобавитьЗначение(би.Субконто(1),би.Субконто(1));
Сообщить (би.Субконто(1));  // показывает нужную мне номенклатуру
КонецЦикла;
в этом случае он расчитывает все остатки по счету, а это куча номенклатуры используемой еще до 01.01.09.
и мне выводится весь список номенклату, а не тот что участвует в период "01.01.09","02.01.09".

ПС: запрос би.ВыполнитьЗапрос("01.01.09","02.01.09","41.2",,,2,,"СК"); выполняется как надо, но только наполовину, он берет проводки 41.2:xx за указанный период и не берет xx:41.2.
0
kyr
0 / 0 / 0
Регистрация: 04.12.2005
Сообщений: 1,588
20.09.2009, 16:13 6
смотри


ВыполнитьЗапрос(<НачалоПериода>,<КонецПериода>,<Счет>,<КоррСчет>,<Валюта>,<ТипИтогов>,<Периодичность>,<ТипСуммы>)

<ТипИтогов> - число - тип отбираемых итогов. Может принимать следующие значения: 1 - остатки и обороты по счету в целом; 2 - обороты между счетами; 3 - первое и второе вместе. По умолчанию: 1.
если ты устанавливаешь 2 - то он и выдает тебе операции между считами. так как счет ты указал, а коррСчет - нет - вот он и выдал тебе "половину" Если и там и там укажешь "41.2" - соотвественно выдаст только обороты по ДТ41.2-КТ41.2
Соотвественно тебе либо нужно выполнить 2 запроса и результаты слить куда-нить в табличку, либо же не указывать счета и написать условия типа
если (би.счет.код = 41.2) или (би.коррсчет.код = 41.2) тогда
ИспользуемыеТовары.ДобавитьЗначение(би.Субконто(1),би.Субконто(1));
Сообщить (би.Субконто(1)); // показывает нужную мне номенклатуру
конецЕсли;
0
Hryv
0 / 0 / 0
Регистрация: 24.07.2008
Сообщений: 658
20.09.2009, 16:29 7
Цитата Сообщение от Programmer_Hard

Код
    би=СоздатьОбъект("БухгалтерскиеИтоги");
би.ИспользоватьСубконто(ВидыСубконто.Номенклатура);
би.ВыполнитьЗапрос("01.01.09","02.01.09","41.2",,,1,,"СК");
би.ВыбратьСубконто(1);
Пока би.ПолучитьСубконто(1)=1 Цикл
ИспользуемыеТовары.ДобавитьЗначение(би.Субконто(1),би.Субконто(1));
Сообщить (би.Субконто(1));  // показывает нужную мне номенклатуру
КонецЦикла;
в этом случае он расчитывает все остатки по счету, а это куча номенклатуры используемой еще до 01.01.09.
и мне выводится весь список номенклату, а не тот что участвует в период "01.01.09","02.01.09".

ПС: запрос би.ВыполнитьЗапрос("01.01.09","02.01.09","41.2",,,2,,"СК"); выполняется как надо, но только наполовину, он берет проводки 41.2:xx за указанный период и не берет xx:41.2.
Я же про это писал
Остатки нужно отфильтровать
Например перед ИспользуемыеТовары.ДобавитьЗначение написать:

Код
Если (би.ДО("С")=0) и (би.КО("С")=0) и (би.ДО("К")=0) и (би.КО("К")=0) Тогда
Продолжить;
КонецЕсли;
0
Prokrommyr_Hord
0 / 0 / 0
Регистрация: 28.11.2008
Сообщений: 35
21.09.2009, 15:42 8
Я чтото запутался....

Код
    би=СоздатьОбъект("БухгалтерскиеИтоги");
би.ИспользоватьСубконто(ВидыСубконто.Номенклатура);
би.ВыполнитьЗапрос("01.01.09","05.01.09",,,,2,,"СК");  //
би.ВыбратьСубконто(1);
Пока би.ПолучитьСубконто(1)=1 Цикл
Сообщить (строка(би.счет.код) + " _ " + строка(би.корсчет.код));
Если (би.счет.код = 41.2) или (би.корсчет.код = 41.2) Тогда
ИспользуемыеТовары.ДобавитьЗначение(би.Субконто(1),би.Субконто(1));
Сообщить (би.Субконто(1));
КонецЕсли
КонецЦикла;
Чтото нето, выводит строки "41 _ ",
0
kyr
0 / 0 / 0
Регистрация: 04.12.2005
Сообщений: 1,588
21.09.2009, 16:29 9
а попробуй так: вместо Сообщить (строка(би.счет.код) + " _ " + строка(би.корсчет.код));

Код
Стр = строка(би.счет.код) + " _ " + строка(би.коРРсчет.код);
Сообщить(Стр);
0
Koo
0 / 0 / 0
Регистрация: 22.04.2010
Сообщений: 38
23.09.2009, 04:06 10
если честно читал читал, ни чего не понял:
би=СоздатьОбъект("БухгалтерскиеИтоги");
би.ИспользоватьСубконто(ВидыСубконто.Номенклатура);
би.ВыполнитьЗапрос("01.01.09","02.01.09","41.2");
би.ВыбратьСубконто(1);
Пока би.ПолучитьСубконто(1)=1 Цикл

Сообщить (би.Субконто(1)+" Д*цензура*:"+би.ДО("С")+" Кредит:"+би.КО("С"));
КонецЦикла;

И все должно работать. Это с суммами. Аналогично с количеством если ведется количественный учет на счете по субконто
0
vytfyt
0 / 0 / 0
Регистрация: 28.03.2004
Сообщений: 1,913
23.09.2009, 06:56 11
Можно еще и так. Если не требуются начальные и конечные сальдо, а также сворачивание по субконто, будет работать быстрее бухитогов.


Код
Опер = СоздатьОбъект("Операция");
Опер.ВыбратьОперацииСПроводками(НачДата,КонДата,"41.2");
Пока Опер.ПолучитьПроводку() = 1 Цикл
...
КонецЦикла;
0
Hryv
0 / 0 / 0
Регистрация: 24.07.2008
Сообщений: 658
23.09.2009, 10:13 12
Отличный вариант предложил vitfil
Тем более внутри цикла можно заполнить ТЗ и потом сортировать/сворачивать ее как угодно

Единственный минус - нет остатков, но они в этом случае похоже и не нужны
0
vytfyt
0 / 0 / 0
Регистрация: 28.03.2004
Сообщений: 1,913
23.09.2009, 10:22 13
Цитата Сообщение от Hryv
Единственный минус - нет остатков, но они в этом случае похоже и не нужны
Ну так а я что сказал:


Цитата Сообщение от vitfil
Можно еще и так. Если не требуются начальные и конечные сальдо
0
vbs
0 / 0 / 1
Регистрация: 22.06.2013
Сообщений: 9
23.09.2009, 12:20 14
Цитата Сообщение от vitfil
Можно еще и так. Если не требуются начальные и конечные сальдо, а также сворачивание по субконто, будет работать быстрее бухитогов.

Опер = СоздатьОбъект("Операция");Опер.ВыбратьОперацииСПроводками(НачДата,КонДата,"41.2");
Пока Опер.ПолучитьПроводку() = 1 Цикл ...КонецЦикла;
Более того, в таком варианте можно выбрать проводки только по д*цензура*у или кредиту
0
vytfyt
0 / 0 / 0
Регистрация: 28.03.2004
Сообщений: 1,913
23.09.2009, 13:53 15
Цитата Сообщение от vbs
Более того, в таком варианте можно выбрать проводки только по д*цензура*у или кредиту
Ну, задача как раз стояла, чтобы выбрать и те, и другие...
А еще, конечно же, можно прямым запросом из таблицы проводок это дело вытянуть. Будет еще быстрее.
0
vbs
0 / 0 / 1
Регистрация: 22.06.2013
Сообщений: 9
23.09.2009, 14:19 16
Цитата Сообщение от vitfil
Ну, задача как раз стояла, чтобы выбрать и те, и другие...
Да, невнимательно я прочитал, что-то взбрело в голову, что ему нужны только д*цензура*овые
0
Prokrommyr_Hord
0 / 0 / 0
Регистрация: 28.11.2008
Сообщений: 35
24.09.2009, 14:38 17
Спасибо всем! вывели таки на путь истинный )
Итоговый скрипт который дает мне то, что надо:

Код
    Опер = СоздатьОбъект("Операция");
Опер.ВыбратьОперацииСПроводками("01.01.09","01.09.09","41.2");
Пока Опер.ПолучитьПроводку() = 1 Цикл
Если Опер.Кредит.Счет=счетпокоду("41.2") Тогда
Если ПустоеЗначение(Опер.Кредит.Номенклатура)=1 тогда продолжить; КонецЕсли;
ИспользуемыеТовары.ДобавитьЗначение(Опер.Кредит.Номенклатура,Опер.Кредит.Номенклатура);
Иначе
Если ПустоеЗначение(Опер.Д*цензура*.Номенклатура)=1 тогда продолжить; КонецЕсли;
ИспользуемыеТовары.ДобавитьЗначение(Опер.Д*цензура*.Номенклатура,Опер.Д*цензура*.Номенклатура);
КонецЕсли;
КонецЦикла;
0
vytfyt
0 / 0 / 0
Регистрация: 28.03.2004
Сообщений: 1,913
24.09.2009, 17:29 18
Programmer_Hard, замечательственно!
0
24.09.2009, 17:29
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.09.2009, 17:29

Нужно ли 1С-программисту знать бухгалтерский и налоговый учет?
Добрый день! Начинаю изучать программирование, и смотреть в сторону востребованных и прикладных...

Перенос справочника из конф "Бухгалтерский учет 4.5" в ЗУП
Необходимо перенести справочник сотрудники из конфигурации &quot;Бухгалтерский учет 4.5&quot; в ЗУП 8.1. Я...

КР! Торговая организация являющаяся официальным дилером производителя, ведет бухгалтерский учет в программе «1С:Бухгалте
Торговая организация являющаяся официальным дилером производителя, ведет бухгалтерский учет в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru