Имя: Пароль:
1C
 
Пометка удаления
0 Dooro
 
04.06.08
10:56
Такая задача -
1.Есть документ заказ покупателя(резервирует товар) и подчиненный док - снятие резерва.
2. В правах пользователя настройка - запрет на пометку удаления этих документов.
3. Мне нужно что бы при проведении данным пользователем документа снятие резерва обходить запрет на пометку удаления, и помечать на удаление документ основание - заказ покупателя.(все автоматичестки без участия пользователя) возможно ли такое?
Если возможно то как реализовать?
1 ТелепатБот
 
гуру
04.06.08
10:56
2 Dooro
 
04.06.08
11:13
Либо каким то образом отключить клавишу делете- в прграмме, тогда я разрешу удаление но кнопку уберу
3 akostrov
 
04.06.08
11:18
Заказ покупателя не резервирует товар, эт что за конфа такая?
Товар может резервироваться доком резервирование товаров и поступлением товаров
4 Вопрос_по_Бух
 
04.06.08
11:20
(0) а зачем тебе это надо ? всем запрети. напиши робота, которому разрешишь это делать и делай это в определенный момент.
5 Dooro
 
04.06.08
11:20
Не ну говорю у меня резервирует значит резервируте. По сути вопроса есть предложения?
6 Dooro
 
04.06.08
11:21
Вопрос_по_Бух насчет робота можно подробней?
7 Dooro
 
04.06.08
11:21
мне это нужно в момент проведения при определенных условиях
8 Вопрос_по_Бух
 
04.06.08
11:22
(3)  с чего эт не резервирует ? ставь галку резервирование и жми кнопку "Заполнить и провести" если товар есть на складе он  поставить размещение при проведении дока зарезервируется.... разве нет ?:)
9 Salvador Limones
 
04.06.08
11:23
Платформа какая?
10 Dooro
 
04.06.08
11:23
Да все резервируется. просто человек может конфу не изучил еще :)
11 Dooro
 
04.06.08
11:24
платформа 8.0 релиз 18
12 akostrov
 
04.06.08
11:25
Программно можно.  Права восстанови на пометку
Есть процедура в форме списка журнала Передустановкойпометкиудаления
Проверяй на подчиненность и если нет Отказ=истина;
13 Dooro
 
04.06.08
11:26
Тоесть восстановить права на пометку удаления в момент проведения? а потом снять опять?
14 Вопрос_по_Бух
 
04.06.08
11:27
ну счас миня панисет:)) (6) например  ... создай пользователя робот...запускайся под ним вечером  и у этого пользователя автоматом стартует просмотр документов резервирования смотри кто основание если все условия совпадают то меть на удаление нужные тебе заказы.
15 Dooro
 
04.06.08
11:28
Журнал передУстановкойПометкиУдаления? щас гляну. Я понял . ты по другому предлагаешь
16 akostrov
 
04.06.08
11:28
Нет, права должны быть по любому на пометку удаления,
просто регулировать это событие ты будешь программно процедурой Передустановкойпометкиудаления
17 akostrov
 
04.06.08
11:28
Не журнал, форма списка в доке.
18 Dooro
 
04.06.08
11:29
Вопрос_по_Бух я понял. идея хороша. Попробую такого робота создать. Можно даже мне помочь :)
19 akostrov
 
04.06.08
11:30
(14) Какого нахрен робота. Ты с какой планеты?
20 Вопрос_по_Бух
 
04.06.08
11:30
(18) сам головой пошИвели :)
21 Dooro
 
04.06.08
11:30
akostrov  и твоя мне нравится. идея. тоесть процедура перед установкопометки в форме списка есть .? посморю щас
22 Dooro
 
04.06.08
11:31
почему, робот тоже хорошо. тем более есть робот регламентных операций уже :)
23 akostrov
 
04.06.08
11:31
Не робота - а регламетное задание для этого существует.
24 Dooro
 
04.06.08
11:32
У меня он робот :)
25 Вопрос_по_Бух
 
04.06.08
11:32
(19) тот который будет выполнять регламентные задания. я с планеты theмля :)
26 Dooro
 
04.06.08
11:32
у меня тьиповая но страшно мною переделана
27 Вопрос_по_Бух
 
04.06.08
11:34
(23) увы с ними не было  времени разобраться ... обещаю  счас разберусь... моя идея не претендует  на золотую  идею  года :)
28 akostrov
 
04.06.08
11:35
У меня дома собачка-робот, поставлю ему пару регламентных заданий.
29 Вопрос_по_Бух
 
04.06.08
11:36
(23)  у меня 8.0.  подскажи как без  регламентного это сделать ?
30 Вопрос_по_Бух
 
04.06.08
11:38
+(29) или почитать
31 akostrov
 
04.06.08
11:38
(27) Там не сложно. Создаешь общий модуль. В нем пишешь обработку задания(процедуру).
Создаешь регламентной задание с ссылкой на процедуру из модуля, устанавливаешь в нем рассписание. И ждешь фоновое задание в журнале регистрации.
32 akostrov
 
04.06.08
11:42
В 8,0 нет тогда, да по заданию windows из коммандной строки с запуском 1С и проверкой в гл модуле имени пользователя для запуска процедуры.
33 Вопрос_по_Бух
 
04.06.08
11:46
(32) поэтому я и говорил (14),  а с 8.1 вроде понял  как все это делается ... счас буду практиковаться :)
34 Вопрос_по_Бух
 
04.06.08
11:48
(31) спасибо:)
35 Dooro
 
04.06.08
11:57
//////////Удаление Счета и док реализации и заказа/////////////////////////////////////////////////
   Попытка
   Если НЕ Отказ Тогда
   СчетО = УдалениеСчетНаОплату();
   Если СчетО <> Неопределено Тогда
   ФормаСчет = СчетО.ПолучитьФорму("ФормаДокумента");
   Если ФормаСчет.Открыта() Тогда
   ФормаСчет.Модифицированность=Ложь;    
   ФормаСчет.Закрыть();
   КонецЕсли;
   СсылкаОсн = ДокументОснование.Ссылка.ДокументОснование.Ссылка;
   ФормаС=СсылкаОсн.ПолучитьФорму("ФормаДокумента");
   Если ФормаС.Открыта() Тогда
   ФормаС.Модифицированность=Ложь;    
   ФормаС.Закрыть();
   КонецЕсли;    
   ОбъектР = СсылкаОсн.ПолучитьОбъект();
   ОбъектР.УстановитьПометкуУдаления(Истина);
   ОбъектСч = СчетО.ПолучитьОбъект();
   ОбъектСЧ.УстановитьПометкуУдаления(Истина);
   КонецЕсли;
   КонецЕсли;
   Исключение;
   Сообщить("Не удалось удалить Объекты");
   КонецПопытки;
///////////////////////////////////////////////////////////////////
   Попытка
   Если НЕ Отказ Тогда
   ФормаД=ДокументОснование.Ссылка.ПолучитьФорму("ФормаДокумента");
   Если  ФормаД.Открыта() Тогда
   ФормаД.Модифицированность = Ложь;
   ФормаД.Закрыть();
   ОбъектЗаказ=ДокументОснование.Ссылка.ПолучитьОбъект();
   ОбъектЗаказ.УстановитьПометкуУдаления(Истина);
   Сообщить("Заказ покупателя удален!");
   КонецЕсли;
   КонецЕсли;
   Исключение;
   Сообщить("Не удалось удалить Объекты");
   КонецПопытки;
36 Dooro
 
04.06.08
11:57
Мда .. Вот функция проверки в модуле док снятия резерва.
Функция УдалениеСчетНаОплату() Экспорт;
Попытка
СсылкаОсн = ДокументОснование.Ссылка.ДокументОснование.Ссылка;
Если
СсылкаОсн.ПометкаУдаления = ЛОЖЬ И
НЕ ССылкаОсн.Проведен И
СсылкаОсн.ХозОперация=Справочники.ХозОперации.РеализацияТоваров Тогда
Результат = Неопределено;
ТекстЗапроса =
"ВЫБРАТЬ
|ПодчиненныеДокументы.Ссылка КАК ПодчиненныйДокумент
|ИЗ
|КритерийОтбора.ПодчиненныеДокументы(&Ссылка) КАК ПодчиненныеДокументы";
Запрос=Новый Запрос;
Запрос.Текст=ТекстЗапроса;
Запрос.УстановитьПараметр("Ссылка",СсылкаОсн);
Попытка
Выборка=Запрос.Выполнить().Выбрать();
Исключение;
КонецПопытки;
Пока Выборка.Следующий() Цикл
ПодчиненныйДокумент=Выборка.ПодчиненныйДокумент;
ПХозОперация=ПодчиненныйДокумент.ХозОперация;
Если
ПХозОперация=Справочники.ХозОперации.СчетНаОплату И
ПодчиненныйДокумент.ПометкаУдаления = Ложь И
ПодчиненныйДокумент.Оплата <> "ОПЛАЧЕНО" Тогда
Результат = ПодчиненныйДокумент.Ссылка;
Сообщить("Выписанный ранее и не отмеченный как ОПЛАЧЕНО , СЧЕТ НА ОПЛАТУ,со снятием резерва,");
Сообщить("считается недействительным и помечен на удаление! ТДМ");
Сообщить("Документ реализации - ОСНОВАНИЕ для СЧЕТ НА ОПЛАТУ считается недействительным и помечен на удаление.");
КонецЕсли;
КонецЦикла;
КонецЕсли;
Исключение;
КонецПопытки;
Возврат Результат;
КонецФункции

А вот процедура при проведении

//////////Удаление Счета и док реализации и заказа/////////////////////////////////////////////////
Попытка
Если НЕ Отказ Тогда
СчетО = УдалениеСчетНаОплату();
Если СчетО <> Неопределено Тогда
ФормаСчет = СчетО.ПолучитьФорму("ФормаДокумента");
Если ФормаСчет.Открыта() Тогда
ФормаСчет.Модифицированность=Ложь;
ФормаСчет.Закрыть();
КонецЕсли;
СсылкаОсн = ДокументОснование.Ссылка.ДокументОснование.Ссылка;
ФормаС=СсылкаОсн.ПолучитьФорму("ФормаДокумента");
Если ФормаС.Открыта() Тогда
ФормаС.Модифицированность=Ложь;
ФормаС.Закрыть();
КонецЕсли;
ОбъектР = СсылкаОсн.ПолучитьОбъект();
ОбъектР.УстановитьПометкуУдаления(Истина);
ОбъектСч = СчетО.ПолучитьОбъект();
ОбъектСЧ.УстановитьПометкуУдаления(Истина);
КонецЕсли;
КонецЕсли;
Исключение;
Сообщить("Не удалось удалить Объекты");
КонецПопытки;
///////////////////////////////////////////////////////////////////
Попытка
Если НЕ Отказ Тогда
ФормаД=ДокументОснование.Ссылка.ПолучитьФорму("ФормаДокумента");
Если ФормаД.Открыта() Тогда
ФормаД.Модифицированность = Ложь;
ФормаД.Закрыть();
ОбъектЗаказ=ДокументОснование.Ссылка.ПолучитьОбъект();
ОбъектЗаказ.УстановитьПометкуУдаления(Истина);
Сообщить("Заказ покупателя удален!");
КонецЕсли;
КонецЕсли;
Исключение;
Сообщить("Не удалось удалить Объекты");
КонецПопытки;


Если можно покажите пальцем где мне написать разрешение на єти действия.

Тоесть по другому вопрос.
Если пользователю разрешено помечать в правах а мне нужно єто запретить в списке єтих документов но разрешить указанніе віше действия. покажите пожалуйста пальцем куда и что мне написать
Буду спасибо обязан
37 akostrov
 
04.06.08
12:18
типа того
"Формасписка" документ ЗаказПокупателя
Свойства табличного поля: Процедура
ПередУстановкойПометкиУдаления




Процедура СписокПередУстановкойПометкиУдаления(Элемент, Отказ)
//твой док-Элемент.ТекущаяСтрока.Ссылка который помечают на удаление
СсылкаОсн =Элемент.ТекущаяСтрока.Ссылка.ДокументОснование;
Если не СсылкаОсн=Документы.ОтменаРезервирования.ПустаяСсылка() Тогда
Отказ=Истина;

иначе
Отказ=ложь;

КонецЕСли;

КонецПроцедуры
38 Dooro
 
04.06.08
12:22
Хм и при єтом пользователь не сможет через делете помечать объекты на удаление?
При разрешенных правах на это? щас пробовать буду.
39 akostrov
 
04.06.08
12:24
Не сможет - если отказ=истина, в этом случае идет аналогичное в семерке
СтатусВозврата(0);
Возврат;
Если правильно помню.
40 Dooro
 
04.06.08
12:24
ИнтеГесно .. идея
41 Dooro
 
04.06.08
12:24
щас
42 Dooro
 
04.06.08
12:28
СсылкаОсн = Элемент.ТекущаяСтрока.Ссылка.ДокументОснование;

Ведь подчиненный удаляет документ основание а не документ основание удаляет подчиненный

СсылкаОсн = Элемент.ТекущаяСтрока.Ссылка.(подчиненный)! только запросом
43 Dooro
 
04.06.08
12:28
чет надо разобраться
44 akostrov
 
04.06.08
12:30
Ну это я так для примера, ессесно не верно, принцип понял?
Выбрать Подчиненые получилось?, у меня есть процедура для этого.
45 Dooro
 
04.06.08
12:31
а да ты прав
46 Dooro
 
04.06.08
12:33
тоесть получаем объект программно и потом при проврке наличия подчиненного проведенного разрешаем пометить на удаление если нет подчиненного то отказ . так?
47 Dooro
 
04.06.08
12:34
Тоесть проверка такая же должна быть и в модуле формы списка удаляемого объекта.
48 Dooro
 
04.06.08
12:36
Я понель :)
49 Dooro
 
04.06.08
12:36
щас .сейчас уделаю
50 akostrov
 
04.06.08
12:46
(46)Именно так
51 Dooro
 
04.06.08
12:58
Результат = Ложь;
   ТекстЗапроса =
   "ВЫБРАТЬ
   |ПодчиненныеДокументы.Ссылка КАК ПодчиненныйДокумент
   |ИЗ
   |КритерийОтбора.ПодчиненныеДокументы(&Ссылка) КАК ПодчиненныеДокументы";
   Запрос=Новый Запрос;
   Запрос.Текст=ТекстЗапроса;
   Запрос.УстановитьПараметр("Ссылка",Элемент.ТекущаяСтрока.Ссылка);
   Попытка
   Выборка=Запрос.Выполнить().Выбрать();
   Исключение
   КонецПопытки;
       Пока Выборка.Следующий() Цикл
       ПодчиненныйДокумент = Выборка.ПодчиненныйДокумент;
       ПХозОперация = ПодчиненныйДокумент.ХозОперация;
       Попытка    
       Если
       ПХозОперация = Справочники.ХозОперации.СнятиеРезерваПокупателя И
       ПодчиненныйДокумент.ПометкаУдаления = Ложь  И
       ПодчиненныйДокумент.Проведен = Истина Тогда
       Результат = Истина;
         КонецЕсли;
         Исключение
       КонецПопытки;
       КонецЦикла;    

   Отказ = НЕ Результат;
52 Dooro
 
04.06.08
12:58
работает
53 Dooro
 
04.06.08
12:58
хех
54 Dooro
 
04.06.08
13:00
на кнопку делет вообче не реагирует. надо пользователям хоть написать что мол не топчите напрасно делете. :)
55 akostrov
 
04.06.08
13:02
Отказ = НЕ Результат; :) эт чтоб тяжелей для понимая
Результат=ложь, не проще :)
56 akiDemon666
 
04.06.08
13:08
(0) Чета я не понял если надо снять резерв, то сними его доком снятие резерва или сторнируй, а если пометить документ основание на удаление то и снятие резерва(подчиненный док) надо помечать по идее...
57 Dooro
 
04.06.08
13:09
не проще . тогда нужно писать Если результат истина  тогда отказ = ложь а так как у меня все написано без если
58 akostrov
 
04.06.08
13:15
Один фиг, тогда попытку, замени  условиями, чтоб было карасиво
59 Dooro
 
04.06.08
13:15
И снятие резерва помечу на удаление после проведения
60 Dooro
 
04.06.08
13:16
akostrov  попытку я приведу в вид божеский но какие условия изменять .то проба просто главное работает
61 Dooro
 
04.06.08
13:21
так

Функция ПроверкаПодчиненногоСнятияРезерва(Отказ,СнятьРезерв) Экспорт;    
   Отказ = Истина;
   ТекстЗапроса =
   "ВЫБРАТЬ
   |ПодчиненныеДокументы.Ссылка КАК ПодчиненныйДокумент
   |ИЗ
   |КритерийОтбора.ПодчиненныеДокументы(&Ссылка) КАК ПодчиненныеДокументы";
   Запрос=Новый Запрос;
   Запрос.Текст=ТекстЗапроса;
   Запрос.УстановитьПараметр("Ссылка",СнятьРезерв);
   Попытка
   Выборка=Запрос.Выполнить().Выбрать();
   Исключение
   КонецПопытки;
       Пока Выборка.Следующий() Цикл
       ПодчиненныйДокумент = Выборка.ПодчиненныйДокумент;
       ПХозОперация = ПодчиненныйДокумент.ХозОперация;
       Если
       ПХозОперация = Справочники.ХозОперации.СнятиеРезерваПокупателя И
       ПодчиненныйДокумент.ПометкаУдаления = Ложь  И
       ПодчиненныйДокумент.Проведен = Истина Тогда
       Отказ = Ложь;
         КонецЕсли;
       КонецЦикла;    
       КонецФункции
62 Dooro
 
04.06.08
13:24
СнятьРезерв = Элемент.ТекущаяСтрока.Ссылка;
63 Dooro
 
04.06.08
13:50
Элемент.ТекущаяСтрока.Ссылка не выходит. как при проведении снятие резерва передать ссылку на него сюда в модуль документа заказ покупателя?
64 akostrov
 
04.06.08
14:33
Чего т не понял, что конкретно тебе нужно при проведении?
65 Dooro
 
04.06.08
16:26
Процедура СписокПередУстановкойПометкиУдаления(Элемент, Отказ)
дкСписокПередУстановкойПометкиУдаления(ЭтаФорма, Элемент, Отказ, глПрава);
   Попытка
   Если РольДоступна("Управляющий") Тогда
   Если
   Элемент.ТекущаяСтрока.Ссылка<>Документы.РеализацияТоваров.ПустаяСсылка()  Тогда    
   Отказ = Истина;
   Сообщить("Нет прав на удаление документа!");
   КонецЕсли;
   КонецЕсли;
   Исключение;
   КонецПопытки;
КонецПроцедуры
66 Dooro
 
04.06.08
16:26
Оказалось все проще
67 Dooro
 
04.06.08
16:27
работает при установленном праве пометки удаления
68 Dooro
 
04.06.08
16:28
тк проведение проводится при закрытой форме списка то удаление разрешает если форму открыть то выделится любой документ и ссылка пустой не будет
69 Dooro
 
04.06.08
16:29
тоесть

Процедура СписокПередУстановкойПометкиУдаления(Элемент, Отказ)
дкСписокПередУстановкойПометкиУдаления(ЭтаФорма, Элемент, Отказ, глПрава);
   Попытка
   Если РольДоступна("Управляющий") Тогда
   Если
   Элемент.ТекущаяСтрока.Ссылка<>Документы.СчетНаОплату.ПустаяСсылка()  Тогда    
   Отказ = Истина;
   Сообщить("Нет прав на удаление документа!");
   КонецЕсли;
   КонецЕсли;
   Исключение;
   КонецПопытки;
КонецПроцедуры
70 AndreYAN
 
04.06.08
16:35
(0) А если использовать процедуру установки пометки удаления из привилегированного модуля?
71 akostrov
 
04.06.08
18:45
в модуле дока

Процедура ОбработкаУдаленияПроведения(Отказ)
   

КонецПроцедуры
72 akostrov
 
04.06.08
18:47
и подробнее


ДокументОбъект.<Имя документа> (DocumentObject.<Имя документа>)
ОбработкаУдаленияПроведения (UndoPosting)
Синтаксис:
ОбработкаУдаленияПроведения(<Отказ>)
Параметры:
<Отказ>
Тип: Булево. Признак отмены проведения документа. Если в теле процедуры-обработчика установить данному параметру значение Истина, то отмена проведения документа произведена не будет.
Значение по умолчанию: Ложь
Описание:
Возникает при отмене проведения документа.