|
v7: Установка элемента подчиненного справочника | ☑ | ||
---|---|---|---|---|
0
MixanM
06.12.11
✎
05:12
|
Всем добрый день, столкнулся с проблемой такой: на форме есть поле ввода, тип : Справочник.ОКЕИ, он подчинен Справочнику.Номенклатура, пытаюсь загрузить номенклатуру с кодом ОКЕИ, он номенклатуру загружает нормально, а ОКЕИ не выбирает
СпрОкеи = СоздатьОбъект("Справочник.ОКЕИ"); Спр = СоздатьОбъект("Справочник.Номенклатура"); Спр.Новый(); ОКЕИ = Текст.ПолучитьСтроку(6); //Выбираем БазовуюЕдиницу из Справочника ОКЕИ СпрОкеи.ИспользоватьВладельца(Спр.ТекущийЭлемент()); Если СпрОкеи.НайтиПоНаименованию(ОКЕИ, 0, 1) = 1 Тогда НайденныйКод = СпрОкеи.ТекущийЭлемент(); КонецЕсли; |
|||
1
GROOVY
06.12.11
✎
05:15
|
Что есть "Текст"?
|
|||
2
MixanM
06.12.11
✎
05:18
|
Текст это :
Текст = СоздатьОбъект("Текст"); Попытка Текст.Открыть(ИмяФайла); ... ОКЕИ = Текст.ПолучитьСтроку(6); Немного не дописал, у элемента на справочнике Идентификатор : РеквБазоваяЕдиница Если СпрОкеи.НайтиПоНаименованию(ОКЕИ, 0, 1) = 1 Тогда НайденныйКод = СпрОкеи.ТекущийЭлемент(); Спр.РеквБазоваяЕдиница = НайденныйКод; КонецЕсли; Сделал так, но все равно не выставляется |
|||
3
GROOVY
06.12.11
✎
05:19
|
Элемент то находит?
Что в переменной ОКЕИ? Пробелов может дофига? |
|||
4
MixanM
06.12.11
✎
05:25
|
нет нет, в ОКЕИ находиться Базовая Еденица измерения, там всего 2-3 символа, например : "ед.", "шт" "лит"," бут"
|
|||
5
Злопчинский
06.12.11
✎
05:26
|
1. если ОКЕИ - подчинен номенклатуре (откуда вы это взяли вообще?), то почему поиск Океи идет ПО ВСЕМУ справочнике без подчинения?
2. Если указан точный поиск по наименованию - где вы сформировали поисковй реквизит..? . если у вас ТиС штатный - то океи никакого отношения к номенклатуре не имеет. |
|||
6
Злопчинский
06.12.11
✎
05:27
|
Справочнику.Номенклатура подчинен Справочник.Единицы, который своим реквизитом ссылается на ОКЕИ
|
|||
7
MixanM
06.12.11
✎
05:28
|
точно счас глянул, он вообще никому не подчинен
|
|||
8
MixanM
06.12.11
✎
05:28
|
тогда такой вопрос, если на форме есть элемент с типом "справочник" , как сделать так что бы туда встал реквезит?
|
|||
9
Злопчинский
06.12.11
✎
05:29
|
Это что за хрень?
. Спр = СоздатьОбъект("Справочник.Номенклатура"); Спр.Новый(); ОКЕИ = Текст.ПолучитьСтроку(6); СпрОкеи.ИспользоватьВладельца(Спр.ТекущийЭлемент()); - если новый элемент номенклатуры не записан - ссылка не существует! Спр.ТекущийЭлемент() - нет текущего элемента, не записан еще.. бред получится |
|||
10
Злопчинский
06.12.11
✎
05:30
|
(8) какую-то хрень п ишешь полную.. в (0) - вообще поток сознания, как и в (8).
. какую задачу хочешь решить..? "туда встал реквизит" - это не задача - это попытка к микроскопу прикрутить БАК |
|||
11
MixanM
06.12.11
✎
05:31
|
у Справочника.ОКЕИ, есть Идентификатор "Наименование", собственно по нему то я и ищу, дабы выбрать найденный элемент
|
|||
12
Злопчинский
06.12.11
✎
05:31
|
клаву быстрей топчи, минут 10 осталось
|
|||
13
Злопчинский
06.12.11
✎
05:32
|
(11) да похрен что ты ищешь, потому как еще не соображаешь что надо сделать.
какую задачу решаешь? |
|||
14
MixanM
06.12.11
✎
05:32
|
Кароче, записывается номенклатура, и в поле номенклатуры выбирается базовая еденица измерения, БазоваЕденица измерния берется из файла
|
|||
15
Злопчинский
06.12.11
✎
05:32
|
Хорошо, допустим нашел нужный ОКЕИ - что дальше ХОЧЕШЬ сделать?
|
|||
16
Злопчинский
06.12.11
✎
05:32
|
"записывается номенклатура," - нова яноменклатура создается?
|
|||
17
MixanM
06.12.11
✎
05:34
|
да
|
|||
18
MixanM
06.12.11
✎
05:35
|
и у нее выставляюится "Цена" из справочника "цена, "ШтрихКод" - он создается новый в справчонике ШтрихКод и выставляется, это я сделал, счас с ОКЕИ е..усь
|
|||
19
Любопытная
06.12.11
✎
05:38
|
(18) В ТиС Базовая единица номенклатуры имеет тип Справочник.Единицы, а вот у элемента справочника Единицы есть реквизит ОКЕИ, который имеет тип Справочник.ОКЕИ. Т.е. тебе надо для новой номенклатуры создать новые единицы
|
|||
20
Злопчинский
06.12.11
✎
05:38
|
СпрН = СоздатьОбъект("Справочник.Номенклатура");
СпрН.Новый(); СпрН.Наименование = "тролролролр"; СпрН.Записать(); // СпрО = СоздатьОбъект("Справочник.ОКЕИ"); длНаименования = Метаданные.Справочник("ОКЕИ").ДлинаНаименования; ОКЕИизФайла = Формат("лдролролрол","С"+длНаименования); Если СпрО.НайтиПоНаименованию(ОКЕИизФайла,0,1)=0 Тогда СпрО.Новый(); СпрО.Наименование = ОКЕИизФайла; СпрО.Записать(); КонецЕсли; // СпрЕ = СоздатьОбъект("Справочник.Единицы"); СпрЕ.ИспользоватьВладельца(СпрН.ТекущийЭлемент()) СпрЕ.Новый(); СпрЕ.ОКЕИ = СпрО.ТекущийЭлемент(); СпрЕ.Коэффициент = 1; СпрЕ.Записать(); // СпрН.БазоваяЕдиница = СпрЕ.ТекущийЭлемент(); СпрН.ОсновнаяЕдиница = СпрН.БазоваяЕдиница; СпрН.Записать(); |
|||
21
MixanM
06.12.11
✎
05:40
|
Нет, создавать не надо, нужно выбрать из существующих уже, в справочнике. У меня в свойствах спрвочника.ОКЕИ в графе подчинен стит : не подчинено"
|
|||
22
Злопчинский
06.12.11
✎
05:40
|
(16) в типовой ТиС нет справочника "Штрихкод" - штрихкод задается для единицы измерения (Спр.Единицы) номенклатуры.
|
|||
23
Злопчинский
06.12.11
✎
05:41
|
(21) медитируй над кодом в (20).
Когда скрытый смысл этого кода станет ясен - иди дальше |
|||
24
Любопытная
06.12.11
✎
05:42
|
(21) У тебя типовая ТиС?
|
|||
25
MixanM
06.12.11
✎
05:42
|
Спс, последний штрих остался, думал Спр,ОКЕи - это будет самое легкое
|
|||
26
MixanM
06.12.11
✎
05:43
|
нет, я думаю, у 90 % пользователей она не типовая
|
|||
27
Любопытная
06.12.11
✎
05:44
|
(26) Неправильно думаешь. Открой уже конфигурацию, да посмотри, какие типы у реквизитов номенклатуры. А потом думай над (20)
|
|||
28
MixanM
06.12.11
✎
05:45
|
Я уже давно открыл ) и посмотрел ) и ужаснулся, я до этго работал в другой компании, так вот, различия в 1с - только ЯП одинаковый
|
|||
29
Нуф-Нуф
06.12.11
✎
05:46
|
сначала нужно записать владельца, а потом подчиненный
|
|||
30
Simod
06.12.11
✎
05:47
|
(0) Для номенклатуры единицы измерения хранятся в подчиненном справочнике "Единицы". Записать единицу не получится пока не записан элемент-владелец, т.е. Номенклатура. Элемент справочника "ОКЕИ" нужен чтобы определить реквизит справочника "Единицы". Там, как пишет (27) есть и другие реквизиты.
Запись элемента владельца (Номенклатура) и подчиненного элемента "Единица" в твоем случае необходимо проводить в через Попытка-Исключение в транзакции, чтобы в случае невозможности записать отменить операцию. |
|||
31
MixanM
06.12.11
✎
05:50
|
Вообщем в коде сделал так:Создание-запись номенклатуры,Создание-запись Единицы, В Единице, выбор из подчиненных справочников Валюты ... И кк оказывается, надо на этом же этапе выбирать из Справочника.Океи
|
|||
32
MixanM
06.12.11
✎
06:07
|
Вообщем наваял вот так, Единица создается и привязывается к Номенклатуре нормально, а вот ОКЕИ к Единице привязываться не хочет :( :
СпрЕдиницы.ИспользоватьВладельца(Спр.ТекущийЭлемент()); Сообщить(Название); СпрЕдиницы.Новый(); Если Спр.НайтиПоКоду(Номер) = 1 Тогда НайденныйКод = СпрЕдиницы.ТекущийЭлемент(); КонецЕсли; СпрЕдиницы.Наименование = Название; СпрЕдиницы.ОКЕИ = ОКЕИ; СпрЕдиницы.ШтрихКод = ШК; Попытка СпрЕдиницы.Записать(); Сообщить("Загружен Штрихкод :"+ШК); Исключение Предупреждение( "Не выполнено сохранение единицы: " + ОписаниеОшибки() + РазделительСтрок + "Элемент не сохранен!", 60); Возврат; КонецПопытки; СпрОкеи.ИспользоватьВладельца(СпрЕдиницы.ТекущийЭлемент()); Если СпрЕдиницы.НайтиПоРеквизиту("ШтрихКод", ШК, 1) = 1 Тогда СпрОкеи.ВыбратьЭлементы(); СпрОкеи.НайтиПоНаименованию(СокрЛП(ОКЕИ), 0, 1); НайденныйКод = СпрОкеи.ТекущийЭлемент(); КонецЕсли; |
|||
33
Злопчинский
06.12.11
✎
06:36
|
(32) настойчиво курим (20) в части
СпрЕ.ОКЕИ = СпрО.ТекущийЭлемент(); . мы тут что - зря что ли торчим? |
|||
34
Simod
06.12.11
✎
06:38
|
(32) Фигня полная. Ты слабо представляешь, что такое связанные справочники (элемент одного справочника является реквизитом другого) и подчиненные. Посмотри тут: http://www.mista.ru/tutor_1c/sprav.htm
|
|||
35
Злопчинский
06.12.11
✎
06:39
|
(32) ты вообще помнишь что говоришь/пишешь/программишь..?
. в (21) > У меня в свойствах спрвочника.ОКЕИ в графе подчинен стит : не подчинено" и тут же в (32) СпрОкеи.ИспользоватьВладельца(СпрЕдиницы.ТекущийЭлемент()); - это у тебя не вызывает чувство дискомфорта..??? . думай!!! думай!!! ТУТ ДУМАТЬ НАДО!!! |
|||
36
Злопчинский
06.12.11
✎
06:39
|
(34) правильная ссылка!!!!!
|
|||
37
ParaWiz
06.12.11
✎
06:40
|
(35) Что там думать то особо, ты ему в (20) готовый код уже в принципе написал
|
|||
38
Simod
06.12.11
✎
06:42
|
В (20) тоже фигня..
|
|||
39
Злопчинский
06.12.11
✎
06:43
|
(38) ага, как же...
|
|||
40
MixanM
06.12.11
✎
06:45
|
Секундочку, я же говрю что Справчоник.ОКЕИ не подчинен, у него в графе "Подчинен" стоит : "не подчинено", я думаю с ним, как с подчиненым справочником и не стоит работать
|
|||
41
Злопчинский
06.12.11
✎
06:45
|
(37) автору в (34) идти надо, а то из того что он на словах объясняет видно, что (правильно замечено в (34)) слабо себе представляет проекцию метаданных (да и сами метаданные) на реальные объекты, и отображение реальных объектов на реквизиты формы.
|
|||
42
Злопчинский
06.12.11
✎
06:46
|
(40) а зачем ты тогда пишешь
СпрОкеи.ИспользоватьВладельца(СпрЕдиницы.ТекущийЭлемент()); . по принципу "попробую, вдруг получится" ..? |
|||
43
Злопчинский
06.12.11
✎
06:47
|
(40) я тебе в (20) написал практически готовый код - как встать на конкретный элмент справочника ОКЕИ, как его (элеент ОКЕИ)запихнуть в элемент Справочника.Единицы, а единицы впихнуть в номенклатуру...
|
|||
44
Злопчинский
06.12.11
✎
06:49
|
ладно, пойду я спать, скучно тут с вами
Успехов! |
|||
45
MixanM
06.12.11
✎
06:50
|
Я как раз ковыряю код, кот вы выложили выше, спс
|
|||
46
MixanM
06.12.11
✎
06:55
|
Спасибо, код чуток допилил и все работает кроме
Спр.СтавкаНДС = Перечисление.СтавкиНДС.ЗначениеПоИдентификатору("НДС18"); никто не подскажет кк правльно с перечислениями на форме работать? |
|||
47
Rie
06.12.11
✎
06:56
|
(46)
А почему не Перечисление.СтавкиНДС.НДС18? И что такое "работа с перечислениями на форме"? |
|||
48
ParaWiz
06.12.11
✎
06:59
|
(46) Например через СписокЗначений
|
|||
49
MixanM
06.12.11
✎
07:04
|
$на форме есть строка ввода, вот в ней и хочу выбрать ставку НДС, просто у нее тип : "перечисление"
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |