Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Системная функция "ТипЗнч()" - не вопрос, а просто мнение
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.3
Страницы: 1, 2
Gigi
Всем опять привет!
В данном случае вышел на форум не по поводу вопроса, а по поводу просто мнения.
Не знаю, уместно ли это и есть ли польза какая то от этого.
Хотя думаю все таки есть. По крайней мере думаю гостям данного сайта пригодится.
В особенности новичкам в системе 1С. Тем которые так же как я столкнулись с кое какими вопросами. И пока так и не нашли ответ почему разработчики великого и могучего языка 1С сделали именно так как сделали. А не чуть иначе.
Не буду объяснять детально в чем именно возникает вопрос, а вместо этого скину одну функцию, которую пришлось самому написать в общем модуле.
Думаю понимающему и без слов будет ясно почему и зачем пришлось писать такую функцию, и в чем именно сама функция: "ТипЗнч()" вынудила опять заниматься изобретательством и прочей ерундой.
В особенности если сравнивать две функции. Одна из которой это функция самой системы 1С, т.е. та самая: "ТипЗнч()" и другую, которая, слава богу вообще оказалась, но которая уже не из 1С, а из ХML. Т.е. если сравнить эти две функции и задать вопрос какая лучше. От 1С или от ХML. И лучше в смысле больших возможностей.
необходимо зарегистрироваться для просмотра ссылки
Функция ПоЗначению(Значение,ЗначВозврата) Экспорт
XMLТип=XMLТипЗнч(Значение).ИмяТипа;
Если Найти(XMLТип,".")=0 Тогда
    ТипГруппа=Строка(ТипЗнч(Значение)); //ТипГруппа=ТипЗнч(Значение);        
    Тип=ТипГруппа;
    МетаданныеГруппа=ТипГруппа;
    МетаданныеИмя=ТипГруппа;
    МетаДанныеПолноеИмя=ТипГруппа;
Иначе
    МетаДанныеПолноеИмя=Значение.Метаданные().ПолноеИмя();
    МетаданныеГруппа=Config_String_серв.Парсер(МетаДанныеПолноеИмя,".",1);
    МетаданныеИмя=Config_String_серв.Парсер(МетаДанныеПолноеИмя,".",2);
    Если Найти(XMLТип,"RecordSet")>0 Тогда
    ТипГруппа="НаборЗаписей";    
    ИначеЕсли Найти(XMLТип,"Ref")>0 Тогда
    ТипГруппа="Ссылка";    
    Иначе
    ТипГруппа="Объект";    
    КонецЕсли;
    Тип=МетаданныеГруппа+ТипГруппа+"."+МетаданныеИмя;
КонецЕсли;    
//============================
Стр=Новый Структура();
Стр.Вставить("Группа",ТипГруппа);
Стр.Вставить("Тип",Тип);
Стр.Вставить("МетаданныеГруппа",МетаданныеГруппа);
Стр.Вставить("МетаданныеИмя",МетаданныеИмя);
Стр.Вставить("МетаДанныеПолноеИмя",МетаДанныеПолноеИмя);
//============================
    Если ЗначВозврата="Структура" Тогда
    знВозврат=стр;    
    Иначе
    знВозврат=стр[ЗначВозврата];
    КонецЕсли;
//============================
Возврат знВозврат;
//============================
         //------- Ref --------- Object
            //"Catalog","Справочник"
            //"Document","Документ"
            //"Enum","Перечисление"
            //"ChartOfCharacteristicTypes","ПланВидовХарактеристик"
            //"ChartOfAccounts","ПланСчетов"
            //"Task","Задача"
         //---- RecordSet ------
            //"InformationRegister","РегистрСведений"
            //"CalculationRegister","РегистрРасчета"
КонецФункции

К этому мне ничего еще добавить. Поэтому воздержусь ... Ибо на счет "возможностей" функции "ТипЗнч()", об этом, думаю сами эти строки кода скажут лучше всяких слов.
Так что, на этот раз решил не задавать вопросы, а просто высказать мнение ...
Ладно ... вот собственно и все.
pablo
Загадочное сравнение молотка обычного и отбойного...
Gigi
pablo @ Сегодня, 14:11 необходимо зарегистрироваться для просмотра ссылки ,
Да ладно ... какой инструмент лично для меня не важен..
Важен только результат.
Открывалка, ложка, или край угла столика.... Не важно. Главное открыть бутылку smile.gif
А так, я понимаю, что наверняка есть причины почему так в системной функции. Но не знаю ... я вообще нашел ее в СП только потому что была нужна для конкретней цели.
И я знаю только то что эту цель она НЕ УДОВЛЕТВОРИЛА. Именно поэтому пришлось XML припихнуть. И слава богу что система понимает его.
Ладно ... это я так решил поделиться. И никого я не учу ... и не претендую на сто процентную правоту.
Просто выразил мнение и не более.
Вот и все дела...
Petre
Наверное, я один настолько ущербный, что ничего не понял из этого потока сознания...
Gigi
Цитата(Petre @ 18.10.19, 15:01) необходимо зарегистрироваться для просмотра ссылки
Наверное, я один настолько ущербный, что ничего не понял из этого потока сознания...

Да ничего понимать не надо ... а нужно самому один раз столкнуться smile.gif тогда могу уверить Вас поймете smile.gif Лучше всяких слов .. .куда денетесь
Короче ... ладно ... я решил просто поделиться ... не более ... может я не прав, а может прав на ВСЕ СТО!! Не знаю... не мне судить.
Я просто поделился ... а дальше и Вы и гости сайта рассудите прав или нет.
А в остальном я очень благодарен этому сайту и всем Вам уважаемые.
Ибо если честно на этом сайте я просто вырос smile.gif. Благодаря Вам!
Так что спасибо!
А на сегодня у меня все!
Пока! smile.gif
Petre
Тоже решил поделиться. Вот, пожалуйста, юзайте (и намного короче):
Функция ПоЗначению(Значение, ЗначВозврата) Экспорт
    
    Возврат Config_String_серв.ПоЗначению(Значение, ЗначВозврата);
    
КонецФункции
Gigi
Petre @ Сегодня, 15:44 необходимо зарегистрироваться для просмотра ссылки ,
Цитата(Petre @ 18.10.19, 15:44) необходимо зарегистрироваться для просмотра ссылки
Тоже решил поделиться. Вот, пожалуйста, юзайте (и намного короче):

Не понял?
Вы что прикалываетесь?
Ладно! Буду это считать за шутку. Тем более, что это так и есть.
Только шутку чуть дополню…
Выше указанную функцию, на самом деле, прописал в общий серверный модуль с именем: «Config_Тип» )) . Т.е. в моем случае, вызывать ее надо не так как Вы пошутили, а чуть по другому ))
вот так.
&НаКлиенте
Процедура Команда1(Команда)
стрТип=Config_Тип.ПоЗначению(Объект.Ссылка,"Структура");
    Для Каждого Элемент Из стрТип Цикл
    Сообщить(Элемент.Ключ+"  -  "+ Элемент.Значение);
    КонецЦикла;
КонецПроцедуры

Это для теста.
Можете проверить, эту аж до смеха простую функцию…. без проблем…. вставив код в любую кнопку в элементе справочника или дока. И то, что выдаст функция это и будет ответ на то, что было нужно от СИСТЕМНОЙ функции ТипЗнч().
И сама функция названа «ПоЗначению», а не на пример: «ТипПоЗначению», не случайно.
Так как, во-первых само название общего модуля и текст вызова функции итак говорит о чем речь «Config_Тип.ПоЗначению». Во-вторых по типам данных такой же как с системной функцией: «ТипЗнач()», это ведь не единственный гем в системе 1С. Естественно. Есть и другой гемор. Именно поэтому там же, в том же модуле: «Config_Тип» пришлось прописать уже другую функцию : )) Только на этот раз функция уже называется не «ПоЗначению», а «ПоРеквизиту».
необходимо зарегистрироваться для просмотра ссылки

Функция ПоРеквизиту(МетаданныеГруппа,МетаданныеИмя,Реквизит,ЗначВозврата) Экспорт  //Реквизит - должен быть объектного типа Реквизит = Метаданные.Документы.Документ1.Реквизиты["ИмяРеквизита"];
Если МетаданныеГруппа=Неопределено или МетаданныеГруппа=Неопределено Тогда
РеквизитОбъект = Реквизит;    
Иначе        
РеквизитОбъект = Метаданные[МетаданныеГруппа][МетаданныеИмя].Реквизиты[Реквизит];
КонецЕсли;
//=================================
ВозможныеТипы = РеквизитОбъект.Тип.Типы();  //Config_СтрМассив.Массив_Обход(ВозможныеТипы);     
Для каждого ЭлементТип Из ВозможныеТипы Цикл
типXML = XMLТип(ЭлементТип).ИмяТипа;
КонецЦикла;
//=================================
Если Найти(типXML, ".")=0 Тогда
//----------------------------------
Тип=СтрЗаменить(типXML,"string","Строка");
Тип=СтрЗаменить(Тип,"decimal","Число");
Тип=СтрЗаменить(Тип,"dateTime","Дата");
Тип=СтрЗаменить(Тип,"boolean","Булево");
Тип=СтрЗаменить(Тип,"UUID","УникальныйИдентификатор");
Тип=СтрЗаменить(Тип,"ValueStorage","ХранилищеЗначения");
Тип=СтрЗаменить(Тип,"decimal","Число");
Тип=СтрЗаменить(Тип,"decimal","Число");
ТипГруппа=Тип;
МетаданныеГруппа=Тип;
МетаданныеИмя=Тип;
МетаДанныеПолноеИмя=Тип;
//----------------------------------
Иначе
//----------------------------------
    Если Найти(типXML,"RecordSet")>0 Тогда
    ТипГруппа="НаборЗаписей";    
    ИначеЕсли Найти(типXML,"Ref")>0 Тогда
    ТипГруппа="Ссылка";    
    Иначе
    ТипГруппа="Объект";    
    КонецЕсли;
//----------------------------------
МетаданныеСсылкаИмяXML=Config_String_серв.Парсер(типXML,".",1);
МетаданныеИмя=Config_String_серв.Парсер(типXML,".",2);
МетаданныеГруппа=СтрЗаменить(МетаданныеСсылкаИмяXML,"CatalogRef","Справочник");
МетаданныеГруппа=СтрЗаменить(МетаданныеГруппа,"DocumentRef","Документ");
МетаданныеГруппа=СтрЗаменить(МетаданныеГруппа,"EnumRef","Перечисление");
МетаданныеГруппа=СтрЗаменить(МетаданныеГруппа,"ChartOfCharacteristicTypesRef","ПланВидовХарактеристик");
МетаданныеГруппа=СтрЗаменить(МетаданныеГруппа,"ChartOfAccountsRef","ПланСчетов");
МетаданныеГруппа=СтрЗаменить(МетаданныеГруппа,"TaskRef","Задача");
МетаданныеГруппа=СтрЗаменить(МетаданныеГруппа,"InformationRegister","РегистрСведений");
МетаданныеГруппа=СтрЗаменить(МетаданныеГруппа,"CalculationRegister","РегистрРасчета");
//----------------------------------
Тип=МетаданныеГруппа+ТипГруппа+"."+МетаданныеИмя;
МетаДанныеПолноеИмя=МетаданныеГруппа+"."+МетаданныеИмя;
//----------------------------------
КонецЕсли;
//============================
Стр=Новый Структура();
Стр.Вставить("Группа",ТипГруппа);
Стр.Вставить("Тип",Тип);
Стр.Вставить("МетаданныеГруппа",МетаданныеГруппа);
Стр.Вставить("МетаданныеИмя",МетаданныеИмя);
Стр.Вставить("МетаДанныеПолноеИмя",МетаДанныеПолноеИмя);
//============================
    Если ЗначВозврата="Структура" Тогда
    знВозврат=стр;    
    Иначе
    знВозврат=стр[ЗначВозврата];
    КонецЕсли;
//============================
Возврат знВозврат;
//============================
КонецФункции


Думаю эта функция тоже пригодиться гостям данного сайта. В особенности начинающим. Так что, решил оказать помощь начинающим)).. И делаю это вместо самих производителей системы 1С. Раз они об этом не позаботились. Что бы им «бедолагам», не пришлось писать самому, как мне)). Тем более начинающим. И что бы они, как я в свое время не парились с эти гемом а получили задачу в готовом виде. А дальше пусть сами доработают если нужно.
Ладно! Говорил что все на сегодня, но решил скинуть еще одну функцию. И тоже просто .. безо всякой причины.
А на последок скажу что если я не прав пусть докажут на этом сайте что именно так.. Я готов даже извиниться за свои слова в адрес системы 1С. И взять их обратно, если не прав. Да да … И не просто извиниться, а извиниться аж ПРОПИСНЫМИ БУКВАМИ…. И сделать это прямо тут ….на этом сайте….. Думаю я этим комплексую? Ничего подобного. Я это не считаю чем то уничижительным. Ибо никогда не ошибается только дурак.
Так что даже извинюсь… Но это если мне докажете что я не прав)))
А на сегодня все … чуть подустал.
Пока!
Gigi
Gigi @ Вчера, 19:39 необходимо зарегистрироваться для просмотра ссылки ,
Стоп… посчитал необходимым добавить дополнение к сказанному выше.
Потому что в функции «ПоРеквизиту», ошибка. Вернее не совсем ошибка, а там где то нужно кое-что добавить, а где то присутствуют не нужные и не уместные строки кода, которые нужно убрать.
Гуу … короче гем …
необходимо зарегистрироваться для просмотра ссылки

//знВозврат=Config_Тип.ПоРеквизиту("МетаданныеГруппа","МетаданныеИмя","Реквизит","Структура");
Функция ПоРеквизиту(МетаданныеГруппа,МетаданныеИмя,Реквизит,ЗначВозврата) Экспорт  
Если МетаданныеГруппа=Неопределено или МетаданныеГруппа=Неопределено Тогда
РеквизитОбъект = Реквизит;    
Иначе
    Если Найти(МетаданныеГруппа,"Регистры")=0 Тогда    
    РеквизитОбъект = Метаданные[МетаданныеГруппа][МетаданныеИмя].Реквизиты[Реквизит];
    Иначе
        Попытка
            РеквизитОбъект = Метаданные[МетаданныеГруппа][МетаданныеИмя].Измерения[Реквизит];
        Исключение
            РеквизитОбъект = Метаданные[МетаданныеГруппа][МетаданныеИмя].Ресурсы[Реквизит];
        КонецПопытки;    
    КонецЕсли;
КонецЕсли;
//=================================
ВозможныеТипы = РеквизитОбъект.Тип.Типы();  //Config_СтрМассив.Массив_Обход(ВозможныеТипы);     
Для каждого ЭлементТип Из ВозможныеТипы Цикл
типXML = XMLТип(ЭлементТип).ИмяТипа;
КонецЦикла;
//=================================
Если Найти(типXML, ".")=0 Тогда
//----------------------------------
Тип=СтрЗаменить(типXML,"string","Строка");
Тип=СтрЗаменить(Тип,"decimal","Число");
Тип=СтрЗаменить(Тип,"dateTime","Дата");
Тип=СтрЗаменить(Тип,"boolean","Булево");
Тип=СтрЗаменить(Тип,"UUID","УникальныйИдентификатор");
Тип=СтрЗаменить(Тип,"ValueStorage","ХранилищеЗначения");
ТипГруппа=Тип;
МетаданныеГруппа=Тип;
МетаданныеИмя=Тип;
МетаДанныеПолноеИмя=Тип;
//----------------------------------
Иначе
//----------------------------------
МетаданныеСсылкаИмяXML=Config_String_серв.Парсер(типXML,".",1);
МетаданныеИмя=Config_String_серв.Парсер(типXML,".",2);
МетаданныеГруппа=СтрЗаменить(МетаданныеСсылкаИмяXML,"CatalogRef","Справочник");
МетаданныеГруппа=СтрЗаменить(МетаданныеГруппа,"DocumentRef","Документ");
МетаданныеГруппа=СтрЗаменить(МетаданныеГруппа,"EnumRef","Перечисление");
МетаданныеГруппа=СтрЗаменить(МетаданныеГруппа,"ChartOfCharacteristicTypesRef","ПланВидовХарактеристик");
МетаданныеГруппа=СтрЗаменить(МетаданныеГруппа,"ChartOfAccountsRef","ПланСчетов");
МетаданныеГруппа=СтрЗаменить(МетаданныеГруппа,"TaskRef","Задача");
//----------------------------------
ТипГруппа="Ссылка";
Тип=МетаданныеГруппа+ТипГруппа+"."+МетаданныеИмя;
МетаДанныеПолноеИмя=МетаданныеГруппа+"."+МетаданныеИмя;
//----------------------------------
КонецЕсли;
//============================
Стр=Новый Структура();
Стр.Вставить("Группа",ТипГруппа);
Стр.Вставить("Тип",Тип);
Стр.Вставить("МетаданныеГруппа",МетаданныеГруппа);
Стр.Вставить("МетаданныеИмя",МетаданныеИмя);
Стр.Вставить("МетаДанныеПолноеИмя",МетаДанныеПолноеИмя);
//============================
    Если ЗначВозврата=Неопределено или ЗначВозврата="Структура" Тогда
    знВозврат=стр;    
    Иначе
    знВозврат=стр[ЗначВозврата];
    КонецЕсли;
//============================
Возврат знВозврат;
//============================
КонецФункции


Но все это работает не на все случая. И нуждается в доработке. Но лично мне и этого хватало для нужд.
А по поводу функции ТипЗнч(), начинающим в системе 1С рекомендую создать две кнопки на форме на пример справочника. Одну кнопку назвать «СистемнаяФункцияТипЗнач», а вторую, назвать на пример: «Кустарщина». Можете смело так назвать. Я не обижусь )).
необходимо зарегистрироваться для просмотра ссылки

&НаКлиенте
Процедура СистемнаяФункцияТипЗнч(Команда)
Тип=ТипЗнч(Объект.Ссылка); Сообщить("Результат системной функции: "+Символы.ПС+Тип);    
КонецПроцедуры

&НаКлиенте
Процедура Кустарщина(Команда)
стрТип=ПоЗначению(Объект.Ссылка,"Структура");
Сообщить("---------------------------------------"+
Символы.ПС+"Результат «кустарщины»: "+Символы.ПС+
"---------------------------------------"+Символы.ПС);    
    Для Каждого Элемент Из стрТип Цикл
    Сообщить(Элемент.Ключ+"  -  "+ Элемент.Значение);
    КонецЦикла;
Сообщить("---------------------------------------");
КонецПроцедуры

&&НаСервере
// а здесь вставить саму функцию: «ПоЗначению». Т.е. для теста не в общий модуль, а тут же в модуле формы.


И сделав так запустить режим 1С предприятия и нажать сперва на первую кнопку, а потом на вторую. И тем самым увидеть, разницу между системной функцией и «кустарщиной».

Gigi @ Сегодня, 10:45 необходимо зарегистрироваться для просмотра ссылки ,
P.S.
Да еще ... совсем забыл.
О Господи ..
Весь выше изложенный код работать НЕ БУДЕТ!
Ведь, я совсем забыл, что в системе 1С нет Парсера. .. "дебилизм".
Поэтому что бы сработал нужно еще создать серверный общий модуль с именем: "Config_String_серв"
необходимо зарегистрироваться для просмотра ссылки

//Текст=Config_String_серв.Парсер(Текст,Символ,НомерВхода);
Функция Парсер(Текст,Символ,НомерВхода) Экспорт
НомерВхода=НомерВхода-1;
КоличПовтСимвола = СтрЧислоВхождений(Текст, Символ);
НомСимвПовтора = Число((НомерВходаСимвола(Текст, Символ, НомерВхода)));
If КоличПовтСимвола = 0 Then
strPart = Текст;
ИначеЕсли КоличПовтСимвола = НомерВхода Then
strPart = Сред(Текст, НомСимвПовтора+1);
ИначеЕсли КоличПовтСимвола > НомерВхода Then
strТекст = Сред(Текст, НомСимвПовтора+1);
СимволNext = Найти(strТекст, Символ);
strPart = Сред(Текст, НомСимвПовтора+1, СимволNext - 1);
Else
НомСимКонечногоПовтора = НомерВходаСимвола(Текст, Символ, КоличПовтСимвола);
strPart = Сред(Текст, НомСимКонечногоПовтора+1);   //+ 1
EndIf;
Возврат strPart;
КонецФункции

Функция НомерВходаСимвола(Текст,Символ,НомерВхода) Экспорт
КолРазделителя=СтрЧислоВхождений(Текст, Символ);
ТекстДлина=СтрДлина(Текст);
Count = 0;
CountSymb = 0;
SymbNum = 0;
//---------------------------
Для i = 1 по ТекстДлина Цикл
Count = Count + 1;
char = Сред(Текст, i, 1);
    If char = Символ Then
    CountSymb = CountSymb + 1;
    If CountSymb = НомерВхода Then SymbNum = Count EndIf;
    EndIf;
КонецЦикла;
//---------------------------
Возврат SymbNum;
КонецФункции


Только в таком случае сработает.
Да..именно... это тот самый папрсер. О котором говорил на этом сайте. И которого опять нет в системе 1С... "идиотизм". Поэтому и тут самому пришлось возиться.
Вот теперь у меня все!
Ладно! Пока
.
getnight
Gigi @ Сегодня, 10:40 необходимо зарегистрироваться для просмотра ссылки ,
Друг... кто ясно мыслит, тот ясно выражается. У меня пошла из мозга кровь, когда я начал читать...

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

Попробуйте структурировать свои мысли:

1. Суть проблемы
2. Стандартные (существующие) решения, их недостатки для вашего конкретного случая
3. Ваше решение
4. Примеры использования

П.С. не забывайте, что ваша конфигурация - это только ваша конфигурация, поэтому если используете какой-нибудь личный модуль, приводите его текст тоже.
При всём желании разобраться, натыкаясь на участки кода, ссылающиеся на ЭтоМояМегаКрутаяФункция(Параметр1, Параметр2) без приведения текста самой функции, я автоматически закрываю тему.
В данном случае решил всё-же написать вам, т.к. узнал вас по нику (несколько лет назад уже попадал на вас с точно такими же эмоциями) и есть желание донести до вас свои пожелания. Спасибо.

