Сформировать ОСВ по счетам по известному списку номенклатуры
Всем доброго вечера!
Имеется база БП 30, актуальная, типовая, клиент-серверная.
Просьба подсказать, как решить следующую задачу: имеется список номенклатуры (2тыс+ позиций) и нужно понять на определенную дату и увидеть количество, на каком складе (их около 50) и на каком счете (из 10, 41, 43) есть номенклатура из списка.
Спасибо заранее.
Имеется база БП 30, актуальная, типовая, клиент-серверная.
Просьба подсказать, как решить следующую задачу: имеется список номенклатуры (2тыс+ позиций) и нужно понять на определенную дату и увидеть количество, на каком складе (их около 50) и на каком счете (из 10, 41, 43) есть номенклатура из списка.
Спасибо заранее.
По теме из базы знаний
- Номенклатура и номенклатурные группы в программах 1С
- 50+ советов для успешной сдачи 1С: Специалист по платформе
- Разработка и сценарное тестирование с Vanessa-ADD. Практические примеры сценариев. Шаги встроенной библиотеки
- Переход с УПП на ERP. Сложности выверки регламентированного учета при «плавном переходе»
- Акцизы на сахаросодержащие напитки в 1С
Найденные решения
Сделал следующим образом:
&НаСервере
Функция Команда1НаСервере()
МассивНоменклатуры = Новый Массив;
// в массив добавил нужные значения номенклатуры
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ХозрасчетныйОстаткиИОбороты.Субконто1.Наименование КАК Номенклатура,
| ХозрасчетныйОстаткиИОбороты.Субконто2 КАК Склад,
| ХозрасчетныйОстаткиИОбороты.Счет КАК Счет,
| ХозрасчетныйОстаткиИОбороты.КоличествоНачальныйОстаток КАК КоличествоНачальныйОстаток,
| ХозрасчетныйОстаткиИОбороты.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, , , , , ) КАК ХозрасчетныйОстаткиИОбороты
|ГДЕ
| ХозрасчетныйОстаткиИОбороты.Субконто1.Наименование В(&МассивНоменклатуры)
|
|УПОРЯДОЧИТЬ ПО
| Номенклатура";
Запрос.УстановитьПараметр("КонецПериода", Дата(2022,12,31,11,59,59));
Запрос.УстановитьПараметр("МассивНоменклатуры", МассивНоменклатуры);
Запрос.УстановитьПараметр("НачалоПериода", Дата(2022,1,1,12,0,0));
Результат = Запрос.Выполнить();
Построитель = Новый ПостроительОтчета;
Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(Результат);
ТД = Новый ТабличныйДокумент;
Построитель.Вывести(ТД);
Возврат ТД;
КонецФункции
&НаКлиенте
Процедура Команда1(Команда)
ТД = Команда1НаСервере();
ТД.Показать();
КонецПроцедуры
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Вот кусок кода из одной моих обработок - тут программно открывается анализ субконто, правда тут контрагенты, договоры итд. По аналогии можете открыть анализ, только программно параметры свои задайте и смотрите.
&НаСервере
Функция НастройкиАнализаСубконто(Субконто, Счета = Неопределено)
Организация = Объект.Организация;
НачалоПериода = Объект.НачалоПериода;
КонецПериода = Объект.КонецПериода;
НастройкиРасшифровки = Новый Структура;
НастройкиРасшифровки.Вставить("Организация", Организация);
НастройкиРасшифровки.Вставить("Отчет", Новый Структура);
НастройкиРасшифровки.Отчет.Вставить("ИмяОтчета", "Отчет.АнализСубконто.Форма.ФормаОтчета");
НастройкиРасшифровки.Отчет.Вставить("ПараметрыФормы", Новый Структура);
НастройкиРасшифровки.Отчет.ПараметрыФормы.Вставить("РежимРасшифровки", Истина);
НастройкиРасшифровки.Отчет.ПараметрыФормы.Вставить("ВидРасшифровки", 2);
НастройкиРасшифровки.Отчет.ПараметрыФормы.Вставить("СформироватьПриОткрытии", Истина);
ПользовательскиеНастройки = Новый ПользовательскиеНастройкиКомпоновкиДанных;
ПользовательскиеНастройки.ДополнительныеСвойства.Вставить("Организация", Организация);
ПользовательскиеНастройки.ДополнительныеСвойства.Вставить("НачалоПериода", НачалоПериода);
ПользовательскиеНастройки.ДополнительныеСвойства.Вставить("КонецПериода", КонецПериода);
СписокВидовСубконто = Новый СписокЗначений;
СписокВидовСубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Контрагенты.Ссылка, "Контрагенты");
Если Не (ТекущаяПроверка = "ПроверкаНДСсАвансов" или ТекущаяПроверка = "ПроверкаЗачетНДС") Тогда
СписокВидовСубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Договоры.Ссылка, "Договоры");
СписокВидовСубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.ДокументыРасчетовСКонтрагентами, "Документы расчетов с контрагентом");
КонецЕсли;
ПользовательскиеНастройки.ДополнительныеСвойства.Вставить("СписокВидовСубконто", СписокВидовСубконто);
ТабличнаяЧастьГруппировка = Новый Массив;
ОписаниеГруппировки = Новый Структура;
ОписаниеГруппировки.Вставить("Использование", Истина);
ОписаниеГруппировки.Вставить("Поле", "Субконто1");
ОписаниеГруппировки.Вставить("Представление", "Контрагенты");
ОписаниеГруппировки.Вставить("ТипГруппировки", 0);
ТабличнаяЧастьГруппировка.Добавить(ОписаниеГруппировки);
Если Не (ТекущаяПроверка = "ПроверкаНДСсАвансов" или ТекущаяПроверка = "ПроверкаЗачетНДС") Тогда
ОписаниеГруппировки = Новый Структура;
ОписаниеГруппировки.Вставить("Использование", Истина);
ОписаниеГруппировки.Вставить("Поле", "Субконто2");
ОписаниеГруппировки.Вставить("Представление", "Договоры");
ОписаниеГруппировки.Вставить("ТипГруппировки", 0);
ТабличнаяЧастьГруппировка.Добавить(ОписаниеГруппировки);
ОписаниеГруппировки = Новый Структура;
ОписаниеГруппировки.Вставить("Использование", Истина);
ОписаниеГруппировки.Вставить("Поле", "Субконто3");
ОписаниеГруппировки.Вставить("Представление", "Документы расчетов с контрагентами");
ОписаниеГруппировки.Вставить("ТипГруппировки", 0);
ТабличнаяЧастьГруппировка.Добавить(ОписаниеГруппировки);
КонецЕсли;
ПользовательскиеНастройки.ДополнительныеСвойства.Вставить("Группировка", ТабличнаяЧастьГруппировка);
ПользовательскиеНастройки.ДополнительныеСвойства.Вставить("ПоСубсчетам", Истина);
ПользовательскиеНастройки.ДополнительныеСвойства.Вставить("ПоказательБУ", Истина);
ПользовательскиеНастройки.ДополнительныеСвойства.Вставить("ПоказательНУ", Ложь);
ПользовательскиеНастройки.ДополнительныеСвойства.Вставить("ПоказательПР", Ложь);
ПользовательскиеНастройки.ДополнительныеСвойства.Вставить("ПоказательВР", Ложь);
ПользовательскиеНастройки.ДополнительныеСвойства.Вставить("ПоказательКонтроль", Ложь);
ПользовательскиеНастройки.ДополнительныеСвойства.Вставить("ПоказательВалютнаяСумма", Ложь);
ПользовательскиеНастройки.ДополнительныеСвойства.Вставить("ПоказательКоличество", Ложь);
ПользовательскиеНастройки.ДополнительныеСвойства.Вставить("КлючВарианта");
Отбор = ПользовательскиеНастройки.Элементы.Добавить(Тип("ОтборКомпоновкиДанных"));
Отбор.ИдентификаторПользовательскойНастройки = "Отбор";
ПолеКомпоновкиДанных = Новый ПолеКомпоновкиДанных("Субконто1");
УстановитьВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
Использование = Истина;
Если СписокКонтрагентов.Количество() = 0 Тогда
Использование = Ложь;
ИначеЕсли СписокКонтрагентов.Количество() = 1 Тогда
УстановитьВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
Иначе
УстановитьВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
КонецЕсли;
ДобавитьЗначениеВОтбор(Отбор, ПолеКомпоновкиДанных, УстановитьВидСравнения, СписокКонтрагентов, Использование);
Если ТекущаяПроверка = "ПроверкаКонтрагентДоговор" Тогда
ПолеКомпоновкиДанных = Новый ПолеКомпоновкиДанных("Субконто2");
УстановитьВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
Использование = Истина;
Если СписокДоговоров.Количество() = 0 Тогда
Использование = Ложь;
ИначеЕсли СписокДоговоров.Количество() = 1 Тогда
УстановитьВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
Иначе
УстановитьВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
КонецЕсли;
ДобавитьЗначениеВОтбор(Отбор, ПолеКомпоновкиДанных, УстановитьВидСравнения, СписокДоговоров, Использование);
КонецЕсли;
Если Счета <> Неопределено Тогда
СписокСчетов = Новый СписокЗначений;
Для Каждого СчетУчета Из Счета Цикл
СписокСчетов.Добавить(СчетУчета);
КонецЦикла;
ПолеКомпоновкиДанных = Новый ПолеКомпоновкиДанных("Счет");
ДобавитьЗначениеВОтбор(Отбор, ПолеКомпоновкиДанных, ВидСравненияКомпоновкиДанных.ВСпискеПоИерархии, СписокСчетов);
КонецЕсли;
НастройкиРасшифровки.Вставить("ПользовательскиеНастройки", ПользовательскиеНастройки);
НастройкиРасшифровки.Вставить("СформироватьПриОткрытии", Истина);
НастройкиРасшифровки.Вставить("ВидРасшифровки", 2);
НастройкиРасшифровки.Вставить("РежимРасшифровки", Ложь);//Истина);
Возврат НастройкиРасшифровки;
КонецФункции
&НаКлиенте
Процедура АнализСубконто(Команда)
ПараметрыОтчета = НастройкиАнализаСубконто(СписокКонтрагентов, );
ОткрытьФорму("Отчет.АнализСубконто.Форма", ПараметрыОтчета, ЭтаФорма, Истина);
КонецПроцедуры
Показать
Сделал следующим образом:
&НаСервере
Функция Команда1НаСервере()
МассивНоменклатуры = Новый Массив;
// в массив добавил нужные значения номенклатуры
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ХозрасчетныйОстаткиИОбороты.Субконто1.Наименование КАК Номенклатура,
| ХозрасчетныйОстаткиИОбороты.Субконто2 КАК Склад,
| ХозрасчетныйОстаткиИОбороты.Счет КАК Счет,
| ХозрасчетныйОстаткиИОбороты.КоличествоНачальныйОстаток КАК КоличествоНачальныйОстаток,
| ХозрасчетныйОстаткиИОбороты.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, , , , , ) КАК ХозрасчетныйОстаткиИОбороты
|ГДЕ
| ХозрасчетныйОстаткиИОбороты.Субконто1.Наименование В(&МассивНоменклатуры)
|
|УПОРЯДОЧИТЬ ПО
| Номенклатура";
Запрос.УстановитьПараметр("КонецПериода", Дата(2022,12,31,11,59,59));
Запрос.УстановитьПараметр("МассивНоменклатуры", МассивНоменклатуры);
Запрос.УстановитьПараметр("НачалоПериода", Дата(2022,1,1,12,0,0));
Результат = Запрос.Выполнить();
Построитель = Новый ПостроительОтчета;
Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(Результат);
ТД = Новый ТабличныйДокумент;
Построитель.Вывести(ТД);
Возврат ТД;
КонецФункции
&НаКлиенте
Процедура Команда1(Команда)
ТД = Команда1НаСервере();
ТД.Показать();
КонецПроцедуры
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот