0. json 29.10.16 20:48 Сейчас в теме

Разбираемся с механизмом Дополнительные отчеты и обработки в БСП

Чуть более комплексное описание, чем на других ресурсах

Перейти к публикации

Комментарии
Избранное Подписка Сортировка: Древо
1. davdykin 17 30.10.16 18:09 Сейчас в теме
Спасибо за статью! Но мне кажется, значительно большие трудности не с написанием, а с отладкой данных обработок. Интересно было бы почитать про способы отладки!
NeviD; pas; iolko; mindcannon; wbazil; syberman; +6 Ответить
2. json 30.10.16 19:44 Сейчас в теме
(1) davdykin, благодарю за вопрос.
Раз тема актуальная, то опишу свой подход к решению этой задачи в ближайшее время
43. Xershi 461 11.01.19 17:00 Сейчас в теме
(1) если это печать, то все просто. Создаем форму и эмулируем параметры. Затем вывод на форму в табличный документ.
Для остального обычно существует форма, если нет, то тоже самое, параметры подсмотреть перед вызовом и все быстро отлаживается в полном контексте и не нужно каких-то режимов разработчика или дополнительной обработки, которая будет работать через сохранение в файл и подмену.
3. vadver 15 31.10.16 08:45 Сейчас в теме
Спасибо, хорошая статья. Правда, совершенно не освещено заполнение разрешений. Для безопасного режима это очень актуально
olbu; vasiliy_b; +2 Ответить
4. nixel 609 31.10.16 09:54 Сейчас в теме
Кто-то должен спросить...
Чем не устроила официальная документация по БСП на ИТС?
З.Ы. Про разрешения там тоже есть.
AnderWonder; vano-ekt; +2 Ответить
6. fishca 1133 31.10.16 11:16 Сейчас в теме
(4) а у всех туда доступ есть?
8. vadver 15 31.10.16 17:32 Сейчас в теме
(4) nixel, ага, документация там по принципу "краткость - сестра таланта"
user631683_rystam.atai; spmisc; +2 Ответить
10. nixel 609 31.10.16 18:40 Сейчас в теме
(8) vadver, не заметил там краткости, особенно в разделе "Использование при разработке конфигурации"

Видимо, вкусовщина.
9. palsergeich 31.10.16 18:19 Сейчас в теме
(4) nixel, https://its.1c.ru/db/bspdoc#content:427:1 Вы про это? При всем моем уважении, это не документация, это КрССТал.
Нормально посмотреть как это работает, конечно, можно в демо базе, но зачем тогда такая документация, если по любому вопросу проще лезть в пример. А доступ к демо базе может быть не всегда...

Да они в общем то этого не скрывают:
Подробнее см. дополнительную обработку Демо: Обработка заполнения в справочнике Дополнительные отчеты и обработки демонстрационной конфигурации.
bow; sbcode; +2 Ответить
11. json 31.10.16 23:38 Сейчас в теме
(4) nixel, я описал с точки зрения программиста, который начал использовать данный механизм, а не с точки зрения архитектора, который его разработал и описал документацию.
Архитектору, например, и так понятно, что СвязанныеОбъекты - появляются в меню "Создать на основании" в карточке документа. Но я потратил кучу времени, чтобы понять, на что влияет этот параметр. Или чем отличается Отчет от ДополнительныйОтчет? Из указанной вами справки этого не понять, о чем справедливо заметил (8) vadver, Или например, те же самые команды - все поля перечислены скопом, сидишь и думаешь, как их все заполнить, а заполнять то оказывается достаточно только три из них. И такие мелочи на каждом шагу. В итоге, разобравшись, мне было просто жалко, что эта информация забудется мною через некоторое время, поэтому я выложил свое знание в виде публикации

Мое мнение такое: публикация получилась неплохая, наглядная (за счет добавления таблиц и рисунков). Такой материал проще усваивается и запоминается. Кроме того чтение документации никто не отменял, и ее будет проще читать после этой обзорной статьи.

(3) vadver, я постарался осветить только основные моменты, не погружаясь в детали. На полноту изложения не претендую. Я пропустил не только этот аспект, но и еще дополнительные методы объектов, которые на мой взгляд тоже заслуживают внимания. Думаю, что такие детали уже можно разобрать по справке или на примерах из БСП, имея общее понимание механизма.
Stepka1206; CodeNull; user631683_rystam.atai; ZhikinVN1984; SirYozha; Dementor; bow; Krio2; Vladimir Litvinenko; swiss-garant; vic777tor; sbcode; NeviD; AlX0id; vadver; jONES1979; +16 Ответить
5. fishca 1133 31.10.16 11:16 Сейчас в теме
Только за одно оформление "+"
7. rayastar 76 31.10.16 11:50 Сейчас в теме
"применить данную технологию"
уж тогда механизм) технология это немножко другое
12. Makushimo 153 01.11.16 06:36 Сейчас в теме
13. sml 37 02.11.16 10:07 Сейчас в теме
плюсанул за внятный удобочитаемый вид
14. Trucker 5 03.11.16 08:45 Сейчас в теме
Да, все это нужное и важное. Вот только разработчик БСП постепенно уходит от текущей модели подключаемых внешних обработок и переходит на расширения.
15. Сурикат 187 07.12.16 20:12 Сейчас в теме
Забыли про внешние обработки, позволяющие добавлять свои способы расчета скидок
16. KazanKokos 7 26.12.16 12:23 Сейчас в теме
а под ОФ(ут10.3) тоже самое подходит? Не могу никак найти описание. видимо уже неактуально и ссылки ушли вниз
17. Taliesien 16.01.17 15:52 Сейчас в теме
Подскажите, пожалуйста, если я вызываю внешний отчёт с формы элемента справочника, могу ли я использовать/получить данный элемент в модуле отчёта?
18. Xershi 461 15.05.17 17:51 Сейчас в теме
В моей версии конфигурации "УТ" также есть хороший комментарий в функции ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке.
19. jaroslav.h 04.07.17 19:18 Сейчас в теме
Спасибо большое, ведь в новых конфах уже старый способ не канает. Пример УНФ 1.6 для Украины, не хотела форма показываться при подключении старым способом
20. jaroslav.h 04.07.17 20:06 Сейчас в теме
в прочем, алгоритм то тот же, просто блокировка интерфейса стояла у меня на форме обработки)
21. user780762 26.09.17 18:07 Сейчас в теме
Отличная статья! Всё максимально разжевано и разложено по полочкам, благодарю
22. ylyas 25 10.10.17 13:25 Сейчас в теме
В шаблонах обработки в процедуре ВыполнитьКоманду() параметр "ПараметрыВыполнения" по умолчанию равно "Неопределено".
А внутри процедуры нет проверки и сразу идет обращение через точку "ПараметрыВыполнения.РезультатВыполнения" ..
Здесь явно будет ошибка
23. 7OH 32 03.04.18 12:48 Сейчас в теме
37. spmisc 27.04.18 13:57 Сейчас в теме
(22) В моей текущей версии (не знаю как посмотреть) в Общем Модуле "ДополнительныеОтчетыИОбработки" идет проверка:
Процедура ВыполнитьНазначаемуюКомандуДополнительногоОтчетаИлиОбработки­(ВнешнийОбъект, Знач ИдентификаторКоманды, ПараметрыКоманды, ОбъектыНазначения, Знач СценарийВБезопасномРежиме = Ложь)
	
	Если СценарийВБезопасномРежиме Тогда
		
		ВыполнитьСценарийВБезопасномРежиме(ВнешнийОбъект, ПараметрыКоманды, ОбъектыНазначения);
		
	Иначе
		
		Если ПараметрыКоманды = Неопределено Тогда
			ВнешнийОбъект.ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначения);
		Иначе
			ВнешнийОбъект.ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначения, ПараметрыКоманды);
		КонецЕсли;
		
	КонецЕсли;
	
КонецПроцедуры
Показать
24. 7OH 32 03.04.18 13:15 Сейчас в теме
Ну и про "СтандартныеПодсистемыКлиентСервер.ВывестиОповещение("
у меня в этом модуле всего 3 функции - далеко не для этого...
25. 7OH 32 03.04.18 15:04 Сейчас в теме
Подскажите - как вызвать форму обработки для заполнения формы объекта?
(Хотелось бы без записи объекта).

Если вызывать заполнение формы - то оно почему-то вызывается с сервера и я не могу открыть другую форму.
Открытие формы - получает на входе только ссылки - то бишь мне остаётся только заполнять и записывать объекты, а не открытую форму.
26. Xershi 461 03.04.18 15:27 Сейчас в теме
(25) увы тоже с этим столкнулся. В таком случае придется переписывать логику, чтобы не записывать документ. И это будет велосипед, разработчики предполагили запись в базу, потом открытие.
27. 7OH 32 03.04.18 18:45 Сейчас в теме
(26) Для себя костыль нашел - через ЭтаФорма.Владелец.Объект достучался куда надо.
А пока ковырял пытался себя на место разрабов поставить и не понял:
1. Почему в параметры формы форму не передать - имя передают, а саму форму нет.
2. Почему форма заполнения открывается без РежимОткрытияОкнаФормы.БлокироватьОкноВладельца.
28. Xershi 461 03.04.18 19:34 Сейчас в теме
(27) потому что это работает, если делать на основании 1 документа, а если на основании нескольких? Тогда велосипед не поедет!
29. 7OH 32 03.04.18 23:20 Сейчас в теме
(28) Согласен - задачи бывают разные.
Как по мне - форма заполнения документА - один к одному должна быть ( с трудом представляю заполнение нескольких документов сразу, особенно разных типов).
Ну а если по какому-то алгоритму - то можно и объекты по ссылкам заполнить.
В общем - не панацея, но при 1:1 - решение есть.
30. Xershi 461 04.04.18 10:14 Сейчас в теме
(29) так вот тут и вопрос заключается, когда делается 2 документа сразу их приводить к 1 или 2 к 2. 1 к 1 это частный случай)
31. 7OH 32 04.04.18 11:47 Сейчас в теме
(30) более одного - это уже из формы списка открывается - или не ?
а из формы списка формы ж никак не получить.
Или есть метод вызвать одну команду сразу у 2+ открытых форм одной кнопкой ?
36. spmisc 27.04.18 13:43 Сейчас в теме
(25) А как вообще организовать вызов процедуры ВыполнитьКоманду при типе команды ЗаполнениеФормы?
У меня в эту процедуру программа не заходит вообще, при этом не пишет никаких ошибок (вид обработки: ЗаполнениеОбъекта).
Возможно, я не там и/или не так эту процедуру (ВыполнитьКоманду) написал: пробовал и в модуле формы (и НаКлиенте и НаСервере) и в модуле обработки - ноль реакции системы...
32. baracuda 3 05.04.18 08:16 Сейчас в теме
Почему не все обработки в один архив? Каждую отдельно качать шо ли. (
33. json 06.04.18 13:26 Сейчас в теме
(32)
Для меня интересна статистика, какие виды обработок чаще используются.

Для тех, у кого нет возможности скачать нужный шаблон, могу порекомендовать два варианта:
1. Разобраться самостоятельно, также как это сделал я. Для этого достаточно скачать демо конфигурацию по БСП. Об этом указано в публикации
2. Написать что-нибудь ПОЛЕЗНОЕ и выложить на инфостарте. Тогда не будет возникать таких вопросов и не будет сложностей со скачиванием чужих разработок
34. baracuda 3 07.04.18 09:22 Сейчас в теме
(33) давайте по чесноку.
1) на статистику вам наплевать 100%
2) обязательно это сделаю и не буду требовать стартманей
35. user777757 25.04.18 09:25 Сейчас в теме
От себя добавлю: обязательно смотрите на привязку процедуры ПриСозданииНаСервере к самой форме! У меня случилось следующее: в форме списка не выводилась кнопка Печать, хотя в форме документа была. В модуле формы списка прописаны все необходимые процедуры, но печать не работала, пока не обратил внимания на свойства формы! Разработчик скопировал стандартные процедуры из формы другого документа, а сделать привязку забыл. Пришлось потратить достаточно много времени на устранение простейшей ошибки.
38. user970630 28.09.18 12:33 Сейчас в теме
Спасибо за статью. Только начал изучать программирование, поэтому не все понял. Буду разбираться дальше.
39. KVAlekseev 21.12.18 18:31 Сейчас в теме
Отличная статья!
Подскажите пожалуйста, в варианте ОткрытиеФормы - для - ЗаполненияОбъекта.
Вы указали, что в форму, передается дополнительный параметр "ОбъектыНазначения"

Однако я никак не могу понять, как этот параметр использовать, и где его можно отловить?
40. zawal 13 03.01.19 13:23 Сейчас в теме
Добрый день, спасибо за описания. Плюсанул. Может подскажете как в внешней печатной форме указать макет который находится в самой внешней обработке, тотому как по логике макет можно указать только тот который есть в метаданных базы.
41. json 2027 03.01.19 14:26 Сейчас в теме
(40) Не понятен сценарий использования: на клиенте или на сервере

Если на клиенте, то почему нельзя так:
&НаКлиенте
Процедура Печать(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт
	
	КоллекцияПечатныхФорм = УправлениеПечатьюКлиент.НоваяКоллекцияПечатныхФорм(ИдентификаторКоманды);
	ПечатнаяФорма = УправлениеПечатьюКлиент.ОписаниеПечатнойФормы(КоллекцияПечатныхФорм, ИдентификаторКоманды);
	ПечатнаяФорма.ТабличныйДокумент = ПечатьНаСервере(ОбъектыНазначенияМассив, ИдентификаторКоманды);;
	
	ОбластиОбъектов = Новый СписокЗначений;
	УправлениеПечатьюКлиент.ПечатьДокументов(КоллекцияПечатныхФорм, ИдентификаторКоманды);
	
КонецПроцедуры

&НаСервере
Функция ПечатьНаСервере(МассивОбъектов, ИмяМакета)
	
	ТабличныйДокумент = РеквизитФормыВЗначение("Объект").ПолучитьМакет("ИмяМакетаВоВнешнейОбработке");
	// заполнение табличного документа

	Возврат ТабличныйДокумент;

КонецФункции
Показать


Ну а на сервере аналогично
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
	
	ИдентификаторКоманды = "ЗаказСХарактеристикамиСервер";
	Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, ИдентификаторКоманды) Тогда
		
		УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
			КоллекцияПечатныхФорм,
			"ЗаказСХарактеристикамиСервер",
			"Заказ с характеристиками (сервер)",
			ПечатьЗаказаСХарактеристиками(МассивОбъектов, ОбъектыПечати, ИдентификаторКоманды)
		);
		
	КонецЕсли;
	
КонецПроцедуры

Функция ПечатьЗаказаСХарактеристиками(МассивОбъектов, ОбъектыПечати, ИмяМакета)
	
	ТабличныйДокумент = ПолучитьМакет("ИмяМакетаВоВнешнейОбработке");
	// заполнение табличного документа
	
	Возврат ТабличныйДокумент;
	
КонецФункции
Показать
42. zawal 13 03.01.19 18:12 Сейчас в теме
(41)
РеквизитФормыВЗначение("Объект")


Уже нашел, но все равно спасибо
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Программист 1С
Москва
зарплата до 120 000 руб.
Полный день

Консультант-аналитик 1С
Москва
зарплата от 100 000 руб. до 170 000 руб.
Полный день

Программист 1С
Москва
Полный день

Программист 1С
Видное
Полный день