Имя: Пароль:
1C
1C 7.7
v7: Как перевязывать элемент подчиненного справочника
, ,
0 alex_reglament
 
24.04.12
22:50
Как перевязывать элемент подчиненного справочника к другому элементу справочника хозяина
то есть
справочник хозяин "Номенклатура"
Справочник Подчиненный "СредстваКонтроля"
у подчиненного справочника имеется реквизит типа Перечисление.СостояниеСК
и Идентификатором "Состояние"
этот реквизит переодический
в перечислении есть значения
Новое,
Установленное,
Снятое,
Уничтоженное.
установка реквизита "Состояние" в Новое производится документом
ПоступлениеТМЦ
этим документом реквизит Состояние этих средств контроля устанавливается только в НОВОЕ
а уже документом АктВыполненыхРабот
оно должно переходить из нового в Установленый а из установленного в снятый!!!
дело в том что мне при установке состояния в Новое нужно было использовать владельца вот я и создал новый элемент справочника "Номенклатура" для использования его в качестве ячейки для хранения новых средств контроля
но теперь же мне нужно его перевязать к другому элементу справочника "Номенклатура" но как это сделать я не понимаю
я сделал следующее но вышло что реквизит меняется на "Установленное" а вот владелец нет
вот код


Пока ПолучитьСтроку() = 1 Цикл
       ХранительСК = СоздатьОбъект("Справочник.Номенклатура");
       Если ХранительСК.НайтиПоКоду(123456) = 1 Тогда
           ЭСУХранитель = ХранительСК.ТекущийЭлемент();
       КонецЕсли;
       спрСКНов = СоздатьОбъект("Справочник.СредстваКонтроля");
       спрСКНов.ИспользоватьВладельца(ЭСУХранитель);
       _спрСКНов = СоздатьОбъект("Справочник.СредстваКонтроля");
       _спрСКНов.ИспользоватьВладельца(ЭСУ);
       код_ = СнятыйСК1;
       если _спрСКНов.НайтиПоКоду(код_) = 1 Тогда
           элемент = _спрСКНов.ТекущийЭлемент();
           Если элемент.Состояние.Получить(ДатаДок) = Перечисление.СтатусСК.Установленный Тогда
               снято = Перечисление.СтатусСК.снятое;
               УстановитьРеквизитСправочника(элемент,"Состояние",снято,ДатаДок,,,);
           КонецЕсли;
       КонецЕсли;
       
       код_2 = СнятыйСК2;
       если _спрСКНов.НайтиПоКоду(код_) = 1 Тогда
           элемент = _спрСКНов.ТекущийЭлемент();
           Если элемент.Состояние.Получить(ДатаДок) = Перечисление.СтатусСК.Установленный Тогда
               снято = Перечисление.СтатусСК.снятое;
               УстановитьРеквизитСправочника(элемент,"Состояние",снято,ДатаДок,,,);
           КонецЕсли;
       КонецЕсли;
       
       кодСК = УстановленныйСК1.Код;
       если спрСКНов.НайтиПоКоду(кодСК) = 1 Тогда
           элемент = спрСКНов.ТекущийЭлемент();
           Если элемент.Состояние.Получить(ДатаДок) = Перечисление.СтатусСК.Новое Тогда
               элемент.ИспользоватьВладельца(ЭСУ);
               Установлено = Перечисление.СтатусСК.Установленный;
               УстановитьРеквизитСправочника(элемент,"Состояние",Установлено,ДатаДок,,,);
           КонецЕсли;
       КонецЕсли;
       
       кодСК_ = УстановленныйСК2.Код;
       если спрСКНов.НайтиПоКоду(кодСК_) = 1 Тогда
           элемент = спрСКНов.ТекущийЭлемент();
           Если элемент.Состояние.Получить(ДатаДок) = Перечисление.СтатусСК.Новое Тогда
               элемент.ИспользоватьВладельца(ЭСУ);
               Установлено = Перечисление.СтатусСК.Установленный;
               УстановитьРеквизитСправочника(элемент,"Состояние",Установлено,ДатаДок,,,);
           КонецЕсли;
       КонецЕсли;
   КонецЦикла;
       //*********************************************************************************
1 alex_reglament
 
24.04.12
22:50
помогите пожалуйста разобраться с данной для меня дилеммой
2 Steel_Wheel
 
24.04.12
22:54
(0) У тебя в самом деле средства контроля перемещаются между номенклатурами?

Если нет, то менять владельца не надо. Лучше будет создавать новый, но с нужным статусом, и смотреть, чтобы для каждой номенклатуры выполнялась цепочка "Новый-Установлен-Демонтирован"
3 alex_reglament
 
24.04.12
22:54
здесь в коде
_спрСКНов.ИспользоватьВладельца(ЭСУ); "ЭСУ" это реквизит во много строчной части документа типа Справочник.Номенклатура
4 Grobik
 
24.04.12
22:54
Поставь в карточке пол женский, год рождения 1985 и фотку соответствующую. Тогда взлетит.
5 alex_reglament
 
24.04.12
22:55
пока они не перемещаются! именно это мне нужно
6 alex_reglament
 
24.04.12
22:56
а поменять владельца это не как?
7 alex_reglament
 
24.04.12
22:56
мне нужно что бы они перемещались
8 alex_reglament
 
24.04.12
22:58
(4) не спасибо я был воспитан хорошим отцом :))
поэтому если не поможете то придумаю что ни будь сам!
9 alex_reglament
 
24.04.12
22:59
(4) а ты обычно так делаешь? :)))))
10 miki
 
24.04.12
22:59
а чего раньше не пришёл? До того, как выдумать (да ещё и реализовать!) муть из (0)?
11 alex_reglament
 
24.04.12
23:00
ну что есть кто нибудь кто может мне помочь? ато у меня 10 метров на нет осталось :))
а положить денег уже негде все закрыто уже
12 alex_reglament
 
24.04.12
23:01
(10) ну что ж поделаешь что сделано то сделано переделывать не хочу а доделать нужно!!
13 alex_reglament
 
24.04.12
23:02
вру уже 7 метров ЛЮДИ ПОМАГИТЕ
14 KUBIK
 
24.04.12
23:02
(10) +100
15 KUBIK
 
24.04.12
23:03
(13) Отмотай веревку :)))))))
16 alex_reglament
 
24.04.12
23:03
(14) :))
17 miki
 
24.04.12
23:05
владельца сменишь присваиванием:
.Владелец=<тут_нужный_владелец>.

Заодно исправь опечатки(?) в коде из (0), типа
>>код_2 = СнятыйСК2;
>>если _спрСКНов.НайтиПоКоду(код_) = 1 Тогда //<- тут, вероятно, надо бы искать по код_2?

А утром, когда проспишься, найди таки в себе мужество переписать всё заново или принять, что 1С - это не твоё.
18 alex_reglament
 
24.04.12
23:09
кодСК = УстановленныйСК1.Код;
       если спрСКНов.НайтиПоКоду(кодСК) = 1 Тогда
           элемент = спрСКНов.ТекущийЭлемент();
           Если элемент.Состояние.Получить(ДатаДок) = Перечисление.СтатусСК.Новое Тогда
               элемент.ИспользоватьВладельца(ЭСУ);//здесь я именно это и делаю!!!владельца сменишь присваиванием:
               Установлено = Перечисление.СтатусСК.Установленный;
               УстановитьРеквизитСправочника(элемент,"Состояние",Установлено,ДатаДок,,,);
           КонецЕсли;
       КонецЕсли;
19 miki
 
24.04.12
23:11
(18)две строки сравнить и увидеть разницу способен?
20 alex_reglament
 
24.04.12
23:13
(19) не понял тебя
21 alex_reglament
 
24.04.12
23:13
какие именно
22 miki
 
24.04.12
23:14
>>//здесь я именно это и делаю!!!

это ты про какую строку?
23 alex_reglament
 
24.04.12
23:16
элемент.Владелец = ЭСУ;
{Документ.АктВыполненныхРабот.Модуль Документа(56)}: Объект не может быть перепозиционирован!
24 alex_reglament
 
24.04.12
23:17
+(23) почему?
25 miki
 
24.04.12
23:18
(24)потому что полезно иногда читать документацию...
Присваивать - вместо ИспользоватьВладельца, а не вдобавок.
26 alex_reglament
 
24.04.12
23:19
кодСК = УстановленныйСК1.Код;
       если спрСКНов.НайтиПоКоду(кодСК) = 1 Тогда
           элемент = спрСКНов.ТекущийЭлемент();
           Если элемент.Состояние.Получить(ДатаДок) = Перечисление.СтатусСК.Новое Тогда
               //элемент.ИспользоватьВладельца(ЭСУ);
               СоздатьОбъект("Справочник.СредстваКонтроля");
               элемент.Владелец = ЭСУ;
               Установлено = Перечисление.СтатусСК.Установленный;
               УстановитьРеквизитСправочника(элемент,"Состояние",Установлено,ДатаДок,,,);
           КонецЕсли;
       КонецЕсли;
27 Мимохожий Однако
 
24.04.12
23:19
Создай копию подчиненного элемента только у другого владельца и сделай замену по всем ссылка подчиненного элемента- образца.
28 Grobik
 
24.04.12
23:20
(8) (9) Я безотсовщина и быдлокодер Учеба
29 Grobik
 
24.04.12
23:21
А вообще внешняя обработка и запрос. В СП есть, за день справишься. Думаю.
30 alex_reglament
 
24.04.12
23:22
спасибо
31 alex_reglament
 
24.04.12
23:22
разберусь как нибудь
32 miki
 
24.04.12
23:24
(31)разберись лучше "хорошо". Тех, что "как нибудь" и так чуть больше, чем доуя.

ps. Иногда полезно .Записать(), дабы зафиксировать изменения...
33 alex_reglament
 
24.04.12
23:30
(32) ок постараюсь ХОРОШО!!!!!
34 alex_reglament
 
25.04.12
11:35
ну так что продолжим тему?
35 Mikeware
 
25.04.12
11:38
Перевязки

Перевязки — лечебные мероприятия при ранениях, язвах и других нарушениях кожных покровов. Повязка (см.) защищает рану от вредных внешних воздействий и прежде всего от микробного загрязнения.
Частота перевязок зависит от характера и течения процесса. При чистых операционных ранах, протекающих без осложнений (отсутствие температуры, болей в ране, лейкоцитоза), первую перевязку производят через 7—9 дней для снятия швов. Так же редко перевязки делают при поверхностных ранах, заживающих под струпом. При остальных свежих ранах частота перевязок зависит от характера первичной хирургической обработки раны (см. Раны, ранения), от характера наложенного шва (первичный или отсроченный), от наличия осложнений.

http://www.medical-enc.ru/15/perevyazki.shtml
36 Он
 
25.04.12
11:39
Форум медсестёр.
37 Mikeware
 
25.04.12
11:41
"- а как ты мандавошек лечишь?
-- а они й меня не болеют!!!"©
38 alex_reglament
 
25.04.12
11:45
а по существу
39 alex_reglament
 
25.04.12
11:46
кодСК = УстановленныйСК1.Код;
       если спрСКНов.НайтиПоКоду(кодСК) = 1 Тогда
           элемент = спрСКНов.ТекущийЭлемент();
           Если элемент.Состояние.Получить(ДатаДок) = Перечисление.СтатусСК.Новое Тогда
               элемент.Владелец = ЭСУ;
               элемент.Владелец.Записать();
               Установлено = Перечисление.СтатусСК.Установленный;
               УстановитьРеквизитСправочника(элемент,"Состояние",Установлено,ДатаДок,,,);
           КонецЕсли;
       КонецЕсли;
туплю извините
так выдает ошибку
40 alex_reglament
 
25.04.12
11:46
Объект не может быть перепозиционирован!
41 alex_reglament
 
25.04.12
11:48
что я не правильно делаю ну не доходит объясните
42 alex_reglament
 
25.04.12
11:51
люююдииии ааааку
43 alex_reglament
 
25.04.12
11:55
ну помагите
44 alex_reglament
 
25.04.12
11:55
я то переделаю все но все таки как сделать
45 Zmich
 
25.04.12
11:59
элемент.Владелец.Записать();
- это что?
46 alex_reglament
 
25.04.12
12:00
не знаю
47 alex_reglament
 
25.04.12
12:00
я уже все перепробовал
48 alex_reglament
 
25.04.12
12:00
но не чего не выходит
49 alex_reglament
 
25.04.12
12:00
опенкофт предложил а я не откозался :)
50 alex_reglament
 
25.04.12
12:03
ну помагите если это возможно вообще сделать
51 alex_reglament
 
25.04.12
12:06
урааа получилось
52 alex_reglament
 
25.04.12
12:06
кодСК = УстановленныйСК1.Код;
       если спрСКНов.НайтиПоКоду(кодСК) = 1 Тогда
           элемент = спрСКНов.ТекущийЭлемент();
           Если элемент.Состояние.Получить(ДатаДок) = Перечисление.СтатусСК.Новое Тогда
               спрСКНов.Владелец = ЭСУ;
               спрСКНов.Записать();
               Установлено = Перечисление.СтатусСК.Установленный;
               УстановитьРеквизитСправочника(элемент,"Состояние",Установлено,ДатаДок,,,);
           КонецЕсли;
       КонецЕсли;
53 alex_reglament
 
25.04.12
12:16
спрСКНов.ТекущийЭлемент() странно честно говоря я думал что  нужно делать с ТекущийЭлемент() а окозалось что не так
54 alex_reglament
 
25.04.12
12:16
спасибо всем за помощь пока
55 Он
 
25.04.12
13:08
(54) Кровь остановил?
Закон Брукера: Даже маленькая практика стоит большой теории.