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

Хранилище

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

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



> Метод Записать() и предопределенная процедура ПриЗаписи()и          
nysysimara Подменю пользователя
сообщение 29.09.11, 13:24
Сообщение #1

Оратор
Иконка группы
Группа: Местный
Сообщений: 312
Из: Бердянск
Спасибо сказали: 110 раз
Рейтинг: 0

конф БухУч для Укр. 7.70.288

Столкнулась с такой ситуёвиной:
На форме документа кнопка ОК, в ней вызов процедуры ДействиеКн()
Процедура ДействиеКн()
    Записать();           // интерактивное проведение????
    Если Вопрос("Провести "+НомерДок+" ("+ДатаДок+") ?",4,0) = 6 Тогда //кнопки Да-6, Нет-7
        Если ДатаДок < ТекущаяДата() Тогда
            Провести(0);
        ИначеЕсли ДатаДок = ТекущаяДата() Тогда
            Ч = 0;
            М = 0;
            С = 0;
            ТекущееВремя(Ч,М,С);
            Если ПолучитьПозицию() > СформироватьПозициюДокумента(ДатаДок,Ч,М,С,) Тогда
                Предупреждение("Проведите документ из ЖУРНАЛА",5);
            Иначе
                Провести(1);
            КонецЕсли;// Если ПолучитьПозицию()
        Иначе        
            Предупреждение("Документ НЕЛЬЗЯ проводить
            |будущей датой!",5);    
        КонецЕсли;// Если ДатаДок ...
    КонецЕсли;
    СтрокаДействийФормы = "Закрыть";
КонецПроцедуры //ДействиеКн


Если док не проводится, либо на вопрос "Провести?" ответ "Нет",
то не срабатывает процедура ПриЗаписи() (проверено отладчиком)

Цитирую описание метода Записать():
"Если этот метод применяется в Модуле формы документа непосредственно к документу локального контекста, то данный метод отрабатывает те же действия, как интерактивное нажатие пользователем кнопки с формулой ''#Записать''."
Почему тогда не срабатывает ПриЗаписи() ???

PS в ПриЗаписи() были действия: если док записан впервые, то автор=пользователь
На мой взгляд правильнее в процедуре ВводНового() добавить строку Автор = Пользователь; что я и сделала

Но вопрос остается: Почему не срабатывает ПриЗаписи() ???


Signature
1С Предприятие 7.7: Бух. учет для Украины (активно дописанная) + самописка (учет производства и ЗП)
1С Предприятие 8.3: Бух.предприятия 3.0 + самописка
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Кроме высшего образования, нужно иметь хотя бы среднее соображение

g789 Подменю пользователя
сообщение 29.09.11, 13:32
Сообщение #2

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

Цитата(nysysimara @ 29.09.11, 14:24) *
Записать(); // интерактивное проведение????

Мне кажется, что
Записать() - относится к документу как объекту и не требует наличия формы, а ПриЗаписи() - отрабатывает при наличии формы.
Пример:
Док = СоздатьОбъект("Документ.КакойНибудь");
Док.ВыбратьДокументы();
Пока Док.ПолучитьДокумент()=1 Цикл
  Док.Записать(); //Здесь нет формы и соответственно модуль формы не доступен
КонецЦикла;

nysysimara Подменю пользователя
сообщение 29.09.11, 14:22
Сообщение #3

Оратор
Иконка группы
Группа: Местный
Сообщений: 312
Из: Бердянск
Спасибо сказали: 110 раз
Рейтинг: 0

Экспериментирую. заменила строку
Записать();

на
СтрокаДействийФормы = "Записать";

теперь во всех перечисленных случаях срабатывает ПриЗаписи()


Signature
1С Предприятие 7.7: Бух. учет для Украины (активно дописанная) + самописка (учет производства и ЗП)
1С Предприятие 8.3: Бух.предприятия 3.0 + самописка
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Кроме высшего образования, нужно иметь хотя бы среднее соображение

igmig65 Подменю пользователя
сообщение 29.09.11, 19:00
Сообщение #4

Почти ветеран
Иконка группы
Группа: Местный
Сообщений: 613
Из: Донецкая обл
Спасибо сказали: 168 раз
Рейтинг: 140.9

Цитата
Если док не проводится, либо на вопрос "Провести?" ответ "Нет",
то не срабатывает процедура ПриЗаписи() (проверено отладчиком)

Цитата
ПриЗаписи
Предопределенная процедура при записи документа.
Синтаксис:
ПриЗаписи()
Англоязычный синоним:
OnWrite
Описание:
Вызов предопределенной процедуры ПриЗаписи производится в системе 1С:Предприятие при интерактивной записи документа. Если в данной предо­пределенной процедуре установить статус возврата — 0 (например, если данно-wy пользователю нельзя изменять реквизиты документа), запись документа не будет выполнена.
Данная предопределенная процедура может располагаться в Модулях фор­мы документов (см. «Виды программных модулей»).

Вы ж его интерактивно то незаписываете.....

nysysimara Подменю пользователя
сообщение 30.09.11, 6:47
Сообщение #5

Оратор
Иконка группы
Группа: Местный
Сообщений: 312
Из: Бердянск
Спасибо сказали: 110 раз
Рейтинг: 0

Повторюсь:
описание метода Записать():
"Если этот метод применяется в Модуле формы документа непосредственно к документу локального контекста,
то данный метод отрабатывает те же действия, как интерактивное нажатие пользователем кнопки с формулой ''#Записать''."

БРЕХНЯ

на форме документа создала две кнопки:
1 "ИнтерЗап" - в формуле "#Записать"
2 "ПроцЗап" - "ПроцЗаписать()"

Процедура ПроцЗаписать()
    Записать();
КонецПроцедуры

и добавила в процедуру ПриЗаписи() сообщение
Процедура ПриЗаписи()   
    Сообщить("сработала процедура ПриЗаписи");


создаю документ№1, жму кнопку "ИнтерЗап" => документ записан, сообщение появилось
создаю документ№2, жму кнопку "ПроцЗап" => документ записан, сообщение НЕ появилось

или я не правильно понимаю фразу "метод применяется в Модуле формы документа непосредственно к документу локального контекста"?


Signature
1С Предприятие 7.7: Бух. учет для Украины (активно дописанная) + самописка (учет производства и ЗП)
1С Предприятие 8.3: Бух.предприятия 3.0 + самописка
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Кроме высшего образования, нужно иметь хотя бы среднее соображение

igmig65 Подменю пользователя
сообщение 30.09.11, 8:01
Сообщение #6

Почти ветеран
Иконка группы
Группа: Местный
Сообщений: 613
Из: Донецкая обл
Спасибо сказали: 168 раз
Рейтинг: 140.9

Цитата
1 "ИнтерЗап" - в формуле "#Записать"

Цитата
жму кнопку "ИнтерЗап" => документ записан, сообщение появилось

интерактивное нажатие
Цитата
2 "ПроцЗап" - "ПроцЗаписать()"

Цитата
жму кнопку "ПроцЗап" => документ записан, сообщение НЕ появилось

здесь у вас стработала функция Записать() и док в процедуре ПроцЗаписать() и док записался. Но нет интерактивного нажатия.
Что тут непонятно cool.gif .

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

nysysimara Подменю пользователя
сообщение 30.09.11, 8:10
Сообщение #7

Оратор
Иконка группы
Группа: Местный
Сообщений: 312
Из: Бердянск
Спасибо сказали: 110 раз
Рейтинг: 0

Вывод такой:
под "те же действия, как интерактивное нажатие пользователем кнопки с формулой ''#Записать''"
подразумевается только запись документа


Signature
1С Предприятие 7.7: Бух. учет для Украины (активно дописанная) + самописка (учет производства и ЗП)
1С Предприятие 8.3: Бух.предприятия 3.0 + самописка
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Кроме высшего образования, нужно иметь хотя бы среднее соображение

igmig65 Подменю пользователя
сообщение 30.09.11, 8:18
Сообщение #8

Почти ветеран
Иконка группы
Группа: Местный
Сообщений: 613
Из: Донецкая обл
Спасибо сказали: 168 раз
Рейтинг: 140.9

При интерактивном нажатии кнопки с формулой '#Записать''" срабатывает функция Записать() и док записуется, но помимо этого срабатывает процедура ПриЗаписи(), в которой вы можете вернуть СтатусВозврата(0) в каком нибудь условии, и тогда док незапишется. В этом можно сказать разница. Вам дается возможность програмно вставить условия записи документа.

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

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

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

ребята, шо вы курили? Пришлите плиззз...


Signature

XBrut Подменю пользователя
сообщение 18.09.14, 7:18
Сообщение #10

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

тю. так вызовите метод "ПриЗаписи()" принудительно. я всегда так делаю, причём заметтье , с большим успехом smile.gif
или вас теоретический аспект интересует?
в 7 платформе сомнительно - кривые места не поддаются исчислению. мне кажется , их следует заботливо заклеивать скотчем (соплями) и всё будет хорошо.

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

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

А не так, как в 8 - для того, чтобы заклеить новую новую дыру, отрывают скотч со старой...

mister-x Подменю пользователя
сообщение 18.09.14, 20:30
Сообщение #12

...
Иконка группы
Модератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 3477
Из: Тернопіль
Спасибо сказали: 1417 раз
Рейтинг: 0

некропостери маст дай 32541510.gif

XBrut Подменю пользователя
сообщение 20.09.14, 7:45
Сообщение #13

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

Чо "некропостеры" ?
Цитата
Тема важная и актуальная
(ц) Виктор Медведчук

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


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

 

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