Консультация № 180971
27.11.2010, 20:41
65.35 руб.
0 9 1
Здравствуйте, уважаемые эксперты! Прошу Вас ответить на следующий вопрос: используется 1С:Предприятие 8.1 (8.1.13.41) Управление производственным предприятием, редакция 1.1 (1.1.9.3) Серверная БД.в терминале. Я делаю отчет в построителе. Мне необходимо получить данные в движении по товару, хранящемся на складе хранения. Я использовал РегистрНакопления.ПартииТоваровНаСкладах.ОстаткиИОбороты Данные получаются. Через настройки виртуальной таблицы нашел способ установить фильтр по дням. Но нет возможности выбрать период по дням,месяцам и т.д. для пользователя. И отчет выводит данные в единицах хранения остатков, что неудобно. Подскажите какими способами можно вывести в форму выбор периодичности данных и изменить единицы( к примеру как в др отчетах галочками в настройках: ед.хранения,базовые ед.,для отчетов). P.S. На склад товар попадает после проведения документа "Поступления товаров и услуг", обратно "возврат товаров поставщику" Менеджеры требуют чтобы в отчет попадали документы созданные(записанные), но не проведенные. в отдельную колонку. Возможно ли это? Спасибо заранее за помощь!

Приложение:
Процедура СкладХранения3Вывести()
//{{КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ_ПОСТРОИТЕЛЬОТЧЕТА_ВЫПОЛНИТЬ(СкладХранения3)
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

ЭлементыФормы.ПолеТабличногоДокумента.Очистить();

ПостроительОтчетаСкладХранения3.Параметры.Вставить("ДатаКонца", ДатаКонца);
ПостроительОтчетаСкладХранения3.Параметры.Вставить("ДатаНачала", ДатаНачала);
ПостроительОтчетаСкладХранения3.Параметры.Вставить("Склад", Склад);

ПостроительОтчетаСкладХранения3.Выполнить();
ПостроительОтчетаСкладХранения3.РазмещениеИзмеренийВСтроках = ТипРазмещенияИзмерений.Вместе;
ПостроительОтчетаСкладХранения3.РазмещениеРеквизитовИзмеренийВСтроках = ТипРазмещенияРеквизитовИзмерений.ВместеСИзмерениями;
ПостроительОтчетаСкладХранения3.РазмещениеРеквизитовИзмеренийВКолонках = ТипРазмещенияРеквизитовИзмерений.ВместеСИзмерениями;
ПостроительОтчетаСкладХранения3.РазмещениеИтоговВСтроках = ТипРазмещенияИтогов.ЗаголовокИПодвал;
ПостроительОтчетаСкладХранения3.РазмещениеИтоговВКолонках = ТипРазмещенияИтогов.ЗаголовокИПодвал;
ПостроительОтчетаСкладХранения3.МакетОформления = ПолучитьМакетОформления(СтандартноеОформление.Зима);
ПостроительОтчетаСкладХранения3.Вывести(ЭлементыФормы.ПолеТабличногоДокумента);

//}}КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ_ПОСТРОИТЕЛЬОТЧЕТА_ВЫПОЛНИТЬ
КонецПроцедуры

Процедура СкладХранения3Инициализация()
//{{КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ_ПОСТРОИТЕЛЬОТЧЕТА_ИНИЦИАЛИЗАЦИЯ(СкладХранения3)
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

ПостроительОтчетаСкладХранения3.Текст =
"ВЫБРАТЬ
| ПартииТоваровНаСкладахОстаткиИОбороты.Заказ.Контрагент КАК Контрагент,
| ПартииТоваровНаСкладахОстаткиИОбороты.Номенклатура КАК Номенклатура,
| ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток КАК НачальныйОстаток,
| ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоПриход КАК Приход,
| ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоРасход КАК Расход,
| ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток КАК КонечныйОстаток,
| ПартииТоваровНаСкладахОстаткиИОбороты.ПериодДень КАК ПериодДень,
| ПартииТоваровНаСкладахОстаткиИОбороты.Регистратор,
| ПартииТоваровНаСкладахОстаткиИОбороты.Номенклатура.БазоваяЕдиницаИзмерения,
| ПартииТоваровНаСкладахОстаткиИОбороты.Номенклатура.ЕдиницаХраненияОстатков
|ИЗ
| РегистрНакопления.ПартииТоваровНаСкладах.ОстаткиИОбороты(&ДатаНачала, &ДатаКонца, Авто, , Склад = &Склад) КАК ПартииТоваровНаСкладахОстаткиИОбороты
|
|СГРУППИРОВАТЬ ПО
| ПартииТоваровНаСкладахОстаткиИОбороты.Заказ.Контрагент,
| ПартииТоваровНаСкладахОстаткиИОбороты.Номенклатура,
| ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток,
| ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоПриход,
| ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоРасход,
| ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток,
| ПартииТоваровНаСкладахОстаткиИОбороты.ПериодДень,
| ПартииТоваровНаСкладахОстаткиИОбороты.Регистратор,
| ПартииТоваровНаСкладахОстаткиИОбороты.Номенклатура.БазоваяЕдиницаИзмерения,
| ПартииТоваровНаСкладахОстаткиИОбороты.Номенклатура.ЕдиницаХраненияОстатков
|
|УПОРЯДОЧИТЬ ПО
| Контрагент,
| ПериодДень
|{УПОРЯДОЧИТЬ ПО
| Контрагент.*,
| Номенклатура.*,
| ПериодДень,
| НачальныйОстаток,
| Приход,
| Расход,
| КонечныйОстаток,
| Регистратор.*,
| НоменклатураБазоваяЕдиницаИзмерения.*,
| НоменклатураЕдиницаХраненияОстатков.*}
|ИТОГИ ПО
| Контрагент,
| Номенклатура";
ПостроительОтчетаСкладХранения3.ЗаполнитьНастройки();
ПостроительОтчетаСкладХранения3.ЗаполнениеРасшифровки = ВидЗаполненияРасшифровкиПостроителяОтчета.ЗначенияГруппировок;
ПостроительОтчетаСкладХранения3.ТекстЗаголовка = "Склад хранения3";
Настройка = ВосстановитьЗначение("НастройкаОтчетыСкладХранения3СкладХранения3_e5513b8e-6205-4734-a0ca-0efc7134555b");
Если Настройка <> Неопределено Тогда
ПостроительОтчетаСкладХранения3.УстановитьНастройки(Настройка);
КонецЕсли;

//}}КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ_ПОСТРОИТЕЛЬОТЧЕТА_ИНИЦИАЛИЗАЦИЯ
КонецПроцедуры

Обсуждение

давно
Студент
218854
56
29.11.2010, 06:54
общий
это ответ
Здравствуйте, mapat89!
Советую посмотреть типовой отчет ВедомостьПоПартиямТоваровНаСкладах, он как раз работает с регистром накопления ПартииТоваровНаСкладах, по всем видам учета.
В нем реализован пересчет остатков в различные единицы измерения, заданные для номенклатуры
Код:
	
| ИсточникДанных.КоличествоНачальныйОстаток КАК КоличествоНачальныйОстаток,
| ИсточникДанных.КоличествоНачальныйОстаток * ИсточникДанных.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент / ИсточникДанных.Номенклатура.ЕдиницаДляОтчетов.Коэффициент КАК КоличествоНачальныйОстатокВЕдиницахДляОтчетов,
| ИсточникДанных.КоличествоНачальныйОстаток * ИсточникДанных.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент КАК КоличествоНачальныйОстатокВБазовыхЕдиницах,


По поводу вывода документов созданных, но не проведенных... Не проведенный документ не имеет движений по регистрам накопления, поэтому он не попадет в отчет. Он не попадет в виртуальную таблицу ОстаткиИОбороты.

Можно добавить к таблице ОстаткиИОбороты таблицу документов ПоступлениеТоваровИУслуг.Товары, но это может существенно замедлить работу отчета
Код:

ВЫБРАТЬ
ПартииТоваровНаСкладахОстаткиИОбороты.Заказ.Контрагент КАК Контрагент,
ПартииТоваровНаСкладахОстаткиИОбороты.Номенклатура КАК Номенклатура,
ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток КАК НачальныйОстаток,
ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоПриход КАК Приход,
ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоРасход КАК Расход,
ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток КАК КонечныйОстаток,
ПартииТоваровНаСкладахОстаткиИОбороты.ПериодДень КАК ПериодДень,
ПартииТоваровНаСкладахОстаткиИОбороты.Регистратор,
ПартииТоваровНаСкладахОстаткиИОбороты.Номенклатура.БазоваяЕдиницаИзмерения,
ПартииТоваровНаСкладахОстаткиИОбороты.Номенклатура.ЕдиницаХраненияОстатков,
0 КАК ПриходПТУ
ИЗ
РегистрНакопления.ПартииТоваровНаСкладах.ОстаткиИОбороты(&ДатаНачала, &ДатаКонца, Авто, , Склад = &Склад) КАК ПартииТоваровНаСкладахОстаткиИОбороты

СГРУППИРОВАТЬ ПО
ПартииТоваровНаСкладахОстаткиИОбороты.Заказ.Контрагент,
ПартииТоваровНаСкладахОстаткиИОбороты.Номенклатура,
ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток,
ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоПриход,
ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоРасход,
ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток,
ПартииТоваровНаСкладахОстаткиИОбороты.ПериодДень,
ПартииТоваровНаСкладахОстаткиИОбороты.Регистратор,
ПартииТоваровНаСкладахОстаткиИОбороты.Номенклатура.БазоваяЕдиницаИзмерения,
ПартииТоваровНаСкладахОстаткиИОбороты.Номенклатура.ЕдиницаХраненияОстатков

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
ПоступлениеТоваровУслугТовары.Ссылка.Контрагент,
ПоступлениеТоваровУслугТовары.Номенклатура,
0,
0,
0,
0,
ПоступлениеТоваровУслугТовары.Ссылка.Дата,
ПоступлениеТоваровУслугТовары.Ссылка,
ПоступлениеТоваровУслугТовары.Номенклатура.БазоваяЕдиницаИзмерения,
ПоступлениеТоваровУслугТовары.Номенклатура.ЕдиницаХраненияОстатков,
ПоступлениеТоваровУслугТовары.Количество * ПоступлениеТоваровУслугТовары.Коэффициент / ПоступлениеТоваровУслугТовары.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент
ИЗ
Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
ГДЕ
ПоступлениеТоваровУслугТовары.Ссылка.Проведен = ЛОЖЬ
И ПоступлениеТоваровУслугТовары.Ссылка.ПометкаУдаления = ЛОЖЬ
И ПоступлениеТоваровУслугТовары.Ссылка.Дата МЕЖДУ &ДатаНачала И &ДатаКонца
И ПоступлениеТоваровУслугТовары.Ссылка.СкладОрдер = &Склад

УПОРЯДОЧИТЬ ПО
Контрагент,
ПериодДень
{УПОРЯДОЧИТЬ ПО
Контрагент.*,
Номенклатура.*,
ПериодДень,
НачальныйОстаток,
Приход,
Расход,
КонечныйОстаток,
Регистратор.*,
НоменклатураБазоваяЕдиницаИзмерения.*,
НоменклатураЕдиницаХраненияОстатков.*}
ИТОГИ
СУММА(НачальныйОстаток),
СУММА(Приход),
СУММА(Расход),
СУММА(КонечныйОстаток),
СУММА(ПриходПТУ)
ПО
Контрагент,
Номенклатура
5
Неизвестный
29.11.2010, 13:30
общий
Адресаты:
Вы меня опередили с единицами и их коэффициентами.
Есть еще несколько вопросов:
Подскажите какими способами можно вывести в форму выбор периодичности данных
Поместить на форму реквизит с типом Перечисления.Периодичность, проверять его на пустое значение и присваивать значение по умолчанию.
Через настройки виртуальной таблицы нашел способ установить фильтр по дням. Но нет возможности выбрать период по дням,месяцам и т.д. для пользователя
модифицировать текст запроса в соответствии со значением переменной, в которой хранится периодичность.
Менеджеры требуют чтобы в отчет попадали документы созданные(записанные), но не проведенные. в отдельную колонку.
Соединить таблицу запроса с документами, в запрос добавить поле "Проведен" и по нему ориентироваться при выводе таблицы.

