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

18.02.21

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

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

Скачать исходный код

Наименование Файл Версия Размер
Изменение справочников и документов запросом определенного формата:
.zip 7,92Kb
0
.zip 7,92Kb Скачать

Принцип работы следующий. Выполняется стандартный запрос 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С:ЗУП/ЗКГУ ошибок по НДФЛ и взаиморасчетам с сотрудниками на начало расчетного года.

Корректировка данных Зарплата Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры бюджетного учреждения 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет НДФЛ Платные (руб)

Обработка исправляет технические ошибки по НДФЛ, взаиморасчетам с сотрудниками в 1С:ЗУП (1С:ЗКГУ) на начало года. Фактически все ошибки, которые проявляются в ведомостях на выплату, расчетных листках, при заполнении ведомостей на выплату и отчетах 6-НДФЛ и т.д. нужно начинать исправлять с начала расчетного года. Это позволит быть уверенными, что после завершения расчетов предыдущего года, начали работать с «чистого листа» без ошибочных остатков.

4800 руб.

06.10.2023    2640    30    15    

35

Тестирование и исправление ключей аналитики ERP, УТ11, КА

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

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

3600 руб.

10.02.2017    107305    636    173    

679

Ускоренное проведение документов (x4), устранение ошибок 60/62 счетов и зачет авансов (Бухгалтерия 3.0)

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

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

14400 руб.

29.04.2020    27944    82    146    

61

Исправление ошибки закрытия месяца "Обнаружены ненулевые остатки по суммам при нулевом остатке по количеству в регистре себестоимости по организации". УТ 11.4,УТ 11.5, КА 2.4,КА 2.5, ERP 2.4, ERP 2.5, КА 2 Казахстан, Управление торговлей 3 для Казахстана

Закрытие периода Корректировка данных Платформа 1С v8.3 Оперативный учет 1С:Управление торговлей 11 Управленческий учет Платные (руб)

Закрытие месяца - важный процесс в современных конфигурациях, таких как УТ 11.4, УТ 11.5, КА 2.4, КА 2.5 ERP 2.4,ERP 2.5, КА 2 Казахстан, УТ 3 Казахстан регламентные операции влияют на расчет себестоимости, и ошибки в данном расчете не дают картины деятельности организации.

2400 руб.

27.10.2021    22562    302    35    

74

Заполнение документа "Корректировка регистров" произвольными данными

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

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

2400 руб.

13.07.2015    50325    171    29    

121

Исправление ошибок по НДФЛ и взаиморасчетам с сотрудниками в 1С:Бухгалтерия 3.0

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

Внешняя обработка предназначена для исправления самых различных ошибок, возникших по самым разным причинам. Общее проявление этих ошибок видно в различии данных между: проводками и различными отчетами по НДФЛ, заполнении ведомостей на выдачу зарплаты, неверным расчетом НДФЛ при начислении ЗП и т.д.

3600 руб.

09.02.2024    722    3    4    

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

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

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

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

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

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

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

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

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