Форум на Kuban.ru (http://forums.kuban.ru/)
-   Территория 1С (http://forums.kuban.ru/f1040/)
-   -   Печ.формы документа. Как узнать программно какая именно указана по умолчанию? (http://forums.kuban.ru/f1040/pech_formy_dokumenta_kak_uznat-_programmno_kakaya_imenno_ukazana_po_umolchaniyu-2680906.html)

Kolunya 03.06.2012 19:45

Печ.формы документа. Как узнать программно какая именно указана по умолчанию?
 
Торговля 7.7
У документа несколько печатных форм.
Мне надо добавить туда еще одну и присвоить ее кнопке по умолчанию.
Добавить то я добавлю))
но вот вопрос: Как ПРОГРАММНО установить новую печ.форму по умолчанию?

стандартный вариант с действиями юзера
"открыть док, выбрать нужную печ.форму и закрыть" - не устраивает.

Чучундер 03.06.2012 19:51

"По умолчанию" - всегда какое-то значение ОТКУДА-ТО.
Поэтому, если хочешь при открытии формы какую-либо печформу сделать по умолчанию - ОПРЕДЕЛИСЬ - например - по умолчанию = 1 первая в списке или В открытой печформе д.б. кнопочка типа "сделать по умолчанию" - сохраняется наименование файла печформы куда-то в значение (например СохранитьЗначение) - при открытии формы - читаем это значение (ВосстановитьЗначение) - ищем его в списке печформ...
.
как-то вот так мне навскидку в голову приходит

Чучундер 03.06.2012 19:52

ПРОГРАММНО возможны два вариант:
- вызвать на исполнение нужную форму;
- присвоить кнопке (НомерПечатнойФормы - вроде как-то так называется)

Kolunya 03.06.2012 20:07

при просмотре файла CFG нашел такое:

**"UserValuesProfile","**
и дальше перечислены все запоминаемые значения для юзера...
к примеру:
**""Документ.ЗаявкаПокупателяПечФорма"",""**""""S"""",""""0"""",""""0"""",""""0"""",""""0"""",""""0"""",""""Печатная форма счета""""**""**,
...
вот хочу сделать архив sfx
он автоматом положит нужную новую печ.форму в каталог prnForms
зная каталог с профилем юзера - получу файл CFG

получается нужен какой то скрипт/батник по добавлению нужной мне строчки в этот текстовый файл...

Щас буду конечно гуглить в поиске,
но мало ли.. вдруг кто такое делал?
а остальным думаю будет интересен результат, если получится ;-)

понимаю что основная проблема будет скорее всего именно в том что добавить мою строку надо не в конец файла, а в середину%), строго в определенное место((

или может есть более простой путь?)))

Чучундер 03.06.2012 21:10

(3) кривое непрозрачное решение.
как только будет дан внятный ответ "что такое печатная форма по умолчанию" для кокнретного вида документа - можно думать дальше...

Kolunya 03.06.2012 21:23

в ГМ есть глПолучитьТекущуюПечФорму, где используется ВосстановитьЗначение(ВидОбъекта + "ПечФорма")...
но это не суть важно, ибо мне надо проделать свою "операцию" без вмешательства пользователя, без запуска внешней обработки и проч из 1С...
т.к. если бы юзер мог бы открыть внешнюю обработку, которая сделает "СохранитьЗначение(*моеЗначение*)"
то уж и стандартный механизм выбора печ.формы не был бы проблемой...
а так, к сожалению имеется куча розн.точек, которым надо подключить новую печ.форму и установить ее "по умолчанию", чтобы никто голову не ломал, а тупо жмакали кнопку ПЕЧАТЬ и все...
сталкиваюсь регулярно с тем, что не все продавцы видят слева от кнопки печать кнопку выбора печ.формы :-! и приходится лезть удаленно все делать.
хочется автоматизировать сие элементарное действие, вот и решил заморочиться))

Чучундер 03.06.2012 23:54

(5) я так думаю, что следует пойти по такому пути:
- механизм ВПФ - для вменяемых людей;
- если надо сделать ТУПУЮ ГЛАВНУЮ КНОПКУ ДЛЯ ЧЕГОТОУМОЛЧАЛЬНОГО - следует ее повесить ОТДЕЛЬНО на форму - вызывать ВСТРОЕННУЮ печатную форму, кнопку назвать большими крансыми буквами типа "ЧЕК" и не морочиться.

Kolunya 04.06.2012 00:01

Чу... ты может немного меня не понял..(
я юзаю ВПФ, ибо менять конфигу ради того чтобы изменить стандартную печ.форму (которая стоит "по умолчанию") при УРБД с 40 периферийками - не есть красиво((
вешать отдельную дополнительную кнопку для моей печатной формы - это ваще уже изврат, имхо )))
на форуме ру-борда задал свой вопрос, скоро будет у меня готовое решение...
чего тока оказывается не делается с помощью батников и скриптов vbs... o_O
спасибо большое за участие, но думаю скоро я выложу сюда решение, авось кому то пригодится))

Kolunya 04.06.2012 01:12

пока еще сырое, но уже хоть какое-то решение вопроса:
создаем батник, рядом с ним кладем sed без зависимостей - [url]http://sed.sourceforge.net/grabbag/ssed/[/url]

сам батник:
chcp 1251
for /f "tokens=*" %%i in ('dir /b /s /a-d d:\base\*.cfg') do ssed "%%i" -e "/UserValuesProfile/{s/\x22Печатная форма счета\x22/\x22новый счет\x22/ ; /Документ.ЗаявкаПокупателяПечФорма/!{s/UserValuesProfile\x22,/\0{\x22\x22Документ.ЗаявкаПокупателяПечФорма\x22\x22,\x22\x22{\x22\x22\x22\x22S\x22\x22\x22 \x22,\x22\x22\x22\x220\x22\x22\x22\x22,\x22\x22\x22\x220\x22\x22\x22\x22,\x22\x22\x22\x220\x22\x22\x22\x22,\x22\x22\x22\x220\x22\x22\x22\x22,\x22\x22\x22\x220\x22\x22\x22 \x22,\x22\x22\x22\x22новый счет\x22\x22\x22\x22**,/****" > "%%~i.tmp" && move "%%i.tmp" "%%i"
////
что делает:
во всех файлах CFG внутри каталога и всех подкаталогов d:\base меняет
"Печатная форма счета" на "новый счет"
если не находит "Документ.ЗаявкаПокупателяПечФорма" - то добавляется нужная строчка.

...
решение сырое тока потому что не отрабатывается, когда в настройках сохранен вариант с другой печ.формой, к примеру вместо "Печатная форма счета" там указан "старый счет"...
в этом случае в файле ничего не меняется...
...
но в моем случае - этого будет достаточно))) вот такие вот пироги ;-)

Гинзбург 04.06.2012 05:57

бред какой то

Kolunya 04.06.2012 07:42

ну а теперь окончательно готовое решение!!! с учетом всех вариантов: когда у пользователя нет сохраненной настройки ПФ данного документа, есть настройка (и пофиг какая именно там форма сохранена по умолчанию))

итак, для тех, кому не захотелось вникать во все МноГаБукафф выше...)))

у каждого юзера 7.7 есть файл 1Cv7.cfg (либо в каталоге профиля юзера, либо в каталоге ИБ), в который после печати документа сохраняется настройка - какая именно печ.форма использовалась последней, чтобы при след.открытии юзер не думал какую именно ему надо выбирать - она становится на кнопку ПЕЧАТЬ формой по умолчанию...
так вот... у меня есть задача - создать новую ВПФ и установить ее в более чем 40 удаленных ИБ...
половина юзеров - мягко говоря, *тяжелые*...
поэтому все обновления делаю в архивах sfx - где от юзера требуется максимум тыкнуть кнопку "извлечь"
было решено попробовать кроме копирования файла ВПФ в PrnForms - еще и поменять/установить значение ПФ по умолчанию для нужного мне документа.
создается текстовый документ, переименовывается в *.bat с содержанием:
@chcp 1251
@for /f "tokens=*" %%i in ('dir /b /s /a-d d:\downloads\1Cv7.txt') do ssed "%%i" -e "/UserValuesProfile/{s/\(Документ.ЗаявкаПокупателяПечФорма[^**]***[^**]*\x22\)[^\x22]*\(\x22\x22\x22\x22**\)/\1новый счет\2/ ; /Документ.ЗаявкаПокупателяПечФорма/!{s/UserValuesProfile\x22,\x22{/\0{\x22\x22Документ.ЗаявкаПокупателяПечФорма\x22\x22,\x22\x22{\x22\x22\x22\x22S\x22\x22\x22 \x22,\x22\x22\x22\x220\x22\x22\x22\x22,\x22\x22\x22\x220\x22\x22\x22\x22,\x22\x22\x22\x220\x22\x22\x22\x22,\x22\x22\x22\x220\x22\x22\x22\x22,\x22\x22\x22\x220\x22\x22\x22 \x22,\x22\x22\x22\x22новый счет\x22\x22\x22\x22**,/****" > "%%~i.tmp" && move "%%i.tmp" "%%i"

рядом с батником должен лежать файл из архива [url]http://sed.sourceforge.net/grabbag/ssed/sed-3.62.zip[/url]

теперь главное чтобы у вас была зарегистрирована ВПФ с именем "новый счет"
так что, берем на заметку!

Kolunya 04.06.2012 07:48

вместо
d:\downloads\1Cv7.txt
пишем каталог своей ИБ и не забудьте поменять расширение с txt на cfg ;-)

Гинзбург 04.06.2012 08:05

а кто мешает ?

Документ.ЗаявкаПокупателяПечФорма="новый счет";

Гинзбург 04.06.2012 08:06

+ использовать сед в виндузе для адинес, это какой вывих мозга нужно иметь

Kolunya 04.06.2012 08:09

12-Гинзбург > учимся сначала читать, а потом уже писать всякий бред в комменты ;-)

Kolunya 04.06.2012 08:12

я повторюсь: надо автоматизировать процесс добавления новой ВПФ
при условии что юзер максимум что умеет - подобрать товар, нажать провести, и потом печать...
притом что НЕДайБоГ кнопка печати будет называться как нить по другому... - не найдут(((
и уж объяснять такому контингенту про кнопку выбора ВПФ... - это вынос мозга 1Снику!!!

Гинзбург 04.06.2012 08:13

(14)(15) Вы бредите

Kolunya 04.06.2012 08:15

ок! это значит мой бред! но он работает! спасибо спецам-полуночникам на ru-board)))

а Вы (16) пожалста, предложите тогда свое решение данной задачи?
PS. всем пиис))

Гинзбург 04.06.2012 08:19

+ если чо в 77 нормально вызывается любая функция при старте системы без изменения конфигурации, а уж ТиС позволит и черта лысова засунуть

Kolunya 04.06.2012 08:22

ну а нету вот у юзера прав вызова внешних обработок!
нецелесообразно из-за установки одной ВПФ ковырять конфигу...

(18) Ваш пример решения приведете?

Гинзбург 04.06.2012 09:36

(19) правдо нету ? как запретить без изменения конфигурации ТиС программное открытие обработок ?

в ТиС у вас есть прекрасный механизм работы с оборудованием в него можно засунуть любые обработки

Гинзбург 04.06.2012 09:38

+ всего то добавится/исправится один текстовый файл и добавится нужная Вам обработка.
Думаю это не так много для передачи по УРБД ?

Kolunya 04.06.2012 09:43

=)) продолжим дискуссию...
хороший вариант конечно - обход интерактивного открытия внешней обработки...

НО! для использования механизма работы с ТО ...
чтобы открылась обработка нужного ТО - надо его подключить! соответственно нужны опять действия юзера((

Гинзбург 04.06.2012 09:54

(22) не нужны никакие действия юсера, нужен только файл описания ккмофлайн или ккмонлайн и сама обработка

в тис в приначалеработысистемы имеется

открытьформумодально(обработкаторговоеоборудование, подключить)

Гинзбург 04.06.2012 09:55

ккм на одном месте может быть хоть миллион - думай

victuan 04.06.2012 16:21

10-Kolunya >Не взлетит твое готовое решение. Потому как если нужно изменить cfg пользователя, нужно чтобы пользователь вышел из 1С. Если ты в cfg внесешь изменение, пока пользователь "сидит" в 1С, то он твоих изменений не почувствует, т.к. cfg читается в память при открытии конфы. Более того, он этих изменений не "почувствует" и при повторном входе в базу, ибо при выходе cfg из памяти переписывается в файл, "накрывая" тем самым твои изменения.
Получается, прежде чем запустить твой батник нужно сначала "выгнать" пользователя.
Ну и нафига твои скрипты, ведь если приходится выгонять пользователя, все можно решить куда прозрачнее: добавь в гл. модуль ЦБ в ПриНачалеРаботыСистемы запуск внешней обработки "КаталогИБ()+"\Extforms\start.ert", УРБД это изменение перенесет во все твои ПБ. Затем на точки раскидываешь start.ert и свою ВПФ, start.ert при повторном запуске базы прописывает штатно в cfg (через СохранитьЗначение) твою умолчальную форму и удаляет после этого start.ert (через РасположениеФайла узнаешь где это ерт находится на ПБ).
вызов start.ert из конфы не убирай, если файла нет, то он не вызывается и ошибка не выдается. Затем в дальнейшем можешь организовать логику добавления новых ВПФ (трансляцией нового start.ert и новой ВПФ) либо для других инсталлирующих действий на точках.

Kolunya 04.06.2012 22:14

(25) про "метод со start.ert" в курсе, в другом месте у меня именно так и реализовано, все нужные действия происходят через изменение этого файла...

но в данный момент надо было быстро-срочно решить вопрос...
чтобы с утра начали печатать по новой ВПФ
поэтому и такой кипеш поднялся что и как делать((

а про выгон юзера - это ж ессесно ))
всем просто было разослано сообщение по мессенджеру
"Всем ТТ!
Закрываем 1С (ОБЯЗАТЕЛЬНО!!!)
Копируем файл по ссылке (ССЫЛКА ВНИЗУ), открываем его,
дожидаемся когда в черном окне будет написано
"Для продолжения нажмите любую клавишу..."
жмем любую клавишу, окно закроется.
все, можно открывать 1С.
ССЫЛКА: ftp://*****"

и юзеры подтвердили все мои мысли насчет их адекватности: порядка 1/3 скачали изапустили мой файл не закрывая 1С...
И ПОЛДНЯ ВСЕ РАВНО УШЛО НА ОБЪЯСНЕНИЯ по телефону...
...
и понеслась.. следующая рассылка...
"...левее кнопки ОК - кнопка печати, - еще левее маленькая кнопка (со стрелочкой/треугольником)- выбор печатной формы
тыкните туда и выберите ..."
...
и опять звонки %)... "а где? а как? куда левее? а, здесь левее..." ...
...
а вы говорите... про работников в мелких населенных пунктах и их сообразительность на работе можно анекдоты собирать :-!
как ни пиши, как ни разжевывай... все равно тупят сволачи((

Buhta 04.06.2012 22:29

26-Kolunya > оне же не знают как закрывать 1С! У мну половина искренне считает, что если на экране не маячит, значит закрыто:) уже лет 10 бьюсь с обучением настройки печати, так сегодня, после свертки базы, половина прискакало с просьбой сделать как было на одном листе, а то за границы вылазит. сказала, что даже подходить ни к кому не буду - сами: параметры страницы - по ширине листа. справились однако через часок и слезно благодарили за полученные знания:) (в который раз уже? пальцы даже на ногах все загнуты... надолго-ли?)

Kolunya 04.06.2012 22:32

вот-вот))))
как я вас понимаааааааююююююююююю)))))))

Kolunya 04.06.2012 22:34

ну думаю тему можно закрыть)
кому надо - заберет на заметку, кому не надо - идите дальше ... это всего лишь бред 1С-ника)))

Buhta 04.06.2012 22:39

29-Kolunya > лишнее это - подобные танцы с бубном:) просто надо за утирание соплей (а не за программирование) денег в разы больше брать...

Ткачик 04.06.2012 22:42

(28) Лучше бы тебе понять, что бухи должны чувствовать [b]зависимость[/b] от программиста. Но! При этом у них ни в коем случае не должно возникать ощущение, что зависимость эту создал сам программист. Наоборот, должно быть ощущение, что прог из кожи вон лезет, лишь бы облегчить им жизнь, да вот незадача, не получается это никак: то думаки новый закон приняли, то бухи его не прочитали, а если и прочитали, то не поняли.

Тогда программист не будет забыт при распределении денег на оплату перво- и второстепенных нужд.

А твоя автоматика - за что тут платить (с точки зрения буха)? Всё же "само сделалось"!

В-общем, решение твое может и правильное, но [b]вредное[/b]. Для тебя же самого.

Типа, как изобретение автоматической мышеловки котом, которого держат не из большой любви, а чтобы мыши не донимали.

Kolunya 04.06.2012 23:54

не путай решение вопросов бухов... и решение своей головной боли по инструктажу обычных операторов-продавцов... в данном конкретном случае - салоны сотовой связи... зачастую девочки в возрасте 18-22 года, ЗП масенькая у них, требования по отношению к знанию 1С и техники также масенькие, весь геморр кладется на плечи 1Сника, админа, менеджера и бухгалтера в центр.офисе...
так шо тут я сэкономил сам себе время, хоть и не на все 100%, но все равно удачно)
да и нового опыта приобрести никогда не мешает;-)

Чучундер 05.06.2012 01:07

(26) мой мелкий опыт показывает: "..чтобы с утра начали печатать по новой ВПФ" - означает что задача совершеннго споскойно терпит как минимум неделю, а то и другую - до этого же как-то обходились? - обойдутся и дальше? а если не обойдутся - следующий раз "виновные" лиуа будут думать заранее...

Чучундер 05.06.2012 01:08

> порядка 1/3 скачали изапустили мой файл не закрывая 1С...
- ну вообщем-то можно через скрипты отследить, что 1Ска не закрыта и послать всех на экран большими букавами! ;_)

Чучундер 05.06.2012 01:12

(32) успешно будет тогда, когда проблемы будут решать те, кому нужно решение этих проблем. не скопипастилась печформа - ну так манагер в репу получит если что-то там по старой форме сделает.. и к тебе прилезе, ответ один: читатйе инструкцию.. ;-) я сейчас так стараюсь делать ;-) - появляется больше времени на действительно нужные дела, а не на обучаловку компьютерной грамотности (это - за отдельные деньги!). у меня все заведены в группы/проекты на [url]www.worksection.com[/url] - публикую там видеоинструкции, объявы, люли раздаю за всякие промахи/нестыковки - и громко ОРУ - почему эти промахи обнаруживает программист а не булгахтерия..?? ;-)

Чучундер 05.06.2012 01:25

хотя, конечно, юзвери - они такие юзвери... всю оперативную работу приходится "админить" так, чтобы оставалось как можно меньше альтернатив. идеал - 1 (ОДНА!) возможность. Ибо при наличии двух - выбирают хз по каким критериям - у меня вообще мнение - выбирают нездумываюсь лишь бы куда-то тыкнуть... ;-)
.
[img]http://s006.radikal.ru/i215/1206/0c/aec572de0efb.png[/img]

victuan 05.06.2012 03:49

А у меня всё давно на автомате делается - без всяких инструкций. Хороший программист - программист, умеющий писать с минимальным объемом инструкций.
Например по сабжу, я юзаю URBDmaster.com, который при УРБД-обмене умеет дополнительно транслировать отдельные файлы. Инструкция для юзеров не нужна вообще, делается очередной обмен, и, к примеру, новая ВПФ прописывается сама (по сценарию в (25)).

victuan 05.06.2012 03:50

Ессно, при изменении мд, пользователи выходят из 1С автоматом, просить никого и не приходится.


Текущее время: 17:24. Часовой пояс GMT +3.