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

14.07.24

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

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

Скачать файл

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

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

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

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

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

 

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

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

 

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

 

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

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

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

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

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

См. также

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

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

1800 руб.

11.02.2014    78418    100    15    

194

Подготовка к аттестации Программист Запросы 1C:Бухгалтерия Платные (руб)

Желаете повысить свой уровень разработки? Не знаете, как оптимизировать работу тяжелых запросов 1С? Или знаете методы оптимизации, но на практике не получаете результат? Тогда эта интерактивная обучающая программа для Вас! Оптимизация запросов прямо в программе 1С:Предприятие 8. Несколько десятков практических заданий, рассматривающих методы оптимизации на практике. От Вас требуются реальные решения - оптимизация представленных запросов. Автоматизированная система оценит Ваш запрос и представит результат проверки.

1800 руб.

06.07.2015    72694    121    9    

134

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

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

18.12.2024    10106    GraVVitY    61    

63

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

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

10.09.2024    8140    PROSTO-1C    21    

13

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

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

11.06.2024    16105    PROSTO-1C    51    

66

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

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

04.06.2024    10622    anton99    50    

58

Подготовка к аттестации Стажер 1C:Бухгалтерия Фармацевтика, аптеки Россия Управленческий учет Бесплатно (free)

Краткий рассказ о выборе 1С как основного языка программирования для дипломной работы в университете, и само приложение к диплому.

28.05.2024    4863    DmitryOneBit    20    

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

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