Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
17 Янв 2018, 20:36
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Внешняя печатная форма ценников. ЗАПРОСЫ.  (Прочитано 3236 раз)

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

Оффлайн 1cOren

  • *
  • Сообщений: 5
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2014-06-02
  • Сайт: 
  • Профессия: Ученик 1С
День добрый. Я начинающий программист. Есть задача, но знаний не хватает. Прошу помощи.
 
Есть внешняя печатная форма. Мне нужно было доработать макеты ценников.
 
Заказчик печатает ценники из документа Установка цен Номенклатуры
 
Помимо других задач, меня попросили вывести на форму ценника СВОЙСТВА НОМЕНКЛАТУРЫ (Гарантия и Изготовитель)
 
Подскажите где в запросе ошибка. Свойства не выводятся.
 
Вот так выглядит макет ценника:

 
Вот так выглядят ценники при формировании внешней печатной формы:

 
 
Т.е. значения [СвойствоГар]  [ЗначениеГар] и [СвойствоИзг]  [ЗначениеИзг] Не заполняются.
 
Вот, собственно сам код:
 
Функция Печать() Экспорт
           
ТабДокумент                                       = Новый ТабличныйДокумент;
ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
Макет                                                  = ПолучитьМакет("Макет");
ОбластьЦенника                                 = Макет.ПолучитьОбласть("Строка|Столбец1");
ОбластьЦенника1                               = Макет.ПолучитьОбласть("Строка|Столбец2");
ОбластьЦенника2                               = Макет.ПолучитьОбласть("Строка|Столбец3");
ОбластьЦенника3                               = Макет.ПолучитьОбласть("Строка|Столбец4");
ТекСтолбец =0;
ТекСтрока  =0;
           
           
/////////////  Получаю необходимую информацию из документов УстановкаЦенНоменклатуры  /////////////   
           
Запрос =Новый Запрос;                       
Запрос.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект);
Запрос.Текст ="        ВЫБРАТЬ
                                      |   УстановкаЦенНоменклатурыТовары.Номенклатура КАК Наименование,
                                      |   УстановкаЦенНоменклатурыТовары.Цена КАК Цена,
                                      |   УстановкаЦенНоменклатурыТовары.Номенклатура КАК Название,
                                      |   УстановкаЦенНоменклатурыТовары.Валюта
                                      |   ИЗ
                                      |   Документ.УстановкаЦенНоменклатуры.Товары КАК УстановкаЦенНоменклатурыТовары
                                      |  ГДЕ
                                      |   УстановкаЦенНоменклатурыТовары.Цена <> 0";
                                                 
                                     
РезультатТовары = Запрос.Выполнить();
Выборка = РезультатТовары.Выбрать();
           
           
           
/////////////  Получаю свойства номенклатуры  /////////////
ЗапросСвойств = Новый Запрос;
ЗапросСвойств.Текст = " ВЫБРАТЬ
                                      |   ЗначенияСвойствОбъектов.Объект КАК ОбъектРегистра,
                                      |   ЗначенияСвойствОбъектов.Свойство КАК Свойство,
                                      |   ЗначенияСвойствОбъектов.Значение КАК ЗначениеСвойства
                                      |   ИЗ
                                      |   РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов";
   
РезультатСвойств = ЗапросСвойств.Выполнить();
ВыборкаСвойств = РезультатСвойств.Выбрать();

           
           

///////////// Начинаю заполнять макеты. НА 1 листок А4 будт умещаться 4 ценника/////////////

Пока Выборка.Следующий() Цикл
                       
                          КолНаим = СтрДлина(Выборка.Наименование);
                          РезПоискаНаим = Найти(Выборка.Наименование, " ");
                          СловоНаим = РезПоискаНаим -1;
                          СловоНазв = КолНаим - РезПоискаНаим;
                          ОбластьЦенника.Параметры.Наименование = Лев(Выборка.Наименование, СловоНаим);
                          ОбластьЦенника.Параметры.Название = Прав(Выборка.Название, СловоНазв);
                          ОбластьЦенника.Параметры.Цена = Выборка.Цена;
                          ОбластьЦенника.Параметры.Валюта = Выборка.Валюта;
                         

/////////////  Перебираю выборку со свойствами /////////////

                          Пока ВыборкаСвойств.Следующий() Цикл     
                          Если ВыборкаСвойств.ОбъектРегистра = Выборка.Наименование тогда
                                    Если ВыборкаСвойств.Свойство ="Гарантия"тогда
                                     ОбластьЦенника.Параметры.СвойствоГар = ВыборкаСвойств.Свойство;
                              ОбластьЦенника.Параметры.ЗначениеГар = ВыборкаСвойств.ЗначениеСвойства;
                              КонецЕсли;
                                    Если ВыборкаСвойств.Свойство ="Изготовитель"тогда
                                     ОбластьЦенника.Параметры.СвойствоИзг = ВыборкаСвойств.Свойство;
                              ОбластьЦенника.Параметры.ЗначениеИзг = ВыборкаСвойств.ЗначениеСвойства;
                              КонецЕсли;[size=78%] [/size][/color]
              КонецЕсли;
                        КонецЦикла;

                        Если ТекСтрока = 0 и  ТекСтолбец  =  0  Тогда
                                                           ТабДокумент.Вывести(ОбластьЦенника);
                                               ИначеЕсли ТекСтрока = 0  и   ТекСтолбец =  1    тогда
                                         
                                               Если ТекСтрока = 2 Тогда
                                                           ТекСтрока = 0;
                                                           ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
                                               КонецЕсли;
                                                                           
                       
            КонецЦикла;
           ///////////////// Макеты готовы, ТабДокумент готов к выводу на печать
                       
            Возврат ТабДокумент;
           
КонецФункции        
 
 
 
Помогите понять, почему при заполнению макета не получается вытянуть значения из ВыборкаСвойств


Оффлайн 1cOren

  • *
  • Сообщений: 5
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2014-06-02
  • Сайт: 
  • Профессия: Ученик 1С
Вопрос закрыт. Решение найдено:

Может кому понадобится.
В Свойствах номенклатуры имеются следующие свойства: Гарантия, Изготовитель, Комплекция. Нужно было сделать Внешнюю печатную форму для вывода на печать данных из документа УстановкаЦенНоменклатуры = свойства номенклатуры. А так же необходимо сделать, чтобы в первой строке выводилось первое слово из наименования номенклатуры, а все остальные слова должны выводиться во второй строке. По типу:

LOREAL

Шампунь от перхоти



Вывести нужно по 4 ценника на 1 странице.

В модуле объекта (обработки) описана функция Печать, которая вызывается с формы.
Содержание модуля:


Функция Печать() Экспорт

ТабДокумент                     = Новый ТабличныйДокумент;
ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;

Макет                           = ПолучитьМакет("Макет");
ОбластьЦенника                  = Макет.ПолучитьОбласть("Строка|Столбец1");
ОбластьЦенника1                 = Макет.ПолучитьОбласть("Строка|Столбец2");
ОбластьЦенника2                 = Макет.ПолучитьОбласть("Строка|Столбец3");
ОбластьЦенника3                 = Макет.ПолучитьОбласть("Строка|Столбец4");
ТекСтолбец = 0;
ТекСтрока  = 0;




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


Запрос.УстановитьПараметр("Ссылка", СсылкаНаобъект);
Запрос.УстановитьПараметр("ТипЦен", Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("Продажная"));
СвойствоГарантия = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Гарантия");
СвойствоИзготовитель = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Изготовитель");
СвойствоКомплекция = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Комплекция");
Запрос.УстановитьПараметр("СвойствоГарантия", СвойствоГарантия);
Запрос.УстановитьПараметр("СвойствоИзготовитель", СвойствоИзготовитель);
Запрос.УстановитьПараметр("СвойствоКомплекция", СвойствоКомплекция);


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

Выборка = РезультатТовары.Выбрать();

Пока Выборка.Следующий() Цикл

КолНаим = СтрДлина(Выборка.Наименование);
РезПоискаНаим = Найти(Выборка.Наименование, " ");
СловоНаим =  РезПоискаНаим - 1;
СловоНазв = КолНаим - РезПоискаНаим;
ОбластьЦенника.Параметры.Наименование = Лев(Выборка.Наименование, СловоНаим);
ОбластьЦенника.Параметры.Название = Прав(Выборка.Название, СловоНазв);
ОбластьЦенника.Параметры.Цена = Выборка.Цена;
ОбластьЦенника.Параметры.Валюта = Выборка.Валюта;
Если Выборка.Гарантия = 0 тогда
ОбластьЦенника.Параметры.ЗначениеГ = "" Иначе
ОбластьЦенника.Параметры.ЗначениеГ = Выборка.Гарантия;
КонецЕсли;
Если Выборка.Изготовитель = 0 тогда
ОбластьЦенника.Параметры.ЗначениеП = "" Иначе
ОбластьЦенника.Параметры.ЗначениеП = Выборка.Изготовитель;
КонецЕсли;
Если Выборка.Комплекция = 0 тогда
ОбластьЦенника.Параметры.ЗначениеК = "" Иначе
ОбластьЦенника.Параметры.ЗначениеК = Выборка.Комплекция;
КонецЕсли;



Если ТекСтрока = 0 и ТекСтолбец = 0 Тогда
ТабДокумент.Вывести(ОбластьЦенника);
ИначеЕсли ТекСтрока = 0 и  ТекСтолбец = 1   тогда

КолНаим = СтрДлина(Выборка.Наименование);
РезПоискаНаим = Найти(Выборка.Наименование, " ");
СловоНаим =  РезПоискаНаим - 1;
СловоНазв = КолНаим - РезПоискаНаим;
ОбластьЦенника1.Параметры.Наименование = Лев(Выборка.Наименование, СловоНаим);
ОбластьЦенника1.Параметры.Название = Прав(Выборка.Название, СловоНазв);
ОбластьЦенника1.Параметры.Цена = Выборка.Цена;
ОбластьЦенника1.Параметры.Валюта = Выборка.Валюта;
Если Выборка.Гарантия = 0 тогда
ОбластьЦенника1.Параметры.ЗначениеГ = "" Иначе
ОбластьЦенника1.Параметры.ЗначениеГ = Выборка.Гарантия;
КонецЕсли;
Если Выборка.Изготовитель = 0 тогда
ОбластьЦенника1.Параметры.ЗначениеП = "" Иначе
ОбластьЦенника1.Параметры.ЗначениеП = Выборка.Изготовитель;
КонецЕсли;
Если Выборка.Комплекция = 0 тогда
ОбластьЦенника1.Параметры.ЗначениеК = "" Иначе
ОбластьЦенника1.Параметры.ЗначениеК = Выборка.Комплекция;
КонецЕсли;





ТабДокумент.Присоединить(ОбластьЦенника1);

ИначеЕсли  ТекСтрока = 1 и ТекСтолбец = 0  тогда

КолНаим = СтрДлина(Выборка.Наименование);
РезПоискаНаим = Найти(Выборка.Наименование, " ");
СловоНаим =  РезПоискаНаим - 1;
СловоНазв = КолНаим - РезПоискаНаим;
ОбластьЦенника2.Параметры.Наименование = Лев(Выборка.Наименование, СловоНаим);
ОбластьЦенника2.Параметры.Название = Прав(Выборка.Название, СловоНазв);
ОбластьЦенника2.Параметры.Цена = Выборка.Цена;
ОбластьЦенника2.Параметры.Валюта = Выборка.Валюта;
Если Выборка.Гарантия = 0 тогда
ОбластьЦенника2.Параметры.ЗначениеГ = "" Иначе
ОбластьЦенника2.Параметры.ЗначениеГ = Выборка.Гарантия;
КонецЕсли;
Если Выборка.Изготовитель = 0 тогда
ОбластьЦенника2.Параметры.ЗначениеП = "" Иначе
ОбластьЦенника2.Параметры.ЗначениеП = Выборка.Изготовитель;
КонецЕсли;
Если Выборка.Комплекция = 0 тогда
ОбластьЦенника2.Параметры.ЗначениеК = "" Иначе
ОбластьЦенника2.Параметры.ЗначениеК = Выборка.Комплекция;
КонецЕсли;



ТабДокумент.Вывести(ОбластьЦенника2);

ИначеЕсли ТекСтрока = 1 и  ТекСтолбец = 1  тогда

КолНаим = СтрДлина(Выборка.Наименование);
РезПоискаНаим = Найти(Выборка.Наименование, " ");
СловоНаим =  РезПоискаНаим - 1;
СловоНазв = КолНаим - РезПоискаНаим;
ОбластьЦенника3.Параметры.Наименование = Лев(Выборка.Наименование, СловоНаим);
ОбластьЦенника3.Параметры.Название = Прав(Выборка.Название, СловоНазв);
ОбластьЦенника3.Параметры.Цена = Выборка.Цена;
ОбластьЦенника3.Параметры.Валюта = Выборка.Валюта;
Если Выборка.Гарантия = 0 тогда
ОбластьЦенника3.Параметры.ЗначениеГ = "" Иначе
ОбластьЦенника3.Параметры.ЗначениеГ = Выборка.Гарантия;
КонецЕсли;
Если Выборка.Изготовитель = 0 тогда
ОбластьЦенника3.Параметры.ЗначениеП = "" Иначе
ОбластьЦенника3.Параметры.ЗначениеП = Выборка.Изготовитель;
КонецЕсли;
Если Выборка.Комплекция = 0 тогда
ОбластьЦенника3.Параметры.ЗначениеК = "" Иначе
ОбластьЦенника3.Параметры.ЗначениеК = Выборка.Комплекция;
КонецЕсли;






ТабДокумент.Присоединить(ОбластьЦенника3);                 
КонецЕсли;

ТекСтолбец = ТекСтолбец + 1;

Если ТекСтолбец = 2 Тогда
ТекСтрока  = ТекСтрока + 1;
ТекСтолбец = 0;
КонецЕсли;

Если ТекСтрока = 2 Тогда
ТекСтрока = 0;
ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;


КонецЦикла;


Возврат ТабДокумент;

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


Теги:
 

Форма "Взнос наличными в банк" где она :)

Автор lefantiy_94Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 5
Просмотров: 4891
Последний ответ 30 Июн 2015, 03:50
от lefantiy_94
Вопрос по УНФ (форма "Задание на работу")

Автор tantonyРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 2
Просмотров: 387
Последний ответ 22 Июн 2017, 18:22
от tantony
Как программно вызывать обработчик ПриИзменении поля табличной части после того, как форма была заполнена программно?

Автор ИстребительРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 6
Просмотров: 4591
Последний ответ 27 Июл 2015, 06:21
от cska-fanat-kz
Для объекта не определена форма по умолчанию, соответствующая текущему режиму запуска. Объект: "Консоль Запросов"

Автор Азамат ХубиевРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 14
Просмотров: 6736
Последний ответ 20 Июл 2016, 22:56
от Азамат Хубиев
Шаблон или Форма для заполнения "заказа покупателя"

Автор SandrРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 5
Просмотров: 6766
Последний ответ 02 Сен 2013, 14:22
от LordWizard

* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
108 Сообщений
AIFrame
100 Сообщений
alex0402
34 Сообщений
pavl_vs
23 Сообщений
kiksi
19 Сообщений
alexandr_ll
18 Сообщений
andron81_81
16 Сообщений
Artibon
15 Сообщений
Norfolk
15 Сообщений
MuI_I_Ika MuI_I_Ika
13 Сообщений

* Кто онлайн

  • Точка Гостей: 391
  • Точка Скрытых: 0
  • Точка Пользователей: 5
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal