Имя: Пароль:
1C
1С v8
Похвастаться - массовая печать документов
,
0 igel1969
 
03.11.22
13:00
Задача от пользователей - массово печатать документы.
Хочу похвастаться, как я ее решил, так как для решения обеих половин задачи я нашел подсказки в интернете, но общей картины нигде не видел.
Я понимаю, что есть инструмент Групповой обработки справочников и документов, но обучать ему клуш-операторов нереально.
Скопировал форму списка документов, сделал ее по умолчанию. Не так уж много нужных функций на этой форме,чтобы бояться что что-то кардинально изменится при обновлении. Честно говоря, я уже давно ее скопировал.
У главного табличного поля поставил Режим Выделения не Одинарный, а Множественный.
Добавил на форму панель, сделал ее невидимой. На эту панель добавил Командную панель. В ней создал пункт меню "ПечатьВыделенныхДокументов".
У табличного поля свойство "Контекстное меню" вместо "Отсутствует" поставил мою командную панель.
А на пункт меню написал следующую процедуру:

        ТЗ = ЭлементыФормы.Список.ВыделенныеСтроки;
    Инд = 0;
    Для Каждого Стр Из ТЗ Цикл
        Ссылка = ЭлементыФормы.Список.ДанныеСтроки(Стр).Ссылка;
        Объект = Ссылка.ПолучитьОбъект();
        Если Инд = 0 тогда
            Форма = ПолучитьОбщуюФорму("ФормаВыбораПечатныхФорм", ЭтаФорма, Объект);
            Если Форма.ОткрытьМодально() <> Истина Тогда
                Возврат;
            КонецЕсли;

            Инд = 1;
        КонецЕсли;
        
        Для каждого СтрокаКнопки Из Форма.ЭлементыФормы.ДеревоМакетовПечати.ВыделенныеСтроки Цикл
            Расшифровка = СтрокаКнопки.Расшифровка;
            Если ТипЗнч(Расшифровка) = Тип("Структура") и Расшифровка.ВидПечатнойФормы = Перечисления.ВидыДополнительныхВнешнихОбработок.ПечатнаяФорма Тогда
                ТабДокумент = УниверсальныеМеханизмы.НапечататьВнешнююФорму(Объект.Ссылка, Расшифровка);
                ЭтоДокумент = Метаданные.Документы.Содержит(Объект.Метаданные());
                УниверсальныеМеханизмы.НапечататьДокумент(ТабДокумент, 0, Форма.НаПринтер, ?(ЭтоДокумент, ОбщегоНазначения.СформироватьЗаголовокДокумента(Объект), Строка(Объект)), Объект.Ссылка, Расшифровка);
            Иначе
                Объект.Печать(Расшифровка, 0, Форма.НаПринтер);
            КонецЕсли;
        КонецЦикла;
    КонецЦикла;


И вуаля! При вызове контекстного меня один раз появляется форма для выбора печатных форм, а потом для всех выбранных документов эти формы печатаются.

Может кому пригодится, пользуйтесь.
1 H A D G E H O G s
 
03.11.22
13:01
Как в старые добрые Г1С времена..
2 igel1969
 
03.11.22
13:06
(1) извините, я не в курсе об чем Вы
3 Ryzeman
 
03.11.22
13:08
(1) лол

(2) Чем не устроил БСПшный механизм печати, в котором всё уже есть без этих костылей?)
4 p-soft
 
03.11.22
13:11
речь о том что "чукча не читатель, чукча писатель"
5 lubitelxml
 
03.11.22
13:13
Если Форма.ОткрытьМодально() <> Истина Тогда ????? это что?
6 mistеr
 
03.11.22
13:13
(3) Его надо изучать :)
7 Ryzeman
 
03.11.22
13:13
(6) Аргумент)
8 igel1969
 
03.11.22
13:14
(5) если оператор передумал печатать и на форме со списком печатных форм нажал отмена или крестик
9 stopa85
 
03.11.22
13:18
(0) у вас в коде получаются данные печати одного документа, формируется печатная форма, отправляется на печать. Это не оптимально. Лучше было бы получить данные для формирования печатных форм всех документов, потом формировать печатные формы и отпарвять их на принтер.

В 99 из 100 случаев один "большой" запрос к БД лучше 100 маленьких
10 igel1969
 
03.11.22
13:21
(3) я пишу для людей (читай - компьютернонеграмотных операторов) а не для ЧСВ, как многие программисты.
P.S.: Когда 8 лет назад нашу фирму наши главные московские поставщики заставили перейти на 1С, первое время мы пытались нанимать 1С-ников, чтобы они настроили или запрограммировали нам то что нам нужно, к чему все привыкли, нужные отчеты. Так вот - ни один 1С-ник из ваших сраных Рарусов и Первых Битов не смог создать ничего, чем бы мы пользовались до сих пор. пришлось мне самому освоить 1С и все написать самому, под наших пользователей, чтобы им было удобно, под руководство, чтобы им было информативно. Я считаю, что пользу приносят только программисты на самом предприятии, которые знают бизнес-процессы и нужды пользователей. А в программистских фирмах сидят люди, от которых толку нет, только деньги сшибают сперва красивыми обещаниями, а на выходе пшик получается.
11 igel1969
 
03.11.22
13:22
(9) спасибо, подумаю над оптимизацией.
12 lubitelxml
 
03.11.22
13:24
(10) проблема не во франчах, а в неумении со стороны бизнеса описать что необходимо.
13 Бычье сердце
 
03.11.22
13:24
(12)
Не все так однозначно
14 Масянька
 
03.11.22
13:25
(12) Это бизнес попросил (описал ТЗ) перенести кнопку "Главное меню"?
15 lubitelxml
 
03.11.22
13:25
(8) я про открытие формы модально... этот метод например не во всех браузерах будет работать на сколько помню. Да и вообще в некоторых конфигурациях модальные окна запрещены
16 Ryzeman
 
03.11.22
13:25
(10) Не понял к чему весь этот P.S. и отсылка к ЧСВ. У меня не было цели ни оскорбить, ни наоборот как то потешить своё ЧСВ за твой счёт.

Рарус и ПБ - это франчи, там работают точно такие же программисты, как и везде. Повезёт - они сделают задачу хорошо, не повезёт - плохо. Это тоже не при чём.

Есть библиотеки, которые разработаны самой фирмой 1с - БСП, БПО и т.д. Они используются в типовых тиражных решениях. Там не всегда на 100% всё оптимально и круто сделано, но, например, такие вещи как печать документов - нету ни одной причины не использовать. И моя подколка именно об этом.
17 H A D G E H O G s
 
03.11.22
13:26
Я же говорил, что все как в старые добрые времена Г1С, см. (10)
18 H A D G E H O G s
 
03.11.22
13:27
Ностальжи
19 Ryzeman
 
03.11.22
13:27
(16) И в этом ключе топик выглядит буквально как "нигде не нашёл как сделать двухколёсное средство на металлической раме, в интернете только инфа кусками, делюсь своим рецептом, я назвал его "велосипед""
20 H A D G E H O G s
 
03.11.22
13:27
Спасибо вам, молодой человек, порадовали порадовали.
21 mistеr
 
03.11.22
13:27
(10) Я не понял, что из перечисленного оправдывает нежелание изучать стандартные библиотеки и следовать лучшим практикам?
22 p-soft
 
03.11.22
13:27
(10) джуниорский пафос пройдет со временем. проблемы взаимодействия заказчика айти услуг и исполнителей связаны со сложностью сферы айти, а не с жизненной несправедливостью, хотя она имеет место в отдельных случаях
23 H A D G E H O G s
 
03.11.22
13:27
(22) посмотри в его личку
24 Garykom
 
гуру
03.11.22
13:28
(0) ЭЭЭ во всех типовых можно выделить документы и нажать Печать не?
25 Масянька
 
03.11.22
13:29
(15) Не так давно зашел разговор с программистами_не_1С... Когда я сказала, что в 8.3 отказались от модальности - люди были в шоке "Чем не угодила?!"
26 p-soft
 
03.11.22
13:30
(23) ну с возрастом должен жизненный опыт добавляться.. хотя могу быть не прав
27 Garykom
 
гуру
03.11.22
13:30
(25) Хотя бы тем что другие открытые формы туда может что то прилетать пока модальную открыли и?
28 Ryzeman
 
03.11.22
13:30
(25) Ну, вне веб приложений модальность только мешает асинхронности. Она тоже не везде нужна
29 Масянька
 
03.11.22
13:32
(27) (28) Особенно хорошо это "реализовано" в конфигурации Документооборот.
30 igel1969
 
03.11.22
13:33
(16) когда я сделал поиск в Яндексе "1С массовая печать документов" мне вышло только через групповую обработку,
31 igel1969
 
03.11.22
13:34
(24) нет, в УТ 10.3 такого нет
32 lodger
 
03.11.22
13:37
(17) тут с первого слова в названии темы всё понятно.
33 Garykom
 
гуру
03.11.22
13:41
(29) В какой именно ДО?
Сча уже 3-й
34 Ryzeman
 
03.11.22
13:42
(30) Потому что массовыми бывают только убийства :) В терминологии 1с это "групповая печать документов". Не знаю как яндекс, но гуглом находится и так и так.
(31) 10.3 сняли с поддержки в 2003-м году, если верить гуглу. Там эти библиотеки 19-летней давности...
35 Kassern
 
03.11.22
13:43
(31) Если есть возможность, скачайте УТ11 и посмотрите как там реализована возможность печати в списках документов.
36 lodger
 
03.11.22
13:45
(33) я бы сказал, что 3шка в состоянии открытой беты. замотались уже есть этот кактус на опытном внедрении.
37 Garykom
 
гуру
03.11.22
13:47
(36) Внедрение с нуля или переход с ДО 2?
38 Garykom
 
гуру
03.11.22
13:47
(30) "Пакетная печать" выдает дофига готового
39 p-soft
 
03.11.22
13:48
(35) ут11 не самый лучший пример для разбора.. в бсп примеры есть и конфа меньше
40 lubitelxml
 
03.11.22
13:48
(36) тоже сейчас внедряем (я в качестве разраба) 3 версию. Пока не запустили, но в целом на этапе тестирования вроде норм работает
41 H A D G E H O G s
 
03.11.22
13:50
(0) Что мне напомнил автор
https://youtube.com/shorts/UUjLALBEC8A?feature=share
42 lodger
 
03.11.22
13:51
(37) ни то, ни другое.
повторное внедрение, после успешной по своему перепиленной 2.1 (которую просто страшно уже даже пытаться обновлять).
в 3шку заманило наличие из коробки всей той суеты, которой в 2.1 (5 лет назад) просто не было.
43 igel1969
 
03.11.22
13:51
(38) "Пакетная печать" выдает как по одному документу напечатать весь пакет (и реализацию, и Счет-Фактуру, и транспортную). Это не то, что мне надо
(34) "групповая печать документов" дает групповую обработку справочников и документов, которой я не хочу учить операторов
44 H A D G E H O G s
 
03.11.22
13:52
45 lodger
 
03.11.22
13:52
+(42) вкатываем туда другие отделы, оставив популяцию юзеров 2.1 в покое.
46 lubitelxml
 
03.11.22
13:53
(41) (44) спасибо, пятнично )
47 H A D G E H O G s
 
03.11.22
13:55
48 igel1969
 
03.11.22
13:59
(41) (44) (47) до слез )))))) спасибо
49 Elf_80_lvl
 
03.11.22
14:05
(10) Совершенно согласен. Местные программисты выполняют хотелки, а потом раз в 10 лет приходят люди и внедряют новую версию программы, потому, что программист уволился ,а старую обновлять уже невозможно.
50 igel1969
 
03.11.22
14:09
(49) и это тоже есть. Но эти 10 лет всем работать в системе будет удобно
51 p-soft
 
03.11.22
14:13
(50) открою секрет. нормальное решение должно иметь баланс между стоимостью его внедрения и последующими визгами пользователей. не стоит забывать что всем участникам платит бизнес
52 p-soft
 
03.11.22
14:14
(51) не точно выразился - стоимостью владения
53 Fish
 
03.11.22
14:17
У Гения появился серьёзный конкурент.
54 Гипервизор
 
03.11.22
14:18
(0) Одни эмоции.. Для начала, что за конфигурация у вас? А то пока какой-то NIH-синдром: "эти ваши.." (такие же ваши, как и наши), "не могут создать ничего удобного" (ну как задачу ставили) и т.д.
55 Волшебник
 
модератор
03.11.22
14:23
(44) Зачёт!
56 vis_tmp
 
03.11.22
14:45
(54) Написано же в (31) - УТ 10.3
57 stix2010
 
03.11.22
14:46
(0) и что?я тоже так умею  
https://prnt.sc/XbBDBY12E_SD
58 НафНаф
 
03.11.22
14:50
(10) ну а ты что тут делаешь тогда?
59 Kassern
 
03.11.22
14:54
(57) Зачем вы скидываете ссылки на запрещенные роскомнадзором ресурсы? Номер и дата основания для внесения в реестр - 2022-06-10-3245 от 14.06.2022
60 stix2010
 
03.11.22
15:00
(59) да ладно? у меня и кинозал.тв открывается

СтруктураМассивовДокументов=ПолучитьСтруктуруОтмеченныхДляПечатиДокументов();
    Если СтруктураМассивовДокументов.МассивСчетовПечать.Количество()>0 Тогда
        Если (Объект.ПечатьСчет = Истина) и (Объект.ЭкземпляровСчет > 0) Тогда
            //МенеджерПечати = "Документ.СчетНаОплатуПокупателю";
            МенеджерПечати = "Обработка.ПечатьСчетаНаОплату";
            ИмяМакета = "СчетЗаказ";
            //ИмяМакета = "СчетЗаказСПечатью";
            Если Объект.ПросмотрПечати = Истина Тогда
             УправлениеПечатьюКлиент.ВыполнитьКомандуПечати(МенеджерПечати, ИмяМакета, СтруктураМассивовДокументов.МассивСчетовПечать, ЭтаФорма, Новый Структура);
            Иначе    
                
                УправлениеПечатьюКлиент.ВыполнитьКомандуПечатиНаПринтер(МенеджерПечати, ИмяМакета, СтруктураМассивовДокументов.МассивСчетовПечать, Новый Структура);
            КонецЕсли;
        КонецЕсли;    
    КонецЕсли;
61 Kassern
 
03.11.22
15:02
(60) У меня с работы не открывает, с мобильного мегафон тоже посылает, только уже ссылаясь на то, что ресурс заблокирован.
62 Гений 1С
 
гуру
03.11.22
15:13
(0) эх, молодешь, надо писать "Мой гений дарит вам..."