Имя: Пароль:
1C
1С v8
Как вызвать режим Диалога на Сервере
Ø (Kassern 07.12.2022 12:02)
,
0 BenDiget
 
04.12.22
09:50
Привет!
Ребят, в модуле формы документа Перед проведением проверяю остатки, если остатков нет, хочу вызвать режим диалога, с вопросом уверен ли пользователь, что ему нужно провести. Но с серверной процедуру клиентскую вызвать не позволяет. Как быть?
7 vde69
 
04.12.22
10:10
(5) блокировка снимается автоматом при закрытии формы (правдо не совсем сразу, там может пройти пару минут)
8 Garykom
 
гуру
04.12.22
10:12
(7) Упадет, а не закроется ))
9 hockeyist
 
04.12.22
10:17
(0) Своя кнопка "провести"
10 Новый1сник2
 
04.12.22
10:32
(6) +1
11 vde69
 
04.12.22
10:49
(8) разницы нет, сборщик мусора при отсутствии дискриптора убивает все переменные и блокировки, в самом плохом варианте блокировка будет жить до перезагрузки соответствующего рхоста
12 vde69
 
04.12.22
10:50
(9) а ты покажи реализацию этой своей кнопки :) и получится (2)
13 Garykom
 
гуру
04.12.22
11:02
(12) Если честно то реализация в (2) так себе
Надо асинхронно делать и в фоновом

Т.е. запускается фоновое задание которое пытается провести, на клиенте через ОбработчикОжидания проверяет результат задания
Если все провелось то прекрасно

Если не провелось то выводим вопрос и в зависимости от ответа или останов или заново запускаем фоновое проведения уже с параметром пофиг на остатки
И ждем ответа
14 p-soft
 
04.12.22
11:28
(4) эт тема для дебила, который пересорт не может быстро устранить. базу блочить в рознице по ходовому товару атас вариант
16 Новый1сник2
 
04.12.22
12:19
(15) ТС не сказал что у него розница, да в рознице есть с этим проблемы.
17 BenDiget
 
04.12.22
12:39
(2) Большое спасибо! Самый дельный ответ в моей теме) (4) Ребят, вопрос не в методологии, почему я там с остатками хочу дать провести, кому какая разница. Я вообще это для лаконичности написал. Вопрос как реализовать технически вызов диалога вопроса с сервера. И если нет варианта вызвать с сервера, то альтернатива какая?
Если интересно, что именно я проверяю, то я дорабатываю упаковочные листы, и мне надо проверить совпадает ли количество номенклатуры в таб части с таб частью документа основания, потому что пользователь может нечаянно удалить строку, замешкаться и не заметить. Надо ему напомнить, что количество отлично, и хочет ли он провести документ в таком виде. А вы тут начали умничать
18 BenDiget
 
04.12.22
12:40
(3) Согласен полностью, уже книгу скачал по упр формам, пока нет времени прочесть
19 Garykom
 
гуру
04.12.22
12:41
(17) Идеология и методология 1С (и всех прочих клиент-серверных технологий кстати) что с сервера не надо вызывать клиента
Можно писать куда то (в хранилище по адресу) а на клиенте проверять периодически что там сервер записал
20 vde69
 
04.12.22
12:42
(14) в большой рознице вообще не нужно остатки проверять....

(13) у мня недавно в Ашан случай был:
понабрал полную тележку, все пропикали, картой оплатил, платеж прошел ....

и тут на кассе "облом", вероятно маркировка какая-то не прошла.... меня со всей тележкой завернули заново все бить и пришлось второй раз стоять и все перекладывать и второй раз платить (правда возврат по первому платежу пришел быстро).

по этому все варианты "а давайте попробуем" это так себе варианты.... лучше уж вообще не контролировать остатки чем контролировать с "отказом"
21 p-soft
 
04.12.22
13:17
(17) "умничать", да? мы тут делимся мнением, причем делаем это безвозмездно, а господин носом воротит? ну ок
23 Мимохожий Однако
 
04.12.22
21:13
(17) Хамишь, парниша
24 FirstLine Support
 
04.12.22
22:11
я бы тупо сделал галку на форме "Пофик на остатки всё равно проводи!" и не надо никаких заморочек с асинхронными вызовами фоновых заданий. Плюс такого подхода в том, что еще и останется аудиторский след
25 Asmody
 
модератор
04.12.22
22:16
(22) полегше на поворотах, полегше.
это Миста, здесь вам не тут
26 PR
 
04.12.22
22:27
(17) Это не дельный ответ, а говно
Дело в том, что, не поверишь, документ можно провести и не из формы
Поэтому единственно правильным вариантом будет тупо всегда не проводить документ, сообщая о причине
А если ты хочешь опциональное отключение проверки, то добавляешь булевский реквизит документа "НеПроверятьЧтоТоТамЧтоТыТамПроверяешь" и пользователь после того, как у него не получилось провести документ, ставит эту галочку и проводит документ с этой галочкой
27 ДедМорроз
 
04.12.22
22:29
Чтобы было понятно,давайте отвлечемся от 1с и просто посмотрим на серверный вызов.
Мы куда-то обращаемся и млжем только назад получить результат - он будет или OK или сообщение об ошибке.
Если в сообщении установлен признак,то мы выводим предупреждение или вопрос на экран,а потом делаем тот же вызов с параметром,в который мы поместили результат вопроса.
28 PR
 
04.12.22
22:30
+(26) Что в (24) и предложили
29 PR
 
04.12.22
22:31
(27) Такой вариант вообще никем не рассматривается, кроме ТС
Речь о том, насколько корректно делать проверку на клиенте перед проведением
30 vde69
 
04.12.22
22:39
(29) на самом деле это старый старый вопрос из собеседований (был актуальный еще в 7.7), суть в том, что бы не повесить на вопросе открытую транзакцию и тем самым не заблокировать все.

то есть понимать интерактивные вызовы когда уже началась транзакция категорически нельзя, и (2) это учитывает.

Ну а варианты с фоновым проведением (или частичным фоновым проведением) они имеют право на жизнь, но они довольно сложные для системы в целом (там нюансов не просто дофига а прямо дофига и еще гора сверху) и если человек никогда с этим не сталкивался лучше ему этого не советовать, пусть сначала на типовых это прощупает...
31 PR
 
04.12.22
22:46
(30) Я помню про этот "старый старый вопрос из собеседований"
Я не про фоновое проведение говорю, а про программное проведение или проведение из той же формы списка
32 PR
 
04.12.22
23:15
+(31) За заблокированные в (2) остатки до тех пор, пока какой-то имбецил не нажмет ответ, вернувшись с обеда, программисту обычно выдавали пистолет с одним патроном и оставляли его одного в комнате
33 ДедМорроз
 
05.12.22
18:23
(29) это не на клиенте.
Это алгоритм взаимодействия клиента и сервера через одну точку входа и отгбражение запросов на клиенте.
34 PR
 
05.12.22
18:27
(33) Что не на клиенте?
ПередЗаписьюНаКлиенте не на клиенте?
35 АнализДанных
 
06.12.22
10:52
(17) У тебя возникнут проблемы, если ты хочешь поменять номенклатуру\количество в уже проведенном документе. Например, ты провел документ с кол-вом 5, потом изменил количество на 1 и задаешь пользователю вопрос. В этот момент у тебя на регистре уже есть старые проводки документа, где 5 штук списано. Как вариант делать в транзакции отмену проведения, получение остатков (с учетом блокировок, как в (2)), потом отменять тразакцию и возвращать пользователю результат проверки.
36 lodger
 
06.12.22
11:13
голосую за адекватный сценарий - возвращать штатный отказ при отрицательных остатках.
если на форме после записи получен отказ, разбираем причину, и вот тут предлагаем юзеру варианты - "бросить попытки, попытаться как есть, провести без контроля остатка".
в третьем варианте пихаем в проведение флаг "игнорировать контроль остатков", записываем событие в ЖР жирным шрифтом, формируем и отправляем письмо руководителю сотрудника о подозрительном поведении и предательстве Родины.
37 Kassern
 
06.12.22
11:25
(0) Все же просто. Человек же на клиенте щелкает на кнопочку провести и наверное есть типовые процедуры/функции формы связанные с проведением. Вот там с клиента и запускайте свою серверную процедуру/функцию проверки остатков, возвращайте на клиент ответ. Если есть отрицательные остатки, то создаете вопрос, в оповещении продолжаете, либо отменяете проведение.
38 Kassern
 
06.12.22
11:26
Если же нужно делать проверку при проведении на программном уровне, без использования формы, то и вопрос нафиг не нужен тогда. Функцию проверки остатков можете сделать экспортной, или воспользоваться типовой.
39 Ryzeman
 
06.12.22
11:31
Автору уже писали что никак?

Уходите уже от семёрочной логики если хотите расти) Диалог - на клиенте, действия с базой данных - на сервере. Работа с формой желательно - на клиенте, серверный вызовы - желательно без контекста. Простые правила и будет вам счастье, сразу придёт понимание где что когда и зачем вызывать.

Без формы никакого диалога не будет. Обрабатывай соответствующее событие на форме\формах и задавай диалоги там.
40 Kassern
 
06.12.22
11:34
(39) нет у него семерочной логики (Стаж: 28 дней) Просто ТС не понимает как устроено клиент-серверное взаимодействие на платформе.
41 sitex
 
naïve
06.12.22
11:43
(37) И ? Если есть отрицательные остатки , для чего выводить Диалог ? Нужно при отриц остатках вывести ПоказатьОповещениеПользователя ссылкой на отчет (с параметрами) - чтоб искал свои косяки в остатках.
42 Kassern
 
06.12.22
11:46
(41) Это уже другой вопрос. Вы же не знаете специфику бизнес-процессов компании, мы принимаем за аксиому, что кому-то в их компании это нужно. Тут вопрос был, как с сервера задать вопрос, на что был получен развернутый ответ в (37) (39)
43 sitex
 
naïve
06.12.22
11:48
(42) Согласен .Специфично задавать вопросы при отрицательных остатках проводить или нет ))).
44 Kassern
 
06.12.22
11:50
(43) еще специфичнее, пытаться сделать это на сервере)
45 Ryzeman
 
06.12.22
11:50
(41) (43) Вообще есть ситуации когда можно и нужно разрешать отрицательные остатки. Пример - любая розница. Надо быть совсем дураком что бы допускать ситуацию "извините, мы эту хрень Вам не продадим, потому что 1с не позволяет!" :) Ну это так, в рамках оффтопа к обсуждаемой проблеме
46 sitex
 
naïve
06.12.22
13:54
(45) Да да . Ларьки . А потом ноуют у нас отрицательные , помогите спасите , обокрали
47 Ryzeman
 
06.12.22
13:58
(46) Нифига, ни разу не ларьки, как наоборот, крупняк. Лучше разобраться потом откуда взялся пересорт, чем показаться перед клиентом ничтожеством и некомпетентом отказав ему в покупке того, что у тебя фактически есть в достойном качестве.
48 PLUT
 
06.12.22
14:04
(46) наказывать за недостачи, премировать за излишки :)
49 BenDiget
 
06.12.22
17:31
Ого, сколько я всего пропустил...
Пообщаться с пользователем не так просто оказалось) ДиалогВопрос работает с ошибкой, Необходимо вызывать "Показать вопрос", а он отнюдь не простой) Но решение найдено, :

    Если ЗначениеЗаполнено(Объект._ДокументОснования) И ПараметрыЗаписи.РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда
          
        //Проверим
        ВыполнитьПроверкуТЧПоДокументуОснования(Условие!);

        Если Условие! Тогда    
            Сообщение = Новый СообщениеПользователю();
                            
                //Чтобы отказать в проведении диалогом вопросом, есть такая конструкция: Сначала спрашиваем и отказываем в проведении, а после ответа
                                пользователя, проводим документ еще раз
                Если НЕ ПараметрыЗаписи.Свойство("ОтказатьВПроведении") Тогда
                    Оповещение = Новый ОписаниеОповещения("ПередЗаписьюЗавершение", ЭтотОбъект);
                    ПоказатьВопрос(Оповещение, СтруктураОшибок.ТекстОшибки + "Провести документ?", РежимДиалогаВопрос.ДаНет, 0,
                                                         КодВозвратаДиалога.Да, "Сверка с документом основания");
                    Отказ = Истина; // завершаем работу процедуры в самом ее зачатке
                Иначе
                    Отказ = ПараметрыЗаписи.ОтказатьВПроведении;
                КонецЕсли;
                
            Иначе
                Сообщение.Текст = СтруктураОшибок.ТекстОшибки;
                Сообщение.Сообщить();
                Отказ = СтруктураОшибок.Отказ;
            КонецЕсли;
        КонецЕсли;
        
    КонецЕсли;
50 BenDiget
 
06.12.22
17:32
А вот вызванная процедура оповещения:

Процедура ПередЗаписьюЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
    
    //Оповещение = Новый ОписаниеОповещения("ПослеЗакрытияВопроса", ЭтотОбъект);
    //ПоказатьВопрос(Оповещение, СтруктураОшибок.ТекстОшибки, РежимДиалогаВопрос.ДаНет, 0, КодВозвратаДиалога.Да, "Сверка с документом основания");
      ПараметрыЗаписи = Новый Структура;
    Отказ = ?(РезультатВопроса = КодВозвратаДиалога.Нет, Истина, Ложь);
        ПараметрыЗаписи.Вставить("ОтказатьВПроведении", Отказ);
        Записать(ПараметрыЗаписи);
    
КонецПроцедуры
51 BenDiget
 
06.12.22
17:34
Таки образом, сначала мы заранее отказываем в проведении (в процедуре ПередЗаписью - на клиенте), а потом вызываем вопрос. В зависимости от ответа, заполняем значение параметра записи. И Вызываем новую Запись документа с установленным параметром. При повторной записи, снова оппадаем в процедуру ПередЗаписью - там проверяем параметр записи, и решаем отказать или продолжить
52 BenDiget
 
06.12.22
17:36
(49) Многовато я вставил, вот суть:

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

                Иначе
                    Отказ = ПараметрыЗаписи.ОтказатьВПроведении;
                КонецЕсли;
53 BenDiget
 
06.12.22
17:36
(52)
Процедура ПередЗаписьюЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
    
    //Оповещение = Новый ОписаниеОповещения("ПослеЗакрытияВопроса", ЭтотОбъект);

    //ПоказатьВопрос(Оповещение, СтруктураОшибок.ТекстОшибки, РежимДиалогаВопрос.ДаНет, 0, КодВозвратаДиалога.Да, "Сверка с документом основания");

      ПараметрыЗаписи = Новый Структура;
    Отказ = ?(РезультатВопроса = КодВозвратаДиалога.Нет, Истина, Ложь);
        ПараметрыЗаписи.Вставить("ОтказатьВПроведении", Отказ);
        Записать(ПараметрыЗаписи);
    
КонецПроцедуры
54 Kassern
 
06.12.22
17:38
(49) Зачем так сложно?
Можно же было проще:

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

Процедура ПослеЗакрытияВопроса(РезультатВопроса, ДополнительныеПараметры) Экспорт
    
    Если РезультатВопроса = КодВозвратаДиалога.Да Тогда
        ПродолжитьПроведение();
    КонецЕсли;
    
КонецПроцедуры
55 PR
 
06.12.22
19:08
Мне вот интересно, нахрена некоторые что-то спрашивают на Мисте, если потом из всех ответов выбирают самое дебильное и делают самое трешовое
56 Ryzeman
 
06.12.22
19:11
(55) Ты слишком требователен к людям. Новичок до конца не понимает как сформулировать задачу, как работает платформа и пытается сделать хоть как то как работает, а не как правильно. Мы же не можем подсказать как правильно, потому что ничерта не понятно что ему в конечном итоге надо) Пусть учится, когда нибудь поймёт и может быть даже переделает как надо. Не все начинают с франчей где есть наставники и хорошие курсы.
57 ДедМорроз
 
06.12.22
21:33
Чтобы было понятно,можно объяснить человеческим языком.
Представим,мы сидим за столом в кафе и делаем заказ официанту.
Мы что-то выбрали - официант это все записал на бумажку и отбыл на кухню (серверный вызов).
Там он пересказывает заказ поварам,и последние начинают его готовить.
Если чего-то нет,то официант возвращается за столик,чтобы мы внесли коррективы.

При этом,заранее просить официанта - узнать наличие блюд - бессмысленно,так как пока мы думаем,посетители с соседнего стола могут заказать то,что было,и его опять нет.

Кроме того, повара напрямую ничего нам сказать не могут.
Если мы хотим что-то узнать о процессе,то мы опять отправляем официанта узнать - и только когда он вернется,у нас будет информация.
58 FirstLine Support
 
06.12.22
21:51
(57) Спецолимпиада между соседним столиком и скаканием официанта туда-сюда может продолжаться бесконечно. Тогда уж нужно ставить поваров на управляемую блокировку
59 PR
 
06.12.22
21:59
(56) Да все проще на самом деле
Кто-то выбирает путь говнокодера, кто-то профессионала
И этот вектор определяет все остальное
Именно поэтому некоторые новички не выбирают говенные решения, потому что они может и не понимают клиент-серверной архитектуры и не способны написать правильный код, но они способны прислушаться и прислушиваются к советам более опытных коллег
А другим хоть на пальцах объясни, что это лютое дерьмище и почему, они один хрен будут лапками своими тараканьими махать "Сойдёёёт" и генерить лютое позорище
60 PR
 
06.12.22
22:01
+(59) Радует, что такие говноеды редко прыгают выше сотки
Не радует, что говноедов таких как говна за баней, профессионалов хрен найдешь, даже за деньги
61 Ryzeman
 
06.12.22
22:05
(59) Мне всегда казалось, что перфекционизм постепенно уходит с профессионализмом. Это не из личного опыта, я сам пока "расту" и стараюсь развиваться. Но по тем же друзьям из большого ИТ и что они рассказывают - часто кривое легаси не трогают, часто прикостыливают какую нибудь хрень лишь бы не поломать работающее, часто решают задачи за счёт производительности, но задача выполнена. Тут конечно море частных случаев и не везде так конечно...

Опять же наверняка слышал поговорку "лучшее - враг хорошего"?)

Но в таких случаях ты не учитываешь что стажеры в принципе не способны понять к кому прислушиваться и найти лучшее решение. Вон по соседней ветке с запросами, казалось бы вопрос и выеденного яйца не стоит, особенно в конкретном случае, а там дебаты на 40 сообщений)
62 FirstLine Support
 
06.12.22
22:13
— Всё настолько глупо и непрофессионально, что работать практически совершенно невозможно. Невозможно понять логику непрофессионала.
— А может, он хитрый профессионал?
— Хитрый профессионал не поехал бы в приют. (пауза) Хитрый профессионал не поехал бы в приют, чёрт побери!!!
63 PR
 
06.12.22
22:15
(61) Перфекционизм в своей крайности — это плохо
Ужасно, если программист 10 лет будет оттачивать свою первую и единственную обработку группового перепроведения документов
Но проблема в том, что говнокод — это другая крайность
Когда зачастую созданное "программистом" настолько непрофессионально, медленно, неэффективно, ненадежно, криво, убого, неправильно, что либо в лучшем случае дает мизерную эффективность, либо в худшем случае прямо сейчас требует или через непродолжительное время потребует выполнения задачи заново, чаще всего с нуля
Лебедев неплохо про это сказал https://blog.tema.ru/C0QpwyWd_32
64 Ryzeman
 
06.12.22
22:18
(63) Ну, я целиком согласен. Просто не надо ожидать, что котёнок, который делает первые шаги по советам кучи людей на форуме сделает идеальный первый прыжок)
65 FirstLine Support
 
06.12.22
22:26
(64) когда я учился в ПТУ, там был, блин, мастер. Он и стукал колотушкой по голове, чтобы все далали правильно
66 Ryzeman
 
06.12.22
22:27
(65) Во некоторых франчах сейчас так же практикуют))) Да, PR?
67 PR
 
06.12.22
22:30
(64) Я и не жду этого
Я жду, что между кучей говна и более менее приличным кодом котенок выберет второе
68 PR
 
06.12.22
22:31
(66) Не знаю, в нашем все удаленно работают
69 FirstLine Support
 
06.12.22
22:35
(67) не выберет. У него нет интуиции. А интуиция - производная опыта
70 PR
 
06.12.22
22:37
(69) Стремление к говнокоду или профессионализму — это врожденное
А что говнокод, а что хорошее решение, рассказали в ветке
71 ptiz
 
06.12.22
23:04
Тут предлагают галочку на форме - тоже тот ещё костыль. Юзеру начхать на причину вопроса, он будет всегда эту галочку ставить и не будет разбираться в сути проблемы. У юзера не должно быть выбора, т к. любой выбор он всегда сделает в сторону "продать как-нибудь и наплевать на 1с", и будет по-своему прав. Нужно нормально бизнес-процесс выстроить, без вопросов в стиле: "А вы точно хотите продать или получить проблемы с покупателем?".
72 FirstLine Support
 
06.12.22
23:06
(71) не будет юзер всегда галочку ставить. Ему лень будет её ставить, если документ и без неё провелся
73 PR
 
06.12.22
23:07
(71) Согласен
Просто не проводить документ
Хочешь провести без контроля — к админу или главбуху
74 PR
 
06.12.22
23:08
(72) Особенно, если за эту галочку потом будут иметь в мозг или в кошелек
75 Ryzeman
 
06.12.22
23:10
(71) Меня ещё с первой работы на семёрке "забавляли" диалоги с пользователями) Там директор на них настаивал. Буквально менеджер продаёт товар и ему вопросов и предупреждений 5: не забудьте распечатать чек! Поставить автоматические скидки? Предложить сопутствующие товары? и всё в таком духе))) Представляю как манагеры страдали)
А я ещё эту хрень автоматизировал на семёрке для "быстрых продаж". Везде как дурак программно код ответа подставлял по условию)
76 BenDiget
 
07.12.22
10:55
(54) Ну вот, тыж не подсказал вовремя! )) Спасибо. Записал себе
77 BenDiget
 
07.12.22
11:01
(55) А что вы посоветовали, товарищ? Где конкретный код? Или только языком лабать?
78 BenDiget
 
07.12.22
11:07
(25) Интересно, что ты удалил мое сообщение, но посмотри сколько говна из людей льется, ты это оставил. 90% этих выебо*щиков пыжатся и показывают свою крутизну друг другу. Особенно этот: (60) PR. А по делу ответили лишь единицы.
79 PR
 
07.12.22
11:10
(77) Я предложил в (26), но по ходу ты даже поиском пользоваться не умеешь, так что не в коня корм
80 Kassern
 
07.12.22
11:17
(76) Как раз вовремя и подсказал в (37). В (54) я на примере это показал
81 PR
 
07.12.22
11:21
(80) За (54) в приличном обществе могут и морду набить и с волчьим билетом уволить
Я за похожее видел увольнение в 30 секунд
82 Kassern
 
07.12.22
11:24
(81) Вы в курсе за контекст задачи, за бизнес процессы компании, проводили аудит может там? Если нет, то с чего вы решили, что ваш субъективный опыт натягивается на текущую задачу? Я ответил на вопрос автора по поводу реализации ПоказатьВопрос, как его использовать. А уж использовать этот подход, или какой-то другой, пускай решает сам автор в разрезе текущих бизнес-процессов.
Предложите свой вариант реализации ПоказатьВопрос.
83 Kassern
 
07.12.22
11:27
У себя в конторе и на своих проектах я бы такое реализовывать не стал, все должно быть автоматизировано без 100500 вопросов. Если товара нет, то нужно его отправить на обеспечение, отдел закупки уже работает по этому списку и т.д. Если это розница, то кассир в любом случае должен пробить товар, без 100500 вопросов.
Что там у ТС я хз, заранее написал как лучше сделать и описал как работает ПоказатьВопрос.
84 Ryzeman
 
07.12.22
11:36
(81) Обосновывать свою позицию, конечно же, не обязательно)

Я, например, вообще яростный противник диалогов, если если это не вопрос жизни и смерти. Потому что пользователи один хрен их не читают, а сталкиваясь пару раз нажимают на автомате даже не задумываясь.
Но если в рамках ТЗ в рамках бизнес-процесса в конторе ТС это нормально - то почему бы и нет?.. Сомневаюсь, что ТС может и должен решать что не надо так делать.

Напомнило как я показал на одном собеседовании свою обработку, которая с одного ресурса бесплатно тащит порции по 100 запросов в день нужных данных как образец кода. На что мне заявили что это говнокод, потому что кто делает такую муда**ую архитектуру - ограничивать по 100 запросов, что за бред. Сцуко, это задача такая. Ну надо конторе получать эти данные и не хочет она платить. Оценивай реализацию задачи, а не постановку её) В этом плане я целиком на стороне Kassern :)
85 FirstLine Support
 
07.12.22
11:43
На мой взгляд в этом и есть коренное отличие одинэсника от фигня-кодера, что однинэсник может и должен влиять не только на реализацию, но и на постановку
86 Kassern
 
07.12.22
11:44
(85) А так же иметь в голове несколько вариантов реализации задачи и предложить самый подходящий.
87 PR
 
07.12.22
11:45
(82) Еще раз, есть две непреложные истины, независящие от бизнес-процессов компании

В транзакции любые вопросы пользователю неприемлемы

Проводить документ можно не только из формы документа, поэтому всякие вопросы пользователю при проведении из формы документа имеет смысл делать только в том случае, когда люди это понимают и согласны с тем, что это будет работать только в форме документа
88 PR
 
07.12.22
11:46
(84) Обоснование уже было раньше, в (87) еще раз, для тех, кому сложно прочитать ветку с самого начала
89 BenDiget
 
07.12.22
11:46
Круто, мой ник подсвечен золотым теперь!
(83) Все верно написал, мой вопрос был не методологическим, а технический

(79) Пишешь, что поиском пользоваться не умею, но я прочел твое решение, оно не подходит, потому что в теме - я описал про остатки лаконично. На самом деле я сверял количество по ТМЦ в документе Упаковочный лист, с количеством документа основания. Причем "ПоказатьВопрос" вызывается, только в том случае, если в Упаковочном листе Количества меньше, чем в документе Основания.

Согласись, в этом случае можно и провести док, предварительно предупредив пользователя об этом. Но весь этот багаж, я не хотел вешать на плечи форумчан, потому что меня интересовало совсем другое: "Как вызвать диалог с пользователем"

а про остатки написал для лаконичности, чтобы не расписывать все свои условия по документу
90 PR
 
07.12.22
11:47
(85) Несомненно
91 Kassern
 
07.12.22
11:47
(87) "имеет смысл делать только в том случае, когда люди это понимают и согласны с тем, что это будет работать только в форме документа" - так я об этом и писал в начале. При программном проведении нет никакого смысла в вопросах.
92 PR
 
07.12.22
11:49
(89) Не соглашусь
Потому что еще раз, провести документ можно не только из формы документа
Я бы так делать никогда не стал по куче причин
93 Ryzeman
 
07.12.22
11:49
(85) 1сник - это что-то типа человек-айтишник? И комп собрать и винду поставить и домен поднять и скриптик написать и сайд забацать и самописку с функционалом ERP запилить?) Да не, можно, только зачем я всё это буду делать за 100-200, когда могу пойти в Java и делать только что то одно за 300? И, я хоть всё равно стараюсь развиваться, потому что не хочу быть линейным кодером всю жизнь, но требовать таких вещей от начинающих программистов, которые на форуме спрашивают технические вопросы - неправильно.
94 PR
 
07.12.22
11:50
(91) Так я и говорю, что в данном случае на мой взгляд не та ситуация
И если уж это и проверять, то точно не в транзакции
95 PR
 
07.12.22
11:51
(93) Он имел в виду разработчик и эникейщик
Что ты придираешься, как-будто не понял?
96 Kassern
 
07.12.22
11:51
(94) Вот тут есть красивая табличка с началом транзакции https://infostart.ru/1c/articles/1175475/
Можно прикрутить это дело до начала транзакции со стороны формы, если ответ не положительный на вопрос, то даже и не начинать транзакцию
97 BenDiget
 
07.12.22
11:52
(92) Если проводить документ не Интерактивно, то тогда надо писать ту процедуру, так, чтобы косяков не вышло. Кто вообще напишет код, который заполнит документ остатками свыше, чем есть. А если уж документ пока используется лишь в интерактивном режиме - то работа с формой хороший вариант
98 PR
 
07.12.22
11:53
(96) Конечно можно, поэтому и странно, что ты этого не предложил сразу, а предложил говнорешение
99 Kassern
 
07.12.22
11:54
(98) Так я и не уточнял, до в или перед транзакцией это запускать, еще раз подчеркну, я лишь написал, как технически реализуется ПоказатьВопрос
100 Kassern
 
07.12.22
11:55
И явно указал, что это тема для формы и никак не связано с событиями МО при проведении
101 Ryzeman
 
07.12.22
11:57
(95) Да я то как раз понял что вы оба в абстрактном 1снике видите эдакого архитектора, главбуха и сеньора в одном лице. И это меня удивляет, учитывая что PR связан с франчем, а FirstLineSupport как бы ник намекает что он работает в не в ларьке, и что там есть линии поддержки, то есть опять же разделение труда. Зачем тогда нужны консультанты, архитекторы, ведущие программисты, если каждый линейный кодер и стажер обязаны знать все механизмы, все стандарты разработок, всю методологию и бизнес-процессы?

Посмотри на тон, в котором ты пишешь в (81). Да я понимаю, что с юмором, но со стороны похоже на хамство) Да и вообще Татьяныч-стайл "то говно, это говно". Ну так ругай компанию 1с тогда, что останавливаться - это ведь они в принципе добавили возможность вести диалог с пользователем)))
102 Kassern
 
07.12.22
11:57
(98) А вот ТС реализовал, как раз так как вы пишите, сначала отменяет транзакцию, задает вопрос, а потом заново записывает документ, что имхо криво.
103 BenDiget
 
07.12.22
12:02
Вот это расшевелила моя тема форумчан - 100 ответов. И лишь два по делу (54) (2), не считая моей реализации (52)!  
Ладно, все тут поняли кто есть кто. Давайте закончим, решение есть)
104 Kassern
 
07.12.22
12:02
Согласен
105 PR
 
07.12.22
12:06
(101) Просто не перевариваю, когда говнокод подается с уверением, что это прекрасное решение
106 PR
 
07.12.22
12:07
(102) Где, блеать, я так пишу?