Выбрать все документы за период

1. butzoya 08.04.20 16:36 Сейчас в теме
Помогите написать простой отчет, позволяющий увидеть какие документы внесены в базе за определенный период, я так понимаю штатными средствами этого посмотреть нельзя? УТ 11.4. В 7.7 написала бы за минуту, а тут знаний не хватает. Нужно просто увидеть какие документы внесены, можно просто сообщением внизу.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. karamazoff 124 08.04.20 16:52 Сейчас в теме
(1)
Для каждого Док из Метаданные.Документы Цикл 
		Запрос.Текст =
		"ВЫБРАТЬ
		|	АвансовыйОтчет.Ссылка
		|ИЗ
		|	Документ.АвансовыйОтчет КАК АвансовыйОтчет
		|ГДЕ
		|	АвансовыйОтчет.Дата >= &Дата1  И АвансовыйОтчет.Дата <= &Дата2" ;

		Запрос.Текст = СтрЗаменить(Запрос.Текст,"АвансовыйОтчет",Док.Имя);
		
		Запрос.УстановитьПараметр("Дата1", НачалоДня(Дата1)); 
                Запрос.УстановитьПараметр("Дата2", КонецДня(Дата2)); 


		РезультатЗапроса = Запрос.Выполнить().выбрать();

                пока РезультатЗапроса .Следующий() цикл

                                 сообщить (РезультатЗапроса.Ссылка);
                КонецЦикла;   



КонецЦикла;
Показать


как запихнуть результат с таблицу, надеюсь разберетесь
5. VmvLer 08.04.20 16:57 Сейчас в теме
(3) Если у него 100500+ доков, то думаю сообщить() завалит систему.
6. karamazoff 124 08.04.20 17:01 Сейчас в теме
(5)тогда выводить в макет. А как иначе?
10. butzoya 08.04.20 17:07 Сейчас в теме
(5) Это не сильно важно, могу делать выборку за короткий промежуток.
9. butzoya 08.04.20 17:06 Сейчас в теме
(3)
Для каждого Док из Метаданные.Документы Цикл
Если Док.Дата >= Дата1 и <= Дата2 тогда
сообщить (Док);
КонецЕсли;
КонецЦикла;


Выдается ошибка "Невозможно осуществить вывод результата." :(
11. karamazoff 124 08.04.20 17:07 Сейчас в теме
(9)поправил код, поторопился...
4. VictorRGB2 14 08.04.20 16:56 Сейчас в теме
ТекстЗапросаПоДокументу = "
|ВЫБРАТЬ 
| Документ.Ссылка
|ИЗ
|  Документ.ТипДокумента КАК Документ
|ГДЕ
|  Документ.Дата МЕЖДУ &ДатаНач И &ДатаКон
|";

ТекстЗапроса = "";
Для Каждого Документ Из Метаданные.Документы Цикл
    	ТекстЗапроса = ТекстЗапроса + ?(ПустаяСтрока(ТекстЗапроса), "", "
	|ОБЪЕДИНИТЬ ВСЕ
	|") 
	+ СтрЗаменить(ТекстЗапросаПоДокументу, "ТипДокумента", Документ.Имя);
КонецЦикла; 

Запрос = Новый Запрос;
Запрос.Текст = ТекстЗапроса;
Запрос.УстановитьПараметр("ДатаНач", ДатаНач);
Запрос.УстановитьПараметр("ДатаКон", ДатаКон);

результат = Запрос.Выполнить();
Показать
14. Lilia 3 03.09.21 00:10 Сейчас в теме
(4)
Для упорядочения:

ТекстЗапросаПоДокументу = "
		|ВЫБРАТЬ 
		| Документ.Ссылка,
		| Документ.МоментВремени КАК МоментВремени
		|ИЗ
		|  Документ.ТипДокумента КАК Документ
		|ГДЕ
		|  Документ.Дата МЕЖДУ &ДатаНач И &ДатаКон
		|";

		ТекстЗапроса = "";
		Для Каждого Документ Из Метаданные.Документы Цикл
		        ТекстЗапроса = ТекстЗапроса + ?(ПустаяСтрока(ТекстЗапроса), "", "
		    |ОБЪЕДИНИТЬ ВСЕ
		    |") 
		    + СтрЗаменить(ТекстЗапросаПоДокументу, "ТипДокумента", Документ.Имя);
		КонецЦикла; 
		
		ТекстЗапроса = ТекстЗапроса + "
		|
		|УПОРЯДОЧИТЬ ПО
		|	МоментВремени";

		Запрос = Новый Запрос;
		Запрос.Текст = ТекстЗапроса;
		Запрос.УстановитьПараметр("ДатаНач", ДатаНач);
		Запрос.УстановитьПараметр("ДатаКон", ДатаКон);

		Результат = Запрос.Выполнить();
Показать
7. AnryMc 849 08.04.20 17:01 Сейчас в теме
Может я и не прав, но вопрос:
"какие документы внесены в базе за определенный период"

Т.е. это не дата документа, а дата его генерации в базе.
Нужен запрос к журналу регистрации.
8. karamazoff 124 08.04.20 17:06 Сейчас в теме
(7)тогда сложнее и журнал документов не самый надежный источник, его и подчистить могут...
12. butzoya 08.04.20 17:08 Сейчас в теме
(7) Нет, нет, достаточно отбора по дате документа.
13. AnryMc 849 08.04.20 17:14 Сейчас в теме
Рабочий код для выборки "Создателей контрагентов" из журнала регистрации
ИмяВыходногоФайла = ПолучитьИмяВременногоФайла(".xml");
	Фильтр = Новый Структура;
	
	Фильтр.Вставить("ДатаНачала", НачалоДня(НачПериода));
	Фильтр.Вставить("ДатаОкончания", КонецДня(КонПериода));
	
	МассивСобытий = Новый Массив;
	МассивСобытий.Добавить("_$Data$_.New");
	Фильтр.Вставить("Событие", МассивСобытий);
	
	МассивМетаданных = Новый Массив;
	МассивМетаданных.Добавить(Метаданные.Справочники.Контрагенты);
	Фильтр.Вставить("Метаданные", МассивМетаданных);

	СтрокаКолонокЖурналаРегистрации = "Дата, ИмяПользователя, Компьютер, Данные";
	ВыгрузитьЖурналРегистрации(ИмяВыходногоФайла, Фильтр, СтрокаКолонокЖурналаРегистрации);
	
	МассивТиповДанных = Новый Массив;
	Для Каждого МетаданныеДанных Из МассивМетаданных Цикл
		МассивТиповДанных.Добавить(Тип("СправочникСсылка." + МетаданныеДанных.Имя));
	КонецЦикла;
	
	ТаблицаСобытий = Новый ТаблицаЗначений;
	ТаблицаСобытий.Колонки.Добавить("Data", Новый ОписаниеТипов(МассивТиповДанных));
	
	ЗагрузитьЖурналРегистрацииВТаблицу(ИмяВыходногоФайла, ТаблицаСобытий, СтрокаКолонокЖурналаРегистрации);
	УдалитьФайлы(ИмяВыходногоФайла);
	
	Запрос = Новый Запрос;
	Запрос.УстановитьПараметр("ТаблицаСобытий", ТаблицаСобытий);
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	ВЫРАЗИТЬ(т.Данные КАК Справочник.Контрагенты) КАК Контрагент,
	|	т.Дата,
	|	т.ИмяПользователя КАК Пользователь,
	|	т.Компьютер
	|ПОМЕСТИТЬ втТаблицаСобытий
	|ИЗ
	|	&ТаблицаСобытий КАК т
	|;
	|
	|////////////////////////////////////////////////////////////­////////////////////
	|ВЫБРАТЬ
	|	т.Контрагент,
	|	т.Контрагент.Представление,
	|	т.Дата,
	|	т.Пользователь,
	|	т.Компьютер
	|ИЗ
	|	втТаблицаСобытий КАК т";
	Результат = Запрос.Выполнить();
	
	ТабДок = ЭлементыФормы.ТабДок;
Показать


Вместо
МассивМетаданных = Новый Массив;
МассивМетаданных.Добавить(Метаданные.Справочники.Контрагенты);
Фильтр.Вставить("Метаданные", МассивМетаданных);


Заполнить нужными документами

P.S. В моем браузере не работает вставить код на форуме. Сори!
15. fixin 4280 11.03.24 13:39 Сейчас в теме
Недавно применял такой способ:
Д1 = '20240220';
Д2 = '20240331';
ТекПодразделение = Получить.ЭтотУзел().Подразделение();
Сообщить(ТекПодразделение);
Для каждого МД из Метаданные.Документы Цикл
	Если МД.Реквизиты.Найти("Подразделение") = Неопределено Тогда
		Продолжить;
	КонецЕсли;
	Выборка = Документы[МД.Имя].Выбрать(Д1, Д2);
	Пока Выборка.Следующий() Цикл
		ОбрабатываемыйОбъект = Выборка.Ссылка.ПолучитьОбъект();
		Если ОбрабатываемыйОбъект.Подразделение <> ТекПодразделение Тогда
			Продолжить;
		КонецЕсли;
		Сообщить(ОбрабатываемыйОбъект);
		ОбрабатываемыйОбъект.Записать();
		Для Каждого НЗ ИЗ ОбрабатываемыйОбъект.Движения Цикл
			НЗ.Прочитать();
			Сообщить("  " + НЗ + ": " + НЗ.Количество());
			НЗ.Записать();
		КонецЦикла;
	КонецЦикла;
КонецЦикла;

Показать
16. user2033930 11.03.24 14:36 Сейчас в теме
(15) Гений!
Хардкодинг, сообщения на сервере - наще всё!
Давай, ставь свой любимый минус.
17. fixin 4280 11.03.24 14:51 Сейчас в теме
(16) этот код запускался в консоли кода.
Оставьте свое сообщение

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