Вы такое сможете реализовать а я добавлю это в Ваш ответ? Тогда все отчисления пойдут Вам. Да и вопрос будет полностью отвечен.

P.S. Если хотите, в тэге "код" можно менять высоту, указав высоту окна с кодом в пикселах. Например: code h=170
Неизвестный
29.11.2010, 13:34
общий
Можно Вашу задачу реализовать и с помощью Универсального отчета.

В самом "универсальном отчете" описано как к нему обращаться и можно посмотреть решение, например, в том же ПартииТоваровНаСкладах. Там подробно описано в комментариях.
давно
Студент
218854
56
29.11.2010, 13:43
общий
Вы такое сможете реализовать а я добавлю это в Ваш ответ?
Что именно реализовать? В моем коде суммы прихода по непроведенным ПТУ выделены отдельным ресурсом "ПриходПТУ". Так что они уже будут в отдельной колонке
Неизвестный
29.11.2010, 22:08
общий
Адресаты:
Простите, не доглядел. Коэффициенты и единицы хранения остатков увидел, ПТУ не заметил.

Что реализовать: периодичность реквизит с типом Перечисления.Периодичность, проверять его на пустое значение и присваивать значение по умолчанию. И после модифицировать текст запроса в соответствии со значением переменной, в которой хранится периодичность.
Неизвестный
30.11.2010, 13:42
общий
Был бы очень благодарен, если Вы мне на конкретном примере показали как можно это все реализовать(выбор периодичности из формы и коеффициенты с единицами хранения) т.к. запутался с обоими способами. У меня получается мой прежний отчет...Приход ПТУ графа остается пустой после формирования, непроведенные документы в отчет не попадают
давно
Студент
218854
56
30.11.2010, 13:49
общий
А типовой отчет смотрели? Выбор периодичности там реализован как дополнительные поля, которые может выбрать пользователь в настройках построителя
Неизвестный
30.11.2010, 14:30
общий
у меня доработанная версия, не типовая. Видимо этот отчет дорабатывал программист. Такого кода как
| ИсточникДанных.КоличествоНачальныйОстаток КАК КоличествоНачальныйОстаток,
| ИсточникДанных.КоличествоНачальныйОстаток * ИсточникДанных.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент / ИсточникДанных.Номенклатура.ЕдиницаДляОтчетов.Коэффициент КАК КоличествоНачальныйОстатокВЕдиницахДляОтчетов,
| ИсточникДанных.КоличествоНачальныйОстаток * ИсточникДанных.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент КАК КоличествоНачальныйОстатокВБазовыхЕдиницах,


нет ни в модуле формы, ни в общем
давно
Студент
218854
56
01.12.2010, 13:39
общий
Посмотрите работу вот этого отчета, возможный вариант реализации Ваших потребностей.
И проверьте в своей конфигурации наличие типового отчета ОстаткиИОбороты, он также поможет Вам разобраться что делать дальше.

По поводу того что данные из непроведенных ПТУ не попадают в отчет... Это связано с обработкой периода отчета в запросе. Этот момент я поправила в приложенном отчете
Прикрепленные файлы:
4e390903e9ca67bde688d5c7200da835.rar
Форма ответа