Ошибка при выполнении обработчика приполученииданныхотподчиненного

   Кандидат

04.08.06 — 14:07

Нужна помощь, либо сильно туплю, либо надо ставить свежий релиз.Не работает конструкция вида:

Процедура ПриПолученииДанныхОтПодчиненного(ЭлементДанных, ПолучениеЭлемента, ОтправкаНазад)

  ТипДанных = ТипЗнч(ЭлементДанных);

  Если Строка(ТипДанных)=»Удаление объекта» Тогда

      НЭ = Новый Массив(1);

      НЭ.Добавить(ЭлементДанных.Ссылка);

      ТЗ = НайтиПоСсылкам(НЭ);

      Если ТЗ.Количество()<>0 Тогда

             Сообщить(ЭлементДанных+» не может быть удален.Он восстановится во всех базах.»);

           ПланыОбмена.ЗарегистрироватьИзменения(ПланыОбмена.Полный.НайтиПоКоду(«НЧ»),ЭлементДанных.Ссылка);

           ПолучениеЭлемента.Игнорировать();

           //ОтправкаНазад = Истина;

      КонецЕсли;

  КонецЕсли;      

КонецПроцедуры

Где ступил?

   Кандидат

1 — 04.08.06 — 14:10

Конкретно не работает НайтиПоСсылкам(НЭ)

Говорит:

Ошибка при выполнении обработчика — ‘{ПланОбмена.Полный(123)}: Ошибка при вызове метода контекста (НайтиПоСсылкам): Недопустимое значение параметра (параметр номер «1»)’

   Кандидат

2 — 04.08.06 — 14:14

Херрес, зацени?!?!?

   Кандидат

3 — 04.08.06 — 14:15

Обновляю релиз ядра

   clappa

4 — 04.08.06 — 14:16

(0) НЭ = Новый Массив();

P.S. А зачем в базу знаний-то?

   Кандидат

5 — 04.08.06 — 14:18

Простите, тута другой человек сидел за компом, вот и понажимал кнопарей. Ни в какую базу знаний конечно же этого не надо.

   Херрес

6 — 04.08.06 — 14:18

НЭ = Новый Массив(1);

мне не понравилось, что создаётся не пустой массив, т.е. там уже есть 1 элемент а потом ты добавляешь ещё один.

Попробуй НЭ = Новый Массив();

   Кандидат

7 — 04.08.06 — 14:18

Ща, спасибо Херрес!

   Кандидат

8 — 04.08.06 — 16:22

Последний шаг:

ПланыОбмена.ЗарегистрироватьИзменения(ПланыОбмена.Полный.НайтиПоКоду(«НЧ»),ЭлементДанных.Ссылка);

Ошибка при выполнении обработчика — ‘{ПланОбмена.Полный(125)}: Ошибка при вызове метода контекста (ЗарегистрироватьИзменения): Недопустимое значение параметра (параметр номер «1»)’

Конец раб. дня.

   Кандидат

9 — 04.08.06 — 16:25

Херрес, обрати внимание!

   avmlvm

10 — 04.08.06 — 16:26

(0) (шопотом) а ты волшебное слово «экспорт» не пробовал поставить??? :-)))

   Кандидат

11 — 04.08.06 — 16:31

Куда еще?

   Кандидат

12 — 04.08.06 — 16:34

В примере от 1С ничего нет.

   Кандидат

13 — 04.08.06 — 16:38

Херрес?

   Кандидат

14 — 04.08.06 — 16:38

Или вообще есть кто?

   Кандидат

15 — 04.08.06 — 16:39

Живой

   avmlvm

16 — 04.08.06 — 16:39

(12) Где смотрел «пример»?

Должно быть:

Процедура ПриПолученииДанныхОтПодчиненного(ЭлементДанных, ПолучениеЭлемента, ОтправкаНазад) экспорт

   Кандидат

17 — 04.08.06 — 16:44

Это не поможет, это здесь не нужно. Я даже проверил. Процедура работает.

Вот эта не работает:

ПланыОбмена.ЗарегистрироватьИзменения(ПланыОбмена.Полный.НайтиПоКоду(«НЧ»),ЭлементДанных.Ссылка);

   Кандидат

18 — 04.08.06 — 16:47

Есть еще варианты?

   Кандидат

19 — 04.08.06 — 16:50

Наверное, все готовятся стартовать домой…

   avmlvm

20 — 04.08.06 — 16:51

Значит тот элемент который ты ищешь не ВХОДИТ в состав данного плана обмена

ЗЫ… Но «экспорт» всё же нужен…

   Кандидат

21 — 04.08.06 — 16:53

Входит. Потому как если без энтой процедуры, то то все ходит.

   Кандидат

22 — 04.08.06 — 17:03

УРА!!! Палучилося!!!

  

Кандидат

23 — 04.08.06 — 17:03

Элементы более не удаляются, а восстанавливаются во всех базах, из которых были удалены!!!

  

Кандидат

04.08.06 — 14:07

Нужна помощь, либо сильно туплю, либо надо ставить свежий релиз.Не работает конструкция вида:

Процедура ПриПолученииДанныхОтПодчиненного(ЭлементДанных, ПолучениеЭлемента, ОтправкаНазад)

  ТипДанных = ТипЗнч(ЭлементДанных);

  Если Строка(ТипДанных)=»Удаление объекта» Тогда

      НЭ = Новый Массив(1);

      НЭ.Добавить(ЭлементДанных.Ссылка);

      ТЗ = НайтиПоСсылкам(НЭ);

      Если ТЗ.Количество()<>0 Тогда

             Сообщить(ЭлементДанных+» не может быть удален.Он восстановится во всех базах.»);

           ПланыОбмена.ЗарегистрироватьИзменения(ПланыОбмена.Полный.НайтиПоКоду(«НЧ»),ЭлементДанных.Ссылка);

           ПолучениеЭлемента.Игнорировать();

           //ОтправкаНазад = Истина;

      КонецЕсли;

  КонецЕсли;      

КонецПроцедуры

Где ступил?

  

Кандидат

1 — 04.08.06 — 14:10

Конкретно не работает НайтиПоСсылкам(НЭ)

Говорит:

Ошибка при выполнении обработчика — ‘{ПланОбмена.Полный(123)}: Ошибка при вызове метода контекста (НайтиПоСсылкам): Недопустимое значение параметра (параметр номер «1»)’

  

Кандидат

2 — 04.08.06 — 14:14

Херрес, зацени?!?!?

  

Кандидат

3 — 04.08.06 — 14:15

Обновляю релиз ядра

  

clappa

4 — 04.08.06 — 14:16

(0) НЭ = Новый Массив();

P.S. А зачем в базу знаний-то?

  

Кандидат

5 — 04.08.06 — 14:18

Простите, тута другой человек сидел за компом, вот и понажимал кнопарей. Ни в какую базу знаний конечно же этого не надо.

  

Херрес

6 — 04.08.06 — 14:18

НЭ = Новый Массив(1);

мне не понравилось, что создаётся не пустой массив, т.е. там уже есть 1 элемент а потом ты добавляешь ещё один.

Попробуй НЭ = Новый Массив();

  

Кандидат

7 — 04.08.06 — 14:18

Ща, спасибо Херрес!

  

Кандидат

8 — 04.08.06 — 16:22

Последний шаг:

ПланыОбмена.ЗарегистрироватьИзменения(ПланыОбмена.Полный.НайтиПоКоду(«НЧ»),ЭлементДанных.Ссылка);

Ошибка при выполнении обработчика — ‘{ПланОбмена.Полный(125)}: Ошибка при вызове метода контекста (ЗарегистрироватьИзменения): Недопустимое значение параметра (параметр номер «1»)’

Конец раб. дня.

  

Кандидат

9 — 04.08.06 — 16:25

Херрес, обрати внимание!

  

avmlvm

10 — 04.08.06 — 16:26

(0) (шопотом) а ты волшебное слово «экспорт» не пробовал поставить??? :-)))

  

Кандидат

11 — 04.08.06 — 16:31

Куда еще?

  

Кандидат

12 — 04.08.06 — 16:34

В примере от 1С ничего нет.

  

Кандидат

13 — 04.08.06 — 16:38

Херрес?

  

Кандидат

14 — 04.08.06 — 16:38

Или вообще есть кто?

  

Кандидат

15 — 04.08.06 — 16:39

Живой

  

avmlvm

16 — 04.08.06 — 16:39

(12) Где смотрел «пример»?

Должно быть:

Процедура ПриПолученииДанныхОтПодчиненного(ЭлементДанных, ПолучениеЭлемента, ОтправкаНазад) экспорт

  

Кандидат

17 — 04.08.06 — 16:44

Это не поможет, это здесь не нужно. Я даже проверил. Процедура работает.

Вот эта не работает:

ПланыОбмена.ЗарегистрироватьИзменения(ПланыОбмена.Полный.НайтиПоКоду(«НЧ»),ЭлементДанных.Ссылка);

  

Кандидат

18 — 04.08.06 — 16:47

Есть еще варианты?

  

Кандидат

19 — 04.08.06 — 16:50

Наверное, все готовятся стартовать домой…

  

avmlvm

20 — 04.08.06 — 16:51

Значит тот элемент который ты ищешь не ВХОДИТ в состав данного плана обмена

ЗЫ… Но «экспорт» всё же нужен…

  

Кандидат

21 — 04.08.06 — 16:53

Входит. Потому как если без энтой процедуры, то то все ходит.

  

Кандидат

22 — 04.08.06 — 17:03

УРА!!! Палучилося!!!

  

Кандидат

23 — 04.08.06 — 17:03

Элементы более не удаляются, а восстанавливаются во всех базах, из которых были удалены!!!

Нужна помощь, либо сильно туплю, либо надо ставить свежий релиз.Не работает конструкция вида: Где ступил?

Конкретно не работает НайтиПоСсылкам(НЭ) Говорит: Ошибка при выполнении обработчика — ‘{ПланОбмена.Полный}: Ошибка при вызове метода контекста (НайтиПоСсылкам): Недопустимое значение параметра (параметр номер «1»)’

P.S. А зачем в базу знаний-то?

Простите, тута другой человек сидел за компом, вот и понажимал кнопарей. Ни в какую базу знаний конечно же этого не надо.

НЭ = Новый Массив; мне не понравилось, что создаётся не пустой массив, т.е. там уже есть 1 элемент а потом ты добавляешь ещё один. Попробуй НЭ = Новый Массив;

Последний шаг: Ошибка при выполнении обработчика — ‘{ПланОбмена.Полный}: Ошибка при вызове метода контекста (ЗарегистрироватьИзменения): Недопустимое значение параметра (параметр номер «1»)’ Конец раб. дня.

(шопотом) а ты волшебное слово «экспорт» не пробовал поставить??? :-)))

В примере от 1С ничего нет.

Где смотрел «пример»? Должно быть:

Это не поможет, это здесь не нужно. Я даже проверил. Процедура работает. Вот эта не работает:

Наверное, все готовятся стартовать домой…

Значит тот элемент который ты ищешь не ВХОДИТ в состав данного плана обмена ЗЫ… Но «экспорт» всё же нужен…

Входит. Потому как если без энтой процедуры, то то все ходит.

Элементы более не удаляются, а восстанавливаются во всех базах, из которых были удалены!!!

Тэги:

Комментарии доступны только авторизированным пользователям

37 / 38 / 9

Регистрация: 30.10.2016

Сообщений: 130

1

1C 8.x

Создание образа РИБ

03.06.2017, 11:45. Показов 2174. Ответов 12


Добрый деньПытаюсь создать РИБ УТ,но при создании образа вылетает ошибка нарушена целостность базы.Делал проверка базы ошибок нет.Как ещё можно сделать образ?

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь

0

Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

03.06.2017, 11:45

Ответы с готовыми решениями:

Создание РИБ для филиалов организации
Доброго времени суток господа программисты!
Вопрос такой : Есть организация у которой много…

Создание образа
Ещё раз здравствуйте само задание звучит примерно так
Как создать образа дискеты в каталог /tmp?

Создание образа
Добрый день! Подскажите пожалуйста. Задача состоит в следующем, мне необходимо создать образ…

Создание образа системы
Здравствуйте уважаемые кибер-форумчане.

Начнём с начала, я купил планшет-трансформер под…

12

75 / 71 / 21

Регистрация: 21.08.2015

Сообщений: 335

03.06.2017, 20:08

2

Цитата
Сообщение от iuo86
Посмотреть сообщение

нарушена целостность базы

так тут только chdbfl тебе поможет.

В папке bin, в каталоге с платформой эта утилитка.

1

37 / 38 / 9

Регистрация: 30.10.2016

Сообщений: 130

03.06.2017, 20:36

 [ТС]

3

Ошибок не обнаружено…

0

Эксперт 1С

841 / 604 / 211

Регистрация: 24.07.2013

Сообщений: 2,101

03.06.2017, 20:45

4

Попробуй другую платформу как для тестирования, так и для создания образа РИБ.

1

37 / 38 / 9

Регистрация: 30.10.2016

Сообщений: 130

03.06.2017, 23:06

 [ТС]

5

Счас попробую))тоже мысль была

Добавлено через 1 час 58 минут
Не прокатило

0

Эксперт 1С

841 / 604 / 211

Регистрация: 24.07.2013

Сообщений: 2,101

03.06.2017, 23:30

6

Если есть возможность и время, отправь в 1С. Они починят.

1

37 / 38 / 9

Регистрация: 30.10.2016

Сообщений: 130

03.06.2017, 23:46

 [ТС]

7

Кажется нашёл причину..База малясь дописывалась,если то что дописали не включено в план обмена может вылетать данная ошибка?

0

Модератор

Эксперт 1С

3697 / 2897 / 569

Регистрация: 10.03.2011

Сообщений: 11,398

Записей в блоге: 1

04.06.2017, 00:00

8

Цитата
Сообщение от iuo86
Посмотреть сообщение

если то что дописали не включено в план обмена может вылетать данная ошибка?

нет

Добавлено через 1 минуту
1. выгрузить в dt и загрузить обратно
или
2. Создать новую базу и перегрузить через xml

1

37 / 38 / 9

Регистрация: 30.10.2016

Сообщений: 130

04.06.2017, 01:13

 [ТС]

9

Спасибо))Попробую)

0

37 / 38 / 9

Регистрация: 30.10.2016

Сообщений: 130

22.06.2017, 01:43

 [ТС]

10

Образ выгрузить удалось снятием конфигурации с поддержки,но теперь при попытке зайти в новую базу начинается обновление программы и вылетает ошибка:
{ОбщийМодуль.ОбменДаннымиСервер.Модуль(823)}: В главном узле не обновлен справочник «Идентификаторы объектов метаданных»:
при проверке обнаружено, что требуется выполнить критичные изменения (см. подробности в журнале
регистрации в событии «Идентификаторы объектов метаданных.Требуется выполнить критичные изменения»).

В главном узле выполните обновление информационной базы и повторите создание подчиненного узла.

Чтобы выполнить обновление информационной базы в главном узле, один раз выполните
запуск программы с параметром запуска ЗапуститьОбновлениеИнформационнойБазы.
ВызватьИсключение ТекстОшибки;
Как этот справочник обновить в главном узле?

0

37 / 38 / 9

Регистрация: 30.10.2016

Сообщений: 130

23.06.2017, 09:45

 [ТС]

11

C обновлением разобрался.Теперь при загрузке в главный узел выдаёт ошибку:Ошибка чтения файла сообщения обмена: {Обработка.КонвертацияОбъектовРаспределенныхИнформ ационныхБаз.МодульОбъекта(171)}: Ошибка при вызове метода контекста (ПрочитатьИзменения): Ошибка при выполнении обработчика — ‘ПриПолученииДанныхОтПодчиненного’: {ОбщийМодуль.ФайловыеФункцииСлужебный.Модуль(511)} : Не удалось добавить файл ни в один из томов.
Список ошибок:

