Заполнение табличных частей документов в восьмерке (внешние обработки)

Публикация № 17140

Обработки - Обработка документов

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

Статья является продолжением цикла статей и разработок:
Внешние печатные формы в восьмерке http://infostart.ru/blogs/157/
Обработка для тестирования внешних печатных форм в восьмерке http://infostart.ru/projects/833/
Использование встроенного почтового клиента - http://infostart.ru/blogs/161/
Документ с печатью и подписью - http://infostart.ru/blogs/162/
Внешние печатные формы в восьмерке II - http://infostart.ru/blogs/324/
Заполнение табличных частей документов в восьмерке (внешние обработки) http://infostart.ru/blogs/345/
Обработка для тестирования внешних обработок заполнения табличных частей http://infostart.ru/projects/1749/
Использование свойств объектов при доработке типовых конфигураций http://infostart.ru/blogs/692/
Примеры обработок:
Закрытие регистров накопления (обработка заполнения табличных частей) http://infostart.ru/projects/3280/
Объединение одинаковых строк табличной части документа http://infostart.ru/projects/4355/
Требования к внешней обработке достаточно просты. В модуле обработки должна быть процедура Инициализировать() с тремя параметрами и ключевым словом «Экспорт». Например, для заполнения табличной части документа номенклатуры из определенной группы достаточно написать процедуру:
Процедура Инициализировать(Объект, ИмяТабличнойЧасти, ТабличноеПоле) Экспорт;
        
        Форма = Справочники.Номенклатура.ПолучитьФормуВыбораГруппы();  
        Группа = Форма.ОткрытьМодально();
        Если Группа = Неопределено Тогда Возврат;
        КонецЕсли;
        
        Объект[ИмяТабличнойЧасти].Очистить();
        
        Выборка = Справочники.Номенклатура.Выбрать(Группа);
        Пока Выборка.Следующий() Цикл Если Выборка.ЭтоГруппа Тогда Продолжить;
                КонецЕсли;

                СтрокаТабличнойЧасти = Объект[ИмяТабличнойЧасти].Добавить();
                СтрокаТабличнойЧасти.Номенклатура = Выборка.Ссылка;
        КонецЦикла;

КонецПроцедуры 
Для подключения обработки необходимо добавить новый элемент в справочник «Внешние обработки». Меню\Сервис\Открыть список внешних обработок заполнения табличных частей. Пример заполнения справочника представлен на рисунке.
Подключение обработки
В результате, в документе появится новый пункт меню у кнопки «Заполнить».
Вызов обработки
Описанный механизм поддерживает передачу во внешнюю обработку параметров. Подробнее здесь //firstportal.ru/blogs/324/
В обработке может быть макет с идентификатором "Параметры_Авторегистрации". В первом столбце которого в каждой строчке можно указать объекты, для которых предназначена печатная форма. Например, "Документы.ЗаказПокупателя". Во втором столце - идентификаторы табличных частей.
В качестве бонуса предлагаю обработку //firstportal.ru/projects/1749/?ref=4246 , с помощью которой можно облегчить процесс тестирования кода. Обработку подключаем через справочник "Внешние обработки". Запускаем обработку через кнопку "Заполнить". В обработке указываем имя файла тестируемой внешней обработки. После чего, тестируем код как обычный модуль.
223

См. также

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
1. Шёпот теней 1745 28.02.08 13:32 Сейчас в теме
Великая poppy! спасибо за оперативность и актуальность материала! В очередной раз позвольте высказать своё восхищение вашими трудами и глубиной познания методологии 1С. Удачи!
2. Шёпот теней 1745 28.02.08 13:52 Сейчас в теме
опятья... посидел... попробовал... разобрался... да! отличная идея и возможность и главное простота реализации.

спасибо poppy!

Удачи!
3. Шёпот теней 1745 28.02.08 15:04 Сейчас в теме
…и… опять я…

…poppy, не могли бы вы ответить на один вопрос, что является источником таких знаний об 1С 8… вопрос, о заполнении табличных частей документа меня задел… просмотрел сайты, форумы, книги… и нигде нет подобного решения, нигде такое не описывается… даже в талмуде-библии «Профессиональная разработка в системе 1С:Предприятие 8» господ Габец, Гончаров +++ Радченко о такой возможности говорится мельком, описывается на четверть листа, а уж говорить о возможности это понять и говорить не приходится…

Поэтому хочется узнать, где этот источник…? Куда надо смотреть, что посещать…?
Откуда такая методическая правильность и доходчивость…?

Ответьте если не затруднит… вам поклоняющийся … ШТ…

Во-о-о-от такой вопрос?

Удачи всем и во всём…

4. O-Planet 6961 28.02.08 16:41 Сейчас в теме
Шёпот теней
Мдя... Ты бы в 1С еще позвонил, а потом и Биллу Гейтсу :) А посмотреть Справочную информацию по спрвочнику "Внешние обработки" - не судьба была? :)
5. Шёпот теней 1745 28.02.08 18:05 Сейчас в теме
Спасибо O-Planet! конечно, сам виноват... кто же спорит... но вот вопрос... кто читает эти хелпы в справочниках, да ещё в таком как "Внешние обработки"...

я тоже силён "последним умом"... но если честно... давайте вместе прочитаем этот хелп и спросим себя " ты, что-нибудь понял?"... я, не такой умный, это точно... да и к тому же как это сделала poppy наглядно и доходчиво... и если она всё это смогла сделать только на основании информации из хелпа ""Внешние обработки" ... то... я восхищён... и poppy и хелпом...

во-о-от... хочется дождаться и мнения и poppy... а то так недалеко и до комплекса полной неполноценности...
10. O-Planet 6961 01.03.08 01:45 Сейчас в теме
(5) во-о-от... хочется дождаться и мнения и poppy... а то так недалеко и до комплекса полной неполноценности

Ты эт о чем вообще? :)
6. poppy 3348 29.02.08 01:10 Сейчас в теме
Извини, Шепот, но хелп не читала. Наверно, зря.

Основа статьи взята из типовой конфигурации УПП 1.2.7.1. Общий модуль - "УниверсальныеМеханизмы". Процедура - ОбработатьНажатиеНаДополнительнуюКнопкуЗаполненияТЧ(), строка #377
Обработка.Инициализировать(ЭтотОбъект, СтрокаКнопки.Родитель.Имя, СтрокаКнопки.Родитель.Расшифровка);
Остальное, как говорится, дело техники.

Ты спрашиваешь, откуда сила, брат (сестра)? Имхо, неплохо об этом написал Александр здесь http://infostart.ru/blogs/139/#comm24
7. das 232 29.02.08 02:45 Сейчас в теме
По моему мнению отзвук силы и вдохновения звучит и здесь (пардон за каламбур):
http://infostart.ru/blogs/179/
8. Abadonna 3827 29.02.08 05:18 Сейчас в теме
>Великая poppy!
О, Poppy, Великая и Ужасная! Дай мне сердце, а кое-кому мозгов.
И Элли с Тотошкой вернутся с Арканзас :)))
9. Шёпот теней 1745 29.02.08 07:46 Сейчас в теме
спасибо и Великому Abadonne...

...и... привет и Элли с Тотошкой...
11. Abadonna 3827 01.03.08 06:41 Сейчас в теме
>ОбработатьНажатиеНаДополнительнуюКнопкуЗаполненияТЧ()
Коротковатое название ;)
Лучше: ОбработатьНажатиеНаДополнительнуюКнопкуЗаполненияТЧ_и_Выполн­итьНеобходимыеДействияКорректно() :)))))))))
12. natachka 17.04.08 09:56 Сейчас в теме
Спасибо большое! Нужно было быстро разобраться, очень помогло!!!
13. vitbel 06.05.08 23:10 Сейчас в теме
Не плохо бы дописать в ней и запролнение на основании
14. poppy 3348 06.05.08 23:24 Сейчас в теме
(13)
"заполнение на основании" чего? Как это относится к теме обсуждаемой статьи?
15. Sverkalov 122 11.08.08 21:37 Сейчас в теме
Использовать
http://infostart.ru/profile/6612/projects/893/
(не моя)
16. some21 27.01.09 13:25 Сейчас в теме
Как сделать отбор всех подгрупп этой группы. Так как здесь идет отбор только
элементов указаного уровня?
17. ErshKUS 15.07.09 17:40 Сейчас в теме
Надо бы еще добавить про "Параметры_Авторегистрации"
18. poppy 3348 16.07.09 23:51 Сейчас в теме
(17)
Спасибо за замечание...
19. dimg 14 04.02.10 20:46 Сейчас в теме
Кстати, в этой хорошей идее, как всегда у 1С, не обошлось без ложки дегтя. При вызове форма имеет модифицированность всегда. Т.е. если даже в обработке ничего не меняли, и, следовательно документ не изменен, то значок * ставится все равно и предлагает сохранятся.
20. poppy 3348 06.02.10 00:59 Сейчас в теме
(19) Есть такая фича в типовых конфигурациях. Кроме БП.
21. poppy 3348 06.02.10 00:59 Сейчас в теме
(19) Спасибо за дополнение.
42. Dwiss 159 28.03.12 22:31 Сейчас в теме
(19) dimg, Блин что делать с модифицированностью? как от нее избавиться всю голову сломал, сохранять объект не подходит, вышли как нибудь из положения?
Evgenii_1980; +1 Ответить
22. MAntaNA 6 17.02.10 00:11 Сейчас в теме
poppy, нет ли планов развить тему? В частности, что-то непонятно, как работать, если в параметре ТабличноеПоле типовая конфигурация передаёт не ТабличноеПоле, связанное с табличной частью документа, а ТабличноеПоле, связанное с генерируемой в контексте формы документа временной ТаблицейЗначений (например, документ УстановкаЦенНоменклатуры в Рознице). Бьюсь-бьюсь, никак что-то не получается редактировать это ТабличноеПоле...
23. MAntaNA 6 17.02.10 00:22 Сейчас в теме
Тьфу-ты, вот вроде и докопался! По крайней мере, вроде получается редактировать саму ТЗ через ТабличноеПоле.Значение... Сейчас вроде допинаю... stay tuned %)
24. 1CBars 21.04.10 15:19 Сейчас в теме
У меня вопрос: а что можно сделать, чтобы вызвать эту обработку ТЧ в документе, у которого нет кнопочки "Заполнить"? (к примеру документ "Ввод начальных остатков в Бух 8")
25. ShurikOff 6 09.08.10 08:23 Сейчас в теме
Под 8.2 не работает... :evil:
26. MAntaNA 6 20.08.10 21:24 Сейчас в теме
Ну да, как я и сказал, всё работает через ТабличноеПоле.Значение (для документа УстановкаЦенНоменклатуры в Рознице).

Процедура Инициализировать(Объект, ИмяТабличнойЧасти, ТабличноеПолеОбъекта) Экспорт
Для каждого СТП Из ТабличноеПолеОбъекта.Значение Цикл
СТП["цена1"] = 10;
КонецЦикла;
КонецПроцедуры

(я не тормоз, мне просто чессно некогда Инфостарт читать %( )
27. powar 6 23.08.10 11:06 Сейчас в теме
А как мона передать полностью ссылку на документ обработке? Что бы получать данные с документа и записывать на него. :?:
28. anig99 2685 23.08.10 12:28 Сейчас в теме
(27) Объект - это и есть ссылка на документ
31. Nadezhda09 23.09.10 15:05 Сейчас в теме
to poppy
Очень полезная тема и доходчиво написано. Спасибо! Все работает! :)

(27) to powar
Не знаю, актуален ли еще ваш вопрос, но отвечаю на всякий случай:
МОЖНО :!:
1. Добавила в реквизиты обработки реквизит "ДокументОбъект" с типом значения ДокументОбъект.<НаименованиеДокумента>
2. В проц. Инициализировать() добавила:
ДокументОбъект=Объект;
3. Потом обращалась к документу через реквизит ДокументОбъект.

Может это и не оптимально, но работает. :)
Изменения в форме документа отображаются тут же.
vista326; Михаська; lamp; powar; +4 Ответить
29. mir2 17.09.10 18:04 Сейчас в теме
Здравствуйте!
Подскажите новичку ( с 1с познакомился совсем недавно).
У меня возникла проблема подключения этой обработки.
В конфигураторе добавляю новую обработку.В окно модуля вставляю вышеуказанную процедуру.Сохраняю внешнюю обработку в файл.
Затем подключаю ее как указано выше. Но в окне "принадлежность обработки по заполнению табличных частей " у меня пусто.И программа ничего не дает туда внести.
Что нужно еще сделать ,чтобы у меня по вышеуказанным рекомендациям все заработало?
Заранее спасибо.
30. mir2 17.09.10 19:26 Сейчас в теме
(29) Извините за беспокойствие .Все получилось.
Для обработки в конфигураторе надо было указать в реквизитах ссылку на объект.
32. powar 6 23.09.10 17:28 Сейчас в теме
33. IP43 305 19.11.10 15:35 Сейчас в теме
Ученье трудно нам давалось. Писал для 7-ки писал, и тут на тебе, клиенты повально начали переходить на 8-ку, если бы не подобные статьи, то все мозги бы вывихнул на старости лет изучая оную. А так со скрипом, но дело движеться вперед.
MaraPera; +1 Ответить
34. figznaika 14.09.11 09:36 Сейчас в теме
35. Lyolik 8 15.09.11 13:11 Сейчас в теме
ShurikOff пишет:

Под 8.2 не работает...

Хм... странно, у меня работает. Попробуйте открыть через конфигуратор и согласитесь на преобразование обработки, после этого сохраните и откройте в режиме Предприятие.
36. h_vitya 20.09.11 17:00 Сейчас в теме
Спасибо за статью! Оч. полезная информация.
37. KliMich 16.10.11 12:22 Сейчас в теме
Содержательная статья!
Добавил бы еще в шапку (как дополнение) "Как создать внешнюю печатную форму на основе готовой"
ПечФормаНаОсновеГотовой
38. MYRZILKA123 2 09.11.11 11:52 Сейчас в теме
обогатил свои знание спс
39. musatov1c.ru 09.12.11 14:52 Сейчас в теме
Спасибо большое. Мгновенное применение. Сразу в жизнь.
40. Olejkee 09.12.11 15:01 Сейчас в теме
подобным образом организовал простой обмен через csv файл с сайтом на viart.
теперь обновления на сайте не занимают больше 5 минут при оооочень малом бюджете :)
41. al_ban 11 17.03.12 13:59 Сейчас в теме
Спасибо за статью! Сейчас решаю задачу корректировки проводок документа "Списание с расчетного счета " с помощью обработки заполнения табличных частей, не знаю, получится ли...
43. krechet5 13.04.12 15:35 Сейчас в теме
Спасибо, полезно для новичка. Работает!
44. andpal 27.04.12 13:00 Сейчас в теме
Как отладчиком забраться в процедуру "Инициализировать" ?
45. ЛохНесс 150 14.05.12 00:39 Сейчас в теме
[44]
andpal, используй обработку http://infostart.ru/public/15601/
46. RG84 11.02.13 12:16 Сейчас в теме
все кратко и понятно написано. спасибо за информацию, то что надо!!!
47. Vladisa 31 05.07.13 06:31 Сейчас в теме
попробуем, раз так много оценок!
48. AnryMc 720 05.07.13 07:03 Сейчас в теме
(47) Vladisa, Здесь пишеться - скачал/нескачал... Нехорошо обманывать... Млдераторы вычислят как вы $m зарабатываете - забанят...
49. chmv 10.07.13 13:54 Сейчас в теме
50. user960149 19.04.18 09:33 Сейчас в теме
В этой обработке ярлык "настройка" есть события. Если программно изменить "После добавления строки", то обработка эти изменения не видит, но стоит просто их открыть и закрыть начинает обрабатывать. Изменения вносятся через процедуру КоманднаяПанельЗагружаемыеРеквизитыСобытия. На пример ПослеДобавленияСтроки = "" + Строка("Сообщить(""Загружено"");")+ Символы.ПС + Строка("Сообщить(""Тест"");") . Что ей не хватает? Мне необходимо дополнительно осуществлять поиск данных.
Оставьте свое сообщение