Имя: Пароль:
1C
Юмор
Запрос по видам(типам) метаданных (справочники и документы)
0 ivangrant
 
24.04.19
07:12
Создаю внешнуюю обработку.
Как можно настроить по нажатию на кнопки, чтобы отдельно выгрузились нужные Справочники,либо отдельно нужные Документы?
1 Мимохожий Однако
 
24.04.19
07:17
Краткость-сестра Таланта. Но не всегда.
2 Jonny_Khomich
 
24.04.19
07:38
в 1с встроена процедура ВыгрузиПожалуйстаНужныеСправочникиЛибоДокументы()
3 catena
 
24.04.19
07:41
Как связана тема и вопрос?
4 Автосервис
 
24.04.19
07:51
(0) Жмешь на кнопку "Настроить", добавляешь префиксы и жмешь на кнопку "Выгрузить"
P.S. Какой вопрос, такой и ответ XD
5 ivangrant
 
24.04.19
08:35
Такое вообще возможно?
По коду обработка не работает.

[code]
Запрос=Новый Запрос;
Текст="";
Для Каждого Документ Из Метаданные.Документы Цикл
    Текст=Текст+"ВЫБРАТЬ Ссылка ИЗ Документ."+Документ.Имя+" ОБЪЕДИНИТЬ ";
КонецЦикла;
Запрос.Текст=Лев(Текст,СтрДлина(Текст)-СтрДлина(" ОБЪЕДИНИТЬ "));
Выборка=Запрос.Выполнить().Выбрать();
[/code]
6 catena
 
24.04.19
08:40
(5)"Не работает" как? Бастует? Пишет чего или в молчанку играет?
7 ivangrant
 
24.04.19
08:51
(6)
Дописал код.
Но отладчик проходит по всем документам. Но не их типам.
Нужно, чтобы выборка была только по типам документов.

[code]
&НаСервере
Процедура ЗаполнитьДокументыНаСервере()
        
Запрос=Новый Запрос;
Текст="";
Для Каждого Документ Из Метаданные.Документы Цикл
    Текст=Текст+"ВЫБРАТЬ Ссылка ИЗ Документ."+Документ.Имя+" ОБЪЕДИНИТЬ ";
КонецЦикла;
Запрос.Текст=Лев(Текст,СтрДлина(Текст)-СтрДлина(" ОБЪЕДИНИТЬ "));
Выборка=Запрос.Выполнить().Выбрать();  
    
    Объект.Список.Очистить();
    Пока Выборка.Следующий() Цикл
        
        Список_ = Объект.Список.Добавить();
        Список_.НаименованиеОбъекта = Документ.Имя;
        Список_.ТипОбъекта = Документ.ТипОбъекта;
        
    КонецЦикла;
        
КонецПроцедуры
[/code]
8 Serg_1960
 
24.04.19
09:02
"Нужно, чтобы выборка была только по типам документов."
Сколько ни повторяй "халва" во рту слаще не станет.
Пока на примере не объясните что Вы в результате хотите получить - Вы обречены на монолог.
9 НЕА123
 
24.04.19
09:02
>Нужно, чтобы выборка была только по типам документов
делай.
10 ivangrant
 
24.04.19
09:07
(8)
Есть список документов:
РасходнаяНакладаня
ПриходнаяНакладная
Сборка
и т.д.

Есть список справочников:
Склады
Номенклатура
и т.д.

Создаю внешнюю обработку, в список которой можно было загрузить по нажатию на кнопку "Загрузить Документы" или другую кнопку "Загрузить Справочники", после чего в табличную часть добавляются список Документов: РасходнаяНакладная, ПриходнаяНакладная.
Далее нажимаем кнопку "Добавить Префикс", и в код всех документов РасходнаяНакладная добавляется префикс.
____
Соответственно нужно запросом выбирать необходимые типы Документов: например только РасходнаяНакладная, или ПриходнаяНакладная и добавлять префиксы.
11 Йохохо
 
24.04.19
09:12
УниверсальныеПодборИОбработкаОбъектов.epf возьми с итс
12 ivangrant
 
24.04.19
09:26
(11) Он есть у меня. Заказчику не нравится)) очень много документов приходится обрабатывать, поэтому нужен более простой вариант.
Код для замены Префикса я оттуда возьму.
Но как выбирать из нужно списка Документы или Справочники - остаётся большим вопросом.
13 Serg_1960
 
24.04.19
09:44
Бедный, бедный Ваш "заказчик" - как ему крупно не повезло :)
Если я Вас правильно понял:

Объект.Список.Очистить();
Для Каждого Документ Из Метаданные.Документы Цикл
   Запрос = Новый Запрос("ВЫБРАТЬ КОЛИЧЕСТВО(ТекДок.Ссылка) КАК Количество ИЗ Документ." + Документ.Имя + " КАК ТекДок");
   Выборка = Запрос.Выполнить().Выбрать();
   Выборка.Следующий();
   Если Выборка.Количество > 0 Тогда
      Строка = Объект.Список.Добавить;
      Строка.НаименованиеОбъекта = Документ.Имя;
      Строка.ТипОбъекта = Документ.ТипОбъекта;
   КонецЕсли;
КонецЦикла;
14 ivangrant
 
24.04.19
10:03
(13) ну вы тоже не сразу ходить начали)
_____
Спасибо за подсказку. Но ваш код не выводит данные в таблицу.
У меня немного покороче, но тоже пустая табличная часть :(

Для Каждого Документ Из Метаданные.Документы Цикл
    
    
    Список_ = Объект.Список.Добавить();
    Список_.НаименованиеОбъекта = Метаданные.Документы;
        
КонецЦикла;
15 _Дайвер_
 
24.04.19
10:53
(14) Отладчик для кого придумали!?

Для Каждого Документ Из Метаданные.Документы Цикл
    
    НоваяСтрока = Объект.Список.Добавить();
    НоваяСтрока.НаименованиеОбъекта = Документ.Имя;
        
КонецЦикла;
16 ivangrant
 
24.04.19
11:03
(15) так я при помощи отладчика и делал))
У меня немного подругому итог получился.
&НаСервере
Процедура ЗаполнитьДокументыНаСервере()    
        
Для Каждого Документ Из Метаданные.Документы Цикл
    
    Список_ = Объект.Список.Добавить();
    Список_.НаименованиеОбъекта = Документ;
        
КонецЦикла;
        
КонецПроцедуры

Теперь вопрос: можно ли запросом определить нужные типы документов для выгрузки (некий програмный фильтр) ?
17 hhhh
 
24.04.19
11:27
(16) так вы же уже делаете в (5)
18 ivangrant
 
24.04.19
11:33
(17) Пробовал. Этот запрос полностью отбирает все документы. Но не выборочно.
19 catena
 
24.04.19
11:36
(18)Ну так добавьте туда условие.
20 Rie
 
24.04.19
11:38
(17) А что такое "нужные документы"? Где хранится их список?
21 Garykom
 
гуру
24.04.19
11:42
А запросы по текстам/коду модулей конфы еще нельзя делать?
22 ivangrant
 
24.04.19
12:23
(19) а вот здесь проблема. Не могу добавить условие без отдельно выбранных документов. Конструктор запроса не даёт так сделать.
(20) еслть например типы документов: расходные накладные, приходные накладные, заказ поставщика и т.д. То нужные документы - это выборочные типы документов (например, только Заказ Поставщика и Расходнаые Накладные).
(21) ого! А это как? Чего то в нете не могу примерова найти :(
23 Rie
 
24.04.19
12:27
(22) "Выборочные" - это прекрасно. Где хранится этот список выбранных, кроме как в межушной нейросети?
Циклы в вышеприведенном коде выбирали вообще _все_ виды документов - и включали их в запрос.
Если включать в запрос только выбранные виды документов (обходя не метаданные, а тот список, где эти выбранные хранятся), то может наступить счастье.
24 catena
 
24.04.19
12:40
(22)Чего?
Выбирай не из всех метаданных, а из массива выбранных.
25 ivangrant
 
24.04.19
13:28
(24)
Что-то типа такого?
&НаСервере
Функция МассивИменРеквизитовОбъекта(Объект)
        МассивИменРеквизитов = Новый Массив;
                  
            МетаданныеОбъекта = Метаданные.НайтиПоТипу(ТипЗнч(Объект));
                      
        Для индекс = 0 по 1 Цикл
            КоллекцияРеквизитов = ?(индекс=0, МетаданныеОбъекта.СтандартныеРеквизиты, МетаданныеОбъекта.Реквизиты);
            Для каждого Реквизит из КоллекцияРеквизитов Цикл
                МассивИменРеквизитов.Добавить(Реквизит.Имя);
            КонецЦикла;
        КонецЦикла;
        
        Для Каждого ТабличнаяЧасть Из Объект.Метаданные().ТабличныеЧасти Цикл
        Для Каждого РеквизитТЧ ИЗ ТабличнаяЧасть.Реквизиты Цикл
                   МассивИменРеквизитов.Добавить(РеквизитТЧ.Имя);
            Сообщить(" - " + РеквизитТЧ.Имя);
        КонецЦикла;
    КонецЦикла;
    
        Возврат МассивИменРеквизитов;
    КонецФункции
26 hhhh
 
24.04.19
13:37
(25) нет,метаданные вам не нужны. Типа

МассивВыбранных = Новый Массив;
МассивВыбранных.Добавить("ПриходнаяНакладная");
МассивВыбранных.Добавить("РасходнаяНакладная");
27 ivangrant
 
24.04.19
13:54
(26) Точно!! )
Но это же получсется строковое значение.
В смысле, к самим документам не имеет отношения, кроме как названия. Соответственно, далее я не смогу, в выбранных документах через массив, поменять префиксы. Или я ошибаюсь?
28 Rie
 
24.04.19
14:22
(27) Далее на основании этого построите запрос похожий на (7), который выдаст кучу ссылок на документы, при помощи которых получите объекты документов, в которых поменяете префиксы.
29 DrWatson
 
24.04.19
14:40
(27) У Вас в (7) есть первый цикл который перебирает все документы. Примените этот цикл лучше для заполнения списка значений, который будет выводится на форме и пользователь поставит в нем галки. Вот это и будут те самые "выбранные". В (7) же цикл по всем метаданным заменить на обход этого списка с проверкой галки.
30 ivangrant
 
24.04.19
15:11
(29)
[quote]
Примените этот цикл лучше для заполнения списка значений, который будет выводится на форме и пользователь поставит в нем галки.
[/quote]
Не не не.
Только не галки (((
Там свыше 30 документов и справочников, устанут щёлкать.
31 ivangrant
 
24.04.19
15:27
В общем наковырял я что-то с базой и обработкой. Теперь в справочнике Склады, при создании нового склада, код начинается с префикса уже изменённых складов.
Где искать заковыку? Это значит обработка что-то переписала у меня в базе?
32 DrWatson
 
24.04.19
15:47
(30) А в чем тогда смысл этих "нужных" справочников и документов?
Если их список фиксированный, заранее известный, то можно и запрос сразу готовый прописать, а не формировать его по метаданным. Если нужно чтобы пользователь мог выбирать что ему нужно в данный момент, то список хороший простой вариант (удобнее будет дерево).
Надо было написать как должна выглядеть обработка сточки зрения заказчика/пользователя.
33 ivangrant
 
24.04.19
15:57
(32) Да там сам клиент не знает, как должна выглядеть.
По факту должна быть обработка с визуальной частью - где выводился список всех типов документов нужных.
ТЕОРЕТИЧЕСКИ, можно и без этого. С одной кнопкой: "Обновить Префиксы". Но я пока сообразил только на первый вариант )
Со списком и галкам есть уже готовые обработки на ИнфоСтарте. Они точно не подходят + там их покупать надо, а учетка не из дешёвых(
34 DrWatson
 
24.04.19
16:05
(33) В любом случае перед тем как что-то делать нужно представить как это должно выглядеть.
Вывелся список типов на форме и что дальше, зачем он там нужен?
(31) Вероятно она коды элементов и переписала. Достаточно один раз забить номер больше текущего, чтобы нумератор его запомнил и выдавал дальше номера от этого номера. Номера с "префиксами" есть с справочнике складов?
35 ivangrant
 
25.04.19
06:38
(34) "Номера с "префиксами" есть с справочнике складов?"
А где это посмотреть?
В Предприятии они с новыми кодаим идут, и если новый склад создаю, то тоже у же с новым кодом (добавленный префикс) идут.
36 catena
 
25.04.19
06:44
(35)Платформа при формировании нового номера берет максимальный номер и увеличивает на 1. Если префиксации не прописано при создании, то префикс по правилам сортировки строк будет во всех следующих номерах.
37 ivangrant
 
25.04.19
07:24
(36) спасибо. Теперь понятно.
38 ivangrant
 
26.04.19
11:55
Итак, сейчас в ТЧ заполняются названия типов документов и справочников.
Но я так понимаю, что это строковые значения, верно?
Как мне определить изменение префикса только у типов документов с этим названием?

&НаСервере
Процедура ЗаполнитьДокументыНаСервере()     //для Документов
    
    Объект.Список.Очистить();
//Задать список документов для отображения
МассивВыбранных = Новый Массив;
МассивВыбранных.Добавить("ПриходнаяНакладная");
МассивВыбранных.Добавить("РасходнаяНакладная");    

//вывести в табличную часть список документов
Для Каждого Документ Из МассивВыбранных Цикл    
    СписокДокумент_ = Объект.Список.Добавить();
    СписокДокумент_.НаименованиеОбъекта = Документ;        
КонецЦикла;
        
КонецПроцедуры

&НаКлиенте
Процедура ЗаполнитьДокументы(Команда) //для Документов
    ЗаполнитьДокументыНаСервере();
КонецПроцедуры

&НаСервере
Процедура ЗаполнитьСправочникиНаСервере() //для Справочников
    
    Объект.Список.Очистить();
//Задать список справочников для отображения
МассивВыбранных = Новый Массив;
МассивВыбранных.Добавить("Склады");
МассивВыбранных.Добавить("ХЗ");

//вывести в табличную часть список справочников
Для Каждого Справочник Из МассивВыбранных Цикл    
    СписокСправочник_ = Объект.Список.Добавить();
    СписокСправочник_.НаименованиеОбъекта = Справочник;        
КонецЦикла;    
    
КонецПроцедуры

&НаКлиенте
Процедура ЗаполнитьСправочники(Команда) //для Справочников
    ЗаполнитьСправочникиНаСервере();
КонецПроцедуры
39 Simod
 
26.04.19
11:59
(38) Посмотри как в типовых это реализовано с помощью подписки на событие с наименованием типа "ПриУстановкеНовогоНомераДокумента".
40 ivangrant
 
26.04.19
12:00
(39) у меня нет доступа к типовым.
41 ivangrant
 
26.04.19
12:01
(39) Есть УниверсальныеПодборИОбработкаОбъектов.epf
Но там в коде ничего не понятно. Всё подругому сделано.
42 Мимохожий Однако
 
26.04.19
12:15
(41) "Но там в коде ничего не понятно". Читай код и много думай.
(40) Да, ладно.
43 ivangrant
 
26.04.19
12:50
(42) если для меня написанный в обработке код - пока иероглифы, чего мне на них смотреть и думать. Надо нужную статью в инструкции, справке, книжке открыть. Знать бы какую.
44 ivangrant
 
26.04.19
13:02
Если мне нужно все типы справочников вывести, что надо написать вместо Метаданные ?

&НаСервере
Процедура ЗаполнитьДокументыНаСервере()    
        
Для Каждого Документ Из Метаданные.Документы Цикл
    Список_ = Объект.Список.Добавить();
    Список_.НаименованиеОбъекта = Документ;
КонецЦикла;
        
КонецПроцедуры
45 ivangrant
 
26.04.19
13:05
(44) Получилось, но сначала в конфигураторе не подставлялось значение Справочники после точки и слова Метаданные.
46 ivangrant
 
26.04.19
13:58
Как получить префикс документа по его типу?
47 ivangrant
 
26.04.19
14:12
Нашёл код в другом обработчике.
Есть там вот такой.
Но через синтакс-помощник не бьётся ни одно слово.

Функция ПолучитьПрефиксЧислоНомера(Знач Стр, ЧисловаяЧасть="", Режим="") Экспорт
    
    Стр        =    СокрЛП(Стр);
    Префикс    =    Стр;
    Длина    =    СтрДлина(Стр);
    
    Для Сч = 1 По Длина Цикл
        Попытка
            ЧисловаяЧасть = Число(Стр);
        Исключение
            Стр = Прав(Стр, Длина - Сч);
            Продолжить;
        КонецПопытки;
        
        Если (ЧисловаяЧасть > 0) И (СтрДлина(Формат(ЧисловаяЧасть, "ЧГ=0")) = Длина - Сч + 1) Тогда
            Префикс    =    Лев(Префикс, Сч - 1);
            
            Пока Прав(Префикс, 1) = "0" Цикл
                Префикс = Лев(Префикс, СтрДлина(Префикс)-1);
            КонецЦикла;
            
            Прервать;
        Иначе
            Стр = Прав(Стр, Длина - Сч);
        КонецЕсли;
        
        Если ЧисловаяЧасть < 0 Тогда    ЧисловаяЧасть = - ЧисловаяЧасть        КонецЕсли;
        
    КонецЦикла;
    
    Если Режим = "Число" Тогда
        Возврат(ЧисловаяЧасть);
    Иначе
        Возврат(Префикс);
    КонецЕсли;
    
КонецФункции // вПолучитьПрефиксЧислоНомера()
48 catena
 
29.04.19
05:13
(47)Какое именно слово тут не находится в СП?
49 Garykom
 
гуру
29.04.19
05:52
(48) У него нет нужной версии СП устаревшей
50 ivangrant
 
29.04.19
07:20
(48) Например: Стр. Или: ПолучитьПрефиксЧислоНомера
(49) Какую нужно? Как это понять? Платформа 1С:Предприятие 8.3 (8.3.14.1630). А нужна какая?
51 Garykom
 
гуру
29.04.19
07:28
(50) >Например: Стр. Или: ПолучитьПрефиксЧислоНомера

Троллишь?
Это имя переменной и имя функции, с чего они будут в СП.
52 Конструктор1С
 
29.04.19
07:36
Ctrl+F1
53 ivangrant
 
29.04.19
08:01
(51) Нет.
При обучении название функции указывали из СП. Поэтому и вопрос. Тогда непонятно, зачем в скобках прописаны неизвестные параметры, если значения к ним не указаны. Среди них - Стр. Если это перем., тогда непонятно действие ей в скобках и в теле функции.

Например:

Стр    = СокрЛП(Стр);
Префикс    = Стр;
Длина    = СтрДлина(Стр);

Для перем Стр данные откуда-то же берутся. Откуда? В других частях кода этой перем. нет.
54 catena
 
29.04.19
08:06
"При обучении название функции указывали из СП"
Ты врешь, функции, описанные в СП уже есть и писать их заново смысла не имеет.
В скобках указываются входящие параметры.
Вопрос: что вообще в целом о программировании вы знаете? Не в 1С, а в принципе?
55 Rie
 
29.04.19
08:06
(53) Мне кажется, что Вы троллите.
Даже по синтаксису ясно, что Стр - это переменная. Откуда данные берутся? Ищите в коде. Тщательнее ищите. О параметрах процедур и функций не забывайте при поиске.
Извините, но может Вам лучше не самому это писать, а нанять программиста?
56 Мимохожий Однако
 
29.04.19
08:19
(43) Это лентяйство и нежелание думать.ИМХО.
Надежды на универсальные рецепты тщетны.
57 ivangrant
 
29.04.19
14:37
Как определить тип метаданных?
Пытаюсь задать перем. ТИпОбъекта.
И КоллекцияОбъектовМетаданных, и ОбъектМетаданныхКофнигурация, и Метаданные.Имя - не помогает.
Отладчиком напрашивается КоллекцияОбъектовМетаданных. Но пишет, что переменная не определан)))
Уже смешно.

Функция ОпределитьТипИДлинуНомера()
    ТипОбъекта = Метаданные  ???
    Если ТипОбъекта = Метаданные.Документы Тогда
        ТипНомера   = Строка(Метаданные.Документы.ТипНомера);
        ДлинаНомера = Метаданные.Документы.ДлинаНомера;
    ИначеЕсли ТипОбъекта = Метаданные.Справочники Тогда
        ТипНомера   = Строка(Метаданные.Справочники.ТипКода);
        ДлинаНомера = Метаданные.Справочники.ДлинаКода;
    КонецЕсли;
КонецФункции
58 Rie
 
29.04.19
14:58
(57) ......Допустим, что у Вас в переменной с именем Объект лежит ссылка на некий объект базы данных (например, документ).
Тогда
МетаОбъект = Объект.Метаданные();
ДлинаНомера = МетаОбъект.ДлинаНомера;
ТипНомера = МетаОбъект.ТипНомера; // посмотрите в Справке, какой тип у этого свойства!

Если известен вид документа (например, "ПоступлениеТоваровУслуг"), то можете узнать нужное прямо из глобального контекста:

ДлинаНомера = Метаданные.Документы.ПоступлениеТоварвУслуг.ДлинаНомера;

или же (так, скорее всего, будет удобнее)

ДлинаНомера = Метаданные.Документы["ПоступлениеТоваровУслуг"].ДлинаНомера;

Всё же советую не бежать впереди паровоза, а потратить некоторое время и изучить хоть немного встроенный язык программирования 1С.
59 ivangrant
 
29.04.19
15:10
(58) да тут вопрос в том, что мне кажется, что мы на разных языках говорим))) спасибо за советы конечно.
Но. Мне нужно вывести ТИПЫ документов, не ссылки на них, а ТИПЫ.
РасходнаяНакладная
ПриходнаяНакладная
это всё ТИПЫ документов.
Вот мне и нужно "сказать" системе, что это ДОКУМЕНТЫ.
Вот ссылка на внешний вид обработчика -> https://yadi.sk/i/2C5AQuIvi-U7fw
Отладчиком уже всё возможное наверное излазил. К самим документам я нашёл путь. А вот как определить метаданные Справочник или Документы - с этим проблема.
60 RomanYS
 
29.04.19
15:16
ЭтоДокумент = Документы.ТипВсеСсылки().СодержитТип(ТипЗнч(Ссылка));
61 PR
 
29.04.19
15:17
(0) Я бы переключателем сделал
62 RomanYS
 
29.04.19
15:17
+(60)  или через метаданные
ЭтоДокумент = Метаданные.Документы.Содержит(Объект.Метаданные());
63 ivangrant
 
29.04.19
15:20
(60) это подходит, если мне нужны только типы документов.
Но отдельным списком идут Справочники. Поэтому определение перем. ЭтоДокумент не логично.
64 ivangrant
 
29.04.19
15:20
(61) это как?
65 ivangrant
 
29.04.19
15:21
(60) + на ссылку ругается. Нет их у меня.
66 RomanYS
 
29.04.19
15:25
(63) У справочника те же методы. Сделай логично, инструмент есть.
(65) Это лишь пример. Замени (правильно) на то , что есть у тебя.
67 PR
 
29.04.19
15:31
(64) Ну булево на форму
68 ivangrant
 
29.04.19
15:31
(66) да, уже попробовал.
Пишет: недостаточно фактических параметров. На вторую строчку ругается.

Функция ОпределитьТипИДлинуНомера()
    ТипОбъекта = Метаданные.НайтиПоТипу().СодержитТип(ТипЗнч(Объект));
    Если ТипОбъекта = Метаданные.Документы Тогда
        ТипНомера   = Строка(Метаданные.Документы.ТипНомера);
        ДлинаНомера = Метаданные.Документы.ДлинаНомера;
    ИначеЕсли ТипОбъекта = Метаданные.Справочники Тогда
        ТипНомера   = Строка(Метаданные.Справочники.ТипКода);
        ДлинаНомера = Метаданные.Справочники.ДлинаКода;
    КонецЕсли;
КонецФункции // ()
69 ivangrant
 
29.04.19
15:32
(67) так прицепил же. Первая колонка. Флажки выставлять можно над каждым типом документа.
70 PR
 
29.04.19
15:46
(69) Молодец. Делай дальше.
71 RomanYS
 
29.04.19
15:46
(68) ппц. Ты код наугад пишешь?
>>Пишет: недостаточно фактических параметров. На вторую строчку ругается.
Это неспроста - там как минимум ошибка. По факту в той строке полный бред
72 ivangrant
 
29.04.19
15:57
(71) ага. Задачу дали, опыта нет. Никто не помогает. Сижу ищу в интернете. Почти наугад получается ) Что на форумах нахожу, то и пробую. Ну потому что все знающие варианты я испробовал)
Строку с ошибкой, кстати, вытащил с этого же форума. Кто-то подсказывал по подобно му вопросу.
73 RomanYS
 
29.04.19
16:07
(72) Очень похоже не обезьяну, которая войну и мир пишет. Но у тебя шансов побольше будет, не унывай
74 Rie
 
29.04.19
19:27
(59) А зачем Вам нужны _типы_? Что Вы с этими _типами_ дальше делать собираетесь?
Вот посмотрите на свой код в (68). У Вас есть некий Объект. (Кстати, откуда он есть? В параметрах функции его как-то не заметно).
Если у Вас есть этот Объект, то

МетаданныеОбъекта = Объект.Метаданные();
Если Метаданные.Документы.Содержит(МетаданныеОбъекта) Тогда
    ДлинаНомера = МетаданныеОбъекта.ДлинаНомера;
ИначеЕсли Метаданные.Справочники.Содержит(МетаданныеОбъекта) Тогда
    ДлинаНомера = МетаданныеОбъекта.ДлинаКода;
КонецЕсли;

Да, кстати! Если у Вас - функция, то неплохо было бы и значение какое-нибудь вернуть...

Перестаньте дурью маяться! Учите встроенный язык!
75 ivangrant
 
30.04.19
07:20
(73) спасибо)))))
(74) не Объект, а ТипОбъекта. Эта перем., к. нужна будет дальше в коде. И куда у вас делся ТипНомера ?
Ну и не работает все равно.

{Обработка.ВнешняяОбработкаПрефиксов.Форма.Форма.Форма(52)}: Метод объекта не обнаружен (Метаданные)
    МетаданныеОбъекта = Объект.Метаданные();
76 END
 
30.04.19
08:20
О, вот это да! Вас чувак развел, что бы вы ему его работу сделали. Чувак, зарплату на всех делить будешь?
77 ivangrant
 
30.04.19
08:27
(76) ну это только в сказках, которые пишут на форуме, что пришёл в компанию со стажировки и сразу начали з/п платить))))
Вижу, что так не работает.
И помощи на форуме не дождёшься.
78 END
 
30.04.19
08:58
(77) Тебе достаточно помогли. Тебе разжевали как и что нужно сделать. Код за тебя никто писать не собирается. Читай справку, читай буквари - делай. Или полати деньги и покупай готовое решение, раз сам не можешь сделать.
79 Simod
 
30.04.19
10:52
(77) Может все таки начать с примеров типа

Сообщить("Привет, мир!");

изучить типы и структуру объектов системы, поработать с примитивными типами, справочниками и т.д. затем посложнее - документы, регистры. И только потом переходить на работу с объектами через метаданные?

Программированию по примерам из Гугола не научишься.
80 Simod
 
30.04.19
10:53
И да, я не верю, что пришел на стажировку и сразу дали такой пример.
81 Demon_MSK
 
30.04.19
15:58
(80) Вай??
Вполне норм для стажёра. Который НЕ прогуливал занятия, и НЕ покупал зачетов.
У меня в разное время два стажёра было. Один учился. Второй нет.
Первый таки задачки решал легко. Второй - охранником работает.

(77) Между прочим вам помогли. Жевать за вас никто не собирается. Работа стоит денег.
Более-менее красивое решение.
Делаем две таблички с флажками, доки и спр. Туда при заполнении выбираем нужное. Можно на разных закладках.