Имя: Пароль:
1C
1С v8
Запрос по маске в наименовании товара
, ,
0 Драмаченко Григорий
 
06.06.22
15:21
Ребята подскажите как написать следующий запрос

например имеем товары

01 ТМ "Collezione"Тетрадь КЛЕТКА 96л. ЗОЛОТЫЕ УЗОРЫ (96-1484) (цв.мелов.обл.), 5 диз в сп, золото

RA-878-3 Рюкзак школьный (/1 серый; 10115070/070618/0030729, КИТАЙ )

так вот В СКД хочу построить запрос Где в имени есть Рюкзак или Тетрадь или же Дневник

по такие товары сгруппировать

То-есть что бы вывелось что то типа

Дневник -
          Дневние токйто
          Дневник такой то 2
          и т.д
Рюкзак  -
          Рюкзак детский 1
          Рюкзак детский 2
56 Kassern
 
06.06.22
16:33
(55) а что именно не осилите? Циклы делать умеете? Строку увеличивать в цикле можете? С таблицами значений работали?
57 Драмаченко Григорий
 
06.06.22
16:37
(17) получилось осилить конфигуратор не ругается )

но не понимаю а как в тайное слово добавлять значения в режиме конфигурации?
58 Драмаченко Григорий
 
06.06.22
16:38
(560 не понимаю как это потом в СКД добавить мне дали задание создать отчет на СКД МОжно добавлять Справочники регистры и т д
59 Драмаченко Григорий
 
06.06.22
16:39
(17) как сделать так что бы на форме можно было список слов добавлять?
60 yopQua
 
06.06.22
16:40
создаем отчет скд
добавляем схему, там НаборДанных - Объект, описываем колонки, которые будут на входе из ТЗ/выходе в итоговоую таблицу
в форме объявляем ПриКомпоновкеРезультата, в ней пишем
Стандартная обработка = Ложь;
пишем начальный текст запроса типа "выбрать тра та из справочник тра та та Где Номенклатура.Наименование Подобно %Подобное1%"
Запрос.УстановитьПараметр("Подобное1", СписокПодобных[0].Подобное);

Потом цикл
Для Каждого Строка Из СписокПодобных Цикл
Запрос.Текст = Запрос.Текст + " Или Номенклатура.Наименование Подобно %Подобное" + СписокПодобных.Индекс(Строка) + "%";
Запрос.УстановитьПараметр("Подобное" + СписокПодобных.Индекс(Строка), Строка.Подобное);
КонецЦикла;

Результат = Запрос.Выполнить.Выгрузить();
ВнешниеНаборыДанных = Новый Структура;
ВнешниеНаборыДанных.Вставить("ВнешнийИсточник", Результат);

Макет = ПолучитьМакет("Макет"); //схема, которую добавили в начале
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(Макет, КомпоновщикНастроек.Настройки);
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
61 Драмаченко Григорий
 
06.06.22
16:42
(60) буду пробовать спасибо!
62 Kassern
 
06.06.22
16:42
(60) без картинок не интересно!)
63 yopQua
 
06.06.22
16:43
ну подробнее... мне и это написать было не 2 пальца
64 yopQua
 
06.06.22
16:43
(62) ну ну да.. картинки с вас!)
65 Kassern
 
06.06.22
16:45
(61) прежде чем будете реальную базу ковырять, попробуйте на небольших данных, где вам заранее известен результат. Вначале попробуйте в цикле менять текст запроса, проверьте что все корректно отрабатывает, текст корректный. Далее уже попробуйте простенький отчет сделать на СКД с несколькими полями, где набор данных - это объект. При компановке передается таблица с данными.
66 Kassern
 
06.06.22
16:46
67 Драмаченко Григорий
 
06.06.22
16:46
(17) работает это но не понимаю как сделать на форме ввод необходимых слов?
68 Kassern
 
06.06.22
16:47
(67) в параметрах СКД есть возможность регулировать ограничение доступности и т.д.
69 yopQua
 
06.06.22
16:50
ладно, если вдруг решите кодом текст формировать скажите, там немного не правильно
(66) все, дело сделано, с тс 500 рублей.. каждому!
70 Драмаченко Григорий
 
06.06.22
16:52
(68) )))
71 Драмаченко Григорий
 
06.06.22
16:56
Дневниек

Ежедневник ))) и там и там дневник (
72 Kassern
 
06.06.22
17:01
(71) у СКД есть возможность отбора "начинается с". Так же можно и подобно регулировать ПОДОБНО "дневник%"
73 Kassern
 
06.06.22
17:01
Тогда ежедневник не попадет
74 Драмаченко Григорий
 
06.06.22
17:03
(17) + (68) работает нормально спасибо Вам большое
75 Kassern
 
06.06.22
17:03
(71) я как раз о таких случаях и говорил. Сейчас вы запилите отчет для буха, она, на основании ваших данных сделает отчетность, или еще какие-нибудь документы. А потом выяснится, что большой косяк в подобных наименованию товарах. И крайним скорее всего будете вы, мол программист так сгруппировал, не предусмотрел и т.д. а я все правильно посчитала...
76 Драмаченко Григорий
 
06.06.22
17:04
(69) мне дали задачу сделать на чистом СКД без использования кода
77 Kassern
 
06.06.22
17:04
(76) так это учебная задача?
78 Драмаченко Григорий
 
06.06.22
17:05
(69) мне дали задачу сделать на чистом СКД без использования кода

(75) в место Дневник ввел

Дневник уч (у нас все дневники содержат именно такие названия)

ну а ежедневник так и оставил Ежедневник
79 Kassern
 
06.06.22
17:06
раз учите 1с, то хорошим будет подспорьем, если вы в типовх подглядите как работают сегменты номенклатуры, как они заполняются. Это как раз ваш случай. Там так же можно по маске формировать динамически сегменты, а далее уже в отчетах использовать их.
80 Драмаченко Григорий
 
06.06.22
17:06
(77) не совсем (

я работаю на этом предприятие но в том числе у меня есть Начальник который требует что бы было сделано так или иначе (
81 Драмаченко Григорий
 
06.06.22
17:07
задача звучала так

Сделать на чистом СКД без использования кода только СКД!

но можно создавать справочники, регистры, перечисления и т д
82 Kassern
 
06.06.22
17:07
(80) а он вам говорит как реализовывать? Он тоже программист 1с?
83 Kassern
 
06.06.22
17:10
(81) ну вот создаете регистр сведений НоменклатураСегмента, создаете справочник СегментыНоменклатуры. В макетах храните нужные схемы компановки. В реквизитах можно хранить сохраненные настройки (ХранилищеЗначения). Вот и все дела. Останется прикрепить регламент, чтобы по правилу заполнять регистр сегментов
84 Kassern
 
06.06.22
17:10
Вот тогда будет грамотно и красиво. Возможность ручной регулировки сегментации, а так же по правилу. Кодом это все дело сделать пару часов без напряга.
85 Драмаченко Григорий
 
06.06.22
17:17
(82) да он программист СТАРШИЙ

а я младший он мой начальник ставит задачу и я ее должен сделать именно так как он сказала не так как я этого захочу

но в любом случае беда получается многие товары теряются тепреь нужно предумать как вывести вс еостальное что не подпало под условия
86 Kassern
 
06.06.22
17:19
(85) предложите ему вариант с сегментами, я думаю его одобрят, если вы в нормальные сроки реализуете)
87 Драмаченко Григорий
 
06.06.22
17:30
Показал ему (17) он сказал уже не делать так сказал тупо вывалить список где есть тавки НДС и остатки и сказал что урезает мне ЗП (
88 Драмаченко Григорий
 
06.06.22
17:32
Вариант с сегментами так же сказал что не подходит

Сказал что надо было сделать как в 17 но так что бы остальные товары которые не попали в отбор выводились ниже

сказал что вс еэто можно было решить СКД чистым без добавления справочников, регистров и т д
89 Драмаченко Григорий
 
06.06.22
17:34
уже подумываю уволится (

похоже 1С это не мое (

так быстро учится это предел моего мозга (
90 Драмаченко Григорий
 
06.06.22
17:36
Помогите пожалуйста

у меня сново не получаетс яновое задание сделать

ВЫБРАТЬ
    СправочникНоменклатура.Ссылка КАК Номенклатура,
    СправочникНоменклатура.СтавкаНДС КАК СтавкаНДС,
    Остатки.ВНаличииОстаток КАК Количество,
    Остатки.Склад КАК Склад
ИЗ
    Справочник.Номенклатура КАК СправочникНоменклатура
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СвободныеОстатки.Остатки(&Период, {Склад В (&Склад)}) КАК Остатки
    ПО СправочникНоменклатура.Ссылка = Остатки.Номенклатура
ГДЕ
   СправочникНоменклатура.ЭтоГруппа = ЛОЖЬ

но выводит КОличество без склада спереди как убрать его?
91 Драмаченко Григорий
 
06.06.22
17:48
(90) все сам решил

ВЫБРАТЬ
    Остатки.Номенклатура.Ссылка КАК Номенклатура,
    Остатки.Номенклатура.Ссылка.СтавкаНДС КАК СтавкаНДС,
    Остатки.ВНаличииОстаток КАК Количество,
    Остатки.Склад КАК Склад
ИЗ
РегистрНакопления.СвободныеОстатки.Остатки(&Период, {(Склад В (&Склад))}) КАК Остатки


спасибо всем кто помогал и извините что зря (

с меня вычтут из ЗП (
92 Драмаченко Григорий
 
06.06.22
17:49
я на испытательном сроке и должен по мнению руководства быстро всему учится (
93 Драмаченко Григорий
 
06.06.22
17:49
буду надеяться что не уволят
94 Kassern
 
06.06.22
17:50
(88) "сказал что вс еэто можно было решить СКД чистым без добавления справочников, регистров и т д" - можно конечно, но если мы говорим о реальных задачах, об универсальности, то данный подход корявый. Завтра захотят объединить журналы и дневники, что делать будете? Или например исключить из дневников некоторые артикула. А теперь представьте, что такая логика группировки нужна не в 1 отчет, а 10 к примеру. Вот тогда сегменты реально выручают. При изменении состава сегмента, не нужно будет править 100500 отчетов.
95 yopQua
 
06.06.22
17:54
сколько ему лет, старшему?
96 Kassern
 
06.06.22
17:59
(89) "похоже 1С это не мое" - быстро вы сдались. С таким подходом, любой язык будет "не мое"
97 polosov
 
06.06.22
17:59
(91) Очень странная методика обучения в организации. Лучше свалить из такой.
98 Драмаченко Григорий
 
06.06.22
21:23
(95) 53 года )

(96) да не не сдался, так порыв )

(97) Ну как бы да давят но что поделаешь за хорошую ЗП можно и потерпеть ) но давят сильно (
99 Драмаченко Григорий
 
06.06.22
21:25
Когда пришел сразу оговорено было что я ооочень плохо знаю 1С их все устраивало в первые дни все было хорошо никто не давил потихонечку осваивался а потом как понеслась то то сделай и временные рамки ставят то это как будто я профессионал (
100 Драмаченко Григорий
 
06.06.22
21:26
Ну что поделаешь таковы реалии :-( потерплю )
101 Драмаченко Григорий
 
06.06.22
21:27
СКД очень тяжело дается я уже кучу литературы читал да похоже я туповат )

никак не пойму механизма

если с простыми запросами уже немножко приловчился то со сложными (по крайней мере для меня) как то ступор впадаю )
102 Злопчинский
 
06.06.22
21:36
(91) "с меня вычтут из ЗП ("
ну так ты тонко-толсто намекни что тебе не могут платить 450 тыс потому что продажники плохо работают и надо у них вычитать из ЗП...
103 yopQua
 
06.06.22
22:32
та это разводит он тебя,  никто зарплату отнять не может, даже уменьшить. весь оклад получите. но это не повод расслабляться, изучайте. если он тут читает, то привет, наставник! если студент правильно себя ведет, то и подсказать можно
104 palsergeich
 
06.06.22
23:32
(85) Если бы я слушал СТАРШИХ программистов, то сейчас не работал бы в отрасли.
Есть задача, есть голова что бы думать и обсуждать.
Все остальное - софистика.
105 Драмаченко Григорий
 
07.06.22
10:06
Если не сложно немогли бы разьяснить как работает данный запрос

сперва выполняется это?

ВЫБРАТЬ
    "%Батарейка%" как Тайноеслово
ОБЪЕДИНИТЬ ВСЕ //что делает это
ВЫБРАТЬ
    "%Гамак%"

А  затем это?

ВЫБРАТЬ      
    &Тайноеслово КАК Тайноеслово,
    Номенклатура.Ссылка КАК Ссылка,
    Номенклатура.СтавкаНДС КАК СтавкаНДС
ИЗ
    Справочник.Номенклатура КАК Номенклатура
ГДЕ
    Номенклатура.Наименование ПОДОБНО &Тайноеслово
106 Драмаченко Григорий
 
07.06.22
10:08
и еще не могли бы показать как сделать запрос на исключения

то о чем я писал

   Дневники
Ежедневники

есть ли возможность в рамках запроса

например найти все по Дневники и исключить Ежедневники?
107 Kassern
 
07.06.22
10:17
(105) Берете этот кусок и пихаете в консоль запросов и смотрите какой у вас результат. Параллельно гуглите соединения таблиц Объединить и Объединить ВСЕ
ВЫБРАТЬ
    "%Батарейка%" как Тайноеслово
ОБЪЕДИНИТЬ ВСЕ//что делает это

ВЫБРАТЬ
    "%Гамак%"
108 Драмаченко Григорий
 
07.06.22
10:18
(107) наверное Вы будите смеяться но как запустить консоль?
109 Kassern
 
07.06.22
10:19
(106) Исключение делается обычной логикой. Например Номенклатура В (&МассивЗапчастей) И Номенклатура<>&Втулка
110 Kassern
 
07.06.22
10:20
111 Kassern
 
07.06.22
10:20
качаете и запускаете. Это обычный конструктор запросов, только на уровне клиента
112 Kassern
 
07.06.22
10:21
можно быстро запустить какой-нибудь кусок запроса (пакет) и посмотреть его результат
113 Драмаченко Григорий
 
07.06.22
10:25
(111-112) спасибо буду пробовать это очень удобно )
114 Драмаченко Григорий
 
07.06.22
10:33
еще вопрос

Например я выбираю запросов какие то данные имеющие только одну колонку но данные к примеру могут повторяться могу ли я в запросе свернуть то есть вернуть уникальный список без дублей?

я читал про СГРУППИРОВАТЬ ПО но  это подразумевает суммирующую колонку?
115 Драмаченко Григорий
 
07.06.22
10:34
просто бывает нжно так сделать и приходится все сливать в ТЗ а затем ее сворачивать
116 Kassern
 
07.06.22
10:35
(114) " СГРУППИРОВАТЬ ПО но  это подразумевает суммирующую колонку" - с чего вы взяли?
У вас же есть консоль теперь, любайтесь с ней. Возьмите какую нибудь табличку с дублями данных и попробуйте сгруппировать
117 Kassern
 
07.06.22
10:35
Вы же учитесь, поэтому вам лучше самому все пощупать и проверить
118 Драмаченко Григорий
 
07.06.22
10:48
ВЫБРАТЬ
    "%Батарейка%" как Тайноеслово
    
ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    "%Гамак%"
    
ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    "%Гамак%"
    
    СГРУППИРОВАТЬ ПО  Тайноеслово

вот написал и получаю ошибку (

Поле не найдено "Тайноеслово"
СГРУППИРОВАТЬ ПО  <<?>>Тайноеслово
119 Kassern
 
07.06.22
10:49
(118) У вас тут 2 пакета запроса, они между собой должны точкой с запятой разделены быть
120 Kassern
 
07.06.22
10:49
Возьмите вот этот кусок и проверьте в консоли
ВЫБРАТЬ
    "%Батарейка%" КАК Тайноеслово

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    "%Гамак%"
121 Драмаченко Григорий
 
07.06.22
10:51
(120) Поле не найдено "Тайноеслово"
СГРУППИРОВАТЬ ПО  <<?>>Тайноеслово ))
122 Kassern
 
07.06.22
10:52
(121) показывайте скрин, где у вас в консоли этот кусок кода и ошибка
123 Kassern
 
07.06.22
10:52
и ГДЕ в (120) вы увидели слово СГРУППИРОВАТЬ???
124 Kassern
 
07.06.22
10:53
удалите все из текста запроса и воткните только (120)
125 yopQua
 
07.06.22
10:54
это три запроса, их нельзя так объединить. поместить в вт, потом из нее группировать
126 yopQua
 
07.06.22
10:54
*их нельзя так сгруппировать
127 Kassern
 
07.06.22
10:55
вам походу нужно нанять какого-нибудь репититора по запросам 1с и скд) Либо на очные курсы походить, раз самостоятельно не удается разобраться. Вы по каждому вопросы сразу сюда идете и пишите, а должны были прочитать документацию, протестировать на простых примерах и только после этого писать сюда, что пробовали и какие ошибки получили.
128 yopQua
 
07.06.22
10:56
ну кстати есть такая история как просто Объединить
129 yopQua
 
07.06.22
10:56
он тогда выкинет повторы
130 yopQua
 
07.06.22
10:57
(127) репетитор уже здесь! 500р еще за вчера надо оплатить
131 Драмаченко Григорий
 
07.06.22
10:58
(120) работает как надо

я хотел сделать группировку и поэтому создал данный запрос дописал к нему СГРУППИРОВАТЬ ПО
что бы посмотреть как он себя поведет

он сказал мне что я ошибка
132 Kassern
 
07.06.22
10:59
(131) поместите во временную таблицу результат запроса и потом уже ее пробуйте группировать
133 yopQua
 
07.06.22
10:59
тру вариант в этом случае будет объединить
134 Kassern
 
07.06.22
11:00
Если хотите посмотреть как работает сгруппировать:
ВЫБРАТЬ
    "%Батарейка%" КАК Тайноеслово
ПОМЕСТИТЬ ВременнаяТаблица

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    "%Батарейка%"
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВременнаяТаблица.Тайноеслово КАК Тайноеслово
ИЗ
    ВременнаяТаблица КАК ВременнаяТаблица

СГРУППИРОВАТЬ ПО
    ВременнаяТаблица.Тайноеслово
135 Kassern
 
07.06.22
11:01
рядом с кнопкой выполнить есть такая стрелочка, нажмите на нее и увидите результат временной таблицы и вашего запроса  с группировкой
136 Драмаченко Григорий
 
07.06.22
11:01
ПОМЕСТИТЬ )) вот это я и искал ) спасибо
137 Драмаченко Григорий
 
07.06.22
11:02
Круто спасибо

(133) поясните пожалуйста Ваш вариант если не затруднит
138 Kassern
 
07.06.22
11:02
(136) в конструкторе запроса есть вкладка дополнительно, там это регулируется, так же можно выбирать первые, или разрешенные и т.д.
139 Kassern
 
07.06.22
11:02
(137) ну так уберите слово ВСЕ и посмотрите так же по стрелочке результат
140 Kassern
 
07.06.22
11:03
это либо в тексте, либо на вкладке объединения поставить галочку без дубликатов у запроса 2
141 Драмаченко Григорий
 
07.06.22
11:06
Да это работает ТО-же спасибо Вам большое + 0,1% навыка в запросах )
142 Kassern
 
07.06.22
11:06
Почитайте очень внимательно:
https://helpme1s.ru/yazyk-zaprosov-1s-8-3-dlya-nachinayushhix-programmistov-soedineniya
https://capitally.ru/1c-development/zaprosy/soedinenie-tablits-v-zaprose/
https://its.1c.ru/db/metod8dev/content/2591/hdoc
И попробуйте сами каждый способ соединения таблиц. Можете создать базу пустышку и заполнить ее тестовыми данными и любаться с запросами
143 Драмаченко Григорий
 
07.06.22
11:25
(142) так и сделал уже )

а подскажите пожалуйста еще

К примеру у меня есть справочник Товаров

Допустим в нем три элемента

Элемнт А, Б, Ц

Представим что у нас имеется

этот запрос

ВЫБРАТЬ
    "%А%" КАК Тайноеслово

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    "%Ц%"

который мне советовали в (17)

какой второй запрос будет что бы получить

на выходе таблицу вида


%А% -
     -А
%Ц% -
     -Ц

%БезГрупп%
          - Б

то есть что бы я мог вывести все товары но те что смог сгруппировал
144 Kassern
 
07.06.22
11:29
(143) вы первым запросом просто создаете таблицу временную с данными (в вашем случае для дальнейшей группировки)
На бумажке нарисуйте 2 таблицы, вашу временную и таблицу с данными и попробуйте их объединить так, чтобы у вас получилась одна таблица, где в строчке с Ц будет %Ц%, а в строчке с А будет %А%
145 Драмаченко Григорий
 
07.06.22
11:32
(начал читать (142) и стало все на свои места )
(143) Левое соединение произведет отбор как по группировкам так и выведет те что не подпадают верно?
146 Драмаченко Григорий
 
07.06.22
11:33
в общем буду пробовать спасибо за помощь и ссылки :-)
147 Kassern
 
07.06.22
11:36
Первая таблица у вас с данными:

Номенклатура
Аааа
Бббб
Сссс
Вторая таблица у вас временная с масками:
Маска
%А%
%Б%
%С%
На выходе у вас должна получиться таблица
Номенклатура Маска
Аааа         %А%
Бббб         %Б%
Сссс         %С%
148 yopQua
 
07.06.22
11:37
(137) в 129 написал, этим отличаются эти конструкции
149 Kassern
 
07.06.22
11:39
В соединении таблиц можно использовать ПОДОБНО
150 Драмаченко Григорий
 
07.06.22
11:40
(127) ну мне дали ссылки теперь буду сперва действовать как Вы написали

дело в том что я видимо неверно писал гуглу вопрос и он соответсвенно неверно выдавал мне ответ итог я ничего не найдя и просидев пол дня

иду сюда )
151 Kassern
 
07.06.22
11:42
Вот вам мини пример, любайтесь с ним)
ВЫБРАТЬ
    "%123%" КАК Маска
ПОМЕСТИТЬ ВременнаяТаблица

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    "%Том%"
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    "Тестовая" КАК Данные
ПОМЕСТИТЬ ВременнаяТаблица2

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    "Томить"
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВременнаяТаблица2.Данные КАК Данные,
    ВЫБОР
        КОГДА ЕСТЬNULL(ВременнаяТаблица.Маска, "") = ""
            ТОГДА "БезГруппировки"
        ИНАЧЕ ВременнаяТаблица.Маска
    КОНЕЦ КАК Маска
ИЗ
    ВременнаяТаблица2 КАК ВременнаяТаблица2
        ЛЕВОЕ СОЕДИНЕНИЕ ВременнаяТаблица КАК ВременнаяТаблица
        ПО (ВременнаяТаблица2.Данные ПОДОБНО ВременнаяТаблица.Маска)
152 Драмаченко Григорий
 
07.06.22
12:26
(151) спасибо
153 Kassern
 
07.06.22
12:27
(152) получилось разобраться?
154 Kassern
 
07.06.22
14:19
По уму конечно сделать возможность пользовательского указания тегов(масок) и на основании этого формировать отчет.
Вот вам пример через набор - объект, изучайте. https://disk.yandex.ru/d/r47K94co2Zxs_Q
155 Драмаченко Григорий
 
10.06.22
12:51
(153) да. вроде понятно все!
(154) спасибо за примеры