|
Помогите написать запрос пжл. Чтоб получить номенклатуру | ☑ | ||
---|---|---|---|---|
0
Айрат_116
17.07.19
✎
16:07
|
Помогите пжл как написать запрос чтоб получить так
Если документе реализация в табл части "Товары" Стоит номенклатура "Металлолом" Тогда Тогда брать значение - 1 Если нет тогда значение -2 |
|||
1
piter3
17.07.19
✎
16:08
|
выбор когда метал тогда -1 иначе -2 конец
|
|||
2
Айрат_116
17.07.19
✎
16:08
|
Металлалом = Справочники.Номенклатура.НайтиПоКоду("00009724");
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура |ИЗ | Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары |ГДЕ | РеализацияТоваровУслугТовары.Номенклатура = &Номенклатура"; Запрос.УстановитьПараметр("Номенклатура",Металлалом); Металл = Ложь; РезультатЗапроса = Запрос.Выполнить(); Выборка = РезультатЗапроса.Выбрать(); Пока Выборка.Следующий() Цикл Если Выборка.Номенклатура.ПринадлежитЭлементу(Металлалом) Тогда Металл = Истина; Иначе Продолжить; КонецЕсли; КонецЦикла; Если Металл = Истина Тогда Помогите пжл как написать |
|||
3
Айрат_116
17.07.19
✎
16:09
|
Без запроса было так
Металлалом = Справочники.Номенклатура.НайтиПоКоду("00009724"); Металл = Ложь; СФ = МассивОбъектов[0]; Если ТипЗнч(СФ) = Тип("ДокументСсылка.РеализацияТоваровУслуг") Тогда Для Каждого стрТЗ Из СФ.Товары Цикл Если стрТЗ.Номенклатура.ПринадлежитЭлементу(Металлалом) Тогда Металл = Истина; КонецЕсли; КонецЦикла; КонецЕсли; Если Металл Тогда |
|||
4
VS-1976
17.07.19
✎
16:11
|
(1) Конец тебе с -1 и -2 :)
|
|||
5
VS-1976
17.07.19
✎
16:12
|
(3) Тебе нужно узнать есть ли номенклатура металл в реализации?
|
|||
6
piter3
17.07.19
✎
16:13
|
(4) А чего))
|
|||
7
Айрат_116
17.07.19
✎
16:13
|
(5) Да.
|
|||
8
Айрат_116
17.07.19
✎
16:14
|
Если металл есть я ставлю одно значение для печати
Если нет то другое |
|||
9
VS-1976
17.07.19
✎
16:17
|
(7) Выдаёт те реализации, где есть металл в табличной части.
Подавать массив реализаций в СписокДокументов и Номенклатура = Справочники.Номенклатура.НайтиПоКоду("00009724"); ВЫБРАТЬ РАЗЛИЧНЫЕ РеализацияТоваровУслугТовары.Ссылка КАК Документ ИЗ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары ГДЕ РеализацияТоваровУслугТовары.Ссылка В ( &СписокДокументов ) И РеализацияТоваровУслугТовары.Номенклатура = &Номенклатура |
|||
10
Айрат_116
17.07.19
✎
16:20
|
(9) Можно вопрос. почему Различные нужно?
|
|||
11
VS-1976
17.07.19
✎
16:20
|
Если нужно знать есть или нет для списка без его урезания, то:
ВЫБРАТЬ РеализацияТоваровУслугТовары.Ссылка КАК Документ, МАКСИМУМ( ВЫБОР КОГДА РеализацияТоваровУслугТовары.Номенклатура = &Номенклатура ТОГДА Истина ИНАЧЕ Ложь КОНЕЦ ) КАК ЕстьЛиМеталлалом ИЗ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары ГДЕ РеализацияТоваровУслугТовары.Ссылка В ( &СписокДокументов ) СГРУППИРОВАТЬ ПО РеализацияТоваровУслугТовары.Ссылка |
|||
12
VS-1976
17.07.19
✎
16:21
|
(10) У тебя в таблице к примеру 10 номенклатур, тебе же не нужно 10 одних и тех же документов в выдаче, а только 1
|
|||
13
Айрат_116
17.07.19
✎
16:30
|
(12) Что то я вообще туплю( Но могу понять в итоге. Какие документы должны быть указаны в Параметре &СписокДокументов?
|
|||
14
VS-1976
17.07.19
✎
16:33
|
(13) Хоть 1 реализация или несколько в массиве...
СФ = МассивОбъектов[0]; Если ТипЗнч(СФ) = Тип("ДокументСсылка.РеализацияТоваровУслуг") Тогда Из кода видно что в списке может быть несколько документов |
|||
15
IOANNscrp
17.07.19
✎
16:33
|
(13) Запрос.УстановитьПараметр("СписокДокументов",МассивОбъектов);
|
|||
16
novichok79
17.07.19
✎
16:34
|
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1 | Т.Номенклатура КАК Номенклатура |ИЗ | Документ.РеализацияТоваровУслуг.Товары КАК Т |ГДЕ | Т.Номенклатура = &Номенклатура"; Запрос.УстановитьПараметр("Номенклатура", Митол); МитолЖивЁПТА = Не Запрос.Выполнить().Пустой(); МитолЖивЁПТА = Выборка.Следующий(); |
|||
17
novichok79
17.07.19
✎
16:34
|
последнюю строчку по ошибке вставил
|
|||
18
VS-1976
17.07.19
✎
16:36
|
(17) У тебя весь запрос овно, копипаст это зло :), если реализаций 1000?
|
|||
19
Айрат_116
17.07.19
✎
16:40
|
(18) Я щас в другой функции пишу где нет МассивОбьектов
|
|||
20
Айрат_116
17.07.19
✎
16:41
|
Щас вот Функция ПечатьТОРГ12(СведенияТОРГ12, ОбъектыПечати, ПараметрыПечати) Экспорт
|
|||
21
Айрат_116
17.07.19
✎
16:42
|
Когда поставил Запрос.УстановитьПараметр("СписокДокументов",МассивОбъектов); ошибка переменная не определена
|
|||
22
IOANNscrp
17.07.19
✎
16:46
|
(21) конечно не определена),
ОбъектыПечати ПараметрыПечати где-то в этих параметрах должен находится либо массив переданных документов(ссылка) или ссылка |
|||
23
VS-1976
17.07.19
✎
16:47
|
(20) Гуманитарная помощь начинающему детектед:
Если для 1 реализации в ПечатьТОРГ12 ( естественно когда документ записан, а он явно записан перед ПечатьТОРГ12 ) тогда так: оЗапрос = Новый Запрос( "ВЫБРАТЬ ПЕРВЫЕ 1 | Истина |ИЗ | Документ.РеализацияТоваровУслуг.Товары |ГДЕ | Ссылка = &Документ | И Номенклатура = &Номенклатура" ); оЗапрос.УстановитьПараметр( "Документ", Ссылка ); оЗапрос.УстановитьПараметр( "Номенклатура", Справочники.Номенклатура.НайтиПоКоду("00009724") ); // Металлалом Если Не оЗапрос.Выполнить().Пустой() Тогда // Действия когда металлалом присутствует КонецЕсли; |
|||
24
novichok79
17.07.19
✎
16:48
|
(18) я думаю ТС догадается воткнуть фильтр по ссылке. если реализаций > 1000, то интерфейс станет менее отзывчивым.
|
|||
25
VS-1976
17.07.19
✎
16:52
|
(24) Да там вообще когда 1000 и есть по любому в одной из реализаций металлалом, то ответ запроса будет всегда положительным. Так что соптимизировав можно тупо твой запрос вообще не делать :)
|
|||
26
Айрат_116
17.07.19
✎
16:54
|
(23) Первый шаг такой?) "ВЫБРАТЬ ПЕРВЫЕ 1
| ИСТИНА КАК Поле1 |ИЗ | Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары |ГДЕ | РеализацияТоваровУслугТовары.Ссылка = &Документ | И РеализацияТоваровУслугТовары.Номенклатура = &Номенклатура"; Запрос.УстановитьПараметр("Документ",Документы.РеализацияТоваровУслуг); Запрос.УстановитьПараметр("Номенклатура",Справочники.Номенклатура.НайтиПоКоду("00009724")); |
|||
27
novichok79
17.07.19
✎
16:55
|
(25) а чего его оптимизировать, запрос-то простейший.
|
|||
28
VS-1976
17.07.19
✎
16:56
|
(27) Я про то что он всегда будет выдавать Истина в твоём коде
|
|||
29
VS-1976
17.07.19
✎
16:57
|
(26) Запрос.УстановитьПараметр("Документ",Документы.РеализацияТоваровУслуг);
вместо Документы.РеализацияТоваровУслуг нужна ссылка на объект РеализацияТоваровУслуг |
|||
30
Айрат_116
17.07.19
✎
16:59
|
Второй шаг Запрос.УстановитьПараметр("Документ", "Ссылку поставлю");
Запрос.УстановитьПараметр("Номенклатура",Справочники.Номенклатура.НайтиПоКоду("00009724")); Если Не Запрос.Выполнить().Пустой() Тогда ПараметрыСтроки.Вставить("СтавкаНДС", "НДС исчисляется налоговым агентом"); КонецЕсли; |
|||
31
Айрат_116
17.07.19
✎
17:08
|
Вот так сделал Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1 | ИСТИНА КАК Поле1 |ИЗ | Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары |ГДЕ | РеализацияТоваровУслугТовары.Ссылка = &Документ | И РеализацияТоваровУслугТовары.Номенклатура = &Номенклатура"; Запрос.УстановитьПараметр("Документ", e1cib/list/Документ.РеализацияТоваровУслуг); Запрос.УстановитьПараметр("Номенклатура",Справочники.Номенклатура.НайтиПоКоду("00009724")); Если Не Запрос.Выполнить().Пустой() Тогда ПараметрыСтроки.Вставить("СтавкаНДС", "НДС исчисляется налоговым агентом"); КонецЕсли; |
|||
32
IOANNscrp
17.07.19
✎
17:09
|
(31) держи в курсе)
|
|||
33
Айрат_116
17.07.19
✎
17:10
|
(32) Хорошо=)
|
|||
34
Айрат_116
17.07.19
✎
17:13
|
(32) Не получается найти ссылку на документ реализация
|
|||
35
Айрат_116
17.07.19
✎
17:14
|
Сервис-ПолучитьСсылку так попробывал
|
|||
36
VS-1976
17.07.19
✎
17:15
|
(34) Ты делаешь ведь в функции ПечатьТОРГ12? Для УТ 10, так? Если да то ссылака на документ и есть Ссылка, функция в модуле объекта лежат.
|
|||
37
IOANNscrp
17.07.19
✎
17:16
|
(34) точку остановы в начале Функция ПечатьТОРГ12
затем посмотреть, где из переданных параметров в функцию находится ссылка. Возможно ОбъектыПечати.ссылка или ПараметрыПечати.ссылка, а может это массив |
|||
38
Айрат_116
17.07.19
✎
17:21
|
(37) Хорошо, щас посмотрю
|
|||
39
Айрат_116
17.07.19
✎
17:22
|
(36) В модуле обьекта документа самого?
|
|||
40
VS-1976
17.07.19
✎
17:23
|
(39) Ну да. Сообщи что у тебя за конфигурация и где ты этот код хочешь приделать, в какой процедуре?
|
|||
41
Айрат_116
17.07.19
✎
17:24
|
(40) Бухгалтерия предприятия, редакция 3.0 (3.0.69.35) (http://v8.1c.ru/buhv8/)
Copyright (С) ООО "1C-Софт", 2009 - 2019. Все права защищены (http://www.1c.ru) |
|||
42
Айрат_116
17.07.19
✎
17:25
|
1С:Предприятие 8.3 (8.3.13.1644)
|
|||
43
VS-1976
17.07.19
✎
17:25
|
(41) Тогда у тебя УФ и куда ты прикручиваешь код, в какую процедуру / функцию?
|
|||
44
Айрат_116
17.07.19
✎
17:26
|
(40) ОбщийМодуль ПечатьТорговыхДокументов
|
|||
45
Айрат_116
17.07.19
✎
17:26
|
(43) Функция ПечатьТОРГ12(СведенияТОРГ12, ОбъектыПечати, ПараметрыПечати) Экспорт
|
|||
46
IOANNscrp
17.07.19
✎
17:27
|
(45) смотрите содержимое параметорв ОбъектыПечати, ПараметрыПечати
|
|||
47
Айрат_116
17.07.19
✎
17:32
|
(46) Смотрю. что то найти не могу
|
|||
48
VS-1976
17.07.19
✎
17:33
|
(45) СведенияТОРГ12[0].Документ
Так как может быть групповая печать, то тут в таблице СведенияТОРГ12 может быть несколько документов... |
|||
49
Айрат_116
17.07.19
✎
17:35
|
(48) Это в параметр запроса передавать?
СведенияТОРГ12[0].Документ |
|||
50
VS-1976
17.07.19
✎
17:40
|
(49) Запрос.УстановитьПараметр("Документ", СведенияТОРГ12[0].Документ );
Это будет корректно работать только если печать 1 документа, потом "подрастёшь" в скиле подправишь... |
|||
51
IOANNscrp
17.07.19
✎
17:40
|
(48) тэлипат
|
|||
52
Айрат_116
17.07.19
✎
17:42
|
(50) Он в условие не заходит
Если Не Запрос.Выполнить().Пустой() Тогда ПараметрыСтроки.Вставить("СтавкаНДС", "НДС исчисляется налоговым агентом"); КонецЕсли; |
|||
53
VS-1976
17.07.19
✎
17:44
|
(52) (31) Как же не заходит, ты же правишь эту процедуру в общем модуле
Функция ПечатьТОРГ12(СведенияТОРГ12, ОбъектыПечати, ПараметрыПечати) Экспорт Так? |
|||
54
Айрат_116
17.07.19
✎
17:45
|
Да
|
|||
55
Айрат_116
17.07.19
✎
17:45
|
СведенияТОРГ12[0].Документ документ нашел реализ
|
|||
56
Айрат_116
17.07.19
✎
17:45
|
Может там надо указать табл часть?
|
|||
57
Айрат_116
17.07.19
✎
17:46
|
Где и лежит номенклатура
|
|||
58
VS-1976
17.07.19
✎
17:46
|
(54) Ну всё тогда заходит, там лежит ссылка на документ. Дебажить умеешь? Поставь точку остановки и проверь что в лежит в СведенияТОРГ12
|
|||
59
Айрат_116
17.07.19
✎
17:48
|
(58) Там ляжит тот самый документ Реализация - где есть метал
|
|||
60
Айрат_116
17.07.19
✎
17:50
|
(58) По условию же должно быть если метал тогда "НДС исчисляется налоговым агентом"
Если не метал тогда что то другое |
|||
61
Айрат_116
17.07.19
✎
17:52
|
||||
62
IOANNscrp
17.07.19
✎
17:53
|
(60) если это группа, а не элемент, тогда
| И РеализацияТоваровУслугТовары.Номенклатура В ИЕРАРХИИ (&Номенклатура)" |
|||
63
VS-1976
17.07.19
✎
17:53
|
(59) Там лежит ссылка на печатаемый документ. А остальное проверять есть ли там металл или нет это твоё дело уже...
Может там же найти СведенияТОРГ12[0].ТаблицаДокумента Это табличная часть реализации и там уже поискать кодом без запроса если ли в ней металл... |
|||
64
IOANNscrp
17.07.19
✎
17:54
|
(63) да там группа передается параметром
|
|||
65
VS-1976
17.07.19
✎
17:54
|
(61) Ну да, что-то похожее на правду
|
|||
66
VS-1976
17.07.19
✎
17:56
|
(64) Группа передаётся в таблице СведенияТОРГ12, а не в СведенияТОРГ12[0] это конкретные данные на реализацию
|
|||
67
IOANNscrp
17.07.19
✎
17:57
|
(66) в запросе параметр передается группа при условии номенклатура = группа(металлолом)
|
|||
68
VS-1976
17.07.19
✎
17:58
|
(67) Я уже понял не посмотрел. Если это группа тогда да как в (62)
|
|||
69
Айрат_116
17.07.19
✎
17:59
|
Щас попробую И РеализацияТоваровУслугТовары.Номенклатура В ИЕРАРХИИ (&Номенклатура)" вот так
|
|||
70
Айрат_116
17.07.19
✎
18:00
|
СведенияТОРГ12[0].Документ оставлять?
|
|||
71
Айрат_116
17.07.19
✎
18:00
|
Или заменить на СведенияТОРГ12[0].ТаблицаДокумента
|
|||
72
VS-1976
17.07.19
✎
18:00
|
(70) Конечно. (69) Да
|
|||
73
VS-1976
17.07.19
✎
18:01
|
(71) Нет
|
|||
74
Айрат_116
17.07.19
✎
18:01
|
(72) Понял. Щас попробую
|
|||
75
Айрат_116
17.07.19
✎
18:09
|
(73) (67) Спасибо вам большое получилось=)
|
|||
76
Айрат_116
17.07.19
✎
18:17
|
Только у меня теперь в печ форме "счет фактуры" слетела почему такой отбор
Там уже есть параметр МассивОбьектов Металлалом = Справочники.Номенклатура.НайтиПоКоду("00009724"); Металл = Ложь; СФ = МассивОбъектов[0]; Если ТипЗнч(СФ) = Тип("ДокументСсылка.СчетФактураВыданный") Тогда Если СФ.ДокументыОснования.Количество() > 0 Тогда ДокОсн = СФ.ДокументыОснования[0].ДокументОснование; Для Каждого стрТЗ Из ДокОсн.Товары Цикл Если стрТЗ.Номенклатура.ПринадлежитЭлементу(Металлалом) Тогда Металл = Истина; КонецЕсли; КонецЦикла; КонецЕсли; КонецЕсли; Но где проверяется условие до этой процедуры она доходит значением ЛОЖЬ Процедура ДозаполнитьСтрокуСчетаФактуры1137(ОбластьМакета, ВидСчетаФактуры,Металл=Ложь) Если Металл Тогда ОбластьМакета.Параметры.СтавкаНДС = "НДС исчисляется налоговым агентом"; ИначеЕсли Не Металл И ОбластьМакета.Параметры.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС Тогда ОбластьМакета.Параметры.СтавкаНДС = "без НДС"; ОбластьМакета.Параметры.СуммаНДС = "без НДС"; КонецЕсли; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |