|
Помогите подкорректировать запрос | ☑ | ||
---|---|---|---|---|
0
legggga
23.09.20
✎
12:40
|
Добрый день, обращаюсь за помощью. Я админ понимаю в этом почти ничего, программиста вызвонить не могу, он с короной на больничном, а время жмет. Конфа ут 10.3 переписанная. Есть обработка отправляющая на почту прайс. Необходимо в запрос добавить фильтр чтобы туда не попадала номенклатура, у которой в подчиненном справочнике Цвета был выбран определенный цвет (код этого элемента 000000003). ВОт сам запрос
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура, | СУММА(ТоварыНаСкладахОстатки.КоличествоОстаток) КАК Остаток, | ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК Цена, | ТоварыНаСкладахОстатки.Номенклатура.Артикул КАК Артикул, | ТоварыНаСкладахОстатки.Номенклатура.Производитель КАК Производитель, | ЦеныНоменклатурыСрезПоследних.Номенклатура.Цвет КАК НоменклатураЦвет |ИЗ | РегистрНакопления.ТоварыНаСкладах.Остатки( | , | НЕ Номенклатура В ИЕРАРХИИ (&Номенклатура) | И Склад В (&Склады) | И НЕ Номенклатура.НоменклатурнаяГруппа В (&Шины) | И НЕ Номенклатура.Цвет = &Цвет | И НЕ Номенклатура.НоменклатурнаяГруппа В (&Диски)) КАК ТоварыНаСкладахОстатки | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ТипЦен = &ТипЦен) КАК ЦеныНоменклатурыСрезПоследних | ПО ТоварыНаСкладахОстатки.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура | |СГРУППИРОВАТЬ ПО | ТоварыНаСкладахОстатки.Номенклатура, | ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0), | ТоварыНаСкладахОстатки.Номенклатура.Артикул, | ТоварыНаСкладахОстатки.Номенклатура.Производитель, | ЦеныНоменклатурыСрезПоследних.Номенклатура.Цвет | |УПОРЯДОЧИТЬ ПО | Номенклатура |АВТОУПОРЯДОЧИВАНИЕ"; Запрос.УстановитьПараметр("Цвет", Справочники.Цвета.НайтиПоКоду("000000003")); Запрос.УстановитьПараметр("ТипЦен", Справочники.ТипыЦенНоменклатуры.Розничная); |
|||
1
Ёпрст
23.09.20
✎
12:43
|
(0) И ? что не работает то ?
|
|||
2
Ёпрст
23.09.20
✎
12:45
|
>>>И НЕ Номенклатура.Цвет = &Цвет
реквизит Цвет хоть есть у самой номенклатуры ? и он точно = Справочники.Цвета.НайтиПоКоду("000000003")) ? Скорее нет, чем да.. |
|||
3
legggga
23.09.20
✎
12:46
|
не работает, у Номенклатуры точно есть реквизит Цвет. Код у нужного элемента в справочнике Цвета точно 000000003
|
|||
4
ДенисЧ
23.09.20
✎
12:46
|
Как связаны строки
| И НЕ Номенклатура.Цвет = &Цвет и "в подчиненном справочнике Цвета" ? |
|||
5
Ёпрст
23.09.20
✎
12:46
|
И.. если это подчиненный справочник, то серии кодов, стоят как ? В пределах подчинения или во всем справочнике ?
Если первое, то .НайтиПоКоду вернёт тебе один из многих с таким кодом |
|||
6
ДенисЧ
23.09.20
✎
12:47
|
"у Номенклатуры точно есть реквизит Цвет"
Ну... Тут или крестик, или трусики... То подчинённый, то реквизит... |
|||
7
legggga
23.09.20
✎
12:47
|
все что в запрос добавлено про Цвет добавлено моими кривыми руками(( читал форумы чего-то писал...((
|
|||
8
Ёпрст
23.09.20
✎
12:47
|
А тебе нужен запрос к подчиненному справочнику, из него вытаскивать владелец и его пихать уже в фильтр
|
|||
9
Ёпрст
23.09.20
✎
12:48
|
(7) Без привязки к коду, как можно различать цвета в подчиненном справочнике ?
|
|||
10
legggga
23.09.20
✎
12:50
|
честно для меня это темный лес, а если мы пойдет другим путем, нет ли желающих подправить это все естественно не безвозмездно?)
|
|||
11
Ёпрст
23.09.20
✎
12:56
|
(10)
ВЫБРАТЬ Цвета.Владелец КАК Номенклатура ПОМЕСТИТЬ Табличка ИЗ Справочник.Цвета КАК Цвета ГДЕ Цвета.ТвойРеквизитПоКоторомуОднозначноОпределяетсяЧтоОнЖелтый = &Цвет ; ........... // И НЕ Номенклатура.Цвет = &Цвет И НЕ Номенклатура в (Выбрать Номенклатура Из Табличка) Реквизиты оплаты смотри в личной карточке. |
|||
12
legggga
23.09.20
✎
13:02
|
(11) глубочайше печалясь своему идиотизму все же спрошу - это пихать в тот же запрос или это какой-то дополнительный?
|
|||
13
sitex
naïve
23.09.20
✎
13:06
|
(11) Лучше уж напиши полностью запрос, а то замучает.
|
|||
14
Ёпрст
23.09.20
✎
13:07
|
(12) в тот же
|
|||
15
legggga
23.09.20
✎
13:07
|
(13) отлично сказано)
|
|||
16
legggga
23.09.20
✎
13:09
|
и озвучьте сумму пожалуйста)
|
|||
17
Ёпрст
23.09.20
✎
13:10
|
(16) ты в начале добейся. что б работало
|
|||
18
legggga
23.09.20
✎
13:11
|
Вот что получилось
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура, | СУММА(ТоварыНаСкладахОстатки.КоличествоОстаток) КАК Остаток, | ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК Цена, | ТоварыНаСкладахОстатки.Номенклатура.Артикул КАК Артикул, | ТоварыНаСкладахОстатки.Номенклатура.Производитель КАК Производитель, | Цвета.Владелец КАК Номенклатура |ПОМЕСТИТЬ Табличка |ИЗ | РегистрНакопления.ТоварыНаСкладах.Остатки( | , | НЕ Номенклатура В ИЕРАРХИИ (&Номенклатура) | И Склад В (&Склады) | И НЕ Номенклатура.НоменклатурнаяГруппа В (&Шины) | И НЕ Номенклатура в (Выбрать Номенклатура Из Табличка) | И НЕ Номенклатура.НоменклатурнаяГруппа В (&Диски)) КАК ТоварыНаСкладахОстатки | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ТипЦен = &ТипЦен) КАК ЦеныНоменклатурыСрезПоследних | ПО ТоварыНаСкладахОстатки.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура | Справочник.Цвета КАК Цвета |ГДЕ | Цвета.НайтиПоКоду("000000003") = &Цвет | |СГРУППИРОВАТЬ ПО | ТоварыНаСкладахОстатки.Номенклатура, | ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0), | ТоварыНаСкладахОстатки.Номенклатура.Артикул, | ТоварыНаСкладахОстатки.Номенклатура.Производитель, | ЦеныНоменклатурыСрезПоследних.Номенклатура.Цвет | |УПОРЯДОЧИТЬ ПО | Номенклатура |АВТОУПОРЯДОЧИВАНИЕ"; Запрос.УстановитьПараметр("Цвет", Справочники.Цвета.НайтиПоКоду("000000003")); Запрос.УстановитьПараметр("ТипЦен", Справочники.ТипыЦенНоменклатуры.Розничная); |
|||
19
legggga
23.09.20
✎
13:14
|
вернее вот так получилось
Запрос.Текст = "ВЫБРАТЬ | ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура, | СУММА(ТоварыНаСкладахОстатки.КоличествоОстаток) КАК Остаток, | ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК Цена, | ТоварыНаСкладахОстатки.Номенклатура.Артикул КАК Артикул, | ТоварыНаСкладахОстатки.Номенклатура.Производитель КАК Производитель, | Цвета.Владелец КАК Номенклатура |ПОМЕСТИТЬ Табличка |ИЗ | РегистрНакопления.ТоварыНаСкладах.Остатки( | , | НЕ Номенклатура В ИЕРАРХИИ (&Номенклатура) | И Склад В (&Склады) | И НЕ Номенклатура.НоменклатурнаяГруппа В (&Шины) | И НЕ Номенклатура в (Выбрать Номенклатура Из Табличка) | И НЕ Номенклатура.НоменклатурнаяГруппа В (&Диски)) КАК ТоварыНаСкладахОстатки | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ТипЦен = &ТипЦен) КАК ЦеныНоменклатурыСрезПоследних | ПО ТоварыНаСкладахОстатки.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура | Справочник.Цвета КАК Цвета |ГДЕ | Цвета.НайтиПоКоду(000000003) = &Цвет | |СГРУППИРОВАТЬ ПО | ТоварыНаСкладахОстатки.Номенклатура, | ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0), | ТоварыНаСкладахОстатки.Номенклатура.Артикул, | ТоварыНаСкладахОстатки.Номенклатура.Производитель, | ЦеныНоменклатурыСрезПоследних.Номенклатура.Цвет | |УПОРЯДОЧИТЬ ПО | Номенклатура |АВТОУПОРЯДОЧИВАНИЕ"; Запрос.УстановитьПараметр("Цвет", Справочники.Цвета.НайтиПоКоду("000000003")); Запрос.УстановитьПараметр("ТипЦен", Справочники.ТипыЦенНоменклатуры.Розничная); |
|||
20
legggga
23.09.20
✎
13:16
|
но получается вот это
{ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(74)}: Ошибка при вызове метода контекста (Выполнить) Рез = Запрос.Выполнить().Выгрузить(); по причине: {(19, 9)}: Синтаксическая ошибка "Справочник.Цвета" <<?>>Справочник.Цвета КАК Цвета |
|||
21
ДенисЧ
23.09.20
✎
13:22
|
Мдя... Ёпрст, не мучай ребёнка... Напиши ему запрос полностью...
|
|||
22
Ёпрст
23.09.20
✎
13:29
|
ТвойРеквизитПоКоторомуОднозначноОпределяетсяЧтоОнЖелтый - это ты должен сам определить, по какому признаку в подчиненном справочнике указывается. что он желтый, а не зеленый или красный |
|||
23
legggga
23.09.20
✎
13:29
|
да да, счастью моему не было бы предела...)
|
|||
24
Ёпрст
23.09.20
✎
13:30
|
|
|||
25
legggga
23.09.20
✎
13:33
|
(24) вопрос по реквизиту - у этого справочника Цвета есть конкретный элемент ( с кодом "000000003" и наименованием "Зеленый заказной/неликви") вот если он выбран в номенклатуре то такая номенклатура и не должна попадать.
|
|||
26
Ёпрст
23.09.20
✎
13:36
|
(25) и прям у каждой номенклатуры есть подчиненный элемент с таким кодом ?
|
|||
27
Ёпрст
23.09.20
✎
13:37
|
серии кодов в справочнике цвета как заданы ? В пределах подчинения справочника или непрерывно, во всём справочнике ?
|
|||
28
legggga
23.09.20
✎
13:39
|
(26) (27) во всем справочнике Цвета всего десяток элементов, на форме элемента Номенклатуры есть поле выбора Цвет (выбирается из этого справочника Цвета), реквизит Цвет у справочника Номенклатура тоже есть
|
|||
29
dka80
23.09.20
✎
13:42
|
Извините, что не в тему, а программист присмерти или просто отдыхает?
|
|||
30
legggga
23.09.20
✎
13:45
|
(29) на карантине с короной не поверите
|
|||
31
Ёпрст
23.09.20
✎
13:47
|
(28) их гораздо больше. Это ты видишь с отбором по владельцу - номенклатуре.
|
|||
32
Ёпрст
23.09.20
✎
13:47
|
Вот для каждой номенклатуры их и есть с 10-ок..
|
|||
33
dka80
23.09.20
✎
13:50
|
(30) я это прочитал в (0) и поэтому спрашиваю: он присмерти и совсем не может подключиться, потратить 10 минут времени и сделать?
|
|||
34
legggga
23.09.20
✎
13:51
|
(33) не могу дозвониться банально, по вчерашнему разговору судя - состояние у него мягко говоря не ахти.
|
|||
35
legggga
23.09.20
✎
13:52
|
(31) (32) а нельзя тупо по наименованию одинаковому сравнивать (простите за идиотизм), ведь в каждой карточке каждой номенклатуры я вижу элементы этого справочника с одним и тем же названием
|
|||
36
legggga
23.09.20
✎
13:55
|
и еще может я вас дезенформировал по поводу подчинения справочника, просто если не привязываясь к номенклатуре открыть этот справочник то там все же 10 элементов, а не тысячи как например с ]единицами измерения, которая для каждой номенклатуры своя
|
|||
37
legggga
23.09.20
✎
13:57
|
ну и для интересующихся - дозвонился жене, он в больнице, состояние средней тяжести, разговоры про ивл ходят(( веселого мало
|
|||
38
Ёпрст
23.09.20
✎
13:58
|
(35) можно
|ГДЕ //| Цвета.ТвойРеквизитПоКоторомуОднозначноОпределяетсяЧтоОнЖелтый = &Цвет |Где Цвета.Наименование Подобно ""%желтый%"" |
|||
39
dka80
23.09.20
✎
14:02
|
И НЕ Номенклатура.Цвет.Наименование подобно "%зеленый%"
|
|||
40
legggga
23.09.20
✎
14:06
|
Запрос.Текст = "ВЫБРАТЬ
| Цвета.Владелец КАК Номенклатура |ПОМЕСТИТЬ Табличка |ИЗ | Справочник.Цвета КАК Цвета |ГДЕ | Цвета.Наименование Подобно ""%Зеленый заказной/неликви%"" |; |ВЫБРАТЬ | ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура, | СУММА(ТоварыНцаСкладахОстатки.КоличествоОстаток) КАК Остаток, | ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК Цена, | ТоварыНаСкладахОстатки.Номенклатура.Артикул КАК Артикул, | ТоварыНаСкладахОстатки.Номенклатура.Производитель КАК Производитель, | ЦеныНоменклатурыСрезПоследних.Номенклатура.Цвет КАК НоменклатураЦвет |ИЗ | РегистрНакопления.ТоварыНаСкладах.Остатки( | , | НЕ Номенклатура В ИЕРАРХИИ (&Номенклатура) | И Склад В (&Склады) | И НЕ Номенклатура.НоменклатурнаяГруппа В (&Шины) | И НЕ Номенклатура в (Выбрать Номенклатура Из Табличка) | И НЕ Номенклатура.Цвет.Наименование подобно ""%Зеленый заказной/неликви%"" | И НЕ Номенклатура.НоменклатурнаяГруппа В (&Диски)) КАК ТоварыНаСкладахОстатки | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ТипЦен = &ТипЦен) КАК ЦеныНоменклатурыСрезПоследних | ПО ТоварыНаСкладахОстатки.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура | |СГРУППИРОВАТЬ ПО | ТоварыНаСкладахОстатки.Номенклатура, | ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0), | ТоварыНаСкладахОстатки.Номенклатура.Артикул, | ТоварыНаСкладахОстатки.Номенклатура.Производитель, | ЦеныНоменклатурыСрезПоследних.Номенклатура.Цвет | |УПОРЯДОЧИТЬ ПО | Номенклатура |АВТОУПОРЯДОЧИВАНИЕ"; Запрос.УстановитьПараметр("ТипЦен", Справочники.ТипыЦенНоменклатуры.Розничная); |
|||
41
legggga
23.09.20
✎
14:06
|
{ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(79)}: Ошибка при вызове метода контекста (Выполнить)
Рез = Запрос.Выполнить().Выгрузить(); по причине: {(2, 11)}: Поле не найдено "Цвета.Владелец" Цвета.<<?>>Владелец КАК Номенклатура |
|||
42
legggga
23.09.20
✎
14:07
|
вот что получается
|
|||
43
ДенисЧ
23.09.20
✎
14:08
|
(41) (42) Значит, справочник Цвета не является подчинённым. Что входит в противоречие с исходным посылом...
|
|||
44
legggga
23.09.20
✎
14:10
|
(43) у меня в 36 посте возникло такое ощущение( как тогда быть собственно?
|
|||
45
ДенисЧ
23.09.20
✎
14:14
|
(44) Для начала показать картинку со справочником Цвета из конфигуратора. А потом номенклатуру в месте, где этот цвет задаётся. Опять же из конфигуратора...
|
|||
46
dka80
23.09.20
✎
14:15
|
ты (39) пробывал?
вместо | И НЕ Номенклатура.Цвет = &Цвет напиши | И НЕ Номенклатура.Цвет.Наименование подобно "%зеленый%" |
|||
47
Ёпрст
23.09.20
✎
14:18
|
Ну, тогда (0) должен и так заработать..
|
|||
48
Ёпрст
23.09.20
✎
14:18
|
как есть
|
|||
49
legggga
23.09.20
✎
14:21
|
||||
50
legggga
23.09.20
✎
14:21
|
||||
51
legggga
23.09.20
✎
14:21
|
не знаю то ли это?
|
|||
52
legggga
23.09.20
✎
14:22
|
для общего понимания у меня код сейчас точно как в 40.
|
|||
53
Ёпрст
23.09.20
✎
14:28
|
(52) так пробуй
Запрос.Текст = " |ВЫБРАТЬ | ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура, | СУММА(ТоварыНцаСкладахОстатки.КоличествоОстаток) КАК Остаток, | ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК Цена, | ТоварыНаСкладахОстатки.Номенклатура.Артикул КАК Артикул, | ТоварыНаСкладахОстатки.Номенклатура.Производитель КАК Производитель, | ЦеныНоменклатурыСрезПоследних.Номенклатура.Цвет КАК НоменклатураЦвет |ИЗ | РегистрНакопления.ТоварыНаСкладах.Остатки( | , | НЕ Номенклатура В ИЕРАРХИИ (&Номенклатура) | И Склад В (&Склады) | И НЕ Номенклатура.НоменклатурнаяГруппа В (&Шины) | И НЕ Номенклатура.Цвет.Наименование подобно ""%Зеленый заказной/неликви%"" | И НЕ Номенклатура.НоменклатурнаяГруппа В (&Диски)) КАК ТоварыНаСкладахОстатки | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ТипЦен = &ТипЦен) КАК ЦеныНоменклатурыСрезПоследних | ПО ТоварыНаСкладахОстатки.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура | |СГРУППИРОВАТЬ ПО | ТоварыНаСкладахОстатки.Номенклатура, | ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0), | ТоварыНаСкладахОстатки.Номенклатура.Артикул, | ТоварыНаСкладахОстатки.Номенклатура.Производитель, | ЦеныНоменклатурыСрезПоследних.Номенклатура.Цвет | |УПОРЯДОЧИТЬ ПО | Номенклатура |АВТОУПОРЯДОЧИВАНИЕ"; |
|||
54
Ёпрст
23.09.20
✎
14:28
|
не быстро, но и пофик
|
|||
55
legggga
23.09.20
✎
14:31
|
опечатка прокралась, убрал, пробую
|
|||
56
legggga
23.09.20
✎
14:39
|
собственно запрос срабатывает, файл выгружается, однако, я взял для эксперимента одну номенклатуру поставил ей сей цвет и выгрузил затем убрал и выгрузил, ее нет ни в первом ни втором случае, хотя до наших мытарств выгружалась(
|
|||
57
Ёпрст
23.09.20
✎
14:59
|
(56) а точно надо убирать номенклатуру из этой папки ?
>>>> НЕ Номенклатура В ИЕРАРХИИ (&Номенклатура) |
|||
58
Ёпрст
23.09.20
✎
15:00
|
Мот наеборот ?
|
|||
59
legggga
23.09.20
✎
15:02
|
(57) (58) а что если по русски значит это условие? я думал оно означает не брать номенклатуру лежащую в корне справочника (хотя такой нет совсем)
|
|||
60
legggga
23.09.20
✎
15:04
|
на всякий случай показываю как выглядел запрос до того как я в него полез сегодня кривыми руками
Запрос.Текст = "ВЫБРАТЬ | ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура, | СУММА(ТоварыНаСкладахОстатки.КоличествоОстаток) КАК Остаток, | ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК Цена, | ТоварыНаСкладахОстатки.Номенклатура.Артикул КАК Артикул, | ТоварыНаСкладахОстатки.Номенклатура.Производитель КАК Производитель |ИЗ | РегистрНакопления.ТоварыНаСкладах.Остатки( | , | НЕ Номенклатура В ИЕРАРХИИ (&Номенклатура) | И Склад В (&Склады) | И НЕ Номенклатура.НоменклатурнаяГруппа В (&Шины) | И НЕ Номенклатура.НоменклатурнаяГруппа В (&Диски)) КАК ТоварыНаСкладахОстатки | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ТипЦен = &ТипЦен) КАК ЦеныНоменклатурыСрезПоследних | ПО ТоварыНаСкладахОстатки.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура | |СГРУППИРОВАТЬ ПО | ТоварыНаСкладахОстатки.Номенклатура, | ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0), | ТоварыНаСкладахОстатки.Номенклатура.Артикул, | ТоварыНаСкладахОстатки.Номенклатура.Производитель | |УПОРЯДОЧИТЬ ПО | Номенклатура |АВТОУПОРЯДОЧИВАНИЕ"; |
|||
61
legggga
23.09.20
✎
15:05
|
если я правильно понимаю, он высыпает всю номенклатуру имеющую остатки и цены исключая номенклатуру в папке и Шины и в папке Диски (это я про оригинальный)
|
|||
62
Ёпрст
23.09.20
✎
15:14
|
(61) ине берет всю номенклатуру во всех папках и подпапках группы (&Номенклатура)
|
|||
63
legggga
23.09.20
✎
15:16
|
(62) а как же я тогда вижу в файле вексельном 74 страницы номенклатуры списком с остатками и ценами, может весь код обработки показать?)
|
|||
64
Deon
23.09.20
✎
15:21
|
(62) Это, скорее всего, номенклатура-исключения
|
|||
65
legggga
23.09.20
✎
15:34
|
(64) глупый вопрос - а какой принцип исключения и попадания в эту выгрузку как узнать?
собственно показываю вообще весь код обработки выгрузки (там таких запросов кстати три, потому что выгружаются три файла, первый без номенклатуры из папок ШИНЫ и ДИСКИ, второй только ШИНЫ, третий только ДИСКИ) Таб = Новый ТабличныйДокумент; Таб2 = Новый ТабличныйДокумент; Таб3 = Новый ТабличныйДокумент; Макет = ПолучитьОбщийМакет("Прайс"); Обл = Макет.ПолучитьОбласть("Шапка"); Таб.Вывести(Обл); Обл = Макет.ПолучитьОбласть("Строка"); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура, | СУММА(ТоварыНаСкладахОстатки.КоличествоОстаток) КАК Остаток, | ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК Цена, | ТоварыНаСкладахОстатки.Номенклатура.Артикул КАК Артикул, | ТоварыНаСкладахОстатки.Номенклатура.Производитель КАК Производитель, | ЦеныНоменклатурыСрезПоследних.Номенклатура.Цвет КАК НоменклатураЦвет |ИЗ | РегистрНакопления.ТоварыНаСкладах.Остатки( | , | НЕ Номенклатура В ИЕРАРХИИ (&Номенклатура) | И Склад В (&Склады) | И НЕ Номенклатура.НоменклатурнаяГруппа В (&Шины) | И НЕ Номенклатура.Цвет.Наименование подобно ""%Зеленый заказной/неликви%"" | И НЕ Номенклатура.НоменклатурнаяГруппа В (&Диски)) КАК ТоварыНаСкладахОстатки | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ТипЦен = &ТипЦен) КАК ЦеныНоменклатурыСрезПоследних | ПО ТоварыНаСкладахОстатки.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура | |СГРУППИРОВАТЬ ПО | ТоварыНаСкладахОстатки.Номенклатура, | ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0), | ТоварыНаСкладахОстатки.Номенклатура.Артикул, | ТоварыНаСкладахОстатки.Номенклатура.Производитель, | ЦеныНоменклатурыСрезПоследних.Номенклатура.Цвет | |УПОРЯДОЧИТЬ ПО | Номенклатура |АВТОУПОРЯДОЧИВАНИЕ"; Запрос.УстановитьПараметр("ТипЦен", Справочники.ТипыЦенНоменклатуры.Розничная); МасСклады = Новый Массив; МасСклады.Добавить(Справочники.Склады.НайтиПоКоду("Ш00000072")); МасСклады.Добавить(Справочники.Склады.НайтиПоКоду("Ш00000194")); МасСклады.Добавить(Справочники.Склады.НайтиПоКоду("Ш00000024")); МасСклады.Добавить(Справочники.Склады.НайтиПоКоду("Ш00000013")); МасСклады.Добавить(Справочники.Склады.НайтиПоКоду("000000002")); МасСклады.Добавить(Справочники.Склады.НайтиПоКоду("Ш00000054")); МасСклады.Добавить(Справочники.Склады.НайтиПоКоду("Ш00000008")); МасСклады.Добавить(Справочники.Склады.НайтиПоКоду("Ш00000167")); МасСклады.Добавить(Справочники.Склады.НайтиПоКоду("000000003")); МасСклады.Добавить(Справочники.Склады.НайтиПоКоду("Ш00000067")); МасСклады.Добавить(Справочники.Склады.НайтиПоКоду("000000001")); МасСклады.Добавить(Справочники.Склады.НайтиПоКоду("Ш00000026")); МасСклады.Добавить(Справочники.Склады.НайтиПоКоду("000000005")); МасСклады.Добавить(Справочники.Склады.НайтиПоКоду("Ш00000088")); Запрос.УстановитьПараметр("Склады",МасСклады); МасШины = Новый Массив; МасШины.Добавить(Справочники.НоменклатурныеГруппы.НайтиПоКоду("Ш00000313")); МасШины.Добавить(Справочники.НоменклатурныеГруппы.НайтиПоКоду("Ш00000085")); МасШины.Добавить(Справочники.НоменклатурныеГруппы.НайтиПоКоду("Ш00000580")); МасШины.Добавить(Справочники.НоменклатурныеГруппы.НайтиПоКоду("Ш00000084")); Запрос.УстановитьПараметр("Шины",МасШины); МасДиски = Новый Массив; МасДиски.Добавить(Справочники.НоменклатурныеГруппы.НайтиПоКоду("Ш00000088")); МасДиски.Добавить(Справочники.НоменклатурныеГруппы.НайтиПоКоду("Ш00000087")); Запрос.УстановитьПараметр("Диски",МасДиски); Запрос.УстановитьПараметр("Номенклатура", Справочники.Номенклатура.НайтиПоКоду("00000099105")); Рез = Запрос.Выполнить().Выгрузить(); Для Каждого Стр Из Рез Цикл Обл.Параметры.Заполнить(Стр); Таб.Вывести(Обл); КонецЦикла; ПолныйПутьКФайлуXLS = ПолучитьИмяВременногоФайла("xls"); Таб.Записать(ПолныйПутьКФайлуXLS, ТипФайлаТабличногоДокумента.XLS97); Файл1 = Новый Файл(ПолныйПутьКФайлуXLS); ИВФ1 = Файл1.Путь+"Прайс Товар.xls"; КопироватьФайл(ПолныйПутьКФайлуXLS,ИВФ1); Запрос.Текст = "ВЫБРАТЬ | ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура, | СУММА(ТоварыНаСкладахОстатки.КоличествоОстаток) КАК Остаток, | ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК Цена, | ТоварыНаСкладахОстатки.Номенклатура.Артикул КАК Артикул, | ТоварыНаСкладахОстатки.Номенклатура.Производитель КАК Производитель |ИЗ | РегистрНакопления.ТоварыНаСкладах.Остатки( | , | НЕ Номенклатура В ИЕРАРХИИ (&Номенклатура) | И Склад В (&Склады) | И Номенклатура.НоменклатурнаяГруппа В (&Шины)) КАК ТоварыНаСкладахОстатки | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ТипЦен = &ТипЦен) КАК ЦеныНоменклатурыСрезПоследних | ПО ТоварыНаСкладахОстатки.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура | |СГРУППИРОВАТЬ ПО | ТоварыНаСкладахОстатки.Номенклатура, | ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0), | ТоварыНаСкладахОстатки.Номенклатура.Артикул, | ТоварыНаСкладахОстатки.Номенклатура.Производитель | |УПОРЯДОЧИТЬ ПО | Номенклатура |АВТОУПОРЯДОЧИВАНИЕ"; Рез = Запрос.Выполнить().Выгрузить(); Обл = Макет.ПолучитьОбласть("Шапка"); Таб2.Вывести(Обл); Обл = Макет.ПолучитьОбласть("Строка"); Для Каждого Стр Из Рез Цикл Обл.Параметры.Заполнить(Стр); Таб2.Вывести(Обл); КонецЦикла; ПолныйПутьКФайлуXLS = ПолучитьИмяВременногоФайла("xls"); Таб2.Записать(ПолныйПутьКФайлуXLS, ТипФайлаТабличногоДокумента.XLS97); Файл2 = Новый Файл(ПолныйПутьКФайлуXLS); ИВФ2 = Файл2.Путь+"Прайс Шины.xls"; КопироватьФайл(ПолныйПутьКФайлуXLS,ИВФ2); Запрос.Текст = "ВЫБРАТЬ | ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура, | СУММА(ТоварыНаСкладахОстатки.КоличествоОстаток) КАК Остаток, | ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК Цена, | ТоварыНаСкладахОстатки.Номенклатура.Артикул КАК Артикул, | ТоварыНаСкладахОстатки.Номенклатура.Производитель КАК Производитель |ИЗ | РегистрНакопления.ТоварыНаСкладах.Остатки( | , | НЕ Номенклатура В ИЕРАРХИИ (&Номенклатура) | И Склад В (&Склады) | И Номенклатура.НоменклатурнаяГруппа В (&Диски)) КАК ТоварыНаСкладахОстатки | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ТипЦен = &ТипЦен) КАК ЦеныНоменклатурыСрезПоследних | ПО ТоварыНаСкладахОстатки.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура | |СГРУППИРОВАТЬ ПО | ТоварыНаСкладахОстатки.Номенклатура, | ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0), | ТоварыНаСкладахОстатки.Номенклатура.Артикул, | ТоварыНаСкладахОстатки.Номенклатура.Производитель | |УПОРЯДОЧИТЬ ПО | Номенклатура |АВТОУПОРЯДОЧИВАНИЕ"; Рез = Запрос.Выполнить().Выгрузить(); Обл = Макет.ПолучитьОбласть("Шапка"); Таб3.Вывести(Обл); Обл = Макет.ПолучитьОбласть("Строка"); Для Каждого Стр Из Рез Цикл Обл.Параметры.Заполнить(Стр); Таб3.Вывести(Обл); КонецЦикла; ПолныйПутьКФайлуXLS = ПолучитьИмяВременногоФайла("xls"); Таб3.Записать(ПолныйПутьКФайлуXLS, ТипФайлаТабличногоДокумента.XLS97); Файл3 = Новый Файл(ПолныйПутьКФайлуXLS); ИВФ3 = Файл3.Путь+"Прайс Диски.xls"; КопироватьФайл(ПолныйПутьКФайлуXLS,ИВФ3); Профиль = Новый ИнтернетПочтовыйПрофиль; Профиль.АдресСервераSMTP = "mail.nic.ru"; Профиль.АдресСервераPOP3 = "mail.nic.ru"; Профиль.ПортPOP3 = 110; Профиль.ПортSMTP = 25; Профиль.Пользователь = "[email protected]"; Профиль.Пароль = "Foto2017"; Профиль.ПользовательSMTP = "[email protected]"; Профиль.ПарольSMTP = "Foto2017"; Профиль.АутентификацияSMTP = СпособSMTPАутентификации.Login; Почта = Новый ИнтернетПочта; Письмо = Новый ИнтернетПочтовоеСообщение; Текст = Письмо.Тексты.Добавить("Автоматическая выгрузка"); Текст.ТипТекста = ТипТекстаПочтовогоСообщения.ПростойТекст; Письмо.Тема = "Прайсы для Вадика"; Письмо.Отправитель = "[email protected]"; Письмо.ИмяОтправителя = "Прайсы"; Письмо.Получатели.Добавить("[email protected]"); Письмо.Вложения.Добавить(ИВФ1); Письмо.Вложения.Добавить(ИВФ2); Письмо.Вложения.Добавить(ИВФ3); Попытка Почта.Подключиться(Профиль); Почта.Послать(Письмо); Исключение КонецПопытки; Почта.Отключиться(); |
|||
66
sitex
naïve
23.09.20
✎
15:36
|
(65) хоть бы пароль убрал , а то для Вадика полетит сейчас много чего)))
|
|||
67
Ёпрст
23.09.20
✎
15:38
|
(65) ну вот, спалил контору.
ЗЫ: тому кто пишет такой код с привязкой к кодам в справочнике, в рукти бы нагадить |
|||
68
legggga
23.09.20
✎
15:39
|
упс ступил
|
|||
69
legggga
23.09.20
✎
15:39
|
отредактировать сообщение уже нельзя тут?))
|
|||
70
Ёпрст
23.09.20
✎
15:40
|
(68) ну и посмотри, что за группа номенклатуры с кодом "00000099105"... вот её нет в твоей выгрузке
|
|||
71
Ёпрст
23.09.20
✎
15:40
|
(69) можно, за деньги
|
|||
72
Ёпрст
23.09.20
✎
15:40
|
тут всё можно, но за деньги :)
|
|||
73
legggga
23.09.20
✎
15:42
|
(70) а вот нет такой группы
|
|||
74
Ёпрст
23.09.20
✎
15:43
|
(73) поэтому, смотри (67).
|
|||
75
Deon
23.09.20
✎
15:43
|
Вот вы привязались к этой бедной группе номенклатуры
|
|||
76
legggga
23.09.20
✎
15:45
|
собственно что делать? кина не будет?(
|
|||
77
Deon
23.09.20
✎
15:47
|
(74) Условие НЕ Номенклатура В ИЕРАРХИИ (&Номенклатура) ни на что не влияет, ибо в &Номенклатура пустая ссылка
|
|||
78
Ёпрст
23.09.20
✎
15:48
|
(77) а должна бы..
|
|||
79
Deon
23.09.20
✎
15:48
|
(76) Код в 0 должен, по идее, работать
Пихни в начало обработки: Сообщить(Справочники.Цвета.НайтиПоКоду("000000003")); Посмотрим, находит он этот цвет или нет |
|||
80
Ёпрст
23.09.20
✎
15:48
|
ибо код в справочнике поменяли
|
|||
81
legggga
23.09.20
✎
15:49
|
да нашел тот самый нужный элемент
|
|||
82
Deon
23.09.20
✎
15:50
|
(80) Это уж наверняка. Как и в половине элеменетов в этом "элегантном" коде из (65)
|
|||
83
legggga
23.09.20
✎
15:50
|
Зеленый заказной/неликви
|
|||
84
Deon
23.09.20
✎
15:54
|
(83) И что в итоге выдавал запрос из (0)?
Пустоту или как и раньше, все номенклатуры, включая этот зеленый цвет? |
|||
85
legggga
23.09.20
✎
15:55
|
(84) да все подряд и зеленые и синие)
|
|||
86
legggga
23.09.20
✎
15:56
|
(85) стоп это я выполнил запрос из 52
|
|||
87
legggga
23.09.20
✎
15:57
|
0 тот что в заголовке не работал совсем, это я чего-то туда накаляла собственноручно как-то
|
|||
88
legggga
23.09.20
✎
16:01
|
в порядке бреда выполнил обработку с запросом из 0. выгрузилось еще больше номенклатуры и вместе с зеленой)
|
|||
89
Evgenchik
23.09.20
✎
16:07
|
Ты понимаешь, что чем больше тебе помогают, тем больше денег возьмут потом, чтобы разгрести все косяки?
|
|||
90
legggga
23.09.20
✎
16:10
|
(89) понимаю, однако, пока мне непонятно какие косяки нам удалось разгрести? более того мы не говорим про оптимизацию кода, скорее о дополнительном фильтре в запросе. И с этим пока 0.
|
|||
91
Deon
23.09.20
✎
16:13
|
(90) Кстати, ты уверен, что в справочнике цветов всего одна запись с этим зеленым цветом?
|
|||
92
legggga
23.09.20
✎
16:14
|
(91) да там всего 8-10 элементов
|
|||
93
Deon
23.09.20
✎
16:26
|
(88) А где ты видишь, что там есть зеленая номенклатура? в прайсе где-то рисуется цвет?
|
|||
94
legggga
23.09.20
✎
16:28
|
(93) то что она зеленая я вижу в подборе (он переписан и строчка с такой номенклатурой выделена зеленым)
вот справочник цвета https://skr.sh/s4I3Ev1Z6St |
|||
95
legggga
23.09.20
✎
16:33
|
ну и собственно в выгрузке я вижу в файле товар который зеленый в подборе
|
|||
96
Deon
23.09.20
✎
16:36
|
(95) Странно. Этого не может быть, потому что этого быть не может.
Ну, попробуй убрать НЕ. Давай проверим, попадут ли в прайс только зеленые товары: И Номенклатура.Цвет = &Цвет |
|||
97
legggga
23.09.20
✎
16:42
|
(96) в таком раскладе выгрузилось совсем мало товара, буквально 1 страница, реально зеленого товара в десятки раз больше и этот что выгрузился весь поголовно зеленый!
|
|||
98
legggga
23.09.20
✎
16:43
|
как будто по какому-то принципу не весь попадает
|
|||
99
Deon
23.09.20
✎
16:46
|
(98) Вывод - зеленый товар бывает ещё по какому-то другому условию, кроме как Номенклатура.Цвет.
Если открыть карточку номенклатуры, которая зеленая но не попала в (97) У неё там справа снизу тоже выбран цвет 000000003? |
|||
100
legggga
23.09.20
✎
16:48
|
(99) именно! сразу несколько проверил
|
|||
101
legggga
23.09.20
✎
16:48
|
(100) по поводу условия не знаю, могу сказать что если убрать цвет строчка становится черной, возвращаешь становится зеленой
|
|||
102
legggga
23.09.20
✎
16:57
|
вынужден прерваться, убегаю, если завтра еще будут желающие продолжим, всем спасибо
|
|||
103
delgadoo
23.09.20
✎
18:48
|
(102) постучись в email. подключусь - помогу.
|
|||
104
СвинТуз
23.09.20
✎
19:48
|
Если он не умрет от короновируса его можно повесить, как Мусолини за ноги. За растрату ресурсов компьютера.
Шутка. Барбамбия киргуду. Запрос интересный. НоменклатурнаяГруппа это не всегда папочка в справочнике "Номенклатура". |
|||
105
СергТ
24.09.20
✎
09:20
|
Только присоединился. Читаю в (0): "не попадала номенклатура, у которой в подчиненном справочнике Цвета был выбран определенный цвет"
А в запросе вижу "И НЕ Номенклатура.Цвет = &Цвет" Диссонанс. Этим условием отсекаются ТОЛЬКО товары, у которых реквизит Цвет (в справочнике Номенклатура) установлен равным &Цвет. Если я правильно понял, то требуется отсечь не такие товары, а такие, у которых, среди прочих, есть и &Цвет в подчинённом справочнике Цвета. Для этого нужно получить номенклатуру, у которой это условие выполняется, а уже потом основной запрос отсортировать по этому списку. Запрос писать не буду, времени нет, напишут другие ( ;))) ) Виртуальная таблица 1: Выбрать СпрЦвета.Владелец КАК Номенклатура Поместить НужнаяНоменклатура Из Справочник.Цвета КАК СпрЦвета Где Справочник.Цвет=&Цвет //(здесь же можно добавить и все остальные фильтры по номенклатуру для оптимальности (Иерархия, номенклатурная группа, пометка удаления...) Индексировать По Номенклатура Запрос: Выбрать НужнаяНоменклатура.Номенклатура, РегОст.Остаток.... Из РегОст...(Склад В Склад... Номенклатура в Выбрать НужнаяНоменклатура.Номенклатура Из НужнаяНоменклатура КАК НужнаяНоменклатура.... Как-то так. Без подробностей )) |
|||
106
Deon
24.09.20
✎
09:25
|
(105) Там где-то в середине выяснили, что справочник Цвета не подчинен Номенклатуре
|
|||
107
СергТ
24.09.20
✎
09:35
|
(106) Ы :D
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |