Имя: Пароль:
1C
1C 7.7
v7: Старая форма документа
0 Eugene_a
 
30.06.18
06:12
1С 7.7 SQL
Внёс изменения в один документ.
На всех компах загружается новый документ, а на одном - старая форма.
Причем не зависит от того, под каким пользователем зашли в 1С.
Что это за глюк?
1 Мимохожий Однако
 
30.06.18
07:03
На глюкнутом компьютере старая копия базы вместо рабочей
2 Джордж1
 
30.06.18
07:55
(30)не печатная форма?
3 Eugene_a
 
30.06.18
07:57
Не печатная. Рабочая, с полями и кнопками.
Открываю ее конфигуратор - виду новую версию.
Открываю предприятие - вижу старый вариант.
База везде на шаре, скульная.
4 Джордж1
 
30.06.18
08:00
Помнится мне что в SQL md-ник кэшируется
А если комп перезагрузить?
5 Eugene_a
 
30.06.18
10:33
Перезагрузка не помогла.
Темпы тоже чистил.
Попробую на проблемном компе пересобрать конфигурацию.
6 LienXo
 
30.06.18
12:27
ОС на проблемном какая?
7 NSSerg
 
30.06.18
13:08
В приоткрытии() напиши
сообщить("новая форма");
Ну и замер производительности, и посмотри какая форма реально открывается.
8 Попытка1С
 
30.06.18
13:28
(4) "Помнится мне что в SQL md-ник кэшируется"

ну-ну
9 palpetrovich
 
30.06.18
16:45
(8) не ну-ну, а угумс, бывает такое, уже приходилось удивляться
10 Попытка1С
 
30.06.18
19:43
(9) Скуль про md файл ничего не знает вообще.
11 Chameleon1980
 
30.06.18
19:54
может 1с знает? что мд где-то в скл
хотя таблицу видно было бы какуюнить

кто-то врет
12 Chameleon1980
 
30.06.18
19:55
хотя 1с без мд то куда
13 Попытка1С
 
30.06.18
20:16
@может 1с знает? что мд где-то в скл@

1c платформа знает что формат базы sql, по наличию файла dds если файл dd то это файловая.
14 Chameleon1980
 
30.06.18
22:05
(13) ну и отсюда возможно (9)
хотя (11) п.2
15 Eugene_a
 
07.07.18
01:41
Теперь уже на нескольких компах в одном документе начал ругаться на деление на ноль в строке 80.
Смотрю в отладчике - делит на ненулевое число, но вылетает с этой же ошибкой.
Переписал немного код, все равно деление на ноль в строке 80.
Причем отладчик показывает код, где строка 80 пустая, доходит до нее по F8 , ставит на нее курсор. При нажатии F8 выдает ошибку деления на ноль.
16 AliAksA
 
07.07.18
07:34
(15) ну ты хоть бы кусочек кода сюда сбросил (с 80 строкой),
конечно не факт, что телепатов нет - всяко бывает ...
17 Salimbek
 
07.07.18
09:24
(15) МД-шник может битый, проверить его GComp-ом.
18 Salimbek
 
07.07.18
09:27
+(17) И я очень надеюсь, что в конфе ТурбоМД не подключен, а то будет весело...
19 Eugene_a
 
07.07.18
11:07
вот здесь скриншоты:
код с установленным курсором на пустое место и лог с ошибкой.

https://drive.google.com/drive/folders/1mz6mdQ4jmdWqBlOU_YFa2y3iDqKeI9TM?usp=sharing

ругается на строчку, которая теперь на 17 строк ниже и изменена.
20 Salimbek
 
07.07.18
11:13
(19) Еще раз попробую...
Выполните, пожалуйста, глобальный поиск в вашей конфигурации текста turbomd.dll
21 Salimbek
 
07.07.18
11:41
Ну, пока мы ждем ответа, я напишу - почему спрашиваю об этой длл: дело в том, что если эта компонента подключена, и в prm-файле прописано, что форма этого документа будет лежать не в конфе, а в файле на диске, то и база будет брать и форму, и модули из указанных файлов, а не из МД-шника.
Я, в свое время, так одну конфу дорабатывал - с обменом присылал zip-файл в перифериные базы, там они ночью распаковывались и обновляли то, что мне было нужно. В итоге с утра народ приходил, а у них был уже новый функционал.
22 Djelf
 
07.07.18
11:44
А еще можно модуль formex`ом менять.
(0) В глобальнике есть процедура ПриЗагрузкеМодуляФормы?
23 Eugene_a
 
07.07.18
13:01
(20)
Процедура ПриНачалеРаботыСистемы()
    Если юПроверитьРегНомер() = 0 Тогда
        СтатусВозврата(0);
        Возврат;
    КонецЕсли;    
    
    Попытка
        ЗагрузитьВнешнююКомпоненту(КаталогИБ()+"1cpp.dll");
        ЗагрузитьВнешнююКомпоненту(КаталогИБ()+"turbomd.dll");
    Исключение
        Сообщить("Ошибка загрузки внешних компонент.");
    КонецПопытки;



(22) ПриЗагрузкеМодуляФормы - нету
24 Eugene_a
 
07.07.18
13:04
(20)
а в turbomd.prm
действительно, прописано куча всего, в том числе и искомая форма.
25 Salimbek
 
07.07.18
13:33
(24) Ну вот )) Вопчем - если ОпенКонфом пользуешься, то у него есть готовый скрипт, но горячие клавиши его вешаешь, и прямо в конфе - как все свои изменения внес - нажимаешь и текущее окошко в нужные файлики само выгружается. После этого прямо сразу у соседей в 1С-ке смотришь - уже все должно по новому работать. Никаких выгонялок пользователей из конфы, и монопльных сохранений не нужно.
26 Злопчинский
 
07.07.18
16:27
(25) хорошая штука, когда юзверей много.
но никогда не пользовался...
27 Eugene_a
 
07.07.18
23:35
(26) я когда-то такое на фокспро делал.
А в 1с этого очень не хватало.
Будем пользоваться.

Только какая последовательность действий?
В конфигуратор нужно открыть форму либо в конфигурации, либо ранее отдельносохраненную, если она занесена в turbomd.prm ?
28 Eugene_a
 
09.07.18
10:18
(25) и в итоге новая форма документа есть в моей тестовой конфигурации и в выгруженных файликах для продакш-конфигурации.

потом приходит новый 1Сник, который может взять только продакшн с дополнительными файликами и он должен их засунуть в скаченную на свой комп конфигурацию?
29 Eugene_a
 
09.07.18
10:28
кстати, выяснено, почему на некоторых компах загружалась старая форма, а на некоторых - новая.

те компы, где уже успели поставить вин10, при старте 1С выдавали:
"Ошибка при создании объекта из компоненты \\1c_bases\sql\turbomd.dll (отсутствует CLSID)"
то есть не стартовала dllка, и в итоге, грузились необновленные формы.

без прав админа она не хочет грузиться, регистрироваться она тоже не хочет.

при этом об ошибке запуска 1cpp.dll сообщений нет.
30 Djelf
 
09.07.18
10:47
(29) У тебя turbomd старая, обнови
http://www.1cpp.ru/forum/YaBB.pl?num=1160630298
31 ADirks
 
09.07.18
10:47
Да, TurboMD - крайне полезная штука.
Причём даже не столько в продуктиве, сколько при разработке - не надо перезапускаться на каждый чих.

А чтобы удивлений, как в (0), не происходило, в ПриНачалеРаботы пишем
    ВремяМД = "";
    ФС.АтрибутыФайла(КаталогИБ()+"1cv7.md",,,,, ВремяМД);
    ВремяКонтрольное = СокрЛП(Константа.ДатаПоследнегоИзмененяКонфигурации);
    
    Если ВремяМД > ВремяКонтрольное Тогда
        Если ФС.СуществуетФайл(КаталогИБ()+"TurboMD.prm") = 1 Тогда
            Размер = 0;
            ФС.АтрибутыФайла(КаталогИБ()+"TurboMD.prm", Размер);
            Если Размер > 0 Тогда
                ФС.ПереименоватьФайл(КаталогИБ()+"TurboMD.prm", КаталогИБ()+"TurboMD.prm~", 1);
            КонецЕсли;
        КонецЕсли;
        Константа.ДатаПоследнегоИзмененяКонфигурации = ВремяМД;
    КонецЕсли;


ну и костанту заводим
32 tgu82
 
09.07.18
11:07
(0) Полезная инфа.
33 Eugene_a
 
09.07.18
12:04
нашел макрос LoadFromFileToMD,
вроде разобрался.

то есть после каждого чиха не обновляем продакшн MD, а запускаем UnloadCurrentWnd(), который скидывает в TurboMD.prm
в итоге актуальные версии хранятся в нем, а не в MD.

когда нужно создать новое место разработчика, то нужно стянуть базу и запустить макрос LoadFromFileToMD, который сделает у разработчика MD с актуальными версиями документов.

так?
34 Eugene_a
 
09.07.18
12:19
(30) что-то у скачанного файлика (слева) и размер, и номер версии меньше, чем у имеющегося (справа).

https://drive.google.com/file/d/1HuWNNahGgl6kxSG1fn5AX5YIlDlBQbNZ/view?usp=sharing
35 Ёпрст
 
09.07.18
12:24
(34)На версию не смотри, именно эта более менее корректно работает с классами.
36 ADirks
 
09.07.18
12:29
(33) Не так.  У разработчика МД сохраняем, выгружаем чего надо в файлы, копируем в боевую базу. Как только появляется возможность нормально обновить боевую - обновляем, и удаляем все файлы от TurboMD.

Все изменения хранить в МДшнике. LoadFromFileToMD - это на случай падения конфигуратора или выключения света.
37 ADirks
 
09.07.18
12:39
А вот когда занимаешься разработкой, то вместо того, чтобы после каждой мелкой правки сохраняться и перезапускаться, делаешь UnloadCurrentWnd, и дальше проверяешь. Макрос можно на кнопку повесить, тогда совсем удобно (Ctrl-U например)
38 Eugene_a
 
09.07.18
14:39
Понятно.
Досталась конфа и turboMD.prm нечищеный с почти сотней строк )
Буду их имплементить в MD поштучно, так как некоторые документы в MD уже сам изменял. (
39 ADirks
 
09.07.18
14:46
(38) Свезло так свезло :))
40 Eugene_a
 
17.07.18
12:50
(35) не знаю на счет классов, но с этой версией на многих печатных формах 1С начала падать.
41 Eugene_a
 
18.07.18
11:14
(36) UnloadCurrentWnd() должен уметь выгружать таблицы?
42 Salimbek
 
18.07.18
11:17
(41) А для чего? Берешь, сохраняешь в папочку в свой xml, в нужном месте отчета или документа, используя ТурбоМД, грузишь его из этой папочки и работаешь.