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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
FOLD

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
valerka78
Ты тоже извини, если резок был  

Всего записей: 1238 | Зарегистр. 26-01-2004 | Отправлено: 18:36 31-03-2008
Lihonosov

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ну Вы уш извините если кого вопросами достал

Всего записей: 537 | Зарегистр. 05-07-2007 | Отправлено: 13:08 01-04-2008
St01en

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Запарился уже... Есть документ с табличной частью. Там реквизит Сертификат, типа Строка и с формулой ВыборСертификата().
Вот сама процедура
 
Процедура ВыборСертификата()  
    ИмяФайла="";
    Путь=ФС.ТекКаталог();
    Если  
    ФС.ВыбратьФайл(0,ИмяФайла, Путь, "Укажите файл, содержащий сертификат")=1 Тогда
        Сертификат=ИмяФайла;
    Иначе
        Предупреждение("Не выбран сертификат");
        СтатусВозврата(0);
    КонецЕсли;
КонецПроцедуры
 
Фигня в том, что когда щелкаешь мышью на этом реквизите - ничо не происходит. Но потом, когда закрываешь документ - выскакивает окно выбора файла. Или окно вызывается только по Ентеру. Чо тут надо поправить?

Всего записей: 292 | Зарегистр. 10-04-2006 | Отправлено: 14:35 01-04-2008
valerka78



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

Всего записей: 248 | Зарегистр. 16-01-2006 | Отправлено: 16:23 01-04-2008
FOLD

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Lihonosov
Да извинятс не зачто.. тут дело добровольное, хочешь помогаешь /отвечаешь ,хочешь нет.
St01en
Воткни этот код в предопреденную процедуру приначалередактированиястроки()
 
А с "сертификата" убери вообще .
 
 
ЗЫ. СтатусВозврата вообщето для предопределенных процедур, ту это так ,к слову
 
St01en
Хтоя наверно для новой строки наверно не будет работать. Поэкспериментируй с другими предопределенными предурами формы документа типа  
приначалередактированияновойстроки() и др посмотри в СП

Всего записей: 1238 | Зарегистр. 26-01-2004 | Отправлено: 17:34 01-04-2008 | Исправлено: FOLD, 17:47 01-04-2008
St01en

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

Всего записей: 292 | Зарегистр. 10-04-2006 | Отправлено: 18:25 01-04-2008
valerka78



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

Цитата:
Пробовал всеми предопределенными - не получается.

 
не совсем так.
 
Процедура ПриРедактированииНовойСтроки()
    ИмяФайла="";  
    Путь=ФС.ТекКаталог();  
    Если  
    ФС.ВыбратьФайл(0,ИмяФайла, Путь, "Укажите файл, содержащий сертификат")=1 Тогда  
        Сертификат=ИмяФайла;  
    Иначе  
        Предупреждение("Не выбран сертификат");  
        СтатусВозврата(0);  
    КонецЕсли;  
КонецПроцедуры
 
рабочий код, только что проверил, просто фишка в том, что первым выбирается реквизит ТЧ - "Сертификат". Не совсем то, конечно, но может пригодится?
 
 
 

Всего записей: 248 | Зарегистр. 16-01-2006 | Отправлено: 20:10 01-04-2008
St01en

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
valerka78
No, не пригодиться. Заполняются еще реквизиты, раньше. И при щелчке на любом из них - открывается окно выбора файла. И только один раз...А если юзер введет неправильно?  
 
Я ж говорю - предопределенные процедуры перепробовал. Такой, чтоб работала как нужно-не нашел. А самописная почему-то не работает по щелчку...

Всего записей: 292 | Зарегистр. 10-04-2006 | Отправлено: 21:27 01-04-2008
ToppeaDop

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
St01en
Нет ли в языке функций для работы с табличной частью?
 
"При начале редактирования строки", в которой нужно будет узнать, ЧТО редактируется.
 
у меня на этом компе нет рабочей 1С, чтобы глянуть, но что-то подобное я решал. Правда, не файлы выбирал, а какую-то другую интерактивность делал..

Всего записей: 466 | Зарегистр. 24-08-2003 | Отправлено: 01:33 02-04-2008
FOLD

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

Цитата:
потом закрываешь документ - выскакивет окно выбора файла

Так у тебя после экспериментов код наверно остался, например в призакрытии()
или еще где... поищи,
 
Посмотрел как в типовой торговле с выбором партии сделано.
 
Реквизит сертификат убираешь из ТЧ, те какреквизит  он остается конечно , убираешь только колонку.
Вместо нее вставляешь в ТЧ элемент диалога "Текст" .Получаешь колонку ТЧ.
Присваиваешь ей идентификатор, например "ТекстСетрификата".
Саму колонку желательно разместить послк колнок реквитов ТЧ,чтобы обход закнчивался
 
В  процедуре ПриНачалеРедактированияСтроки

Код:
 
  Если Форма.ТекущаяКолонка() = "ТекстСетрификата" Тогда
 // здесь ты можещь добавть др условия
 // например  и (Номенклатура.Выбран()=1)  
 
    ИмяФайла="";  
    Путь=ФС.ТекКаталог();  
    Если    
    ФС.ВыбратьФайл(0,ИмяФайла, Путь, "Укажите файл, содержащий сертификат")=1 Тогда  
        Сертификат=ИмяФайла;
     Иначе  
        Предупреждение("Не выбран сертификат");    
    КонецЕсли;  
 
   КонецЕсли;  

 
В формуле колонки "ТекстСетрификата" функция ПредставлениеСертификата()
 

Код:
 Функция ПредставлениеСертификата()
    
    Если ПустоеЗначение(Сертификат) = 1 Тогда
        Возврат "невыбран";
    Иначе      
        Возврат ""+Сертификат;
    КонецЕсли;
    
КонецФункции  

СтатусВозврата убрал, какую задачу он здесь выполняет? Если ты хочешь проверку на заполнение реквизитов ТЧ сделать, то это не поможет.Пройдут вообще мимо этой колоки  не щелкая..  
 
Сделай такую проверку , например ,в предопределенной модуля документа ОбработкаПроведения
 
 
Код:
 
     ВыбратьСтроки();
    Пока получитьстроку()=1 Цикл
        Если  СокрЛП(Сертификат) ="" Тогда  
            Предупреждение("Ругаешься",5);
            СтатусВозврата(0);
            
        КонецЕсли;
        
    КонецЦикла;
 

 
Ну и при такой проверке может обйдутся без щелчка мыши? , тогда оставь как есть, стаусвозврата убери и кнопку выбора на колонке
 
 
 
Добавлено:
Жотя полседнее не надо делать, инче будет возможность редактирования строки, напишут чего зря

Всего записей: 1238 | Зарегистр. 26-01-2004 | Отправлено: 09:43 02-04-2008 | Исправлено: FOLD, 09:50 02-04-2008
St01en

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
FOLD
Да, в принципе, можно кнопку поставить, так даже проще будет. Но меня интересует - почему в ТЧ не работает щелчок мыши? Как-то можно это програмно обойти?

Всего записей: 292 | Зарегистр. 10-04-2006 | Отправлено: 10:59 02-04-2008
FOLD

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

Цитата:
Но меня интересует - почему в ТЧ не работает щелчок мыши?  

Почему не работает то?.. работает для реквизитов со типомзначения "Справочник" ,"документ", у которых в колонке стоит флаг автовыбор.А простые типы данных "число", "строка" - в режиме редактирования, или/и по кнопке.
Почему? Ну дык это к разрботчикам платформы ,те к  родной  1С ...
А как обойти я написал, алгоритм содрал у 1С-овцев, им же видней...

Всего записей: 1238 | Зарегистр. 26-01-2004 | Отправлено: 11:26 02-04-2008
tdr1225



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

Цитата:
надо сохранить в формате csv

CSV - это текстовый файл, в 1С - СоздатьОбъект("Текст")
Только аккуратно разберись с разделителем, где-то запятая, где-то точка с запятой.

Всего записей: 281 | Зарегистр. 07-12-2005 | Отправлено: 11:57 02-04-2008
Lihonosov

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

Код:
...
Для Ном = 2 по ФайлНакладных.КоличествоСтрок() Цикл
Стр = ФайлНакладных.ПолучитьСтроку(Ном);
текСтрокиТекста = СтрЗаменить(Стр, "    " , РазделительСтрок);  //в кавычках табулятор
ПеремАртикул=СтрПолучитьСтроку(текСтрокиТекста,1);
ПеремНаименование=СтрПолучитьСтроку(текСтрокиТекста,2);
 
//Создание объекта типа Запрос
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =  
"//{{ЗАПРОС(Ведомость)
|Период с (ТекущаяДата()) по (ТекущаяДата());
|ТекущийЭлемент = Справочник.ТМЦ.ТекущийЭлемент;
|Наименование = Справочник.ТМЦ.Наименование;
|Артикул = Справочник.ТМЦ.Артикул;
|Группировка ТекущийЭлемент Без Групп упорядочить по ТекущийЭлемент.Артикул;
|Условие(СокрЛП(Артикул)=СокрЛП(ПеремАртикул));
|"//}}ЗАПРОС
;
// Если ошибка в запросе, то выход из процедуры
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
      Возврат;
КонецЕсли;
 
Пока Запрос.Группировка(1) = 1 Цикл            
    Если (СокрЛП(ПеремАртикул)=СокрЛП(Запрос.Артикул)) И (СокрЛП(ПеремНаименование)=СокрЛП(Запрос.Наименование)) Тогда
        Если Остаток.СКД(СчетПоКоду("201"),3,,СпрМестоХранения.ТекущийЭлемент(),Запрос.ТекущийЭлемент,)=Число(ПеремКво) Тогда
       КвоВ1С=Остаток.СКД(СчетПоКоду("201"),3,,СпрМестоХранения.ТекущийЭлемент(),Запрос.ТекущийЭлемент,);
           Разница=0;
           Таб.ВывестиСекцию("Строка");
           НомСтр=НомСтр+1;
        ИначеЕсли Остаток.СКД(СчетПоКоду("201"),3,,СпрМестоХранения.ТекущийЭлемент(),Запрос.ТекущийЭлемент,)<>Число(ПеремКво) Тогда
           КвоВ1С=Остаток.СКД(СчетПоКоду("201"),3,,СпрМестоХранения.ТекущийЭлемент(),Запрос.ТекущийЭлемент,);
           Разница=КвоВ1С-ПеремКво;
           Таб.ВывестиСекцию("Строка");                            
           НомСтр=НомСтр+1;
        КонецЕсли;                
     ИначеЕсли (СокрЛП(ПеремАртикул)=СокрЛП(Запрос.Артикул)) И (СокрЛП(ПеремНаименование)<>СокрЛП(Запрос.Наименование)) Тогда
          ТабБезНаим.ВывестиСекцию("СтрокаБезНаим");
          НомСтрБезНаим=НомСтрБезНаим+1;
     КонецЕсли;                    
КонецЦикла;
 
Таб.ТолькоПросмотр(1);
Таб.Показать("Сличительная ведомость по запросу","");

Обработка примерно 8.000 записей данным запросом занимает около 4 минут
Что можно поправить, чтобы обработать побыстрее???

Всего записей: 537 | Зарегистр. 05-07-2007 | Отправлено: 12:01 02-04-2008
FOLD

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Lihonosov
Первое что бросается а глаза

Цитата:
Пока Запрос.Группировка(1) = 1 Цикл              
    Если (СокрЛП(ПеремАртикул)=СокрЛП(Запрос.Артикул))

Это условие лишнее,ты же запросом отобрал только те злементы ,у которых  
артикул = ПеремАртикул.. А теперь еще в цикле проверяешь.
Сразу проверяй "наименование" . Незначительно, но все же сократит время обработки
 
Ивот это просто не нужно, удали.. ты ж только к справочнику обращаешся

Цитата:
 
|Период с (ТекущаяДата()) по (ТекущаяДата());  

 
Правда на скорость это не влияет
 
Нверное в запрос  можно было бы включить получения остатка,и возможно еще что-то но я не рублю в счетах
 
 
Добавлено:
Кстати ещ упорядочивание в запросе через точку, тоженерекомендуется

Цитата:
ТекущийЭлемент.Артикул

у тебя же есть артикул, да вообще упорядочивание тебе здесь не нужно.
Но это все мизер

Всего записей: 1238 | Зарегистр. 26-01-2004 | Отправлено: 12:53 02-04-2008
Lihonosov

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

Цитата:
Это условие лишнее,ты же запросом отобрал только те злементы ,у которых  
артикул = ПеремАртикул.. А теперь еще в цикле проверяешь.
Сразу проверяй "наименование" . Незначительно, но все же сократит время обработки  

Логично! Спасибо! Учел.

Цитата:
Нверное в запрос  можно было бы включить получения остатка,и возможно еще что-то но я не рублю в счетах  

Я как раз и получаю остаток и сравниваю его с количеством из файла.

Всего записей: 537 | Зарегистр. 05-07-2007 | Отправлено: 12:59 02-04-2008
FOLD

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

Цитата:
Я как раз и получаю остаток и сравниваю его с количеством из файла

Я имел ввиду что . В текст запроса включить получение остатков для всех элементов , а потом уже, обходя результат запроса, сравнивать полученный результат с твоим значением.Так быстрее получается , чем получения остатка для каждого элемента в отдельно в цикле. С регистрами такое возможно, .. а 8 так ваще ,как двапальцаобасфальт

Всего записей: 1238 | Зарегистр. 26-01-2004 | Отправлено: 13:19 02-04-2008
Diadema



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

Всего записей: 185 | Зарегистр. 17-01-2006 | Отправлено: 16:08 02-04-2008
FOLD

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

Цитата:
как выполнить  
Не поверишь выполнть()
Выполнить (Execute)
Синтаксис:
Выполнить(<Строка>)
Параметры:
<Строка>
Строка, содержащая текст исполняемого кода.
Описание:
Позволяет выполнить фрагмент кода, который передается ему в качестве строкового значения.
 

Всего записей: 1238 | Зарегистр. 26-01-2004 | Отправлено: 16:43 02-04-2008
St01en

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

 
Создал кнопку, повешал на нее вот этот код
 
Процедура ВыборСертификата()  
    
    ИмяФайла="";
    Путь=ФС.ТекКаталог();
    Если  
    
    ФС.ВыбратьФайл(0,ИмяФайла, Путь, "Укажите файл, содержащий сертификат")=1 Тогда  
        Сертификат=Путь+ИмяФайла;  
        
    Иначе
        Предупреждение("Не выбран сертификат");
    КонецЕсли;  
    
КонецПроцедуры
 
Теперь, после отработки этой процедуры(выбрал файл или нет) становятся неактивными остальные реквизиты ТЧ. В чем тут трабла?

Всего записей: 292 | Зарегистр. 10-04-2006 | Отправлено: 17:03 02-04-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-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru