Имя: Пароль:
1C
1С v8
Обработка листа Excel в контексте &Сервер
0 Maxwell198705
 
13.11.15
09:18
Есть лист эксель, хранится на рабочем столе(в нем выгрузка для документа поступления). Необходимо загрузить этот файлик т.е. программно открыть, передать на сервер и обработать.Проблема в том, что на севере Excell не установлен и установка запрещена. Таким образом файлик excell разбираем на клиенте и в каком то формате необходимо передать на сервер. Как Вы уже догадались реализация на УФ. Порекомендуйте каким образом это лучше сделать?
1 mikecool
 
13.11.15
09:21
временное хранилище - в него пихай что хошь, лишь бы сериализовалось
2 Maxwell198705
 
13.11.15
09:25
а тогда как на сервере разберётся этот файл если там excell не стоит. временное хранилище подойдёт если предварительно его в Табличный документ сконвертировать, или таблицу значений
3 Maxwell198705
 
13.11.15
09:26
любой формат который не трубует открытия сторонней программы
4 Maxwell198705
 
13.11.15
09:28
есть какая то функция которая бы лист ексель в файл типа "табличный документ" перевела?
5 Maniac
 
13.11.15
09:28
а задача какая? что в этом файле?
У меня обработка для 1С с компонентой на Питоне читает и грузит эксели без Экселя.
Читает все форматы, работает во всех режимах 1С. и на всех операционках, даже на линуксе.
Скорость 100 000 строк в минуту.
6 Горогуля
 
13.11.15
09:29
а картошку она чистить умеет?
7 Maniac
 
13.11.15
09:29
(4) есть встроенный метод табличного поля Прочитать()

Но не уверен что он работает на всех форматах экселя.
8 zak555
 
13.11.15
09:29
УФ ?
9 Maniac
 
13.11.15
09:30
в метода Прочитать() в параметрах путь к файлу.
10 mikecool
 
13.11.15
09:30
(5) а питон требуется устанавливать?
11 Maxwell198705
 
13.11.15
09:31
(9) это касательно моего 4 сообщения?
12 Остап Сулейманович
 
13.11.15
09:33
(0) Табличная часть. Заполнять на клиенте. После чтения данных в табличную часть сходить на сервер и там все обработать.
13 RomaH
 
naïve
13.11.15
09:39
МассивДанных = РабочийЛист.UsedRange.Value.Выгрузить();
14 Maniac
 
13.11.15
09:42
(12) на клиенте - ту уй когда что заполнишь.
клиент 1С работает только с формой.
никакие заполнения чего либо и тп в нем не существует.
15 Maxwell198705
 
13.11.15
09:43
И таблицу значений передавать тоже нельзя
16 Maxwell198705
 
13.11.15
09:44
(13) Подскажи пож-та ещё как собрать обратно в табличный документ из массива
17 RomaH
 
naïve
13.11.15
09:45
(14) ты ври , да не завирайся
18 zak555
 
13.11.15
09:46
(14) > никакие заполнения чего либо и тп в нем не существует.


нельзя к чему обращаться ?
19 Остап Сулейманович
 
13.11.15
09:46
(14) Ты сам то пробовал? Табличные части вполне себе заполняются на клиенте. Открой любой документ с табличной частью.
20 RomaH
 
naïve
13.11.15
09:48
(16) ну вы блин даете
http://www.youtube.com/watch?v=vIZVWVJ4_9M
21 Maniac
 
13.11.15
09:48
(19) Открыл. что дальше?))))
22 Остап Сулейманович
 
13.11.15
09:48
+ (19) И для особо любознательных Маней могу сообщить - обработка также может иметь табличную часть. И точно также ее можно заполнить на клиенте. А доступна она будет на сервере без всяких извратов. Просто в контексте открытой формы.
23 zak555
 
13.11.15
09:49
(21) не умеешь к с ТЧ работать на клиенте ?
24 Остап Сулейманович
 
13.11.15
09:50
(21) Дальше пробуй ее заполнять.
25 Maniac
 
13.11.15
09:50
(22) ты идиот? ну и что что табличная часть у обработки.

в процедурах клиента НИКАКИЕ методы не доступны по работе с данными в ПРИНЦИПЕ.

там куда не плюнь идет вызов дальнейших процедур НА СЕРВЕРЕ.
И клиент-серверной базе это значит что все это фактически осуществляется на сервере!
26 Остап Сулейманович
 
13.11.15
09:51
(25) "ты идиот?" Держи себя в руках.
27 RomaH
 
naïve
13.11.15
09:52
уговорил, черт языкастый

    МассивДанных = РабочийЛист.UsedRange.Value.Выгрузить();
    
    РабочийЛист = Неопределено;
    
    Док.Close();
    
    Книги = Неопределено;
    Ексель = Неопределено;
    
    ВсегоСтрок = МассивДанных.ВГраница();
    
    НомерКолонки = 0;
    
    ТаблицаДляЗагрузкиОчиститьНаСервере();
    
    Для Каждого КолонкаЛиста Из МассивДанных Цикл
        
        НомерКолонки = НомерКолонки + 1;
        НомерСтроки = 0;
        
        Для каждого ЗначениеЯчейки Из КолонкаЛиста Цикл
            
            НомерСтроки = НомерСтроки + 1;
            
            Если ЗначениеЯчейки = Неопределено Тогда
                Продолжить;
            КонецЕсли;
                  
            ТаблицаДляЗагрузки.Область(НомерСтроки,НомерКолонки).Текст = СокрЛП(ЗначениеЯчейки);
            ТаблицаДляЗагрузки.Область(НомерСтроки,НомерКолонки).ГраницаСверху = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная,);
            ТаблицаДляЗагрузки.Область(НомерСтроки,НомерКолонки).ГраницаСнизу = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная,);
            ТаблицаДляЗагрузки.Область(НомерСтроки,НомерКолонки).ГраницаСлева = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная,);
            ТаблицаДляЗагрузки.Область(НомерСтроки,НомерКолонки).ГраницаСправа = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная,);
            ТаблицаДляЗагрузки.Область(НомерСтроки,НомерКолонки).ЦветРамки = Новый Цвет(179,172,134);
            
        КонецЦикла;
        
    КонецЦикла;
28 Maniac
 
13.11.15
09:52
(26) нефиг нести ересь.
29 Maxwell198705
 
13.11.15
09:53
тише тише ребята!
проблема фигня))))) не стоит из-за неё ругаться!
30 Maniac
 
13.11.15
09:53
(27) чувак. Экселя нет! Ты сабж читал?
31 Maxwell198705
 
13.11.15
09:54
(27) спасибо!
32 Остап Сулейманович
 
13.11.15
09:54
+ (26) Никогда не видел расчет суммы в табличной части? Например в событии ПриИзменении?
Типа такого :
текСтрока.Сумма = текСтрока.Количество * текСтрока.Цена;
При этом на сервер за такой фигней никто управление не гоняет.

Прочитай книжку "Разработка управляемого интерфейса" - потом начинай надувать пузыри соплями.
33 Maxwell198705
 
13.11.15
09:54
меня забанили на время как то, теперь культурный стал, и Вам рекомендую)))
34 Maxwell198705
 
13.11.15
09:57
для себя сделал вывод что, нуна в табличный документ, его передавать на сервер и там разбирать. любые методы на сервере типа
Эксель = Новый COMОбъект("Excel.Application");
не применимы , поскольку такого приложения нет.
35 Остап Сулейманович
 
13.11.15
09:58
(34) Не в табличный документ. А в табличную часть.
36 Maxwell198705
 
13.11.15
09:58
P.S.
Тип "Табличный документ" передавать можно
37 Остап Сулейманович
 
13.11.15
09:58
(36) А табличная часть доступна в контексте. Без всяких передач.
38 Maniac
 
13.11.15
09:59
(34) даже если будет стоять на сервере. ты там с комом нормально работать не сможешь.
39 zak555
 
13.11.15
09:59
(25)

какие проблемы в открой форме на клиенте заполнить таблицу (ТаблицаЗначений/ТабличнаяЧасть) ?
40 Maxwell198705
 
13.11.15
09:59
(35) мне нужно лишь временное хранилище файла, для этого не обязательно ещё и конструировать табличную часть
41 aka AMIGO
 
13.11.15
10:01
Всё не читал, но осуждаю © миста :)
а почто-ж не такой способ?
        scr = СоздатьОбъект("MSScriptControl.ScriptControl");
        scr.language = "javascript";
        scr.eval("MyArray=new Array()");
.. и т.д..
читаем Exel"евские файлы.. обрабатываем инфу, радуем бд..

