Форум программистов, компьютерный форум, киберфорум
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
Супер-модератор
Эксперт 1СЭксперт по компьютерным сетямЭксперт HardwareЭксперт Windows
 Аватар для Maks
9710 / 5541 / 647
Регистрация: 13.03.2013
Сообщений: 19,173
Записей в блоге: 63
1C 8.x

Создание отчета в СКД

11.11.2024, 20:13. Показов 3161. Ответов 56
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую, коллеги.
Требуется создать отчет в СКД, где будет выводится номенклатура без цены, которая не проводилась в системе по регистру.

Написал такой запрос
1C
1
2
3
4
5
6
7
8
9
10
11
12
ВЫБРАТЬ
    тНoменклатура.Ссылка KAK Ссылка,
    СУММА(тНoменклатура.ЦенаПoкупки) KAK ЦенаПoкупки,
    ЦеныПoставщикoвСрезПoследних.Нoменклатура KAK Нoменклатура,
    СУММА(ЦеныПoставщикoвСрезПoследних.Цена) KAK Цена
ИЗ
    РегистрСвeдeний.ЦеныПоставщиков.СрeзПослeдних KAK ЦeныПoстaвщикoвСрeзПослeдних
        ЛЕВOЕ СOЕДИНЕНИЕ Справoчник.Нoменклатура KAK тНoменклатура
        ПO ЦеныПoставщиковСрезПoследних.Нoменклaтурa = тНoменклaтурa.Ссылкa
ГДЕ
    ЦеныПoставщиковСрезПоследних.Номенклатура = НЕОПРЕДЕЛЕНО
    И тНoменклатура.ЦенаПoкупки = 0

По итогу выходит пустая таблица отчета (в режиме предприятия).
Подскажите, где я ошибся?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.11.2024, 20:13
Ответы с готовыми решениями:

Создание отчета в СКД. Установить правильную связь
Всем привет! Подскажите как настроить правильную связь, чтобы показывало все 3 документа : "СписаниеБезналичныхДС",...

Настройка отчёта в СКД
Подскажите пожалуйста как в СКД,для пустых строк сделать вывод "0" И можно ли скрыть "НомерСтроки"?В заголовке

Расшифровка отчета на СКД
Есть отчет на скд. Внешний вид отчета: Оборудование| Нач остаток| Приход | Расход| Кон остаток Как при щелчке на любой ячейке...

56
Супер-модератор
Эксперт 1СЭксперт по компьютерным сетямЭксперт HardwareЭксперт Windows
 Аватар для Maks
9710 / 5541 / 647
Регистрация: 13.03.2013
Сообщений: 19,173
Записей в блоге: 63
12.11.2024, 20:45  [ТС]
Студворк — интернет-сервис помощи студентам
polax, да, дейсвительно, но не удосужился попробовать его в чистом виде, ибо сбило с толку
ЕСТЬNULL(тНоменклатура.ЦенаПокупки,0) КАК ЦенаПокупки
Я без упрека, надо было попробовать оригинал вначале.

Отметил в теме гарантированно рабочие и проверенные решения.
0
Эксперт 1С
7175 / 1777 / 648
Регистрация: 16.01.2015
Сообщений: 7,346
12.11.2024, 21:25
Цитата Сообщение от Maks Посмотреть сообщение
ибо сбило с толку
ЕСТЬNULL(тНоменклатура.ЦенаПокупки,0) КАК ЦенаПокупки
Эта строка РОВНЫМ счетом ничего бы не изменила в итоговом запросе. Читаем проще
Если значение в поле тНоменклатура.ЦенаПокупки не существует (ЕСТЬNULL), тогда считать значение как равное 0.
иначе (т.е. есть конкретное значение), тогда значение установленное в поле тНоменклатура.ЦенаПокупки
Проще - даже установив этот текст в тексте запроса, запрос выдал бы то что надо
И.... Тоже без упрека, а в смысле внимательности к правильности ответов, чтобы помощьбыла действенной и не вводить помогающих в заблуждение: Ответ на сообщение #6 в вашем сообщении #9
Цитата Сообщение от Maks Посмотреть сообщение
Аватар, Не работает
Хорошо, что в конечном итоге разобрались все. И набрались нужного опыта
0
Модератор
Эксперт 1С
 Аватар для Yulunga
4764 / 960 / 269
Регистрация: 22.04.2013
Сообщений: 6,640
Записей в блоге: 1
12.11.2024, 21:36
я всё равно не понял почему (
0
Супер-модератор
Эксперт 1СЭксперт по компьютерным сетямЭксперт HardwareЭксперт Windows
 Аватар для Maks
9710 / 5541 / 647
Регистрация: 13.03.2013
Сообщений: 19,173
Записей в блоге: 63
12.11.2024, 21:59  [ТС]
polax, на момент проверки действительно не работало, х.з., возможно глюк базы, или я чего понатыкал по неопытности. Сегодня откатил конфигурацию до создания отчета (перед началом сделал бэкап), сперва реализовал свое решение (запрос в запросе), далее проверил Ваши. Цели вводить в заблуждение у меня нет хотя бы по той причине, что я создал данный топик для получения помощи в решении вопроса по сабжу, за от меня Вам огромная благодарность.
0
Эксперт 1С
7175 / 1777 / 648
Регистрация: 16.01.2015
Сообщений: 7,346
12.11.2024, 22:05
1
 Аватар для Аватар
5393 / 1465 / 513
Регистрация: 31.05.2012
Сообщений: 5,153
12.11.2024, 22:06
Я с СКД чесно ни а зуб ногой, но возможно там чего то в настройках отчёта влияло на результат запроса. Это знатокам СКД для размышления. Что глюк в базе очень маловероятно
1
12.11.2024, 22:37

Не по теме:

Yulunga, для учебной задачи и вложенный запрос подойдет

0
13.11.2024, 05:31

Не по теме:

Dethmontt, нунет. руку надо набивать правильно

0
Супер-модератор
Эксперт 1СЭксперт по компьютерным сетямЭксперт HardwareЭксперт Windows
 Аватар для Maks
9710 / 5541 / 647
Регистрация: 13.03.2013
Сообщений: 19,173
Записей в блоге: 63
13.11.2024, 09:12  [ТС]

Не по теме:

Цитата Сообщение от Yulunga Посмотреть сообщение
руку надо набивать правильно
Ну так для этого я и стал разбираться дальше и искать иные варианты решения поставленной задачи.



Добавлено через 1 час 47 минут
Yulunga, кстати, хотелось бы реализовать и третий вариант, с использованием временных таблиц.

Добавлено через 49 минут
Yulunga, приведенный Вами в #8 код сваливается в ошибку:
Ошибка получения информации набора данных
по причине:
Ошибка в запросе набора данных
по причине:
{(17, 1)}: Поле не найдено "ЦеныПоставщиковСрезПоследних.Номенклату ра"
<<?>>ЦеныПоставщиковСрезПоследних.Номенк латура КАК РСНоменклатура
0
Модератор
Эксперт 1С
 Аватар для Yulunga
4764 / 960 / 269
Регистрация: 22.04.2013
Сообщений: 6,640
Записей в блоге: 1
13.11.2024, 10:06
Лучший ответ Сообщение было отмечено Maks как решение

Решение

Цитата Сообщение от Yulunga Посмотреть сообщение
ЦеныПoставщиковСрезПoследних.Нoменклaтур a как РСНоменклатура
поместить ВТ_НоменклатураРС
из
РегистрСвeдeний.ЦеныПоставщиков.СрeзПосл eдних KAK РСНоменклатура

1C
1
2
3
4
ЦеныПoставщиковСрезПoследних.Нoменклaтурa как РСНоменклатура
поместить ВТ_НоменклатураРС
из
РегистрСвeдeний.ЦеныПоставщиков.СрeзПослeдних KAK ЦеныПoставщиковСрезПoследних
так?
1
Супер-модератор
Эксперт 1СЭксперт по компьютерным сетямЭксперт HardwareЭксперт Windows
 Аватар для Maks
9710 / 5541 / 647
Регистрация: 13.03.2013
Сообщений: 19,173
Записей в блоге: 63
13.11.2024, 15:13  [ТС]
Цитата Сообщение от Yulunga Посмотреть сообщение
так?
Благодарю, теперь все работает.

Итоговый код
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
ВЫБРАТЬ
ЦеныПоставщиковСрезПоследних.Номенклатура КАК РСНоменклатура
ПОМЕСТИТЬ ВТ_НоменклатураРС
ИЗ
РегистрСведений.ЦеныПоставщиков.СрезПоследних КАК ЦеныПоставщиковСрезПоследних
;
////////
ВЫБРАТЬ
    Номенклатура.Ссылка КАК Ссылка,
    Номенклатура.ЦенаПокупки КАК ЦенаПокупки
ИЗ
    Справочник.Номенклатура КАК Номенклатура
ГДЕ
    Номенклатура.ЦенаПокупки = 0
И Номенклатура.Ссылка НЕ В (ВЫБРАТЬ РСНоменклатура ИЗ ВТ_НоменклатураРС)

Однако и здесь также используется вложенные запрос.
Но, как бы то ни было, в теме разобрано 3 варианта решения вопроса по сабжу!
Всем еже раз спасибо за качественную помощь, поддержку и понимание!

Добавлено через 3 часа 52 минуты
Yulunga, единственный уточняющий вопрос (в качестве закрепления материала), если я правильно понимаю, то временную таблице, которая создается в результате выполнения последнего кода, никуда не девается и ее необходимо удалять - ну хотя бы для того, чтобы в дальнейшем использовать актуальные данные для формирования отчета (поправьте, если я ошибаюсь).
Отсюда вопрос: уместно ли будет добавить в конец текущего кода такую строчку:
1C
1
УНИЧТОЖИТЬ ВТ_НоменклатураРС
?
0
Эксперт 1С
7175 / 1777 / 648
Регистрация: 16.01.2015
Сообщений: 7,346
13.11.2024, 15:39
Цитата Сообщение от Maks Посмотреть сообщение
единственный уточняющий вопрос
Не единственный. Представленный конечный код, практически по максимуму, неоптимален
Временную таблицу имеет смысл применять когда количество получаемых значений хотя бы от 1000, но и очень большие объемы ВТ вредят быстродействию.
Даже если используешь ВТ, запихивать ее во вложенный запрос нет смысла (а зачем тогда делали ВТ, проще сразу срезпоследних поместить во вложенный запрос). В данном случае более оптимально сделать левое соединение справочника и ВТ

Ну и уничтожать ВТ в данном случае необязательно, это произойдет автоматом
Вот наиболее простые инструкции (нюансы):
https://курсы-по-1с.рф/article... 3-вопроса/
https://its.1c.ru/db/v8std/content/777/hdoc
1
Модератор
Эксперт 1С
 Аватар для Yulunga
4764 / 960 / 269
Регистрация: 22.04.2013
Сообщений: 6,640
Записей в блоге: 1
13.11.2024, 16:42
polax, думаю что уж не не так не оптимален
но да, самО это дело, когда пишем что это в этом - мне не нравится
но тут нам надо отсечь некую номенклатуру
и соединять с регистром сведений нам не надо
нам надо явно указать, что мы не хотим видеть в нашем результате
а не хотим мы видеть вон то
а соединение означает что мы как раз соединяемся по номенклатуре вон той, которая в регистре сведений. а она нам и не нужна
1
Эксперт 1С
7175 / 1777 / 648
Регистрация: 16.01.2015
Сообщений: 7,346
13.11.2024, 16:51
Цитата Сообщение от Yulunga Посмотреть сообщение
а соединение означает что мы как раз соединяемся по номенклатуре вон той, которая в регистре сведений. а она нам и не нужна
Для этого как раз отбор по номенклатуре регистра ЕСТЬ NULL в результате левого соединения Справочника и Регистра
1
 Аватар для Аватар
5393 / 1465 / 513
Регистрация: 31.05.2012
Сообщений: 5,153
13.11.2024, 17:45
РегистрСведений.ЦеныПоставщиков.СрезПосл едних скореен всего и так временная таблица и, если разработчики нормально сделали, то и с индексом по измерению номенклатура. это конечно проверить нужно. а мы с него другую временную, да еще без индекса. смысл? ах да, 1с же, значит нужно что бы дольше работало ))
0
Модератор
Эксперт 1С
 Аватар для Yulunga
4764 / 960 / 269
Регистрация: 22.04.2013
Сообщений: 6,640
Записей в блоге: 1
14.11.2024, 06:34
по теме
https://its.1c.ru/db/metod8dev#content:4208:hdoc
Оптимизация использования виртуальной таблицы СрезПоследних при работе с PostgreSQL
Проблема
При работе с PostgreSQL использование соединения с виртуальной таблицей СрезПоследних может приводить к существенному снижению производительности. Из-за ошибки оптимизатора может быть выбран неоптимальный план выполнения запроса.

Решение
Если в запросе используется соединение с виртуальной таблицей языка запросов "1С:Предприятия" СрезПоследних и запрос работает с неудовлетворительной производительностью, то рекомендуется вынести обращение к виртуальной таблице в отдельный запрос с сохранением результатов во временной таблице.
1
 Аватар для Аватар
5393 / 1465 / 513
Регистрация: 31.05.2012
Сообщений: 5,153
14.11.2024, 12:08
поскольку сомнительно что 1с использует новомодные фишки типа оконных функций, то срез последних должен примерно таким запросом формироваться
SQL
1
2
3
4
5
SELECT р1.номенклатура,р1.дата,...
  FROM регистр р1
    JOIN (SELECT номенклатура,MAX(дата) дата
              FROM регистр
              GROUP BY номенклатура) р2 ON р2.номенклатура=р1.номенклатура AND р2.дата=р1.дата
а дальше нужно посмотреть как это встраивается - то ли подзапросом, то ли представление создается (очень сомнительно), то ли временная таблица формируется. если последнее, то грош цена тем рекомендациям по оптимизации, если первое - есть вероятность того что создание временной таблицы улучшит производительность, но не факт, а для ms sql далеко не факт

Добавлено через 6 минут
зы - кстати, довод, что использование временных таблиц улучшает читабельность запросов совсем не довод, если при этом производительность ухудшается )
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.11.2024, 12:08

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

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

Вывод отчета СКД слева направо
Добрый день. Отчет на СКД. В поле Макеты нарисован макет. Если задать период - квартал, отчет выводится таблицами сверху вниз. Допустим ...

Вывод Отчета сформированного в СКД ландшафтом
Как можно сделать, что бы сформированный отчет выводился автоматически ландшафтном?

Два отдельных отчета СКД в один
ДД. Понимаю что куча инструкций в сети, но не могу найти понятную. В общем есть 2 отчета по скд, хочу объединить их в 1, но в разных...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
57
Ответ Создать тему
Новые блоги и статьи
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru