Имя: Пароль:
1C
 
v8: Самый короткий код, вырубающий восьмерку и семерку
0 Гений 1С
 
гуру
14.12.06
10:11
Господа, это лечится???
Может на следующих релизах это исправлено?

Р=Новый Структура();
Р.Вставить("Р", Р);
Сообщить(ЗначениеВСтрокуВнутр(Р));

Или такой вариант:

Р=Новый Структура();
Р.Вставить("Р", Р);
Х=Новый Хранилище(Р);

Я вот сижу и думаю, как сохранять такую структуру?
Например Р и С.Р равны между собой? Можно ли поставить защиту от зацикливания???
То есть перебрать рекурсивно и избежать циклов?
1 Гений 1С
 
гуру
14.12.06
10:13
Р=Новый Структура();
Р.Вставить("Р", Р);
Р.Вставить("В", 1);
Сообщить(Р=Р.Р);                    
Сообщить(Р=Р.В);

Выдает:

Истина...
Ложь...

Уже гут...
2 Leksus
 
14.12.06
10:14
(0) ну ты извращенец! )))
3 Читатель
 
14.12.06
10:16
(0) "То есть перебрать рекурсивно и избежать циклов?"
1С именно рекурсивно и выгружает. А вот без циклов не получиться
(1) Писец полный. Последний мозг здрочил бедолага
4 Гений 1С
 
гуру
14.12.06
10:18
(3) Офигеть, почему типовая функция не умеет выгружать рекурсивные структуры. Это трандец...
5 VladZ
 
14.12.06
10:19
(0) "Ну и запросы, сказала база и зависла" (с)
6 Читатель
 
14.12.06
10:21
(4) Рекурсивные умеет. Как раз рекурсия у неё и зацикливается.
Пиши лучше про порнуху, это у тебя лучше получается
7 Гений 1С
 
гуру
14.12.06
10:22
(6) Софистикой занимаемся, да?
8 Читатель
 
14.12.06
10:31
(7) перед тем как употреблять умные слова, типа "рекурсивная структура" попытайся узнать их смысл.
Вот к примеру что говорит Вэбстер по слову рекурсия :

3 : a computer programming technique involving the use of a procedure, subroutine, function, or algorithm that calls itself one or more times until a specified condition is met at which time the rest of each repetition is processed from the last one called to the first

И расскажи пожалуйста, как может выглядеть "рекурсивная структура"
9 Гений 1С
 
гуру
14.12.06
10:37
(8) Этот форум для русских, товарищ пиндос, переведите плиз
10 MMF
 
14.12.06
10:48
Прикольно, не рассчитали разработчики, что есть такой Г1с, и вариант бесконечной рекурсии ЗначениеВСтрокуВнутр не предусмотрели
11 Гений 1С
 
гуру
14.12.06
10:49
(10) Не утрируй батенька...
12 Гений 1С
 
гуру
14.12.06
10:49
Нормальный код не должен падать на типовых фунцкиях
13 Гений 1С
 
гуру
14.12.06
10:49
БН - к стенке!
14 Voton
 
14.12.06
10:53
Ппц... Гений может прочтешь рекомендации 1С к БЕСКОНЕЧНЫМ рекурсиям? Или тебе это религия не позволяет?
15 VladZ
 
14.12.06
10:53
(12) Гы... Нормальный код... Не скромничай, батенька...  Твой код просто идеален!!!
16 Voton
 
14.12.06
10:55
Кто нибудь подарите ему ИТС =)
17 AeDen
 
14.12.06
10:56
(9) После этого ты буишь продолжать зваться Гением?
18 Salvador Limones
 
14.12.06
10:57
Афигеть, 12-ый релиз вышел полтора года назад, 22.06.2005 - если быть точным, а Сосипан до сих пор на нём.
19 MMF
 
14.12.06
10:59
(12) Согласен, но ты представляешь себе реализацию проверки зацикливания ссылок?
А вообще молодец, извратился.
20 Гений 1С
 
гуру
14.12.06
11:01
(19) Конечно представляю...
Например эта структура могла быть сохранена так
@this:{Р:@this}

А вот пример более сложной структуры
@this:{Р:@this, А:123, Б:@item1{В:@this, С:@item2{A:@this, B:@item1}}}
21 Гений 1С
 
гуру
14.12.06
11:02
(18) Потому что филиалов до фига, УРБД, но вообще это не я рулю релизами... ;-)
Сразу на 8.1 перескочим. ;-)
22 Voton
 
14.12.06
11:06
А вопрос можно? Ты хоть сказать можешь КАК это применить-то и КУДА? Я все вспоминаю задачи... но как то без этого пока жили и все работало=)
23 Читатель
 
14.12.06
11:11
(22) Вообще я сталкивался с таким. Задача стояла следующая.
Есть 2 структуры метаданных. В каждой структуре стоят соответствия с другой структурой. Тоже возникала бесконечная рекурсия, побороть не смог, пришлось делать обходной маневр.
(алл) вообще действительно интересно, почему 1С не сделала (или сделала все же в более новых релизах) проверку на зацикливание. ИМХО для этого достаточно списка выгруженных объектов и если объект уже находится в этом списке, пропускать его.
24 Гений 1С
 
гуру
14.12.06
11:12
(22) Гут...

Книга - список листов.
Каждый лист имеет список своих свойств + ссылку на книгу.

Выгружаю книгу в строку - кукиш и вылетон.
25 Voton
 
14.12.06
11:14
Проверил на 8.0.17.25... вышибает
26 Читатель
 
14.12.06
11:17
"Гений 1С Этот форум для русских, товарищ пиндос"
---
Ты, наверное, хотел сказать тут форум русскоговорящих ?
Кстати, фиксин, а в курсе кого называют "пиндосами" ? Не пидорасов, как ты видимо мечтательно подумал.
27 Валентин
 
14.12.06
11:27
Сперва выбираем убогие языки, а потом ругаем их за то что они не позволяют делать извраты...

(setq x '(1 2 3))
(setf car(x) cdr(x))

Лисп. И ничего не вырубает. Хотя получается циклическая структура.
28 Гений 1С
 
гуру
14.12.06
11:28
(25) гыгыгы, это не глюки, это твои кривые руки... (из песни)
29 Гений 1С
 
гуру
14.12.06
11:28
(27) О, я думал только я лисп знаю. Респект и уважуха!
30 Гений 1С
 
гуру
14.12.06
11:30
А может в XML-попробовать, через сериализацию?
31 Гений 1С
 
гуру
14.12.06
11:31
Интересно, а в 77 та же беда?
32 Валентин
 
14.12.06
11:32
(29) Удивительно что не ты его изобрел :)
33 Валентин
 
14.12.06
11:34
(31)
Процедура Сформировать()

   сз = СоздатьОбъект("СписокЗначений");
   сз.ДобавитьЗначение("Значение","Строка");
   сз.ДобавитьЗначение(сз,"СамиСебя");
   Сообщить(ЗначениеВСтрокуВнутр(сз));
КонецПроцедуры

валит....
34 Валентин
 
14.12.06
11:34
вывод - пиши свою сохранялку...
35 Voton
 
14.12.06
11:36
Насколько я помню Лисп применяется при посторинии систем ИИ... вы чего из 1С сделать то хотите?;)
36 Гений 1С
 
гуру
14.12.06
11:37
(35) да речь не об этом. Ссылки такого типа можно заюзать даже в паскале
37 Валентин
 
14.12.06
11:45
(35) Лисп - это инструмент. Уже закончиваю свой интерпретатор Лиспа на 1С, так что - что хотел то сделал ;)

(36) Да дело не в ссылках, на том же лиспе неверное использование setf может привести к ошибке. Дело в контроле, и если процедура ЗначениеВСтрокуВнутр()не предназначена для работы с циклическими графами, то нехер их туда пихать, а потом орать об интеллекте разработчиков.
38 Voton
 
14.12.06
11:47
Классно скоро нас ожидает выход полностью самостоятельной конфы, которая будет руководить проектом без вмешательства человека)
39 Валентин
 
14.12.06
11:49
(38) Не-а... Это просто из баловства. Проверить одну идею.
40 Voton
 
14.12.06
11:50
Кстати вопрос тут можно не по теме задать.... просто не хочу новую ветку раскрывать...
41 Валентин
 
14.12.06
11:52
если это мне вопрос - то давай... Все равно обед...
Если Г1С - хз...
42 Гений 1С
 
гуру
14.12.06
11:52
(37) ты согласен что платформа не должна вылетать?
К тому же тут ты кривишь душой. ЗначениеВСтрокуСтр теоретически может выгружать циклические структуры, я нарисовал схему. Так что это лень разработчиков.
43 Shirenin
 
14.12.06
11:55
(0) Делай структуру где вместо ссылок на объекты храни ГУИДЫ и структуру (можно в ту же пихнуть) где каждому объекту присваивается ГУИД. Конвертнуть туда и обратно вроде проблем быть не должно. С такими структурами проблем зацикливания рекурсии не будет.
44 Валентин
 
14.12.06
11:55
(42) А теперь подробно и по буквам для идиотов объясни - почему ЗначениеВСтрокуВнутр() не должно вылетать? Сам формат строки не подразумевает наличия ссылок на ранее определенные объекты.
45 Гений 1С
 
гуру
14.12.06
12:00
(44) Формат строки смотри в (20). А вылетать - это качество только 1С, навижн обрабатывает все исключительные ошибки.
46 Гений 1С
 
гуру
14.12.06
12:00
(43) да це понятно... Только извини, я так извращаться не буду. Я хочу нормально работать со структурой. Конвертацию буду делать только при выгрузке и после загрузки...
47 Гений 1С
 
гуру
14.12.06
12:01
Я хочу нормально работать со структурой в памяти, имелось ввиду.
48 Гений 1С
 
гуру
14.12.06
12:01
(44) Если уж идти на принцип, в документации не сказано, что нельзя циклические ссылки юзать как параметр функции. Так что вот они, мои доводы!
49 Shirenin
 
14.12.06
12:04
(48) в документации вроде не сказано что нельзя делать функции вида

Процедура ШасУпаду()
ШасУпаду();
КонецПроцедуры

видимо документация подразумевает некое начальное образование в области информатики, как минимум школьный курс
50 Валентин
 
14.12.06
12:13
(45) В (20) то как ты себе это представляешь? Не знаю восьмерки, может там и так, но в 7 - однозначно не так.
51 Гений 1С
 
гуру
14.12.06
12:59
(50) я написал, как это сделать в (20)... всегото немного труда от кодеров.

(49) Рекурсия - это школьный курс да, но форматы конвертации в строку в школе не преподают, отсюда мораль - такой баг должен быть отражен в доке. Не отразят - им стыдно. БН рвет на себе волосы и рыдает над клавой...
52 Skynin
 
14.12.06
13:01
(49) Это Вы так читали.

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

Прежде всего, следует не допустить бесконечной рекурсии. Особенности поведения системы при бесконечной рекурсии описаны в статье «Бесконечная рекурсия».

Однако нужно избегать использования рекурсивного вызова и для алгоритмов, в которых реальная вложенность рекурсии будет достигать сотен уровней. Во встроенном языке не установлено конкретного ограничения количества уровней рекурсивного вызова. Ограничение носит технологический характер.
53 Гений 1С
 
гуру
14.12.06
13:03
(52) да, ширенин, читайте ИТС. Обнаруженный мною баг - на ИТС!
54 MMF
 
14.12.06
13:04
Скриптовый язык обязан следить за переполнением стека. Раз уж рассчитана платформа на "программистов-конфигураторов", то должны защищать.
55 Валентин
 
14.12.06
13:06
(51) Ну не стони ты. Не нравиться - напиши свой выгружатель/загружатель...
Если очень не нравиться - свою платформу
56 Гений 1С
 
гуру
14.12.06
13:06
(54) в навижн выскакивает исключение "Переполнение стека", а лодыри-разработчики движка краснеют но говорят - ссори, не можем отловить это событие, только премии не лишайте!
57 Читатель
 
14.12.06
13:06
(54) Создай программу, которой может пользоваться любой дурак и только дурак и будет ею пользоватся.
58 Гений 1С
 
гуру
14.12.06
13:07
(57) Я бы предпочел открыть код 8-ки. Ничего, скоро копирайт рухнет и настанет коммунизм.
59 Shirenin
 
14.12.06
13:07
(52) здорово. ну раз так то упрек в (48) получается совершенно справедлим. во всяком случае формально. если же по сути ... составляй я список претензий к фирме 1с то (48) непопало бы в первые две сотни :)
60 Skynin
 
14.12.06
13:07
(54) ну и что должен сделать язык при обнаружении такой ситуации?
...будет инициирована бесконечная рекурсия, и произойдет аварийное завершение работы системы.

Ваше предложение? остановить рекурсию и продолжить выполнение?
61 Валентин
 
14.12.06
13:07
(54) Не должна. Она должна обеспечить возможность выполнения рекурсии. Не более.
62 Читатель
 
14.12.06
13:08
(56) Идиот. Если выскакивает исключение "переполнение стека", значит они отловили событие "переполнение стека".
63 Skynin
 
14.12.06
13:08
(58) ну так напишите свой и открывайте. А хозяин - барин. И всякие форумные гении хозяину разве указ?
64 MMF
 
14.12.06
13:11
(60) Сообщить о переполнении стека, о причине и не падать.
(61) А ну да.. давайте дадим возможность деления, но при делении на нуль будем просто аварийно падать.
65 Читатель
 
14.12.06
13:11
Картина маслом :

Юзверь пишет в навижине примерно такой код :

Процедура ШасУпаду()
ШасУпаду();
КонецПроцедуры

Навижн выкидывает исключение stack overflow

лодыри-разработчики движка краснеют и говорят - ссори
66 Skynin
 
14.12.06
13:12
(64) ну раз упадет, а в следующий раз пусть программер думает, а не изобржает из себя гения
А разве при делении на 0 1С падает?
67 MMF
 
14.12.06
13:14
(65) скрипт не должен вызывать аварийное завершение работы, ни при каких условиях, сколь угодно тупые и извращенные программисты 1С его не написали
68 MMF
 
14.12.06
13:15
(66) "Она должна обеспечить возможность выполнения рекурсии. Не более" (с) Валентин
"Она должна обеспечить возможность выполнения деления. Не более. Аргументы проверять не обязательно"
69 Skynin
 
14.12.06
13:16
(67) ну да, ну да. Чтобы побольше идиотов приобщить к программированию
70 Skynin
 
14.12.06
13:18
Как по мне, у 1С и так это уже очень хорошо получилось.
Чтобы еще и не падать, когда высосанные из пальца проблемы идиоты просят решать.
71 MMF
 
14.12.06
13:18
(69) именно это и является причиной успешности 1С - любой даун может ее освоить
72 Валентин
 
14.12.06
13:19
(68) Короче, старый лозунг "Программа = алгоритмы + структуры данных" меняем на "Программы = большая кнопка 'Хочу' + движения мышкой"
73 Гений 1С
 
гуру
14.12.06
13:23
(70) То что 1с чаще падает, чем Навижн ее не красит...
74 ShoGUN
 
14.12.06
13:23
(72) Да при чем тут... Почему нет правильной(!) обработки исключений? Хорошо, если это твой код и три строчки. А если чужой и три тысячи? И разбирайся потом, почему работа аварийно завершается...
75 Skynin
 
14.12.06
13:23
(71) именно. А Вы просите еще больше даунов :)

(72) в той самой книжке Н. Вирт немало и написал про рекурсивные алогоритмы. Что красиво конечно, но рисково изначально. И любой рекурсивный алгоритм вполне переделывается в линейный. И что как правило вызов функции и работа с стэком медленнее.
76 Skynin
 
14.12.06
13:24
(74) а если не будет падать, то что, разбираться не нужно будет?
77 ShoGUN
 
14.12.06
13:27
(76) Нужно, но по крайней мере понятно будет, что грабли в коде. А не в аппаратной части, глупости бухши, случайно нажавшей Alt-F4 большими сиськами и космических лучах с Сириуса...
78 Валентин
 
14.12.06
13:29
(74) Да при том... Д.Кнут "Искусство программирования"
А сейчас ремесло. Любой мальчик умеющий расставить кнопки на форме - програмист.
А потом начинаются идиотские вопросы про рекурсию/циклы/переменные...
79 MMF
 
14.12.06
13:31
(76) ты что, подтверждение низкого порога вхождения в 1С или просто сегодня тупишь?
80 ShoGUN
 
14.12.06
13:31
(78) Е-мое. Да, ремесло. И что? Обидно, как настоящему творцу? В искусстве как раз может рулить талантливый самоучка с пробелами в знаниях. В программировании может?
81 Skynin
 
14.12.06
13:34
(78) +1
(79) это пусть мои заказчики решают. Собственными деньгами, а не форумные критики.
82 Валентин
 
14.12.06
13:36
(80) Дык пока программирование ремесло - будут пробелы. Потому что нет времени не то что классику почитать, а элементарно ЖКК. Я уже не говорю про время на подумать...
83 Валентин
 
14.12.06
13:41
не ожидал что (78) так быстро подтвердиться Если 3 флага =0
84 Skynin
 
14.12.06
13:41
(82) "беда" даже не в том что ремесло. А в том что ремесленники прутся в академики-теоретики. И начинают исмользовать лихие конструкции, не вникая и не понимая как работают базовые.

Будь ремесленник просто ремесленником-профессионалом, нужно ему красоты рисковые в коде писать?
Но вот когда ремесленник изображает "нобелевского лауреата" от программирования, жди беды. Вместо, пусть не изящного, но рабочего кода, он начинает воротить красоты, которые валили и будут валить любую систему.

То бишь ремесленник с комплексом неполноценности, вот кто идиот. Потому и доучиться не может, и просто делать свою работу без выкаблучивания - тоже.
85 ShoGUN
 
14.12.06
13:45
(83) Посмеялся, спасибо :)
(84) +1. Я вот и есть ремесленник, на гения не претендую...
86 Skynin
 
14.12.06
13:50
(85) я тоже.
Мало того, бОльшая часть сишников и джавистов - тоже.
Но есть и среди них - "гении".
87 Читатель
 
14.12.06
13:50
"И любой рекурсивный алгоритм вполне переделывается в линейный"
- - -
Реально в 1С приперлось куча даунов
88 Skynin
 
14.12.06
13:53
(87) да мне вот лет 11 как интересно, а что гении в 1С делают ;)
89 Валентин
 
14.12.06
13:54
(88) Пишут самый короткий неработоспособный код ;)
90 Skynin
 
14.12.06
14:02
(89) Вы знаете, мой опыт пока тоже такой.
Причем в силу стажа, гениев в виде студентиков приходится обламывать, и указывать что с таким олимпиадным кодом по олемпиадам бы ездить, а не к заказчику ходить.

Либо подавать резюме в MS, SUN, или в команду разработчиков ядра линух.
Там нуждаются в гениях.
91 Гений 1С
 
гуру
14.12.06
14:12
(90) гы, все это ремесленничество хорошо когда опыта нет или супермаркет автоматизируешь, когда что-то серьезное подымаешь, и про искусство вспомнишь - просто лень уже лопатой ковырять, если можно бульдозер подогнать. Так что учите матчасть, ремесленники, млин...
92 ShoGUN
 
14.12.06
14:15
(91) Если времени достаточно - будь гением. Я вот не видел одинэсника с большим количеством свободного времени. Кроме тебя разве что...
93 Skynin
 
14.12.06
14:16
(91) Вас не берут в космонавты? ;)
Вот вакансии в 1С http://www.1c.ru/rus/firm1c/vacan/vacan.htm
Думаю для разработки Навижн тоже гении нужны, и список вакансий можно найти.
Дерзайте!

А если вся гениальность на форуме блеснуть, то ...
94 Валентин
 
14.12.06
14:17
(92) не ему просто подогнаным бульдозером похоже крышу снесло ;)
95 Гений 1С
 
гуру
14.12.06
14:18
(93) 1С - гнилая конторка. А Мелкософт - ваще оплот копирайта и империализма. Наф...
96 Skynin
 
14.12.06
14:19
(95) понятно. Форум Миста, самое достойное место для Гения!

:D
97 Гений 1С
 
гуру
14.12.06
14:19
(96) видимо
98 ShoGUN
 
14.12.06
14:20
(95) Ник смени. На "Свободный Гений Антикопирайта". Длинно, но внушаить...
99 Гений 1С
 
гуру
14.12.06
14:25
(98) все, хватит бреда. Заведите отдельную ветку и меня обсуждайте. Суть в том, что 1С в очередной раз продемонстрировало свое безразличие к программистам, о баге рекурсии ей 100 лет назад сообщали.

Ну а я полуаю приз в номинации "самый короткий код, вышибающий мозги из 1с 80" и одновременно "самый короткий код, вышибающий мозги из 1с 77".

Проблема понятна, лечить в платформе ее не будут.

Нужно писать свою выгрузку в строку, блин... Вот уроды...
100 Skynin
 
14.12.06
14:26
(99) плохому танцору
101 Гений 1С
 
гуру
14.12.06
14:28
(100) хватит бреда, лучше бы сотку забил
102 Гений 1С
 
гуру
14.12.06
14:29
(100) Наверное СН, БН и Ко 1С думают также - а, какое нам дело до кодеров, выкрутятся. Выкрутимся...
103 Skynin
 
14.12.06
14:37
я не знаю что такое забивать сотку :)

А сегодня на канале #1С один "гений" историю мне напомнил.
Рассказал, посмеялись.

Вот и тут расскажу, для разрядки:

Экзамены приемные в инженерный ВУЗ. Скучающие преподы задают последний вопрос сдавшему пареньку.
"Какова должна быть скорость кошки, у которой к хвосту привязана консервная банка, чтобы она не слышала ее звука?"
"Выше скорости звука" - ответил тот не раздумывая.
"Так вот, молодой человек, у нас ВУЗ готовит инженеров, а не физиков-теоретиков. Скорость кошки должна равняться нулю. То есть она должна просто сидеть"

1С, в силу специфики не платформы, а самой области задач требует инженеров.
Если в Вас погиб великий архитектор платформ, или теоретик - сочувствую.
104 Валентин
 
14.12.06
14:42
(103) Улыбнуло...
105 ShoGUN
 
14.12.06
14:43
(103) Жжош :)
106 Voton
 
14.12.06
18:13
(103) Классно =)
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший