Имя: Пароль:
1C
 
Можно ли сохранить данные во внешней обработке?
Ø
0 ANTIpod
 
27.10.06
12:08
Требуется сохранять некоторые данные непосредственно в самой внешней обработке. Никаких дополнительных файлов, никакого хранения в данных самой базы. Вписали строчку с данными, закрыли обработку, отослали по почте, там открывают - та же самая строчка.
Такое реально сделать?
1 angro
 
27.10.06
12:09
перем константа;
константа = "данные";
3 konde
 
27.10.06
12:14
нет, нереально. Внешняя обработка не предназначена для хранения чего-либо, придется в пару к ней приелываь внешний файл с данными.
4 Мутабор
 
27.10.06
12:19
Можно, но нужно научиться заменять таблицы во внешних обработках.... Они же там храняться.
5 Lew50
 
27.10.06
12:30
(0) (3) (4) Думаю, что можно создать макет и записывать в его ячейки. Только предусмотреть процедуры записи и чтения.
(4) Табличные части во внешних обр. делал. В них можно псевдохранить данные, если в командной панели предусмотреть действие "Сохранение данных", при следующем открытии на том же рабочем месте - их увидишь, но если получат почту и откроют, то ничего не увидят.
7 konde
 
27.10.06
12:35
(4, 6) Имеется в виду - научиться в процессе исполнения обработки заменять в ней же (и сохранять) макет? Штатными средствами ни в 7.7, ни в 8.0 никак. В 7.7 можно попробовать при помощи Rainbow, да и то вряд ли удастся нормально работу заполняющего организовать - пока открыта обработка заменить что-либо в ней невозможно (файл блокируется... или я не прав?)
9 Lew50
 
27.10.06
12:45
(7)Почему же невозможно? Например, чтение информации из макета я уже делал:
Процедура МакетПрочитать()
  Перем Макет;
  
  Макет = ПолучитьМакет(МакетИмя);
  КолКолонок=Макет.ШиринаТаблицы;
  КолСтрок=Макет.ВысотаТаблицы;
  Сообщить("КолКолонок="+КолКолонок+"; КолСтрок"+КолСтрок+";");
  Для Аа=1 По КолСтрок Цикл
    ОбработкаПрерыванияПользователя();
    Строка="";
    Для Бб=1 По КолКолонок Цикл
      ТекОбласть=Макет.Область("R"+Аа+"C"+Бб);
      ТекЗначение=ТекОбласть.Текст;
      Если ПустаяСтрока(Строка)=Ложь Тогда
        Строка=Строка+" # ";
      КонецЕсли;
      Строка=Строка+ТекЗначение;
    КонецЦикла;
    Сообщить(Строка);
  КонецЦикла;
КонецПроцедуры
P.S. Может можно и записать?
10 konde
 
27.10.06
12:50
(9) не по сути высказались - смотрите (0) и (8)
Чтение - мелочь. делал обработку обработку заполнения демо-базы с обработки - ничего, стреляет... а вот сделать ЗАПИСЬ в обработку штатными средствами нельзя... если файл обработки не блокируется при открытии ее пользователем (в чем я сомневаюсь, наверняка блокируется), может быть можно будет сделать при помощи ВК, основанной на rainbow.
11 Uho
 
27.10.06
12:54
чё то я не пойму зачем отсылать обработку??? почему нельзя отослать файл распространенного формата, сформированный этой обработкой?
12 konde
 
27.10.06
12:57
а вообще по поводу (6) - шлите архивом, который нужно положить в указанное место. При начале работы другая обработка его распакует куда нужно (все барахло, которое туда вложено, включая и логику в виде обработки, и данные) и исполнит обработку с заранее определенным наименованием. Причем данные гарантированно будут на месте. Процесс упаковки обработки и данных тоже можно (и нужно) сделать автоматическим (есть бесплатная ВК от Раруса, которая работает с ЗИПом, валялась на dead.hare.ru). Таким образом, пользователь работает с обработками, входящими в состав конфы, но скрытым от него образом в виде одного архива передаются и данные, и интерпретирующая эти данные логика.
13 konde
 
27.10.06
12:59
(11) видимо, имеется в виду случай, когда формат файла меняется "на ходу"
15 Lew50
 
27.10.06
13:17
(10) Вспомнил, я тогда действительно в макет записал в режиме конфигуратора через буфер. Но тоже нужно было, чтобы информация по остаткам была в той же вн. обработке, с помощю которой эти остатки потом и закачали в другую ИБ.
16 AlexNew
 
27.10.06
13:17
А почему ты из обработки не можешь отослать, что тебе надо с письмом с определенным зоголовком, а на входе проверять письма с таким заголовком и выкладывать что тебе надо куда надо, чтобы страшные люди этого не видели?
17 Неглупый
 
27.10.06
13:18
(14) хранить данные в самих базах нельзя. вот нельзя и всё
железный аргумент
18 Uho
 
27.10.06
13:22
чушь какая то
19 angro
 
27.10.06
13:26
(18) Это точно
(0)Если обработка обноразовая, то почему нельзя просто файл excel-евский отослать, всем проще будет.
20 konde
 
27.10.06
13:28
к (0)
так чем (12) не усторил? Пользователи видят ОДИН файл - архив. А в нем уже - что хошь.
21 Lew50
 
27.10.06
13:41
(20)А если макет внешней обработки заполнять не из нее самой? Например из обработки в самой конфигурации или другой вн.обр.:
  Обработка = ВнешниеОбработки.Создать(""+ИмяВнешнейОбработки);
  Макет = Обработка.ПолучитьМакет("Данные");
  ТекОбласть=Макет.Область("R1C1");
  ТекОбласть.Текст="Проба";
В отладчике видно, что в тексте уже строка "Проба", вот теперь как-то необходимо "Обработка" записать опять в файл...
23 Uho
 
27.10.06
14:01
(22) ответь на (19)
25 snc
 
27.10.06
16:35
(0) Если вн.обработка отсылается по инету, то она может хранить данные в сжатом виде в интернете по определенному адресу (прописанному в самой обработке)
26 Ахмед ибн Фадлан
 
27.10.06
16:45
Интересно говорите, давайте еще версий.
Могу подсказать одну из сфер применения -
например универсальная обработка, которая не должна зависеть от наполнения ИБ, и даже от состава метаданных. Наприер в этой обработке нужно хранить структуру ХМЛ-файла. Чтобы не разкидывать саму обработку и структуру по разным файлам.
27 Pilcrow
 
27.10.06
22:32
А ты попробуй набить реквизиты и ТЧ обработки данными, а потом из модуля обработки:
    ЗначениеВФайл(ЭтотОбъект, ПутьКФайлу);
А потом:
    Обработка = ЗначениеИзФайла(ПутьКФайлу);
Интересно, что получится? Гы-гы-гы!
28 Pilcrow
 
27.10.06
22:41
(27)+ Не, не получается. Сохраняет только GUID. Видимо ОбработкОбъект не сериализуется.
29 Дурочка 1С ™
 
27.10.06
22:43
(0) А в чем проблема?
30 VZ
 
27.10.06
22:57
Во-первых, сам файл обработки при открытии не захватывается монопольно. И при открытой и работающей обработке ее файл вполне доступен и для чтения, и для записи.
Во-вторых, очень даже просто организовать внутри тела обработки "буфер", куда можно запсочить битовые данные. Средствами встроенного языка затруднительно, конечно, но виндовыми утилами - да.