#0
by Eeakie
Всем доброй ночи. Есть запрос, который даёт определенное количество строк с пятью значениями в каждой. Надо создать новый элемент справочника и эти пять значений занести в элемент. Как это сделать? В двух словах..
#5
by Тихий омут
+ ток помни, что ид - он то ведь 36ричный. и кстати, уриб есть? справочник мигрирует?
#6
by Eeakie
УРИБ нет. Перевод 36to10 где-то видел. Вопрос больше к синтаксису. Представим, что у нас есть выборка: Предположим, что в результате в выборке 10 строк. Вот как конкретно их засунуть в другой справочник, где есть только id, descr, Количество и Цена? Пример никто дать не может?
#11
by Eeakie
Я может как-то непонятно спросил. |insert into $Справочник.Справочник1 (Количество, Цена) |values (10, 20.5) Как в вэльюс подставить свои значения из запроса? Конечно, можно сделать из запроса ТЗ и перебором построчно выполнять этот текст, но в выборке 450к+ строк. Это, похоже, будет надолго.
#17
by Это_mike
Не, похоже я загнался... посмотри в BOL, там примеры есть insert into $Справочник.Справочник1 ($Справочник.Справочник1.Количество, $Справочник.Справочник1.Цена) from ...
#25
by Eeakie
+ Ругается, что я хочу в поле numeric(18, 3) хочу вставить NULL, а поле NOT NULL. Фигня в том, что Количество из подзапроса не может быть NULL. 0 - еще куда ни шло, но точно не NULL.
#27
by Eeakie
Невозможно вставить повторяющуюся ключевую строку в объект "dbo.SC8548" с уникальным индексом "IDD" Как побороть?
#34
by Eeakie
Так а где выставляется id + 1? В инсерте или в селекте? (select max(dbo.Convert36to10(Спр.id)) + 1 from $Справочник.СтрокиЗаявок as Спр with (nolock)) as id
#35
by trad
вот ты так пишешь. а прикидывал что будет если такой insert+select запустят одновременно 2+ пользователя?
#38
by Eeakie
Одновременно запускаться не будет. Лучше не спрашивай :) , , может лучше что-то толковое скажете?
#41
by Это_mike
вообще, даже я ( :-)) о как я сказанул!) не люблю создавать элементы и документы напрямую....
#42
by Eeakie
Бляха, я вот совсем не в курсе про эту "хранимку". Что за оно? А может действительно нафиг эти прямые записи в таблицы? Просто очень уж долго штатно заполняет полмиллиона записей.. и примерно раз в неделю их еще и обновлять надо..
#44
by Это_mike
чойто типпо CREATE FUNCTION NewId Returns char Begin @ret = select ltrim(dbo.convert10to36(max(dbo.convert36to10(left (id,6)))+1)+' ') from $Справочник.xxxxx End
#47
by trad
в этом запросе (select max(dbo.Convert36to10(Спр.id)) + 1 from $Справочник.СтрокиЗаявок as Спр with (nolock)) as id во-первых надо блокировать: вместо (nolock) нужно (updlock) при этом если insert/select не в одном выражение, то нужно обернуть транзакцией во-вторых нужно помнить об индексах и накладывать блокировку на диапазон ключа индекса, а не на всю таблицу поэтому нужно писать так: dbo.Convert36to10(max(Спр.id)) сравни планы выполнения двух запросов select max(dbo.Convert36to10(Спр.id)) + 1 from $Справочник.СтрокиЗаявок as Спр with (nolock) select dbo.Convert36to10(max(Спр.id)) + 1 from $Справочник.СтрокиЗаявок as Спр with (nolock) думаю поймешь о чем я
#49
by trad
для быстрой вставки поищи примеры использования SQLLock из 1cpp.dll - он спецом для этого был придуман
#53
by ADirks
Если каждый день надо полмиллиона записей лопатить, то может подумать о том, чтобы свою табличку завести? Заодно правильные индексы можно сделать.
#54
by Eeakie
Спасибо за разъяснение. Похоже, там еще много чего кроме этого надо знать. Изначально стоял вопрос в обычном отчете, который должен был брать ТЧ нескольких документов, брать товар, его цены из периодики, потом конвертить в валюту и считать сроки оплаты (и там еще хренова туча условий на отбор). Первоначальный запрос оказался вполне себе здоровым с и работал не очень быстро (пытался оптимизировать, но безуспешно). После чего было решено замутить отдельный справочник с основными данными по ТЧ, и обрабатывать уже их. И вроде бы всё ничего, но данные в ТЧ могут меняться задним числом, что приводит к неточностям. Поэтому справочник надо перезаполнять периодически. Не за весь период, конечно, но за последний год хотя бы (могут править некоторые моменты в течении года). Так вот за последний год получается ~500k строк в выборке и их надо перезаписать в справочник, а длится это достаточно долго. Пробовал update, но исходя из того, что меняться могут не только цены, но и Товар и Документ, решил, что проще удалить последний год и просто перезаполнить. Вот отсюда вся эта дребедень. Возможно, есть какой-то более простой способ организации этого всего, но я его не нашел.
#56
by Eeakie
Честно говоря, для меня "завести свою табличку" и "сделать правильные индексы" звучит не сильно знакомо : 55
#57
by Eeakie
, , дайте ссыль, если не трудно, где хоть что-то по этой теме будет объяснено. Пока оставлю всё на Новый + Записать, а со временем попробую перевести на "доступный" для скуля язык.
#62
by trad
пока изучаешь работу со своей таблицей, можешь свой алгоритм с Новый+Записать немного модифицировать под SQLLock Пример тут
Тэги: 1С 7.7 и ранее
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- v7: v7 : НДС при возврате
- v7: Что нужно чтоб подключить ККМ Меркурий 112F к 1с V7 Торговля + склад
- v7: v7.7 премещение элемента справочника
- v7: v8: v7: Кто-нибудь сумел скачать комплект отчетности за I квартал 2007 года
- v7: 1С V7.7 в сети
- v7: 1C:V7 starter program (for SQL) - обнаружена ошибка
- v7: Перенос данных Бухгалтерия из v7 в v8
- v7: v7 Перехват глобального события ПриЗаписи() или ОбработкаПроведения()
В этой группе 1С
- УФ. Реквизит формы типа "Дата" состав "Время", проблема при выбор из списка
- БП 2.0 - уточненная декларация по НДС, разделы 8 и 9 актуальны - не выгружается
- УТ 11 Доставка и забор груза в одном рейсе?
- Где в ЗУП 3.0 хранить ответственных лиц подразделений
- СКД: оформление заголовка ПАПКИ в шапке - как?
- ЗУП 2.5 как сделать перерасчет НДФЛ ?
- Как выбрать запросом подчиненные документы?
- Казахстан. Шифрование и 1С. с 01.01.2016
- СКД, почему не меняется макет вывода после изменения параметров?
- Изменение итогов при разных группировках отчета
- Ошибка при обновлении
- Отбор по владельцу (родителю) в иерархическом справочнике
- суммируются позиции в счет фактуре 1С УНФ 1.5
- УТ 10.3 Контроль уникальности
- Параллельные группировки в СКД
- Перенос данных с УНФ на УПП
- выбор железа для сервера
- Структура подчиненности запросом
- Яндекс-диск -- что за превышен лимит скачивания ?
- v7: WinServ2012R2(ESXi 6) + 1С 7.7 + RDP + Win8.1. При сохранении XLS виснет!