Группа: Пользователи
Сообщений: 90
Спасибо сказали: 4 раз
Рейтинг: 0
Здравствуйте! 1С 8.2 УНФ Создаю Документ ПоступлениеВКассу Кое что заполняю в этом документе, но самое главное не могу заполнить поле ДокументОснование, А документом основания служит РасходнаяНакладная. Как решить эту проблему? Прошу сильно не пинать, Пытался получить ссылку на документ(текст в комментариях), не находит документов, хотя они 100% есть.
Процедура ЗвБДПоступлениеВКассур() Для Каждого СтрокаТабл Из ТЗПоступлениеВКассу Цикл Дп = Документы.ПоступлениеВКассу.СоздатьДокумент(); Дп.Дата = СтрокаТабл.Дата; Дп.ВидОперации = Перечисления.ВидыОперацийПоступлениеВКассу.ОтПокупателя; Дп.Касса = Справочники.Кассы.НайтиПоКоду("000000001"); Дп.Статья = Справочники.СтатьиДвиженияДенежныхСредств.НайтиПоКоду("00-000003"); Дп.ВалютаДенежныхСредств = Справочники.Валюты.НайтиПоНаименованию(СтрокаТабл.ВалютаДокумента); Дп.СуммаДокумента = СтрокаТабл.СуммаДокумента; Дп.Контрагент = Справочники.Контрагенты.НайтиПоНаименованию(СтрокаТабл.Контрагент); Дп.НалогообложениеНДС = Перечисления.ТипыНалогообложенияНДС.ОблагаетсяНДС;
//ДокСсылка = Документы.РасходнаяНакладная.НайтиПоНомеру(Сред(СтрокаТабл.ДокументОснование,27,12)); //Если ДокСсылка.Пустая() Тогда // //Текст = "ru = ""Документ не найден!""; en = ""Document not found!"""; // //Предупреждение(НСтр(Текст)); // Сообщить(Сред(СтрокаТабл.ДокументОснование,27,12) +" Документ не найден"); //Иначе // ДокОбъект = ДокСсылка.ПолучитьОбъект(); // Дп.ДокументОснование = ДокОбъект; // ДокОбъект.Записать(); //КонецЕсли;
Дп.Комментарий = СтрокаТабл.Комментарий;
Если СтрокаТабл.Проведен = Истина Тогда Дп.Записать(РежимЗаписиДокумента.Проведение);
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0
//ДокСсылка = Документы.РасходнаяНакладная.НайтиПоНомеру(Сред(СтрокаТабл.ДокументОснование,27,12)); //Если ДокСсылка.Пустая() Тогда // //Текст = "ru = ""Документ не найден!""; en = ""Document not found!"""; // //Предупреждение(НСтр(Текст)); // Сообщить(Сред(СтрокаТабл.ДокументОснование,27,12) +" Документ не найден"); //Иначе // ДокОбъект = ДокСсылка.ПолучитьОбъект(); // Дп.ДокументОснование = ДокОбъект; // ДокОбъект.Записать(); //КонецЕсли;
Простите, но что это за маразм такой? "Сред(СтрокаТабл.ДокументОснование,27,12)"? Что хранится в "СтрокаТабл.ДокументОснование" ? И если там не ссылка то почему нельзя хранить там ссылку? И то что в "Иначе" написано тоже, извините, говно-код.
Личные бесплатные консультации не даю, для этого есть форум!
Группа: Пользователи
Сообщений: 90
Спасибо сказали: 4 раз
Рейтинг: 0
Цитата(DmitryS @ 05.07.12, 16:51)
а если так: .НайтиПоНомеру(СтрокаТабл.ДокументОснование.Номер)
Не получается, потому что СтрокаТабл.ДокументОснование - Табличное значение. Я выгружаю всю информацию по Документа в Таблицу, а потом оттуда пишу в базу
Цитата(logist @ 05.07.12, 16:55)
//ДокСсылка = Документы.РасходнаяНакладная.НайтиПоНомеру(Сред(СтрокаТабл.ДокументОснование,27, 12)); //Если ДокСсылка.Пустая() Тогда // //Текст = "ru = ""Документ не найден!""; en = ""Document not found!"""; // //Предупреждение(НСтр(Текст)); // Сообщить(Сред(СтрокаТабл.ДокументОснование,27,12) +" Документ не найден"); //Иначе // ДокОбъект = ДокСсылка.ПолучитьОбъект(); // Дп.ДокументОснование = ДокОбъект; // ДокОбъект.Записать(); //КонецЕсли; Простите, но что это за маразм такой? "Сред(СтрокаТабл.ДокументОснование,27,12)"? Что хранится в "СтрокаТабл.ДокументОснование" ? И если там не ссылка то почему нельзя хранить там ссылку? И то что в "Иначе" написано тоже, извините, говно-код.
Верю, и принимаю критику, но это не совет. Я ток познаю азы 1С
Я бы на Вашем месте поработал бы над созданием и заполнением таблицы "ТЗПоступлениеВКассу", чтобы в колонках "ДокументОснование", "Контрагент" были уже готовые ссылки, а не строковые значения.
И ПКО содержит механизм заполнения на основании РН, поэтому разумней поступить так:
Для Каждого СтрокаТЗ Из ТЗ Цикл НовДок = Документы.ПоступлениеВКассу.СоздатьДокумент(); НовДок.Заполнить(СтрокаТЗ.СсылкаНаРН); // Ну и тут можно поменять в РКО что-то что не устраивает НовДок.Записать(); КонецЦикла
Личные бесплатные консультации не даю, для этого есть форум!
Группа: Пользователи
Сообщений: 90
Спасибо сказали: 4 раз
Рейтинг: 0
Цитата(logist @ 05.07.12, 17:10)
Это текст или ссылка? Посмотрите ТИП ЗНАЧЕНИЯ, если это ДокументСсылка (а я думаю что это ссылка) то не надо никаких поисков. Сразу: Дп.ДокументОснование = СтрокаТабл.ДокументОснование;
Если же это не ссылка, то создайте исходную таблицу так, что бы в этот столбец попадала именно ссылка.
ДокументОснование ТИП ЗНАЧЕНИЯ ДокументСсылка.РасходнаяНакладная Дп.ДокументОснование = СтрокаТабл.ДокументОснование; - Это не сработало. Может потому что когда ручками создаешь ПриходВКассу в этом поле ДокументОснование при первом клике выбираешь тип документа(Расходная, приходная и т.д.), а потом уже сам документ?
Цитата(logist @ 05.07.12, 17:17)
Вобще, что у вас содержит эта таблица - текст что ли? Просто к чему вот это: Дп.ВалютаДенежныхСредств = Справочники.Валюты.НайтиПоНаименованию(СтрокаТабл.ВалютаДокумента); Дп.Контрагент = Справочники.Контрагенты.НайтиПоНаименованию(СтрокаТабл.Контрагент);
И ПКО содержит механизм заполнения на основании РН, поэтому разумней поступить так: Для Каждого СтрокаТЗ Из ТЗ Цикл НовДок = Документы.ПоступлениеВКассу.СоздатьДокумент(); НовДок.Заполнить(СтрокаТЗ.СсылкаНаРН); // Ну и тут можно поменять в РКО что-то что не устраивает НовДок.Записать(); КонецЦикла
Таблица содержит текст. И попробую применить ваш совет, спасибо
Цитата(DmitryS @ 05.07.12, 17:15)
Я бы на Вашем месте поработал бы над созданием и заполнением таблицы "ТЗПоступлениеВКассу", чтобы в колонках "ДокументОснование", "Контрагент" были уже готовые ссылки, а не строковые значения.
А как должна выглядеть ссылка? Вот это же она? Реализация товаров и услуг 00000000001 від 09.01.2012 0:00:00
ТЗПоступлениеВКассу.Очистить(); Ном = 1; Для Каждого СтрокаТ из Результат Цикл СтрокаТаб = ТЗПоступлениеВКассу.Добавить(); СтрокаТаб.Ном = Ном; СтрокаТаб.Ссылка = СтрокаТ.Ссылка; СтрокаТаб.ПометкаУдаления = СтрокаТ.ПометкаУдаления; СтрокаТаб.Номер = СтрокаТ.Номер; СтрокаТаб.Дата = СтрокаТ.Дата; СтрокаТаб.Проведен = СтрокаТ.Проведен; СтрокаТаб.Организация = СтрокаТ.Организация.Description; СтрокаТаб.СчетКасса = СтрокаТ.СчетКасса.Code; СтрокаТаб.ВидОперации = СтрокаТ.ВидОперации; СтрокаТаб.Контрагент = СтрокаТ.Контрагент.Description;
Если СтрокаТ.ДоговорКонтрагента.Description = "Основний договір" Тогда СтрокаТаб.ДоговорКонтрагента = "Основной договор" Иначе СтрокаТаб.ДоговорКонтрагента = СтрокаТ.ДоговорКонтрагента.Description; КонецЕсли;
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0
Не понял, если:
Цитата(Yoja @ 05.07.12, 18:04)
Таблица содержит текст.
то как вы получаете поля Description и code? Так же не совсем понятно зачем обрабатывать потом полученную таблицу. Опять же если у объектов доступны реквизиты, то в таблице скорее всего не текст, то соответственно можно все сделать на уровне запроса и получить готовую таблицу, из которой через ДокОбъект.Заполнить(СтрокаТЗ) или ЗаполнитьЗнченияСвойств и заполнить документ.
Личные бесплатные консультации не даю, для этого есть форум!
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!