Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Как из запроса сравнить Полученное значение с существующим?

Как из запроса сравнить Полученное значение с существующим?
Я
   Mythe
 
15.06.20 - 09:47
У меня есть 2 справочника Абоненты и Типы телефонов.
В справочнике абоненты хранятся ФИО и в их ЧТ есть реквизит типы телефонов, которые выбираются из справочника типы телефонов.
Я смог получить наименование реквизита в ТЧ и ФИО в справочнике в котором я выбрал тип, данным кодом:
//Данные - название ТЧ
Для каждого СтрокаТабЧасти Из ЭтотОбъект.Данные цикл
   Если СтрокаТабЧасти.ТипТелефона = Справочники.ТипыТелефонов.НайтиПоНаименованию("Обычный") тогда            
        АбонентФИО = Ссылка.ПолучитьОбъект();                    
         Сообщить(СтрокаТабЧасти.ТипТелефона);
         Сообщить(АбонентФИО.Наименование);                
   КонецЕсли
КонецЦикла

Мне необходимо как то сравнить тип телефона который я указал в ТЧ и типом телефона в другом справочнике и если они совпадают, то в справочнике типы телефонов, в ТЧ совпавшего типа занести АбонентФИО.Наименование. Зарание спасибо кто сможет помочь
   maxipunchik
 
1 - 15.06.20 - 10:12
Не совсем понятна задача. Какая структура у второго справочника? Что с чем сравнивать?
   AAA
 
2 - 15.06.20 - 10:16
Значение из редактирумого объекта со значением в базе ?
   Mythe
 
3 - 15.06.20 - 10:22
В справочнике Абоненты находятся ФИО в которых есть ТЧ в которой указывается тип телефона к которому абонент подключен.
В справочнике Типы телефонов находятся сами типы и в их ТЧ находятся ФИО абонентов, которые подключены к конкретному типу.

Типа если У абонента 1 в ТЧ указан тип, к примеру, ОБЫЧНЫЙ то в справочнике типы телефонов нужно найти данный тип и в его ТЧ добавить ФИО абонента

Получается я смог определить какой тип я указываю у абонента (СтрокаТабЧасти.ТипТелефона) и смог определить у какого абонента я установил тип (АбонентФИО.Наименование).

Мне нужно как то сравнить тип который я указал у абонента и типом который указан в справочнике типы телефонов, если же они сопадают, то в данном типе, в табличную часть необходимо добавить данную строку  (АбонентФИО.Наименование).
   Mythe
 
4 - 15.06.20 - 10:25
В ТЧ Абонента тип телефона указан как ссылка на справочник типов телефонов и в ТЧ типов телефонов ФИО указанно как ссылка на справочник абонентов
   Mythe
 
5 - 15.06.20 - 10:31
Иерархия справочников следующая, не знаю поможет ли это, я не сильно разбираюсь в 1С:
Справочник - Абоненты     | ТипыТелефонов  
ТЧ - Данные               | Абоненты
Реквизит - ТипыТелефонов  | ФИО
   maxipunchik
 
6 - 15.06.20 - 10:47
Тут проще через запрос с итогами, наверное, будет, но, если продолжить твою мысль
Сначала Нужно запросом выбрать всех абонентов или перебрать справочник, но лучше запросом.

Дальше обходим каждый элемент справочника абонентов с примерно таким кодом:

Для каждого СтрокаТабЧасти Из ЭтотОбъект.Данные цикл
   Если СтрокаТабЧасти.ТипТелефона = Справочники.ТипыТелефонов.НайтиПоНаименованию("Обычный") тогда            

ТипСпр = Справочники.ТипыТелефонов.НайтиПоНаименованию(СтрокаТабЧасти.ТипТелефона);
Если ТипСпр <> Справочники.ТипыТелефонов.ПустаяСсылка Тогда
ТипОб = ТипСпр.ПолучитьОбъект();
НовСтр = ТипОб.Абоненты.Добавить();
НовСтр.ФИО = ЭтотОбъект;
ТипОб.Записать();
КонецЕсли;
              
   КонецЕсли
КонецЦикла
   D_E_S_131
 
7 - 15.06.20 - 11:31
Кто-нибудь посоветует уже вытащить запрос (Справочники.ТипыТелефонов.НайтиПоНаименованию("Обычный")) из цикла?
   Mythe
 
8 - 15.06.20 - 11:40
Как я его уберу если как раз таки циклом и ищется наименование, оно там не одно как бы
   dezss
 
9 - 15.06.20 - 11:40
Это что, создаем циклическую ссылку?
В ТЧ абонента хранится тип телефона, а в ТЧ типа телефона будем хранить ссылку на абонента?
А нефехоа это?
   dezss
 
10 - 15.06.20 - 11:41
(8) Например, вот так?
ОбычныйТипТелефона = Справочники.ТипыТелефонов.НайтиПоНаименованию("Обычный");

А в цикле сравниваешь с ОбычныйТипТелефона.
   Mythe
 
11 - 15.06.20 - 11:44
(10) А это не одно и тоже что если у меня в цикле будет искать по названию для каждого типа и то что я за цикл выведу поиск то все равно столько же раз мне придется указывать типы телефонов это и строк больше будет
   Mythe
 
12 - 15.06.20 - 11:45
(6) А то что ругается на пустую ссылку это норма? Типа не определено
   dezss
 
13 - 15.06.20 - 11:49
(12) Лучше скажи, какую задачу ты решаешь)
   Mythe
 
14 - 15.06.20 - 11:50
(13) В каком плане?
   D_E_S_131
 
15 - 15.06.20 - 11:53
(12) Справочники.ТипыТелефонов.ПустаяСсылка -> Справочники.ТипыТелефонов.Пустая()
   Mythe
 
16 - 15.06.20 - 11:58
(15) Метода пустая же нету
   dezss
 
17 - 15.06.20 - 12:05
(14) Чего ты хочешь добиться добавлением этой информации?
   Mythe
 
18 - 15.06.20 - 12:15
(17) Мне нужно чтобы в справочнике типы телефонов в ТЧ появлялся тот абонент которому я указал тип телефона в его ТЧ, если я правильно тебя понял то так.
   dezss
 
19 - 15.06.20 - 12:18
(18) Тогда тебе эту информацию стоит вытягивать из базы в момент открытия этого типа телефона.
Не дублируй инфу в базе, если это возможно.
   maxipunchik
 
20 - 15.06.20 - 12:20
(12) я на ходу накидал, посмотри в синтакс помощнике как правильно, скорее всего нужно писать ПустаяСсылка()
   maxipunchik
 
21 - 15.06.20 - 12:22
(7) Судя по задаче, ТС главное, чтобы отработало, пусть так сначала научится, зачем нагружать всякими запросами в цикле
   Mythe
 
22 - 15.06.20 - 12:23
(20) Если не сложно можешь объяснить что этот код должен был делать? А то я вообще не практически не понимаю синтаксис 1с
   Mythe
 
23 - 15.06.20 - 12:25
Мне препод сказал что, то что я хочу реализовать можно сделать только запросом и кодом никак, поэтому в топике написано как получить значение из запроса чтобы его можно было сравнить и чтобы обратится к ТЧ другого справочника
   Mythe
 
24 - 15.06.20 - 12:27
Если я скину ссылки на скрины может так будет более понятней что я хочу реализовать?
   dezss
 
25 - 15.06.20 - 12:32
(24) Что ты хочешь, понятно из (18).
Лучше собирай данные для вывода в момент открытия элемента справочника ТипыТелефонов.
Можешь туда вообще запихать динамический список, а таб часть выкинуть.
   Mythe
 
26 - 15.06.20 - 12:36
Справочник ТипыТелефонов тут же вообще не используется, я делаю при проведении в справочнике абоненты, либо я просто не понимаю что надо сделать
   maxipunchik
 
27 - 15.06.20 - 12:37
(22) Перебирает таб часть абонента, ищет элемент справочника типов телефонов по имени, получает объект для изменения и закидывает к нему в таб чать ссылку на абонента. Покажи преподу, скажи, что думаешь, что так тоже можно)
   Mythe
 
28 - 15.06.20 - 12:40
(26) У меня практически вся работа на абонентах завязана, при проведении абонента у меня должна появляться запись в ТЧ ТиповТелефонов, в ТЧ Льгот, и ТД мне бы сейчас на 1 элементе понять как это сделать и дальше все одно и тоже только немного поменять
   Mythe
 
29 - 15.06.20 - 12:42
(27) у меня же уже было реализовано то что я перебираю Абонентов и нахожу какой тип я указал в его телефоне и в каком абоненте я это указал
   Mythe
 
30 - 15.06.20 - 12:43
Мне же нужно как то обратиться к ТЧ в ДРУГОМ справочнике из модуля объектов Абоненты
 
 Рекламное место пустует
   Mythe
 
31 - 15.06.20 - 12:45
Чтобы сверяло то, что я указал у абонента с тем что есть в типах телефонов и в нужно реквизите в его ТЧ записывало абонента
   Mythe
 
32 - 15.06.20 - 12:45
Сорян что я так туплю, но чет как то тяжко
   МимохожийОднако
 
33 - 15.06.20 - 12:46
(26) что ты "проводишь"? Про документ ни слова.
   Mythe
 
34 - 15.06.20 - 12:47
При чет тут документ? (33)
   Mythe
 
35 - 15.06.20 - 12:47
Подумаешь ошибся в слове
   Mythe
 
36 - 15.06.20 - 12:47
речь то шла о справочниках
   dezss
 
37 - 15.06.20 - 14:15
(35) Терминология важна, иначе тебя не будут понимать, что и видно в данной теме.
(26) Ну ты в (18) написал, что в элементе справочника ТипыТелефонов хочешь видеть абонентов.
Вот и показывай их там, но не пиши туда, а просто показывай!
У тебя в абоненте уже есть тип телефона!
Ты вообще хоть что-то понимаешь в БД?
   Mythe
 
38 - 15.06.20 - 14:43
(37) В БД да, в 1с нихрена
   dezss
 
39 - 15.06.20 - 14:48
(38) Ну так смотри.
Ты в одной таблице, которая абонент, записываешь ссылку на другую, которая тип телефона.
А потом хочешь в табличку тип телефона записать абонента.

И у тебя получается, что тип телефона ссылается на абонента, а абонент на тип телефона. Нафига это?
Тебе же нужно просто показать в типе телефона абонентов, у которых есть такой тип телефйона?
Ну так при открытии типа телефона запросом выбираешь всех абонентов, у которых есть такой тип телефона и показываешь их. Все, задача решена.
   Mythe
 
40 - 15.06.20 - 14:54
(39) Это же делается в модуле объекта?
   D_E_S_131
 
41 - 15.06.20 - 15:00
(40) В начале на форме элемента справочника ТипТелефона создается элемент для отображения данных (напр. ДинамическийСписок). А потом уже у ДинамическогоСписка устанавливаешь параметр, который выберет нужные данные.
   dezss
 
42 - 15.06.20 - 15:19
(40) Вот в (41) человек правильно пишет.
Это просто отображение данных. Отображение - это форма.
В модуле объекта, как правило, располагают методы объекта для обработки данных.
   Mythe
 
43 - 15.06.20 - 15:27
(39) Спасибо
   Mythe
 
44 - 15.06.20 - 15:27
Теперь буду пытаться понять как этот запрос сделать
   dezss
 
45 - 15.06.20 - 15:32
(44)
Запрос простейший
выбрать различные 
    абонентыданные.ссылка как ссылка
из справочник.абоненты.данные как абонентыданные
где абонентыданные.типтелефона = &типтелефона

Что-то вроде того. Только не забудь параметр установить.
И лучше, чтобы был индекс по типтелефона в тч абнентов был. А то будет тормозить.
Ну и учиться-учиться и еще раз....ну ты понял)))
   Mythe
 
46 - 15.06.20 - 15:39
Справочник.ТипыТелефонов.Форма.ФормаЭлемента.Форма(4,17)}: Тип не определен (Запрос)
    Запрос = новый <<?>>Запрос; (Проверка: Тонкий клиент)
На форме получается нельзя что ли запросы делать?
   Mythe
 
47 - 15.06.20 - 15:49
(45) На форме получается нельзя запрос делать?
Если я пишу: Запрос = Новый Запрос. И выдает ошибку (46)
   FIXXXL
 
48 - 15.06.20 - 15:52
(46) НаСервере
   dezss
 
49 - 15.06.20 - 17:08
(46) Можно получить, но только в серверном контексте.
Т.е. перед процедурой/функцией должна быть директива компиляции &НаСервере или &НаСервереБезКонтекста.
Какая-то команда вызывает процедуру &НаКлиенте, а ты в этой процедуре вызови свою процедуру/функцию с одной из серверных директив.


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.