Имя: Пароль:
1C
 
Как в COM-соединении преобразовать дату в строку по формату?
☑
0 Гений 1С
 
гуру
30.09.26
✎
20:30
Простой вопрос, а бьюсь долго.
v8.Format не работает
v8.String(d, "ДФ=dd.MM.yyyy") не работает
v8.Right, Substr тоже не работают
1 PR
 
30.09.26
✎
20:39
Испанский стыд
2 fram_
 
30.09.26
✎
20:40
а так

СтрокаДаты = COMПодключение.Вычислить("Формат(Дата(""" + Формат(ИсходнаяДата, "ДФ=ггггММддЧЧммсс") + """), """ + СтрокаФормата + """)")
3 Гений 1С
 
гуру
30.09.26
✎
20:55
(2) в контексте не будет исходной даты.
я кстати, в обновляторе скрипт использую

(1) поза гуру?
4 Гений 1С
 
гуру
30.09.26
✎
21:00
Почитал тут, что функции глобального контекста сохраняются:
https://infostart.ru/1c/articles/1777483/

Это натолкнуло меня писать не v8.Format, а просто Формат в обновляторе. Работает...
5 PR
 
30.09.26
✎
21:00
(3) Да я просто охуеваю с твоего уровня
Не говоря уже о том, нахуя тебе формат на той стороне и о том, чем тебя не устроил (2)
Кто те идиоты, которые платят тебе пятерку в час?
Те, кто не знает, что можно не платить, как в анекдоте чукчи, которые разговаривают по телефону, потому что не знают, как закончить разговор?
6 Гений 1С
 
гуру
30.09.26
✎
21:10
(5)
там в (2) не для обновлятора, контекст другой
у гениев, видишь ли, могут быть проблемы в простом, зато они работают в сложном так круто, что им платят как раз пятерку в час.
7 PR
 
30.09.26
✎
21:12
(6) Идиот, раз у тебя есть d в v8, значит у тебя есть d и в COMПодключение.Вычислить
А про сложное ну не надо пиздеть, мы тут все про тебя все знаем
8 Гений 1С
 
гуру
30.09.26
✎
22:01
(7) ты демонстрируешь классическую манипуляцию "послезнание"
9 Гений 1С
 
гуру
30.09.26
✎
22:12
А вот что-то не могу определить тип массив:

    Попытка
        Количество = Организация.Количество();
        ЭтоМассив = истина;
    Исключение
        ЭтоМассив = ложь;
    КонецПопытки;
    Если ЭтоМассив Тогда //ТипЗнч(Организация) = Тип("Массив") Тогда
        Для Каждого ТекОрганизация ИЗ Организация Цикл
            СформироватьОтчет(ИмяОтчета, Дата1, Дата2, ТекОрганизация, Каталог);
        КонецЦикла;
        Возврат;
    КонецЕсли;
    


ТипЗнч - ComОбъект
10 maxab72
 
30.09.26
✎
22:14
(9) вроде бы одинаковые объекты на стороне приемника и на стороне передатчика имеют разные типы. это азбука.
11 PR
 
30.09.26
✎
22:33
(10) Да он вечный первогодка, не знает нихрена
Он даже не понимает, что ТипЗнч нужно выполнять на стороне COM, чтобы вернулся тип "Массив", а иначе все верно, будет COMОбъект возвращаться
12 Гений 1С
 
гуру
01.10.26
✎
00:28
(11) и как же получать, если v8.TypeoF пишет, что нет такого метода TypeoF. Выйди уже из позы Гуру
13 H A D G E H O G s
 
01.10.26
✎
01:42
(11) Наша кочерыженька так то права, многие функции глобального контекста не видны во внешнем соединении. Но это не значит, что не надо включать голову.

&НаСервере
Функция ПроверитьТипCOMОбъекта(Значение,ТипСтрокой,Соединение)
    ПроверочноеОписаниеТипов=Соединение.NewObject("ОписаниеТипов",ТипСтрокой);
    ПриведенноеЗначение=ПроверочноеОписаниеТипов.ПривестиЗначение(Значение);
    Сравнение=Соединение.NewObject("СравнениеЗначений");
    Результат=Сравнение.Сравнить(Значение,ПриведенноеЗначение)=0;
    Возврат Результат;
КонецФункции

&НаСервере
Процедура Команда1НаСервере()
    КОМКоннектор = Новый COMОбъект("V83.COMConnector");
    Соединение=КОМКоннектор.Connect(СтрокаСоединенияИнформационнойБазы());
    ПроверяемыйМассив=Соединение.NewObject("Массив");
    
    Результат=ПроверитьТипCOMОбъекта(ПроверяемыйМассив,"Массив",Соединение);
    Сообщить("Проверяемый COM объект является массивом -"+Результат);
    Результат=ПроверитьТипCOMОбъекта(ПроверяемыйМассив,"Структура",Соединение);
    Сообщить("Проверяемый COM объект является Структурой -"+Результат);
КонецПроцедуры
14 H A D G E H O G s
 
01.10.26
✎
01:44
15 H A D G E H O G s
 
01.10.26
✎
02:03
Ну или вообще - просто. Глобальный Сериализатор они оставили доступным.

&НаСервере
Процедура Команда1НаСервере()
    КОМКоннектор = Новый COMОбъект("V83.COMConnector");
    Соединение=КОМКоннектор.Connect(СтрокаСоединенияИнформационнойБазы());
    ПроверяемыйМассив=Соединение.NewObject("Массив");
    Сериализатор=Соединение.СериализаторXDTO;
    Тип=Сериализатор.XMLТипЗнч(ПроверяемыйМассив);
    Сообщить("Проверяемый COM объект является -"+Тип.TypeName);
КонецПроцедуры
16 H A D G E H O G s
 
01.10.26
✎
02:10
Автор рождает очередное поделие

https://vkvideo.ru/video-56332541_456239184
17 PR
 
01.10.26
✎
04:32
В (13) в итоге так и нет получения типа значения в COM
А предлагаемое в интернете COMСоединение.XMLТипЗнч(COMЗначение).TypeName для массива вернет Неопределено
Так что остается только (15)

COMКоннектор = Новый COMОбъект("V85.COMConnector");
COMСтрокаСоединения = СтрШаблон("Srvr=""%1"";Ref=""%2"";Usr=""%3"";Pwd=""%4"";", Объект.Сервер, Объект.База, Объект.Пользователь, Объект.Пароль);
COMСоединение = COMКоннектор.Connect(COMСтрокаСоединения);

COMДата = COMСоединение.CurrentSessionDate();
COMМассив = COMСоединение.NewObject("Массив");
COMСправочник = COMСоединение.Catalogs[Объект.Справочник].ПустаяСсылка();

COMОписаниеТипов = COMСоединение.NewObject("ОписаниеТипов", СтрШаблон("Массив, СправочникСсылка.%1", Объект.Справочник));
COMТипМассив = COMОписаниеТипов.Типы().Get(0);
COMТипСправочник = COMОписаниеТипов.Типы().Get(1);

COMСериализатор = COMСоединение.СериализаторXDTO;

ОтформатированнаяДата = Формат(COMДата, "ДЛФ=DDT");
Сообщить(СтрШаблон("Отформатированная дата: %1", ОтформатированнаяДата));

COMОписаниеТипов = COMСоединение.NewObject("ОписаниеТипов", СтрШаблон("%1, %2", COMСериализатор.XMLТипЗнч(COMМассив).TypeName, COMСериализатор.XMLТипЗнч(COMСправочник).TypeName));
COMТипЗначенияМассив = COMОписаниеТипов.Типы().Get(0);
COMТипЗначенияСправочник = COMОписаниеТипов.Типы().Get(1);

Сообщить(СтрШаблон("Массив = массив: %1", COMТипЗначенияМассив = COMТипМассив));
Сообщить(СтрШаблон("Массив = справочник: %1", COMТипЗначенияМассив = COMТипСправочник));
Сообщить(СтрШаблон("Справочник = массив: %1", COMТипЗначенияСправочник = COMТипМассив));
Сообщить(СтрШаблон("Справочник = справочник: %1", COMТипЗначенияСправочник = COMТипСправочник));
18 PR
 
01.10.26
✎
04:52
А, ну и да, что там у него с форматом не срослось, я так и не понял, видимо, не дано ему
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.