Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
30 сен 2024, 08:27

Блокировка строк

Автор Максим *****, 12 мар 2018, 10:21

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

Максим *****


Всем привет, прошу помощи у великих :)
В общем, есть табель зарплаты, когда выводится вся информация, в табеле, есть незаполеные оклады,
так вот, нужно чтобы строчки с не заполненым окладом были не активны. Чтобы их нельзя было редатировать.
Как такое провернуть?

Каримдат

Если через код то примерно так:
ТабельУчетаРабочегоВремени.Оклад.Доступность = Ложь;

Максим *****

Каримдат, Разве так он не просто запретит редактировать оклад? Ведь мне нужно чтобы заблокировалась вся строка с незаполненным окладом, а где оклад есть, то эти строки соответственно были активны

Dmitrii_r

Как вариант - надо при изменении значений в активной строке сравнивать новое значение с тем значением, которое записано в базе данных и если в базе было "пустое" значение тогда программно изменять значение в форме на значение из базы

Norfolk

Если управляемая форма, тогда через условное оформление перечисляете список колонок, которые будут недоступны, если значение оклада будет равным 0.

Максим *****

Norfolk, Форма обычная

Каримдат

А если так?
Если ТабельУчетаРабочегоВремени.Оклад = Неопределено Тогда
ТабельУчетаРабочегоВремени.ТекущиеДанные.Доступность = Ложь;
Иначе ТабельУчетаРабочегоВремени.ТекущиеДанные.Доступность = Истина;

Максим *****

Каримдат, Не вышло :(
Вот код, может так лучше будет:

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

Каримдат

Цитата: Каримдат от 12 мар 2018, 11:49
А если так?
Если ТабельУчетаРабочегоВремени.Оклад = Неопределено Тогда
ТабельУчетаРабочегоВремени.ТекущиеДанные.Доступность = Ложь;
Иначе ТабельУчетаРабочегоВремени.ТекущиеДанные.Доступность = Истина;


Это нужно в процедуру ПриОткрытии добавлять.
Запрос тут не причём. Хотя может и ошибаюсь. Пробуй.

Попробуй в процедуре ПриОткрытии добавить ТвойДокумент.Оклад.Доступность = истина или ложь

Если получиться заблокировать данные, пробуй добавить туда условие Если, выше я писал.

Похожие темы (5)

Рейтинг@Mail.ru

Поиск