| Summary: | 1С падает при проверке принадлежности списку значений, если в списке есть вложенный список | ||
|---|---|---|---|
| Product: | WINE@Etersoft | Reporter: | Лебединский Александр <prof.alex1975> |
| Component: | Общее | Assignee: | Виталий Перов <vitperov> |
| Status: | CLOSED INVALID | QA Contact: | |
| Severity: | major | ||
| Priority: | P4 | CC: | aae, baraka, lav, night |
| Version: | 1.0.8 | ||
| Target Milestone: | --- | ||
| Hardware: | PC | ||
| OS: | Gentoo | ||
| Whiteboard: | |||
| Заявки RT: | Связано с: | ||
| Дата напоминания: | |||
| Bug Depends on: | |||
| Bug Blocks: | 777 | ||
| Attachments: | обработка генерирующая ошибку | ||
Ну нужно просто организовать тестирование, не обязательно на Gentoo. Лучше попросить клиента прислать уже готовую обработку, при нажатии кнопки в которой вызывается проблемный код. Created attachment 504 [details]
обработка генерирующая ошибку
Своял. В тестовой базе должен быть хотя бы один справочник с хотя бы одним значением.
Андрей, тогда тестируем. Подтверждаю. trace:file:ReadFile 0x14c 0x17c278 1024 0x32e58c (nil) trace:file:ReadFile 0x154 0x17c680 1024 0x32e58c (nil) trace:file:ReadFile 0x150 0x17ca80 1024 0x32e5ec (nil) err:seh:setup_exception_record stack overflow 924 bytes in thread 001f eip 7bc761de esp 00230f94 stack 0x230000-0x231000-0x330000 Бутылка 1c77sql (файл .ert на /c:) Тестовая обработка и не должна работать, т.к. в ней создается список значений в который фактически вложен он же и так до бесконечности. Сама 1С корректно такую ситуацию не обрабатывает и вылетает на поиске в таком списке значений на любом виде подключении к БД и на любой платформе. З.Ы. просмотрите полученные списки значений вот этим: http://1c.proclub.ru/modules/mydownloads/singlefile.php?cid=24&lid=5006 все станет понятно. В совсем упрощенном эта ошибка 1С с гарантированным вылетом выглядит так:
Процедура Сформировать()
СЗ=СоздатьОбъект("СписокЗначений");
СЗ.ДобавитьЗначение(СЗ);
СЗ.Принадлежит("и вот тут мы вылетаем");
КонецПроцедуры
Так я не понимаю. На таком коде 1С вылетает и в Windows? Тогда мы тут при чём? Андрей, проверь в Windows. В windows естественно вылетает. Собственно я и говорю что wine@etersoft тут ни причем. Аналогичных ошибок с вылетом в самой 1С довольно много, причем некоторые проявляются только при работе с SQL. Спасибо за разъяснение, Антон! Багу закрываем, к нам отношения не имеет. |
1С 7.7.025 SQL. W@E 1.0.8 от 28.12.2007, система gentoo x86_64, конфигурация для бюджетных бухгалтерий. Только осваиваем эту конфигурацию. Столкнулись с проблемой, не корректного кода у инженеров 1С. Решил добавить функционал взят за основу код 1С, там была ошибка: Парам=СоздатьОбъект("СписокЗначений"); СписокУчреждений=СоздатьОбъект("СписокЗначений"); Парам.ДобавитьЗначение(СписокУчреждений); ОткрытьФормуМодально("Справочник.Фирмы.ДляОтметки",Парам); Парам.Выгрузить(СписокУчреждений); Если, после этого использовать такую конструкцию: Если СписокУчреждений.Принадлежит(СпрФирмы.ТекущийЭлемент()) = 0 Тогда То 1С падает, с таким сообщением в терминале: err:seh:setup_exception stack overflow 196 bytes in thread 0011 eip 20082a6b esp 00240f3c stack 0x241000-0x350000 Открываемая форма работает с переданным ей списком, заполняя его, а не тот список что вкладывается в Парам, соответственно возвращаемый список, содержит как выбранные значения, так и вложенный список(пустой). Изменил код (1Совская "конструкция" не работала корректно), на такой Парам=СоздатьОбъект("СписокЗначений"); СписокУчреждений=СоздатьОбъект("СписокЗначений"); ... (заполнение списка СписокУчреждений) ,,, СписокУчреждений.Выгрузить(Парам); ОткрытьФормуМодально("Справочник.Фирмы.ДляОтметки",Парам); СписокУчреждений.RemoveAll(); Парам.Выгрузить(СписокУчреждений); Падения нет! Оригинальный код код не требовал использования функции-члена .Принадлежит(), на сегодняшний момент у меня нет технической возможности проверить этот код в windows, не могу сказать вызывает ли он падение в windows. PS: Извините если получилось сумбурно...