Ошибка при добавлении файла «Счет на оплату № 1168 от 19.04.2017.pdf»
в том «1C_files» (WIN-SERVER1c1C_files):
«Ошибка доступа к файлу: «
Что с этим делать?

0

Модератор

Эксперт 1С

3697 / 2897 / 569

Регистрация: 10.03.2011

Сообщений: 11,398

Записей в блоге: 1

28.06.2017, 00:29

12

Цитата
Сообщение от iuo86
Посмотреть сообщение

«Ошибка доступа к файлу: «

написано же…

Добавлено через 1 минуту

Цитата
Сообщение от iuo86
Посмотреть сообщение

Что с этим делать?

дать доступ

1

37 / 38 / 9

Регистрация: 30.10.2016

Сообщений: 130

28.06.2017, 07:45

 [ТС]

13

Спасибо))Уже разобрался)

0

IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

28.06.2017, 07:45

13

Занятие 24 761

В начале процедуры мы вызываем диалог выбора каталога, в который будет помещен образ информационной базы, и затем вызываем процедуру СоздатьНачальныйОбразНаСервере(), исполняющуюся на сервере без контекста, в которой вызывается метод СоздатьНачаль-

ныйОбраз() объекта ПланыОбменаМенеджер.

Именно этот метод и позволяет нам создать образ для подчиненного узла распределенной информационной базы. В первом параметре метода передается ссылка на узел (реквизит формы ПолеВводаОтделение), для которого мы хотим создать начальный образ, а во втором – строка соединения, указывающая информационную базу

(листинг 24.28).

Листинг 24.28. Процедура «СоздатьНачальныйОбразНаСервере»

&НаСервереБезКонтекста Процедура СоздатьНачальныйОбразНаСервере(Узел, КаталогСоединения)

ПланыОбмена.СоздатьНачальныйОбраз(Узел, «File =»»» + КаталогСоединения + «»»»);

КонецПроцедуры

Теперь создадим обработчик команды Записать изменения.

Текст обработчика будет выглядеть следующим образом

(листинг 24.29).

Листинг 24.29. Обработчик нажатия кнопки «Записать изменения»

&НаКлиенте Процедура ЗаписатьИзменения(Команда)

Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение); Диалог.Заголовок = «Укажите файл обмена:»; Если Диалог.Выбрать() Тогда

ЗаписатьИзмененияНаСервере(ПолеВводаОтделение, Диалог.ПолноеИмяФайла);

Сообщение = Новый СообщениеПользователю; Сообщение.Текст = «Запись изменений завершена.»; Сообщение.Сообщить();

КонецЕсли;

КонецПроцедуры

В начале процедуры мы вызываем диалог ввода имени файла, в  который будут записаны изменения, и затем вызываем процедуру

ЗаписатьИзмененияНаСервере(), исполняющуюся на сервере без контекста. В первом параметре метода передается ссылка на узел (реквизит формы ПолеВводаОтделение), для которого будет производиться запись изменений.

762 1С:Предприятие 8.3. Практическое пособие разработчика

В этой процедуре мы создаем объект ЗаписьXML для работы с этим файлом.

Затем создаем объект ЗаписьСообщенияОбмена, с помощью которого будем делать сообщение обмена. В методе НачатьЗапись(), во втором параметре, мы указываем, для какого узла обмена будет создаваться это сообщение.

После этого мы выполняем метод ЗаписатьИзменения() объекта ПланыОбменаМенеджер, который и записывает изменения, предназначенные для передачи в выбранный узел, в указанное сообщение обмена.

В заключение мы, как обычно, заканчиваем запись сообщения обмена и закрываем файл (листинг 24.30).

Листинг 24.30. Процедура «ЗаписатьИзмененияНаСервере»

&НаСервереБезКонтекста Процедура ЗаписатьИзмененияНаСервере(Узел, ИмяФайла)

//Создать и проинициализировать объект ЗаписьXML. ЗаписьXML = Новый ЗаписьXML; ЗаписьXML.ОткрытьФайл(ИмяФайла);

//Создать объект ЗаписьСообщенияОбмена и начать запись сообщения. ЗаписьСообщения = ПланыОбмена.СоздатьЗаписьСообщения(); ЗаписьСообщения.НачатьЗапись(ЗаписьXML, Узел);

//Записать содержимое тела сообщения обмена данными распределенной ИБ. ПланыОбмена.ЗаписатьИзменения(ЗаписьСообщения);

//Закончить запись сообщения и запись XML.

ЗаписьСообщения.ЗакончитьЗапись(); ЗаписьXML.Закрыть();

КонецПроцедуры

Узнай больше!

Следует отметить, что метод «ЗаписатьИзменения()» позволяет задать максимальное число элементов данных, которые помещаются в сообщение в рамках одной транзакции базы данных. По умолчанию все данные помещаются в сообщение в рамках одной транзакции.

Такой режим является рекомендуемым, так как гарантирует согласованность данных, помещаемых в сообщение.

Но при создании сообщения в многопользовательском режиме могут быть конфликты блокировок между транзакцией, в которой данные

Занятие 24 763

помещаются в сообщение, и транзакциями, выполняемыми другими пользователями. Для снижения вероятности возникновения таких конфликтов можно задать значение этого параметра, отличное от значения по умолчанию. Чем меньше значение параметра, тем меньше вероятностьконфликтаблокировок,новышевероятностьпомещения в сообщение несогласованных данных.

Учитывая все вышесказанное, идеальным вариантом является выполнение обмена данными в монопольном режиме. Однако такой вариант не всегда приемлем в силу специфики организации работы конкретных информационных баз.

И последним мы создадим обработчик команды Прочитать изменения.

Текст обработчика будет выглядеть следующим образом

(листинг 24.31).

Листинг 24.31. Обработчик нажатия кнопки «Прочитать изменения»

&НаКлиенте Процедура ПрочитатьИзменения(Команда)

Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); Диалог.Заголовок = «Укажите файл обмена:»; Если Диалог.Выбрать() Тогда

ПрочитатьИзмененияНаСервере(Диалог.ПолноеИмяФайла);

Сообщение = Новый СообщениеПользователю; Сообщение.Текст = «Чтение изменений завершено.»; Сообщение.Сообщить();

КонецЕсли;

КонецПроцедуры

Вначале процедуры мы снова вызываем диалог выбора имени файла, который будет прочитан, и затем вызываем процедуру ПрочитатьИзмененияНаСервере(), исполняющуюся на сервере без контекста.

Вэтой процедуре мы создаем объект ЧтениеXML для работы с этим файлом. Затем создаем объект ЧтениеСообщенияОбмена для чтения сообщения, содержащегося в указанном файле.

Затем методом ПрочитатьИзменения() объекта ПланыОбменаМе-

неджер мы читаем полученное сообщение.

В заключение процедуры мы завершаем чтение сообщения обмена и  закрываем файл (листинг 24.32).

764 1С:Предприятие 8.3. Практическое пособие разработчика

Листинг 24.32. Процедура «ПрочитатьИзмененияНаСервере»

&НаСервереБезКонтекста Процедура ПрочитатьИзмененияНаСервере(ИмяФайла)

//Создать и проинициализировать объект ЧтениеXML. ЧтениеXML = Новый ЧтениеXML; ЧтениеXML.ОткрытьФайл(ИмяФайла);

//Создать объект ЧтениеСообщенияОбмена и начать чтение сообщения. ЧтениеСообщения = ПланыОбмена.СоздатьЧтениеСообщения(); ЧтениеСообщения.НачатьЧтение(ЧтениеXML);

//Прочитать содержимое тела сообщения.

ПланыОбмена.ПрочитатьИзменения(ЧтениеСообщения);

// Закончить чтение сообщения и чтение XML. ЧтениеСообщения.ЗакончитьЧтение(); ЧтениеXML.Закрыть();

КонецПроцедуры

В заключение на закладке Подсистемы укажем принадлежность обработки ОбменСОтделениями к подсистеме Предприятие.

Теперь настроим командный интерфейс основного раздела для администратора. Вызовем окно настройки командного интерфейса

(Открыть командный интерфейс основного раздела) из контекстного меню корня дерева объектов конфигурации. Добавим команды для открытия форм Общие настройки, Обмен данными и Обмен с отделе-

ниями в список команд основного раздела и зададим видимость этих форм только для роли Администратор (рис. 24.29).

Рис. 24.29. Настройка командного интерфейса основного раздела для администратора

Занятие 24 765

А также расположим формы списка

планов обмена

Филиалы

и  Отделения на начальной странице

администратора.

Вызовем

настройку начальной страницы (Открыть рабочую область начальной страницы) из контекстного меню корня дерева объектов конфигурации.

Создадим форму списка плана обмена Отделения. Добавим формы списка планов обмена Филиалы и Отделения в левую часть начальной страницы и зададим видимость этих форм только для роли Админи-

стратор (рис. 24.30).

Рис. 24.30. Настройка начальной страницы для администратора

Теперь выполним пример программного обмена данными.

подсказка

При выполнении примера обмена данными нужно правильно задавать узел, в который записываются и от которого принимаются изменения. Например, после изменения данных в центральной базе в списке узлов плана обмена нужно выбрать подчиненный узел, которому будут передаваться данные (например, Отделение), и нажать кнопку Записать изменения. А в базе узла, в который будут загружаться данные, в списке узлов плана обмена нужно выбрать узел, из которого данные были выгружены (например, Центральная база), и нажать кнопку Прочитать

изменения.

766 1С:Предприятие 8.3. Практическое пособие разработчика

Запустим «1С:Предприятие» для пользователя с ролью Администратор. Откроется начальная страница приложения (рис. 24.31).

Рис. 24.31. Начальная страница «1С:Предприятия» для администратора

Из командной панели раздела Главное, из подменю Сервис откроем форму обработки Обмен с отделениями. Выберем в поле ввода Отделение узел обмена Отделение, для которого мы хотим создать начальный образ нашей информационной базы (рис. 24.32).

Затем выполним команду Создать начальный образ. Создадим каталог, куда будет выгружен начальный образ информационной базы, и  укажем его в диалоге выбора каталога.

Теперь создадим в центральной базе нового сотрудника. В форме Обмен с отделениями выберем в поле ввода Отделение узел обмена Отделение, в который мы хотим передать изменения. Нажмем кнопку Записать изменения и укажем имя файла сообщения с изменениями.

Затем откроем базу отделения (куда был выгружен начальный образ центральной базы) в конфигураторе. Создадим в ней пользователя с  ролью Администратор и запустим «1С:Предприятие». На  начальной странице в форме Обмен с отделениями выберем в поле

Занятие 24 767

ввода Отделение узел обмена Центральная база, от которого мы хотим принять изменения. Нажмем кнопку Прочитать изменения и укажем имя файла сообщения с изменениями.

Рис. 24.32. Пример программного обмена с отделениями

Убедимся, что сотрудник центральной базы (с префиксом кода ЦБ) присутствует в базе отделения.

Следует лишь сделать несколько заключительных замечаний.

При использовании механизма распределенных информационных баз становятся доступными четыре события объекта встроенного языка ПланОбменаОбъект.<имя>, которые позволяют управлять отправкой и приемом данных на уровне отдельных элементов данных:

ПриОтправкеДанныхГлавному(),ПриОтправкеДанныхПодчиненному(),ПриПолученииДанныхОтГлавного(),

ПриПолученииДанныхОтПодчиненного().

Эти события будут вызываться для каждого элемента данных, включаемого в сообщение.

Работу этих событий можно увидеть, добавив в модуль объекта План обмена Отделения следующий текст (листинг 24.33).

768 1С:Предприятие 8.3. Практическое пособие разработчика

Листинг 24.33. Просмотр работы событий объекта «ПланОбменаОбъект»

Процедура ПриОтправкеДанныхГлавному(ЭлементДанных, ОтправкаЭлемента)

Сообщение = Новый СообщениеПользователю; Сообщение.Текст = «ПриОтправкеДанныхГлавному » + ЭлементДанных; Сообщение.Сообщить();

КонецПроцедуры

Процедура ПриОтправкеДанныхПодчиненному(ЭлементДанных, ОтправкаЭлемента)

Сообщение = Новый СообщениеПользователю; Сообщение.Текст = «ПриОтправкеДанныхПодчиненному » + ЭлементДанных; Сообщение.Сообщить();

КонецПроцедуры

Процедура ПриПолученииДанныхОтГлавного(ЭлементДанных, ПолучениеЭлемента, ОтправкаНазад)

Сообщение = Новый СообщениеПользователю; Сообщение.Текст = «ПриПолученииДанныхОтГлавного » + ЭлементДанных; Сообщение.Сообщить();

КонецПроцедуры

Процедура ПриПолученииДанныхОтПодчиненного(ЭлементДанных, ПолучениеЭлемента, ОтправкаНазад)

Сообщение = Новый СообщениеПользователю; Сообщение.Текст = «ПриПолученииДанныхОтПодчиненного » + ЭлементДанных; Сообщение.Сообщить();

КонецПроцедуры

В первом параметре всех перечисленных событий находится тот элемент данных, для которого вызвано это событие.

Параметр ОтправкаЭлемента позволяет управлять тем, какая информация будет помещена в сообщение. Он может принимать три значения:

Авто – значение по умолчанию. Указывает на то, что элемент данных будет помещен в сообщение;

Удалить – в сообщение будет помещено значение, предназначенное для удаления этого элемента данных;

Игнорировать – в сообщение не будет помещено ничего, связанного с этим элементом данных.

Занятие 24 769

Параметр ПолучениеЭлемента позволяет указать, будет ли прочитанный элемент данных записан в базу данных или нет. Параметр также может принимать три значения:

Авто – значение по умолчанию. Если элемент данных получен от главного узла, он будет записан всегда. Если элемент данных получен от подчиненного узла, он будет записан, только если не зарегистрированы изменения для этого элемента данных;

Принять – полученный элемент данных будет записан всегда;

Игнорировать – проигнорировать получение элемента данных и  ничего не записывать.

Также в событиях получения данных существует третий параметр –

ОтправкаНазад, имеющий тип Булево.

Этот параметр позволяет выполнять принудительную регистрацию изменений для полученного элемента данных в базе-получателе.

Такая необходимость может возникнуть, например, когда при приеме данных от узла-отправителя обнаружено, что полученные данные противоречивы (например, в узле-отправителе была допущена ошибка при изменении данных).

Тогда мы можем проигнорировать присланные изменения и, установив флажок ОтправкаНазад, вызвать принудительную регистрацию изменений полученного элемента данных в нашей базе для узла-отправителя.

В результате последующего обмена состояние этого элемента данных в узле-отправителе будет установлено таким же, как и в нашей базе.

Изменение структуры узлов

В заключение следует сказать о том, что механизм распределенных информационных баз содержит программное средство реконфигурирования структуры узлов распределенной базы.

Для этого следует использовать метод УстановитьГлавныйУзел()

объекта ПланыОбменаМенеджер.

В параметре этого метода передается ссылка на узел плана обмена распределенной информационной базы, который устанавливается главным для текущей базы. Также в этом параметре может быть передано значение Неопределено, и это приведет к тому, что у  текущей информационной базы будет отсутствовать главный узел.

770 1С:Предприятие 8.3. Практическое пособие разработчика

Допустим, необходимо переместить один из подчиненных узлов в  корень дерева (рис. 24.33).

Рис. 24.33. Реконфигурирование структуры узлов

Для этого нужно выполнить следующие действия (листинг 24.34).

Листинг 24.34. Перемещение Узла2 в корень дерева

// В информационной базе Узла2. ПланыОбменаМенеджер.УстановитьГлавныйУзел(Неопределено);

// В информационной базе Узла1. ПланыОбменаМенеджер.УстановитьГлавныйУзел(Узел2);

При этом будут удалены все записи регистрации изменений конфигурации Узла1, относящиеся к Узлу2, т. к. передача изменений конфигурации будет возможна теперь только от Узла2 к Узлу1. Записи регистрации изменения данных удалены не будут, так как передача изменений данных будет по-прежнему возможна между этими узлами.

Таким же образом, используя значение параметра метода Неопределено, мы можем отключать от дерева отдельную информационную базу или целое поддерево (рис. 24.34, листинг 24.35).

Листинг 24.35. Перемещение Узла2 в корень дерева

// В информационной базе Узла1. ПланыОбменаМенеджер.УстановитьГлавныйУзел(Неопределено);

Соседние файлы в папке Учебники

  • #
  • #
  • #
  • #
  • #
  • #

Нужна помощь, либо сильно туплю, либо надо ставить свежий релиз.Не работает конструкция вида: Где ступил?

Конкретно не работает НайтиПоСсылкам(НЭ) Говорит: Ошибка при выполнении обработчика — ‘{ПланОбмена.Полный}: Ошибка при вызове метода контекста (НайтиПоСсылкам): Недопустимое значение параметра (параметр номер «1»)’

P.S. А зачем в базу знаний-то?

Простите, тута другой человек сидел за компом, вот и понажимал кнопарей. Ни в какую базу знаний конечно же этого не надо.

НЭ = Новый Массив; мне не понравилось, что создаётся не пустой массив, т.е. там уже есть 1 элемент а потом ты добавляешь ещё один. Попробуй НЭ = Новый Массив;

Последний шаг: Ошибка при выполнении обработчика — ‘{ПланОбмена.Полный}: Ошибка при вызове метода контекста (ЗарегистрироватьИзменения): Недопустимое значение параметра (параметр номер «1»)’ Конец раб. дня.

(шопотом) а ты волшебное слово «экспорт» не пробовал поставить??? :-)))

В примере от 1С ничего нет.

Где смотрел «пример»? Должно быть:

Это не поможет, это здесь не нужно. Я даже проверил. Процедура работает. Вот эта не работает:

Наверное, все готовятся стартовать домой…

Значит тот элемент который ты ищешь не ВХОДИТ в состав данного плана обмена ЗЫ… Но «экспорт» всё же нужен…

Входит. Потому как если без энтой процедуры, то то все ходит.

Элементы более не удаляются, а восстанавливаются во всех базах, из которых были удалены!!!

Тэги:

Комментарии доступны только авторизированным пользователям

37 / 38 / 9

Регистрация: 30.10.2016

Сообщений: 130

1

1C 8.x

Создание образа РИБ

03.06.2017, 11:45. Показов 2287. Ответов 12


Студворк — интернет-сервис помощи студентам

Добрый деньПытаюсь создать РИБ УТ,но при создании образа вылетает ошибка нарушена целостность базы.Делал проверка базы ошибок нет.Как ещё можно сделать образ?



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

03.06.2017, 11:45

Ответы с готовыми решениями:

Создание РИБ для филиалов организации
Доброго времени суток господа программисты!
Вопрос такой : Есть организация у которой много…

Создание образа
Ещё раз здравствуйте само задание звучит примерно так
Как создать образа дискеты в каталог /tmp?

Создание образа
Добрый день! Подскажите пожалуйста. Задача состоит в следующем, мне необходимо создать образ…

Создание образа системы
Здравствуйте уважаемые кибер-форумчане.

Начнём с начала, я купил планшет-трансформер под…

12

75 / 71 / 21

Регистрация: 21.08.2015

Сообщений: 335

03.06.2017, 20:08

2

Цитата
Сообщение от iuo86
Посмотреть сообщение

нарушена целостность базы

так тут только chdbfl тебе поможет.

В папке bin, в каталоге с платформой эта утилитка.



1



37 / 38 / 9

Регистрация: 30.10.2016

Сообщений: 130

03.06.2017, 20:36

 [ТС]

3

Ошибок не обнаружено…



0



Эксперт 1С

841 / 604 / 211

Регистрация: 24.07.2013

Сообщений: 2,101

03.06.2017, 20:45

4

Попробуй другую платформу как для тестирования, так и для создания образа РИБ.



1



37 / 38 / 9

Регистрация: 30.10.2016

Сообщений: 130

03.06.2017, 23:06

 [ТС]

5

Счас попробую))тоже мысль была

Добавлено через 1 час 58 минут
Не прокатило



0



Эксперт 1С

841 / 604 / 211

Регистрация: 24.07.2013

Сообщений: 2,101

03.06.2017, 23:30

6

Если есть возможность и время, отправь в 1С. Они починят.



1



37 / 38 / 9

Регистрация: 30.10.2016

Сообщений: 130

03.06.2017, 23:46

 [ТС]

7

Кажется нашёл причину..База малясь дописывалась,если то что дописали не включено в план обмена может вылетать данная ошибка?



0



Модератор

Эксперт 1С

3724 / 2918 / 575

Регистрация: 10.03.2011

Сообщений: 11,491

Записей в блоге: 1

04.06.2017, 00:00

8

Цитата
Сообщение от iuo86
Посмотреть сообщение

если то что дописали не включено в план обмена может вылетать данная ошибка?

нет

Добавлено через 1 минуту
1. выгрузить в dt и загрузить обратно
или
2. Создать новую базу и перегрузить через xml



1



37 / 38 / 9

Регистрация: 30.10.2016

Сообщений: 130

04.06.2017, 01:13

 [ТС]

9

Спасибо))Попробую)



0



37 / 38 / 9

Регистрация: 30.10.2016

Сообщений: 130

22.06.2017, 01:43

 [ТС]

10

Образ выгрузить удалось снятием конфигурации с поддержки,но теперь при попытке зайти в новую базу начинается обновление программы и вылетает ошибка:
{ОбщийМодуль.ОбменДаннымиСервер.Модуль(823)}: В главном узле не обновлен справочник «Идентификаторы объектов метаданных»:
при проверке обнаружено, что требуется выполнить критичные изменения (см. подробности в журнале
регистрации в событии «Идентификаторы объектов метаданных.Требуется выполнить критичные изменения»).

В главном узле выполните обновление информационной базы и повторите создание подчиненного узла.

Чтобы выполнить обновление информационной базы в главном узле, один раз выполните
запуск программы с параметром запуска ЗапуститьОбновлениеИнформационнойБазы.
ВызватьИсключение ТекстОшибки;
Как этот справочник обновить в главном узле?



0



37 / 38 / 9

Регистрация: 30.10.2016

Сообщений: 130

23.06.2017, 09:45

 [ТС]

11

C обновлением разобрался.Теперь при загрузке в главный узел выдаёт ошибку:Ошибка чтения файла сообщения обмена: {Обработка.КонвертацияОбъектовРаспределенныхИнформационныхБаз.МодульОбъекта(171) }: Ошибка при вызове метода контекста (ПрочитатьИзменения): Ошибка при выполнении обработчика — ‘ПриПолученииДанныхОтПодчиненного’: {ОбщийМодуль.ФайловыеФункцииСлужебный.Модуль(511)}: Не удалось добавить файл ни в один из томов.
Список ошибок:

Ошибка при добавлении файла «Счет на оплату № 1168 от 19.04.2017.pdf»
в том «1C_files» (\WIN-SERVER1c1C_files):
«Ошибка доступа к файлу: «
Что с этим делать?



0



Модератор

Эксперт 1С

3724 / 2918 / 575

Регистрация: 10.03.2011

Сообщений: 11,491

Записей в блоге: 1

28.06.2017, 00:29

12

Цитата
Сообщение от iuo86
Посмотреть сообщение

«Ошибка доступа к файлу: «

написано же…

Добавлено через 1 минуту

Цитата
Сообщение от iuo86
Посмотреть сообщение

Что с этим делать?

дать доступ



1



37 / 38 / 9

Регистрация: 30.10.2016

Сообщений: 130

28.06.2017, 07:45

 [ТС]

13

Спасибо))Уже разобрался)



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

28.06.2017, 07:45

13

 

Добрый день.
После последнего обновления
Комплексная автоматизация, редакция 1.1 + CRM, редакция 1.4 (1.1.29/1.4.6) (1.1.29.1)
вышла ошибка :
«Ошибка при выполнении обработчика — ‘ПередЗаписью’
по причине:
{ОбщийМодуль.ЭлектронныеДокументыСлужебный.Модуль(5387)}: Ошибка при вызове метода контекста (Выполнить)

по причине:
Недостаточно прав для работы с таблицей «Справочник.ЭДПрисоединенныеФайлы»»


Пользователям Право «использованиеОбмена ЭД» я никому не давала, т к мы не пользуемся Обменом и обыкновенному менеджеру по закупкам он не нужен.

 

Татьяна, добрый вечер!
У меня не воспроизводится данная ошибка. Могли бы Вы подробнее написать какие именно права у Вас даны данному пользователю?

 

Уточните, в какой момент выходит эта ошибка? Права таких пользователей типовые или настроены самостоятельно?

 

Добрый день.
Права типовые, но не «полные», а у этого справочника права даны только у того у кого «ПОЛНЫЕ» либо «использованиеОбмена ЭД» (в конфигураторе посмотрела :)), Решила проблему тем что у меня есть одна роль «не типовая» «CRM_Пользователь1» просто туда добавила.

Изменено: Татьяна Катцына05.02.2013 08:04:41

 

Не могли бы вы сказать — в какой момент выдавалась эта ошибка до того, как вы изменили настройку?
Это поможет нам разобраться в возможной проблемой в будущем, у других клиентов.
При старте, в момент обновления или при открытии /записи конкретных данных?

 

в момент пометки  на удаление документа Заказ поставщику пользователем.

 

Сначала прошло обновление, потом пользователь решил пометить документ на удаление, вышла ошибка,  добавила права на чтение,запись, удаление  в «свою» роль. Пользователь перезашел в базу и все заработало.

 

Ясно. Вы не делали еще  обновление на посл. релиз, 1.1.30.1_1.4.6.1 ?
Правда на днях выйдет след. релиз…

 

Да просто не успела :), опять новый !! :)

 

Алексей Полубенский

Посетитель

Сообщений: 1577
Авторитет:

190

Регистрация: 12.02.2010

#10



0


05.02.2013 11:15:45

Ну 1С клепает, мы не виноваты :)

  • Ошибка при выполнении команды старлайн
  • Ошибка при выполнении обработчика при записи
  • Ошибка при выполнении команды приложению word
  • Ошибка при выполнении обработчика обработкаудаленияпроведения
  • Ошибка при выполнении команды континент ап