Вход | Регистрация
 

Запрос по видам(типам) метаданных (справочники и документы)

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

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

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

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

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

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

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

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

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

    
    Объект.Список.Очистить();
//Задать список документов для отображения

МассивВыбранных = Новый Массив;
МассивВыбранных.Добавить("ПриходнаяНакладная");
МассивВыбранных.Добавить("РасходнаяНакладная");    

//вывести в табличную часть список документов

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

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

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

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

    
    Объект.Список.Очистить();
//Задать список справочников для отображения

МассивВыбранных = Новый Массив;
МассивВыбранных.Добавить("Склады");
МассивВыбранных.Добавить("ХЗ");

//вывести в табличную часть список справочников

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

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

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

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

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

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

Например:

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

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


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

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

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

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

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

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

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

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

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

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

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

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


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.