8.х Отчет

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Smikka, 15 янв 2010.

  1. TopicStarter Overlay
    Smikka
    Offline

    Smikka

    Регистрация:
    8 дек 2008
    Сообщения:
    47
    Симпатии:
    0
    Баллы:
    1
    Здравствуйте.
    У меня есть Рг.Св. , у него несколько регистраторов. Периодичность по позиции регистратора.
    Нужно сделать срез последних данных на дату по одному заданному регистратору.

    Делаю вложенный запрос - там нужный регистратор.
    Добавляем в запрос Рг.Св.
    Если делать связь ВложЗапрос.Ссылка (все) = РгСв.Регистратор ( ), то в отчет выводится столько строчек,сколько документов. И не важно проведен или нет. + нужная номенклатура. Это не правильно, ведь должно быть выведено только то что есть в РгСв, т.е. номенклатура из проведенных товаров.

    Если есть два документа с одинаковой номенклатурой, разной датой. Первый проведен, а второй- нет. ТО в отчет выводится пустая строка. Это все из-за периодичности.

    Код:
    	ПостроительОтчетаОтчет1.Текст =
    "ВЫБРАТЬ
    |	ЦеныКомпанииСрезПоследних.Регистратор КАК Регистратор,
    |	ЦеныКомпанииСрезПоследних.Номенклатура КАК Номенклатура,
    |	ПРЕДСТАВЛЕНИЕ(ЦеныКомпанииСрезПоследних.Номенклатура),
    |	ЦеныКомпанииСрезПоследних.ХарактеристикаНоменклатуры,
    |	ПРЕДСТАВЛЕНИЕ(ЦеныКомпанииСрезПоследних.ХарактеристикаНоменклатуры),
    |	ЦеныКомпанииСрезПоследних.Склад,
    |	ПРЕДСТАВЛЕНИЕ(ЦеныКомпанииСрезПоследних.Склад),
    |	ЦеныКомпанииСрезПоследних.Цена,
    |	ЦеныКомпанииСрезПоследних.Валюта,
    |	ПРЕДСТАВЛЕНИЕ(ЦеныКомпанииСрезПоследних.Валюта)
    |ИЗ
    |	(ВЫБРАТЬ
    |		АктОПереоценке.Склад КАК Склад,
    |		ПРЕДСТАВЛЕНИЕ(АктОПереоценке.Склад) КАК СкладПредставление,
    |		АктОПереоценке.Ссылка КАК Ссылка,
    |		АктОПереоценке.Представление КАК Представление
    |	ИЗ
    |		Документ.АктОПереоценке КАК АктОПереоценке
    |	ГДЕ
    |		АктОПереоценке.Дата <= &МоментВремени) КАК ВложенныйЗапрос
    |		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныКомпании.СрезПоследних(&МоментВремени, ТипЦен = &ТипЦен) КАК ЦеныКомпанииСрезПоследних
    |		ПО ВложенныйЗапрос.Ссылка = ЦеныКомпанииСрезПоследних.Регистратор
    |
    |УПОРЯДОЧИТЬ ПО
    |	Номенклатура,
    |	Регистратор";
    
    
  2. wertklop
    Offline

    wertklop Опытный в 1С

    Регистрация:
    12 май 2008
    Сообщения:
    321
    Симпатии:
    0
    Баллы:
    26
    по моему, проще воспользоваться существующей функцией СрезПоследних() с соответствующим отбором
  3. Itsys
    Offline

    Itsys Опытный в 1С

    Регистрация:
    3 янв 2010
    Сообщения:
    1.394
    Симпатии:
    0
    Баллы:
    26
    А зачем Вам вообще вложенный запрос? Выбирайте СрезПоследних из регистра сведений на момент времени нужного документа и все...

    wertklop, СрезПоследних() это не функция, а виртуальная таблица.
  4. wertklop
    Offline

    wertklop Опытный в 1С

    Регистрация:
    12 май 2008
    Сообщения:
    321
    Симпатии:
    0
    Баллы:
    26
    есть как одноимённая таблица, так и функция, обращающаяся к ней. таблица используется в запросах, а функция коде. если я не прав, поправьте
  5. Itsys
    Offline

    Itsys Опытный в 1С

    Регистрация:
    3 янв 2010
    Сообщения:
    1.394
    Симпатии:
    0
    Баллы:
    26
    Функцию в построитель отчетов не запихнешь :)
  6. TopicStarter Overlay
    Smikka
    Offline

    Smikka

    Регистрация:
    8 дек 2008
    Сообщения:
    47
    Симпатии:
    0
    Баллы:
    1
    Но СрезПоследних возмет данные все на момент времени, т.е. по всем документам-регистраторам Регистра. А мне надо только по определенному документу.
    Или я не права?!

    Тем более у меня уже используется Срез...
  7. Itsys
    Offline

    Itsys Опытный в 1С

    Регистрация:
    3 янв 2010
    Сообщения:
    1.394
    Симпатии:
    0
    Баллы:
    26
    В этом случае Вы неправильно используете механизм регистра. Опишите задачу, поподробнее, может ее надо решать другими средствами.
  8. gosn1ck
    Offline

    gosn1ck Опытный в 1С

    Регистрация:
    13 авг 2009
    Сообщения:
    1.329
    Симпатии:
    1
    Баллы:
    26
    комрад, это функция :unsure: результат действие которой - таблица значений и она уже не виртуальная :smile: хотя может быть и виртуальная, но записи в ней вполне реальные :aua:
  9. mialord
    Offline

    mialord Модераторы Команда форума Модератор

    Регистрация:
    31 июл 2009
    Сообщения:
    5.398
    Симпатии:
    40
    Баллы:
    54
    Здраствуйте!
    1. Для снятия бесполезных дискуссий
    Это функция, возвращающая результат из регистра сведений, Результат ТапблицаЗначений по установленному отбору. Однако стоит помнить что платформа создаёт виртуальные таблицы, и в данной теме по-моему произошла путаница, в запросе СрезПоследних действительно возвращает данные выбранные из виртуальной таблицы с установленным отбором :unsure:
    2. СрезПоследних можно использовать с различным отбором, можно либо настроить отбор у регистра сведений по регистратору либу у запроса в условии ГДЕ использовать оператор ВЫРАЗИТЬ по типу регистратора, как лучше, выбор за Вами, однако я бы порекомендовал указать условие в отборе выборки из виртуальной таблицы.
  10. TopicStarter Overlay
    Smikka
    Offline

    Smikka

    Регистрация:
    8 дек 2008
    Сообщения:
    47
    Симпатии:
    0
    Баллы:
    1

    Есть регистр сведений - Цены. У данного регистра регистраторы:Ввод остатков номенкл, Возврат от покупат, Изменение цен, оприходывание, перемещение, и др. Необходимо из документа "акт о переоценке" выбрать цены товара по заданному складу на определённую дату.
    Поэтому и делая СрезПосл по регистратору.
  11. TopicStarter Overlay
    Smikka
    Offline

    Smikka

    Регистрация:
    8 дек 2008
    Сообщения:
    47
    Симпатии:
    0
    Баллы:
    1
    Все получилось, когда убрала вложенный запрос.
  12. gosn1ck
    Offline

    gosn1ck Опытный в 1С

    Регистрация:
    13 авг 2009
    Сообщения:
    1.329
    Симпатии:
    1
    Баллы:
    26
    Код:
    ВЫБРАТЬ
    *
    ИЗ
    РегистрСведений.ЦеныСрезПоследних(&Дата, Склад = &Склад) КАК ЦеныНоменклатурыСрезПоследних
    
    
    не забудьте определиться со всеми измерениями, а то получите несколько записей

Поделиться этой страницей