Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1] 2  Все   Вниз
  Печать  
Автор Тема: Новый документ в УПП "План производства работ": Права, Табличные части и пр.  (Прочитано 34757 раз)
0 Пользователей и 4 Гостей смотрят эту тему.
Marsel333
Интересующийся

ru
Offline Offline

« : 14-01-2012 08:36 » 

Есть один документ - рис.1. Возможно ли в этом документе сделать так, чтобы одна группа пользователей смогла вводить и редактировать данные например 1-5 колонки, но не имела доступ к последующим. А вторая группа пользователей смогла вводить данные в последующие колонки, но не имела доступ к предыдущим.

Возможно ли это сделать? если да, то как?
Заранее спасибо.

* рис1.jpg (107.65 Кб - загружено 1077 раз.)
« Последнее редактирование: 06-02-2012 09:48 от Kivals » Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 14-01-2012 13:48 » 

В 8.1 - не знаю, в 8.2 - можно, но как это будет выглядеть в неуправляемых формах (а именно этот режим на картинке) - тоже не знаю.

* sc-20120114154732.png (18.23 Кб - загружено 2221 раз.)
Записан
Marsel333
Интересующийся

ru
Offline Offline

« Ответ #2 : 15-01-2012 12:38 » 

Благодарю. Нашел способ через функцию РольДоступна ("")
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 15-01-2012 13:00 » 

Marsel333, функции - обходятся созданим другой формы и программным доступом. Использовать встроенную системы прав - наиболее правильный способ. Другие варианты нужно искать только когда нельзя решить стандартными методами
Записан
Marsel333
Интересующийся

ru
Offline Offline

« Ответ #4 : 20-01-2012 11:39 » 

Вопрос по этому же документу. Вопрос наверное легкий так что извеняйте). По этому рисунку видно (рис.1). Мучаюсь, ни как не могу добиться автозаполнение колонок Инвертарный и Заводской.
Дана колонка МаркаМашины - это ОС. На основе этой колонки хочу чтобы автоматически вбивался инвертарные и заводские номера. Создал процедурку:
Код:
Процедура МаркаМашиныПриИзменении ()
   Для Каждого СтрокаТабличнойЧасти Из ЭлементыФормы.ТаблицаРаспределенияКонтрагентов Цикл
       СтрокаТабличнойЧасти.Колонки.Инвертарный.УстановитьТекст(СтрокаТабличнойЧасти.ДанныеСтроки.МаркаМашины.Код);
   КонецЦикла;
КонецПроцедуры
Инвертарный и Заводской колонки без привязки данных - вроде как и должно быть.
Выдается ошибка: {Документ.ПланПроизводстваРабот.Форма.ФормаДокумента.Форма(83)}: Итератор для значения не определен
   Для Каждого СтрокаТабличнойЧасти Из ЭлементыФормы.ТаблицаРаспределенияКонтрагентов Цикл

Что нужно туда вбить? Или проблема еще в чем то?
Дополнительно рис.2

* Рис2.jpg (239.83 Кб - загружено 1080 раз.)
« Последнее редактирование: 20-01-2012 11:42 от Marsel333 » Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 20-01-2012 16:47 » 

В цикле - просто ТаблицаРаспределенияКонтрагентов (без ЭлементыФормы.)
Записан
Marsel333
Интересующийся

ru
Offline Offline

« Ответ #6 : 31-01-2012 17:44 » 

Вопрос по этому же документу. Рис.1.
Разобрался с автозаполнением, а вот как можно обратное действие сделать? Например при нажатии определенной кнопки создавался новый документ(например ЗаявкаНаКомплектацию), а  данные контрагент, маркамашины итд...автоматически заполнялись в этом новом документе. Может есть у кого нить похожий пример.
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #7 : 31-01-2012 18:58 » 

"автоматически заполнялись" - на основании каких данных? Констант, настроек пользователя, другого объекта (документ, элемент справочика)?
Записан
Marsel333
Интересующийся

ru
Offline Offline

« Ответ #8 : 01-02-2012 07:06 » 

На основании текущего документа. Т.е. на рис.1 Данные контрагента, маркамашины....  копировались в новыйдокумент (ЗаявкаНаКомплектацию) и в принципе все.
.....Хотя нее. В одном моем документе могут быть несколько ЗаявокНаКомплектацию. Например первые 3 строки (у них один ПорядковыйНомерМашины) это одна заявка. След. несколько строк (у них др. один ПорядковыйНомерМашины) - вторая заявка.
« Последнее редактирование: 01-02-2012 07:24 от Marsel333 » Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #9 : 01-02-2012 09:47 » 

Мы говорим о 8.1 (или режиме совместимости с 8.1)?
Ибо в 8.2 это сделано уже подругому...
Записан
Marsel333
Интересующийся

ru
Offline Offline

« Ответ #10 : 01-02-2012 10:21 » 

8.2 УПП
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #11 : 01-02-2012 10:36 » 

В 8.2 в модуле объекта, который создается, есть предопределенная процедура ОбработкаЗаполнения(). Вот в ней можно проанализировать тип параметра, который передатся, и написать заполнение по его свойствам... Вот пример:
Код: (1C v8)
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
       
        Если ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.ПоступлениеТоваровУслуг") Тогда
               
                ЗаполнитьПоПоступлениюТоваровУслуг(
                        ДанныеЗаполнения,
                        ДанныеЗаполнения
                );
               
        ИначеЕсли ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.ЗаказПоставщику") Тогда
               
                ЗаполнитьПоЗаказуПоставщику(
                        ДанныеЗаполнения,
                        ДанныеЗаполнения
                );
               
        ИначеЕсли ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.ПорчаТоваров") Тогда
               
                ЗаполнитьПоПорчеТоваров(
                        ДанныеЗаполнения,
                        ДанныеЗаполнения
                );
               
        КонецЕсли;
       
        ИнициализироватьДокумент();
       
КонецПроцедуры // ОбработкаЗаполнения()
Записан
Marsel333
Интересующийся

ru
Offline Offline

« Ответ #12 : 06-02-2012 05:07 » 

Снова привет. Не хочется каждый раз обращаться к Вам, но сам видимо не справлюсь.
У меня вопрос. Вот автозаполнение колонок.
Код: (1C v8)
Процедура НомерЗаявкиПриИзменении(Элемент)
        СтрокаТабличнойЧасти = ЭлементыФормы.ТаблицаПроизводстваРабот.ТекущиеДанные;
Если  СтрокаТабличнойЧасти <> Неопределено Тогда
              СтрокаТабличнойЧасти.ДатаСоставленияЗаявки = СтрокаТабличнойЧасти.НомерЗаявки.Дата;
        СтрокаТабличнойЧасти.Контрагент = СтрокаТабличнойЧасти.НомерЗаявки.Контрагент;
        //СтрокаТабличнойЧасти.Номенклатура = СтрокаТабличнойЧасти.НомерЗаявки.Номенклатура;
КонецЕсли;
КонецПроцедуры
Все работает правильно, но Дата, Контрагент находятся в реквизитах, а номенклатура в табличной части. Поэтому и не могу вытащить данные из номенклатуры. Что можно сделать? Я так думаю номенклатуры может быть много, поэтому надо делать через Цикл.
Вот что я смог написать:
Код: (1C v8)
Для каждого Стр Из СтрокаТабличнойЧасти.НомерЗаявки.Номенклатура Цикл
 СтрТЗ=СтрокаТабличнойЧасти.Номенклатура.Добавить();
 СтрТЗ.Номенклатура=Стр.Номенклатура;  
 КонецЦикла;
Но это наверное совсем коряво)) Номенклатуры не видет.
« Последнее редактирование: 06-02-2012 05:29 от Marsel333 » Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #13 : 06-02-2012 06:44 » 

Что это значит?
Код: (1C v8)
СтрокаТабличнойЧасти.Номенклатура.Добавить();
У тебя что - реквизит табличной части имеет тип какой-либо коллекции (массив, список значений, таблица знчений, ...)? ИМХО это невозможно.
(можно конечно сделать через ХранилищеЗначений, но тогда методы работы будут другими и отображаться напрямую в форме не будет)

Обычно в этом случае делают вторую табличную часть и связывает ее с первой по ключевому (уникальному!) реквизиту. Если такого нет (уникальность по нескольким реквизитам, например Номенклатура и Характеритика) то такой реквизит специально вводится в табличные части. В типовыхон часто так и называется: КлючСвязиХХХХХ.
В твоем случае можно в качестве ключевого реквизита выбрать НомерЗаявки

P.S. Пиши код аккуратнее (соблюдай отступы) - и самому потом легче будет разбраться. Если к этому привыкнуть сразу - то будет отнимать совсем немного времени, но выигрыш в чтении кода будет в разы.
Записан
Marsel333
Интересующийся

ru
Offline Offline

« Ответ #14 : 06-02-2012 09:17 » 

Что то я не совсем понял, что мне нужно сделать? и самое главное как это сделать? даже не представляю....
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #15 : 06-02-2012 09:52 » 

1. Создать в своем документе еще одну табличную часть, например ТаблицаПроизводстваРаботНоменклатура (реквизиты: НомерЗаявки и Номенклатура)
2. Заполнять табличную часть ТаблицаПроизводстваРаботНоменклатура при изменении НомерЗаявки в ТЧ ТаблицаПроизводстваРабот
3. Если хочешь, чтобы было красиво - настроить установку отбора в ТЧ ТаблицаПроизводстваРаботНоменклатура  при активации строки в ТЧ ТаблицаПроизводстваРабот
Записан
Marsel333
Интересующийся

ru
Offline Offline

« Ответ #16 : 06-02-2012 15:51 » 

Что то я не вижу смысла. Мне кажется я не правильно озвучил свою ошибку. Выложу скрин. ППР. На рис. видно, что при изменении НомераЗаявки без проблем меняются: Заказчик, обслужив. техника, инвенр., заводской - эти данные находятся в реквизитах документа ЗаявкиНаКомплектацию. А вот номенклатуру не могу заполнить, т.к. номенклатура находится в табличной части этого документа ЗаявкаНаКомплектацию. Номенклатуры может быть несколько, соответственно строк будет несколько, но последующие строки будут заполнены только по Номенклатуре.
Возможно ли это сделать в 8ке ? или без дополнительный таблицы не обойтись?

* ППР.jpg (82.37 Кб - загружено 1079 раз.)
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #17 : 06-02-2012 16:17 » 

...Возможно ли это сделать в 8ке ? или без дополнительный таблицы не обойтись?
Можно, только тут уже я не вижу смысла в такой постановке задачи. Точнее такая постановка нарушает идеи нормализации построения БД, а значит для меня нелогична. Поэтому код писать не буду - не интересно (сразу приходит в голову множество вариантов, которые придется отработать: если заказ поменялся, если уже были строки с таким заказом, ...).
Просто добавляй новые строки в табличную часть - и заполняй их по текущей строке (например с помощью ЗаполнитьЗначенияСвойств())
Записан
Marsel333
Интересующийся

ru
Offline Offline

« Ответ #18 : 06-02-2012 17:37 » new

Интересно. Почитал. Почему изначально я сделал в такой форме и вообще смысл этого документа. Задача была отобразить всю последовательность работы ППР. Причем важно последовательность колонок, например первые 5 колонок заполняте один отдел, след. колонки др. отдел и т.д.  Поэтому собственно так и сделал все в одну таблицу, для упрощения, но сейчас понял что так нельзя.
Какие ваши предложения, вариант?
Ваш вариант я понял так! Создать 2ю таблицу Номенклатуры, которая будет заполняться от НомераЗаявки и при нажатии на 1ю строку ППР будет отображаться в таблице Номенклатуры соответствующие данные, при нажатии 2ю строку будет отображаться др. номенклатура.
Или не так?
« Последнее редактирование: 06-02-2012 18:19 от Marsel333 » Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #19 : 06-02-2012 18:28 » 

Да, все правильно понял.
Но все равно нужно отслеживать события в первой таблице: изменение заказа (проверять дубли заказов, заменять строки во второй таблице) и удаление строки (удалять строки по удаленному заказу).
Точно так же, как ты и планировал в одной таблице - так же можно и в двух показывать только те поля, которые нужны (разрешены). Но важное отличие: если кому-то правами запрещено видеть колонки с номенклатурой (и зависимые от них) - то у него возникнет резонный вопрос: "почему в таблице несколько одинаковых строк и почему я должен заполнять в них одинаковые данные?". В моем варианте достаточно просто скрыть таблицу номенклатуры.

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

ru
Offline Offline

« Ответ #20 : 07-02-2012 05:40 » 

Номенклатуру будут видеть все. С этим проблем не будт.
а вот что значит:
Цитата
Точно так же, как ты и планировал в одной таблице - так же можно и в двух показывать

Вы имеете ввиду на одной странице создать 2 (а мне придется похоже создать 4) таблицы?
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #21 : 07-02-2012 09:36 » 

Вы имеете ввиду на одной странице создать 2 (а мне придется похоже создать 4) таблицы?
Не понял - поясни. Зачем было 2 таблицы? Почему нельзя было просто скрывать колонки?
Записан
Marsel333
Интересующийся

ru
Offline Offline

« Ответ #22 : 07-02-2012 10:50 » 

Я запутался. Мы ведь вроде решили что лучше создать 2 таблицы с точки зрения идеи нормализации, а номенклатуру должны почти все видеть.
Меня сейчас беспокоть одно, который день мучаюсь, ни как не получается заполнить номенклатуру по НомеруЗаявки. Остальные колонки заполняюются легко, т.к. они из НомераЗаявки (Документ ЗаявкаНаКомплектацию) заполняются из реквизитов. А номенклатура в документе ЗаявкаНаКомплектацию находится в таб. части. Как ее от туда достать, помогите пожалуйста?
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #23 : 07-02-2012 12:02 » 

Достать ее оттуда просто - ты сам написал код: "Для каждого Стр Из СтрокаТабличнойЧасти.НомерЗаявки.Номенклатура Цикл". Вопрос возник куда ее поместить.

Я не понял вот этого:
Вы имеете ввиду на одной странице создать 2 (а мне придется похоже создать 4) таблицы?
Откуда взялось 4 таблицы? Значит когда мы говорили об одной таблице - у тебя их было 2 (почему?), а когда о 2х - стало 4 (опять же - почему). Что это за таблицы, о которых ты умалчиваешь?
Записан
Marsel333
Интересующийся

ru
Offline Offline

« Ответ #24 : 07-02-2012 16:25 » 

Прошу прощения, про 4 таблицы забудем, это я напутал. Будет 2 таблицы: ТаблицаПроизводстваРабот и Номенклатура.
« Последнее редактирование: 07-02-2012 17:02 от Marsel333 » Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #25 : 07-02-2012 17:57 » 

Вы имеете ввиду на одной странице создать 2 [...] таблицы?

Да, а что в этом особенного?
Записан
Marsel333
Интересующийся

ru
Offline Offline

« Ответ #26 : 07-02-2012 19:13 » 

Наверное ничего такого, просто для меня все новое, огромное количетсво вопросов.
Код: (1C v8)
Для каждого Стр Из СтрокаТабличнойЧасти.НомерЗаявки.Номенклатура Цикл
 СтрТЗ=СтрокаТабличнойЧасти.Номенклатура.Добавить();
 СтрТЗ.Номенклатура=Стр.Номенклатура;  
 КонецЦикла;

Так что мне написать во 2й строке? не подскажешь.
Выдается ошибка Метод объекта не обнаружен (Добавить).

* код.jpg (263.88 Кб - загружено 1009 раз.)
« Последнее редактирование: 07-02-2012 19:14 от Marsel333 » Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #27 : 07-02-2012 22:11 » 

Во второй строке должно быть обращение ко второй табличной части, а не к реквизиту первой - естественно у реквизита нет метода Добавить()
Записан
Marsel333
Интересующийся

ru
Offline Offline

« Ответ #28 : 27-02-2012 10:20 » 

Всем привет.
 Не могу разобраться c отбором по текущей колонке. Вроде все просто, но...может я что то не то делаю.
 Даны 2 Табл. части: ЗаявкаНаКомплектацию и ТаблицаПроизводстваРабот. При изменении колонки НомерЗаявки в ТЧ ЗаявкаНаКомплектацию происходит автозаполнение ТЧ ТаблицаПроизводстваРабот. Вот на основе этой колонки НомерЗаявки мне необходимо сделать отбор в ТаблицеПроизводствеРабот. Ни как не могу понять как ее связать? Нужно как-то заполнить колонку НомерЗаявки в ТЧ ТаблицеПроизводстваРабот?
Код: (1C v8)
Процедура ЗаявкаНаКомплектациюПриАктивизацииСтроки(Элемент)
    ЭлементыФормы.ТаблицаПроизводстваРабот.ОтборСтрок.НомерЗаявки.Установить(Истина);
    ЭлементыФормы.ТаблицаПроизводстваРабот.ОтборСтрок.НомерЗаявки.Установить(ЗаявкаНаКомплектацию);
//ЭлементыФормы.ТаблицаПроизводстваРабот2.ОтборСтрок.НомерЗаявки.Значение =;
КонецПроцедуры

* ППР.JPG (193.03 Кб - загружено 1041 раз.)
« Последнее редактирование: 27-02-2012 10:22 от Marsel333 » Записан
Dest
Опытный

ru
Offline Offline

« Ответ #29 : 27-02-2012 10:50 » 

Как это делается в 8.2 понятия не имею, попробуй так
Код:
Отбор = ЭлементыФормы.ТаблицаПроизводстваРабот.ОтборСтрок.НомерЗаявки;
Отбор.Значение =ЗаявкаНаКомплектацию;
Отбор.Использование = Истина;
Отбор.ВидСравнения  = ВидСравнения.Равно;
Записан
Страниц: [1] 2  Все   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines