#0
by Вуглускр1991
Эта тема не скажет ничего нового маститым 1Сникам, пользователям EnterpIntegratora или тем паче его создателям. Это скорее ободрение для тех, кто тщится попробовать изменение таблиц на живой базе. Итак. Случилось мне перегружать номенклатуру 53000 позиций с ошибкой. Долларовую цену выгрузил в рублях. Обнаружил поздно. Вариантов решений было два: 1. Средствами встроенного языка пересчитать цены и долго мучиться в пустом и неинформативном обмене РИБ, где будет выгружено почти 0,5 гигабайта несжатого XML-я ... 2. Либо. Включаем запись технологического журнала. Выполняем запрос: ВЫБРАТЬ СПР.ССЫЛКА ИЗ СПРАВОЧНИК.НОМЕНКЛАТУРА КАК СПР И СПР.НАЦЕНКА = 0 Читаем файл технологического журнала. Находим в нем что-то типа SELECT R95.IDRRef FROM Reference95 R95 WHERE R95.Fld121 = 0 AND R95.Folder = .. Останавливаем сервер 1С (service srv1cv82 stop или из консоли служб в MS) db2 select R95.* from Reference95 R95 fetch first 10 rows only > ~/kusoktabla.txt и прочитав содержимое kusoktabla.txt db2 update Reference95 R95 set R95.FLD107 = R95.FLD107/33 where (R95.FLD107 > 0) and (R95.Fld121 = 0) (update Reference95 R95 set R95.FLD107 = R95.FLD107/33 where (R95.FLD107 > 0) and (R95.Fld121 = 0) - в человеческом виде без палок при спец символах для баша) Все то же самое для MS можно сделать в QA После чего я запустил сервер, тестирование / исправление базы в части восстановления индексов (на изменяемом поле был индекс), Все.
#4
by Вуглускр1991
2 Цена в номенклатуре сидит для подбора. Есть РС с ценами, но связь в подборе тормозит, поэтому инфа туда дублируется при изменении данных в РС (переоценки всякие).
#5
by shuhard
единственный комментарий, в MS SQL кроме ТЖ есть профайлер для получения запроса, в остальном ты всё сделал верно
#6
by Ёпрст
да уж.. и нафига для этого запускать технологический журнал было ?? Имена табличек и так доступны стандартным методом, а написать простой запрос на update в qa особенного ума не надо.
#10
by Ёпрст
вот если б, кто написал вк для снеговика с нормальным метопарсером и типизацией.. это было бы хорошо.
#13
by H A D G E H O G s
1) Полгига несжатого XML - это смехуечки. 2) Profiler - это да 3) Есть РС с ценами, но связь в подборе тормозит - проверить hands.dll - не растут ли они из ass.sys
#15
by Вуглускр1991
3) Не боись, начну ставить задачу по ценообразованию - все вопросы отпадут. Лови запрос: ВЫБРАТЬ СправНоменклатура.ЭтоГруппа, КОГДА ЦеныПрайсаТекСклад.Цена ЕСТЬ NULL И ЦеныПрайсаОснСклад.Цена ЕСТЬ NULL ТОГДА ВЫРАЗИТЬ(ЦеныПрайсаСрезПоследних.Цена * &КурсДоллараКВалюте КАК ЧИСЛО(15, 2)) КОГДА ЦеныПрайсаТекСклад.Цена ЕСТЬ NULL ПО СправНоменклатура.Ссылка = ЦеныПрайсаОснСклад.Номенклатура Может ass.sys в отделе маркетинга, а может где-то в платформе индексы все расставлены. Основная таблица "Номенклатура", динамическое считывание.
#17
by Вуглускр1991
СПС. Это не нифига не смешно. Оно в родную-то базу загружается пол-дня. А мне его в 7.7 УРБД транслировать.
#20
by H A D G E H O G s
ВЫБРАТЬ ФильтрованнаяНоменклатура КАК ФильтрованнаяНоменклатура ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних( , ИЗ
#22
by H A D G E H O G s
И при выполнении Ошибка при выполнении запроса. Ошибка при выполнении запроса. по причине: Поле не найдено "DeletionMark" у всех так?
#25
by Вуглускр1991
Там ещё пришлось бы смотреть на тему: "а если в процессе обработки что-то сдохнет" и половина позиций будет с уже правильной ценой, а половина с ещё нет. То есть придется гондобить учет того, что сделано на случай факапа и потом этот учет убирать, после того, как все пройдет. Я собирался так сделать, но потом ретивое взыграло. И обмены опять же...
#26
by Вуглускр1991
А куда ввести в дин список или в консоль или просто в модуль? В конструкторе (из модуля) пока не ругается.
#27
by ДенисЧ
шото я не понял... Справочник обновил... А в РИБ кто будет выгружать? Или на остальные базы плевать?
#29
by Вуглускр1991
(26+) В консоли запросов прокатило. Два результата БД файловая, клиент тонкий, релиз 13.последний.
#30
by H A D G E H O G s
В произвольный запрос динамического списка, и выбрать Номенклдатура основной таблицей
#32
by H A D G E H O G s
В конструкторе запросов динамического списка - нет закладки по которой можно добавить запросы (несколько запросов). А вот если текст написать - закладки появляются. Бага.
#33
by Вуглускр1991
М-м! Читал я на ИТС про ограничения ДС, но сейчас не помню среди ограничений есть ВТ, судя по тому, что нет закладок - их убрали не случайно.
#34
by H A D G E H O G s
Щас посмотрю, какой он SQL запрос строит, что Поле не найдено "DeletionMark"
#37
by Fragster
не, ну риальне, автор нам рассказал, как получить текст запроса для обновления таблицы... в способ попроще, ИМХО
#38
by DmitrO
а у меня другие два вопроса: 1.зачем было останавливать сервер 1С? 2.зачем было после этого переиндексировать базу?
#41
by Вуглускр1991
В моем второе. Надо сделать? "Индексировать" на складе стоит. А вот и хозяева ie. Я не знаю, что именно платформа реализует свойством "Индексировать", может это индекс в базе данных, но (я же не знаю) вдруг (ВНЕЗАПНО) кроме индекса в базе это доп. таблица с какой-нибудь НЕХ, ибо стандартные индексы разработчиков 1С могут не устроить. Вот поэтому. Если ты мне скажешь, что платформа всегда будет использовать индексы в том и ровно в том смысле в котором они существуют при таблицах сервера баз данных, я готов поверить и не останавливать и потом не переиндексировать. Это пройдет.
#45
by Drx211
Издалека попахивает извращенством. Пытливый ум виден, но кривые руки так-же в наличии :) Лучше бы почитал, как с планами обмена работать. Не знаю, что там за конфа, но не допускать создания гигабайтного XML при выгрузке, путем фильтрации ненужных записей об изменении - это гораздо проще и надежнее, чем то - что ты наваял :)
#46
by Вуглускр1991
Капитан очевидность. Подите туда там все будет. Если начать играть с планом обмена, то после возвращения его в исходные настройки (а оно надо! ибо как было правильно), все элементы снова будут помечены "к выгрузке". "Не знаю, что там за конфа" "кривые руки" я, конечно? не сахарный и клал с прибором. Самому все нормально?
#47
by DrShad
"все элементы снова будут помечены "к выгрузке"" а снять регистрацию уже не модно? в конечно нормально все, но есть ведь пути и попроще
#48
by Вуглускр1991
А вот пример того, что ментальность семерочника вставляет в колеса палки. Да ты прав. Для 8-ки это можно. Я выбирал по времени, что я смог бы сделать быстрее. Использовать запрос update или перебрать элементы, перезаписать, выгрузить полгига и подменить пакет очистив <data> элемент.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- Что быстрее работает ? Запрос или прямое обращение к регистрам ?
- ЗУП 2.5.13.5 Исправление больничного vs прямое сторнирование vs удержание?
- Работа с БД postgres через ODBC. Можно ли добавить таблицу к БД исполуемую 1С?
- v7: По одному SSD под каждую БД или обе БД на одном SSD - есть-ли разница?
- УТ11 - сбой в БД, Z-отчет по ФР снят, в БД отсутствует отчет о розн. продажах
- Прямое обращение к sql
В этой группе 1С
- 1с 8 УПП инвентаризация по сч 10 11
- v8: Оформление периода в СКД
- Порядок обхода переключателей
- v7: ПУБ. Ошибка при закрытии месяца
- Ошибка формата потока в Камине
- Чего вам не хватает в 1С?
- Декларация ЕНВД - кнопка Заполнить
- v7: Установить "Время ожидания захвата таблиц Базы данных" для всех пользователей.
- v7: "Пропали документы"
- Организация работы с хранилищем конфигурации
- Логотип организации в счете на оплату
- Долго закрывается сеанс 1С по RDP
- УТ 10.3 Универсальный отчет.Свойства и категории.
- Как сделать отрицательную СФ в УТ?
- Как в запросе в 8.2 напрямую указать вид документа
- Возможна ли корреспонденция между балансовыми и забалансовыми счетами?
- AVAYA IP DECT 3711
- Как ограничить доступ пользователю к видам цен в УТ11?
- УТ11, номенклатура контрагентов
- Есть ли разница в апи V81.ComConnector и V82.ComConnector?