Запутался с обходом метаданных #758203


#0 by altaykniga
Доброго дня, уважаемые! Есть база данных. Необходимо выяснить, есть ли в ней значения объектов с типом "Число", длиной более 12 знаков. Как это сделать?
#1 by altaykniga
т.е. значения реквизитов объектов и их табличных частей
#2 by Ненавижу 1С
обойти все реквизиты/ресурся/измерения объектов и их ТЧ
#3 by zak555
ты про константы и регистры забыл
#4 by altaykniga
как это сделать в цикле?
#5 by Ненавижу 1С
про геситры не забыл, а константы да еще тип значений характеристик у ПВХ
#6 by Timon1405
посадить стажера, просмотреть все глазами, если что пропустит - не дать сегодняшнюю тарелку
#7 by Ненавижу 1С
надо себя заставить )))
#8 by VikingKosmo
для начала напиши цикл
#9 by altaykniga
допустим, буду писать разные циклы для разных объектов метаданных... Например: Для Каждого Справочник из Метаданные.Справочники Цикл      вложенный цикл для обхода всех элементов справочника           вложенный цикл для обхода всех реквизитов элемента КонецЦикла;
#10 by Ненавижу 1С
какого элемента?
#11 by cw014
Хорошее начало
#12 by VikingKosmo
крайне душевный цикл. А теперь расскажи нам про метаданные элементов...
#13 by altaykniga
ну а как написать? первый справочник в метаданных будет, например, Валюты нужно пробежать по всем элементам этого справочника и проверить значения его реквизитов. Как это сделать?
#14 by Горогуля
нужно пробежать по всем реквизитам. если попадётся числовой, искать собственно ссылки, у которых текущий реквизит выделяется
#15 by Ненавижу 1С
а по элементам то зачем?
#16 by VikingKosmo
элементы то тебе зачем?!
#17 by cw014
И зачем тут элементы?
#18 by Горогуля
//это что такого нужно делать, чтоб придумать такую задачу?
#19 by altaykniga
например: есть Документ "АмортизацияИмущества". У него есть реквизит "Сумма". Нужно узнать, есть ли в базе данных документы вида "АмортизацияИмущества", у которых сумма длиной более 12 знаков
#20 by altaykniga
и так для всех объектов метаданных
#21 by Timon1405
Деноминацию в Белорусии?
#22 by altaykniga
не буду же я писать цикл для каждого вида документов, справочников, регистров сведений и регистров накопления...
#23 by Fish
Тогда тебе не метаданные нужны.
#24 by VikingKosmo
напиши запрос, будь мужиком
#25 by Ненавижу 1С
и что тебе даст это знание?
#26 by Горогуля
правильно. ты будешь писать цикл для формирования текста одного мега-запроса
#27 by altaykniga
давайте напишем вместе ))
#28 by Горогуля
я лучше коньячку махну ;)
#29 by VikingKosmo
50000 р.
#30 by Горогуля
э, не. тут (по крайне мере лично для меня) тот самый случай, когда проще одноразово зафигачить восемьсот запросов в цикле вместо того, чтобы делать правильно
#31 by Горогуля
старых белорусских?
#32 by VikingKosmo
а почему бы не написать просто стену текста в цикле, а потом ее в запрос сунуть?
#33 by VikingKosmo
фу-фу-фу!
#34 by Горогуля
ну это немного не так просто, как мне хотелось бы
#35 by altaykniga
дело в том, что в типовую конфигурацию были внесены изменения (увеличена длина реквизитов с типом Число) с 12 до 15 символов. Хочу привести конфу к типовому виду, но сначала нужно проверить, нет ли в базе данных значений реквизитов с числами длиной более 12 знаков
#36 by VikingKosmo
повторюсь, запрос тебе в помощь
#37 by Горогуля
12 знаков - это триллионв. конфигурация 1С:Управление Белоруссией?
#38 by VikingKosmo
1С: Управление Вселенной
#39 by cw014
>увеличена длина реквизитов с типом Число) с 12 до 15 символов Дык отбери реквизиты, которые были изменены и по ним и ищи, наф тебе метаданные то все?
#40 by Timon1405
1С:Оборонсервис
#41 by Ненавижу 1С
хз, в типовой УТ 10.3 везде и всюду длина 15
#42 by Fish
В типовых у числовых реквизитов длина 15, точность 2.
#43 by VikingKosmo
ну может в Беларуси не так
#44 by Fish
Откуда инфа про Белорусь? Автор вроде не оттуда.
#45 by altaykniga
конфигурация 1с:Управляющий
#46 by altaykniga
как отобрать реквизиты, которые были изменены?
#47 by Ненавижу 1С
сравни с типовой
#48 by cw014
Сравнение/объединение конфигураций не предлагать?
#49 by Горогуля
сравни с поставщиком
#50 by altaykniga
в конфигурации были изменены все реквизиты, с типом "Число", у которых длина была 12, точность 2. Сделали 15 точность 2
#51 by Ненавижу 1С
в конце концов, а что это сильно напрягает?
#52 by altaykniga
и теперь мне нужно выяснить, могу ли я вернуть назад длину 12 точность 2 без потери информации в базе данных (чтобы значения реквизитов этих сумм не обрезались)
#53 by VikingKosmo
где то проскочила инфа про деноминацию в Беларуси
#54 by Горогуля
и сразу придумал работу с метаданными. молодец
#55 by altaykniga
а как еще проверить, нет ли в базе данных числовых значений, длина которых превышает 12 знаков?
#56 by Fish
Привели к нормальному типу, как в типовых от 1С. Чем это мешает?
#57 by altaykniga
это мешает обновлять конфу обычным способом
#58 by altaykniga
Для Каждого Спр из Метаданные.Справочники Цикл
#59 by Горогуля
поштучно. по известным именам реквизитов объектов МД
#60 by Fish
Реквизиты (Attributes) Использование: Только чтение. Описание: Тип: КоллекцияОбъектовМетаданных. Коллекция объектов метаданных, описывающих реквизиты данного объекта метаданных. Доступность: Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер).
#61 by Ненавижу 1С
Выборка = Справочники[Спр.Имя].Выбрать;
#62 by Fish
да, неправильно прочитал вопрос. не в тему.
#63 by altaykniga
какого типа должен быть "Спр.Имя"
#64 by Fish
А сам как думаешь?
#65 by Горогуля
ни в коемп случае не строка
#66 by altaykniga
понял
#67 by Горогуля
время на всю обработку замерить не забудь, потом расскажешь
#68 by Fish
Время на написание обработки или время её работы?
#69 by VikingKosmo
both
#70 by altaykniga
а при обновлении конфигурации базы данных платформа 1с не анализирует то, что данные частично могут быть потеряны?
#71 by altaykniga
ну типа уменьшаю я длину реквизита с 15 до 12 знаков, и при обновлении конфигурации БД выходит предупреждение, что возможна потеря данных
#72 by Горогуля
думаю, конфигуратор при обновлении в данные не полезет
#73 by altaykniga
#74 by VikingKosmo
"Дайте два!" (с)
#75 by Горогуля
класс!
#76 by Горогуля
+ серьёзно, мне нравится. элегантная такая индусскость
#77 by altaykniga
- проверяем, что целая часть числа не более 10 знаков ))
#78 by DailyLookingOnASunse
Как всё сложно. А можно просто обновить на копии базы и сравнить обороты по регистрам. Если не совпадут, значит искомые суммы были.
#79 by altaykniga
мы не ищем легких путей
#80 by Горогуля
СтрДлина(Формат(ПроверяемоеЧисло, "ЧЦ=14; ЧДЦ=4"))<=10 и всё. и никаких сравнений с 9999999
#81 by altaykniga
ладно, люди умные, ну подскажите, пойдет такая проверка
#82 by altaykniga
- а как проверить регистры сведений (там нет оборотов) а как проверить справочники и документы (непроведенные)
#83 by VikingKosmo
придется тебе таки осилить написание запросов
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С