Имя: Пароль:
1C
1С v8
Регистр накопления имеет вид "Остатки", а в запросе доступны ВТ "ОстаткиИОбороты"
, ,
0 raytan
 
10.02.22
13:14
Конфигурации: УНФ, Фитнес. Регистр накопления "Расчеты с покупателями" имеет вид регистра "Остатки", а в запросе доступны ВТ "ОстаткиИОбороты", "Обороты". Это нормально ?
Вопрос возник с тем, что в какой то момент стала вылетать ошибка: "Не найдено поле "ТипРасчета"". Оно используется в параметрах виртуальной таблицы вида "ОстаткиИОбороты". Интересный момент, что в консоле запросов, все отрабатывает хорошо.
1 raytan
 
10.02.22
13:16
Собственно запрос с ошибкой:

ВЫБРАТЬ РАЗРЕШЕННЫЕ
    РасчетыСПокупателямиОстаткиИОбороты.Основание КАК ЛицевойСчет,
    СУММА(РасчетыСПокупателямиОстаткиИОбороты.СуммаОборот) КАК Остаток
ИЗ
    РегистрНакопления.РасчетыСПокупателями.ОстаткиИОбороты(
            ,
            &ДатаСреза,
            Авто,
            ,
            ВЫБОР
                    КОГДА &ВладелецСчета <> НЕОПРЕДЕЛЕНО
                        ТОГДА Контрагент = &ВладелецСчета
                    ИНАЧЕ ИСТИНА
                КОНЕЦ
                И Основание = &ЛицевойСчет
                И ВЫБОР
                    КОГДА &ВключатьСчетаСертификатов = ИСТИНА
                        ТОГДА ТипРасчета = ЗНАЧЕНИЕ(Перечисление.ТипыРасчетов.ЛицевойСчет)
                                ИЛИ ТипРасчета = ЗНАЧЕНИЕ(Перечисление.ТипыРасчетов.Сертификат)
                    ИНАЧЕ ТипРасчета = ЗНАЧЕНИЕ(Перечисление.ТипыРасчетов.ЛицевойСчет)
                КОНЕЦ
                И ВЫБОР
                    КОГДА &Организация <> НЕОПРЕДЕЛЕНО
                            И Основание.НеВестиУчетВРазрезеОрганизаций = ЛОЖЬ
                        ТОГДА Организация = &Организация
                    ИНАЧЕ ИСТИНА
                КОНЕЦ) КАК РасчетыСПокупателямиОстаткиИОбороты
ГДЕ
    ВЫБОР
            КОГДА &Регистратор = НЕОПРЕДЕЛЕНО
                ТОГДА ИСТИНА
            ИНАЧЕ РасчетыСПокупателямиОстаткиИОбороты.Регистратор <> &Регистратор
        КОНЕЦ

СГРУППИРОВАТЬ ПО
    РасчетыСПокупателямиОстаткиИОбороты.Основание
2 raytan
 
10.02.22
13:16
Добавил в выводимые поля измерения, ошибка пропала

ВЫБРАТЬ РАЗРЕШЕННЫЕ
    РасчетыСПокупателямиОстаткиИОбороты.Основание КАК ЛицевойСчет,
    СУММА(РасчетыСПокупателямиОстаткиИОбороты.СуммаОборот) КАК Остаток,
    РасчетыСПокупателямиОстаткиИОбороты.ТипРасчета КАК ТипРасчета,
    РасчетыСПокупателямиОстаткиИОбороты.Организация КАК Организация,
    РасчетыСПокупателямиОстаткиИОбороты.Контрагент КАК Контрагент
ИЗ
    РегистрНакопления.РасчетыСПокупателями.ОстаткиИОбороты(
            ,
            &ДатаСреза,
            Авто,
            ,
            ВЫБОР
                    КОГДА &ВладелецСчета <> НЕОПРЕДЕЛЕНО
                        ТОГДА Контрагент = &ВладелецСчета
                    ИНАЧЕ ИСТИНА
                КОНЕЦ
                И Основание = &ЛицевойСчет
                И ВЫБОР
                    КОГДА &ВключатьСчетаСертификатов = ИСТИНА
                        ТОГДА ТипРасчета = ЗНАЧЕНИЕ(Перечисление.ТипыРасчетов.ЛицевойСчет)
                                ИЛИ ТипРасчета = ЗНАЧЕНИЕ(Перечисление.ТипыРасчетов.Сертификат)
                    ИНАЧЕ ТипРасчета = ЗНАЧЕНИЕ(Перечисление.ТипыРасчетов.ЛицевойСчет)
                КОНЕЦ
                И ВЫБОР
                    КОГДА &Организация <> НЕОПРЕДЕЛЕНО
                            И Основание.НеВестиУчетВРазрезеОрганизаций = ЛОЖЬ
                        ТОГДА Организация = &Организация
                    ИНАЧЕ ИСТИНА
                КОНЕЦ) КАК РасчетыСПокупателямиОстаткиИОбороты
ГДЕ
    ВЫБОР
            КОГДА &Регистратор = НЕОПРЕДЕЛЕНО
                ТОГДА ИСТИНА
            ИНАЧЕ РасчетыСПокупателямиОстаткиИОбороты.Регистратор <> &Регистратор
        КОНЕЦ

СГРУППИРОВАТЬ ПО
    РасчетыСПокупателямиОстаткиИОбороты.Основание,
    РасчетыСПокупателямиОстаткиИОбороты.ТипРасчета,
    РасчетыСПокупателямиОстаткиИОбороты.Организация,
    РасчетыСПокупателямиОстаткиИОбороты.Контрагент
3 raytan
 
10.02.22
13:19
Как понимаю это стандартный код из БСП. Модуль менеджера РН "Расчеты с покупателями" функция "ПолучитьОстатокНаЛицевомСчету"
4 mistеr
 
10.02.22
13:19
(0) Это нормально.
5 SuperMario
 
10.02.22
13:19
(0) Это нормально
6 Dmitrii
 
гуру
10.02.22
13:19
(0) Да.
7 Dmitrii
 
гуру
10.02.22
13:21
(3) >> это стандартный код из БСП.

Нет. Это код из прикладной конфигурации, не имеющий к БСП никакого отношения. В БСП нет подсистем такого прикладного уровня, как учет взаиморасчетов.
8 raytan
 
10.02.22
13:22
(7) Может быть. Я отдельно БСП не ставил. Согласен не прав. Глянул УНФ, там нету такой функции
9 raytan
 
10.02.22
13:24
А что скажете почему могла возникнуть ошибка?
10 raytan
 
10.02.22
13:25
У меня сходу такое решение приходит в голову, чтобы не менять логику запроса:

ВЫБРАТЬ РАЗРЕШЕННЫЕ
    РасчетыСПокупателямиОстаткиИОбороты.Основание КАК ЛицевойСчет,
    СУММА(РасчетыСПокупателямиОстаткиИОбороты.СуммаОборот) КАК Остаток,
    РасчетыСПокупателямиОстаткиИОбороты.ТипРасчета КАК ТипРасчета,
    РасчетыСПокупателямиОстаткиИОбороты.Организация КАК Организация,
    РасчетыСПокупателямиОстаткиИОбороты.Контрагент КАК Контрагент
ПОМЕСТИТЬ ВТ_Остатки
ИЗ
    РегистрНакопления.РасчетыСПокупателями.ОстаткиИОбороты(
            ,
            &ДатаСреза,
            Авто,
            ,
            ВЫБОР
                    КОГДА &ВладелецСчета <> НЕОПРЕДЕЛЕНО
                        ТОГДА Контрагент = &ВладелецСчета
                    ИНАЧЕ ИСТИНА
                КОНЕЦ
                И Основание = &ЛицевойСчет
                И ВЫБОР
                    КОГДА &ВключатьСчетаСертификатов = ИСТИНА
                        ТОГДА ТипРасчета = ЗНАЧЕНИЕ(Перечисление.ТипыРасчетов.ЛицевойСчет)
                                ИЛИ ТипРасчета = ЗНАЧЕНИЕ(Перечисление.ТипыРасчетов.Сертификат)
                    ИНАЧЕ ТипРасчета = ЗНАЧЕНИЕ(Перечисление.ТипыРасчетов.ЛицевойСчет)
                КОНЕЦ
                И ВЫБОР
                    КОГДА &Организация <> НЕОПРЕДЕЛЕНО
                            И Основание.НеВестиУчетВРазрезеОрганизаций = ЛОЖЬ
                        ТОГДА Организация = &Организация
                    ИНАЧЕ ИСТИНА
                КОНЕЦ) КАК РасчетыСПокупателямиОстаткиИОбороты
ГДЕ
    ВЫБОР
            КОГДА &Регистратор = НЕОПРЕДЕЛЕНО
                ТОГДА ИСТИНА
            ИНАЧЕ РасчетыСПокупателямиОстаткиИОбороты.Регистратор <> &Регистратор
        КОНЕЦ

СГРУППИРОВАТЬ ПО
    РасчетыСПокупателямиОстаткиИОбороты.Основание,
    РасчетыСПокупателямиОстаткиИОбороты.ТипРасчета,
    РасчетыСПокупателямиОстаткиИОбороты.Организация,
    РасчетыСПокупателямиОстаткиИОбороты.Контрагент
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ_Остатки.ЛицевойСчет КАК ЛицевойСчет,
    СУММА(ВТ_Остатки.Остаток) КАК Остаток
ИЗ
    ВТ_Остатки КАК ВТ_Остатки

СГРУППИРОВАТЬ ПО
    ВТ_Остатки.ЛицевойСчет
11 raytan
 
10.02.22
13:26
(10) но честно говоря, так себе решение...
12 SuperMario
 
10.02.22
13:30
Это запрос отчета на СКД?
13 raytan
 
10.02.22
13:31
(12) Нет. функция "ПолучитьОстатокНаЛицевомСчету" из менеджера регистра.
14 Dmitrii
 
гуру
10.02.22
13:40
По идее запрос должен работать. Не смотря на тот бред, который написан в параметрах со всеми этими ВЫБОР КОГДА ТОГДА. Может какая-то ошибка платформы?
Вместо каши из ВЫБОР КОГДА ТОГДА должно было быть что-то типа этого.

Основание = &ЛицевойСчет
И (&ВладелецСчета = НЕОПРЕДЕЛЕНО ИЛИ &ВладелецСчета = Контрагент)
И (ТипРасчета = ЗНАЧЕНИЕ(Перечисление.ТипыРасчетов.ЛицевойСчет)
   ИЛИ &ВключатьСчетаСертификатов И ТипРасчета = ЗНАЧЕНИЕ(Перечисление.ТипыРасчетов.Сертификат))
И (Основание.НеВестиУчетВРазрезеОрганизаций ИЛИ &Организация = НЕОПРЕДЕЛЕНО ИЛИ &Организация = Организация)
15 hhhh
 
10.02.22
13:41
(10) бери РегистрНакопления.РасчетыСПокупателями.Обороты. Остатки же тебе не нужны.
16 raytan
 
10.02.22
13:43
(14) проблема, что если ставлю условие на измерение в параметрах, и не выбераю это поле, то выпадает ошибка, что поле не найдено...
Еще важные примечания. У меня файловая база. Вылетать начала сразу. У клиента склька. Там проявилась ошибка вчера впервый раз за все время.
17 Dmitrii
 
гуру
10.02.22
13:43
(15) Эту конфигурацию, 1С:Фитнес, наркоманы писали. Там ВСЁ надо переписывать. Буквально ВСЁ. Я не кричу и не преувеличиваю.
18 raytan
 
10.02.22
13:44
(17) правда жизни ))
19 raytan
 
10.02.22
13:47
Еще один запрос вылетел с похожей ошибкой.
20 vicof
 
10.02.22
13:51
Кэш почисть
21 raytan
 
10.02.22
13:51
Я отключил все регламентые задания у себя на базе. Возможно какие то проблемы с агрегатами ? (я в этой теме слабоват (( )
22 raytan
 
10.02.22
13:55
(20) не помогло
23 vicof
 
10.02.22
13:58
А конструктором запрос открывается? Латиницей поле или параметр написан?
24 raytan
 
10.02.22
13:59
(23) конечно. Даже больше в консоле запросов все отрабатывает правильно
25 Галахад
 
гуру
10.02.22
14:02
Хм. Что-то я кода не понял после "Тогда".

ВЫБОР
                    КОГДА &ВключатьСчетаСертификатов = ИСТИНА
                        ТОГДА ТипРасчета = ЗНАЧЕНИЕ(Перечисление.ТипыРасчетов.ЛицевойСчет)
                                ИЛИ ТипРасчета = ЗНАЧЕНИЕ(Перечисление.ТипыРасчетов.Сертификат)
26 raytan
 
10.02.22
14:05
(25) Логика запроса не так важна. Тут проблема в том, что выпадает ошибка, что "поле не найдено" в случае когда измерение не выбирается дальше. Думал, что только с этим регистром. А тут еще как минимум один (( Переделывать все запросы, ну такое...
27 vicof
 
10.02.22
14:06
(25) ыы
28 raytan
 
10.02.22
14:07
(26) плохо сформулировал. Условие в параметрах виртуальной таблицы на измерение выдает ошибку, что поле не найдено, если это измерение не выбирается дальше в запросе.
29 Ненавижу 1С
 
гуру
10.02.22
14:07
(25) другими словами:

&ВключатьСчетаСертификатов И (ТипРасчета = ЗНАЧЕНИЕ(Перечисление.ТипыРасчетов.ЛицевойСчет)
                                ИЛИ ТипРасчета = ЗНАЧЕНИЕ(Перечисление.ТипыРасчетов.Сертификат))
30 Галахад
 
гуру
10.02.22
14:11
(29) Да, точно. Спасибо.
31 raytan
 
10.02.22
14:13
(29) Немного не так:)
(ТипРасчета = ЗНАЧЕНИЕ(Перечисление.ТипыРасчетов.ЛицевойСчет ИЛИ
(&ВключатьСчетаСертификатов  И ТипРасчета = ЗНАЧЕНИЕ(Перечисление.ТипыРасчетов.Сертификат)))
32 raytan
 
10.02.22
14:16
Вот еще запрос:

ВЫБРАТЬ РАЗРЕШЕННЫЕ
    ВЫБОР
        КОГДА ЕСТЬNULL(ПродажиСебестоимостьОбороты.КоличествоОборот, 0) = 0
            ТОГДА 0
        ИНАЧЕ ПродажиСебестоимостьОбороты.СтоимостьБезСкидкиОборот / ПродажиСебестоимостьОбороты.КоличествоОборот
    КОНЕЦ КАК СтоимостьБезСкидки
ИЗ
    РегистрНакопления.ПродажиСебестоимость.Обороты(
            ,
            &Период,
            Авто,
            ДокументПродажи = &ДокументПродажи
                И ВЫБОР
                    КОГДА &Номенклатура = НЕОПРЕДЕЛЕНО
                        ТОГДА ИСТИНА
                    ИНАЧЕ Номенклатура = &Номенклатура
                КОНЕЦ
                И ВЫБОР
                    КОГДА &ЧленствоПакетУслуг = НЕОПРЕДЕЛЕНО
                        ТОГДА ИСТИНА
                    ИНАЧЕ ЧленствоПакетУслуг = &ЧленствоПакетУслуг
                КОНЕЦ) КАК ПродажиСебестоимостьОбороты
33 raytan
 
10.02.22
14:17
{Документ.Занятие.Форма.ФормаГрупповогоЗанятия.Форма(561)}: Ошибка при вызове метода контекста (Записать): Ошибка при выполнении обработчика - 'ПередЗаписью': {Документ.Занятие.МодульОбъекта(1642)}: Ошибка при вызове метода контекста (Выполнить): {(12, 4)}: Поле не найдено "ДокументПродажи"
<<?>>ДокументПродажи = &ДокументПродажи
34 raytan
 
10.02.22
14:17
(33) в регистре естественно есть поле "ДокументПродажи"
35 vicof
 
10.02.22
14:18
И какая роль у этого поля?
36 raytan
 
10.02.22
14:19
(35) хз. Я не анализировал нужно ли это поле для регистра. Не я писал эту конфу :)
37 Ненавижу 1С
 
гуру
10.02.22
14:21
(31) с учетом ИНАЧЕ да, можно рекомбинировать
38 vicof
 
10.02.22
14:25
(36) Измерение, ресурс, реквизит?
39 raytan
 
10.02.22
14:29
(36) измерение. Повторюсь. Сами запросы открываются в конструкторе. Мало того, если выполнить их в консоле запросов, то все отработает без ошибок
40 raytan
 
10.02.22
14:31
Запустил ТиИ, там заодно и пересчет итогов. Может поможет )
41 hhhh
 
10.02.22
15:27
(40) возможно нет прав у пользователя на документПродажи. С полными правами выполняете этот запрос?
42 raytan
 
10.02.22
15:32
(41) Да, с полными
43 raytan
 
10.02.22
15:34
(41) одинаковая проблема с двумя регистрами и со всеми измерениями у них.
44 vicof
 
10.02.22
15:39
Конфигуратор от одной базы, сеанс запущен в другой?
45 raytan
 
10.02.22
15:45
(44) немного не понял вопрос. Все происходит на одной базе. Ошибка в конфе во время выполнения кода и правильная работа консоли все в одной базе
46 MikhaNik
 
10.02.22
16:03
Попробуй сделать запрос в обработке, если в обработке ошибки нет, то дело скорее всего в КЭШе
47 raytan
 
10.02.22
16:14
(46) В обработке есть ошибка
48 Dmitrii
 
гуру
10.02.22
16:40
Сделай копию базы, поставь другую версию платформы и попробую там. Попробовать сменить режим совместимости на какой-либо другой или на "не использовать".
Если чистка кеша и полное ТИИ с пересчетом итогов не помогают, то я всё таки склонен думать, что это глюк платформы.
49 vicof
 
10.02.22
16:40
(47) не тот регистр, не та база, не то поле, не тот параметр, не тот тип параметра, не тот синоним, не тот язык. Отделяй, проверяй. Или предлагаешь гадать на шаре?
50 raytan
 
10.02.22
20:29
(48) ошибка как на реальной базе с скл, так и на файловой тестовой.
(49) Есть ощущение, что проблема не в типах параметра или синтаксисе, а в чем то другом более глобальном. Сами признаки я рассказал: обращение к измерению в параметрах виртуальной таблицы приводит к ошибке, в случае если это измерение в дальнейшем не выбирается в основном запросе. Я вот думаю, что это возможно проблема с итогами.
51 Dmitrii
 
гуру
10.02.22
20:50
(50) На платформе другой версии пробовал? (про файловую и клиент-серверную мы и так поняли - ты уже указывал).

>> Я вот думаю, что это возможно проблема с итогами.

Попробуй не просто пересчитать итоги, а предварительно физически грохнув таблицы итогов.
Вроде как в инструментах разработчика (ИР) есть такая возможность. Отключить использование итогов, отключить использование текущих итогов, физически удалить таблицы итогов из базы, потом снова включить все итоги и установить их период.
52 raytan
 
10.02.22
21:34
Только что закончил ТиИ без проверки ссылочной целостности, только итоги и реструктуризация. Не помогло ((
53 hhhh
 
10.02.22
21:41
(52) скорее всего не тот регистр. Проверь, нет ли там подмены имени регистра в тексте запроса. Типа СтрЗаменить одно на другое.
54 raytan
 
10.02.22
21:47
(53) Не )) Тем более одинаковая по типу ошибка в двух разных местах и с двумя разными регистрами накопления
55 raytan
 
10.02.22
22:50
Стоял режим совместимости 8.3.15 -- поэксперементировал и при 8.3.14 заработало. Теперь надо думать, будет ли работать весь функционал в таком режиме...
56 raytan
 
10.02.22
22:52
У меня платформа 8.3.16.1063. Наверное есть смысл качать посвежее...
57 raytan
 
10.02.22
23:06
Может кто сталкивался с информацией. У меня конфа фитнес 4.0. Какой необходим режим совместимости ? я что нашел, так вот статью: https://1c.ru/news/info.jsp?id=21385 Тут пишут 8.3.6 Но как то не верится
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший