Добавить в отчет отбор по условию "ВСписке"

1. troshin71 17.01.20 09:44 Сейчас в теме
Добрый день коллеги, имеется отчет "расчеты с подотчетными лицами" но отбор по подотчетному лицу я могу добавить только одного сотрудника, как мне сделать что бы отбор был списком.
Спасибо.


Процедура КнопкаСформироватьНажатие(Кнопка)
	
	ТабДок = ЭлементыФормы.ТабДок;
	ТабДок.Очистить();
	ТабДок.АвтоМасштаб = Истина;
	ТабДок.ТолькоПросмотр = Истина;
	
	Макет = ПолучитьМакет("Макет");
	Шапка = макет.ПолучитьОбласть("Шапка");
	СтрокаМОЛ = ?(НеПоказыватьДокументы,макет.ПолучитьОбласть("СтрокаМОЛБез"),макет.ПолучитьОбласть("СтрокаМОЛ"));
	СтрокаДокумент = Макет.ПолучитьОбласть("СтрокаДокумент");
	Итог = макет.ПолучитьОбласть("Итог");
	ТекстОрганизация = "";
	Если ЗначениеЗаполнено(Организация) Тогда
		ТекстОрганизация = Организация;
	КонецЕсли;
	ТекстПериод = "";
	Если (НачалоПериода>Дата(1,1,1)) И (КонецПериода>Дата(1,1,1)) Тогда
		ТекстПериод = " за период с "+Формат(НачалоПериода, "ДФ=dd.MM.yyyy")+" по "+Формат(КонецПериода, "ДФ=dd.MM.yyyy"); 	
	КонецЕсли;
	Шапка.Параметры.Организация = ТекстОрганизация;
	Шапка.Параметры.Период = ТекстПериод;
	ТабДок.Вывести(Шапка);	
	
	Запрос = Новый Запрос;
	Запрос.Текст = "ВЫБРАТЬ
	|	ХозрасчетныйОстаткиИОбороты.Организация КАК Организация,
	|	ХозрасчетныйОстаткиИОбороты.Субконто1 КАК МОЛ,
	|	СУММА(ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстаток) КАК НачальныйОстаток,
	|	СУММА(ХозрасчетныйОстаткиИОбороты.СуммаОборотДт) КАК Приход,
	|	СУММА(ХозрасчетныйОстаткиИОбороты.СуммаОборотКт) КАК Расход,
	|	СУММА(ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстаток) КАК КонечныйОстаток
	|ИЗ
	|	РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(
	|			&НачалоПериода,
	|			&КонецПериода,
	|			,
	|			,
	|			Счет.Родитель = &Счет71,
	|			,
	|			ВЫБОР
	|					КОГДА &ОтборОрганизация
	|						ТОГДА Организация = &Организация
	|					ИНАЧЕ ИСТИНА
	|				КОНЕЦ
	|				И ВЫБОР
	|					КОГДА &ОтборМОЛ
	|						ТОГДА Субконто1 В ИЕРАРХИИ (&МОЛ)
	|					ИНАЧЕ ИСТИНА
	|				КОНЕЦ) КАК ХозрасчетныйОстаткиИОбороты";
	Если ТолькоОстатки Тогда
		Запрос.Текст = Запрос.Текст + "
		|ГДЕ
		|	ЕСТЬNULL(ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстаток, 0) <> 0";	
	КонецЕСли;
	Запрос.Текст = Запрос.Текст + "
	|
	|СГРУППИРОВАТЬ ПО
	|	ХозрасчетныйОстаткиИОбороты.Организация,
	|	ХозрасчетныйОстаткиИОбороты.Субконто1
	|
	|УПОРЯДОЧИТЬ ПО
	|	ХозрасчетныйОстаткиИОбороты.Субконто1.Наименование";
	Граница = Новый Граница(КонецДня(КонецПериода),ВидГраницы.Включая);
	Запрос.УстановитьПараметр("НачалоПериода",НачалоПериода);
	Запрос.УстановитьПараметр("КонецПериода",Граница);
	Запрос.УстановитьПараметр("ОтборОрганизация", ЗначениеЗаполнено(Организация));
	Запрос.УстановитьПараметр("Организация", Организация);
	Запрос.УстановитьПараметр("ОтборМОЛ",ЗначениеЗаполнено(ПодотчетноеЛицо));
	Запрос.УстановитьПараметр("МОЛ", ПодотчетноеЛицо);
	Запрос.УстановитьПараметр("Счет71", ПланыСчетов.Хозрасчетный.РасчетыСПодотчетнымиЛицами_);
	
	
	ВыборкаМОЛ = Запрос.Выполнить().Выбрать();
	НачальныйОстатокИтог=0;
	КонечныйОстатокИтог=0;
	ПриходИтог=0;
	РасходИтог=0;
	Пока ВыборкаМОЛ.Следующий() Цикл
		СтрокаМол.Параметры.Заполнить(ВыборкаМОЛ);
		Если НеПоказыватьДокументы Тогда
			Если (ВыборкаМОЛ.КонечныйОстаток < 0) И (ОтрицательноеКрасным) Тогда
				СтрокаМол.Области.КонОст1.ЦветФона = Новый Цвет(255,0,0);
			Иначе
				СтрокаМол.Области.КонОст1.ЦветФона = Новый Цвет(255,255,255);	
			КонецЕсли;
		Иначе
			Если (ВыборкаМОЛ.КонечныйОстаток < 0) И (ОтрицательноеКрасным) Тогда
				СтрокаМол.Области.КонОст.ЦветФона = Новый Цвет(255,0,0);
			Иначе
				СтрокаМол.Области.КонОст.ЦветФона = Новый Цвет(255,255,255);	
			КонецЕсли;
		КонецЕсли;
		
		ТабДок.Вывести(СтрокаМОЛ);
		Если НЕ НеПоказыватьДокументы Тогда
			ЗапросДокумент = Новый Запрос;
			ЗапросДокумент.Текст = "ВЫБРАТЬ
			|	ХозрасчетныйОбороты.Регистратор КАК Документ,
			|	СУММА(ХозрасчетныйОбороты.СуммаОборотДт) КАК Приход,
			|	СУММА(ХозрасчетныйОбороты.СуммаОборотКт) КАК Расход
			|ИЗ
			|	РегистрБухгалтерии.Хозрасчетный.Обороты(
			|			&НачалоПериода,
			|			&КонецПериода,
			|			Авто,
			|			Счет.Родитель = &Счет71,
			|			,
			|			Субконто1 = &МОЛ
			|				И Организация = &Организация,
			|			,
			|			) КАК ХозрасчетныйОбороты
			|
			|СГРУППИРОВАТЬ ПО
			|	ХозрасчетныйОбороты.Регистратор
			|
			|УПОРЯДОЧИТЬ ПО
			|	ХозрасчетныйОбороты.Регистратор.Дата";
			ЗапросДокумент.УстановитьПараметр("НачалоПериода",НачалоПериода);
			ЗапросДокумент.УстановитьПараметр("КонецПериода", Граница);
			ЗапросДокумент.УстановитьПараметр("МОЛ",ВыборкаМОЛ.МОЛ);
			ЗапросДокумент.УстановитьПараметр("Организация",ВыборкаМОЛ.Организация);
			ЗапросДокумент.УстановитьПараметр("Счет71", ПланыСчетов.Хозрасчетный.РасчетыСПодотчетнымиЛицами_);
			ВыборкаДокумент = ЗапросДокумент.Выполнить().Выбрать();
			
			Номер = 1;
			Пока ВыборкаДокумент.Следующий() Цикл
				СтрокаДокумент.Параметры.Заполнить(ВыборкаДокумент);
				СтрокаДокумент.Параметры.Номер = Номер;
				ТабДок.Вывести(СтрокаДокумент);
				Номер = Номер +1;
			КонецЦикла;
		КонецЕсли;
		НачальныйОстатокИтог=НачальныйОстатокИтог+ВыборкаМОЛ.НачальныйОстаток;
		КонечныйОстатокИтог=КонечныйОстатокИтог+ВыборкаМОЛ.КонечныйОстаток;
		ПриходИтог=ПриходИтог+ВыборкаМОЛ.Приход;
		РасходИтог=РасходИтог+ВыборкаМОЛ.Расход;
	КонецЦикла;
	Итог.Параметры.НачальныйОстаток = НачальныйОстатокИтог;
	Итог.Параметры.КонечныйОстаток = КонечныйОстатокИтог;
	Итог.Параметры.Приход = ПриходИтог;
	Итог.Параметры.Расход = РасходИтог;
	ТабДок.Вывести(Итог);
КонецПроцедуры

Процедура КнопкаНастройкаПериодаНажатие(Элемент)
	ТиповыеОтчеты.НастроитьПериод(НастройкаПериода, НачалоПериода, КонецПериода);	
КонецПроцедуры

Процедура НачалоПериодаПриИзменении(Элемент)
	
КонецПроцедуры

Процедура ПриОткрытии()
	НачалоПериода = НачалоМесяца(ТекущаяДата());
	КонецПериода = ТекущаяДата();
КонецПроцедуры
Показать
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
9. user5300 1010 17.01.20 10:29 Сейчас в теме +0.5 $m
(6)
1. убираем реквизит - подотчетное лицо
2. создаем реквизитформы - ПодотчетноеЛицо ( с типом - список значений) (тип списка значений - справочник. физлица);

отчет - готов
Прикрепленные файлы:
raschety_s_podotchetnikami.erf
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. ZergKRSK 129 17.01.20 09:54 Сейчас в теме
Субконто1 В (&СписокМОЛ)
СписокМол = Новый СписокЗначений;
СписокМол.Добавить(МОЛ1);
СписокМол.Добавить(МОЛ2);
...
Запрос.УстановитьПараметр("СписокМОЛ", СписокМол);
3. troshin71 17.01.20 09:58 Сейчас в теме
(2) а где мне это добавить?
4. ZergKRSK 129 17.01.20 10:01 Сейчас в теме
(3) у вас в коде два запроса, и отбор в обоих запросах идет по одному Сотруднику. Значит в двух запросах и менять.
У вас на форме отчета как выгяддит отбор по сотруднику?
7. troshin71 17.01.20 10:04 Сейчас в теме
(4)
Прикрепленные файлы:
5. dinork 10 17.01.20 10:03 Сейчас в теме
Так проще отчет поправить чем объяснить)
6. troshin71 17.01.20 10:03 Сейчас в теме
(5) буду очень благодарен
Прикрепленные файлы:
raschety_s_podotchetnikami.erf
8. ZergKRSK 129 17.01.20 10:12 Сейчас в теме
(6) сейчас поправлю ваш отчет.
9. user5300 1010 17.01.20 10:29 Сейчас в теме +0.5 $m
(6)
1. убираем реквизит - подотчетное лицо
2. создаем реквизитформы - ПодотчетноеЛицо ( с типом - список значений) (тип списка значений - справочник. физлица);

отчет - готов
Прикрепленные файлы:
raschety_s_podotchetnikami.erf
10. troshin71 17.01.20 10:44 Сейчас в теме
(9)спасибо большое! а можно к вам в личку обратится еще с одним вопросом?
11. user5300 1010 17.01.20 10:47 Сейчас в теме
13. troshin71 17.01.20 10:50 Сейчас в теме
(11) по этому же отчету, хочу вывести на макет данные из документов, в документах когда выдаем аванс и получаем (Платежное поручение ,рко, пко в этих документах) там реквезит есть статья движения денежных средств, а в документе авансовый отчет там реквезит статья затрат
15. user5300 1010 17.01.20 10:57 Сейчас в теме
(13) С чем именно трудности ?)
16. troshin71 17.01.20 11:00 Сейчас в теме
(15) честно сказать, я не совсем понимаю как это реализовать, пробую добавить в запросе ХозрасчетныйОбороты.Субконто1.Ссылка КАК СтатьяДДС а он мне выводит сотрудника на макет

Запрос;
ЗапросДокумент.Текст = "ВЫБРАТЬ
			                       |	ХозрасчетныйОбороты.Регистратор КАК Документ,
			                       |	СУММА(ХозрасчетныйОбороты.СуммаОборотДт) КАК Приход,
			                       |	СУММА(ХозрасчетныйОбороты.СуммаОборотКт) КАК Расход,
			                       |	ХозрасчетныйОбороты.Субконто1.Ссылка КАК СтатьяДДС
			                       |ИЗ
			                       |	РегистрБухгалтерии.Хозрасчетный.Обороты(
			                       |			&НачалоПериода,
			                       |			&КонецПериода,
			                       |			Авто,
			                       |			Счет.Родитель = &Счет71,
			                       |			,
			                       |			Субконто1 = &МОЛ
			                       |				И Организация = &Организация,
			                       |			,
			                       |			) КАК ХозрасчетныйОбороты
			                       |
			                       |СГРУППИРОВАТЬ ПО
			                       |	ХозрасчетныйОбороты.Регистратор,
			                       |	ХозрасчетныйОбороты.Субконто1.Ссылка
			                       |
			                       |УПОРЯДОЧИТЬ ПО
			                       |	ХозрасчетныйОбороты.Регистратор.Дата";
Показать
18. user5300 1010 17.01.20 11:03 Сейчас в теме
посмотри в запроснике для начала )

(16)
23. user5300 1010 17.01.20 11:16 Сейчас в теме
(16)
| ХозрасчетныйОбороты.Регистратор КАК Документ,
| СУММА(ХозрасчетныйОбороты.СуммаОборотДт) КАК Приход,
| СУММА(ХозрасчетныйОбороты.СуммаОборотКт) КАК Расход,
| ХозрасчетныйОбороты.Субконто1.Ссылка КАК СтатьяДДС
|ИЗ


И здесь скорее не ХозрасчетныйОбороты.Субконто1.Ссылка
а ХозрасчетныйОбороты.Регистратор.СтатьяДвиженияДенежныхСредств КАК СтатьяДДС
17. troshin71 17.01.20 11:00 Сейчас в теме
(15) а в первом запросе у меня ХозрасчетныйОстаткиИОбороты.Субконто1 КАК МОЛ, может из за этого он выводит сотрудника?
19. user5300 1010 17.01.20 11:03 Сейчас в теме
(17) посмотри сначала 1 запрос потом второй и что тебе выводит
Прикрепленные файлы:
Запросник.epf
22. user5300 1010 17.01.20 11:14 Сейчас в теме
(19)
(20)
Вот эту обработку открой в режиме предприятия, вставь свой текст запроса и параметры, и посмотри что у тебя выводит для начала
20. troshin71 17.01.20 11:05 Сейчас в теме
(15) в макет хочу вывети статьи ддс и статьи затрат
Прикрепленные файлы:
21. user5300 1010 17.01.20 11:13 Сейчас в теме
(20) в запроснике посмотрел что у тебя запрос выдает ??
24. troshin71 17.01.20 11:22 Сейчас в теме
(21) в запроснике он у меня тоже выдает сотрудника во втором запросе, а в первом выдает ошибку {ВнешняяОбработка.Запросник.Форма.Форма.Форма(778)}: Ошибка при вызове метода контекста (Выполнить): {(2, 3)}: Поле не входит в группу "ХозрасчетныйОстаткиИОбороты.Организация"
<<?>>ХозрасчетныйОстаткиИОбороты.Организация КАК Организация,
25. user5300 1010 17.01.20 11:25 Сейчас в теме
(24) текст запроса исправь, вместо ХозрасчетныйОбороты.Субконто1.Ссылка напиши ХозрасчетныйОбороты.Регистратор.СтатьяДвиженияДенежныхСредств КАК СтатьяДДС
27. troshin71 17.01.20 11:29 Сейчас в теме
(25) исправил текст пишет <пустая ссылка статьи движения денежных средств>
28. user5300 1010 17.01.20 11:31 Сейчас в теме
(27) открой регистратор и посмотри есть ли там статья ддс
29. troshin71 17.01.20 11:34 Сейчас в теме
(28) мне кажется что нет, а из документа это можно вытащить?
30. user5300 1010 17.01.20 11:36 Сейчас в теме
(29) это и есть документ ) скорее всего, это в табличной части документа (РасшифровкаПлатежа, СтатьяДвиженияДенежныхСредств)
31. troshin71 17.01.20 11:38 Сейчас в теме
(30)статьиДДС находится в табличной части
32. user5300 1010 17.01.20 11:43 Сейчас в теме
(31) хотя можно при переборе в цикле ! )

Вот так:


Пока ВыборкаДокумент.Следующий() Цикл
    СтрокаДокумент.Параметры.Заполнить(ВыборкаДокумент);
     Если ТипЗнч(ВыборкаДокумент.Документ) = Тип("ДокументСсылка.ПриходныйКассовыйОрдер") ИЛИ ТипЗнч(ВыборкаДокумент.Документ) = Тип("ДокументСсылка.РасходныйКассовыйОрдер") Тогда
        СтрокаДокумент.Параметры.СтатьяДДС = ВыборкаДокумент.Документ.РасшифровкаПлатежа[0].СтатьяДвиженияДенежныхСредств;
    Конецесли;
    СтрокаДокумент.Параметры.Номер = Номер;
    ТабДок.Вывести(СтрокаДокумент);
    Номер = Номер +1;
КонецЦикла;

Показать
33. troshin71 17.01.20 11:49 Сейчас в теме
(32) {ВнешнийОтчет.Тест1.Форма.ФормаОтчета.Форма(134,38)}: Процедура или функция с указанным именем не определена (ТиЗнч) что это может значить?
34. user5300 1010 17.01.20 11:51 Сейчас в теме
35. troshin71 17.01.20 11:53 Сейчас в теме
(34) Вы гений, огромное спасибо!!!
36. user5300 1010 17.01.20 11:54 Сейчас в теме
(35) все с опытом придет ) спасибо )
37. troshin71 17.01.20 13:47 Сейчас в теме
(36) а в документах авансовый отчет там нету статьи ДДС, а он мне цепляет их не понятно от куда... я так же сделал по аналогии для документа авансовый отчет, он так же для других документов цепляет
38. user5300 1010 17.01.20 13:50 Сейчас в теме
(37) от туда он вообще ничего не цепляет ))
Данные тянутся либо с ПКО либо с РКО, если другой документ - пустое поле
39. troshin71 17.01.20 13:56 Сейчас в теме
(38) он почему то тянет для авансового отчета
Прикрепленные файлы:
40. troshin71 17.01.20 14:02 Сейчас в теме
(38)может это из за моего макета так происходит?
Прикрепленные файлы:
41. user5300 1010 17.01.20 14:06 Сейчас в теме
(40)да нет, макет правильный...
посмотри в отладчике ВыборкаДокумент.Документ - что тут за документы тянутся и статью откуда берет
42. troshin71 17.01.20 14:33 Сейчас в теме
(41) не понятно что-то, смотрю локальные переменные нету там не чего
43. troshin71 17.01.20 14:40 Сейчас в теме
(41) я понял сейчас одно, если я делаю выборку из одного типа документа (например приходный КО) то он начинает по этому документу подставлять это же значение в следующих документах
44. user5300 1010 17.01.20 14:50 Сейчас в теме
(43)скинь еще раз обработку готовую
45. troshin71 17.01.20 14:55 Сейчас в теме
(44) Сейчас сделал так, он не задваивает, а пишет где их не должно быть "НЕТ" пока такой выход нашел, но я так же добавил для статей затрат из авансовых отчетов он мне ошибку выдает при формировании "ИНДЕКС НАХОДИТСЯ ЗА ГРАНИЦАМИ МАССИВА"

Пока ВыборкаДокумент.Следующий() Цикл
				СтрокаДокумент.Параметры.Заполнить(ВыборкаДокумент);
                                Если ТипЗнч(ВыборкаДокумент.Документ) = Тип("ДокументСсылка.ПриходныйКассовыйОрдер")ИЛИ ТипЗнч(ВыборкаДокумент.Документ) = Тип("ДокументСсылка.РасходныйКассовыйОрдер")ИЛИ ТипЗнч(ВыборкаДокумент.Документ) = Тип("ДокументСсылка.ПлатежноеПоручениеИсходящее")  Тогда 
									СтрокаДокумент.Параметры.СтатьяДДС = ВыборкаДокумент.Документ.РасшифровкаПлатежа[0].СтатьяДвиженияДенежныхСредств;
							Конецесли;
								Если ТипЗнч(ВыборкаДокумент.Документ) = Тип("ДокументСсылка.АвансовыйОтчет") Тогда
									 СтрокаДокумент.Параметры.СтатьяДДС = Ложь
									//СтрокаДокумент.Параметры.СтатьяЗатрат = ВыборкаДокумент.Документ.Прочее[0].СтатьяЗатрат;
								КонецЕсли;
								Если ТипЗнч(ВыборкаДокумент.Документ) = Тип("ДокументСсылка.АвансовыйОтчет") Тогда
									СтрокаДокумент.Параметры.СтатьяЗатрат = ВыборкаДокумент.Документ.Прочее[0].СтатьяЗатрат;
								КонецЕсли;
								Если ТипЗнч(ВыборкаДокумент.Документ) = Тип("ДокументСсылка.ПриходныйКассовыйОрдер")ИЛИ ТипЗнч(ВыборкаДокумент.Документ) = Тип("ДокументСсылка.РасходныйКассовыйОрдер")ИЛИ ТипЗнч(ВыборкаДокумент.Документ) = Тип("ДокументСсылка.ПлатежноеПоручениеИсходящее")  Тогда 
									СтрокаДокумент.Параметры.СтатьяЗатрат = Ложь
									КонецЕсли;
Показать
46. troshin71 17.01.20 14:55 Сейчас в теме
47. user5300 1010 17.01.20 15:02 Сейчас в теме
(46)
))))) не правильно было, я исправил, суть я думаю будет понятно
49. troshin71 17.01.20 15:06 Сейчас в теме
(47) а где там исправлено? не могу найти
50. troshin71 17.01.20 15:07 Сейчас в теме
(47) извените меня если что)я наверное вам уже надоел..
26. troshin71 17.01.20 11:27 Сейчас в теме
(24) в первом поправил, не понятно что за ошибка была, когда делаю этот запрос и пробую добавить статьи все равно выдает сотрудников
12. ZergKRSK 129 17.01.20 10:50 Сейчас в теме +0.3 $m
14. troshin71 17.01.20 10:52 Сейчас в теме
(12)спасибо большое!!! вам тоже отправил стартмани
48. user5300 1010 17.01.20 15:04 Сейчас в теме
51. user5300 1010 17.01.20 15:51 Сейчас в теме
(48)
(49)
В цикле исправил , вы несколько раз выводили, а нужно одно условие прописать
Оставьте свое сообщение

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