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

18.02.21

Задачи пользователя - Корректировка данных

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

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Изменение справочников и документов запросом определенного формата:
.zip 7,92Kb
1 1 850 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Принцип работы следующий. Выполняется стандартный запрос 1С. Далее результат запроса обрабатывается функцией, которая изменяет данные в соответствии со следующей  логикой:

При обновлении/загрузке справочников/документов:

  1. В запросе должно быть поле с именем "Ссылка". По нему обработка определяет тип справочника, или документа, в который необходимо внести изменения.
  2. Если значение поля "Ссылка" равно NULL, создается новый элемент справочника/документа.
  3. Один запрос изменяет только один справочник/документ.
  4. Загружаемые поля сопоставляются по наименованиям.

При обновлении/загрузке табличных частей:

  1. На форме есть дополнительный реквизит "Имя табличной части". Его необходимо указать.
  2. Должны быть поля "Ссылка" и "НомерСтроки". Значение поля "Ссылка" не должно быть равно NULL.
  3. Если значение поля "НомерСтроки" равно NULL, создается новая строка, в противном случае изменяется строка с соответствующим номером.
  4. Один запрос изменяет произвольное количество табличных частей одного типа справочника/документа.
  5. Загружаемые поля сопоставляются по наименованиям.


Пример 1.

ВЫБРАТЬ Ссылка, "!!!" КАК Комментарий
ИЗ Документ.ПоступлениеНаРасчетныйСчет
ГДЕ Дата МЕЖДУ  ДАТАВРЕМЯ(2021, 2, 5) И  ДАТАВРЕМЯ(2021, 2, 5, 23, 59, 59)

В результате выполнения этого запроса обработка изменит документы "ПоступлениеНаРасчетныйСчет" за 05.02.2021г., присвоит полю "Комментарий" значение "!!!".


Пример 2.

ВЫБРАТЬ Ссылка, "ВР-"+ПОДСТРОКА(Код,4,15) КАК Код
ИЗ Справочник.Номенклатура
УПОРЯДОЧИТЬ ПО Наименование

Обработка изменит все элементы справочника "Номенклатура", заменит первые 3 символа на "ВР-" (сменит префикс)

 

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

Данный функционал применяю не один год как в выложенном виде для изменения данных, так и в составе конфигурации в обработках для изменения данных.

Выполнена на управляемых формах. Но не составит труда ее переделать для обычных.

Тестировал на платформе 1С:Предприятие 8.3 (8.3.18.1208).

Вступайте в нашу телеграмм-группу Инфостарт

Запросы SQL UPDATE INSERT

См. также

Закрытие периода Инструменты администратора БД Корректировка данных Бухгалтер Пользователь 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Расширение «Оперативное проведение» в 4 раза уменьшает время проведения документов и закрытия месяца. Является комплексным решением проблем 62 и 60 счетов. Оптимизирует проведение при включенной функциональной опции «Раздельный учет НДС». Используется в более 10 организациях уже 2 года. Совместимо с конфигурацией Бухгалтерия 3.0 (+КОРП).

14400 руб.

29.04.2020    40723    123    152    

84

Корректировка данных Программист Пользователь 1С:Предприятие 8 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Управленческий учет Платные (руб)

Представьте, что есть система QR - кодирования, которая НЕ ТРЕБУЕТ изменения конфигурации, НЕ ТРЕБУЕТ изменения ни одной печатной формы для добавления QR-кода, включая внешние, НЕ ХРАНИТ данные штрихкодов и их связь, от чего база не "пухнет", ИМЕЕТ возможность закодировать в QR-коде произвольные данные параметров для последующей обработки полученных данных, УМЕЕТ прикреплять сканы, УМЕЕТ обработать считанный QR-код как ВЫ захотите. А также ХРАНИТ историю операций в обход базы для каждого пользователя в отдельности и УМЕЕТ работать с 2D - сканерами. А также автоматически распознавать отсканированные печатные формы (картинки или pdf-файлы) и выполнять заданные произвольные алгоритмы, в том числе прикрепление их к документам! Обновление 3.3 от 24.06.2025!

26400 руб.

26.08.2018    54618    18    65    

56

Корректировка данных Системный администратор Программист 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Платные (руб)

Незаменимая обработка для сопровождения конфигураций: ERP, УТ, КА. Позволяет вычистить многие ошибки в ключах аналитики, в ключевых справочниках конфигурации.

3600 руб.

10.02.2017    117407    703    176    

744

Закрытие периода Корректировка данных Программист Пользователь 1С:Предприятие 8 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Управленческий учет Платные (руб)

Внешняя обработка, позволяющая произвольным образом заполнять документ "Корректировка регистров" Предназначена для использования в конфигурациях "Управление торговлей 11", "Управление небольшой фирмой", "ERP Управление предприятием", а также в других конфигурациях, в состав которых входит библиотека стандартных подсистем (БСП) версии 2.2+ и указанный выше документ.

5000 руб.

13.07.2015    53446    184    29    

136

Ценообразование, анализ цен Корректировка данных 1С:Предприятие 8 1С:Управление торговлей 11 Платные (руб)

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

5000 руб.

07.05.2025    1164    1    0    

2

Загрузка и выгрузка в Excel Корректировка данных Пользователь 1С:Предприятие 8 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Управленческий учет Платные (руб)

Обработка для группового редактирования реквизитов номенклатуры в 1С для УТ 11 / КА 2. Позволяет редактировать реквизиты (как основные, так и дополнительные реквизиты и сведения) непосредственно в таблице, устанавливать новые значения реквизитов на выбранную номенклатуру, а также загружать новые значения из Excel. Предусмотрена возможность добавления фото к товарам перетаскиванием файла из проводника на строку с товаром (drag'n'drop)

4200 руб.

16.11.2020    18927    13    6    

12

Печатные формы Корректировка данных Учет документов 1С:Предприятие 8 1C:Бухгалтерия 1С:Управление нашей фирмой 3.0

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

3600 руб.

28.01.2025    1649    0    0    

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

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

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

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

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

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

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

В Вашем частном случае моя обработка запишет 99 объектов, а один - не запишет. Ведь она использует стандартные механизмы 1с для записи с выводом соответствующих ошибок. Но ничто не помешает Вам "прикрутить" к данной обработке собственный функционал, к примеру, вызов функции изменения объектов в транзакции для возможности отмены изменений в случае ошибки, или какую-то постобработку объектов, которые не удалось изменить.
5. antbug 15.03.21 07:59 Сейчас в теме
спасибо! очень интересная разработка
6. NeLenin 14 15.03.21 10:46 Сейчас в теме
(5)Мне тоже так кажется. Однако сообщество отнеслось к ней довольно прохладно.
7. m-rv 982 06.04.21 21:53 Сейчас в теме
в целом, весьма неплохо.
на мой взгляд тут не хватает двух вещей:
1. чуточку "магии". когда пользуешься каким угодно фреймворком (у вас, кстати, есть программный интерфейс?) - должно быть ощущение что происходит что-то качественно новое, что до этого было недостижимо
2. немного маркетинга. вангую, что если бы статья называлась, например, "Исправляем главный недостаток запросов в 1С" вы бы получили в 10 раз больше плюсов в карму
8. NeLenin 14 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 982 13.04.21 23:37 Сейчас в теме
(8)
почитал обсуждения. И желания "довести до ума" публикацию у меня пока не прибавилось

почему??? кто-то с рейтингом около 100 написал мне в комментах "это все г... и руки у автора не из того места"? но в сухом остатке у меня такая разработка есть, а у того кто написал коммент - нет. не останавливайтесь, думайте над улучшением
Altez50; NeLenin; +2 Ответить
10. Altez50 1 18.03.24 09:55 Сейчас в теме
(0)Добавлять/удалять строки табчастей умеет?
11. NeLenin 14 18.03.24 10:41 Сейчас в теме
(10) Добавлять/изменять умеет (нужно указать таб. часть в явном виде). Удалять, насколько помню, не умеет. Содержит функцию для удаления, т.к. все функции были скопипащены из более функционального расширения, но интерфейс требует доработки.
Для отправки сообщения требуется регистрация/авторизация