Имя: Пароль:
1C
1С v8
Переполнение стека встроенного языка на сервере
0 hawksib
 
17.11.14
13:08
Здравствуйте, столкнулся с проблемой при конвертации данных, хочу перенести дополнительные сведения из бухгалтерии в другую программу, для документа поступление товаров и услуг в обработчике события перед выгрузкой объекта пишу следующий код:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
|    Истина КАК Активность,
|    ДополнительныеСведения.Объект КАК Элемент,
|    ДополнительныеСведения.Свойство КАК Параметр,
|    ДополнительныеСведения.Значение КАК Значение
|ИЗ
|    РегистрСведений.ДополнительныеСведения КАК ДополнительныеСведения
|ГДЕ
|    ДополнительныеСведения.Объект = &Объект
|    И ДополнительныеСведения.Свойство.Заголовок <> ""Командировки""
|    И ДополнительныеСведения.Свойство.Заголовок <> ""Управленческий учет""";
Запрос.УстановитьПараметр("Объект", Источник);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
    ВыгрузитьПоПравилу(,,Выборка,,"ДополнительныеСвойства")
КонецЦикла;

и у меня возникает ошибка, до этого этот код проверил на документе авансовый отчет, всё работало, решил добавить все типы документов и теперь и авансовый отчет даже не выгружается, на рабочей станции 1с просто вылетает, на сервере выдает ошибку

Ошибка при вызове метода контекста (ВыгрузитьПоПравилу): Переполнение стека встроенного языка на сервере

причем выдает её миллиард раз, у объекта свойсва всего три, кто-нибудь сталкивался?
1 DmitrO
 
17.11.14
13:10
значит рекурсия образовалась :)
2 hawksib
 
17.11.14
13:24
че-то ни разу не сталкивался, где можно почитать? поиск результатов не дает чего-то
3 hawksib
 
17.11.14
13:31
не пойму ничего, в цикл добавил

Сообщить(Строка(Выборка.Элемент) + " = " + Строка(Выборка.Значение));

и в самом деле сообщение "Поступление товаров и услуг СГП00001829 от 30.11.2014 23:59:59 = ЦЗ Жизнедеятельность"
вывелось миллиард раз, может быть кто-нибудь знает почему?
4 hawksib
 
17.11.14
13:32
с авансовым отчетом всё работатет
5 Salimbek
 
17.11.14
13:33
(2) Телепатирую, у тебя в "Выгрузить по правилу" выгружаются все поля этого Объекта вместе со всеми своими вложениями. В каком-то из этих полей прописан это же Объект, поэтому он начинает выгружаться повторно, и еще, и еще, и т.д.
6 hawksib
 
17.11.14
13:38
понятное дело, но авансовый отчет без ошибок ведь грузит
7 hawksib
 
17.11.14
13:44
всё, я понял в чем я дибил, этот код в аваносвом отчете стоит на событии "После выгрузки в файл" вот и всё там и работатет
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший