PDA

Просмотр полной версии : Что означает знак I в запросе?



developersvil
18.10.2018, 21:27
Я студентка. Изучаю 1С по лабам. Не могу сделать лабу с сайта http://www.1s-up.ru/konfiguracija-v-1c-8-3-odnoslojnaja-linejnaja-nejronnaja-set/
Может ли быть 2 запроса в одном Запрос.Текст? Что за знак такой |?

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

Ошибка инициализации модуля: ВнешняяОбработка.РаботаОд� �ослойнойСети.Форма.Форма.Ф орма
по причине:
{ВнешняяОбработка.РаботаОд нослойнойСети.Форма.Форма.� �орма(13,21)}: Пропущен символ '"' (двойная кавычка)
Запрос.Текст = "<<?>>
{ВнешняяОбработка.РаботаОд нослойнойСети.Форма.Форма.� �орма(13,21)}: Ожидается символ ';'
Запрос.Текст = "<<?>>
{ВнешняяОбработка.РаботаОд нослойнойСети.Форма.Форма.� �орма(14,10)}: Неопознанный оператор
ВЫБРАТЬ <<?>>ПЕРВЫЕ 1 ОднослойнаяЛинейнаяСетьНе йроны.Нейрон КАК Нейрон
{ВнешняяОбработка.РаботаОд нослойнойСети.Форма.Форма.� �орма(25,24)}: Неопознанный оператор
<<?>>НейронВесаНейрона.ВидВход� � КАК ВидВходногоСигнала,

developersvil
18.10.2018, 21:32
Конкатенация - нашла, но не поняла почему ошибка

developersvil
19.10.2018, 00:57
Разобралась - ошибок нет, но и не выводит ничего...


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

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

Пока Выборка.Следующий()
Цикл
НовСтр = Объект.ВходныеСигналы.Доба вить();
ЗаполнитьЗначенияСвойств(� �овСтр,Выборка);
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ОднослойнаяСетьПриИзменен ии(Элемент)
ОднослойнаяСетьПриИзменен ииНаСервере();

КонецПроцедуры



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

&НаКлиенте
Процедура Команда1(Команда)
// Вставить содержимое обработчика.
Команда1НаСервере();

КонецПроцедуры

dolp4in
19.10.2018, 02:36
Закиньте конфу на почту

Сергей Лима
19.10.2018, 02:58
Здравствуйте. да, такое может быть.
Знак - Это перенос текстовой строки, используется в запросе.

код ошибки, у вас Вообще - не из этого модуля.
Т.к. у Вас в запросе, предоставленном тут - не указано "ПЕРВЫЕ 1"
А вообще, очень интересное название переменных, хотелось бы увидеть саму конфигурацию, и само задание )

dolp4in
19.10.2018, 03:00
Возможно дело в этом "ЗаполнитьЗначенияСвойств(� �овСтр,Выборка);" надо через отладку смотреть

DoCaru
19.10.2018, 11:00
сейчас то проблема в чем? если есть ошибки - пиши, высылай на почту конфу

developersvil
19.10.2018, 23:18
Спасибо за отклики!!! Отправлю

developersvil
19.10.2018, 23:45
Конфиг и файл формы https://drive.google.com/drive/folders/19Xap7klKsUmZ3wNqePVB6WO2Mw-v7sYQ?usp=sharing
Объяснение, что в итоге http://www.1s-up.ru/konfiguracija-v-1c-8-3-odnoslojnaja-linejnaja-nejronnaja-set/

developersvil
28.10.2018, 12:37
Решила пошагово все запросы перебрать в конструкторе запросов. Не работает запрос:

Запрос.Текст = «ВЫБРАТЬ ПЕРВЫЕ 1
| ОднослойнаяНейроннаяСетьН ейроны.Нейрон КАК Нейрон
|ПОМЕСТИТЬ втНейрон
|ИЗ
| Справочник.ОднослойнаяНей� �оннаяСеть.Нейроны КАК ОднослойнаяНейроннаяСетьН ейроны
|ГДЕ
| ОднослойнаяНейроннаяСетьН ейроны.Ссылка = &НейроСеть
|
|ИНДЕКСИРОВАТЬ ПО
| Нейрон
|;
Есть Справочник ОднослойнаяНейроннаяСеть с табличной частью Нейроны и реквизитом табличной части Нейрон.
Теперь надо выбрать один из нейронов, но код и так не работает:

