Имя: Пароль:
1C
1С v8
Ошибка внешней печатной формы
0 Cоляпсус
 
28.09.17
17:11
Здравствуйте, застрял с печатной формой. Так как опыта не так много, не знаю как решить проблему, может кто-то подскажет.
В ЗКБУ 1.0 встала задача изменить формируемые значения в печатной форме. Так как конфа на поддержке, добавляю доп печатную форму. Нашёл где формируется код (общий модуль) и скопировал код оттуда. Всё вроде поправил но застрял на вот какой ошибке:
{ВнешняяОбработка.ПредоставлениеОтпуска.МодульОбъекта(122,173)}: Ожидается выражение
        ПечатьРасчетаСреднегоЗаработка(МассивОбъектов, ОбъектыПечати,ДокументСсылка, ДатаСобытия, ПродолжительностьРасчетногоПериода, ОписаниеОплачиваемогоПериода, СпособРасчета,<<?>> Знач ИспользоватьСреднеЧасовойЗаработок = Неопределено , СписокСоставляющихСреднегоЗаработка = Неопределено, ВыводитьЗаголовок = Истина, ОтражатьДолюВремени = Истина, СтруктураПоказателей = Неопределено) (Проверка: Толстый клиент (обычное приложение))
Не понимает она <<?>> Знач ИспользоватьСреднеЧасовойЗаработок. Подскажите что предпринять.
Заранее благодарю
1 rabbidX
 
28.09.17
17:18
"ПечатьРасчетаСреднегоЗаработка(МассивОбъектов, ОбъектыПечати,ДокументСсылка, ДатаСобытия, ПродолжительностьРасчетногоПериода, ОписаниеОплачиваемогоПериода, СпособРасчета,<<?>> Знач ИспользоватьСреднеЧасовойЗаработок = Неопределено , СписокСоставляющихСреднегоЗаработка = Неопределено, ВыводитьЗаголовок = Истина, ОтражатьДолюВремени = Истина, СтруктураПоказателей = Неопределено)"
Это у тебя объявление процедуры или вызов?
2 Cоляпсус
 
28.09.17
17:19
Мммм(((, функция где формируется табдок
3 Cоляпсус
 
28.09.17
17:21
в типовой работает, а при попытке переноса в печатную форму ругается, что-то я не так делаю, никак не пойму где исправить
4 Lexey_
 
28.09.17
17:23
(2) почему ты из двух вариантов выбрал третий?
5 rabbidX
 
28.09.17
17:25
Давай так попробуем:
Скопируй 121 и 122 строку модуля объекта внешней обработки
6 Cоляпсус
 
28.09.17
17:29
(5) не понял честно говоря, строки могут быть любыми
7 Cоляпсус
 
28.09.17
17:30
(4)какой третий вариант? о выборе внешней печатной формы?
8 Numerus Mikhail
 
28.09.17
17:30
(6) как это строки могут быть любыми? динамически собираемая обработка?)
9 rabbidX
 
28.09.17
17:31
(6) Не спорю, скопируй те, которые есть сейчас.
10 Cоляпсус
 
28.09.17
17:32
(6)Нет обработка не динамически собирается
11 Cоляпсус
 
28.09.17
17:34
(9)всё равно не понимаю зачем копировать то и куда их копировать? Это же внешняя обработка и 121 и 122 строки попадают в тело запроса
12 rabbidX
 
28.09.17
17:36
(11) Сюда копировать
13 Cоляпсус
 
28.09.17
17:38
это пожалуйста, как бумага здесь всё стерпит, но зачем же именно 121 и 122
ИНАЧЕ """"
КОНЕЦ + ФИОФизЛицСрезПоследних.Фамилия, ОтветственныеЛицаСрезПоследних.НаименованиеФизлица) КАК НаименованиеОтветственногоЛица,
14 Numerus Mikhail
 
28.09.17
17:40
(13) А если пойти другим путем. Можешь привести кусок кода +- 5 строк, где вываливается эта ошибка из (0)? Чтобы мы хоть чуть-чуть понимали, что происходит
15 Cоляпсус
 
28.09.17
17:41
121 и 122 строка модуль объекта внешней печатной формы или я чтото не понимаю?))) Точнее я точно не понимаю как исправить ошибку, но это не позор,а временное неудобство изза малоопытности.
16 Cоляпсус
 
28.09.17
17:41
Сейчас
17 Cоляпсус
 
28.09.17
17:43
Функция ПечатьРасчетаСреднегоЗаработка(МассивОбъектов, ОбъектыПечати,ДокументСсылка, ДатаСобытия, ПродолжительностьРасчетногоПериода, ОписаниеОплачиваемогоПериода, СпособРасчета, Знач ИспользоватьСреднеЧасовойЗаработок = Неопределено , СписокСоставляющихСреднегоЗаработка = Неопределено, ВыводитьЗаголовок = Истина, ОтражатьДолюВремени = Истина, СтруктураПоказателей = Неопределено) Экспорт
    
    Если Не ЗначениеЗаполнено(ДокументСсылка) Тогда
        Возврат Новый ТабличныйДокумент
    КонецЕсли;
    
    МетаданныеДокумента = ДокументСсылка.Метаданные();
    Попытка
        ИмяИсточникаДанных = МетаданныеДокумента.Имя;
    Исключение
        Возврат Новый ТабличныйДокумент
    КонецПопытки;
    
    ТабДокумент = Новый ТабличныйДокумент;
    ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
    ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_РасчетСреднегоЗаработка";
    
    Макет = ПолучитьОбщийМакет("РасчетСреднегоЗаработка");
    
    СекцияШапка = Макет.ПолучитьОбласть("Шапка");
    СекцияЗаголовокНачислений = Макет.ПолучитьОбласть("ЗаголовокНачислений");
    СекцияЗаголовокРабочегоМеста = Макет.ПолучитьОбласть("ЗаголовокРабочегоМеста");
    СекцияМесячныйЗаработок = Макет.ПолучитьОбласть("МесячныйЗаработок");
    СекцияСерединаОтчета = Макет.ПолучитьОбласть("СерединаОтчета");
    СекцияДоляВремени = Макет.ПолучитьОбласть("ДоляВремени");
    СекцияЗаголовокПремий = Макет.ПолучитьОбласть("ЗаголовокПремий");
    СекцияПремии = Макет.ПолучитьОбласть("Премии");
    СекцияПодвал = Макет.ПолучитьОбласть("Подвал");
    
    Запрос = Новый Запрос;
    
    // Установим параметры запроса
    Запрос.УстановитьПараметр("ДокументСсылка",            ДокументСсылка);
    Запрос.УстановитьПараметр("ДатаНачалаСобытия",        ДатаСобытия);
    Запрос.УстановитьПараметр("ИспользоватьСреднеЧасовойЗаработок", ИспользоватьСреднеЧасовойЗаработок);
    Запрос.УстановитьПараметр("Регистратор",            ДокументСсылка);
    Запрос.УстановитьПараметр("СпособРасчета",            СпособРасчета);
    Запрос.УстановитьПараметр("ОсновнойЗаработокНеиндексируемый", ПланыВидовРасчета.СреднийЗаработок.ПоЗаработкуНеИндексируемые);

и это не единственное обращение к параметру, там просто очень большой код, скопированный из общего модуля типовой конфы
18 Lexey_
 
28.09.17
17:47
(7) тебя спросили: тёплый или холодный? А ты ответил мягкий
19 FIXXXL
 
28.09.17
17:48
(17) а зачем ты ее вообще скопировал, вместо того, что бы просто вызвать и получить результат в модуле твоей обработки?
20 rabbidX
 
28.09.17
17:48
В (17) Знач начинается со 181 символа а в (0) со 173. Где-то ты нас дуришь.
21 Cоляпсус
 
28.09.17
17:49
Подозреваю, вы уж извините, я не со зла)), просто я не совсем понял (4), что значит третий, а какой первый и второй
22 rabbidX
 
28.09.17
17:52
(21) да пофиг, забей. У тебя в 122 строке написано

ПечатьРасчетаСреднегоЗаработка(МассивОбъектов, ОбъектыПечати,ДокументСсылка, ДатаСобытия, ПродолжительностьРасчетногоПериода, ОписаниеОплачиваемогоПериода, СпособРасчета,<<?>> Знач ИспользоватьСреднеЧасовойЗаработок = Неопределено , СписокСоставляющихСреднегоЗаработка = Неопределено, ВыводитьЗаголовок = Истина, ОтражатьДолюВремени = Истина, СтруктураПоказателей = Неопределено)

А слова "Функция" перед этой трататой нет. Исправляй.
23 Cоляпсус
 
28.09.17
17:53
))) Ну я не то чтобы дурю, но есть чуть, просто одну я написал где использовал шаблон (122,173)}, а второй раз прислал, это где я не по шаблону делал а сам с нуля (15,172)}
поэтому так получилось
24 Cоляпсус
 
28.09.17
17:54
(21) ну почему, это тратата и есть функция
25 Cоляпсус
 
28.09.17
18:02
эх гонят домой, но если вдруг не все против, спрошу ещё раз завтра ,спасибо всем за содействие)
26 Cоляпсус
 
29.09.17
10:16
Доброе утро. Вынужден повториться, так как решения пока не нашёл.
Есть типовая конфа ЗКБУ 1.0 там есть типовая печатная форма
"Расчёт среднего основного отпуска", заказчик решил что в ячейке он хочет видеть другое значение. Так как конфа на полной поддержке, решил добавить дополнительную внешнюю печатную форму (хотя только сейчас подумал, а какие ещё есть выходы), и вот создал по шаблону печатную форму, нашёл код в общем модуле где формируются значения данной формы, код скопировал, поправил разные огрешности в связи с копированием, но застрял на одной ошибке и не пойму как поправить, чтобы не ругалась.
{ВнешняяОбработка.ПредоставлениеОтпуска.МодульОбъекта(122,173)}: Ожидается выражение        ПечатьРасчетаСреднегоЗаработка(МассивОбъектов, ОбъектыПечати,ДокументСсылка, ДатаСобытия, ПродолжительностьРасчетногоПериода, ОписаниеОплачиваемогоПериода, СпособРасчета,<<?>> Знач ИспользоватьСреднеЧасовойЗаработок = Неопределено , СписокСоставляющихСреднегоЗаработка = Неопределено, ВыводитьЗаголовок = Истина, ОтражатьДолюВремени = Истина, СтруктураПоказателей = Неопределено) (Проверка: Толстый клиент (обычное приложение))

Заранее благодарю
27 Lexey_
 
29.09.17
10:20
(26) ты вместо вызова процедуры используешь текст из ее объявления
28 Cоляпсус
 
29.09.17
10:45
ссори за вопрос, а как поправить?
29 Lexey_
 
29.09.17
10:48
(28) а посмотри как в других местах используется
30 Cоляпсус
 
29.09.17
10:53
(29) Хм, этот параметр используется только в рамках этой функции,
31 Lexey_
 
29.09.17
10:55
(30) я про процедуру, а не параметр
32 Cоляпсус
 
29.09.17
10:59
Не понимаю
33 Cоляпсус
 
29.09.17
12:35
Сообразил поправил.
Осталось только поправить ещё маленький огрех.
В Процедуре Печать, есть метод
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "НачислениеОтпуска") Тогда
и конечно система ругается
{ВнешняяОбработка.ПредоставлениеОтпуска.МодульОбъекта(113,7)}: Переменная не определена (УправлениеПечатью)
    Если <<?>>УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "НачислениеОтпуска") Тогда (Проверка: Толстый клиент (обычное приложение))
вот сейчас не пойму, необходимо определить переменную или это как-то связано с клиентским или серверным вызовом?
Заранее благодарен.
34 Cоляпсус
 
29.09.17
12:37
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода = Неопределено)  экспорт
    
    ПараметрыВывода.ДоступнаПечатьПоКомплектно = Истина;
    
    Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "НачислениеОтпуска") Тогда
        
        ДокументСсылка     = МассивОбъектов[0];
        ДатаСобытия        = ДокументСсылка.ДатаСобытия;
        ПродолжительностьРасчетногоПериода  =  ДокументСсылка.ПродолжительностьРасчетногоПериода;
        ОписаниеОплачиваемогоПериода = ДокументСсылка.ОписаниеОплачиваемогоПериода;
        СпособРасчета = ДокументСсылка.СпособРасчета;
        
        УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
        КоллекцияПечатныхФорм,
        "НачислениеОтпуска", //тот же - что и в функции "СведенияОВнешнейОбработке"!
        "Начисление отпуска при печати комплектом",
        //СформироватьПечатнуюФорму1(МассивОбъектов, ОбъектыПечати)//исполняющая функция (в этом же модуле)
        ПечатьРасчетаСреднегоЗаработка(ДокументСсылка, ДатаСобытия, ПродолжительностьРасчетногоПериода, ОписаниеОплачиваемогоПериода, СпособРасчета) //, Знач ИспользоватьСреднеЧасовойЗаработок = Неопределено , СписокСоставляющихСреднегоЗаработка = Неопределено, ВыводитьЗаголовок = Истина, ОтражатьДолюВремени = Истина, СтруктураПоказателей = Неопределено)
);
КонецЕсли;
    
КонецПроцедуры
35 SleepyHead
 
гуру
29.09.17
12:55
(0) "В ЗКБУ 1.0 встала задача изменить формируемые значения в печатной форме."

А ничего, что эти значения (возможно!) не будут стыковаться с фактическим расчетом среднего в документе?
36 Cоляпсус
 
29.09.17
13:00
Да там ячейки не затрагивающие расчёты, скорее видимость представления например не "премия за 3 мес", а хотят чтобы была "Годовая премия", но всё равно формируется из значений и менять нужно
37 SleepyHead
 
гуру
29.09.17
13:04
(36) Ну вот как-то изменение количества месяцев в премии это нифига не косметическое изменение.
38 SleepyHead
 
гуру
29.09.17
13:07
Если речь идет о видимости представления, то вопрос - пробовали менять макеты печатных форм?

Раздел "Администрирование", "Печатные формы, отчеты и обработки" - "Макеты печатных форм"

Фильтруйте по "Печать расчета среднего заработка" в колонке "Владелец макета".
39 Cоляпсус
 
29.09.17
13:17
)) где бы в единичке ещё найти Раздел "Администрирование", "Печатные формы, отчеты и обработки" - "Макеты печатных форм"
нет такого, в лучшем случае "Сервис", но сейчас поищу где бы это могло находиться
40 SleepyHead
 
гуру
29.09.17
13:19
Точно, я балда. Не посмотрел версию.
41 Cоляпсус
 
29.09.17
13:53
В единичке только через внешнюю можно реализовать(насколько я понимаю), поэтому (33) всё ещё актуальный вопрос
42 Cоляпсус
 
29.09.17
14:17
Извиняюсь, но снова вынужден не повториться
Осталось только поправить ещё маленький огрех.
В Процедуре Печать, есть метод
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "НачислениеОтпуска") Тогда
и конечно система ругается
{ВнешняяОбработка.ПредоставлениеОтпуска.МодульОбъекта(113,7)}: Переменная не определена (УправлениеПечатью)
    Если <<?>>УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "НачислениеОтпуска") Тогда (Проверка: Толстый клиент (обычное приложение))
вот сейчас не пойму, необходимо определить переменную или это как-то связано с клиентским или серверным вызовом?
Заранее благодарен.
43 dezss
 
29.09.17
14:33
Стесняюсь, но все таки спрошу.
А ты кто по образованию, не геолог случайно?)
44 dezss
 
29.09.17
14:33
(43) + ну или может геодезист
45 FIXXXL
 
29.09.17
14:34
(44) или бетонщик :)
46 Cоляпсус
 
29.09.17
16:01
Не стесняйся, экономист, но волей случая пришлось переквалифицироваться и менять направление деятельности. И в этом нет ничего такого и даже если бы был бетонщик, так наоборот бы порадовались за парня, что новых знаний набирается.... или даже геодезист, всё равно это не меняет дело...
47 dezss
 
29.09.17
16:23
(46) просто был тут один геодезист...
а чтоб переквалифицироваться, надо хотя бы какие-то базовые вещи изучить. Про область видимости и жизни сущностей(в частности переменных) и т.п.
Думаешь, 5 лет в универе (а сейчас даже 6, вроде) люди просто так сидят, а не учатся программированию?
А чтобы переквалифицироваться, надо пройти обучение. На конкретные вопросы тут отвечают, но если спрашивают про такую базовую вещь как "Переменная не определена", то ответить просто нечего. Ну не определена она, значит в этой области кода ее нет.
48 Cоляпсус
 
29.09.17
17:59
(47) Думаешь я не учился и не продолжаю учится и днём и кстати иногда ночами? Объем большой всё сразу освоить просто мозгу не возможно. Поэтому и спрашиваю. Если лень отвечать, просто не ввязвывайся в переписку, а остальные мнения и домыслы не конструктивны и не красят не с какой стороны.
А что переменная не определена в данной области я и так вижу, просто не пойму как это исправить, необходимо переменную присваивать или это с серверными или клиентскими вызовами связано. Не у меня , но это так работало, у меня не работает. пытаюсь выяснить почему, вот и всё...
49 PiotrLoginov
 
29.09.17
22:45
(48) *не красят НИ с какой стороны

Вот не верю, что Вы нечаянно опечатались. Наверняка, искренне полагаете, что частицу употребили правильно.

...

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

И совсем другое дело, когда Вы не демонстрируете ни аккуратности, ни методичности, ни логики, а только невежество и высокомерие, даже во время запроса помощи не забывая назидательно поправить собеседника. Так вот Вам ответочка :)