в запросе одного набора данных есть строка
запрос другого набора данных:
в параметрах числится "ДатаПлана", для которого стоит выражение:
при попытке сформировать отчёт выдаёт:
как правильно написать выражение? может, это вообще по-другому делается?
РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаПлана, )
запрос другого набора данных:
ВЫБРАТЬ
ПланЗакупок.ДатаПланирования КАК ДатаПланирования
ИЗ
Документ.ПланЗакупок КАК ПланЗакупок
в параметрах числится "ДатаПлана", для которого стоит выражение:
ДатаПланирования
при попытке сформировать отчёт выдаёт:
Ошибка исполнения отчета по причине:
Ошибка в выражении "ДатаПланирования"
как правильно написать выражение? может, это вообще по-другому делается?
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2) спасибо за наводку. указал в качестве источника связи второй набор данных, приёмника связи - первый набор, в параметре связи - ДатаПлана. ошибка та же. нужно что-то ещё указать? просто я только начинаю с 1С разбираться. даже элементарных вещей ещё не знаю.
(18) по-моему, в моём случае можно обратиться к дате и так: ПланЗакупок.ДатаПланирования.
но только зачем мне целая колонка, заполненная одним и тем же значением, если эта дата нужна только для того, чтобы подставить в ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаПлана, ) для получения колонки с остатками на дату планирования.
а во втором наборе это будет только одна строчка. надо только как-то сделать значение из колонки ДатаПланирования параметром для первого набора.
но мне кажется, что в 1С должен быть какой-то другой механизм для этого, а то что-то уж больно мудрёно всё получается.
но только зачем мне целая колонка, заполненная одним и тем же значением, если эта дата нужна только для того, чтобы подставить в ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаПлана, ) для получения колонки с остатками на дату планирования.
а во втором наборе это будет только одна строчка. надо только как-то сделать значение из колонки ДатаПланирования параметром для первого набора.
но мне кажется, что в 1С должен быть какой-то другой механизм для этого, а то что-то уж больно мудрёно всё получается.
(21) Что-то мудрите, по-моему, как раз вы) Вам нужно выбрать несколько документов плана закупки и на дату плана каждого документа вытащить остатки? Или один документ плана на дату планирования и на эту дату вытащить остатки? И то и другое решается одним запросом безо всяких вторых наборов данных.
(23)
И всё!
ВЫБРАТЬ
ПланЗакупокСоставПлана.Номенклатура,
ПланЗакупокСоставПлана.ХарактеристикаНоменклатуры,
ПланЗакупокСоставПлана.ЕдиницаИзмерения,
ПланЗакупокСоставПлана.Количество,
ТоварыНаСкладахОстатки.КоличествоОстаток,
НачальныеОстатки.КоличествоОстаток КАК НачальныйОстаток
ИЗ
Документ.ПланЗакупок.СоставПлана КАК ПланЗакупокСоставПлана
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
ПО (ПланЗакупокСоставПлана.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура)
И (ПланЗакупокСоставПлана.ХарактеристикаНоменклатуры = ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры)
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаПлана, ) КАК НачальныеОстатки
ПО (ПланЗакупокСоставПлана.Номенклатура = НачальныеОстатки.Номенклатура)
И (ПланЗакупокСоставПлана.ХарактеристикаНоменклатуры = НачальныеОстатки.ХарактеристикаНоменклатуры)
ГДЕ
ПланЗакупокСоставПлана.Ссылка.ДатаПланирования = &ДатаПлана
ПоказатьИ всё!
(24) выдаёт пустую табличку. как только убираю условие ГДЕ, то таблица нормально заполняется, хоть начальные остатки и берутся на текущую дату.
на данный момент запрос выглядит так:
на данный момент запрос выглядит так:
ВЫБРАТЬ
ПланЗакупок.Ссылка,
ПланЗакупокСоставПлана.Номенклатура,
ПланЗакупокСоставПлана.ХарактеристикаНоменклатуры,
ПланЗакупокСоставПлана.ЕдиницаИзмерения,
ПланЗакупокСоставПлана.Количество,
ТоварыНаСкладахОстатки.КоличествоОстаток,
НачальныеОстатки.КоличествоОстаток КАК НачальныйОстаток
ИЗ
Документ.ПланЗакупок КАК ПланЗакупок
ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПланЗакупок.СоставПлана КАК ПланЗакупокСоставПлана
ПО ПланЗакупок.Ссылка = ПланЗакупокСоставПлана.Ссылка
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
ПО (ПланЗакупокСоставПлана.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура)
И (ПланЗакупокСоставПлана.ХарактеристикаНоменклатуры = ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры)
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаПлана, ) КАК НачальныеОстатки
ПО (ПланЗакупокСоставПлана.Номенклатура = НачальныеОстатки.Номенклатура)
И (ПланЗакупокСоставПлана.ХарактеристикаНоменклатуры = НачальныеОстатки.ХарактеристикаНоменклатуры)
ГДЕ
ПланЗакупокСоставПлана.Ссылка.ДатаПланирования = &ДатаПлана
Показать
Тогда можно попробовать убрать его из отбора, запрос будет выглядеть как
в выражении параметра ДатаПлана написать &Ссылка.ДатаПланирования.
ВЫБРАТЬ
ПланЗакупокСоставПлана.Номенклатура,
ПланЗакупокСоставПлана.ХарактеристикаНоменклатуры,
ПланЗакупокСоставПлана.ЕдиницаИзмерения,
ПланЗакупокСоставПлана.Количество,
ТоварыНаСкладахОстатки.КоличествоОстаток,
НачальныеОстатки.КоличествоОстаток КАК НачальныйОстаток
ИЗ
Документ.ПланЗакупок.СоставПлана КАК ПланЗакупокСоставПлана
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
ПО (ПланЗакупокСоставПлана.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура)
И (ПланЗакупокСоставПлана.ХарактеристикаНоменклатуры = ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры)
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаПлана, ) КАК НачальныеОстатки
ПО (ПланЗакупокСоставПлана.Номенклатура = НачальныеОстатки.Номенклатура)
И (ПланЗакупокСоставПлана.ХарактеристикаНоменклатуры = НачальныеОстатки.ХарактеристикаНоменклатуры)
ГДЕ
ПланЗакупокСоставПлана.Ссылка = &Ссылка
Показатьв выражении параметра ДатаПлана написать &Ссылка.ДатаПланирования.
(32) при попытке сформировать отчёт выдаёт ошибку:
Ошибка исполнения отчета
по причине:
Ошибка в элементе отбора: глобальные элементы отбора обязательно должны использовать поля "ПараметрыДанных.Ссылка Равно План закупок 00000000011 от 01.11.2018 12:00:00"
Прикрепленные файлы:
(41) да, табличка теперь заполняется. это уже хорошо. единственная проблема, которую сейчас вижу, - это то, что когда меняется параметр "Период", то остатки меняются как в колонке КоличествоОстаток (что правильно), так и в колонке НачальныйОстаток (что неправильно, т.к. начальные остатки должны всегда браться на дату планирования).
запрос сейчас такой:
запрос сейчас такой:
ВЫБРАТЬ
ПланЗакупокСоставПлана.Номенклатура,
ПланЗакупокСоставПлана.ХарактеристикаНоменклатуры,
ПланЗакупокСоставПлана.ЕдиницаИзмерения,
ПланЗакупокСоставПлана.Количество,
ТоварыНаСкладахОстатки.КоличествоОстаток,
НачальныеОстатки.КоличествоОстаток КАК НачальныйОстаток
ИЗ
Документ.ПланЗакупок.СоставПлана КАК ПланЗакупокСоставПлана
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
ПО ПланЗакупокСоставПлана.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура
И ПланЗакупокСоставПлана.ХарактеристикаНоменклатуры = ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаПлана, ) КАК НачальныеОстатки
ПО ПланЗакупокСоставПлана.Номенклатура = НачальныеОстатки.Номенклатура
И ПланЗакупокСоставПлана.ХарактеристикаНоменклатуры = НачальныеОстатки.ХарактеристикаНоменклатуры
ГДЕ
ПланЗакупокСоставПлана.Ссылка = &Ссылка
ПоказатьПрикрепленные файлы:
(46) попробовал сделать, но теперь и начальные остатки, и остатки на указанную дату берутся текущие, а не на соответствующие даты. опять какой-то затык.
текущий запрос:
текущий запрос:
ВЫБРАТЬ
ПланЗакупокСоставПлана.Номенклатура,
ПланЗакупокСоставПлана.ХарактеристикаНоменклатуры,
ПланЗакупокСоставПлана.ЕдиницаИзмерения,
ПланЗакупокСоставПлана.Количество КАК Потребность,
ТоварыНаСкладахОстатки.КоличествоОстаток КАК ОстатокНаДату,
НачальныеОстатки.КоличествоОстаток КАК НачальныйОстаток
ИЗ
Документ.ПланЗакупок.СоставПлана КАК ПланЗакупокСоставПлана
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаОстатков, ) КАК ТоварыНаСкладахОстатки
ПО ПланЗакупокСоставПлана.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура
И ПланЗакупокСоставПлана.ХарактеристикаНоменклатуры = ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаПлана, ) КАК НачальныеОстатки
ПО ПланЗакупокСоставПлана.Номенклатура = НачальныеОстатки.Номенклатура
И ПланЗакупокСоставПлана.ХарактеристикаНоменклатуры = НачальныеОстатки.ХарактеристикаНоменклатуры
ГДЕ
ПланЗакупокСоставПлана.Ссылка = &Ссылка
ПоказатьПрикрепленные файлы:
(51) короче, все фигня, давай по-новой)
У параметра "ДатаПлана" ограничение убираем, из колонки "Выражение" всю эту чушь стираем, на вкладке Настройки-Параметры в пользовательских настройках элемента ставим галку "Включить в пользовательские настройки", режим редактирования - "Недоступный".
Открываем модуль объекта, там пишем:
У параметра "ДатаПлана" ограничение убираем, из колонки "Выражение" всю эту чушь стираем, на вкладке Настройки-Параметры в пользовательских настройках элемента ставим галку "Включить в пользовательские настройки", режим редактирования - "Недоступный".
Открываем модуль объекта, там пишем:
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
Элементы = КомпоновщикНастроек.ПользовательскиеНастройки.Элементы;
Ссылка = Новый ПараметрКомпоновкиДанных("Ссылка");
Для каждого Элемент Из Элементы Цикл
Если Элемент.Параметр = Ссылка Тогда
ДатаПлана = Элемент.Значение.ДатаПланирования;
Прервать;
КонецЕсли;
КонецЦикла;
ДатаПланаПараметр = Новый ПараметрКомпоновкиДанных("ДатаПлана");
Для каждого Элемент Из Элементы Цикл
Если Элемент.Параметр = ДатаПланаПараметр Тогда
Элемент.Значение = ДатаПлана;
Прервать;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
ПоказатьПрикрепленные файлы:
(53) &ДатаОстатков заключил в запросе в фигурные скобочки. теперь остатки на дату выводятся корректно.
что касается предложенных изменений, то я всё сделал, но с выбранным планом закупок, например, на январь начальные остатки по-прежнему выводятся текущие.
что касается предложенных изменений, то я всё сделал, но с выбранным планом закупок, например, на январь начальные остатки по-прежнему выводятся текущие.
Прикрепленные файлы:
ПланЗакупокОстаткиДефицит.erf
(10) если во втором наборе нет поле с типом дата (например период ) то можете использовать свой параметр в качестве поля
т.е.
т.е.
Выбрать
МояТаб.Качество,
МояТаб.Номенклатура
....
....
....
&ДатаПлана КАК ДатаПланирования
ИЗ
РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаПлана, ) КАК МояТаблица
Показать
(19) я в (12) и предлагал в первый набор это поле добавить. но тогда, если я всё правильно понимаю, в таблице первого набора будет колонка ДатаПланирования, которая будет заполнена одним и тем же значением, хотя эта дата мне нужна только для того, чтобы подставить в ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаПлана, ) для получения колонки с остатками на дату планирования.
наверное, это как-то по другому должно делаться, просто я не знаю этого.
наверное, это как-то по другому должно делаться, просто я не знаю этого.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот