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

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

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

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

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

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

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

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

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

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

выбрать различные
    абонентыданные.ссылка как ссылка
из справочник.абоненты.данные как абонентыданные
где абонентыданные.типтелефона = &типтелефона

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