Сформировать ОСВ по счетам по известному списку номенклатуры

1. one_strannik 2 27.06.23 20:40 Сейчас в теме
Всем доброго вечера!
Имеется база БП 30, актуальная, типовая, клиент-серверная.
Просьба подсказать, как решить следующую задачу: имеется список номенклатуры (2тыс+ позиций) и нужно понять на определенную дату и увидеть количество, на каком складе (их около 50) и на каком счете (из 10, 41, 43) есть номенклатура из списка.
Спасибо заранее.
По теме из базы знаний
Найденные решения
11. one_strannik 2 28.06.23 14:10 Сейчас в теме
Сделал следующим образом:

&НаСервере
Функция Команда1НаСервере()
	МассивНоменклатуры = Новый Массив;

	// в массив добавил нужные значения номенклатуры
	Запрос = Новый Запрос;
	Запрос.Текст =
	"ВЫБРАТЬ
	|	ХозрасчетныйОстаткиИОбороты.Субконто1.Наименование КАК Номенклатура,
	|	ХозрасчетныйОстаткиИОбороты.Субконто2 КАК Склад,
	|	ХозрасчетныйОстаткиИОбороты.Счет КАК Счет,
	|	ХозрасчетныйОстаткиИОбороты.КоличествоНачальныйОстаток КАК КоличествоНачальныйОстаток,
	|	ХозрасчетныйОстаткиИОбороты.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток
	|ИЗ
	|	РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, , , , , ) КАК ХозрасчетныйОстаткиИОбороты
	|ГДЕ
	|	ХозрасчетныйОстаткиИОбороты.Субконто1.Наименование В(&МассивНоменклатуры)
	|
	|УПОРЯДОЧИТЬ ПО
	|	Номенклатура";
	Запрос.УстановитьПараметр("КонецПериода", Дата(2022,12,31,11,59,59));
	Запрос.УстановитьПараметр("МассивНоменклатуры", МассивНоменклатуры);
	Запрос.УстановитьПараметр("НачалоПериода", Дата(2022,1,1,12,0,0));
	Результат = Запрос.Выполнить();
    Построитель = Новый ПостроительОтчета;
	Построитель.ИсточникДанных  = Новый ОписаниеИсточникаДанных(Результат);
	ТД = Новый ТабличныйДокумент;
	Построитель.Вывести(ТД);
	Возврат ТД;


КонецФункции

&НаКлиенте
Процедура Команда1(Команда)
	ТД = Команда1НаСервере();
	ТД.Показать();
КонецПроцедуры
Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. RustamZz 27.06.23 21:59 Сейчас в теме
(1)
Выбрать Счет, Субконто1, Субконто2, КоличествоОстаток Из РегистрБухгалтерии.Хозрасчетный.Остатки
one_strannik; +1 Ответить
3. Bell 37 27.06.23 22:57 Сейчас в теме
Оборотно сальдовая ведомость на дату. ОСВ по счету. Отбор...
4. laperuz 47 28.06.23 05:23 Сейчас в теме
Типовой отчет "Анализ субконто" же.
В настройках отчета на закладке "Виды субконто" выбираете Номенклатура и Склады(ну или наоборот, если нужно другую группировку)
Прикрепленные файлы:
5. one_strannik 2 28.06.23 10:51 Сейчас в теме
(4) проблема в том, что нужны значения номенклатуры, которые содержатся в отедльном списке (в нем 2тыс + позиций).
А в самой базе больше 20 тыс позиций номенклатуры
6. laperuz 47 28.06.23 10:53 Сейчас в теме
(5)На вкладке отбор делаете отбор и все.
7. one_strannik 2 28.06.23 10:58 Сейчас в теме
(6)
те отбор и все.

во вкладке отбор, насколько я понял, можно добавить значения только из справочника Номенклатура, подгрузить список из файла или вставить список не получится?
8. laperuz 47 28.06.23 11:02 Сейчас в теме
(7)Да не получится. Возможно через отбор "В группе из списка" получится быстрее.
Ну и это сделать 1 раз нужно, потом настройки сохранить можно и загружать при необходимости.
9. gero 60 28.06.23 13:32 Сейчас в теме
(0)
имеется список номенклатуры (2тыс+ позиций)
поместить ЭТОТ список в группу на время. Или отметьте их доп. реквизитом, это можно навсегда
10. Alex_E 2383 28.06.23 14:06 Сейчас в теме
Вот кусок кода из одной моих обработок - тут программно открывается анализ субконто, правда тут контрагенты, договоры итд. По аналогии можете открыть анализ, только программно параметры свои задайте и смотрите.
&НаСервере
Функция НастройкиАнализаСубконто(Субконто, Счета = Неопределено)
	
	Организация   = Объект.Организация;
	НачалоПериода = Объект.НачалоПериода;
	КонецПериода  = Объект.КонецПериода;
	
	НастройкиРасшифровки = Новый Структура;
	НастройкиРасшифровки.Вставить("Организация", Организация);
	
	НастройкиРасшифровки.Вставить("Отчет", Новый Структура);
	НастройкиРасшифровки.Отчет.Вставить("ИмяОтчета", "Отчет.АнализСубконто.Форма.ФормаОтчета");
	
	НастройкиРасшифровки.Отчет.Вставить("ПараметрыФормы", Новый Структура);
	НастройкиРасшифровки.Отчет.ПараметрыФормы.Вставить("РежимРасшифровки", Истина);
	НастройкиРасшифровки.Отчет.ПараметрыФормы.Вставить("ВидРасшифровки", 2);
	НастройкиРасшифровки.Отчет.ПараметрыФормы.Вставить("СформироватьПриОткрытии", Истина);
	
	ПользовательскиеНастройки = Новый ПользовательскиеНастройкиКомпоновкиДанных;
	
	ПользовательскиеНастройки.ДополнительныеСвойства.Вставить("Организация",   Организация);
	ПользовательскиеНастройки.ДополнительныеСвойства.Вставить("НачалоПериода", НачалоПериода);
	ПользовательскиеНастройки.ДополнительныеСвойства.Вставить("КонецПериода",  КонецПериода);
	
	СписокВидовСубконто = Новый СписокЗначений;
	СписокВидовСубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Контрагенты.Ссылка, "Контрагенты");
	Если Не (ТекущаяПроверка = "ПроверкаНДСсАвансов" или ТекущаяПроверка = "ПроверкаЗачетНДС") Тогда
		СписокВидовСубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Договоры.Ссылка, "Договоры");
		СписокВидовСубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.ДокументыРасчетовСКонтрагентами, "Документы расчетов с контрагентом");
	КонецЕсли;

	ПользовательскиеНастройки.ДополнительныеСвойства.Вставить("СписокВидовСубконто", СписокВидовСубконто);
	
	ТабличнаяЧастьГруппировка = Новый Массив;
	
	ОписаниеГруппировки = Новый Структура;
	ОписаниеГруппировки.Вставить("Использование", Истина);
	ОписаниеГруппировки.Вставить("Поле", "Субконто1");
	ОписаниеГруппировки.Вставить("Представление", "Контрагенты");
	ОписаниеГруппировки.Вставить("ТипГруппировки", 0);
	ТабличнаяЧастьГруппировка.Добавить(ОписаниеГруппировки);
	
	Если Не (ТекущаяПроверка = "ПроверкаНДСсАвансов" или ТекущаяПроверка = "ПроверкаЗачетНДС") Тогда
		ОписаниеГруппировки = Новый Структура;
		ОписаниеГруппировки.Вставить("Использование", Истина);
		ОписаниеГруппировки.Вставить("Поле", "Субконто2");
		ОписаниеГруппировки.Вставить("Представление", "Договоры");
		ОписаниеГруппировки.Вставить("ТипГруппировки", 0);
		ТабличнаяЧастьГруппировка.Добавить(ОписаниеГруппировки);
		
		ОписаниеГруппировки = Новый Структура;
		ОписаниеГруппировки.Вставить("Использование", Истина);
		ОписаниеГруппировки.Вставить("Поле", "Субконто3");
		ОписаниеГруппировки.Вставить("Представление", "Документы расчетов с контрагентами");
		ОписаниеГруппировки.Вставить("ТипГруппировки", 0);
		ТабличнаяЧастьГруппировка.Добавить(ОписаниеГруппировки);
	КонецЕсли;
	
	ПользовательскиеНастройки.ДополнительныеСвойства.Вставить("Группировка", ТабличнаяЧастьГруппировка);
	
	ПользовательскиеНастройки.ДополнительныеСвойства.Вставить("ПоСубсчетам", Истина);
	
	ПользовательскиеНастройки.ДополнительныеСвойства.Вставить("ПоказательБУ",            Истина);
	ПользовательскиеНастройки.ДополнительныеСвойства.Вставить("ПоказательНУ",            Ложь);
	ПользовательскиеНастройки.ДополнительныеСвойства.Вставить("ПоказательПР",            Ложь);
	ПользовательскиеНастройки.ДополнительныеСвойства.Вставить("ПоказательВР",            Ложь);
	ПользовательскиеНастройки.ДополнительныеСвойства.Вставить("ПоказательКонтроль",      Ложь);
	ПользовательскиеНастройки.ДополнительныеСвойства.Вставить("ПоказательВалютнаяСумма", Ложь);
	ПользовательскиеНастройки.ДополнительныеСвойства.Вставить("ПоказательКоличество",    Ложь);
	
	ПользовательскиеНастройки.ДополнительныеСвойства.Вставить("КлючВарианта");
	
	Отбор = ПользовательскиеНастройки.Элементы.Добавить(Тип("ОтборКомпоновкиДанных"));
	Отбор.ИдентификаторПользовательскойНастройки = "Отбор";
	
	ПолеКомпоновкиДанных = Новый ПолеКомпоновкиДанных("Субконто1");
	УстановитьВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
	Использование = Истина;
	Если СписокКонтрагентов.Количество() = 0 Тогда                    
		Использование = Ложь;
	ИначеЕсли СписокКонтрагентов.Количество() = 1 Тогда
		УстановитьВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
	Иначе
		УстановитьВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
	КонецЕсли;
	
	ДобавитьЗначениеВОтбор(Отбор, ПолеКомпоновкиДанных, УстановитьВидСравнения, СписокКонтрагентов, Использование);
	
	Если ТекущаяПроверка = "ПроверкаКонтрагентДоговор" Тогда
		
		ПолеКомпоновкиДанных = Новый ПолеКомпоновкиДанных("Субконто2");
		УстановитьВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
		Использование = Истина;
		Если СписокДоговоров.Количество() = 0 Тогда                    
			Использование = Ложь;
		ИначеЕсли СписокДоговоров.Количество() = 1 Тогда
			УстановитьВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
		Иначе
			УстановитьВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
		КонецЕсли;
		
		ДобавитьЗначениеВОтбор(Отбор, ПолеКомпоновкиДанных, УстановитьВидСравнения, СписокДоговоров, Использование);
		
	КонецЕсли;
	
	Если Счета <> Неопределено Тогда
		СписокСчетов = Новый СписокЗначений;
		Для Каждого СчетУчета Из Счета Цикл
			СписокСчетов.Добавить(СчетУчета);
		КонецЦикла;
		
		ПолеКомпоновкиДанных = Новый ПолеКомпоновкиДанных("Счет");
		ДобавитьЗначениеВОтбор(Отбор, ПолеКомпоновкиДанных, ВидСравненияКомпоновкиДанных.ВСпискеПоИерархии, СписокСчетов);
	КонецЕсли;

	НастройкиРасшифровки.Вставить("ПользовательскиеНастройки", ПользовательскиеНастройки);
	НастройкиРасшифровки.Вставить("СформироватьПриОткрытии", Истина);
	НастройкиРасшифровки.Вставить("ВидРасшифровки", 2);
	НастройкиРасшифровки.Вставить("РежимРасшифровки", Ложь);//Истина);
	Возврат НастройкиРасшифровки;
	
КонецФункции

&НаКлиенте
Процедура АнализСубконто(Команда)
	ПараметрыОтчета = НастройкиАнализаСубконто(СписокКонтрагентов, );
	ОткрытьФорму("Отчет.АнализСубконто.Форма", ПараметрыОтчета, ЭтаФорма, Истина);
КонецПроцедуры
Показать
11. one_strannik 2 28.06.23 14:10 Сейчас в теме
Сделал следующим образом:

&НаСервере
Функция Команда1НаСервере()
	МассивНоменклатуры = Новый Массив;

	// в массив добавил нужные значения номенклатуры
	Запрос = Новый Запрос;
	Запрос.Текст =
	"ВЫБРАТЬ
	|	ХозрасчетныйОстаткиИОбороты.Субконто1.Наименование КАК Номенклатура,
	|	ХозрасчетныйОстаткиИОбороты.Субконто2 КАК Склад,
	|	ХозрасчетныйОстаткиИОбороты.Счет КАК Счет,
	|	ХозрасчетныйОстаткиИОбороты.КоличествоНачальныйОстаток КАК КоличествоНачальныйОстаток,
	|	ХозрасчетныйОстаткиИОбороты.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток
	|ИЗ
	|	РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, , , , , ) КАК ХозрасчетныйОстаткиИОбороты
	|ГДЕ
	|	ХозрасчетныйОстаткиИОбороты.Субконто1.Наименование В(&МассивНоменклатуры)
	|
	|УПОРЯДОЧИТЬ ПО
	|	Номенклатура";
	Запрос.УстановитьПараметр("КонецПериода", Дата(2022,12,31,11,59,59));
	Запрос.УстановитьПараметр("МассивНоменклатуры", МассивНоменклатуры);
	Запрос.УстановитьПараметр("НачалоПериода", Дата(2022,1,1,12,0,0));
	Результат = Запрос.Выполнить();
    Построитель = Новый ПостроительОтчета;
	Построитель.ИсточникДанных  = Новый ОписаниеИсточникаДанных(Результат);
	ТД = Новый ТабличныйДокумент;
	Построитель.Вывести(ТД);
	Возврат ТД;


КонецФункции

&НаКлиенте
Процедура Команда1(Команда)
	ТД = Команда1НаСервере();
	ТД.Показать();
КонецПроцедуры
Показать
Оставьте свое сообщение

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