У кого-нибудь работает Формирование заказа из Документа План закупок?
После обновления на 1.1.12.3 там что-то сломали.
Сначала получил
{Документ.ПланЗакупок.Форма.ФормаФормированиеЗаказовПоставщикам.Форма(246)}: Ошибка при вызове метода контекста (Выполнить)
Результат = Запрос.Выполнить();
по причине:
по причине:
{(48, 5)}: Синтаксическая ошибка "| КОНЕЦ"
<<?>>| КОНЕЦ = ЗаказыПоставщикамОстатки.ДоговорКонтрагента)
{Документ.ПланЗакупок.Форма.ФормаФормированиеЗаказовПоставщикам.Форма(246)}: Ошибка при вызове метода контекста (Выполнить)
Результат = Запрос.Выполнить();
по причине:
по причине:
{(48, 12)}: Поле не найдено "ЗаказыПоставщикамОстатки.ДоговорКонтрагента"
КОНЕЦ = <<?>>ЗаказыПоставщикамОстатки.ДоговорКонтрагента)
Вы б название конфигурации указали (а не только версию)
Управление торговым предприятием для Украины.
Обновлял я сам. Конфа из последнего моего заказа.
Но в План Закупок вообще ничего не менялось, поэтому при обновлении поставил Взять из файла.
Ниже полный текст процедуры.
Ругается на выделенную строку.
Процедура ЗаполнитьЗакупки()
Закупки.Строки.Очистить();
Запрос = Новый Запрос(
"ВЫБРАТЬ
| ВЫБОР
| КОГДА ПланыЗакупокОбороты.Контрагент = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
| ТОГДА ПланыЗакупокОбороты.Номенклатура.ОсновнойПоставщик
| ИНАЧЕ ПланыЗакупокОбороты.Контрагент
| КОНЕЦ КАК Поставщик,
| ВЫБОР
| КОГДА ПланыЗакупокОбороты.Договор = ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагентов.ПустаяСсылка)
| ТОГДА ПланыЗакупокОбороты.Номенклатура.ОсновнойПоставщик.ОсновнойДоговорКонтрагента
| ИНАЧЕ ПланыЗакупокОбороты.Договор
| КОНЕЦ КАК Договор,
| ПланыЗакупокОбороты.Номенклатура КАК Номенклатура,
| ПланыЗакупокОбороты.ХарактеристикаНоменклатуры КАК Характеристика,
| ПланыЗакупокОбороты.Период КАК Период,
| (ПланыЗакупокОбороты.СтоимостьОборот + ПланыЗакупокОбороты.НДСОборот) / ВЫБОР
| КОГДА ПланыЗакупокОбороты.КоличествоОборот = 0
| ТОГДА 1
| ИНАЧЕ ПланыЗакупокОбороты.КоличествоОборот
| КОНЕЦ * КурсВалютыУправленческогоУчета.Курс * КурсВалютыДоговора.Кратность / (ЕСТЬNULL(КурсВалютыДоговора.Курс, 1) * ЕСТЬNULL(КурсВалютыУправленческогоУчета.Кратность, 1)) КАК Цена,
| ВЫБОР
| КОГДА ПланыЗакупокОбороты.Договор = ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагентов.ПустаяСсылка)
| ТОГДА ЕСТЬNULL(ПланыЗакупокОбороты.Номенклатура.ОсновнойПоставщик.ОсновнойДоговорКонтр
агента.ВалютаВзаиморасчетов, ПланыЗакупокОбороты.ДокументПланирования.ВалютаДокумента)
| ИНАЧЕ ПланыЗакупокОбороты.Договор.ВалютаВзаиморасчетов
| КОНЕЦ КАК Валюта,
| ПланыЗакупокОбороты.Заказ КАК Заказ,
| ПланыЗакупокОбороты.КоличествоОборот КАК ТребуемоеКоличество,
| ПланыЗакупокОбороты.КоличествоОборот КАК ЗаказатьКоличество,
| ПланыЗакупокОбороты.СтоимостьОборот + ПланыЗакупокОбороты.НДСОборот КАК Стоимость,
| ЕСТЬNULL(РазмещениеЗаказовПокупателейОбороты.КоличествоОстаток, 0) КАК ЗаказанноеКоличествоРазмещениеЗаказовПокупателей,
| ЕСТЬNULL(ЗаказыПоставщикамОбороты.КоличествоОстаток, 0) КАК ЗаказанноеКоличествоЗаказыПостащикам
|ИЗ
| РегистрНакопления.ПланыЗакупок.Обороты(
| ,
| ,
| День,
| Номенклатура ССЫЛКА Справочник.Номенклатура
| И ДокументПланирования = &ПланЗакупок) КАК ПланыЗакупокОбороты
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыПоставщикам.Остатки(&ДатаОкончанияПлановогоПериода, ) КАК ЗаказыПоставщикамОбороты
| ПО (ВЫБОР
| КОГДА ПланыЗакупокОбороты.Контрагент = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
| ТОГДА ПланыЗакупокОбороты.Номенклатура.ОсновнойПоставщик
| ИНАЧЕ ПланыЗакупокОбороты.Контрагент
| КОНЕЦ = ЗаказыПоставщикамОбороты.ДоговорКонтрагента.Владелец)
| И (ВЫБОР
| КОГДА ПланыЗакупокОбороты.Договор = ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагентов.ПустаяСсылка)
| ТОГДА ПланыЗакупокОбороты.Номенклатура.ОсновнойПоставщик.ОсновнойДоговорКонтрагента
| ИНАЧЕ ПланыЗакупокОбороты.Договор
[b] | | КОНЕЦ = ЗаказыПоставщикамОстатки.ДоговорКонтрагента)[/b]
| И ПланыЗакупокОбороты.Номенклатура = ЗаказыПоставщикамОстатки.Номенклатура
| И ПланыЗакупокОбороты.ХарактеристикаНоменклатуры = ЗаказыПоставщикамОстатки.ХарактеристикаНоменклатуры
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.РазмещениеЗаказовПокупателей.Остатки(&ДатаОкончанияПлановогоПериода, ) КАК РазмещениеЗаказовПокупателейОстатки
| ПО (ВЫБОР
| КОГДА ПланыЗакупокОбороты.Заказ = ЗНАЧЕНИЕ(Документ.ЗаказПокупателя.ПустаяСсылка)
| ТОГДА ИСТИНА
| ИНАЧЕ ПланыЗакупокОбороты.Заказ = РазмещениеЗаказовПокупателейОстатки.ЗаказПокупателя
| КОНЕЦ)
| И ПланыЗакупокОбороты.Номенклатура = РазмещениеЗаказовПокупателейОстатки.Номенклатура
| И ПланыЗакупокОбороты.ХарактеристикаНоменклатуры = РазмещениеЗаказовПокупателейОстатки.ХарактеристикаНоменклатуры
| ЛЕВОЕ СОЕДИНЕНИЕ Константы КАК Константы
| ПО (ИСТИНА)
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(&ДатаОкончанияПлановогоПериода, ) КАК КурсВалютыУправленческогоУчета
| ПО Константы.ВалютаУправленческогоУчета = КурсВалютыУправленческогоУчета.Валюта
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(&ДатаОкончанияПлановогоПериода, ) КАК КурсВалютыДоговора
| ПО (ВЫБОР
| КОГДА ПланыЗакупокОбороты.Договор = ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагентов.ПустаяСсылка)
| ТОГДА ЕСТЬNULL(ПланыЗакупокОбороты.Номенклатура.ОсновнойПоставщик.ОсновнойДоговорКонтр
агента.ВалютаВзаиморасчетов, ПланыЗакупокОбороты.ДокументПланирования.ВалютаДокумента)
| ИНАЧЕ ПланыЗакупокОбороты.Договор.ВалютаВзаиморасчетов
| КОНЕЦ = КурсВалютыДоговора.Валюта)
|УПОРЯДОЧИТЬ ПО
| Поставщик,
| Договор,
| Номенклатура,
| Характеристика,
| Период,
| Заказ
|ИТОГИ
| ВЫБОР
| КОГДА Договор ЕСТЬ НЕ NULL
| ТОГДА МАКСИМУМ(Валюта)
| КОНЕЦ КАК Валюта,
| СУММА(ТребуемоеКоличество),
| СУММА(Стоимость)
|ПО
| Поставщик,
| Договор
|АВТОУПОРЯДОЧИВАНИЕ");
ДатаОкончанияПлановогоПериода = ПланЗакупок.ДатаПланирования;
УправлениеПланированием.ВыровнятьДатуПоКонцуПериода(ДатаОкончанияПлановогоПериод
а, ПланЗакупок.Сценарий.Периодичность);
Запрос.УстановитьПараметр("ПланЗакупок", ПланЗакупок);
Запрос.УстановитьПараметр("ДатаОкончанияПлановогоПериода", ДатаОкончанияПлановогоПериода);
Результат = Запрос.Выполнить();
ВыборкаПоставщик = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаПоставщик.Следующий() Цикл
НовыйПоставщик = Закупки.Строки.Добавить();
НовыйПоставщик.ПоставщикДоговорНоменклатура = ВыборкаПоставщик.Поставщик;
ВыборкаДоговор = ВыборкаПоставщик.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаДоговор.Следующий() Цикл
НовыйДоговор = НовыйПоставщик.Строки.Добавить();
НовыйДоговор.ПоставщикДоговорНоменклатура = ВыборкаДоговор.Договор;
НовыйДоговор.Валюта = ВыборкаДоговор.Валюта;
ВыборкаНоменклатура = ВыборкаДоговор.Выбрать(ОбходРезультатаЗапроса.Прямой);
Пока ВыборкаНоменклатура.Следующий() Цикл
НоваяНоменклатура = НовыйДоговор.Строки.Добавить();
НоваяНоменклатура.ПоставщикДоговорНоменклатура = ВыборкаНоменклатура.Номенклатура;
НоваяНоменклатура.Характеристика = ВыборкаНоменклатура.Характеристика;
НоваяНоменклатура.Период = ВыборкаНоменклатура.Период;
НоваяНоменклатура.Цена = ВыборкаНоменклатура.Цена;
НоваяНоменклатура.Валюта = ВыборкаНоменклатура.Валюта;
НоваяНоменклатура.ТребуемоеКоличество = ВыборкаНоменклатура.ТребуемоеКоличество;
НоваяНоменклатура.Заказ = ВыборкаНоменклатура.Заказ;
Если НЕ ЗначениеЗаполнено(НоваяНоменклатура.Заказ) Тогда
НоваяНоменклатура.ЗаказанноеКоличество = Макс(ВыборкаНоменклатура.ЗаказанноеКоличествоЗаказыПоставщикам - ВыборкаНоменклатура.ЗаказанноеКоличествоРазмещениеЗаказовПокупателей, 0);
Иначе
НоваяНоменклатура.ЗаказанноеКоличество = ВыборкаНоменклатура.ЗаказанноеКоличествоРазмещениеЗаказовПокупателей;
КонецЕсли;
Если ВыборкаНоменклатура.ЗаказатьКоличество > НоваяНоменклатура.ЗаказанноеКоличество Тогда
НоваяНоменклатура.ЗаказатьКоличество = ВыборкаНоменклатура.ЗаказатьКоличество - НоваяНоменклатура.ЗаказанноеКоличество;
Иначе
НоваяНоменклатура.ЗаказатьКоличество = 0;
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецПроцедуры // ЗаполнитьЗакупки()
Управление торговым предприятием. В типовой действительно выдается такая ошибка такая ошибка.
Вот. Работать должен. Правильно или нет - нужно проверять:
|ВЫБРАТЬ
| ВЫБОР
| КОГДА ПланыЗакупокОбороты.Контрагент = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
| ТОГДА ПланыЗакупокОбороты.Номенклатура.ОсновнойПоставщик
| ИНАЧЕ ПланыЗакупокОбороты.Контрагент
| КОНЕЦ КАК Поставщик,
| ВЫБОР
| КОГДА ПланыЗакупокОбороты.Договор = ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагентов.ПустаяСсылка)
| ТОГДА ПланыЗакупокОбороты.Номенклатура.ОсновнойПоставщик.ОсновнойДоговорКонтрагента
| ИНАЧЕ ПланыЗакупокОбороты.Договор
| КОНЕЦ КАК Договор,
| ПланыЗакупокОбороты.Номенклатура КАК Номенклатура,
| ПланыЗакупокОбороты.ХарактеристикаНоменклатуры КАК Характеристика,
| ПланыЗакупокОбороты.Период КАК Период,
| (ПланыЗакупокОбороты.СтоимостьОборот + ПланыЗакупокОбороты.НДСОборот) / ВЫБОР
| КОГДА ПланыЗакупокОбороты.КоличествоОборот = 0
| ТОГДА 1
| ИНАЧЕ ПланыЗакупокОбороты.КоличествоОборот
| КОНЕЦ * КурсВалютыУправленческогоУчета.Курс * КурсВалютыДоговора.Кратность / (ЕСТЬNULL(КурсВалютыДоговора.Курс, 1) * ЕСТЬNULL(КурсВалютыУправленческогоУчета.Кратность, 1)) КАК Цена,
| ВЫБОР
| КОГДА ПланыЗакупокОбороты.Договор = ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагентов.ПустаяСсылка)
| ТОГДА ЕСТЬNULL(ПланыЗакупокОбороты.Номенклатура.ОсновнойПоставщик.ОсновнойДоговорКонтрагент
а.ВалютаВзаиморасчетов, ПланыЗакупокОбороты.ДокументПланирования.ВалютаДокумента)
| ИНАЧЕ ПланыЗакупокОбороты.Договор.ВалютаВзаиморасчетов
| КОНЕЦ КАК Валюта,
| ПланыЗакупокОбороты.Заказ КАК Заказ,
| ПланыЗакупокОбороты.КоличествоОборот КАК ТребуемоеКоличество,
| ПланыЗакупокОбороты.КоличествоОборот КАК ЗаказатьКоличество,
| ПланыЗакупокОбороты.СтоимостьОборот + ПланыЗакупокОбороты.НДСОборот КАК Стоимость,
| ЕСТЬNULL(РазмещениеЗаказовПокупателейОстатки.КоличествоОстаток, 0) КАК ЗаказанноеКоличествоРазмещениеЗаказовПокупателей,
| ЕСТЬNULL(ЗаказыПоставщикамОстатки.КоличествоОстаток, 0) КАК ЗаказанноеКоличествоЗаказыПостащикам
|ИЗ
| РегистрНакопления.ПланыЗакупок.Обороты(
| ,
| ,
| День,
| Номенклатура ССЫЛКА Справочник.Номенклатура
| И ДокументПланирования = &ПланЗакупок) КАК ПланыЗакупокОбороты
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыПоставщикам.Остатки(&ДатаОкончанияПлановогоПериода, ) КАК ЗаказыПоставщикамОстатки
| ПО (ВЫБОР
| КОГДА ПланыЗакупокОбороты.Контрагент = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
| ТОГДА ПланыЗакупокОбороты.Номенклатура.ОсновнойПоставщик
| ИНАЧЕ ПланыЗакупокОбороты.Контрагент
| КОНЕЦ = ЗаказыПоставщикамОстатки.ДоговорКонтрагента.Владелец)
| И (ВЫБОР
| КОГДА ПланыЗакупокОбороты.Договор = ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагентов.ПустаяСсылка)
| ТОГДА ПланыЗакупокОбороты.Номенклатура.ОсновнойПоставщик.ОсновнойДоговорКонтрагента
| ИНАЧЕ ПланыЗакупокОбороты.Договор
| КОНЕЦ = ЗаказыПоставщикамОстатки.ДоговорКонтрагента)
| И ПланыЗакупокОбороты.Номенклатура = ЗаказыПоставщикамОстатки.Номенклатура
| И ПланыЗакупокОбороты.ХарактеристикаНоменклатуры = ЗаказыПоставщикамОстатки.ХарактеристикаНоменклатуры
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.РазмещениеЗаказовПокупателей.Остатки(&ДатаОкончанияПлановогоПериода, ) КАК РазмещениеЗаказовПокупателейОстатки
| ПО (ВЫБОР
| КОГДА ПланыЗакупокОбороты.Заказ = ЗНАЧЕНИЕ(Документ.ЗаказПокупателя.ПустаяСсылка)
| ТОГДА ИСТИНА
| ИНАЧЕ ПланыЗакупокОбороты.Заказ = РазмещениеЗаказовПокупателейОстатки.ЗаказПокупателя
| КОНЕЦ)
| И ПланыЗакупокОбороты.Номенклатура = РазмещениеЗаказовПокупателейОстатки.Номенклатура
| И ПланыЗакупокОбороты.ХарактеристикаНоменклатуры = РазмещениеЗаказовПокупателейОстатки.ХарактеристикаНоменклатуры
| ЛЕВОЕ СОЕДИНЕНИЕ Константы КАК Константы
| ПО (ИСТИНА)
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(&ДатаОкончанияПлановогоПериода, ) КАК КурсВалютыУправленческогоУчета
| ПО (Константы.ВалютаУправленческогоУчета = КурсВалютыУправленческогоУчета.Валюта)
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(&ДатаОкончанияПлановогоПериода, ) КАК КурсВалютыДоговора
| ПО (ВЫБОР
| КОГДА ПланыЗакупокОбороты.Договор = ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагентов.ПустаяСсылка)
| ТОГДА ЕСТЬNULL(ПланыЗакупокОбороты.Номенклатура.ОсновнойПоставщик.ОсновнойДоговорКонтрагент
а.ВалютаВзаиморасчетов, ПланыЗакупокОбороты.ДокументПланирования.ВалютаДокумента)
| ИНАЧЕ ПланыЗакупокОбороты.Договор.ВалютаВзаиморасчетов
| КОНЕЦ = КурсВалютыДоговора.Валюта)
|
|УПОРЯДОЧИТЬ ПО
| Поставщик,
| Договор,
| Номенклатура,
| Характеристика,
| Период,
| Заказ
|ИТОГИ
| ВЫБОР
| КОГДА Договор ЕСТЬ НЕ NULL
| ТОГДА МАКСИМУМ(Валюта)
| КОНЕЦ КАК Валюта,
| СУММА(ТребуемоеКоличество),
| СУММА(Стоимость)
|ПО
| Поставщик,
| Договор
|АВТОУПОРЯДОЧИВАНИЕ
В предыдущих конфигурациях идет запрос к "Оборотам" а не к остаткам
| КОНЕЦ = ЗаказыПоставщикамОбороты.ДоговорКонтрагента)
| И ПланыЗакупокОбороты.Номенклатура = ЗаказыПоставщикамОбороты.Номенклатура
| И ПланыЗакупокОбороты.ХарактеристикаНоменклатуры = ЗаказыПоставщикамОбороты.ХарактеристикаНоменклатуры
Запрос работает.
Но процедура нет
{Документ.ПланЗакупок.Форма.ФормаФормированиеЗаказовПоставщикам.Форма(280)}: Поле объекта не обнаружено (ЗаказанноеКоличествоЗаказыПоставщикам)
НоваяНоменклатура.ЗаказанноеКоличество = Макс(ВыборкаНоменклатура.ЗаказанноеКоличествоРазмещениеЗаказовПокупателей, 0);
Попробуйте в запросе строчку заменить вот так:
| ЕСТЬNULL(ЗаказыПоставщикамОбороты.КоличествоОстаток, 0) КАК ЗаказанноеКоличествоЗаказыПостащикам
Поле не найдено "ЗаказыПоставщикамОбороты.КоличествоОстаток"
Честно говоря тяжело гадать
Я просто не понял. Это у меня в 1.1.12.3 не работает или у всех?
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua