7.7 Помогите пожалуйста с документами и справочниками

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем Vit@L, 18 июн 2009.

  1. TopicStarter Overlay
    Vit@L
    Offline

    Vit@L Опытный в 1С

    Регистрация:
    23 сен 2008
    Сообщения:
    59
    Симпатии:
    0
    Баллы:
    26
    Привет всем!
    Не ругайте меня сильно. Я совсем недавно стал изучать 1С и при создании конфигурации "Домашняя бухгалтерия" (в учебных целях) столкнулся с рядом проблем.

    1. Существует справочник расходов и документ для создания расхода. При создании документа, появляется запись в журнале документов и в справочнике расходов, но при открытии уже созданного документа и нажатии на кнепку "ОК" документ в справочнике расходов заного добавляется (т.е. в журнале документов он там и остается один, а в справочнике расходов их уже два). Я знаю что проблема в модуле:
    Код:
    Процедура ОбработкаПроведения()
    СпрРасход = СоздатьОбъект ("Справочник.РасходыНаОбслуживание");
    СпрРасход.Новый();
    СпрРасход.Дата = ДатаДок;
    СпрРасход.Контрагент = Контрагент;
    СпрРасход.Наименование = Наименование;
    СпрРасход.ЕдИзм = ЕдИзм;
    СпрРасход.Количество = Количество;
    СпрРасход.Цена = Цена;
    СпрРасход.Сумма = (Количество * Цена);
    СпрРасход.Записать();
    КонецПроцедуры
    
    т.е. форма используется как для добавления документа, так и для его редактирования. Как сделать так, чтобы при редактировании документа (при открытии его из Журнала документов и при нажатии затем на кнопку "ОК") он не появлялся второй строкой в справочнике???

    2. Документ имет как шапку, так и табличную часть с колонками:
    ... Кол-во, Цена, Сумма
    Как сделать так, чтобы при введении количества и цены сразу же подсчитывалась сумма, т.е. без перехода на новую строку (при событии ПриВводеСтроки() в модуле формы документа). Вот мой код:
    Код:
    Процедура ПриВводеСтроки()
    Сумма = Количество*Цена;
    КонецПроцедуры;
    
    но он срабатывает только при переходе на новую строчку.

    В общем заранее спасибо за помощь. :unsure:
  2. Хряк
    Offline

    Хряк Профессионал в 1С

    Регистрация:
    26 сен 2007
    Сообщения:
    1.447
    Симпатии:
    37
    Баллы:
    54
    1 Полный бред по сути
    по реализации при проведении надо проверить на существование такой записи в спр, например так
    Код:
    СпрРасход = СоздатьОбъект ("Справочник.РасходыНаОбслуживание");
    Нашли=0;
    СпрРасход.ВыбратьЭлементы()
    Пока СпрРасход.ПолучитьЭлемент() цикл
    если 
    (СпрРасход.Дата = ДатаДок) и (СпрРасход.Контрагент = Контрагент) и (СпрРасход.Наименование = Наименование) Тогда
    Нашли=1;
    Прервать;
    КонецЕсли;
    КонецЦикла;
    Если Нашли=0 Тогда
    СпрРасход.Новый();
    ...
    СпрРасход.Записать();
    КонецЕсли;
    
    
    Непонятно
    Код:
    СпрРасход.Сумма = (Количество * Цена);
    если Сумма - реквизит ТЧ
    СпрРасход.Сумма = Сумма;
    
    
    2. Количество * Цена вставь в формулу колонки Цена и Количество
  3. TopicStarter Overlay
    Vit@L
    Offline

    Vit@L Опытный в 1С

    Регистрация:
    23 сен 2008
    Сообщения:
    59
    Симпатии:
    0
    Баллы:
    26
    Ничего не получилось
    1. Выдает ошибку:
    <<?>>Цикл
    {Документ.РасходНаОбслуживание.Модуль Документа(8)}: Выражение должно иметь логический тип
    Т.е. ругается вот на эту строку: Пока СпрРасход.ПолучитьЭлемент() цикл

    2. Тоже выдает ошибку:
    Количество<<?>>*Цена
    Неопознанный оператор
    В формуле колонок "Количество" и "Цена" я написал: Количество*Цена

    В общем ничего не понятно, можно поподробней???
    Спасибо
  4. ZEMA
    Offline

    ZEMA Опытный в 1С

    Регистрация:
    5 окт 2007
    Сообщения:
    231
    Симпатии:
    0
    Баллы:
    26
    1)Выдаент ошибку потому что должно быть
    2) Для того чтобы сразу подсчитывалась сумма есть много способов один из них: прикрепить процедуру к определенному столбцу "Сумма"(щелкаешь на колонку в свойства и нахордишь вкладку дополнительно-Формула)
  5. TopicStarter Overlay
    Vit@L
    Offline

    Vit@L Опытный в 1С

    Регистрация:
    23 сен 2008
    Сообщения:
    59
    Симпатии:
    0
    Баллы:
    26
    В общем ничего не получается, запарился я уже. Вот мой код:
    Код:
    Процедура ОбработкаПроведения()
    СпрРасход = СоздатьОбъект ("Справочник.РасходыНаОбслуживание");
    Нашли=0;
    СпрРасход.ВыбратьЭлементы();
    Пока СпрРасход.ПолучитьЭлемент()=1 Цикл
    если (СпрРасход.Дата = ДатаДок) и (СпрРасход.Контрагент = Контрагент) и (СпрРасход.Наименование = Наименование) Тогда
    Нашли=1;
    Прервать;
    КонецЕсли;
    КонецЦикла;
    Если Нашли=0 Тогда
    СпрРасход = СоздатьОбъект ("Справочник.РасходыНаОбслуживание");
    СпрРасход.Новый();
    СпрРасход.Дата = ДатаДок;
    СпрРасход.Контрагент = Контрагент;
    СпрРасход.Наименование = Наименование;
    СпрРасход.ЕдИзм = ЕдИзм;
    СпрРасход.Количество = Количество;
    СпрРасход.Цена = Цена;
    СпрРасход.Сумма = (Количество * Цена);
    СпрРасход.Записать();
    КонецЕсли;
    КонецПроцедуры
    
    Все равно при открытии в ранее созданного документа в журнале, а затем при его сохранении и проведении (даже ничего не изменяя) в справочнике расходов появляется новая строка. Как сделать так, чтобы новая строка в справочнике расходов появлялась только при добавлении нового документа, а не при его редактировании????????????????????????????
  6. ZEMA
    Offline

    ZEMA Опытный в 1С

    Регистрация:
    5 окт 2007
    Сообщения:
    231
    Симпатии:
    0
    Баллы:
    26
    А если попробывать применить условие
    и "прервать" я думаю здесь необязательно
  7. TopicStarter Overlay
    Vit@L
    Offline

    Vit@L Опытный в 1С

    Регистрация:
    23 сен 2008
    Сообщения:
    59
    Симпатии:
    0
    Баллы:
    26
    А как это сделать, я в строке "Формула" написал: Сумма=Количество*Цену, а он выдает ошибку. Может что с синтаксисом не так?
  8. TopicStarter Overlay
    Vit@L
    Offline

    Vit@L Опытный в 1С

    Регистрация:
    23 сен 2008
    Сообщения:
    59
    Симпатии:
    0
    Баллы:
    26
    Да что же это такое. Нифига не получается.
    Короче, можно ли как-то сделать так чтобы код документа был равен коду записи в справочнике. Ну и потом уже смотреть по коду, если такой код встречается в справочнике расходов, то не проводить документ. И как это сделать, дайте пожалуйста полный текст модуля, а то обрывки из 1 строки, которые вы мне пишете, никакого результата не дают, кроме ошибок.
  9. ZEMA
    Offline

    ZEMA Опытный в 1С

    Регистрация:
    5 окт 2007
    Сообщения:
    231
    Симпатии:
    0
    Баллы:
    26
    у Вас реквизиты табличной части точно называются количество и цена?
    В формулу заносите имя процедуры в которой вы счиваете сумму. Например
    1)
    2) вариант: выбираем строки документа
    СПОСОБОВ ОЧЕНЬ МНОГО
  10. TopicStarter Overlay
    Vit@L
    Offline

    Vit@L Опытный в 1С

    Регистрация:
    23 сен 2008
    Сообщения:
    59
    Симпатии:
    0
    Баллы:
    26
    Да ну е-мое. что за херь.
    Нихрена не получается.
    Короче, я делаю так.
    В модуле документа написал:
    Процедура ПриВводеЦены()
    Сумма=Цена*Количество ;
    КонецПроцедуры
    Затем в свойствах столбца "Сумма" в тсроке формула пишу (именно так и пишу): ПриВводеЦены
    при выполнении выдает ошибку:
    <<?>><<ПриВводеЦены>>
    Неопознанный оператор
    И никакая нахрен сумма не считается. Я и говорю, может у меня где-то в синтаксисе ошибка???? может я не там эту гребаную процедуру написал????? Ну что за хрень вообще с этой 1С?
  11. TopicStarter Overlay
    Vit@L
    Offline

    Vit@L Опытный в 1С

    Регистрация:
    23 сен 2008
    Сообщения:
    59
    Симпатии:
    0
    Баллы:
    26
    Все, разобрался, оказывается нужно было езе и скобки добавить. Я же писал в первом посте, что я буквально вчера начал изучать 1С, поэтому для меня это еще темный лес. Я не знаю даже таких мелочей, где нужно писать скобки, а где нет.

    Ладно, с этим разобрались, а как быть с редактированием документа, и со справочником? Ну чтобы при редактировании не добалялась еще одна запись
  12. TopicStarter Overlay
    Vit@L
    Offline

    Vit@L Опытный в 1С

    Регистрация:
    23 сен 2008
    Сообщения:
    59
    Симпатии:
    0
    Баллы:
    26
    При выполнении этого:

    Код:
    Процедура ОбработкаПроведения()
    СпрРасход = СоздатьОбъект ("Справочник.РасходыНаОбслуживание");
    Если СпрРасход.НайтиПоРеквизиту("Контрагент",Контрагент,)=0 Тогда
    СпрРасход.Новый();
    СпрРасход.Дата = ДатаДок;
    СпрРасход.Контрагент = Контрагент;
    СпрРасход.Наименование = Наименование;
    СпрРасход.ЕдИзм = ЕдИзм;
    СпрРасход.Количество = Количество;
    СпрРасход.Цена = Цена;
    СпрРасход.Сумма = (Количество * Цена);
    СпрРасход.Записать();
    КонецЕсли;
    КонецПроцедуры
    
    
    
    Выдает эту ошибку:
    Что делать?
  13. ASh
    Offline

    ASh Опытный в 1С

    Регистрация:
    10 сен 2008
    Сообщения:
    568
    Симпатии:
    0
    Баллы:
    26
    Этот код, на первый взгляд, рабочий. Единственное, что за реквизит "Наименование" у документа? Зачем он нужен? Ну да ладно. Возможно, различается длина этого реквизита и наименования элемента справочника. Попробуйте заменить
    Код:
            если (СпрРасход.Дата = ДатаДок) и (СпрРасход.Контрагент = Контрагент) и (СпрРасход.Наименование = Наименование) Тогда
    
    
    на
    Код:
            если (СпрРасход.Дата = ДатаДок) и (СпрРасход.Контрагент = Контрагент) и (СокрЛП(СпрРасход.Наименование) = СокрЛП(Наименование)) Тогда
    
    
  14. TopicStarter Overlay
    Vit@L
    Offline

    Vit@L Опытный в 1С

    Регистрация:
    23 сен 2008
    Сообщения:
    59
    Симпатии:
    0
    Баллы:
    26
    Подождите, чет я вообще запутался, как говорится: нафига козен баян, а зачем мне вообще нужен справочник расходов. Ведь в журнале регистрируются все документы. Ведь можно же будет в конце месяца к примеру сделать отчет по журналу документов? Или это нельзя сделать в 1С? Т.е. к примеру я целый месяц забиваю расходы, а в конце месяца формирую отчет по документам, из которого видна общая сумма на расходы. Т.е. возможно ли это вообще без справочника расходов?
  15. ASh
    Offline

    ASh Опытный в 1С

    Регистрация:
    10 сен 2008
    Сообщения:
    568
    Симпатии:
    0
    Баллы:
    26
    Вам сразу сказали, что задача странная:) Никто документы в справочник и не заносит. Отчеты строятся по самим документам.
  16. Хряк
    Offline

    Хряк Профессионал в 1С

    Регистрация:
    26 сен 2007
    Сообщения:
    1.447
    Симпатии:
    37
    Баллы:
    54
    >Т.е. возможно ли это вообще без справочника расходов?
    Несомненно
    В справочник заносятся сами названия расходов, в доке заполняется реквизит типа спр. расходы
    В отчете перебираются документы (например) и ...

    зы: посмотри типову бух, например док.РКО
  17. TopicStarter Overlay
    Vit@L
    Offline

    Vit@L Опытный в 1С

    Регистрация:
    23 сен 2008
    Сообщения:
    59
    Симпатии:
    0
    Баллы:
    26
    Ну спасибо. :)))
  18. TopicStarter Overlay
    Vit@L
    Offline

    Vit@L Опытный в 1С

    Регистрация:
    23 сен 2008
    Сообщения:
    59
    Симпатии:
    0
    Баллы:
    26
    А вот еще вопрос, как можно сделать так, чтобы при создании документа, в журнал документов записывался пользователь который создал этот документ???
  19. Хряк
    Offline

    Хряк Профессионал в 1С

    Регистрация:
    26 сен 2007
    Сообщения:
    1.447
    Симпатии:
    37
    Баллы:
    54
    Общий рекв. для доков - Автор
    Проц ВводНового
    Автор=ИмяПользователя();
  20. TopicStarter Overlay
    Vit@L
    Offline

    Vit@L Опытный в 1С

    Регистрация:
    23 сен 2008
    Сообщения:
    59
    Симпатии:
    0
    Баллы:
    26
    Ниче не понял. Можно подробнее? :unsure:
Похожие темы
  1. T_rex
    Ответов:
    8
    Просмотров:
    1.480
  2. lilit001
    Ответов:
    4
    Просмотров:
    758
Загрузка...

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