Имя: Пароль:
1C
 
Нашел бесплатный ChatGPT, который генерит код 1с
0 Повелитель
 
22.10.24
10:03
В телеграмме он называет вот так:
ChatGPT 4 | Midjourney | Gemini | Claude

Пару месяцев назад мне нужно было найти процедуру по переводу даты в миллисекунды, нашел, вот они:

Функция ДатуВTimestamp(пДата = Неопределено) Экспорт
	Возврат Формат(Число(?(ТипЗнч(пДата) = Тип("Дата"), пДата, ТекущаяДата())-Дата("19700101")),"ЧН=0; ЧГ=0");
КонецФункции


Функция TimestampВДату(пДатаТС) Экспорт
	Попытка
		Возврат Дата("19700101")+?(ТипЗнч(пДатаТС) = Тип("Строка"), Число(пДатаТС), пДатаТС);
	Исключение
		Возврат Неопределено;
	КонецПопытки;
КонецФункции


А вот как сделал ChatGPT на мой запрос "Напиши процедуру перевода даты в миллисекунды"

Конечно! Вот пример процедуры на 1С, которая переводит дату и время в миллисекунды с начала эпохи Unix (1 января 1970 года):

Процедура ПеревестиДатаВМиллисекунды(Дата) Экспорт
    // Проверяем, что входной параметр является датой
    Если Не ТипЗнч(Дата) = Тип("Дата") Тогда
        Сообщить("Некорректное значение даты.");
        Возврат;
    КонецЕсли;

    // Получаем количество секунд с начала эпохи Unix
    СекундыС1900 = Дата - '1970-01-01 00:00:00';
    
    // Переводим секунды в миллисекунды
    Миллисекунды = СекундыС1900 * 1000;

    // Выводим результат
    Сообщить("Дата в миллисекундах: " + Миллисекунды);
КонецПроцедуры



▎Как использовать:

Вы можете вызвать эту процедуру, передав ей дату и время. Например:
ПеревестиДатаВМиллисекунды('2023-10-01 12:30:00'); // Пример для 1 октября 2023 года, 12:30:00


Вполне не плохо.

Вот ещё запрос "Напиши запрос по регистру накопления Продажи, чтобы в него попало топ 10 самых лучших контрагентов"

Чтобы получить топ-10 лучших контрагентов по продажам из регистра накопления "Продажи", вы можете использовать следующий запрос в 1С:



ВЫБРАТЬ
    Контрагенты.Наименование КАК Контрагент,
    Сумма(Продажи.Сумма) КАК ОбщаяСумма
ИЗ
    РегистрНакопления.Продажи КАК Продажи
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты
    ПО Продажи.Контрагент = Контрагенты.Ссылка
ГДЕ
    Продажи.Дата >= '2023-01-01' // Укажите нужный период
    И Продажи.Дата <= '2023-12-31' // Укажите нужный период
GROUP BY
    Контрагенты.Наименование
ORDER BY
    ОбщаяСумма Убывение
LIMIT 10;



▎Объяснение:

1. ВЫБРАТЬ: выбираем наименование контрагента и сумму продаж.

2. ИЗ: указываем регистр накопления "Продажи" и соединяем его со справочником "Контрагенты".

3. ГДЕ: фильтруем данные по дате, чтобы выбрать только продажи за определенный период.

4. GROUP BY: группируем результаты по наименованию контрагента.

5. ORDER BY: сортируем результаты по общей сумме продаж в порядке убывания.

6. LIMIT 10: ограничиваем выборку до 10 контрагентов с наибольшей суммой.

Не забудьте заменить даты на нужные вам, если требуется другой период.


Тут тоже неплохо, чуточку напильником доточить и в продакшн ))

Думаю надо с сообществом поделится данной инфой ))
1 Волшебник
 
22.10.24
10:07
Где же ссылка на этот Телеграм?
2 Волшебник
 
22.10.24
10:08
Кстати, за запрос к РегистрНакопления.Продажи
без виртуальной таблицы Обороты
надо отрывать его виртуальные руки
3 Волшебник
 
22.10.24
10:31
Запрос дерьмо...

ВЫБРАТЬ ПЕРВЫЕ 10
    Контрагенты.Наименование КАК Контрагент,
    Сумма(Продажи.СуммаОборот) КАК ОбщаяСумма
ИЗ
    РегистрНакопления.Продажи.ОБОРОТЫ(&С, &По) КАК Продажи
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты
    ПО Продажи.Контрагент = Контрагенты.Ссылка

ГДЕ
    Продажи.Дата >= '2023-01-01' // Укажите нужный период
    И Продажи.Дата <= '2023-12-31' // Укажите нужный период

GROUP BY
    Контрагенты<DEL>.Наименование

ORDER BY
    ОбщаяСумма Убывение
LIMIT 10;
4 mmg
 
22.10.24
10:10
(0) Еще скажи, что запрос работает
5 Повелитель
 
22.10.24
10:42
(1) @GPT4Tbot
https://t.me/GPT4Tbot
6 Волшебник
 
22.10.24
10:12
Правильный запрос
ВЫБРАТЬ ПЕРВЫЕ 10
    Продажи.Контрагент КАК Контрагент,
    СУММА(Продажи.СуммаОборот) КАК СуммаПродаж
ИЗ РегистрНакопления.Продажи.Обороты(&С, &По) КАК Продажи
УПОРЯДОЧИТЬ ПО СуммаПродаж УБЫВ
7 Волшебник
 
22.10.24
10:12
(6)+ Это ж насколько надо быть тупым ботом, чтобы не справиться с таким простым запросом 1С...
8 Повелитель
 
22.10.24
10:14
(4) Запрос не работает. Чутка напильником и вот рабочий:

ВЫБРАТЬ ПЕРВЫЕ 10
	Контрагенты.Наименование КАК Контрагент,
	СУММА(Продажи.Стоимость) КАК ОбщаяСумма
ИЗ
	РегистрНакопления.Продажи КАК Продажи
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты
		ПО Продажи.Контрагент = Контрагенты.Ссылка
ГДЕ
	Продажи.Период >= &ДатаНач
	И Продажи.Период <= &ДатаКон

СГРУППИРОВАТЬ ПО
	Контрагенты.Наименование

УПОРЯДОЧИТЬ ПО
	ОбщаяСумма


Запрос конечно в плане оптимизации, очень плохой, но работает же
9 mmg
 
22.10.24
10:16
(7) Модель училась на MySQL (на что нам намекает LIMIT). То, что она вообще что-то выдает на 1С - чудо
10 Волшебник
 
22.10.24
10:16
(8) Садись, два.
11 mmg
 
22.10.24
10:19
(8) "Напильником" не годится. Надо, чтобы человек, который не знает SQL, вот так простыми словами сказал, что ему нужно и получил, что ему нужно. "Напильник" он брать не будет. Поэтому нужны сразу работающие запросы
12 Повелитель
 
22.10.24
10:19
(10) Я бы написал запрос примерно как в (6)
Это же я просто переделал запрос бота в рабочий ))

У меня жена работает в ВУЗе преподавателем по ИТ. Программирование преподает. В этом году особый бич, большинство начали делать свои работы по программированию через ChatGPT.

Эх. Так что скоро ждем такой код как в (8) нашей родной 1с )))
13 Волшебник
 
22.10.24
10:20
(12) Значит скоро всем кабзда
14 Повелитель
 
22.10.24
10:21
(11) Процедуру по переводу в миллисекунды, вроде верную выдал. Я пока не знаю, что ему скормить ещё.
15 Волшебник
 
22.10.24
10:26
(14) Переменная называется "С1900", а дата задана 1970 год.

 СекундыС1900 = Дата - '1970-01-01 00:00:00';


Дерьмо
16 RomanYS
 
22.10.24
10:22
(13) она уже здесь. Разве не из-за этого 1сникам уже по полмиллиона готовы платить?
17 mikecool
 
22.10.24
10:23
(12) 21 год работы с 1с... ужас
18 dmt
 
22.10.24
10:26
(9) ей пофиг что выдавать, так что это не чудо
19 mmg
 
22.10.24
10:27
(13) Ничего страшного. Просто в ближайшем будущем будет невозможно продать знание левого соединения за 200 тысяч в месяц. Всего-то
20 Повелитель
 
22.10.24
10:27
Так вот ещё:
Напиши функцию входной параметр ФИО, а на выходе фамилия и инициалы

Вот пример функции на языке 1С, которая принимает ФИО в виде строки и возвращает фамилию и инициалы:



Функция ПолучитьФамилиюИИнициалы(ФИО)
    // Разделяем строку на части
    Части = СтрРазделить(ФИО, " ");
    
    // Проверяем, что частей достаточно
    Если ОбщаяДлина(Части) < 3 Тогда
        Возврат ""; // Или обработка ошибки
    КонецЕсли;

    // Получаем фамилию и инициалы
    Фамилия = Части[0];
    Имя = Части[1];
    Отчество = Части[2];

    Инициалы = Лев(Имя, 1) + "." + Лев(Отчество, 1) + ".";
    
    // Формируем результат
    Результат = Фамилия + " " + Инициалы;
    
    Возврат Результат;
КонецФункции


▎Объяснение:

1. СтрРазделить: разбивает строку ФИО по пробелам.

2. Проверка длины: убеждаемся, что в строке есть хотя бы три части (фамилия, имя, отчество).

3. Получение фамилии и инициалов: берем первую часть как фамилию и первые буквы имени и отчества.

4. Формирование результата: объединяем фамилию и инициалы в одну строку.

Вы можете использовать эту функцию, передавая ей строку с ФИО. Например:


Результат = ПолучитьФамилиюИИнициалы("Иванов Иван Иванович");
Сообщить(Результат); // Выведет "Иванов И.И."
21 formista2000
 
22.10.24
10:29
хоть бы кто НАЧАЛОПЕРИОДА и КОНЕЦПЕРИОДА использовал бы... :-/
22 Garykom
 
22.10.24
10:32
И совсем скоро подобный код, сгенерированный ИИ, будет в самолетах...
23 dmt
 
22.10.24
10:40
(20) блин, ну на кого такие простые примеры рассчитаны?

Опытному - работающее решение быстрее самому написать (+ кодирование и так времени минимум занимает, вообще навык атрофируется). Пока пишешь, думаешь о предметке и вспомнишь что бывают всякие оглы и другие исключения

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

Остаются только вообще нулевые, у которых даже идей нет, как решать задачу - тогда можно идею у жпт стырить (но с таким же результатом можно было и погуглить)
24 Hmster
 
22.10.24
10:59
(0) Скоро во всех типовых?
25 Волшебник
 
22.10.24
11:04
В движке мисты есть 1 (одна) строчка, сгенерированная ChatGPT:

text = text.replace(/<a href="(\/topic\/\d+)">(.*?)<\/a>#(\d+)/g, '<a href="$1#$3">$2</a>'); 
  

Догадайтесь, что она делает.
26 vbus
 
22.10.24
11:19
Похоже якоря прикручивает (25)
27 Волшебник
 
22.10.24
11:20
(26) Всё верно. Вставляет якорь внутрь ссылки.
ChatGPT мастерски работает с регулярками и JavaScript.
28 CepeLLlka
 
22.10.24
11:20
(25)Ответ от ChatGPT

Этот код предназначен для изменения HTML-ссылок, которые ссылаются на определённые темы и комментарии внутри этих тем. Он использует регулярное выражение для поиска и замены частей этих ссылок. Давайте разберём подробнее:

1. text.replace(...): Этот метод JavaScript используется для поиска и замены текста внутри строки text. Первый аргумент — это шаблон поиска (регулярное выражение), а второй — строка замены.

2. / <a href="(\/topic\/\d+)">(.*?)<\/a>#(\d+)/g: Это регулярное выражение, которое определяет шаблон для поиска. Разберём его по частям:

/: Символы начала и конца регулярного выражения.
<a href=": Находит текст, начинающийся с <a href=".
(\/topic\/\d+): Это первая захватывающая группа.
\/topic\/: Соответствует строке "/topic/". Обратный слеш \ используется для экранирования символа /, поскольку он имеет специальное значение в регулярных выражениях.
\d+: Соответствует одной или более цифрам. Это предполагает, что ID темы состоит из цифр. Захватывающая группа сохраняет эту часть текста для последующего использования в строке замены как $1.
">(.*?)<\/a>:
">: Соответствует закрывающей кавычке атрибута href и символу >.
(.*?): Это вторая захватывающая группа.
.*?: Соответствует любому символу (.) ноль или более раз (*), но как можно меньше (?). Это важно, чтобы не захватить текст до следующей ссылки <a>. Эта группа сохраняется как $2. Это текст ссылки, который отображается пользователю.
<\/a>: Соответствует закрывающему тегу ссылки. Снова используется обратный слеш для экранирования /.
#(\d+): Это третья захватывающая группа.
#: Соответствует символу решетки, который обычно используется для обозначения якоря (ссылки на определённый фрагмент страницы).
(\d+): Соответствует одной или более цифрам. Это, вероятно, ID комментария. Эта группа сохраняется как $3.
g: Это флаг, который означает "global". Он указывает, что нужно заменить все вхождения шаблона в строке text, а не только первое.
3. <a href="$1#$3">$2</a>: Это строка замены.

<a href="$1#$3">: Создает новый тег <a> с изменённым атрибутом href.
$1: Заменяется на текст, захваченный первой группой (часть URL с ID темы).
#: Символ решетки.
$3: Заменяется на текст, захваченный третьей группой (ID комментария). Таким образом, новый href указывает непосредственно на комментарий.
$2: Заменяется на текст, захваченный второй группой (текст ссылки).
</a>: Закрывающий тег ссылки.
В итоге, этот код изменяет ссылки вида <a href="/topic/123">Название темы</a>#456 на <a href="/topic/123#456">Название темы</a>. Он эффективно объединяет ссылку на тему и ссылку на комментарий в одну ссылку, ведущую непосредственно к комментарию. Это улучшает навигацию, позволяя пользователю перейти сразу к нужному комментарию, минуя страницу темы целиком.
29 Волшебник
 
22.10.24
11:21
(28) Молодец!
30 eklmn
 
22.10.24
11:36
(0) да ты звездабол, в теме "бесплатно" и (7) не соответсвует
31 mikecool
 
22.10.24
11:44
(28) шикарно ) где еще найдешь такое подробное описание? ))
32 Волшебник
 
22.10.24
11:47
(31) Да, это прекрасное применение ChatGPT. Можно закинуть в него пример программного кода и попросить объяснить. Так сам быстро учишься.
33 Адинэснег
 
22.10.24
11:49
(0) спеца не сдаст этот ваш гпт
34 CepeLLlka
 
22.10.24
11:55
(33)Наоборот же.. Там по сути будет просто копипаст.
35 ptiz
 
22.10.24
12:41
(0) Мне больше нравится нейро от Яндекса. Работает с реальными источниками, дает ссылки. Очень грамотно отвечает.
36 Dzenn
 
22.10.24
16:30
Твой ЧатГПТ идеальный руководитель проекта — уверенности на 143%, знаний на троечку. Может "продавать" проект заказчику и вместе с этим не будет лезть с уточнениями к разработчику.
37 Волшебник
 
22.10.24
18:51
(36) А он умеет рявкать?