|
Преобразование значения к типу Число не может быть выполнено Ø (GROOVY 05.05.2014 23:22) | ☑ | ||
---|---|---|---|---|
0
листопад
05.05.14
✎
22:46
|
Формирую внешнюю печ.форму сразу в Ворд. Проблема с реквизитом: в спр.ФЛ, на вкладке "Прочее" есть возможность вводить Заметки. Мы вводим Дату и Содержание. В случае, если у ФЛ заметки нет, при формировании этой внеш.печ.формы выдает сообщение об ошибке и не формирует:
Не удалось сформировать внешнюю печатную форму! Преобразование значения к типу Число не может быть выполнено Если Заметка заполнена, то все формируется. Опытным путем обнаружила, что если закомментировать строчку: ш_ДовДата = ДатаПрописью(ДовДата); то в любом случае печ.форма формируется, только в случае не заполнения Заметки, эти поля не выводятся и в печ.форму. Вопрос, как сделать, чтобы печ.форма формиловалась без закомментирования этой строчки. Ведь в ней вызывается функция, которая возвращает Дату прописью. Вот код: Функция Печать() Экспорт Выборка = СформироватьЗапросДляПечатиТрудовогоДоговораН().Выбрать(); Если Выборка.Следующий() Тогда // заметки Доверенность ВидЗ = Справочники.ВидыЗаметок.НайтиПоНаименованию("доверенность"); Если НЕ ВидЗ.Пустая() Тогда ВидЗаметки = ВидЗ.Ссылка; Содержание=""; з=Новый Запрос; з.Текст= "ВЫБРАТЬ | Заметки.Дата, | Заметки.Объект, | Заметки.Содержание, | Заметки.ВидЗаметки |ИЗ | РегистрСведений.Заметки КАК Заметки |ГДЕ | Заметки.Объект = &ФЛ | И Заметки.ВидЗаметки = &Вид"; з.УстановитьПараметр("ФЛ",Выборка.ФизЛицо); з.УстановитьПараметр("Вид", ВидЗаметки); ВыбЗаметка = з.Выполнить().Выбрать(); Если ВыбЗаметка.Следующий() Тогда ДовДата = ВыбЗаметка.Дата; ДовНомер = ВыбЗаметка.Содержание; КонецЕсли; Иначе ДовДата = " "; ДовНомер = " "; Сообщить( "У физ.лица " + Выборка.ФизЛицо + " не заполнен ВидЗаметки"); КонецЕсли; ш_ДовНомер = ДовНомер; ш_ДовДата = ДовДата; ш_ДовДата = ДатаПрописью(ДовДата); КонецЕсли; Макет = ПолучитьМакет("МакетДоверенность"); MSWord = Макет.Получить(); Попытка Документ = MSWord.Application.Documents(1); Документ.Activate(); Замена = Документ.Content.Find; Замена.Wrap = 1; //чтобы не писать каждый раз Find Замена.Execute("ш_ДовНомер", , , , , , , , ,ш_ДовНомер,2); Замена.Execute("ш_ДовДата", , , , , , , , ,ш_ДовДата,2); MSWord.Application.Visible=Истина; MsWord.Activate(); Исключение Сообщить(ОписаниеОшибки()); MSWord.Application.Quit(); КонецПопытки; КонецФункции |
|||
1
листопад
05.05.14
✎
22:48
|
Вот код фунукции, вызов которой приходится закомментировать, иначе ошибка:
Функция ДатаПрописью(ДП) Экспорт стрРез = ""; Д=Формат(ДП,"ДЛФ=D"); спсМес = Новый СписокЗначений; спсМес.Добавить("января"); спсМес.Добавить("февраля"); спсМес.Добавить("марта"); спсМес.Добавить("апреля"); спсМес.Добавить("мая"); спсМес.Добавить("июня"); спсМес.Добавить("июля"); спсМес.Добавить("августа"); спсМес.Добавить("сентября"); спсМес.Добавить("октября"); спсМес.Добавить("ноября"); спсМес.Добавить("декабря"); спсЧисл = Новый СписокЗначений; спсЧисл.Добавить("первое","первого"); спсЧисл.Добавить("второе","второго"); спсЧисл.Добавить("третье","третьего"); спсЧисл.Добавить("четвертое","четвертого"); спсЧисл.Добавить("пятое","пятого"); спсЧисл.Добавить("шестое","шестого"); спсЧисл.Добавить("седьмое","седьмого"); спсЧисл.Добавить("восьмое","восьмого"); спсЧисл.Добавить("девятое","девятого"); //числительные им.падеж спсЧислИм = Новый СписокЗначений; спсЧислИм.Добавить("тысяча","тысячного"); спсЧислИм.Добавить("две тысячи","двухтысячного"); спсЧислИм.Добавить("три тысячи","трехтысячного"); спсЧислИм.Добавить("четыре тысячи","четырёхтысячного"); спсЧислИм.Добавить("пять","пятитысячного"); спсЧислИм.Добавить("шесть","шеститысячного"); спсЧислИм.Добавить("семь","семитысячного"); спсЧислИм.Добавить("восемь","восьмитысячного"); спсЧислИм.Добавить("девять","девятитысячного"); спсСотни = Новый СписокЗначений; спсСотни.Добавить("сто"); спсСотни.Добавить("двести"); спсСотни.Добавить("триста"); спсСотни.Добавить("четыреста"); спсСотни.Добавить("пятьсот"); спсСотни.Добавить("шестьсот"); спсСотни.Добавить("семьсот"); спсСотни.Добавить("восемьсот"); спсСотни.Добавить("девятьсот"); //десятки им.падеж спсДесИм = Новый СписокЗначений; спсДесИм.Добавить("","десятого"); спсДесИм.Добавить("двадцать","двадцатого"); спсДесИм.Добавить("тридцать","тридцатого"); спсДесИм.Добавить("сорок","сорокового"); спсДесИм.Добавить("пятьдесят","пятидесятого"); спсДесИм.Добавить("шестьдесят","шестидесятого"); спсДесИм.Добавить("семьдесят","семидесятого"); спсДесИм.Добавить("восемьдесят","восьмидесятого"); спсДесИм.Добавить("девяносто","девяностого"); //субдесятки род.падеж спсСубДесРод = Новый СписокЗначений; спсСубДесРод.Добавить("одиннадцатого"); спсСубДесРод.Добавить("двенадцатого"); спсСубДесРод.Добавить("тринадцатого"); спсСубДесРод.Добавить("четырнадцатого"); спсСубДесРод.Добавить("пятнадцатого"); спсСубДесРод.Добавить("шестнадцатого"); спсСубДесРод.Добавить("семнадцатого"); спсСубДесРод.Добавить("восемнадцатого"); спсСубДесРод.Добавить("девятнадцатого"); спсДес = Новый СписокЗначений; спсДес.Добавить("десятое"); спсДес.Добавить("двадцатое","двадцать"); спсДес.Добавить("тридцатое","тридцать"); спсДес.Добавить("сороковое","тридцать"); спсДес.Добавить("пятидесятое","тридцать"); спсДес.Добавить("шестидесятое","тридцать"); спсДес.Добавить("семидесятое","тридцать"); спсСубДес = Новый СписокЗначений; спсСубДес.Добавить("одиннадцатое"); спсСубДес.Добавить("двенадцатое"); спсСубДес.Добавить("тринадцатое"); спсСубДес.Добавить("четырнадцатое"); спсСубДес.Добавить("пятнадцатое"); спсСубДес.Добавить("шестнадцатое"); спсСубДес.Добавить("семнадцатое"); спсСубДес.Добавить("восемнадцатое"); спсСубДес.Добавить("девятнадцатое"); спсДаты = СтрЗаменить(СокрЛП(Д),".",Символы.ПС); //разбираем день стрДень = СокрЛП(Число(СтрПолучитьСтроку(спсДаты,1))); Если СтрДлина(стрДень)=1 Тогда стрДень = спсЧисл.Получить(Число(стрДень)-1).Значение; Иначе десДень = Число(Лев(стрДень,1)); едДень = Число(Прав(стрДень,1)); Если едДень=0 Тогда стрДень = спсДес.Получить(десДень-1).Значение; Иначе Если десДень>1 Тогда т = Строка(спсДес.Получить(десДень-1)); стрДень = т+" "+Строка(спсЧисл.Получить(едДень-1).Значение); Иначе стрДень = спсСубДес.Получить(едДень-1).Значение; КонецЕсли; КонецЕсли; КонецЕсли; //разбираем месяц стрМес = спсМес.Получить(Число(СтрПолучитьСтроку(спсДаты,2))-1).Значение; //разбираем год стрГод = СтрПолучитьСтроку(спсДаты,3); длинаГода = СтрДлина(стрГод); Если длинаГода=4 Тогда тыс = Сред(стрГод,1,1); сот = Сред(стрГод,2,1); дес = Сред(стрГод,3,1); ед = Сред(стрГод,4,1); _т = спсЧислИм.Получить(Число(тыс)-1).Значение; Если (Число(сот)=0) и (Число(дес)=0) и (Число(ед)=0) Тогда миллениум = Строка(спсЧислИм.Получить(Число(тыс)-1)); стрГод = миллениум; Иначе с = ""; дс = ""; е = ""; Если Число(сот)<>0 Тогда с = спсСотни.Получить(Число(сот)-1).Значение; КонецЕсли; Если Число(дес)<>0 Тогда Если Число(ед)=0 Тогда дг = Строка(спсДесИм.Получить(Число(дес)-1)); дс = дг; Иначе дс = спсСубДесРод.Получить(Число(ед)-1).Значение; КонецЕсли; КонецЕсли; Если (Число(дес)>1) или (Число(дес)=0) Тогда Если Число(ед)<>0 Тогда е =Строка(спсЧисл.Получить(Число(ед)-1)); КонецЕсли; КонецЕсли; стрГод = Строка(_т)+" "+Строка(с)+" "+Строка(дс)+" "+Строка(е); КонецЕсли; Иначе КонецЕсли; стрГод = стрГод+" года"; стрГод = СтрЗаменить(стрГод," "," "); стрРез = Строка(стрДень)+" "+Строка(стрМес)+" "+Строка(стрГод); стрРез = СтрЗаменить(стрРез," "," "); Возврат стрРез; КонецФункции |
|||
2
shuhard
05.05.14
✎
22:48
|
(0) пипец
|
|||
3
листопад
05.05.14
✎
22:48
|
(2) что такое опять???
|
|||
4
GROOVY
05.05.14
✎
22:51
|
Когда же уже ТС поймет что такое типы значений и как с ними работать? Возьмите учебник по информатике за 9-10 классы и почитайте.
|
|||
5
листопад
05.05.14
✎
22:54
|
(4) На праздники обещаю заняться этим пробелом ))) Но мне надо сейчас решить эту проблему. Поэтому HELP!!! SOS!!!
|
|||
6
PR
05.05.14
✎
22:55
|
(5) Решаю проблемы. 2000 в час.
|
|||
7
PR
05.05.14
✎
22:56
|
+(6) Ой, это еще и девушка. Как вас занесло на почву 1С-то?
|
|||
8
Torquader
05.05.14
✎
22:57
|
Поищи стандартную функцию "число прописью" и не мучайся.
|
|||
9
листопад
05.05.14
✎
22:58
|
(6) Ну вот, началось... Как будто не на форум по 1С за помощью к колегам с более светлыми головами обратилась, а на сайт фриланса...
|
|||
10
листопад
05.05.14
✎
22:59
|
(8) И снова здравствуйте, Torquader. Уже который вечер мы с Вами ведем диалоги здесь ))) По поводу Вашего совета: у меня не числа, а ДАТА выводиться должна прописью. Стандартную функцию в ЗУПе я не нашла.
|
|||
11
Torquader
05.05.14
✎
23:00
|
(9) Ну, неси мисочку для слёз - сейчас опять топить будем.
|
|||
12
2S
05.05.14
✎
23:00
|
(10) почту видела от меня?
|
|||
13
Torquader
05.05.14
✎
23:02
|
Как бы - ЧислоПрописью - чем не подходит ?
|
|||
14
листопад
05.05.14
✎
23:03
|
(7) Знали бы Вы, сколько раз я слышала этот вопрос...
|
|||
15
листопад
05.05.14
✎
23:04
|
(12) нет, не приходило ничего...
|
|||
16
2S
05.05.14
✎
23:06
|
(15) в профиле верный адрес?
|
|||
17
листопад
05.05.14
✎
23:07
|
(12), Ой, я не в ту почту заходила. Сейчас зашла, которая у меня в профиле. Получила ))) Вы меня засмущали...
|
|||
18
2S
05.05.14
✎
23:08
|
Все в почту )
|
|||
19
листопад
05.05.14
✎
23:08
|
(18) Ответила )))
|
|||
20
листопад
05.05.14
✎
23:12
|
Ап! Куда все пропали? Проблема в (0) не решена еще...
|
|||
21
Torquader
05.05.14
✎
23:12
|
А что в почте ?
|
|||
22
Torquader
05.05.14
✎
23:13
|
(20) А что будет за решение проблемы ?
|
|||
23
листопад
05.05.14
✎
23:18
|
(22) Если бы что-то было, я бы на другой ресурс сходила. А так - простое человеческое СПАСИБО, и Вам плюсик к карме, что доброе дело сделали, помогли девушке.
|
|||
24
Torquader
05.05.14
✎
23:20
|
Во-первых, полезно проверить дату на пустоту, чтобы вместо пустой даты вывести пустую строку.
|
|||
25
листопад
05.05.14
✎
23:20
|
Уже 45мин.прошло... Кто-нибудь!!!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |