В помощь программисту: "Групповая обработка справочников и документов" с выполнением произвольного кода.

Расширение возможностей типовой обработки "Групповая обработка справочников и документов".

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

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

В самой форме обработки нововедений всего два: в списке действий появилось действие «Выполнить код[…]», и появилась новая закладка с полем для кода, который будет исполняться.

Открываем обработку, выбираем справочник «Номенклатура», в поле «Отбор» добавляем новую строку: Поле = ПолноеНаименование; ТипСравнения=Равно; Значение=»»; (то есть пустая строка) и нажимаем кнопку «Отобрать». Переходим на закладку «Обработка» там должна появиться таблица с элементами справочника, удовлетворяющих указанному условию отбора (то есть с незаполненным ПолнымНаименованием).

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

//Значение ссылки на элемент справочника или документа
//обрабатываемой в текущей итерации отобранных и отмеченных элементов
//доступно через переменную "ТекСсылка"
СпрОбъект = ТекСсылка.ПолучитьОбъект();
СпрОбъект.ПолноеНаименование = СокрЛП(ТекСсылка.Наименование)+" "+СокрЛП(ТекСсылка.Артикул);

Попытка
СпрОбъект.Записать();
Сообщить(""+ТекСсылка+" элемент записан.");
Исключение
Сообщить("Не удалось записать элемент: "+ТекСсылка+" "+ОписаниеОшибки());
КонецПопытки;



То есть обработка будет в цикле перебирать все отмеченные строки таблицы с отобранными объектами, и в каждой итерации вызывать оператор «Выполнить()» с нашим кодом.

Возвращаемся на закладку «Обработка» , в списке действий выбираем «Выполнить код[…]» и нажимаем кнопку «Выполнить».

Вот в принципе и все.

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

25 Comments

  1. German

    Было уже во многих обработках:

    Например в Ei:

    Кроме встроенного языка+установка реквизитов+проведение+загрузка данных. Причем для любых данных не только находящихся в БД…

    Reply
  2. kitt

    German так я на эксклюзивный патент и не претендую.

    Reply
  3. kitt

    Кроме того Ei — 2.5 Mb, ГрупповаяОбработкаСправочниковИДокументов — 45 Kb.

    Reply
  4. German

    http://www.google.ru/search?hl=ru&lr=&newwindow=1&rlz=1B5GGGL_ruRU238RU239&as_qdr=all&q=­%D0%93%D1%80%D1%83%D0%BF%D0%BF%D0%BE%D0%B2%D0%B0%D1%8F+%D0%B­E%D0%B1%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0+8.1+site:infostart.ru&start=10&sa=N

    Reply
  5. kitt

    Меня длинным гуглевским урлом не напугаешь ))

    Reply
  6. WiseSnake

    У меня тоже есть такая же разработка(сам писал) ))) но со временем я от нее отказался…

    Попробуйте попользоваться http://www.infostart.ru/profile/15778/projects/2795/, но со временем Вам понравится(я уже пользуюсь только ей), тем более я скоро продолжу описание http://www.infostart.ru/profile/15778/blogs/709/ (извините за рекламу я не со зла)

    Reply
  7. lakzn

    kitt, спасибо! Быстро, просто и как раз то, что нужно ))

    Reply
  8. scoboy

    Огромное спасибо!

    Reply
  9. Shin0o

    Спасибо хорошая обработка а самое главное очень гибкая.

    Респект kitt 💡

    Reply
  10. Lizi60

    Плюс, конечно. Спасибо.

    Reply
  11. Alex@ander

    Спасибо огромное, в своё время обработка очень мне помогла!

    Reply
  12. arjuna

    Спасибо, мне помогла. Есть пожелание: для примера показать в закомментированом виде наиболее распространенные варианты кода.

    Reply
  13. pannamara

    Спасибо, постоянно использую, очень удобно

    Reply
  14. Lizi60

    Очень полезная обработка. Пользуюсь постоянно. Спасибо автору.

    Reply
  15. Murik_1984

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

    Reply
  16. balabani

    Спасибо хорошая обработка

    Reply
  17. hedgehog.net

    Я не понял, а как обратится к объекту если нужно обработать и табличные части и реквизиты документов ?

    Reply
  18. CratosX

    (17) hedgehog.net,

    Документ.ПоступлениеТоваров.Товары.__НужныйРеквизит__

    Reply
  19. mihaizum

    Обработка классная! спасибо!

    Reply
  20. IsiKosta

    Приветствую всех! Кому надо разработать код для данной обработки, пишите на isihome@yandex.ru (предоплата)

    Reply
  21. fixin

    да. действительно маст-хэв. Можно отобрать сразу несколько документов и сделать с ними что захочешь, например я использовал для удаления объектов. 😉

    Reply
  22. IsiKosta

    На управляемых формах ? В описании надо бы указать, это важно.

    Reply
  23. IsiKosta

    Картинку очень желательно добавлять в описание!

    Reply
  24. kitt

    (23) IsiKosta, смотри дату публикации и включай голову

    Reply
  25. Fedor1970

    Для Розница, редакция 1.0 потребовались незначительные изменения в коде, но РАБОТАЕТ!

    Доволен заказчик, доволен Я, автору Респект

    Reply

Leave a Comment

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