Имя: Пароль:
1C
 
Отбор по Типу значений
, ,
0 Nemirov
 
14.07.20
15:48
В общих модулях есть такая функция, ее логикой пользуются много документов, но для документа заказ ее переделать немного что бы другие данные передавать. Но так как у нас ссылка документа или хотя бы тип документа не передается, то  
вот теперь вопрос такой: как сделать условие в этой функции вроде такого ( Если ТипЗначений ДокументСсылка.Заказ тогда "переделаный код" Иначе "Тот код который ниже функции представлен")? Вроде ответ кажется легким, но чет пол дня не могу доехать до него.

Функция ПолучитьКолонкаАртикулКодЗначение(Колонки,НаДату = Неопределено,Номенклатура,ЕдиницаИзмерения = Неопределено,Контрагент = Неопределено,Договор = Неопределено,Характеристика = Неопределено,АртикулПоставщика="",ЗаменаДляОтчетов="") Экспорт
    
    Результат            = "";

    
    Если Колонки.Код Тогда
        Результат        = Результат+?(Результат="","","/")+Номенклатура.Код;
    КонецЕсли;
    Если Колонки.Артикул Тогда
        Результат        = Результат+?(Результат="","","/")+Номенклатура.Артикул;
    Иначе
        Результат ="";
    КонецЕсли;
    Если Колонки.ШтрихКод Тогда
        Если ЗначениеЗаполнено(Характеристика) И ОбщегоНазначения.ПолучитьЗначениеРеквизита(Номенклатура,"ВестиУчетПоХарактеристикам") Тогда
            ШтрихКод = ОмШтриховыеКоды.ПолучитьШтрихКод(Номенклатура,Характеристика,ЕдиницаИзмерения);
        Иначе
            ШтрихКод    = ОмРаботаСоСвойствамиОбъектов.ПолучитьЗначениеСвойстваОбъекта(Номенклатура,ПланыВидовХарактеристик.СвойстваОбъектов.ОсновнойШК);
        КонецЕсли;

        Результат        = Результат+?(Результат="","","/")+ШтрихКод;
    КонецЕсли;    
    АртикулНаименованиеПоставщика=ПолучитьАртикулНаименованиеПоставщика(НаДату,Номенклатура,ЕдиницаИзмерения,Контрагент,Договор,Характеристика,Колонки.АртикулПоставщика,Колонки.НаименованиеПоставщика);
    Если АртикулНаименованиеПоставщика<>"" Тогда
    Результат        = Результат+?(Результат="","","/")+АртикулНаименованиеПоставщика;

        
        Результат        = Результат+?(Результат="","","/")+АртикулНаименованиеПоставщика;
    КонецЕсли;
    
    Если Колонки.ИДВнешнейСистемы Тогда
        Результат        = Результат+?(Результат="","","/")+Номенклатура.ИДВнешнейСистемы;
    КонецЕсли;     
    
    Возврат ?(ЗаменаДляОтчетов<>"",ЗаменаДляОтчетов,Результат);        
    
КонецФункции
1 Nemirov
 
14.07.20
15:49
1с предприятие 8.3. форма обычная.
2 unbred
 
14.07.20
15:50
у тебя решение в вопросе есть ТипЗнч()
3 Nemirov
 
14.07.20
15:52
(2) что мне передать в типзнач()?
4 unbred
 
14.07.20
15:53
передай туда ctrl+f1
5 Nemirov
 
14.07.20
15:53
(4) Очень смешно
6 acht
 
14.07.20
15:56
(5) Он тебя обманывает, Alt+F4 попробуй
7 unbred
 
14.07.20
15:56
8 Nemirov
 
14.07.20
16:03
(7) Да блин вы хотя бы код посмотрите если хотите помочь, откуда я объект для сравнения возьму там только переменные номенклатура, характеристика и договор передаются в этой функции?! Что мне сравнивать? Номенклатуру или справочник.договор )))) Я видел это уже просмотрел. Везде передается переменная, а у меня ее нет! В это и вся сложность!
9 hhhh
 
14.07.20
16:08
(8) ну передай тогда туда то, что нужно. А лучше создай отдельную функцию для этих целей, а эту функцию не трогай.
10 acht
 
14.07.20
16:09
(8) Так если у тебя ее нет, откуды ты сам знаешь, что это заказ?
11 Сияющий Асинхраль
 
14.07.20
16:09
Ну значит передавай в эту функцию еще и признак, чтобы внутри можно было определить какой код тебе нужен, типовой или переданный...
12 Nemirov
 
14.07.20
16:15
(11) ТОгда в остальных документах код менять надо будет
13 Fedor-1971
 
14.07.20
16:15
(0) Функция ПолучитьКолонкаАртикулКодЗначение(Колонки,НаДату = Неопределено,Номенклатура,ЕдиницаИзмерения = Неопределено,Контрагент = Неопределено,Договор = Неопределено,Характеристика = Неопределено,АртикулПоставщика="",ЗаменаДляОтчетов="", Я_Вызвал_Из_Заказа = Неопределено) Экспорт

Если НЕ Я_Вызвал_Из_Заказа = Неопределено тогда
   МойНовыйКод()
КонецЕсли;

Отладчиком остановись в функции и посмотри на параметры, может, где-то есть Ссылка или ещё что-нить, для определения типа документа
14 Nemirov
 
14.07.20
16:16
(10) Вызывается печатная форма в документе заказ и из этой функции в параметр макета передается значение на выходе из этой функции.
15 Nemirov
 
14.07.20
16:17
(13) Спасибо, но придется в каждом документе дописывать описание.
16 Fedor-1971
 
14.07.20
16:17
(12) не надо, это необязательный параметр.
Только смотри, при обновлении не грохни
17 Nemirov
 
14.07.20
16:17
(9) Спасибо как вариант.
18 Nemirov
 
14.07.20
16:17
(16) Спасибо
19 Сияющий Асинхраль
 
14.07.20
16:18
(12) Не надо. Вот твоя функция:

Функция ПолучитьКолонкаАртикулКодЗначение(Колонки,НаДату = Неопределено,Номенклатура,ЕдиницаИзмерения = Неопределено,Контрагент = Неопределено,Договор = Неопределено,Характеристика = Неопределено,АртикулПоставщика="",ЗаменаДляОтчетов="") Экспорт

Обрати внимание, что ее реквизиты определенные по умолчанию:

АртикулПоставщика="",ЗаменаДляОтчетов=""

при вызове могут быть НЕОПРЕДЕЛЕНЫ. т.е. ты можешь добавить в функцию предопределенный реквизит и он никак не повлияет на уже имеющиеся вызовы...
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший