Отправка сообщений в ТГ

1. Evgen13 06.12.23 15:03 Сейчас в теме
Подскажите, пожалуйста.
Сейчас сообщения отправляются вот так:

СтруктураСообщения.Вставить("text", ПолучитьНоменклатуру(ТекстЗапроса) + Символы.ПС + 
				   ПолучитьОстатки(ТекстЗапроса) + Символы.ПС +
				ПолучитьМедиаСсылку(ТекстЗапроса));      
				 ОтправитьКартинку(ТекстЗапроса, Настройка, Формат(ЗапросПользователя.id,"ЧГ="));


отправляется все и без проблем. Но, возникла необходимость искать номенклатуру по части артикула, и в каждой вышеперечисленной функции, я установил параметр запроса вида

Запрос.УстановитьПараметр("Артикул", "%"+ТекстЗапроса+"%");


Ищется все также, работает. НО, выводит все в одно сообщение.

Помогите, пожалуйста, переделать, так, чтобы каждый найденный артикул отпраялся своим сообщением, так как сейчас.

Возможно это не самый удачный код, но все же он рабочий)
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. yispepotri 06.12.23 15:19 Сейчас в теме
(1)ТекстЗапроса передается как параметр, это вы каждый раз запросы выполняете по нему? не проще было бы выполнить один раз запрос, и идти по выборке и в этом цикле выполнять отправку сообщений
4. Evgen13 06.12.23 15:32 Сейчас в теме
(2)
может и проще. Дело в том , что если так делаю (все в один запрос), то он каждый раз выводит и номенклатуру и остаток и картинку, что неудобно
5. yispepotri 06.12.23 15:34 Сейчас в теме
(4)если вы продемонстрируете визуально, какой результат вы хотите добиться, возможно будет проще вам помочь
7. Evgen13 06.12.23 15:38 Сейчас в теме
(5)
Картинка номенклатуры (ОтправитьКартинку) функция


Название номенклатуры (ПолучитьНоменклатуру) функция

///остатки по каждому складу ПолучитьОстатки Функция
/на складе: «г.Основной склад»: 8 шт.

/на складе: «г.Казань ВТС ГРУПП»: - более 10 шт.


Ссылка на фотографию: (https://disk.yandex.ru/i/q0oPy-OB79VyuA) Ссылка на медиа ссылку из карточки номенклатуры (ПолучитьмедиаССылку функция)
9. yispepotri 06.12.23 15:42 Сейчас в теме
(4)сообщение модер удалил, как вариант в паинте нарисовать))
10. Evgen13 06.12.23 15:44 Сейчас в теме
(9)

Функция ПолучитьОстатки (ТекстЗапроса)
	Запрос = Новый запрос;
	Запрос.Текст =  "ВЫБРАТЬ
					|	СправочникНоменклатура.Ссылка КАК Номенклатура,
					|	СУММА(ЕСТЬNULL(СвободныеОстаткиОстаткиИОбороты.ВНаличииКонечныйОстаток, 0)) КАК ВНаличииКонечныйОстаток,
					|	&Артикул КАК Артикул,
					|	ЕСТЬNULL(СвободныеОстаткиОстаткиИОбороты.Склад, """") КАК Склад
					//  Добавил наименование склада для отображения в ТГ
					//|   СвободныеОстаткиОстаткиИОбороты.Склад.НаименованиеВТг КАК СкладНаименованиеВТг
					|ИЗ
					|	Справочник.Номенклатура КАК СправочникНоменклатура
					|		Правое СОЕДИНЕНИЕ РегистрНакопления.СвободныеОстатки.ОстаткиИОбороты(, , , , ) КАК СвободныеОстаткиОстаткиИОбороты
					|		ПО (СвободныеОстаткиОстаткиИОбороты.Номенклатура = СправочникНоменклатура.Ссылка)
					|ГДЕ
					|	СправочникНоменклатура.Артикул ПОДОБНО &Артикул 
					|	И СправочникНоменклатура.ОтправитьВТГ = ИСТИНА
					|	И СвободныеОстаткиОстаткиИОбороты.Склад.ПоказыватьВТг = ИСТИНА
					|
					|СГРУППИРОВАТЬ ПО
					|	СправочникНоменклатура.Ссылка,
					|	ЕСТЬNULL(СвободныеОстаткиОстаткиИОбороты.Склад, """")
					//|	СвободныеОстаткиОстаткиИОбороты.Склад.НаименованиеВТг
					|УПОРЯДОЧИТЬ ПО
					|	Склад ВОЗР"; 
	
	Запрос.УстановитьПараметр("Артикул", "%"+ТекстЗапроса+"%"); 
	РезультатЗапроса = Запрос.Выполнить().Выбрать();
	Если РезультатЗапроса.Количество() = 0 Тогда
		Возврат("Не найдена номенклатура с артикулом " + ТекстЗапроса);
	КонецЕсли;
	Ответ = "";
	Пока РезультатЗапроса.Следующий() цикл
		
		Если РезультатЗапроса.ВНаличииКонечныйОстаток < 10 Тогда
			Ответ = Ответ  + " /на складе: "+ "«г."+РезультатЗапроса.Склад + "»" + ": " + РезультатЗапроса.ВНаличииКонечныйОстаток + " шт. "+ "
			|" + Символы.ПС;
		Иначе
			Ответ = Ответ  + " /на складе: " + "«г."+ РезультатЗапроса.Склад + "»" + ": " + " - более 10" +  " шт. "+ "
			|" + Символы.ПС;
			
		КонецЕсли;
	КонецЦикла;
	Возврат Ответ;  
КонецФункции 
Показать



Функция ПолучитьМедиаСсылку(ТекстЗапроса)
	Заголовок = Справочники.ПользовательскиеПоля.НайтиПоКоду("000000001");
	Запрос = Новый запрос;
	Запрос.Текст =  "ВЫБРАТЬ
	|	СправочникНоменклатура.Ссылка КАК Номенклатура,
	|	&Артикул КАК Артикул,
	|   СправочникНоменклатура.МедиаСсылки КАК МедиаСсылки
	|ИЗ
	|	Справочник.Номенклатура КАК СправочникНоменклатура
	|ГДЕ
	|	СправочникНоменклатура.Артикул ПОДОБНО &Артикул 
	|	И СправочникНоменклатура.ОтправитьВТГ = ИСТИНА
	|
	|СГРУППИРОВАТЬ ПО
	|	СправочникНоменклатура.Ссылка"; 
	
	Запрос.УстановитьПараметр("Артикул", "%"+ТекстЗапроса+"%");	
	РезультатЗапроса = Запрос.Выполнить().Выбрать();
	Ответ2 = "";
	Пока РезультатЗапроса.Следующий() Цикл
	Если ЗначениеЗаполнено(РезультатЗапроса.МедиаСсылки) Тогда
		     Ответ2 = Ответ2 + "[" + Заголовок.ЗаголовокМедиаСсылки  + "]" + "(" + РезультатЗапроса.МедиаСсылки+ ")" + "
			|" + Символы.ПС;
		
		 КонецЕсли; 
	 КонецЦикла;
	 
	Возврат Ответ2;
КонецФункции
Показать


Функция ПолучитьНоменклатуру (ТекстЗапроса)
	Запрос = Новый запрос;
	Запрос.Текст =  "ВЫБРАТЬ
					|	СправочникНоменклатура.Ссылка КАК Номенклатура,
					|	&Артикул КАК Артикул
					|ИЗ
					|	Справочник.Номенклатура КАК СправочникНоменклатура
					|ГДЕ
					|	СправочникНоменклатура.Артикул ПОДОБНО &Артикул 
					|	И СправочникНоменклатура.ОтправитьВТГ = ИСТИНА
					|
					|СГРУППИРОВАТЬ ПО
					|	СправочникНоменклатура.Ссылка"; 
	
	Запрос.УстановитьПараметр("Артикул", "%"+ТекстЗапроса+"%"); 
	РезультатЗапроса = Запрос.Выполнить().Выбрать();
	Если РезультатЗапроса.Количество() = 0 Тогда
		Возврат("Не найдена номенклатура с артикулом " + ТекстЗапроса);
	КонецЕсли;
	Ответ1 = "";
	Пока РезультатЗапроса.Следующий() цикл
		Ответ1 = Ответ1  + РезультатЗапроса.Номенклатура+ "
				|" + Символы.ПС;

	КонецЦикла;
	Возврат Ответ1;  
КонецФункции
Показать



и как тогда все это запихнуть в один запрос?)
12. yispepotri 06.12.23 15:47 Сейчас в теме
(10) так у вас в первом запросе можно получить номенклатуру, артикул, медиассылку, остатки, зачем остальные?
13. Evgen13 06.12.23 15:48 Сейчас в теме
(12)
не знаю) так удобнее для меня) а как там все это получить?)
14. yispepotri 06.12.23 15:49 Сейчас в теме
(13) Выбрать
......
перечисляете что нужно


просто у вас какое-то не нужное дублирование запросов, когда можно одним все получить
3. ixijixi 1992 06.12.23 15:20 Сейчас в теме
В цикл надо запихнуть

Номенклатура = ПолучитьНоменклатуру(ТекстЗапроса);
для каждого Стр из Номенклатура Цикл
   СтруктураСообщения.Вставить("text", Стр.Артикул + Стр.Остаток + Стр.Медиа);
КонецЦикла;
6. Evgen13 06.12.23 15:35 Сейчас в теме
(3)
Номенклатура = ПолучитьНоменклатуру(ТекстЗапроса);
для каждого Стр из Номенклатура Цикл
СтруктураСообщения.Вставить("text", Стр.Артикул + Стр.Остаток + Стр.Медиа);
КонецЦикла;


Итератор для значения не определен
8. ixijixi 1992 06.12.23 15:41 Сейчас в теме
(6) Надо выбрать одним запросом номенклатуру, остатки и медиассылки (что бы это ни значило) и в цикле отправлять сообщения
18. Evgen13 06.12.23 16:07 Сейчас в теме
(16)
и все равно он прислал все в одно сообщение


(8) Как указали, так не получилось. Все идет в одно сообщение(
11. Evgen13 06.12.23 15:46 Сейчас в теме
там каждая функция возвращает свое значение)
15. Evgen13 06.12.23 16:01 Сейчас в теме
(14)

Функция ПолучитьВсе(ТекстЗапроса)
Заголовок = Справочники.ПользовательскиеПоля.НайтиПоКоду("000000001");	
Запрос = Новый запрос;
	Запрос.Текст =  "ВЫБРАТЬ
					|	СправочникНоменклатура.Ссылка КАК Номенклатура,
					|   СправочникНоменклатура.МедиаСсылки КАК МедиаСсылки,
					|	СУММА(ЕСТЬNULL(СвободныеОстаткиОстаткиИОбороты.ВНаличииКонечныйОстаток, 0)) КАК ВНаличииКонечныйОстаток,
					|	&Артикул КАК Артикул,
					|	ЕСТЬNULL(СвободныеОстаткиОстаткиИОбороты.Склад, """") КАК Склад
					//  Добавил наименование склада для отображения в ТГ
					//|   СвободныеОстаткиОстаткиИОбороты.Склад.НаименованиеВТг КАК СкладНаименованиеВТг
					|ИЗ
					|	Справочник.Номенклатура КАК СправочникНоменклатура
					|		Правое СОЕДИНЕНИЕ РегистрНакопления.СвободныеОстатки.ОстаткиИОбороты(, , , , ) КАК СвободныеОстаткиОстаткиИОбороты
					|		ПО (СвободныеОстаткиОстаткиИОбороты.Номенклатура = СправочникНоменклатура.Ссылка)
					|ГДЕ
					|	СправочникНоменклатура.Артикул ПОДОБНО &Артикул 
					|	И СправочникНоменклатура.ОтправитьВТГ = ИСТИНА
					|	И СвободныеОстаткиОстаткиИОбороты.Склад.ПоказыватьВТг = ИСТИНА
					|
					|СГРУППИРОВАТЬ ПО
					|	СправочникНоменклатура.Ссылка,
					|	ЕСТЬNULL(СвободныеОстаткиОстаткиИОбороты.Склад, """")
					//|	СвободныеОстаткиОстаткиИОбороты.Склад.НаименованиеВТг
					|УПОРЯДОЧИТЬ ПО
					|	Склад ВОЗР"; 
	
	Запрос.УстановитьПараметр("Артикул", "%"+ТекстЗапроса+"%"); 
	РезультатЗапроса = Запрос.Выполнить().Выбрать();
	Если РезультатЗапроса.Количество() = 0 Тогда
		Возврат("Не найдена номенклатура с артикулом " + ТекстЗапроса);
	КонецЕсли;
	Ответ = "";
	Пока РезультатЗапроса.Следующий() цикл
		
		Если РезультатЗапроса.ВНаличииКонечныйОстаток < 10 Тогда
			Ответ = Ответ  + РезультатЗапроса.Номенклатура + Символы.ПС + " /на складе: "+ "«г."+РезультатЗапроса.Склад + "»" + ": " + РезультатЗапроса.ВНаличииКонечныйОстаток + " шт. "+ "
			|" + Символы.ПС + "[" + Заголовок.ЗаголовокМедиаСсылки  + "]" + "(" + РезультатЗапроса.МедиаСсылки+ ")" + "
			|" + Символы.ПС;
		Иначе
			Ответ = Ответ  + РезультатЗапроса.Номенклатура + Символы.ПС + " /на складе: " + "«г."+ РезультатЗапроса.Склад + "»" + ": " + " - более 10" +  " шт. "+ "
			|" + Символы.ПС + "[" + Заголовок.ЗаголовокМедиаСсылки  + "]" + "(" + РезультатЗапроса.МедиаСсылки+ ")" + "
			|" + Символы.ПС;
			
		КонецЕсли;
	КонецЦикла;
	Возврат Ответ;  
	
КонецФУнкции
Показать


сделал так. Но он не группирует номенклатуру.

Вывод получается вот таким

HI-MACS Galaxy T001 Black Hole 127603680 (Искусственный камень) вывод 22г
/на складе: «г.Основной склад»: 1 шт.

Ссылка на фотографию:

Акции и скидки
/на складе: «г.Основной склад»: 8 шт.

Ссылка на фотографию:

HI-MACS Galaxy T001 Black Hole 127603680 (Искусственный камень) вывод 22г
/на складе: «г.Казань ВТС ГРУПП»: - более 10 шт.

Ссылка на фотографию:

Акции и скидки
/на складе: «г.Казань ВТС ГРУПП»: - более 10 шт.

Ссылка на фотографию:
16. yispepotri 06.12.23 16:05 Сейчас в теме
(15)он группирует правильно, как вы указали, по номенклатуре и по складу
17. Evgen13 06.12.23 16:06 Сейчас в теме
(16)
а нужно чтобы группировал только по номенклатуре. К примеру

Акции и скидки
/на складе: «г.Казань ВТС ГРУПП»: - более 10 шт.
/на складе: «г.Основной склад»: 8 шт.
ссылка на фото

HI-MACS Galaxy T001 Black Hole 127603680 (Искусственный камень) вывод 22г
/на складе: «г.Основной склад»: 1 шт.
/на складе: «г.Казань ВТС ГРУПП»: - более 10 шт.
ссылка на фото
19. yispepotri 06.12.23 16:23 Сейчас в теме
(17)где выполняется выборка, добавать обход по группировкам, при первом цикле собирать номенклатуры, а при следующем Склад+ Остатки в конце цикла группировки по номенклатуре собирать все воедино
20. Evgen13 06.12.23 16:24 Сейчас в теме
(19)
Это как, подскажите, пожалуйста..
21. yispepotri 06.12.23 16:32 Сейчас в теме
(20)
ВыборкаПоНоменклатуре = Запрос.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
	
	Пока ВыборкаПоНоменклатуре.Следующий() Цикл
		
		ВыборкаПоСкладу = ВыборкаПоНоменклатуре.Выбрать();
		
		РезультатСклады = "";
		Пока ВыборкаПоСкладу.Следующий() Цикл
			РезультатСклады = Строка(ВыборкаПоСкладу.Склад) + "  "+ Строка(ВыборкаПоСкладу.Остатки) + Символы.ПС;			
		КонецЦикла;
		
		Результат = Строка(ВыборкаПоНоменклатуре.Номенклатура) + Символы.ПС + РезультатСклады; 
	КонецЦикла;	
Показать



примерно так, а там переделаете под себя
22. Evgen13 06.12.23 16:38 Сейчас в теме
(21)
ВыборкаПоНоменклатуре = Запрос.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

Пока ВыборкаПоНоменклатуре.Следующий() Цикл

ВыборкаПоСкладу = ВыборкаПоНоменклатуре.Выбрать();

РезультатСклады = "";
Пока ВыборкаПоСкладу.Следующий() Цикл
РезультатСклады = Строка(ВыборкаПоСкладу.Склад) + " "+ Строка(ВыборкаПоСкладу.Остатки) + Символы.ПС;
КонецЦикла;

Результат = Строка(ВыборкаПоНоменклатуре.Номенклатура) + Символы.ПС + РезультатСклады;
КонецЦикла;
Показать


непонятно совсем(

можете подробнее?
23. yispepotri 06.12.23 16:39 Сейчас в теме
24. Evgen13 06.12.23 16:49 Сейчас в теме
25. yispepotri 06.12.23 16:56 Сейчас в теме
(24) непонятное сообщение
26. Evgen13 06.12.23 17:00 Сейчас в теме
(25)
ничего не получилось с обходом резульатата
27. yispepotri 06.12.23 17:05 Сейчас в теме
(26)через отладку смотрите, что именно не проходит
ничего не получилось
это не ответ
28. Evgen13 06.12.23 17:12 Сейчас в теме
(27)

смотрите, я написал как Вы сказали,

Запрос.Текст =  "ВЫБРАТЬ
					|	СправочникНоменклатура.Ссылка КАК Номенклатура,
					|   СправочникНоменклатура.МедиаСсылки КАК МедиаСсылки,
					|	СУММА(ЕСТЬNULL(СвободныеОстаткиОстаткиИОбороты.ВНаличииКонечныйОстаток, 0)) КАК ВНаличииКонечныйОстаток,
					|	&Артикул КАК Артикул,
					|	ЕСТЬNULL(СвободныеОстаткиОстаткиИОбороты.Склад, """") КАК Склад
					//  Добавил наименование склада для отображения в ТГ
					//|   СвободныеОстаткиОстаткиИОбороты.Склад.НаименованиеВТг КАК СкладНаименованиеВТг
					|ИЗ
					|	Справочник.Номенклатура КАК СправочникНоменклатура
					|		Правое СОЕДИНЕНИЕ РегистрНакопления.СвободныеОстатки.ОстаткиИОбороты(, , , , ) КАК СвободныеОстаткиОстаткиИОбороты
					|		ПО (СвободныеОстаткиОстаткиИОбороты.Номенклатура = СправочникНоменклатура.Ссылка)
					|ГДЕ
					|	СправочникНоменклатура.Артикул ПОДОБНО &Артикул 
					|	И СправочникНоменклатура.ОтправитьВТГ = ИСТИНА
					|	И СвободныеОстаткиОстаткиИОбороты.Склад.ПоказыватьВТг = ИСТИНА
					|
					|СГРУППИРОВАТЬ ПО
					|	СправочникНоменклатура.Ссылка,
					|	ЕСТЬNULL(СвободныеОстаткиОстаткиИОбороты.Склад, """"),
					|	СправочникНоменклатура.МедиаСсылки
					//|	СвободныеОстаткиОстаткиИОбороты.Склад.НаименованиеВТг
					|УПОРЯДОЧИТЬ ПО
					|	Склад ВОЗР"; 
	
	Запрос.УстановитьПараметр("Артикул", "%"+ТекстЗапроса+"%"); 
	РезультатЗапроса = Запрос.Выполнить().Выбрать();
	Если РезультатЗапроса.Количество() = 0 Тогда
		Возврат("Не найдена номенклатура с артикулом " + ТекстЗапроса);
	КонецЕсли;
	Ответ = "";
ВыборкаПоНоменклатуре = Запрос.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

Пока ВыборкаПоНоменклатуре.Следующий() Цикл

ВыборкаПоСкладу = ВыборкаПоНоменклатуре.Выбрать();

РезультатСклады = "";
Пока ВыборкаПоСкладу.Следующий() Цикл
РезультатСклады = Строка(ВыборкаПоСкладу.Склад) + " "+ Строка(ВыборкаПоСкладу.Остатки) + Символы.ПС;
КонецЦикла;

Результат = Строка(ВыборкаПоНоменклатуре.Номенклатура) + Символы.ПС + РезультатСклады;
КонецЦикла;
	Пока РезультатЗапроса.Следующий() цикл
	Если ЗначениеЗаполнено (РезультатЗапроса.МедиаСсылки) Тогда	
		Если РезультатЗапроса.ВНаличииКонечныйОстаток < 10 Тогда
			Ответ = Ответ  + РезультатЗапроса.Номенклатура + Символы.ПС + " /на складе: "+ "«г."+РезультатЗапроса.Склад + "»" + ": " + РезультатЗапроса.ВНаличииКонечныйОстаток + " шт. "+ "
			|" + Символы.ПС + "[" + Заголовок.ЗаголовокМедиаСсылки  + "]" + "(" + РезультатЗапроса.МедиаСсылки+ ")" + "
			|" + Символы.ПС;
		Иначе
			Ответ = Ответ  + РезультатЗапроса.Номенклатура + Символы.ПС + " /на складе: " + "«г."+ РезультатЗапроса.Склад + "»" + ": " + " - более 10" +  " шт. "+ "
			|" + Символы.ПС + "[" + Заголовок.ЗаголовокМедиаСсылки  + "]" + "(" + РезультатЗапроса.МедиаСсылки+ ")" + "
			|" + Символы.ПС; 
		КонецЕсли;
	Иначе
		Если РезультатЗапроса.ВНаличииКонечныйОстаток < 10 Тогда
			Ответ = Ответ  + РезультатЗапроса.Номенклатура + Символы.ПС + " /на складе: "+ "«г."+РезультатЗапроса.Склад + "»" + ": " + РезультатЗапроса.ВНаличииКонечныйОстаток + " шт. "+ "
			|" + Символы.ПС;
		Иначе
			Ответ = Ответ  + РезультатЗапроса.Номенклатура + Символы.ПС + " /на складе: " + "«г."+ РезультатЗапроса.Склад + "»" + ": " + " - более 10" +  " шт. "+ "
			|" + Символы.ПС ; 
		КонецЕсли;

			
		КонецЕсли;
	КонецЦикла;
	Возврат Ответ;  
Показать


и ничего не изменилось. В выборке по складам все пусто
29. yispepotri 06.12.23 17:18 Сейчас в теме
(28) попробуйте так, возможно получится
ВыборкаПоСкладу = ВыборкаПоНоменклатуре.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
30. Evgen13 06.12.23 17:28 Сейчас в теме
(29)

нет, не хочет он группировать. Там везде значения неопределенно.
31. yispepotri 07.12.23 09:38 Сейчас в теме
(30)небольшие корректировки
в запросе добавить
|ИТОГИ ПО
|СправочникНоменклатура.Ссылка,
|ЕСТЬNULL(СвободныеОстаткиОстаткиИОбороты.Склад, """")
...........


и в выборке добавить выполнить
ВыборкаПоНоменклатуре = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
33. Evgen13 07.12.23 10:34 Сейчас в теме
(31)

Так тоже пробовал, но нет группировки по номенклатуре.

то есть не получаю ответ в виде:

Номенклатура
Остаток склада А
Остаток склада Б

Номенклатура 2
ОСтаток склада А
Сотаток склада В
34. yispepotri 07.12.23 10:40 Сейчас в теме
(33) а в каком виде тогда получаете данные?
35. Evgen13 07.12.23 10:47 Сейчас в теме
36. yispepotri 07.12.23 10:50 Сейчас в теме
(35)при отладке какие данные вы получаете?
37. Evgen13 07.12.23 10:58 Сейчас в теме
(36)
Номенклатуру, остатки, как текст
38. yispepotri 07.12.23 10:59 Сейчас в теме
(37)по выборке номенклатура не выбирается?
39. Evgen13 07.12.23 11:01 Сейчас в теме
40. yispepotri 07.12.23 11:03 Сейчас в теме
(39)на словах мне очень трудно что-то подсказать, быть лучше если вы покажите результат отладки
41. Evgen13 07.12.23 11:06 Сейчас в теме
Смотрите. Это все я как бы запихиваю в одно сообщение.
То есть это скорее всего будет неудобно.

а как сделать, чтобы каждая номенклатура, выходила отдельным сообщением?
(40)
42. yispepotri 07.12.23 11:08 Сейчас в теме
(41) выполнять построение сообщения внутри цикла выборки номенклатуры
32. Evgen13 07.12.23 10:32 Сейчас в теме
Помогите, пожалуйста, с данным вопросом.

Функция ПолучитьВсе(ТекстЗапроса)
Заголовок = Справочники.ПользовательскиеПоля.НайтиПоКоду("000000001");	
Запрос = Новый запрос;
	Запрос.Текст =  "ВЫБРАТЬ
					|	СправочникНоменклатура.Ссылка КАК Номенклатура,
					|   СправочникНоменклатура.МедиаСсылки КАК МедиаСсылки,
					|	СУММА(ЕСТЬNULL(СвободныеОстаткиОстаткиИОбороты.ВНаличииКонечныйОстаток, 0)) КАК ВНаличииКонечныйОстаток,
					|	&Артикул КАК Артикул,
					|	ЕСТЬNULL(СвободныеОстаткиОстаткиИОбороты.Склад, """") КАК Склад
					//  Добавил наименование склада для отображения в ТГ
					//|   СвободныеОстаткиОстаткиИОбороты.Склад.НаименованиеВТг КАК СкладНаименованиеВТг
					|ИЗ
					|	Справочник.Номенклатура КАК СправочникНоменклатура
					|		Правое СОЕДИНЕНИЕ РегистрНакопления.СвободныеОстатки.ОстаткиИОбороты(, , , , ) КАК СвободныеОстаткиОстаткиИОбороты
					|		ПО (СвободныеОстаткиОстаткиИОбороты.Номенклатура = СправочникНоменклатура.Ссылка)
					|ГДЕ
					|	СправочникНоменклатура.Артикул ПОДОБНО &Артикул 
					|	И СправочникНоменклатура.ОтправитьВТГ = ИСТИНА
					|	И СвободныеОстаткиОстаткиИОбороты.Склад.ПоказыватьВТг = ИСТИНА
					|
					|СГРУППИРОВАТЬ ПО
					|	СправочникНоменклатура.Ссылка,
					|	ЕСТЬNULL(СвободныеОстаткиОстаткиИОбороты.Склад, """"),
					|	СправочникНоменклатура.МедиаСсылки
					//|	СвободныеОстаткиОстаткиИОбороты.Склад.НаименованиеВТг
					|УПОРЯДОЧИТЬ ПО
					|	Номенклатура ВОЗР,
                    |    Склад ВОЗР
					|Итоги ПО
					|	Номенклатура";
	
	Запрос.УстановитьПараметр("Артикул", "%"+ТекстЗапроса+"%"); 
	РезультатЗапросаНоменклатура = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Номенклатура");
    Если РезультатЗапросаНоменклатура.Количество() = 0 Тогда
        Возврат("Не найдена номенклатура с артикулом " + ТекстЗапроса);
    КонецЕсли;
    Ответ = "";
	Пока РезультатЗапросаНоменклатура.Следующий() Цикл
		РезультатЗапроса = РезультатЗапросаНоменклатура.Выбрать();
		Пока РезультатЗапроса.Следующий() цикл
	Если ЗначениеЗаполнено (РезультатЗапроса.МедиаСсылки) Тогда	
		Если РезультатЗапроса.ВНаличииКонечныйОстаток < 10 Тогда
			Ответ = Ответ  + РезультатЗапроса.Номенклатура + Символы.ПС + " /на складе: "+ "«г."+РезультатЗапроса.Склад + "»" + ": " + РезультатЗапроса.ВНаличииКонечныйОстаток + " шт. "+ "
			|" + Символы.ПС + "[" + Заголовок.ЗаголовокМедиаСсылки  + "]" + "(" + РезультатЗапроса.МедиаСсылки+ ")" + "
			|" + Символы.ПС;
		Иначе
			Ответ = Ответ  + РезультатЗапроса.Номенклатура + Символы.ПС + " /на складе: " + "«г."+ РезультатЗапроса.Склад + "»" + ": " + " - более 10" +  " шт. "+ "
			|" + Символы.ПС + "[" + Заголовок.ЗаголовокМедиаСсылки  + "]" + "(" + РезультатЗапроса.МедиаСсылки+ ")" + "
			|" + Символы.ПС; 
		КонецЕсли;
	Иначе
		Если РезультатЗапроса.ВНаличииКонечныйОстаток < 10 Тогда
			Ответ = Ответ  + РезультатЗапроса.Номенклатура + Символы.ПС + " /на складе: "+ "«г."+РезультатЗапроса.Склад + "»" + ": " + РезультатЗапроса.ВНаличииКонечныйОстаток + " шт. "+ "
			|" + Символы.ПС;
		Иначе
			Ответ = Ответ  + РезультатЗапроса.Номенклатура + Символы.ПС + " /на складе: " + "«г."+ РезультатЗапроса.Склад + "»" + ": " + " - более 10" +  " шт. "+ "
			|" + Символы.ПС ; 
		КонецЕсли;

			
	КонецЕсли;
КонецЦикла;

	КонецЦикла;
	Возврат Ответ;  
	
КонецФУнкции
Показать


данная функция работает и выводит данные. Но не группирует данные по номенклатуре и складам.

Ответ получается в виде:


HI-MACS Galaxy T001 Black Hole 127603680 (Искусственный камень) вывод 22г
/на складе: «г.Основной склад»: 1 шт.

HI-MACS Galaxy T001 Black Hole 127603680 (Искусственный камень) вывод 22г
/на складе: «г.Казань ВТС ГРУПП»: - более 10 шт.

HI-MACS Galaxy T002 Uranus 127603680 (Искусственный камень)
/на складе: «г.Казань ВТС ГРУПП»: 5 шт.

HI-MACS Sparkle P106 Koal 127603680 (Искуственный камень)
/на складе: «г.Казань ВТС ГРУПП»: - более 10 шт.

Акции и скидки
/на складе: «г.Основной склад»: 8 шт.

Ссылка на фотографию:

Акции и скидки
/на складе: «г.Казань ВТС ГРУПП»: - более 10 шт.

Ссылка на фотографию:
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот