8.х Проведение документа

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Voody, 23 июл 2008.

  1. TopicStarter Overlay
    Voody
    Offline

    Voody Опытный в 1С

    Регистрация:
    16 июл 2008
    Сообщения:
    73
    Симпатии:
    0
    Баллы:
    26
    Создаю новый документ программно...

    и проводку в нем тоже:
    Код:
    Движение = НовыйДок.Движения.Типовой;
    Проводка = Движение.Добавить();
    
    Проводка.СчетДт = ПланыСчетов.Типовой.НайтиПоКоду("1210").Код;
    Проводка.СчетКт = ПланыСчетов.Типовой.НайтиПоКоду("6010").Код;
    
    //......
    
    Движение.Записать();
    
    
    Выходит ошибка в окно сообщений:
    {Обработка.Перекачка.Форма.Форма(22)}: Ошибка при вызове метода контекста (Записать): Ошибка записи! Не установлен отбор по регистратору (Регистр бухгалтерии: Журнал проводок (бухгалтерский учет))
    Движение.Записать();
  2. lazy
    Offline

    lazy Модераторы Команда форума Модератор

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    Код:
    Проводка.Регистратор = ЭтотОбъект.Ссылка; 
    
    ?
  3. TopicStarter Overlay
    Voody
    Offline

    Voody Опытный в 1С

    Регистрация:
    16 июл 2008
    Сообщения:
    73
    Симпатии:
    0
    Баллы:
    26
    lazy

    Документ создаю из обработки:

    Код:
    НовыйДок = Документы.ОперацияБух.СоздатьДокумент();
    ДокСсылка = НовыйДок.Ссылка;
    Пользователь = Справочники.Пользователи;
    Пользователь.Выбрать();
    НовыйДок.Дата = ПериодПерекачки;
    НовыйДок.Номер = "123456";
    НовыйДок.Автор = Пользователь.НайтиПоКоду("Администратор").Наименование;
    НовыйДок.Содержание = "Проверка";
    
    НовыйДок.Записать(РежимЗаписиДокумента.Запись);
    
    
    Здесь переменная ДокСслыка имеет тип ДокументСсылка..., но ссылается она на документ с датой 01.01.0001. (то есть ни на какой) Вот

    И документ этот почему то не создаётся, может и ссылка поэтому пустая?
  4. lazy
    Offline

    lazy Модераторы Команда форума Модератор

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    Код:
    ПолучитьСсылкуНового()
    
    ?
  5. TopicStarter Overlay
    Voody
    Offline

    Voody Опытный в 1С

    Регистрация:
    16 июл 2008
    Сообщения:
    73
    Симпатии:
    0
    Баллы:
    26
    Результат тот же.

    Может я что нибудь при создании документа не так делаю, и поэтому ссылка на него неправильная.
    Процедура создания документа проходит роано (т.е. без ошибок), но результата не вижу. Документ фактически не создается. ??? Все реквизиты необходимые реквизиты док-а заполняю
  6. lazy
    Offline

    lazy Модераторы Команда форума Модератор

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    Давай код целиком. Желательно в виде обработки.
  7. TopicStarter Overlay
    Voody
    Offline

    Voody Опытный в 1С

    Регистрация:
    16 июл 2008
    Сообщения:
    73
    Симпатии:
    0
    Баллы:
    26
    Код:
    
    Процедура СозданиеДокумента()
    
    НовыйДок = Документы.ОперацияБух.СоздатьДокумент();
    ДокСсылка = НовыйДок.ПолучитьСсылкуНового();
    
    Пользователь = Справочники.Пользователи;
    Пользователь.Выбрать();
    
    НовыйДок.Дата = ПериодПерекачки;
    НовыйДок.Номер = "123456";
    НовыйДок.Автор = Пользователь.НайтиПоКоду("Администратор");
    НовыйДок.Содержание = "Проверка";
    НовыйДок.Ответственный = Пользователь.НайтиПоКоду("Администратор");
    НовыйДок.СуммаОперации = 555666;
    
    Организация = Справочники.Организации;
    Организация.Выбрать();
    
    НовыйДок.Организация = Организация.НайтиПоКоду("000000001");
    
    НовыйДок.Записать(РежимЗаписиДокумента.Запись);
    
    
    
    
    Движение = НовыйДок.Движения.Типовой;
    Проводка = Движение.Добавить();
    
    Проводка.СчетДт = ПланыСчетов.Типовой.НайтиПоКоду("1210");
    Проводка.СчетКт = ПланыСчетов.Типовой.НайтиПоКоду("6010");
    Проводка.Регистратор = ДокСсылка;
    Проводка.Сумма = 5465655;
    Проводка.Период = ПериодПерекачки;
    
    Движение.Записать();
    
    КонецПроцедуры
    
    
    
    
    В результате ошибок нет, но и данные не записиываются никуда(((
  8. lazy
    Offline

    lazy Модераторы Команда форума Модератор

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    Хм, ну во первых - получай ссылку после записи документа. Тогда можно будет обойтись безо всяких "ПолучитьСсылкуНового()".

    Во вторых - объясни мне: зачем ты лапами делаешь движения документа в обработке? Правильнее это оставить самому документу - чтобы он делал свои проводки. В обработке заполняй табличную часть документа, и пускай он сам занимается проводками, а ты только делай
    Код:
    НовыйДок.Записать(РежимЗаписиДокумента.Проведение);
    
  9. TopicStarter Overlay
    Voody
    Offline

    Voody Опытный в 1С

    Регистрация:
    16 июл 2008
    Сообщения:
    73
    Симпатии:
    0
    Баллы:
    26
    Дело в том, что у документа стоит запрет проведения. На вкладке "движения" документа указан регистр бухгалтерии "типовой".

    Данные для регистра берутся не из табличной части документа (Кстати документ - "Операция"), а из таблицы ДБФ, данные из которой извлекаю, используя XBase.
    В документе надо заполнить только те поля, которые я заполнял в ранее приведенном коде.


    на форме документа есть табличная часть с Данными: Движения.Типовой
  10. lazy
    Offline

    lazy Модераторы Команда форума Модератор

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    Как то все это не просто организованно: dbf, документ операция без проведения.

    Можно поинтересоваться, какую конфигурацию вы практикуете?
  11. TopicStarter Overlay
    Voody
    Offline

    Voody Опытный в 1С

    Регистрация:
    16 июл 2008
    Сообщения:
    73
    Симпатии:
    0
    Баллы:
    26
    Можно,
    Бухгалтерия для Казахстана, редакция 1.5, разработка для Казахстана: «1С-Рейтинг», при методической поддержке «1С-Сапа», 2005 (1.5.3.10)
  12. lazy
    Offline

    lazy Модераторы Команда форума Модератор

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    Доступа к такой конфигурации не имею, но немножко подправленный код для УПП выглядит так:
    Код:
        НовыйДок = Документы.ОперацияБух.СоздатьДокумент();
    
    Пользователь = Справочники.Пользователи;
    Пользователь.Выбрать();
    
    НовыйДок.Дата = ТекущаяДата();
    НовыйДок.Содержание = "Проверка";
    НовыйДок.СуммаОперации = 555666;
    
    Организация = Справочники.Организации;
    Организация.Выбрать();
    
    НовыйДок.Организация = Организация.НайтиПоКоду("000000001");
    
    НовыйДок.Записать(РежимЗаписиДокумента.Запись);
    Сообщить("Сформирован документ № "+НовыйДок.Номер);
    
    ДокСсылка = НовыйДок.Ссылка;
    
    Движение = НовыйДок.Движения.Хозрасчетный;
    Проводка = Движение.Добавить();
    
    Проводка.СчетДт = ПланыСчетов.Хозрасчетный.Аккредитивы;
    Проводка.СчетКт = ПланыСчетов.Хозрасчетный.Акцизы;
    Проводка.Регистратор = ДокСсылка;
    Проводка.Сумма = 5465655;
    Проводка.Период = ТекущаяДата();
    
    Движение.Записать();
    
    
    
    При этом движения успешно формируются - документы появляются.
  13. TopicStarter Overlay
    Voody
    Offline

    Voody Опытный в 1С

    Регистрация:
    16 июл 2008
    Сообщения:
    73
    Симпатии:
    0
    Баллы:
    26
    lazy, не знаю что у меня не так, вроде так же все. Но не создаются они, не создаются.
    Ладно буду копать, делать то все равно надо...
  14. lazy
    Offline

    lazy Модераторы Команда форума Модератор

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    Подожди, фиг с ними с движениями. Документ то хотябы создается?
  15. TopicStarter Overlay
    Voody
    Offline

    Voody Опытный в 1С

    Регистрация:
    16 июл 2008
    Сообщения:
    73
    Симпатии:
    0
    Баллы:
    26
    Да, действительно, документ то и не создается. Проводка же должна быть завязанна с каким то тдокументом. Но даже когда я для неё ставлю регистратором существующий документ, выходит тоже самое.
    Насчет записи..
    В документе отсутствует процедура "ПриЗаписи()"
    Есть процедура "ПередЗаписью".
    Может из-за этого он и не создаётся программно, в системе Предприятие создаётся нормально - пробовал..
  16. lazy
    Offline

    lazy Модераторы Команда форума Модератор

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    Естественно - движения в регистре подчинены регистратору, из за этого он ругался как в первом посте.

    А вот насчет почему не сохраняются - вопрос. Исключений при работе кода создающего документ не возникает?

    Грубо говоря - вот такой код безо всяких реквизитов работает?
    Код:
    НовыйДок = Документы.ОперацияБух.СоздатьДокумент();
    НовыйДок.Дата = ТекущаяДата();
    НовыйДок.Записать(РежимЗаписиДокумента.Запись);
    Сообщить("Сформирован документ № "+НовыйДок.Номер);
    
  17. TopicStarter Overlay
    Voody
    Offline

    Voody Опытный в 1С

    Регистрация:
    16 июл 2008
    Сообщения:
    73
    Симпатии:
    0
    Баллы:
    26
    В модуле документа, который я пытаюсь создать (ОперацияБух) , отсутствует процедура "ПриЗаписи", это как нибудь влияет на выполнение этого кода

    Код:
    НовыйДок = Документы.ОперацияБух.СоздатьДокумент();
    НовыйДок.Дата = ТекущаяДата();
    НовыйДок.Записать(РежимЗаписиДокумента.Запись);
    Сообщить("Сформирован документ № "+НовыйДок.Номер);
    
    
  18. lazy
    Offline

    lazy Модераторы Команда форума Модератор

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    Только если ПриЗаписи(<Отказ>) Отказ будет Истина, но тогда система ругнется типа "Операция не выполнена".

    Ой, сорри, если преопределенных процедур нет, то никак не влияет.
  19. TopicStarter Overlay
    Voody
    Offline

    Voody Опытный в 1С

    Регистрация:
    16 июл 2008
    Сообщения:
    73
    Симпатии:
    0
    Баллы:
    26
    Уже не знаю чего делать.
    Проверил отладчиком что поиходит при создании документа из Предприятие - то же самое что и при программном создании, толко там он создаётся, а при программном нет нет..
    да что это такое :unsure:
  20. lazy
    Offline

    lazy Модераторы Команда форума Модератор

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    Так а что говорит
    Код:
    Сообщить("Сформирован документ № "+НовыйДок.Номер);
    
    ?

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