Имя: Пароль:
1C
1С v8
Таблица значений как параметр в запросе
0 smitov
 
15.12.21
07:14
Здравствуйте.

Есть запрос:
"ВЫБРАТЬ
    |    ЧекККМ.Ссылка КАК Ссылка,
    |    ЧекККМ.Дата КАК Дата,
    |    ЧекККМ.НомерЧекаККМ КАК НомерЧекаККМ,
    |    ЧекККМ.СуммаДокумента КАК СуммаДокумента,
    |    ЧекККМ.ОперацияСДенежнымиСредствами КАК ОперацияСДенежнымиСредствами,
    |    ЧекККМ.СтатусЧекаККМ КАК СтатусЧекаККМ
    |ИЗ
    |    Документ.ЧекККМ КАК ЧекККМ
    |ГДЕ
    |    ЧекККМ.Дата МЕЖДУ &НачЧека И &КонЧека"

Таблица значений с колонками НачЧека и КонЧека, которые заполняются из документов смен (начало смены и конец смены)

Как эту таблицу значений подставить в запрос?
1 Малыш Джон
 
15.12.21
07:25
(0) в каждой строке таблицы будет своё значение НачЧека и КонЧека. Соответственно условие "ГДЕ ЧекККМ.Дата МЕЖДУ &НачЧека И &КонЧека" для каждой строки таблицы будет выполнятся по-своему. На выходе что должно получиться?
2 Малыш Джон
 
15.12.21
07:28
А вообще:

ВЫБРАТЬ
  ТвояТаблица.НачЧека КАК НачЧека,
  ТвояТаблица.КонЧекаКАК КонЧека
ПОМЕСТИТЬ втТвояТаблица
ИЗ
  &ТвояТаблица КАК ТвояТаблица;

и используй дальше вт как тебе угодно.
3 Chameleon1980
 
15.12.21
07:31
+2 только колонки тз должны быть типизированы, а то придешь со следующим вопросом
4 smitov
 
15.12.21
08:28
(1) На выходе должны остаться только те чеки, которые входят в диапазон дат.
Проблем нет, если одна смена. Если несколько смен тогда запрос дает только последний интервал
5 hhhh
 
15.12.21
08:37
(4) какой запрос? Текст запроса в студию.
6 Ryzeman
 
15.12.21
08:42
(4) Зачем использовать ТЗ, если документы смен и так есть в базе данных? Получи их и минимальную\максимальную дату запросом.

Если уже так хочется использовать ТЗ, зачем опять же, пихать её в запрос? Тебе надо же получить чеки в интервале дат, так найди интервал в коде, а интервал так же параметрами задавай как в (0).

Но навскидку всё это выглядит какими-то неверными решениями от непонимания. Если тебе нужно выбрать чеки по сменам, то там наверняка есть какая-то связь, в запрос следует передавать смены, а уже по ним определять чеки.
7 smitov
 
15.12.21
08:50
(6) Бухгалтер выбирает из списка нужные смены. На основе которых и идет отбор всех кассовых смен.

минимальную\максимальную дату запросом я как раз и получаю запросом и его надо вставить в запрос из (0)
8 Мимохожий Однако
 
15.12.21
08:54
(7) Посмотри, привязан ли чек к кассовой смене. Если привязан, то передавай массив номеров смен в запрос и отлавливай чеки по номерам смен. При этом текст запроса должен быть другой.
9 smitov
 
15.12.21
09:15
(8) В том то и дело, что кассир делает только открытие смены и закрытие смены. Привязка чеков должна идти через документ Отчеты о розничных продажах. Они его не делают, не хотят, не могут, не видят.
Поэтому бухгалтер попросила сделать привязку чеков через начало смены и конец смены.
10 hhhh
 
15.12.21
09:30
(9) в чекек уже есть реквизит КассоваяСмена, поэтому искать чеки по датам этой смены -  это дебилизм.
11 Мимохожий Однако
 
15.12.21
09:38
(9) Бухгалтер здесь не при чём. Посмотри структуру метаданных чека и подумай
12 Ryzeman
 
15.12.21
09:40
(9) Так у тебя типовая УТ? Зачем тогда вообще извращения с датой чека и концом\началом смены? Все привязки и так есть в базе данных. У тебя задача какая?
13 smitov
 
15.12.21
11:13
(12) Я делаю выгрузку проданных товаров из Розницы в стандартную бухгалтерию. Задание сделать без использования стандартного механизма обмена данными.
14 Мимохожий Однако
 
15.12.21
11:15
(13) Использование своего механизма обмена не предполагает отказа от рационального выбора данных из базы.
15 SleepyHead
 
гуру
15.12.21
11:55
(0) из твоей таблицы получи массив дат, каждую дату приведи к началу дня.
Сделай этот массив параметром запроса.

В условии в запросе - НачалоПериода(Чек.Дата, ДЕНЬ) в (&МассивДат)
16 Мультук
 
гуру
15.12.21
12:00
(15)

Т.е. если в течении дня было две смены, одну выгружаем, а другую нет, то все равно выгружаем?
17 acht
 
15.12.21
12:01
(15) > НачалоПериода(Чек.Дата, ДЕНЬ) в (&МассивДат)
Прощайте, индексы!
18 SleepyHead
 
гуру
15.12.21
12:09
(17) Да и. с ними ))
19 SleepyHead
 
гуру
15.12.21
12:10
(16) я не понял вопроса. Лучше у автора спросить, какие даты он планирует использовать.
20 acht
 
15.12.21
12:11
(18) Анекдот про парашютиста, стропорез и яйца =]
21 SleepyHead
 
гуру
15.12.21
12:14
(20) Как костыль сойдет, а дальше пусть сам автор оптимизирует. Про индексы я знал, когда писал.
22 серый КТУЛХУ
 
15.12.21
12:35
два взаимосвязанных вопроса, без которых дальнейший разговор (и вообще все в этой ветке) - лишены смысла:
1) какие колонки помимо НачДата и КонДата есть в ТЗ?
2) как для каждого документа (ЧекККМ) определить - из КАКОЙ строки ТЗ надо брать даты для сравнения (п.1)?
23 smitov
 
15.12.21
12:55
(19) За день может быть  несколько смен в идеале одна.
Смены выбираются чекбоксом
24 smitov
 
15.12.21
12:57
(15) К началу дня не вариант. У каждой смены своё время начала
25 smitov
 
15.12.21
12:58
(22) Только НачДата и КонДата. Эти значения о определяют куда относится чек, к какой смене.
26 Мультук
 
гуру
15.12.21
13:21
(0)

Запрос про даты, нужно еще условие на КассуККМ



ВЫБРАТЬ
    ДАТАВРЕМЯ(2021, 12, 1, 0, 0, 0) КАК ДТ,
    1 КАК номерЧека
ПОМЕСТИТЬ ВТ_ЧЕКИ

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    ДАТАВРЕМЯ(2021, 12, 2, 0, 0, 0),
    2

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    ДАТАВРЕМЯ(2021, 12, 3, 0, 0, 0),
    3

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    ДАТАВРЕМЯ(2021, 12, 4, 0, 0, 0),
    4
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ДАТАВРЕМЯ(2021, 12, 1, 0, 0, 0) КАК ДТ_Начало,
    ДАТАВРЕМЯ(2021, 12, 2, 23, 59, 59) КАК ДТ_Окончание,
    1 КАК НомерСмены
ПОМЕСТИТЬ ВТ_СМЕНЫ

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    ДАТАВРЕМЯ(2021, 12, 4, 0, 0, 0),
    ДАТАВРЕМЯ(2021, 12, 4, 23, 59, 59),
    2



;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ_ЧЕКИ.ДТ КАК ДТ,
    ВТ_ЧЕКИ.номерЧека КАК номерЧека
ИЗ
    ВТ_ЧЕКИ КАК ВТ_ЧЕКИ
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_СМЕНЫ
    ПО
        ВТ_ЧЕКИ.ДТ >= ВТ_СМЕНЫ.ДТ_Начало
        И ВТ_ЧЕКИ.ДТ <= ВТ_СМЕНЫ.ДТ_Окончание
27 smitov
 
15.12.21
13:52
(26) Спасибо за помощь. Касса пока одна.
Делаю через цикл, дату каждой смены в запрос из (0), потом запрос.выполнить().выбрать и добавляю в таблицу чеки
28 Мультук
 
гуру
15.12.21
14:01
(27)

>>>>Я делаю выгрузку проданных товаров из Розницы в стандартную бухгалтерию. Задание сделать без использования стандартного механизма обмена данными.

1) А зачем там чеки? Там более чем достаточно ООРП
2) Если не секрет, в какой документ в Бух будет грузится информация ?

P.S.
Я понимаю, когда люди играют в "это грузим", а "это не грузим". Но грузим/не грузим кассовые чеки это что-то новое.
29 smitov
 
15.12.21
14:13
(28) В Бухгалтерии будут создаваться документы: Реализация ТМЗ и услуг, приходный кассовый ордер.
30 Мультук
 
гуру
15.12.21
14:19
(29)

С РТУ хрен с ним, но как ваши бухи будут показывать ПКО (кассовая книга и прочее) и объяснять как они сочетаются с чеками пробитыми через кассовый аппарат...
Но это уже их {частично нецензурное слово} трудности.
31 smitov
 
15.12.21
14:40
(30) В Казахстане кассовые книги не нужны. Чеки с кассы копируются на сайт налогового органа.
Чеки, смены, тчеты все можно посмотреть онлайн.
32 серый КТУЛХУ
 
15.12.21
14:50
(25): о, тогда у тебя проблемы с вербальным самовыражением.
т.е. по сути - тебе надо выбирать документы по условию нахождения даты документа в любом из интервалов, список которых указан в ТЗ с колонками НачДата и КонДата
33 Мимохожий Однако
 
15.12.21
15:07
(31) К чему эта информация?
34 anatoly
 
15.12.21
15:15
(27) запрос в цикле.. 8-/
можно сделать через СОЕДИНЕНИЕ.
35 Малыш Джон
 
15.12.21
15:19
и ведь это не курсовая студента, которая никому не сдалась...
это ведь реальная организация и где-то будет вот так реально это работать...
36 smitov
 
15.12.21
15:21
(34) Спасибо. Сделал уже как в (27).