7.7 Программное формирование документа

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем ALL_EG, 7 сен 2010.

  1. TopicStarter Overlay
    ALL_EG
    Offline

    ALL_EG Опытный в 1С

    Регистрация:
    4 авг 2010
    Сообщения:
    55
    Симпатии:
    0
    Баллы:
    26
    доброго времени суток!!!

    у меня сложилась следующая ситуация:
    необходимо перекинуть документы реализации из 8ки в 7.7. перекидываю посредством формирования файла *.dbf.

    Ниже представляю фрагмент модуля обработки в 7.7 для загрузки.

    Код:
    Процедура Сформировать()     
    Перем ДокРеализации;
    
    Файл = создатьОбъект("XBASE"); //создаем ссылку на файл DBF
    Файл.ОткрытьФайл(сокрлп(ВыбФайлЗагрузки)); //открываем файл на диске 
    Файл.КодоваяСтраница(1); //задаем кодировку: 0 - windows, 1 - DOS 
    Если Файл.Открыта()=0 Тогда //проверяем, удалось ли открыть файл
    Сообщить("Не удалось открыть файл!");
    СтатусВозврата(0);
    КонецЕсли;                                         
    Файл.Первая(); //позиционируемся на первой записи 
    
    НомерДокумента=0;
    
    Пока Файл.ВКонце()=0 Цикл //пока не дошли до конца, крутим цикл  
    
    
    //Сведения о новом договоре	
    Если НомерДокумента<>Файл.CODE Тогда
    
    Если НомерДокумента<>0 Тогда
    ДокРеализации.Записать();
    ДокРеализации.Провести();
    Сообщить("Создан, записан и проведен документ: "+Строка(ДокРеализации.ТекущийДокумент()));
    КонецЕсли;
    
    //Создаем новый документ
    ДокРеализации=СоздатьОбъект("Документ.ПоступлениеТМЦ");
    ДокРеализации.Новый();
    
    //Заполняем шапку документа
    ДокРеализации.КодОперации=Перечисление.КодыОпераций.Закупка;
    ДокРеализации.Фирма=Фирма;
    ДокРеализации.ЮрЛицо=Фирма.ЮрЛицо;
    ДокРеализации.Склад=Склад;
    ДокРеализации.Контрагент=Поставщик;
    ДокРеализации.Договор=ДоговорСПоставщиком;
    ДокРеализации.Валюта=ДоговорСПоставщиком.ВалютаВзаиморасчетов;
    ДокРеализации.Курс=ДоговорСПоставщиком.ВалютаВзаиморасчетов.Курс.Получить(ТекущаяДата());
    ДокРеализации.Кратность=ДоговорСПоставщиком.ВалютаВзаиморасчетов.Кратность.Получить(ТекущаяДата());
    ДокРеализации.ТипЦен=ДоговорСПоставщиком.ТипЦен;
    ДокРеализации.УчитыватьНДС=0;
    ДокРеализации.СуммаВклНДС=1;
    ДокРеализации.УчитыватьНП=0;
    ДокРеализации.ДатаОплаты=ТекущаяДата();
    ДокРеализации.Комментарий="Документ в УПП ОАО Элегант: "+Файл.DOC;
    НомерДокумента=Файл.CODE;
    КонецЕсли;//END Сведения о новом договоре
    
    
    //поиск номенклатуры
    ЕдиницаТовара=ПолучитьТоварПоШтрихкоду(Файл.STRIH);
    Если ЕдиницаТовара<>0 Тогда 
    //Заполняем Табличную часть документа
    ДокРеализации.НоваяСтрока();
    ДокРеализации.ВидТМЦ=Перечисление.ВидыТМЦ.Товар;
    ДокРеализации.Номенклатура=ЕдиницаТовара.Владелец.ТекущийЭлемент();
    ДокРеализации.Единица=ЕдиницаТовара;
    ДокРеализации.Коэффициент=ЕдиницаТовара.Коэффициент;
    ДокРеализации.Количество=Число(Файл.KOL);
    ДокРеализации.Цена=Число(Файл.CENA);
    глПересчетТаблЧасти(ДокРеализации,"Цена");
    глПересчетТаблЧасти(ДокРеализации,"Количество");
    
    Иначе
    Сообщить("Товар со штрихкодом не найден или штрихкод не указан! Добавление в ТЧ документа "+Строка(ДокРеализации.ТекущийДокумент())+" НЕ произведено","!!");
    КонецЕсли;
    
    
    Файл.Следующая();	
    КонецЦикла;
    Файл.ЗакрытьФайл(); 
    
    Если НомерДокумента<>0 Тогда
    ДокРеализации.Записать();
    ДокРеализации.Провести();
    Сообщить("Создан, записан и проведен документ: "+Строка(ДокРеализации.ТекущийДокумент()));
    КонецЕсли;
    
    Сообщить("ЗАГРУЗКА ПРОИЗВЕДЕНА",".");
    КонецПроцедуры
    
    Все работает изумительно, однако же есть одно НО!!!
    В документе сумма проставляется (см. рисунок), а при проведении проводки по стоимости не формируются (т.е. стоимость нулевая). Если же зайти в документ и изменить цену или количество (обязательно следует поменять) и установить заново (т.е. например количество было "2", нужно поставить число, отличное от 2, а затем поставить "2"), тогда все проводится хорошо...
    Обработчик на табличные поля "Количество" ("Цена") стоит следующий
    Код:
    глПересчетТаблЧасти
    
    я его применяю и в модуле обработки, но не прокатывает
    Код:
    глПересчетТаблЧасти(ДокРеализации,"Цена");
    
    Подскажите, пожалуйста, как с этим все быть...
    :angry: :D :D

    Вложения:

  2. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Что за конфигурация... комплексная?
    Не вижу вообще установки даты документов и реквизи СуммыВзаиморасчетов (именно из-за него скорее всего и не ставит суммы)
  3. TopicStarter Overlay
    ALL_EG
    Offline

    ALL_EG Опытный в 1С

    Регистрация:
    4 авг 2010
    Сообщения:
    55
    Симпатии:
    0
    Баллы:
    26
    да, комплексная..
    Нашел ошибку...спасибо..тема закрыта
  4. TopicStarter Overlay
    ALL_EG
    Offline

    ALL_EG Опытный в 1С

    Регистрация:
    4 авг 2010
    Сообщения:
    55
    Симпатии:
    0
    Баллы:
    26
    сорри, посмотрел на другой документ...

    проблема все та же..

    Проставлял и сумму взаиморасчетов, и номер...
    все также..не заполняет

    :angry: очень нужна помощь
  5. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    В самой Т.ч. вы передаете контекст.
    Попробуйте так:
    Код:
    глПересчетТаблЧасти(ДокРеализации.ТекущийДокумент(),"Цена");
    глПересчетТаблЧасти(ДокРеализации.ТекущийДокумент(),"Количество");
    
    

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