7.7 Подскажите что не так в коде

Тема в разделе "Отчеты и обработки для "1С:Предприятие 7.7"", создана пользователем Martinka, 16 сен 2011.

  1. TopicStarter Overlay
    Martinka
    Offline

    Martinka

    Регистрация:
    16 сен 2011
    Сообщения:
    17
    Симпатии:
    0
    Баллы:
    1
    Создала обработку. Всё отображается в виде таблице на форме. Хочу что бы пользователь мог выбрать в таблице нужнаю позицию и при помощи клавиши Enter открыть документ. Пишу код:
    Код:
    Процедура ПоказатьЗаказ()
    н=Таб.ТекущаяСтрока();
    НомерДок=Таб.ПолучитьЗначение(н,"Квит");
    Квитанция=СоздатьОбъект("Документ.Квитанция");
    Квитанция.НайтиПоНомеру(Квитанция.НомерДок);
    ОткрытьФормуМодально(Квитанция.ТекущийДокумент());
    КонецПроцедуры
    
    Что не так??? почему не открывает ничего, и не ругается ни на что...
  2. Dmitriy_76
    Offline

    Dmitriy_76 Опытный в 1С Команда форума

    Регистрация:
    26 мар 2011
    Сообщения:
    2.175
    Симпатии:
    13
    Баллы:
    29
    как минимум номер дока уникален в течении года.....
  3. Requin
    Offline

    Requin Опытный в 1С

    Регистрация:
    10 май 2010
    Сообщения:
    1.911
    Симпатии:
    2
    Баллы:
    29
    Поставьте точку останова в процедуре. В нее хоть "заходит"?
  4. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    1) На форме в своствах таблицы выблицы закл. дополнительно, поле формула не прописали вызов процедуры. Это как один из вариантов...(Requin)

    2) Dmitriy_76 правильно сказал - нехватает даты + поиск ведете по несуществующему номеру у вновь созданного объекта.
    (НайтиПоНомеру(Квитанция.НомерДок)) Для чего тогда находили НомерДок из Таб?

    Код будет такой (если КВИТ это номер документа):

    Код:
    Процедура ПоказатьЗаказ()    
    Если Таб.КоличествоСтрок()=0 Тогда 
    Возврат;
    КонецЕсли;
    //н=Таб.ТекущаяСтрока(); это лишнее 
    //НомерДок=Таб.ПолучитьЗначение(н,"Квит");
    Квитанция=СоздатьОбъект("Документ.Квитанция");
    Квитанция.НайтиПоНомеру(Таб.Квит,Таб.КвитДата);  
    ОткрытьФормуМодально(Квитанция.ТекущийДокумент());
    КонецПроцедуры
    
    
    
    
    
    где Таб.КвитДата - еще одна колонка ТЗ типа дата = дате документа.

    Я бы на вашем месте в ТЗ писал сразу ссылку на документ (не просто номер). Тогда все еще проще

    Код:
    Процедура ПоказатьЗаказ()    
    Если Таб.КоличествоСтрок()=0 Тогда 
    Возврат;
    КонецЕсли;
    Квитанция=СоздатьОбъект("Документ.Квитанция");
    ОткрытьФормуМодально(Таб.Квит.ТекущийДокумент());
    КонецПроцедуры
    
    
    
    
    
  5. TopicStarter Overlay
    Martinka
    Offline

    Martinka

    Регистрация:
    16 сен 2011
    Сообщения:
    17
    Симпатии:
    0
    Баллы:
    1
    Бухгалтерский угодник спасибо вам большое всё получилось, разобралась=)
    Можно еще спросить, делаю на форме поле ввода(статусзаяв) Статус квитанции, которое связанно со справочником Статус заявки (Форма на рисунке). Хочу что бы автоматически заполнялось из справочника первым значением "Открыт" при создании нового документа. Подскажите пожалуйста, как сделать??? :angry:
    я сама писала вот такой код(наверное опять иду окольными путями...):
    Код:
    Процедура ПриОткрытии()
    Если ПустаяСтрока(СтатусЗаяв)<0 Тогда
    СтатусЗаяв=Константа.ПервСтатус;
    КонецЕсли;          
    //СменаСтатусаЗаказа();
    КонецПроцедуры
    

    Вложения:

  6. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Статус это перечисление или справочник?
  7. TopicStarter Overlay
    Martinka
    Offline

    Martinka

    Регистрация:
    16 сен 2011
    Сообщения:
    17
    Симпатии:
    0
    Баллы:
    1
    Справочник
  8. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Обысно такие вещи как статусы делаются через перечисления, т.к. значения их (статусов) как правило фиксированы и известны изначально. Ну раз через справочник, то наверное луче так...

    Код:
    Процедура ПриОткрытии()	
    Если ПустоеЗначение(СтатусЗаяв)=1 <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/тогда')">Тогда	</span>
    //проверим...
    Если ПустоеЗначение(Константа.ПервСтатус)=1 Тогда
    Предупреждение("Первичный статус не определен в константах!");
    СтатусВозврата(0);
    Возврат;
    КонецЕсли;
    СтатусЗаяв=Константа.ПервСтатус;	
    КонецЕсли;          	
    //СменаСтатусаЗаказа();
    КонецПроцедуры
    
    
  9. TopicStarter Overlay
    Martinka
    Offline

    Martinka

    Регистрация:
    16 сен 2011
    Сообщения:
    17
    Симпатии:
    0
    Баллы:
    1
    Чего то не выходит, вроди и константы есть и привязанны к справочнику...а всё равно не пашет
  10. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Реквизит остается пустым? Проверяйте соотвествия типов (константы и реквизита документа).

    Еще варианты:
    1) Если константа периодическая - нужно через метод получить брать
    2) Справочник случайно не подчиненный (владельца нет)?
  11. TopicStarter Overlay
    Martinka
    Offline

    Martinka

    Регистрация:
    16 сен 2011
    Сообщения:
    17
    Симпатии:
    0
    Баллы:
    1
    И наверное я что то не доделала, надо же как то связать константы со значениями справочника??? как сделать???

    справочник не подчиненный, реквизитов нет. константа не периодическая
  12. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    А в костанта то вы элемент справочника определили (выбрали)?
  13. TopicStarter Overlay
    Martinka
    Offline

    Martinka

    Регистрация:
    16 сен 2011
    Сообщения:
    17
    Симпатии:
    0
    Баллы:
    1
    Конечно, тип значения стоит Справочник.СтатусЗаявки
  14. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Похоже не поняли... В режиме предприятия значение константе присвоили?
  15. TopicStarter Overlay
    Martinka
    Offline

    Martinka

    Регистрация:
    16 сен 2011
    Сообщения:
    17
    Симпатии:
    0
    Баллы:
    1
    наверное вот этого и нет, я не так давно работаю с ситемой 1с и путаюсь еще... а как это сделать :angry: ???
  16. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    В режиме предприятия (не конфигуратора). Меню-Операции-Константы. Находим вашу - устанавливаем значение
  17. TopicStarter Overlay
    Martinka
    Offline

    Martinka

    Регистрация:
    16 сен 2011
    Сообщения:
    17
    Симпатии:
    0
    Баллы:
    1
    ооо :D всё работает ОГРОМНОЕ спасибо :angry:
  18. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
  19. TopicStarter Overlay
    Martinka
    Offline

    Martinka

    Регистрация:
    16 сен 2011
    Сообщения:
    17
    Симпатии:
    0
    Баллы:
    1
    А вот ещё вопросик. Я дорабатывала уже сделанную другим программистом конфигурацию...в форму документа как раз добавила поле Статус квитанции, хотела бы узнать можно ли как нибудь сделать так что бы автоматически подставлялались те значения , которые указанны в комментарии этой формы(т.к. квитанции не новые а данные хранятся с 2007года)... например в комментариях написанно ВОЗВРАТ денег (статус=ЗАКРЫТ) или передан в сервисный центр (статус=в АСЦ)??? или это всё придется руками редактировать7?? вообще есть такая возможность сделать?
  20. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    я бы сделал это обработкой......

    Вот примерный код
    Код:
    НачатьТранзакцию();
    Поиск=ВРЕГ(СокрЛП(СтрПоиска));
    Док=СоздатьОбъект("Докумет.ИмяМоегоДокумента");
    Док.ВыбратьДокументы(НачДата,КонДата);
    Пока Док.ПолучитьДокумент()=1 Цикл
    Если Найти(Поск,ВРЕГ(СОКРЛП(Док.Комментарий))<>0 Тогда
    Док.МойРеквизит=ЗначениеИзФормы;
    Док.Записать();
    КонецЕсли;
    КонецЦикла;
    ЗафиксироватьТранзакцию();
    
    
    где
    НачДата,КонДата - типа дата
    СтрПоиска - строка (длину определите сами)
    ЗначениеИзФормы - типа справочник (какой там у вас)

    все вышеперечисленное реквизиты формы обработки....

Поделиться этой страницей