Имя: Пароль:
1C
1C 7.7
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
1 Это_mike
 
23.11.16
11:30
утащил в копилку....
2 Масянька
 
23.11.16
11:31
(0) Пришел, порадовал :)))))))))))
Спасибо.
3 Garykom
 
гуру
23.11.16
11:37
Ууу динозаврики...
4 Базис
 
naïve
23.11.16
11:50
О, аксакалы подтянулись.

(0) Спасибо!
5 АЛьФ
 
23.11.16
11:50
2(1) А потестить?
2(2) На здоровье.
2(3) Не то слово!
6 АЛьФ
 
23.11.16
11:51
2(4) Не за что.
7 Это_mike
 
23.11.16
12:02
(5) дык возможностей все меньше и меньше. равно как и необходимостей...
Но по возможности и необходимости - применю и отчитаюсь....
8 Эльниньо
 
23.11.16
12:14
(5) Ща подниму скульный бэкап на локальный и потестю.
Вроде у Ромикса что-то подобное было?

(4) Саксаулы
9 АЛьФ
 
23.11.16
12:20
2(8) Было. Но мне его решение с перехватом системных функций не нравится. Решил сделать более гибкий вариант.
10 Это_mike
 
23.11.16
12:21
(9) кстати, а подключаемый архиватор применится для УРБД?
11 АЛьФ
 
23.11.16
12:26
2(10) Насколько я понимаю, да. У меня установлен перехват на "struct IzlibEngine::pkZip" и "struct IzlibEngine::pkUnzip". Соответственно, внешний архиватор будет работать везде, где 1С пытается что-то архивировать - выгрузка данных, архивирование данных, УРБД.
Не факт, что я учет все возможные передаваемые параметры.
12 Эльниньо
 
23.11.16
12:31
С опенконфом конфликта не будет?
13 Масянька
 
23.11.16
12:34
(8) Сам ты кустик :)
14 АЛьФ
 
23.11.16
12:43
2(12) Не должно. Там в ридми написано как устанавливать совместно с Опенконфом. Просто переименовать config.dll Опенконфа в openconf.dll.
15 Эльниньо
 
23.11.16
12:49
(13) Кустик. Абыдно, да
Я баобаб
16 Масянька
 
23.11.16
13:01
(15) Э-э-э... А чё в личке Пчёл?
17 tciban
 
23.11.16
13:10
Спасибо! Вроде с клюшек слез, но может и пригодиться :) Да и есть базы на 77 еще :)
18 PCcomCat
 
23.11.16
13:13
Спасибо! Надеюсь не пригодится...
19 Господин ПЖ
 
23.11.16
13:24
(3) таким "динозаврам" надо памятники чугунные ставить на вокзалах
20 АЛьФ
 
23.11.16
13:28
Спасибо за переименование ветки.
21 АЛьФ
 
23.11.16
14:26
А на Мисте стало меньше активности оказывается. Ветка уже не улетает с первой страницы за пару минут.
22 АЛьФ
 
23.11.16
14:27
2(19) А почему на вокзалах?
23 Господин ПЖ
 
23.11.16
14:42
(22) потому что цитата такая

https://ru.wikiquote.org/wiki/ДМБ_(фильм)

- Лютый дед! Таким дедам надо памятники чугунные на вокзалах ставить, а не руки ремнями вязать и никак уж не в вытрезвитель сдавать.
- За деда, чудо богатыря.
24 trdm
 
23.11.16
14:52
А сорцы будут?
ПС. Давно уже стоит написать свою 1Ску, а не курочить это поделие затыкая дырки.
25 АЛьФ
 
23.11.16
15:02
2(24) Если нужны, напиши мне на [email protected], скину. Но там ничего особо интересного нет. Именно что затыкание дырок.
А "написать свою" - это слишком серьезный проект. Если даже 1С++ загнулся в итоге... Не взлетит.
26 Il19
 
23.11.16
15:06
спасибо, бум пробовать
27 trdm
 
23.11.16
15:08
(25) > А "написать свою" - это слишком серьезный проект. Если даже 1С++ загнулся в итоге... Не взлетит.

Ну, интерпретатор работает в боевой БД. Чел мне говорил.
Отчетник (кривой/косой) вроде есть, пара версий, от ёксила до https://github.com/trdm/unnstudioreport

Но семера без доп примочек - лишь память о былом.
28 Sserj
 
23.11.16
15:10
(0) Вопрос немного не по теме, но а вдруг :)
Можно ли как то перехватить противную кнопочку F1, а то в ПриНажатииКнопкиКлавиатуры она появляется после того, как отрабатывает системная помощь. И в относительно свежих версиях вин. вылезает "Failed to launch help" после чего открывается браузер.
29 Ленинград
 
23.11.16
15:17
Круто. А то ни как не слезем с переписанной толстой бухи, интересно, сколько еще 77 будут поддерживать.
30 АЛьФ
 
23.11.16
15:19
2(28) Только если сделать специальный метод, который будет отлавливать именно показ помощи и прерывать его. Именно через перехват клавиатуры не получится.
Готовлю новый релиз FormEx, могу попробовать туда это дела добавить.
31 Это_mike
 
23.11.16
15:20
(23)
"на площадях,
   в клубах
     и на вокзалах
гордо стоишь ты
  на пьедесталах..."©
32 АЛьФ
 
23.11.16
15:22
2(29) У нас похоже до скончания веков будет "семерка". Т.к. переделывать все под восьмерку просто не выгодно и по времени вечность займет. Ладно хоть бухгалтерию постепенно на восьмерку перетягиваем.
33 АЛьФ
 
23.11.16
15:23
2(31)
Разломаю голову напополам,
Выплесну фонтан эмоций:
О, потомки, оставляю вам
Моей рукой заляпаное Солнце!
©
34 Это_mike
 
23.11.16
15:23
(32) "переделывать вечность займет" - мечта франча!
35 АЛьФ
 
23.11.16
15:24
2(34) Да мы тут тоже периодически мечтаем и облизываемся. Вот только "добро" никто не даст :(
36 Guk
 
23.11.16
15:25
(21) так семерошников осталось полтора человека...
37 Это_mike
 
23.11.16
15:26
+(34) самое приятное для франча, что даже при поэтапной и конечной оплате за каждый этап - количество этапов остается бесконечным...
38 Ленинград
 
23.11.16
15:29
(37)И в итоге получится "необновляемая" УТ )))))
39 Это_mike
 
23.11.16
15:31
(38) ага.
ну а для нетленки-самописки особой разницы в том, на чем она написана - нет.
40 АЛьФ
 
23.11.16
15:38
2(36) Так я ж не по семерошным веткам смотрю, а по всем. Раньше улетало мигом с первой страницы. А теперь даже политика не спасает.
41 Djelf
 
23.11.16
18:51
(32) Аналогично, да и смысла проводить на 8ку нет, пока работает. Но за это спасибо минимальному джентльменскому набору: formex,1c++ и йоксель.
А этот подарок, еще тот подарок! Громадное спасибо.
Мечты сбылись - формат 7zip в выгрузке...
42 Злопчинский
 
23.11.16
20:26
(32) аналогично
43 Злопчинский
 
23.11.16
20:28
Альф, а новая версия формекса будет включать всякие доработки тусовки шерсти очаги которыеидалал пипл с 1с++?
44 АЛьФ
 
23.11.16
21:15
2(43) Не понял о каких доработках речь.
45 MishaD
 
23.11.16
21:58
А в чем крутизна? Что мешало базу архивировать тем же 7-zip. В файловой это же просто папка с файлами. SQL не видел, но там тоже вроде своя архивация есть.
46 Franchiser
 
гуру
23.11.16
22:51
Давно не пользуюсь встроенной архивацией: бэкапим скульную часть в рар. Но спасибо) респект большущий!
47 Sserj
 
24.11.16
03:23
(45) Ну самое простое перегонять объемную базу из dbf в sql.
Да и вообще бывают такие затыки в базе что только выгрузка-загрузка спасает.
48 Это_mike
 
24.11.16
07:21
(47) это какие такие "затыки"?
49 mishaPH
 
модератор
24.11.16
07:25
(0) подмена конфига длл. а если у меня уже заменен на опенконф
50 mishaPH
 
модератор
24.11.16
07:27
(45)
1. большую базу надо перегнать в скуль.
2. создать базу УРБД ПБ при выгрузке которой выгружается много чего и не проходит по данному ограничению.
3. бывает надо, большую базу на скуле перегнать в дбф для тестов например а поднимать скуль на своей тачки гемор
51 Sserj
 
24.11.16
07:48
(48) Разнообразные :)
Бывает что тестирование/исправление не проходит.
Самый банальный пример найденный в яндексе.
http://vapaus.ru/14552?0
52 Это_mike
 
24.11.16
08:15
(51) на дубовом форуме - обычно дубовые проблемы и дубовые решения...
Хотя Идун дал нормальное для ДБФ. а для сиквела и оно не нужно...
53 АЛьФ
 
24.11.16
08:49
2(49) Там в ридми написан вариант установки на это случай. Надо просто переименовать config.dll от Опенконфа в openconf.dll.
54 АЛьФ
 
24.11.16
08:51
2(45) Ну, слава Богу! Я уж думал одинэсники совсем сдулись. Но нет! Живо еще искусство объяснять, что не существует самой проблемы, для которой предлагается решение.
55 mishaPH
 
модератор
24.11.16
08:56
(53) мерси.
56 Это_mike
 
24.11.16
08:57
(54) "а вы их дустом пробовали?"© :-)))
57 zak555
 
24.11.16
08:58
и зачем это всё ?
58 АЛьФ
 
24.11.16
09:17
2(56) Не-не! Не надо дустом! Такая прям ностальжи накатила...
59 АЛьФ
 
24.11.16
09:18
2(57) Глубокий вопрос...
60 Злопчинский
 
24.11.16
09:31
(44) ну вроде же кто-то из сообщества 1с++ в формекс дописывали? Или меня клинит?
61 АЛьФ
 
24.11.16
09:35
2(60) Артур (artbear) дописывал параллельно со мной, но вроде как все его изменения у меня учтены. Насколько я знаю, сборки FormEx без меня никто не публиковал.
62 АЛьФ
 
24.11.16
11:27
Кто-нибудь уже успел глянуть?
63 Злопчинский
 
24.11.16
11:53
(61) понял, спсб.
64 Злопчинский
 
24.11.16
11:58
(62) ридми прочитал ;-) с копилку забрал.
из пакетных режимов ночью только реиндексацию используем, вертится уже кучу лет, проблем вроде не было.
пакетные выгрузки/сохранения не используем. бэкапится кобианом по расписанию.
но за сабж - спасибо, хоть не в одиночестве останусь.. ;-)
65 Новиков
 
24.11.16
12:26
АЛьФ, спасибо что живой!
66 Эльниньо
 
24.11.16
12:27
(62) Чёта туплю. Так буит правельна:
[zip]
Архиватор='"C:\Program Files\7-Zip\7z.exe"'
Параметры='u -tzip "d:\backup1C.zip" "d:\back1C.zip"'
ПараметрПароля='-p'
Показывать=0
[unzip]
Архиватор='"C:\Program Files\7-Zip\7z.exe"'
Параметры='e "d:\backup1C.zip" -o"d:\"'
67 АЛьФ
 
24.11.16
12:39
2(66) Нет. Имя архива и архивируемого файла компонента сама подставит из данных, которые 1С передает. В настройках надо писать именно %1% и %2% в нужных местах строки параметров.

Для 7zip можно прямо брать в том виде, который в примере.
68 Злопчинский
 
24.11.16
12:40
я как-то был запостил кучу мотиваторов по КЗК-2 на соседнем ресурсе, но там в итоге погибло.. может сюда запостить? ;-)
69 АЛьФ
 
24.11.16
12:41
2(68) Не стоит. Прибьют за несогласованную рекламу.
70 Злопчинский
 
24.11.16
12:45
(69) злыдни и завистники! ;-)
71 АЛьФ
 
24.11.16
12:47
2(70) Художника каждый обидеть может.
72 Злопчинский
 
24.11.16
12:50
(71) Слушай, а вот может есть наблюдения/советы.
есть и 1С++ и формекс.
каждый день, по случайной кривой ;-) молча падает 1ска при попытке отправить на печать документы. Используется ПриПечатиТаблицы. падает непредсказуемо. В большинсве случаев все проходит ок.

куда рыть? как ловить?
73 Это_mike
 
24.11.16
12:50
(71) "рисуй-рисуй, Паганини!" :-)
74 АЛьФ
 
24.11.16
12:57
2(72) Ну, для начала, естественно, попробовать отказаться от использования ПриПечатиТаблицы и понаблюдать будет ли падать.
Если не будет падать, то я могу повтыкать проверочных точек в этот функционал и попробуем отловить конкретное место падения.

Это если напрягает и есть желание исправить.
75 Злопчинский
 
24.11.16
13:06
(74) Понял. если что - стукнусь
76 Sserj
 
24.11.16
13:46
(62) Погонял Выгрузку/Загрузку с WinRAR, работает отлично.
Выгружал из дбф-базы 13ГБ. файлик dat получился 3,85 гб, сам архив 512Мб. Загрузилось без вопросов.
Вообщем кроме "ПАСИБИЩА" сказать и нечего.
:)
77 АЛьФ
 
24.11.16
14:14
2(76) Спасибо за тестирование.
78 Эльниньо
 
24.11.16
14:35
(67) Пропиши это в ридми, а то у мну несколько часов выгружалось и получился пустой backup1C.zip
79 АЛьФ
 
24.11.16
15:14
2(78) Ну, там это как бы и написано. Только немного другими словами. Сейчас попробую подправить, чтобы более однозначно читалось.
80 АЛьФ
 
24.11.16
15:16
2(78) Вот так нормально будет?
Параметры='u -tzip "%1%" "%2%"'    # строка с параметрами архивирования; маска %1% заменятся компонентой на имя архива, генерируемое 1С; маска %2% заменяется компонентой на имя текущего архивируемого файла
81 Эльниньо
 
24.11.16
15:32
(80) Мой косяк в том, что я слово "заменятся" прочитал как "заменяЮтся"
82 Vippi
 
24.11.16
15:41
(30)
> Готовлю новый релиз FormEx, могу попробовать туда это дела добавить.

Новый релиз с удовольствием потестю ))
83 АЛьФ
 
24.11.16
15:46
2(82) Приключения продолжаются! :)
84 Djelf
 
24.11.16
15:48
Дефолт не очень 'u -tzip "%1%" "%2%" 67.2mb -> 9mb
С ppmd 'u -tzip -mm=ppmd  -mmt=on -mmem=256m -mo=16  "%1%" "%2%"' 67.2mb -> 5.9mb
Шикарно!
lzma2 сможет сильнее, но очень медленно...
85 Vippi
 
24.11.16
15:49
(83) Угу.
Ждемс релиза. А то скука одолела.
86 АЛьФ
 
24.11.16
15:52
2(84) Дефолт делался, чтобы архив можно было штатными средствами загрузить.
87 АЛьФ
 
24.11.16
15:53
2(85) Да у меня там не сильно много и добавлено. Основное - печать штрих-кодов на объекте "Картинка".
88 Vippi
 
24.11.16
15:56
(87) QR?
89 АЛьФ
 
24.11.16
15:58
2(88) И его тоже. Из-за него, собственно, и замутился. Просто интегрировал ZINT.
90 Garykom
 
гуру
24.11.16
15:59
Кста раз тема подходящая, подскажите какие права на марку/наименование GComp ?

Кто придумал и начал писать?
91 Garykom
 
гуру
24.11.16
16:01
(90)+ Допилка его для работы понадобилась, вот думаю имею ли право выложить и под каким именем.
92 АЛьФ
 
24.11.16
16:02
2(90) Автор - Федор Езеев fez
http://fezeev.livejournal.com/
93 Garykom
 
гуру
24.11.16
16:08
(92) Это я в курсе (и про ямы тоже) смысл вопроса был можно ли использовать наименование GComp и(или) исходники.
94 АЛьФ
 
24.11.16
16:15
2(93) Логичное действие - обратить к автору и спросить у него.
Насколько я понимаю, он название не регистрировал в качестве товарного знака и никто не запретит тебе его использовать. А вот исходники под определенной лицензией публиковались. Так что в рамках этой лицензии так же можно действовать без вопросов автору.
95 Vippi
 
24.11.16
16:37
(89) Тем более ждемс.
96 Злопчинский
 
24.11.16
16:39
а можно как-то "впилить" чтобы стандартный объект "картинка" понимал PNG?
97 АЛьФ
 
24.11.16
16:47
2(96) Наверное, еще и с прозрачным фоном, да?
98 Vippi
 
24.11.16
17:02
(97) А без прозрачного фона png не имеет смысла.
99 АЛьФ
 
24.11.16
17:06
2(98) Придется завтра копануть.
100 Vippi
 
24.11.16
17:14
100
101 Эльниньо
 
24.11.16
17:20
Кароч. Тока што выгрузилось
дат 6 гб, зип 650 Мб.
Ща запулю загрузку взад.
102 Злопчинский
 
24.11.16
22:20
(74) обследовал, щаремил при печати таблицы. Посмотрим что будет
103 Злопчинский
 
24.11.16
22:21
(97) ну, если ты настоящий мастер...
Вот мне лично хватит просто пнг
Чтобы на форму положить
104 Djelf
 
24.11.16
22:32
(86) Дефолт-дефолтом, но подобрать параметры надо!
УРБД на тесте сработало, живого сейчас нет ;(
На дохлых каналах 2х сжатие, по сравнению с оригиналом, очень поможет.
105 mishaPH
 
модератор
24.11.16
22:36
Я бы заменил баркоде и потестил шк формирование и печать. у меня активно это используется
106 GreyK
 
24.11.16
23:03
(0) Немного не понял предназначение сабжа. 7ка без авторизованного пользователя сможет запустится из планировщика для архивации?
107 Djelf
 
24.11.16
23:14
(0) А вот
> 1. Перехват сообщений и запись их во внешний лог (аналог 1spy.dll для Предприятия).
почему не в штатный? Он же вроде как не блокируется?

(106) Попробуй!
108 АЛьФ
 
25.11.16
08:29
2(106) Нет. Запускается все как обычно. И выгружается все штатно. Просто для архивирования (и разархивирования) выгруженных данных можно включить использование внешнего архиватора, а не использовать встроенный zlib.
109 АЛьФ
 
25.11.16
08:30
2(107) Идея была в том, чтобы сообщение гарантированно записывалось в лог. Поэтому файл лога открывается-закрывается при каждой записи. Штатный журнал регистрации неизвестно сохранит ли последние сообщения при вылете Конфигуратора.
110 АЛьФ
 
25.11.16
09:12
Ну, вот... А у меня сегодня эта компонента не сработала в случае, для которого она и создавалась. Бэкап не создался из-за того что база была открыта в "Management Studio", но в логе сообщения о блокировке не появилось. Хотя остальные все нормально отображаются.
Печалька :(
111 Vippi
 
25.11.16
09:17
(110) Не понял.
> база была открыта в "Management Studio"
У тебя базв SQL что ли?
112 АЛьФ
 
25.11.16
09:25
2(111) Да.
113 Vippi
 
25.11.16
09:42
(112) А зачем выгрузку тогда делаешь?
Почему не делаешь бэкап средствами SQL?
Очень удобно же.
У меня много лет работает такая схема.
Один раз в сутки ночью полный бэкап и каждые 15 мин бэкап лога.
Файлы бэкапа сжимаются rar'ом и отправляются по местам хранения.
114 АЛьФ
 
25.11.16
10:03
2(113) Не я это придумал. Тут такая схема бэкапов давно отработана и согласована. Лезть в нее и убеждать что-то менять - это лишний головняк. Оно мне надо?
115 Vippi
 
25.11.16
10:08
(115) Зря.
Пользователей выгонять не надо, бэкапы лога маленькие и никому не мешают, в случае несчастья потеря данных только за последние 15 минут или вообще нет потерь и т.д. и т.п.
116 Это_mike
 
25.11.16
10:10
(115) у него в конторе вообще странностей много.
117 АЛьФ
 
25.11.16
10:10
2(115) Я тут работаю уже 7 лет. И только в этом году удалось все же пробить переход с Rainbow на 1С++. Понимаешь масштаб бедствия? :)
118 АЛьФ
 
25.11.16
10:11
2(116) Да так-то нормально.
119 Это_mike
 
25.11.16
10:11
(118) ну я как раз про (117)
120 Vippi
 
25.11.16
10:12
При желании можно сразу после получения бэкапа на резервных серверах разворачиваь резервную базу.
Т.е. практически получается зеркалирование.
У меня очень критичны любые простои, поэтому я и остановился на такой схеме.
121 Vippi
 
25.11.16
10:13
(117) У.....
122 Это_mike
 
25.11.16
10:13
(120) а приходилось пересаживаться на резерв?
123 Vippi
 
25.11.16
10:16
(122) Приходилось.
Через двадцать минут уже работали.
Это с учетом того, что бэкапы не были развернуты.
А так бы еще быстрей было.
124 Злопчинский
 
25.11.16
10:18
(120) запуститься через N-минут - не проблема. Запуститься с того места где рухнуло - это уже гораздо интереснее. У меня за 15 минут могут менеджеры столько наколбасить, что бэкап 15 минутной давности - будет неактуальным. а восстановить историю очень затруднительно. И что делать?
125 Это_mike
 
25.11.16
10:22
(124) двухэтапная система :-)
126 Злопчинский
 
25.11.16
10:25
(125) в смысле?
127 Это_mike
 
25.11.16
10:30
(126) ну, аналог фронт-бэк. на входе тупая примитивная регистрирующая и логирующая система, на которой легко сделать роллап. основная - бэкапируемое хранилище.
128 Vippi
 
25.11.16
10:44
(124) А за сутки сколько могут наколбасить?
Ну, каждые 5 минут делай )))
129 Злопчинский
 
25.11.16
11:08
(128) не, это понятно...
вот как вы например рухнула база. ну восстановили из бэкапа. дальше менеджеры/персонал начинают лазить и смотреть и вспоминать (из разных источников) - чего нет и что нужно "доколотить" в систему?
130 Это_mike
 
25.11.16
11:15
(129) ну вот у меня основные каналы поступления заявок были мобильная торговля, ЭДО, и почта (со стандартизированными форматами). при отключении основной базы эти три канала не теряли содержимое. при восстановлении их можно было экспортировать заново.
распределение заявок импортировалось из антора, поэтому "распределить заново" тоже легко.
"факт" сборки, есличо®,восстанавливается по "рабочке", но планировалось - работа в отдельной ВМС.
остаются "телефонисты", но их мало (восемь), и они  по определению не могли наколотить много. но на крайняк есть логи астериска :-)
так что задница теоретически вроде прикрыта со всех сторон..
131 Эльниньо
 
25.11.16
11:44
Загрузка вывалилась.
Видимо серьёзная хрня в базе.
ТИИ стремилось в бесконечность, прерывал на 3-и сутки.
Надеялся вылечить выгрузкой-загрузкой
132 Это_mike
 
25.11.16
11:57
(131) формат базы, и какой этап ТИИ виснет?
133 Эльниньо
 
25.11.16
12:00
(132) Sql 2000 + гибкие блокировки + 1с++ + formex
27 Gb
Виснет на разном.
Хотел успеть сделать подарок перед увольнением. Не успел.
Теперь это не мой геммор
134 Это_mike
 
25.11.16
12:07
ты в 12:00 уволился, чтоль?
135 Злопчинский
 
25.11.16
12:23
(134) Эльниньо уволился с работы
https://lapin.ru/sites/default/files/13.gif
136 Эльниньо
 
25.11.16
12:35
(135) Твой флуд мне понравился.
Был бы ты в Питере угостил бы пивом/водкой/виски/коньяком
137 ADirks
 
25.11.16
12:42
(93) gcomp же под GPL лицензией - бери, допиливай, публикуй. Только обязательно с исходниками.

А чё ваще допиливать то собрался?
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://[email protected]/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*****[email protected]. Именно это мне и интересно, поэтому, полагаю, что термин «шаблон Орефкова», по аналогии с шаблонами внешних компонент 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) Каспара ещё на всяк случай выключи когда в дбф
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан