Имя: Пароль:
1C
1С v8
проблемы с тч
,
0 Singenor
 
18.07.12
11:06
Запрос = Новый Запрос("ВЫБРАТЬ
                         |    УЮ_Сервис.Контрагент.ОсновнойДоговорКонтрагента.Наименование КАК Наименование,
                         |    УЮ_Сервис.Контрагент.ОсновнойДоговорКонтрагента.Дата КАК ДатаНач,
                         |    УЮ_Сервис.Контрагент.ОсновнойДоговорКонтрагента.СрокДействия КАК ДатаКон,
                         |    NULL КАК ОсновнойДоговорКонтрагентаСсылка,
                         |    NULL КАК Ссылка,
                         |    УЮ_Сервис.Контрагент.ОсновнойДоговорКонтрагента КАК договорформа,
                         |    УЮ_Сервис.Контрагент.ОсновнойДоговорКонтрагента.ВидВзаиморасчетов.Код КАК Код
                         |ИЗ
                         |    БизнесПроцесс.УЮ_Сервис КАК УЮ_Сервис
                         |
                         |ОБЪЕДИНИТЬ ВСЕ
                         |
                         |ВЫБРАТЬ
                         |    NULL,
                         |    NULL,
                         |    NULL,
                         |    Контрагенты.ОсновнойДоговорКонтрагента.Ссылка,
                         |    Контрагенты.Ссылка,
                         |    NULL,
                         |    NULL
                         |ИЗ
                         |    Справочник.Контрагенты КАК Контрагенты");
                         Выборка = Запрос.Выполнить().Выбрать();
                         //Если Выборка.Следующий() Тогда
                         Для Каждого стр из Выборка Цикл
                             Если Выборка.Код = "000000001" Тогда
                                 Если Выборка.ДатаКон > ЭтотОбъект.Дата Тогда
                                     ЭлементыФормы.ГиперСсылкаДоговорНаУслуги.ЦветТекста = WebЦвета.Зеленый;    
                                     ЭлементыФормы.ГиперСсылкаДоговорНаУслуги.Заголовок= "Долга нет " + СокрЛП(Выборка.Наименование);
                                 Иначе
                                     ЭлементыФормы.ГиперСсылкаДоговорНаУслуги.ЦветТекста = WebЦвета.Красный;
                                     ЭлементыФормы.ГиперСсылкаДоговорНаУслуги.Заголовок= "У вас долг" + СокрЛП(Выборка.Наименование);
                                     
                                 КонецЕсли;
                             КонецЕсли;
                             
                             Если Выборка.Код = "000000003" Тогда
                                 Если Выборка.ДатаКон > ЭтотОбъект.Дата Тогда
                                     ЭлементыФормы.НадписьПодпискаИТС.ЦветТекста = WebЦвета.Зеленый;
                                     ЭлементыФормы.НадписьПодпискаИТС.Заголовок= "Долга нет" + СокрЛП(Выборка.Наименование);
                                 Иначе
                                     ЭлементыФормы.НадписьПодпискаИТС.ЦветТекста = WebЦвета.Красный;
                                     ЭлементыФормы.НадписьПодпискаИТС.Заголовок= "Долга нет " + СокрЛП(Выборка.Наименование);
                                 КонецЕсли;
                             КонецЕсли;
                       
                         КонецЦикла;
1 Singenor
 
18.07.12
11:07
на строке
Для Каждого стр из Выборка Цикл
выдет ошибку итератор для значения не определен, почему? как испавиьт?
2 эцп
 
18.07.12
11:08
Пока Выборка.Следующий() Цикл
//тело цикла
КонецЦикла;
3 Maxus43
 
18.07.12
11:08
Выборка = Запрос.Выполнить().Выбрать().выгрузить();
4 Maxus43
 
18.07.12
11:09
всмысле:
Выборка = Запрос.Выполнить.выгрузить();
5 Alex S D
 
18.07.12
11:10
Пока Выборка.Следующий() Цикл
6 Alex S D
 
18.07.12
11:10
аа, было)
7 Singenor
 
18.07.12
11:17
всеравно не идет по ТЧ. в первом случае находит как нужно, когда идет цикл по 2 кругу, то значение тупо нулл, и все(
8 Maxus43
 
18.07.12
11:18
(7) не надо коментить нормальный код потомушта

//Если Выборка.Следующий() Тогда
верни назад
9 Singenor
 
18.07.12
11:22
(8) у меня сначала так было и все нормально формировало, нопонимаешь, если уменя в ТЧ 2 записи, он смотрит тока по одной, и ее и выводит внужное мне место, а вторую запись не трогает, а мне надо, чтоб он шел по тч, то есть так:
если код = "1" тогда
Переменная = значение 1
если код = "2" тогда
переменная = значение 2

в моем же случае, по коду, который я выше запостил, он видит просто, что код = 1, и записывает эту переменную. а у второй он видит чот код !=1 и не записывает ее
10 Alex S D
 
18.07.12
11:27
"а у второй он видит чот код !=1 и не записывает ее" а чему он равен?
11 Singenor
 
18.07.12
11:29
вот поиск по коду для первой переменной:

Если Выборка.Код = "000000001" Тогда
                                 Если Выборка.ДатаКон > ЭтотОбъект.Дата Тогда
                                     ЭлементыФормы.ГиперСсылкаДоговорНаУслуги.ЦветТекста = WebЦвета.Зеленый;    
                                     ЭлементыФормы.ГиперСсылкаДоговорНаУслуги.Заголовок= "Долга нет " + СокрЛП(Выборка.Наименование);
                                 Иначе
                                     ЭлементыФормы.ГиперСсылкаДоговорНаУслуги.ЦветТекста = WebЦвета.Красный;
                                     ЭлементыФормы.ГиперСсылкаДоговорНаУслуги.Заголовок= "У вас долг" + СокрЛП(Выборка.Наименование);
                                     
                                 КонецЕсли;
                             КонецЕсли;


вот поиск по коду для второй переменной:
Если Выборка.Код = "000000003" Тогда
                                 Если Выборка.ДатаКон > ЭтотОбъект.Дата Тогда
                                     ЭлементыФормы.НадписьПодпискаИТС.ЦветТекста = WebЦвета.Зеленый;
                                     ЭлементыФормы.НадписьПодпискаИТС.Заголовок= "Долга нет" + СокрЛП(Выборка.Наименование);
                                 Иначе
                                     ЭлементыФормы.НадписьПодпискаИТС.ЦветТекста = WebЦвета.Красный;
                                     ЭлементыФормы.НадписьПодпискаИТС.Заголовок= "Долга нет " + СокрЛП(Выборка.Наименование);
                                 КонецЕсли;
                             КонецЕсли;
12 Alex S D
 
18.07.12
11:31
(11) ну так только если Выборка.Код = "000000003" он и запишет твою так называемую переменную
13 Singenor
 
18.07.12
11:33
так у меня в ТЧ две записи, у одной код "00000001" у друой "0000003", и мне нужно, чтобы с кодом --1 он записывал в одну строчку, а с кодом ---3 в другую
14 Maxus43
 
18.07.12
11:34
|ОБЪЕДИНИТЬ ВСЕ
                         |
                         |ВЫБРАТЬ
                         |    NULL,
                         |    NULL,
                         |    NULL,
                         |    Контрагенты.ОсновнойДоговорКонтрагента.Ссылка,
                         |    Контрагенты.Ссылка,
                         |    NULL,
                         |    NULL
                         |ИЗ
                         |    Справочник.Контрагенты КАК Контрагенты");
вот это нафига вобще?
15 Alex S D
 
18.07.12
11:35
(13) ниче не понял.. в какую еще строчку записывал? судя по твоему коду , меняется надпись
16 Alex S D
 
18.07.12
11:35
отладчик включи короче
17 Singenor
 
18.07.12
11:37
ща короче скрин выложу
18 hhhh
 
18.07.12
11:44
(17) ну в общем 7 скринов ждем от тебя:

1. табличная часть УЮ_Сервис
2-3. Два этих контрагента на закладке договоры, чтобы мы могли посмотреть, какие у них основные договоры.
4-5. Два договора этих контрагентов, чтобы мы увидели, какие виды взаиморасчетов заданы.
6-7. Эти два вида взаиморасчетов, чтобы увидеть коды 1 и 3.

Кстати, что такое УЮ_Сервис? Это услуги проституток?
19 Singenor
 
18.07.12
11:45
http://s017.radikal.ru/i428/1207/cf/130f007bdbe8.jpg
Объясняю. Есть контрагент, при нажатии на него открывается справочник контрагентов, на одной из вкладок расположены договора контрагентов( справочник договоры контрагентов)
20 Singenor
 
18.07.12
11:47
http://s43.radikal.ru/i100/1207/1a/f52eb121654c.jpg
пи открытии договора контрагентов, видим его данные, по реквизиту: Видвзаиморасчетов мыи определяем, что куда пишется, коды ваиморасчетов расположены справа на скиншоте
21 Maxus43
 
18.07.12
11:47
тебе надо чтоб по всем договорам контрагента запрос был?
22 Singenor
 
18.07.12
11:49
(21) у контрагента имеется 1 договор ИТС(000003) , 1 договор по услугам(00001), нужно чтобы в графу справочная информация(справа в углу на форме) писались данные по соответствующим договорам, то есть в первую строчку писался договор, у кторого код взаиморасчетов 00003, во вторую (где "надпись подписка ИТС") писался договор с кодом 00001
23 Singenor
 
18.07.12
11:49
точнее наоборот:
ИТС - 0000003
услуги -0000001
24 hhhh
 
18.07.12
11:50
(19) так у тебя один контрагент? Так у него по-любому один основной договор. И у него один код. Не может быть у контрагента два основных договора.
25 Alex S D
 
18.07.12
11:50
(23) так ты ж 1 основной договор выбираешь..%
26 Singenor
 
18.07.12
11:51
(24) а если у меня 2 договора? один науслги, друго на ИТС?
27 Singenor
 
18.07.12
11:53
яведь ищу по коду взаимрасчетов, который в самих документах, так что мжно веь как-нибуь найти? тока не понимаю как(
28 hhhh
 
18.07.12
11:53
(26) стоп. У тебя здесь

УЮ_Сервис.Контрагент.ОсновнойДоговорКонтрагента

основной договор контрагента.
29 Singenor
 
18.07.12
11:56
(28) в запросе по другому не вытащить, там следующая хроноголия:
мне ведь нужно получить договор контрагента, то есть в запросе я иду в контрагент, и там ищу про договор, и ОсновнойДоговрконтрагента единственое, что есть пор договор(
30 salvator
 
18.07.12
11:58
(29) Соедини Контрагент и Договор по Владельцу
31 Singenor
 
18.07.12
11:58
мм, блин точно, основно догоор жирный, и идет поиск только по нему, отсотй, как бы сделать поиск по всем договорам?(
32 Maxus43
 
18.07.12
11:58
ВЫБРАТЬ
   ДоговорыКонтрагентов.Код,
   ДоговорыКонтрагентов.ВидВзаиморасчетов
ИЗ
   Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
ГДЕ
   ДоговорыКонтрагентов.Владелец = &Контрагент
   И (НЕ ДоговорыКонтрагентов.ПометкаУдаления)
33 salvator
 
18.07.12
11:59
+(32) И НЕ ДоговорыКонтрагентов.ЭтоГруппа
34 Singenor
 
18.07.12
12:09
Запрос = Новый Запрос("ВЫБРАТЬ
                          |    ДоговорыКонтрагентов.Наименование КАК Наименование,
                          |    ДоговорыКонтрагентов.Дата как ДатаНач,
                          |    ДоговорыКонтрагентов.СрокДействия как ДатаКон,
                          |    ДоговорыКонтрагентов.Код как Код,
                          |    ДоговорыКонтрагентов.ВидВзаиморасчетов
                          |ИЗ
                          |    Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
                          |ГДЕ
                          |    ДоговорыКонтрагентов.Владелец = &Контрагент
                         | И (НЕ ДоговорыКонтрагентов.ПометкаУдаления)");


что не так?
35 Singenor
 
18.07.12
12:10
параметр блин(
36 salvator
 
18.07.12
12:13
(34) Добавь (33)
37 Singenor
 
18.07.12
12:15
Запрос.УстановитьПараметр("владелец", ЭтотОбъект);
почему не правильно параметр задан?
38 salvator
 
18.07.12
12:16
(37) Ты что куришь? Посмотри внимательно на имя параметра в запросе.
39 Singenor
 
18.07.12
12:16
Запрос = Новый Запрос("ВЫБРАТЬ
                          |    ДоговорыКонтрагентов.Наименование КАК Наименование,
                          |    ДоговорыКонтрагентов.Дата как ДатаНач,
                          |    ДоговорыКонтрагентов.СрокДействия как ДатаКон,
                          |    ДоговорыКонтрагентов.Код как Код,
                          |    ДоговорыКонтрагентов.ВидВзаиморасчетов
                          |ИЗ
                          |    Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
                          |ГДЕ
                          |    ДоговорыКонтрагентов.Владелец = &Контрагент
                          | И НЕ ДоговорыКонтрагентов.ПометкаУдаления
                          | И НЕ ДоговорыКонтрагентов.ЭтоГруппа");
                          Запрос.УстановитьПараметр("Владелец", Контрагент);
40 zladenuw
 
18.07.12
12:17
Справочники.ДоговорыКонтрагентов.НайтиПоКоду(пКод,,,пКонтрагент);
41 Singenor
 
18.07.12
12:17
Запрос.УстановитьПараметр("контрагент", этотОбъект);
42 Singenor
 
18.07.12
12:18
(41)

{БизнесПроцесс.УЮ_Сервис.Форма.ФормаБизнесПроцесса.Форма(321)}: Ошибка при вызове метода контекста (Выполнить)
                          Выборка = Запрос.Выполнить().Выбрать();
по причине:
{(10, 32)}: Неверные параметры в операции сравнения. Нельзя сравнивать поля
неограниченной длины и поля несовместимых типов.
ДоговорыКонтрагентов.Владелец <<?>>= &Контрагент
43 Singenor
 
18.07.12
12:19
(38) ну имя параметра контрагент, и потом мы его выводит для ЭтотОбъект так веь7
44 zladenuw
 
18.07.12
12:19
Дог1 = Справочники.ДоговорыКонтрагентов.НайтиПоКоду("000000001",,,пКонтрагент);

Если Дог1.ДатаКон > Дата Тогда
   ЭлементыФормы.ГиперСсылкаДоговорНаУслуги.ЦветТекста = WebЦвета.Зеленый;    
   ЭлементыФормы.ГиперСсылкаДоговорНаУслуги.Заголовок= "Долга нет " + СокрЛП(Дог1.Наименование);
Иначе
   ЭлементыФормы.ГиперСсылкаДоговорНаУслуги.ЦветТекста = WebЦвета.Красный;
   ЭлементыФормы.ГиперСсылкаДоговорНаУслуги.Заголовок= "У вас долг" + СокрЛП(Дог1.Наименование);
КонецЕсли;

Дог2 = Справочники.ДоговорыКонтрагентов.НайтиПоКоду("000000003",,,пКонтрагент);
Если Дог2.ДатаКон > Дата Тогда
   ЭлементыФормы.НадписьПодпискаИТС.ЦветТекста = WebЦвета.Зеленый;
   ЭлементыФормы.НадписьПодпискаИТС.Заголовок= "Долга нет" + СокрЛП(Дог2.Наименование);
Иначе
   ЭлементыФормы.НадписьПодпискаИТС.ЦветТекста = WebЦвета.Красный;
   ЭлементыФормы.НадписьПодпискаИТС.Заголовок= "Долга нет " + СокрЛП(Дог2.Наименование);
КонецЕсли;
45 salvator
 
18.07.12
12:19
(42) Телепатирую: в ЭтотОбъект у тебя переменная не с типом Справочник.Контрагенты
46 zladenuw
 
18.07.12
12:20
(45) 100500 %)
47 Singenor
 
18.07.12
12:28
(45) не понимаю, че мне в параметр передать9
48 salvator
 
18.07.12
12:29
(47) Контрагента, вестимо.
49 Singenor
 
18.07.12
12:31
(48) Запрос.УстановитьПараметр("контрагент", этотОбъект);
а вмесот этотОбхект что мы должны подставиьт?
50 zladenuw
 
18.07.12
12:32
Вопрос. где ты выводишь информацию под долгу. явно не в форме контрагента и его договора, а в документе. тогда у тебя должен быть реквизит с типом СправочникСсылка.Контрагент
51 Singenor
 
18.07.12
12:35
так ладно, вроде выводятся сторчки, а как теперь при нажатии на гиперссылку открывался нужный документ?
до этого я в запросе указывал просто Основной договор КАК формадоговор, и затем в переменной, к примеру:
текДог = формаДоговор

и в процедуре открытия при нажатии писал так:

ОткрытьЗначение(ТекДог);
52 Singenor
 
18.07.12
12:37
все, разобрался, всем спасибо
53 zladenuw
 
18.07.12
12:37
неужели :)
54 Singenor
 
18.07.12
12:39
хотя появился ещенебольшой вопорс, как сдеаьт, чтобы информация в окне с гиперссылками менялась при выборе контрагета?
55 Singenor
 
18.07.12
12:39
я такпонимаю в при изменении контрагета в модуле?
56 Singenor
 
18.07.12
12:43
правильно пнимаю)
57 zladenuw
 
18.07.12
12:47
почему контрагента. у тебя форма документа ? в реквизит контрагента в событие при изменение
58 Singenor
 
18.07.12
12:54
(57) ну да, я это и имел ввиду, просто думал о друом)
59 Singenor
 
18.07.12
12:58
а как на ПФ вытащить данные из гиперссылки?оО
60 Singenor
 
18.07.12
13:13
И при нажатии на кнопку ОК, данные в этих гиперссылках не схраняются(
61 zladenuw
 
18.07.12
13:19
ну так блин обновить отображает и вызывай свою функцию по отображению долга. и выводи не наименование на  гипер ссылку а саму ссылку договора. тогда проблем не должно быть
62 Singenor
 
18.07.12
13:22
(61) пишу функцию, в которой идет появление этой надписи, и птом ее при изменнии контрагента вызываю тк ведь?
63 Singenor
 
18.07.12
13:24
(61)
1. как выдать ссылку сразунадокумент?
2. как сохранять полученный результат?
64 zladenuw
 
18.07.12
13:43
на какой документ ? долга ?
65 zladenuw
 
18.07.12
13:43
зачем сохранять при открытии будет запрос и будет тебе сразу ссылка
66 Singenor
 
18.07.12
13:59
(64) на документ договор контрагетов, в котором и долг порписывается
67 Singenor
 
18.07.12
14:04
ЭлементыФормы.ГиперСсылкаДоговорНаУслуги.Заголовок= "Долга нет " + Дог1.Ссылка;

так пердаю ссылку, но он не сохраняется се равно
68 zladenuw
 
18.07.12
14:05
то есть не сохраняет ?
69 Singenor
 
18.07.12
14:06
(68) нажимаю ОК, документ закрывается, открываю документ заного, и гиперссылокопяьт нет, щас скрин да
70 Singenor
 
18.07.12
14:06
м
71 zladenuw
 
18.07.12
14:06
при открытии вызывай свою функцию
72 zladenuw
 
18.07.12
14:06
в (65) я писал тебе об этом
73 Singenor
 
18.07.12
14:09
http://s017.radikal.ru/i415/1207/1a/b072b9dce12f.jpg
вот это при выборе контрагента, пишутся зеленыйего договора, ри нажатии на ОК зкрываетсяформа, потом открываем эту же фрму опять:
http://s001.radikal.ru/i193/1207/ff/c874b3d9db26.jpg
зеленые гиперссыки исчезли
74 Singenor
 
18.07.12
14:10
(71) так мне нужно, чтобы ссылки появлялись пи изменеии контрагета, чем они заполнятся, если я открываю, к примеру новый документ, а контрагента ещ не выбрал
75 zladenuw
 
18.07.12
14:10
Процедура ПриОткрытии()
   ЭлементыФормы.Надпись1.Значение = Справочники.Контрагенты.НайтиПоКоду("000003300").Ссылка;
КонецПроцедуры

Процедура Надпись1Нажатие(Элемент)
   Справочники.Контрагенты.НайтиПоНаименованию(Элемент.Значение).ПолучитьФорму().Открыть();
КонецПроцедуры
76 zladenuw
 
18.07.12
14:11
(74) чмд. проверки пишешь. у тебя 1 функция которая вызывается при открытие если это не новый документ, и при изменение контрагента и все. Включай мозг.
77 Singenor
 
18.07.12
14:14
одна функция которую я пмещаю в приоткрытии и пи изменении так веь7
78 Singenor
 
18.07.12
14:22
да,работает, только теперь если я ставлю договор на удаление, то зееная гиперссыкатак и остаетсявисеть, пока я не перезайду в документ
79 zladenuw
 
18.07.12
15:31
ну так добавь проверку. что если с пометкой удаление что бы не выбирался он вот и все
80 Singenor
 
18.07.12
15:36
(79)

Дог1 = Справочники.ДоговорыКонтрагентов.НайтиПоКоду("000000001");
   Если НЕ Дог1.ПометкаУдаления Тогда
       Если Дог1.СрокДействия > Дата Тогда
           ЭлементыФормы.ГиперСсылкаДоговорНаУслуги.ЦветТекста = WebЦвета.Зеленый;    
           ЭлементыФормы.ГиперСсылкаДоговорНаУслуги.Заголовок= "Долга нет " + Дог1.Ссылка;
       Иначе
           ЭлементыФормы.ГиперСсылкаДоговорНаУслуги.ЦветТекста = WebЦвета.Красный;
           ЭлементыФормы.ГиперСсылкаДоговорНаУслуги.Заголовок= "У вас долг" + Дог1.Ссылка;
       КонецЕсли;
   КонецЕсли;
81 Singenor
 
18.07.12
15:37
если пометка удаления, то тогда невыирается, но он все раво выбирается :)
82 zladenuw
 
18.07.12
15:37
можно и так
83 Singenor
 
18.07.12
15:40
(82)
1. есть 2 договора, при выборе контрагента они записываются зеленым цветом
2. если один из них зайти, и пометить на удаление, и перевыбрать контрагента, он все равно будет висеть зеленым.
3. Если же нажать на ОК, и открыть документ заного, тот договор, который помечен на удаление отображен не будет.

Я хочу, чтобы он не отображался, когда я перевыбираю контрагента, то есть ПРИизменении в форме я вызываю свою процедуру, часть которой я привел выше
84 zladenuw
 
18.07.12
15:40
ну так реализуй проверку.
85 Singenor
 
18.07.12
15:41
дополнитеьно в приизменении на форме контрагента?
86 salvator
 
18.07.12
15:41
(83) Позовите специалиста.
87 zladenuw
 
18.07.12
15:42
Дог1 = Справочники.ДоговорыКонтрагентов.НайтиПоКоду("000000001");
   Если НЕ Дог1.ПометкаУдаления Тогда
       Если Дог1.СрокДействия > Дата Тогда
           ЭлементыФормы.ГиперСсылкаДоговорНаУслуги.ЦветТекста = WebЦвета.Зеленый;    
           ЭлементыФормы.ГиперСсылкаДоговорНаУслуги.Заголовок= "Долга нет " + Дог1.Ссылка;
       Иначе
           ЭлементыФормы.ГиперСсылкаДоговорНаУслуги.ЦветТекста = WebЦвета.Красный;
           ЭлементыФормы.ГиперСсылкаДоговорНаУслуги.Заголовок= "У вас долг" + Дог1.Ссылка;
       КонецЕсли;
иначе
ЭлементыФормы.ГиперСсылкаДоговорНаУслуги.Заголовок = "";
   КонецЕсли;
88 Singenor
 
18.07.12
15:47
(87), бл это ведь элеметарно, жесть, туплю очень(
89 zladenuw
 
18.07.12
15:50
расслабь мозг.. пока учишься старайся не больше 4 часов кодить. а читать больше.
90 Singenor
 
18.07.12
15:53
(89) спасибо за помощь
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший