Новости для бухгалтера, бухучет, налогообложение, отчетность, ФСБУ, прослеживаемость и маркировка, 1С:Бухгалтерия

Вход или Регистрация

Показывать по 10 20 40 сообщений
Новая тема Ответить
Письмо в техподдержку 1С
[Прочее]

Глюк в конфе или у меня в котелке?

Marat
читатель
офлайн
Дата регистрации: 05.01.2003
Сообщений: 32
Пост №1
 
26.05.2003 17:20

"В модуле формы: <br><br>Процедура Заполнить() <br><br>УдалитьСтроки(); <br><br>О = СоздатьОбъект("Операция"); <br><br>О.ВыбратьОперацииСПроводками(НачМесяца(ДатаДок),КонМесяца(ДатаДок),СчетПоКоду("25"),СчетПоКоду("01.1")); <br><br>Пока О.ПолучитьОперацию() = 1 Цикл <br><br>НоваяСтрока(); <br><br>Док = О.Документ; <br><br><br><br>ругается, грит примените метод .ТекущийДокумент() <br><br><br><br>Понимаю, что лажа, но пробую. Прокатило. <br><br><br><br>В модуле проведения: <br><br>Операция.НоваяПроводка() - Модуль Документа(5)}: Недопустимая операция <br><br><br><br>Подобные вещи делал сотни раз. Такое впервые. <br><br>На днях поставил 20-й движок и 434 релиз. <br><br><br><br><br><br><br><br>"

Ягода
читатель
офлайн
Дата регистрации: 23.05.2003
Сообщений: 9
Пост №2
 
28.05.2003 11:43

"Да вообще-то не глюк, а особенность работы объектов типа "Справочник", "Документ" и других, которые допускают перебор значений (типа .ПолучитьЭлемент()). Вероятно, в целях оптимизации при выполнении:<br><br>О=СоздатьОбъект("Операция");<br><br>О.ВыбратьЭлементы();<br><br>О.ПолучитьЭлемент();<br><br>П=О.Документ;<br><br>В последней строке в переменную П передается ссылка на О и относительная ссылка (внутри О) на Документ.<br><br>Поэтому если надо сохранить в какой-то переменной конкретное значение, лучше всегда использовать .ТекущийЭлемент() и .ТекущийДокумент().<br><br>Так надежнее. Кстати, допустимо многократное <br><br>.ТекущийДокумент().ТекущийДокумент().ТекущийДокумент();<br><br>:) Это нормально проходит!<br><br>Поэтому, когда функция (или процедура на входе использует конкретное значение (документ, справочник или еще чего) не вредно внутри функции, для того, чтобы это точно не был объект, выполнить .ТекущийЭлемент().<br><br>Примерно так:<br><br>Процедура Моя(НужныйЭлемСправочника);<br><br> Перем НастоящийЭлемент;<br><br> НастоящийЭлемент=НужныйЭлемСправочника.ТекущийЭлемент();<br><br>// и дальше работать с НастоящийЭлемент<br><br>Всего хорошего."

Marat
читатель
офлайн
Дата регистрации: 05.01.2003
Сообщений: 32
Пост №3
 
28.05.2003 15:41

"О=СоздатьОбъект("Операция"); <br><br>О.ВыбратьЭлементы(); <br><br>А ты ничего не напутал? Объект "Операция", а не "Справочник".<br><br>О.ВыбратьОперации().<br><br>Конструкцию описанную мной, я применял неоднократно и без проблем.<br><br>Только что пришла мысль попробовать:<br><br>Спр = СоздатьОбъект("Справочник.ХХХ");<br><br>Спр.ВыбратьДокументы()<br><br><br><br>Если это сработает, то 1с это лажа полнейшая.<br><br>"

Ягода
читатель
офлайн
Дата регистрации: 23.05.2003
Сообщений: 9
Пост №4
 
30.05.2003 12:04

"Тут меня поправили (ну ошибся!). Конечно надо:<br><br>О=СоздатьОбъект("Операция");<br><br>О.ВыбратьОперации();<br><br>О.ПолучитьОперацию();<br><br>Но сам принцип, я думаю понятен. Вообще следует отличать объект, через который можно получить доступ к конкретному документу, эл. справочника (и т.д.) и значение с с таким типом. Значение не допускает использовать методы (может не все - не помню), а объект лучше использовать в правой части присваивания с "освобождением от объекта": .ТекущийЭлемент() или .ТекущийДокумент().<br><br>Я так делаю всегда, но это стиль программирования, например далеко не все объявляют переменные и пишут коментарии. Мне кажется, что лучше написать 1-2 десятка лишних команд, чем потом искать глюки."

Показывать по 10 20 40 сообщений

Читают тему:

Быстрый переход
Для технических специалистов
  • Книга жалоб и предложений по работе сайта
  • Для технических специалистов
  • Представление регламентированной отчетности
  • Говорильня
  • Бухгалтерский учет: обсуждаем проекты нормативных актов и рекомендаций по ведению учета от БМЦ
  • Новый порядок применения ККТ (онлайн кассы с передачей сведений в ФНС)
  • Интернет-конференция: Оформление командировок по новым правилам
  • МАРКИРОВКА
  • ЕГАИС
  • Учет, налогообложение, автоматизация