Имя: Пароль:
1C
1С v8
Как программно создать с-ф полученный на основании поступления.
0 never_sleep
 
05.05.17
07:01
Пробовал так:

ДокПоступление.Записать(РежимЗаписиДокумента.Проведение);
Сообщить("Документ "+ДокПоступление);
СФПолученный = Документы.СчетФактураПолученный.СоздатьДокумент();
СФПолученный.Заполнить(ДокПоступление);
СФПолученный.Номер = ТекущаяСтрокаТЗ.НомСФ;
СФПолученный.Дата = ТекущаяСтрокаТЗ.ДатаВход;
СФПолученный.Записать(РежимЗаписиДокумента.Проведение);
Сообщить("Документ "+СФПолученный);

Но с-ф создается незаполненной, документ основание не указан. Ищу в коде как это делается, когда в форме поступления нажимается навигационная ссылка "зарегистрировать счет-фактуру". Но до конца еще не разобрался. Правильно копаю?
Или ну его нафиг, заполнить реквизиты документа ручками в коде? Или есть другой, более правильный способ?
1 Рэйв
 
05.05.17
07:05
(0)Смотри обработку заполнения в модуле объекта.Такое ощущение, что твой тип поступления там не прописан
2 Рэйв
 
05.05.17
07:07
насколько я помню в СФ есть экспортное ЗаполнитьПоДокументуОснования()
Попробуй ее поюзать
3 never_sleep
 
05.05.17
07:19
(2) Эта процедура ЗаполнитьПоДокументуОснованию(ДанныеЗаполнения) как раз и вызывается из ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка). И она не экспортная. Пробую разобраться почему с поступлением первая процедура не работает.
4 ale-sarin
 
05.05.17
07:21
СФПолученный.Заполнить(ДокПоступление.Ссылка);
ССЫЛКА!!!
5 never_sleep
 
05.05.17
07:31
6 never_sleep
 
05.05.17
07:35
Хотя один фиг. Не работает и так: СФПолученный.Заполнить(ДокПоступление.Ссылка);
Результат одинаковый.
7 Мимохожий Однако
 
05.05.17
07:37
(6) Встань отладчиком на начало процедуры заполнения и посмотри, что там передаётся не так.
8 never_sleep
 
05.05.17
07:41
в ЗаполнитьПоДокументуОснованию есть переход в ПолучитьПараметрыСчетаФактурыПоОснованиям. Там запросами собираются все параметры для С-Ф. Там есть конструкиции типа: если докоснование такой-то, то такой-то запрос. Но в коде нет ссылок на ПоступлениеТоваровУслуг. Попробую все же посмотреть как и планировал изначально как на форме происходит регистрация с-ф.
9 Antony8x
 
05.05.17
07:42
(2) Там только шапку заполняет
10 Мимохожий Однако
 
05.05.17
07:43
(8) Вот в эту процедуру и поставь точку останова отладчика.
11 Antony8x
 
05.05.17
07:47
(8) ПолучитьПараметрыСчетаФактурыПоОснованиям() в каком модуле находится?
12 never_sleep
 
05.05.17
07:48
(11) да там, же в модуле объекта с-ф
13 Antony8x
 
05.05.17
07:52
(12) вот так попробуйте сделать:

ДокПоступление.Записать(РежимЗаписиДокумента.Проведение);
Сообщить("Документ "+ДокПоступление);
СФПолученный = Документы.СчетФактураПолученный.СоздатьДокумент();
СФПолученный.Заполнить(ДокПоступление);
СФПолученный.Номер = ТекущаяСтрокаТЗ.НомСФ;
СФПолученный.Дата = ТекущаяСтрокаТЗ.ДатаВход;

СФПолученный.ЗАПИСАТЬВФОРМЕ(РежимЗаписиДокумента.Проведение);

Сообщить("Документ "+СФПолученный);
14 Serg_1960
 
05.05.17
08:54
[Вопрос от мальчика, который первым сообщил что король - голый]

ТС, почему твоим собеседникам нельзя сообщать какая у тебя конфигурация?
15 catena
 
05.05.17
08:56
Интересно, это в какой конфигурации в заполнении счф полученной нет поступления? А что же там тогда есть?
16 Мимохожий Однако
 
05.05.17
09:10
Проще, наверное, пользователю показать кнопку Создать счет-фактуру в открытом документе Поступление ))
17 Serg_1960
 
05.05.17
09:11
(15) (шёпотом, чтобы ТС не слышал) Там оно всё есть, только автор этой ветки об этом не в курсе.
18 catena
 
05.05.17
09:15
(17)Да я верю, потому и не вмешиваюсь в это кладоискание уже 2 часа))
19 Serg_1960
 
05.05.17
09:18
(18) Автор, поверх типовой УТ11, уже написал заказ поставщику, поступление по заказу, теперь вот пишет с/ф на основании поступления. согласен, не будем автору мешать :)
20 never_sleep
 
05.05.17
10:55
(14) Управление торговлей, редакция 11.2 (11.2.3.213). Извините, думал вопрос более менее общий и не зависит от конфигурации. Так как логика всех типовых 1Совских должна быть, как мне казалось, похожей.
(15) Если вызвать из формы документа поступления "Создать на основании", то с-ф там нет. Его как наиболее часто используемое вынесли в навигационную ссылку "Зарегистрировать с-ф". Ну это к тому, что автор знает что на форме расположено.
(19) Афффтор, нуб, но очень старается. Пишет загрузку из файла dbf. Загрузка формирует поступления (привязывает их к своим заказам) - это сделал, формирует с-ф полученные и перемещения - это пока не сделал.
Я поступления созданию на основании заказов. Там конструкция Док.Заполнить(Основание.Ссылка) отлично отработала. Учитывая что для с-ф полученного поступление может быть основанием, я сделал так-же, но фиг. Не работает. Можно прописать заполнение каждого реквизита, но это как мне кажется неправильный путь. Ищу как отрабатывает навигационная ссылка с регистрацией с-ф. но так как нуб, и постоянно отвлекают дела идут оочень медленно.
Вся эта галиматья должна работать автоматически, без вызова форм и передачи управления на клиента. Потому как водной выгрузке дофига документов. а необходимые параметры в самом начале задаются. Это к тому, чтобы показать пользователю кнопку создать с-ф.
21 never_sleep
 
05.05.17
11:03
(13) Не работает, к сожалению. Метод не обнаружен "ЗАПИСАТЬВФОРМЕ"
22 Antony8x
 
05.05.17
12:30
(21) ну да конечно, же не то подсказал, вот так надо и будет счастье:
ДокПоступление.Записать(РежимЗаписиДокумента.Проведение);
Сообщить("Документ "+ДокПоступление);
СФПолученный = Документы.СчетФактураПолученный.СоздатьДокумент();
СФПолученный.Заполнить(ДокПоступление);
СФПолученный.Номер = ТекущаяСтрокаТЗ.НомСФ;
СФПолученный.Дата = ТекущаяСтрокаТЗ.ДатаВход;

ФормаДок = СФПолученный.ПолучитьФорму(ВашаОсновнаяФормаДокумента);
ФормаДок.ЗаписатьВФорме();

Сообщить("Документ "+СФПолученный);
23 Antony8x
 
05.05.17
12:32
+22 т.е:
ФормаДок.ЗаписатьВФорме(РежимЗаписиДокумента.Проведение);
24 never_sleep
 
05.05.17
13:44
Короче, сделал вот так. Обработка заполнения у с-ф не работала, потому что её нужно было передавать не просто документ, а структуру.
ДокПоступление.Записать(РежимЗаписиДокумента.Проведение);
Сообщить("Документ "+ДокПоступление);
СФПолученный = Документы.СчетФактураПолученный.СоздатьДокумент();
Организация = Справочники.Организации.НайтиПоНаименованию("Первая галактическая обсерватория им. Боба Марли");
ПараметрыСФ = Новый Структура;
ПараметрыСФ.Вставить("Исправление",           Ложь);
ПараметрыСФ.Вставить("Корректировочный",      Ложь);
ПараметрыСФ.Вставить("Организация",           Организация);
ПараметрыСФ.Вставить("ДокументОснование", ДокПоступление.Ссылка);
ПараметрыСФ.Вставить("Контрагент", ДокПоступление.Контрагент);
СФПолученный.Заполнить(ПараметрыСФ);
СФПолученный.Номер = ТекущаяСтрокаТЗ.НомСФ;
СФПолученный.Дата = ТекущаяСтрокаТЗ.ДатаВход;
СФПолученный.Записать(РежимЗаписиДокумента.Проведение);
Сообщить("Документ "+СФПолученный);
Теперь все ок. Спасибо всем кто откликнулся.
(22) Возьму на заметку ваш способ. По нему только еще один вопрос.
Какое бы название формы не взял, ругается на то что на сервере такого имени нет. в СП написано что доступность этого метода на клиенте. может в этом все дело?
25 polosov
 
05.05.17
13:55
(24) А как-то так, как в типовой  не захотелось?
    Если ПараметрыЗаписи.РежимЗаписи = РежимЗаписиДокумента.Проведение
     И ПараметрыЗаписи.ДанныеСчетаФактуры <> Неопределено Тогда
        
        ДанныеСчетаФактуры = ЗакупкиСервер.ДанныеСчетаФактурыСтруктурой(
            ТекущийОбъект.Ссылка,
            ПараметрыЗаписи.ДанныеСчетаФактуры.Организация,
            ПараметрыЗаписи.ДанныеСчетаФактуры.Контрагент,
            ПараметрыЗаписи.ДанныеСчетаФактуры.Номер,
            ПараметрыЗаписи.ДанныеСчетаФактуры.ДатаСоставления,
            ПараметрыЗаписи.ДанныеСчетаФактуры.Валюта,
            ПараметрыЗаписи.ДанныеСчетаФактуры.Дата);
            
        ПараметрыПредставления = ЗакупкиСервер.ВвестиСчетФактуру(
            ДанныеСчетаФактуры, Истина, НеТребуетсяВводСчетаФактуры, НовыйСчетФактураПолученный);