ВЫБРАТЬ ПЕРВЫЕ 1
| Справочник.ОднослойнаяНей� �оннаяСеть.Нейроны
Он выводит список всех значений из табличной части : Звери Птицы Рыбы
А надо выбрать один нейрон. Как?

developersvil
28.10.2018, 13:32
Рабочий код - но ничего не выводит все по нулям

ВЫБРАТЬ
ПЕРВЫЕ 1
ОднослойнаяНейроннаяСетьН ейроны.Нейрон КАК Нейрон
ПОМЕСТИТЬ втНейрон
ИЗ
Справочник.ОднослойнаяНей� �оннаяСеть.Нейроны КАК ОднослойнаяНейроннаяСетьН ейроны
ГДЕ
ОднослойнаяНейроннаяСетьН ейроны.Ссылка = &НейроСеть

ИНДЕКСИРОВАТЬ ПО
Нейрон
;
ВЫБРАТЬ
НейронВесаНейрона.ВидВход� � КАК ВидВходногоСигнала,
0 КАК ВходнойСигнал
ИЗ
Справочник.Нейрон.ВесаНейр она КАК НейронВесаНейрона
ГДЕ
НейронВесаНейрона.Ссылка В
(ВЫБРАТЬ
вт.Нейрон
ИЗ
втНейрон КАК вт);

developersvil
28.10.2018, 13:39
Во временной таблицу втНейрон нет ничего-вот и ошибка. Как ее исправить?

developersvil
28.10.2018, 13:49
ВЫБРАТЬ
ПЕРВЫЕ 1
ОднослойнаяНейроннаяСетьН ейроны.Нейрон КАК Нейрон
ПОМЕСТИТЬ втНейрон
ИЗ
Справочник.ОднослойнаяНей� �оннаяСеть.Нейроны КАК ОднослойнаяНейроннаяСетьН ейроны
ГДЕ
ОднослойнаяНейроннаяСетьН ейроны.Ссылка = &НейроСеть

//ИНДЕКСИРОВАТЬ ПО
// Нейрон
;
Первый запрос рабочий = в нем нейрон Звери во временной таблицк втНейрон.
Второй запрос не работает

developersvil
28.10.2018, 14:06
ГДЕ
НейронВесаНейрона.Ссылка В
(ВЫБРАТЬ
вт.Нейрон
ИЗ
втНейрон КАК вт);
Здесь ошибка - как правильно ссылку выбрать из таблицы?

developersvil
28.10.2018, 14:15
Ошибка в НейронВесаНейрона.Ссылка.Н аименование ... должно быть.
Рабочий код без ошибок



&НаСервере
Процедура ОднослойнаяСетьПриИзменен ииНаСервере()
// Вставить содержимое обработчика.
// Вставить содержимое обработчика.
//очищаем все таблицы значений
Объект.ВходныеСигналы.Очис тить();
Объект.ВыходныеСигналы.Очи стить();
//в запросе во временную таблицу записываем первый нейрон,
//выбранной нейросети
//а потом получаем все входы данного нейрона
// Запрос.УстановитьПараметр("НейроСеть",Объект.ОднослойнаяСеть);

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

Пока Выборка.Следующий()
Цикл
НовСтр = Объект.ВходныеСигналы.Доба вить();
ЗаполнитьЗначенияСвойств(� �овСтр,Выборка);
КонецЦикла;
КонецПроцедуры

&НаКлиенте
Процедура ОднослойнаяСетьПриИзменен ии(Элемент)
ОднослойнаяСетьПриИзменен ииНаСервере();
КонецПроцедуры

developersvil
28.10.2018, 17:01
Таблица значений - не справочник - как провериь ее работу в конструкторе ВходныеСигналы и Выходные сигналы не считаются


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

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

avm3110
29.10.2018, 12:24
В конструкторе - никак.
можно лишь использовать для этих целей связку - "отладчик - внешняя обработка с конструктором запроса"
Если так уже интересно, скачайте и поставльте например эту фичу - http://devtool1c.ucoz.ru/

И там вызывая в отладчике консоль запросов, вы сможете уже отладить свой запрос при использовании ТаблицыЗначений