Форум программистов, компьютерный форум, киберфорум
Наши страницы
1С: Собственные программы
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
ropsa
0 / 0 / 0
Регистрация: 17.04.2015
Сообщений: 120
1

Обратиться к ячейке табличной части

29.03.2016, 16:32. Просмотров 1026. Ответов 15
Метки нет (Все метки)

Здравствуйте! Такая проблема.... В табличную часть обработки выбирается абонент из справочника, и автоматически подгружается лицевой счет. Далее нужно, чтобы по этому лицевому счету программа через запрос искала телефон и долг абонента, и поставляла эти данные в строку. Каким образом мне обратиться к Лицевому счету?
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
&НаКлиенте 
Процедура ТелефоныАбонентПриИзменении(Элемент)
    СтрокаТабличнойЧасти=Элементы.Телефоны.ТекущиеДанные; 
    ЛицевойСчет=СтрокаТабличнойЧасти.ЛицевойСчет; 
    Телефон="";
    Долг="";
     ДобавитьВТЧ(Телефон, Долг, ЛицевойСчет);
        СтрокаТабличнойЧасти.Телефон=Телефон;
        СтрокаТабличнойЧасти.Долг=Долг;
         КонецПроцедуры
&НаСервере 
Функция ДобавитьВТЧ(Телефон, Долг, ЛицевойСчет)
        
                Запрос = Новый Запрос(
        "ВЫБРАТЬ
        |   КонтактнаяИнформация.Объект КАК Абонент,
        |   КонтактнаяИнформация.ТипКонтактнойИнформации КАК ТИп,
        |   КонтактнаяИнформация.ВидКонтактнойИнформации КАК Вид,
        |   КонтактнаяИнформация.Представление КАК Телефон,
        |   КонтактнаяИнформация.Объект.ЛицевойСчет КАК ЛицевойСчет,
        |   ВзаиморасчетыОстатки.Абонент КАК Абонент1,
        |   ВзаиморасчетыОстатки.Абонент.ЛицевойСчет как ЛицевойСчет1,
        |   ВзаиморасчетыОстатки.СуммаОстаток как Долг
        |ИЗ
        |   РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
        |       ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Взаиморасчеты.Остатки КАК ВзаиморасчетыВДГООстатки
        |       ПО КонтактнаяИнформация.Объект.ЛицевойСчет = ВзаиморасчетыОстатки.Абонент.ЛицевойСчет");
     Выборка=Запрос.Выполнить().Выбрать();
        Пока Выборка.Следующий() Цикл
            Если Выборка.ЛицевойСчет=ЛицевойСчет тогда
            Если Выборка.Вид=Справочники.ВидыКонтактнойИнформации.МобильныйТелефонАбонента тогда 
            Если Выборка.Телефон<>"" тогда
            Рус0=КодСимвола("0");
            Рус9=КодСимвола("9");
            Стр="";
            Для а = 1 По СтрДлина(Выборка.Телефон) Цикл
        КодСимвола = КодСимвола(Сред(Выборка.Телефон, а, 1));
        Цифра = Сред(Выборка.Телефон, а, 1);
        Если (КодСимвола >= Рус0 И КодСимвола <= Рус9) Тогда
            Стр = Стр + Цифра;
        КонецЕсли; 
            КонецЦикла;
            Телефон=Стр;
           Долг=Выборка.Долг;
               
       КонецЕсли;
       КонецЕсли;
       КонецЕсли;
        КонецЦикла;
        Возврат Телефон;
    Возврат Долг;
КонецФункции
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.03.2016, 16:32
Ответы с готовыми решениями:

Значение строки табличной части получить в табличной части другого документа
Есть документ ПриходнаяНакладная (товар приходит от поставщика по его цене), с табличной частью...

Автоматическое заполнение табличной части документа из табличной части другого
Добрый день. Совсем недавно начал изучать 1С и пока не могу найти решения собственной задачи)...

Программное заполнение табличной части документа из табличной части справочника
Доброго! Ситуация, поставившая меня в тупик. Имеем 1с 8.2 УФ Имеем справочник &quot;Работ&quot; Имеем...

Поиск в табличной части
Возможно ли добавить к табличной части поле поиска наподобие полнотекстового поиска, чтобы при...

Запрос к табличной части 1С
Пожалуйсто помогите, очень хочу разобраться. Студенты-справочник Курс- таблична часть его ...

15
GreenkA
Модератор
Эксперт 1С
2990 / 1911 / 520
Регистрация: 25.06.2009
Сообщений: 6,784
29.03.2016, 19:52 2

Не по теме:

ropsa, форматируйте ваш код, неудобно читать: в конфигураторе нажимаете ctrl+a(выделить все), потом alt+shift+f.


Вот эту часть кода лучше исправить:
1C
1
2
3
Если Выборка.ЛицевойСчет=ЛицевойСчет тогда
            Если Выборка.Вид=Справочники.ВидыКонтактнойИнформации.МобильныйТелефонАбонента тогда 
            Если Выборка.Телефон<>"" тогда
на
1C
1
2
Если Выборка.ЛицевойСчет=ЛицевойСчет И Выборка.Вид=Справочники.ВидыКонтактнойИнформации.МобильныйТелефонАбонента И
            Если Выборка.Телефон<>"" тогда
Про Лицевой счет:
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
   Запрос = Новый Запрос(
        "ВЫБРАТЬ
        |   КонтактнаяИнформация.Объект КАК Абонент,
        |   КонтактнаяИнформация.ТипКонтактнойИнформации КАК ТИп,
        |   КонтактнаяИнформация.ВидКонтактнойИнформации КАК Вид,
        |   КонтактнаяИнформация.Представление КАК Телефон,
        |   КонтактнаяИнформация.Объект.ЛицевойСчет КАК ЛицевойСчет,
        |   ВзаиморасчетыОстатки.Абонент КАК Абонент1,
        |   ВзаиморасчетыОстатки.Абонент.ЛицевойСчет как ЛицевойСчет1,
        |   ВзаиморасчетыОстатки.СуммаОстаток как Долг
        |ИЗ
        |   РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
        |       ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Взаиморасчеты.Остатки КАК ВзаиморасчетыВДГООстатки
        |       ПО КонтактнаяИнформация.Объект.ЛицевойСчет = ВзаиморасчетыОстатки.Абонент.ЛицевойСчет
        |ГДЕ  КонтактнаяИнформацияОбъект.ЛицевойСчет = &ЛицевойСчет");
     Запрос.УстановитьПараметр("ЛицевойСчет", ЛицевойСчет);
     Выборка=Запрос.Выполнить().Выбрать();
0
ropsa
0 / 0 / 0
Регистрация: 17.04.2015
Сообщений: 120
30.03.2016, 09:27  [ТС] 3
Просто условия новые появлялись, поэтому и писала отдельно, чтобы проще закомментировать было. А с лицевым счетом все равно не получается. Я предполагаю, что это из-за того, что он подгружается в таблицу при выборе абонента через ПутьКДанным и когда в процедуре ТелефоныАбонентПриИзменении(Элемент) я присваиваю Лицевому счету значение, то присваивается пустое значение. Не знаю как выйти из этой ситуации
0
GreenkA
Модератор
Эксперт 1С
2990 / 1911 / 520
Регистрация: 25.06.2009
Сообщений: 6,784
30.03.2016, 10:24 4
ropsa, это типовая конфигурация? Если да, то какая? Выложите вашу обработку.
0
ropsa
0 / 0 / 0
Регистрация: 17.04.2015
Сообщений: 120
30.03.2016, 10:30  [ТС] 5
нет, это, к сожалению, не типовая конфигурация, обработку не нужно выкладывать или все равно скинуть??
0
GreenkA
Модератор
Эксперт 1С
2990 / 1911 / 520
Регистрация: 25.06.2009
Сообщений: 6,784
30.03.2016, 10:32 6
ropsa, если можете выложите тогда базу или конфигурацию.
0
ropsa
0 / 0 / 0
Регистрация: 17.04.2015
Сообщений: 120
30.03.2016, 10:42  [ТС] 7
не могу выложить конфигурацию(
Я сейчас создам пустую базу тогда со справочником, где будет лицевой счет и абонент и обработка. В этой обработке нужно будет как то сделать, чтобы в сообщения выводился лицевой счет, а не пустое значение, тогда все получится, я уже пробовала задавать конкретный лицевой счет и все работало как надо
0
GreenkA
Модератор
Эксперт 1С
2990 / 1911 / 520
Регистрация: 25.06.2009
Сообщений: 6,784
30.03.2016, 10:58 8
Цитата Сообщение от ropsa Посмотреть сообщение
я уже пробовала задавать конкретный лицевой счет и все работало как надо
тогда в чем проблема?
0
ropsa
0 / 0 / 0
Регистрация: 17.04.2015
Сообщений: 120
30.03.2016, 11:00  [ТС] 9
Как то так...
Может быть возможно как то по-другому сделать, заранее спасибо!
0
Вложения
Тип файла: rar 30.03.rar (14.3 Кб, 1 просмотров)
ropsa
0 / 0 / 0
Регистрация: 17.04.2015
Сообщений: 120
30.03.2016, 11:03  [ТС] 10
Цитата Сообщение от GreenkO Посмотреть сообщение
тогда в чем проблема?
Ну я в программе прописывала не так:
ЛицевойСчет=СтрокаТабличнойЧасти.ЛицевойСчет;
а вот так
ЛицевойСчет=111;

Я программно задавала конкретный лицевой счет и, как вы понимаете, это абсолютно не удобно. Делала это просто для проверки, чтобы понять, в чем именно проблема
0
GreenkA
Модератор
Эксперт 1С
2990 / 1911 / 520
Регистрация: 25.06.2009
Сообщений: 6,784
30.03.2016, 11:07 11
ropsa, тогда проверьте соответствие Типов реквизита "ЛицевойСчет"
0
ropsa
0 / 0 / 0
Регистрация: 17.04.2015
Сообщений: 120
30.03.2016, 11:12  [ТС] 12
Проверила, там нужно было исправить, но теперь возвращает не пустое значение, а 0
0
GreenkA
Модератор
Эксперт 1С
2990 / 1911 / 520
Регистрация: 25.06.2009
Сообщений: 6,784
30.03.2016, 11:31 13
ropsa, в той базе, что вы прислали нет регистра КонтактнаяИнформация, а код в обработке закомменчен. Напишите полный код модуля формы обработки и что надо сделать. Подбирать лицевой счет из справочника Абоненты или КонтактнойИнформации?
0
ropsa
0 / 0 / 0
Регистрация: 17.04.2015
Сообщений: 120
30.03.2016, 11:46  [ТС] 14
Лицевой счет берется из справочника. При нажатии на кнопку "Добавить" на форме обработки, открывается справочник "Абоненты", выбирается абонент и записывается в табличную часть. Автоматически из справочника подгружается соответствующий лицевой счет. После, этот лицевой счет присваивается переменной "ЛицевойСчет" и с помощью "Сообщить (ЛицевойСчет)" я проверяю какое значение передалось. Нужно сделать так, чтобы передавался лицевой счет выбранного абонента. Если получится сделать так, чтобы в сообщениях отображался правильный лицевой счет, то в полной версии тоже все получится
1C
1
2
3
4
5
6
7
8
9
&НаКлиенте 
Процедура ТелефоныАбонентПриИзменении(Элемент)
    СтрокаТабличнойЧасти=Элементы.Телефоны.ТекущиеДанные; 
    ЛицевойСчет=СтрокаТабличнойЧасти.ЛицевойСчет; 
    Сообщить(ЛицевойСчет);
    Телефон="";
    Долг="";
    
КонецПроцедуры
0
GreenkA
Модератор
Эксперт 1С
2990 / 1911 / 520
Регистрация: 25.06.2009
Сообщений: 6,784
30.03.2016, 13:23 15
Лучший ответ Сообщение было отмечено ropsa как решение

Решение

ropsa,
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
&НаКлиенте 
Процедура ТелефоныАбонентПриИзменении(Элемент)
    СтрокаТабличнойЧасти=Элементы.Телефоны.ТекущиеДанные; 
    СтрокаТабличнойЧасти.ЛицевойСчет = ПолучитьЛицевойСчет(СтрокаТабличнойЧасти.Абонент);
    
    ЛицевойСчет=СтрокаТабличнойЧасти.ЛицевойСчет; 
    Сообщить(ЛицевойСчет);
    Телефон="";
    Долг="";
    
КонецПроцедуры
 
&НаСервереБезКонтекста
Функция ПолучитьЛицевойСчет(Абонент)
 Возврат Абонент.ЛицевойСчет;
КонецПроцедуры
1
ropsa
0 / 0 / 0
Регистрация: 17.04.2015
Сообщений: 120
30.03.2016, 13:49  [ТС] 16
Урааа!!! Все работает! Спасибо огромное!!!!
0
30.03.2016, 13:49
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.03.2016, 13:49

Автозаполнение табличной части
Добрый день, как поставить автозаполнение табличной части документа при выборе определённого...

Отбор в табличной части
Всем привет! На обычных формах в табличной части на форме можно делать отборы по определенным...

Загрузка табличной части
Всем привет. Возможно ли загрузить табличную часть одного документа (ранее созданного и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru