Имя: Пароль:
1C
1C 7.7
v7: Автосохранение табличных документов в excel
,
0 KatyaShumilova
 
21.11.11
19:50
Есть кнопка в Реализации, по которой формируется нужная табличная форма документа для подтверждения заказа. Затем через CTRL+S я сохраняю этот документ в формате excel.
И отправляю потом клиенту по e-mail.
Проблема в том, что накладных от клиента как правило около сотни. И каждую сохранять (прописывая в названии файла дату, номер, и адрес) очень тяжко.
Как можно поправить процедуру по кнопке, чтобы табличный документ сразу записывался в нужную папку в формате excel?
Как бы зашла в Реализацию, нажала кнопку и сразу появилось информационное сообщение : "Файл сохранён в ..." .
Возможно ли такое?
1 Mikeware
 
21.11.11
19:51
возможно
2 Mikeware
 
21.11.11
19:51
возможно даже сразу отсылать клиенту почтой.
3 KatyaShumilova
 
21.11.11
19:54
(2) Да я знаю. Через ROM-Mail.dll уже так делаю иногда, но мне надо в данном случае их оптом будет отправить.
А вот как бы подтверждения быстро сохранить? =(
4 Злопчинский
 
21.11.11
19:55
на! более двух тысяч работает...
http://infostart.ru/public/14180/
5 Mikeware
 
21.11.11
19:55
(3) да, собственно, не обязательно роммэйл. диалмэйл, цдо...
можно и без участия человека это делать...
6 Злопчинский
 
21.11.11
19:57
(0) если разработка печатных форм велась по уму, ане по принципу "система витяз - сделал я, а вы любитесь" - то в наименовании печформы (титуле окна) будет и номер и дата и друга яполезная инфа).
.
у меня манагеры приведенным вышеобразом письма десятками отправляют
.
а уж сделать передачу в DGA памаетра "ОтправитьПоПочте" - как два пальца об асфалт
7 KatyaShumilova
 
21.11.11
20:06
(4,6) Печатная форма прицеплена к Реализации через "Внешние печатные формы", поэтому эта обработка (по ссылке ) не зацепит их все. Если конечно все 100 штук не открыть сразу.
Но всё равно спасибо большое, попробую расковырять эту обработку, может пойму как она конвертирует табличный документ в excel.
8 Злопчинский
 
21.11.11
20:11
(7) обработка цепляет открытые на экране печатные формы.
.
табличный документ в эксель конфертирует можно ШТАТНО
Таб.Записать(ататпочитатьпараметрыСП), но лучше - через йоксель...
.
сделать автотправку можно кучей способов.
.
самый простой (имхо)
код в 10-20 строк - выборка доков и вызов нужных DGA - она открывается на экран - следом вызов упомянутой обработки - захватывает активную форму, передает в отправку почты, закрывает.
преимущества? нигде ничего не надо править в том коде который уже есть...
недостатки: сам найдете...
9 Злопчинский
 
21.11.11
20:15
опять же, если порыться на Исе - то можно много чего найти...
например, даже моя написанная хрен знает когда
http://infostart.ru/public/14135/
10 andrewks
 
21.11.11
20:21
(9) Публикация не активна :)
11 ДенисЧ
 
21.11.11
20:25
Чему вы девушку учите...
12 Злопчинский
 
21.11.11
20:29
(10) моедрируют...
собственно такм: формирование пакета документо вна диск - торг12+счф, раскладка по контрагентам, опись и прочее...
13 Злопчинский
 
21.11.11
20:30
14 Злопчинский
 
21.11.11
20:30
15 Злопчинский
 
21.11.11
20:31
16 KatyaShumilova
 
21.11.11
20:50
Я наверное всё плохо объяснила. =(
Попробую ещё раз.
Дано: Печатная форма в Реализации, вызываемая по кнопке. В печатной форме помимо штатных граф (номенклатура, цена, ндс и прочее) дополнительно вытягиваются из справочников штрихкода, гтд, артикулы клиента и прочее. Графы расставляются в нужной для клиента последовательности.
Я через обычное сохранение (в панели инструментов) сохраняю в формат excel,  присваивая имя файла как: номер+ дата+ адрес. Всё это в ручном режиме очень запарно.

Надо: подправить процедуру по кнопке, чтобы печатная форма сразу сохранялась в формате excel. Через Таб.Запись  сохраняется какая-то "непереводимая игра слов"©   =))) Ну это и понятно.
А если ещё получится это сделать минуя вывод на экран самой печатной формы, было бы просто здорово. Но думаю это не возможно, точнее возможно но для этого надо будет полностью переписать всю процедуру (посредством OLE, с созданием COM-объекта).

С почтой проблем нет. Не запарно открыть аутлук и все 100 накладных скопом отправить на один адрес.
17 Злопчинский
 
21.11.11
21:10
(16)
1. не надо подправлять процедуру по кнопке, надо СДУБЛИРОВАТЬ текущую ВПФ и сделать из другую для этой конкретной задачи: бездиалоговое сохранение, а то потом будет вопрос: жму на кнопку, а ВПФ не открывается...

2. Проблема в чем? трудно подправить код
Если Устройство=0
Тогда
 Таб.Записать(тутСП); //для более-менее приемлемого сохранения - вместо этого заюзать или Йоксель или конвертор Натальи; Йоксель - проще.
.
таки непонятно что надо: написать вам хотелку забесплатно?
18 Byasha
 
21.11.11
21:23
Делалось и не однократно. И формируется и отправляется по почте, и статусы сохраняются и прочие плюшки прикручивались типа красоты, подписей, печатей и т.п. Цена вопроса от 10 до 50 тыр. У ТС есть нужная сумма? Если нет - уже дали ссылку на инфостарт. Там барахла - на все случаи жизни - как в секонд-хенде.
19 ДенисЧ
 
21.11.11
21:25
!Через Таб.Запись  сохраняется какая-то "непереводимая игра слов"!

У всех нормально получается, а у вас ненормально... Может, в консерватории что-то подправить?
20 KUBIK
 
21.11.11
21:27
(19) +100!

"Может, в консерватории что-то подправить?
"= для начала: сп..дить контрабас!
21 Злопчинский
 
21.11.11
21:29
(19) речь видимо идет о кривом форматировании объединенных ячеек, шапкит таблицы, переносов в ячейках - ну как обычно
22 KatyaShumilova
 
21.11.11
21:41
(17) 1. Это ясно.
2. Код:
       ИмяФайла = КаталогИБ() + "ExtForms\Почта\д"+СОКРЛП(Докум.НомерДок)+".xls";          
     Таб.Записать(ИмяФайла);                                  
     Сообщить("Сформирован файл "+ ИмяФайла);  
Хотелку не надо бесплатно, просто в нужное русло направить.    

(21)    Нет. Речь идёт  о  том, что надо записать печатную форму в xls формате, а я не могу. =(((
Консерваториев не заканчивала, бедная и некрасивая. И 50 тыс рублей нет. А хочется облегчить себе работу.
А получается примерно так: http://jpg1.ru/i/52d0cBeACg8/
23 Злопчинский
 
21.11.11
21:42
(22) товарищ из 19 поста обычно СП продает задорого - читать умеем?
24 Злопчинский
 
21.11.11
21:44
нахрена что-то спрашивать - если ответы читаем наискось, не вникая в смысл
отправляю в (8) - там есть
Таб.Записать(ататпочитатьпараметрыСП)
.
для грудничков - разжевываем кашку...
.
Записать(<?>,);
Синтаксис:
Записать(<ИмяФайла>,<ТипФайла>)
Назначение:
Записать таблицу в файл.
Параметры:
<ИмяФайла> - имя файла.
<ТипФайла> - необязательный параметр. Числовое или строковое выражение, определяющее тип файла:
· отсутствует, 0 или ''MXL'' - формат 1C;
· 1 или ''XLS'' - формат Ms Excel;
· 2 или ''HTM'' или ''HTML'' - формат HTML;
· 3 или ''TXT'' - формат TXT.
25 ДенисЧ
 
21.11.11
21:45
Ну, я так понимаю, что документацию читать сейчас совершенно немодно...
Мне, что-ли, заделаться модником и с каждым тупым вопросом на форум лезть?...
Хотя не... Провинция.. Не поймут-съ..
26 KatyaShumilova
 
21.11.11
21:59
(24) Я читаю ответы очень тщательно, но иногда слэнг не понимаю. И программированию никогда не училась. =((
Работаю в небольшой фирме, документы печатаю. Иногда небольшие отчеты делаю для себя, по аналогии. Или печатную форму изменю готовую под себя, и получается новая. Так что не ругайтесь на меня, платят немного за печать накладных, и денег на нет на программистов.
p.s. Единичку поставила и всё заработало. =))) Спасибо Вам огромное.

p.p.s. А как можно сделать "бездиалоговое сохранение" ?
Если у Вас полно дел, то пожалуйста не отвлекайтесь и не отвечайте.

(25) Насмехайтесь сколько хотите, я уже привыкшая. =)
27 Злопчинский
 
21.11.11
22:03
>  платят немного за печать накладных, и денег на нет на программистов.
ну и забей на это дело...
или начни специализироваться ка кпрограммист.. определись уже..
а то и ни бухии не знают, ни кнопки тыкать не умеют, ни программить.. так.. какое-то серое месиво а не сотрудник..
сила - в специализации,
28 Злопчинский
 
21.11.11
22:04
Открой в торговле и складе из папки экстформ sale.ert и посмотри на ветку "если Устройство.." ну и в (22) в целом - ок
29 KatyaShumilova
 
21.11.11
22:10
(27) Кнопки тыкать умею, уже 6 лет у них тыкаю. Бухгалтерии не знаю. Программирование пытаюсь освоить в начальной стадии методом тыка, похожести и по аналогии. =))
Денег на учебу скоплю и обязательно на курсы пойду.
Никто не заставляет меня эти коды менять, просто дают много монотонной работы, а хочется немного автоматизировать, для удобства и чтобы избежать ошибок (например не правильно в названии файла напечатать номер накладной - за это потом штрафуют).
Ну а что мне ещё делать? На панель идти? Нет!

(28) Спасибо, пойду покопаюсь в sale.ert.
30 Злопчинский
 
21.11.11
22:16
(29) механизм разруливания куда отправлять печатную форму - одинаков везде почти вовсех типовых ВПФ
31 Злопчинский
 
21.11.11
22:17
будешь сохранять - когда формируешь имя файла - нормализуй его на исключение недопустимых символов для имен файлов
32 KatyaShumilova
 
21.11.11
23:31
Злопчинский Спасибо Вам большое! Получилось. Начало такое:
Процедура ПоКнопке2(устройство=0)

Заканчивается так:
Если устройство = 0 Тогда        
Таб.Записать(ИмяФайла, 1);  
КонецЕсли                                
Сообщить("Сформирован файл "+ ИмяФайла);  
КонецПроцедуры
33 Злопчинский
 
21.11.11
23:37
(32) вас помогла фотка в профиле..
;-)
.
правда абсолютно непонятно зачем там процедура ПоКнопке2...
.
прикрути еще чтобы автоматом запоминало/восстанавливало последнюю папку, в котору. ты сохраняла..
34 KatyaShumilova
 
21.11.11
23:45
(33) Ну я эту кнопку нарисовала в Реализации (внизу, где кнопки "печать", "счет-фактура" и другие).
И к ней эту процедуру прикрутила. Теперь захожу в Реализацию, провожу документ и нажимаю эту кнопку "Подтверждение". У меня сохраняется в экселе подтверждение для клиента в нужной ему форме, с определенными графами.
А в папку пусть одну и ту же сохраняется. У одного клиента бывает до сотни маленьких накладных. Подтверждения все наберутся в одной папке, я их скопом отправлю ему по почте и очищу папку.
Спасибо Вам!
35 Злопчинский
 
21.11.11
23:51
(34) не надо так делать!
причина тривиальная - любая правка приведет к необходимости обновления MD и выгона пользователей из программы чтобы сделанные изменения вступили в силу.
.
следует действоать через механизм ВПФ - внешних печатных форм.

в качестве шаблона - можно взять любую DGA (torg12.ert или любую другую подходящую)
.
они все примерно одинаковые:
при открытии проверяется передаваемый список параметров (как правило 3 строки в списке - Контекст,Устройство,КоличествоКопий); вызывается процедура формирования печформы и т.д.
.
теперь чтобы сделать что-то интересное - достатчоно модифицировать эту ВПФ - и положить ее вместо старой...
36 Злопчинский
 
21.11.11
23:54
(34) ух...
формируем список нужных накладных (перебором иди запросом). Показываем на форме - жмакаем кнопку "ВСЁ!" - в цикле для каждой накладной - формируем список параметров и передаем его в нужную ВПФ - одним дивжением сохраняются все печформы. Примерно по такому принципу - см.(14)
37 KatyaShumilova
 
22.11.11
00:38
(35)Я одна работаю, так что выгонять кроме себя некого.
Но Вы абсолютно правы, лучше сразу привыкать делать правильно. Вдруг появится возможность уйти в более крупную фирму, где много пользователей или наша фирма расширится.
Через ВПФ конечно будет правильнее и удобнее.
(35) Попробую завтра нарисовать такую форму как в примере(14) и формирование списка накладных запросом. Думаю получится.

Спасибо Вам!
38 Злопчинский
 
22.11.11
01:05
(37) вообщем-то, если начинаете практичекси с нуля - то лучше ориентироваться на 8-ку...
39 KatyaShumilova
 
22.11.11
14:44
Злопчинский вернитесь! =))
Два часа уже бьюсь над (31), не получается.
Может я вообще не в той степи роюсь?

СтрР = "\/:*?"><|";
СтрА = "----    -";
ИмяФайла = Прав(+СОКРЛП(Докум.НомерДок)+" "  +Докум.адрес+),8);
Для ш=1 По 8 Цикл
   Символ = Сред(ИмяФайла, ш,1);
   Поз =  Найти(СтрР, Символ);
   Если Поз > 0 Тогда    
       ИмяФайла = СтрЗаменить(ИмяФайла, Символ, Сред(СтрА,Поз, 1));
   КонецЕсли;
КонецЦикла;      
ИмяФайла = КаталогИБ() + "ExtForms\Почта\Накладная " +ИмяФайла+".xls";
     Таб.Записать(ИмяФайла, 1);                                  
     Сообщить("Сформирован файл "+ ИмяФайла);
   
КонецПроцедуры
40 DeiMos
 
22.11.11
15:01
ИмяФайла = Прав(СОКРЛП(Докум.НомерДок)+" "  +СОКРЛП(Докум.адрес),8);
..........................................
..........................................
Если Прав(КаталогИБ(),1)="\" Тогда
ИмяФайла = КаталогИБ() + "ExtForms\Почта\Накладная " +ИмяФайла+".xls";
Иначе
ИмяФайла = КаталогИБ() + "\ExtForms\Почта\Накладная " +ИмяФайла+".xls";
КонецЕсли;
41 KatyaShumilova
 
22.11.11
17:11
(40) Это не то. Символы не в пути, а в имени файла (конкретно в Докум.адрес).

Плин оказалось надо было строке Р поставить две кавычки подряд:
СтрР = "\/:*?""><|";
Получилось.