Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Программное создание кнопки для всех документов в формах объекта 2 страниц V   1 2 >          
Gigi Подменю пользователя
сообщение 07.10.19, 13:34
Сообщение #1

Оратор
*****
Группа: Пользователи
Сообщений: 498
Спасибо сказали: 5 раз
Рейтинг: 0

Всем опять привет!
Вообще на данном сайте как то кем то было сказано про мысли в слух ))
Но чем пожалуй решил поделиться, это уже не "мысли в слух, а мысли в крик smile.gif
Хотите знать, чем вообще занимаюсь, и на что трачу кучу времени...
ДОДЕЛЫВАЮ ТО ЧТО ПРОИЗВОДИТЕЛИ СИСТЕМЫ 1С НЕ ДОРАБОТАЛИ. Вот чем.
Просто создал пустую голую тестовую базу и пишу кучу функций к ней, которые максимально универсальны, и поэтому гораздо удобнее чем встроенные функции.
И кроме того, вообще улучшаю возможности конфигурации в целом. Добавляя туда кучу тех возможностей которых не хватает.
Тех возможностей, которые уже должны были быть в системе 1С во встроенном готовом виде. Что бы программисту меньше было работы.
И все это элементарно для того что бы подготовить почву для возможных заказов. Что бы делать их быстро и эффективно. А не заниматься разной ерундой, и тратить на это время. Той ерундой, которой вынуждает заниматься платформа своими многочисленными недоработками.
Вот чем я занимаюсь!
Ну согласитесь... занимаюсь тем чем НЕ ДОЛЖЕН ЗАНИМАТЬСЯ!
Так что, без всего этого караул.
Ладно ... перейду к вопросу:
Вот код:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
НоваяКоманда = ЭтаФорма.Команды.Добавить("ДанныеАвтозаполнения_Сохранить");
НоваяКоманда.Действие = "ДанныеАвтозаполнения_Сохранить";
НоваяКоманда.Заголовок = "Назначить реквизиты автозаполнения";
НоваяКоманда.Подсказка = "Назначить реквизиты автозаполнения по указанным значениям формы";
НоваяКоманда.Картинка = БиблиотекаКартинок.СоздатьНачальныйОбраз;
//НоваяКоманда.Отображение = КартинкаИТекст; // Тут пожалуйста ... не получается  с отображением ... если не трудно сменить строчку
КнопкаФормы  = Элементы.Добавить("КомандаДанныеАвтозаполнения_Сохранить", Тип("КнопкаФормы"),КоманднаяПанель);
КнопкаФормы .ИмяКоманды = "ДанныеАвтозаполнения_Сохранить";    
//КнопкаФормы .Вид = ВидКнопкиФормы.КнопкаКоманднойПанели;
КонецПроцедуры

Думаю тут все понимают назначение примера данного кода. Но вопрос в чем:
Как сделать то что делает код, для любой ФормаОбъекта... ЛЮБОЙ! На пример по любому объекту документа.
Как известно есть подпись на событие: "ОбработкаПолученияФормы".
И поэтому вот процедура по стандарту:
Процедура ДокументПолученияФормыОбработкаПолученияФормы(Источник, ВидФормы, Параметры, ВыбраннаяФорма, ДополнительнаяИнформация, СтандартнаяОбработка) Экспорт
Если ВидФормы="ФормаОбъекта" Тогда
// И как тут ... или это не подходит и так не получиться для указанной цели..
//НоваяКоманда = Источник.Команды.Добавить("ДанныеАвтозаполнения_Сохранить");        
КонецЕсли;

Короче хотел по быстрому получить ответ возможно ли это. Или великий и могучий 1С опять не позволяет сделать разумнее.
Если да то как?
Буду признателен!

sava1 Подменю пользователя
сообщение 07.10.19, 14:28
Сообщение #2

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2684
Из: Проскуров
Спасибо сказали: 678 раз
Рейтинг: 656.7

При добавлении команды формы обработчик (по-моему) тоже должен быть в форме.

ОбщаяКоманда - не подходит ?

Gigi Подменю пользователя
сообщение 07.10.19, 15:35
Сообщение #3

Оратор
*****
Группа: Пользователи
Сообщений: 498
Спасибо сказали: 5 раз
Рейтинг: 0

sava1 @ Сегодня, 15:28 * ,
Цитата(sava1 @ 07.10.19, 15:28) *
При добавлении команды формы обработчик (по-моему) тоже должен быть в форме.

ОбщаяКоманда - не подходит ?

Нет не подход.. Ибо нужно событие ... такое же как "ПриСозданииНаСервере" или приОткрытии любой формы объекта.
А общая команда что дает? Пользователь ее должен нажать в другом одном месте, а нужно что бы он нажимал на самой форме.

Gigi @ Сегодня, 15:42 * ,
Короче уважаемые … позвольте все объясню для чего это нужно. Для большего понимания.
И не обессудьте за не довольство. На которое имею право.
Дело в том, что просто хочется платформе придать для человека более удобоваримый вид.
А так согласен ... в 1С есть куча встроенных функций и это круто. Но, тем не менее для до конца удобной работы очень много чего не хватает.
На пример как в вопросе указанного выше пример кода.
Знаете для чего это нужно?
Цель следующая:
Во всех формах объекта по документам должна быть кнопка. И нажав на эту кнопку выходит список всех реквизитов по объекту с галочками.
После чего как только пользователь выбирает реквизиты и нажимал на Ок, он сохраняет значения по выделенным реквизитам не для одного пользователя, с которыми могут работать несколько. А только для себя индивидуально. Т.е. не под пользователя, а под IP.
И это для того, что бы он один раз указал данные для авто-заполнения и сохранил их. А после при создании нового объекта сохраненные значения отображались по выбранным им же реквизитам.
И это что бы каждый раз по каждому новому документу ему не пришлось указывать одно и тоже.
На пример каждый документ имеет реквизиты: "год-месяц". И он их постоянно должен указывать или выбирать по каждому документу. Т.е. кнопка стандарта "ввод на основании" тоже тут не поможет.
Что бы он этого не делал, хочу сделать, как говорил.
Т.е. что бы он всего один раз указал год и месяц отчетного месяца на самой форме, а потом выбрал реквизиты для сохранения в регистр сведений под измерением: "IP".
И вот таким Макаром легко и просто сохранил авто-заполнение. Без лишнего гема.
Именно поэтому эту важную кнопку нужно отобразить на все формы объекта.
Вот что нужно.
Ну, согласитесь это уже должно было быть в 1С в готовом виде. А раз ее нет то можно ли добавить ее и сделать ну не знаю… более удобно.
Буду признателен!


Gigi @ Сегодня, 15:48 * ,
Знаете еще, что самое смешное … раз уж так разоткровенничался по поводу своих мук smile.gif
Я вначале хотел вставить кнопку в контекстные меню каждого реквизита формы.
И озаглавить ее так: «Назначить авто-заполнения по реквизиту»
А после нажатия прописать вопрос Да/Нет: «Назначить текущий реквизит для авто-заполнения указанным значением?»
Но как только так решил, платформа тут же на меня навалила кучу проблем и препятствий.
Во-первых, что бы разместить кнопку в каждой форме это, как вижу, уже проблема. Не говоря уже о том, что бы отобразить ее в контекстное меню каждого реквизита на форме.
Во-вторых, в самой форме нет события активации поля, что бы машина поняла какой реквизит, выбрал пользователь для авто-заполнения. По крайней мере не нашел.
В-третьих, нужная для обозначения выбранного пользователем реквизита, команда: «Элемент.ПутьКДанным» на клиенте не работает, а работает только так:
&НаСервере
Функция ЭлементФормыПутьКДанным(ТекЭлемент)
Возврат ЭтаФорма.Элементы[ТекЭлемент].ПутьКДанным;
КонецФункции

При чем, этот код не понятно как перенести из формы в общий модуль. И тем самым приспособить его работу, для любой открытой пользователем формы объекта.
На клиентском модуле не сработает. А для серверного модуле, как помню «Элементы» не доступны.
Короче никак не получилось таким путем.
Поэтому и был вынужден через только одну кнопку с вызовом списка реквизитов для авто-заполнения.
Ну, вот видите уважаемые какие проблемы возникают, когда что-то охота сделать поудобнее. И какие проблемы, часто наваливает платформа на программиста в таких случаях…
Гуууу… просто устал от этих проблем.
Ладно! Если кто подскажет пути решения буду признателен, а на сегодня думаю пока!

sava1 Подменю пользователя
сообщение 07.10.19, 15:52
Сообщение #4

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2684
Из: Проскуров
Спасибо сказали: 678 раз
Рейтинг: 656.7

Цитата(Gigi @ 07.10.19, 16:35) *
Пользователь ее должен нажать в другом одном месте, а нужно что бы он нажимал на самой форме.


Уважаемый, Вы хреново осведомлены об Общих Командах. Возьмите типовую бухию и посмотрите, как показываются проводки документа.

Спасибо сказали: Gigi,

Gigi Подменю пользователя
сообщение 07.10.19, 16:21
Сообщение #5

Оратор
*****
Группа: Пользователи
Сообщений: 498
Спасибо сказали: 5 раз
Рейтинг: 0

Цитата(sava1 @ 07.10.19, 16:52) *
Уважаемый, Вы хреново осведомлены об Общих Командах. Возьмите типовую бухию и посмотрите, как показываются проводки документа.

Я не бухгалтер и в проводках не очень...
Но по общим командам ... да смотрел я ... правда не в типовую, а в СП. И не только это, но еще и пользовался общими командами.
Цитата
Плохо осведомлен?

Да на то и спрашиваю, что может на самом деле не достает знаний. Ведь не ради самой критики как таковой выражаю мнение. А потому, на самом деле надоели эти проблемы.
И если дело было бы только в этой кнопке... куча и других проблем.
Но ладно... посмотрю smile.gif ... Пошарю в типовой.
И там и узнаю возможности 1С ... великого и могучего smile.gifsmile.gif А не буду наоборот разочарован.
И если будут вопросы опять выйду.
Ладно! Извините за негодование и спасибо!
Пока все!





twilight_dream Подменю пользователя
сообщение 07.10.19, 23:41
Сообщение #6

Оратор
*****
Группа: Пользователи
Сообщений: 265
Спасибо сказали: 4 раз
Рейтинг: 0

Ничего не понял. Но уже 13 лет как в 8.х программирую, ни разу ничего такого не понадобилось.


Signature

Gigi Подменю пользователя
сообщение 08.10.19, 9:48
Сообщение #7

Оратор
*****
Группа: Пользователи
Сообщений: 498
Спасибо сказали: 5 раз
Рейтинг: 0

twilight_dream @ Сегодня, 0:41 * ,
Цитата(twilight_dream @ 08.10.19, 0:41) *
Ничего не понял. Но уже 13 лет как в 8.х программирую, ни разу ничего такого не понадобилось.

Ну Вы меня удивляете smile.gif ... тем более 13 лет. Тогда как, сам в 1С всего два годика.
Честно говорю я вообще не только это никак даже объяснить не могу. Но еще и многие двурогие вещи, которые производители 1С не учли.
И единственное как могу это "понять", это вспомнить один случай их практики. Когда вначале разработку сделал коллега для работы. Правда, пользователей было не так уж и много, около 8-ми человек.
Но все таки работая с этой разработкой эти самые служащие каждый раз указывали отчетный месяц по каждому новому документу, которых нужно было оформить не мало за месяц. Около 2000.
И представьте себе, что они это делали smile.gif.\ Не понимая что так сделано для глупцов. И не у одного из них даже в голову не приходило, что можно было сделать иначе. Без ввода одних и тех же данных по всем документам. Лично я это никак не могу объяснить. Как такое может быть вообще. Потому, что для меня это просто нонсенс.... Вводить одни и те же значения .... И это в 21-ом то веке?
Поэтому не понимаю, что тут непонятного.
Короче еще раз объясняю уже на примитивном языке. Когда вы на ПК открываете любой файл ... ворда, эксель, да хоть обычный блокнот. И нажимаете на сохранить то место дислокации любого сохранения это жесткий диск вашего ПК. А при клиент-серверной схеме, как на пример в 1С, место дислокация сохраняемых данных это СЕРВЕР. Который предназначен не для одного а нескольких.
И задача тут в то, как сохранить данные на том же самом сервере, не для самого сервера т.е. общего доступа, а только для конкретного ПК.
Решить данную проблематику смог уже ... Ибо слава богу 1С позволяет решить ее через регистр сведений. Так что, смог решить, путем сохранения данных под конкретный IP за которым сидит пользователь. И о том можно ли было ее решить иначе это может спрошу в другой уже новой теме. Так что, с этим нормально... И все уже ГОТОВО и работает нормально.
Осталось только ОДНО ЕДИНСТВЕННОЕ:
ОТОБРАЗИТЬ ВСЕГО ЛИШЬ ДВЕ КНОПКИ ПО ВСЕМ ФОРМАМ ОБЪЕКТОВ ДОКУМЕНТОВ.
Две простые кнопки с заглавием одной: "Назначить реквизиты авто-заполнения" и "Очистить данные авто-заполнения" второй.
Вот что осталось, все остальное уже сделано.
Поэтому по поводу :
Цитата(sava1 @ 07.10.19, 16:52) *
Уважаемый, Вы хреново осведомлены об Общих Командах.

О Господи ... я вроде специально подробно все объяснил для чего нужно.
Да смотрел я в эти общие команды ... И ничего того, о чем не знал до этого не увидел.
Во-первых там в свойствах: "Командная панель формы.Важное" или "Командная панель формы.Создать на основании", возможно указать только конкретный документ. А указать все документы 1С естественно не позволяет. Это во-первых.
Во-вторых ...Общие команды? smile.gifsmile.gif Ладно нет проблем.. вот пример общей команды . Вернее два примера
С этим вариантом все нормально ...
&
НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
знIP=Config_PC_OS_серв.Получить_IP();
КонецПроцедуры

А с этим вариантом как? И как из сторонней общей команды, вызвать ту процедуру, которая требует контекста данных от самой формы.

&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
знIP=Config_PC_OS_серв.Получить_IP();
// ТекОбъектСсылка=  и вот тут как определить ссылку на объект, для того что бы вызвать процедуру требующую контекста самой формы?
Форма=ПолучитьФорму("Документ.Документ1.ФормаОбъекта", Новый Структура("Ключ",ТекОбъектСсылка));
ОбщийМодуль_PrideSettingsFill_кл.НазначитьАвтозаполнение(знIP,Форма.Объект);
КонецПроцедуры

Со вторым вариантом как сделаете? smile.gif Да никак не правда ли?
И это часть проблем. которые возникают с общей командой.
Так что ну вот видите, опять то же самое ... миссия опять не выполнима. И это в вопросе того, что по всем формам объекта нужно отобразить всего две кнопки. А ведь кнопка на то и кнопка что она должна работать. А иначе для чего она нужна smile.gif
Короче никак нельзя это в 1С. И общие команды тут ничем не помогут.
Поэтому придется каждую форму создавать и туда вставлять данный код.
Поэтому придется каждую форму создавать и туда вставлять данный код.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
//=============================    
    ВставитьКнопки();
//=============================
КонецПроцедуры

&НаСервере
Процедура ВставитьКнопки()
//=============================    
    Команда_АвтоЗапЗапись = ЭтаФорма.Команды.Добавить("ДанныеАвтозаполнения_Сохранить"); // //Имя команды
    Команда_АвтоЗапЗапись.Действие = "ДанныеАвтозаполнения_Сохранить"; // Свойство "Действие" содержит имя связанной процедуры-обработчика команды
    Команда_АвтоЗапЗапись.Заголовок = "Назначить реквизиты авто-заполнения";
    Команда_АвтоЗапЗапись.Подсказка = "Назначить реквизиты автозаполнения по указанным значениям формы";
    Команда_АвтоЗапЗапись.Картинка = БиблиотекаКартинок.СоздатьНачальныйОбраз;
    //Команда_АвтоЗапЗапись.Отображение = КартинкаИТекст;
    КнопкаФормы_АвтоЗапЗапись  = Элементы.Добавить("КомандаДанныеАвтозаполнения_Сохранить", Тип("КнопкаФормы"),КоманднаяПанель); // Имя кнопки / Тип, всегда КнопкаФормы /Контейнер для кнопки (Форма, Группа, Командная панель)
    КнопкаФормы_АвтоЗапЗапись.ИмяКоманды = "ДанныеАвтозаполнения_Сохранить";    // Присваиваем команду для созданной кнопке //Связь с командой по имени
    //КнопкаФормы_АвтоЗапЗапись.Вид = ВидКнопкиФормы.КнопкаКоманднойПанели;
//=============================
    Команда_АвтоЗапОчистка = ЭтаФорма.Команды.Добавить("ДанныеАвтозаполнения_Очистить"); // //Имя команды
    Команда_АвтоЗапОчистка.Действие = "ДанныеАвтозаполнения_Очистить"; // Свойство "Действие" содержит имя связанной процедуры-обработчика команды
    Команда_АвтоЗапОчистка.Заголовок = "Очистить данные авто-заполнения";
    Команда_АвтоЗапОчистка.Подсказка = "Очистить данные авто-заполнения";
    Команда_АвтоЗапОчистка.Картинка = БиблиотекаКартинок.Очистить;
    //Команда_АвтоЗапОчистка.Отображение = КартинкаИТекст;
    КнопкаФормы_АвтоЗапОчистка  = Элементы.Добавить("КомандаДанныеАвтозаполнения_Очистить", Тип("КнопкаФормы"),КоманднаяПанель); // Имя кнопки / Тип, всегда КнопкаФормы /Контейнер для кнопки (Форма, Группа, Командная панель)
    КнопкаФормы_АвтоЗапОчистка.ИмяКоманды = "ДанныеАвтозаполнения_Очистить";    // Присваиваем команду для созданной кнопке //Связь с командой по имени
    //КнопкаФормы_АвтоЗапОчистка.Вид = ВидКнопкиФормы.КнопкаКоманднойПанели;
//=============================
КонецПроцедуры


И это придется делать по каждой форме объекта.
А прописать код один раз для всех форм это как вижу НИКАК ...
Ладно ... Все это для хорошего понимания вопроса
И если будут варианты предложений буду признателен!

sava1 Подменю пользователя
сообщение 08.10.19, 11:27
Сообщение #8

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2684
Из: Проскуров
Спасибо сказали: 678 раз
Рейтинг: 656.7

чем не нравится Важное ?

Цитата(Gigi @ 08.10.19, 10:48) *
возможно указать только конкретный документ. А указать все документы 1С естественно не позволяет. Это во-первых.


ТипПараметра = составной тип - и ставите "птисы" на чем хочите.

Цитата(Gigi @ 08.10.19, 10:48) *
пределить ссылку на объект, для того что бы вызвать процедуру требующую контекста самой формы?


в модуле команды -

&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)

//ПараметрКоманды и есть Ссылка на объект



Цитата(Gigi @ 08.10.19, 10:48) *
вызвать процедуру требующую контекста самой формы


интересно, что Вы в формах храните ?

Спасибо сказали: Gigi,

Gigi Подменю пользователя
сообщение 08.10.19, 11:52
Сообщение #9

Оратор
*****
Группа: Пользователи
Сообщений: 498
Спасибо сказали: 5 раз
Рейтинг: 0

Цитата(sava1 @ 08.10.19, 12:27) *
ТипПараметра = составной тип - и ставите "птисы" на чем хочите.

А разве так можно? smile.gif Ща проверю ...
Цитата(sava1 @ 08.10.19, 12:27) *
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
//ПараметрКоманды и есть Ссылка на объект

Тоже проверю ...

Gigi @ Сегодня, 12:32 * ,
Эврика smile.gif по этой части все нормально... СПАСИБО
//ПараметрКоманды и есть Ссылка на объект

Поэтому уже теперь выглядит так
//Команда общего модуля со свойством: "Командная панель формы.Важное"
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
знIP=Config_PC_OS_серв.Получить_IP();//Функция получения IP
МетаданныеПолноеИмя=Config_МетаДанные.ОбъектМетаданных(ПараметрКоманды,"ПолноеИмяЕд");//Функция опреденения метаданных по ссылке.
Форма=ПолучитьФорму(МетаданныеПолноеИмя+".ФормаОбъекта", Новый Структура("Ключ",ПараметрКоманды)); // Туи все ясно ... объяснять не надо... потому что встроенная функция.
Config_PrideSettingsFill_кл.НазначитьАвтозаполнение(Форма.Объект);//И наконец вызов процедуры по контексту данных самого объекта.
КонецПроцедуры

Отлично! Работает... если не считать одну проблему, которая возникает с общей командой., которую коснусь позже.
Но что касается составного типа ... не "птисы" не "икарусы" че то не проходят.
В типе параметра команды указываю составной, но платформа все равно требует конкретного указания документа. А ведь нужны все на все доки.
А по поводу ...
Цитата(sava1 @ 08.10.19, 12:27) *
интересно, что Вы в формах храните ?

Вы знаете... итак много букв написал ... поэтому на этот раз воздержусь ... хватит всех этих длинных речей, на самом деле.
а вместо этого я тут просто скину ссылку на образец тестовой базы.
Вы сами откроете и сами посмотрите без слов.
И думаю сами поймете что и как сделал и для чего.
Щас скину ... через 15 минут

Vofka Подменю пользователя
сообщение 08.10.19, 11:54
Сообщение #10

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13948
Из: Киев
Спасибо сказали: 4514 раз
Рейтинг: 3635.6

Цитата(Gigi @ 08.10.19, 12:52) *
А ведь нужны все на все доки.

Отметьте тип ДокументСсылка, вместо ДокументСсылка.МойДокумент

Спасибо сказали: Gigi,

sava1 Подменю пользователя
сообщение 08.10.19, 11:58
Сообщение #11

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2684
Из: Проскуров
Спасибо сказали: 678 раз
Рейтинг: 656.7

оффтоп -

Цитата(Gigi @ 08.10.19, 10:48) *
сам в 1С всего два годика.


это типа - знаю, что такое циклы - и для меня достаточно....

по-аналогии - первый раз увидел авто с коробкой-автоматом -- "Как на ней можно ехать - здесь сцепления нет !!!!"

Спасибо сказали: Gigi,

Gigi Подменю пользователя
сообщение 08.10.19, 12:35
Сообщение #12

Оратор
*****
Группа: Пользователи
Сообщений: 498
Спасибо сказали: 5 раз
Рейтинг: 0

Gigi @ Сегодня, 12:52 * ,
[необходимо зарегистрироваться для просмотра ссылки]
Там всего два справочника: «PrideSettings» и «Справочник1»
Один документ: «документ1», и
один регистр сведений: «IP».
«Справочник1» и «Документ1», созданы для ТЕСТОВОГО авто-заполнения от справочника к документу.
Справочник: «PrideSettings» для сохранения значений авто-заполнения любого типа. Ну, или почти любого.
А регистр сведений: «IP» для сохранения и запроса данных по IP.
Который имеет одно измерение: «IP». И ресурс с типом любая ссылка.
А остальное, думаю сами поймете.
Для теста в режиме 1С предприятие нужно пройти в список «Документ1», и открыть любой созданный документ. А после на форме нажать на кнопку с пояснением: "Назначить реквизиты авто-заполнения по указанным значениям формы". И закрыть.
После чего открыть новый объект по «Документ1» и увидеть те поля которые автоматический заполнились. Вот и все дела. Так же можно поступить и с кнопкой с пояснением: «Очистить данные авто-заполнения». И открыв новый объект понять что все поля на форме уже без значений. И что они пусты.
Проблема только в одном вопросе с общей командой? О чем выше говорил что коснусь позже. Т.е. сейчас. В том, что происходит когда на кнопку «Назначить авто-заполнение» нажимаешь не на форме уже сохраненного объекта, а на форме нового.
И поэтому поводу буду признателен, если уберете эту проблему.
Вот собственно пока все!
Гуу… опять не получилось в двух словах.
Ладно! Всем спасибо!
Но по поводу решения указанной проблемы опять буду признателен!

sava1 Подменю пользователя
сообщение 08.10.19, 12:41
Сообщение #13

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2684
Из: Проскуров
Спасибо сказали: 678 раз
Рейтинг: 656.7

Цитата(Gigi @ 08.10.19, 13:35) *
что происходит когда на кнопку «Назначить авто-заполнение» нажимаешь не на форме уже сохраненного объекта, а на форме нового.


а сами как думаете ?
если параметром команды идет ссылка на объект, а ссылка пустая ? по-идее Вы должны разрулить эту ситуевину.

Спасибо сказали: Gigi,

Gigi Подменю пользователя
сообщение 08.10.19, 13:01
Сообщение #14

Оратор
*****
Группа: Пользователи
Сообщений: 498
Спасибо сказали: 5 раз
Рейтинг: 0

Цитата(sava1 @ 08.10.19, 13:41) *
а сами как думаете ?
если параметром команды идет ссылка на объект, а ссылка пустая ? по-идее Вы должны разрулить эту ситуевину.

Ну да ... конечно ... именно поэтому в общей команде думал прописать так ..
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
Если ПараметрКоманды.Пустая() Тогда Отказ=Истина; Возврат; КонецЕсли;
МетаданныеПолноеИмя=Config_МетаДанные.ОбъектМетаданных(ПараметрКоманды,"ПолноеИмяЕд");
//Если МетаданныеПолноеИмя="" Тогда Предупреждение("Авто-заполнение назначить не возможно!");Возврат;КонецЕсли;
Форма=ПолучитьФорму(МетаданныеПолноеИмя+".ФормаОбъекта", Новый Структура("Ключ",ПараметрКоманды));
Config_PrideSettingsFill_кл.НазначитьАвтозаполнение(Форма.Объект);
КонецПроцедуры

Но все равно выходит вопрос сохранять или нет...
Короче че то голова уже запарилась .. не соображаю ...
Пожалуйста подскажите как сделать? smile.gif
Буду признателен!

Цитата(sava1 @ 08.10.19, 12:58) *
это типа - знаю, что такое циклы - и для меня достаточно....

)))) smile.gif Нет уважаемый знаю не только цилььь, smile.gif но и кое что многое другое. А иначе в 1С делать было бы нечего!
Ладно ... хорош прикалываться... лучше подскажите как устранить возникающий диалог вопроса при нажатии на кнопку в новом объекте
Буду признателен!

sava1 Подменю пользователя
сообщение 08.10.19, 13:27
Сообщение #15

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2684
Из: Проскуров
Спасибо сказали: 678 раз
Рейтинг: 656.7

Копипаст из бухии

Кнопки = Новый СписокЗначений;
        Кнопки.Вставить(0, КодВозвратаДиалога.Да, "Провести");
        Кнопки.Вставить(1, КодВозвратаДиалога.Нет, "Отмена");
        ДополнительныеПараметры = Новый Структура;
        ДополнительныеПараметры.Вставить("ПараметрыВыполненияКоманды", ПараметрыВыполненияКоманды);
        ДополнительныеПараметры.Вставить("ПараметрКоманды", ПараметрКоманды);
        
        Оповещение = Новый ОписаниеОповещения("ВопросПередПросмотромСледуетПровестиЗавершение", ЭтотОбъект, ДополнительныеПараметры);
        ПоказатьВопрос(Оповещение, НСтр("ru='Перед просмотром проводок документ следует провести';uk='Перед переглядом проводок документ слід провести'"), Кнопки,, КодВозвратаДиалога.Да);


и собственно обработка ответа

Если Ответ <> КодВозвратаДиалога.Да Тогда
        Возврат;
    КонецЕсли;
    
    ПараметрКоманды = ДополнительныеПараметры.ПараметрКоманды;
    ПараметрыВыполненияКоманды = ДополнительныеПараметры.ПараметрыВыполненияКоманды;
    
    ДокументПроведен = ПровестиДокумент(ПараметрКоманды);
    Если ДокументПроведен Тогда
        ОповеститьОбИзменении(ПараметрКоманды);
        Оповестить("ВыполненаЗаписьДокумента", Новый Структура("ДокументСсылка", ПараметрКоманды));
    Иначе
        Сообщить(НСтр("ru='Не удалось провести документ';uk='Не вдалося провести документ'"), СтатусСообщения.Важное);
        Возврат;
    КонецЕсли;


а дальше Ваши идеи

Спасибо сказали: Gigi,

Gigi Подменю пользователя
сообщение 08.10.19, 13:48
Сообщение #16

Оратор
*****
Группа: Пользователи
Сообщений: 498
Спасибо сказали: 5 раз
Рейтинг: 0

sava1 @ Сегодня, 14:27 * ,
Огромное Вам спасибо ... блин ... так задоблался с этим авто-заполнением, что уже сил не было на что то еще другое... искать самому..
Спасибо!
Правда думал одной строкой можно просто отказать выполнение, но это что то слишком много для всего лишь отказа выполнять при пустом значении ссылки на объект...
Поэтому не понимаю при чем вопросы Да/Нет. Ведь нужно что бы ничего не всплывало ... даже сам диалог не появлялся. Или вообще спрятать эти кнопки когда новый объект.

sava1 Подменю пользователя
сообщение 08.10.19, 14:02
Сообщение #17

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2684
Из: Проскуров
Спасибо сказали: 678 раз
Рейтинг: 656.7

Если не надо вопроса про запись - тупо отказ и все.

Выше вариант, когда надо спросить человека - "Объект то новый. может Вы хочите его записать ?"

Если человек жмет на кнопу - он на что-то рассчитывает. Хотябы на обратную связь.

Спасибо сказали: Gigi,

Gigi Подменю пользователя
сообщение 08.10.19, 14:11
Сообщение #18

Оратор
*****
Группа: Пользователи
Сообщений: 498
Спасибо сказали: 5 раз
Рейтинг: 0

Цитата(sava1 @ 08.10.19, 15:02) *
Если не надо вопроса про запись - тупо отказ и все.

Ну я так и сделал ... ведь вначале общей команды прописал:
Если ПараметрКоманды.Пустая() Тогда Отказ=Истина; Возврат; КонецЕсли;

Но в том и дело, что не помогает ... диалог все равно выходит.

sava1 Подменю пользователя
сообщение 08.10.19, 14:39
Сообщение #19

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2684
Из: Проскуров
Спасибо сказали: 678 раз
Рейтинг: 656.7

1. Парамет Пустая или что-то другое. Отладчик есть или скачать ?
2.код в студию

Отказ = Истина не надо - это обычная команда

Gigi Подменю пользователя
сообщение 08.10.19, 15:05
Сообщение #20

Оратор
*****
Группа: Пользователи
Сообщений: 498
Спасибо сказали: 5 раз
Рейтинг: 0

sava1 @ Сегодня, 15:39 * ,
По точке остановки
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды,Отказ)
Если ПараметрКоманды.Пустая() Тогда Отказ=Истина; Возврат; КонецЕсли; // Точка остановки

В таблице: "вычислить выражение":
в отладчике в столбце свойство: "ПараметрКоманды"
В столбце "значение": новый документ т.е. пока не сохраненный ...
Поэтому нужно наверно с условием если это новый документ тогда возврат.
Так что ли?
Короче ладно ... если че то никак ...

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


2 страниц V   1 2 >
Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 28.03.24, 23:18
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!