Имя: Пароль:
1C
1С v8
Ограничение на работу фоновых задач на Постгри SQL
,
0 K1RSAN
 
10.05.23
12:52
В общем такая проблема, в серверной базе УТ обработка работает секунду и прекращается, в файловом режиме - отрабатывает полный срок. Выполнена в виде внешнего отчета-обработки с запуском в фоновом режиме. Даже вручную когда открываю форму обработки и запускаю запрос - он прерывается спустя секунду-две.
1 АНДР
 
10.05.23
12:59
Продолжайте наблюдения!
2 K1RSAN
 
10.05.23
13:00
(1) Гений, вы?)
3 K1RSAN
 
10.05.23
13:04
В Администрировании 1С ограничений на запуск фоновых задач нет. Вот и думаю, мне админов пинать, что-то намудрили в настройках постгри или ещё где может быть загвоздка?
4 АНДР
 
10.05.23
13:06
Через Консоль запросов этот запрос выполнял с такими же параметрами?
5 K1RSAN
 
10.05.23
13:09
(4) Да. Консоль показывает адекватные результаты, в обработке как будто идет сбрасывание по времени.
Потом копию базы раскрутил в файловом варианте - открыл ту же обработку - показывает адекватные результаты.
6 Hmster
 
10.05.23
13:13
А что показывает журнал регистрации, и что консоль фоновых?
7 PLUT
 
10.05.23
13:13
(5) в качестве бреда: добавь в свою обормотку-отчет в нужных местах ВызватьИсключение бла-бла-бла с отладочной информацЫей - ну там кол-во записей запроса/время начала/кончала... если с отладкой возиться лень.

по журналу можно потом ашипки глянуть
8 K1RSAN
 
10.05.23
13:19
(6)
Журнал регистрации
Фоновое задание. Запуск
Дополнительные отчеты и обработки: Выполнение серверного метода обработки

Дополнительные отчеты и обработки
Подключение, БезопасныйРежим = "Нет".

Фоновое задание. Успешное завершение

Журнал фоновых
Дополнительные отчеты и обработки: Выполнение серверного метода обработки
Задание выполнено
9 K1RSAN
 
10.05.23
13:20
(7)
В результате запроса разное количество записей на серверной базе и в клиентской при одинаковых параметрах запроса.
10 Прапорщик
 
10.05.23
13:22
(0) Что означает "запрос - он прерывается"?

Как это выглядит?
Возвращается пустой результат запроса?
Возвращается результат, но он неверный?
Вызывается исключение?

Если проблема с запросом, где его текст?

Вангую. Проблемы с параметрами запроса.
Если отладка выключена, воспользуйтесь методом (7) и добавьте вывод разной отладочной информации в ЖР.
11 K1RSAN
 
10.05.23
13:24
(10) В файловой и серверной базе запрос возвращает разное количество строк при одинаковых параметрах.
При этом в консоли запросов результаты запросов идентичны.
12 АНДР
 
10.05.23
13:26
(9), (11) При таких вводных надо исходные данные на соответствие параметрам проверять...
13 Hmster
 
10.05.23
13:32
(11) параметры запроса сохрани в ЖР при выполнении, потом проверяй
14 K1RSAN
 
10.05.23
13:47
(12) Запрос берет текущие остатки по складам на текущую дату, цены (2 вида цен забиты железно), доп. реквизит склада (прибит железно) для соответствия складов с сайтом.
по факту все параметры, кроме даты, забиты внутри и не меняются. В отладчике параметры показывает верно.
15 Garykom
 
гуру
10.05.23
13:51
Покажи код

И возможно твое фоновое чем то другим прибивается
16 Garykom
 
гуру
10.05.23
13:53
Проверь делая короткие запросы внутри фонового в цикле

Проверь "Проблемные процессы завершать через:" по умолчанию там 60 секунд
Возможно почему то срабатывает при долгом запросе к СУБД
17 Garykom
 
гуру
10.05.23
13:55
На крайняк возьми 8.3.23 и подними отдельный с сервер 1С с postgresql и mssql на другом компе
Проверь свою базу и обработку
18 Garykom
 
гуру
10.05.23
13:55
(17)+ 8.3.23 потому что комьюнити лицензии появились
19 K1RSAN
 
10.05.23
13:57
Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("КонецПериода", КонецДня(ТекущаяДата()));
    Запрос.УстановитьПараметр("СвойствоНомер", "НомерДляСайта");
    Запрос.Текст = "ВЫБРАТЬ
                   |    ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
                   |    ТоварыНаСкладахОстатки.Склад КАК Склад,
                   |    ТоварыНаСкладахОстатки.ВНаличииОстаток КАК ВНаличииОстаток,
                   |    ТоварыНаСкладахОстатки.Номенклатура.ЕдиницаИзмерения КАК НоменклатураЕдиницаИзмерения,
                   |    ТоварыНаСкладахОстатки.Номенклатура.Родитель КАК НоменклатураРодитель,
                   |    ТоварыНаСкладахОстатки.Номенклатура.Артикул КАК НоменклатураАртикул,
                   |    СкладыДополнительныеРеквизиты.Значение КАК НомерДляСайта
                   |ПОМЕСТИТЬ ВТ_Остатки
                   |ИЗ
                   |    РегистрНакопления.ТоварыНаСкладах.Остатки(, ) КАК ТоварыНаСкладахОстатки
                   |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Склады.ДополнительныеРеквизиты КАК СкладыДополнительныеРеквизиты
                   |        ПО ТоварыНаСкладахОстатки.Склад = СкладыДополнительныеРеквизиты.Ссылка
                   |            И (СкладыДополнительныеРеквизиты.Свойство.Имя = &СвойствоНомер)
                   |;
                   |
                   |////////////////////////////////////////////////////////////////////////////////
                   |ВЫБРАТЬ
                   |    ЦеныНоменклатурыСрезПоследних.Цена КАК Цена,
                   |    ЦеныНоменклатурыСрезПоследних.ВидЦены КАК ВидЦены,
                   |    ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура
                   |ПОМЕСТИТЬ ВТ_Цены
                   |ИЗ
                   |    РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
                   |ГДЕ
                   |    ЦеныНоменклатурыСрезПоследних.ВидЦены В(&ВидЦены)
                   |;
                   |
                   |////////////////////////////////////////////////////////////////////////////////
                   |ВЫБРАТЬ
                   |    ВТ_Остатки.Номенклатура КАК Номенклатура,
                   |    ВТ_Остатки.Склад КАК Склад,
                   |    ВТ_Остатки.ВНаличииОстаток КАК ВНаличииОстаток,
                   |    ВТ_Остатки.НоменклатураЕдиницаИзмерения КАК НоменклатураЕдиницаИзмерения,
                   |    ВТ_Остатки.НоменклатураРодитель КАК НоменклатураРодитель,
                   |    ВТ_Остатки.НоменклатураАртикул КАК НоменклатураАртикул,
                   |    ВТ_Цены.Цена КАК Цена,
                   |    ВТ_Цены.ВидЦены КАК ВидЦены,
                   |    ЕСТЬNULL(ВТ_Остатки.НомерДляСайта, 0) КАК НомерДляСайта
                   |ИЗ
                   |    ВТ_Цены КАК ВТ_Цены
                   |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_Остатки КАК ВТ_Остатки
                   |        ПО (ВТ_Остатки.Номенклатура = ВТ_Цены.Номенклатура)
                   |ГДЕ
                   |    ВТ_Цены.Цена > 0
                   |    И ВТ_Остатки.НомерДляСайта > 0
                   |
                   |УПОРЯДОЧИТЬ ПО
                   |    Склад";
    
    
    ОтборПоВидуЦен = Новый Массив;
    ОтборПоВидуЦен.Добавить(Справочники.ВидыЦен.НайтиПоКоду("0000000001"));
    ОтборПоВидуЦен.Добавить(Справочники.ВидыЦен.НайтиПоКоду("0000000002"));
    
    Запрос.УстановитьПараметр("ВидЦены", ОтборПоВидуЦен);

    Результат = Запрос.Выполнить();
    Выборка = Результат.Выбрать();
    ТабЗнач = ЭтотОбъект.Данные;
    ТабЗнач.Очистить();              
    Пока Выборка.Следующий() Цикл
        Стр = ТабЗнач.Добавить();
        Стр.ДляВыгрузки = Истина;
        Стр.Номенклатура = Выборка.Номенклатура;
        Стр.ЕдиницаИзмерения = Выборка.НоменклатураЕдиницаИзмерения;
        Стр.Склад = Выборка.Склад;
        Стр.Родитель = Выборка.НоменклатураРодитель;
        Стр.ВидыЦен = Выборка.ВидЦены;
        Стр.Цена = Выборка.Цена;
        Стр.НомерСкладаДляСайта = Выборка.НомерДляСайта;
        Если Выборка.НоменклатураАртикул = "" Тогда
            Стр.НоменклатураАртикул = "*";
        Иначе
            Стр.НоменклатураАртикул = Выборка.НоменклатураАртикул;
        КонецЕсли;
        
        Стр.КоличествоОстаток = Выборка.ВНаличииОстаток;
    КонецЦикла;

Это всё записывается в ТЧ
Потом в цикле обходятся результаты запроса и записываются в XML - этот код обрабатывается корректно, файлы сохраняются и потом выгружаются на ftp. Но только количество элементов в разы меньше, чем должно быть. Получается как будто при выполнении запроса сбрасывается и в выборку падает только 99-100 строк.
20 K1RSAN
 
10.05.23
13:59
(16) у меня нет доступа к настройкам постгри, сам я его не настраивал, только MS SQL слегка ковырял, так что не знаю, какие там настройки вообще.
21 Garykom
 
гуру
10.05.23
14:03
(20) дело не в настройках постгре а скорее сервера 1С
22 sandal_r
 
10.05.23
14:04
1. у вас в запросе не используется параметр "КонецПериода"
2. проверьте права пользователя, под которым выполняется фоновое задание. возможно у него не хватает прав
23 sandal_r
 
10.05.23
14:06
3. используйте параметры виртуальных таблиц
4. возможно в фоновом задании таблицы "Объект.Данные". Выгружайте в новую переменную
5. не используйте выборку, сразу выгружайте готовую таблицу.
24 Garykom
 
гуру
10.05.23
14:08
(23) только хотел про ТабЗнач = ЭтотОбъект.Данные; ху из написать
25 Garykom
 
гуру
10.05.23
14:08
|    И ВТ_Остатки.НомерДляСайта > 0
очень интересное условие, особенно если тип строка
26 K1RSAN
 
10.05.23
14:09
(22)
1. Видимо случайно оборвалось
2. Выполняется с админскими правами.

Если бы прав не хватало - вообще не формировался бы запрос, а не выгружалось бы первые 100 строк.

3. там должен быть параметр таблицы даты и всё. Проверю этот момент
4. Данные - ТЧ обработки. Думал так будет надежнее
5. Ок, попробую.
27 K1RSAN
 
10.05.23
14:10
(25) тип число
28 АНДР
 
10.05.23
14:15
RLS используется?
29 K1RSAN
 
10.05.23
14:15
(28) Да
30 АНДР
 
10.05.23
14:17
При запуске в режиме отладки какой результат?
31 K1RSAN
 
10.05.23
14:17
(30) Всё проходит, но количество записей в разы меньше, чем при запуске отладки в файловом варианте
32 АНДР
 
10.05.23
14:22
(31) Мы точно говорим про одно и то же?
1С:Предприятие параметр запуска "РежимОтладки".
33 Галахад
 
гуру
10.05.23
14:29
У пользователя есть права на склады?
34 PLUT
 
10.05.23
14:34
в настройках регл.заданий (фоновых) можно указать имя пользователя (имеет смысл только для серверной информацЫонной базы), под которым будет запускаться фоновое
35 K1RSAN
 
10.05.23
14:34
(33) да есть. как минимум потому, что часть строк же выгружается. Без прав был бы кукиш.
36 sandal_r
 
10.05.23
17:48
ну шо, таки права?
37 Hmster
 
10.05.23
22:39
ну или права, поэтому только кусок данных или параметры не так заполняются в фоновом
38 dmt
 
11.05.23
08:19
в запросе нет РАЗРЕШЕННЫЕ, значит при проблеме с правами должно выпадать исключение


(0) включи ТЖ, посмотри на текст запроса