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

Ошибка в коде.

Автор Сергей Гуйдя, 04 окт 2015, 12:28

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

Сергей Гуйдя

Народ, приветствую.
Я совсем не программист 1с, но мне надо переделать одну вещь в конфигурации, решил на основе имеющегося документа сделать копию и изменить его под себя. Мне по сути надо изменить в регистре на расход и все, по функционалу все тоже самое.
Вообщем сделать копию документа, не могу провести, выдает ошибку:
Ошибка при выполнении обработчика - 'ОбработкаПроведения'
по причине:
{РегистрСведений.АналитикаУчетаПартий.МодульМенеджера(47)}: Ошибка при вызове метода контекста (Записать)
МенеджерЗаписи.Записать(Ложь);
по причине:
Запись не верна! Значение поля "Документ поступления" не может быть пустым!: АналитикаУчетаПартий: ИП Костюк С.А., , Не облагается НДС, Без НДС, ,  (Регистр сведений: Аналитика учета партий)


Код из модуля менеджера:


#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда


#Область Прочее

// Проверяет корректность заполнения товаров документа возврата в соответствии
// с реализованными товарами с учетом корректировок.
// Вызывается из процедуры документа "ОбработкаПроверкиЗаполнения"
//
// Параметры:
// ДокументВозврата - ДокументОбъект, для которого необходимо осуществить проверки
// Отказ            - Булево - Флаг отказа от проведения документа
//
Процедура ПроверитьКорректностьВозвращаемыхТоваров(Знач ДокументВозврата, Отказ) Экспорт

ТаблицаПроверяемыеТовары = ДокументВозврата.Товары.Выгрузить();

МассивТиповДокументовПродажи = Новый Массив;
МассивТиповДокументовПродажи.Добавить(Тип("ДокументСсылка.ОтчетОРозничныхПродажах"));
МассивТиповДокументовПродажи.Добавить(Тип("ДокументСсылка.РасходнаяНакладная"));

ТаблицаПроверяемыеТовары.Колонки.Добавить("ДокументРеализации", Новый ОписаниеТипов(МассивТиповДокументовПродажи));
ТаблицаПроверяемыеТовары.ЗаполнитьЗначения(ДокументВозврата.ДокументРеализации, "ДокументРеализации");

ТаблицаПроверяемыеТовары.Свернуть("Номенклатура, Характеристика, ДокументРеализации", "Количество, КоличествоЕдиницИзмерения");

Если ТаблицаПроверяемыеТовары.Количество() > 0 Тогда

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| НовыйОбменТовары.Номенклатура КАК Номенклатура,
| НовыйОбменТовары.Характеристика КАК Характеристика,
| НовыйОбменТовары.Количество КАК Количество,
| НовыйОбменТовары.ДокументРеализации КАК ДокументРеализации
|ПОМЕСТИТЬ ПроверяемыеТовары
|ИЗ
| &ТаблицаПроверяемыеТовары КАК НовыйОбменТовары
|   
|ИНДЕКСИРОВАТЬ ПО
| Номенклатура,
| Характеристика
|;
|
|ВЫБРАТЬ
| РасходнаяНакладнаяТовары.Номенклатура,
| РасходнаяНакладнаяТовары.Характеристика,
| СУММА(РасходнаяНакладнаяТовары.Количество) КАК Количество,
| СРЕДНЕЕ(РасходнаяНакладнаяТовары.Цена) КАК Цена,
| РасходнаяНакладнаяТовары.Ссылка КАК ДокументРеализации
|ПОМЕСТИТЬ ДанныеРеализации
|ИЗ
| Документ.РасходнаяНакладная.Товары КАК РасходнаяНакладнаяТовары
|
|ГДЕ
| РасходнаяНакладнаяТовары.Ссылка.Проведен
| И (Номенклатура,Характеристика) В
| (ВЫБРАТЬ
| ПроверяемыеТовары.Номенклатура КАК Номенклатура,
| ПроверяемыеТовары.Характеристика КАК Характеристика
| ИЗ
| ПроверяемыеТовары КАК ПроверяемыеТовары
| ) И Ссылка = &ДокументРеализации
|СГРУППИРОВАТЬ ПО
| РасходнаяНакладнаяТовары.Номенклатура,
| РасходнаяНакладнаяТовары.Характеристика,
| РасходнаяНакладнаяТовары.Ссылка
|
|ОБЪЕДИНИТЬ
|
|ВЫБРАТЬ
| ОтчетОРозничныхПродажахТовары.Номенклатура,
| ОтчетОРозничныхПродажахТовары.Характеристика,
| СУММА(ОтчетОРозничныхПродажахТовары.Количество),
| СРЕДНЕЕ(ОтчетОРозничныхПродажахТовары.Цена),
| ОтчетОРозничныхПродажахТовары.Ссылка
|ИЗ
| Документ.ОтчетОРозничныхПродажах.Товары КАК ОтчетОРозничныхПродажахТовары
|
|ГДЕ
| ОтчетОРозничныхПродажахТовары.Ссылка.Проведен
| И (Номенклатура,Характеристика) В
| (ВЫБРАТЬ
| ПроверяемыеТовары.Номенклатура КАК Номенклатура,
| ПроверяемыеТовары.Характеристика КАК Характеристика
| ИЗ
| ПроверяемыеТовары КАК ПроверяемыеТовары
| ) И Ссылка = &ДокументРеализации
|СГРУППИРОВАТЬ ПО
| ОтчетОРозничныхПродажахТовары.Номенклатура,
| ОтчетОРозничныхПродажахТовары.Характеристика,
| ОтчетОРозничныхПродажахТовары.Ссылка
|
|ИНДЕКСИРОВАТЬ ПО
| Номенклатура,
| Характеристика,
| ДокументРеализации
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ТаблицаВозвратТоваровТовары.Номенклатура КАК Номенклатура,
| ТаблицаВозвратТоваровТовары.Характеристика КАК Характеристика,
| СУММА(ТаблицаВозвратТоваровТовары.Количество) КАК Количество,
| ТаблицаВозвратТоваровТовары.Ссылка.ДокументРеализации КАК ДокументРеализации
|ПОМЕСТИТЬ ДанныеДокументовВозврата
|ИЗ
| ПроверяемыеТовары КАК ПроверяемыеТовары
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.НовыйОбмен.Товары КАК ТаблицаВозвратТоваровТовары
| ПО ПроверяемыеТовары.ДокументРеализации = ТаблицаВозвратТоваровТовары.Ссылка.ДокументРеализации
| И ПроверяемыеТовары.Номенклатура = ТаблицаВозвратТоваровТовары.Номенклатура
| И ПроверяемыеТовары.Характеристика = ТаблицаВозвратТоваровТовары.Характеристика
|ГДЕ
| ТаблицаВозвратТоваровТовары.Ссылка.Проведен
| И ТаблицаВозвратТоваровТовары.Ссылка <> &ДокументВозврата
|
|СГРУППИРОВАТЬ ПО
| ТаблицаВозвратТоваровТовары.Номенклатура,
| ТаблицаВозвратТоваровТовары.Характеристика,
| ТаблицаВозвратТоваровТовары.Ссылка.ДокументРеализации
|
|ИНДЕКСИРОВАТЬ ПО
| Номенклатура,
| Характеристика,
| ДокументРеализации
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ПроверяемыеТовары.Номенклатура КАК Номенклатура,
| ЕСТЬNULL(ДанныеРеализации.Количество, 0) - ЕСТЬNULL(ДанныеДокументовВозврата.Количество, 0) - ЕСТЬNULL(ПроверяемыеТовары.Количество, 0) КАК Количество,
| ПроверяемыеТовары.Характеристика КАК Характеристика,
| ПроверяемыеТовары.ДокументРеализации КАК ДокументРеализации,
| ПроверяемыеТовары.Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| ПроверяемыеТовары.ДокументРеализации.Номер КАК НомерРеализации
|ИЗ
| ДанныеРеализации КАК ДанныеРеализации
| ЛЕВОЕ СОЕДИНЕНИЕ ДанныеДокументовВозврата КАК ДанныеДокументовВозврата
| ПО ДанныеРеализации.ДокументРеализации = ДанныеДокументовВозврата.ДокументРеализации
| И ДанныеРеализации.Номенклатура = ДанныеДокументовВозврата.Номенклатура
| И ДанныеРеализации.Характеристика = ДанныеДокументовВозврата.Характеристика
| ПОЛНОЕ СОЕДИНЕНИЕ ПроверяемыеТовары КАК ПроверяемыеТовары
| ПО ДанныеРеализации.ДокументРеализации = ПроверяемыеТовары.ДокументРеализации
| И ДанныеРеализации.Номенклатура = ПроверяемыеТовары.Номенклатура
| И ДанныеРеализации.Характеристика = ПроверяемыеТовары.Характеристика
|ГДЕ
| ЕСТЬNULL(ДанныеРеализации.Количество, 0) - ЕСТЬNULL(ДанныеДокументовВозврата.Количество, 0) - ЕСТЬNULL(ПроверяемыеТовары.Количество, 0) < 0";

Запрос.УстановитьПараметр("ДокументВозврата", ДокументВозврата.Ссылка);
Запрос.УстановитьПараметр("ДокументРеализации", ДокументВозврата.ДокументРеализации);
Запрос.УстановитьПараметр("ТаблицаПроверяемыеТовары", ТаблицаПроверяемыеТовары);

УстановитьПривилегированныйРежим(Истина);

Результат = Запрос.Выполнить().Выгрузить();
Если Результат.Количество() > 0 Тогда
Отказ = Истина; //по умолчанию истина !!!
СообщитьОбОшибкахКорректностиВозвращаемыхТоваров(Результат);
КонецЕсли;

КонецЕсли;

КонецПроцедуры

// Выводит сообщения об ошибках корректности заполнения возвращаемых товаров
//
// Параметры:
// ТаблицаОшибок          - Выгрузка результата запроса
// ВозвратПоЧеку          - Булево
//
Процедура СообщитьОбОшибкахКорректностиВозвращаемыхТоваров(Знач ТаблицаОшибок)

Для каждого СтрокаОшибки Из ТаблицаОшибок Цикл
СообщениеОбОшибке = НСтр("ru='Возврат по номенклатуре %Товар% превышает количество реализованных товаров по документу продажи %ДокументРеализации% на %Количество% %ЕдиницаИзмерения%'");
Если СтрокаОшибки.Количество < 0 Тогда
Товар = НоменклатураКлиентСервер.ПредставлениеНоменклатурыДляПечати(СтрокаОшибки.Номенклатура, СтрокаОшибки.Характеристика, СтрокаОшибки.ЕдиницаИзмерения);
СообщениеОбОшибке = СтрЗаменить(СообщениеОбОшибке, "%Товар%",          Товар);
СообщениеОбОшибке = СтрЗаменить(СообщениеОбОшибке, "%Количество%", -СтрокаОшибки.Количество);
СообщениеОбОшибке = СтрЗаменить(СообщениеОбОшибке, "%ЕдиницаИзмерения%", СтрокаОшибки.ЕдиницаИзмерения);
СообщениеОбОшибке = СтрЗаменить(СообщениеОбОшибке, "%ДокументРеализации%", СтрокаОшибки.ДокументРеализации);
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(СообщениеОбОшибке);
КонецЕсли;
КонецЦикла;

КонецПроцедуры

#КонецОбласти

#Область Проведение

Функция ТекстЗапросаВременнаяТаблицаТоваров()

ТекстЗапроса =
"ВЫБРАТЬ
| ТаблицаТоваров.НомерСтроки КАК НомерСтроки,
| ТаблицаТоваров.Ссылка КАК Ссылка,
| ТаблицаТоваров.Номенклатура КАК Номенклатура,
| ТаблицаТоваров.Номенклатура.ТипНоменклатуры КАК ТипНоменклатуры,
| ТаблицаТоваров.Характеристика КАК Характеристика,
| ТаблицаТоваров.Количество КАК Количество,
| ТаблицаТоваров.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| ТаблицаТоваров.Цена КАК Цена,
| ТаблицаТоваров.СтавкаНДС КАК СтавкаНДС,
| ТаблицаТоваров.СуммаСНДС - ТаблицаТоваров.СуммаНДС КАК Сумма,
| ТаблицаТоваров.СуммаНДС КАК СуммаНДС,
| ТаблицаТоваров.СуммаСНДС КАК СуммаСНДС,
| ТаблицаТоваров.СуммаБезСкидки КАК СуммаБезСкидки,
| ТаблицаТоваров.СуммаБезСкидкиСНДС КАК СуммаБезСкидкиСНДС,
| ТаблицаТоваров.Себестоимость КАК Себестоимость,
| ТаблицаТоваров.ИдентификаторСтроки КАК ИдентификаторСтроки,
| ВЫБОР
| КОГДА ТаблицаТоваров.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)
| И &ВернутьМногооборотнуюТару
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ЭтоТараКВозврату,
| ВЫБОР
| КОГДА ТаблицаТоваров.Номенклатура.ВидНоменклатуры.МетодОценкиСтоимости = ЗНАЧЕНИЕ(Перечисление.МетодыОценкиСтоимостиТоваров.ФИФО)
| И НЕ ТаблицаТоваров.Номенклатура.Услуга
| ТОГДА АУП.КлючАналитики
| ИНАЧЕ НЕОПРЕДЕЛЕНО
| КОНЕЦ КАК АналитикаУчетаПартий,
| АУН.КлючАналитики КАК АналитикаУчетаНоменклатуры,
| ТаблицаТоваров.Номенклатура.Товар КАК Товар,
| ТаблицаТоваров.Номенклатура.Услуга КАК Услуга
|ПОМЕСТИТЬ ВременнаяТаблицаТоваров
|ИЗ
| Документ.НовыйОбмен.Товары КАК ТаблицаТоваров
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаНоменклатуры КАК АУН
| ПО ТаблицаТоваров.Номенклатура = АУН.Номенклатура
| И ТаблицаТоваров.Характеристика = АУН.Характеристика
| И (&Склад = АУН.Склад)
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаПартий КАК АУП
| ПО ТаблицаТоваров.Ссылка = АУП.ДокументПоступления
| И ТаблицаТоваров.СтавкаНДС = АУП.СтавкаНДС
| И (&Контрагент = АУП.Контрагент)
| И (&НалогообложениеНДС = АУП.НалогообложениеНДС)
| И ЗНАЧЕНИЕ(Справочник.Производители.ПустаяСсылка) = АУП.ПроизводительАлкоголя
|ГДЕ
| ТаблицаТоваров.Ссылка = &Ссылка
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| *
|ИЗ
| ВременнаяТаблицаТоваров КАК ВременнаяТаблицаТоваров";

Возврат ТекстЗапроса;

КонецФункции

Функция ТекстЗапросаОстаткиТоваров()

ТекстЗапроса =
"ВЫБРАТЬ
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК ВидДвижения,
| &Период КАК Период,
| &Организация КАК Организация,
| &Склад КАК Склад,
| ТаблицаТоваров.Номенклатура КАК Номенклатура,
| ТаблицаТоваров.Характеристика КАК Характеристика,
| СУММА(ТаблицаТоваров.Количество) КАК Количество
|ИЗ
| ВременнаяТаблицаТоваров КАК ТаблицаТоваров
|
|СГРУППИРОВАТЬ ПО
| ТаблицаТоваров.Номенклатура,
| ТаблицаТоваров.Характеристика
|";

Возврат ТекстЗапроса;

КонецФункции

Функция ТекстЗапросаСебестоимостьТоваров()

ТекстЗапроса =
"ВЫБРАТЬ
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК ВидДвижения,
| &Период КАК Период,
| МИНИМУМ(ВременнаяТаблицаТоваров.НомерСтроки) КАК НомерСтрокиДокумента,
| &Организация КАК Организация,
| ВременнаяТаблицаТоваров.АналитикаУчетаНоменклатуры,
| ВременнаяТаблицаТоваров.ТипНоменклатуры,
| ВременнаяТаблицаТоваров.АналитикаУчетаПартий,
| СУММА(ВременнаяТаблицаТоваров.Количество) КАК Количество,
| СУММА(ВЫРАЗИТЬ(ВЫБОР
| КОГДА &УказанДокументРеализации
| ТОГДА СебестоимостьТоваровОбороты.СуммаРасход / СебестоимостьТоваровОбороты.КоличествоРасход * ВременнаяТаблицаТоваров.Количество
| ИНАЧЕ ВЫБОР
| КОГДА &СуммаВключаетНДС
| ТОГДА ВременнаяТаблицаТоваров.Себестоимость
| ИНАЧЕ ВременнаяТаблицаТоваров.Себестоимость
| КОНЕЦ * &КоэффициентПересчетаВВалютуУПР
| КОНЕЦ КАК ЧИСЛО(15, 2))) КАК Сумма,
| СУММА(ВЫРАЗИТЬ(ВЫБОР
| КОГДА &УказанДокументРеализации
| ТОГДА СебестоимостьТоваровОбороты.СуммаНДСРасход / СебестоимостьТоваровОбороты.КоличествоРасход * ВременнаяТаблицаТоваров.Количество
| ИНАЧЕ 0
| КОНЕЦ КАК ЧИСЛО(15, 2))) КАК СуммаНДС,
| &ХозяйственнаяОперация
|ПОМЕСТИТЬ ВТСебестоимостьТоваров
|ИЗ
| ВременнаяТаблицаТоваров КАК ВременнаяТаблицаТоваров
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СебестоимостьТоваров.Обороты(
| ,
| ,
| Авто,
| АналитикаУчетаНоменклатуры В
| (ВЫБРАТЬ
| ВременнаяТаблицаТоваров.АналитикаУчетаНоменклатуры
| ИЗ
| ВременнаяТаблицаТоваров КАК ВременнаяТаблицаТоваров)) КАК СебестоимостьТоваровОбороты
| ПО ВременнаяТаблицаТоваров.АналитикаУчетаНоменклатуры = СебестоимостьТоваровОбороты.АналитикаУчетаНоменклатуры
| И (&ДокументРеализации = СебестоимостьТоваровОбороты.Регистратор)
|ГДЕ
| НЕ ВременнаяТаблицаТоваров.Услуга
| И НЕ ВременнаяТаблицаТоваров.ЭтоТараКВозврату
|
|СГРУППИРОВАТЬ ПО
| ВременнаяТаблицаТоваров.АналитикаУчетаНоменклатуры,
| ВременнаяТаблицаТоваров.ТипНоменклатуры,
| ВременнаяТаблицаТоваров.АналитикаУчетаПартий
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| *
|ИЗ
| ВТСебестоимостьТоваров КАК ВТСебестоимостьТоваров";

Возврат ТекстЗапроса;

КонецФункции

Функция ТекстЗапросаРасчетыСПокупателями()

ТекстЗапроса =
"ВЫБРАТЬ
| &Период КАК Период,
| &Период КАК ДатаРегистратора,
| &Период КАК ДатаПлатежа,
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) КАК ВидДвижения,
| &Организация КАК Организация,
| &Контрагент КАК Контрагент,
| &Договор КАК Договор,
| ВЫБОР
| КОГДА &РасчетыПоНакладным
| ТОГДА &ДокументРеализации
| ИНАЧЕ &Договор
| КОНЕЦ КАК ОбъектРасчетов,
| &ВалютаВзаиморасчетов КАК Валюта,
| &ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| СУММА(ТаблицаТоваров.СуммаСНДС) КАК СуммаВВалютеДокумента,
| ВЫРАЗИТЬ(СУММА(ТаблицаТоваров.СуммаСНДС) * &КоэффициентПересчетаВВалютуУпр КАК ЧИСЛО(15, 2)) КАК СуммаУпр,
| ВЫРАЗИТЬ(СУММА(ТаблицаТоваров.СуммаСНДС) * &КоэффициентПересчетаВВалютуВзаиморасчетов КАК ЧИСЛО(15, 2)) КАК Сумма
|ПОМЕСТИТЬ ВТРасчетыСПокупателями
|ИЗ
| ВременнаяТаблицаТоваров КАК ТаблицаТоваров
|ГДЕ
| ТаблицаТоваров.Ссылка = &Ссылка
| И (ТаблицаТоваров.Номенклатура.ТипНоменклатуры <> ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)
| ИЛИ НЕ &ВернутьМногооборотнуюТару)
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| *
|ИЗ
| ВТРасчетыСПокупателями КАК ВТРасчетыСПокупателями";

Возврат ТекстЗапроса;

КонецФункции

Функция ТекстЗапросаТаблицаПродажи()

ТекстЗапроса =
"ВЫБРАТЬ
| &Период КАК Период,
| &ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| &Подразделение КАК Подразделение,
| &Организация КАК Организация,
| ТаблицаТоваров.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| &Склад КАК Склад,
| ТаблицаТоваров.ИдентификаторСтроки КАК ИдентификаторСтроки,
| &Контрагент КАК Контрагент,
| &Договор КАК Договор,
| ВЫБОР
| КОГДА ТаблицаТоваров.Услуга
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.Услуга)
| ИНАЧЕ ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.Товар)
| КОНЕЦ КАК ТипЗапасов,
| ТаблицаТоваров.СтавкаНДС КАК СтавкаНДС,
| &НалогообложениеНДС КАК НалогообложениеНДС,
| &Валюта КАК ВалютаДокумента,
| -СУММА(ТаблицаТоваров.Количество) КАК Количество,
| -МИНИМУМ(ТаблицаТоваров.СуммаСНДС) КАК СуммаВВалютеДокумента,
| -МИНИМУМ(ТаблицаТоваров.СуммаСНДС - ТаблицаТоваров.СуммаНДС) КАК СуммаБезНДСВВалютеДокумента,
| -ВЫРАЗИТЬ(МИНИМУМ(ТаблицаТоваров.СуммаСНДС) * &КоэффициентПересчетаВВалютуВзаиморасчетов КАК ЧИСЛО(15, 2)) КАК СуммаВВалютеВзаиморасчетов,
| -ВЫРАЗИТЬ(МИНИМУМ(ТаблицаТоваров.СуммаСНДС - ТаблицаТоваров.СуммаНДС) * &КоэффициентПересчетаВВалютуВзаиморасчетов КАК ЧИСЛО(15, 2)) КАК СуммаБезНДСВВалютеВзаиморасчетов,
| -ВЫРАЗИТЬ(МИНИМУМ(ТаблицаТоваров.СуммаСНДС) * &КоэффициентПересчетаВВалютуУПР КАК ЧИСЛО(15, 2)) КАК СуммаВыручки,
| -ВЫРАЗИТЬ(МИНИМУМ(ТаблицаТоваров.СуммаСНДС - ТаблицаТоваров.СуммаНДС) * &КоэффициентПересчетаВВалютуУПР КАК ЧИСЛО(15, 2)) КАК СуммаВыручкиБезНДС,
| -ВЫРАЗИТЬ(МИНИМУМ(ТаблицаТоваров.СуммаБезСкидки) * &КоэффициентПересчетаВВалютуУПР КАК ЧИСЛО(15, 2)) КАК СуммаВыручкиБезСкидки,
| -ВЫРАЗИТЬ(МИНИМУМ(ТаблицаТоваров.СуммаБезСкидкиСНДС) * &КоэффициентПересчетаВВалютуУПР КАК ЧИСЛО(15, 2)) КАК СуммаВыручкиБезСкидкиБезНДС,
| -СУММА(ТаблицаТоваров.Себестоимость
) КАК Себестоимость,
| &ВалютаВзаиморасчетов КАК ВалютаВзаиморасчетов,
| &Ссылка КАК ДокументДвижения
|ИЗ
| ВременнаяТаблицаТоваров КАК ТаблицаТоваров
|ГДЕ
| НЕ ТаблицаТоваров.ЭтоТараКВозврату
|
|СГРУППИРОВАТЬ ПО
| ТаблицаТоваров.ИдентификаторСтроки,
| ТаблицаТоваров.АналитикаУчетаНоменклатуры,
| ТаблицаТоваров.СтавкаНДС,
| ВЫБОР
| КОГДА ТаблицаТоваров.Услуга
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.Услуга)
| ИНАЧЕ ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.Товар)
| КОНЕЦ";

Возврат ТекстЗапроса;

КонецФункции

Функция ТекстЗапросаТаблицаЗаказыПокупателей()

ТекстЗапроса =
"ВЫБРАТЬ
| ТаблицаТоваров.Ссылка.ДокументРеализации.ДокументОснование КАК ЗаказПокупателя,
| ТаблицаТоваров.Номенклатура КАК Номенклатура,
| ТаблицаТоваров.Ссылка.Организация КАК Организация,
| ТаблицаТоваров.Характеристика КАК Характеристика,
| ТаблицаТоваров.Ссылка.Склад КАК Склад,
| СУММА(ТаблицаТоваров.Количество) КАК Количество,
| СУММА(ТаблицаТоваров.СуммаСНДС) КАК Сумма
|ПОМЕСТИТЬ ВременнаяТаблицаЗаказыПокупателей
|ИЗ
| ВременнаяТаблицаТоваров КАК ТаблицаТоваров
|ГДЕ
| ТаблицаТоваров.Ссылка.ДокументРеализации.ДокументОснование <> ЗНАЧЕНИЕ(Документ.ЗаказПокупателя.ПустаяСсылка)
| И ТаблицаТоваров.Ссылка.ДокументРеализации.ДокументОснование ССЫЛКА Документ.ЗаказПокупателя
|
|СГРУППИРОВАТЬ ПО
| ТаблицаТоваров.Ссылка.ДокументРеализации.ДокументОснование,
| ТаблицаТоваров.Номенклатура,
| ТаблицаТоваров.Ссылка.Организация,
| ТаблицаТоваров.Характеристика,
| ТаблицаТоваров.Ссылка.Склад
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК ВидДвижения,
| &ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| &Период КАК Период,
| ВременнаяТаблицаЗаказыПокупателей.ЗаказПокупателя,
| ВременнаяТаблицаЗаказыПокупателей.Номенклатура,
| ВременнаяТаблицаЗаказыПокупателей.Организация,
| ВременнаяТаблицаЗаказыПокупателей.Характеристика,
| ВременнаяТаблицаЗаказыПокупателей.Склад,
//| ВременнаяТаблицаЗаказыПокупателей.Количество,
//| ВременнаяТаблицаЗаказыПокупателей.Сумма
| ВЫБОР
| КОГДА ВременнаяТаблицаЗаказыПокупателей.Количество > ЕСТЬNULL(ЗаказыПокупателейОбороты.КоличествоРасход, 0)
| ТОГДА ЕСТЬNULL(ЗаказыПокупателейОбороты.КоличествоРасход, 0)
| ИНАЧЕ ВременнаяТаблицаЗаказыПокупателей.Количество
| КОНЕЦ КАК Количество,
| ВЫБОР
| КОГДА ВременнаяТаблицаЗаказыПокупателей.Количество > ЕСТЬNULL(ЗаказыПокупателейОбороты.КоличествоРасход, 0)
| ТОГДА ВременнаяТаблицаЗаказыПокупателей.Количество - ЕСТЬNULL(ЗаказыПокупателейОбороты.КоличествоРасход, 0)
| ИНАЧЕ 0
| КОНЕЦ КАК КоличествоПревышения,
| ВЫБОР
| КОГДА ВременнаяТаблицаЗаказыПокупателей.Сумма > ЕСТЬNULL(ЗаказыПокупателейОбороты.СуммаРасход, 0)
| ТОГДА ЕСТЬNULL(ЗаказыПокупателейОбороты.СуммаРасход, 0)
| ИНАЧЕ ВременнаяТаблицаЗаказыПокупателей.Сумма
| КОНЕЦ КАК Сумма,
| ВЫБОР
| КОГДА ВременнаяТаблицаЗаказыПокупателей.Сумма > ЕСТЬNULL(ЗаказыПокупателейОбороты.СуммаРасход, 0)
| ТОГДА ВременнаяТаблицаЗаказыПокупателей.Сумма - ЕСТЬNULL(ЗаказыПокупателейОбороты.СуммаРасход, 0)
| ИНАЧЕ 0
| КОНЕЦ КАК СуммаПревышения
|ИЗ
| ВременнаяТаблицаЗаказыПокупателей КАК ВременнаяТаблицаЗаказыПокупателей
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыПокупателей.Обороты(, , Авто, ) КАК ЗаказыПокупателейОбороты
| ПО ВременнаяТаблицаЗаказыПокупателей.Номенклатура = ЗаказыПокупателейОбороты.Номенклатура
| И ВременнаяТаблицаЗаказыПокупателей.Характеристика = ЗаказыПокупателейОбороты.Характеристика
|ГДЕ
|   ЗаказыПокупателейОбороты.Регистратор = &ДокументРеализации ";

Возврат ТекстЗапроса;

КонецФункции

Функция ТекстЗапросаТаблицаЗаказыПокупателейОбороты()

ТекстЗапроса =
"ВЫБРАТЬ
| ТаблицаТоваров.НомерСтроки КАК НомерСтроки,
| &ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| &Период КАК Период,
| ТаблицаТоваров.Ссылка.ДокументРеализации.ДокументОснование КАК ЗаказПокупателя,
| ТаблицаТоваров.Номенклатура КАК Номенклатура,
| ТаблицаТоваров.Ссылка.Организация КАК Организация,
| ТаблицаТоваров.Характеристика КАК Характеристика,
| ТаблицаТоваров.Ссылка.Склад КАК Склад,
| ТаблицаТоваров.Количество КАК КоличествоФакт,
| ТаблицаТоваров.СуммаСНДС КАК СуммаФакт
|ИЗ
| ВременнаяТаблицаТоваров КАК ТаблицаТоваров
|ГДЕ
| ТаблицаТоваров.Ссылка.ДокументРеализации.ДокументОснование <> ЗНАЧЕНИЕ(Документ.ЗаказПокупателя.ПустаяСсылка)
| И ТаблицаТоваров.Ссылка.ДокументРеализации.ДокументОснование ССЫЛКА Документ.ЗаказПокупателя
|
|УПОРЯДОЧИТЬ ПО
| НомерСтроки";

Возврат ТекстЗапроса;

КонецФункции

Функция ТекстЗапросаТаблицаУправленческий()

ТекстЗапроса =
"ВЫБРАТЬ
| &Период КАК Период,
| &ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| &Организация КАК Организация,
| НЕОПРЕДЕЛЕНО КАК ВалютаДт,
| НЕОПРЕДЕЛЕНО КАК ВалютаКт,
| ЗНАЧЕНИЕ(ПланСчетов.Управленческий.СебестоимостьПродаж) КАК СчетДт,
| ВЫБОР
| КОГДА ВТСебестоимостьТоваров.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Продукция)
| ТОГДА ЗНАЧЕНИЕ(ПланСчетов.Управленческий.ГотоваяПродукция)
| ИНАЧЕ ЗНАЧЕНИЕ(ПланСчетов.Управленческий.Товары)
| КОНЕЦ КАК СчетКт,
| 0 КАК СуммаВалДт,
| 0 КАК СуммаВалКт,
| -ВЫРАЗИТЬ(СУММА(ВТСебестоимостьТоваров.Сумма + ВТСебестоимостьТоваров.СуммаНДС * ВЫБОР
| КОГДА &СуммаВключаетНДС
| ТОГДА 0
| ИНАЧЕ 1
| КОНЕЦ) КАК ЧИСЛО(15, 2)) КАК Сумма,
| ""Сторно списания запасов"" КАК Содержание
|ИЗ
| ВТСебестоимостьТоваров КАК ВТСебестоимостьТоваров
|
|СГРУППИРОВАТЬ ПО
| ВЫБОР
| КОГДА ВТСебестоимостьТоваров.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Продукция)
| ТОГДА ЗНАЧЕНИЕ(ПланСчетов.Управленческий.ГотоваяПродукция)
| ИНАЧЕ ЗНАЧЕНИЕ(ПланСчетов.Управленческий.Товары)
| КОНЕЦ
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| &Период,
| &ХозяйственнаяОперация,
| &Организация,
| НЕОПРЕДЕЛЕНО,
| НЕОПРЕДЕЛЕНО,
| ЗНАЧЕНИЕ(ПланСчетов.Управленческий.ДоходыОтПродаж),
| ЗНАЧЕНИЕ(ПланСчетов.Управленческий.ДебиторскаяЗадолженность),
| 0,
| -СУММА(ВТРасчетыСПокупателями.Сумма),
| -СУММА(ВТРасчетыСПокупателями.СуммаУпр),
| ""Сторно выручки""
|ИЗ
| ВТРасчетыСПокупателями КАК ВТРасчетыСПокупателями";

Возврат ТекстЗапроса;

КонецФункции

Процедура ИнициализироватьКлючиАналитикиНоменклатуры(Знач Параметры)

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТаблицаТоваров.Номенклатура КАК Номенклатура,
| ТаблицаТоваров.Характеристика КАК Характеристика,
| &Склад КАК Склад
|ПОМЕСТИТЬ ТаблицаТоваровДокумента
|ИЗ
| Документ.НовыйОбмен.Товары КАК ТаблицаТоваров
|ГДЕ
| ТаблицаТоваров.Ссылка = &Ссылка";
                                                                         
Запрос.УстановитьПараметр("Ссылка", Параметры.Ссылка);
Запрос.УстановитьПараметр("Склад", Параметры.Склад);

СтруктураПараметров = Новый Структура;
СтруктураПараметров.Вставить("МенеджерВременныхТаблиц", Новый МенеджерВременныхТаблиц);
СтруктураПараметров.Вставить("ИмяВременнойТаблицы", "ТаблицаТоваровДокумента");

Запрос.МенеджерВременныхТаблиц = СтруктураПараметров.МенеджерВременныхТаблиц;
Результат = Запрос.Выполнить();
РегистрыСведений.АналитикаУчетаНоменклатуры.Заполнить(СтруктураПараметров);

КонецПроцедуры

Процедура ИнициализироватьКлючиАналитикиУчетаПартий(Параметры)


Запрос = Новый Запрос("ВЫБРАТЬ РАЗЛИЧНЫЕ
                      | &НалогообложениеНДС КАК НалогообложениеНДС,
                      | &Контрагент КАК Контрагент,
                      | &Ссылка КАК ДокументПоступления,
  | &ПроизводительАлкоголя КАК ПроизводительАлкоголя,
  | &ВидАлкогольнойПродукции КАК ВидАлкогольнойПродукции,
                      | ТаблицаТоваров.СтавкаНДС КАК СтавкаНДС
                      |ПОМЕСТИТЬ ТаблицаТоваровДокумента
                      |ИЗ
                      | Документ.НовыйОбмен.Товары КАК ТаблицаТоваров
                      |ГДЕ
                      | ТаблицаТоваров.Ссылка = &Ссылка");

                                                                     
Запрос.УстановитьПараметр("НалогообложениеНДС", Параметры.НалогообложениеНДС);
Запрос.УстановитьПараметр("Контрагент", Параметры.Контрагент);
Запрос.УстановитьПараметр("ПроизводительАлкоголя", Справочники.Производители.ПустаяСсылка());
Запрос.УстановитьПараметр("ВидАлкогольнойПродукции", Справочники.ВидыАлкогольнойПродукции.ПустаяСсылка());
Запрос.УстановитьПараметр("Ссылка", Параметры.Ссылка);


//Сообщить(ТаблицаТовар

СтруктураПараметров = Новый Структура;
СтруктураПараметров.Вставить("МенеджерВременныхТаблиц", Новый МенеджерВременныхТаблиц);
СтруктураПараметров.Вставить("ИмяВременнойТаблицы", "ТаблицаТоваровДокумента");

Запрос.МенеджерВременныхТаблиц = СтруктураПараметров.МенеджерВременныхТаблиц;
Результат = Запрос.Выполнить();

//Сообщить(Результат);

РегистрыСведений.АналитикаУчетаПартий.Заполнить(СтруктураПараметров);

КонецПроцедуры

Процедура ЗаполнитьПараметрыИнициализации(Запрос, ДокументСсылка, ДополнительныеСвойства)

Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.УстановитьПараметр("Ссылка", ДокументСсылка);

Запрос.Текст =
"ВЫБРАТЬ
| ДанныеДокумента.Дата КАК Период,
| ДанныеДокумента.Ссылка КАК Ссылка,
| ДанныеДокумента.Организация КАК Организация,
| ДанныеДокумента.Контрагент КАК Поставщик,
| ДанныеДокумента.Контрагент КАК Контрагент,
| ДанныеДокумента.Валюта КАК Валюта,
| ДанныеДокумента.ЦенаВключаетНДС КАК ЦенаВключаетНДС,
| ДанныеДокумента.ВалютаВзаиморасчетов КАК ВалютаВзаиморасчетов,
| ДанныеДокумента.НалогообложениеНДС КАК НалогообложениеНДС,
| ДанныеДокумента.Склад КАК Склад,
| ДанныеДокумента.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ДанныеДокумента.Подразделение КАК Подразделение,
| ДанныеДокумента.Договор КАК Договор,
| ДанныеДокумента.Договор.ВалютаРасчетов КАК ВалютаДоговора,
| ДанныеДокумента.Договор.УсловияСотрудничестваСПоставщиком КАК УсловияСотрудничества,
| ДанныеДокумента.ДокументРеализации КАК ДокументРеализации,
| Ложь КАК ВернутьМногооборотнуюТару,
| ВЫБОР
| КОГДА ДанныеДокумента.Договор.ПорядокРасчетов = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоДоговорамКонтрагентов)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК РасчетыПоДоговорам,
| ВЫБОР
| КОГДА ДанныеДокумента.Договор.ПорядокРасчетов = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоНакладным)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК РасчетыПоНакладным,
| ДанныеДокумента.СуммаДокумента КАК СуммаДокумента,
| ДанныеДокумента.Кратность КАК Кратность,
| ДанныеДокумента.Курс КАК Курс,
| СуммаВключаетНДС.Значение КАК СуммаВключаетНДС,
| ИспользоватьУправленческийПланСчетов.Значение КАК ИспользоватьУправленческийПланСчетов
|ПОМЕСТИТЬ Реквизиты
|ИЗ
| Документ.НовыйОбмен КАК ДанныеДокумента,
| Константа.СуммаВключаетНДС КАК СуммаВключаетНДС,
| Константа.ИспользоватьУправленческийПланСчетов КАК ИспользоватьУправленческийПланСчетов
|ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| *
|ИЗ
| Реквизиты КАК Реквизиты";

ТаблицаРеквизиты = Запрос.Выполнить().Выгрузить();

Реквизиты = ОбщегоНазначения.СтрокаТаблицыЗначенийВСтруктуру(ТаблицаРеквизиты[0]);

ДополнительныеСвойства.ДляПроведения.Вставить("Реквизиты", Реквизиты);

Для каждого ЭлементСтруктуры Из Реквизиты Цикл
Запрос.УстановитьПараметр(ЭлементСтруктуры.Ключ, ЭлементСтруктуры.Значение);
КонецЦикла;

Запрос.УстановитьПараметр("МоментКонтроля", ДополнительныеСвойства.ДляПроведения.МоментКонтроля);
Запрос.УстановитьПараметр("ПериодКонтроля", ДополнительныеСвойства.ДляПроведения.ПериодКонтроля);

СтруктураВалютыРасчетов = Новый Структура("Валюта, Курс, Кратность", Реквизиты.ВалютаВзаиморасчетов, Реквизиты.Курс, Реквизиты.Кратность);
Коэффициенты = РаботаСКурсамиВалютТрактиръ.ПолучитьКоэффициентыПересчетаВалюты(Реквизиты.Валюта, СтруктураВалютыРасчетов, Реквизиты.Период);

Запрос.УстановитьПараметр("ВалютаРегламентированногоУчета", Константы.ВалютаРегламентированногоУчета.Получить());
Запрос.УстановитьПараметр("ВалютаУправленческогоУчета", ДоходыИРасходыСервер.ПолучитьВалютуУправленческогоУчета());
Запрос.УстановитьПараметр("ЦенаВключаетНДС",                              ?(Реквизиты.ЦенаВключаетНДС, 0, 1));
Запрос.УстановитьПараметр("КоэффициентПересчетаВВалютуУПР",              Коэффициенты.КоэффициентПересчетаВВалютуУПР);
Запрос.УстановитьПараметр("КоэффициентПересчетаВВалютуРегл",              Коэффициенты.КоэффициентПересчетаВВалютуРегл);
Запрос.УстановитьПараметр("КоэффициентПересчетаВВалютуВзаиморасчетов",    Коэффициенты.КоэффициентПересчетаВВалютуВзаиморасчетов);

Запрос.УстановитьПараметр("ДокументВозврата", ДокументСсылка);
Запрос.УстановитьПараметр("МоментВремениДоПроведенияДокумента", Новый Граница(ДокументСсылка.МоментВремени(), ВидГраницы.Исключая));
Запрос.УстановитьПараметр("УказанДокументРеализации", ЗначениеЗаполнено(Реквизиты.ДокументРеализации));

//
ИнициализироватьКлючиАналитикиНоменклатуры(Реквизиты);
ИнициализироватьКлючиАналитикиУчетаПартий(Реквизиты);

КонецПроцедуры

Процедура ИнициализироватьДанныеДокумента(ДокументСсылка, ДополнительныеСвойства) Экспорт

////////////////////////////////////////////////////////////////////////////
// Создадим запрос инициализации движений

Запрос = Новый Запрос;
ЗаполнитьПараметрыИнициализации(Запрос, ДокументСсылка, ДополнительныеСвойства);

////////////////////////////////////////////////////////////////////////////
// Сформируем текст запроса
ТекстыЗапроса = ПроведениеСервер.ИнициализацияТаблицыТекстовЗапросов();

НомерТаблицы = 0;
ПроведениеСервер.ДобавитьСтрокуВТаблицуТекстыЗапросов(ТекстыЗапроса, ТекстЗапросаВременнаяТаблицаТоваров() ,"" ,НомерТаблицы);
ПроведениеСервер.ДобавитьСтрокуВТаблицуТекстыЗапросов(ТекстыЗапроса, ТекстЗапросаОстаткиТоваров() ,"ТаблицаОстаткиТоваров" ,НомерТаблицы);
ПроведениеСервер.ДобавитьСтрокуВТаблицуТекстыЗапросов(ТекстыЗапроса, ТекстЗапросаСебестоимостьТоваров() ,"ТаблицаСебестоимостьТоваров" ,НомерТаблицы);
ПроведениеСервер.ДобавитьСтрокуВТаблицуТекстыЗапросов(ТекстыЗапроса, ТекстЗапросаРасчетыСПокупателями() ,"ТаблицаРасчетыСПокупателями" ,НомерТаблицы);
ПроведениеСервер.ДобавитьСтрокуВТаблицуТекстыЗапросов(ТекстыЗапроса, ТекстЗапросаТаблицаПродажи() ,"ТаблицаПродажи" ,НомерТаблицы);
ПроведениеСервер.ДобавитьСтрокуВТаблицуТекстыЗапросов(ТекстыЗапроса, ТекстЗапросаТаблицаЗаказыПокупателей() ,"ТаблицаЗаказыПокупателей" , НомерТаблицы);
ПроведениеСервер.ДобавитьСтрокуВТаблицуТекстыЗапросов(ТекстыЗапроса, ТекстЗапросаТаблицаЗаказыПокупателейОбороты() ,"ТаблицаЗаказыПокупателейОбороты" , НомерТаблицы);

Если ДополнительныеСвойства.ДляПроведения.Реквизиты.ИспользоватьУправленческийПланСчетов Тогда
ПроведениеСервер.ДобавитьСтрокуВТаблицуТекстыЗапросов(ТекстыЗапроса, ТекстЗапросаТаблицаУправленческий() ,"ТаблицаУправленческий" ,НомерТаблицы);
КонецЕсли;

////////////////////////////////////////////////////////////////////////////
// Поместим результаты запроса в дополнительные свойства

ТаблицыДляДвижений = ДополнительныеСвойства.ТаблицыДляДвижений;

ПроведениеСервер.ЗаполнитьТаблицыДвиженийДокумента(Запрос, ТаблицыДляДвижений, ТекстыЗапроса);

КонецПроцедуры

#КонецОбласти


#КонецЕсли


Моих мозгов не хватает, почему ошибка?

дфтын

1. Вопрос. Если у вас ломается машина, иностранная, да на гарантии, например, вы сами полезите её ремонтировать?
Помог? Нажми - Спасибо :)
skype: Soprov1C

Сергей Гуйдя

Сколько денег хотите ?

дфтын

2. Ошибка говорит о том, что вы не заполняете, при записи регистра, измерение - Документ поступления. Возможно оно у вас в запросе не выбирается. в консоле запросов с начало отладьте все запросы.
Помог? Нажми - Спасибо :)
skype: Soprov1C

Сергей Гуйдя

Спасибо за дельный совет, сейчас скачаю обработку и поищу ошибку. Мне в принципе и надо направлен, не могу понять как в 1с отлавливать ошибки.

Теги:

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

Рейтинг@Mail.ru

Поиск