Групповая обработка справочников и документов в 1С

При работе с программами 1С пользователи постоянно заполняют справочники (например, номенклатура и контрагенты) и создают документы. Иногда возникает необходимость пакетного изменения элементов справочников или документов. Например, может понадобиться поменять ставку НДС в группе товаров, или передать документы от одного ответственного лица другому.

В некоторых типовых решениях от 1С существует специальный механизм «Групповая обработка справочников и документов», который позволяет автоматизировать пакетные операции с объектами в базе. Рассмотрим работу данного механизма в программе «1С:Управление торговлей, ред. 10.3».  

Общие принципы работы

Открыть обработку можно с помощью

Меню: Сервис – Универсальные обработки – Групповая обработка справочников и документов

📌 Реклама Отключить

В обработке есть две закладки: «Объекты отбора» и «Обработка».

На закладке «Объекты отбора» вы указываете какие именно объекты базы собираетесь обрабатывать:

  • Тип объекта – справочник или документ
  • Вид объекта – один или несколько справочников/документов
  • Условия отбора – одно или несколько условий для отбора элементов справочника/документа (указываются, если вы хотите обработать, к примеру, не весь справочник, а только определенные элементы).

После заполнения первой закладки на второй вы увидите отобранные программой объекты и сможете выбрать необходимое действие.

📌 Реклама Отключить

Рассмотрим пошаговую работу обработки на нескольких примерах. 

Пример 1. Перенос номенклатуры из одной группы в другую

Иногда возникает необходимость массового перемещения номенклатурных позиций из одной группы в другую. Например, в нашей компании вся бытовая техника разделена на разделы: холодильники, телевизоры. Так как количество товаров в этих группах небольшое, их решили объединить в одну группу – «Бытовая техника». Сделаем это с помощью групповой обработки справочников и документов.

Откроем групповую обработку справочников и документов.

Тип объекта укажем «Справочники»:

Дальше в таблице видов объектов (она находится под типом объекта) нажмем кнопку «Добавить». В открывшемся списке справочников отметим флагом справочник «Номенклатура» и нажмем «ОК».

📌 Реклама Отключить

Нам нужно обработать не все товары, а только те, которые входят в группы «Холодильники» и «Телевизоры», поэтому мы установим дополнительный отбор.

Нажмем кнопку «Добавить» в таблице отборов, в открывшемся списке полей выберем «Родитель» и нажмем «ОК».

Примечание. Вы можете настраивать разнообразные отборы: выбирать разные типы сравнения (равно, не равно, в списке, в группе и т.д.), указывать разные поля. Некоторые поля при настройке отбора называются не совсем привычным для пользователя образом – показываются названия данные полю в конфигураторе, понятные программисту. Например, поле «Контрагент» в договоре при настройке отбора называется «Владелец». А поле «Группа» в номенклатуре называется «Родитель». Если вы испытываете трудности с выбором полей или настройкой отборов в целом, лучше обратиться к специалисту.

📌 Реклама Отключить

В таблице отборов добавится новая строка. В этой строке нужно выбрать тип сравнения «В списке», а в колонке «Значение» указать список нужных групп – холодильники и телевизоры.

Таким образом, мы указали программе, что хотим обработать товары, которые входят в группу «Холодильники» или в группу «Телевизоры».

После того как настройка завершена нажимайте кнопку «Отобрать» в правом нижнем углу, программа найдет список нужных нам товаров и покажет его на второй закладке.

Вы можете проверить список, если в него попали «лишние» товары, можно еще раз настроить отбор или просто снять флаги у тех товаров, которые вы не хотите обрабатывать.

📌 Реклама Отключить

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

Список действий для справочника «Номенклатура»:

Выберем из данного списка действие «Изменить: Группа».

Рядом с действием необходимо выбрать новую группу, в которую вы хотите переместить обрабатываемые товары.

Когда все заполнено, нажимайте кнопку «Выполнить» для запуска обработки. Программа задает уточняющий вопрос и, если вы отвечаете «Да», начинает обработку.

📌 Реклама Отключить

В процессе обработки вы будете видеть информационные сообщения о каждом обработанном товаре.

Обратите внимание, что выполнение обработки может занять длительное время на больших объемах данных.  

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

Наша команда предоставляет услуги по консультированию, настройке и внедрению 1С.
Связаться с нами можно по телефону +7 499 350 29 00.
Услуги и цены можно увидеть по .
Будем рады помочь Вам!

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

Выделите те позиции, которые должны подвергнуться изменению. Это можно сделать левой кнопкой мыши и зажатой клавишей на клавиатуре «Ctrl» или «Shift». Если все элементы идут подряд, то их можно выделить не мышкой, а стрелками вверх и вниз на клавиатуре.

Не снимая выделения, нажмите по одному из элементов правой кнопкой мыши и выберите пункт «Изменить выделенные» в появившемся контекстном меню.

Далее перед вами откроется окно, в левом верхнем углу которого будет отображаться, сколько элементов подлежит изменению. В табличной части ниже укажите, какие реквизиты нужно изменить, и какое значение им задать. В нашем случае мы установим у всех номенклатурных позиций в поле «% НДС» — «Без НДС».

Так же, данная обработка позволяет изменять не только несколько элементов одновременно, но и несколько групп со всеми подчиненными элементами. Для этого в форме настройки реквизитов нажмите на кнопку «Дополнительные параметры» и в открывшемся окне установите флаг в пункте «Обрабатывать дочерние элементы».

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

Теперь в той же форме списка мы видим, что процент НДС изменился во всех выделенных нами позициях.

Стандартная обработка «Групповое изменение реквизитов»

Несомненно, описанный выше способ очень прост в использовании и не требует особых навыков и прав доступа у пользователя, но, к сожалению, он не всегда может быть применим. Тогда на помощь приходит стандартная обработка, которая расположена в разделе «Администрирование» — «Поддержка и обслуживание». Так же вы можете ее найти в обработках через меню «Все функции».

Перед вами откроется форма самой обработки. В верхнем поле «Изменять» мы выберем документы «Реализация (акты, накладные)». Правее появится гиперссылка «Все элементы». Нажав на нее можно настроить отбор для выбора не всех документов, а лишь части по какому-то критерию.

В открывшейся форме отбора укажем, что нас нужны только документы с декабря прошлого года. Это можно сделать в верхнем поле окна. Отборов может быть сколько угодно. В нижней же его части динамически отбираются те документы, которые соответствуют указанному отбору. В нашем случае будет обрабатываться всего 56 документов.

Теперь нам нужно указать, какие данные и чем мы будем заменять. Обработка позволяет редактировать не только реквизиты шапки, но и табличные части. Они размещены в качестве вкладок на форме обработки.

Введение новых значений

Данная обработка позволяет, как жестко задавать значения реквизитов, так и использовать гибкие алгоритмы. В первом случае все намного проще. Этот режим установлен по умолчанию при открытии обработки и может переключаться соответствующей кнопкой.

Для простоты примера мы будем устанавливать везде в качестве склада «Основной склад». После внесения всех изменений, нажмите на кнопку «Изменить реквизиты».

При нажатии на кнопку «Дополнительные параметры» вы можете немного расширить возможность настроек изменения реквизитов, например, изменять служебные реквизиты.

С помощью произвольного алгоритма

Данный режим более гибкий, чем предыдущий, но тут не обойтись без базовых навыков в программировании. Включить его можно, нажав на кнопку «Выполнить произвольный алгоритм».

В левой части обработки нужно описать сам алгоритм, а в правой ее части для удобства расположены реквизиты нашего документа.

В нижней части формы вы можете указать, записывается изменяемый вами объект автоматически, либо данное условие будет указано в вашем алгоритме. Так же вы можете отключить использование безопасного режима при выполнении группового изменения реквизитов.

Пример 2. Пакетная печать документов

Иногда возникает необходимость напечатать определенные документы за период. Без групповой обработки приходится открывать каждый документ и отправлять его на печать. Попробуем напечатать все реализации товаров за март месяц с помощью групповой обработки.

В типе объекта выберем «Документы», вид документа добавим «Реализация товаров и услуг».

📌 Реклама Отключить

Также добавим два отбора:

  • Дата между 01.03.2012 и 31.03.2012 – для отбора документов за март месяц
  • Проведен равно «Истина» – для отбора только проведенных документов, непроведенные и помеченные на удаление печатать не будем.

Нажмем кнопку «Отобрать» и получим список всех проведенных документов за март:

В качестве действия выберем «Печать документов»:

Можно выбрать один из трех вариантов печати:

  1. Печать с предварительным просмотром – печатные формы будут показаны на экране
  2. Печать без предварительного просмотра – печатные формы будут отправлены на принтер
  3. Реестр документов – будет выведен реестр (список) отобранных документов

Выберем «Печать без предварительного просмотра», чтобы документы сразу были отправлены на принтер и распечатаны. 📌 Реклама Отключить

После нажатия на кнопку «Выполнить» программа начнет процесс печати документов.

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

События при проведении документа

рубрики: Документы | Дата: 3 февраля, 2018

При проведении документа выполняется множество предопределенных функций как в модуле формы, так и в модуле объекта. Часть из них выполняется в единой транзакции. В каждую из этих функций разработчик может добавить свой код.
Но чтобы правильно выбрать ту или иную функцию для своего кода, необходимо представлять в какой последовательности выполняются эти функции и где они выполняются — на клиенте или на сервере.

Как всегда я призываю не принимать на веру любую теорию, а опробовать все самостоятельно на практике. Эксперименты будем проводить на платформе 8.3 с использованием управляемой формы документа. Для начала создадим любой документ с возможностью проведения и добавим в него форму. Далее откроем модуль формы и добавим в него все предопределенные процедуры связанные с записью документа. А чтобы в момент записи и проведения документ мог сам нам рассказать в какой последовательности выполняются предопределенные процедуры, в каждую из них вставим вызов сообщения с указанием имени процедуры.
В итоге получим вот такой код:

&НаКлиенте Процедура ПередЗаписью(Отказ, ПараметрыЗаписи) Сообщить(«МодульФормы.ПередЗаписью»); КонецПроцедуры &НаСервере Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты) Сообщить(«МодульФормы.ОбработкаПроверкиЗаполненияНаСервере»); КонецПроцедуры &НаСервере Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) Сообщить(«МодульФормы.ПередЗаписьюНаСервере»); КонецПроцедуры &НаСервере Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) Сообщить(«МодульФормы.ПриЗаписиНаСервере»); КонецПроцедуры &НаСервере Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи) Сообщить(«МодульФормы.ПослеЗаписиНаСервере»); КонецПроцедуры &НаКлиенте Процедура ПослеЗаписи(ПараметрыЗаписи) Сообщить(«МодульФормы.ПослеЗаписи»); КонецПроцедуры

И такую же процедуру проделаем с модулем объекта:

Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты) Сообщить(«МодульОбъекта.ОбработкаПроверкиЗаполнения»); КонецПроцедуры Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения) Сообщить(«МодульОбъекта.ПередЗаписью»); КонецПроцедуры Процедура ПриЗаписи(Отказ) Сообщить(«МодульОбъекта.ПриЗаписи»); КонецПроцедуры Процедура ОбработкаПроведения(Отказ, РежимПроведения) Сообщить(«МодульОбъекта.ОбработкаПроведения»); КонецПроцедуры

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

  • МодульФормы.ПередЗаписью
  • МодульФормы.ОбработкаПроверкиЗаполненияНаСервере
  • МодульОбъекта.ОбработкаПроверкиЗаполнения
  • МодульФормы.ПередЗаписьюНаСервере
  • МодульОбъекта.ПередЗаписью
  • МодульОбъекта.ПриЗаписи
  • МодульОбъекта.ОбработкаПроведения
  • МодульФормы.ПриЗаписиНаСервере
  • МодульФормы.ПослеЗаписиНаСервере
  • МодульФормы.ПослеЗаписи

Для наглядности представим информацию в графическом виде:

Как видим все процедуры модуля документа за исключением проверки заполнения выполняются в единой транзакции. Также в этой транзакции выполнятся и процедура модуля формы ПриЗаписиНаСервере(). В этой процедуре у нас есть последний шанс отказаться от проведения документа. Стоит также отметить, что после выполнения процедуры модуля документа ПередЗаписью() у нас документ уже записан в базу данных. То есть в процедуре ПриЗаписи() у нас уже есть возможность использовать ссылку на документ.

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *