Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Разные результаты в консоли запросов и в консоли СКД          
Fil15 Подменю пользователя
сообщение 04.05.17, 16:09
Сообщение #1

Общительный
**
Группа: Пользователи
Сообщений: 20
Спасибо сказали: 2 раз
Рейтинг: 0

Добрый день!
Дано:
Платформа: 1С:Предприятие 8.3 (8.3.7.2008)
Конфигурация: "Управление торговым предприятием для Украины", редакция 1.2.38.1
В СКД формирую вот такой запрос:
ВЫБРАТЬ ПЕРВЫЕ 1
    ТоварыВРознице.Номенклатура,
    ТоварыВРознице.Регистратор КАК Регистратор,
    ТоварыВРознице.Регистратор.Дата КАК РегистраторДата
ПОМЕСТИТЬ табл1
ИЗ
    РегистрНакопления.ТоварыВРознице КАК ТоварыВРознице
ГДЕ
    ТоварыВРознице.Номенклатура = &Номенклатура

УПОРЯДОЧИТЬ ПО
    Регистратор УБЫВ
;

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    табл2.Номенклатура,
    табл2.КоличествоКонечныйОстаток,
    табл1.Регистратор
ИЗ
    табл2 КАК табл2
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ табл1 КАК табл1
        ПО (табл1.Номенклатура = табл2.Номенклатура)

он мне в табл1 в результате выдает последние, но только с ВидДвижения = Приход, но условий никаких не стоит, а вот в консоле запросов отрабатывает как нужно - выдает последний документ. Подскажите как сделать, что бы в СКД он выдавал последний документ независимо от Вида движения?

Сообщение отредактировал Vofka - 04.05.17, 17:35

Fil15 Подменю пользователя
сообщение 04.05.17, 21:28
Сообщение #2

Общительный
**
Группа: Пользователи
Сообщений: 20
Спасибо сказали: 2 раз
Рейтинг: 0

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

Разве никто не знает? Неужели нельзя сразу указать сразу и Приход и Расход?

Bernet Подменю пользователя
сообщение 05.05.17, 8:53
Сообщение #3

Ветеран
Иконка группы
Группа: Местный
Сообщений: 858
Из: Місто щасливих людей
Спасибо сказали: 319 раз
Рейтинг: 0

Fil15 @ Вчера, 22:28 * ,
Попробуйте так:
ВЫБРАТЬ ПЕРВЫЕ 1
    ТоварыВРознице.Номенклатура,
    ТоварыВРознице.Регистратор КАК Регистратор,
    ТоварыВРознице.Регистратор.Дата КАК РегистраторДата
ПОМЕСТИТЬ табл1
ИЗ
    РегистрНакопления.ТоварыВРознице КАК ТоварыВРознице
ГДЕ
    ТоварыВРознице.Номенклатура = &Номенклатура

УПОРЯДОЧИТЬ ПО
    ТоварыВРознице.Регистратор.МоментВремени УБЫВ


Signature
Дописываю конфигурации на платформе 8.х.
- Управление торговым предприятием для Украины
- Управление производственным предприятием для Украины
- Управление небольшой фирмой для Украины
- Бухгалтерия для Украины;
- Общепит для Украины
- Ресторан (Рарус)
- Розница

Fil15 Подменю пользователя
сообщение 05.05.17, 9:16
Сообщение #4

Общительный
**
Группа: Пользователи
Сообщений: 20
Спасибо сказали: 2 раз
Рейтинг: 0

Bernet @ Сегодня, 9:53 * ,
Спасибо огромное и вот еще как победил буквально одновременно с Вами.
ВЫБРАТЬ ПЕРВЫЕ 1
    ТоварыВРознице.Номенклатура,
    ТоварыВРознице.Регистратор КАК Регистратор,
    ТоварыВРознице.Регистратор.Дата КАК РегистраторДата,
    МАКСИМУМ(ТоварыВРознице.Период) КАК Период
ПОМЕСТИТЬ табл1
ИЗ
    РегистрНакопления.ТоварыВРознице КАК ТоварыВРознице
ГДЕ
    ТоварыВРознице.Номенклатура = &Номенклатура

СГРУППИРОВАТЬ ПО
    ТоварыВРознице.Регистратор,
    ТоварыВРознице.Номенклатура,
    ТоварыВРознице.Регистратор.Дата

Собственно я так понимаю это одно и тоже.

Bernet Подменю пользователя
сообщение 05.05.17, 9:55
Сообщение #5

Ветеран
Иконка группы
Группа: Местный
Сообщений: 858
Из: Місто щасливих людей
Спасибо сказали: 319 раз
Рейтинг: 0

Fil15 @ Сегодня, 10:16 * ,
Не совсем. Группировка по регистратору вам в данном случае ничего не даст, т.к. каждая строка в регистре по сути отличается регистратором, записи останутся не сгруппированными. Вы добавили тут поле Период в выборку и взяли максимум - запрос вернет вам последнюю дату в разрезе каждого из измерений, которые указаны в "СГРУППИРОВАТЬ ПО". Задача стоит в том чтобы найти последний документ или дату последнего события?
Группировка просто сворачивает данные в разрезе указанных измерений, т.е. например, у вас есть записи в таблице:

|-----Регистратор--|--РегистраторДата---|-Период----|
|-------------------|----------------------|-------------|
|-----Документ1---|--01.01.2017---------|-01.01.2017-|
|-----Документ2---|--03.01.2017---------|-03.01.2017-|
|-----Документ2---|--05.01.2017---------|-05.01.2017-|
|--------------------------------------------------------|

В этом случае ваша группировка вернет вам все эти три строки без изменения, т.к. не получится сгруппировать записи по Регистратор и РегистраторДата - они разные
Вот если бы у вас была такая таблица:

|-----Регистратор--|--РегистраторДата---|-Период----|
|-------------------|----------------------|-------------|
|-----Документ1---|--01.01.2017---------|-01.01.2017-|
|-----Документ1---|--01.01.2017---------|-03.01.2017-|
|-----Документ1---|--01.01.2017---------|-05.01.2017-|
|--------------------------------------------------------|

Тогда да, оно бы вернуло вам последнюю дату, т.к. свернуть данные получилось бы:

|-----Регистратор--|--РегистраторДата---|-Период----|
|-------------------|----------------------|-------------|
|-----Документ1---|--01.01.2017---------|-05.01.2017-|

Надеюсь теперь стало понятнее

Fil15 @ Сегодня, 10:16 * ,
Цитата
Собственно я так понимаю это одно и тоже.

Сортировка по моменту времени выполняет сортировку по Дате и Ссылке документа - т.е. учитывается грубо говоря дата документа и дата создания документа (кто первее появился в базе). Имеет смысл когда у вас есть два документа проведенные одной секундой, в этом случае если просто отсортировать по дате - можем не получить последний документ. Если же отсортировать по моменту времени - то 100% получим последний документ.


Signature
Дописываю конфигурации на платформе 8.х.
- Управление торговым предприятием для Украины
- Управление производственным предприятием для Украины
- Управление небольшой фирмой для Украины
- Бухгалтерия для Украины;
- Общепит для Украины
- Ресторан (Рарус)
- Розница

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 25.04.24, 18:28
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!