Вход | Регистрация
    1  2
1С:Предприятие :: 1С:Предприятие 8 общая

Нужно отправить отчёт по заказам по эл.почте (тестовое задание)

↓ [Волшебник, 14.07.20 - 13:37]
Нужно отправить отчёт по заказам по эл.почте (тестовое задание)
Я
   Jonny992
 
09.07.20 - 10:52
Мне нужно, чтобы человек ввел дату и сумму которая ему нужна и по этому сформировалась временная таблица, которую потом программа отправит ему по почте(с почтой я всё решил) мне нужна помощь только с работой с элементами

P.S.
John342 ответь мне, если увидишь конечно.
   Волшебник
 
101 - 09.07.20 - 14:57
(100) Амперсанд добавь
И параметр задай
   Jonny992
 
102 - 09.07.20 - 15:03
(101) не понимаю куда добавить ампресанд, если он везд
ВЫБРАТЬ
    ЗаказКлиента.Номер КАК Номер,
    ЗаказКлиента.Дата КАК Дата,
    ЗаказКлиента.Партнер КАК Партнер,
    ЗаказКлиента.СуммаДокумента КАК СуммаДокумента,
    ЗаказКлиента.Менеджер КАК Менеджер
ИЗ
    Документ.ЗаказКлиента КАК ЗаказКлиента
ГДЕ
    ЗаказКлиента.Дата МЕЖДУ НАЧАЛОПЕРИОДА(&НачДата, ДЕНЬ) И КОНЕЦПЕРИОДА(&КонДата, ДЕНЬ)
    И ЗаказКлиента.СуммаДокумента >= &Сумма
    Упорядочить ПО Дата УБЫВ
   ZDenis
 
103 - 09.07.20 - 15:04
вот, не могу больше не это смотреть

    
&НаКлиенте
Процедура ОтправитьПисьмо(Команда)
    ПрофильПодключения = Новый ИнтернетПочтовыйПрофиль;
    ПрофильПодключения.АдресСервераSMTP = "smtp.yandex.ru";
    ПрофильПодключения.ИспользоватьSSLSMTP=Истина;
    ПрофильПодключения.ПортSMTP = 465;
    ПрофильПодключения.ПользовательSMTP = "*";
    ПрофильПодключения.ПарольSMTP ="*";
    Почта = Новый ИнтернетПочта;
    Попытка
        Почта.Подключиться(ПрофильПодключения);
    Исключение
        Сообщить("Не удалось подключиться к серверу smtp.yandex.ru");
        Сообщить(ОписаниеОшибки());
    КонецПопытки;
    Тело = СформироватьТело();
    Письмо = Новый ИнтернетПочтовоеСообщение;
    Письмо.Тексты.Добавить(Тело);
    Письмо.Тема = "«Крупные заказы за период с 10 сентября 2019 по 13 сентября 2019»";
    Письмо.Отправитель = "*";
    Письмо.Получатели.Добавить("*");
    Попытка
        Почта.Послать(Письмо);
    Исключение
        Сообщить("Не удалось отправить письмо ");
        Сообщить(ОписаниеОшибки());
    КонецПопытки;
    Почта.Отключиться();
КонецПроцедуры

Функция СформироватьТело()
    
    Запрос = Новый Запрос;
    Запрос.Текст =" 
        |ВЫБРАТЬ
        |    ЗаказКлиента.Номер КАК Номер,
        |    ЗаказКлиента.Дата КАК Дата,
        |    ЗаказКлиента.Партнер КАК Партнер,
        |    ЗаказКлиента.СуммаДокумента КАК СуммаДокумента,
        |    ЗаказКлиента.Менеджер КАК Менеджер
        |ИЗ
        |    Документ.ЗаказКлиента КАК ЗаказКлиента
        |ГДЕ
        |    ЗаказКлиента.Дата МЕЖДУ &НачПериода И &КонПериода
        |    И ЗаказКлиента.СуммаДокумента >= 100000";
    
    Запрос.УстановитьПараметр("КонПериода", Объект.КонПериода);
    Запрос.УстановитьПараметр("НачПериода", Объект.НачПериода);
    
    РезультатЗапроса = Запрос.Выполнить();
    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    Тело = "«Здравствуйте, Иван Иванович!
    |Список заказов с суммой от 100 000 руб. за период с " + Формат(Объект.НачПериода,"ДЛФ=DD") + " по " +Формат(Объект.КонПериода,"ДЛФ=DD");

    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        
        Тело = Тело + Символы.ПС + ВыборкаДетальныеЗаписи.Номер + " от " +  ВыборкаДетальныеЗаписи.Дата + " на сумму: " +  ВыборкаДетальныеЗаписи.СуммаДокумента;
        
    КонецЦикла;
    
    Возврат Тело;
КонецФункции
   Jonny992
 
104 - 09.07.20 - 15:04
(101) Просто мне параметр нужно получить по мере того как заполнят дату и сумму
   Волшебник
 
105 - 09.07.20 - 15:06
(103) Разжевал и в рот положил. Не спортивно.
   D_E_S_131
 
106 - 09.07.20 - 15:07
&НаКлиенте
Процедура ОтправитьПисьмо(Команда)
    ПрофильПодключения = Новый ИнтернетПочтовыйПрофиль;
    ПрофильПодключения.АдресСервераSMTP = "smtp.yandex.ru";
    ПрофильПодключения.ИспользоватьSSLSMTP=Истина;
    ПрофильПодключения.ПортSMTP = 465;
    ПрофильПодключения.ПользовательSMTP = "*";
    ПрофильПодключения.ПарольSMTP ="*";
    Почта = Новый ИнтернетПочта;
    Попытка
        Почта.Подключиться(ПрофильПодключения);
    Исключение
        Сообщить("Не удалось подключиться к серверу smtp.yandex.ru");
        Сообщить(ОписаниеОшибки());
    КонецПопытки;
    Тело="«Здравствуйте, Иван Иванович!"

Запрос = Новый Запрос;

Запрос.Текст = "<сюда все что в (67)>";

запрос.УстановитьПараметр("Сумма", Сумма)// предполагается, что на форме обработки есть все реквизиты для параметров запроса

запрос.УстановитьПараметр("НачДата", НачДата);
запрос.УстановитьПараметр("КонДата", КонДата);

РезЗапроса = Запрос.Выполнить();

Если РезЗапроса.Пустой() Тогда
   Возврат// если таких заказов нет, то письмо не шлем (по тупому)

КонецЕсли;

Выборка = РезЗапроса.Выбрать();

Тело = Тело + Символы.ПС + "Список заказов с суммой от " + Сумма + " руб. за период с " + Формат(НачДата, "<нужный формат даты>") + " по " + Формат(КонДата, "<нужный формат даты>");
Тело = Тело + Символы.ПС;
Тело = Тело + "Всего " + Выборка.Количество() + " заказов" + "на сумму <вот тут ты не указал, что тебе еще общая сумма всех нужных заказов нужна и поэтому текст запроса нужно изменить> руб.";

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

   Тело = Тело Символы.ПС + "№" + Выборка.Номер + " " + Выборка.Дата + " " + Выборка.Партнер + " " + Выборка.Сумма + " руб. " + Выборка.Менеджер;

КонецЦикла;

    Письмо = Новый ИнтернетПочтовоеСообщение;
    Письмо.Тексты.Добавить(Тело);
    Письмо.Тема = "«Крупные заказы за период с 10 сентября 2019 по 13 сентября 2019»";
    Письмо.Отправитель = "*";
    Письмо.Получатели.Добавить("*");
    Попытка
        Почта.Послать(Письмо);
    Исключение
        Сообщить("Не удалось отправить письмо ");
        Сообщить(ОписаниеОшибки());
    КонецПопытки;
    Почта.Отключиться();
КонецПроцедуры
   D_E_S_131
 
107 - 09.07.20 - 15:09
(105) Да похоже человеку нужны простые примеры реализации. Рановато ему в СКД программно лезть. :)
   Волшебник
 
108 - 09.07.20 - 15:11
Я добавлю:

 Письмо.Тема = "Крупные заказы за период с " + НачДата + " по " + КонДата;
   ZDenis
 
109 - 09.07.20 - 15:12
+ 108 И так перед Функция СформироватьТело()  - &НаСервере
   D_E_S_131
 
110 - 09.07.20 - 15:14
(109) Да, важное замечание. А то мой код будет работать только в "толстом клиенте".
   Garykom
 
111 - 09.07.20 - 15:18
Кстати резонное замечание.

Вот по дефолту результат запроса можно выгрузить в ТЗ.
А почему нет типового метода чтобы ТЗ.Вывести() - на выходе ТабДок типового вида.
А затем ТабДок.Отправить() :)
   Garykom
 
112 - 09.07.20 - 15:20
(111)+ И тогда
Запрос.Выполнить().Выгрузить().Вывести().Отправить(email);
   D_E_S_131
 
113 - 09.07.20 - 15:25
(111) А программное получение данных из СКД - несколько однотипных строк из неиспользуемых по отдельности объектов, ваще адище! :)
   Jonny992
 
114 - 09.07.20 - 16:25
(103)
{ВнешняяОбработка.FirstTask1.Форма.Форма.Форма(66,31)}: Обнаружено логическое завершение исходного текста модуля
        Почта.Послать(Письмо);<<?>> (Проверка: Сервер)
{ВнешняяОбработка.FirstTask1.Форма.Форма.Форма(66,31)}: Обнаружено логическое завершение исходного текста модуля
        Почта.Послать(Письмо);<<?>> (Проверка: Тонкий клиент)
   Jonny992
 
115 - 09.07.20 - 16:32
(103) Поле обьекта не обнаружено (КонПериода)
   D_E_S_131
 
116 - 09.07.20 - 17:36
(115) Без "Объект." попробуйте. Мы же не знаем, у тебя это реквизиты формы или реквизиты обработки.
   Jonny992
 
117 - 09.07.20 - 18:12
(116) Реквизиты формы
   acht
 
118 - 09.07.20 - 18:20
(117) А вы с вот этим Нужно создать внешнюю обработку 1С в каких отношениях?
   Jonny992
 
119 - 09.07.20 - 18:22
(118) я не знаю его , это задание для стажировки просто
  1  2

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.