Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 16:39

Не записывается в регистр сведений

Автор Alexg45, 03 дек 2015, 11:26

0 Пользователей и 1 гость просматривают эту тему.

Alexg45

Всем добрый день!
У меня есть внешняя обработка. Если зайти в предприятие и вызвать данную обработку там, то в регистр сведений записываются нужные мне данные.
Если же данную обработку добавить во внешние обработки, и добавить регламентное задание, то есть каждые 20 минут будет вызываться метод общего модуля, который будет создавать объект данной обработки на сервере, то не работают строки НаборЗаписей.Записать() и НаборЗаписей.Прочитать(). Регистр сведений периодический, независимый.
То есть всё работает, кроме записи в регистр.

Alexg45

Код самый простой:

НаборЗаписей = РегистрыСведений.Тест.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Период.Установить(ДатаПериода);
НаборЗаписей.Записать(истина);


Здесь я стираю данные за текущую дату, чтобы потом записать новые данные. Но уже здесь не работает.

vitasw

Читать кто будет?

НаборЗаписей = РегистрыСведений.Тест.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Период.Установить(ДатаПериода);
НаборЗаписей.Прочитать();
НаборЗаписей.Очистить();
НаборЗаписей.Записать(истина); 

Alexg45

Вы думаете, что это как-то влияет на разницу работы? Просто по нажатию на кнопку пользователем эта же обработка всё делает. А когда она в фоновом задании, не хочет работать. Тем более в фоновом задании попадаю в исключение на строке НаборЗаписей.Прочитать(). Я читаю потом, перед тем как записывать непустые данные.
Добавлено: 03 дек 2015, 11:49


Не вышло. Так же падает на Прочитать().

vitasw

Цитата: Alexg45 от 03 дек 2015, 11:43Не вышло. Так же падает на Прочитать().

очень информативно

Alexg45

В логах пишет:
[03.12.2015 12:55:44] Ошибка выполнения регламентного задания получения остатков!
[03.12.2015 12:55:44] Описание='Ошибка при вызове метода контекста (Записать)'
[03.12.2015 12:55:44] ИмяМодуля='ВнешняяОбработка.Остатки.МодульОбъекта'
[03.12.2015 12:55:44] НомерСтроки=362
[03.12.2015 12:55:44] ИсходнаяСтрока='      НаборЗаписей.Записать(истина);    '

vitasw

Приведите полный текст кода записи
Цитата: Alexg45 от 03 дек 2015, 13:02НаборЗаписей.Записать(истина)


Alexg45

Первый кусок (просто затираю данные за текущий день):
НаборЗаписей = РегистрыСведений.Тест.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Период.Установить(ДатаПериода);
ЗаписатьВЛогСервер(ИмяЛогаРЗ,"Не работает запись в регистр! ...");
Попытка
НаборЗаписей.Записать(истина);
Исключение
Инфо = ИнформацияОбОшибке();
ЗаписатьВЛогСервер(ИмяЛогаРЗ,"Ошибка выполнения регламентного задания получения остатков NC!");
ЗаписатьВЛогСервер(ИмяЛогаРЗ,"Описание='" + Инфо.Описание + "'");
ЗаписатьВЛогСервер(ИмяЛогаРЗ,"ИмяМодуля='" + Инфо.ИмяМодуля + "'");
ЗаписатьВЛогСервер(ИмяЛогаРЗ,"НомерСтроки=" + Инфо.НомерСтроки);
ЗаписатьВЛогСервер(ИмяЛогаРЗ,"ИсходнаяСтрока='" + Инфо.ИсходнаяСтрока + "'");
КонецПопытки;


А вот второй кусок, он в цикле работает:

НаборЗаписей = РегистрыСведений.Тест.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Период.Установить(ДатаПериода);
НаборЗаписей.Отбор.Номенклатура.Установить(Номенклатура);
НаборЗаписей.Отбор.Серия.Установить(Серия);
НаборЗаписей.Отбор.Место.Установить(СтрОбр.Место);
НаборЗаписей.Отбор.Статус.Установить(СтрОбр.Статус);
НаборЗаписей.Отбор.Категория.Установить(СтрОбр.Категория);
НаборЗаписей.Отбор.Стр.Установить(Стр);
НаборЗаписей.Прочитать();
ЗаписатьВЛогСервер(ИмяЛогаРЗ,"Лог обработки: Прочитать() ...");
НоваяЗапись = НаборЗаписей.Добавить();
НоваяЗапись.Период = ДатаПериода;
НоваяЗапись.Номенклатура = Номенклатура;
НоваяЗапись.Серия = Серия;
НоваяЗапись.Количество = Число(СтрОбр.Колво);
НоваяЗапись.Место = Стробр.Место;
НоваяЗапись.Статус = Стробр.Статус;
НоваяЗапись.Категория = Стробр.Категория;
НоваяЗапись.Стр = Стр;
                        НаборЗаписей.Записать(истина);


У меня этот же код работает на клиенте нормально, всё что нужно стирает и записывает. Проблема скорее всего в том, что как регламентное задание этот код работает уже на сервере, и там не работают строки Прочитать() и Записать(). Может быть проблема в правах или ещё в чём-то?
Добавлено: 03 дек 2015, 13:40


Функция ЗаписатьВЛогСервер() просто пишет в текстовый файл на сервере. Это ставил для проверки.

vitasw

Ошибка тут?
Цитата: Alexg45 от 03 дек 2015, 13:37ЗаписатьВЛогСервер(ИмяЛогаРЗ,"Не работает запись в регистр! ..."); Попытка НаборЗаписей.Записать(истина); Исключение Инфо = ИнформацияОбОшибке();


Alexg45

Сама ошибка печатается в исключении, т.к. попытка записи не удаётся. А на одинокую строку перед Попытка можно не смотреть, это я выводил до этого, не стёр просто.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск