Имя: Пароль:
1C
1С v8
v8: Ошибка при формировании внешней печатной формы...
0 KSG-RIB
 
06.02.13
16:20
Цель сделать внешнею печатную форму КарточкаДепонента для документа Депонирование Организации. Внешнею печатную форму создал , макет скопировал ,Реквизиты указал (СсылкаНаОбъект) ,Функции перенс , ссылки прописал, на проверку ошибок пишет (нет ошибок), подключаю ее к документу  пытаюсь сформировть пишет (Не удалось сформировать внешнюю печатную форму!Недостаточно фактических параметров. Короче что-то намудрил . Скорее всего в Функции (Печать)
Признаю что намудрил тут лишнего.  

#Если Клиент Тогда

Функция ДепонируемыеСуммыДляПечати()

   Запрос = Новый Запрос;

   // Установим параметры запроса
   Запрос.УстановитьПараметр("ДокументСсылка",   СсылкаНаОбъект);
   
   Запрос.Текст =
   "ВЫБРАТЬ
   |    ЗарплатаКВыплатеОрганизацииЗарплата.Физлицо КАК Физлицо,
   |    ДепонированиеОрганизацийДепонированиеЗаработнойПлаты.Ведомость КАК Ведомость,
   |    СУММА(ЗарплатаКВыплатеОрганизацииЗарплата.Сумма + ЗарплатаКВыплатеОрганизацииЗарплата.КомпенсацияЗаЗадержкуЗарплаты) КАК Сумма
   |ИЗ
   |    Документ.ДепонированиеОрганизаций.ДепонированиеЗаработнойПлаты КАК ДепонированиеОрганизацийДепонированиеЗаработнойПлаты
   |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗарплатаКВыплатеОрганизаций.Зарплата КАК ЗарплатаКВыплатеОрганизацииЗарплата
   |        ПО ДепонированиеОрганизацийДепонированиеЗаработнойПлаты.Ведомость = ЗарплатаКВыплатеОрганизацииЗарплата.Ссылка
   |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СведенияОВыплатахРаботникамОрганизацийПоПлатежнымВедомостям КАК РанееВыплаченныеСуммы
   |        ПО ДепонированиеОрганизацийДепонированиеЗаработнойПлаты.Ведомость = РанееВыплаченныеСуммы.Ведомость
   |            И (ЗарплатаКВыплатеОрганизацииЗарплата.Физлицо = РанееВыплаченныеСуммы.Физлицо)
   |            И (РанееВыплаченныеСуммы.Регистратор <> &ДокументСсылка)
   |ГДЕ
   |    ДепонированиеОрганизацийДепонированиеЗаработнойПлаты.Ссылка = &ДокументСсылка
   |    И ЗарплатаКВыплатеОрганизацииЗарплата.ВыплаченностьЗарплаты = ЗНАЧЕНИЕ(Перечисление.ВыплаченностьЗарплаты.Задепонировано)
   |    И РанееВыплаченныеСуммы.Физлицо ЕСТЬ NULL
   |
   |СГРУППИРОВАТЬ ПО
   |    ДепонированиеОрганизацийДепонированиеЗаработнойПлаты.Ведомость,
   |    ЗарплатаКВыплатеОрганизацииЗарплата.Физлицо";

   Возврат Запрос.Выполнить().Выгрузить();

КонецФункции    


Функция ПечатьКарточкиДепонента(Документ, ДепонируемыеСуммы = Неопределено) Экспорт

   ТабДокумент = Новый ТабличныйДокумент;
   ТабДокумент.ПолеСлева = 0;
   ТабДокумент.ПолеСправа = 0;
   ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ДепонированиеОрганизаций_КарточкиДепонента";
   
   Макет = ПолучитьМакет("КарточкаДепонента");
   
   // получаем данные для печати
   Шапка = Новый Структура;
   Шапка.Вставить("Номер",        Документ.Номер);
   Шапка.Вставить("ДатаДок",    Документ.Дата);
   Шапка.Вставить("НазваниеОрганизации", СокрЛП(Документ.Организация.НаименованиеПолное));
   
   Депоненты    = ДепонентыПоДокументу(Документ, ДепонируемыеСуммы);
   
   ОбластьМакета = Макет.ПолучитьОбласть("Карточка");
   
   // выводим общие данные
   ОбластьМакета.Параметры.Заполнить(Шапка); // Шапка документа.
   
   ВыведеноСтрок = 0;
   ВалютаРасчетов = Константы.ВалютаРегламентированногоУчета.Получить();
   // выводим данные по строкам документа.
   Для Каждого Депонент Из Депоненты Цикл
   
       ВыведеноСтрок = ВыведеноСтрок + 1;
       ОбластьМакета.Параметры.Заполнить(Депонент);
       ОбластьМакета.Параметры.НомерКарточки = "" + Шапка.Номер + "/" + ВыведеноСтрок;
       ОбластьМакета.Параметры.СуммаПрописью = ОбщегоНазначения.СформироватьСуммуПрописью(Депонент.Сумма, ВалютаРасчетов);
       ТабДокумент.Вывести(ОбластьМакета);
       
       // разбиение на страницы
       Если ВыведеноСтрок % 2 Тогда
           ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
       КонецЕсли;

   КонецЦикла;
   
   Возврат ТабДокумент

КонецФункции

Функция ДепонентыПоДокументу(Документ, ДепонируемыеСуммы = Неопределено)
   
   Запрос = Новый Запрос;

   // Установим параметры запроса
   Запрос.УстановитьПараметр("ДатаДепонирования",    Документ.Дата);
   Запрос.УстановитьПараметр("Организация",        ОбщегоНазначения.ГоловнаяОрганизация(Документ.Организация));

   Если ДепонируемыеСуммы = Неопределено Тогда
       Запрос.УстановитьПараметр("Регистратор", Документ.СсылкаНаОбъект);
       ТекстЗапросаДепонируемыхСумм =
       "ВЫБРАТЬ
       |    ВзаиморасчетыСДепонентамиОрганизаций.Физлицо,
       |    ВзаиморасчетыСДепонентамиОрганизаций.Ведомость,
       |    ВзаиморасчетыСДепонентамиОрганизаций.Сумма
       |ПОМЕСТИТЬ ВТДепонированныеСуммы
       |ИЗ
       |    РегистрНакопления.ВзаиморасчетыСДепонентамиОрганизаций КАК ВзаиморасчетыСДепонентамиОрганизаций
       |ГДЕ
       |    ВзаиморасчетыСДепонентамиОрганизаций.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
       |    И ВзаиморасчетыСДепонентамиОрганизаций.Регистратор = &Регистратор"
   Иначе
       Запрос.УстановитьПараметр("ДепонируемыеСуммы", ДепонируемыеСуммы);
       ТекстЗапросаДепонируемыхСумм =
       "ВЫБРАТЬ
       |    ДепонируемыеСуммы.Физлицо,
       |    ДепонируемыеСуммы.Ведомость,
       |    ДепонируемыеСуммы.Сумма
       |ПОМЕСТИТЬ ВТДепонированныеСуммы
       |ИЗ
       |    &ДепонируемыеСуммы КАК ДепонируемыеСуммы"
   КонецЕсли;
   
   Запрос.Текст =
   ТекстЗапросаДепонируемыхСумм +
   Символы.ПС +
   ";
   |
   |////////////////////////////////////////////////////////////////////////////////" +
   Символы.ПС +
   "ВЫБРАТЬ
   |    ДепонированныеСуммы.Ведомость.Номер КАК НомерВедомости,
   |    ДепонированныеСуммы.Ведомость.Дата КАК ДатаВедомости,
   |    ДепонированныеСуммы.Сумма,
   |    ЕСТЬNULL(ФИОФизЛицСрезПоследних.Фамилия + ВЫБОР
   |            КОГДА ПОДСТРОКА(ФИОФизЛицСрезПоследних.Имя, 1, 1) <> """"
   |                ТОГДА "" "" + ПОДСТРОКА(ФИОФизЛицСрезПоследних.Имя, 1, 1) + "".""
   |            ИНАЧЕ """"
   |        КОНЕЦ + ВЫБОР
   |            КОГДА ПОДСТРОКА(ФИОФизЛицСрезПоследних.Отчество, 1, 1) <> """"
   |                ТОГДА "" "" + ПОДСТРОКА(ФИОФизЛицСрезПоследних.Отчество, 1, 1) + "".""
   |            ИНАЧЕ """"
   |        КОНЕЦ, ДепонированныеСуммы.Физлицо.Наименование) КАК ФИОРаботника,
   |    РаботникиОрганизаций.Сотрудник.Код КАК ТабельныйНомер
   |ИЗ
   |    ВТДепонированныеСуммы КАК ДепонированныеСуммы
   |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ФИОФизЛиц.СрезПоследних(
   |                &ДатаДепонирования,
   |                Физлицо В
   |                    (ВЫБРАТЬ
   |                        ДепонированныеСуммы.Физлицо
   |                    ИЗ
   |                        ВТДепонированныеСуммы КАК ДепонированныеСуммы)) КАК ФИОФизЛицСрезПоследних
   |        ПО ДепонированныеСуммы.Физлицо = ФИОФизЛицСрезПоследних.ФизЛицо
   |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций.СрезПоследних(
   |                &ДатаДепонирования,
   |                Сотрудник.Физлицо В
   |                        (ВЫБРАТЬ
   |                            ДепонированныеСуммы.Физлицо
   |                        ИЗ
   |                            ВТДепонированныеСуммы КАК ДепонированныеСуммы)
   |                    И Сотрудник.ВидЗанятости <> ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.ВнутреннееСовместительство)
   |                    И Организация = &Организация) КАК РаботникиОрганизаций
   |        ПО (РаботникиОрганизаций.ПричинаИзмененияСостояния <> ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение))
   |            И ДепонированныеСуммы.Физлицо = РаботникиОрганизаций.Сотрудник.Физлицо
   |
   |УПОРЯДОЧИТЬ ПО
   |    ФИОРаботника";
   
   Возврат Запрос.Выполнить().Выгрузить();

КонецФункции    


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

КонецФункции // Печать
1 mikecool
 
06.02.13
16:27
Шапка = Новый Структура;
   Шапка.Вставить("Номер",        Документ.Номер);
   Шапка.Вставить("ДатаДок",    Документ.Дата);
   Шапка.Вставить("НазваниеОрганизации", СокрЛП(Документ.Организация.НаименованиеПолное));
   
   Депоненты    = ДепонентыПоДокументу(Документ, ДепонируемыеСуммы);

что такое Документ?
2 mikecool
 
06.02.13
16:28
неужели трудно прогнать отладчиком, и потом уже постить?
3 KSG-RIB
 
07.02.13
12:57
Отладчиком погнонял. "Документ" пока еще не определил что такое. Функцию взял из оригинала документа встроенного.
4 KSG-RIB
 
08.02.13
09:34
Функция ДепонируемыеСуммыДляПечати()

   Запрос = Новый Запрос;

   // Установим параметры запроса
   Запрос.УстановитьПараметр("ДокументСсылка",   СсылкаНаОбъект);
   
   Запрос.Текст =
   "ВЫБРАТЬ
   |    ЗарплатаКВыплатеОрганизацииЗарплата.Физлицо КАК Физлицо,
   |    ДепонированиеОрганизацийДепонированиеЗаработнойПлаты.Ведомость КАК Ведомость,
   |    СУММА(ЗарплатаКВыплатеОрганизацииЗарплата.Сумма + ЗарплатаКВыплатеОрганизацииЗарплата.КомпенсацияЗаЗадержкуЗарплаты) КАК Сумма
   |ИЗ
   |    Документ.ДепонированиеОрганизаций.ДепонированиеЗаработнойПлаты КАК ДепонированиеОрганизацийДепонированиеЗаработнойПлаты
   |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗарплатаКВыплатеОрганизаций.Зарплата КАК ЗарплатаКВыплатеОрганизацииЗарплата
   |        ПО ДепонированиеОрганизацийДепонированиеЗаработнойПлаты.Ведомость = ЗарплатаКВыплатеОрганизацииЗарплата.Ссылка
   |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СведенияОВыплатахРаботникамОрганизацийПоПлатежнымВедомостям КАК РанееВыплаченныеСуммы
   |        ПО ДепонированиеОрганизацийДепонированиеЗаработнойПлаты.Ведомость = РанееВыплаченныеСуммы.Ведомость
   |            И (ЗарплатаКВыплатеОрганизацииЗарплата.Физлицо = РанееВыплаченныеСуммы.Физлицо)
   |            И (РанееВыплаченныеСуммы.Регистратор <> &ДокументСсылка)
   |ГДЕ
   |    ДепонированиеОрганизацийДепонированиеЗаработнойПлаты.Ссылка = &ДокументСсылка
   |    И ЗарплатаКВыплатеОрганизацииЗарплата.ВыплаченностьЗарплаты = ЗНАЧЕНИЕ(Перечисление.ВыплаченностьЗарплаты.Задепонировано)
   |    И РанееВыплаченныеСуммы.Физлицо ЕСТЬ NULL
   |
   |СГРУППИРОВАТЬ ПО
   |    ДепонированиеОрганизацийДепонированиеЗаработнойПлаты.Ведомость,
   |    ЗарплатаКВыплатеОрганизацииЗарплата.Физлицо";

   Возврат Запрос.Выполнить().Выгрузить();

КонецФункции // ДепонируемыеСуммыДляПечати()

Функция ДепонентыПоДокументу(Документ, ДепонируемыеСуммы = Неопределено)
   
   Запрос = Новый Запрос;

   // Установим параметры запроса
   Запрос.УстановитьПараметр("ДатаДепонирования",    Документ.Дата);
   Запрос.УстановитьПараметр("Организация",        ОбщегоНазначения.ГоловнаяОрганизация(Документ.Организация));

   Если ДепонируемыеСуммы = Неопределено Тогда
       Запрос.УстановитьПараметр("Регистратор", Документ.Ссылка);
       ТекстЗапросаДепонируемыхСумм =
       "ВЫБРАТЬ
       |    ВзаиморасчетыСДепонентамиОрганизаций.Физлицо,
       |    ВзаиморасчетыСДепонентамиОрганизаций.Ведомость,
       |    ВзаиморасчетыСДепонентамиОрганизаций.Сумма
       |ПОМЕСТИТЬ ВТДепонированныеСуммы
       |ИЗ
       |    РегистрНакопления.ВзаиморасчетыСДепонентамиОрганизаций КАК ВзаиморасчетыСДепонентамиОрганизаций
       |ГДЕ
       |    ВзаиморасчетыСДепонентамиОрганизаций.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
       |    И ВзаиморасчетыСДепонентамиОрганизаций.Регистратор = &Регистратор"
   Иначе
       Запрос.УстановитьПараметр("ДепонируемыеСуммы", ДепонируемыеСуммы);
       ТекстЗапросаДепонируемыхСумм =
       "ВЫБРАТЬ
       |    ДепонируемыеСуммы.Физлицо,
       |    ДепонируемыеСуммы.Ведомость,
       |    ДепонируемыеСуммы.Сумма
       |ПОМЕСТИТЬ ВТДепонированныеСуммы
       |ИЗ
       |    &ДепонируемыеСуммы КАК ДепонируемыеСуммы"
   КонецЕсли;
   
   Запрос.Текст =
   ТекстЗапросаДепонируемыхСумм +
   Символы.ПС +
   ";
   |
   |////////////////////////////////////////////////////////////////////////////////" +
   Символы.ПС +
   "ВЫБРАТЬ
   |    ДепонированныеСуммы.Ведомость.Номер КАК НомерВедомости,
   |    ДепонированныеСуммы.Ведомость.Дата КАК ДатаВедомости,
   |    ДепонированныеСуммы.Сумма,
   |    ЕСТЬNULL(ФИОФизЛицСрезПоследних.Фамилия + ВЫБОР
   |            КОГДА ПОДСТРОКА(ФИОФизЛицСрезПоследних.Имя, 1, 1) <> """"
   |                ТОГДА "" "" + ПОДСТРОКА(ФИОФизЛицСрезПоследних.Имя, 1, 1) + "".""
   |            ИНАЧЕ """"
   |        КОНЕЦ + ВЫБОР
   |            КОГДА ПОДСТРОКА(ФИОФизЛицСрезПоследних.Отчество, 1, 1) <> """"
   |                ТОГДА "" "" + ПОДСТРОКА(ФИОФизЛицСрезПоследних.Отчество, 1, 1) + "".""
   |            ИНАЧЕ """"
   |        КОНЕЦ, ДепонированныеСуммы.Физлицо.Наименование) КАК ФИОРаботника,
   |    РаботникиОрганизаций.Сотрудник.Код КАК ТабельныйНомер
   |ИЗ
   |    ВТДепонированныеСуммы КАК ДепонированныеСуммы
   |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ФИОФизЛиц.СрезПоследних(
   |                &ДатаДепонирования,
   |                Физлицо В
   |                    (ВЫБРАТЬ
   |                        ДепонированныеСуммы.Физлицо
   |                    ИЗ
   |                        ВТДепонированныеСуммы КАК ДепонированныеСуммы)) КАК ФИОФизЛицСрезПоследних
   |        ПО ДепонированныеСуммы.Физлицо = ФИОФизЛицСрезПоследних.ФизЛицо
   |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций.СрезПоследних(
   |                &ДатаДепонирования,
   |                Сотрудник.Физлицо В
   |                        (ВЫБРАТЬ
   |                            ДепонированныеСуммы.Физлицо
   |                        ИЗ
   |                            ВТДепонированныеСуммы КАК ДепонированныеСуммы)
   |                    И Сотрудник.ВидЗанятости <> ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.ВнутреннееСовместительство)
   |                    И Организация = &Организация) КАК РаботникиОрганизаций
   |        ПО (РаботникиОрганизаций.ПричинаИзмененияСостояния <> ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение))
   |            И ДепонированныеСуммы.Физлицо = РаботникиОрганизаций.Сотрудник.Физлицо
   |
   |УПОРЯДОЧИТЬ ПО
   |    ФИОРаботника";
   
   Возврат Запрос.Выполнить().Выгрузить();

КонецФункции    

Функция ПечатьКарточкиДепонента(СсылкаНаОбъект, ДепонируемыеСуммы = Неопределено) Экспорт

   ТабДокумент = Новый ТабличныйДокумент;
   ТабДокумент.ПолеСлева = 0;
   ТабДокумент.ПолеСправа = 0;
   ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ДепонированиеОрганизаций_КарточкиДепонента";
   
   Макет = ПолучитьМакет("КарточкаДепонента");
   
   // получаем данные для печати
   Шапка = Новый Структура;
   Шапка.Вставить("Номер",        СсылкаНаОбъект.Номер);
   Шапка.Вставить("ДатаДок",    СсылкаНаОбъект.Дата);
   Шапка.Вставить("НазваниеОрганизации", СокрЛП(СсылкаНаОбъект.Организация.НаименованиеПолное));
   
   Депоненты    = ДепонентыПоДокументу(СсылкаНаОбъект, ДепонируемыеСуммы);
   
   ОбластьМакета = Макет.ПолучитьОбласть("Карточка");
   
   // выводим общие данные
   ОбластьМакета.Параметры.Заполнить(Шапка); // Шапка документа.
   
   ВыведеноСтрок = 0;
   ВалютаРасчетов = Константы.ВалютаРегламентированногоУчета.Получить();
   // выводим данные по строкам документа.
   Для Каждого Депонент Из Депоненты Цикл
   
       ВыведеноСтрок = ВыведеноСтрок + 1;
       ОбластьМакета.Параметры.Заполнить(Депонент);
       ОбластьМакета.Параметры.НомерКарточки = "" + Шапка.Номер + "/" + ВыведеноСтрок;
       ОбластьМакета.Параметры.СуммаПрописью = ОбщегоНазначения.СформироватьСуммуПрописью(Депонент.Сумма, ВалютаРасчетов);
       ТабДокумент.Вывести(ОбластьМакета);
       
       // разбиение на страницы
       Если ВыведеноСтрок % 2 Тогда
           ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
       КонецЕсли;

   КонецЦикла;
   
   Возврат ТабДокумент

КонецФункции
 

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

КонецФункции // Пе
5 salvator
 
08.02.13
09:36
Подозреваю, что Документ надо заменить на СсылкаНаОбъект
6 mikecool
 
08.02.13
09:37
(3) замени Документ на ДокументСсылка или позови специалиста
7 mikecool
 
08.02.13
09:37
+6 а, точно, (5) :)
8 KSG-RIB
 
08.02.13
09:38
Спасибо
9 KSG-RIB
 
08.02.13
09:42
Ругается на {Документ.ДепонированиеОрганизаций.МодульМенеджера(133)}: Ошибка при вызове метода контекста (Выполнить)
   Возврат Запрос.Выполнить().Выгрузить();
по причине:
{(7, 2)}: Неверные параметры "ДепонируемыеСуммы"
<<?>>&ДепонируемыеСуммы КАК ДепонируемыеСуммы

Прична в том что  при запуске из внешней обработки  в ДепонируемыеСуммы почему-то попадает табл док,а должна табл значений .
10 Wobland
 
08.02.13
09:43
(9) и что?
11 salvator
 
08.02.13
09:43
(9) Ну так сделай из нее ТЗ. В чем проблема?
12 KSG-RIB
 
08.02.13
09:46
Спасибо за советы.
13 GANR
 
08.02.13
10:09
Почему такое вообще должно работать???

#Если Клиент Тогда
Функция ДепонируемыеСуммыДляПечати()
   Запрос = Новый Запрос;

Запросы выполняются на СЕРВЕРЕ.
14 Wobland
 
08.02.13
10:11
(13) с клиента запускается Новый Запрос. ничего особенного