|
|
|
Получить количество значений из регистра сведений помесячно SleepyHead, vicof, nick86, kubik_live, maxab72, Hawk_1c, МаленькийВопросик, Homer, comp2006, Timon1405, Fish, RomanYS, Мультук, banco, Доминошник, Александр111, d4rkmesa, H A D G E H O G s, HELEN0302, Garykom, lEvGl, Ненавижу 1С, YaFedor, shuhard, DiMel_77, maxar, Eiffil123, boozin, Злоп, d18, Prog_man, Irbis, formista2000, laeg, zenik, reg0303, Михаил_, Alex7771, Ёпрст, mortal, Rokford, Dен, Климов Сергей, 2S, trad, nAPACEHAK, Vitsa23, X Leshiy
| ☑ | ||
|---|---|---|---|---|
|
0
HELEN0302
01.11.25
✎
13:13
|
Есть регистр сведений "СтатусыТендера"
В нем измерения: 1) Тендер - тип ссылка на справочник "Тендеры" 2) Период - тип дата (дата изменения статуса тендера из справочника "Тендеры") И ресурс: Статус тендера - тип перечисления Запись в регистре создается, когда меняется статус тендера в элементе справочника "Тендера" Задача: Создать отчет, где за выбранный период, по месяцам будет выведено количество активных тендеров. Активные задачи - все, кроме задач со статусом "Готов" и "Отменен" Что вызывает сложность: 1) Если, к примеру в марте был тендер " |
|||
|
1
HELEN0302
01.11.25
✎
13:21
|
Что вызывает сложность:
1) Если, к примеру в марте был тендер "Тендер1" в статусе "Подготовка" и до сентября статус не менялся, значит тендер активен и должен считаться в марте 1шт, апрель 1 шт и т.д. до сентября 2) Если "Тендер1" в марте был в статусе "Подготовка", в апреле "Сбор информации", затем в апреле перешел в статус "Отменен", то он должен считаться в марте 1шт, в апреле в количество не попадает |
|||
|
2
Ненавижу 1С
гуру
01.11.25
✎
13:21
|
(0) активных на конец месяца? или которые были активны в месяце хотя бы какой-то период?
|
|||
|
3
Ненавижу 1С
гуру
01.11.25
✎
13:21
|
(1) значит на конец месяца
|
|||
|
4
lEvGl
гуру
01.11.25
✎
13:23
|
(0) срез последних на каждый день
|
|||
|
5
HELEN0302
01.11.25
✎
13:24
|
(2) Мне нужно выбрать период, например "01.01.25 - "31.03.25"
Тогда тогда в отчете должен быть тендер и колонки по месяцам где будет выводиться количество активных задач, то есть за январь - март в каком то количестве, по остальным месяцам, соответственно количество выводиться не должно, потому что они не попадают в выбранный период |
|||
|
6
Garykom
гуру
01.11.25
✎
13:24
|
(0) Наймите уже программиста
|
|||
|
7
Garykom
гуру
01.11.25
✎
13:25
|
(6)+ И заодно аналитика, умеющего формализовывать и ставить задачи программистам
|
|||
|
8
Garykom
гуру
01.11.25
✎
13:27
|
Самый простой вариант это тупо кодом в цикле перебор всех тендеров
И для каждого смотреть записи в РС В зависимости от условий засовывать в ТЗ по месяцам |
|||
|
9
Ненавижу 1С
гуру
01.11.25
✎
13:27
|
1. соединив регистр с собой можно получить таблицу периодов состояния объектов
2. из производственного календаря можно получить даты окончаний всех месяцев периода 3. соединив их по включению в период можно получить статусы объектов на каждый месяц |
|||
|
10
Garykom
гуру
01.11.25
✎
13:29
|
Вариант когда период "01.01.25 - "31.03.25"
Тендер последний раз менялся 01.12.24 в "Подготовка" Он должен попадать в месяца "01.01.25 - "31.03.25"? |
|||
|
11
HELEN0302
01.11.25
✎
13:30
|
(10) Да, все верно
|
|||
|
12
Garykom
гуру
01.11.25
✎
13:39
|
Не надо любую задачу пытаться решить через одни запросы
Часто в этом нет смысла ибо долго делать и решение не гибкое И хрена с два легко модифицируемое И сложно ошибки отлавливать Тупо сделать кодом в циклах Имхается тут не требуется излишние быстродействие |
|||
|
13
Garykom
гуру
01.11.25
✎
13:40
|
1. Запросами к РС выбрать все тендеры для перебора/проверки в цикле
Тут будет несколько запросов или составной через ОБЪЕДИНИТЬ Например выбрать все Тендеры с нужными статусами до начало периода Так же все Тендеры изменяющиеся за период 2. Перебираем ТЗ Тендеров (свернуть ТЗ или в запросе выше) Каждый Тендер проверяем надо ли выводить и в какие периоды Добавляем в выходную ТЗ 3. Просто сортируем и выводим выходную ТЗ в макет |
|||
|
14
Eiffil123
01.11.25
✎
13:40
|
(12) тут должна случиться истерика у хомячков, исповедующих непременно получение данных для отчета запросом, а не кодом. А от запроса в цикле они будут пить корвалол в течение всего дня )
|
|||
|
15
Garykom
гуру
01.11.25
✎
13:41
|
(14) Лучше запрос в цикле чем удвоение, утроение и т.д. строк в результате кривых запросов
|
|||
|
16
Eiffil123
01.11.25
✎
13:45
|
(15) согласен. плюс читаемость кода повышается
|
|||
|
17
RomanYS
01.11.25
✎
13:46
|
(15) Странная альтернатива) Не делай кривые запросы.
Задачка решает не кривым запросом |
|||
|
18
Garykom
гуру
01.11.25
✎
13:57
|
(17) В некоторых случаях это невозможно, ибо зависит от данных
Например надо подобрать элементы справочника по некоему коду И упс один код повторяется у нескольких элементов справочника Упс было 10 строк а стало 25 - и хз в каких ошибка |
|||
|
19
Ненавижу 1С
гуру
01.11.25
✎
14:00
|
(18) почему невозможно? это разные формы одного и того же, выраженные разными алгоритмами
И да, язык запросов более ограничен чем алгоритм, не спорю но тут главное перед тем как писать любой алгоритм ответить на вопрос - а какой элемент выбирать, если код неуникален? |
|||
|
20
lEvGl
гуру
01.11.25
✎
14:06
|
(18) как код поможет решить эту проблему?
зы. с запросами интересней, а в кодах по сборке такой тз как нужна для (0) у большинства сразу появляются стр, пыр, мыр, стр1, хыр1 и остальное, от чего кровавые слезы |
|||
|
21
Eiffil123
01.11.25
✎
14:07
|
(20) не стр, а ТекСтр !!!
|
|||
|
22
lEvGl
гуру
01.11.25
✎
14:08
|
(21) шаришь! ))
|
|||
|
23
Garykom
гуру
01.11.25
✎
14:12
|
(20) Если в цикле по кодам делать запросы то если вернулось не 0 или 1, а >1 элемента справочника - понятно что ошибка
Ее можно обработать А вот предварительными запросами делать проверку на дублирующиеся коды долго и сложно |
|||
|
24
Garykom
гуру
01.11.25
✎
14:12
|
(19)
а какой элемент выбирать, если код неуникален?
А как ты это в запросе общем по куче кодов опишешь? |
|||
|
25
Garykom
гуру
01.11.25
✎
14:16
|
Короче если есть знания (и офигенный опыт) как делать только через запросы
Да еще без ошибок (все предусмотреть с их обработкой) - вперед (на мины)! Если таких знаний и опыта нет - хреначишь кодом и простыми запросами в цикле И ниипет, задача решена, допилить если что легко Не нужно излишне переусложнять код и запросы Лучше проще - проще потом переписать |
|||
|
26
Ненавижу 1С
гуру
01.11.25
✎
14:23
|
(24)
ВЫБРАТЬ ТаблицаКоды.Код, МАКСИМУМ(Номенклатура.Ссылка), ВЫБОР КОГДА Количество(*)>1 ТОГДА "Неоднозначное соответствие" КОГДА Количество(*)=0 ТОГДА "Нет соответствия" КОНЕЦ КАК Ошибка ИЗ ТаблицаКоды КАК ТаблицаКоды ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура ПО ТаблицаКоды.Код=Номенклатура.Код СГРУППИРОВАТЬ ПО ТаблицаКоды.Код |
|||
|
27
Garykom
гуру
01.11.25
✎
14:28
|
(26) Чем непонятно
"А вот предварительными запросами делать проверку на дублирующиеся коды долго и сложно" в (23) ? |
|||
|
28
Garykom
гуру
01.11.25
✎
14:30
|
(26) Я не спорю что так тоже можно
Еще усложнить запросы, добавив разные проверки Но это еще более усложнит доработку-переписывание в последующем |
|||
|
29
Ненавижу 1С
гуру
01.11.25
✎
14:33
|
(28) такие вещи обычно обычно приходят из вне базы. Например чтение из файла. Поэтому они проверяются в самом начале
|
|||
|
30
Ненавижу 1С
гуру
01.11.25
✎
14:34
|
я бы вообще перешел бы по возможности в функциональный стиль (например LINQ), дабы не писать все эти циклы
|
|||
|
31
Garykom
гуру
01.11.25
✎
14:35
|
(30) Надо понимать что под капотом там один хрен те же циклы
И в LINQ и в SQL |
|||
|
32
Ненавижу 1С
гуру
01.11.25
✎
14:39
|
(31) да. А внутри циклов goto (jmp) богомерзкий, просто другой уровень абстракции. Таков путь
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |