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

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

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

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

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

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

ВЫБРАТЬ Ссылка ИЗ Справочник.КакойтоСправочник
ГДЕ 1=2
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ NULL
2. Steelvan 98 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 901 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 901 13.04.21 23:37 Сейчас в теме
(8)
почитал обсуждения. И желания "довести до ума" публикацию у меня пока не прибавилось

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

Разработчик 1С, Разработчик Битрикс
Москва
зарплата от 150 000 руб. до 250 000 руб.
Полный день

Программист 1с
Новосибирск
зарплата от 120 000 руб.
Полный день

Программист 1С
Санкт-Петербург
зарплата от 110 000 руб.
Полный день

Руководитель проектов 1С
Пенза
зарплата от 120 000 руб. до 200 000 руб.
Полный день