Цитата(Gigi @ 18.10.19, 14:11) необходимо зарегистрироваться для просмотра ссылки
Цитата(Petre @ 18.10.19, 15:01)
Наверное, я один настолько ущербный, что ничего не понял из этого потока сознания...

Слово в слово... угадал мои мысли.
Gigi
getnight @ Сегодня, 14:32 необходимо зарегистрироваться для просмотра ссылки ,
Цитата(getnight @ 19.10.19, 14:32) необходимо зарегистрироваться для просмотра ссылки
Слово в слово... угадал мои мысли.

Дорогой друг … а я например не угадал. Поверьте!
И не то что не угадал… более того я и вовсе ничего не понял на самом деле
Цитата(getnight @ 19.10.19, 14:32) необходимо зарегистрироваться для просмотра ссылки
из этого потока сознания...

Уверяю Вас … я ничего не понял. .. о каком потоке идет речь.
Цитата(getnight @ 19.10.19, 14:32) необходимо зарегистрироваться для просмотра ссылки
Нельзя все ваши эмоции выплескивать на людей, как кипяток..

Спасибо Вам большое друг … , возьму на вооружение. .. Вы правы не стоит так ...Говорю без иронии... И в этом согласен .. иногда перебарщиваю.. на самом деле.. Извините.
Однако Вы знаете, как поступим…
Это я шас по поводу:
Цитата(getnight @ 19.10.19, 14:32) необходимо зарегистрироваться для просмотра ссылки
1. Суть проблемы
2. Стандартные (существующие) решения, их недостатки для вашего конкретного случая
3. Ваше решение
4. Примеры использования

Судя по тому что я читаю в ответ, в особенности про «поток сознания» я уже даже сомневаюсь правильно ли меня понимают.
Ибо, на этом сайте вообще решил поделиться мнением по той причине, что думал, что тут в основном люди понятливые. В особенности те, которые далеко не новички в системе 1С. Думал поймут с полу слова. Без детальных объяснений, где уже итак написал кучу строк. И это помимо «Эмоций». Но в итоги, что получается уважаемые? Сталкиваюсь с не пониманием.
Поэтому давайте оставим в покое пункты и тезисы. А сделаем пока иначе.
И для этого друг …приведу Вам один пример, и в конце задам вопрос, на который как хотите … хотите отвечайте хотите нет.
Пример имеет не прямое отношение к профессии программиста. А только косвенное. И он будет понятен не только программисту, но всем.
Вообще всем ..абсолютно. Уверяю Вас ….
Так вот представьте один пример…
Конкурс изобретений робототехники.
Что делают роботы? Следующее:
определяют овощи и фрукты.
Т.е. на сканер кладешь любой овощ или фрукт. И машина определяет что лежит на сканере.
Извините друг ...это я щас вынужден приводить такой пример. Раз речь уже пошла о каком то не понимании «потока мыслей» .
И вот, представьте, что сидит комиссия. И кто-то в конкурсе должен победить.
И вот, ведущий говорит в микрофон: модель номер 1.
Кладут на сканер, на пример картошку. И спрашивают машину, что лежит на сканере
Робот отвечает: «картошка».
И как только робот это произносит в зале аплодисменты. Все рады, и просто в полном восторге от услышанного.
Теперь говорят машине … Ладно поняли… картошка … молодец.
Теперь задают роботу другой вопрос. Следующий:
А картошка это что овощ или фрукт?
А на второй вопрос робот отвечает, знаете что?
КАРТОШКА! smile.gif))))
Люди в зале переглядываются ... но позже предполагают, что у робота наверно просто заело.
Поэтому опять ему задают тот же вопрос.
А картошка это фрукт или овощ?
И вот в предвкушении услышать истину в зале полная тишина.
И слышат опять
КАРТОШКА! smile.gif)))
На что опять задают ... картошка фрукт или овощ?... и опять КАРТОШКА.. еще задают, а он опять КАРТОШКА )))
И т.д. каждый раз..
Картошка...Картошка...Картошка...Картошка...Картошка...Картошка...Картошка... ))

Ладно ... не буду дальше...
Поэтому не буду задавать никаких вопросов.
А скажу так в качестве совета ...
Друг …Возьмите одну системную функцию на пример вот эту:
ТипЗнч()

Которая, и имеет к данной теме форума прямое отношение.
Возьмите ее и хорошенько проанализируйте. Имею ввиду "возможности" этой функции от системы 1С
А уже после сами догадайтесь, почему привел выше указанный пример про КАРТОШКУ.
Пожалуйста… только без обид.
Я думаю Вы сами поймете при чем тут выше указанный пример, и при чем тут функция ТипЗнч(). Хорошенько ее изучите.
А я пока воздержусь.
И приношу извинения за опять не экономию и всего времени и времени других
А пока у меня на этом все!
Gigi
Gigi @ 19.10.19, 21:31 необходимо зарегистрироваться для просмотра ссылки ,
Да .. еще … по поводу:
Цитата(Gigi @ 19.10.19, 22:31) необходимо зарегистрироваться для просмотра ссылки
П.С. не забывайте, что ваша конфигурация - это только ваша конфигурация, поэтому если используете какой-нибудь личный модуль, приводите его текст тоже.
При всём желании разобраться, натыкаясь на участки кода, ссылающиеся на ЭтоМояМегаКрутаяФункция(Параметр1, Параметр2) без приведения текста самой функции, я автоматически закрываю тему.

Ладно так и быть.
Решил все-таки, специально для этого создать новую тему,
Вот эту …
необходимо зарегистрироваться для просмотра ссылки
И это что бы
Цитата(Gigi @ 19.10.19, 22:31) необходимо зарегистрироваться для просмотра ссылки
уважать их время.

При этом понимая, как сами разработчики системы 1С «уважили», уже мое время, раз мне слишком часто приходилось делать работу за них. Именно поэтому с этим
Цитата(Gigi @ 19.10.19, 22:31) необходимо зарегистрироваться для просмотра ссылки
Возможно, вы придумали что-то гениальное.

НЕ СОГЛАСЕН!
На самом деле, в своей функции, ничего гениального не вижу. А это только одно их самых элементарных из того что было необходимо.
Ладно! Еще раз приношу извинения, если был резок!
Спасибо за понимание!
Batchir
Gigi,
необходимо зарегистрироваться для просмотра ссылки
Глобальный контекст (Global context)
ТипЗнч (TypeOf)
Синтаксис:
ТипЗнч(<Значение>)
Параметры:
<Значение> (обязательный)
Тип: Произвольный.
Значение, тип которого необходимо получить.
Возвращаемое значение:
Тип: Тип.
Описание:
Получает тип значения.
Доступность:
Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер).
Пример:
Если ТипЗнч(ТекОбъект) = Тип("СправочникСсылка.Номенклатура") Тогда
...
КонецЕсли;


Тип (Type)
Описание:
Значения данного типа используются для идентификации типов значений. Это необходимо для определения и сравнения типов. Данный тип не имеет литералов и возвращается функциями встроенного языка ТипЗнч и Тип.
Доступность: Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер). Возможен обмен с сервером. Сериализуется.
Данный объект может быть сериализован в/из XDTO. Тип XDTO, соответствующий данному объекту, определяется в пространстве имен {http://v8.1c.ru/8.1/data/core}. Имя типа XDTO: Type


Вопрос. С чего Вы взяли что метод который ТипЗнч должен быть именно такой как Вам он нужен?

Вы там упоминали о том что инструмент не важен для открытия бутылки (с таким подходом Вы б у меня не работали, повзрослеете как специалист - поймете, даже стараться объяснять это не буду).
Но у меня почему-то другая ассоциация возникает:
Купив велосипед Вы предъявляете производителю претензию к тому что велосипед не летает. И самостоятельно начинаете приваривать крылья к велосипеду, пытаясь доказать всем что именно такими и должны быть велосипеды. Хотя даже с приваренными крыльями он всё-равно летать не станет.
MATEVI
А может Вам просто нужно было это?
XMLЗначение

Gigi
Batchir @ 08.11.19, 14:26 необходимо зарегистрироваться для просмотра ссылки ,
Не буду комментировать описание функции, ибо сам тоже читал
Отмечу только то что функция ТипЗнч() годна только в таком стиле:
ИстинаЛожь=ТипЗнч(ТекОбъект) = Тип("СправочникСсылка.Номенклатура")

Это единственное на что она вообще годна.
Цитата(Batchir @ 08.11.19, 14:26) необходимо зарегистрироваться для просмотра ссылки
Вопрос. С чего Вы взяли что метод который ТипЗнч должен быть именно такой как Вам он нужен?

Согласен!
Дело в том, что если возможности метода нужны были только мне лично то это не аргумент. С этим не спорю. Однако, в том и все дело что сам вопрос возможностей функций выходит за рамки того что кому то нужно лично, а охватывает то что нужно вообще. Поверьте это именно так.
И в подтверждении сказанного опять повторю то что говорил на этом сайте по поводу функции ТипЗнч. В ответ на вопрос для чего и зачем нужно то что я уже в своей функции прописал. Чем, если честно, за одно удивили меня тем, что вообще задали такой вопрос. И удивили тем, что вообще подвергли сомнению то, что прописанные возможности моей функции вообще нужны.
И тут еще понимается, то в чем разработчики системы 1С согрешили, написав кучу разных функций. И то, что согрешили в том, что при этом считали себя сильно умными. Вот в чем на мой взгляд согрешили. И это самый главный их грех. Ну типа ... вот вам наши "мощные" функции и пользуйтесь ими. А что то еще кроме этих наших функций типа "не нужно" и типа "не понадобятся". Надо же а? Это они так думали наверно. Равно как и считали ,что знают все про жизнь во всем ее многообразии. Да уж... видишь ли думали, что "знают" то в чем даже сам черт сломает голову. Наивные.
Поэтому повторяю то что говорил в другой теме и опять на этот раз пишу прописными одну аксиому.
Не знаю, как считали разработчики при написании функции ТипЗнч, а я считаю, что ПРО ЛЮБОЕ ЗНАЧЕНИЕ НУЖНО ЗНАТЬ ВСЕ! Равно как и не знаю как думают разработчики, но для меня это АКСИОМА.
А что касается того где это нужно за что вы переживаете уважаемые? Вы боитесь того, что лишняя возможность функции останется не у дел? Да не смешите меня уважаемые ... НЕ ОСТАНЕТСЯ! УВЕРЯЮ Вас!
Ну а если Вам нужно в этом убедиться, убедиться в том, что лично на мой взгляд АКСИОМА, то нет проблем могу привести конкретный пример использования. И не один а целых десять если угодно если угодноsmile.gif!
И это если угодно опять, как раз, в знак того, как не стоило разработчикам системы 1С считать себя сильно умными. И какие это вообще вредные взгляды. Считать, что типа "знаем все про жизнь" и поэтому типа "учитываем все ее ситуации".
Цитата(Batchir @ 08.11.19, 14:26) необходимо зарегистрироваться для просмотра ссылки
Вы там упоминали о том что инструмент не важен для открытия бутылки (с таким подходом Вы б у меня не работали, повзрослеете как специалист - поймете, даже стараться объяснять это не буду).

Тоже согласен! Однако одно малое дополнение. Следующее:
Когда, например, сидишь за столом где лежит бутылка а рядом с ней открывалка. И не одна а целая куча на разный вкус. И когда для открытия бутылки выбирай какую хочешь... Ну сами подумайте какой нормальный человек будет открывать бутылку краем столика?
Но это когда на столе помимо бутылки, открывалок целая куча. А как быть тогда когда на столике лежит бутылка, но нет НЕ ОДНОЙ открывалки. В таком случае как? smile.gif
Может зубами smile.gif .... И в такой ситуации есть дело до того как открыть ... вилкой, ложкой или краем столика. Тогда когда бутылку нужно ОТКРЫТЬ наконец. И ПОСКОРЕЕ. Без лишнего гема.
Так что, в таких случаях точно не до эстетики. Ибо раз разработчики об этом не подумали, тем более если это так важно, зачем я об этом должен думать.
Цитата(Batchir @ 08.11.19, 14:26) необходимо зарегистрироваться для просмотра ссылки
Но у меня почему-то другая ассоциация возникает:
Купив велосипед Вы предъявляете производителю претензию к тому что велосипед не летает. И самостоятельно начинаете приваривать крылья к велосипеду, пытаясь доказать всем что именно такими и должны быть велосипеды. Хотя даже с приваренными крыльями он всё-равно летать не станет.

Уважаемый друг! О каком полете идет речь в системе 1С. Говорю Вам честно, когда слышу такое мне и тут опять смешно smile.gif
Наверно системе 1С только взлететь не хватает. А в остальном все просто зашибись. Т.е. только взлететь наверно оступается. И оказывается система 1С только летать не умеет, а все остальное как у чемпиона по бегу.
Как я понимаю, далеко не так обстоит дело. Так что речь не о полете а о нормальной ходьбе без прихрамывания.
И в этом вопросе, для наилучшего понимания что имею ввиду, напоследок приведу Вам один сравнительный пример. Например, пример сравнения двух видов языка общения. Языков общения между людьми и человека с машиной. Про первый вид языка можно смело сказать ВЕЛИКИЙ И МОГУЧИЙ. И без кавычек. И сказать это без преувеличения. На пример такие языки как языки: Украинский, Русский, Грузинский, Английский и т.д. На этих языках ПИШУТ СТИХИ! smile.gif Но это людской язык.
Теперь о другом виде языка. О языке для машины. А именно на пример о языке 1С smile.gif. Дело в том, что этот "могучий" язык даже ФИО толком склонять не умеет smile.gif. И поэтому как Вы думаете уважаемые? На этом языке возможно ли писать стихи? smile.gif Возможно ли например, при наличии даже таланта (это я, не беспокойтесь, не про себя), написать стихи, на том языке, который даже склонять не умеетsmile.gifsmile.gif?
А уважаемые?
Так что, о каком это "полете" и каких это "крыльях" идет речь. Это даже смешно
Ладно уважаемые ... без обид пожалуйста. Ибо я говорю то как сам думаю. Имею право.
И я уважаю Ваше мнение, но что бы кто не говорил, опять остаюсь при своем. И при том, что не комплексую тем, что бы поменять свое мнение, я так и не услышал не один аргумент, для этого.
Опять приношу извинение за большое количество букв. Но решил изложить свое понимание и в двух словах опять не получилось.
У меня все!
Vofka
Цитата(Gigi @ 12.11.19, 12:26) необходимо зарегистрироваться для просмотра ссылки
Отмечу только то что функция ТипЗнч() годна только в таком стиле

А вам как надо было?
Gigi
Цитата(Vofka @ 12.11.19, 13:33) необходимо зарегистрироваться для просмотра ссылки
А вам как надо было?

Гуу.... об этом уже говорил ... и сразу в нескольких темах на этом сайте
Мне надо было знать ВСЕ про значение. В том числе и что за это группа. Например это Ссылка или сам объект, или это набор записей. Вообще все. И с любой стороны.

И для этого еще приведу один пример использования о котором тут уже говорил в другой теме.
Допустим реквизиты табличной части: "ЗначениеСсылка"(тип: "ЛюбаяСсылка"), "ЗначениеСтрока", "ЗначениеЧисло", "ЗначениеДата" и т.д.
И вот тема такая.... нужно получить значение. И при его получении создается новая строка табличной части. И заполняется соотв-ими значениями. Но из указанных полей, по каждой стоке, должно заполняться только одна из них. И при этом не известно что за это значение, которую нужно будет получить и вставить в одно из выше указанных реквизитов. И к какой группе оно относиться.
Вот один из примеров использования.
Vofka
Gigi @ Сегодня, 12:50 необходимо зарегистрироваться для просмотра ссылки ,
В вашем примере известно же заранее какой реквизит какого типа. Непонятно зачем тут вообще тип проверять.
pablo
ИМХО, пример не из жизни. Это больше нужно при сериализации значений, чем при обычной работе.
Vofka
Цитата(pablo @ 12.11.19, 16:46) необходимо зарегистрироваться для просмотра ссылки
ИМХО, пример не из жизни.

А мне кажется, что это у нас не настолько интересная жизнь, по сравнению с автором crazy.gif
Gigi
Цитата(Vofka @ 12.11.19, 17:10) необходимо зарегистрироваться для просмотра ссылки
В вашем примере известно же заранее какой реквизит какого типа. Непонятно зачем тут вообще тип проверять.

Согласен! Можно было и по типу реквизита, но уважаемый знаете что меня опять смешит smile.gif
Смешит в особенности вот эта фраза... и вот этот фрагмент из цитаты:
Цитата(Vofka @ 12.11.19, 17:10) необходимо зарегистрироваться для просмотра ссылки
какой реквизит какого типа.

И разделим выражение на две части на эту "какой реквизит" и на эту "какого типа"?
Так вот, с первой частью нет проблем, и это без иронии. А что касается второй то, тут уже мне просто смешно. И в особенности от понимания того, сколько времени уважаемый друг Вы потратили на написание этой фразы: "какого типа", и сколько времени нужно потратить на написание функций которая получает тип по реквизиту в 1С. Так что, напрасно Вы вообще затронули вопрос типа по реквизиту уважаемый! Напрасно! Вы хотите что бы я тут скинул уже другую функцию из общего модуля с которой опять парился? И тем самым хотите, что бы я посетителям тут дал понять, что с типом по реквизиту в "могучем" языке 1С дело обстоит намного хуже чем с функцией "ТипЗня"? Ладно без проблем.
необходимо зарегистрироваться для просмотра ссылки

Функция СведРеквизит(МетаданныеГруппа,МетаданныеИмя,Реквизит,Сведения) Экспорт  
Если МетаданныеГруппа=Неопределено или МетаданныеГруппа=Неопределено Тогда
    РеквизитОбъект = Реквизит;    
Иначе
    Если Найти(МетаданныеГруппа,"Регистры")=0 Тогда    
        РеквизитОбъект = Метаданные[МетаданныеГруппа][МетаданныеИмя].Реквизиты[Реквизит];
    Иначе
        Попытка
            РеквизитОбъект = Метаданные[МетаданныеГруппа][МетаданныеИмя].Измерения[Реквизит];
        Исключение
            РеквизитОбъект = Метаданные[МетаданныеГруппа][МетаданныеИмя].Ресурсы[Реквизит];
        КонецПопытки;    
    КонецЕсли;
КонецЕсли;
//=================================
ВозможныеТипы = РеквизитОбъект.Тип.Типы();  //Config_СтрМассив.Массив_Обход(ВозможныеТипы);     
Для каждого ЭлементТип Из ВозможныеТипы Цикл
типXML = XMLТип(ЭлементТип).ИмяТипа;
КонецЦикла;
//=================================
Если Найти(типXML, ".")=0 Тогда
//----------------------------------
Тип=СтрЗаменить(типXML,"string","Строка");
Тип=СтрЗаменить(Тип,"decimal","Число");
Тип=СтрЗаменить(Тип,"dateTime","Дата");
Тип=СтрЗаменить(Тип,"boolean","Булево");
Тип=СтрЗаменить(Тип,"UUID","УникальныйИдентификатор");
Тип=СтрЗаменить(Тип,"ValueStorage","ХранилищеЗначения");
ТипГруппа=Тип;
МетаданныеГруппа=Тип;
МетаданныеИмя=Тип;
МетаДанныеПолноеИмя=Тип;
//----------------------------------
Иначе
//----------------------------------
МетаданныеИмя = Сред(типXML,Найти(типXML,".")+1);
МетаданныеГруппаИмяXML = СтрЗаменить(типXML,"."+МетаданныеИмя,"");
//----------------------------------
МетаданныеГруппа=СтрЗаменить(МетаданныеГруппаИмяXML,"CatalogRef","Справочник");
МетаданныеГруппа=СтрЗаменить(МетаданныеГруппа,"DocumentRef","Документ");
МетаданныеГруппа=СтрЗаменить(МетаданныеГруппа,"EnumRef","Перечисление");
МетаданныеГруппа=СтрЗаменить(МетаданныеГруппа,"ChartOfCharacteristicTypesRef","ПланВидовХарактеристик");
МетаданныеГруппа=СтрЗаменить(МетаданныеГруппа,"ChartOfAccountsRef","ПланСчетов");
МетаданныеГруппа=СтрЗаменить(МетаданныеГруппа,"TaskRef","Задача");

// и т.д. ... Мне просто уже надоело заниматься кустарщиной, и опять и опять делать работу разработчиков ...

//----------------------------------
ТипГруппа="Ссылка";
Тип=МетаданныеГруппа+ТипГруппа+"."+МетаданныеИмя;
МетаДанныеПолноеИмя=МетаданныеГруппа+"."+МетаданныеИмя;
//----------------------------------
КонецЕсли;
//============================
Стр=Новый Структура();
Стр.Вставить("Группа",ТипГруппа);
Стр.Вставить("Тип",Тип);
Стр.Вставить("МетаданныеГруппа",МетаданныеГруппа);
Стр.Вставить("МетаданныеИмя",МетаданныеИмя);
Стр.Вставить("МетаДанныеПолноеИмя",МетаДанныеПолноеИмя);
//============================
    Если Сведения=Неопределено или Сведения="Все" Тогда
    знВозврат=стр;    
    Иначе
    знВозврат=стр[Сведения];
    КонецЕсли;
//============================
Возврат знВозврат;
//============================
КонецФункции

Как видно из указанной функции с типом по реквизиту в 1С дело обстоит ЕЩЕ ХУЖЕ чем с типом по значению. И это потому, что для второй цели все таки есть готовая функция: "ТипЗнч". Хотя сильно "могучая", но все таки имеется. И слава богу что уважаемые разработчики вообще посчитали нужным ее включить пусть даже такую немощную. Что, конечно меня уже даже удивляет что посчитали. Года два назад не удивило бы. Ибо тогда не сильно был знаком с языком 1С. А уже теперь удивляетsmile.gif. Но это по вопросу типа по значению. А что касается вопроса типа по реквизиту тут в 1С самой такой функции ПРОСТО НЕТsmile.gif! Да именно ... Нет и точка! Опять нет! Даа .. "сильно"... ничего не скажешь. И наверно и тут разработчики тоже считали себя опять сильно умными и думали что такая функция "не понадобиться".
Поэтому, к выше указанному девизу в другом сообщении уже тут добавлю еще одну АКСИОМУ! Которую опять нужно было объяснить разработчикам, раз сами наверно не понимали. Те АКСИОМЫ, о которых даже ребенок знает!
В языке программирования, если он претендует на статус мощного, должен быть ВЫБОР! Да именно ...ВЫБОР! И выбор в смысле, решить одну и ту же цель разным путем. Вот что! И это тоже на мой взгляд АКСИОМА!
Так что, до написания этой функции: "СведРеквизит", я тогда решил получать тип по значению. Ибо тогда это было ПРОЩЕ! И потому что функция типа по значению была уже мною написана. Поэтому!
Но опять таки и .... повторяю для одной и той же цели должен быть выбор. И в данном случае получить тип как по значению так и по реквизиту.
Так что, должна быть возможность сделать по разному. Каким угодно путем. В зависимости от того как удобнее в крокетном случае.
Но для указанной цели покажите мне готовую функцию в 1С. Покажите мне ее уважаемые! Не ту выше указанную функцию которая через язык XML, и на написание которой потратил время, а готовую от 1С. Где она?
И только так и докажите что ошибаюсь!
У меня все!


Gigi
Цитата(pablo @ 12.11.19, 17:46) необходимо зарегистрироваться для просмотра ссылки
ИМХО, пример не из жизни. Это больше нужно при сериализации значений, чем при обычной работе.

Дорогой друг ... а сериализация это не жизнь что ли? smile.gif. Или Вы полагаете, что только у юзеров должна быть жизнь, а у программиста борьба за выживание. Что на самом деле у программиста часто и происходит с этим языком.
Во-вторых, пример в данном случае не для сериализации, а для записи данных авто-заполнения в табличную часть индивидуально под каждого пользователя. Чего тоже опять нет в 1С в готовом виде.
И я это щас как раз про ЖИЗНЬ..... Повседневную и обыденную. И жизнь не программиста, а как раз юзера. И про очень нужные для него вопросы в работе по каждому отчетному периоду.
Так что, вопрос как раз про жизнь реальную, и уверяю Вас точно не вертикальную.
pablo
Юзеру глубоко фиолетово на все типы данных в программе и функции для работы с ними. И сериализация юзеру не нужна, так как он работает с результатом, а не с процессами внутри программы.

Gigi
Цитата(pablo @ 13.11.19, 12:34) необходимо зарегистрироваться для просмотра ссылки
Юзеру глубоко фиолетово на все типы данных в программе и функции для работы с ними. И сериализация юзеру не нужна, так как он работает с результатом, а не с процессами внутри программы.

Ну да ... именно так ... но блин ... я ведь не только о нем но и о себе тоже smile.gif ... мне ведь тоже охота жить, а не париться и мучиться по многим вопросам.
Короче уважаемые ... я просто говорю как считаю ... и в лице Вас просто делюсь со знающими вопрос людьми.... так что не обессудьте.
Ладно! Рассчитываю на Ваше правильное понимание, сказанного мной!
Пока!
Batchir
Уважаемый Gigi, мне обычному сметному не уловить ход мыслей Вашего Гения.
У Вас вместо приведения конкретной области применения Ваших наработок выливается поток эмоций, сводящий всё к одной фразе "разработчики платформы - недоразработчики".
Я не отрицаю что чего-то может не хватать или что-то работает не так как нужно, есть баги и прочее (сам сталкиваюсь с этим) ... можно попробовать порассуждать, но нужно отталкиваться не от "разработчики платформы - недоразработчики", а от задачи, которую не получается решить с использованием типовых методов.
Опишите задачу и опишите своё решение, тогда будет интересно дискутировать. И в таком контексте может появится дополнительная информация, которую Вы не нарыли и которая поможет Вам переосмыслить свои алгоритмы или наоборот - Ваши алгоритмы и рассуждения кому-то помогут, кто столкнется когда-то с подобной задачей.

А пока что из-за Ваших эмоций лично у меня в голове постоянно звучит песня

и складывается впечатление что Вы всё время чините карбюратор через выхлопную трубу.
Gigi
Batchir @ Сегодня, 9:21 необходимо зарегистрироваться для просмотра ссылки ,
Цитата(Batchir @ 14.11.19, 9:21) необходимо зарегистрироваться для просмотра ссылки
Уважаемый Gigi, мне обычному сметному не уловить ход мыслей Вашего Гения.
У Вас вместо приведения конкретной области применения Ваших наработок выливается поток эмоций, сводящий всё к одной фразе "разработчики платформы - недоразработчики".
Я не отрицаю что чего-то может не хватать или что-то работает не так как нужно, есть баги и прочее (сам сталкиваюсь с этим) ... можно попробовать порассуждать, но нужно отталкиваться не от "разработчики платформы - недоразработчики", а от задачи, которую не получается решить с использованием типовых методов.
Опишите задачу и опишите своё решение, тогда будет интересно дискутировать. И в таком контексте может появится дополнительная информация, которую Вы не нарыли и которая поможет Вам переосмыслить свои алгоритмы или наоборот - Ваши алгоритмы и рассуждения кому-то помогут, кто столкнется когда-то с подобной задачей.

Гуу ...
smile.gif ))) ... Уважаемый ... прежде всего, что касается: "не уловить ход мыслей Вашего Гения". Я так НЕ ДУМАЮ! И считаю что на счет "Гения" сильно преувеличили. Сам я, в своих мыслях ничего гениального не вижу. И я тоже "обычный", такой же, как Вы. А если говорить о гениальностях, то, гении знаете кто? Те, которые создали систему 1С. Да, да именно … которые основали эту систему. Т.е. разработчики. Вот кто гении.smile.gif. Ну да, я понимаю, что слышать такое именно от этого автора Вас не то что удивляет, но и вообще не укладывается в голове, как это может быть такое. От того, который постоянно критикует систему 1С и ее создателей, и обвиняет их в недоработках, услышать такое? Как это вообще клеится? А вот представьте что клеиться. И как именно этого коснусь ниже.
А по поводу не понимания «хода мыслей» и «потока эмоций», я просто удивлен. И удивлен тем, что опять сталкиваюсь с непониманием. И это при том, что считаю что тут люди в основном понятливые. Ибо далеко не новички в системе 1С. Поэтому те, которые поймут с полуслова. Именно на это и рассчитывал когда решил поделиться с Вами. Думал, что поймут без детальных объяснений! Но в итоги что получается? Поэтому говорю Вам честно уважаемые … Вы меня удивляете … удивляете…. Что тут не понятного в «ходе мыслей» изложенного мной. Я все вроде бы изложил предельно ясно. И приводил даже образный сравнительный пример языка людского и машинного. Для лучшего понимания того, где выражение «Великий и могучий» справедливо, а где не очень. Я вроде бы все понятно изложил. Поэтому, извините, но я просто удивляюсь тому, как, при таком детальном и понятном изложении, можно еще умудриться, не понять «ход мыслей». И вместо главной сути, увидеть только какой то «поток эмоций». На мой взгляд, абсолютно не уместный и не справедливый в адрес изложенного мной. Поэтому не понятно где Вы там увидели «эмоций»? В том, о чем говорил. И откуда у Вас, по моим соображениям и по форме изложения, вообще возникла ассоциация с видео роликом: «PR-MEX - Письмо директору». Где парень находчиво и даже талантливо шутит по теме системы 1С, но при этом материться. И поет с оттенком пошлятины. Хоть и менее талантливо, но разве я так выражаюсь уважаемый? Так что, где в данной теме моих сообщений прослеживаются «эмоции»? Наоборот я старался излагать без этой не нужной, не приятной и главное бесполезной шелухи.
У меня пока не все … продолжу через пол часика… Так что, пока не закончил ..
pablo
Эмоции отслеживаются в междометиях и знаках препинания. Ну и в построении предложений.
Vofka
Цитата(Gigi @ 13.11.19, 9:28) необходимо зарегистрироваться для просмотра ссылки
Согласен! Можно было и по типу реквизита

Возможно я не понял что вы хотели сделать. Но зачем вам тип реквизита? Если я правильно понял ранее написанное, то вы хотели сделать что-то типа (это псевдокод):

Строка1 = ПолучитьСтроку1();
Строка2 = ТабличнаяЧасть.НоваяСтрока();
Если ЗначениеЗаполнено(Строка1.Реквизит1) Тогда
   Строка2.Реквизит1 = Строка1.Реквизит1;
ИначеЕсли ЗначениеЗаполнено(Строка1.Реквизит2) Тогда
   Строка2.Реквизит2 = Строка1.Реквизит2;
...
КонецЕсли;


Не?
Gigi
Цитата(Batchir @ 14.11.19, 9:21) необходимо зарегистрироваться для просмотра ссылки
и складывается впечатление что Вы всё время чините карбюратор через выхлопную трубу

Да какая труба? Какой карбюратор? Уважаемые ... Я не хотел это говорит по этическим соображениям, но Вы привели очень удачное сравнение. Точно Вам говорю.
Потому, что когда хочу вскрыть карбюратор, дело в том, что система не дает такой возможности. И поэтому сама система и заставляет только через "выхлопную трубу". Не по человеческий а через не знаю что..
И в итоги и получается у системы сам не могу и другому тоже не даю.
Цитата(Batchir @ 14.11.19, 9:21) необходимо зарегистрироваться для просмотра ссылки
У Вас вместо приведения конкретной области применения Ваших наработок выливается поток эмоций, сводящий всё к одной фразе "разработчики платформы - недоразработчики".

Вы знаете, думаю выражение: "разработчики платформы - недоразработчики" не правильная сводка изложенного мной. Она НЕ ВЕРНА!
Поэтому предлагаю Вам другой вывод. Более правильный и близкий к тому о чем толкую. И следовательно, перефразирую выражение по другому.
Вот таким образом:
Цитата
"РАЗРАБОТЧИКИ ПЛАТФОРМЫ ОЧЕНЬ УМНЫЕ И ГРАМОТНЫЕ, НО НЕ БОГИ, А ВСЕГО ЛИШЬ ЛЮДИ, ДЛЯ ТОГО ЧТО БЫ ПРЕТЕНДОВАТЬ НА ИСТИНУ!"

Я думаю это выражение и этот вывод гораздо справедливее в адрес изложенного мной. И гораздо ближе к тому о чем толкую.
Цитата(pablo @ 14.11.19, 11:57) необходимо зарегистрироваться для просмотра ссылки
Эмоции отслеживаются в междометиях и знаках препинания. Ну и в построении предложений.

Ну не знаю ... может быть ... но извините ... по сравнению с роликом "Письмо директору" ... да ладно уважаемые. Я слишком уважаю этот сайт smile.gif
И я тоже не робот ... так что ладно думаю простите ... на это и рассчитываю.
Цитата(Vofka @ 14.11.19, 12:03) необходимо зарегистрироваться для просмотра ссылки
Возможно я не понял что вы хотели сделать. Но зачем вам тип реквизита? Если я правильно понял ранее написанное, то вы хотели сделать что-то типа (это псевдокод):

Цитата(Vofka @ 14.11.19, 12:03) необходимо зарегистрироваться для просмотра ссылки
Строка1 = ПолучитьСтроку1();
Строка2 = ТабличнаяЧасть.НоваяСтрока();
Если ЗначениеЗаполнено(Строка1.Реквизит1) Тогда
   Строка2.Реквизит1 = Строка1.Реквизит1;
ИначеЕсли ЗначениеЗаполнено(Строка1.Реквизит2) Тогда
   Строка2.Реквизит2 = Строка1.Реквизит2;
...
КонецЕсли;

Да именно ... что-то в этом роде. Но это слишком грубый кодовый тон. Мне кажется, что это тот тон, который близок к команде Попытка/Исключение.
Ну блиин... Я же тут неоднократно слышал, что код должен быть мягче. Об этом ведь тут часто говорили. Но при этом что в итоге получается? что самое смешное smile.gif
Сама система вынуждает обращаться к себе только в ТАКОМ ТОНЕsmile.gif Вот что!
Хочу с ней помягче, и говорю системе: "заполни реквизит значением по типу СООТВЕТСТВЕННО уважаемый ", а она так не понимает.
А понимает по другому: "Заполни реквизит значением без указания типа балван! smile.gif И зафигач в поле то что сможешь". Вот как?
Гууу... И я еще тут слышал о мягком тоне?
Блиин мне опять смешно... че то слишком часто СМЕШНО! smile.gif

Ладно! Устал ... на сегодня думаю все!
Пока!
Vofka
Цитата(Gigi @ 14.11.19, 12:18) необходимо зарегистрироваться для просмотра ссылки
Да именно ... что-то в этом роде. Но это слишком грубый кодовый тон.

А вы не думали над вариантом, что сама задумка не очень удачная?

Цитата(Gigi @ 14.11.19, 12:18) необходимо зарегистрироваться для просмотра ссылки
Мне кажется, что это тот тон, который близок к команде Попытка/Исключение

Эта конструкция присутствует во всех современных языках разработки. Вы первый, кого я знаю, у кого от неё бомбит 32541850.gif
Gigi
Vofka @ Вчера, 21:54 необходимо зарегистрироваться для просмотра ссылки ,
Цитата(Vofka @ 14.11.19, 21:54) необходимо зарегистрироваться для просмотра ссылки
А вы не думали над вариантом, что сама задумка не очень удачная?

Не понятно, что Вы имеете ввиду, под выражением «сама задумка не очень удачная». Если конечную цель, то категорический с Вами не согласен!
Для этого коротко объясню, в чем она.
В начале, пользователь открывает форму объекта (справочника или документа, не важно). Потом нажимает на кнопку «Назначить реквизиты авто-заполнения» и появляется форма списка всех реквизитов конкретного справочника или документа с галочками. После чего в форме списка отмечает реквизиты для авто-заполнения, при создании нового объекта и нажимает на Ок. И тут, после чего идет запись в табличную часть справочника, на пример с именем: «AutoFill». Где по каждой строке сохраняются имена реквизитов под те значения, которые значились в самой открытой пользователем форме объекта. Сделав все это, после чего, пользователю остается уже в форме списка всего лишь, нажать на кнопку: «Создать». И по новому объекту появиться не та самая пустая форма (с пустыми полями), как обычно, а форма со значениями, которые были им же, назначены, по выбранным до этого реквизитам.
Вот как все работает!
Думаю, как понимается, все очень просто. В особенности для пользователя, которому программист дает возможность самому решать, что и как должно заполняться автоматический при создании нового объекта. И дает возможность так, что бы сделать это ему было проще простого… просто расплюнуть. Не так как иногда в платформе для программиста, сделать элементарное целая проблема, а наоборот. .. Тьфу ты… опять нечаянно выскочило smile.gif) … извините … пардон!
Так что, все по уму.
Поэтому если Вы имеете ввиду что это не удачная и не нужная затея то, я с Вами не согласен!
А если имеете ввиду, не саму цель, а способ то тут можно подискутировать.
По крайней мере я решил в таком стиле. Т.е. данные авто-заполнения куда то записать, для того что бы их откуда то получать. Вот как.
Теперь по поводу:
Цитата(Vofka @ 14.11.19, 21:54) необходимо зарегистрироваться для просмотра ссылки
Эта конструкция присутствует во всех современных языках разработки. Вы первый, кого я знаю, у кого от неё бомбит

Ну, это понятно, но ведь не для кого из программистов не секрет, что есть команды, которые чем меньше вообще используются тем лучше. И которые допустимы лишь в крайних случаях. И что некоторые команды точно не стоит лепить где попало и без разбору. Полагаясь на то что вроде работает и не выдает ошибку. Это плохой тон.
Это в особенности по поводу:
Цитата(Vofka @ 14.11.19, 21:54) необходимо зарегистрироваться для просмотра ссылки
Вы первый, кого я знаю, у кого от неё бомбит

Поэтому что касается данного конкретного случая то есть одно простое ПРАВИЛО! С которым никто из программистов думаю не будет спорить:
ПОЛЯ ДОЛЖНЫ ЗАПОЛНЯТЬСЯ ПО ТИПУ СООТВЕТСТВЕННО!
Это тоже АКСИОМА! Ибо если не придерживаться этого правила то получиться знаете что?
КУСТАРЩИНА, Вот что.
Ну ладно… допустим мы решили заполнять без указания типа.
Ну например в таком грубом стиле:
Цитата
Если ЗначениеЗаполнено(Строка1.Реквизит1) Тогда
   Строка2.Реквизит1 = Строка1.Реквизит1;

И думаю я тут никого не оскорбляю, ибо Вы тут не при чем. Не вы же виноваты в том, что создатели 1С кое-что не учли.
И допустим мы наплевали на тип и решили заполнить без этого. Что получиться в таком случае.
Знаете что? Что уже просто смех..
Если значение «Ссылка» то она попадет не только в поле с типом: «ЛюбаяСсылка», но и в поле с типом: «Строка». А если значение «Число» то, оно вставиться и в поле: «Число» и в поле: «Строка». smile.gif)
Аууу… короче … караул… мне опять смешно … опять… че то слишком часто smile.gif)
Ну вот видите что получиться если мы решили и игнорировать выше указанное правило. Получиться именно то, что и называется «кустарщина». Самая настоящая! И поверьте то, что получиться это обычно именно так и называется.
Так что, выше указанное правило нужно строго соблюдать. Любое отхождение от этого правила, это грубый тон и кустарщина!
И вообще, правило для того и существует что бы проблем не возникало.
pablo
Цитата
появляется форма списка всех реквизитов конкретного справочника или документа с галочками

Это уже плохая идея. Пользователь может не знать назначения половины реквизитов и назначить им произвольные значения по умолчанию, которые разбалансируют работу документа.
ИМХО, многовато свободы Вы пользователю даёте.
Gigi
Свободы
Цитата(pablo @ 15.11.19, 11:26) необходимо зарегистрироваться для просмотра ссылки
многовато свободы Вы пользователю даёте.

Свободы никогда не бывает много! Да здравствует СВОБОДА! smile.gif ... Пардон! Шутка! smile.gif
Но если серьезно Вы правы. Пользователю нельзя давать слишком много свободы. Согласен! В таком случае он может много чего набедокурить. И потом трудно всю эту хрень разгребать.
Но по поводу:
Цитата(pablo @ 15.11.19, 11:26) необходимо зарегистрироваться для просмотра ссылки
Это уже плохая идея. Пользователь может не знать назначения половины реквизитов и назначить им произвольные значения по умолчанию, которые разбалансируют работу документа

Вопрос важный, но решаемый... да ерунда...
Для этого можно в самой форме списка значений (в перечне реквизитов) отобразить не все реквизиты, а только некоторые.
Vofka
Цитата(Gigi @ 15.11.19, 10:11) необходимо зарегистрироваться для просмотра ссылки
В начале, пользователь открывает форму объекта (справочника или документа, не важно). Потом нажимает на кнопку «Назначить реквизиты авто-заполнения» и появляется форма списка всех реквизитов конкретного справочника или документа с галочками. После чего в форме списка отмечает реквизиты для авто-заполнения, при создании нового объекта и нажимает на Ок. И тут, после чего идет запись в табличную часть справочника, на пример с именем: «AutoFill». Где по каждой строке сохраняются имена реквизитов под те значения, которые значились в самой открытой пользователем форме объекта. Сделав все это, после чего, пользователю остается уже в форме списка всего лишь, нажать на кнопку: «Создать». И по новому объекту появиться не та самая пустая форма (с пустыми полями), как обычно, а форма со значениями, которые были им же, назначены, по выбранным до этого реквизитам.

Я так и не понял зачем вам в итоге понадобилось 4 поля? Можно же было сделать одно поле составного типа, в котором хранить значение любого типа.
Gigi
Цитата(Vofka @ 17.11.19, 14:28) необходимо зарегистрироваться для просмотра ссылки
Я так и не понял зачем вам в итоге понадобилось 4 поля? Можно же было сделать одно поле составного типа, в котором хранить значение любого типа.

Согласен! Но тип значения мне нужно знать в любом случае. На пример при получении данных из настроек авто-заполнения (данных которые хранятся в том самом справочнике «AutoFill»). И для чего нужно это долго объяснять. Что, не буду делать по этой причине. А вместо этого приведу уже другой пример использования. Более, думаю знакомый Вам, чем указанный выше, и поэтому более понятный и не требующий объемных объяснений.
Но до этого по поводу того, что усматриваю в подобных ответах и в том, что тут так настаивают представить примеры использования на пример функции «СведРеквизит». Которая, очередной раз обязана своим появлением у меня в общем модуле с аффиксом «Config_» в наименовании, не языку 1С, а языку XML. И которая уже чуть ли не тысячная, которую пришлось писать самому. И опять добавлять ее в модуль с тем же аффиксом в наименовании. Которых, именно с таким аффиксом, тоже уже набралось аж 20 и более. И главное, почему наименования этих модулей имеют аффикс: «Config_»… , почему так…, можете сами догадаться. Это для того, что бы, как только открываете исходник моей конфигурации, и смотрите на список общих модулей, что бы сразу же и невооруженным глазом, было видно, где моя работа (чисто прикладного характера), а где работа создателей системы 1С. Т.е. что бы уже даже по наименованию общих модулей было понятно, где работа программиста, а где разработчиков и то сколько раз программисту приходилось делать работу за них.
Так что, в том, что тут настаивают представить пример использования, а после этого утверждают, что нужно было, оказывается, сделать, иначе усматриваю малый подвох. И он в том, что бы оправдать грехи создателей 1С. И это при всем моем уважении и к создателям и к Вам. Ну, типа, те функции, над которыми работал на деле типа «не нужны» и поэтому я типа напрасно тратил время. Вот что усматриваю.
Именно поэтому опять повторяюсь, и опять удивляюсь, за что Вы переживаете уважаемые? За то, что очередная функция на пример в данном случае такая как: «СведРеквизит» останется не у дел и поэтому типа не нужна? Вы это хотите мне доказать? НЕ ПОЛУЧИТЬСЯ уважаемые! Еще раз повторюсь, при всем уважении к Вам.
Ну ладно, если выше указанный пример использования Вас не убедил, могу привести еще другой, думаю более знакомы Вам. Без проблем. И это я вообще делаю для Вас, раз так настаиваете, наивно полагая что я Вам не смогу привести пример использования. Смогу не переживайте уважаемые. И не один а десять. Так что это я для Вас та, а для меня лично функция «СведРеквизит» то, что она нужна это вообще АКСИОМА, не нуждающаяся даже в подтверждении примеров использования.
Так вот, Вы когда ни будь писали программу загрузки данных и формата Excel в базу данных 1С?
Думаю что да. И что не приходилось это мало вероятно. Ибо мне с меньшим опытом пришлось. И я делал это. И даже очень классно получилось. Могу сказать, что даже лучше того, что я скачал в готовом виде в сети.
Так вот, если вы писали подобную программу то Вам, думаю нет необходимости детально объяснять роль такой функции как на пример: «СведРеквизит» . И то что тут уж без этой функции ну никак не обойтись. Ибо когда, открываешь подобную программу для загрузки данных и указываешь метаданные загрузки то, во вкладке на пример: «Параметры реквизитов», где таблица значений, должны быть сведения по каждому реквизиту выбранного элемента метаданных. В том числе, что важно должен быть известен ТИП.
Вот, пожалуйста, еще один пример использования.
Поэтому уже на этот раз надеюсь, убедил в том, подобная функция нужна. Или опять не убедил?
А, уважаемые?
Убедил ли я в том, что лично для меня просто АКСИОМА!
Опять повторяюсь следующая:
«Про любой реквизит нужно знать ВСЕ»!
Только без негодования и без обид! Рассчитываю на правильное понимание!
Я всего лишь говорю то, что думаю… на что имею право… при всем моем уважении и к создателям 1С и к Вам.
У меня все!
Vofka
Цитата(Gigi @ 18.11.19, 10:33) необходимо зарегистрироваться для просмотра ссылки
Но тип значения мне нужно знать в любом случае.

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

ПС. ниже строчки из цитаты я не читал. Если там что-то важное есть - дайте знать, только не сильно большим количеством букв.
pablo
Попытались описать новый пример, но его не описали, а опять скатились в обвинения... Что за волшебная функция СведРеквизит?
Vofka
Цитата(pablo @ 18.11.19, 12:40) необходимо зарегистрироваться для просмотра ссылки
Попытались описать новый пример, но его не описали, а опять скатились в обвинения...

Ясно, спасибо! smile.gif

Цитата(pablo @ 18.11.19, 12:40) необходимо зарегистрироваться для просмотра ссылки
Что за волшебная функция СведРеквизит?

Подозреваю, что это итоговое имя функции, которую ТС сделал.
andr_andrey
Цитата(Gigi @ 18.11.19, 10:33) необходимо зарегистрироваться для просмотра ссылки
Ибо когда, открываешь подобную программу для загрузки данных и указываешь метаданные загрузки то

Откройте для себя стандартные механизмы XML и XSD.
Макс1С
Цитата(pablo @ 18.11.19, 12:40) необходимо зарегистрироваться для просмотра ссылки
Что за волшебная функция СведРеквизит

проскакивал листниг этой функции в одном из постов.
сегодня 3й раз перечитал всю тему, единственное что понял: функция ТипЗНЧ() - плохая , а дальше наборы слов.
Было бы интересно увидеть постановку задачи или тз, которая стояла перед ТС. Но в краткой трактовке ))))
Gigi
Vofka @ Вчера, 12:27 необходимо зарегистрироваться для просмотра ссылки ,
"Браво" уважаемые господа "браво"! Вот уже не думал, что при таких детальных и подробных объяснений проблематики опять столкнусь с тем же самым... с непониманием!
Ладно! Давайте отвечу Вам по порядку.
Цитата(Vofka @ 18.11.19, 12:27) необходимо зарегистрироваться для просмотра ссылки
Имя реквизита вы же храните? Имея имя реквизита и зная к какому объекту оно относится, не сложно программно определить его тип, поэтому хранить тип необходимости большой нету. Разве что вам очень критична производительность. Но и в этом случае можно отдельно хранить тип.

Имя реквизита? не сложно программно определить его тип? Уважаемый! Вы забыли поставить жирные кавычки в месте "не сложно" smile.gif))
Гууу... Ну Вы меня удивляете уважаемые ... честно говорю .. и поверьте тут ничего личного... просто такое впечатление, что Вы с таким не малым опытом "не знаете", о том геме который иногда возникает. В языке 1С очень многое сложно. Поэтому если это как Вы говорите на самом деле "не сложно" то покажите мне это НА ДЕЛЕ. А для этого скиньте мне хотя бы одну готовую функцию от великого языка 1С, которая возвращает тип по реквизиту. Покажите мне где такая функция в 1С. ГДЕ ОНА?
Только это и будет аргумент что я НЕ ПРАВ! А все остальное, в том числе и негодование от сказанного мной, все это пустая шелуха.
Я Вам могу показать собственную ... да ту самую "СведРеквизит"
Цитата(pablo @ 18.11.19, 13:40) необходимо зарегистрироваться для просмотра ссылки
Что за волшебная функция СведРеквизит?

необходимо зарегистрироваться для просмотра ссылки

Функция СведРеквизит(МетаданныеГруппа,МетаданныеИмя,Реквизит,Сведения) Экспорт  
Если МетаданныеГруппа=Неопределено или МетаданныеГруппа=Неопределено Тогда
    РеквизитОбъект = Реквизит;    
Иначе
    Если Найти(МетаданныеГруппа,"Регистры")=0 Тогда    
        РеквизитОбъект = Метаданные[МетаданныеГруппа][МетаданныеИмя].Реквизиты[Реквизит];
    Иначе
        Попытка
            РеквизитОбъект = Метаданные[МетаданныеГруппа][МетаданныеИмя].Измерения[Реквизит];
        Исключение
            РеквизитОбъект = Метаданные[МетаданныеГруппа][МетаданныеИмя].Ресурсы[Реквизит];
        КонецПопытки;    
    КонецЕсли;
КонецЕсли;
//=================================
ВозможныеТипы = РеквизитОбъект.Тип.Типы();  //Config_СтрМассив.Массив_Обход(ВозможныеТипы);    
Для каждого ЭлементТип Из ВозможныеТипы Цикл
типXML = XMLТип(ЭлементТип).ИмяТипа;
КонецЦикла;
//=================================
Если Найти(типXML, ".")=0 Тогда
//----------------------------------
Тип=СтрЗаменить(типXML,"string","Строка");
Тип=СтрЗаменить(Тип,"decimal","Число");
Тип=СтрЗаменить(Тип,"dateTime","Дата");
Тип=СтрЗаменить(Тип,"boolean","Булево");
Тип=СтрЗаменить(Тип,"UUID","УникальныйИдентификатор");
Тип=СтрЗаменить(Тип,"ValueStorage","ХранилищеЗначения");
ТипГруппа=Тип;
МетаданныеГруппа=Тип;
МетаданныеИмя=Тип;
МетаДанныеПолноеИмя=Тип;
//----------------------------------
Иначе
//----------------------------------
МетаданныеИмя = Сред(типXML,Найти(типXML,".")+1);
МетаданныеГруппаИмяXML = СтрЗаменить(типXML,"."+МетаданныеИмя,"");
//----------------------------------
МетаданныеГруппа=СтрЗаменить(МетаданныеГруппаИмяXML,"CatalogRef","Справочник");
МетаданныеГруппа=СтрЗаменить(МетаданныеГруппа,"DocumentRef","Документ");
МетаданныеГруппа=СтрЗаменить(МетаданныеГруппа,"EnumRef","Перечисление");
МетаданныеГруппа=СтрЗаменить(МетаданныеГруппа,"ChartOfCharacteristicTypesRef","ПланВидовХарактеристик");
МетаданныеГруппа=СтрЗаменить(МетаданныеГруппа,"ChartOfAccountsRef","ПланСчетов");
МетаданныеГруппа=СтрЗаменить(МетаданныеГруппа,"TaskRef","Задача");

// и т.д. ... Мне просто уже надоело заниматься кустарщиной, и опять и опять делать работу разработчиков ...

//----------------------------------
ТипГруппа="Ссылка";
Тип=МетаданныеГруппа+ТипГруппа+"."+МетаданныеИмя;
МетаДанныеПолноеИмя=МетаданныеГруппа+"."+МетаданныеИмя;
//----------------------------------
КонецЕсли;
//============================
Стр=Новый Структура();
Стр.Вставить("Группа",ТипГруппа);
Стр.Вставить("Тип",Тип);
Стр.Вставить("МетаданныеГруппа",МетаданныеГруппа);
Стр.Вставить("МетаданныеИмя",МетаданныеИмя);
Стр.Вставить("МетаДанныеПолноеИмя",МетаДанныеПолноеИмя);
//============================
    Если Сведения=Неопределено или Сведения="Все" Тогда
    знВозврат=стр;    
    Иначе
    знВозврат=стр[Сведения];
    КонецЕсли;
//============================
Возврат знВозврат;
//============================
КонецФункции


Так что вы тоже покажите, функцию не от XML, как указанная, а готовую от 1С. И только так и докажите мне как это "не сложно".
Цитата(Vofka @ 18.11.19, 12:27) необходимо зарегистрироваться для просмотра ссылки
ПС. ниже строчки из цитаты я не читал. Если там что-то важное есть - дайте знать, только не сильно большим количеством букв.

Напрасно... Ибо такое вообще полезно читать не только последователям 1С, но и самим основателям. Не помешает поверьте smile.gif А наоборот поможет приобрести на пример правильные взгляды. И поверьте, если взгляды основателей были бы более правильными то проблем не возникало бы. Но ладно, раз Вам не охота читать то, и я тоже не буду объяснять. Тем более то что уже написал выше. Где уже привел другой пример использования функции: "СведРеквизит". И то, что без этой функции просто НИКАК. И это если Вы когда ни будь писали на пример программу загрузки данных и формата Excel в базу данных 1С. А в остальном повторяться не буду. Потому что остальное указано выше, в предыдущем сообщении: "#34".
Цитата(pablo @ 18.11.19, 13:40) необходимо зарегистрироваться для просмотра ссылки
Попытались описать новый пример, но его не описали, а опять скатились в обвинения.

Не правда! Если Вы читали я описал его. И описал конкретно, а не абстрактно. А что касается обвинений то об этом тоже написал. Равно как и написал причину того, почему не "скатился " а возвысился над рабством перед системой 1С. Дело в том, что для этого в конфигурации, слишком много модулей набралось с аффиксом "Config_" в наименовании. И поэтому слишком часто приходилось делать работу разработчиков 1С. Что и бесило. В особенности тогда когда приходилось решать очень сложные прикладные задачи. И меня то и бесило, что вместо этого вынужден был заниматься разной ерундой делая за них(разработчиков). И тратить на это кучу времени. Так что, почему объединения тут думаю меня понять можно.
И вообще, почему я так беспощаден к системе Вас это удивляет уважаемые?
На самом деле ничего удивительного..
Я просто не люблю бестолковщину! Я ее просто НЕНАВИЖУ! Понимаете?
Но это мое личное восприятие. Которое для не должно иметь никакого значения.
Значение имеет только одно единственное:
ПРАВ ЛИ Я В СВОИХ ОБВИНЕНИЯХ?
ВОТ ЧТО?
Это единственное что имеет значение, а остальное НЕ ВАЖНО! Вы с этим будете спорить?
Так что, какая разница обвиняю или нет. Самое главное прав ли я. Если прав то, какие претензии к сказанному мной может быть.
Вот и докажите мне уважаемые что "Не прав".
А для этого прямо тут скиньте мне ГОТОВУЮ ФУНКЦИЮ ОТ 1С, КОТОРАЯ ПОЛУЧАЕТ ТИП ПО РЕКВИЗИТУ!
Вот что я Вам советую уважаемые. И это до того, что бы обвинять мня не сдержанности ... и вместо этого. Так что, это прежде всего...
У меня все!
Vofka
Цитата(Gigi @ 19.11.19, 9:48) необходимо зарегистрироваться для просмотра ссылки
прямо тут скиньте мне ГОТОВУЮ ФУНКЦИЮ ОТ 1С, КОТОРАЯ ПОЛУЧАЕТ ТИП ПО РЕКВИЗИТУ!

Метаданные.Справочники.ВидыОплатОрганизаций.Реквизиты["ДоговорКонтрагента"].Тип

Это слишком сложно, согласен. Ваш вариант куда проще.
Gigi
Цитата(Vofka @ 19.11.19, 11:16) необходимо зарегистрироваться для просмотра ссылки
Метаданные.Справочники.ВидыОплатОрганизаций.Реквизиты["ДоговорКонтрагента"].Тип

Это слишком сложно, согласен. Ваш вариант куда проще.

Ша проверю годиться ли ...

Gigi @ Сегодня, 12:15 необходимо зарегистрироваться для просмотра ссылки ,
Ураааа ... smile.gif Функция возвращающая тип по реквизиту оказывается СУЩЕСТВУЕТ! Какой класс а? Слава богу что имеется.
Ладно! 1-0 в Вашу пользу smile.gif.
Но давайте не будем на этом останавливаться. А продолжим поединок, где пока выигрываете Вы. с счетом 1-0. Ибо Вы мне доказали что функция существует в системе.
И это аргумент согласен! И тут я признаю свое поражение. Потому что для этого слишком уважаю аргумент.
Так что, предлагаю продолжить поединок и будет ясно кто выиграет в конце и с каким счетом. smile.gif
А для этого разберемся вот с этим:
Цитата(Gigi @ 19.11.19, 12:15) необходимо зарегистрироваться для просмотра ссылки
Это слишком сложно, согласен. Ваш вариант куда проще.

И с тем чей вариант на самом деле проще использовать НА ДЕЛЕ! Мой вариант функции или вариант от 1С.
Поэтому ладно ... идем дальше.
Поэтому следующий вопрос:
На пример такая ситуация есть документ "Документ1".
Поэтому полное имя типа будет "ДокументСсылка.Документ1".
И допустим то что справа от точки нам не нужно знать. А нужно только то что слева.
Как это сделать указанной Вами системной командой 1С? smile.gif
Вот такой вот вопросик Вам!

Gigi @ Сегодня, 12:38 необходимо зарегистрироваться для просмотра ссылки ,
Я задал Вопрос!
Если ответа не последует то, уже тут я выиграл и сравнил счет. Который будет уже 1-1. smile.gif
После чего есть еще другие вопросы и тоже интересно каков будет счет. smile.gif
Vofka
Гууу. crazy.gif
Мне уже не интересно вам что-то доказывать или в чем-то убеждать. Если хотите дальше заниматься садомазохизмом - это ваш выбор. mamba.gif
Gigi
Цитата(Vofka @ 19.11.19, 12:58) необходимо зарегистрироваться для просмотра ссылки
Мне уже не интересно вам что-то доказывать или в чем-то убеждать. Если хотите дальше заниматься садомазохизмом - это ваш выбор.

Ладно ... smile.gif Понятно 1-1 счет сравнили.
А если нужно знать не тип а группу (то, это ссылка или объект или примитивный тип) тогда как? ... это уже 2-1 в мою пользу... и т.д. smile.gif
А на счет садомазохизма согласен! Ибо делать работу за разработчиков это на самом деле садомазохизм smile.gif)
Ладно забыли!
И еще ... да не злитесь Вы на автора.
На самом деле мне очень нравиться этот сайт и я его очень уважаю. Равно как и людей собравшихся тут.
За его демократичность и возможность высказывать тут любое мнение!
Вот за что!

Ладно! Всем спасибо уважаемые!
За терпение и понимание!
Макс1С
Не удержался чтобы не ответить. Насколько я понимаю суть задачи описана так:
Цитата(Gigi @ 15.11.19, 10:11) необходимо зарегистрироваться для просмотра ссылки
Потом нажимает на кнопку «Назначить реквизиты авто-заполнения» и появляется форма списка всех реквизитов конкретного справочника или документа с галочками. После чего в форме списка отмечает реквизиты для авто-заполнения, при создании нового объекта и нажимает на Ок. И тут, после чего идет запись в табличную часть справочника, на пример с именем: «AutoFill». Где по каждой строке сохраняются имена реквизитов под те значения, которые значились в самой открытой пользователем форме объекта

Т.е. дать пользователю возможность заполнить 1 раз значения по умолчанию, сохранить их и в дальнейшем подставлять в документ.

На реализацию в самописной базе чернового варианта я потратил чуть больше времени (засёк - 32 минуты) чем в 4й раз перечитывая эту ветку и несоизмеримо меньше, пытаясь понять что курит ТС.
&НаСервере
Процедура НужныйОбъектПриИзмененииНаСервере()
    // НужныйОбъект - ссылка, даже пустая элемента справончика или документа
    // ТаблицаЗначенийРеквизитов - ТЗ на форме
    // в которой пользователь будет заполнять всё, что хочет
    Мет = НужныйОбъект.Метаданные();
    Если  Метаданные.Документы.Содержит(Мет)  Тогда
        ВидОбъекта = "Документ";
    ИначеЕсли Метаданные.Справочники.Содержит(Мет) Тогда
        ВидОбъекта = "Справочник";
    Иначе
        Возврат;
    КонецЕсли;
    
    ТипОбъекта = Мет.Имя;
    
    Для Каждого Рекв Из Мет.Реквизиты Цикл        
        НовСтр = ТаблицаЗначенийРеквизитов.Добавить();
        // для идентификации какой объект заполнять,
        // хотя здесь тоже можно 1 реквизитом обойтись
        НовСтр.ВидОбъекта = ВидОбъекта;
        НовСтр.ТипОбъекта = ТипОбъекта;    
        
        НовСтр.ИмяРквизита = Рекв.Имя;
        // для составого типа будет массив, непринипиально
        НовСтр.ТипДанных = Рекв.Тип;
    КонецЦикла;
КонецПроцедуры

&НаКлиенте
Процедура НужныйОбъектПриИзменении(Элемент)
    НужныйОбъектПриИзмененииНаСервере();
КонецПроцедуры

&НаКлиенте
Процедура ТаблицаЗначенийРеквизитовПриАктивизацииЯчейки(Элемент)    
    Если Элемент.ТекущийЭлемент.Имя = "ТаблицаЗначенийРеквизитовЗначениеРеквизита" Тогда
        ТекущиеДанные = Элементы.ТаблицаЗначенийРеквизитов.ТекущиеДанные;

        Если ЗначениеЗаполнено(ТекущиеДанные.ТипДанных) Тогда
            // кроме этого места, когда пользователь выбирает данные, тип больше нигде не нужен
            Элемент.ТекущийЭлемент.ОграничениеТипа = ТекущиеДанные.ТипДанных;
        КонецЕсли;
    КонецЕсли;    
КонецПроцедуры

&НаСервере
Процедура СохранитьШаблонНаСервере()
    Набор = РегистрыСведений.ДанныеАвтозаполнений.СоздатьНаборЗаписей();
    Набор.Отбор.ВидОбъекта.Установить(ВидОбъекта);
    Набор.Отбор.ТипОбъекта.Установить(ТипОбъекта);
    
    Набор.Прочитать();
    Набор.Очистить();
    
    // заполненную значениями таблицу можно сохранить в регистр сведений или куда угодно !!!БЕЗ ТИПОВ!!!
    // при заполнении нового элемента значениями по-умолчанию мне всё равно какой там тип.    
    Для Каждого Стр Из ТаблицаЗначенийРеквизитов Цикл
        Если ЗначениеЗаполнено(Стр.ЗначениеРеквизита) Тогда
            НоваяЗапись = Набор.Добавить();
            ЗаполнитьЗначенияСвойств(НоваяЗапись,Стр);
        КонецЕсли;
    КонецЦикла;
    
    Набор.Записать();
КонецПроцедуры

&НаКлиенте
Процедура СохранитьШаблон(Команда)
    СохранитьШаблонНаСервере();
КонецПроцедуры




так что счёт 0-22(половина постов этой темы) не в вашу пользу
Моё мненеие: вам очень сильно нужно учить матчасть и потренироваться строить структуру ваших решений до начала программирования с более опытными коллегами. Ну и кончено не выливать кучу рассуждений на форумах, вместо того чтобы озвучить внятно задачу и попросить помощи.
Отдельные посты я бы вообще потер, чтобы, не дай бог, не попались кому-то начинающему на глаза, который всерьёз воспримет все ваши АКСИОМЫ.
Vofka
Цитата(Макс1С @ 19.11.19, 14:33) необходимо зарегистрироваться для просмотра ссылки
Моё мненеие: вам очень сильно нужно учить матчасть и потренироваться строить структуру ваших решений до начала программирования с более опытными коллегами.

У ТС-а мнение такое: все должно делаться просто с помощью интуиции, в чем он пытается всех убедить. А что-то учить, как я понял, для ТС-а это принципиальный вопрос, ответ на который: нет. crazy.gif

Кстати, а почему вы ЗначениеРеквизита вставили в реквизиты, а не в ресурсы?
Batchir
В регистре сведений абсолютно без разницы где будет храниться значение в реквизите или в ресурсе, они равнозначны.
Оставили такую структуру регистра сведений для того что бы была общая концепция составов регистров:
- Измерения
- Ресурсы
- Реквизиты
Vofka
Цитата(Batchir @ 19.11.19, 15:50) необходимо зарегистрироваться для просмотра ссылки
В регистре сведений абсолютно без разницы где будет храниться значение в реквизите или в ресурсе, они равнозначны.

Если регистр периодический, то обращаясь к таблицам СрезПервых/СрезПоследних там разве доступны реквизиты?
Batchir
Цитата(Vofka @ 19.11.19, 16:18) необходимо зарегистрироваться для просмотра ссылки
Если регистр периодический, то обращаясь к таблицам СрезПервых/СрезПоследних там разве доступны реквизиты?

Да, доступны. Так же как и в ресурсах регистра сведений (в отличии от других регистров) можно указывать не только числа
Макс1С
Цитата(Vofka @ 19.11.19, 15:15) необходимо зарегистрироваться для просмотра ссылки
Кстати, а почему вы ЗначениеРеквизита вставили в реквизиты, а не в ресурсы?

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