|
Запрос не отрабатывает Остаток Почему? | ☑ | ||
---|---|---|---|---|
0
nickname1c
05.11.14
✎
14:32
|
ВЫБРАТЬ
РасходнаяСписокНоменклатуры.Номенклатура КАК Номенклатура, СУММА(РасходнаяСписокНоменклатуры.Количество) КАК Количество, СУММА(РасходнаяСписокНоменклатуры.Сумма) КАК Сумма, РасходнаяСписокНоменклатуры.Номенклатура.Услуга КАК Услуга ПОМЕСТИТЬ ТЧ ИЗ Документ.Расходная.СписокНоменклатуры КАК РасходнаяСписокНоменклатуры ГДЕ РасходнаяСписокНоменклатуры.Ссылка = &Ссылка СГРУППИРОВАТЬ ПО РасходнаяСписокНоменклатуры.Номенклатура.Услуга, РасходнаяСписокНоменклатуры.Номенклатура ИНДЕКСИРОВАТЬ ПО Номенклатура ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ТЧ.Количество КАК Количество, ТЧ.Сумма КАК Сумма, ОстаткиОстатки.Партия КАК Партия, ВЫБОР КОГДА ОстаткиОстатки.Партия = &Партия ТОГДА 0 ИНАЧЕ 1 КОНЕЦ КАК Порядок, ЕСТЬNULL(ОстаткиОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток, ЕСТЬNULL(ОстаткиОстатки.СуммаОстаток, 0) КАК СтоимостьОстаток, ТЧ.Номенклатура КАК Номенклатура1, ТЧ.Услуга ИЗ ТЧ КАК ТЧ ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Остатки.Остатки( &МоментВремени, Номенклатура В (ВЫБРАТЬ РасходнаяСписокНоменклатуры.Номенклатура ИЗ Документ.Расходная.СписокНоменклатуры КАК РасходнаяСписокНоменклатуры)) КАК ОстаткиОстатки ПО ТЧ.Номенклатура = ОстаткиОстатки.Номенклатура УПОРЯДОЧИТЬ ПО Порядок, ОстаткиОстатки.Партия.МоментВремени |
|||
1
Ненавижу 1С
гуру
05.11.14
✎
14:34
|
что есть "не отрабатывает"?
|
|||
2
nickname1c
05.11.14
✎
14:35
|
ЕСТЬNULL(ОстаткиОстатки.КоличествоОстаток, 0)
КАК КоличествоОстаток, видно что он(остатко) есть, но почему то он его выводит нулевым |
|||
3
nickname1c
05.11.14
✎
14:35
|
Ненавижу 1С нулевым выводит
|
|||
4
Ненавижу 1С
гуру
05.11.14
✎
14:36
|
(2) если "видно", что он есть, то что значит "нулевым выводит"?
|
|||
5
nickname1c
05.11.14
✎
14:38
|
(4) Зачем придираться если ты понял о чем я?
Нулевым...значит что количествоОстаток=0 хотя оно 0 не = |
|||
6
Галахад
гуру
05.11.14
✎
14:40
|
Наверное, "Расходная" это не регистратор РН "Остатки".
|
|||
7
Maxus43
05.11.14
✎
14:40
|
Это вот -
Номенклатура В (ВЫБРАТЬ РасходнаяСписокНоменклатуры.Номенклатура...... убрать нафиг, просто соединяй по номенклатуре. Что в параметре МоментВремени? |
|||
8
nickname1c
05.11.14
✎
14:41
|
Что в параметре МоментВремени? Дата
Это вот - Номенклатура В (ВЫБРАТЬ РасходнаяСписокНоменклатуры.Номенклатура...... убирал но толку не было |
|||
9
Maxus43
05.11.14
✎
14:42
|
(8) я к тому что на эту дату возможно остатка нет
|
|||
10
nickname1c
05.11.14
✎
14:42
|
(6) Нет, вы ошибаетесь)
|
|||
11
Maxus43
05.11.14
✎
14:42
|
насчет убрать - просто лишний этот кусок запроса
|
|||
12
nickname1c
05.11.14
✎
14:43
|
Maxus43 (9) Есть, точно
|
|||
13
vicof
05.11.14
✎
14:44
|
(12) Ну а ты попробуй поменять, или вообще убрать дату из запроса
|
|||
14
Maxus43
05.11.14
✎
14:44
|
(12) чудес не бывает, остатка либо нет, либо номенклатуры этой в ВТ нет
|
|||
15
nickname1c
05.11.14
✎
14:45
|
насчет убрать - просто лишний этот кусок запроса
Не подскажешь что он вообще делает? во всех примерах такие условия используют... как по мне то этот кусок кода особой смысловой нагрузки не несет |
|||
16
Maxus43
05.11.14
✎
14:45
|
не забываем что у вирт таблицы остатки &дата не включается в результат, смотрится ДО неё
|
|||
17
vicof
05.11.14
✎
14:46
|
(15) несет
|
|||
18
Maxus43
05.11.14
✎
14:46
|
(15) в данном примере он не несёт нагрузки никакой, у тебя соединение заменяет этот кусок запроса
|
|||
19
nickname1c
05.11.14
✎
14:46
|
Ну вот и я об этом
|
|||
20
vicof
05.11.14
✎
14:47
|
(18) Сначала будут отобраны остатки, а потом будет сделано соединение, так что несет
|
|||
21
Галахад
гуру
05.11.14
✎
14:48
|
(18) Несет. В запросе, почему-то номенклатура всех регистраторов.
|
|||
22
Maxus43
05.11.14
✎
14:48
|
(20) это лирика. Результат не изменится. В данной случае лишнее
|
|||
23
Maxus43
05.11.14
✎
14:49
|
(21) при чем тут регистраторы вобще? Остатки и есть остатки, к регистраторам отношения не имеют
|
|||
24
vicof
05.11.14
✎
14:49
|
(21) Я тож не понял
|
|||
25
Крошка Ру
05.11.14
✎
14:49
|
(19) А документ(который &Сcылка) проведен?
(22) Немного время выполнения экономится |
|||
26
Крошка Ру
05.11.14
✎
14:50
|
+(25) А, да, там из ТЧ выборку нужно делать, а не по всем накладным
|
|||
27
Maxus43
05.11.14
✎
14:51
|
(25) зависит от многих факторов, не всегда предварительный отбор быстрее. Ну это опять же лирика, имхо тут этим можно пренебречь
|
|||
28
nickname1c
05.11.14
✎
14:51
|
Процедура ОбработкаПроведения(Отказ, Режим)
МетодСписания = РегистрыСведений.УчетСебестоимости.ПолучитьПоследнее(Дата).ВидСписания; Если МетодСписания = Перечисления.ВидСписанияСебестоимости.ФИФО Тогда ПорядокПартий = "ВОЗР"; ИначеЕсли МетодСписания = Перечисления.ВидСписанияСебестоимости.ЛИФО Тогда ПорядокПартий = "УБЫВ"; КонецЕсли; Движения.ТоварыНаСкладах.Записывать = Истина; Движения.Продажи.Записывать = Истина; Движения.ТоварыНаСкладах.Записать(); Движения.Продажи.Записать(); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | РасходнаяНакладнаяНоменклатура.ТоварУслуга.Услуга, | РасходнаяНакладнаяНоменклатура.ТоварУслуга КАК ТоварУслуга, | СУММА(РасходнаяНакладнаяНоменклатура.Количество) КАК Количество, | СУММА(РасходнаяНакладнаяНоменклатура.Сумма) КАК Сумма |ПОМЕСТИТЬ РасходнаяНакладная |ИЗ | Документ.РасходнаяНакладная.Номенклатура КАК РасходнаяНакладнаяНоменклатура |ГДЕ | РасходнаяНакладнаяНоменклатура.Ссылка = &Ссылка | |СГРУППИРОВАТЬ ПО | РасходнаяНакладнаяНоменклатура.ТоварУслуга.Услуга, | РасходнаяНакладнаяНоменклатура.ТоварУслуга | |ИНДЕКСИРОВАТЬ ПО | ТоварУслуга |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | РасходнаяНакладная.ТоварУслуга КАК Номенклатура, | РасходнаяНакладная.ТоварУслугаУслуга КАК Услуга, | РасходнаяНакладная.Количество КАК Количество, | РасходнаяНакладная.Сумма КАК Сумма, | ТоварыНаСкладахОстатки.Партия КАК Партия, | ВЫБОР | КОГДА ТоварыНаСкладахОстатки.Партия = &Партия | ТОГДА 0 | ИНАЧЕ 1 | КОНЕЦ КАК Порядок, | ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток, | ЕСТЬNULL(ТоварыНаСкладахОстатки.СуммаОстаток, 0) КАК СтоимостьОстаток |ИЗ | РасходнаяНакладная КАК РасходнаяНакладная | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки( | &МоментВремени, | Номенклатура В | (ВЫБРАТЬ | РасходнаяНакладнаяНоменклатура.ТоварУслуга | ИЗ | Документ.РасходнаяНакладная.Номенклатура КАК РасходнаяНакладнаяНоменклатура)) КАК ТоварыНаСкладахОстатки | ПО (ТоварыНаСкладахОстатки.Номенклатура = РасходнаяНакладная.ТоварУслуга) | |УПОРЯДОЧИТЬ ПО | Порядок, | ТоварыНаСкладахОстатки.Партия.МоментВремени " + ПорядокПартий +" |ИТОГИ | МАКСИМУМ(Услуга), | МАКСИМУМ(Количество), | МАКСИМУМ(Сумма), | СУММА(КоличествоОстаток) |ПО | Номенклатура"; Запрос.УстановитьПараметр("МоментВремени", МоментВремени()); Запрос.УстановитьПараметр("Ссылка", Ссылка); Запрос.УстановитьПараметр("Партия", Партия); РезультатЗапроса = Запрос.Выполнить(); ВыборкаНоменклатура = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); СуммаПродаж = 0; Пока ВыборкаНоменклатура.Следующий() Цикл Если ВыборкаНоменклатура.Количество > ВыборкаНоменклатура.КоличествоОстаток И ВыборкаНоменклатура.Номенклатура.Услуга = ЛОЖЬ Тогда Отказ = Истина; Сообщение = Новый СообщениеПользователю; Сообщение.Текст = "По номенклатуре " + ВыборкаНоменклатура.Номенклатура + " осталось только " + ВыборкаНоменклатура.КоличествоОстаток + ". Не хватает " + (ВыборкаНоменклатура.Количество - ВыборкаНоменклатура.КоличествоОстаток) + " штук."; Сообщение.Сообщить(); КонецЕсли; Если Отказ Тогда Продолжить; КонецЕсли; ВыборкаДетальныеЗаписи = ВыборкаНоменклатура.Выбрать(); ОсталосьСписать = ВыборкаНоменклатура.Количество; Пока ОсталосьСписать >0 И ВыборкаДетальныеЗаписи.Следующий() Цикл Если ВыборкаДетальныеЗаписи.КоличествоОстаток = 0 Тогда Продолжить; КонецЕсли; КоличествоСписания = МИН(ОсталосьСписать, ВыборкаДетальныеЗаписи.КоличествоОстаток); Если ВыборкаНоменклатура.Номенклатура.Услуга = ИСТИНА Тогда СуммаСписания = 0; ИначеЕсли ВыборкаДетальныеЗаписи.КоличествоОстаток > ОсталосьСписать Тогда СуммаСписания = ОсталосьСписать * ВыборкаДетальныеЗаписи.СтоимостьОстаток / ВыборкаДетальныеЗаписи.КоличествоОстаток; Иначе СуммаСписания = ВыборкаДетальныеЗаписи.СтоимостьОстаток; КонецЕсли; // регистр ТоварыНаСкладах Движение = Движения.ТоварыНаСкладах.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Расход; Движение.Период = Дата; Движение.Номенклатура = ВыборкаНоменклатура.Номенклатура; Движение.Партия = ВыборкаДетальныеЗаписи.Партия; Движение.Количество = КоличествоСписания; Движение.Сумма = СуммаСписания; ОсталосьСписать = ОсталосьСписать - КоличествоСписания; //СуммаПродаж = СуммаПродаж + Движение.Сумма; КонецЦикла; // регистр Продажи Движения.Продажи.Записывать = Истина; Движение = Движения.Продажи.Добавить(); Движение.Период = Дата; Движение.Номенклатура = ВыборкаНоменклатура.Номенклатура; Движение.Количество = ВыборкаНоменклатура.Количество; //Движение.Себестоимость = СуммаПродаж; удален ресурс себестоимость Движение.Выручка = ВыборкаНоменклатура.Сумма; КонецЦикла; КонецПроцедуры |
|||
29
nickname1c
05.11.14
✎
14:52
|
Запрос отработал правильно, но при проведении расходной не видит остатков, дата прихода раньше чем расхода.
|
|||
30
vicof
05.11.14
✎
14:52
|
Запрос.УстановитьПараметр("МоментВремени", МоментВремени());
Замени на границу |
|||
31
nickname1c
05.11.14
✎
14:55
|
(30) Какие параметры у границы?
|
|||
32
vicof
05.11.14
✎
14:55
|
загляни уж синтакс-помощник. Код украл, так хоть СП поюзай.
|
|||
33
nickname1c
05.11.14
✎
14:56
|
(32) Код по примеру делал, не крал....по другому как же научится)
|
|||
34
Галахад
гуру
05.11.14
✎
14:57
|
Это чего? Из статьи о новой методики проверки остатков?
|
|||
35
Maxus43
05.11.14
✎
14:58
|
нафига там
Движения.ТоварыНаСкладах.Записывать = Истина; Движения.Продажи.Записывать = Истина; Движения.ТоварыНаСкладах.Записать(); Движения.Продажи.Записать(); ? |
|||
36
nickname1c
05.11.14
✎
14:59
|
Ошибка при выполнении обработчика - 'ОбработкаПроведения'
по причине: {Документ.Расходная.МодульОбъекта(81)}: Ошибка при вызове метода контекста (Выполнить) по причине: {(36, 20)}: Ошибка обработки представления "РегистрНакопления.Остатки.Остатки:Несоответствие типов (Параметр номер ""1"")" ЛЕВОЕ СОЕДИНЕНИЕ <<?>>РегистрНакопления.Остатки.Остатки( |
|||
37
nickname1c
05.11.14
✎
14:59
|
Maxus43 я в 1с месяц с хвостом, не суди уж строго
|
|||
38
vicof
05.11.14
✎
15:06
|
(37) Может быть сначала на Профессионала сдать и падаваном поработать, а потом на спеца готовиться?
|
|||
39
nickname1c
05.11.14
✎
15:13
|
(38) я как бы и работаю подаваном
|
|||
40
Maxus43
05.11.14
✎
15:13
|
||||
41
floody
05.11.14
✎
15:17
|
в запросе какая-то бредятина.. по какому примеру это было сделано? даже переписать не мог нормально?
|
|||
42
nickname1c
05.11.14
✎
15:20
|
(41) По тому который был
|
|||
43
floody
05.11.14
✎
15:21
|
1)левое соединение с ВТ - плохо
2)в условии ВТ заменить: Номенклатура В (ВЫБРАТЬ Т.Номенклатура ИЗ ТЧ КАК Т) |
|||
44
floody
05.11.14
✎
15:21
|
(43) но сути это конечно не поменяет, это я так, придираюсь
|
|||
45
Maxus43
05.11.14
✎
15:22
|
не надо вобще никаких соединений, переписать по нормальному примеру всё
|
|||
46
nickname1c
05.11.14
✎
15:35
|
Что удивляет так это то что примеры работают у меня точ в точ и нет
|
|||
47
vicof
05.11.14
✎
15:36
|
(46) Еще русский подучить, и научиться мысли выражать - будешь золотым падаваном.
|
|||
48
Maxus43
05.11.14
✎
15:43
|
(46) у тебя не "точ в точ"
|
|||
49
nickname1c
05.11.14
✎
15:59
|
"(46) Еще русский подучить, и научиться мысли выражать - будешь золотым падаваном." это мышь блин скачет, слова переставляет,
насчет русского точ в точ, это просто разговорное выражение, не стоит придираться. Я хотел сказать что у меня точно также, как и в примере все, но не работало. Теперь все нормально, после того как я просто скопировал и вставил мой, сюда присланный, код. И перезагрузил 1с, без понятия почему. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |