|
Все та же отправка на почту файлов. | ☑ | ||
---|---|---|---|---|
0
Luffy
05.11.15
✎
08:14
|
Ребят, помогите пожалуйста сделать задание. Нужно отправить контрагенту два файла, файлы отправляются без проблем, только необходимо для определенного контрагента отправить один стандартно файл, а другой нужно сделать так чтоб система сама определила нужно, отправлять этот файл или нет. Адрес получаю из регистра сведений контактная информация с помощью функции, как получили адрес создаются два файла в каталоге, а отправкой занимается процедура, где передается каталог с этими файлами, вот нужно задать определенное условие, либо на уровне где создаются файлы и не создавать один файл в случае выполнения условия, или на уровне процедуры отправки письма, где можно по индексу обратиться к коллекции и удалить одно из писем, вопрос в том какое это будет условия, я пока не знаю, рассчитываю на вашу помощь.
Там отправляется письмо счет фактура торг 12, а другой файл с в шапке наименованием организации, ИНН, адрес, дата, номер док, сумма по документу, в строках номенклатура, цена, код, все о сертифекатах, и т.д, так вот некоторым контрагентам этот файл не нужен. Я сделал условие создав в свойствах ОтправкаФайлаПоЭлектроннойПочте со значениями да и нет, при да отправляет, при нет удаляет это письмо из коллекции, но руководителю не понравилось, потому что может какой нибудь контрагент потребовать для него другой файл создать и отправить, а нужно написать код, где система отправляла, для этого такой файл, для другого другой. |
|||
1
Мимохожий Однако
05.11.15
✎
08:16
|
Отправка по почте файлов
лень было найти прошлую ветку?! |
|||
2
Горогуля
05.11.15
✎
08:16
|
не код тебе нужно написать, а понять, что нужно. а потом сформулировать. и только потом уже думать о коде
|
|||
3
Luffy
05.11.15
✎
08:17
|
//Код получения адреса и создание файлов!
ЭлАдрес = ПолучитьАдресИзКонтактнойИнформации(мКонтрагент, Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты, Справочники.ВидыКонтактнойИнформации.АдресЭлектроннойПочтыКонтрагентаДляОбменаДокументами); Если ЭлАдрес <> "" Тогда мКаталогВременныхФайлов = КаталогВременныхФайлов() + "Doc_xls\"; СоздатьКаталог(мКаталогВременныхФайлов); ИмяФайлаТН = мКаталогВременныхФайлов + "TH.xls"; ТабДокумент.Записать(ИмяФайлаТН, ТипФайлаТабличногоДокумента.XLS); Если тзШК ТОгда ЭтоДокумент = Метаданные.Документы.Содержит(Объект.Метаданные()); ТабДокументШК = ПечатьШК(Объект); НапечататьДокумент(ТабДокументШК, 1, флСразуНаПечать, ?(ЭтоДокумент, ОбщегоНазначения.СформироватьЗаголовокДокумента(Объект.Ссылка), Строка(Объект)), Объект.Ссылка); ИмяФайлаШК = мКаталогВременныхФайлов + "ШК.xls"; ТабДокументШК.Записать(ИмяФайлаШК, ТипФайлаТабличногоДокумента.XLS); КонецЕсли; ИмяФайла = мКаталогВременныхФайлов; ИмяФайлаБезПути = тзРТИУ; ИмяФайлаБезПути = ПреобразоватьВЛатиницу(УдалениеВедущихНулей(тзРТИУ.Номер, тзРТИУ.Организация.Префикс)) + ".nkl"; ИмяФайла = ИмяФайла + ИмяФайлаБезПути; ФайлЗаписи = Новый ЗаписьТекста(ИмяФайла, КодировкаТекста.ANSI); СтрокаДЛяПередачи = ВыгрузитьРеализацииКлиенту(тзРТИУ); Если СтрокаДЛяПередачи <> "" Тогда ФайлЗаписи.Записать(СтрокаДЛяПередачи); ФайлЗаписи.Закрыть(); КонецЕсли; //отправим письмо Если ИмяФайлаШК = Неопределено Тогда НапишемПисьмо (ЭлАдрес, ИмяФайлаТН, ИмяФайла, , тзРТИУ.Организация.НаименованиеСокращенное, тзРТИУ); Иначе НапишемПисьмо (ЭлАдрес, ИмяФайлаТН, ИмяФайла, ИмяФайлаШК, тзРТИУ.Организация.НаименованиеСокращенное, тзРТИУ); КонецЕсли; УдалитьФайлы(мКаталогВременныхФайлов); КонецЕсли; Иначе Объект.Печать(Расшифровка, 1, флСразуНаПечать); КонецЕсли; Распечатано = истина; Исключение Сообщить("Не удалось распечатать первый раз ТОРГ12!"); КонецПопытки; КонецЕсли; |
|||
4
Горогуля
05.11.15
✎
08:17
|
я сделал, но не понравилось, потому что может потребовать, а нужно написать, где отправляла
в студии есть переводчик с монгольского? |
|||
5
Luffy
05.11.15
✎
08:19
|
//Код отправки файлов
Процедура НапишемПисьмо (Адрес, ДокументТН = Неопределено, ФайлИДК = Неопределено, ДокументШК = Неопределено, ОтКогоДокументы, ДокументРТУ) //Создадим письмо Письмо = Новый ИнтернетПочтовоеСообщение; //Если ДокументТН = Неопределено И ДокументШК = Неопределено ТОгда // Возврат; //ИначеЕсли Письмо.Вложения.Добавить(ДокументТН,"Документ"); Если ДокументШК <> Неопределено ТОгда Письмо.Вложения.Добавить(ДокументШК,"ШК"); КонецЕсли; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЗначенияСвойствОбъектов1.Значение |ИЗ | Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов1 | ПО РеализацияТоваровУслуг.Контрагент = ЗначенияСвойствОбъектов1.Объект |ГДЕ | РеализацияТоваровУслуг.Ссылка = &Ссылка"; Запрос.УстановитьПараметр("Ссылка", ДокументРТУ); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Если ВыборкаДетальныеЗаписи.Значение.Наименование = "Да" Тогда Письмо.Вложения.Добавить(ФайлИДК,"Документ"); ИначеЕсли ВыборкаДетальныеЗаписи.Значение.Наименование = "Нет" Тогда Письмо.Вложения.Удалить(1); НужноОтправлятьФайл() КонецЕсли; КонецЦикла; Письмо.Тема = "Документы"; ТекстПисьма = "Письмо отправлено роботом. Отвечать не стоит! По всем вопросам обращайтесь по имеющимся у вас контактным данным!"; //Для каждого элемента массива отправим письмо Профиль = Новый ИнтернетПочтовыйПрофиль; Профиль.АдресСервераSMTP = "172.17.8.1"; Профиль.ПортSMTP = "25"; Профиль.АутентификацияSMTP = СпособSMTPАутентификации.ПоУмолчанию; Профиль.Пользователь = "1cmail"; Профиль.Пароль = "Gjxnf1C"; Профиль.ПользовательSMTP = "1cmail"; Профиль.ПарольSMTP = "Gjxnf1C"; Профиль.ВремяОжидания = 180; Почта = Новый ИнтернетПочта(); Попытка Почта.Подключиться(Профиль); Исключение Сообщить("Сервер не отвечает..." + ОписаниеОшибки()); КонецПопытки; //отправка Письмо.Тексты.Добавить(ТекстПисьма); Письмо.Получатели.Добавить(Адрес); Письмо.Отправитель.ОтображаемоеИмя = "Документы от "+ОтКогоДокументы; Письмо.Отправитель.Адрес = "[email protected]"; Письмо.Отправитель.Пользователь = "1cmail"; Письмо.Отправитель.Сервер = "mail.irkmw.ru"; Письмо.ОбратныйАдрес.Добавить("[email protected]"); Попытка Почта.Послать(Письмо); Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; КонецПроцедуры |
|||
6
Luffy
05.11.15
✎
08:22
|
Нужна универсальная идея и код.
|
|||
7
ДенисЧ
05.11.15
✎
09:02
|
(6) Нужны универсальные деньги для этого
|
|||
8
Fish
05.11.15
✎
09:03
|
(6) Если идея состоит в "нужно написать код, где система отправляла, для этого такой файл, для другого другой.", то код элементарный:
Если ЭтотКонтрагент Тогда ОтправитьТакойФайл(); Иначе ОтправитьДругойФайл(); КонецЕсли; И не благодари. |
|||
9
Luffy
05.11.15
✎
09:10
|
(8) Распиши по подробней пожалуйста, это че нужно две функции создавать или если каждый контрагент будут требовать создавать для них разные файлы, тогда нужно для каждого файла отдельную функцию писать
|
|||
10
Fish
05.11.15
✎
09:15
|
(9) Можешь и одну функцию создать, а в неё параметры передавать.
|
|||
11
Горогуля
05.11.15
✎
09:17
|
(10) боюсь, мозг не выдержит
|
|||
12
Лефмихалыч
05.11.15
✎
09:17
|
(0) по-русски простыми словами напиши, в каких случаях и что нужно отправлять
|
|||
13
Luffy
05.11.15
✎
09:27
|
(12) Смотри есть два файла, один отправляется в любом случае, другой файл нужно сверяться по требованиям контрагента, нужен он или нет, если нужен тогда отправляем, если нет не отправляем. Я выполнил это условие, но на будущие может возникнуть так, что какой нибудь контрагент, скажет создать и отправить для него другой файл и того 3 файла, Один удалится из коллекции, а другие 2 файла отправятся ему, а ему нужен только один файл.
|
|||
14
Fish
05.11.15
✎
09:31
|
(13) Всё равно ничего не понятно.
И зачем файл УДАЛЯТЬ из какой-то коллекции, если можно изначально его туда не добавлять, раз он не нужен? |
|||
15
Лефмихалыч
05.11.15
✎
09:31
|
(13) и вопрос при этом в чем именно?
где-то в конфигурации должно храниться что-то, связанное с контрагентом, по чему ты будешь определять, что именно отправлять. Коллекцию файлов к отправке собираешь на основании этого чего-то. Потом просто так берешь и каждому свое отправляешь. |
|||
16
Лефмихалыч
05.11.15
✎
09:32
|
автор, ты или подробности выкладывай все, включая конфу, либо уже бабахайся сам со своими загадками
|
|||
17
Luffy
05.11.15
✎
09:48
|
(16) Могу на почту тебе обработку скинуть.
|
|||
18
Лефмихалыч
05.11.15
✎
12:40
|
(17) не надо. Здесь пиши
|
|||
19
Luffy
05.11.15
✎
12:58
|
(18) Окей, чуть позже напишу, сейчас не могу.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |