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

Запись логов в текстовый файл

Автор botyrba, 19 дек 2019, 11:44

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

botyrba

Добрый день! Сможет кто-нибудь помочь ...
В 1с ДО Документооборот 8 КОРП, редакция 2.1 (2.1.3.1)есть регламентное задание на синхронизацию данных с 1с ЗУП. ЗУП выгружает данные по изменениям в кадровых данных в текстовый файл. ДО этот файл потом считывает и вносит изменения. Но работать это задание перестало. пишет ошибку в строке обработки файла, на каком-то сотруднике он спотыкается, не может определить объект
{ОбщийМодуль.КастомизацииАквафон.Модуль(512)}: Поле объекта не обнаружено (Должность)
         Если (СОКРЛП(СведенияПользователя.Должность) <> СОКРЛП(Стр.Должность)) ИЛИ
Хочу создать что-то вроде журнала логов для каждой процедуры обработки текстового файла, чтобы понять, какую строку он не понимает. Как можно записать в текстовый файл пошаговое действие обработки? Или кто-то может что-то еще предложить?

ef0din

Цитата: botyrba от 19 дек 2019, 11:44
Добрый день! Сможет кто-нибудь помочь ...
В 1с ДО Документооборот 8 КОРП, редакция 2.1 (2.1.3.1)есть регламентное задание на синхронизацию данных с 1с ЗУП. ЗУП выгружает данные по изменениям в кадровых данных в текстовый файл. ДО этот файл потом считывает и вносит изменения. Но работать это задание перестало. пишет ошибку в строке обработки файла, на каком-то сотруднике он спотыкается, не может определить объект
{ОбщийМодуль.КастомизацииАквафон.Модуль(512)}: Поле объекта не обнаружено (Должность)
         Если (СОКРЛП(СведенияПользователя.Должность) <> СОКРЛП(Стр.Должность)) ИЛИ
Хочу создать что-то вроде журнала логов для каждой процедуры обработки текстового файла, чтобы понять, какую строку он не понимает. Как можно записать в текстовый файл пошаговое действие обработки? Или кто-то может что-то еще предложить?

Может через "Сообщить" наименование/код сотрудника проще? И последний(либо следующий, в зависимости от того где "Сообщить" будет) и будет проблемным.

botyrba

Может через "Сообщить" наименование/код сотрудника проще? И последний(либо следующий, в зависимости от того где "Сообщить" будет) и будет проблемным.
[/quote]
Принцип поняла, а как это будет выглядеть? Я не программирую сама, так что если Вам не сложно, можете пример привести кода?
Вот моя ошибка в этом блоке:
Иначе   // проверяем, не изменились ли данные пользователя
         ТекущийПользователь = Справочники.Пользователи.НайтиПоНаименованию(СтрокаПользователя.Наименование);
         СведенияПользователя = РегистрыСведений.СведенияОПользователяхДокументооборот.ПолучитьСведенияОПользователе(ТекущийПользователь);
         // подразделение, должность
         Если (СОКРЛП(СведенияПользователя.Должность) <> СОКРЛП(Стр.Должность)) ИЛИ
               (СОКРЛП(СведенияПользователя.Подразделение) <> СОКРЛП(Стр.Подразделение))
               Тогда
                   ЗаписьРегистра = РегистрыСведений.СведенияОПользователяхДокументооборот.СоздатьМенеджерЗаписи();
                  ЗаписьРегистра.Пользователь = ТекущийПользователь.Ссылка;
                  ЗаписьРегистра.Прочитать();
                  ЗаписьРегистра.Подразделение = Справочники.СтруктураПредприятия.НайтиПоНаименованию(Стр.Подразделение);
                  ЗаписьРегистра.Должность = Справочники.Должности.НайтиПоНаименованию(Стр.Должность);
                  ЗаписьРегистра.Записать();
                  ОтправитьПисьмоПользователю("Администратор","Обновлен пользователь " + ТекущийПользователь.Наименование, СтрокаСоединенияИнформационнойБазы() + " Обновлен пользователь");
                  Сообщить("Обновлен пользователь " + ТекущийПользователь.Наименование);
         КонецЕсли;   
         
         ТаблицаКонтактнойИнформации = ТекущийПользователь.КонтактнаяИнформация.Выгрузить();
         ПользовательОбъект = ТекущийПользователь.ПолучитьОбъект();

ef0din

Иначе   // проверяем, не изменились ли данные пользователя
         ТекущийПользователь = Справочники.Пользователи.НайтиПоНаименованию(СтрокаПользователя.Наименование);
         СведенияПользователя = РегистрыСведений.СведенияОПользователяхДокументооборот.ПолучитьСведенияОПользователе(ТекущийПользователь);
         // подразделение, должность
         Сообщить(СтрокаПользователя.Наименование);
         Если (СОКРЛП(СведенияПользователя.Должность) <> СОКРЛП(Стр.Должность)) ИЛИ
               (СОКРЛП(СведенияПользователя.Подразделение) <> СОКРЛП(Стр.Подразделение))
               Тогда
                   ЗаписьРегистра = РегистрыСведений.СведенияОПользователяхДокументооборот.СоздатьМенеджерЗаписи();
                  ЗаписьРегистра.Пользователь = ТекущийПользователь.Ссылка;
                  ЗаписьРегистра.Прочитать();
                  ЗаписьРегистра.Подразделение = Справочники.СтруктураПредприятия.НайтиПоНаименованию(Стр.Подразделение);
                  ЗаписьРегистра.Должность = Справочники.Должности.НайтиПоНаименованию(Стр.Должность);
                  ЗаписьРегистра.Записать();
                  ОтправитьПисьмоПользователю("Администратор","Обновлен пользователь " + ТекущийПользователь.Наименование, СтрокаСоединенияИнформационнойБазы() + " Обновлен пользователь");
                  Сообщить("Обновлен пользователь " + ТекущийПользователь.Наименование);
         КонецЕсли;   
         
         ТаблицаКонтактнойИнформации = ТекущийПользователь.КонтактнаяИнформация.Выгрузить();
         ПользовательОбъект = ТекущийПользователь.ПолучитьОбъект();

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

Рейтинг@Mail.ru

Поиск