Имя: Пароль:
1C
1C 7.7
v7: Запрос с поиском по строке в табличной части
0 picom
 
21.07.17
08:46
Помогите, а то я не знал, да еще и забыл как получить нужную мне строку документа с поиском по подстроке.
Нужно найти строчку документа в котором серийный номер 123 уже встречался.
Запрос = СоздатьОбъект("Запрос");
СерийныйНомерС = "123" ;            
ТекстЗапроса =
        "//{{ЗАПРОС(Сформировать)
        |Без итогов;
            |СерийныйНомер = Документ.ДокументСервиса.СерийныйНомер;
            |Картридж = Документ.ДокументСервиса.Картридж;
            |ТекущийДокумент = Документ.ДокументСервиса.ТекущийДокумент;
            |Условие(СерийныйНомер = СерийныйНомерС);
            |"//}}ЗАПРОС
            ;
            Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
                Возврат;
            КонецЕсли;
            Пока Запрос.Группировка() = 1 Цикл
                // Заполнение полей Сформировать
                Сообщить("КЖ "+Запрос.Картридж);
            
            КонецЦикла;
1 aka AMIGO
 
21.07.17
08:49
Возможно, так:
|Условие(Найти(СерийныйНомер,СерийныйНомерС)>0);
2 пипец
 
21.07.17
08:50
продам СП , дорого (с) группировка где ?
3 aka AMIGO
 
21.07.17
08:51
(2) ТС решает вопрос "в принципе", а бантики - потом :)
4 picom
 
21.07.17
08:54
(1) а если нужно не подстроку а только точное совпадение.
5 picom
 
21.07.17
08:54
.->?
6 пипец
 
21.07.17
08:54
(3) тоесть группировку он обходить собрался просто так )))), как бы пусть ))))
7 Масянька
 
21.07.17
08:56
(5)     Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса = "//{{ЗАПРОС()
    |Период с ДатаНачала по ДатаОкончания;
    |ОбрабатыватьДокументы все;
    |ТекДок            = Документ.ГарантийныйТалон.ТекущийДокумент;
    |ДатаДокумента    = Документ.ГарантийныйТалон.ДатаДок;
    |Товар             = Документ.ГарантийныйТалон.Номенклатура;
    |ИмяТовар         = Документ.ГарантийныйТалон.Номенклатура.Наименование;
    |КолВо             = Документ.ГарантийныйТалон.Количество;
    |Гарантия         = Документ.ГарантийныйТалон.СрокГарантии;
    |СерНомер         = Документ.ГарантийныйТалон.СерийныйНомер;
    |Группировка ТекДок;
    |Группировка Товар Без Групп;
    |Функция КолВоЗаписей = Счётчик();";
  
    Если (ПоНоменклатуре = 1) Тогда
        ТекстЗапроса = ТекстЗапроса + "
        |Условие (Товар в Номенклатура);";
    КонецЕсли;

    Если (ПоСерийномуНомеру = 1) Тогда
        ТекстЗапроса = ТекстЗапроса + "
        |Условие (СерНомер в СерийныйНомер);";
    КонецЕсли;
8 пипец
 
21.07.17
08:57
чот Масяня седня выспалась не стой ноги, доброта прям и пышет ))))
9 Масянька
 
21.07.17
08:58
(8) Не говори... Сама в шоке...
10 aka AMIGO
 
21.07.17
08:58
(4) Если нужно точное совпадение - тогда условие в сабже

Только надо учесть длину серийного номера и того, что ищется.
Ибо - пробелы - тоже символ.. А не пустота
11 picom
 
21.07.17
08:59
Все перепробывал, ни один из вариантов не взлетел )
    ТекстЗапроса =
            "//{{ЗАПРОС(Сформировать)
            |Без итогов;
            |СерийныйНомер = Документ.ДокументСервиса.СерийныйНомер;
            |Картридж = Документ.ДокументСервиса.Картридж;
            |ТекущийДокумент = Документ.ДокументСервиса.ТекущийДокумент;
            |Группировка СерийныйНомер;
            |Условие(СерийныйНомер в СерийныйНомерС);
            |"//}}ЗАПРОС
            ;
12 Масянька
 
21.07.17
09:00
(11) Не всё перепробовал...
День только начался...
13 пипец
 
21.07.17
09:01
(10) можно еще извратиться ))) выгрузить в ТЗ и свернуть и поиском, а вдруг там несколько )))))
14 picom
 
21.07.17
09:01
У нас уже вечер, хэлп
15 Масянька
 
21.07.17
09:02
(13) Я - за распечатку и ручками, ручками...
16 picom
 
21.07.17
09:04
может вывод и перебор результатов запроса у меня неправильный. Гляньте, а ...
17 пипец
 
21.07.17
09:04
(14) не поверишь, в 7-ке есть конструктор запросов )_))
(15) это не наш метод, только методом пузырька, только хардкор )))
18 Builder
 
21.07.17
09:05
(11) Условие не перепутал? Что где ищешь то?
Может так надо:
|Условие(СерийныйНомерС в СерийныйНомер);
19 Масянька
 
21.07.17
09:06
(16)            
            |СерийныйНомер = Документ.ДокументСервиса.СерийныйНомер;
            |Картридж = Документ.ДокументСервиса.Картридж;
            |ТекущийДокумент = Документ.ДокументСервиса.ТекущийДокумент;
            |Группировка ТекущийДокумент;
            |Группировка Картридж;
            |Условие(СерийныйНомер в СерийныйНомерС);
            |"//}}ЗАПРОС

Доброта уже на исходе....
20 пипец
 
21.07.17
09:07
(18) огонь )))))) батарея
21 Масянька
 
21.07.17
09:08
(20) Агония.....
22 aka AMIGO
 
21.07.17
09:08
(19) "Спокойно, Ипполит, спокойно.." © :)

picom - СерийныйНомер - это что? строка? эл-т Справочника?
23 picom
 
21.07.17
09:08
(22) строкааааа
24 Ёпрст
 
21.07.17
09:09
(0)
|Условие(ВРЕГ(СокрЛП(СерийныйНомер)) = ВРЕГ(СокрЛП(СерийныйНомерС)));
25 Масянька
 
21.07.17
09:09
(22) Тепленьку давайте!
26 пипец
 
21.07.17
09:11
навеяло, словарь эллочки людоедки )))))
http://forum.chuguev.net/index.php?showtopic=7536
27 aka AMIGO
 
21.07.17
09:11
(19) МасьАнька - твоё Условие(СерийныйНомер в СерийныйНомерС); - это для СпискаЗначений. А у него - это строка

(24) да, точно.
28 Builder
 
21.07.17
09:11
(24) ТС похоже вхождение ищет, так что условие В нормуль.
29 Масянька
 
21.07.17
09:12
(27) С чего ты взял?
30 пипец
 
21.07.17
09:12
(23) тогда уж если пишешь В - то приравнивай к списку значений что ле
31 Builder
 
21.07.17
09:13
(30) для строки это условие тоже работает.
32 aka AMIGO
 
21.07.17
09:13
(28) Нет. Это 7-ка, "В" имеет ограниченное применение
33 aka AMIGO
 
21.07.17
09:15
(31) Сомнительно.. при случае - проверю
34 пипец
 
21.07.17
09:15
я вообще слабо представляю как можно обходить группировку без оной ))) ну если в начало смотреть
35 Масянька
 
21.07.17
09:15
(33) Проверь - не поверишь :)
36 Builder
 
21.07.17
09:16
(33) Trust me :)
37 Масянька
 
21.07.17
09:17
(23) Шурик! Вы - комсомолец? (С)
38 aka AMIGO
 
21.07.17
09:17
(29) - см. (30)

(36) Ladno :)
39 пипец
 
21.07.17
09:18
хеее, в 7-ке вообще много прикольного, особенно если писАть в запросе БЕЗ ИТОГОВ ())))
40 Масянька
 
21.07.17
09:18
(38) Проверь. Сначала.
41 пипец
 
21.07.17
09:21
//*******************************************
// Процедура генерации запроса Сформировать.
//
Процедура Сформировать()
    Перем Запрос, ТекстЗапроса, Таб;
    
    ВыбНомерДок="1";
    //Создание объекта типа Запрос
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(Сформировать)
    |Период с ВыбНачПериода по ВыбКонПериода;
    |ПоступлениеТоваров = Документ.ПоступлениеТоваров.ТекущийДокумент;
    |НомерДок = Документ.ПоступлениеТоваров.НомерДок;
    |Группировка ПоступлениеТоваров;
    |Условие(НомерДок в ВыбНомерДок);
    |"//}}ЗАПРОС
    ;
    // Если ошибка в запросе, то выход из процедуры
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
        Возврат;
    КонецЕсли;

    // Подготовка к заполнению выходных форм данными запроса
    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("Сформировать");
    // Заполнение полей "Заголовок"
    Таб.ВывестиСекцию("Заголовок");
    Состояние("Заполнение выходной таблицы...");
    Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
    Пока Запрос.Группировка(1) = 1 Цикл
        // Заполнение полей ПоступлениеТоваров
        Таб.ВывестиСекцию("ПоступлениеТоваров");
    КонецЦикла;
    // Вывод заполненной формы
    Таб.ТолькоПросмотр(1);
    Таб.Показать("Сформировать", "");
КонецПроцедуры


ниработаит ))))))))))))
42 пипец
 
21.07.17
09:23
только по точному совпадению ))) так что это не В, это =
43 Ёпрст
 
21.07.17
09:23
(41) и не лень тебе ? Это никогда для строк не работало
44 aka AMIGO
 
21.07.17
09:24
(41) Мда.. Глянул в СП:
В качестве включающего подмножества логического оператора принадлежности (второй параметр после слова ''в'') может выступать как простое значение, так и список значений.
45 aka AMIGO
 
21.07.17
09:26
(40) По-моему, в (41) убедительный пример :)
46 пипец
 
21.07.17
09:26
дата(4875) = 33.90.-69
уже кстати обсуждали такие приколы )
47 пипец
 
21.07.17
09:27
(44)  это если типизация совпадает, а так ))) фигвам, и кстати тоже не всегда , в случае с ТЗ вообще фантастика бывает
48 Масянька
 
21.07.17
09:28
(45) Мужской шовинизм. В (7) работающий пример. Серийник - строка (реквизит ТЧ док-та). В обработке вводится в поле ввода (строка). :Р
49 Builder
 
21.07.17
09:29
(41)
   |Условие(НомерДок в ВыбНомерДок);
Будет искать номер документа в строке "1"
Найдет?
51 Builder
 
21.07.17
09:32
|Условие(ВыбНомерДок в СокрЛП(НомерДок));
52 aka AMIGO
 
21.07.17
09:33
(49) :)) точно :)
53 aka AMIGO
 
21.07.17
09:34
+52    |Условие(ВыбНомерДок в НомерДок);
54 Builder
 
21.07.17
09:35
(53) Так не сработает, в (51) рабочий код!
|Условие(ВыбНомерДок в СокрЛП(НомерДок));
55 пипец
 
21.07.17
09:36
(49) не будет 1 искать !!!!, от слова совсем, будет искать равно 1 ))) тоисть не вхождение - напесал жи в (42)
56 Builder
 
21.07.17
09:37
(55) Будет, только что проверил, нашел все номера в которых есть "1".
57 aka AMIGO
 
21.07.17
09:39
(55) В твоем условии - ошибка, подстрока поиска должна быть до "В"
58 пипец
 
21.07.17
09:39
нда , видимо там где Масянька выспалась )))))) кто то точно не выспался
59 Масянька
 
21.07.17
09:41
(58) Просто вы шовинисты :)
60 aka AMIGO
 
21.07.17
09:43
(59) Мы хорошие..
61 catena
 
21.07.17
09:44
(60)Хорошие шовинисты, кто ж спорит.
62 Builder
 
21.07.17
09:46
Пятничное собрание староверов-любителей 7.7 :)
63 Масянька
 
21.07.17
09:46
А ТС-то где?
64 пипец
 
21.07.17
09:46
то ли обласкали, то ли )))) еще что, автор видимо зачитался, бросил программировать и читает, кто же такие шовинисты и почему они хорошие
65 Builder
 
21.07.17
09:47
(63) А зачем нам ТС? Нам ТС не нужен :)
66 Масянька
 
21.07.17
09:47
(60) Все хорошие... Когда спят зубами к стенке (С) :)))))
67 пипец
 
21.07.17
09:48
(62) иногда от осьмушки- чесслово, подташнивает )))
68 Масянька
 
21.07.17
09:48
(64) Помочь погуглить? :))))
69 Масянька
 
21.07.17
09:48
(65) Согласна.
Продолжаем разговор :)
70 Масянька
 
21.07.17
09:49
(67) Не-на-чи-най.....
71 пипец
 
21.07.17
09:54
(70) ага , дохтур, а я умру ?
- обязательно
а от чего ?
- вскрытие покажет (с) ))))
ЗЫ мне больше нравится в восьмерке непередаваемый интерфейс ))) особенно если нужно нарисовать для тачпада с соразмерностями и рельефностью ))))
72 Масянька
 
21.07.17
09:55
(71) А мне в восьмерке не нравится контекстная подсказка... Бесит, блин...
73 Builder
 
21.07.17
09:56
(71)
Вскрытие показало что больной умер от вскрытия (с)
74 picom
 
21.07.17
10:03
.....
а тем временем код так и не работает )
75 Builder
 
21.07.17
10:04
(74) Опа, ТС нашелся...
Ладно, держи условие.
|Условие(СерийныйНомерС в СокрЛП(СерийныйНомер));
76 picom
 
21.07.17
10:11
Не работает и без условия
может проблема в (16) ?
77 Builder
 
21.07.17
10:13
(76) Выкладывай последний вариант
78 aka AMIGO
 
21.07.17
10:13
(76) Ну, таки выложи полностью Процедуру, что не работает
79 aka AMIGO
 
21.07.17
10:14
Во.. хором выступление.. :)
80 Масянька
 
21.07.17
10:16
(76) 1. Полный код (который не работает).
2. Документ.ДокументСервиса.СерийныйНомер - тип, длина.
3. СерийныйНомерС - тип, длина.
81 Builder
 
21.07.17
10:26
Похоже мы теряем ТС ....
82 Масянька
 
21.07.17
10:29
(81) Интубируем? :))))))
83 Builder
 
21.07.17
10:35
(82) Фууу, как некрасиво....
ТС пусть сам тогда интубирует....
84 picom
 
21.07.17
12:10
Вот без условия тоже ничего не находит
Серийный номер = строка на 20
            СерийныйНомерС = "123" ;
            Запрос = СоздатьОбъект("Запрос");
            ТекстЗапроса =
            "//{{ЗАПРОС(Сформировать)
            |Без итогов;
            |СерийныйНомер = Документ.ДокументСервиса.СерийныйНомер;
            |Картридж = Документ.ДокументСервиса.Картридж;
            |ТекущийДокумент = Документ.ДокументСервиса.ТекущийДокумент;
            |Группировка Картридж без Групп;
//            |Условие(СерийныйНомерС в СокрЛП(СерийныйНомер));
            |"//}}ЗАПРОС
            ;
            Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
                Возврат;
            КонецЕсли;
            Пока Запрос.Группировка() = 1 Цикл
            Сообщить("КЖ "+Запрос.Картридж); //ничего не выводит и не заходит
            КонецЦикла;
85 Масянька
 
21.07.17
12:13
(84) Шурик! Вы комсомолец? (С)
Тебе очень трудно вставить:
            |ТекущийДокумент = Документ.ДокументСервиса.ТекущийДокумент;
            |Группировка ТекущийДокумент;
            |Группировка Картридж без Групп;
?
86 Ёпрст
 
21.07.17
12:14
(84)
Нет проведенных документов ДокументСервиса
87 picom
 
21.07.17
12:21
(85)(86)
пробывал, ничего вообще не выводит, даже без условия
            ТекстЗапроса =
            "//{{ЗАПРОС(Сформировать)  
            |ОбрабатыватьДокументы все;
            |СерийныйНомер2 = Документ.ДокументСервиса.СерийныйНомер;
            |Картридж2 = Документ.ДокументСервиса.Картридж;
            |ТекущийДокумент2 = Документ.ДокументСервиса.ТекущийДокумент;
            |Группировка ТекущийДокумент2;
            |Группировка Картридж2 без Групп;
//            |Условие(СерийныйНомерС в СокрЛП(СерийныйНомер));
            |"//}}ЗАПРОС
            ;      
            
            Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
                Возврат;
            КонецЕсли;
            
            Пока Запрос.Группировка() = 1 Цикл
                // Заполнение полей Сформировать
                Сообщить("КЖ "+Запрос.Картридж2);
            КонецЦикла;
88 Builder
 
21.07.17
12:23
Пля, нет же условия по датам.
  |Период с ВыбНачПериода по ВыбКонПериода;
89 Масянька
 
21.07.17
12:25
(87) Теперь это:
            Пока Запрос.Группировка() = 1 Цикл
                // Заполнение полей Сформировать

                Сообщить("КЖ "+Запрос.Картридж2);
            КонецЦикла;
меняешь на это:
            Пока Запрос.Группировка("ТекущийДокумент2") = 1 Цикл
            Пока Запрос.Группировка("Картридж2") = 1 Цикл
                // Заполнение полей Сформировать

                Сообщить("КЖ "+Запрос.Картридж2);
            КонецЦикла;
            КонецЦикла;
И да - (88)?!
90 picom
 
21.07.17
12:30
(88) спасибо, все заработало
91 Builder
 
21.07.17
12:31
(90) Фухххх...
Мы спасли его :)
92 Масянька
 
21.07.17
12:34
(90) Пилять... В (7) написано же...
(88) И куда смотрел раньше?
93 Builder
 
21.07.17
12:41
(92) Ну так сразу не интересно же.
А поговорить ? :)
94 aka AMIGO
 
21.07.17
12:42
(92) Есть градация - читатель/писатель :)
95 Builder
 
21.07.17
12:43
Расходимся или доведем до 100?
96 Масянька
 
21.07.17
12:43
(93) (94) Я же сказала - шовинисты :))))
97 aka AMIGO
 
21.07.17
12:44
(96) А я сказал - неправда ваша, мы - хорошие :)
98 picom
 
21.07.17
12:47
Спасибо всем, победа.
Про период проглядел, каюсь, хотя мастер запросов спрашивал все документы или по периоду )
99 Масянька
 
21.07.17
12:49
Держите :)
100 Builder
 
21.07.17
12:54
100 и заканчиваем :)
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.