Вход | Регистрация

1С:Предприятие ::

Метки:

Точность числа табл. в режиме ввода данных. КАК????

Я
   Грек
02.04.04 - 15:32
Хай всем!
Как узнать точность числа в ячейке таблицы в режиме ввода данных?
То что число/строка легко: ТипЗначенияСтр(Таблица.Область("R1C1).Значение). А как точность то вытянуть?
 
 
   Рупор абсурда
 
1 - 02.04.04 - 15:45
Никак! А зачем?
   Грек
2 - 02.04.04 - 15:57
Выгрузка хитрой таблицы в Excel. В самой таблице ессно все точности проставлены ручками, но их очень много и все разные. Хочется сделать выгрузку без всяких массивов, которые хранят типы и т.д. Все жирности, шрифты, рамки нормально читаются, а вот эта беда никак. Просто сохранять как xls нельзя, т.к с несколько разных отчетов надо компоновать как одна книга Excel. Ну это другая песня. Заодно есть вопрос по VBA Excel. Тута же можно или новую тему поднимать?
   skunk
 
3 - 02.04.04 - 16:11
(1)думаю... если изгальнуться то можно... правда 1с под рукой нет, абы проверить... вечером...
   Грек
4 - 02.04.04 - 16:22
А как?
   Рупор абсурда
 
5 - 02.04.04 - 16:35
(2) Давай про ВБА ...
(3) Нельзя!
   skunk
 
6 - 02.04.04 - 16:41
(5)ну вообщето вариантов много, например по самому значению... если он при выводе использует формат...
   NastyFrog
 
7 - 02.04.04 - 16:46
А в Excel'е с запасом? Типа очень точно?
   Рупор абсурда
 
8 - 02.04.04 - 16:47
(6) Значение возвратит само значение, а не отображаемую в ячейке информацию ...
   Грек
9 - 02.04.04 - 16:47
вопрос собственно старый. Как поставить PageSetup.Zoom=False. Чтобы сама потом размещала на нужное колво листов.
Я пробовал так: Лист.PageSetup.Zoom=0, где Лист ессно Worksheets.
Вместо нуля пробовал предварительно в любой ячейке писать типа ..Cells(..).Formula="=1=2"; там появляется False, а потом присваивал Zoom значение той ячейки - нифига не получилось. Вариант с надстройками не катит, т.к. отчет универсальный для нескольких филиалов и везде контроллировать эту надстройку нереально (винду переставят и т.д.). Из положения вышел жестким масштабом, подобранным тыком.
зы про точность я вот думал вот как сделать: присвоить ячейке таблицы в реж.ввода число типа 123456,456464561. Оно обрежется по формату, заданному в ячейке. Потом прочитать его и посмотреть что после запятой. Вроде должно получиться. Только что придумал, в пн попробую, сейчас другой завал
   skunk
 
10 - 02.04.04 - 16:49
(8)вот больше всего это и хотелось проверить... вообщето у меня при одном расскладе возращала не значение, а то что видала в ячейке...
 
  Рекламное место пустует
   Рупор абсурда
 
11 - 02.04.04 - 16:53
(9) Это самый трудный вопрос по Эксель, на который я знаю ответ ...
   Грек
12 - 02.04.04 - 16:54
Все, вопрос темы снят, получилось как в 9.
Осталось про ВБА
   Композитор
 
13 - 02.04.04 - 16:55
ВБА - Всемирная Боксерская Ассоциация.
   Грек
14 - 02.04.04 - 16:55
11: Так приоткрой чудо
   Грек
15 - 02.04.04 - 16:57
13: Боксер-Одинэссовец?;) оригинально-с-с.
   Рупор абсурда
 
16 - 02.04.04 - 16:58
(14) Присвоить из 1с не получится, нужно присваивать средствами Экселя ...
Из 1с создаёшь макрос, который выполнит это присвоение, и запускаешь его, потом убиваешь макрос ...
   Грек
17 - 02.04.04 - 17:00
Ладно книжку толстую купил уже по ВБА, буду рыть.
Если больше никак, то тема закрыта, сенькс всем.
А с subj. правда получилось, и легко.
   Рупор абсурда
 
18 - 02.04.04 - 17:11
Вот ветка с Т1С - подробный обсос этого вопроса

Управление Excel из 1С!!!! ХЕЛП!!!! Алекс1234
06.03.2003 - 13:24 Формирую отчет, сохраняю в Excel, но печатать его надо на одной странице.
Пытаюсь открыть файл и вписать ему в параметры страницы печатать не более чем на 1 стр в ширину
обЭксел = СоздатьОбъект("Excel.Application");//создаем объект

НашФайл = обЭксел.Workbooks.Open(СокрЛП(ИмяФайла));//Открываем файл

НашЛист = НашФайл.Sheets(1);//Устанавливаем нужный лист

СвойстваСтр = НашЛист.PageSetup;
СвойстваСтр.FitToPagesTall=1;
СвойстваСтр.FitToPagesWide=1;
Но надо еще переставить "галочку". При попытке
СвойстваСтр.Zoom=0;
ругается, позволяя ставить от 10% до 100%.
Как ему объяснить, что смотреть надо не на масштаб, а на количество страниц?? (перевести галочку)
ХЕЛЛП!!!  
avb
1 - 06.03.2003 - 13:30 параметру Zoom значение False по OLE из 1С не присвоишь!
я долго с этим бился, нашёл один извратный способ.
очень извратный!
рассказывать?
Алекс1234
2 - 06.03.2003 - 13:32 обязательно
?
3 - 06.03.2003 - 13:37 а false = 0? не -1 случайно (просто предположение)
Natalia
4 - 06.03.2003 - 13:37 (1) интересно, как тебе это удалось... я тоже долго билась, но ничего кроме записи макросов в файл через OLE и их выполнения тут же не придумала - так и бросила.
^
5 - 06.03.2003 - 13:44 (1)Небось через SendKeys...
avb
6 - 06.03.2003 - 13:45 заведи файлик хлс с процедуркой

Public Sub exPageSetup(wb, ws)
    With Workbooks(wb).Worksheets(ws).PageSetup
        .Zoom = False
        .FitToPagesWide = 1
        .FitToPagesTall = 1
    End With
End Sub

сохрани, предварительно сделав его скрытым.
тогда он не будет, при открытии, вылезать наверх и становится activeWorkbook.
параметры:
wb - имя рабочей книги (имя файла без пути)
ws - номер или идентификатор (ярлык) листа

в 1с делаю типа так:

excel.workbooks.open(путь+"мойфайлик.xls");
excel.run("МОЙФАЙЛИК.XLS!EXPAGESETUP("""+excel.activeWorkbook.name+""","+номерЛиста+")");

потом его закрываю
Natalia
7 - 06.03.2003 - 14:06 (6) - ну в общем-то тоже выход...
Алекс1234
8 - 06.03.2003 - 16:03 Зашел в Excel, сервис\макрос\редактор VisualBasic. Вставил макрос. Получаю ошибку
Microsoft Excel: Не найден макрос 'Z:\1CT77NET\DB_ARC\DB75WORK\CorrectPageSetup.xls!EXPAGESETUP("Книга1.xls",1)'.
Как ее сделать доступной, извините за глупый вопрос
avb
9 - 06.03.2003 - 16:05 путь убери
Natalia
10 - 06.03.2003 - 16:11 А мои попытки сделать Zoom из 1С получились вот какими:
//

 //Зн =1+ОкноЕхс.VBE.ActiveVBProject.VBComponents.Count();

 //ОкноЕхс.VBE.ActiveVBProject.VBComponents.Add(1);

 //ОкноЕхс.VBE.ActiveVBProject.VBComponents(Зн).CodeModule.InsertLines (1, "Sub Zoom(S)");

 //ОкноЕхс.VBE.ActiveVBProject.VBComponents(Зн).CodeModule.InsertLines (2, "Worksheets(S).PageSetup.Zoom= False");

 //ОкноЕхс.VBE.ActiveVBProject.VBComponents(Зн).CodeModule.InsertLines (3, "End Sub");

 //ОкноЕхс.Application.Run ("Zoom(1)");

 //???? ОкноЕхс.VBE.ActiveVBProject.VBComponents.Remove(,);

 //
Т.е макрос пишется прямо в текущую книгу. Все работает, но при открытии спрашивает про макросы (хотя в (6) наверное то же самое будет). А удалить макрос программно не получилось - не дошли руки до умных книжек - вот так и забросила :-).
Алекс1234
11 - 06.03.2003 - 16:14 все равно
avb
12 - 06.03.2003 - 16:16 2(10) можно оба решения объединить
т.е. создавать новый файл - писать туда макрос - выполнять - убивать
а чтоб на макросы не ругался, либо защиту - в минимум, либо - excel.displayAlerts=0;
loh
13 - 06.03.2003 - 16:17 обычно делаю так:
Перем True,False;
...
True=-1;
False=0;
^
14 - 06.03.2003 - 16:18 (10)А ты подпиши макросы-то...
avb
15 - 06.03.2003 - 16:21 2(13) тут так не сработает, не тот случай :)
2(14) научи, или хоть в ТФМ носом ткни, плз
Natalia
16 - 06.03.2003 - 16:23 Наверное, действительно лучше просто создавать новый файл, прописывать в него Public Sub, выполнять, а потом закрывать без сохранения (Close(-1))с displayAlerts=0 - "минимум защиты" мне не нравится - а с новым файлом - это выход!
(14) - подписывать пробовала, но что-то не получилось, руки не дошли добить проблему.
^
17 - 06.03.2003 - 16:23 +13 А ещё можно обычный *.js/*.vbs скрипт написать и из под 1цэ его запускать.
^
18 - 06.03.2003 - 16:27 (15)В 2k офисе есть утилитка selfcert.exe (только нужна из sp1 и больше, обычная не работает), создаёшь свою цифровую подпись. А макрос подписать - VBE - Tools - DigitalSignature - Выбрать.
Natalia
19 - 06.03.2003 - 16:29 (18) немного непонятно, как это применимо в этой ситуации...
avb
20 - 06.03.2003 - 16:33 2(19) типа подписанным макросам можно доверять :)
2(17) да, так я тоже делал (и, вроде, успешно), но потом почему-то отказался, а почему - уже не помню :(
Natalia
21 - 06.03.2003 - 16:36 А если я их хочу совсем "убить"? Без разбора - свои-чужие :-) Построчно удалять получается, но это конечно не то - модули пустые, а все равно сохраняется "реакция на макросы"?
^
22 - 06.03.2003 - 16:45 (21)Так удаляй весь модуль, что мешает?
Natalia
23 - 06.03.2003 - 16:46 Научи как - у меня с REMOVE какие-то проблемы...
avb
24 - 06.03.2003 - 16:48 2(23) я тоже не понял.
какие проблемы с remove?
Natalia
25 - 06.03.2003 - 16:51  Я его наверное как-то не так применяю -
ОкноЕхс.VBE.ActiveVBProject.VBComponents.Remove(,); - что должно быть параметрами этого самого Remove - что-то в Help не находится
^
26 - 06.03.2003 - 16:53 На VBA:
dim myVBComponent as VBComponent
set myVBComponent=application.VBE.VBProjects(1).VBComponents("Module1")
application.VBE.VBProjects(1).VBComponents.Remove myVBComponent
Natalia
27 - 06.03.2003 - 17:11 ОкноЕхс.VBE.ActiveVBProject.VBComponents.Remove()
1)без параметров - ругает за неверное количество параметров
2)с одним числовым параметром - ругает за несовпадение типов
3)с первым опущенным и вторым числовым - что-то вроде "нельзя выполнить метод..."
Так и не поняла пока, что ей туда нужно.
^
28 - 06.03.2003 - 17:23 (27)На 1Цэ:
МойМодуль=ОкноЕхс.VBE.ActiveVBProject.VBComponents("КакОнТамУТебяНазывается");
ОкноЕхс.VBE.ActiveVBProject.VBComponents.Remove(МойМодуль);
Natalia
29 - 06.03.2003 - 17:33 Yes!Yes!Yes!Yes!Yes!
Все заработало!
Module=ОкноЕхс.VBE.ActiveVBProject.VBComponents(Зн);//и какая разница как он называется!
ОкноЕхс.VBE.ActiveVBProject.VBComponents.Remove(Module);
Спасибо всем!!
   skunk
 
19 - 02.04.04 - 17:15
(18)лихо...
   Грек
20 - 02.04.04 - 17:34
Да уж, сенька бери мяч.


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