Имя: Пароль:
1C
1С v8
Колонка в справочнике "Контрагенты"
,
0 Pasha12312
 
01.07.13
09:36
Здравствуйте.
вот код , который должен заполнять долг в колонке "Задолженость":

Строки = ПолучитьСписокВТаблицу();
   Для Каждого Стр Из Строки Цикл
       
       Контрагент = Стр.НаименованиеПолное;
       КонтрагентСсылка = Справочники.Контрагенты.НайтиПоНаименованию(Контрагент);
       СтруктураОтбора = Новый Структура;
       СтруктураОтбора.Вставить("Контрагент", КонтрагентСсылка);
       Долг = РегистрыНакопления.ВзаиморасчетыКомпании.Остатки(,СтруктураОтбора,,"Сумма, СуммаУпр");
       Долг = Долг.Итог("Сумма");
       Стр.Задолженость = Число(Долг);
       
       Сообщить(Контрагент + " " + Долг);

   КонецЦикла;

.. ничего не заполняет, хотя все нужные значения там есть (для демонстрации вывел с помощью "Сообщить")
скажите , что неправильно?
http://firepic.org/images/2013-07/01/bubm76mqnpe9.png
1 Jonny_Khomich
 
01.07.13
09:38
(0) надо в ТЗ добавить колонку "задолженность".
2 Pasha12312
 
01.07.13
09:42
(1) а зачем?
я получаю нужный мне "Долг" и хочу добавить его в колонку.
Кстати, колонка "Задолженость" созданная не программно , а добавленна в реквизиты спр. "Контрагенты" (если это важно)
3 Рэйв
 
01.07.13
09:46
НаименованиеПолное может быть <>Наименование
и тогда

.НайтиПоНаименованию(Контрагент) вернет тебе пустую ссылку
4 Рэйв
 
01.07.13
09:46
а вообще откуда ты берешь наименования?  Из файла чтоли?
5 Pasha12312
 
01.07.13
09:48
(3) я проверял .. возвращает , то что нужно.
потому как колонка "Наименование" имеет  данные НаименованиеПолное.
6 Pasha12312
 
01.07.13
09:50
(4)Строки = ПолучитьСписокВТаблицу(); отсюда беру ТЗ


Функция ПолучитьСписокВТаблицу()
   Построитель = Новый ПостроительЗапроса;        
   Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(СправочникСписок);    
   Результат = Построитель.Результат;        
   ТаблицаЗначений = Результат.Выгрузить();    
   Возврат ТаблицаЗначений;        
КонецФункции
7 Рэйв
 
01.07.13
09:54
(6)Это ты так список контрагентов что ли получаешь?
8 Мимохожий Однако
 
01.07.13
09:54
Стр.Задолженость = Число(Долг);
       
       Сообщить(Контрагент + " " + Долг);
какой тип у колонки "Задолженость "?

Возможно, Число(Долг)= 0
Сделай, например
Сообщить(Контрагент + " ," + Долг+" ,"+Стр.Задолженость);
9 Cube
 
01.07.13
09:55
(0) Я так понял, тебе надо заполнить колонку в СправочникСписок?
Тогда ПриВыводеСтроки() или ПриПолученииДанных() через ОформлениеСтроки делай.
10 SanGvin
 
01.07.13
09:56
жесть в (0)
11 zak555
 
01.07.13
09:56
динамический список
12 Mitriy
 
01.07.13
09:56
чую я, что собака где-то тут порылась:
"Кстати, колонка "Задолженость" созданная не программно , а добавленна в реквизиты спр. "Контрагенты" (если это важно)"
13 Cube
 
01.07.13
09:59
(12) А , так он не указал Данные для колонки...
14 kosts
 
01.07.13
10:02
> Кстати, колонка "Задолженость" созданная не программно , а добавленна в реквизиты спр. "Контрагенты"

По моему скромному мнению, это очень плохо.
15 Pasha12312
 
01.07.13
10:03
(14) почему?
лучше программно сделать?
16 Pasha12312
 
01.07.13
10:03
(13) Данные указал (реквизит Задолженость)
17 Pasha12312
 
01.07.13
10:04
(8) тип у колонки Число
18 Pasha12312
 
01.07.13
10:06
(8)
При Сообщить(Контрагент + " ," + Долг+" ,"+Стр.Задолженость);
Выводит:

Основной поставщик ,0 ,0
Основной покупатель ,54,28 ,54,28
НовыйКонтрагент ,0 ,0
МойКонтрагентОпаОпа ,0 ,0
19 Cube
 
01.07.13
10:06
(16) Зачем тогда код вообще? Открой контрагента, введи задолженность и любуйся...
Но это быдлокод какой-то...
20 Pasha12312
 
01.07.13
10:07
(8) все правильно.
только почему не показывает в колонке?
21 Галахад
 
гуру
01.07.13
10:08
Код в (0) в какой процедуре?
22 kosts
 
01.07.13
10:08
(15) Перезапись справочника при проведении документов - это плохо (1). Невозможность отследить на конкретную дату (2). Невозможность увидеть по конкретным договорам (3).
23 Pasha12312
 
01.07.13
10:08
(19) не понял.
весь смысл в том , чтоб видеть задолженность при просмотре контрагентов в справочнике.
24 Pasha12312
 
01.07.13
10:10
(21) ПриОткритии()
так же пробовал - СписокПриПолученииДанных(Элемент, ОформленияСтрок)
25 MKZM
 
01.07.13
10:10
(20) А куда надо заносить справочник.задолженность или тз.задллженность и что где должно показывать
26 Мимохожий Однако
 
01.07.13
10:11
Посмотри как реализован вывод остатков товара в форме подбора Номенклатуры.
27 Pasha12312
 
01.07.13
10:11
(25) показать нужно в созданной колонке "Задолженость"
28 Mitriy
 
01.07.13
10:12
(24) просто колонку надо добавить в табполе и ее заполнять в при получении данных... реквизит из справочника убей...
29 kosts
 
01.07.13
10:12
(24) Реквизит добавлен только на форму или в метаданные, а то может я зря пугаю?...
30 Pasha12312
 
01.07.13
10:15
(29) был добавлен как реквизит справочника, уже удалил
31 Cube
 
01.07.13
10:22
(23) Ты остаток товара на складе доже будешь в реквизите номенклатуры хранить? Это плохой тон...
Реквизит создавать не нужно - добавляй колонку в список и заполняй как сказано в (9).
32 skiller3000
 
01.07.13
10:25
при получении данных или при выводе строки табличного поля делай запрос по контрагентам или если контрагентов много и скорость критична - через таблицу-значений со значением долга, обновляющуюся по подписке на регистр остатков взаиморасчетов.
33 kosts
 
01.07.13
10:28
> при выводе строки
Ни в коем случае не использовать.

>при получении данных
Получить все данные одном запросом, к тому же можно закэшировать, если не нужно каждый раз обновлять.
34 skiller3000
 
01.07.13
10:29
(33) ну я аналогичную задачу решал через подписку на изменение регистра взаиморасчетов и потом через глобальную таблицу значений получал остаток взаиморасчетов, который потом при получении данных подставлялся в форму.
35 Pasha12312
 
01.07.13
18:08
(9) (31) если делать через ОформлениеСтроки, как получать наименование контрагента (для отбора в регистре (при получении долга))
36 Pasha12312
 
01.07.13
18:09
СтруктураОтбора = Новый Структура;
           СтруктураОтбора.Вставить("Контрагент", КонтрагентСсылка);
           Долг = РегистрыНакопления.ВзаиморасчетыКомпании.Остатки(,СтруктураОтбора,,"Сумма, СуммаУпр");
           Долг = Долг.Итог("Сумма");
           ОформлениеСтроки.Ячейки.Задолженость.УстановитьТекст(Долг);
37 Pasha12312
 
01.07.13
18:10
КонтрагентСсылка - как сюда засунуть контрагента???
38 Pasha12312
 
01.07.13
18:16
скрин для наглядности.
http://firepic.org/images/2013-07/01/ofyg67pv9ewq.png
как получать контрагента?
39 Pasha12312
 
01.07.13
18:40
ОформлениеСтроки.Ячейки.НаименованиеПолное.Значение - так не получается
40 Pasha12312
 
01.07.13
18:51
тишина, то какая))))
41 AlexNew
 
01.07.13
19:03
Тут даже слов нет. Смотри ПриПолученииДанных(), а долг в цикле, правда думаете, что работать будет?
42 Pasha12312
 
01.07.13
20:09
(41) не совсем понял
43 AlexNew
 
01.07.13
20:14
(42) Дальше читать не надо, если не понял. ПроПолученииДынных Запрос с отбором и заполнение через оформление, хотя если 3 контрагента, достаточно ПриВыводеСтроки() (приложение обычное судя по всему).
44 hhhh
 
01.07.13
20:18
(42) ОформлениеСтроки.Ячейки.НаименованиеПолное.Текст
45 Pasha12312
 
01.07.13
20:24
(44) пусто
46 AlexNew
 
01.07.13
20:26
Опять СП, отладчик отобрали? Наверно за дело.
47 hhhh
 
01.07.13
20:29
(45) как пишете? как в (8)?
48 Pasha12312
 
01.07.13
20:34
Контрагент = ОформлениеСтроки.Ячейки.НаименованиеПолное.Текст;
           КонтрагентСсылка = Справочники.Контрагенты.НайтиПоНаименованию(Контрагент);
           СтруктураОтбора = Новый Структура;
           СтруктураОтбора.Вставить("Контрагент", КонтрагентСсылка);
           Долг = РегистрыНакопления.ВзаиморасчетыКомпании.Остатки(,СтруктураОтбора,,"Сумма, СуммаУпр");
           Долг = Долг.Итог("Сумма");
           ОформлениеСтроки.Ячейки.Задолженость.УстановитьТекст(Долг);
49 AlexNew
 
01.07.13
20:35
(48) Все, теперь точно бросай. Не твое, даже читать не умеешь, куда тут писать.
50 Pasha12312
 
01.07.13
20:40
(49) ))я первый раз такое делаю
51 AlexNew
 
01.07.13
20:41
Набери в поисковике ПриПолученииДанных
52 hhhh
 
01.07.13
21:59
(50)       СтруктураОтбора = Новый Структура;
           СтруктураОтбора.Вставить("Контрагент", ОформлениеСтроки.ДанныеСтроки.Ссылка);
53 Pasha12312
 
01.07.13
22:10
(52) спасибо большое , получилось.
54 Pasha12312
 
01.07.13
22:10
(51) вам тоже спасибо)
Закон Брукера: Даже маленькая практика стоит большой теории.