Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » 1C Программирование и поддержка

Модерирует : ShIvADeSt

ShIvADeSt (03-04-2009 02:03): Продолжение тут
http://forum.ru-board.com/topic.cgi?forum=33&topic=10256#1
 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100

   

ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Тема для программирования !!!
Это продолжение темы, предыдущие части доступны тут


ПРОГРАММЫ  1С:Предприятие 1C - 1C: Вопросы по конфигурациям

ВАРЕЗНИК   1C:Предприятие 7.7 - 1С:Предприятие v.8.x - 1C Диск ИТС - 1С: Совместимо 8.х

Топик 1C Ebooks
ЗДЕСЬ (обновлено 27.03.2009) - небольшая библиотечка (книги, документация, видео, утилиты) по 1С, финансам, бухучету и т.п.
Все рассортировано по версиям...

Для заблудившихся в трех соснах >>> FAQ по форуму RU.Board

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 02:30 06-02-2008 | Исправлено: vkramnik, 21:26 27-03-2009
An4eus



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
asaerun
выкладывай код, а то так не скажешь!
 
Добавлено:
asaerun
выкладывай код, а то так не скажешь!

Всего записей: 3768 | Зарегистр. 23-07-2007 | Отправлено: 12:07 14-11-2008
asaerun

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Сам разобрался. Идиотская блин по своей тупости ошибка - использовать внутренние переменные вложенных циклов сразу во внешнем и внутреннем цикле. Просидел до 6 утра, но разобрался

Всего записей: 7 | Зарегистр. 19-11-2007 | Отправлено: 22:36 14-11-2008
Sendman

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите, пожалуйста как организовать уничтожение всех пустых строк в многострочной части документа. Т.е. если есть строка со значением, то ее не трогать, если строка пустая, то ее грохнуть.

Всего записей: 55 | Зарегистр. 10-04-2006 | Отправлено: 04:44 17-11-2008
undb

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sendman
 
Примерно так:
ВыбратьСтроки();
Пока ПолучитьСтроку() = 1 Цикл  
    Если ПустоеЗначение(Наименование_реквизита_табличной_части)=1 Тогда  
            УдалитьСтроку();
    КонецЕсли;
    
КонецЦикла;

Всего записей: 50 | Зарегистр. 04-06-2007 | Отправлено: 07:17 17-11-2008
BAG211270

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
[q][/q]
 
Undb немного поправлю.. иначе если за удаленной сторкой будет снова пустая то она будет пропущена..
 
ВыбратьСтроки();  
Пока ПолучитьСтроку() = 1 Цикл    
    НомСтр = НомерСтроки;    
    Если ПустоеЗначение(Наименование_реквизита_табличной_части)=1 Тогда  
            УдалитьСтроку();  
            ПолучитьСтрокуПоНомеру(?(НомСтр=1,НомСтр,НомСтр-1)) ;
    КонецЕсли;  
     
КонецЦикла;

Всего записей: 177 | Зарегистр. 12-02-2007 | Отправлено: 08:44 17-11-2008
Sendman

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
undb
BAG211270
 
Уважаемые, полностью с Вами согласен, но я пробовал такие конструкции, почему-то остается одна строка
 
т.е. у меня в документе многострочная часть, если она пустая, выдается печатная форма доумента с 5 пустыми строками для заполненеия документа в ручную (т.е. бланк), а если присутствуют строки, то они заносятся в документ... так вот если я использую приведенные Вами конструкции, то строки удаляются, но остается одна строка если повторить эту процедуру, то она удаляется, тоесть нужно делать выше описанные процедуры 2 раза... Почему так? Как победить?
 
Добавлено:
И еще вопрос...  
В документе нужно проставить его автора создал элемент "Текст" - дал ему идентификатор "Автор", написал следующий когд:
Спр=СоздатьОбъект("Справочник.Пользователи");
        Спр.НайтиПоКоду(ИмяПользователя());
        Если Спр.НайтиПоКоду(ИмяПользователя())=1 Тогда
            Автор=Спр.ТекущийЭлемент();
        Иначе
            Автор="Пользователь не известен";
        КонецЕсли;
А тексту ни чего не передается, пробовал поставить в коде вместо "Автор" - "Форма.Автор" , но тогда выдается ошибка, Попытка присвоить значение недоступной для записи переменной (Автор). Для проверки себя пробовал Сообщить Автора, сообщает нормально, т.е. выходит, что автора то он находит, вот только как его присвоить полю "текст"?

Всего записей: 55 | Зарегистр. 10-04-2006 | Отправлено: 11:02 17-11-2008 | Исправлено: Sendman, 11:32 17-11-2008
tdr1225



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sendman

Цитата:
как его присвоить полю "текст"?

Если "Автор" - идентификатор, используй Форма.Автор.Заголовок("это_автор");
Или же идентификатор убери и поставь "автор" в формулу

Всего записей: 282 | Зарегистр. 07-12-2005 | Отправлено: 12:05 17-11-2008
An4eus



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Sendman
попробуй так:

Код:
 
КоличествоСтрокУДокумента = КоличествоСтрок();
Если КоличествоСтрокУДокумента>0 Тогда
   Для н = -КоличествоСтрокУДокумента по -1 Цикл
      ПолучитьСтрокуПоНомеру(-н);
      Если ПустоеЗначение(Наименование_реквизита_табличной_части)=1 Тогда
         УдалитьСтроку();
      КонецЕсли;
   КонецЦикла;
КонецЕсли;
 


Цитата:
В документе нужно проставить его автора создал элемент "Текст" - дал ему идентификатор "Автор"...

1. В документе должен быть ревкизит Автор типа Справочник.Пользователи
2. В форме помести текстовое поле (без идентификатора), на загрудке Дополнительно в формуле напиши Автор
3. Наслаждайся!

----------
Век живи - век учись!

Всего записей: 3768 | Зарегистр. 23-07-2007 | Отправлено: 12:06 17-11-2008 | Исправлено: An4eus, 13:12 17-11-2008
Sendman

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
An4eus
 
По Автору, огромное спасибо! Все заработало!
А по строкам в таблице
Выдает ошибку:
УдалитьСтроку(<<?>>н);  
Слишком много фактических параметров

Всего записей: 55 | Зарегистр. 10-04-2006 | Отправлено: 12:14 17-11-2008
Alex_vk_47

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sendman
 
поставь просто без параметров
УдалитьСтроку();
 
 
 
УдалитьСтроку();
Синтаксис:
УдалитьСтроку()
Назначение:
Удалить текущую строку документа.

Всего записей: 75 | Зарегистр. 21-08-2007 | Отправлено: 12:26 17-11-2008
An4eus



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Sendman
см. мой предыдущий пост, поторопился: 3 ошибки нашёл. Сейчас должно работать!
 
Alex_vk_47
да, поторопился!
Как говорится: поспешишь - людей насмешишь!

----------
Век живи - век учись!

Всего записей: 3768 | Зарегистр. 23-07-2007 | Отправлено: 13:15 17-11-2008 | Исправлено: An4eus, 13:18 17-11-2008
An4eus



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
SLAY_69

Цитата:
Подскажите, как ограничить права, что бы не печатались документы, которые не проведены???  
 В правах полазил, что то не нашел!!!!

 
1. Устанавливаем типовую комплесную или ТиС
2. Заходим туда в конфигуратор. Находим в дереве метаданных справочники ПолномочияПользователей, Пользователи. Переносим их в свою конфигурацию. Для это выделяем справочник мышкой, далее Действие -> Копировать. В своей конфигурации открываем тоже дерево конфигурации. Далее Действие -> Вставить
3. Правим глобальный модуль

Код:
 
//обяъвление переменных
//добавим +
Перем глПользователь Экспорт;
//добаим -
 
//идут описания функций и процедур, ищем следующую
Процедура ПриНачалеРаботыСистемы()
   //добаим +    
   // Авторизация пользователя.
    
   Если ПустоеЗначение(ИмяПользователя()) = 1 Тогда
      Код          = "НеАвторизован";
      Наименование = "Не авторизован";
   ИначеЕсли ПустоеЗначение(ПолноеИмяПользователя()) = 1 Тогда
      Код          = ИмяПользователя();
      Наименование = ИмяПользователя();
   Иначе
      Код          = ИмяПользователя();
      Наименование = ПолноеИмяПользователя();
   КонецЕсли;
    
   Объект = СоздатьОбъект("Справочник.Пользователи");
    
   Если Объект.НайтиПоКоду(Код) = 0  Тогда
      Объект.Новый();
      Объект.Код          = Код;
      Объект.Наименование = Наименование;
      Объект.Записать();
    
      Сообщить("Создан элемент справочника ""Пользователи"": """+Объект.ТекущийЭлемент()+""".", ".");
 
      НовыйПользователь = 1;
   Иначе
      НовыйПользователь = 0;
   КонецЕсли;
    
   глПользователь = Объект.ТекущийЭлемент();
 
//добаим -  
//теперь ищем конец процеудры
КонецПроцедуры // ПриНачалеРаботыСистемы()
//добави ещё функцию
//добавим +
Функция глПолучитьПолномочие(ИмяПолномочия)  Экспорт
 
   Полномочие = глПользователь.Полномочия;
   Если ПустоеЗначение(Полномочие) = 1 Тогда
      Возврат 0;
   Иначе
      Возврат Полномочие.ПолучитьАтрибут(ИмяПолномочия);
        
    КонецЕсли;
                                      
КонецФункции // глПолучитьПолномочие()
 
//добавии -  
 

 
4. теперь в свой конфигурации едём по документам, вернее по формам
Если в диалоге находим кнопку Печать или что-то похожее, нажимаем правой кнопкой, заходим на зкаладку Дополнительно и смотри какая там прцедура стоит. Далее переходим на закладку модуль, ищем эту процедуры (как правило это будет или
Процедура ПоКнопкеПечать (<...>) или Процедура Печать (<...>)) и правим:

Код:
 
Процедура ПоКнопкеПечать(СразуНаПринтер = 0,КолЭкз = 1)
//добавим +
   Если (Проведен()=0)
   Или ((Проведен()=1) И (Модифицированность()=1)) Тогда
      Если глПолучитьПолномочие("РазрешитьПечатьНепроведенныхДокументов") = 0 Тогда
         Предупреждение("Недостаточно полномочий для печати непроведенного документа!", 60);
         Возврат;
      КонецЕсли;
   КонецЕсли;
//добавим -
 

 
5. Сохранянем всё, заходим в режим предприятия. Нужно открыть справочник Полномочия пользователей. (Операция -> Справочники и найти нужный) Далее ввести два элемента, у обного из которых будет стоять галка "Разрешить печать непроведенных документов", у другого нет... После того, когда все пользовтаели зайдут в базу нужно будет определить полномочие какждому пользователю: Операции -> Справочник -> Пользователь (и для определенного пользователя выстаить полномочие [которо было раньше проставлено])
 
Добавлено:
P.s. с тебя бутылка!

----------
Век живи - век учись!

Всего записей: 3768 | Зарегистр. 23-07-2007 | Отправлено: 20:57 17-11-2008
Sendman

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
An4eus
Спасибо большое! Все заработало!
 
Добавлено:
Еще один вопрос...
А как в журнале документов при его открытии установить интервал исходя из того какой сейчас месяц - установить интервал от начала этого месяца до его конца..?
 
Вопрос снят, уже сделал

Всего записей: 55 | Зарегистр. 10-04-2006 | Отправлено: 08:20 18-11-2008 | Исправлено: Sendman, 10:41 18-11-2008
SLAY_69



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
An4eus
   
     Огромнейшая благодарность за то что взялись мне помочь.
 
 

Цитата:
После того, когда все пользовтаели зайдут в базу нужно будет определить полномочие какждому пользователю: Операции -> Справочник -> Пользователь (и для определенного пользователя выстаить полномочие [которо было раньше проставлено])

 
 Все сделал как написано, но на последнем пункте, когда хочу выставить полномочия, вылезает ошибка :
 
 "Форма.Закладки.ДобавитьЗначение("Основные");
{Справочник.Пользователи.Форма.Модуль(162)}: Значение не представляет агрегатный объект (ДобавитьЗначение)"
 ????
   
 И еще один вопросик
 
Цитата:
4. теперь в свой конфигурации едём по документам, вернее по формам  
Если в диалоге находим кнопку Печать или что-то похожее, нажимаем правой кнопкой, заходим на зкаладку Дополнительно и смотри какая там прцедура стоит. Далее переходим на закладку модуль, ищем эту процедуры (как правило это будет или  
Процедура ПоКнопкеПечать (<...>) или Процедура Печать (<...>)) и правим:

   
 В обыхных доках проставил, а вот которые писали нам программеры, есль нажать на модуль то там всеволишь: " #Encoded#eDocument_Number49923#"  ????
 
 
Добавлено:
P.S. Будите в наших краях (Молодечно,РБ), с меня будет 2 бутылки

Всего записей: 148 | Зарегистр. 02-03-2005 | Отправлено: 16:15 18-11-2008
Akam1



Комса
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
SLAY_69
Цитата:
которые писали нам программеры, есль нажать на модуль то там всеволишь: " #Encoded#eDocument_Number49923#"
У-у.. сдается мне, придется опять к этим Вам программерам обращаться...

----------
В правильно поставленном вопросе всегда содержится 50% ответа
Все будет так, как должно быть. Даже если будет иначе.

Всего записей: 26400 | Зарегистр. 20-04-2006 | Отправлено: 16:22 18-11-2008
tdr1225



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SLAY_69
Интересно, а в Отладчике документ откроется ?

Всего записей: 282 | Зарегистр. 07-12-2005 | Отправлено: 18:04 18-11-2008
SLAY_69



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
tdr1225
 

Цитата:
Интересно, а в Отладчике документ откроется ?

 
нет, открывается тоже самое  
 

Всего записей: 148 | Зарегистр. 02-03-2005 | Отправлено: 18:26 18-11-2008
An4eus



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
SLAY_69
1.
Цитата:
"Форма.Закладки.ДобавитьЗначение("Основные");  
{Справочник.Пользователи.Форма.Модуль(162)}: Значение не представляет агрегатный объект (ДобавитьЗначение)"  
 ????

в модуле формы спраовочника Пользователи нужно заменить строку
Код:
//Форма.ИспользоватьЗакладки(1);
на строку
Код:
Форма.ИспользоватьЗакладки(1);
т.е. убрать комментарий!
2.
Цитата:
В обыхных доках проставил, а вот которые писали нам программеры, есль нажать на модуль то там всеволишь: " #Encoded#eDocument_Number49923#"  ????
а это закодированные модули!

----------
Век живи - век учись!

Всего записей: 3768 | Зарегистр. 23-07-2007 | Отправлено: 18:56 18-11-2008
klimanoff



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите пожалуйста в чем может быть проблема хочу чтобы при печати было 2 экз на страницу, документ маленький, на страницу штуки 3 должно влезть .... не хочет делать 2 экземпляра. В чем косяк?
код след
Процедура Печать()
    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("Печать");
    Таб.ВывестиСекцию("Шапка");
    Таб.Опции(0,0,0,0);
    ВыбратьСтроки();
    Пока ПолучитьСтроку() = 1 Цикл
        Таб.ВывестиСекцию("Строка");
    КонецЦикла;
    Таб.ВывестиСекцию("Подвал");
Таб.ТолькоПросмотр(1);;
Таб.ЭкземпляровНаСтранице(2);
Таб.Показать();  
    Таб.Показать("Печать Акт приемки-передачи","");
КонецПроцедуры

Всего записей: 80 | Зарегистр. 07-04-2008 | Отправлено: 21:01 18-11-2008
An4eus



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
klimanoff
1. зачем два раза показать?
2. что показывает прдеватиьельный просмотр?
3. скинь скрин табличного документа из конфигуратора!

----------
Век живи - век учись!

Всего записей: 3768 | Зарегистр. 23-07-2007 | Отправлено: 23:04 18-11-2008
   

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » 1C Программирование и поддержка
ShIvADeSt (03-04-2009 02:03): Продолжение тут
http://forum.ru-board.com/topic.cgi?forum=33&topic=10256#1


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2025

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru