Имя: Пароль:
1C
1С v8
Вывести розничную цену на печатную форму
0 Joker2705
 
10.07.21
13:34
Добрый день! Есть УТ 11.4. Пробую написать внешнюю печатную форму. Задача следующая: Есть документ Поступление товаров, нужно что бы из этого документа можно было распечатать накладную в Розничных ценах, при том, что сам документ заполняется в закупочных. Есть несколько магазинов (Условно маг1, маг2 и маг3), соответственно, поступление делается на определенный магазин. Подскажите, как мне узнать розничную цену этого товара (который в накладной), которая именно в том магазине, на который делается поступление.
Я примерно представляю, что нужно считать имя магазина (склада) из накладной, посмотреть, какая розничная цена стоит на этом магазине, посмотреть в номенклатуре цену по этому виду цен и вывести все это в печатную форму.
Вопрос только в том, какими командами это сделать и как правильно построить запрос?
1 ДенисЧ
 
10.07.21
13:39
Есть регистр сведений цены номенклатуры. Там вид цены, номенклатура и цены.
Вид цены - узнаешь из склада (обычно там это прописывается).
Дельше СрезПоследних к этому регистру на дату накладной по найденному виду цен и списку номенклатуры из документа.
Обычно такой пример приводится во всех учебниках, когда рассказывается о периодических регистрах.
2 Joker2705
 
10.07.21
13:49
(1) Это я все понял, но вот проблема, подскажите, какой командой мне узнать Вид цены из склада? Как посмотреть и вывести Название склада я разобрался, оно висит в реквизитах Поступления товаров.
3 Joker2705
 
10.07.21
13:52
(2) Допустим, есть переменная "Склад1", как мне в Переменную "ВидЦены" считать и вставить именно тот вид цены, который принадлежит складу из переменной "Склад1"?
4 acanta
 
10.07.21
13:57
Если когда вы пишете склад1. вам после точки выдается список с наименованием, кодом и вид цен там тоже есть, то пишем видцены = склад1.видцены
Если ничего похожего нет, нажимаем на справочнике виды цен в конфигураторе поиск ссылок и изучаем в каких метаданных может храниться.
5 Joker2705
 
10.07.21
14:19
(4) Так. Отлично. Начал получать. Для проверки написал в Модуль объекта

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

И в печатной форме стало выводиться наименование Вида Цены.
6 Guk
 
10.07.21
14:22
(5) фантастика!...
7 Joker2705
 
10.07.21
14:24
(6) можно без сарказма? Я делаю это в первый раз. Лучше подскажите что делать дальше? как мне теперь вывести эти цены на печатную форму?
8 acanta
 
10.07.21
14:56
Внешняя (и любая)печатная форма должна поддерживать по умолчанию два режима работы - печать списка выделенных документов из формы списка (журнала) и печать одного, еважно из формы документа или журнала.
Отсюда неутешительный вывод - документ должен быть записан, обращаться к нему следует "на Вы", т.е. запрос с фильтром по списку документов, группировка по ссылке и левое соединение к регистру сведений.
Пербор строк формы на клиенте теоретически тоже возможен, но это скорее исключение..
9 Joker2705
 
10.07.21
15:02
Пробую сейчас вывести розничную цену, но при выводе печатной формы выдает ошибку "Несоответствие типов (параметр номер '2')"

вот переменная:
ЦенаРозничная = РегистрыСведений.ЦеныНоменклатуры.ПолучитьПоследнее(ТекущаяДата(), ДанныеПечати.Склад.РозничныйВидЦены);
10 ДенисЧ
 
10.07.21
15:05
(9) Выдели ПолучитьПоследнее, нажми Ctrl-F1 и почитай, какой параметр ему нужен вторым.
Подсказываю - структура, а не СправочникСсылка.ВидыЦен.
Там в справке даже пример есть...

Привыкай пользоваться этой волшебной кнопкой, она убережОт тебя от многих вопросов.
11 acanta
 
10.07.21
15:06
Вероятно, требуется товар И вид цены или структура с соответствующим отбором.
12 Joker2705
 
10.07.21
16:02
Так, ошибка ушла, отчет выводится на просмотр, но тут же следующая проблема, в колонке с Розничной Ценой пишется "Структура" вместо цен,

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


Подскажите, что не так?
13 Joker2705
 
10.07.21
16:19
Я просто не пойму, где в модуле код о выводе Цены, Количества, Ед.изм на печатную форму.
14 ДенисЧ
 
10.07.21
16:23
Я же предложил нажать волшебную кнопку...
А ещё я предложил прочитать, что написан в том, что вывелось по этой кнопке ((((

Что ж за новички пошли, даже справку прочитать не могут....(((
15 Новый1сник2
 
10.07.21
16:32
(14) отдал даром синакс-помощник))
16 Joker2705
 
10.07.21
16:32
(14)  прочитал и сделал как там написано.
17 Новый1сник2
 
10.07.21
16:33
(15) *синтакс-помощник
18 Joker2705
 
10.07.21
16:36
А если вот так

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

то вообще ничего не выводится
19 Новый1сник2
 
10.07.21
16:41
(0) Стаж: 6 лет 4 месяца 20 дней, какую ни будь литературу читал? Радченко, Хрусталева например?
20 Joker2705
 
10.07.21
16:43
(19) Стаж все врет, программированием в 1С до сего дня не занимался. Литературу не читал. Просто клиент попросил помочь, я и взялся, попутно изучаю.
21 Новый1сник2
 
10.07.21
16:56
(20) начинать нужно с азов, а так ты только навредишь клиенту в худшем случае, в лучшем ни чем не поможешь
22 Новый1сник2
 
10.07.21
16:58
(20) прочитай хотя бы Практическое пособие 8.3
23 Joker2705
 
10.07.21
16:59
Так, вроде получилось, немного подправил и стала выводиться цена

Отбор = Новый Структура;
Отбор.Вставить("Номенклатура", ВыборкаПоТоварам.Номенклатура);
Отбор.Вставить("Характеристика", ВыборкаПоТоварам.Характеристика);
Отбор.Вставить("ВидЦены", ДанныеПечати.Склад.РозничныйВидЦены);
СтруктураРесурсов = РегистрыСведений.ЦеныНоменклатуры.ПолучитьПоследнее(ТекущаяДата(), Отбор);
ЦенаРозничная = СтруктураРесурсов.Цена;
            
СтруктураДанныхЦенаРоз = Новый Структура;
СтруктураДанныхЦенаРоз.Вставить("ЦенаРозничная", ЦенаРозничная);
ОбластьДанных.Параметры.Заполнить(СтруктураДанныхЦенаРоз);
24 Joker2705
 
10.07.21
16:59
(22) Обязательно прочитаю, но мне в понедельник уже отдать обработку нужно
25 ДенисЧ
 
10.07.21
17:38
(22) Некогда двигатель заводить, ехать надо!
Сам должен понимать!..
26 Новый1сник2
 
10.07.21
17:47
(25) "машина ждет" ?
27 acht
 
10.07.21
18:44
(20) > Просто клиент попросил помочь, я и взялся, попутно изучаю.
...
(24) > но мне в понедельник уже отдать обработку нужно

Опыт, получаемый когда берешься за то чего не знаешь - бесценен! Надеюсь, клиент тоже оценит.
Расскажешь потом, чем дело кончилось?
28 Guk
 
10.07.21
20:58
(27) если будет чем рассказать ;)...
29 Joker2705
 
12.07.21
12:14
(27) (28) Победил. Сделал все как нужно, клиент очень доволен, ему хорошо и мне приятно что удалось помочь и опыт получить))) Все сделал как пологается и по Фен-Шую))) Если кому интересно, то вот ссылка https://infostart.ru/public/1478379/
Так же, если кому нужна будет пишите в личку, вышлю на почту))))

СПАСИБО огромное всем, кто оказался не равнодушным и откликнулся на крик о помощи, все-таки не такое безнадежное сообщество как я думал.