Создаю новый документ программно...
и проводку в нем тоже:
Код
Движение = НовыйДок.Движения.Типовой;
Проводка = Движение.Добавить();
Проводка.СчетДт = ПланыСчетов.Типовой.НайтиПоКоду("1210").Код;
Проводка.СчетКт = ПланыСчетов.Типовой.НайтиПоКоду("6010").Код;
//......
Движение.Записать();
Выходит ошибка в окно сообщений:
{Обработка.Перекачка.Форма.Форма(22)}: Ошибка при вызове метода контекста (Записать): Ошибка записи! Не установлен отбор по регистратору (Регистр бухгалтерии: Журнал проводок (бухгалтерский учет))
Движение.Записать();
Код
Проводка.Регистратор = ЭтотОбъект.Ссылка;
?
lazyДокумент создаю из обработки:
Код
НовыйДок = Документы.ОперацияБух.СоздатьДокумент();
ДокСсылка = НовыйДок.Ссылка;
Пользователь = Справочники.Пользователи;
Пользователь.Выбрать();
НовыйДок.Дата = ПериодПерекачки;
НовыйДок.Номер = "123456";
НовыйДок.Автор = Пользователь.НайтиПоКоду("Администратор").Наименование;
НовыйДок.Содержание = "Проверка";
НовыйДок.Записать(РежимЗаписиДокумента.Запись);
Здесь переменная
ДокСслыка имеет тип ДокументСсылка..., но ссылается она на документ с датой 01.01.0001. (то есть ни на какой) Вот
И документ этот почему то не создаётся, может и ссылка поэтому пустая?
Цитата(lazy @ 23.7.2008, 8:49)

Результат тот же.
Может я что нибудь при создании документа не так делаю, и поэтому ссылка на него неправильная.
Процедура создания документа проходит роано (т.е. без ошибок), но результата не вижу. Документ фактически не создается. ??? Все реквизиты необходимые реквизиты док-а заполняю
Давай код целиком. Желательно в виде обработки.
Код
Процедура СозданиеДокумента()
НовыйДок = Документы.ОперацияБух.СоздатьДокумент();
ДокСсылка = НовыйДок.ПолучитьСсылкуНового();
Пользователь = Справочники.Пользователи;
Пользователь.Выбрать();
НовыйДок.Дата = ПериодПерекачки;
НовыйДок.Номер = "123456";
НовыйДок.Автор = Пользователь.НайтиПоКоду("Администратор");
НовыйДок.Содержание = "Проверка";
НовыйДок.Ответственный = Пользователь.НайтиПоКоду("Администратор");
НовыйДок.СуммаОперации = 555666;
Организация = Справочники.Организации;
Организация.Выбрать();
НовыйДок.Организация = Организация.НайтиПоКоду("000000001");
НовыйДок.Записать(РежимЗаписиДокумента.Запись);
Движение = НовыйДок.Движения.Типовой;
Проводка = Движение.Добавить();
Проводка.СчетДт = ПланыСчетов.Типовой.НайтиПоКоду("1210");
Проводка.СчетКт = ПланыСчетов.Типовой.НайтиПоКоду("6010");
Проводка.Регистратор = ДокСсылка;
Проводка.Сумма = 5465655;
Проводка.Период = ПериодПерекачки;
Движение.Записать();
КонецПроцедуры
В результате ошибок нет, но и данные не записиываются никуда(((
Хм, ну во первых - получай ссылку после записи документа. Тогда можно будет обойтись безо всяких "ПолучитьСсылкуНового()".
Во вторых - объясни мне: зачем ты лапами делаешь движения документа в обработке? Правильнее это оставить самому документу - чтобы он делал свои проводки. В обработке заполняй табличную часть документа, и пускай он сам занимается проводками, а ты только делай
Код
НовыйДок.Записать(РежимЗаписиДокумента.Проведение);
Цитата(lazy @ 23.7.2008, 9:58)

Код
НовыйДок.Записать(РежимЗаписиДокумента.Проведение);
Дело в том, что у документа стоит запрет проведения. На вкладке "движения" документа указан регистр бухгалтерии "типовой".
Данные для регистра берутся не из табличной части документа (Кстати документ - "Операция"), а из таблицы ДБФ, данные из которой извлекаю, используя XBase.
В документе надо заполнить только те поля, которые я заполнял в ранее приведенном коде.
Цитата(Voody @ 23.7.2008, 10:06)

поравочка*
на форме документа есть табличная часть с Данными: Движения.Типовой
Как то все это не просто организованно: dbf, документ операция без проведения.
Можно поинтересоваться, какую конфигурацию вы практикуете?
Цитата(lazy @ 23.7.2008, 10:21)

Как то все это не просто организованно: dbf, документ операция без проведения.
Можно поинтересоваться, какую конфигурацию вы практикуете?
Можно,
Бухгалтерия для Казахстана, редакция 1.5, разработка для Казахстана: «1С-Рейтинг», при методической поддержке «1С-Сапа», 2005 (1.5.3.10)
Доступа к такой конфигурации не имею, но немножко подправленный код для УПП выглядит так:
Код
НовыйДок = Документы.ОперацияБух.СоздатьДокумент();
Пользователь = Справочники.Пользователи;
Пользователь.Выбрать();
НовыйДок.Дата = ТекущаяДата();
НовыйДок.Содержание = "Проверка";
НовыйДок.СуммаОперации = 555666;
Организация = Справочники.Организации;
Организация.Выбрать();
НовыйДок.Организация = Организация.НайтиПоКоду("000000001");
НовыйДок.Записать(РежимЗаписиДокумента.Запись);
Сообщить("Сформирован документ № "+НовыйДок.Номер);
ДокСсылка = НовыйДок.Ссылка;
Движение = НовыйДок.Движения.Хозрасчетный;
Проводка = Движение.Добавить();
Проводка.СчетДт = ПланыСчетов.Хозрасчетный.Аккредитивы;
Проводка.СчетКт = ПланыСчетов.Хозрасчетный.Акцизы;
Проводка.Регистратор = ДокСсылка;
Проводка.Сумма = 5465655;
Проводка.Период = ТекущаяДата();
Движение.Записать();
При этом движения успешно формируются - документы появляются.
lazy, не знаю что у меня не так, вроде так же все. Но не создаются они, не создаются.
Ладно буду копать, делать то все равно надо...
Подожди, фиг с ними с движениями. Документ то хотябы создается?
Да, действительно, документ то и не создается. Проводка же должна быть завязанна с каким то тдокументом. Но даже когда я для неё ставлю регистратором существующий документ, выходит тоже самое.
Насчет записи..
В документе отсутствует процедура "ПриЗаписи()"
Есть процедура "ПередЗаписью".
Может из-за этого он и не создаётся программно, в системе Предприятие создаётся нормально - пробовал..
Естественно - движения в регистре подчинены регистратору, из за этого он ругался как в первом посте.
А вот насчет почему не сохраняются - вопрос. Исключений при работе кода создающего документ не возникает?
Грубо говоря - вот такой код безо всяких реквизитов работает?
Код
НовыйДок = Документы.ОперацияБух.СоздатьДокумент();
НовыйДок.Дата = ТекущаяДата();
НовыйДок.Записать(РежимЗаписиДокумента.Запись);
Сообщить("Сформирован документ № "+НовыйДок.Номер);
В модуле документа, который я пытаюсь создать (ОперацияБух) , отсутствует процедура "ПриЗаписи", это как нибудь влияет на выполнение этого кода
Код
НовыйДок = Документы.ОперацияБух.СоздатьДокумент();
НовыйДок.Дата = ТекущаяДата();
НовыйДок.Записать(РежимЗаписиДокумента.Запись);
Сообщить("Сформирован документ № "+НовыйДок.Номер);
Только если ПриЗаписи(<Отказ>) Отказ будет Истина, но тогда система ругнется типа "Операция не выполнена".
Ой, сорри, если преопределенных процедур нет, то никак не влияет.
Уже не знаю чего делать.
Проверил отладчиком что поиходит при создании документа из Предприятие - то же самое что и при программном создании, толко там он создаётся, а при программном нет нет..
да что это такое
Так а что говорит
Код
Сообщить("Сформирован документ № "+НовыйДок.Номер);
?
Цитата(lazy @ 23.7.2008, 12:38)

Так а что говорит
Код
Сообщить(\"Сформирован документ № \"+НовыйДок.Номер);
?
Выводит сообщение
"Сформирован документ № 1 255 "
но его он не формируется. глобальным поиском даже искать пробовал...
Ты точно ищешь в документах ОперацияБух? Отбор? Период?
А если сделать вот так:
Код
НовыйДок = Документы.ОперацияБух.СоздатьДокумент();
НовыйДок.Дата = ТекущаяДата();
НовыйДок.Записать(РежимЗаписиДокумента.Запись);
Сообщить("Сформирован документ № "+НовыйДок.Номер);
Форма = НовыйДок.ПолучитьФорму();
Форма.Открыть();
Цитата(lazy @ 23.7.2008, 12:48)

Форма = НовыйДок.ПолучитьФорму();
Форма.Открыть();
[/code]
Открывается форма документ с заполненными полями, но вот записать его не получается.
По нажатию на кнопки "Записать" или "ОК" ничего не происходит, никакой реакции (в отладчике проверял).
Поподробнее опиши, что значит "ничего не происходит". И скриншот по возможности дай.
Цитата(lazy @ 23.7.2008, 13:21)

Поподробнее опиши, что значит "ничего не происходит". И скриншот по возможности дай.
Не происходит обработка нажатия кнопки "Записать".
Она не нажимается, или ничего не происходит при нажатии, или просто форма закрывается?
Еще такой вопрос - проблем с правами не наблюдается т.е. работаете от "Администратора", а на других пользователях как?
Кнопка визуально нажимается, но код, написанный на нее не активируется (При нажатии на "Сохранить")
Нажатие на "ОК" закрывает документ, не сохраняя его, и не выдавая никаких предупреждений.
С правами все нормально вроде..
Цитата(Voody @ 23.7.2008, 15:01)

Кнопка визуально нажимается, но код, написанный на нее не активируется (При нажатии на "Сохранить")
Нажатие на "ОК" закрывает документ, не сохраняя его, и не выдавая никаких предупреждений.
С правами все нормально вроде..
А в сам код по кнопке программа попадает?
Пардон, попадает, уже поняла...
Voody, если еще актуально, да и остальным может поможет.
Решал такую же задачу.
Проблемы были теже.
Решаются:
1. В начале
Код
2. В конце
Код
ЗафиксироватьТранзакцию();
Успехов!
Господа, есть 2 вопроса в продолжение темы.
1. Как формируемые таким образом документы заставить влиять на оборотно-сальдовую ведомость?
Т.е. Документы формируются и запоминаются нормально. При попытке просмотреть движение документа по регистрам, открывается все нормально, за исключением одного. Поле организация - ПУСТОЕ!!! Всегда. Думаю это и влияет на оборотно-сальдовую ведомость...
2. Если смотреть эти документы в журнале операций, то все нормально, за исключением одного. Поле Контрагент пустое. Вопрос... Как его указать из кода?
Заранее спасибо.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста,
нажмите сюда.