Изменение справочников и документов запросом определенного формата

0. 6 18.02.21 12:40 Сейчас в теме
Обработка предназначена для выполнения запросов, изменяющих справочники и документы.
Частично исправляет недостаток запросов 1С - отсутствие INSERT и UPDATE.

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

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. serg-lom89 61 18.02.21 14:15 Сейчас в теме
а так что будет?

ВЫБРАТЬ
NULL КАК Ссылка
3. NeLenin 6 18.02.21 20:04 Сейчас в теме
(1) Да ничего не будет.

Чтобы добавить пустую запись в справочник "КакойтоСправочник", нужно дать такой запрос:

ВЫБРАТЬ Ссылка ИЗ Справочник.КакойтоСправочник
ГДЕ 1=2
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ NULL
2. Steelvan 95 18.02.21 15:42 Сейчас в теме
... отсутствие INSERT и UPDATE ...

Это не недостаток, это работа с объектами.
При изменении, добавлении, удалении и т.п. каждого объекта (конкретного элемента справочника или документа), вызываются соответствующие до и после-обработчики для обрабатываемого объекта (конкретного элемента справочника или документа).

Текст запроса преобразуется сервером 1С и выполняется на сервере базы данных.
Вот представьте, что будет инструкция "Обновить". Повторяюсь, запрос выполняется на сервере БД, где по вашему будут срабатывать соответствующие до и после-обработчики ?

Даже если как-то добавить обновление из запроса.
Допустим под блок "ГДЕ" попало 100 документов, и в одном из объектов будет "Отказ = Истина".
Что делать с остальными 99 ?
Правильно, нужно писать обвязки для обработки таких случаев.
Так вот тебе и ответ, что такие обвязки вы уже пишете, работая с каждым объектом персонально.
Риник; +1 Ответить
4. NeLenin 6 18.02.21 20:46 Сейчас в теме
(2)Если бы в объектной архитектуре 1с было бы предусмотрено множественное изменение/добавление объектов, то не вижу никаких проблем. Скорее всего, в такой архитектуре нужно было бы предусмотреть именно множественные постобработчики и предобработчики, где 1 объект - лишь частный случай. Потому да, отсутствие аналогов INSERT и UPDATE я считаю довольно существенным недостатком.

В Вашем частном случае моя обработка запишет 99 объектов, а один - не запишет. Ведь она использует стандартные механизмы 1с для записи с выводом соответствующих ошибок. Но ничто не помешает Вам "прикрутить" к данной обработке собственный функционал, к примеру, вызов функции изменения объектов в транзакции для возможности отмены изменений в случае ошибки, или какую-то постобработку объектов, которые не удалось изменить.
5. antbug 15.03.21 07:59 Сейчас в теме
спасибо! очень интересная разработка
6. NeLenin 6 15.03.21 10:46 Сейчас в теме
(5)Мне тоже так кажется. Однако сообщество отнеслось к ней довольно прохладно.
7. m-rv 897 06.04.21 21:53 Сейчас в теме
в целом, весьма неплохо.
на мой взгляд тут не хватает двух вещей:
1. чуточку "магии". когда пользуешься каким угодно фреймворком (у вас, кстати, есть программный интерфейс?) - должно быть ощущение что происходит что-то качественно новое, что до этого было недостижимо
2. немного маркетинга. вангую, что если бы статья называлась, например, "Исправляем главный недостаток запросов в 1С" вы бы получили в 10 раз больше плюсов в карму
8. NeLenin 6 07.04.21 02:17 Сейчас в теме
(7)Все это верно. Только я разместил обработку больше для обсуждения идеи. А затем наткнулся на Вашу обработку, почитал обсуждения. И желания "довести до ума" публикацию у меня пока не прибавилось )). Может, позже. А если интересен интерфейс, то не поленился, выписал все основные функции из общего модуля (их немного больше, чем в обработке, что я выложил):

Процедура ЗапросУдалитьОбъекты(ЗапросРезультат) Экспорт
Функция ПолучитьМенеджерОбъекта(МДТип1, МДТип2) Экспорт
Функция СоздатьОбъект(МДТип1, МДТип2) Экспорт
Функция ДобавитьЗаписьВОтчетОЗагрузке(мОтчетОЗагрузке, ИмяПакетаЗапросов, Индекс, МДТип1, МДТип2, ИмяТабличнойЧасти, ВерсияОтчетаОЗагрузке, 
  ПерваяСсылка, ПоследняяСсылка, СозданоЗаписей = 0, ИзмененоЗаписей = 0, НеЗагруженоЗаписей = 0, УдаленоЗаписей = 0 ) Экспорт
Функция СообщитьОтчетОЗагрузке(мОтчетОЗагрузке) Экспорт
Процедура ЗапросВТабличнуюЧасть(ЗапросРезультат, МДТип1, МДТип2, ИмяТабличнойЧасти, 
  мОтчетОЗагрузке = Неопределено, ВерсияОтчетаОЗагрузке = 1) Экспорт
Процедура ЗапросВТабличнуюЧастьОткрытогоОбъекта(ЗапросРезультат, ИмяТабличнойЧасти, ОткрытыйОбъект) Экспорт
Процедура ЗапросВТабличнуюЧасть_Удаление(ЗапросРезультат, МДТип1, МДТип2, ИмяТабличнойЧасти, 
  мОтчетОЗагрузке = Неопределено, ВерсияОтчетаОЗагрузке = 1) Экспорт
Процедура ЗапросВОбъекты(ЗапросРезультат, МДТип1, МДТип2, мОтчетОЗагрузке = Неопределено, ВерсияОтчетаОЗагрузке = 1) Экспорт
Процедура ЗапросВОткрытыйОбъект(ЗапросРезультат, ОткрытыйОбъект)
Процедура ЗапросВОбъекты_Удаление(ЗапросРезультат, МДТип1, МДТип2, мОтчетОЗагрузке = Неопределено, ВерсияОтчетаОЗагрузке = 1) Экспорт
Процедура ЗапросВРегистр(ЗапросРезультат, МДТип1, МДТип2, мОтчетОЗагрузке = Неопределено, ВерсияОтчетаОЗагрузке = 1) Экспорт
Процедура ЗапросВРегистр_Удаление(ЗапросРезультат, МДТип1, МДТип2, мОтчетОЗагрузке = Неопределено, ВерсияОтчетаОЗагрузке = 1) Экспорт
Функция РезультатЗапросаВОбъекты(ЗапросРезультат, МДТип01 = "", МДТип02 = "", ИмяТабличнойЧасти = "", ВидОперации = "", 
   мОтчетОЗагрузке = Неопределено, ВерсияОтчетаОЗагрузке = 1, ОткрытыйОбъект = Неопределено) Экспорт
Функция ПакетЗапросовВОбъекты(мРезультатыЗапросов, мОтчетОЗагрузке = Неопределено) Экспорт
Функция ЗапросТекстВОбъекты(МВТ = Неопределено, ТекстЗапроса, МДТип01 = "", МДТип02 = "", ИмяТабличнойЧасти = "", 
  ПоследнийОбъект = Неопределено,ИмяПараметра1 = "",ЗначениеПараметра1 = Неопределено) Экспорт
Функция ТЗвВТ(МВТ,ТЗ,ИмяТаблицы) Экспорт
Показать
9. m-rv 897 13.04.21 23:37 Сейчас в теме
(8)
почитал обсуждения. И желания "довести до ума" публикацию у меня пока не прибавилось

почему??? кто-то с рейтингом около 100 написал мне в комментах "это все г... и руки у автора не из того места"? но в сухом остатке у меня такая разработка есть, а у того кто написал коммент - нет. не останавливайтесь, думайте над улучшением
Оставьте свое сообщение
Вопросы с вознаграждением