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

14.07.24

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

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

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Демо-база управляемые блокировки - для подготовки к экзамену Специалист 1С:
.dt 42,19Kb ver:1.0.0.1
8 4 550 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

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

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

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

 

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

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

 

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

 

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

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

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

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

Вступайте в нашу телеграмм-группу Инфостарт

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

См. также

Подготовка к аттестации Программист Стажер 1С v8.3 1C:Бухгалтерия Платные (руб)

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

5010 руб.

11.02.2014    83549    113    15    

208

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

Установим основные параметры, сделаем тексты удобочитаемыми, создадим копипастом подсистемы и группы команд, настроим консоль запросов.

07.07.2025    3472    cargobird    9    

13

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

Источники информации для подготовки к Эксперту.

18.12.2024    13910    GraVVitY    61    

70

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

Меня зовут Татьяна, в 1С-разработке я уже семь лет, а в этом году официально стала junior-специалистом. Рассказываю, как всё происходило.

10.09.2024    10604    PROSTO-1C    21    

14

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

Я Олег, разработчик 1С. Расскажу, как сдавал на сертификат Специалиста, в чём ошибся и что стоит учесть.

11.06.2024    21370    PROSTO-1C    54    

73

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

Хочу поделиться своей историей планирования обучения, подготовки к экзамену и сдачи непосредственно экзамена. Надеюсь, что это будет полезно и откинет все вопросы об экзамене.

04.06.2024    16348    anton99    50    

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

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