|
Реализовываю блокировку, возник вопрос правильности проверки, подскажите | ☑ | ||
---|---|---|---|---|
0
razbiralshik
16.07.13
✎
16:04
|
Впервые в жизни решил реализовать блокировку, тестирую.
У конфигурации - Режим управления блокировкой данных: Автоматический и управляемый. У документа и регистра накопления - Режим управления блокировкой данных: Управляемый. 1. Пробовал так Процедура ОбработкаПроведения(Отказ, РежимПроведения) БлокировкаДанных = Новый БлокировкаДанных; ЭлементБлокировки = БлокировкаДанных.Добавить("РегистрНакопления.ОстаткиТоваров"); ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный; ЭлементБлокировки.УстановитьЗначение("Склад", Склад); ЭлементБлокировки.ИсточникДанных = Товары; ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Номенклатура", "Номенклатура"); БлокировкаДанных.Заблокировать(); Движения.ОстаткиТоваров.Записывать = Истина; Для Каждого ТекСтрокаТовары Из Товары Цикл Движение = Движения.ОстаткиТоваров.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Расход; Движение.Период = Дата; Движение.Номенклатура = ТекСтрокаТовары.Номенклатура; Движение.Склад = Склад; Движение.Количество = ТекСтрокаТовары.Количество; КонецЦикла; КонецПроцедуры 2. Пробовал так Процедура ОбработкаПроведения(Отказ, РежимПроведения) Движения.ОстаткиТоваров.Записывать = Истина; Остатки = ПолучитьОстатки(); Если НЕ Остатки.Количество() = 0 Тогда Для Каждого ТекСтрокаТовары Из Остатки Цикл Движение = Движения.ОстаткиТоваров.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Расход; Движение.Период = Дата; Движение.Номенклатура = ТекСтрокаТовары.Номенклатура; Движение.Склад = Склад; Движение.Количество = ТекСтрокаТовары.Количество; КонецЦикла; КонецЕсли; КонецПроцедуры Функция ПолучитьОстатки() Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ОстаткиТоваровОстатки.Номенклатура, | ОстаткиТоваровОстатки.Склад, | ОстаткиТоваровОстатки.КоличествоОстаток КАК Количество |ИЗ | РегистрНакопления.ОстаткиТоваров.Остатки КАК ОстаткиТоваровОстатки | |ДЛЯ ИЗМЕНЕНИЯ | РегистрНакопления.ОстаткиТоваров.Остатки"; Результат = Запрос.Выполнить().Выгрузить(); Возврат Результат; КонецФункции Тестировал двумя способами: 1. Открываю два предприятия под разными юзверями, открываю два разных документа одного типа (Реализация товаров), нажимаю провести в одном документе, пока один не проводится, второй висит, потом отвисает. Остатки после проведения верные. 2. Открываю два предприятия под разными юзверями,открываю в одном предприятии реализацию товаров, нажимаю провести, во время проведения, открываю другую реализацию в другом предприятии, но она не открывается, пишется что: не удалось заблокировать таблицу document 21. В обоих случаях так и должно происходить или у меня не пашет блокировка или в чем фишка, разъясните новичку в этом деле пожалуйста? |
|||
1
Fragster
гуру
16.07.13
✎
16:06
|
2 способ в режиме управляемых блокировок не работает
|
|||
2
Fragster
гуру
16.07.13
✎
16:07
|
а у тебя - косяк какой-то в открытии - ибо таблица документа блокируется, а не таблица регистра
|
|||
3
razbiralshik
16.07.13
✎
16:10
|
(2) тестировал двумя способами обе реализации блокировки..., т.е. и 1 и 2 способ выдает "не удалось заблокировать таблицу document 21", если открыть во время проведения...
|
|||
4
razbiralshik
16.07.13
✎
16:31
|
Никто не подскажет?
|
|||
5
Reaper_1c
16.07.13
✎
16:43
|
В студию приглашаются: значение свойства "очищать автоматически" регистра, порядок измерений в регистре и название СУБД.
|
|||
6
razbiralshik
16.07.13
✎
16:49
|
СУБД - MSSQLSERVER.
Порядок измерений в регистре - Номенклатура, Склад. А по поводу "очищать автоматически", ты имеешь ввиду это? Документ - Движения - Удаление движений - Удалять автоматически при отмене проведения. |
|||
7
razbiralshik
16.07.13
✎
17:42
|
Жаль что никто не знает...
|
|||
8
Fragster
гуру
16.07.13
✎
17:48
|
(7)->(2)
|
|||
9
razbiralshik
16.07.13
✎
17:52
|
Блокировку убрал,, даже весь код убрал, такая же фигня вылазит, видимо в платформе дело, как считаете?
|
|||
10
Fragster
гуру
16.07.13
✎
17:53
|
(9) при открытии что у тебя происходит-то?
|
|||
11
razbiralshik
16.07.13
✎
17:53
|
Ставишь точку останову в одному предприятии, в другом просто открываешь документ, пока висит в отладке и вот такая вот фигня...
|
|||
12
Fragster
гуру
16.07.13
✎
17:54
|
(11) в коде пир откртии, перед открытием, при создании на сервере у тебя что?????
|
|||
13
razbiralshik
16.07.13
✎
17:54
|
(10) ничего, кода нет никакого. может дело в этом (11) ?
|
|||
14
razbiralshik
16.07.13
✎
17:55
|
(12) да ничего нету, при проведении только пустая процедура чтобы точку останова можно было поставить
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |