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

24.11.16

Задачи пользователя - Корректировка данных

Обработка производит сбор данных по нулевым строкам в таблицах итогов (Запрос к базе MS SQL) и позволяет пересчитать таблицы выборочно.

Платные

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
(только для физ. лиц)
Анализ и пересчет итогов SQL
.epf 11,06Kb
151 1 850 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний за 2430 руб. в месяц

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Не нашел подходящую обработку просмотра текущих нулевых итогов в базе, с функцией пересчета. Из-за чего получилось это творение.

До начала использования необходимо настроить подключение к SQL серверу, окно настройки вызывается системное вида:

В нем вбиваете адрес SQL сервера, данные авторизации и выбираете базу. После этого обработка подключается к серверу, получает данные и выводит их в таблицу.

Поля левой таблицы понятны по наименованию. Первая колонка, имя таблицы в базе MS SQL, вторая - её представление в именах метаданных, третья - число строк итоговой таблицы всего, четвертая - количество строк из них с нулевыми записями, пятая колонка - процент нулевых записей от полезных по нему производится сортировка. В таблицу выводятся только те итоги регистров, в которых есть какие-либо записи.

Правая таблица представляет из себя уточненные данные по периодам с сортировкой по дате итогов.

Обработка позволяет делать выборочный пересчет итогов, достаточно для этого выделить в левой таблице нужные строки и нажать кнопку Пересчитать. Обработка при этом возьмёт данные по периодам итогов и станет их пересчитывать, отображая индикатор выполнения. Расчет итогов по каждому периоду отдельно дает возможность не пересчитывать те итоги, у которых процент нулевых записей равен нулю, и в меньшей степени мешать пользователям блокировками.

Пользуйтесь на здоровье.

См. также

Закрытие периода Инструменты администратора БД Корректировка данных Бухгалтер Пользователь Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Расширение «Оперативное проведение» в 4 раза уменьшает время проведения документов и закрытия месяца. Является комплексным решением проблем 62 и 60 счетов. Оптимизирует проведение при включенной функциональной опции «Раздельный учет НДС». Используется в более 10 организациях уже 2 года. Совместимо с конфигурацией Бухгалтерия 3.0 (+КОРП).

14400 руб.

29.04.2020    37263    115    152    

82

Корректировка данных Зарплата Бухгалтер 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры бюджетного учреждения 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет НДФЛ Платные (руб)

Обработка исправляет технические ошибки по НДФЛ, взаиморасчетам с сотрудниками в 1С:ЗУП (1С:ЗКГУ) на начало года. Фактически все ошибки, которые проявляются в ведомостях на выплату, расчетных листках, при заполнении ведомостей на выплату и отчетах 6-НДФЛ и т.д. нужно начинать исправлять с начала расчетного года. Это позволит быть уверенными, что после завершения расчетов предыдущего года, начали работать с «чистого листа» без ошибочных остатков.

60000 руб.

06.10.2023    6797    39    21    

46

Корректировка данных Системный администратор Программист 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Платные (руб)

Незаменимая обработка для сопровождения конфигураций: ERP, УТ, КА. Позволяет вычистить многие ошибки в ключах аналитики, в ключевых справочниках конфигурации.

3600 руб.

10.02.2017    114102    686    175    

727

Закрытие периода Корректировка данных Программист Пользователь 1С v8.3 Система компоновки данных 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Управленческий учет Платные (руб)

Внешняя обработка, позволяющая произвольным образом заполнять документ "Корректировка регистров" Предназначена для использования в конфигурациях "Управление торговлей 11", "Управление небольшой фирмой", "ERP Управление предприятием", а также в других конфигурациях, в состав которых входит библиотека стандартных подсистем (БСП) версии 2.2+ и указанный выше документ.

2400 руб.

13.07.2015    52158    180    29    

132

Корректировка данных Программист Бухгалтер Пользователь 1С v8.3 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет НДС Платные (руб)

Обработка предназначена для ООО для смены системы налогообложения УСН на ОСНО, без ведения раздельного учета, входящего НДС по способам учета. При реализации перехода в операции формируются проводки по выделению НДС, который ранее учитывался в стоимости номенклатуры, регистр «НДС Предъявленный».

6000 руб.

22.01.2025    1895    5    0    

7

Корректировка данных Бухгалтер 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Бухгалтерский учет Налоговый учет Налог на прибыль Платные (руб)

Обработка служит для: выравнивания бухгалтерского и налогового учета на определенную дату по выбранным счетам; закрытия остатков по выбранным счетам; обнуления налогового учета (ПР, ВР также будут обнулены)

2880 руб.

05.05.2024    1174    15    0    

11

Загрузка и выгрузка в Excel Корректировка данных Пользователь 1С v8.3 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Управленческий учет Платные (руб)

Обработка для группового редактирования реквизитов номенклатуры в 1С для УТ 11 / КА 2. Позволяет редактировать реквизиты (как основные, так и дополнительные реквизиты и сведения) непосредственно в таблице, устанавливать новые значения реквизитов на выбранную номенклатуру, а также загружать новые значения из Excel. Предусмотрена возможность добавления фото к товарам перетаскиванием файла из проводника на строку с товаром (drag'n'drop)

4200 руб.

16.11.2020    18227    12    6    

11

Розничная торговля Кассовые операции Корректировка данных Бухгалтер 1С v8.3 1С:Розница 2 Розничная и сетевая торговля (FMCG) Россия Бухгалтерский учет Управленческий учет Платные (руб)

Создание, редактирование и удаление документов "Выемка ДС из Кассы ККМ" в конфигурации 1С:Розница 2. Групповая обработка Выемок. Редактирование регистра накопления "Денежные средства в кассе ККМ".

2000 руб.

20.09.2017    41593    174    24    

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


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

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

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

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

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

СтрокаТаблицыПоПериодамSQL.ПериодИтога = ДобавитьМесяц(СтроковаяДата, -12*СмещениеДат);

Решил

СтроковаяДата = СтрЗаменить(СтрокаДанныхОтSQL.ПериодИтогов , "-",".");
22. DPasurin 01.04.22 12:06 Сейчас в теме
Добрый день!

посмотрите пж ошибку

Преобразование значения к типу Дата не может быть выполнено
{ВнешняяОбработка.АнализИПересчетИтоговSQL83.Форма.УправляемаяФорма.Форма(186)}: СтрокаТаблицыПоПериодамSQL.ПериодИтога = ДобавитьМесяц(СтрокаДанныхОтSQL.ПериодИтогов, -12*СмещениеДат);
{ВнешняяОбработка.АнализИПересчетИтоговSQL83.Форма.УправляемаяФорма.Форма(225)}: ОбновитьТаблицы();
23. user2111296 03.11.24 18:49 Сейчас в теме
(22) Попробуйте так:
Для Каждого СтрокаДанныхОтSQL ИЗ НайденыеСтрокиSQL Цикл
				
				СтрокаТаблицыПоПериодамSQL = СтрокаТаблицыSQL.ТаблицаПоПериодам.Добавить();
				
			//	СтрокаТаблицыПоПериодамSQL.ПериодИтога = ДобавитьМесяц(СтрокаДанныхОтSQL.ПериодИтогов, -12*СмещениеДат);
				Если СтрДлина(СтрокаДанныхОтSQL.ПериодИтогов) = 23 Тогда
					СтрокаТаблицыПоПериодамSQL.ПериодИтога = ДобавитьМесяц(Дата(СтрЗаменить(СтрЗаменить(СтрокаДанныхОтSQL.ПериодИтогов,"-",""), " 00:00:00.000", "")), -12 * СмещениеДат); 
				Иначе
					СтрокаТаблицыПоПериодамSQL.ПериодИтога = ДобавитьМесяц(Дата(СтрЗаменить(СтрЗаменить(СтрокаДанныхОтSQL.ПериодИтогов,"-",""), " 00:00:00", "")), -12 * СмещениеДат); 
				КонецЕсли;
				СтрокаТаблицыПоПериодамSQL.ЧислоСтрокВсего = СтрокаДанныхОтSQL.КоличествоСтрок;
				СтрокаТаблицыПоПериодамSQL.ЧислоСтрокНулевых = СтрокаДанныхОтSQL.КоличествоНулевыхСтрок;
				СтрокаТаблицыПоПериодамSQL.ПроцентНулевых = ?(СтрокаТаблицыПоПериодамSQL.ЧислоСтрокНулевых = 0,0,СтрокаТаблицыПоПериодамSQL.ЧислоСтрокНулевых/СтрокаТаблицыПоПериодамSQL.ЧислоСтрокВсего * 100);
				
			КонецЦикла;
Показать
Оставьте свое сообщение