ась?
42 RomaH
 
naïve
13.11.15
10:01
(38) не надо распространять свой опыт на всех
че-то у меня все работает - хоть на клиенте, хоть на сервере

что за проблемы с комом на сервере?
43 Maniac
 
13.11.15
10:01
(39) еперный балет.
ВЫ САБЖ ЧИТАЛИ?

Да пусть будет таблица - хоть я не знаю вагон таблиц.
на КЛИЕНТЕ ты не запустишь КОМ чтоыб считать ЭКАСЕЛЬ!

А значит по факту  НИКАКИМ боком никак ты эту ТЗ НЕ ЗАПОЛНИШЬ!

Просто тупо потому что эксель не считаешь.
44 Maniac
 
13.11.15
10:03
(42) элементарная проблема - ЭКСЕЛЯ НЕТ.
какой нафиг ком тут может быть.
45 Maniac
 
13.11.15
10:03
Я уже молчу про то что если на сервере вообще будет линукс стоять;
46 MaxS
 
13.11.15
10:04
Всё не читал, но сообщу, что у меня успешно работает обработка чтения файла Excelом на клиенте, записывает данные в Объект.МояТаблица
А на платформе 8.3.6 и выше можно спокойно на сервере читать без Excel'я.
47 RomaH
 
naïve
13.11.15
10:04
(44)
ну прям, не знаю

&НаКлиенте
Процедура КомандаЗагрузитьТаблицуИзФайла(Команда)
    
    ИмяФайла = "";
    
    Если Не ВыбратьФайлДляЗагрузки(ИмяФайла) Тогда
        Возврат;
    КонецЕсли;
    
    Попытка
        Ексель = Новый COMОбъект("Excel.Application");  //ПолучитьCOMОбъект()
        Книги = Ексель.Workbooks;
        Ексель.DisplayAlerts = Ложь;
    Исключение
        ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ОписаниеОшибки(),Объект);
        Ексель = Неопределено;
        Возврат;
    КонецПопытки;
    
    Попытка
        Док = Книги.Open(ИмяФайла);
    Исключение
        ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ОписаниеОшибки(),Объект);
        Ексель = Неопределено;
        Возврат;
    КонецПопытки;
    
    Для каждого РабочийЛист Из Док.WorkSheets Цикл
        Прервать;
    КонецЦикла;
    
    Если Объект.ВидДокумента = ПредопределенноеЗначение("Перечисление.ВидыДокументовИзмененияСписковЗастрахованных.ОбновлениеСписков") Тогда
        Объект.ИдентификаторСписка = Лев(Док.Name,Найти(Док.Name,".")-1);
    КонецЕсли;
    
    МассивДанных = РабочийЛист.UsedRange.Value.Выгрузить();
    
    РабочийЛист = Неопределено;
    
    Док.Close();
    
    Книги = Неопределено;
    Ексель = Неопределено;
    
    ВсегоСтрок = МассивДанных.ВГраница();
    
    НомерКолонки = 0;
    
    ТаблицаДляЗагрузкиОчиститьНаСервере();
    
    Для Каждого КолонкаЛиста Из МассивДанных Цикл
        
        НомерКолонки = НомерКолонки + 1;
        НомерСтроки = 0;
        
        Для каждого ЗначениеЯчейки Из КолонкаЛиста Цикл
            
            НомерСтроки = НомерСтроки + 1;
            
            Если ЗначениеЯчейки = Неопределено Тогда
                Продолжить;
            КонецЕсли;
                  
            ТаблицаДляЗагрузки.Область(НомерСтроки,НомерКолонки).Текст = СокрЛП(ЗначениеЯчейки);
            ТаблицаДляЗагрузки.Область(НомерСтроки,НомерКолонки).ГраницаСверху = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная,);
            ТаблицаДляЗагрузки.Область(НомерСтроки,НомерКолонки).ГраницаСнизу = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная,);
            ТаблицаДляЗагрузки.Область(НомерСтроки,НомерКолонки).ГраницаСлева = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная,);
            ТаблицаДляЗагрузки.Область(НомерСтроки,НомерКолонки).ГраницаСправа = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная,);
            ТаблицаДляЗагрузки.Область(НомерСтроки,НомерКолонки).ЦветРамки = Новый Цвет(179,172,134);
            
        КонецЦикла;
        
    КонецЦикла;

КонецПроцедуры

я запущу на клиенте ексель
48 Maxwell198705
 
13.11.15
10:04
EXCEL я НЕТУ!!!! В этом особенность вопроса товарищи!
49 Остап Сулейманович
 
13.11.15
10:05
(48) На клиенте?
50 Maniac
 
13.11.15
10:05
(0) КОроче говоря делаешь на форме Табличное поле.

Тупо копи пастом из экселя копируешь и вставляешь все в 1С.
Тут тебе ни эксель, ни вообще капли кода не нужно в принципе.

И делай что душе угодно.
51 aka AMIGO
 
13.11.15
10:06
(48) ты читал (41) ?
У нас на всех компах предприятия установлен ОО, ексель уничтожен.
Читаем MSSC
52 Maniac
 
13.11.15
10:07
(49) даже если на КЛИЕНТЕ будет ЭКСЕЛЬ!

КОМ работает только с ирективой   &НаСервере!!!!

ну жесть просто. как такие вещи не знать.
53 aka AMIGO
 
модератор
13.11.15
10:08
Не нужно так кричать.
54 RomaH
 
naïve
13.11.15
10:09
(48)
а я понял, что на клиенте есть:

.Проблема в том, что на СЕРВЕРЕ Excell не установлен и установка запрещена. Таким образом файлик excell разбираем на КЛИЕНТЕ и в каком то формате необходимо передать на сервер.
55 RomaH
 
naïve
13.11.15
10:09
&НаКлиенте
+ Code

Процедура КомандаЗагрузитьТаблицуИзФайла(Команда)
    
    ИмяФайла = "";
    
    Если Не ВыбратьФайлДляЗагрузки(ИмяФайла) Тогда
        Возврат;
    КонецЕсли;
    
    Попытка
        Ексель = Новый COMОбъект("Excel.Application");  //ПолучитьCOMОбъект()
56 RomaH
 
naïve
13.11.15
10:09
(55) это рабочий код, вот прям щас выполнил еще раз,
57 RomaH
 
naïve
13.11.15
10:10
прям, страшно становится - я вот сейчас узнаю. что КОМ работает только с диррективой "на сервере" и оно у меня перестанет работать
58 MaxS
 
13.11.15
10:10
Весь код приводить не буду, вот названия функций для чтения на улиенте 3-мя способами:
&НаКлиенте
Excel_ПолучитьДанные_COM_НаКлиенте
Excel_ПолучитьДанные_ADO_НаКлиенте
Excel_ПолучитьДанные_COMArray_НаКлиенте

Это работает на клиенте:
НоваяСтрока = Объект.ДанныеExcel.Добавить();
Поле = Лист.Cells(НомерСтроки, НомерКолонки);
ЗначениеЯчейки = Поле.Value;
59 VikingKosmo
 
13.11.15
10:11
Маня в очередной раз не смог втулить свои поделки?
60 Maxwell198705
 
13.11.15
10:12
Повторюсь для уточнения! на клиенте excell есть, на сервере excell нету!
61 Остап Сулейманович
 
13.11.15
10:12
Вот процедура которая используя КОМ работает на клиенте. Может я что-то не так делаю?

&НаКлиенте
Процедура ПортПринтераНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;
    Спис = Новый СписокЗначений;
    Попытка
        WshNetwork = Новый COMОбъект("WScript.Network");
    Исключение
        Стр = "Не удалось создать объект ""WScript.Network""
        |Невозможно организовать выбор принтера";
        ПоказатьПредупреждение(,Стр);
    КонецПопытки;
    Если WshNetwork = Неопределено Тогда
        Возврат;
    КонецЕсли;
    Принтеры = WshNetwork.EnumPrinterConnections();
    Для Сч=0 По Принтеры.length-1 Цикл
        Спис.Добавить(Принтеры.Item(сч+1));
        сч=сч+1;
    КонецЦикла;
    ПортПринтера = ВыбратьИзСписка(Спис, Элементы.ПортПринтера);
КонецПроцедуры
62 Кирпич
 
13.11.15
10:14
(60) ну так открывай excel на клиенте, бери из него данные и передавай на сервер. в чем проблема то?
63 Maxwell198705
 
13.11.15
10:14
КОМ работает и на сервере и на клиенте, в зависимости что  он вызывает, если ком вызывает ексель, а он не установлен, соответственно вылезить ошибко!
64 Maxwell198705
 
13.11.15
10:15
(62) Так ведь я и спросил, каким образом его будет удобней и лучше передать из формата excell на сервер, в последствии создавая документ поступления
65 Остап Сулейманович
 
13.11.15
10:19
66 Кирпич
 
13.11.15
10:19
(64) ды госпади. как угодно передавай. разве это вопрос.
67 zak555
 
13.11.15
10:20
так что маня слился ?
68 Остап Сулейманович
 
13.11.15
10:20
+ (65) Оно заполняется на клиенте. И доступно на сервере без всяких танцев. Просто в контекстном вызове.
69 MaxS
 
13.11.15
10:20
(64) Неужели азы расписывать? ;)
НаКлиенте:
НоваяСтрока = Объект.ДанныеExcel.Добавить();
НоваяСтрока.Колонка1 = Лист.Cells(НомерСтроки, НомерКолонки).Value;

НаСервере
Для каждого СтрокаТЧ Из Объект.ДанныеExcel Цикл
ЗначениеИзЭкселя = СтрокаТЧ.Колонка1;
70 Остап Сулейманович
 
13.11.15
10:22
(69) Он до сих пор не понял что ТабличнаяЧасть <> ПолеТабличногоДокумента.
71 Остап Сулейманович
 
13.11.15
10:23
+ (70) А Маня его убедил, что код
НоваяСтрока = Объект.ДанныеExcel.Добавить();
возможно выполнить только на сервере. Ибо маня так не знает, а значит оно невозможно.
72 hhhh
 
13.11.15
10:32
(69) это и на клиенте можно полностью. Если колонки все выведены на форму.
73 MaxS
 
13.11.15
10:35
(72) можно, но на сервере нужно найти номенклатуру по данным из файла...
74 Maniac
 
13.11.15
10:45
занят сейчас. у меня продажа на 50 тысяч.с клиентом общаюсь.
75 Maniac
 
13.11.15
10:49
Я с вами уже просто запарился. Да на клиенте моджно с объектами работать и примитивными методами.
Но этого мало в последующих вещах.
Я разработку писал не 1 день, и граблей там достаточно.

К тому же у меня требования иные изначально в подходе: никаких комов, никаких эксельей, вплоть до автозагрузки на сервере без каких либо форм.
76 Остап Сулейманович
 
13.11.15
10:54
(75) Как то это не согласуется с
"в процедурах клиента НИКАКИЕ методы не доступны по работе с данными в ПРИНЦИПЕ."  ЦЫ(26).
77 Maniac
 
13.11.15
10:56
(76) Я человек который никогда на мелочи не обращает внимания.
Поэтому у меня в голове гораздо глобальнее вещи лежат, которые на три шага вперед продумывают что будет дальше.
78 DexterMorgan
 
13.11.15
10:57
У маньяка ком не работает на клиенте?
79 zak555
 
13.11.15
10:58
(77) слив засчитан
80 DexterMorgan
 
13.11.15
10:58
Мля, маня, иногда вообще задумываешься, а как ты пишешь то свои супер разработки с твоими знаниями =)
81 Maniac
 
13.11.15
10:59
(80) я с комом попрощался изначально 4 года назад.
На тот момент он на клиенте не работал.
82 zak555
 
13.11.15
10:59
(80) ты открой любую его поделку -- увидишь
83 DexterMorgan
 
13.11.15
11:00
(52) на помедитируй =)

COMОбъект (COMObject)
Конструкторы:

По имени приложения

Описание:

Создает COM-объект (например, Word, Excel и т.д.). Методы и свойства СОМ-объектов в дальнейшем становятся доступными через данный объект.

Доступность:

ТОНКИЙ КЛИЕНТ, веб-клиент, сервер, толстый клиент, внешнее соединение.
84 Maniac
 
13.11.15
11:00
Даже если и сейчас работает - мне ком этот нафиг не вперся.

У меня давно уже давно основаная задача это автозагрузка данных в регламентном задании на сервере.
85 DexterMorgan
 
13.11.15
11:00
(82) Я открывал, на пред работе покупали (до меня ^^), комментировать не буду, ибо антиреклама =)
86 Maniac
 
13.11.15
11:01
(83) ну значит в последних платформах разрешили.
87 DexterMorgan
 
13.11.15
11:01
(84) Сейчас? А когда не работал?
88 Maniac
 
13.11.15
11:03
(87) ты думаешь я точно помню?
У меня на УФ обработка вышла на второй день выхода УТ11.
89 DexterMorgan
 
13.11.15
11:03
(84) "мне ком этот нафиг не вперся"
А ты свою хню на питоне как запускаешь?
90 Александр_
Тверь
 
13.11.15
11:03
а не использовать загрузку через ком объекты еще не предлагали?
Что-нибудь типа вот так

ТабДок = Новый ТабличныйДокумент;
ТабДок.Прочитать("С:/Эксель.xlsx");
ПостроительЗапроса = Новый ПостроительЗапроса;
ПостроительЗапроса.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТабДок.Область());
ПостроительЗапроса.Выполнить();
ТаблицаИтоговая = ПостроительЗапроса.Результат.Выбрать();
91 Александр_
Тверь
 
13.11.15
11:04
естественно предварительно файлик передав на сервер.
92 Maniac
 
13.11.15
11:05
(89) что значит хнюб на питоне.
Питон - высокоуровневый язык программирования.

У меня ДЛЛ. Нативная. Для нее не нужно ничего. Работает на всех операционках.
93 Maniac
 
13.11.15
11:06
(90) книги она читать не умеет.
да и кажется работает только с какими то отсталыми форматами экселя.
94 zak555
 
13.11.15
11:07
(85) они ещё могут кстати из базы данные удалятьт
95 Maniac
 
13.11.15
11:07
Я точно не помню экселем кажись полнейшая лажа с считыванием листов экселя.
96 DexterMorgan
 
13.11.15
11:07
(94) да ладно тебе, пусть маня сам со своими клиентами разбирается =)
97 Александр_
Тверь
 
13.11.15
11:07
(93) xls,xlsx,ods читает.
единственный косяк, если несколько листов, то читает все.
лист от листа отделяется пустой строкой в таблице
НО! работает ОЧЕНЬ быстро и нативно.
Не надо париться с установкой эксель.
Очень удобно, возможно это то, что нужно автору.
98 RomaH
 
naïve
13.11.15
11:08
(90) а если листов несколько? оно будет работать?
99 zak555
 
13.11.15
11:08
(96) у него политика простая -- я за свои обработки не отвечаю
100 Александр_
Тверь
 
13.11.15
11:09
(98) с листами есть нюансы. но, кстати, можно перед загрузкой с помощью ПостроительЗапроса, решить вопросы листов. никто не мешает. в любом случае проще и универсальнее чем с экселем париться.
101 Maniac
 
13.11.15
11:12
(100) я тоже за табличное поле.
При простых задачах самое то.
Если на листах будут разные данные - разная структура. то будут проблемы.
Впрочем проблемы будут тогда вообще в целом во всем.
Настройки делать и тп и тд.
102 VikingKosmo
 
13.11.15
11:13
если на листах будут разные данные, то без искусственного интеллекта никуда...
103 Maniac
 
13.11.15
11:17
(102) ;)) хвастаться не буду у меня все решено)
любые настройки. общие, индивидумальные.
Я конечно мозг себе съел как для юзера продумать интерфейс таких настроек. но сделал. и сам тащусь от него уже который год.
104 Мимохожий Однако
 
13.11.15
11:24
ОФФ:(103)"хвастаться не буду у меня все решено)". В данном предложении заложено противоречие.Ничего личного.
105 VikingKosmo
 
13.11.15
11:25
Маня изобрел ИИ написанный в экселе!
106 Maniac
 
13.11.15
11:30
Чем не шедевр?

http://www.youtube.com/watch?v=VA0U8zi2PXA
107 ЧеловекДуши
 
13.11.15
11:35
(1) Толку, на сервере нет екселя :)
108 DexterMorgan
 
13.11.15
11:49
(99) так а кто отвечает? это общая политика, иначе не может быть
109 MaxS
 
13.11.15
12:19
(90) Если исходный файл со строками разного содержания, то ничего путного не выходит. Считывается например одна колонка, если в первых строках шапка, потом шапка таблицы, а потом данные.
Если читать через
ТабличныйДокумент.Прочитать(ФайлEXCEL, СпособЧтенияЗначенийТабличногоДокумента.Значение);
ТабличныйДокумент.ПолучитьОбласть(... То до всех колонок можно добраться.
Но ТС хочет именно через Excel читать. ;)
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший