Очистка таблицы ссылок документов 1с 7 зависает
1С 7.7 (ЗиК, Бухгалтерия)27 виснет при отправке на печать любого документа, то же самое при включении параметров страницы, принтеры все сетевые (пробовал HP, Samsung, Canon. Просто тупо виснет. получается даже не дает выйти посмотреть на какой принтер отправляет печать.
С винды нормально печатает по сети?
До момента начала зависания какой принтер стоял (на какой печатали)?
С винды печатает нормально, печатали на принтер самсунг 4100 МФУ по сете
По Ctrl-P открывает свойства принтера или нет?<br>Принтер с сетевухой или подключен к другому компу?<br>У нас была проблема в том, что принтер подключен к другому компу. При заходе на тот комп, он спрашивал пароль. Но из виндов печатало, т.к. те спокойно авторизировались как Гость, а 1С этого не умеет. В общем проблема решилась сохранением пароля (Гость с пустым паролем - просто поставили галку сохранить пароль).
Так бывает когда:<br>1. Принтер сетевой и имеет "сложное" сетевое имя. Не рекомендуется, чтобы имя было более чем из 8 символов.<br>2. 1С хранит независимые от операционной системы параметры печати относительно многих печатных форм. Если 1с "запомнила", что в последний раз печать осуществлялась на каком то принтере, то при следующей попытке печати, система попытается сделать это тем же способом, что и в прошлый раз, но если принтера уже нет, или его переименовали или он выключен, пройдет достаточное время, пока система "поймет" это и предложит вам как то изменить настройки печати. Я бы попробовал сбросить сохраненные настройки. Для этого в реестре аккуратно удаляем ветку:<br>HKEY_CURRENT_USER\Software\1C\1Cv7\7.7\<Название базы>\V7\<Имя пользователя>\Moxel<br>В ней хранятся "запомненные" опции печати.<br>3. Если печатная форма еще ни разу не выдавалась на печать, то 1С ранее, само собой, не фиксировала никаких опций для нее. И если в этом случае при попытках напечатать возникают тормоза, нужно проверить какой принтер в настройках операционной системы назначен как "используемый по умолчанию". Если это отключенный принтер, то системе требуется какое то ощутимое время, пока она не поймет, что принтер недоступен и покажет вам окно настройки опций печати
Доброго всем!
Столкнулся с проблемой, идеи кончились. Может кто сталкивался с похожим или просто предложит что-то попробовать еще.
Документооборот 2.1.11 сильно кастомизированный. Платформа 8.3.16.1063. Клиент-сервер, MS SQL. Проблема наблюдается только у одного пользователя.
При попытке открыть список входящих документов 1С зависает. Крутит колесо, и ничего не происходит. В диспетчере задач приложение с надписью "Не отвечает". При снятии задачи сеанс не отваливается, приходится отключать через консоль.
Другие списки документов (внутренние, исходящие) открываются. У других пользователей список входящих документов открывается. Через "Мои документы" можно открыть "свой" входящий документ. Если в нем через "Еще" выбрать "показать в списке" - снова зависает.
На копии базы - проблема НЕ повторяется. Если на рабочей заходить под пользователем с другой рабочей станции - проблема ЕСТЬ.
Кэш пользователю чистил полностью, перегружал. Оставляли на ночь - не помогало. Настройки пользователя в 1С очистил полностью - результат не меняется.
Если на копии базы проблемы нет, то кэш и очистка настроек обычно помогает.
У меня было такое, что время от времени определенный список у определенного пользователя переставал открываться с такими же симптомами. Лечилось чисткой настроек формы этого списка.
В итоге пока оставили так. Пользователю работать надо, поэкспериментировать на рабочей особо не дают, да и не очень хочется.
Причина осталась непонятной. Наибольшие подозрения на изменение настроек пользователя + права доступа - в базе много "мусора", дескрипторов доступа десятки тысяч, пересчет долгой очереди длится около двух часов. И как раз, когда все началось, этот пересчет запускался, то есть права доступа менялись. А на копии, соответственно, эти процедуры не отрабатывались.
Поскольку сброс настроек пользователя в итоге привел к возможности пользователю работать - помечаю как решение.
(1) под пользователем зайти сделать замер времени. В режиме конфигуратора запустить отладку на рабочей и запустить замер времени или стек вызовов 1. Завести нового пользователя.2. Копия файловая? Если да то смотреть RLS.
3. Будь мужиком, отладкой посмотри где проблемы (3) Если проблема в правах, то отладка ничего не даст. И замер производительности просто покажет, что форма долго открывается. (2) (3) На рабочем сервере не могу включить отладку. На тестовом - проблема не наблюдается.
Копия также клиент-сервер.
Если на копии базы проблемы нет, то кэш и очистка настроек обычно помогает.
У меня было такое, что время от времени определенный список у определенного пользователя переставал открываться с такими же симптомами. Лечилось чисткой настроек формы этого списка.
возможно у пользователя индивидуальная настройка списка документов. Колонку дополнительную указал, и эта колонка много ресурсов забирает. (6) Я посмотрю на копии, что там. До этого не изучал сам список. Но на рабочей никаких лишних колонок не должно быть.Так настройки теперь выглядят на рабочей. Я правильно понимаю, что все индивидуальные отборы/колонки и прочее таким подходом убираются? (8) Очистка настроек все вернет к первоначальному виду. Вы писали, что чистили настройки.
О! Открылся список на рабочей! После полной чистки настроек. Я окно "бросил", пошел тему создавать. Больше часа открывался, но открыл в итоге.
Поставил фильтр на документы последнего месяца - открылся нормально, без заметных тормозов. Снял фильтр - опять встала в ступор.
Ну хотя бы локализовалась проблема и пользователя можно запустить. Дождусь когда откроет, верну фильтр и пойду проверять как на рабочей станции пользователя отработает.
Рабочий сервер приложений выпрашивает перезагрузку?
Рабочий сервер приложений выпрашивает перезагрузку?В итоге пока оставили так. Пользователю работать надо, поэкспериментировать на рабочей особо не дают, да и не очень хочется.
Причина осталась непонятной. Наибольшие подозрения на изменение настроек пользователя + права доступа - в базе много "мусора", дескрипторов доступа десятки тысяч, пересчет долгой очереди длится около двух часов. И как раз, когда все началось, этот пересчет запускался, то есть права доступа менялись. А на копии, соответственно, эти процедуры не отрабатывались.
Поскольку сброс настроек пользователя в итоге привел к возможности пользователю работать - помечаю как решение.
Дано: sql server 2005 на отдельном компе. Там базы 1с 7.7.
Каталоги баз - на другом сервере, он же контроллер домена.
ПОльзователи подключаются по сети, часть - через терминальные серверы.
Время от времени бывают проблемы с отключением от баз (например, проблемы с сетью, пару раз в последнее время зависали серваки, и пользователи, ессно, отваливаются).
В настоящее время, в одной из баз (самописная на основе базы бухгалтерии) время от времени выдается скульная ошибка duplicate key.
Скрин мне скинули - погуглил, нашел документ со скрина, отменил проведение, провел - все в порядке, никаких глюков.
Странно, решил на всякий случай сделать ТиИ на копии (средствами скуля сделал выгрузку, загрузил в копию, тоже скульную).
При ТиИ (логической целостности) база зависает (Утилита ConfStat показывает, что зависает на проверка справочника сотрудников (100 элементов обработала- и все)).
Выгрузка/загрузка не помогает.
Решил попробовать в DBF версии, свернул частично (база слишком большая, без свертки не загрузится в DBF).
Проблема аналогичная, зависание при ТиИ при проверке логической целостности.
Ждал отвисания около недели, а может и больше, база в фоне висела, я время от времени поглядывал просто на нее. ConfStat так ничего нового не показал.
Если ТиИ делать в режиме просто тестирования, обе базы, и скульная и дбф-ная, выдают кучу ошибок:
Проверка содержания справочников. Сотрудники. Элемент 234. Реквизит Подразделение. Значение на 03.05.02. Неразрешенная ссылка. Тип - Справочник Подразделения
Проверка содержания справочников. Сотрудники. Элемент 252. Реквизит Подразделение. Значение на 01.04.02. Неразрешенная ссылка. Тип - Справочник Подразделения
Проверка содержания справочников. Сотрудники. Элемент 4141. Реквизит Подразделение. Значение на 01.04.02. Неразрешенная ссылка. Тип - Справочник Подразделения
.
(самое интересно, что в справочнике сотрудников всего 430 строк, откуда там элемент 4141 может появиться? Я же правильно понимаю, что 4141 - это номер строки в файле справочника сотрудников?)..
.
Проверка содержания справочников. КомплектацияМ. Элемент 1. Изменено подчинение
Проверка содержания справочников. КомплектацияМ. Элемент 1. Изменено подчинение
Проверка содержания справочников. КомплектацияМ. Элемент 1. Изменено подчинение
.
(Справочник КомплектацияМ подчинен справочнику Материалы, нумерация в пределах подчинения)
.
Проверка содержимого документов. ТребованиеНакладнаяПроизводство. Номер ТМ011461. Реквизит Продукты в строке 44. Неразрешенная ссылка. Тип - Справочник Продукты
Проверка содержимого документов. ТребованиеНакладнаяПроизводство. Номер ТМ011462. Реквизит Продукты в строке 44. Неразрешенная ссылка. Тип - Справочник Продукты
.
Проверка типовых операций. Изменен шаблон типовой операции Акт о продаже и отпуске столовая
Проверка типовых операций. Изменен шаблон типовой операции Аренда ПТЦ
Проверка типовых операций. Изменен шаблон типовой операции Взаимозачеты ПТЦ
Проверка типовых операций. Изменен шаблон типовой операции Инкассация и касса 91 магазин
.
Все строки приводить не стал, они однотипные.
Что с этим делать?
Попробовал вручную почистить ссылки у сотрудников (нашел, в каком ДБФ-файле хранятся сотрудники, нашел нужную строку по номеру, посмотрел код элемента, нашел в режиме предприятия нужный элемент, почистил всю историю (реквизит Подразделение - периодический) у них. Но мало того, что некоторые номера строк слишком длинные, так удаление истории ничем не помогло, последующее ТиИ выдало такую же ошибку. (Или надо было сделать перед ТиИ логической целостности - упаковку базы?)
Данная методика проверена на тестовой базе, размер которой за месячный период составил 67 Мб. Эта часть той базы, о которой ведется речь в статье. Остатки переносились на середину месяца. К сожалению проверить на большой базе пока не удалось поскольку ранее переданная статья содержала ошибки, и поэтому первая попытка оказалась неудачной. Будем пробовать еще раз. Теперь осталось выяснить только то сколько времени займет данный процесс.
З.Ы. При проверке не пользовался обработкой clear.ert - все делал ручками. Так что смотрите внимательно!
Сворачивание периода известно в 1С:Кругах под разными названиями какой из них вам ближе решайте сами. Мне известны следующие:
1. Перенос остатков
2. "Урезание" базы
3. Закрытие периода
При проектировании информационной системы ее подразделяют на две составляющие: транзакционную и аналитическую. Первый тип систем предназначен для ввода большого обЪема информации в реальном режиме времени, второй тип предназначен для проведения анализа данных полученных в транзакционных системах. Какая же связь такого разделения с темой статьи? Самая непосредственная - процедура свертки периода, является частью процесса по переводу данных из транзакционной системы в аналитическую. Дело в том, что обычно в транзакционных системах обЪем информации хранится за небольшой текущий период (например, месяц - все зависит от интенсивности ввода). Чем больше размер информационной базы, тем менее комфортной становится работа в такой системе - замедляется ввод документов, формирование отчетов также замедляется. В случае с 1С особенно это заметно в DBF формате, меньше в SQL, но все равно и здесь имеется некоторое замедление. Рост базы также приводит к ее более частому "падению", опять же это больше характерно для DBF формата. Поэтому периодически данные из транзакционной системы необходимо передавать в аналитическую систему, удаляя при этом лишние данные. Сегодня у всех на слуху технологии OLAP - как раз-то они и предназначены для создания таких (аналитических) систем. В том числе данные технологии активно применяются в связке с 1С. Но статья не об этом.
Итак, после того как данные будут переданы в аналитическую систему, нам необходимо удалить их из нашей транзакционной системы. Что ж, неплохо было бы если фирма 1С предоставила такой инструмент в составе своей системы. Но! Как всегда НО. Имеющиеся средства не подходят для обработки больших баз. Подчеркиваю БОЛЬШИХ. Большой я считаю базу размером не менее 500 Мб (вместе с индексами), даже ближе (и больше) к 1 Гб. Но именно для таких баз обычно необходима процедура свертки периода. Почему же не подходят стандартные средства? Уточнюсь, что под ними я понимаю обработку wrap.ert, которая позволяет произвести "свертку" бухгалтерских итогов (для оперативного учета, таковой нет). Итак:
1. Если перенос остатков осуществляется не на последнюю рабочую дату (то есть дата, после, которой нет проводок), то при переносе остатков задним числом производится пересчет остатков.2. Отмена проведения / пометка на удаление документов также приводит к пересчету остатков.
3. Удаление документов по одному, с внесением изменений в индексы очень медленно. Даже применение транзакций спасает слабо.
Возможно это не все причины, но перечисленные выше - основные. Таким образом необходимо избавиться от недостатков, которые несет за собой применение стандартных методов. Хочу добавить, что все это не теория (то есть пп. 1-3) - у наших клиентов имеется база размер, которой уже близок к 2 Гб, попытки использования стандартных методов не увенчались успехом (не дождались завершения обработки, попытка запуска ее на домашнем компьютере привела к его зависанию). Пришлось искать обходные методы в результате чего и появилась данная методика.База формата DBF. Дата (А), на которую необходимо перенести бухгалтерские остатки, а также удалить все лишние документы до данной даты. Конец текущего расчетного периода (Б).
1С:Предприятие 7.7, доработанная обработка переноса остатков 1C wrap.ert, любое приложение для выполнение SQL запросов для DBF баз (MS Query, DB Explorer из поставки Delphi). В качестве приложения для выполнения SQL запросов можно использовать ВК ToySQL (или Rainbow, ODBCSQL или технологию ADO), просто подключаясь к обрабатываемой базе из другой базы (см. ссылку на обработку в конце статьи).
0. Делаем копию базы.
1. Переносим остатки. Обычным образом создаем ручные операции, но дату операции устанавливаем не А, а Б + 1, при этом пометку на удалению документов не производим. Таким образом мы избавляемся от ненужного пересчета. На дату Б + 1 не должно быть ни документов, ни операций. Здесь в принципе можно использовать любую дату из будущего периода. Точнее чтобы не было пересчета, то дата должна находится за пределами текущего расчетного периода.
2. Удаляем все индексные файлы, а также файлы бухгалтерских итогов: 1SACCSEL.DBF, 1SBKTTL.DBF, 1SBKTTLC.DBF, 1SSBSEL.DBF. Начиная с данного этапа прекращаем пользоваться стандартными методами
3. Выполняем следующие запросы:
1) Делаем пометку на удаление документов.
Update 1sjourn set ismark='*', closed=4 where date <= АЕсли можно удалить все (!) документы сразу (то есть в будущем периоде нет ссылок на документы из прошлого), что бывает очень редко, то можно удалять сразу
Delete from 1sjorun where date <= А
При этом сначала нужно удалить записи из связанных таблиц документов (dh*, dt*)
Delete from dh* d from 1sjourn j where d.iddoc = j.iddoc and j.date <= А
Так для каждой таблицы документа и его табличной части. Для SQL Server можно написать скрипт перебирающий таблицы документов и выполняющий данный запрос для каждой из них.
delete from 1sentry where date <= А
delete from 1soper where date <= А
delete from 1sconst where objid <> ' 0 ' and date <= А and iddoc <> ' ' Вообще полезно удалить периодические реквизиты независимо от того записываются они из документов или нет. Это можно сделать так:4) Удаляем ссылки между подчиненными и документами и значения граф отбора. Эти данные находятся в таблице 1SCRDOC. В графе CHILDID находятся ссылки на документы, который после их удаления будут недействительными. Поэтому нужно выполнить такой запрос: delete from 1scrdoc where childdate <= Аdelete from 1sconst where objid <> ' 0 ' and date <= А
Данная операция может быть выполнена вместе с пересчетом итогов (галочка "Пересчет служебных данных"), но опять же "ручной" способ будет быстрее поскольку никаких пересчетов делать не надо
4. Пакуем таблицы, в которых удаляли записи. Здесь тоже быстрее будет воспользоваться не-1С методами. Данный метод можно использовать только для формата DBF: pack 1soperpack 1sentry
pack 1sconst
pack 1scrdoc
Если вы удаляли записи из таблиц документов, то данный оператор нужно вызвать для всех этих таблиц и для таблицы 1SJOURN (п. 9 тогда можно пропустить).
5. Переносим проводки и операции сделанные датой Б + 1 на дату Х Update 1sentry set date = А where date = Б + 1Update 1sentry set date = А where date = Б + 1
Update 1sjourn set date = А where date = Б + 1
Здесь важно чтобы на дату Б + 1 не было документов кроме созданных ручных операций. Иначе эти документы также перенесутся на дату Х.
6. Все. Теперь у нас практически рабочая база. Можно опять взяться за стандартные методы. Нужно восстановить индексы - просто запускаем 1С-ку монопольно.7. Итоги можно пока не пересчитывать. Запускаем поиск удаленных обЪектов. Если вы удалили документы сразу как было описано в п. 3, то этот пункт можно пропустить.
8. Пересчитываем итоги. Хорошо бы пересчет итогов по колонкам был бы в разделе "Пересчет служебных данных", но уж что имеем :(. Все! База готова. Остается сверить получившуюся базу с ее копией (надеюсь ее-то вы не забыли сделать - мало ли что ;).
9. Упс. Забыл ради чего мы это все затевали. Если посмотреть на размер базы, то он уменьшился не на столько на сколько хотелось бы (скорее всего). Почему? Правильно! В DBF формате записи не удаляются непосредственно, а помечаются на удаление. У нас остались лишние данные в таблице 1SJOURN и в таблицах документов (файлы проводок и операций мы упаковали сами). Что же нужно сделать? Правильно запустить упаковку данных. Впрочем данный пункт не стоит делать отдельно - просто обЪедините его с п. 8, поставив галочку "Упаковка таблиц информационной базы", когда будете пересчитывать итоги в режиме конфигуратора. Вот теперь точно все! Уффф.
Даты в DBF формате записываются в виде
Используемое в статье собственное и доработанное ПО:
1. Модифицированная обработка wrap.ert, позволяющая переносить остатки на другую дату, не удаляя документы. В обработке предусмотрен вызов функции для установки дополнительных реквизитов операции как документа (УстановитьФирму).2. Обработка по удалению документов, проводок из базы с помощью компоненты ToySQL
3. Компонента ToySQL
Как упражнения вам
1. Внести небольшие изменения для SQL версии
2. Сворачивание базы методом формирования помесячных оборотов
3. Сворачивание базы оперативного учета
Читайте также: