0. zhichkin 384 04.06.16 01:40 Сейчас в теме

T-SQL + 1С: нумерация записей табличных частей и наборов регистров по порядку

Обработка данных больших баз 1С часто выполняется средствами SQL. Это может быть свёртка или какая-то другая задача. После выполнения команды DELETE может нарушиться последовательность нумерации записей табличной части или набора регистра. Это может привести к неприятным последствиям, если её не восстановить. В данной публикации приводится достаточно простое решение этой проблемы.

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

Комментарии
Избранное Подписка Сортировка: Древо
1. Danil.Potapov 380 10.01.17 11:13 Сейчас в теме
А что говорит служба поддержки 1с?
2. zhichkin 384 10.01.17 11:17 Сейчас в теме
(1) Вы про пресловутое лицензионное соглашение для 1С:Предприятие 8 ?
Ну, как всегда, автор не рекомендует повторять это дома, так как все трюки выполнены профессионалами =)
3. Danil.Potapov 380 10.01.17 11:19 Сейчас в теме
(2) да не, мне на это все равно. Служба поддержки 1с подтвердила такую ошибку в платформе?
4. zhichkin 384 10.01.17 11:23 Сейчас в теме
(3) Это не ошибка платформы. Я встречался с такими нетиповыми конфигурациями, где допускается иметь движения документа с разными значениями периода ... Вот как бывает =) Кроме этого, статья имеет практический смысл при работе с табличными частями средствами SQL Server. Я об этом упоминаю в конце статьи.
5. Danil.Potapov 380 10.01.17 11:27 Сейчас в теме
(4) подожди, в статье идет речь про то, что платформа допускает запись в регистр накопления записи пронумерованные не по порядку и если их перечитать и записать, то добавляет еще одну запись. Пока нашел в списке ошибок платформы 8.3 только ошибку нумерации набора записей регистра бухгалтерии (https://bugboard.v8.1c.ru/error/000023566.html). На каком релизе платформы была эта ошибка?
6. zhichkin 384 10.01.17 11:33 Сейчас в теме
(5) Ах, Вы об этом ... Ну, да, есть такая шляпа. Просто если не шаманить на SQL, то подобную штуку не воспроизвести. По этому я в службу поддержки 1С не обращался. Релиз платформы на тот момент времени (июль 2016 года) я использовал последний. Думаю это было что-то типа 8.3.5. Да и суть статьи опять же была не в этом. Ошибку я обнаружил, можно сказать, по ходу дела, тестируя результаты свёртки.
7. Danil.Potapov 380 10.01.17 11:35 Сейчас в теме
(6) понял, не надо так пугать, думал что уже платформа разучилась нормально нумеровать записи.
8. METAL 98 02.03.18 14:45 Сейчас в теме
Не совсем по теме, но всё же позволю себе поинтересоваться, может знаете:
_RecorderTRef - какое значение какому типу документа соответствует, можно ли узнать как-то программно в 1С либо запросом к какой-то таблице в SQL?
Спасибо!
9. zhichkin 384 02.03.18 15:59 Сейчас в теме
(8) Программно средствами языка 1С это можно узнать следующим образом:
Отбор = Новый Массив();
Отбор.Добавить(Метаданные.Справочники.Номенклатура);
ТаблицаМетаданных = ПолучитьСтруктуруХраненияБазыДанных(Отбор, Истина);
Инфо = ТаблицаМетаданных.Найти("Основная", "Назначение");
ИмяТаблицыSQL = Инфо.ИмяТаблицыХранения;

Переменная ИмяТаблицыSQL будет содержать что-то вида _Reference41. Число в конце наименования таблицы, в данном случае это 41, будет именно тем, что Вам нужно - кодом типа 1С, которое сохраняется в полях вида _[ИмяПоляТаблицы]TRef.
10. zhichkin 384 02.03.18 16:03 Сейчас в теме
(8) Имейте в виду, что если восстановить базу из dt-файла, то все коды типов 1С при загрузке генерирует заново!
11. zhichkin 384 02.03.18 16:10 Сейчас в теме
(8) На всякий случай: 41 не равно 0х41 =) Используйте в SQL коде преобразование int в binary(4).
CAST(41 AS binary(4))
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

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

Senior 1C Developer ЛЮБОЙ ГОРОД
Москва
зарплата от 80 000 руб.
Полный день

Консультант-аналитик 1С
Москва
зарплата от 120 000 руб. до 120 000 руб.
Полный день

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

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