Bug 1104

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: обработка генерирующая ошибку

Description Лебединский Александр 2008-01-26 11:27:51 MSK
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: Извините если получилось сумбурно...
Comment 1 Vitaly Lipatov 2008-06-22 14:04:08 MSD
Ну нужно просто организовать тестирование, не обязательно на Gentoo.
Лучше попросить клиента прислать уже готовую обработку, при нажатии кнопки в которой вызывается проблемный код.
Comment 2 Лебединский Александр 2008-06-22 14:44:23 MSD
Created attachment 504 [details]
обработка генерирующая ошибку

Своял. В тестовой базе должен быть хотя бы один справочник с хотя бы одним значением.
Comment 3 Vitaly Lipatov 2008-06-22 14:49:12 MSD
Андрей, тогда тестируем.
Comment 4 Andrey Vusik 2008-06-23 21:18:33 MSD
Подтверждаю.

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
Comment 5 Andrey Vusik 2008-06-24 18:46:24 MSD
Бутылка 1c77sql (файл .ert на /c:)
Comment 6 Антон Азанов (Djelf) 2008-06-30 12:14:35 MSD
Тестовая обработка и не должна работать, т.к. в ней создается список значений в который фактически вложен он же и так до бесконечности. Сама 1С корректно такую ситуацию не обрабатывает и вылетает на поиске в таком списке значений на любом виде подключении к БД и на любой платформе.
З.Ы. просмотрите полученные списки значений вот этим: http://1c.proclub.ru/modules/mydownloads/singlefile.php?cid=24&lid=5006 все станет понятно.
Comment 7 Антон Азанов (Djelf) 2008-06-30 12:34:53 MSD
В совсем упрощенном эта ошибка 1С с гарантированным вылетом выглядит так:

Процедура Сформировать()
	СЗ=СоздатьОбъект("СписокЗначений");
	СЗ.ДобавитьЗначение(СЗ);
	СЗ.Принадлежит("и вот тут мы вылетаем");
КонецПроцедуры
Comment 8 Vitaly Lipatov 2008-06-30 12:49:56 MSD
Так я не понимаю. На таком коде 1С вылетает и в Windows? Тогда мы тут при чём?
Андрей, проверь в Windows.
Comment 9 Антон Азанов (Djelf) 2008-06-30 14:08:48 MSD
В windows естественно вылетает. Собственно я и говорю что wine@etersoft тут ни причем. 
Аналогичных ошибок с вылетом в самой 1С довольно много, причем некоторые проявляются только при работе с SQL.
Comment 10 Vitaly Lipatov 2008-06-30 14:11:23 MSD
Спасибо за разъяснение, Антон!
Багу закрываем, к нам отношения не имеет.