Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 14:06

Спецификация к РегистрацииЦенНоменклатурыПоставщика, ERP

Автор illyaromanenko, 06 мар 2024, 15:53

0 Пользователей и 1 гость просматривают эту тему.

illyaromanenko

Переношу внешнюю печатную форму с УПП 8.2 на ERP. Спецификация для документа РегистрацияЦенНоменклатурыПоставщика (в УПП 8.2 документ называется УстановкаЦенНоменклатурыПоставщика). Печатная форма СпецификацияНаПодпись. Обычная печатная форма, но есть загвоздка. Большая часть объектов метаданных либо отсутствует, либо называется по другому и имеет другие реквизиты. Основная проблема. Не могу в запросе получить ДоговорКонтрагетов (В упп 8.2 справочник называется просто Договоры). Вот запрос из УПП:
ВЫБРАТЬ
   УстановкаЦенНоменклатурыКонтрагентов.Номер,
   УстановкаЦенНоменклатурыКонтрагентов.Дата,
   УстановкаЦенНоменклатурыКонтрагентов.Ответственный.Представление КАК ОтветственныйПредставление,
   УстановкаЦенНоменклатурыКонтрагентов.Контрагент.НаименованиеПолное КАК ПредставлениеКонтрагента,
   УстановкаЦенНоменклатурыКонтрагентов.НомерСпецификации,
   УстановкаЦенНоменклатурыКонтрагентов.ДатаСпецификации,
   ЕСТЬNULL(КонтактнаяИнформацияОтв.Представление, "") КАК ИмяОснованиеОтвЛица,
   ЮридическиеДоговора.НомерДоговора КАК НомерДог,
   НАЧАЛОПЕРИОДА(ЮридическиеДоговора.Дата, ДЕНЬ) КАК ДатаДог,
   ЮридическиеДоговора.НалоговыйАгент.ПолноеНаименованиеРФ КАК ПредставлениеПокупателя,
   ЮридическиеДоговора.НалоговыйАгент.ОтветственныйДляПодписиСпецификаций КАК ПредставлениеОтветственногоПокупателя,
   ЮридическиеДоговора.НалоговыйАгент.ОснованиеДляПодписиСпецификаций КАК ОснованиеДляПодписиСпецификаций
ИЗ
   Документ.УстановкаЦенНоменклатурыКонтрагентов КАК УстановкаЦенНоменклатурыКонтрагентов
      ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформацияОтв
      ПО УстановкаЦенНоменклатурыКонтрагентов.Контрагент = КонтактнаяИнформацияОтв.Объект
         И (КонтактнаяИнформацияОтв.Тип = &Тип)
         И (КонтактнаяИнформацияОтв.Вид = &ОтвВид)
      ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ЮридическиеДоговора КАК ЮридическиеДоговора
      ПО УстановкаЦенНоменклатурыКонтрагентов.Контрагент = ЮридическиеДоговора.КонтрагентИлиСПД
         И УстановкаЦенНоменклатурыКонтрагентов.Дата >= ЮридическиеДоговора.ДатаНачала
ГДЕ
   УстановкаЦенНоменклатурыКонтрагентов.Ссылка = &ТекущийДокумент
   И ЮридическиеДоговора.Организация = &Орг
   И ЮридическиеДоговора.ВидЮридическогоДоговора = &ВидДоговора
   И ЮридическиеДоговора.НалоговыйАгент = &НалАгент

А вот мой Запрос который не работает:
ВЫБРАТЬ
   РегистрацияЦенНоменклатурыПоставщика.Номер КАК Номер,
   РегистрацияЦенНоменклатурыПоставщика.Дата КАК Дата,
   РегистрацияЦенНоменклатурыПоставщика.Партнер.Ссылка КАК ПартнерСсылка,
   РегистрацияЦенНоменклатурыПоставщика.Ответственный.Представление КАК ОтветственныйПредставление,
   РегистрацияЦенНоменклатурыПоставщика.Партнер.НаименованиеПолное КАК ПартнерНаименованиеПолное,
   ДоговорыКонтрагентов.Номер КАК Номер1,
   ДоговорыКонтрагентов.Дата КАК Дата1,
   ДоговорыКонтрагентов.Организация КАК Организация,
   ДоговорыКонтрагентов.Контрагент КАК Контрагент
ИЗ
   Документ.РегистрацияЦенНоменклатурыПоставщика КАК РегистрацияЦенНоменклатурыПоставщика
      ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
      ПО (РегистрацияЦенНоменклатурыПоставщика.Партнер = ДоговорыКонтрагентов.Контрагент)
         И (РегистрацияЦенНоменклатурыПоставщика.Дата >= ДоговорыКонтрагентов.ДатаНачалаДействия)
ГДЕ
   РегистрацияЦенНоменклатурыПоставщика.Ссылка = &Ссылка

Проблема именно в отборе и связях, никак не могу подобрать нужные. Подскажите в каком направлении нужно думать, я уже голову сломал. Вопрос специфический конечно, но может кто-то хорошо разбирается в ерп и подскажет

fruitella

Соединение ссылок с разными типами.
Контрагент - это Справочник "Контрагенты". А партнер - это Справочник "Партнеры". Тебе 1С поэтому и отвечает, извини, но я тебя не понимаю. Поэтому связывать нужно через партнеров, от него можешь получить данные по договорам. Если через ЛЕВОЕ, то примерно так:

ВЫБРАТЬ РАЗРЕШЕННЫЕ
    РегистрацияЦенНоменклатурыПоставщика.Номер КАК Номер,
    РегистрацияЦенНоменклатурыПоставщика.Дата КАК Дата,
    РегистрацияЦенНоменклатурыПоставщика.Партнер КАК Партнер,
    РегистрацияЦенНоменклатурыПоставщика.Партнер.НаименованиеПолное КАК ПартнерНаименованиеПолное,
    РегистрацияЦенНоменклатурыПоставщика.Ответственный.Представление КАК Ответственный,
    РегистрацияЦенНоменклатурыПоставщика.ДокументОснование КАК ДокументОснование
ПОМЕСТИТЬ ВТ_ЦеныПоставщиков
ИЗ
    Документ.РегистрацияЦенНоменклатурыПоставщика КАК РегистрацияЦенНоменклатурыПоставщика
ГДЕ
    РегистрацияЦенНоменклатурыПоставщика.Ссылка = &ДокументРегистрацииЦенСсылка
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ_ЦеныПоставщиков.Номер КАК НомерРегистрацииЦен,
    ВТ_ЦеныПоставщиков.Дата КАК ДатаРегистрацииЦены,
    ВТ_ЦеныПоставщиков.Партнер КАК Партнер,
    ВТ_ЦеныПоставщиков.Ответственный КАК Ответственный,
    ВТ_ЦеныПоставщиков.ПартнерНаименованиеПолное КАК ПартнерНаименованиеПолное,
    ЕСТЬNULL(ДоговорыКонтрагентов.Номер, "") КАК НомерДоговора,
    ЕСТЬNULL(ДоговорыКонтрагентов.Дата, ДАТАВРЕМЯ(1, 1, 1)) КАК ДатаДоговора,
    ЕСТЬNULL(ДоговорыКонтрагентов.Организация, ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка)) КАК Организация,
    ЕСТЬNULL(ДоговорыКонтрагентов.Контрагент, ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)) КАК Контрагент
ИЗ
    ВТ_ЦеныПоставщиков КАК ВТ_ЦеныПоставщиков
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
        ПО ВТ_ЦеныПоставщиков.Партнер = ДоговорыКонтрагентов.Партнер

Далее, можешь наложить условие на отбор по конретному договору. При условии, если на одного контрагента имеется несколько договоров. А что за связь у тебя по дате, я не понял. Сравнить даты можно и в условии.

illyaromanenko

fruitella, смысл связи по датам следующий: дата начала действия договора должна быть меньше либо равно чем дата документа, при этом у контрагентов может быть сколько угодно договоров(у меня 15 выводит) одного и того же вида . Смысл в том что по контрагентам связать не проблема, но вот отборы сделать как - это вопрос. Но всё равно спасибо за грамотно составленный запрос.
 

Максим75

illyaromanenko, так вначале сделайте вложенный запрос по договорам контрагентов, отберите нужные договора, а уже потом связывайте по этому вложенному запросу по контрагенту.
хотя у Вас и так связь по договорам верная, должно работать.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск