3 / 3 / 7
Регистрация: 21.03.2013
Сообщений: 638
1
Ошибка при выполнении запроса
27.01.2021, 17:26. Показов 1762. Ответов 1
Добрый день, такая проблема, делаю запрос в динамическом списке, в консоли запросов нормально отрабатывает, но когда открываю формы выдаёт
Ошибка при выполнении запроса.
по причине:
Поле не найдено «Completed»
Добавлено через 50 минут
1C | ||
|
0
06.05.13 — 16:13
Ошибка при выполнении обработчика — ‘{РегистрНакопления.ТоварыНаСкладах(928)}: Ошибка при вызове метода контекста (Выполнить): {(7, 8)}: Поле не найдено «Док.Контрагент»
Док.<<?>>Контрагент КАК Контрагент,’
по причине:
{РегистрНакопления.ТоварыНаСкладах(928)}: Ошибка при вызове метода контекста (Выполнить): {(7, 8)}: Поле не найдено «Док.Контрагент»
Док.<<?>>Контрагент КАК Контрагент,
по причине:
{(7, 8)}: Поле не найдено «Док.Контрагент»
Док.<<?>>Контрагент
ТекстЗапроса = »
|ВЫБРАТЬ // Запрос, контролирующий остатки на складах
| Док.Номенклатура КАК Номенклатура,
| Док.Номенклатура.Представление КАК НоменклатураПредставление,
| Док.Номенклатура.ЕдиницаХраненияОстатков.Представление КАК ЕдиницаХраненияОстатковПредставление,
| Док.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
| Док.Контрагент КАК Контрагент,
| ПРЕДСТАВЛЕНИЕ(Док.ХарактеристикаНоменклатуры) КАК ХарактеристикаНоменклатурыПредставление,
| Док.СерияНоменклатуры КАК СерияНоменклатуры,
| ПРЕДСТАВЛЕНИЕ(Док.СерияНоменклатуры) КАК СерияНоменклатурыПредставление,
| %ПОЛЕ_Док_Склад% КАК Склад,
| %ПОЛЕ_Док_Качество% КАК Качество,
| СУММА(ВЫРАЗИТЬ(Док.Количество * Док.Коэффициент /Док.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент КАК Число(15,3)))
| КАК ДокументКоличество,
| ЕстьNull(МАКСИМУМ(ОстаткиБезСерии.КоличествоОстаток),0) КАК ОстатокБезСерииКоличество,
| ЕстьNull(МАКСИМУМ(Остатки.КоличествоОстаток),0) КАК ОстатокКоличество,
//| ЕстьNull(МАКСИМУМ(РезервыБезКонтрагента.КоличествоОстаток),0)КАК РезервыБезКонтрагентаКоличество,
//| ЕстьNull(МАКСИМУМ(РезервыПоКонтрагенту.КоличествоОстаток),0) КАК РезервыПоКонтрагентуКоличество,
| ЕстьNull(МАКСИМУМ(Резервы.КоличествоОстаток),0) КАК РезервыКоличество,
| %ПОЛЕ_РезервыПоСерииКоличество% КАК РезервыПоСерииКоличество,
| ЕстьNull(МАКСИМУМ(ТоварыКПередаче.КоличествоОстаток),0) КАК КПередачеКоличество,
| ЕстьNull(МАКСИМУМ(ТоварыКПередачеБезСерии.КоличествоОстаток),0) КАК КПередачеБезСерииКоличество,
| %ПОЛЕ_РезервыПоДокументуКоличество% КАК РезервыПоДокументуКоличество,
| %ПОЛЕ_РезервыПоДокументуБезСерии_Количество% КАК РезервыПоДокументуБезСерииКоличество,
| 0 КАК КПолучению,
| 0 КАК КПолучениюПоДокументуКоличество,
| 0 КАК КПередачеПоДокументуКоличество,
| 0 КАК КПередачеПоДокументуБезСерииКоличество
|ИЗ
| «+ ТекстЗапросаРеквизитыДокумента + » КАК Док
2 — 06.05.13 — 16:14
ТекстЗапросаРеквизитыДокумента = »
| (ВЫБРАТЬ
//строки ТЧ Товары которые не являются набором
| Ссылка,
| Номенклатура,
| %ПОЛЕ_Склад%,
| %ПОЛЕ_СпособСписанияОстаткаТоваров% КАК СпособСписанияОстаткаТоваров,
| %ПОЛЕ_Качество% КАК Качество,
| ХарактеристикаНоменклатуры,
| Контрагент,
| СерияНоменклатуры,
| Коэффициент,
| %ПОЛЕ_ЗаказПокупателя% КАК ЗаказПокупателя,
| Количество
| ИЗ
| Документ.» + ИмяТаблицы + »
| ГДЕ
| Ссылка = &ДокументСсылка
| И НЕ Номенклатура.Комплект
|
//строки ТЧ СоставНабора
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| Ссылка,
| Номенклатура,
| Склад,
| СпособСписанияОстаткаТоваров,
| Качество,
| ХарактеристикаНоменклатуры,
| Контрагент,
| СерияНоменклатуры,
| Коэффициент,
| ЗаказПокупателя,
| Количество
| ИЗ
| (ВЫБРАТЬ
| ДокНаб.Ссылка,
| ДокНаб.Номенклатура,
| %ПОЛЕ_Набор_Склад% КАК Склад,
| %ПОЛЕ_Набор_СпособСписанияОстаткаТоваров% КАК СпособСписанияОстаткаТоваров,
| %ПОЛЕ_Набор_Качество% КАК Качество,
| ДокНаб.ХарактеристикаНоменклатуры,
| ДокНаб.Контрагент,
| ДокНаб.СерияНоменклатуры,
| ДокНаб.ЕдиницаИзмерения.Коэффициент КАК Коэффициент,
| %ПОЛЕ_Набор_ЗаказПокупателя% КАК ЗаказПокупателя,
| ДокНаб.Количество * ДокТов.Количество КАК Количество
| ИЗ
| Документ.» + ИмяДокумента + «.СоставНабора КАК ДокНаб
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.» + ИмяТаблицы + » КАК ДокТов
| ПО ДокТов.КлючСтроки = ДокНаб.КлючСтроки
| И ДокТов.Ссылка = &ДокументСсылка
| ГДЕ
| ДокНаб.Ссылка = &ДокументСсылка
| ) КАК Набор
|
| )
|»;
11 — 06.05.13 — 16:42
Вот новая ошибка {(82, 16)}: Поле не найдено «Резервы.Склад»
И Док.Склад = <<?>>Резервы.Склад
Текс запроса =
ВЫБРАТЬ // Запрос, контролирующий остатки на складах
Док.Номенклатура КАК Номенклатура,
Док.Номенклатура.Представление КАК НоменклатураПредставление,
Док.Номенклатура.ЕдиницаХраненияОстатков.Представление КАК ЕдиницаХраненияОстатковПредставление,
Док.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
Док.Ссылка.Контрагент КАК Контрагент,
ПРЕДСТАВЛЕНИЕ(Док.ХарактеристикаНоменклатуры) КАК ХарактеристикаНоменклатурыПредставление,
Док.СерияНоменклатуры КАК СерияНоменклатуры,
ПРЕДСТАВЛЕНИЕ(Док.СерияНоменклатуры) КАК СерияНоменклатурыПредставление,
Док.Склад КАК Склад,
Док.Качество КАК Качество,
СУММА(ВЫРАЗИТЬ(Док.Количество * Док.Коэффициент /Док.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент КАК Число(15,3)))
КАК ДокументКоличество,
ЕстьNull(МАКСИМУМ(ОстаткиБезСерии.КоличествоОстаток),0) КАК ОстатокБезСерииКоличество,
ЕстьNull(МАКСИМУМ(Остатки.КоличествоОстаток),0) КАК ОстатокКоличество,
ЕстьNull(МАКСИМУМ(РезервыБезКонтрагента.КоличествоОстаток),0)КАК РезервыБезКонтрагентаКоличество,
ЕстьNull(МАКСИМУМ(РезервыПоКонтрагенту.КоличествоОстаток),0) КАК РезервыПоКонтрагентуКоличество,
ЕстьNull(МАКСИМУМ(Резервы.КоличествоОстаток),0) КАК РезервыКоличество,
0 КАК РезервыПоСерииКоличество,
ЕстьNull(МАКСИМУМ(ТоварыКПередаче.КоличествоОстаток),0) КАК КПередачеКоличество,
ЕстьNull(МАКСИМУМ(ТоварыКПередачеБезСерии.КоличествоОстаток),0) КАК КПередачеБезСерииКоличество,
ЕстьNull(Максимум(РезервыПоДокументу.КоличествоОстаток),0) КАК РезервыПоДокументуКоличество,
0 КАК РезервыПоДокументуБезСерииКоличество,
0 КАК КПолучению,
0 КАК КПолучениюПоДокументуКоличество,
0 КАК КПередачеПоДокументуКоличество,
0 КАК КПередачеПоДокументуБезСерииКоличество
ИЗ
Документ.РеализацияТоваровУслуг.Товары
КАК Док
ЛЕВОЕ СОЕДИНЕНИЕ
РегистрНакопления.ТоварыНаСкладах.Остатки(, Склад в (&СписокСкладов) И
Номенклатура В (
ВЫБРАТЬ РАЗЛИЧНЫЕ
Номенклатура
ИЗ
Документ.РеализацияТоваровУслуг.Товары
ГДЕ Ссылка = &ДокументСсылка
)
//УСЛОВИЕ_Качество
) КАК Остатки
ПО
Док.Номенклатура = Остатки.Номенклатура
И Док.ХарактеристикаНоменклатуры = Остатки.ХарактеристикаНоменклатуры
И Док.СерияНоменклатуры = Остатки.СерияНоменклатуры
И Док.Качество = Остатки.Качество
И Док.Склад = Остатки.Склад
ЛЕВОЕ СОЕДИНЕНИЕ
РегистрНакопления.ТоварыНаСкладах.Остатки(, Склад в (&СписокСкладов) И
Номенклатура В (
ВЫБРАТЬ РАЗЛИЧНЫЕ
Номенклатура
ИЗ
Документ.РеализацияТоваровУслуг.Товары
ГДЕ Ссылка = &ДокументСсылка
)
//УСЛОВИЕ_Качество
) КАК ОстаткиБезСерии
ПО
Док.Номенклатура = ОстаткиБезСерии.Номенклатура
И Док.ХарактеристикаНоменклатуры = ОстаткиБезСерии.ХарактеристикаНоменклатуры
И Док.Качество = ОстаткиБезСерии.Качество
И Док.Склад = ОстаткиБезСерии.Склад
ЛЕВОЕ СОЕДИНЕНИЕ
РегистрНакопления.РезервПоКонтрагенту.Остатки(, Склад в (&СписокСкладов) И
Номенклатура В (
ВЫБРАТЬ РАЗЛИЧНЫЕ
Номенклатура
ИЗ
Документ.РеализацияТоваровУслуг.Товары
ГДЕ Ссылка = &ДокументСсылка
)) КАК РезервыБезКонтрагента
ПО
Док.Номенклатура = РезервыБезКонтрагента.Номенклатура
И Док.ХарактеристикаНоменклатуры = РезервыБезКонтрагента.Характеристика
И Док.Склад = РезервыБезКонтрагента.Склад
И (Док.ЗаказПокупателя = &ПустойЗаказПокупателя ИЛИ Док.СпособСписанияОстаткаТоваров <> &ИзРезерва)
И Док.Склад = Резервы.Склад
И Док.Качество = &Новый
ЛЕВОЕ СОЕДИНЕНИЕ
РегистрНакопления.РезервПоКонтрагенту.Остатки(, Склад в (&СписокСкладов) И
Номенклатура В (
ВЫБРАТЬ РАЗЛИЧНЫЕ
Номенклатура
ИЗ
Документ.РеализацияТоваровУслуг.Товары
ГДЕ Ссылка = &ДокументСсылка
)) КАК РезервыПоКонтрагенту
ПО
Док.Номенклатура = РезервыПоКонтрагенту.Номенклатура
И Док.ХарактеристикаНоменклатуры = РезервыПоКонтрагенту.Характеристика
И Док.Склад = РезервыПоКонтрагенту.Склад
И Док.Контрагент = РезервыПоКонтрагенту.Контрагент
И (Док.ЗаказПокупателя = &ПустойЗаказПокупателя ИЛИ Док.СпособСписанияОстаткаТоваров <> &ИзРезерва)
И Док.Склад = Резервы.Склад
И Док.Качество = &Новый
ЛЕВОЕ СОЕДИНЕНИЕ
РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(, Склад в (&СписокСкладов) И
Номенклатура В (
ВЫБРАТЬ РАЗЛИЧНЫЕ
Номенклатура
ИЗ
Документ.РеализацияТоваровУслуг.Товары
ГДЕ Ссылка = &ДокументСсылка
)) КАК Резервы
ПО
Док.Номенклатура = Резервы.Номенклатура
И Док.ХарактеристикаНоменклатуры = Резервы.ХарактеристикаНоменклатуры
И (Док.ЗаказПокупателя = &ПустойЗаказПокупателя ИЛИ Док.СпособСписанияОстаткаТоваров <> &ИзРезерва)
И Док.Склад = Резервы.Склад
И Док.Качество = &Новый
ЛЕВОЕ СОЕДИНЕНИЕ
(ВЫБРАТЬ ТЧ.Номенклатура,
ТЧ.Склад,
ТЧ.ХарактеристикаНоменклатуры
//ПОЛЕ_ТЧ_Серия
//количество, списываемое за счет резерва, не может превышать количество указанное в документе
,ВЫБОР КОГДА Сумма(ТЧ.ДокументКоличество)<Сумма(ВремРезервы.КоличествоОстаток) ТОГДА
Сумма(ТЧ.ДокументКоличество)
ИНАЧЕ Сумма(ВремРезервы.КоличествоОстаток)
КОНЕЦ КАК КоличествоОстаток
ИЗ
//сгруппированная табличная часть документа с отбором строк которые списываются из резерва
(ВЫБРАТЬ
Номенклатура,
Склад,
ЗаказПокупателя,
ХарактеристикаНоменклатуры
//ПОЛЕ_Серия
,СУММА(ВЫРАЗИТЬ(Количество * Коэффициент /Номенклатура.ЕдиницаХраненияОстатков.Коэффициент КАК Число(15,3))) КАК ДокументКоличество
ИЗ
Документ.РеализацияТоваровУслуг.Товары
КАК ВремДок
ГДЕ ВремДок.Ссылка = &ДокументСсылка
И ВремДок.ЗаказПокупателя <> &ПустойЗаказПокупателя и ВремДок.СпособСписанияОстаткаТоваров = &ИзРезерва
СГРУППИРОВАТЬ ПО
Номенклатура,
Склад,
ЗаказПокупателя,
ХарактеристикаНоменклатуры
//ПОЛЕ_Серия
) КАК ТЧ
ЛЕВОЕ СОЕДИНЕНИЕ
РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(, Склад в (&СписокСкладов) И
Номенклатура В (
ВЫБРАТЬ РАЗЛИЧНЫЕ
Номенклатура
ИЗ
Документ.РеализацияТоваровУслуг.Товары
ГДЕ Ссылка = &ДокументСсылка
)
) КАК ВремРезервы
ПО ТЧ.Номенклатура = ВремРезервы.Номенклатура
И ТЧ.Склад = ВремРезервы.Склад
И ТЧ.ЗаказПокупателя = ВремРезервы.ДокументРезерва
И ТЧ.ХарактеристикаНоменклатуры = ВремРезервы.ХарактеристикаНоменклатуры
//СОЕДИНЕНИЕ_Серия_ВремРезервы
СГРУППИРОВАТЬ ПО
ТЧ.Номенклатура,
ТЧ.Склад,
ТЧ.ХарактеристикаНоменклатуры
//ПОЛЕ_ТЧ_Серия
) КАК РезервыПоДокументу
ПО
Док.Номенклатура = РезервыПоДокументу.Номенклатура
И Док.Склад = РезервыПоДокументу.Склад
И Док.ЗаказПокупателя <> &ПустойЗаказПокупателя И Док.СпособСписанияОстаткаТоваров = &ИзРезерва
И Док.ХарактеристикаНоменклатуры = РезервыПоДокументу.ХарактеристикаНоменклатуры
//СОЕДИНЕНИЕ_Серия_РезервыПоДокументу
//ЗАПРОС_РезервыПоДокументуБезСерии
ЛЕВОЕ СОЕДИНЕНИЕ
РегистрНакопления.ТоварыКПередачеСоСкладов.Остатки(, Склад в (&СписокСкладов) И
Номенклатура В (
ВЫБРАТЬ РАЗЛИЧНЫЕ
Номенклатура
ИЗ
Документ.РеализацияТоваровУслуг.Товары
ГДЕ Ссылка = &ДокументСсылка
)
//УСЛОВИЕ_Качество
) КАК ТоварыКПередаче
ПО
Док.Номенклатура = ТоварыКПередаче.Номенклатура
И Док.ХарактеристикаНоменклатуры = ТоварыКПередаче.ХарактеристикаНоменклатуры
И Док.СерияНоменклатуры = ТоварыКПередаче.СерияНоменклатуры
И Док.Склад = ТоварыКПередаче.Склад
И Док.Качество = ТоварыКПередаче.Качество
ЛЕВОЕ СОЕДИНЕНИЕ
РегистрНакопления.ТоварыКПередачеСоСкладов.Остатки(, Склад в (&СписокСкладов) И
Номенклатура В (
ВЫБРАТЬ РАЗЛИЧНЫЕ
Номенклатура
ИЗ
Документ.РеализацияТоваровУслуг.Товары
ГДЕ Ссылка = &ДокументСсылка
)
//УСЛОВИЕ_Качество
) КАК ТоварыКПередачеБезСерии
ПО
Док.Номенклатура = ТоварыКПередачеБезСерии.Номенклатура
И Док.ХарактеристикаНоменклатуры = ТоварыКПередачеБезСерии.ХарактеристикаНоменклатуры
И Док.Склад = ТоварыКПередачеБезСерии.Склад
И Док.Качество = ТоварыКПередачеБезСерии.Качество
ГДЕ
Док.Ссылка = &ДокументСсылка
И Не Док.Номенклатура.Комплект
И Не Док.Номенклатура.Услуга
И Док.Склад.ВидСклада<>&НТТ И Док.Склад.ВидСклада<>&Розничный
СГРУППИРОВАТЬ ПО
Док.Номенклатура,
Док.ХарактеристикаНоменклатуры,
Док.СерияНоменклатуры,
Док.Ссылка.Контрагент,
Док.Качество,
Док.Склад
ДЛЯ ИЗМЕНЕНИЯ РегистрНакопления.ТоварыНаСкладах.Остатки // Блокирующие чтение таблицы остатков регистра для разрешения коллизий многопользовательской работы
ИТОГИ СУММА (ДокументКоличество), МАКСИМУМ(ОстатокБезСерииКоличество), МАКСИМУМ(РезервыКоличество),
МАКСИМУМ(КПередачеКоличество), МАКСИМУМ(РезервыПоДокументуКоличество), Максимум(РезервыПоСерииКоличество),
Максимум(КПередачеБезСерииКоличество), МАКСИМУМ(РезервыПоДокументуБезСерииКоличество),
Максимум(КПолучению), Максимум(КПередачеПоДокументуКоличество), Максимум(КПередачеПоДокументуБезСерииКоличество), Максимум(КПолучениюПоДокументуКоличество)
ПО Номенклатура,
ХарактеристикаНоменклатуры,
Склад
,Качество
Было нормально пока не добавил
|ЛЕВОЕ СОЕДИНЕНИЕ
| РегистрНакопления.РезервПоКонтрагенту.Остатки(, Склад в (&СписокСкладов) И
| %ВыборкаПоНоменклатуре%) КАК РезервыБезКонтрагента
|ПО
| Док.Номенклатура = РезервыБезКонтрагента.Номенклатура
| И Док.ХарактеристикаНоменклатуры = РезервыБезКонтрагента.Характеристика
| И Док.Склад = РезервыБезКонтрагента.Склад
| //СОЕДИНЕНИЕ_ДокументРезерва_Резервы
| //СОЕДИНЕНИЕ_Склад_Резервы
| //СОЕДИНЕНИЕ_Качество_Резервы
//таблица товаров в резерве РезервПоКонтрагенту на складе с учетом контрагента (определяется для строк, которые списываются за счет свободного остатка)
|ЛЕВОЕ СОЕДИНЕНИЕ
| РегистрНакопления.РезервПоКонтрагенту.Остатки(, Склад в (&СписокСкладов) И
| %ВыборкаПоНоменклатуре%) КАК РезервыПоКонтрагенту
|ПО
| Док.Номенклатура = РезервыПоКонтрагенту.Номенклатура
| И Док.ХарактеристикаНоменклатуры = РезервыПоКонтрагенту.Характеристика
| И Док.Склад = РезервыПоКонтрагенту.Склад
| И Док.Контрагент = РезервыПоКонтрагенту.Контрагент
| //СОЕДИНЕНИЕ_ДокументРезерва_Резервы
| //СОЕДИНЕНИЕ_Склад_Резервы
| //СОЕДИНЕНИЕ_Качество_Резервы
Не проводится документ. Как решить проблему?
Ошибка при выполнении обработчика — ‘ОбработкаПроведения’
по причине:
: Ошибка при вызове метода контекста (Выполнить)
РезультатЗапроса = Запрос2.Выполнить();
по причине:
: Поле не найдено «НоменклатураДокумента.Номенклатура»
ПО НоменклатураДокумента.<<?>>Номенклатура = СтоимостьТоваровОстатки.Номенклатура
Процедура ОбработкаПроведения(Отказ, Режим)
Движения.ОстаткиТоваров.Записывать = Истина;
Движения.СтоимостьТоваров.Записывать = Истина;
Движения.Продажи.Записывать = Истина;
//Менеджер временных таблиц
МенеджерВТ = Новый МенеджерВременныхТаблиц;
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = МенеджерВТ;
Запрос.Текст =
«ВЫБРАТЬ
| РасходнаяНакладнаяТовары.Товар,
| РасходнаяНакладнаяТовары.Товар.ВидНоменклатуры КАК ВидНоменклатуры,
| СУММА(РасходнаяНакладнаяТовары.Количество) КАК КоличествоВДокументе,
| СУММА(РасходнаяНакладнаяТовары.Сумма) КАК СуммаВДокументе
|ПОМЕСТИТЬ НоменклатураДокумента
|ИЗ
| Документ.РасходнаяНакладная.Товары КАК РасходнаяНакладнаяТовары
|ГДЕ
| РасходнаяНакладнаяТовары.Ссылка = &Ссылка
|
|СГРУППИРОВАТЬ ПО
| РасходнаяНакладнаяТовары.Товар,
| РасходнаяНакладнаяТовары.Товар.ВидНоменклатуры»;
Запрос.УстановитьПараметр(«Ссылка», Ссылка);
РезультатЗапроса = Запрос.Выполнить();
Запрос2 = Новый Запрос;
Запрос2.МенеджерВременныхТаблиц = МенеджерВТ;
Запрос2.Текст =
«ВЫБРАТЬ
| НоменклатураДокумента.Номенклатура,
| НоменклатураДокумента.ВидНоменклатуры,
| НоменклатураДокумента.КоличествоВДокументе,
| НоменклатураДокумента.СуммаВДокументе,
| ЕСТЬNULL(СтоимостьТоваровОстатки.СтоимостьОстаток, 0) КАК Стоимость,
| ЕСТЬNULL(ОстаткиТоваровОстатки.КоличествоОстаток, 0) КАК Количество
|ИЗ
| НоменклатураДокумента КАК НоменклатураДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СтоимостьТоваров.Остатки(
| ,
| Номенклатура В
| (ВЫБРАТЬ
| НоменклатураДокумента.Номенклатура
| ИЗ
| НоменклатураДокумента)) КАК СтоимостьТоваровОстатки
| ПО НоменклатураДокумента.Номенклатура = СтоимостьТоваровОстатки.Номенклатура
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТоваров.Остатки(
| ,
| Номенклатура В
| (ВЫБРАТЬ
| НоменклатураДокумента.Номенклатура
| ИЗ
| НоменклатураДокумента)) КАК ОстаткиТоваровОстатки
| ПО НоменклатураДокумента.Номенклатура = ОстаткиТоваровОстатки.Номенклатура»;
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Если ВыборкаДетальныеЗаписи.Количество = 0 Тогда
СтоимостьТоваров = 0;
Иначе
СтоимостьТоваров = ВыборкаДетальныеЗаписи.Стоимость / ВыборкаДетальныеЗаписи.Количество;
Если ВыборкаДетальныеЗаписи.ВидНоменклатуры = Перечисления.ВидНоменклатуры.Товар Тогда
Движение = Движения.ОстаткиТоваров.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура;
Движение.Склад = Склад;
Движение.Количество = ВыборкаДетальныеЗаписи.Количество;
Движение = Движения.СтоимостьТоваров.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура;
Движение.Стоимость = ВыборкаДетальныеЗаписи.СтоимостьТовара * ВыборкаДетальныеЗаписи.Количество;
// Регистр Продажи
Движение = Движения.Продажи.Добавить();
Движение.Период = Дата;
Движение.Номенклатура = ВыборкаДетальныеЗаписи.Товар;
Движение.Количество = ВыборкаДетальныеЗаписи.КоличествоВДокументе;
Движение.Сумма = ВыборкаДетальныеЗаписи.СуммаВДокументе;
Движение.Стоимость = ВыборкаДетальныеЗаписи.СтоимостьТовара * ВыборкаДетальныеЗаписи.КоличествоВДокументе;
Если Режим = РежимПроведенияДокумента.Оперативный Тогда
// Проверить отрицательные остатки
Запрос3 = Новый Запрос;
Запрос3.МенеджерВременныхТаблиц = МенеджерВТ;
Запрос3.Текст ;
РезультатЗапроса = Запрос3.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Сообщение = Новый СообщениеПользователю();
Сообщение.Текст = «Не хватает » + Строка(- ВыборкаДетальныеЗаписи.КоличествоОстаток) + » единиц товара «»» + ВыборкаДетальныеЗаписи.Номенклатура + «»»»;
Сообщение.Сообщить();
[ Вопрос дня ] Почему не удается провести документ “Реализация товаров и услуг” с заполненным направлением деятельности в 1С:Комплексная автоматизация 2.4?
Изменения типового функционала линейки конфигураций УТ, КА, ERP иногда вызывает всплеск активности в Мастер-группах. Так, изменения функционала использования направлений деятельности в документах в версиях 1С:УТ 11.4.5, 1С:КА 2.4.5, 1С:ERP 2.4.4, привело к появлению однотипных вопросов в рамках Мастер-группы курса Управленческий учет в типовых конфигурациях 1С (КА 2, УТ 11 и 1C:ERP) – Базовый курс.
Вопрос
Работаю в 1С:Комплексная автоматизация 2 (2.4.11.46). У меня не получается провести документ “Реализация товаров и услуг” с заполненным направлением деятельности без создания заказа покупателя. Система выдает ошибку, что в организации не хватает шкафов, стеллажей и т.п., хотя товар есть и он не в резерве. Если в документе не указывать направление деятельности или делать на основании заказа, то он проводится без проблем. Что я делаю не так, где ошибки в настройках?
Без указания направления деятельности мне по заданию не распределить расходы по амортизации пропорционально выручке.
Ответ
В новых релизах программы изменен функционал использования направлений деятельности в документах. Теперь для того, чтобы выполнить продажу с направлением деятельности (НД) у вас должны быть остатки под это направление деятельности. То есть в документе закупки товара в табличной части (ТЧ) “Товары” в колонке “Назначение” нужно указать направление деятельности (или заказ клиента) под которое выполняется закупка.
Для того, чтобы в документе закупки в ТЧ можно было указать “Назначение”, у вас должна быть включена функциональная опция “Обособленное обеспечение заказов” в разделе “НСИ и администрирование” – “Склад и доставка”.
В поступлении “Назначение” наследуется в аналитику учета по номенклатуре, а “Направление деятельности” (на закладке “Дополнительно”) – в аналитику учета по расчетам с партнерами.
Протестируйте качество нашей работы — получите первую консультацию в подарок.
Большинство вопросов на форумах по проблеме «долго проводятся документы», начинаются с перечисления технических характеристик серверов, сетевых параметров и т.д. А поскольку таких вопросов много, а технические характеристики, как правило, более чем солидные, можно сделать вывод, что «железо» здесь не причем. Рассмотрим другие причины долгого проведения документов в 1С.
Работая с одной из первых версий конфигурации УПП, вместе с бухгалтерами, мы ставили эксперимент – засекали время проведения документа «Реализация товаров и услуг». С момента нажатия кнопки до «отвисания» программы проходило больше 40 секунд. Версия программы была серверной, пользователи работали на сервере посредством RDP. Т.е. с технической точки зрения все было нормально. В базе была одна организация, отсутствовали ограничения в правах, и для «чистоты» эксперимента – только один пользователь. Такое время ожидания мы объясняли для себя так: документ проводился сразу в разрезе трех учетов, создавая огромное количество записей не только в регистрах накопления, но и «отмечаясь» в регистрах сведений. Но то была первая версия УПП. Прошло достаточно много времени, и разработчики должны были оптимизировать режим записи и хранения данных в своих учетных системах. С тех пор, однако, проблема в той или иной степени все-таки сохранилась.
Рис.1 Количество возможных движений в УПП 1.1
Рис.2 Количество возможных движений в конфигурации ERP
Рис.3 Количество возможных движений в БП 3.0
Такое количество регистров в первую очередь обусловлено слишком сложным регламентированным учетом. Упрости законодатель требования к учету, отпадет необходимость хранить данные в таком количестве разрезов. Но это лишь часть проблемы.
Избыточность кода
Если вы когда-нибудь использовали конструктор движений для документа в конфигураторе, то видели, как мало кода при этом создается, и как быстро проводится при этом документ. Но в реальности не все так просто. Необходимость ограничения попытки проведения, например, в прошлом периоде, сразу же рождает необходимость дополнить этот код. Как только у 1С появилась возможность вести учет по нескольким организациям, складам и подразделениям, сразу возникла необходимость в ограничении прав доступа различных пользователей к той или иной информации. И как следствие – ограничение прав доступа на уровне записи.
А как реализуется такая возможность? На каждом этапе проверки добавляется новый код. Возможности проведения, полнота заполнения данных, необходимость записывать документ в разных разрезах – вот причина того, что наш код растет как на дрожжах.
Поскольку все системные администраторы при этом руководствуются принципом «Все, что не запрещено – разрешено», разработчикам приходится выстраивать все новые и новые стены. И с нажатием кнопки «Провести и закрыть», проверки и проводки начинают свое долгое движение по лабиринту.
Рис.4 Код, созданный конструктором движений
Рис.5 Начало обработки проведения в Бухгалтерии предприятия 3.0.
Как видим, этот только «подготовка данных» для записи.
Рис.6 Непосредственное формирование движений в БП 3.0
В каждой строке, по сути, присутствует отсылка к глобальным модулям. Эти скачки между модулями также никак не добавляют скорости работы. Можно подумать: «Это же какие-то миллисекунды», – но именно из них в результате складываются десятки секунд ожидания. Скорость – это величина, характеризующаяся быстротой выполнения. В нашем случае, это скорость выполнения кода, а если кода слишком много, то и скорость выполнения невелика.
Какими бы мощными не были бы компьютеры, и как бы быстро они не реагировали на желания пользователя, они не могут научиться мгновенно преодолевать массы программного кода, выстроенного разработчиками. Защита от ошибок и получение максимально точных данных, вынуждают пользователя ожидать действий программы. Поскольку разработчики конфигураций 1С постоянно трудятся над оптимизацией своих решений, которые на сегодня становятся все более популярными в силу разных обстоятельств, можно надеяться на серьезные подвижки в этой области и на то, что проблема «долго проводятся документы» уйдет в прошлое. И да прибудет с нами код.
-
Привет всем, подскажите где искать. При формировании пишет Поле не найдено «мое Поле». Уже везде смотрел, все вкладки и в настройках перебрал, не могу найти где он его не находит! Макеты не использую, все конструктором.
-
Offline
alexburn
Модераторы
Команда форума
Модератор- Регистрация:
- 5 янв 2009
- Сообщения:
- 15.150
- Симпатии:
- 560
- Баллы:
- 204
Отладчиком смотрели ?
— Объединение сообщений, 8 июл 2015 —
Ой блин, СКД же
— Объединение сообщений, 8 июл 2015 —
Настройки попробуйте сбросить.
-
Offline
Draco
Модераторы
Команда форума
Модератор- Регистрация:
- 28 окт 2009
- Сообщения:
- 13.722
- Симпатии:
- 961
- Баллы:
- 204
На вкладках отборы, сортировка смотрели?
В конфигураторе, выгрузите настроуй в xml, и в пользовательском ее загрузите. -
Пробовал, не помогает
— Объединение сообщений, 8 июл 2015 —
При попытке загрузить схему пишет ошибка преобразования данных XDTO
-
Offline
1cUserAndrew
Профессионал в 1С
Команда форума- Регистрация:
- 27 май 2010
- Сообщения:
- 5.153
- Симпатии:
- 217
- Баллы:
- 104
Попробуй еще раз конструктор запустить.
Возможно ты изменил запрос после того, как создал настройки компоновки, и некоторые поля стали недоступны.
Можешь даже пробежаться по вкладкам и посмотреть, нет ли полей с красными крестиками (они и недоступны). -
Offline
1cUserAndrew
Профессионал в 1С
Команда форума- Регистрация:
- 27 май 2010
- Сообщения:
- 5.153
- Симпатии:
- 217
- Баллы:
- 104
Уточню … Не конструктор запроса имею в виду, а конструктор создания настроек компоновки данных (вкладка «Настройки»).
— Объединение сообщений, 8 июл 2015 —
Больше идей нет (
-
Offline
Draco
Модераторы
Команда форума
Модератор- Регистрация:
- 28 окт 2009
- Сообщения:
- 13.722
- Симпатии:
- 961
- Баллы:
- 204
в пользовательских полях в формулах или в условном оформлении глянь.
Бывают в условное оформление засунут везде поубирают, а там забудут -
Посмотрю конечно, но дело в том что это поле было добавлено мной!
-
Offline
Draco
Модераторы
Команда форума
Модератор- Регистрация:
- 28 окт 2009
- Сообщения:
- 13.722
- Симпатии:
- 961
- Баллы:
- 204
было добавлено или не было?
-
Я в запросе добавил это поле, после чего почему то перестало формироваться
в Модуле отчета ничего по этому поводу. хз где еще смотреть -
Offline
Draco
Модераторы
Команда форума
Модератор- Регистрация:
- 28 окт 2009
- Сообщения:
- 13.722
- Симпатии:
- 961
- Баллы:
- 204
Запрос покажите там есть у Вас {} в запросе?
— Объединение сообщений, 8 июл 2015 —
или отчет уже прикрепите
-
Offline
Draco
Модераторы
Команда форума
Модератор- Регистрация:
- 28 окт 2009
- Сообщения:
- 13.722
- Симпатии:
- 961
- Баллы:
- 204
-
Проблема была в том что в конфигурации есть отчет с таким же именем и 1С пыталась прикрутить настройки того отчета к этому. Переименовал отчет свой и все заработало.
-
Offline
Draco
Модераторы
Команда форума
Модератор- Регистрация:
- 28 окт 2009
- Сообщения:
- 13.722
- Симпатии:
- 961
- Баллы:
- 204
Ну У Вас наверное в системе был отчет. Вы его взяли скоприровали и стали править так же?
Сразу надо было говорить. Баян обсуждалось уже
ВЫБРАТЬ ЗаказКлиентаТовары.Номенклатура, Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки( Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары Ошибка при выполнении запроса. Ошибка при выполнении запроса. по причине: {(1, 20)}: Поле не найдено «ЗаказКлиентаТовары.Дата» ЗаказКлиентаТовары.<<?>>Дата Подскажите, плиз, что не так не пойму
Точно этот запрос выполняется? демоническое обновление? или просто не обновил базу?
точно, я сам его писал ) запрос по остаткам в табл части
ЗаказКлиентаТовары.Ссылка.Дата
демоническое, значит. написано одно, а выполняется другое
я ослеп видимо, не вижу в Запросе поле Дата вобще
вот в том и весь прикол ! )) я тоже мозг себе весь сломал
+1 тоже 3 раза пересмотрел
А что говорит отладчик про текст запроса перед его выполнением?
перечитай до просветления . КЭШ чисти короче
есть динамических списка, один простой работает с таким запросом ВЫБРАТЬ ЗаказКлиента.Ссылка, ЗаказКлиента.Номер, второй работает с запросом в сабже, я пробовал удалить его, второй, ошибка исчезла
и раз Композитор — напиши музыку для этой ошибки… чтонить трагичное
Блин тут про 1С, а я думал дожди, поле…
мда, флуд пошел, печально, в общем 2 дин.списка, второй выдает какую-то хрень
какой флуд? сказано — Кривой КЭШ. Динамическое обновление. Что ещё надо то?
к динамическим спискам отношения не имеет
внешняя обработка ! причем тут динамическое обновление !
возможно, как то влияет тот факт, что отладка производится в конфе, подключенной к хранилищу
вовремя сказано! она тоже может поехать, особенно если изменить запрос, сохранить обработку а в предприятии оставить открытую старую)
потому что в одном случае поле такое есть, а в другом нет
надо сохранить под другим именем, поможет ?
не помогло, (19 )а как кэш почистить ?
проверь… может скэшировалась тоже гденить
для внешних обработок смысла вроде нет чистить кэш. но…
Закрой 1С и снова открой. Потом проверяй. А на будущее — не передавай из формы в модуль объекта ссылку на форму.
Платформа какая? Если не поможет — есть смысл посмотреть в ошибках платформы, для динамических списков видел какую-то ошибку наподобие, Емнип
чего то прочистил в локал сеттингс/1с82 — папки с уи в названии, закрыл все процессы 1с82, щас пеперезапущу
я вчера отлаживал внешнюю печ.форму, где это делал о чем ты написал, но уже после этого закрывал 1с процессы
Файловый вариант или клиент-сервер?
1С:Предприятие 8.2 (8.2.14.528), файловый с подключением к хранилищу
перезапустил 1С, обозвал по-другому обработку — не помогает ничего
я так чувствую, придется 2й динамический список удалять, а вместо него делать таблицу значений, это глюк какой-то, возможно недоработка на уровне платформы…
Это в динамическом списке основной таблице по тч?
А эта обработка, случаем, не делалась правкой другой обработки? Если немного изменить первый список — изменения применяются? Или старая копия остается?
ее вроде так нельзя делать либо добавляй все поля через ссылку
эт очень старая фишка еще с бета версии в запрос по тч с основной таблице он запрашивает и поля ссылки
либо убирай основную таблицу
понял, убрал основную таблицу, Ошибка при выполнении запроса. Ошибка при выполнении запроса. по причине: Ошибка получения данных по причине: Ошибка создания набора данных «НаборДанныхДинамическогоСписка» по причине: Ошибка при исполнении запроса набора данных по причине: {(8, 20)}: Ошибка обработки представления «РегистрНакопления.ТоварыНаСкладах.Остатки:Несоответствие типов (Параметр номер «»1″»)» ЛЕВОЕ СОЕДИНЕНИЕ <<?>>РегистрНакопления.ТоварыНаСкладах.Остатки(
все же пока чего то тоже не идет с , как от этого избавиться, снова прощу помощи
в общем, сделаю таблицей значений
сделай вложенный запрос без основной таблицы это самое простое решение
или сделай соединение с основной ссылкой
Тэги: 1С 8
Комментарии доступны только авторизированным пользователям