Управляемые блокировки - для подготовки к экзамену Специалист 1С

05.08.19

Разработка - Подготовка к аттестации

Демо-база по управляемым блокировкам в 1С. Очень пригодится для тех, что хочет сдать экзамен "Специалист 1С"

Скачать файлы

Наименование Файл Версия Размер
Демо-база управляемые блокировки - для подготовки к экзамену Специалист 1С:
.dt 42,19Kb
7
.dt 1.0.0.1 42,19Kb 7 Скачать

Демонстрация старого и нового подхода к управляемым блокировкам в 1С. А также исключение избыточных блокировок.

По старым стандартам 1С управляемые блокировки делались таким образом:

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

 

По новым стандартам управляемые блокировки, нужно делать так:

	Движения.ОстаткиНоменклатуры.БлокироватьДляИзменения = Истина;
	Движения.ОстаткиНоменклатуры.Очистить();
	Движения.ОстаткиНоменклатуры.Записать(); //Набор пустой, нет значений полей пространства блокировки. нечего блокировать.
	
	Для Каждого ТекСтрокаСписокНоменклатуры Из СписокНоменклатуры Цикл
		Если ТекСтрокаСписокНоменклатуры.Номенклатура.ЭтоУслуга Тогда
			Продолжить;
		КонецЕсли;
		
		Движение = Движения.ОстаткиНоменклатуры.Добавить();
		Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
		Движение.Период = Дата;
		Движение.Номенклатура = ТекСтрокаСписокНоменклатуры.Номенклатура;
		Движение.Свойство = ТекСтрокаСписокНоменклатуры.Свойство;
		Движение.Количество = ТекСтрокаСписокНоменклатуры.Количество;
	КонецЦикла;
	Движения.ОстаткиНоменклатуры.БлокироватьДляИзменения = Истина;
	Движения.ОстаткиНоменклатуры.Записать();
	ПроверитьОстатки(Отказ,Режим);

 

И есть варианты блокировок, когда новые стандарты не могут быть применены (это случаи если номенклатура может быть услугой), только благодаря этому режиму можно избежать избыточных блокировок таблицы:

 

	БлокировкаДанных = Новый БлокировкаДанных;
	ЭлементБлокировки = БлокировкаДанных.Добавить("РегистрНакопления.ОстаткиНоменклатуры");
	ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
	ЗапросИсточник = Новый Запрос;
	ЗапросИсточник.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ
	                       |	РасходнаяНакладнаяСписокНоменклатуры.Номенклатура КАК Номенклатура,
	                       |	РасходнаяНакладнаяСписокНоменклатуры.Свойство КАК Свойство
	                       |ИЗ
	                       |	Документ.РасходнаяНакладнаяСтараяМетодикаБлокировкиЗапрос.СписокНоменклатуры КАК РасходнаяНакладнаяСписокНоменклатуры
	                       |ГДЕ
	                       |	РасходнаяНакладнаяСписокНоменклатуры.Ссылка = &Ссылка
	                       |	И РасходнаяНакладнаяСписокНоменклатуры.Номенклатура.ЭтоУслуга = ЛОЖЬ";
	ЗапросИсточник.УстановитьПараметр("Ссылка", Ссылка);					  
	ИсточникНоменклатуры = ЗапросИсточник.Выполнить();
	ЭлементБлокировки.ИсточникДанных = ИсточникНоменклатуры; 
	ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Номенклатура", "Номенклатура");
	ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Свойство", "Свойство");
	БлокировкаДанных.Заблокировать();

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

Демо-база содержит заполненный справочник номенклатура, свойства. А также несколько документов (приходная накладная, расходные накладные нескольких типов). Рекомендуется запуск с помощью отладчика и сразу несколько сеансов в режиме 1С предприятия, для тестирования режима блокировки.

Тестировалось на платформе: 1С:Предприятие 8.3 (8.3.12.1595).

демонстрационная база экзамен специалист подготовка

См. также

Запросы 1С OnLine. Интерактивная обучающая программа.

Подготовка к аттестации Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Интерактивное изучение языка запросов с самого начала: - 50 практических заданий с различным уровнем сложности; - Методические материалы по практике написания запросов; - Описание назначения таблиц и индексов 1С Предприятие 8; - Методика решения реальных задач запросом 1С; - Автоматическая система проверки решений с указанием ошибок; - Инструкции по решению задач с разъяснениями; - Техническая поддержка пользователей. Подходит для начинающих и действующих разработчиков 1С

1800 руб.

11.02.2014    72153    670    12    

155

Вероятность сдачи тестирования 1С:Профессионал (расчет, прогноз и визуализация)

Подготовка к аттестации Платформа 1С v8.3 Бесплатно (free)

Расчет вероятности успешной сдачи теста 1С:Профессионал. Планирование срока подготовки к экзамену. Визуализация текущей готовности к тестированию. Сравнение текущей готовности с разными сценариями подготовки. Прогноз даты окончания подготовки с учетом реальной скорости изучения вопросов.

18.09.2023    2183    40    КДЕ    6    

11

Билеты на экзамен "Специалист платформы 8.3

Подготовка к аттестации Конфигурации 1cv8 Абонемент ($m)

Пояснения к решениям билетов на экзамен "Специалист платформы 8.3". Всего разобрано 6 билетов. Текстов самих билетов в пояснениях нет.

2 стартмани

12.09.2023    437    5    Maxiko    0    

6

Оценка шансов сдачи тестирования 1С:Профессионал с помощью теории вероятности

Подготовка к аттестации Бесплатно (free)

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

04.09.2023    670    КДЕ    0    

5

Мой опыт сдачи экзамена "Специалист по платформе 1С"

Подготовка к аттестации Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Экзамен "Специалист по платформе 1С" (рассуждения, шпоры).

1 стартмани

14.07.2023    2588    30    cska1312    18    

21

Пример решения задачи по оперативному учету для экзамена (1С: Специалист по платформе 8.3)

Подготовка к аттестации Платформа 1С v8.3 Бесплатно (free)

Готовясь к повторной сдаче экзамена 1С:Специалист по платформе, получил просьбу от коллег - расписать решение нескольких билетов, чтобы было проще понять логику и ход решения. Сделав описание одного - двух билетов, выложил всё это на github и оставил до поры до времени. Недавно наткнулся и стало жалко, если тот труд пропадёт зря, поэтому решил выложить одно решение в виде статьи и прикрепить к нему ссылку на github, вдруг ещё кому данный материал будет полезен.

01.11.2022    6050    zeltyr    1    

25
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. dminrii.butorin 05.08.19 20:27 Сейчас в теме
А в чем преимущество нового метода перед старым?
4. astracrypt 72 06.08.19 05:41 Сейчас в теме
(1) Это только в фирме 1С знают
2. avbolshakov 06.08.19 04:53 Сейчас в теме
Вы пишите, что по старым стандартам делалось вот так, а по новым - вот так. Из статьи можно сделать вывод, что старые стандарты устарели , но ведь "старым способом" только и получится сделать блокировку когда данных в документе не достаточно для записи движений. Например, когда нам нужно посчитать себестоимость списания. Так?
3. astracrypt 72 06.08.19 05:18 Сейчас в теме
(2) Если будете использовать старый метод, когда можно использовать новый, то можно получить минусовые баллы на экзамене "Специалист 1С"
EMelihoff; +1 Ответить
5. danjer74 3 06.08.19 07:19 Сейчас в теме
(3)Полностью поддерживаю. Не МОЖНО а ОДНОЗНАЧНО :)
6. Sloth 367 12.08.19 18:12 Сейчас в теме
А зачем во втором примере дважды делается?
Движения.ОстаткиНоменклатуры.БлокироватьДляИзменения = Истина;

И там же зачем Записать() после Очистить()?
EMelihoff; +1 Ответить
7. Leon75 09.12.19 00:33 Сейчас в теме
Запутать новичков. Кто ж в отладчике увидит, что свойство после записи пустого набора не изменилось.
Оставьте свое сообщение