Убрать 50.04 счет с самописного отчета. Бух 8.3

1. mvl_dimir 28.04.20 11:47 Сейчас в теме
В отчете выводится счет 50.04, мне бы хотелось его скрыть. Добавил немного кода, счет как был, так и остался. Может в условии надо иначе написать?
Прикрепленные файлы:
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
4. Salavat 13 07.05.20 12:30 Сейчас в теме
(1)проще сделать типа -
Счёт в иерархии (&Счета) и Счёт <> &Счёт5004


"Где" - тоже должно работать (не проверял) - но -
- это плохой (временами - очень плохой) вариант (в данном случае). По-любому.
6. nomad_irk 76 07.05.20 12:44 Сейчас в теме
(1)У вас массив КоррСчет-ов формируется иерархически по всему счету 50. Вставьте исключение в цикле и будет вам щастье
2. ab_initio 95 28.04.20 12:28 Сейчас в теме
Запрос сюда в форум текстом напишите, а то картинку очень тяжело поправить.
3. mvl_dimir 07.05.20 12:23 Сейчас в теме
(2)
СписокИскл = Новый СписокЗначений;
	СписокИскл.Добавить(ПланыСчетов.Хозрасчетный.НайтиПоКоду("50.04"));
	
	_Счета = Новый СписокЗначений;
	_Счета.Добавить(ПланыСчетов.Хозрасчетный.НайтиПоКоду("62"));
	_Счета.Добавить(ПланыСчетов.Хозрасчетный.НайтиПоКоду("76.05"));
	
	Счета = ПланыСчетов.Хозрасчетный.ВыбратьИерархически(ПланыСчетов.Хозрасчетный.НайтиПоКоду("50.01"));
	Счета = ПланыСчетов.Хозрасчетный.ВыбратьИерархически(ПланыСчетов.Хозрасчетный.НайтиПоКоду("50.02"));
	Счета = ПланыСчетов.Хозрасчетный.ВыбратьИерархически(ПланыСчетов.Хозрасчетный.НайтиПоКоду("50.03"));


	Пока Счета.Следующий() Цикл
		КорСчет.Добавить(Счета.Ссылка);
	КонецЦикла;
	
	ТекстЗапроса = "ВЫБРАТЬ
	               |	ХозрасчетныйОбороты.КорСчет,
	               |	СУММА(ХозрасчетныйОбороты.СуммаОборотДт) КАК СуммаОборотДт,
	               |	СУММА(ХозрасчетныйОбороты.СуммаОборотКт) КАК СуммаОборотКт,
	               |	ХозрасчетныйОбороты.СуммаОборотКт - ХозрасчетныйОбороты.СуммаОборотДт КАК Сумма,
	               |	ХозрасчетныйОбороты.Субконто1 КАК Контрагент,
	               |	ХозрасчетныйОбороты.Счет.Код КАК СчетКод,
	               |	ХозрасчетныйОбороты.КорСчет.Код КАК Счет
	               |ИЗ
	               |	РегистрБухгалтерии.Хозрасчетный.Обороты(&НачПериода, &КонПериода, Период, Счет В ИЕРАРХИИ (&Счет), , Субконто1 В (&Субконто1), КорСчет В (&КорСчет), ) КАК ХозрасчетныйОбороты
	               |
				   |ГДЕ
				   |	НЕ ХозрасчетныйОбороты.Счет В (&СписокИскл)
				   |
	               |СГРУППИРОВАТЬ ПО
	               |	ХозрасчетныйОбороты.КорСчет,
	               |	ХозрасчетныйОбороты.Субконто1,
	               |	ХозрасчетныйОбороты.Счет.Код,
	               |	ХозрасчетныйОбороты.СуммаОборотКт - ХозрасчетныйОбороты.СуммаОборотДт
	               |
	               |УПОРЯДОЧИТЬ ПО
	               |	ХозрасчетныйОбороты.Субконто1.Наименование
	               |ИТОГИ
	               |	СУММА(Сумма)
	               |ПО
	               |	ОБЩИЕ";
	Запрос.Текст = ТекстЗапроса;
	Запрос.УстановитьПараметр("СписокИскл", СписокИскл); 
	Запрос.УстановитьПараметр("НачПериода", ДатаНачала); 
	Запрос.УстановитьПараметр("КонПериода", ДатаКонца); 
	Запрос.УстановитьПараметр("Счет", _Счета);
	Запрос.УстановитьПараметр("КорСчет", КорСчет);
Показать
11. karamazoff 96 13.05.20 12:48 Сейчас в теме
(3)
Счета = ПланыСчетов.Хозрасчетный.ВыбратьИерархически(ПланыСчетов.Хозрасчетный.НайтиПоКоду("50.01"));
    Счета = ПланыСчетов.Хозрасчетный.ВыбратьИерархически(ПланыСчетов.Хозрасчетный.НайтиПоКоду("50.02"));
    Счета = ПланыСчетов.Хозрасчетный.ВыбратьИерархически(ПланыСчетов.Хозрасчетный.НайтиПоКоду("50.03"));


    Пока Счета.Следующий() Цикл
        КорСчет.Добавить(Счета.Ссылка);
    КонецЦикла;
Показать

Какой интересный код.... Переменная Счета перезаписывается 3 раза, потом запускается цикл и в него попадет ТОЛЬКО счет 50.03, поскольку у него нет субсчетов (в типовой), каким же образом 50.04 вообще попадает в запрос???
12. nomad_irk 76 13.05.20 12:53 Сейчас в теме
(11)Изначально код был верным и собирал весь счет 50 иерархически, только для чего - не понятно, т.к. можно в запросе указать.
14. mvl_dimir 14.05.20 10:01 Сейчас в теме
(12)
Счета = ПланыСчетов.Хозрасчетный.ВыбратьИерархически(ПланыСчетов.Хозрасчетный.НайтиПоКоду("50.01"));
    Счета = ПланыСчетов.Хозрасчетный.ВыбратьИерархически(ПланыСчетов.Хозрасчетный.НайтиПоКоду("50.02"));
    Счета = ПланыСчетов.Хозрасчетный.ВыбратьИерархически(ПланыСчетов.Хозрасчетный.НайтиПоКоду("50.03"));

Согласен. Выше это лишь эксперименты, не обратил внимания, что не поменял обратно.

Счета = ПланыСчетов.Хозрасчетный.ВыбратьИерархически(ПланыСчетов.Хозрасчетный.НайтиПоКоду("50"));
Вот так должно быть. Что указать в запросе?
17. nomad_irk 76 14.05.20 10:07 Сейчас в теме
(14)Если хотите указать в запросе, то:

|ИЗ 
| РегистрБухгалтерии.Хозрасчетный.Обороты(&НачПериода, &КонПериода, Период, Счет В ИЕРАРХИИ (&Счет), , Субконто1 В (&Субконто1), КорСчет В ИЕРАРХИИ (ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.Касса)) и НЕ КорСчет В ИЕРАРХИИ (ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.<ИмяПредопределенногоСчета50.04>)))


ПланСчетов.Хозрасчетный.Касса - это имя предопределенного счета 50.
19. mvl_dimir 14.05.20 10:21 Сейчас в теме
(17)То что лежит в <...>, так и оставлять?
20. nomad_irk 76 14.05.20 10:27 Сейчас в теме
(19)Нет, нужно узнать имя предопределенного счета 50.04 в конфигураторе и заменить на него.
Если предопределенного счета нет, то создать пакет в запросе с получением счета по коду и использовать результат временной таблицы в качестве значения параметра.
или как уже сказал выше, не парить моск и ограничить счета в цикле обработки выборки плана счетов.
13. mvl_dimir 14.05.20 10:00 Сейчас в теме
(11)
Счета = ПланыСчетов.Хозрасчетный.ВыбратьИерархически(ПланыСчетов.Хозрасчетный.НайтиПоКоду("50.01"));
    Счета = ПланыСчетов.Хозрасчетный.ВыбратьИерархически(ПланыСчетов.Хозрасчетный.НайтиПоКоду("50.02"));
    Счета = ПланыСчетов.Хозрасчетный.ВыбратьИерархически(ПланыСчетов.Хозрасчетный.НайтиПоКоду("50.03"));
 Это я уже с дуру эксперементировал. Правильно будет:
Счета = ПланыСчетов.Хозрасчетный.ВыбратьИерархически(ПланыСчетов.Хозрасчетный.НайтиПоКоду("50"));
15. nomad_irk 76 14.05.20 10:04 Сейчас в теме
(13) Ограничьте счета в цикле обработки Выборки:

Пока Счета.Следующий() Цикл
        КорСчет.Добавить(Счета.Ссылка);
КонецЦикла;


и будет вам щастье
mvl_dimir; +1 Ответить
21. mvl_dimir 14.05.20 10:29 Сейчас в теме
(15)Думаю, что лучше таким способом. Мне указывать явно "Счет"? То есть, вместо ссылки.
22. nomad_irk 76 14.05.20 10:33 Сейчас в теме
(21) Используйте метод Принадлежит() для счета 50.04 и проверяйте на равенство счету.
Если текущий элемент принадлежит счету 50.04 или равен ему самому, то пропускайте такой счет.
mvl_dimir; +1 Ответить
23. mvl_dimir 14.05.20 13:14 Сейчас в теме
(22) Принадлежит ли счет 50 к счету 50.04? То что он этот счет есть в отчете это 100% и то что он принадлежит к 50, тоже.
24. nomad_irk 76 14.05.20 13:24 Сейчас в теме
(23)Наоборот: Счет 50.04 может принадлежать Счету 50, а может и не принадлежать.
Вам нужно проверять принадлежность счетов(50.04.1, 50.04.2 и т.д.), подчиненных счету 50.04.
mvl_dimir; +1 Ответить
25. karamazoff 96 14.05.20 13:25 Сейчас в теме
(23)взрыв мозга, просто
Пока Счета.Следующий() Цикл
КорСчет.Добавить(Счета.Ссылка);
КонецЦикла;

вам же уже написали, в цикле поставьте условие
Если Счета.Ссылка.Код = "50.04" тогда
продолжить;
конецЕсли;

и не надо тогда никаких условий в запросе.
28. nomad_irk 76 14.05.20 13:39 Сейчас в теме
(25)не совсем так, еще нужно условие проверки подчиненных счетов иначе оно подчиненные таки добавит, т.к. код у них будет вида 50.04.х
mvl_dimir; +1 Ответить
30. mvl_dimir 14.05.20 13:47 Сейчас в теме
(28)Я вас понял, спасибо. Попробую.
31. karamazoff 96 14.05.20 13:47 Сейчас в теме
(28)тогда
Если Лев(Счета.Ссылка.Код,5) = "50.04" тогда
продолжить;
конецЕсли;
5. Salavat 13 07.05.20 12:33 Сейчас в теме
(2) Зато автор - ему так легко (очень)
Согласен абсолютно - есть такой контингент.
8. mvl_dimir 12.05.20 10:39 Сейчас в теме
(5)это тут причем. Я сделал скрин, чтобы было проще отметить места, которые важны. Код я скинул по просьбе.
7. ab_initio 95 07.05.20 13:04 Сейчас в теме
ТекстЗапроса = "ВЫБРАТЬ 
| ХозрасчетныйОбороты.КорСчет, 
| СУММА(ХозрасчетныйОбороты.СуммаОборотДт) КАК СуммаОборотДт, 
| СУММА(ХозрасчетныйОбороты.СуммаОборотКт) КАК СуммаОборотКт, 
| ХозрасчетныйОбороты.СуммаОборотКт - ХозрасчетныйОбороты.СуммаОборотДт КАК Сумма, 
| ХозрасчетныйОбороты.Субконто1 КАК Контрагент, 
| ХозрасчетныйОбороты.Счет.Код КАК СчетКод, 
| ХозрасчетныйОбороты.КорСчет.Код КАК Счет 
|ИЗ 
| РегистрБухгалтерии.Хозрасчетный.Обороты(&НачПериода, &КонПериода, Период, Счет В ИЕРАРХИИ (&Счет), , Субконто1 В (&Субконто1), (КорСчет В (&КорСчет) и (НЕ КорСчет В (&СписокИскл))), ) КАК ХозрасчетныйОбороты 
| 
| 
| 
| 
|СГРУППИРОВАТЬ ПО 
| ХозрасчетныйОбороты.КорСчет, 
| ХозрасчетныйОбороты.Субконто1, 
| ХозрасчетныйОбороты.Счет.Код, 
| ХозрасчетныйОбороты.СуммаОборотКт - ХозрасчетныйОбороты.СуммаОборотДт 
| 
|УПОРЯДОЧИТЬ ПО 
| ХозрасчетныйОбороты.Субконто1.Наименование 
|ИТОГИ 
| СУММА(Сумма) 
|ПО 
| ОБЩИЕ"; 
Запрос.Текст = ТекстЗапроса; 
Запрос.УстановитьПараметр("СписокИскл", СписокИскл); 
Запрос.УстановитьПараметр("НачПериода", ДатаНачала); 
Запрос.УстановитьПараметр("КонПериода", ДатаКонца); 
Запрос.УстановитьПараметр("Счет", _Счета); 
Запрос.УстановитьПараметр("КорСчет", КорСчет); 
Показать
9. пользователь 12.05.20 10:39
Сообщение было скрыто модератором.
...
10. ab_initio 95 13.05.20 12:24 Сейчас в теме
(9) Свой запрос замените на приведенный в посте 7.
Посмотрите, что получилось. Возможно, это поможет.
16. mvl_dimir 14.05.20 10:07 Сейчас в теме
(7)
ТекстЗапроса = "ВЫБРАТЬ
| ХозрасчетныйОбороты.КорСчет,
| СУММА(ХозрасчетныйОбороты.СуммаОборотДт) КАК СуммаОборотДт,
| СУММА(ХозрасчетныйОбороты.СуммаОборотКт) КАК СуммаОборотКт,
| ХозрасчетныйОбороты.СуммаОборотКт - ХозрасчетныйОбороты.СуммаОборотДт КАК Сумма,
| ХозрасчетныйОбороты.Субконто1 КАК Контрагент,
| ХозрасчетныйОбороты.Счет.Код КАК СчетКод,
| ХозрасчетныйОбороты.КорСчет.Код КАК Счет
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.Обороты(&НачПериода, &КонПериода, Период, Счет В ИЕРАРХИИ (&Счет), , Субконто1 В (&Субконто1), (КорСчет В (&КорСчет) и (НЕ КорСчет В (&СписокИскл))), ) КАК ХозрасчетныйОбороты
|
|
|
|
|СГРУППИРОВАТЬ ПО
| ХозрасчетныйОбороты.КорСчет,
| ХозрасчетныйОбороты.Субконто1,
| ХозрасчетныйОбороты.Счет.Код,
| ХозрасчетныйОбороты.СуммаОборотКт - ХозрасчетныйОбороты.СуммаОборотДт
|
|УПОРЯДОЧИТЬ ПО
| ХозрасчетныйОбороты.Субконто1.Наименование
Показать


Вы мне скинули без условия. Он так будет выводить весь 50 счет. А мне нужно, чтобы он выводил без 50.04.
18. ab_initio 95 14.05.20 10:20 Сейчас в теме
Посмотрите внимательнее.
Условие задано непосредственно в параметрах виртуальной таблицы "Обороты":
|ИЗ 
| РегистрБухгалтерии.Хозрасчетный.Обороты(&НачПериода, &КонПериода, Период, Счет В ИЕРАРХИИ (&Счет), , Субконто1 В (&Субконто1), (КорСчет В (&КорСчет) и (НЕ КорСчет В (&СписокИскл))), ) КАК ХозрасчетныйОбороты
26. mvl_dimir 14.05.20 13:29 Сейчас в теме
(18) Ах да, не обратил внимания, извините. Попробовал, не убралось.
27. ab_initio 95 14.05.20 13:34 Сейчас в теме
(26) А что получилось в результате?
29. mvl_dimir 14.05.20 13:46 Сейчас в теме
(27) Не произошло никаких изменений. По крайней мере я не увидел.
32. ab_initio 95 14.05.20 16:00 Сейчас в теме
Колонка с счетом на Вашем рисунке номер 2 - это что за поле запроса?
В выборке запроса у Вас 7 полей. Из них по крайней мере 3 имеют в качестве представления номер счета. На картинке результата выборки только 3 поля. Из них первое и второе - это, видимо, контрагент и сумма. Третье поле - это что?
33. mvl_dimir 18.05.20 08:58 Сейчас в теме
(32)3 это расшифровка поля по счету.
34. ab_initio 95 18.05.20 09:01 Сейчас в теме
(33) Из полей выборки она чему соответствует?
| ХозрасчетныйОбороты.КорСчет, 
или
| ХозрасчетныйОбороты.Счет.Код КАК СчетКод, 
или
| ХозрасчетныйОбороты.КорСчет.Код КАК Счет  ?
35. mvl_dimir 14.07.20 09:03 Сейчас в теме
(34)немного не понял вашего вопроса и что на него ответить.
Оставьте свое сообщение

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