#0
by dzemon666
Ситуация: Внешний отчет: 1шт. Зашел в базу, под своим именем (проверил 700 раз), больше ни кто под моим именем не заходил (проверил 800 раз), база не терминальном сервере , под моим пользователем винды "Администратор" никто не работает(проверено 1000 раз). Запускаю внешний отчет. (Файл-открыть). Отчет сразу (в процедуре ПриОткрытии) начинает лопатить. + Имеется строка СтатусВозврата, что бы не появлялась форма. Через некоторое время (5 секунд), я могу спокойно лазить в 1с : по меню, просматривать документы, проводить, удалять и т.д. НО! Через отладчик смотрю - обработка работает на всю. Точки останова работают, 1с Предприятие останваливается тоже - все по правилам. Убираем точку останова, прождолжаем по F5 - все снова вертиться, можно снова лазить по 1С-ке, удалять...проводить.. и т.д. Но мой внешний отчет все еще работает и даже выдает сообщения!!. ОбработкаОжидания не используется 100%. (проверено мильйон раз). Я какбы чота не знаю?
#6
by dzemon666
Щас, пока не могу достучаться через конфигуратор к обработке, пишет Файловая ошибка.
#8
by dzemon666
Вот какбы текст процедуры КонецПроцедуры Остальное приводить смысла не вижу. Там бух запросы, в итоге формируется и проводиться документ. Я оказывается даже СтатусВозврата закоментил. О_о. куды ж тогда форма внешнего отчета девается. Магнитных бурь на солнце нет. Сервер перезагружал. Воооообщем пойдука я выпью.
#11
by dzemon666
В модуле 3-и поцедуры Кнопки на форме: Свормировать "запускает СформироватьПотм" проверил Закрыть "запускает #Закрыть" Текстовые метки , без формул Поле ввода ПредСумма, число. Щас сижу играюсь с многозадачностью, прикольно. Мож дисертацию на єту тему написать? :-)
#13
by 1Сергей
Пока в обработке выполняется ПриОткрытии, ты его не можешь ни открыть в конфигураторе, ни изменить
#19
by dzemon666
Щас у меня выводиться слово "Привет" с задержкой в секунд 7-10, для задержки использовал бух запрос, с немного меняющимися параметрами!. То есть сообщить("Привет"); и бух запрос находятся в ОДНОМ ЦИКЛЕ. Сообщения пишутся ,а я в этот момент какой-то документ просматриваю. Ничо нипонятно.
#22
by dzemon666
отчет отлично отрабатывает ввереный ему алгоритм, формирует Документ и закрывает 1с.
#32
by vS
ты уж определись, что кому :) а то я начал переживать, что тема закроется... и предложил новую ;)
#33
by dzemon666
что в ней? Таковая отсутсвует. П.С. Играюсь как маленький ребёнок, щас я ее все-таки заглючу.
#38
by Темный Эльф
При удалении помеченных недавно тоже такое было. Оно себе ищет ссылки на 200000 объектов, а тем временем можно по меню ходить, отчеты формировать.
#40
by НП
Форма не появится никогда. Когда обработка в процедуре ПриОткрытии закончится, система закроется.
#42
by Mashinist
сделай тестовую обработку и выложи с пустыми циклами и сообщениями народ жаждет увидеть
#44
by Aleksey
Кому интересно советую начать чтения отсюда и по ссылке из той ветки Очень много вещей по этой теме там раскрыто
#45
by Torquader
Например, если в 1С из другого приложения послать DDE запрос, то он выполняется в момент перехода с одной строки кода на другую, то есть в прерывание основного процесса. Что касается параллельного выполнения, то ОбработкаОжидания может выполняться в момент работы пользователя с формой. То есть в данном случае сообщения от формы вклиниваются в поток выполнения кода - соответственно - возможность выполнения более одного участка кода существует (точнее существует возможность обработки действий пользователя в момент выполнения кода). Не стоит забывать, что Windows допускает для оконной процедуры начинать обработку новых сообщений, пока не завершилась обработка старых, если сообщения приходят от разных потоков, а при общении с отладчиком, например, 1С обменивается сообщениями через очередь сообщений (и с любым OLE-объектом в другом процессе тоже), то есть для работы 1С нужна работа очереди сообщений, но события пользователя (кроме нажатия Esc), 1С "отбрасывает", то есть она ввод пользователя обрабатывает - далее, каким-то образом флаг "отброса" сбрасывается - и получаем некое подобие многозадачности. P.S. если из системы посылать в 1С сообщения в оконную процедуру, то у меня, например, получалось заставить 1С пересчитать бухгалтерские итоги в момент проведения документа - точнее в момент перехода со строки на строку - если выполняемый код (например, цикл) записать в одну строку, то ни DDE-запрос ни "чудный" вызов оконной процедуры не срабатывает (видимо, при переходе между строками 1С пытается что-то сообщить отладчику и "лазит" в очередь сообщений). Также надо понимать, что параллельного исполнения нет - есть вклинивание одного вызова между строками другого (нечто подобное происходит, когда мы выполняем ОткрытьФорму - идёт создание нового контекста и выполнение ПриОткрытии формы в этом контексте, а потом идёт возврат в вызвавший код - если же форма модальная, то идёт работа формы в новом контексте). То есть, изначально в 1С была реализована смена контекстов, то есть возможность иметь несколько исполняемых модулей. Для реальной же многозадачности необходимо, чтобы два контекста исполнялись паралельно, а не один вклинивался в другой, а вот это уже 1С делать не умеет.
#49
by Torquader
Всё-таки, многозадачность и многопоточность - это немного разные вещи, хотя запустив 1С мы видим, что число исполняемых потоков - 3. Открыв какую-нить обработку мы видим, что число потоков начинает расти, то есть можно предполагать, что для каждой обработки и контекста создаётся свой поток (а почему бы и нет - ведь так проще хранить данные - а исполнение регулировать семафорами)
#50
by orefkov
Огорчу - вся основная работа в 1С - выполняется в одном потоке. Все остальные потоки, которые вы видите - создает MFC и прочие библиотеки сугубо для своих служебно-внутренних целей.
#52
by Torquader
Да не только MFC, например, вызов простого диалога открытия файла вызывает создание потока для прорисовки формы выбора. Но, тот факт, что никоим образом нельзя заставить 1С выполнять одномоментно несколько инструкций кода говорит о том, что для исполнения кода встроенного языка используется только один поток, а то, что в исполнение кода можно "вклинить" исполнение другого кода, как раз это только и подтверждает. Обидно, только, что ОбработкаОжидания имеет интервал не менее одной секунды.
#53
by DJ Anthon
у меня точно так же было, я здесь писал. меня идиотом назвали ))) повторить не могу сей баг
#54
by DJ Anthon
у меня даже последовательность восстанавливалась и я спокойно мог ходить по доументам и даже проводить их.
#55
by Cthulhu
так и не дождался связного изложения способов реализации, моментов и условий появления (и - памятуя о заявлении АЛьФ-а - опасности этого "глюка"). а жаль.
#56
by Torquader
В общем так, если запустить в 1С обработку, то она там что-то выполняет (например, бесконечный цикл, но обязательно должен быть переход со строки на строку - иначе ничего не выйдет). Потом можно 1С послать через WM_COMMAND какую-то команду меню - она начинает её отрабатывать (а обработка знай себе выполняется). Только вот большинство команд (я пробовал, например, создать новый текст - самая первая команда) - Windows мёртво зависает на обработке событий ввода (такое с 1С бывает иногда само по себе, а вот при "параллельной" работе - только в путь).
#57
by Torquader
Также проверено, что код, выполняемый через ОбработкаОжидания хоть и может исполняться в фоне (когда идёт работа с другой формой), но как раз его исполнение намертво вешает 1С и интерфейс не отвечает, пока обработка не завершится. Если же запускать из формы (по кнопке), то потом можно посылать команды меню - они прекрасно отрабатываются, и даже можно открыть калькулятор и календарь, которые работают. С остальными формами такого не получается - открыть можно всё, но ввод блокирован (то есть система ждёт нажатия Esc для прерывания кода) - процедуру, где выполняется переключение ожидания - пока найти не удалось, но это надо смотреть отладчиком внутри кода 1С - где-то должен проверяться флаг исполнения. Если код разместить в одной строке (то есть бесконечный цикл while 1=1 do i=i+1;enddo;), то никакой обработки добиться нельзя - 1С намертво висит и на Esc не реагирует. То есть "видимая" многозадачность связана с тем, что 1С ожидает от пользователя нажатия Esc в момент перехода с одной строки кода на другую. Если долго исполняется только одна строка, то 1С в системную очередь сообщений не лазит, и операционная система считает приложение "зависшим" (появляется сообщение "Не отвечает"). В общем, вывод - непрерываемый пользователем код нужно писать в одной строке.
#58
by Злопчинский
> В общем, вывод - непрерываемый пользователем код нужно писать в одной строке. - запомнить!
#64
by DGorgoN
Многозадачность в 1с реализуется просто если работать с отчетами - берез спец. пользователя, под ним запускается 1с и в случае передачи информации для обработки обрабатываем и скидываем результат куда нибудь, а уже в реальной базе ждем ответ по обработке ожидания :)
#66
by Ёпрст
короче, запуск любой внешней обработки (просто ОткрытьФорму) из операторов основной программы в глобальнике будет идти в "фоне".
#67
by Torquader
Можно между сеансами файлами перекидываться - у меня так работает - и достаточно быстро.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
В этой группе 1С
- Как назначить событие двойной клик в ячейке отчета?
- Не закрывается месяц, вылетает программа 1С БУ 8.1
- Автоматизация сбора заявок для IT отдела
- как обратится к табличной части документа, через реквизит документ основание
- Метод объекта не обнаружен (Печать). Что делать?
- ADODB DBase - Недостаточно системных ресурсов
- как в запросе указать тип значения справочник или перечисление
- Добавить колонки в таблицу значения
- Поиск характеристики по значениям свойств
- Список книг в коробке УПП
- Как в ЗУП начислить взнос в ФСС НС и ПЗ за 2009 год?
- Как назначить кнопке стандартное действие программно?
- УПП: Изменение способов начисления амортизации
- Валовая прибыль для Менеджеров - УТ 10.3
- У местных ООО приобретаем импортный товар (УТ-10.3, 1С-82), как указать ГТД???
- Китай заблокировал Mail.Ru?
- Как осуществить вывод данных реквизита справочника в макет?
- Как убрать? xmlns="http://local/addr"
- Шрифт Eangnivc отказываеться работать в терминале RemoteApp
- УПП ввод начальных остатков по ОС с временной разницей