Имя: Пароль:
1C
1С v8
Как в ОбщемМодуле обратиться к документу? БП3.0
0 newerruser1c
 
06.09.19
15:38
Надо сделать так, чтобы у документов СФ выданный префикс при печати убирался, а у остальных нет.

Насколько я знаю делается это в общем модуле ПрефиксацияОбъектовКлиентСервер (БП3.0).

Думаю там сделать в Функции НомерНаПечать типа того:

Если Документы.СчетФактураВыданный Тогда

...

КонецЕсли;



Но пишет не определена переменная Документы.

Я так понимаю надо задать переменную Документ, но как не пойму. Только учусь.
1 ДенисЧ
 
06.09.19
15:39
ТипЗнч
2 mikecool
 
06.09.19
15:39
в номер на печать () передается объект
3 Масянька
 
06.09.19
15:40
(0) Не плохо для начала ;)
Тебе нужно в модуле определять тип документа, но документ-то в модуль не передается.
Есть мысли?
4 newerruser1c
 
06.09.19
15:42
(3) Как уже подсказали ТипЗнч) Пойду гуглить как это)
5 Масянька
 
06.09.19
15:42
(4) Стоять!
Сам документ в модуль не передается...
Думай!
6 newerruser1c
 
06.09.19
15:44
(3) тут я, тут) не иду оке, согласен.

Ну мб примерно так?:

если ТипЗнч (Документы.СчетФактураВыданный) тогда...

Если нет, то... щас скажу
7 Масянька
 
06.09.19
15:45
(6) Щас стукну! Больно!
У тебя нет вот этого в общем модуле.
8 newerruser1c
 
06.09.19
15:46
(5) если сам документ в модуль не передается, то... Передается ссылка не него?) ну я правда хз. Щас ещё подумаю, т.к. я думаю ссылка это крайне дебильный ответ)
9 newerruser1c
 
06.09.19
15:47
(7) не стукай) сейчас скажу
10 Масянька
 
06.09.19
15:47
(8) Ну...
И что будешь везде, где вызывается общий модуль вставлять?
11 runoff_runoff
 
06.09.19
15:49
(9) лучше сюда выписать весь заголовок процедуры вместе с параметрами..
12 Масянька
 
06.09.19
15:50
(8) (9) Где здесь
Функция НомерНаПечать(Знач НомерОбъекта, УдалитьПрефиксИнформационнойБазы = Ложь, УдалитьПользовательскийПрефикс = Ложь) Экспорт
твой объект или ссылка на него?
13 sqr4
 
06.09.19
15:50
(11) Функция НомерНаПечать(Знач НомерОбъекта, УдалитьПрефиксИнформационнойБазы = Ложь, УдалитьПользовательскийПрефикс = Ложь) Экспорт
Нихера там нет и не будет. Можно конечно сделать необязательный параметр, Типа Док = неопределено и доляпать дальше. Но я бы сделал другую печатку без префикса!
14 newerruser1c
 
06.09.19
15:52
(10) я не понял вопроса) Так. Везде всм где-нибудь в других доках имеешь ввиду как я буду обращаться к общему модулю? Этого я ещё не делал просто, но логически я должен обращаться к экспортной функции
15 newerruser1c
 
06.09.19
15:53
(11) Функция НомерНаПечать(Знач НомерОбъекта, УдалитьПрефиксИнформационнойБазы = Ложь, УдалитьПользовательскийПрефикс = Ложь) Экспорт
    
    //Документ = Ссылка.СчетФактураВыданный;
    //Документы = Документы.СчетФактураВыданный;
    Док = Ссылка.ПолучитьОбъект ();
    Если Док.СчетФактураВыданный Тогда
    
    // {Обработчик: ПриПолученииНомераНаПечать} Начало
    СтандартнаяОбработка = Истина;
    
    ПрефиксацияОбъектовКлиентСерверПереопределяемый.ПриПолученииНомераНаПечать(НомерОбъекта, СтандартнаяОбработка,
        УдалитьПрефиксИнформационнойБазы, УдалитьПользовательскийПрефикс);
    
    Если СтандартнаяОбработка = Ложь Тогда
        Возврат НомерОбъекта;
    КонецЕсли;
    // {Обработчик: ПриПолученииНомераНаПечать} Окончание
    
    НомерОбъекта = СокрЛП(НомерОбъекта);
    
    // Удаляем пользовательские префиксы из номера объекта.
    Если УдалитьПользовательскийПрефикс Тогда
        
        НомерОбъекта = УдалитьПользовательскиеПрефиксыИзНомераОбъекта(НомерОбъекта);
        
    КонецЕсли;
    
    // Удаляем лидирующие нули из номера объекта.
    НомерОбъекта = УдалитьЛидирующиеНулиИзНомераОбъекта(НомерОбъекта);
    
    // Удаляем префикс организации и префикс информационной базы из номера объекта.

    
    НомерОбъекта = УдалитьПрефиксыИзНомераОбъекта(НомерОбъекта, Истина, УдалитьПрефиксИнформационнойБазы);
    
         
КонецЕсли;


    Возврат НомерОбъекта;
КонецФункции
16 newerruser1c
 
06.09.19
15:54
(12) согласен, нет. Я думал о том, чтобы сделать так:

Функция НомерНаПечать(Ссылка, Знач НомерОбъекта, УдалитьПрефиксИнформационнойБазы = Ложь, УдалитьПользовательскийПрефикс = Ложь) Экспорт

Но это же бред, да?
17 newerruser1c
 
06.09.19
15:54
Так просто же это не решается.
18 Масянька
 
06.09.19
15:55
(16) Нет, не бред.
Только
Функция НомерНаПечать(Знач НомерОбъекта, УдалитьПрефиксИнформационнойБазы = Ложь, УдалитьПользовательскийПрефикс = Ложь, Ссылка = НЕОПРЕДЕЛЕНО) Экспорт
19 Масянька
 
06.09.19
15:55
(17) И там придется еще глубже нырнуть.
Думаю, ты справишься ;)
20 Масянька
 
06.09.19
15:56
Судя по всему, налоговой попала шлея под хвост :(
21 newerruser1c
 
06.09.19
15:56
(18) Такс. Пойду пробовать и смотреть на ошибки которые вылезут) Загляните через 5 минут пожалуйста :D
22 unbred
 
06.09.19
15:57
(0) не трогай ты общий модуль. при печати перед заходом в этот модуль префикс меняй по условию. расширение воткни,или в модуле менеджера явно меняй префикс.
23 Масянька
 
06.09.19
15:58
(22) Правда? Расскажи-ка как?
24 newerruser1c
 
06.09.19
16:03
(23) ну-с, как ожидалось ошибки Значение не является значением объектного типа (ПолучитьОбъект). Следовательно нам необходимо задать значение. Как раз через ТипЗнч, нет?)

Сейчас выглядит так:

Док = Ссылка.ПолучитьОбъект ();
    Если Док.СчетФактураВыданный Тогда
25 newerruser1c
 
06.09.19
16:05
(23) не так случайно должно быть:


Док = Ссылка.ПолучитьОбъект ();
    Если ТипЗнч(Док.СчетФактураВыданный) Тогда
26 Масянька
 
06.09.19
16:05
(24) 1. Используй мСсылка. Правило (сразу приучи): не использовать в качестве имен переменных служебные слова.
2. Как передаешь? Покажи код.
27 FIXXXL
 
06.09.19
16:06
(26) эта конструкция рухнет при любом другом вызове, кроме сф :)
28 newerruser1c
 
06.09.19
16:06
(26) правило принял
29 FIXXXL
 
06.09.19
16:06
(27) ТипЗнч(Ссылка) = Тип("...") сразу используй. без получитьОбект
30 newerruser1c
 
06.09.19
16:06
(27) а добавить Иначе прокатит?
31 FIXXXL
 
06.09.19
16:07
(30) прокатит (29)
32 Масянька
 
06.09.19
16:07
(30) Не-а.
Нужно проверить на НЕОПРЕДЕЛЕНО.
33 Масянька
 
06.09.19
16:09
+ (32) Ты же сделал ссылку не обязательным параметром.
34 hhhh
 
06.09.19
16:10
(30) что-то вы бредите походу. Потому что в БП 3.0 префикс у счета фактуры при печати убирается. Это факт, никуда от этого не деться. Никаких общих модулей править не нужно.
35 newerruser1c
 
06.09.19
16:10
Я запутался, но стал на 0,01% умнее :D пойду попробую из (29)
36 newerruser1c
 
06.09.19
16:10
(34) да, он убирается. Но мне надо добавить условие, чтобы он убирался ТОЛЬКО у сф, а остальные не трогал
37 sqr4
 
06.09.19
16:11
Почему не переопределить метод в самой СФ? А другие два параметра в истину поменять не пробовали?
38 newerruser1c
 
06.09.19
16:13
(37) не пробовал. Если так ничего не получится попробую. Но для меня это больше как урок, чем задание
39 Масянька
 
06.09.19
16:14
(38)
Функция НомерНаПечать(Знач НомерОбъекта, УдалитьПрефиксИнформационнойБазы = Ложь, УдалитьПользовательскийПрефикс = Ложь, Источник = Неопределено) Экспорт
    
    // {Обработчик: ПриПолученииНомераНаПечать} Начало
    СтандартнаяОбработка = Истина;
    
    ПрефиксацияОбъектовКлиентСерверПереопределяемый.ПриПолученииНомераНаПечать(НомерОбъекта, СтандартнаяОбработка,
        УдалитьПрефиксИнформационнойБазы, УдалитьПользовательскийПрефикс);
    
    Если СтандартнаяОбработка = Ложь Тогда
        Возврат НомерОбъекта;
    КонецЕсли;
    // {Обработчик: ПриПолученииНомераНаПечать} Окончание
    
    НомерОбъекта = СокрЛП(НомерОбъекта);
    
    // Удаляем пользовательские префиксы из номера объекта.
    Если УдалитьПользовательскийПрефикс Тогда
        
        НомерОбъекта = УдалитьПользовательскиеПрефиксыИзНомераОбъекта(НомерОбъекта);
        
    КонецЕсли;
    
    // Удаляем лидирующие нули из номера объекта.
// вот тута префикс и убираем
    Если (Источник = Неопределено)      Тогда
        НомерОбъекта = УдалитьЛидирующиеНулиИзНомераОбъекта(НомерОбъекта);
    КонецЕсли;
    
    // Удаляем префикс организации и префикс информационной базы из номера объекта.
    НомерОбъекта = УдалитьПрефиксыИзНомераОбъекта(НомерОбъекта, Истина, УдалитьПрефиксИнформационнойБазы);
    
    Возврат НомерОбъекта;
КонецФункции
40 Масянька
 
06.09.19
16:14
(38) Только ты не радуйся - я уже говорила, что придется глубже залезть.
41 newerruser1c
 
06.09.19
16:18
(40) в сам док сф? или ты не про это?
42 Deon
 
06.09.19
16:19
В итоге я так и не понял, зачем менять функцию, а не написать свою отдельную?
43 sqr4
 
06.09.19
16:20
(38) тогда делай нормально, а не по-китайски сразу по такой фигне правя конфу.
44 Масянька
 
06.09.19
16:21
(41) Нет. В СФ на аванс не сработает.
Ищущий да обрящет (С)
Сам постарайся.