Версия для печати темы (https://pro1c.org.ua/index.php?s=248d8a31b918e8bfb057c2d239e610e7&showtopic=54707)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 8.3 _ Системная функция "ТипЗнч()" - не вопрос, а просто мнение

Автор: Gigi 18.10.19, 12:07

Всем опять привет!
В данном случае вышел на форум не по поводу вопроса, а по поводу просто мнения.
Не знаю, уместно ли это и есть ли польза какая то от этого.
Хотя думаю все таки есть. По крайней мере думаю гостям данного сайта пригодится.
В особенности новичкам в системе 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 18.10.19, 13:11

Загадочное сравнение молотка обычного и отбойного...

Автор: Gigi 18.10.19, 13:24

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

Автор: Petre 18.10.19, 14:01

Наверное, я один настолько ущербный, что ничего не понял из этого потока сознания...

Автор: Gigi 18.10.19, 14:11

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

Да ничего понимать не надо ... а нужно самому один раз столкнуться smile.gif тогда могу уверить Вас поймете smile.gif Лучше всяких слов .. .куда денетесь
Короче ... ладно ... я решил просто поделиться ... не более ... может я не прав, а может прав на ВСЕ СТО!! Не знаю... не мне судить.
Я просто поделился ... а дальше и Вы и гости сайта рассудите прав или нет.
А в остальном я очень благодарен этому сайту и всем Вам уважаемые.
Ибо если честно на этом сайте я просто вырос smile.gif. Благодаря Вам!
Так что спасибо!
А на сегодня у меня все!
Пока! smile.gif

Автор: Petre 18.10.19, 14:44

Тоже решил поделиться. Вот, пожалуйста, юзайте (и намного короче):

Функция ПоЗначению(Значение, ЗначВозврата) Экспорт
    
    Возврат Config_String_серв.ПоЗначению(Значение, ЗначВозврата);
    
КонецФункции

Автор: Gigi 18.10.19, 18:39

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 19.10.19, 10:40

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 19.10.19, 13:32

Gigi @ Сегодня, 10:40 * ,
Друг... кто ясно мыслит, тот ясно выражается. У меня пошла из мозга кровь, когда я начал читать...

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

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

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

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

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

Слово в слово... угадал мои мысли.

Автор: Gigi 19.10.19, 21:31

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 21.10.19, 14:36

Gigi @ 19.10.19, 21:31 * ,
Да .. еще … по поводу:

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

Ладно так и быть.
Решил все-таки, специально для этого создать новую тему,
Вот эту …
https://pro1c.org.ua/index.php?showtopic=54754&st=0#entry156724
И это что бы
Цитата(Gigi @ 19.10.19, 22:31) *
уважать их время.

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

НЕ СОГЛАСЕН!
На самом деле, в своей функции, ничего гениального не вижу. А это только одно их самых элементарных из того что было необходимо.
Ладно! Еще раз приношу извинения, если был резок!
Спасибо за понимание!

Автор: Batchir 08.11.19, 13:26

Gigi,
ЖКК

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


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


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

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

Автор: MATEVI 08.11.19, 23:16

А может Вам просто нужно было это?

XMLЗначение


Автор: Gigi 12.11.19, 12:26

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 12.11.19, 12:33

Цитата(Gigi @ 12.11.19, 12:26) *
Отмечу только то что функция ТипЗнч() годна только в таком стиле

А вам как надо было?

Автор: Gigi 12.11.19, 12:50

Цитата(Vofka @ 12.11.19, 13:33) *
А вам как надо было?

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

И для этого еще приведу один пример использования о котором тут уже говорил в другой теме.
Допустим реквизиты табличной части: "ЗначениеСсылка"(тип: "ЛюбаяСсылка"), "ЗначениеСтрока", "ЗначениеЧисло", "ЗначениеДата" и т.д.
И вот тема такая.... нужно получить значение. И при его получении создается новая строка табличной части. И заполняется соотв-ими значениями. Но из указанных полей, по каждой стоке, должно заполняться только одна из них. И при этом не известно что за это значение, которую нужно будет получить и вставить в одно из выше указанных реквизитов. И к какой группе оно относиться.
Вот один из примеров использования.

Автор: Vofka 12.11.19, 16:10

Gigi @ Сегодня, 12:50 * ,
В вашем примере известно же заранее какой реквизит какого типа. Непонятно зачем тут вообще тип проверять.

Автор: pablo 12.11.19, 16:46

ИМХО, пример не из жизни. Это больше нужно при сериализации значений, чем при обычной работе.

Автор: Vofka 12.11.19, 18:33

Цитата(pablo @ 12.11.19, 16:46) *
ИМХО, пример не из жизни.

А мне кажется, что это у нас не настолько интересная жизнь, по сравнению с автором crazy.gif

Автор: Gigi 13.11.19, 9:28

Цитата(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 13.11.19, 10:42

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

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

Автор: pablo 13.11.19, 11:34

Юзеру глубоко фиолетово на все типы данных в программе и функции для работы с ними. И сериализация юзеру не нужна, так как он работает с результатом, а не с процессами внутри программы.


Автор: Gigi 13.11.19, 11:44

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

Ну да ... именно так ... но блин ... я ведь не только о нем но и о себе тоже smile.gif ... мне ведь тоже охота жить, а не париться и мучиться по многим вопросам.
Короче уважаемые ... я просто говорю как считаю ... и в лице Вас просто делюсь со знающими вопрос людьми.... так что не обессудьте.
Ладно! Рассчитываю на Ваше правильное понимание, сказанного мной!
Пока!

Автор: Batchir 14.11.19, 8:21

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

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

и складывается впечатление что Вы всё время чините карбюратор через выхлопную трубу.

Автор: Gigi 14.11.19, 10:52

Batchir @ Сегодня, 9:21 * ,

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

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

Автор: pablo 14.11.19, 10:57

Эмоции отслеживаются в междометиях и знаках препинания. Ну и в построении предложений.

Автор: Vofka 14.11.19, 11:03

Цитата(Gigi @ 13.11.19, 9:28) *
Согласен! Можно было и по типу реквизита

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

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


Не?

Автор: Gigi 14.11.19, 12:18

Цитата(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 14.11.19, 20:54

Цитата(Gigi @ 14.11.19, 12:18) *
Да именно ... что-то в этом роде. Но это слишком грубый кодовый тон.

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

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

Эта конструкция присутствует во всех современных языках разработки. Вы первый, кого я знаю, у кого от неё бомбит 32541850.gif

Автор: Gigi 15.11.19, 10:11

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 15.11.19, 10:26

Цитата
появляется форма списка всех реквизитов конкретного справочника или документа с галочками

Это уже плохая идея. Пользователь может не знать назначения половины реквизитов и назначить им произвольные значения по умолчанию, которые разбалансируют работу документа.
ИМХО, многовато свободы Вы пользователю даёте.

Автор: Gigi 15.11.19, 10:32

Свободы

Цитата(pablo @ 15.11.19, 11:26) *
многовато свободы Вы пользователю даёте.

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

Вопрос важный, но решаемый... да ерунда...
Для этого можно в самой форме списка значений (в перечне реквизитов) отобразить не все реквизиты, а только некоторые.

Автор: Vofka 17.11.19, 13:28

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

Я так и не понял зачем вам в итоге понадобилось 4 поля? Можно же было сделать одно поле составного типа, в котором хранить значение любого типа.

Автор: Gigi 18.11.19, 10:33

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

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

Автор: Vofka 18.11.19, 11:27

Цитата(Gigi @ 18.11.19, 10:33) *
Но тип значения мне нужно знать в любом случае.

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

ПС. ниже строчки из цитаты я не читал. Если там что-то важное есть - дайте знать, только не сильно большим количеством букв.

Автор: pablo 18.11.19, 12:40

Попытались описать новый пример, но его не описали, а опять скатились в обвинения... Что за волшебная функция СведРеквизит?

Автор: Vofka 18.11.19, 14:52

Цитата(pablo @ 18.11.19, 12:40) *
Попытались описать новый пример, но его не описали, а опять скатились в обвинения...

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

Цитата(pablo @ 18.11.19, 12:40) *
Что за волшебная функция СведРеквизит?

Подозреваю, что это итоговое имя функции, которую ТС сделал.

Автор: andr_andrey 18.11.19, 15:10

Цитата(Gigi @ 18.11.19, 10:33) *
Ибо когда, открываешь подобную программу для загрузки данных и указываешь метаданные загрузки то

Откройте для себя стандартные механизмы XML и XSD.

Автор: Макс1С 18.11.19, 18:16

Цитата(pablo @ 18.11.19, 12:40) *
Что за волшебная функция СведРеквизит

проскакивал листниг этой функции в одном из постов.
сегодня 3й раз перечитал всю тему, единственное что понял: функция ТипЗНЧ() - плохая , а дальше наборы слов.
Было бы интересно увидеть постановку задачи или тз, которая стояла перед ТС. Но в краткой трактовке ))))

Автор: Gigi 19.11.19, 9:48

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 19.11.19, 10:16

Цитата(Gigi @ 19.11.19, 9:48) *
прямо тут скиньте мне ГОТОВУЮ ФУНКЦИЮ ОТ 1С, КОТОРАЯ ПОЛУЧАЕТ ТИП ПО РЕКВИЗИТУ!

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

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

Автор: Gigi 19.11.19, 11:44

Цитата(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 19.11.19, 11:58

Гууу. crazy.gif
Мне уже не интересно вам что-то доказывать или в чем-то убеждать. Если хотите дальше заниматься садомазохизмом - это ваш выбор. mamba.gif

Автор: Gigi 19.11.19, 12:02

Цитата(Vofka @ 19.11.19, 12:58) *
Мне уже не интересно вам что-то доказывать или в чем-то убеждать. Если хотите дальше заниматься садомазохизмом - это ваш выбор.

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

Ладно! Всем спасибо уважаемые!
За терпение и понимание!

Автор: Макс1С 19.11.19, 14:33

Не удержался чтобы не ответить. Насколько я понимаю суть задачи описана так:

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

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

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

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

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

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

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

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




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

Автор: Vofka 19.11.19, 15:15

Цитата(Макс1С @ 19.11.19, 14:33) *
Моё мненеие: вам очень сильно нужно учить матчасть и потренироваться строить структуру ваших решений до начала программирования с более опытными коллегами.

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

Кстати, а почему вы ЗначениеРеквизита вставили в реквизиты, а не в ресурсы?

Автор: Batchir 19.11.19, 15:50

В регистре сведений абсолютно без разницы где будет храниться значение в реквизите или в ресурсе, они равнозначны.
Оставили такую структуру регистра сведений для того что бы была общая концепция составов регистров:
- Измерения
- Ресурсы
- Реквизиты

Автор: Vofka 19.11.19, 16:18

Цитата(Batchir @ 19.11.19, 15:50) *
В регистре сведений абсолютно без разницы где будет храниться значение в реквизите или в ресурсе, они равнозначны.

Если регистр периодический, то обращаясь к таблицам СрезПервых/СрезПоследних там разве доступны реквизиты?

Автор: Batchir 19.11.19, 17:07

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

Да, доступны. Так же как и в ресурсах регистра сведений (в отличии от других регистров) можно указывать не только числа

Автор: Макс1С 19.11.19, 17:56

Цитата(Vofka @ 19.11.19, 15:15) *
Кстати, а почему вы ЗначениеРеквизита вставили в реквизиты, а не в ресурсы?

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

Автор: Gigi 20.11.19, 9:43

Гуу уважаемые ... Я опять удивлен... потому что опять вижу что ...

Цитата(Макс1С @ 19.11.19, 15:33) *
На реализацию в самописной базе чернового варианта я потратил чуть больше времени (засёк - 32 минуты) чем в 4й раз перечитывая эту ветку и несоизмеримо меньше, пытаясь понять что курит ТС.

Короче ... опять ... какой это 4-ый раз уважаемые? Я специально изложил подробно и понятно что бы было ясно что нужно было. О Господи.. Ведь думал что и без этого поймут с полу слова.
Цитата(Макс1С @ 19.11.19, 15:33) *
Т.е. дать пользователю возможность заполнить 1 раз значения по умолчанию, сохранить их и в дальнейшем подставлять в документ.

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

Счет 0-22 или сколько? Может 0-51? потому что уже 51-ый пост в этой теме.
Это мы еще посмотрим уважаемые! smile.gif Да уж прямо ... разбежались. Вы так уверены в безукоризненности системы 1С? Я Вам покажу какая это "безукоризненная" система. И при этом, подчеркиваю НИЧЕГО ЛИЧНОГО! Абсолютно! Уверяю Вас. Так что пожалуйста без не нужного личного восприятия того что говорю. Так что я покажу вам о какой "идеальной! системе идет речь. И каков будет общий счет мы это еще посмотрим!
Цитата(Vofka @ 19.11.19, 16:15) *
Кстати, а почему вы ЗначениеРеквизита вставили в реквизиты, а не в ресурсы?

Вы имеете ввиду в реквизиты табличной части справочника? Потому что я именно так и сделал. И имеете ввиду почем так сделал? Да потому, что регистр сведений к сожалению не имеет табличной части. Что опять удивляет почему создатели 1С так сделали. Без ТЧ. И поэтому вынужден был создать регистр сведений: «IP» с одним измерением: IP. И с ресурсом: «AutoFill» (С типом: "СправочникСсылка.AutoFill"). И вот как раз справочник: «AutoFill» не имеет реквизитов а только табличную часть. Где и хранятся данные для авто-заполнения под каждый IP. И значение наименование этого справочника это IP пользователя.
Ну тут можно было записывать не под IP а под пользователя или под и того и другого. Но я так решил для начала. Для теста. Все это и именно так я сделал для увеличения скорости получения данных авто-заполнения. Т.е. вначале идет запрос в рег сведений по конкретному IP. Потом узнается ссылка на справочник где хранятся данные а уже потом анализ табличной части. Вот как. Так просто быстрее. И кроме того так вообще удобнее для даже интерактивного понимания у кого какие настройки. Т.е. одна настройка один элемент справочника с соотв-им IP в наименовании. А все остальное в ТЧ справочника. И я изначально вообще хотел обойтись без справочника. Т.е. все данные хранить в реге. Но не получилось, потому что рег не имеет ТЧ. Опять не понимаю логику ПОЧЕМУ.
Но ладно ... это что касается цели которая только щас стала понятна. И поэтому предлагаю Вам уважаемые, давайте оставим ее в покое. Просто возьмем и забудем ее. А вернемся к изначальной теме данных постов. Т.е. к заглавию данной дискуссии. Ибо я вообще не хотел объяснять в чем цель. И решил изложить ее ибо тут на этом настаивали. Так что давайте забудем это, а вместо этого вспомним изначальную тематику. Да ту самую системную функцию ТипЗнч(). И это для того что бы разобраться в том, на самом ли деле система так "идеальна" как некоторые считают. И потом посмотрим каков будет счет. 0-22 или 22-0. Так что мы это еще увидим.
И в ОСОБЕННОСТИ разберемся вот с этим:
Цитата(Макс1С @ 19.11.19, 15:33) *
моё мнение: вам очень сильно нужно учить матчасть и потренироваться строить структуру ваших решений до начала программирования с более опытными коллегами. Ну и кончено не выливать кучу рассуждений на форумах, вместо того чтобы озвучить внятно задачу и попросить помощи.
Отдельные посты я бы вообще потер, чтобы, не дай бог, не попались кому-то начинающему на глаза, который всерьёз воспримет все ваши АКСИОМЫ.

И с тем на самом деле кого нужно слушать начинающему программисту. Вас уважаемые последователи системы 1С. Более опытных или меня с гораздо меньшим опытом. Так же как в сказке Андерсона про голого короля. Где ребенок оказался умнее, чем все взрослые вместе взятые. И выиграет ли начинающий если воспримет всерьез те на самом деле АКСИОМЫ, о которых полезно было бы знать основателям 1С, или наоборот проиграет.
Поэтому предлагаю оставить в покое цель. Ибо что вы думаете? Которая казалось бы нужная. Но Вы думаете я вам сказал все проблемы которые возникают при ее реализации? Ошибаетесь! Да если я Вам начну объяснять со сколькими проблемами я столкнулся для решения поставленной задачи то дискуссия получиться просто гигантской. При том, что итак не малая.
Поэтому начну с простого и элементарного и с чистого листа
Цитата(Макс1С @ 19.11.19, 15:33) *
Моё мненеие: вам очень сильно нужно учить матчасть и потренироваться строить структуру ваших решений до начала программирования с более опытными коллегами.

Вот и думаю удачная возможность посоветоваться с Вами уважаемые. Как с более опытными.
Так вот системная функция: "ТИПЗНЧ()"
РАУНД ПЕРВЫЙ:
Допустим, полученное значение это "СправочникСсылка.Справочник1".
И допустим нас не интересует что справа от точки. А интересует только то что слева.
Вопрос: Как с помощью функции ТипЗнч() узнать то что слева от точки.
Вот такой вопрос. И это первый раунд smile.gif
И давайте пожалуйста прежде чем объявлять счет 0-22, до этого с этого и начнем. С самого элементарного.
И пожалуйста если решите ответить на этот вопрос могу ли я Вас попросить не спрашивать для чего это нужно. Знать только то что слева от точки. Пожалуйста не задавайте такой вопрос вообще. Нужно и точка!
Сперва покажите мне возможно ли это знать из функции ТипЗнч(), так же легко и просто как уже в моей функции. А для чего нужно с этим позже разберемся.
Так вот, я задал Вам вопрос. И это первый раунд.

Автор: Batchir 20.11.19, 16:47

Давайте без "допустим"? ТипЗнч возвращает тип переданного в неё значения (неожиданно, да?).

ТипЗнч("СправочникСсылка.Справочник1") - это строка, какую информацию Вы хотите получить от параметра типа "Строка"?
Для того что бы получить всё что слева нужно использовать методы, которые предназначены для строк.

ЧтотоСлева = СтрРазделить("СправочникСсылка.Справочник1",".")[0];

или вот, основываясь на посте Vofka,
ПроверяемыйТип = Метаданные.Справочники.ВидыОплатОрганизаций.Реквизиты["ДоговорКонтрагента"].Тип;
ЧтотоСлева = СтрРазделить(Метаданные.НайтиПоТипу(ПроверяемыйТип .Типы()[0]).ПолноеИмя(),".")[0];

(это сарказм если что)


Поэтому, укажите конкретно относительно чего вы хотите получить ту информацию которую просите от ТипЗнч?
А то опять 1000 букв, но одна вода.

Автор: Макс1С 20.11.19, 16:58

Цитата(Gigi @ 20.11.19, 9:43) *
Я специально изложил подробно и понятно что бы было ясно что нужно было

Ничего подобного. В одном посте я нашел упоминание задачи, всё остальное - вода.
Цитата(Gigi @ 20.11.19, 9:43) *
проблемами я столкнулся для решения поставленной задачи

не интересно сколько проблем. Большинство, если не все, от незнания или нежелания изучить правильные подходы для решения задач. Озвученная задача достаточно тривиальна для того, чтобы изобретать велосипеды.
Искренне понимаю, что трудно признать свой много-дневный/месячный труд не идеальным из-за неверного подхода в самом начале, но ничего страшного, на ошибках учатся.
Цитата(Gigi @ 20.11.19, 9:43) *
Так вот системная функция: "ТИПЗНЧ()"

не знаю чем вас зацепила эта функция... О том что может любая функция и для чего она предназначена описано в документации к каждой системе, не только к 1С.
Вы расчесываетесь вилкой? На хлеб намазываете зубную пасту? к слову о том что инструмент не важен... вы пытаетесь сработавший в одном случае инструмент применить в других, неподходящих, целях. Открыв пивную бутылку ложкой, пытаетесь открыть ложкой окно или глаза спящему человеку.
Цитата(Gigi @ 20.11.19, 9:43) *
Вопрос: Как с помощью функции ТипЗнч() узнать то что слева от точки.

Как с помощью самоката уехать на луну?
Как зубочисткой убить кита?
Как с помощью линейки и циркуля построить квадратуру круга?

Внимание, правильный вопрос: "Как узнать то что слева от точки?"
Ответ в моём предыдущем посте, в самом начале листинга, вместе с примером решения задачи, которую вы озвучили.

Цитата(Gigi @ 20.11.19, 9:43) *
И это первый раунд.

Никаких раундов. Это была последняя бесплатная консультация

Автор: Gigi 21.11.19, 11:18

Гуу ... Вы знаете уважаемые ... начну по поводу "Воды".
Дело в том, что в детстве я не понимал одну гениальную сказку Андерсона. А понял ее только тогда когда повзрослел.
Вы все мне твердите о том, какой я типа профан и незнайка необтесанный?
Я в любом случае уважаю Ваше мнение, и даже готов довериться Вам. И согласиться с Вами как с более опытными. Но я почему то не спешу это делать. Потому что как у Станиславского "Не Верю". И более того, вижу подвох в ваших словах, имеющий цель оправдать, недоработки системы 1С, и списать это на мои типа "не знания". И кроме того, я знаю некоторых очень опытных на деле. Имел такую возможность. Был тоже один коллега с большим опытом, но в итоги то как он сделал директору пришлось отбраковать. И внедрить то как я сделал с гораздо меньшим опытом. И когда я переносил данные из его базы в свою его база была похожа не на базу, а на мусоросвалку. Где по каждому отчетному месяцу документы дублировались в 20-ти местах. Вот и сидел и разгребал всю эту хрень более опытного. И знаете почему у коллеги так получилось? У опытного но чуть ленивого. Который просто решил дирекции пыл в глаза пустить. Ну типа раньше работали в Excel, и вот давайте внедрим 1С. потому что это лучше и круче. Т.е. конкретный пример того, когда человек воспользовавшись брендом 1С решил пустить пыл в глаза. А сам результат его не очень то и волновал. А дирекция разве понимает, что бренд это одно, а криво-косо можно сделать где угодно. И тут с одной стороны 1С не причем. Ибо система 1С ведь не рассчитана на очковтерателей. Но это с одной стороны. А с другой стороны, знаете, в чем тут не маловажный нюанс. И в чем опять очередная недоработка среды разработки 1С. В том, что реквизиты документов не имеют свойство измерения. Такое же как у рега сведений. Вот в чем. Ну, согласитесь, если основатели 1С это предусмотрели бы, и вообще ДОДУМАЛИСЬ бы до того, что можно было так сделать то, программисту было бы гораздо проще. И тогда гораздо проще было бы сделать, так что бы база данных по документам не превращалась в мусоросвалку. Если у каждого реквизита документа была бы такая булевая опция как на пример: «уникальное значение». В таком случае программист в нашем случае мог бы поставить галочку на пример на три реквизита: «Юр. лицо», «Год», «Месяц». И в таком случае значения по этим трем реквизитам нигде не дублировались бы. Это еще одна очередная недоработка системы 1С.
И по не доработкам в системе 1С …. гууу… их так много что аж статью можно написать на эту тематику.
А вы мне еще говорите о «не знании»?

Цитата(Макс1С @ 20.11.19, 17:58) *
не интересно сколько проблем. Большинство, если не все, от незнания или нежелания изучить правильные подходы для решения задач. Озвученная задача достаточно тривиальна для того, чтобы изобретать велосипеды.
Искренне понимаю, что трудно признать свой много-дневный/месячный труд не идеальным из-за неверного подхода в самом начале, но ничего страшного, на ошибках учатся.

НЕ ПРАВДА! ЛОЖЬ! Самая натуральная!
Вы знаете сколько раз я выходил на данный сайт и сколько раз убеждался, что 1С опять не может, и опять НЕ УМЕЕТ! Что то слишком часто это имело место. И поверьте точно не от «не знания», а наоборот от знания «больших возможностей» системы. smile.gif)
Цитата(Макс1С @ 20.11.19, 17:58) *
нежелания изучить правильные подходы для решения задач. Озвученная задача достаточно тривиальна для того, чтобы изобретать велосипеды.
….. из-за неверного подхода в самом начале, …

«Тривиальная задача»? Да если 1С умела бы исполнять те самые «тривиальные» просто наибанальнейшие задачи smile.gif то велосипед мне изобретать точно не пришлось бы поверьте.
«Правильные подходы»? smile.gif)
Знаете в чем, на мой взгляд ПРАВИЛЬНЫЙ ПОДХОД?
Ну на пример по поводу этого пардон «садомазохиза» от системы 1С:
Цитата(Batchir @ 20.11.19, 17:47) *
ПроверяемыйТип = Метаданные.Справочники.ВидыОплатОрганизаций.Реквизиты["ДоговорКонтрагента"].Тип;
ЧтотоСлева = СтрРазделить(Метаданные.НайтиПоТипу(ПроверяемыйТип .Типы()[0]).ПолноеИмя(),".")[0];

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

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

Gigi @ Сегодня, 12:12 * ,
Теперь по поводу сказки и по поводу опять как вы считаете «Воды».
Вы знаете в известной сказке Андерсона, которую в детстве не понимал, были три стороны. Сам король, взрослые и ребенок. И дело в том, что голый король до этого шагал без стыда. Но когда ребенок открыл глаза взрослым, дав им понять какие они СЛЕПЫЕ. И когда взрослые, с помощью РЕБЕНКА, стали зрячими и увидели, что король голый, сам король только тогда и засмущался. И только тогда ему уже стало СТЫДНО! А без этого он и дальше шагал бы без стыда. И в итоги РЕБЕНОК это единственный кто оказался прав. Направив взрослых на правильный путь.
Теперь сами догадайтесь уважаемые, кто в нашем случае король, кто те взрослые, умные и грамотные не сморю, а кто ребенок!
Цитата(Макс1С @ 20.11.19, 17:58) *
Как с помощью самоката уехать на луну?
Как зубочисткой убить кита?
Как с помощью линейки и циркуля построить квадратуру круга?

О господи… какая луна? Какой кит? Че то Вас уважаемые опять тянет вверх с это системной 1С. И что-то опять Вам охота взлететь. И достать аж до луны, тогда как сама система даже ходить по человеческий и то не позволяет без прихрамывания. Поэтому ладно… оставим в покое эту злосчастную функцию: «ТипЗнч» и отойдем от темы. И чуть отдохнем от нее. И знаете для чего? Для того что бы проверить кое что и кое в чем убедиться или наоборот «разубедится».
И поэтому хотите я прямо тут проверю кое что. А именно то, стоит ли Вам и Вашим словам вообще доверять. Или если доверять то не во всем, а кое-где усматривать подвох. И сделаю это прямо тут и за две минуты.
Для этого Вам прямо тут под конец хочу задать один простой вопрос. Который уже задавал на этом сайте но ничего стоящего понимания не услышал.
Почему в системе 1С нет готовой функции, которая склонят ФИО?
И почему такую функцию мне в свое время пришлось искать в сети? И которую к счастью нашел
https://pro1c.org.ua/redirect.php?http://infostart.ru/public/16470/
Эту функцию написали знаете кто? Да именно, как в сказке «дети»…, те самые. По сравнению со спецами основателями 1С. Так что, ее написали СТУДЕНТЫ программист и лингвист. И даже они, в отличие от основателей 1С, додумались и догадались сами, что подобная функция в 1С НУЖНА!
Интересно, а почему же сами разработчики не догнали написать ее? А уважаемые?
Или Вы и тут скажете о моем типа «не знании»? smile.gif))) Может Вы, и тут спишите грехи 1С на это? smile.gif)))
Может Вы считаете, что она типа «не нужна»? И что студенты впустую наверно тратили время.
Это всего лишь один из многочисленных вопросов. И знаете сколько таких грехов в 1С?
ЗНАЕТЕ СКОЛЬКО? Да это просто целое море. Аж статью можно написать на эту тему.
Так вот уважаемые, если Вы скажете что такой функции в 1С нет потому, что «не нужна», то в таком случае с Вами уже все ясно! И нет смысла даже обсуждать дальше с теми, которые так считают. Называя это «правильным подходом». Все ясно с Вами в таком случае. И с Вами и с Вашим «правильным подходом».
Вот собственно простой способ, проверить стоит ли Вашему «правильному подходу» всегда доверять. И это как новичку, так и более опытному.
Опять приношу свои большие извинения за большое количество букв. И ту самую как вы выразились «Воду». Которая только для слепых пуста и безвкусна, а для более зрячих содержит в себе очень важную информацию.
Так что ИЗВИНИТЕ еще раз. Я не мог не ответить.
Гууу… У меня все!

Автор: andr_andrey 21.11.19, 12:24

Gigi @ Сегодня, 11:18 * ,
Почему в С#, Go, Python, Бейсик - "нет готовой функции, которая склонят ФИО?"
Не отвечайте, вопрос риторический, но возможно такая формулировка именно вам поможет не писать глупости.

Автор: Gigi 21.11.19, 12:35

Цитата(andr_andrey @ 21.11.19, 13:24) *
не писать глупости.

"глупости"? Короче ладно... спорить не буду... Студенты тоже наверно были глупцами.
Глупость я только что услышал. Ну извините ... без обид пожалуйста! Ничего личного... Просто я говорю что думаю.
И поэтому забыл добавить к сказанному то, что искать романтику в такой дисциплине как физика, конечно глупо. Так же как в языках С#, Go, Python, Бейсик функцию склонения ФИО.
Ну а если сам Шекспир жил бы в современное время и стал бы программистом. И решил бы научить машину сочинять стихи то, он точно не заказал бы язык программирования для этого у 1С.
И для своей не простой и гениальной задачи точно не пользовался бы тем языком программирования который даже склонять НЕ УМЕЕТ!

Автор: Макс1С 21.11.19, 12:41

Нет смысла спорить с "королём" который знает только слова "хочу так как я сказал".

Автор: Gigi 21.11.19, 12:46

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

Автор: Макс1С 21.11.19, 12:59

Gigi @ Сегодня, 12:46 * ,
Это я про вас писал, о луне на самокате, как о бессмысленных вопросах, которые вы тут задаете. Не знаю еще как вам объяснить, что вы упорно пытаетесь решить задачу инструментом, который для этого не предназначен и считаете инструмент плохим.

Автор: Gigi 21.11.19, 13:44

Цитата(Макс1С @ 21.11.19, 13:41) *
Нет смысла спорить с "королём" который знает только слова "хочу так как я сказал".

Вы не угадали кому принадлежит роль короля в этой теме. Знаете кому? Системе 1С. Вот кому. Ибо это н самом деле король в сфере офисных приложений с базой данных.
С единственной поправкой того, что король вовсе не голый, а у него на туфлях шнурок развязан, а костюм слишком мал. Штаны слишком короткие ... вернее одна часть длинее чем другая и т.д.
Поэтому на то и нужны окружающие что бы указать королю где у него не так.
Цитата(Макс1С @ 21.11.19, 13:59) *
Это я про вас писал, о луне на самокате, как о бессмысленных вопросах, которые вы тут задаете. Не знаю еще как вам объяснить, что вы упорно пытаетесь решить задачу инструментом, который для этого не предназначен и считаете инструмент плохим.

Может быть ... ну да согласен ... ТипЗнч() на самом деле предназначен только для этого:
ИстинаЛожь=ТипЗнч(Значение)=Тип("СоправочникСсылка.Справочник1")

Это единственное на что она годна. Абсолютно!
Но что касается ФИО это все таки нужно в 1С. Я так считаю.

Gigi @ Сегодня, 14:05 * ,
Ладно! Под конец что хотел сказать на счет нашего уважаемого славного короля под названием система 1С.
И это что бы тут не думали что я вижу в нем только недостатки а достоинства не замечаю!
Ничего подобного!
Это ОЧЕНЬ удобная среда разработки! ОЧЕНЬ!
Там сделано ВСЕ КАК НАДО! Что правда то правда.
Если открыть конфигурацию и посмотреть на список элементов метаданных. На пункты: "Справочники", "Документы", "РегистрыСведений", "РегистрыНакопления", "Отчеты" и т.д. все то что нужно.
И все именно так должно было выглядеть как сделали основатели и никак иначе. Я сравнивал 1С с Акссес просто небо и земля. 1С лучше и быстрее работает. Акссес не так удобен как 1С и вообще сильно тормозит. Короче полный отстой. 1С другое дело. Так что в целом это ПРЕВОСХОДНАЯ среда разработки.
А по поводу того, что я тут постоянно атакую создателей 1С то это на первый взгляд кажется что вижу только недостатки. А на самом деле это не так.
Ибо если судить в целом то для лучшего понимания что имею ввиду могу сказать что на 95% система 1С сделана шикарно!
Это БЕССПОРНО! Т.е. все то недовольство о которых тут говорил вмешаются всего лишь 5%. А может и меньше. Это по сравнению с достоинствами.
Но к сожалению эти 5% тоже дают знать о себе и ощущаются. И это тоже много... Настолько что, как уже говорил, аж статью можно написать.
Ладно! Вот что хотел добавить напоследок!
Что бы не думали что вижу только недостатки раз так часто атакую.
Гууу... ладно устал уже с этой темой!
И думаю пора оставить ее в покое!
В любом случае много полезного услышал уважаемые!
Поэтому всем большое спасибо!
Пока!

Автор: Batchir 21.11.19, 14:23

Gigi, Земля плоская и стоит на трех китах

Автор: Vofka 21.11.19, 14:26

Цитата(andr_andrey @ 21.11.19, 12:24) *
Почему в С#, Go, Python, Бейсик - "нет готовой функции, которая склонят ФИО?"

Потому что это такие же недоязыки, как и 1С crazy.gif

Автор: andr_andrey 21.11.19, 18:31

Цитата(Gigi @ 21.11.19, 12:35) *
И для своей не простой и гениальной задачи точно не пользовался бы тем языком программирования который даже склонять НЕ УМЕЕТ!

Назовите пожалуйста хоть один язык программирования, который умеет склонять?
Эту тему надо делать "Пятничной".

Цитата(Gigi @ 21.11.19, 13:44) *
Я сравнивал 1С с Акссес просто небо и земля. 1С лучше и быстрее работает. Акссес не так удобен как 1С и вообще сильно тормозит. Короче полный отстой.

Я не понимаю, как вы такое сочиняете, это же тролинг высшей пробы. 12201689.gif

Автор: Gigi 25.11.19, 9:26

Цитата(andr_andrey @ 21.11.19, 19:31) *
Я не понимаю, как вы такое сочиняете, это же тролинг высшей пробы.

Короче уважаемые ... вижу что дискуссия чуть накалилась. И вот вот уже, не дай бог перейдет в личные знаки "уважения". Не хотелось бы этого. Потому что это НЕ ДОПУСТИМО! В таком случае лучше прекратить весь этот диалог.
Поэтому знаете как поступим?
Давайте пожалуйста возьмем и отбросим все что связанно с эмоциональным восприятием вопроса. И очистим голову от этого. Имею ввиду то, что я тут неоднократно слышал упрек в том, что я свободно высказывая свое мнение, не помню дословно но примерная цитата: "оскорбляю чувства благоговения перед этим калькулятором 1С".
Именно поэтому иногда не знаю как поступить. С одной стороны у меня есть некие выводы и я знаю что высказав их, это может некоторым не понравится и будут обвинять что оскорбляю. При том, что честно Вам говорю у меня нет такой цели. Поверьте .. "тролить" и заниматься этим пустым и никчемным безобразием. Так что, высказав мнение я боюсь что кому то оно не понравится. Именно поэтому с одной стороны лучше конечно помалкивать, и свое мнение держать при себе. Но дело в том, что на то и мне нравится этот сайт, что я тут могу говорить то что думаю. Именно за это и уважаю ... за его демократичность. Так что, свое мнение можно держать при себе, но не знаю, просто есть вопросы на которые где то есть свой же ответ а где то нет. И мне просто интересно услышать мнение.
Поэтому давайте отбросим вопрос "благоговения" и то, что тут много последователей системы 1С. Очистим голову от этого.
Лично у меня нет никаких чувств к любой среде разработки. НИКАКИХ! У меня разум абсолютно свободен от этого. И поэтому то что 1С это бренд мне это безразлично.
Потому, что бренд иногда бывает результатом не качества а пиара. Я щас не об 1С. Так что, я исхожу только из того, что на деле.
Так что, я абсолютно тут беспристрастен!
Поэтому давайте порассуждаем на холодную и беспристрастную голову.
Я хочу всего лишь говорить то что думаю. И при этом даже не думать о том, нравится это кому то или нет. Чем и нравиться мне этот сайт.
Цитата(andr_andrey @ 21.11.19, 19:31) *
Назовите пожалуйста хоть один язык программирования, который умеет склонять?
Эту тему надо делать "Пятничной"

Вы знаете, на ум приходит такая страна как Америка. На мой взгляд, знаете почему она такая мощная. И занимает такое лидирующее положение в мире. Думаете потому что ее граждане умнее чем другие? Ничего подобного! Дело в менталитете и в отношении к делу. Т.е. в отличие от нас они не стремятся постоянно кого то догонять. Ну типа раз в других языках нет функции склонения то нам тоже незачем это предусматривать. А стремятся быть всегда ПЕРВЫМИ! И быть первыми ВО ВСЕМ! Именно поэтому они и лидеры.
Цитата(Vofka @ 21.11.19, 15:26) *
Потому что это такие же недоязыки, как и 1С

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

Выдаст не полное имя ссылки: "СправочникСсылка.Справочник1", а только ее часть т.е. напишет: "Справочник1".
ПОЧЕМУ? Почему так сделано... Так неудобно!
Т.е. в итоги эта несчастная функция: "ТипЗнч()" даже полное имя ссылочного значения не может выдать.
И Вы думаете я не в курсе того, что она возвращает тип как объект, а не как текстовые сведения. Я это понимаю, но не понимаю почему так коряво.
Вот мой вопрос по теме.
У меня все!

Автор: Gigi 25.11.19, 11:39

Ладно Пока!

Автор: Vofka 25.11.19, 11:52

Цитата(Gigi @ 25.11.19, 9:26) *
вижу что дискуссия чуть накалилась.

Скорее, зашла в тупик. Вы остались при своем мнении и отстаиваете его, это ваше право. За всех не скажу, но у меня мнение на этот счет другое и мне просто не интересно дальше с вами об этом говорить.

Цитата(Gigi @ 25.11.19, 9:26) *
И вот вот уже, не дай бог перейдет в личные знаки "уважения"

Это исключено. У нас приличное сообщество. mamba.gif

Автор: Gigi 25.11.19, 12:47

Цитата(Vofka @ 25.11.19, 12:52) *
Это исключено. У нас приличное сообщество.

Не сомневаюсь ... Просто все равно сталкиваюсь с негативом.
Я ведь просто решил задать вопросы. И ничего личного!
Ладно! Видимо как не крути оппонент как бы ты не старался все равно вызывает негатив.
И это потому что я думаю не так как некоторые и многие тут.


И мне тоже уже надоело... ибо я в итоги тут ничего внятного не услышал. Только одни оскорбительные обвинения какой я типа "незнайка".
А они сами типа крутые. Сыт я по горло такими. Супер опытными ... Настолько опытными, что мне меньшим опытом потом нужно было переделывать ту хрень которую они намазюкали. Так что у меня от слова "опытный" уже аллергия. И знаю я таких ... кто они на деле.
Так что ладно... мне тоже не интересно и надоело. Тем более доказывать то, что 2+2 это НЕ ПЯТЬ!
Так что всем большое спасибо и пока!

Автор: pablo 25.11.19, 14:35

Цитата
Тип=ТипЗнч(ЗначениеСсылка); 
Сообщить(Тип);
Здесь проблема не в функции ТипЗнч, а в сериализации значения типа ТипДанных. Вы таки путаете понятия.
В других языках есть такие же функции typeof(), которые тоже выдают "неудобные" значения. В тех языках "неудобность" компенсируют внешними библиотеками функций (иногда эти библитеки включают в поставку продуктов), но никогда это не решали средствами языка.
В новых языках (как правило, полностью объектно-ориентированных), подобные функции могут выдавать текст, который Вам желательно видеть, но это малая часть от всех языков программирования. А Вы по-прежнему требуете, чтобы язык соответствовал именно Вашему видению по составу.

Автор: Gigi 28.11.19, 12:58

Цитата(pablo @ 25.11.19, 15:35) *
Здесь проблема не в функции ТипЗнч, а в сериализации значения типа ТипДанных. Вы таки путаете понятия.
В других языках есть такие же функции typeof(), которые тоже выдают "неудобные" значения. В тех языках "неудобность" компенсируют внешними библиотеками функций (иногда эти библитеки включают в поставку продуктов), но никогда это не решали средствами языка.
В новых языках (как правило, полностью объектно-ориентированных), подобные функции могут выдавать текст, который Вам желательно видеть, но это малая часть от всех языков программирования. А Вы по-прежнему требуете, чтобы язык соответствовал именно Вашему видению по составу.

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

И по тематике напечатал комментарий на этот ответ, который, опять получился слишком длинный.
И раз так думал, стоит ли публиковать этот комментарии, тут вообще, раз опять 1000 букв, которые было не охота сокращать и укорачивать.
Но ладно, черт с ним. Решил опубликовать. И тем самым вообще опять поделиться мнением. В особенности по поводу того, в чем вижу подвох, когда кто-то говорит о моем типа «непонимании» разных вопросов. Пытаясь все и вся списать на это.

Комментарий

Цитата(pablo @ 25.11.19, 15:35) *
Здесь проблема не в функции ТипЗнч, а в сериализации значения типа ТипДанных. Вы таки путаете понятия.

Ну да, я догадывался, что, так … что тут дело в типе данных. И в том, как он смотрится в текстовом формате, и как сериализуется. Но это лишь причина того, что выдает ТипЗнч(). И не знаю как это воспринимают другие, но я считаю что так не должно быть. И это даже при этом аргументе:
Цитата(pablo @ 25.11.19, 15:35) *
В других языках есть такие же функции typeof(), которые тоже выдают "неудобные" значения. В тех языках "неудобность" компенсируют внешними библиотеками функций (иногда эти библитеки включают в поставку продуктов), но никогда это не решали средствами языка.

Т.е. мне без разницы как в других языках. А волнует только то, что так «неудобно» и это факт. Поэтому, внешние библиотеки функций и т.д. это все хорошо, но … не знаю…., на мой взгляд, это все равно что бы для вбития гвоздя молотком предлагать еще какой-то дополнительный инструмент, между молотком и гвоздем. На пример клин. Который непонятно для чего нужен, когда есть молоток. Которому, для вбития гвоздя, вроде бы не нужен посредник. Поэтому по поводу: «никогда это не решали средствами языка». Непонятно почему. Так же как и то, для чего молотку и гвоздю нужен посредник. Именно поэтому касательно:
Цитата(pablo @ 25.11.19, 15:35) *
А Вы по-прежнему требуете, чтобы язык соответствовал именно Вашему видению по составу.

Не знаю, но мне кажется, что это не то что соответствует моему личному видению, а то, что вообще удобно в объективном смысле. Ну, по крайней мере, мне так кажется.
Ибо, как только недавно прямо тут понял, полное имя значения ссылочного типа системным путем можно получить вот так:
    
ПроверяемыйТип = ТипЗнч(Значение);    
ТипПолноеИмя=Метаданные.НайтиПоТипу(ПроверяемыйТип).ПолноеИмя();
Сообщить("Тип - Полное имя: "+ТипПолноеИмя);

Но Вы знаете, сколько времени потратил, что бы это узнать. Вначале рыл в сети и где то говорилось что это возможно через XML. И написал даже функцию для этого. Ту самую, которая вначале данной темы указана.
Я эту функцию, позже у себя переименовал на «СведЗнч». И еще и доработал ее. И текущий вариант функции выглядит вот так:
СведЗнч(Значение,Сведения,Проверка)

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

Да уж, «Круто». Да на кой черт она нужна как, видишь ли, отдельная функция, если это единственное на что она годна.
И мне без разницы как в других языках. Почему я в этой теме говорил что «не верю». Не верю тем, которые утверждают, что это так должно быть, а иначе сделать было типа «невозможно». И типа именно поэтому основатели языка так и сделали. А любое мое недовольство списывают на мое типа непонимание. Знаете, почему я усматриваю подвох в таких утверждениях?
Для этого приведу пример компаний создающих антивирусы. Думаете, они работают только надо разработкой антивирусов? Нет не только. Они еще работают, знаете над чем? smile.gif Над созданием самих вирусов. Вот над чем. smile.gif И тут ведь все просто. Что бы продавать свои антивирусы, ведь нужно еще и создавать сами вирусы. Вот так и получается, что компания, официально пишет антивирусы, а не официально их создает. И это потому, что так прибыльнее. И чисто по коммерческим соображениям.

Вот почему я не верю в то, когда кто-то утверждает, что в языке программирования должно быть, именно так и никак иначе. И почему вижу подвох. Ибо ведь понимаю, что язык программирования тоже создают люди. И понимаю, какими они иногда могут быть «честными». И как это они иногда могут делать на «совесть».
Гууу ... ладно! Всем спасибо!
У меня все!

Автор: pablo 28.11.19, 14:44

Цитата
Не знаю, но мне кажется, что это не то что соответствует моему личному видению, а то, что вообще удобно в объективном смысле. Ну, по крайней мере, мне так кажется.
В этой фразе Вы сами себя опровергли. На основании собственного мнения Вы выводите объективное удобство. Без функции ТипЗнч() очень тяжело работать в языке с динамической типизацией. И с точки зрения компилятора интерпретатора (и программиста, соответственно) гораздо быстрее сравнивать типизированные значения, чем строки.


Автор: Gigi 27.12.19, 11:43

Да еще ... забыл добавить и прокомментировать кое что .... пост автора с ником: "Макс1".

Цитата(Gigi @ 19.11.19, 13:02) *
Не удержался чтобы не ответить. Насколько я понимаю суть задачи описана так:
Т.е. дать пользователю возможность заполнить 1 раз значения по умолчанию, сохранить их и в дальнейшем подставлять в документ.

Думаю данная тема уже закрыта, но я тоже не удержался что бы не ответить под конец.
Цитата(Gigi @ 19.11.19, 13:02) *
На реализацию в самописной базе чернового варианта я потратил чуть больше времени (засёк - 32 минуты) чем в 4й раз перечитывая эту ветку и несоизмеримо меньше, пытаясь понять что курит ТС.

Ну конечно уважаемый! Если бы мне кто-то изложил бы готовую идею в таком пережеванном виде, ту идею, которую Вы назвали "тривильной" и настолько "тривиальной", что аж сами основатели 1С почему то до нее не додумались то, в таком случае ее реализация у меня заняло бы еще меньше времени поверьте .
Так что, когда сама идея уже пережевана и уже определено что и как должно работать, воплотить все это конечно проще и занимает на много меньше времени.
А я ведь к идее не сразу пришел. Для окончательного варианта пришлось повозиться с пробами решений. Например первоначальная идея была сохранить значения авто-заполнения не по списку реквизитов, а для каждого реквизита отдельно. Т.е. в контекстное меню каждого реквизита вставить кнопки: "Назначить значение для авто-заполнения" и "очистить значение авто-заполнения". Идея вроде бы была не плохая, но для ее реализации требовалось одно важное условие. Эти кнопки должны были фигурировать в глобальном смысле. Вот какое условие. Что бы по каждому реквизиту вручную не вставлять одни и те же кнопки. Назначение которых для всех реквизитов одни и те же. Ибо в противном случае это все равно что бы на пример кнопки: "Копировать"-"Вставить" вручную вставлять в контекстное меню, для каждого реквизита отдельно. И заниматься подобной ерундой в стиле "мартышкиного труда". Так что эта была первоначальная идея. Но как только взялся ее воплотить, система 1С тут же навалила кучу ограничений и препятствий. Именно поэтому от такого решения пришлось отказаться. Ибо разве в 1С так сделать могло быть "предусмотрено"? ... Естественно ... И предусмотрена возможность решения даже "тривиальных" задач. Поэтому, как только столкнулся со всем этим гемором, решил отказаться от изначального решения, и реализовать идею через две кнопки для нескольких реквизитов. Но вставить даже эти две кнопки в каждой форме документа в глобальном контексте не обошлось без проблем. Так что, как понимается, задача и тут кое где стала невозможной. Именно поэтому уже думаю не отказаться ли от этой "тривиальной" smile.gif идеи вообще. Потому что ведь не охота эти глобальные кнопки вручную скрывать для форм нового объекта. И делать это потому, что в 1С присутствует очередная недоработка. Которая в том, что нет глобальной подписи на событие: "ПриСозданииНаСервере". И признайтесь, если в системе такая подпись вообще существовала бы то, в таком случае, не было бы никаких проблем. И это существенно упрощало не только вопрос данной идеи, но и многое другое. Так что, на самом деле, зачем мне должно быть охота мучить себя, если сами основатели системы 1С не захотели чуть помучиться и предусмотреть такую подпись на событие.
Теперь что касается вашего Решения вопроса на которое ушло 32 минуты, и моего решения для сравнения.
В принципе Ваше решение не сильно отличается от моего. Разница в том, что у Вас список реквизитов авто-заполнения в виде таблицы значения, которую нужно еще создавать. а у меня в виде списка значений с галочками. Ибо не захотел что либо создавать для такого примитивного списка. И это и не целесообразно в таких случаях, как сам считаю. Зачем ... не вижу смысла. Это ведь примитивный список. Просто список реквизитов с галочками, а значения указаны на самой форме. Они не нужны в списке. Но ладно ... это не сильно важно.
Идем дальше....
Дело в том, что Ваше решение имеет одну важную недоработку. Ибо оно рассчитано для всех пользователей без исключения. При том, что сама идея авто-заполнения должна работать не для всех одинаково, а для каждого пользователя, и более того, как сам думаю, аж даже для каждого ПК индивидуально. А иначе само авто-заполнение зачем нужна. Ибо в противном случае что получается?
Допустим один пользователь назначил одни значения авто-заполнения для одной группы реквизитов, другой другие значения для другой, чем настройки первого сбил с толку. smile.gifsmile.gif И в таком случае, боюсь, что первый увидев это, начнет звонить второму и говорить ему: "ты че натворил паразит!" ... И возникнет конфликт между сотрудниками smile.gifsmile.gif. А ведь в любой организации должна царить здоровая атмосфера smile.gifsmile.gif))). Поэтому что бы сотрудники между собой не ругались, все это должно работать для каждого максимально индивидуально. Вот такая вот важная недоработка.
Поэтому в Вашем решении в регистре сведений: "ДанныеАвтозполнений", где есть измерения: "ВидОбъекта", "ТипОбъекта" ... к тому нужно еще добавить две измерения: "ИмяПользователя" и "IP". Или хотя бы один из этих двух. Это на усмотрение программиста. Я сделал под "IP". Хотя считаю, что нужно было и под пользователя тоже. А измерения "ВидОбъекта","ТипОбъекта", "ИмяРеквизита" перенести в ресурсы или в реквизиты. По крайней мере я бы так сделал бы.
Так что, в целом мое мое решение такое же как и Ваше. Просто я сделал чуть по другому.
У Вас все данные настроек авто-заполнения находятся в реге сведений: "ДанныеАвтозполнений". А у меня в табличной части с именем:"AutoFill_Данные", справочника с именем на пример: "AutoFill". Без реквизитов. Где в значении наименования всегда IP машины. А регистр сведений с тем же именем: "AutoFill", который используется для ссылки на объект этого справочника, имеет одно измерение:"IP" и один ресурс: "AutoFill_Ссылка" (с типом: "СправочникСсылка.AutoFill"). Вот как в моем варианте.
И это для того что бы в интерактивном режиме было нагляднее у кого какие настойки. И что бы, для того что бы узнать это не приходилось еще писать запросы и выгружать данные, и тем самым, делать дополнительную кодовую работу. Т.е. что бы в интерактивном режиме самой базы было в стиле, одна настройка, одна строка (объект) динамического списка. А все остальное в табличной части. И я вообще изначально хотел обойтись без справочника, но позже вспомнил, что регистр сведений ведь не имеет табличную часть. Ну да ... и тут основатели 1С наверно решили, что в регистре сведений он типа "не нужен"!
Ладно!
Гууу ... я просто неисправим ... опять целая петиция получилась... опять 1000 букв.
Ладно... думаю опять простите за это... Ибо думаю от автора такой объем Вас уже не удивляет. Уже наверно привыкли smile.gif))
И не обязательно ответить на эту целую петицию. Я просто решил поделиться как есть... и поленился укорачивать текст поста.
Так что, не обессудьте!
У меня все!

Автор: Gigi 27.12.19, 15:52

Gigi @ Сегодня, 12:43 * ,
Стоп ... пардон!
Одна логическая ошибка:

Цитата(Gigi @ 27.12.19, 12:43) *
А измерения "ВидОбъекта","ТипОбъекта", "ИмяРеквизита" перенести в ресурсы или в реквизиты. По крайней мере я бы так сделал бы.

Не правильно! В ресурсы или в реквизиты ничего не переносить а только добавить в измерение кое что.
Вот теперь верно!
И все это индивидуально под пользователя или под IP . Или под и того и другого!
Вот теперь все!
Всем спасибо!
Пока!

Автор: Егор Динин 30.12.19, 18:38

Уже два года как я ушел из 1С. До этого 7 лет работал, из них 5 во франче.
И вот что я понял за эти два года:
1С - это хорошая платформа. 32000000.gif

Автор: Vofka 30.12.19, 21:40

Егор Динин, возвращаться планируете? smile.gif

Автор: Gigi 31.12.19, 11:32

Цитата(Егор Динин @ 30.12.19, 19:38) *
Уже два года как я ушел из 1С. До этого 7 лет работал, из них 5 во франче.
И вот что я понял за эти два года:
1С - это хорошая платформа.

smile.gifsmile.gif
Абсолютно с Вами согласен! На ВСЕ СТО!
Да, именно! Это я Вам говорю ... тот который постоянно критикует систему 1С. И который как никто другой на данном сайте зарекомендовал себя именно с этой стороны.
Дело в том, что Я ТОЖЕ ТАК СЧИТАЮ! Думаете в этом у нас разные мнения? Нет!
Но, при этом, такие слова как это клеится с тем что постоянно ругаю платформу? И что тем самым выражаю свое частое недовольство...
Как клеиться, можете догадаться сами.
Я уже говорил, что в целом это превосходная среда разработки! Очень удобная, функциональная и что в особенности приметил очень маневренная.
Я до 1С работал в среде VBA. Правда не с Акссесом... т.е. со всем основным в этой среде кроме Акссес.
Но пол года назад решил ознакомиться с Акссес... чисто ради интереса. И как только начал, продолжать стало не охота. И в конец решил бросить.
Ибо открыв Акссес и просмотрев подумал ... О боже... какое убожество smile.gif Подумал, я еще 1С критикую, а это так вообще....тихий ужас... И кроме того еще и тормозит.
Короче ... решил бросить ознакомление толком и не начав его. Поняв следующую разницу между двумя приложениями smile.gif
По 1С я тут образно говорил, что кое какие функции нужно выкинуть кое куда. Заменив их на более широко-функциональные. Но это про 1С.
А что касается Акссес то тут другая ситуация. Она в том, что нужно выкинуть не просто отдельные функции, но всю платформу со всеми ее функциями и прочими потрохами! smile.gifsmile.gif
Вот что я понял ... smile.gif И вот в чем разница между 1С и Акссес! smile.gif
Так что, возвращаюсь к тому что уже говорил.
1С превосходная среда разработки... просто есть кое какие недоработки. И если излагать в процентном формате то, все недоработки, равно как и вся критика с моей стороны, вмещается в 5%. А на 95% в системе 1С сделано все КАК НАДО!
Вот что хотел еще добавить к своей критике. Что бы не думали, что раз критикую то, не уважаю!
Это НЕ ТАК!
УВАЖАЮ! И уважаю и саму систему 1С, равно как и ее создателей! Разработчики 1С понятное дело что это не какие нибудь новички... это первоклассные профессионалы ...и это серьезные люди.
Так что, хоть и часто критикую, но при этом все равно УВАЖАЮ!
Вот и думаю все на текущий год нашей кодовой жизни! Будем надеяться что следующий будет лучше чем текущий.
Еще раз всем спасибо!
И всех с наступающим!

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua