Снитковский Алексей | Исполнительный директор | 1С-Румыния

«Есть ли 1С:Жизнь за пределами Садового Кольца?»

В контексте данного доклада - "Садовое Кольцо" это метафора, охватывающая довольно-таки обширные географические пространства, на которых говорят по-русски (кое где - всё ещё говорят...) Для многих 1С:Наблюдателей "с Земли" всё, что находится за пределами этих территорий, по-прежнему видится бесконечно далёким и непонятным. И хотя многие из них уже серьёзно интересуются вопросом "есть ли жизнь на Марсе", для большинства наших коллег уход с привычной орбиты и полёт к этим неизведанным мирам остаётся несбыточной мечтой. Вашему вниманию будет предложен очередной репортаж о работе небольшой опытной экспедиции, отправленной в дальний космос с миссией распространения 1С:Культуры.

Анализ и пересчет итогов базы на SQL

0. AlexTeh 19 21.11.16 15:26 Сейчас в теме
Обработка производит сбор данных по нулевым строкам в таблицах итогов (Запрос к базе MS SQL) и позволяет пересчитать таблицы выборочно.

Перейти к публикации

Комментарии
Сортировка: Древо
1. Сурикат 173 24.11.16 15:20 Сейчас в теме
А пересчет выполняется средствами платформы или MS SQL?
3. Fox-trot 54 25.11.16 08:47 Сейчас в теме
(1) а какой тайный смысл делать средствами sql кроме поиска граблей?
4. AlexTeh 19 01.12.16 16:32 Сейчас в теме
(3) Надеются на уменьшение вероятности транзакций, а так же увеличение скорости выполнения.
2. AlexTeh 19 25.11.16 08:27 Сейчас в теме
Нет, пересчет только средствами 1С, но при желании можно доделать. Кроме того, когда делаешь пересчет платформой, то исправляются ошибки по итогам, которые сразу то и не заметишь.
17. nvv1970 24.09.17 23:18 Сейчас в теме
(2) 1. Ошибки - ошибками, но почему нельзя сразу скулем грохнуть нулевые записи?
2. Как вы рассматриваете записи с разделителем (splitter)? Они всегда нулевые.
18. AlexTeh 19 25.09.17 07:37 Сейчас в теме
(17) 1) Можно конечно удалить и запросом, но если у тебя база работаем 24/7, можешь получить не прогнозируемый результат. Гараздо безопаснее будет использовать платформенный механизм пересчета. Кроме того, тебе придется на каждый регистр писать свой запрос. Зачем такие сложности?
2) Про splitter можно почитать тут Разделение итогов, и записи не всегда нулевые.
19. nvv1970 25.09.17 20:47 Сейчас в теме
(18) 1) Безусловно пересчет и лучше и проще и полезнее ) Тем более что время его выполнения не такое уж и кошмарное. Год назад даже озвучил бы цифры по времени для сотен миллионов записей. Проходили через это.
Просто раз цель именно удалить нулевые - значит их нужно просто удалить ))))
2) что-то я не подумавши ляпнул. Пруфы излишни ). Сколько раз смотрел на записи с ненулевым значением сплиттера - они почему-то всегда оказывались нулевыми. Видать везение. Любопытно, что значение сплиттера может быть не только 0 или 1. Интересно от чего зависит...
5. Fox-trot 54 01.12.16 19:54 Сейчас в теме
если нарушится целостность, то скорость уже будет никому не нужна. и тебе тоже
6. AlexTeh 19 02.12.16 11:50 Сейчас в теме
(5) нарушить целостность ещё надо постараться... если даже и умудритесь что то испортить, то первый же пересчет итогов по периоду исправит ситуацию
7. Fox-trot 54 02.12.16 15:32 Сейчас в теме
насчет постараться я бы сказал, что ситуация прямо обратная. нужно очень постараться, чтоб НЕ нарушить целостность. ведь мы можем только предполагать, что хотели сказать программисты 1с, каков алгоритм. во-вторых, мы не можем гарантировать, что следующих версиях продукта алгоритм поменяется
и наконец, пройдет какое-то время прежде чем мы узнаем, что целостность нарушена и отчеты кривые в налоговую к примеру бухгалтер отнес уже. но это уже совсем другая история ;-)
8. axelrich 7 20.09.17 11:17 Сейчас в теме
Приветствую. Настроил соединение с сервером, проверил - ок.
Получаю ошибку:
{ВнешняяОбработка.АнализИПересчетИтоговSQL83.Форма.УправляемаяФорма.Форма(38)}: Ошибка при вызове метода контекста (Open)
	objRecordset.Open(ТекстЗапроса);
по причине:
Произошла исключительная ситуация (Microsoft OLE DB Provider for SQL Server): Время ожидания запроса истекло


Что это и как победить?
10. AlexTeh 19 20.09.17 15:56 Сейчас в теме
(8) Можно в функции подключения к базе, увеличить время ожидание ответа, поля:
Соединение.ConnectionTimeOut = 510;  //<< -- секунд
Соединение.CommandTimeout = 500; //<< -- секунд
12. axelrich 7 21.09.17 11:39 Сейчас в теме
(10)
Изменил Соединение.ConnectionTimeOut на 60 (было 10)
Соединение.CommandTimeout не нашел
Результат тот же, просто теперь он минуту подождал, перед тем как выдать ошибку.

{ВнешняяОбработка.АнализИПересчетИтоговSQL83.Форма.УправляемаяФорма.Форма(38)}: Ошибка при вызове метода контекста (Open)
	objRecordset.Open(ТекстЗапроса);
по причине:
Произошла исключительная ситуация (Microsoft OLE DB Provider for SQL Server): Время ожидания запроса истекло
13. AlexTeh 19 21.09.17 11:44 Сейчас в теме
(12) Можешь смело ставить больше... Видимо у тебя база большая, а может ещё и диски медленные...
14. axelrich 7 21.09.17 13:27 Сейчас в теме
(13) База большая, диски быстрые, ошибка все равно выпадает за секунд 10-15... вне зависимости от времени установленного в Соединение.ConnectionTimeOut...
Прикрепленные файлы:
15. AlexTeh 19 21.09.17 15:51 Сейчас в теме
(14) Добавь еще строчку:
Соединение.CommandTimeout = 500;

после:
Соединение.ConnectionTimeOut

должно помочь.
16. axelrich 7 21.09.17 16:58 Сейчас в теме
(15)
Соединение.CommandTimeout = 500;

Благодарю!!!!! Помогло. Плюсую!
9. axelrich 7 20.09.17 12:15 Сейчас в теме
Попробовал создать чистую конфу и в ней открыть обработку. Так же настроил коннект к базе, проверил - ок.
Получаю новую ошибку:
{ВнешняяОбработка.АнализИПересчетИтоговSQL83.Форма.УправляемаяФорма.Форма(38)}: Ошибка при вызове метода контекста (Open)
	objRecordset.Open(ТекстЗапроса);
по причине:
Произошла исключительная ситуация (Microsoft OLE DB Provider for SQL Server): Не был задан текст команды для объекта команды.
11. AlexTeh 19 20.09.17 15:59 Сейчас в теме
(9) К сожалению, запуск на пустой, без итогов. Не отрабатывал, по этому и ошибка такая - безымянная. Нет итогов, нечего обрабатывать.
Кроме того, хочу заметить, что на новых версиях платформы, изменили тип хранения даты и времени (по моему совместимость после 8.3.7). Тоже может быть ошибка...
Оставьте свое сообщение

Вакансии


Программист 1С
Москва
зарплата от 100 000 руб. до 200 000 руб.
Полный день

Преподаватель 1С
Санкт-Петербург
Полный день

Удаленный ИТ-журналист
Санкт-Петербург
По совместительству

Программист 1С
Санкт-Петербург
зарплата от 80 000 руб. до 150 000 руб.
Полный день