Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Импорт документа Возврат поставщику
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 7.7
cRYSMAS
Здравствуйте. Вон не могу понять как мне нужно сделать:
Есть программа "Скарб" из нее сделали выгрузку в дбф формате расходную накладную. Сделали обработку, загрузки дбф. Все тру все работает но есть одно но "Возврат поставщику" смотрим рисунок



// Создать возврат поставщику
Д1=СоздатьОбъект("Документ.ВозвратПоставщику");
Д1.Новый();
// Шапка документа
Д1.ДатаДок=Т1.ДатаДок;
Д1.Фирма = Фирма;
Д1.Контрагент = Т1.Контрагент;
Д1.Валюта = Гривня;
Д1.Курс = 1;
Д1.МестоХранения = СкладПрихода;
Д1.ВидТорговли = Т1.Контрагент.ВидТорговли;
Д1.СубконтоВалИзд = глВосстановитьЗначение(Д1.ТекущийДокумент(),"СубконтоВалДох", Константа.БазВаловыйДоход);
Д1.ВидНДС = ?(Т1.ТМЦ.Выбран()=1,Т1.ТМЦ.СтавкаНДС,0);
Д1.СчетКонтрагента = СчетПоКоду("63.1");
Д1.СчетЗатрат = СчетЗатрВП;
Д1.ВидЗатрат = ВидЗатрВП;
// Табличная часть документа
Д1.НоваяСтрока();
Если Т1.НДС=0 Тогда
Д1.ТМЦ = ТМЦБезНДС.ТекущийЭлемент();
Д1.Ед=спрЕдТМЦБезНДС.ТекущийЭлемент();
Д1.Коэффициент=КоэффициентЕдТМЦБезНДС;
Д1.Партия = спрПартияТМЦБезНДС;
Иначе
Д1.ТМЦ=ТМЦСНДС.ТекущийЭлемент();
Д1.Ед=спрЕдТМЦСНДС.ТекущийЭлемент();
Д1.Коэффициент=КоэффициентЕдТМЦСНДС;
Д1.Партия = спрПартияТМЦСНДС;
КонецЕсли;
Д1.Кво = 1;
Д1.ЦенаБезНДС = Т1.СуммаЗакуп;
Д1.СуммаБезНДС = Д1.ЦенаБезНДС;
СтавкаНДС = ?(Д1.ВидНДС.Выбран()=0, 0, Д1.ВидНДС.Ставка.Получить(Д1.ДатаДок));
Д1.НДС = Д1.СуммаБезНДС * СтавкаНДС;
Д1.СуммаСНДС = Д1.СуммаБезНДС + Д1.НДС;

Д1.Записать();
Д1.Провести();

Состояние("Записан документ "+Д1.ТекущийДокумент()+"...");
ИначеЕсли (Т1.ТипДок=11) и (ПустоеЗначение(Т1.Склад)=0) Тогда
// Создать перемещение - перемещение из аптеки на склад в розничных ценах (товар в ассоритименте)
// (аптека - склад в суммовом учёте - оптовый склад)
// Перемещаем из аптеки на склад в суммовом учёте



Часть кода, мне нужно что бы при импорте дбф. вайла в обработчике автоматически записывалась закупочная сумма в сумму "Возврату поставщику" В модуле "Возврат поставщику" переменная отвечающая за сумму "СуммаО", а в обработчике "Суммазакуп". Не могу понять как правильно мне сделать ну типа "ЗаполнитьСуммаО = СуммаЗакуп;" или как то так, как этот ньюанс реализовать?
Batchir
Ну в коде должно быть что то типа
<Документ>.<Реквизит> = <Значение реквизита>;
В твоем случае
Д1.СуммаО = Суммазакуп;
cRYSMAS
Цитата(Batchir @ 17.03.10, 17:08) необходимо зарегистрироваться для просмотра ссылки
Ну в коде должно быть что то типа
<Документ>.<Реквизит> = <Значение реквизита>;
В твоем случае
Д1.СуммаО = Суммазакуп;


Спасибо все получилось нужнобыло прописать вот так
Д1.СуммаО = Т1.СуммаЗакуп;
cRYSMAS
Цитата(cRYSMAS @ 17.03.10, 16:34) необходимо зарегистрироваться для просмотра ссылки


// Создать возврат поставщику
Д1=СоздатьОбъект("Документ.ВозвратПоставщику");
Д1.Новый();
// Шапка документа
Д1.ДатаДок=Т1.ДатаДок;
Д1.Фирма = Фирма;
Д1.Контрагент = Т1.Контрагент;
Д1.Валюта = Гривня;
Д1.Курс = 1;
Д1.МестоХранения = СкладПрихода;
Д1.ВидТорговли = Т1.Контрагент.ВидТорговли;
Д1.СубконтоВалИзд = глВосстановитьЗначение(Д1.ТекущийДокумент(),"СубконтоВалДох", Константа.БазВаловыйДоход);
Д1.ВидНДС = ?(Т1.ТМЦ.Выбран()=1,Т1.ТМЦ.СтавкаНДС,0);
Д1.СчетКонтрагента = СчетПоКоду("63.1");
Д1.СчетЗатрат = СчетЗатрВП;
Д1.ВидЗатрат = ВидЗатрВП;
// Табличная часть документа
Д1.НоваяСтрока();
Если Т1.НДС=0 Тогда
Д1.ТМЦ = ТМЦБезНДС.ТекущийЭлемент();
Д1.Ед=спрЕдТМЦБезНДС.ТекущийЭлемент();
Д1.Коэффициент=КоэффициентЕдТМЦБезНДС;
Д1.Партия = спрПартияТМЦБезНДС;
Иначе
Д1.ТМЦ=ТМЦСНДС.ТекущийЭлемент();
Д1.Ед=спрЕдТМЦСНДС.ТекущийЭлемент();
Д1.Коэффициент=КоэффициентЕдТМЦСНДС;
Д1.Партия = спрПартияТМЦСНДС;
КонецЕсли;
Д1.Кво = 1;
Д1.ЦенаБезНДС = Т1.СуммаЗакуп;
Д1.СуммаБезНДС = Д1.ЦенаБезНДС;
СтавкаНДС = ?(Д1.ВидНДС.Выбран()=0, 0, Д1.ВидНДС.Ставка.Получить(Д1.ДатаДок));
Д1.НДС = Д1.СуммаБезНДС * СтавкаНДС;
Д1.СуммаСНДС = Д1.СуммаБезНДС + Д1.НДС;

Д1.Записать();
Д1.Провести();

Состояние("Записан документ "+Д1.ТекущийДокумент()+"...");
ИначеЕсли (Т1.ТипДок=11) и (ПустоеЗначение(Т1.Склад)=0) Тогда
// Создать перемещение - перемещение из аптеки на склад в розничных ценах (товар в ассоритименте)
// (аптека - склад в суммовом учёте - оптовый склад)
// Перемещаем из аптеки на склад в суммовом учёте



Если мне нужно создать еще один документ "Взапись книги приобретения" "Налоговая накладная"с реквезитами "возврат поставщику" тоесть должны быть заполнены реквезиты "Контрагент, дата, норме документа, сумаБезНдс, если есть НДС то с СуммаНДС "могу я в этом же коде написать вот так:



// Создать возврат поставщику
Д1=СоздатьОбъект("Документ.ВозвратПоставщику");
Д1.Новый();
Д3=СоздатьОбъект("Документ.НалоговаяНаклданая");
// Шапка документа
Д1.ДатаДок=Т1.ДатаДок;
Д3.ДатаДок=Т1.ДатаДок;
Д1.Фирма = Фирма;
Д3.Фирма = Фирма;
Д1.Контрагент = Т1.Контрагент;
Д3.Контрагент = Т1.Контрагент;
Д1.Валюта = Гривня;
Д1.Курс = 1;
Д1.МестоХранения = СкладПрихода;
Д1.ВидТорговли = Т1.Контрагент.ВидТорговли;
Д1.СубконтоВалИзд = глВосстановитьЗначение(Д1.ТекущийДокумент(),"СубконтоВалДох", Константа.БазВаловыйДоход);
Д1.ВидНДС = ?(Т1.ТМЦ.Выбран()=1,Т1.ТМЦ.СтавкаНДС,0);
Д1.СчетКонтрагента = СчетПоКоду("63.1");
Д1.СчетЗатрат = СчетЗатрВП;
Д1.ВидЗатрат = ВидЗатрВП;
// Табличная часть документа
...
Д1.ЦенаБезНДС = Т1.СуммаЗакуп;
Д3.ЦенаБезНДС = Т1.СуммаЗакуп;
Д1.СуммаБезНДС = Д1.ЦенаБезНДС;
Д3.СуммаБезНДС = Д1.ЦенаБезНДС;
СтавкаНДС = ?(Д1.ВидНДС.Выбран()=0, 0, Д1.ВидНДС.Ставка.Получить(Д1.ДатаДок));
Д1.НДС = Д1.СуммаБезНДС * СтавкаНДС;
Д3.НДС = Д1.СуммаБезНДС * СтавкаНДС;
Д1.СуммаСНДС = Д1.СуммаБезНДС + Д1.НДС;
Д3.СуммаСНДС = Д1.СуммаБезНДС + Д1.НДС;



вот если я так сделаю то бдет норм??Я так понял Д1,Д2,Д3 это документ? а Т1 это таблица, а почему например переменую Д1.СуммаСНДС мы не определяем?
Д3=СоздатьОбъект("Документ.НалоговаяНаклданая"); вотсдесь "Документ.ДокументовКнигиПриобретения.РасчетКорректировки" нужно заполнить выбор агрегатного типа, где эти типы перечислины???как можно их посмотреть, не могу описать какой документ я должен создать
Batchir
Цитата
Я так понял Д1,Д2,Д3 это документ?

Д1=СоздатьОбъект("Документ.ВозвратПоставщику");
Д1.Новый();
Переменная Д1(назвать её можно как угодно) содержит ссылку на создаваемый документ.
Программно таких документов можно создать кучу.

Цитата
почему например переменую Д1.СуммаСНДС мы не определяем

а?
cRYSMAS
Цитата(Batchir @ 18.03.10, 11:44) необходимо зарегистрироваться для просмотра ссылки
Д1=СоздатьОбъект("Документ.ВозвратПоставщику");
Д1.Новый();
Переменная Д1(назвать её можно как угодно) содержит ссылку на создаваемый документ.
Программно таких документов можно создать кучу.


а?

Значить мне нужно сделать все тоже самое что и при создании документа "ВозвратПоставщику"
тоесть но контрагентов которых нету убрать:
Д3=СоздатьОбъект("Документ.РасчетКоректировки");
Д3.Новый();
Д3.СуммаО = Т1.СуммаЗакуп;
// Шапка документа
Д3.ДатаДок=Т1.ДатаДок;
Д3.Фирма = Фирма;
Д3.Контрагент = Т1.Контрагент;
Д3.МестоХранения = КнигаПриобретений;
Д3.ВидНДС = ?(Т1.ТМЦ.Выбран()=1,Т1.ТМЦ.СтавкаНДС,0);
Д3.СчетКонтрагента = СчетПоКоду("63.1");
... и т.д.
так или я глубоко ошибаюсь?
cRYSMAS
Значиться у меня вылезла ошибка вот что я сделал:



// Создаем РасчетКорректировки;
Д3 = Перечисление.ВидыДокументовКнигиПриобретения.РасчетКорректировки;
Д3.Новый();
// Шапка документа
Д3.ДатаДокумента = Т1.ДатаДок;
Д3.Фирма = Фирма;
Д3.Контрагент = Т1.Контрагент;
Д3.МестоХранения = СкладПрихода;
Д3.ВидНДС = ?(Т1.ТМЦ.Выбран()=1,Т1.ТМЦ.СтавкаНДС,0);
Д3.СчетКонтрагента = СчетПоКоду("63.1");


Выдало ошибку
"Д3.Новый();
{E:\1SBUKR\EXTFORMS\_ИМПОРТПН.ERT(591)}: Поле агрегатного объекта не обнаружено (Новый)"
Искал гуглом но так и не понял в чои иммено проблема, или там нужно было записать вот так: "Д3.Новый=...();" почему не работает не могу понять, ведь я только добавил а перед этим было вот так:



// Создать возврат поставщику
Д1=СоздатьОбъект("Документ.ВозвратПоставщику");
Д1.Новый();

Д1.СуммаО = Т1.СуммаЗакуп;
// Шапка документа
Д1.ДатаДок = Т1.ДатаДок;
Д1.Фирма = Фирма;
Д1.Контрагент = Т1.Контрагент;
Д1.Валюта = Гривня;
Д1.Курс = 1;
Д1.МестоХранения = СкладПрихода;
Д1.ВидТорговли = Т1.Контрагент.ВидТорговли;
Д1.СубконтоВалИзд = глВосстановитьЗначение(Д1.ТекущийДокумент(),"СубконтоВалДох", Константа.БазВаловыйДоход);
Д1.ВидНДС = ?(Т1.ТМЦ.Выбран()=1,Т1.ТМЦ.СтавкаНДС,0);
Д1.СчетКонтрагента = СчетПоКоду("63.1");
Д1.СчетЗатрат = СчетЗатрВП;
Д1.ВидЗатрат = ВидЗатрВП;


А сдесь все работает. Помогите разобраться в чом проблема или я неправильно выражение записал? "Д3.Новый();"
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.