Имя: Пароль:
1C
1C 7.7
v7: Отправка отчета по СМС
,
0 Enlighted
 
29.04.15
11:30
Доброго времени суток обитатели.

Возникла необходимость отправлять смс рассылку списку клиентов сформированному в некоем отчете.

Но в процессе выполнения возникли некоторые сложности. После формирования отчета оператор хочет просмотреть его и иметь возможность удалить некоторых клиентов из списка отчета. Только после этого должна состояться рассылка.

Возникло 2 идеи реализации:

1) создать редактируемый отчет, и кнопкой на панели 1с после редактирования разослать его
2) или создать документ в котором будет формироваться таблица отчета и кнопкой из документа будет осуществляться рассылка.

на данный момент имеется 2 функционирующих модуля:
1) отчет (уже формируется как надо)
2) модуль отправки СМС - функционирует как надо

но проблема в следующем как при нажатии на кнопке отправить на инструментальной панели 1С 7.7 выбрать окно отчёта, передать ему фокус и считать из него данные.
ЛИБО если это документ, как в табличную форму документа вывести содержимое отчёта.

Опыта в 1с мало.

Спасибо.
1 anatoly
 
29.04.15
11:33
сделайте документ или справочник с ТЧ которая заполняется - потом ставятся галки кому не отправлять, потом отправка - после чего док/спр блокируется на возможные следующие изменения (для следующей рассылки - новый)
будете за одно всю историю видеть.
2 Enlighted
 
29.04.15
11:43
ну тогда вот и вопрос как выводить значения в ТЧ. В отчет то я выводить умею создать об. таблица типа "такого" и по ячеечно заполнять строку потом выводить её. А в ТЧ как это реализовывать.
И соответственно второй момент как добавить галочки в столбец ТЧ?
ну а блокировку документа после проведения я найду как сделать.
3 NikVars
 
29.04.15
11:50
(2) Отчет или документ. Все зависит от того, нужно ли тебе фиксировать факт отправки отчета на конкретную дату. Если да, то документ. Хотя факт отправки можно фиксировать в исходящих в почтовом клиенте, заодно и фиксируем чего именно отправлялось. Посоветовать точнее сложно, так как необходимость, важность, этапность, крупность задачи - за рамками данного топика.
4 Enlighted
 
29.04.15
11:52
Выбор зависит от того какие знания я получу раньше и проще реализуемы: поиск окна отчета, передача ему фокуса и считывание из него данных, или вывод данных отчёта в ТЧ документа. Ни того ни того я пока делать не умею.
5 NikVars
 
29.04.15
11:57
(4) Я реализовывал массовую отправку акта выполненных работ и сф в формате pdf контагентам с периодичностью в месяц. Количество контрагентов около 6 тыс. Пытаюсь навесить твои требования на то, что делал я - получается абсурд. Ибо в базе акты и сф в своем формате, pdf лежал мимо базы (дублировать в базе глупо) и отправка выполнялась не из базы (было пофик, получит контрагент все это или нет, да и емайлы были битые и кривые или с бесплатных почтовых ящиков).
Тут еще много чего нужно оговаривать или озвучивать...
6 Wirtuozzz
 
29.04.15
12:12
Настроить отборы отчета не предлагать?
7 VoditelKobyly
 
29.04.15
12:13
Как вариант:
1. пусть правят отчет и сохраняют в файл (в этом случае ничего править в программе не нужно)
2. подработать модуль отправки СМС чтобы делал рассылку из файла. (тут ты ничего не написал, как он работает, поэтому тяжело сказать сколько времени на доработку)
8 Enlighted
 
29.04.15
12:26
спасибо за то что быстро откликнулись.
(5) отправка ежедневная около 50 смс в день проверка верности телефонных номеров целиком проблема оператора (если он в базу вносит корявый номер это его "косяк"). Программа отправки смс оставляет лог файл с отчётом об отправке по каждому номеру - так-что это тоже не проблема. текст отправки всёравно сохраняться в документе не будет ибо генерируется непосредственно при передаче на программу рассылки, а в документе фио, тел, сумма, номердок, срок.

(6) Честно говоря вопроса не понял.

(7) Не вариант, ибо заказчик не хочет позволять пользователю вмешиваться в процесс генерации текста сообщения. А модуль отправки СМС и так делает рассылку из файла. Но файл после отправки сразу удаляется. остаётся только лог
9 NikVars
 
29.04.15
12:31
(8) Тогда делай документом. Ибо уже через месяц не разгребешься что-кому отправлено.
10 Enlighted
 
29.04.15
12:42
(9) Ну хорошо документом, тогда вопрос уже описан в посте номер два.
11 VoditelKobyly
 
29.04.15
13:16
А формирование файла для рассылки у тебя вопросов не вызывает?
12 NikVars
 
29.04.15
13:18
13 Enlighted
 
29.04.15
13:37
(11) формат файла определен требованиями программы рассылки, простой тхт, телефон и текст сообщения. запись в тхт построчно выглядит так:

...
СтрокаДляЗаписи = СтрЗаменить(Константа.СМС, "ФИО", ТаблКонтрагенты);
СтрокаДляЗаписи = СтрЗаменить(СтрокаДляЗаписи, "Долг", ТаблОбщийДолг);
СтрокаДляЗаписи = СтрЗаменить(СтрокаДляЗаписи, "Дата погашения", ТаблДатаДок);
СтрокаДляЗаписи = ТаблТелефон + "=" + СтрокаДляЗаписи;
Текст.ДобавитьСтроку(СтрокаДляЗаписи);
...
КонецЦыкла;

Текст.Записать("c:\1\Phone.txt");

Это построчное считывание из ТЧ с внесением в тхт файл, там же реализую проверку на наличие галочки в строке. как добавить галочки мне подсказал (12) + яндекс :) за что обоим спасибо.

Остаётся вопрос как вывести данные в ТЧ документа.
14 VoditelKobyly
 
29.04.15
13:50
По твоему примеру:
Док.Новый();
Док.НоваяСтрока();
Док.ФИО = СтрЗаменить(Константа.СМС, "ФИО", ТаблКонтрагенты);
Док.Долг = СтрЗаменить(СтрокаДляЗаписи, "Долг", ТаблОбщийДолг);
Док.ДатаПогашения = СтрЗаменить(СтрокаДляЗаписи, "Дата погашения", ТаблДатаДок);
Док.Телефон = ТаблТелефон + "=" + СтрокаДляЗаписи;
КонецЦикла;
Док.Записать();
15 Enlighted
 
29.04.15
14:07
(14) тоесть обращение к табличной части документа происходит не по имени таблицы а просто по имени документа и реквезиту?

тогда считывание циклом из ТЧ документа через ПолучитьСтроку?
16 VoditelKobyly
 
29.04.15
14:13
Не совсем понял. Скорее да, чем нет. Рыба следующая:

ДокСМС=СоздатьОбъект("Документ.РассылкаСМС");
//делаем новый
ДокСМС.Новый();

Пока ... Цикл
ДокСМС.НоваяСтрока();
ДокСМС.ФИО=...
...
ДокСМС.Телефон=...
КонецЦикла;
ДокСМС.Записать();

Выборка циклом через ПолучитьСтроку()
Пока ДокСМС.ПолучитьСтроку()=1 Цикл
ФИО=ДокСМС.ФИО;
...
Телефон=ДокСМС.Телефон;
КонецЦИкла;
17 Enlighted
 
29.04.15
14:19
(16) Спасибо большое сейчас попробую реализовать
18 Cap_1977
 
29.04.15
14:26
(17) Только не через документ а через справочник.
19 Enlighted
 
29.04.15
15:31
(18) А почему именно через справочник, у меня в текущем документе должен сформироваться список, и из текущего документа по кнопке отправить он должен уйти на модем. Зачем мне подцеплять справочник?
20 Enlighted
 
29.04.15
16:39
Док = СоздатьОбъект ("Документ.УведомлениеКлиентов");
Док.ТекущийДокумент();
Сообщить (Док.Вид());

>> УведомлениеКлиентов

Док.Записать();

>> {Документ.УведомлениеКлиентов.Форма.Модуль(119)}: Не выбран документ!

Вроде выбрал текущий документ, а он всё равно матюкается
21 Попытка1С
 
29.04.15
16:40
(20) Док.НайтиДокумент

или док.выбратьдокументы, пока док.получитьдокумент

че там у тебя
22 LazyStranger
 
29.04.15
16:44
Док = СоздатьОбъект ("Документ.УведомлениеКлиентов");
Док.Новый();
// тут заполняем документ
Док.Записать();
23 Enlighted
 
29.04.15
16:46
(22) Зачем мне создавать новый если я его уже открыл и работаю в нём. Мне нужно выбрать текущий и заполнять его из его же модуля.
24 Enlighted
 
29.04.15
16:49
принцип получается такой: открываю новый документ типа "УведомлениеКлиентов" из меню программы и уже в нем заполняется всё что надо.
25 Enlighted
 
29.04.15
17:35
На данный момент встала проблема с выбором текущего документа чтобы заполнять его поля пробовал следующие варианты:

1) Док = СоздатьОбъект ("Документ.УведомлениеКлиентов");
Док.ТекущийДокумент(); - пишет что документ не выбран
2) Док = СоздатьОбъект ("Документ.УведомлениеКлиентов");
    Док.НайтиДокумент( ТекущийДокумент()); - пишет что "Недопустимая операция"
26 NikVars
 
29.04.15
17:48
(25) Сначала запиши - потом - ТекущийДокумент()
27 Enlighted
 
29.04.15
18:06
(26) Тоесть не сохранив текущий документ я не смогу его заполнять программно?
28 NikVars
 
29.04.15
18:19
(27) Заполняй, только не используй термин "текущий"
29 NikVars
 
29.04.15
18:20
30 Enlighted
 
30.04.15
11:11
(29) Спасибо большое документ помог всем откликнувшимся спасибо. Задача решена.
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.