Каталог решений - Ликбез 7.7: Инициализация переменных во внешнем отчете.

Ликбез 7.7: Инициализация переменных во внешнем отчете.

Ликбез 7.7: Инициализация переменных во внешнем отчете.

В наличии

Хотя апологеты самодокументированных программ категорически не рекомендовали передавать в процедуры параметры-ссылки, все же иногда хочется.

Категория:

Описание

Хотя апологеты самодокументированных программ категорически не рекомендовали передавать в процедуры параметры-ссылки, все же иногда хочется. 1С вообще считает, что по умолчанию параметр процедуры должен быть ссылкой.

Но как быть, если требуемый функционал должен реализоваваться внешним отчетом? И таких отчетов требуется вагон и маленькая тележка? Формировать список значений параметров, передавать его, получать значения из списка и загонять в параметры – это обычный метод. Вот и нарисуем соответствующую процедуру для глобального модуля…

Процедура глОтчетСоСсылками(пФайл, СписПар="", пКолСсылок=0, п1="", п2="", п3="") Экспорт

                Перем лИмя;

                Если ПустаяСтрока(пФайл) = 1 Тогда

                               Сообщить("Не задано имя файла отчета!");

                               Возврат;

                КонецЕсли;

                Если ФС.СуществуетФайл(пФайл) = 0 Тогда

                               Сообщить("Не найден файл "+пФайл+" !");

                               Возврат;

                КонецЕсли;

                Если ПустоеЗначение(СписПар) = 1 Тогда

                               СписПар = СоздатьОбъект("СписокЗначений");

                КонецЕсли;

                Если пКолСсылок > 0 Тогда

                    СписПар.ВставитьЗначение(1,п1);

                КонецЕсли;

                Если пКолСсылок > 1 Тогда

                    СписПар.ВставитьЗначение(2,п2);

                КонецЕсли;

                Если пКолСсылок > 2 Тогда

                    СписПар.ВставитьЗначение(3,п3);

                КонецЕсли;

                ОткрытьФормуМодально("Отчет", СписПар, пФайл);

                Если пКолСсылок > 0 Тогда

                    п1 = СписПар.ПолучитьЗначение(1,лИмя);

                КонецЕсли;

                Если пКолСсылок > 1 Тогда

                    п2 = СписПар.ПолучитьЗначение(2,лИмя);

                КонецЕсли;

                Если пКолСсылок > 2 Тогда

                    п3 = СписПар.ПолучитьЗначение(3,лИмя);

                КонецЕсли;

КонецПроцедуры

 

 

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

 

P.S. Достал меня Владимир. И в самом деле, количество параметров-ссылок вовсе не обязано быть аргументом — если внешнему отчету оно потребуется, его можно передать и по-другому. Но список значений я все же оставлю, ибо не только ссылки, как правило, должны передаваться в отчет…

Итак:

 

Процедура глОтчетСоСсылками(пФайл, СписПар="", п1="", п2="", п3="") Экспорт

                Перем лИмя;

                Если ПустаяСтрока(пФайл) = 1 Тогда

                               Сообщить("Не задано имя файла отчета!");

                               Возврат;

                КонецЕсли;

                Если ФС.СуществуетФайл(пФайл) = 0 Тогда

                               Сообщить("Не найден файл "+пФайл+" !");

                               Возврат;

                КонецЕсли;

                Если ПустоеЗначение(СписПар) = 1 Тогда

                               СписПар = СоздатьОбъект("СписокЗначений");

                КонецЕсли;

                СписПар.ВставитьЗначение(1,п1);

                СписПар.ВставитьЗначение(2,п2);

                СписПар.ВставитьЗначение(3,п3);

                ОткрытьФормуМодально("Отчет", СписПар, пФайл);

                п1 = СписПар.ПолучитьЗначение(1,лИмя);

                п2 = СписПар.ПолучитьЗначение(2,лИмя);

                п3 = СписПар.ПолучитьЗначение(3,лИмя);

 КонецПроцедуры

 

has been added to your cart:
Оформление заказа