Имя: Пароль:
1C
1С v8
Замена значения перед выводом на печать ТОРГ 12 и счет-фактура
,
0 Juvelirus
 
25.04.17
08:42
Всем добрый день. Сначала о том, на чем работаю:
УТ 11.3.2.207
Платформа 8.3.9.2170

Задача: Есть стандартная номенклатура, связанная с сайтом. Есть наименование для печати. Есть нормальные заказчики, а есть не очень. И эти самые "не очень", требуют, чтобы в счете и торг 12 было именно их наименование товара.

Решение: введены в ТЧ заказа клиента и реализации дополнительный реквизит: "НоменклатураКлиента" с типом СТРОКА.

Задача, провести обработку массива перед выводом на печать по алгоритму:
Для каждого стр из Объект.Товары Цикл
Если стр.НоменклатураКлиента <>"" ТОГДА
НазваниеДляПечати = стр.НоменклатураКлиента;
Иначе
НазваниеДляПечати = стр.Номенклатура.НаименованиеПолное
КонецЕсли;
КонецЦикла;

Как реализовывать - в расширении, методом &ВМЕСТО, чтобы не ломать стандартные механизмы и не использовать ВПЧ.

Собственно прощу у Вас помощи с подсказкой как это реализовать. Буду признателен помощи.

Заранее большое спасибо!
1 Flover
 
25.04.17
09:11
(0)
>>>и не использовать ВПЧ.
>>>>Как реализовывать - в расширении, методом &ВМЕСТО
будь оригинальным и не ищи лёгких путей, оставь о себе гвоздик в истории ))
разверни базу отдельную, настрой обмен через универсальные правила, гоняй его каждые 10 минут в оба конца и печатай для клиентов так как им надо из новой базы )) - для каждого клиента обязательно свою базу сделай.
2 Масянька
 
25.04.17
09:17
(0) Есть такой момент...
Только у нас наименование по тендеру.
Я пошла таким путем: в справочнике поле "СпецПечать", в док-ах "галочка" "СпецПечать" - при установке данной "галочки" выводится не наименование, а спецпечать.
Как два пальца оросить (С)
3 Juvelirus
 
25.04.17
10:33
(2) Вот и я о том же, но вопрос, куда вы выводите и как эти данные.  Собственно решение у нас с Вами я так понимаю идентичное)))
4 Масянька
 
25.04.17
10:37
(3) В печатной форме ТОРГ-12 (аналогично и в остальных):
        Если (СпецПечать = 0) Тогда
            мНоменклатура    = глРазбитьТекстНаСтроки(Номенклатура.ПолнНаименование, 59);
        Иначе
            мНоменклатура    = глРазбитьТекстНаСтроки(Номенклатура.АльтернативноеНаименование, 59);
        КонецЕсли;
5 Масянька
 
25.04.17
10:37
+ (4) мНоменклатура - это строка 2-ой колонки.
6 Juvelirus
 
26.04.17
13:28
(4) Простите, туплю. В какой именно процедуре вы это делаете? Можете подробнее показать? Я думал подкорректировать запрос, но как оказалось это не самый оптимальный вариант.
7 Масянька
 
26.04.17
13:34
(6) Во-первых, это семерка.
Во-вторых, делать нужно не в запросе (где получаешь данные), а там, где идет формирование печатной формы. У меня - переписанная печ. форма, поэтому (у меня) ВывестиСтроки(ПечТабл, МнЧ, НачСтрока, КонСтрока). А у себя - ищи, где формируется печ. форма (заполняются поля и всё такое).
8 AlvlSpb
 
26.04.17
14:15
(0) Я бы сделал проще
В текстовом описании вашей Номенклатуры (например, Товар1), написать точное название номенклатуры клиента "Привереда" (наример, Товар1_1)
В модуле менеджера в запросе на выборку номенклатуры для печати Заменить строку
РеализацияТоваровУслугТовары.Номенклатура.НаименованиеПолное КАК ПредставлениеНоменклатуры,
На
ВЫБОР КОГДА РеализацияТоваровУслугТовары.Ссылка.Контрагент.Наименование = "Привереда" ТОГДА РеализацияТоваровУслугТовары.Номенклатура.Описание
ИНАЧЕ РеализацияТоваровУслугТовары.Номенклатура.НаименованиеПолное
КОНЕЦ КАК ПредставлениеНоменклатуры,

ВСе. В форме документа будет стоять ваш понятный товар, в форму ечати выведется его наименование
9 AlvlSpb
 
26.04.17
14:16
*его имеется в виду клиента "Привереда"
10 Злопчинский
 
26.04.17
14:23
что-то мне кажется что ТС изобретатет свинтопрульный агрегат
даже в 77 были аналоги номенклатуры.
в УТ11 это точно есть. загнать туда и тянуть при печати
11 Злопчинский
 
26.04.17
14:24
без всяких дополнительных реквизитов
12 AlvlSpb
 
26.04.17
14:39
(0) Ну а если все-таки хотите по доп реквизитам, пример кода:
(делал в расширении по ТЗ: если контрагент с таким-то именем, то заголовок счета должен быть с префиксом, определенным этим клиентом)

&Вместо("СформироватьПФ")
Функция РасшСчет_СформироватьПФ(ОписаниеПечатнойФормы, ДанныеОбъектовПечати, ОбъектыПечати, ВывестиПланОплаты) Экспорт
ТабДок = ПродолжитьВызов(ОписаниеПечатнойФормы, ДанныеОбъектовПечати, ОбъектыПечати, ВывестиПланОплаты);
ОпрПоставщика = ТабДок.НайтиТекст("Пепкин");
    Если ОпрПоставщика <> Неопределено Тогда
    НашЗаголовок = ТабДок.НайтиТекст("Счет на оплату № ");
    ПрефиксГод = Формат(ТекущаяДата(), "ДФ=yy");
    УбратьЗаголовок = СтрЗаменить(НашЗаголовок.Текст, "Счет на оплату № ", "");
    УбратьДату = СтрЗаменить(УбратьЗаголовок, "от", "  ");
    НашНомер = СокрЛП(Лев(УбратьДату, 5));
    ДлинаНомера = СтрДлина(НашНомер);
    Если ДлинаНомера = 1 Тогда
    ЛидирующиеНули = "000";
ИначеЕсли ДлинаНомера = 2 Тогда
    ЛидирующиеНули = "00";
ИначеЕсли ДлинаНомера = 3 Тогда
    ЛидирующиеНули = "0";
    Иначе ЛидирующиеНули = Неопределено;
    КонецЕсли;
    Результат = СтрЗаменить(НашЗаголовок.Текст, "№ ", "№ ТКСПБ" + ПрефиксГод + "-" + ЛидирующиеНули);
    НашЗаголовок.Текст = Результат;    
    КонецЕсли;

Возврат ТабДок;
КонецФункции

Т.е. изменения ведутся на уровне уже созданного табличного документа для печати.
Перехватываем функцию формирования печатной формы - &Вместо
тут же заставляем отработать перехватываемую функцию из модуля конфы :

ТабДок = ПродолжитьВызов(ОписаниеПечатнойФормы, ДанныеОбъектовПечати, ОбъектыПечати, ВывестиПланОплаты);

И дальше делаем манипуляции нам необходимые.
13 1cVandal
 
26.04.17
14:41
(11) он не хочет код типовой ломать, не хочет делать свою ВПЧ. Он хочет использовать расширения и подменить типовую процедуру своей
14 1cVandal
 
26.04.17
14:42
15 1cVandal
 
26.04.17
14:43
Так же всем отписавшимся здесь тоже желательно это прочитать если работаете с 8.3. А то вопрос задан конкретный а такую чушь пишите
16 AlvlSpb
 
26.04.17
15:02
(14) Кому вопрос?
17 Злопчинский
 
26.04.17
17:42
(13) да процедуру-то пусть подменяет. зачем городить ненужные объекты/виды метаданных?
18 Злопчинский
 
26.04.17
17:48
не, я могу тупить и быть полным неадекватом, но что-то тут не так..???
https://content.screencast.com/users/Che66/folders/Jing/media/651c711b-d192-4789-83d1-c35beceb60bf/2017-04-26_1747.png
19 Вафель
 
26.04.17
17:50
всю процедуру жестоко подменять. нужно в единичном месте вклиниться.
Тут расширения не очень помогут
20 Джинн
 
26.04.17
18:01
(0) Решение кривое. Кошерное решение - регистр сведений, подчиненный номенклатуре с контрагентом и его наименованием номенклатуры.
21 Вафель
 
26.04.17
18:03
(20) в ут уже есть справочник номенклатура поставщика
22 Злопчинский
 
26.04.17
18:04
(20) в клюшках так и сделано. вместо РС - подчиненный справочник
23 Злопчинский
 
26.04.17
18:21
http://catalog.mista.ru/public/594348/
Расширение конфигурации. Создаем печатную форму для документа.
24 Джинн
 
26.04.17
18:27
(21) Тем более. Нужно ее использовать и для покупателя. Одна функция с параметрами Номенклатура и Контрагент, которая вернет кошерное наименование во все печатные формы. У меня в УПП так сделано - у сетей попадаются такие шизанутые требования.
25 Злопчинский
 
26.04.17
18:54
(24) возможно это не шизанутые требования  а просто недоработки регламентов и бух.учетных политик.

у тебя товар называется "гвоздь оцинкованный сотка"
а у меня "100 оцинк.гвоздь"
а писать в приходе надо типа так как в документах поставщика.
вот они-сетки и вбили когда-то у себя
"Оцинкованный гвоздь-100"
и теперь требуют от всех такого указания наименования.
бо на рабочих местах во многих сетях автоматизация на зачаточном уровне  виде компа для доступа в корп.ситему, а корп система пользы никакой не дает (бо так запилена или некому до таких частностей опускаться)
26 Джинн
 
26.04.17
19:03
(25) > а писать в приходе надо типа так как в документах поставщика

В этом месте не совсем правильно. Был в свое время у ФНС приступ шизофрении по этому вопросу, но потом, судя по всему, либо укол успокоительного получили, либо забыли/забили.

А в остальном верно. Но только есть один нюанс - мы производственная контора и никто не может продать сетям продукцию под нашей торговой маркой :) Мы единственный поставщик, а значит иного наименования у них быть не может. Но нет, умудрились накосячить. Некоторые правда до маразма не дошли - только свои коды требуют, а не свое наименование. Тут понять можно - приемку легче автоматизировать.
27 Злопчинский
 
26.04.17
19:45
(26) с кодами да, у меня в одну сетку кроме нашего артикула еще три кода покупателя впилено https://www.screencast.com/t/GxKEzzfH
28 Злопчинский
 
26.04.17
19:48
(26) маразма хватает. в этом же самом покупателе - все коробочные блоки маркируются спецэтикетками со спецкодами/штрихкодами покупателя. Причем это было впихнуто нам как непременное условие иначе кабздык. сделал. пофиг на приемке это нафиг не надо, никто на это не смотрит. - ибо все вскрывается и принимается поштучно. Но клеить надо. почему? ПОТОМУ ЧТО ЗДЕСЬ ТАК ЗАВЕДЕНО. - яркий пример когда логистика оторвана от реальности.