Имя: Пароль:
1C
1С v8
Запрос, как ссылаться на текущий документ
0 eubee
 
14.08.13
13:07
Доброго времени суток товарищи гении кода 1С =)
Конфа 1С 8.2 ЗУП
в Документе"НачислениеЗПРаботникамОрганизации" из ТЧ "Начисления" необходимо вытащить сотрудника с ВидомРасчета: "Доплата за вредные условия труда". Все вроди понятно. У меня загон с Ссылкой на текущий док.

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

Выдает ошибку:
Не удалось сформировать внешнюю печатную форму!
Итератор для значения не определен
1 Ненавижу 1С
 
гуру
14.08.13
13:09
я не вижу тут итератора
2 shuhard
 
14.08.13
13:09
(0)[ &ТекущийДокумент]
ни и где он в установке параметров ?
3 eubee
 
14.08.13
13:14
(2) Я так пологаю, это:
запрос.УстановитьПараметр("ТекущийДокумент",ТекДок);
Запрос.УстановитьПараметр("ВидРасчета1",ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоНаименованию("Доплата за вредные условия труда"));
4 Ненавижу 1С
 
гуру
14.08.13
13:14
(3) ошибка не тут, покажи свой итератор наконец
5 Fish
 
гуру
14.08.13
13:16
(3) С чего ты решил, что ругается именно на запрос?
6 Ненавижу 1С
 
гуру
14.08.13
13:18
вангую, далее по тексту:

Выборка = Запрос.Выполнить().Выбрать();
Для каждого Стр из Выборка Цикл
7 shuhard
 
14.08.13
13:23
(3) ТекДок = СсылкаНаОбъект;  - чё это , форуму не ведомо
8 PCcomCat
 
14.08.13
13:25
ТекДок = Ссылка
9 eubee
 
14.08.13
13:27
Дико извеняюсь за тормоза =)
(7)
"СсылкаНаОбъек" реквизит внешней обработке в которой вобщем то все и пишется
10 pessok
 
14.08.13
13:27
чего вы к параметрам привязались? :) у него в цикле ошибка
11 eubee
 
14.08.13
13:28
(9) Тип:ДокументСсылка.НачислениеЗарплатыРаботникамОрганизаций
12 Ненавижу 1С
 
гуру
14.08.13
13:28
(9) ты тупой или читаешь выборочно?
13 eubee
 
14.08.13
13:36
(12) Я полагаю, вы меня отправите книжки читать ибо цикл я хз как писать =)
14 pessok
 
14.08.13
13:37
(13) дай весь код процедуры уже (челодлань.пнг)
15 eubee
 
14.08.13
14:04
(14)
16 andreymongol82
 
14.08.13
14:08
(13) Ты прям провидец. Показывай весь код процедуры
17 1Сергей
 
14.08.13
14:08
(14) чело = face? не знал
18 pessok
 
14.08.13
14:09
(17) чело - это лоб :)
19 eubee
 
14.08.13
14:11
(18) сорри, с проксёй косяк, вылетал)))
20 pessok
 
14.08.13
14:12
давай нам код, проксю мы тебе чинить не будем :)
21 eubee
 
14.08.13
14:13
(14)
Функция Печать() Экспорт
    
    Если не ЗначениеЗаполнено(СсылкаНаОбъект) Тогда Возврат Неопределено КонецЕсли;    

    ТабДокумент = Новый ТабличныйДокумент;
    Макет = ПолучитьМакет("Макет");
    
    ОбластьМакетаШапка = Макет.ПолучитьОбласть("Шапка");
    СведенияОбОрганизации = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(СсылкаНаОбъект.Организация, СсылкаНаОбъект.Дата);
    ОбластьМакетаШапка.Параметры.ПредставлениеОрганизации = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОбОрганизации, "ПолноеНаименование,");
    ОбластьМакетаШапка.Параметры.Номер = СсылкаНаОбъект.Номер;
    ОбластьМакетаШапка.Параметры.Дата = Формат(СсылкаНаОбъект.Дата, "ДФ=дд.ММ.гггг") + "г.";
    
    ТабДокумент.Вывести(ОбластьМакетаШапка);
    ТабДокумент.НачатьАвтогруппировкуСтрок();
    
        
    ОбластьМакетаСтрока = Макет.ПолучитьОбласть("Строка");
    ТекДок = СсылкаНаОбъект;            
    Запрос = Новый запрос;
    Запрос.УстановитьПараметр("ТекущийДокумент",ТекДок);
    Запрос.Текст =  
                   "ВЫБРАТЬ
                   |    НачислениеЗарплатыРаботникамОрганизаций.Начисления.(
                   |        Сотрудник.Наименование,
                   |        Сотрудник.Код,
                   |        Сотрудник.ПодразделениеОрганизации,
                   |        Сотрудник.Должность,
                   |        Результат
                   |    )
                   |ИЗ
                   |    Документ.НачислениеЗарплатыРаботникамОрганизаций КАК НачислениеЗарплатыРаботникамОрганизаций
                   |ГДЕ
                   |    НачислениеЗарплатыРаботникамОрганизаций.Ссылка = &ТекущийДокумент
                   |    И НачислениеЗарплатыРаботникамОрганизаций.Начисления.ВидРасчета.Наименование = &ВидРасчета1";
                                          
    Запрос.УстановитьПараметр("ВидРасчета1",ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоНаименованию("Доплата за вредные условия труда"));
    
    Выборка = Запрос.Выполнить().Выбрать();
Для каждого СтрокаНачисления из Выборка Цикл
    ////////////////////////// Косяк тут///////////////////////////////////////////////////
    ОбластьМакетаСтрока.Параметры.СотрудникНаименование = Выборка.Получить(0).Наименование;    
    ///////////////////////////////////////////////////////////////////////////////////////
    ТабДокумент.Вывести(ОбластьМакетаСтрока);
    КонецЦикла;
    
    
    ОбластьМакетаПодвал = Макет.ПолучитьОбласть("Подвал");
    ОбластьМакетаПодвал.Параметры.Комментарий = СсылкаНаОбъект.Комментарий;
    ОтветственныеЛица = РегламентированнаяОтчетность.ОтветственныеЛицаОрганизаций(СсылкаНаОбъект.Организация, СсылкаНаОбъект.Дата, СсылкаНаОбъект.Ответственный.ФизЛицо);
    ОбластьМакетаПодвал.Параметры.ДолжностьРуководителя    = ОтветственныеЛица.РуководительДолжность;
    ОбластьМакетаПодвал.Параметры.РасшифровкаПодписиРуководителя = ОтветственныеЛица.Руководитель;
    ТабДокумент.Вывести(ОбластьМакетаПодвал);
    
    Возврат ТабДокумент;
        
КонецФункции
22 pessok
 
14.08.13
14:14
(21) теперь посмотри (6)

это абзац...
23 andreymongol82
 
14.08.13
14:14
Для каждого СтрокаНачисления из Выборка Цикл
замени на
Пока Выборка.Следующий() Цикл
24 andreymongol82
 
14.08.13
14:15
(22) Среди нас завелся реальный телепат... :)
25 pessok
 
14.08.13
14:17
+(23) просто он взял миелофон из дома, а мы поленились :) да и это было логично, тащемта.

и это, еще

ОбластьМакетаСтрока.Параметры.СотрудникНаименование = Выборка.Наименование;
26 eubee
 
14.08.13
14:18
(24) =ХDDD
Уж извените друзья что время убиваю ваше, я сис.админ, кадровичка напрегла, ну я и взялсЁ с дуру)))))
27 eubee
 
14.08.13
14:55
Ошибки нет, правдо строку пустую выводит =)
28 Ненавижу 1С
 
гуру
14.08.13
15:28
(27) в тексте запроса поправь на:

И НачислениеЗарплатыРаботникамОрганизаций.Начисления.ВидРасчета = &ВидРасчета1
Программист всегда исправляет последнюю ошибку.