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

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

11.11.2024, 20:13. Показов 3157. Ответов 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
 Аватар для Аватар
5393 / 1465 / 513
Регистрация: 31.05.2012
Сообщений: 5,153
12.11.2024, 13:55
Студворк — интернет-сервис помощи студентам
чего б ему не собираться, учитывая то что эта виртуальная таблица тоже подзапрос или временная табличка им сформированная. и поскольку навряд ли 1с там оконные функции использует, то он сам из себя многоэтажный с группировкой

а при использование временных таблиц нужно не забывать об их индексации, но не огульно, а с умом. без правильной индексации навряд ли временные таблицы будут оптимальней подзапросов
0
Модератор
Эксперт 1С
 Аватар для Yulunga
4488 / 957 / 267
Регистрация: 22.04.2013
Сообщений: 6,634
Записей в блоге: 1
12.11.2024, 13:59
Maks, чо? ))
не, если нет ссылки - значит что-то не так в консерватории. неверно запрос написал

по мне так мало того, что 1С советует юзать ВТ, так с ними ещё и проще жить
видишь, что вот тут хранятся вот такие данные оттуда
вот тут - сякие отсюда
а потом или что-то с ними соединяешь, или берёшь из них, которые названы ВТ_ПриемыУвольненияНаДату
и понятно, о чём речь
чем когда вот так внутри чего-то что-то находится. фу бе.
0
Супер-модератор
Эксперт 1СЭксперт по компьютерным сетямЭксперт HardwareЭксперт Windows
 Аватар для Maks
9710 / 5541 / 647
Регистрация: 13.03.2013
Сообщений: 19,165
Записей в блоге: 63
12.11.2024, 14:14  [ТС]
Yulunga, в таком случае есть идеи как преобразовать вложенный запрос в ВТ?
0
 Аватар для Аватар
5393 / 1465 / 513
Регистрация: 31.05.2012
Сообщений: 5,153
12.11.2024, 14:29
вот это
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
ВЫБРАТЬ
    Номенклатура.Ссылка КАК Ссылка,
    Номенклатура.Цена КАК Цена
ИЗ
    Справочник.Номенклатура КАК Номенклатура
ГДЕ
    Номенклатура.Цена = 0
    И НЕ Номенклатура.Ссылка В
    (ВЫБРАТЬ 
        РегистрСведений.ЦеныПоставщиков.СрезПоследних.Номенклатура
    ИЗ
        РегистрСведений.ЦеныПоставщиков.СрезПоследних)   
УПОРЯДОЧИТЬ ПО
    Номенклатура.Наименование;
без всяких подзапросов и временных таблиц преобразуется в

1C
1
2
3
4
5
6
7
8
9
10
11
12
ВЫБРАТЬ
    Номенклатура.Ссылка КАК Ссылка,
    Номенклатура.Цена КАК Цена
ИЗ
    Справочник.Номенклатура КАК Номенклатура
        ЛЕВOЕ СOЕДИНЕНИЕ РегистрСвeдeний.ЦеныПоставщиков.СрeзПослeдних KAK ЦeныПoстaвщикoвСрeзПослeдних
        ПO ЦеныПoставщиковСрезПoследних.Нoменклaтурa = Нoменклaтурa.Ссылкa
ГДЕ
    Номенклатура.Цена = 0
    и НЕ ЦеныПoставщиковСрезПoследних.Нoменклaтурa есть null
УПОРЯДОЧИТЬ ПО
    Номенклатура.Наименование
Добавлено через 1 минуту
тот срез последних можно конечно вытащить во временную таблицу, только желательно в ней по номенклатуре индекс сделать
0
Супер-модератор
Эксперт 1СЭксперт по компьютерным сетямЭксперт HardwareЭксперт Windows
 Аватар для Maks
9710 / 5541 / 647
Регистрация: 13.03.2013
Сообщений: 19,165
Записей в блоге: 63
12.11.2024, 15:28  [ТС]
Возвращаюсь к первой части задачи:
Цитата Сообщение от Maks Посмотреть сообщение
создаю для начала простой отчет, выводящий список номенклатуры, для которой в одноименном справочнике не установлены цены
С использованием ВТ написал такой код (свою задачу он отрабатывает):
1C
1
2
3
4
5
6
7
8
9
10
11
12
ВЫБРАТЬ
    Ссылка,
    Цена
ПОМЕСТИТЬ втНоменклатура
ИЗ
    Справочник.Номенклатура;
//////////////////////////////////
ВЫБРАТЬ * ИЗ втНоменклатура
ГДЕ
    Цена = 0  
УПОРЯДОЧИТЬ ПО
    Ссылка;
Теперь осталось сюда запихать условие, что отобранная номенклатура не фигурирует в регистре сведений ЦеныПоставщиков.

Добавлено через 11 минут
Цитата Сообщение от Аватар Посмотреть сообщение
ВЫБРАТЬ
    Номенклатура.Ссылка КАК Ссылка,
    Номенклатура.Цена КАК Цена
ИЗ
    Справочник.Номенклатура КАК Номенклатура
        ЛЕВOЕ СOЕДИНЕНИЕ РегистрСвeдeний.ЦеныПоставщиков.СрeзПосл eдних KAK ЦeныПoстaвщикoвСрeзПослeдних
        ПO ЦеныПoставщиковСрезПoследних.Нoменклaтур a = Нoменклaтурa.Ссылкa
ГДЕ
    Номенклатура.Цена = 0
    и НЕ ЦеныПoставщиковСрезПoследних.Нoменклaтур a есть null
УПОРЯДОЧИТЬ ПО
    Номенклатура.Наименование
Выходит следующее:
Поле не найдено "ЦеныПоставщиковСрезПоследних.Номенклату ра"
Добавлено через 40 минут
Аватар, разобрался, однако в предложенном Вами методе в отчет выводится номенклатура с нулевой ценой, но прошедшая по регистру ЦеныПоставщиков (в методических целях создал для них документы), номенклатура с нулевой ценой и не прошедшей по регистру в отчете нет. Если убрать "НЕ" или "ЕСТЬ NULL" (в разных вариациях) - отчет выводится пустым.
0
 Аватар для Аватар
5393 / 1465 / 513
Регистрация: 31.05.2012
Сообщений: 5,153
12.11.2024, 15:36
а-а, я ж не отлаживал, там где то в ЦeныПoстaвщикoвСрeзПослeдних то ли латинская буква, то ли еще что-то затесалось, вот сделал одинаково )
1C
1
2
3
4
5
6
7
8
9
10
11
12
ВЫБРАТЬ
    Номенклатура.Ссылка КАК Ссылка,
    Номенклатура.Цена КАК Цена
ИЗ
    Справочник.Номенклатура КАК Номенклатура
        ЛЕВOЕ СOЕДИНЕНИЕ РегистрСвeдeний.ЦеныПоставщиков.СрeзПослeдних KAK ЦeныПoстaвщикoвСрeзПослeдних
        ПO ЦeныПoстaвщикoвСрeзПослeдних.Нoменклaтурa = Нoменклaтурa.Ссылкa
ГДЕ
    Номенклатура.Цена = 0
    и НЕ ЦeныПoстaвщикoвСрeзПослeдних.Нoменклaтурa есть null
УПОРЯДОЧИТЬ ПО
    Номенклатура.Наименование
Добавлено через 2 минуты
Цитата Сообщение от Maks Посмотреть сообщение
С использованием ВТ написал такой код
ой, такой лучше не надо. можно конечно, но это изврат полный ) срез последних во временную
0
Супер-модератор
Эксперт 1СЭксперт по компьютерным сетямЭксперт HardwareЭксперт Windows
 Аватар для Maks
9710 / 5541 / 647
Регистрация: 13.03.2013
Сообщений: 19,165
Записей в блоге: 63
12.11.2024, 15:47  [ТС]
Аватар, с синтаксическими ошибками я справился, пересобрав запрос в конструкторе, однако Ваше решение не отображает номенклатуру с нулевой ценой и не вошедшую в регистр сведений ЦеныПоставщиков.
Не подскажете, как изменить условие?
0
 Аватар для Аватар
5393 / 1465 / 513
Регистрация: 31.05.2012
Сообщений: 5,153
12.11.2024, 16:09
Цитата Сообщение от Maks Посмотреть сообщение
Не подскажете, как изменить условие?
я не знаю. то ли у меня глюк в голове, то ли 1с так умничает. это должно работать, почему не работает хз
0
Супер-модератор
Эксперт 1СЭксперт по компьютерным сетямЭксперт HardwareЭксперт Windows
 Аватар для Maks
9710 / 5541 / 647
Регистрация: 13.03.2013
Сообщений: 19,165
Записей в блоге: 63
12.11.2024, 16:59  [ТС]
Аватар, опытным путем выяснил, следующие выражения приводят к одному результату:
1C
1
НЕ ЦeныПoстaвщикoвСрeзПослeдних.Нoменклaтурa есть null
1C
1
НЕ ЦеныПоставщиковСрезПоследних.Номенклатура=ЛОЖЬ
1C
1
ЦеныПоставщиковСрезПоследних.Номенклатура=ИСТИНА
Отсюда я делаю вывод, что условие работает как раз для тех позиций номенклатуры, которые входят в регистр.
А нужно наоборот.
0
 Аватар для Аватар
5393 / 1465 / 513
Регистрация: 31.05.2012
Сообщений: 5,153
12.11.2024, 17:07
правидьно, если не убрать, то для тех что не входят
сравнение с булевыми в общем-то и не корректно, хотя в каких то пределах и работает, субд само там разберется (или нет) с приведением типов, но нужно тщательно проанализировать насколько это будет правильно, а не охота, поэтому так не надо))
0
Супер-модератор
Эксперт 1СЭксперт по компьютерным сетямЭксперт HardwareЭксперт Windows
 Аватар для Maks
9710 / 5541 / 647
Регистрация: 13.03.2013
Сообщений: 19,165
Записей в блоге: 63
12.11.2024, 17:16  [ТС]
Цитата Сообщение от Аватар Посмотреть сообщение
правидьно, если не убрать, то для тех что не входят
Убирал (если Вы про частицу НЕ) - отчет выходит пустым.
0
Эксперт 1С
7175 / 1777 / 647
Регистрация: 16.01.2015
Сообщений: 7,346
12.11.2024, 18:39
Maks, Запрос в #26 абсолютно правильный и должен работать, Аватар прав. Какая-то непонятка в вашей базе.
Попробуй убрать в консоли из условий "и ЦeныПoстaвщикoвСрeзПослeдних.Нoменклaтур a есть null" и посмотри, какое значение в поле ЦeныПoстaвщикoвСрeзПослeдних.Нoменклaтур a, когда нет номенклатуры. Выведи в запросе это поле. Покажи скрин результата.
Любопытно, почему правильный и довольно простой запрос без закавык и вдруг работает не так как должен
0
Супер-модератор
Эксперт 1СЭксперт по компьютерным сетямЭксперт HardwareЭксперт Windows
 Аватар для Maks
9710 / 5541 / 647
Регистрация: 13.03.2013
Сообщений: 19,165
Записей в блоге: 63
12.11.2024, 19:23  [ТС]
Цитата Сообщение от polax Посмотреть сообщение
Попробуй убрать в консоли из условий "и ЦeныПoстaвщикoвСрeзПослeдних.Нoменклaтур a есть null"
Убрал, в отчете отображается номенклатура с пустой ценой и занесенная в регистр.
Цитата Сообщение от polax Посмотреть сообщение
какое значение в поле ЦeныПoстaвщикoвСрeзПослeдних.Нoменклaтур a, когда нет номенклатуры. Выведи в запросе это поле. Покажи скрин результата.
Не совсем понял, как это сделать? В СКД нет возможности установить точку останова.
0
 Аватар для Аватар
5393 / 1465 / 513
Регистрация: 31.05.2012
Сообщений: 5,153
12.11.2024, 19:28
запрос то и в консоли запросов можно запускать и там уж крутить его хоть вдоль, хрть поперек )
0
Эксперт 1С
7175 / 1777 / 647
Регистрация: 16.01.2015
Сообщений: 7,346
12.11.2024, 19:32
Запрос
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
ВЫБРАТЬ
    Номенклатура.Ссылка КАК Ссылка,
    Номенклатура.Цена КАК Цена,
    ЦeныПoстaвщикoвСрeзПослeдних.Нoменклaтурa КАК НоменклатураРегистра
ИЗ
    Справочник.Номенклатура КАК Номенклатура
        ЛЕВOЕ СOЕДИНЕНИЕ РегистрСвeдeний.ЦеныПоставщиков.СрeзПослeдних KAK ЦeныПoстaвщикoвСрeзПослeдних
        ПO ЦeныПoстaвщикoвСрeзПослeдних.Нoменклaтурa = Нoменклaтурa.Ссылкa
ГДЕ
    Номенклатура.Цена = 0
    
УПОРЯДОЧИТЬ ПО
    Номенклатура.Наименование
И не в СКД, а в консоле запросов. И посмотреть ЧТО в поле НоменклатураРегистра, когда номенклатура отсутствует. Должно быть NULL. Но по какой-то невероятной и непредставляемой пока причине, там, возможно, не NULL, а что-то другое (правда, не представляю КАК), иначе запрос из #26 точно работал бы
0
Супер-модератор
Эксперт 1СЭксперт по компьютерным сетямЭксперт HardwareЭксперт Windows
 Аватар для Maks
9710 / 5541 / 647
Регистрация: 13.03.2013
Сообщений: 19,165
Записей в блоге: 63
12.11.2024, 19:42  [ТС]
Ошибка получения информации набора данных
по причине:
Ошибка в запросе набора данных
по причине:
{(9, 2)}: Неоднозначное поле "Номенклатура.ЦенаПокупки"
<<?>>Номенклатура.ЦенаПокупки = 0
...

Добавлено через 5 минут
Цитата Сообщение от polax Посмотреть сообщение
не в СКД, а в консоле запросов
Как ее (консоль запросов) запустить?
0
Эксперт 1С
7175 / 1777 / 647
Регистрация: 16.01.2015
Сообщений: 7,346
12.11.2024, 19:43
Цитата Сообщение от Maks Посмотреть сообщение
Номенклатура.ЦенаПокупки
Откуда поле взялось? Не вижу его в запросе?

Добавлено через 1 минуту
Консоль запросов - это отдельная обработка. Набери в поисковике. Полно бесплатных. Единственное, обращай внимание для ОФ или УФ
0
 Аватар для Аватар
5393 / 1465 / 513
Регистрация: 31.05.2012
Сообщений: 5,153
12.11.2024, 19:58
Цитата Сообщение от Maks Посмотреть сообщение
Неоднозначное поле "Номенклатура.ЦенаПокупки"
там скорее всего нельзя псевдоним Номенклатура, может конфликтовать с полем Номенклатура. лучше псевдоним сделать так например тНоменклатура. ага и насчет цены - то Цена, то ЦенаПокупки
1
Супер-модератор
Эксперт 1СЭксперт по компьютерным сетямЭксперт HardwareЭксперт Windows
 Аватар для Maks
9710 / 5541 / 647
Регистрация: 13.03.2013
Сообщений: 19,165
Записей в блоге: 63
12.11.2024, 20:19  [ТС]
Цитата Сообщение от Аватар Посмотреть сообщение
там скорее всего нельзя псевдоним Номенклатура, может конфликтовать с полем Номенклатура.
Да, верно.
По итогу сработал следующий код запроса:
1C
1
2
3
4
5
6
7
8
9
10
11
12
ВЫБРАТЬ
    Номенклатура2.Ссылка КАК Ссылка,
    Номенклатура2.ЦенаПокупки КАК ЦенаПокупки 
ИЗ
    Справочник.Номенклатура КАК Номенклатура2
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныПоставщиков.СрезПоследних КАК ЦеныПоставщиковСрезПоследних
        ПО ЦеныПоставщиковСрезПоследних.Номенклатура = Номенклатура2.Ссылка
ГДЕ
    Номенклатура2.ЦенаПокупки = 0
    И ЦеныПоставщиковСрезПоследних.Номенклатура ЕСТЬ NULL
УПОРЯДОЧИТЬ ПО
    Номенклатура2.Ссылка
Причем, обращаю Ваше внимание, что отбор требуемой номенклатуры как раз установился без частицы "НЕ" в 10-й строчке кода.
0
Эксперт 1С
7175 / 1777 / 647
Регистрация: 16.01.2015
Сообщений: 7,346
12.11.2024, 20:28
Цитата Сообщение от Maks Посмотреть сообщение
обращаю Ваше внимание, что отбор требуемой номенклатуры как раз установился без частицы "НЕ"
Обращаю внимание. Что первоначальный запрос из #6, а именно
1C
1
2
3
4
5
6
7
8
9
10
ВЫБРАТЬ
    тНоменклатура.Ссылка КАК Ссылка,
    тНоменклатура.ЦенаПокупки КАК ЦенаПокупки
ИЗ
    Справочник.Номенклатура КАК тНоменклатура
        ЛЕВOЕ СOЕДИНЕНИЕ РегистрСвeдeний.ЦеныПоставщиков.СрeзПослeдних KAK ЦeныПoстaвщикoвСрeзПослeдних
        ПO ЦеныПoставщиковСрезПoследних.Нoменклaтурa = тНoменклaтурa.Ссылкa
ГДЕ
    тНоменклатура.ЦенаПокупки = 0
    и ЦеныПoставщиковСрезПoследних.Нoменклaтурa есть null
НИЧЕМ не отличается от победного запроса. Но почему-то не работал. Еще полторы страницы назад мог был быть достигнут результат
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.11.2024, 20:28

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Часы электронные
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