Имя: Пароль:
1C
1C 7.7
v7: Обратиться к владельцу текущего справочника
0 HbIXA
 
02.06.13
19:54
Структура такая

Книги (др.реквизиты)
Книги на руках ( дата выдачи(дата), книга(справочник.книги)

Есть документ при проведении которого делаю sql запрос Так вот как мне получить значения с справочника "Книги"?
1 Злопчинский
 
02.06.13
19:59
написанием кода, вестимо
2 HbIXA
 
02.06.13
20:00
Остроумно, а по существу
3 Злопчинский
 
02.06.13
20:07
КнигиНаРуках.Книга
4 Злопчинский
 
02.06.13
20:07
(2) вопрос задавай внятно. а не по еврейски
5 HbIXA
 
02.06.13
20:24
Мне нужно получить значения с владельца справочника книги.

Процедура ОбработкаПроведения()
   Спр=СоздатьОбъект("Справочник.КнигиНаРуках");  
   Спр.ИспользоватьВладельца(Читатель);
   ВыбратьСтроки();
   Пока ПолучитьСтроку()=1 Цикл
        ...
       
   ЗапросВБазу(Спр.Книга);
   КонецЦикла;
КонецПроцедуры


Вот почему то передает пустоту
// ЗапросВБазу(Спр.Книга);
6 HbIXA
 
02.06.13
20:34
Злопчинский, извиняюсь, тока начал в 1с вникать
7 mikecool
 
02.06.13
20:37
а где скл-запрос?
8 mikecool
 
02.06.13
20:38
да и в топике про пользователей ни слова
9 MaxS
 
02.06.13
20:39
(5) выбираются строки документа, а при чем тут Спр ?
10 HbIXA
 
02.06.13
20:45
mikecool, в функции ЗапросВБазу

mikecool, пользователи мне не нужны, мне сейчас нужно вытащить инфу из "Книги" через выбранный элемент в форме

MaxS, это я просто закинул,туда и надо передать Наименование со справочника книги
11 КапЛей
 
02.06.13
21:05
ЗапросВБазу(Спр.Книга)

РукаЛицо.jpg
12 HbIXA
 
02.06.13
21:14
КапЛей, не зная задачи, и выполения функции, пишешь бред
13 КапЛей
 
02.06.13
22:03
(12) а где-то описана задача?
14 КонецЦикла
 
02.06.13
22:04
Три раза читал сабж, ничего не понял
Давай еще разок попробуй
15 victor79
 
02.06.13
22:53
ЭлементСправочника.Владелец
В случае (5) есть спр.Владелец, равный Читатель.
А так же есть спр.Книга.Владелец, если элемент справочника книги имеет владельцев. Только что за владелец может быть у книги не понятно.
скл в (5) нет. И документа там нет. И суслика не видел, хотя в том что он есть я не сомневаюсь.
16 victor79
 
02.06.13
22:56
документ все же нашел. А суслика нет.
17 Злопчинский
 
02.06.13
23:00
Ныха, милять! тв программист или хрен с бугра?
Неотьемлемой сущностью программиста является умение логично мыслить и логично излагать. Ясное изложение свидетельствует о ясности понимания задачи. Нет таких качеств у тебя? - "Будь мужиком, осовободи землю!" (с) Фарит.
.
В школе ты учился или балду в штанах гонял?
вспомни как записывается задача
1. Дано: излагаются все сущности, последовательно, взаимосязанно.
2. Требуется: излагается что надо получить (а не что делать!)
3. Решение: проводится построение решения
.
У тебя п.1 - отсутствует, более чем полностью п.2 - отсуствует почти полностью, за редкими проблесками смысла, и то, который приходится телепатировать...
.
так что или включи мозг или
http://cs9931.userapi.com/u172301/-14/x_bdb9c1f5.jpg
18 victor79
 
02.06.13
23:01
но для спр выборка открыта не была.
19 HbIXA
 
02.06.13
23:12
Да я уже сам запутался, в общем задача такая, сделать сайт в котом будет инфа о книгах взятых в библиотеки.

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

Теперь к структуре библиотеки в 1с. Есть 3 справочника с которыми щас работаю, это Книги, КнигиНаРуках, ИнвентарныеНомера

КнигиНаРуках (Подчинен Читатели) - Реквизиты
- "Книга".Справочник.Книги
- "ИнвНом".Справочникю.ИнвентарныеНомера

Книги - Реквизиты
- "Наименование"
- и др

Читатели - Реквизиты
- пароль
- и др

ИнвентарныеНомера (Подчинен Книги) - Реквизиты
- ...

При проведении документа "ВыдачаКниги" мне в базу mysql нужно передать значения с Справочник.Книги и
Справочник.Читатели. Как мне передать при проводке в функцию запроса эти данные. Могу код обработки скинуть
20 Злопчинский
 
02.06.13
23:48
(19) Незачет
Автор, ты - дятел. редкостный.
"Есть 3 справочника с которыми щас работаю, это Книги, КнигиНаРуках, ИнвентарныеНомера"
- ниже всплывает справочник "Читатели".
- ниже мимоходом всплывает неупоминавшийся нигде выше документ "ВыдачаКниги".
.
имеем какую-то хреновую rовноподелку, которую ты настойчиво суешь нам в руки.
.
две попытки - два незачета.
.
бросай курить шьiшки и попытайся третий, последний раз...
21 HbIXA
 
02.06.13
23:59
Повторяю, можно сказать я второй день в 1с сижу, и что Вам не понятно в данном объяснении я недогоняю. Вроде все доступно.

Как мне получить значения книги и читателя из справочников?
22 Злопчинский
 
03.06.13
03:16
(21) ныха, мне непонятно откуда при упомянутых 3 справочниках внезапоно появляется 4-ый. мне непонятно - нахрена ты прилез на форум, если занимаешься второй день 1Синой? почитай книжки с месяц и задавай ВОПРОСЫ правильные, на которые тебе здесь ответят (повозят мордой по столу - принято тут так - но ответят, в сложных случаях - помогут). а вылазить на второй день на форум - это некомильфо. УЧИТЬ забесплатно и разжевывать - охотников особо нет, может кто-то и напряжется от скуки... Мне вот ремонт в квартире что-то никто забесплатно не рвется починить... я если я в трубах и вентиялях всего второй день - то я вообщем-то вызываю СПЕЦИАЛИСТА и плачу ему денежку...
.
Успехов в освовении!
23 HbIXA
 
03.06.13
14:34
Хорошо, конкретнее вопрос

Процедура ОбработкаПроведения()
   Спр=СоздатьОбъект("Справочник.КнигиНаРуках");  
   Спр.ИспользоватьВладельца(Читатель);
   ВыбратьСтроки();
   Пока ПолучитьСтроку()=1 Цикл
       Если ПустоеЗначение(ИнвНомер)=0 Тогда
           
           Если Спр.НайтиПоРеквизиту("ИнвНомер",ИнвНомер,0)=0 Тогда
               Спр.Новый();
               Спр.Книга=Книга;
               Спр.ИнвНомер=ИнвНомер;
               Спр.ДатаВыдачи=ДатаДок;
               Спр.Записать();
           КонецЕсли;  
           Если Константа.УчетПоместамХранения=Перечисление.Булево.Да Тогда
               МХ=СоздатьОбъект("Справочник.МестаХранения");
               Если МХ.НайтиПоКоду(0)=0 Тогда
                   МХ.Новый();
                   МХ.Код=0;
                   МХ.Наименование="Книга находится на руках";
                   МХ.Записать();
               КонецЕсли;    
               УстановитьРеквизитСправочника(ИнвНомер,"МестоХраненияКниги",МХ.ТекущийЭлемент(),ДатаДок,,,);
           КонецЕсли;
       Иначе
           Если Спр.НайтиПоРеквизиту("Книга",Книга,0)=0 Тогда
               Спр.Новый();
               Спр.Книга=Книга;
               Спр.ДатаВыдачи=ДатаДок;
               Спр.Записать();
           КонецЕсли;
       КонецЕсли;                                      
       
       ЗапросВБазу(Спр.Книга.ПолноеНаименование);
   КонецЦикла;
КонецПроцедуры

Выдает пустое значение - Спр.Книга.ПолноеНаименование

Структура - http://linkme.ufanet.ru/images/7503d3259cf3be4a0fdae5c6aefcbfd5.jpg
24 Mikeware
 
03.06.13
14:39
и где вопрос?
25 HbIXA
 
03.06.13
15:14
Почему выдает пустое значение - Спр.Книга.ПолноеНаименование, причем при отладчике работает нормально, не пусто.
26 Mikeware
 
03.06.13
15:15
(25) кто и где "выдает"?
27 Ёпрст
 
03.06.13
15:21
(23) выкини весь код и напиши так:

Процедура ОбработкаПроведения()
   ВыбратьСтроки();
   Пока ПолучитьСтроку()=1 Цик

         ЗапросВБазу(Книга);//ну можешь и строку передать Книга.ПолнНаименование
   КонецЦикла;
КонецПроцедуры

А за создание элементов в модуле проведения, нужно тапком о г ре б а т ь
28 Попытка1С
 
03.06.13
15:24
Помоему до создания СКЛ запроса ты слегка не готов..
29 HbIXA
 
03.06.13
15:25
конфу писал не я, мне щас нужно просто интеграцию с сайтом сделать, заработа Спр.Книга.ПолноеНаименование, проблема щас в процедуре, я понимаю что это все кастыли, пинать сильно не надо, мне щас главное чтобы работало, а потом уже за качество кода)

Что щас не так в процедуре? А именно почему переменная Книга при получении пустая?

Процедура ЗапросВБазу(Книга)
Connection = СоздатьОбъект("ADODB.Connection");
 
//Необходимые параметры для подключения
АдресСервера   = "localhost";  
НомерПорта     = "3306";    
ИмяБД          = "test";    
Пользователь   = "root";    
Пароль         = "";

 //Подключаемся
Попытка      
   Connection.Open("Driver={MySQL ODBC 3.51 Driver};Server="+СокрЛП(АдресСервера)+";Port=" + НомерПорта + ";Database=" + СокрЛП(ИмяБД) + ";User=" + СокрЛП(Пользователь) + ";Password=" + Пароль + ";Option=3;STMT=SET CHARACTER SET cp1251");
   Сообщить("Подключение прошло успешно");  
Исключение
   Сообщить("Ошибка подключения - " + ОписаниеОшибки());  
   Возврат;
КонецПопытки;

Сообщить(Книга);
Command=СоздатьОбъект("ADODB.Command");
Command.CommandText = "set names cp1251";
Command.ActiveConnection = Connection;
Command.CommandType = 1;
Command.Execute();  

Command=СоздатьОбъект("ADODB.Command");                            
Запрос1 = "update dbname set book='тест' where id='1'";
//Запрос1 = "insert into dbname (book) values ()";
Command.CommandText = Запрос1;
Command.ActiveConnection = Connection;
Command.CommandType = 1;
Command.Execute();
                 
//Закрываем соединение.
Connection.Close();      
КонецПроцедуры
30 Попытка1С
 
03.06.13
15:28
Процедура ОбработкаПроведения()
   Спр=СоздатьОбъект("Справочник.КнигиНаРуках");  
   Спр.ИспользоватьВладельца(Читатель);
   ВыбратьСтроки();
   Пока ПолучитьСтроку()=1 Цикл
        ...
       
   ЗапросВБазу(Спр.Книга);
   КонецЦикла;
КонецПроцедуры


Вот почему то передает пустоту
// ЗапросВБазу(Спр.Книга);



Ты понимаешь что у тебя Спр.Книга тут а ты строчки перебераешь?
31 Попытка1С
 
03.06.13
15:30
Спр=СоздатьОбъект("Справочник.КнигиНаРуках");  
Спр.ИспользоватьВладельца(Читатель);
//вот тут тебе надо спозиционироваться чтобы у тебя хоть что-то было в Спр.Книга
Спр.ВыбратьЭлементы()
Спр.ПолучитьЭлемент()
Спр.НайтиПоКоду
Спр.НайтиПоНаименование
и прочее
32 Ёпрст
 
03.06.13
15:30
(29) Книга - ЭТО что у тебя ?
Есть такой реквизит в ТАБЛИЧНОЙ части документа, или нет ?
33 Mikeware
 
03.06.13
15:33
(29) проблема не в процедуре, проблема в ДНК.
34 vladko
 
03.06.13
15:38
(23) Покажи структуру твоего проводимого документа из конфигуратора. Похоже Ёпрст в (27) дело говорит.
35 vladko
 
03.06.13
15:39
а процедура ОбработкаПроведения в (23) очень ужасная
36 Ёпрст
 
03.06.13
15:40
Да и.. запросвСКуль для каждой строки - это п..ц (установка соединения и отдельный запрос), в общем всё в топку.
37 HbIXA
 
03.06.13
15:40
Попытка1С, Спр.Книга.ПолноеНаименование; - этим я получаю значение реквизита ПолноеНаименование справочника Книги, http://linkme.ufanet.ru/images/7503d3259cf3be4a0fdae5c6aefcbfd5.jpg, и щас все работает но только если я в цикле, а мне нужно щас передать в процедуру ЗапросВБазу, делаю так

КнигаД = Спр.Книга.ПолноеНаименование;                      
ЗапросВБазу(КнигаД);

В результате в процедуру ЗапросВБазу приходит пустое значение, а в цикле выводится норм, например "Книга22"
38 HbIXA
 
03.06.13
15:41
да разделю потом, мне щас понять бы эти мелочи
39 Ёпрст
 
03.06.13
15:50
На (32) есть ответ ?
40 HbIXA
 
03.06.13
15:53
Ёпрст, сделал проще,

Процедура ЗапросВБазу(КнигаД)
Сообщить(КнигаД);
КонецПроцедуры

В итоге в отладичке выводит норм, без него опять пусто
41 Ёпрст
 
03.06.13
15:59
Я рад за тебя, на (32) есть ответ ?
42 ЧеловекДуши
 
03.06.13
16:00
(12) Бред пишите вы :)
43 ЧеловекДуши
 
03.06.13
16:01
(29) Запрос СУПЕР! :)
44 ЧеловекДуши
 
03.06.13
16:03
(37) Если У полного наименования тип Строка (0 - неограниченной длины), то в запросе SQL ты не сможешь получить нужного эффекта, какой бы эффект ты бы нехотел, так и не понял, что вообще нужно автору :)
45 ЧеловекДуши
 
03.06.13
16:05
+ (0) Автор, отладчик, что съели?

ДобавИ в функцию "ЗапросВБазу" Строку

Процедура ЗапросВБазу(Книга)

Сообщить(""+СокрЛП(Книга)+"
|"+Строка(СтрДлина(СокрЛП(Книга))));
46 Chum
 
03.06.13
16:10
автор, ты бы пояснил что ты хочешь.
Что происходит у тебя в ЗапросВБАзу() и что туда передается?


   Спр=СоздатьОбъект("Справочник.КнигиНаРуках");   // создали объект
   Спр.ИспользоватьВладельца(Читатель); // определили владельца
   ВыбратьСтроки(); // это ТЧ
   Пока ПолучитьСтроку()=1 Цикл // по ТЧ
        ...
       // вот здесь нифига не происходит с позиционированием справочника
   ЗапросВБазу(Спр.Книга); // поэтому здесь пусто
   КонецЦикла;
КонецПроцедуры



Вообще все это похоже на лабораторную работу в каком-то г0вн0вузе
47 HbIXA
 
03.06.13
16:15
Всем спс, отдельное ЧеловекДуши, СокрЛП(Книга) заработало, сори за мозгоимения =)
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.