Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Снятие с резерва. Не работает
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 7.7
Leva
Хороших всем праздников!

Перестал "работать" документ снятие с резерва. Выводится ошибка на стр. 3561 в основном модуле, в кот. написано:
 ПрошлоДней= Число(НачДата-'03.01.1994')

Вся функция выглядит так:
Функция глБанковскаяДата(НачДата,КолвоДней)  Экспорт
    // функция возвращает дату через заданное
    // количество рабочих дней, т.е.
    // без суббот и воскресений.
    Дней=0;
    К=0;
ПрошлоДней= Число(НачДата-'03.01.1994');
    // в константе надо указать любую
    // дату понедельника в прошлом
    Пока Дней<КолвоДней Цикл
        К=К+1;
        // определим день недели
        ДН=НомерДняНедели(НачДата+К);
        Если НЕ((ДН=6) ИЛИ (ДН=7)) Тогда
            Дней=Дней+1;
        КонецЕсли;
    КонецЦикла;
    Возврат НачДата+К;
КонецФункции


Подскажите плиз что случилось?
P.S. После чего перестал "работать" документ, не помню. upset.gif

Спасибо всем!
Читатель
Ошибки никакой не видно. А как программа ругается, интересно?
И зачем нужно это "ПрошлоДней" непонятно. В функции оно не используется. Может, заремить его.
Ardi
Конфигурация "Управление Госрезервом"?
Leva
Цитата(Ardi @ 02.05.12, 0:52) необходимо зарегистрироваться для просмотра ссылки
Конфигурация "Управление Госрезервом"?

Торговля и склад для Украины 7.70.007
Pepe
Вы б хоть текст ошибки привели, а так вам к екстрасенсам.
Leva
Цитата(Pepe @ 02.05.12, 12:45) необходимо зарегистрироваться для просмотра ссылки
Вы б хоть текст ошибки привели, а так вам к екстрасенсам.

Сорри.
Текст ошибки:
Цитата
ПрошлоДней=Число(НачДата='03.01.1994');
{Глобальный модуль(3561)}: Операция вычитания не определена для строковых величин


09000000.gif
5_kopeek
Напишите так:
ПрошлоДней=Число(НачДата-Дата('03.01.1994'));
Leva
Цитата(5_kopeek @ 02.05.12, 20:29) необходимо зарегистрироваться для просмотра ссылки
Напишите так:
ПрошлоДней=Число(НачДата-Дата('03.01.1994'));

Спасибо, за совет, но... результат тот же sad.gif
5_kopeek
Текст ошибки тот же? Тогда проверяйте, что передается в переменную НачДата. Если не умеете пользоваться отладчиком, можете перед строкой, в которой возникает ошибка добавить:
Сообщить("НачДата = "+НачДата+" Тип /"+ТипЗначенияСтр(НачДата)+"/");

И скажите, что напишет.
vadim007
Цитата(Leva @ 01.05.12, 22:41) необходимо зарегистрироваться для просмотра ссылки
// в константе надо указать любую
// дату понедельника в прошлом

Вот ключевой момент. Константу трогали?
Leva
Цитата(vadim007 @ 03.05.12, 9:18) необходимо зарегистрироваться для просмотра ссылки
Вот ключевой момент. Константу трогали?

Я нет. Есть еще один с админ правами...
А какая у Вас дата указана?
vadim007
Любая дата в прошлом. Главное, чтобы не пустая.
Leva
Цитата(vadim007 @ 04.05.12, 8:17) необходимо зарегистрироваться для просмотра ссылки
Любая дата в прошлом. Главное, чтобы не пустая.

Значит, проблемма не в дате, а в чем то другом. help.gif
sercher
у меня ощущение что НачДата в функцию пришла строкой вот и чудит, нужно запускать отладчик и тормозить непосредственно перед ошбикой мониторя переменную начДата, и заодно действие в скобках, и мне кажется что функция Число(...) тут не нужна, потому как разница между датами это и так число

проверьте в том месте где эта функция вызывается

а и правда зачем Вам там нужна эта конструкция? вы ведь переменную ПрошлоДней больше не используете
Vofka
Цитата(sercher @ 10.05.12, 15:35) необходимо зарегистрироваться для просмотра ссылки
а и правда зачем Вам там нужна эта конструкция? вы ведь переменную ПрошлоДней больше не используете

Теоретически это может быть глобальная переменная.
alex040269
Цитата(Leva @ 09.05.12, 20:57) необходимо зарегистрироваться для просмотра ссылки
Значит, проблемма не в дате, а в чем то другом. help.gif

а советом от 5_kopeek
Сообщить("НачДата = "+НачДата+" Тип /"+ТипЗначенияСтр(НачДата)+"/");

не хотите воспользоваться??

Печально. И зачем Вам эти советы?
Leva
Цитата(alex040269 @ 10.05.12, 19:36) необходимо зарегистрироваться для просмотра ссылки
а советом от 5_kopeek
Сообщить("НачДата = "+НачДата+" Тип /"+ТипЗначенияСтр(НачДата)+"/");

не хотите воспользоваться??

Печально. И зачем Вам эти советы?

Сорри был завал на работе, и пропустил совет.
Промониторил , выводит:
Цитата
НачДата=02.06.11 Тип/Дата/
НачДата=08.08.11 Тип/Дата/
НачДата=08.06.11 Тип/Дата/
НачДата=08.08.11 Тип/Дата/
НачДата=23.12.11 Тип/Дата/
НачДата=06.08.11 Тип/Дата/
НачДата=17.08.11 Тип/Дата/
НачДата=28.12.11 Тип/Дата/
НачДата=Тип/Строка/

И далее ошибка
ПрошлоДней=Число(НачДата="03.01.1994");
{Глобальный модуль(3562)}; Операция вычитания не определена для строковых величин.
Прошло

Т.е. приходит пустота и после этого выдается ошибка.
mister-x
Цитата(Leva @ 25.05.12, 19:50) необходимо зарегистрироваться для просмотра ссылки
Т.е. приходит пустота и после этого выдается ошибка.

а ось і проблема
Цитата
НачДата=Тип/Строка/
Читатель
В самом начале функции вставьте код:
Если ТипЗначенияСтр(НачДата)<>"Дата" Тогда
Сообщить("НачДата = "+НачДата+" Тип /"+ТипЗначенияСтр(НачДата)+"/ - НЕ ДАТА", "!!!");
Возврат 0;
КонецЕсли;

И разбирайте те случаи, когда "приходит" не дата. Если надо.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.