Имя: Пароль:
1C
1С v8
создать документ операция
0 iQwerty
 
04.07.13
09:40
Уважаемые помогите мне пожалуйста, мучаюсь второй день, заранее вселенское спасибо!!!!
Конфа КА
нужно для каждого документа "Поступление товаров и услуг" и для "ГТД по импорту" создать документ "Операция" с конкретными проводками.В общем написал код для документа "Поступление товаров и услуг"-создает документ операция и создаются все движения правильно, дальше код. Делаю тоже самое для документа "ГТД по импорту" меняю в консоле запросов документы, пока все работает, меняю счетДт 003.1 на другой неважно какой и все рушится, но фактически нужно(Дт 19.05 Кт76.05)

Запрос2 = Новый Запрос;    

Запрос2.УстановитьПараметр("ДатаНачалаПериода", началодня(ДатаНачалаПериода));
Запрос2.УстановитьПараметр("ДатаКонецПериода", Конецдня(ДатаКонецПериода));
    Запрос2.УстановитьПараметр("Гарантия",ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Гарантия"));
Запрос2.УстановитьПараметр("Бесплатная",ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Бесплатная"));
Запрос2.УстановитьПараметр("Доукомплектация",ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Доукомплектация"));
Запрос2.УстановитьПараметр("Гарантийная", Справочники.ЗначенияСвойствОбъектов.НайтиПоНаименованию("Гарантийная"));
Запрос2.УстановитьПараметр("Бесплатная1", Справочники.ЗначенияСвойствОбъектов.НайтиПоНаименованию("Бесплатная"));
Запрос2.УстановитьПараметр("Доукомплектация1", Справочники.ЗначенияСвойствОбъектов.НайтиПоНаименованию("Доукомплектация"));

Запрос2.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
|    ГТДИмпорт.Дата,
|    ГТДИмпорт.Организация,
|    ГТДИмпорт.Ответственный,
|    ГТДИмпорт.Контрагент.Код,
|    ГТДИмпорт.Номер,
|    ГТДИмпорт.Контрагент,
|    ГТДИмпортТовары.Номенклатура,
|    ГТДИмпортТовары.Количество
|ИЗ
|    РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
|        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ГТДИмпорт.Товары КАК ГТДИмпортТовары
|            ЛЕВОЕ СОЕДИНЕНИЕ Документ.ГТДИмпорт КАК ГТДИмпорт
|            ПО ГТДИмпортТовары.Ссылка = ГТДИмпорт.Ссылка
|        ПО ЗначенияСвойствОбъектов.Объект = ГТДИмпортТовары.ХарактеристикаНоменклатуры
|ГДЕ
|    ЗначенияСвойствОбъектов.Свойство В (&Гарантия, &Бесплатная, &Доукомплектация)
|    И ГТДИмпортТовары.Ссылка.Дата МЕЖДУ &ДатаНачалаПериода И &ДатаКонецПериода
|    И ЗначенияСвойствОбъектов.Значение В (&Гарантийная, &Бесплатная1, &Доукомплектация1)";
ТЗ=Новый ТаблицаЗначений;
     ТЗ.Колонки.Добавить("ссылка");
     ТЗ.Колонки.Добавить("номенклатура");
     ТЗ.Колонки.Добавить("Характеристика");
     ТЗ.Колонки.Добавить("Дата");
     ТЗ.Колонки.Добавить("Организация");
     ТЗ.Колонки.Добавить("Сумма");
     ТЗ.Колонки.Добавить("Ответственный");
      ТЗ.Колонки.Добавить("Номер");

     //ТЗ.Колонки.Добавить("Содержание");    
     // ТЗ.Колонки.Добавить("Комментарий");
Результат2=Запрос2.Выполнить();
ТЗ2 = Результат2.Выгрузить();

ЭлементыФормы.ТабличноеПоле3.Значение = ТЗ2;
ЭлементыФормы.ТабличноеПоле3.СоздатьКолонки();
ЭлементыФормы.ТабличноеПоле3.ОбновитьСтроки();


////////////////




Запрос21 = Новый Запрос;    

Запрос21.УстановитьПараметр("ДатаНачалаПериода", началодня(ДатаНачалаПериода));
Запрос21.УстановитьПараметр("ДатаКонецПериода", Конецдня(ДатаКонецПериода));
    Запрос21.УстановитьПараметр("Гарантия",ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Гарантия"));
Запрос21.УстановитьПараметр("Бесплатная",ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Бесплатная"));
Запрос21.УстановитьПараметр("Доукомплектация",ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Доукомплектация"));
Запрос21.УстановитьПараметр("Гарантийная", Справочники.ЗначенияСвойствОбъектов.НайтиПоНаименованию("Гарантийная"));
Запрос21.УстановитьПараметр("Бесплатная1", Справочники.ЗначенияСвойствОбъектов.НайтиПоНаименованию("Бесплатная"));
Запрос21.УстановитьПараметр("Доукомплектация1", Справочники.ЗначенияСвойствОбъектов.НайтиПоНаименованию("Доукомплектация"));

Запрос21.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
|    ГТДИмпорт.Дата,
|    ГТДИмпорт.Организация,
|    ГТДИмпорт.Ответственный,
|    ГТДИмпорт.Контрагент.Код,
|    ГТДИмпорт.Номер,
|    ГТДИмпорт.Контрагент
|ИЗ
|    РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
|        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ГТДИмпорт.Товары КАК ГТДИмпортТовары
|            ЛЕВОЕ СОЕДИНЕНИЕ Документ.ГТДИмпорт КАК ГТДИмпорт
|            ПО ГТДИмпортТовары.Ссылка = ГТДИмпорт.Ссылка
|        ПО ЗначенияСвойствОбъектов.Объект = ГТДИмпортТовары.ХарактеристикаНоменклатуры
|ГДЕ
|    ЗначенияСвойствОбъектов.Свойство В (&Гарантия, &Бесплатная, &Доукомплектация)
|    И ГТДИмпортТовары.Ссылка.Дата МЕЖДУ &ДатаНачалаПериода И &ДатаКонецПериода
|    И ЗначенияСвойствОбъектов.Значение В (&Гарантийная, &Бесплатная1, &Доукомплектация1)";
ТЗ=Новый ТаблицаЗначений;
     ТЗ.Колонки.Добавить("ссылка");
     ТЗ.Колонки.Добавить("номенклатура");
     ТЗ.Колонки.Добавить("Характеристика");
     ТЗ.Колонки.Добавить("Дата");
     ТЗ.Колонки.Добавить("Организация");
     ТЗ.Колонки.Добавить("Сумма");
     ТЗ.Колонки.Добавить("Ответственный");
      ТЗ.Колонки.Добавить("Номер");

     //ТЗ.Колонки.Добавить("Содержание");    
     // ТЗ.Колонки.Добавить("Комментарий");
Результат21=Запрос21.Выполнить();
ТЗ21 = Результат21.Выгрузить();

ЭлементыФормы.ТабличноеПоле31.Значение = ТЗ21;
ЭлементыФормы.ТабличноеПоле31.СоздатьКолонки();
ЭлементыФормы.ТабличноеПоле31.ОбновитьСтроки();


////////////////////
для каждого строка из ТабличноеПоле31 цикл
ДокОпер  = Документы.ОперацияБух.СоздатьДокумент();

ДокОпер.Дата = Строка.Дата;
ДокОпер.Организация = Строка.Организация;
//докопер.Номер=Строка.Номер;
//ДокОпер.Движения.Хозрасчетный.Загрузить(Результат1.Выгрузить());    
ДокОпер.Записать();
ДокОперацияСсылка = ДокОпер.Ссылка;
РегХозрасчетный = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
РегХозрасчетный.Отбор.Регистратор.Значение = ДокОперацияСсылка;
    нумер=строка.номер;
    для каждого строка из ТабличноеПоле3 цикл
   если нумер=строка.номер тогда      
//ДокОпер  = Документы.ОперацияБух.СоздатьДокумент();

//ДокОпер.Дата = Строка.Дата;
//ДокОпер.Организация = Строка.Организация;
////докопер.Номер=Строка.Номер;
////ДокОпер.Движения.Хозрасчетный.Загрузить(Результат1.Выгрузить());    
//ДокОпер.Записать();
//ДокОперацияСсылка = ДокОпер.Ссылка;
//РегХозрасчетный = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
//РегХозрасчетный.Отбор.Регистратор.Значение = ДокОперацияСсылка;
////////////////
//склад=строка.склад;
количество=строка.количество;
//сумма=строка.сумма;
   Номенклатура=строка.номенклатура;
   Контрагент = Справочники.Контрагенты.НайтиПоКоду(строка.контрагенткод);
   //КодОС = СокрП(ДБФ.OS);
   //ОсновноеСредство = Справочники.ОсновныеСредства.НайтиПоКоду(КодОС);
   РегЗапись = РегХозрасчетный.Добавить();
   РегЗапись.Период = Строка.Дата;
   РегЗапись.Регистратор = ДокОперацияСсылка;
   РегЗапись.Организация = Строка.Организация;
//    РегЗапись.СубконтоДт = "";
   РегЗапись.Содержание  = "Корректировка стоимости ОС с 0 стоимостью(Максим)";
   РегЗапись.СчетДт = ПланыСчетов.Хозрасчетный.МатериалыПринятыеВПереработку;
     РегЗапись.СчетКт = ПланыСчетов.Хозрасчетный.МатериалыПринятыеВПереработку;
    //УстановитьСубконто(Счет, Субконто, ИмяСубконто, ЗначениеСубконто, Сообщать = Ложь, Заголовок = "", ВидыСубконтоСчета = Неопределено) Экспорт
       
   БухгалтерскийУчет.УстановитьСубконто(РегЗапись.СчетДт, РегЗапись.СубконтоДт,"Контрагенты", Контрагент);
    БухгалтерскийУчет.УстановитьСубконто(РегЗапись.СчетДт, РегЗапись.СубконтоДт,"Номенклатура", Номенклатура);
    // БухгалтерскийУчет.УстановитьСубконто(РегЗапись.СчетДт, РегЗапись.СубконтоДт,"Склады", Склад);
   //   БухгалтерскийУчет.УстановитьСубконто(РегЗапись.СчетДт, РегЗапись.СубконтоДт,"Количество", Количество);
   //    БухгалтерскийУчет.УстановитьСубконто(РегЗапись.СчетДт, РегЗапись.СубконтоДт,"Сумма", Сумма);
   //   БухгалтерскийУчет.УстановитьСубконто(РегЗапись.СчетДт, РегЗапись.СубконтоДт,"Номенклатура", Номенклатура);
     БухгалтерскийУчет.УстановитьСубконто(РегЗапись.СчетКт, РегЗапись.СубконтоКт,"Контрагенты", Контрагент);
   БухгалтерскийУчет.УстановитьСубконто(РегЗапись.СчетКт, РегЗапись.СубконтоКт, "Номенклатура", Номенклатура);
   // БухгалтерскийУчет.УстановитьСубконто(РегЗапись.СчетКт, РегЗапись.СубконтоКт,"Склады", Склад);

   //Субконто1 = Строка.контрагент;
   //БухгалтерскийУчет.УстановитьСубконто(РегЗапись.СчетКт, РегЗапись.СубконтоКт, , );
   //(РегЗапись.СчетДт, РегЗапись.СубконтоДт, РегЗапись.СчетКт, РегЗапись.СубконтоКт, "ОсновныеСредства", ОсновноеСредство);
   //РегЗапись.Сумма = Строка.Сумма;
//     хгалтерскийУчет.УстановитьСубконто(НоваяЗапись.СчетДт,НоваяЗапись.СубконтоДт,"НоменклатурныеГруппы",Справочники.НоменклатурныеГруппы.НайтиПоКоду("000000002"));
//БухгалтерскийУчет.УстановитьСубконто(НоваяЗапись.СчетКт,НоваяЗапись.СубконтоКт,"Товары",Справочники.Номенклатура.НайтиПоНаименованию("ГТДИмпортТовары.Номенклатура"));
//НоваяЗапись.Период = СслыкаНаОбъект.Дата;
//НоваяЗапись.Активность = 1;
//  
РегХозрасчетный.Записать();        
конецесли;
       
       
    конеццикла;
РегХозрасчетный.Записать();
////////////////////////
конеццикла;

КонецПроцедуры
1 mikecool
 
04.07.13
09:41
это что за бред? или наоборот - что то из вселенской мудрости?
2 iQwerty
 
04.07.13
09:41
(1) скорее бред. что не понятно?
3 Beduin
 
04.07.13
09:43
(2) Надо код всей базы выложить. Так тяжело понять, мало информации
4 mikecool
 
04.07.13
09:44
(2) "нужно для каждого документа "Поступление товаров и услуг" и для "ГТД по импорту" создать документ "Операция" с конкретными проводками" - а что мешает использовать операции самих документов?
5 Beduin
 
04.07.13
09:44
Запрос2.УстановитьПараметр("Гарантия",ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Гарантия"));
Запрос2.УстановитьПараметр("Бесплатная",ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Бесплатная"));
Запрос2.УстановитьПараметр("Доукомплектация",ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Доукомплектация"));
Запрос2.УстановитьПараметр("Гарантийная", Справочники.ЗначенияСвойствОбъектов.НайтиПоНаименованию("Гарантийная"));
Запрос2.УстановитьПараметр("Бесплатная1", Справочники.ЗначенияСвойствОбъектов.НайтиПоНаименованию("Бесплатная"));
Запрос2.УстановитьПараметр("Доукомплектация1", Справочники.ЗначенияСвойствОбъектов.НайтиПоНаименованию("Доукомплектация"));

А вот за это нужно расстреливать
6 mikecool
 
04.07.13
09:44
+4 и ваще - ты чего такой дерзкий?
7 iQwerty
 
04.07.13
09:50
я в тупике
8 Beduin
 
04.07.13
09:52
(7) Ты хотя бы напиши ошибку. Мы же не отладчик
9 iQwerty
 
04.07.13
09:58
(8) он не создает движения, причем если убрать "для каждого строка из ТабличноеПоле3 цикл", и вместо "для каждого строка из ТабличноеПоле31 цикл" вставить "для каждого строка из ТабличноеПоле3 цикл" он создаст движения, но мне нужно создать движение для документа, а так выйдет...ну вы сами понимаете что выйдет
10 Beduin
 
04.07.13
09:59
(9) Отсыпь
11 hhhh
 
04.07.13
10:02
(9) а здесь все символы внимательно просмотрели??

РегЗапись.СчетДт = ПланыСчетов.Хозрасчетный.МатериалыПринятыеВПереработку;
     РегЗапись.СчетКт = ПланыСчетов.Хозрасчетный.МатериалыПринятыеВПереработку;


что-то какой-то странный набор буков.
12 hhhh
 
04.07.13
10:03
(1) этот код - наша гордость. ОН полностью написан и отлажен форумом миста.
13 iQwerty
 
04.07.13
10:05
(11) да, при чем при таких данных все работает если
РегЗапись.СчетДт = ПланыСчетов.Хозрасчетный.МатериалыПринятыеВПереработку;(Сч003.1)
     РегЗапись.СчетКт = ПланыСчетов.Хозрасчетный.МатериалыПринятыеВПереработку;(Сч003.1)
заменить на
РегЗапись.СчетДт = ПланыСчетов.Хозрасчетный.НДСуплачиваемыйТаможеннымОрганам;(Сч19.05)
   РегЗапись.СчетКт = ПланыСчетов.Хозрасчетный.РасчетыСПрочимиПоставщикамиИПодрядчиками;(Сч76.05)

то вот как раз здесь сломается
14 iQwerty
 
04.07.13
10:13
немножко поменял код, создает документ не создает движения
n=0;
для каждого строка из ТабличноеПоле31 цикл

ДокОперация = Документы.ОперацияБух.СоздатьДокумент();
ДокОперация.Дата = Строка.Дата;
ДокОперация.Организация = Строка.Организация;
ДокОперация.Ответственный = Строка.Ответственный;
//ДокОперация.Содержание = Содержание;
ДокОперация.Комментарий = "Созданы движения"+n;
ДокОперация.Записать();
ДокОперацияСсылка = ДокОперация.Ссылка;
 
РегХозрасчетный = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
РегХозрасчетный.Отбор.Регистратор.Значение = ДокОперацияСсылка;

для каждого строка из ТабличноеПоле31 цикл

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

КонецЦикла;  
РегХозрасчетный.Записать();
n=n+1;
конеццикла;
15 iQwerty
 
04.07.13
10:15
опечатка
n=0;
для каждого строка из ТабличноеПоле31 цикл

ДокОперация = Документы.ОперацияБух.СоздатьДокумент();
ДокОперация.Дата = Строка.Дата;
ДокОперация.Организация = Строка.Организация;
ДокОперация.Ответственный = Строка.Ответственный;
ДокОперация.Содержание = "Созданы движения"+n;
ДокОперация.Комментарий = "Созданы движения"+n;
ДокОперация.Записать();
ДокОперацияСсылка = ДокОперация.Ссылка;
 
РегХозрасчетный = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
РегХозрасчетный.Отбор.Регистратор.Значение = ДокОперацияСсылка;

для каждого строка из ТабличноеПоле3 цикл

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

КонецЦикла;  
РегХозрасчетный.Записать();
n=n+1;
конеццикла;
16 hhhh
 
04.07.13
10:17
а сумма где? Что, проводки без сумм фигачишь?
17 Deon
 
04.07.13
10:20
Кстати, а если РегХозрасчетный получать строкой:
РегХозрасчетный = ДокОперация.Движения.Хозрасчетный;
Это будет то же самое, что и в коде (15)?
18 iQwerty
 
04.07.13
10:22
(17) непонял
19 Deon
 
04.07.13
10:22
(16) Теоретически, это не должно мешать проводкам записываться
20 Deon
 
04.07.13
10:25
(15) В отладчике смотрел? Цикл заполнения проводок ваще выполняется?
21 iQwerty
 
04.07.13
10:31
(20) да выполняется, то есть как раз сколько строк, столько раз он и останавливается
22 Deon
 
04.07.13
10:35
(21) Набор записей РегХозрасчетный в отладчике заполнен?
23 iQwerty
 
04.07.13
10:56
нет
24 iQwerty
 
04.07.13
11:15
помогите
25 Beduin
 
04.07.13
11:27
(24) У тебя сумма с количеством где устанавливается?
26 aka AMIGO
 
04.07.13
11:41
я как-то не увидел особых сложностей.. посмотрел, как делается типовая запись в документе, уяснил, применил - работает..

       ДокОперация = Документы.ОперацияБух.СоздатьДокумент();
       ДокОперация.Дата = ДатаДокумента;
       ДокОперация.Организация = ВыбОрганизация;
       ДокОперация.Ответственный = ИмяПользователя(); //Ответственный;
       ДокОперация.Содержание = "Показания счетчиков эл.энергии ("+ФайлИмя+")";
       ДокОперация.Комментарий = "Создан обработкой из "+ФайлИмя;
       ДокОперация.СпособЗаполнения = "Вручную";
       ДокОперация.Записать();
       ДокОперацияСсылка = ДокОперация.Ссылка;

....
   //готовим регистры для записи
   РегХозрасчетный = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
   РегХозрасчетный.Отбор.Регистратор.Значение = ДокОперацияСсылка;
   РегХозрасчетный.Очистить(); //мне так нужно
   РегХозрасчетный.Записать(Истина);

.....
                   РегЗапись = РегХозрасчетный.Добавить(); //ЭЛ
                   РегЗапись.Период = ДатаДокумента;
                   РегЗапись.Регистратор = ДокОперацияСсылка;
                   РегЗапись.Организация = ВыбОрганизация;
                   РегЗапись.СчетДт = СчетЭЛ;
                   БухгалтерскийУчет.УстановитьСубконто(РегЗапись.СчетДт, РегЗапись.СубконтоДт, "Контрагенты", Стр.Контр);
                   БухгалтерскийУчет.УстановитьСубконто(РегЗапись.СчетДт, РегЗапись.СубконтоДт, "Номенклатура", СПН.НайтиПоНаименованию("эл.энергия день"));
                   РегЗапись.КоличествоДт = Коплате;
                   РегЗапись.Сумма = Сум;
                   ЕстьЧтоЗаписать=1
....

   Если ЕстьЧтоЗаписать=1 Тогда
       РегХозрасчетный.Записать(Истина);
       ДокОперация.СуммаОперации = СуммаДокумента;
       ДокОперация.Записать();
       
   КонецЕсли;
27 aka AMIGO
 
04.07.13
11:43
понимаю, что местами проглядывает г-код, но это меня уже мало волнует :)

бушка уже давно, и во-всю, генерит документы :)
28 aka AMIGO
 
04.07.13
11:54
Да, перед:
ЕстьЧтоЗаписать=1;

                   РегЗапись.СчетКт = Счет9101;
                   БухгалтерскийУчет.УстановитьСубконто(РегЗапись.СчетКт, РегЗапись.СубконтоКт, "ПрочиеДоходыИРасходы", Субк9101);

но это уже детали..