Имя: Пароль:
1C
Спам
Управляемые формы. Передача Результата запроса
0 Vyacheslav_UZ
 
11.07.16
13:43
Самописная конфигурация на 8.3

Не заполняет табличная часть. Заполняет только пустыми строками.


&НаКлиенте
Процедура ПриОткрытии(Отказ)
    ПриОткрытииНаСервере();
КонецПроцедуры

&НаСервере
Процедура ПриОткрытииНаСервере()
    
    Если ЭтаФорма.Объект.Валюта = Справочники.Валюты.ПустаяСсылка() Тогда
        ЭтаФорма.Объект.Валюта = Справочники.Валюты.UZS;
    КонецЕсли;
    
    Если ЭтаФорма.Объект.Валюта = Справочники.Валюты.UZS Тогда
        Элементы.Курс.Видимость = Ложь;
    Иначе
        Элементы.Курс.Видимость = Истина;
    КонецЕсли;
    
    Если ЭтаФорма.Объект.Курс = 0 Тогда
        ЭтаФорма.Объект.Курс = 1;
    КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура ВалютаПриИзменении(Элемент)
    ВалютаПриИзмененииНаСервере();
КонецПроцедуры

&НаСервере
Процедура ВалютаПриИзмененииНаСервере()
    Если ЭтаФорма.Объект.Валюта = Справочники.Валюты.UZS Тогда
        Элементы.Курс.Видимость = Ложь;
    Иначе
        Элементы.Курс.Видимость = Истина;
    КонецЕсли;
КонецПроцедуры


&НаКлиенте
Процедура Заполнить(Отказ)

    
    ВыбЗнач = Неопределено;
    Если ВвестиЗначение(ВыбЗнач, "Введите значение", "СправочникСсылка.МеждународныеНаименования") Тогда
        Сообщить("Введенное значение: "+ВыбЗнач);
    КонецЕсли;
    МеждународнееНаименование  = ВыбЗнач;
    РезультатЗапроса(МеждународнееНаименование);
    ЭтаФорма.Записать();
    
КонецПроцедуры

&НаСервере
Процедура РезультатЗапроса(МеждународнееНаименование)
    
    Объект.Медикаменты.Выгрузить();
    Объект.Медикаменты.Очистить();
    
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    Медикаменты.Наименование КАК Медикамент,
    |    Медикаменты.ФирмаСтранаПроизводитель,
    |    Медикаменты.ФармакотерапевтическаяГруппа,
    |    Медикаменты.ЛекарственнаяФорма,
    |    Медикаменты.МеждународнееНаименование
    |ИЗ
    |    Справочник.Медикаменты КАК Медикаменты
    |ГДЕ
    |    Медикаменты.МеждународнееНаименование = &МеждународнееНаименование";
    
    Запрос.УстановитьПараметр("МеждународнееНаименование", МеждународнееНаименование);
    РезультатЗапроса = Запрос.Выполнить();    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    ТЗ = Новый ТаблицаЗначений;
    ТЗ = РезультатЗапроса.Выгрузить();
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        Сообщить(?(НЕ(ЗначениеЗаполнено(ВыборкаДетальныеЗаписи.МеждународнееНаименование)),"НЕТ", ВыборкаДетальныеЗаписи.МеждународнееНаименование));
        Объект.Медикаменты.Загрузить(ТЗ);
        
    КонецЦикла;
    
    
КонецПроцедуры
1 Vyacheslav_UZ
 
11.07.16
13:44
Первый код пропустить***
2 Beretta
 
11.07.16
13:46
3 Vyacheslav_UZ
 
11.07.16
13:48
Beretta Вот лучше бы помогла, чем....
4 Vyacheslav_UZ
 
11.07.16
13:54
Beretta и я переписал так как мне сказали. Но все ровно не отрабатывает.
5 Beretta
 
11.07.16
13:57
(3) Я мальчик, мне можно.
6 Vyacheslav_UZ
 
11.07.16
13:59
Beretta сорян)
7 jsmith
 
11.07.16
14:01
(4) Понимаешь, ты тупишь по-черному. Ты пишешь ужасный код. Ты не догоняешь советы, которые тебе дают. Множишь темы на форуме.
8 jsmith
 
11.07.16
14:02
В первой ветке я написал тебе правильный код. Ты пропустил его мимо ушей и стал дальше гнать свою пургу. Даже объяснять что-то тебе уже накладно.
9 lodger
 
11.07.16
14:02
(2) ммм троица.
(4) ты явно читаешь через строчку или между строк.
а) не повезло той аптеке которой ты коньфу ломаешь.
б) не пишите в ПриОткрытии когда можно использовать ПриСозданииНаСервере.
в) Выгрузить перед Очистить не нужен.
г) ТЗ не надо объявлять перед подачей туда ТЗ из запроса.
д) ВыборкаДетальныеЗаписи.Следующий() и РезультатЗапроса.Выгрузить() вместе не используются. либо одно, либо другое.
е) чтобы Объект.Медикаменты.Загрузить(ТЗ) работало нужно чтобы колонки совпадали по именам и типам значений.

для начала хватит.
10 Vyacheslav_UZ
 
11.07.16
14:10
&НаКлиенте
Процедура Заполнить(Отказ)
    
    
    ВыбЗнач = Неопределено;
    Если ВвестиЗначение(ВыбЗнач, "Введите значение", "СправочникСсылка.МеждународныеНаименования") Тогда
        Сообщить("Введенное значение: "+ВыбЗнач);
    КонецЕсли;
    МеждународнееНаименование  = ВыбЗнач;
    РезультатЗапроса(МеждународнееНаименование);
    
КонецПроцедуры

&НаСервере
Процедура РезультатЗапроса(МеждународнееНаименование)
    
    ТЗ = Объект.Медикаменты.Выгрузить();
    Тз.Очистить();
    
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    Медикаменты.Наименование КАК Медикамент,
    |    Медикаменты.ФирмаСтранаПроизводитель,
    |    Медикаменты.ФармакотерапевтическаяГруппа,
    |    Медикаменты.ЛекарственнаяФорма,
    |    Медикаменты.МеждународнееНаименование
    |ИЗ
    |    Справочник.Медикаменты КАК Медикаменты
    |ГДЕ
    |    Медикаменты.МеждународнееНаименование = &МеждународнееНаименование";
    
    Запрос.УстановитьПараметр("МеждународнееНаименование", МеждународнееНаименование);
    
    ТЗ = Запрос.Выполнить().Выгрузить();
    Объект.Медикаменты.Загрузить(ТЗ);
    
КонецПроцедуры

Не чего не поменялось.
11 Fedor-1971
 
11.07.16
14:12
(0) такое чувство, что не прочитана ни одна книга про УФ, а кодить очень хочется.

Для начала разберись с УФ, книгу Радченко почитай, что-ли. В особенности обрати внимание на:
1. переход Сервер-Клиент и обратно (что можно передать, что нет)
2. как инициализируется форма (что НаСервере, что НаКлиенте)

В выложенном коде полная чехарда, по стилю написания - ОФ, без всякого понимания УФ. Как акын "что пришло в голову, то пишу в код"

(10) отладчиком проверь, что происходит в твоём коде. Как минимум - наименование колонок запроса и наименование колонок ТЧ.
12 hhhh
 
11.07.16
14:12
(10) вот это что?

ВЫБРАТЬ
    |    Медикаменты.Наименование КАК Медикамент,

почему наименование хреначите в медикамент. Ведь и ежу понятно, что медикамент - это никакое не наименование.
13 Vyacheslav_UZ
 
11.07.16
16:22
Как оказалось всё очень просто.Я запросом брал данные из справочника. А нужно было по всем справочникам взять их ссылка.Всем умникам и умницам спасибо.
    
///////////////////////////////////////////////////////
&НаКлиенте
Процедура Заполнить(Отказ)
    
    
    ВыбЗнач = Неопределено;
    Если ВвестиЗначение(ВыбЗнач, "Введите значение", "СправочникСсылка.МеждународныеНаименования") Тогда
        Сообщить("Введенное значение: "+ВыбЗнач);
    КонецЕсли;
    МеждународнееНаименование  = ВыбЗнач;
    РезультатЗапроса(МеждународнееНаименование);
    
КонецПроцедуры

&НаСервере
Процедура РезультатЗапроса(МеждународнееНаименование)
    
    ТЗ = Объект.Медикаменты.Выгрузить();
    Тз.Очистить();
    
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    Медикаменты.Ссылка КАК Медикамент,
    |    ФармакотерапевтическиеГруппы.Ссылка КАК ФармакотерапевтическиеГруппы,
    |    ЛекарственныеФормы.Ссылка КАК ЛекарственныеФормы,
    |    МеждународныеНаименования.Ссылка КАК МеждународныеНаименования,
    |    ФирмаСтранаПроизводители.Ссылка КАК ФирмаСтранаПроизводители
    |ИЗ
    |    Справочник.Медикаменты КАК Медикаменты
    |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ФармакотерапевтическиеГруппы КАК ФармакотерапевтическиеГруппы
    |        ПО Медикаменты.ФармакотерапевтическаяГруппа = ФармакотерапевтическиеГруппы.Ссылка
    |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ЛекарственныеФормы КАК ЛекарственныеФормы
    |        ПО Медикаменты.ЛекарственнаяФорма = ЛекарственныеФормы.Ссылка
    |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.МеждународныеНаименования КАК МеждународныеНаименования
    |        ПО Медикаменты.МеждународнееНаименование = МеждународныеНаименования.Ссылка
    |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ФирмаСтранаПроизводители КАК ФирмаСтранаПроизводители
    |        ПО Медикаменты.ФирмаСтранаПроизводитель = ФирмаСтранаПроизводители.Ссылка
    |ГДЕ
    |    Медикаменты.МеждународнееНаименование = &МеждународнееНаименование";
    
    Запрос.УстановитьПараметр("МеждународнееНаименование", МеждународнееНаименование);
    
    
    Результат = Запрос.Выполнить();
    
    ТЗ = Запрос.Выполнить().Выгрузить();
    Объект.Медикаменты.Загрузить(ТЗ);
    
КонецПроцедуры
14 lodger
 
11.07.16
16:49
мощно упрлс.
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.