Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
28 ноя 2024, 03:51

Переменная не определена

Автор mrflow, 25 фев 2012, 05:36

0 Пользователей и 3 гостей просматривают эту тему.

mrflow

Версия 8.2, учебная.

&НаКлиенте
Процедура ЗаписатьФайл(Команда)

Перем ТекущиеДанныe,ВыбГод, ДеньГода, МесяцГода;
ТекущиеДанныe = Элементы.Год.СписокВыбора.ВыбратьЭлемент(ТекущийЭлемент); // ТИП ДАННЫХ СПИСОКА ВЫБОРА год - СТРОКА
        Предупреждение(Тип(ТекущиеДанныe));  // ПОЧЕМУ ПЕРЕМЕННАЯ НЕ ОПРЕДЕЛЕНА? =((

КонецПроцедуры


Текст ошибки:
Цитировать{Обработка.Обработка1.Форма.Форма.Форма(8)}: Тип не определен (1993)
      Предупреждение(Тип(ТекущиеДанныe));

Заранее спасибо за помощь!

mrflow

&НаКлиенте
Процедура ЗаписатьФайл(Команда)

Перем ТекущиеДанныe,ВыбГод, ДеньГода, МесяцГода;
ТекущиеДанныe = Элементы.Год.СписокВыбора.ВыбратьЭлемент(ТекущийЭлемент); // ТИП ДАННЫХ СПИСОКА ВЫБОРА год - СТРОКА
Предупреждение(Тип(ТекущиеДанныe));  // ПОЧЕМУ ПЕРЕМЕННАЯ НЕ ОПРЕДЕЛЕНА? =((

КонецПроцедуры

Klyacksa

Если хотите вывести тип элемента, то нужно использовать функцию ТипЗнч:
ТипЗнч(ТекущиеДанныe.Значение)
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

mrflow

Спасибо за ответ!
Получилось вывести. Но возникла проблема.
У меня в типе стоит ЧИСЛО, а сообщение показывает, что тип переменной СТРОКА =(  с чем это может быть связано?

Klyacksa

Вы же говорили, что там строка в типе?
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

mrflow

Да. Была. Я поменял на число. В списке выбора числа вида 1991,2002 и т.д.
Но он все равно говорит, что строка.

mrflow

&НаКлиенте
Процедура ЗаписатьФайл(Команда)

ТекущиеДанные=Элементы.Год.СписокВыбора.ВыбратьЭлемент(ТекущийЭлемент);
ВыбГод = Число(ТекущиеДанные.Значение);
Дат = Формат(Дата(ВыбГод, 1, 1), "ДЛФ=Д");

Текст = Новый ЗаписьТекста;
Текст.Открыть("C:\ВЫГРУЗИТЬ.txt", КодировкаТекста.ANSI);
   
Для i = 0 По 12 Цикл
Если i = 1 Или i = 3 Или i = 5 Или i = 7 Или i = 8 Или i = 9 Или i = 12 Тогда
Для j = 1 По 31 Цикл
Дат = Формат(Дата(ВыбГод, j, 1), "ДЛФ=Д");
Текст.ЗаписатьСтроку(Дат);
КонецЦикла
ИначеЕсли i = 4  Или i = 6 Или i = 9 Или i = 11 Тогда
Для j = 1 По 30 Цикл
Дат = Формат(Дата(ВыбГод, j, 1), "ДЛФ=Д"); // РУГАЕТСЯ ЗДЕСЬ. ЕСЛИ ВМЕСТО джи ПОСТАВИТЬ ЧИСЛО, то все нормально. Текст ошибки:
// Преобразование значения к типу Дата не может быть выполнено
Текст.ЗаписатьСтроку(Дат);
КонецЦикла
ИначеЕсли i = 2 Тогда
Если ВыбГод%4 Или ВыбГод%400 Тогда
Для j = 1 По 29 Цикл
Дат = Формат(Дата(ВыбГод, j, 1), "ДЛФ=Д");
Текст.ЗаписатьСтроку(Дат);
КонецЦикла
Иначе
Для j = 1 По 28 Цикл
Дат = Формат(Дата(ВыбГод, j, 1), "ДЛФ=Д");
Текст.ЗаписатьСтроку(Дат);
КонецЦикла
КонецЕсли
КонецЕсли;
КонецЦикла;
Текст.Закрыть();

КонецПроцедуры

Dethmontt

А какое значение j в этом месте когда он ругается?

Дат = Формат(Дата(ВыбГод, j, 1), "ДЛФ=Д");    // РУГАЕТСЯ ЗДЕСЬ. ЕСЛИ ВМЕСТО джи ПОСТАВИТЬ ЧИСЛО, то все нормально. Текст ошибки:
// Преобразование значения к типу Дата не может быть выполнено



МАКСИМАЛЬНОЕ ЧИСЛО КОТОРОЕ МОЖЕТ ПЕРЕДАВАТЬСЯ В "J" ЭТО 12 //12 месяцев
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

mrflow

Все заработало, спасибо большое!

mrflow

Подскажите пожалуйста, кто-нибудь, каким образом можно вывести это все на печать? Что-то в интернете все так непонятно разбросано, все про БД и Эксель..

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск