Имя: Пароль:
1C
1С v8
Как быстро и ловко пересчитать итоги через Rest / OData?
0 bolero
 
09.02.19
22:32
Имею следующую функцию:


-- Удаляем без разбора все посчитанные итоги
CREATE OR REPLACE FUNCTION pg_temp.truncate_totals() RETURNS VOID AS
$$
DECLARE
  statements CURSOR FOR SELECT
                          table_name
                        FROM information_schema.tables
                        WHERE
                          table_schema = 'public' AND
                          table_name LIKE '_accumrgt%';
BEGIN
  FOR stmt IN statements
    LOOP
      EXECUTE 'TRUNCATE TABLE ' || quote_ident(stmt.table_name) || ' CASCADE;';
    END LOOP;
END;
$$
  LANGUAGE plpgsql;

SELECT pg_temp.truncate_totals();


Но после ее исполнения приходится руками лезть в все функции - стандартные - Управление итогами.

Должна же быть кнопка, чтобы сделать то же самое через REST API?

В документации ничего похожего на управление итогами не нашел.

Какой у вас есть положительный опыт в этом плане?
1 Cyberhawk
 
10.02.19
08:40
"приходится руками лезть в все функции - стандартные - Управление итогами" // Ну так в этой обработке вызываются вполне платформенные методы
2 bolero
 
10.02.19
16:40
(1) вопрос в том, как этот платформенный метод дернуть через REST / OData.

Исправляет регистры у меня робот, удаляет итоги тоже робот, а для запуска клиента или конфигуратора у него ни графического окружения, ни тонкого клиента или конфигуратора нет.

Может, там для запуска обработки чего-то в документации недописали?

Пока планирую к какому-нибудь типовому, но неиспользуемому объекту присобачить через расширение довесок к процедуре ПриЗаписи, но это же изврат.
3 sieben
 
10.02.19
17:25
(2) Так в чем вопрос-то? Как написать на 1С вполне себе такой REST http-сервис и внутри него вызвать методы менеджеров регистров?
4 bolero
 
10.02.19
17:30
(3) не любитель велосипеды строить, предпочитаю на готовых кататься

В идеале хотелось бы метод, который потом на нетронутой типовой конфе отработает.
5 sieben
 
10.02.19
17:37
(4) Есть метод лучше. Просто делегируешь задачу программисту и ждешь результата. Зачем тебе вообще эти ODATA/REST ???
6 sieben
 
10.02.19
17:38
... хотя постойте
7 Cyberhawk
 
10.02.19
18:59
"Может, там для запуска обработки чего-то в документации недописали?" // Не тупи. Я про какие-то обработки ничего не писал.
8 palsergeich
 
10.02.19
21:05
(0) Итоги такая вещь которая из коробки не предпалогает того что туда залезет разработчик.
Максимум можно на какой то интервал выключить их и включить. Ну или руками пересчитать РегистрыНакопления.ИмяРегистра.ПересчитатьИтоги()
Odata не предназначен для этого.
В HTTP - РегистрыНакопления.ИмяРегистра.ПересчитатьИтоги() пишем руками.
9 Nyoko
 
10.02.19
21:47
(8) +1
10 Cyberhawk
 
11.02.19
12:52
Не забываем, что при сбоях в этих итогах гарантированно помогает, увы, _только_ флажок в ТиИ в конфигураторе
11 bolero
 
12.02.19
13:59
(1) (3) (8) Спасибо, сделал HTTP-сервис. Запускается из-под того же пользователя и по тому же адресу, что ворочает данные через odata.
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.