|   |   | 
| 
 | Помогите написать запрос пжл. Чтоб получить номенклатуру | ☑ | ||
|---|---|---|---|---|
| 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(ОбластьМакета, ВидСчетаФактуры,Металл=Ложь) Если Металл Тогда ОбластьМакета.Параметры.СтавкаНДС = "НДС исчисляется налоговым агентом"; ИначеЕсли Не Металл И ОбластьМакета.Параметры.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС Тогда ОбластьМакета.Параметры.СтавкаНДС = "без НДС"; ОбластьМакета.Параметры.СуммаНДС = "без НДС"; КонецЕсли; | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |