Имя: Пароль:
1C
Админ
Проведение по партиям в SQL2008
,
0 Alvin1102
 
08.09.13
18:06
Здравствуйте, выгрузил файловую 1с 8.2 в SQl 2008.
Вроде все работает, но есть проблема.
При запуске обработки "Проведение по партиям", останавливается на любом первом документе с ошибкой "Получение элемента по индексу для значения не определенно".
Обработка эта родная, но модифицированна.
Если переходим от этой ошибки в конфигуратор, то видим что ругается
на следующие ошибки:

{Обработка.ПроведениеПоПартиям.Форма.Форма(226)}: Ошибка при вызове метода контекста (Записать)
ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);
{ОбщийМодуль.НастройкаПравДоступа(736)}: Получение элемента по индексу для значения не определено
ГраницаПериода = СоответствиеГраницЗапрета[Справочники.Организации.ПустаяСсылка()];
_____________________________________________________________

Ниже привожу код блока 736 строки:
Код:
Если ПараметрыПроверкиДокумента.ПроверятьУправленческуюДатуЗапрета Тогда        
      ГраницаПериода = СоответствиеГраницЗапрета[Справочники.Организации.ПустаяСсылка()];        
      // Если управленческая дата запрета для управленческого документа не определена
      // то используется общая дата запрета изменения данных
      Если ГраницаПоОрганизации = Неопределено Тогда
         ГраницаПоОрганизации = СоответствиеГраницЗапрета[Справочники.Организации.ПустаяСсылка()];    
      КонецЕсли;
      
      Если ГраницаПериода <> Неопределено Тогда
          
         Если ДокументОбъект.Дата <= ГраницаПериода Тогда
            Отказ = Истина;            
         КонецЕсли;                  
      КонецЕсли;
   КонецЕсли;

_____________________________________________________________
Блок кода 226 строки:

Код:
Если Строка(ТипЗнч(ОбрабатываемыйДокумент))="Заказ покупателя" Тогда
       ДокументОбъект=ОбрабатываемыйДокумент.ПолучитьОбъект();
       ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);
   КонецЕсли;

_____________________________________________________________
Отмечу, что в файловом варианте все работает. Собственно вопрос, как исправить, чтоб работало? Very Happy
1 Нуф-Нуф
 
08.09.13
18:08
а отладчик не спасает?
2 Alvin1102
 
09.09.13
06:30
(1) Нет, т.к. не являюсь программистом. А наш программист уверен, что дело в настройке SQL.
3 Галахад
 
гуру
09.09.13
06:39
В конфигураторе установи останавливаться по ошибке.

Потом посмотри чему равняются переменные:
- СоответствиеГраницЗапрета
- Справочники.Организации.ПустаяСсылка()
4 alkov
 
09.09.13
06:51
Релиз платформы? Проблема с инициализацией параметров сеанса была поправлена в одном из релизов, попробуйте обновить
5 floody
 
09.09.13
06:59
динамическое обновление не использовали? ну или просто почистить кэш, у меня тож была проблема с параметрами сеанса
6 Godofsin
 
09.09.13
07:01
+1 за кеш
7 Alvin1102
 
09.09.13
07:17
Динамическое обновление использовали.
Релиз платформы - 8.2.13.205, обновлю сегодня,попробую - отпишусь.
(3) Сделаю, после обновления плаформы.
(5) Под "очистить кеш", подразумевается удаление папки 1с в AppData?
8 Нуф-Нуф
 
09.09.13
07:17
БУГАГА ))) прог просто спихнул проблему на админа? Кроссавчег )))
9 shuhard
 
09.09.13
08:40
(2)[Нет, т.к. не являюсь программистом. А наш программист уверен, что дело в настройке SQL.]
зря ты лезешь не в своё дело
10 Alvin1102
 
09.09.13
11:40
(9) разберусь уж как-нибудь, моё или нет. главное решить задачу и разобраться, в чем причина в sql или в коде 1с.
Обновил платформу, заодно загрузил последнюю конфигурацию 1c. Очистил кеш.
Прошлых ошибок не наблюдаю, но выходят другие:
[code]
{ОбщийМодуль.НастройкаПравДоступа.Модуль(644,110)}: Переменная не определена (РежимДиалогаВопрос)
                    Если Вопрос("Внимание! Попытка изменения документа в закрытом периоде под полными правами, продолжить?",<<?>>РежимДиалогаВопрос.ДаНет)=КодВозвратаДиалога.Да Тогда
{ОбщийМодуль.НастройкаПравДоступа.Модуль(644,136)}: Переменная не определена (КодВозвратаДиалога)
                    Если Вопрос("Внимание! Попытка изменения документа в закрытом периоде под полными правами, продолжить?",РежимДиалогаВопрос.ДаНет)=<<?>>КодВозвратаДиалога.Да Тогда
{ОбщийМодуль.НастройкаПравДоступа.Модуль(644,11)}: Процедура или функция с указанным именем не определена (Вопрос)
                    Если <<?>>Вопрос("Внимание! Попытка изменения документа в закрытом периоде под полными правами, продолжить?",РежимДиалогаВопрос.ДаНет)=КодВозвратаДиалога.Да Тогда
[/code]
Ниже привожу код блока 644 строки:
[code]
Если ПараметрыСеанса.ТекущийПользователь.Наименование<>"Администратор" Тогда
            Если Строка(ТипЗнч(ДокументОбъект))="Документ объект: Возврат товаров от покупателя" ИЛИ Строка(ТипЗнч(ДокументОбъект))="Документ объект: Реализация товаров и услуг" ИЛИ Строка(ТипЗнч(ДокументОбъект))="Документ объект: Отчет о розничных продажах" ИЛИ Строка(ТипЗнч(ДокументОбъект))="Документ объект: Заказ покупателя" ИЛИ Строка(ТипЗнч(ДокументОбъект))="Документ объект: Снятие резерва" ИЛИ Строка(ТипЗнч(ДокументОбъект))="Документ объект: Оприходование товаров" ИЛИ Строка(ТипЗнч(ДокументОбъект))="Документ объект: Поступление товаров и услуг" ИЛИ Строка(ТипЗнч(ДокументОбъект))="Документ объект: Списание товаров" ИЛИ Строка(ТипЗнч(ДокументОбъект))="Документ объект: Комплектация номенклатуры" ИЛИ Строка(ТипЗнч(ДокументОбъект))="Документ объект: Закрытие заказов покупателей" ИЛИ Строка(ТипЗнч(ДокументОбъект))="Документ объект: Перемещение товаров" Тогда
                Запрос=Новый Запрос;
                Запрос.Текст=
                   "ВЫБРАТЬ
                 |    ГраницыЗапретаИзмененияДанных.ГраницаЗапретаИзменений
                 |ИЗ
                 |    РегистрСведений.ГраницыЗапретаИзмененияДанных КАК ГраницыЗапретаИзмененияДанных";
                Результат=Запрос.Выполнить().Выбрать();
                Если Результат.Следующий() Тогда
                     ДатаЗапретаРедТек=Результат.ГраницаЗапретаИзменений;
                КонецЕсли;
                Если НачалоМесяца(ДатаЗапретаРедТек)>=ДокументОбъект.Дата Тогда
                    Если Вопрос("Внимание! Попытка изменения документа в закрытом периоде под полными правами, продолжить?",РежимДиалогаВопрос.ДаНет)=КодВозвратаДиалога.Да Тогда
                         Возврат;
                    Иначе
                         Отказ=Истина;
                    КонецЕсли;    
                Иначе    
                     Возврат;
                КонецЕсли;
            Иначе
                Возврат;
            КонецЕсли;
        Иначе
            Возврат;
        КонецЕсли;    
[/code]

Ещё обновить платформу?
11 Галахад
 
гуру
09.09.13
11:47
Все же не стоит лезть в чужую епархию.
12 Alvin1102
 
09.09.13
11:55
(11) ок, если дело в коде 1с и просто проблему не решить, я и не претендую.
Дело в коде?
13 Serg_1960
 
09.09.13
12:01
(10) "Ещё обновить платформу?" - см. ограничение на версию платформы в документации к обновлению.

PS: сам текст алгоритма (точнее - присутствие вопроса в общем модуле) наводит на нехорошие мысли - сомнения и о типовой версии, и о компетенции программиста.
14 piter3
 
09.09.13
12:02
РежимДиалогаВопрос
Доступность :Тонкий клиент, веб-клиент, толстый клиент.
15 Serg_1960
 
09.09.13
12:04
ТС не озвучил конфигурацию. Меня смущает сам смысл вопроса. Имхо, не типовое это решение :(
16 Alvin1102
 
09.09.13
12:35
Конфигурация, Управление Торговлей.
Всем спасибо. Думаю дальше и правда, мне не стоит вникать, голову забивать...