Быстрое обновление данных в клиент-серверном варианте (SQL)

20.06.15

База данных - Обновление 1С

В статье рассматривается инструкция UPDATE языка запросов SQL.

Как мы обычно меняем записи регистров сведений?

1С с записями баз данных работает вполне сносно, особенно если это набор записей того или иного регистра. Если записей немного, то для их изменения вполне годится чтение набора записей, заполнение нужной колонки и запись изменившихся данных. Т.е. примерно так:

  Набор = РегистрыСведений.КакойТоРегистрСведений.СоздатьНаборЗаписей();
  Набор.Отбор.Реквизит.Значение = ЗначениеФильтра;
  Набор.Отбор.Реквизит.Использование = Истина;
  Набор.Прочитать();
  Для Каждого Ст ИЗ Набор Цикл
      Набор.НужнаяКолонка = НужноеЗначение;
      Набор.НоваяКлонка = Набор.КолонкаСоСтанымЗначением;
  КонецЦикла;
  Набор.Записать();

При существенном размере таблицы такой подход будет неоправдан. Для решения подобных задач программист часто пишет запрос, выбирая нужные записи для изменения, а потом через менеджер записи меняет оные в цикле. Как-то так:

  Запрос = Новый Запрос(
  "ВЫБРАТЬ
  |  НужнаяКолонка КАК НужнаяКолонка,
  |  КолонкаСоСтанымЗначением КАК НоваяКлонка,
  |  Реквизит,
  |  Реквизит1,
  |  Реквизит2
  |ИЗ
  |  РегистрыСведений.КакойТоРегистрСведений
  |ГДЕ 
  |  Реквизит = &ЗначениеОтбора");

  Запрос.УстановитьПараметр("ЗначениеОтбора");
  Для Каждого Ст ИЗ Запрос.Выполнить().Выгрузить() Цикл
      Запись = РегистрыСведений.КакойТоРегистрСведений.СоздатьМенеждерЗаписи();
      ЗаполнитьЗначенияСвойств(Запись, Ст);
      Запись.Записать();
  КонецЦикла;

Это уже работает куда медленнее. Можно, конечно, распараллелить процесс с помощью фоновых заданий, но тут уже трудоемкость становится неадекватна решаемой задаче (хотя, если у вас есть подсистема мультипоточного вычисления, то трудоемкость оказывается не сильно выше).

 

Как можно поменять записи колонок таблиц в SQL, не трогая остальное?

Данный вопрос можно очень быстро решить с помощью инструкции UPDATE языка запросов SQL.

Сделать это можно так:

    UPDATE [MyBase].[dbo]._InfoReg1234
        SET _Fld5678 = 1
    WHERE _Active = 0

Собственно, здесь мы просто заполняем поле _Fld5678 таблицы _InfoReg1234 значением "1". Если тип поля _Fld5678 булево, то считайте, что вы проставили "ИСТИНА" во всех активных записях регистра.


Как понять, в каком поле какой таблицы SQL что хранится?

Для того, чтобы узнать, какое поле какой таблицы как называется на SQL-сервере, можно использовать функцию встроенного языка 1С "ПолучитьСтруктуруХраненияБазыДанных", которая возвращает таблицу значений, содержащую в себе структуру базы данных.

  Для Каждого Стр ИЗ ПолучитьСтруктуруХраненияБазыДанных(,Истина) Цикл

    НовСтр = ТаблицаБазДанных.Добавить();
    ЗаполнитьЗначенияСвойств(НовСтр,Стр);

    Для Каждого стр1 ИЗ Стр.Поля Цикл

      НовСтр = Поля.Добавить();
      ЗаполнитьЗначенияСвойств(НовСтр,Стр1);

    КонецЦикла;

  КонецЦикла;

После выполнения данного кода у вас в таблице значений "ТаблицаБазДанных" будет находится список таблиц, а в таблице значений "Поля" - список полей. Если для каждого элемента первой таблицы добавить некий индекс и прописать его для всех элементов второй таблицы, то будет достаточно просто искать во второй таблице поля для нужной таблицы базы данных. Сама по себе структура этих таблиц подробно описана в справке по 1С.

 

Рабочий пример:

 

Допустим, мы решили добавить в документ сумму для того, чтобы отображать ее в журналах и отчетах без необходимости лезть за ней каждый раз в табличную часть. При стандартном подходе мы можем собрать суммы по всем документам с помощью хзапроса, а потом в цикле установить данную сумму в нужный реквизит документа, после чего придется этот документ записать. Возможно из-за этого программисты и не спешат производить такие изменения. С помощью SQL данная проблема решается за минуты примерно вот так:

 

Дано:

  1. Документ "КакойТоДокумент", таблица SQL "_Document55";
  2. Поле, в которую нужно записать сумму "_Fld12507";
  3. Табличная часть "_Document55_VT172";
  4. Поле табличной части, содержащее сумму "_Fld749"

Итак, давайте напишем скриптик для SQL, который все, что нам нужно, сделает за считанные минуты даже если у нас не одна сотня тысяч документов:

UPDATE _Document55
    SET _Fld12507 = SUM(t2._Fld749)
FROM _Document55 AS t1
LEFT JOIN _Document55_VT172 AS t2
  ON t1._IDRef = t2._Document55_IDRRef
GROUP BY 
  t1._IDRef

Собственно, все.

 

Что мы тут написали?

  1. Мы указали UPDATE для таблицы "_Document55", т.е. мы будем именно эту таблицу обновлять.
  2. Мы указали, что поле "_Fld12507" мы будем заполнять результатом агрегатной функции SUM - сумма - для поля "_Fld749" таблицы t2 ("_Document55_VT172").
  3. Стандартное FROM (ИЗ) и имя таблицы нашего документа.
  4. LEFT JOIN (ЛЕВОЕ СОЕДИНЕНИЕ) - соединяемся с табличной частью по (ON) ссылке.
  5. GROUP BY (ГРУППИРОВАТЬ ПО) - группируем по ссылке.


Заключение.

В качестве заключения могу сказать, что SQL не так сложен, как его малюют. На нем вполне реально реализовать не только операции замены каких-то данных, но и весьма существенные процессы, такие, например, как обмен данными между базами. У нас в компании SQL-скрипты применяются весьма часто. В частности, для сравнения данных между многочисленными базами с разнородным содержимым (например, между УТ и БП КОРП).


Также стоит отметить, что в качестве источника можно использовать не только ту же самую базу, но и любую другую. Скажу больше - даже базу данных с другого сервера SQL (для нас это обычная практика, когда сравниваются базы данных, расположенные на разных серверах, разнесенных территориально). Для этого есть соответствующие инструкции языка запросов SQL.

быстрое изменение записей SQL

См. также

Обновление для КА 1.1, ЗУП 2.5, БУХ 2.0: НДС, ЕФС-1, Расчет страховых взносов, Мобилизация, Статистика, Электронные трудовые книжки, 2-НДФЛ, Регламентированная отчетность, Кадровый учет, Прослеживаемость импортных товаров

Зарплата Регламентированный учет и отчетность Кадровый учет Обновление 1С Платформа 1С v8.3 Сложные периодические расчеты 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Зарплата и Управление Персоналом 2.5 Бухгалтерский учет Налоговый учет Управленческий учет Акцизы ЕНВД ЕСН Земельный налог ИП, ПБОЮЛ, КФХ Налог на имущество Налог на прибыль НДС НДФЛ ФОМС, ЕФС Транспортный налог УСН ПСН (патентная система налогообложения) Платные (руб)

Обновления для конфигураций: КА 1.1; ЗУП 2.5; БУХ 2.0; КА 1.1 Комплексная автоматизация торговли алкогольной продукцией; КА 1.1 Комплексный учет сельскохозяйственного предприятия

19900 руб.

01.04.2020    140612    678    352    

232

Автоматическое подтверждение легальности обновления базы или как обновить 100 типовых баз 1С за 5 часов

DevOps и автоматизация разработки Обновление 1С Платформа 1С v8.3 Конфигурации 1cv8 1С:Бухгалтерия 3.0 1С:Зарплата и Управление Персоналом 3.x Абонемент ($m)

Расширение для конфигураций 1С для автоматического подтверждения легальности обновления и выполнения обработчиков обновления при пакетном автоматическом обновлении большого числа баз 1С. А также сам модуль обработки по автоматическому обновлению баз.

2 стартмани

08.05.2019    24210    54    VPanin56    26    

26

Ссылочная константа содержит недопустимый ссылочный номер таблицы

Обновление 1С Платформа 1С v8.3 1С:Управление нашей фирмой 3.0 Россия Бесплатно (free)

На связи Сергей Скирдин, технический директор ИТ-интегратора «Белый код». Сегодня расскажу, как решить одну из проблем, с которой можно столкнуться при обновлении конфигурации 1С.

19.03.2024    828    sergey.skirdin    3    

13

Скрипт для обновления базы с расширением из хранилища

Обновление 1С Платформа 1С v8.3 Бесплатно (free)

Небольшая оптимизация рабочего времени через скрипт обновления базы 1С с расширением из хранилища конфигураций.

22.01.2024    1115    ke.92@mail.ru    2    

24

Многопоточное обновление 1С: Управление холдингом

Обновление 1С 8.3.14 1С:Управление холдингом Абонемент ($m)

Что делать, если обновление базы в режиме предприятия выполняется значительно больше вашего технологического окна, даже если это окно - с вечера пятницы и до утра понедельника.

1 стартмани

10.01.2024    3177    saver77    18    

24

Не обновляется типовая конфигурация 1С через конфигуратор

Обновление 1С Платформа 1С v8.3 Россия Бесплатно (free)

Столкнулся с проблемой. Нужно было поднять до текущего релиза Розницу 2.3. Обновлял по старинке, через конфигуратор (база клиент-серверная). Указывал логин и пароль, ждал скачивания обновления и обновлял. Но после накатывания 5 релизов следующий устанавливаться не хотел, а точнее конфигуратор гордо говорил, что обновлений больше нет. Решение нашел здесь на форуме и хочу зафиксировать. Чтобы самому не забыть и передать опыт начинающим.

29.11.2023    1349    shestopalovpro    4    

7

Принудительный запуск дополнительных процедур обработки данных после обновления

Обновление 1С Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

Ручной запуск процедур обработки обработчиков после обновлений. Может быть полезно стажерам, консультантам, разработчикам, администраторам, всем, кто обновляет информационные базы.

1 стартмани

20.11.2023    599    6    IvanTerentev    0    

2
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. genayo 21.06.15 08:41 Сейчас в теме
А где собственно обработка с которой скрины?
2. starik-2005 3033 21.06.15 15:33 Сейчас в теме
А зачем Вам? На Инфостарте таких обработок штук сто.
3. genayo 21.06.15 17:47 Сейчас в теме
(2) да в общем незачем, но просто непонятно, к чему скрины тогда...
4. starik-2005 3033 21.06.15 18:29 Сейчас в теме
(3) genayo, скрин как бы намекает, что такая обработка может существовать в природе. Я не публикую обработки - я публикую статьи, прочитав которые грамотный читатель сможет создать такую обработку ))
5. BabySG 22.06.15 08:27 Сейчас в теме
(0) Статья крайне опасна (особенно для начинающих), т.к.:
1. Подобное использование нарушает ЛС
2. Полностью не учитывается, что в событиях объекта может производится дополнительная обработка при постановке/снятии пометки удаления
Проще говоря: чревато разрушением данных
7. starik-2005 3033 22.06.15 10:14 Сейчас в теме
(5) BabySG, Вы отчасти правы - не стоит садить в одну клетку питона и кролика, если, конечно, вы не хотите покормить питона кроликом...

Также стоит заметить, что как минимум две инструкции в 1С крайне опасны: непосредственное удаление объекта через Объект.Удалить() и запись пустого набора записей регистра через НаборЗаписейРегистра.Записать(). Второе аналогично операции TRUNCATE SQL.

(6) Danila-Master, Вы по какой-то причине проигнорировали текст: "Данное ограничение необходимо для обеспечения стабильности работы механизмов системы, осуществления поддержки и возможности перехода на новые версии "1С:Предприятия"." Во встроенном языке платформы множество возможностей удалить или модифицировать данные так, что они перестанут "читаться" 1С. При этом у 1С нет собственных средств, позволяющихъ максимально утилизировать возможности СУБД на базе SQL. Я не предлагаю обращаться напрямую к файлу 1CD (или как его так, в котором содержится файловая база - на инфостарте, кстати, есть пример такой обработки - поищите и возмутитесь), я лишь говорю о том, что неисчерпаемый ресурс производительности заложен в самом механизме серверов SQL - его можно и нужно использовать, да, с умом, но безумный программист, поверьте, и на встроенном языке может причинить кучу непирятностей базе данных. Да и вообще метод "ПолучитьСтруктуруХраненияБазыДанных" указывает именно на "Это означает, что средства СУБД (или любые другие внесистемные средства) можно использовать только в том случае, если документация по продуктам линейки "1С:Предприятие" (включая ИТС) содержит явную рекомендацию использовать данное средство для решения данной задачи." Если уж 1С дала доступ к данным, то она косвенно согласилась, что разработчики могут использовать структуру данных для своих нужд.
9. Danila-Master 116 22.06.15 11:04 Сейчас в теме
(7)
Я не предлагаю обращаться напрямую к файлу 1CD (или как его так, в котором содержится файловая база - на инфостарте, кстати, есть пример такой обработки - поищите и возмутитесь)

При чем тут файл 1CD? Ведь речь идет про доступ к таблицам на уровне SQL

Если уж 1С дала доступ к данным, то она косвенно согласилась, что разработчики могут использовать структуру данных для своих нужд.

Сама 1С трактует этот пукт ЛС обнозначно, что нельзя обращаться к данным информационной базы напрямую. Даже использовать представления SQL нельзя.
А вот "Внешние источники данных" - документированная возможность, поэтому ее использовать можно.
11. starik-2005 3033 22.06.15 12:44 Сейчас в теме
(9) Danila-Master, внешние источники работают весьма неплохо на чтение, но попытки 1С сделать запись в них пока весьма смехотворны - валится в дедлоки, хотя вроде причин для этого нет никаких. Вот когда сделают что-то действительно стоящее - будем использовать, пока же работа механизма крайне неудовлетворительна. А их пункт 64 весьма противоречив. ни одна уважающая себя контора не напишет о том, что к базам данных, расположенным на серверах под управлением сторонних СУБД, нельзя обращаться с помощью инструментов тех самых сторонних СУБД. Надеюсь, 1С осознает весь трагизм и глупость ситуации и убьет автора данного пункта об свою желтую стену )))
14. BabySG 23.06.15 08:47 Сейчас в теме
(7) объектные методы вызывают обработчики платформы, где может содержаться некая логика. Это очень существенное отличие от указанных методов прямых запросов.
Я сам, конечно, применял подобное, но не "в лоб". В большинстве случае нужно было писать запросы намного сложнее, либо организовывать постобработку средствами 1С.
Подобные методы точно не для начинающих - так данные снесут только в путь. Ведь это имеет смысл только для больших и очень больших баз. а в момент допуска к таким базам уже должны быть соответсвующие знния (как минимум на уровне сертификата проф. эксперта)
15. starik-2005 3033 23.06.15 09:22 Сейчас в теме
(14) BabySG, вот никогда сертификатами не заморачивался - всегда считал, что лучше пойти на семинар по ТРИЗ, чемнакурсы по 1С.

Программировать нужно учиться, умея прежде всего думать, а не наоборот))
6. Danila-Master 116 22.06.15 08:58 Сейчас в теме
http://v8.1c.ru/predpriyatie/questions_licence.htm
Пунк 65:
...
Нельзя обращаться к данным информационной базы напрямую, минуя уровень объектов работы с данными "1С:Предприятия" - например при помощи средств СУБД или при помощи внешних компонент, которые реализуют прямой доступ к СУБД. Это ограничение распространяется на любые действия с данными, в том числе на изменение их структуры, а так же на чтение или изменение самих данных информационной базы или служебных данных "1С:Предприятия".
...
32. engineer74 01.08.15 13:27 Сейчас в теме
(6) Danila-Master, а как быть тем у кого базы большие . где реструтуризации идут сутки? или 1с не использовать в больших предприятиях?
33. starik-2005 3033 01.08.15 13:31 Сейчас в теме
(32) engineer74, судя по всему - не стоит ))
8. starik-2005 3033 22.06.15 10:16 Сейчас в теме
А вообще, я давно коллекционирую фобии разработчиков. Вот, пожалуйста, одна из них во всей красе. )))
10. Danila-Master 116 22.06.15 11:10 Сейчас в теме
(8) Вы не первый, кто поднимает подобную тему. Именно для этого и был создан п.64, который разъясняет политику ЛС.

А дальше уже Ваше право делать что-то или не делать. В конце концов, всем неоднократно объясняют, указывают на закон, что пяьным за руль садиться нельзя, но есть такие: "Ну я же чуть-чуть!"

Дальнейшая полемика, имхо, бессмысленна.

Хотя, замечу, тоже был бы не против прямого доступа к данным.
12. starik-2005 3033 22.06.15 13:52 Сейчас в теме
(10) Danila-Master, на это только одно ответить могу: делали, делаем и делать будем. Иначе может получиться, что и бэкап средствами симантека делать нельзя, т.к. в документации описана лишь возможность делать бэкапы встроенными средствами SQL-сервера. Надеюсь, они добавят пункт о том, что любые действия с БД вне контекста 1С:Предприятие осуществляются на свой страх и риск - тогда все и всем станет ясно.
13. genayo 22.06.15 20:01 Сейчас в теме
(10) А если нарушить этот пункт соглашения, тогда наступит что? Что 1С сделает с виновным, перестанет предоставлять обновления?
16. vde69 925 24.06.15 08:16 Сейчас в теме
1с не зря исключила прямые апдейты.... конечно в исключительных случаях наверно они нужны, но поверьте мне не стоит они тех последствий...

сделав что-то с данными нештатно Вы
1. не оставляете следов (не понятно кто и чего менял)
2. отключаете все программные реакторы (подписки и прочее)
3. обязаны следить за кучей связанных таблиц (планы обменов, последовательности, журналы, критерии поиска и т.д.)

по этому не рекомендую
zqzq; nSpirit2; Steelvan; +3 Ответить
19. starik-2005 3033 24.06.15 11:39 Сейчас в теме
(16) vde69, в ряде случаев следить действительно надо. Но при заполнении новых реквизитов проблем никаких - абдейтим ровно одну таблицу.

Если говорить о ссылочных типах, то отличия появляются только при составном типе данных - там появляется поле TRef и Type, в первом из которых хранится номер объекта (для документа с таблицей _Document55 это значение будет 55), во втором хранится тип элементов метаданных - там тоже все просто. В 90% случаев связанность данных нарушить не получиться, в остальных случаях надо тестировать на копии.

(17) kalimehtar, безопасно, но, действительно, 1С кеширует выборки. Иногда изменения появляются через несколько минут (если вы открывали объект, потом меняли данные скриптом, потом открыли объект еще раз). Все зависит от кеша rphost'а - можно просто рестартануть сервис и все встанет на свои места срезу. Но это касается именно объектов. При выполнении запроса обращение идет непосредственно к таблицам SQL, поэтому данные будут актуальны.

(18) fvadim, можно и через профайлер, только к чему такие извращения?
17. kalimehtar 22 24.06.15 08:20 Сейчас в теме
Насколько это безопасно при работающем 1С?
Сервер 1С, я предполагаю, часть данных кэширует. И после такого "обновления", до перезапуска он про изменения не узнает.
18. fvadim 9 24.06.15 10:11 Сейчас в теме
Если знаешь и понимаешь, что делаешь, почему бы и нет. Только я названия таблиц и полей через профайлер вытаскивал.
20. Steelvan 302 30.07.15 19:51 Сейчас в теме
Я, когда готовился сдавать на эксперта, тоже этим баловался.

А потом, когда начал писать тиражные решения, понял что лучше писать нормальным языком 1С.

Это можно использовать на локальных решениях в качестве саморазвития. И только.

Грамотно построенная система с правильным обслуживанием хорошо работает и без таких "штук".
21. starik-2005 3033 30.07.15 21:30 Сейчас в теме
(20) Steelvan, тогда ответьте, как достаточно быстро заполнить новый реквизит в документе, если документов в базе примерно 5кк? У нас, например, есть четыре документа, в которые мы добавили общие реквизиты. Общее число документов примерно 5кк. 1С через Объект.Записать(РежимЗаписи.Запись) обновляет не только сам документ, но и пять-семь его табличных частей. Я тут посчитал - стандартный механизм в 10 потоков будет заполнять новый реквизит примерно 18 часов (в один поток - 180 часов). Инструкция UPDATE обновила таблицы за 4 минуты, посчитав сумму из табличных частей и поместив результат в таблицу основного документа. Вот пока 1С не научится записывать хотя бы основную таблицу документа без его табличных частей, народ будет стараться вместо добавления реквизита в документ, добавлять допреквизит и огребать проблемы с блокировками, трудности с разделителями данных и прочие "плюшки".

А вот то. что специалистов, способных написать качественный и быстрый запрос на SQL крайне немного - вот это действительно проблема. И такие специалисты в разработке высоконагруженных сервисов будут нужны не особо.
22. Steelvan 302 31.07.15 11:17 Сейчас в теме
Пишите вы грамотно, вам бы еще "не" поменьше использовать. Текст на порядок лучше читаться будет.

"...обновляет не только сам документ, но и пять-семь его табличных частей..."
...обновляет и сам документ и пять-семь его табличных частей...

"Вот пока 1С не научится записывать хотя бы основную таблицу документа без его табличных частей, народ будет стараться вместо... "
"Вот когда 1С научится записывать хотя бы основную таблицу документа без его табличных частей, народ перестанет вместо..."

"И такие специалисты в разработке высоконагруженных сервисов будут нужны не особо. "
Здесь запутано, как понимать ?
И такие специалисты в разработке высоконагруженных сервисов будут ЛИШНИЕ ?


После рефакторинга модулей на 10 000 строк понимание важности восприятия постепенно, но приходит.


А если по сути, то я вам и писал "Это можно использовать на локальных решениях".

Хотя, конечно, это можно использовать везде. Только кто это будет покупать и тем более поддерживать. И рискованно выстраивать на таких конструкциях серьезный функционал. Большой риск что на следующей версии платформы это придется переписывать. Вот такой ответ без "не" ;)
24. starik-2005 3033 31.07.15 14:02 Сейчас в теме
(22) Steelvan, писать-то я научился не только на SQL, что, полагаю, не может вас не радовать (должно радовать).

Рефакторинг модуля на 10 000 строк - это что? Я на днях типовое проведение документов в "1С Бухгалтерия 2.х" переписал полностью, ибо уровень программистов из 1С оставляет надежду лишь на то, что они на рынке труда внезапно окажутся ЛИШНИМИ ))) Разве это может увеличить мою значимость здесь? Вряд ли.

Но проблему мы с Вами одну обозначили - крайне мало специалистов, способных обеспечить приемлемое качество.кода не только при использовании SQL, но и при использовании самого внутреннего языка платформы 1С.
26. nSpirit2 31.07.15 14:32 Сейчас в теме
(24)
Рефакторинг модуля на 10 000 строк - это что? Я на днях типовое проведение документов в "1С Бухгалтерия 2.х" переписал полностью, ибо уровень программистов из 1С оставляет надежду лишь на то, что они на рынке труда внезапно окажутся ЛИШНИМИ ))) Разве это может увеличить мою значимость здесь? Вряд ли.


А что вы там переписали если не секрет ?

(25) Тут скорее понимание взаимодействия платформы со SQL. Но имхо это очень редкая задача изменить 5кк старых документов без перепроведения просто установив реквизит ;)
27. starik-2005 3033 31.07.15 16:03 Сейчас в теме
(26) nSpirit2, переписал партионку - оптимизировал запросы, реализовал стек партий для группового проведения; изменил механизм зачета авансов - добавил отрицательные суммы в реализациях товаров и услуг и возврате товаров от клиента, реализовал верное отражение данных на 62-м счету (без "бабочек"). Добился адекватной работы при регистрации документа в последовательности, реализовал в итоге приемлемое количество ожиданий на блокировках при многопоточном проведении (соответственно, и при одновременном проведении документов несколькими пользователями)..

Ну и по мелочи со счетами учета...
28. Steelvan 302 31.07.15 18:01 Сейчас в теме
(24)

Хм, обидчивый, а воспитание видимо запрещает. гы гы гы
29. starik-2005 3033 31.07.15 18:09 Сейчас в теме
(28) Steelvan, А "видимо", видимо, надо запятыми отделять от основного предложения. А у Вас как-то это невидимо...
23. nSpirit2 31.07.15 12:55 Сейчас в теме
Не стоит так делать никогда особенно прочитав такое на инфостарте.

UPDATE [MyBase].[dbo]._InfoReg1234
SET _Fld5678 = 1
WHERE _Active = 0


Только надо помнить о то что кроме этой таблички регистра есть еще и таблица _InfoRegChangeRec1234 которую не стоит забыть, а то плохо потом будет.
Также как у документов есть _DocumentChangeRec.
Если есть планы обмена то все эти фокусы со скулем могут плохо выйти.
Ну и не стоит забывать о реквизитов составного типа, которые тоже хранятся особым образом.
25. starik-2005 3033 31.07.15 14:05 Сейчас в теме
(23) nSpirit2, если у вас есть РИБ - это, конечно, нужно учитывать. Но лучше запустить скрипт для каждой из баз, чтобы не тащить туда миллионы записей.

Нет, я, конечно, понимаю, что тут в основном программисты начинающие, но надо как-то расти. И как раз стараюсь обозначить точки роста, показать горизонты. А то этакие тепличные существа мира 1С постоянно будут жаловаться на проблемы платформы и отказывать заказчикам в быстром решении проблем исключительно на базе собственного незнания механизмов, выходящих за рамки платформы.
engineer74; +1 Ответить
30. Steelvan 302 31.07.15 18:50 Сейчас в теме
А это была проверка на внимательность. Давай зачетку !
31. starik-2005 3033 01.08.15 12:30 Сейчас в теме
(30) Steelvan, не знаю, что такое "зачетка". Не использован никогда.
37. Steelvan 302 01.08.15 21:46 Сейчас в теме
(31)

Если вы первый раз слышите слово "зачетка" и у вас нет опыт работы с ней, то спросите у гугла.
38. starik-2005 3033 01.08.15 23:48 Сейчас в теме
(37) Steelvan, это какая-то бумажка, куда преподаватель за хорошие глаза, посещение лекций или бутылку водки ставит "хор", без оного "уд", а при длинных ногах "отлично"? Да в гробу я такое образование видел ))) Гордиться таким могут только идиоты, поэтому те, кто вспоминает про зачетки, ассоциируются у меня с прогнувшимися под систему не очень умными людьми исключительно.
34. engineer74 01.08.15 13:35 Сейчас в теме
Старик давай разваивай тему. мне нрвятся твои статьи. Интересно: алгоритм получение строки подключения именно в текущей базе (чтобы копия случайно вживую не залезла.). Тема реструктуризации больших баз. Логирование изменений регистра сведений посредством тригеров. Представления в ms sql c "человеческим названием". ну и дальше по пути оптимизации производительности.
35. starik-2005 3033 01.08.15 14:24 Сейчас в теме
(34) engineer74, тут одна опасность - при таком подходе становится не нужна 1С, как средство. Кое-где ее использовать действительно не стоит.
36. engineer74 01.08.15 14:58 Сейчас в теме
(35) пока 1с это стандарт - код можно передать другим для поддержки и развития - это требования.
39. starik-2005 3033 14.12.19 01:28 Сейчас в теме
Сегодня узнал, что такой скрипт обновления в постгресе не будет работать (т.е. будет, но выборка будет очень большая, если план запроса посмотреть - квадрат от количества строк, ибо для каждой строки, если таблицу еще раз упомянуть в FROM, будет выбраны все строки еще раз). В итоге в FROM для постгреса надо писать сразу вторую таблицу, и в место джоина - WHERE и там условие соединения.
Оставьте свое сообщение