• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

Получение остатков (дата прихода)

  • Автор темы KatyariK
  • Дата начала
K

KatyariK

Такая ситуация - есть отчет по получению остатков по складу (с группировкой по счету). Необходимо получить дату прихода номенклатуры по которой есть остатки. Когда поступает номенклатура на склад - ей дается или какая то характеристика или серия (поступления номенклатуры с одинаковой характеристикой или серией - не будет). - Вот и нужно вытянуть эту дату - чтобы посмотреть, вдруг товар лежит уже несколько лет.
Но из регистра у меня не получается выудить эту дату. Может кто подскажет?

Вот листинг отчета который как бы уже работает давно, но начальство требует чтобы можно было посмотреть с какого числа был приход - и как долго находится на складе. Отчет сделан через консоль отчетов (1С 8.1)

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

thinkfast

ПартииТоваровНаСкладахБухгалтерскийУчетОстатки.Период КАК Дата.
 
K

KatyariK

Не совсем - я может плохо расписал свою ситуацию (просто опыта мало в этом деле).
Есть регистр "ПартииТоваровНаСкладахБухгалтерскийУчет", а я получаются делаю выборку по остаткам из виртуальной таблицы остатков "ПартииТоваровНаСкладахБухгалтерскийУчетОстатки" - а здесь поля Период нету.

Т.е. я смотрю остатки на данную дату которые есть на складе - которых уже нету меня не интересуют.
Может как то по другому посоветуете?
 
T

thinkfast

Все правильно поля период нету в таблице потому, что оно не выбирается запросом.
Чтобы оно попало в ТЗ надо указать запросу выбирать дату
Строка будет похожа на "ПартииТоваровНаСкладахБухгалтерскийУчетОстатки.Период КАК Дата".
А ваша ТЗ "ПартииТоваровНаСкладахБухгалтерскийУчетОстатки" это представление регистра по параметру &Организация.
А в самом регистре поля "Период" присутствует неявно.

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


З.Ы. сразу говорю я сам не гуру Запросов
 
K

KatyariK

Пишет что поле период не найдено. Просто период если я правильно понимаю - он есть в реальной таблице "ПартииТоваровНаСкладахБухгалтерскийУчет" - когда есть поступление или уменьшение товара в регистре накопления.
А тут же сразу идет выборка из виртуальной таблицы остатков - в которой уже посчитаны остатки - а поля "Период" нету - потому что система не поймет к какому периоду ей обращатсья - увеличения или уменьшения остатков.

Или может таким образом никак не вытянуть данную дату? Может как по другому попробовать?
 
T

thinkfast

Про регистр.остатки мой фейл )) не обратил внимания еще алкоголь в крови с выходных )))

По-другому писать свой. Этот вам выберет все позиции, где есть отстаток, а ваш запрос найдет в регистре.приход дату поступления, или сделать вложенный запрос, если хотите получать все в одной таблице)
но тогда надо убирать ПРЕДСТАВЛЕНИЕ() ибо оно все преобразует в строку.
 
K

KatyariK

Спасибо, сейчас попробую, должно получиться наверно.
 
U

unknown181538

Период задается в параметрах виртуальной таблицы.
 
K

KatyariK

тут не период - а именно дата прихода номенклатуры у которой еще есть остатки.
 
U

unknown181538

А что за конфа?
Предположу, что есть измерение "Партия" типа "Документ", и вам нужно взять "РегистрТакойТо.Партия.Дата".
Не так?
 
K

KatyariK

Конфигурация УПП. А про "измерения - есть измерения "ДокументОприходования" типа "ДокументСсылка.xxxxx" (но там много составной тип - т.е. много документов).. но если просматривать регистр накопления "ПартииТоваровНаСкладахБухгалтерскийУчет" - то там пустая строка - счелкнул по которой мы переходим на "ДокументСсылка.xxxxx".

Может через это как нибудь?
 
U

unknown181538

Много непонятно.
Почему нельзя использовать ДокументОприходования.Дата?
Измерение-то заполняется?
 
K

KatyariK

когда просматриваю сам регистр накопления - то ячейка как бы пустая в измерении ДокументОприходования, когда пытаюсь вытянуть эту дату - ничего не выводит - я пробовал - но увы :ph34r: почему не знаю.
 
P

puh14

Если и в визуальном просмотре регистра там пусто, тогда хреново - значит косяк в проведении документа. Единственно как тогда тебе вытаскивать это через регистратор.дата (дай-ты бог чтобы там не справочник был), и например КоличествоПриход >0 (но не в таблице остатков, а в оборотах) и соединять с остатками. плюс отсечь другие виды документов (типа возврат, ввод начальных остатков, где вроде нету поставщика).
 
K

KatyariK

Всем спасибо огромное за советы. У меня получилось вытянуть дату :) Спасибо за идею puh14 - просто не приходило в голову сделать через остатки.
Вот что у меня получилось в итоге:

[codebox]ВЫБРАТЬ
ПартииТоваровНаСкладахБухгалтерскийУчетОбороты.Номенклатура,
ПРЕДСТАВЛЕНИЕ(ПартииТоваровНаСкладахБухгалтерскийУчетОбороты.Номенклатура),
ПартииТоваровНаСкладахБухгалтерскийУчетОбороты.СчетУчета КАК СчетУчета,
ПРЕДСТАВЛЕНИЕ(ПартииТоваровНаСкладахБухгалтерскийУчетОбороты.СчетУчета),
ПартииТоваровНаСкладахБухгалтерскийУчетОбороты.Организация КАК Организация,
ПРЕДСТАВЛЕНИЕ(ПартииТоваровНаСкладахБухгалтерскийУчетОбороты.Организация),
ПартииТоваровНаСкладахБухгалтерскийУчетОбороты.Склад КАК Склад,
ПРЕДСТАВЛЕНИЕ(ПартииТоваровНаСкладахБухгалтерскийУчетОбороты.Склад),
ПартииТоваровНаСкладахБухгалтерскийУчетОбороты.ДокументОприходования,
ПРЕДСТАВЛЕНИЕ(ПартииТоваровНаСкладахБухгалтерскийУчетОбороты.ДокументОприходован
ия),
ПартииТоваровНаСкладахБухгалтерскийУчетОбороты.ХарактеристикаНоменклатуры,
ПРЕДСТАВЛЕНИЕ(ПартииТоваровНаСкладахБухгалтерскийУчетОбороты.ХарактеристикаНомен
клатуры),
ПартииТоваровНаСкладахБухгалтерскийУчетОбороты.СерияНоменклатуры,
ПРЕДСТАВЛЕНИЕ(ПартииТоваровНаСкладахБухгалтерскийУчетОбороты.СерияНоменклатуры),
ПартииТоваровНаСкладахБухгалтерскийУчетОбороты.КоличествоОборот КАК КоличествоОборот,
ПартииТоваровНаСкладахБухгалтерскийУчетОбороты.КоличествоПриход,
ПартииТоваровНаСкладахБухгалтерскийУчетОбороты.КоличествоРасход,
ПартииТоваровНаСкладахБухгалтерскийУчетОбороты.СтоимостьОборот КАК СтоимостьОборот,
ПартииТоваровНаСкладахБухгалтерскийУчетОбороты.СтоимостьПриход,
ПартииТоваровНаСкладахБухгалтерскийУчетОбороты.СтоимостьРасход,
ВЫБОР
КОГДА ПартииТоваровНаСкладахБухгалтерскийУчетОбороты.КоличествоОборот > 0
ТОГДА ПартииТоваровНаСкладахБухгалтерскийУчетОбороты.СтоимостьОборот / ПартииТоваровНаСкладахБухгалтерскийУчетОбороты.КоличествоОборот
ИНАЧЕ 0
КОНЕЦ КАК Цена,
МАКСИМУМ(ПартииТоваровНаСкладахБухгалтерскийУчет.Период) КАК Период
ИЗ
РегистрНакопления.ПартииТоваровНаСкладахБухгалтерскийУчет.Обороты КАК ПартииТоваровНаСкладахБухгалтерскийУчетОбороты
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровНаСкладахБухгалтерскийУчет КАК ПартииТоваровНаСкладахБухгалтерскийУчет
ПО ПартииТоваровНаСкладахБухгалтерскийУчетОбороты.Номенклатура = ПартииТоваровНаСкладахБухгалтерскийУчет.Номенклатура
И ПартииТоваровНаСкладахБухгалтерскийУчетОбороты.СчетУчета = ПартииТоваровНаСкладахБухгалтерскийУчет.СчетУчета
И ПартииТоваровНаСкладахБухгалтерскийУчетОбороты.Склад = ПартииТоваровНаСкладахБухгалтерскийУчет.Склад
И ПартииТоваровНаСкладахБухгалтерскийУчетОбороты.ХарактеристикаНоменклатуры = ПартииТоваровНаСкладахБухгалтерскийУчет.ХарактеристикаНоменклатуры
И ПартииТоваровНаСкладахБухгалтерскийУчетОбороты.СерияНоменклатуры = ПартииТоваровНаСкладахБухгалтерскийУчет.СерияНоменклатуры
ГДЕ
ПартииТоваровНаСкладахБухгалтерскийУчетОбороты.КоличествоПриход <> ПартииТоваровНаСкладахБухгалтерскийУчетОбороты.КоличествоРасход
И (ПартииТоваровНаСкладахБухгалтерскийУчет.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг
ИЛИ ПартииТоваровНаСкладахБухгалтерскийУчет.Регистратор ССЫЛКА Документ.ОприходованиеТоваров
ИЛИ ПартииТоваровНаСкладахБухгалтерскийУчет.Регистратор ССЫЛКА Документ.ОтчетПроизводстваЗаСмену
ИЛИ ПартииТоваровНаСкладахБухгалтерскийУчет.Регистратор ССЫЛКА Документ.ОприходованиеМатериаловИзПроизводства
ИЛИ ПартииТоваровНаСкладахБухгалтерскийУчет.Регистратор ССЫЛКА Документ.ВозвратМатериаловИзЭксплуатации
ИЛИ ПартииТоваровНаСкладахБухгалтерскийУчет.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслугВНТТ)

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

В принципе отчет работает довольно быстро - но может у кого есть какие советы по оптимизации - буду весьма благодарен.
 
U

unknown181538

Так что же у вас с проведением?)
 
K

KatyariK

Много непонятно.
Почему нельзя использовать ДокументОприходования.Дата?
Измерение-то заполняется?

Измерение ДокументОприходования - при просмотре самого регистра накопления пустая графа. Но сейчас посмотрев внимательнее - данное измерение заполняется только для одного склада ... Почему оно так записывает - сказать пока не могу - нужно смотреть, но начинать программировать с УПП ... в которой все запутано - сложновато - я то может и найду - но не так быстро.
 
P

puh14

Можно использовать ОстаткиИОбороты - тогда равенство на приход/расход нафиг не надо, расход тоже не нужен - чисто отбор по КоличествоПриход>0, видам документов, и группировка по Регистратор.Дата.

а остатки вытягивать как в первом листинге.
 
K

KatyariK

Ну в принципе да - работает и так, проверил, только еще нужно добавлять ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.КоличествоКонечныйОстаток > 0 - без него не будет работать.
Спасибо.

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

СГРУППИРОВАТЬ ПО
ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.Номенклатура,
ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.СчетУчета,
ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.Организация,
ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.Склад,
ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.ХарактеристикаНоменклатур
ы,
ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.СерияНоменклатуры,
ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.КоличествоКонечныйОстаток
,
ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.СтоимостьКонечныйОстаток
ИТОГИ
СУММА(КоличествоКонечныйОстаток),
СУММА(СтоимостьКонечныйОстаток)
ПО
Склад[/codebox]
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!