Не удалось сформировать внешнюю печатную форму! Поле объекта не обнаружено (НоменклатураКод)
14.11.14, 10:56
Общительный
Группа: Пользователи
Сообщений: 41
Из: Мариуполь
Спасибо сказали: 3 раз
Рейтинг: 0
Добрый день. Общепит, редакция 8, украинская версия на базе "Бухгалтерия для Украины", редакция 1.2 Нужна помощь в изменении печатной формы документа. Необходимо вывести колонку код из справочника номенклатуры.
В 1С печатная форма не формируется – ошибка «Не удалось сформировать внешнюю печатную форму! Поле объекта не обнаружено (НоменклатураКод)».
Модуль объекта Функция ПечатьПеремещениеТоваров()
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ТекущийДокумент" , СсылкаНаОбъект.Ссылка);
Запрос.УстановитьПараметр("НТТ" , Перечисления.ВидыСкладов.НеавтоматизированнаяТорговаяТочка);
Запрос.Текст =
"ВЫБРАТЬ
| Номер,
| Дата,
| Ответственный.ФизЛицо.Наименование КАК Отпустил,
| Организация,
| СкладОтправитель,
| СкладОтправитель.Представление КАК Поставщик,
| СкладПолучатель,
| ВЫБОР КОГДА СкладОтправитель.ВидСклада = &НТТ ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ КОНЕЦ КАК ОтправительНТТ,
| ВЫБОР КОГДА СкладПолучатель.ВидСклада = &НТТ ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ КОНЕЦ КАК ПолучательНТТ,
| СкладПолучатель.Представление КАК Покупатель
|ИЗ
| Документ.ПеремещениеТоваров КАК ПеремещениеТоваров
|ГДЕ
| ПеремещениеТоваров.Ссылка = &ТекущийДокумент" ;
Шапка = Запрос.Выполнить().Выбрать();
Шапка.Следующий();
ЗапросПоТоварам = Новый Запрос;
ЗапросПоТоварам.УстановитьПараметр("ТекущийДокумент" , СсылкаНаОбъект.Ссылка);
ЗапросПоТоварам.Текст =
"ВЫБРАТЬ
| Номенклатура,
| ВЫРАЗИТЬ(Номенклатура.НаименованиеПолное КАК Строка(1000)) КАК Товар,
| Номенклатура.Код КАК Код,
| Номенклатура.Артикул КАК Артикул,
| Количество,
| ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| Цена,
| НомерСтроки,
| 1 КАК ID
|ИЗ
| (ВЫБРАТЬ
| Номенклатура КАК Номенклатура,
| ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| ЦенаВРознице КАК Цена,
| СУММА(Количество) КАК Количество,
| МИНИМУМ(НомерСтроки) КАК НомерСтроки
| ИЗ
| Документ.ПеремещениеТоваров.Товары КАК ПеремещениеТоваров
| ГДЕ
| ПеремещениеТоваров.Ссылка = &ТекущийДокумент
| СГРУППИРОВАТЬ ПО
| Номенклатура,
| ЕдиницаИзмерения,
| ЦенаВРознице
| ) КАК ВложенныйЗапросПоТоварам
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| Номенклатура,
| ВЫРАЗИТЬ(Номенклатура.НаименованиеПолное КАК Строка(1000)) КАК Товар,
| Номенклатура.Код КАК Код,
| Номенклатура.Артикул КАК Артикул,
| Количество,
| ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| Цена,
| НомерСтроки,
| 2 КАК ID
|ИЗ
| (ВЫБРАТЬ
| Номенклатура КАК Номенклатура,
| ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| Цена КАК Цена,
| СУММА(Количество) КАК Количество,
| МИНИМУМ(НомерСтроки) КАК НомерСтроки
| ИЗ
| Документ.ПеремещениеТоваров.ТоварыНаКомиссии КАК ПеремещениеТоваров
| ГДЕ
| ПеремещениеТоваров.Ссылка = &ТекущийДокумент
| СГРУППИРОВАТЬ ПО
| Номенклатура,
| ЕдиницаИзмерения,
| Цена
| ) КАК ВложенныйЗапросПоТоварам
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| Номенклатура,
| ВЫРАЗИТЬ(Номенклатура.НаименованиеПолное КАК Строка(1000)),
| Номенклатура.Код КАК Код,
| Номенклатура.Артикул КАК Артикул,
| Количество,
| Номенклатура.БазоваяЕдиницаИзмерения,
| 0,
| НомерСтроки,
| 3
|
|ИЗ
| Документ.ПеремещениеТоваров.ВозвратнаяТара КАК ПеремещениеТоваров
|
|ГДЕ
| ПеремещениеТоваров.Ссылка = &ТекущийДокумент
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| Номенклатура,
| ВЫРАЗИТЬ(Номенклатура.НаименованиеПолное КАК Строка(1000)),
| Номенклатура.Код КАК Код,
| Номенклатура.Артикул КАК Артикул,
| Количество,
| ЕдиницаИзмерения,
| 0,
| НомерСтроки,
| 4
|
|ИЗ
| Документ.ПеремещениеТоваров.БланкиСтрогогоУчета КАК ПеремещениеТоваров
|
|ГДЕ
| ПеремещениеТоваров.Ссылка = &ТекущийДокумент
|
|УПОРЯДОЧИТЬ ПО
| ID,
| НомерСтроки" ;
ВыборкаСтрокТовары = ЗапросПоТоварам.Выполнить().Выбрать();
ТабДокумент = Новый ТабличныйДокумент;
ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ПеремещениеТоваров_Накладная" ;
Макет = ПолучитьМакет("Накладная" );
КодЯзыкаПечать = Локализация.ПолучитьЯзыкФормированияПечатныхФорм(УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь" ), "РежимФормированияПечатныхФорм" ));
Макет.КодЯзыкаМакета = КодЯзыкаПечать;
мУчетВПродажныхЦенах=Истина ;
мВалютаРегламентированногоУчета = Константы.ВалютаРегламентированногоУчета.Получить();
СкладНТТ = Шапка.ОтправительНТТ ИЛИ Шапка.ПолучательНТТ;
ЕстьЦена = мУчетВПродажныхЦенах И НЕ (СсылкаНаОбъект.Ссылка.СкладОтправитель.ВидСклада = Перечисления.ВидыСкладов.Оптовый И СсылкаНаОбъект.Ссылка.СкладПолучатель.ВидСклада = Перечисления.ВидыСкладов.Оптовый);
ЕстьЦена = Истина ;
ТаблицаСуммСписания = БухгалтерскийУчет.ПолучитьСуммуСписанияАктивов(СсылкаНаОбъект);
ОбластьМакета = Макет.ПолучитьОбласть("Заголовок" );
ОбластьМакета.Параметры.ТекстЗаголовка = ОбщегоНазначения.СформироватьЗаголовокДокумента(Шапка, НСтр("ru='Накладная на перемещение';uk='Накладна на переміщення'" ,КодЯзыкаПечать),КодЯзыкаПечать);
ТабДокумент.Вывести(ОбластьМакета);
СведенияОбОрганизации = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Организация, Шапка.Дата,,,КодЯзыкаПечать);
ОбластьМакета = Макет.ПолучитьОбласть("Организация" );
ОбластьМакета.Параметры.Заполнить(Шапка);
ОбластьМакета.Параметры.ПредставлениеПоставщика = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОбОрганизации, "ПолноеНаименование," ,,КодЯзыкаПечать);
ОбластьМакета.Параметры.РеквизитыПоставщика = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОбОрганизации, "ЮридическийАдрес,Телефоны,/,КодПоЕДРПОУ,КодПоДРФО," ,,КодЯзыкаПечать);
ТабДокумент.Вывести(ОбластьМакета);
ОбластьМакета = Макет.ПолучитьОбласть("Поставщик" );
ОбластьМакета.Параметры.ПредставлениеПоставщика = Шапка.Поставщик;
ОбластьМакета.Параметры.Поставщик = Шапка.СкладОтправитель;
ТабДокумент.Вывести(ОбластьМакета);
ОбластьМакета = Макет.ПолучитьОбласть("Покупатель" );
ОбластьМакета.Параметры.ПредставлениеПолучателя = Шапка.Покупатель;
ОбластьМакета.Параметры.Получатель = Шапка.СкладПолучатель;
ТабДокумент.Вывести(ОбластьМакета);
ОбластьШапки = "ШапкаТаблицы" ;
ОбластьСтроки = "Строка" ;
ДопКолонка = Константы.ДополнительнаяКолонкаПечатныхФормДокументов.Получить();
Если ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.НоменклатураКод Тогда
ВыводитьКоды = Истина ;
Колонка = "НоменклатураКод" ;
ИначеЕсли ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Код Тогда
ВыводитьКоды = Истина ;
Колонка = "Код" ;
Иначе
ВыводитьКоды = Ложь ;
КонецЕсли ;
ОбластьНомера = Макет.ПолучитьОбласть(ОбластьШапки+"|НомерСтроки" );
ОбластьКодов = Макет.ПолучитьОбласть(ОбластьШапки+"|КолонкаКодов" );
ОбластьДанных = Макет.ПолучитьОбласть(ОбластьШапки+"|Данные" );
ОбластьЦены = Макет.ПолучитьОбласть(ОбластьШапки+"|Цена" );
ТабДокумент.Вывести(ОбластьНомера);
Если ВыводитьКоды Тогда
ОбластьКодов.Параметры.ИмяКолонкиКодов = Колонка;
ТабДокумент.Присоединить(ОбластьКодов);
КонецЕсли ;
ТабДокумент.Присоединить(ОбластьДанных);
Если ЕстьЦена Тогда
ТабДокумент.Присоединить(ОбластьЦены);
КонецЕсли ;
ОбластьКолонкаТовар = Макет.Область("Товар" );
Если Не ВыводитьКоды Тогда
ОбластьКолонкаТовар.ШиринаКолонки = ОбластьКолонкаТовар.ШиринаКолонки +
Макет.Область("КолонкаКодов" ).ШиринаКолонки;
КонецЕсли ;
ОбластьНомера = Макет.ПолучитьОбласть(ОбластьСтроки+"|НомерСтроки" );
ОбластьКодов = Макет.ПолучитьОбласть(ОбластьСтроки+"|КолонкаКодов" );
ОбластьДанных = Макет.ПолучитьОбласть(ОбластьСтроки+"|Данные" );
ОбластьЦены = Макет.ПолучитьОбласть(ОбластьСтроки+"|Цена" );
НС = 1 ;
ИтогоСумма = 0 ;
Пока ВыборкаСтрокТовары.Следующий() Цикл
Если НЕ ЗначениеЗаполнено(ВыборкаСтрокТовары.Номенклатура) Тогда
Сообщить(НСтр("ru='В одной из строк не заполнено значение номенклатуры - строка при печати пропущена.';uk='В одному з рядків не заповнене значення номенклатури - рядок під час друку буде пропущений.'" ), СтатусСообщения.Важное);
Продолжить;
КонецЕсли ;
ОбластьНомера.Параметры.НомерСтроки = НС;
ТабДокумент.Вывести(ОбластьНомера);
Если ВыводитьКоды Тогда
Если Колонка = "НоменклатураКод" Тогда
ОбластьКодов.Параметры.НоменклатураКод = ВыборкаСтрокТовары.НоменклатураКод;
Иначе
ОбластьКодов.Параметры.НоменклатураКод = ВыборкаСтрокТовары.Код;
КонецЕсли ;
ТабДокумент.Присоединить(ОбластьКодов);
КонецЕсли ;
ОбластьДанных.Параметры.Заполнить(ВыборкаСтрокТовары);
ОбластьДанных.Параметры.Товар = СокрЛП(ВыборкаСтрокТовары.Товар);
ТабДокумент.Присоединить(ОбластьДанных);
Если ЕстьЦена Тогда
КоличествоТов = ВыборкаСтрокТовары.Количество;
ЦенаПеремещения = 0 ;
Если (ВыборкаСтрокТовары.ID = 1 ) И СкладНТТ Тогда
ЦенаПеремещения = ВыборкаСтрокТовары.Цена;
ИначеЕсли (ВыборкаСтрокТовары.ID = 1 ) Тогда
Склад = ?(СсылкаНаОбъект.Ссылка.СкладОтправитель.ВидСклада = Перечисления.ВидыСкладов.Розничный, СсылкаНаОбъект.Ссылка.СкладОтправитель, СсылкаНаОбъект.Ссылка.СкладПолучатель);
ЦенаПеремещения = Ценообразование.ПолучитьЦенуНоменклатуры(ВыборкаСтрокТовары.Номенклатура, Склад.ТипЦенРозничнойТорговли,
СсылкаНаОбъект.Ссылка.Дата, мВалютаРегламентированногоУчета, 1 , 1 );
КонецЕсли ;
СтрокаСуммСписания = ТаблицаСуммСписания.Найти(ВыборкаСтрокТовары.Номенклатура ,"Номенклатура" );
Если СтрокаСуммСписания = Неопределено Тогда
Сумма = ЦенаПеремещения * КоличествоТов;
Иначе
ЦенаПеремещения = ?(ВыборкаСтрокТовары.Количество = 0 , 0 , СтрокаСуммСписания.Сумма / ВыборкаСтрокТовары.Количество);
Сумма = ЦенаПеремещения * ВыборкаСтрокТовары.Количество;
КонецЕсли ;
ОбластьЦены.Параметры.Цена = ЦенаПеремещения;
ОбластьЦены.Параметры.Сумма = Сумма;
ТабДокумент.Присоединить(ОбластьЦены);
ИтогоСумма = ИтогоСумма + Сумма;
КонецЕсли ;
НС = НС + 1 ;
КонецЦикла ;
ОбластьНомера = Макет.ПолучитьОбласть("Подвал|НомерСтроки" );
ОбластьКодов = Макет.ПолучитьОбласть("Подвал|КолонкаКодов" );
ОбластьДанных = Макет.ПолучитьОбласть("Подвал|Данные" );
ОбластьЦены = Макет.ПолучитьОбласть("Подвал|Цена" );
ОбластьЦены.Параметры.ИтогоСумма = ИтогоСумма;
ТабДокумент.Вывести(ОбластьНомера);
Если ВыводитьКоды Тогда
ТабДокумент.Присоединить(ОбластьКодов);
КонецЕсли ;
ТабДокумент.Присоединить(ОбластьДанных);
Если ЕстьЦена Тогда
ТабДокумент.Присоединить(ОбластьЦены);
КонецЕсли ;
ОбластьМакета = Макет.ПолучитьОбласть("Подписи" );
ОбластьМакета.Параметры.Заполнить(Шапка);
ТабДокумент.Вывести(ОбластьМакета);
Возврат ТабДокумент;
КонецФункции
Я, к сожалению, не программист, но очень хочу научиться. Буду благодарна если скинете ссылки на самоучители или что-то подобное.
Сообщение отредактировал Vofka - 14.11.14, 16:06
Не нашли ответа на свой вопрос?
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!