91 — 29.07.14 — 10:42
Функция ПечатьДокумента()
Запрос = Новый Запрос;
Запрос.УстановитьПараметр(«ТекущийДокумент», СсылкаНаОбъект);
Запрос.УстановитьПараметр(«Дата»,СсылкаНаОбъект.Дата);
Запрос.Текст =
«ВЫБРАТЬ РАЗРЕШЕННЫЕ
| РеализацияТоваровУслуг.Номер,
| РеализацияТоваровУслуг.Дата,
| РеализацияТоваровУслуг.ДоговорКонтрагента,
| РеализацияТоваровУслуг.Контрагент КАК Получатель,
| РеализацияТоваровУслуг.Организация,
| РеализацияТоваровУслуг.Организация КАК Поставщик,
| РеализацияТоваровУслуг.СтруктурноеПодразделение,
| РеализацияТоваровУслуг.СуммаДокумента,
| РеализацияТоваровУслуг.ВалютаДокумента,
| РеализацияТоваровУслуг.УчитыватьНДС,
| РеализацияТоваровУслуг.СуммаВключаетНДС,
| РеализацияТоваровУслуг.УчитыватьАкциз,
| РеализацияТоваровУслуг.СуммаВключаетАкциз,
| РеализацияТоваровУслуг.КурсВзаиморасчетов,
| РеализацияТоваровУслуг.КратностьВзаиморасчетов,
| РеализацияТоваровУслуг.Грузополучатель,
| РеализацияТоваровУслуг.Доверенность,
| РеализацияТоваровУслуг.Склад,
| РеализацияТоваровУслуг.ОтпускПроизвел,
| РеализацияТоваровУслуг.ОтпускРазрешил,
| ОтветственныеЛицаСклад.ФизическоеЛицо КАК ОтпустилМОЛ ,
| РеализацияТоваровУслуг.ДоверенностьЧерезКого
|ИЗ
| Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ОтветственныеЛица.СрезПоследних(&Дата, ) КАК ОтветственныеЛицаСклад
| ПО РеализацияТоваровУслуг.Склад = ОтветственныеЛицаСклад.СтруктурнаяЕдиница
|ГДЕ
| РеализацияТоваровУслуг.Ссылка = &ТекущийДокумент»;
Шапка = Запрос.Выполнить().Выбрать();
Шапка.Следующий();
ТекстКурс = «»;
СтрокаВыборкиПоляСодержания = ОбработкаТабличныхЧастей.ПолучитьЧастьЗапросаДляВыбораСодержания(«РеализацияТоваровУслуг»);
Запрос = Новый Запрос;
Запрос.УстановитьПараметр(«ТекущийДокумент», СсылкаНаОбъект);
Запрос.УстановитьПараметр(«ТекущийДокумент», СсылкаНаОбъект);
Запрос.Текст =
«ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ВложенныйЗапросПоТоварам.Номенклатура,
| ВЫРАЗИТЬ(ВложенныйЗапросПоТоварам.Номенклатура.НаименованиеПолное КАК СТРОКА(1000)) КАК Товар,
| ВложенныйЗапросПоТоварам.Номенклатура.Код КАК Код,
| ВложенныйЗапросПоТоварам.Номенклатура.Артикул КАК Артикул,
| ВложенныйЗапросПоТоварам.Количество,
| ВложенныйЗапросПоТоварам.КоличествоМест,
| ВложенныйЗапросПоТоварам.ЕдиницаИзмерения.Представление КАК ЕдиницаЦены,
| ВложенныйЗапросПоТоварам.ЕдиницаИзмеренияМест.Представление КАК ЕдиницаМест,
| ВложенныйЗапросПоТоварам.Номенклатура.БазоваяЕдиницаИзмерения КАК БазЕд,
| ВложенныйЗапросПоТоварам.Коэффициент,
| ВложенныйЗапросПоТоварам.Цена,
| ВложенныйЗапросПоТоварам.Сумма,
| ВложенныйЗапросПоТоварам.СуммаНДС,
| ВложенныйЗапросПоТоварам.СуммаАкциза,
| ВложенныйЗапросПоТоварам.ПроцентСкидкиНаценки КАК Скидка,
| ВложенныйЗапросПоТоварам.ПроцентАвтоматическихСкидок КАК АвтоматическаяСкидка,
| ВложенныйЗапросПоТоварам.ХарактеристикаНоменклатуры КАК Характеристика,
| ВложенныйЗапросПоТоварам.СтранаПроисхождения КАК СтранаПроисхождения,
| ВложенныйЗапросПоТоварам.НомерГТД КАК НомерГТД,
| ВложенныйЗапросПоТоварам.СерияНоменклатуры КАК Серия,
| ВложенныйЗапросПоТоварам.НомерСтроки КАК НомерСтроки,
| ВложенныйЗапросПоТоварам.Метка КАК Метка
|ИЗ
| (ВЫБРАТЬ
| РеализацияТоваровУслуг.Номенклатура КАК Номенклатура,
| РеализацияТоваровУслуг.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| РеализацияТоваровУслуг.ЕдиницаИзмеренияМест КАК ЕдиницаИзмеренияМест,
| РеализацияТоваровУслуг.Номенклатура.БазоваяЕдиницаИзмерения КАК БазЕд,
| РеализацияТоваровУслуг.Коэффициент,
| РеализацияТоваровУслуг.Цена КАК Цена,
| РеализацияТоваровУслуг.СтавкаНДС КАК СтавкаНДС,
| РеализацияТоваровУслуг.ПроцентСкидкиНаценки КАК ПроцентСкидкиНаценки,
| РеализацияТоваровУслуг.ПроцентАвтоматическихСкидок КАК ПроцентАвтоматическихСкидок,
| РеализацияТоваровУслуг.СерияНоменклатуры.НомерГТД КАК НомерГТД,
| РеализацияТоваровУслуг.СерияНоменклатуры.СтранаПроисхождения КАК СтранаПроисхождения,
| РеализацияТоваровУслуг.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
| РеализацияТоваровУслуг.СерияНоменклатуры КАК СерияНоменклатуры,
| СУММА(РеализацияТоваровУслуг.Количество) КАК Количество,
| СУММА(РеализацияТоваровУслуг.КоличествоМест) КАК КоличествоМест,
| СУММА(РеализацияТоваровУслуг.Сумма) КАК Сумма,
| СУММА(РеализацияТоваровУслуг.СуммаНДС) КАК СуммаНДС,
| СУММА(РеализацияТоваровУслуг.СуммаАкциза) КАК СуммаАкциза,
| МИНИМУМ(РеализацияТоваровУслуг.НомерСтроки) КАК НомерСтроки,
| 0 КАК Метка
| ИЗ
| Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслуг
| ГДЕ
| РеализацияТоваровУслуг.Ссылка = &ТекущийДокумент
|
| СГРУППИРОВАТЬ ПО
| РеализацияТоваровУслуг.Номенклатура,
| РеализацияТоваровУслуг.ЕдиницаИзмерения,
| РеализацияТоваровУслуг.ЕдиницаИзмеренияМест,
| РеализацияТоваровУслуг.Номенклатура.БазоваяЕдиницаИзмерения,
| РеализацияТоваровУслуг.Коэффициент,
| РеализацияТоваровУслуг.Цена,
| РеализацияТоваровУслуг.СтавкаНДС,
| РеализацияТоваровУслуг.ПроцентСкидкиНаценки,
| РеализацияТоваровУслуг.ПроцентАвтоматическихСкидок,
| РеализацияТоваровУслуг.СерияНоменклатуры,
| РеализацияТоваровУслуг.ХарактеристикаНоменклатуры,
| РеализацияТоваровУслуг.СерияНоменклатуры.НомерГТД,
| РеализацияТоваровУслуг.СерияНоменклатуры.СтранаПроисхождения) КАК ВложенныйЗапросПоТоварам
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| РеализацияТоваровУслуг.Номенклатура,
| » + СтрокаВыборкиПоляСодержания + «,
| РеализацияТоваровУслуг.Номенклатура.Код,
| РеализацияТоваровУслуг.Номенклатура.Артикул,
| РеализацияТоваровУслуг.Номенклатура.БазоваяЕдиницаИзмерения КАК БазЕд,
| Null,
| РеализацияТоваровУслуг.Количество,
| NULL,
| РеализацияТоваровУслуг.Номенклатура.ЕдиницаХраненияОстатков.Представление,
| NULL,
| РеализацияТоваровУслуг.Цена,
| РеализацияТоваровУслуг.Сумма,
| РеализацияТоваровУслуг.СуммаНДС,
| 0,
| РеализацияТоваровУслуг.ПроцентСкидкиНаценки,
| РеализацияТоваровУслуг.ПроцентАвтоматическихСкидок КАК АвтоматическаяСкидка,
| NULL,
| NULL,
| NULL,
| NULL,
| РеализацияТоваровУслуг.НомерСтроки,
| 1
|ИЗ
| Документ.РеализацияТоваровУслуг.Услуги КАК РеализацияТоваровУслуг
|ГДЕ
| РеализацияТоваровУслуг.Ссылка = &ТекущийДокумент
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| РеализацияТоваровУслуг.Номенклатура,
| ВЫРАЗИТЬ(РеализацияТоваровУслуг.Номенклатура.НаименованиеПолное КАК СТРОКА(1000)),
| РеализацияТоваровУслуг.Номенклатура.Код,
| РеализацияТоваровУслуг.Номенклатура.Артикул,
| РеализацияТоваровУслуг.Количество,
| РеализацияТоваровУслуг.Номенклатура.БазоваяЕдиницаИзмерения КАК БазЕд,
| Null,
| NULL,
| РеализацияТоваровУслуг.Номенклатура.ЕдиницаХраненияОстатков.Представление,
| NULL,
| РеализацияТоваровУслуг.Цена,
| РеализацияТоваровУслуг.Сумма,
| 0,
| 0,
| 0,
| NULL,
| NULL,
| NULL,
| NULL,
| NULL,
| РеализацияТоваровУслуг.НомерСтроки,
| 2
|ИЗ
| Документ.РеализацияТоваровУслуг.ВозвратнаяТара КАК РеализацияТоваровУслуг
|ГДЕ
| РеализацияТоваровУслуг.Ссылка = &ТекущийДокумент
|
|УПОРЯДОЧИТЬ ПО
| Метка,
| НомерСтроки»;
ЗапросТовары = Запрос.Выполнить().Выгрузить();
СтруктурнаяЕдиницаОрганизация = ОбщегоНазначения.ПолучитьСтруктурнуюЕдиницу(Шапка.Организация, Шапка.СтруктурноеПодразделение);
ТабДокумент = Новый ТабличныйДокумент;
ТабДокумент.ИмяПараметровПечати = «ПАРАМЕТРЫ_ПЕЧАТИ_РеализацияТоваровУслуг_Накладная»;
Макет = ПолучитьМакет(«Накладная»);
// Выводим шапку накладной
ОбластьМакета = Макет.ПолучитьОбласть(«Заголовок»);
ОбластьМакета.Параметры.ТекстЗаголовка = РаботаСДиалогами.СформироватьЗаголовокДокумента(ЭтотОбъект, «Расходная накладная»);
ТабДокумент.Вывести(ОбластьМакета);
ОбластьМакета = Макет.ПолучитьОбласть(«Поставщик»);
ПредставлениеПоставщика = ОбщегоНазначения.ОписаниеОрганизации(ОбщегоНазначения.СведенияОЮрФизЛице(СтруктурнаяЕдиницаОрганизация, Шапка.Дата), «ПолноеНаименование,», Ложь);
ОбластьМакета.Параметры.ПредставлениеПоставщика = ПредставлениеПоставщика;
ОбластьМакета.Параметры.Поставщик = СтруктурнаяЕдиницаОрганизация;
ТабДокумент.Вывести(ОбластьМакета);
ОбластьМакета = Макет.ПолучитьОбласть(«Покупатель»);
ПредставлениеПолучателя = ОбщегоНазначения.ОписаниеОрганизации(ОбщегоНазначения.СведенияОЮрФизЛице(Шапка.Получатель, Шапка.Дата), «ПолноеНаименование,», Ложь);
ОбластьМакета.Параметры.ПредставлениеПолучателя = СокрЛП(ПредставлениеПолучателя);
ОбластьМакета.Параметры.Получатель = Шапка.Получатель;
ТабДокумент.Вывести(ОбластьМакета);
Если (Шапка.Получатель <> Шапка.Грузополучатель) И ЗначениеЗаполнено(Шапка.Грузополучатель) Тогда
ОбластьМакета = Макет.ПолучитьОбласть(«Грузополучатель»);
ПредставлениеГрузополучателя = ОбщегоНазначения.ОписаниеОрганизации(ОбщегоНазначения.СведенияОЮрФизЛице(Шапка.Грузополучатель, Шапка.Дата), «ПолноеНаименование,», Ложь);
ОбластьМакета.Параметры.ПредставлениеГрузополучателя = СокрЛП(ПредставлениеГрузополучателя);
ТабДокумент.Вывести(ОбластьМакета);
КонецЕсли;
Если ЗначениеЗаполнено(Шапка.Доверенность) Тогда
ОбластьМакета = Макет.ПолучитьОбласть(«Доверенность»);
ДанныеДляДоверенности = СокрЛП(Шапка.Доверенность);
Если ЗначениеЗаполнено(Шапка.ДоверенностьЧерезКого) Тогда
ДанныеДляДоверенности = ДанныеДляДоверенности + » выданной, » + СокрЛП(Шапка.ДоверенностьЧерезКого);
КонецЕсли;
ОбластьМакета.Параметры.Доверенность = ДанныеДляДоверенности;
ТабДокумент.Вывести(ОбластьМакета);
КонецЕсли;
Если ЗначениеЗаполнено(Шапка.ДоговорКонтрагента) Тогда
ОбластьМакета = Макет.ПолучитьОбласть(«Основание»);
ОбластьМакета.Параметры.Основание = Шапка.ДоговорКонтрагента;
ТабДокумент.Вывести(ОбластьМакета);
КонецЕсли;
Если СсылкаНаОбъект.Товары.Количество() + СсылкаНаОбъект.ВозвратнаяТара.Количество()<> 0 Тогда
ОбластьМакета = Макет.ПолучитьОбласть(«Склад»);
ОбластьМакета.Параметры.Склад = Шапка.Склад;
ТабДокумент.Вывести(ОбластьМакета);
КонецЕсли;
ЕстьСкидки = ЗапросТовары.Итог(«Скидка») + ЗапросТовары.Итог(«АвтоматическаяСкидка») <> 0;
ДопКолонка = Константы.ДополнительнаяКолонкаПечатныхФормДокументов.Получить();
Если ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул Тогда
ВыводитьКоды = Истина;
Колонка = «Артикул»;
ИначеЕсли ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Код Тогда
ВыводитьКоды = Истина;
Колонка = «Код»;
Иначе
ВыводитьКоды = Ложь;
КонецЕсли;
ВыводитьГТД = Ложь;
//Проверим нужно ли выводить страну происхождения и ГТД
Для Каждого Товар ИЗ ЗапросТовары Цикл
Если ЗначениеЗаполнено(Товар.НомерГТД) Или ЗначениеЗаполнено(Товар.СтранаПроисхождения) Тогда
ВыводитьГТД = Истина;
Прервать;
КонецЕсли;
КонецЦикла;
ОбластьНомера = Макет.ПолучитьОбласть(«ШапкаТаблицы|НомерСтроки»);
ОбластьКодов = Макет.ПолучитьОбласть(«ШапкаТаблицы|КолонкаКодов»);
ОбластьТовар = Макет.ПолучитьОбласть(«ШапкаТаблицы|Товар»);
ОбластьДанных = Макет.ПолучитьОбласть(«ШапкаТаблицы|КоличествоЦена»);
ОбластьСкидок = Макет.ПолучитьОбласть(«ШапкаТаблицы|Скидка»);
ОбластьСуммы = Макет.ПолучитьОбласть(«ШапкаТаблицы|Сумма»);
ОбластьГТД = Макет.ПолучитьОбласть(«ШапкаТаблицы|ГТД»);
ТабДокумент.Вывести(ОбластьНомера);
Если ВыводитьКоды Тогда
ОбластьКодов.Параметры.ИмяКолонкиКодов = Колонка;
ТабДокумент.Присоединить(ОбластьКодов);
КонецЕсли;
ТабДокумент.Присоединить(ОбластьТовар);
ТабДокумент.Присоединить(ОбластьДанных);
Если ЕстьСкидки Тогда
ТабДокумент.Присоединить(ОбластьСкидок);
КонецЕсли;
ТабДокумент.Присоединить(ОбластьСуммы);
Если ВыводитьГТД Тогда
ТабДокумент.Присоединить(ОбластьГТД);
КонецЕсли;
ОбластьКолонкаТовар = Макет.Область(«Товар»);
Если Не ВыводитьКоды Тогда
ОбластьКолонкаТовар.ШиринаКолонки = ОбластьКолонкаТовар.ШиринаКолонки +
Макет.Область(«КолонкаКодов»).ШиринаКолонки;
КонецЕсли;
Если НЕ ЕстьСкидки Тогда
ОбластьКолонкаТовар.ШиринаКолонки = ОбластьКолонкаТовар.ШиринаКолонки +
Макет.Область(«СуммаБезСкидки»).ШиринаКолонки +
Макет.Область(«СуммаСкидки»).ШиринаКолонки;
КонецЕсли;
Если НЕ ВыводитьГТД Тогда
ОбластьКолонкаТовар.ШиринаКолонки = ОбластьКолонкаТовар.ШиринаКолонки +
Макет.Область(«ГТД»).ШиринаКолонки;
КонецЕсли;
ОбластьНомера = Макет.ПолучитьОбласть(«Строка|НомерСтроки»);
ОбластьКодов = Макет.ПолучитьОбласть(«Строка|КолонкаКодов»);
ОбластьТовар = Макет.ПолучитьОбласть(«Строка|Товар»);
ОбластьДанных = Макет.ПолучитьОбласть(«Строка|КоличествоЦена»);
ОбластьСкидок = Макет.ПолучитьОбласть(«Строка|Скидка»);
ОбластьСуммы = Макет.ПолучитьОбласть(«Строка|Сумма»);
ОбластьГТД = Макет.ПолучитьОбласть(«Строка|ГТД»);
Сумма = 0;
СуммаНДС = 0;
ВсегоСкидок = 0;
ВсегоБезСкидок = 0;
Для каждого ВыборкаСтрокТовары из ЗапросТовары Цикл
Если Не ЗначениеЗаполнено(ВыборкаСтрокТовары.Номенклатура) Тогда
Сообщить(«В одной из строк не заполнено значение номенклатуры — строка при печати пропущена.», СтатусСообщения.Важное);
Продолжить;
КонецЕсли;
ОбластьНомера.Параметры.НомерСтроки = ЗапросТовары.Индекс(ВыборкаСтрокТовары) + 1;
ТабДокумент.Вывести(ОбластьНомера);
Если ВыводитьКоды Тогда
Если Колонка = «Артикул» Тогда
ОбластьКодов.Параметры.Артикул = ВыборкаСтрокТовары.Артикул;
Иначе
ОбластьКодов.Параметры.Артикул = ВыборкаСтрокТовары.Код;
КонецЕсли;
ТабДокумент.Присоединить(ОбластьКодов);
КонецЕсли;
ОбластьТовар.Параметры.Заполнить(ВыборкаСтрокТовары);
ОбластьТовар.Параметры.Товар = СокрЛП(ВыборкаСтрокТовары.Товар)
+ ФормированиеПечатныхФорм.ПредставлениеСерий(ВыборкаСтрокТовары)
+ ?(ВыборкаСтрокТовары.Метка = 2, » (возвратная тара)», «»);
ТабДокумент.Присоединить(ОбластьТовар);
ОбластьДанных.Параметры.БазЕд=ВыборкаСтрокТовары.БазЕд;
ОбластьДанных.Параметры.Заполнить(ВыборкаСтрокТовары);
//Сухраб от
Если ВыборкаСтрокТовары.Коэффициент > 1 Тогда
ОбластьДанных.Параметры.ЦенаЕд=ВыборкаСтрокТовары.Цена/ВыборкаСтрокТовары.Коэффциент;
ОбластьДанных.Параметры.КоличествоБазЕд=ВыборкаСтрокТовары.ЦенаЕд*ВыборкаСтрокТовары.Количество;
Иначе
ОбластьДанных.Параметры.ЦенаЕд=ВыборкаСтрокТовары.Цена;
ОбластьДанных.Параметры.КоличествоБазЕд=ВыборкаСтрокТовары.Количество;
//Сухраб до
ТабДокумент.Присоединить(ОбластьДанных);
КонецЕсли;
// Скидка может быть NULL
ПроцентСкидки = ?(ЗначениеЗаполнено(ВыборкаСтрокТовары.Скидка),ВыборкаСтрокТовары.Скидка,0)
+ ?(ЗначениеЗаполнено(ВыборкаСтрокТовары.АвтоматическаяСкидка),ВыборкаСтрокТовары.АвтоматическаяСкидка,0);
Если ПроцентСкидки = 100 Тогда
СуммаДляСкидки = Окр(ВыборкаСтрокТовары.Цена * ВыборкаСтрокТовары.Количество,2,1);
Иначе
СуммаДляСкидки = ВыборкаСтрокТовары.Сумма;
КонецЕсли;
Скидка = УправлениеЦенообразованием.ПолучитьСуммуСкидки(СуммаДляСкидки, ПроцентСкидки);
Если ЕстьСкидки Тогда
ОбластьСкидок.Параметры.Скидка = Скидка;
ОбластьСкидок.Параметры.СуммаБезСкидки = ВыборкаСтрокТовары.Сумма + Скидка;
ТабДокумент.Присоединить(ОбластьСкидок);
КонецЕсли;
ОбластьСуммы.Параметры.Заполнить(ВыборкаСтрокТовары);
ТабДокумент.Присоединить(ОбластьСуммы);
Если ВыводитьГТД Тогда
ОбластьГТД.Параметры.НомерГТДСтранаПроисхождения = ?(ЗначениеЗаполнено(ВыборкаСтрокТовары.НомерГТД),
СокрЛП(ВыборкаСтрокТовары.НомерГТД.Код)+»,», «») + Символы.ПС + ВыборкаСтрокТовары.СтранаПроисхождения;
ТабДокумент.Присоединить(ОбластьГТД);
КонецЕсли;
Сумма = Сумма + ВыборкаСтрокТовары.Сумма + ?((Шапка.УчитыватьАкциз И НЕ Шапка.СуммаВключаетАкциз), ВыборкаСтрокТовары.СуммаАкциза, 0);
СуммаНДС = СуммаНДС + ВыборкаСтрокТовары.СуммаНДС;
ВсегоСкидок = ВсегоСкидок + Скидка;
ВсегоБезСкидок = Сумма + ВсегоСкидок;
//прибавим к сумме акциз, если он не включен в стоимость
ВсегоБезСкидок = ВсегоБезСкидок + ?((Шапка.УчитыватьАкциз И НЕ Шапка.СуммаВключаетАкциз), ВыборкаСтрокТовары.СуммаАкциза, 0);
КонецЦикла;
// Вывести Итого
ОбластьНомера = Макет.ПолучитьОбласть(«Итого|НомерСтроки»);
ОбластьКодов = Макет.ПолучитьОбласть(«Итого|КолонкаКодов»);
ОбластьТовар = Макет.ПолучитьОбласть(«Итого|Товар»);
ОбластьДанных = Макет.ПолучитьОбласть(«Итого|КоличествоЦена»);
ОбластьСкидок = Макет.ПолучитьОбласть(«Итого|Скидка»);
ОбластьСуммы = Макет.ПолучитьОбласть(«Итого|Сумма»);
ОбластьГТД = Макет.ПолучитьОбласть(«Итого|ГТД»);
ТабДокумент.Вывести(ОбластьНомера);
Если ВыводитьКоды Тогда
ТабДокумент.Присоединить(ОбластьКодов);
КонецЕсли;
ТабДокумент.Присоединить(ОбластьТовар);
ТабДокумент.Присоединить(ОбластьДанных);
Если ЕстьСкидки Тогда
ОбластьСкидок.Параметры.ВсегоСкидок = ВсегоСкидок;
ОбластьСкидок.Параметры.ВсегоБезСкидок = ВсегоБезСкидок;
ТабДокумент.Присоединить(ОбластьСкидок);
КонецЕсли;
ОбластьСуммы.Параметры.Всего = ОбщегоНазначения.ФорматСумм(Сумма);
ТабДокумент.Присоединить(ОбластьСуммы);
Если ВыводитьГТД Тогда
ТабДокумент.Присоединить(ОбластьГТД);
КонецЕсли;
// Вывести ИтогоНДС
Если Шапка.УчитыватьНДС Тогда
ОбластьНомера = Макет.ПолучитьОбласть(«ИтогоНДС|НомерСтроки»);
ОбластьКодов = Макет.ПолучитьОбласть(«ИтогоНДС|КолонкаКодов»);
ОбластьТовар = Макет.ПолучитьОбласть(«ИтогоНДС|Товар»);
ОбластьДанных = Макет.ПолучитьОбласть(«ИтогоНДС|КоличествоЦена»);
ОбластьСкидок = Макет.ПолучитьОбласть(«ИтогоНДС|Скидка»);
ОбластьСуммы = Макет.ПолучитьОбласть(«ИтогоНДС|Сумма»);
ОбластьГТД = Макет.ПолучитьОбласть(«ИтогоНДС|ГТД»);
ТабДокумент.Вывести(ОбластьНомера);
Если ВыводитьКоды Тогда
ТабДокумент.Присоединить(ОбластьКодов);
КонецЕсли;
ТабДокумент.Присоединить(ОбластьТовар);
ОбластьДанных.Параметры.НДС = ?(Шапка.СуммаВключаетНДС, «В том числе НДС:», «Сумма НДС:»);
ТабДокумент.Присоединить(ОбластьДанных);
Если ЕстьСкидки Тогда
ТабДокумент.Присоединить(ОбластьСкидок);
КонецЕсли;
ОбластьСуммы.Параметры.ВсегоНДС = ОбщегоНазначения.ФорматСумм(СуммаНДС);
ТабДокумент.Присоединить(ОбластьСуммы);
Если ВыводитьГТД Тогда
ТабДокумент.Присоединить(ОбластьГТД);
КонецЕсли;
Если НЕ Шапка.СуммаВключаетНДС ТОгда
ОбластьНомера = Макет.ПолучитьОбласть(«ИтогоСНДС|НомерСтроки»);
ОбластьКодов = Макет.ПолучитьОбласть(«ИтогоСНДС|КолонкаКодов»);
ОбластьТовар = Макет.ПолучитьОбласть(«ИтогоСНДС|Товар»);
ОбластьДанных = Макет.ПолучитьОбласть(«ИтогоСНДС|КоличествоЦена»);
ОбластьСкидок = Макет.ПолучитьОбласть(«ИтогоСНДС|Скидка»);
ОбластьСуммы = Макет.ПолучитьОбласть(«ИтогоСНДС|Сумма»);
ОбластьГТД = Макет.ПолучитьОбласть(«ИтогоСНДС|ГТД»);
ТабДокумент.Вывести(ОбластьНомера);
Если ВыводитьКоды Тогда
ТабДокумент.Присоединить(ОбластьКодов);
КонецЕсли;
ТабДокумент.Присоединить(ОбластьТовар);
ТабДокумент.Присоединить(ОбластьДанных);
Если ЕстьСкидки Тогда
ТабДокумент.Присоединить(ОбластьСкидок);
КонецЕсли;
ОбластьСуммы.Параметры.ВсегоСНДС = Сумма+СуммаНДС;
ТабДокумент.Присоединить(ОбластьСуммы);
Если ВыводитьГТД Тогда
ТабДокумент.Присоединить(ОбластьГТД);
КонецЕсли;
КонецЕсли;
КонецЕсли;
// Вывести Сумму прописью
ОбластьМакета = Макет.ПолучитьОбласть(«СуммаПрописью»);
СуммаКПрописи = Сумма + ?(Шапка.СуммаВключаетНДС, 0, СуммаНДС);
ОбластьМакета.Параметры.ИтоговаяСтрока =»Всего наименований » + ЗапросТовары.Количество()
+ «, на сумму » + ОбщегоНазначения.ФорматСумм(СуммаКПрописи, Шапка.ВалютаДокумента);
ОбластьМакета.Параметры.СуммаПрописью = ОбщегоНазначения.СформироватьСуммуПрописью(СуммаКПрописи, Шапка.ВалютаДокумента);
ТабДокумент.Вывести(ОбластьМакета);
// Вывести подписи
ОбластьМакета = Макет.ПолучитьОбласть(«Подписи»);
// Отпуск товара произвел
Если ЗначениеЗаполнено(Шапка.ОтпускПроизвел) Тогда
ФамилияИмяОтчествоФизЛица = ФормированиеПечатныхФорм.ФамилияИмяОтчество(Шапка.ОтпускПроизвел, Шапка.Дата);
ФамилияИмяОтчествоОтпускПроизвел = ФамилияИмяОтчествоФизЛица.Фамилия + » » + ФамилияИмяОтчествоФизЛица.Имя + » » + ФамилияИмяОтчествоФизЛица.Отчество;
ФИООтпускПроизвел = ОбщегоНазначения.ФамилияИнициалыФизЛица(ФамилияИмяОтчествоОтпускПроизвел);
ОбластьМакета.Параметры.ОтветственныйПредставление = ФИООтпускПроизвел;
Иначе//берем из ответственного по складу
ОбластьМакета.Параметры.ОтветственныйПредставление = ОбщегоНазначения.ФамилияИнициалыФизЛица(Шапка.ОтпустилМОЛ);
КонецЕсли;
ТабДокумент.Вывести(ОбластьМакета);
Возврат ТабДокумент;
КонецФункции // ПечатьДокумента()
Функция ПечатьДокумента()
Запрос = Новый Запрос;
Запрос.УстановитьПараметр(«ТекущийДокумент», СсылкаНаОбъект);
Запрос.УстановитьПараметр(«Дата»,СсылкаНаОбъект.Дата);
Запрос.Текст =
«ВЫБРАТЬ РАЗРЕШЕННЫЕ
| РеализацияТоваровУслуг.Номер,
| РеализацияТоваровУслуг.Дата,
| РеализацияТоваровУслуг.ДоговорКонтрагента,
| РеализацияТоваровУслуг.Контрагент КАК Получатель,
| РеализацияТоваровУслуг.Организация,
| РеализацияТоваровУслуг.Организация КАК Поставщик,
| РеализацияТоваровУслуг.СтруктурноеПодразделение,
| РеализацияТоваровУслуг.СуммаДокумента,
| РеализацияТоваровУслуг.ВалютаДокумента,
| РеализацияТоваровУслуг.УчитыватьНДС,
| РеализацияТоваровУслуг.СуммаВключаетНДС,
| РеализацияТоваровУслуг.УчитыватьАкциз,
| РеализацияТоваровУслуг.СуммаВключаетАкциз,
| РеализацияТоваровУслуг.КурсВзаиморасчетов,
| РеализацияТоваровУслуг.КратностьВзаиморасчетов,
| РеализацияТоваровУслуг.Грузополучатель,
| РеализацияТоваровУслуг.Доверенность,
| РеализацияТоваровУслуг.Склад,
| РеализацияТоваровУслуг.ОтпускПроизвел,
| РеализацияТоваровУслуг.ОтпускРазрешил,
| ОтветственныеЛицаСклад.ФизическоеЛицо КАК ОтпустилМОЛ ,
| РеализацияТоваровУслуг.ДоверенностьЧерезКого
|ИЗ
| Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ОтветственныеЛица.СрезПоследних(&Дата, ) КАК ОтветственныеЛицаСклад
| ПО РеализацияТоваровУслуг.Склад = ОтветственныеЛицаСклад.СтруктурнаяЕдиница
|ГДЕ
| РеализацияТоваровУслуг.Ссылка = &ТекущийДокумент»;
Шапка = Запрос.Выполнить().Выбрать();
Шапка.Следующий();
ТекстКурс = «»;
СтрокаВыборкиПоляСодержания = ОбработкаТабличныхЧастей.ПолучитьЧастьЗапросаДляВыбораСодержания(«РеализацияТоваровУслуг»);
Запрос = Новый Запрос;
Запрос.УстановитьПараметр(«ТекущийДокумент», СсылкаНаОбъект);
Запрос.УстановитьПараметр(«ТекущийДокумент», СсылкаНаОбъект);
Запрос.Текст =
«ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ВложенныйЗапросПоТоварам.Номенклатура,
| ВЫРАЗИТЬ(ВложенныйЗапросПоТоварам.Номенклатура.НаименованиеПолное КАК СТРОКА(1000)) КАК Товар,
| ВложенныйЗапросПоТоварам.Номенклатура.Код КАК Код,
| ВложенныйЗапросПоТоварам.Номенклатура.Артикул КАК Артикул,
| ВложенныйЗапросПоТоварам.Количество,
| ВложенныйЗапросПоТоварам.КоличествоМест,
| ВложенныйЗапросПоТоварам.ЕдиницаИзмерения.Представление КАК ЕдиницаЦены,
| ВложенныйЗапросПоТоварам.ЕдиницаИзмеренияМест.Представление КАК ЕдиницаМест,
| ВложенныйЗапросПоТоварам.Номенклатура.БазоваяЕдиницаИзмерения КАК БазЕд,
| ВложенныйЗапросПоТоварам.Коэффициент,
| ВложенныйЗапросПоТоварам.Цена,
| ВложенныйЗапросПоТоварам.Сумма,
| ВложенныйЗапросПоТоварам.СуммаНДС,
| ВложенныйЗапросПоТоварам.СуммаАкциза,
| ВложенныйЗапросПоТоварам.ПроцентСкидкиНаценки КАК Скидка,
| ВложенныйЗапросПоТоварам.ПроцентАвтоматическихСкидок КАК АвтоматическаяСкидка,
| ВложенныйЗапросПоТоварам.ХарактеристикаНоменклатуры КАК Характеристика,
| ВложенныйЗапросПоТоварам.СтранаПроисхождения КАК СтранаПроисхождения,
| ВложенныйЗапросПоТоварам.НомерГТД КАК НомерГТД,
| ВложенныйЗапросПоТоварам.СерияНоменклатуры КАК Серия,
| ВложенныйЗапросПоТоварам.НомерСтроки КАК НомерСтроки,
| ВложенныйЗапросПоТоварам.Метка КАК Метка
|ИЗ
| (ВЫБРАТЬ
| РеализацияТоваровУслуг.Номенклатура КАК Номенклатура,
| РеализацияТоваровУслуг.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| РеализацияТоваровУслуг.ЕдиницаИзмеренияМест КАК ЕдиницаИзмеренияМест,
| РеализацияТоваровУслуг.Номенклатура.БазоваяЕдиницаИзмерения КАК БазЕд,
| РеализацияТоваровУслуг.Коэффициент,
| РеализацияТоваровУслуг.Цена КАК Цена,
| РеализацияТоваровУслуг.СтавкаНДС КАК СтавкаНДС,
| РеализацияТоваровУслуг.ПроцентСкидкиНаценки КАК ПроцентСкидкиНаценки,
| РеализацияТоваровУслуг.ПроцентАвтоматическихСкидок КАК ПроцентАвтоматическихСкидок,
| РеализацияТоваровУслуг.СерияНоменклатуры.НомерГТД КАК НомерГТД,
| РеализацияТоваровУслуг.СерияНоменклатуры.СтранаПроисхождения КАК СтранаПроисхождения,
| РеализацияТоваровУслуг.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
| РеализацияТоваровУслуг.СерияНоменклатуры КАК СерияНоменклатуры,
| СУММА(РеализацияТоваровУслуг.Количество) КАК Количество,
| СУММА(РеализацияТоваровУслуг.КоличествоМест) КАК КоличествоМест,
| СУММА(РеализацияТоваровУслуг.Сумма) КАК Сумма,
| СУММА(РеализацияТоваровУслуг.СуммаНДС) КАК СуммаНДС,
| СУММА(РеализацияТоваровУслуг.СуммаАкциза) КАК СуммаАкциза,
| МИНИМУМ(РеализацияТоваровУслуг.НомерСтроки) КАК НомерСтроки,
| 0 КАК Метка
| ИЗ
| Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслуг
| ГДЕ
| РеализацияТоваровУслуг.Ссылка = &ТекущийДокумент
|
| СГРУППИРОВАТЬ ПО
| РеализацияТоваровУслуг.Номенклатура,
| РеализацияТоваровУслуг.ЕдиницаИзмерения,
| РеализацияТоваровУслуг.ЕдиницаИзмеренияМест,
| РеализацияТоваровУслуг.Номенклатура.БазоваяЕдиницаИзмерения,
| РеализацияТоваровУслуг.Коэффициент,
| РеализацияТоваровУслуг.Цена,
| РеализацияТоваровУслуг.СтавкаНДС,
| РеализацияТоваровУслуг.ПроцентСкидкиНаценки,
| РеализацияТоваровУслуг.ПроцентАвтоматическихСкидок,
| РеализацияТоваровУслуг.СерияНоменклатуры,
| РеализацияТоваровУслуг.ХарактеристикаНоменклатуры,
| РеализацияТоваровУслуг.СерияНоменклатуры.НомерГТД,
| РеализацияТоваровУслуг.СерияНоменклатуры.СтранаПроисхождения) КАК ВложенныйЗапросПоТоварам
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| РеализацияТоваровУслуг.Номенклатура,
| » + СтрокаВыборкиПоляСодержания + «,
| РеализацияТоваровУслуг.Номенклатура.Код,
| РеализацияТоваровУслуг.Номенклатура.Артикул,
| РеализацияТоваровУслуг.Номенклатура.БазоваяЕдиницаИзмерения КАК БазЕд,
| Null,
| РеализацияТоваровУслуг.Количество,
| NULL,
| РеализацияТоваровУслуг.Номенклатура.ЕдиницаХраненияОстатков.Представление,
| NULL,
| РеализацияТоваровУслуг.Цена,
| РеализацияТоваровУслуг.Сумма,
| РеализацияТоваровУслуг.СуммаНДС,
| 0,
| РеализацияТоваровУслуг.ПроцентСкидкиНаценки,
| РеализацияТоваровУслуг.ПроцентАвтоматическихСкидок КАК АвтоматическаяСкидка,
| NULL,
| NULL,
| NULL,
| NULL,
| РеализацияТоваровУслуг.НомерСтроки,
| 1
|ИЗ
| Документ.РеализацияТоваровУслуг.Услуги КАК РеализацияТоваровУслуг
|ГДЕ
| РеализацияТоваровУслуг.Ссылка = &ТекущийДокумент
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| РеализацияТоваровУслуг.Номенклатура,
| ВЫРАЗИТЬ(РеализацияТоваровУслуг.Номенклатура.НаименованиеПолное КАК СТРОКА(1000)),
| РеализацияТоваровУслуг.Номенклатура.Код,
| РеализацияТоваровУслуг.Номенклатура.Артикул,
| РеализацияТоваровУслуг.Количество,
| РеализацияТоваровУслуг.Номенклатура.БазоваяЕдиницаИзмерения КАК БазЕд,
| Null,
| NULL,
| РеализацияТоваровУслуг.Номенклатура.ЕдиницаХраненияОстатков.Представление,
| NULL,
| РеализацияТоваровУслуг.Цена,
| РеализацияТоваровУслуг.Сумма,
| 0,
| 0,
| 0,
| NULL,
| NULL,
| NULL,
| NULL,
| NULL,
| РеализацияТоваровУслуг.НомерСтроки,
| 2
|ИЗ
| Документ.РеализацияТоваровУслуг.ВозвратнаяТара КАК РеализацияТоваровУслуг
|ГДЕ
| РеализацияТоваровУслуг.Ссылка = &ТекущийДокумент
|
|УПОРЯДОЧИТЬ ПО
| Метка,
| НомерСтроки»;
ЗапросТовары = Запрос.Выполнить().Выгрузить();
СтруктурнаяЕдиницаОрганизация = ОбщегоНазначения.ПолучитьСтруктурнуюЕдиницу(Шапка.Организация, Шапка.СтруктурноеПодразделение);
ТабДокумент = Новый ТабличныйДокумент;
ТабДокумент.ИмяПараметровПечати = «ПАРАМЕТРЫ_ПЕЧАТИ_РеализацияТоваровУслуг_Накладная»;
Макет = ПолучитьМакет(«Накладная»);
// Выводим шапку накладной
ОбластьМакета = Макет.ПолучитьОбласть(«Заголовок»);
ОбластьМакета.Параметры.ТекстЗаголовка = РаботаСДиалогами.СформироватьЗаголовокДокумента(ЭтотОбъект, «Расходная накладная»);
ТабДокумент.Вывести(ОбластьМакета);
ОбластьМакета = Макет.ПолучитьОбласть(«Поставщик»);
ПредставлениеПоставщика = ОбщегоНазначения.ОписаниеОрганизации(ОбщегоНазначения.СведенияОЮрФизЛице(СтруктурнаяЕдиницаОрганизация, Шапка.Дата), «ПолноеНаименование,», Ложь);
ОбластьМакета.Параметры.ПредставлениеПоставщика = ПредставлениеПоставщика;
ОбластьМакета.Параметры.Поставщик = СтруктурнаяЕдиницаОрганизация;
ТабДокумент.Вывести(ОбластьМакета);
ОбластьМакета = Макет.ПолучитьОбласть(«Покупатель»);
ПредставлениеПолучателя = ОбщегоНазначения.ОписаниеОрганизации(ОбщегоНазначения.СведенияОЮрФизЛице(Шапка.Получатель, Шапка.Дата), «ПолноеНаименование,», Ложь);
ОбластьМакета.Параметры.ПредставлениеПолучателя = СокрЛП(ПредставлениеПолучателя);
ОбластьМакета.Параметры.Получатель = Шапка.Получатель;
ТабДокумент.Вывести(ОбластьМакета);
Если (Шапка.Получатель <> Шапка.Грузополучатель) И ЗначениеЗаполнено(Шапка.Грузополучатель) Тогда
ОбластьМакета = Макет.ПолучитьОбласть(«Грузополучатель»);
ПредставлениеГрузополучателя = ОбщегоНазначения.ОписаниеОрганизации(ОбщегоНазначения.СведенияОЮрФизЛице(Шапка.Грузополучатель, Шапка.Дата), «ПолноеНаименование,», Ложь);
ОбластьМакета.Параметры.ПредставлениеГрузополучателя = СокрЛП(ПредставлениеГрузополучателя);
ТабДокумент.Вывести(ОбластьМакета);
КонецЕсли;
Если ЗначениеЗаполнено(Шапка.Доверенность) Тогда
ОбластьМакета = Макет.ПолучитьОбласть(«Доверенность»);
ДанныеДляДоверенности = СокрЛП(Шапка.Доверенность);
Если ЗначениеЗаполнено(Шапка.ДоверенностьЧерезКого) Тогда
ДанныеДляДоверенности = ДанныеДляДоверенности + » выданной, » + СокрЛП(Шапка.ДоверенностьЧерезКого);
КонецЕсли;
ОбластьМакета.Параметры.Доверенность = ДанныеДляДоверенности;
ТабДокумент.Вывести(ОбластьМакета);
КонецЕсли;
Если ЗначениеЗаполнено(Шапка.ДоговорКонтрагента) Тогда
ОбластьМакета = Макет.ПолучитьОбласть(«Основание»);
ОбластьМакета.Параметры.Основание = Шапка.ДоговорКонтрагента;
ТабДокумент.Вывести(ОбластьМакета);
КонецЕсли;
Если СсылкаНаОбъект.Товары.Количество() + СсылкаНаОбъект.ВозвратнаяТара.Количество()<> 0 Тогда
ОбластьМакета = Макет.ПолучитьОбласть(«Склад»);
ОбластьМакета.Параметры.Склад = Шапка.Склад;
ТабДокумент.Вывести(ОбластьМакета);
КонецЕсли;
ЕстьСкидки = ЗапросТовары.Итог(«Скидка») + ЗапросТовары.Итог(«АвтоматическаяСкидка») <> 0;
ДопКолонка = Константы.ДополнительнаяКолонкаПечатныхФормДокументов.Получить();
Если ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул Тогда
ВыводитьКоды = Истина;
Колонка = «Артикул»;
ИначеЕсли ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Код Тогда
ВыводитьКоды = Истина;
Колонка = «Код»;
Иначе
ВыводитьКоды = Ложь;
КонецЕсли;
ВыводитьГТД = Ложь;
//Проверим нужно ли выводить страну происхождения и ГТД
Для Каждого Товар ИЗ ЗапросТовары Цикл
Если ЗначениеЗаполнено(Товар.НомерГТД) Или ЗначениеЗаполнено(Товар.СтранаПроисхождения) Тогда
ВыводитьГТД = Истина;
Прервать;
КонецЕсли;
КонецЦикла;
ОбластьНомера = Макет.ПолучитьОбласть(«ШапкаТаблицы|НомерСтроки»);
ОбластьКодов = Макет.ПолучитьОбласть(«ШапкаТаблицы|КолонкаКодов»);
ОбластьТовар = Макет.ПолучитьОбласть(«ШапкаТаблицы|Товар»);
ОбластьДанных = Макет.ПолучитьОбласть(«ШапкаТаблицы|КоличествоЦена»);
ОбластьСкидок = Макет.ПолучитьОбласть(«ШапкаТаблицы|Скидка»);
ОбластьСуммы = Макет.ПолучитьОбласть(«ШапкаТаблицы|Сумма»);
ОбластьГТД = Макет.ПолучитьОбласть(«ШапкаТаблицы|ГТД»);
ТабДокумент.Вывести(ОбластьНомера);
Если ВыводитьКоды Тогда
ОбластьКодов.Параметры.ИмяКолонкиКодов = Колонка;
ТабДокумент.Присоединить(ОбластьКодов);
КонецЕсли;
ТабДокумент.Присоединить(ОбластьТовар);
ТабДокумент.Присоединить(ОбластьДанных);
Если ЕстьСкидки Тогда
ТабДокумент.Присоединить(ОбластьСкидок);
КонецЕсли;
ТабДокумент.Присоединить(ОбластьСуммы);
Если ВыводитьГТД Тогда
ТабДокумент.Присоединить(ОбластьГТД);
КонецЕсли;
ОбластьКолонкаТовар = Макет.Область(«Товар»);
Если Не ВыводитьКоды Тогда
ОбластьКолонкаТовар.ШиринаКолонки = ОбластьКолонкаТовар.ШиринаКолонки +
Макет.Область(«КолонкаКодов»).ШиринаКолонки;
КонецЕсли;
Если НЕ ЕстьСкидки Тогда
ОбластьКолонкаТовар.ШиринаКолонки = ОбластьКолонкаТовар.ШиринаКолонки +
Макет.Область(«СуммаБезСкидки»).ШиринаКолонки +
Макет.Область(«СуммаСкидки»).ШиринаКолонки;
КонецЕсли;
Если НЕ ВыводитьГТД Тогда
ОбластьКолонкаТовар.ШиринаКолонки = ОбластьКолонкаТовар.ШиринаКолонки +
Макет.Область(«ГТД»).ШиринаКолонки;
КонецЕсли;
ОбластьНомера = Макет.ПолучитьОбласть(«Строка|НомерСтроки»);
ОбластьКодов = Макет.ПолучитьОбласть(«Строка|КолонкаКодов»);
ОбластьТовар = Макет.ПолучитьОбласть(«Строка|Товар»);
ОбластьДанных = Макет.ПолучитьОбласть(«Строка|КоличествоЦена»);
ОбластьСкидок = Макет.ПолучитьОбласть(«Строка|Скидка»);
ОбластьСуммы = Макет.ПолучитьОбласть(«Строка|Сумма»);
ОбластьГТД = Макет.ПолучитьОбласть(«Строка|ГТД»);
Сумма = 0;
СуммаНДС = 0;
ВсегоСкидок = 0;
ВсегоБезСкидок = 0;
Для каждого ВыборкаСтрокТовары из ЗапросТовары Цикл
Если Не ЗначениеЗаполнено(ВыборкаСтрокТовары.Номенклатура) Тогда
Сообщить(«В одной из строк не заполнено значение номенклатуры — строка при печати пропущена.», СтатусСообщения.Важное);
Продолжить;
КонецЕсли;
ОбластьНомера.Параметры.НомерСтроки = ЗапросТовары.Индекс(ВыборкаСтрокТовары) + 1;
ТабДокумент.Вывести(ОбластьНомера);
Если ВыводитьКоды Тогда
Если Колонка = «Артикул» Тогда
ОбластьКодов.Параметры.Артикул = ВыборкаСтрокТовары.Артикул;
Иначе
ОбластьКодов.Параметры.Артикул = ВыборкаСтрокТовары.Код;
КонецЕсли;
ТабДокумент.Присоединить(ОбластьКодов);
КонецЕсли;
ОбластьТовар.Параметры.Заполнить(ВыборкаСтрокТовары);
ОбластьТовар.Параметры.Товар = СокрЛП(ВыборкаСтрокТовары.Товар)
+ ФормированиеПечатныхФорм.ПредставлениеСерий(ВыборкаСтрокТовары)
+ ?(ВыборкаСтрокТовары.Метка = 2, » (возвратная тара)», «»);
ТабДокумент.Присоединить(ОбластьТовар);
ОбластьДанных.Параметры.БазЕд=ВыборкаСтрокТовары.БазЕд;
ОбластьДанных.Параметры.Заполнить(ВыборкаСтрокТовары);
//Сухраб от
Если ВыборкаСтрокТовары.Коэффициент > 1 Тогда
ОбластьДанных.Параметры.ЦенаЕд=ВыборкаСтрокТовары.Цена/ВыборкаСтрокТовары.Коэффциент;
ОбластьДанных.Параметры.КоличествоБазЕд=ВыборкаСтрокТовары.ЦенаЕд*ВыборкаСтрокТовары.Количество;
Иначе
ОбластьДанных.Параметры.ЦенаЕд=ВыборкаСтрокТовары.Цена;
ОбластьДанных.Параметры.КоличествоБазЕд=ВыборкаСтрокТовары.Количество;
//Сухраб до
ТабДокумент.Присоединить(ОбластьДанных);
КонецЕсли;
// Скидка может быть NULL
ПроцентСкидки = ?(ЗначениеЗаполнено(ВыборкаСтрокТовары.Скидка),ВыборкаСтрокТовары.Скидка,0)
+ ?(ЗначениеЗаполнено(ВыборкаСтрокТовары.АвтоматическаяСкидка),ВыборкаСтрокТовары.АвтоматическаяСкидка,0);
Если ПроцентСкидки = 100 Тогда
СуммаДляСкидки = Окр(ВыборкаСтрокТовары.Цена * ВыборкаСтрокТовары.Количество,2,1);
Иначе
СуммаДляСкидки = ВыборкаСтрокТовары.Сумма;
КонецЕсли;
Скидка = УправлениеЦенообразованием.ПолучитьСуммуСкидки(СуммаДляСкидки, ПроцентСкидки);
Если ЕстьСкидки Тогда
ОбластьСкидок.Параметры.Скидка = Скидка;
ОбластьСкидок.Параметры.СуммаБезСкидки = ВыборкаСтрокТовары.Сумма + Скидка;
ТабДокумент.Присоединить(ОбластьСкидок);
КонецЕсли;
ОбластьСуммы.Параметры.Заполнить(ВыборкаСтрокТовары);
ТабДокумент.Присоединить(ОбластьСуммы);
Если ВыводитьГТД Тогда
ОбластьГТД.Параметры.НомерГТДСтранаПроисхождения = ?(ЗначениеЗаполнено(ВыборкаСтрокТовары.НомерГТД),
СокрЛП(ВыборкаСтрокТовары.НомерГТД.Код)+»,», «») + Символы.ПС + ВыборкаСтрокТовары.СтранаПроисхождения;
ТабДокумент.Присоединить(ОбластьГТД);
КонецЕсли;
Сумма = Сумма + ВыборкаСтрокТовары.Сумма + ?((Шапка.УчитыватьАкциз И НЕ Шапка.СуммаВключаетАкциз), ВыборкаСтрокТовары.СуммаАкциза, 0);
СуммаНДС = СуммаНДС + ВыборкаСтрокТовары.СуммаНДС;
ВсегоСкидок = ВсегоСкидок + Скидка;
ВсегоБезСкидок = Сумма + ВсегоСкидок;
//прибавим к сумме акциз, если он не включен в стоимость
ВсегоБезСкидок = ВсегоБезСкидок + ?((Шапка.УчитыватьАкциз И НЕ Шапка.СуммаВключаетАкциз), ВыборкаСтрокТовары.СуммаАкциза, 0);
КонецЦикла;
// Вывести Итого
ОбластьНомера = Макет.ПолучитьОбласть(«Итого|НомерСтроки»);
ОбластьКодов = Макет.ПолучитьОбласть(«Итого|КолонкаКодов»);
ОбластьТовар = Макет.ПолучитьОбласть(«Итого|Товар»);
ОбластьДанных = Макет.ПолучитьОбласть(«Итого|КоличествоЦена»);
ОбластьСкидок = Макет.ПолучитьОбласть(«Итого|Скидка»);
ОбластьСуммы = Макет.ПолучитьОбласть(«Итого|Сумма»);
ОбластьГТД = Макет.ПолучитьОбласть(«Итого|ГТД»);
ТабДокумент.Вывести(ОбластьНомера);
Если ВыводитьКоды Тогда
ТабДокумент.Присоединить(ОбластьКодов);
КонецЕсли;
ТабДокумент.Присоединить(ОбластьТовар);
ТабДокумент.Присоединить(ОбластьДанных);
Если ЕстьСкидки Тогда
ОбластьСкидок.Параметры.ВсегоСкидок = ВсегоСкидок;
ОбластьСкидок.Параметры.ВсегоБезСкидок = ВсегоБезСкидок;
ТабДокумент.Присоединить(ОбластьСкидок);
КонецЕсли;
ОбластьСуммы.Параметры.Всего = ОбщегоНазначения.ФорматСумм(Сумма);
ТабДокумент.Присоединить(ОбластьСуммы);
Если ВыводитьГТД Тогда
ТабДокумент.Присоединить(ОбластьГТД);
КонецЕсли;
// Вывести ИтогоНДС
Если Шапка.УчитыватьНДС Тогда
ОбластьНомера = Макет.ПолучитьОбласть(«ИтогоНДС|НомерСтроки»);
ОбластьКодов = Макет.ПолучитьОбласть(«ИтогоНДС|КолонкаКодов»);
ОбластьТовар = Макет.ПолучитьОбласть(«ИтогоНДС|Товар»);
ОбластьДанных = Макет.ПолучитьОбласть(«ИтогоНДС|КоличествоЦена»);
ОбластьСкидок = Макет.ПолучитьОбласть(«ИтогоНДС|Скидка»);
ОбластьСуммы = Макет.ПолучитьОбласть(«ИтогоНДС|Сумма»);
ОбластьГТД = Макет.ПолучитьОбласть(«ИтогоНДС|ГТД»);
ТабДокумент.Вывести(ОбластьНомера);
Если ВыводитьКоды Тогда
ТабДокумент.Присоединить(ОбластьКодов);
КонецЕсли;
ТабДокумент.Присоединить(ОбластьТовар);
ОбластьДанных.Параметры.НДС = ?(Шапка.СуммаВключаетНДС, «В том числе НДС:», «Сумма НДС:»);
ТабДокумент.Присоединить(ОбластьДанных);
Если ЕстьСкидки Тогда
ТабДокумент.Присоединить(ОбластьСкидок);
КонецЕсли;
ОбластьСуммы.Параметры.ВсегоНДС = ОбщегоНазначения.ФорматСумм(СуммаНДС);
ТабДокумент.Присоединить(ОбластьСуммы);
Если ВыводитьГТД Тогда
ТабДокумент.Присоединить(ОбластьГТД);
КонецЕсли;
Если НЕ Шапка.СуммаВключаетНДС ТОгда
ОбластьНомера = Макет.ПолучитьОбласть(«ИтогоСНДС|НомерСтроки»);
ОбластьКодов = Макет.ПолучитьОбласть(«ИтогоСНДС|КолонкаКодов»);
ОбластьТовар = Макет.ПолучитьОбласть(«ИтогоСНДС|Товар»);
ОбластьДанных = Макет.ПолучитьОбласть(«ИтогоСНДС|КоличествоЦена»);
ОбластьСкидок = Макет.ПолучитьОбласть(«ИтогоСНДС|Скидка»);
ОбластьСуммы = Макет.ПолучитьОбласть(«ИтогоСНДС|Сумма»);
ОбластьГТД = Макет.ПолучитьОбласть(«ИтогоСНДС|ГТД»);
ТабДокумент.Вывести(ОбластьНомера);
Если ВыводитьКоды Тогда
ТабДокумент.Присоединить(ОбластьКодов);
КонецЕсли;
ТабДокумент.Присоединить(ОбластьТовар);
ТабДокумент.Присоединить(ОбластьДанных);
Если ЕстьСкидки Тогда
ТабДокумент.Присоединить(ОбластьСкидок);
КонецЕсли;
ОбластьСуммы.Параметры.ВсегоСНДС = Сумма+СуммаНДС;
ТабДокумент.Присоединить(ОбластьСуммы);
Если ВыводитьГТД Тогда
ТабДокумент.Присоединить(ОбластьГТД);
КонецЕсли;
КонецЕсли;
КонецЕсли;
// Вывести Сумму прописью
ОбластьМакета = Макет.ПолучитьОбласть(«СуммаПрописью»);
СуммаКПрописи = Сумма + ?(Шапка.СуммаВключаетНДС, 0, СуммаНДС);
ОбластьМакета.Параметры.ИтоговаяСтрока =»Всего наименований » + ЗапросТовары.Количество()
+ «, на сумму » + ОбщегоНазначения.ФорматСумм(СуммаКПрописи, Шапка.ВалютаДокумента);
ОбластьМакета.Параметры.СуммаПрописью = ОбщегоНазначения.СформироватьСуммуПрописью(СуммаКПрописи, Шапка.ВалютаДокумента);
ТабДокумент.Вывести(ОбластьМакета);
// Вывести подписи
ОбластьМакета = Макет.ПолучитьОбласть(«Подписи»);
// Отпуск товара произвел
Если ЗначениеЗаполнено(Шапка.ОтпускПроизвел) Тогда
ФамилияИмяОтчествоФизЛица = ФормированиеПечатныхФорм.ФамилияИмяОтчество(Шапка.ОтпускПроизвел, Шапка.Дата);
ФамилияИмяОтчествоОтпускПроизвел = ФамилияИмяОтчествоФизЛица.Фамилия + » » + ФамилияИмяОтчествоФизЛица.Имя + » » + ФамилияИмяОтчествоФизЛица.Отчество;
ФИООтпускПроизвел = ОбщегоНазначения.ФамилияИнициалыФизЛица(ФамилияИмяОтчествоОтпускПроизвел);
ОбластьМакета.Параметры.ОтветственныйПредставление = ФИООтпускПроизвел;
Иначе//берем из ответственного по складу
ОбластьМакета.Параметры.ОтветственныйПредставление = ОбщегоНазначения.ФамилияИнициалыФизЛица(Шапка.ОтпустилМОЛ);
КонецЕсли;
ТабДокумент.Вывести(ОбластьМакета);
Возврат ТабДокумент;
КонецФункции // ПечатьДокумента()
Татьяна77777 0 / 0 / 0 Регистрация: 10.02.2013 Сообщений: 4 |
||||
1 |
||||
1C 8.x Не задано значение параметра10.02.2013, 01:26. Показов 10221. Ответов 6 Метки нет (Все метки)
Пытаюсь при изменении количества поставить последнюю цену из регистра свединий, выдает вот такую ошибку((
{Документ.Приход.Форма.ФормаДокумента.Форма(16)}: Ошибка при вызове метода контекста (Выполнить)
0 |
Dethmontt Модератор 3724 / 2918 / 575 Регистрация: 10.03.2011 Сообщений: 11,491 Записей в блоге: 1 |
||||
10.02.2013, 01:38 |
2 |
|||
Добавлено через 44 секунды
= ЦеныНоменклатурыСрезПоследних.ТипЦены И ПриходТовар.Номенклатура В (&а))»; Добавлено через 1 минуту
1 |
0 / 0 / 0 Регистрация: 10.02.2013 Сообщений: 4 |
|
10.02.2013, 01:46 [ТС] |
3 |
Блиин) с параметром ступила, мозг не работает уже… Мой запрос выводит всю номенклатуру, что есть в документе Приход и ее цену последнюю. По крайней мере так в консоли запросов выходит. А мне-то нужна конкретная номенклатура, к каждой строке своя или я чего-то не понимаю?? Теперь кстати выдает, что неверный параметр(
0 |
Dethmontt Модератор 3724 / 2918 / 575 Регистрация: 10.03.2011 Сообщений: 11,491 Записей в блоге: 1 |
||||||||
10.02.2013, 02:15 |
4 |
|||||||
А документ зачем в запросе???? Вы же из него ничего не выбираете? Добавлено через 4 минуты
Добавлено через 10 минут
0 |
Татьяна77777 0 / 0 / 0 Регистрация: 10.02.2013 Сообщений: 4 |
||||
10.02.2013, 02:19 [ТС] |
5 |
|||
Теперь так… у меня ТипЦены тоже в табличной части. Ошибок теперь нет, но при изменении количества цена все равно не меняется(
0 |
Dethmontt Модератор 3724 / 2918 / 575 Регистрация: 10.03.2011 Сообщений: 11,491 Записей в блоге: 1 |
||||
10.02.2013, 02:24 |
6 |
|||
Скопируйте мой код! Замените Объект.ТипЦены на СтрокаТЧ.ТипЦены и найдите 10 отличий! Добавлено через 1 минуту
0 |
0 / 0 / 0 Регистрация: 10.02.2013 Сообщений: 4 |
|
10.02.2013, 02:25 [ТС] |
7 |
ААААААА!!! Спасибо огромное))) Заработало )
0 |
С подобной ошибкой любой разработчик встречался хотя бы один раз. Ее непосредственная причина – попытка запроса использовать параметр, который в запрос не был помещен.
Почему так происходит? Код постоянно меняется, текст запросов, параметры могут переименовываться, добавляться, удаляться, но в ходе работы формируются различные приемы и методики, позволяющие данную проблему нивелировать.
При инициализации запроса, параметры необходимо указывать до текста запроса. Таким образом, еще до чтения текста, вы объявляете параметры, с которым необходимо работать. Также это позволяет улучшить самоконтроль – сначала определяем параметр, а потом его используем.
Бывают ситуации, когда параметры в зависимости от различных условий не нужны.
Самое простое решение – это использовать дополнительный параметр с типом Булево, определяющий необходимость использования основного параметра.
Функция ЗапросОстатковПоСкладу(Дата, Организация = Неопределено)
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ДатаОстатков", Дата);
Запрос.УстановитьПараметр("Организация", Организация);
Запрос.УстановитьПараметр("ОтборПоОрганизации", Организация Неопределено);
Запрос.Текст =
"ВЫБРАТЬ
| Остатки.Организация,
| Остатки.Номенклатура,
| Остатки.КоличествоОстаток
|ИЗ
| РегистрНакопления.ТоварыНаСкладе.Остатки(
| &ДатаОстатков,
| НЕ &ОтборПоОрганизации
| ИЛИ Организация = &Организация) КАК
Остатки"
;
РезультатЗапроса = Запрос.Выполнить();
Возврат РезультатЗапроса;
КонецФункции
Такой запрос не вполне оптимален с точки зрения быстродействия (из-за конструкции ИЛИ в условии отбора), но если потери быстродействия терпимы, то ими можно пренебречь.
Более технологичным решением может быть использование возможностей компоновщика. Для простых случаев подойдет построитель запроса. Вы можете инициализировать запрос построителем, а параметры добавлять динамически.
Функция ЗапросОстатковПоСкладу(Дата, Организация = Неопределено)
ТекстЗапроса =
"ВЫБРАТЬ"
| Остатки.Организация,
| Остатки.Номенклатура,
| Остатки.КоличествоОстаток
|ИЗ
| РегистрНакопления.ТоварыНаСкладе.Остатки(&ДатаОстатков, ) КАК
Остатки"
Построитель = Новый ПостроительЗапроса(пТекстЗапроса);
Построитель.ЗаполнитьНастройки();
Если Организация <> Неопределено Тогда
ЭлементОтбора = Построитель.Отбор.Добавить("Организация", "Организация");
ЭлементОтбора.Использование = Истина;
ЭлементОтбора.Значение = Организация;
ЭлементОтбора.ВидСравнения = ВидСравнения.Равно;
Запрос = Построитель.ПолучитьЗапрос();
Иначе
Запрос = Новый Запрос;
Запрос.Текст = ТекстЗапроса;
КонецЕсли;
Запрос.УстановитьПараметр("ДатаОстатков", Дата);
РезультатЗапроса = Запрос.Выполнить();
Возврат РезультатЗапроса;
КонецФункции
Данный код приведен в качестве примера и скомпонован с целью повышения наглядности. Рекомендуется не использовать его в чистом виде, а реализовать в виде полноценного инструмента по динамической работе с отборами в запросе.
-
ТЕСТ
Процедура ОбработкаПроведения(Отказ, Режим) Запрос = Новый Запрос; Если Режим = РежимПроведенияДокумента.Оперативный Тогда Запрос.Текст = "ВЫБРАТЬ | РеализацияПереченьНоменклатуры.Номенклатура, | РеализацияПереченьНоменклатуры.Количество, | РеализацияПереченьНоменклатуры.Сумма, | ОстаткиНоменклатураОстатки.КоличествоОстаток, | СтоимостьНоменклатураОстатки.СтоимостьОстаток, | ОстаткиНоменклатураОстаткиНаСкладе.КоличествоОстаток КАК КоличествоОстатокНаСкладе |ИЗ | Документ.Реализация.ПереченьНоменклатуры КАК РеализацияПереченьНоменклатуры | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СтоимостьНоменклатура.Остатки(&МоментВремени, Номенклатура В (&СписокНоменклатурыДокумента)) КАК СтоимостьНоменклатураОстатки | ПО РеализацияПереченьНоменклатуры.Номенклатура = СтоимостьНоменклатураОстатки.Номенклатура | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиНоменклатура.Остатки(&МоментВремени, Номенклатура В (&СписокНоменклатурыДокумента)) КАК ОстаткиНоменклатураОстатки | ПО РеализацияПереченьНоменклатуры.Номенклатура = ОстаткиНоменклатураОстатки.Номенклатура | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиНоменклатура.Остатки( | &МоментВремени, | Номенклатура В (&СписокНоменклатурыДокумента) | И Склад = &СкладВДокументе) КАК ОстаткиНоменклатураОстаткиНаСкладе | ПО РеализацияПереченьНоменклатуры.Номенклатура = ОстаткиНоменклатураОстаткиНаСкладе.Номенклатура |ГДЕ | РеализацияПереченьНоменклатуры.Ссылка = &Ссылка | |ДЛЯ ИЗМЕНЕНИЯ | РегистрНакопления.ОстаткиНоменклатура.Остатки, | РегистрНакопления.СтоимостьНоменклатура.Остатки"; Запрос.УстановитьПараметр("СкладВДокументе",Склад); Иначе Запрос.Текст = "ВЫБРАТЬ | РеализацияПереченьНоменклатуры.Номенклатура, | РеализацияПереченьНоменклатуры.Количество, | РеализацияПереченьНоменклатуры.Сумма, | ОстаткиНоменклатураОстатки.КоличествоОстаток, | СтоимостьНоменклатураОстатки.СтоимостьОстаток |ИЗ | Документ.Реализация.ПереченьНоменклатуры КАК РеализацияПереченьНоменклатуры | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиНоменклатура.Остатки(&МоментВремени, Номенклатура В (&СписокНоменклатурыДокумента)) КАК ОстаткиНоменклатураОстатки | ПО РеализацияПереченьНоменклатуры.Номенклатура = ОстаткиНоменклатураОстатки.Номенклатура | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СтоимостьНоменклатура.Остатки(&МоментВремени, Номенклатура В (&СписокНоменклатурыДокумента)) КАК СтоимостьНоменклатураОстатки | ПО РеализацияПереченьНоменклатуры.Номенклатура = СтоимостьНоменклатураОстатки.Номенклатура |ГДЕ | РеализацияПереченьНоменклатуры.Ссылка = &Ссылка | |ДЛЯ ИЗМЕНЕНИЯ | РегистрНакопления.ОстаткиНоменклатура.Остатки, | РегистрНакопления.СтоимостьНоменклатура.Остатки"; КонецЕсли; Запрос.УстановитьПараметр("МоментВремени",МоментВремени()); Запрос.УстановитьПараметр("СпислкНоменклатурыДокумента",ПереченьНоменклатуры.ВыгрузитьКолонку("Номенклатура")); Запрос.УстановитьПараметр("Ссылка",Ссылка); ВыборкаРезультатаЗапроса = Запрос.Выполнить().Выбрать(); Пока ВыборкаРезультатаЗапроса.Следующий()Цикл //Проверить остаток при оперативном проведении. Если Режим = РежимПроведенияДокумента.Оперативный Тогда Если ВыборкаРезультатаЗапроса.Номенклатуры = Перечисления.Номенклатуры Тогда Остаток = ?(ВыборкаРезультатаЗапроса.КоличествоОстатокНаСкладе = Null,0, ВыборкаРезультатаЗапроса.КоличествоОстатокНаСкладе); Если Остаток < ВыборкаРезультатаЗапроса.Количество Тогда Сообщить("Номенклатуры" + СокрЛП(ВыборкаРезультатаЗапроса.Номенклатура) + "имеется только" + Остаток); Отказ = Истина; Возврат; КонецЕсли; КонецЕсли; КонецЕсли; Если ВыборкаРезультатаЗапроса.Номенклатура=Перечисления.Номенклатура Тогда //Регистр ОстаткиМатериалов Расход Движение=Движения.ОстаткиНоменклатура.Добавить(); Движение.ВидДвижения=ВидДвиженияНакопления.Расход; Движение.Период=Дата; Движение.Номенклатура = ВыборкаРезультатаЗапроса.Номенклатура; Движение.Склад=Склад; Движение.Количество = ВыборкаРезультатаЗапроса.Количество; //Регистр СтоимостиМатериалов РАсход. Движение=Движение.СтоимостьНоменклатуры.Добавить(); Движение.ВидДвижения=ВидДвиженияНакопления.Расход; Движение.Период=Дата; Движение.Номенклатура=ВыборкаРезультатаЗапроса.Номенклатура; //Рассчитать стоимость материалов. СтоимостьНоменклатуры=?(ВыборкаРезультатаЗапроса.КоличествоОстаток = Null,0, ВыборкаРезультатаЗапроса.СтоимостьОстаток/ВыборкаРезультатаЗапроса.КоличествоОстаток); Движение.Стоимость=СтоимостьНоменклатуры*ВыборкаРезультатаЗапроса.Количество; КонецЕсли; //Регистр продажи. Движение = Движение.Продажи.Добавить(); Движение.Период = Дата; Движение.Номенклатуры = ВыборкаРезультатаЗапроса.Номенклатуры; Движение.Клиент = Клиент; Движение.Продавец = Продавец; Движение.Количество = ВыборкаРезультатаЗапроса.Количество; Движение.Выручка = ВыборкаРезультатаЗапроса.Сумма; Если ВыборкаРезультатаЗапроса.Номенклатуры = Перечисления.Номенклатуры Тогда Движение.Стоимость = СтоимостьНоменклатуры * ВыборкаРезультатаЗапроса.Количество; Иначе Движение.Стоимость = 0; КонецЕсли; КонецЦикла; //Запись движения регистров Движения.ОстаткиНоменклатура.Записать(); Движения.СтоимостьНоменклатура.Записать(); Движения.Продажи.Записать(); КонецПроцедуры
ошибка:
Ошибка при выполнении обработчика — ‘{Документ.Реализация(55)}: Ошибка при вызове метода контекста (Выполнить): {(9, 98)}: Не задано значение параметра «СписокНоменклатурыДокумента»
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиНоменклатура.Остатки(&МоментВремени, Номенклатура В (<<?>>&СписокНоменклатурыДокумента)) КАК ОстаткиНоменклатураОстатки’
по причине:
{Документ.Реализация(55)}: Ошибка при вызове метода контекста (Выполнить): {(9, 98)}: Не задано значение параметра «СписокНоменклатурыДокумента»
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиНоменклатура.Остатки(&МоментВремени, Номенклатура В (<<?>>&СписокНоменклатурыДокумента)) КАК ОстаткиНоменклатураОстаткипо причине:
{(9, 98)}: Не задано значение параметра «СписокНоменклатурыДокумента»
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиНоменклатура.Остатки(&МоментВремени, Номенклатура В (<<?>>&СписокНоменклатурыДокумента)) КАК ОстаткиНоменклатураОстаткиЗ.Ы.: замучались искать в чем причина, выкладываю на всякий случай базу
ОЧЕНЬ ПРОСИМ) ПЖАЛУЙСТА!Вложения:
-
Offline
BabySG
Администраторы
Команда форума
Администратор- Регистрация:
- 10 июн 2007
- Сообщения:
- 11.853
- Симпатии:
- 18
- Баллы:
- 29
Лень самим проверить?
Запрос.УстановитьПараметр("[b]СпислкНоменклатурыДокумента[/b]",ПереченьНоменклатуры.ВыгрузитьКолонку("Номенклатура"));
-
Спасиб, замучались проверять, ет уже не по глазам было, но возникла другая проблема:
Ошибка при выполнении обработчика — ‘{Документ.Реализация(70)}: Поле объекта не обнаружено (Номенклатура)’
по причине:
{Документ.Реализация(70)}: Поле объекта не обнаружено (Номенклатура) -
Offline
BabySG
Администраторы
Команда форума
Администратор- Регистрация:
- 10 июн 2007
- Сообщения:
- 11.853
- Симпатии:
- 18
- Баллы:
- 29
Количество ошибок в коде просто огромное.
1.Если ВыборкаРезультатаЗапроса.Номенклатура=Перечисления.Номенклатура Тогда
Это вообще как синтаксис контроль прошло?
2. Есть такая строка:Движение.Номенклатура=ВыборкаРезультатаЗапроса.Номенклатура;
А есть такая:
Движение.Номенклатуры = ВыборкаРезультатаЗапроса.Номенклатуры;
Вы банально код проверьте — кто же так пишет?
-
ну прошло, а кто так пишет? так самоучки, никто не объяснял, так по поводу последней проблемы в этом дело? то что подобные строки с «=» напортачили?
-
Offline
BabySG
Администраторы
Команда форума
Администратор- Регистрация:
- 10 июн 2007
- Сообщения:
- 11.853
- Симпатии:
- 18
- Баллы:
- 29
Да, действительно пройдет
Так а что там должно быть? Какой тип может быть в Номенклатуре?
Код вообще странный какой-то…Если тип там один — то условие вообще не нужно, если тип Справочник, то тогда уж надо писать так:
Если ТипЗнч(ВыборкаРезультатаЗапроса.Номенклатура) = Тип("СправочникСсылка.Номенклатура") Тогда