Имя: Пароль:
1C
1С v8
Программное создание "Реализация товаров и услуг"
0 Pr0gLamer
 
14.11.12
18:15
Добрый день! Опыта работы в 8 - нет совсем
Конфигурация - 8.2 Бухгалтерия (2.0.40.7)
Необходимо программно создать  "Реализация товаров и услуг" и провести
При создании интерактивно - проводится замечательно,при программном - пишет "Не списано 56 шт товара 0006 MLHS 17/4*100/38  7.5J  h 69.1, счет учета 41.01". Товар на складе есть.Код обработки:

ТЗДанных = Новый ТаблицаЗначений;
   ТЗДанных.Колонки.Добавить("Товар",Новый ОписаниеТипов("СправочникСсылка.Номенклатура"));
   ТЗДанных.Колонки.Добавить("Количество",Новый ОписаниеТипов("Число"));
   ТЗДанных.Колонки.Добавить("Единица",Новый ОписаниеТипов("СправочникСсылка.КлассификаторЕдиницИзмерения"));
   ТЗДанных.Колонки.Добавить("Коэффициент",Новый ОписаниеТипов("Число"));
   ТЗДанных.Колонки.Добавить("Цена",Новый ОписаниеТипов("Число"));
   ТЗДанных.Колонки.Добавить("Сумма",Новый ОписаниеТипов("Число"));
   ТЗДанных.Колонки.Добавить("СтавкаНДС",Новый ОписаниеТипов("ПеречислениеСсылка.СтавкиНДС"));
   ТЗДанных.Колонки.Добавить("СчетУчета",Новый ОписаниеТипов("ПланСчетовСсылка.Хозрасчетный"));
   ТЗДанных.Колонки.Добавить("СчетДоходов",Новый ОписаниеТипов("ПланСчетовСсылка.Хозрасчетный"));
   ТЗДанных.Колонки.Добавить("СчетРасходов",Новый ОписаниеТипов("ПланСчетовСсылка.Хозрасчетный"));
   ТЗДанных.Колонки.Добавить("СчетУчетаНДСПоРеализации",Новый ОписаниеТипов("ПланСчетовСсылка.Хозрасчетный"));
   Путь = ЭлементыФормы.ИмяФайла.Значение;
   Если   ПустаяСтрока(Путь) Тогда
       Сообщить("Не выбран путь к папке выгрузки!!!");
       Возврат;
   КонецЕсли;
   
   ВыбФайл = Новый Файл(Путь);
   Если НЕ(ВыбФайл.ЭтоКаталог()) Тогда
       Сообщить("Необходмио выбрать папку с файлами выгрузки,а не отдельный файл!!!");
       Возврат;
   КонецЕсли;    
   
   НайденныеФайлы = НайтиФайлы(Путь, "*.xls");
   
   Для Каждого Файл Из НайденныеФайлы Цикл
       
       Док = ПолучитьCOMОбъект(Файл.ПолноеИмя);
       КоличествоСтраниц = 1;
       счСтрок = 0;
       ВидДокумента = Док.Sheets(1).Cells(1,1).Value;
       Для ТекНомер  = 1 По КоличествоСтраниц Цикл
           НомерДок =  Док.Sheets(ТекНомер).Cells(1,2).Value;
           ДатаДок =  Док.Sheets(ТекНомер).Cells(1,3).Value;
           Клиент =  Док.Sheets(ТекНомер).Cells(2,1).Value;
           //ВалютаДокумента = Док.Sheets(ТекНомер).Cells(2,2).Value;
           
           //****************************************************
           КонтрагентСсылка = Справочники.Контрагенты.НайтиПоНаименованию(Клиент);
           Если  КонтрагентСсылка.Пустая() Тогда
               Предупреждение("Не найден контрагент"+". Документ не будет создан!!!");
               Возврат;
           КонецЕсли;    
           
           ОрганизацияСсылка =  Справочники.Организации.НайтиПоКоду("000000001");
           Если  ОрганизацияСсылка.Пустая() Тогда
               Предупреждение("Не найдена основная фирма"+". Документ не будет создан!!!");
               Возврат;
           КонецЕсли;    
           
           СкладСсылка = Справочники.Склады.НайтиПоНаименованию("Основной склад");
           Если  СкладСсылка.Пустая() Тогда
               Предупреждение("Не найдена основной склад"+". Документ не будет создан!!!");
               Возврат;
           КонецЕсли;    
           
           ДоговорСсылка = Справочники.ДоговорыКонтрагентов.НайтиПоНаименованию("Основной договор",Истина,,КонтрагентСсылка);
           СкладСсылка = Справочники.Склады.НайтиПоНаименованию("Основной склад");
           Если  ДоговорСсылка.Пустая() Тогда
               Предупреждение("Не найден основной договор"+". Документ не будет создан!!!");
               Возврат;
           КонецЕсли;    
           
           стрВалютаДокумента = "руб."; //ВСЕГДА рубль
           ВалютаСсылка =  Справочники.Валюты.НайтиПоНаименованию(стрВалютаДокумента,Истина);
           Если  ДоговорСсылка.Пустая() Тогда
               Предупреждение("Не найдена валюта: "+стрВалютаДокумента);
               Возврат;
           КонецЕсли;    
           
           Для счСтроки = 4 По Док.ActiveSheet.UsedRange.Rows.Count Цикл
               
               Код1С = Док.Sheets(ТекНомер).Cells(СчСтроки,1).Value;
               Количество = Док.Sheets(ТекНомер).Cells(СчСтроки,2).Value;
               стрЕдиница  = Док.Sheets(ТекНомер).Cells(СчСтроки,3).Value;
               Коэффициент = Док.Sheets(ТекНомер).Cells(СчСтроки,4).Value;
               
               Цена = Док.Sheets(ТекНомер).Cells(СчСтроки,5).Value;
               Сумма = Док.Sheets(ТекНомер).Cells(СчСтроки,8).Value;
               
               стрНомерГТД  = Док.Sheets(ТекНомер).Cells(СчСтроки,11).Value;
               стрСтрана = Док.Sheets(ТекНомер).Cells(СчСтроки,12).Value;
               //****************************************************
               Код1С = Формат(Число(Код1С),"ЧГ=0");
               ТоварСсылка =  Справочники.Номенклатура.НайтиПоКоду(Код1С);
               Если  ТоварСсылка.Пустая() Тогда
                   Сообщить("Не найден товар с кодом: "+Код1С+". Документ не будет создан!!!");
                   Возврат;
               КонецЕсли;    
               
               Если  ТоварСсылка.Пустая() Тогда
               Иначе
                   ОбъектНоменклатуры = ТоварСсылка.ПолучитьОбъект();
                   СсылкаСтраны =  Справочники.КлассификаторСтранМира.НайтиПоНаименованию(стрСтрана);
                   Если  СсылкаСтраны.Пустая() Тогда
                   Иначе    
                       ОбъектНоменклатуры.СтранаПроисхождения = СсылкаСтраны;
                       ОбъектНоменклатуры.Записать();
                   КонецЕсли;
                   
                   
                   СсылкаНомераГТД =  Справочники.НомераГТД.НайтиПоКоду(стрНомерГТД);
                   Если  СсылкаНомераГТД.Пустая() Тогда
                       ОбъектНомераГТД  = Справочники.НомераГТД.СоздатьЭлемент();
                       ОбъектНомераГТД.Код =  СокрЛП(стрНомерГТД);
                       ОбъектНомераГТД.Записать();
                       ОбъектНоменклатуры.НомерГТД = ОбъектНомераГТД.Ссылка;
                       ОбъектНоменклатуры.Записать();
                   Иначе    
                       ОбъектНоменклатуры.НомерГТД = СсылкаНомераГТД;
                       ОбъектНоменклатуры.Записать();
                   КонецЕсли;
               Конецесли;
               
               
               Если  СокрЛП(стрЕдиница) = "шт." Тогда
                   ЕдиницаСсылка =  Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию("шт");
               Иначе
                   ЕдиницаСсылка  =  Справочники.КлассификаторЕдиницИзмерения.ПустаяСсылка();
               Конецесли;    
               
               СтавкаНДССсылка = Перечисления.СтавкиНДС.НДС18;
               СчетУчета =  ПланыСчетов.Хозрасчетный.НайтиПоКоду("41.01");
               СчетДоходов = ПланыСчетов.Хозрасчетный.НайтиПоКоду("90.01.1");
               СчетРасходов = ПланыСчетов.Хозрасчетный.НайтиПоКоду("90.02.1");
               СчетУчетаНДСПоРеализации  = ПланыСчетов.Хозрасчетный.НайтиПоКоду("90.03");

               
               НоваяСтрока = ТЗДанных.Добавить();
               НоваяСтрока.Товар = ТоварСсылка;
               НоваяСтрока.Количество = Число(Количество);
               НоваяСтрока.Единица = ЕдиницаСсылка;
               НоваяСтрока.Коэффициент = Число(Коэффициент);
               НоваяСтрока.Цена = Число(Цена);
               НоваяСтрока.Сумма = Число(Сумма);
               НоваяСтрока.СтавкаНДС = СтавкаНДССсылка;
               НоваяСтрока.СчетУчета = СчетУчета;
               НоваяСтрока.СчетДоходов = СчетДоходов;
               НоваяСтрока.СчетРасходов = СчетРасходов;
               НоваяСтрока.СчетУчетаНДСПоРеализации = СчетУчетаНДСПоРеализации;
           КонецЦикла;        
       КонецЦикла;    
       
       ТипЦенСсылка = Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("Основная цена продажи");
       Если ТипЦенСсылка.Пустая() Тогда
           Сообщить("Не найден основной тип цен"+". Документ не будет создан!!!");
           Возврат;
       КонецЕсли;
       //*****************************************************
       
   
       
       
       Если СокрЛП(ВидДокумента) = "РасходнаяНакладная" Тогда
           НовДок = Документы.РеализацияТоваровУслуг.СоздатьДокумент();
           НовДок.Дата = Дата(ДатаДок);
           НовДок.ВидОперации = Перечисления.ВидыОперацийРеализацияТоваров.ПродажаКомиссия;
           НовДок.УстановитьНовыйНомер();  //под вопросом
           НовДок.Организация=ОрганизацияСсылка;
           НовДок.Склад = СкладСсылка;
           НовДок.Контрагент = КонтрагентСсылка;
           НовДок.ДоговорКонтрагента =  ДоговорСсылка;
           НовДок.СпособЗачетаАвансов = Перечисления.СпособыЗачетаАвансов.Автоматически;    
           НовДок.ВалютаДокумента = ВалютаСсылка;
           НовДок.КурсВзаиморасчетов = 1;
           НовДок.ТипЦен = ТипЦенСсылка;
           НовДок.УчитыватьНДС = Истина;
           НовДок.СуммаВключаетНДС = Ложь;
           НовДок.БанковскийСчетОрганизации = Справочники.БанковскиеСчета.ПустаяСсылка();
           НовДок.
           //ФормаДока = НовДок.ПолучитьФорму("ФормаДокумента");
           //Колонки = ФормаДока.ЭлементыФормы.Товары.Колонки;
           //Колонки.СтавкаНДС.Видимость = Истина;
           //Колонки.СуммаНДС.Видимость  = Истина;
           //Н = 0;
           Для Каждого ТекущаяСтрока Из ТЗДанных Цикл  // заполним табличную часть документа, из ТаблицыЗначений
               НС = НовДок.Товары.Добавить();
               НС.Номенклатура = ТекущаяСтрока["Товар"];
               НС.Количество = ТекущаяСтрока.Количество;
               НС.ЕдиницаИзмерения =  ТекущаяСтрока.Единица;
               НС.Коэффициент = ТекущаяСтрока.Коэффициент;
               НС.Цена = ТекущаяСтрока.Цена;
               НС.Сумма = ТекущаяСтрока.Сумма;
               НС.СтавкаНДС = ТекущаяСтрока.СтавкаНДС;
               НС.СчетУчетаНДСПоРеализации = ПланыСчетов.Хозрасчетный.ПустаяСсылка();
               НС.СчетУчета = ТекущаяСтрока.СчетУчета;
               НС.СчетДоходов = ТекущаяСтрока.СчетДоходов;
               НС.СчетРасходов = ТекущаяСтрока.СчетРасходов;
               НС.СчетУчетаНДСПоРеализации =  ТекущаяСтрока.СчетУчетаНДСПоРеализации;
               НС.Себестоимость = 0;
               НС.ДокументОприходования = Документы.ПоступлениеТоваровУслуг.ПустаяСсылка();
               НС.ПереданныеСчетУчета = ПланыСчетов.Хозрасчетный.ПустаяСсылка();
           КонецЦикла;
           НовДок.СчетУчетаРасчетовСКонтрагентом =  ПланыСчетов.Хозрасчетный.НайтиПоКоду("62.01");
           НовДок.СчетУчетаРасчетовПоАвансам = ПланыСчетов.Хозрасчетный.НайтиПоКоду("62.02");
           
//            НовДок.ОтражатьВБухгалтерскомУчете =True;
//            НовДок.ОтражатьВНалоговомУчете =True;
//            НовДок.ОтражатьВУправленческомУчете =True;

           НовДок.Записать();
1 Pr0gLamer
 
14.11.12
18:16
Может кто сталкивался - нужно процедуру какаю вызвать аль реквизит не заполнен?
2 alex74
 
14.11.12
18:17
а если его программно создать, но не проводить. А потом попытаться провести интерактивно и посмотреть, а почему это он не проводится?
3 vmv
 
14.11.12
18:18
(0) обертки-функции сделай для

чтения данных
инициализации Тз
заполнения тз
загрузки тз в тч

а так читать сложно, да и глюки постоянно будешь ловить
4 Конфигуратор1с
 
14.11.12
18:18
(0)Простите, Вам говорили что Вы извращенец?
5 Pr0gLamer
 
14.11.12
18:20
(4) по большей части нет.Мой первый код на 8(
6 vmv
 
14.11.12
18:21
если эксель файл плоский как фонера, то гуги типовые универсальные обработки - загрузка из табличного документа
7 Конфигуратор1с
 
14.11.12
18:22
(5) "       ОрганизацияСсылка =  Справочники.Организации.НайтиПоКоду("000000001");
           Если  ОрганизацияСсылка.Пустая() Тогда
               Предупреждение("Не найдена основная фирма"+". Документ не будет создан!!!");
               Возврат;
           КонецЕсли;    
           
           СкладСсылка = Справочники.Склады.НайтиПоНаименованию("Основной склад");
           Если  СкладСсылка.Пустая() Тогда
               Предупреждение("Не найдена основной склад"+". Документ не будет создан!!!");
               Возврат;
           КонецЕсли;    
           
           ДоговорСсылка = Справочники.ДоговорыКонтрагентов.НайтиПоНаименованию("Основной договор",Истина,,КонтрагентСсылка);
           СкладСсылка = Справочники.Склады.НайтиПоНаименованию("Основной склад");
           Если  ДоговорСсылка.Пустая() Тогда
               Предупреждение("Не найден основной договор"+". Документ не будет создан!!!");
               Возврат;
           КонецЕсли;    
           
           стрВалютаДокумента = "руб."; //ВСЕГДА рубль

           ВалютаСсылка =  Справочники.Валюты.НайтиПоНаименованию(стрВалютаДокумента,Истина);
           Если  ДоговорСсылка.Пустая() Тогда
               Предупреждение("Не найдена валюта: "+стрВалютаДокумента);
               Возврат;
           КонецЕсли;    " - сие выносите на форму и обращаетесь как к реквизитам формы, а не в цикле ищите в справочнике - по факту запрос делаете к базе.
8 vmv
 
14.11.12
18:23
(5) не важно на чем ты пишешь, код должен быть структирован в процедуры и функции по логике дифференцированных операций.

В вашем случае чтение, заполнение контейнера (тз), загрузка контейнера в объект(документ), запись документа - это и есть логически дифференцированные операции
9 Конфигуратор1с
 
14.11.12
18:24
(7)+    
               СтавкаНДССсылка = Перечисления.СтавкиНДС.НДС18;
               СчетУчета =  ПланыСчетов.Хозрасчетный.НайтиПоКоду("41.01");
               СчетДоходов = ПланыСчетов.Хозрасчетный.НайтиПоКоду("90.01.1");
               СчетРасходов = ПланыСчетов.Хозрасчетный.НайтиПоКоду("90.02.1");
               СчетУчетаНДСПоРеализации  = ПланыСчетов.Хозрасчетный.НайтиПоКоду("90.03"); - выносите за пределы цикла хотя бы. Зачем ное количество раз определять переменные с постоянным значением?
10 vmv
 
14.11.12
18:24
искать по наименованию - большая мина если обработка не разовая
11 Конфигуратор1с
 
14.11.12
18:26
НовДок.СуммаВключаетНДС = Ложь; - он и так ложь
12 Конфигуратор1с
 
14.11.12
18:26
(10)+100500
13 Конфигуратор1с
 
14.11.12
18:27
НС.Номенклатура = ТекущаяСтрока["Товар"];
               НС.Количество = ТекущаяСтрока.Количество;
               НС.ЕдиницаИзмерения =  ТекущаяСтрока.Единица;
               НС.Коэффициент = ТекущаяСтрока.Коэффициент;
               НС.Цена = ТекущаяСтрока.Цена;
               НС.Сумма = ТекущаяСтрока.Сумма;
               НС.СтавкаНДС = ТекущаяСтрока.СтавкаНДС; - почитайте такой чудный метод как ЗаполнитьЗначениеСвойств()
14 Конфигуратор1с
 
14.11.12
18:27
НС.ПереданныеСчетУчета = ПланыСчетов.Хозрасчетный.ПустаяСсылка(); - та же байда что и в (11). Если реквизит не заполнен, значит там и так пустая ссылка
15 Конфигуратор1с
 
14.11.12
18:28
В общем, перепишете, тогда дальше будем смотреть чего ему не хватает
16 bazvan
 
14.11.12
18:29
(9) счета лучше проставлять экспортной процедуро, также как и раситывать тч
17 bazvan
 
14.11.12
18:31
Вообщем на все про все строчек 10 кода
18 vmv
 
14.11.12
18:34
(0) что касается проблемы в сабже, то "ошибка" списания скорее всего заключена в двух причинах

1. позиция реристратора(дата+время+гуид ссылки объекта) совсем не та, согласно которой можно увидеть "Товар на складе есть"
2. криво выполняються(очищаьтся) движения для уже созданных
19 Pr0gLamer
 
14.11.12
18:35
Этот запрос при программном заполнении возвращает пустое дерево значений,а при интерактвном - в нём есть одна строка,от этого дальше и пляшем.Текст взял из "УправлениеЗапасамиПартионныйУчет",функция ПолучитьТаблицуПартийНаСкладах

"ВЫБРАТЬ    Остатки.Счет КАК СчетУчета,    Остатки.Подразделение КАК Подразделение,    Остатки.Субконто1 КАК Номенклатура,    &ПустаяДата КАК ДокументОприходованияДата,    &ПустаяПартия КАК ДокументОприходования,    &ПустаяДата КАК ДокументОтгрузкиДата,    &ПустаяОтгрузка КАК ДокументОтгрузки,    &ПустойСклад КАК Склад,    Остатки.Организация КАК Организация,    СУММА(ВЫБОР КОГДА Остатки.КоличествоОстатокДт ЕСТЬ NULL ТОГДА 0 ИНАЧЕ Остатки.КоличествоОстатокДт КОНЕЦ) КАК КоличествоПоСкладу,    СУММА(ВЫБОР КОГДА Остатки.КоличествоОстатокДт ЕСТЬ NULL ТОГДА 0 ИНАЧЕ Остатки.КоличествоОстатокДт КОНЕЦ) КАК Количество,    СУММА(ВЫБОР КОГДА Остатки.СуммаОстатокДт ЕСТЬ NULL ТОГДА 0 ИНАЧЕ Остатки.СуммаОстатокДт КОНЕЦ) КАК Стоимость,    СУММА(ВЫБОР КОГДА Остатки.СуммаНУОстатокДт ЕСТЬ NULL ТОГДА 0 ИНАЧЕ Остатки.СуммаНУОстатокДт КОНЕЦ) КАК СтоимостьНУ,    СУММА(ВЫБОР КОГДА Остатки.СуммаПРОстатокДт ЕСТЬ NULL ТОГДА 0 ИНАЧЕ Остатки.СуммаПРОстатокДт КОНЕЦ) КАК СтоимостьПР,    СУММА(ВЫБОР КОГДА Остатки.СуммаВРОстатокДт ЕСТЬ NULL ТОГДА 0 ИНАЧЕ Остатки.СуммаВРОстатокДт КОНЕЦ) КАК СтоимостьВР ИЗ    РегистрБухгалтерии.Хозрасчетный.Остатки(&МоментКон, Счет В (&СчетаУчетаН), &ВидыСубконтоН,(Подразделение В (&ФильтрПодразделения) ИЛИ Подразделение ЕСТЬ NULL) И Субконто1 В (&Номенклатура) И Организация В (&Организации)) КАК Остатки    СГРУППИРОВАТЬ ПО    Остатки.Счет,    Остатки.Подразделение,    Остатки.Субконто1,    Остатки.Организация"
20 Pr0gLamer
 
14.11.12
18:36
(18) а с этим как бороться?
21 vmv
 
14.11.12
18:41
(20) сделать код понятным и понимать, что так

ДатаДок =  Док.Sheets(ТекНомер).Cells(1,3).Value;

делать нельзя
22 floody
 
14.11.12
18:47
(20) по заполнению счетов учета и пересчетам строк ТЧ (16)(17) поверь
23 dangerouscoder
 
14.11.12
18:47
(20) отладчик отменили? Проверь какие значения в запрос передаются в обоих случаях.
24 Pr0gLamer
 
14.11.12
19:03
есть у кого-то пример?
25 vmv
 
14.11.12
19:07
(24) те у кого есть - все жадные, поверь
26 bazvan
 
14.11.12
19:09
(24) пример чего????
27 bazvan
 
14.11.12
19:09
исходные данные какие?
28 Pr0gLamer
 
14.11.12
19:10
самое интересное,что если открыть созданный программно документ и в нём прогрвамно осуществить подбор,то он тоже не проведётся
29 Pr0gLamer
 
14.11.12
19:11
(26) программного формирования документа,желательно "еализация товаров и услуг"
30 Pr0gLamer
 
14.11.12
19:12
(27) выгрузка из 7.7 торговли самописная.Я примерно такой же обрабокой формирую поступление товаров - прекрасно отрабатывает
31 bazvan
 
14.11.12
19:12
(29) какие входные данные???
32 vmv
 
14.11.12
19:14
(29) тоже пример записи 100500 документов расхода с регистрацией на начало дня?
33 prog01
 
14.11.12
19:15
нашел в интернетах прикольный код
http://zalil.ru/33960811
111
34 vmv
 
14.11.12
19:15
(30) при быстрой продаже программная обработка расход/приход должна быть ювелирно точной в позициях регистрации - подумай над этим и не парь моск
35 Pr0gLamer
 
14.11.12
19:15
(31) excel документ вида
Код в базе    Кол-во    Ед    Коэф    Цена    Сумма без скидки    Скидка    Сумма    СтавкиНДС    СуммаНДС    ГТД    Страна
36 prog01
 
14.11.12
19:19
ЗагрузкаДанныхИзТабличногоДокумента
итс
37 prog01
 
14.11.12
19:23
38 Pr0gLamer
 
14.11.12
19:30
спасибо(37)
39 bazvan
 
14.11.12
19:33
типа такого

   НовыйДокументРеализацияУслуги = Документы.РеализацияТоваровУслуг.СоздатьДокумент();
   ЗаполнениеДокументов.ЗаполнитьШапкуДокумента(НовыйДокументРеализацияУслуги, глЗначениеПеременной("глТекущийПользователь"), мВалютаРегламентированногоУчета, "Продажа");

           НовыйДокументРеализацияУслуги.ВидОперации = Перечисления.ВидыОперацийРеализацияТоваров.ПродажаКомиссия;
           НовыйДокументРеализацияУслуги.Дата = Дата;
           НовыйДокументРеализацияУслуги.УстановитьВремя(РежимАвтоВремя.ТекущееИлиПоследним);
           НовыйДокументРеализацияУслуги.Организация = Организация;
           НовыйДокументРеализацияУслуги.СуммаВключаетНДС = Ложь; // тут по вкусу, включает НДС сумма или нет
           НовыйДокументРеализацияУслуги.КурсВзаиморасчетов = 0 Тогда
               СтруктураКурсаВзаиморасчетов = МодульВалютногоУчета.ПолучитьКурсВалюты(НовыйДокументРеализацияУслуги.ВалютаДокумента, Дата);
               НовыйДокументРеализацияУслуги.КурсВзаиморасчетов      = СтруктураКурсаВзаиморасчетов.Курс;
           КонецЕсли;
           Если НовыйДокументРеализацияУслуги.КратностьВзаиморасчетов = 0 Тогда
               СтруктураКурсаВзаиморасчетов = МодульВалютногоУчета.ПолучитьКурсВалюты(НовыйДокументРеализацияУслуги.ВалютаДокумента, Дата);
               НовыйДокументРеализацияУслуги.КратностьВзаиморасчетов = СтруктураКурсаВзаиморасчетов.Кратность;
           КонецЕсли;
           
           НовыйДокументРеализацияУслуги.Контрагент = Контрагент;
           НовыйДокументРеализацияУслуги.ДоговорКонтрагента  =  Договор;
           НовыйДокументРеализацияУслуги.ЗаполнитьСчетаУчетаРасчетов();

Для Каждого СтрокаТовара ИЗ ТаблицаТоваров Цикл
           ВыручкаНашиУслуги = НовыйДокументРеализацияУслуги.Услуги.Добавить();
           ВыручкаНашиУслуги.Номенклатура = СтрокаТовара.Товар;
           НовыйДокументРеализацияУслуги.ЗаполнитьСчетаУчетаВТабЧасти(ВыручкаНашиУслуги.Товары, "Товары", Истина);
           //  тут заполняем количество, цену, или сумму, вообщем что там есть
           //  тут можно запустить пересчет типа
           //ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(СтрокаТЧ, ЭтотОбъект);
           //ОбработкаТабличныхЧастей.РассчитатьСуммуНДСТабЧасти(СтрокаТЧ, ЭтотОбъект);

           ВыручкаНашиУслуги.СтавкаНДС = СтрокаТовара.Товар.СтавкиНДС;
           ВыручкаНашиУслуги.СуммаНДС = УчетНДС.РассчитатьСуммуНДС(ВыручкаНашиУслуги.Сумма, Истина, Ложь, УчетНДС.ПолучитьСтавкуНДС(ВыручкаНашиУслуги.СтавкаНДС));
           ВыручкаНашиУслуги.Субконто = Товар.НоменклатурнаяГруппа;
КонецЦикла
       НовыйДокументРеализацияУслуги.Записать(РежимЗаписиДокумента.Проведение);




40 Pr0gLamer
 
14.11.12
19:41
(39) крачавчик
тебе двойное спасибо
41 bazvan
 
14.11.12
19:46
(40) я работоспособность не проверял полностью, там смысл накидан.
42 Pr0gLamer
 
14.11.12
20:03
(41) собственно результат не поменялся
43 bazvan
 
14.11.12
20:08
(42) какой результат???
44 Pr0gLamer
 
14.11.12
20:09
Не списано ... ед товара
45 bazvan
 
14.11.12
20:11
(44) а интерактивно про водится??? Тоесть ты открываеш созданный документ, нажимаеш провести и он проводится???
46 Pr0gLamer
 
14.11.12
20:15
(45) нет
47 Pr0gLamer
 
14.11.12
20:15
а если создам полностью интерактивно - тогда да
48 bazvan
 
14.11.12
20:20
(46) занчит что то не дозаполнено.
Проверя счета учета, чудес не бывает
49 Pr0gLamer
 
15.11.12
12:16
Действительно,руки с утра выпрямились,всё заработало)
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший