Имя: Пароль:
1C
1С v8
Регистратор и документ движения - непонятка в запросе
0 grayshadow
 
21.02.13
22:05
8.2.16.362, Комплексная автоматизация 1.1.24.1. Пишу внешний отчет Движения денежных средств. Смысл - зарезать доступ определенному пользователю к операциям по подотчетникам, зарплате и т.д., оставить только оплаты покупателей и возвраты покупателям (пыталась забороть настройку прав доступа к регистру ДДС - неудачно...)
В регистре есть два РАЗНЫХ поля - Документ движения и Регистратор (не поняла, зачем надо, в базе нет случаев, когда в них пишутся разные доки). Регистратор прописан в запросе в секции Выбрать, Документ движения лезет из параметров виртуальной таблицы. Путаница, конечно, но б@г с ними, пусть будут оба.

Собственно в чем проблема. Копирую запрос с типового отчета, добавляю перед секцией {ГДЕ ...} свой отбор:

   |ГДЕ ((ИсточникДанных.Регистратор ССЫЛКА документ.ПлатежноеПоручениеВходящее
   |    и ИсточникДанных.Регистратор.ВидОперации = Значение(Перечисление.ВидыОперацийПоступлениеБезналичныхДенежныхСредств.ОплатаПокупателя))
   |    или (ИсточникДанных.Регистратор ССЫЛКА документ.ПлатежноеПоручениеИсходящее
   |    И ИсточникДанных.Регистратор.ВидОперации = Значение(Перечисление.ВидыОперацийППИсходящее.ВозвратДенежныхСредствПокупателю)))

Отчет показывает лишние документы с видом операции Выдача подотчетнику.

Добавляю то же самое, но по "документу движения":
   |И ((ИсточникДанных.ДокументДвижения ССЫЛКА документ.ПлатежноеПоручениеВходящее
   |    и ИсточникДанных.ДокументДвижения.ВидОперации = Значение(Перечисление.ВидыОперацийПоступлениеБезналичныхДенежныхСредств.ОплатаПокупателя))
   |    или (ИсточникДанных.ДокументДвижения ССЫЛКА документ.ПлатежноеПоручениеИсходящее
   |    И ИсточникДанных.ДокументДвижения.ВидОперации = Значение(Перечисление.ВидыОперацийППИсходящее.ВозвратДенежныхСредствПокупателю)))

теперь работает нормально. Но как возможен первый случай, если регистратор и док. движения - один и тот же документ?!:)
1 grayshadow
 
21.02.13
22:56
никто не знает?:)
ну пусть это пойдет в рубрику "Осторожно, 1С!"...
2 m-serg74
 
21.02.13
23:49
(1) а в первом варианте в ВЫБРАТЬ добавь два поля

ТИПЗНАЧЕНИЯ(ИсточникДанных.Регистратор)
и
ИсточникДанных.Регистратор.ВидОперации

что будет выходить туда где как говоришь не те доки выходят?
3 grayshadow
 
22.02.13
05:53
|ГДЕ ((ИсточникДанных.Регистратор ССЫЛКА документ.ПлатежноеПоручениеВходящее
   |    и ТИПЗНАЧЕНИЯ(Регистратор) = ТИП(Документ.ПлатежноеПоручениеВходящее)
   |    и ИсточникДанных.Регистратор.ВидОперации = Значение(Перечисление.ВидыОперацийПоступлениеБезналичныхДенежныхСредств.ОплатаПокупателя))
   |    или (ИсточникДанных.Регистратор ССЫЛКА документ.ПлатежноеПоручениеИсходящее
   |    и ТИПЗНАЧЕНИЯ(Регистратор) = ТИП(Документ.ПлатежноеПоручениеИсходящее)
   |    И ИсточникДанных.Регистратор.ВидОперации = Значение(Перечисление.ВидыОперацийППИсходящее.ВозвратДенежныхСредствПокупателю)))
ничего не изменилось, те же доки


ВЫБРАТЬ
   ДвиженияДенежныхСредств.Регистратор,
   ПРЕДСТАВЛЕНИЕ(ДвиженияДенежныхСредств.Регистратор),
   ДвиженияДенежныхСредств.Регистратор.ВидОперации,
   ТИПЗНАЧЕНИЯ(ДвиженияДенежныхСредств.Регистратор) как типзнч
ИЗ
   РегистрНакопления.ДвиженияДенежныхСредств КАК ДвиженияДенежныхСредств
ГДЕ
   ДвиженияДенежныхСредств.Регистратор.ВидОперации = &Подотчет
   И ДвиженияДенежныхСредств.Период >= &датанач

возвращает такую таблицу:
Регистратор    РегистраторВидОперации    типзнч
Платежное поручение исходящее 00000000784 от 11.01.2013 0:00:00    Перечисление денежных средств подотчетнику    Платежное поручение исходящее
Платежное поручение исходящее 00000006734 от 11.01.2013 0:00:00    Перечисление денежных средств подотчетнику    Платежное поручение исходящее
...
4 Wobland
 
22.02.13
06:46
я думаю, автор неверно интерпретирует результат:
Отчет показывает лишние документы с видом операции Выдача подотчетнику.
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший