Автор Тема: Задача 1.30  (Прочитано 27614 раз)

0 Пользователей и 1 Гость просматривают эту тему.

kow1976

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Олег
Задача 1.30
« Ответ #45 : Ноябрь 23, 2011, 10:21:41 pm »
Такой вариант решения задачи.
 Спасибо за комментарии и замечания.
Вложения:
kow1976_.1.30.dt

Saipl

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Максим
Задача 1.30
« Ответ #46 : Декабрь 07, 2011, 01:07:14 pm »
Quote
kow1976,

    ЭлементБлокировки.УстановитьЗначение("Отдел", Справочники.Отдел.Закупка);
    ЭлементБлокировки.УстановитьЗначение("Отдел", Отдел);
 Так будет работать ? В отладчике показывает Блокировка[0].Поля[0].Значение = Закупка. Как правильно задать несколько значений точно сам не знаю может список значений создать ???


kow1976

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Олег
Задача 1.30
« Ответ #47 : Декабрь 07, 2011, 02:40:02 pm »
Saipl,
 Вы правы устанавливается Только последнее значение. Вы подняли очень интересную проблему. Наверно решается запросом.
 Или добавлением блокировки по одному и тому же регистру два раза. Нужно этот способ попробовать.

 А в рамках этой задачи правильно наверно так:

 ЭлементБлокировки.УстановитьЗначение("Отдел", ?(Перемещение,Справочники.Отдел.Закупка, Отдел);

Saipl

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Максим
Задача 1.30
« Ответ #48 : Декабрь 07, 2011, 03:55:29 pm »
Мое решение, время не удается замерить точно т.к. постоянно отвлекаюсь но решал наверно не меньше 2,5 часов.
Вложения:
Saipl_1.30.dt

SergTH000

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Сергей
Задача 1.30
« Ответ #49 : Декабрь 07, 2011, 08:24:36 pm »
Saipl, kow1976, В синтаксис помощнике сказано что для ИсточникаДанных ЭлементаБлокировки можно указать РезультатЗапроса, ТабличнуюЧасть или ТаблицуЗначений. Создать ТЗ, заполнить ее отделами и указать как источник.

kow1976

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Олег
Задача 1.30
« Ответ #50 : Декабрь 08, 2011, 10:16:30 am »
SergTH000,
 А если источника два как. Как отработает данная ситуация?

SergTH000

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Сергей
Задача 1.30
« Ответ #51 : Декабрь 09, 2011, 10:17:01 am »
kow1976, Очень просто: выгрузи первый источник в ТЗ, добавь колонку Отделы и заполни ее.. дальше - ИспользоватьИзИсточникаДанных...

Добавлено (09.12.2011, 10:17)
---------------------------------------------
Я имею ввиду, что всегда можно сформировать один источник


Saipl

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Максим
Задача 1.30
« Ответ #52 : Декабрь 14, 2011, 10:05:47 am »
Quote
SergTH000, kow1976,
Корректно ли отработает следующая конструкция ?
 
Code
    Блокировка = Новый БлокировкаДанных;
  ЭлементБлокировки = Блокировка.Добавить("РегистрНакопления.ОстаткиНоменклатуры");
  ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
  ЭлементБлокировки.ИсточникДанных = СписокНоменклатуры;
  ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Номенклатура", "Номенклатура");
  ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Подразделение", "Ссылка.Подразделение");
  Блокировка.Заблокировать();

 Не могу сообразить как в отладчике проверить !

SergTH000

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Сергей
Задача 1.30
« Ответ #53 : Декабрь 14, 2011, 10:45:11 am »
Saipl,
Quote
ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Подразделение", "Ссылка.Подразделение");

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

kow1976

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Олег
Задача 1.30
« Ответ #54 : Декабрь 14, 2011, 11:23:31 am »
ЭлементБлокировки.УстановитьЗначение("Подразделение", ?(Перемещение=истина,Справочники.Отдел.Закупка, Отдел);

Saipl

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Максим
Задача 1.30
« Ответ #55 : Декабрь 16, 2011, 03:37:08 pm »
Quote
kow1976,

 Help 1C - УстановитьЗначение(<ПолеПространстваБлокировок>, <БлокируемоеЗначение>)
 <БлокируемоеЗначение> (обязательный)
 Тип: Произвольный;

 ЭлементБлокировки.УстановитьЗначение("Подразделение", Справочники.Отдел.Закупка, Отдел);
 Как проверить какие элементы система выбрала для блокировки ? Просто хотелось бы раз и навсегда для себя определить правильное написание параметров блокировки поскольку в задачах часто возникает подобная ситуация. т.к в параметр <БлокируемоеЗначение> можно передать что угодно система это никак не контролирует.

kow1976

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Олег
Задача 1.30
« Ответ #56 : Декабрь 16, 2011, 05:16:27 pm »
Saipl,
 1. Остановить работу программы после выполнения запроса в первой транзакции ( например Функцией Предупреждения())
 2. А во второй транзакции попробовать списать по этому регистрам с заблокированных и не заблокированных складов
 Тогда можно будет сказать точно блокируется или нет. Но это только при серверной установки.

 Когда то мы осуждали чем вложенный запрос хуже чем временная таблица. Мне подсказали что при временной таблице система знает количество строк и более правильно стрит план построения запроса на SQL. При вложенном запросе количество строк вложенного запроса заранее неизвестно по этому и медленнее будет работать запрос.

alexey55

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Алексей
Задача 1.30
« Ответ #57 : Март 12, 2012, 03:47:35 pm »
Мое решение
Вложения:
alexey55-1.30.dt

sv_mikh

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Михайлов Сергей Валерианович
Задача 1.30
« Ответ #58 : Апрель 08, 2012, 11:09:39 am »
Мой вариант.
Вложения:
sv_mikh_01_30.dt

Timoha

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Artem
Задача 1.30
« Ответ #59 : Апрель 24, 2012, 06:16:20 am »
Мой вариант.
Вложения:
Timoha_1.30.dt