|   |   | 
| 
 | v7: Новое решение старых проблем. "Config Spy" для 1С:Предприятие 7.7 от АЛьФа | ☑ | ||
|---|---|---|---|---|
| 0
    
        АЛьФ 23.11.16✎ 11:28 | 
        Проблема 1: в пакетном режиме иногда ночное создание резервной копии заканчивается неудачей, при этом в журнал регистрации ничего не пишется, выводится только в окно сообщений, что бесполезно, т.к. после выполнения пакета окно 1С закрывается.
 Проблема 2: 1С не хочет зиповать выгрузку больше 2 гигабайт. Решение: 1. Перехват сообщений и запись их во внешний лог (аналог 1spy.dll для Предприятия). 2. Подключение внешнего архиватора. http://dorex.pro/files/configspy.zip | |||
| 138
    
        Масянька 25.11.16✎ 13:09 | 
        АЛьФ
 В общем журнале слетает раскраска. Все галки стоят (не меняется). Не часто бывает, но бывает. Помогает - закрыть/открыть. Интересует причина. Спасибо. | |||
| 139
    
        Масянька 25.11.16✎ 13:09 | 
        + (138) Закрыть/открыть - эска, имеется ввиду.     | |||
| 140
    
        АЛьФ 25.11.16✎ 13:18 | 
        2(138) Только в одном журнале?     | |||
| 141
    
        Масянька 25.11.16✎ 13:22 | 
        (140) А у меня раскраска и есть только в общем.     | |||
| 142
    
        АЛьФ 25.11.16✎ 13:25 | 
        2(141) Частичная раскраска используется?     | |||
| 143
    
        Масянька 25.11.16✎ 13:26 | 
        (142) Да, по условию.     | |||
| 144
    
        АЛьФ 25.11.16✎ 13:27 | 
        2(143) Лучше перейти на использование плана раскраски. Скорее всего, из-за частичной раскраски и глючит.     | |||
| 145
    
        Масянька 25.11.16✎ 13:31 | 
        (144) Обе галки стоят. В коде:
 //****************************************************************************** Процедура ПослеОткрытия() РФорма = СоздатьОбъект("РасширениеФормы"); РФорма.РаскрашиватьТаблицу("МногострочнаяЧасть"); КонецПроцедуры // ПослеОткрытия //****************************************************************************** Функция ПоказатьКонтроль() Если ТекущийДокумент.Выбран() = 0 Тогда Возврат ""; КонецЕсли; Если ТекущийДокумент.Вид() = "Реализация" Тогда Возврат ТекущийДокумент.Контроль + 1; КонецЕсли; Если ТекущийДокумент.Вид() = "ДневнаяРеализация" Тогда Возврат "FONT[" + глПолучитьЦвет(128, 0, 128) + "] "; КонецЕсли; КонецФункции | |||
| 146
    
        АЛьФ 25.11.16✎ 13:33 | 
        2(145) Вот я и рекомендую отказаться от частичной раскраски. Бестолковая штука. Перехват все равно ставится на отрисовку всех таблиц.     | |||
| 147
    
        Масянька 25.11.16✎ 13:34 | 
        (146) А где почитать/посмотреть про план?     | |||
| 148
    
        Cool_Profi 25.11.16✎ 13:34 | 
        Леш, спасибо, интересное решение.
 Жаль - применять уже некуда... | |||
| 149
    
        АЛьФ 25.11.16✎ 13:42 | 
        2(147)
 "План раскраски", "@Описание Для ускорения и упрощения работы раскраски таблиц в компоненту с версии 2.0.5.85 введен функционал плана раскраски таблицы. Для его активизации необходимо вызвать метод ИспользоватьПланРаскраски() объекта Сервис с параметром 1 (соответсвенно, для отключения и перехода на старый принцип раскраски надо вызвать тот же метод, но с параметром 0). По умолчанию функционал плана раскраски отключен и работает старая методика раскраски. Для реализации раскраски по новому функционалу плана раскраски, необходимо добавить в раскрашиваемую таблицу колонку с заголовком ''''FormEx_ПланРаскраски'''' (без кавычек, регистронезависимо). Колонка может располагаться в любом месте таблицы. Содержимое этой колонки задает план раскраски таблицы, основанный на тех же макросах, которые описаны в части ''''Раскраска таблиц''''. При этом макросы COUNT и INDENT не обрабатываются. В плане раскраски каждая ячейка текущей строки определяется круглыми скобками. В плане учитываются как видимые, так и невидимые колонки. Макросы раскраски надо помещать в места, соответсвующие смене раскраски. Несколько примеров помогу лучше понять этот принцип. @Пример плана раскраски ''''()()()(BRUSH[255])()()(BRUSH[NONE)'''' - обозначает, что начиная с четвертой колонки (включительно) цвет фона ячеек устанавливается красным, а с седьмо раскраска фона отключается и все остальные колонки не раскрашиваются; ''''(BRUSH_S[255])'''' - обозначается, что вся строка, когда она становится текущей, подсвечивается красным фоном. " | |||
| 150
    
        АЛьФ 25.11.16✎ 13:42 | 
        2(148) На здоровье.     | |||
| 151
    
        Cool_Profi 25.11.16✎ 13:44 | 
        (150) Кстати идея на будущее - попробуй прикрутить события OnBeforeUnload()/onAfterUnload()...     | |||
| 152
    
        vcv 25.11.16✎ 13:46 | 
        (149) А про проблему, когда журнал/справочник с включенной раскраской не прорисовывается при открытии (табличная часть выглядит пустой) кому-нибудь что-нибудь случайно неизвестно?     | |||
| 153
    
        Масянька 25.11.16✎ 13:47 | 
        (149) Спасибо! Ппопробую.     | |||
| 154
    
        АЛьФ 25.11.16✎ 13:48 | 
        2(151) А что по ним должно вызываться в конфигураторе? Скрипты прикручивать?     | |||
| 155
    
        Cool_Profi 25.11.16✎ 13:49 | 
        (154) Не в конфигураторе. Вовне.
 Это может решить проблему с захватом базы в EM | |||
| 156
    
        АЛьФ 25.11.16✎ 13:50 | 
        2(152) Известно. Только нормально не получилось разобраться в причине. В компоненте это пытается лечиться путем повторного обновления таблицы. Правда это вызывает так же повторный пересчет вычисляемых функций в таблице и торможению в некоторых случаях. Поэтому в некоторых релизах FormEx это обновление отключалось.     | |||
| 157
    
        АЛьФ 25.11.16✎ 13:51 | 
        2(155) Типа прописать так же выполнение некой программы (или батника), как архиватор вызывается?     | |||
| 158
    
        Cool_Profi 25.11.16✎ 13:53 | 
        (157) да, что-то вроде.
 Или например, удостовериться, что целевой каталог существует. Или после выгрузки результат проверить и отправить на резервное хранение. Или уведомить админов о начале/завершении. много чего можно придумать. | |||
| 159
    
        АЛьФ 25.11.16✎ 13:56 | 
        2(158) Боюсь, что не получится. Выгрузка вся идет во внутренней функции, нет точек для перехвата. Только если некие косвенные точки найти.     | |||
| 160
    
        Cool_Profi 25.11.16✎ 13:59 | 
        (159) Жаль...
 Но ты повентилируй эту мыслю, может, приснится что... ) | |||
| 161
    
        Злопчинский 25.11.16✎ 20:47 | 
        (136)  я нечасто, но набегаю в Питер, то на ИС ивенты, то по проекту ктонить зовет, так что не все еще потеряно ;-)     | |||
| 162
    
        АЛьФ 27.11.16✎ 15:51 | 
        Нормально так. Новый проект представляю я, а "пивом/водкой/виски/коньяком" угощают Злопчинского.     | |||
| 163
    
        Злопчинский 27.11.16✎ 16:38 | 
        (162) заходит и ты, и тебе нальем!     | |||
| 164
    
        Злопчинский 27.11.16✎ 16:42 | 
        Кстати, почему почти все используют вычисляемые функции для цветов...? Я так писал давным давно. А сейчас всегда пишу через шестнадцатиричную нотацию, типа Светложеленый это BRUSH[0xCCFFCC] | |||
| 165
    
        MadDAD 28.11.16✎ 08:59 | 
        (162) АЛьФ, Спасибо за новую няшку! А может все таки получится поправить добавление контролов в формексе? 
 Мне без правильных хедеров так и не удалось собрать формекс из исходников 101 версии :( | |||
| 166
    
        АЛьФ 28.11.16✎ 09:01 | 
        2(165) А что не так с добавлением контролов? Я туда и не лез, Артур все доделывал.     | |||
| 167
    
        Это_mike 28.11.16✎ 09:03 | 
        (164) "светложеленый" - это как? :-)
 (165) а что за проблемы, и что изменилось? | |||
| 168
    
        MadDAD 28.11.16✎ 09:03 | 
        Кстати, ковыряю тут плагин для OpenConf + GComp чтоб работал с TFS. Обнаружил в опенконфе неприятный баг. Если у документа/справочника и пр. печатных форм больше 10 то при попытке получить имя 11 и больше происходит вылет. 
 Поковырялся, поправил. если кому надо - вот свежая версия: https://cloud.mail.ru/public/Fae8/KyN3oWpsi | |||
| 169
    
        MadDAD 28.11.16✎ 09:03 | 
        (166) Не добавляется статик в табличную часть :(     | |||
| 170
    
        Это_mike 28.11.16✎ 09:07 | 
        (169) гы... я пару месяцев назад попробовал, не получилось - ну я и плюнул. Значит, это не у меня руки кривые, а в компоненте трабла.     | |||
| 171
    
        АЛьФ 29.11.16✎ 11:14 | 
        2(169) Посмотрел-повертел. Нет, явно не в этом релизе.     | |||
| 172
    
        Злопчинский 30.11.16✎ 19:21 | 
        (74) После отключения использования ПриПечатиТаблицы() ситуация стабилизировалась. Прога не падает. Понаблюдаю еще до конца недели. Результат сообщу (на днях будет много печати).     | |||
| 173
    
        Djelf 30.11.16✎ 21:16 | 
        (0) Поставил на боевую линуксовку под wine`ом (так уж совпало что из-за длинных строк база опять переполнилась, а чистить было лень). Полет нормальный (да я почти и не сомневался что заработает), и размер в 2 раза меньше, чего давно хотелось.
 P.S.Запуск под wine хорошо проверяет на баги, если там заработало то и везде должно. | |||
| 174
    
        АЛьФ 01.12.16✎ 09:28 | 
        2(172) Отлично.
 2(173) Круто. Спасибо. | |||
| 176
    
        trdm 20.12.16✎ 20:15 | 
        (168) Лучше с сорцами. 
 У меня тоже опенконф правленный слегка. Может у Саши спросить его позволения и залить на гитхаб? Что-бы не бегать по инетам. | |||
| 177
    
        trdm 20.12.16✎ 20:16 | 
        (176) + скрипты опенконфа тоже на гитхаб залить. Легче глядеть чегось новенького есть.     | |||
| 178
    
        MadDAD 21.12.16✎ 10:21 | 
        (176) Да я только за. Исходники тут - https://cloud.mail.ru/public/7Wzz/Q8xyY6jKv
 А что у тебя допилено? | |||
| 179
    
        MadDAD 21.12.16✎ 10:23 | 
        (178)+ могу подготовить материал по разработке визуального плагина для OpenConf на C#. Для знающих толк, так сказать :)     | |||
| 180
    
        ADirks 21.12.16✎ 10:27 | 
        скрипты
 svn co svn://anonymous@svn.code.sf.net/p/openconf-scripts/code | |||
| 181
    
        trdm 21.12.16✎ 11:14 | 
        (178) > А что у тебя допилено?
 У меня допилены некоторые реакции на ввод символа в строке. И вызов события телепатонинсерт. Это для редактирования прямых запросов. К сожалению исходники не могу найти, диск крякнул. | |||
| 182
    
        Djelf 14.01.17✎ 19:03 | 
        (0) Наткнулся на проблемку. Openconf определяет свою версию по версии файла config.dll и выкидывает ее как переменную version. В не работающем скрипте то я поправил, но может и еще где-то странное вылезти.     | |||
| 183
    
        vadim777 16.01.17✎ 12:44 | 
        Настроил configspy на локальном компе, проверил на небольших базах - все Ok. Установил на сервер с базами на MS SQL 2008, делаю выгрузку базы (размер mdf-файла 73Гб), долго работает, сообщает, что выгрузка завершена. Но сам файл выгрузки отсутствует. Где копать?     | |||
| 184
    
        АЛьФ 16.01.17✎ 13:15 | 
        2(183) Настроить лог внешнего архиватора и смотреть что он там возвращает.     | |||
| 185
    
        АЛьФ 16.01.17✎ 13:16 | 
        2(182) Тут неплохо бы допилить именно openconf.     | |||
| 186
    
        vadim777 16.01.17✎ 15:44 | 
        (184) Пытаюсь сделать согласно http://superuser.com/questions/519114/how-to-write-error-status-for-command-line-7-zip-in-variable-or-instead-in-te
 изменяю строку Параметр: Параметры='u -tzip -ssw -mx7 "%1%" "%2%" >> log_file.log' При этом формируется архив, в котором файл 1cv77.dat, и пустой каталог базы. Лог-файл не создается. Как правильно сформировать лог-файл архиватора 7zip для случая запуска его из 1с? | |||
| 187
    
        АЛьФ 16.01.17✎ 16:51 | 
        2(186) Хм... Значит так. Можно попробовать еще параметр "Показывать" в файле ini поставить в 1. Тогда будет показано окно архиватора и можно будет глазками посмотреть что там происходит.
 Еще при ошибке архивирования в каталоге базы должен создаваться подкаталог log с тестовым файлом "СлужебныйЛог". Там должен быть выведен код ошибки. | |||
| 188
    
        vadim777 16.01.17✎ 18:58 | 
        (187) Сделал явное направление лог-файла:
 Параметры='u -tzip "%1%" "%2%" >> D:\LOG_FILE.LOG' Также: Показывать=1 База (папка) с именем Test Выгружаю в файл D:\123.zip На экране быстро проскакивает окно архиватора - щелкают проценты.В итоге в архиве - файл 1Cv77.dat и пустая папка Test. Файл D:\LOG_FILE.LOG не создан. В каталоге базы создан подкаталог log, в нем файл Статусы_20170116.txt. Последние строки этого файла: .......... 2017.01.16 18:50:02 :: Выгрузка плана счетов: Основной 2017.01.16 18:50:02 :: Выгрузка плана счетов: Основной - 100 2017.01.16 18:50:02 :: Выгрузка плана счетов: Основной - 200 2017.01.16 18:50:02 :: Выгрузка плана счетов: Основной - 300 2017.01.16 18:50:02 :: Выгрузка плана счетов: Основной - 400 2017.01.16 18:50:02 :: Выгрузка документа: Договор 2017.01.16 18:50:02 :: Выгрузка календарей 2017.01.16 18:50:02 :: Для получения подсказки нажмите F1 | |||
| 189
    
        Злопчинский 16.01.17✎ 19:08 | 
        Параметр с логфайлом попробовать взять в кавычки?     | |||
| 190
    
        Djelf 16.01.17✎ 19:21 | 
        (186) Если с маленькими базами все в порядке то строка архивации правильная, значит дело в чем-то другом.
 Попробуй обновить 7zip т.к. возможно это баг, все таки zip64 не родной формат. Либо сменить контейнер на 7z. А... вот что может быть https://sourceforge.net/p/sevenzip/bugs/1551/ 1С сначала упаковывает .md, потом .dat, потом .usr Т.е. возможна ситуация (см.выше) что 7zip делает контейнер в формате zip32, потом пытается в него запихнуть огромный файл и на этом падает. | |||
| 191
    
        vadim777 16.01.17✎ 19:22 | 
        (189) Перед этим попробовал
 Параметры='u -tzip "%1%" "%2%"' >> D:\LOG_FILE.LOG Ничего - ни лога, ни архива. Пробую Параметры='u -tzip "%1%" "%2%"' >> 'D:\LOG_FILE.LOG' В архиве только пустая папка Test, без 1Cv77.dat. Лог-файла нет. В каталоге базы создан подкаталог log, в нем файл Статусы_20170116.txt, последние строки - те же, что выше. Попробовал даже так: Параметры='u -tzip "%1%" "%2%"' '>> D:\LOG_FILE.LOG' Архив вообще пустой. | |||
| 192
    
        vadim777 16.01.17✎ 19:23 | 
        (190) У мен сервер 2008 - 32 битный.     | |||
| 193
    
        vadim777 16.01.17✎ 19:24 | 
        (190) 7-Zip 16.04     | |||
| 194
    
        vadim777 16.01.17✎ 19:28 | 
        (190) В (76) выгружали базу в 13Гиг, у мена - 73Гиг. Похоже, ты прав.     | |||
| 195
    
        Djelf 16.01.17✎ 19:35 | 
        (192) При чем тут битность сервера?
 Я говорю про битность контейнера http://www.artpol-software.com/ziparchive/KB/0610051629.aspx | |||
| 196
    
        vadim777 16.01.17✎ 19:37 | 
        (190) Пробую со строкой
 Параметры='u -tzip -mx0 -mmt -bd "%1%" "%2%"' на сервере.... | |||
| 197
    
        vadim777 16.01.17✎ 19:37 | 
        (195) Та да, уже прочел.     | |||
| 198
    
        Djelf 16.01.17✎ 19:48 | 
        (196) С логом, да, что то не хочет...
 Грязный хак: подмени после запуска users.usr на что-то объемное, тогда на нем упаковка подторомозит и будет видно что случилось после dat файла. А толку то менять режимы компрессии, если я все таки прав? -tzip в этом случае надо поменять на -t7z | |||
| 199
    
        vadim777 16.01.17✎ 19:52 | 
        (198) Или вообще заменить на rar-архиватор, с созданием архивов в расширением zip.     | |||
| 200
    
        Злопчинский 16.01.17✎ 20:00 | 
        (191)  полный путь логфайла возьми в лвойные кавычки точно также как параметрыпроценты     | |||
| 201
    
        vadim777 16.01.17✎ 20:05 | 
        (200) Сделал:
 Параметры='u -tzip -mx0 -mmt -bd "%1%" "%2%"' >> "D:\LOG_FILE.LOG" Нет ни архива, ни лог-файла. | |||
| 202
    
        Злопчинский 16.01.17✎ 20:07 | 
        О ты побач яка подлюка...
 Тогда копать не вширь а вглубь придется | |||
| 203
    
        vadim777 16.01.17✎ 20:08 | 
        (202) Есть мысль : завернуть этот вызов в bat-файл. Счас попробую...     | |||
| 204
    
        vadim777 16.01.17✎ 20:16 | 
        (203) Попробовал - ерунда получается - пытается запихнуть в архив все базы:
 configspy.ini [zip] Архиватор='"C:\Program Files\7-Zip\7z.bat"' Параметры='"%1%" "%2%"' ПараметрПароля='-p' Показывать=1 7z.bat: "C:\Program Files\7-Zip\7z.exe" u -tzip -mm=ppmd -mmt=on -mmem=256m -mo=16 "%1%" "%2%"' >> D:\LOG_FILE.LOG | |||
| 205
    
        vadim777 16.01.17✎ 20:42 | 
        (204) Совсем забыл передачу параметров в dos, извиняюсь за ламерство :(
 К тому-же: Usage: 7z <command> [<switches>...] <archive_name> [<file_names>...] [<@listfiles...>] К тому-же из ReadMe.txt к configspy: маска %1% заменятся на имя архива, генерируемое 1С; маска %2% заменяется на имя текущего архивируемого файла. Так понимаю, configspy передает 7zip'у список файлов для архивирования во втором параметре. В общем, вызывать 7zip через батник не получится. Как и получить лог-файл работы архиватора. Если ошибся - поправьте. | |||
| 206
    
        Djelf 16.01.17✎ 21:46 | 
        (205) Забыл ;)
 Запусти такой батник echo $1 $2 Но все таки попробуй не -tzip, а -t7z | |||
| 207
    
        vadim777 16.01.17✎ 22:57 | 
        (206) Вот смотри:
 7z.bat echo %1 %2 pause "C:\Program Files\7-Zip\7z.exe u -tzip -mm=ppmd -mmt=on -mmem=256m -mo=16 %1 %2" >> D:\LOG_FILE.LOG Вот его вывод: D:\1C7_Bases\Test>echo "D:\123.zip" "D:\1C7_Bases\Test\1Cv7.MD" "D:\123.zip" "D:\1C7_Bases\Test\1Cv7.MD" D:\1C7_Bases\Test>pause Для продолжения нажмите любую клавишу . . . | |||
| 208
    
        Djelf 16.01.17✎ 23:23 | 
        (207) Мне смотреть там нечего...
 "C:\Program Files\7-Zip\7z.exe" u -t7z -aoa -mm=ppmd -mmt=on -mmem=256m -mo=16 %1 %2 >> D:\LOG_FILE.LOG Упаковывает, в лог выводит. Старый файл архива с тем же названием лучше удалить. Хотя можно и батник доработать... | |||
| 209
    
        Djelf 16.01.17✎ 23:25 | 
        Ну и Параметры='"%1%" "%2%" '
 И больше ничего там не надо. С паролем не знаю, возможно как %3 передается... | |||
| 210
    
        orefkov 17.01.17✎ 04:16 | 
        (176)
 Я не против. Лейте опенконф на гитхаб. | |||
| 211
    
        Emery 17.01.17✎ 07:09 | 
        (210) Вопрос Александру Орефкову.
 Извиняюсь, что не по теме. Мне нравится в вашем методе построения внешних компонент для 1С77 полное игнорирование механизма COM, отсутствие каких-либо экспортируемых функций в dll-ке и при этом полный доступ к внутренностям платформы «семерки», например, построение собственных окон средствами MFC, воспринимаемыми 1С как родные. Мне, правда, больше нравиться цепляться с динамическим окнам (объекты «Текст» и «Таблица»), удалять их содержимое (фрейм и клиентскую область) и замещать их собственными окнами. Для этого меня интересует, как получить аналоги функций в вашем шаблоне ВК: m_iExtWndsSupport-> GetAppMainFrame(&hMainFrame) и m_iExtWndsSupport->GetAppMDIFrame(&hMDIFrame), используемые в стандартных шаблонах «семерки»? Конечно, я могу использовать функции WinAPI, вроде: FindWindow(), GetWindow() и им подобным, но хотелось бы знать, как это сделать в вашем шаблоне внешней компоненты (шаблон Орефкова?), на котором построены проекты 1sqlite.dll, TurboMD.dll и др. И вообще как в вашем шаблоне получать hWnd окон? | |||
| 212
    
        АЛьФ 17.01.17✎ 10:04 | 
        2(209) Пароль с помощью отдельного параметра в ini устанавливается: ПараметрПароля='-p'
 Компонента сама допишет к этому параметру пароль. | |||
| 213
    
        Emery 17.01.17✎ 11:19 | 
        (211) Как важно правильно формулировать вопросы! В Интернете сразу же нашлись ответы. Вот, пожалуйста:
 HWND hMainFrame = AfxGetApp()->m_pMainWnd->m_hWnd; HWND hMDIFrame = GetWindow(hMainFrame, GW_CHILD); HWND hLastChildFrame = GetWindow(hMDIFrame, GW_CHILD); Здесь hLastChildFrame это последнее открытое окно в «семерке», с которым уже можно делать, что хочешь, менять содержимое на свое окно и прочее. | |||
| 214
    
        orefkov 17.01.17✎ 13:13 | 
        (211) (213)
 Я не один всё это придумывал, моя в этом малая часть. Лучше всего вдумчиво изучать исходники 1C++, FormEx, OpenConf. | |||
| 215
    
        АЛьФ 17.01.17✎ 14:02 | 
        Кстати, если кто-нибудь возьмется внедрить подключение внешнего архиватора в OpenConf, то свои исходники я готов предоставить с удовольствием.     | |||
| 216
    
        Emery 17.01.17✎ 15:19 | 
        (214) > Я не один всё это придумывал, моя в этом малая часть. 
 Я так понимаю, это касается хидер-файлов «семерки», т.е. все, что идет в папке «1CHEADERS». Но файл ContextImpl.hpp, в котором определена суть обхода COM-технологии (нужной разве что, программистам Visual Basic, Visual FoxPro, чтобы использовать у себя компоненты, написанные на С++, да в пользовательских средах, поддерживающих VBA или аналоги, вроде MS-Офисных продуктов) стоит ваш копирайт: (с) Александр Орефков t*****t@inbox.ru. Именно это мне и интересно, поэтому, полагаю, что термин «шаблон Орефкова», по аналогии с шаблонами внешних компонент 1С77, версий 1 и 2, вполне корректен. Я бы даже предложил всем пишущим ВК для «семерки» использовать ваш шаблон, который можно получить убрав содержательную часть из вышеупомянутых проектов. > Лучше всего вдумчиво изучать исходники 1C++, FormEx, OpenConf. Да, это подразумевается, причем это далеко не полный список ВК77 с открытым исходным кодом. | |||
| 217
    
        trdm 17.01.17✎ 15:28 | 
        (210) Мерси. Рад видеть!     | |||
| 218
    
        Emery 17.01.17✎ 15:35 | 
        (215) > Кстати, если кто-нибудь возьмется внедрить подключение внешнего архиватора в OpenConf, то свои исходники я готов предоставить с удовольствием.
 OpenConf, штука конечно замечательная, как и другие ваши продукты, только, откровенно говоря, я не очень понимаю, смысла во внешнем архиваторе. Для себя я всегда использую внешнее архивирование всей базы 1С во внешний rar-файл, с помощью WinRar’a, в т.ч. 64-разрядного , а dt / dat / zip’ами не пользуюсь уже много лет и как то не страдаю, хотя рабочих, достаточно объемных баз у меня много. Места на дисках пока хватает, даже для множественного копирования (5-10 и более копий важных баз для меня нормально). | |||
| 219
    
        trdm 17.01.17✎ 15:53 | 
        (215) > Кстати, если кто-нибудь возьмется внедрить подключение внешнего архиватора в OpenConf, то свои исходники я готов предоставить с удовольствием. 
 А нафига внешний архиватор в OpenConf???? | |||
| 220
    
        АЛьФ 17.01.17✎ 16:05 | 
        2(219) Для решение проблемы из (0) без необходимости подключения двух компонент.     | |||
| 221
    
        trad 17.01.17✎ 16:14 | 
        (216) +1
 тоже использовал "шаблон Орефкова" в нескольких своих ВК | |||
| 222
    
        trad 17.01.17✎ 16:17 | 
        (218) как я понимаю, при миграции dbf <-> sql без "штатной" выгрузки/загрузки не обойтись     | |||
| 223
    
        trdm 17.01.17✎ 17:07 | 
        (220) Я бы для этой задачи не рекомендовал бы использовать OpenConf, а рекомендовал бы сделать чистую инсталяцию такого же релиза без OC и пойти путем Ромикса.
 Нафига при выгрузке возможности опенконфа? | |||
| 224
    
        trdm 17.01.17✎ 17:09 | 
        +(223) Причем впихнул бы архиватор сразу в компоненту, что-бы не гоняться за ней ри инсталяциях.
 в (223) имеется ввиду что при архивации не нужны пользовательские примочки и прочая интерактивная шняготень, которая может и поглючивать. Я за экогомию памяти и упрошение в таком серьезном деле как бекап. | |||
| 225
    
        АЛьФ 17.01.17✎ 17:10 | 
        2(223) И чем обосновываешь?     | |||
| 226
    
        АЛьФ 17.01.17✎ 17:11 | 
        2(224) Понятно.     | |||
| 227
    
        Emery 17.01.17✎ 17:48 | 
        (221) Да, замечательная штука, я давно такую хотел :) .
 (222) С этим согласен, только если уж переводить dbf в sql в 7.7, то не надо ждать пока превысится двух-гектарный лимит, потенциальные проблемы должны быть прочувствованы заранее. В обратную сторону можно двигаться и при превышении лимита, используя скриптовые возможности SQL-сервера, хотя в данном случае желательно избегать проблем на ровном месте. | |||
| 228
    
        Emery 17.01.17✎ 21:46 | 
        (213) К сожалению, эксперименты показали, что надежно работает только первая строчка кода. Последние две строки, в общем случае могут показывать на любые окна, например, статусную строку, что нас в данном случае мало интересует. Поэтому придется перебирать всех потомков главного окна приложения либо можно воспользоваться другим кодом, дающего в итоге хэндл активного MDI-шного окна, например, предварительно созданного (и отображенного!) программными средствами «семерки» объекта «Текст» или «Таблица»:
 CMDIFrameWnd *pFrameWnd = (CMDIFrameWnd *) AfxGetApp()->GetMainWnd(); if(!pFrameWnd) return FALSE; // Get a pointer of the active MDI child window //CMDIChildWnd *pActChildWnd = (CMDIChildWnd *) pFrameWnd->GetActiveFrame(); CMDIChildWnd *pActChildWnd = pFrameWnd->MDIGetActive(); if(!pActChildWnd) return FALSE; // Get a handle of the active MDI child window HWND hActChildWnd = pActChildWnd->m_hWnd; if(!hActChildWnd) return FALSE; Теперь ненулевой хэндл hActChildWnd указывает на искомое активное (динамическое) дочернее окно, которое является целью наших притязаний. | |||
| 229
    
        АЛьФ 17.01.17✎ 22:55 | 
        2(228) Зачем это все?     | |||
| 230
    
        Emery 18.01.17✎ 07:18 | 
        (229) > Зачем это все?
 Закономерный вопрос. Надо писать статью. Но, в двух словах. Пишу внешнюю компоненту для «семерки». Общая идея – попытка разделения данных и кода. Хочется, чтобы с помощью только внешней обработки можно было бы получать полноценный доступ к базе данных. Имеется в виду полнофункциональный грид, с возможностью MMF навигации и редактирования в виртуальном режиме по произвольным dbf-файлам. Подобные исследования у меня есть, можно обрабатывать dbf-ки объемом в сотни мегабайт, навигация летает, что дурная. При этом встает вопрос об индексации, поиске, сортировке, select sql'у и т.п. Для этого удается привлечь рантайм-библиотеки Visual FoxPro. Причем, здесь тоже удалось обойти COM-механизм, тем более, что в этих библиотеках он реализован нестандартно, если не сказать грубее. Остается грид. До сих пор я экспериментировал с компонентом на базе SysListView32, в т.ч. пытался работать с ним напрямую, минуя COM. Это возможно, только объект нужно переименовывать, например, в SysListCtrl32. Однако сам по себе этот контрол требует хорошей обёртки, проще уж воспользоваться другими компонентами, особенно на базе опен-сорса. Скажем, взять грид из wxWidgets или Qt, как самые продвинутые. Но можно выбрать что-то и попроще, вроде SimpleGrid и т.п. Таким образом, мы приходим к необходимости создания внешних визуальных оконных компонентов в 1С. Легко создать независимые окна и присоединить их к MDI клиенту «семерки» или даже «восьмерки». Только при этом наблюдается сильное мерцание при обновлении и об этих внешних окнах 1С ничего не знает, соответственно их нет ни в закладках, ни в меню. Следовательно, более желательно, чтобы окна порождались самой системой 1С (например, динамические окна «Текст» или «Таблица» и их аналоги «ТекстовыйДокумент» / «ТабличныйДокумент» в 8.х), а затем мы бы цеплялись к этим окнам, удаляли их клиентскую часть и фрейм и замещали бы своими окнами (для этого и обсуждался здесь вопрос о хэндле активного дочернего MDI-шного окна). Правда, в проекте TurboMD.dll реализован способ создания родных окон 1С, средствами MFC, только этот метод более громоздкий, хотя и полезный. В результате, все замечательно, 1С видит эти окна, регистрирует их у себя, мы, в принципе, можем работать с произвольными внешними dbf-файлами и даже писать внешние скрипты на VFP. Все просто чудесно! И, благодаря шаблону Орефкова, никакого назойливого COM'а! | |||
| 231
    
        АЛьФ 18.01.17✎ 09:11 | 
        2(230) Я сильно извиняюсь, но это сильно напоминает попытку почесать левое ухо правой ногой. В семерке прекрасно открываются собственные окна по майкрософтовской технологии документ-вид.     | |||
| 232
    
        Emery 18.01.17✎ 09:26 | 
        (231) > В семерке прекрасно открываются собственные окна по майкрософтовской технологии документ-вид.
 Так я про это тоже говорил. Пример в TurboMD.dll. Естественно, это я имею в виду. Только это более громоздкий вариант. У меня всего несколько строчек кода вместо оформления трех классов и вызова шаблона для них. M$ любит приводить в пример «Документ-Вид» различные представление документа в Ворде. Только, самое смешное, что эта MFC-шная технология не реализована в Ворде от слова «совсем». Не более, чем визуальная демонстрация. Поэтому, я не в особом восторге и от этой технологии. На уровне логики согласен абсолютно, а на уровне формальной реализации, не очень. А в данном проекте это совершенно не принципиальный момент, считайте, что я использовал классы Document-View. Что это меняет? | |||
| 233
    
        АЛьФ 18.01.17✎ 09:37 | 
        2(232) По этой технологии построена семерка. Поэтому приходится под нее подстраиваться. Если вообще от 1С отвязываться, то на фига тогда она вообще? Почему бы не написать отдельное приложение и не рулить в нем как хочется?     | |||
| 234
    
        Emery 18.01.17✎ 10:10 | 
        (233) «Семерка» хороша по своему, как по мне, одна из лучших программ. Трудоёмкость ее создания 20 человеко-лет (10 программистов писали ее два года). Поэтому частным лицам ее аналог потянуть трудно, а все форки уходят в сторону клиент-серверных систем, тогда как ниша файл-серверных систем пустеет. Но не зря говорят, новое это хорошо забытое старое, уверен, что файл-сервер еще ждет свой ренессанс. 
 Насчет «подстраиваться», спорный вопрос. Достаточно обеспечить совместимость, пусть и нестандартную или неочевидную. Думаю, что нет особого смысла тратить время на построение полного аналога 7.7. Вполне можно решать свои проблемы путем внешних обработок и внешних компонент. В этом есть даже свой цимус, мы ничего не трогаем в работающей конфигурации клиента, только подключаем внешнюю обработку с внешней компонентой и расширяем функционал до требуемого уровня. | |||
| 235
    
        vadim777 23.01.17✎ 18:02 | 
        (0) База на MS SQL 2008 на Server 2008 32бит.
 mdf - размер 78Гб, log - 17Гб. Выгрузилась база в архив размером 8,4Гб. Для эксперимента попробовал загрузить, тут же на сервере, в dbf-формате - дня три загружалась, выдала ошибку "Ошибка поиска в файле безымянный файл". Попробую загрузить в базу SQL, о результатах доложу. | |||
| 236
    
        Djelf 23.01.17✎ 18:13 | 
        (235) Было такое. Мне кажется это было связано с непечатными символами в таблицах. На dbf после тии ошибка ушла. А вот проверки физической целостности на sql из конфигуратора не сделать...     | |||
| 237
    
        Злопчинский 23.01.17✎ 19:06 | 
        (235) Каспара ещё на всяк случай выключи когда в дбф     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |