|
v7: ТиС добавление общего реквизита документа | ☑ | ||
---|---|---|---|---|
0
bug16
31.01.13
✎
16:43
|
Здрасти!
Такой вопрос, чем чревато добавление нового общего реквизита для документов? вообщем ситуация в следующем. В договоре создал новые реквизит для указания торгового представителя! Если в запросе обращаюсь например так: |ТОрговый= Регистр.Продажи. Покупатель.ТекущийДокумент.Договор.ТорговыйПредставитель; то получается ошибка. Если обращаться таким же образом в общий реквизит то ошибки нет. Так вот я создал новый общий реквизит и присвоил ему Договор.ТорговыйПредставитель! не вылезет это потом боком? |
|||
1
Ёпрст
31.01.13
✎
16:45
|
проще было реквизит в регистр воткнуть
|
|||
2
akaBrr
31.01.13
✎
16:46
|
(0) если данные берете из регистра, то и добавляйте измерение или реквизит в регистр, в зависимости от целей
|
|||
3
bug16
31.01.13
✎
16:48
|
а почему править лучше регистр?
|
|||
4
PALESIA
31.01.13
✎
16:51
|
(0) текст запроса может кинешь?
|
|||
5
Mikeware
31.01.13
✎
16:53
|
Все зависит от соотношения радиусов...
но на мой взгляд - "общий реквизит" - не самое лучшее решение. хотя и возможное... |
|||
6
KUBIK
31.01.13
✎
16:54
|
чем чревато добавление нового общего реквизита для документов = новые доп. тормоза
|
|||
7
bug16
31.01.13
✎
16:54
|
(4) ЧТо это даст? Мне не жалко )
Это отчет анализ продаж если че Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Период с ДатаНачала по ДатаКонца; |Фирма = Регистр.Продажи.Фирма; |УпрАналитика = Регистр.Продажи.Фирма.УпрАналитика; |ЮрЛицо = Регистр.Продажи.Фирма.ЮрЛицо; |Покупатель = Регистр.Продажи.Покупатель; |Торговый=Регистр.Продажи.ТекущийДокумент.ОбРеквТоргПредстав; |СвойствоПок = Регистр.Продажи.Покупатель.ОсновноеСвойство.ЗначениеСвойства; |Номенклатура = Регистр.Продажи.Номенклатура; |СвойствоТМЦ = Регистр.Продажи.Номенклатура.ОсновноеСвойство.ЗначениеСвойства; |Поставщик = Регистр.Продажи.Поставщик; |СвойствоПост = Регистр.Продажи.Поставщик.ОсновноеСвойство.ЗначениеСвойства;"; |
|||
8
Mikeware
31.01.13
✎
16:56
|
(6) если он е в индексе, не в графе - по пофиг
|
|||
9
bug16
31.01.13
✎
16:57
|
а почему не дает напрямую обратится к Договору... тобишь ТекущийДокумент.Договор
|
|||
10
PALESIA
31.01.13
✎
16:58
|
(7) это точно ничего не даст б.... весь запрос гони - чтобы видно было накуя тебе твой торговый представитель - нах из-за него регистр портить ...
|
|||
11
miki
31.01.13
✎
16:58
|
(8)Он же наверняка его последним добавит...
|
|||
12
Mikeware
31.01.13
✎
16:59
|
(9) а\патамушта неизвестно, есть ли у ТекущегоДокумента реквизит Договор... а если и есть, то как он в данном случае называется...
|
|||
13
bug16
31.01.13
✎
17:01
|
(10) торгового добавляю, чтобы была возможность формировать дебиторку, анализ продаж в разрезе торгового представителя...
|
|||
14
bug16
31.01.13
✎
17:02
|
(12) отладчиком смотрел запрос, есть такой реквизит.. ТекушийДокумент.Договор
|
|||
15
PALESIA
31.01.13
✎
17:03
|
(0) короче ни разу не телепат. если не олень, то поимеешь из ентого пользу:
НужныйПредставитель = ...; ТекстЗапроса = " ... ТОрговый= Регистр.Продажи.Покупатель.ТекущийДокумент; Условие(ТОрговый.Договор.ТорговыйПредставитель = НужныйПредставитель)"; |
|||
16
Mikeware
31.01.13
✎
17:06
|
(14) у одного ТекущегоДокумента есть, у другого - нет..
|
|||
17
miki
31.01.13
✎
17:10
|
(0)
Привяжи торгпреда к контрагенту, а не к договору, как вариант. |
|||
18
bug16
31.01.13
✎
17:11
|
(17) с одним контрагентов могут работать два торговых.. ((
(15) что ж так грубо, олень не олень.. щас попробую... |
|||
19
PALESIA
31.01.13
✎
17:12
|
(17) Договор обычно у всех доков по Контрагерам регистра продаж есть ... хотя хз чего у него там дописано - не выдавишь)
|
|||
20
PALESIA
31.01.13
✎
17:13
|
(18) нифига не грубо: тебя код просили - вообщет ты сам в (0) должен был его кинуть, - а ты огрызок ничего не значащий скинул ...
|
|||
21
bug16
31.01.13
✎
17:18
|
Процедура Сформировать(ЗакрытьДиалог=0)
Перем Запрос, ТекстЗапроса; Если глПроверкаДаты(ДатаНачала,ДатаКонца)=0 Тогда Возврат; КонецЕсли; Если (ТипЗначенияСтр(Таб) <> "Таблица") ИЛИ (Обновить = 0) Тогда Таб = СоздатьОбъект("Таблица"); Иначе Таб.Очистить(); КонецЕсли; Таб.ИсходнаяТаблица( "АнализПродаж" ); // Здесь формируется отчет, который использует регистры, критичные к // последовательности проведения документов // поэтому сравним установленные даты периода формируемого отчета с ГП Если глПроверкаАктуальностиОтчета(ДатаНачала,ДатаКонца,Последовательность.ОсновнаяПоследовательность)=0 Тогда Возврат; КонецЕсли; Расшифровка = СоздатьОбъект("СписокЗначений"); Расшифровка.Установить("Отчет", "АнализПродаж"); // все настройки помещаем в список Расшифровка.Установить("ДатаНачала", ДатаНачала); Расшифровка.Установить("ДатаКонца", ДатаКонца); Расшифровка.Установить("ВыбРазделитель1",ВыбРазделитель1); Расшифровка.Установить("ВыбРазделитель2",ВыбРазделитель2); Расшифровка.Установить("ВыбРазделитель3",ВыбРазделитель3); Расшифровка.Установить("ВидРазделителя",ВидРазделителя); Расшифровка.Установить("ВыбТМЦ", ВыбТМЦ); Расшифровка.Установить("ВыбПокупатель", ВыбПокупатель); Расшифровка.Установить("ВыбПоставщик", ВыбПоставщик); Расшифровка.Установить("Группировки", Группировки); Расшифровка.Установить("ВидЕдиницы", ВидЕдиницы); Расшифровка.Установить("ПоГруппам", ПоГруппам); //////////// //////2013 Расшифровка.Установить("ВыбТорговыеПредставители", ВыбТорговыеПредставители); ///////////// /////////// Расшифровка.Установить("ВыбСвойствоТМЦ", ВыбСвойствоТМЦ); Расшифровка.Установить("ВыбСвойствоПокупателя", ВыбСвойствоПокупателя); Расшифровка.Установить("ВыбСвойствоПоставщика", ВыбСвойствоПоставщика); глПриСменеСтрокиТаблицыМФ(1,ТекСтрокаВТаблице,Контекст); // записываем изменения если они были // запомним МФ только если он задан Если глМножественныйФильтрЗадан(ТаблицаМФ) = 1 Тогда Расшифровка.Установить("ТаблицаМФ", ТаблицаМФ); КонецЕсли; //Создание объекта типа Запрос Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Период с ДатаНачала по ДатаКонца; |Фирма = Регистр.Продажи.Фирма; |УпрАналитика = Регистр.Продажи.Фирма.УпрАналитика; |ЮрЛицо = Регистр.Продажи.Фирма.ЮрЛицо; |Покупатель = Регистр.Продажи.Покупатель; ////////////// ///////2013 //|Торговый=Регистр.Продажи.ТекущийДокумент.ОбРеквТоргПредстав; |Торговый=Регистр.Продажи.ТекущийДокумент; |Условие (ТОрговый.Договор.ТорговыйПредставительДоговор = ВыбТорговыеПредставители); // Запрос.Торговый.Договор.ТорговыйПредставительДоговор /////////////// /////////////////// |СвойствоПок = Регистр.Продажи.Покупатель.ОсновноеСвойство.ЗначениеСвойства; |Номенклатура = Регистр.Продажи.Номенклатура; |СвойствоТМЦ = Регистр.Продажи.Номенклатура.ОсновноеСвойство.ЗначениеСвойства; |Поставщик = Регистр.Продажи.Поставщик; |СвойствоПост = Регистр.Продажи.Поставщик.ОсновноеСвойство.ЗначениеСвойства;"; ЕстьАвтор = 0; ЕстьПроект = 0; НомСтроки = 0; НомКолонки = 0; // Проверка на необходимость включения в запрос переменной "Автор" // Сначала проверим, есть ли множественный фильтр по автору. Если ТаблицаМФ.НайтиЗначение("Автор", НомСтроки, НомКолонки) = 1 Тогда Если ТаблицаМФ.ПолучитьЗначение(НомСтроки, "ФлВкл") = 2 Тогда ЕстьАвтор = 1; КонецЕсли; КонецЕсли; // Если фильтра нет, то возможно есть группировка Если ЕстьАвтор = 0 Тогда НомСтроки = Группировки.НайтиЗначение("Автор"); Если НомСтроки > 0 Тогда Если Группировки.Пометка(НомСтроки)=1 Тогда ЕстьАвтор = 1; КонецЕсли; КонецЕсли; КонецЕсли; // Проверка на необходимость включения в запрос переменной "Проект" НомСтроки = 0; НомКолонки = 0; Если ТаблицаМФ.НайтиЗначение("Проект", НомСтроки, НомКолонки) = 1 Тогда Если ТаблицаМФ.ПолучитьЗначение(НомСтроки, "ФлВкл") = 2 Тогда ЕстьПроект = 1; КонецЕсли; КонецЕсли; Если ЕстьПроект = 0 Тогда НомСтроки = Группировки.НайтиЗначение("Проект"); Если НомСтроки > 0 Тогда Если Группировки.Пометка(НомСтроки)=1 Тогда ЕстьПроект = 1; КонецЕсли; КонецЕсли; КонецЕсли; Если ЕстьАвтор=1 Тогда ТекстЗапроса = ТекстЗапроса + " |Автор = Регистр.Продажи.ТекущийДокумент.Автор;"; КонецЕсли; Если ЕстьПроект=1 Тогда ТекстЗапроса = ТекстЗапроса + " |Проект = Регистр.Продажи.ТекущийДокумент.Проект;"; КонецЕсли; ТекстЗапроса = ТекстЗапроса + " |Себест = Регистр.Продажи.Себестоимость; |Количество = Регистр.Продажи.Количество; |ПродСт = Регистр.Продажи.ПродСтоимость; |СебестВ = Регистр.Продажи.СебестоимостьВ; |КоличествоВ = Регистр.Продажи.КоличествоВ; |ПродСтВ = Регистр.Продажи.ПродСтоимостьВ; |Функция СуммаСебест = Сумма(Себест); |Функция СуммаКоличество = Сумма(Количество); |Функция СуммаПродСт = Сумма(ПродСт); |Функция СуммаСебестВ = Сумма(СебестВ); |Функция СуммаКоличествоВ = Сумма(КоличествоВ); |Функция СуммаПродСтВ = Сумма(ПродСтВ);"; Загол=""; НетОш = 1; // нет ошибок при наложении фильтров Если ВидРазделителя = 1 Тогда НетОш = НетОш * глФильтрПоПеременнойЗапроса(ТаблицаМФ, "Фирма",ВыбРазделитель1,"ВыбРазделитель1",ТекстЗапроса,Загол); НетОш = НетОш * глФильтрПоПеременнойЗапроса(ТаблицаМФ, "ЮрЛицо",,,ТекстЗапроса,Загол); НетОш = НетОш * глФильтрПоПеременнойЗапроса(ТаблицаМФ, "УпрАналитика",,,ТекстЗапроса,Загол); ИначеЕсли ВидРазделителя = 2 Тогда НетОш = НетОш * глФильтрПоПеременнойЗапроса(ТаблицаМФ, "ЮрЛицо",ВыбРазделитель2,"ВыбРазделитель2",ТекстЗапроса,Загол); НетОш = НетОш * глФильтрПоПеременнойЗапроса(ТаблицаМФ, "Фирма",,,ТекстЗапроса,Загол); НетОш = НетОш * глФильтрПоПеременнойЗапроса(ТаблицаМФ, "УпрАналитика",,,ТекстЗапроса,Загол); ИначеЕсли ВидРазделителя = 3 Тогда НетОш = НетОш * глФильтрПоПеременнойЗапроса(ТаблицаМФ, "УпрАналитика",ВыбРазделитель3,"ВыбРазделитель3",ТекстЗапроса,Загол); НетОш = НетОш * глФильтрПоПеременнойЗапроса(ТаблицаМФ, "Фирма",,,ТекстЗапроса,Загол); НетОш = НетОш * глФильтрПоПеременнойЗапроса(ТаблицаМФ, "ЮрЛицо",,,ТекстЗапроса,Загол); КонецЕсли; НетОш = НетОш * глФильтрПоПеременнойЗапроса(ТаблицаМФ, "Номенклатура",ВыбТМЦ, "ВыбТМЦ",ТекстЗапроса,Загол,"СвойстваНоменклатуры"); НетОш = НетОш * глФильтрПоПеременнойЗапроса(ТаблицаМФ, "Поставщик", ВыбПоставщик, "ВыбПоставщик",ТекстЗапроса,Загол,"СвойстваКонтрагентов"); НетОш = НетОш * глФильтрПоПеременнойЗапроса(ТаблицаМФ, "Покупатель", ВыбПокупатель, "ВыбПокупатель",ТекстЗапроса,Загол,"СвойстваКонтрагентов"); ////////////// ///////2013 НетОш = НетОш * глФильтрПоПеременнойЗапроса(ТаблицаМФ, "ТОрговый", ВыбТорговыеПредставители, "ВыбТорговыеПредставители",ТекстЗапроса,Загол); //////////// ////////////// Если (ВыбСвойствоТМЦ.Выбран() = 1) Тогда НетОш = НетОш * глФильтрПоПеременнойЗапроса(ТаблицаМФ, "СвойствоТМЦ", ВыбСвойствоТМЦ, "ВыбСвойствоТМЦ", ТекстЗапроса,Загол); КонецЕсли; Если (ВыбСвойствоПоставщика.Выбран() = 1) Тогда НетОш = НетОш * глФильтрПоПеременнойЗапроса(ТаблицаМФ, "СвойствоПост",ВыбСвойствоПоставщика,"ВыбСвойствоПоставщика",ТекстЗапроса,Загол); КонецЕсли; Если (ВыбСвойствоПокупателя.Выбран() = 1) Тогда НетОш = НетОш * глФильтрПоПеременнойЗапроса(ТаблицаМФ, "СвойствоПок", ВыбСвойствоПокупателя,"ВыбСвойствоПокупателя",ТекстЗапроса,Загол); КонецЕсли; Если НетОш = 0 Тогда Возврат; КонецЕсли; НетОш = НетОш * глФильтрПоПеременнойЗапроса(ТаблицаМФ, "Автор", , ,ТекстЗапроса,Загол,"Автор"); НетОш = НетОш * глФильтрПоПеременнойЗапроса(ТаблицаМФ, "Проект", , ,ТекстЗапроса,Загол,"Проект"); ПечЗаголовок = "Анализ продаж ("+глДоллары.Наименование+")"; ПечЗаголовокСтолбца = ""; УстановитьГруппировкиЗапроса(ТекстЗапроса, ПечЗаголовокСтолбца); КоличествоГруппировок = СписокГруппировок.РазмерСписка(); Если КоличествоГруппировок > 5 Тогда Предупреждение("Нельзя сделать больше 5 группировок!",60); Возврат; КонецЕсли; // Если ошибка в запросе, то выход из процедуры Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; глЧислоСтрок = 0; Таб.ВывестиСекцию("Кнопки"); НачПовт = Таб.ВысотаСекции("Кнопки"); Таб.ВывестиСекцию("Шапка"); НачПовт = НачПовт + Таб.ВысотаСекции("Шапка"); Таб.ВывестиСекцию("ЗаголовокТаблицы"); КонПовт = НачПовт + Таб.ВысотаСекции("ЗаголовокТаблицы"); Таб.ПовторятьПриПечатиСтроки(НачПовт + 1, КонПовт); глОживить(1); Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0, "АнализПродаж", "АнализПродаж"); // ВЫВОД ГРУППИРОВОК ЗАПРОСА ВывестиГруппировку(Запрос,1); ПечатьСтроки(Запрос,0,"Всего","Всего:"); Таб.ОбластьПечати(3); // Вывод заполненной формы Таб.ТолькоПросмотр(1); Если глПолучитьПолномочие("РазрешитьРедактированиеТаблиц") = 0 Тогда Таб.Защита(1); КонецЕсли; Таб.Показать("Анализ продаж", ""); Если (Обновить = 2)ИЛИ(ЗакрытьДиалог=1) Тогда СтрокаДействийФормы = "#Закрыть"; КонецЕсли; КонецПроцедуры // Сформировать() |
|||
22
bug16
31.01.13
✎
17:20
|
в Договор добавил реквизит "ТорговыйПредставительДоговор"... на форму отчета кинул реквизит "ВыбТорговыеПредставители"
|
|||
23
Mikeware
31.01.13
✎
17:24
|
(21) а глобальник - слабО? :-)
|
|||
24
bug16
31.01.13
✎
17:24
|
(15) так то по идеи должно работать таким макаром... но ничего не выводит, и ошибки нету....
|
|||
25
bug16
31.01.13
✎
17:25
|
(23) да авно вопрос )))
|
|||
26
PALESIA
31.01.13
✎
17:26
|
(21) уже что-то))) там все верно сделано
(24) а ты фильтры проверь - там у тебя их через опоглобальную функцию понатыкано .... вообщем нет данных, удовлетворяющих условиям |
|||
27
bug16
31.01.13
✎
17:30
|
(26) а вот таким то макаром работает
|Торговый=Регистр.Продажи.ТекущийДокумент.ОбРеквТоргПредстав; где ОбРеквТоргПредстав=Договор.ТорговыйПредставительДоговор значит фильтр получается работает правильно |
|||
28
bug16
31.01.13
✎
17:53
|
усё... получилось... сэнск PALESIA
|
|||
29
Злой Бобр
31.01.13
✎
17:58
|
(0) В документе договор невыбран. Добавь усливие на выбор доков только с выбранным договором и заработает.
|
|||
30
bug16
31.01.13
✎
18:00
|
(29) договор везде автоматом проставляется.... да все работает уже.. без дополнительных общих реквизитов....
|
|||
31
Boroda
31.01.13
✎
18:03
|
Еще в SQL варианте базы общий реквизит неогр.длины должен быть последним в списке.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |