Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
19 мая 2024, 01:24

Создание нового документа

Автор gamograff, 15 сен 2015, 19:13

0 Пользователей и 1 гость просматривают эту тему.

gamograff

Добрый вечер. Требуется создать новый документ ПоступлениеТоваровУслуг с товарами. Но при коде:
НовыйДок = Документы.ПоступлениеТоваровУслуг.СоздатьДокумент();

НовыйДок.Дата = Дата;

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
               | ДоговорыКонтрагентов.Наименование
               |ИЗ
               | Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
               |ГДЕ
               | ДоговорыКонтрагентов.Владелец = &Владелец
               | И ДоговорыКонтрагентов.Организация = &Организация";
Запрос.УстановитьПараметр("Владелец", ОрганизацияКонтрагент);
Запрос.УстановитьПараметр("Организация", ОрганизацияОрганизация);
Результат = Запрос.Выполнить();
Выборка = Результат.Выгрузить();
Договор = Выборка.Получить(0).Получить(0);

НовыйДок.ДоговорКонтрагента = Справочники.ДоговорыКонтрагентов.НайтиПоНаименованию(Договор);
НовыйДок.Контрагент = ОрганизацияКонтрагент;
НовыйДок.Организация = ОрганизацияОрганизация;

НоваяСтрока = НовыйДок.Товары.Добавить();
НоваяСтрока.Количество = Количество;
НоваяСтрока.Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию(Номенклатура);
НоваяСтрока.СтавкаНДС = НоваяСтрока.Номенклатура.СтавкаНДС;

НовыйДок.Записать();


документ не записывается, хотя с другими документами, например, СчетНаОплатуПокупателю это работает. Почему это может быть и как записать новый документ и сохранить его название в справочнике? Про последнее: решение было найдено через запрос с поиском последнего документа, но может быть, есть решение попроще.

cska-fanat-kz

НовыйДок.Записать();
Справочник.Реквизит = НовыйДок.Ссылка;
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

cska-fanat-kz

Пока на первый взгляд в коде все нормально.
Правей не хватает?
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

vitasw

Цитата: cska-fanat-kz от 16 сен 2015, 06:14Пока на первый взгляд в коде все нормально.
Интуитивно догадываюсь, что речь идет исключительно об процедуре записи документа. Процесс заполнения документа вызывает ОООчень большие вопросы.

gamograff

В отладчике начала вылетать ошибка на строчке
Договор = Выборка.Получить(0)
в 1С Предприятии написано, что индекс выходит за границы диапазона, но договор между указанными организациями точно есть. Может быть неправильно написан текст запроса?
Добавлено: 16 сен 2015, 11:10


Цитата: vitasw от 16 сен 2015, 09:24
Интуитивно догадываюсь, что речь идет исключительно об процедуре записи документа. Процесс заполнения документа вызывает ОООчень большие вопросы.

Какие?

cska-fanat-kz

Договор = Выборка.Получить(0).Получить(0);
//WTF??
   
    НовыйДок.ДоговорКонтрагента = Справочники.ДоговорыКонтрагентов.НайтиПоНаименованию(Договор);
    НовыйДок.Контрагент = ОрганизацияКонтрагент;
    НовыйДок.Организация = ОрганизацияОрганизация;
//Вы ищете по наименованию по всему справочнику? А если у другого контрагента тоже есть договор "Основной" или "Без договора"? Вы этому договору замЕните владельца и организацию!
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

gamograff

Вопрос с ошибкой в запросе снимается, это мой косяк :)
Добавлено: 16 сен 2015, 12:14


Цитата: cska-fanat-kz от 16 сен 2015, 12:01
Договор = Выборка.Получить(0).Получить(0);
//WTF??

А как ещё получить значение таблицы значений? Первым Получить выбирается строка, вторым - само значение. Можно это сделать лучше?

Цитата: cska-fanat-kz от 16 сен 2015, 12:01
    НовыйДок.ДоговорКонтрагента = Справочники.ДоговорыКонтрагентов.НайтиПоНаименованию(Договор);
    НовыйДок.Контрагент = ОрганизацияКонтрагент;
    НовыйДок.Организация = ОрганизацияОрганизация;
//Вы ищете по наименованию по всему справочнику? А если у другого контрагента тоже есть договор "Основной" или "Без договора"? Вы этому договору замЕните владельца и организацию!

Не очень понимаю, что имеется ввиду, но сейчас запрос переделан следующим образом:
Запрос.Текст = "ВЫБРАТЬ
               | ДоговорыКонтрагентов.Ссылка
               |ИЗ
               | Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
               |ГДЕ
               | ДоговорыКонтрагентов.Владелец = &Владелец
               | И ДоговорыКонтрагентов.Организация = &Организация";


и уже полученный СправочникСсылка.ДоговорыКонтрагентов подставляется в НовыйДок.Договор.
Добавлено: 16 сен 2015, 12:50


И опять же стоит вопрос, как получить наименование только что записанного документа?

vitasw

Наименование в документ?!? об чем речь?

gamograff

Цитата: vitasw от 16 сен 2015, 13:08
Наименование в документ?!? об чем речь?

Есть справочник, в котором есть поля с типом ДокументСсылка.ПоступлениеТоваровУслуг и ДокументСсылка.РеализацияТоваровУслуг. Туда должны подставляться только что созданные документы.

vitasw

<Какой-тоСправочник>.<Какое-тоПоле>=<ТолькоЧтоСозданныйДокумент>.Ссылка

Похожие темы (5)

Рейтинг@Mail.ru

Поиск