|
Программная установка значения разделителя | ☑ | ||
---|---|---|---|---|
0
YouAreEmpty
28.09.12
✎
18:21
|
Здравствуйте. Есть самописная конфигурация в которой уже полгода ведется учет. Потом было решено сделать в базе режим разделения данных. Соответственно данным которые уже были раньше нужно поменять значение разделителя с пустого на опр. значение. Но для пользователя у которого разделитель не установлен при попытке установить у документов значение разделителя из кода, возникает ошибка "Не все разделители установлены". Причем интерактивно все меняется превосходно. Как можно изменить значение разделителя программно?
|
|||
1
DrShad
28.09.12
✎
18:24
|
а вы в модулях прописали установку разделителя?
|
|||
2
YouAreEmpty
28.09.12
✎
18:25
|
(1) Я обработкой установку делаю
|
|||
3
DrShad
28.09.12
✎
18:27
|
(2) значит что-то не учел
|
|||
4
YouAreEmpty
28.09.12
✎
18:29
|
(3) Ну если бы учел, на форум не писал бы)
|
|||
5
DrShad
28.09.12
✎
18:30
|
(4) нам телепатировать?
|
|||
6
YouAreEmpty
28.09.12
✎
18:32
|
(4) могу бросить код
|
|||
7
DrShad
28.09.12
✎
18:34
|
сколько строк?
|
|||
8
YouAreEmpty
28.09.12
✎
18:34
|
(7) около 60-ти
|
|||
9
DrShad
28.09.12
✎
18:35
|
кидай
|
|||
10
YouAreEmpty
28.09.12
✎
18:37
|
&НаСервере
Процедура ВыполнитьУстановкуРазделителяНаСервере() СписокОбъектовМетаданных = Новый СписокЗначений; ЭлементФраншизера = Справочники.Франшизеры.НайтиПоКоду("000000001"); МетаданныеРазделителя = Метаданные.ОбщиеРеквизиты.Франшизер; //АвтоИспользование = МетаданныеРазделителя.АвтоИспользование = АвтоИспользованиеОбщегоРеквизита.Использовать; СоставРазделителя = Метаданные.ОбщиеРеквизиты.Франшизер.Состав; Для Каждого ЭлементСостава Из СоставРазделителя Цикл Если ЭлементСостава.Использование = Метаданные.СвойстваОбъектов.ИспользованиеОбщегоРеквизита.Использовать Тогда Если Метаданные.РегистрыСведений.Содержит(ЭлементСостава.Метаданные) Тогда Если ЭлементСостава.Метаданные.РежимЗаписи = Метаданные.СвойстваОбъектов.РежимЗаписиРегистра.Независимый Тогда СписокОбъектовМетаданных.Добавить(ЭлементСостава.Метаданные,ЭлементСостава.Метаданные.Имя); КонецЕсли; Иначе СписокОбъектовМетаданных.Добавить(ЭлементСостава.Метаданные,ЭлементСостава.Метаданные.Имя); КонецЕсли; КонецЕсли; КонецЦикла; // Обработаем все типы объектов метеданных Для Каждого ЭлементМД Из СписокОбъектовМетаданных Цикл Если Метаданные.Документы.Содержит(ЭлементМД.Значение) Тогда ВыборкаДокументов = Документы[ЭлементМД.Представление].Выбрать(); Пока ВыборкаДокументов.Следующий() Цикл ОбъектДокумент = ВыборкаДокументов.ПолучитьОбъект(); ОбъектДокумент.Франшизер = ЭлементФраншизера; ОбъектДокумент.Записать(); КонецЦикла; ИначеЕсли Метаданные.Справочники.Содержит(ЭлементМД.Значение) Тогда ВыборкаДокументов = Справочники[ЭлементМД.Представление].Выбрать(); Пока ВыборкаДокументов.Следующий() Цикл ОбъектДокумент = ВыборкаДокументов.ПолучитьОбъект(); ОбъектДокумент.Франшизер = ЭлементФраншизера; ОбъектДокумент.Записать(); КонецЦикла; //ИначеЕсли Метаданные.Константы.Содержит(ЭлементМД.Значение) Тогда // МенеджерЗаписиКонстанты = Константы[ЭлементМД.Представление].СоздатьМенеджерЗначения(); // МенеджерЗаписиКонстанты.Франшизер = ЭлементФраншизера; // МенеджерЗаписиКонстанты.Записать(); ИначеЕсли Метаданные.РегистрыСведений.Содержит(ЭлементМД.Значение) Тогда НаборЗаписей = РегистрыСведений[ЭлементМД.Представление].СоздатьНаборЗаписей(); НаборЗаписей.Прочитать(); Для Каждого СтрокаНабораЗаписей ИЗ НаборЗаписей Цикл СтрокаНабораЗаписей.Франшизер = ЭлементФраншизера; КонецЦикла; НаборЗаписей.Записать(); КонецЕсли; КонецЦикла; КонецПроцедуры |
|||
11
DrShad
28.09.12
✎
18:40
|
и не работает именно здесь?
НаборЗаписей = РегистрыСведений[ЭлементМД.Представление].СоздатьНаборЗаписей(); НаборЗаписей.Прочитать(); Для Каждого СтрокаНабораЗаписей ИЗ НаборЗаписей Цикл СтрокаНабораЗаписей.Франшизер = ЭлементФраншизера; КонецЦикла; НаборЗаписей.Записать(); |
|||
12
YouAreEmpty
28.09.12
✎
18:41
|
(11) В любом месте где я пытаюсь установить этот реквизит а потом записать объект
|
|||
13
DrShad
28.09.12
✎
18:44
|
про ОбменДанными.Загрузка что нить слыхал?
|
|||
14
YouAreEmpty
28.09.12
✎
18:44
|
Попытка сначала установить этот реквизит, а потом включить режим разделения данных вообще закончилась ошибкой SDBL
|
|||
15
YouAreEmpty
28.09.12
✎
18:44
|
Да, слыхал
|
|||
16
YouAreEmpty
28.09.12
✎
18:45
|
(13) Только не пойму чем мне это может помочь
|
|||
17
DrShad
28.09.12
✎
18:45
|
юзай
|
|||
18
YouAreEmpty
28.09.12
✎
18:46
|
(17) И как же?
|
|||
19
DrShad
28.09.12
✎
18:46
|
как это чем? ты же при записи попадаешь на проверки
|
|||
20
YouAreEmpty
28.09.12
✎
18:47
|
(19) На какие проверки? Эти проверки осуществляет платформа а не мой код
|
|||
21
DrShad
28.09.12
✎
18:47
|
(18) я не знаю есть ли у вас в конфе конструкции с его использованием, но в типовых есть и помогают обойти проверки при и перед записью
|
|||
22
YouAreEmpty
28.09.12
✎
18:49
|
(21) Она просто организует выход из обработчика и все, если он вообще есть
|
|||
23
DrShad
28.09.12
✎
18:54
|
а при записи документа у тебя не хочет РС прописать?
|
|||
24
YouAreEmpty
28.09.12
✎
19:07
|
(23) И документ и справочник тоже не хочет
|
|||
25
YouAreEmpty
29.09.12
✎
18:33
|
Наверняка, кто-нибудь сталкивался с данной проблемой. Не верю что я здесь первооткрыватель
|
|||
26
hhhh
29.09.12
✎
20:10
|
всё-таки проверь (11): Документы[ЭлементМД.Представление]
|
|||
27
YouAreEmpty
01.10.12
✎
12:10
|
Проблема заключалась в том, что он пытался найти по наименованию элемент справочника, который входит в разделение, т.к. у пользователя из под которого я выполняю обработку, не установлен разделитель: получаю сообщение об ошибке. Как победить, пока не знаю(
|
|||
28
Behemoth
16.10.12
✎
13:09
|
Как-то так:
Пока ВыборкаДокументов.Следующий() Цикл ПараметрыСеанса.ФилиалИспользование = Ложь; ПараметрыСеанса.ФилиалЗначение = Филиал; ОбъектДокумент = ВыборкаДокументов.ПолучитьОбъект(); ОбъектДокумент.ОбменДанными.Загрузка = Истина; ОбъектДокумент.Филиал = Филиал; ОбъектДокумент.Записать(); КонецЦикла; сейчас сам ковыряюсь |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |