Имя: Пароль:
1C
1С v8
СКД - при запуске программно: "Таблица не найдена"
0 al_zzz
 
06.06.12
07:12
Делаю отчет/обработку на СКД. Считает сезонность и динамику. Отчет работает корректно. Но когда хочу запустить программно, чтоб получить данные в тз, выдает:
Ошибка компоновки данных
по причине:
Ошибка инициализации
по причине:
Ошибка создания набора данных "Прогноз"
по причине:
Ошибка при исполнении запроса набора данных
по причине:
{(17, 2)}: Таблица не найдена "_1_ПродажиОПТ"
<<?>>_1_ПродажиОПТ КАК _1_ПродажиОПТ
Вот текст запроса из первого набора данных:
ВЫБРАТЬ
   Склады.Ссылка КАК Склад,
   Склады.ВидСклада
ПОМЕСТИТЬ _0_Склады
ИЗ
   Справочник.Склады КАК Склады
ГДЕ
   Склады.ЭтоГруппа = ЛОЖЬ
   И (НЕ Склады.Ссылка В ИЕРАРХИИ (&ЗакрытыеСклады))
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ПродажиОбороты.Номенклатура,
   ПродажиОбороты.Период,
   ПродажиОбороты.КоличествоОборот
ПОМЕСТИТЬ _1_ПродажиРозница
ИЗ
   РегистрНакопления.Продажи.Обороты(
           &НачалоПериода,
           &КонецПериода,
           Месяц,
           (НЕ Контрагент В ИЕРАРХИИ (&СобственныеКонтрагенты))
               И Номенклатура <> &ПустаяСсылка
               И ДокументПродажи.Склад В
                   (ВЫБРАТЬ
                       _0_Склады.Склад
                   ИЗ
                       _0_Склады КАК _0_Склады
                   ГДЕ
                       _0_Склады.ВидСклада = &Розница)) КАК ПродажиОбороты
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ПродажиОбороты.Номенклатура,
   ПродажиОбороты.Период,
   ПродажиОбороты.КоличествоОборот
ПОМЕСТИТЬ _1_ПродажиОПТ
ИЗ
   РегистрНакопления.Продажи.Обороты(
           &НачалоПериода,
           &КонецПериода,
           Месяц,
           (НЕ Контрагент В ИЕРАРХИИ (&СобственныеКонтрагенты))
               И Номенклатура <> &ПустаяСсылка
               И ДокументПродажи.Склад В
                   (ВЫБРАТЬ
                       _0_Склады.Склад
                   ИЗ
                       _0_Склады КАК _0_Склады
                   ГДЕ
                       _0_Склады.ВидСклада = &ОПТ)) КАК ПродажиОбороты
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ПродажиОбороты.Номенклатура,
   ПродажиОбороты.КоличествоОборот / 12 КАК СредняяПродажа
ПОМЕСТИТЬ _2_СредняяПродажаРозница
ИЗ
   РегистрНакопления.Продажи.Обороты(
           &НачалоПериода,
           &КонецПериода,
           ,
           (НЕ Контрагент В ИЕРАРХИИ (&СобственныеКонтрагенты))
               И Номенклатура <> &ПустаяСсылка
               И ДокументПродажи.Склад В
                   (ВЫБРАТЬ
                       _0_Склады.Склад
                   ИЗ
                       _0_Склады КАК _0_Склады
                   ГДЕ
                       _0_Склады.ВидСклада = &Розница)) КАК ПродажиОбороты
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ПродажиОбороты.Номенклатура,
   ПродажиОбороты.КоличествоОборот / 12 КАК СредняяПродажа
ПОМЕСТИТЬ _2_СредняяПродажаОпт
ИЗ
   РегистрНакопления.Продажи.Обороты(
           &НачалоПериода,
           &КонецПериода,
           ,
           (НЕ Контрагент В ИЕРАРХИИ (&СобственныеКонтрагенты))
               И Номенклатура <> &ПустаяСсылка
               И ДокументПродажи.Склад В
                   (ВЫБРАТЬ
                       _0_Склады.Склад
                   ИЗ
                       _0_Склады КАК _0_Склады
                   ГДЕ
                       _0_Склады.ВидСклада = &Опт)) КАК ПродажиОбороты
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   "ОПТ" КАК Вид,
   _1_ПродажиОПТ.Номенклатура КАК Номенклатура,
   _1_ПродажиОПТ.Период КАК Месяц,
   _1_ПродажиОПТ.КоличествоОборот КАК Продано
ПОМЕСТИТЬ _3_ПродажиПомесячноОР
{ВЫБРАТЬ
   Вид,
   Номенклатура.*,
   Месяц,
   Продано}
ИЗ
   _1_ПродажиОПТ КАК _1_ПродажиОПТ

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
   "Розница",
   _1_ПродажиРозница.Номенклатура,
   _1_ПродажиРозница.Период,
   _1_ПродажиРозница.КоличествоОборот
ИЗ
   _1_ПродажиРозница КАК _1_ПродажиРозница
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   _3_ПродажиПомесячноОР.Вид,
   _3_ПродажиПомесячноОР.Номенклатура,
   _3_ПродажиПомесячноОР.Месяц КАК Месяц,
   _3_ПродажиПомесячноОР.Продано,
   ВЫБОР
       КОГДА _3_ПродажиПомесячноОР.Вид = "Опт"
           ТОГДА ВЫБОР
                   КОГДА ЕСТЬNULL(_3_ПродажиПомесячноОР.Продано, 0) = 0
                       ТОГДА 0
                   ИНАЧЕ _3_ПродажиПомесячноОР.Продано / _2_СредняяПродажаОпт.СредняяПродажа
               КОНЕЦ
       КОГДА _3_ПродажиПомесячноОР.Вид = "Розница"
           ТОГДА ВЫБОР
                   КОГДА ЕСТЬNULL(_3_ПродажиПомесячноОР.Продано, 0) = 0
                       ТОГДА 0
                   ИНАЧЕ _3_ПродажиПомесячноОР.Продано / _2_СредняяПродажаРозница.СредняяПродажа
               КОНЕЦ
       ИНАЧЕ 0
   КОНЕЦ КАК Сезонность1,
   ВЫБОР
       КОГДА _3_ПродажиПомесячноОР.Вид = "Опт"
           ТОГДА _2_СредняяПродажаОпт.СредняяПродажа
       КОГДА _3_ПродажиПомесячноОР.Вид = "Розница"
           ТОГДА _2_СредняяПродажаРозница.СредняяПродажа
   КОНЕЦ КАК СредняяПродажа
ИЗ
   _3_ПродажиПомесячноОР КАК _3_ПродажиПомесячноОР
       ЛЕВОЕ СОЕДИНЕНИЕ _2_СредняяПродажаОпт КАК _2_СредняяПродажаОпт
       ПО _3_ПродажиПомесячноОР.Номенклатура = _2_СредняяПродажаОпт.Номенклатура
           И (_3_ПродажиПомесячноОР.Вид = "Опт")
       ЛЕВОЕ СОЕДИНЕНИЕ _2_СредняяПродажаРозница КАК _2_СредняяПродажаРозница
       ПО _3_ПродажиПомесячноОР.Номенклатура = _2_СредняяПродажаРозница.Номенклатура
           И (_3_ПродажиПомесячноОР.Вид = "Розница")

Вопрос: Куда деётся таблица _1_ПродажиОПТ при программном запуске?
1 al_zzz
 
06.06.12
07:23
Ап. Куда копать, чтоб решить мою проблему?
2 DimVad
 
06.06.12
07:33
Ну, я бы занялся тупой отладкой. Задавал бы вопросы типа :

1. А если запустить программно но без вывода в тз, ошибка будет ?
2. А если вместо отчета на СКД выполнять запрос, ошибка будет ?
3. А если резать текст запроса, что будет происходить ? Например - убрать передачу параметров и т.д.
4. И т.д. и т.п.

Эти вопросы я бы задавал господину отладчику... А так - может тут и будет кто-нибудь такой умный, что сразу что-нибудь скажет, но это будет чудом. Дело в том, что не видя ситуация мне это напоминает Чеховское "Письмо ученому соседу" ;-)

Я желаю Вам удачи.
3 al_zzz
 
06.06.12
07:42
(2) Спасибо, DimVad! Тут конкретный ответ, я так понимаю, и не может быть дан. Скорее требуется рекомендация по устранению этой ошибки. Типа того, что Вы написали.
4 DimVad
 
06.06.12
07:50
(3) Я рад, если чем-то смог помочь.
2 + 2 = 3.9999999999999999999999999999999...