Вопрос № 58169: Опять я к вам за помощью. Написал процедурку расчета номера, но работает она не так как надо. Например, если ЧислоСтрокой=600500007425, то дойдя скажем до 4 разряда, т.е цифры 5 по всем правилам математики значение переменной Рез должна равняться 20,...Вопрос № 58171: Я начинающий администратор 1С.
Имеется заказная конфигурация 1С 7.7
Конфигурация изменению не подлежит (это данность, не обсуждается, разработчик не я)
Требуется настроить задачи обслуживания БД.
Настроил переиндексацию, логическую и ...
Вопрос № 58.169
Опять я к вам за помощью. Написал процедурку расчета номера, но работает она не так как надо. Например, если ЧислоСтрокой=600500007425, то дойдя скажем до 4 разряда, т.е цифры 5 по всем правилам математики значение переменной Рез должна равняться 20, но отладчик показывает 9! Что здесь не так?
Приложение:
Отправлен: 08.10.2006, 21:01
Вопрос задал: Endru (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Elric
Здравствуйте, Endru!
Вы явно где-то ошиблись при пользовании Отладчиком. У меня он на четвертом разряде показывает Рез = 20, как Вы и предполагали. Оба раза (алгоритм с числом 600500007425 проходит всего две итерации в цикле i).
--------- Мирный атом в КАЖДЫЙ дом!
Ответ отправил: Elric (статус: Практикант)
Ответ отправлен: 09.10.2006, 11:03 Оценка за ответ: 5 Комментарий оценки: Не, на самом деле это был небольшой глюк 1С. После полного перезапуска он стал работать корректно. Так что простите за беспокойство.
Вопрос № 58.171
Я начинающий администратор 1С.
Имеется заказная конфигурация 1С 7.7
Конфигурация изменению не подлежит (это данность, не обсуждается, разработчик не я)
Требуется настроить задачи обслуживания БД.
Настроил переиндексацию, логическую и физическую проверку (с помощью запуска 1С в пакетном режиме). Но бухгалтеры иногда выполняют пересчет бух. итогов и перепроведение документов. Запускают они программу в монопольном режиме, задают нужные им действия и оставляют программу работать на ночь.
Естественно, мои настроенные на монопольный доступ задачи не работают.
Вопрос в том, как программно организовать выполнение этих действий.
Бухгалтерские итоги пересчитувают так: меню "Операции" - "Управление бухгалтерскими итогами..." - "полный пересчет итогов".
В пакетном режиме имеется параметер "RecalcTotals". Но в руководстве сказано, что произведется пересчет итогов бухгалтерского и оперативного учета. Как программоно выполнить пересчет только бухгалтерских итогов?
Для перепроведения докементов бухгалтеры выполняют: меню "Операции" - "Управление оперативными итогами..." - устанавливают дату актуальности на начало месяца, потом устанавливают на следующий день - в диалоге "переустановка актуальности итогов" выбирают все проведенные. Что при этом происходит? Как мне эти действия реализовать программно? Думаю, что необходимо установить ТА на начало указанного периода, выбрать все проведенные документы за указанный период и выполнить для каждого
метод "Провести". Выполнять предполагаю с помощью OLE-автоматизации.
Отправлен: 08.10.2006, 21:53
Вопрос задал: white (статус: 3-ий класс)
Всего ответов: 4 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: vcv
Здравствуйте, white!
"Как программоно выполнить пересчет только бухгалтерских итогов?"
Не знаю, как только бух.итоги, но что мешает пересчитать все? И может быть вообще не делать постоянного пересчета? Я сталкивался с тем, что при еженочном пересчете итогов раз-два в месяц итоги вообще слетали.
"Для перепроведения докементов бухгалтеры выполняют: ..."
Перепроведение можно делать обработкой. Их в инете много, ищите поисковиками по словам "восстановление последовательности"
"Как мне эти действия реализовать программно?"
Боюсь работа через OLE будет слишком медленной. Обычный метод, вставить свой код в процедуру ПриНачалеРаботы в глобальном модуле, что бы при запуске от определенного пользователя, выполнялись нужные действия: восстановление последовательности, открытие периода оперучета и так далее. Если нельзя менять конфигурацию, можно попробовать запускать свою внешнюю обработку обходными путями. Например, через ОЛЕ. Или, если конфигурация типовая, можно воспользоваться тем, что при запуске конфигурации есть возможность настроить
автооткрытие календаря. Подменяйте соответствующий *.ert в папке ExtFormsCalendar.
Ответ отправил: vcv (статус: 2-ой класс)
Ответ отправлен: 09.10.2006, 06:53
Отвечает: Ahab
Здравствуйте, white!
Если у кого-то запущена 1С монопольно твои задачи работать и не будут, можно:
- определить и выгнать человека через монитор пользователей, например перед уходом с работы и т.д.
- внести изменения в конфу так что бы она сама закрывалась после некоторого периода бездействия (т.е. бухи оставили её на ночь, она управилась за пару часов и вырубилась, а твои задачи пусть пытаются стартовать всю ночь с определённым периодом, например:) если "изменению не подлежит" то в этом варианте только связываться с разработчиком.
Насколько знаю, "не ручками" только бух. итоги не пересчитать, но если база остаётся на ночь неужели не успевает пересчитать и то и то? тем более что регулярный пересчёт итогов вреда не приносит... :)
Происходит именно перепроведение всех проведённых документов.... то же самое можно делать, например, внешней обработкой (разумеется прийдётся писать, или искать подобное) и в правах должен быть разрешён запуск внешних обработок...
Ну, чем мог.... :)
Ответ отправил: Ahab (статус: 2-ой класс)
Ответ отправлен: 09.10.2006, 06:58
Отвечает: Elric
Здравствуйте, white!
[Думаю, что необходимо установить ТА на начало указанного периода, выбрать все проведенные документы за указанный период и выполнить для каждого метод "Провести". Выполнять предполагаю с помощью OLE-автоматизации.]
Совершенно верно, это будет адекватной альтернативой. Единственное что, перед проведением не забывать проверять чтоб точка актуальности была на проводимом документе или после него.
Что касается именно раздельно пересчета итогов, то в пакетном режиме таких команд не знаю, с другой стороны полный пересчет итогов может оказаться надежнее. При условии, конечно, что размер и быстродействие базы данных позволяют провести все операции за одну ночь...
--------- Мирный атом в КАЖДЫЙ дом!
Ответ отправил: Elric (статус: Практикант)
Ответ отправлен: 09.10.2006, 11:59
Отвечает: Шахрайчук Владимир Анатольевич
Здравствуйте, white!
Если конфигурацию нельзя изменить, то всегда можно запустить внешний отчет/обработку, и это для Вас спасение. По внешнему отчету всегда можно пройтись отладчиком, вылизать его до идеального состояния. Как правило, внешние отчеты работают также хорошо и быстро, как и внутренние, с одним лишь отличием: после внесения изменений не нужно выгонять всех пользователей с базы.
Теперь об обслуживании. НЕ нужно еженощно делать проверку. Проверку следует выполнять только в следующих случаях: 1.Появления Бэд-блоков, 2.Обнаружения, что планка памяти битая 3. Зависания компьютера во время транзакции (т.е. при проведении, записи, удалении).
НЕ нужно без случаев, описанных выше, делать пересчет итогов и служебных данных.
Если база ДБФ, то она сама, когда ей будет нужно, спросит переиндексацию. Если база СКЛ, то переиндексацию делать нужно только в случаях, описанных выше а также в случае аварийного завершения программы при открытом окне нового документа либо журнала.
Игры с ТА ни к чему хорошему не приводят. Переносить ТА в случае бухгалтеров следует не на начало месяца, а на первый измененный документ (после предыдущего перепроведения). Нет никакой уверенности что при переносе ТА на начало седьмого месяца в шестом месяце не было никаких изменений.
Программные перепроведения чрезвычайно нужны, без них 1С показывает искаженную себестоимость и прибыль.
Реализовать программно нужно так: посмотреть в конфигураторе, какие последовательности у Вас есть, если их нет, то потребовать, чтобы разработчики их сделали. Пример моей обработки по перепроведению в приложении (это внешний отчет, через ОЛЕ тоже можно сделать что-либо подобное, но про преимущества внешних отчетов читай выше). Обратите внимание, что я не трогаю ТА, т.к. это ни к чему.