|
БП 1,6 ДокументЫ основания | ☑ | ||
---|---|---|---|---|
0
Gray776
13.08.13
✎
08:18
|
У меня вопрос я думаю довольно простой но вот никак не могу сообразить как сделать:
А именно как в БП 1,6 определить 1 док.Основание или несколько. Ну типа если 1 то и ладно если несколько то буду перебирать в цикле. |
|||
1
Starhan
13.08.13
✎
08:19
|
(0) Наверное есть табличная часть Документы основания, в случае если у дока есть несколько документов основания
и реквизит ДокументОснования если 1. Получается смотрим есть ли ТЧ и сколько там документов, если нет смотрим еть ли реквизит не? |
|||
2
Gray776
13.08.13
✎
08:19
|
P.S.: Блин совсем забыл: документы основания для Счетов фактур
|
|||
3
Gray776
13.08.13
✎
08:22
|
(1)Да есть табличная часть. Но она видима только если на форме галочку поставить "Список" А у самого счета фактуры реквизита такого нет он тока на форме.
|
|||
4
Gray776
13.08.13
✎
13:18
|
Если Документ.СчетФактура.ДокументыОснования.Количество()>1 Тогда
Хмм... вот так думаю определится со счетами фактуры имеющими больше одного основания. Верно? |
|||
5
wPa
13.08.13
✎
13:23
|
БП 1.6 %) не поддерживается с апреля 2011 года
|
|||
6
wPa
13.08.13
✎
13:23
|
(0) Запросом к ТЧ
|
|||
7
Gray776
13.08.13
✎
13:24
|
(5) Упс я спросил когда ее с поддержки сняли и даже сам не заметил где во делаааа...
|
|||
8
Gray776
13.08.13
✎
13:24
|
(6) Это когда буду перебирать докиОснования?
|
|||
9
wPa
13.08.13
✎
13:27
|
(7) просто интересно как вы баланс сдаете по старой форме и авансы переоцениваете )
(8) Количество() - такая агрегирующая функция |
|||
10
Gray776
13.08.13
✎
13:30
|
(9) :))) Незнаю я не бух я не сдаю отчеты... И даже не я решаю какую версию 1с использовать в организации :)))
|
|||
11
Starhan
13.08.13
✎
13:32
|
(10) надеюсь ты базу в живую видел. А то кто-то кому-то что-то неправильно передал и ты пилишь на 1.6 :).
Хотя есть большие организации с перепиленной БП 1.6 где допиливают регламентированные отчеты :) |
|||
12
Gray776
13.08.13
✎
13:33
|
(9)Я пытаюсь прикрутить недостающее до БП 1,6 ну по мере того что у меня бухи просят, или отправить их в основной офис просить перейти на более современную версию программы. :)))
Если честно задолбался до матершинного слова но повторюсь ни меня ни бухов не слушают и требуют делать все на том что есть |
|||
13
mistеr
13.08.13
✎
13:33
|
(0) В БП 2.0 ТЧ заполняется, даже если док-основание один. В 1.6 разве не так? Если так, то не вижу смысла определять, проще просто перебирать ТЧ. А еще лучше запросом.
|
|||
14
hhhh
13.08.13
✎
13:40
|
(12) ну ты им скажи, есть БП 3.0, покупать ее не надо, она у вас есть. Переходите и работайте. То есть у вас есть 1.6, 2.0 и 3.0. Это всё то, что есть.
|
|||
15
hhhh
13.08.13
✎
13:42
|
(14)+ или ты хотел с них бабки слупить за перевод? Сказал стоит миллион баксов, они и кочевряжатся?
|
|||
16
Gray776
13.08.13
✎
13:43
|
(11) Конечно видел. Переделываю малость журнал учета счетов фактур. И не спрашивайте как бухи до этого времени с этим вопросом справлялись не в курсе...
|
|||
17
Gray776
13.08.13
✎
13:48
|
(14)(15) Ну вроде как С Нового Года обещали на 3,0 переходить до этого времени работать с тем что есть ... Самый главный (О_о) программист в конторе так сказал (это не я) В 1С ведется несколько Организаций и перейти только одной организации на другую версию не дают. Ну я так их понял.
|
|||
18
Gray776
13.08.13
✎
13:50
|
Ну ладно буду пробовать что то более менее приемлемое изобразить из журнала...
|
|||
19
Gray776
13.08.13
✎
14:10
|
//********************
Если Документ.СчетФактура.ДокументыОснования.Количество()>1 Тогда Для Каждого СтрокаТЧ Из Документ.СчетФактура.ДокументыОснования Цикл Сообщить("Несколько оснований "+Документ.СчетФактура.ДокументыОснования[0].ДокументОснование); КонецЦикла; иначе Сообщить("Одно основание "+Документ.СчетФактура.ДокументыОснования[0].ДокументОснование); КонецЕсли; //******************** Кароче если кому интересно приблизительно об этом шла речь. Естественно просто сообщать где сколько оснований нафик не надо это типа отладки у меня такое... |
|||
20
Starhan
13.08.13
✎
14:13
|
(19) косяк
|
|||
21
Gray776
13.08.13
✎
14:14
|
(20)Где?
Сообщить("Несколько оснований "+Документ.СчетФактура.ДокументыОснования[0].ДокументОснование); Тут? |
|||
22
Gray776
13.08.13
✎
14:51
|
Блин точно почему удваивает количество строк не понимаю...
|
|||
23
hhhh
13.08.13
✎
15:01
|
правильнее
Если Документ.СчетФактура.ДокументыОснования.Количество()>0 Тогда |
|||
24
hhhh
13.08.13
✎
15:04
|
а, понял. не то
|
|||
25
hhhh
13.08.13
✎
15:06
|
вот это какой-то бред
Для Каждого СтрокаТЧ Из Документ.СчетФактура.ДокументыОснования Цикл Сообщить("Несколько оснований "+Документ.СчетФактура.ДокументыОснования[0].ДокументОснование); КонецЦикла; странный кусок |
|||
26
salvator
13.08.13
✎
15:08
|
Если Документ.СчетФактура.ДокументыОснования.Количество()>1 Тогда
Сообщить("Несколько оснований:"); Для Каждого СтрокаТЧ Из Документ.СчетФактура.ДокументыОснования Цикл Сообщить(""+СтрокаТЧ.ДокументОснование); КонецЦикла; иначе Сообщить("Одно основание "+Документ.СчетФактура.ДокументыОснования[0].ДокументОснование); КонецЕсли; |
|||
27
zbv
13.08.13
✎
15:08
|
А ведь может так быть, что основание одно, а строк в ТЧ - две, ссылка на один и тот же док. основание два раза... или исключено ?
|
|||
28
Gray776
13.08.13
✎
15:29
|
(27) Незнаю но я пробовал счетчик воткнуть выдавало:
первое основание второе основание первое основание второе основание А если цикл со счетчиком так вообще ошибка |
|||
29
Gray776
13.08.13
✎
15:36
|
(26) Что-то с этим кодом непонятное в чем фишка то?
наводит на мысль что цикл лишний а? Одно основание Поступление товаров и услуг *** от *** Несколько оснований: Поступление товаров и услуг 1859 от 26.05.2013 8:00:00 Поступление товаров и услуг 1860 от 26.05.2013 8:00:00 Несколько оснований: Поступление товаров и услуг 1859 от 26.05.2013 8:00:00 Поступление товаров и услуг 1860 от 26.05.2013 8:00:00 Одно основание Поступление товаров и услуг **** от **** |
|||
30
salvator
13.08.13
✎
15:37
|
(29) Значит у тебя это все еще в одном цикле крутится.
|
|||
31
Starhan
13.08.13
✎
15:37
|
(29) покажи как выборку документов получаешь
|
|||
32
Gray776
13.08.13
✎
15:48
|
(31)
Документ = СчетФактура.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока Документ.Следующий() Цикл **************************** **************************** //Тут ставлю условие // КонецЦикла; |
|||
33
salvator
13.08.13
✎
15:50
|
(32) Полностью код покажи.
|
|||
34
Gray776
13.08.13
✎
15:51
|
Кстати когда я пробовал индекс менять в цикле тоже самое получалось только в 4 строчки
Поменял цикл на цикл со счетчиком простой и в качестве индекса воткнул счетчик цикла выдает 2 строчки (Их столько и есть в табличной части) и потом ошибку пытается вывести третью строку которой нет |
|||
35
Gray776
13.08.13
✎
15:55
|
(34) То что между звездочками я добавлял, ну и вот весь код функции:
Функция ВыводСтрокиПолуч(СчетФактура, Секция, МассивПрефиксовДляРИБиОрганизации) Если СчетФактура.ОпределитьПараметрыСчетаФактуры Тогда УчетНДС.ПолучитьПараметрыСчетаФактуры(СчетФактура.СчетФактура, мВалютаРегламентированногоУчета, ПараметрыСФ); Секция.Параметры.Сумма = ?(ПараметрыСФ.СуммаДокумента = 0, "", Формат(ПараметрыСФ.СуммаДокумента, "ЧЦ=19; ЧДЦ=2")); ПредставлениеОснования = ""; УстановитьПараметры = Истина; Документ = СчетФактура.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока Документ.Следующий() Цикл Если Не Документ.СчетФактура.Проведен тогда // Не выводятся счета-фактуры, которые не проведены Если Не Непроведенные Тогда Продолжить; КонецЕсли; КонецЕсли; Если УстановитьПараметры Тогда УстановитьПараметры = Ложь; Секция.Параметры.Заполнить(Документ); КонецЕсли; Если НЕ ПустаяСтрока(ПредставлениеОснования) Тогда ПредставлениеОснования = ПредставлениеОснования + Символы.ПС; КонецЕсли; ПредставлениеТипа = ПолучитьПредставлениеПоТипу(ТипЗнч(Документ.ДокументОснование)); Если Не ПредставлениеТипа = Неопределено Тогда ПредставлениеОснования = ПредставлениеОснования + ПредставлениеТипа + " № " + ОбщегоНазначения.ПолучитьНомерНаПечать(Документ.ДокументОснование, МассивПрефиксовДляРИБиОрганизации) + " от "+ Формат(Документ.ДокументОснованиеДата, "ДФ=dd.MM.yyyy") + " г."; Иначе ПредставлениеОснования = ПредставлениеОснования + Строка(Документ.ДокументОснование); КонецЕсли; Секция.Параметры.ПредставлениеОснования = ПредставлениеОснования; Секция.Параметры.Контрагент = ПараметрыСФ.Контрагент; Если ЗначениеЗаполнено(ПараметрыСФ.Контрагент) Тогда Секция.Параметры.КонтрагентНаименование = ?(ПустаяСтрока(ПараметрыСФ.Контрагент.НаименованиеПолное),СокрЛП(ПараметрыСФ.Контрагент),СокрЛП(ПараметрыСФ.Контрагент.НаименованиеПолное)); КПП_пок = ПараметрыСФ.Контрагент.КПП; Если ЗначениеЗаполнено(КПП_пок) Тогда КПП_пок = " / " + КПП_пок; КонецЕсли; Секция.Параметры.ИННПокуп = ""+ПараметрыСФ.Контрагент.ИНН+КПП_пок; КонецЕсли; Если ТипЗнч(Документ.ДокументОснование) = Тип("ДокументСсылка.ГТДИмпорт") Тогда Секция.Параметры.Номер = "ГТД № " + Документ.НомерВходящегоДокумента; Иначе Секция.Параметры.Дата = Документ.НомерВходящегоДокумента; Секция.Параметры.Номер = Формат(Документ.ДатаВходящегоДокумента, "ДФ=dd.MM.yyyy"); Секция.Параметры.Дата2=Формат(Документ.ДатаРегистрации, "ДФ=dd.MM.yyyy"); Секция.Параметры.Валюта = ?(Документ.СуммаДокумента = 0,"","" + Документ.ВалютаДокумента.НаименованиеПолное + ", " + Документ.ВалютаДокумента.Код); КонецЕсли; КонецЦикла; Иначе Документ = СчетФактура.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); УстановитьПараметры = Истина; ПредставлениеОснования = ""; Пока Документ.Следующий() Цикл Если Не Документ.СчетФактура.Проведен тогда // Не выводятся счета-фактуры, которые не проведены Если Не Непроведенные Тогда Продолжить; КонецЕсли; КонецЕсли; Если УстановитьПараметры Тогда УстановитьПараметры = Ложь; Секция.Параметры.Заполнить(Документ); Секция.Параметры.Сумма = ?(СчетФактура.СуммаДокумента = 0, "", Формат(СчетФактура.СуммаДокумента, "ЧЦ=19; ЧДЦ=2")); Секция.Параметры.Валюта = ?(Документ.СуммаДокумента = 0,"","" + Документ.ВалютаДокумента.НаименованиеПолное + ", " + Документ.ВалютаДокумента.Код); КонецЕсли; Если НЕ ПустаяСтрока(ПредставлениеОснования) Тогда // //Секция.Параметры.ДокументОснование = Документ.ДокументОснование; //Иначе ПредставлениеОснования = ПредставлениеОснования+Символы.ПС; КонецЕсли; ПредставлениеТипа = ПолучитьПредставлениеПоТипу(ТипЗнч(Документ.ДокументОснование)); Если Не ПредставлениеТипа = Неопределено Тогда ПредставлениеОснования = ПредставлениеОснования + ПредставлениеТипа + " № " + ОбщегоНазначения.ПолучитьНомерНаПечать(Новый Структура("Организация, Номер", Организация, Документ.ДокументОснованиеНомер),МассивПрефиксовДляРИБиОрганизации) + " от " + Формат(Документ.ДокументОснованиеДата, "ДФ=dd.MM.yyyy") + " г."; Иначе ПредставлениеОснования = ПредставлениеОснования + Строка(Документ.ДокументОснование); КонецЕсли; Если ТипЗнч(Документ.ДокументОснование) = Тип("ДокументСсылка.ГТДИмпорт") Тогда Секция.Параметры.Номер = "ГТД № " + Документ.НомерВходящегоДокумента; Иначе Секция.Параметры.Дата = Формат(Документ.ДатаВходящегоДокумента, "ДФ=dd.MM.yyyy"); Секция.Параметры.Номер = "" + Документ.НомерВходящегоДокумента; Секция.Параметры.Дата2=Формат(Документ.ДатаРегистрации, "ДФ=dd.MM.yyyy"); КонецЕсли; //*********************************************************************************************************************** Если ТипЗнч(Документ.ДокументОснование) = Тип("ДокументСсылка.ОтражениеПоступленияТоваровИУслугНДС")Тогда СуммаНДС = Документ.ДокументОснование.ТоварыИУслуги.Итог("СуммаНДС"); Секция.Параметры.СуммаНДС=?(СуммаНДС>0,Формат(СуммаНДС, "ЧЦ=19; ЧДЦ=2"),"-"); ИначеЕсли ТипЗнч(Документ.ДокументОснование) = Тип("ДокументСсылка.ВозвратТоваровОтПокупателя") Тогда СуммаНДС=Документ.ДокументОснование.Товары.Итог("СуммаНДС"); Секция.Параметры.СуммаНДС=?(СуммаНДС>0,Формат(СуммаНДС, "ЧЦ=19; ЧДЦ=2"),"-"); ИначеЕсли Документ.ДокументОснование.УчитыватьНДС тогда СуммаНДС=Документ.ДокументОснование.Товары.Итог("СуммаНДС") + Документ.ДокументОснование.Услуги.Итог("СуммаНДС"); Секция.Параметры.СуммаНДС=?(СуммаНДС>0,Формат(СуммаНДС, "ЧЦ=19; ЧДЦ=2"),"-"); КонецЕсли; //*********************************************************************************************************************** КПП_пок = Документ.ДокументОснование.Контрагент.КПП; Если ЗначениеЗаполнено(КПП_пок) Тогда КПП_пок = " / " + КПП_пок; КонецЕсли; Секция.Параметры.ИННПокуп = ""+Документ.ДокументОснование.Контрагент.ИНН+КПП_пок; Секция.Параметры.КодОпер="01"; //всегда при поступлении товаров Если ТипЗнч(Документ.СчетФактура)= Тип("ДокументСсылка.СчетФактураПолученный") тогда Если Документ.СчетФактура.НаАванс тогда Секция.Параметры.КодОпер="02"; иначе Секция.Параметры.КодОпер="01"; конецЕсли; конецЕсли; //******************** Если Документ.СчетФактура.ДокументыОснования.Количество()>1 Тогда Сообщить("Несколько оснований:"); Для Каждого СтрокаТЧ Из Документ.СчетФактура.ДокументыОснования Цикл Сообщить(""+СтрокаТЧ.ДокументОснование); КонецЦикла; иначе Сообщить("Одно основание "+Документ.СчетФактура.ДокументыОснования[0].ДокументОснование); КонецЕсли; //Если Документ.СчетФактура.ДокументыОснования.Количество()>1 Тогда // Для ш=0 По Документ.СчетФактура.ДокументыОснования.Количество() Цикл // Сообщить("Несколько оснований "+Документ.СчетФактура.ДокументыОснования[ш].ДокументОснование); // КонецЦикла; //иначе // // Сообщить("Одно основание "+Документ.СчетФактура.ДокументыОснования[0].ДокументОснование); //КонецЕсли; //******************** КонецЦикла; //Секция.Параметры.ПредставлениеОснования = ПредставлениеОснования; КонецЕсли; Если ПустаяСтрока(ПредставлениеОснования) Тогда Возврат Ложь; КонецЕсли; Возврат Истина; КонецФункции //ВыводСтроки() |
|||
36
salvator
13.08.13
✎
16:09
|
В выборке результата запроса счета-фактуры есть повторяющиеся?
|
|||
37
hhhh
13.08.13
✎
16:12
|
(35) совершенно правильно у тебя работает.
Если два основания у счета фактуры, значить он будет выдаваться два раза, и в нем две строчки. Значит получим, 2х2 = 4. Должно выдать четыре сообщения. Оно тебе четыре и выдает. |
|||
38
salvator
13.08.13
✎
16:15
|
...
Иначе ... УстановитьПараметры = Истина; ... Пока Документ.Следующий() Цикл Если Не Документ.СчетФактура.Проведен тогда ... Если УстановитьПараметры Тогда УстановитьПараметры = Ложь; Что за ерундень? |
|||
39
Gray776
13.08.13
✎
16:18
|
(37) Я приблизительно так и подумал что удваивает но с вашего объяснения я не понял как с этим боротся :)
(38) Не я писал я только подправляю но я так нонимаю это относится к Общим модулям или нет? |
|||
40
Gray776
13.08.13
✎
16:19
|
(37) То что я писал "а цикл тут лишний"?
|
|||
41
salvator
13.08.13
✎
16:22
|
39) Причем тут общий модуль?
Сначала: УстановитьПараметры = Истина; Потом: Если УстановитьПараметры Тогда УстановитьПараметры = Ложь; В чем смысл сего действа? |
|||
42
hhhh
13.08.13
✎
16:25
|
(39) ну вот это
Документ = СчетФактура.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока Документ.Следующий() Цикл СчетФактура - это документы Реализации похоже и когда Если Документ.СчетФактура.ДокументыОснования.Количество()>1 Тогда Документ.СчетФактура дублируется. может массив счетов фактур вести и проверять, чтобы два раза не повторялись? |
|||
43
Gray776
13.08.13
✎
16:26
|
(41)Хмм я так понимаю смысл этого сменить значение истины на лож в переменной УстановитьПараметры
Нда блин буду теперь смотреть на что эти параметры влияют |
|||
44
hhhh
13.08.13
✎
16:27
|
вообще-то надо взять кувалду и настучать бухам по голове. Чтобы у них четко было соответствие. Один к одному.
|
|||
45
Gray776
13.08.13
✎
16:27
|
(42)(41) таксь кажется понял но надо все проверить
|
|||
46
Gray776
13.08.13
✎
16:28
|
(44) :))) самое дельное предложение
|
|||
47
salvator
13.08.13
✎
16:28
|
(45) Запрос такой же жуткий, как эта функция?
|
|||
48
Gray776
14.08.13
✎
07:20
|
А вот я тут подумал если документ даже и дублируется то почему вот это:
Если Документ.СчетФактура.ДокументыОснования.Количество()>1 Тогда Для ш=0 По Документ.СчетФактура.ДокументыОснования.Количество() Цикл Сообщить("Несколько оснований "+Документ.СчетФактура.ДокументыОснования[ш].ДокументОснование); КонецЦикла; иначе Сообщить("Одно основание "+Документ.СчетФактура.ДокументыОснования[0].ДокументОснование); КонецЕсли; Вылетает с ошибкой при попытке вывести 3ю из 2х строк? У меня теперь такое ощущение что Документ.СчетФактура.ДокументыОснования.Количество() Выдает неверное количество. Или именно про это и разговор? |
|||
49
Gray776
14.08.13
✎
07:31
|
(47) От он какой:
Функция ПодготовитьОтчетКВыводуНаПечатьПолуч() // Документы с реквизитом Предъявлен счет-фактура МассивДокументовСДаннымиСФ = УчетНДС.ПолучитьИменаДокументовСДаннымиСФ(); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | РеестрСчетовФактур.СчетФактура КАК СчетФактура, | РеестрСчетовФактур.ДатаРегистрации КАК ДатаРегистрации, | РеестрСчетовФактур.ДатаВходящегоДокумента, | РеестрСчетовФактур.НомерВходящегоДокумента, | РеестрСчетовФактур.СуммаДокумента, | РеестрСчетовФактур.ВалютаДокумента, | РеестрСчетовФактур.Контрагент, | ВЫБОР | КОГДА ПОДСТРОКА(РеестрСчетовФактур.Контрагент.НаименованиеПолное, 1, 250) = """" | ТОГДА РеестрСчетовФактур.Контрагент.Наименование | ИНАЧЕ ПОДСТРОКА(РеестрСчетовФактур.Контрагент.НаименованиеПолное, 1, 250) | КОНЕЦ КАК КонтрагентНаименование, | РеестрСчетовФактур.ДокументОснование, | РеестрСчетовФактур.ДокументОснованиеДата, | РеестрСчетовФактур.ДокументОснованиеНомер, | РеестрСчетовФактур.ОпределитьПараметрыСчетаФактуры |ИЗ | (ВЫБРАТЬ | СчетФактураПолученный.Ссылка КАК СчетФактура, | СчетФактураПолученный.Ссылка.Дата КАК ДатаРегистрации, | СчетФактураПолученный.ДокументОснование КАК ДокументОснование, | ВЫБОР | КОГДА СчетФактураПолученный.Ссылка.СформированПриВводеНачальныхОстатковНДС | ТОГДА СчетФактураПолученный.Ссылка.СуммаДокумента | КОГДА СчетФактураПолученный.Ссылка.НаАванс | ТОГДА СчетФактураПолученный.Ссылка.СуммаДокумента | ИНАЧЕ СчетФактураПолученный.ДокументОснование.СуммаДокумента | КОНЕЦ КАК СуммаДокумента, | СчетФактураПолученный.Ссылка.ДатаВходящегоДокумента КАК ДатаВходящегоДокумента, | СчетФактураПолученный.Ссылка.НомерВходящегоДокумента КАК НомерВходящегоДокумента, | ВЫБОР | КОГДА СчетФактураПолученный.Ссылка.НаАванс | ТОГДА СчетФактураПолученный.Ссылка.Контрагент | КОГДА СчетФактураПолученный.ДокументОснование ССЫЛКА Документ.АвансовыйОтчет | ТОГДА ВложенныйЗапрос.Контрагент | ИНАЧЕ СчетФактураПолученный.ДокументОснование.Контрагент | КОНЕЦ КАК Контрагент, | СчетФактураПолученный.ДокументОснование.ВалютаДокумента КАК ВалютаДокумента, | ВЫБОР | КОГДА НЕ СчетФактураПолученный.Ссылка.НаАванс И СчетФактураПолученный.ДокументОснование ССЫЛКА Документ.АвансовыйОтчет | ИЛИ СчетФактураПолученный.ДокументОснование ССЫЛКА Документ.ОтчетКомиссионераОПродажах | ТОГДА ИСТИНА | КОГДА НЕ СчетФактураПолученный.Ссылка.НаАванс И (СчетФактураПолученный.ДокументОснование.ДоговорКонтрагента.Владелец ЕСТЬ NULL | ИЛИ СчетФактураПолученный.ДокументОснование.СуммаДокумента ЕСТЬ NULL) | ТОГДА ИСТИНА | ИНАЧЕ ЛОЖЬ | КОНЕЦ КАК ОпределитьПараметрыСчетаФактуры, | СчетФактураПолученный.ДокументОснование.Дата КАК ДокументОснованиеДата, | СчетФактураПолученный.ДокументОснование.Номер КАК ДокументОснованиеНомер | ИЗ | Документ.СчетФактураПолученный.ДокументыОснования КАК СчетФактураПолученный | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РАЗЛИЧНЫЕ | КонтрагентПоАО.Ссылка КАК АО, | КонтрагентПоАО.СчетФактура КАК СчетФактура, | КонтрагентПоАО.Контрагент КАК Контрагент | ИЗ | (ВЫБРАТЬ | АвансовыйОтчетТовары.СчетФактура КАК СчетФактура, | АвансовыйОтчетТовары.Поставщик КАК Контрагент, | АвансовыйОтчетТовары.Ссылка КАК Ссылка | ИЗ | Документ.АвансовыйОтчет.Товары КАК АвансовыйОтчетТовары | | ОБЪЕДИНИТЬ ВСЕ | | ВЫБРАТЬ | АвансовыйОтчетПрочее.СчетФактура, | АвансовыйОтчетПрочее.Поставщик, | АвансовыйОтчетПрочее.Ссылка | ИЗ | Документ.АвансовыйОтчет.Прочее КАК АвансовыйОтчетПрочее) КАК КонтрагентПоАО) КАК ВложенныйЗапрос | ПО СчетФактураПолученный.ДокументОснование = ВложенныйЗапрос.АО | И СчетФактураПолученный.Ссылка = ВложенныйЗапрос.СчетФактура | ГДЕ | (НЕ СчетФактураПолученный.Ссылка.ПометкаУдаления) | И СчетФактураПолученный.Ссылка.Дата >= &НачалоПериода | И СчетФактураПолученный.Ссылка.Дата <= &КонецПериода | И СчетФактураПолученный.Ссылка.Организация = &Организация | | ОБЪЕДИНИТЬ ВСЕ | | ВЫБРАТЬ | ГТДИмпортТовары.Ссылка, | ГТДИмпортТовары.Ссылка.Дата, | ГТДИмпортТовары.Ссылка, | СУММА(ГТДИмпортТовары.ФактурнаяСтоимость), | NULL, | ГТДИмпортТовары.Ссылка.НомерГТД, | ГТДИмпортТовары.Ссылка.Контрагент, | ГТДИмпортТовары.Ссылка.ВалютаДокумента, | ЛОЖЬ, | ГТДИмпортТовары.Ссылка.Дата, | ГТДИмпортТовары.Ссылка.Номер | ИЗ | Документ.ГТДИмпорт.Товары КАК ГТДИмпортТовары | ГДЕ | (НЕ ГТДИмпортТовары.Ссылка.ПометкаУдаления) | И ГТДИмпортТовары.Ссылка.Дата >= &НачалоПериода | И ГТДИмпортТовары.Ссылка.Дата <= &КонецПериода | И ГТДИмпортТовары.Ссылка.Организация = &Организация | | СГРУППИРОВАТЬ ПО | ГТДИмпортТовары.Ссылка, | ГТДИмпортТовары.Ссылка.Дата, | ГТДИмпортТовары.Ссылка.НомерГТД, | ГТДИмпортТовары.Ссылка.Контрагент, | ГТДИмпортТовары.Ссылка.Номер, | ГТДИмпортТовары.Ссылка, | ГТДИмпортТовары.Ссылка.Дата"; Для Каждого ДокументСДаннымиСФ Из МассивДокументовСДаннымиСФ Цикл Запрос.Текст = Запрос.Текст + " | ОБЪЕДИНИТЬ ВСЕ | | ВЫБРАТЬ | ДокументСДаннымиСФ.Ссылка, | ДокументСДаннымиСФ.Дата, | ДокументСДаннымиСФ.Ссылка, | ДокументСДаннымиСФ." + ?(ТипЗнч(ДокументСДаннымиСФ) = Тип("Строка"), "СуммаДокумента", ДокументСДаннымиСФ["СуммаДокумента"]) + ", | ДокументСДаннымиСФ.ДатаВходящегоСчетаФактуры, | ДокументСДаннымиСФ.НомерВходящегоСчетаФактуры, | ДокументСДаннымиСФ.Контрагент, | ДокументСДаннымиСФ.ВалютаДокумента, | ЛОЖЬ, | ДокументСДаннымиСФ.Дата, | ДокументСДаннымиСФ.Номер | ИЗ | Документ." + ?(ТипЗнч(ДокументСДаннымиСФ) = Тип("Строка"), ДокументСДаннымиСФ, ДокументСДаннымиСФ["ИмяДокумента"]) + " КАК ДокументСДаннымиСФ | ГДЕ | (НЕ ДокументСДаннымиСФ.ПометкаУдаления) | И ДокументСДаннымиСФ.ПредъявленСчетФактура | И ДокументСДаннымиСФ.Дата >= &НачалоПериода | И ДокументСДаннымиСФ.Дата <= &КонецПериода | И ДокументСДаннымиСФ.Организация = &Организация"; КонецЦикла; Запрос.Текст = Запрос.Текст + ") КАК РеестрСчетовФактур |ГДЕ | ВЫБОР | КОГДА &ОтбиратьПоКонтрагенту | ТОГДА РеестрСчетовФактур.Контрагент В ИЕРАРХИИ (&КонтрагентДляОтбора) | ИНАЧЕ ИСТИНА | КОНЕЦ | |УПОРЯДОЧИТЬ ПО | ДатаРегистрации, | ДатаВходящегоДокумента |ИТОГИ | СУММА(СуммаДокумента), | МАКСИМУМ(ОпределитьПараметрыСчетаФактуры) |ПО СчетФактура"; Если не СформироватьОтчетПоСтандартнойФорме и ГруппироватьПоКонтрагентам Тогда Запрос.Текст = СтрЗаменить(Запрос.Текст," |ИТОГИ | СУММА(СуммаДокумента), | МАКСИМУМ(ОпределитьПараметрыСчетаФактуры) |ПО СчетФактура", " |ИТОГИ | СУММА(СуммаДокумента), | МАКСИМУМ(ОпределитьПараметрыСчетаФактуры) |ПО Контрагент, СчетФактура"); Запрос.Текст = СтрЗаменить(Запрос.Текст, "УПОРЯДОЧИТЬ ПО", "УПОРЯДОЧИТЬ ПО |КонтрагентНаименование, "); КонецЕсли; Запрос.УстановитьПараметр("НачалоПериода", НачалоПериода); Запрос.УстановитьПараметр("КонецПериода", КонецДня(КонецПериода)); Запрос.УстановитьПараметр("Организация", Организация); Запрос.УстановитьПараметр("ВалютаРегламентированногоУчета", мВалютаРегламентированногоУчета); Запрос.УстановитьПараметр("ОтбиратьПоКонтрагенту", не СформироватьОтчетПоСтандартнойФорме и ОтбиратьПоКонтрагенту и не КонтрагентДляОтбора = Справочники.Контрагенты.ПустаяСсылка()); Запрос.УстановитьПараметр("КонтрагентДляОтбора", КонтрагентДляОтбора); Возврат Запрос.Выполнить(); КонецФункции |
|||
50
Starhan
14.08.13
✎
08:05
|
(48)"Вылетает с ошибкой при попытке вывести 3ю из 2х строк?"
3ью из 2х строк может вывести только Чак Норрис. |
|||
51
Starhan
14.08.13
✎
08:08
|
(48) Для ш=0 По Документ.СчетФактура.ДокументыОснования.Количество() Цикл
-------- Индексы начинаются с нуля. А количество выдает строки считая с единицы. Сдается мне ты не лукавишь что как то связан с программированием. |
|||
52
Starhan
14.08.13
✎
08:08
|
лукавишь*
|
|||
53
Gray776
14.08.13
✎
08:49
|
(51) Связан, связан не беспокойся...
По некоторым чисто субъективным причинам, присутствует невнимательность. Программировать учился правда не на 1С а вообще. По сути Пофиг на каком языке писать алгоритм он и в Африке алгоритм. Когда попробовал что-то сделать в 1С оч понравилось что на русском процедуры с функциями правда было непривычно сча уже непривычно на не русском языке... То есть программировать приходится совсем редко и совсем чуть чуть... Хватка теряется... А касаемо цикла сча изображу например вот так: Для ш=0 По Документ.СчетФактура.ДокументыОснования.Количество()-1 Цикл и проверю Как ваще мне ние прокатит? :))) по моему нет |
|||
54
Gray776
14.08.13
✎
09:17
|
Кароче я сейчас немного поиздевался над кодом, уменьшения количества циклов на 1 избавляет от ошибки справится с которой под силу тока Чаку Норрису, но не избавляет от задваивания... Ковырять чужой код очень трудно приходилось не раз не хочу ... Сделаю проверку по номеру документа и хрен с ним...
|
|||
55
Gray776
14.08.13
✎
09:21
|
(54)З.Ы.: Постольку поскольку документ с двумя основаниями прогоняет 2 раза по основному циклу... Проверил, убедился, огорчился, плюнул...
|
|||
56
Gray776
14.08.13
✎
09:22
|
Изначально я парился с тем как отследить док с несколькими основаниями а не как цикл организовать так то ... а оно вишь как получилось блин
|
|||
57
Starhan
14.08.13
✎
09:25
|
ИМХО у тебя в выборке документы задвоены и идут подряд.
А точнее обход результата по группировкам с итогами по СЧ. Ты лучше из результата запроса выгрузи себе счета-фактуры и удали дубли. Если не хочешь в чужом коде разбираться. |
|||
58
Starhan
14.08.13
✎
09:26
|
по СЧ = по счет-фактуре*
|
|||
59
Starhan
14.08.13
✎
09:27
|
А хотя ....может ты вообще код свой не в том месте вставляешь. :(
|
|||
60
Gray776
14.08.13
✎
09:36
|
(59) как раз в том где надо, я пока отлаживаю на сообщениях, как будет выдавать то что надо внесу более полезные дейсвия в цикл...
|
|||
61
Starhan
14.08.13
✎
09:46
|
Документ = СчетФактура.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Поставь точку останова на этой строке и в Вычислении выражения набери СчетФактура.Выгрузить() И посмотри строки которые ты обходишь. У тебя обход по группировкам. А обхода подгруппировок нет. |
|||
62
Gray776
14.08.13
✎
09:55
|
(61) спасибо за совет сча попробую если интересно отпишусь ...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |