gifts2017

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

Опубликовал Poppy (poppy) в раздел Обработки - Обработка документов

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

Статья является продолжением цикла статей и разработок:
Внешние печатные формы в восьмерке 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/
Требования к внешней обработке достаточно просты. В модуле обработки должна быть процедура Инициализировать() с тремя параметрами и ключевым словом «Экспорт». Например, для заполнения табличной части документа номенклатуры из определенной группы достаточно написать процедуру:
Процедура Инициализировать(Объект, ИмяТабличнойЧасти, ТабличноеПоле) Экспорт;
	
	Форма = Справочники.Номенклатура.ПолучитьФормуВыбораГруппы();	
	Группа = Форма.ОткрытьМодально();
	Если Группа = Неопределено Тогда Возврат;
	КонецЕсли;
	
	Объект[ИмяТабличнойЧасти].Очистить();
	
	Выборка = Справочники.Номенклатура.Выбрать(Группа);
	Пока Выборка.Следующий() Цикл Если Выборка.ЭтоГруппа Тогда Продолжить;
		КонецЕсли;

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

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

См. также

Подписаться Добавить вознаграждение

Комментарии

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

спасибо poppy!

Удачи!
3. Александр Шишкин (Шёпот теней) 28.02.08 15:04
…и… опять я…

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

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

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

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

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

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

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

во-о-от... хочется дождаться и мнения и poppy... а то так недалеко и до комплекса полной неполноценности...
6. Poppy (poppy) 29.02.08 01:10
Извини, Шепот, но хелп не читала. Наверно, зря.

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

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

...и... привет и Элли с Тотошкой...
10. Олег Пономаренко (O-Planet) 01.03.08 01:45
(5) во-о-от... хочется дождаться и мнения и poppy... а то так недалеко и до комплекса полной неполноценности

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

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

(я не тормоз, мне просто чессно некогда Инфостарт читать %( )
27. Павел Казанцев (powar) 23.08.10 11:06
А как мона передать полностью ссылку на документ обработке? Что бы получать данные с документа и записывать на него. :?:
28. Александр Медведев (anig99) 23.08.10 12:28
(27) Объект - это и есть ссылка на документ
29. Слава Егоров (mir2) 17.09.10 18:04
Здравствуйте!
Подскажите новичку ( с 1с познакомился совсем недавно).
У меня возникла проблема подключения этой обработки.
В конфигураторе добавляю новую обработку.В окно модуля вставляю вышеуказанную процедуру.Сохраняю внешнюю обработку в файл.
Затем подключаю ее как указано выше. Но в окне "принадлежность обработки по заполнению табличных частей " у меня пусто.И программа ничего не дает туда внести.
Что нужно еще сделать ,чтобы у меня по вышеуказанным рекомендациям все заработало?
Заранее спасибо.
30. Слава Егоров (mir2) 17.09.10 19:26
(29) Извините за беспокойствие .Все получилось.
Для обработки в конфигураторе надо было указать в реквизитах ссылку на объект.
31. Надежда Иванова (Nadezhda09) 23.09.10 15:05
to poppy
Очень полезная тема и доходчиво написано. Спасибо! Все работает! :)

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

Может это и не оптимально, но работает. :)
Изменения в форме документа отображаются тут же.
Михаська; lamp; powar; +3 Ответить
32. Павел Казанцев (powar) 23.09.10 17:28
33. IP43 (IP43) 19.11.10 15:35
Ученье трудно нам давалось. Писал для 7-ки писал, и тут на тебе, клиенты повально начали переходить на 8-ку, если бы не подобные статьи, то все мозги бы вывихнул на старости лет изучая оную. А так со скрипом, но дело движеться вперед.
MaraPera; +1 Ответить
34. figznaika figznaika (figznaika) 14.09.11 09:36
35. Леонид Квит (Lyolik) 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) 09.11.11 11:52
обогатил свои знание спс
39. evgen1977 (musatov1c.ru) 09.12.11 14:52
Спасибо большое. Мгновенное применение. Сразу в жизнь.
40. Олег Барсуков (Olejkee) 09.12.11 15:01
подобным образом организовал простой обмен через csv файл с сайтом на viart.
теперь обновления на сайте не занимают больше 5 минут при оооочень малом бюджете :)
41. Роберт Тим (al_ban) 17.03.12 13:59
Спасибо за статью! Сейчас решаю задачу корректировки проводок документа "Списание с расчетного счета " с помощью обработки заполнения табличных частей, не знаю, получится ли...
42. Дмитрий Виссарионов (Dwiss) 28.03.12 22:31
(19) dimg, Блин что делать с модифицированностью? как от нее избавиться всю голову сломал, сохранять объект не подходит, вышли как нибудь из положения?
43. krechet5 (krechet5) 13.04.12 15:35
Спасибо, полезно для новичка. Работает!
44. Андрей Чуйков (andpal) 27.04.12 13:00
Как отладчиком забраться в процедуру "Инициализировать" ?
45. Lochness ЛохНесс (ЛохНесс) 14.05.12 00:39
46. Irina Тускова (RG84) 11.02.13 12:16
все кратко и понятно написано. спасибо за информацию, то что надо!!!
47. Светлана Владимирова (Vladisa) 05.07.13 06:31
попробуем, раз так много оценок!
48. anry mc (AnryMc) 05.07.13 07:03
(47) Vladisa, Здесь пишеться - скачал/нескачал... Нехорошо обманывать... Млдераторы вычислят как вы $m зарабатываете - забанят...
49. Марина Чирина (chmv) 10.07.13 13:54
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа