Подскажите по коду как правильно будет

1. Spectr512 08.11.22 08:39 Сейчас в теме
Доброго времени суток, господа программисты!

Подскажите момент мне нужна обработка при появлений записей в РС отправлять уведомление по электронной почте.
Вообще то мне сказали сделать это РегламентнымЗаданием но я для теста и для себя все всегда переношу во внешние формы.
Поэтому пишу обработку но столкнулся с небольшими трудностями.
По сути теории я знаю побольше а вот практики не хватает прям сильно. Поэтому иногда происходит что я понимаю с теории но не понимаю как это сделать посредством кода.

Вопрос 1 правильно ли формировать два запроса в одной процедуре? Если у меня таблицы вообще не связаны по логике. Пример простой при появлений новых записей в РС шло уведомление по КИ ФизЛиц. В данном случае записи в регистре сведений попросту не совпадают с записями КонтактнойИнформации в справочнике Физических Лиц.
По сути мне предложили сделать все через новый справочник но я подумал почему не использовать лучше программные средства чем писать проще, но мне хочется больше использовать БСП и общие модули.

По сути обычно я формировал запросы и объединял их и как вложенные запросы и как ВТ. Но тут прям вообще не сходятся данные.

Запрос = Новый Запрос
Запрос.Текс = бла бла бла

Запрос.Установить.Параметр блабала

РезультатЗапроса = Запрос.Выполнить();
	
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
	
	КонецЦикла;
Показать


Все тоже самое по запросу 2

Вот теперь рождается вопрос №2
У меня два запроса выполняются в одной процедуре ВыполнитьПоискНужныхЗаписей () Экспорт соответственно на сервере
А вторая Процедура отвечает за ОтправкуУведомлений по почте через БСП РаботаСПочтовымиСообщениями и формирует текст письма.

Собственно сам вопрос как правильно передать значения из одной процедуры в другую? Нужно ли мне установить значения в цикле или правильно задать в процедуре и в цикле. ВыполнитьПоискНужныхЗаписей (Значение1, Значение2) и в цикле указать

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
       
Значение1 = "" 
	
КонецЦикла;


Надо ли мне во второй Процедуре задавать те же значения или пер ОтправкуУведомлений (Значение1?)

Или достаточно передать значение из первой процедуры путем указание имени процедуры в данном случае
Адресат = ВыполнитьПоискНужныхЗаписей.АдресЭлектроннойПочты

Как правильно передать значения из одной процедуры в другую.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
14. lmnlmn 69 08.11.22 11:30 Сейчас в теме
(1) Можно как-то попроще и не столь абстрактно задачу сформулировать для понимания? К примеру: отправить письмо всем пользователям у которых есть адрес эл. почты при появлении новых записей в регистре.
15. Spectr512 08.11.22 11:44 Сейчас в теме
(14) Выбрал КИ ФизЛиц а не справочник Пользователи. А как вы имели ввиду попроще?
2. user1278383 4 08.11.22 08:42 Сейчас в теме
Прочитать про ВыполнитьПакет в СП
3. Spectr512 08.11.22 08:53 Сейчас в теме
(2)
ВыполнитьПакет в СП


Правильно ли тогда запихать все в один запрос через ВТ и потом использовать Пакет?
4. user1278383 4 08.11.22 09:27 Сейчас в теме
(3) в чем суть проблемы? Передать параметры из одной процедуры в другую?
5. Spectr512 08.11.22 09:32 Сейчас в теме
(4) Скорее всего да, просто куча способов как я понял. Но тут скорее всего и понять принцип как лучше, правильнее использовать для передачи параметров.

Скорее всего нужно так чтоб я мог использовать это и в ВО а потом перенести в глобальный модуль! Поэтому реквизиты ВО отпадают.
6. Spectr512 08.11.22 09:40 Сейчас в теме
(4) Хотя правильнее я понял для меня важно передать результаты запроса из одной процедуры в другую. У процедуры запроса я указал Экспорт.
8. Spectr512 08.11.22 10:07 Сейчас в теме
(4) Результаты запросов из процедуры1 передать в процедуру2
Либо сделить из процедуры1 - функцию чтоб передать это результатом?
11. user1278383 4 08.11.22 10:42 Сейчас в теме
(8) Лучше сначала получить все необходимые данные, а потом их обрабатывать. Если два запроса разные по логике, то можно и разбить на два. Пожертвовать производительностью в угоду читабельности думаю можно. Данные можно передать, например, воспользовавшись менеджером временных таблиц, вся зарплата на них работает.
7. Ivan_Sol 19 08.11.22 09:56 Сейчас в теме
Добрый день, для заказчика главное - чтобы работало.
А для вас - чтобы заказчика все устраивало.
А по логике - чем меньше запросов к базе тем лучше.
В разных источниках пишут по разному, где одна процедура - один запрос, где все в одной - тут можно придерживаться 1С:Предприятие 8. Система стандартов и методик разработки конфигураций - в жизни пригодится
9. Spectr512 08.11.22 10:12 Сейчас в теме
(7) Вы правы. Но по сути у меня почему то всегда куча решений в теории, а как обходиться на практики не совсем понимаю. Какой метод применить лучше.
В данном случае как будет лучше передать результаты запроса процедуры1 в процедуру2 и как правильно будет впоследствие указать правильно на команду в клиенте.

Нужно ли задавать параметры процедуры(Значение1, Значение2) и передавать их в процедуру2(Значение1, Значени2?
10. Ivan_Sol 19 08.11.22 10:19 Сейчас в теме
(9)Сбросьте мне текст вашего решения, я отредактирую как я считаю нужным - потом сравните - так будет продуктивнее
12. Spectr512 08.11.22 10:59 Сейчас в теме
(10)
&НаСервере
Процедура ВыполнитьПоискНужныхЗаписей() Экспорт
	
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	МП_ОчередьЧеков.ЧекККМ.Ссылка КАК Ссылка,
		|	МП_ОчередьЧеков.ЧекККМ.Дата КАК Дата,
		|	МП_ОчередьЧеков.ЧекККМ.Номер КАК Номер,
		|	МП_ОчередьЧеков.ЧекККМ.Ответственный КАК Ответственный
		|ИЗ
		|	РегистрСведений.МП_ОчередьЧеков КАК МП_ОчередьЧеков
		|СГРУППИРОВАТЬ ПО
		|	МП_ОчередьЧеков.ЧекККМ.Дата,
		|	МП_ОчередьЧеков.ЧекККМ.Ссылка,
		|	МП_ОчередьЧеков.ЧекККМ.Номер,
		|	МП_ОчередьЧеков.ЧекККМ.Ответственный";
	
	Запрос.УстановитьПараметр("Дата", 			НачалоДня(ТекущаяДата()));	
	
	РезультатЗапроса = Запрос.Выполнить();
	
	ВыборкаДетальныеЗаписи1 = РезультатЗапроса.Выбрать();
	
	Пока ВыборкаДетальныеЗаписи1.Следующий() Цикл
		
	КонецЦикла;
	
	
	

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

&НаСервере
Функция  ОтправитьУведомлениеНаСервере() 
	
	УведомлениеОтправлено = ЛОЖЬ;
	
	темаПисьма = "Весят очереди чеков";
	
	телоПисьма = темаПисьма + "." + СИМВОЛЫ.ПС;
	
	телоПисьма = телоПисьма + СИМВОЛЫ.ПС + СИМВОЛЫ.ПС
			+ "С уважением," + СИМВОЛЫ.ПС 
			+ "  Некто";

		СтруктураПолучатель = Новый Структура("Адрес,Представление");
		СтруктураПолучатель.Адрес			= ВыполнитьПоискНужныхЗаписей.АдресЭП;
		СтруктураПолучатель.Представление	= ВыполнитьПоискНужныхЗаписей.Ссылка;
		
		времПолучателиСообщения = Новый Массив;
		времПолучателиСообщения.Добавить(СтруктураПолучатель);

		//СтруктураОтправитель = Новый Структура("Адрес,Представление");
		//СтруктураОтправитель.Адрес			= УчЗаписьЭлПочты;
		//СтруктураОтправитель.Представление	= СТРОКА(УчЗаписьЭлПочты); // "Системная учетная запись";
		//времАдресаОтвета = Новый Массив;
		//времАдресаОтвета.Добавить(СтруктураОтправитель);

		времПараметрыПисьма = Новый Структура();	
		времПараметрыПисьма.Вставить("Кому", 						ВыполнитьПоискНужныхЗаписей.АдресЭП);
		времПараметрыПисьма.Вставить("ПолучателиСообщения",			времПолучателиСообщения);
		времПараметрыПисьма.Вставить("Тема",						темаПисьма);
		времПараметрыПисьма.Вставить("Тело",						телоПисьма);
		времПараметрыПисьма.Вставить("ТипТекста",					Перечисления.ТипыТекстовЭлектронныхПисем.ПростойТекст);

	   	ИдентификаторПочтовогоСообщения = РаботаСПочтовымиСообщениями.ОтправитьПочтовоеСообщение(времПараметрыПисьма);
		
		УведомлениеОтправлено = ИСТИНА;
		
		
		Возврат УведомлениеОтправлено;
		
КонецФункции

&НаКлиенте
Функция ОтправитьУведомление(Команда)
	ОтправитьУведомлениеНаСервере();
КонецФункции
Показать
13. Ivan_Sol 19 08.11.22 11:19 Сейчас в теме
Я так полагаю что ВыполнитьПоискНужныхЗаписей - должна быть функцией и возвращать структуру?
16. Spectr512 08.11.22 11:45 Сейчас в теме
(13) И работать с Результатами запросов? Ну во второй процедуре выводить через Результат1 и Результат2?
17. lmnlmn 69 08.11.22 11:50 Сейчас в теме
(16) А точно взаимосвязи нет между запросами? Вы же как-то собираетесь их программно обрабатывать.
18. Spectr512 08.11.22 12:04 Сейчас в теме
(17)
и? Вы же как-то собираетесь их программно обрабатывать.


Ну смотрите запрос1 тащит информацию из РС по факту мне нужна лишь запись которая там появляется ничего большего. Туда попадают зависшие ЧекККМ по бонусам.
Мне нужно чтоб как только появляется запись, уведомление о нем рассылалась конкретным людям (Службе поддержки). Решил использовать КИ ФизЛиц меньше заморочек чем с Пользователями.

Вот как логически связать две абсолютно разные таблицы, я пойму если было бы нужно чтоб рассылка шла ответственному лицу или как то привязка была в ЧекККМ но их нет. Поэтому составляю два запроса.
19. Ivan_Sol 19 08.11.22 12:10 Сейчас в теме
Как по мне так проще 2 функции 1 возвращает записи которые надо отсылать а вторая функции - список кому надо отсылать. Обе функции не экспортные НаСервереБезКонтекста
20. Spectr512 08.11.22 12:20 Сейчас в теме
(19) Объединил в одну. По коду ошибок не пишет, момент когда пытаюсь выполнить Команду в приложении пишет Ошибка недостаточно фактических параметров.
21. Spectr512 08.11.22 13:22 Сейчас в теме
Снимаю вопрос я разобрался во всем.

Но есть момент мне сказали не использовать БСП РаботаСПочтовымиСообщениями а писать свой код при отправке, если есть кто знает примеры кода или же ветки на форуме попрошу поделиться.
22. svilsa 12 08.11.22 15:41 Сейчас в теме
(21)Вот пример, как отправить email письмо напрямую из УТ 11
УчетнаяЗапись = Справочники.УчетныеЗаписиЭлектроннойПочты.СистемнаяУчетнаяЗаписьЭлектроннойПочты;
ТекстСообщения = Объект.НазваниеПрайса;
Тема = ТекстСообщения;
ИнПочта                       = Новый ИнтернетПочта;            
ИнПрофиль                     = Новый ИнтернетПочтовыйПрофиль;
ИнПрофиль.ВремяОжидания       = 180; 
ЗаполнитьЗначенияСвойств(ИнПрофиль, УчетнаяЗапись);
ИнПрофиль.АдресСервераSMTP    = УчетнаяЗапись.СерверИсходящейПочты;//"smtp.mail.ru";      
ИнПрофиль.АдресСервераPOP3    = УчетнаяЗапись.СерверВходящейПочты;//"pop.mail.ru";
ИнПрофиль.ПользовательSMTP    = ИнПрофиль.Пользователь;/
УстановитьПривилегированныйРежим(Истина);
Пароли = ОбщегоНазначения.ПрочитатьДанныеИзБезопасногоХранилища(УчетнаяЗапись, "Пароль, ПарольSMTP");
//УстановитьПривилегированныйРежим(Ложь);
ИнПрофиль.Пароль = Пароли.Пароль;
ИнПрофиль.ПарольSMTP = Пароли.ПарольSMTP;
ИнПрофиль.ИспользоватьSSLSMTP = Истина;
ИнПрофиль.АутентификацияSMTP  = СпособSMTPАутентификации.Login;      

Сообщение                     = Новый ИнтернетПочтовоеСообщение; 
Сообщение.Отправитель.Адрес             = ИнПрофиль.Пользователь;//
Сообщение.Отправитель.ОтображаемоеИмя   = "Какое-то имя";
Сообщение.Тема                          = Тема;
Сообщение.Тексты.Добавить(ТекстСообщения, ТипТекстаПочтовогоСообщения.HTML);
Сообщение.Отправитель = ИнПрофиль.Пользователь;
Для каждого Адрес из Адреса Цикл
	Сообщение.Получатели.Добавить(Адрес);
КонецЦикла;

Попытка            
	ИнПочта.Подключиться(ИнПрофиль);      
Исключение            
	Сообщить("При подключени к серверу произошла ошибка! Проверьте учетные данные профиля почты." + ОписаниеОшибки(), СтатусСообщения.Важное);      
КонецПопытки;            
Попытка            
	ИнПочта.Послать(Сообщение);            
	Сообщить("Письмо отправлено! Адрес: " + Адрес);      
Исключение            
	Сообщить("При отправке возникли проблемы. Письмо не отправлено. Проверьте правильность заполнения профиля и почты." + ОписаниеОшибки(),СтатусСообщения.Важное)      
КонецПопытки;

ИнПочта.Отключиться();
Показать
23. Spectr512 08.11.22 16:38 Сейчас в теме
Блин поздно увидел, уже сам разобрался благодаря темам https://forum.infostart.ru/forum9/topic144507/ и https://infostart.ru/1c/articles/715184/

Момент такой, вы используете все таки СистемнаяУчетнаяЗаписьЭлектроннойПочты а мне ее запретили использовать поэтому я обошелся проще прописав прямо

АдресСервераSMTP = "smtp.yandex.ru";
ПортSMTP = "465";
Email = "";
Пароль ="";

Профиль = Новый ИнтернетПочтовыйПрофиль;
	Профиль.АдресСервераSMTP = "smtp.yandex.ru";
	Профиль.ПортSMTP = 465;


Ну и в таком духе более упростив все.

Завтра мне все надо будет пихать в общий модуль под РеглЗадание но думаю разберусь имея уже рабочий код.

Единственный момент на появление новых записей в РС, запросом тащу информацию, а вот дальше подскажите что лучше будет использовать условные операторы или булево?
24. Spectr512 09.11.22 13:13 Сейчас в теме
Ребята подскажите момент Создал Запрос посредством конструктора с обработкой результата. После запроса выполняется Цикл Пока
Но из ВыборкаЗаписей мне тащится только 1ая строчка из запроса, а мне нужна вся таблица.
Запрос = Новый Запрос;
	Запрос.Текст = 
		 "ВЫБРАТЬ
		 |	МП_ОчередьЧеков.ЧекККМ.Дата КАК Дата,
		 |	МП_ОчередьЧеков.ЧекККМ.Номер КАК Номер,
		 |	МП_ОчередьЧеков.ЧекККМ.Магазин КАК Магазин
		 |ИЗ
		 |	РегистрСведений.МП_ОчередьЧеков КАК МП_ОчередьЧеков
		 |
		 |СГРУППИРОВАТЬ ПО
		 |	МП_ОчередьЧеков.ЧекККМ.Дата,
		 |	МП_ОчередьЧеков.ЧекККМ.Номер,
		 |	МП_ОчередьЧеков.ЧекККМ.Магазин";

	 
	Запрос.УстановитьПараметр("Дата", 			НачалоДня(ТекущаяДата()));	
	
	РезультатЗапроса = Запрос.Выполнить();
	
	ВыборкаДетальныеЗаписи1 = РезультатЗапроса.Выбрать();
	
	Пока ВыборкаДетальныеЗаписи1.Следующий() Цикл
		
	КонецЦикла;
	
		
	темаПисьма = "Весят очереди чеков" + " " + ВыборкаДетальныеЗаписи1.Номер + " от " + 
                  ВыборкаДетальныеЗаписи1.Дата;;
	
	телоПисьма = темаПисьма + "." + СИМВОЛЫ.ПС;
Показать


Хочется чтоб ВыборкаДетальныеЗаписи1 давала мне всю таблицу либо все строчки а не только первую!
25. Vlan 36 09.11.22 15:49 Сейчас в теме
(24) Так все записи и обходятся в цикле. Что не так?
29. Spectr512 09.11.22 16:49 Сейчас в теме
(25) темаПисьма = "Весят очереди чеков" + " " + ВыборкаДетальныеЗаписи1.Номер + " от " +
ВыборкаДетальныеЗаписи1.Дата;; Выводит только записи первого значения запроса, все остальное не попадает. После перебора эаписей!
26. Prikum 3 09.11.22 15:53 Сейчас в теме
(24)
Хочется чтоб ВыборкаДетальныеЗаписи1 давала мне всю таблицу либо все строчки а не только первую!


ВыборкаДетальныеЗаписи1 = РезультатЗапроса.Выгрузить();


Теперь будут все записи!
30. Spectr512 09.11.22 16:50 Сейчас в теме
(26) Он выгружает таблицу значений которую не понимает дальше
темаПисьма = "Весят очереди чеков" + " " + ВыборкаДетальныеЗаписи1.Номер + " от " +
ВыборкаДетальныеЗаписи1.Дата;; Мне же нужно чтоб ТемаПисьма и ТелоПисьма собиралась по строчкам
31. Prikum 3 09.11.22 16:52 Сейчас в теме
32. Spectr512 09.11.22 16:54 Сейчас в теме
(31)
	Запрос = Новый Запрос;
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	МП_ОчередьЧеков.ЧекККМ.Дата КАК Дата,
	|	МП_ОчередьЧеков.ЧекККМ.Номер КАК Номер,
	|	МП_ОчередьЧеков.ЧекККМ.Магазин КАК Магазин
	|ИЗ
	|	РегистрСведений.МП_ОчередьЧеков КАК МП_ОчередьЧеков
	|
	|СГРУППИРОВАТЬ ПО
	|	МП_ОчередьЧеков.ЧекККМ.Дата,
	|	МП_ОчередьЧеков.ЧекККМ.Номер,
	|	МП_ОчередьЧеков.ЧекККМ.Магазин";
	

Запрос.УстановитьПараметр("Дата", 			НачалоДня(ТекущаяДата()));	
	
	РезультатЗапроса = Запрос.Выполнить();
	
	ВыборкаДетальныеЗаписи1 = РезультатЗапроса.Выбрать();
	
	Пока ВыборкаДетальныеЗаписи1.Следующий() Цикл
		
	темаПисьма = "Весят очереди чеков" + " " + ВыборкаДетальныеЗаписи1.Номер + " от " + ВыборкаДетальныеЗаписи1.Дата +  ВыборкаДетальныеЗаписи1.Магазин;;
	
	телоПисьма = темаПисьма + "." + СИМВОЛЫ.ПС;
	
	телоПисьма = телоПисьма + СИМВОЛЫ.ПС + СИМВОЛЫ.ПС
	+ "С уважением," + СИМВОЛЫ.ПС 
	+ "  Розница 1С";

	
	КонецЦикла;
Показать
34. user1831019 09.11.22 16:56 Сейчас в теме
(32)
"Весят очереди чеков"
Сколько весят? Пару центнеров?

Ну вот ты сформировал тему письма. Сформировал тело.
Отправлять ты его где будешь?
36. Prikum 3 09.11.22 16:57 Сейчас в теме
(32)так ведь каждый раз перезаполняется последним значением выборки? Что не так?
37. tamidi 8 09.11.22 16:57 Сейчас в теме
(32)
телоПисьма = темаПисьма + "." + СИМВОЛЫ.ПС;
вы затираете телоПисьма при каждом новом обходе
Вам надо в цикле собрать все темыПисьма ?
и сформировать одно письмо?
39. Spectr512 09.11.22 16:59 Сейчас в теме
(37) Мне нет разницы, я просто смотрю что выборка проходит по всем записям но выводит мне только 1 строчку
41. user1831019 09.11.22 17:00 Сейчас в теме
(39)
Мне нет разницы
А если нет разницы - зачем платить больше?
60. Spectr512 09.11.22 17:43 Сейчас в теме
(37) Да все правильно мне надо собрать все темы и выгрузить в одно письмо.
61. user1831019 09.11.22 17:46 Сейчас в теме
(60) Ничего, что Subj в почтовых протоколах имеет ограничение на длину строки?
62. Spectr512 09.11.22 17:52 Сейчас в теме
(61)
j в почтовых протоколах имеет ограничение на длину строки?

Мне сказали как только идет поступление в РС формировалась письмо с записями всех чеков и отсылалось на почту. Про всякие ограничения копаю сам.
Длину строки темы или тела? Я видел письма с телом в километры и ничего хавал же протокол?
38. tamidi 8 09.11.22 16:59 Сейчас в теме
(32)
Пока ВыборкаДетальныеЗаписи1.Следующий() Цикл

темаПисьма = "Весят очереди чеков" + " " + ВыборкаДетальныеЗаписи1.Номер + " от " + ВыборкаДетальныеЗаписи1.Дата + ВыборкаДетальныеЗаписи1.Магазин;;

телоПисьма = темаПисьма + "." + СИМВОЛЫ.ПС;

телоПисьма = телоПисьма + СИМВОЛЫ.ПС + СИМВОЛЫ.ПС
+ "С уважением," + СИМВОЛЫ.ПС
+ " Розница 1С";


КонецЦикла;


Замените на
телоПисьма = "";
Пока ВыборкаДетальныеЗаписи1.Следующий() Цикл

темаПисьма = "Весят очереди чеков" + " " + ВыборкаДетальныеЗаписи1.Номер + " от " + ВыборкаДетальныеЗаписи1.Дата + ВыборкаДетальныеЗаписи1.Магазин;;

телоПисьма = телоПисьма + темаПисьма + "." + СИМВОЛЫ.ПС;

КонецЦикла;
телоПисьма = телоПисьма + СИМВОЛЫ.ПС + СИМВОЛЫ.ПС
+ "С уважением," + СИМВОЛЫ.ПС
+ " Розница 1С";
45. Spectr512 09.11.22 17:03 Сейчас в теме
(38) К сожалению он все равно выдал мне только одну запись
46. user1831019 09.11.22 17:06 Сейчас в теме
(45) Конечно одну. Потому что ты формируешь ОДНО письмо из ВСЕХ записей...
50. Spectr512 09.11.22 17:09 Сейчас в теме
(46)
ОДНО

Если тебя успокоит позорник то я выгружал через Таблицу Значений - но тогда он не понимает темаПисьма = "Висят очереди чеков" + " " + ВыборкаДетальныеЗаписи1.Номер + " от " + ВыборкаДетальныеЗаписи1.Дата + ВыборкаДетальныеЗаписи1.Магазин;;

Он выгружает таблицу с Нуллами а при выборке он дает мне значения и кто же из нас позорник?
47. tamidi 8 09.11.22 17:06 Сейчас в теме
(45)А в результате запроса сколько записей у вас, если через консоль, например, выполнить?
48. user1831019 09.11.22 17:06 Сейчас в теме
(47) Ну это уже читерство (((
55. Spectr512 09.11.22 17:19 Сейчас в теме
(48) Ну и где ты эксперт со своими язвительными ответами?
56. user1831019 09.11.22 17:19 Сейчас в теме
(55) Я разве с тобой разговариваю?
57. Spectr512 09.11.22 17:23 Сейчас в теме
(56) Ты просто что то кричал насчет чтоб не позорился, а теперь слился с темы, в принципе с тобой сразу все было понятно, обычный тролль который думает что знает 1с и шпиняет новичков, чистые проблемы твоего узкомыслящего менталитета, обычного воспитанния и культурности, где ты вырос!
49. Spectr512 09.11.22 17:07 Сейчас в теме
(47) Я добавил 3 записи в РС и по консольке у меня все правильно формируется запрос. Я понимаю что дело в цикле и тут завис
52. tamidi 8 09.11.22 17:12 Сейчас в теме
(49) Покажите еще раз какой код у вас получился, как в (38) должно сформировать многострочную строку.
54. Spectr512 09.11.22 17:18 Сейчас в теме
(52)
38) должно сфор
Прикрепленные файлы:
64. tamidi 8 09.11.22 17:55 Сейчас в теме
(54) перед оператором КонецЦикла у вас не исправлено, должно быть
телоПисьма = телоПисьма + темаПисьма + "." + СИМВОЛЫ.ПС;
65. Spectr512 10.11.22 07:35 Сейчас в теме
(61) [IS-QUOTE] В данном случае он просто плюсует ту строчку чтоб перебрал к нынешней. Просто делает Строчка 1 + Строчка 1, а не Строчка 1 + Строчка 2.
66. tamidi 8 10.11.22 09:55 Сейчас в теме
(65)Не поняла, это к сообщению (64) или(61) ?
телоПисьма = телоПисьма + темаПисьма + "." + СИМВОЛЫ.ПС;
это как
Строчка 1 + Строчка 2 как раз и будет
к уже имеющейся строке телоПисьма добавляем темаПисьма и так для каждой темаПисьма в цикле
67. Prikum 3 10.11.22 10:06 Сейчас в теме
(66)ух ты, а тут жизнь кипит! ;)
68. tamidi 8 10.11.22 10:21 Сейчас в теме
(67)скорее топчется на одном месте)
69. Spectr512 10.11.22 11:28 Сейчас в теме
(66) телоПисьма = телоПисьма + темаПисьма + "." + СИМВОЛЫ.ПС;
---- К этой строчке прибавил ее же, т.е. просто задвоил строку.

Решение подсказал бывший начальник. Это же его коммент к вашему коду который я присобачил в цикл)

Правильным решением оказалось.
телоПисьма = "";
Пока ВыборкаДетальныеЗаписи1.Следующий() Цикл

телоПисьма = телоПисьма + "Висят очереди чеков" + " " + ВыборкаДетальныеЗаписи1.Номер + " от " + ВыборкаДетальныеЗаписи1.Дата + " " + ВыборкаДетальныеЗаписи1.Магазин + Символы.ПС;

КонецЦикла;
ТемаПисьма = "Очередь Чеков";
телоПисьма = телоПисьма + СИМВОЛЫ.ПС + СИМВОЛЫ.ПС + "С уважением," + СИМВОЛЫ.ПС + " Розница 1С";

Я понял что в цикле надо переменную прибавлять тогда и будет толк. Спасибо конечно за вашу активность и желание помочь.
74. tamidi 8 10.11.22 11:47 Сейчас в теме
(69)Блин,
темаПисьма = "Висят очереди чеков" + " " + ВыборкаДетальныеЗаписи1.Номер + " от " + ВыборкаДетальныеЗаписи1.Дата + ВыборкаДетальныеЗаписи1.Магазин;;

телоПисьма = телоПисьма + темаПисьма + "." + СИМВОЛЫ.ПС;

и

телоПисьма = телоПисьма + "Висят очереди чеков" + " " + ВыборкаДетальныеЗаписи1.Номер + " от " + ВыборкаДетальныеЗаписи1.Дата + " " + ВыборкаДетальныеЗаписи1.Магазин + Символы.ПС;

но это ведь это же одно и тоже(
Ладно, я пас
75. Prikum 3 10.11.22 11:50 Сейчас в теме
(74)а разве ты не его бывший начальник? ;)
76. tamidi 8 10.11.22 11:59 Сейчас в теме
(75) Нет, тогда бы тут не было так оживленно)
33. tamidi 8 09.11.22 16:55 Сейчас в теме
(30)
темаПисьма = "Весят очереди чеков" + " " + ВыборкаДетальныеЗаписи1.Номер + " от " +
ВыборкаДетальныеЗаписи1.Дата;;

телоПисьма = темаПисьма + "." + СИМВОЛЫ.ПС;

Если этот код вы будете выполнять в цикле телоПисьма у вас после каждого прохода будет обновляться, если хотите добавлять все в одну строку, то делайте
телоПисьма = телоПисьма + темаПисьма + "." + СИМВОЛЫ.ПС;
перед началом цикла телоПисьма = "";
27. tamidi 8 09.11.22 15:55 Сейчас в теме
(24)
Пока ВыборкаДетальныеЗаписи1.Следующий() Цикл

КонецЦикла;



темаПисьма = "Весят очереди чеков" + " " + ВыборкаДетальныеЗаписи1.Номер + " от " +
ВыборкаДетальныеЗаписи1.Дата;;

телоПисьма = темаПисьма + "." + СИМВОЛЫ.ПС;


КонецЦикла;
Переставьте в конец этого отрывка
28. user1831019 09.11.22 15:57 Сейчас в теме
(24) Земляк, не позорь меня. Выборка не может содержать все записи. Выборка - это инструмент для последовательного перебора.
А тебе нужна таблица значений, которую надо выгрузить из результата запроса.
35. Spectr512 09.11.22 16:57 Сейчас в теме
(28) А чем я тебя позорю, не можешь помочь человеку, выйди и не позорься сам. Трясись за свои знания дальше где нибудь в углу. Смысл заходить и сорить.
40. user1831019 09.11.22 16:59 Сейчас в теме
(35) Эй, шайтан, сначала разберись чем отличается Выбрать() от Выгрузить() а потому уже позорься...
42. tamidi 8 09.11.22 17:00 Сейчас в теме
(40)Да в данном случае это не поможет, т.к. ошибка в обходе результата, если я правильно поняла задачу, не охота читать всю тему.
51. user1831019 09.11.22 17:10 Сейчас в теме
(42) Теперь уже да. Изначально он хотел получить таблицу.
Теперь у него проблема в обходе.
53. Spectr512 09.11.22 17:14 Сейчас в теме
(34)
(51)
Прикрепленные файлы:
43. Spectr512 09.11.22 17:00 Сейчас в теме
(40) Ну вот можно вывести человека из аула, но аул из человека никогда - все это про "Вас"
44. user1831019 09.11.22 17:02 Сейчас в теме
(43) Такая банальная шутка давно уже считается пошлостью.
В профессиональном плане - ты отличаешь Выборку от Выгрузки?
58. Spectr512 09.11.22 17:24 Сейчас в теме
(56) Просто хочу посмотреть на твои знания цикла, где же ты мой земеля???
63. user1831019 09.11.22 17:52 Сейчас в теме
59. user1831019 09.11.22 17:25 Сейчас в теме
70. Spectr512 10.11.22 11:30 Сейчас в теме
Считаю тему закрытой, нашел решение и разобрался с циклом Пока как правильно перебирать значения! Всем спасибо за внимание и ответы, в любом случае это тоже опыт!

Ну кроме Шайтана Турсынбека который редиска и который опозорился со своими знаниями цикла!
71. Prikum 3 10.11.22 11:40 Сейчас в теме
(70)
в любом случае это тоже опыт!
Правильно заданный вопрос, содержит в себе 50% ответа! (с)
72. Prikum 3 10.11.22 11:41 Сейчас в теме
(70)
который редиска
а на Танка не стоит обижаться, просто принять как данность.
73. Spectr512 10.11.22 11:44 Сейчас в теме
(72) Да я понял, тут таких куча и вообще на форумах 1С. Самоутверждаются наверное, поднимают свою самооценку какие они крутые "спецы" и все знают и все могут, помочь или поделиться знаниями это не для них, а вот поязвить, посарказмировать они горазды. Благо мир состоит не только из них!
Оставьте свое сообщение

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