Что за глюки с ТЗ (вопрос в стиле Чучундера)?

Форум 1С: Одинэс.Ру

Найти!

Что за глюки с ТЗ (вопрос в стиле Чучундера)?

victuan
19.06.2009 - 00:50
Имеется код:
   ТЗ = СоздатьОбъект("ТаблицаЗначений");
   ТЗ.НоваяКолонка("МПЗ","Справочник");
   ТЗ.НоваяКолонка("Док");
 
Ит = СоздатьОбъект("БухгалтерскиеИтоги");
Ит.ИспользоватьСубконто(ВидыСубконто.МестаХранения, ВыбСубконто1, 2);
Ит.ИспользоватьСубконто(ВидыСубконто.Номенклатура, ВыбСубконто2 , 1);
Ит.ВыполнитьЗапрос(Дата1, Дата2, "41.1,41.3,41.4,43",,, 1,"Операция", "СК");
 
Ит.ВыбратьСубконто(2);
Пока Ит.ПолучитьСубконто(2) = 1 Цикл
Ит.ВыбратьПериоды();
Пока Ит.ПолучитьПериод() = 1 Цикл
ТЗ.НоваяСтрока();
ТЗ.МПЗ = Ит.субконто(2);
ТЗ.Док = Ит.Операция.Документ;
КонецЦикла
КонецЦикла;
 
ТЗ.ВыбратьСтроку();
 
В итоге неверно заполняется колонка Док. В нее попадает либо пусто, либо последний документ в запросе.
Стоит строку
   ТЗ.НоваяКолонка("Док");
поменять на
   ТЗ.НоваяКолонка("Док","Документ");
и все начинает работать верно. Я полдня потерял выясняя причину.
Что за нах?
К списку тем 1 > К списку форумов

Интересные темы

odines.ru
29.10.2020 - 19:23
Смотри также:
Какая связь между 1С и операционной системой?
Как работать со временем ?
FormEx Раскраска строк Дерева и ТаблицыЗначений

Re: Что за глюки с ТЗ (вопрос в стиле Чучундера)?

Недопёсок
1 - 19.06.2009 - 02:18
А так?
ТЗ.Док = Ит.Операция.Документ.ТекущийДокумент();

Re: Что за глюки с ТЗ (вопрос в стиле Чучундера)?

victuan
2 - 19.06.2009 - 02:21
(1) Так глюков нет. Но факт глюка остается невыясненным.

Re: Что за глюки с ТЗ (вопрос в стиле Чучундера)?

Недопёсок
3 - 19.06.2009 - 02:22
(1+)
"Атрибут Документ предназначен только для доступа к атрибутам и рекви­зитам документа, которому принадлежит операция. Для получения значения типа «Документ» используется метод ТекущийДокумент."
(с) ЖКК
 
по-видимому, в случае типизации колонки выполняется преобразование типа.

Re: Что за глюки с ТЗ (вопрос в стиле Чучундера)?

victuan
4 - 19.06.2009 - 02:23
(3) Все равно не ясно почему во ВСЕ строки ТЗ попадает ОДИН И ТОТ ЖЕ документ, хотя в момент перебора в цикле Ит.Операция.Документ ссылается на разные документы (так показал отладчик).

Re: Что за глюки с ТЗ (вопрос в стиле Чучундера)?

Недопёсок
5 - 19.06.2009 - 02:30
Глюк, но задокументированный:
"Атрибут Документ предназначен только для доступа к атрибутам..." :)

Интересные темы

odines.ru
29.10.2020 - 19:23
Смотри также:
Битый МД (еще раз)
ЗиК, выход на работу в отпуск
Помогите!!! Бух7.7 сетевая на пятом компе выдает "ошибка открытия *.dbf" Винда EXP pro sp 2

Re: Что за глюки с ТЗ (вопрос в стиле Чучундера)?

Недопёсок
6 - 19.06.2009 - 02:32
(5+) Одноэсина должна была ругнуться вроде "тип мисматч", а вместо этого молча работает неправильно :(

Re: Что за глюки с ТЗ (вопрос в стиле Чучундера)?

victuan
7 - 19.06.2009 - 02:36
(5,6) а при чем здесь "тип мисматч"? 1С никогда не ругается при несоответствии типов, просто молча пытается преобразовать, если не возможно, то оставляет "пусто", но никак не понятный мусор, не понятно как полученный.

Re: Что за глюки с ТЗ (вопрос в стиле Чучундера)?

Недопёсок
8 - 19.06.2009 - 02:43
(7) В твоем случае нечего ("Атрибут Документ предназначен только для доступа к атрибутам") и не к чему (колонка неопределенного вида) преобразовывать. Вот и получается такая фигня. Я с тобой согласен - глюк.

Re: Что за глюки с ТЗ (вопрос в стиле Чучундера)?

victuan
9 - 19.06.2009 - 02:56
(8) Но если я типизирую колонку в ТЗ заранее, то преобразование происходит. Следовательно, я делаю вывод, что "Атрибут Документ предназначен только для доступа к атрибутам" не является препятствием для присвоения, значит причина не в нем.

Re: Что за глюки с ТЗ (вопрос в стиле Чучундера)?

Недопёсок
10 - 19.06.2009 - 03:52
(9) Причина в том, что если переменная слева от "=" нетипизирована, то переменная справа должна быть однозначно типизирована (вариант с .ТекущийДокумент()), иначе нормальная работа не гарантируется. "Атрибут документ" содержит нечто, что может быть приведено к типу "Документ", что и происходит если переменная слева от "=" типизирована. По-видимому, следует делать как написано в документации, т. е. юзать ТекущийДокумент().
(Все написанное - ИМХО).

Re: Что за глюки с ТЗ (вопрос в стиле Чучундера)?

victuan
11 - 19.06.2009 - 03:55
Ну что ж, пока пришел к выводу что глюк не в ТЗ, а в методе выборки из Операции. Это тоже результат.
Т.е. правильным для решении проблемы является не типизиация колонки ТЗ, а использование метода ТекущийДокумент().

Re: Что за глюки с ТЗ (вопрос в стиле Чучундера)?

Шухер
12 - 19.06.2009 - 04:36
4-victuan > Все равно не ясно почему во ВСЕ строки ТЗ попадает ОДИН И ТОТ ЖЕ документ
Такой "глюк" обычно происходит, когда путают Таблицу с Записью в этой самой таблице.
При обращении к Таблице на экран получаем Запись на которой курсор (обычно самая первая, которая после BOF )
имхо

Re: Что за глюки с ТЗ (вопрос в стиле Чучундера)?

USSR
13 - 19.06.2009 - 04:40
Для минимизации хаоса типизация тоже не помешает. Без нее происходят очень интересные косяки, например, при выгрузке индексированной ТЗ (1С++) в обычную

Re: Что за глюки с ТЗ (вопрос в стиле Чучундера)?

roma n
14 - 19.06.2009 - 04:52
(4), а ты перед просмотром ТЗ перепозиционируйся в выборке из Ит :)
Передача параметра по ссылке. Это из разряда положить маленькую ТЗ в строку большой ТЗ. Без создания для каждой строки отдельных объектов МаленькаяТЗ = СоздатьОбъект() получишь тот же эффект

Re: Что за глюки с ТЗ (вопрос в стиле Чучундера)?

Недопёсок
15 - 19.06.2009 - 05:05
(11) "Глюк" в особенности атрибута "Документ" объекта "Операция": несмотря на то, что по документации он предназначен только для доступа к реквизитам и атрибутам документа, существует недокументированная возможность использовать его для получения ссылки на документ вместо документированного способа через ТекущийДокумент(). Таким образом, нет гарантии, что в последующих релизах 7.7 конструкция наподобии "ПеременнаяТипДокумент = Ит.Операция.Документ" будет работать нормально.  
(14) т. е., в тз записывается ссылка не на документ, а на поле текущей строки выборки БИ?

Re: Что за глюки с ТЗ (вопрос в стиле Чучундера)?

roma n
16 - 19.06.2009 - 05:08
(15) ИМХО так

Re: Что за глюки с ТЗ (вопрос в стиле Чучундера)?

Шухер
17 - 19.06.2009 - 05:17
15-Недопёсок > не на Текущую строку ссылается, а на Таблицу!
Не надо путать Таблицу и Запись в таблице.
 
Хе, а это путало-то "Таблица/Запись"  тоже баян еще тот. Болезнь, можно сказать, 1С-ников.

Re: Что за глюки с ТЗ (вопрос в стиле Чучундера)?

pit
18 - 19.06.2009 - 06:47
Вот стучит, качаясь, дятел на ветру....

Re: Что за глюки с ТЗ (вопрос в стиле Чучундера)?

victuan
19 - 19.06.2009 - 08:00
(12, 17) Не уловил твою мысль.
Такой "глюк" обычно происходит, когда путают Таблицу с Записью в этой самой таблице
У меня ТЗ видна целиком методом ТЗ.ВыбратьСтроку() (это видно в сабже).
Как тут путается запись с таблицей?
И причем здесь BOF? (before of file или что ты имеешь ввиду?)

Re: Что за глюки с ТЗ (вопрос в стиле Чучундера)?

Сияющий Асинхраль
20 - 19.06.2009 - 08:31
Отсутствие типизации вообще то плохой стиль, не стоит использовать эту возможность в принципе, сразу исчезнет столько проблем...

Re: Что за глюки с ТЗ (вопрос в стиле Чучундера)?

Шухер
21 - 19.06.2009 - 08:32
19-victuan >У меня ТЗ видна целиком методом ТЗ.ВыбратьСтроку()
угу, ну ты и видишь то, что в неё попало.
уг, before of file
К списку тем 1 > К списку форумов
Тема закрыта и находится в архиве.
Но Вы можете начать новую тему.
« ПУБ: Можно ли на 20й отнести затраты без расшифровки по ГП Обновелние бюджетки на релиз 631 »
© 2009 Форум 1С: Одинэс.Ру